From 7df3860d903a92752fc6da4bb987aae145671ab8 Mon Sep 17 00:00:00 2001 From: Gilbok Lee Date: Thu, 23 Apr 2020 15:43:55 +0900 Subject: [PATCH] [0.6.227] Inserts a video sink in the first of the sink element list - to send the first seek event in video sink. Change-Id: I467026057925a2c9995e20b2f0f66c2f61ec45bd --- packaging/libmm-player.spec | 2 +- src/mm_player_priv.c | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 240a992..2fbe2f1 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -1,6 +1,6 @@ Name: libmm-player Summary: Multimedia Framework Player Library -Version: 0.6.226 +Version: 0.6.227 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 1f13b38..7b555c1 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -157,7 +157,7 @@ static int __mmplayer_change_selector_pad(mmplayer_t *player, mmplayer_track_typ static gboolean __mmplayer_check_subtitle(mmplayer_t *player); static int __mmplayer_handle_missed_plugin(mmplayer_t *player); static int __mmplayer_check_not_supported_codec(mmplayer_t *player, const gchar *factory_class, const gchar *mime); -static void __mmplayer_add_sink(mmplayer_t *player, GstElement *sink); +static void __mmplayer_add_sink(mmplayer_t *player, GstElement *sink, gboolean first); static void __mmplayer_del_sink(mmplayer_t *player, GstElement *sink); static void __mmplayer_release_signal_connection(mmplayer_t *player, mmplayer_signal_type_e type); static gpointer __mmplayer_gapless_play_thread(gpointer data); @@ -1111,7 +1111,7 @@ __mmplayer_gst_make_fakesink(mmplayer_t *player, GstPad *pad, const gchar *name) } /* store it as it's sink element */ - __mmplayer_add_sink(player, fakesink); + __mmplayer_add_sink(player, fakesink, FALSE); gst_bin_add(GST_BIN(pipeline), fakesink); @@ -2529,7 +2529,7 @@ __mmplayer_gst_audio_deinterleave_pad_added(GstElement *elem, GstPad *pad, gpoin G_CALLBACK(__mmplayer_audio_stream_decoded_render_cb), (gpointer)player); - __mmplayer_add_sink(player, sink); + __mmplayer_add_sink(player, sink, FALSE); if (gst_element_sync_state_with_parent(queue) == GST_STATE_CHANGE_FAILURE) { LOGE("failed to sync state"); @@ -2833,7 +2833,7 @@ __mmplayer_gst_make_audio_playback_sink(mmplayer_t *player, GList **bucket) "notify::caps", G_CALLBACK(__mmplayer_gst_caps_notify_cb), (gpointer)player); gst_object_unref(GST_OBJECT(sink_pad)); - __mmplayer_add_sink(player, audiobin[MMPLAYER_A_SINK].gst); + __mmplayer_add_sink(player, audiobin[MMPLAYER_A_SINK].gst, FALSE); MMPLAYER_FLEAVE(); return MM_ERROR_NONE; @@ -2989,7 +2989,7 @@ __mmplayer_gst_make_audio_extract_sink(mmplayer_t *player, GList **bucket) G_CALLBACK(__mmplayer_audio_stream_decoded_render_cb), (gpointer)player); - __mmplayer_add_sink(player, audiobin[extract_sink_id].gst); + __mmplayer_add_sink(player, audiobin[extract_sink_id].gst, FALSE); } MMPLAYER_FLEAVE(); @@ -3020,7 +3020,7 @@ __mmplayer_gst_make_audio_bin_element(mmplayer_t *player, GList **bucket) g_object_set(G_OBJECT(audiobin[MMPLAYER_A_SINK].gst), "sync", TRUE, "volume", player->sound.volume, "mute", player->sound.mute, NULL); - __mmplayer_add_sink(player, audiobin[MMPLAYER_A_SINK].gst); + __mmplayer_add_sink(player, audiobin[MMPLAYER_A_SINK].gst, FALSE); goto DONE; } @@ -3652,7 +3652,7 @@ __mmplayer_gst_create_video_sink_bin(mmplayer_t *player, GstCaps *caps, MMDispla } /* store it as it's sink element */ - __mmplayer_add_sink(player, videobin[MMPLAYER_V_SINK].gst); + __mmplayer_add_sink(player, videobin[MMPLAYER_V_SINK].gst, TRUE); /* adding created elements to bin */ if (!_mmplayer_gst_element_add_bucket_to_bin(GST_BIN(videobin[MMPLAYER_V_BIN].gst), element_bucket)) { @@ -3736,7 +3736,7 @@ __mmplayer_gst_create_plain_text_elements(mmplayer_t *player) if (!player->play_subtitle) { LOGD("add textbin sink as sink element of whole pipeline."); - __mmplayer_add_sink(player, GST_ELEMENT(textbin[MMPLAYER_T_FAKE_SINK].gst)); + __mmplayer_add_sink(player, GST_ELEMENT(textbin[MMPLAYER_T_FAKE_SINK].gst), FALSE); } /* adding created elements to bin */ @@ -7879,14 +7879,17 @@ _mmplayer_cancel_eos_timer(mmplayer_t *player) } static void -__mmplayer_add_sink(mmplayer_t *player, GstElement *sink) +__mmplayer_add_sink(mmplayer_t *player, GstElement *sink, gboolean first) { MMPLAYER_FENTER(); MMPLAYER_RETURN_IF_FAIL(player); MMPLAYER_RETURN_IF_FAIL(sink); - player->sink_elements = g_list_append(player->sink_elements, sink); + if (first) + player->sink_elements = g_list_prepend(player->sink_elements, sink); + else + player->sink_elements = g_list_append(player->sink_elements, sink); MMPLAYER_FLEAVE(); } -- 2.7.4