diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c index c9d7c370d8..09168a8c93 100644 --- a/gst/asfdemux/gstasfdemux.c +++ b/gst/asfdemux/gstasfdemux.c @@ -3575,7 +3575,7 @@ gst_asf_demux_process_header (GstASFDemux * demux, guint8 * data, guint64 size) unknown = gst_asf_demux_get_uint8 (&data, &size); GST_INFO_OBJECT (demux, "object is a header with %u parts", num_objects); - + demux->saw_file_header = FALSE; /* Loop through the header's objects, processing those */ for (i = 0; i < num_objects; ++i) { GST_INFO_OBJECT (demux, "reading header part %u", i); @@ -3585,6 +3585,11 @@ gst_asf_demux_process_header (GstASFDemux * demux, guint8 * data, guint64 size) break; } } + if (!demux->saw_file_header) { + GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), + ("Header does not have mandatory FILE section")); + return GST_FLOW_ERROR; + } return ret; @@ -3665,6 +3670,8 @@ gst_asf_demux_process_file (GstASFDemux * demux, guint8 * data, guint64 size) packets_count); GST_INFO ("preroll = %" G_GUINT64_FORMAT, demux->preroll); + demux->saw_file_header = TRUE; + return GST_FLOW_OK; /* ERRORS */ diff --git a/gst/asfdemux/gstasfdemux.h b/gst/asfdemux/gstasfdemux.h index 0e8ad85205..953b4963d0 100644 --- a/gst/asfdemux/gstasfdemux.h +++ b/gst/asfdemux/gstasfdemux.h @@ -240,6 +240,8 @@ struct _GstASFDemux { /* parsing 3D */ GstASF3DMode asf_3D_mode; + + gboolean saw_file_header; }; struct _GstASFDemuxClass {