1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

flac demuxer: improve probing

Extend the probe function to validate the STREAMINFO block that must
follow the fLaC ID tag.
This commit is contained in:
Anton Khirnov 2016-07-30 15:14:26 +02:00
parent 5ebef79abe
commit ed1cd81076

View File

@ -177,9 +177,24 @@ static int flac_read_header(AVFormatContext *s)
static int flac_probe(AVProbeData *p)
{
if (p->buf_size < 4 || memcmp(p->buf, "fLaC", 4))
return 0;
return AVPROBE_SCORE_EXTENSION;
/* file header + metadata header + checked bytes of streaminfo */
if (p->buf_size >= 4 + 4 + 13) {
int type = p->buf[4] & 0x7f;
int size = AV_RB24(p->buf + 5);
int min_block_size = AV_RB16(p->buf + 8);
int max_block_size = AV_RB16(p->buf + 10);
int sample_rate = AV_RB24(p->buf + 18) >> 4;
if (!memcmp(p->buf, "fLaC", 4) &&
type == FLAC_METADATA_TYPE_STREAMINFO &&
size == FLAC_STREAMINFO_SIZE &&
min_block_size >= 16 &&
max_block_size >= min_block_size &&
sample_rate && sample_rate <= 655350)
return AVPROBE_SCORE_MAX;
}
return 0;
}
AVInputFormat ff_flac_demuxer = {