avformat/dv: about 3 times faster probe
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
dbb41f93c1
commit
76a47d66c4
@ -590,19 +590,21 @@ static int dv_probe(AVProbeData *p)
|
|||||||
if (p->buf_size < 5)
|
if (p->buf_size < 5)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
state = AV_RB32(p->buf);
|
for (i = 0; i < p->buf_size-4; i++) {
|
||||||
for (i = 4; i < p->buf_size; i++) {
|
unsigned state = AV_RB32(p->buf+i);
|
||||||
if ((state & 0xffffff7f) == 0x1f07003f)
|
if ((state & 0x0007f840) == 0x00070000) {
|
||||||
matches++;
|
|
||||||
// any section header, also with seq/chan num != 0,
|
// any section header, also with seq/chan num != 0,
|
||||||
// should appear around every 12000 bytes, at least 10 per frame
|
// should appear around every 12000 bytes, at least 10 per frame
|
||||||
if ((state & 0xff07ff7f) == 0x1f07003f)
|
if ((state & 0xff07ff7f) == 0x1f07003f) {
|
||||||
secondary_matches++;
|
secondary_matches++;
|
||||||
|
if ((state & 0xffffff7f) == 0x1f07003f)
|
||||||
|
matches++;
|
||||||
|
}
|
||||||
if (state == 0x003f0700 || state == 0xff3f0700)
|
if (state == 0x003f0700 || state == 0xff3f0700)
|
||||||
marker_pos = i;
|
marker_pos = i;
|
||||||
if (state == 0xff3f0701 && i - marker_pos == 80)
|
if (state == 0xff3f0701 && i - marker_pos == 80)
|
||||||
matches++;
|
matches++;
|
||||||
state = (state << 8) | p->buf[i];
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matches && p->buf_size / matches < 1024 * 1024) {
|
if (matches && p->buf_size / matches < 1024 * 1024) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user