From: Eunhae Choi Date: Fri, 25 May 2018 10:40:45 +0000 (+0900) Subject: [0.3.92] add orient info into video data X-Git-Tag: submit/tizen/20180605.085831~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cbb71dc59b19b92cd384fca7fd3bfa569c6134d8;p=platform%2Fcore%2Fapi%2Fplayer.git [0.3.92] add orient info into video data Change-Id: Ib4b87abe2cb91dcf7b91a7b0f9c36dc9fa8395a7 --- diff --git a/packaging/capi-media-player.spec b/packaging/capi-media-player.spec index af700d7..7c7f3a2 100644 --- a/packaging/capi-media-player.spec +++ b/packaging/capi-media-player.spec @@ -1,6 +1,6 @@ Name: capi-media-player Summary: A Media Player API -Version: 0.3.91 +Version: 0.3.92 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/player.c b/src/player.c index c3bf66c..2a84d29 100644 --- a/src/player.c +++ b/src/player.c @@ -644,6 +644,28 @@ static player_tsurf_info_t* __player_get_tsurf_from_list(callback_cb_info_s * cb return NULL; } +static media_packet_rotate_method_e __convert_packet_orient_info(int orientation) +{ + media_packet_rotate_method_e rotate = MEDIA_PACKET_ROTATE_IDENTITY; + + switch (orientation) { + case 90: + rotate = MEDIA_PACKET_ROTATE_90; + break; + case 180: + rotate = MEDIA_PACKET_ROTATE_180; + break; + case 270: + rotate = MEDIA_PACKET_ROTATE_270; + break; + default: + rotate = MEDIA_PACKET_ROTATE_IDENTITY; + break; + } + + return rotate; +} + static void __media_packet_video_frame_cb_handler(callback_cb_info_s * cb_info, _player_recv_data *recv_data) { tbm_bo bo[4] = { NULL, }; @@ -660,7 +682,8 @@ static void __media_packet_video_frame_cb_handler(callback_cb_info_s * cb_info, _media_pkt_fin_data *fin_data = NULL; intptr_t v_data = 0; uint64_t pts = 0; - int i = 0; + int i = 0, orientation = 0; + muse_core_msg_parse_err_e err = MUSE_MSG_PARSE_ERROR_NONE; void *jobj = muse_core_msg_object_new(recv_data->buffer, NULL, &err); @@ -672,6 +695,7 @@ static void __media_packet_video_frame_cb_handler(callback_cb_info_s * cb_info, !muse_core_msg_object_get_value("v_data", jobj, MUSE_TYPE_POINTER, &v_data) || !muse_core_msg_object_get_value("mimetype", jobj, MUSE_TYPE_ANY, &mimetype) || !muse_core_msg_object_get_value("pts", jobj, MUSE_TYPE_INT64, &pts) || + !muse_core_msg_object_get_value("orientation", jobj, MUSE_TYPE_INT, &orientation) || !muse_core_msg_object_get_value("surface_info", jobj, MUSE_TYPE_ARRAY, surface_info)) { LOGE("failed to get value from msg. jobj:%p, err:%d", jobj, err); @@ -794,6 +818,11 @@ static void __media_packet_video_frame_cb_handler(callback_cb_info_s * cb_info, if (ret != MEDIA_PACKET_ERROR_NONE) LOGE("media_packet_set_pts failed"); } + + ret = media_packet_set_rotate_method(pkt, __convert_packet_orient_info(orientation)); + if (ret != MEDIA_PACKET_ERROR_NONE) + LOGE("media_packet_set_rotate_method failed"); + if (cb_info->user_cb[MUSE_PLAYER_EVENT_TYPE_MEDIA_PACKET_VIDEO_FRAME]) { /* call media packet callback */ ((player_media_packet_video_decoded_cb) cb_info->user_cb[MUSE_PLAYER_EVENT_TYPE_MEDIA_PACKET_VIDEO_FRAME]) (pkt, cb_info->user_data[MUSE_PLAYER_EVENT_TYPE_MEDIA_PACKET_VIDEO_FRAME]);