From: Sejun Park Date: Mon, 30 Apr 2018 05:35:10 +0000 (+0900) Subject: [ACR-1214] Added rotation method for orientation of the rendered video X-Git-Tag: submit/tizen/20180510.014849^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F49%2F177449%2F7;p=platform%2Fcore%2Fapi%2Fmediatool.git [ACR-1214] Added rotation method for orientation of the rendered video Change-Id: I0dcd8987b0221ec88eaf38d7955d4891b4e4164e --- diff --git a/include/media_packet.h b/include/media_packet.h index 027ffc0..60c8e84 100755 --- a/include/media_packet.h +++ b/include/media_packet.h @@ -78,6 +78,19 @@ typedef enum _finalize_cb_ret { MEDIA_PACKET_FINALIZE, /**< Destroy packet handle */ } media_packet_finalize_cb_ret_t; +/** + * @brief Enumeration for media packet rotation method. + * @since_tizen 5.0 + */ +typedef enum { + MEDIA_PACKET_ROTATE_IDENTITY, /**< None */ + MEDIA_PACKET_ROTATE_90, /**< Rotate 90 degrees */ + MEDIA_PACKET_ROTATE_180, /**< Rotate 180 degrees */ + MEDIA_PACKET_ROTATE_270, /**< Rotate 270 degrees */ + MEDIA_PACKET_ROTATE_HORIZONTAL_FLIP, /**< Flip horizontal */ + MEDIA_PACKET_ROTATE_VERTICAL_FLIP /**< Flip vertical */ +} media_packet_rotate_method_e; + /** * @brief Called when the media packet is destroyed. * @details It will be invoked when media_packet_destroy() is called. @@ -87,12 +100,9 @@ typedef enum _finalize_cb_ret { * @param[in] packet The media packet handle * @param[in] error_code The error code of #media_packet_error_e * @param[in] user_data The user data passed from the callback registration function - * - * @pre It will be invoked when media packet is destroyed. - * * @retval #MEDIA_PACKET_REUSE Packet handle is not destroyed, the handle will be reused. * @retval #MEDIA_PACKET_FINALIZE Destroy media packet handle, the handle will not be reused. - * + * @pre It will be invoked when media packet is destroyed. * @see media_packet_destroy() * @see media_packet_create_alloc() * @see media_packet_create() @@ -104,10 +114,8 @@ typedef int (*media_packet_finalize_cb) (media_packet_h packet, int error_code, /** * @brief Creates a media packet handle and allocates buffer. * @details The buffer will be allocated to heap or tbm_surface. - * * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif - * - * @remarks The @c packet must be released by using media_packet_destroy(). + * @remarks The @a packet should be released using media_packet_destroy(). * @param[in] fmt The allocated #media_format_h by caller * @param[in] fcb The media_packet_finalize_cb() to register * @param[in] fcb_data The user data to be passed to the media_packet_finalize_cb() function @@ -747,11 +755,11 @@ int media_packet_get_flags(media_packet_h packet, media_buffer_flags_e * flags); int media_packet_set_flags(media_packet_h packet, media_buffer_flags_e flags); /** - * @brief Unsets media_buffer_flags_e of media packet + * @brief Unsets media_buffer_flags_e of media packet. * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * * @param[in] packet The media packet handle - * @param[in] flags The media_buffer_flags_e of media packet to unset + * @param[in] flags The #media_buffer_flags_e of media packet to unset * * @return @c 0 on success, * otherwise a negative error value @@ -919,9 +927,8 @@ int media_packet_get_video_plane_data_ptr(media_packet_h packet, int plane_idx, /** * @brief Gets codec data and the codec data size of media packet. - * * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif - * + * @remarks The @a codec_data should be released using free(). * @param[in] packet The media packet handle * @param[out] codec_data The codec data to get * @param[out] codec_data_size The codec data size to get @@ -956,6 +963,35 @@ int media_packet_get_codec_data(media_packet_h packet, void **codec_data, unsign */ int media_packet_destroy(media_packet_h packet); +/** + * @brief Sets the rotation method. + * @since_tizen 5.0 + * + * @param[in] packet The media packet handle + * @param[in] method The rotation method + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #MEDIA_PACKET_ERROR_NONE Successful + * @retval #MEDIA_PACKET_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_PACKET_ERROR_INVALID_OPERATION Invalid operation + */ +int media_packet_set_rotate_method(media_packet_h packet, media_packet_rotate_method_e method); + +/** + * @brief Gets the rotation method. + * @since_tizen 5.0 + * + * @param[in] packet The media packet handle + * @param[out] method The rotation method + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #MEDIA_PACKET_ERROR_NONE Successful + * @retval #MEDIA_PACKET_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MEDIA_PACKET_ERROR_INVALID_OPERATION Invalid operation + */ +int media_packet_get_rotate_method(media_packet_h packet, media_packet_rotate_method_e *method); /** * @} */ diff --git a/include/media_packet_private.h b/include/media_packet_private.h index 628ce87..5e70147 100755 --- a/include/media_packet_private.h +++ b/include/media_packet_private.h @@ -134,6 +134,7 @@ typedef struct _media_packet_s { media_format_s *format; media_buffer_type_e type; media_buffer_flags_e flags; + media_packet_rotate_method_e method; } media_packet_s; diff --git a/src/media_packet.c b/src/media_packet.c index 00229e2..6c16764 100755 --- a/src/media_packet.c +++ b/src/media_packet.c @@ -248,6 +248,7 @@ int _pkt_alloc_buffer(media_packet_s *pkt) pkt->pts = CLOCK_TIME_NONE; pkt->dts = CLOCK_TIME_NONE; pkt->duration = CLOCK_TIME_NONE; + pkt->method = MEDIA_PACKET_ROTATE_IDENTITY; if (pkt->type == MEDIA_BUFFER_TYPE_NORMAL) { /* need to use format,width,height to get buffer size */ @@ -1455,3 +1456,32 @@ void _aligned_free_normal_buffer_type(void *buffer_ptr) free(ptr); ptr = NULL; } + +int media_packet_set_rotate_method(media_packet_h packet, media_packet_rotate_method_e method) +{ + media_packet_s *handle; + int ret = MEDIA_PACKET_ERROR_NONE; + + MEDIA_PACKET_INSTANCE_CHECK(packet); + + handle = (media_packet_s *)packet; + + handle->method = method; + + return ret; +} + +int media_packet_get_rotate_method(media_packet_h packet, media_packet_rotate_method_e *method) +{ + media_packet_s *handle; + int ret = MEDIA_PACKET_ERROR_NONE; + + MEDIA_PACKET_INSTANCE_CHECK(packet); + MEDIA_PACKET_NULL_ARG_CHECK(method); + + handle = (media_packet_s *)packet; + + *method = handle->method; + + return ret; +}