1 /*
2  *
3  *  Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
4  *
5  *  RawTherapee is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  RawTherapee is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with RawTherapee.  If not, see <https://www.gnu.org/licenses/>.
17  */
18 #ifndef _SONYMINOLTAATTRIBS_
19 #define _SONYMINOLTAATTRIBS_
20 
21 #include <cmath>
22 
23 #include "rtexif.h"
24 
25 namespace rtexif
26 {
27 
28 class SANoYesInterpreter : public ChoiceInterpreter<>
29 {
30 public:
SANoYesInterpreter()31     SANoYesInterpreter ()
32     {
33         choices[1]  = "No";
34         choices[16] = "Yes";
35     }
36 };
37 SANoYesInterpreter saNoYesInterpreter;
38 
39 class SAOnOffInterpreter : public ChoiceInterpreter<>
40 {
41 public:
SAOnOffInterpreter()42     SAOnOffInterpreter ()
43     {
44         choices[0]      = "Off";
45         choices[1]      = "On";
46         choices[5]      = "On";
47     }
48 };
49 SAOnOffInterpreter saOnOffInterpreter;
50 
51 class SAOnOffInterpreter2 : public ChoiceInterpreter<>
52 {
53 public:
SAOnOffInterpreter2()54     SAOnOffInterpreter2 ()
55     {
56         choices[1]  = "Off";
57         choices[16] = "On";
58     }
59 };
60 SAOnOffInterpreter2 saOnOffInterpreter2;
61 
62 class SAOnOffInterpreter3 : public ChoiceInterpreter<>
63 {
64 public:
SAOnOffInterpreter3()65     SAOnOffInterpreter3 ()
66     {
67         choices[1]  = "Off";
68         choices[16] = "On (Auto)";
69         choices[17] = "On (Manual)";
70     }
71 };
72 SAOnOffInterpreter3 saOnOffInterpreter3;
73 
74 class SAOnOffInterpreter4 : public ChoiceInterpreter<>
75 {
76 public:
SAOnOffInterpreter4()77     SAOnOffInterpreter4 ()
78     {
79         choices[0]   = "n/a";
80         choices[1]   = "Off";
81         choices[16]  = "On";
82         choices[255] = "None";
83     }
84 };
85 SAOnOffInterpreter4 saOnOffInterpreter4;
86 
87 class SAOnOffInterpreter5 : public ChoiceInterpreter<>
88 {
89 public:
SAOnOffInterpreter5()90     SAOnOffInterpreter5 ()
91     {
92         choices[1]   = "On";
93         choices[2]   = "Off";
94     }
95 };
96 SAOnOffInterpreter5 saOnOffInterpreter5;
97 
98 class SAHighISONoiseReduction : public ChoiceInterpreter<>
99 {
100 public:
SAHighISONoiseReduction()101     SAHighISONoiseReduction ()
102     {
103         choices[0]     = "Off";
104         choices[1]     = "Low";
105         choices[2]     = "Normal";
106         choices[3]     = "High";
107         choices[256]   = "Auto";
108         choices[65535] = "n/a";
109     }
110 };
111 SAHighISONoiseReduction saHighISONoiseReduction;
112 
113 class SAHighISONoiseReduction2 : public ChoiceInterpreter<>
114 {
115 public:
SAHighISONoiseReduction2()116     SAHighISONoiseReduction2 ()
117     {
118         choices[0]     = "Normal";
119         choices[1]     = "High";
120         choices[2]     = "Low";
121         choices[3]     = "Off";
122         choices[65535] = "n/a";
123     }
124 };
125 SAHighISONoiseReduction2 saHighISONoiseReduction2;
126 
127 class SAHighISONoiseReduction3 : public ChoiceInterpreter<>
128 {
129 public:
SAHighISONoiseReduction3()130     SAHighISONoiseReduction3 ()
131     {
132         choices[0]     = "Normal";
133         choices[1]     = "Low";
134         choices[2]     = "High";
135         choices[3]     = "Off";
136     }
137 };
138 SAHighISONoiseReduction3 saHighISONoiseReduction3;
139 
140 class SAHighISONoiseReduction4 : public ChoiceInterpreter<>
141 {
142 public:
SAHighISONoiseReduction4()143     SAHighISONoiseReduction4 ()
144     {
145         choices[0]     = "Off";
146         choices[1]     = "Low";
147         choices[2]     = "Normal";
148         choices[3]     = "High";
149     }
150 };
151 SAHighISONoiseReduction4 saHighISONoiseReduction4;
152 
153 class SAHighISONoiseReduction5 : public ChoiceInterpreter<>
154 {
155 public:
SAHighISONoiseReduction5()156     SAHighISONoiseReduction5 ()
157     {
158         choices[16]    = "Low";
159         choices[19]    = "Auto";
160     }
161 };
162 SAHighISONoiseReduction5 saHighISONoiseReduction5;
163 
164 class SASmileShutterMode : public ChoiceInterpreter<>
165 {
166 public:
SASmileShutterMode()167     SASmileShutterMode ()
168     {
169         choices[17]    = "Slight smile";
170         choices[18]    = "Normal smile";
171         choices[19]    = "Big smile";
172     }
173 };
174 SASmileShutterMode saSmileShutterMode;
175 
176 class SAHDRLevel : public ChoiceInterpreter<>
177 {
178 public:
SAHDRLevel()179     SAHDRLevel ()
180     {
181         choices[33]    = "1 EV";
182         choices[34]    = "1.5 EV";
183         choices[35]    = "2 EV";
184         choices[36]    = "2.5 EV";
185         choices[37]    = "3 EV";
186         choices[38]    = "3.5 EV";
187         choices[39]    = "4 EV";
188         choices[40]    = "5 EV";
189         choices[41]    = "6 EV";
190     }
191 };
192 SAHDRLevel saHDRLevel;
193 
194 class SAViewingMode : public ChoiceInterpreter<>
195 {
196 public:
SAViewingMode()197     SAViewingMode ()
198     {
199         choices[0]     = "n/a";
200         choices[16]    = "ViewFinder";
201         choices[33]    = "Focus Check Live View";
202         choices[34]    = "Quick AF Live View";
203     }
204 };
205 SAViewingMode saViewingMode;
206 
207 class SAFlashAction : public ChoiceInterpreter<>
208 {
209 public:
SAFlashAction()210     SAFlashAction ()
211     {
212         choices[1]    = "Did not fire";
213         choices[2]    = "Fired";
214     }
215 };
216 SAFlashAction saFlashAction;
217 
218 class SALiveViewFocusMode : public ChoiceInterpreter<>
219 {
220 public:
SALiveViewFocusMode()221     SALiveViewFocusMode ()
222     {
223         choices[0]    = "n/a";
224         choices[1]    = "AF";
225         choices[16]   = "Manual";
226     }
227 };
228 SALiveViewFocusMode saLiveViewFocusMode;
229 
230 class SALensMount : public ChoiceInterpreter<>
231 {
232 public:
SALensMount()233     SALensMount ()
234     {
235         choices[1]    = "Unknown";
236         choices[16]   = "A-Mount";
237         choices[17]   = "E-Mount";
238     }
239 };
240 SALensMount saLensMount;
241 
242 class SASweepPanoramaSize : public ChoiceInterpreter<>
243 {
244 public:
SASweepPanoramaSize()245     SASweepPanoramaSize ()
246     {
247         choices[1]    = "Standard";
248         choices[2]    = "Wide";
249     }
250 };
251 SASweepPanoramaSize saSweepPanoramaSize;
252 
253 class SASweepPanoramaDirection : public ChoiceInterpreter<>
254 {
255 public:
SASweepPanoramaDirection()256     SASweepPanoramaDirection ()
257     {
258         choices[1]    = "Right";
259         choices[2]    = "Left";
260         choices[3]    = "Up";
261         choices[4]    = "Down";
262     }
263 };
264 SASweepPanoramaDirection saSweepPanoramaDirection;
265 
266 class SALiveViewAFSetting : public ChoiceInterpreter<>
267 {
268 public:
SALiveViewAFSetting()269     SALiveViewAFSetting ()
270     {
271         choices[0]    = "n/a";
272         choices[1]    = "Phase-detect AF";
273         choices[2]    = "Contrast AF";
274     }
275 };
276 SALiveViewAFSetting saLiveViewAFSetting;
277 
278 class SAPanoramaSize3D : public ChoiceInterpreter<>
279 {
280 public:
SAPanoramaSize3D()281     SAPanoramaSize3D ()
282     {
283         choices[0]    = "n/a";
284         choices[1]    = "Standard";
285         choices[2]    = "Wide";
286         choices[3]    = "16:9";
287     }
288 };
289 SAPanoramaSize3D saPanoramaSize3D;
290 
291 class SALiveViewMetering : public ChoiceInterpreter<>
292 {
293 public:
SALiveViewMetering()294     SALiveViewMetering ()
295     {
296         choices[0]    = "n/a";
297         choices[16]   = "40 segment";
298         choices[32]   = "1200-zone Evaluative";
299     }
300 };
301 SALiveViewMetering saLiveViewMetering;
302 
303 class SAWhiteBalanceInterpreter: public ChoiceInterpreter<>
304 {
305 public:
SAWhiteBalanceInterpreter()306     SAWhiteBalanceInterpreter()
307     {
308         choices[ 0x0] = "Auto";
309         choices[ 0x1] = "Color Temperature/Color Filter";
310         choices[0x10] = "Daylight";
311         choices[0x20] = "Cloudy";
312         choices[0x30] = "Shade";
313         choices[0x40] = "Tungsten";
314         choices[0x50] = "Flash";
315         choices[0x60] = "Fluorescent";
316         choices[0x70] = "Custom";
317         choices[0x80] = "Underwater";
318     }
319 };
320 SAWhiteBalanceInterpreter saWhiteBalanceInterpreter;
321 
322 class SAWhiteBalanceSettingInterpreter: public ChoiceInterpreter<>
323 {
324 public:
SAWhiteBalanceSettingInterpreter()325     SAWhiteBalanceSettingInterpreter()
326     {
327         choices[0x10] = "Auto (-3)";
328         choices[0x11] = "Auto (-2)";
329         choices[0x12] = "Auto (-1)";
330         choices[0x13] = "Auto (0)";
331         choices[0x14] = "Auto (+1)";
332         choices[0x15] = "Auto (+2)";
333         choices[0x16] = "Auto (+3)";
334         choices[0x20] = "Daylight (-3)";
335         choices[0x21] = "Daylight (-2)";
336         choices[0x22] = "Daylight (-1)";
337         choices[0x23] = "Daylight (0)";
338         choices[0x24] = "Daylight (+1)";
339         choices[0x25] = "Daylight (+2)";
340         choices[0x26] = "Daylight (+3)";
341         choices[0x30] = "Shade (-3)";
342         choices[0x31] = "Shade (-2)";
343         choices[0x32] = "Shade (-1)";
344         choices[0x33] = "Shade (0)";
345         choices[0x34] = "Shade (+1)";
346         choices[0x35] = "Shade (+2)";
347         choices[0x36] = "Shade (+3)";
348         choices[0x40] = "Cloudy (-3)";
349         choices[0x41] = "Cloudy (-2)";
350         choices[0x42] = "Cloudy (-1)";
351         choices[0x43] = "Cloudy (0)";
352         choices[0x44] = "Cloudy (+1)";
353         choices[0x45] = "Cloudy (+2)";
354         choices[0x46] = "Cloudy (+3)";
355         choices[0x50] = "Tungsten (-3)";
356         choices[0x51] = "Tungsten (-2)";
357         choices[0x52] = "Tungsten (-1)";
358         choices[0x53] = "Tungsten (0)";
359         choices[0x54] = "Tungsten (+1)";
360         choices[0x55] = "Tungsten (+2)";
361         choices[0x56] = "Tungsten (+3)";
362         choices[0x60] = "Fluorescent (-3)";
363         choices[0x61] = "Fluorescent (-2)";
364         choices[0x62] = "Fluorescent (-1)";
365         choices[0x63] = "Fluorescent (0)";
366         choices[0x64] = "Fluorescent (+1)";
367         choices[0x65] = "Fluorescent (+2)";
368         choices[0x66] = "Fluorescent (+3)";
369         choices[0x70] = "Flash (-3)";
370         choices[0x71] = "Flash (-2)";
371         choices[0x72] = "Flash (-1)";
372         choices[0x73] = "Flash (0)";
373         choices[0x74] = "Flash (+1)";
374         choices[0x75] = "Flash (+2)";
375         choices[0x76] = "Flash (+3)";
376         choices[0xa3] = "Custom";
377         choices[0xf3] = "Color Temperature/Color Filter";
378     }
379 };
380 SAWhiteBalanceSettingInterpreter saWhiteBalanceSettingInterpreter;
381 
382 class SASceneModeInterpreter : public ChoiceInterpreter<>
383 {
384 public:
SASceneModeInterpreter()385     SASceneModeInterpreter ()
386     {
387         choices[0]  = "Standard";
388         choices[1]  = "Portrait";
389         choices[2]  = "Text";
390         choices[3]  = "Night Scene";
391         choices[4]  = "Sunset";
392         choices[5]  = "Sports";
393         choices[6]  = "Landscape";
394         choices[7]  = "Night Portrait";
395         choices[8]  = "Macro";
396         choices[9]  = "Super Macro";
397         choices[16] = "Auto";
398         choices[17] = "Night View/Portrait";
399         choices[18] = "Sweep Panorama";
400         choices[19] = "Handheld Night Shot";
401         choices[20] = "Anti Motion Blur";
402         choices[21] = "Cont. Priority AE";
403         choices[22] = "Auto+";
404         choices[23] = "3D Sweep Panorama";
405         choices[24] = "Superior Auto";
406         choices[25] = "High Sensitivity";
407         choices[26] = "Fireworks";
408         choices[27] = "Food";
409         choices[28] = "Pet";
410         choices[33] = "HDR";
411         choices[65535] = "n/a";
412     }
413 };
414 SASceneModeInterpreter saSceneModeInterpreter;
415 
416 class SAZoneMatchingInterpreter : public ChoiceInterpreter<>
417 {
418 public:
SAZoneMatchingInterpreter()419     SAZoneMatchingInterpreter ()
420     {
421         choices[0] = "ISO Setting Used";
422         choices[1] = "High Key";
423         choices[2] = "Low Key";
424     }
425 };
426 SAZoneMatchingInterpreter saZoneMatchingInterpreter;
427 
428 class SADynamicRangeOptimizerInterpreter : public ChoiceInterpreter<>
429 {
430 public:
SADynamicRangeOptimizerInterpreter()431     SADynamicRangeOptimizerInterpreter ()
432     {
433         choices[0] = "Off";
434         choices[1] = "Standard";
435         choices[2] = "Advanced";
436         choices[3] = "Auto";
437         choices[8] = "Advanced Lv1";
438         choices[9] = "Advanced Lv2";
439         choices[10] = "Advanced Lv3";
440         choices[11] = "Advanced Lv4";
441         choices[12] = "Advanced Lv5";
442         choices[16] = "Lv1";
443         choices[17] = "Lv2";
444         choices[18] = "Lv3";
445         choices[19] = "Lv4";
446         choices[20] = "Lv5";
447     }
448 };
449 SADynamicRangeOptimizerInterpreter saDynamicRangeOptimizerInterpreter;
450 
451 class SAColorModeInterpreter : public ChoiceInterpreter<>
452 {
453 public:
SAColorModeInterpreter()454     SAColorModeInterpreter ()
455     {
456         choices[0]  = "Standard";
457         choices[1]  = "Vivid";
458         choices[2]  = "Portrait";
459         choices[3]  = "Landscape";
460         choices[4]  = "Sunset";
461         choices[5]  = "Night View/Portrait";
462         choices[6]  = "B&W";
463         choices[7]  = "Adobe RGB";
464         choices[12] = "Neutral";
465         choices[13] = "Clear";
466         choices[14] = "Deep";
467         choices[15] = "Light";
468         choices[16] = "Autumn Leaves";
469         choices[17] = "Sepia";
470         choices[100] = "Neutral";
471         choices[101] = "Clear";
472         choices[102] = "Deep";
473         choices[103] = "Light";
474         choices[104] = "Night View";
475         choices[105] = "Autumn Leaves";
476     }
477 };
478 SAColorModeInterpreter saColorModeInterpreter;
479 
480 class SAExposureModeInterpreter : public ChoiceInterpreter<>
481 {
482 public:
SAExposureModeInterpreter()483     SAExposureModeInterpreter ()
484     {
485         choices[0]  = "Program AE";
486         choices[1]  = "Portrait";
487         choices[2]  = "Beach";
488         choices[3]  = "Sports";
489         choices[4]  = "Snow";
490         choices[5]  = "Landscape";
491         choices[6]  = "Auto";
492         choices[7]  = "Aperture-priority AE";
493         choices[8]  = "Shutter speed priority AE";
494         choices[9]  = "Night Scene / Twilight";
495         choices[10] = "Hi-Speed Shutter";
496         choices[11] = "Twilight Portrait";
497         choices[12] = "Soft Snap/Portrait";
498         choices[13] = "Fireworks";
499         choices[14] = "Smile Shutter";
500         choices[15] = "Manual";
501         choices[18] = "High Sensitivity";
502         choices[19] = "Macro";
503         choices[20] = "Advanced Sports Shooting";
504         choices[29] = "Underwater";
505         choices[33] = "Food";
506         choices[34] = "Sweep Panorama";
507         choices[35] = "Handheld Night Shot";
508         choices[36] = "Anti Motion Blur";
509         choices[37] = "Pet";
510         choices[38] = "Backlight Correction HDR";
511         choices[39] = "Superior Auto";
512         choices[40] = "Background Defocus";
513         choices[41] = "Soft Skin";
514         choices[42] = "3D Image";
515         choices[65535] = "n/a";
516     }
517 };
518 SAExposureModeInterpreter saExposureModeInterpreter;
519 
520 class SAQualityInterpreter : public ChoiceInterpreter<>
521 {
522 public:
SAQualityInterpreter()523     SAQualityInterpreter ()
524     {
525         choices[0]  = "Normal";
526         choices[1]  = "Fine";
527     }
528 };
529 SAQualityInterpreter saQualityInterpreter;
530 
531 class SAAntiBlurInterpreter : public ChoiceInterpreter<>
532 {
533 public:
SAAntiBlurInterpreter()534     SAAntiBlurInterpreter ()
535     {
536         choices[0]  = "Off";
537         choices[1]  = "On (Continuous)";
538         choices[2]  = "On (Shooting)";
539         choices[65535]  = "n/a";
540     }
541 };
542 SAAntiBlurInterpreter saAntiBlurInterpreter;
543 
544 class SALensIDInterpreter : public IntLensInterpreter<int>
545 {
546 public:
SALensIDInterpreter()547     SALensIDInterpreter ()
548     {
549         choices = {
550             {0, "Minolta AF 28-85mm f/3.5-4.5 New"},
551             {1, "Minolta AF 80-200mm f/2.8 HS-APO G"},
552             {2, "Minolta AF 28-70mm f/2.8 G"},
553             {3, "Minolta AF 28-80mm f/4-5.6"},
554             {4, "Minolta AF 85mm f/1.4G"},
555             {5, "Minolta AF 35-70mm f/3.5-4.5 [II]"},
556             {6, "Minolta AF 24-85mm f/3.5-4.5 [New]"},
557             {7, "Minolta AF 100-300mm f/4.5-5.6 APO [New] or 100-400mm or Sigma Lens"},
558             {7, "Minolta AF 100-400mm f/4.5-6.7 APO"},
559             {7, "Sigma AF 100-300mm f/4 EX DG IF"},
560             {8, "Minolta AF 70-210mm f/4.5-5.6 [II]"},
561             {9, "Minolta AF 50mm f/3.5 Macro"},
562             {10, "Minolta AF 28-105mm f/3.5-4.5 [New]"},
563             {11, "Minolta AF 300mm f/4 HS-APO G"},
564             {12, "Minolta AF 100mm f/2.8 Soft Focus"},
565             {13, "Minolta AF 75-300mm f/4.5-5.6 (New or II)"},
566             {14, "Minolta AF 100-400mm f/4.5-6.7 APO"},
567             {15, "Minolta AF 400mm f/4.5 HS-APO G"},
568             {16, "Minolta AF 17-35mm f/3.5 G"},
569             {17, "Minolta AF 20-35mm f/3.5-4.5"},
570             {18, "Minolta AF 28-80mm f/3.5-5.6 II"},
571             {19, "Minolta AF 35mm f/1.4 G"},
572             {20, "Minolta/Sony 135mm f/2.8 [T4.5] STF"},
573             {22, "Minolta AF 35-80mm f/4-5.6 II"},
574             {23, "Minolta AF 200mm f/4 Macro APO G"},
575             {24, "Minolta/Sony AF 24-105mm f/3.5-4.5 (D) or Sigma or Tamron Lens"},
576             {24, "Sigma 18-50mm f/2.8"},
577             {24, "Sigma 17-70mm f/2.8-4.5 DC Macro"},
578             {24, "Sigma 20-40mm f/2.8 EX DG Aspherical IF"},
579             {24, "Sigma 18-200mm f/3.5-6.3 DC"},
580             {24, "Sigma DC 18-125mm f/4-5,6 D"},
581             {24, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"},
582             {24, "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical"},
583             {25, "Minolta AF 100-300mm f/4.5-5.6 APO (D) or Sigma Lens"},
584             {25, "Sigma 100-300mm f/4 EX (APO (D) or D IF)"},
585             {25, "Sigma 70mm f/2.8 EX DG Macro"},
586             {25, "Sigma 20mm f/1.8 EX DG Aspherical RF"},
587             {25, "Sigma 30mm f/1.4 EX DC"},
588             {25, "Sigma 24mm f/1.8 EX DG ASP Macro"},
589             {27, "Minolta AF 85mm f/1.4 G (D)"},
590             {28, "Minolta/Sony AF 100mm f/2.8 Macro (D) or Tamron Lens"},
591             {28, "Tamron SP AF 90mm f/2.8 Di Macro"},
592             {28, "Tamron SP AF 180mm f/3.5 Di LD [IF] Macro"},
593             {29, "Minolta/Sony AF 75-300mm f/4.5-5.6 (D)"},
594             {30, "Minolta AF 28-80mm f/3.5-5.6 (D) or Sigma Lens"},
595             {30, "Sigma AF 10-20mm f/4-5.6 EX DC"},
596             {30, "Sigma AF 12-24mm f/4.5-5.6 EX DG"},
597             {30, "Sigma 28-70mm EX DG f/2.8"},
598             {30, "Sigma 55-200mm f/4-5.6 DC"},
599             {31, "Minolta/Sony AF 50mm f/2.8 Macro (D) or f/3.5"},
600             {31, "Minolta/Sony AF 50mm f/3.5 Macro"},
601             {32, "Minolta/Sony AF 300mm f/2.8 G or 1.5x Teleconverter"},
602             {33, "Minolta/Sony AF 70-200mm f/2.8 G"},
603             {35, "Minolta AF 85mm f/1.4 G (D) Limited"},
604             {36, "Minolta AF 28-100mm f/3.5-5.6 (D)"},
605             {38, "Minolta AF 17-35mm f/2.8-4 (D)"},
606             {39, "Minolta AF 28-75mm f/2.8 (D)"},
607             {40, "Minolta/Sony AF DT 18-70mm f/3.5-5.6 (D)"},
608             {41, "Minolta/Sony AF DT 11-18mm f/4.5-5.6 (D) or Tamron Lens"},
609             {41, "Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical IF"},
610             {42, "Minolta/Sony AF DT 18-200mm f/3.5-6.3 (D)"},
611             {43, "Sony 35mm f/1.4 G (SAL35F14G)"},
612             {44, "Sony 50mm f/1.4 (SAL50F14)"},
613             {45, "Carl Zeiss Planar T* 85mm f/1.4 ZA (SAL85F14Z)"},
614             {46, "Carl Zeiss Vario-Sonnar T* DT 16-80mm f/3.5-4.5 ZA (SAL1680Z)"},
615             {47, "Carl Zeiss Sonnar T* 135mm f/1.8 ZA (SAL135F18Z)"},
616             {48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM (SAL2470Z) or Other Lens"},
617             {48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM II (SAL2470Z2)"},
618             {48, "Tamron SP 24-70mm f/2.8 Di USD"},
619             {49, "Sony DT 55-200mm f/4-5.6 (SAL55200)"},
620             {50, "Sony DT 18-250mm f/3.5-6.3 (SAL18250)"},
621             {51, "Sony DT 16-105mm f/3.5-5.6 (SAL16105)"},
622             {52, "Sony 70-300mm f/4.5-5.6 G SSM (SAL70300G) or G SSM II or Tamron Lens"},
623             {52, "Sony 70-300mm f/4.5-5.6 G SSM II (SAL70300G2)"},
624             {52, "Tamron SP 70-300mm f/4-5.6 Di USD"},
625             {53, "Sony 70-400mm f/4-5.6 G SSM (SAL70400G)"},
626             {54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM (SAL1635Z) or ZA SSM II"},
627             {54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM II (SAL1635Z2)"},
628             {55, "Sony DT 18-55mm f/3.5-5.6 SAM (SAL1855) or SAM II"},
629             {55, "Sony DT 18-55mm f/3.5-5.6 SAM II (SAL18552)"},
630             {56, "Sony DT 55-200mm f/4-5.6 SAM (SAL55200-2)"},
631             {57, "Sony DT 50mm f/1.8 SAM (SAL50F18) or Tamron Lens or Commlite CM-EF-NEX adapter"},
632             {57, "Tamron SP AF 60mm f/2 Di II LD [IF] Macro 1:1"},
633             {57, "Tamron 18-270mm f/3.5-6.3 Di II PZD"},
634             {58, "Sony DT 30mm f/2.8 Macro SAM (SAL30M28)"},
635             {59, "Sony 28-75mm f/2.8 SAM (SAL2875)"},
636             {60, "Carl Zeiss Distagon T* 24mm f/2 ZA SSM (SAL24F20Z)"},
637             {61, "Sony 85mm f/2.8 SAM (SAL85F28)"},
638             {62, "Sony DT 35mm f/1.8 SAM (SAL35F18)"},
639             {63, "Sony DT 16-50mm f/2.8 SSM (SAL1650)"},
640             {64, "Sony 500mm f/4 G SSM (SAL500F40G)"},
641             {65, "Sony DT 18-135mm f/3.5-5.6 SAM (SAL18135)"},
642             {66, "Sony 300mm f/2.8 G SSM II (SAL300F28G2)"},
643             {67, "Sony 70-200mm f/2.8 G SSM II (SAL70200G2)"},
644             {68, "Sony DT 55-300mm f/4.5-5.6 SAM (SAL55300)"},
645             {69, "Sony 70-400mm f/4-5.6 G SSM II (SAL70400G2)"},
646             {70, "Carl Zeiss Planar T* 50mm f/1.4 ZA SSM (SAL50F14Z)"},
647             {128, "Tamron or Sigma Lens (128)"},
648             {128, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro"},
649             {128, "Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical [IF] Macro"},
650             {128, "Tamron AF 28-200mm f/3.8-5.6 XR Di Aspherical [IF] Macro"},
651             {128, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF"},
652             {128, "Sigma AF 50-150mm f/2.8 EX DC APO HSM II"},
653             {128, "Sigma 10-20mm f/3.5 EX DC HSM"},
654             {128, "Sigma 70-200mm f/2.8 II EX DG APO MACRO HSM"},
655             {128, "Sigma 10mm f/2.8 EX DC HSM Fisheye"},
656             {128, "Sigma 50mm f/1.4 EX DG HSM"},
657             {128, "Sigma 85mm f/1.4 EX DG HSM"},
658             {128, "Sigma 24-70mm f/2.8 IF EX DG HSM"},
659             {128, "Sigma 18-250mm f/3.5-6.3 DC OS HSM"},
660             {128, "Sigma 17-50mm f/2.8 EX DC HSM"},
661             {128, "Sigma 17-70mm f/2.8-4 DC Macro HSM"},
662             {128, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro"},
663             {128, "Sigma 150-500mm f/5-6.3 APO DG OS HSM"},
664             {128, "Tamron AF 28-105mm f/4-5.6 [IF]"},
665             {128, "Sigma 35mm f/1.4 DG HSM"},
666             {128, "Sigma 18-35mm f/1.8 DC HSM"},
667             {128, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM"},
668             {128, "Sigma 24-105mm f/4 DG HSM | A"},
669             {128, "Sigma 30mm f/1.4"},
670             {128, "Sigma 35mm f/1.4 DG HSM | A"},
671             {128, "Sigma 105mm f/2.8 EX DG OS HSM Macro"},
672             {128, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro"},
673             {128, "Sigma 18-300mm f/3.5-6.3 DC Macro HSM | C"},
674             {128, "Sigma 18-50mm f/2.8-4.5 DC HSM"},
675             {129, "Tamron Lens (129)"},
676             {129, "Tamron 200-400mm f/5.6 LD"},
677             {129, "Tamron 70-300mm f/4-5.6 LD"},
678             {131, "Tamron 20-40mm f/2.7-3.5 SP Aspherical IF"},
679             {135, "Vivitar 28-210mm f/3.5-5.6"},
680             {136, "Tokina EMZ M100 AF 100mm f/3.5"},
681             {137, "Cosina 70-210mm f/2.8-4 AF"},
682             {138, "Soligor 19-35mm f/3.5-4.5"},
683             {139, "Tokina AF 28-300mm f/4-6.3"},
684             {142, "Cosina AF 70-300mm f/4.5-5.6 MC"},
685             {146, "Voigtlander Macro APO-Lanthar 125mm f/2.5 SL"},
686             {194, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical [IF]"},
687             {202, "Tamron SP AF 70-200mm f/2.8 Di LD [IF] Macro"},
688             {203, "Tamron SP 70-200mm f/2.8 Di USD"},
689             {204, "Tamron SP 24-70mm f/2.8 Di USD"},
690             {212, "Tamron 28-300mm f/3.5-6.3 Di PZD"},
691             {213, "Tamron 16-300mm f/3.5-6.3 Di II PZD Macro"},
692             {214, "Tamron SP 150-600mm f/5-6.3 Di USD"},
693             {215, "Tamron SP 15-30mm f/2.8 Di USD"},
694             {216, "Tamron SP 45mm f/1.8 Di USD"},
695             {217, "Tamron SP 35mm f/1.8 Di USD"},
696             {218, "Tamron SP 90mm f/2.8 Di Macro 1:1 USD (F017)"},
697             {220, "Tamron SP 150-600mm f/5-6.3 Di USD G2"},
698             {224, "Tamron SP 90mm f/2.8 Di Macro 1:1 USD (F004)"},
699             {255, "Tamron Lens (255)"},
700             {255, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical"},
701             {255, "Tamron AF 18-250mm f/3.5-6.3 XR Di II LD"},
702             {255, "Tamron AF 55-200mm f/4-5.6 Di II LD Macro"},
703             {255, "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2"},
704             {255, "Tamron SP AF 200-500mm f/5.0-6.3 Di LD IF"},
705             {255, "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical IF"},
706             {255, "Tamron SP AF 70-200mm f/2.8 Di LD IF Macro"},
707             {255, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical IF"},
708             {255, "Tamron AF 90-300mm f/4.5-5.6 Telemacro"},
709             {1868, "Sigma MC-11 SA-E Mount Converter with not-supported Sigma lens"},
710             {2550, "Minolta AF 50mm f/1.7"},
711             {2551, "Minolta AF 35-70mm f/4 or Other Lens"},
712             {2551, "Sigma UC AF 28-70mm f/3.5-4.5"},
713             {2551, "Sigma AF 28-70mm f/2.8"},
714             {2551, "Sigma M-AF 70-200mm f/2.8 EX Aspherical"},
715             {2551, "Quantaray M-AF 35-80mm f/4-5.6"},
716             {2551, "Tokina 28-70mm f/2.8-4.5 AF"},
717             {2552, "Minolta AF 28-85mm f/3.5-4.5 or Other Lens"},
718             {2552, "Tokina 19-35mm f/3.5-4.5"},
719             {2552, "Tokina 28-70mm f/2.8 AT-X"},
720             {2552, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840"},
721             {2552, "Tokina AF PRO 28-80mm f/2.8 AT-X 280"},
722             {2552, "Tokina AT-X PRO [II] AF 28-70mm f/2.6-2.8 270"},
723             {2552, "Tamron AF 19-35mm f/3.5-4.5"},
724             {2552, "Angenieux AF 28-70mm f/2.6"},
725             {2552, "Tokina AT-X 17 AF 17mm f/3.5"},
726             {2552, "Tokina 20-35mm f/3.5-4.5 II AF"},
727             {2553, "Minolta AF 28-135mm f/4-4.5 or Other Lens"},
728             {2553, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5"},
729             {2553, "Sigma 28-105mm f/2.8-4 Aspherical"},
730             {2553, "Sigma 28-105mm f/4-5.6 UC"},
731             {2553, "Tokina AT-X 242 AF 24-200mm f/3.5-5.6"},
732             {2554, "Minolta AF 35-105mm f/3.5-4.5"},
733             {2555, "Minolta AF 70-210mm f/4 Macro or Sigma Lens"},
734             {2555, "Sigma 70-210mm f/4-5.6 APO"},
735             {2555, "Sigma M-AF 70-200mm f/2.8 EX APO"},
736             {2555, "Sigma 75-200mm f/2.8-3.5"},
737             {2556, "Minolta AF 135mm f/2.8"},
738             {2557, "Minolta/Sony AF 28mm f/2.8"},
739             {2558, "Minolta AF 24-50mm f/4"},
740             {2560, "Minolta AF 100-200mm f/4.5"},
741             {2561, "Minolta AF 75-300mm f/4.5-5.6 or Sigma Lens"},
742             {2561, "Sigma 70-300mm f/4-5.6 DL Macro"},
743             {2561, "Sigma 300mm f/4 APO Macro"},
744             {2561, "Sigma AF 500mm f/4.5 APO"},
745             {2561, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"},
746             {2561, "Tokina AT-X AF 300mm f/4"},
747             {2561, "Tokina AT-X AF 400mm f/5.6 SD"},
748             {2561, "Tokina AF 730 II 75-300mm f/4.5-5.6"},
749             {2561, "Sigma 800mm f/5.6 APO"},
750             {2561, "Sigma AF 400mm f/5.6 APO Macro"},
751             {2561, "Sigma 1000mm f/8 APO"},
752             {2562, "Minolta AF 50mm f/1.4 [New]"},
753             {2563, "Minolta AF 300mm f/2.8 APO or Sigma Lens"},
754             {2563, "Sigma AF 50-500mm f/4-6.3 EX DG APO"},
755             {2563, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"},
756             {2563, "Sigma AF 500mm f/4.5 EX DG APO"},
757             {2563, "Sigma 400mm f/5.6 APO"},
758             {2564, "Minolta AF 50mm f/2.8 Macro or Sigma Lens"},
759             {2564, "Sigma 50mm f/2.8 EX Macro"},
760             {2565, "Minolta AF 600mm f/4 APO"},
761             {2566, "Minolta AF 24mm f/2.8 or Sigma Lens"},
762             {2566, "Sigma 17-35mm f/2.8-4 EX Aspherical"},
763             {2572, "Minolta/Sony AF 500mm f/8 Reflex"},
764             {2578, "Minolta/Sony AF 16mm f/2.8 Fisheye or Sigma Lens"},
765             {2578, "Sigma 8mm f/4 EX [DG] Fisheye"},
766             {2578, "Sigma 14mm f/3.5"},
767             {2578, "Sigma 15mm f/2.8 Fisheye"},
768             {2579, "Minolta/Sony AF 20mm f/2.8 or Tokina Lens"},
769             {2579, "Tokina AT-X Pro DX 11-16mm f/2.8"},
770             {2581, "Minolta AF 100mm f/2.8 Macro [New] or Sigma or Tamron Lens"},
771             {2581, "Sigma AF 90mm f/2.8 Macro"},
772             {2581, "Sigma AF 105mm f/2.8 EX [DG] Macro"},
773             {2581, "Sigma 180mm f/5.6 Macro"},
774             {2581, "Sigma 180mm f/3.5 EX DG Macro"},
775             {2581, "Tamron 90mm f/2.8 Macro"},
776             {2585, "Minolta AF 35-105mm f/3.5-4.5 New or Tamron Lens"},
777             {2585, "Beroflex 35-135mm f/3.5-4.5"},
778             {2585, "Tamron 24-135mm f/3.5-5.6"},
779             {2588, "Minolta AF 70-210mm f/3.5-4.5"},
780             {2589, "Minolta AF 80-200mm f/2.8 APO or Tokina Lens"},
781             {2589, "Tokina 80-200mm f/2.8"},
782             {2590, "Minolta AF 200mm f/2.8 G APO + Minolta AF 1.4x APO or Other Lens + 1.4x"},
783             {2590, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 1.4x APO"},
784             {2591, "Minolta AF 35mm f/1.4"},
785             {2592, "Minolta AF 85mm f/1.4 G (D)"},
786             {2593, "Minolta AF 200mm f/2.8 APO"},
787             {2594, "Minolta AF 3x-1x f/1.7-2.8 Macro"},
788             {2596, "Minolta AF 28mm f/2"},
789             {2597, "Minolta AF 35mm f/2 [New]"},
790             {2598, "Minolta AF 100mm f/2"},
791             {2601, "Minolta AF 200mm f/2.8 G APO + Minolta AF 2x APO or Other Lens + 2x"},
792             {2601, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 2x APO"},
793             {2604, "Minolta AF 80-200mm f/4.5-5.6"},
794             {2605, "Minolta AF 35-80mm f/4-5.6"},
795             {2606, "Minolta AF 100-300mm f/4.5-5.6"},
796             {2607, "Minolta AF 35-80mm f/4-5.6"},
797             {2608, "Minolta AF 300mm f/2.8 HS-APO G"},
798             {2609, "Minolta AF 600mm f/4 HS-APO G"},
799             {2612, "Minolta AF 200mm f/2.8 HS-APO G"},
800             {2613, "Minolta AF 50mm f/1.7 New"},
801             {2615, "Minolta AF 28-105mm f/3.5-4.5 xi"},
802             {2616, "Minolta AF 35-200mm f/4.5-5.6 xi"},
803             {2618, "Minolta AF 28-80mm f/4-5.6 xi"},
804             {2619, "Minolta AF 80-200mm f/4.5-5.6 xi"},
805             {2620, "Minolta AF 28-70mm f/2.8 G"},
806             {2621, "Minolta AF 100-300mm f/4.5-5.6 xi"},
807             {2624, "Minolta AF 35-80mm f/4-5.6 Power Zoom"},
808             {2628, "Minolta AF 80-200mm f/2.8 HS-APO G"},
809             {2629, "Minolta AF 85mm f/1.4 New"},
810             {2631, "Minolta AF 100-300mm f/4.5-5.6 APO"},
811             {2632, "Minolta AF 24-50mm f/4 New"},
812             {2638, "Minolta AF 50mm f/2.8 Macro New"},
813             {2639, "Minolta AF 100mm f/2.8 Macro"},
814             {2641, "Minolta/Sony AF 20mm f/2.8 New"},
815             {2642, "Minolta AF 24mm f/2.8 New"},
816             {2644, "Minolta AF 100-400mm f/4.5-6.7 APO"},
817             {2662, "Minolta AF 50mm f/1.4 New"},
818             {2667, "Minolta AF 35mm f/2 New"},
819             {2668, "Minolta AF 28mm f/2 New"},
820             {2672, "Minolta AF 24-105mm f/3.5-4.5 (D)"},
821             {3046, "Metabones Canon EF Speed Booster"},
822             {4567, "Tokina 70-210mm f/4-5.6"},
823             {4568, "Tokina AF 35-200mm f/4-5.6 Zoom SD"},
824             {4570, "Tamron AF 35-135mm f/3.5-4.5"},
825             {4571, "Vivitar 70-210mm f/4.5-5.6"},
826             {4574, "2x Teleconverter or Tamron or Tokina Lens"},
827             {4574, "Tamron SP AF 90mm f/2.5"},
828             {4574, "Tokina RF 500mm f/8.0 x2"},
829             {4574, "Tokina 300mm f/2.8 x2"},
830             {4575, "1.4x Teleconverter"},
831             {4585, "Tamron SP AF 300mm f/2.8 LD IF"},
832             {4586, "Tamron SP AF 35-105mm f/2.8 LD Aspherical IF"},
833             {4587, "Tamron AF 70-210mm f/2.8 SP LD"},
834             {4812, "Metabones Canon EF Speed Booster Ultra"},
835             {6118, "Canon EF Adapter"},
836             {6528, "Sigma 16mm f/2.8 Filtermatic Fisheye"},
837             {6553, "E-Mount, T-Mount, Other Lens or no lens"},
838             {6553, "Arax MC 35mm f/2.8 Tilt+Shift"},
839             {6553, "Arax MC 80mm f/2.8 Tilt+Shift"},
840             {6553, "Zenitar MF 16mm f/2.8 Fisheye M42"},
841             {6553, "Samyang 500mm Mirror f/8.0"},
842             {6553, "Pentacon Auto 135mm f/2.8"},
843             {6553, "Pentacon Auto 29mm f/2.8"},
844             {6553, "Helios 44-2 58mm f/2.0"},
845             {18688, "Sigma MC-11 SA-E Mount Converter with not-supported Sigma lens"},
846             {25501, "Minolta AF 50mm f/1.7"},
847             {25511, "Minolta AF 35-70mm f/4 or Other Lens"},
848             {25511, "Sigma UC AF 28-70mm f/3.5-4.5"},
849             {25511, "Sigma AF 28-70mm f/2.8"},
850             {25511, "Sigma M-AF 70-200mm f/2.8 EX Aspherical"},
851             {25511, "Quantaray M-AF 35-80mm f/4-5.6"},
852             {25511, "Tokina 28-70mm f/2.8-4.5 AF"},
853             {25521, "Minolta AF 28-85mm f/3.5-4.5 or Other Lens"},
854             {25521, "Tokina 19-35mm f/3.5-4.5"},
855             {25521, "Tokina 28-70mm f/2.8 AT-X"},
856             {25521, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840"},
857             {25521, "Tokina AF PRO 28-80mm f/2.8 AT-X 280"},
858             {25521, "Tokina AT-X PRO [II] AF 28-70mm f/2.6-2.8 270"},
859             {25521, "Tamron AF 19-35mm f/3.5-4.5"},
860             {25521, "Angenieux AF 28-70mm f/2.6"},
861             {25521, "Tokina AT-X 17 AF 17mm f/3.5"},
862             {25521, "Tokina 20-35mm f/3.5-4.5 II AF"},
863             {25531, "Minolta AF 28-135mm f/4-4.5 or Other Lens"},
864             {25531, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5"},
865             {25531, "Sigma 28-105mm f/2.8-4 Aspherical"},
866             {25531, "Sigma 28-105mm f/4-5.6 UC"},
867             {25531, "Tokina AT-X 242 AF 24-200mm f/3.5-5.6"},
868             {25541, "Minolta AF 35-105mm f/3.5-4.5"},
869             {25551, "Minolta AF 70-210mm f/4 Macro or Sigma Lens"},
870             {25551, "Sigma 70-210mm f/4-5.6 APO"},
871             {25551, "Sigma M-AF 70-200mm f/2.8 EX APO"},
872             {25551, "Sigma 75-200mm f/2.8-3.5"},
873             {25561, "Minolta AF 135mm f/2.8"},
874             {25571, "Minolta/Sony AF 28mm f/2.8"},
875             {25581, "Minolta AF 24-50mm f/4"},
876             {25601, "Minolta AF 100-200mm f/4.5"},
877             {25611, "Minolta AF 75-300mm f/4.5-5.6 or Sigma Lens"},
878             {25611, "Sigma 70-300mm f/4-5.6 DL Macro"},
879             {25611, "Sigma 300mm f/4 APO Macro"},
880             {25611, "Sigma AF 500mm f/4.5 APO"},
881             {25611, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"},
882             {25611, "Tokina AT-X AF 300mm f/4"},
883             {25611, "Tokina AT-X AF 400mm f/5.6 SD"},
884             {25611, "Tokina AF 730 II 75-300mm f/4.5-5.6"},
885             {25611, "Sigma 800mm f/5.6 APO"},
886             {25611, "Sigma AF 400mm f/5.6 APO Macro"},
887             {25611, "Sigma 1000mm f/8 APO"},
888             {25621, "Minolta AF 50mm f/1.4 [New]"},
889             {25631, "Minolta AF 300mm f/2.8 APO or Sigma Lens"},
890             {25631, "Sigma AF 50-500mm f/4-6.3 EX DG APO"},
891             {25631, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"},
892             {25631, "Sigma AF 500mm f/4.5 EX DG APO"},
893             {25631, "Sigma 400mm f/5.6 APO"},
894             {25641, "Minolta AF 50mm f/2.8 Macro or Sigma Lens"},
895             {25641, "Sigma 50mm f/2.8 EX Macro"},
896             {25651, "Minolta AF 600mm f/4 APO"},
897             {25661, "Minolta AF 24mm f/2.8 or Sigma Lens"},
898             {25661, "Sigma 17-35mm f/2.8-4 EX Aspherical"},
899             {25721, "Minolta/Sony AF 500mm f/8 Reflex"},
900             {25781, "Minolta/Sony AF 16mm f/2.8 Fisheye or Sigma Lens"},
901             {25781, "Sigma 8mm f/4 EX [DG] Fisheye"},
902             {25781, "Sigma 14mm f/3.5"},
903             {25781, "Sigma 15mm f/2.8 Fisheye"},
904             {25791, "Minolta/Sony AF 20mm f/2.8 or Tokina Lens"},
905             {25791, "Tokina AT-X Pro DX 11-16mm f/2.8"},
906             {25811, "Minolta AF 100mm f/2.8 Macro [New] or Sigma or Tamron Lens"},
907             {25811, "Sigma AF 90mm f/2.8 Macro"},
908             {25811, "Sigma AF 105mm f/2.8 EX [DG] Macro"},
909             {25811, "Sigma 180mm f/5.6 Macro"},
910             {25811, "Sigma 180mm f/3.5 EX DG Macro"},
911             {25811, "Tamron 90mm f/2.8 Macro"},
912             {25851, "Beroflex 35-135mm f/3.5-4.5"},
913             {25858, "Minolta AF 35-105mm f/3.5-4.5 New or Tamron Lens"},
914             {25858, "Tamron 24-135mm f/3.5-5.6"},
915             {25881, "Minolta AF 70-210mm f/3.5-4.5"},
916             {25891, "Minolta AF 80-200mm f/2.8 APO or Tokina Lens"},
917             {25891, "Tokina 80-200mm f/2.8"},
918             {25901, "Minolta AF 200mm f/2.8 G APO + Minolta AF 1.4x APO or Other Lens + 1.4x"},
919             {25901, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 1.4x APO"},
920             {25911, "Minolta AF 35mm f/1.4"},
921             {25921, "Minolta AF 85mm f/1.4 G (D)"},
922             {25931, "Minolta AF 200mm f/2.8 APO"},
923             {25941, "Minolta AF 3x-1x f/1.7-2.8 Macro"},
924             {25961, "Minolta AF 28mm f/2"},
925             {25971, "Minolta AF 35mm f/2 [New]"},
926             {25981, "Minolta AF 100mm f/2"},
927             {26011, "Minolta AF 200mm f/2.8 G APO + Minolta AF 2x APO or Other Lens + 2x"},
928             {26011, "Minolta AF 600mm f/4 HS-APO G + Minolta AF 2x APO"},
929             {26041, "Minolta AF 80-200mm f/4.5-5.6"},
930             {26051, "Minolta AF 35-80mm f/4-5.6"},
931             {26061, "Minolta AF 100-300mm f/4.5-5.6"},
932             {26071, "Minolta AF 35-80mm f/4-5.6"},
933             {26081, "Minolta AF 300mm f/2.8 HS-APO G"},
934             {26091, "Minolta AF 600mm f/4 HS-APO G"},
935             {26121, "Minolta AF 200mm f/2.8 HS-APO G"},
936             {26131, "Minolta AF 50mm f/1.7 New"},
937             {26151, "Minolta AF 28-105mm f/3.5-4.5 xi"},
938             {26161, "Minolta AF 35-200mm f/4.5-5.6 xi"},
939             {26181, "Minolta AF 28-80mm f/4-5.6 xi"},
940             {26191, "Minolta AF 80-200mm f/4.5-5.6 xi"},
941             {26201, "Minolta AF 28-70mm f/2.8 G"},
942             {26211, "Minolta AF 100-300mm f/4.5-5.6 xi"},
943             {26241, "Minolta AF 35-80mm f/4-5.6 Power Zoom"},
944             {26281, "Minolta AF 80-200mm f/2.8 HS-APO G"},
945             {26291, "Minolta AF 85mm f/1.4 New"},
946             {26311, "Minolta AF 100-300mm f/4.5-5.6 APO"},
947             {26321, "Minolta AF 24-50mm f/4 New"},
948             {26381, "Minolta AF 50mm f/2.8 Macro New"},
949             {26391, "Minolta AF 100mm f/2.8 Macro"},
950             {26411, "Minolta/Sony AF 20mm f/2.8 New"},
951             {26421, "Minolta AF 24mm f/2.8 New"},
952             {26441, "Minolta AF 100-400mm f/4.5-6.7 APO"},
953             {26621, "Minolta AF 50mm f/1.4 New"},
954             {26671, "Minolta AF 35mm f/2 New"},
955             {26681, "Minolta AF 28mm f/2 New"},
956             {26721, "Minolta AF 24-105mm f/3.5-4.5 (D)"},
957             {30464, "Metabones Canon EF Speed Booster"},
958             {45671, "Tokina 70-210mm f/4-5.6"},
959             {45681, "Tokina AF 35-200mm f/4-5.6 Zoom SD"},
960             {45701, "Tamron AF 35-135mm f/3.5-4.5"},
961             {45711, "Vivitar 70-210mm f/4.5-5.6"},
962             {45741, "2x Teleconverter or Tamron or Tokina Lens"},
963             {45741, "Tamron SP AF 90mm f/2.5"},
964             {45741, "Tokina RF 500mm f/8.0 x2"},
965             {45741, "Tokina 300mm f/2.8 x2"},
966             {45751, "1.4x Teleconverter"},
967             {45851, "Tamron SP AF 300mm f/2.8 LD IF"},
968             {45861, "Tamron SP AF 35-105mm f/2.8 LD Aspherical IF"},
969             {45871, "Tamron AF 70-210mm f/2.8 SP LD"},
970             {48128, "Metabones Canon EF Speed Booster Ultra"},
971             {61184, "Canon EF Adapter"},
972             {65280, "Sigma 16mm f/2.8 Filtermatic Fisheye"},
973             {65535, "E-Mount, T-Mount, Other Lens or no lens"},
974             {65535, "Arax MC 35mm f/2.8 Tilt+Shift"},
975             {65535, "Arax MC 80mm f/2.8 Tilt+Shift"},
976             {65535, "Zenitar MF 16mm f/2.8 Fisheye M42"},
977             {65535, "Samyang 500mm Mirror f/8.0"},
978             {65535, "Pentacon Auto 135mm f/2.8"},
979             {65535, "Pentacon Auto 29mm f/2.8"},
980             {65535, "Helios 44-2 58mm f/2.0"}
981         };
982     }
983 
toString(const Tag * t) const984     std::string toString (const Tag* t) const override
985     {
986         int lensID = t->toInt();
987         Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo");
988         Tag *apertureTag = t->getParent()->getRoot()->findTag ("MaxApertureValue");
989         Tag *focalLengthTag = t->getParent()->getRoot()->findTag ("FocalLength");
990         double maxApertureAtFocal = 0.;
991         double focalLength = 0.;
992 
993         if ( apertureTag ) {
994             maxApertureAtFocal = pow (2.0, apertureTag->toDouble() / 2.0);
995         }
996 
997         if ( focalLengthTag ) {
998             focalLength = focalLengthTag->toDouble();
999         }
1000 
1001         double *liArray = nullptr;
1002 
1003         if (lensInfoTag) {
1004             liArray = lensInfoTag->toDoubleArray();
1005         }
1006 
1007         std::string retval = guess ( lensID, focalLength, maxApertureAtFocal, liArray);
1008 
1009         if (liArray) {
1010             delete [] liArray;
1011         }
1012 
1013         return retval;
1014     }
1015 };
1016 SALensIDInterpreter saLensIDInterpreter;
1017 
1018 class SALensID2Interpreter : public IntLensInterpreter< int >
1019 {
1020 public:
SALensID2Interpreter()1021     SALensID2Interpreter ()
1022     {
1023         choices.insert (p_t (0, "Unknown E-mount lens or other lens"));
1024         choices.insert (p_t (0, "Sigma 19mm f/2.8 [EX] DN"));
1025         choices.insert (p_t (0, "Sigma 30mm f/2.8 [EX] DN"));
1026         choices.insert (p_t (0, "Sigma 60mm f/2.8 DN"));
1027         choices.insert (p_t (0, "Sony E 18-200mm f/3.5-6.3 OSS LE"));
1028         choices.insert (p_t (0, "Tamron 18-200mm f/3.5-6.3 Di III VC"));
1029         choices.insert (p_t (0, "Tokina FiRIN 20mm f/2 FE AF"));
1030         choices.insert (p_t (0, "Tokina FiRIN 20mm f/2 FE MF"));
1031         choices.insert (p_t (0, "Zeiss Touit 12mm f/2.8"));
1032         choices.insert (p_t (0, "Zeiss Touit 32mm f/1.8"));
1033         choices.insert (p_t (0, "Zeiss Touit 50mm f/2.8 Macro"));
1034         choices.insert (p_t (0, "Zeiss Loxia 50mm f/2"));
1035         choices.insert (p_t (0, "Zeiss Loxia 35mm f/2"));
1036         choices.insert (p_t (1, "Sony LA-EA1 or Sigma MC-11 Adapter"));
1037         choices.insert (p_t (2, "Sony LA-EA2 Adapter"));
1038         choices.insert (p_t (3, "Sony LA-EA3 Adapter"));
1039         choices.insert (p_t (6, "Sony LA-EA4 Adapter"));
1040         choices.insert (p_t (44, "Metabones Canon EF Smart Adapter"));
1041         choices.insert (p_t (78, "Metabones Canon EF Smart Adapter Mark III or Other Adapter"));
1042         choices.insert (p_t (184, "Metabones Canon EF Speed Booster Ultra"));
1043         choices.insert (p_t (234, "Metabones Canon EF Smart Adapter Mark IV"));
1044         choices.insert (p_t (239, "Metabones Canon EF Speed Booster"));
1045         choices.insert (p_t (32784, "Sony E 16mm f/2.8"));
1046         choices.insert (p_t (32785, "Sony E 18-55mm f/3.5-5.6 OSS"));
1047         choices.insert (p_t (32786, "Sony E 55-210mm f/4.5-6.3 OSS"));
1048         choices.insert (p_t (32787, "Sony E 18-200mm f/3.5-6.3 OSS"));
1049         choices.insert (p_t (32788, "Sony E 30mm f/3.5 Macro"));
1050         choices.insert (p_t (32789, "Sony E 24mm f/1.8 ZA or Samyang AF 50mm f/1.4"));
1051         choices.insert (p_t (32789, "Samyang AF 50mm f/1.4"));
1052         choices.insert (p_t (32790, "Sony E 50mm f/1.8 OSS or Samyang AF 14mm f/2.8"));
1053         choices.insert (p_t (32790, "Samyang AF 14mm f/2.8"));
1054         choices.insert (p_t (32791, "Sony E 16-70mm f/4 ZA OSS"));
1055         choices.insert (p_t (32792, "Sony E 10-18mm f/4 OSS"));
1056         choices.insert (p_t (32793, "Sony E PZ 16-50mm f/3.5-5.6 OSS"));
1057         choices.insert (p_t (32794, "Sony FE 35mm f/2.8 ZA or Samyang Lens"));
1058         choices.insert (p_t (32794, "Samyang AF 24mm f/2.8"));
1059         choices.insert (p_t (32794, "Samyang AF 35mm f/2.8"));
1060         choices.insert (p_t (32795, "Sony FE 24-70mm f/4 ZA OSS"));
1061         choices.insert (p_t (32796, "Sony FE 85mm f/1.8 or Viltrox PFU RBMH 85mm f/1.8"));
1062         choices.insert (p_t (32796, "Viltrox PFU RBMH 85mm f/1.8"));
1063         choices.insert (p_t (32797, "Sony E 18-200mm f/3.5-6.3 OSS LE"));
1064         choices.insert (p_t (32798, "Sony E 20mm f/2.8"));
1065         choices.insert (p_t (32799, "Sony E 35mm f/1.8 OSS"));
1066         choices.insert (p_t (32800, "Sony E PZ 18-105mm f/4 G OSS"));
1067         choices.insert (p_t (32801, "Sony FE 12-24mm f/4 G"));
1068         choices.insert (p_t (32802, "Sony FE 90mm f/2.8 Macro G OSS"));
1069         choices.insert (p_t (32803, "Sony E 18-50mm f/4-5.6"));
1070         choices.insert (p_t (32804, "Sony FE 24mm f/1.4 GM"));
1071         choices.insert (p_t (32805, "Sony FE 24-105mm f/4 G OSS"));
1072         choices.insert (p_t (32807, "Sony E PZ 18-200mm f/3.5-6.3 OSS"));
1073         choices.insert (p_t (32808, "Sony FE 55mm f/1.8 ZA"));
1074         choices.insert (p_t (32810, "Sony FE 70-200mm f/4 G OSS"));
1075         choices.insert (p_t (32811, "Sony FE 16-35mm f/4 ZA OSS"));
1076         choices.insert (p_t (32812, "Sony FE 50mm f/2.8 Macro"));
1077         choices.insert (p_t (32813, "Sony FE 28-70mm f/3.5-5.6 OSS"));
1078         choices.insert (p_t (32814, "Sony FE 35mm f/1.4 ZA"));
1079         choices.insert (p_t (32815, "Sony FE 24-240mm f/3.5-6.3 OSS"));
1080         choices.insert (p_t (32816, "Sony FE 28mm f/2"));
1081         choices.insert (p_t (32817, "Sony FE PZ 28-135mm f/4 G OSS"));
1082         choices.insert (p_t (32819, "Sony FE 100mm f/2.8 STF GM OSS"));
1083         choices.insert (p_t (32820, "Sony E PZ 18-110mm f/4 G OSS"));
1084         choices.insert (p_t (32821, "Sony FE 24-70mm f/2.8 GM"));
1085         choices.insert (p_t (32822, "Sony FE 50mm f/1.4 ZA"));
1086         choices.insert (p_t (32823, "Sony FE 85mm f/1.4 GM or Samyang AF 85mm f/1.4"));
1087         choices.insert (p_t (32823, "Samyang AF 85mm f/1.4"));
1088         choices.insert (p_t (32824, "Sony FE 50mm f/1.8"));
1089         choices.insert (p_t (32826, "Sony FE 21mm f/2.8 (SEL28F20 + SEL075UWC)"));
1090         choices.insert (p_t (32827, "Sony FE 16mm f/3.5 Fisheye (SEL28F20 + SEL057FEC)"));
1091         choices.insert (p_t (32828, "Sony FE 70-300mm f/4.5-5.6 G OSS"));
1092         choices.insert (p_t (32829, "Sony FE 100-400mm f/4.5-5.6 GM OSS"));
1093         choices.insert (p_t (32830, "Sony FE 70-200mm f/2.8 GM OSS"));
1094         choices.insert (p_t (32831, "Sony FE 16-35mm f/2.8 GM"));
1095         choices.insert (p_t (32848, "Sony FE 400mm f/2.8 GM OSS"));
1096         choices.insert (p_t (32849, "Sony E 18-135mm f/3.5-5.6 OSS"));
1097         choices.insert (p_t (32850, "Sony FE 135mm f/1.8 GM"));
1098         choices.insert (p_t (32851, "Sony FE 200-600mm f/5.6-6.3 G OSS"));
1099         choices.insert (p_t (32852, "Sony FE 600mm f/4 GM OSS"));
1100         choices.insert (p_t (32853, "Sony E 16-55mm f/2.8 G"));
1101         choices.insert (p_t (32854, "Sony E 70-350mm f/4.5-6.3 G OSS"));
1102         choices.insert (p_t (32858, "Sony FE 35mm f/1.8"));
1103         choices.insert (p_t (33072, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter"));
1104         choices.insert (p_t (33073, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter"));
1105         choices.insert (p_t (33076, "Sony FE 100mm f/2.8 STF GM OSS (macro mode)"));
1106         choices.insert (p_t (33077, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter"));
1107         choices.insert (p_t (33078, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter"));
1108         choices.insert (p_t (33079, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter"));
1109         choices.insert (p_t (33080, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter"));
1110         choices.insert (p_t (33081, "Sony FE 200-600mm f/5.6-6.3 G OSS + 1.4X Teleconverter"));
1111         choices.insert (p_t (33082, "Sony FE 200-600mm f/5.6-6.3 G OSS + 2X Teleconverter"));
1112         choices.insert (p_t (33083, "Sony FE 600mm f/4 GM OSS + 1.4X Teleconverter"));
1113         choices.insert (p_t (33084, "Sony FE 600mm f/4 GM OSS + 2X Teleconverter"));
1114         choices.insert (p_t (49201, "Zeiss Touit 12mm f/2.8"));
1115         choices.insert (p_t (49202, "Zeiss Touit 32mm f/1.8"));
1116         choices.insert (p_t (49203, "Zeiss Touit 50mm f/2.8 Macro"));
1117         choices.insert (p_t (49216, "Zeiss Batis 25mm f/2"));
1118         choices.insert (p_t (49217, "Zeiss Batis 85mm f/1.8"));
1119         choices.insert (p_t (49218, "Zeiss Batis 18mm f/2.8"));
1120         choices.insert (p_t (49219, "Zeiss Batis 135mm f/2.8"));
1121         choices.insert (p_t (49220, "Zeiss Batis 40mm f/2 CF"));
1122         choices.insert (p_t (49232, "Zeiss Loxia 50mm f/2"));
1123         choices.insert (p_t (49233, "Zeiss Loxia 35mm f/2"));
1124         choices.insert (p_t (49234, "Zeiss Loxia 21mm f/2.8"));
1125         choices.insert (p_t (49235, "Zeiss Loxia 85mm f/2.4"));
1126         choices.insert (p_t (49236, "Zeiss Loxia 25mm f/2.4"));
1127         choices.insert (p_t (49457, "Tamron 28-75mm f/2.8 Di III RXD"));
1128         choices.insert (p_t (49458, "Tamron 17-28mm f/2.8 Di III RXD"));
1129         choices.insert (p_t (49459, "Tamron 35mm f/2.8 Di III OSD M1:2"));
1130         choices.insert (p_t (49460, "Tamron 24mm f/2.8 Di III OSD M1:2"));
1131         choices.insert (p_t (49712, "Tokina FiRIN 20mm f/2 FE AF"));
1132         choices.insert (p_t (49713, "Tokina FiRIN 100mm f/2.8 FE MACRO"));
1133         choices.insert (p_t (50480, "Sigma 30mm f/1.4 DC DN | C"));
1134         choices.insert (p_t (50481, "Sigma 50mm f/1.4 DG HSM | A"));
1135         choices.insert (p_t (50482, "Sigma 18-300mm f/3.5-6.3 DC MACRO OS HSM | C + MC-11"));
1136         choices.insert (p_t (50483, "Sigma 18-35mm f/1.8 DC HSM | A + MC-11"));
1137         choices.insert (p_t (50484, "Sigma 24-35mm f/2 DG HSM | A + MC-11"));
1138         choices.insert (p_t (50485, "Sigma 24mm f/1.4 DG HSM | A + MC-11"));
1139         choices.insert (p_t (50486, "Sigma 150-600mm f/5-6.3 DG OS HSM | C + MC-11"));
1140         choices.insert (p_t (50487, "Sigma 20mm f/1.4 DG HSM | A + MC-11"));
1141         choices.insert (p_t (50488, "Sigma 35mm f/1.4 DG HSM | A"));
1142         choices.insert (p_t (50489, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + MC-11"));
1143         choices.insert (p_t (50490, "Sigma 120-300mm f/2.8 DG OS HSM | S + MC-11"));
1144         choices.insert (p_t (50492, "Sigma 24-105mm f/4 DG OS HSM | A + MC-11"));
1145         choices.insert (p_t (50493, "Sigma 17-70mm f/2.8-4 DC MACRO OS HSM | C + MC-11"));
1146         choices.insert (p_t (50495, "Sigma 50-100mm f/1.8 DC HSM | A + MC-11"));
1147         choices.insert (p_t (50499, "Sigma 85mm f/1.4 DG HSM | A"));
1148         choices.insert (p_t (50501, "Sigma 100-400mm f/5-6.3 DG OS HSM | C + MC-11"));
1149         choices.insert (p_t (50503, "Sigma 16mm f/1.4 DC DN | C"));
1150         choices.insert (p_t (50507, "Sigma 105mm f/1.4 DG HSM | A"));
1151         choices.insert (p_t (50508, "Sigma 56mm f/1.4 DC DN | C"));
1152         choices.insert (p_t (50512, "Sigma 70-200mm f/2.8 DG OS HSM | S + MC-11"));
1153         choices.insert (p_t (50513, "Sigma 70mm f/2.8 DG MACRO | A"));
1154         choices.insert (p_t (50514, "Sigma 45mm f/2.8 DG DN | C"));
1155         choices.insert (p_t (50515, "Sigma 35mm f/1.2 DG DN | A"));
1156         choices.insert (p_t (50516, "Sigma 14-24mm f/2.8 DG DN | A"));
1157         choices.insert (p_t (50992, "Voigtlander SUPER WIDE-HELIAR 15mm f/4.5 III"));
1158         choices.insert (p_t (50993, "Voigtlander HELIAR-HYPER WIDE 10mm f/5.6"));
1159         choices.insert (p_t (50994, "Voigtlander ULTRA WIDE-HELIAR 12mm f/5.6 III"));
1160         choices.insert (p_t (50995, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"));
1161         choices.insert (p_t (50996, "Voigtlander NOKTON 40mm f/1.2 Aspherical"));
1162         choices.insert (p_t (50997, "Voigtlander NOKTON classic 35mm f/1.4"));
1163         choices.insert (p_t (50998, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"));
1164         choices.insert (p_t (50999, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"));
1165         choices.insert (p_t (51000, "Voigtlander NOKTON 50mm f/1.2 Aspherical"));
1166         choices.insert (p_t (51001, "Voigtlander NOKTON 21mm f/1.4 Aspherical"));
1167         choices.insert (p_t (51002, "Voigtlander APO-LANTHAR 50mm f/2 Aspherical"));
1168         choices.insert (p_t (51504, "Samyang AF 50mm f/1.4"));
1169         choices.insert (p_t (51505, "Samyang AF 14mm f/2.8 or Samyang AF 35mm f/2.8"));
1170         choices.insert (p_t (51505, "Samyang AF 35mm f/2.8"));
1171         choices.insert (p_t (51507, "Samyang AF 35mm f/1.4"));
1172         choices.insert (p_t (51508, "Samyang AF 45mm f/1.8"));
1173         choices.insert (p_t (51510, "Samyang AF 18mm f/2.8"));
1174     }
1175 
toString(const Tag * t) const1176     std::string toString (const Tag* t) const override
1177     {
1178         int lensID = t->toInt();
1179         Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo");
1180         Tag *apertureTag = t->getParent()->getRoot()->findTag ("MaxApertureValue");
1181         Tag *focalLengthTag = t->getParent()->getRoot()->findTag ("FocalLength");
1182         double maxApertureAtFocal = 0.;
1183         double focalLength = 0.;
1184 
1185         if ( apertureTag ) {
1186             maxApertureAtFocal = pow (2.0, apertureTag->toDouble() / 2.0);
1187         }
1188 
1189         if ( focalLengthTag ) {
1190             focalLength = focalLengthTag->toDouble();
1191         }
1192 
1193         double *liArray = nullptr;
1194 
1195         if (lensInfoTag) {
1196             liArray = lensInfoTag->toDoubleArray();
1197         }
1198 
1199         std::string retval = guess ( lensID, focalLength, maxApertureAtFocal, liArray);
1200 
1201         if (liArray) {
1202             delete [] liArray;
1203         }
1204 
1205         return retval;
1206     }
1207 };
1208 SALensID2Interpreter saLensID2Interpreter;
1209 
1210 class MATeleconverterInterpreter : public ChoiceInterpreter<>
1211 {
1212 public:
MATeleconverterInterpreter()1213     MATeleconverterInterpreter ()
1214     {
1215         choices[0x0]  = "None";
1216         choices[0x4]  = "Minolta/Sony AF 1.4x APO (D) (0x04)";
1217         choices[0x5]  = "Minolta/Sony AF 2x APO (D) (0x05)";
1218         choices[0x48] = "Minolta/Sony AF 2x APO (D)";
1219         choices[0x50] = "Minolta AF 2x APO II";
1220         choices[0x60] = "Minolta AF 2x APO";
1221         choices[0x88] = "Minolta/Sony AF 1.4x APO (D)";
1222         choices[0x90] = "Minolta AF 1.4x APO II";
1223         choices[0xa0] = "Minolta AF 1.4x APO";
1224     }
1225 };
1226 MATeleconverterInterpreter maTeleconverterInterpreter;
1227 
1228 class MAQualityInterpreter : public ChoiceInterpreter<>
1229 {
1230 public:
MAQualityInterpreter()1231     MAQualityInterpreter ()
1232     {
1233         choices[0] = "RAW";
1234         choices[1] = "Super Fine";
1235         choices[2] = "Fine";
1236         choices[3] = "Standard";
1237         choices[4] = "Economy";
1238         choices[5] = "Extra Fine";
1239         choices[6] = "RAW + JPEG";
1240         choices[7] = "Compressed RAW";
1241         choices[8] = "Compressed RAW + JPEG";
1242     }
1243 };
1244 MAQualityInterpreter maQualityInterpreter;
1245 
1246 class MAImageSizeInterpreter : public ChoiceInterpreter<>
1247 {
1248 public:
MAImageSizeInterpreter()1249     MAImageSizeInterpreter ()
1250     {
1251         choices[1]  = "1600x1200";
1252         choices[2]  = "1280x960";
1253         choices[3]  = "640x480";
1254         choices[5]  = "2560x1920";
1255         choices[6]  = "2272x1704";
1256         choices[7]  = "2048x1536";
1257     }
1258 };
1259 MAImageSizeInterpreter maImageSizeInterpreter;
1260 
1261 class SAQualityInterpreter2 : public ChoiceInterpreter<>
1262 {
1263 public:
SAQualityInterpreter2()1264     SAQualityInterpreter2 ()
1265     {
1266         choices[0]  = "Raw";
1267         choices[2]  = "cRAW";
1268         choices[16] = "Extra fine";
1269         choices[32]  = "Fine";
1270         choices[34]  = "RAW + JPEG";
1271         choices[35]  = "cRAW + JPEG";
1272         choices[48]  = "Standard";
1273     }
1274 };
1275 SAQualityInterpreter2 saQualityInterpreter2;
1276 
1277 class SAQualityInterpreter3 : public ChoiceInterpreter<>
1278 {
1279 public:
SAQualityInterpreter3()1280     SAQualityInterpreter3 ()
1281     {
1282         choices[2]  = "RAW";
1283         choices[4]  = "RAW + JPEG";
1284         choices[6]  = "Fine";
1285         choices[7]  = "Standard";
1286     }
1287 };
1288 SAQualityInterpreter3 saQualityInterpreter3;
1289 
1290 class SADriveMode : public ChoiceInterpreter<>
1291 {
1292 public:
SADriveMode()1293     SADriveMode ()
1294     {
1295         choices[1]  = "Single Frame";
1296         choices[2]  = "Continuous High";
1297         choices[4]  = "Self-timer 10 sec";
1298         choices[5]  = "Self-timer 2 sec, Mirror Lock-up";
1299         choices[6]  = "Single-frame Bracketing";
1300         choices[7]  = "Continuous Bracketing";
1301         choices[10] = "Remote Commander";
1302         choices[11] = "Mirror Lock-up";
1303         choices[18] = "Continuous Low";
1304         choices[24] = "White Balance Bracketing Low";
1305         choices[25] = "D-Range Optimizer Bracketing Low";
1306         choices[40] = "White Balance Bracketing High";
1307         choices[41] = "D-Range Optimizer Bracketing High";
1308     }
1309 };
1310 SADriveMode saDriveMode;
1311 
1312 class SADriveMode2 : public ChoiceInterpreter<>
1313 {
1314 public:
SADriveMode2()1315     SADriveMode2 ()
1316     {
1317         choices[1]  = "Single Frame";
1318         choices[2]  = "Continuous High";
1319         choices[4]  = "Self-timer 10 sec";
1320         choices[5]  = "Self-timer 2 sec, Mirror Lock-up";
1321         choices[7]  = "Continuous Bracketing";
1322         choices[10] = "Remote Commander";
1323         choices[11] = "Continuous Self-timer";
1324     }
1325 };
1326 SADriveMode2 saDriveMode2;
1327 
1328 class SADriveMode3 : public ChoiceInterpreter<>
1329 {
1330 public:
SADriveMode3()1331     SADriveMode3 ()
1332     {
1333         choices[16]  = "Single Frame";
1334         choices[33]  = "Continuous High";
1335         choices[34]  = "Continuous Low";
1336         choices[48]  = "Speed Priority Continuous";
1337         choices[81]  = "Self-timer 10 sec";
1338         choices[82]  = "Self-timer 2 sec, Mirror Lock-up";
1339         choices[113] = "Continuous Bracketing 0.3 EV";
1340         choices[117] = "Continuous Bracketing 0.7 EV";
1341         choices[145] = "White Balance Bracketing Low";
1342         choices[146] = "White Balance Bracketing High";
1343         choices[192] = "Remote Commander";
1344         choices[209] = "Continuous - HDR";
1345         choices[210] = "Continuous - Multi Frame NR";
1346         choices[211] = "Continuous - Handheld Night Shot";
1347         choices[212] = "Continuous - Anti Motion Blur";
1348         choices[213] = "Continuous - Sweep Panorama";
1349         choices[214] = "Continuous - 3D Sweep Panorama";
1350     }
1351 };
1352 SADriveMode3 saDriveMode3;
1353 
1354 class SAFocusMode: public ChoiceInterpreter<>
1355 {
1356 public:
SAFocusMode()1357     SAFocusMode ()
1358     {
1359         choices[0]  = "Manual";
1360         choices[1]  = "AF-S";
1361         choices[2]  = "AF-C";
1362         choices[3]  = "AF-A";
1363         choices[4]  = "Permanent-AF";
1364         choices[65535] = "n/a";
1365     }
1366 };
1367 SAFocusMode saFocusMode;
1368 
1369 class SAFocusMode2: public ChoiceInterpreter<>
1370 {
1371 public:
SAFocusMode2()1372     SAFocusMode2 ()
1373     {
1374         choices[0]  = "Manual";
1375         choices[1]  = "AF-S";
1376         choices[2]  = "AF-C";
1377         choices[3]  = "AF-A";
1378         choices[65535] = "n/a";
1379     }
1380 };
1381 SAFocusMode2 saFocusMode2;
1382 
1383 class SAFocusModeSetting3: public ChoiceInterpreter<>
1384 {
1385 public:
SAFocusModeSetting3()1386     SAFocusModeSetting3 ()
1387     {
1388         choices[17]  = "AF-S";
1389         choices[18]  = "AF-C";
1390         choices[19]  = "AF-A";
1391         choices[32]  = "Manual";
1392         choices[48]  = "DMF";
1393         choices[65535] = "n/a";
1394     }
1395 };
1396 SAFocusModeSetting3 saFocusModeSetting3;
1397 
1398 class SAAFMode: public ChoiceInterpreter<>
1399 {
1400 public:
SAAFMode()1401     SAAFMode()
1402     {
1403         choices[0] = "Default";
1404         choices[1] = "Multi AF";
1405         choices[2] = "Center AF";
1406         choices[3] = "Spot AF";
1407         choices[4] = "Flexible Spot AF";
1408         choices[6] = "Touch AF";
1409         choices[14] = "Tracking";
1410         choices[15] = "Face Tracking";
1411         choices[65535] = "n/a";
1412     }
1413 };
1414 SAAFMode saAFMode;
1415 
1416 class SAAFAreaMode: public ChoiceInterpreter<>
1417 {
1418 public:
SAAFAreaMode()1419     SAAFAreaMode ()
1420     {
1421         choices[0]  = "Wide";
1422         choices[1]  = "Local";
1423         choices[2]  = "Spot";
1424     }
1425 };
1426 SAAFAreaMode saAFAreaMode;
1427 
1428 class SAAFAreaMode2: public ChoiceInterpreter<>
1429 {
1430 public:
SAAFAreaMode2()1431     SAAFAreaMode2 ()
1432     {
1433         choices[1]  = "Wide";
1434         choices[2]  = "Spot";
1435         choices[3]  = "Local";
1436         choices[4]  = "Flexible";
1437     }
1438 };
1439 SAAFAreaMode2 saAFAreaMode2;
1440 
1441 class SAAFPointSelected: public ChoiceInterpreter<>
1442 {
1443 public:
SAAFPointSelected()1444     SAAFPointSelected ()
1445     {
1446         choices[1] = "Center";
1447         choices[2] = "Top";
1448         choices[3] = "Top-Right";
1449         choices[4] = "Right";
1450         choices[5] = "Bottom-Right";
1451         choices[6] = "Bottom";
1452         choices[7] = "Bottom-Left";
1453         choices[8] = "Left";
1454         choices[9] = "Top-Left";
1455         choices[10] = "Far Right";
1456         choices[11] = "Far Left";
1457     }
1458 };
1459 SAAFPointSelected saAFPointSelected;
1460 
1461 class SACameraInfoAFPointSelected: public ChoiceInterpreter<>
1462 {
1463 public:
SACameraInfoAFPointSelected()1464     SACameraInfoAFPointSelected ()
1465     {
1466         choices[0] = "Auto";
1467         choices[1] = "Center";
1468         choices[2] = "Top";
1469         choices[3] = "Upper-Right";
1470         choices[4] = "Right";
1471         choices[5] = "Lower-Right";
1472         choices[6] = "Bottom";
1473         choices[7] = "Lower-Left";
1474         choices[8] = "Left";
1475         choices[9] = "Upper-Left";
1476         choices[10] = "Far Right";
1477         choices[11] = "Far Left";
1478         choices[12] = "Upper-middle";
1479         choices[13] = "Near Right";
1480         choices[14] = "Lower-middle";
1481         choices[15] = "Near Left";
1482     }
1483 };
1484 SACameraInfoAFPointSelected saCameraInfoAFPointSelected;
1485 
1486 class SACameraInfoAFPoint: public ChoiceInterpreter<>
1487 {
1488 public:
SACameraInfoAFPoint()1489     SACameraInfoAFPoint ()
1490     {
1491         choices[0] = "Upper-Left";
1492         choices[1] = "Left";
1493         choices[2] = "Lower-Left";
1494         choices[3] = "Far Left";
1495         choices[4] = "Top (horizontal)";
1496         choices[5] = "Near Right";
1497         choices[6] = "Center (horizontal)";
1498         choices[7] = "Near Left";
1499         choices[8] = "Bottom (horizontal)";
1500         choices[9] = "Top (vertical)";
1501         choices[10] = "Center (vertical)";
1502         choices[11] = "Bottom (vertical)";
1503         choices[12] = "Far Right";
1504         choices[13] = "Upper-Right";
1505         choices[14] = "Right";
1506         choices[15] = "Lower-Right";
1507         choices[16] = "Upper-middle";
1508         choices[17] = "Lower-middle";
1509         choices[255] = "(none)";
1510     }
1511 };
1512 SACameraInfoAFPoint saCameraInfoAFPoint;
1513 
1514 class SAAFPointSelected2: public ChoiceInterpreter<>
1515 {
1516 public:
SAAFPointSelected2()1517     SAAFPointSelected2 ()
1518     {
1519         choices[1] = "Center";
1520         choices[2] = "Top";
1521         choices[3] = "Top-Right";
1522         choices[4] = "Right";
1523         choices[5] = "Bottom-Right";
1524         choices[6] = "Bottom";
1525         choices[7] = "Bottom-Left";
1526         choices[8] = "Left";
1527         choices[9] = "Top-Left";
1528     }
1529 };
1530 SAAFPointSelected2 saAFPointSelected2;
1531 
1532 class SAMeteringMode0_3: public ChoiceInterpreter<>
1533 {
1534 public:
SAMeteringMode0_3()1535     SAMeteringMode0_3 ()
1536     {
1537         choices[0] = "Multi-segment";
1538         choices[2] = "Center-weighted Average";
1539         choices[3] = "Spot";
1540     }
1541 };
1542 SAMeteringMode0_3 saMeteringMode0_3;
1543 
1544 class SAMeteringMode1_3: public ChoiceInterpreter<>
1545 {
1546 public:
SAMeteringMode1_3()1547     SAMeteringMode1_3 ()
1548     {
1549         choices[1] = "Multi-segment";
1550         choices[2] = "Center-weighted Average";
1551         choices[3] = "Spot";
1552     }
1553 };
1554 SAMeteringMode1_3 saMeteringMode1_3;
1555 
1556 class SAMeteringMode1_4: public ChoiceInterpreter<>
1557 {
1558 public:
SAMeteringMode1_4()1559     SAMeteringMode1_4 ()
1560     {
1561         choices[1] = "Multi-segment";
1562         choices[2] = "Center-weighted Average";
1563         choices[4] = "Spot";
1564     }
1565 };
1566 SAMeteringMode1_4 saMeteringMode1_4;
1567 
1568 class SADynamicRangeOptimizerMode: public ChoiceInterpreter<>
1569 {
1570 public:
SADynamicRangeOptimizerMode()1571     SADynamicRangeOptimizerMode ()
1572     {
1573         choices[0] = "Off";
1574         choices[1] = "Standard";
1575         choices[2] = "Advanced Auto";
1576         choices[3] = "Advanced Level";
1577         choices[4097] = "Auto";
1578     }
1579 };
1580 SADynamicRangeOptimizerMode saDynamicRangeOptimizerMode;
1581 
1582 class SADynamicRangeOptimizerSetting: public ChoiceInterpreter<>
1583 {
1584 public:
SADynamicRangeOptimizerSetting()1585     SADynamicRangeOptimizerSetting ()
1586     {
1587         choices[1] = "Off";
1588         choices[2] = "On (Auto)";
1589         choices[3] = "On (Manual)";
1590     }
1591 };
1592 SADynamicRangeOptimizerSetting saDynamicRangeOptimizerSetting;
1593 
1594 class SACreativeStyle: public ChoiceInterpreter<>
1595 {
1596 public:
SACreativeStyle()1597     SACreativeStyle ()
1598     {
1599         choices[1] = "Standard";
1600         choices[2] = "Vivid";
1601         choices[3] = "Portrait";
1602         choices[4] = "Landscape";
1603         choices[5] = "Sunset";
1604         choices[6] = "Night View/Portrait";
1605         choices[8] = "B&W";
1606         choices[9] = "Adobe RGB";
1607         choices[11] = "Neutral";
1608         choices[12] = "Clear";
1609         choices[13] = "Deep";
1610         choices[14] = "Light";
1611         choices[15] = "Autumn Leaves";
1612         choices[16] = "Sepia";
1613     }
1614 };
1615 SACreativeStyle saCreativeStyle;
1616 
1617 class SACreativeStyle2: public ChoiceInterpreter<>
1618 {
1619 public:
SACreativeStyle2()1620     SACreativeStyle2 ()
1621     {
1622         choices[1] = "Standard";
1623         choices[2] = "Vivid";
1624         choices[3] = "Portrait";
1625         choices[4] = "Landscape";
1626         choices[5] = "Sunset";
1627         choices[6] = "Night View/Portrait";
1628         choices[8] = "B&W";
1629     }
1630 };
1631 SACreativeStyle2 saCreativeStyle2;
1632 
1633 class SACreativeStyleSetting: public ChoiceInterpreter<>
1634 {
1635 public:
SACreativeStyleSetting()1636     SACreativeStyleSetting ()
1637     {
1638         choices[16]  = "Standard";
1639         choices[32]  = "Vivid";
1640         choices[64]  = "Portrait";
1641         choices[80]  = "Landscape";
1642         choices[96]  = "B&W";
1643         choices[160] = "Sunset";
1644     }
1645 };
1646 SACreativeStyleSetting saCreativeStyleSetting;
1647 
1648 class SAFlashControl: public ChoiceInterpreter<>
1649 {
1650 public:
SAFlashControl()1651     SAFlashControl ()
1652     {
1653         choices[1] = "ADI Flash";
1654         choices[2] = "Pre-flash TTL";
1655     }
1656 };
1657 SAFlashControl saFlashControl;
1658 
1659 class SAFlashMode: public ChoiceInterpreter<>
1660 {
1661 public:
SAFlashMode()1662     SAFlashMode ()
1663     {
1664         choices[0] = "ADI";
1665         choices[1] = "TTL";
1666     }
1667 };
1668 SAFlashMode saFlashMode;
1669 
1670 class SAFlashMode2: public ChoiceInterpreter<>
1671 {
1672 public:
SAFlashMode2()1673     SAFlashMode2 ()
1674     {
1675         choices[1] = "Flash Off";
1676         choices[16] = "Autoflash";
1677         choices[17] = "Fill-flash";
1678         choices[18] = "Slow Sync";
1679         choices[19] = "Rear Sync";
1680         choices[20] = "Wireless";
1681     }
1682 };
1683 SAFlashMode2 saFlashMode2;
1684 
1685 class SAExposureProgram: public ChoiceInterpreter<>
1686 {
1687 public:
SAExposureProgram()1688     SAExposureProgram ()
1689     {
1690         choices[0] = "Auto";
1691         choices[1] = "Manual";
1692         choices[2] = "Program AE";
1693         choices[3] = "Aperture-priority AE";
1694         choices[4] = "Shutter speed priority AE";
1695         choices[8] = "Program Shift A";
1696         choices[9] = "Program Shift S";
1697         choices[16] = "Portrait";
1698         choices[17] = "Sports";
1699         choices[18] = "Sunset";
1700         choices[19] = "Night Portrait";
1701         choices[20] = "Landscape";
1702         choices[21] = "Macro";
1703         choices[35] = "Auto No Flash";
1704     }
1705 };
1706 SAExposureProgram saExposureProgram;
1707 
1708 class SAExposureProgram2: public ChoiceInterpreter<>
1709 {
1710 public:
SAExposureProgram2()1711     SAExposureProgram2 ()
1712     {
1713         choices[1]   = "Program AE";
1714         choices[2]   = "Aperture-priority AE";
1715         choices[3]   = "Shutter speed priority AE";
1716         choices[4]   = "Manual";
1717         choices[5]   = "Cont. Priority AE";
1718         choices[16]  = "Auto";
1719         choices[17]  = "Auto (no flash)";
1720         choices[18]  = "Auto+";
1721         choices[49]  = "Portrait";
1722         choices[50]  = "Landscape";
1723         choices[51]  = "Macro";
1724         choices[52]  = "Sports";
1725         choices[53]  = "Sunset";
1726         choices[54]  = "Night view";
1727         choices[55]  = "Night view/portrait";
1728         choices[56]  = "Handheld Night Shot";
1729         choices[57]  = "3D Sweep Panorama";
1730         choices[64]  = "Auto 2";
1731         choices[65]  = "Auto 2 (no flash)";
1732         choices[80]  = "Sweep Panorama";
1733         choices[96]  = "Anti Motion Blur";
1734         choices[128] = "Toy Camera";
1735         choices[129] = "Pop Color";
1736         choices[130] = "Posterization";
1737         choices[131] = "Posterization B/W";
1738         choices[132] = "Retro Photo";
1739         choices[133] = "High-key";
1740         choices[134] = "Partial Color Red";
1741         choices[135] = "Partial Color Green";
1742         choices[136] = "Partial Color Blue";
1743         choices[137] = "Partial Color Yellow";
1744         choices[138] = "High Contrast Monochrome";
1745     }
1746 };
1747 SAExposureProgram2 saExposureProgram2;
1748 
1749 class SARotation: public ChoiceInterpreter<>
1750 {
1751 public:
SARotation()1752     SARotation ()
1753     {
1754         choices[0] = "Horizontal";
1755         choices[1] = "Rotate 90 CW";
1756         choices[2] = "Rotate 270 CW";
1757         choices[3] = "None";
1758     }
1759 };
1760 SARotation saRotation;
1761 
1762 class SASonyImageSize: public ChoiceInterpreter<>
1763 {
1764 public:
SASonyImageSize()1765     SASonyImageSize ()
1766     {
1767         choices[1] = "Large";
1768         choices[2] = "Medium";
1769         choices[3] = "Small";
1770     }
1771 };
1772 SASonyImageSize saSonyImageSize;
1773 
1774 class SASonyImageSize3: public ChoiceInterpreter<>
1775 {
1776 public:
SASonyImageSize3()1777     SASonyImageSize3 ()
1778     {
1779         choices[21] = "Large (3:2)";
1780         choices[22] = "Medium (3:2)";
1781         choices[23] = "Small (3:2)";
1782         choices[25] = "Large (16:9)";
1783         choices[26] = "Medium (16:9) ";
1784         choices[27] = "Small (16:9)";
1785     }
1786 };
1787 SASonyImageSize3 saSonyImageSize3;
1788 
1789 class SAAspectRatio: public ChoiceInterpreter<>
1790 {
1791 public:
SAAspectRatio()1792     SAAspectRatio ()
1793     {
1794         choices[1] = "3:2";
1795         choices[2] = "16:9";
1796     }
1797 };
1798 SAAspectRatio saAspectRatio;
1799 
1800 class SAAspectRatio2: public ChoiceInterpreter<>
1801 {
1802 public:
SAAspectRatio2()1803     SAAspectRatio2 ()
1804     {
1805         choices[4] = "3:2";
1806         choices[8] = "16:9";
1807     }
1808 };
1809 SAAspectRatio2 saAspectRatio2;
1810 
1811 class SAExposureLevelIncrements: public ChoiceInterpreter<>
1812 {
1813 public:
SAExposureLevelIncrements()1814     SAExposureLevelIncrements ()
1815     {
1816         choices[33] = "1/3 EV";
1817         choices[50] = "1/2 EV";
1818     }
1819 };
1820 SAExposureLevelIncrements saExposureLevelIncrements;
1821 
1822 class SAAFIlluminator: public ChoiceInterpreter<>
1823 {
1824 public:
SAAFIlluminator()1825     SAAFIlluminator ()
1826     {
1827         choices[0] = "Off";
1828         choices[1] = "Auto";
1829         choices[65535] = "n/a";
1830     }
1831 };
1832 SAAFIlluminator saAFIlluminator;
1833 
1834 class SAColorSpace1_2: public ChoiceInterpreter<>
1835 {
1836 public:
SAColorSpace1_2()1837     SAColorSpace1_2 ()
1838     {
1839         choices[1] = "sRGB";
1840         choices[2] = "AdobeRGB";
1841     }
1842 };
1843 SAColorSpace1_2 saColorSpace1_2;
1844 
1845 class SAColorSpace0_5: public ChoiceInterpreter<>
1846 {
1847 public:
SAColorSpace0_5()1848     SAColorSpace0_5 ()
1849     {
1850         choices[0] = "sRGB";
1851         choices[1] = "AdobeRGB";
1852         choices[5] = "AdobeRGB";
1853     }
1854 };
1855 SAColorSpace0_5 saColorSpace0_5;
1856 
1857 class SAColorSpace5_6: public ChoiceInterpreter<>
1858 {
1859 public:
SAColorSpace5_6()1860     SAColorSpace5_6 ()
1861     {
1862         choices[5] = "AdobeRGB";
1863         choices[6] = "sRGB";
1864     }
1865 };
1866 SAColorSpace5_6 saColorSpace5_6;
1867 
1868 class SAReleaseModeInterpreter: public ChoiceInterpreter<>
1869 {
1870 public:
SAReleaseModeInterpreter()1871     SAReleaseModeInterpreter ()
1872     {
1873         choices[0] = "Normal";
1874         choices[2] = "Continuous";
1875         choices[5] = "Exposure Bracketing";
1876         choices[6] = "White Balance Bracketing";
1877         choices[8] = "DRO Bracketing";
1878         choices[65535] = "n/a";
1879     }
1880 };
1881 SAReleaseModeInterpreter saReleaseModeInterpreter;
1882 
1883 class SAImageStyleInterpreter: public ChoiceInterpreter<>
1884 {
1885 public:
SAImageStyleInterpreter()1886     SAImageStyleInterpreter ()
1887     {
1888         choices[1] = "Standard";
1889         choices[2] = "Vivid";
1890         choices[3] = "Portrait";
1891         choices[4] = "Landscape";
1892         choices[5] = "Sunset";
1893         choices[7] = "Night View/Portrait";
1894         choices[8] = "B&W";
1895         choices[9] = "Adobe RGB";
1896         choices[11] = "Neutral";
1897         choices[129] = "StyleBox1";
1898         choices[130] = "StyleBox2";
1899         choices[131] = "StyleBox3";
1900         choices[132] = "StyleBox4";
1901         choices[133] = "StyleBox5";
1902         choices[134] = "StyleBox6";
1903     }
1904 };
1905 SAImageStyleInterpreter saImageStyleInterpreter;
1906 
1907 class SAPictureEffectInterpreter: public ChoiceInterpreter<>
1908 {
1909 public:
SAPictureEffectInterpreter()1910     SAPictureEffectInterpreter()
1911     {
1912         choices[0]  = "Off";
1913         choices[1]  = "Toy Camera";
1914         choices[2]  = "Pop Color";
1915         choices[3]  = "Posterization";
1916         choices[4]  = "Posterization B/W";
1917         choices[5]  = "Retro Photo";
1918         choices[6]  = "Soft High Key";
1919         choices[7]  = "Partial Color (red)";
1920         choices[8]  = "Partial Color (green)";
1921         choices[9]  = "Partial Color (blue)";
1922         choices[10] = "Partial Color (yellow)";
1923         choices[13] = "High Contrast Monochrome";
1924         choices[16] = "Toy Camera (normal)";
1925         choices[17] = "Toy Camera (cool)";
1926         choices[18] = "Toy Camera (warm)";
1927         choices[19] = "Toy Camera (green)";
1928         choices[20] = "Toy Camera (magenta)";
1929         choices[32] = "Soft Focus (low)";
1930         choices[33] = "Soft Focus";
1931         choices[34] = "Soft Focus (high)";
1932         choices[48] = "Miniature (auto)";
1933         choices[49] = "Miniature (top)";
1934         choices[50] = "Miniature (middle horizontal)";
1935         choices[51] = "Miniature (bottom)";
1936         choices[52] = "Miniature (left)";
1937         choices[53] = "Miniature (middle vertical)";
1938         choices[54] = "Miniature (right)";
1939         choices[64] = "HDR Painting (low)";
1940         choices[65] = "HDR Painting";
1941         choices[66] = "HDR Painting (high)";
1942         choices[80] = "Rich-tone Monochrome";
1943         choices[97] = "Water Color";
1944         choices[98] = "Water Color 2";
1945         choices[112] = "Illustration (low)";
1946         choices[113] = "Illustration";
1947         choices[114] = "Illustration (high)";
1948     }
1949 };
1950 SAPictureEffectInterpreter saPictureEffectInterpreter;
1951 
1952 class SACameraInfoFocusStatusInterpreter : public ChoiceInterpreter<>
1953 {
1954 public:
SACameraInfoFocusStatusInterpreter()1955     SACameraInfoFocusStatusInterpreter()
1956     {
1957         choices[0] = "Manual - Not confirmed (0)";
1958         choices[4] = "Manual - Not confirmed (4)";
1959         choices[16] = "AF-C - Confirmed";
1960         choices[24] = "AF-C - Not Confirmed";
1961         choices[64] = "AF-S - Confirmed";
1962     }
1963 };
1964 SACameraInfoFocusStatusInterpreter saCameraInfoFocusStatusInterpreter;
1965 
1966 class SAExposureTimeInterpreter : public Interpreter
1967 {
1968 public:
SAExposureTimeInterpreter()1969     SAExposureTimeInterpreter () {}
toString(const Tag * t) const1970     std::string toString (const Tag* t) const override
1971     {
1972         double a = t->toDouble();
1973 
1974         if (a > 0) {
1975             char buffer[32];
1976             sprintf (buffer, "%.4f", a);
1977             return buffer;
1978         } else {
1979             return "n/a";
1980         }
1981     }
toDouble(const Tag * t,int ofs)1982     double toDouble (const Tag* t, int ofs) override
1983     {
1984         // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
1985         TagType astype = t->getType();
1986         int a = 0;
1987 
1988         if (astype == BYTE) {
1989             a = t->getValue()[ofs];
1990         } else if (astype == SHORT) {
1991             a = (int)sget2 (t->getValue() + ofs, t->getOrder());
1992         }
1993 
1994         // Decode the value
1995         if (a > 0) {
1996             return pow (2., 6. - (double (a) / 8.));
1997         } else {
1998             return 0.;
1999         }
2000     }
toInt(const Tag * t,int ofs,TagType astype)2001     int toInt (const Tag* t, int ofs, TagType astype) override
2002     {
2003         // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
2004         int a = 0;
2005 
2006         if (astype == INVALID || astype == AUTO) {
2007             astype = t->getType();
2008         }
2009 
2010         if (astype == BYTE) {
2011             a = t->getValue()[ofs];
2012         } else if (astype == SHORT) {
2013             a = (int)sget2 (t->getValue() + ofs, t->getOrder());
2014         }
2015 
2016         // Decode the value
2017         if (a) {
2018             return int (powf (2.f, 6.f - (float (a) / 8.f)) + 0.5f);
2019         } else {
2020             return 0;
2021         }
2022     }
2023 };
2024 SAExposureTimeInterpreter saExposureTimeInterpreter;
2025 
2026 class SAFNumberInterpreter : public Interpreter
2027 {
2028 public:
SAFNumberInterpreter()2029     SAFNumberInterpreter () {}
toString(const Tag * t) const2030     std::string toString (const Tag* t) const override
2031     {
2032         double a = double (t->toDouble());
2033 
2034         if (a) {
2035             char buffer[32];
2036             sprintf (buffer, "%.1f", a / 100. );
2037             return buffer;
2038         } else {
2039             return "n/a";
2040         }
2041     }
toDouble(const Tag * t,int ofs)2042     double toDouble (const Tag* t, int ofs) override
2043     {
2044         // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
2045         TagType astype = t->getType();
2046         int a = 0;
2047 
2048         if (astype == BYTE) {
2049             a = t->getValue()[ofs];
2050         } else if (astype == SHORT) {
2051             a = (int)sget2 (t->getValue() + ofs, t->getOrder());
2052         }
2053 
2054         // Decode the value
2055         if (a > 0) {
2056             return pow (2., (double (a) / 8. - 1.) / 2.);
2057         } else {
2058             return 0.;
2059         }
2060     }
toInt(const Tag * t,int ofs,TagType astype)2061     int toInt (const Tag* t, int ofs, TagType astype) override
2062     {
2063         // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
2064         int a = 0;
2065 
2066         if (astype == INVALID || astype == AUTO) {
2067             astype = t->getType();
2068         }
2069 
2070         if (astype == BYTE) {
2071             a = t->getValue()[ofs];
2072         } else if (astype == SHORT) {
2073             a = (int)sget2 (t->getValue() + ofs, t->getOrder());
2074         }
2075 
2076         // Decode the value
2077         if (a) {
2078             return int (powf (2.f, (float (a) / 8.f - 1.f) / 2.f) + 0.5f);
2079         } else {
2080             return 0;
2081         }
2082     }
2083 };
2084 SAFNumberInterpreter saFNumberInterpreter;
2085 
2086 class SAISOSettingInterpreter : public Interpreter
2087 {
2088 public:
SAISOSettingInterpreter()2089     SAISOSettingInterpreter () {}
toString(const Tag * t) const2090     std::string toString (const Tag* t) const override
2091     {
2092         int a = t->toInt();
2093 
2094         if (a) {
2095             char buffer[32];
2096             sprintf (buffer, "%d", a );
2097             return buffer;
2098         } else {
2099             return "Auto";
2100         }
2101     }
toInt(const Tag * t,int ofs,TagType astype)2102     int toInt (const Tag* t, int ofs, TagType astype) override
2103     {
2104         // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
2105         int a = 0;
2106 
2107         if (astype == INVALID || astype == AUTO) {
2108             astype = t->getType();
2109         }
2110 
2111         if (astype == BYTE) {
2112             a = t->getValue()[ofs];
2113         } else if (astype == SHORT) {
2114             a = (int)sget2 (t->getValue() + ofs, t->getOrder());
2115         }
2116 
2117         // Decode the value
2118         if (a && a != 254) { // 254 = 'Auto' for CameraSettings3, but we might say the same for CameraSettings & CameraSettings2 (?)
2119             return int (expf ((double (a) / 8.f - 6.f) * logf (2.f)) * 100.f + 0.5f);
2120         } else {
2121             return 0;
2122         }
2123     }
2124 };
2125 SAISOSettingInterpreter saISOSettingInterpreter;
2126 
2127 class SAExposureCompSetInterpreter : public Interpreter
2128 {
2129 public:
SAExposureCompSetInterpreter()2130     SAExposureCompSetInterpreter () {}
toString(const Tag * t) const2131     std::string toString (const Tag* t) const override
2132     {
2133         double a = t->toDouble();
2134         char buffer[32];
2135         sprintf (buffer, "%.2f", a );
2136         return buffer;
2137     }
toDouble(const Tag * t,int ofs)2138     double toDouble (const Tag* t, int ofs) override
2139     {
2140         // Get the value
2141         int a = t->getValue()[ofs];
2142         // Decode the value
2143         return (double (a) - 128.) / 24.;
2144     }
2145 };
2146 SAExposureCompSetInterpreter saExposureCompSetInterpreter;
2147 
2148 class SAAFMicroAdjValueInterpreter : public Interpreter
2149 {
2150 public:
SAAFMicroAdjValueInterpreter()2151     SAAFMicroAdjValueInterpreter() {}
toString(const Tag * t) const2152     std::string toString (const Tag* t) const override
2153     {
2154         char buffer[32];
2155         sprintf (buffer, "%d", t->getValue()[0] - 20);
2156         return buffer;
2157     }
toInt(const Tag * t,int ofs,TagType astype)2158     int toInt (const Tag* t, int ofs, TagType astype) override
2159     {
2160         return t->getValue()[0] - 20;
2161     }
2162 };
2163 SAAFMicroAdjValueInterpreter saAFMicroAdjValueInterpreter;
2164 
2165 class SAAFMicroAdjModeInterpreter : public Interpreter
2166 {
2167 public:
SAAFMicroAdjModeInterpreter()2168     SAAFMicroAdjModeInterpreter() {}
toString(const Tag * t) const2169     std::string toString (const Tag* t) const override
2170     {
2171         int a = t->getValue()[0] & 0x80;
2172 
2173         if (a == 0x80) {
2174             return "On";
2175         }
2176 
2177         return "Off";
2178     }
toInt(const Tag * t,int ofs,TagType astype)2179     int toInt (const Tag* t, int ofs, TagType astype) override
2180     {
2181         return (t->getValue()[0] & 0x80) == 0x80 ? 1 : 0;
2182     }
2183 };
2184 
2185 SAAFMicroAdjModeInterpreter saAFMicroAdjModeInterpreter;
2186 
2187 class SAAFMicroAdjRegisteredLensesInterpreter : public Interpreter
2188 {
2189 public:
SAAFMicroAdjRegisteredLensesInterpreter()2190     SAAFMicroAdjRegisteredLensesInterpreter() {}
toString(const Tag * t) const2191     std::string toString (const Tag* t) const override
2192     {
2193         char buffer[32];
2194         sprintf (buffer, "%d", t->getValue()[0] & 0x7f);
2195         return buffer;
2196     }
toInt(const Tag * t,int ofs,TagType astype)2197     int toInt (const Tag* t, int ofs, TagType astype) override
2198     {
2199         return t->getValue()[0] & 0x7f;
2200     }
2201 };
2202 SAAFMicroAdjRegisteredLensesInterpreter saAFMicroAdjRegisteredLensesInterpreter;
2203 
2204 class SAFocusStatusInterpreter : public Interpreter
2205 {
2206 public:
SAFocusStatusInterpreter()2207     SAFocusStatusInterpreter () {}
toString(const Tag * t) const2208     std::string toString (const Tag* t) const override
2209     {
2210         std::string retval;
2211         int a = t->toInt();
2212 
2213         if (a == 0) {
2214             retval = "Not confirmed";
2215         } else if (a == 4) {
2216             retval = "Not confirmed, Tracking";
2217         } else {
2218             if (a & 1) {
2219                 retval = "Confirmed";
2220             }
2221 
2222             if (a & 2) {
2223                 if (!retval.empty()) {
2224                     retval += ", ";
2225                 }
2226 
2227                 retval += "Failed";
2228             }
2229 
2230             if (a & 4)
2231                 if (!retval.empty()) {
2232                     retval += ", ";
2233                 }
2234 
2235             retval += "Tracking";
2236         }
2237 
2238         return retval;
2239     }
2240 };
2241 SAFocusStatusInterpreter saFocusStatusInterpreter;
2242 
2243 class SAColorTemperatureSettingInterpreter : public Interpreter
2244 {
2245 public:
SAColorTemperatureSettingInterpreter()2246     SAColorTemperatureSettingInterpreter () {}
toString(const Tag * t) const2247     std::string toString (const Tag* t) const override
2248     {
2249         char buffer[32];
2250         sprintf (buffer, "%d", t->toInt());
2251         return buffer;
2252     }
toInt(const Tag * t,int ofs,TagType astype)2253     int toInt (const Tag* t, int ofs, TagType astype) override
2254     {
2255         int a = 0;
2256 
2257         if (astype == INVALID || astype == AUTO) {
2258             astype = t->getType();
2259         }
2260 
2261         if (astype == BYTE) {
2262             a = t->getValue()[ofs];
2263         } else if (astype == SHORT) {
2264             a = (int)sget2 (t->getValue() + ofs, t->getOrder());
2265         }
2266 
2267         return a * 100;
2268     }
2269 };
2270 SAColorTemperatureSettingInterpreter saColorTemperatureSettingInterpreter;
2271 
2272 const TagAttrib minoltaAttribs[] = {
2273     {0, AC_WRITE, 0, nullptr, 0x0000, AUTO, "MakerNoteVersion", &stdInterpreter},
2274     {0, AC_WRITE, 0, nullptr, 0x0001, AUTO, "MinoltaCameraSettingsOld", &stdInterpreter},
2275     {0, AC_WRITE, 0, nullptr, 0x0003, AUTO, "MinoltaCameraSettings", &stdInterpreter},
2276     {0, AC_WRITE, 0, nullptr, 0x0004, AUTO, "MinoltaCameraSettings7D", &stdInterpreter},
2277     {0, AC_WRITE, 0, nullptr, 0x0018, AUTO, "ImageStabilization", &stdInterpreter},
2278     {0, AC_WRITE, 0, nullptr, 0x0040, AUTO, "CompressedImageSize", &stdInterpreter},
2279     {1, AC_WRITE, 0, nullptr, 0x0081, AUTO, "PreviewImage", &stdInterpreter},
2280     {1, AC_WRITE, 0, nullptr, 0x0088, AUTO, "PreviewImageStart", &stdInterpreter},
2281     {1, AC_WRITE, 0, nullptr, 0x0089, AUTO, "PreviewImageLength", &stdInterpreter},
2282     {0, AC_WRITE, 0, nullptr, 0x0100, AUTO, "SceneMode", &saSceneModeInterpreter},
2283     {0, AC_WRITE, 0, nullptr, 0x0101, AUTO, "ColorMode", &saColorModeInterpreter},
2284     {0, AC_WRITE, 0, nullptr, 0x0102, AUTO, "MinoltaQuality", &maQualityInterpreter},
2285     {0, AC_WRITE, 0, nullptr, 0x0103, AUTO, "MinoltaImageSize", &maImageSizeInterpreter},
2286     {0, AC_WRITE, 0, nullptr, 0x0104, AUTO, "FlashExposureComp", &stdInterpreter},
2287     {0, AC_WRITE, 0, nullptr, 0x0105, AUTO, "Teleconverter", &maTeleconverterInterpreter},
2288     {0, AC_WRITE, 0, nullptr, 0x0107, AUTO, "ImageStabilization", &saOnOffInterpreter},
2289     {0, AC_WRITE, 0, nullptr, 0x010a, AUTO, "ZoneMatching", &saZoneMatchingInterpreter},
2290     {0, AC_WRITE, 0, nullptr, 0x010b, AUTO, "ColorTemperature", &stdInterpreter},
2291     {0, AC_WRITE, 0, nullptr, 0x010c, AUTO, "LensID", &saLensIDInterpreter},
2292     {0, AC_WRITE, 0, nullptr, 0x0113, AUTO, "ImageStabilization", &saOnOffInterpreter},
2293     {0, AC_WRITE, 0, nullptr, 0x0114, AUTO, "MinoltaCameraSettings", &stdInterpreter},
2294     {1, AC_WRITE, 0, nullptr, 0x0e00, AUTO, "PrintIM", &stdInterpreter},
2295     {0, AC_WRITE, 0, nullptr, 0x0f00, AUTO, "MinoltaCameraSettings2", &stdInterpreter},
2296     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2297 };
2298 
2299 const TagAttrib sonyAttribs[] = {
2300     {0, AC_WRITE, 0, sonyCameraInfoAttribs, 0x0010, AUTO, "CameraInfo", &stdInterpreter},
2301     {0, AC_WRITE, 0, nullptr, 0x0102, AUTO, "Quality", &maQualityInterpreter},
2302     {0, AC_WRITE, 0, nullptr, 0x0104, AUTO, "FlashExposureComp", &stdInterpreter},
2303     {0, AC_WRITE, 0, nullptr, 0x0106, AUTO, "TeleConverter", &maTeleconverterInterpreter},
2304     {0, AC_WRITE, 0, sonyCameraSettingsAttribs, 0x0114, AUTO, "SonyCameraSettings", &stdInterpreter},
2305     {0, AC_WRITE, 0, nullptr, 0x0115, AUTO, "WhiteBalance", &saWhiteBalanceInterpreter},
2306     {1, AC_WRITE, 0, nullptr, 0x0e00, AUTO, "PrintIM", &stdInterpreter},
2307     {1, AC_WRITE, 0, nullptr, 0x2001, AUTO, "PreviewImage", &stdInterpreter},
2308     {0, AC_WRITE, 0, nullptr, 0x2009, AUTO, "HighISONoiseReduction", &saHighISONoiseReduction},
2309     {0, AC_WRITE, 0, nullptr, 0x200a, AUTO, "AutoHDR", &stdInterpreter},
2310     {0, AC_WRITE, 0, nullptr, 0x200b, AUTO, "MultiFrameNoiseReduction", &stdInterpreter},
2311     {0, AC_WRITE, 0, nullptr, 0x200e, AUTO, "PictureEffect", &saPictureEffectInterpreter},
2312     {0, AC_WRITE, 0, nullptr, 0x2011, AUTO, "VignettingCorrection", &stdInterpreter},
2313     {0, AC_WRITE, 0, nullptr, 0x2012, AUTO, "LateralChromaticAberration", &stdInterpreter},
2314     {0, AC_WRITE, 0, nullptr, 0x2013, AUTO, "DistortionCorrection", &stdInterpreter},
2315     {0, AC_WRITE, 0, nullptr, 0xb020, AUTO, "ColorReproduction", &stdInterpreter},
2316     {0, AC_WRITE, 0, nullptr, 0xb021, AUTO, "ColorTemperature", &stdInterpreter},
2317     {0, AC_WRITE, 0, nullptr, 0xb022, AUTO, "ColorCompensationFilter", &stdInterpreter},
2318     {0, AC_WRITE, 0, nullptr, 0xb023, AUTO, "SceneMode", &saSceneModeInterpreter},
2319     {0, AC_WRITE, 0, nullptr, 0xb024, AUTO, "ZoneMatching", &saZoneMatchingInterpreter},
2320     {0, AC_WRITE, 0, nullptr, 0xb025, AUTO, "DynamicRangeOptimizer", &saDynamicRangeOptimizerInterpreter},
2321     {0, AC_WRITE, 0, nullptr, 0xb026, AUTO, "ImageStabilization", &saOnOffInterpreter},
2322     {0, AC_WRITE, 0, nullptr, 0xb027, AUTO, "LensID", &saLensIDInterpreter},
2323     {0, AC_WRITE, 0, minoltaAttribs, 0xb028, AUTO, "MinoltaMakerNote", &stdInterpreter},
2324     {0, AC_WRITE, 0, nullptr, 0xb029, AUTO, "ColorMode", &saColorModeInterpreter},
2325     {0, AC_WRITE, 0, nullptr, 0xb040, AUTO, "Macro", &saOnOffInterpreter},
2326     {0, AC_WRITE, 0, nullptr, 0xb041, AUTO, "ExposureMode", &saExposureModeInterpreter},
2327     {0, AC_WRITE, 0, nullptr, 0xb042, AUTO, "FocusMode", &saFocusMode},
2328     {0, AC_WRITE, 0, nullptr, 0xb043, AUTO, "AFMode", &saAFMode},
2329     {0, AC_WRITE, 0, nullptr, 0xb044, AUTO, "AFIlluminator", &saAFIlluminator},
2330     {0, AC_WRITE, 0, nullptr, 0xb047, AUTO, "Quality", &saQualityInterpreter},
2331     {0, AC_WRITE, 0, nullptr, 0xb048, AUTO, "FlashLevel", &stdInterpreter},
2332     {0, AC_WRITE, 0, nullptr, 0xb049, AUTO, "ReleaseMode", &saReleaseModeInterpreter},
2333     {0, AC_WRITE, 0, nullptr, 0xb04a, AUTO, "SequenceNumber", &stdInterpreter},
2334     {0, AC_WRITE, 0, nullptr, 0xb04b, AUTO, "AntiBlur", &saAntiBlurInterpreter},
2335     {0, AC_WRITE, 0, nullptr, 0xb04e, AUTO, "LongExposureNoiseReduction", &saOnOffInterpreter},
2336     {0, AC_WRITE, 0, nullptr, 0xb04f, AUTO, "DynamicRangeOptimizer", &stdInterpreter},
2337     {0, AC_WRITE, 0, nullptr, 0xb050, AUTO, "HighISONoiseReduction2", &saHighISONoiseReduction2},
2338     {0, AC_WRITE, 0, nullptr, 0xb052, AUTO, "IntelligentAuto", &stdInterpreter},
2339     {0, AC_WRITE, 0, sonyTag9405Attribs, 0x9405, AUTO, "Tag9405", &stdInterpreter},
2340     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2341 };
2342 
2343 const TagAttrib sonyTag9405Attribs[] = {
2344     {0, AC_WRITE, 0, nullptr, 0x005d, AUTO, "LensFormat", &stdInterpreter},  // 9405b start here
2345     {0, AC_WRITE, 0, nullptr, 0x005e, AUTO, "LensMount", &stdInterpreter},
2346     {0, AC_WRITE, 0, nullptr, 0x0060, SHORT, "LensType2", &stdInterpreter},
2347     {0, AC_WRITE, 0, nullptr, 0x0062, SHORT, "LensType", &stdInterpreter},
2348     {0, AC_WRITE, 0, nullptr, 0x0603, AUTO, "LensFormat", &stdInterpreter},  // 9405a start here
2349     {0, AC_WRITE, 0, nullptr, 0x0604, AUTO, "LensMount", &stdInterpreter},
2350     {0, AC_WRITE, 0, nullptr, 0x0605, SHORT, "LensType2", &stdInterpreter},
2351     {0, AC_WRITE, 0, nullptr, 0x0608, SHORT, "LensType", &stdInterpreter},
2352     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2353 };
2354 
2355 const TagAttrib sonyCameraInfoAttribs[] = {
2356     {0, AC_WRITE, 0, nullptr, 14, SHORT, "FocalLength", &saExposureTimeInterpreter},
2357     {0, AC_WRITE, 0, nullptr, 16, SHORT, "FocalLengthTeleZoom", &saExposureTimeInterpreter},
2358     {0, AC_WRITE, 0, nullptr, 25, AUTO, "FocusStatus", &saCameraInfoFocusStatusInterpreter},
2359     {0, AC_WRITE, 0, nullptr, 28, AUTO, "AFPointSelected", &saCameraInfoAFPointSelected},
2360     {0, AC_WRITE, 0, nullptr, 29, AUTO, "FocusMode", &saFocusMode2},
2361     {0, AC_WRITE, 0, nullptr, 32, AUTO, "AFPoint", &saCameraInfoAFPoint},
2362     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2363 };
2364 
2365 const TagAttrib sonyCameraInfo2Attribs[] = {
2366     {0, AC_WRITE, 0, nullptr, 304, AUTO, "AFMicroAdjValue", &saAFMicroAdjValueInterpreter},
2367     {0, AC_WRITE, 0, nullptr, 305, AUTO, "AFMicroAdjMode", &saAFMicroAdjModeInterpreter},
2368     {0, AC_WRITE, 0, nullptr, 305, AUTO, "AFMicroAdjRegisteredLenses", &saAFMicroAdjRegisteredLensesInterpreter},
2369     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2370 };
2371 
2372 const TagAttrib sonyCameraSettingsAttribs[] = {
2373     {0, AC_WRITE, 0, nullptr,  0, AUTO, "ExposureTime", &saExposureTimeInterpreter},
2374     {0, AC_WRITE, 0, nullptr,  1, AUTO, "FNumber", &saFNumberInterpreter},
2375     {0, AC_WRITE, 0, nullptr,  4, AUTO, "DriveMode", &saDriveMode},
2376     {0, AC_WRITE, 0, nullptr,  6, AUTO, "WhiteBalanceFineTune", &stdInterpreter},
2377     {0, AC_WRITE, 0, nullptr, 16, AUTO, "FocusModeSetting", &saFocusMode},
2378     {0, AC_WRITE, 0, nullptr, 17, AUTO, "AFAreaMode", &saAFAreaMode},
2379     {0, AC_WRITE, 0, nullptr, 18, AUTO, "AFPointSelected", &saAFPointSelected},
2380     {0, AC_WRITE, 0, nullptr, 21, AUTO, "MeteringMode", &saMeteringMode1_4},
2381     {0, AC_WRITE, 0, nullptr, 22, AUTO, "ISOSetting", &saISOSettingInterpreter},
2382     {0, AC_WRITE, 0, nullptr, 24, AUTO, "DynamicRangeOptimizerMode", &saDynamicRangeOptimizerMode},
2383     {0, AC_WRITE, 0, nullptr, 25, AUTO, "DynamicRangeOptimizerLevel", &stdInterpreter},
2384     {0, AC_WRITE, 0, nullptr, 26, AUTO, "CreativeStyle", &saCreativeStyle},
2385     {0, AC_WRITE, 0, nullptr, 28, AUTO, "Sharpness", &stdInterpreter},
2386     {0, AC_WRITE, 0, nullptr, 29, AUTO, "Contrast", &stdInterpreter},
2387     {0, AC_WRITE, 0, nullptr, 30, AUTO, "Saturation", &stdInterpreter},
2388     {0, AC_WRITE, 0, nullptr, 31, AUTO, "ZoneMatchingValue", &stdInterpreter},
2389     {0, AC_WRITE, 0, nullptr, 34, AUTO, "Brightness", &stdInterpreter},
2390     {0, AC_WRITE, 0, nullptr, 35, AUTO, "FlashMode", &saFlashMode},
2391     {0, AC_WRITE, 0, nullptr, 40, AUTO, "PrioritySetupShutterRelease", &stdInterpreter},
2392     {0, AC_WRITE, 0, nullptr, 41, AUTO, "AFIlluminator", &saAFIlluminator},
2393     {0, AC_WRITE, 0, nullptr, 42, AUTO, "AFWithShutter", &saOnOffInterpreter},
2394     {0, AC_WRITE, 0, nullptr, 43, AUTO, "LongExposureNoiseReduction", &saOnOffInterpreter},
2395     {0, AC_WRITE, 0, nullptr, 44, AUTO, "HighISONoiseReduction", &saHighISONoiseReduction3},
2396     {0, AC_WRITE, 0, nullptr, 45, AUTO, "ImageStyle", &saImageStyleInterpreter},
2397     {0, AC_WRITE, 0, nullptr, 60, AUTO, "ExposureProgram", &saExposureProgram},
2398     {0, AC_WRITE, 0, nullptr, 61, AUTO, "ImageStabilization", &saOnOffInterpreter},
2399     {0, AC_WRITE, 0, nullptr, 63, AUTO, "Rotation", &saRotation},
2400     {0, AC_WRITE, 0, nullptr, 77, AUTO, "FocusMode", &saFocusMode},
2401     {0, AC_WRITE, 0, nullptr, 83, AUTO, "FocusStatus", &saFocusStatusInterpreter},
2402     {0, AC_WRITE, 0, nullptr, 84, AUTO, "SonyImageSize", &saSonyImageSize},
2403     {0, AC_WRITE, 0, nullptr, 85, AUTO, "AspectRatio", &saAspectRatio},
2404     {0, AC_WRITE, 0, nullptr, 86, AUTO, "Quality", &saQualityInterpreter2},
2405     {0, AC_WRITE, 0, nullptr, 88, AUTO, "ExposureLevelIncrements", &saExposureLevelIncrements},
2406     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2407 };
2408 
2409 const TagAttrib sonyCameraSettingsAttribs2[] = {
2410     {0, AC_WRITE, 0, nullptr,  0, AUTO, "ExposureTime", &saExposureTimeInterpreter},
2411     {0, AC_WRITE, 0, nullptr,  1, AUTO, "FNumber", &saFNumberInterpreter},
2412     {0, AC_WRITE, 0, nullptr, 11, AUTO, "ColorTemperatureSetting", &saColorTemperatureSettingInterpreter},
2413     {0, AC_WRITE, 0, nullptr, 15, AUTO, "FocusMode", &saFocusMode2},
2414     {0, AC_WRITE, 0, nullptr, 16, AUTO, "AFAreaMode", &saAFAreaMode},
2415     {0, AC_WRITE, 0, nullptr, 17, AUTO, "AFPointSelected", &saAFPointSelected2},
2416     {0, AC_WRITE, 0, nullptr, 19, AUTO, "MeteringMode", &saMeteringMode1_4},
2417     {0, AC_WRITE, 0, nullptr, 20, AUTO, "ISOSetting", &saISOSettingInterpreter},
2418     {0, AC_WRITE, 0, nullptr, 22, AUTO, "DynamicRangeOptimizerMode", &saDynamicRangeOptimizerMode},
2419     {0, AC_WRITE, 0, nullptr, 23, AUTO, "DynamicRangeOptimizerLevel", &stdInterpreter},
2420     {0, AC_WRITE, 0, nullptr, 24, AUTO, "CreativeStyle", &saCreativeStyle2},
2421     {0, AC_WRITE, 0, nullptr, 25, AUTO, "Sharpness", &stdInterpreter},
2422     {0, AC_WRITE, 0, nullptr, 26, AUTO, "Contrast", &stdInterpreter},
2423     {0, AC_WRITE, 0, nullptr, 27, AUTO, "Saturation", &stdInterpreter},
2424     {0, AC_WRITE, 0, nullptr, 35, AUTO, "FlashMode", &saFlashMode},
2425     {0, AC_WRITE, 0, nullptr, 38, AUTO, "HighISONoiseReduction", &saHighISONoiseReduction4},
2426     {0, AC_WRITE, 0, nullptr, 60, AUTO, "ExposureProgram", &saExposureProgram},
2427     {0, AC_WRITE, 0, nullptr, 63, AUTO, "Rotation", &saRotation},
2428     {0, AC_WRITE, 0, nullptr, 83, AUTO, "FocusStatus", &saFocusStatusInterpreter},
2429     {0, AC_WRITE, 0, nullptr, 84, AUTO, "SonyImageSize", &saSonyImageSize},
2430     {0, AC_WRITE, 0, nullptr, 85, AUTO, "AspectRatio", &saAspectRatio},
2431     {0, AC_WRITE, 0, nullptr, 86, AUTO, "Quality", &saQualityInterpreter2},
2432     {0, AC_WRITE, 0, nullptr, 88, AUTO, "ExposureLevelIncrements", &saExposureLevelIncrements},
2433     {0, AC_WRITE, 0, nullptr, 126, AUTO, "DriveMode", &saDriveMode2},
2434     {0, AC_WRITE, 0, nullptr, 131, AUTO, "ColorSpace", &saColorSpace5_6},
2435     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2436 };
2437 
2438 const TagAttrib sonyCameraSettingsAttribs3[] = {
2439     {0, AC_WRITE, 0, nullptr,  0, AUTO, "ShutterSpeedSetting", &saExposureTimeInterpreter},
2440     {0, AC_WRITE, 0, nullptr,  1, AUTO, "ApertureSetting", &saFNumberInterpreter},
2441     {0, AC_WRITE, 0, nullptr,  2, AUTO, "ISOSetting", &saISOSettingInterpreter},
2442     {0, AC_WRITE, 0, nullptr,  3, AUTO, "ExposureCompensationSet", &saExposureCompSetInterpreter},
2443     {0, AC_WRITE, 0, nullptr,  3, AUTO, "DriveModeSetting", &saDriveMode3},
2444     {0, AC_WRITE, 0, nullptr,  5, AUTO, "ExposureProgram", &saExposureProgram2},
2445     {0, AC_WRITE, 0, nullptr,  6, AUTO, "FocusModeSetting", &saFocusModeSetting3},
2446     {0, AC_WRITE, 0, nullptr,  7, AUTO, "MeteringMode", &saMeteringMode1_3},
2447     {0, AC_WRITE, 0, nullptr,  9, AUTO, "SonyImageSize", &saSonyImageSize3},
2448     {0, AC_WRITE, 0, nullptr, 10, AUTO, "AspectRatio", &saAspectRatio2},
2449     {0, AC_WRITE, 0, nullptr, 11, AUTO, "Quality", &saQualityInterpreter3},
2450     {0, AC_WRITE, 0, nullptr, 12, AUTO, "DynamicRangeOptimizerSetting", &saDynamicRangeOptimizerSetting},
2451     {0, AC_WRITE, 0, nullptr, 14, AUTO, "ColorSpace", &saColorSpace1_2},
2452     {0, AC_WRITE, 0, nullptr, 15, AUTO, "CreativeStyleSetting", &saCreativeStyleSetting},
2453     {0, AC_WRITE, 0, nullptr, 16, AUTO, "Contrast", &stdInterpreter},
2454     {0, AC_WRITE, 0, nullptr, 17, AUTO, "Saturation", &stdInterpreter},
2455     {0, AC_WRITE, 0, nullptr, 18, AUTO, "Sharpness", &stdInterpreter},
2456     {0, AC_WRITE, 0, nullptr, 22, AUTO, "WhiteBalance", &saWhiteBalanceSettingInterpreter},
2457     {0, AC_WRITE, 0, nullptr, 23, AUTO, "ColorTemperatureSetting", &saColorTemperatureSettingInterpreter},
2458     {0, AC_WRITE, 0, nullptr, 23, AUTO, "ColorCompensationFilterSet", &stdInterpreter},
2459     {0, AC_WRITE, 0, nullptr, 32, AUTO, "FlashMode", &saFlashMode2},
2460     {0, AC_WRITE, 0, nullptr, 33, AUTO, "FlashControl", &saFlashControl},
2461     {0, AC_WRITE, 0, nullptr, 35, AUTO, "FlashExposureCompSet", &saExposureCompSetInterpreter},
2462     {0, AC_WRITE, 0, nullptr, 36, AUTO, "AFAreaMode", &saAFAreaMode2},
2463     {0, AC_WRITE, 0, nullptr, 37, AUTO, "LongExposureNoiseReduction", &saOnOffInterpreter2},
2464     {0, AC_WRITE, 0, nullptr, 38, AUTO, "HighISONoiseReduction", &saHighISONoiseReduction5},
2465     {0, AC_WRITE, 0, nullptr, 39, AUTO, "SmileShutterMode", &saSmileShutterMode},
2466     {0, AC_WRITE, 0, nullptr, 40, AUTO, "RedEyeReduction", &saOnOffInterpreter2},
2467     {0, AC_WRITE, 0, nullptr, 45, AUTO, "HDRSetting", &saOnOffInterpreter3},
2468     {0, AC_WRITE, 0, nullptr, 46, AUTO, "HDRLevel", &saHDRLevel},
2469     {0, AC_WRITE, 0, nullptr, 47, AUTO, "ViewingMode", &saViewingMode},
2470     {0, AC_WRITE, 0, nullptr, 48, AUTO, "FaceDetection", &saOnOffInterpreter2},
2471     {0, AC_WRITE, 0, nullptr, 49, AUTO, "SmileShutter", &saOnOffInterpreter2},
2472     {0, AC_WRITE, 0, nullptr, 50, AUTO, "SweepPanoramaSize", &saSweepPanoramaSize},
2473     {0, AC_WRITE, 0, nullptr, 51, AUTO, "SweepPanoramaDirection", &saSweepPanoramaDirection},
2474     {0, AC_WRITE, 0, nullptr, 52, AUTO, "DriveMode", &saDriveMode3},
2475     {0, AC_WRITE, 0, nullptr, 53, AUTO, "MultiFrameNoiseReduction", &saOnOffInterpreter4},
2476     {0, AC_WRITE, 0, nullptr, 54, AUTO, "LiveViewAFSetting", &saLiveViewAFSetting},
2477     {0, AC_WRITE, 0, nullptr, 56, AUTO, "PanoramaSize3D", &saPanoramaSize3D},
2478     {0, AC_WRITE, 0, nullptr, 131, AUTO, "AFButtonPressed", &saNoYesInterpreter},
2479     {0, AC_WRITE, 0, nullptr, 132, AUTO, "LiveViewMetering", &saLiveViewMetering},
2480     {0, AC_WRITE, 0, nullptr, 133, AUTO, "ViewingMode2", &saViewingMode},
2481     {0, AC_WRITE, 0, nullptr, 134, AUTO, "AELock", &saOnOffInterpreter5},
2482     {0, AC_WRITE, 0, nullptr, 135, AUTO, "FlashAction", &saFlashAction},
2483     {0, AC_WRITE, 0, nullptr, 139, AUTO, "LiveViewFocusMode", &saLiveViewFocusMode},
2484     {0, AC_WRITE, 0, nullptr, 153, AUTO, "LensMount", &saLensMount},
2485     {0, AC_WRITE, 0, nullptr, 643, AUTO, "AFButtonPressed", &saNoYesInterpreter},
2486     {0, AC_WRITE, 0, nullptr, 644, AUTO, "LiveViewMetering", &saLiveViewMetering},
2487     {0, AC_WRITE, 0, nullptr, 645, AUTO, "ViewingMode2", &saViewingMode},
2488     {0, AC_WRITE, 0, nullptr, 646, AUTO, "AELock", &saOnOffInterpreter5},
2489     {0, AC_WRITE, 0, nullptr, 647, AUTO, "FlashAction", &saFlashAction},
2490     {0, AC_WRITE, 0, nullptr, 651, AUTO, "LiveViewFocusMode", &saLiveViewFocusMode},
2491     {0, AC_WRITE, 0, nullptr, 1015, SHORT, "LensType2", &saLensID2Interpreter},
2492     { -1, AC_DONTWRITE, 0,  nullptr, 0, AUTO, "", nullptr}
2493 };
2494 
2495 /*const TagAttrib sonyDNGMakerNote[]={
2496  {0, AC_WRITE, 0, 0, 0x7200, AUTO, "SonyOffset", &stdInterpreter},
2497  {0, AC_WRITE, 0, 0, 0x7201, AUTO, "SonyLength", &stdInterpreter},
2498  {0, AC_WRITE, 0, 0, 0x7221, AUTO, "SonyKey", &stdInterpreter},
2499  {-1, AC_DONTWRITE, 0,  0, 0, AUTO, "", NULL}};*/
2500 
2501 }
2502 #endif
2503 
2504 
2505