mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
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:
parent
6f84bbe34e
commit
8aed3176ce
1 changed files with 11 additions and 2 deletions
|
@ -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 ();
|
||||
|
||||
|
|
Loading…
Reference in a new issue