summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-06-24 02:37:58 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-06-24 02:48:37 +0200
commit89a420b71b531bcd0344f39d0390c26f3e0173ea (patch)
treee67726f35290553b130ca3106657a5dca69ce0ce
parentb23d2bac0d709b5642895d1acdf0cfef689d1ba1 (diff)
avcodec/mpegaudio_parser: Discard ID3v1 tag at the end
Ideally this should be discarded by the demuxer but this is not possible without fully parsing which would be then very similar to this. The current ID3v1 discard code in the demuxer does not work and will be removed in a subsequent commit The discard code could be adjusted if needed to also discard tags at other locations than the end or to limit this possibly to input from the mp3 demuxer or even to move the discarding to the decoder. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/mpegaudio_parser.c9
-rw-r--r--libavcodec/version.h2
-rw-r--r--tests/ref/fate/gapless-mp32
3 files changed, 10 insertions, 3 deletions
diff --git a/libavcodec/mpegaudio_parser.c b/libavcodec/mpegaudio_parser.c
index 58098d89f0..7849fed649 100644
--- a/libavcodec/mpegaudio_parser.c
+++ b/libavcodec/mpegaudio_parser.c
@@ -23,7 +23,7 @@
#include "parser.h"
#include "mpegaudiodecheader.h"
#include "libavutil/common.h"
-
+#include "libavformat/id3v1.h" // for ID3v1_TAG_SIZE
typedef struct MpegAudioParseContext {
ParseContext pc;
@@ -49,6 +49,7 @@ static int mpegaudio_parse(AVCodecParserContext *s1,
uint32_t state= pc->state;
int i;
int next= END_NOT_FOUND;
+ int flush = !buf_size;
for(i=0; i<buf_size; ){
if(s->frame_size){
@@ -113,6 +114,12 @@ static int mpegaudio_parse(AVCodecParserContext *s1,
return buf_size;
}
+ if (flush && buf_size >= ID3v1_TAG_SIZE && memcmp(buf, "TAG", 3) == 0) {
+ *poutbuf = NULL;
+ *poutbuf_size = 0;
+ return next;
+ }
+
*poutbuf = buf;
*poutbuf_size = buf_size;
return next;
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 3f55d0f8d1..c2717557b3 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -30,7 +30,7 @@
#define LIBAVCODEC_VERSION_MAJOR 56
#define LIBAVCODEC_VERSION_MINOR 44
-#define LIBAVCODEC_VERSION_MICRO 100
+#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
diff --git a/tests/ref/fate/gapless-mp3 b/tests/ref/fate/gapless-mp3
index e6a7a3387b..2ce4b8cc0b 100644
--- a/tests/ref/fate/gapless-mp3
+++ b/tests/ref/fate/gapless-mp3
@@ -2,4 +2,4 @@ d5c88cf38416329a052a9b0cb140fb4c *tests/data/fate/gapless-mp3.out-1
c96c3ae7bd3300fd2f4debac222de5b7
3386bc2009b31b7ef39247918cbb02a5 *tests/data/fate/gapless-mp3.out-2
c96c3ae7bd3300fd2f4debac222de5b7
-92e37f050ad4fc817730c8af17ee6d1b *tests/data/fate/gapless-mp3.out-3
+3ce35ec2a9a59b7459ecd6c98d8fa123 *tests/data/fate/gapless-mp3.out-3