mirror of
https://github.com/taglib/taglib.git
synced 2025-05-27 21:20:26 -04:00
Update mp4properties.cpp (#893)
When parsing mp4 media header version 1 (mdhd) atoms, the timescale (unit) is parsed as a `LongLong` (8 bytes), but instead should be a `UInt` (4 bytes). This results in an incorrect timescale, and also pushes the offset of the duration (length) off by 4 bytes. The end result being that the AudioProperties track length for mp4's with mdhd v1 comes back as 0. See: https://wiki.multimedia.cx/index.php/QuickTime_container | Entry | Bytes (v0) | Bytes (v1) | | :--- | :---: | :---: | | size | 4 | 4 | | type | 4 | 4 | | version | 1 | 1 | | flags | 3 | 3 | | creation time* | 4 | **8** | | modification time* | 4 | **8** | | time scale | 4 | 4 | | duration* | 4 | **8** | | language | 2 | 2 | | quality | 2 | 2 |
This commit is contained in:
parent
660748210f
commit
6455671ece
@ -175,8 +175,8 @@ MP4::Properties::read(File *file, Atoms *atoms)
|
||||
debug("MP4: Atom 'trak.mdia.mdhd' is smaller than expected");
|
||||
return;
|
||||
}
|
||||
unit = data.toLongLong(28U);
|
||||
length = data.toLongLong(36U);
|
||||
unit = data.toUInt(28U);
|
||||
length = data.toLongLong(32U);
|
||||
}
|
||||
else {
|
||||
if(data.size() < 24 + 8) {
|
||||
|
Loading…
Reference in New Issue
Block a user