apply 'use decodebin' option 00/230700/1 tizen_5.5_devel
authorEunhye Choi <eunhae1.choi@samsung.com>
Mon, 13 Apr 2020 11:47:38 +0000 (20:47 +0900)
committerEunhye Choi <eunhae1.choi@samsung.com>
Mon, 13 Apr 2020 11:47:41 +0000 (20:47 +0900)
- uridecodebin3 path is default.
  however, if 'use decodebin' option is enabled in ini,
  decodebin2 path will be enabled.

Change-Id: I20bee3094b91314a49ed6e1c7941e99e011d50b2

src/include/mm_player_ini.h
src/include/mm_player_utils.h
src/mm_player_gst.c
src/mm_player_ini.c
src/mm_player_priv.c
src/mm_player_tracks.c
src/mm_player_utils.c

index aadf7f8..ab4d4a9 100644 (file)
@@ -88,7 +88,7 @@ typedef struct {
        gint localplayback_state_change_timeout;
        gint delay_before_repeat;
        gint eos_delay;
-       gboolean use_uridecodebin3; /* experimental feature */
+       gboolean use_decodebin;
 
        gchar gst_param[5][PLAYER_INI_MAX_PARAM_STRLEN];
        gchar exclude_element_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
@@ -176,7 +176,7 @@ typedef struct {
 #define DEFAULT_SUPPORT_PCM_EXPORTING                     FALSE /* with HW audio codec */
 #define DEFAULT_SUPPORT_PITCH_CONTROL                     FALSE /* with HW audio codec */
 #define DEFAULT_SUPPORT_REPLAYGAIN_CONTROL                FALSE /* with HW audio codec */
-#define DEFAULT_USE_URIDECODEBIN3                         FALSE
+#define DEFAULT_USE_DECODEBIN                             FALSE
 
 /* http streaming */
 #define DEFAULT_HTTPSRC                                   "souphttpsrc"
index 6b68bd6..88cd995 100644 (file)
 
 #define MMPLAYER_STREAM_TYPE_GET_NAME(type) _mmplayer_get_stream_type_name(type)
 
-#define MMPLAYER_USE_URIDECODEBIN3(x_player) _mmplayer_use_uridecodebin3(x_player)
+#define MMPLAYER_USE_DECODEBIN(x_player) _mmplayer_use_decodebin(x_player)
 
 /*===========================================================================================
 |                                                                                                                                                                                      |
@@ -311,7 +311,7 @@ gboolean _mmplayer_is_smooth_streaming(mmplayer_t *player);
 gboolean _mmplayer_is_ms_buff_src(mmplayer_t *player);
 gboolean _mmplayer_has_suffix(mmplayer_t *player, const gchar *suffix);
 gboolean _mmplayer_is_videosink_ready(mmplayer_t *player, int surface_type);
-gboolean _mmplayer_use_uridecodebin3(mmplayer_t *player);
+gboolean _mmplayer_use_decodebin(mmplayer_t *player);
 
 gboolean _mmplayer_post_message(mmplayer_t *player, enum MMMessageType msgtype, MMMessageParamType *param);
 gboolean _mmplayer_dump_pipeline_state(mmplayer_t *player);
index bb16882..154e97e 100644 (file)
@@ -227,7 +227,7 @@ __mmplayer_gst_transform_gsterror(mmplayer_t *player, GstMessage *message, GErro
        LOGD("error code=%d, msg=%s, src element=%s, class=%s",
                        error->code, error->message, src_element_name, klass);
 
-       if (!MMPLAYER_USE_URIDECODEBIN3(player) &&
+       if (MMPLAYER_USE_DECODEBIN(player) &&
                !__mmplayer_check_error_posted_from_activated_track(player, src_element_name))
                return MM_ERROR_NONE;
 
@@ -973,7 +973,7 @@ __mmplayer_gst_check_useful_message(mmplayer_t *player, GstMessage *message)
        }
        case GST_MESSAGE_STREAMS_SELECTED:
        {
-               if (!MMPLAYER_USE_URIDECODEBIN3(player))
+               if (MMPLAYER_USE_DECODEBIN(player))
                        break; /* drop msg */
 
                if ((MMPLAYER_IS_HTTP_STREAMING(player)) &&
@@ -2994,7 +2994,8 @@ __mmplayer_gst_select_stream (GstElement * uridecodebin, GstStreamCollection * c
 
 EXIT:
        g_free(caps_str);
-       gst_caps_unref(caps);
+       if (caps)
+               gst_caps_unref(caps);
 
        LOGD("ret %d", ret);
        return ret;
@@ -3705,7 +3706,7 @@ _mmplayer_gst_pause(mmplayer_t *player, gboolean async)
                return ret;
        }
 
-       if (!MMPLAYER_USE_URIDECODEBIN3(player)) {
+       if (MMPLAYER_USE_DECODEBIN(player)) {
                if ((!MMPLAYER_IS_RTSP_STREAMING(player)) && (!player->video_decoded_cb) &&
                        (!player->pipeline->videobin) && (!player->pipeline->audiobin))
                        return MM_ERROR_PLAYER_CODEC_NOT_FOUND;
index fb552c0..d9acefe 100644 (file)
@@ -133,7 +133,7 @@ mm_player_ini_load(mmplayer_ini_t *ini)
                ini->pcm_buffer_size = iniparser_getint(dict, "general:pcm buffer size", DEFAULT_PCM_BUFFER_SIZE);
                ini->num_of_video_bo = iniparser_getint(dict, "general:video bo max", DEFAULT_NUM_OF_VIDEO_BO);
                ini->video_bo_timeout = iniparser_getint(dict, "general:video bo timeout", DEFAULT_TIMEOUT_OF_VIDEO_BO);
-               ini->use_uridecodebin3 = iniparser_getboolean(dict, "general:use uridecodebin3", DEFAULT_USE_URIDECODEBIN3);
+               ini->use_decodebin = iniparser_getboolean(dict, "general:use decodebin", DEFAULT_USE_DECODEBIN);
                ini->support_audio_effect = iniparser_getboolean(dict, "general:support audio effect", DEFAULT_SUPPORT_AUDIO_EFFECT);
                ini->support_pcm_exporting = iniparser_getboolean(dict, "general:support pcm exporting", DEFAULT_SUPPORT_PCM_EXPORTING);
                ini->support_pitch_control = iniparser_getboolean(dict, "general:use pitch control", DEFAULT_SUPPORT_PITCH_CONTROL);
@@ -205,7 +205,7 @@ mm_player_ini_load(mmplayer_ini_t *ini)
                ini->pcm_buffer_size = DEFAULT_PCM_BUFFER_SIZE;
                ini->num_of_video_bo = DEFAULT_NUM_OF_VIDEO_BO;
                ini->video_bo_timeout = DEFAULT_TIMEOUT_OF_VIDEO_BO;
-               ini->use_uridecodebin3 = DEFAULT_USE_URIDECODEBIN3;
+               ini->use_decodebin = DEFAULT_USE_DECODEBIN;
                ini->support_audio_effect = DEFAULT_SUPPORT_AUDIO_EFFECT;
                ini->support_pcm_exporting = DEFAULT_SUPPORT_PCM_EXPORTING;
                ini->support_pitch_control = DEFAULT_SUPPORT_PITCH_CONTROL;
@@ -288,7 +288,7 @@ mm_player_ini_load(mmplayer_ini_t *ini)
        LOGD("gst param3 : %s", ini->gst_param[2]);
        LOGD("gst param4 : %s", ini->gst_param[3]);
        LOGD("gst param5 : %s", ini->gst_param[4]);
-       LOGD("use uridecodebin3 : %d", ini->use_uridecodebin3);
+       LOGD("use decodebin : %d", ini->use_decodebin);
 
        for (idx = 0; ini->exclude_element_keyword[idx][0] != '\0'; idx++)
                LOGD("exclude_element_keyword [%d] : %s", idx, ini->exclude_element_keyword[idx]);
index 575f839..c9ce7a9 100644 (file)
@@ -1238,7 +1238,7 @@ _mmplayer_gst_decode_pad_added(GstElement *elem, GstPad *pad, gpointer data)
 
                LOGD("surface type : %d", stype);
 
-               if (MMPLAYER_IS_MS_BUFF_SRC(player) || MMPLAYER_USE_URIDECODEBIN3(player)) {
+               if (MMPLAYER_IS_MS_BUFF_SRC(player) || !MMPLAYER_USE_DECODEBIN(player)) {
                        __mmplayer_gst_create_sinkbin(elem, pad, player);
                        goto DONE;
                }
@@ -1257,7 +1257,7 @@ _mmplayer_gst_decode_pad_added(GstElement *elem, GstPad *pad, gpointer data)
                gint samplerate = 0;
                gint channels = 0;
 
-               if (MMPLAYER_IS_MS_BUFF_SRC(player) || MMPLAYER_USE_URIDECODEBIN3(player) || player->build_audio_offload) {
+               if (MMPLAYER_IS_MS_BUFF_SRC(player) || !MMPLAYER_USE_DECODEBIN(player) || player->build_audio_offload) {
                        if (player->build_audio_offload)
                                player->no_more_pad = TRUE; /* remove state holder */
                        __mmplayer_gst_create_sinkbin(elem, pad, player);
@@ -1311,7 +1311,7 @@ _mmplayer_gst_decode_pad_added(GstElement *elem, GstPad *pad, gpointer data)
                g_object_set(selector, "active-pad", sinkpad, NULL);
        }
 
-       if (!MMPLAYER_USE_URIDECODEBIN3(player))
+       if (MMPLAYER_USE_DECODEBIN(player))
                _mmplayer_track_update_stream(player, stream_type, sinkpad);
 
 DONE:
@@ -1423,7 +1423,7 @@ __mmplayer_create_audio_sink_path(mmplayer_t *player, GstElement *audio_selector
        }
 
        /* apply the audio track information */
-       if (!MMPLAYER_USE_URIDECODEBIN3(player))
+       if (MMPLAYER_USE_DECODEBIN(player))
                __mmplayer_set_decode_track_info(player, MM_PLAYER_TRACK_TYPE_AUDIO);
 
        /* create audio sink path */
@@ -4180,10 +4180,10 @@ __mmplayer_gst_create_pipeline(mmplayer_t *player)
        if (MMPLAYER_IS_MS_BUFF_SRC(player)) {
                ret = _mmplayer_gst_build_es_pipeline(player);
        } else {
-               if (player->ini.use_uridecodebin3)
-                       ret = _mmplayer_gst_build_pipeline_with_src(player);
+               if (MMPLAYER_USE_DECODEBIN(player))
+                       ret = _mmplayer_gst_build_pipeline(player); /* TEMP: previous pipeline, will be removed.*/
                else
-                       ret = _mmplayer_gst_build_pipeline(player);
+                       ret = _mmplayer_gst_build_pipeline_with_src(player);
        }
 
        if (ret != MM_ERROR_NONE) {
@@ -8355,10 +8355,10 @@ _mmplayer_change_track_language(MMHandleType hplayer, mmplayer_track_type_e type
                goto EXIT;
        }
 
-       if (MMPLAYER_USE_URIDECODEBIN3(player)) {
-               result = __mmplayer_switch_stream(player, type, index);
-       } else {
+       if (MMPLAYER_USE_DECODEBIN(player)) {
                result = __mmplayer_change_selector_pad(player, type, index);
+       } else {
+               result = __mmplayer_switch_stream(player, type, index);
        }
        if (result != MM_ERROR_NONE) {
                LOGE("failed to change track");
@@ -8367,7 +8367,7 @@ _mmplayer_change_track_language(MMHandleType hplayer, mmplayer_track_type_e type
 
        player->track[type].active_track_index = index;
 
-       if (!MMPLAYER_USE_URIDECODEBIN3(player)) {
+       if (MMPLAYER_USE_DECODEBIN(player)) {
                GstEvent *event = NULL;
                if (current_state == GST_STATE_PLAYING) {
                        event = gst_event_new_seek(player->playback_rate, GST_FORMAT_TIME,
index effb483..bd40911 100644 (file)
@@ -388,12 +388,12 @@ __mmplayer_track_get_language(mmplayer_t *player, mmplayer_track_type_e type, gi
 
        *code = (gchar *)g_malloc0(LANGUAGE_CODE_SIZE * sizeof(char));
 
-       if (MMPLAYER_USE_URIDECODEBIN3(player)) {
-               GstStream *stream = g_ptr_array_index(player->track[type].streams, stream_index);
-               tag_list = gst_stream_get_tags (stream);
-       } else {
+       if (MMPLAYER_USE_DECODEBIN(player)) {
                GstPad *sinkpad = g_ptr_array_index(player->track[type].streams, stream_index);
                g_object_get(sinkpad, "tags", &tag_list, NULL);
+       } else {
+               GstStream *stream = g_ptr_array_index(player->track[type].streams, stream_index);
+               tag_list = gst_stream_get_tags (stream);
        }
 
        if (tag_list)
index 4d273d3..60a258e 100644 (file)
@@ -646,15 +646,15 @@ media_format_mimetype_e _mmplayer_convert_audio_pcm_str_to_media_format_mime(con
        }
 }
 
-gboolean _mmplayer_use_uridecodebin3(mmplayer_t *player) /* MMPLAYER_USE_URIDECODEBIN3(player) */
+gboolean _mmplayer_use_decodebin(mmplayer_t *player) /* MMPLAYER_USE_DECODEBIN(player) */
 {
+       int audio_offload = 0;
        MMPLAYER_RETURN_VAL_IF_FAIL(player, FALSE);
 
-       if (MMPLAYER_IS_MS_BUFF_SRC(player))
-               return FALSE;
+       mm_attrs_get_int_by_name(player->attrs, MM_PLAYER_AUDIO_OFFLOAD, &audio_offload); /* user requirement */
 
-       if (!player->ini.use_uridecodebin3)
-               return FALSE;
+       if (MMPLAYER_IS_MS_BUFF_SRC(player) || player->ini.use_decodebin || audio_offload)
+               return TRUE;
 
-       return TRUE;
+       return FALSE;
 }