decodebin3: do not drop the eos event
authorEunhye Choi <eunhae1.choi@samsung.com>
Wed, 23 Dec 2020 08:19:34 +0000 (17:19 +0900)
committereunhae choi <eunhae1.choi@samsung.com>
Thu, 24 Dec 2020 03:49:16 +0000 (03:49 +0000)
- 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
packaging/gst-plugins-base.spec

index fdec1be..7d2ceef 100644 (file)
@@ -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);
index 3383f97..6c056fc 100644 (file)
@@ -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\