[0.3.92] add orient info into video data 14/180214/3
authorEunhae Choi <eunhae1.choi@samsung.com>
Fri, 25 May 2018 10:40:45 +0000 (19:40 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Wed, 30 May 2018 07:13:25 +0000 (16:13 +0900)
Change-Id: Ib4b87abe2cb91dcf7b91a7b0f9c36dc9fa8395a7

packaging/capi-media-player.spec
src/player.c

index af700d741fe0a42e022bbd44acaf1dee0d37235e..7c7f3a2756655f3aefc3f2d1672ff9ff717949b2 100644 (file)
@@ -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
index c3bf66cc4210d4cef55dfbf86d355ba3d77bafc6..2a84d29fe7d99385b3348dcbfdcdaf5d5031ee65 100644 (file)
@@ -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]);