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@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
1c736bedd9
commit
0a7fef39fc
@ -446,23 +446,16 @@ static int oma_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
|
|
||||||
static int oma_read_probe(AVProbeData *p)
|
static int oma_read_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
const uint8_t *buf;
|
const uint8_t *buf = p->buf;
|
||||||
unsigned tag_len = 0;
|
unsigned tag_len = 0;
|
||||||
|
|
||||||
buf = p->buf;
|
if (p->buf_size >= ID3v2_HEADER_SIZE && ff_id3v2_match(buf, ID3v2_EA3_MAGIC))
|
||||||
|
tag_len = ff_id3v2_tag_len(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);
|
|
||||||
|
|
||||||
/* This check cannot overflow as tag_len has at most 28 bits */
|
/* This check cannot overflow as tag_len has at most 28 bits */
|
||||||
if (p->buf_size < tag_len + 5)
|
if (p->buf_size < tag_len + 5)
|
||||||
/* EA3 header comes late, might be outside of the probe buffer */
|
/* 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;
|
buf += tag_len;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user