Maarten Lankhorst : winemp3: Skip idv3 header too.
Alexandre Julliard
julliard at winehq.org
Wed Mar 19 07:28:15 CDT 2008
Module: wine
Branch: master
Commit: 2756bedd8aa0a191f6d3d64d16cb41b8d6331303
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2756bedd8aa0a191f6d3d64d16cb41b8d6331303
Author: Maarten Lankhorst <m.b.lankhorst at 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);
More information about the wine-cvs
mailing list