infer/matchers/
video.rs
1pub 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
13pub 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
43pub fn is_webm(buf: &[u8]) -> bool {
45 buf.len() > 3 && buf[0] == 0x1A && buf[1] == 0x45 && buf[2] == 0xDF && buf[3] == 0xA3
46}
47
48pub 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
64pub 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
76pub 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
91pub 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
101pub fn is_flv(buf: &[u8]) -> bool {
103 buf.len() > 3 && buf[0] == 0x46 && buf[1] == 0x4C && buf[2] == 0x56 && buf[3] == 0x01
104}
105
106pub 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}