qtdemux: Fix order of bitrates in 'btrt' atom

There seems to be a bug in libmp4v2 that generates a MPEG4BitRateBox as
(bufferSizeDB, avgBitrate, maxBitrate) instead of (bufferSizeDB,
maxBitrate, avgBitrate), according to the spec. I used the mp4file
output while writing this code, so the order is wrong. This patches
fixes that.

https://bugzilla.gnome.org/show_bug.cgi?id=623654
This commit is contained in:
Arun Raghavan 2010-07-06 13:21:19 +05:30 committed by Tim-Philipp Müller
parent 6f84bbe34e
commit 8aed3176ce

View file

@ -5385,12 +5385,21 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
if (size < 12)
break;
max_bitrate = QT_UINT32 (avc_data + 0xc);
avg_bitrate = QT_UINT32 (avc_data + 0x10);
max_bitrate = QT_UINT32 (avc_data + 0x10);
avg_bitrate = QT_UINT32 (avc_data + 0xc);
if (!max_bitrate && !avg_bitrate)
break;
/* Some muxers seem to swap the average and maximum bitrates
* (I'm looking at you, YouTube), so we swap for sanity. */
if (max_bitrate > 0 && max_bitrate < avg_bitrate) {
guint temp = avg_bitrate;
avg_bitrate = max_bitrate;
max_bitrate = temp;
}
if (!list)
list = gst_tag_list_new ();