Index: patched-ffmpeg-mt/libavformat/mp3.c |
=================================================================== |
--- patched-ffmpeg-mt/libavformat/mp3.c (revision 41250) |
+++ patched-ffmpeg-mt/libavformat/mp3.c (working copy) |
@@ -45,10 +45,12 @@ |
if(ff_id3v2_match(buf0)) { |
buf0 += ff_id3v2_tag_len(buf0); |
} |
+ end = p->buf + p->buf_size - sizeof(uint32_t); |
+ while(buf0 < end && !*buf0) |
+ buf0++; |
max_frames = 0; |
buf = buf0; |
- end = p->buf + p->buf_size - sizeof(uint32_t); |
for(; buf < end; buf= buf2+1) { |
buf2 = buf; |
@@ -147,10 +149,11 @@ |
av_set_pts_info(st, 64, 1, 14112000); |
ff_id3v2_read(s); |
+ off = url_ftell(s->pb); |
+ |
if (!av_metadata_get(s->metadata, "", NULL, AV_METADATA_IGNORE_SUFFIX)) |
ff_id3v1_read(s); |
- off = url_ftell(s->pb); |
if (mp3_parse_vbr_tags(s, st, off) < 0) |
url_fseek(s->pb, off, SEEK_SET); |
@@ -312,7 +315,7 @@ |
while ((t = av_metadata_get(s->metadata, "", t, AV_METADATA_IGNORE_SUFFIX))) { |
uint32_t tag = 0; |
- if (t->key[0] == 'T' && strcmp(t->key, "TSSE")) { |
+ if (t->key[0] == 'T' && strlen(t->key) == 4) { |
int i; |
for (i = 0; *ff_id3v2_tags[i]; i++) |
if (AV_RB32(t->key) == AV_RB32(ff_id3v2_tags[i])) { |
@@ -337,11 +340,6 @@ |
av_free(buf); |
} |
} |
- if(!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { |
- totlen += strlen(LIBAVFORMAT_IDENT) + ID3v2_HEADER_SIZE + 2; |
- id3v2_put_ttag(s, LIBAVFORMAT_IDENT, strlen(LIBAVFORMAT_IDENT) + 1, |
- MKBETAG('T', 'S', 'S', 'E')); |
- } |
cur_pos = url_ftell(s->pb); |
url_fseek(s->pb, size_pos, SEEK_SET); |