2 #------------------------------------------------------------------------------
3 # $File: images,v 1.227 2022/09/11 20:58:52 christos Exp $
4 # images: file(1) magic for image formats (see also "iff", and "c-lang" for
7 # originally from jef@helios.ee.lbl.gov (Jef Poskanzer),
8 # additions by janl@ifi.uio.no as well as others. Jan also suggested
9 # merging several one- and two-line files into here.
11 # little magic: PCX (first byte is 0x0a)
13 # Targa - matches `povray', `ppmtotga' and `xv' outputs
14 # by Philippe De Muyter <phdm@macqel.be>
15 # URL: http://justsolve.archiveteam.org/wiki/TGA
16 # Reference: http://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/tgaffs.pdf
17 # Update: Joerg Jenderek
18 # at 2, byte ImgType must be 1, 2, 3, 9, 10 or 11
19 # ,32 or 33 (both not observed)
20 # at 1, byte CoMapType must be 1 if ImgType is 1 or 9, 0 otherwise
21 # or theoretically 2-128 reserved for use by Truevision or 128-255 may be used for developer applications
22 # at 3, leshort Index is 0 for povray, ppmtotga and xv outputs
23 # `xv' recognizes only a subset of the following (RGB with pixelsize = 24)
24 # `tgatoppm' recognizes a superset (Index may be anything)
26 # test of Color Map Type 0~no 1~color map
27 # and Image Type 1 2 3 9 10 11 32 33
28 # and Color Map Entry Size 0 15 16 24 32
29 0 ubequad&0x00FeC400000000C0 0
30 # Conflict with MPEG sequences.
32 # Prevent conflicts with CRI ADX.
33 #>(2.S-2) belong !0x28632943
34 # above line does not work for rgb32_top_left_rle.tga
35 # skip some MPEG sequence *.vob and some CRI ADX audio with improbable interleave bits
37 # skip more garbage like *.iso by looking for positive image type
39 # skip some compiled terminfo like xterm+tmux by looking for image type less equal 33
41 # skip some MPEG sequence *.vob HV001T01.EVO winnicki.mpg with unacceptable alpha channel depth 11
43 # skip arches.3200 , Finder.Root , Slp.1 by looking for low pixel depth 1 8 15 16 24 32
56 # display tga bitmap image information
58 >2 ubyte <34 Targa image data
61 # normal extension .tga but some Truevision products used others:
62 # tpic (Apple),icb (Image Capture Board),vda (Video Display Adapter),vst (NuVista),win (UNSURE about that)
63 !:ext tga/tpic/icb/vda/vst
64 # image type 1 2 3 9 10 11 32 33
68 >>17 ubyte&0x0F >0 \bA
69 >2 ubyte&0xF7 3 - Mono
70 # type not found, but by http://www.fileformat.info/format/tga/corion.htm
71 # Compressed color-mapped data, using Huffman, Delta, and runlength encoding
73 # Compressed color-mapped data, using Huffman, Delta, and RLE. 4-pass quadtree- type process
75 # Color Map Type 0~no 1~color map
77 # first color map entry, 0 normal
79 # color map length 0 2 1dh 3bh d9h 100h
81 # 8~run length encoding bit
83 # gimp can create big pictures!
85 >12 uleshort =0 65536 x
86 # image height. 0 interpreted as 65536
89 # Image Pixel depth 1 8 15 16 24 32
91 # X origin of image. 0 normal
93 # Y origin of image. 0 normal; positive for top
95 # Image descriptor: bits 3-0 give the alpha channel depth, bits 5-4 give direction
96 # alpha depth like: 1 8
97 >17 ubyte&0x0F >0 - %d-bit alpha
98 # bits 5-4 give direction. normal bottom left
100 #>17 ubyte ^0x20 - bottom
101 >17 ubyte &0x10 - right
102 #>17 ubyte ^0x10 - left
103 # some info say other bits 6-7 should be zero
104 # but data storage interleave by http://www.fileformat.info/format/tga/corion.htm
105 # 00 - no interleave;01 - even/odd interleave; 10 - four way interleave; 11 - reserved
106 #>17 ubyte&0xC0 0x00 - no interleave
107 >17 ubyte&0xC0 0x40 - interleave
108 >17 ubyte&0xC0 0x80 - four way interleave
109 >17 ubyte&0xC0 0xC0 - reserved
110 # positive length implies identification field
113 # last 18 bytes of newer tga file footer signature
114 >18 search/4261301/s TRUEVISION-XFILE.\0
115 # extension area offset if not 0
117 # length of the extension area. normal 495 for version 2.0
118 >>>(&-4.l) uleshort 0x01EF
120 >>>>&0 string >\0 - author "%-.40s"
121 # Comment[324]=4 * 80 null terminated
122 >>>>&41 string >\0 - comment "%-.80s"
124 >>>>&365 ubequad&0xffffFFFFffff0000 !0
126 >>>>>&-6 uleshort x %d
128 >>>>>&-8 uleshort x \b-%d
130 >>>>>&-4 uleshort x \b-%d
132 >>>>&371 ubequad&0xffffFFFFffff0000 !0
134 >>>>>&-8 uleshort x %d
136 >>>>>&-6 uleshort x \b:%.2d
138 >>>>>&-4 uleshort x \b:%.2d
140 >>>>&377 string >\0 - job "%-.40s"
141 # JobHour Jobminute Jobsecond
142 >>>>&418 ubequad&0xffffFFFFffff0000 !0
143 >>>>>&-8 uleshort x %d
144 >>>>>&-6 uleshort x \b:%.2d
145 >>>>>&-4 uleshort x \b:%.2d
147 >>>>&424 string >\0 - %-.40s
148 # SoftwareVersionNumber
150 >>>>>&40 uleshort/100 x %d
151 >>>>>&40 uleshort%100 x \b.%d
153 >>>>>&42 ubyte >0x20 \b%c
155 >>>>&468 ulelong >0 - keycolor %#8.8x
156 # Denominator of Pixel ratio. 0~no pixel aspect
159 >>>>>&-4 uleshort >0 - aspect %d
160 >>>>>&-2 uleshort x \b/%d
161 # Denominator of Gamma ratio. 0~no Gamma value
164 >>>>>&-4 uleshort >0 - gamma %d
165 >>>>>&-2 uleshort x \b/%d
167 #>>>>&480 ulelong x - col offset %#8.8x
169 #>>>>&484 ulelong x - stamp offset %#8.8x
171 #>>>>&488 ulelong x - scan offset %#8.8x
173 #>>>>&492 ubyte x - Attributes %#x
177 # URL: https://en.wikipedia.org/wiki/Netpbm
178 # The next byte following the magic is always whitespace.
179 # adding 65 to strength so that Netpbm images comes before "x86 boot sector" or
180 # "DOS/MBR boot sector" identified by ./filesystems
182 >3 regex/s =[0-9]{1,50}[\040\t\f\r\n]+[0-9]{1,50} Netpbm image data
183 >>&0 regex =[0-9]{1,50} \b, size = %s x
184 >>>&0 regex =[0-9]{1,50} \b %s
187 # test for whitespace after 2 byte magic
188 >2 regex/2 [\040\t\f\r\n]
189 # skip DROID x-fmt-164-signature-id-583.pbm with ten 0 digits
190 >>3 string !000000000
192 >>>0 string x \b, bitmap
194 !:mime image/x-portable-bitmap
196 # check for character # starting a comment line
201 >0 regex/4 P2[\040\t\f\r\n]
203 >>0 string x \b, greymap
205 # american spelling gray
206 !:mime image/x-portable-graymap
210 >0 regex/4 P3[\040\t\f\r\n]
212 >>0 string x \b, pixmap
214 !:mime image/x-portable-pixmap
218 >0 regex/4 P4[\040\t\f\r\n]
220 >>0 string x \b, rawbits, bitmap
222 !:mime image/x-portable-bitmap
226 >0 regex/4 P5[\040\t\f\r\n]
228 >>0 string x \b, rawbits, greymap
230 !:mime image/x-portable-greymap
234 >0 regex/4 P6[\040\t\f\r\n]
236 >>0 string x \b, rawbits, pixmap
238 !:mime image/x-portable-pixmap
241 # URL: https://en.wikipedia.org/wiki/Netpbm#PAM_graphics_format
242 # Reference: http://fileformats.archiveteam.org/wiki/Portable_Arbitrary_Map
243 # Update: Joerg Jenderek
245 # skip DROID fmt-405-signature-id-589.pam by looking for character like New Line
248 >>3 search/256/b WIDTH Netpbm PAM image file, size =
249 !:mime image/x-portable-arbitrarymap
253 >>>3 search/256/b HEIGHT x
255 # at offset 2 a New Line character (0xA) should appear
256 >>>2 ubyte !0x0A \b, %#x at offset 2 instead new line
258 # From: bryanh@giraffe-data.com (Bryan Henderson)
259 0 string \117\072 Solitaire Image Recorder format
260 >4 string \013 MGI Type 11
261 >4 string \021 MGI Type 17
262 0 string .MDA MicroDesign data
263 >21 ubyte 48 version 2
264 >21 ubyte 51 version 3
265 0 string .MDP MicroDesign page data
266 >21 ubyte 48 version 2
267 >21 ubyte 51 version 3
269 # NIFF (Navy Interchange File Format, a modification of TIFF) images
270 # [GRR: this *must* go before TIFF]
271 0 string IIN1 NIFF image data
274 # Canon RAW version 1 (CRW) files are a type of Canon Image File Format
275 # (CIFF) file. These are apparently all little-endian.
276 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
277 # URL: https://www.sno.phy.queensu.ca/~phil/exiftool/canon_raw.html
278 0 string II\x1a\0\0\0HEAPCCDR Canon CIFF raw image data
279 !:mime image/x-canon-crw
280 >16 uleshort x \b, version %d.
283 # Canon RAW version 2 (CR2) files are a kind of TIFF with an extra magic
284 # number. Put this above the TIFF test to make sure we detect them.
285 # These are apparently all little-endian.
286 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
287 # URL: https://libopenraw.freedesktop.org/wiki/Canon_CR2
288 0 string II\x2a\0\x10\0\0\0CR Canon CR2 raw image data
289 !:mime image/x-canon-cr2
291 >10 ubyte x \b, version %d.
294 # Fujifilm RAF RAW image files with embedded JPEG data and compressed
295 # or uncompressed CFA RAW data. Byte order: Big Endian.
296 # URL: https://libopenraw.freedesktop.org/formats/raf/
297 # Useful info from http://fileformats.archiveteam.org/wiki/Fujifilm_RAF.
298 # File extension: RAF
299 # Works for both the FinePix S2 Pro and the X-T3. Anybody have some more Fuji
300 # raw samples available?
301 # -- David Dyer-Bennet <dd-b@dd-b.net> 9-Sep-2021
302 0 string FUJIFILMCCD-RAW Fujifilm RAF raw image data
303 !:mime image/x-fuji-raf
305 >0x10 string x \b, format version %4.4s
306 >0x1C string x \b, camera %s
308 # Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com)
309 # The second word of TIFF files is the TIFF version number, 42, which has
310 # never changed. The TIFF specification recommends testing for it.
311 0 string MM\x00\x2a TIFF image data, big-endian
315 >(4.L) use \^tiff_ifd
316 0 string II\x2a\x00 TIFF image data, little-endian
323 >0 uleshort x \b, direntries=%d
333 >>>8 uleshort x \b, width=%d
336 >>>8 uleshort x \b, height=%d
339 >>8 uleshort x \b, bps=%d
342 >>4 ulelong 1 \b, compression=
343 >>>8 uleshort 1 \bnone
344 >>>8 uleshort 2 \bhuffman
345 >>>8 uleshort 3 \bbi-level group 3
346 >>>8 uleshort 4 \bbi-level group 4
347 >>>8 uleshort 5 \bLZW
348 >>>8 uleshort 6 \bJPEG (old)
349 >>>8 uleshort 7 \bJPEG
350 >>>8 uleshort 8 \bdeflate
351 >>>8 uleshort 9 \bJBIG, ITU-T T.85
352 >>>8 uleshort 0xa \bJBIG, ITU-T T.43
353 >>>8 uleshort 0x7ffe \bNeXT RLE 2-bit
354 >>>8 uleshort 0x8005 \bPackBits (Macintosh RLE)
355 >>>8 uleshort 0x8029 \bThunderscan RLE
356 >>>8 uleshort 0x807f \bRasterPadding (CT or MP)
357 >>>8 uleshort 0x8080 \bRLE (Line Work)
358 >>>8 uleshort 0x8081 \bRLE (High-Res Cont-Tone)
359 >>>8 uleshort 0x8082 \bRLE (Binary Line Work)
360 >>>8 uleshort 0x80b2 \bDeflate (PKZIP)
361 >>>8 uleshort 0x80b3 \bKodak DCS
362 >>>8 uleshort 0x8765 \bJBIG
363 >>>8 uleshort 0x8798 \bJPEG2000
364 >>>8 uleshort 0x8799 \bNikon NEF Compressed
366 >>>>8 uleshort x \b(unknown %#x)
368 >0 uleshort 0x106 \b, PhotometricInterpretation=
370 >>8 uleshort 0 \bWhiteIsZero
371 >>8 uleshort 1 \bBlackIsZero
373 >>8 uleshort 3 \bRGB Palette
374 >>8 uleshort 4 \bTransparency Mask
375 >>8 uleshort 5 \bCMYK
376 >>8 uleshort 6 \bYCbCr
377 >>8 uleshort 8 \bCIELab
379 >>>8 uleshort x \b(unknown=%#x)
387 >>(8.l) string x \b, name=%s
391 >>(8.l) string x \b, description=%s
395 >>(8.l) string x \b, manufacturer=%s
399 >>(8.l) string x \b, model=%s
405 >0 uleshort 0x112 \b, orientation=
406 >>8 uleshort 1 \bupper-left
407 >>8 uleshort 3 \blower-right
408 >>8 uleshort 6 \bupper-right
409 >>8 uleshort 8 \blower-left
410 >>8 uleshort 9 \bundefined
412 >>>8 uleshort x \b[*%d*]
416 >>8 ulelong x \b, xresolution=%d
420 >>8 ulelong x \b, yresolution=%d
424 >>8 uleshort x \b, resolutionunit=%d
428 >>(8.l) string x \b, software=%s
432 >>(8.l) string x \b, datetime=%s
436 >>(8.l) string x \b, hostcomputer=%s
441 # PrimaryChromaticities
450 # ReferenceBlackWhite
455 >>(8.l) string x \b, copyright=%s
461 >0 uleshort 0x8825 \b, GPS-Data
464 #>0 uleshort x \b, unknown=%#x
467 0 string MM\x00\x2b Big TIFF image data, big-endian
469 0 string II\x2b\x00 Big TIFF image data, little-endian
472 # PNG [Portable Network Graphics, or "PNG's Not GIF"] images
473 # (Greg Roelofs, newt@uchicago.edu)
474 # (Albert Cahalan, acahalan@cs.uml.edu)
476 # 137 P N G \r \n ^Z \n [4-byte length] I H D R [HEAD data] [HEAD crc] ...
481 >0 ubelong x \b, %d x
484 >9 ubyte 0 grayscale,
485 >9 ubyte 2 \b/color RGB,
487 >9 ubyte 4 gray+alpha,
488 >9 ubyte 6 \b/color RGBA,
489 #>10 ubyte 0 deflate/32K,
490 >12 ubyte 0 non-interlaced
491 >12 ubyte 1 interlaced
493 # Standard PNG image.
494 0 string \x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0DIHDR PNG image data
500 # Apple CgBI PNG image.
501 0 string \x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x04CgBI
502 >24 string \x00\x00\x00\x0DIHDR PNG image data (CgBI)
508 # possible GIF replacements; none yet released!
509 # (Greg Roelofs, newt@uchicago.edu)
511 # GRR 950115: this was mine ("Zip GIF"):
512 0 string GIF94z ZIF image (GIF+deflate alpha)
513 !:mime image/x-unknown
515 # GRR 950115: this is Jeremy Wohl's Free Graphics Format (better):
517 0 string FGF95a FGF image (GIF+deflate beta)
518 !:mime image/x-unknown
520 # GRR 950115: this is Thomas Boutell's Portable Bitmap Format proposal
521 # (best; not yet implemented):
523 0 string PBF PBF image (deflate compression)
524 !:mime image/x-unknown
527 # Strength set up to beat 0x55AA DOS/MBR signature word lookups (+65)
528 0 string GIF8 GIF image data
533 >4 string 7a \b, version 8%s,
534 >4 string 9a \b, version 8%s,
537 #>10 ubyte &0x80 color mapped,
538 #>10 ubyte&0x07 =0x00 2 colors
539 #>10 ubyte&0x07 =0x01 4 colors
540 #>10 ubyte&0x07 =0x02 8 colors
541 #>10 ubyte&0x07 =0x03 16 colors
542 #>10 ubyte&0x07 =0x04 32 colors
543 #>10 ubyte&0x07 =0x05 64 colors
544 #>10 ubyte&0x07 =0x06 128 colors
545 #>10 ubyte&0x07 =0x07 256 colors
547 # ITC (CMU WM) raster files. It is essentially a byte-reversed Sun raster,
548 # 1 plane, no encoding.
549 0 string \361\0\100\273 CMU window manager raster image data
552 >12 ulelong >0 %d-bit
554 # Magick Image File Format
555 # URL: https://imagemagick.org/script/miff.php
556 # Reference: http://fileformats.archiveteam.org/wiki/MIFF
557 # Update: Joerg Jenderek
558 # http://www.nationalarchives.gov.uk/pronom/fmt/930
559 0 search/256/bc id=imagemagick
560 # skip bad ASCII text by following new line~0x0A or space~0x20 character
561 #>&0 ubyte x \b, next character %#x
562 # called by TriD ImageMagick Machine independent File Format bitmap
563 >&0 ubyte&0xD5 0 MIFF image data
564 # https://reposcope.com/mimetype/image/miff
568 # examples with standard file(1) magic
569 #>>0 string =id=ImageMagick with standard magic
570 # examples with unusual file(1) magic like
571 >>0 string !id=ImageMagick starting with
572 # start with comment (brace) like http://samples.fileformat.info/.../AQUARIUM.MIF
573 >>>0 ubyte =0x7b comment
574 # skip second character which is often a newline and show comment
576 # does not start with comment, probably letters with other case like Id=ImageMagick
577 # ImageMagick-7.0.9-2/Magick++/demo/smile_anim.miff
579 >>>>0 string >\0 '%-.14s'
580 # URL: https://imagemagick.org/
581 # Reference: https://imagemagick.org/script/magick-vector-graphics.php
582 # From: Joerg Jenderek
583 # Note: all white-spaces between commands are ignored
585 # skip some white spaces
586 >5 search/3 graphic-context ImageMagick Vector Graphic
587 # TODO: look for dangerous commands like CVE-2016-3715
593 0 long 1123028772 Artisan image data
594 >4 long 1 \b, rectangular 24-bit
595 >4 long 2 \b, rectangular 8-bit with colormap
596 >4 long 3 \b, rectangular 32-bit (24-bit with matte)
598 # FIG (Facility for Interactive Generation of figures), an object-based format
599 # URL: http://fileformats.archiveteam.org/wiki/Fig
600 # https://en.wikipedia.org/wiki/Xfig
601 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/f/fig.trid.xml
602 # https://web.archive.org/web/20070920204655/http://epb.lbl.gov/xfig/fig-format.html
603 # Update: Joerg Jenderek
604 # Note: called "FIG vector drawing" by TrID,
605 # 4 byte magic is assumed to be always at offset 0 and
606 # verified by `fig2mpdf -v bootloader.fig && file bootloader.pdf`
607 #0 search/1/tb #FIG FIG image text
608 # GRR: with --keep-going option the line above gives duplicate messages
611 # binary data variant with non ASCII text characters like Control-A or °C in thermostat.fig
614 # display XFIG image describing text, mime type, file name extension and version
616 >8 ubyte x FIG image text
618 # https://reposcope.com/mimetype/image/x-xfig
621 # version string like: 1.4 2.1 3.1 3.2
622 >5 string x \b, version %.3s
623 # some times after version text like: "Produced by xfig version 3.2.5-alpha5"
626 # should be point character (2Eh) of version string according to TrID
627 #>6 ubyte !0x2E \b, at 6 %#x
628 # caret character (23h) at the beginning in most or probaly all exanples
629 #>0 ubyte !0x23 \b, starting with character %#x
630 # URL: http://fileformats.archiveteam.org/wiki/DeskMate_Draw
631 # http://en.wikipedia.org/wiki/Deskmate
632 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dm-fig.trid.xml
633 # From: Joerg Jenderek
634 # Note: called "DeskMate Draw drawing" by TrID
635 0 string \x14FIG DeskMate Drawing
636 #!:mime application/octet-stream
637 !:mime image/x-deskmate-fig
640 # "Cabri 3D Figure" by TrID fig-cabri.trid.xml
641 # "Playmation Figure" by TrID fig-playmation.trid.xml
644 0 string ARF_BEGARF PHIGS clear text archive
645 0 string @(#)SunPHIGS SunPHIGS
646 # version number follows, in the form m.n
647 >40 string SunBin binary
648 >32 string archive archive
650 # GKS (Graphics Kernel System)
651 0 string GKSM GKS Metafile
652 >24 string SunGKS \b, SunGKS
655 0 string BEGMF clear text Computer Graphics Metafile
657 # MGR bitmaps (Michael Haardt, u31b3hs@pool.informatik.rwth-aachen.de)
658 0 string yz MGR bitmap, modern format, 8-bit aligned
659 0 string zz MGR bitmap, old format, 1-bit deep, 16-bit aligned
660 0 string xz MGR bitmap, old format, 1-bit deep, 32-bit aligned
661 0 string yx MGR bitmap, modern format, squeezed
663 # Fuzzy Bitmap (FBM) images
664 0 string %bitmap\0 FBM image data
665 >30 long 0x31 \b, mono
666 >30 long 0x33 \b, color
669 1 string PC\ Research,\ Inc group 3 fax data
670 >29 ubyte 0 \b, normal resolution (204x98 DPI)
671 >29 ubyte 1 \b, fine resolution (204x196 DPI)
672 # From: Herbert Rosmanith <herp@wildsau.idv.uni.linz.at>
673 0 string Sfff structured fax file
675 # From: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
676 # URL: http://fileformats.archiveteam.org/wiki/Award_BIOS_logo
677 # Note: verified by XnView command `nconvert -fullinfo *.EPA`
678 0 string \x11\x06 Award BIOS Logo, 136 x 84
679 !:mime image/x-award-bioslogo
681 0 string \x11\x09 Award BIOS Logo, 136 x 126
682 !:mime image/x-award-bioslogo
684 # https://telparia.com/fileFormatSamples/image/epa/IO.EPA
685 # Note: by bitmap-awbm-v1x1009.trid.xml called "Award BIOS logo bitmap (128x126) (v1)"
686 # verified by RECOIL `recoil2png -o tmp.png IO.EPA; file tmp.png`
687 0 string \x10\x09 Award BIOS Logo, 128 x 126
688 !:mime image/x-award-bioslogo
690 #0 string \x07\x1f BIOS Logo corrupted?
691 # http://www.blackfiveservices.co.uk/awbmtools.shtml
692 # http://biosgfx.narod.ru/v3/
693 # http://biosgfx.narod.ru/abr-2/
695 # Note: by bitmap-awbm.trid.xml called "Award BIOS logo bitmap (v2)"
696 >4 uleshort <1981 Award BIOS Logo, version 2
697 #>4 uleshort <1981 Award BIOS bitmap
698 !:mime image/x-award-bioslogo2
699 #!:mime image/x-award-bmp
701 # image width is a multiple of 4
702 >>4 uleshort&0x0003 0
703 >>>4 uleshort x \b, %d
705 >>4 uleshort&0x0003 >0 \b,
706 >>>4 uleshort&0x0003 =1
707 >>>>4 uleshort x %d+3
708 >>>4 uleshort&0x0003 =2
709 >>>>4 uleshort x %d+2
710 >>>4 uleshort&0x0003 =3
711 >>>>4 uleshort x %d+1
713 # at offset 8 starts imagedata followed by "RGB " marker
715 # PC bitmaps (OS/2, Windows BMP files) (Greg Roelofs, newt@uchicago.edu)
716 # https://en.wikipedia.org/wiki/BMP_file_format#DIB_header_.\
717 # 28bitmap_information_header.29
718 # Note: variant starting direct with DIB header see
719 # http://fileformats.archiveteam.org/wiki/BMP
720 # verified by ImageMagick version 6.8.9-8 command `identify *.dib`
722 # skip bad samples like GAME by looking for valid number of color planes
723 >12 uleshort 1 Device independent bitmap graphic
724 !:mime image/x-ms-bmp
727 >>4 ulelong x \b, %d x
730 # number of color planes (must be 1)
731 #>>12 uleshort >1 \b, %u color planes
732 # compression method: 0~no 1~RLE 8-bit/pixel 3~Huffman 1D
733 #>>16 ulelong 3 \b, Huffman 1D compression
734 >>16 ulelong >0 \b, %u compression
735 # image size is the size of raw bitmap; a dummy 0 can be given for BI_RGB bitmaps
736 >>20 ulelong x \b, image size %u
737 # horizontal and vertical resolution of the image (pixel per metre, signed integer)
738 >>24 ulelong >0 \b, resolution %d x
739 >>>28 ulelong x %d px/m
740 # number of colors in palette, or 0 to default to 2**n
741 #>>32 ulelong >0 \b, %u colors
742 # number of important colors used, or 0 when every color is important
743 >>36 ulelong >0 \b, %u important colors
744 # From: Joerg Jenderek
745 # URL: http://fileformats.archiveteam.org/wiki/VBM_(VDC_BitMap)
746 # Reference: http://csbruce.com/cbm/postings/csc19950906-1.txt
747 # http://mark0.net/download/triddefs_xml.7z
748 # defs/b/bitmap-vbm.trid.xml
749 # defs/b/bitmap-vbm-v3.trid.xml
750 # Note: called "VDC BitMap" by TrID
751 # verified by RECOIL `recoil2png -o tmp.png coke_can.vbm; file tmp.png`
752 # begin with a signature of 'B' 'M' 0xCB, followed by a version byte 2 or 3
753 # Similar to the unrelated Windows BMP format
754 # check for VDC bitmap and then display image dimension and version
756 >2 ubyte 0xCB VDC bitmap
757 !:mime image/x-commodore-vbm
758 # http://recoil.sourceforge.net/formats.html
760 # the VBM format version number: 2 or 3
761 >>3 ubyte x \b, version %u
762 # width of the image in Hi/Lo format
763 >>4 ubeshort x \b, %u
764 # height of the image
766 # version 3 images have the following additional header information
768 # data-encoding type: 0~uncompressed 1~RLE-compressed
769 >>>8 ubyte 0 \b, uncompressed
770 >>>8 ubyte 1 \b, RLE-compressed
771 # byte code for general RLE repetitions
772 #>>>9 ubyte x \b, RLE repetition code 0x%x
774 #>>>14 short >0 \b, reserved 0x%x
775 # length of comment text; 0~no comment text
776 #>>>16 ubeshort >0 \b, comment length %u
777 >>>16 pstring/H >0 \b, comment "%s"
780 # check for magic and version 2 of VDC bitmap or BMP with cbSize=715=CB02
784 # VDC bitmap height or maybe a few OS/2 BMP with nonzero "hotspot coordinates"
787 # check for magic and version 3 of VDC bitmap or BMP with cbSize=971=CB03
789 # check for reserved value (=0) of VDC bitmap
792 # BMP with cbSize=????03CBh and dib header size != 0
795 # cbSize is size of header or file size of Windows BMP bitmap
799 >14 ulelong 12 PC bitmap, OS/2 1.x format
802 >>18 uleshort x \b, %d x
804 # number of color planes (must be 1)
805 #>>22 uleshort !1 \b, %u color planes
806 # number of bits per pixel (color depth); found 4 8
808 # x, y coordinates of the hotspot
809 >>6 uleshort >0 \b, hotspot %ux
811 # cbSize; size of file or header like 1Ah 228C8h
812 >>2 ulelong x \b, cbSize %u
813 #>>2 ulelong x \b, cbSize 0x%8.8x
814 # offBits; offset to bitmap data like:
815 >>10 ulelong x \b, bits offset %u
816 # http://fileformats.archiveteam.org/wiki/BMP#OS.2F2_BMP_2.0 no examples found
817 >14 ulelong 48 PC bitmap, OS/2 2.x format (DIB header size=48)
818 >14 ulelong 24 PC bitmap, OS/2 2.x format (DIB header size=24)
819 # http://entropymine.com/jason/bmpsuite/bmpsuite/q/pal8os2v2-16.bmp
820 # Note: by bitmap-bmp-v2o.trid.xml called "Windows Bitmap (v2o)"
821 >14 ulelong 16 PC bitmap, OS/2 2.x format (DIB header size=16)
825 # image width and height fields are unsigned integers for OS/2
826 >>18 ulelong x \b, %u x
828 # number of bits per pixel (color depth); found 8
829 >>28 uleshort >1 x %u
830 # x, y coordinates of the hotspot
831 >>6 uleshort >0 \b, hotspot %ux
833 # number of color planes (must be 1)
834 #>>26 uleshort >1 \b, %u color planes
835 # cbSize; size of file like: 241E
836 >>2 ulelong x \b, cbSize %u
837 #>>2 ulelong x \b, cbSize 0x%x
838 # offBits; offset to bitmap data like: 41E
839 >>10 ulelong x \b, bits offset %u
840 #>>10 ulelong x \b, bits offset 0x%x
841 >14 ulelong 64 PC bitmap, OS/2 2.x format
845 # image width and height fields are unsigned integers for OS/2
846 >>18 ulelong x \b, %u x
848 # number of bits per pixel (color depth); found 1 4 8
849 >>28 uleshort >1 x %u
850 # x, y coordinates of the hotspot
851 >>6 uleshort >0 \b, hotspot %ux
853 >>26 uleshort >1 \b, %u color planes
854 # cbSize; size of file or headers
855 >>2 ulelong x \b, cbSize %u
856 # BMP with cbSize 000002CBh=715 or 000003CBh=971 maybe misinterpreted as VDC bitmap
857 #>>2 ulelong x \b, cbSize %#x
858 # offBits; offset to bitmap data like 56h 5Eh 8Eh 43Eh
859 >>10 ulelong x \b, bits offset %u
860 #>>10 ulelong x \b, bits offset %#x
861 #>>(10.l) ubequad !0 \b, bits %#16.16llx
862 # BITMAPV2INFOHEADER adds RGB bit masks
863 >14 ulelong 52 PC bitmap, Adobe Photoshop
867 >>18 ulelong x \b, %d x
869 # number of bits per pixel (color depth); found 16 32
871 # x, y coordinates of the hotspot; should be zero for Windows variant
872 >>6 uleshort >0 \b, hotspot %ux
874 # cbSize; size of file like: 14A 7F42
875 >>2 ulelong x \b, cbSize %u
876 #>>2 ulelong x \b, cbSize 0x%x
877 # offBits; offset to bitmap data like: 42h
878 >>10 ulelong x \b, bits offset %u
879 #>>10 ulelong x \b, bits offset 0x%x
880 # BITMAPV3INFOHEADER adds alpha channel bit mask
881 >14 ulelong 56 PC bitmap, Adobe Photoshop with alpha channel mask
885 >>18 ulelong x \b, %d x
887 # number of bits per pixel (color depth); found 16 32
889 # x, y coordinates of the hotspot; should be zero for Windows variant
890 >>6 uleshort >0 \b, hotspot %ux
892 # cbSize; size of file like: 4E 7F46 131DE 14046h
893 >>2 ulelong x \b, cbSize %u
894 #>>2 ulelong x \b, cbSize 0x%x
895 # offBits; offset to bitmap data like: 46h
896 >>10 ulelong x \b, bits offset %u
897 #>>10 ulelong x \b, bits offset 0x%x
899 # jump 4 bytes before end of file/header to skip fmt-116-signature-id-118.dib
900 # broken for large bitmaps
901 #>>(2.l-4) ulong x PC bitmap, Windows 3.x format
902 >>14 ulelong 40 PC bitmap, Windows 3.x format
905 >>>18 ulelong x \b, %d x
907 # 320 x 400 https://en.wikipedia.org/wiki/LOGO.SYS
908 >>>18 ulequad =0x0000019000000140 x
910 >>>18 ulequad !0x0000019000000140
911 # compression method 2~RLE 4-bit/pixel implies also extension rle
914 # not RLE compressed and not 320x400 dimension
916 # "small" dimensions like: 14x15 15x16 16x14 16x16 32x32
917 # https://en.wikipedia.org/wiki/Favicon
918 >>>>>18 ulequad&0xffFFffC0ffFFffC0 =0 x
919 # https://www.politi-kdigital.de/favicon.ico
920 # http://forum.rpc1.org/favicon.ico
922 # "big" dimensions > 63
925 # number of bits per pixel (color depth); found 1 2 4 8 16 24 32
927 # x, y coordinates of the hotspot; there is no hotspot in bitmaps, so values 0
928 #>>>6 uleshort >0 \b, hotspot %ux
929 #>>>>8 uleshort x \b%u
930 # number of color planes (must be 1), except badplanes.bmp for testing
931 #>>>26 uleshort >1 \b, %u color planes
932 # compression method: 0~no 1~RLE 8-bit/pixel 2~RLE 4-bit/pixel 3~Huffman 1D 6~RGBA bit field masks
933 #>>>30 ulelong 3 \b, Huffman 1D compression
934 >>>30 ulelong >0 \b, %u compression
935 # image size is the size of raw bitmap; a dummy 0 can be given for BI_RGB bitmaps
936 >>>34 ulelong >0 \b, image size %u
937 # horizontal and vertical resolution of the image (pixel per metre, signed integer)
938 >>>38 ulelong >0 \b, resolution %d x
939 >>>>42 ulelong x %d px/m
940 # number of colors in palette 16 256, or 0 to default to 2**n
941 #>>>46 ulelong >0 \b, %u colors
942 # number of important colors used, or 0 when every color is important
943 >>>50 ulelong >0 \b, %u important colors
944 # cbSize; often size of file
945 >>>2 ulelong x \b, cbSize %u
946 #>>>2 ulelong x \b, cbSize %#x
947 # offBits; offset to bitmap data like 36h 76h BEh 236h 406h 436h 4E6h
948 >>>10 ulelong x \b, bits offset %u
949 #>>>10 ulelong x \b, bits offset %#x
950 #>>>(10.l) ubequad !0 \b, bits %#16.16llxd
951 >14 ulelong 124 PC bitmap, Windows 98/2000 and newer format
954 >>18 ulelong x \b, %d x
956 # color planes; must be 1
957 #>>>26 uleshort >1 \b, %u color planes
958 # number of bits per pixel (color depth); found 4 8 16 24 32 1 (fmt-119-signature-id-121.bmp) 0 (rgb24jpeg.bmp rgb24png.bmp)
960 # x, y coordinates of the hotspot; should be zero for Windows variant
961 >>6 uleshort >0 \b, hotspot %ux
963 # cbSize; size of file like: 8E AA 48A 999 247A 4F02 7F8A 3F88E B216E 1D4C8A 100008A
964 >>2 ulelong x \b, cbSize %u
965 #>>2 ulelong x \b, cbSize 0x%x
966 # offBits; offset to bitmap data like: 8A 47A ABABABAB (fmt-119-signature-id-121.bmp)
967 >>10 ulelong x \b, bits offset %u
968 #>>10 ulelong x \b, bits offset 0x%x
969 >14 ulelong 108 PC bitmap, Windows 95/NT4 and newer format
972 >>18 ulelong x \b, %d x
974 # number of bits per pixel (color depth); found 8 24 32
976 # x, y coordinates of the hotspot; should be zero for Windows variant
977 >>6 uleshort >0 \b, hotspot %ux
979 # cbSize; size of file like: 82 8A 9A 9F86 1E07A 3007A 88B7A C007A
980 >>2 ulelong x \b, cbSize %u
981 #>>2 ulelong x \b, cbSize 0x%x
982 # offBits; offset to bitmap data like: 7A 7E 46A
983 >>10 ulelong x \b, bits offset %u
984 #>>10 ulelong x \b, bits offset 0x%x
985 # Update: Joerg Jenderek
986 # URL: http://fileformats.archiveteam.org/wiki/OS/2_Icon
987 # Reference: http://www.fileformat.info
988 # /format/os2bmp/spec/902d5c253f2a43ada39c2b81034f27fd/view.htm
989 # Note: verified by command like `deark -l -d3 OS2MEMU.ICO`
991 # skip Lotus smart icon *.smi by looking for valid hotspot coordinates
992 >6 ulelong&0xFF00FF00 =0 OS/2 icon
993 # jump 4 bytes before end of header/file and test for accessibility
994 #>>(2.l-4) ubelong x End of header is OK!
995 !:mime image/x-os2-ico
997 # cbSize; size of header or file in bytes like 1ah 120h 420h
998 >>2 ulelong x \b, cbSize %u
999 # xHotspot, yHotspot; coordinates of the hotspot for icons like 16 32
1000 >>6 uleshort x \b, hotspot %ux
1002 # offBits; offset in bytes to the beginning of the bit-map pel data like 20h
1003 >>10 ulelong x \b, bits offset %u
1004 #>>(10.l) ubequad x \b, bits %#16.16llx
1005 #0 string PI PC pointer image data
1006 #0 string CI PC color icon data
1008 # test also for valid dib header sizes 12 or 64
1009 >14 ulelong <65 OS/2
1010 # test also for valid hotspot coordinates
1011 #>>6 ulelong&0xFE00FE00 =0 OS/2
1012 !:mime image/x-os2-ico
1014 >>14 ulelong 12 1.x color icon
1015 # image width and height fields are unsigned integers for OS/2
1016 >>>18 uleshort x %u x
1017 # stored height = 2 * real height
1018 >>>20 uleshort/2 x %u
1019 # number of bits per pixel (color depth). Typical 32 24 16 8 4 but only 1 found
1020 >>>24 uleshort >1 x %u
1021 # color planes; must be 1
1022 #>>>22 uleshort >1 \b, %u color planes
1023 >>14 ulelong 64 2.x color icon
1024 # image width and height
1025 >>>18 ulelong x %u x
1026 # stored height = 2 * real height
1027 >>>22 ulelong/2 x %u
1028 # number of bits per pixel (color depth). only 1 found
1029 >>>28 uleshort >1 x %u
1030 #>>>26 uleshort >1 \b, %u color planes
1031 # compression method: 0~no 3~Huffman 1D
1032 >>>30 ulelong 3 \b, Huffman 1D compression
1033 #>>>30 ulelong >0 \b, %u compression
1034 # xHotspot, yHotspot; coordinates of the hotspot like 0 1 16 20 32 33 63 64
1035 >>6 uleshort x \b, hotspot %ux
1037 # cbSize; size of header or maybe file in bytes like 1Ah 4Eh 84Eh
1038 >>2 ulelong x \b, cbSize %u
1039 #>>2 ulelong x \b, cbSize %x
1040 # offBits; offset to bitmap data (pixel array) like E4h 3Ah 66h 6Ah 33Ah 4A4h
1041 >>10 ulelong x \b, bits offset %u
1042 #>>10 ulelong x \b, bits offset %#x
1043 #>>(10.l) ubequad !0 \b, bits %#16.16llx
1044 # dib header size: 12~Ch~OS/2 1.x 64~40h~OS/2 2.x
1045 #>>14 ulelong x \b, dib header size %u
1046 #0 string CP PC color pointer image data
1047 # URL: http://fileformats.archiveteam.org/wiki/OS/2_Pointer
1048 # Reference: http://www.fileformat.info/format/os2bmp/egff.htm
1050 # skip many Corel Photo-Paint image "CPT9FILE" by checking for positive bits offset
1052 # skip CPU-Z Report by checking for valid dib header sizes 12 or 64
1057 # display information of OS/2 pointer bitmaps
1060 # http://extension.nirsoft.net/PTR
1061 !:mime image/x-ibm-pointer
1063 >>14 ulelong 12 1.x color pointer
1064 # image width and height fields are unsigned integers for OS/2
1065 >>>18 uleshort x %u x
1066 # stored height = 2 * real height
1067 >>>20 uleshort/2 x %u
1068 # number of bits per pixel (color depth). Typical 32 24 16 8 4 but only 1 found
1069 >>>24 uleshort >1 x %u
1070 # color planes; must be 1
1071 #>>>22 uleshort >1 \b, %u color planes
1072 >>14 ulelong 64 2.x color pointer
1073 # image width and height
1074 >>>18 ulelong x %u x
1075 # stored height = 2 * real height
1076 >>>22 ulelong/2 x %u
1077 # number of bits per pixel (color depth). only 1 found
1078 >>>28 uleshort >1 x %u
1079 #>>>26 uleshort >1 \b, %u color planes
1080 # compression method: 0~no 3~Huffman 1D
1081 >>>30 ulelong 3 \b, Huffman 1D compression
1082 #>>>30 ulelong >0 \b, %u compression
1083 # xHotspot, yHotspot; coordinates of the hotspot like 0 3 4 8 15 16 23 27 31
1084 >>6 uleshort x \b, hotspot %ux
1086 # cbSize; size of header or maybe file in bytes like 1Ah 4Eh
1087 >>2 ulelong x \b, cbSize %u
1088 #>>2 ulelong x \b, cbSize %x
1089 # offBits; offset to bitmap data (pixel array) like 6Ah A4h E4h 4A4h
1090 >>10 ulelong x \b, bits offset %u
1091 #>>10 ulelong x \b, bits offset %#x
1092 #>>(10.l) ubequad !0 \b, bits %#16.16llx
1093 # dib header size: 12~Ch~OS/2 1.x 64~40h~OS/2 2.x
1094 #>>14 ulelong x \b, dib header size %u
1095 # Conflicts with other entries [BABYL]
1096 # URL: http://fileformats.archiveteam.org/wiki/BMP#OS.2F2_Bitmap_Array
1097 # Note: container for OS/2 icon "IC", color icon "CI", color pointer "CP" or bitmap "BM"
1098 #0 string BA PC bitmap array data
1100 # skip old Emacs RMAIL BABYL ./mail.news by checking for low header size
1101 >2 ulelong <0x004c5942 OS/2 graphic array
1102 !:mime image/x-os2-graphics
1104 # cbSize; size of header like 28h 5Ch
1105 >>2 ulelong x \b, cbSize %u
1106 #>>2 ulelong x \b, cbSize %#x
1107 # offNext; offset to data like 0 48h F2h 4Eh 64h C6h D2h D6h DAh E6h EAh 348h
1108 >>6 ulelong >0 \b, data offset %u
1109 #>>6 ulelong >0 \b, data offset %#x
1110 #>>(6.l) ubequad !0 \b, data %#16.16llx
1111 # dimensions of the intended device like 640 x 480 for VGA or 1024 x 768
1112 >>10 uleshort >0 \b, display %u
1113 >>>12 uleshort >0 x %u
1114 # usType of first array element
1115 #>>14 string x \b, usType %2.2s
1116 # 1 space char after "1st"
1117 # no *.bga examples found https://www.openwith.org/file-extensions/bga/1342
1118 >>14 string BM \b; 1st
1120 >>14 string CI \b; 1st
1122 >>14 string CP \b; 1st
1124 >>14 string IC \b; 1st
1126 # no white-black pointer found
1127 #>>14 string PT \b; 1st
1131 # XPM icons (Greg Roelofs, newt@uchicago.edu)
1132 # Update: Joerg Jenderek
1133 # URL: http://fileformats.archiveteam.org/wiki/XPM
1134 # Reference: http://www.x.org/docs/XPM/xpm.pdf
1135 # http://mark0.net/download/triddefs_xml.7z/defs/b/bitmap-xpm.trid.xml
1136 # Note: called "X PixMap bitmap" by TrID and "X-Windows Pixmap Image" by DROID via PUID x-fmt/208
1137 # starting with c comment like: logo.xpm
1139 # 9 byte c-comment "/* XPM */" not at the beginning like: mozicon16.xpm mozicon50.xpm (thunderbird)
1140 >0 search/0xCE /*\ XPM\ */
1141 # skip DROID x-fmt-208-signature-id-620.xpm by looking for char aray without explict length
1142 # and match mh-logo.xpm (emacs)
1145 # non standard because no 9 byte c-comment "/* XPM */" like: logo.xpm in qemu package
1147 # words are separated by a white space which can be composed of space and tabulation characters
1148 >>0 search/0x52 static\040char\040
1149 # skip debug.c testmlc.c by looking for char aray without explict length
1150 # https://www.clamav.net/downloads/production/clamav-0.104.2.tar.gz
1151 # clamav-0.104.2\libclammspack\mspack\debug.c
1154 # display X pixmap image information
1156 >0 string x X pixmap image text
1158 # https://reposcope.com/mimetype/image/x-xpixmap
1161 !:mime image/x-xpixmap
1163 # NO pm example found!
1165 # look for start of character array at beginning of a line like: psetupl.xpm (OpenOffice 4.1.7)
1167 # DEBUG VALUES string
1169 # width with optional white space before like: 16 24 32 48 1280
1170 >>&0 regex/8 [0-9]{1,5} \b, %s
1171 # height with white space like: 15 16 17 24 32 48 1024
1172 >>>&0 regex/8 [0-9]{1,5} x %s
1173 # number of colors with white space like: 1 2 3 4 5 8 11 14 162 255 but unrelistic 4294967295 by hardcopy tool
1174 >>>>&0 regex/12 [0-9]{1,9} x %s
1175 # chars_per_pixel with white space like: 1 2
1176 >>>>>&0 regex/14 [0-9]{1,2} \b, %s chars/pixel
1177 # non standard because not starting with 9 byte c-comment "/* XPM */"
1178 >0 string !/*\ XPM\ */
1179 >>0 string x \b, 1st line "%s"
1181 # Utah Raster Toolkit RLE images (janl@ifi.uio.no)
1182 0 uleshort 0xcc52 RLE image data,
1185 >2 uleshort >0 \b, lower left corner: %d
1186 >4 uleshort >0 \b, lower right corner: %d
1187 >10 ubyte&0x1 =0x1 \b, clear first
1188 >10 ubyte&0x2 =0x2 \b, no background
1189 >10 ubyte&0x4 =0x4 \b, alpha channel
1190 >10 ubyte&0x8 =0x8 \b, comment
1191 >11 ubyte >0 \b, %d color channels
1192 >12 ubyte >0 \b, %d bits per pixel
1193 >13 ubyte >0 \b, %d color map channels
1195 # image file format (Robert Potter, potter@cs.rochester.edu)
1196 0 string Imagefile\ version- iff image data
1197 # this adds the whole header (inc. version number), informative but longish
1200 # Sun raster images, from Daniel Quinlan (quinlan@yggdrasil.com)
1201 0 ubelong 0x59a66a95 Sun raster image data
1202 >4 ubelong >0 \b, %d x
1204 >12 ubelong >0 %d-bit,
1205 #>16 ubelong >0 %d bytes long,
1206 >20 ubelong 0 old format,
1207 #>20 ubelong 1 standard,
1208 >20 ubelong 2 compressed,
1212 >20 ubelong 0xffff reserved for testing,
1213 >24 ubelong 0 no colormap
1214 >24 ubelong 1 RGB colormap
1215 >24 ubelong 2 raw colormap
1216 #>28 ubelong >0 colormap is %d bytes long
1218 # SGI image file format, from Daniel Quinlan (quinlan@yggdrasil.com)
1221 # http://reality.sgi.com/grafica/sgiimage.html
1223 0 ubeshort 474 SGI image data
1224 #>2 ubyte 0 \b, verbatim
1226 #>3 ubyte 1 \b, normal precision
1227 >3 ubyte 2 \b, high precision
1228 >4 ubeshort x \b, %d-D
1229 >6 ubeshort x \b, %d x
1231 >10 ubeshort x \b, %d channel
1233 >80 string >0 \b, "%s"
1235 0 string IT01 FIT image data
1236 >4 ubelong x \b, %d x
1240 0 string IT02 FIT image data
1241 >4 ubelong x \b, %d x
1245 2048 string PCD_IPI Kodak Photo CD image pack file
1246 >0xe02 ubyte&0x03 0x00 , landscape mode
1247 >0xe02 ubyte&0x03 0x01 , portrait mode
1248 >0xe02 ubyte&0x03 0x02 , landscape mode
1249 >0xe02 ubyte&0x03 0x03 , portrait mode
1250 0 string PCD_OPA Kodak Photo CD overview pack file
1252 # FITS format. Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>
1253 # FITS is the Flexible Image Transport System, the de facto standard for
1254 # data and image transfer, storage, etc., for the astronomical community.
1255 # (FITS floating point formats are big-endian.)
1256 0 string SIMPLE\ \ = FITS image data
1259 >109 string 8 \b, 8-bit, character or unsigned binary integer
1260 >108 string 16 \b, 16-bit, two's complement binary integer
1261 >107 string \ 32 \b, 32-bit, two's complement binary integer
1262 >107 string -32 \b, 32-bit, floating point, single precision
1263 >107 string -64 \b, 64-bit, floating point, double precision
1266 0 string This\ is\ a\ BitMap\ file Lisp Machine bit-array-file
1268 # From SunOS 5.5.1 "/etc/magic" - appeared right before Sun raster image
1271 0 ubeshort 0x1010 PEX Binary Archive
1273 # DICOM medical imaging data
1274 # URL: https://en.wikipedia.org/wiki/DICOM#Data_format
1275 # Note: "dcm" is the official file name extension
1276 # XnView mention also "dc3" and "acr" as file name extension
1277 128 string DICM DICOM medical imaging data
1278 !:mime application/dicom
1281 # XWD - X Window Dump file.
1282 # URL: http://fileformats.archiveteam.org/wiki/XWD
1283 # Reference: https://wiki.multimedia.cx/index.php?title=XWD
1284 # http://mark0.net/download/triddefs_xml.7z/defs/x/xdm-x11.trid.xml
1285 # Note: called "X-Windows Screen Dump (X11)" by TrID and
1286 # "X-Windows Screen Dump" version X11 by DROID via PUID fmt/483
1287 # verfied by XnView `nconvert -in xwd -info *`
1288 # and ImageMagick 6.9.11 `identify -verbose *` as XWD X Windows system window dump
1289 # and `xwud -in fig41.wxd -dumpheader`
1290 # As described in /usr/X11R6/include/X11/XWDFile.h
1291 # used by the xwd program.
1292 # Bradford Castalia, idaeim, 1/01
1293 # updated by Adam Buchbinder, 2/09 and Joerg Jenderek, May 2022
1294 # The following assumes version 7 of the format; the first long is the length
1295 # of the header, which is at least 25 4-byte longs, and the one at offset 8
1296 # is a constant which is always either 1 or 2. Offset 12 is the pixmap depth,
1297 # which is a maximum of 32.
1298 # Size of the entire file header (bytes) like: 100 104 105 106 107 109 110 113 114 115 118 172
1300 # pixmap_format; Pixmap format; 0~1-bit (XYBitmap) format 1~single-plane (XYPixmap) 2~bitmap with two or more planes (ZPixmap)
1302 # pixmap_depth; Pixmap depth; value 1 - 32
1304 # file_version; XWD_FILE_VERSION=7
1306 # skip DROID fmt-401-signature-id-618.xwd by test for existing border field
1307 >>>>96 ubelong x X-Window screen dump image data, version X11
1308 # ./images (version 1.205) labeled the above entry as "XWD X Window Dump image data"
1309 # https://reposcope.com/mimetype/image/x-xwindowdump
1310 !:mime image/x-xwindowdump
1313 # https://www.xnview.com/en/image_formats/ NO example with x11 suffix FOUND!
1315 # https://www.nationalarchives.gov.uk/PRONOM/fmt/401 NO example with xdm suffix FOUND!
1316 #!:ext xwd/dmp/x11/xmd
1317 # file comment if header > 100; so not in MARBLES.XWD and hardcopy-x-window-v11.xwd
1319 # comment or windows name
1320 >>>>>>100 string >\0 \b, "%s"
1321 # pixmap_width; pixmap width like: 576 800 1014 1280 1419 NOT -1414812757=abABabABh
1322 >>>>>16 ubelong x \b, %dx
1323 # pixmap_height; pixmap height like: 449 454 600 704 720 1001 1024 NOT -1414812757=abABabABh
1324 >>>>>20 ubelong x \b%dx
1325 # pixmap_depth; pixmap depth
1326 >>>>>12 ubelong x \b%d
1327 # XOffset; Bitmap X offset; pixel numbers to ignore at the beginning of each scan-line
1328 #>>>>>24 ubelong x \b, %u ignore
1329 # ByteOrder; byte order of image data: 0~least significant byte first 1~most significant byte first
1330 >>>>>28 ubelong >0 \b, order %u
1331 # BitmapUnit; bitmap base data size unit in each scan line like: 8 16 32
1332 #>>>>>32 ubelong x \b, unit %u
1333 # BitmapBitOrder; bit-order of image data; apparently same as ByteOrder
1334 #>>>>>36 ubelong x \b, bit order %u
1335 # BitmapPad; number of padding bits added to each scan line like: 8 16 32
1336 #>>>>>40 ubelong x \b, pad %u
1337 # BitsPerPixel; Bits per pixel: 1~StaticGray and GrayScale 2-15~StaticColor and PseudoColor 16,24,32~TrueColor and DirectColor
1338 #>>>>>44 ubelong x \b, %u bits/pixel
1339 # BytesPerLine; size of each scan line in bytes
1340 #>>>>>48 ubelong x \b, %u bytes/line
1341 # VisualClass; class of the image: 0~StaticGray 1~GrayScale 2~StaticColor 3~PseudoColor 4~TrueColor 5~DirectColor
1342 #>>>>>52 ubelong x \b, %u Class
1343 # RedMask; red RGB mask values used by ZPixmaps like: 0 0xff0000
1344 #>>>>>56 ubelong !0 \b, %#x red
1345 # GreenMask; green mask like: 0
1346 #>>>>>60 ubelong !0 \b, %#x green
1347 # BlueMask; blue mask like: 0 0xff
1348 #>>>>>64 ubelong !0 \b, %#x blue
1349 # BitsPerRgb; Size of each color mask in bits like: 0 1 8 24
1350 #>>>>>68 ubelong x \b, %u bits/RGB
1351 # NumberOfColors; number of colors in image like: 256 4 2 0 (WHAT DOES THIS MEAN?)
1352 >>>>>72 ubelong x \b, %u colors
1353 # ColorMapEntries; number of entries in color map like: 256 16 2 0~no color map
1354 >>>>>76 ubelong x %u entries
1355 # WindowWidth; window width
1356 #>>>>>80 ubelong x \b, %u width
1357 # WindowHeight; window height
1358 #>>>>>84 ubelong x \b, %u height
1359 # WindowX; Window upper left X coordinate like: 0 24 32 80 237 290 422 466 568 (lenna.dmp)
1360 >>>>>88 ubelong !0 \b, x=%d
1361 # WindowY; Window upper left Y coordinate like: 0 8 18 26 60 73 107 (fig41.xwd) 128
1362 >>>>>92 ubelong !0 \b, y=%d
1363 # WindowBorderWidth; Window border width; apparently pixmap_width=WindowWidth+2*WindowBorderWidth
1364 # like: 1 (fig41.xwd) 2 (maze.dmp) 3 (lenna.dmp mandrill.dmp)
1365 >>>>>96 ubelong >0 \b, %u border
1366 # From: Joerg Jenderek
1367 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/x/xdm-x10.trid.xml
1368 # Note: called "X-Windows Screen Dump (X10)" by TrID and
1369 # "X-Windows Screen Dump" version X10 by DROID via PUID x-fmt/300
1370 # verfied by XnView `nconvert -in xwd -info *`
1371 # HeaderSize is the size of the header in bytes; always 40 for X10 variant
1372 0 ubelong =0x000000028
1373 # FileVersion; always 6 for X10 variant
1375 # skip DROID x-fmt-300-signature-id-619.xdm by test existing border field
1376 >>36 ubeshort x X-Window screen dump image data, version X10
1377 !:mime image/x-xwindowdump
1379 # http://www.nationalarchives.gov.uk/pronom/fmt/401 NO example with xdm suffix FOUND!
1381 # PixmapWidth; pixmap width like: 127 1280
1382 >>>20 ubelong x \b, %d
1383 # PixmapHeight; pixmap height like: 64 1024
1384 >>>24 ubelong x \bx%d
1385 # DisplayPlanes; number of display planes like: 1 4 8
1386 >>>12 ubelong x \bx%u
1387 # DisplayType; display type like: 1 3
1388 #>>>8 ubelong x \b, type %u
1389 # PixmapFormat; pixmap format like: 1~bitmap with two or more planes (ZPixmap) 0~single-plane bitmap (XYBitmap)
1390 #>>>16 ubelong x \b, %u format
1391 # WindowWidth; window width; probably PixmapWidth=WindowWidth+2*WindowBorderWidth
1392 #>>>28 ubeshort x \b, width %u
1393 # WindowHeight; window height; probably PixmapWidth=PixmapHeight+2*WindowBorderWidth
1394 #>>>30 ubeshort x \b, height %u
1395 # WindowX; window upper left X coordinate like: 0
1396 >>>32 ubeshort !0 \b, x=%d
1397 # WindowY; window upper left Y coordinate like: 0
1398 >>>34 ubeshort !0 \b, y=%d
1399 # WindowBorderWidth; window border width like: 0
1400 >>>36 ubeshort !0 \b, %u border
1401 # WindowNumColors; Number of color entries in window like: 2 16 256
1402 #>>>38 ubeshort x \b, %u colors
1403 # if the image is a PseudoColor image, a color map immediately follows the header. X10COLORMAP[WindowNumColors];
1404 # EntryNumber; number of the color-map entry like: 0
1405 #>>>40 ubeshort x \b, colors #%u
1406 # Red; red-channel value
1407 #>>>42 ubeshort !0 \b, red %#x
1408 # Green; green-channel value
1409 #>>>44 ubeshort !0 \b, green %#x
1410 # Blue; blue-channel value
1411 #>>>46 ubeshort !0 \b, blue %#x
1413 #>>>48 ubeshort x \b, colors #%u
1415 # PDS - Planetary Data System
1416 # These files use Parameter Value Language in the header section.
1417 # Unfortunately, there is no certain magic, but the following
1418 # strings have been found to be most likely.
1419 0 string NJPL1I00 PDS (JPL) image data
1420 2 string NJPL1I PDS (JPL) image data
1421 0 string CCSD3ZF PDS (CCSD) image data
1422 2 string CCSD3Z PDS (CCSD) image data
1423 0 string PDS_ PDS image data
1424 0 string LBLSIZE= PDS (VICAR) image data
1426 # pM8x: ATARI STAD compressed bitmap format
1428 # from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
1429 # p M 8 5/6 xx yy zz data...
1430 # Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
1431 # bytes either run horizontally (pM85) or vertically (pM86). yy is the
1432 # most frequent byte, xx and zz are runlength escape codes, where xx is
1433 # used for runs of yy.
1435 0 string pM85 Atari ST STAD bitmap image data (hor)
1436 >5 ubyte 0x00 (white background)
1437 >5 ubyte 0xFF (black background)
1438 0 string pM86 Atari ST STAD bitmap image data (vert)
1439 >5 ubyte 0x00 (white background)
1440 >5 ubyte 0xFF (black background)
1442 # From: Alex Myczko <alex@aiei.ch>
1443 # https://www.atarimax.com/jindroush.atari.org/afmtatr.html
1444 0 uleshort 0x0296 Atari ATR image
1446 # URL: http://fileformats.archiveteam.org/wiki/DEGAS_image
1447 # Reference: https://wiki.multimedia.cx/index.php?title=Degas
1448 # From: Joerg Jenderek
1449 # http://mark0.net/download/triddefs_xml.7z/defs/b
1450 # bitmap-pi2-degas.trid.xml bitmap-pi3-degas.trid.xml
1451 # bitmap-pc1-degas.trid.xml bitmap-pc2-degas.trid.xml bitmap-pc3-degas.trid.xml
1452 # Note: verified by NetPBM `pi3topbm sigirl1.pi3 | file`
1453 # `deark -m degas -l -d2 ataribak.pi1`
1454 # XnView `nconvert -fullinfo *.p??`
1455 # DEGAS low-res uncompressed bitmap *.pi1
1457 # skip some ISO 9660 CD-ROM filesystems like plpbt.iso by test for 4 non black colors in palette entries
1459 # skip g3test.g3 by test for unused bits of 2nd color entry
1460 >>4 ubeshort&0xF000 0
1461 #>>>0 beshort x 1ST_VALUE=%x
1462 >>>-0 offset x FILE_SIZE=%lld
1463 # standard DEGAS low-res uncompressed bitmap *.pi1 with file size 32034
1464 >>>-0 offset =32034 VARIANT_STANDARD
1465 #>>>>0 beshort x 1st_VALUE=%x
1466 # like: 8ball.pi1 teddy.pi1 sonic01.pi1
1467 >>>>0 use degas-bitmap
1468 # about 61 DEGAS Elite low-res uncompressed bitmap *.pi1 with file size 32066
1469 >>>-0 offset =32066 VARIANT_ELITE
1470 # like: spider.pi1 pinkgirl.pi1 frog3.pi1
1471 >>>>0 use degas-bitmap
1472 # about 55 DEGAS Elite low-res uncompressed bitmap *.pi1 with file size 32128
1473 >>>-0 offset =32128 VARIANT_3
1474 # like: mountain.pi1 bigspid.pi1 alf33.pi1
1475 >>>>0 use degas-bitmap
1476 # 1 DEGAS Elite low-res uncompressed bitmap *.pi1 with file size 44834
1477 >>>-0 offset =44834 VARIANT_4
1479 >>>>0 use degas-bitmap
1480 # DEGAS mid-res uncompressed bitmap *.pi2 (strength=50) after GEM Images like:
1481 # BEETHVEN.IMG CHURCH.IMG GAMEOVR4.IMG TURKEY.IMG clinton.img
1484 # skip many control files like gnucash-4.8.setup.exe.aria2 by test for non black in 4 palette entries
1486 # skip control file load-v0001.aria2 by test for unused bits of 5th color palette entry
1487 >>10 ubeshort&0xF000 0
1488 # skip many GEM Image data like DANCER.IMG GAMEOVR4.IMG SHIP.IMG by test for unused bits of 8th color palette entry
1489 >>>16 ubeshort&0xF000 0
1490 # skip many GEM Image data like BEETHVEN.IMG CABINETS.IMG MEMO.IMG by test for unused bits of 14th color palette entry
1491 >>>>28 ubeshort&0xF000 0
1492 # skip few GEM Image data like CHURCH.IMG by test for unused bits of 15th color palette entry
1493 >>>>>30 ubeshort&0xF000 0
1494 # skip many GEM Image data like TIGER.IMG TURKEY.IMG XMAS.IMG by test for unused bits of 16th color palette entry
1495 >>>>>>32 ubeshort&0xF000 0
1496 # skip GEM Image data like clinton.img by test for existing bytes at the end
1498 >>>>>>>>0 use degas-bitmap
1499 # DEGAS high-res uncompressed bitmap *.pi3
1501 # skip Intel ia64 COFF msvcrt.lib by test for unused bits of 1st atari color palette entry
1502 >2 ubeshort&0xF000 0
1503 # skip few Adobe PhotoShop Brushes like Faux-Spitzen.abr by check
1504 # for invalid Adobe PhotoShop Brush UTF16-LE string length
1506 # many like: 4th_ofj2.pi3 GEMINI03.PI3 PEOPLE18.PI3 POWERFIX.PI3 abydos.pi3 highres.pi3 sigirl1.pi3 vanna5.pi3
1507 >>>0 use degas-bitmap
1508 # Adobe PhotoShop Brush UTF16-LE string length 15 "Gitter - klein " 8 "Kreis 1 "
1510 #>>19 ubyte !0 \b, NOTE LENGTH %u
1511 #>>>21 lestring16 x \b, BRUSH NOTE "%s"
1512 >>>(19.b*2) ubequad x
1513 # maybe last character of Adobe PhotoShop Brush UTF16-LE string and terminating nul char like
1514 # 006e0000 for n in "Faux-Spitzen.abr" 00310000 for 1 in "Verschiedene Spitzen.abr"
1515 # 00000000 "LEREDACT.PI3" 03730773 "TBX_DEMO.PI3"
1516 #>>>>&8 ubelong x \b, LAST CHAR+NIL %8.8x
1517 >>>>&8 ubelong&0xff00ffFF !0
1518 # many DEGAS bitmap like: ARABDEMO.PI3 ELMRSESN.PI3 GEMVIEW.PI3 LEREDACT.PI3 PICCOLO.PI3 REPRO_JR.PI3 ST_TOOLS.PI3 TBX_DEMO.PI3 evgem7.pi3
1519 >>>>>0 use degas-bitmap
1520 # test for last character of Adobe PhotoShop Brush UTF16-LE string and terminating nul char
1521 >>>>&8 ubelong&0xff00ffFF =0
1522 # select last DEGAS bitmaps by invalid last char of brush note like BASICNES.PI3 DB_HELP.PI3 DB_WRITR.PI3 LEREDACT.PI3
1523 >>>>>&-4 ubelong&0x00FF0000 <0x00200000
1524 >>>>>>0 use degas-bitmap
1525 # last character of Adobe PhotoShop Brush UTF16-LE note
1526 #>>>>>&-4 ubelong&0x00FF0000 >0x001F0000 \b, THAT IS ABR
1527 # DEGAS low-res compressed bitmap *.pc1 like: BATTLSHP.PC1 GNUCHESS.PC1 MEDUSABL.PC1 MOONLORD.PC1 WILDROSE.PC1
1529 # skip lif files handled via ./lif by test for unused bits of 1st palette entry
1530 >2 ubeshort&0xF000 0
1531 >>0 use degas-bitmap
1532 # DEGAS mid-res compressed bitmap *.pc2 like: abydos.pc2 ARTIS3.PC2 SMTHDRAW.PC2 STAR_2K.PC2 TX2_DEMO.PC2
1535 # DEGAS high-res compressed bitmap *.pc3 like: abydos.pc3 COYOTE.PC3 ELEPHANT.PC3 TX2_DEMO.PC3 SMTHDRAW.PC3
1538 # display information of Atari DEGAS and DEGAS Elite bitmap images
1540 >0 ubyte x Atari DEGAS
1541 #!:mime application/octet-stream
1542 !:mime image/x-atari-degas
1544 >0 ubyte =0x80 Elite compressed
1546 #>0 ubyte =0x00 uncompressed
1549 # check for existence of footer for DEGAS Elite images
1550 >>32042 ubequad x Elite
1551 >0 beshort 0x0000 bitmap
1553 >0 beshort 0x0001 bitmap
1555 >0 beshort 0x0002 bitmap
1556 # no example with SUH extension found
1559 >0 beshort 0x8000 bitmap
1561 >0 beshort 0x8001 bitmap
1563 >0 beshort 0x8002 bitmap
1565 # low resolution; 320x200, 16 colors
1566 >1 ubyte =0 320 x 200 x 16
1567 # medium resolution; 640x200, 4 colors
1568 >1 ubyte =1 640 x 200 x 4
1569 # high resolution; 640x400, 2 colors
1570 >1 ubyte =2 640 x 400 x 2
1571 # http://fileformats.archiveteam.org/wiki/Atari_ST_color_palette
1572 # hardware_palette[16]; 9 bit ?????RRR?GGG?BBB; 12 bit ????RRRRGGGGBBBB for Atari STE
1573 # for Atari DEGAS apparently no Spectrum 512 Enhanced 15 bit palette RGB?RRRRGGGGBBBB
1574 # Red Green Blue unused bit ? often 0 but not bilboule.pi1; color_value (examples or numbers)
1575 # 1st color palette entry like: 0777 (61) 0fff (LEREDACT.PI3) 0fcf (devgem7.pi3) 0001 (9)
1576 >2 ubeshort x \b, color palette %4.4x
1577 # 2nd palette entry like: 0000 (32) 0700 (38) 0f00 (LEREDACT.PI3 devgem7.pi3)
1581 # 4th palette entry like: 0000 (72)
1584 >10 ubeshort x %4.4x
1587 #>12 ubeshort x %4.4x
1588 # 7th palette entry like: 0000 (16) 0001 (ELMRSESN.PI3 elmrsesn.pi3) 0070 (51) 00f0 (BASICNES.PI3 LEREDACT.PI3) 00f8 (devgem7.pi3)
1589 #>14 ubeshort x %4.4x
1591 #>16 ubeshort x %4.4x
1593 #>18 ubeshort x %4.4x
1595 #>20 ubeshort x %4.4x
1597 #>22 ubeshort x %4.4x
1599 #>24 ubeshort x %4.4x
1601 #>26 ubeshort x %4.4x
1602 # 14th palette entry
1603 #>28 ubeshort x %4.4x
1604 # 15th palette entry
1605 #>30 ubeshort x %4.4x
1606 # 16th palette entry
1607 #>32 ubeshort x %4.4x
1608 # data[16000] for uncompressed images; pixel data
1609 #>34 ubequad x \b, DATA %#16.16llx...
1610 # footer for Elite variant images
1611 # https://www.fileformat.info/format/atari/egff.htm
1612 # https://pulkomandy.tk/projects/GrafX2/wiki/Develop/FileFormats/Atari
1613 # left_color_animation[4]; like: 0000000000000000 0000000100020003 fffafff000000030 (bigspid.pi1)
1614 #>32034 ubequad !0 \b, color animations %16.16llx (left)
1615 # right_color_animation[4]; like: 0000000000000000 0000000100020003
1616 #>>32042 ubequad !0 %16.16llx (right)
1617 # channel_direction[4]; 0~left 1~none 2~right like: 0001000100010001 0002000000010001 (cycle2.pi1)
1618 # sometimes unexpected like: feaafc0000000000 (bigspid.pi1)
1619 #>32050 ubequad !0 \b, channel directions %16.16llx
1620 # channel_delay[4]; 128 - channel delay, timebase 1/60 s
1621 #>32058 ubequad !0 \b, channel delays %16.16llx
1623 # From: Joerg Jenderek
1624 # URL: http://fileformats.archiveteam.org/wiki/ImageLab/PrintTechnic
1625 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/b/bitmap-b_w.trid.xml
1626 # Note: called "ImageLab bitmap" by TrID
1627 # verfied by XnView `nconvert -fullinfo "MAEDCHEN.B&W"`
1628 0 string B&W256 ImageLab bitmap
1630 # https://www.xnview.com/de/image_formats/
1631 # GRR: add char & inside parse_ext in ../../src/apprentice.c to avoid in file version 5.40 error like:
1632 # Magdir\images, 1090: Warning: EXTENSION type ` b_w/b&w' has bad char '&'
1635 >6 ubeshort x \b, %u
1640 # This is bad magic 0x5249 == 'RI' conflicts with RIFF and other
1642 # SGI RICE image file <mpruett@sgi.com>
1643 #0 ubeshort 0x5249 RICE image
1645 #>4 ubeshort x (%d x
1647 #>8 ubeshort 0 8 bit
1648 #>8 ubeshort 1 10 bit
1649 #>8 ubeshort 2 12 bit
1650 #>8 ubeshort 3 13 bit
1651 #>10 ubeshort 0 4:2:2
1652 #>10 ubeshort 1 4:2:2:4
1653 #>10 ubeshort 2 4:4:4
1654 #>10 ubeshort 3 4:4:4:4
1656 #>12 ubeshort 2 CCIR601
1657 #>12 ubeshort 3 RP175
1661 # From: Dan Fandrich <dan@coneharvesters.com>
1662 # updated by Joerg Jenderek at Feb 2013 by https://de.wikipedia.org/wiki/PCX
1663 # https://web.archive.org/web/20100206055706/http://www.qzx.com/pc-gpe/pcx.txt
1664 # GRR: original test was still too general as it catches xbase examples T5.DBT,T6.DBT with 0xa000000
1665 # test for bytes 0x0a,version byte (0,2,3,4,5),compression byte flag(0,1), bit depth (>0) of PCX or T5.DBT,T6.DBT
1666 0 ubelong&0xffF8fe00 0x0a000000
1667 # for PCX bit depth > 0
1669 # test for valid versions
1674 >>>>1 ubyte 0 ver. 2.5 image data
1675 >>>>1 ubyte 2 ver. 2.8 image data, with palette
1676 >>>>1 ubyte 3 ver. 2.8 image data, without palette
1677 >>>>1 ubyte 4 for Windows image data
1678 >>>>1 ubyte 5 ver. 3.0 image data
1679 >>>>4 uleshort x bounding box [%d,
1680 >>>>6 uleshort x %d] -
1681 >>>>8 uleshort x [%d,
1682 >>>>10 uleshort x %d],
1683 >>>>65 ubyte >1 %d planes each of
1684 >>>>3 ubyte x %d-bit
1685 >>>>68 ubyte 1 colour,
1686 >>>>68 ubyte 2 grayscale,
1687 # this should not happen
1688 >>>>68 default x image,
1689 >>>>12 uleshort >0 %d x
1690 >>>>>14 uleshort x %d dpi,
1691 >>>>2 ubyte 0 uncompressed
1692 >>>>2 ubyte 1 RLE compressed
1695 # From: Asbjoern Sloth Toennesen <asbjorn@lila.io>
1696 # URL: http://fileformats.archiveteam.org/wiki/PSD
1697 # Reference: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/
1698 # Note: verfied by XnView `nconvert -fullinfo *.psd *.psb *.pdd`
1699 # and ImageMagick `identify -verbose *.pdd`
1701 # skip DROID x-fmt-92-signature-id-277.psd by checking valid width
1702 >18 ubelong >0 Adobe Photoshop
1703 !:mime image/vnd.adobe.photoshop
1705 # version: always equal to 1, but 2 for PSB
1707 # URL: http://fileformats.archiveteam.org/wiki/PhotoDeluxe
1708 # EXTRAS/PHOTOS/DEMOPIX/ORIGINAL.PDD
1709 >>>34 search/0xC0d7 PHUT Image (PhotoDeluxe)
1711 >>>34 default x Image
1713 # URL: http://fileformats.archiveteam.org/wiki/PSB
1714 >>4 beshort 2 Image (PSB)
1716 # width in pixels: 1-30000 1-300000 for PSB
1717 >>18 belong x \b, %d x
1719 # The color mode; 0~Bitmap 1~Grayscale 2~Indexed 3~RGB 4~CMYK 7~Multichannel 9~Duotone 9~Lab
1720 >>24 beshort 0 bitmap
1721 >>24 beshort 1 grayscale
1722 # the number of channels; range is 1 to 56
1723 >>>12 beshort 2 with alpha
1724 >>24 beshort 2 indexed
1729 >>24 beshort 7 multichannel
1730 >>24 beshort 8 duotone
1733 >>>12 beshort x \b, %dx
1735 >>22 beshort x %d-bit channel
1736 >>12 beshort > 1 \bs
1737 # 6 reserved bytes; must be zero, but spaces inside ImageMagick input.psd
1738 # https://download.imagemagick.org/ImageMagick/download/ImageMagick-7.0.11-11.zip
1739 # ImageMagick-7.0.11-11\PerlMagick\t\input.psd
1740 >>6 bequad&0xFFffFFffFFff0000 !0 \b, at offset 6
1741 >>>6 belong x 0x%8.8x
1742 >>>6 beshort x \b%4.4x
1744 # XV thumbnail indicator (ThMO)
1745 # URL: https://en.wikipedia.org/wiki/Xv_(software)
1746 # Reference: http://fileformats.archiveteam.org/wiki/XV_thumbnail
1747 # Update: Joerg Jenderek
1748 0 string P7\ 332 XV thumbnail image data
1749 #0 string P7\ 332 XV "thumbnail file" (icon) data
1750 !:mime image/x-xv-thumbnail
1751 # thumbnail .xvpic/foo.bar for graphic foo.bar
1752 !:ext p7/gif/tif/xpm/jpg
1754 # NITF is defined by United States MIL-STD-2500A
1755 0 string NITF National Imagery Transmission Format
1756 >25 string >\0 dated %.14s
1758 # GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
1759 # Format variations from: Bernd Nuernberger <bernd.nuernberger@web.de>
1760 # Update: Joerg Jenderek
1761 # See http://fileformats.archiveteam.org/wiki/GEM_Raster
1762 # For variations, also see:
1763 # https://www.seasip.info/Gem/ff_img.html (Ventura)
1764 # http://www.atari-wiki.com/?title=IMG_file (XIMG, STTT)
1765 # http://www.fileformat.info/format/gemraster/spec/index.htm (XIMG, STTT)
1766 # http://sylvana.net/1stguide/1STGUIDE.ENG (TIMG)
1773 # no example for NOSIG
1776 # no example for HYPERPAINT
1782 16 string STTT\0\x10
1784 # no example or description
1789 # version is 2 for some XIMG and 1 for all others
1790 >0 ubeshort <0x0003 GEM
1791 # https://www.snowstone.org.uk/riscos/mimeman/mimemap.txt
1793 # header_size 24 25 27 59 779 words for colored bitmaps
1795 >>>16 string STTT\0\x10 STTT
1796 >>>16 string TIMG\0 TIMG
1797 # HYPERPAINT or NOSIG variant
1799 >>>>2 ubeshort =24 NOSIG
1800 >>>>2 ubeshort !24 HYPERPAINT
1801 # NOSIG or XIMG variant
1803 >>>>16 string !XIMG\0 NOSIG
1804 >>16 string =XIMG\0 XIMG Image data
1806 # to avoid Warning: Current entry does not yet have a description for adding a EXTENSION type
1807 >>16 string !XIMG\0 Image data
1809 # header_size is 9 for Ventura files and 8 for other GEM Paint files
1810 >>2 ubeshort 9 (Ventura)
1811 #>>2 ubeshort 8 (Paint)
1812 >>12 ubeshort x %d x
1815 >>4 ubeshort x %d planes,
1816 # in tenths of a millimetre
1818 >>10 ubeshort x %d pixelsize
1819 # pattern_size 1-8. 2 for GEM Paint
1820 >>6 ubeshort !2 \b, pattern size %d
1822 # GEM Metafile (Wolfram Kleff)
1823 0 ulelong 0x0018FFFF GEM Metafile data
1824 >4 uleshort x version %d
1827 # SMJPEG. A custom Motion JPEG format used by Loki Entertainment
1828 # Software Torbjorn Andersson <d91tan@Update.UU.SE>.
1830 0 string \0\nSMJPEG SMJPEG
1831 >8 ubelong x %d.x data
1832 # According to the specification you could find any number of _TXT
1833 # headers here, but I can't think of any way of handling that. None of
1834 # the SMJPEG files I tried it on used this feature. Even if such a
1835 # file is encountered the output should still be reasonable.
1837 >>24 ubeshort >0 %d Hz
1839 >>26 ubyte 16 16-bit
1840 >>28 string NONE uncompressed
1841 # >>28 string APCM ADPCM compressed
1844 # Help! Isn't there any way to avoid writing this part twice?
1845 # Yes, use a name/use
1846 >>32 string _VID \b,
1847 # >>>48 string JFIF JPEG
1848 >>>40 ubelong >0 %d frames
1849 >>>44 ubeshort >0 (%d x
1850 >>>46 ubeshort >0 %d)
1852 # >>32 string JFIF JPEG
1853 >>24 ubelong >0 %d frames
1854 >>28 ubeshort >0 (%d x
1855 >>30 ubeshort >0 %d)
1857 0 string Paint\ Shop\ Pro\ Image\ File Paint Shop Pro Image File
1859 # taken from fkiss: (<yav@mte.biglobe.ne.jp> ?)
1860 0 string KiSS KISS/GS
1863 >>8 uleshort x %d colors
1864 >>10 uleshort x %d groups
1872 # Webshots (www.webshots.com), by John Harrison
1873 0 string C\253\221g\230\0\0\0 Webshots Desktop .wbz file
1875 # Hercules DASD image files
1876 # From Jan Jaeger <jj@septa.nl> and Jay Maynard <jaymaynard@gmail.com>
1877 0 string CKD_P370 Hercules CKD DASD image file
1878 >8 lelong x \b, %d heads per cylinder
1879 >12 lelong x \b, track size %d bytes
1880 >16 byte x \b, device type 33%2.2X
1882 0 string CKD_C370 Hercules compressed CKD DASD image file
1883 >8 lelong x \b, %d heads per cylinder
1884 >12 lelong x \b, track size %d bytes
1885 >16 byte x \b, device type 33%2.2X
1886 >552 lelong x \b, %d total cylinders
1887 >>557 byte 0 \b, no compression
1888 >>557 byte 1 \b, ZLIB compression
1889 >>557 byte 2 \b, BZ2 compression
1891 0 string CKD_S370 Hercules CKD DASD shadow file
1892 >8 lelong x \b, %d heads per cylinder
1893 >12 lelong x \b, track size %d bytes
1894 >16 byte x \b, device type 33%2.2X
1896 0 string CKD_P064 Hercules CKD64 DASD image file
1897 >8 lelong x \b, %d heads per cylinder
1898 >12 lelong x \b, track size %d bytes
1899 >16 byte x \b, device type 33%2.2X
1901 0 string CKD_C064 Hercules compressed CKD64 DASD image file
1902 >8 lelong x \b, %d heads per cylinder
1903 >12 lelong x \b, track size %d bytes
1904 >16 byte x \b, device type 33%2.2X
1905 >524 lelong x \b, %d total cylinders
1906 >>585 byte 0 \b, no compression
1907 >>585 byte 1 \b, ZLIB compression
1908 >>585 byte 2 \b, BZ2 compression
1910 0 string CKD_S064 Hercules CKD64 DASD shadow file
1911 >8 lelong x \b, %d heads per cylinder
1912 >12 lelong x \b, track size %d bytes
1913 >16 byte x \b, device type 33%2.2X
1915 # Squeak images and programs - etoffi@softhome.net
1916 0 string \146\031\0\0 Squeak image data
1917 0 search/1 'From\040Squeak Squeak program text
1919 # partimage: file(1) magic for PartImage files (experimental, incomplete)
1920 # Author: Hans-Joachim Baader <hjb@pro-linux.de>
1921 0 string PaRtImAgE-VoLuMe PartImage
1922 >0x0020 string 0.6.1 file version %s
1923 >>0x0060 ulelong >-1 volume %d
1924 #>>0x0064 8 byte identifier
1926 >>0x0200 string >\0 type %s
1927 >>0x1400 string >\0 device %s,
1928 >>0x1600 string >\0 original filename %s,
1929 # Some fields omitted
1930 >>0x2744 ulelong 0 not compressed
1931 >>0x2744 ulelong 1 gzip compressed
1932 >>0x2744 ulelong 2 bzip2 compressed
1933 >>0x2744 ulelong >2 compressed with unknown algorithm
1934 >0x0020 string >0.6.1 file version %s
1935 >0x0020 string <0.6.1 file version %s
1937 # DCX is multi-page PCX, using a simple header of up to 1024
1938 # offsets for the respective PCX components.
1939 # From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
1940 # Update: Joerg Jenderek
1941 # URL: http://fileformats.archiveteam.org/wiki/DCX
1942 0 ulelong 987654321 DCX multi-page
1943 # http://www.nationalarchives.gov.uk/pronom/x-fmt/348
1946 # The first file offset usually starts at file offset 0x1004
1947 # print 1 space after 0x100? offset and then handles PCX images by ./images
1948 >4 ulelong x \b, at %#x
1950 # possible 2nd PCX image
1951 #>8 ulelong !0 \b, at %#x
1953 # possible 3rd PCX image
1954 #>12 ulelong !0 \b, at %#x
1955 #>>(12.l) indirect x
1957 # Simon Walton <simonw@matteworld.com>
1958 # Kodak Cineon format for scanned negatives
1959 # http://www.kodak.com/US/en/motion/support/dlad/
1960 0 ulelong 0xd75f2a80 Cineon image data
1961 >200 ubelong >0 \b, %d x
1965 # Bio-Rad .PIC is an image format used by microscope control systems
1966 # and related image processing software used by biologists.
1967 # From: Vebjorn Ljosa <vebjorn@ljosa.com>
1968 # BOOL values are two-byte integers; use them to rule out false positives.
1969 # https://web.archive.org/web/20050317223257/www.cs.ubc.ca/spider/ladic/text/biorad.txt
1970 # Samples: https://www.loci.wisc.edu/software/sample-data
1973 >>54 uleshort 12345 Bio-Rad .PIC Image File
1974 >>>0 uleshort >0 %d x
1975 >>>2 uleshort >0 %d,
1976 >>>4 uleshort =1 1 image in file
1977 >>>4 uleshort >1 %d images in file
1979 # From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
1980 # The description of *.mrw format can be found at
1981 # http://www.dalibor.cz/minolta/raw_file_format.htm
1982 0 string \000MRM Minolta Dimage camera raw image data
1984 # Summary: DjVu image / document
1986 # Reference: http://djvu.org/docs/DjVu3Spec.djvu
1987 # Submitted by: Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
1988 # Modified by (1): Abel Cheung <abelcheung@gmail.com>
1990 >12 string DJVM DjVu multiple page document
1991 !:mime image/vnd.djvu
1992 >12 string DJVU DjVu image or single page document
1993 !:mime image/vnd.djvu
1994 >12 string DJVI DjVu shared document
1995 !:mime image/vnd.djvu
1996 >12 string THUM DjVu page thumbnails
1997 !:mime image/vnd.djvu
1999 # Originally by Marc Espie
2000 # Modified by Robert Minsk <robertminsk at yahoo.com>
2001 # https://www.openexr.com/openexrfilelayout.pdf
2002 0 ulelong 20000630 OpenEXR image data,
2004 >4 ulelong&0x000000ff x version %d,
2005 >4 ulelong ^0x00000200 storage: scanline
2006 >4 ulelong &0x00000200 storage: tiled
2007 >8 search/0x1000 compression\0 \b, compression:
2018 >>&16 ubyte >9 unknown
2019 >8 search/0x1000 dataWindow\0 \b, dataWindow:
2021 >>&14 ulelong x %d)-
2022 >>&18 ulelong x \b(%d
2024 >8 search/0x1000 displayWindow\0 \b, displayWindow:
2026 >>&14 ulelong x %d)-
2027 >>&18 ulelong x \b(%d
2029 >8 search/0x1000 lineOrder\0 \b, lineOrder:
2030 >>&14 ubyte 0 increasing y
2031 >>&14 ubyte 1 decreasing y
2032 >>&14 ubyte 2 random y
2033 >>&14 ubyte >2 unknown
2035 # SMPTE Digital Picture Exchange Format, SMPTE DPX
2037 # ANSI/SMPTE 268M-1994, SMPTE Standard for File Format for Digital
2038 # Moving-Picture Exchange (DPX), v1.0, 18 February 1994
2039 # Robert Minsk <robertminsk at yahoo.com>
2040 # Modified by Harry Mallon <hjmallon at gmail.com>
2041 0 string SDPX DPX image data, big-endian,
2044 0 string XPDS DPX image data, little-endian,
2051 >>776 ubelong x \b%d,
2054 >>772 ubelong x \b%d,
2055 >768 ubeshort 0 left to right/top to bottom
2056 >768 ubeshort 1 right to left/top to bottom
2057 >768 ubeshort 2 left to right/bottom to top
2058 >768 ubeshort 3 right to left/bottom to top
2059 >768 ubeshort 4 top to bottom/left to right
2060 >768 ubeshort 5 top to bottom/right to left
2061 >768 ubeshort 6 bottom to top/left to right
2062 >768 ubeshort 7 bottom to top/right to left
2064 # From: Tom Hilinski <tom.hilinski@comcast.net>
2065 # Update: Joerg Jenderek
2066 # URL: https://en.wikipedia.org/wiki/NetCDF
2067 # http://fileformats.archiveteam.org/wiki/NetCDF
2068 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/n/netcdf.trid.xml
2069 # https://www.loc.gov/preservation/digital/formats/fdd/fdd000330.shtml
2070 # Note: called "NetCDF Network Common Data Form" by TrID and
2071 # "netCDF-3 Classic" by DROID via PUID fmt/282
2072 # https://www.unidata.ucar.edu/packages/netcdf/
2074 # skip DROID fmt-282-signature-id-298.nc by test for more content bytes
2075 >3 uleshort >0 NetCDF Data Format data
2076 #!:mime application/netcdf
2077 # https://reposcope.com/mimetype/application/x-netcdf
2078 !:mime application/x-netcdf
2080 # https://fileinfo.com/extension/cdf
2081 # https://www.file-extensions.org/cdf-file-extension-unidata-network-common-data-form
2082 # in 1994 changed from CDF to NC file extension avoid a clash with other file formats
2084 # 64-bit offset netcdf Classic https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications
2085 # Note: called "netCDF-3 64-bit" by DROID via PUID fmt/283
2087 # skip DROID fmt-283-signature-id-299.nc by test for more content bytes
2088 >3 uleshort >0 NetCDF Data Format data (64-bit offset)
2089 #!:mime application/netcdf
2090 !:mime application/x-netcdf
2094 # https://en.wikipedia.org/wiki/Common_Data_Format
2095 0 ubelong 0xCDF30001 Common Data Format (Version 3 or later) data
2096 !:mime application/x-cdf
2098 0 ubelong 0xCDF26002 Common Data Format (Version 2.6 or 2.7) data
2099 !:mime application/x-cdf
2101 0 ubelong 0x0000FFFF Common Data Format (Version 2.5 or earlier) data
2102 !:mime application/x-cdf
2104 # Hierarchical Data Format, used to facilitate scientific data exchange
2105 # specifications at http://hdf.ncsa.uiuc.edu/
2106 # URL: http://fileformats.archiveteam.org/wiki/HDF
2107 # https://en.wikipedia.org/wiki/Hierarchical_Data_Format
2108 # Reference: https://portal.hdfgroup.org/download/attachments/52627880/HDF5_File_Format_Specification_Version-3.0.pdf
2109 0 ubelong 0x0e031301 Hierarchical Data Format (version 4) data
2110 !:mime application/x-hdf
2112 0 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) data
2113 #!:mime application/x-hdf
2114 !:mime application/x-hdf5
2115 !:ext h5/hdf5/hdf/he5
2116 512 string \211HDF\r\n\032\n
2117 # skip Matlab v5 mat-file testhdf5_7.4_GLNX86.mat handled by ./mathematica
2118 >0 string !MATLAB Hierarchical Data Format (version 5) with 512 bytes user block
2119 #!:mime application/x-hdf
2120 !:mime application/x-hdf5
2121 !:ext h5/hdf5/hdf/he5
2122 1024 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 1k user block
2123 #!:mime application/x-hdf
2124 !:mime application/x-hdf5
2125 !:ext h5/hdf5/hdf/he5
2126 2048 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 2k user block
2127 #!:mime application/x-hdf
2128 !:mime application/x-hdf5
2129 !:ext h5/hdf5/hdf/he5
2130 4096 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 4k user block
2131 #!:mime application/x-hdf
2132 !:mime application/x-hdf5
2133 !:ext h5/hdf5/hdf/he5
2135 # From: Tobias Burnus <burnus@net-b.de>
2136 # Xara (for a while: Corel Xara) is a graphic package, see
2137 # http://www.xara.com/ for Windows and as GPL application for Linux
2138 0 string XARA\243\243 Xara graphics file
2140 # From: Joerg Jenderek
2141 # URL: http://fileformats.archiveteam.org/wiki/Corel_Gallery
2142 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/b/bmf-corel.trid.xml
2143 # Note: called "Corel Binary Material Format" by TrID and
2144 # "Corel Flow" by XnView
2145 0 string @CorelBMF\n\rCorel\040Corporation Corel GALLERY Clipart
2146 !:mime image/x-corel-bmf
2149 # https://www.cartesianinc.com/Tech/
2150 # Reference: http://fileformats.archiveteam.org/wiki/Cartesian_Perceptual_Compression
2151 0 string CPC\262 Cartesian Perceptual Compression image
2155 # From Albert Cahalan <acahalan@gmail.com>
2156 # puredigital used it for the CVS disposable camcorder
2157 #8 lelong 4 ZBM bitmap image data
2161 # From Albert Cahalan <acahalan@gmail.com>
2162 # uncompressed 5:6:5 HighColor image for OLPC XO firmware icons
2163 0 string C565 OLPC firmware icon image data
2167 # Applied Images - Image files from Cytovision
2168 # Gustavo Junior Alves <gjalves@gjalves.com.br>
2169 0 string \xce\xda\xde\xfa Cytovision Metaphases file
2170 0 string \xed\xad\xef\xac Cytovision Karyotype file
2171 0 string \x0b\x00\x03\x00 Cytovision FISH Probe file
2172 0 string \xed\xfe\xda\xbe Cytovision FLEX file
2173 0 string \xed\xab\xed\xfe Cytovision FLEX file
2174 0 string \xad\xfd\xea\xad Cytovision RATS file
2176 # Wavelet Scalar Quantization format used in gray-scale fingerprint images
2177 # From Tano M Fotang <mfotang@quanteq.com>
2178 0 string \xff\xa0\xff\xa8\x00 Wavelet Scalar Quantization image data
2180 # Type: PCO B16 image files
2181 # URL: http://www.pco.de/fileadmin/user_upload/db/download/MA_CWDCOPIE_0412b.pdf
2182 # From: Florian Philipp <florian.philipp@binarywings.net>
2184 # Description: Pixel image format produced by PCO Camware, typically used
2185 # together with PCO cameras.
2186 # Note: Different versions exist for e.g. 8 bit and 16 bit images.
2187 # Documentation is incomplete.
2188 0 string/b PCO- PCO B16 image data
2189 >12 ulelong x \b, %dx
2191 >20 ulelong 0 \b, short header
2192 >20 ulelong -1 \b, extended header
2193 >>24 ulelong 0 \b, grayscale
2194 >>>36 ulelong 0 linear LUT
2195 >>>36 ulelong 1 logarithmic LUT
2197 >>>32 ulelong x \b,%d]
2198 >>24 ulelong 1 \b, color
2199 >>>64 ulelong 0 linear LUT
2200 >>>64 ulelong 1 logarithmic LUT
2201 >>>40 ulelong x r[%d
2202 >>>44 ulelong x \b,%d]
2203 >>>48 ulelong x g[%d
2204 >>>52 ulelong x \b,%d]
2205 >>>56 ulelong x b[%d
2206 >>>60 ulelong x \b,%d]
2208 # Polar Monitor Bitmap (.pmb) used as logo for Polar Electro watches
2209 # From: Markus Heidelberg <markus.heidelberg at web.de>
2210 0 string/t [BitmapInfo2] Polar Monitor Bitmap text
2211 !:mime image/x-polar-monitor-bitmap
2213 # From: Rick Richardson <rickrich@gmail.com>
2214 # updated by: Joerg Jenderek
2215 # URL: http://techmods.net/nuvi/
2216 0 string GARMIN\ BITMAP\ 01 Garmin Bitmap file
2217 # extension is also used for
2218 # Sony SRF raw image (image/x-sony-srf)
2220 # Terragen Surface Map (https://www.planetside.co.uk/terragen)
2221 # FileLocator Pro search criteria file (https://www.mythicsoft.com/filelocatorpro)
2223 #!:mime image/x-garmin-srf
2224 # version 1.00,2.00,2.10,2.40,2.50
2225 >0x2f string >0 \b, version %4.4s
2226 # width (2880,2881,3240)
2227 >0x55 uleshort >0 \b, %dx
2229 >>0x53 uleshort x \b%d
2231 # From: Joerg Jenderek
2232 # URL: http://fileformats.archiveteam.org/wiki/Imageiio/imaginfo_(Ulead)
2233 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe3.trid.xml
2234 # Note: called "Ulead Imageiio/Imaginfo thumbnail" by TrID
2235 0 string IIO1$ Ulead Photo Explorer 3
2236 #!:mime application/octet-stream
2237 !:mime image/x-ulead-pe3
2240 # look for DOS/Windows drive letter
2242 # directory or full name of corresponding imaginfo.pe3 like: "T:\SAMPLES\TEXTURES\SKY_SNOW\IIOE371.TMP "S:\PI3\PIMPACT3\PROGRAMS\PATTERNS\imaginfo.pe3"
2244 # look for DOS/Windows network path if no drive letter part
2246 >>5 search/192/s \x5c\x5c
2247 # full name of corresponding imaginfo.pe3 like: "\\Lionking\upi\SAMPLES\IMAGES\ANIMALS\imaginfo.pe3"
2249 # Type: Ulead Photo Explorer5 (.pe5)
2250 # URL: http://fileformats.archiveteam.org/wiki/Imageiio/imaginfo_(Ulead)
2251 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe4.trid.xml
2252 # From: Simon Horman <horms@debian.org>
2253 # Update: Joerg Jenderek
2254 # Note: some called "Ulead Imageiio/Imaginfo thumbnail" by TrID
2255 # and used in various Ulead applications
2256 0 string IIO2H Ulead Photo Explorer 4 or 5
2257 #!:mime application/octet-stream
2258 !:mime image/x-ulead-pe4
2261 # look in most samples for JPEG signature like: SAMPLES/IMAGES/SCENES/IMAGINFO.PE4
2262 >0x4c2 search/0xE02/s JFIF with JPEG image data
2264 # near the end list of image names like: Img0001.pcd 1116012L.JPG NCARD4.TPL
2266 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe3-imaginfo.trid.xml
2267 11 string \001\0\0\0\0
2268 # check for version 3 part
2269 >19 string \0\001\0\003\0
2270 >>0 use ulead-imaginfo
2271 # From: Joerg Jenderek
2272 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe4-imaginfo.trid.xml
2273 11 string \001\0\0\0\0
2274 # check for version 4 part
2275 >19 string \0\0\0\004\0
2276 >>0 use ulead-imaginfo
2277 # display information about Ulead Imaginfo thumbnail (version, directory, image extension)
2278 0 name ulead-imaginfo
2279 >22 ubyte x Ulead Imaginfo thumbnail
2280 #!:mime application/octet-stream
2281 !:mime image/x-ulead-imaginfo
2282 >22 ubyte =3 \b, version 3
2285 >22 ubyte =4 \b, version 4
2288 # MAYBE ALSO VERSION 5 ?
2289 #>22 ubyte =5 \b, version 5
2292 # look for DOS/Windows driver letter
2293 >>4 search/192/s :\x5c
2294 # skip f:\Programme\iPhoto Plus 4\Template\Business Cards\IMAGINFO.PE4
2295 # by looking for driver letter in range A-Z
2297 # directory path like: "E:\iPE\CDSample\Images\Scenes" "D:\XmasCard\Samples" "C:\TEMP\PLANTS"
2298 >>>>&-5 pstring/l >0 \b, "%s"
2299 # look for DOS/Windows network path if no valid drive letter part
2301 >>>>4 search/192/s \x5c\x5c
2302 # directory path like: "\\FSX\SYS\OPPS\IPE.ENG\TEMPLATE\BUSINESS" "\\Lionking\upi\SAMPLES\IMAGES\ANIMALS"
2303 >>>>>&-4 pstring/l >0 \b, "%s"
2304 # look for DOS/Windows network path if no drive letter part
2306 >>>4 search/192/s \x5c\x5c
2307 # directory path like: "\\FSX\SYS\opps\ipe.eng\samples" "\\DANIEL\IPE_CD\IPE.ITA"
2308 >>>>&-4 pstring/l >0 \b, "%s"
2309 # look for point character inside image names
2311 # image name extension like: bmp jpg pcd tpl
2312 >>&1 string x with %-.3s images
2313 # Summary: Ulead Pattern image (Corel Corporation)
2314 # URL: https://en.wikipedia.org/wiki/Ulead_Systems
2315 # https://www.file-extensions.org/pst-file-extension-ulead-pattern-image-format
2316 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pst-ulead.trid.xml
2317 # From: Joerg Jenderek
2318 # Note: used also by CorelDraw Essentials 3 version 13.0.0.800
2319 # there seems to exist other versions
2320 0 ubelong 0xFFFF0100
2321 >8 search/21 PresetInfo Ulead pattern image
2322 #!:mime application/octet-stream
2323 !:mime image/x-ulead-pst
2325 # string length like: 16 18 19 21 24
2326 #>>4 uleshort x n=%u
2327 # like: BlendPresetInfo DropShadowPresetInfo FileNewPresetInfo VectorExtrudePresetInfo EnvelopePresetInfo ContourPresetInfo DistortionPresetInfo
2328 >>4 pstring/h x "%s"
2331 # URL: http://webcvs.freedesktop.org/mime/shared-mime-info/freedesktop.org.xml.in?view=markup
2332 # From: Mathias Brodala <info@noctus.net>
2333 0 string Xcur X11 cursor
2335 # Type: Olympus ORF raw images.
2336 # URL: https://libopenraw.freedesktop.org/wiki/Olympus_ORF
2337 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2338 0 string MMOR Olympus ORF raw image data, big-endian
2339 !:mime image/x-olympus-orf
2340 0 string IIRO Olympus ORF raw image data, little-endian
2341 !:mime image/x-olympus-orf
2342 0 string IIRS Olympus ORF raw image data, little-endian
2343 !:mime image/x-olympus-orf
2345 # Type: files used in modern AVCHD camcoders to store clip information
2347 # From: Alexander Danilov <alexander.a.danilov@gmail.com>
2348 0 string HDMV0100 AVCHD Clip Information
2350 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2351 # URL: http://local.wasp.uwa.edu.au/~pbourke/dataformats/pic/
2352 # Radiance HDR; usually has .pic or .hdr extension.
2353 0 string #?RADIANCE\n Radiance HDR image data
2354 #!mime image/vnd.radiance
2356 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2357 # URL: https://www.mpi-inf.mpg.de/resources/pfstools/pfs_format_spec.pdf
2358 # Used by the pfstools packages. The regex matches for the image size could
2359 # probably use some work. The MIME type is made up; if there's one in
2360 # actual common use, it should replace the one below.
2361 0 string PFS1\x0a PFS HDR image data
2363 >1 regex [0-9]*\ \b, %s
2364 >>1 regex \ [0-9]{4} \bx%s
2367 # URL: https://www.photofo.com/downloads/x3f-raw-format.pdf
2368 # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2369 # Note that the MIME type isn't defined anywhere that I can find; if
2370 # there's a canonical type for this format, it should replace this one.
2371 0 string FOVb Foveon X3F raw image data
2373 >6 uleshort x \b, version %d.
2375 >28 ulelong x \b, %dx
2379 # From Adam Buchbinder <adam.buchbinder@gmail.com>
2380 0 string PDN3 Paint.NET image data
2381 !:mime image/x-paintnet
2383 # Not really an image.
2384 # From: "Tano M. Fotang" <mfotang@quanteq.com>
2385 0 string \x46\x4d\x52\x00 ISO/IEC 19794-2 Format Minutiae Record (FMR)
2387 # doc: https://www.shikino.co.jp/eng/products/images/FLOWER.jpg.zip
2388 # example: https://www.shikino.co.jp/eng/products/images/FLOWER.wdp.zip
2389 90 ubequad 0x574D50484F544F00 JPEG-XR Image
2390 >98 ubyte&0x08 =0x08 \b, hard tiling
2391 >99 ubyte&0x80 =0x80 \b, tiling present
2392 >99 ubyte&0x40 =0x40 \b, codestream present
2393 >99 ubyte&0x38 x \b, spatial xform=
2394 >99 ubyte&0x38 0x00 \bTL
2395 >99 ubyte&0x38 0x08 \bBL
2396 >99 ubyte&0x38 0x10 \bTR
2397 >99 ubyte&0x38 0x18 \bBR
2398 >99 ubyte&0x38 0x20 \bBT
2399 >99 ubyte&0x38 0x28 \bRB
2400 >99 ubyte&0x38 0x30 \bLT
2401 >99 ubyte&0x38 0x38 \bLB
2402 >100 ubyte&0x80 =0x80 \b, short header
2403 >>102 ubeshort+1 x \b, %d
2404 >>104 ubeshort+1 x \bx%d
2405 >100 ubyte&0x80 =0x00 \b, long header
2406 >>102 ubelong+1 x \b, %x
2407 >>106 ubelong+1 x \bx%x
2408 >101 ubeshort&0xf x \b, bitdepth=
2409 >>101 ubeshort&0xf 0x0 \b1-WHITE=1
2410 >>101 ubeshort&0xf 0x1 \b8
2411 >>101 ubeshort&0xf 0x2 \b16
2412 >>101 ubeshort&0xf 0x3 \b16-SIGNED
2413 >>101 ubeshort&0xf 0x4 \b16-FLOAT
2414 >>101 ubeshort&0xf 0x5 \b(reserved 5)
2415 >>101 ubeshort&0xf 0x6 \b32-SIGNED
2416 >>101 ubeshort&0xf 0x7 \b32-FLOAT
2417 >>101 ubeshort&0xf 0x8 \b5
2418 >>101 ubeshort&0xf 0x9 \b10
2419 >>101 ubeshort&0xf 0xa \b5-6-5
2420 >>101 ubeshort&0xf 0xb \b(reserved %d)
2421 >>101 ubeshort&0xf 0xc \b(reserved %d)
2422 >>101 ubeshort&0xf 0xd \b(reserved %d)
2423 >>101 ubeshort&0xf 0xe \b(reserved %d)
2424 >>101 ubeshort&0xf 0xf \b1-BLACK=1
2425 >101 ubeshort&0xf0 x \b, colorfmt=
2426 >>101 ubeshort&0xf0 0x00 \bYONLY
2427 >>101 ubeshort&0xf0 0x10 \bYUV240
2428 >>101 ubeshort&0xf0 0x20 \bYWV422
2429 >>101 ubeshort&0xf0 0x30 \bYWV444
2430 >>101 ubeshort&0xf0 0x40 \bCMYK
2431 >>101 ubeshort&0xf0 0x50 \bCMYKDIRECT
2432 >>101 ubeshort&0xf0 0x60 \bNCOMPONENT
2433 >>101 ubeshort&0xf0 0x70 \bRGB
2434 >>101 ubeshort&0xf0 0x80 \bRGBE
2435 >>101 ubeshort&0xf0 >0x80 \b(reserved %#x)
2437 # From: Johan van der Knijff <johan.vanderknijff@kb.nl>
2439 # BPG (Better Portable Graphics) format
2440 # https://bellard.org/bpg/
2441 # http://fileformats.archiveteam.org/wiki/BPG
2443 0 string \x42\x50\x47\xFB BPG (Better Portable Graphics)
2446 # From: Joerg Jenderek
2447 # URL: https://en.wikipedia.org/wiki/Apple_Icon_Image_format
2448 0 string icns Mac OS X icon
2454 >>4 ubelong x \b, %d bytes
2456 >>8 string x \b, "%4.4s" type
2459 # URL: http://fileformats.archiveteam.org/wiki/TIM_(PlayStation_graphics)
2460 # Reference: https://mrclick.zophar.net/TilEd/download/timgfx.txt
2461 # Update: Joerg Jenderek
2462 # Note: called as "PSX TIM *bpp bitmap" by bitmap-tim-*.trid.xml
2463 # verified as "TIM PSX" by XnView `nconvert -fullinfo *.tim` and
2464 # by RECOIL `recoil2png -o TMP.PNG input.tim; file TMP.PNG` and often
2465 # as "PSX TIM" by ImageMagick version 7.1.0-10 command `identify *.tim`
2466 # here signed integers are used but according to Kaitai unsigned
2467 0 ulelong 0x00000010
2468 # 32 Flag bits *cttt; c~CLUT flag t~type 000~4BPP 001~8BPP 010~16BPP 011~24BPP 100~Mixed
2469 #>4 ulelong x FLAGS=%#x
2470 # 12+Size of CLUT (2Ch for 4BPP; 20Ch 40Ch 60Ch 80Ch C0Ch for 8BPP) or
2471 # +image data size (800Ch 2000Ch 2580C for 16BPP) (02000003h for dBase memo test.dbt)
2472 #>8 ulelong x \b, 12+CLUT or data size=%#8.8x
2473 # CLUT or data size remainder is 12 (Ch), but 03 for dBase memo test.dbt
2474 #>8 ubyte&0x0F =0x0C \b, SIZE REMAINDER IS 12
2475 # skip dBase III memo test.dbt with invalid flags 22D10189h
2476 >4 ulelong&0xffFFffF0 =0 Sony PlayStation PSX image,
2477 # file (version 5.40) labeled the above entry as "TIM image"
2478 !:mime image/x-sony-tim
2480 #>>4 ulelong&0x00000007 x \b, BPP~%u
2481 # 4BPP and 8BPP examples exist with CLUT or without CLUT
2482 >>4 ulelong&0x07 0x0 4-Bit,
2483 >>4 ulelong&0x07 0x1 8-Bit,
2484 # 16BPP and 24BPP examples have no CLUT
2485 >>4 ulelong 0x2 15-Bit,
2486 >>4 ulelong 0x3 24-Bit,
2488 >>4 ulelong&0x07 0x4 Mixed-Bit,
2491 # 12 + size of CLUT like: 1000Ch 800Ch 400Ch 40Ch and 2FEh (KAGE.TIM)
2492 #>>>(8.l+8) ulelong x \b, 12+CLUT SIZE=%#8.8x
2493 >>>(8.l+12) uleshort x Pixel at (%d,
2494 >>>(8.l+14) uleshort x \b%d) Size=
2495 # image width (to get actual width multiply by 4 for 4BPP and by 2 for 8BPP)
2497 >>>>>(8.l+16) uleshort*4 x \b%d
2499 >>>>>(8.l+16) uleshort*2 x \b%d
2500 # image height like: 32 64 128 144 160 208 256
2501 >>>(8.l+18) uleshort x \bx%d,
2502 >>>4 ulelong 0x8 16 CLUT Entries at
2503 >>>4 ulelong 0x9 256 CLUT Entries at
2504 >>>12 uleshort x (%d,
2505 >>>14 uleshort x \b%d)
2506 # no Color LookUp Table (CLUT)
2509 >>>12 uleshort x Pixel at (%d,
2510 >>>14 uleshort x \b%d) Size=
2511 # real image width = multiply by 4 (4BPP) 2 (8BPP) 1 (16BPP) 2/3 (24BPP)
2513 >>>>>16 uleshort*4 x \b%d
2515 >>>>>16 uleshort*2 x \b%d
2517 >>>>>16 uleshort x \b%d
2520 #>>>>>16 uleshort*2/3 x \b%d
2521 >>>>>16 uleshort x \b2/3*%d
2522 # mixed format width not explained!
2524 >>>>>16 uleshort x \b%d
2525 # image height like: 64 240 256
2526 >>>18 uleshort x \bx%d
2530 0 ulelong 0x80010160 MDEC video stream,
2533 #>8 ulelong x %d frames
2534 #>4 uleshort x secCount=%d;
2535 #>6 uleshort x nSectors=%d;
2536 #>12 ulelong x frameSize=%d;
2538 # BS encoded bitstreams
2539 2 uleshort 0x3800 BS image,
2540 >6 uleshort x Version %d,
2541 >4 uleshort x Quantization %d,
2542 >0 uleshort x (Decompresses to %d words)
2544 # Type: farbfeld image.
2545 # Url: http://tools.suckless.org/farbfeld/
2546 # From: Ian D. Scott <ian@iandouglasscott.com>
2548 0 string farbfeld farbfeld image data,
2552 # Type: Microsoft DirectDraw Surface (DXGI formats)
2553 # URL: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
2554 # From: Morten Hustveit <morten@debian.org>
2555 # Updated by: David Korth <gerbilsoft@gerbilsoft.com>
2556 0 name ms-directdraw-dx10
2557 >0 ulelong x \b, DXGI format:
2558 >0 ulelong 1 R32G32B32A32_TYPELESS
2559 >0 ulelong 2 R32G32B32A32_FLOAT
2560 >0 ulelong 3 R32G32B32A32_UINT
2561 >0 ulelong 4 R32G32B32A32_SINT
2562 >0 ulelong 5 R32G32B32_TYPELESS
2563 >0 ulelong 6 R32G32B32_FLOAT
2564 >0 ulelong 7 R32G32B32_UINT
2565 >0 ulelong 8 R32G32B32_SINT
2566 >0 ulelong 9 R16G16B16A16_TYPELESS
2567 >0 ulelong 10 R16G16B16A16_FLOAT
2568 >0 ulelong 11 R16G16B16A16_UNORM
2569 >0 ulelong 12 R16G16B16A16_UINT
2570 >0 ulelong 13 R16G16B16A16_SNORM
2571 >0 ulelong 14 R16G16B16A16_SINT
2572 >0 ulelong 15 R32G32_TYPELESS
2573 >0 ulelong 16 R32G32_FLOAT
2574 >0 ulelong 17 R32G32_UINT
2575 >0 ulelong 18 R32G32_SINT
2576 >0 ulelong 19 R32G8X24_TYPELESS
2577 >0 ulelong 20 D32_FLOAT_S8X24_UINT
2578 >0 ulelong 21 R32_FLOAT_X8X24_TYPELESS
2579 >0 ulelong 22 X32_TYPELESS_G8X24_UINT
2580 >0 ulelong 23 R10G10B10A2_TYPELESS
2581 >0 ulelong 24 R10G10B10A2_UNORM
2582 >0 ulelong 25 R10G10B10A2_UINT
2583 >0 ulelong 26 R11G11B10_FLOAT
2584 >0 ulelong 27 R8G8B8A8_TYPELESS
2585 >0 ulelong 28 R8G8B8A8_UNORM
2586 >0 ulelong 29 R8G8B8A8_UNORM_SRGB
2587 >0 ulelong 30 R8G8B8A8_UINT
2588 >0 ulelong 31 R8G8B8A8_SNORM
2589 >0 ulelong 32 R8G8B8A8_SINT
2590 >0 ulelong 33 R16G16_TYPELESS
2591 >0 ulelong 34 R16G16_FLOAT
2592 >0 ulelong 35 R16G16_UNORM
2593 >0 ulelong 36 R16G16_UINT
2594 >0 ulelong 37 R16G16_SNORM
2595 >0 ulelong 38 R16G16_SINT
2596 >0 ulelong 39 R32_TYPELESS
2597 >0 ulelong 40 D32_FLOAT
2598 >0 ulelong 41 R32_FLOAT
2599 >0 ulelong 42 R32_UINT
2600 >0 ulelong 43 R32_SINT
2601 >0 ulelong 44 R24G8_TYPELESS
2602 >0 ulelong 45 D24_UNORM_S8_UINT
2603 >0 ulelong 46 R24_UNORM_X8_TYPELESS
2604 >0 ulelong 47 X24_TYPELESS_G8_UINT
2605 >0 ulelong 48 R8G8_TYPELESS
2606 >0 ulelong 49 R8G8_UNORM
2607 >0 ulelong 50 R8G8_UINT
2608 >0 ulelong 51 R8G8_SNORM
2609 >0 ulelong 52 R8G8_SINT
2610 >0 ulelong 53 R16_TYPELESS
2611 >0 ulelong 54 R16_FLOAT
2612 >0 ulelong 55 D16_UNORM
2613 >0 ulelong 56 R16_UNORM
2614 >0 ulelong 57 R16_UINT
2615 >0 ulelong 58 R16_SNORM
2616 >0 ulelong 59 R16_SINT
2617 >0 ulelong 60 R8_TYPELESS
2618 >0 ulelong 61 R8_UNORM
2619 >0 ulelong 62 R8_UINT
2620 >0 ulelong 63 R8_SNORM
2621 >0 ulelong 64 R8_SINT
2622 >0 ulelong 65 A8_UNORM
2623 >0 ulelong 66 R1_UNORM
2624 >0 ulelong 67 R9G9B9E5_SHAREDEXP
2625 >0 ulelong 68 R8G8_B8G8_UNORM
2626 >0 ulelong 69 G8R8_G8B8_UNORM
2627 >0 ulelong 70 BC1_TYPELESS
2628 >0 ulelong 71 BC1_UNORM
2629 >0 ulelong 72 BC1_UNORM_SRGB
2630 >0 ulelong 73 BC2_TYPELESS
2631 >0 ulelong 74 BC2_UNORM
2632 >0 ulelong 75 BC2_UNORM_SRGB
2633 >0 ulelong 76 BC3_TYPELESS
2634 >0 ulelong 77 BC3_UNORM
2635 >0 ulelong 78 BC3_UNORM_SRGB
2636 >0 ulelong 79 BC4_TYPELESS
2637 >0 ulelong 80 BC4_UNORM
2638 >0 ulelong 81 BC4_SNORM
2639 >0 ulelong 82 BC5_TYPELESS
2640 >0 ulelong 83 BC5_UNORM
2641 >0 ulelong 84 BC5_SNORM
2642 >0 ulelong 85 B5G6R5_UNORM
2643 >0 ulelong 86 B5G5R5A1_UNORM
2644 >0 ulelong 87 B8G8R8A8_UNORM
2645 >0 ulelong 88 B8G8R8X8_UNORM
2646 >0 ulelong 89 R10G10B10_XR_BIAS_A2_UNORM
2647 >0 ulelong 90 B8G8R8A8_TYPELESS
2648 >0 ulelong 91 B8G8R8A8_UNORM_SRGB
2649 >0 ulelong 92 B8G8R8X8_TYPELESS
2650 >0 ulelong 93 B8G8R8X8_UNORM_SRGB
2651 >0 ulelong 94 BC6H_TYPELESS
2652 >0 ulelong 95 BC6H_UF16
2653 >0 ulelong 96 BC6H_SF16
2654 >0 ulelong 97 BC7_TYPELESS
2655 >0 ulelong 98 BC7_UNORM
2656 >0 ulelong 99 BC7_UNORM_SRGB
2663 >0 ulelong 106 420_OPAQUE
2672 >0 ulelong 115 B4G4R4A4_UNORM
2674 >0 ulelong 116 XBOX_R10G10B10_7E3_A2_FLOAT
2675 >0 ulelong 117 XBOX_R10G10B10_6E4_A2_FLOAT
2676 >0 ulelong 118 XBOX_D16_UNORM_S8_UINT
2677 >0 ulelong 119 XBOX_R16_UNORM_X8_TYPELESS
2678 >0 ulelong 120 XBOX_X16_TYPELESS_G8_UINT
2680 >0 ulelong 130 DXGI_FORMAT_P208
2681 >0 ulelong 131 DXGI_FORMAT_V208
2682 >0 ulelong 132 DXGI_FORMAT_V408
2684 >0 ulelong 133 ASTC_4X4_TYPELESS
2685 >0 ulelong 134 ASTC_4X4_UNORM
2686 >0 ulelong 135 ASTC_4X4_UNORM_SRGB
2687 >0 ulelong 137 ASTC_5X4_TYPELESS
2688 >0 ulelong 138 ASTC_5X4_UNORM
2689 >0 ulelong 139 ASTC_5X4_UNORM_SRGB
2690 >0 ulelong 141 ASTC_5X5_TYPELESS
2691 >0 ulelong 142 ASTC_5X5_UNORM
2692 >0 ulelong 143 ASTC_5X5_UNORM_SRGB
2693 >0 ulelong 145 ASTC_6X5_TYPELESS
2694 >0 ulelong 146 ASTC_6X5_UNORM
2695 >0 ulelong 147 ASTC_6X5_UNORM_SRGB
2696 >0 ulelong 149 ASTC_6X6_TYPELESS
2697 >0 ulelong 150 ASTC_6X6_UNORM
2698 >0 ulelong 151 ASTC_6X6_UNORM_SRGB
2699 >0 ulelong 153 ASTC_8X5_TYPELESS
2700 >0 ulelong 154 ASTC_8X5_UNORM
2701 >0 ulelong 155 ASTC_8X5_UNORM_SRGB
2702 >0 ulelong 157 ASTC_8X6_TYPELESS
2703 >0 ulelong 158 ASTC_8X6_UNORM
2704 >0 ulelong 159 ASTC_8X6_UNORM_SRGB
2705 >0 ulelong 161 ASTC_8X8_TYPELESS
2706 >0 ulelong 162 ASTC_8X8_UNORM
2707 >0 ulelong 163 ASTC_8X8_UNORM_SRGB
2708 >0 ulelong 165 ASTC_10X5_TYPELESS
2709 >0 ulelong 166 ASTC_10X5_UNORM
2710 >0 ulelong 167 ASTC_10X5_UNORM_SRGB
2711 >0 ulelong 169 ASTC_10X6_TYPELESS
2712 >0 ulelong 170 ASTC_10X6_UNORM
2713 >0 ulelong 171 ASTC_10X6_UNORM_SRGB
2714 >0 ulelong 173 ASTC_10X8_TYPELESS
2715 >0 ulelong 174 ASTC_10X8_UNORM
2716 >0 ulelong 175 ASTC_10X8_UNORM_SRGB
2717 >0 ulelong 177 ASTC_10X10_TYPELESS
2718 >0 ulelong 178 ASTC_10X10_UNORM
2719 >0 ulelong 179 ASTC_10X10_UNORM_SRGB
2720 >0 ulelong 181 ASTC_12X10_TYPELESS
2721 >0 ulelong 182 ASTC_12X10_UNORM
2722 >0 ulelong 183 ASTC_12X10_UNORM_SRGB
2723 >0 ulelong 185 ASTC_12X12_TYPELESS
2724 >0 ulelong 186 ASTC_12X12_UNORM
2725 >0 ulelong 187 ASTC_12X12_UNORM_SRGB
2727 >0 ulelong 190 XBOX_R10G10B10_SNORM_A2_UNORM
2728 >0 ulelong 189 XBOX_R4G4_UNORM
2729 >0 ulelong 0xFFFFFFFF DXGI_FORMAT_FORCE_UINT
2731 # Type: Microsoft DirectDraw Surface (common data)
2732 # URL: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
2733 # From: Morten Hustveit <morten@debian.org>
2734 # Updated by: David Korth <gerbilsoft@gerbilsoft.com>
2735 0 name ms-directdraw-surface
2736 >0x10 ulelong x %u x
2739 >0x58 ulelong >0 \b, %u-bit color
2740 # Determine the pixel format.
2742 # FIXME: Handle DX10 and XBOX formats.
2744 >>>0x80 use ms-directdraw-dx10
2745 >>0x54 string !DX10 \b, compressed using %.4s
2746 >0x50 ulelong&0x2 0x2 \b, alpha only
2747 >0x50 ulelong&0x200 0x200 \b, YUV
2748 >0x50 ulelong&0x20000 0x20000 \b, luminance
2750 >0x50 ulelong&0x40 0x40
2752 # Determine the RGB format using the color masks.
2753 # ulequad order: 0xGGGGGGGGRRRRRRRR, 0xAAAAAAAABBBBBBBB
2757 # NOTE: 15-bit color formats usually have 16-bit listed as the color depth.
2758 >>>0x5C ulequad 0x000003E000007C00
2759 >>>>0x64 ulequad 0x000000000000001F \b, RGB555
2760 >>>0x5C ulequad 0x000003E000001F00
2761 >>>>0x64 ulequad 0x000000000000007C \b, BGR555
2763 >>>0x5C ulequad 0x000007E00000F800
2764 >>>>0x64 ulequad 0x000000000000001F \b, RGB565
2765 >>>0x5C ulequad 0x000007E000001F00
2766 >>>>0x64 ulequad 0x00000000000000F8 \b, BGR565
2768 >>>0x5C ulequad 0x000000F000000F00
2769 >>>>0x64 ulequad 0x0000F0000000000F \b, ARGB4444
2770 >>>0x5C ulequad 0x000000F00000000F
2771 >>>>0x64 ulequad 0x0000F00000000F00 \b, ABGR4444
2773 >>>0x5C ulequad 0x00000F000000F000
2774 >>>>0x64 ulequad 0x0000000F000000F0 \b, RGBA4444
2775 >>>0x5C ulequad 0x00000F00000000F0
2776 >>>>0x64 ulequad 0x0000000F0000F000 \b, BGRA4444
2778 >>>0x5C ulequad 0x000000F000000F00
2779 >>>>0x64 ulequad 0x000000000000000F \b, xRGB4444
2780 >>>0x5C ulequad 0x000000F00000000F
2781 >>>>0x64 ulequad 0x0000000000000F00 \b, xBGR4444
2783 >>>0x5C ulequad 0x00000F000000F000
2784 >>>>0x64 ulequad 0x00000000000000F0 \b, RGBx4444
2785 >>>0x5C ulequad 0x00000F00000000F0
2786 >>>>0x64 ulequad 0x000000000000F000 \b, BGRx4444
2788 >>>0x5C ulequad 0x000003E000007C00
2789 >>>>0x64 ulequad 0x000080000000001F \b, ARGB1555
2790 >>>0x5C ulequad 0x000003E000001F00
2791 >>>>0x64 ulequad 0x000080000000007C \b, ABGR1555
2792 >>>0x5C ulequad 0x000007C00000F800
2793 >>>>0x64 ulequad 0x000000010000003E \b, RGBA5551
2794 >>>0x5C ulequad 0x000007C00000003E
2795 >>>>0x64 ulequad 0x000000010000F800 \b, BGRA5551
2798 >>>0x5C ulequad 0x0000FF0000FF0000
2799 >>>>0x64 ulequad 0x00000000000000FF \b, RGB888
2800 >>>0x5C ulequad 0x0000FF00000000FF
2801 >>>>0x64 ulequad 0x0000000000FF0000 \b, BGR888
2804 >>>0x5C ulequad 0x0000FF0000FF0000
2805 >>>>0x64 ulequad 0xFF000000000000FF \b, ARGB8888
2806 >>>0x5C ulequad 0x0000FF00000000FF
2807 >>>>0x64 ulequad 0xFF00000000FF0000 \b, ABGR8888
2809 >>>0x5C ulequad 0x00FF0000FF000000
2810 >>>>0x64 ulequad 0x000000FF0000FF00 \b, RGBA8888
2811 >>>0x5C ulequad 0x00FF00000000FF00
2812 >>>>0x64 ulequad 0x000000FFFF000000 \b, BGBA8888
2814 >>>0x5C ulequad 0x0000FF0000FF0000
2815 >>>>0x64 ulequad 0x00000000000000FF \b, xRGB8888
2816 >>>0x5C ulequad 0x0000FF00000000FF
2817 >>>>0x64 ulequad 0x0000000000FF0000 \b, xBGR8888
2819 >>>0x5C ulequad 0x00FF0000FF000000
2820 >>>>0x64 ulequad 0x000000000000FF00 \b, RGBx8888
2821 >>>0x5C ulequad 0x00FF00000000FF00
2822 >>>>0x64 ulequad 0x00000000FF000000 \b, BGBx8888
2824 # Less common 32-bit color formats.
2825 >>>0x5C ulequad 0xFFFF00000000FFFF
2826 >>>>0x64 ulequad 0x0000000000000000 \b, G16R16
2827 >>>0x5C ulequad 0x0000FFFFFFFF0000
2828 >>>>0x64 ulequad 0x0000000000000000 \b, R16G16
2830 >>>0x5C ulequad 0x000FFC003FF00000
2831 >>>>0x64 ulequad 0xC0000000000003FF \b, A2R10G10B10
2832 >>>0x5C ulequad 0x000FFC00000003FF
2833 >>>>0x64 ulequad 0xC00000003FF00000 \b, A2B10G10R10
2835 # Type: Microsoft DirectDraw Surface
2836 # URL: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
2837 # From: Morten Hustveit <morten@debian.org>
2838 # Updated by: David Korth <gerbilsoft@gerbilsoft.com>
2839 0 string/b DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS):
2840 >0 use ms-directdraw-surface
2842 # Type: Sega PVR image.
2843 # From: David Korth <gerbilsoft@gerbilsoft.com>
2845 # - https://fabiensanglard.net/Mykaruga/tools/segaPVRFormat.txt
2846 # - https://github.com/yazgoo/pvrx2png
2847 # - https://github.com/nickworonekin/puyotools
2850 0 name sega-pvr-image-header
2851 >0x0C uleshort x %u x
2854 >0x08 ubyte 0 \b, ARGB1555
2855 >0x08 ubyte 1 \b, RGB565
2856 >0x08 ubyte 2 \b, ARGB4444
2857 >0x08 ubyte 3 \b, YUV442
2858 >0x08 ubyte 4 \b, Bump
2859 >0x08 ubyte 5 \b, 4bpp
2860 >0x08 ubyte 6 \b, 8bpp
2862 >0x09 ubyte 0x01 \b, square twiddled
2863 >0x09 ubyte 0x02 \b, square twiddled & mipmap
2864 >0x09 ubyte 0x03 \b, VQ
2865 >0x09 ubyte 0x04 \b, VQ & mipmap
2866 >0x09 ubyte 0x05 \b, 8-bit CLUT twiddled
2867 >0x09 ubyte 0x06 \b, 4-bit CLUT twiddled
2868 >0x09 ubyte 0x07 \b, 8-bit direct twiddled
2869 >0x09 ubyte 0x08 \b, 4-bit direct twiddled
2870 >0x09 ubyte 0x09 \b, rectangle
2871 >0x09 ubyte 0x0B \b, rectangular stride
2872 >0x09 ubyte 0x0D \b, rectangular twiddled
2873 >0x09 ubyte 0x10 \b, small VQ
2874 >0x09 ubyte 0x11 \b, small VQ & mipmap
2875 >0x09 ubyte 0x12 \b, square twiddled & mipmap
2879 >0x10 string DDS\040\174\000\000\000 Sega PVR (Xbox) image:
2880 >>0x20 use ms-directdraw-surface
2881 >0x10 ubelong !0x44445320 Sega PVR image:
2882 >>0 use sega-pvr-image-header
2884 # Sega PVR image with GBIX.
2887 >>0x10 string DDS\040\174\000\000\000 Sega PVR (Xbox) image:
2888 >>>0x20 use ms-directdraw-surface
2889 >>0x10 ubelong !0x44445320 Sega PVR image:
2890 >>>0x10 use sega-pvr-image-header
2891 >>0x08 ulelong x \b, global index = %u
2894 0 name sega-gvr-image-header
2895 >0x0C ubeshort x %u x
2897 # Image data format.
2898 >0x0B ubyte 0 \b, I4
2899 >0x0B ubyte 1 \b, I8
2900 >0x0B ubyte 2 \b, IA4
2901 >0x0B ubyte 3 \b, IA8
2902 >0x0B ubyte 4 \b, RGB565
2903 >0x0B ubyte 5 \b, RGB5A3
2904 >0x0B ubyte 6 \b, ARGB8888
2905 >0x0B ubyte 8 \b, CI4
2906 >0x0B ubyte 9 \b, CI8
2907 >0x0B ubyte 14 \b, DXT1
2910 0 string GVRT Sega GVR image:
2911 >0x10 use sega-gvr-image-header
2913 # Sega GVR image with GBIX.
2915 >0x10 string GVRT Sega GVR image:
2916 >>0x10 use sega-gvr-image-header
2917 >>0x08 ubelong x \b, global index = %u
2919 # Sega GVR image with GCIX. (Wii)
2921 >0x10 string GVRT Sega GVR image:
2922 >>0x10 use sega-gvr-image-header
2923 >>0x08 ubelong x \b, global index = %u
2925 # Light Field Picture
2926 # Documentation: http://optics.miloush.net/lytro/TheFileFormat.aspx
2927 # Typical file extensions: .lfp .lfr .lfx
2929 0 ubelong 0x894C4650
2930 >4 ubelong 0x0D0A1A0A
2931 >12 ubelong 0x00000000 Lytro Light Field Picture
2932 >8 ubelong x \b, version %d
2934 # Type: Vision Research Phantom CINE Format
2935 # URL: https://www.phantomhighspeed.com/
2936 # URL2: http://phantomhighspeed.force.com/vriknowledge/servlet/fileField?id=0BEU0000000Cfyk
2937 # From: Harry Mallon <hjmallon at gmail.com>
2939 # This has a short "CI" code but the 44 is the size of the struct which is
2942 >2 uleshort 44 Vision Research CINE Video,
2943 >>4 uleshort 0 Grayscale,
2944 >>4 uleshort 1 JPEG Compressed,
2946 >>6 uleshort x version %d,
2947 >>20 ulelong x %d frames,
2951 # Type: ARRI Raw Image
2952 # Info: SMPTE RDD30:2014
2953 # From: Harry Mallon <hjmallon at gmail.com>
2954 0 string ARRI ARRI ARI image data,
2955 >4 ulelong 0x78563412 little-endian,
2956 >4 ulelong 0x12345678 big-endian,
2957 >12 ulelong x version %d,
2961 # Type: Khronos KTX texture.
2962 # From: David Korth <gerbilsoft@gerbilsoft.com>
2963 # Reference: https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
2966 # NOTE: Only the most common formats are listed here.
2967 0 name khronos-ktx-glEnum
2968 >0 ulelong 0x1907 \b, RGB
2969 >0 ulelong 0x1908 \b, RGBA
2970 >0 ulelong 0x1909 \b, LUMINANCE
2971 >0 ulelong 0x190A \b, LUMINANCE_ALPHA
2972 >0 ulelong 0x80E1 \b, BGR
2973 >0 ulelong 0x80E2 \b, BGRA
2974 >0 ulelong 0x83A0 \b, RGB_S3TC
2975 >0 ulelong 0x83A1 \b, RGB4_S3TC
2976 >0 ulelong 0x83A2 \b, RGBA_S3TC
2977 >0 ulelong 0x83A3 \b, RGBA4_S3TC
2978 >0 ulelong 0x83A4 \b, RGBA_DXT5_S3TC
2979 >0 ulelong 0x83A5 \b, RGBA4_DXT5_S3TC
2980 >0 ulelong 0x83F0 \b, COMPRESSED_RGB_S3TC_DXT1_EXT
2981 >0 ulelong 0x83F1 \b, COMPRESSED_RGBA_S3TC_DXT1_EXT
2982 >0 ulelong 0x83F2 \b, COMPRESSED_RGBA_S3TC_DXT3_EXT
2983 >0 ulelong 0x83F3 \b, COMPRESSED_RGBA_S3TC_DXT5_EXT
2984 >0 ulelong 0x8D64 \b, ETC1_RGB8_OES
2985 >0 ulelong 0x9270 \b, COMPRESSED_R11_EAC
2986 >0 ulelong 0x9271 \b, COMPRESSED_SIGNED_R11_EAC
2987 >0 ulelong 0x9272 \b, COMPRESSED_RG11_EAC
2988 >0 ulelong 0x9273 \b, COMPRESSED_SIGNED_RG11_EAC
2989 >0 ulelong 0x9274 \b, COMPRESSED_RGB8_ETC2
2990 >0 ulelong 0x9275 \b, COMPRESSED_SRGB8_ETC2
2991 >0 ulelong 0x9276 \b, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
2992 >0 ulelong 0x9277 \b, COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
2993 >0 ulelong 0x9278 \b, COMPRESSED_RGBA2_ETC2_EAC
2994 >0 ulelong 0x9279 \b, COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
2995 >0 ulelong 0x93B0 \b, COMPRESSED_RGBA_ASTC_4x4_KHR
2996 >0 ulelong 0x93B1 \b, COMPRESSED_RGBA_ASTC_5x4_KHR
2997 >0 ulelong 0x93B2 \b, COMPRESSED_RGBA_ASTC_5x5_KHR
2998 >0 ulelong 0x93B3 \b, COMPRESSED_RGBA_ASTC_6x5_KHR
2999 >0 ulelong 0x93B4 \b, COMPRESSED_RGBA_ASTC_6x6_KHR
3000 >0 ulelong 0x93B5 \b, COMPRESSED_RGBA_ASTC_8x5_KHR
3001 >0 ulelong 0x93B6 \b, COMPRESSED_RGBA_ASTC_8x6_KHR
3002 >0 ulelong 0x93B7 \b, COMPRESSED_RGBA_ASTC_8x8_KHR
3003 >0 ulelong 0x93B8 \b, COMPRESSED_RGBA_ASTC_10x5_KHR
3004 >0 ulelong 0x93B9 \b, COMPRESSED_RGBA_ASTC_10x6_KHR
3005 >0 ulelong 0x93BA \b, COMPRESSED_RGBA_ASTC_10x8_KHR
3006 >0 ulelong 0x93BB \b, COMPRESSED_RGBA_ASTC_10x10_KHR
3007 >0 ulelong 0x93BC \b, COMPRESSED_RGBA_ASTC_12x10_KHR
3008 >0 ulelong 0x93BD \b, COMPRESSED_RGBA_ASTC_12x12_KHR
3009 >0 ulelong 0x93D0 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
3010 >0 ulelong 0x93D1 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
3011 >0 ulelong 0x93D2 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
3012 >0 ulelong 0x93D3 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
3013 >0 ulelong 0x93D4 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
3014 >0 ulelong 0x93D5 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
3015 >0 ulelong 0x93D6 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
3016 >0 ulelong 0x93D7 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
3017 >0 ulelong 0x93D8 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
3018 >0 ulelong 0x93D9 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
3019 >0 ulelong 0x93DA \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
3020 >0 ulelong 0x93DB \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
3021 >0 ulelong 0x93DC \b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
3022 >0 ulelong 0x93DD \b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
3024 # Endian-specific KTX header.
3025 # TODO: glType (all textures I've seen so far are GL_UNSIGNED_BYTE)
3026 0 name khronos-ktx-endian-header
3027 >20 ulelong x \b, %u
3031 >>8 use khronos-ktx-glEnum
3033 >>12 use khronos-ktx-glEnum
3036 # Determine endianness, then check the rest of the header.
3037 0 string \xABKTX\ 11\xBB\r\n\x1A\n Khronos KTX texture
3038 >12 ulelong 0x04030201 (little-endian)
3039 >>16 use khronos-ktx-endian-header
3040 >12 ubelong 0x04030201 (big-endian)
3041 >>16 use \^khronos-ktx-endian-header
3043 # Type: Khronos KTX2 texture.
3044 # From: David Korth <gerbilsoft@gerbilsoft.com>
3046 # Reference: http://github.khronos.org/KTX-Specification/
3048 # Supercompression enum.
3049 0 name khronos-ktx2-supercompression
3050 >0 ulelong 1 BasisLZ
3051 >0 ulelong 2 Zstandard
3054 # Vulkan format identifier.
3055 # NOTE: Formats prohibited from KTX2 are commented out.
3056 0 name khronos-ktx2-vkFormat
3057 >0 ulelong 0 UNDEFINED
3058 >0 ulelong 1 R4G4_UNORM_PACK8
3059 >0 ulelong 2 R4G4B4A4_UNORM_PACK16
3060 >0 ulelong 3 B4G4R4A4_UNORM_PACK16
3061 >0 ulelong 4 R5G6B5_UNORM_PACK16
3062 >0 ulelong 5 B5G6R5_UNORM_PACK16
3063 >0 ulelong 6 R5G5B5A1_UNORM_PACK16
3064 >0 ulelong 7 B5G5R5A1_UNORM_PACK16
3065 >0 ulelong 8 A1R5G5B5_UNORM_PACK16
3066 >0 ulelong 9 R8_UNORM
3067 >0 ulelong 10 R8_SNORM
3068 #>0 ulelong 11 R8_USCALED
3069 #>0 ulelong 12 R8_SSCALED
3070 >0 ulelong 13 R8_UINT
3071 >0 ulelong 14 R8_SINT
3072 >0 ulelong 15 R8_SRGB
3073 >0 ulelong 16 R8G8_UNORM
3074 >0 ulelong 17 R8G8_SNORM
3075 #>0 ulelong 18 R8G8_USCALED
3076 #>0 ulelong 19 R8G8_SSCALED
3077 >0 ulelong 20 R8G8_UINT
3078 >0 ulelong 21 R8G8_SINT
3079 >0 ulelong 22 R8G8_SRGB
3080 >0 ulelong 23 R8G8B8_UNORM
3081 >0 ulelong 24 R8G8B8_SNORM
3082 #>0 ulelong 25 R8G8B8_USCALED
3083 #>0 ulelong 26 R8G8B8_SSCALED
3084 >0 ulelong 27 R8G8B8_UINT
3085 >0 ulelong 28 R8G8B8_SINT
3086 >0 ulelong 29 R8G8B8_SRGB
3087 >0 ulelong 30 B8G8R8_UNORM
3088 >0 ulelong 31 B8G8R8_SNORM
3089 #>0 ulelong 32 B8G8R8_USCALED
3090 #>0 ulelong 33 B8G8R8_SSCALED
3091 >0 ulelong 34 B8G8R8_UINT
3092 >0 ulelong 35 B8G8R8_SINT
3093 >0 ulelong 36 B8G8R8_SRGB
3094 >0 ulelong 37 R8G8B8A8_UNORM
3095 >0 ulelong 38 R8G8B8A8_SNORM
3096 #>0 ulelong 39 R8G8B8A8_USCALED
3097 #>0 ulelong 40 R8G8B8A8_SSCALED
3098 >0 ulelong 41 R8G8B8A8_UINT
3099 >0 ulelong 42 R8G8B8A8_SINT
3100 >0 ulelong 43 R8G8B8A8_SRGB
3101 >0 ulelong 44 B8G8R8A8_UNORM
3102 >0 ulelong 45 B8G8R8A8_SNORM
3103 #>0 ulelong 46 B8G8R8A8_USCALED
3104 #>0 ulelong 47 B8G8R8A8_SSCALED
3105 >0 ulelong 48 B8G8R8A8_UINT
3106 >0 ulelong 49 B8G8R8A8_SINT
3107 >0 ulelong 50 B8G8R8A8_SRGB
3108 #>0 ulelong 51 A8B8G8R8_UNORM_PACK32
3109 #>0 ulelong 52 A8B8G8R8_SNORM_PACK32
3110 #>0 ulelong 53 A8B8G8R8_USCALED_PACK32
3111 #>0 ulelong 54 A8B8G8R8_SSCALED_PACK32
3112 #>0 ulelong 55 A8B8G8R8_UINT_PACK32
3113 #>0 ulelong 56 A8B8G8R8_SINT_PACK32
3114 #>0 ulelong 57 A8B8G8R8_SRGB_PACK32
3115 >0 ulelong 58 A2R10G10B10_UNORM_PACK32
3116 >0 ulelong 59 A2R10G10B10_SNORM_PACK32
3117 #>0 ulelong 60 A2R10G10B10_USCALED_PACK32
3118 #>0 ulelong 61 A2R10G10B10_SSCALED_PACK32
3119 >0 ulelong 62 A2R10G10B10_UINT_PACK32
3120 >0 ulelong 63 A2R10G10B10_SINT_PACK32
3121 >0 ulelong 64 A2B10G10R10_UNORM_PACK32
3122 >0 ulelong 65 A2B10G10R10_SNORM_PACK32
3123 #>0 ulelong 66 A2B10G10R10_USCALED_PACK32
3124 #>0 ulelong 67 A2B10G10R10_SSCALED_PACK32
3125 >0 ulelong 68 A2B10G10R10_UINT_PACK32
3126 >0 ulelong 69 A2B10G10R10_SINT_PACK32
3127 >0 ulelong 70 R16_UNORM
3128 >0 ulelong 71 R16_SNORM
3129 #>0 ulelong 72 R16_USCALED
3130 #>0 ulelong 73 R16_SSCALED
3131 >0 ulelong 74 R16_UINT
3132 >0 ulelong 75 R16_SINT
3133 >0 ulelong 76 R16_SFLOAT
3134 >0 ulelong 77 R16G16_UNORM
3135 >0 ulelong 78 R16G16_SNORM
3136 #>0 ulelong 79 R16G16_USCALED
3137 #>0 ulelong 80 R16G16_SSCALED
3138 >0 ulelong 81 R16G16_UINT
3139 >0 ulelong 82 R16G16_SINT
3140 >0 ulelong 83 R16G16_SFLOAT
3141 >0 ulelong 84 R16G16B16_UNORM
3142 >0 ulelong 85 R16G16B16_SNORM
3143 #>0 ulelong 86 R16G16B16_USCALED
3144 #>0 ulelong 87 R16G16B16_SSCALED
3145 >0 ulelong 88 R16G16B16_UINT
3146 >0 ulelong 89 R16G16B16_SINT
3147 >0 ulelong 90 R16G16B16_SFLOAT
3148 >0 ulelong 91 R16G16B16A16_UNORM
3149 >0 ulelong 92 R16G16B16A16_SNORM
3150 #>0 ulelong 93 R16G16B16A16_USCALED
3151 #>0 ulelong 94 R16G16B16A16_SSCALED
3152 >0 ulelong 95 R16G16B16A16_UINT
3153 >0 ulelong 96 R16G16B16A16_SINT
3154 >0 ulelong 97 R16G16B16A16_SFLOAT
3155 >0 ulelong 98 R32_UINT
3156 >0 ulelong 99 R32_SINT
3157 >0 ulelong 100 R32_SFLOAT
3158 >0 ulelong 101 R32G32_UINT
3159 >0 ulelong 102 R32G32_SINT
3160 >0 ulelong 103 R32G32_SFLOAT
3161 >0 ulelong 104 R32G32B32_UINT
3162 >0 ulelong 105 R32G32B32_SINT
3163 >0 ulelong 106 R32G32B32_SFLOAT
3164 >0 ulelong 107 R32G32B32A32_UINT
3165 >0 ulelong 108 R32G32B32A32_SINT
3166 >0 ulelong 109 R32G32B32A32_SFLOAT
3167 >0 ulelong 110 R64_UINT
3168 >0 ulelong 111 R64_SINT
3169 >0 ulelong 112 R64_SFLOAT
3170 >0 ulelong 113 R64G64_UINT
3171 >0 ulelong 114 R64G64_SINT
3172 >0 ulelong 115 R64G64_SFLOAT
3173 >0 ulelong 116 R64G64B64_UINT
3174 >0 ulelong 117 R64G64B64_SINT
3175 >0 ulelong 118 R64G64B64_SFLOAT
3176 >0 ulelong 119 R64G64B64A64_UINT
3177 >0 ulelong 120 R64G64B64A64_SINT
3178 >0 ulelong 121 R64G64B64A64_SFLOAT
3179 >0 ulelong 122 B10G11R11_UFLOAT_PACK32
3180 >0 ulelong 123 E5B9G9R9_UFLOAT_PACK32
3181 >0 ulelong 124 D16_UNORM
3182 >0 ulelong 125 X8_D24_UNORM_PACK32
3183 >0 ulelong 126 D32_SFLOAT
3184 >0 ulelong 127 S8_UINT
3185 >0 ulelong 128 D16_UNORM_S8_UINT
3186 >0 ulelong 129 D24_UNORM_S8_UINT
3187 >0 ulelong 130 D32_SFLOAT_S8_UINT
3189 >0 ulelong 131 BC1_RGB_UNORM_BLOCK
3190 >0 ulelong 132 BC1_RGB_SRGB_BLOCK
3191 >0 ulelong 133 BC1_RGBA_UNORM_BLOCK
3192 >0 ulelong 134 BC1_RGBA_SRGB_BLOCK
3193 >0 ulelong 135 BC2_UNORM_BLOCK
3194 >0 ulelong 136 BC2_SRGB_BLOCK
3195 >0 ulelong 137 BC3_UNORM_BLOCK
3196 >0 ulelong 138 BC3_SRGB_BLOCK
3197 >0 ulelong 139 BC4_UNORM_BLOCK
3198 >0 ulelong 140 BC4_SNORM_BLOCK
3199 >0 ulelong 141 BC5_UNORM_BLOCK
3200 >0 ulelong 142 BC5_SNORM_BLOCK
3201 >0 ulelong 143 BC6H_UFLOAT_BLOCK
3202 >0 ulelong 144 BC6H_SFLOAT_BLOCK
3203 >0 ulelong 145 BC7_UNORM_BLOCK
3204 >0 ulelong 146 BC7_SRGB_BLOCK
3206 >0 ulelong 147 ETC2_R8G8B8_UNORM_BLOCK
3207 >0 ulelong 148 ETC2_R8G8B8_SRGB_BLOCK
3208 >0 ulelong 149 ETC2_R8G8B8A1_UNORM_BLOCK
3209 >0 ulelong 150 ETC2_R8G8B8A1_SRGB_BLOCK
3210 >0 ulelong 151 ETC2_R8G8B8A8_UNORM_BLOCK
3211 >0 ulelong 152 ETC2_R8G8B8A8_SRGB_BLOCK
3213 >0 ulelong 153 EAC_R11_UNORM_BLOCK
3214 >0 ulelong 154 EAC_R11_SNORM_BLOCK
3215 >0 ulelong 155 EAC_R11G11_UNORM_BLOCK
3216 >0 ulelong 156 EAC_R11G11_SNORM_BLOCK
3218 >0 ulelong 157 ASTC_4x4_UNORM_BLOCK
3219 >0 ulelong 158 ASTC_4x4_SRGB_BLOCK
3220 >0 ulelong 159 ASTC_5x4_UNORM_BLOCK
3221 >0 ulelong 160 ASTC_5x4_SRGB_BLOCK
3222 >0 ulelong 161 ASTC_5x5_UNORM_BLOCK
3223 >0 ulelong 162 ASTC_5x5_SRGB_BLOCK
3224 >0 ulelong 163 ASTC_6x5_UNORM_BLOCK
3225 >0 ulelong 164 ASTC_6x5_SRGB_BLOCK
3226 >0 ulelong 165 ASTC_6x6_UNORM_BLOCK
3227 >0 ulelong 166 ASTC_6x6_SRGB_BLOCK
3228 >0 ulelong 167 ASTC_8x5_UNORM_BLOCK
3229 >0 ulelong 168 ASTC_8x5_SRGB_BLOCK
3230 >0 ulelong 169 ASTC_8x6_UNORM_BLOCK
3231 >0 ulelong 170 ASTC_8x6_SRGB_BLOCK
3232 >0 ulelong 171 ASTC_8x8_UNORM_BLOCK
3233 >0 ulelong 172 ASTC_8x8_SRGB_BLOCK
3234 >0 ulelong 173 ASTC_10x5_UNORM_BLOCK
3235 >0 ulelong 174 ASTC_10x5_SRGB_BLOCK
3236 >0 ulelong 175 ASTC_10x6_UNORM_BLOCK
3237 >0 ulelong 176 ASTC_10x6_SRGB_BLOCK
3238 >0 ulelong 177 ASTC_10x8_UNORM_BLOCK
3239 >0 ulelong 178 ASTC_10x8_SRGB_BLOCK
3240 >0 ulelong 179 ASTC_10x10_UNORM_BLOCK
3241 >0 ulelong 180 ASTC_10x10_SRGB_BLOCK
3242 >0 ulelong 181 ASTC_12x10_UNORM_BLOCK
3243 >0 ulelong 182 ASTC_12x10_SRGB_BLOCK
3244 >0 ulelong 183 ASTC_12x12_UNORM_BLOCK
3245 >0 ulelong 184 ASTC_12x12_SRGB_BLOCK
3247 >0 ulelong 1000156000 G8B8G8R8_422_UNORM
3248 >0 ulelong 1000156001 B8G8R8G8_422_UNORM
3249 >0 ulelong 1000156002 G8_B8_R8_3PLANE_420_UNORM
3250 >0 ulelong 1000156003 G8_B8R8_2PLANE_420_UNORM
3251 >0 ulelong 1000156004 G8_B8_R8_3PLANE_422_UNORM
3252 >0 ulelong 1000156005 G8_B8R8_2PLANE_422_UNORM
3253 >0 ulelong 1000156006 G8_B8_R8_3PLANE_444_UNORM
3254 >0 ulelong 1000156007 R10X6_UNORM_PACK16
3255 >0 ulelong 1000156008 R10X6G10X6_UNORM_2PACK16
3256 >0 ulelong 1000156009 R10X6G10X6B10X6A10X6_UNORM_4PACK16
3257 >0 ulelong 1000156010 G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
3258 >0 ulelong 1000156011 B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
3259 >0 ulelong 1000156012 G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
3260 >0 ulelong 1000156013 G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
3261 >0 ulelong 1000156014 G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
3262 >0 ulelong 1000156015 G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
3263 >0 ulelong 1000156016 G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
3264 >0 ulelong 1000156017 R12X4_UNORM_PACK16
3265 >0 ulelong 1000156018 R12X4G12X4_UNORM_2PACK16
3266 >0 ulelong 1000156019 R12X4G12X4B12X4A12X4_UNORM_4PACK16
3267 >0 ulelong 1000156020 G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
3268 >0 ulelong 1000156021 B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
3269 >0 ulelong 1000156022 G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
3270 >0 ulelong 1000156023 G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
3271 >0 ulelong 1000156024 G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
3272 >0 ulelong 1000156025 G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
3273 >0 ulelong 1000156026 G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
3274 >0 ulelong 1000156027 G16B16G16R16_422_UNORM
3275 >0 ulelong 1000156028 B16G16R16G16_422_UNORM
3276 >0 ulelong 1000156029 G16_B16_R16_3PLANE_420_UNORM
3277 >0 ulelong 1000156030 G16_B16R16_2PLANE_420_UNORM
3278 >0 ulelong 1000156031 G16_B16_R16_3PLANE_422_UNORM
3279 >0 ulelong 1000156032 G16_B16R16_2PLANE_422_UNORM
3280 >0 ulelong 1000156033 G16_B16_R16_3PLANE_444_UNORM
3282 >0 ulelong 1000054000 PVRTC1_2BPP_UNORM_BLOCK_IMG
3283 >0 ulelong 1000054001 PVRTC1_4BPP_UNORM_BLOCK_IMG
3284 >0 ulelong 1000054002 PVRTC2_2BPP_UNORM_BLOCK_IMG
3285 >0 ulelong 1000054003 PVRTC2_4BPP_UNORM_BLOCK_IMG
3286 >0 ulelong 1000054004 PVRTC1_2BPP_SRGB_BLOCK_IMG
3287 >0 ulelong 1000054005 PVRTC1_4BPP_SRGB_BLOCK_IMG
3288 >0 ulelong 1000054006 PVRTC2_2BPP_SRGB_BLOCK_IMG
3289 >0 ulelong 1000054007 PVRTC2_4BPP_SRGB_BLOCK_IMG
3291 >0 ulelong 1000066000 ASTC_4x4_SFLOAT_BLOCK_EXT
3292 >0 ulelong 1000066001 ASTC_5x4_SFLOAT_BLOCK_EXT
3293 >0 ulelong 1000066002 ASTC_5x5_SFLOAT_BLOCK_EXT
3294 >0 ulelong 1000066003 ASTC_6x5_SFLOAT_BLOCK_EXT
3295 >0 ulelong 1000066004 ASTC_6x6_SFLOAT_BLOCK_EXT
3296 >0 ulelong 1000066005 ASTC_8x5_SFLOAT_BLOCK_EXT
3297 >0 ulelong 1000066006 ASTC_8x6_SFLOAT_BLOCK_EXT
3298 >0 ulelong 1000066007 ASTC_8x8_SFLOAT_BLOCK_EXT
3299 >0 ulelong 1000066008 ASTC_10x5_SFLOAT_BLOCK_EXT
3300 >0 ulelong 1000066009 ASTC_10x6_SFLOAT_BLOCK_EXT
3301 >0 ulelong 1000066010 ASTC_10x8_SFLOAT_BLOCK_EXT
3302 >0 ulelong 1000066011 ASTC_10x10_SFLOAT_BLOCK_EXT
3303 >0 ulelong 1000066012 ASTC_12x10_SFLOAT_BLOCK_EXT
3304 >0 ulelong 1000066013 ASTC_12x12_SFLOAT_BLOCK_EXT
3307 0 string \xABKTX\ 20\xBB\r\n\x1A\n Khronos KTX2 texture
3308 >20 ulelong x \b, %u
3311 >32 ulelong >1 \b, %u layers
3312 >36 ulelong >1 \b, %u faces
3313 >40 ulelong >1 \b, %u mipmaps
3315 >>44 use khronos-ktx2-supercompression
3317 >>12 use khronos-ktx2-vkFormat
3319 # Type: Valve VTF texture.
3320 # From: David Korth <gerbilsoft@gerbilsoft.com>
3322 # - https://developer.valvesoftware.com/wiki/Valve_Texture_Format
3324 # VTF image formats.
3325 0 name vtf-image-format
3326 >0 ulelong 0 RGBA8888
3327 >0 ulelong 1 ABGR8888
3335 >0 ulelong 9 RGB888 (bluescreen)
3336 >0 ulelong 10 BGR888 (bluescreen)
3337 >0 ulelong 11 ARGB8888
3338 >0 ulelong 12 BGRA8888
3342 >0 ulelong 16 BGRx8888
3343 >0 ulelong 17 BGR565
3344 >0 ulelong 18 BGRx5551
3345 >0 ulelong 19 BGRA4444
3346 >0 ulelong 20 DXT1+A1
3347 >0 ulelong 21 BGRA5551
3349 >0 ulelong 23 UVWQ8888
3350 >0 ulelong 24 RGBA16161616F
3351 >0 ulelong 25 RGBA16161616
3352 >0 ulelong 26 UVLX8888
3355 0 string VTF\0 Valve Texture Format
3358 >0x10 uleshort x \b, %u
3359 >0x12 uleshort >1 x %u
3360 >4 lequad 0x0000000700000002
3361 >>0x3F uleshort >1 x %u
3362 >0x18 uleshort >1 \b, %u frames
3363 >0x38 ubyte x \b, mipmaps: %u
3364 >0x34 ulelong >-1 \b,
3365 >>0x34 use vtf-image-format
3367 # Type: Valve VTF3 (PS3) texture.
3368 # From: David Korth <gerbilsoft@gerbilsoft.com>
3369 0 string VTF3 Valve Texture Format (PS3)
3370 >0x14 ubeshort x \b, %u
3371 >0x16 ubeshort x \b x %u
3372 >0x10 ubelong&0x2000 0 \b, DXT1
3373 >0x10 ubelong&0x2000 0x2000 \b, DXT5
3375 # Type: ASTC texture.
3376 # From: David Korth <gerbilsoft@gerbilsoft.com>
3378 # - https://stackoverflow.com/questions/22600678/determine-internal-format-of-given-astc-compressed-image-through-its-header
3379 # - https://stackoverflow.com/a/22682244
3380 0 ulelong 0x5ca1ab13 ASTC
3384 # X, Y, and Z dimensions are stored as 24-bit LE.
3385 # Pretend it's 32-bit and mask off the high byte.
3386 >7 ulelong&0x00FFFFFF x texture, %u
3387 >10 ulelong&0x00FFFFFF x x %u
3388 >13 ulelong&0x00FFFFFF >1 x %u
3390 # Zebra Metafile graphic
3391 # http://www.fileformat.info/format/zbr/egff.htm
3392 0 ubeshort 0x9a02 Zebra Metafile graphic
3393 >2 uleshort 1 (version 1.x)
3394 >2 uleshort 2 (version 1.1x or 1.2x)
3395 >2 uleshort 3 (version 1.49)
3396 >2 uleshort 4 (version 1.50)
3397 >4 string x (comment = %s)
3399 # Microsoft Paint graphic
3400 # http://www.fileformat.info/format/mspaint/egff.htm
3401 0 string DanM icrosoft Paint image data (version 1.x)
3403 >>6 uleshort x x %d)
3404 0 string LinS Microsoft Paint image data (version 2.0)
3406 >>6 uleshort x x %d)
3408 # reMarkable tablet internal file format (https://www.remarkable.com/)
3409 # https://github.com/ax3l/lines-are-beautiful
3410 # https://plasma.ninja/blog/devices/remarkable/binary/format/2017/12/26/\
3411 # reMarkable-lines-file-format.html#what-to-do-next
3416 >>>22 string selections
3418 >>>>>37 string layers
3419 >>>>>>43 ulelong x reMarkable tablet notebook lines, 1404 x 1872, %x page(s)
3421 # newer per-page files for the reMarkable
3425 >>>24 string version=
3426 >>>>32 ubyte x reMarkable tablet page (v%c), 1404 x 1872,
3427 >>>>>43 ulelong x %d layer(s)
3429 # Type: PVR3 texture.
3430 # From: David Korth <gerbilsoft@gerbilsoft.com>
3432 # - http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf
3434 # PVR3 pixel formats.
3435 0 name pvr3-pixel-format
3436 >0 ulelong 0 PVRTC 2bpp RGB
3437 >0 ulelong 1 PVRTC 2bpp RGBA
3438 >0 ulelong 2 PVRTC 4bpp RGB
3439 >0 ulelong 3 PVRTC 4bpp RGBA
3440 >0 ulelong 4 PVRTC-II 2bpp
3441 >0 ulelong 5 PVRTC-II 4bpp
3454 >0 ulelong 18 BW1bpp
3455 >0 ulelong 19 R9G9B9E5 Shared Exponent
3456 >0 ulelong 20 RGBG8888
3457 >0 ulelong 21 GRGB8888
3458 >0 ulelong 22 ETC2 RGB
3459 >0 ulelong 23 ETC2 RGBA
3460 >0 ulelong 24 ETC2 RGB A1
3461 >0 ulelong 25 EAC R11
3462 >0 ulelong 26 EAC RG11
3463 >0 ulelong 27 ASTC_4x4
3464 >0 ulelong 28 ASTC_5x4
3465 >0 ulelong 29 ASTC_5x5
3466 >0 ulelong 30 ASTC_6x5
3467 >0 ulelong 31 ASTC_6x6
3468 >0 ulelong 32 ASTC_8x5
3469 >0 ulelong 33 ASTC_8x6
3470 >0 ulelong 34 ASTC_8x8
3471 >0 ulelong 35 ASTC_10x5
3472 >0 ulelong 36 ASTC_10x6
3473 >0 ulelong 37 ASTC_10x8
3474 >0 ulelong 38 ASTC_10x10
3475 >0 ulelong 39 ASTC_12x10
3476 >0 ulelong 40 ASTC_12x12
3477 >0 ulelong 41 ASTC_3x3x3
3478 >0 ulelong 42 ASTC_4x3x3
3479 >0 ulelong 43 ASTC_4x4x3
3480 >0 ulelong 44 ASTC_4x4x4
3481 >0 ulelong 45 ASTC_5x4x4
3482 >0 ulelong 46 ASTC_5x5x4
3483 >0 ulelong 47 ASTC_5x5x5
3484 >0 ulelong 48 ASTC_6x5x5
3485 >0 ulelong 49 ASTC_6x6x5
3486 >0 ulelong 50 ASTC_6x6x6
3488 0 string PVR\x03 PowerVR 3.0 texture:
3489 >0x18 ulelong x %u x
3491 >0x20 ulelong >1 x %u
3494 >>0x08 use pvr3-pixel-format
3497 >>>0x0C ubyte !0 \b%u
3498 >>0x09 ubyte !0 \b%c
3499 >>>0x0D ubyte !0 \b%u
3500 >>0x0A ubyte !0 \b%c
3501 >>>0x0E ubyte !0 \b%u
3502 >>0x0B ubyte !0 \b%c
3503 >>>0x0F ubyte !0 \b%u
3504 >0x10 ulelong 1 \b, sRGB
3505 >0x04 ulelong&0x02 0x02 \b, premultiplied alpha
3507 0 string \x03RVP PowerVR 3.0 texture: BE,
3508 >0x18 ubelong x %u x
3510 >0x20 ubelong >1 x %u
3513 >>0x08 use pvr3-pixel-format
3516 >>>0x0F ubyte !0 \b%u
3517 >>0x0A ubyte !0 \b%c
3518 >>>0x0E ubyte !0 \b%u
3519 >>0x09 ubyte !0 \b%c
3520 >>>0x0D ubyte !0 \b%u
3521 >>0x08 ubyte !0 \b%c
3522 >>>0x0C ubyte !0 \b%u
3523 >0x10 ubelong 1 \b, sRGB
3524 >0x04 ubelong&0x02 0x02 \b, premultiplied alpha
3526 # Type: Microsoft Xbox XPR0 texture.
3527 # From: David Korth <gerbilsoft@gerbilsoft.com>
3529 # - https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/develop/src/core/hle/D3D8/XbD3D8Types.h
3531 # XPR pixel formats.
3532 0 name xbox-xpr-pixel-format
3535 >0 ubyte 0x02 ARGB1555
3536 >0 ubyte 0x03 RGB555
3537 >0 ubyte 0x04 ARGB4444
3538 >0 ubyte 0x05 RGB565
3539 >0 ubyte 0x06 ARGB8888
3540 >0 ubyte 0x07 xRGB8888
3545 >0 ubyte 0x10 Linear ARGB1555
3546 >0 ubyte 0x11 Linear RGB565
3547 >0 ubyte 0x12 Linear ARGB8888
3548 >0 ubyte 0x13 Linear L8
3549 >0 ubyte 0x16 Linear R8B8
3550 >0 ubyte 0x17 Linear G8B8
3553 >0 ubyte 0x1B Linear AL8
3554 >0 ubyte 0x1C Linear RGB555
3555 >0 ubyte 0x1D Linear ARGB4444
3556 >0 ubyte 0x1E Linear xRGB8888
3557 >0 ubyte 0x1F Linear A8
3558 >0 ubyte 0x20 Linear A8L8
3561 >0 ubyte 0x27 L6V5U5
3568 >0 ubyte 0x2E Linear D24S8
3569 >0 ubyte 0x2F Linear F24S8
3570 >0 ubyte 0x30 Linear D16
3571 >0 ubyte 0x31 Linear F16
3573 >0 ubyte 0x33 V16U16
3574 >0 ubyte 0x35 Linear L16
3575 >0 ubyte 0x36 Linear V16U16
3576 >0 ubyte 0x37 Linear L6V5U5
3577 >0 ubyte 0x38 RGBA5551
3578 >0 ubyte 0x39 RGBA4444
3579 >0 ubyte 0x3A QWVU8888
3580 >0 ubyte 0x3B BGRA8888
3581 >0 ubyte 0x3C RGBA8888
3582 >0 ubyte 0x3D Linear RGBA5551
3583 >0 ubyte 0x3E Linear RGBA4444
3584 >0 ubyte 0x3F Linear ABGR8888
3585 >0 ubyte 0x40 Linear BGRA8888
3586 >0 ubyte 0x41 Linear RGBA8888
3587 >0 ubyte 0x64 Vertex Data
3589 0 string XPR0 Microsoft Xbox XPR0 texture
3590 >0x19 ubyte x \b, format:
3591 >>0x19 use xbox-xpr-pixel-format
3593 # ILDA Image Data Transfer Format
3594 # https://www.ilda.com/resources/StandardsDocs/ILDA_IDTF14_rev011.pdf
3596 # Updated by Chuck Hein (laser@geekdude.com)
3598 0 string ILDA ILDA Image Data Transfer Format
3599 >7 ubyte 0x00 3D Coordinates with Indexed Color
3600 >7 ubyte 0x01 2D Coordinates with Indexed Color
3601 >7 ubyte 0x02 Color Palette
3602 >7 ubyte 0x04 3D Coordinates with True Color
3603 >7 ubyte 0x05 2D Coordinates with True Color
3604 >8 string >0 \b, palette %s
3605 >16 string >0 \b, company %s
3606 >24 ubeshort >0 \b, number of records %d
3607 >>26 ubeshort x \b, palette number %d
3608 >>28 ubeshort >0 \b, number of frames %d
3609 >>30 ubyte >0 \b, projector number %d
3611 # Dropbox "lepton" compressed jpeg format
3612 # https://github.com/dropbox/lepton
3613 0 ubelong&0xfffff0ff 0xcf84005a Lepton image file
3614 >2 ubyte x (version %d)
3616 # Apple QuickTake camera raw images
3617 # https://en.wikipedia.org/wiki/Apple_QuickTake
3618 # dcraw can decode them
3621 >>544 ubeshort x \b, %dx
3622 >>546 ubeshort x \b%d
3624 >>546 ubeshort x \b, %dx
3625 >>544 ubeshort x \b%d
3627 0 string qktk Apple QuickTake 100 Raw Image
3631 >4 ubyte 0 Apple QuickTake 150 Raw Image
3632 >4 ubyte >0 Apple QuickTake 200 Raw Image
3635 # From: Joerg Jenderek
3636 # URL: http://fileformats.archiveteam.org/wiki/Corel_Photo-Paint_image
3637 # Reference: http://blog.argasinski.eu/wp-content/uploads/2011/08/cpt-specification-0.01.pdf
3639 >4 string FILE Corel Photo-Paint image, version
3640 # version like 7, 9 or 8
3642 !:mime image/x-corel-cpt
3644 # if blocks_array_offset available jump blockNumber*8 bytes
3646 >>>(0x28.l*8) ubyte x
3647 # jump additional stored blocks_array_offset bytes forward to object block
3648 >>>>&(0x34.l-1) ulelong x %u
3649 # object height in pixels
3650 >>>>>&0 ulelong x x %u
3651 # if no blocks_array_offset available jump blockNumber*8 bytes
3653 >>>(0x28.l*8) ubyte x
3654 # jump additional 0x13C bytes forward to object block
3655 >>>>&0x13B ulelong x %u
3656 >>>>>&0 ulelong x x %u
3657 # image color model used
3659 >>>0x8 ulelong 0x1 RGB 24 bits
3660 >>>0x8 ulelong 0x3 CMYK 24 bits
3661 >>>0x8 ulelong 0x5 greyscale 8 bits
3662 >>>0x8 ulelong 0x6 black and white 1 bit
3663 >>>0x8 ulelong 0xA RGB 8 bits
3664 # palette_length number of colors * 3 in case of 8-bit RGB paletted image
3665 # 0 otherwise. Allowed values: 0 or [1..256] * 3
3666 #>>0xC ulelong >0 \b, palette length %u
3667 >>>>0xC ulelong/3 <256 \b, %u colors
3668 >>>0x8 ulelong 0xB LAB
3669 >>>0x8 ulelong 0xC RGB 48 bits
3670 >>>0x8 ulelong 0xE greyscale 16 bits
3671 # this should not happen
3672 >>>0x8 default x color model
3673 >>>>0x8 ulelong x %#x
3674 # bit 1 in CPT file flags: UCS-2 file comment present
3676 # look for comment marker
3677 >>>0x100 search/0xc9d \4\2\0\0
3678 # UCS-2 file comment
3679 >>>>&0 lestring16 x "%s"
3680 # if no UCS-2 is present show ANSI file comment[112] if available
3681 >>0x31 ubyte&0x02 =0
3682 >>>0x3C string >\0 "%-.112s"
3683 # reserved seems to be always 0
3684 #>>0x10 ulelong >0 \b, reserved1 %u
3685 # horizontal real dpi = dpi_h * 25.4 / 10**6
3686 >>0x18 ulelong x \b, %u micro dots/mm
3687 # image vertical DPI in CPT DPI unit
3688 #>>0x1C ulelong x \b, %u micro dots/mm
3689 # reserved seems to be always 0
3690 #>>0x20 ulelong >0 \b, reserved2 %u
3691 #>>0x24 ulelong >0 \b, reserved3 %u
3692 # blocks_count; number of CPT_Block blocks. Allowed values: > 0
3693 >>0x28 ulelong x \b, %u block
3695 >>0x28 ulelong !1 \bs
3697 # lower byte of CPT file flags: 0x94~CPT9FILE 0x01~often CPT7FILE 0x8C~CPT8FILE
3698 #>>0x30 ubyte x \b, lower flags %#x
3699 # upper byte of CPT file flags:
3700 #>>0x31 ubyte >0 \b, upper flags %#x
3701 # bit 2 in CPT file flags: unknown
3702 #>>0x31 ubyte &0x04 \b, with UNKNOWN
3703 # bits 3-7 in CPT file flags: unknown, seem to be often 0
3704 # show unusual flag combinations
3705 >>0x31 ubyte&0xFC >0
3706 >>>0x30 uleshort x \b, flags %#4.4x
3707 # reserved seems to be always 0
3708 #>>0x32 uleshort >0 \b, reserved4 %#x
3709 # blocks_array_offset is always 0 for CPT7 and CPT8 files created by PP7-PP8
3710 # typical values like: 13Ch 154h 43Ch 4F0h DA8h
3711 >>0x34 ulelong x \b, array offset %#x
3712 # reserved seems to be often 0
3713 >>0x38 ulelong >0 \b, reserved5 %#x
3714 # possible next master block
3715 #>>0x100 ubequad !0 \b, next block=%#llx...
3716 # bit 0: ICC profile block present
3717 >>0x31 ubyte &0x01 \b, with ICC profile
3718 # check for characteristic string acsp of color profile for DEBUGGING
3719 #>>>0x178 string x icc=%.4s
3720 # display ICC/ICM color profile by ./icc
3721 #>>>0x154 use color-profile
3723 # Type: Crunch compressed texture.
3724 # From: David Korth <gerbilsoft@gerbilsoft.com>
3726 # - https://github.com/BinomialLLC/crunch/blob/44c8402e24441c7524ca364941fd224ab3b971e9/inc/crn_decomp.h#L267
3727 0 ubelong 0x4878004A Crunch compressed texture:
3728 >0x0C ubeshort x %u x
3730 >0x12 ubyte 0 \b, DXT1
3731 >0x12 ubyte 1 \b, DXT3
3732 >0x12 ubyte 2 \b, DXT5
3733 >0x12 ubyte 3 \b, DXT5 CCxY
3734 >0x12 ubyte 4 \b, DXT5 xGxR
3735 >0x12 ubyte 5 \b, DXT5 xGBR
3736 >0x12 ubyte 6 \b, DXT5 AGBR
3737 >0x12 ubyte 7 \b, DXn XY
3738 >0x12 ubyte 8 \b, DXn YX
3739 >0x12 ubyte 9 \b, DXT5 Alpha
3740 >0x12 ubyte 10 \b, ETC1
3741 >0x10 ubyte >1 \b, %u images
3742 >0x11 ubyte >1 \b, %u faces
3743 # TODO: Flags at 0x13? (ubeshort)
3745 # Type: BasisLZ compressed texture.
3746 # From: David Korth <gerbilsoft@gerbilsoft.com>
3748 # - https://github.com/BinomialLLC/basis_universal/blob/master/spec/basis_spec.txt
3750 >0x04 uleshort 0x4D BasisLZ
3751 >>0x02 uleshort x v%x compressed texture:
3752 >>0x14 ubyte 0 ETC1S
3753 >>0x14 ubyte 1 UASTC 4x4
3754 >>0x0E ulelong&0xFFFFFF >1 \b, %u slices
3755 >>0x11 ulelong&0xFFFFFF >1 \b, %u images
3756 >>0x15 uleshort&0x02 2 \b, Y-flipped
3758 # MIME registration: https://www.iana.org/assignments/media-types/model/e57
3759 # Sample files: http://www.libe57.org/data.html
3760 # Reference implementation: http://www.libe57.org/
3761 # https://www.ri.cmu.edu/pub_files/2011/1/2011-huber-e57-v3.pdf
3762 0 string ASTM-E57 ASTM E57 three-dimensional model
3766 # QOI [Quite OK Image Format] images
3767 # (Horia Mihai David, mihaidavid@posteo.net)
3769 # QOI format by Dominic Szablewski <http://phoboslab.org/>
3770 # <https://qoiformat.org/>
3772 # Based on spec v1.0 (2022.01.05) <https://qoiformat.org/qoi-specification.pdf>
3774 0 string qoif QOI image data
3777 # See <https://github.com/phoboslab/qoi/issues/167>
3782 >>>12 ubyte 4 \bRGBA
3784 >>>>12 ubyte x \b*bad channels %u*
3785 >>>13 ubyte 0 (linear alpha)
3789 >>>13 ubyte 1 (all channels linear)
3791 >>>13 ubyte x *bad colorspace %u*
3794 # Type: Godot 3, 4 texture (pixel format)
3795 # From: David Korth <gerbilsoft@gerbilsoft.com>
3796 0 name godot-pixel-format
3797 >0 ulelong&0xFFFFF 0 L8
3798 >0 ulelong&0xFFFFF 1 LA8
3799 >0 ulelong&0xFFFFF 2 R8
3800 >0 ulelong&0xFFFFF 3 RG8
3801 >0 ulelong&0xFFFFF 4 RGB8
3802 >0 ulelong&0xFFFFF 5 RGBA8
3803 >0 ulelong&0xFFFFF 6 RGBA4444
3804 >0 ulelong&0xFFFFF 7 RGB565
3805 >0 ulelong&0xFFFFF 8 RF
3806 >0 ulelong&0xFFFFF 9 RGF
3807 >0 ulelong&0xFFFFF 10 RGBF
3808 >0 ulelong&0xFFFFF 11 RGBAF
3809 >0 ulelong&0xFFFFF 12 RH
3810 >0 ulelong&0xFFFFF 13 RGH
3811 >0 ulelong&0xFFFFF 14 RGBH
3812 >0 ulelong&0xFFFFF 15 RGBAH
3813 >0 ulelong&0xFFFFF 16 RGBE9995
3814 >0 ulelong&0xFFFFF 17 DXT1
3815 >0 ulelong&0xFFFFF 18 DXT3
3816 >0 ulelong&0xFFFFF 19 DXT5
3817 >0 ulelong&0xFFFFF 20 RGTC_R
3818 >0 ulelong&0xFFFFF 21 RGTC_RG
3819 >0 ulelong&0xFFFFF 22 BPTC_RGBA
3820 >0 ulelong&0xFFFFF 23 BPTC_RGBF
3821 >0 ulelong&0xFFFFF 24 BPTC_RGBFU
3822 >0 ulelong&0xFFFFF 25 PVRTC1_2
3823 >0 ulelong&0xFFFFF 26 PVRTC1_2A
3824 >0 ulelong&0xFFFFF 27 PVRTC1_4
3825 >0 ulelong&0xFFFFF 28 PVRTC1_4A
3826 >0 ulelong&0xFFFFF 29 ETC
3827 >0 ulelong&0xFFFFF 30 ETC2_R11
3828 >0 ulelong&0xFFFFF 31 ETC2_R11S
3829 >0 ulelong&0xFFFFF 32 ETC2_RG11
3830 >0 ulelong&0xFFFFF 33 ETC2_RG11S
3831 >0 ulelong&0xFFFFF 34 ETC2_RGB8
3832 >0 ulelong&0xFFFFF 35 ETC2_RGBA8
3833 >0 ulelong&0xFFFFF 36 ETC2_RGB8A1
3834 >0 ulelong&0xFFFFF 37 ASTC_8x8
3836 # Type: Godot 3, 4 texture (rescale display, width)
3837 # From: David Korth <gerbilsoft@gerbilsoft.com>
3838 # Shows rescale value if it's not a power of 2.
3839 0 name godot-rescale-display-w
3858 >>0 uleshort x (rescale to %u x
3860 # Type: Godot 3, 4 texture (rescale display, height)
3861 # From: David Korth <gerbilsoft@gerbilsoft.com>
3862 # Shows rescale value if it's not a power of 2.
3863 0 name godot-rescale-display-h
3885 # Type: Godot 3 texture
3886 # From: David Korth <gerbilsoft@gerbilsoft.com>
3888 # - https://github.com/godotengine/godot/blob/3.3/core/image.h
3889 # - https://github.com/godotengine/godot/blob/3.3/scene/resources/texture.cpp
3890 # - https://github.com/godotengine/godot/blob/3.3/scene/resources/texture.h
3891 # TODO: Don't show "rescale to" if it matches the image size.
3892 0 string GDST Godot 3 texture:
3894 !:mime image/x-godot-stex
3899 >>6 use godot-rescale-display-w
3900 >>10 use godot-rescale-display-h
3902 >16 ulelong&0x800000 !0 has mipmaps,
3903 >16 ulelong&0x100000 0x100000 lossless encoding
3904 >16 ulelong&0x200000 0x200000 lossy encoding
3905 >16 ulelong&0x300000 0
3906 >>16 use godot-pixel-format
3908 # Type: Godot 4 texture
3909 # From: David Korth <gerbilsoft@gerbilsoft.com>
3911 # - https://github.com/godotengine/godot/blob/master/core/io/image.h
3912 # - https://github.com/godotengine/godot/blob/master/scene/resources/texture.cpp
3913 # - https://github.com/godotengine/godot/blob/master/scene/resources/texture.h
3914 # TODO: Don't show "rescale to" if it matches the image size.
3915 0 string GST2 Godot 4 texture
3917 !:mime image/x-godot-stex
3919 >0x28 uleshort x %u x
3921 >8 use godot-rescale-display-w
3922 >12 use godot-rescale-display-h
3924 >0x2C ulelong >1 %u mipmaps,
3925 >0x30 use godot-pixel-format
3926 >0x24 ulelong 1 \b, embedded PNG image
3927 >0x24 ulelong 2 \b, embedded WebP image
3928 >0x24 ulelong 3 \b, Basis Universal
3930 # Summary: iCEDraw graphic *.IDF
3931 # URL: http://fileformats.archiveteam.org/wiki/ICEDraw
3932 # Reference: http://mark0.net/download/triddefs_xml.7z/defs/i/idf-icedraw.trid.xml
3933 # From: Joerg Jenderek
3934 # Note: called "iCEDraw graphic" by TrID, "iCEDraw text" by FFmpeg and "iCE Draw" by Ansilove
3935 # verified by FFmpeg command `ffprobe ICE-9605.IDF` and `ansilove -s SQ-FORCE.IDF`
3936 0 string \0041.4\0\0\0\0O\0 iCEDraw graphic
3937 #!:mime application/octet-stream