summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-10-01 15:44:01 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-10-19 17:03:04 +0200
commite7941ef5134ec62f5500b0993aa5b5d741f7fb3b (patch)
tree0b934c94f59668a215353e835c60841878135993
parent06b992d18461d4d95cc48eae7f8614805b5d55e6 (diff)
downloadgstreamer-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.c17
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),