From 3ef484fe2b638384fbda72f5704df400bb06f218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 19 May 2006 13:37:55 +0000 Subject: [PATCH] gst-libs/gst/riff/riff-read.c: Don't bail out on JUNK chunks with a size of 0 (would try to pull_range 0 bytes before... Original commit message from CVS: * gst-libs/gst/riff/riff-read.c: (gst_riff_read_chunk): Don't bail out on JUNK chunks with a size of 0 (would try to pull_range 0 bytes before, which sources don't like too much). See #342345. --- ChangeLog | 7 +++++++ gst-libs/gst/riff/riff-read.c | 20 ++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index de413ebb7e..26a1a7cac7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-05-19 Tim-Philipp Müller + + * gst-libs/gst/riff/riff-read.c: (gst_riff_read_chunk): + Don't bail out on JUNK chunks with a size of 0 (would try to + pull_range 0 bytes before, which sources don't like too much). + See #342345. + 2006-05-19 Jan Schmidt * gst/videoscale/gstvideoscale.c: (gst_video_scale_fixate_caps): diff --git a/gst-libs/gst/riff/riff-read.c b/gst-libs/gst/riff/riff-read.c index 0fc3d3e5ed..9072195d88 100644 --- a/gst-libs/gst/riff/riff-read.c +++ b/gst-libs/gst/riff/riff-read.c @@ -69,14 +69,18 @@ gst_riff_read_chunk (GstElement * element, memcpy (dbg, tag, 4); GST_DEBUG_OBJECT (element, "tag=%s, size=%u", dbg, size); - if ((res = gst_pad_pull_range (pad, offset + 8, size, &buf)) != GST_FLOW_OK) - return res; - else if (!buf || GST_BUFFER_SIZE (buf) < size) { - GST_DEBUG_OBJECT (element, "not enough data (available=%u, needed=%u)", - (buf) ? GST_BUFFER_SIZE (buf) : 0, size); - if (buf) - gst_buffer_unref (buf); - return GST_FLOW_ERROR; + if (*tag == GST_RIFF_TAG_JUNK && size == 0) { + buf = gst_buffer_new (); + } else { + if ((res = gst_pad_pull_range (pad, offset + 8, size, &buf)) != GST_FLOW_OK) + return res; + if (!buf || GST_BUFFER_SIZE (buf) < size) { + GST_DEBUG_OBJECT (element, "not enough data (available=%u, needed=%u)", + (buf) ? GST_BUFFER_SIZE (buf) : 0, size); + if (buf) + gst_buffer_unref (buf); + return GST_FLOW_ERROR; + } } *_chunk_data = buf;