1 2#------------------------------------------------------------------------------ 3# $File: riff,v 1.50 2024/04/13 16:40:48 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 130 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 " 1290 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# https://developers.google.com/speed/webp/docs/riff_container 144>0 string VP8\x20 145>>11 byte 0x9d 146>>>12 byte 0x01 147>>>>13 byte 0x2a \b, VP8 encoding 148>>>>>14 leshort&0x3fff x \b, %d 149>>>>>16 leshort&0x3fff x \bx%d, Scaling: 150>>>>>14 leshort&0xc000 0x0000 \b [none] 151>>>>>14 leshort&0xc000 0x4000 \b [5/4] 152>>>>>14 leshort&0xc000 0x8000 \b [5/3] 153>>>>>14 leshort&0xc000 0xc000 \b [2] 154>>>>>16 leshort&0xc000 0x0000 \bx[none] 155>>>>>16 leshort&0xc000 0x4000 \bx[5/4] 156>>>>>16 leshort&0xc000 0x8000 \bx[5/3] 157>>>>>16 leshort&0xc000 0xc000 \bx[2] 158>>>>>15 byte&0x80 =0x00 \b, YUV color 159>>>>>15 byte&0x80 =0x80 \b, bad color specification 160>>>>>15 byte&0x40 =0x40 \b, no clamping required 161>>>>>15 byte&0x40 =0x00 \b, decoders should clamp 162>0 string VP8L 163>>8 byte 0x2f \b, lossless 164>>>11 byte &0x01 \b, with alpha 165>0 string VP8X 166>>4 lelong 0x0a 167>>>8 byte &0x02 \b, animated 168>>>8 byte &0x04 \b, XMP metadata 169>>>8 byte &0x08 \b, EXIF metadata 170>>>8 byte &0x10 \b, with alpha 171>>>8 byte &0x20 \b, ICC profile 172# TODO: These two values are off-by-one, for a 64x64 WebP they contain 173# 63x63 as there can be no 0x0 file. 174>>>12 lelong&0xffffff x \b, %d+1 175>>>15 lelong&0xffffff x \bx%d+1 176#>0 string x we got %s 177#>>&(4.l+4) use riff-walk 178 179# RecorderGear TR500 call recorder digits (BCD) 1800 name tr500-call-recorder-digits 181>0 byte&0xF0 0x00 \b0 182>0 byte&0xF0 0x10 \b1 183>0 byte&0xF0 0x20 \b2 184>0 byte&0xF0 0x30 \b3 185>0 byte&0xF0 0x40 \b4 186>0 byte&0xF0 0x50 \b5 187>0 byte&0xF0 0x60 \b6 188>0 byte&0xF0 0x70 \b7 189>0 byte&0xF0 0x80 \b8 190>0 byte&0xF0 0x90 \b9 191>0 byte&0xF0 0xb0 \b* 192>0 byte&0xF0 0xc0 \b# 193>0 byte&0x0F 0 \b0 194>0 byte&0x0F 1 \b1 195>0 byte&0x0F 2 \b2 196>0 byte&0x0F 3 \b3 197>0 byte&0x0F 4 \b4 198>0 byte&0x0F 5 \b5 199>0 byte&0x0F 6 \b6 200>0 byte&0x0F 7 \b7 201>0 byte&0x0F 8 \b8 202>0 byte&0x0F 9 \b9 203>0 byte&0x0F 0xb \b* 204>0 byte&0x0F 0xc \b# 205 206# TR500 call recorder extended header 207# From: David Korth <gerbilsoft@gerbilsoft.com> 208# Contains dialed/incoming phone number and timestamp. 209# TODO: Verify byte 15. 2100 name tr500-call-recorder-header 211>15 byte 2 (outgoing call: 212>15 byte 4 (incoming call: 213>1 byte 0xFF \bno number 214>1 byte !0xFF 215>>1 use tr500-call-recorder-digits 216>>2 byte !0xFF 217>>>2 use tr500-call-recorder-digits 218>>3 byte !0xFF 219>>>3 use tr500-call-recorder-digits 220>>4 byte !0xFF 221>>>4 use tr500-call-recorder-digits 222>>5 byte !0xFF 223>>>5 use tr500-call-recorder-digits 224>>6 byte !0xFF 225>>>6 use tr500-call-recorder-digits 226>>7 byte !0xFF 227>>>7 use tr500-call-recorder-digits 228>>8 byte !0xFF 229>>>8 use tr500-call-recorder-digits 230>9 byte x \b, 20%02x 231>10 byte x \b/%02x 232>11 byte x \b/%02x 233>12 byte x %02x 234>13 byte x \b:%02x 235>14 byte x \b:%02x) 236 237# AVI section extended by Patrik Radman <patrik+file-magic@iki.fi> 238# 2390 string RIFF RIFF (little-endian) data 240# RIFF Palette format 241# Update: Joerg Jenderek 242# URL: https://en.wikipedia.org/wiki/Resource_Interchange_File_Format 243# Reference: https://worms2d.info/Palette_file 244# WAVE/AVI codec registry: https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml 245>8 string PAL\ \b, palette 246!:mime application/x-riff 247# color palette by Microsoft Corporation 248!:ext pal 249# file size = chunk size + 8 in most cases 250>>4 ulelong+8 x \b, %u bytes 251# Extended PAL Format 252>>12 string plth \b, extended 253# Simple PAL Format 254>>12 string data 255# data chunk size = color entries * 4 + 4 + sometimes extra (4) appended bytes 256>>>16 ulelong x \b, data size %u 257# palVersion is always 0x0300 258#>>>20 leshort x \b, version %#4.4x 259# palNumEntries specifies the number of palette color entries 260>>>22 uleshort x \b, %u entries 261# after palPalEntry sized (number of color entries * 4 ) vector 262>>>(22.s*4) ubequad x 263# jump relative 22 ( 8 + 16) bytes forward points after end of file or to 264# appended extra bytes like in http://safecolours.rigdenage.com/set(ms).zip/Protan(MS).pal 265>>>>&16 ubelong x \b, extra bytes 266>>>>>&-4 ubelong >0 %#8.8x 267# RIFF Device Independent Bitmap format 268# URL: http://fileformats.archiveteam.org/wiki/RDIB 269>8 string RDIB \b, device-independent bitmap 270!:ext rdi/dib 271>>16 string BM 272>>>30 leshort 12 \b, OS/2 1.x format 273>>>>34 leshort x \b, %d x 274>>>>36 leshort x %d 275>>>30 leshort 64 \b, OS/2 2.x format 276>>>>34 leshort x \b, %d x 277>>>>36 leshort x %d 278>>>30 leshort 40 \b, Windows 3.x format 279>>>>34 lelong x \b, %d x 280>>>>38 lelong x %d x 281>>>>44 leshort x %d 282# RIFF MIDI format 283# URL: http://fileformats.archiveteam.org/wiki/RIFF_MIDI 284>8 string RMID \b, MIDI 285# http://extension.nirsoft.net/rmi 286!:mime audio/mid 287#!:mime audio/x-rmid 288!:ext rmi 289# RIFF Multimedia Movie File format 290# URL: http://fileformats.archiveteam.org/wiki/RIFF_Multimedia_Movie 291>8 string RMMP \b, multimedia movie 292!:mime video/x-mmm 293!:ext mmm 294# RIFF wrapper for MP3 295>8 string RMP3 \b, MPEG Layer 3 audio 296#!:mime audio/x-rmp3 297# Microsoft WAVE format (*.wav) 298# URL: http://fileformats.archiveteam.org/wiki/WAV 299>8 string WAVE \b, WAVE audio 300#!:mime audio/vnd.wave 301!:mime audio/x-wav 302# https://www.macdisk.com/macsigen.php 303#!:apple ????WAVE 304!:ext wav/wave 305>>12 string >\0 306>>>12 use riff-walk 307# TR500 call recorder extended header 308>>16 ulelong 0x1E4 309>>>20 leshort 0x11 310>>>>256 byte 4 311>>>>>256 use tr500-call-recorder-header 312# Update: Joerg Jenderek 313# lower case for Corel Draw version 8 Bidi 314>8 string/c cdr 315# skip Corel CCX Clipart 316>>8 string !CDRXcont 317# Corel Draw Picture 318>>>0 use corel-draw 319# URL: http://fileformats.archiveteam.org/wiki/CCX_(Corel) 320# Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/ccx-corel.trid.xml 321>>8 string =CDRXcont \b, Corel Clipart 322!:mime application/x-corel-ccx 323!:ext ccx 324# 3rd chunk data {Corel\040Binary\040Meta\040File} 325#>>>20 string x \b, 3rd '%-s' 326>>>4 ulelong+8 x \b, %u bytes 327# From: Joerg Jenderek 328# URL: https://en.wikipedia.org/wiki/CorelDRAW 329# Reference: http://fileformats.archiveteam.org/wiki/CorelDRAW 330# Picture templates created by newer software start with RIFF type CDT 331>8 string CDT 332>>0 use corel-draw 333# Picture templates with version 4.4 334>8 string CDST 335>>0 use corel-draw 336# pattern created by newer software start with RIFF type PAT 337>8 string PAT 338>>0 use corel-draw 339# From: Joerg Jenderek 340# URL: https://en.wikipedia.org/wiki/Corel_Designer 341# Reference: http://fileformats.archiveteam.org/wiki/Corel_Designer 342>8 string DES 343>>8 string !DESC 344>>>0 use corel-des 345# Corel Draw templates with version 12.5 or Corel Designer illustration 12 346>>8 string =DESC 347# MORE TESTS NEEDED HERE! 348#>>>0 use corel-des 349#>>>0 use corel-draw 350# From: Joerg Jenderek 351# URL: http://fileformats.archiveteam.org/wiki/SHW_(Corel) 352# Reference: http://mark0.net/download/triddefs_xml.7z/defs/s/shw-corel.trid.xml 353# Note: called "CorelSHOW presentation (v4)" by TrID 354# and "Corel Presentation" by DROID via PUID fmt/877 355>8 string shw4 \b, CorelSHOW presentation, version 4 356#!:mime application/octet-stream 357!:mime application/x-corel-shw 358!:ext shw 359# Reference: http://mark0.net/download/triddefs_xml.7z/defs/s/shw-corel-5.trid.xml 360# Note: called "CorelSHOW presentation (v5)" by TrID 361>8 string shw5 \b, CorelSHOW presentation, version 5 362#!:mime application/octet-stream 363!:mime application/x-corel-shw 364!:ext shw 365# Reference: http://mark0.net/download/triddefs_xml.7z/defs/s/shb-corel.trid.xml 366# Note: called "CorelSHOW Background (v5)" by TrID 367>8 string shl5 \b, CorelSHOW Background, version 5 368#!:mime application/octet-stream 369!:mime application/x-corel-shb 370# GRR: no example 371!:ext shb 372# Reference: http://mark0.net/download/triddefs_xml.7z/defs/s/shr-corel.trid.xml 373# Note: called "CorelSHOW player data (v5)" by TrID 374>8 string shr5 \b, CorelSHOW player data, version 5 375#!:mime application/octet-stream 376!:mime application/x-corel-shr 377# GRR: no example 378!:ext shr 379>8 string NUNDROOT \b, Steinberg CuBase 380# From: Joerg Jenderek 381# URL: http://fileformats.archiveteam.org/wiki/MIDI_Instrument_Definition_File 382# Reference: http://mark0.net/download/triddefs_xml.7z/defs/i/idf.trid.xml 383# ftp://curscott.servebeer.com/Download/Apps/_Microsoft/ 384# Visual%20Studio%206.0%20Professional%20MSDN/ 385# SAMPLES/VC98/SDK/GRAPHICS/AUDIO/IDFEDIT/GLOBALS.H 386# Note: called "MIDI Instrument Definition File" by TrID 387>8 string IDF\ LIST \b, MIDI Instrument Definition File 388!:mime audio/x-idf 389!:ext idf 390# 3rd chunk size like: 254 284 286 670 391#>>0x10 ulelong x \b, 3th SIZE %u 392# for debugging purpose display next chunk like: MMAPhdr 393#>>0x14 string x \b, 4th "%-8.8s" 394#>>0x1C ulelong x \b, 4th SIZE 0x%x 395# probably MIDI instrument name like: "Universal-MIDI-Instrument" "instrument name" "General MIDI" 396>>0x30 string x "%s" 397# look for inst TAG 398>>0x31 search/256 inst by 399# probably manufacture name like: "Unspecified Company" "NVidia Corporation" 400>>>&0x24 string x "%s" 401# From: Joerg Jenderek 402# URL: https://en.wikipedia.org/wiki/Microsoft_Flight_Simulator 403# Reference: https://www.fsdeveloper.com/wiki/index.php?title=MDL_file_format_(FSX) 404# http://mark0.net/download/triddefs_xml.7z/defs/m/mdl-fs-gen.trid.xml 405# Note: called "Microsoft Flight Simulator 3D model (generic)" by TrID 406>8 string MDL 407>>12 string MDLH \b, Microsoft Flight Simulator 3D model 408#!:mime application/x-riff 409!:mime application/x-ms-mdl 410!:ext mdl 411#>>>8 string MDL8 \b, version 8? 412# AVI == Audio Video Interleave 413# Reference: http://fileformats.archiveteam.org/wiki/AVI 414>8 string AVI\040 \b, AVI 415# https://reposcope.com/mimetype/video/x-msvideo 416!:mime video/x-msvideo 417# https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml 418#!:mime video/vnd.avi 419!:ext avi/divx 420>>12 string LIST 421>>>20 string hdrlavih 422>>>>&36 lelong x \b, %u x 423>>>>&40 lelong x %u, 424>>>>&4 lelong >1000000 <1 fps, 425>>>>&4 lelong 1000000 1.00 fps, 426>>>>&4 lelong 500000 2.00 fps, 427>>>>&4 lelong 333333 3.00 fps, 428>>>>&4 lelong 250000 4.00 fps, 429>>>>&4 lelong 200000 5.00 fps, 430>>>>&4 lelong 166667 6.00 fps, 431>>>>&4 lelong 142857 7.00 fps, 432>>>>&4 lelong 125000 8.00 fps, 433>>>>&4 lelong 111111 9.00 fps, 434>>>>&4 lelong 100000 10.00 fps, 435# ]9.9,10.1[ 436>>>>&4 lelong <101010 437>>>>>&-4 lelong >99010 438>>>>>>&-4 lelong !100000 ~10 fps, 439>>>>&4 lelong 83333 12.00 fps, 440# ]11.9,12.1[ 441>>>>&4 lelong <84034 442>>>>>&-4 lelong >82645 443>>>>>>&-4 lelong !83333 ~12 fps, 444>>>>&4 lelong 66667 15.00 fps, 445# ]14.9,15.1[ 446>>>>&4 lelong <67114 447>>>>>&-4 lelong >66225 448>>>>>>&-4 lelong !66667 ~15 fps, 449>>>>&4 lelong 50000 20.00 fps, 450>>>>&4 lelong 41708 23.98 fps, 451>>>>&4 lelong 41667 24.00 fps, 452# ]23.9,24.1[ 453>>>>&4 lelong <41841 454>>>>>&-4 lelong >41494 455>>>>>>&-4 lelong !41708 456>>>>>>>&-4 lelong !41667 ~24 fps, 457>>>>&4 lelong 40000 25.00 fps, 458# ]24.9,25.1[ 459>>>>&4 lelong <40161 460>>>>>&-4 lelong >39841 461>>>>>>&-4 lelong !40000 ~25 fps, 462>>>>&4 lelong 33367 29.97 fps, 463>>>>&4 lelong 33333 30.00 fps, 464# ]29.9,30.1[ 465>>>>&4 lelong <33445 466>>>>>&-4 lelong >33223 467>>>>>>&-4 lelong !33367 468>>>>>>>&-4 lelong !33333 ~30 fps, 469>>>>&4 lelong <32224 >30 fps, 470##>>>>&4 lelong x (%lu) 471##>>>>&20 lelong x %lu frames, 472# Note: The tests below assume that the AVI has 1 or 2 streams, 473# "vids" optionally followed by "auds". 474# (Should cover 99.9% of all AVIs.) 475# assuming avih length = 56 476>>>88 string LIST 477>>>>96 string strlstrh 478>>>>>108 string vids video: 479>>>>>>&0 lelong 0 uncompressed 480# skip past vids strh 481>>>>>>(104.l+108) string strf 482>>>>>>>(104.l+132) lelong 1 RLE 8bpp 483>>>>>>>(104.l+132) string/c anim Intel RDX 484>>>>>>>(104.l+132) string/c aur2 AuraVision Aura 2 485>>>>>>>(104.l+132) string/c aura AuraVision Aura 486>>>>>>>(104.l+132) string/c bt20 Brooktree MediaStream 487>>>>>>>(104.l+132) string/c btcv Brooktree Composite Video 488>>>>>>>(104.l+132) string/c cc12 Intel YUV12 489>>>>>>>(104.l+132) string/c cdvc Canopus DV 490>>>>>>>(104.l+132) string/c cham Winnov Caviara Cham 491>>>>>>>(104.l+132) string/c cljr Proprietary YUV 4 pixels 492>>>>>>>(104.l+132) string/c cmyk Common Data Format in Printing 493>>>>>>>(104.l+132) string/c cpla Weitek 4:2:0 YUV Planar 494>>>>>>>(104.l+132) string/c cvid Cinepak 495>>>>>>>(104.l+132) string/c cwlt Microsoft Color WLT DIB 496>>>>>>>(104.l+132) string/c cyuv Creative Labs YUV 497>>>>>>>(104.l+132) string/c d261 H.261 498>>>>>>>(104.l+132) string/c d263 H.263 499>>>>>>>(104.l+132) string/c duck TrueMotion 1.0 500>>>>>>>(104.l+132) string/c dve2 DVE-2 Videoconferencing 501>>>>>>>(104.l+132) string/c fljp Field Encoded Motion JPEG 502>>>>>>>(104.l+132) string/c fvf1 Fractal Video Frame 503>>>>>>>(104.l+132) string/c gwlt Microsoft Greyscale WLT DIB 504>>>>>>>(104.l+132) string/c h260 H.260 505>>>>>>>(104.l+132) string/c h261 H.261 506>>>>>>>(104.l+132) string/c h262 H.262 507>>>>>>>(104.l+132) string/c h263 H.263 508>>>>>>>(104.l+132) string/c h264 H.264 509>>>>>>>(104.l+132) string/c h265 H.265 510>>>>>>>(104.l+132) string/c h266 H.266 511>>>>>>>(104.l+132) string/c h267 H.267 512>>>>>>>(104.l+132) string/c h268 H.268 513>>>>>>>(104.l+132) string/c h269 H.269 514>>>>>>>(104.l+132) string/c i263 Intel I.263 515>>>>>>>(104.l+132) string/c i420 Intel Indeo 4 516>>>>>>>(104.l+132) string/c ian Intel RDX 517>>>>>>>(104.l+132) string/c iclb CellB Videoconferencing Codec 518>>>>>>>(104.l+132) string/c ilvc Intel Layered Video 519>>>>>>>(104.l+132) string/c ilvr ITU-T H.263+ 520>>>>>>>(104.l+132) string/c iraw Intel YUV Uncompressed 521>>>>>>>(104.l+132) string/c iv30 Intel Indeo 3 522>>>>>>>(104.l+132) string/c iv31 Intel Indeo 3.1 523>>>>>>>(104.l+132) string/c iv32 Intel Indeo 3.2 524>>>>>>>(104.l+132) string/c iv33 Intel Indeo 3.3 525>>>>>>>(104.l+132) string/c iv34 Intel Indeo 3.4 526>>>>>>>(104.l+132) string/c iv35 Intel Indeo 3.5 527>>>>>>>(104.l+132) string/c iv36 Intel Indeo 3.6 528>>>>>>>(104.l+132) string/c iv37 Intel Indeo 3.7 529>>>>>>>(104.l+132) string/c iv38 Intel Indeo 3.8 530>>>>>>>(104.l+132) string/c iv39 Intel Indeo 3.9 531>>>>>>>(104.l+132) string/c iv40 Intel Indeo 4.0 532>>>>>>>(104.l+132) string/c iv41 Intel Indeo 4.1 533>>>>>>>(104.l+132) string/c iv42 Intel Indeo 4.2 534>>>>>>>(104.l+132) string/c iv43 Intel Indeo 4.3 535>>>>>>>(104.l+132) string/c iv44 Intel Indeo 4.4 536>>>>>>>(104.l+132) string/c iv45 Intel Indeo 4.5 537>>>>>>>(104.l+132) string/c iv46 Intel Indeo 4.6 538>>>>>>>(104.l+132) string/c iv47 Intel Indeo 4.7 539>>>>>>>(104.l+132) string/c iv48 Intel Indeo 4.8 540>>>>>>>(104.l+132) string/c iv49 Intel Indeo 4.9 541>>>>>>>(104.l+132) string/c iv50 Intel Indeo 5.0 542>>>>>>>(104.l+132) string/c mpeg MPEG 1 Video Frame 543>>>>>>>(104.l+132) string/c mjpg Motion JPEG 544>>>>>>>(104.l+132) string/c mp42 Microsoft MPEG-4 v2 545>>>>>>>(104.l+132) string/c mp43 Microsoft MPEG-4 v3 546>>>>>>>(104.l+132) string/c mrca MR Codec 547>>>>>>>(104.l+132) string/c mrle Run Length Encoding 548>>>>>>>(104.l+132) string/c msvc Microsoft Video 1 549>>>>>>>(104.l+132) string/c phmo Photomotion 550>>>>>>>(104.l+132) string/c qpeq QPEG 1.1 Format Video 551>>>>>>>(104.l+132) string/c rgbt RGBT 552>>>>>>>(104.l+132) string/c rle4 Run Length Encoded 4 553>>>>>>>(104.l+132) string/c rle8 Run Length Encoded 8 554>>>>>>>(104.l+132) string/c rt21 Intel Indeo 2.1 555>>>>>>>(104.l+132) string/c rvx Intel RDX 556>>>>>>>(104.l+132) string/c sdcc Sun Digital Camera Codec 557>>>>>>>(104.l+132) string/c sfmc Crystal Net SFM Codec 558>>>>>>>(104.l+132) string/c smsc SMSC 559>>>>>>>(104.l+132) string/c smsd SMSD 560>>>>>>>(104.l+132) string/c splc Splash Studios ACM Audio Codec 561>>>>>>>(104.l+132) string/c sqz2 Microsoft VXtreme Video Codec 562>>>>>>>(104.l+132) string/c sv10 Sorenson Video R1 563>>>>>>>(104.l+132) string/c tlms TeraLogic Motion Intraframe Codec A 564>>>>>>>(104.l+132) string/c tlst TeraLogic Motion Intraframe Codec B 565>>>>>>>(104.l+132) string/c tm20 TrueMotion 2.0 566>>>>>>>(104.l+132) string/c tmic TeraLogic Motion Intraframe Codec 2 567>>>>>>>(104.l+132) string/c tmot TrueMotion Video Compression 568>>>>>>>(104.l+132) string/c tr20 TrueMotion RT 2.0 569>>>>>>>(104.l+132) string/c ulti Ultimotion 570>>>>>>>(104.l+132) string/c uyvy UYVY 4:2:2 byte ordering 571>>>>>>>(104.l+132) string/c v422 24-bit YUV 4:2:2 format 572>>>>>>>(104.l+132) string/c v655 16-bit YUV 4:2:2 format 573>>>>>>>(104.l+132) string/c vcr1 ATI VCR 1.0 574>>>>>>>(104.l+132) string/c vcr2 ATI VCR 2.0 575>>>>>>>(104.l+132) string/c vcr3 ATI VCR 3.0 576>>>>>>>(104.l+132) string/c vcr4 ATI VCR 4.0 577>>>>>>>(104.l+132) string/c vcr5 ATI VCR 5.0 578>>>>>>>(104.l+132) string/c vcr6 ATI VCR 6.0 579>>>>>>>(104.l+132) string/c vcr7 ATI VCR 7.0 580>>>>>>>(104.l+132) string/c vcr8 ATI VCR 8.0 581>>>>>>>(104.l+132) string/c vcr9 ATI VCR 9.0 582>>>>>>>(104.l+132) string/c vdct Video Maker Pro DIB 583>>>>>>>(104.l+132) string/c vids YUV 4:2:2 CCIR 601 for V422 584>>>>>>>(104.l+132) string/c vivo Vivo H.263 585>>>>>>>(104.l+132) string/c vixl VIXL 586>>>>>>>(104.l+132) string/c vlv1 VLCAP.DRV 587>>>>>>>(104.l+132) string/c wbvc W9960 588>>>>>>>(104.l+132) string/c x263 mmioFOURCC('X','2','6','3') 589>>>>>>>(104.l+132) string/c xlv0 XL Video Decoder 590>>>>>>>(104.l+132) string/c y211 YUV 2:1:1 Packed 591>>>>>>>(104.l+132) string/c y411 YUV 4:1:1 Packed 592>>>>>>>(104.l+132) string/c y41b YUV 4:1:1 Planar 593>>>>>>>(104.l+132) string/c y41p PC1 4:1:1 594>>>>>>>(104.l+132) string/c y41t PC1 4:1:1 with transparency 595>>>>>>>(104.l+132) string/c y42b YUV 4:2:2 Planar 596>>>>>>>(104.l+132) string/c y42t PC1 4:2:2 with transparency 597>>>>>>>(104.l+132) string/c yc12 Intel YUV12 Codec 598>>>>>>>(104.l+132) string/c yuv8 Winnov Caviar YUV8 599>>>>>>>(104.l+132) string/c yuv9 YUV9 600>>>>>>>(104.l+132) string/c yuy2 YUY2 4:2:2 byte ordering packed 601>>>>>>>(104.l+132) string/c yuyv BI_YUYV, Canopus 602>>>>>>>(104.l+132) string/c fmp4 FFMpeg MPEG-4 603>>>>>>>(104.l+132) string/c div3 DivX 3 604>>>>>>>>112 string/c div3 Low-Motion 605>>>>>>>>112 string/c div4 Fast-Motion 606>>>>>>>(104.l+132) string/c divx DivX 4 607>>>>>>>(104.l+132) string/c dx50 DivX 5 608>>>>>>>(104.l+132) string/c xvid XviD 609>>>>>>>(104.l+132) string/c h264 H.264 610>>>>>>>(104.l+132) string/c wmv3 Windows Media Video 9 611>>>>>>>(104.l+132) string/c h264 X.264 or H.264 612>>>>>>>(104.l+132) lelong 0 613##>>>>>>>(104.l+132) string x (%.4s) 614# skip past first (video) LIST 615>>>>(92.l+96) string LIST 616>>>>>(92.l+104) string strlstrh 617>>>>>>(92.l+116) string auds \b, audio: 618# auds strh length = 56: 619>>>>>>>(92.l+172) string strf 620>>>>>>>>(92.l+180) leshort 0x0001 uncompressed PCM 621>>>>>>>>(92.l+180) leshort 0x0002 ADPCM 622>>>>>>>>(92.l+180) leshort 0x0006 aLaw 623>>>>>>>>(92.l+180) leshort 0x0007 uLaw 624>>>>>>>>(92.l+180) leshort 0x0050 MPEG-1 Layer 1 or 2 625>>>>>>>>(92.l+180) leshort 0x0055 MPEG-1 Layer 3 626>>>>>>>>(92.l+180) leshort 0x2000 Dolby AC3 627>>>>>>>>(92.l+180) leshort 0x0161 DivX 628##>>>>>>>>(92.l+180) leshort x (%#.4x) 629>>>>>>>>(92.l+182) leshort 1 (mono, 630>>>>>>>>(92.l+182) leshort 2 (stereo, 631>>>>>>>>(92.l+182) leshort >2 (%d channels, 632>>>>>>>>(92.l+184) lelong x %d Hz) 633# auds strh length = 64: 634>>>>>>>(92.l+180) string strf 635>>>>>>>>(92.l+188) leshort 0x0001 uncompressed PCM 636>>>>>>>>(92.l+188) leshort 0x0002 ADPCM 637>>>>>>>>(92.l+188) leshort 0x0055 MPEG-1 Layer 3 638>>>>>>>>(92.l+188) leshort 0x2000 Dolby AC3 639>>>>>>>>(92.l+188) leshort 0x0161 DivX 640##>>>>>>>>(92.l+188) leshort x (%#.4x) 641>>>>>>>>(92.l+190) leshort 1 (mono, 642>>>>>>>>(92.l+190) leshort 2 (stereo, 643>>>>>>>>(92.l+190) leshort >2 (%d channels, 644>>>>>>>>(92.l+192) lelong x %d Hz) 645# From: Joerg Jenderek 646# URL: http://fileformats.archiveteam.org/wiki/VDR_(VirtualDub) 647# Reference: http://sourceforge.net/projects/virtualdub/files/virtualdub-win/ 648# 1.10.4.35491/VirtualDub-1.10.4-src.7z/src/vdremote/Main.cpp 649# VirtualDub link handler 650>8 string VDRM \b, VirtualDub link 651!:mime video/x-vdr 652!:ext vdr 653>>12 string PATH \b, PATH 654# remote-path to video file 655>>16 pstring/l x %s 656# Animated Cursor format 657# Update: Joerg Jenderek 658# URL: http://fileformats.archiveteam.org/wiki/Windows_Animated_Cursor 659# Reference: https://www.gdgsoft.com/anituner/help/aniformat.htm 660>8 string ACON \b, animated cursor 661!:mime application/x-navi-animation 662# http://extension.nirsoft.net/ani 663#!:mime image/ani 664!:ext ani 665# INAM tag followed by length of title 666>>24 string INAM 667>>>28 pstring/l x "%s" 668# IART tag followed by length of author 669>>>(28.l+32) ubelong 0x49415254 670>>>>&0 pstring/l x %s 671# SoundFont 2 <mpruett@sgi.com> 672# URL: http://fileformats.archiveteam.org/wiki/SoundFont_2.0 673>8 string sfbk \b, SoundFont/Bank 674!:mime audio/x-sfbk 675!:ext sf2 676# MPEG-1 wrapped in a RIFF, apparently 677# URL: http://file.fyicenter.com/17_Video_.DAT_File_Extension_for_VCD_Files.html 678>8 string CDXA \b, wrapped MPEG-1 (CDXA) 679!:mime video/x-cdxa 680!:ext mpg/dat 681# URL: http://fileformats.archiveteam.org/wiki/4X_IMA_ADPCM 682>8 string 4XMV \b, 4X Movie file 683!:mime video/x-4xmv 684!:ext 4xm/4xa 685# AMV-type AVI file: https://wiki.multimedia.cx/index.php?title=AMV 686>8 string AMV\040 \b, AMV 687# http://fileformats.archiveteam.org/wiki/MTV_Video_(.AMV) 688!:mime video/x-amv 689!:ext amv 690#!:ext amv/mtv 691# URL: http://fileformats.archiveteam.org/wiki/WebP 692>8 string WEBP \b, Web/P image 693!:mime image/webp 694!:ext webp 695>>12 use riff-walk 696# From: Joerg Jenderek 697# URL: http://fileformats.archiveteam.org/wiki/RIFF_MIDS 698>8 string MIDS \b, MIDI Stream 699!:mime audio/x-mids 700!:ext mds 701# From: Joerg Jenderek 702# URL: http://mark0.net/soft-trid-e.html 703# Reference: http://fileformats.archiveteam.org/wiki/Trd_(TRID) 704>8 string TRID \b, TrID defs package 705!:mime application/x-trid-trd 706!:ext trd 707# From: Joerg Jenderek 708# URL: http://fileformats.archiveteam.org/wiki/Easy_CD_Creator 709# https://en.wikipedia.org/wiki/Roxio 710# Reference: http://mark0.net/download/triddefs_xml.7z/defs/i/img-cif.trid.xml 711# Note: called "Easy CD Creator disk image" by TrID, 712# "Adaptec CD Image File" by Adaptec CD Creator 2.1.082 1995-1996 and 713# "Easy CD/DVD Creator image" by PowerISO 8.5 714>8 string imag \b, Easy CD Creator disk image 715#!:mime application/octet-stream 716#!:mime application/x-riff 717!:mime application/x-corel-cif 718!:ext cif 719# contains also 2 strings disc info 720# look for ISO 9660 CD-ROM tag handled by ./filesystems 721>>32769 search/4565/s CD001 \b; with 722>>>&-32769 use cdrom 723# From: Joerg Jenderek 724# URL: https://en.wikipedia.org/wiki/CorelDRAW 725# Reference: http://fileformats.archiveteam.org/wiki/CorelDRAW 726# Note: Since version 3 CorelDraw Pictures are RIFF based 727# but data chunks remain proprietary. 728# Since version 14 til 15 packed as "content/riffData.cdr" and 729# since 16 "content/root.dat" in ZIP container 730# TODO: distinguish templates with version 12.5 from Designer illustration 12 731# display information of RIFF based Corel Draw pictures, templates and patterns 7320 name corel-draw 733# display second chunk for debugging 734#>8 string x \b, [8]=%.8s 735>0 string x \b, Corel Draw 736#!:mime image/x-coreldraw 737!:mime application/vnd.corel-draw 738# used by newer pictures templates 739>>8 string CDT 740# used by templates with newer versions since 16 741>>>12 string =fver Picture template (root.dat) 742!:ext dat 743# used by templates with older versions with vrsn tag 744>>>12 string !fver 745# used by templates with older versions 14-15 746>>>>11 string >E Picture template (riffData.cdr) 747!:ext cdr 748# used by templates with older versions 11-13 749>>>>11 string <F Picture template 750!:ext cdt/cdrt 751# used by older templates with version 4.4 752>>8 string CDST Picture template 753!:ext cdt 754# used by templates with version 12.5 755>>8 string DESC Picture template 756!:ext cdt 757# used by newer patterns with version 22 758>>8 string PAT Pattern 759!:ext dat 760# remaining older templates, patterns, drawings 761>>8 default x 762# pattern with old version 4.y 763>>>26 ulelong =0x0000206C Pattern 764!:ext pat 765# pattern with newer versions 766>>>26 ulelong =0x00000D2C Pattern 767!:ext pat 768# remaining older templates or pictures 769>>>26 default x 770# used by older versions 5 - 15 771>>>>12 string =vrsn 772# 4th chunk size unequal 282Ch only found for CDR 773>>>>>26 ulelong !0x0000282c Picture 774!:ext cdr 775>>>>>26 default x Picture or template 776!:ext cdr/cdt 777# used by newer versions since 16 778>>>>12 string =fver Picture (root.dat) 779!:ext dat 780# version marked by 1 ASCII char: space~3, ... , F~15, ... , N~22, ... R~22 template 781>11 string x \b, version 782>11 string >\040 '%-.1s' 783>0 use corel-version 784>4 ulelong+8 x \b, %u bytes 785# 786# display numeric version of RIFF based Corel after 3rd RIFF tag 7870 name corel-version 788# for debugging purpose; vrsn for short content; fver for 16 byte size 789#>12 string x \b, TAG "%-4.4s" 790# 1st data chunk length 2 implies short content version 791>16 ulelong 2 792# vrsn chunk short content interpreted by MajorVersion * 100 + MinorVersion 793>>20 uleshort/100 x %u 794>>20 uleshort%100 >0 \b.%u 795# for debugging purpose display next chunk like: DISP LIST 796#>>22 string x \b, 4th "%-4.4s" 797#>>26 ulelong x \b, 4th SIZE %#x 798# for debugging purpose display 5th chunk like: LIST DISP ccmm osfp 799#>>(26.l+30) string x \b, 5th "%-4.4s" 800# 1st data chunk length 10h implies 16 byte content with version info 801>16 ulelong 0x10 802>>34 ubyte x %u 803>>>33 ubyte >0 \b.%u 804# display information of RIFF based Corel Design formats 8050 name corel-des 806# display second chunk for debugging 807#>8 string x \b, [8]=%.8s 808>12 string x \b, Corel DESIGNER 809!:mime image/x-corel-des 810#!:mime application/x-vnd.corel.designer.document 811# used by Corel Designer with newer versions since 16 812>12 string =fver graphics (root.dat) 813!:ext dat 814# used by Corel Designer templates with older versions with vrsn tag 815>12 string !fver 816# used by Corel Designer with versions 14-15 817>>11 string >D graphics (riffData.cdr) 818!:ext cdr 819# used by Corel Designer with versions 10-12 820>>11 string <E graphics 821!:ext des 822# version indicated by last ASCII char of second chunk tag 823>11 string x \b, version '%-.1s' 824# but vrsn short content is not always version indicator 825# exceptions: 'A'~11.4 'B'~12 'C'~12.5 826>11 string >D 827>>0 use corel-version 828# for debugging purpose display next chunk like: DISP LIST 829#>>22 string x \b, 4th "%-4.4s" 830#>>26 ulelong x \b, 4th SIZE %#x 831# for debugging purpose display 5th chunk like: LIST osfp 832#>>(26.l+30) string x \b, 5th "%-4.4s" 833>4 ulelong+8 x \b, %u bytes 834 835# 836# XXX - some of the below may only appear in little-endian form. 837# 838# Also "MV93" appears to be for one form of Macromedia Director 839# files, and "GDMF" appears to be another multimedia format. 840# 8410 string RIFX RIFF (big-endian) data 842# RIFF Palette format 843>8 string PAL \b, palette 844>>16 beshort x \b, version %d 845>>18 beshort x \b, %d entries 846# RIFF Device Independent Bitmap format 847>8 string RDIB \b, device-independent bitmap 848>>16 string BM 849>>>30 beshort 12 \b, OS/2 1.x format 850>>>>34 beshort x \b, %d x 851>>>>36 beshort x %d 852>>>30 beshort 64 \b, OS/2 2.x format 853>>>>34 beshort x \b, %d x 854>>>>36 beshort x %d 855>>>30 beshort 40 \b, Windows 3.x format 856>>>>34 belong x \b, %d x 857>>>>38 belong x %d x 858>>>>44 beshort x %d 859# RIFF MIDI format 860>8 string RMID \b, MIDI 861# RIFF Multimedia Movie File format 862>8 string RMMP \b, multimedia movie 863# Microsoft WAVE format (*.wav) 864>8 string WAVE \b, WAVE audio 865>>20 leshort 1 \b, Microsoft PCM 866>>>34 leshort >0 \b, %d bit 867>>22 beshort =1 \b, mono 868>>22 beshort =2 \b, stereo 869>>22 beshort >2 \b, %d channels 870>>24 belong >0 %d Hz 871# Corel Draw Picture big endian not tested by real examples 872#>8 string CDRA \b, Corel Draw Picture 873#>8 string CDR6 \b, Corel Draw Picture, version 6 874>8 string CDR 875>>0 use \^corel-draw 876 877# AVI == Audio Video Interleave 878>8 string AVI\040 \b, AVI 879# Animated Cursor format 880>8 string ACON \b, animated cursor 881# Notation Interchange File Format (big-endian only) 882>8 string NIFF \b, Notation Interchange File Format 883# SoundFont 2 <mpruett@sgi.com> 884>8 string sfbk SoundFont/Bank 885 886#------------------------------------------------------------------------------ 887# Sony Wave64 888# see http://www.vcs.de/fileadmin/user_upload/MBS/PDF/Whitepaper/Informations_about_Sony_Wave64.pdf 889# 128 bit RIFF-GUID { 66666972-912E-11CF-A5D6-28DB04C10000 } in little-endian 8900 string riff\x2E\x91\xCF\x11\xA5\xD6\x28\xDB\x04\xC1\x00\x00 Sony Wave64 RIFF data 891# 128 bit + total file size (64 bits) so 24 bytes 892# then WAVE-GUID { 65766177-ACF3-11D3-8CD1-00C04F8EDB8A } 893>24 string wave\xF3\xAC\xD3\x11\x8C\xD1\x00\xC0\x4F\x8E\xDB\x8A \b, WAVE 64 audio 894!:mime audio/x-w64 895# FMT-GUID { 20746D66-ACF3-11D3-8CD1-00C04F8EDB8A } 896>>40 search/256 fmt\x20\xF3\xAC\xD3\x11\x8C\xD1\x00\xC0\x4F\x8E\xDB\x8A \b 897>>>&10 leshort =1 \b, mono 898>>>&10 leshort =2 \b, stereo 899>>>&10 leshort >2 \b, %d channels 900>>>&12 lelong >0 %d Hz 901 902#------------------------------------------------------------------------------ 903# MBWF/RF64 904# see EBU TECH 3306 https://tech.ebu.ch/docs/tech/tech3306-2009.pdf 9050 string RF64\xff\xff\xff\xffWAVEds64 MBWF/RF64 audio 906!:mime audio/x-wav 907>40 search/256 fmt\x20 \b 908>>&6 leshort =1 \b, mono 909>>&6 leshort =2 \b, stereo 910>>&6 leshort >2 \b, %d channels 911>>&8 lelong >0 %d Hz 912