diff options
author | Alec Murphy <alec@checksum.fail> | 2021-12-17 22:55:34 -0500 |
---|---|---|
committer | Alec Murphy <alec@checksum.fail> | 2021-12-17 22:55:34 -0500 |
commit | ffc88152dc8a2611a66d680952934262ba420a95 (patch) | |
tree | 4253baeab8a9b0980113714001d55eb59cab5cf9 | |
parent | e72117d3b8baeac09d5d18995b3415b4526e847f (diff) |
Skip ID3v2 header in GetMP3BitRateAndSampleRate
-rw-r--r-- | Player.HC | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -38,6 +38,13 @@ class @id3v1 { U8 year[4]; }; +class @id3v2 { + U8 header[3]; + U16 version; + U8 flags; + U32 size; +}; + class @media { U8 title[256]; U8 artist[256]; @@ -459,6 +466,12 @@ U0 PlayerTask() { U0 GetMP3BitRateAndSampleRate() { I64 i = 0; + @id3v2 *tag = player.media.source_data; + if (!MemCmp(player.media.source_data, "ID3", 3)) { + i += tag->size - 10; + if (tag->flags & 1 << 4) + i -= 10; + } while (i < player.media.source_len) { if (player.media.source_data[i] == 0xFF && player.media.source_data[i + 1] & 0xE0) // Frame Sync |