diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2012-10-01 15:44:01 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2012-10-19 17:03:04 +0200 |
commit | e7941ef5134ec62f5500b0993aa5b5d741f7fb3b (patch) | |
tree | 0b934c94f59668a215353e835c60841878135993 | |
parent | 06b992d18461d4d95cc48eae7f8614805b5d55e6 (diff) | |
download | gstreamer-plugins-good-e7941ef5134ec62f5500b0993aa5b5d741f7fb3b.tar.gz |
avidemux: push mode; handle some initial junk before hdrl list
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685059
Conflicts:
gst/avi/gstavidemux.c
-rw-r--r-- | gst/avi/gstavidemux.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index f3d8a4471..6e24a9984 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -3213,6 +3213,7 @@ gst_avi_demux_stream_header_push (GstAviDemux * avi) switch (avi->header_state) { case GST_AVI_DEMUX_HEADER_TAG_LIST: + again: if (gst_avi_demux_peek_chunk (avi, &tag, &size)) { avi->offset += 8 + GST_ROUND_UP_2 (size); if (tag != GST_RIFF_TAG_LIST) @@ -3223,8 +3224,12 @@ gst_avi_demux_stream_header_push (GstAviDemux * avi) GST_DEBUG ("Reading %d bytes", size); buf = gst_adapter_take_buffer (avi->adapter, size); - if (GST_READ_UINT32_LE (GST_BUFFER_DATA (buf)) != GST_RIFF_LIST_hdrl) - goto header_no_hdrl; + if (GST_READ_UINT32_LE (GST_BUFFER_DATA (buf)) != GST_RIFF_LIST_hdrl) { + GST_WARNING_OBJECT (avi, "Invalid AVI header (no hdrl at start): %" + GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)); + gst_buffer_unref (buf); + goto again; + } /* mind padding */ if (size & 1) @@ -3448,14 +3453,6 @@ header_no_list: GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag))); return GST_FLOW_ERROR; } -header_no_hdrl: - { - GST_ELEMENT_ERROR (avi, STREAM, DEMUX, (NULL), - ("Invalid AVI header (no hdrl at start): %" - GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag))); - gst_buffer_unref (buf); - return GST_FLOW_ERROR; - } header_no_avih: { GST_ELEMENT_ERROR (avi, STREAM, DEMUX, (NULL), |