Commit 2ea38a94 authored by Hendrik Leppkes's avatar Hendrik Leppkes

avformat/mlpdec: consider all valid mlp access units when probing

Fixes probing of truehd/mlp files with a lot of frames in between the
major sync frames. The spec allows a distance of up to 128 frames in
between major sync frames, which leads to the probing code not reaching
the desired score.
parent aa427537
......@@ -29,16 +29,19 @@ static int av_always_inline mlp_thd_probe(AVProbeData *p, uint32_t sync)
{
const uint8_t *buf, *last_buf = p->buf, *end = p->buf + p->buf_size;
int frames = 0, valid = 0, size = 0;
int nsubframes = 0;
for (buf = p->buf; buf + 8 <= end; buf++) {
if (AV_RB32(buf + 4) == sync) {
frames++;
if (last_buf + size == buf) {
valid++;
valid += 1 + nsubframes / 8;
}
nsubframes = 0;
last_buf = buf;
size = (AV_RB16(buf) & 0xfff) * 2;
} else if (buf - last_buf == size) {
nsubframes++;
size += (AV_RB16(buf) & 0xfff) * 2;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment