-
Notifications
You must be signed in to change notification settings - Fork 290
/
Copy pathcanonmn_int.cpp
3229 lines (2999 loc) · 150 KB
/
canonmn_int.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// SPDX-License-Identifier: GPL-2.0-or-later
/*
File: canonmn.cpp
Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
David Cannings (dc) <david@edeca.net>
Andi Clemens (ac) <andi.clemens@gmx.net>
*/
// included header files
#include "canonmn_int.hpp"
#include "error.hpp"
#include "exif.hpp"
#include "i18n.h" // NLS support.
#include "makernote_int.hpp"
#include "tags_int.hpp"
#include "types.hpp"
#include "utils.hpp"
#include "value.hpp"
// + standard includes
#include <cmath>
#include <iomanip>
#include <regex>
#include <sstream>
#include <string>
// *****************************************************************************
// class member definitions
namespace Exiv2::Internal {
//! OffOn, multiple tags
constexpr TagDetails canonOffOn[] = {
{0, N_("Off")},
{1, N_("On")},
};
std::ostream& printCsLensTypeByMetadata(std::ostream& os, const Value& value, const ExifData* metadata);
//! Special treatment pretty-print function for non-unique lens ids.
std::ostream& printCsLensFFFF(std::ostream& os, const Value& value, const ExifData* metadata);
//! ModelId, tag 0x0010
constexpr TagDetails canonModelId[] = {
{0x00000412, "EOS M50 / Kiss M"},
{0x00000801, "PowerShot SX740 HS"},
{0x00000804, "Powershot G5 X Mark II"},
{0x00000805, "PowerShot SX70 HS"},
{0x00000808, "PowerShot G7 X Mark III"},
{0x00000811, "EOS M6 Mark II"},
{0x00000812, "EOS M200"},
{0x01010000, "PowerShot A30"},
{0x01040000, "PowerShot S300 / Digital IXUS 300 / IXY Digital 300"},
{0x01060000, "PowerShot A20"},
{0x01080000, "PowerShot A10"},
{0x01090000, "PowerShot S110 / Digital IXUS v / IXY Digital 200"},
{0x01100000, "PowerShot G2"},
{0x01110000, "PowerShot S40"},
{0x01120000, "PowerShot S30"},
{0x01130000, "PowerShot A40"},
{0x01140000, "EOS D30"},
{0x01150000, "PowerShot A100"},
{0x01160000, "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a"},
{0x01170000, "PowerShot A200"},
{0x01180000, "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a"},
{0x01190000, "PowerShot G3"},
{0x01210000, "PowerShot S45"},
{0x01230000, "PowerShot SD100 / Digital IXUS II / IXY Digital 30"},
{0x01240000, "PowerShot S230 / Digital IXUS v3 / IXY Digital 320"},
{0x01250000, "PowerShot A70"},
{0x01260000, "PowerShot A60"},
{0x01270000, "PowerShot S400 / Digital IXUS 400 / IXY Digital 400"},
{0x01290000, "PowerShot G5"},
{0x01300000, "PowerShot A300"},
{0x01310000, "PowerShot S50"},
{0x01340000, "PowerShot A80"},
{0x01350000, "PowerShot SD10 / Digital IXUS i / IXY Digital L"},
{0x01360000, "PowerShot S1 IS"},
{0x01370000, "PowerShot Pro1"},
{0x01380000, "PowerShot S70"},
{0x01390000, "PowerShot S60"},
{0x01400000, "PowerShot G6"},
{0x01410000, "PowerShot S500 / Digital IXUS 500 / IXY Digital 500"},
{0x01420000, "PowerShot A75"},
{0x01440000, "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a"},
{0x01450000, "PowerShot A400"},
{0x01470000, "PowerShot A310"},
{0x01490000, "PowerShot A85"},
{0x01520000, "PowerShot S410 / Digital IXUS 430 / IXY Digital 450"},
{0x01530000, "PowerShot A95"},
{0x01540000, "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50"},
{0x01550000, "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40"},
{0x01560000, "PowerShot A520"},
{0x01570000, "PowerShot A510"},
{0x01590000, "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2"},
{0x01640000, "PowerShot S2 IS"},
{0x01650000, "PowerShot SD430 / Digital IXUS Wireless / IXY Digital Wireless"},
{0x01660000, "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600"},
{0x01668000, "EOS D60"},
{0x01700000, "PowerShot SD30 / Digital IXUS i Zoom / IXY Digital L3"},
{0x01740000, "PowerShot A430"},
{0x01750000, "PowerShot A410"},
{0x01760000, "PowerShot S80"},
{0x01780000, "PowerShot A620"},
{0x01790000, "PowerShot A610"},
{0x01800000, "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80"},
{0x01810000, "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60"},
{0x01820000, "PowerShot TX1"},
{0x01870000, "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55"},
{0x01880000, "PowerShot A420"},
{0x01890000, "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000"},
{0x01900000, "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700"},
{0x01920000, "PowerShot A700"},
{0x01940000, "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS"},
{0x01950000, "PowerShot S3 IS"},
{0x01960000, "PowerShot A540"},
{0x01970000, "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70"},
{0x01980000, "PowerShot G7"},
{0x01990000, "PowerShot A530"},
{0x02000000, "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS"},
{0x02010000, "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4"},
{0x02020000, "PowerShot A710 IS"},
{0x02030000, "PowerShot A640"},
{0x02040000, "PowerShot A630"},
{0x02090000, "PowerShot S5 IS"},
{0x02100000, "PowerShot A460"},
{0x02120000, "PowerShot SD850 IS / Digital IXUS 950 IS / IXY Digital 810 IS"},
{0x02130000, "PowerShot A570 IS"},
{0x02140000, "PowerShot A560"},
{0x02150000, "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90"},
{0x02160000, "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10"},
{0x02180000, "PowerShot A550"},
{0x02190000, "PowerShot A450"},
{0x02230000, "PowerShot G9"},
{0x02240000, "PowerShot A650 IS"},
{0x02260000, "PowerShot A720 IS"},
{0x02290000, "PowerShot SX100 IS"},
{0x02300000, "PowerShot SD950 IS / Digital IXUS 960 IS / IXY Digital 2000 IS"},
{0x02310000, "PowerShot SD870 IS / Digital IXUS 860 IS / IXY Digital 910 IS"},
{0x02320000, "PowerShot SD890 IS / Digital IXUS 970 IS / IXY Digital 820 IS"},
{0x02360000, "PowerShot SD790 IS / Digital IXUS 90 IS / IXY Digital 95 IS"},
{0x02370000, "PowerShot SD770 IS / Digital IXUS 85 IS / IXY Digital 25 IS"},
{0x02380000, "PowerShot A590 IS"},
{0x02390000, "PowerShot A580"},
{0x02420000, "PowerShot A470"},
{0x02430000, "PowerShot SD1100 IS / Digital IXUS 80 IS / IXY Digital 20 IS"},
{0x02460000, "PowerShot SX1 IS"},
{0x02470000, "PowerShot SX10 IS"},
{0x02480000, "PowerShot A1000 IS"},
{0x02490000, "PowerShot G10"},
{0x02510000, "PowerShot A2000 IS"},
{0x02520000, "PowerShot SX110 IS"},
{0x02530000, "PowerShot SD990 IS / Digital IXUS 980 IS / IXY Digital 3000 IS"},
{0x02540000, "PowerShot SD880 IS / Digital IXUS 870 IS / IXY Digital 920 IS"},
{0x02550000, "PowerShot E1"},
{0x02560000, "PowerShot D10"},
{0x02570000, "PowerShot SD960 IS / Digital IXUS 110 IS / IXY Digital 510 IS"},
{0x02580000, "PowerShot A2100 IS"},
{0x02590000, "PowerShot A480"},
{0x02600000, "PowerShot SX200 IS"},
{0x02610000, "PowerShot SD970 IS / Digital IXUS 990 IS / IXY Digital 830 IS"},
{0x02620000, "PowerShot SD780 IS / Digital IXUS 100 IS / IXY Digital 210 IS"},
{0x02630000, "PowerShot A1100 IS"},
{0x02640000, "PowerShot SD1200 IS / Digital IXUS 95 IS / IXY Digital 110 IS"},
{0x02700000, "PowerShot G11"},
{0x02710000, "PowerShot SX120 IS"},
{0x02720000, "PowerShot S90"},
{0x02750000, "PowerShot SX20 IS"},
{0x02760000, "PowerShot SD980 IS / Digital IXUS 200 IS / IXY Digital 930 IS"},
{0x02770000, "PowerShot SD940 IS / Digital IXUS 120 IS / IXY Digital 220 IS"},
{0x02800000, "PowerShot A495"},
{0x02810000, "PowerShot A490"},
{0x02820000, "PowerShot A3100/A3150 IS"},
{0x02830000, "PowerShot A3000 IS"},
{0x02840000, "PowerShot SD1400 IS / IXUS 130 / IXY 400F"},
{0x02850000, "PowerShot SD1300 IS / IXUS 105 / IXY 200F"},
{0x02860000, "PowerShot SD3500 IS / IXUS 210 / IXY 10S"},
{0x02870000, "PowerShot SX210 IS"},
{0x02880000, "PowerShot SD4000 IS / IXUS 300 HS / IXY 30S"},
{0x02890000, "PowerShot SD4500 IS / IXUS 1000 HS / IXY 50S"},
{0x02920000, "PowerShot G12"},
{0x02930000, "PowerShot SX30 IS"},
{0x02940000, "PowerShot SX130 IS"},
{0x02950000, "PowerShot S95"},
{0x02980000, "PowerShot A3300 IS"},
{0x02990000, "PowerShot A3200 IS"},
{0x03000000, "PowerShot ELPH 500 HS / IXUS 310 HS / IXY 31S"},
{0x03010000, "PowerShot Pro90 IS"},
{0x03010001, "PowerShot A800"},
{0x03020000, "PowerShot ELPH 100 HS / IXUS 115 HS / IXY 210F"},
{0x03030000, "PowerShot SX230 HS"},
{0x03040000, "PowerShot ELPH 300 HS / IXUS 220 HS / IXY 410F"},
{0x03050000, "PowerShot A2200"},
{0x03060000, "PowerShot A1200"},
{0x03070000, "PowerShot SX220 HS"},
{0x03080000, "PowerShot G1 X"},
{0x03090000, "PowerShot SX150 IS"},
{0x03100000, "PowerShot ELPH 510 HS / IXUS 1100 HS / IXY 51S"},
{0x03110000, "PowerShot S100 (new)"},
{0x03120000, "PowerShot ELPH 310 HS / IXUS 230 HS / IXY 600F"},
{0x03130000, "PowerShot SX40 HS"},
{0x03140000, "IXY 32S"},
{0x03160000, "PowerShot A1300"},
{0x03170000, "PowerShot A810"},
{0x03180000, "PowerShot ELPH 320 HS / IXUS 240 HS / IXY 420F"},
{0x03190000, "PowerShot ELPH 110 HS / IXUS 125 HS / IXY 220F"},
{0x03200000, "PowerShot D20"},
{0x03210000, "PowerShot A4000 IS"},
{0x03220000, "PowerShot SX260 HS"},
{0x03230000, "PowerShot SX240 HS"},
{0x03240000, "PowerShot ELPH 530 HS / IXUS 510 HS / IXY 1"},
{0x03250000, "PowerShot ELPH 520 HS / IXUS 500 HS / IXY 3"},
{0x03260000, "PowerShot A3400 IS"},
{0x03270000, "PowerShot A2400 IS"},
{0x03280000, "PowerShot A2300"},
{0x03320000, "PowerShot S100V"},
{0x03330000, "PowerShot G15"},
{0x03340000, "PowerShot SX50 HS"},
{0x03350000, "PowerShot SX160 IS"},
{0x03360000, "PowerShot S110 (new)"},
{0x03370000, "PowerShot SX500 IS"},
{0x03380000, "PowerShot N"},
{0x03390000, "IXUS 245 HS / IXY 430F"},
{0x03400000, "PowerShot SX280 HS"},
{0x03410000, "PowerShot SX270 HS"},
{0x03420000, "PowerShot A3500 IS"},
{0x03430000, "PowerShot A2600"},
{0x03440000, "PowerShot SX275 HS"},
{0x03450000, "PowerShot A1400"},
{0x03460000, "PowerShot ELPH 130 IS / IXUS 140 / IXY 110F"},
{0x03470000, "PowerShot ELPH 115/120 IS / IXUS 132/135 / IXY 90F/100F"},
{0x03490000, "PowerShot ELPH 330 HS / IXUS 255 HS / IXY 610F"},
{0x03510000, "PowerShot A2500"},
{0x03540000, "PowerShot G16"},
{0x03550000, "PowerShot S120"},
{0x03560000, "PowerShot SX170 IS"},
{0x03580000, "PowerShot SX510 HS"},
{0x03590000, "PowerShot S200 (new)"},
{0x03600000, "IXY 620F"},
{0x03610000, "PowerShot N100"},
{0x03640000, "PowerShot G1 X Mark II"},
{0x03650000, "PowerShot D30"},
{0x03660000, "PowerShot SX700 HS"},
{0x03670000, "PowerShot SX600 HS"},
{0x03680000, "PowerShot ELPH 140 IS / IXUS 150 / IXY 130"},
{0x03690000, "PowerShot ELPH 135 / IXUS 145 / IXY 120"},
{0x03700000, "PowerShot ELPH 340 HS / IXUS 265 HS / IXY 630"},
{0x03710000, "PowerShot ELPH 150 IS / IXUS 155 / IXY 140"},
{0x03740000, "EOS M3"},
{0x03750000, "PowerShot SX60 HS"},
{0x03760000, "PowerShot SX520 HS"},
{0x03770000, "PowerShot SX400 IS"},
{0x03780000, "PowerShot G7 X"},
{0x03790000, "PowerShot N2"},
{0x03800000, "PowerShot SX530 HS"},
{0x03820000, "PowerShot SX710 HS"},
{0x03830000, "PowerShot SX610 HS"},
{0x03840000, "EOS M10"},
{0x03850000, "PowerShot G3 X"},
{0x03860000, "PowerShot ELPH 165 HS / IXUS 165 / IXY 160"},
{0x03870000, "PowerShot ELPH 160 / IXUS 160"},
{0x03880000, "PowerShot ELPH 350 HS / IXUS 275 HS / IXY 640"},
{0x03890000, "PowerShot ELPH 170 IS / IXUS 170"},
{0x03910000, "PowerShot SX410 IS"},
{0x03930000, "PowerShot G9 X"},
{0x03940000, "EOS M5"},
{0x03950000, "PowerShot G5 X"},
{0x03970000, "PowerShot G7 X Mark II"},
{0x03980000, "EOS M100"},
{0x03990000, "PowerShot ELPH 360 HS / IXUS 285 HS / IXY 650"},
{0x04010000, "PowerShot SX540 HS"},
{0x04020000, "PowerShot SX420 IS"},
{0x04030000, "PowerShot ELPH 190 IS / IXUS 180 / IXY 190"},
{0x04040000, "PowerShot G1"},
{0x04040001, "PowerShot ELPH 180 IS / IXUS 175 / IXY 180"},
{0x04050000, "PowerShot SX720 HS"},
{0x04060000, "PowerShot SX620 HS"},
{0x04070000, "EOS M6"},
{0x04100000, "PowerShot G9 X Mark II"},
{0x04150000, "PowerShot ELPH 185 / IXUS 185 / IXY 200"},
{0x04160000, "PowerShot SX430 IS"},
{0x04170000, "PowerShot SX730 HS"},
{0x04180000, "PowerShot G1 X Mark III"},
{0x06040000, "PowerShot S100 / Digital IXUS / IXY Digital"},
{0x4007d673, "DC19/DC21/DC22"},
{0x4007d674, "XH A1"},
{0x4007d675, "HV10"},
{0x4007d676, "MD130/MD140/MD150/MD160/ZR850"},
{0x4007d777, "DC50"},
{0x4007d778, "HV20"},
{0x4007d779, "DC211"},
{0x4007d77a, "HG10"},
{0x4007d77b, "HR10"},
{0x4007d77d, "MD255/ZR950"},
{0x4007d81c, "HF11"},
{0x4007d878, "HV30"},
{0x4007d87c, "XH A1S"},
{0x4007d87e, "DC301/DC310/DC311/DC320/DC330"},
{0x4007d87f, "FS100"},
{0x4007d880, "HF10"},
{0x4007d882, "HG20/HG21"},
{0x4007d925, "HF21"},
{0x4007d926, "HF S11"},
{0x4007d978, "HV40"},
{0x4007d987, "DC410/DC411/DC420"},
{0x4007d988, "FS19/FS20/FS21/FS22/FS200"},
{0x4007d989, "HF20/HF200"},
{0x4007d98a, "HF S10/S100"},
{0x4007da8e, "HF R10/R16/R17/R18/R100/R106"},
{0x4007da8f, "HF M30/M31/M36/M300/M306"},
{0x4007da90, "HF S20/S21/S200"},
{0x4007da92, "FS31/FS36/FS37/FS300/FS305/FS306/FS307"},
{0x4007dca0, "EOS C300"},
{0x4007dda9, "HF G25"},
{0x4007dfb4, "XC10"},
{0x4007e1c3, "EOS C200"},
{0x80000001, "EOS-1D"},
{0x80000167, "EOS-1DS"},
{0x80000168, "EOS 10D"},
{0x80000169, "EOS-1D Mark III"},
{0x80000170, "EOS Digital Rebel / 300D / Kiss Digital"},
{0x80000174, "EOS-1D Mark II"},
{0x80000175, "EOS 20D"},
{0x80000176, "EOS Digital Rebel XSi / 450D / Kiss X2"},
{0x80000188, "EOS-1Ds Mark II"},
{0x80000189, "EOS Digital Rebel XT / 350D / Kiss Digital N"},
{0x80000190, "EOS 40D"},
{0x80000213, "EOS 5D"},
{0x80000215, "EOS-1Ds Mark III"},
{0x80000218, "EOS 5D Mark II"},
{0x80000219, "WFT-E1"},
{0x80000232, "EOS-1D Mark II N"},
{0x80000234, "EOS 30D"},
{0x80000236, "EOS Digital Rebel XTi / 400D / Kiss Digital X"},
{0x80000241, "WFT-E2"},
{0x80000246, "WFT-E3"},
{0x80000250, "EOS 7D"},
{0x80000252, "EOS Rebel T1i / 500D / Kiss X3"},
{0x80000254, "EOS Rebel XS / 1000D / Kiss F"},
{0x80000261, "EOS 50D"},
{0x80000269, "EOS-1D X"},
{0x80000270, "EOS Rebel T2i / 550D / Kiss X4"},
{0x80000271, "WFT-E4"},
{0x80000273, "WFT-E5"},
{0x80000281, "EOS-1D Mark IV"},
{0x80000285, "EOS 5D Mark III"},
{0x80000286, "EOS Rebel T3i / 600D / Kiss X5"},
{0x80000287, "EOS 60D"},
{0x80000288, "EOS Rebel T3 / 1100D / Kiss X50"},
{0x80000289, "EOS 7D Mark II"},
{0x80000297, "WFT-E2 II"},
{0x80000298, "WFT-E4 II"},
{0x80000301, "EOS Rebel T4i / 650D / Kiss X6i"},
{0x80000302, "EOS 6D"},
{0x80000324, "EOS-1D C"},
{0x80000325, "EOS 70D"},
{0x80000326, "EOS Rebel T5i / 700D / Kiss X7i"},
{0x80000327, "EOS Rebel T5 / 1200D / Kiss X70 / Hi"},
{0x80000328, "EOS-1D X Mark II"},
{0x80000331, "EOS M"},
{0x80000346, "EOS Rebel SL1 / 100D / Kiss X7"},
{0x80000347, "EOS Rebel T6s / 760D / 8000D"},
{0x80000349, "EOS 5D Mark IV"},
{0x80000350, "EOS 80D"},
{0x80000355, "EOS M2"},
{0x80000382, "EOS 5DS"},
{0x80000393, "EOS Rebel T6i / 750D / Kiss X8i"},
{0x80000401, "EOS 5DS R"},
{0x80000404, "EOS Rebel T6 / 1300D / Kiss X80"},
{0x80000405, "EOS Rebel T7i / 800D / Kiss X9i"},
{0x80000406, "EOS 6D Mark II"},
{0x80000408, "EOS 77D / 9000D"},
{0x80000417, "EOS Rebel SL2 / 200D / Kiss X9"},
{0x80000421, "EOS R5"},
{0x80000422, "EOS Rebel T100 / 4000D / 3000D"},
{0x80000424, "EOS R / Ra"},
{0x80000428, "EOS-1D X Mark III"},
{0x80000432, "EOS Rebel T7 / 2000D / 1500D / Kiss X90"},
{0x80000433, "EOS RP"},
{0x80000435, "EOS Rebel T8i / 850D / Kiss X10i"},
{0x80000436, "EOS Rebel SL3 / 250D / 200D Mark II / Kiss X10"},
{0x80000437, "EOS 90D"},
{0x80000450, "EOS R3"},
{0x80000453, "EOS R6"},
{0x80000464, "EOS R7"},
{0x80000465, "EOS R10"},
{0x80000467, "PowerShot ZOOM"},
{0x80000468, "EOS M50 Mark II / Kiss M2"},
{0x80000480, "EOS R50"},
{0x80000481, "EOS R6 Mark II"},
{0x80000487, "EOS R8"},
{0x80000491, "PowerShot V10"},
{0x80000495, "EOS R1"},
{0x80000496, "EOS R5 Mark II"},
{0x80000498, "EOS R100"},
{0x80000520, "EOS D2000C"},
{0x80000560, "EOS D6000C"},
};
//! SerialNumberFormat, tag 0x0015
constexpr TagDetails canonSerialNumberFormat[] = {
{0x90000000, N_("Format 1")},
{0xa0000000, N_("Format 2")},
};
//! SuperMacro, tag 0x001a
constexpr TagDetails canonSuperMacro[] = {
{0, N_("Off")},
{1, N_("On (1)")},
{2, N_("On (2)")},
};
// DateStampMode, tag 0x001c
constexpr TagDetails canonDateStampMode[] = {
{0, N_("Off")},
{1, N_("Date")},
{2, N_("Date & Time")},
};
// Categories, tag 0x0023
[[maybe_unused]] constexpr TagDetails canonCategories[] = {
{0x0001, N_("People")}, {0x0002, N_("Scenery")}, {0x0004, N_("Events")}, {0x0008, N_("User 1")},
{0x0016, N_("User 2")}, {0x0032, N_("User 3")}, {0x0064, N_("To Do")},
};
//! PictureStyle Values
constexpr TagDetails canonPictureStyle[] = {
{0x00, N_("None")}, {0x01, N_("Standard")}, {0x02, N_("Portrait")}, {0x03, N_("High Saturation")},
{0x04, N_("Adobe RGB")}, {0x05, N_("Low Saturation")}, {0x06, N_("CM Set 1")}, {0x07, N_("CM Set 2")},
{0x21, N_("User Def. 1")}, {0x22, N_("User Def. 2")}, {0x23, N_("User Def. 3")}, {0x41, N_("PC 1")},
{0x42, N_("PC 2")}, {0x43, N_("PC 3")}, {0x81, N_("Standard")}, {0x82, N_("Portrait")},
{0x83, N_("Landscape")}, {0x84, N_("Neutral")}, {0x85, N_("Faithful")}, {0x86, N_("Monochrome")},
{0x87, N_("Auto")}, {0x88, N_("Fine Detail")},
};
//! WhiteBalance, multiple tags
constexpr TagDetails canonSiWhiteBalance[] = {
{0, N_("Auto")}, {1, N_("Daylight")},
{2, N_("Cloudy")}, {3, N_("Tungsten")},
{4, N_("Fluorescent")}, {5, N_("Flash")},
{6, N_("Custom")}, {7, N_("Black & White")},
{8, N_("Shade")}, {9, N_("Manual Temperature (Kelvin)")},
{10, N_("PC Set 1")}, {11, N_("PC Set 2")},
{12, N_("PC Set 3")}, {14, N_("Daylight Fluorescent")},
{15, N_("Custom 1")}, {16, N_("Custom 2")},
{17, N_("Underwater")}, {18, N_("Custom 3")},
{19, N_("Custom 3")}, {20, N_("PC Set 4")},
{21, N_("PC Set 5")}, {23, N_("Auto (ambience priority)")},
};
//! ColorSpace, tag 0x00b4
constexpr TagDetails canonColorSpace[] = {
{1, N_("sRGB")},
{2, N_("Adobe RGB")},
{65535, N_("n/a")},
};
//! Canon AF Area Mode, tag 0x2601
constexpr TagDetails canonAFAreaMode[] = {
{0, N_("Off (Manual Focus)")},
{1, N_("AF Point Expansion (surround)")},
{2, N_("Single-point AF")},
{4, N_("Multi-point AF")},
{5, N_("Face Detect AF")},
{6, N_("Face + Tracking")},
{7, N_("Zone AF")},
{8, N_("AF Point Expansion (4 point)")},
{9, N_("Spot AF")},
{10, N_("AF Point Expansion (8 point)")},
{11, N_("Flexizone Multi (49 point)")},
{12, N_("Flexizone Multi (9 point)")},
{13, N_("Flexizone Single")},
{14, N_("Large Zone AF")},
};
// Canon MakerNote Tag Info
constexpr TagInfo CanonMakerNote::tagInfo_[] = {
{0x0000, "0x0000", "0x0000", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0001, "CameraSettings", N_("Camera Settings"), N_("Various camera settings"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printFocalLength},
{0x0003, "CanonFlashInfo", "Canon Flash Info", N_("Canon Flash Info"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0004, "ShotInfo", N_("Shot Info"), N_("Shot information"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0005, "Panorama", N_("Panorama"), N_("Panorama"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0006, "ImageType", N_("Image Type"), N_("Image type"), IfdId::canonId, SectionId::makerTags, asciiString, -1,
printValue},
{0x0007, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), IfdId::canonId, SectionId::makerTags,
asciiString, -1, printValue},
{0x0008, "FileNumber", N_("File Number"), N_("File number"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1,
print0x0008},
{0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), IfdId::canonId, SectionId::makerTags, asciiString, -1,
printValue},
{0x000a, "0x000a", N_("0x000a"), N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1,
print0x000a},
{0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), IfdId::canonId, SectionId::makerTags,
unsignedLong, -1, print0x000c},
{0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x000e, "FileLength", N_("FileLength"), N_("FileLength"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1,
printValue},
{0x000f, "CustomFunctions2", N_("Custom Functions 2"), N_("Custom Functions 2"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0010, "ModelID", N_("ModelID"), N_("Model ID"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1,
EXV_PRINT_TAG(canonModelId)},
{0x0011, "MovieInfo", N_("MovieInfo"), N_("Movie info"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0012, "PictureInfo", N_("Picture Info"), N_("Picture info"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0013, "ThumbnailImageValidArea", N_("Thumbnail Image Valid Area"), N_("Thumbnail image valid area"),
IfdId::canonId, SectionId::makerTags, signedShort, -1, printValue},
{0x0015, "SerialNumberFormat", N_("Serial Number Format"), N_("Serial number format"), IfdId::canonId,
SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonSerialNumberFormat)},
{0x001a, "SuperMacro", N_("Super Macro"), N_("Super macro"), IfdId::canonId, SectionId::makerTags, signedShort, -1,
EXV_PRINT_TAG(canonSuperMacro)},
{0x001c, "DateStampMode", N_("DateStampMode"), N_("Date stamp mode"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(canonDateStampMode)},
{0x001d, "MyColors", N_("MyColors"), N_("My_Colors"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x001e, "FirmwareRevision", N_("FirmwareRevision"), N_("Firmware revision"), IfdId::canonId, SectionId::makerTags,
unsignedLong, -1, printValue},
// {0x0023, "Categories", N_("Categories"), N_("Categories"), IfdId::canonId, SectionId::makerTags, unsignedLong -1,
// EXV_PRINT_TAG(canonCategories)},
{0x0024, "FaceDetect1", N_("FaceDetect1"), N_("FaceDetect1"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0025, "FaceDetect2", N_("FaceDetect2"), N_("FaceDetect2"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0026, "AFInfo", N_("AF Info"), N_("AF info"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0027, "ContrastInfo", N_("ContrastInfo"), N_("ContrastInfo"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0028, "ImageUniqueID", N_("ImageUniqueID"), N_("ImageUniqueID"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0029, "WBInfo", N_("WBInfo"), N_("WBInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x002f, "FaceDetect3", N_("FaceDetect3"), N_("FaceDetect3"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0035, "TimeInfo", N_("Time Info"), N_("Time zone information"), IfdId::canonId, SectionId::makerTags, signedLong,
-1, printValue},
{0x0038, "BatteryType", N_("BatteryType"), N_("BatteryType"), IfdId::canonId, SectionId::makerTags, unsignedLong,
-1, printValue},
{0x003c, "AFInfo3", N_("AFInfo3"), N_("AFInfo3"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0081, "RawDataOffset", N_("RawDataOffset"), N_("RawDataOffset"), IfdId::canonId, SectionId::makerTags,
signedLong, -1, printValue},
{0x0083, "OriginalDecisionDataOffset", N_("Original Decision Data Offset"), N_("Original decision data offset"),
IfdId::canonId, SectionId::makerTags, signedLong, -1, printValue},
// {0x0090, "CustomFunctions1D", N_("CustomFunctions1D"), N_("CustomFunctions1D"), IfdId::canonId,
// SectionId::makerTags, unsignedShort, -1, printValue}, // ToDo {0x0091, "PersonalFunctions",
// N_("PersonalFunctions"), N_("PersonalFunctions"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
// printValue}, // ToDo {0x0092, "PersonalFunctionValues", N_("PersonalFunctionValues"),
// N_("PersonalFunctionValues"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue}, // ToDo
{0x0093, "CanonFileInfo", N_("CanonFileInfo"), N_("CanonFileInfo"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0094, "AFPointsInFocus1D", N_("AFPointsInFocus1D"), N_("AFPointsInFocus1D"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0095, "LensModel", N_("Lens Model"), N_("Lens model"), IfdId::canonId, SectionId::makerTags, asciiString, -1,
printValue},
{0x0096, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), IfdId::canonId,
SectionId::makerTags, asciiString, -1, printValue},
{0x0097, "DustRemovalData", N_("Dust Removal Data"), N_("Dust removal data"), IfdId::canonId, SectionId::makerTags,
asciiString, -1, printValue},
{0x0099, "CustomFunctions", N_("Custom Functions"), N_("Custom functions"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x009a, "AspectInfo", N_("AspectInfo"), N_("AspectInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x00a0, "ProcessingInfo", N_("Processing Info"), N_("Processing info"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00a1, "ToneCurveTable", N_("ToneCurveTable"), N_("ToneCurveTable"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00a2, "SharpnessTable", N_("SharpnessTable"), N_("SharpnessTable"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00a3, "SharpnessFreqTable", N_("SharpnessFreqTable"), N_("SharpnessFreqTable"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x00a4, "WhiteBalanceTable", N_("White Balance Table"), N_("White balance table"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x00a9, "ColorBalance", N_("ColorBalance"), N_("ColorBalance"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00aa, "MeasuredColor", N_("Measured Color"), N_("Measured color"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00ae, "ColorTemperature", N_("ColorTemperature"), N_("ColorTemperature"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00b0, "CanonFlags", N_("CanonFlags"), N_("CanonFlags"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x00b1, "ModifiedInfo", N_("ModifiedInfo"), N_("ModifiedInfo"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00b2, "ToneCurveMatching", N_("ToneCurveMatching"), N_("ToneCurveMatching"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x00b3, "WhiteBalanceMatching", N_("WhiteBalanceMatching"), N_("WhiteBalanceMatching"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), IfdId::canonId, SectionId::makerTags, signedShort, -1,
EXV_PRINT_TAG(canonColorSpace)},
{0x00b5, "0x00b5", "0x00b5", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x00b6, "PreviewImageInfo", "PreviewImageInfo", N_("PreviewImageInfo"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x00c0, "0x00c0", "0x00c0", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x00c1, "0x00c1", "0x00c1", N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x00d0, "VRDOffset", N_("VRD Offset"), N_("VRD offset"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1,
printValue},
{0x00e0, "SensorInfo", N_("Sensor Info"), N_("Sensor info"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
// AFInfo2 structure has a special decoder, see decodeCanonAFInfo in
// tiffvisitor_int.cpp that decoder useses the below tags from
// 0x2600 to 0x2611
{0x2600, "AFInfoSize", N_("AF InfoSize"), N_("AF InfoSize"), IfdId::canonId, SectionId::makerTags, signedShort, -1,
printValue},
{0x2601, "AFAreaMode", N_("AF Area Mode"), N_("AF Area Mode"), IfdId::canonId, SectionId::makerTags, signedShort,
-1, EXV_PRINT_TAG(canonAFAreaMode)},
{0x2602, "AFNumPoints", N_("AF NumPoints"), N_("AF NumPoints"), IfdId::canonId, SectionId::makerTags, signedShort,
-1, printValue},
{0x2603, "AFValidPoints", N_("AF ValidPoints"), N_("AF ValidPoints"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x2604, "AFCanonImageWidth", N_("AF ImageWidth"), N_("AF ImageWidth"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x2605, "AFCanonImageHeight", N_("AF ImageHeight"), N_("AF ImageHeight"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x2606, "AFImageWidth", N_("AF Width"), N_("AF Width"), IfdId::canonId, SectionId::makerTags, signedShort, -1,
printValue},
{0x2607, "AFImageHeight", N_("AF Height"), N_("AF Height"), IfdId::canonId, SectionId::makerTags, signedShort, -1,
printValue},
{0x2608, "AFAreaWidths", N_("AF Area Widths"), N_("AF Area Widths"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x2609, "AFAreaHeights", N_("AF Area Heights"), N_("AF Area Heights"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x260a, "AFXPositions", N_("AF X Positions"), N_("AF X Positions"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x260b, "AFYPositions", N_("AF Y Positions"), N_("AF Y Positions"), IfdId::canonId, SectionId::makerTags,
signedShort, -1, printValue},
{0x260c, "AFPointsInFocus", N_("AF Points in Focus"), N_("AF Points in Focus"), IfdId::canonId,
SectionId::makerTags, signedShort, -1, printBitmask},
{0x260d, "AFPointsSelected", N_("AF Points Selected"), N_("AF Points Selected"), IfdId::canonId,
SectionId::makerTags, signedShort, -1, printBitmask},
{0x260e, "AFPointsUnusable", N_("AF Points Unusable"), N_("AF Points Unusable"), IfdId::canonId,
SectionId::makerTags, signedShort, -1, printBitmask},
{0x260f, "0x260f", "0x260f", N_("0x260f"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x2610, "0x2610", "0x2610", N_("0x2610"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x2611, "AFFineRotation", N_("AF Fine Rotation"),
N_("Mathematically positive (i.e. anti-clockwise) rotation of every AF rectangle in centidegrees"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x4001, "ColorData", N_("Color Data"), N_("Color data"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4002, "CRWParam", N_("CRWParam"), N_("CRWParam"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4003, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4005, "Flavor", N_("Flavor"), N_("Flavor"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x4008, "PictureStyleUserDef", N_("PictureStyleUserDef"), N_("PictureStyleUserDef"), IfdId::canonId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)},
// {0x4009, "PictureStylePC", N_("PictureStylePC"), N_("PictureStylePC"), IfdId::canonId, SectionId::makerTags,
// unsignedShort, -1, EXV_PRINT_TAG(canonPictureStyle)},
{0x4010, "CustomPictureStyleFileName", N_("CustomPictureStyleFileName"), N_("CustomPictureStyleFileName"),
IfdId::canonId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x4013, "AFMicroAdj", N_("AFMicroAdj"), N_("AFMicroAdj"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4015, "VignettingCorr", N_("VignettingCorr"), N_("VignettingCorr"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x4016, "VignettingCorr2", N_("VignettingCorr2"), N_("VignettingCorr2"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x4018, "LightingOpt", N_("LightingOpt"), N_("LightingOpt"), IfdId::canonId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x4019, "LensInfo", N_("LensInfo"), N_("LensInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4020, "AmbienceInfo", N_("AmbienceInfo"), N_("AmbienceInfo"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x4021, "MultiExp", N_("MultiExp"), N_("MultiExp"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4024, "FilterInfo", N_("FilterInfo"), N_("FilterInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4025, "HDRInfo", N_("HDRInfo"), N_("HDRInfo"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x4028, "AFConfig", N_("AFConfig"), N_("AFConfig"), IfdId::canonId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x403f, "RawBurstModeRoll", N_("RawBurstModeRoll"), N_("RawBurstModeRoll"), IfdId::canonId, SectionId::makerTags,
unsignedShort, -1, printValue},
// End of list marker
{0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"),
IfdId::canonId, SectionId::makerTags, asciiString, -1, printValue},
};
const TagInfo* CanonMakerNote::tagList() {
return tagInfo_;
}
// Canon Movie Info Tag
constexpr TagInfo CanonMakerNote::tagInfoMv_[] = {
{0x0001, "FrameRate", N_("FrameRate"), N_("FrameRate"), IfdId::canonMvId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0002, "FrameCount", N_("FrameCount"), N_("FrameCount"), IfdId::canonMvId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0004, "FrameCount", N_("FrameCount"), N_("FrameCount"), IfdId::canonMvId, SectionId::makerTags, unsignedLong, -1,
printValue},
{0x0006, "FrameRate", N_("FrameCount"), N_("FrameCount"), IfdId::canonMvId, SectionId::makerTags, unsignedRational,
-1, printValue},
{0x006a, "Duration", N_("Duration"), N_("Duration"), IfdId::canonMvId, SectionId::makerTags, unsignedLong, -1,
printValue},
{0x006c, "AudioBitrate", N_("Audio Bitrate"), N_("Audio Bitrate"), IfdId::canonMvId, SectionId::makerTags,
unsignedLong, -1, printValue},
{0x006e, "AudioSampleRate", N_("Audio Sample Rate"), N_("Audio Sample Rate"), IfdId::canonMvId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0070, "AudioChannels", N_("Audio Channels"), N_("Audio Channels"), IfdId::canonMvId, SectionId::makerTags,
unsignedLong, -1, printValue},
{0x0074, "VideoCodec", N_("Video Codec"), N_("Video Codec"), IfdId::canonMvId, SectionId::makerTags, asciiString,
-1, printValue},
};
const TagInfo* CanonMakerNote::tagListMv() {
return tagInfoMv_;
}
// MyColors, tag 0x001d
constexpr TagDetails canonMyColors[] = {
{0, N_("Off")}, {1, N_("Positive Film")}, {2, N_("Light Skin Tone")}, {3, N_("Dark Skin Tone")},
{4, N_("Vivid Blue")}, {5, N_("Vivid Green")}, {6, N_("Vivid Red")}, {7, N_("Color Accent")},
{8, N_("Color Swap")}, {9, N_("Custom")}, {12, N_("Vivid")}, {13, N_("Neutral")},
{14, N_("Sepia")}, {15, N_("B&W")},
};
// Canon My Colors Info Tag
constexpr TagInfo CanonMakerNote::tagInfoMc_[] = {
{0x0002, "MyColorMode", N_("My Color Mode"), N_("My Color Mode"), IfdId::canonMyColorID, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(canonMyColors)},
};
const TagInfo* CanonMakerNote::tagListMc() {
return tagInfoMc_;
}
// Canon FaceDetect 1 Info Tag
constexpr TagInfo CanonMakerNote::tagInfoFcd1_[] = {
{0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), IfdId::canonFcd1Id, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0003, "FacesDetectedFrameSize", N_("Faces Detected Frame Size"), N_("Faces Detected Frame Size"),
IfdId::canonFcd1Id, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0008, "Face1Position", N_("Face 1 Position"), N_("Face 1 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x000a, "Face2Position", N_("Face 2 Position"), N_("Face 2 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x000c, "Face3Position", N_("Face 3 Position"), N_("Face 3 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x000e, "Face4Position", N_("Face 4 Position"), N_("Face 4 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0010, "Face5Position", N_("Face 5 Position"), N_("Face 5 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0012, "Face6Position", N_("Face 6 Position"), N_("Face 6 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0014, "Face7Position", N_("Face 7 Position"), N_("Face 7 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0016, "Face8Position", N_("Face 8 Position"), N_("Face 8 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0018, "Face9Position", N_("Face 9 Position"), N_("Face 9 Position"), IfdId::canonFcd1Id, SectionId::makerTags,
signedShort, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListFcd1() {
return tagInfoFcd1_;
}
// Canon FaceDetect 2 Info Tag
constexpr TagInfo CanonMakerNote::tagInfoFcd2_[] = {
{0x0001, "FaceWidth", N_("Face Width"), N_("Faces Width"), IfdId::canonFcd2Id, SectionId::makerTags, unsignedByte,
-1, printValue},
{0x0002, "FacesDetected", N_("Faces Detected"), N_("Faces Detected"), IfdId::canonFcd2Id, SectionId::makerTags,
unsignedByte, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListFcd2() {
return tagInfoFcd2_;
}
// Canon ContrastInfo, tag 0x001d
constexpr TagDetails canonContrastInfo[] = {
{0x0, N_("Off")},
{0x8, N_("On")},
{0xfff, N_("n/a")},
};
// Canon Contrast Info Tag
constexpr TagInfo CanonMakerNote::tagInfoCo_[] = {
{0x0004, "IntelligentContrast", N_("Intelligent Contrast"), N_("Intelligent Contrast"), IfdId::canonContrastId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(canonContrastInfo)},
};
const TagInfo* CanonMakerNote::tagListCo() {
return tagInfoCo_;
}
// Canon WhiteBalance Info Tag
constexpr TagInfo CanonMakerNote::tagInfoWbi_[] = {
{0x0002, "WB_GRGBLevelsAuto", N_("WB_G RGB Levels Auto"), N_("WB_G RGB Levels Auto"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x000a, "WB_GRGBLevelsDaylight", N_("WB_G RGB Levels Daylight"), N_("WB_G RGB Levels Daylight"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0012, "WB_GRGBLevelsCloudy", N_("WB_G RGB Levels Cloudy"), N_("WB_G RGB Levels Cloudy"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x001a, "WB_GRGBLevelsTungsten", N_("WB_G RGB Levels Tungsten"), N_("WB_G RGB Levels Tungsten"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0022, "WB_GRGBLevelsFluorescent", N_("WB_G RGB Levels Fluorescent"), N_("WB_G RGB Levels Fluorescent"),
IfdId::canonWbId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x002a, "WB_GRGBLevelsFluorHigh", N_("WB_G RGB Levels Fluorescent High"), N_("WB_G RGB Levels Fluorescent High"),
IfdId::canonWbId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x0032, "WB_GRGBLevelsFlash", N_("WB_G RGB Levels Flash"), N_("WB_G RGB Levels Flash"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x003a, "WB_GRGBLevelsUnderwater", N_("WB_G RGB Levels Underwater"), N_("WB_G RGB Levels Underwater"),
IfdId::canonWbId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x0042, "WB_GRGBLevelsCustom1", N_("WB_G RGB Levels Custom 1"), N_("WB_G RGB Levels Custom 1"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x004a, "WB_GRGBLevelsCustom2", N_("WB_G RGB Levels Custom 2"), N_("WB_G RGB Levels Custom 2"), IfdId::canonWbId,
SectionId::makerTags, unsignedLong, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListWbi() {
return tagInfoWbi_;
}
// Canon FaceDetect 3 Info Tag
constexpr TagInfo CanonMakerNote::tagInfoFcd3_[] = {
{0x0003, "FacesDetected", N_("Face Detected"), N_("Faces Detected"), IfdId::canonFcd3Id, SectionId::makerTags,
unsignedShort, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListFcd3() {
return tagInfoFcd3_;
}
/*
// Canon Aspect Info, tag 0x001d
constexpr TagDetails canonAspectInfo[] = {
{ 0, N_("3:2") },
{ 1, N_("1:1") },
{ 2, N_("4:3") },
{ 7, N_("16:9") },
{ 8, N_("4:5") },
{ 12, N_("3:2 (APS-H crop)") },
{ 13, N_("3:2 (APS-C crop)") }
};
*/
// Canon Aspect Info Tag
constexpr TagInfo CanonMakerNote::tagInfoAs_[] = {
{0x0000, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), IfdId::canonAsId, SectionId::makerTags,
unsignedLong, -1, printValue},
{0x0001, "CroppedImageWidth", N_("Cropped Image Width"), N_("Cropped Image Width"), IfdId::canonAsId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0002, "CroppedImageHeight", N_("Cropped Image Height"), N_("Cropped Image Height"), IfdId::canonAsId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0003, "CroppedImageLeft", N_("Cropped Image Left"), N_("Cropped Image Left"), IfdId::canonAsId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0004, "CroppedImageTop", N_("Cropped Image Top"), N_("Cropped Image Top"), IfdId::canonAsId,
SectionId::makerTags, unsignedLong, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListAs() {
return tagInfoAs_;
}
// Canon Color Balance Info Tag
constexpr TagInfo CanonMakerNote::tagInfoCbi_[] = {
{0x0001, "WB_RGGBLevelsAuto", N_("WB_RGGB Levels Auto"), N_("WB_RGGB Levels Auto"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0005, "WB_RGGBLevelsDaylight", N_("WB_RGGB Levels Daylight"), N_("WB_RGGB Levels Daylight"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x000d, "WB_RGGBLevelsShade", N_("WB_RGGB Levels Shade"), N_("WB_RGGB Levels Shade"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x001a, "WB_RGGBLevelsCloudy", N_("WB_RGGB Levels Cloudy"), N_("WB_RGGB Levels Cloudy"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0011, "WB_RGGBLevelsTungsten", N_("WB_RGGB Levels Tungsten"), N_("WB_RGGB Levels Tungsten"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0015, "WB_RGGBLevelsFluorescent", N_("WB_RGGB Levels Fluorescent"), N_("WB_RGGB Levels Fluorescent"),
IfdId::canonCbId, SectionId::makerTags, signedShort, -1, printValue},
{0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x001d, "WB_RGGBLevelsCustomBlackLevels", N_("WB_RGGB Levels Custom Black Levels"),
N_("WB_RGGB Levels Custom Black Levels"), IfdId::canonCbId, SectionId::makerTags, signedShort, -1, printValue},
{0x0021, "WB_RGGBLevelsKelvin", N_("WB_RGGB Levels Kelvin"), N_("WB_RGGB Levels Kelvin"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0025, "WB_RGGBBlackLevels", N_("WB_RGGB Black Levels"), N_("WB_RGGB Black Levels"), IfdId::canonCbId,
SectionId::makerTags, signedShort, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListCbi() {
return tagInfoCbi_;
}
// Canon Flags Tag
constexpr TagInfo CanonMakerNote::tagInfoFl_[] = {
{0x0001, "ModifiedParamFlag", N_("Modified Param Flag"), N_("Modified Param Flag"), IfdId::canonFlId,
SectionId::makerTags, signedShort, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListFl() {
return tagInfoFl_;
}
// Canon Modified ToneCurve Info, tag 0x0001
constexpr TagDetails canonModifiedToneCurve[] = {
{0, N_("Standard")},
{1, N_("Manual")},
{2, N_("Custom")},
};
// Canon Modified Sharpness Freq Info, tag 0x0002
constexpr TagDetails canonModifiedSharpnessFreq[] = {
{0, N_("n/a")}, {1, N_("Lowest")}, {2, N_("Low")}, {3, N_("Standard")}, {4, N_("High")}, {5, N_("Highest")},
};
// Canon ModifiedInfo Tag
constexpr TagInfo CanonMakerNote::tagInfoMo_[] = {
{0x0001, "ModifiedToneCurve", N_("Modified ToneCurve"), N_("Modified ToneCurve"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedToneCurve)},
{0x0002, "ModifiedSharpness", N_("Modified Sharpness"), N_("Modified Sharpness"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonModifiedSharpnessFreq)},
{0x0003, "ModifiedSharpnessFreq", N_("Modified Sharpness Freq"), N_("Modified Sharpness Freq"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, printValue},
{0x0004, "ModifiedSensorRedLevel", N_("Modified Sensor Red Level"), N_("Modified Sensor Red Level"),
IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue},
{0x0005, "ModifiedSensorBlueLevel", N_("Modified Sensor Blue Level"), N_("Modified Sensor Blue Level"),
IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue},
{0x0006, "ModifiedWhiteBalanceRed", N_("Modified White Balance Red"), N_("Modified White Balance Red"),
IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue},
{0x0007, "ModifiedWhiteBalanceBlue", N_("Modified White Balance Blue"), N_("Modified White Balance Blue"),
IfdId::canonMoID, SectionId::makerTags, signedShort, -1, printValue},
{0x0008, "ModifiedWhiteBalance", N_("Modified White Balance"), N_("Modified White Balance"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonSiWhiteBalance)},
{0x0009, "ModifiedColorTemp", N_("Modified Color Temp"), N_("Modified Color Temp"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, printValue},
{0x000a, "ModifiedPictureStyle", N_("Modified Picture Style"), N_("Modified Picture Style"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonPictureStyle)},
{0x000b, "ModifiedDigitalGain", N_("Modified Param Flag"), N_("Modified Param Flag"), IfdId::canonMoID,
SectionId::makerTags, signedShort, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListMo() {
return tagInfoMo_;
}
// Canon Preview Quality Info, tag 0x0001
constexpr TagDetails canonPreviewQuality[] = {
{-1, N_("n/a")}, {1, N_("Economy")}, {2, N_("Normal")}, {3, N_("Fine")}, {4, N_("RAW")},
{5, N_("Superfine")}, {7, N_("CRAW")}, {130, N_("Normal Movie")}, {131, N_("Movie (2)")},
};
// Canon Preview Image Info Tag
constexpr TagInfo CanonMakerNote::tagInfoPreI_[] = {
{0x0001, "PreviewQuality", N_("Preview Quality"), N_("Preview Quality"), IfdId::canonPreID, SectionId::makerTags,
unsignedLong, -1, EXV_PRINT_TAG(canonPreviewQuality)},
{0x0002, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), IfdId::canonPreID,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0003, "PreviewImageWidth", N_("Preview Image Width"), N_("Preview Image Width"), IfdId::canonPreID,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0004, "PreviewImageHeight", N_("Preview Image Height"), N_("Preview Image Height"), IfdId::canonPreID,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0005, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), IfdId::canonPreID,
SectionId::makerTags, unsignedLong, -1, printValue},
};
const TagInfo* CanonMakerNote::tagListPreI() {
return tagInfoPreI_;
}
// Canon Color Info Tag
constexpr TagInfo CanonMakerNote::tagInfoCi_[] = {
{0x0001, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::canonCiId, SectionId::makerTags, signedShort, -1,
printValue},
{0x0002, "ColorTone", N_("Color Tone"), N_("Color Tone"), IfdId::canonCiId, SectionId::makerTags, signedShort, -1,
printValue},
{0x0003, "ColorSpace", N_("Color Space"), N_("Color Space"), IfdId::canonCiId, SectionId::makerTags, signedShort,
-1, EXV_PRINT_TAG(canonColorSpace)},
};
const TagInfo* CanonMakerNote::tagListCi() {
return tagInfoCi_;
}
// Canon AFMicroAdjMode Quality Info, tag 0x0001
constexpr TagDetails canonAFMicroAdjMode[] = {
{0, N_("Disable")},
{1, N_("Adjust all by the same amount")},
{2, N_("Adjust by lens")},
};
// Canon AFMicroAdj Info Tag
constexpr TagInfo CanonMakerNote::tagInfoAfMiAdj_[] = {
{0x0001, "AFMicroAdjMode", N_("AFMicroAdjMode"), N_("AFMicroAdjMode"), IfdId::canonAfMiAdjId, SectionId::makerTags,
signedLong, -1, EXV_PRINT_TAG(canonAFMicroAdjMode)},
{0x0002, "AFMicroAdjValue", N_("AF Micro Adj Value"), N_("AF Micro Adj Value"), IfdId::canonAfMiAdjId,
SectionId::makerTags, signedRational, -1, printValue},
{0xffff, "(UnknownCanonAFMicroAdjTag)", "(UnknownCanonAFMicroAdjTag)", N_("Unknown Canon AFMicroAdj tag"),
IfdId::canonAfMiAdjId, SectionId::makerTags, signedShort, 1, printValue},
};
const TagInfo* CanonMakerNote::tagListAfMiAdj() {
return tagInfoAfMiAdj_;
}
// Canon VignettingCorr Tag
constexpr TagInfo CanonMakerNote::tagInfoVigCor_[] = {
{0x0000, "VignettingCorrVersion", N_("Vignetting Corr Version"), N_("Vignetting Corr Version"),
IfdId::canonVigCorId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0002, "PeripheralLighting", N_("Peripheral Lighting"), N_("Peripheral Lighting"), IfdId::canonVigCorId,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)},
{0x0003, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion Correction"), IfdId::canonVigCorId,