From: Eunhae Choi Date: Fri, 9 Nov 2018 10:08:19 +0000 (+0900) Subject: [0.6.145] remove dead path - group play X-Git-Tag: submit/tizen/20181123.080458~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=531137914f5b5d35ee0e1343ef750919ce7c7003;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.145] remove dead path - group play Change-Id: I3fb5f76fb9716045a876612211da1526235f3251 --- diff --git a/src/include/mm_player.h b/src/include/mm_player.h index 67341a5..eea2322 100644 --- a/src/include/mm_player.h +++ b/src/include/mm_player.h @@ -1273,29 +1273,6 @@ int mm_player_get_current_track(MMHandleType hplayer, MMPlayerTrackType type, in */ int mm_player_set_external_subtitle_path(MMHandleType player, const char* path); -/** - * This function is to set the clock which is from master player - * - * @param player [in] handle of player - * @param clock [in] clock of master player - * @param clock_delta [in] clock difference between master and slave - * @param video_time [in] current playing position - * @param media_clock [in] media clock information - * @param audio_time [in] audio timestamp information - * @return This function returns zero on success, or negative value with error code. - */ -int mm_player_set_video_share_master_clock(MMHandleType player, int64_t clock, int64_t clock_delta, int64_t video_time, int64_t media_clock, int64_t audio_time); -/** - * This function is to get the master clock - * - * @param player [in] handle of player - * @param video_time [out] current playing position - * @param media_clock [out] media clock information - * @param audio_time [out] audio timestamp information - * @return This function returns zero on success, or negative value with error code. - */ -int mm_player_get_video_share_master_clock(MMHandleType player, int64_t *video_time, int64_t *media_clock, int64_t *audio_time); - /** * This function is to set download mode of video hub * diff --git a/src/include/mm_player_priv.h b/src/include/mm_player_priv.h index dc3e0b6..a1ddc2d 100644 --- a/src/include/mm_player_priv.h +++ b/src/include/mm_player_priv.h @@ -174,13 +174,8 @@ enum MainElementID { MMPLAYER_M_AUTOPLUG_V_DEC, MMPLAYER_M_AUTOPLUG_A_DEC, - /* NOTE : we need two fakesink to autoplug without decodebin. - * first one will hold whole pipeline state. and second one will hold state of - * a sink-decodebin for an elementary stream. no metter if there's more then one - * elementary streams because MSL reuse it. - */ + /*fakesink will hold whole pipeline state. */ MMPLAYER_M_SRC_FAKESINK, - MMPLAYER_M_SRC_2ND_FAKESINK, /* streaming plugin */ MMPLAYER_M_MUXED_S_BUFFER, @@ -204,22 +199,12 @@ enum MainElementID { MMPLAYER_M_V_INPUT_SELECTOR, // video input_select MMPLAYER_M_A_INPUT_SELECTOR, // audio input_select MMPLAYER_M_T_INPUT_SELECTOR, // text input_select - MMPLAYER_M_A_TEE, - MMPLAYER_M_A_Q1, - MMPLAYER_M_A_Q2, - MMPLAYER_M_A_CONV, - MMPLAYER_M_A_FILTER, - MMPLAYER_M_A_DEINTERLEAVE, - MMPLAYER_M_A_SELECTOR, - MMPLAYER_M_V_SINK, - MMPLAYER_M_V_CONV, MMPLAYER_M_NUM }; /* audio pipeline's element id */ enum AudioElementID { MMPLAYER_A_BIN = 0, /* NOTE : MMPLAYER_A_BIN should be zero */ - MMPLAYER_A_TP, MMPLAYER_A_CONV, MMPLAYER_A_VOL, MMPLAYER_A_FILTER, @@ -239,7 +224,6 @@ enum VideoElementID { MMPLAYER_V_BIN = 0, /* NOTE : MMPLAYER_V_BIN should be zero */ MMPLAYER_V_FLIP, MMPLAYER_V_CONV, - MMPLAYER_V_SCALE, MMPLAYER_V_CAPS, MMPLAYER_V_SINK, MMPLAYER_V_360, @@ -786,9 +770,6 @@ typedef struct { gint demux_pad_index; mm_player_selector_t selector[MM_PLAYER_TRACK_TYPE_MAX]; - mm_player_selector_t audio_mode; - gboolean use_deinterleave; - guint max_audio_channels; guint internal_text_idx; guint external_text_idx; @@ -798,10 +779,6 @@ typedef struct { /* initialize values */ mm_player_ini_t ini; - /* video share sync */ - gint64 video_share_api_delta; - gint64 video_share_clock_delta; - /* just for native app (video hub) */ gboolean video_hub_download_mode; gboolean sync_handler; @@ -912,8 +889,6 @@ int _mmplayer_change_track_language(MMHandleType hplayer, MMPlayerTrackType type int _mmplayer_sync_subtitle_pipeline(mm_player_t *player); int _mmplayer_set_video_hub_download_mode(MMHandleType hplayer, bool mode); int _mmplayer_use_system_clock(MMHandleType hplayer); -int _mmplayer_set_video_share_master_clock(MMHandleType hplayer, gint64 clock, gint64 clock_delta, gint64 video_time, gint64 media_clock, gint64 audio_time); -int _mmplayer_get_video_share_master_clock(MMHandleType hplayer, gint64 *video_time, gint64 *media_clock, gint64 *audio_time); int _mmplayer_enable_sync_handler(MMHandleType hplayer, bool enable); int _mmplayer_set_file_buffering_path(MMHandleType hplayer, const char *file_path); int _mmplayer_set_uri(MMHandleType hplayer, const char *uri); diff --git a/src/mm_player.c b/src/mm_player.c index 5510447..e131642 100644 --- a/src/mm_player.c +++ b/src/mm_player.c @@ -686,40 +686,6 @@ int mm_player_get_track_language_code(MMHandleType player, MMPlayerTrackType ty return result; } -int mm_player_set_video_share_master_clock(MMHandleType player, int64_t clock, int64_t clock_delta, - int64_t video_time, int64_t media_clock, int64_t audio_time) -{ - int result = MM_ERROR_NONE; - - MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED); - - MMPLAYER_CMD_LOCK(player); - - result = _mmplayer_set_video_share_master_clock(player, clock, clock_delta, video_time, media_clock, audio_time); - - MMPLAYER_CMD_UNLOCK(player); - - return result; -} - -int mm_player_get_video_share_master_clock(MMHandleType player, int64_t *video_time, int64_t *media_clock, int64_t *audio_time) -{ - int result = MM_ERROR_NONE; - - MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED); - MMPLAYER_RETURN_VAL_IF_FAIL(video_time, MM_ERROR_COMMON_INVALID_ARGUMENT); - MMPLAYER_RETURN_VAL_IF_FAIL(media_clock, MM_ERROR_COMMON_INVALID_ARGUMENT); - MMPLAYER_RETURN_VAL_IF_FAIL(audio_time, MM_ERROR_COMMON_INVALID_ARGUMENT); - - MMPLAYER_CMD_LOCK(player); - - result = _mmplayer_get_video_share_master_clock(player, video_time, media_clock, audio_time); - - MMPLAYER_CMD_UNLOCK(player); - - return result; -} - int mm_player_set_video_hub_download_mode(MMHandleType player, bool mode) { int result = MM_ERROR_NONE; diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index ba89135..8e1edcc 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -176,7 +176,6 @@ static int __mmplayer_gst_realize(mm_player_t* player); static int __mmplayer_gst_unrealize(mm_player_t* player); static int __mmplayer_gst_adjust_subtitle_position(mm_player_t* player, int format, int position); static int __mmplayer_gst_set_message_callback(mm_player_t* player, MMMessageCallback callback, gpointer user_param); -static void __mmplayer_gst_build_deinterleave_path(GstElement *elem, GstPad *pad, gpointer data); /* util */ static int __mmplayer_realize_streaming_ext(mm_player_t* player); @@ -188,7 +187,6 @@ static void __mmplayer_activate_next_source(mm_player_t *player, GstState target static void __mmplayer_check_pipeline(mm_player_t* player); static gboolean __mmplayer_deactivate_selector(mm_player_t *player, MMPlayerTrackType type); static void __mmplayer_deactivate_old_path(mm_player_t *player); -static GstElement *__mmplayer_element_create_and_link(mm_player_t *player, GstPad* pad, const char* name); static int __mmplayer_gst_create_plain_text_elements(mm_player_t* player); static guint32 _mmplayer_convert_fourcc_string_to_value(const gchar* format_name); static void __mmplayer_gst_caps_notify_cb(GstPad * pad, GParamSpec * unused, gpointer data); @@ -1373,8 +1371,6 @@ static void __mmplayer_set_decode_track_info(mm_player_t* player, MMPlayerTrackT static gboolean __mmplayer_create_audio_decode_path(mm_player_t* player, GstElement* audio_selector) { - GstPad* srcpad = NULL; - MMPLAYER_FENTER(); MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline, FALSE); @@ -1402,28 +1398,9 @@ static gboolean __mmplayer_create_audio_decode_path(mm_player_t* player, GstElem __mmplayer_set_decode_track_info(player, MM_PLAYER_TRACK_TYPE_AUDIO); /* create audio decode path */ - if ((player->use_deinterleave) && (player->max_audio_channels >= 2)) { - srcpad = gst_element_get_static_pad(audio_selector, "src"); - if (!srcpad) { - LOGE("failed to get srcpad from selector"); - return FALSE; - } - - LOGD("unblocking %s:%s", GST_DEBUG_PAD_NAME(srcpad)); - if (player->selector[MM_PLAYER_TRACK_TYPE_AUDIO].block_id) { - gst_pad_remove_probe(srcpad, player->selector[MM_PLAYER_TRACK_TYPE_AUDIO].block_id); - player->selector[MM_PLAYER_TRACK_TYPE_AUDIO].block_id = 0; - } - - __mmplayer_gst_build_deinterleave_path(audio_selector, srcpad, player); - - gst_object_unref(GST_OBJECT(srcpad)); - - } else { - if (!__mmplayer_create_decode_path(player, audio_selector, MM_PLAYER_TRACK_TYPE_AUDIO)) { - LOGE("failed to create audio decode path"); - return FALSE; - } + if (!__mmplayer_create_decode_path(player, audio_selector, MM_PLAYER_TRACK_TYPE_AUDIO)) { + LOGE("failed to create audio decode path"); + return FALSE; } MMPLAYER_FLEAVE(); @@ -1458,340 +1435,6 @@ static gboolean __mmplayer_create_text_decode_path(mm_player_t* player, GstEleme return TRUE; } -static void -__mmplayer_gst_deinterleave_pad_added(GstElement *elem, GstPad *pad, gpointer data) -{ - mm_player_t* player = (mm_player_t*)data; - GstElement* selector = NULL; - GstElement* queue = NULL; - - GstPad* srcpad = NULL; - GstPad* sinkpad = NULL; - GstCaps* caps = NULL; - gchar* caps_str = NULL; - - MMPLAYER_FENTER(); - MMPLAYER_RETURN_IF_FAIL(player && player->pipeline && player->pipeline->mainbin); - - caps = gst_pad_get_current_caps(pad); - caps_str = gst_caps_to_string(caps); - LOGD("deinterleave new caps : %s\n", caps_str); - MMPLAYER_FREEIF(caps_str); - gst_caps_unref(caps); - - if ((queue = __mmplayer_element_create_and_link(player, pad, "queue")) == NULL) { - LOGE("ERROR : queue create error\n"); - goto ERROR; - } - - g_object_set(G_OBJECT(queue), - "max-size-buffers", 10, - "max-size-bytes", 0, - "max-size-time", (guint64)0, - NULL); - - selector = player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].gst; - - if (!selector) { - LOGE("there is no audio channel selector.\n"); - goto ERROR; - } - - srcpad = gst_element_get_static_pad(queue, "src"); - sinkpad = gst_element_get_request_pad(selector, "sink_%u"); - - LOGD("link(%s:%s - %s:%s)\n", GST_DEBUG_PAD_NAME(srcpad), GST_DEBUG_PAD_NAME(sinkpad)); - - if (GST_PAD_LINK_OK != gst_pad_link(srcpad, sinkpad)) { - LOGW("failed to link deinterleave - selector\n"); - goto ERROR; - } - - gst_element_set_state(queue, GST_STATE_PAUSED); - player->audio_mode.total_track_num++; - -ERROR: - - if (srcpad) { - gst_object_unref(GST_OBJECT(srcpad)); - srcpad = NULL; - } - - if (sinkpad) { - gst_object_unref(GST_OBJECT(sinkpad)); - sinkpad = NULL; - } - - MMPLAYER_FLEAVE(); - return; -} - -static void -__mmplayer_gst_deinterleave_no_more_pads(GstElement *elem, gpointer data) -{ - mm_player_t* player = NULL; - GstElement* selector = NULL; - GstPad* sinkpad = NULL; - gint active_index = 0; - gchar* change_pad_name = NULL; - GstCaps* caps = NULL; // no need to unref - gint default_audio_ch = 0; - - MMPLAYER_FENTER(); - player = (mm_player_t*) data; - - selector = player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].gst; - - if (!selector) { - LOGE("there is no audio channel selector.\n"); - goto ERROR; - } - - active_index = player->audio_mode.active_pad_index; - - if (active_index != default_audio_ch) { - gint audio_ch = default_audio_ch; - - /*To get the new pad from the selector*/ - change_pad_name = g_strdup_printf("sink%d", active_index); - if (change_pad_name != NULL) { - sinkpad = gst_element_get_static_pad(selector, change_pad_name); - if (sinkpad != NULL) { - LOGD("Set Active Pad - %s:%s\n", GST_DEBUG_PAD_NAME(sinkpad)); - g_object_set(selector, "active-pad", sinkpad, NULL); - - audio_ch = active_index; - - caps = gst_pad_get_current_caps(sinkpad); - MMPLAYER_LOG_GST_CAPS_TYPE(caps); - - __mmplayer_set_audio_attrs(player, caps); - gst_caps_unref(caps); - } - MMPLAYER_FREEIF(change_pad_name); - } - - player->audio_mode.active_pad_index = audio_ch; - LOGD("audio LR info(0:stereo) = %d\n", player->audio_mode.active_pad_index); - } - -ERROR: - - if (sinkpad) - gst_object_unref(sinkpad); - - MMPLAYER_FLEAVE(); - return; -} - -static void -__mmplayer_gst_build_deinterleave_path(GstElement *elem, GstPad *pad, gpointer data) -{ - mm_player_t* player = NULL; - MMPlayerGstElement *mainbin = NULL; - - GstElement* tee = NULL; - GstElement* stereo_queue = NULL; - GstElement* mono_queue = NULL; - GstElement* conv = NULL; - GstElement* filter = NULL; - GstElement* deinterleave = NULL; - GstElement* selector = NULL; - - GstPad* srcpad = NULL; - GstPad* selector_srcpad = NULL; - GstPad* sinkpad = NULL; - GstCaps* caps = NULL; - gulong block_id = 0; - - MMPLAYER_FENTER(); - - /* check handles */ - player = (mm_player_t*) data; - - MMPLAYER_RETURN_IF_FAIL(elem && pad); - MMPLAYER_RETURN_IF_FAIL(player && player->pipeline && player->pipeline->mainbin); - - mainbin = player->pipeline->mainbin; - - /* tee */ - if ((tee = __mmplayer_element_create_and_link(player, pad, "tee")) == NULL) { - LOGE("ERROR : tee create error\n"); - goto ERROR; - } - - mainbin[MMPLAYER_M_A_TEE].id = MMPLAYER_M_A_TEE; - mainbin[MMPLAYER_M_A_TEE].gst = tee; - - gst_element_set_state(tee, GST_STATE_PAUSED); - - /* queue */ - srcpad = gst_element_get_request_pad(tee, "src_%u"); - if ((stereo_queue = __mmplayer_element_create_and_link(player, srcpad, "queue")) == NULL) { - LOGE("ERROR : stereo queue create error\n"); - goto ERROR; - } - - g_object_set(G_OBJECT(stereo_queue), - "max-size-buffers", 10, - "max-size-bytes", 0, - "max-size-time", (guint64)0, - NULL); - - player->pipeline->mainbin[MMPLAYER_M_A_Q1].id = MMPLAYER_M_A_Q1; - player->pipeline->mainbin[MMPLAYER_M_A_Q1].gst = stereo_queue; - - if (srcpad) { - gst_object_unref(GST_OBJECT(srcpad)); - srcpad = NULL; - } - - srcpad = gst_element_get_request_pad(tee, "src_%u"); - - if ((mono_queue = __mmplayer_element_create_and_link(player, srcpad, "queue")) == NULL) { - LOGE("ERROR : mono queue create error\n"); - goto ERROR; - } - - g_object_set(G_OBJECT(mono_queue), - "max-size-buffers", 10, - "max-size-bytes", 0, - "max-size-time", (guint64)0, - NULL); - - player->pipeline->mainbin[MMPLAYER_M_A_Q2].id = MMPLAYER_M_A_Q2; - player->pipeline->mainbin[MMPLAYER_M_A_Q2].gst = mono_queue; - - gst_element_set_state(stereo_queue, GST_STATE_PAUSED); - gst_element_set_state(mono_queue, GST_STATE_PAUSED); - - /* audioconvert */ - srcpad = gst_element_get_static_pad(mono_queue, "src"); - if ((conv = __mmplayer_element_create_and_link(player, srcpad, "audioconvert")) == NULL) { - LOGE("ERROR : audioconvert create error\n"); - goto ERROR; - } - - player->pipeline->mainbin[MMPLAYER_M_A_CONV].id = MMPLAYER_M_A_CONV; - player->pipeline->mainbin[MMPLAYER_M_A_CONV].gst = conv; - - /* caps filter */ - if (srcpad) { - gst_object_unref(GST_OBJECT(srcpad)); - srcpad = NULL; - } - srcpad = gst_element_get_static_pad(conv, "src"); - - if ((filter = __mmplayer_element_create_and_link(player, srcpad, "capsfilter")) == NULL) { - LOGE("ERROR : capsfilter create error\n"); - goto ERROR; - } - - player->pipeline->mainbin[MMPLAYER_M_A_FILTER].id = MMPLAYER_M_A_FILTER; - player->pipeline->mainbin[MMPLAYER_M_A_FILTER].gst = filter; - - caps = gst_caps_from_string("audio/x-raw-int, " - "width = (int) 16, " - "depth = (int) 16, " - "channels = (int) 2"); - - g_object_set(GST_ELEMENT(player->pipeline->mainbin[MMPLAYER_M_A_FILTER].gst), "caps", caps, NULL); - gst_caps_unref(caps); - - gst_element_set_state(conv, GST_STATE_PAUSED); - gst_element_set_state(filter, GST_STATE_PAUSED); - - /* deinterleave */ - if (srcpad) { - gst_object_unref(GST_OBJECT(srcpad)); - srcpad = NULL; - } - srcpad = gst_element_get_static_pad(filter, "src"); - - if ((deinterleave = __mmplayer_element_create_and_link(player, srcpad, "deinterleave")) == NULL) { - LOGE("ERROR : deinterleave create error\n"); - goto ERROR; - } - - g_object_set(deinterleave, "keep-positions", TRUE, NULL); - - __mmplayer_add_signal_connection(player, G_OBJECT(deinterleave), MM_PLAYER_SIGNAL_TYPE_AUTOPLUG, "pad-added", - G_CALLBACK(__mmplayer_gst_deinterleave_pad_added), (gpointer)player); - - __mmplayer_add_signal_connection(player, G_OBJECT(deinterleave), MM_PLAYER_SIGNAL_TYPE_AUTOPLUG, "no-more-pads", - G_CALLBACK(__mmplayer_gst_deinterleave_no_more_pads), (gpointer)player); - - player->pipeline->mainbin[MMPLAYER_M_A_DEINTERLEAVE].id = MMPLAYER_M_A_DEINTERLEAVE; - player->pipeline->mainbin[MMPLAYER_M_A_DEINTERLEAVE].gst = deinterleave; - - /* selector */ - selector = gst_element_factory_make("input-selector", "audio-channel-selector"); - if (selector == NULL) { - LOGE("ERROR : audio-selector create error\n"); - goto ERROR; - } - - g_object_set(selector, "sync-streams", TRUE, NULL); - gst_bin_add(GST_BIN(mainbin[MMPLAYER_M_PIPE].gst), selector); - - player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].id = MMPLAYER_M_A_SELECTOR; - player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].gst = selector; - - selector_srcpad = gst_element_get_static_pad(selector, "src"); - - LOGD("blocking %s:%s", GST_DEBUG_PAD_NAME(selector_srcpad)); - block_id = - gst_pad_add_probe(selector_srcpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM, - __mmplayer_gst_selector_blocked, NULL, NULL); - - if (srcpad) { - gst_object_unref(GST_OBJECT(srcpad)); - srcpad = NULL; - } - - srcpad = gst_element_get_static_pad(stereo_queue, "src"); - sinkpad = gst_element_get_request_pad(selector, "sink_%u"); - - if (GST_PAD_LINK_OK != gst_pad_link(srcpad, sinkpad)) { - LOGW("failed to link queue_stereo - selector\n"); - goto ERROR; - } - - player->audio_mode.total_track_num++; - - g_object_set(selector, "active-pad", sinkpad, NULL); - gst_element_set_state(deinterleave, GST_STATE_PAUSED); - gst_element_set_state(selector, GST_STATE_PAUSED); - - __mmplayer_gst_decode_callback(selector, selector_srcpad, player); - -ERROR: - - LOGD("unblocking %s:%s", GST_DEBUG_PAD_NAME(selector_srcpad)); - if (block_id != 0) { - gst_pad_remove_probe(selector_srcpad, block_id); - block_id = 0; - } - - if (sinkpad) { - gst_object_unref(GST_OBJECT(sinkpad)); - sinkpad = NULL; - } - - if (srcpad) { - gst_object_unref(GST_OBJECT(srcpad)); - srcpad = NULL; - } - - if (selector_srcpad) { - gst_object_unref(GST_OBJECT(selector_srcpad)); - selector_srcpad = NULL; - } - - MMPLAYER_FLEAVE(); - return; -} - static gboolean __mmplayer_gst_set_queue2_buffering(mm_player_t *player) { @@ -4555,10 +4198,6 @@ __mmplayer_gst_destroy_pipeline(mm_player_t* player) player->no_more_pad = FALSE; player->num_dynamic_pad = 0; player->demux_pad_index = 0; - player->use_deinterleave = FALSE; - player->max_audio_channels = 0; - player->video_share_api_delta = 0; - player->video_share_clock_delta = 0; player->video_hub_download_mode = 0; MMPLAYER_SUBTITLE_INFO_LOCK(player); @@ -5012,10 +4651,6 @@ _mmplayer_create_player(MMHandleType handle) player->playback_rate = DEFAULT_PLAYBACK_RATE; player->play_subtitle = FALSE; - player->use_deinterleave = FALSE; - player->max_audio_channels = 0; - player->video_share_api_delta = 0; - player->video_share_clock_delta = 0; player->has_closed_caption = FALSE; player->video_num_buffers = DEFAULT_NUM_OF_V_OUT_BUFFER; player->video_extra_num_buffers = DEFAULT_NUM_OF_V_OUT_BUFFER; @@ -6954,7 +6589,6 @@ __mmplayer_initialize_gapless_play(mm_player_t *player) player->no_more_pad = FALSE; player->not_found_demuxer = 0; player->seek_state = MMPLAYER_SEEK_NONE; - player->max_audio_channels = 0; player->is_subtitle_force_drop = FALSE; player->play_subtitle = FALSE; player->adjust_subtitle_pos = 0; @@ -7469,8 +7103,6 @@ __mmplayer_check_codec_info(mm_player_t* player, const char* klass, GstCaps* cap int codec_type = MM_PLAYER_CODEC_TYPE_DEFAULT; if ((g_strrstr(klass, "Codec/Decoder/Audio"))) { - GstStructure* str = NULL; - gint channels = 0; mm_attrs_get_int_by_name(player->attrs, "audio_codec_type", &codec_type); LOGD("audio codec type: %d", codec_type); @@ -7493,14 +7125,6 @@ __mmplayer_check_codec_info(mm_player_t* player, const char* klass, GstCaps* cap } } - str = gst_caps_get_structure(caps, 0); - if (str) { - gst_structure_get_int(str, "channels", &channels); - - LOGD("check audio ch : %d %d\n", player->max_audio_channels, channels); - if (player->max_audio_channels < channels) - player->max_audio_channels = channels; - } /* set stream information */ if (!player->audiodec_linked) __mmplayer_set_audio_attrs(player, caps); @@ -7747,11 +7371,6 @@ __mmplayer_gst_decode_drained(GstElement *bin, gpointer data) LOGD("__mmplayer_gst_decode_drained"); - if (player->use_deinterleave == TRUE) { - LOGD("group playing mode."); - return; - } - if (!MMPLAYER_CMD_TRYLOCK(player)) { LOGW("Fail to get cmd lock"); return; @@ -7958,9 +7577,6 @@ __mmplayer_release_misc(mm_player_t* player) player->pending_seek.pos = 0; player->msg_posted = FALSE; player->has_many_types = FALSE; - player->max_audio_channels = 0; - player->video_share_api_delta = 0; - player->video_share_clock_delta = 0; player->is_subtitle_force_drop = FALSE; player->play_subtitle = FALSE; player->adjust_subtitle_pos = 0; @@ -8095,47 +7711,6 @@ __mmplayer_release_misc_post(mm_player_t* player) MMPLAYER_FLEAVE(); } -static GstElement *__mmplayer_element_create_and_link(mm_player_t *player, GstPad* pad, const char* name) -{ - GstElement *element = NULL; - GstPad *sinkpad; - - LOGD("creating %s to plug\n", name); - - element = gst_element_factory_make(name, NULL); - if (!element) { - LOGE("failed to create queue\n"); - return NULL; - } - - if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(element, GST_STATE_READY)) { - LOGE("failed to set state READY to %s\n", name); - gst_object_unref(element); - return NULL; - } - - if (!gst_bin_add(GST_BIN(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst), element)) { - LOGE("failed to add %s\n", name); - gst_object_unref(element); - return NULL; - } - - sinkpad = gst_element_get_static_pad(element, "sink"); - - if (GST_PAD_LINK_OK != gst_pad_link(pad, sinkpad)) { - LOGE("failed to link %s\n", name); - gst_object_unref(sinkpad); - gst_object_unref(element); - return NULL; - } - - LOGD("linked %s to pipeline successfully\n", name); - - gst_object_unref(sinkpad); - - return element; -} - gboolean __mmplayer_check_subtitle(mm_player_t* player) { @@ -8853,178 +8428,6 @@ _mmplayer_enable_sync_handler(MMHandleType hplayer, bool enable) return MM_ERROR_NONE; } -int -_mmplayer_set_video_share_master_clock(MMHandleType hplayer, gint64 clock, gint64 clock_delta, - gint64 video_time, gint64 media_clock, gint64 audio_time) -{ - mm_player_t* player = (mm_player_t*) hplayer; - MMPlayerGstElement* mainbin = NULL; - GstClockTime start_time_audio = 0, start_time_video = 0; - GstClockTimeDiff base_time = 0, new_base_time = 0; - MMPlayerStateType current_state = MM_PLAYER_STATE_NONE; - gint64 api_delta = 0; - gint64 position = 0, position_delta = 0; - gint64 adj_base_time = 0; - GstClock *curr_clock = NULL; - GstClockTime curr_time = 0; - gboolean query_ret = TRUE; - int result = MM_ERROR_NONE; - - MMPLAYER_FENTER(); - - MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline, MM_ERROR_PLAYER_NOT_INITIALIZED); - MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin, MM_ERROR_PLAYER_NOT_INITIALIZED); - MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, MM_ERROR_PLAYER_NOT_INITIALIZED); - - /* LOGD("in(us) : %"G_GINT64_FORMAT", %"G_GINT64_FORMAT", %"G_GINT64_FORMAT", %"G_GINT64_FORMAT", %"G_GINT64_FORMAT, - clock, clock_delta, video_time, media_clock, audio_time); */ - - if ((video_time < 0) || (player->seek_state != MMPLAYER_SEEK_NONE)) { - LOGD("skip setting master clock. %lld", video_time); - goto EXIT; - } - - mainbin = player->pipeline->mainbin; - - curr_clock = gst_pipeline_get_clock(GST_PIPELINE_CAST(mainbin[MMPLAYER_M_PIPE].gst)); - curr_time = gst_clock_get_time(curr_clock); - - current_state = MMPLAYER_CURRENT_STATE(player); - - if (current_state == MM_PLAYER_STATE_PLAYING) - query_ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &position); - - if ((current_state != MM_PLAYER_STATE_PLAYING) || - (!query_ret)) { - position = player->last_position; - LOGD("query fail. %"G_GINT64_FORMAT, position); - } - - clock *= GST_USECOND; - clock_delta *= GST_USECOND; - - api_delta = clock - curr_time; - if ((player->video_share_api_delta == 0) || (player->video_share_api_delta > api_delta)) - player->video_share_api_delta = api_delta; - else - clock_delta += (api_delta - player->video_share_api_delta); - - if ((player->video_share_clock_delta == 0) || (player->video_share_clock_delta > clock_delta)) { - player->video_share_clock_delta = (gint64)clock_delta; - - position_delta = (position/GST_USECOND) - video_time; - position_delta *= GST_USECOND; - - adj_base_time = position_delta; - LOGD("video_share_clock_delta = %"G_GINT64_FORMAT", adj = %"G_GINT64_FORMAT, player->video_share_clock_delta, adj_base_time); - - } else { - gint64 new_play_time = 0; - gint64 network_delay = 0; - - video_time *= GST_USECOND; - - network_delay = clock_delta - player->video_share_clock_delta; - new_play_time = video_time + network_delay; - - adj_base_time = position - new_play_time; - - LOGD("%"G_GINT64_FORMAT"(delay) = %"G_GINT64_FORMAT" - %"G_GINT64_FORMAT" / %"G_GINT64_FORMAT - "(adj) = %"G_GINT64_FORMAT"(slave_pos) - %"G_GINT64_FORMAT"(master_pos) - %"G_GINT64_FORMAT"(delay)", - network_delay, clock_delta, player->video_share_clock_delta, adj_base_time, position, video_time, network_delay); - } - - /* Adjust Current Stream Time with base_time of sink - * 1. Set Start time to CLOCK NONE, to control the base time by MSL - * 2. Set new base time - * if adj_base_time is positive value, the stream time will be decreased. - * 3. If seek event is occurred, the start time will be reset. */ - if ((player->pipeline->audiobin) && - (player->pipeline->audiobin[MMPLAYER_A_SINK].gst)) { - start_time_audio = gst_element_get_start_time(player->pipeline->audiobin[MMPLAYER_A_SINK].gst); - - if (start_time_audio != GST_CLOCK_TIME_NONE) { - LOGD("audio sink : gst_element_set_start_time -> NONE"); - gst_element_set_start_time(player->pipeline->audiobin[MMPLAYER_A_SINK].gst, GST_CLOCK_TIME_NONE); - } - - base_time = gst_element_get_base_time(player->pipeline->audiobin[MMPLAYER_A_SINK].gst); - } - - if ((player->pipeline->videobin) && - (player->pipeline->videobin[MMPLAYER_V_SINK].gst)) { - start_time_video = gst_element_get_start_time(player->pipeline->videobin[MMPLAYER_V_SINK].gst); - - if (start_time_video != GST_CLOCK_TIME_NONE) { - LOGD("video sink : gst_element_set_start_time -> NONE"); - gst_element_set_start_time(player->pipeline->videobin[MMPLAYER_V_SINK].gst, GST_CLOCK_TIME_NONE); - } - - // if videobin exist, get base_time from videobin. - base_time = gst_element_get_base_time(player->pipeline->videobin[MMPLAYER_V_SINK].gst); - } - - new_base_time = base_time + adj_base_time; - - if ((player->pipeline->audiobin) && - (player->pipeline->audiobin[MMPLAYER_A_SINK].gst)) - gst_element_set_base_time(GST_ELEMENT_CAST(player->pipeline->audiobin[MMPLAYER_A_SINK].gst), (GstClockTime)new_base_time); - - if ((player->pipeline->videobin) && - (player->pipeline->videobin[MMPLAYER_V_SINK].gst)) - gst_element_set_base_time(GST_ELEMENT_CAST(player->pipeline->videobin[MMPLAYER_V_SINK].gst), (GstClockTime)new_base_time); - -EXIT: - MMPLAYER_FLEAVE(); - - return result; -} - -int -_mmplayer_get_video_share_master_clock(MMHandleType hplayer, gint64 *video_time, gint64 *media_clock, gint64 *audio_time) -{ - mm_player_t* player = (mm_player_t*) hplayer; - MMPlayerGstElement* mainbin = NULL; - GstClock *curr_clock = NULL; - MMPlayerStateType current_state = MM_PLAYER_STATE_NONE; - gint64 position = 0; - gboolean query_ret = TRUE; - - MMPLAYER_FENTER(); - - MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline, MM_ERROR_PLAYER_NOT_INITIALIZED); - MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin, MM_ERROR_PLAYER_NOT_INITIALIZED); - MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, MM_ERROR_PLAYER_NOT_INITIALIZED); - - MMPLAYER_RETURN_VAL_IF_FAIL(video_time, MM_ERROR_COMMON_INVALID_ARGUMENT); - MMPLAYER_RETURN_VAL_IF_FAIL(media_clock, MM_ERROR_COMMON_INVALID_ARGUMENT); - MMPLAYER_RETURN_VAL_IF_FAIL(audio_time, MM_ERROR_COMMON_INVALID_ARGUMENT); - - mainbin = player->pipeline->mainbin; - - curr_clock = gst_pipeline_get_clock(GST_PIPELINE_CAST(mainbin[MMPLAYER_M_PIPE].gst)); - - current_state = MMPLAYER_CURRENT_STATE(player); - - if (current_state != MM_PLAYER_STATE_PAUSED) - query_ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &position); - - if ((current_state == MM_PLAYER_STATE_PAUSED) || - (!query_ret)) - position = player->last_position; - - *media_clock = *video_time = *audio_time = (position/GST_USECOND); - - LOGD("media_clock: %"G_GINT64_FORMAT", video_time: %"G_GINT64_FORMAT"(us)", *media_clock, *video_time); - - if (curr_clock) - gst_object_unref(curr_clock); - - MMPLAYER_FLEAVE(); - - return MM_ERROR_NONE; -} - static gboolean __mmplayer_add_dump_buffer_probe(mm_player_t *player, GstElement *element) {