From 2756bedd8aa0a191f6d3d64d16cb41b8d6331303 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Tue, 18 Mar 2008 14:50:55 -0700 Subject: [PATCH] winemp3: Skip idv3 header too. --- dlls/winemp3.acm/mpegl3.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c index 3d18c9e9c9..5020783afa 100644 --- a/dlls/winemp3.acm/mpegl3.c +++ b/dlls/winemp3.acm/mpegl3.c @@ -145,6 +145,23 @@ static void mp3_horse(PACMDRVSTREAMINSTANCE adsi, DWORD buffered_during; DWORD buffered_after; + /* Skip leading ID v3 header */ + if (amd->mp.fsizeold == -1 && !strncmp("ID3", (char*)src, 3)) + { + UINT length = 10; + const char *header = (char *)src; + + TRACE("Found ID3 v2.%d.%d\n", header[3], header[4]); + length += (header[6] & 0x7F) << 21; + length += (header[7] & 0x7F) << 14; + length += (header[8] & 0x7F) << 7; + length += (header[9] & 0x7F); + TRACE("Length: %u\n", length); + *nsrc = length; + *ndst = 0; + return; + } + buffered_before = get_num_buffered_bytes(&amd->mp); ret = decodeMP3(&amd->mp, src, *nsrc, dst, *ndst, &size); buffered_during = get_num_buffered_bytes(&amd->mp); -- 2.32.0.93.g670b81a890