wavparse: set buffer offsets before using the buffer for the first time
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 11 Jun 2010 19:47:22 +0000 (20:47 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 11 Jun 2010 19:47:22 +0000 (20:47 +0100)
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.

gst/wavparse/gstwavparse.c

index 902edd7..9f85078 100644 (file)
@@ -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);