summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2021-08-01 18:20:06 +0200
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-09-03 13:46:19 +0000
commitf5cdb2d00240d50dbf7fcb1c6b204bbbd0a8e0c7 (patch)
treee9143aa878a282200f27492163365f5b3c2205ee
parent8ad1ea02972217dc8222397544b5858ea01301b3 (diff)
downloadgstreamer-plugins-base-f5cdb2d00240d50dbf7fcb1c6b204bbbd0a8e0c7.tar.gz
decodebin3: fix unblocking on input gap events
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>
-rw-r--r--gst/playback/gstdecodebin3-parse.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gst/playback/gstdecodebin3-parse.c b/gst/playback/gstdecodebin3-parse.c
index 85e1de483..4db2f71a0 100644
--- a/gst/playback/gstdecodebin3-parse.c
+++ b/gst/playback/gstdecodebin3-parse.c
@@ -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);