gst/wavparse/gstwavparse.c: Fix the scaling code.

Original commit message from CVS:
* gst/wavparse/gstwavparse.c: (uint64_ceiling_scale_int),
(uint64_ceiling_scale), (gst_wavparse_calculate_duration),
(gst_wavparse_stream_headers):
Fix the scaling code.
Fix parsing of the INFO chunks, we were reading the wrong number of
bytes.  Fixes #561580.
This commit is contained in:
Wim Taymans 2008-11-20 20:07:26 +00:00
parent fe7d1d7ae0
commit 380b64d670
2 changed files with 13 additions and 3 deletions

View file

@ -1,3 +1,12 @@
2008-11-20 Wim Taymans <wim.taymans@collabora.co.uk>
* gst/wavparse/gstwavparse.c: (uint64_ceiling_scale_int),
(uint64_ceiling_scale), (gst_wavparse_calculate_duration),
(gst_wavparse_stream_headers):
Fix the scaling code.
Fix parsing of the INFO chunks, we were reading the wrong number of
bytes. Fixes #561580.
2008-11-20 Jan Schmidt <jan.schmidt@sun.com>
* gst/matroska/matroska-mux.c:

View file

@ -248,7 +248,7 @@ gst_wavparse_create_sourcepad (GstWavParse * wavparse)
static guint64
uint64_ceiling_scale_int (guint64 val, gint num, gint denom)
{
guint64 result = gst_util_uint64_scale (val, num, denom);
guint64 result = gst_util_uint64_scale_int (val, num, denom);
if (uint64_scale_modulo (val, num, denom) == 0)
return result;
@ -260,7 +260,7 @@ uint64_ceiling_scale_int (guint64 val, gint num, gint denom)
static guint64
uint64_ceiling_scale (guint64 val, guint64 num, guint64 denom)
{
guint64 result = gst_util_uint64_scale_int (val, num, denom);
guint64 result = gst_util_uint64_scale (val, num, denom);
if (uint64_scale_modulo (val, num, denom) == 0)
return result;
@ -1046,6 +1046,7 @@ gst_wavparse_calculate_duration (GstWavParse * wav)
return TRUE;
if (wav->bps > 0) {
GST_INFO_OBJECT (wav, "Got datasize %" G_GUINT64_FORMAT, wav->datasize);
wav->duration =
uint64_ceiling_scale (wav->datasize, GST_SECOND, (guint64) wav->bps);
GST_INFO_OBJECT (wav, "Got duration (bps) %" GST_TIME_FORMAT,
@ -1371,7 +1372,7 @@ gst_wavparse_stream_headers (GstWavParse * wav)
}
switch (ltag) {
case GST_RIFF_LIST_INFO:{
const guint data_size = size - 12;
const guint data_size = size - 4;
GstTagList *new;
GST_INFO_OBJECT (wav, "Have LIST chunk INFO");