- uridecodebin3 path is default.
however, if 'use decodebin' option is enabled in ini,
decodebin2 path will be enabled.
Change-Id: I20bee3094b91314a49ed6e1c7941e99e011d50b2
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];
#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"
#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)
/*===========================================================================================
| |
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);
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;
}
case GST_MESSAGE_STREAMS_SELECTED:
{
- if (!MMPLAYER_USE_URIDECODEBIN3(player))
+ if (MMPLAYER_USE_DECODEBIN(player))
break; /* drop msg */
if ((MMPLAYER_IS_HTTP_STREAMING(player)) &&
EXIT:
g_free(caps_str);
- gst_caps_unref(caps);
+ if (caps)
+ gst_caps_unref(caps);
LOGD("ret %d", ret);
return ret;
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;
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);
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;
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]);
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;
}
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);
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:
}
/* 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 */
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) {
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");
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,
*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)
}
}
-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;
}