Commit 12ec2c3d authored by Tim-Philipp Müller's avatar Tim-Philipp Müller
Browse files

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.
parent 815e06ba
......@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment