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