Module: wine Branch: master Commit: 2756bedd8aa0a191f6d3d64d16cb41b8d6331303 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2756bedd8aa0a191f6d3d64d16...
Author: Maarten Lankhorst m.b.lankhorst@gmail.com Date: Tue Mar 18 14:50:55 2008 -0700
winemp3: Skip idv3 header too.
---
dlls/winemp3.acm/mpegl3.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c index 3d18c9e..5020783 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);