xref: /freebsd/contrib/file/magic/Magdir/images (revision b9f654b163bce26de79705e77b872427c9f2afa1)
1
2#------------------------------------------------------------------------------
3# $File: images,v 1.146 2018/07/03 20:55:37 christos Exp $
4# images:  file(1) magic for image formats (see also "iff", and "c-lang" for
5# XPM bitmaps)
6#
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.
10#
11# little magic: PCX (first byte is 0x0a)
12
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)
25#
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
290	ubequad&0x00FeC400000000C0	0
30# skip more garbage like *.iso by looking for positive image type
31>2	ubyte			>0
32# skip some compiled terminfo like xterm+tmux by looking for image type less equal 33
33>>2	ubyte			<34
34# skip arches.3200 , Finder.Root , Slp.1 by looking for low pixel depth 1 8 15 16 24 32
35>>>16	ubyte			1
36>>>>0		use		tga-image
37>>>16	ubyte			8
38>>>>0		use		tga-image
39>>>16	ubyte			15
40>>>>0		use		tga-image
41>>>16	ubyte			16
42>>>>0		use		tga-image
43>>>16	ubyte			24
44>>>>0		use		tga-image
45>>>16	ubyte			32
46>>>>0		use		tga-image
47#	display tga bitmap image information
480	name				tga-image
49>2	ubyte		<34		Targa image data
50!:mime	image/x-tga
51!:apple	????TPIC
52# normal extension .tga but some Truevision products used others:
53# tpic (Apple),icb (Image Capture Board),vda (Video Display Adapter),vst (NuVista),win (UNSURE about that)
54!:ext	tga/tpic/icb/vda/vst
55# image type 1 2 3 9 10 11 32 33
56>2	ubyte&0xF7	1		- Map
57>2	ubyte&0xF7	2		- RGB
58# alpha channel
59>>17	ubyte&0x0F	>0		\bA
60>2	ubyte&0xF7	3		- Mono
61# type not found, but by http://www.fileformat.info/format/tga/corion.htm
62# Compressed color-mapped data, using Huffman, Delta, and runlength encoding
63>2	ubyte		32		- Color
64# Compressed color-mapped data, using Huffman, Delta, and RLE. 4-pass quadtree- type process
65>2	ubyte		33		- Color
66# Color Map Type 0~no 1~color map
67>1	ubyte		1		(
68# first color map entry, 0 normal
69>>3	uleshort	>0		\b%d-
70# color map length 0 2 1dh 3bh d9h 100h
71>>5	uleshort	x		\b%d)
72# 8~run length encoding bit
73>2	ubyte&0x08	8		- RLE
74# gimp can create big pictures!
75>12	uleshort	>0		%d x
76>12	uleshort	=0		65536 x
77# image height. 0 interpreted as 65536
78>14	uleshort	>0		%d
79>14	uleshort	=0		65536
80# Image Pixel depth 1 8 15 16 24 32
81>16	ubyte		x		x %d
82# X origin of image. 0 normal
83>8	uleshort	>0		+%d
84# Y origin of image. 0 normal; positive for top
85>10	uleshort	>0		+%d
86# Image descriptor: bits 3-0 give the alpha channel depth, bits 5-4 give direction
87>17	ubyte&0x0F	>0		- %d-bit alpha
88# bits 5-4 give direction. normal bottom left
89>17	ubyte		&0x20		- top
90#>17	ubyte		^0x20		- bottom
91>17	ubyte		&0x10		- right
92#>17	ubyte		^0x10		- left
93# some info say other bits 6-7 should be zero
94# but data storage interleave by http://www.fileformat.info/format/tga/corion.htm
95# 00 - no interleave;01 - even/odd interleave; 10 - four way interleave; 11 - reserved
96#>17	ubyte&0xC0	0x00		- no interleave
97>17	ubyte&0xC0	0x40		- interleave
98>17	ubyte&0xC0	0x80		- four way interleave
99>17	ubyte&0xC0	0xC0		- reserved
100# positive length implies identification field
101>0	ubyte		>0
102>>18	string		x		"%s"
103# last 18 bytes of newer tga file footer signature
104>18	search/4261301/s	TRUEVISION-XFILE.\0
105# extension area offset if not 0
106>>&-8		ulelong			>0
107# length of the extension area. normal 495 for version 2.0
108>>>(&-4.l)	uleshort		0x01EF
109# AuthorName[41]
110>>>>&0		string			>\0		- author "%-.40s"
111# Comment[324]=4 * 80 null terminated
112>>>>&41		string			>\0		- comment "%-.80s"
113# date
114>>>>&365	ubequad&0xffffFFFFffff0000	!0
115# Day
116>>>>>&-6		uleshort		x		%d
117# Month
118>>>>>&-8		uleshort		x		\b-%d
119# Year
120>>>>>&-4		uleshort		x		\b-%d
121# time
122>>>>&371	ubequad&0xffffFFFFffff0000	!0
123# hour
124>>>>>&-8		uleshort		x		%d
125# minutes
126>>>>>&-6		uleshort		x		\b:%.2d
127# second
128>>>>>&-4		uleshort		x		\b:%.2d
129# JobName[41]
130>>>>&377		string			>\0		- job "%-.40s"
131# JobHour Jobminute Jobsecond
132>>>>&418	ubequad&0xffffFFFFffff0000	!0
133>>>>>&-8		uleshort		x		%d
134>>>>>&-6		uleshort		x		\b:%.2d
135>>>>>&-4		uleshort		x		\b:%.2d
136# SoftwareId[41]
137>>>>&424		string			>\0		- %-.40s
138# SoftwareVersionNumber
139>>>>&424	ubyte				>0
140>>>>>&40		uleshort/100		x		%d
141>>>>>&40		uleshort%100		x		\b.%d
142# VersionLetter
143>>>>>&42		ubyte			>0x20		\b%c
144# KeyColor
145>>>>&468		ulelong			>0		- keycolor 0x%8.8x
146# Denominator of Pixel ratio. 0~no pixel aspect
147>>>>&474	uleshort			>0
148# Numerator
149>>>>>&-4		uleshort		>0		- aspect %d
150>>>>>&-2		uleshort		x		\b/%d
151# Denominator of Gamma ratio. 0~no Gamma value
152>>>>&478	uleshort			>0
153# Numerator
154>>>>>&-4		uleshort		>0		- gamma %d
155>>>>>&-2		uleshort		x		\b/%d
156# ColorOffset
157#>>>>&480	ulelong			x		- col offset 0x%8.8x
158# StampOffset
159#>>>>&484	ulelong			x		- stamp offset 0x%8.8x
160# ScanOffset
161#>>>>&488	ulelong			x		- scan offset 0x%8.8x
162# AttributesType
163#>>>>&492	ubyte			x		- Attributes 0x%x
164## EndOfTGA
165
166# PBMPLUS images
167# The next byte following the magic is always whitespace.
168# strength is changed to try these patterns before "x86 boot sector"
1690	name		netpbm
170>3	regex/s		=[0-9]{1,50}\ [0-9]{1,50}	Netpbm image data
171>>&0	regex		=[0-9]{1,50} 			\b, size = %s x
172>>>&0	regex		=[0-9]{1,50}			\b %s
173
1740	search/1	P1
175>0	regex/4		P1[\040\t\f\r\n]
176>>0	use		netpbm
177>>>0	string		x	\b, bitmap
178!:strength + 45
179!:mime	image/x-portable-bitmap
180
1810	search/1	P2
182>0	regex/4		P2[\040\t\f\r\n]
183>>0	use		netpbm
184>>>0	string		x	\b, greymap
185!:strength + 45
186!:mime	image/x-portable-greymap
187
1880	search/1	P3
189>0	regex/4		P3[\040\t\f\r\n]
190>>0	use		netpbm
191>>>0	string		x	\b, pixmap
192!:strength + 45
193!:mime	image/x-portable-pixmap
194
1950	string		P4
196>0	regex/4		P4[\040\t\f\r\n]
197>>0	use		netpbm
198>>>0	string		x	\b, rawbits, bitmap
199!:strength + 45
200!:mime	image/x-portable-bitmap
201
2020	string		P5
203>0	regex/4		P5[\040\t\f\r\n]
204>>0	use		netpbm
205>>>0	string		x	\b, rawbits, greymap
206!:strength + 45
207!:mime	image/x-portable-greymap
208
2090	string		P6
210>0	regex/4		P6[\040\t\f\r\n]
211>>0	use		netpbm
212>>>0	string		x	\b, rawbits, pixmap
213!:strength + 45
214!:mime	image/x-portable-pixmap
215
2160	string		P7		Netpbm PAM image file
217!:mime	image/x-portable-pixmap
218
219# From: bryanh@giraffe-data.com (Bryan Henderson)
2200	string		\117\072	Solitaire Image Recorder format
221>4	string		\013		MGI Type 11
222>4	string		\021		MGI Type 17
2230	string		.MDA		MicroDesign data
224>21	byte		48		version 2
225>21	byte		51		version 3
2260	string		.MDP		MicroDesign page data
227>21	byte		48		version 2
228>21	byte		51		version 3
229
230# NIFF (Navy Interchange File Format, a modification of TIFF) images
231# [GRR:  this *must* go before TIFF]
2320	string		IIN1		NIFF image data
233!:mime	image/x-niff
234
235# Canon RAW version 1 (CRW) files are a type of Canon Image File Format
236# (CIFF) file. These are apparently all little-endian.
237# From: Adam Buchbinder <adam.buchbinder@gmail.com>
238# URL: http://www.sno.phy.queensu.ca/~phil/exiftool/canon_raw.html
2390	string		II\x1a\0\0\0HEAPCCDR	Canon CIFF raw image data
240!:mime	image/x-canon-crw
241>16	leshort		x	\b, version %d.
242>14	leshort		x	\b%d
243
244# Canon RAW version 2 (CR2) files are a kind of TIFF with an extra magic
245# number. Put this above the TIFF test to make sure we detect them.
246# These are apparently all little-endian.
247# From: Adam Buchbinder <adam.buchbinder@gmail.com>
248# URL: http://libopenraw.freedesktop.org/wiki/Canon_CR2
2490	string		II\x2a\0\x10\0\0\0CR	Canon CR2 raw image data
250!:mime	image/x-canon-cr2
251>10	byte		x	\b, version %d.
252>11	byte		x	\b%d
253
254# Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com)
255# The second word of TIFF files is the TIFF version number, 42, which has
256# never changed.  The TIFF specification recommends testing for it.
2570	string		MM\x00\x2a	TIFF image data, big-endian
258!:strength +70
259!:mime	image/tiff
260>(4.L)	use		\^tiff_ifd
2610	string		II\x2a\x00	TIFF image data, little-endian
262!:mime	image/tiff
263!:strength +70
264>(4.l)	use		tiff_ifd
265
2660	name		tiff_ifd
267>0	leshort		x		\b, direntries=%d
268>2	use		tiff_entry
269
2700	name		tiff_entry
271# NewSubFileType
272>0	leshort		0xfe
273>>12	use		tiff_entry
274>0	leshort		0x100
275>>4	lelong		1
276>>>12	use		tiff_entry
277>>>8	leshort		x		\b, width=%d
278>0	leshort		0x101
279>>4	lelong		1
280>>>8	leshort		x		\b, height=%d
281>>>12	use		tiff_entry
282>0	leshort		0x102
283>>8	leshort		x		\b, bps=%d
284>>12	use		tiff_entry
285>0	leshort		0x103
286>>4	lelong		1		\b, compression=
287>>>8	leshort		1		\bnone
288>>>8	leshort		2		\bhuffman
289>>>8	leshort		3		\bbi-level group 3
290>>>8	leshort		4		\bbi-level group 4
291>>>8	leshort		5		\bLZW
292>>>8	leshort		6		\bJPEG (old)
293>>>8	leshort		7		\bJPEG
294>>>8	leshort		8		\bdeflate
295>>>8	leshort		9		\bJBIG, ITU-T T.85
296>>>8	leshort		0xa		\bJBIG, ITU-T T.43
297>>>8	leshort		0x7ffe		\bNeXT RLE 2-bit
298>>>8	leshort		0x8005		\bPackBits (Macintosh RLE)
299>>>8	leshort		0x8029		\bThunderscan RLE
300>>>8	leshort		0x807f		\bRasterPadding (CT or MP)
301>>>8	leshort		0x8080		\bRLE (Line Work)
302>>>8	leshort		0x8081		\bRLE (High-Res Cont-Tone)
303>>>8	leshort		0x8082		\bRLE (Binary Line Work)
304>>>8	leshort		0x80b2		\bDeflate (PKZIP)
305>>>8	leshort		0x80b3		\bKodak DCS
306>>>8	leshort		0x8765		\bJBIG
307>>>8	leshort		0x8798		\bJPEG2000
308>>>8	leshort		0x8799		\bNikon NEF Compressed
309>>>8	default		x
310>>>>8	leshort		x		\b(unknown 0x%x)
311>>>12	use		tiff_entry
312>0	leshort		0x106		\b, PhotometricIntepretation=
313>>8	clear		x
314>>8	leshort		0		\bWhiteIsZero
315>>8	leshort		1		\bBlackIsZero
316>>8	leshort		2		\bRGB
317>>8	leshort		3		\bRGB Palette
318>>8	leshort		4		\bTransparency Mask
319>>8	leshort		5		\bCMYK
320>>8	leshort		6		\bYCbCr
321>>8	leshort		8		\bCIELab
322>>8	default		x
323>>>8	leshort		x		\b(unknown=0x%x)
324>>12	use		tiff_entry
325# FillOrder
326>0	leshort		0x10a
327>>4	lelong		1
328>>>12	use		tiff_entry
329# DocumentName
330>0	leshort		0x10d
331>>(8.l)	string		x		\b, name=%s
332>>>12	use		tiff_entry
333# ImageDescription
334>0	leshort		0x10e
335>>(8.l)	string		x		\b, description=%s
336>>>12	use		tiff_entry
337# Make
338>0	leshort		0x10f
339>>(8.l)	string		x		\b, manufacturer=%s
340>>>12	use		tiff_entry
341# Model
342>0	leshort		0x110
343>>(8.l)	string		x		\b, model=%s
344>>>12	use		tiff_entry
345# StripOffsets
346>0	leshort		0x111
347>>12	use		tiff_entry
348# Orientation
349>0	leshort		0x112		\b, orientation=
350>>8	leshort		1		\bupper-left
351>>8	leshort		3		\blower-right
352>>8	leshort		6		\bupper-right
353>>8	leshort		8		\blower-left
354>>8	leshort		9		\bundefined
355>>8	default		x
356>>>8	leshort		x		\b[*%d*]
357>>12	use		tiff_entry
358# XResolution
359>0	leshort		0x11a
360>>8	lelong		x		\b, xresolution=%d
361>>12	use		tiff_entry
362# YResolution
363>0	leshort		0x11b
364>>8	lelong		x		\b, yresolution=%d
365>>12	use		tiff_entry
366# ResolutionUnit
367>0	leshort		0x128
368>>8	leshort		x		\b, resolutionunit=%d
369>>12	use		tiff_entry
370# Software
371>0	leshort		0x131
372>>(8.l)	string		x		\b, software=%s
373>>12	use		tiff_entry
374# Datetime
375>0	leshort		0x132
376>>(8.l)	string		x		\b, datetime=%s
377>>12	use		tiff_entry
378# HostComputer
379>0	leshort		0x13c
380>>(8.l)	string		x		\b, hostcomputer=%s
381>>12	use		tiff_entry
382# WhitePoint
383>0	leshort		0x13e
384>>12	use		tiff_entry
385# PrimaryChromaticities
386>0	leshort		0x13f
387>>12	use		tiff_entry
388# YCbCrCoefficients
389>0	leshort		0x211
390>>12	use		tiff_entry
391# YCbCrPositioning
392>0	leshort		0x213
393>>12	use		tiff_entry
394# ReferenceBlackWhite
395>0	leshort		0x214
396>>12	use		tiff_entry
397# Copyright
398>0	leshort		0x8298
399>>(8.l)	string		x		\b, copyright=%s
400>>12	use		tiff_entry
401# ExifOffset
402>0	leshort		0x8769
403>>12	use		tiff_entry
404# GPS IFD
405>0	leshort		0x8825		\b, GPS-Data
406>>12	use		tiff_entry
407
408#>0	leshort		x		\b, unknown=0x%x
409#>>12	use		tiff_entry
410
4110	string		MM\x00\x2b	Big TIFF image data, big-endian
412!:mime	image/tiff
4130	string		II\x2b\x00	Big TIFF image data, little-endian
414!:mime	image/tiff
415
416# PNG [Portable Network Graphics, or "PNG's Not GIF"] images
417# (Greg Roelofs, newt@uchicago.edu)
418# (Albert Cahalan, acahalan@cs.uml.edu)
419#
420# 137 P N G \r \n ^Z \n [4-byte length] I H D R [HEAD data] [HEAD crc] ...
421#
422
423# IHDR parser
4240	name		png-ihdr
425>0	belong		x		\b, %d x
426>4	belong		x		%d,
427>8	byte		x		%d-bit
428>9	byte		0		grayscale,
429>9	byte		2		\b/color RGB,
430>9	byte		3		colormap,
431>9	byte		4		gray+alpha,
432>9	byte		6		\b/color RGBA,
433#>10	byte		0		deflate/32K,
434>12	byte		0		non-interlaced
435>12	byte		1		interlaced
436
437# Standard PNG image.
4380	string		\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0DIHDR	PNG image data
439!:mime	image/png
440!:strength +10
441>16	use		png-ihdr
442
443# Apple CgBI PNG image.
4440	string		\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x04CgBI
445>24	string  	\x00\x00\x00\x0DIHDR	PNG image data (CgBI)
446!:mime	image/png
447!:strength +10
448>>32	use		png-ihdr
449
450# possible GIF replacements; none yet released!
451# (Greg Roelofs, newt@uchicago.edu)
452#
453# GRR 950115:  this was mine ("Zip GIF"):
4540	string		GIF94z		ZIF image (GIF+deflate alpha)
455!:mime	image/x-unknown
456#
457# GRR 950115:  this is Jeremy Wohl's Free Graphics Format (better):
458#
4590	string		FGF95a		FGF image (GIF+deflate beta)
460!:mime	image/x-unknown
461#
462# GRR 950115:  this is Thomas Boutell's Portable Bitmap Format proposal
463# (best; not yet implemented):
464#
4650	string		PBF		PBF image (deflate compression)
466!:mime	image/x-unknown
467
468# GIF
469# Strength set up to beat 0x55AA DOS/MBR signature word lookups (+65)
4700	string		GIF8		GIF image data
471!:strength +80
472!:mime	image/gif
473!:apple	8BIMGIFf
474>4	string		7a		\b, version 8%s,
475>4	string		9a		\b, version 8%s,
476>6	leshort		>0		%d x
477>8	leshort		>0		%d
478#>10	byte		&0x80		color mapped,
479#>10	byte&0x07	=0x00		2 colors
480#>10	byte&0x07	=0x01		4 colors
481#>10	byte&0x07	=0x02		8 colors
482#>10	byte&0x07	=0x03		16 colors
483#>10	byte&0x07	=0x04		32 colors
484#>10	byte&0x07	=0x05		64 colors
485#>10	byte&0x07	=0x06		128 colors
486#>10	byte&0x07	=0x07		256 colors
487
488# ITC (CMU WM) raster files.  It is essentially a byte-reversed Sun raster,
489# 1 plane, no encoding.
4900	string		\361\0\100\273	CMU window manager raster image data
491>4	lelong		>0		%d x
492>8	lelong		>0		%d,
493>12	lelong		>0		%d-bit
494
495# Magick Image File Format
4960	string		id=ImageMagick	MIFF image data
497
498# Artisan
4990	long		1123028772	Artisan image data
500>4	long		1		\b, rectangular 24-bit
501>4	long		2		\b, rectangular 8-bit with colormap
502>4	long		3		\b, rectangular 32-bit (24-bit with matte)
503
504# FIG (Facility for Interactive Generation of figures), an object-based format
5050	search/1	#FIG		FIG image text
506>5	string		x		\b, version %.3s
507
508# PHIGS
5090	string		ARF_BEGARF		PHIGS clear text archive
5100	string		@(#)SunPHIGS		SunPHIGS
511# version number follows, in the form m.n
512>40	string		SunBin			binary
513>32	string		archive			archive
514
515# GKS (Graphics Kernel System)
5160	string		GKSM		GKS Metafile
517>24	string		SunGKS		\b, SunGKS
518
519# CGM image files
5200	string		BEGMF		clear text Computer Graphics Metafile
521
522# MGR bitmaps  (Michael Haardt, u31b3hs@pool.informatik.rwth-aachen.de)
5230	string	yz	MGR bitmap, modern format, 8-bit aligned
5240	string	zz	MGR bitmap, old format, 1-bit deep, 16-bit aligned
5250	string	xz	MGR bitmap, old format, 1-bit deep, 32-bit aligned
5260	string	yx	MGR bitmap, modern format, squeezed
527
528# Fuzzy Bitmap (FBM) images
5290	string		%bitmap\0	FBM image data
530>30	long		0x31		\b, mono
531>30	long		0x33		\b, color
532
533# facsimile data
5341	string		PC\ Research,\ Inc	group 3 fax data
535>29	byte		0		\b, normal resolution (204x98 DPI)
536>29	byte		1		\b, fine resolution (204x196 DPI)
537# From: Herbert Rosmanith <herp@wildsau.idv.uni.linz.at>
5380	string		Sfff		structured fax file
539
540# From: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
541# most files with the extension .EPA and some with .BMP
5420	string		\x11\x06	Award BIOS Logo, 136 x 84
543!:mime	image/x-award-bioslogo
5440	string		\x11\x09	Award BIOS Logo, 136 x 126
545!:mime	image/x-award-bioslogo
546#0	string		\x07\x1f	BIOS Logo corrupted?
547# http://www.blackfiveservices.co.uk/awbmtools.shtml
548# http://biosgfx.narod.ru/v3/
549# http://biosgfx.narod.ru/abr-2/
5500	string		AWBM
551>4	leshort		<1981		Award BIOS bitmap
552!:mime	image/x-award-bmp
553# image width is a multiple of 4
554>>4	leshort&0x0003	0
555>>>4		leshort	x		\b, %d
556>>>6		leshort	x		x %d
557>>4	leshort&0x0003	>0		\b,
558>>>4	leshort&0x0003	=1
559>>>>4		leshort	x		%d+3
560>>>4	leshort&0x0003	=2
561>>>>4		leshort	x		%d+2
562>>>4	leshort&0x0003	=3
563>>>>4		leshort	x		%d+1
564>>>6		leshort	x		x %d
565# at offset 8 starts imagedata followed by "RGB " marker
566
567# PC bitmaps (OS/2, Windows BMP files)  (Greg Roelofs, newt@uchicago.edu)
568# http://en.wikipedia.org/wiki/BMP_file_format#DIB_header_.\
569# 28bitmap_information_header.29
5700	string		BM
571>14	leshort		12		PC bitmap, OS/2 1.x format
572!:mime	image/x-ms-bmp
573>>18	leshort		x		\b, %d x
574>>20	leshort		x		%d
575>14	leshort		64		PC bitmap, OS/2 2.x format
576!:mime	image/x-ms-bmp
577>>18	leshort		x		\b, %d x
578>>20	leshort		x		%d
579>14	leshort		40		PC bitmap, Windows 3.x format
580!:mime	image/x-ms-bmp
581>>18	lelong		x		\b, %d x
582>>22	lelong		x		%d x
583>>28	leshort		x		%d
584>14	leshort		124		PC bitmap, Windows 98/2000 and newer format
585!:mime	image/x-ms-bmp
586>>18	lelong		x		\b, %d x
587>>22	lelong		x		%d x
588>>28	leshort		x		%d
589>14	leshort		108		PC bitmap, Windows 95/NT4 and newer format
590!:mime	image/x-ms-bmp
591>>18	lelong		x		\b, %d x
592>>22	lelong		x		%d x
593>>28	leshort		x		%d
594>14	leshort		128		PC bitmap, Windows NT/2000 format
595!:mime	image/x-ms-bmp
596>>18	lelong		x		\b, %d x
597>>22	lelong		x		%d x
598>>28	leshort		x		%d
599# Too simple - MPi
600#0	string		IC		PC icon data
601#0	string		PI		PC pointer image data
602#0	string		CI		PC color icon data
603#0	string		CP		PC color pointer image data
604# Conflicts with other entries [BABYL]
605#0	string		BA		PC bitmap array data
606
607# XPM icons (Greg Roelofs, newt@uchicago.edu)
6080	search/1	/*\ XPM\ */	X pixmap image text
609!:mime	image/x-xpmi
610
611# Utah Raster Toolkit RLE images (janl@ifi.uio.no)
6120	leshort		0xcc52		RLE image data,
613>6	leshort		x		%d x
614>8	leshort		x		%d
615>2	leshort		>0		\b, lower left corner: %d
616>4	leshort		>0		\b, lower right corner: %d
617>10	byte&0x1	=0x1		\b, clear first
618>10	byte&0x2	=0x2		\b, no background
619>10	byte&0x4	=0x4		\b, alpha channel
620>10	byte&0x8	=0x8		\b, comment
621>11	byte		>0		\b, %d color channels
622>12	byte		>0		\b, %d bits per pixel
623>13	byte		>0		\b, %d color map channels
624
625# image file format (Robert Potter, potter@cs.rochester.edu)
6260	string		Imagefile\ version-	iff image data
627# this adds the whole header (inc. version number), informative but longish
628>10	string		>\0		%s
629
630# Sun raster images, from Daniel Quinlan (quinlan@yggdrasil.com)
6310	belong		0x59a66a95	Sun raster image data
632>4	belong		>0		\b, %d x
633>8	belong		>0		%d,
634>12	belong		>0		%d-bit,
635#>16	belong		>0		%d bytes long,
636>20	belong		0		old format,
637#>20	belong		1		standard,
638>20	belong		2		compressed,
639>20	belong		3		RGB,
640>20	belong		4		TIFF,
641>20	belong		5		IFF,
642>20	belong		0xffff		reserved for testing,
643>24	belong		0		no colormap
644>24	belong		1		RGB colormap
645>24	belong		2		raw colormap
646#>28	belong		>0		colormap is %d bytes long
647
648# SGI image file format, from Daniel Quinlan (quinlan@yggdrasil.com)
649#
650# See
651#	http://reality.sgi.com/grafica/sgiimage.html
652#
6530	beshort		474		SGI image data
654#>2	byte		0		\b, verbatim
655>2	byte		1		\b, RLE
656#>3	byte		1		\b, normal precision
657>3	byte		2		\b, high precision
658>4	beshort		x		\b, %d-D
659>6	beshort		x		\b, %d x
660>8	beshort		x		%d
661>10	beshort		x		\b, %d channel
662>10	beshort		!1		\bs
663>80	string		>0		\b, "%s"
664
6650	string		IT01		FIT image data
666>4	belong		x		\b, %d x
667>8	belong		x		%d x
668>12	belong		x		%d
669#
6700	string		IT02		FIT image data
671>4	belong		x		\b, %d x
672>8	belong		x		%d x
673>12	belong		x		%d
674#
6752048	string		PCD_IPI		Kodak Photo CD image pack file
676>0xe02	byte&0x03	0x00		, landscape mode
677>0xe02	byte&0x03	0x01		, portrait mode
678>0xe02	byte&0x03	0x02		, landscape mode
679>0xe02	byte&0x03	0x03		, portrait mode
6800	string		PCD_OPA		Kodak Photo CD overview pack file
681
682# FITS format.  Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>
683# FITS is the Flexible Image Transport System, the de facto standard for
684# data and image transfer, storage, etc., for the astronomical community.
685# (FITS floating point formats are big-endian.)
6860	string	SIMPLE\ \ =	FITS image data
687!:mime	image/fits
688!:ext	fits/fts
689>109	string	8		\b, 8-bit, character or unsigned binary integer
690>108	string	16		\b, 16-bit, two's complement binary integer
691>107	string	\ 32		\b, 32-bit, two's complement binary integer
692>107	string	-32		\b, 32-bit, floating point, single precision
693>107	string	-64		\b, 64-bit, floating point, double precision
694
695# other images
6960	string	This\ is\ a\ BitMap\ file	Lisp Machine bit-array-file
697
698# From SunOS 5.5.1 "/etc/magic" - appeared right before Sun raster image
699# stuff.
700#
7010	beshort		0x1010		PEX Binary Archive
702
703# DICOM medical imaging data
704# URL:		https://en.wikipedia.org/wiki/DICOM#Data_format
705# Note:		"dcm" is the official file name extension
706# 		XnView mention also "dc3" and "acr" as file name extension
707128	string	DICM			DICOM medical imaging data
708!:mime	application/dicom
709!:ext dcm/dicom/dic
710
711# XWD - X Window Dump file.
712#   As described in /usr/X11R6/include/X11/XWDFile.h
713#   used by the xwd program.
714#   Bradford Castalia, idaeim, 1/01
715#   updated by Adam Buchbinder, 2/09
716# The following assumes version 7 of the format; the first long is the length
717# of the header, which is at least 25 4-byte longs, and the one at offset 8
718# is a constant which is always either 1 or 2. Offset 12 is the pixmap depth,
719# which is a maximum of 32.
7200	belong	>100
721>8	belong	<3
722>>12	belong	<33
723>>>4	belong	7			XWD X Window Dump image data
724!:mime	image/x-xwindowdump
725>>>>100	string	>\0			\b, "%s"
726>>>>16	belong	x			\b, %dx
727>>>>20	belong	x			\b%dx
728>>>>12	belong	x			\b%d
729
730# PDS - Planetary Data System
731#   These files use Parameter Value Language in the header section.
732#   Unfortunately, there is no certain magic, but the following
733#   strings have been found to be most likely.
7340	string	NJPL1I00		PDS (JPL) image data
7352	string	NJPL1I			PDS (JPL) image data
7360	string	CCSD3ZF			PDS (CCSD) image data
7372	string	CCSD3Z			PDS (CCSD) image data
7380	string	PDS_			PDS image data
7390	string	LBLSIZE=		PDS (VICAR) image data
740
741# pM8x: ATARI STAD compressed bitmap format
742#
743# from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
744# p M 8 5/6 xx yy zz data...
745# Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
746# bytes either run horizontally (pM85) or vertically (pM86). yy is the
747# most frequent byte, xx and zz are runlength escape codes, where xx is
748# used for runs of yy.
749#
7500	string	pM85		Atari ST STAD bitmap image data (hor)
751>5	byte	0x00		(white background)
752>5	byte	0xFF		(black background)
7530	string	pM86		Atari ST STAD bitmap image data (vert)
754>5	byte	0x00		(white background)
755>5	byte	0xFF		(black background)
756
757# From: Alex Myczko <alex@aiei.ch>
758# http://www.atarimax.com/jindroush.atari.org/afmtatr.html
7590	leshort	0x0296		Atari ATR image
760
761# XXX:
762# This is bad magic 0x5249 == 'RI' conflicts with RIFF and other
763# magic.
764# SGI RICE image file <mpruett@sgi.com>
765#0	beshort	0x5249		RICE image
766#>2	beshort	x		v%d
767#>4	beshort	x		(%d x
768#>6	beshort	x		%d)
769#>8	beshort	0		8 bit
770#>8	beshort	1		10 bit
771#>8	beshort	2		12 bit
772#>8	beshort	3		13 bit
773#>10	beshort	0		4:2:2
774#>10	beshort	1		4:2:2:4
775#>10	beshort	2		4:4:4
776#>10	beshort	3		4:4:4:4
777#>12	beshort	1		RGB
778#>12	beshort	2		CCIR601
779#>12	beshort	3		RP175
780#>12	beshort	4		YUV
781
782# PCX image files
783# From: Dan Fandrich <dan@coneharvesters.com>
784# updated by Joerg Jenderek at Feb 2013 by http://de.wikipedia.org/wiki/PCX
785# http://web.archive.org/web/20100206055706/http://www.qzx.com/pc-gpe/pcx.txt
786# GRR: original test was still too general as it catches xbase examples T5.DBT,T6.DBT with 0xa000000
787# 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
7880	ubelong&0xffF8fe00	0x0a000000
789# for PCX bit depth > 0
790>3	ubyte		>0
791# test for valid versions
792>>1	ubyte		<6
793>>>1	ubyte		!1	PCX
794!:mime	image/x-pcx
795#!:mime	image/pcx
796>>>>1	ubyte		0	ver. 2.5 image data
797>>>>1	ubyte		2	ver. 2.8 image data, with palette
798>>>>1	ubyte		3	ver. 2.8 image data, without palette
799>>>>1	ubyte		4	for Windows image data
800>>>>1	ubyte		5	ver. 3.0 image data
801>>>>4	uleshort	x	bounding box [%d,
802>>>>6	uleshort	x	%d] -
803>>>>8	uleshort	x	[%d,
804>>>>10	uleshort	x	%d],
805>>>>65	ubyte		>1	%d planes each of
806>>>>3	ubyte		x	%d-bit
807>>>>68	byte		1	colour,
808>>>>68	byte		2	grayscale,
809# this should not happen
810>>>>68	default		x	image,
811>>>>12	leshort		>0	%d x
812>>>>>14	uleshort	x	%d dpi,
813>>>>2	byte		0	uncompressed
814>>>>2	byte		1	RLE compressed
815
816# Adobe Photoshop
817# From: Asbjoern Sloth Toennesen <asbjorn@lila.io>
8180	string		8BPS Adobe Photoshop Image
819!:mime	image/vnd.adobe.photoshop
820>4   beshort 2 (PSB)
821>18  belong  x \b, %d x
822>14  belong  x %d,
823>24  beshort 0 bitmap
824>24  beshort 1 grayscale
825>>12 beshort 2 with alpha
826>24  beshort 2 indexed
827>24  beshort 3 RGB
828>>12 beshort 4 \bA
829>24  beshort 4 CMYK
830>>12 beshort 5 \bA
831>24  beshort 7 multichannel
832>24  beshort 8 duotone
833>24  beshort 9 lab
834>12  beshort > 1
835>>12  beshort x \b, %dx
836>12  beshort 1 \b,
837>22  beshort x %d-bit channel
838>12  beshort > 1 \bs
839
840# XV thumbnail indicator (ThMO)
8410	string		P7\ 332		XV thumbnail image data
842
843# NITF is defined by United States MIL-STD-2500A
8440	string	NITF	National Imagery Transmission Format
845>25	string	>\0	dated %.14s
846
847# GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
848# Format variations from: Bernd Nuernberger <bernd.nuernberger@web.de>
849# Update: Joerg Jenderek
850# See http://fileformats.archiveteam.org/wiki/GEM_Raster
851# For variations, also see:
852#    http://www.seasip.info/Gem/ff_img.html (Ventura)
853#    http://www.atari-wiki.com/?title=IMG_file (XIMG, STTT)
854#    http://www.fileformat.info/format/gemraster/spec/index.htm (XIMG, STTT)
855#    http://sylvana.net/1stguide/1STGUIDE.ENG (TIMG)
8560       beshort     0x0001
857# header_size
858>2      beshort     0x0008
859>>0     use gem_info
860>2      beshort     0x0009
861>>0     use gem_info
862# no example for NOSIG
863>2      beshort     24
864>>0     use gem_info
865# no example for HYPERPAINT
866>2      beshort     25
867>>0     use gem_info
86816      string      XIMG\0
869>0      use gem_info
870# no example
87116      string      STTT\0\x10
872>0      use gem_info
873# no example or description
87416      string      TIMG\0
875>0      use gem_info
876
8770   name        gem_info
878# version is 2 for some XIMG and 1 for all others
879>0	beshort		<0x0003		GEM
880# http://www.snowstone.org.uk/riscos/mimeman/mimemap.txt
881!:mime	image/x-gem
882# header_size 24 25 27 59 779 words for colored bitmaps
883>>2	beshort		>9
884>>>16	string		STTT\0\x10	STTT
885>>>16	string		TIMG\0		TIMG
886# HYPERPAINT or NOSIG variant
887>>>16	string		\0\x80
888>>>>2	beshort		=24		NOSIG
889>>>>2	beshort		!24		HYPERPAINT
890# NOSIG or XIMG variant
891>>>16	default		x
892>>>>16	string		!XIMG\0		NOSIG
893>>16	string		=XIMG\0		XIMG Image data
894!:ext	img/ximg
895# to avoid Warning: Current entry does not yet have a description for adding a EXTENSION type
896>>16	string		!XIMG\0		Image data
897!:ext	img
898# header_size is 9 for Ventura files and 8 for other GEM Paint files
899>>2	beshort		9		(Ventura)
900#>>2	beshort		8		(Paint)
901>>12	beshort		x		%d x
902>>14	beshort		x		%d,
903# 1 4 8
904>>4	beshort		x		%d planes,
905# in tenths of a millimetre
906>>8	beshort		x		%d x
907>>10	beshort		x		%d pixelsize
908# pattern_size 1-8. 2 for GEM Paint
909>>6	beshort		!2		\b, pattern size %d
910
911# GEM Metafile (Wolfram Kleff)
9120	lelong		0x0018FFFF	GEM Metafile data
913>4	leshort		x		version %d
914
915#
916# SMJPEG. A custom Motion JPEG format used by Loki Entertainment
917# Software Torbjorn Andersson <d91tan@Update.UU.SE>.
918#
9190	string	\0\nSMJPEG	SMJPEG
920>8	belong	x		%d.x data
921# According to the specification you could find any number of _TXT
922# headers here, but I can't think of any way of handling that. None of
923# the SMJPEG files I tried it on used this feature. Even if such a
924# file is encountered the output should still be reasonable.
925>16	string	_SND		\b,
926>>24	beshort	>0		%d Hz
927>>26	byte	8		8-bit
928>>26	byte	16		16-bit
929>>28	string	NONE		uncompressed
930# >>28	string	APCM		ADPCM compressed
931>>27	byte	1		mono
932>>28	byte	2		stereo
933# Help! Isn't there any way to avoid writing this part twice?
934>>32	string	_VID		\b,
935# >>>48	string	JFIF		JPEG
936>>>40	belong	>0		%d frames
937>>>44	beshort	>0		(%d x
938>>>46	beshort	>0		%d)
939>16	string	_VID		\b,
940# >>32	string	JFIF		JPEG
941>>24	belong	>0		%d frames
942>>28	beshort	>0		(%d x
943>>30	beshort	>0		%d)
944
9450	string	Paint\ Shop\ Pro\ Image\ File	Paint Shop Pro Image File
946
947# "thumbnail file" (icon)
948# descended from "xv", but in use by other applications as well (Wolfram Kleff)
9490       string          P7\ 332         XV "thumbnail file" (icon) data
950
951# taken from fkiss: (<yav@mte.biglobe.ne.jp> ?)
9520       string          KiSS            KISS/GS
953>4      byte            16              color
954>>5     byte            x               %d bit
955>>8     leshort         x               %d colors
956>>10    leshort         x               %d groups
957>4      byte            32              cell
958>>5     byte            x               %d bit
959>>8     leshort         x               %d x
960>>10    leshort         x               %d
961>>12    leshort         x               +%d
962>>14    leshort         x               +%d
963
964# Webshots (www.webshots.com), by John Harrison
9650       string          C\253\221g\230\0\0\0 Webshots Desktop .wbz file
966
967# Hercules DASD image files
968# From Jan Jaeger <jj@septa.nl>
9690       string  CKD_P370        Hercules CKD DASD image file
970>8      long    x               \b, %d heads per cylinder
971>12     long    x               \b, track size %d bytes
972>16     byte    x               \b, device type 33%2.2X
973
9740       string  CKD_C370        Hercules compressed CKD DASD image file
975>8      long    x               \b, %d heads per cylinder
976>12     long    x               \b, track size %d bytes
977>16     byte    x               \b, device type 33%2.2X
978
9790       string  CKD_S370        Hercules CKD DASD shadow file
980>8      long    x               \b, %d heads per cylinder
981>12     long    x               \b, track size %d bytes
982>16     byte    x               \b, device type 33%2.2X
983
984# Squeak images and programs - etoffi@softhome.net
9850	string		\146\031\0\0	Squeak image data
9860	search/1	'From\040Squeak	Squeak program text
987
988# partimage: file(1) magic for PartImage files (experimental, incomplete)
989# Author: Hans-Joachim Baader <hjb@pro-linux.de>
9900		string	PaRtImAgE-VoLuMe	PartImage
991>0x0020		string	0.6.1		file version %s
992>>0x0060	lelong	>-1		volume %d
993#>>0x0064 8 byte identifier
994#>>0x007c reserved
995>>0x0200	string	>\0		type %s
996>>0x1400	string	>\0		device %s,
997>>0x1600	string	>\0		original filename %s,
998# Some fields omitted
999>>0x2744	lelong	0		not compressed
1000>>0x2744	lelong	1		gzip compressed
1001>>0x2744	lelong	2		bzip2 compressed
1002>>0x2744	lelong	>2		compressed with unknown algorithm
1003>0x0020		string	>0.6.1		file version %s
1004>0x0020		string	<0.6.1		file version %s
1005
1006# DCX is multi-page PCX, using a simple header of up to 1024
1007# offsets for the respective PCX components.
1008# From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
10090	lelong	987654321	DCX multi-page PCX image data
1010
1011# Simon Walton <simonw@matteworld.com>
1012# Kodak Cineon format for scanned negatives
1013# http://www.kodak.com/US/en/motion/support/dlad/
10140	lelong  0xd75f2a80	Cineon image data
1015>200	belong  >0		\b, %d x
1016>204	belong  >0		%d
1017
1018
1019# Bio-Rad .PIC is an image format used by microscope control systems
1020# and related image processing software used by biologists.
1021# From: Vebjorn Ljosa <vebjorn@ljosa.com>
1022# BOOL values are two-byte integers; use them to rule out false positives.
1023# http://web.archive.org/web/20050317223257/www.cs.ubc.ca/spider/ladic/text/biorad.txt
1024# Samples: http://www.loci.wisc.edu/software/sample-data
102514	leshort <2
1026>62	leshort <2
1027>>54	leshort 12345		Bio-Rad .PIC Image File
1028>>>0	leshort >0		%d x
1029>>>2	leshort >0		%d,
1030>>>4	leshort =1		1 image in file
1031>>>4	leshort >1		%d images in file
1032
1033# From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
1034# The description of *.mrw format can be found at
1035# http://www.dalibor.cz/minolta/raw_file_format.htm
10360	string	\000MRM			Minolta Dimage camera raw image data
1037
1038# Summary: DjVu image / document
1039# Extension: .djvu
1040# Reference: http://djvu.org/docs/DjVu3Spec.djvu
1041# Submitted by: Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
1042# Modified by (1): Abel Cheung <abelcheung@gmail.com>
10430	string	AT&TFORM
1044>12	string	DJVM		DjVu multiple page document
1045!:mime	image/vnd.djvu
1046>12	string	DJVU		DjVu image or single page document
1047!:mime	image/vnd.djvu
1048>12	string	DJVI		DjVu shared document
1049!:mime	image/vnd.djvu
1050>12	string	THUM		DjVu page thumbnails
1051!:mime	image/vnd.djvu
1052
1053# Originally by Marc Espie
1054# Modified by Robert Minsk <robertminsk at yahoo.com>
1055# http://www.openexr.com/openexrfilelayout.pdf
10560	lelong		20000630	OpenEXR image data,
1057!:mime image/x-exr
1058>4	lelong&0x000000ff x		version %d,
1059>4	lelong		^0x00000200	storage: scanline
1060>4	lelong		&0x00000200	storage: tiled
1061>8	search/0x1000	compression\0	\b, compression:
1062>>&16	byte		0		none
1063>>&16	byte		1		rle
1064>>&16	byte		2		zips
1065>>&16	byte		3		zip
1066>>&16	byte		4		piz
1067>>&16	byte		5		pxr24
1068>>&16	byte		6		b44
1069>>&16	byte		7		b44a
1070>>&16	byte		8		dwaa
1071>>&16	byte		9		dwab
1072>>&16	byte		>9		unknown
1073>8	 search/0x1000	dataWindow\0	\b, dataWindow:
1074>>&10	lelong		x		(%d
1075>>&14	lelong		x		%d)-
1076>>&18	lelong		x		\b(%d
1077>>&22	lelong		x		%d)
1078>8	search/0x1000	displayWindow\0	\b, displayWindow:
1079>>&10	lelong		x		(%d
1080>>&14	lelong		x		%d)-
1081>>&18	lelong		x		\b(%d
1082>>&22	lelong		x		%d)
1083>8	search/0x1000	lineOrder\0	 \b, lineOrder:
1084>>&14	byte		0		increasing y
1085>>&14	byte		1		decreasing y
1086>>&14	byte		2		random y
1087>>&14	byte		>2		unknown
1088
1089# SMPTE Digital Picture Exchange Format, SMPTE DPX
1090#
1091# ANSI/SMPTE 268M-1994, SMPTE Standard for File Format for Digital
1092# Moving-Picture Exchange (DPX), v1.0, 18 February 1994
1093# Robert Minsk <robertminsk at yahoo.com>
1094# Modified by Harry Mallon <hjmallon at gmail.com>
10950	string		SDPX	DPX image data, big-endian,
1096!:mime image/x-dpx
1097>0	use		dpx_info
10980	string		XPDS	DPX image data, little-endian,
1099!:mime image/x-dpx
1100>0	use		\^dpx_info
1101
11020	name		dpx_info
1103>768	beshort		<4
1104>>772	belong		x	%dx
1105>>776	belong		x	\b%d,
1106>768	beshort		>3
1107>>776	belong		x	%dx
1108>>772	belong		x	\b%d,
1109>768	beshort		0	left to right/top to bottom
1110>768	beshort		1	right to left/top to bottom
1111>768	beshort		2	left to right/bottom to top
1112>768	beshort		3	right to left/bottom to top
1113>768	beshort		4	top to bottom/left to right
1114>768	beshort		5	top to bottom/right to left
1115>768	beshort		6	bottom to top/left to right
1116>768	beshort		7	bottom to top/right to left
1117
1118# From: Tom Hilinski <tom.hilinski@comcast.net>
1119# http://www.unidata.ucar.edu/packages/netcdf/
11200	string	CDF\001			NetCDF Data Format data
1121
1122#-----------------------------------------------------------------------
1123# Hierarchical Data Format, used to facilitate scientific data exchange
1124# specifications at http://hdf.ncsa.uiuc.edu/
11250	belong	0x0e031301	Hierarchical Data Format (version 4) data
1126!:mime	application/x-hdf
11270	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) data
1128!:mime	application/x-hdf
1129512	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 512 bytes user block
1130!:mime	application/x-hdf
11311024	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 1k user block
1132!:mime	application/x-hdf
11332048	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 2k user block
1134!:mime	application/x-hdf
11354096	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 4k user block
1136!:mime	application/x-hdf
1137
1138
1139# From: Tobias Burnus <burnus@net-b.de>
1140# Xara (for a while: Corel Xara) is a graphic package, see
1141# http://www.xara.com/ for Windows and as GPL application for Linux
11420	string	XARA\243\243	Xara graphics file
1143
1144# http://www.cartesianinc.com/Tech/
11450	string	CPC\262		Cartesian Perceptual Compression image
1146!:mime	image/x-cpi
1147
1148# From Albert Cahalan <acahalan@gmail.com>
1149# puredigital used it for the CVS disposable camcorder
1150#8       lelong  4       ZBM bitmap image data
1151#>4      leshort x       %u x
1152#>6      leshort x       %u
1153
1154# From Albert Cahalan <acahalan@gmail.com>
1155# uncompressed 5:6:5 HighColor image for OLPC XO firmware icons
11560       string C565     OLPC firmware icon image data
1157>4      leshort x       %u x
1158>6      leshort x       %u
1159
1160# Applied Images - Image files from Cytovision
1161# Gustavo Junior Alves <gjalves@gjalves.com.br>
11620	string	\xce\xda\xde\xfa	Cytovision Metaphases file
11630	string	\xed\xad\xef\xac	Cytovision Karyotype file
11640	string	\x0b\x00\x03\x00	Cytovision FISH Probe file
11650	string	\xed\xfe\xda\xbe	Cytovision FLEX file
11660	string	\xed\xab\xed\xfe	Cytovision FLEX file
11670	string	\xad\xfd\xea\xad	Cytovision RATS file
1168
1169# Wavelet Scalar Quantization format used in gray-scale fingerprint images
1170# From Tano M Fotang <mfotang@quanteq.com>
11710	string	\xff\xa0\xff\xa8\x00	Wavelet Scalar Quantization image data
1172
1173# Type:		PCO B16 image files
1174# URL:		http://www.pco.de/fileadmin/user_upload/db/download/MA_CWDCOPIE_0412b.pdf
1175# From:		Florian Philipp <florian.philipp@binarywings.net>
1176# Extension:	.b16
1177# Description:	Pixel image format produced by PCO Camware, typically used
1178#		together with PCO cameras.
1179# Note:		Different versions exist for e.g. 8 bit and 16 bit images.
1180#		Documentation is incomplete.
11810	string/b	PCO-	PCO B16 image data
1182>12	lelong		x	\b, %dx
1183>16	lelong		x	\b%d
1184>20	lelong		0	\b, short header
1185>20	lelong		-1	\b, extended header
1186>>24	lelong		0	\b, grayscale
1187>>>36	lelong		0	linear LUT
1188>>>36	lelong		1	logarithmic LUT
1189>>>28	lelong		x	[%d
1190>>>32	lelong		x	\b,%d]
1191>>24	lelong		1	\b, color
1192>>>64	lelong		0	linear LUT
1193>>>64	lelong		1	logarithmic LUT
1194>>>40	lelong		x	r[%d
1195>>>44	lelong		x	\b,%d]
1196>>>48	lelong		x	g[%d
1197>>>52	lelong		x	\b,%d]
1198>>>56	lelong		x	b[%d
1199>>>60	lelong		x	\b,%d]
1200
1201# Polar Monitor Bitmap (.pmb) used as logo for Polar Electro watches
1202# From: Markus Heidelberg <markus.heidelberg at web.de>
12030	string/t	[BitmapInfo2]	Polar Monitor Bitmap text
1204!:mime	image/x-polar-monitor-bitmap
1205
1206# From: Rick Richardson <rickrich@gmail.com>
1207# updated by: Joerg Jenderek
1208# URL: http://techmods.net/nuvi/
12090	string	GARMIN\ BITMAP\ 01	Garmin Bitmap file
1210# extension is also used for
1211# Sony SRF raw image (image/x-sony-srf)
1212# SRF map
1213# Terragen Surface Map (http://www.planetside.co.uk/terragen)
1214# FileLocator Pro search criteria file (http://www.mythicsoft.com/filelocatorpro)
1215!:ext srf
1216#!:mime	image/x-garmin-srf
1217# version 1.00,2.00,2.10,2.40,2.50
1218>0x2f	string		>0		\b, version %4.4s
1219# width (2880,2881,3240)
1220>0x55	uleshort	>0		\b, %dx
1221# height (80,90)
1222>>0x53	uleshort	x		\b%d
1223
1224# Type:	Ulead Photo Explorer5 (.pe5)
1225# URL:	http://www.jisyo.com/cgibin/view.cgi?EXT=pe5 (Japanese)
1226# From:	Simon Horman <horms@debian.org>
12270	string	IIO2H			Ulead Photo Explorer5
1228
1229# Type:	X11 cursor
1230# URL:	http://webcvs.freedesktop.org/mime/shared-mime-info/freedesktop.org.xml.in?view=markup
1231# From:	Mathias Brodala <info@noctus.net>
12320	string	Xcur			X11 cursor
1233
1234# Type:	Olympus ORF raw images.
1235# URL:	http://libopenraw.freedesktop.org/wiki/Olympus_ORF
1236# From:	Adam Buchbinder <adam.buchbinder@gmail.com>
12370	string		MMOR		Olympus ORF raw image data, big-endian
1238!:mime	image/x-olympus-orf
12390	string		IIRO		Olympus ORF raw image data, little-endian
1240!:mime	image/x-olympus-orf
12410	string		IIRS		Olympus ORF raw image data, little-endian
1242!:mime	image/x-olympus-orf
1243
1244# Type: files used in modern AVCHD camcoders to store clip information
1245# Extension: .cpi
1246# From: Alexander Danilov <alexander.a.danilov@gmail.com>
12470	string	HDMV0100	AVCHD Clip Information
1248
1249# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1250# URL: http://local.wasp.uwa.edu.au/~pbourke/dataformats/pic/
1251# Radiance HDR; usually has .pic or .hdr extension.
12520	string	#?RADIANCE\n	Radiance HDR image data
1253#!mime	image/vnd.radiance
1254
1255# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1256# URL: http://www.mpi-inf.mpg.de/resources/pfstools/pfs_format_spec.pdf
1257# Used by the pfstools packages. The regex matches for the image size could
1258# probably use some work. The MIME type is made up; if there's one in
1259# actual common use, it should replace the one below.
12600	string	PFS1\x0a	PFS HDR image data
1261#!mime	image/x-pfs
1262>1	regex	[0-9]*\ 		\b, %s
1263>>1	regex	\ [0-9]{4}		\bx%s
1264
1265# Type: Foveon X3F
1266# URL:  http://www.photofo.com/downloads/x3f-raw-format.pdf
1267# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1268# Note that the MIME type isn't defined anywhere that I can find; if
1269# there's a canonical type for this format, it should replace this one.
12700	string	FOVb	Foveon X3F raw image data
1271!:mime	image/x-x3f
1272>6	leshort	x	\b, version %d.
1273>4	leshort	x	\b%d
1274>28	lelong	x	\b, %dx
1275>32	lelong	x	\b%d
1276
1277# Paint.NET file
1278# From Adam Buchbinder <adam.buchbinder@gmail.com>
12790	string	PDN3	Paint.NET image data
1280!:mime	image/x-paintnet
1281
1282# Not really an image.
1283# From: "Tano M. Fotang" <mfotang@quanteq.com>
12840	string	\x46\x4d\x52\x00	ISO/IEC 19794-2 Format Minutiae Record (FMR)
1285
1286# doc: http://www.shikino.co.jp/eng/products/images/FLOWER.jpg.zip
1287# example: http://www.shikino.co.jp/eng/products/images/FLOWER.wdp.zip
128890	bequad		0x574D50484F544F00	JPEG-XR Image
1289>98	byte&0x08	=0x08			\b, hard tiling
1290>99	byte&0x80	=0x80			\b, tiling present
1291>99	byte&0x40	=0x40			\b, codestream present
1292>99	byte&0x38	x			\b, spatial xform=
1293>99	byte&0x38	0x00			\bTL
1294>99	byte&0x38	0x08			\bBL
1295>99	byte&0x38	0x10			\bTR
1296>99	byte&0x38	0x18			\bBR
1297>99	byte&0x38	0x20			\bBT
1298>99	byte&0x38	0x28			\bRB
1299>99	byte&0x38	0x30			\bLT
1300>99	byte&0x38	0x38			\bLB
1301>100	byte&0x80	=0x80			\b, short header
1302>>102	beshort+1	x			\b, %d
1303>>104	beshort+1	x			\bx%d
1304>100	byte&0x80	=0x00			\b, long header
1305>>102	belong+1	x			\b, %x
1306>>106	belong+1	x			\bx%x
1307>101	beshort&0xf	x			\b, bitdepth=
1308>>101	beshort&0xf	0x0			\b1-WHITE=1
1309>>101	beshort&0xf	0x1			\b8
1310>>101	beshort&0xf	0x2			\b16
1311>>101	beshort&0xf	0x3			\b16-SIGNED
1312>>101	beshort&0xf	0x4			\b16-FLOAT
1313>>101	beshort&0xf	0x5			\b(reserved 5)
1314>>101	beshort&0xf	0x6			\b32-SIGNED
1315>>101	beshort&0xf	0x7			\b32-FLOAT
1316>>101	beshort&0xf	0x8			\b5
1317>>101	beshort&0xf	0x9			\b10
1318>>101	beshort&0xf	0xa			\b5-6-5
1319>>101	beshort&0xf	0xb			\b(reserved %d)
1320>>101	beshort&0xf	0xc			\b(reserved %d)
1321>>101	beshort&0xf	0xd			\b(reserved %d)
1322>>101	beshort&0xf	0xe			\b(reserved %d)
1323>>101	beshort&0xf	0xf			\b1-BLACK=1
1324>101	beshort&0xf0	x			\b, colorfmt=
1325>>101	beshort&0xf0	0x00			\bYONLY
1326>>101	beshort&0xf0	0x10			\bYUV240
1327>>101	beshort&0xf0	0x20			\bYWV422
1328>>101	beshort&0xf0	0x30			\bYWV444
1329>>101	beshort&0xf0	0x40			\bCMYK
1330>>101	beshort&0xf0	0x50			\bCMYKDIRECT
1331>>101	beshort&0xf0	0x60			\bNCOMPONENT
1332>>101	beshort&0xf0	0x70			\bRGB
1333>>101	beshort&0xf0	0x80			\bRGBE
1334>>101	beshort&0xf0	>0x80			\b(reserved 0x%x)
1335
1336# From: Johan van der Knijff <johan.vanderknijff@kb.nl>
1337#
1338# BPG (Better Portable Graphics) format
1339# http://bellard.org/bpg/
1340# http://fileformats.archiveteam.org/wiki/BPG
1341#
13420	string	\x42\x50\x47\xFB	BPG (Better Portable Graphics)
1343!:mime  image/bpg
1344
1345# From: Joerg Jenderek
1346# URL: https://en.wikipedia.org/wiki/Apple_Icon_Image_format
13470	string		icns		Mac OS X icon
1348!:mime	image/x-icns
1349!:apple	????icns
1350!:ext icns
1351>4	ubelong		>0
1352# file size
1353>>4	ubelong		x		\b, %d bytes
1354# icon type
1355>>8	string		x		\b, "%4.4s" type
1356
1357# TIM images
13580		lelong		0x00000010	TIM image,
1359>4		lelong  	0x8		4-Bit,
1360>4		lelong  	0x9		8-Bit,
1361>4		lelong  	0x2		15-Bit,
1362>4		lelong  	0x3		24-Bit,
1363>4		lelong 		&8
1364>>(8.l+12)	leshort		x		Pixel at (%d,
1365>>(8.l+14)	leshort		x		\b%d)
1366>>(8.l+16)	leshort		x		Size=%dx
1367>>(8.l+18)	leshort		x		\b%d,
1368>>4		lelong 		0x8		16 CLUT Entries at
1369>>4		lelong 		0x9		256 CLUT Entries at
1370>>12		leshort		x		(%d,
1371>>14		leshort		x		\b%d)
1372>4		lelong		^8
1373>>12		leshort		x		Pixel at (%d,
1374>>14		leshort		x		\b%d)
1375>>16		leshort		x		Size=%dx
1376>>18		leshort		x		\b%d
1377
1378# MDEC streams
13790		lelong		0x80010160	MDEC video stream,
1380>16		leshort		x		%dx
1381>18		leshort		x		\b%d
1382#>8		lelong		x		%d frames
1383#>4		leshort		x		secCount=%d;
1384#>6		leshort		x		nSectors=%d;
1385#>12		lelong		x		frameSize=%d;
1386
1387# BS encoded bitstreams
13882		leshort		0x3800		BS image,
1389>6		leshort		x		Version %d,
1390>4		leshort		x		Quantization %d,
1391>0		leshort		x		(Decompresses to %d words)
1392
1393# Type: farbfeld image.
1394# Url: http://tools.suckless.org/farbfeld/
1395# From: Ian D. Scott <ian@iandouglasscott.com>
1396#
13970		string		farbfeld	farbfeld image data,
1398>8		ubelong		x		%dx
1399>12		ubelong		x		\b%d
1400
1401# Type: Microsoft DirectDraw Surface (common data)
1402# URL:	http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
1403# From: Morten Hustveit <morten@debian.org>
1404# Updated by: David Korth <gerbilsoft@gerbilsoft.com>
14050	name	ms-directdraw-surface
1406>0x10	ulelong	x			%u x
1407>0x0C	ulelong	x			%u
1408# Color depth.
1409>0x58	ulelong	>0			\b, %u-bit color
1410# Determine the pixel format.
1411>0x50	ulelong&0x4	4
1412# FIXME: Handle DX10 and XBOX formats.
1413>>0x54	string	x			\b, compressed using %.4s
1414>0x50	ulelong&0x2	0x2		\b, alpha only
1415>0x50	ulelong&0x200	0x200		\b, YUV
1416>0x50	ulelong&0x20000	0x20000		\b, luminance
1417# RGB pixel format
1418>0x50	ulelong&0x40	0x40
1419
1420# Determine the RGB format using the color masks.
1421# ulequad order: 0xGGGGGGGGRRRRRRRR, 0xAAAAAAAABBBBBBBB
1422
1423>>0x58		ulelong	16
1424
1425# NOTE: 15-bit color formats usually have 16-bit listed as the color depth.
1426>>>0x5C		ulequad	0x000003E000007C00
1427>>>>0x64	ulequad 0x000000000000001F	\b, RGB555
1428>>>0x5C		ulequad	0x000003E000001F00
1429>>>>0x64	ulequad 0x000000000000007C	\b, BGR555
1430
1431>>>0x5C		ulequad	0x000007E00000F800
1432>>>>0x64	ulequad 0x000000000000001F	\b, RGB565
1433>>>0x5C		ulequad	0x000007E000001F00
1434>>>>0x64	ulequad 0x00000000000000F8	\b, BGR565
1435
1436>>>0x5C		ulequad	0x000000F000000F00
1437>>>>0x64	ulequad 0x0000F0000000000F	\b, ARGB4444
1438>>>0x5C		ulequad	0x000000F00000000F
1439>>>>0x64	ulequad 0x0000F00000000F00	\b, ABGR4444
1440
1441>>>0x5C		ulequad	0x00000F000000F000
1442>>>>0x64	ulequad 0x0000000F000000F0	\b, RGBA4444
1443>>>0x5C		ulequad	0x00000F00000000F0
1444>>>>0x64	ulequad 0x0000000F0000F000	\b, BGRA4444
1445
1446>>>0x5C		ulequad	0x000000F000000F00
1447>>>>0x64	ulequad 0x000000000000000F	\b, xRGB4444
1448>>>0x5C		ulequad	0x000000F00000000F
1449>>>>0x64	ulequad 0x0000000000000F00	\b, xBGR4444
1450
1451>>>0x5C		ulequad	0x00000F000000F000
1452>>>>0x64	ulequad 0x00000000000000F0	\b, RGBx4444
1453>>>0x5C		ulequad	0x00000F00000000F0
1454>>>>0x64	ulequad 0x000000000000F000	\b, BGRx4444
1455
1456>>>0x5C		ulequad	0x000003E000007C00
1457>>>>0x64	ulequad 0x000080000000001F	\b, ARGB1555
1458>>>0x5C		ulequad	0x000003E000001F00
1459>>>>0x64	ulequad 0x000080000000007C	\b, ABGR1555
1460>>>0x5C		ulequad	0x000007C00000F800
1461>>>>0x64	ulequad 0x000000010000003E	\b, RGBA5551
1462>>>0x5C		ulequad	0x000007C00000003E
1463>>>>0x64	ulequad 0x000000010000F800	\b, BGRA5551
1464
1465>>88		ulelong 24
1466>>>0x5C		ulequad	0x0000FF0000FF0000
1467>>>>0x64	ulequad 0x00000000000000FF	\b, RGB888
1468>>>0x5C		ulequad	0x0000FF00000000FF
1469>>>>0x64	ulequad 0x0000000000FF0000	\b, BGR888
1470
1471>>88		ulelong 32
1472>>>0x5C		ulequad	0x0000FF0000FF0000
1473>>>>0x64	ulequad 0xFF000000000000FF	\b, ARGB8888
1474>>>0x5C		ulequad	0x0000FF00000000FF
1475>>>>0x64	ulequad 0xFF00000000FF0000	\b, ABGR8888
1476
1477>>>0x5C		ulequad	0x00FF0000FF000000
1478>>>>0x64	ulequad 0x000000FF0000FF00	\b, RGBA8888
1479>>>0x5C		ulequad	0x00FF00000000FF00
1480>>>>0x64	ulequad 0x000000FFFF000000	\b, BGBA8888
1481
1482>>>0x5C		ulequad	0x0000FF0000FF0000
1483>>>>0x64	ulequad 0x00000000000000FF	\b, xRGB8888
1484>>>0x5C		ulequad	0x0000FF00000000FF
1485>>>>0x64	ulequad 0x0000000000FF0000	\b, xBGR8888
1486
1487>>>0x5C		ulequad	0x00FF0000FF000000
1488>>>>0x64	ulequad 0x000000000000FF00	\b, RGBx8888
1489>>>0x5C		ulequad	0x00FF00000000FF00
1490>>>>0x64	ulequad 0x00000000FF000000	\b, BGBx8888
1491
1492# Less common 32-bit color formats.
1493>>>0x5C		ulequad	0xFFFF00000000FFFF
1494>>>>0x64	ulequad 0x0000000000000000	\b, G16R16
1495>>>0x5C		ulequad	0x0000FFFFFFFF0000
1496>>>>0x64	ulequad 0x0000000000000000	\b, R16G16
1497
1498>>>0x5C		ulequad	0x000FFC003FF00000
1499>>>>0x64	ulequad 0xC0000000000003FF	\b, A2R10G10B10
1500>>>0x5C		ulequad	0x000FFC00000003FF
1501>>>>0x64	ulequad 0xC00000003FF00000	\b, A2B10G10R10
1502
1503# Type: Microsoft DirectDraw Surface
1504# URL:	http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
1505# From: Morten Hustveit <morten@debian.org>
1506# Updated by: David Korth <gerbilsoft@gerbilsoft.com>
15070	string/b	DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS):
1508>0	use	ms-directdraw-surface
1509
1510# Type: Sega PVR image.
1511# From: David Korth <gerbilsoft@gerbilsoft.com>
1512# References:
1513# - http://fabiensanglard.net/Mykaruga/tools/segaPVRFormat.txt
1514# - https://github.com/yazgoo/pvrx2png
1515# - https://github.com/nickworonekin/puyotools
1516
1517# Sega PVR header.
15180	name	sega-pvr-image-header
1519>0x0C	leshort	x	%u x
1520>0x0E	leshort	x	%u
1521# Image format.
1522>0x08	byte	0	\b, ARGB1555
1523>0x08	byte	1	\b, RGB565
1524>0x08	byte	2	\b, ARGB4444
1525>0x08	byte	3	\b, YUV442
1526>0x08	byte	4	\b, Bump
1527>0x08	byte	5	\b, 4bpp
1528>0x08	byte	6	\b, 8bpp
1529# Image data type.
1530>0x09	byte	0x01	\b, square twiddled
1531>0x09	byte	0x02	\b, square twiddled & mipmap
1532>0x09	byte	0x03	\b, VQ
1533>0x09	byte	0x04	\b, VQ & mipmap
1534>0x09	byte	0x05	\b, 8-bit CLUT twiddled
1535>0x09	byte	0x06	\b, 4-bit CLUT twiddled
1536>0x09	byte	0x07	\b, 8-bit direct twiddled
1537>0x09	byte	0x08	\b, 4-bit direct twiddled
1538>0x09	byte	0x09	\b, rectangle
1539>0x09	byte	0x0B	\b, rectangular stride
1540>0x09	byte	0x0D	\b, rectangular twiddled
1541>0x09	byte	0x10	\b, small VQ
1542>0x09	byte	0x11	\b, small VQ & mipmap
1543>0x09	byte	0x12	\b, square twiddled & mipmap
1544
1545# Sega PVR image.
15460	string	PVRT
1547>0x10	string	DDS\040\174\000\000\000 Sega PVR (Xbox) image:
1548>>0x20	use	ms-directdraw-surface
1549>0x10	belong	!0x44445320		Sega PVR image:
1550>>0	use	sega-pvr-image-header
1551
1552# Sega PVR image with GBIX.
15530	string	GBIX
1554>0x10	string	PVRT
1555>>0x10	string	DDS\040\174\000\000\000 Sega PVR (Xbox) image:
1556>>0x20	use	ms-directdraw-surface
1557>>0x10	belong	!0x44445320		Sega PVR image:
1558>>>0x10	use	sega-pvr-image-header
1559>>0x08	lelong	x	\b, global index = %u
1560
1561# Sega GVR header.
15620	name	sega-gvr-image-header
1563>0x0C	beshort	x	%u x
1564>0x0E	beshort	x	%u
1565# Image data format.
1566>0x0B	byte	0	\b, I4
1567>0x0B	byte	1	\b, I8
1568>0x0B	byte	2	\b, IA4
1569>0x0B	byte	3	\b, IA8
1570>0x0B	byte	4	\b, RGB565
1571>0x0B	byte	5	\b, RGB5A3
1572>0x0B	byte	6	\b, ARGB8888
1573>0x0B	byte	8	\b, CI4
1574>0x0B	byte	9	\b, CI8
1575>0x0B	byte	14	\b, DXT1
1576
1577# Sega GVR image.
15780	string	GVRT	Sega GVR image:
1579>0x10	use	sega-gvr-image-header
1580
1581# Sega GVR image with GBIX.
15820	string	GBIX
1583>0x10	string	GVRT	Sega GVR image:
1584>>0x10	use	sega-gvr-image-header
1585>>0x08	belong	x	\b, global index = %u
1586
1587# Sega GVR image with GCIX. (Wii)
15880	string	GCIX
1589>0x10	string	GVRT	Sega GVR image:
1590>>0x10	use	sega-gvr-image-header
1591>>0x08	belong	x	\b, global index = %u
1592
1593# Light Field Picture
1594# Documentation: http://optics.miloush.net/lytro/TheFileFormat.aspx
1595# Typical file extensions: .lfp .lfr .lfx
1596
15970	belong	0x894C4650
1598>4	belong	0x0D0A1A0A
1599>12	belong	0x00000000	Lytro Light Field Picture
1600>8	belong	x		\b, version %d
1601
1602# Type: Vision Research Phantom CINE Format
1603# URL: https://www.phantomhighspeed.com/
1604# URL2: http://phantomhighspeed.force.com/vriknowledge/servlet/fileField?id=0BEU0000000Cfyk
1605# From: Harry Mallon <hjmallon at gmail.com>
1606#
1607# This has a short "CI" code but the 44 is the size of the struct which is
1608# stable
16090	string	CI
1610>2	leshort 44		Vision Research CINE Video,
1611>>4	leshort	0		Grayscale,
1612>>4	leshort 1		JPEG Compressed,
1613>>4	leshort 2		RAW,
1614>>6	leshort x		version %d,
1615>>20	lelong	x		%d frames,
1616>>48	lelong	x		%dx
1617>>52	lelong	x		\b%d
1618
1619# Type: ARRI Raw Image
1620# Info: SMPTE RDD30:2014
1621# From: Harry Mallon <hjmallon at gmail.com>
16220	string ARRI		ARRI ARI image data,
1623>4	lelong 0x78563412	little-endian,
1624>4 	lelong 0x12345678	big-endian,
1625>12	lelong x		version %d,
1626>20	lelong x 		%dx
1627>24	lelong x		\b%d
1628
1629# Type: Khronos KTX texture.
1630# From: David Korth <gerbilsoft@gerbilsoft.com>
1631# References:
1632# - https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
1633
1634# glEnum decoding.
1635# NOTE: Only the most common formats are listed here.
16360	name	khronos-ktx-glEnum
1637>0	lelong	0x1907	\b, RGB
1638>0	lelong	0x1908	\b, RGBA
1639>0	lelong	0x1909	\b, LUMINANCE
1640>0	lelong	0x190A	\b, LUMINANCE_ALPHA
1641>0	lelong	0x80E1	\b, BGR
1642>0	lelong	0x80E2	\b, BGRA
1643>0	lelong	0x83A0	\b, RGB_S3TC
1644>0	lelong	0x83A1	\b, RGB4_S3TC
1645>0	lelong	0x83A2	\b, RGBA_S3TC
1646>0	lelong	0x83A3	\b, RGBA4_S3TC
1647>0	lelong	0x83A4	\b, RGBA_DXT5_S3TC
1648>0	lelong	0x83A5	\b, RGBA4_DXT5_S3TC
1649>0	lelong	0x8D64	\b, ETC1_RGB8_OES
1650>0	lelong	0x9270	\b, COMPRESSED_R11_EAC
1651>0	lelong	0x9271	\b, COMPRESSED_SIGNED_R11_EAC
1652>0	lelong	0x9272	\b, COMPRESSED_RG11_EAC
1653>0	lelong	0x9273	\b, COMPRESSED_SIGNED_RG11_EAC
1654>0	lelong	0x9274	\b, COMPRESSED_RGB8_ETC2
1655>0	lelong	0x9275	\b, COMPRESSED_SRGB8_ETC2
1656>0	lelong	0x9276	\b, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
1657>0	lelong	0x9277	\b, COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
1658>0	lelong	0x9278	\b, COMPRESSED_RGBA2_ETC2_EAC
1659>0	lelong	0x9279	\b, COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
1660>0	lelong	0x93B0	\b, COMPRESSED_RGBA_ASTC_4x4_KHR
1661>0	lelong	0x93B1	\b, COMPRESSED_RGBA_ASTC_5x4_KHR
1662>0	lelong	0x93B2	\b, COMPRESSED_RGBA_ASTC_5x5_KHR
1663>0	lelong	0x93B3	\b, COMPRESSED_RGBA_ASTC_6x5_KHR
1664>0	lelong	0x93B4	\b, COMPRESSED_RGBA_ASTC_6x6_KHR
1665>0	lelong	0x93B5	\b, COMPRESSED_RGBA_ASTC_8x5_KHR
1666>0	lelong	0x93B6	\b, COMPRESSED_RGBA_ASTC_8x6_KHR
1667>0	lelong	0x93B7	\b, COMPRESSED_RGBA_ASTC_8x8_KHR
1668>0	lelong	0x93B8	\b, COMPRESSED_RGBA_ASTC_10x5_KHR
1669>0	lelong	0x93B9	\b, COMPRESSED_RGBA_ASTC_10x6_KHR
1670>0	lelong	0x93BA	\b, COMPRESSED_RGBA_ASTC_10x8_KHR
1671>0	lelong	0x93BB	\b, COMPRESSED_RGBA_ASTC_10x10_KHR
1672>0	lelong	0x93BC	\b, COMPRESSED_RGBA_ASTC_12x10_KHR
1673>0	lelong	0x93BD	\b, COMPRESSED_RGBA_ASTC_12x12_KHR
1674>0	lelong	0x93D0	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
1675>0	lelong	0x93D1	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
1676>0	lelong	0x93D2	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
1677>0	lelong	0x93D3	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
1678>0	lelong	0x93D4	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
1679>0	lelong	0x93D5	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
1680>0	lelong	0x93D6	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
1681>0	lelong	0x93D7	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
1682>0	lelong	0x93D8	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
1683>0	lelong	0x93D9	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
1684>0	lelong	0x93DA	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
1685>0	lelong	0x93DB	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
1686>0	lelong	0x93DC	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
1687>0	lelong	0x93DD	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
1688
1689# Endian-specific KTX header.
1690# TODO: glType (all textures I've seen so far are GL_UNSIGNED_BYTE)
16910	name	khronos-ktx-endian-header
1692>20	lelong	x	\b, %u
1693>24	lelong	>1	x %u
1694>28	lelong	>1	x %u
1695>8	lelong	>0
1696>>8	use	khronos-ktx-glEnum
1697>8	lelong	0
1698>>12	use	khronos-ktx-glEnum
1699
1700# Main KTX header.
1701# Determine endianness, then check the rest of the header.
17020	string	\xABKTX\ 11\xBB\r\n\x1A\n	Khronos KTX texture
1703>12	lelong	0x04030201			(little-endian)
1704>>16	use	khronos-ktx-endian-header
1705>12	belong	0x04030201			(big-endian)
1706>>16	use	^khronos-ktx-endian-header
1707
1708# Type: Valve VTF texture.
1709# From: David Korth <gerbilsoft@gerbilsoft.com>
1710# References:
1711# - https://developer.valvesoftware.com/wiki/Valve_Texture_Format
1712
1713# VTF image formats.
17140	name	vtf-image-format
1715>0	lelong	0	RGBA8888
1716>0	lelong	1	ABGR8888
1717>0	lelong	2	RGB888
1718>0	lelong	3	BGR888
1719>0	lelong	4	RGB565
1720>0	lelong	5	I8
1721>0	lelong	6	IA88
1722>0	lelong	7	P8
1723>0	lelong	8	A8
1724>0	lelong	9	RGB888 (bluescreen)
1725>0	lelong	10	BGR888 (bluescreen)
1726>0	lelong	11	ARGB8888
1727>0	lelong	12	BGRA8888
1728>0	lelong	13	DXT1
1729>0	lelong	14	DXT3
1730>0	lelong	15	DXT5
1731>0	lelong	16	BGRx8888
1732>0	lelong	17	BGR565
1733>0	lelong	18	BGRx5551
1734>0	lelong	19	BGRA4444
1735>0	lelong	20	DXT1+A1
1736>0	lelong	21	BGRA5551
1737>0	lelong	22	UV88
1738>0	lelong	23	UVWQ8888
1739>0	lelong	24	RGBA16161616F
1740>0	lelong	25	RGBA16161616
1741>0	lelong	26	UVLX8888
1742
1743# Main VTF header.
17440	string	VTF\0				Valve Texture Format
1745>4	lelong	x				v%u
1746>8	lelong	x				\b.%u
1747>0x10	leshort	x				\b, %u
1748>0x12	leshort	>1				x %u
1749>4	lequad	0x0000000700000002
1750>>0x3F	leshort	>1				x %u
1751>0x18	leshort	>1				\b, %u frames
1752>0x38	byte	x				\b, mipmaps: %u
1753>0x34	lelong	>-1				\b,
1754>>0x34	use	vtf-image-format
1755
1756# Type: Valve VTF3 (PS3) texture.
1757# From: David Korth <gerbilsoft@gerbilsoft.com>
17580	string		VTF3	Valve Texture Format (PS3)
1759>0x14	beshort		x	\b, %u
1760>0x16	beshort		x	\b x %u
1761>0x10	belong&0x2000	0	\b, DXT1
1762>0x10	belong&0x2000	0x2000	\b, DXT5
1763
1764# Type: ASTC texture.
1765# From: David Korth <gerbilsoft@gerbilsoft.com>
1766# References:
1767# - https://stackoverflow.com/questions/22600678/determine-internal-format-of-given-astc-compressed-image-through-its-header
1768# - https://stackoverflow.com/a/22682244
17690	lelong	0x5ca1ab13			ASTC
1770>4	byte	x				%u
1771>5	byte	x				\bx%u
1772>6	byte	>1				\bx%u
1773# X, Y, and Z dimensions are stored as 24-bit LE.
1774# Pretend it's 32-bit and mask off the high byte.
1775>7	lelong&0x00FFFFFF	x		texture, %u
1776>10	lelong&0x00FFFFFF	x		x %u
1777>13	lelong&0x00FFFFFF	>1		x %u
1778
1779# Zebra Metafile graphic
1780# http://www.fileformat.info/format/zbr/egff.htm
17810	beshort	0x9a02	Zebra Metafile graphic
1782>2	leshort 1	(version 1.x)
1783>2	leshort	2	(version 1.1x or 1.2x)
1784>2	leshort	3	(version 1.49)
1785>2	leshort	4	(version 1.50)
1786>4	string	x	(comment = %s)
1787
1788# Microsoft Paint graphic
1789# http://www.fileformat.info/format/mspaint/egff.htm
17900	string	DanM 	icrosoft Paint image data (version 1.x)
1791>4	leshort	x	(%d
1792>>6	leshort	x	x %d)
17930	string	LinS 	Microsoft Paint image data (version 2.0)
1794>4	leshort	x	(%d
1795>>6	leshort	x	x %d)
1796