From 8b1576fe86327defa3744f14b4d49d8a807c065f Mon Sep 17 00:00:00 2001 From: Eunhye Choi Date: Wed, 23 Dec 2020 17:19:34 +0900 Subject: [PATCH] decodebin3: do not drop the eos event - decodebin3 send eos event to downstream when it gets eos event from all tracks but it causes hang up if application ask changing pipeline state to PAUSED. - eos track has no data to preroll but sink does not know whether it is eos or not because d3 drop the eos and it is waiting another track's eos. Change-Id: I0787c8cf22abeb1e6e30ba56d0909381399cdbd2 (cherry picked from commit e81e47479b49ffe98c3614ad2295c56e28e0b282) --- gst/playback/gstdecodebin3.c | 4 ++++ packaging/gst-plugins-base.spec | 1 + 2 files changed, 5 insertions(+) diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c index fdec1be..7d2ceef 100644 --- a/gst/playback/gstdecodebin3.c +++ b/gst/playback/gstdecodebin3.c @@ -1941,7 +1941,9 @@ multiqueue_src_probe (GstPad * pad, GstPadProbeInfo * info, gst_mini_object_set_qdata (GST_MINI_OBJECT_CAST (ev), CUSTOM_EOS_QUARK, NULL, NULL); GST_LOG_OBJECT (pad, "Received custom EOS"); +#ifndef TIZEN_FEATURE_DISABLE_EOS_DROP ret = GST_PAD_PROBE_HANDLED; +#endif SELECTION_LOCK (dbin); if (slot->input == NULL) { GST_DEBUG_OBJECT (pad, @@ -1999,9 +2001,11 @@ multiqueue_src_probe (GstPad * pad, GstPadProbeInfo * info, GST_DEBUG_OBJECT (pad, "Got final eos, propagating downstream"); } else { GST_DEBUG_OBJECT (pad, "Got regular eos (all_inputs_are_eos)"); +#ifndef TIZEN_FEATURE_DISABLE_EOS_DROP /* drop current event as eos will be sent in check_all_slot_for_eos * when all output streams are also eos */ ret = GST_PAD_PROBE_DROP; +#endif SELECTION_LOCK (dbin); check_all_slot_for_eos (dbin); SELECTION_UNLOCK (dbin); diff --git a/packaging/gst-plugins-base.spec b/packaging/gst-plugins-base.spec index 3383f97..6c056fc 100644 --- a/packaging/gst-plugins-base.spec +++ b/packaging/gst-plugins-base.spec @@ -94,6 +94,7 @@ export CFLAGS="%{optflags} -fno-strict-aliasing\ -DTIZEN_FEATURE_VOLUME_MODIFICATION\ -DTIZEN_FEATURE_FORCE_SW_DECODER\ -DTIZEN_FEATURE_U3_AVOID_DEADLOCK\ + -DTIZEN_FEATURE_DISABLE_EOS_DROP\ -DTIZEN_FEATURE_PLAYBIN3_MODIFICATION\ %if "%{tizen_profile_name}" == "tv" -DTIZEN_PROFILE_TV\ -- 2.7.4