aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Murphy <alec@checksum.fail>2021-12-17 22:55:34 -0500
committerAlec Murphy <alec@checksum.fail>2021-12-17 22:55:34 -0500
commitffc88152dc8a2611a66d680952934262ba420a95 (patch)
tree4253baeab8a9b0980113714001d55eb59cab5cf9
parente72117d3b8baeac09d5d18995b3415b4526e847f (diff)
Skip ID3v2 header in GetMP3BitRateAndSampleRate
-rw-r--r--Player.HC13
1 files changed, 13 insertions, 0 deletions
diff --git a/Player.HC b/Player.HC
index b2be10f..8c85973 100644
--- a/Player.HC
+++ b/Player.HC
@@ -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