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.
This commit is contained in:
Ronald S. Bultje 2004-03-14 05:43:33 +00:00
parent adf3889a89
commit ca3eaf9764
2 changed files with 12 additions and 2 deletions

View file

@ -1,3 +1,12 @@
2004-03-14 Ronald Bultje <rbultje@ronald.bitfreak.net>
* 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 <thaytan@mad.scientist.com> 2004-03-14 Jan Schmidt <thaytan@mad.scientist.com>
* gst/typefind/gsttypefindfunctions.c: (speex_type_find), * gst/typefind/gsttypefindfunctions.c: (speex_type_find),
(plugin_init): (plugin_init):

View file

@ -1451,7 +1451,7 @@ static void qtdemux_parse_trak(GstQTDemux *qtdemux, GNode *trak)
GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET(stsd->data+offset+4)), GST_FOURCC_ARGS (QTDEMUX_FOURCC_GET(stsd->data+offset+4)),
stream->caps); stream->caps);
}else if(stream->subtype == FOURCC_soun){ }else if(stream->subtype == FOURCC_soun){
int version; int version, samplesize;
GST_LOG("st type: " GST_FOURCC_FORMAT "\n", GST_LOG("st type: " GST_FOURCC_FORMAT "\n",
GST_FOURCC_ARGS(QTDEMUX_FOURCC_GET(stsd->data+16+4))); 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)); GST_LOG("n_channels: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 8));
stream->n_channels = 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)); 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("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("packet size: %d\n", QTDEMUX_GUINT16_GET(stsd->data+offset + 14));
GST_LOG("sample rate: %g\n", QTDEMUX_FP32_GET(stsd->data+offset + 16)); 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)); GST_LOG("bytes/sample: %d\n", QTDEMUX_GUINT32_GET(stsd->data+offset + 12));
offset = 68; offset = 68;
} else { } 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; stream->samples_per_packet = 1;
} }