summaryrefslogtreecommitdiffstats
path: root/magic/Magdir/riff
blob: 9b913a54f8b8a06d64a4ef2574ac4ee33ee42dbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
#------------------------------------------------------------------------------
# $File: riff,v 1.45 2022/07/24 23:47:49 christos Exp $
# riff:  file(1) magic for RIFF format
# See
#
#	https://www.seanet.com/users/matts/riffmci/riffmci.htm
#	http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf
#	https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
#

# audio format tag. Assume limits: max 1024 bit, 128 channels, 1 MHz
0   name    riff-wave
>0	leshort		0x01		\b, Microsoft PCM
>>14	leshort		>0
>>>14	leshort		<1024	\b, %d bit
>0	leshort		0x02		\b, Microsoft ADPCM
>0	leshort		0x03		\b, IEEE Float
>0	leshort		0x04		\b, Compaq VSELP
>0	leshort		0x05		\b, IBM CVSD
>0	leshort		0x06		\b, ITU G.711 A-law
>0	leshort		0x07		\b, ITU G.711 mu-law
>0	leshort		0x08		\b, Microsoft DTS
>0	leshort		0x10		\b, OKI ADPCM
>0	leshort		0x11		\b, IMA ADPCM
>0	leshort		0x12		\b, MediaSpace ADPCM
>0	leshort		0x13		\b, Sierra ADPCM
>0	leshort		0x14		\b, ITU G.723 ADPCM (Yamaha)
>0	leshort		0x15		\b, DSP Solutions DIGISTD
>0	leshort		0x16		\b, DSP Solutions DIGIFIX
>0	leshort		0x17		\b, Dialogic OKI ADPCM
>0	leshort		0x18		\b, MediaVision ADPCM
>0	leshort		0x19		\b, HP CU
>0	leshort		0x20		\b, Yamaha ADPCM
>0	leshort		0x21		\b, Speech Compression SONARC
>0	leshort		0x22		\b, DSP Group True Speech
>0	leshort		0x23		\b, Echo Speech EchoSC1
>0	leshort		0x24		\b, AudioFile AF36
>0	leshort		0x25		\b, APTX
>0	leshort		0x26		\b, AudioFile AF10
>0	leshort		0x27		\b, Prosody 1612
>0	leshort		0x28		\b, LRC
>0	leshort		0x30		\b, Dolby AC2
>0	leshort		0x31		\b, GSM 6.10
>0	leshort		0x32		\b, MSN Audio
>0	leshort		0x33		\b, Antex ADPCME
>0	leshort		0x34		\b, Control Res VQLPC
>0	leshort		0x35		\b, Digireal
>0	leshort		0x36		\b, DigiADPCM
>0	leshort		0x37		\b, Control Res CR10
>0	leshort		0x38		\b, NMS VBXADPCM
>0	leshort		0x39		\b, Roland RDAC
>0	leshort		0x3A		\b, Echo Speech EchoSC3
>0	leshort		0x3B		\b, Rockwell ADPCM
>0	leshort		0x3C		\b, Rockwell Digitalk
>0	leshort		0x3D		\b, Xebec
>0	leshort		0x40		\b, ITU G.721 ADPCM
>0	leshort		0x41		\b, ITU G.728 CELP
>0	leshort		0x42		\b, MSG723
>0	leshort		0x50		\b, MPEG
>0	leshort		0x52		\b, RT24
>0	leshort		0x53		\b, PAC
>0	leshort		0x55		\b, MPEG Layer 3
>0	leshort		0x59		\b, Lucent G.723
>0	leshort		0x60		\b, Cirrus
>0	leshort		0x61		\b, ESPCM
>0	leshort		0x62		\b, Voxware
>0	leshort		0x63		\b, Canopus Atrac
>0	leshort		0x64		\b, ITU G.726 ADPCM
>0	leshort		0x65		\b, ITU G.722 ADPCM
>0	leshort		0x66		\b, DSAT
>0	leshort		0x67		\b, DSAT Display
>0	leshort		0x69		\b, Voxware Byte Aligned
>0	leshort		0x70		\b, Voxware AC8
>0	leshort		0x71		\b, Voxware AC10
>0	leshort		0x72		\b, Voxware AC16
>0	leshort		0x73		\b, Voxware AC20
>0	leshort		0x74		\b, Voxware MetaVoice
>0	leshort		0x75		\b, Voxware MetaSound
>0	leshort		0x76		\b, Voxware RT29HW
>0	leshort		0x77		\b, Voxware VR12
>0	leshort		0x78		\b, Voxware VR18
>0	leshort		0x79		\b, Voxware TQ40
>0	leshort		0x80		\b, Softsound
>0	leshort		0x81		\b, Voxware TQ60
>0	leshort		0x82		\b, MSRT24
>0	leshort		0x83		\b, ITU G.729A
>0	leshort		0x84		\b, MVI MV12
>0	leshort		0x85		\b, DF G.726
>0	leshort		0x86		\b, DF GSM610
>0	leshort		0x88		\b, ISIAudio
>0	leshort		0x89		\b, Onlive
>0	leshort		0x91		\b, SBC24
>0	leshort		0x92		\b, Dolby AC3 S/PDIF
>0	leshort		0x97		\b, ZyXEL ADPCM
>0	leshort		0x98		\b, Philips LPCBB
>0	leshort		0x99		\b, Packed
>0	leshort		0x100		\b, Rhetorex ADPCM
>0	leshort		0x101		\b, BeCubed Software IRAT
>0	leshort		0x111		\b, Vivo G.723
>0	leshort		0x112		\b, Vivo Siren
>0	leshort		0x123		\b, Digital G.723
>0	leshort		0x200		\b, Creative ADPCM
>0	leshort		0x202		\b, Creative FastSpeech8
>0	leshort		0x203		\b, Creative FastSpeech10
>0	leshort		0x220		\b, Quarterdeck
>0	leshort		0x300		\b, FM Towns Snd
>0	leshort		0x400		\b, BTV Digital
>0	leshort		0x680		\b, VME VMPCM
>0	leshort		0x1000		\b, OLIGSM
>0	leshort		0x1001		\b, OLIADPCM
>0	leshort		0x1002		\b, OLICELP
>0	leshort		0x1003		\b, OLISBC
>0	leshort		0x1004		\b, OLIOPR
>0	leshort		0x1100		\b, LH Codec
>0	leshort		0x1400		\b, Norris
>0	leshort		0x1401		\b, ISIAudio
>0	leshort		0x1500		\b, Soundspace Music Compression
>0	leshort		0x2000		\b, AC3 DVM
>0	leshort		0x2001		\b, DTS
>2	leshort		=1		\b, mono
>2	leshort		=2		\b, stereo
>2	leshort		>2
>>2	leshort		<128	\b, %d channels
>4	lelong		>0
>>4	lelong		<1000000	%d Hz

# try to find "fmt "
0   name    riff-walk
>0  string  fmt\x20
>>4 lelong  >15
>>>8 use    riff-wave
>0  string  LIST
>>&(4.l+4)  use riff-walk
>0  string  DISP
>>&(4.l+4)  use riff-walk
>0  string  bext
>>&(4.l+4)  use riff-walk
>0  string  Fake
>>&(4.l+4)  use riff-walk
>0  string  fact
>>&(4.l+4)  use riff-walk
>0  string  VP8
>>11		byte		0x9d
>>>12		byte		0x01
>>>>13		byte		0x2a	\b, VP8 encoding
>>>>>14		leshort&0x3fff	x	\b, %d
>>>>>16		leshort&0x3fff	x	\bx%d, Scaling:
>>>>>14		leshort&0xc000	0x0000	\b [none]
>>>>>14		leshort&0xc000	0x1000	\b [5/4]
>>>>>14		leshort&0xc000	0x2000	\b [5/3]
>>>>>14		leshort&0xc000	0x3000	\b [2]
>>>>>14		leshort&0xc000	0x0000	\bx[none]
>>>>>14		leshort&0xc000	0x1000	\bx[5/4]
>>>>>14		leshort&0xc000	0x2000	\bx[5/3]
>>>>>14		leshort&0xc000	0x3000	\bx[2]
>>>>>15		byte&0x80	=0x00	\b, YUV color
>>>>>15		byte&0x80	=0x80	\b, bad color specification
>>>>>15		byte&0x40	=0x40	\b, no clamping required
>>>>>15		byte&0x40	=0x00	\b, decoders should clamp
#>0  string  x		we got %s
#>>&(4.l+4)  use riff-walk

# RecorderGear TR500 call recorder digits (BCD)
0	name	tr500-call-recorder-digits
>0	byte&0xF0	0x00	\b0
>0	byte&0xF0	0x10	\b1
>0	byte&0xF0	0x20	\b2
>0	byte&0xF0	0x30	\b3
>0	byte&0xF0	0x40	\b4
>0	byte&0xF0	0x50	\b5
>0	byte&0xF0	0x60	\b6
>0	byte&0xF0	0x70	\b7
>0	byte&0xF0	0x80	\b8
>0	byte&0xF0	0x90	\b9
>0	byte&0xF0	0xb0	\b*
>0	byte&0xF0	0xc0	\b#
>0	byte&0x0F	0	\b0
>0	byte&0x0F	1	\b1
>0	byte&0x0F	2	\b2
>0	byte&0x0F	3	\b3
>0	byte&0x0F	4	\b4
>0	byte&0x0F	5	\b5
>0	byte&0x0F	6	\b6
>0	byte&0x0F	7	\b7
>0	byte&0x0F	8	\b8
>0	byte&0x0F	9	\b9
>0	byte&0x0F	0xb	\b*
>0	byte&0x0F	0xc	\b#

# TR500 call recorder extended header
# From: David Korth <gerbilsoft@gerbilsoft.com>
# Contains dialed/incoming phone number and timestamp.
# TODO: Verify byte 15.
0	name	tr500-call-recorder-header
>15	byte	2	(outgoing call: 
>15	byte	4	(incoming call: 
>1	byte	0xFF	\bno number
>1	byte	!0xFF
>>1	use	tr500-call-recorder-digits
>>2	byte	!0xFF
>>>2	use	tr500-call-recorder-digits
>>3	byte	!0xFF
>>>3	use	tr500-call-recorder-digits
>>4	byte	!0xFF
>>>4	use	tr500-call-recorder-digits
>>5	byte	!0xFF
>>>5	use	tr500-call-recorder-digits
>>6	byte	!0xFF
>>>6	use	tr500-call-recorder-digits
>>7	byte	!0xFF
>>>7	use	tr500-call-recorder-digits
>>8	byte	!0xFF
>>>8	use	tr500-call-recorder-digits
>9	byte	x	\b, 20%02x
>10	byte	x	\b/%02x
>11	byte	x	\b/%02x
>12	byte	x	%02x
>13	byte	x	\b:%02x
>14	byte	x	\b:%02x)

# AVI section extended by Patrik Radman <patrik+file-magic@iki.fi>
#
0	string		RIFF		RIFF (little-endian) data
# RIFF Palette format
# Update: Joerg Jenderek
# URL: https://en.wikipedia.org/wiki/Resource_Interchange_File_Format
# Reference: https://worms2d.info/Palette_file
# WAVE/AVI codec registry: https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
>8	string		PAL\ 		\b, palette
!:mime	application/x-riff
# color palette by Microsoft Corporation
!:ext	pal
# file size =  chunk size + 8 in most cases
>>4	ulelong+8	x		\b, %u bytes
# Extended PAL Format
>>12	string		plth		\b, extended
# Simple PAL Format
>>12	string		data		
# data chunk size = color entries * 4 + 4 + sometimes extra (4) appended bytes
>>>16	ulelong		x		\b, data size %u
# palVersion is always 0x0300
#>>>20	leshort		x		\b, version %#4.4x
# palNumEntries specifies the number of palette color entries
>>>22	uleshort	x		\b, %u entries
# after palPalEntry sized (number of color entries * 4 ) vector
>>>(22.s*4)	ubequad	x		
# jump relative 22 ( 8 + 16) bytes forward points after end of file or to
# appended extra bytes like in http://safecolours.rigdenage.com/set(ms).zip/Protan(MS).pal
>>>>&16		ubelong	x		\b, extra bytes
>>>>>&-4	ubelong	>0		%#8.8x
# RIFF Device Independent Bitmap format
# URL: http://fileformats.archiveteam.org/wiki/RDIB
>8	string		RDIB		\b, device-independent bitmap
!:ext	rdi/dib
>>16	string		BM
>>>30	leshort		12		\b, OS/2 1.x format
>>>>34	leshort		x		\b, %d x
>>>>36	leshort		x		%d
>>>30	leshort		64		\b, OS/2 2.x format
>>>>34	leshort		x		\b, %d x
>>>>36	leshort		x		%d
>>>30	leshort		40		\b, Windows 3.x format
>>>>34	lelong		x		\b, %d x
>>>>38	lelong		x		%d x
>>>>44	leshort		x		%d
# RIFF MIDI format
# URL:	http://fileformats.archiveteam.org/wiki/RIFF_MIDI
>8	string		RMID		\b, MIDI
# http://extension.nirsoft.net/rmi
!:mime	audio/mid
#!:mime	audio/x-rmid
!:ext	rmi
# RIFF Multimedia Movie File format
# URL:	http://fileformats.archiveteam.org/wiki/RIFF_Multimedia_Movie
>8	string		RMMP		\b, multimedia movie
!:mime	video/x-mmm
!:ext	mmm
# RIFF wrapper for MP3
>8	string		RMP3		\b, MPEG Layer 3 audio
#!:mime	audio/x-rmp3
# Microsoft WAVE format (*.wav)
# URL:		http://fileformats.archiveteam.org/wiki/WAV
>8	string		WAVE		\b, WAVE audio
#!:mime	audio/vnd.wave
!:mime	audio/x-wav
# https://www.macdisk.com/macsigen.php
#!:apple	????WAVE
!:ext	wav/wave
>>12    string  >\0
>>>12   use     riff-walk
# TR500 call recorder extended header
>>16	ulelong		0x1E4
>>>20	leshort		0x11
>>>>256	byte		4
>>>>>256 use		tr500-call-recorder-header
# Update:	Joerg Jenderek
# lower case for Corel Draw version 8 Bidi
>8	string/c	cdr
# skip Corel CCX Clipart
>>8	string		!CDRXcont
# Corel Draw Picture
>>>0	use     corel-draw
# URL:		http://fileformats.archiveteam.org/wiki/CCX_(Corel)
# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/c/ccx-corel.trid.xml 
>>8	string		=CDRXcont	\b, Corel Clipart
!:mime	application/x-corel-ccx
!:ext	ccx
# 3rd chunk data {Corel\040Binary\040Meta\040File}
#>>>20	string		x		\b, 3rd '%-s'
>>>4	ulelong+8	x		\b, %u bytes
# From:		Joerg Jenderek
# URL:		https://en.wikipedia.org/wiki/CorelDRAW
# Reference:	http://fileformats.archiveteam.org/wiki/CorelDRAW
# Picture templates created by newer software start with RIFF type CDT
>8	string		CDT
>>0	use		corel-draw
# Picture templates with version 4.4
>8	string		CDST
>>0	use		corel-draw
# pattern created by newer software start with RIFF type PAT
>8	string		PAT
>>0	use		corel-draw
# From:		Joerg Jenderek
# URL:		https://en.wikipedia.org/wiki/Corel_Designer
# Reference:	http://fileformats.archiveteam.org/wiki/Corel_Designer
>8	string		DES
>>8	string		!DESC
>>>0	use		corel-des
# Corel Draw templates with version 12.5 or Corel Designer illustration 12
>>8	string		=DESC
# MORE TESTS NEEDED HERE!
#>>>0	use		corel-des
#>>>0	use		corel-draw
>8	string		NUNDROOT	\b, Steinberg CuBase
# From:		Joerg Jenderek
# URL:		http://fileformats.archiveteam.org/wiki/MIDI_Instrument_Definition_File
# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/i/idf.trid.xml
#		ftp://curscott.servebeer.com/Download/Apps/_Microsoft/
#  		Visual%20Studio%206.0%20Professional%20MSDN/
#		SAMPLES/VC98/SDK/GRAPHICS/AUDIO/IDFEDIT/GLOBALS.H 
# Note:		called "MIDI Instrument Definition File" by TrID
>8	string		IDF\ LIST	\b, MIDI Instrument Definition File
!:mime	audio/x-idf
!:ext	idf
# 3rd chunk size like: 254 284 286 670
#>>0x10	ulelong		x		\b, 3th SIZE %u
# for debugging purpose display next chunk like: MMAPhdr
#>>0x14	string		x		\b, 4th "%-8.8s"
#>>0x1C	ulelong		x		\b, 4th SIZE 0x%x
# probably MIDI instrument name like: "Universal-MIDI-Instrument" "instrument name" "General MIDI"
>>0x30	string		x		"%s"
# look for inst TAG
>>0x31	search/256	inst		by
# probably manufacture name like: "Unspecified Company" "NVidia Corporation"
>>>&0x24	string	x		"%s"
# AVI == Audio Video Interleave
# Reference:	http://fileformats.archiveteam.org/wiki/AVI
>8	string		AVI\040		\b, AVI
# https://reposcope.com/mimetype/video/x-msvideo
!:mime	video/x-msvideo
# https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
#!:mime	video/vnd.avi
!:ext	avi/divx
>>12    string          LIST
>>>20   string          hdrlavih
>>>>&36 lelong          x               \b, %u x
>>>>&40 lelong          x               %u,
>>>>&4  lelong          >1000000        <1 fps,
>>>>&4  lelong          1000000         1.00 fps,
>>>>&4  lelong          500000          2.00 fps,
>>>>&4  lelong          333333          3.00 fps,
>>>>&4  lelong          250000          4.00 fps,
>>>>&4  lelong          200000          5.00 fps,
>>>>&4  lelong          166667          6.00 fps,
>>>>&4  lelong          142857          7.00 fps,
>>>>&4  lelong          125000          8.00 fps,
>>>>&4  lelong          111111          9.00 fps,
>>>>&4  lelong          100000          10.00 fps,
# ]9.9,10.1[
>>>>&4  lelong          <101010
>>>>>&-4        lelong  >99010
>>>>>>&-4       lelong  !100000         ~10 fps,
>>>>&4  lelong          83333           12.00 fps,
# ]11.9,12.1[
>>>>&4  lelong          <84034
>>>>>&-4        lelong  >82645
>>>>>>&-4       lelong  !83333          ~12 fps,
>>>>&4  lelong          66667           15.00 fps,
# ]14.9,15.1[
>>>>&4  lelong          <67114
>>>>>&-4        lelong  >66225
>>>>>>&-4       lelong  !66667          ~15 fps,
>>>>&4  lelong          50000           20.00 fps,
>>>>&4  lelong          41708           23.98 fps,
>>>>&4  lelong          41667           24.00 fps,
# ]23.9,24.1[
>>>>&4  lelong          <41841
>>>>>&-4        lelong  >41494
>>>>>>&-4       lelong  !41708
>>>>>>>&-4      lelong  !41667          ~24 fps,
>>>>&4  lelong          40000           25.00 fps,
# ]24.9,25.1[
>>>>&4  lelong          <40161
>>>>>&-4        lelong  >39841
>>>>>>&-4       lelong  !40000          ~25 fps,
>>>>&4  lelong          33367           29.97 fps,
>>>>&4  lelong          33333           30.00 fps,
# ]29.9,30.1[
>>>>&4  lelong          <33445
>>>>>&-4        lelong  >33223
>>>>>>&-4       lelong  !33367
>>>>>>>&-4      lelong  !33333          ~30 fps,
>>>>&4  lelong          <32224          >30 fps,
##>>>>&4  lelong          x               (%lu)
##>>>>&20 lelong          x               %lu frames,
# Note: The tests below assume that the AVI has 1 or 2 streams,
#       "vids" optionally followed by "auds".
#       (Should cover 99.9% of all AVIs.)
# assuming avih length = 56
>>>88   string  LIST
>>>>96  string  strlstrh
>>>>>108        string  vids    video:
>>>>>>&0        lelong  0               uncompressed
# skip past vids strh
>>>>>>(104.l+108)       string  strf
>>>>>>>(104.l+132)      lelong          1       RLE 8bpp
>>>>>>>(104.l+132)      string/c        anim    Intel RDX
>>>>>>>(104.l+132)      string/c        aur2    AuraVision Aura 2
>>>>>>>(104.l+132)      string/c        aura    AuraVision Aura
>>>>>>>(104.l+132)      string/c        bt20    Brooktree MediaStream
>>>>>>>(104.l+132)      string/c        btcv    Brooktree Composite Video
>>>>>>>(104.l+132)      string/c        cc12    Intel YUV12
>>>>>>>(104.l+132)      string/c        cdvc    Canopus DV
>>>>>>>(104.l+132)      string/c        cham    Winnov Caviara Cham
>>>>>>>(104.l+132)      string/c        cljr    Proprietary YUV 4 pixels
>>>>>>>(104.l+132)      string/c        cmyk    Common Data Format in Printing
>>>>>>>(104.l+132)      string/c        cpla    Weitek 4:2:0 YUV Planar
>>>>>>>(104.l+132)      string/c        cvid    Cinepak
>>>>>>>(104.l+132)      string/c        cwlt    Microsoft Color WLT DIB
>>>>>>>(104.l+132)      string/c        cyuv    Creative Labs YUV
>>>>>>>(104.l+132)      string/c        d261    H.261
>>>>>>>(104.l+132)      string/c        d263    H.263
>>>>>>>(104.l+132)      string/c        duck    TrueMotion 1.0
>>>>>>>(104.l+132)      string/c        dve2    DVE-2 Videoconferencing
>>>>>>>(104.l+132)      string/c        fljp    Field Encoded Motion JPEG
>>>>>>>(104.l+132)      string/c        fvf1    Fractal Video Frame
>>>>>>>(104.l+132)      string/c        gwlt    Microsoft Greyscale WLT DIB
>>>>>>>(104.l+132)      string/c        h260    H.260
>>>>>>>(104.l+132)      string/c        h261    H.261
>>>>>>>(104.l+132)      string/c        h262    H.262
>>>>>>>(104.l+132)      string/c        h263    H.263
>>>>>>>(104.l+132)      string/c        h264    H.264
>>>>>>>(104.l+132)      string/c        h265    H.265
>>>>>>>(104.l+132)      string/c        h266    H.266
>>>>>>>(104.l+132)      string/c        h267    H.267
>>>>>>>(104.l+132)      string/c        h268    H.268
>>>>>>>(104.l+132)      string/c        h269    H.269
>>>>>>>(104.l+132)      string/c        i263    Intel I.263
>>>>>>>(104.l+132)      string/c        i420    Intel Indeo 4
>>>>>>>(104.l+132)      string/c        ian     Intel RDX
>>>>>>>(104.l+132)      string/c        iclb    CellB Videoconferencing Codec
>>>>>>>(104.l+132)      string/c        ilvc    Intel Layered Video
>>>>>>>(104.l+132)      string/c        ilvr    ITU-T H.263+
>>>>>>>(104.l+132)      string/c        iraw    Intel YUV Uncompressed
>>>>>>>(104.l+132)      string/c        iv30    Intel Indeo 3
>>>>>>>(104.l+132)      string/c        iv31    Intel Indeo 3.1
>>>>>>>(104.l+132)      string/c        iv32    Intel Indeo 3.2
>>>>>>>(104.l+132)      string/c        iv33    Intel Indeo 3.3
>>>>>>>(104.l+132)      string/c        iv34    Intel Indeo 3.4
>>>>>>>(104.l+132)      string/c        iv35    Intel Indeo 3.5
>>>>>>>(104.l+132)      string/c        iv36    Intel Indeo 3.6
>>>>>>>(104.l+132)      string/c        iv37    Intel Indeo 3.7
>>>>>>>(104.l+132)      string/c        iv38    Intel Indeo 3.8
>>>>>>>(104.l+132)      string/c        iv39    Intel Indeo 3.9
>>>>>>>(104.l+132)      string/c        iv40    Intel Indeo 4.0
>>>>>>>(104.l+132)      string/c        iv41    Intel Indeo 4.1
>>>>>>>(104.l+132)      string/c        iv42    Intel Indeo 4.2
>>>>>>>(104.l+132)      string/c        iv43    Intel Indeo 4.3
>>>>>>>(104.l+132)      string/c        iv44    Intel Indeo 4.4
>>>>>>>(104.l+132)      string/c        iv45    Intel Indeo 4.5
>>>>>>>(104.l+132)      string/c        iv46    Intel Indeo 4.6
>>>>>>>(104.l+132)      string/c        iv47    Intel Indeo 4.7
>>>>>>>(104.l+132)      string/c        iv48    Intel Indeo 4.8
>>>>>>>(104.l+132)      string/c        iv49    Intel Indeo 4.9
>>>>>>>(104.l+132)      string/c        iv50    Intel Indeo 5.0
>>>>>>>(104.l+132)      string/c        mpeg    MPEG 1 Video Frame
>>>>>>>(104.l+132)      string/c        mjpg    Motion JPEG
>>>>>>>(104.l+132)      string/c        mp42    Microsoft MPEG-4 v2
>>>>>>>(104.l+132)      string/c        mp43    Microsoft MPEG-4 v3
>>>>>>>(104.l+132)      string/c        mrca    MR Codec
>>>>>>>(104.l+132)      string/c        mrle    Run Length Encoding
>>>>>>>(104.l+132)      string/c        msvc    Microsoft Video 1
>>>>>>>(104.l+132)      string/c        phmo    Photomotion
>>>>>>>(104.l+132)      string/c        qpeq    QPEG 1.1 Format Video
>>>>>>>(104.l+132)      string/c        rgbt    RGBT
>>>>>>>(104.l+132)      string/c        rle4    Run Length Encoded 4
>>>>>>>(104.l+132)      string/c        rle8    Run Length Encoded 8
>>>>>>>(104.l+132)      string/c        rt21    Intel Indeo 2.1
>>>>>>>(104.l+132)      string/c        rvx     Intel RDX
>>>>>>>(104.l+132)      string/c        sdcc    Sun Digital Camera Codec
>>>>>>>(104.l+132)      string/c        sfmc    Crystal Net SFM Codec
>>>>>>>(104.l+132)      string/c        smsc    SMSC
>>>>>>>(104.l+132)      string/c        smsd    SMSD
>>>>>>>(104.l+132)      string/c        splc    Splash Studios ACM Audio Codec
>>>>>>>(104.l+132)      string/c        sqz2    Microsoft VXtreme Video Codec
>>>>>>>(104.l+132)      string/c        sv10    Sorenson Video R1
>>>>>>>(104.l+132)      string/c        tlms    TeraLogic Motion Intraframe Codec A
>>>>>>>(104.l+132)      string/c        tlst    TeraLogic Motion Intraframe Codec B
>>>>>>>(104.l+132)      string/c        tm20    TrueMotion 2.0
>>>>>>>(104.l+132)      string/c        tmic    TeraLogic Motion Intraframe Codec 2
>>>>>>>(104.l+132)      string/c        tmot    TrueMotion Video Compression
>>>>>>>(104.l+132)      string/c        tr20    TrueMotion RT 2.0
>>>>>>>(104.l+132)      string/c        ulti    Ultimotion
>>>>>>>(104.l+132)      string/c        uyvy    UYVY 4:2:2 byte ordering
>>>>>>>(104.l+132)      string/c        v422    24-bit YUV 4:2:2 format
>>>>>>>(104.l+132)      string/c        v655    16-bit YUV 4:2:2 format
>>>>>>>(104.l+132)      string/c        vcr1    ATI VCR 1.0
>>>>>>>(104.l+132)      string/c        vcr2    ATI VCR 2.0
>>>>>>>(104.l+132)      string/c        vcr3    ATI VCR 3.0
>>>>>>>(104.l+132)      string/c        vcr4    ATI VCR 4.0
>>>>>>>(104.l+132)      string/c        vcr5    ATI VCR 5.0
>>>>>>>(104.l+132)      string/c        vcr6    ATI VCR 6.0
>>>>>>>(104.l+132)      string/c        vcr7    ATI VCR 7.0
>>>>>>>(104.l+132)      string/c        vcr8    ATI VCR 8.0
>>>>>>>(104.l+132)      string/c        vcr9    ATI VCR 9.0
>>>>>>>(104.l+132)      string/c        vdct    Video Maker Pro DIB
>>>>>>>(104.l+132)      string/c        vids    YUV 4:2:2 CCIR 601 for V422
>>>>>>>(104.l+132)      string/c        vivo    Vivo H.263
>>>>>>>(104.l+132)      string/c        vixl    VIXL
>>>>>>>(104.l+132)      string/c        vlv1    VLCAP.DRV
>>>>>>>(104.l+132)      string/c        wbvc    W9960
>>>>>>>(104.l+132)      string/c        x263    mmioFOURCC('X','2','6','3')
>>>>>>>(104.l+132)      string/c        xlv0    XL Video Decoder
>>>>>>>(104.l+132)      string/c        y211    YUV 2:1:1 Packed
>>>>>>>(104.l+132)      string/c        y411    YUV 4:1:1 Packed
>>>>>>>(104.l+132)      string/c        y41b    YUV 4:1:1 Planar
>>>>>>>(104.l+132)      string/c        y41p    PC1 4:1:1
>>>>>>>(104.l+132)      string/c        y41t    PC1 4:1:1 with transparency
>>>>>>>(104.l+132)      string/c        y42b    YUV 4:2:2 Planar
>>>>>>>(104.l+132)      string/c        y42t    PC1 4:2:2 with transparency
>>>>>>>(104.l+132)      string/c        yc12    Intel YUV12 Codec
>>>>>>>(104.l+132)      string/c        yuv8    Winnov Caviar YUV8
>>>>>>>(104.l+132)      string/c        yuv9    YUV9
>>>>>>>(104.l+132)      string/c        yuy2    YUY2 4:2:2 byte ordering packed
>>>>>>>(104.l+132)      string/c        yuyv    BI_YUYV, Canopus
>>>>>>>(104.l+132)      string/c        fmp4    FFMpeg MPEG-4
>>>>>>>(104.l+132)      string/c        div3    DivX 3
>>>>>>>>112             string/c        div3    Low-Motion
>>>>>>>>112             string/c        div4    Fast-Motion
>>>>>>>(104.l+132)      string/c        divx    DivX 4
>>>>>>>(104.l+132)      string/c        dx50    DivX 5
>>>>>>>(104.l+132)      string/c        xvid    XviD
>>>>>>>(104.l+132)	string/c	h264	H.264
>>>>>>>(104.l+132)      string/c        wmv3    Windows Media Video 9
>>>>>>>(104.l+132)      string/c        h264    X.264 or H.264
>>>>>>>(104.l+132)      lelong  0
##>>>>>>>(104.l+132)      string  x       (%.4s)
# skip past first (video) LIST
>>>>(92.l+96)   string  LIST
>>>>>(92.l+104) string  strlstrh
>>>>>>(92.l+116)        string          auds    \b, audio:
# auds strh length = 56:
>>>>>>>(92.l+172)       string          strf
>>>>>>>>(92.l+180)      leshort 0x0001  uncompressed PCM
>>>>>>>>(92.l+180)      leshort 0x0002  ADPCM
>>>>>>>>(92.l+180)      leshort 0x0006  aLaw
>>>>>>>>(92.l+180)      leshort 0x0007  uLaw
>>>>>>>>(92.l+180)      leshort 0x0050  MPEG-1 Layer 1 or 2
>>>>>>>>(92.l+180)      leshort 0x0055  MPEG-1 Layer 3
>>>>>>>>(92.l+180)      leshort 0x2000  Dolby AC3
>>>>>>>>(92.l+180)      leshort 0x0161  DivX
##>>>>>>>>(92.l+180)      leshort x       (%#.4x)
>>>>>>>>(92.l+182)      leshort 1       (mono,
>>>>>>>>(92.l+182)      leshort 2       (stereo,
>>>>>>>>(92.l+182)      leshort >2      (%d channels,
>>>>>>>>(92.l+184)      lelong  x       %d Hz)
# auds strh length = 64:
>>>>>>>(92.l+180)       string          strf
>>>>>>>>(92.l+188)      leshort 0x0001  uncompressed PCM
>>>>>>>>(92.l+188)      leshort 0x0002  ADPCM
>>>>>>>>(92.l+188)      leshort 0x0055  MPEG-1 Layer 3
>>>>>>>>(92.l+188)      leshort 0x2000  Dolby AC3
>>>>>>>>(92.l+188)      leshort 0x0161  DivX
##>>>>>>>>(92.l+188)      leshort x       (%#.4x)
>>>>>>>>(92.l+190)      leshort 1       (mono,
>>>>>>>>(92.l+190)      leshort 2       (stereo,
>>>>>>>>(92.l+190)      leshort >2      (%d channels,
>>>>>>>>(92.l+192)      lelong  x       %d Hz)
# From:		Joerg Jenderek
# URL:		http://fileformats.archiveteam.org/wiki/VDR_(VirtualDub)
# Reference:	http://sourceforge.net/projects/virtualdub/files/virtualdub-win/
#		1.10.4.35491/VirtualDub-1.10.4-src.7z/src/vdremote/Main.cpp
# VirtualDub link handler
>8	string		VDRM		\b, VirtualDub link
!:mime	video/x-vdr
!:ext	vdr
>>12	string		PATH		\b, PATH
# remote-path to video file
>>16	pstring/l	x		%s
# Animated Cursor format
# Update:	Joerg Jenderek
# URL:		http://fileformats.archiveteam.org/wiki/Windows_Animated_Cursor
# Reference:	https://www.gdgsoft.com/anituner/help/aniformat.htm
>8	string		ACON		\b, animated cursor
!:mime	application/x-navi-animation
# http://extension.nirsoft.net/ani
#!:mime	image/ani
!:ext	ani
# INAM tag followed by length of title
>>24	string		INAM
>>>28	pstring/l	x		"%s"
# IART tag followed by length of author
>>>(28.l+32)	ubelong	0x49415254
>>>>&0	pstring/l	x		%s
# SoundFont 2 <mpruett@sgi.com>
# URL:	http://fileformats.archiveteam.org/wiki/SoundFont_2.0
>8	string		sfbk		\b, SoundFont/Bank
!:mime	audio/x-sfbk
!:ext	sf2
# MPEG-1 wrapped in a RIFF, apparently
# URL:	http://file.fyicenter.com/17_Video_.DAT_File_Extension_for_VCD_Files.html
>8      string          CDXA            \b, wrapped MPEG-1 (CDXA)
!:mime	video/x-cdxa
!:ext	mpg/dat
# URL:	http://fileformats.archiveteam.org/wiki/4X_IMA_ADPCM
>8	string		4XMV		\b, 4X Movie file
!:mime	video/x-4xmv
!:ext	4xm/4xa
# AMV-type AVI file: https://wiki.multimedia.cx/index.php?title=AMV
>8	string		AMV\040		\b, AMV
# http://fileformats.archiveteam.org/wiki/MTV_Video_(.AMV)
!:mime	video/x-amv
!:ext	amv
#!:ext	amv/mtv
# URL:	http://fileformats.archiveteam.org/wiki/WebP
>8      string          WEBP            \b, Web/P image
!:mime	image/webp
!:ext	webp
>>12	use		riff-walk
# From:		Joerg Jenderek
# URL:		http://fileformats.archiveteam.org/wiki/RIFF_MIDS
>8      string          MIDS            \b, MIDI Stream
!:mime	audio/x-mids
!:ext	mds
# From:		Joerg Jenderek
# URL:		http://mark0.net/soft-trid-e.html
# Reference:	http://fileformats.archiveteam.org/wiki/Trd_(TRID)
>8      string          TRID            \b, TrID defs package
!:mime	application/x-trid-trd
!:ext	trd
# From:		Joerg Jenderek
# URL:		https://en.wikipedia.org/wiki/CorelDRAW
# Reference:	http://fileformats.archiveteam.org/wiki/CorelDRAW
# Note:		Since version 3 CorelDraw Pictures are RIFF based
# but data chunks remain proprietary.
# Since version 14 til 15 packed as "content/riffData.cdr" and
# since 16 "content/root.dat" in ZIP container
# TODO:		distinguish templates with version 12.5 from Designer illustration 12
#	display information of RIFF based Corel Draw pictures, templates and patterns
0	name   	corel-draw
# display second chunk for debugging
#>8	string		x		\b, [8]=%.8s
>0	string		x		\b, Corel Draw
#!:mime	image/x-coreldraw
!:mime	application/vnd.corel-draw
# used by newer pictures templates
>>8	string		CDT
# used by templates with newer versions since 16
>>>12	string		=fver		Picture template (root.dat)
!:ext	dat
# used by templates with older versions with vrsn tag
>>>12	string		!fver
# used by templates with older versions 14-15
>>>>11	string		>E		Picture template (riffData.cdr)
!:ext	cdr
# used by templates with older versions 11-13
>>>>11	string		<F		Picture template
!:ext	cdt/cdrt
# used by older templates with version 4.4
>>8	string		CDST		Picture template
!:ext	cdt
# used by templates with version 12.5
>>8	string		DESC		Picture template
!:ext	cdt
# used by newer patterns with version 22
>>8	string		PAT		Pattern
!:ext	dat
# remaining older templates, patterns, drawings
>>8	default		x
# pattern with old version 4.y
>>>26	ulelong		=0x0000206C	Pattern
!:ext	pat
# pattern with newer versions
>>>26	ulelong		=0x00000D2C	Pattern
!:ext	pat
# remaining older templates or pictures
>>>26	default		x
# used by older versions 5 - 15
>>>>12	string		=vrsn
# 4th chunk size unequal 282Ch only found for CDR
>>>>>26	ulelong		!0x0000282c	Picture
!:ext	cdr
>>>>>26	default		x		Picture or template
!:ext	cdr/cdt
# used by newer versions since 16
>>>>12	string		=fver		Picture (root.dat)
!:ext	dat
# version marked by 1 ASCII char: space~3, ... , F~15,  ... , N~22, ... R~22 template
>11	string		x		\b, version
>11	string		>\040		'%-.1s'
>0	use		corel-version
>4	ulelong+8	x		\b, %u bytes
#
#	display numeric version of RIFF based Corel after 3rd RIFF tag
0	name   	corel-version
# for debugging purpose; vrsn for short content; fver for 16 byte size
#>12	string		x		\b, TAG "%-4.4s"
# 1st data chunk length 2 implies short content version
>16	ulelong		2
# vrsn chunk short content interpreted by MajorVersion * 100 + MinorVersion
>>20	uleshort/100	x		%u
>>20	uleshort%100	>0		\b.%u
# for debugging purpose display next chunk like: DISP LIST
#>>22	string		x		\b, 4th "%-4.4s"
#>>26	ulelong		x		\b, 4th SIZE %#x
# for debugging purpose display 5th chunk like: LIST DISP ccmm osfp
#>>(26.l+30)	string	x		\b, 5th "%-4.4s"
# 1st data chunk length 10h implies 16 byte content with version info
>16	ulelong		0x10
>>34	ubyte		x		%u
>>>33	ubyte		>0		\b.%u
#	display information of RIFF based Corel Design formats
0	name   	corel-des
# display second chunk for debugging
#>8	string		x		\b, [8]=%.8s
>12	string		x		\b, Corel DESIGNER
!:mime	image/x-corel-des
#!:mime	application/x-vnd.corel.designer.document
# used by Corel Designer with newer versions since 16
>12	string		=fver		graphics (root.dat)
!:ext	dat
# used by Corel Designer templates with older versions with vrsn tag
>12	string		!fver
# used by Corel Designer with versions 14-15
>>11	string		>D		graphics (riffData.cdr)
!:ext	cdr
# used by Corel Designer with versions 10-12
>>11	string		<E		graphics
!:ext	des
# version indicated by last ASCII char of second chunk tag
>11	string		x		\b, version '%-.1s'
# but vrsn short content is not always version indicator
# exceptions: 'A'~11.4 'B'~12 'C'~12.5
>11	string		>D
>>0	use		corel-version
# for debugging purpose display next chunk like: DISP LIST
#>>22	string		x		\b, 4th "%-4.4s"
#>>26	ulelong		x		\b, 4th SIZE %#x
# for debugging purpose display 5th chunk like: LIST osfp
#>>(26.l+30)	string	x		\b, 5th "%-4.4s"
>4	ulelong+8	x		\b, %u bytes

#
# XXX - some of the below may only appear in little-endian form.
#
# Also "MV93" appears to be for one form of Macromedia Director
# files, and "GDMF" appears to be another multimedia format.
#
0	string		RIFX		RIFF (big-endian) data
# RIFF Palette format
>8	string		PAL		\b, palette
>>16	beshort		x		\b, version %d
>>18	beshort		x		\b, %d entries
# RIFF Device Independent Bitmap format
>8	string		RDIB		\b, device-independent bitmap
>>16	string		BM
>>>30	beshort		12		\b, OS/2 1.x format
>>>>34	beshort		x		\b, %d x
>>>>36	beshort		x		%d
>>>30	beshort		64		\b, OS/2 2.x format
>>>>34	beshort		x		\b, %d x
>>>>36	beshort		x		%d
>>>30	beshort		40		\b, Windows 3.x format
>>>>34	belong		x		\b, %d x
>>>>38	belong		x		%d x
>>>>44	beshort		x		%d
# RIFF MIDI format
>8	string		RMID		\b, MIDI
# RIFF Multimedia Movie File format
>8	string		RMMP		\b, multimedia movie
# Microsoft WAVE format (*.wav)
>8	string		WAVE		\b, WAVE audio
>>20	leshort		1		\b, Microsoft PCM
>>>34	leshort		>0		\b, %d bit
>>22	beshort		=1		\b, mono
>>22	beshort		=2		\b, stereo
>>22	beshort		>2		\b, %d channels
>>24	belong		>0		%d Hz
# Corel Draw Picture big endian not tested by real examples
#>8	string		CDRA		\b, Corel Draw Picture
#>8	string		CDR6		\b, Corel Draw Picture, version 6
>8	string		CDR
>>0	use     \^corel-draw

# AVI == Audio Video Interleave
>8	string		AVI\040		\b, AVI
# Animated Cursor format
>8	string		ACON		\b, animated cursor
# Notation Interchange File Format (big-endian only)
>8	string		NIFF		\b, Notation Interchange File Format
# SoundFont 2 <mpruett@sgi.com>
>8	string		sfbk		SoundFont/Bank

#------------------------------------------------------------------------------
# Sony Wave64
# see http://www.vcs.de/fileadmin/user_upload/MBS/PDF/Whitepaper/Informations_about_Sony_Wave64.pdf
# 128 bit RIFF-GUID { 66666972-912E-11CF-A5D6-28DB04C10000 } in little-endian
0	string	riff\x2E\x91\xCF\x11\xA5\xD6\x28\xDB\x04\xC1\x00\x00		Sony Wave64 RIFF data
# 128 bit + total file size (64 bits) so 24 bytes
# then WAVE-GUID { 65766177-ACF3-11D3-8CD1-00C04F8EDB8A }
>24	string		wave\xF3\xAC\xD3\x11\x8C\xD1\x00\xC0\x4F\x8E\xDB\x8A		\b, WAVE 64 audio
!:mime	audio/x-w64
# FMT-GUID { 20746D66-ACF3-11D3-8CD1-00C04F8EDB8A }
>>40	search/256	fmt\x20\xF3\xAC\xD3\x11\x8C\xD1\x00\xC0\x4F\x8E\xDB\x8A		\b
>>>&10	leshort		=1		\b, mono
>>>&10	leshort		=2		\b, stereo
>>>&10	leshort		>2		\b, %d channels
>>>&12	lelong		>0		%d Hz

#------------------------------------------------------------------------------
# MBWF/RF64
# see EBU TECH 3306 https://tech.ebu.ch/docs/tech/tech3306-2009.pdf
0	string	RF64\xff\xff\xff\xffWAVEds64		MBWF/RF64 audio
!:mime	audio/x-wav
>40	search/256	fmt\x20		\b
>>&6	leshort		=1		\b, mono
>>&6	leshort		=2		\b, stereo
>>&6	leshort		>2		\b, %d channels
>>&8	lelong		>0		%d Hz