summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-11-26 12:28:57 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-11-26 12:28:57 +0200
commit88e060743a2d2acc8bf49d6085a7807d77780ad9 (patch)
treebd5b5d5c006763f9fe55bf65848418c3ef9d207a /gst
parent55043aff12cf43a0bf66abd295a9245c6223dfb3 (diff)
downloadgstreamer-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.c12
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);