summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/dv.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/libavformat/dv.c b/libavformat/dv.c
index 7b4cb0b093..820c3b5cec 100644
--- a/libavformat/dv.c
+++ b/libavformat/dv.c
@@ -474,12 +474,30 @@ static int dv_read_close(AVFormatContext *s)
return 0;
}
+static int dv_probe(AVProbeData *p)
+{
+ unsigned state;
+ int i;
+
+ if (p->buf_size < 5)
+ return 0;
+
+ state = AV_RB32(p->buf);
+ for (i = 4; i < p->buf_size; i++) {
+ if ((state & 0xffffff7f) == 0x1f07003f)
+ return AVPROBE_SCORE_MAX*3/4; // not max to avoid dv in mov to match
+ state = (state << 8) | p->buf[i];
+ }
+
+ return 0;
+}
+
#if CONFIG_DV_DEMUXER
AVInputFormat dv_demuxer = {
"dv",
NULL_IF_CONFIG_SMALL("DV video format"),
sizeof(RawDVContext),
- NULL,
+ dv_probe,
dv_read_header,
dv_read_packet,
dv_read_close,