From: Eunhae Choi Date: Thu, 28 Dec 2017 13:08:41 +0000 (+0900) Subject: [0.6.84] Merge branch 'tizen_4.0' into 'tizen' X-Git-Tag: submit/tizen/20180105.085839~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=40edfd11980286a0c28d98998da21ce7f70aa994;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.84] Merge branch 'tizen_4.0' into 'tizen' Change-Id: I377cbf6e6906dec03fe224b58f294cc7c4b29526 --- 40edfd11980286a0c28d98998da21ce7f70aa994 diff --cc packaging/libmm-player.spec index 6f8b960,978c564..c2ff2a2 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@@ -1,6 -1,6 +1,6 @@@ Name: libmm-player Summary: Multimedia Framework Player Library - Version: 0.6.83 -Version: 0.6.86 ++Version: 0.6.84 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --cc src/mm_player_attrs.c index 8c09237,bddd16f..a0f9ec4 --- a/src/mm_player_attrs.c +++ b/src/mm_player_attrs.c @@@ -1097,15 -1097,16 +1097,25 @@@ _mmplayer_construct_attribute(MMHandleT FALSE, TRUE }, + { + "content_video_is_spherical", + MM_ATTRS_TYPE_INT, + MM_ATTRS_FLAG_RW, + (void *) -1, + MM_ATTRS_VALID_TYPE_INT_RANGE, + -1, + MMPLAYER_MAX_INT + }, + { + "video_codec_type", + MM_ATTRS_TYPE_INT, + MM_ATTRS_FLAG_RW, + (void *) MM_PLAYER_VIDEO_CODEC_TYPE_DEFAULT, + MM_ATTRS_VALID_TYPE_INT_RANGE, + MM_PLAYER_VIDEO_CODEC_TYPE_DEFAULT, + MM_PLAYER_VIDEO_CODEC_TYPE_SW + }, + }; num_of_attrs = ARRAY_SIZE(player_attrs); diff --cc src/mm_player_priv.c index f24c4f3,1f51331..fbafb6d --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@@ -100,8 -98,9 +100,11 @@@ #define ADAPTIVE_VARIANT_DEFAULT_VALUE -1 /* auto */ - #define SPATIAL_AUDIO_CAPS "audio/x-raw,format=S16LE,channels=4" + #define PLAYER_BUS_MSG_DEFAULT_TIMEOUT 500 /* bus msg wait timeout */ + #define PLAYER_BUS_MSG_PREPARE_TIMEOUT 100 + ++#define SPATIAL_AUDIO_CAPS "audio/x-raw,format=S16LE,channels=4" + /*--------------------------------------------------------------------------- | LOCAL CONSTANT DEFINITIONS: | ---------------------------------------------------------------------------*/ @@@ -11565,31 -11352,59 +11593,56 @@@ GstCaps* caps, GstElementFactory* facto if (!player->audiodec_linked) __mmplayer_set_audio_attrs(player, caps); } else if (g_strrstr(klass, "Codec/Decoder/Video")) { + + int video_codec_type = MM_PLAYER_VIDEO_CODEC_TYPE_DEFAULT; + mm_attrs_get_int_by_name(player->attrs, "video_codec_type", &video_codec_type); + + LOGD("video codec type: %d", video_codec_type); + if (video_codec_type == MM_PLAYER_VIDEO_CODEC_TYPE_HW) { + /* sw codec is skipped */ + for (idx = 0; player->ini.videocodec_element_sw[idx][0] != '\0'; idx++) { + if (strstr(factory_name, player->ini.videocodec_element_sw[idx])) { + LOGW("skipping sw codec:[%s] by codec type", factory_name); + + result = GST_AUTOPLUG_SELECT_SKIP; + goto DONE; + } + } + } else if (video_codec_type == MM_PLAYER_VIDEO_CODEC_TYPE_SW) { + /* hw codec is skipped */ + if (g_strrstr(factory_name, player->ini.videocodec_element_hw)) { + LOGW("skipping hw codec:[%s] by codec type", factory_name); + + result = GST_AUTOPLUG_SELECT_SKIP; + goto DONE; + } + } + if ((strlen(player->ini.videocodec_element_hw) > 0) && (g_strrstr(factory_name, player->ini.videocodec_element_hw))) { - /* prepare resource manager for video decoder */ - MMPlayerResourceState resource_state = RESOURCE_STATE_NONE; - - if (_mmplayer_resource_manager_get_state(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER], &resource_state) == MM_ERROR_NONE) { - /* prepare resource manager for video decoder */ - if ((resource_state >= RESOURCE_STATE_INITIALIZED) && (resource_state < RESOURCE_STATE_ACQUIRED)) { - if (_mmplayer_resource_manager_prepare(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER], RESOURCE_TYPE_VIDEO_DECODER) - != MM_ERROR_NONE) { - LOGW("could not prepare for video_decoder resource, skip it."); - result = GST_AUTOPLUG_SELECT_SKIP; - goto DONE; - } + + /* mark video decoder for acquire */ + if (player->video_decoder_resource == NULL) { + if (mm_resource_manager_mark_for_acquire(player->resource_manager, + MM_RESOURCE_MANAGER_RES_TYPE_VIDEO_DECODER, + MM_RESOURCE_MANAGER_RES_VOLUME_FULL, + &player->video_decoder_resource) + != MM_RESOURCE_MANAGER_ERROR_NONE) { + LOGE("could not mark video_decoder resource for acquire"); + goto DONE; } + } else { + LOGW("video decoder resource is already acquired, skip it."); + result = GST_AUTOPLUG_SELECT_SKIP; + goto DONE; } - if (_mmplayer_resource_manager_get_state(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER], &resource_state) - == MM_ERROR_NONE) { - /* acquire resources for video playing */ - if (resource_state == RESOURCE_STATE_PREPARED) { - if (_mmplayer_resource_manager_acquire(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER]) - != MM_ERROR_NONE) { - LOGE("could not acquire resources for video decoding\n"); - _mmplayer_resource_manager_unprepare(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER]); - goto DONE; - } - } + player->interrupted_by_resource = FALSE; + /* acquire resources for video playing */ + if (mm_resource_manager_commit(player->resource_manager) + != MM_RESOURCE_MANAGER_ERROR_NONE) { + LOGE("could not acquire resources for video decoding\n"); + goto DONE; } } }