1 /* -*- C++ -*-
2  * File: libraw_const.h
3  * Copyright 2008-2020 LibRaw LLC (info@libraw.org)
4  * Created: Sat Mar  8 , 2008
5  * LibRaw error codes
6 LibRaw is free software; you can redistribute it and/or modify
7 it under the terms of the one of two licenses as you choose:
8 
9 1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
10    (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
11 
12 2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
13    (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
14 
15  */
16 
17 #ifndef _LIBRAW_ERRORS_H
18 #define _LIBRAW_ERRORS_H
19 
20 #define LIBRAW_DEFAULT_ADJUST_MAXIMUM_THRESHOLD 0.75
21 #define LIBRAW_DEFAULT_AUTO_BRIGHTNESS_THRESHOLD 0.01
22 /* limit allocation size, default is 2Gb */
23 #ifndef LIBRAW_MAX_ALLOC_MB_DEFAULT
24 #define LIBRAW_MAX_ALLOC_MB_DEFAULT 2048L
25 #endif
26 
27 /* limit thumbnail size, default is 512Mb*/
28 #ifndef LIBRAW_MAX_THUMBNAIL_MB
29 #define LIBRAW_MAX_THUMBNAIL_MB 512L
30 #endif
31 
32 /* Check if enough file space exists before tag read */
33 #ifndef LIBRAW_NO_IOSPACE_CHECK
34 #define LIBRAW_IOSPACE_CHECK
35 #endif
36 #ifndef LIBRAW_NO_CR3_MEMPOOL
37 #define LIBRAW_CR3_MEMPOOL
38 #endif
39 
40 
41 /* LibRaw uses own memory pool management, with LIBRAW_MSIZE (512)
42 entries. It is enough for parsing/decoding non-damaged files, but
43 may overflow on specially crafted files (eg. with many string values
44 like XMP blocks.
45 LIBRAW_MEMPOOL_CHECK define will result in error on pool overflow */
46 #ifndef LIBRAW_NO_MEMPOOL_CHECK
47 #define LIBRAW_MEMPOOL_CHECK
48 #endif
49 
50 #define LIBRAW_MAX_METADATA_BLOCKS 1024
51 #define LIBRAW_CBLACK_SIZE 4104
52 #define LIBRAW_IFD_MAXCOUNT 10
53 #define LIBRAW_CRXTRACKS_MAXCOUNT 16
54 
55 #define LIBRAW_AHD_TILE 512
56 
57 enum LibRaw_open_flags
58 {
59 	LIBRAW_OPEN_BIGFILE=1,
60 	LIBRAW_OPEN_FILE= 1<<1
61 };
62 
63 enum LibRaw_openbayer_patterns
64 {
65   LIBRAW_OPENBAYER_RGGB = 0x94,
66   LIBRAW_OPENBAYER_BGGR = 0x16,
67   LIBRAW_OPENBAYER_GRBG = 0x61,
68   LIBRAW_OPENBAYER_GBRG = 0x49
69 };
70 
71 enum LibRaw_dngfields_marks
72 {
73   LIBRAW_DNGFM_FORWARDMATRIX = 1,
74   LIBRAW_DNGFM_ILLUMINANT = 1 << 1,
75   LIBRAW_DNGFM_COLORMATRIX = 1 << 2,
76   LIBRAW_DNGFM_CALIBRATION = 1 << 3,
77   LIBRAW_DNGFM_ANALOGBALANCE = 1 << 4,
78   LIBRAW_DNGFM_BLACK = 1 << 5,
79   LIBRAW_DNGFM_WHITE = 1 << 6,
80   LIBRAW_DNGFM_OPCODE2 = 1 << 7,
81   LIBRAW_DNGFM_LINTABLE = 1 << 8,
82   LIBRAW_DNGFM_CROPORIGIN = 1 << 9,
83   LIBRAW_DNGFM_CROPSIZE = 1 << 10,
84   LIBRAW_DNGFM_PREVIEWCS = 1 << 11,
85   LIBRAW_DNGFM_ASSHOTNEUTRAL = 1 << 12,
86   LIBRAW_DNGFM_BASELINEEXPOSURE = 1 << 13,
87   LIBRAW_DNGFM_LINEARRESPONSELIMIT = 1 << 14
88 };
89 
90 enum LibRaw_As_Shot_WB_Applied_codes
91 {
92   LIBRAW_ASWB_APPLIED = 1,
93   LIBRAW_ASWB_CANON = 2,
94   LIBRAW_ASWB_NIKON = 4,
95   LIBRAW_ASWB_NIKON_SRAW = 8,
96   LIBRAW_ASWB_PENTAX = 16
97 };
98 
99 #define tagtypeIs(typex) (type == typex)
100 enum LibRaw_ExifTagTypes {
101   LIBRAW_EXIFTAG_TYPE_UNKNOWN   =  0,
102   LIBRAW_EXIFTAG_TYPE_BYTE      =  1,
103   LIBRAW_EXIFTAG_TYPE_ASCII     =  2,
104   LIBRAW_EXIFTAG_TYPE_SHORT     =  3,
105   LIBRAW_EXIFTAG_TYPE_LONG      =  4,
106   LIBRAW_EXIFTAG_TYPE_RATIONAL  =  5,
107   LIBRAW_EXIFTAG_TYPE_SBYTE     =  6,
108   LIBRAW_EXIFTAG_TYPE_UNDEFINED =  7,
109   LIBRAW_EXIFTAG_TYPE_SSHORT    =  8,
110   LIBRAW_EXIFTAG_TYPE_SLONG     =  9,
111   LIBRAW_EXIFTAG_TYPE_SRATIONAL = 10,
112   LIBRAW_EXIFTAG_TYPE_FLOAT     = 11,
113   LIBRAW_EXIFTAG_TYPE_DOUBLE    = 12,
114   LIBRAW_EXIFTAG_TYPE_IFD       = 13,
115   LIBRAW_EXIFTAG_TYPE_UNICODE   = 14,
116   LIBRAW_EXIFTAG_TYPE_COMPLEX   = 15,
117   LIBRAW_EXIFTAG_TYPE_LONG8     = 16,
118   LIBRAW_EXIFTAG_TYPE_SLONG8    = 17,
119   LIBRAW_EXIFTAG_TYPE_IFD8      = 18
120 };
121 
122 #define LIBRAW_EXIFTOOLTAGTYPE_int8u       LIBRAW_EXIFTAG_TYPE_BYTE
123 #define LIBRAW_EXIFTOOLTAGTYPE_string      LIBRAW_EXIFTAG_TYPE_ASCII
124 #define LIBRAW_EXIFTOOLTAGTYPE_int16u      LIBRAW_EXIFTAG_TYPE_SHORT
125 #define LIBRAW_EXIFTOOLTAGTYPE_int32u      LIBRAW_EXIFTAG_TYPE_LONG
126 #define LIBRAW_EXIFTOOLTAGTYPE_rational64u LIBRAW_EXIFTAG_TYPE_RATIONAL
127 #define LIBRAW_EXIFTOOLTAGTYPE_int8s       LIBRAW_EXIFTAG_TYPE_SBYTE
128 #define LIBRAW_EXIFTOOLTAGTYPE_undef       LIBRAW_EXIFTAG_TYPE_UNDEFINED
129 #define LIBRAW_EXIFTOOLTAGTYPE_binary      LIBRAW_EXIFTAG_TYPE_UNDEFINED
130 #define LIBRAW_EXIFTOOLTAGTYPE_int16s      LIBRAW_EXIFTAG_TYPE_SSHORT
131 #define LIBRAW_EXIFTOOLTAGTYPE_int32s      LIBRAW_EXIFTAG_TYPE_SLONG
132 #define LIBRAW_EXIFTOOLTAGTYPE_rational64s LIBRAW_EXIFTAG_TYPE_SRATIONAL
133 #define LIBRAW_EXIFTOOLTAGTYPE_float       LIBRAW_EXIFTAG_TYPE_FLOAT
134 #define LIBRAW_EXIFTOOLTAGTYPE_double      LIBRAW_EXIFTAG_TYPE_DOUBLE
135 #define LIBRAW_EXIFTOOLTAGTYPE_ifd         LIBRAW_EXIFTAG_TYPE_IFD
136 #define LIBRAW_EXIFTOOLTAGTYPE_unicode     LIBRAW_EXIFTAG_TYPE_UNICODE
137 #define LIBRAW_EXIFTOOLTAGTYPE_complex     LIBRAW_EXIFTAG_TYPE_COMPLEX
138 #define LIBRAW_EXIFTOOLTAGTYPE_int64u      LIBRAW_EXIFTAG_TYPE_LONG8
139 #define LIBRAW_EXIFTOOLTAGTYPE_int64s      LIBRAW_EXIFTAG_TYPE_SLONG8
140 #define LIBRAW_EXIFTOOLTAGTYPE_ifd64       LIBRAW_EXIFTAG_TYPE_IFD8
141 
142 #define LIBRAW_LENS_NOT_SET 0xffffffffffffffffULL
143 
144 enum LibRaw_whitebalance_code
145 {
146 // clang-format off
147   /*
148       EXIF light sources
149       12 = FL-D; Daylight fluorescent (D 5700K – 7100K) (F1,F5)
150       13 = FL-N; Day white fluorescent (N 4600K – 5400K) (F7,F8)
151       14 = FL-W; Cool white fluorescent (W 3900K – 4500K) (F2,F6, office, store, warehouse)
152       15 = FL-WW; White fluorescent (WW 3200K – 3700K) (F3, residential)
153       16 = FL-L; Soft/Warm white fluorescent (L 2600K - 3250K) (F4, kitchen, bath)
154   */
155 //clang-format on
156   LIBRAW_WBI_Unknown = 0,
157   LIBRAW_WBI_Daylight = 1,
158   LIBRAW_WBI_Fluorescent = 2,
159   LIBRAW_WBI_Tungsten = 3,
160   LIBRAW_WBI_Flash = 4,
161   LIBRAW_WBI_FineWeather = 9,
162   LIBRAW_WBI_Cloudy = 10,
163   LIBRAW_WBI_Shade = 11,
164   LIBRAW_WBI_FL_D = 12,
165   LIBRAW_WBI_FL_N = 13,
166   LIBRAW_WBI_FL_W = 14,
167   LIBRAW_WBI_FL_WW = 15,
168   LIBRAW_WBI_FL_L = 16,
169   LIBRAW_WBI_Ill_A = 17,
170   LIBRAW_WBI_Ill_B = 18,
171   LIBRAW_WBI_Ill_C = 19,
172   LIBRAW_WBI_D55 = 20,
173   LIBRAW_WBI_D65 = 21,
174   LIBRAW_WBI_D75 = 22,
175   LIBRAW_WBI_D50 = 23,
176   LIBRAW_WBI_StudioTungsten = 24,
177   LIBRAW_WBI_Sunset = 64,
178   LIBRAW_WBI_Underwater = 65,
179   LIBRAW_WBI_FluorescentHigh = 66,
180   LIBRAW_WBI_HT_Mercury = 67,
181   LIBRAW_WBI_AsShot = 81,
182   LIBRAW_WBI_Auto = 82,
183   LIBRAW_WBI_Custom = 83,
184   LIBRAW_WBI_Auto1 = 85,
185   LIBRAW_WBI_Auto2 = 86,
186   LIBRAW_WBI_Auto3 = 87,
187   LIBRAW_WBI_Auto4 = 88,
188   LIBRAW_WBI_Custom1 = 90,
189   LIBRAW_WBI_Custom2 = 91,
190   LIBRAW_WBI_Custom3 = 92,
191   LIBRAW_WBI_Custom4 = 93,
192   LIBRAW_WBI_Custom5 = 94,
193   LIBRAW_WBI_Custom6 = 95,
194   LIBRAW_WBI_PC_Set1 = 96,
195   LIBRAW_WBI_PC_Set2 = 97,
196   LIBRAW_WBI_PC_Set3 = 98,
197   LIBRAW_WBI_PC_Set4 = 99,
198   LIBRAW_WBI_PC_Set5 = 100,
199   LIBRAW_WBI_Measured = 110,
200   LIBRAW_WBI_BW = 120,
201   LIBRAW_WBI_Kelvin = 254,
202   LIBRAW_WBI_Other = 255,
203   LIBRAW_WBI_None = 0xffff
204 };
205 
206 enum LibRaw_MultiExposure_related
207 {
208   LIBRAW_ME_NONE = 0,
209   LIBRAW_ME_SIMPLE = 1,
210   LIBRAW_ME_OVERLAY = 2,
211   LIBRAW_ME_HDR = 3
212 };
213 
214 enum LibRaw_dng_processing
215 {
216   LIBRAW_DNG_NONE = 0,
217   LIBRAW_DNG_FLOAT = 1,
218   LIBRAW_DNG_LINEAR = 2,
219   LIBRAW_DNG_DEFLATE = 4,
220   LIBRAW_DNG_XTRANS = 8,
221   LIBRAW_DNG_OTHER = 16,
222   LIBRAW_DNG_8BIT = 32,
223   /*LIBRAW_DNG_LARGERANGE=64,*/ /* more than 16 bit integer */
224   LIBRAW_DNG_ALL =
225       LIBRAW_DNG_FLOAT | LIBRAW_DNG_LINEAR | LIBRAW_DNG_XTRANS |
226       LIBRAW_DNG_8BIT | LIBRAW_DNG_OTHER /* |LIBRAW_DNG_LARGERANGE */,
227   LIBRAW_DNG_DEFAULT = LIBRAW_DNG_FLOAT | LIBRAW_DNG_LINEAR |
228                        LIBRAW_DNG_DEFLATE | LIBRAW_DNG_8BIT
229 };
230 
231 enum LibRaw_runtime_capabilities
232 {
233   LIBRAW_CAPS_RAWSPEED = 1,
234   LIBRAW_CAPS_DNGSDK = 2,
235   LIBRAW_CAPS_GPRSDK = 4,
236   LIBRAW_CAPS_UNICODEPATHS = 8,
237   LIBRAW_CAPS_X3FTOOLS = 16,
238   LIBRAW_CAPS_RPI6BY9 = 32
239 };
240 
241 enum LibRaw_colorspace {
242   LIBRAW_COLORSPACE_NotFound = 0,
243   LIBRAW_COLORSPACE_sRGB,
244   LIBRAW_COLORSPACE_AdobeRGB,
245   LIBRAW_COLORSPACE_WideGamutRGB,
246   LIBRAW_COLORSPACE_ProPhotoRGB,
247   LIBRAW_COLORSPACE_ICC,
248   LIBRAW_COLORSPACE_Uncalibrated, // Tag 0x0001 InteropIndex containing "R03" + LIBRAW_COLORSPACE_Uncalibrated = Adobe RGB
249   LIBRAW_COLORSPACE_CameraLinearUniWB,
250   LIBRAW_COLORSPACE_CameraLinear,
251   LIBRAW_COLORSPACE_CameraGammaUniWB,
252   LIBRAW_COLORSPACE_CameraGamma,
253   LIBRAW_COLORSPACE_MonochromeLinear,
254   LIBRAW_COLORSPACE_MonochromeGamma,
255   LIBRAW_COLORSPACE_Unknown = 255
256 };
257 
258 enum LibRaw_cameramaker_index
259 {
260   LIBRAW_CAMERAMAKER_Unknown = 0,
261   LIBRAW_CAMERAMAKER_Agfa,
262   LIBRAW_CAMERAMAKER_Alcatel,
263   LIBRAW_CAMERAMAKER_Apple,
264   LIBRAW_CAMERAMAKER_Aptina,
265   LIBRAW_CAMERAMAKER_AVT,
266   LIBRAW_CAMERAMAKER_Baumer,
267   LIBRAW_CAMERAMAKER_Broadcom,
268   LIBRAW_CAMERAMAKER_Canon,
269   LIBRAW_CAMERAMAKER_Casio,
270   LIBRAW_CAMERAMAKER_CINE,
271   LIBRAW_CAMERAMAKER_Clauss,
272   LIBRAW_CAMERAMAKER_Contax,
273   LIBRAW_CAMERAMAKER_Creative,
274   LIBRAW_CAMERAMAKER_DJI,
275   LIBRAW_CAMERAMAKER_DXO,
276   LIBRAW_CAMERAMAKER_Epson,
277   LIBRAW_CAMERAMAKER_Foculus,
278   LIBRAW_CAMERAMAKER_Fujifilm,
279   LIBRAW_CAMERAMAKER_Generic,
280   LIBRAW_CAMERAMAKER_Gione,
281   LIBRAW_CAMERAMAKER_GITUP,
282   LIBRAW_CAMERAMAKER_Google,
283   LIBRAW_CAMERAMAKER_GoPro,
284   LIBRAW_CAMERAMAKER_Hasselblad,
285   LIBRAW_CAMERAMAKER_HTC,
286   LIBRAW_CAMERAMAKER_I_Mobile,
287   LIBRAW_CAMERAMAKER_Imacon,
288   LIBRAW_CAMERAMAKER_JK_Imaging,
289   LIBRAW_CAMERAMAKER_Kodak,
290   LIBRAW_CAMERAMAKER_Konica,
291   LIBRAW_CAMERAMAKER_Leaf,
292   LIBRAW_CAMERAMAKER_Leica,
293   LIBRAW_CAMERAMAKER_Lenovo,
294   LIBRAW_CAMERAMAKER_LG,
295   LIBRAW_CAMERAMAKER_Logitech,
296   LIBRAW_CAMERAMAKER_Mamiya,
297   LIBRAW_CAMERAMAKER_Matrix,
298   LIBRAW_CAMERAMAKER_Meizu,
299   LIBRAW_CAMERAMAKER_Micron,
300   LIBRAW_CAMERAMAKER_Minolta,
301   LIBRAW_CAMERAMAKER_Motorola,
302   LIBRAW_CAMERAMAKER_NGM,
303   LIBRAW_CAMERAMAKER_Nikon,
304   LIBRAW_CAMERAMAKER_Nokia,
305   LIBRAW_CAMERAMAKER_Olympus,
306   LIBRAW_CAMERAMAKER_OmniVison,
307   LIBRAW_CAMERAMAKER_Panasonic,
308   LIBRAW_CAMERAMAKER_Parrot,
309   LIBRAW_CAMERAMAKER_Pentax,
310   LIBRAW_CAMERAMAKER_PhaseOne,
311   LIBRAW_CAMERAMAKER_PhotoControl,
312   LIBRAW_CAMERAMAKER_Photron,
313   LIBRAW_CAMERAMAKER_Pixelink,
314   LIBRAW_CAMERAMAKER_Polaroid,
315   LIBRAW_CAMERAMAKER_RED,
316   LIBRAW_CAMERAMAKER_Ricoh,
317   LIBRAW_CAMERAMAKER_Rollei,
318   LIBRAW_CAMERAMAKER_RoverShot,
319   LIBRAW_CAMERAMAKER_Samsung,
320   LIBRAW_CAMERAMAKER_Sigma,
321   LIBRAW_CAMERAMAKER_Sinar,
322   LIBRAW_CAMERAMAKER_SMaL,
323   LIBRAW_CAMERAMAKER_Sony,
324   LIBRAW_CAMERAMAKER_ST_Micro,
325   LIBRAW_CAMERAMAKER_THL,
326   LIBRAW_CAMERAMAKER_VLUU,
327   LIBRAW_CAMERAMAKER_Xiaomi,
328   LIBRAW_CAMERAMAKER_XIAOYI,
329   LIBRAW_CAMERAMAKER_YI,
330   LIBRAW_CAMERAMAKER_Yuneec,
331   LIBRAW_CAMERAMAKER_Zeiss,
332   // Insert additional indexes here
333   LIBRAW_CAMERAMAKER_TheLastOne
334 };
335 
336 enum LibRaw_camera_mounts
337 {
338   LIBRAW_MOUNT_Unknown = 0,
339   LIBRAW_MOUNT_Alpa,
340   LIBRAW_MOUNT_C,              /* C-mount */
341   LIBRAW_MOUNT_Canon_EF_M,
342   LIBRAW_MOUNT_Canon_EF_S,
343   LIBRAW_MOUNT_Canon_EF,
344   LIBRAW_MOUNT_Canon_RF,
345   LIBRAW_MOUNT_Contax_N,
346   LIBRAW_MOUNT_Contax645,
347   LIBRAW_MOUNT_FT,             /* original 4/3 */
348   LIBRAW_MOUNT_mFT,            /* micro 4/3 */
349   LIBRAW_MOUNT_Fuji_GF,        /* Fujifilm GFX cameras, G mount */
350   LIBRAW_MOUNT_Fuji_GX,        /* Fujifilm GX680 */
351   LIBRAW_MOUNT_Fuji_X,
352   LIBRAW_MOUNT_Hasselblad_H,   /* Hasselblad Hn cameras, HC & HCD lenses */
353   LIBRAW_MOUNT_Hasselblad_V,
354   LIBRAW_MOUNT_Hasselblad_XCD, /* Hasselblad Xn cameras, XCD lenses */
355   LIBRAW_MOUNT_Leica_M,        /* Leica rangefinder bayonet */
356   LIBRAW_MOUNT_Leica_R,        /* Leica SLRs, 'R' for reflex */
357   LIBRAW_MOUNT_Leica_S,        /* LIBRAW_FORMAT_LeicaS 'MF' */
358   LIBRAW_MOUNT_Leica_SL,       /* lens, mounts on 'L' throat, FF */
359   LIBRAW_MOUNT_Leica_TL,       /* lens, mounts on 'L' throat, APS-C */
360   LIBRAW_MOUNT_LPS_L,          /* Leica/Panasonic/Sigma camera mount, takes L, SL and TL lenses */
361   LIBRAW_MOUNT_Mamiya67,       /* Mamiya RB67, RZ67 */
362   LIBRAW_MOUNT_Mamiya645,
363   LIBRAW_MOUNT_Minolta_A,
364   LIBRAW_MOUNT_Nikon_CX,       /* used in 'Nikon 1' series */
365   LIBRAW_MOUNT_Nikon_F,
366   LIBRAW_MOUNT_Nikon_Z,
367   LIBRAW_MOUNT_Pentax_645,
368   LIBRAW_MOUNT_Pentax_K,
369   LIBRAW_MOUNT_Pentax_Q,
370   LIBRAW_MOUNT_RicohModule,
371   LIBRAW_MOUNT_Rollei_bayonet, /* Rollei Hy-6: Leaf AFi, Sinar Hy6- models */
372   LIBRAW_MOUNT_Samsung_NX_M,
373   LIBRAW_MOUNT_Samsung_NX,
374   LIBRAW_MOUNT_Sigma_X3F,
375   LIBRAW_MOUNT_Sony_E,
376   LIBRAW_MOUNT_LF,
377   LIBRAW_MOUNT_DigitalBack,
378   LIBRAW_MOUNT_FixedLens,
379   LIBRAW_MOUNT_IL_UM,          /* Interchangeable lens, mount unknown */
380   LIBRAW_MOUNT_TheLastOne
381 };
382 
383 enum LibRaw_camera_formats
384 {
385   LIBRAW_FORMAT_Unknown = 0,
386   LIBRAW_FORMAT_APSC,
387   LIBRAW_FORMAT_FF,
388   LIBRAW_FORMAT_MF,
389   LIBRAW_FORMAT_APSH,
390   LIBRAW_FORMAT_1INCH,
391   LIBRAW_FORMAT_1div2p3INCH,  /* 1/2.3" */
392   LIBRAW_FORMAT_1div1p7INCH,  /* 1/1.7" */
393   LIBRAW_FORMAT_FT,           /* sensor size in FT & mFT cameras */
394   LIBRAW_FORMAT_CROP645,      /* 44x33mm */
395   LIBRAW_FORMAT_LeicaS,       /* 'MF' Leicas */
396   LIBRAW_FORMAT_645,
397   LIBRAW_FORMAT_66,
398   LIBRAW_FORMAT_69,
399   LIBRAW_FORMAT_LF,
400   LIBRAW_FORMAT_Leica_DMR,
401   LIBRAW_FORMAT_67,
402   LIBRAW_FORMAT_SigmaAPSC,    /* DP1, DP2, SD15, SD14, SD10, SD9 */
403   LIBRAW_FORMAT_SigmaMerrill, /* SD1,  'SD1 Merrill',  'DP1 Merrill',  'DP2 Merrill' */
404   LIBRAW_FORMAT_SigmaAPSH,    /* 'sd Quattro H' */
405   LIBRAW_FORMAT_3648,         /* DALSA FTF4052C (Mamiya ZD) */
406   LIBRAW_FORMAT_68,           /* Fujifilm GX680 */
407   LIBRAW_FORMAT_TheLastOne
408 };
409 
410 enum LibRawImageAspects
411 {
412   LIBRAW_IMAGE_ASPECT_UNKNOWN = 0,
413   LIBRAW_IMAGE_ASPECT_3to2 = 1,
414   LIBRAW_IMAGE_ASPECT_1to1 = 2,
415   LIBRAW_IMAGE_ASPECT_4to3 = 3,
416   LIBRAW_IMAGE_ASPECT_16to9 = 4,
417   LIBRAW_IMAGE_ASPECT_5to4 = 5,
418   LIBRAW_IMAGE_ASPECT_OTHER = 6
419 };
420 
421 enum LibRaw_lens_focal_types
422 {
423   LIBRAW_FT_UNDEFINED = 0,
424   LIBRAW_FT_PRIME_LENS = 1,
425   LIBRAW_FT_ZOOM_LENS = 2,
426   LIBRAW_FT_ZOOM_LENS_CONSTANT_APERTURE = 3,
427   LIBRAW_FT_ZOOM_LENS_VARIABLE_APERTURE = 4
428 };
429 
430 enum LibRaw_Canon_RecordModes {
431   LIBRAW_Canon_RecordMode_UNDEFINED = 0,
432   LIBRAW_Canon_RecordMode_JPEG,
433   LIBRAW_Canon_RecordMode_CRW_THM,
434   LIBRAW_Canon_RecordMode_AVI_THM,
435   LIBRAW_Canon_RecordMode_TIF,
436   LIBRAW_Canon_RecordMode_TIF_JPEG,
437   LIBRAW_Canon_RecordMode_CR2,
438   LIBRAW_Canon_RecordMode_CR2_JPEG,
439   LIBRAW_Canon_RecordMode_UNKNOWN,
440   LIBRAW_Canon_RecordMode_MOV,
441   LIBRAW_Canon_RecordMode_MP4,
442   LIBRAW_Canon_RecordMode_CRM,
443   LIBRAW_Canon_RecordMode_CR3,
444   LIBRAW_Canon_RecordMode_CR3_JPEG,
445   LIBRAW_Canon_RecordMode_HEIF,
446   LIBRAW_Canon_RecordMode_CR3_HEIF,
447   LIBRAW_Canon_RecordMode_TheLastOne
448 };
449 
450 enum LibRaw_sony_cameratypes
451 {
452   LIBRAW_SONY_DSC = 1,
453   LIBRAW_SONY_DSLR = 2,
454   LIBRAW_SONY_NEX = 3,
455   LIBRAW_SONY_SLT = 4,
456   LIBRAW_SONY_ILCE = 5,
457   LIBRAW_SONY_ILCA = 6
458 };
459 
460 enum LibRaw_KodakSensors
461 {
462   LIBRAW_Kodak_UnknownSensor = 0,
463   LIBRAW_Kodak_M1 = 1,
464   LIBRAW_Kodak_M15 = 2,
465   LIBRAW_Kodak_M16 = 3,
466   LIBRAW_Kodak_M17 = 4,
467   LIBRAW_Kodak_M2 = 5,
468   LIBRAW_Kodak_M23 = 6,
469   LIBRAW_Kodak_M24 = 7,
470   LIBRAW_Kodak_M3 = 8,
471   LIBRAW_Kodak_M5 = 9,
472   LIBRAW_Kodak_M6 = 10,
473   LIBRAW_Kodak_C14 = 11,
474   LIBRAW_Kodak_X14 = 12,
475   LIBRAW_Kodak_M11 = 13
476 };
477 
478 enum LibRaw_HasselbladFormatCodes {
479   LIBRAW_HF_Unknown = 0,
480   LIBRAW_HF_3FR,
481   LIBRAW_HF_FFF,
482   LIBRAW_HF_Imacon,
483   LIBRAW_HF_HasselbladDNG,
484   LIBRAW_HF_AdobeDNG,
485   LIBRAW_HF_AdobeDNG_fromPhocusDNG
486 };
487 
488 enum LibRaw_processing_options
489 {
490   LIBRAW_PROCESSING_SONYARW2_NONE = 0,
491   LIBRAW_PROCESSING_SONYARW2_BASEONLY = 1,
492   LIBRAW_PROCESSING_SONYARW2_DELTAONLY = 1 << 1,
493   LIBRAW_PROCESSING_SONYARW2_DELTAZEROBASE = 1 << 2,
494   LIBRAW_PROCESSING_SONYARW2_DELTATOVALUE = 1 << 3,
495   LIBRAW_PROCESSING_SONYARW2_ALLFLAGS =
496       LIBRAW_PROCESSING_SONYARW2_BASEONLY +
497       LIBRAW_PROCESSING_SONYARW2_DELTAONLY +
498       LIBRAW_PROCESSING_SONYARW2_DELTAZEROBASE +
499       LIBRAW_PROCESSING_SONYARW2_DELTATOVALUE,
500   LIBRAW_PROCESSING_DP2Q_INTERPOLATERG = 1 << 4,
501   LIBRAW_PROCESSING_DP2Q_INTERPOLATEAF = 1 << 5,
502   LIBRAW_PROCESSING_PENTAX_PS_ALLFRAMES = 1 << 6,
503   LIBRAW_PROCESSING_CONVERTFLOAT_TO_INT = 1 << 7,
504   LIBRAW_PROCESSING_SRAW_NO_RGB = 1 << 8,
505   LIBRAW_PROCESSING_SRAW_NO_INTERPOLATE = 1 << 9,
506   LIBRAW_PROCESSING_ARQ_SKIP_CHANNEL_SWAP = 1 << 10,
507   LIBRAW_PROCESSING_NO_ROTATE_FOR_KODAK_THUMBNAILS = 1 << 11,
508   LIBRAW_PROCESSING_USE_DNG_DEFAULT_CROP = 1 << 12,
509   LIBRAW_PROCESSING_USE_PPM16_THUMBS = 1 << 13,
510   LIBRAW_PROCESSING_SKIP_MAKERNOTES = 1 << 14,
511   LIBRAW_PROCESSING_DONT_CHECK_DNG_ILLUMINANT = 1 << 15,
512   LIBRAW_PROCESSING_DNGSDK_ZEROCOPY = 1 << 16,
513   LIBRAW_PROCESSING_ZEROFILTERS_FOR_MONOCHROMETIFFS = 1 << 17,
514   LIBRAW_PROCESSING_DNG_ADD_ENHANCED = 1 << 18,
515   LIBRAW_PROCESSING_DNG_ADD_PREVIEWS = 1 << 19,
516   LIBRAW_PROCESSING_DNG_PREFER_LARGEST_IMAGE = 1 << 20,
517   LIBRAW_PROCESSING_DNG_STAGE2 = 1 << 21,
518   LIBRAW_PROCESSING_DNG_STAGE3 = 1 << 22,
519   LIBRAW_PROCESSING_DNG_ALLOWSIZECHANGE = 1 << 23,
520   LIBRAW_PROCESSING_DNG_DISABLEWBADJUST = 1 << 24,
521   LIBRAW_PROCESSING_PROVIDE_NONSTANDARD_WB = 1 << 25,
522   LIBRAW_PROCESSING_CAMERAWB_FALLBACK_TO_DAYLIGHT = 1 << 26
523 };
524 
525 enum LibRaw_decoder_flags
526 {
527   LIBRAW_DECODER_HASCURVE = 1 << 4,
528   LIBRAW_DECODER_SONYARW2 = 1 << 5,
529   LIBRAW_DECODER_TRYRAWSPEED = 1 << 6,
530   LIBRAW_DECODER_OWNALLOC = 1 << 7,
531   LIBRAW_DECODER_FIXEDMAXC = 1 << 8,
532   LIBRAW_DECODER_ADOBECOPYPIXEL = 1 << 9,
533   LIBRAW_DECODER_LEGACY_WITH_MARGINS = 1 << 10,
534   LIBRAW_DECODER_3CHANNEL = 1 << 11,
535   LIBRAW_DECODER_SINAR4SHOT = 1 << 11,
536   LIBRAW_DECODER_FLATDATA = 1 << 12,
537   LIBRAW_DECODER_FLAT_BG2_SWAPPED = 1<<13,
538   LIBRAW_DECODER_NOTSET = 1 << 15
539 };
540 
541 #define LIBRAW_XTRANS 9
542 
543 enum LibRaw_constructor_flags
544 {
545   LIBRAW_OPTIONS_NONE = 0,
546   LIBRAW_OPIONS_NO_MEMERR_CALLBACK = 1,
547   LIBRAW_OPIONS_NO_DATAERR_CALLBACK = 1 << 1
548 };
549 
550 enum LibRaw_warnings
551 {
552   LIBRAW_WARN_NONE = 0,
553   LIBRAW_WARN_BAD_CAMERA_WB = 1 << 2,
554   LIBRAW_WARN_NO_METADATA = 1 << 3,
555   LIBRAW_WARN_NO_JPEGLIB = 1 << 4,
556   LIBRAW_WARN_NO_EMBEDDED_PROFILE = 1 << 5,
557   LIBRAW_WARN_NO_INPUT_PROFILE = 1 << 6,
558   LIBRAW_WARN_BAD_OUTPUT_PROFILE = 1 << 7,
559   LIBRAW_WARN_NO_BADPIXELMAP = 1 << 8,
560   LIBRAW_WARN_BAD_DARKFRAME_FILE = 1 << 9,
561   LIBRAW_WARN_BAD_DARKFRAME_DIM = 1 << 10,
562   LIBRAW_WARN_NO_JASPER = 1 << 11,
563   LIBRAW_WARN_RAWSPEED_PROBLEM = 1 << 12,
564   LIBRAW_WARN_RAWSPEED_UNSUPPORTED = 1 << 13,
565   LIBRAW_WARN_RAWSPEED_PROCESSED = 1 << 14,
566   LIBRAW_WARN_FALLBACK_TO_AHD = 1 << 15,
567   LIBRAW_WARN_PARSEFUJI_PROCESSED = 1 << 16,
568   LIBRAW_WARN_DNGSDK_PROCESSED = 1 << 17,
569   LIBRAW_WARN_DNG_IMAGES_REORDERED = 1 << 18,
570   LIBRAW_WARN_DNG_STAGE2_APPLIED = 1 << 19,
571   LIBRAW_WARN_DNG_STAGE3_APPLIED = 1 << 20,
572 };
573 
574 enum LibRaw_exceptions
575 {
576   LIBRAW_EXCEPTION_NONE = 0,
577   LIBRAW_EXCEPTION_ALLOC = 1,
578   LIBRAW_EXCEPTION_DECODE_RAW = 2,
579   LIBRAW_EXCEPTION_DECODE_JPEG = 3,
580   LIBRAW_EXCEPTION_IO_EOF = 4,
581   LIBRAW_EXCEPTION_IO_CORRUPT = 5,
582   LIBRAW_EXCEPTION_CANCELLED_BY_CALLBACK = 6,
583   LIBRAW_EXCEPTION_BAD_CROP = 7,
584   LIBRAW_EXCEPTION_IO_BADFILE = 8,
585   LIBRAW_EXCEPTION_DECODE_JPEG2000 = 9,
586   LIBRAW_EXCEPTION_TOOBIG = 10,
587   LIBRAW_EXCEPTION_MEMPOOL = 11
588 };
589 
590 enum LibRaw_progress
591 {
592   LIBRAW_PROGRESS_START = 0,
593   LIBRAW_PROGRESS_OPEN = 1,
594   LIBRAW_PROGRESS_IDENTIFY = 1 << 1,
595   LIBRAW_PROGRESS_SIZE_ADJUST = 1 << 2,
596   LIBRAW_PROGRESS_LOAD_RAW = 1 << 3,
597   LIBRAW_PROGRESS_RAW2_IMAGE = 1 << 4,
598   LIBRAW_PROGRESS_REMOVE_ZEROES = 1 << 5,
599   LIBRAW_PROGRESS_BAD_PIXELS = 1 << 6,
600   LIBRAW_PROGRESS_DARK_FRAME = 1 << 7,
601   LIBRAW_PROGRESS_FOVEON_INTERPOLATE = 1 << 8,
602   LIBRAW_PROGRESS_SCALE_COLORS = 1 << 9,
603   LIBRAW_PROGRESS_PRE_INTERPOLATE = 1 << 10,
604   LIBRAW_PROGRESS_INTERPOLATE = 1 << 11,
605   LIBRAW_PROGRESS_MIX_GREEN = 1 << 12,
606   LIBRAW_PROGRESS_MEDIAN_FILTER = 1 << 13,
607   LIBRAW_PROGRESS_HIGHLIGHTS = 1 << 14,
608   LIBRAW_PROGRESS_FUJI_ROTATE = 1 << 15,
609   LIBRAW_PROGRESS_FLIP = 1 << 16,
610   LIBRAW_PROGRESS_APPLY_PROFILE = 1 << 17,
611   LIBRAW_PROGRESS_CONVERT_RGB = 1 << 18,
612   LIBRAW_PROGRESS_STRETCH = 1 << 19,
613   /* reserved */
614   LIBRAW_PROGRESS_STAGE20 = 1 << 20,
615   LIBRAW_PROGRESS_STAGE21 = 1 << 21,
616   LIBRAW_PROGRESS_STAGE22 = 1 << 22,
617   LIBRAW_PROGRESS_STAGE23 = 1 << 23,
618   LIBRAW_PROGRESS_STAGE24 = 1 << 24,
619   LIBRAW_PROGRESS_STAGE25 = 1 << 25,
620   LIBRAW_PROGRESS_STAGE26 = 1 << 26,
621   LIBRAW_PROGRESS_STAGE27 = 1 << 27,
622 
623   LIBRAW_PROGRESS_THUMB_LOAD = 1 << 28,
624   LIBRAW_PROGRESS_TRESERVED1 = 1 << 29,
625   LIBRAW_PROGRESS_TRESERVED2 = 1 << 30
626 };
627 #define LIBRAW_PROGRESS_THUMB_MASK 0x0fffffff
628 
629 enum LibRaw_errors
630 {
631   LIBRAW_SUCCESS = 0,
632   LIBRAW_UNSPECIFIED_ERROR = -1,
633   LIBRAW_FILE_UNSUPPORTED = -2,
634   LIBRAW_REQUEST_FOR_NONEXISTENT_IMAGE = -3,
635   LIBRAW_OUT_OF_ORDER_CALL = -4,
636   LIBRAW_NO_THUMBNAIL = -5,
637   LIBRAW_UNSUPPORTED_THUMBNAIL = -6,
638   LIBRAW_INPUT_CLOSED = -7,
639   LIBRAW_NOT_IMPLEMENTED = -8,
640   LIBRAW_UNSUFFICIENT_MEMORY = -100007,
641   LIBRAW_DATA_ERROR = -100008,
642   LIBRAW_IO_ERROR = -100009,
643   LIBRAW_CANCELLED_BY_CALLBACK = -100010,
644   LIBRAW_BAD_CROP = -100011,
645   LIBRAW_TOO_BIG = -100012,
646   LIBRAW_MEMPOOL_OVERFLOW = -100013
647 };
648 
649 #define LIBRAW_FATAL_ERROR(ec) ((ec) < -100000)
650 
651 enum LibRaw_thumbnail_formats
652 {
653   LIBRAW_THUMBNAIL_UNKNOWN = 0,
654   LIBRAW_THUMBNAIL_JPEG = 1,
655   LIBRAW_THUMBNAIL_BITMAP = 2,
656   LIBRAW_THUMBNAIL_BITMAP16 = 3,
657   LIBRAW_THUMBNAIL_LAYER = 4,
658   LIBRAW_THUMBNAIL_ROLLEI = 5
659 };
660 
661 enum LibRaw_image_formats
662 {
663   LIBRAW_IMAGE_JPEG = 1,
664   LIBRAW_IMAGE_BITMAP = 2
665 };
666 
667 #endif
668