[FFmpeg-cvslog] omadec: loosen format probing constraints
David Goldwich
git at videolan.org
Mon Nov 4 22:47:10 CET 2013
ffmpeg | branch: master | David Goldwich <david.goldwich at gmail.com> | Thu Oct 24 15:24:26 2013 +0200| [0a7fef39fc578bd7c90fd2646299f8cad722ecb1] | committer: Anton Khirnov
omadec: loosen format probing constraints
Imporoves detection of some files in the wild:
- ID3v2 a.k.a. "ea3" header is optional.
- Version and flags in ID3v2 header are unspecified.
Signed-off-by: David Goldwich <david.goldwich at gmail.com>
Signed-off-by: Anton Khirnov <anton at khirnov.net>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0a7fef39fc578bd7c90fd2646299f8cad722ecb1
---
libavformat/omadec.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/libavformat/omadec.c b/libavformat/omadec.c
index eeab70e..709a60b 100644
--- a/libavformat/omadec.c
+++ b/libavformat/omadec.c
@@ -446,23 +446,16 @@ static int oma_read_packet(AVFormatContext *s, AVPacket *pkt)
static int oma_read_probe(AVProbeData *p)
{
- const uint8_t *buf;
+ const uint8_t *buf = p->buf;
unsigned tag_len = 0;
- buf = p->buf;
-
- if (p->buf_size < ID3v2_HEADER_SIZE ||
- !ff_id3v2_match(buf, ID3v2_EA3_MAGIC) ||
- buf[3] != 3 || // version must be 3
- buf[4]) // flags byte zero
- return 0;
-
- tag_len = ff_id3v2_tag_len(buf);
+ if (p->buf_size >= ID3v2_HEADER_SIZE && ff_id3v2_match(buf, ID3v2_EA3_MAGIC))
+ tag_len = ff_id3v2_tag_len(buf);
/* This check cannot overflow as tag_len has at most 28 bits */
if (p->buf_size < tag_len + 5)
/* EA3 header comes late, might be outside of the probe buffer */
- return AVPROBE_SCORE_EXTENSION;
+ return tag_len ? AVPROBE_SCORE_EXTENSION : 0;
buf += tag_len;
More information about the ffmpeg-cvslog
mailing list