int _scmirroring_sink_resume(MMHandleType handle);
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_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);
*/
int scmirroring_sink_set_display(scmirroring_sink_h scmirroring_sink, scmirroring_display_type_e type, void *display_surface);
+/**
+ * @brief Sets display mode of screen mirroring sink.
+ * @details This function sets display mode of screen mirroring sink using scmirroring_display_mode_e, like #SCMIRRORING_DISPLAY_MODE_CUSTOM_ROI.
+ *
+ * @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] mode The display mode of screen mirroring sink
+ * @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_mode(scmirroring_sink_h scmirroring_sink, scmirroring_display_mode_e mode);
+
/**
* @brief Sets resolutions of screen mirroring sink.
* @details This function sets resolutions of screen mirroring sink using scmirroring_resolution_e as following.
SCMIRRORING_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
SCMIRRORING_ERROR_INVALID_OPERATION = TIZEN_ERROR_INVALID_OPERATION, /**< Invalid Operation */
SCMIRRORING_ERROR_CONNECTION_TIME_OUT = TIZEN_ERROR_CONNECTION_TIME_OUT, /**< Connection timeout */
- SCMIRRORING_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
+ SCMIRRORING_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
SCMIRRORING_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */
SCMIRRORING_ERROR_UNKNOWN = TIZEN_ERROR_UNKNOWN /**< Unknown error */
} scmirroring_error_e;
SCMIRRORING_DISPLAY_TYPE_MAX /* Number of display type */
} scmirroring_display_type_e;
+/**
+ * @brief Enumeration for screen mirroring display mode.
+ * @since_tizen 10.0
+ */
+typedef enum {
+ SCMIRRORING_DISPLAY_MODE_LETTER_BOX = 0, /**< Letter box */
+ SCMIRRORING_DISPLAY_MODE_ORIGIN_SIZE, /**< Origin size */
+ SCMIRRORING_DISPLAY_MODE_FULL_SCREEN, /**< Full-screen */
+ SCMIRRORING_DISPLAY_MODE_CROPPED_FULL, /**< Cropped full-screen */
+ SCMIRRORING_DISPLAY_MODE_ORIGIN_OR_LETTER, /**< Origin size(if screen size is larger than video size(width/height)) or Letter box(if video size(width/height) is larger than screen size) */
+ SCMIRRORING_DISPLAY_MODE_CUSTOM_ROI, /**< Specially described destination ROI */
+} scmirroring_display_mode_e;
+
/**
* @brief Enumeration for screen mirroring audio codec.
* @since_tizen 2.4
Name: capi-media-screen-mirroring
Summary: A screen mirroring library in Tizen C API
-Version: 0.2.35
-Release: 3
+Version: 0.3.0
+Release: 0
Group: Multimedia/API
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
return _scmirroring_sink_set_display(handle->mm_handle, type, display_surface, MM_DISPLAY_TYPE_OVERLAY);
}
+int scmirroring_sink_set_display_mode(scmirroring_sink_h scmirroring_sink, scmirroring_display_mode_e mode)
+{
+ 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_mode(handle->mm_handle, mode);
+}
+
int scmirroring_sink_set_resolution(scmirroring_sink_h scmirroring_sink, int resolution)
{
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
return _scmirroring_error_convert(__func__, ret);
}
+int _scmirroring_sink_set_display_mode(MMHandleType handle, scmirroring_display_mode_e mode)
+{
+ int ret = SCMIRRORING_ERROR_NONE;
+
+ scmirroring_debug_fenter();
+
+ if ((mode < SCMIRRORING_DISPLAY_MODE_LETTER_BOX) || (mode > SCMIRRORING_DISPLAY_MODE_CUSTOM_ROI)) {
+ scmirroring_error("Invalid display mode [%d]", mode);
+ return SCMIRRORING_ERROR_INVALID_PARAMETER;
+ }
+
+ scmirroring_debug("display mode(%d)", mode);
+
+ ret = mm_wfd_sink_set_attribute(handle, NULL, "display_method", mode, NULL);
+ if (ret != MM_ERROR_NONE)
+ scmirroring_error("Fail to Set Display Mode");
+
+ return _scmirroring_error_convert(__func__, ret);
+}
+
int _scmirroring_sink_set_resolution(MMHandleType handle, int resolution)
{
int ret = SCMIRRORING_ERROR_NONE;