Add API - mm_wfd_sink_set_src_device_type() 04/319304/2
authorYoungwoo Cho <young222.cho@samsung.com>
Tue, 14 Jan 2025 05:18:56 +0000 (14:18 +0900)
committerYoungwoo Cho <young222.cho@samsung.com>
Tue, 11 Feb 2025 01:51:29 +0000 (10:51 +0900)
- support for setting device type of wi-fi display source
- currently, there is no action in public codes

[Version] 0.4.6

Change-Id: I7d7a8f623d12c75d5a08eb657409bd5589200bd9
Signed-off-by: Youngwoo Cho <young222.cho@samsung.com>
packaging/libmm-wfd.spec
src/include/mm_wfd_sink.h
src/include/mm_wfd_sink_priv.h
src/mm_wfd_sink.c
src/mm_wfd_sink_priv.c

index d908756f774dd123c28a94f4aa0396f24a3c8aa2..fa4bc63417c8b0b91004d5f70aedd747d625e848 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-wfd
 Summary:    Multimedia Framework Wifi-Display Library
-Version:    0.4.5
+Version:    0.4.6
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index e7a5f0c16810012ffc343fa21f7f7d519b9d0ac2..4ae59e4a559e054c687013cc382b063bf5ac118d 100644 (file)
@@ -429,6 +429,18 @@ int mm_wfd_sink_get_video_framerate(MMHandleType wfd_sink_handle,  gint *framera
  */
 int mm_wfd_sink_set_resolution(MMHandleType wfd_sink_handle,  gint resolution);
 
+/**
+ * This function sets the source device type for wi-fi display sink\n
+ *
+ * @param      wfd_sink_handle         [in]    Handle of wi-fi display sink
+ * @param      device_type                     [in]    Source device type for wi-fi display sink
+ *
+ * @return     This function returns zero on success, or negative value with error code.
+ * @pre                wi-fi display state should be MM_WFD_SINK_STATE_NULL. \n
+ *
+ */
+int mm_wfd_sink_set_src_device_type(MMHandleType wfd_sink_handle, gint device_type);
+
 /**
  * This function gets the negotiated video codec for wi-fi display sink\n
  *
index ca2ae68a29b820df3f4e073cae59e0b2925571a6..42b33137fe1925babca60f423a9d2638eb060a8e 100644 (file)
@@ -146,6 +146,15 @@ typedef enum {
        MM_WFD_SINK_RESOLUTION_MAX = 128,
 } MMWFDSinkResolution;
 
+/**
+ *  * Enumerations of device type.
+ *   */
+typedef enum {
+       MM_WFD_SINK_DEVICE_TYPE_GENERIC = 0,   /**< Generic devices */
+       MM_WFD_SINK_DEVICE_TYPE_TV,            /**< TV */
+       MM_WFD_SINK_DEVICE_TYPE_MOBILE,        /**< Mobile(Phone, Tablet) */
+} MMWFDSinkDeviceType;
+
 typedef enum {
        MM_WFD_SINK_RESOURCE_TYPE_VIDEO_DECODER,
        MM_WFD_SINK_RESOURCE_TYPE_VIDEO_OVERLAY,
@@ -277,6 +286,7 @@ typedef struct {
        MMWFDSinkResource res;
 
        int display_surface_id;
+       MMWFDSinkDeviceType src_device_type;
 } mm_wfd_sink_t;
 
 
@@ -291,6 +301,7 @@ int _mm_wfd_sink_pause(mm_wfd_sink_t *wfd_sink);
 int _mm_wfd_sink_resume(mm_wfd_sink_t *wfd_sink);
 int _mm_wfd_set_message_callback(mm_wfd_sink_t *wfd_sink, MMWFDMessageCallback callback, void *user_data);
 int _mm_wfd_sink_set_resolution(mm_wfd_sink_t *wfd_sink, MMWFDSinkResolution resolution);
+int _mm_wfd_sink_set_src_device_type(mm_wfd_sink_t *wfd_sink, MMWFDSinkDeviceType device_type);
 
 int __mm_wfd_sink_link_audio_decodebin(mm_wfd_sink_t *wfd_sink);
 int __mm_wfd_sink_link_video_decodebin(mm_wfd_sink_t *wfd_sink);
index 4be7f728694ce00d43250a588b52fd62a71a78af..679a470aa6fcafdff3c42dcf708b225311c7a867 100644 (file)
@@ -291,6 +291,20 @@ int mm_wfd_sink_set_resolution(MMHandleType wfd_sink_handle,  gint resolution)
        return result;
 }
 
+int mm_wfd_sink_set_src_device_type(MMHandleType wfd_sink_handle, gint device_type)
+{
+       mm_wfd_sink_t *wfd_sink = (mm_wfd_sink_t *)wfd_sink_handle;
+       int result = MM_ERROR_NONE;
+
+       wfd_sink_return_val_if_fail(wfd_sink, MM_ERROR_WFD_NOT_INITIALIZED);
+
+       MMWFDSINK_CMD_LOCK(wfd_sink);
+       result = _mm_wfd_sink_set_src_device_type(wfd_sink, device_type);
+       MMWFDSINK_CMD_UNLOCK(wfd_sink);
+
+       return result;
+}
+
 int mm_wfd_sink_get_negotiated_video_codec(MMHandleType wfd_sink_handle,  gint *codec)
 {
        mm_wfd_sink_t *wfd_sink = (mm_wfd_sink_t *)wfd_sink_handle;
index 907e91a8538c0f3954af8436cea6e2fabb9281fb..cfbfa1563f9d7cfad91d8ba0adecfa020982a311 100644 (file)
@@ -4782,6 +4782,28 @@ int _mm_wfd_sink_set_resolution(mm_wfd_sink_t *wfd_sink, MMWFDSinkResolution res
        return MM_ERROR_NONE;
 }
 
+int _mm_wfd_sink_set_src_device_type(mm_wfd_sink_t *wfd_sink, MMWFDSinkDeviceType device_type)
+{
+       MMWFDSinkStateType cur_state = MM_WFD_SINK_STATE_NONE;
+
+       wfd_sink_debug_fenter();
+
+       wfd_sink_return_val_if_fail(wfd_sink, MM_ERROR_WFD_NOT_INITIALIZED);
+
+       MMWFDSINK_PRINT_STATE(wfd_sink);
+       cur_state = MMWFDSINK_CURRENT_STATE(wfd_sink);
+       if (cur_state != MM_WFD_SINK_STATE_NULL) {
+               wfd_sink_error("This function must be called when MM_WFD_SINK_STATE_NULL");
+               return MM_ERROR_WFD_INVALID_STATE;
+       }
+
+       wfd_sink->src_device_type = device_type;
+
+       wfd_sink_debug_fleave();
+
+       return MM_ERROR_NONE;
+}
+
 int _mm_wfd_sink_set_display_overlay(mm_wfd_sink_t *wfd_sink, void *display_object, gint display_type)
 {
        int wl_surface_id = 0;