From: Tim-Philipp Müller Date: Fri, 11 Jun 2010 19:47:22 +0000 (+0100) Subject: wavparse: set buffer offsets before using the buffer for the first time X-Git-Tag: RELEASE-0.10.24~86 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=12ec2c3d6d3f150e01a08c7455c22b33357d642d;p=platform%2Fupstream%2Fgst-plugins-good.git wavparse: set buffer offsets before using the buffer for the first time gst_type_find_helper_for_buffer() will need the correct offset set on the buffer (ie. 0) and not the byte offset we started pulling the data from. --- diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 902edd7..9f85078 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -1858,6 +1858,16 @@ iterate_adapter: } } + obtained = GST_BUFFER_SIZE (buf); + + /* our positions in bytes */ + pos = wav->offset - wav->datastart; + nextpos = pos + obtained; + + /* update offsets, does not overflow. */ + GST_BUFFER_OFFSET (buf) = pos / wav->bytes_per_sample; + GST_BUFFER_OFFSET_END (buf) = nextpos / wav->bytes_per_sample; + /* first chunk of data? create the source pad. We do this only here so * we can detect broken .wav files with dts disguised as raw PCM (sigh) */ if (G_UNLIKELY (wav->first)) { @@ -1876,16 +1886,6 @@ iterate_adapter: } } - obtained = GST_BUFFER_SIZE (buf); - - /* our positions in bytes */ - pos = wav->offset - wav->datastart; - nextpos = pos + obtained; - - /* update offsets, does not overflow. */ - GST_BUFFER_OFFSET (buf) = pos / wav->bytes_per_sample; - GST_BUFFER_OFFSET_END (buf) = nextpos / wav->bytes_per_sample; - if (wav->bps > 0) { /* and timestamps if we have a bitrate, be careful for overflows */ timestamp = uint64_ceiling_scale (pos, GST_SECOND, (guint64) wav->bps);