xref: /aosp_15_r20/external/dng_sdk/source/dng_parse_utils.h (revision fd1fabb72dbdf09ea7034f531e6f8e9f57334c8d)
1*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
2*fd1fabb7SAndroid Build Coastguard Worker // Copyright 2006-2007 Adobe Systems Incorporated
3*fd1fabb7SAndroid Build Coastguard Worker // All Rights Reserved.
4*fd1fabb7SAndroid Build Coastguard Worker //
5*fd1fabb7SAndroid Build Coastguard Worker // NOTICE:  Adobe permits you to use, modify, and distribute this file in
6*fd1fabb7SAndroid Build Coastguard Worker // accordance with the terms of the Adobe license agreement accompanying it.
7*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
8*fd1fabb7SAndroid Build Coastguard Worker 
9*fd1fabb7SAndroid Build Coastguard Worker /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_parse_utils.h#1 $ */
10*fd1fabb7SAndroid Build Coastguard Worker /* $DateTime: 2012/05/30 13:28:51 $ */
11*fd1fabb7SAndroid Build Coastguard Worker /* $Change: 832332 $ */
12*fd1fabb7SAndroid Build Coastguard Worker /* $Author: tknoll $ */
13*fd1fabb7SAndroid Build Coastguard Worker 
14*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
15*fd1fabb7SAndroid Build Coastguard Worker 
16*fd1fabb7SAndroid Build Coastguard Worker #ifndef __dng_parse_utils__
17*fd1fabb7SAndroid Build Coastguard Worker #define __dng_parse_utils__
18*fd1fabb7SAndroid Build Coastguard Worker 
19*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
20*fd1fabb7SAndroid Build Coastguard Worker 
21*fd1fabb7SAndroid Build Coastguard Worker #include "dng_classes.h"
22*fd1fabb7SAndroid Build Coastguard Worker #include "dng_flags.h"
23*fd1fabb7SAndroid Build Coastguard Worker #include "dng_types.h"
24*fd1fabb7SAndroid Build Coastguard Worker #include "dng_stream.h"
25*fd1fabb7SAndroid Build Coastguard Worker #include "dng_string.h"
26*fd1fabb7SAndroid Build Coastguard Worker #include "dng_matrix.h"
27*fd1fabb7SAndroid Build Coastguard Worker 
28*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
29*fd1fabb7SAndroid Build Coastguard Worker 
30*fd1fabb7SAndroid Build Coastguard Worker #if qDNGValidate
31*fd1fabb7SAndroid Build Coastguard Worker 
32*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
33*fd1fabb7SAndroid Build Coastguard Worker 
34*fd1fabb7SAndroid Build Coastguard Worker const char * LookupParentCode (uint32 parentCode);
35*fd1fabb7SAndroid Build Coastguard Worker 
36*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
37*fd1fabb7SAndroid Build Coastguard Worker 
38*fd1fabb7SAndroid Build Coastguard Worker const char * LookupTagCode (uint32 parentCode,
39*fd1fabb7SAndroid Build Coastguard Worker 							uint32 tagCode);
40*fd1fabb7SAndroid Build Coastguard Worker 
41*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
42*fd1fabb7SAndroid Build Coastguard Worker 
43*fd1fabb7SAndroid Build Coastguard Worker const char * LookupTagType (uint32 tagType);
44*fd1fabb7SAndroid Build Coastguard Worker 
45*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
46*fd1fabb7SAndroid Build Coastguard Worker 
47*fd1fabb7SAndroid Build Coastguard Worker const char * LookupNewSubFileType (uint32 key);
48*fd1fabb7SAndroid Build Coastguard Worker 
49*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCompression (uint32 key);
50*fd1fabb7SAndroid Build Coastguard Worker 
51*fd1fabb7SAndroid Build Coastguard Worker const char * LookupPredictor (uint32 key);
52*fd1fabb7SAndroid Build Coastguard Worker 
53*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSampleFormat (uint32 key);
54*fd1fabb7SAndroid Build Coastguard Worker 
55*fd1fabb7SAndroid Build Coastguard Worker const char * LookupPhotometricInterpretation (uint32 key);
56*fd1fabb7SAndroid Build Coastguard Worker 
57*fd1fabb7SAndroid Build Coastguard Worker const char * LookupOrientation (uint32 key);
58*fd1fabb7SAndroid Build Coastguard Worker 
59*fd1fabb7SAndroid Build Coastguard Worker const char * LookupResolutionUnit (uint32 key);
60*fd1fabb7SAndroid Build Coastguard Worker 
61*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCFAColor (uint32 key);
62*fd1fabb7SAndroid Build Coastguard Worker 
63*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSensingMethod (uint32 key);
64*fd1fabb7SAndroid Build Coastguard Worker 
65*fd1fabb7SAndroid Build Coastguard Worker const char * LookupExposureProgram (uint32 key);
66*fd1fabb7SAndroid Build Coastguard Worker 
67*fd1fabb7SAndroid Build Coastguard Worker const char * LookupMeteringMode (uint32 key);
68*fd1fabb7SAndroid Build Coastguard Worker 
69*fd1fabb7SAndroid Build Coastguard Worker const char * LookupLightSource (uint32 key);
70*fd1fabb7SAndroid Build Coastguard Worker 
71*fd1fabb7SAndroid Build Coastguard Worker const char * LookupColorSpace (uint32 key);
72*fd1fabb7SAndroid Build Coastguard Worker 
73*fd1fabb7SAndroid Build Coastguard Worker const char * LookupFileSource (uint32 key);
74*fd1fabb7SAndroid Build Coastguard Worker 
75*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSceneType (uint32 key);
76*fd1fabb7SAndroid Build Coastguard Worker 
77*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCustomRendered (uint32 key);
78*fd1fabb7SAndroid Build Coastguard Worker 
79*fd1fabb7SAndroid Build Coastguard Worker const char * LookupExposureMode (uint32 key);
80*fd1fabb7SAndroid Build Coastguard Worker 
81*fd1fabb7SAndroid Build Coastguard Worker const char * LookupWhiteBalance (uint32 key);
82*fd1fabb7SAndroid Build Coastguard Worker 
83*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSceneCaptureType (uint32 key);
84*fd1fabb7SAndroid Build Coastguard Worker 
85*fd1fabb7SAndroid Build Coastguard Worker const char * LookupGainControl (uint32 key);
86*fd1fabb7SAndroid Build Coastguard Worker 
87*fd1fabb7SAndroid Build Coastguard Worker const char * LookupContrast (uint32 key);
88*fd1fabb7SAndroid Build Coastguard Worker 
89*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSaturation (uint32 key);
90*fd1fabb7SAndroid Build Coastguard Worker 
91*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSharpness (uint32 key);
92*fd1fabb7SAndroid Build Coastguard Worker 
93*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSubjectDistanceRange (uint32 key);
94*fd1fabb7SAndroid Build Coastguard Worker 
95*fd1fabb7SAndroid Build Coastguard Worker const char * LookupComponent (uint32 key);
96*fd1fabb7SAndroid Build Coastguard Worker 
97*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCFALayout (uint32 key);
98*fd1fabb7SAndroid Build Coastguard Worker 
99*fd1fabb7SAndroid Build Coastguard Worker const char * LookupMakerNoteSafety (uint32 key);
100*fd1fabb7SAndroid Build Coastguard Worker 
101*fd1fabb7SAndroid Build Coastguard Worker const char * LookupColorimetricReference (uint32 key);
102*fd1fabb7SAndroid Build Coastguard Worker 
103*fd1fabb7SAndroid Build Coastguard Worker const char * LookupPreviewColorSpace (uint32 key);
104*fd1fabb7SAndroid Build Coastguard Worker 
105*fd1fabb7SAndroid Build Coastguard Worker const char * LookupJPEGMarker (uint32 key);
106*fd1fabb7SAndroid Build Coastguard Worker 
107*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSensitivityType (uint32 key);
108*fd1fabb7SAndroid Build Coastguard Worker 
109*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
110*fd1fabb7SAndroid Build Coastguard Worker 
111*fd1fabb7SAndroid Build Coastguard Worker void DumpHexAscii (dng_stream &stream,
112*fd1fabb7SAndroid Build Coastguard Worker 				   uint32 count);
113*fd1fabb7SAndroid Build Coastguard Worker 
114*fd1fabb7SAndroid Build Coastguard Worker void DumpHexAscii (const uint8 *buf,
115*fd1fabb7SAndroid Build Coastguard Worker 				   uint32 count);
116*fd1fabb7SAndroid Build Coastguard Worker 
117*fd1fabb7SAndroid Build Coastguard Worker void DumpXMP (dng_stream &stream,
118*fd1fabb7SAndroid Build Coastguard Worker 			  uint32 count);
119*fd1fabb7SAndroid Build Coastguard Worker 
120*fd1fabb7SAndroid Build Coastguard Worker void DumpString (const dng_string &s);
121*fd1fabb7SAndroid Build Coastguard Worker 
122*fd1fabb7SAndroid Build Coastguard Worker void DumpTagValues (dng_stream &stream,
123*fd1fabb7SAndroid Build Coastguard Worker 					const char *entry_name,
124*fd1fabb7SAndroid Build Coastguard Worker 					uint32 parentCode,
125*fd1fabb7SAndroid Build Coastguard Worker 					uint32 tagCode,
126*fd1fabb7SAndroid Build Coastguard Worker 					uint32 tagType,
127*fd1fabb7SAndroid Build Coastguard Worker 					uint32 tagCount,
128*fd1fabb7SAndroid Build Coastguard Worker 					const char *tag_name = NULL);
129*fd1fabb7SAndroid Build Coastguard Worker 
130*fd1fabb7SAndroid Build Coastguard Worker void DumpMatrix (const dng_matrix &m);
131*fd1fabb7SAndroid Build Coastguard Worker 
132*fd1fabb7SAndroid Build Coastguard Worker void DumpVector (const dng_vector &v);
133*fd1fabb7SAndroid Build Coastguard Worker 
134*fd1fabb7SAndroid Build Coastguard Worker void DumpDateTime (const dng_date_time &dt);
135*fd1fabb7SAndroid Build Coastguard Worker 
136*fd1fabb7SAndroid Build Coastguard Worker void DumpExposureTime (real64 x);
137*fd1fabb7SAndroid Build Coastguard Worker 
138*fd1fabb7SAndroid Build Coastguard Worker void DumpFingerprint (const dng_fingerprint &p);
139*fd1fabb7SAndroid Build Coastguard Worker 
140*fd1fabb7SAndroid Build Coastguard Worker void DumpHueSatMap (dng_stream &stream,
141*fd1fabb7SAndroid Build Coastguard Worker 				    uint32 hues,
142*fd1fabb7SAndroid Build Coastguard Worker 					uint32 sats,
143*fd1fabb7SAndroid Build Coastguard Worker 					uint32 vals,
144*fd1fabb7SAndroid Build Coastguard Worker 					bool skipSat0);
145*fd1fabb7SAndroid Build Coastguard Worker 
146*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
147*fd1fabb7SAndroid Build Coastguard Worker 
148*fd1fabb7SAndroid Build Coastguard Worker #endif
149*fd1fabb7SAndroid Build Coastguard Worker 
150*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
151*fd1fabb7SAndroid Build Coastguard Worker 
152*fd1fabb7SAndroid Build Coastguard Worker bool CheckTagType (uint32 parentCode,
153*fd1fabb7SAndroid Build Coastguard Worker 				   uint32 tagCode,
154*fd1fabb7SAndroid Build Coastguard Worker 				   uint32 tagType,
155*fd1fabb7SAndroid Build Coastguard Worker 				   uint16 validType0,
156*fd1fabb7SAndroid Build Coastguard Worker 				   uint16 validType1 = 0,
157*fd1fabb7SAndroid Build Coastguard Worker 				   uint16 validType2 = 0,
158*fd1fabb7SAndroid Build Coastguard Worker 				   uint16 validType3 = 0);
159*fd1fabb7SAndroid Build Coastguard Worker 
160*fd1fabb7SAndroid Build Coastguard Worker bool CheckTagCount (uint32 parentCode,
161*fd1fabb7SAndroid Build Coastguard Worker 					uint32 tagCode,
162*fd1fabb7SAndroid Build Coastguard Worker 				    uint32 tagCount,
163*fd1fabb7SAndroid Build Coastguard Worker 				    uint32 minCount,
164*fd1fabb7SAndroid Build Coastguard Worker 				    uint32 maxCount = 0);
165*fd1fabb7SAndroid Build Coastguard Worker 
166*fd1fabb7SAndroid Build Coastguard Worker bool CheckColorImage (uint32 parentCode,
167*fd1fabb7SAndroid Build Coastguard Worker 					  uint32 tagCode,
168*fd1fabb7SAndroid Build Coastguard Worker 				      uint32 colorPlanes);
169*fd1fabb7SAndroid Build Coastguard Worker 
170*fd1fabb7SAndroid Build Coastguard Worker bool CheckMainIFD (uint32 parentCode,
171*fd1fabb7SAndroid Build Coastguard Worker 				   uint32 tagCode,
172*fd1fabb7SAndroid Build Coastguard Worker 				   uint32 newSubFileType);
173*fd1fabb7SAndroid Build Coastguard Worker 
174*fd1fabb7SAndroid Build Coastguard Worker bool CheckRawIFD (uint32 parentCode,
175*fd1fabb7SAndroid Build Coastguard Worker 				  uint32 tagCode,
176*fd1fabb7SAndroid Build Coastguard Worker 				  uint32 photometricInterpretation);
177*fd1fabb7SAndroid Build Coastguard Worker 
178*fd1fabb7SAndroid Build Coastguard Worker bool CheckCFA (uint32 parentCode,
179*fd1fabb7SAndroid Build Coastguard Worker 			   uint32 tagCode,
180*fd1fabb7SAndroid Build Coastguard Worker 		       uint32 photometricInterpretation);
181*fd1fabb7SAndroid Build Coastguard Worker 
182*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
183*fd1fabb7SAndroid Build Coastguard Worker 
184*fd1fabb7SAndroid Build Coastguard Worker void ParseStringTag (dng_stream &stream,
185*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 parentCode,
186*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagCode,
187*fd1fabb7SAndroid Build Coastguard Worker 				     uint32 tagCount,
188*fd1fabb7SAndroid Build Coastguard Worker 				     dng_string &s,
189*fd1fabb7SAndroid Build Coastguard Worker 				     bool trimBlanks = true);
190*fd1fabb7SAndroid Build Coastguard Worker 
191*fd1fabb7SAndroid Build Coastguard Worker void ParseDualStringTag (dng_stream &stream,
192*fd1fabb7SAndroid Build Coastguard Worker 					 	 uint32 parentCode,
193*fd1fabb7SAndroid Build Coastguard Worker 					 	 uint32 tagCode,
194*fd1fabb7SAndroid Build Coastguard Worker 				     	 uint32 tagCount,
195*fd1fabb7SAndroid Build Coastguard Worker 				     	 dng_string &s1,
196*fd1fabb7SAndroid Build Coastguard Worker 				     	 dng_string &s2);
197*fd1fabb7SAndroid Build Coastguard Worker 
198*fd1fabb7SAndroid Build Coastguard Worker void ParseEncodedStringTag (dng_stream &stream,
199*fd1fabb7SAndroid Build Coastguard Worker 							uint32 parentCode,
200*fd1fabb7SAndroid Build Coastguard Worker 							uint32 tagCode,
201*fd1fabb7SAndroid Build Coastguard Worker 				    		uint32 tagCount,
202*fd1fabb7SAndroid Build Coastguard Worker 				    		dng_string &s);
203*fd1fabb7SAndroid Build Coastguard Worker 
204*fd1fabb7SAndroid Build Coastguard Worker bool ParseMatrixTag (dng_stream &stream,
205*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 parentCode,
206*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagCode,
207*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagType,
208*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagCount,
209*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 rows,
210*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 cols,
211*fd1fabb7SAndroid Build Coastguard Worker 					 dng_matrix &m);
212*fd1fabb7SAndroid Build Coastguard Worker 
213*fd1fabb7SAndroid Build Coastguard Worker bool ParseVectorTag (dng_stream &stream,
214*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 parentCode,
215*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagCode,
216*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagType,
217*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 tagCount,
218*fd1fabb7SAndroid Build Coastguard Worker 					 uint32 count,
219*fd1fabb7SAndroid Build Coastguard Worker 					 dng_vector &v);
220*fd1fabb7SAndroid Build Coastguard Worker 
221*fd1fabb7SAndroid Build Coastguard Worker bool ParseDateTimeTag (dng_stream &stream,
222*fd1fabb7SAndroid Build Coastguard Worker 					   uint32 parentCode,
223*fd1fabb7SAndroid Build Coastguard Worker 					   uint32 tagCode,
224*fd1fabb7SAndroid Build Coastguard Worker 					   uint32 tagType,
225*fd1fabb7SAndroid Build Coastguard Worker 					   uint32 tagCount,
226*fd1fabb7SAndroid Build Coastguard Worker 					   dng_date_time &dt);
227*fd1fabb7SAndroid Build Coastguard Worker 
228*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
229*fd1fabb7SAndroid Build Coastguard Worker 
230*fd1fabb7SAndroid Build Coastguard Worker #endif
231*fd1fabb7SAndroid Build Coastguard Worker 
232*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
233