decodebin3: fix unblocking on input gap events
authorMathieu Duponchelle <mathieu@centricular.com>
Sun, 1 Aug 2021 16:20:06 +0000 (18:20 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 3 Sep 2021 13:46:19 +0000 (13:46 +0000)
Initial gap events should not be discarded on the input streams,
but instead cause unblocking just as buffers do.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1239>

gst/playback/gstdecodebin3-parse.c

index 85e1de4..4db2f71 100644 (file)
@@ -553,6 +553,10 @@ parsebin_pending_event_probe (GstPad * pad, GstPadProbeInfo * info,
       SELECTION_UNLOCK (dbin);
     }
       break;
+    case GST_EVENT_GAP:
+      /* Let gaps through to the buffer probe, as they should cause unblocking */
+      ret = GST_PAD_PROBE_PASS;
+      break;
     default:
       break;
   }
@@ -580,7 +584,8 @@ parsebin_pad_added_cb (GstElement * demux, GstPad * pad, DecodebinInput * input)
       (GstPadProbeCallback) parsebin_pending_event_probe, ppad, NULL);
   ppad->buffer_probe =
       gst_pad_add_probe (pad,
-      GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_BUFFER,
+      GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_BUFFER |
+      GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
       (GstPadProbeCallback) parsebin_buffer_probe, input, NULL);
 
   input->pending_pads = g_list_append (input->pending_pads, ppad);