From: Eunhye Choi Date: Wed, 23 Dec 2020 08:19:34 +0000 (+0900) Subject: decodebin3: do not drop the eos event X-Git-Tag: accepted/tizen/unified/20201228.130124^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8b1576fe86327defa3744f14b4d49d8a807c065f;p=platform%2Fupstream%2Fgst-plugins-base.git 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) --- 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\