Add scmirroring_display_rotation_e, scmirroring_sink_set_display_rotation() 88/318188/6
authorYoungwoo Cho <young222.cho@samsung.com>
Fri, 10 Jan 2025 07:05:25 +0000 (16:05 +0900)
committerYoungwoo Cho <young222.cho@samsung.com>
Fri, 7 Mar 2025 05:26:37 +0000 (14:26 +0900)
- scmirroring_display_rotation_e is based on MMDisplayRotationType

[Version] 0.3.2
[Issue type] API

Change-Id: Ieeb9929cc3ee414b529e6a61624b53d773c061f6
Signed-off-by: Youngwoo Cho <young222.cho@samsung.com>
include/scmirroring_private.h
include/scmirroring_sink.h
include/scmirroring_type.h
packaging/capi-media-screen-mirroring.spec
src/scmirroring_sink.c
src/scmirroring_util.c

index 283396b304da68424d572c8207f2061cef2a5b82..35a3043b221ef62255883e5edef60a67582185aa 100644 (file)
@@ -276,6 +276,7 @@ int _scmirroring_sink_disconnect(MMHandleType handle);
 int _scmirroring_sink_set_display(MMHandleType handle, scmirroring_display_type_e type, void *display_surface, mm_display_type_e display_type);
 int _scmirroring_sink_set_display_mode(MMHandleType handle, scmirroring_display_mode_e mode);
 int _scmirroring_sink_set_display_roi(MMHandleType handle, int x, int y, int width, int height);
+int _scmirroring_sink_set_display_rotation(MMHandleType handle, scmirroring_display_rotation_e rotation);
 int _scmirroring_sink_set_resolution(MMHandleType handle, int resolution);
 int _scmirroring_sink_get_negotiated_video_codec(MMHandleType handle, scmirroring_video_codec_e *codec);
 int _scmirroring_sink_get_negotiated_video_resolution(MMHandleType handle, int *width, int *height);
index 19d3118d302099d051ddbbd0da87ddc73f900490..8cfb5bdbffb9a3abc2c96a59287735325a15a7e8 100644 (file)
@@ -194,6 +194,32 @@ int scmirroring_sink_set_display_mode(scmirroring_sink_h scmirroring_sink, scmir
  */
 int scmirroring_sink_set_display_roi(scmirroring_sink_h scmirroring_sink, int x, int y, int width, int height);
 
+/**
+ * @brief Sets Display Rotation of screen mirroring sink.
+ * @details Use this function to change the video orientation.
+ *          The video out will be rotated in a clockwise direction.
+ *
+ * @since_tizen 10.0
+ *
+ * @remarks This function is related to the following feature:\n
+ *          %http://tizen.org/feature/network.wifi.direct.display\n
+ *
+ * @param[in] scmirroring_sink The handle to the screen mirroring sink
+ * @param[in] rotation rotation of display
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SCMIRRORING_ERROR_NONE Successful
+ * @retval #SCMIRRORING_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SCMIRRORING_ERROR_INVALID_OPERATION Invalid operation
+ * @retval #SCMIRRORING_ERROR_NOT_SUPPORTED Not supported
+ * @retval #SCMIRRORING_ERROR_UNKNOWN Unknown Error
+ *
+ * @pre Create a screen mirroring sink handle by calling scmirroring_sink_create().
+ *
+ * @see scmirroring_sink_create()
+ */
+int scmirroring_sink_set_display_rotation(scmirroring_sink_h scmirroring_sink, scmirroring_display_rotation_e rotation);
+
 /**
  * @brief Sets resolutions of screen mirroring sink.
  * @details This function sets resolutions of screen mirroring sink using scmirroring_resolution_e as following.
index b12352793d86bd46a6589c97f3dc6722ded11cab..54e94465a75e5a0523565632b0062de22050c351 100644 (file)
@@ -117,6 +117,17 @@ typedef enum {
        SCMIRRORING_DISPLAY_MODE_CUSTOM_ROI,         /**< Specially described destination ROI */
 } scmirroring_display_mode_e;
 
+/**
+ * @brief Enumeration for screen mirroring display rotation.
+ * @since_tizen 10.0
+ */
+typedef enum {
+       SCMIRRORING_DISPLAY_ROTATION_NONE = 0,  /**< Display is not rotated */
+       SCMIRRORING_DISPLAY_ROTATION_90,        /**< Display is rotated 90 degrees */
+       SCMIRRORING_DISPLAY_ROTATION_180,       /**< Display is rotated 180 degrees */
+       SCMIRRORING_DISPLAY_ROTATION_270,       /**< Display is rotated 270 degrees */
+}scmirroring_display_rotation_e;
+
 /**
  * @brief Enumeration for screen mirroring audio codec.
  * @since_tizen 2.4
index d9a58f838ead09bfe956581214579833a663e732..ba2c667c883ddf18b2e76ef67ff190ad192ab4cf 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-screen-mirroring
 Summary:    A screen mirroring library in Tizen C API
-Version:    0.3.1
+Version:    0.3.2
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index a197e37ead5c00e9a869495c12be8ec9eb185b80..2a4250e0ef7fc3a7909840d71eeb83d4d93b7c5b 100644 (file)
@@ -244,6 +244,19 @@ int scmirroring_sink_set_display_roi(scmirroring_sink_h scmirroring_sink, int x,
        return _scmirroring_sink_set_display_roi(handle->mm_handle, x, y, width, height);
 }
 
+int scmirroring_sink_set_display_rotation(scmirroring_sink_h scmirroring_sink, scmirroring_display_rotation_e rotation)
+{
+       scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
+
+       CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
+
+       scmirroring_error_fenter();
+
+       scmirroring_retvm_if(!__is_valid_handle(handle), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is invalid");
+
+       return _scmirroring_sink_set_display_rotation(handle->mm_handle, rotation);
+}
+
 int scmirroring_sink_set_resolution(scmirroring_sink_h scmirroring_sink, int resolution)
 {
        scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
index ad30cba31a3d5f180d9e6d102d5ac633b79ce5bc..696c77131c9d91d38970e7ca2de3f63bec679854 100644 (file)
@@ -269,6 +269,26 @@ int _scmirroring_sink_set_display_roi(MMHandleType handle, int x, int y, int wid
        return _scmirroring_error_convert(__func__, ret);
 }
 
+int _scmirroring_sink_set_display_rotation(MMHandleType handle, scmirroring_display_rotation_e rotation)
+{
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       scmirroring_debug_fenter();
+
+       if ((rotation < SCMIRRORING_DISPLAY_ROTATION_NONE) || (rotation > SCMIRRORING_DISPLAY_ROTATION_270)) {
+               scmirroring_error("Invalid display rotation[%d]", rotation);
+               return SCMIRRORING_ERROR_INVALID_PARAMETER;
+       }
+
+       scmirroring_debug("display rotation[%d]", rotation);
+
+       ret = mm_wfd_sink_set_attribute(handle, NULL, "display_rotate", rotation, NULL);
+       if (ret != MM_ERROR_NONE)
+               scmirroring_error("Fail to Set Display Rotation");
+
+       return _scmirroring_error_convert(__func__, ret);
+}
+
 int _scmirroring_sink_set_resolution(MMHandleType handle, int resolution)
 {
        int ret = SCMIRRORING_ERROR_NONE;