OSDN Git Service

Move ID3v1 skip from decoder to demuxer
authorClément Bœsch <ubitux@gmail.com>
Fri, 21 Jan 2011 22:55:31 +0000 (23:55 +0100)
committerJanne Grunau <janne-ffmpeg@jannau.net>
Sat, 22 Jan 2011 00:31:57 +0000 (01:31 +0100)
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
libavcodec/mpegaudiodec.c
libavformat/mp3dec.c

index 76fdffb..769be89 100644 (file)
@@ -27,7 +27,6 @@
 #include "avcodec.h"
 #include "get_bits.h"
 #include "dsputil.h"
-#include "libavformat/id3v1.h"
 
 /*
  * TODO:
@@ -2044,13 +2043,6 @@ static int decode_frame(AVCodecContext * avctx,
 
     header = AV_RB32(buf);
     if(ff_mpa_check_header(header) < 0){
-
-        if (buf_size == ID3v1_TAG_SIZE
-            && buf[0] == 'T' && buf[1] == 'A' && buf[2] == 'G') {
-            *data_size = 0;
-            return ID3v1_TAG_SIZE;
-        }
-
         av_log(avctx, AV_LOG_ERROR, "Header missing\n");
         return -1;
     }
index ab6aabe..c06969b 100644 (file)
@@ -174,6 +174,11 @@ static int mp3_read_packet(AVFormatContext *s, AVPacket *pkt)
     if (ret <= 0) {
         return AVERROR(EIO);
     }
+
+    if (ret > ID3v1_TAG_SIZE &&
+        memcmp(&pkt->data[ret - ID3v1_TAG_SIZE], "TAG", 3) == 0)
+        ret -= ID3v1_TAG_SIZE;
+
     /* note: we need to modify the packet size here to handle the last
        packet */
     pkt->size = ret;