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