infer/matchers/
video.rs

1/// Returns whether a buffer is M4V video data.
2pub fn is_m4v(buf: &[u8]) -> bool {
3    buf.len() > 10
4        && buf[4] == 0x66
5        && buf[5] == 0x74
6        && buf[6] == 0x79
7        && buf[7] == 0x70
8        && buf[8] == 0x4D
9        && buf[9] == 0x34
10        && buf[10] == 0x56
11}
12
13/// Returns whether a buffer is MKV video data.
14pub fn is_mkv(buf: &[u8]) -> bool {
15    (buf.len() > 15
16        && buf[0] == 0x1A
17        && buf[1] == 0x45
18        && buf[2] == 0xDF
19        && buf[3] == 0xA3
20        && buf[4] == 0x93
21        && buf[5] == 0x42
22        && buf[6] == 0x82
23        && buf[7] == 0x88
24        && buf[8] == 0x6D
25        && buf[9] == 0x61
26        && buf[10] == 0x74
27        && buf[11] == 0x72
28        && buf[12] == 0x6F
29        && buf[13] == 0x73
30        && buf[14] == 0x6B
31        && buf[15] == 0x61)
32        || (buf.len() > 38
33            && buf[31] == 0x6D
34            && buf[32] == 0x61
35            && buf[33] == 0x74
36            && buf[34] == 0x72
37            && buf[35] == 0x6f
38            && buf[36] == 0x73
39            && buf[37] == 0x6B
40            && buf[38] == 0x61)
41}
42
43/// Returns whether a buffer is WEBM video data.
44pub fn is_webm(buf: &[u8]) -> bool {
45    buf.len() > 3 && buf[0] == 0x1A && buf[1] == 0x45 && buf[2] == 0xDF && buf[3] == 0xA3
46}
47
48/// Returns whether a buffer is Quicktime MOV video data.
49pub fn is_mov(buf: &[u8]) -> bool {
50    buf.len() > 15
51        && ((buf[0] == 0x0
52            && buf[1] == 0x0
53            && buf[2] == 0x0
54            && buf[3] == 0x14
55            && buf[4] == 0x66
56            && buf[5] == 0x74
57            && buf[6] == 0x79
58            && buf[7] == 0x70)
59            || (buf[4] == 0x6d && buf[5] == 0x6f && buf[6] == 0x6f && buf[7] == 0x76)
60            || (buf[4] == 0x6d && buf[5] == 0x64 && buf[6] == 0x61 && buf[7] == 0x74)
61            || (buf[12] == 0x6d && buf[13] == 0x64 && buf[14] == 0x61 && buf[15] == 0x74))
62}
63
64/// Returns whether a buffer is AVI video data.
65pub fn is_avi(buf: &[u8]) -> bool {
66    buf.len() > 10
67        && buf[0] == 0x52
68        && buf[1] == 0x49
69        && buf[2] == 0x46
70        && buf[3] == 0x46
71        && buf[8] == 0x41
72        && buf[9] == 0x56
73        && buf[10] == 0x49
74}
75
76/// Returns whether a buffer is WMV video data.
77pub fn is_wmv(buf: &[u8]) -> bool {
78    buf.len() > 9
79        && buf[0] == 0x30
80        && buf[1] == 0x26
81        && buf[2] == 0xB2
82        && buf[3] == 0x75
83        && buf[4] == 0x8E
84        && buf[5] == 0x66
85        && buf[6] == 0xCF
86        && buf[7] == 0x11
87        && buf[8] == 0xA6
88        && buf[9] == 0xD9
89}
90
91/// Returns whether a buffer is MPEG video data.
92pub fn is_mpeg(buf: &[u8]) -> bool {
93    buf.len() > 3
94        && buf[0] == 0x0
95        && buf[1] == 0x0
96        && buf[2] == 0x1
97        && buf[3] >= 0xb0
98        && buf[3] <= 0xbf
99}
100
101/// Returns whether a buffer is FLV video data.
102pub fn is_flv(buf: &[u8]) -> bool {
103    buf.len() > 3 && buf[0] == 0x46 && buf[1] == 0x4C && buf[2] == 0x56 && buf[3] == 0x01
104}
105
106/// Returns whether a buffer is MP4 video data.
107pub fn is_mp4(buf: &[u8]) -> bool {
108    buf.len() > 11
109        && (buf[4] == b'f' && buf[5] == b't' && buf[6] == b'y' && buf[7] == b'p')
110        && ((buf[8] == b'a' && buf[9] == b'v' && buf[10] == b'c' && buf[11] == b'1')
111            || (buf[8] == b'd' && buf[9] == b'a' && buf[10] == b's' && buf[11] == b'h')
112            || (buf[8] == b'i' && buf[9] == b's' && buf[10] == b'o' && buf[11] == b'2')
113            || (buf[8] == b'i' && buf[9] == b's' && buf[10] == b'o' && buf[11] == b'3')
114            || (buf[8] == b'i' && buf[9] == b's' && buf[10] == b'o' && buf[11] == b'4')
115            || (buf[8] == b'i' && buf[9] == b's' && buf[10] == b'o' && buf[11] == b'5')
116            || (buf[8] == b'i' && buf[9] == b's' && buf[10] == b'o' && buf[11] == b'6')
117            || (buf[8] == b'i' && buf[9] == b's' && buf[10] == b'o' && buf[11] == b'm')
118            || (buf[8] == b'm' && buf[9] == b'm' && buf[10] == b'p' && buf[11] == b'4')
119            || (buf[8] == b'm' && buf[9] == b'p' && buf[10] == b'4' && buf[11] == b'1')
120            || (buf[8] == b'm' && buf[9] == b'p' && buf[10] == b'4' && buf[11] == b'2')
121            || (buf[8] == b'm' && buf[9] == b'p' && buf[10] == b'4' && buf[11] == b'v')
122            || (buf[8] == b'm' && buf[9] == b'p' && buf[10] == b'7' && buf[11] == b'1')
123            || (buf[8] == b'M' && buf[9] == b'S' && buf[10] == b'N' && buf[11] == b'V')
124            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'A' && buf[11] == b'S')
125            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'S' && buf[11] == b'C')
126            || (buf[8] == b'N' && buf[9] == b'S' && buf[10] == b'D' && buf[11] == b'C')
127            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'S' && buf[11] == b'H')
128            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'S' && buf[11] == b'M')
129            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'S' && buf[11] == b'P')
130            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'S' && buf[11] == b'S')
131            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'X' && buf[11] == b'C')
132            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'X' && buf[11] == b'H')
133            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'X' && buf[11] == b'M')
134            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'X' && buf[11] == b'P')
135            || (buf[8] == b'N' && buf[9] == b'D' && buf[10] == b'X' && buf[11] == b'S')
136            || (buf[8] == b'F' && buf[9] == b'4' && buf[10] == b'V' && buf[11] == b' ')
137            || (buf[8] == b'F' && buf[9] == b'4' && buf[10] == b'P' && buf[11] == b' '))
138}