diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-11-26 12:28:57 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-11-26 12:28:57 +0200 |
commit | 88e060743a2d2acc8bf49d6085a7807d77780ad9 (patch) | |
tree | bd5b5d5c006763f9fe55bf65848418c3ef9d207a /gst | |
parent | 55043aff12cf43a0bf66abd295a9245c6223dfb3 (diff) | |
download | gstreamer-plugins-bad-88e060743a2d2acc8bf49d6085a7807d77780ad9.tar.gz |
mxfdemux: Post an error message if we got EOS before having any source pads
Otherwise, sending an EOS event has no effect and the application waits
forever for something to happen.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/mxf/mxfdemux.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index 525ff4337..a380f6dd9 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -3068,7 +3068,11 @@ pause: if (flow == GST_FLOW_EOS) { /* perform EOS logic */ - if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) { + if (demux->src->len == 0) { + GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE, + ("This stream contains no data."), + ("got eos and didn't find any streams")); + } else if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) { gint64 stop; GstMessage *m; GstEvent *e; @@ -4084,6 +4088,12 @@ gst_mxf_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) GstMXFDemuxPad *p = NULL; guint i; + if (demux->src->len == 0) { + GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE, + ("This stream contains no data."), + ("got eos and didn't find any streams")); + } + for (i = 0; i < demux->essence_tracks->len; i++) { GstMXFDemuxEssenceTrack *t = &g_array_index (demux->essence_tracks, GstMXFDemuxEssenceTrack, i); |