swftools-common
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Swftools-common] [PATCH] Add ID3 tag skipping support in MP3 reader


From: Joel Yliluoma
Subject: [Swftools-common] [PATCH] Add ID3 tag skipping support in MP3 reader
Date: Mon, 17 Mar 2008 13:49:15 +0200 (EET)

This patch adds support for ID3-tagged MP3s.
It skips over the ID3 tags and does not put them in the SWF file generated by 
SWFC.

--- lib/mp3.c~      2008-03-17 13:39:15.368116800 +0200
+++ lib/mp3.c       2008-03-17 13:39:57.598841600 +0200
@@ -75,6 +75,35 @@
         int chanmode;

         if(fread(hdr,1,4,fi) < 4) break;
+ + if(hdr[0] == 'I' && hdr[1] == 'D' && hdr[2] == '3')
+        {
+            /* Skip ID3 header */
+            unsigned id3_size = 0;
+            if(fread(FrameBuf, 1, 6, fi) < 6) break;
+ + id3_size = (FrameBuf[5])
+                     + (FrameBuf[4] << 7)
+                     + (FrameBuf[3] << 14)
+                     + (FrameBuf[2] << 21);
+            fprintf(stderr, "readMP3: skipping ID3 tag (10+%u bytes)\n", 
id3_size);
+            if(fseek(fi, id3_size, SEEK_CUR) < 0)
+            {
+                /* Cannot seek? Try reading. */
+                char* tmpbuf = (char*)malloc(id3_size);
+                int nread=0;
+                if(!tmpbuf)
+                {
+                    fprintf(stderr, "readMP3: fseek and malloc both 
failed?\n");
+                    break;
+                }
+                nread = fread(tmpbuf, 1, id3_size, fi);
+                free(tmpbuf);
+                if(nread < id3_size) break;
+            }
+            continue;
+        }
+
         if(hdr[0] != 0xFF
         || (hdr[1] & 0xE0) != 0xE0)
         {

--
Joel Yliluoma
http://iki.fi/bisqwit/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]