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