vendor/file: upgrade from 5.40 to 5.41
[dragonfly.git] / contrib / file / magic / Magdir / riff
1
2 #------------------------------------------------------------------------------
3 # $File: riff,v 1.43 2021/04/26 15:56:00 christos Exp $
4 # riff:  file(1) magic for RIFF format
5 # See
6 #
7 #       https://www.seanet.com/users/matts/riffmci/riffmci.htm
8 #       http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf
9 #       https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
10 #
11
12 # audio format tag. Assume limits: max 1024 bit, 128 channels, 1 MHz
13 0   name    riff-wave
14 >0      leshort         0x01            \b, Microsoft PCM
15 >>14    leshort         >0
16 >>>14   leshort         <1024   \b, %d bit
17 >0      leshort         0x02            \b, Microsoft ADPCM
18 >0      leshort         0x03            \b, IEEE Float
19 >0      leshort         0x04            \b, Compaq VSELP
20 >0      leshort         0x05            \b, IBM CVSD
21 >0      leshort         0x06            \b, ITU G.711 A-law
22 >0      leshort         0x07            \b, ITU G.711 mu-law
23 >0      leshort         0x08            \b, Microsoft DTS
24 >0      leshort         0x10            \b, OKI ADPCM
25 >0      leshort         0x11            \b, IMA ADPCM
26 >0      leshort         0x12            \b, MediaSpace ADPCM
27 >0      leshort         0x13            \b, Sierra ADPCM
28 >0      leshort         0x14            \b, ITU G.723 ADPCM (Yamaha)
29 >0      leshort         0x15            \b, DSP Solutions DIGISTD
30 >0      leshort         0x16            \b, DSP Solutions DIGIFIX
31 >0      leshort         0x17            \b, Dialogic OKI ADPCM
32 >0      leshort         0x18            \b, MediaVision ADPCM
33 >0      leshort         0x19            \b, HP CU
34 >0      leshort         0x20            \b, Yamaha ADPCM
35 >0      leshort         0x21            \b, Speech Compression SONARC
36 >0      leshort         0x22            \b, DSP Group True Speech
37 >0      leshort         0x23            \b, Echo Speech EchoSC1
38 >0      leshort         0x24            \b, AudioFile AF36
39 >0      leshort         0x25            \b, APTX
40 >0      leshort         0x26            \b, AudioFile AF10
41 >0      leshort         0x27            \b, Prosody 1612
42 >0      leshort         0x28            \b, LRC
43 >0      leshort         0x30            \b, Dolby AC2
44 >0      leshort         0x31            \b, GSM 6.10
45 >0      leshort         0x32            \b, MSN Audio
46 >0      leshort         0x33            \b, Antex ADPCME
47 >0      leshort         0x34            \b, Control Res VQLPC
48 >0      leshort         0x35            \b, Digireal
49 >0      leshort         0x36            \b, DigiADPCM
50 >0      leshort         0x37            \b, Control Res CR10
51 >0      leshort         0x38            \b, NMS VBXADPCM
52 >0      leshort         0x39            \b, Roland RDAC
53 >0      leshort         0x3A            \b, Echo Speech EchoSC3
54 >0      leshort         0x3B            \b, Rockwell ADPCM
55 >0      leshort         0x3C            \b, Rockwell Digitalk
56 >0      leshort         0x3D            \b, Xebec
57 >0      leshort         0x40            \b, ITU G.721 ADPCM
58 >0      leshort         0x41            \b, ITU G.728 CELP
59 >0      leshort         0x42            \b, MSG723
60 >0      leshort         0x50            \b, MPEG
61 >0      leshort         0x52            \b, RT24
62 >0      leshort         0x53            \b, PAC
63 >0      leshort         0x55            \b, MPEG Layer 3
64 >0      leshort         0x59            \b, Lucent G.723
65 >0      leshort         0x60            \b, Cirrus
66 >0      leshort         0x61            \b, ESPCM
67 >0      leshort         0x62            \b, Voxware
68 >0      leshort         0x63            \b, Canopus Atrac
69 >0      leshort         0x64            \b, ITU G.726 ADPCM
70 >0      leshort         0x65            \b, ITU G.722 ADPCM
71 >0      leshort         0x66            \b, DSAT
72 >0      leshort         0x67            \b, DSAT Display
73 >0      leshort         0x69            \b, Voxware Byte Aligned
74 >0      leshort         0x70            \b, Voxware AC8
75 >0      leshort         0x71            \b, Voxware AC10
76 >0      leshort         0x72            \b, Voxware AC16
77 >0      leshort         0x73            \b, Voxware AC20
78 >0      leshort         0x74            \b, Voxware MetaVoice
79 >0      leshort         0x75            \b, Voxware MetaSound
80 >0      leshort         0x76            \b, Voxware RT29HW
81 >0      leshort         0x77            \b, Voxware VR12
82 >0      leshort         0x78            \b, Voxware VR18
83 >0      leshort         0x79            \b, Voxware TQ40
84 >0      leshort         0x80            \b, Softsound
85 >0      leshort         0x81            \b, Voxware TQ60
86 >0      leshort         0x82            \b, MSRT24
87 >0      leshort         0x83            \b, ITU G.729A
88 >0      leshort         0x84            \b, MVI MV12
89 >0      leshort         0x85            \b, DF G.726
90 >0      leshort         0x86            \b, DF GSM610
91 >0      leshort         0x88            \b, ISIAudio
92 >0      leshort         0x89            \b, Onlive
93 >0      leshort         0x91            \b, SBC24
94 >0      leshort         0x92            \b, Dolby AC3 S/PDIF
95 >0      leshort         0x97            \b, ZyXEL ADPCM
96 >0      leshort         0x98            \b, Philips LPCBB
97 >0      leshort         0x99            \b, Packed
98 >0      leshort         0x100           \b, Rhetorex ADPCM
99 >0      leshort         0x101           \b, BeCubed Software IRAT
100 >0      leshort         0x111           \b, Vivo G.723
101 >0      leshort         0x112           \b, Vivo Siren
102 >0      leshort         0x123           \b, Digital G.723
103 >0      leshort         0x200           \b, Creative ADPCM
104 >0      leshort         0x202           \b, Creative FastSpeech8
105 >0      leshort         0x203           \b, Creative FastSpeech10
106 >0      leshort         0x220           \b, Quarterdeck
107 >0      leshort         0x300           \b, FM Towns Snd
108 >0      leshort         0x400           \b, BTV Digital
109 >0      leshort         0x680           \b, VME VMPCM
110 >0      leshort         0x1000          \b, OLIGSM
111 >0      leshort         0x1001          \b, OLIADPCM
112 >0      leshort         0x1002          \b, OLICELP
113 >0      leshort         0x1003          \b, OLISBC
114 >0      leshort         0x1004          \b, OLIOPR
115 >0      leshort         0x1100          \b, LH Codec
116 >0      leshort         0x1400          \b, Norris
117 >0      leshort         0x1401          \b, ISIAudio
118 >0      leshort         0x1500          \b, Soundspace Music Compression
119 >0      leshort         0x2000          \b, AC3 DVM
120 >0      leshort         0x2001          \b, DTS
121 >2      leshort         =1              \b, mono
122 >2      leshort         =2              \b, stereo
123 >2      leshort         >2
124 >>2     leshort         <128    \b, %d channels
125 >4      lelong          >0
126 >>4     lelong          <1000000        %d Hz
127
128 # try to find "fmt "
129 0   name    riff-walk
130 >0  string  fmt\x20
131 >>4 lelong  >15
132 >>>8 use    riff-wave
133 >0  string  LIST
134 >>&(4.l+4)  use riff-walk
135 >0  string  DISP
136 >>&(4.l+4)  use riff-walk
137 >0  string  bext
138 >>&(4.l+4)  use riff-walk
139 >0  string  Fake
140 >>&(4.l+4)  use riff-walk
141 >0  string  fact
142 >>&(4.l+4)  use riff-walk
143 >0  string  VP8
144 >>11            byte            0x9d
145 >>>12           byte            0x01
146 >>>>13          byte            0x2a    \b, VP8 encoding
147 >>>>>14         leshort&0x3fff  x       \b, %d
148 >>>>>16         leshort&0x3fff  x       \bx%d, Scaling:
149 >>>>>14         leshort&0xc000  0x0000  \b [none]
150 >>>>>14         leshort&0xc000  0x1000  \b [5/4]
151 >>>>>14         leshort&0xc000  0x2000  \b [5/3]
152 >>>>>14         leshort&0xc000  0x3000  \b [2]
153 >>>>>14         leshort&0xc000  0x0000  \bx[none]
154 >>>>>14         leshort&0xc000  0x1000  \bx[5/4]
155 >>>>>14         leshort&0xc000  0x2000  \bx[5/3]
156 >>>>>14         leshort&0xc000  0x3000  \bx[2]
157 >>>>>15         byte&0x80       =0x00   \b, YUV color
158 >>>>>15         byte&0x80       =0x80   \b, bad color specification
159 >>>>>15         byte&0x40       =0x40   \b, no clamping required
160 >>>>>15         byte&0x40       =0x00   \b, decoders should clamp
161 #>0  string  x          we got %s
162 #>>&(4.l+4)  use riff-walk
163
164 # AVI section extended by Patrik Radman <patrik+file-magic@iki.fi>
165 #
166 0       string          RIFF            RIFF (little-endian) data
167 # RIFF Palette format
168 # Update: Joerg Jenderek
169 # URL: https://en.wikipedia.org/wiki/Resource_Interchange_File_Format
170 # Reference: https://worms2d.info/Palette_file
171 # WAVE/AVI codec registry: https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
172 >8      string          PAL\            \b, palette
173 !:mime  application/x-riff
174 # color palette by Microsoft Corporation
175 !:ext   pal
176 # file size =  chunk size + 8 in most cases
177 >>4     ulelong+8       x               \b, %u bytes
178 # Extended PAL Format
179 >>12    string          plth            \b, extended
180 # Simple PAL Format
181 >>12    string          data            
182 # data chunk size = color entries * 4 + 4 + sometimes extra (4) appended bytes
183 >>>16   ulelong         x               \b, data size %u
184 # palVersion is always 0x0300
185 #>>>20  leshort         x               \b, version %#4.4x
186 # palNumEntries specifies the number of palette color entries
187 >>>22   uleshort        x               \b, %u entries
188 # after palPalEntry sized (number of color entries * 4 ) vector
189 >>>(22.s*4)     ubequad x               
190 # jump relative 22 ( 8 + 16) bytes forward points after end of file or to
191 # appended extra bytes like in http://safecolours.rigdenage.com/set(ms).zip/Protan(MS).pal
192 >>>>&16         ubelong x               \b, extra bytes
193 >>>>>&-4        ubelong >0              %#8.8x
194 # RIFF Device Independent Bitmap format
195 # URL: http://fileformats.archiveteam.org/wiki/RDIB
196 >8      string          RDIB            \b, device-independent bitmap
197 !:ext   rdi/dib
198 >>16    string          BM
199 >>>30   leshort         12              \b, OS/2 1.x format
200 >>>>34  leshort         x               \b, %d x
201 >>>>36  leshort         x               %d
202 >>>30   leshort         64              \b, OS/2 2.x format
203 >>>>34  leshort         x               \b, %d x
204 >>>>36  leshort         x               %d
205 >>>30   leshort         40              \b, Windows 3.x format
206 >>>>34  lelong          x               \b, %d x
207 >>>>38  lelong          x               %d x
208 >>>>44  leshort         x               %d
209 # RIFF MIDI format
210 # URL:  http://fileformats.archiveteam.org/wiki/RIFF_MIDI
211 >8      string          RMID            \b, MIDI
212 # http://extension.nirsoft.net/rmi
213 !:mime  audio/mid
214 #!:mime audio/x-rmid
215 !:ext   rmi
216 # RIFF Multimedia Movie File format
217 # URL:  http://fileformats.archiveteam.org/wiki/RIFF_Multimedia_Movie
218 >8      string          RMMP            \b, multimedia movie
219 !:mime  video/x-mmm
220 !:ext   mmm
221 # RIFF wrapper for MP3
222 >8      string          RMP3            \b, MPEG Layer 3 audio
223 #!:mime audio/x-rmp3
224 # Microsoft WAVE format (*.wav)
225 # URL:          http://fileformats.archiveteam.org/wiki/WAV
226 >8      string          WAVE            \b, WAVE audio
227 #!:mime audio/vnd.wave
228 !:mime  audio/x-wav
229 # https://www.macdisk.com/macsigen.php
230 #!:apple        ????WAVE
231 !:ext   wav/wave
232 >>12    string  >\0
233 >>>12   use     riff-walk
234 # Update:       Joerg Jenderek
235 # lower case for Corel Draw version 8 Bidi
236 >8      string/c        cdr
237 # skip Corel CCX Clipart
238 >>8     string          !CDRXcont
239 # Corel Draw Picture
240 >>>0    use     corel-draw
241 # URL:          http://fileformats.archiveteam.org/wiki/CCX_(Corel)
242 # Reference:    http://mark0.net/download/triddefs_xml.7z/defs/c/ccx-corel.trid.xml 
243 >>8     string          =CDRXcont       \b, Corel Clipart
244 !:mime  application/x-corel-ccx
245 !:ext   ccx
246 # 3rd chunk data {Corel\040Binary\040Meta\040File}
247 #>>>20  string          x               \b, 3rd '%-s'
248 >>>4    ulelong+8       x               \b, %u bytes
249 # From:         Joerg Jenderek
250 # URL:          https://en.wikipedia.org/wiki/CorelDRAW
251 # Reference:    http://fileformats.archiveteam.org/wiki/CorelDRAW
252 # Picture templates created by newer software start with RIFF type CDT
253 >8      string          CDT
254 >>0     use             corel-draw
255 # Picture templates with version 4.4
256 >8      string          CDST
257 >>0     use             corel-draw
258 # pattern created by newer software start with RIFF type PAT
259 >8      string          PAT
260 >>0     use             corel-draw
261 # From:         Joerg Jenderek
262 # URL:          https://en.wikipedia.org/wiki/Corel_Designer
263 # Reference:    http://fileformats.archiveteam.org/wiki/Corel_Designer
264 >8      string          DES
265 >>8     string          !DESC
266 >>>0    use             corel-des
267 # Corel Draw templates with version 12.5 or Corel Designer illustration 12
268 >>8     string          =DESC
269 # MORE TESTS NEEDED HERE!
270 #>>>0   use             corel-des
271 #>>>0   use             corel-draw
272 >8      string          NUNDROOT        \b, Steinberg CuBase
273 # AVI == Audio Video Interleave
274 # Reference:    http://fileformats.archiveteam.org/wiki/AVI
275 >8      string          AVI\040         \b, AVI
276 # https://reposcope.com/mimetype/video/x-msvideo
277 !:mime  video/x-msvideo
278 # https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
279 #!:mime video/vnd.avi
280 !:ext   avi/divx
281 >>12    string          LIST
282 >>>20   string          hdrlavih
283 >>>>&36 lelong          x               \b, %u x
284 >>>>&40 lelong          x               %u,
285 >>>>&4  lelong          >1000000        <1 fps,
286 >>>>&4  lelong          1000000         1.00 fps,
287 >>>>&4  lelong          500000          2.00 fps,
288 >>>>&4  lelong          333333          3.00 fps,
289 >>>>&4  lelong          250000          4.00 fps,
290 >>>>&4  lelong          200000          5.00 fps,
291 >>>>&4  lelong          166667          6.00 fps,
292 >>>>&4  lelong          142857          7.00 fps,
293 >>>>&4  lelong          125000          8.00 fps,
294 >>>>&4  lelong          111111          9.00 fps,
295 >>>>&4  lelong          100000          10.00 fps,
296 # ]9.9,10.1[
297 >>>>&4  lelong          <101010
298 >>>>>&-4        lelong  >99010
299 >>>>>>&-4       lelong  !100000         ~10 fps,
300 >>>>&4  lelong          83333           12.00 fps,
301 # ]11.9,12.1[
302 >>>>&4  lelong          <84034
303 >>>>>&-4        lelong  >82645
304 >>>>>>&-4       lelong  !83333          ~12 fps,
305 >>>>&4  lelong          66667           15.00 fps,
306 # ]14.9,15.1[
307 >>>>&4  lelong          <67114
308 >>>>>&-4        lelong  >66225
309 >>>>>>&-4       lelong  !66667          ~15 fps,
310 >>>>&4  lelong          50000           20.00 fps,
311 >>>>&4  lelong          41708           23.98 fps,
312 >>>>&4  lelong          41667           24.00 fps,
313 # ]23.9,24.1[
314 >>>>&4  lelong          <41841
315 >>>>>&-4        lelong  >41494
316 >>>>>>&-4       lelong  !41708
317 >>>>>>>&-4      lelong  !41667          ~24 fps,
318 >>>>&4  lelong          40000           25.00 fps,
319 # ]24.9,25.1[
320 >>>>&4  lelong          <40161
321 >>>>>&-4        lelong  >39841
322 >>>>>>&-4       lelong  !40000          ~25 fps,
323 >>>>&4  lelong          33367           29.97 fps,
324 >>>>&4  lelong          33333           30.00 fps,
325 # ]29.9,30.1[
326 >>>>&4  lelong          <33445
327 >>>>>&-4        lelong  >33223
328 >>>>>>&-4       lelong  !33367
329 >>>>>>>&-4      lelong  !33333          ~30 fps,
330 >>>>&4  lelong          <32224          >30 fps,
331 ##>>>>&4  lelong          x               (%lu)
332 ##>>>>&20 lelong          x               %lu frames,
333 # Note: The tests below assume that the AVI has 1 or 2 streams,
334 #       "vids" optionally followed by "auds".
335 #       (Should cover 99.9% of all AVIs.)
336 # assuming avih length = 56
337 >>>88   string  LIST
338 >>>>96  string  strlstrh
339 >>>>>108        string  vids    video:
340 >>>>>>&0        lelong  0               uncompressed
341 # skip past vids strh
342 >>>>>>(104.l+108)       string  strf
343 >>>>>>>(104.l+132)      lelong          1       RLE 8bpp
344 >>>>>>>(104.l+132)      string/c        anim    Intel RDX
345 >>>>>>>(104.l+132)      string/c        aur2    AuraVision Aura 2
346 >>>>>>>(104.l+132)      string/c        aura    AuraVision Aura
347 >>>>>>>(104.l+132)      string/c        bt20    Brooktree MediaStream
348 >>>>>>>(104.l+132)      string/c        btcv    Brooktree Composite Video
349 >>>>>>>(104.l+132)      string/c        cc12    Intel YUV12
350 >>>>>>>(104.l+132)      string/c        cdvc    Canopus DV
351 >>>>>>>(104.l+132)      string/c        cham    Winnov Caviara Cham
352 >>>>>>>(104.l+132)      string/c        cljr    Proprietary YUV 4 pixels
353 >>>>>>>(104.l+132)      string/c        cmyk    Common Data Format in Printing
354 >>>>>>>(104.l+132)      string/c        cpla    Weitek 4:2:0 YUV Planar
355 >>>>>>>(104.l+132)      string/c        cvid    Cinepak
356 >>>>>>>(104.l+132)      string/c        cwlt    Microsoft Color WLT DIB
357 >>>>>>>(104.l+132)      string/c        cyuv    Creative Labs YUV
358 >>>>>>>(104.l+132)      string/c        d261    H.261
359 >>>>>>>(104.l+132)      string/c        d263    H.263
360 >>>>>>>(104.l+132)      string/c        duck    TrueMotion 1.0
361 >>>>>>>(104.l+132)      string/c        dve2    DVE-2 Videoconferencing
362 >>>>>>>(104.l+132)      string/c        fljp    Field Encoded Motion JPEG
363 >>>>>>>(104.l+132)      string/c        fvf1    Fractal Video Frame
364 >>>>>>>(104.l+132)      string/c        gwlt    Microsoft Greyscale WLT DIB
365 >>>>>>>(104.l+132)      string/c        h260    H.260
366 >>>>>>>(104.l+132)      string/c        h261    H.261
367 >>>>>>>(104.l+132)      string/c        h262    H.262
368 >>>>>>>(104.l+132)      string/c        h263    H.263
369 >>>>>>>(104.l+132)      string/c        h264    H.264
370 >>>>>>>(104.l+132)      string/c        h265    H.265
371 >>>>>>>(104.l+132)      string/c        h266    H.266
372 >>>>>>>(104.l+132)      string/c        h267    H.267
373 >>>>>>>(104.l+132)      string/c        h268    H.268
374 >>>>>>>(104.l+132)      string/c        h269    H.269
375 >>>>>>>(104.l+132)      string/c        i263    Intel I.263
376 >>>>>>>(104.l+132)      string/c        i420    Intel Indeo 4
377 >>>>>>>(104.l+132)      string/c        ian     Intel RDX
378 >>>>>>>(104.l+132)      string/c        iclb    CellB Videoconferencing Codec
379 >>>>>>>(104.l+132)      string/c        ilvc    Intel Layered Video
380 >>>>>>>(104.l+132)      string/c        ilvr    ITU-T H.263+
381 >>>>>>>(104.l+132)      string/c        iraw    Intel YUV Uncompressed
382 >>>>>>>(104.l+132)      string/c        iv30    Intel Indeo 3
383 >>>>>>>(104.l+132)      string/c        iv31    Intel Indeo 3.1
384 >>>>>>>(104.l+132)      string/c        iv32    Intel Indeo 3.2
385 >>>>>>>(104.l+132)      string/c        iv33    Intel Indeo 3.3
386 >>>>>>>(104.l+132)      string/c        iv34    Intel Indeo 3.4
387 >>>>>>>(104.l+132)      string/c        iv35    Intel Indeo 3.5
388 >>>>>>>(104.l+132)      string/c        iv36    Intel Indeo 3.6
389 >>>>>>>(104.l+132)      string/c        iv37    Intel Indeo 3.7
390 >>>>>>>(104.l+132)      string/c        iv38    Intel Indeo 3.8
391 >>>>>>>(104.l+132)      string/c        iv39    Intel Indeo 3.9
392 >>>>>>>(104.l+132)      string/c        iv40    Intel Indeo 4.0
393 >>>>>>>(104.l+132)      string/c        iv41    Intel Indeo 4.1
394 >>>>>>>(104.l+132)      string/c        iv42    Intel Indeo 4.2
395 >>>>>>>(104.l+132)      string/c        iv43    Intel Indeo 4.3
396 >>>>>>>(104.l+132)      string/c        iv44    Intel Indeo 4.4
397 >>>>>>>(104.l+132)      string/c        iv45    Intel Indeo 4.5
398 >>>>>>>(104.l+132)      string/c        iv46    Intel Indeo 4.6
399 >>>>>>>(104.l+132)      string/c        iv47    Intel Indeo 4.7
400 >>>>>>>(104.l+132)      string/c        iv48    Intel Indeo 4.8
401 >>>>>>>(104.l+132)      string/c        iv49    Intel Indeo 4.9
402 >>>>>>>(104.l+132)      string/c        iv50    Intel Indeo 5.0
403 >>>>>>>(104.l+132)      string/c        mpeg    MPEG 1 Video Frame
404 >>>>>>>(104.l+132)      string/c        mjpg    Motion JPEG
405 >>>>>>>(104.l+132)      string/c        mp42    Microsoft MPEG-4 v2
406 >>>>>>>(104.l+132)      string/c        mp43    Microsoft MPEG-4 v3
407 >>>>>>>(104.l+132)      string/c        mrca    MR Codec
408 >>>>>>>(104.l+132)      string/c        mrle    Run Length Encoding
409 >>>>>>>(104.l+132)      string/c        msvc    Microsoft Video 1
410 >>>>>>>(104.l+132)      string/c        phmo    Photomotion
411 >>>>>>>(104.l+132)      string/c        qpeq    QPEG 1.1 Format Video
412 >>>>>>>(104.l+132)      string/c        rgbt    RGBT
413 >>>>>>>(104.l+132)      string/c        rle4    Run Length Encoded 4
414 >>>>>>>(104.l+132)      string/c        rle8    Run Length Encoded 8
415 >>>>>>>(104.l+132)      string/c        rt21    Intel Indeo 2.1
416 >>>>>>>(104.l+132)      string/c        rvx     Intel RDX
417 >>>>>>>(104.l+132)      string/c        sdcc    Sun Digital Camera Codec
418 >>>>>>>(104.l+132)      string/c        sfmc    Crystal Net SFM Codec
419 >>>>>>>(104.l+132)      string/c        smsc    SMSC
420 >>>>>>>(104.l+132)      string/c        smsd    SMSD
421 >>>>>>>(104.l+132)      string/c        splc    Splash Studios ACM Audio Codec
422 >>>>>>>(104.l+132)      string/c        sqz2    Microsoft VXtreme Video Codec
423 >>>>>>>(104.l+132)      string/c        sv10    Sorenson Video R1
424 >>>>>>>(104.l+132)      string/c        tlms    TeraLogic Motion Intraframe Codec A
425 >>>>>>>(104.l+132)      string/c        tlst    TeraLogic Motion Intraframe Codec B
426 >>>>>>>(104.l+132)      string/c        tm20    TrueMotion 2.0
427 >>>>>>>(104.l+132)      string/c        tmic    TeraLogic Motion Intraframe Codec 2
428 >>>>>>>(104.l+132)      string/c        tmot    TrueMotion Video Compression
429 >>>>>>>(104.l+132)      string/c        tr20    TrueMotion RT 2.0
430 >>>>>>>(104.l+132)      string/c        ulti    Ultimotion
431 >>>>>>>(104.l+132)      string/c        uyvy    UYVY 4:2:2 byte ordering
432 >>>>>>>(104.l+132)      string/c        v422    24-bit YUV 4:2:2 format
433 >>>>>>>(104.l+132)      string/c        v655    16-bit YUV 4:2:2 format
434 >>>>>>>(104.l+132)      string/c        vcr1    ATI VCR 1.0
435 >>>>>>>(104.l+132)      string/c        vcr2    ATI VCR 2.0
436 >>>>>>>(104.l+132)      string/c        vcr3    ATI VCR 3.0
437 >>>>>>>(104.l+132)      string/c        vcr4    ATI VCR 4.0
438 >>>>>>>(104.l+132)      string/c        vcr5    ATI VCR 5.0
439 >>>>>>>(104.l+132)      string/c        vcr6    ATI VCR 6.0
440 >>>>>>>(104.l+132)      string/c        vcr7    ATI VCR 7.0
441 >>>>>>>(104.l+132)      string/c        vcr8    ATI VCR 8.0
442 >>>>>>>(104.l+132)      string/c        vcr9    ATI VCR 9.0
443 >>>>>>>(104.l+132)      string/c        vdct    Video Maker Pro DIB
444 >>>>>>>(104.l+132)      string/c        vids    YUV 4:2:2 CCIR 601 for V422
445 >>>>>>>(104.l+132)      string/c        vivo    Vivo H.263
446 >>>>>>>(104.l+132)      string/c        vixl    VIXL
447 >>>>>>>(104.l+132)      string/c        vlv1    VLCAP.DRV
448 >>>>>>>(104.l+132)      string/c        wbvc    W9960
449 >>>>>>>(104.l+132)      string/c        x263    mmioFOURCC('X','2','6','3')
450 >>>>>>>(104.l+132)      string/c        xlv0    XL Video Decoder
451 >>>>>>>(104.l+132)      string/c        y211    YUV 2:1:1 Packed
452 >>>>>>>(104.l+132)      string/c        y411    YUV 4:1:1 Packed
453 >>>>>>>(104.l+132)      string/c        y41b    YUV 4:1:1 Planar
454 >>>>>>>(104.l+132)      string/c        y41p    PC1 4:1:1
455 >>>>>>>(104.l+132)      string/c        y41t    PC1 4:1:1 with transparency
456 >>>>>>>(104.l+132)      string/c        y42b    YUV 4:2:2 Planar
457 >>>>>>>(104.l+132)      string/c        y42t    PC1 4:2:2 with transparency
458 >>>>>>>(104.l+132)      string/c        yc12    Intel YUV12 Codec
459 >>>>>>>(104.l+132)      string/c        yuv8    Winnov Caviar YUV8
460 >>>>>>>(104.l+132)      string/c        yuv9    YUV9
461 >>>>>>>(104.l+132)      string/c        yuy2    YUY2 4:2:2 byte ordering packed
462 >>>>>>>(104.l+132)      string/c        yuyv    BI_YUYV, Canopus
463 >>>>>>>(104.l+132)      string/c        fmp4    FFMpeg MPEG-4
464 >>>>>>>(104.l+132)      string/c        div3    DivX 3
465 >>>>>>>>112             string/c        div3    Low-Motion
466 >>>>>>>>112             string/c        div4    Fast-Motion
467 >>>>>>>(104.l+132)      string/c        divx    DivX 4
468 >>>>>>>(104.l+132)      string/c        dx50    DivX 5
469 >>>>>>>(104.l+132)      string/c        xvid    XviD
470 >>>>>>>(104.l+132)      string/c        h264    H.264
471 >>>>>>>(104.l+132)      string/c        wmv3    Windows Media Video 9
472 >>>>>>>(104.l+132)      string/c        h264    X.264 or H.264
473 >>>>>>>(104.l+132)      lelong  0
474 ##>>>>>>>(104.l+132)      string  x       (%.4s)
475 # skip past first (video) LIST
476 >>>>(92.l+96)   string  LIST
477 >>>>>(92.l+104) string  strlstrh
478 >>>>>>(92.l+116)        string          auds    \b, audio:
479 # auds strh length = 56:
480 >>>>>>>(92.l+172)       string          strf
481 >>>>>>>>(92.l+180)      leshort 0x0001  uncompressed PCM
482 >>>>>>>>(92.l+180)      leshort 0x0002  ADPCM
483 >>>>>>>>(92.l+180)      leshort 0x0006  aLaw
484 >>>>>>>>(92.l+180)      leshort 0x0007  uLaw
485 >>>>>>>>(92.l+180)      leshort 0x0050  MPEG-1 Layer 1 or 2
486 >>>>>>>>(92.l+180)      leshort 0x0055  MPEG-1 Layer 3
487 >>>>>>>>(92.l+180)      leshort 0x2000  Dolby AC3
488 >>>>>>>>(92.l+180)      leshort 0x0161  DivX
489 ##>>>>>>>>(92.l+180)      leshort x       (%#.4x)
490 >>>>>>>>(92.l+182)      leshort 1       (mono,
491 >>>>>>>>(92.l+182)      leshort 2       (stereo,
492 >>>>>>>>(92.l+182)      leshort >2      (%d channels,
493 >>>>>>>>(92.l+184)      lelong  x       %d Hz)
494 # auds strh length = 64:
495 >>>>>>>(92.l+180)       string          strf
496 >>>>>>>>(92.l+188)      leshort 0x0001  uncompressed PCM
497 >>>>>>>>(92.l+188)      leshort 0x0002  ADPCM
498 >>>>>>>>(92.l+188)      leshort 0x0055  MPEG-1 Layer 3
499 >>>>>>>>(92.l+188)      leshort 0x2000  Dolby AC3
500 >>>>>>>>(92.l+188)      leshort 0x0161  DivX
501 ##>>>>>>>>(92.l+188)      leshort x       (%#.4x)
502 >>>>>>>>(92.l+190)      leshort 1       (mono,
503 >>>>>>>>(92.l+190)      leshort 2       (stereo,
504 >>>>>>>>(92.l+190)      leshort >2      (%d channels,
505 >>>>>>>>(92.l+192)      lelong  x       %d Hz)
506 # From:         Joerg Jenderek
507 # URL:          http://fileformats.archiveteam.org/wiki/VDR_(VirtualDub)
508 # Reference:    http://sourceforge.net/projects/virtualdub/files/virtualdub-win/
509 #               1.10.4.35491/VirtualDub-1.10.4-src.7z/src/vdremote/Main.cpp
510 # VirtualDub link handler
511 >8      string          VDRM            \b, VirtualDub link
512 !:mime  video/x-vdr
513 !:ext   vdr
514 >>12    string          PATH            \b, PATH
515 # remote-path to video file
516 >>16    pstring/l       x               %s
517 # Animated Cursor format
518 # Update:       Joerg Jenderek
519 # URL:          http://fileformats.archiveteam.org/wiki/Windows_Animated_Cursor
520 # Reference:    https://www.gdgsoft.com/anituner/help/aniformat.htm
521 >8      string          ACON            \b, animated cursor
522 !:mime  application/x-navi-animation
523 # http://extension.nirsoft.net/ani
524 #!:mime image/ani
525 !:ext   ani
526 # INAM tag followed by length of title
527 >>24    string          INAM
528 >>>28   pstring/l       x               "%s"
529 # IART tag followed by length of author
530 >>>(28.l+32)    ubelong 0x49415254
531 >>>>&0  pstring/l       x               %s
532 # SoundFont 2 <mpruett@sgi.com>
533 # URL:  http://fileformats.archiveteam.org/wiki/SoundFont_2.0
534 >8      string          sfbk            \b, SoundFont/Bank
535 !:mime  audio/x-sfbk
536 !:ext   sf2
537 # MPEG-1 wrapped in a RIFF, apparently
538 # URL:  http://file.fyicenter.com/17_Video_.DAT_File_Extension_for_VCD_Files.html
539 >8      string          CDXA            \b, wrapped MPEG-1 (CDXA)
540 !:mime  video/x-cdxa
541 !:ext   mpg/dat
542 # URL:  http://fileformats.archiveteam.org/wiki/4X_IMA_ADPCM
543 >8      string          4XMV            \b, 4X Movie file
544 !:mime  video/x-4xmv
545 !:ext   4xm/4xa
546 # AMV-type AVI file: https://wiki.multimedia.cx/index.php?title=AMV
547 >8      string          AMV\040         \b, AMV
548 # http://fileformats.archiveteam.org/wiki/MTV_Video_(.AMV)
549 !:mime  video/x-amv
550 !:ext   amv
551 #!:ext  amv/mtv
552 # URL:  http://fileformats.archiveteam.org/wiki/WebP
553 >8      string          WEBP            \b, Web/P image
554 !:mime  image/webp
555 !:ext   webp
556 >>12    use             riff-walk
557 # From:         Joerg Jenderek
558 # URL:          http://fileformats.archiveteam.org/wiki/RIFF_MIDS
559 >8      string          MIDS            \b, MIDI Stream
560 !:mime  audio/x-mids
561 !:ext   mds
562 # From:         Joerg Jenderek
563 # URL:          http://mark0.net/soft-trid-e.html
564 # Reference:    http://fileformats.archiveteam.org/wiki/Trd_(TRID)
565 >8      string          TRID            \b, TrID defs package
566 !:mime  application/x-trid-trd
567 !:ext   trd
568 # From:         Joerg Jenderek
569 # URL:          https://en.wikipedia.org/wiki/CorelDRAW
570 # Reference:    http://fileformats.archiveteam.org/wiki/CorelDRAW
571 # Note:         Since version 3 CorelDraw Pictures are RIFF based
572 # but data chunks remain proprietary.
573 # Since version 14 til 15 packed as "content/riffData.cdr" and
574 # since 16 "content/root.dat" in ZIP container
575 # TODO:         distinguish templates with version 12.5 from Designer illustration 12
576 #       display information of RIFF based Corel Draw pictures, templates and patterns
577 0       name    corel-draw
578 # display second chunk for debugging
579 #>8     string          x               \b, [8]=%.8s
580 >0      string          x               \b, Corel Draw
581 #!:mime image/x-coreldraw
582 !:mime  application/vnd.corel-draw
583 # used by newer pictures templates
584 >>8     string          CDT
585 # used by templates with newer versions since 16
586 >>>12   string          =fver           Picture template (root.dat)
587 !:ext   dat
588 # used by templates with older versions with vrsn tag
589 >>>12   string          !fver
590 # used by templates with older versions 14-15
591 >>>>11  string          >E              Picture template (riffData.cdr)
592 !:ext   cdr
593 # used by templates with older versions 11-13
594 >>>>11  string          <F              Picture template
595 !:ext   cdt/cdrt
596 # used by older templates with version 4.4
597 >>8     string          CDST            Picture template
598 !:ext   cdt
599 # used by templates with version 12.5
600 >>8     string          DESC            Picture template
601 !:ext   cdt
602 # used by newer patterns with version 22
603 >>8     string          PAT             Pattern
604 !:ext   dat
605 # remaining older templates, patterns, drawings
606 >>8     default         x
607 # pattern with old version 4.y
608 >>>26   ulelong         =0x0000206C     Pattern
609 !:ext   pat
610 # pattern with newer versions
611 >>>26   ulelong         =0x00000D2C     Pattern
612 !:ext   pat
613 # remaining older templates or pictures
614 >>>26   default         x
615 # used by older versions 5 - 15
616 >>>>12  string          =vrsn
617 # 4th chunk size unequal 282Ch only found for CDR
618 >>>>>26 ulelong         !0x0000282c     Picture
619 !:ext   cdr
620 >>>>>26 default         x               Picture or template
621 !:ext   cdr/cdt
622 # used by newer versions since 16
623 >>>>12  string          =fver           Picture (root.dat)
624 !:ext   dat
625 # version marked by 1 ASCII char: space~3, ... , F~15,  ... , N~22, ... R~22 template
626 >11     string          x               \b, version
627 >11     string          >\040           '%-.1s'
628 >0      use             corel-version
629 >4      ulelong+8       x               \b, %u bytes
630 #
631 #       display numeric version of RIFF based Corel after 3rd RIFF tag
632 0       name    corel-version
633 # for debugging purpose; vrsn for short content; fver for 16 byte size
634 #>12    string          x               \b, TAG "%-4.4s"
635 # 1st data chunk length 2 implies short content version
636 >16     ulelong         2
637 # vrsn chunk short content interpreted by MajorVersion * 100 + MinorVersion
638 >>20    uleshort/100    x               %u
639 >>20    uleshort%100    >0              \b.%u
640 # for debugging purpose display next chunk like: DISP LIST
641 #>>22   string          x               \b, 4th "%-4.4s"
642 #>>26   ulelong         x               \b, 4th SIZE %#x
643 # for debugging purpose display 5th chunk like: LIST DISP ccmm osfp
644 #>>(26.l+30)    string  x               \b, 5th "%-4.4s"
645 # 1st data chunk length 10h implies 16 byte content with version info
646 >16     ulelong         0x10
647 >>34    ubyte           x               %u
648 >>>33   ubyte           >0              \b.%u
649 #       display information of RIFF based Corel Design formats
650 0       name    corel-des
651 # display second chunk for debugging
652 #>8     string          x               \b, [8]=%.8s
653 >12     string          x               \b, Corel DESIGNER
654 !:mime  image/x-corel-des
655 #!:mime application/x-vnd.corel.designer.document
656 # used by Corel Designer with newer versions since 16
657 >12     string          =fver           graphics (root.dat)
658 !:ext   dat
659 # used by Corel Designer templates with older versions with vrsn tag
660 >12     string          !fver
661 # used by Corel Designer with versions 14-15
662 >>11    string          >D              graphics (riffData.cdr)
663 !:ext   cdr
664 # used by Corel Designer with versions 10-12
665 >>11    string          <E              graphics
666 !:ext   des
667 # version indicated by last ASCII char of second chunk tag
668 >11     string          x               \b, version '%-.1s'
669 # but vrsn short content is not always version indicator
670 # exceptions: 'A'~11.4 'B'~12 'C'~12.5
671 >11     string          >D
672 >>0     use             corel-version
673 # for debugging purpose display next chunk like: DISP LIST
674 #>>22   string          x               \b, 4th "%-4.4s"
675 #>>26   ulelong         x               \b, 4th SIZE %#x
676 # for debugging purpose display 5th chunk like: LIST osfp
677 #>>(26.l+30)    string  x               \b, 5th "%-4.4s"
678 >4      ulelong+8       x               \b, %u bytes
679 #
680 # XXX - some of the below may only appear in little-endian form.
681 #
682 # Also "MV93" appears to be for one form of Macromedia Director
683 # files, and "GDMF" appears to be another multimedia format.
684 #
685 0       string          RIFX            RIFF (big-endian) data
686 # RIFF Palette format
687 >8      string          PAL             \b, palette
688 >>16    beshort         x               \b, version %d
689 >>18    beshort         x               \b, %d entries
690 # RIFF Device Independent Bitmap format
691 >8      string          RDIB            \b, device-independent bitmap
692 >>16    string          BM
693 >>>30   beshort         12              \b, OS/2 1.x format
694 >>>>34  beshort         x               \b, %d x
695 >>>>36  beshort         x               %d
696 >>>30   beshort         64              \b, OS/2 2.x format
697 >>>>34  beshort         x               \b, %d x
698 >>>>36  beshort         x               %d
699 >>>30   beshort         40              \b, Windows 3.x format
700 >>>>34  belong          x               \b, %d x
701 >>>>38  belong          x               %d x
702 >>>>44  beshort         x               %d
703 # RIFF MIDI format
704 >8      string          RMID            \b, MIDI
705 # RIFF Multimedia Movie File format
706 >8      string          RMMP            \b, multimedia movie
707 # Microsoft WAVE format (*.wav)
708 >8      string          WAVE            \b, WAVE audio
709 >>20    leshort         1               \b, Microsoft PCM
710 >>>34   leshort         >0              \b, %d bit
711 >>22    beshort         =1              \b, mono
712 >>22    beshort         =2              \b, stereo
713 >>22    beshort         >2              \b, %d channels
714 >>24    belong          >0              %d Hz
715 # Corel Draw Picture big endian not tested by real examples
716 #>8     string          CDRA            \b, Corel Draw Picture
717 #>8     string          CDR6            \b, Corel Draw Picture, version 6
718 >8      string          CDR
719 >>0     use     \^corel-draw
720
721 # AVI == Audio Video Interleave
722 >8      string          AVI\040         \b, AVI
723 # Animated Cursor format
724 >8      string          ACON            \b, animated cursor
725 # Notation Interchange File Format (big-endian only)
726 >8      string          NIFF            \b, Notation Interchange File Format
727 # SoundFont 2 <mpruett@sgi.com>
728 >8      string          sfbk            SoundFont/Bank
729
730 #------------------------------------------------------------------------------
731 # Sony Wave64
732 # see http://www.vcs.de/fileadmin/user_upload/MBS/PDF/Whitepaper/Informations_about_Sony_Wave64.pdf
733 # 128 bit RIFF-GUID { 66666972-912E-11CF-A5D6-28DB04C10000 } in little-endian
734 0       string  riff\x2E\x91\xCF\x11\xA5\xD6\x28\xDB\x04\xC1\x00\x00            Sony Wave64 RIFF data
735 # 128 bit + total file size (64 bits) so 24 bytes
736 # then WAVE-GUID { 65766177-ACF3-11D3-8CD1-00C04F8EDB8A }
737 >24     string          wave\xF3\xAC\xD3\x11\x8C\xD1\x00\xC0\x4F\x8E\xDB\x8A            \b, WAVE 64 audio
738 !:mime  audio/x-w64
739 # FMT-GUID { 20746D66-ACF3-11D3-8CD1-00C04F8EDB8A }
740 >>40    search/256      fmt\x20\xF3\xAC\xD3\x11\x8C\xD1\x00\xC0\x4F\x8E\xDB\x8A         \b
741 >>>&10  leshort         =1              \b, mono
742 >>>&10  leshort         =2              \b, stereo
743 >>>&10  leshort         >2              \b, %d channels
744 >>>&12  lelong          >0              %d Hz
745
746 #------------------------------------------------------------------------------
747 # MBWF/RF64
748 # see EBU TECH 3306 https://tech.ebu.ch/docs/tech/tech3306-2009.pdf
749 0       string  RF64\xff\xff\xff\xffWAVEds64            MBWF/RF64 audio
750 !:mime  audio/x-wav
751 >40     search/256      fmt\x20         \b
752 >>&6    leshort         =1              \b, mono
753 >>&6    leshort         =2              \b, stereo
754 >>&6    leshort         >2              \b, %d channels
755 >>&8    lelong          >0              %d Hz