/src/LibRaw/src/metadata/normalize_model.cpp
Line | Count | Source |
1 | | /* -*- C++ -*- |
2 | | * Copyright 2019-2025 LibRaw LLC (info@libraw.org) |
3 | | * |
4 | | |
5 | | LibRaw is free software; you can redistribute it and/or modify |
6 | | it under the terms of the one of two licenses as you choose: |
7 | | |
8 | | 1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1 |
9 | | (See file LICENSE.LGPL provided in LibRaw distribution archive for details). |
10 | | |
11 | | 2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 |
12 | | (See file LICENSE.CDDL provided in LibRaw distribution archive for details). |
13 | | |
14 | | */ |
15 | | |
16 | | #include "../../internal/dcraw_defs.h" |
17 | | #include "../../internal/libraw_cameraids.h" |
18 | | |
19 | | void LibRaw::GetNormalizedModel() |
20 | 0 | { |
21 | |
|
22 | 0 | int i, j; |
23 | 0 | char *ps; |
24 | 0 | int try_xml = 0; |
25 | |
|
26 | 0 | static const struct |
27 | 0 | { |
28 | 0 | unsigned long long id; |
29 | 0 | char t_model[20]; |
30 | 0 | } unique[] = |
31 | | // clang-format off |
32 | 0 | { |
33 | 0 | { CanonID_EOS_M50, "EOS M50"}, // Kiss M |
34 | 0 | { CanonID_EOS_M6_Mark_II, "EOS M6 Mark II"}, |
35 | 0 | { CanonID_EOS_M200, "EOS M200"}, |
36 | 0 | { CanonID_EOS_D30, "EOS D30"}, |
37 | 0 | { CanonID_EOS_D60, "EOS D60"}, |
38 | 0 | { CanonID_EOS_M3, "EOS M3"}, |
39 | 0 | { CanonID_EOS_M10, "EOS M10"}, |
40 | 0 | { CanonID_EOS_M5, "EOS M5"}, |
41 | 0 | { CanonID_EOS_M100, "EOS M100"}, |
42 | 0 | { CanonID_EOS_M6, "EOS M6"}, |
43 | |
|
44 | 0 | { CanonID_EOS_R5_C, "EOS R5 C"}, |
45 | |
|
46 | 0 | { CanonID_EOS_1D, "EOS-1D"}, |
47 | 0 | { CanonID_EOS_1Ds, "EOS-1Ds"}, |
48 | 0 | { CanonID_EOS_10D, "EOS 10D"}, |
49 | 0 | { CanonID_EOS_1D_Mark_III, "EOS-1D Mark III"}, |
50 | 0 | { CanonID_EOS_300D, "EOS 300D"}, // Digital Rebel / Kiss Digital |
51 | 0 | { CanonID_EOS_1D_Mark_II, "EOS-1D Mark II"}, |
52 | 0 | { CanonID_EOS_20D, "EOS 20D"}, |
53 | 0 | { CanonID_EOS_450D, "EOS 450D"}, // Digital Rebel XSi / Kiss X2 |
54 | 0 | { CanonID_EOS_1Ds_Mark_II, "EOS-1Ds Mark II"}, |
55 | 0 | { CanonID_EOS_350D, "EOS 350D"}, // Digital Rebel XT / Kiss Digital N |
56 | 0 | { CanonID_EOS_40D, "EOS 40D"}, |
57 | 0 | { CanonID_EOS_5D, "EOS 5D"}, |
58 | 0 | { CanonID_EOS_1Ds_Mark_III, "EOS-1Ds Mark III"}, |
59 | 0 | { CanonID_EOS_5D_Mark_II, "EOS 5D Mark II"}, |
60 | 0 | { CanonID_EOS_1D_Mark_II_N, "EOS-1D Mark II N"}, |
61 | 0 | { CanonID_EOS_30D, "EOS 30D"}, |
62 | 0 | { CanonID_EOS_400D, "EOS 400D"}, // Digital Rebel XTi / Kiss Digital X |
63 | 0 | { CanonID_EOS_7D, "EOS 7D"}, |
64 | 0 | { CanonID_EOS_500D, "EOS 500D"}, // Rebel T1i / Kiss X3 |
65 | 0 | { CanonID_EOS_1000D, "EOS 1000D"}, // Digital Rebel XS / Kiss F |
66 | 0 | { CanonID_EOS_50D, "EOS 50D"}, |
67 | 0 | { CanonID_EOS_1D_X, "EOS-1D X"}, |
68 | 0 | { CanonID_EOS_550D, "EOS 550D"}, // Rebel T2i / Kiss X4 |
69 | 0 | { CanonID_EOS_1D_Mark_IV, "EOS-1D Mark IV"}, |
70 | 0 | { CanonID_EOS_5D_Mark_III, "EOS 5D Mark III"}, |
71 | 0 | { CanonID_EOS_600D, "EOS 600D"}, // Rebel T3i / Kiss X5 |
72 | 0 | { CanonID_EOS_60D, "EOS 60D"}, |
73 | 0 | { CanonID_EOS_1100D, "EOS 1100D"}, // Rebel T3 / Kiss X50 |
74 | 0 | { CanonID_EOS_7D_Mark_II, "EOS 7D Mark II"}, |
75 | 0 | { CanonID_EOS_650D, "EOS 650D"}, // Rebel T4i / Kiss X6i |
76 | 0 | { CanonID_EOS_6D, "EOS 6D"}, |
77 | 0 | { CanonID_EOS_1D_C, "EOS-1D C"}, |
78 | 0 | { CanonID_EOS_70D, "EOS 70D"}, |
79 | 0 | { CanonID_EOS_700D, "EOS 700D"}, // Rebel T5i / Kiss X7i |
80 | 0 | { CanonID_EOS_1200D, "EOS 1200D"}, // Rebel T5 / Kiss X70 / Hi |
81 | 0 | { CanonID_EOS_1D_X_Mark_II, "EOS-1D X Mark II"}, |
82 | 0 | { CanonID_EOS_M, "EOS M"}, |
83 | 0 | { CanonID_EOS_100D, "EOS 100D"}, // Rebel SL1 / Kiss X7 |
84 | 0 | { CanonID_EOS_760D, "EOS 760D"}, // Rebel T6s / 8000D |
85 | 0 | { CanonID_EOS_5D_Mark_IV, "EOS 5D Mark IV"}, |
86 | 0 | { CanonID_EOS_80D, "EOS 80D"}, |
87 | 0 | { CanonID_EOS_M2, "EOS M2"}, |
88 | 0 | { CanonID_EOS_5DS, "EOS 5DS"}, |
89 | 0 | { CanonID_EOS_750D, "EOS 750D"}, // Rebel T6i / Kiss X8i |
90 | 0 | { CanonID_EOS_5DS_R, "EOS 5DS R"}, |
91 | 0 | { CanonID_EOS_1300D, "EOS 1300D"}, // Rebel T6 / Kiss X80 |
92 | 0 | { CanonID_EOS_800D, "EOS 800D"}, // Rebel T7i / Kiss X9i |
93 | 0 | { CanonID_EOS_6D_Mark_II, "EOS 6D Mark II"}, |
94 | 0 | { CanonID_EOS_77D, "EOS 77D"}, // 9000D |
95 | 0 | { CanonID_EOS_200D, "EOS 200D"}, // Rebel SL2 / Kiss X9 |
96 | 0 | { CanonID_EOS_R5, "EOS R5"}, |
97 | 0 | { CanonID_EOS_3000D, "EOS 3000D"}, // Rebel T100 / 4000D |
98 | 0 | { CanonID_EOS_R, "EOS R"}, |
99 | 0 | { CanonID_EOS_1D_X_Mark_III, "EOS-1D X Mark III"}, |
100 | 0 | { CanonID_EOS_1500D, "EOS 1500D"}, // Rebel T7 / 2000D / Kiss X90 |
101 | 0 | { CanonID_EOS_RP, "EOS RP"}, |
102 | 0 | { CanonID_EOS_850D, "EOS 850D"}, // EOS Rebel T8i / X10i |
103 | 0 | { CanonID_EOS_250D, "EOS 250D"}, // Rebel SL3 / 200D II / Kiss X10 |
104 | 0 | { CanonID_EOS_90D, "EOS 90D"}, |
105 | 0 | { CanonID_EOS_R3, "EOS R3"}, |
106 | 0 | { CanonID_EOS_R6, "EOS R6"}, |
107 | 0 | { CanonID_EOS_R7, "EOS R7"}, |
108 | 0 | { CanonID_EOS_R10, "EOS R10"}, |
109 | 0 | { CanonID_EOS_M50_Mark_II, "EOS M50 Mark II"}, // M50m2, Kiss M2 |
110 | 0 | { CanonID_EOS_R50, "EOS R50"}, |
111 | 0 | { CanonID_EOS_R6m2, "EOS R6 Mark II"}, |
112 | 0 | { CanonID_EOS_R8, "EOS R8"}, |
113 | 0 | { CanonID_EOS_R1, "EOS R1"}, |
114 | 0 | { CanonID_EOS_R5_Mark_II, "EOS R5 Mark II"}, // EOS R5m2 |
115 | 0 | { CanonID_EOS_R100, "EOS R100"} |
116 | 0 | }, |
117 | | #if 0 |
118 | | olyque[] = { |
119 | | { OlyID_E_20, "E-20"}, |
120 | | { OlyID_E_20, "E-20,E-20N,E-20P"}, |
121 | | { OlyID_E_1, "E-1"}, |
122 | | { OlyID_E_300, "E-300"}, |
123 | | { OlyID_SP_550UZ, "SP-550UZ"}, |
124 | | { OlyID_SP_550UZ, "SP550UZ"}, |
125 | | { OlyID_SP_510UZ, "SP-510UZ"}, |
126 | | { OlyID_SP_510UZ, "SP510UZ"}, |
127 | | { OlyID_SP_560UZ, "SP-560UZ"}, |
128 | | { OlyID_SP_560UZ, "SP560UZ"}, |
129 | | { OlyID_SP_570UZ, "SP-570UZ"}, |
130 | | { OlyID_SP_570UZ, "SP570UZ"}, |
131 | | { OlyID_SP_565UZ, "SP-565UZ"}, |
132 | | { OlyID_SP_565UZ, "SP565UZ"}, |
133 | | { OlyID_XZ_1, "XZ-1"}, |
134 | | { OlyID_XZ_2, "XZ-2"}, |
135 | | { OlyID_XZ_10, "XZ-10"}, |
136 | | { OlyID_STYLUS_1, "Stylus 1"}, |
137 | | { OlyID_STYLUS_1, "STYLUS1"}, |
138 | | { OlyID_STYLUS_1, "STYLUS1,1s"}, |
139 | | { OlyID_SH_2, "SH-2"}, |
140 | | { OlyID_TG_4, "TG-4"}, |
141 | | { OlyID_TG_5, "TG-5"}, |
142 | | { OlyID_TG_6, "TG-6"}, |
143 | | { OlyID_TG_7, "TG-7"}, |
144 | | { OlyID_E_10, "E-10"}, |
145 | | { OlyID_AIR_A01, "AIR A01"}, |
146 | | { OlyID_AIR_A01, "AIR-A01"}, |
147 | | { OlyID_E_330, "E-330"}, |
148 | | { OlyID_E_500, "E-500"}, |
149 | | { OlyID_E_400, "E-400"}, |
150 | | { OlyID_E_510, "E-510"}, |
151 | | { OlyID_E_3, "E-3"}, |
152 | | { OlyID_E_410, "E-410"}, |
153 | | { OlyID_E_420, "E-420"}, |
154 | | { OlyID_E_30, "E-30"}, |
155 | | { OlyID_E_520, "E-520"}, |
156 | | { OlyID_E_P1, "E-P1"}, |
157 | | { OlyID_E_620, "E-620"}, |
158 | | { OlyID_E_P2, "E-P2"}, |
159 | | { OlyID_E_PL1, "E-PL1"}, |
160 | | { OlyID_E_450, "E-450"}, |
161 | | { OlyID_E_600, "E-600"}, |
162 | | { OlyID_E_P3, "E-P3"}, |
163 | | { OlyID_E_5, "E-5"}, |
164 | | { OlyID_E_PL2, "E-PL2"}, |
165 | | { OlyID_E_M5, "E-M5"}, |
166 | | { OlyID_E_PL3, "E-PL3"}, |
167 | | { OlyID_E_PM1, "E-PM1"}, |
168 | | { OlyID_E_PL1s, "E-PL1s"}, |
169 | | { OlyID_E_PL5, "E-PL5"}, |
170 | | { OlyID_E_PM2, "E-PM2"}, |
171 | | { OlyID_E_P5, "E-P5"}, |
172 | | { OlyID_E_PL6, "E-PL6"}, |
173 | | { OlyID_E_PL7, "E-PL7"}, |
174 | | { OlyID_E_M1, "E-M1"}, |
175 | | { OlyID_E_M10, "E-M10"}, |
176 | | { OlyID_E_M5_Mark_II, "E-M5 Mark II"}, |
177 | | { OlyID_E_M5_Mark_II, "E-M5MarkII"}, |
178 | | { OlyID_E_M5_Mark_II, "E-M5_M2"}, |
179 | | { OlyID_E_M10_Mark_II, "E-M10 Mark II"}, // Clauss piX 5oo |
180 | | { OlyID_E_M10_Mark_II, "E-M10MarkII"}, |
181 | | { OlyID_E_M10_Mark_II, "E-M10_M2"}, |
182 | | { OlyID_PEN_F, "PEN-F"}, |
183 | | { OlyID_E_PL8, "E-PL8"}, |
184 | | { OlyID_E_M1_Mark_II, "E-M1 Mark II"}, |
185 | | { OlyID_E_M1_Mark_II, "E-M1MarkII"}, |
186 | | { OlyID_E_M1_Mark_II, "E-M1_M2"}, |
187 | | { OlyID_E_M10_Mark_III, "E-M10 Mark III"}, |
188 | | { OlyID_E_M10_Mark_III, "E-M10_M3"}, |
189 | | { OlyID_E_PL9, "E-PL9"}, |
190 | | { OlyID_E_M1X, "E-M1X"}, |
191 | | { OlyID_E_PL10, "E-PL10"}, |
192 | | { OlyID_E_M10_Mark_IV, "E-M10 Mark IV"}, |
193 | | { OlyID_E_M10_Mark_IV, "E-M10MarkIV"}, |
194 | | { OlyID_E_M10_Mark_IV, "E-M10_M4"}, |
195 | | { OlyID_E_M5_Mark_III, "E-M5 Mark III"}, |
196 | | { OlyID_E_M5_Mark_III, "E-M5MarkIII"}, |
197 | | { OlyID_E_M5_Mark_III, "E-M5_M3"}, |
198 | | { OlyID_E_M1_Mark_III, "E-M1 Mark III"}, |
199 | | { OlyID_E_M1_Mark_III, "E-M1MarkIII"}, |
200 | | { OlyID_E_M1_Mark_III, "E-M1_M3"}, |
201 | | { OlyID_E_P7 "E-P7"}, |
202 | | { OlyID_C_3030Z, "C-3030Z"}, |
203 | | { OlyID_C_3030Z, "C3030Z"}, |
204 | | { OlyID_C_5050Z, "C-5050Z"}, |
205 | | { OlyID_C_5050Z, "C5050Z"}, |
206 | | { OlyID_C_350Z, "C-350Z"}, |
207 | | { OlyID_C_350Z, "X200,D560Z,C350Z"}, |
208 | | { OlyID_C_740UZ, "C-740UZ"}, |
209 | | { OlyID_C_740UZ, "C740UZ"}, |
210 | | { OlyID_C_5060WZ, "C-5060WZ"}, |
211 | | { OlyID_C_5060WZ, "C5060WZ"}, |
212 | | { OlyID_C_8080WZ, "C-8080WZ"}, |
213 | | { OlyID_C_8080WZ, "C8080WZ"}, |
214 | | { OlyID_C_770UZ, "C-770UZ"}, |
215 | | { OlyID_C_770UZ, "C770UZ"}, |
216 | | { OlyID_C_7070WZ, "C-7070WZ"}, |
217 | | { OlyID_C_7070WZ, "C7070WZ"}, |
218 | | { OlyID_C_7000Z, "C-7000Z"}, |
219 | | { OlyID_C_7000Z, "C70Z,C7000Z"}, |
220 | | { OlyID_SP_500UZ, "SP-500UZ"}, |
221 | | { OlyID_SP_500UZ, "SP500UZ"}, |
222 | | { OlyID_SP_310, "SP-310"}, |
223 | | { OlyID_SP_310, "SP310"}, |
224 | | { OlyID_SP_350, "SP-350"}, |
225 | | { OlyID_SP_350, "SP350"}, |
226 | | { OlyID_SP_320, "SP-320"}, |
227 | | { OlyID_SP_320, "SP320"}, |
228 | | }, |
229 | | |
230 | | penique[] = { |
231 | | { PentaxID_Optio_S, "Optio S"}, |
232 | | { PentaxID_Optio_S_V101, "Optio S V1.01"}, |
233 | | { PentaxID_staristD, "*istD"}, |
234 | | { PentaxID_staristD, "*ist D"}, |
235 | | { PentaxID_Optio_33WR, "Optio 33WR"}, |
236 | | { PentaxID_Optio_S4, "Optio S4"}, |
237 | | { PentaxID_Optio_750Z, "Optio 750Z"}, |
238 | | { PentaxID_staristDS, "*istDS"}, |
239 | | { PentaxID_staristDS, "*ist DS"}, |
240 | | { PentaxID_staristDL, "*istDL"}, |
241 | | { PentaxID_staristDL, "*ist DL"}, |
242 | | { PentaxID_staristDS2, "*istDS2"}, |
243 | | { PentaxID_staristDS2, "*ist DS2"}, |
244 | | { PentaxID_GX_1S, "GX-1S"}, // Samsung |
245 | | { PentaxID_staristDL2, "*istDL2"}, |
246 | | { PentaxID_staristDL2, "*ist DL2"}, |
247 | | { PentaxID_GX_1L, "GX-1L"}, // Samsung |
248 | | { PentaxID_K100D, "K100D"}, |
249 | | { PentaxID_K110D, "K110D"}, |
250 | | { PentaxID_K100D_Super, "K100D Super"}, |
251 | | { PentaxID_K10D, "K10D"}, |
252 | | { PentaxID_GX10, "GX10"}, // Samsung |
253 | | { PentaxID_GX10, "GX-10"}, // Samsung |
254 | | { PentaxID_K20D, "K20D"}, |
255 | | { PentaxID_GX20, "GX20"}, // Samsung |
256 | | { PentaxID_GX20, "GX-20"}, // Samsung |
257 | | { PentaxID_K200D, "K200D"}, |
258 | | { PentaxID_K2000, "K2000"}, |
259 | | { PentaxID_K_m, "K-m"}, |
260 | | { PentaxID_K_7, "K-7"}, |
261 | | { PentaxID_K_x, "K-x"}, |
262 | | { PentaxID_645D, "645D"}, |
263 | | { PentaxID_K_r, "K-r"}, |
264 | | { PentaxID_K_5, "K-5"}, |
265 | | { PentaxID_Q, "Q"}, |
266 | | { PentaxID_K_01, "K-01"}, |
267 | | { PentaxID_K_30, "K-30"}, |
268 | | { PentaxID_Q10, "Q10"}, |
269 | | { PentaxID_K_5_II, "K-5 II"}, |
270 | | { PentaxID_K_5_II_s, "K-5 II s"}, |
271 | | { PentaxID_Q7, "Q7"}, |
272 | | { PentaxID_MX_1, "MX-1"}, |
273 | | { PentaxID_K_50, "K-50"}, |
274 | | { PentaxID_K_3, "K-3"}, |
275 | | { PentaxID_K_500, "K-500"}, |
276 | | { PentaxID_645Z, "645Z"}, |
277 | | { PentaxID_K_S1, "K-S1"}, |
278 | | { PentaxID_K_S2, "K-S2"}, // Ricoh |
279 | | { PentaxID_Q_S1, "Q-S1"}, |
280 | | { PentaxID_K_1, "K-1"}, // Ricoh |
281 | | { PentaxID_K_3_II, "K-3 II"}, // Ricoh |
282 | | { PentaxID_GR_III, "GR III"}, // Ricoh |
283 | | { PentaxID_K_70, "K-70"}, // Ricoh |
284 | | { PentaxID_KF, "KF"}, // Ricoh |
285 | | { PentaxID_KP, "KP"}, // Ricoh |
286 | | { PentaxID_K_1_Mark_II, "K-1 Mark II"}, // Ricoh |
287 | | { PentaxID_K_3_III, "K-3 Mark III"}, // Ricoh |
288 | | { PentaxID_GR_IIIx, "GR IIIx"}, |
289 | | { PentaxID_K_3_III_Mono, "K-3 Mark III Monochrome"}, |
290 | | }, |
291 | | #endif |
292 | 0 | sonique[] = { |
293 | 0 | { SonyID_DSC_R1, "DSC-R1"}, |
294 | 0 | { SonyID_DSLR_A100, "DSLR-A100"}, |
295 | 0 | { SonyID_DSLR_A900, "DSLR-A900"}, |
296 | 0 | { SonyID_DSLR_A700, "DSLR-A700"}, |
297 | 0 | { SonyID_DSLR_A200, "DSLR-A200"}, |
298 | 0 | { SonyID_DSLR_A350, "DSLR-A350"}, |
299 | 0 | { SonyID_DSLR_A300, "DSLR-A300"}, |
300 | 0 | { SonyID_DSLR_A900_APSC, "DSLR-A900"}, |
301 | 0 | { SonyID_DSLR_A380, "DSLR-A380"}, // DSLR-A390 |
302 | 0 | { SonyID_DSLR_A330, "DSLR-A330"}, |
303 | 0 | { SonyID_DSLR_A230, "DSLR-A230"}, |
304 | 0 | { SonyID_DSLR_A290, "DSLR-A290"}, |
305 | 0 | { SonyID_DSLR_A850, "DSLR-A850"}, |
306 | 0 | { SonyID_DSLR_A850_APSC, "DSLR-A850"}, |
307 | 0 | { SonyID_DSLR_A550, "DSLR-A550"}, |
308 | 0 | { SonyID_DSLR_A500, "DSLR-A500"}, |
309 | 0 | { SonyID_DSLR_A450, "DSLR-A450"}, |
310 | 0 | { SonyID_NEX_5, "NEX-5"}, |
311 | 0 | { SonyID_NEX_3, "NEX-3"}, |
312 | 0 | { SonyID_SLT_A33, "SLT-A33"}, |
313 | 0 | { SonyID_SLT_A55, "SLT-A55"}, // SLT-A55V |
314 | 0 | { SonyID_DSLR_A560, "DSLR-A560"}, |
315 | 0 | { SonyID_DSLR_A580, "DSLR-A580"}, |
316 | 0 | { SonyID_NEX_C3, "NEX-C3"}, |
317 | 0 | { SonyID_SLT_A35, "SLT-A35"}, |
318 | 0 | { SonyID_SLT_A65, "SLT-A65"}, // SLT-A65V |
319 | 0 | { SonyID_SLT_A77, "SLT-A77"}, // SLT-A77V |
320 | 0 | { SonyID_NEX_5N, "NEX-5N"}, |
321 | 0 | { SonyID_NEX_7, "NEX-7"}, // Hasselblad Lunar |
322 | 0 | { SonyID_NEX_VG20, "NEX-VG20"}, |
323 | 0 | { SonyID_SLT_A37, "SLT-A37"}, |
324 | 0 | { SonyID_SLT_A57, "SLT-A57"}, |
325 | 0 | { SonyID_NEX_F3, "NEX-F3"}, |
326 | 0 | { SonyID_SLT_A99, "SLT-A99"}, // SLT-A99V / Hasselblad HV |
327 | 0 | { SonyID_NEX_6, "NEX-6"}, |
328 | 0 | { SonyID_NEX_5R, "NEX-5R"}, |
329 | 0 | { SonyID_DSC_RX100, "DSC-RX100"}, // Hasselblad Stellar |
330 | 0 | { SonyID_DSC_RX1, "DSC-RX1"}, |
331 | 0 | { SonyID_NEX_VG900, "NEX-VG900"}, |
332 | 0 | { SonyID_NEX_VG30, "NEX-VG30"}, |
333 | 0 | { SonyID_ILCE_3000, "ILCE-3000"}, // ILCE-3500 |
334 | 0 | { SonyID_SLT_A58, "SLT-A58"}, |
335 | 0 | { SonyID_NEX_3N, "NEX-3N"}, |
336 | 0 | { SonyID_ILCE_7, "ILCE-7"}, |
337 | 0 | { SonyID_NEX_5T, "NEX-5T"}, |
338 | 0 | { SonyID_DSC_RX100M2, "DSC-RX100M2"}, // Hasselblad Stellar II |
339 | 0 | { SonyID_DSC_RX10, "DSC-RX10"}, |
340 | 0 | { SonyID_DSC_RX1R, "DSC-RX1R"}, |
341 | 0 | { SonyID_ILCE_7R, "ILCE-7R"}, // Hasselblad Lusso |
342 | 0 | { SonyID_ILCE_6000, "ILCE-6000"}, |
343 | 0 | { SonyID_ILCE_5000, "ILCE-5000"}, |
344 | 0 | { SonyID_DSC_RX100M3, "DSC-RX100M3"}, |
345 | 0 | { SonyID_ILCE_7S, "ILCE-7S"}, |
346 | 0 | { SonyID_ILCA_77M2, "ILCA-77M2"}, |
347 | 0 | { SonyID_ILCE_5100, "ILCE-5100"}, |
348 | 0 | { SonyID_ILCE_7M2, "ILCE-7M2"}, |
349 | 0 | { SonyID_DSC_RX100M4, "DSC-RX100M4"}, |
350 | 0 | { SonyID_DSC_RX10M2, "DSC-RX10M2"}, |
351 | 0 | { SonyID_DSC_RX1RM2, "DSC-RX1RM2"}, |
352 | 0 | { SonyID_ILCE_QX1, "ILCE-QX1"}, // Sony UMC-R10C |
353 | 0 | { SonyID_ILCE_7RM2, "ILCE-7RM2"}, |
354 | 0 | { SonyID_ILCE_7SM2, "ILCE-7SM2"}, |
355 | 0 | { SonyID_ILCA_68, "ILCA-68"}, |
356 | 0 | { SonyID_ILCA_99M2, "ILCA-99M2"}, |
357 | 0 | { SonyID_DSC_RX10M3, "DSC-RX10M3"}, |
358 | 0 | { SonyID_DSC_RX100M5, "DSC-RX100M5"}, |
359 | 0 | { SonyID_ILCE_6300, "ILCE-6300"}, |
360 | 0 | { SonyID_ILCE_9, "ILCE-9"}, |
361 | 0 | { SonyID_ILCE_6500, "ILCE-6500"}, |
362 | 0 | { SonyID_ILCE_7RM3, "ILCE-7RM3"}, |
363 | 0 | { SonyID_ILCE_7M3, "ILCE-7M3"}, |
364 | 0 | { SonyID_DSC_RX0, "DSC-RX0"}, |
365 | 0 | { SonyID_DSC_RX10M4, "DSC-RX10M4"}, |
366 | 0 | { SonyID_DSC_RX100M6, "DSC-RX100M6"}, |
367 | 0 | { SonyID_DSC_HX99, "DSC-HX99"}, |
368 | 0 | { SonyID_DSC_RX100M5A, "DSC-RX100M5A"}, |
369 | 0 | { SonyID_ILCE_6400, "ILCE-6400"}, |
370 | 0 | { SonyID_DSC_RX0M2, "DSC-RX0M2"}, |
371 | 0 | { SonyID_DSC_HX95, "DSC-HX95"}, |
372 | 0 | { SonyID_DSC_RX100M7, "DSC-RX100M7"}, |
373 | 0 | { SonyID_ILCE_7RM4, "ILCE-7RM4"}, |
374 | 0 | { SonyID_ILCE_9M2, "ILCE-9M2"}, |
375 | 0 | { SonyID_ILCE_6600, "ILCE-6600"}, |
376 | 0 | { SonyID_ILCE_6100, "ILCE-6100"}, |
377 | 0 | { SonyID_ZV_1, "ZV-1"}, |
378 | 0 | { SonyID_ILCE_7C, "ILCE-7C"}, |
379 | 0 | { SonyID_ZV_E10, "ZV-E10"}, |
380 | 0 | { SonyID_ILCE_7SM3, "ILCE-7SM3"}, |
381 | 0 | { SonyID_ILCE_1, "ILCE-1"}, |
382 | 0 | { SonyID_ILCE_1M2, "ILCE-1M2"}, |
383 | 0 | { SonyID_ILME_FX3, "ILME-FX3"}, |
384 | 0 | { SonyID_ILCE_7RM3A, "ILCE-7RM3A"}, |
385 | 0 | { SonyID_ILCE_7RM4A, "ILCE-7RM4A"}, |
386 | 0 | { SonyID_ILCE_7M4, "ILCE-7M4"}, |
387 | | |
388 | | // Sony ZV-1F doesn't save raw |
389 | | // { SonyID_ZV_1F, "ZV-1F"}, |
390 | |
|
391 | 0 | { SonyID_ILCE_7RM5, "ILCE-7RM5"}, |
392 | 0 | { SonyID_ILME_FX30, "ILME-FX30"}, |
393 | 0 | { SonyID_ILCE_9M3, "ILCE-9M3"}, |
394 | 0 | { SonyID_ZV_E1, "ZV-E1"}, |
395 | 0 | { SonyID_ILCE_6700, "ILCE-6700"}, |
396 | 0 | { SonyID_ZV_1M2, "ZV-1M2"}, |
397 | 0 | { SonyID_ILCE_7CR, "ILCE-7CR"}, |
398 | 0 | { SonyID_ILCE_7CM2, "ILCE-7CM2"}, |
399 | 0 | { SonyID_ILX_LR1, "ILX-LR1"}, |
400 | 0 | { SonyID_ZV_E10M2, "ZV-E10M2"}, |
401 | 0 | { SonyID_ILME_FX2, "ILME-FX2"}, |
402 | 0 | }; |
403 | |
|
404 | 0 | static const char *orig; |
405 | |
|
406 | 0 | static const char fujialias[][16] = { |
407 | 0 | "@DBP for GX680", "DX-2000", |
408 | 0 | "@F500EXR", "F505EXR", |
409 | 0 | "@F600EXR", "F605EXR", |
410 | 0 | "@F770EXR", "F775EXR", |
411 | 0 | "@HS10", "HS10 HS11", |
412 | 0 | "@HS20EXR", "HS22EXR", |
413 | 0 | "@HS30EXR", "HS33EXR", "HS35EXR", |
414 | 0 | "@S5100", "S5500", |
415 | 0 | "@S5200", "S5600", |
416 | 0 | "@S6000fd", "S6500fd", |
417 | 0 | "@S9000", "S9500", |
418 | 0 | "@S9100", "S9600", |
419 | 0 | "@S200EXR", "S205EXR", |
420 | 0 | "@X-T1 IR", "X-T1IR", |
421 | 0 | "@GFX 100 II", "GFX100 II", |
422 | 0 | "@GFX 100S II", "GFX100S II", |
423 | 0 | "@GFX 100S", "GFX100S", |
424 | 0 | "@GFX 50S II", "GFX50S II" |
425 | 0 | }; |
426 | |
|
427 | 0 | static const char kodakalias[][16] = { |
428 | 0 | "@DCS Pro 14N", "Camerz ZDS 14", // Camerz rebadge make: "Photo Control" |
429 | 0 | "@DCS720X", "SCS2000", |
430 | 0 | "@DCS520C", "EOS D2000C", "EOS D2000", // EOS rebadge make: Canon |
431 | 0 | "@DCS560C", "EOS D6000C", "EOS D6000", // EOS rebadge make: Canon |
432 | 0 | "@DCS460M", "DCS460A", // 'A' was supposed to stand for 'achromatic', marketing changed it to 'M' |
433 | 0 | "@DCS460", "DCS460C", "DCS460D", |
434 | 0 | "@DCS465", "DCS465C", "DCS465D", |
435 | 0 | "@EOSDCS1", "EOSDCS1B", "EOSDCS1C", |
436 | 0 | "@EOSDCS3", "EOSDCS3B", "EOSDCS3C", |
437 | 0 | }; |
438 | |
|
439 | 0 | static const struct |
440 | 0 | { |
441 | 0 | const char *Kmodel; |
442 | 0 | ushort mount; |
443 | 0 | } Kodak_mounts[] = { |
444 | 0 | {"DCS465", LIBRAW_MOUNT_DigitalBack}, |
445 | 0 | {"DCS5", LIBRAW_MOUNT_Canon_EF}, |
446 | 0 | {"DCS Pro SLR/c", LIBRAW_MOUNT_Canon_EF}, |
447 | 0 | {"DCS", LIBRAW_MOUNT_Nikon_F}, |
448 | 0 | {"EOS", LIBRAW_MOUNT_Canon_EF}, |
449 | 0 | {"NC2000", LIBRAW_MOUNT_Nikon_F}, // AP "News Camera" |
450 | 0 | {"Pixpro S-1", LIBRAW_MOUNT_mFT}, |
451 | 0 | {"ProBack", LIBRAW_MOUNT_DigitalBack}, |
452 | 0 | {"SCS1000", LIBRAW_MOUNT_Canon_EF}, |
453 | 0 | }; |
454 | |
|
455 | 0 | static const char *KodakMonochrome[] = { |
456 | 0 | "DCS420M", "DCS420A", "DCS420I", |
457 | 0 | "DCS460M", "DCS460A", "DCS460I", |
458 | 0 | "DCS465M", "DCS465A", "DCS465I", |
459 | 0 | "DCS560M", "DCS660M", "DCS760M", "EOS D2000M", "EOS D6000M", |
460 | 0 | "EOSDCS1M", "EOSDCS1I", |
461 | 0 | "EOSDCS3M", "EOSDCS3I", |
462 | 0 | "EOSDCS5M", "EOSDCS5I", |
463 | 0 | "NC2000M", "NC2000A", "NC2000I", |
464 | 0 | }; |
465 | |
|
466 | 0 | static const char leafalias[][16] = { |
467 | | // Leaf re-badged to Mamiya |
468 | 0 | "@Aptus-II 5", "DM22", |
469 | 0 | "@Aptus-II 6", "DM28", |
470 | 0 | "@Aptus-II 7", "DM33", |
471 | 0 | "@Aptus-II 8", "DM40", |
472 | 0 | "@Aptus-II 10", "DM56", |
473 | 0 | }; |
474 | |
|
475 | 0 | static const char KonicaMinolta_aliases[][24] = { |
476 | 0 | "@DG-5D", "DYNAX 5D", "MAXXUM 5D", "ALPHA-5 DIGITAL", "ALPHA SWEET DIGITAL", |
477 | 0 | "@DG-7D", "DYNAX 7D", "MAXXUM 7D", "ALPHA-7 DIGITAL", |
478 | 0 | }; |
479 | |
|
480 | 0 | static const char nikonalias[][16] = { |
481 | 0 | "@COOLPIX 2100", "E2100", "@COOLPIX 2500", "E2500", |
482 | 0 | "@COOLPIX 3200", "E3200", "@COOLPIX 3700", "E3700", |
483 | 0 | "@COOLPIX 4300", "E4300", "@COOLPIX 4500", "E4500", |
484 | 0 | "@COOLPIX 5000", "E5000", "@COOLPIX 5400", "E5400", |
485 | 0 | "@COOLPIX 5700", "E5700", "@COOLPIX 8400", "E8400", |
486 | 0 | "@COOLPIX 8700", "E8700", "@COOLPIX 8800", "E8800", |
487 | 0 | "@COOLPIX 700", "E700", "@COOLPIX 800", "E800", |
488 | 0 | "@COOLPIX 880", "E880", "@COOLPIX 900", "E900", |
489 | 0 | "@COOLPIX 950", "E950", "@COOLPIX 990", "E990", |
490 | 0 | "@COOLPIX 995", "E995", "@COOLPIX P7700", "COOLPIX Deneb", |
491 | 0 | "@COOLPIX P7800", "COOLPIX Kalon", |
492 | 0 | }; |
493 | |
|
494 | 0 | static const char olyalias[][32] = { // Olympus |
495 | 0 | "@AIR A01", "AIR-A01", |
496 | 0 | "@C-3030Z", "C3030Z", |
497 | 0 | "@C-5050Z", "C5050Z", |
498 | 0 | "@C-5060WZ", "C5060WZ", |
499 | 0 | "@C-7000Z", "C7000Z", "C70Z,C7000Z", "C70Z", |
500 | 0 | "@C-7070WZ", "C7070WZ", |
501 | 0 | "@C-8080WZ", "C8080WZ", |
502 | 0 | "@C-350Z", "C350Z", "X200,D560Z,C350Z", "X200", "D560Z", |
503 | 0 | "@C-740UZ", "C740UZ", |
504 | 0 | "@C-770UZ", "C770UZ", |
505 | 0 | "@E-20", "E-20,E-20N,E-20P", "E-20N", "E-20P", |
506 | 0 | "@E-M10 Mark II", "E-M10MarkII", "E-M10_M2", "piX 5oo", |
507 | 0 | "@E-M10 Mark III", "E-M10MarkIII", "E-M10_M3", |
508 | 0 | "@E-M10 Mark IV", "E-M10MarkIV", "E-M10_M4", |
509 | 0 | "@E-M1 Mark II", "E-M1MarkII", "E-M1_M2", |
510 | 0 | "@E-M1 Mark III", "E-M1MarkIII", "E-M1_M3", |
511 | 0 | "@E-M5 Mark II", "E-M5MarkII", "E-M5_M2", |
512 | 0 | "@E-M5 Mark III", "E-M5MarkIII", "E-M5_M3", |
513 | 0 | "@OM-1 Mark II", "OM-1MarkII", "OM-1_M2", |
514 | 0 | "@SH-2", "SH-3", |
515 | 0 | "@SP-310", "SP310", |
516 | 0 | "@SP-320", "SP320", |
517 | 0 | "@SP-350", "SP350", |
518 | 0 | "@SP-500UZ", "SP500UZ", |
519 | 0 | "@SP-510UZ", "SP510UZ", |
520 | 0 | "@SP-550UZ", "SP550UZ", |
521 | 0 | "@SP-560UZ", "SP560UZ", |
522 | 0 | "@SP-565UZ", "SP565UZ", |
523 | 0 | "@SP-570UZ", "SP570UZ", |
524 | 0 | "@Stylus 1", "STYLUS1", "STYLUS1s", "STYLUS1,1s", |
525 | 0 | }; |
526 | |
|
527 | 0 | static const char panalias[][16] = { // Panasonic, PanaLeica |
528 | | // fixed lens |
529 | 0 | "@DMC-FX150", "DMC-FX180", |
530 | 0 | "@DC-FZ1000M2", "DC-FZ10002", "V-Lux 5", |
531 | 0 | "@DMC-FZ1000", "V-LUX (Typ 114)", |
532 | 0 | "@DMC-FZ2500", "DMC-FZ2000", "DMC-FZH1", |
533 | 0 | "@DMC-FZ100", "V-LUX 2", |
534 | 0 | "@DMC-FZ150", "V-LUX 3", |
535 | 0 | "@DMC-FZ200", "V-LUX 4", |
536 | 0 | "@DMC-FZ300", "DMC-FZ330", |
537 | 0 | "@DMC-FZ35", "DMC-FZ38", |
538 | 0 | "@DMC-FZ40", "DMC-FZ42", "DMC-FZ45", "DC-FZ40", "DC-FZ42", "DC-FZ45", |
539 | 0 | "@DMC-FZ50", "V-LUX 1", "V-LUX1", |
540 | 0 | "@DMC-FZ70", "DMC-FZ72", |
541 | 0 | "@DC-FZ80", "DC-FZ81", "DC-FZ82", "DC-FZ83", "DC-FZ85", |
542 | 0 | "@DMC-LC1", "DIGILUX 2", "Digilux 2", "DIGILUX2", |
543 | 0 | "@DMC-LF1", "C (Typ 112)", |
544 | 0 | "@DC-LX100M2", "D-Lux 7", |
545 | 0 | "@DMC-LX100", "D-LUX (Typ 109)", "D-Lux (Typ 109)", |
546 | 0 | "@DMC-LX1", "D-Lux2", "D-LUX2", "D-LUX 2", |
547 | 0 | "@DMC-LX2", "D-LUX 3", "D-LUX3", |
548 | 0 | "@DMC-LX3", "D-LUX 4", |
549 | 0 | "@DMC-LX5", "D-LUX 5", |
550 | 0 | "@DMC-LX7", "D-LUX 6", |
551 | 0 | "@DMC-LX9", "DMC-LX10", "DMC-LX15", |
552 | 0 | "@DMC-ZS100", "DMC-ZS110", "DMC-TZ100", "DMC-TZ101", "DMC-TZ110", "DMC-TX1", |
553 | 0 | "@DC-ZS200", "DC-ZS220", "DC-TZ200", "DC-TZ202", "DC-TZ220", "DC-TZ200D", "DC-TZ202D", "DC-TZ220D", "DC-ZS200D", "DC-ZS220D" "DC-TX2", "C-Lux", "CAM-DC25", |
554 | 0 | "@DMC-ZS40", "DMC-TZ60", "DMC-TZ61", |
555 | 0 | "@DMC-ZS50", "DMC-TZ70", "DMC-TZ71", |
556 | 0 | "@DMC-ZS60", "DMC-TZ80", "DMC-TZ81", "DMC-TZ82", "DMC-TZ85", |
557 | 0 | "@DC-ZS70", "DC-TZ90", "DC-TZ91", "DC-TZ92", "DC-TZ93", |
558 | 0 | "@DC-ZS80", "DC-TZ95", "DC-TZ96", "DC-TZ97", |
559 | | |
560 | | // interchangeable lens |
561 | 0 | "@DC-G100", "DC-G110", |
562 | 0 | "@DC-G99", "DC-G90", "DC-G91", "DC-G95", |
563 | 0 | "@DMC-G7", "DMC-G70", |
564 | 0 | "@DMC-G8", "DMC-G80", "DMC-G81", "DMC-G85", |
565 | 0 | "@DMC-GH4", "AG-GH4", "CGO4", |
566 | 0 | "@DC-GF10", "DC-GF90", "DC-GX880", |
567 | 0 | "@DC-GF9", "DC-GX850", "DC-GX800", |
568 | 0 | "@DMC-GM1", "DMC-GM1S", |
569 | 0 | "@DMC-GX85", "DMC-GX80", "DMC-GX7MK2", |
570 | 0 | "@DC-GX9", "DC-GX7MK3", |
571 | 0 | "@DMC-L1", "DIGILUX 3", "DIGILUX3", // full 4/3 mount, not m43 |
572 | 0 | }; |
573 | |
|
574 | 0 | static const char phase1alias[][16] = { |
575 | 0 | "@H20", "H 20", |
576 | 0 | "@H25", "H 25", |
577 | 0 | "@P20+", "P 20+", |
578 | 0 | "@P20", "P 20", |
579 | 0 | "@P21+", "P 21+", "M18", // "Mamiya M18" |
580 | 0 | "@P21", "P 21", |
581 | 0 | "@P25+", "P 25+", "M22", // "Mamiya M22" |
582 | 0 | "@P25", "P 25", |
583 | 0 | "@P30+", "P 30+", "M31", // "Mamiya M31" |
584 | 0 | "@P30", "P 30", |
585 | 0 | "@P40+", "P 40+", |
586 | 0 | "@P40", "P 40", |
587 | 0 | "@P45+", "P 45+", |
588 | 0 | "@P45", "P 45", |
589 | 0 | "@P65+", "P 65+", |
590 | 0 | "@P65", "P 65", |
591 | 0 | }; |
592 | |
|
593 | 0 | static const char SamsungPentax_aliases[][16] = { |
594 | 0 | "@*istDL2", "*ist DL2", "GX-1L", |
595 | 0 | "@*istDS2", "*ist DS2", "GX-1S", |
596 | 0 | "@*istDL", "*ist DL", |
597 | 0 | "@*istDS", "*ist DS", |
598 | 0 | "@*istD", "*ist D", |
599 | 0 | "@K10D", "GX10", "GX-10", |
600 | 0 | "@K20D", "GX20", "GX-20", |
601 | 0 | "@K-m", "K2000", |
602 | 0 | }; |
603 | |
|
604 | 0 | static const char samsungalias[][64] = { |
605 | 0 | "@EX1", "TL500", |
606 | 0 | "@NX U", "EK-GN100", "EK-GN110", "EK-GN120", "EK-KN120", "Galaxy NX", |
607 | 0 | "@NX mini", "NXF1", |
608 | 0 | "@WB2000", "TL350", |
609 | | // "@WB5000", "WB5000/HZ25W", // no spaces around the slash separating names |
610 | | // "@WB5500", "WB5500 / VLUU WB5500 / SAMSUNG HZ50W", |
611 | | // "@WB500", "WB510 / VLUU WB500 / SAMSUNG HZ10W", |
612 | | // "@WB550", "WB560 / VLUU WB550 / SAMSUNG HZ15W", |
613 | | // "@WB650", "SAMSUNG WB650 / VLUU WB650 / SAMSUNG WB660" aka HZ35W |
614 | 0 | }; |
615 | | |
616 | | //clang-format on |
617 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_VLUU)) { |
618 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Samsung); |
619 | 0 | } |
620 | |
|
621 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Samsung) && |
622 | 0 | (ilm.CameraMount == LIBRAW_MOUNT_Pentax_K)) { |
623 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Pentax); |
624 | |
|
625 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Unknown)) { |
626 | 0 | if (strcasestr(model, "Google")) { |
627 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Google); |
628 | 0 | } |
629 | | #ifdef USE_6BY9RPI |
630 | | else if(strcasestr(make,"RaspberryPi")) |
631 | | setMakeFromIndex(LIBRAW_CAMERAMAKER_RaspberryPi); |
632 | | #endif |
633 | 0 | } |
634 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Hasselblad) && is_Sony) |
635 | 0 | { |
636 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Sony); |
637 | 0 | } |
638 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_OmDigital)) |
639 | 0 | { |
640 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Olympus); |
641 | 0 | } |
642 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Clauss) && (OlyID == OlyID_E_M10_Mark_II)) |
643 | 0 | { |
644 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Olympus); |
645 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Canon) && |
646 | 0 | (!strncmp(model, "EOS D2000", 9) || // don't use unique_id here |
647 | 0 | !strncmp(model, "EOS D6000", 9) || // because ids for Monochrome models are unknown |
648 | 0 | !strncmp(model, "EOSDCS", 6))) { |
649 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Kodak); |
650 | | // if (unique_id == CanonID_EOS_D2000C) { |
651 | | // |
652 | | // } else if (unique_id == CanonID_EOS_D6000C) { |
653 | | /// |
654 | | // } |
655 | |
|
656 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_PhotoControl) && |
657 | 0 | !strncasecmp(model, "Camerz ZDS 14", 13)) { |
658 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Kodak); |
659 | |
|
660 | 0 | } else { |
661 | 0 | strcpy(normalized_make, make); |
662 | 0 | } |
663 | |
|
664 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Apple)) { |
665 | 0 | if ((imgdata.color.UniqueCameraModel[0]) && |
666 | 0 | (!strncmp(model, "iPad", 4) || !strncmp(model, "iPhone", 6))) |
667 | 0 | strcpy(model, imgdata.color.UniqueCameraModel); |
668 | |
|
669 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Kodak)) { |
670 | 0 | if ((model[6] == ' ') && |
671 | 0 | (!strncmp(model, "DCS4", 4) || |
672 | 0 | !strncmp(model, "NC2000", 6))) |
673 | 0 | { |
674 | 0 | model[6] = 0; |
675 | 0 | } |
676 | 0 | if ((model[6] != 'A') && |
677 | 0 | (model[6] != 'I') && |
678 | 0 | (model[6] != 'M') && |
679 | 0 | !strncmp(model, "NC2000", 6)) |
680 | 0 | { |
681 | 0 | model[6] = 0; |
682 | 0 | } |
683 | 0 | } |
684 | | |
685 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Ricoh) && |
686 | 0 | !strncmp(model, "GXR", 3)) { |
687 | 0 | strcpy(ilm.body, "Ricoh GXR"); |
688 | 0 | if (!imgdata.lens.Lens[0] && imgdata.color.UniqueCameraModel[0]) { |
689 | 0 | strcpy (imgdata.lens.Lens, imgdata.color.UniqueCameraModel); |
690 | 0 | remove_caseSubstr (imgdata.lens.Lens, (char *)"Ricoh"); |
691 | 0 | remove_caseSubstr (imgdata.lens.Lens, (char *)"Lens"); |
692 | 0 | removeExcessiveSpaces (imgdata.lens.Lens); |
693 | 0 | } |
694 | 0 | if (ilm.LensID == LIBRAW_LENS_NOT_SET) { |
695 | 0 | if (strstr(imgdata.lens.Lens, "50mm")) |
696 | 0 | ilm.LensID = 1; |
697 | 0 | else if (strstr(imgdata.lens.Lens, "S10")) |
698 | 0 | ilm.LensID = 2; |
699 | 0 | else if (strstr(imgdata.lens.Lens, "P10")) |
700 | 0 | ilm.LensID = 3; |
701 | 0 | else if (strstr(imgdata.lens.Lens, "28mm")) |
702 | 0 | ilm.LensID = 5; |
703 | 0 | else if (strstr(imgdata.lens.Lens, "A16")) |
704 | 0 | ilm.LensID = 6; |
705 | 0 | } |
706 | 0 | switch (ilm.LensID) { |
707 | 0 | case 1: // GR Lens A12 50mm F2.5 Macro |
708 | 0 | strcpy(model, "GXR A12 50mm"); |
709 | 0 | ilm.CameraFormat = ilm.LensFormat = LIBRAW_FORMAT_APSC; |
710 | 0 | ilm.CameraMount = LIBRAW_MOUNT_RicohModule; |
711 | 0 | ilm.LensMount = LIBRAW_MOUNT_FixedLens; |
712 | 0 | ilm.FocalType = LIBRAW_FT_PRIME_LENS; |
713 | 0 | break; |
714 | 0 | case 2: |
715 | 0 | strcpy(model, "GXR S10"); |
716 | 0 | ilm.CameraFormat = ilm.LensFormat = LIBRAW_FORMAT_1div1p7INCH; |
717 | 0 | ilm.CameraMount = LIBRAW_MOUNT_RicohModule; |
718 | 0 | ilm.LensMount = LIBRAW_MOUNT_FixedLens; |
719 | 0 | ilm.FocalType = LIBRAW_FT_ZOOM_LENS; |
720 | 0 | break; |
721 | 0 | case 3: // Ricoh Lens P10 28-300mm F3.5-5.6 VC |
722 | 0 | strcpy(model, "GXR P10"); |
723 | 0 | ilm.CameraFormat = ilm.LensFormat = LIBRAW_FORMAT_1div2p3INCH; |
724 | 0 | ilm.CameraMount = LIBRAW_MOUNT_RicohModule; |
725 | 0 | ilm.LensMount = LIBRAW_MOUNT_FixedLens; |
726 | 0 | ilm.FocalType = LIBRAW_FT_ZOOM_LENS; |
727 | 0 | break; |
728 | 0 | case 5: // GR Lens A12 28mm F2.5 |
729 | 0 | strcpy(model, "GXR A12 28mm"); |
730 | 0 | ilm.CameraFormat = ilm.LensFormat = LIBRAW_FORMAT_APSC; |
731 | 0 | ilm.CameraMount = LIBRAW_MOUNT_RicohModule; |
732 | 0 | ilm.LensMount = LIBRAW_MOUNT_FixedLens; |
733 | 0 | ilm.FocalType = LIBRAW_FT_PRIME_LENS; |
734 | 0 | break; |
735 | 0 | case 6: // Ricoh Lens A16 24-85mm F3.5-5.5 |
736 | 0 | strcpy(model, "GXR A16"); |
737 | 0 | ilm.CameraFormat = ilm.LensFormat = LIBRAW_FORMAT_APSC; |
738 | 0 | ilm.CameraMount = LIBRAW_MOUNT_RicohModule; |
739 | 0 | ilm.LensMount = LIBRAW_MOUNT_FixedLens; |
740 | 0 | ilm.FocalType = LIBRAW_FT_ZOOM_LENS; |
741 | 0 | break; |
742 | 0 | case 8: // Ricoh Mount A12 (Leica M lenses) |
743 | 0 | strcpy(model, "GXR Mount A12"); |
744 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
745 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Leica_M; |
746 | 0 | ilm.LensID = LIBRAW_LENS_NOT_SET; |
747 | 0 | break; |
748 | 0 | } |
749 | 0 | } |
750 | | |
751 | 0 | strcpy(normalized_model, model); |
752 | |
|
753 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Canon)) |
754 | 0 | { |
755 | 0 | if (unique_id) |
756 | 0 | { |
757 | 0 | if ((unique_id != CanonID_EOS_D2000C) && |
758 | 0 | (unique_id != CanonID_EOS_D6000C)) |
759 | 0 | { |
760 | 0 | for (i = 0; i < int(sizeof unique / sizeof *unique); i++) |
761 | 0 | { |
762 | 0 | if (unique_id == unique[i].id) |
763 | 0 | { |
764 | 0 | if (!strcmp(model, "EOS Ra")) { |
765 | 0 | strcpy(normalized_model, model); |
766 | 0 | } else { |
767 | 0 | strcpy(model, unique[i].t_model); |
768 | 0 | strcpy(normalized_model, unique[i].t_model); |
769 | 0 | } |
770 | 0 | break; |
771 | 0 | } |
772 | 0 | } |
773 | 0 | } |
774 | 0 | } |
775 | 0 | else |
776 | 0 | { |
777 | 0 | if ((dng_version) && |
778 | 0 | (strlen(imgdata.color.UniqueCameraModel) > 6) && |
779 | 0 | strncmp(imgdata.color.UniqueCameraModel+6, "PowerShot", 9)) |
780 | 0 | { |
781 | 0 | if (!strcmp(model, "EOS Ra")) { |
782 | 0 | ilm.CamID = unique_id = CanonID_EOS_R; |
783 | 0 | strcpy(normalized_model, model); |
784 | | // try_xml = 1; // ?? |
785 | 0 | } else { |
786 | 0 | for (i = 0; i < int(sizeof unique / sizeof *unique); i++) |
787 | 0 | { |
788 | 0 | if (!strcmp(unique[i].t_model, imgdata.color.UniqueCameraModel+6)) |
789 | 0 | { |
790 | 0 | ilm.CamID = unique_id = unique[i].id; |
791 | 0 | strcpy(normalized_model, unique[i].t_model); |
792 | 0 | try_xml = 1; |
793 | 0 | break; |
794 | 0 | } |
795 | 0 | } |
796 | 0 | } |
797 | 0 | } |
798 | 0 | } |
799 | 0 | } |
800 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Fujifilm)) |
801 | 0 | { |
802 | 0 | for (i = 0; i < int(sizeof fujialias / sizeof *fujialias); i++) |
803 | 0 | { |
804 | 0 | if (fujialias[i][0] == '@') |
805 | 0 | { |
806 | 0 | orig = fujialias[i] + 1; |
807 | 0 | if (!strcmp(model, orig)) break; |
808 | 0 | } |
809 | 0 | else if (!strcmp(model, fujialias[i])) |
810 | 0 | { |
811 | 0 | strcpy(normalized_model, orig); |
812 | 0 | break; |
813 | 0 | } |
814 | 0 | } |
815 | |
|
816 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Hasselblad)) { |
817 | 0 | parseHassyModel(); |
818 | 0 | } |
819 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Mamiya)) |
820 | 0 | { |
821 | 0 | for (i = 0; i < int(sizeof phase1alias / sizeof *phase1alias); i++) |
822 | 0 | { // re-badged Phase One backs |
823 | 0 | if (phase1alias[i][0] == '@') orig = phase1alias[i] + 1; |
824 | 0 | else if (!strcmp(model, phase1alias[i])) |
825 | 0 | { |
826 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_PhaseOne); |
827 | 0 | strcpy(normalized_model, orig); |
828 | 0 | break; |
829 | 0 | } |
830 | 0 | } |
831 | 0 | for (i = 0; i < int(sizeof leafalias / sizeof *leafalias); i++) |
832 | 0 | { // re-badged Leaf backs |
833 | 0 | if (leafalias[i][0] == '@') orig = leafalias[i] + 1; |
834 | 0 | else if (!strcmp(model, leafalias[i])) |
835 | 0 | { |
836 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Leaf); |
837 | 0 | strcpy(normalized_model, orig); |
838 | 0 | break; |
839 | 0 | } |
840 | 0 | } |
841 | | |
842 | | /* repeating, because make for some Mamiya re-badged Leaf backs is set to |
843 | | * Leaf */ |
844 | 0 | } |
845 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Leaf)) |
846 | 0 | { |
847 | 0 | for (i = 0; i < int(sizeof leafalias / sizeof *leafalias); i++) |
848 | 0 | { // re-badged Leaf backs |
849 | 0 | if (leafalias[i][0] == '@') |
850 | 0 | { |
851 | 0 | orig = leafalias[i] + 1; |
852 | 0 | if (!strcmp(model, orig)) break; |
853 | 0 | } |
854 | 0 | else if (!strcmp(model, leafalias[i])) |
855 | 0 | { // maybe to change regular "make" to "Mamiya" too |
856 | 0 | strcpy(normalized_model, orig); |
857 | 0 | break; |
858 | 0 | } |
859 | 0 | } |
860 | 0 | if ((ps = strchr(normalized_model, '('))) |
861 | 0 | *ps = 0; |
862 | 0 | } |
863 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Minolta) || |
864 | 0 | makeIs(LIBRAW_CAMERAMAKER_Konica)) |
865 | 0 | { |
866 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Konica) && !strncasecmp(model, "DiMAGE", 6)) |
867 | 0 | { |
868 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Minolta); |
869 | 0 | strcpy(make, "Minolta"); |
870 | 0 | } |
871 | 0 | else |
872 | 0 | { |
873 | 0 | for (i = 0; |
874 | 0 | i<int(sizeof KonicaMinolta_aliases / sizeof *KonicaMinolta_aliases); |
875 | 0 | i++) |
876 | 0 | { |
877 | 0 | if (KonicaMinolta_aliases[i][0] == '@') |
878 | 0 | { |
879 | 0 | orig = KonicaMinolta_aliases[i] + 1; |
880 | 0 | if (!strcmp(model, orig)) |
881 | 0 | { |
882 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Minolta); |
883 | 0 | strcpy(make, "Minolta"); |
884 | 0 | break; |
885 | 0 | } |
886 | 0 | } |
887 | 0 | else if (!strcasecmp(model, KonicaMinolta_aliases[i])) |
888 | 0 | { |
889 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Minolta); |
890 | 0 | strcpy(make, "Minolta"); |
891 | 0 | strcpy(normalized_model, orig); |
892 | 0 | break; |
893 | 0 | } |
894 | 0 | } |
895 | 0 | } |
896 | 0 | } |
897 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Nikon)) |
898 | 0 | { |
899 | 0 | for (i = 0; i < int(sizeof nikonalias / sizeof *nikonalias); i++) |
900 | 0 | { |
901 | 0 | if (nikonalias[i][0] == '@') |
902 | 0 | { |
903 | 0 | orig = nikonalias[i] + 1; |
904 | 0 | if (!strcmp(model, orig)) break; |
905 | 0 | } |
906 | 0 | else if (!strcmp(model, nikonalias[i])) |
907 | 0 | { |
908 | 0 | strcpy(normalized_model, orig); |
909 | 0 | break; |
910 | 0 | } |
911 | 0 | } |
912 | |
|
913 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Olympus)) { |
914 | 0 | for (i = 0; i < int(sizeof olyalias / sizeof *olyalias); i++) { |
915 | 0 | if (olyalias[i][0] == '@') { |
916 | 0 | orig = olyalias[i] + 1; |
917 | 0 | if (!strcmp(model, orig)) break; |
918 | 0 | } else if (!strcmp(model, olyalias[i])) { |
919 | 0 | strcpy(normalized_model, orig); |
920 | 0 | break; |
921 | 0 | } |
922 | 0 | } |
923 | |
|
924 | 0 | if (!OlyID) { |
925 | 0 | if (!strcmp(normalized_model, "C-740UZ")) { |
926 | 0 | ilm.CamID = OlyID = unique_id = OlyID_C_740UZ; |
927 | |
|
928 | 0 | } else if (!strcmp(normalized_model, "C-770UZ")) { |
929 | 0 | ilm.CamID = OlyID = unique_id = OlyID_C_770UZ; |
930 | 0 | } |
931 | 0 | } |
932 | |
|
933 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Panasonic) || |
934 | 0 | makeIs(LIBRAW_CAMERAMAKER_Leica) || |
935 | 0 | makeIs(LIBRAW_CAMERAMAKER_Yuneec)) |
936 | 0 | { |
937 | 0 | for (i = 0; i < int(sizeof panalias / sizeof *panalias); i++) |
938 | 0 | { |
939 | 0 | if (panalias[i][0] == '@') |
940 | 0 | { |
941 | 0 | orig = panalias[i] + 1; |
942 | 0 | if (!strcmp(model, orig)) break; |
943 | 0 | } |
944 | 0 | else if (!strcmp(model, panalias[i])) |
945 | 0 | { |
946 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Panasonic); |
947 | 0 | strcpy(normalized_model, orig); |
948 | 0 | break; |
949 | 0 | } |
950 | 0 | } |
951 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Pentax)) { |
952 | 0 | if (!unique_id) { |
953 | 0 | if (!strcmp(model, "Optio S")) { |
954 | 0 | ilm.CamID = unique_id = PentaxID_Optio_S; |
955 | 0 | } else if (!strcmp(model, "Optio S V1.01")) { |
956 | 0 | ilm.CamID = unique_id = PentaxID_Optio_S_V101; |
957 | 0 | } else if (!strcmp(model, "Optio S4")) { |
958 | 0 | ilm.CamID = unique_id = PentaxID_Optio_S4; |
959 | 0 | } else if (!strcmp(model, "Optio 750Z")) { |
960 | 0 | ilm.CamID = unique_id = PentaxID_Optio_750Z; |
961 | 0 | } else if (!strcmp(model, "Optio 33WR")) { |
962 | 0 | ilm.CamID = unique_id = PentaxID_Optio_33WR; |
963 | 0 | } |
964 | 0 | } |
965 | |
|
966 | 0 | for (i = 0; |
967 | 0 | i < int(sizeof SamsungPentax_aliases / sizeof *SamsungPentax_aliases); |
968 | 0 | i++) { |
969 | 0 | if (SamsungPentax_aliases[i][0] == '@') { |
970 | 0 | orig = SamsungPentax_aliases[i] + 1; |
971 | 0 | if (!strcmp(model, orig)) break; |
972 | 0 | } else if (!strcmp(model, SamsungPentax_aliases[i])) { |
973 | 0 | strcpy(normalized_model, orig); |
974 | 0 | break; |
975 | 0 | } |
976 | 0 | } |
977 | 0 | if (!strncmp(model, "GR", 2)) { |
978 | 0 | setMakeFromIndex(LIBRAW_CAMERAMAKER_Ricoh); |
979 | 0 | strcpy(make, "Ricoh"); |
980 | 0 | } |
981 | |
|
982 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_PhaseOne)) |
983 | 0 | { |
984 | 0 | for (i = 0; i < int(sizeof phase1alias / sizeof *phase1alias); i++) |
985 | 0 | { |
986 | 0 | if (phase1alias[i][0] == '@') |
987 | 0 | { |
988 | 0 | orig = phase1alias[i] + 1; |
989 | 0 | if (!strcmp(model, orig)) break; |
990 | 0 | } |
991 | 0 | else if (!strcmp(model, phase1alias[i])) |
992 | 0 | { |
993 | 0 | strcpy(normalized_model, orig); |
994 | 0 | break; |
995 | 0 | } |
996 | 0 | } |
997 | 0 | if (strstr(imPhaseOne.FirmwareString, "Achromatic")) |
998 | 0 | { |
999 | 0 | colors = 1; |
1000 | 0 | filters = 0; |
1001 | 0 | } |
1002 | 0 | } |
1003 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Samsung)) |
1004 | 0 | { |
1005 | 0 | j = 0; |
1006 | 0 | if (strstr(model, "WB5500") || strstr(model, "HZ50W")) |
1007 | 0 | { |
1008 | 0 | strcpy(model, "WB5500"); |
1009 | 0 | j++; |
1010 | 0 | } |
1011 | 0 | else if (strstr(model, "WB5000") || strstr(model, "HZ25W")) |
1012 | 0 | { |
1013 | 0 | strcpy(model, "WB5000"); |
1014 | 0 | j++; |
1015 | 0 | } |
1016 | 0 | else if (strstr(model, "WB550") || strstr(model, "HZ15W")) |
1017 | 0 | { |
1018 | 0 | strcpy(model, "WB550"); |
1019 | 0 | j++; |
1020 | 0 | } |
1021 | 0 | else if (strstr(model, "WB500") || strstr(model, "HZ10W")) |
1022 | 0 | { |
1023 | 0 | strcpy(model, "WB500"); |
1024 | 0 | j++; |
1025 | 0 | } |
1026 | 0 | if (j) |
1027 | 0 | { |
1028 | 0 | strcpy(normalized_model, model); |
1029 | 0 | } |
1030 | 0 | else |
1031 | 0 | { |
1032 | 0 | for (i = 0; i < int(sizeof samsungalias / sizeof *samsungalias); i++) |
1033 | 0 | { |
1034 | 0 | if (samsungalias[i][0] == '@') |
1035 | 0 | { |
1036 | 0 | orig = samsungalias[i] + 1; |
1037 | 0 | if (!strcmp(model, orig)) break; |
1038 | 0 | } |
1039 | 0 | else if (!strcmp(model, samsungalias[i])) |
1040 | 0 | { |
1041 | 0 | strcpy(normalized_model, orig); |
1042 | 0 | break; |
1043 | 0 | } |
1044 | 0 | } |
1045 | 0 | } |
1046 | |
|
1047 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Sony)) { |
1048 | 0 | if (unique_id) |
1049 | 0 | { |
1050 | 0 | for (i = 0; i < int(sizeof sonique / sizeof *sonique); i++) |
1051 | 0 | { |
1052 | 0 | if (unique_id == sonique[i].id) |
1053 | 0 | { |
1054 | 0 | if (!strcmp(make, "Sony")) |
1055 | 0 | strcpy(model, sonique[i].t_model); |
1056 | 0 | strcpy(normalized_model, sonique[i].t_model); |
1057 | 0 | break; |
1058 | 0 | } |
1059 | 0 | } |
1060 | 0 | } |
1061 | | |
1062 | | /* |
1063 | | char pgroup9050 = '-'; |
1064 | | char cameratype[16] = "unknown"; |
1065 | | switch (imSony.CameraType) { |
1066 | | case LIBRAW_SONY_DSC: strcpy(cameratype, "DSC"); break; |
1067 | | case LIBRAW_SONY_DSLR: strcpy(cameratype, "DSLR"); break; |
1068 | | case LIBRAW_SONY_NEX: strcpy(cameratype, "NEX"); break; |
1069 | | case LIBRAW_SONY_SLT: strcpy(cameratype, "SLT"); break; |
1070 | | case LIBRAW_SONY_ILCE: strcpy(cameratype, "ILCE"); break; |
1071 | | case LIBRAW_SONY_ILCA: strcpy(cameratype, "ILCA"); break; |
1072 | | } |
1073 | | switch (imSony.group9050) { |
1074 | | case LIBRAW_SONY_Tag9050a: |
1075 | | pgroup9050 = 'a'; |
1076 | | break; |
1077 | | case LIBRAW_SONY_Tag9050b: |
1078 | | pgroup9050 = 'b'; |
1079 | | break; |
1080 | | case LIBRAW_SONY_Tag9050c: |
1081 | | pgroup9050 = 'c'; |
1082 | | break; |
1083 | | case LIBRAW_SONY_Tag9050d: |
1084 | | pgroup9050 = 'd'; |
1085 | | break; |
1086 | | } |
1087 | | printf("catchme\t%s\t%s\t%s\t9050%c\t%d\t%d\n", |
1088 | | model, normalized_model, cameratype, pgroup9050, imSony.len_group9050, imSony.FileFormat); |
1089 | | */ |
1090 | |
|
1091 | 0 | } else if (makeIs(LIBRAW_CAMERAMAKER_Kodak)) { |
1092 | 0 | remove_caseSubstr (normalized_model, (char *)"EasyShare"); |
1093 | 0 | remove_caseSubstr (normalized_model, (char *)"ZOOM"); |
1094 | 0 | removeExcessiveSpaces (normalized_model); |
1095 | 0 | for (i = 0; i < int(sizeof kodakalias / sizeof *kodakalias); i++) |
1096 | 0 | { |
1097 | 0 | if (kodakalias[i][0] == '@') |
1098 | 0 | { |
1099 | 0 | orig = kodakalias[i] + 1; |
1100 | 0 | if (!strcmp(model, orig)) break; |
1101 | 0 | } |
1102 | 0 | else if (!strcmp(model, kodakalias[i])) |
1103 | 0 | { |
1104 | 0 | strcpy(normalized_model, orig); |
1105 | 0 | break; |
1106 | 0 | } |
1107 | 0 | } |
1108 | |
|
1109 | 0 | if (strstr(model, "DC25")) |
1110 | 0 | { |
1111 | 0 | strcpy(model, "DC25"); |
1112 | 0 | strcpy(normalized_model, model); |
1113 | 0 | } |
1114 | 0 | else if (!strcmp(model, "40")) |
1115 | 0 | { |
1116 | 0 | strcpy(model, "DC40"); |
1117 | 0 | strcpy(normalized_model, model); |
1118 | 0 | } |
1119 | 0 | else if (strstr(model, "DC50")) |
1120 | 0 | { |
1121 | 0 | strcpy(model, "DC50"); |
1122 | 0 | strcpy(normalized_model, model); |
1123 | 0 | } |
1124 | 0 | else if (strstr(model, "DC120")) |
1125 | 0 | { |
1126 | 0 | strcpy(model, "DC120"); |
1127 | 0 | strcpy(normalized_model, model); |
1128 | 0 | } |
1129 | |
|
1130 | 0 | for (i = 0; i < int(sizeof KodakMonochrome / sizeof *KodakMonochrome); i++) |
1131 | 0 | { |
1132 | 0 | if (!strncmp(model, KodakMonochrome[i], strlen(KodakMonochrome[i]))) |
1133 | 0 | { |
1134 | 0 | colors = 1; |
1135 | 0 | filters = 0; |
1136 | 0 | } |
1137 | 0 | } |
1138 | 0 | } |
1139 | |
|
1140 | 0 | if (ilm.body[0]) |
1141 | 0 | { |
1142 | 0 | if ((ilm.CameraMount != LIBRAW_MOUNT_Hasselblad_V) && |
1143 | 0 | !strncmp(ilm.body, "Hasselblad ", 11) && |
1144 | 0 | ((ilm.body[11] == 'C') || (ilm.body[11] == '2') || |
1145 | 0 | (ilm.body[11] == '5') || (ilm.body[11] == '9'))) |
1146 | 0 | { |
1147 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_66; |
1148 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Hasselblad_V; |
1149 | 0 | } |
1150 | 0 | else if (!strncmp(ilm.body, "XF", 2) || !strncmp(ilm.body, "645DF", 5)) |
1151 | 0 | { |
1152 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Mamiya645; |
1153 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_645; |
1154 | 0 | } |
1155 | 0 | else if (!strncmp(ilm.body, "Sinarcam", 2)) |
1156 | 0 | { |
1157 | 0 | ilm.CameraMount = LIBRAW_MOUNT_LF; |
1158 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_LF; |
1159 | 0 | strcat(ilm.body, " shutter system"); |
1160 | 0 | } |
1161 | 0 | } |
1162 | |
|
1163 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Kodak)) |
1164 | 0 | { |
1165 | 0 | if (((ilm.CameraMount == LIBRAW_MOUNT_DigitalBack) || |
1166 | 0 | (ilm.CameraMount == LIBRAW_MOUNT_Unknown)) && |
1167 | 0 | !strncmp(model2, "PB645", 5)) |
1168 | 0 | { |
1169 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_645; |
1170 | 0 | if (model2[5] == 'C') |
1171 | 0 | { |
1172 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Contax645; |
1173 | 0 | strcpy(ilm.body, "Contax 645"); |
1174 | 0 | } |
1175 | 0 | else if (model2[5] == 'H') |
1176 | 0 | { |
1177 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Hasselblad_H; |
1178 | 0 | strcpy(ilm.body, "Hasselblad H1/H2"); |
1179 | 0 | } |
1180 | 0 | else if (model2[5] == 'M') |
1181 | 0 | { |
1182 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Mamiya645; |
1183 | 0 | strcpy(ilm.body, "Mamiya 645"); |
1184 | 0 | } |
1185 | |
|
1186 | 0 | } else if (!strncasecmp(model, "PIXPRO S-1", 10)) { |
1187 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_FT; |
1188 | 0 | } else if (!strncasecmp(model, "PIXPRO ", 7)) { |
1189 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_1div2p3INCH; |
1190 | 0 | } |
1191 | 0 | } |
1192 | | |
1193 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Fujifilm)) |
1194 | 0 | { |
1195 | 0 | if (!strncmp(normalized_model, "DBP", 3)) |
1196 | 0 | { |
1197 | 0 | strcpy(ilm.body, "Fujifilm GX680"); |
1198 | 0 | } |
1199 | 0 | } |
1200 | |
|
1201 | 0 | if ((ilm.CameraFormat == LIBRAW_FORMAT_Unknown) || |
1202 | 0 | (ilm.CameraMount == LIBRAW_MOUNT_Unknown) || |
1203 | 0 | (ilm.CameraMount == LIBRAW_MOUNT_IL_UM)) |
1204 | 0 | { |
1205 | |
|
1206 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Canon)) |
1207 | 0 | { |
1208 | 0 | if (strncmp(normalized_model, "EOS", 3)) |
1209 | 0 | { |
1210 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1211 | 0 | } |
1212 | 0 | } |
1213 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Nikon)) |
1214 | 0 | { |
1215 | 0 | if (normalized_model[0] == 'D') |
1216 | 0 | { |
1217 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Nikon_F; |
1218 | 0 | } |
1219 | 0 | else |
1220 | 0 | { |
1221 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1222 | 0 | } |
1223 | 0 | } |
1224 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Panasonic)) |
1225 | 0 | { |
1226 | 0 | if (!strncmp(normalized_model, "DC-S", 4)) |
1227 | 0 | { |
1228 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_FF; |
1229 | 0 | ilm.CameraMount = LIBRAW_MOUNT_LPS_L; |
1230 | 0 | } |
1231 | 0 | else if (!strncmp(normalized_model, "DMC-L1", 6) || |
1232 | 0 | !strncmp(normalized_model, "DMC-L10", 7)) |
1233 | 0 | { |
1234 | 0 | ilm.CameraFormat = ilm.CameraMount = LIBRAW_FORMAT_FT; |
1235 | 0 | } |
1236 | 0 | else if (!strncmp(normalized_model + 2, "-G", 2) || |
1237 | 0 | !strncmp(normalized_model + 3, "-G", 2)) |
1238 | 0 | { |
1239 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_FT; |
1240 | 0 | ilm.CameraMount = LIBRAW_MOUNT_mFT; |
1241 | 0 | } |
1242 | 0 | else |
1243 | 0 | { |
1244 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1245 | 0 | ilm.FocalType = LIBRAW_FT_ZOOM_LENS; |
1246 | 0 | if (!strncmp(normalized_model + 2, "-LX100", 6) || // DC-LX100M2 |
1247 | 0 | !strncmp(normalized_model + 3, "-LX100", 6)) |
1248 | 0 | { // DMC-LX100 |
1249 | 0 | ilm.CameraFormat = ilm.LensFormat = LIBRAW_FORMAT_FT; |
1250 | 0 | } |
1251 | 0 | else if (!strncmp(normalized_model, "DMC-CM1", 7)) |
1252 | 0 | { |
1253 | 0 | ilm.FocalType = LIBRAW_FT_PRIME_LENS; |
1254 | 0 | } |
1255 | 0 | } |
1256 | 0 | } |
1257 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Fujifilm)) |
1258 | 0 | { |
1259 | 0 | if (!strncmp(normalized_model, "GFX ", 4)) |
1260 | 0 | { |
1261 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_CROP645; |
1262 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Fuji_GF; |
1263 | 0 | } |
1264 | 0 | else if (!strncmp(normalized_model, "X-", 2) && |
1265 | 0 | (strncmp(normalized_model, "X-S1", 4) || |
1266 | 0 | !strncmp(normalized_model, "X-S10", 5) || |
1267 | 0 | !strncmp(normalized_model, "X-S20", 5))) |
1268 | 0 | { |
1269 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1270 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Fuji_X; |
1271 | 0 | } |
1272 | 0 | else if (((normalized_model[0] == 'S') && // S2Pro, S3Pro, S5Pro |
1273 | 0 | (normalized_model[2] == 'P')) || |
1274 | 0 | !strncasecmp(normalized_model, "IS Pro", 6)) |
1275 | 0 | { |
1276 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1277 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Nikon_F; |
1278 | 0 | } |
1279 | 0 | else if (!strncmp(normalized_model, "DBP", 3)) |
1280 | 0 | { |
1281 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_68; |
1282 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Fuji_GX; |
1283 | 0 | } |
1284 | 0 | else |
1285 | 0 | { |
1286 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1287 | 0 | } |
1288 | 0 | } |
1289 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Samsung)) |
1290 | 0 | { |
1291 | 0 | if ((normalized_model[0] == 'N') && |
1292 | 0 | (normalized_model[1] == 'X')) // DNG converters delete makernotes |
1293 | 0 | { |
1294 | 0 | if ((normalized_model[2] == 'F') && (normalized_model[3] == '1')) |
1295 | 0 | { |
1296 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Samsung_NX_M; |
1297 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_1INCH; |
1298 | 0 | } |
1299 | 0 | else |
1300 | 0 | { |
1301 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Samsung_NX; |
1302 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1303 | 0 | } |
1304 | 0 | } |
1305 | 0 | else |
1306 | 0 | { |
1307 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1308 | 0 | } |
1309 | 0 | } |
1310 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Kodak)) |
1311 | 0 | { |
1312 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1313 | 0 | for (i = 0; i < int(sizeof Kodak_mounts / sizeof *Kodak_mounts); i++) |
1314 | 0 | { |
1315 | 0 | if (!strncmp(normalized_model, Kodak_mounts[i].Kmodel, |
1316 | 0 | strlen(Kodak_mounts[i].Kmodel))) |
1317 | 0 | { |
1318 | 0 | ilm.CameraMount = Kodak_mounts[i].mount; |
1319 | 0 | break; |
1320 | 0 | } |
1321 | 0 | } |
1322 | 0 | } |
1323 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Minolta)) |
1324 | 0 | { |
1325 | 0 | if (!strcmp(normalized_model, "DG-5D") || |
1326 | 0 | !strcmp(normalized_model, "DG-7D")) |
1327 | 0 | { |
1328 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1329 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Minolta_A; |
1330 | 0 | } |
1331 | 0 | else if (!strncasecmp(normalized_model, "DiMAGE", 6)) |
1332 | 0 | { |
1333 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1334 | 0 | } |
1335 | 0 | } |
1336 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Casio) || |
1337 | 0 | makeIs(LIBRAW_CAMERAMAKER_Creative)) |
1338 | 0 | { |
1339 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1340 | 0 | } |
1341 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Sigma)) |
1342 | 0 | { |
1343 | 0 | if (!strncmp(normalized_model, "fp", 2)) |
1344 | 0 | { |
1345 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_FF; |
1346 | 0 | ilm.CameraMount = LIBRAW_MOUNT_LPS_L; |
1347 | 0 | } |
1348 | 0 | else if (!strncasecmp(normalized_model, "SD", 2)) |
1349 | 0 | { |
1350 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Sigma_X3F; |
1351 | 0 | if (!strcmp(normalized_model, "SD1") || (normalized_model[4] == 'M')) |
1352 | 0 | { |
1353 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_SigmaMerrill; |
1354 | 0 | } |
1355 | 0 | else if (normalized_model[11] == 'H') |
1356 | 0 | { // 'sd Quattro H' |
1357 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_SigmaAPSH; |
1358 | 0 | } |
1359 | 0 | else if (normalized_model[4] == 'Q') |
1360 | 0 | { // 'sd Quattro' |
1361 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1362 | 0 | } |
1363 | 0 | else |
1364 | 0 | { |
1365 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_SigmaAPSC; |
1366 | 0 | } |
1367 | 0 | } |
1368 | 0 | else if (!strncasecmp(normalized_model, "DP", 2)) |
1369 | 0 | { |
1370 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1371 | 0 | if (normalized_model[4] == 'M') |
1372 | 0 | { |
1373 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_SigmaMerrill; |
1374 | 0 | } |
1375 | 0 | else if (normalized_model[4] == 'Q') |
1376 | 0 | { |
1377 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1378 | 0 | } |
1379 | 0 | else |
1380 | 0 | { |
1381 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_SigmaAPSC; |
1382 | 0 | } |
1383 | 0 | } |
1384 | 0 | } |
1385 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Konica)) |
1386 | 0 | { |
1387 | 0 | if (!strncmp(model, "KD-", 3)) |
1388 | 0 | { // Konica KD-400Z, KD-510Z |
1389 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1390 | 0 | } |
1391 | 0 | } |
1392 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Mamiya)) |
1393 | 0 | { |
1394 | 0 | if (!strncmp(normalized_model, "ZD", 2)) |
1395 | 0 | { |
1396 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_3648; |
1397 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Mamiya645; |
1398 | 0 | } |
1399 | 0 | } |
1400 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Sony)) |
1401 | 0 | { |
1402 | 0 | if (!strncmp(normalized_model, "XCD-", 4)) |
1403 | 0 | { |
1404 | 0 | ilm.CameraMount = LIBRAW_MOUNT_C; |
1405 | 0 | } |
1406 | 0 | else if (!strncmp(normalized_model, "DSC-V3", 6) || |
1407 | 0 | !strncmp(normalized_model, "DSC-F828", 8)) |
1408 | 0 | { |
1409 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1410 | 0 | imSony.CameraType = LIBRAW_SONY_DSC; |
1411 | 0 | } |
1412 | 0 | } |
1413 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Polaroid) && |
1414 | 0 | !strncmp(normalized_model, "x530", 4)) |
1415 | 0 | { |
1416 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1417 | 0 | } |
1418 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Rollei) && |
1419 | 0 | !strncmp(normalized_model, "d530flex", 8)) |
1420 | 0 | { |
1421 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1422 | 0 | } |
1423 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Pentax) && |
1424 | 0 | !strncmp(normalized_model, "Optio", 5)) { |
1425 | 0 | ilm.CameraMount = LIBRAW_MOUNT_FixedLens; |
1426 | 0 | } |
1427 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Epson) && |
1428 | 0 | !strncmp(normalized_model, "R-D1", 4)) |
1429 | 0 | { |
1430 | 0 | ilm.CameraMount = LIBRAW_MOUNT_Leica_M; |
1431 | 0 | ilm.CameraFormat = LIBRAW_FORMAT_APSC; |
1432 | 0 | } |
1433 | 0 | } |
1434 | |
|
1435 | 0 | if ((ilm.LensMount == LIBRAW_MOUNT_Canon_RF) && |
1436 | 0 | (ilm.LensID == 61182) && |
1437 | 0 | (imCanon.RF_lensID != 0)) { |
1438 | 0 | ilm.LensID = imCanon.RF_lensID; |
1439 | 0 | } |
1440 | |
|
1441 | 0 | if (ilm.LensMount == LIBRAW_MOUNT_Unknown) |
1442 | 0 | { |
1443 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Samsung)) |
1444 | 0 | { |
1445 | 0 | if ((imgdata.lens.Lens[0] == 'N') && |
1446 | 0 | (imgdata.lens.Lens[1] == 'X')) // same DNG problem |
1447 | 0 | { |
1448 | 0 | if (imgdata.lens.Lens[2] == '-') |
1449 | 0 | { |
1450 | 0 | ilm.LensMount = LIBRAW_MOUNT_Samsung_NX_M; |
1451 | 0 | ilm.LensFormat = LIBRAW_FORMAT_1INCH; |
1452 | 0 | } |
1453 | 0 | else |
1454 | 0 | { |
1455 | 0 | ilm.LensMount = LIBRAW_MOUNT_Samsung_NX; |
1456 | 0 | ilm.LensFormat = LIBRAW_FORMAT_APSC; |
1457 | 0 | } |
1458 | 0 | } |
1459 | 0 | } |
1460 | 0 | } |
1461 | |
|
1462 | 0 | if ((ilm.LensID == LIBRAW_LENS_NOT_SET) && |
1463 | 0 | xmpdata && |
1464 | 0 | (strlen(xmpdata) > 9)) |
1465 | 0 | { |
1466 | 0 | if (makeIs(LIBRAW_CAMERAMAKER_Canon) && |
1467 | 0 | try_xml && |
1468 | 0 | (ps = strstr(xmpdata, "LensID=\""))) |
1469 | 0 | { |
1470 | 0 | ilm.LensID = atoi(ps + 8); |
1471 | 0 | if (ilm.LensID == 61182) |
1472 | 0 | { |
1473 | 0 | ilm.LensMount = ilm.CameraMount = LIBRAW_MOUNT_Canon_RF; |
1474 | 0 | } |
1475 | 0 | } |
1476 | 0 | else if (makeIs(LIBRAW_CAMERAMAKER_Samsung)) |
1477 | 0 | { |
1478 | 0 | if ((ilm.LensMount == LIBRAW_MOUNT_Samsung_NX) && |
1479 | 0 | (ps = strstr(xmpdata, "LensID=\"("))) |
1480 | 0 | { |
1481 | 0 | ilm.LensID = atoi(ps + 9); |
1482 | 0 | } |
1483 | 0 | } |
1484 | 0 | } |
1485 | |
|
1486 | 0 | if (ilm.CameraMount == LIBRAW_MOUNT_FixedLens) |
1487 | 0 | { |
1488 | 0 | if (ilm.CameraFormat) |
1489 | 0 | ilm.LensFormat = ilm.CameraFormat; |
1490 | 0 | if (ilm.LensMount == LIBRAW_MOUNT_Unknown) |
1491 | 0 | ilm.LensMount = LIBRAW_MOUNT_FixedLens; |
1492 | 0 | } |
1493 | |
|
1494 | 0 | if ((ilm.CameraMount != LIBRAW_MOUNT_Unknown) && |
1495 | 0 | (ilm.CameraMount != LIBRAW_MOUNT_FixedLens) && |
1496 | 0 | (ilm.LensMount == LIBRAW_MOUNT_Unknown)) { |
1497 | 0 | if (ilm.LensID == LIBRAW_LENS_NOT_SET) ilm.LensMount = LIBRAW_MOUNT_IL_UM; |
1498 | 0 | else ilm.LensMount = ilm.CameraMount; |
1499 | 0 | } |
1500 | 0 | } |
1501 | | |
1502 | 0 | void LibRaw::SetStandardIlluminants (unsigned makerIdx, const char* /*normModel*/) { |
1503 | | // int i = -1; |
1504 | 0 | int c; |
1505 | 0 | if (!icWBC[LIBRAW_WBI_Ill_A][0] && |
1506 | 0 | !icWBC[LIBRAW_WBI_D65][0]) { |
1507 | 0 | if (makerIdx == LIBRAW_CAMERAMAKER_Olympus ) { |
1508 | 0 | for (int i = 0; i < 64 && icWBCCTC[i][0]; i++) { |
1509 | 0 | if (icWBCCTC[i][0] == 3000) |
1510 | 0 | FORC4 icWBC[LIBRAW_WBI_Ill_A][c] = int(icWBCCTC[i][c+1]); |
1511 | 0 | else if (icWBCCTC[i][0] == 6600) |
1512 | 0 | FORC4 icWBC[LIBRAW_WBI_D65][c] = int(icWBCCTC[i][c+1]); |
1513 | 0 | } |
1514 | 0 | } |
1515 | 0 | } |
1516 | |
|
1517 | 0 | if (!icWBC[LIBRAW_WBI_Ill_A][0] && icWBC[LIBRAW_WBI_Tungsten][0]) |
1518 | 0 | FORC4 icWBC[LIBRAW_WBI_Ill_A][c] = icWBC[LIBRAW_WBI_Tungsten][c]; |
1519 | |
|
1520 | 0 | if (!icWBC[LIBRAW_WBI_D65][0] && icWBC[LIBRAW_WBI_FL_N][0]) |
1521 | 0 | FORC4 icWBC[LIBRAW_WBI_D65][c] = icWBC[LIBRAW_WBI_FL_N][c]; |
1522 | |
|
1523 | 0 | return; |
1524 | 0 | } |