From 9a78b5acf65b8595bd5c8d87194e2d85091b561a Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sun, 14 Mar 2004 05:43:33 +0000 Subject: [PATCH] gst/qtdemux/qtdemux.c: Fix for obvious mistake, where we first shift the offset and then read a samplesize element as... Original commit message from CVS: * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak): Fix for obvious mistake, where we first shift the offset and then read a samplesize element assuming the old offset. Note that this part still has something weird, i.e. my movies containing those don't actually play well, but at least there's something that looks like sound now. --- ChangeLog | 9 +++++++++ gst/qtdemux/qtdemux.c | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c766ac9ed4..e19ed4f79f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-03-14 Ronald Bultje + + * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak): + Fix for obvious mistake, where we first shift the offset and then + read a samplesize element assuming the old offset. Note that this + part still has something weird, i.e. my movies containing those + don't actually play well, but at least there's something that looks + like sound now. + 2004-03-14 Jan Schmidt * gst/typefind/gsttypefindfunctions.c: (speex_type_find), (plugin_init): diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 8da138a952..4826821b90 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -1451,7 +1451,7 @@ static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak) GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET(stsd->data+offset+4)), stream->caps); }else if(stream->subtype == FOURCC_soun){ - int version; + int version, samplesize; GST_LOG("st type: " GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(stsd->data+16+4))); @@ -1463,6 +1463,7 @@ static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak) GST_LOG("n_channels: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 8)); stream->n_channels = QTDEMUX_GUINT16_GET(stsd->data+offset + 8); GST_LOG("sample_size: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 10)); + samplesize = QTDEMUX_GUINT16_GET(stsd->data+offset + 10); GST_LOG("compression_id: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 12)); GST_LOG("packet size: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 14)); GST_LOG("sample rate: %g\n", QTDEMUX_FP32_GET(stsd->data+offset + 16)); @@ -1478,7 +1479,7 @@ static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak) GST_LOG("bytes/sample: %d\n", QTDEMUX_GUINT32_GET(stsd->data+offset + 12)); offset = 68; } else { - stream->bytes_per_frame = stream->n_channels * QTDEMUX_GUINT16_GET(stsd->data+offset + 10); + stream->bytes_per_frame = stream->n_channels * samplesize / 8; stream->samples_per_packet = 1; }