2 #------------------------------------------------------------------------------
3 # riff: file(1) magic for RIFF format
6 # http://www.seanet.com/users/matts/riffmci/riffmci.htm
8 # AVI section extended by Patrik Rådman <patrik+file-magic@iki.fi>
10 0 string RIFF RIFF (little-endian) data
12 >8 string PAL \b, palette
13 >>16 leshort x \b, version %d
14 >>18 leshort x \b, %d entries
15 # RIFF Device Independent Bitmap format
16 >8 string RDIB \b, device-independent bitmap
18 >>>30 leshort 12 \b, OS/2 1.x format
19 >>>>34 leshort x \b, %d x
21 >>>30 leshort 64 \b, OS/2 2.x format
22 >>>>34 leshort x \b, %d x
24 >>>30 leshort 40 \b, Windows 3.x format
25 >>>>34 lelong x \b, %d x
29 >8 string RMID \b, MIDI
30 # RIFF Multimedia Movie File format
31 >8 string RMMP \b, multimedia movie
32 # RIFF wrapper for MP3
33 >8 string RMP3 \b, MPEG Layer 3 audio
34 # Microsoft WAVE format (*.wav)
35 >8 string WAVE \b, WAVE audio
37 >>20 leshort 1 \b, Microsoft PCM
38 >>>34 leshort >0 \b, %d bit
39 >>20 leshort 2 \b, Microsoft ADPCM
40 >>20 leshort 6 \b, ITU G.711 A-law
41 >>20 leshort 7 \b, ITU G.711 mu-law
42 >>20 leshort 17 \b, IMA ADPCM
43 >>20 leshort 20 \b, ITU G.723 ADPCM (Yamaha)
44 >>20 leshort 49 \b, GSM 6.10
45 >>20 leshort 64 \b, ITU G.721 ADPCM
46 >>20 leshort 80 \b, MPEG
47 >>20 leshort 85 \b, MPEG Layer 3
48 >>22 leshort =1 \b, mono
49 >>22 leshort =2 \b, stereo
50 >>22 leshort >2 \b, %d channels
53 >8 string CDRA \b, Corel Draw Picture
54 !:mime image/x-coreldraw
55 # AVI == Audio Video Interleave
56 >8 string AVI\040 \b, AVI
57 !:mime video/x-msvideo
60 >>>>&36 lelong x \b, %lu x
62 >>>>&4 lelong >1000000 <1 fps,
63 >>>>&4 lelong 1000000 1.00 fps,
64 >>>>&4 lelong 500000 2.00 fps,
65 >>>>&4 lelong 333333 3.00 fps,
66 >>>>&4 lelong 250000 4.00 fps,
67 >>>>&4 lelong 200000 5.00 fps,
68 >>>>&4 lelong 166667 6.00 fps,
69 >>>>&4 lelong 142857 7.00 fps,
70 >>>>&4 lelong 125000 8.00 fps,
71 >>>>&4 lelong 111111 9.00 fps,
72 >>>>&4 lelong 100000 10.00 fps,
75 >>>>>&-4 lelong >99010
76 >>>>>>&-4 lelong !100000 ~10 fps,
77 >>>>&4 lelong 83333 12.00 fps,
80 >>>>>&-4 lelong >82645
81 >>>>>>&-4 lelong !83333 ~12 fps,
82 >>>>&4 lelong 66667 15.00 fps,
85 >>>>>&-4 lelong >66225
86 >>>>>>&-4 lelong !66667 ~15 fps,
87 >>>>&4 lelong 50000 20.00 fps,
88 >>>>&4 lelong 41708 23.98 fps,
89 >>>>&4 lelong 41667 24.00 fps,
92 >>>>>&-4 lelong >41494
93 >>>>>>&-4 lelong !41708
94 >>>>>>>&-4 lelong !41667 ~24 fps,
95 >>>>&4 lelong 40000 25.00 fps,
98 >>>>>&-4 lelong >39841
99 >>>>>>&-4 lelong !40000 ~25 fps,
100 >>>>&4 lelong 33367 29.97 fps,
101 >>>>&4 lelong 33333 30.00 fps,
104 >>>>>&-4 lelong >33223
105 >>>>>>&-4 lelong !33367
106 >>>>>>>&-4 lelong !33333 ~30 fps,
107 >>>>&4 lelong <32224 >30 fps,
108 ##>>>>&4 lelong x (%lu)
109 ##>>>>&20 lelong x %lu frames,
110 # Note: The tests below assume that the AVI has 1 or 2 streams,
111 # "vids" optionally followed by "auds".
112 # (Should cover 99.9% of all AVIs.)
113 # assuming avih length = 56
115 >>>>96 string strlstrh
116 >>>>>108 string vids video:
117 >>>>>>&0 lelong 0 uncompressed
118 # skip past vids strh
119 >>>>>>(104.l+108) string strf
120 >>>>>>>(104.l+132) lelong 1 RLE 8bpp
121 >>>>>>>(104.l+132) string/c cvid Cinepak
122 >>>>>>>(104.l+132) string/c i263 Intel I.263
123 >>>>>>>(104.l+132) string/c iv32 Indeo 3.2
124 >>>>>>>(104.l+132) string/c iv41 Indeo 4.1
125 >>>>>>>(104.l+132) string/c iv50 Indeo 5.0
126 >>>>>>>(104.l+132) string/c mp42 Microsoft MPEG-4 v2
127 >>>>>>>(104.l+132) string/c mp43 Microsoft MPEG-4 v3
128 >>>>>>>(104.l+132) string/c fmp4 FFMpeg MPEG-4
129 >>>>>>>(104.l+132) string/c mjpg Motion JPEG
130 >>>>>>>(104.l+132) string/c div3 DivX 3
131 >>>>>>>>112 string/c div3 Low-Motion
132 >>>>>>>>112 string/c div4 Fast-Motion
133 >>>>>>>(104.l+132) string/c divx DivX 4
134 >>>>>>>(104.l+132) string/c dx50 DivX 5
135 >>>>>>>(104.l+132) string/c xvid XviD
136 >>>>>>>(104.l+132) string/c h264 H.264
137 >>>>>>>(104.l+132) string/c wmv3 Windows Media Video 9
138 >>>>>>>(104.l+132) string/c h264 X.264 or H.264
139 >>>>>>>(104.l+132) lelong 0
140 ##>>>>>>>(104.l+132) string x (%.4s)
141 # skip past first (video) LIST
142 >>>>(92.l+96) string LIST
143 >>>>>(92.l+104) string strlstrh
144 >>>>>>(92.l+116) string auds \b, audio:
145 # auds strh length = 56:
146 >>>>>>>(92.l+172) string strf
147 >>>>>>>>(92.l+180) leshort 0x0001 uncompressed PCM
148 >>>>>>>>(92.l+180) leshort 0x0002 ADPCM
149 >>>>>>>>(92.l+180) leshort 0x0006 aLaw
150 >>>>>>>>(92.l+180) leshort 0x0007 uLaw
151 >>>>>>>>(92.l+180) leshort 0x0050 MPEG-1 Layer 1 or 2
152 >>>>>>>>(92.l+180) leshort 0x0055 MPEG-1 Layer 3
153 >>>>>>>>(92.l+180) leshort 0x2000 Dolby AC3
154 >>>>>>>>(92.l+180) leshort 0x0161 DivX
155 ##>>>>>>>>(92.l+180) leshort x (0x%.4x)
156 >>>>>>>>(92.l+182) leshort 1 (mono,
157 >>>>>>>>(92.l+182) leshort 2 (stereo,
158 >>>>>>>>(92.l+182) leshort >2 (%d channels,
159 >>>>>>>>(92.l+184) lelong x %d Hz)
160 # auds strh length = 64:
161 >>>>>>>(92.l+180) string strf
162 >>>>>>>>(92.l+188) leshort 0x0001 uncompressed PCM
163 >>>>>>>>(92.l+188) leshort 0x0002 ADPCM
164 >>>>>>>>(92.l+188) leshort 0x0055 MPEG-1 Layer 3
165 >>>>>>>>(92.l+188) leshort 0x2000 Dolby AC3
166 >>>>>>>>(92.l+188) leshort 0x0161 DivX
167 ##>>>>>>>>(92.l+188) leshort x (0x%.4x)
168 >>>>>>>>(92.l+190) leshort 1 (mono,
169 >>>>>>>>(92.l+190) leshort 2 (stereo,
170 >>>>>>>>(92.l+190) leshort >2 (%d channels,
171 >>>>>>>>(92.l+192) lelong x %d Hz)
172 # Animated Cursor format
173 >8 string ACON \b, animated cursor
174 # SoundFont 2 <mpruett@sgi.com>
175 >8 string sfbk SoundFont/Bank
176 # MPEG-1 wrapped in a RIFF, apparently
177 >8 string CDXA \b, wrapped MPEG-1 (CDXA)
178 >8 string 4XMV \b, 4X Movie file
181 # XXX - some of the below may only appear in little-endian form.
183 # Also "MV93" appears to be for one form of Macromedia Director
184 # files, and "GDMF" appears to be another multimedia format.
186 0 string RIFX RIFF (big-endian) data
187 # RIFF Palette format
188 >8 string PAL \b, palette
189 >>16 beshort x \b, version %d
190 >>18 beshort x \b, %d entries
191 # RIFF Device Independent Bitmap format
192 >8 string RDIB \b, device-independent bitmap
194 >>>30 beshort 12 \b, OS/2 1.x format
195 >>>>34 beshort x \b, %d x
197 >>>30 beshort 64 \b, OS/2 2.x format
198 >>>>34 beshort x \b, %d x
200 >>>30 beshort 40 \b, Windows 3.x format
201 >>>>34 belong x \b, %d x
205 >8 string RMID \b, MIDI
206 # RIFF Multimedia Movie File format
207 >8 string RMMP \b, multimedia movie
208 # Microsoft WAVE format (*.wav)
209 >8 string WAVE \b, WAVE audio
210 >>20 leshort 1 \b, Microsoft PCM
211 >>>34 leshort >0 \b, %d bit
212 >>22 beshort =1 \b, mono
213 >>22 beshort =2 \b, stereo
214 >>22 beshort >2 \b, %d channels
217 >8 string CDRA \b, Corel Draw Picture
218 # AVI == Audio Video Interleave
219 >8 string AVI\040 \b, AVI
220 # Animated Cursor format
221 >8 string ACON \b, animated cursor
222 # Notation Interchange File Format (big-endian only)
223 >8 string NIFF \b, Notation Interchange File Format
224 # SoundFont 2 <mpruett@sgi.com>
225 >8 string sfbk SoundFont/Bank