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
|