-
Notifications
You must be signed in to change notification settings - Fork 284
/
olympusmn_int.cpp
1736 lines (1622 loc) · 84.2 KB
/
olympusmn_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
// *****************************************************************************
// included header files
#include "olympusmn_int.hpp"
#include "exif.hpp"
#include "i18n.h" // NLS support.
#include "makernote_int.hpp"
#include "tags_int.hpp"
#include "utils.hpp"
#include "value.hpp"
#include <array>
// *****************************************************************************
// class member definitions
namespace Exiv2::Internal {
//! OffOn, multiple tags
constexpr TagDetails olympusOffOn[] = {
{0, N_("Off")},
{1, N_("On")},
};
//! NoYes, multiple tags
constexpr TagDetails olympusNoYes[] = {
{0, N_("No")},
{1, N_("Yes")},
};
//! Quality, tag 0x0201
constexpr TagDetails olympusQuality[] = {
{1, N_("Standard Quality (SQ)")},
{2, N_("High Quality (HQ)")},
{3, N_("Super High Quality (SHQ)")},
{6, N_("Raw")},
};
//! Macro, tag 0x0202
constexpr TagDetails olympusMacro[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("Super macro")},
};
//! OneTouchWB, tag 0x0302
constexpr TagDetails olympusOneTouchWb[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("On (preset)")},
};
//! SceneMode, tag 0x403 and CameraSettings tag 0x509
constexpr TagDetails olympusSceneMode[] = {
{0, N_("Standard")},
{6, N_("Auto")},
{7, N_("Sport")},
{8, N_("Portrait")},
{9, N_("Landscape+Portrait")},
{10, N_("Landscape")},
{11, N_("Night Scene")},
{12, N_("Self Portrait")},
{13, N_("Panorama")},
{14, N_("2 in 1")},
{15, N_("Movie")},
{16, N_("Landscape+Portrait")},
{17, N_("Night+Portrait")},
{18, N_("Indoor")},
{19, N_("Fireworks")},
{20, N_("Sunset")},
{22, N_("Macro")},
{23, N_("Super Macro")},
{24, N_("Food")},
{25, N_("Documents")},
{26, N_("Museum")},
{27, N_("Shoot & Select")},
{28, N_("Beach & Snow")},
{29, N_("Self Portrait+Timer")},
{30, N_("Candle")},
{31, N_("Available Light")},
{32, N_("Behind Glass")},
{33, N_("My Mode")},
{34, N_("Pet")},
{35, N_("Underwater Wide1")},
{36, N_("Underwater Macro")},
{37, N_("Shoot & Select1")},
{38, N_("Shoot & Select2")},
{39, N_("High Key")},
{40, N_("Digital Image Stabilization")},
{41, N_("Auction")},
{42, N_("Beach")},
{43, N_("Snow")},
{44, N_("Underwater Wide2")},
{45, N_("Low Key")},
{46, N_("Children")},
{47, N_("Vivid")},
{48, N_("Nature Macro")},
{49, N_("Underwater Snapshot")},
{50, N_("Shooting Guide")},
};
//! FlashDevice, tag 0x1005
constexpr TagDetails olympusFlashDevice[] = {
{0, N_("None")},
{1, N_("Internal")},
{4, N_("External")},
{5, N_("Internal + External")},
};
//! FocusRange, tag 0x100a
constexpr TagDetails olympusFocusRange[] = {
{0, N_("Normal")},
{1, N_("Macro")},
};
//! FocusMode, tag 0x100b
constexpr TagDetails olympusFocusMode[] = {
{0, N_("Auto")},
{1, N_("Manual")},
};
//! Sharpness, tag 0x100f
constexpr TagDetails olympusSharpness[] = {
{0, N_("Normal")},
{1, N_("Hard")},
{2, N_("Soft")},
};
//! Contrast, tag 0x1029
constexpr TagDetails olympusContrast[] = {
{0, N_("High")},
{1, N_("Normal")},
{2, N_("Low")},
};
//! CCDScanMode, tag 0x1039
constexpr TagDetails olympusCCDScanMode[] = {
{0, N_("Interlaced")},
{1, N_("Progressive")},
};
// Olympus Tag Info
constexpr TagInfo OlympusMakerNote::tagInfo_[] = {
/* TODO:
add Minolta makenotes tags here (0x0000-0x0103). See Exiftool database.*/
{0x0000, "0x0000", "0x0000", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0100, "ThumbnailImage", N_("Thumbnail Image"), N_("Thumbnail image"), IfdId::olympusId, SectionId::makerTags,
undefined, -1, printValue},
{0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), IfdId::olympusId,
SectionId::makerTags, asciiString, -1, printValue},
{0x0200, "SpecialMode", N_("Special Mode"), N_("Picture taking mode"), IfdId::olympusId, SectionId::makerTags,
unsignedLong, -1, print0x0200},
{0x0201, "Quality", N_("Quality"), N_("Image quality setting"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusQuality)},
{0x0202, "Macro", N_("Macro"), N_("Macro mode"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG(olympusMacro)},
{0x0203, "BWMode", N_("Black & White Mode"), N_("Black and white mode"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x0204, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom ratio"), IfdId::olympusId, SectionId::makerTags,
unsignedRational, -1, print0x0204},
{0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), IfdId::olympusId,
SectionId::makerTags, unsignedRational, -1, printValue},
{0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), N_("Lens distortion parameters"),
IfdId::olympusId, SectionId::makerTags, signedShort, -1, printValue},
{0x0207, "CameraType", N_("Camera Type"), N_("Camera type"), IfdId::olympusId, SectionId::makerTags, asciiString,
-1, printValue},
{0x0208, "PictureInfo", N_("Picture Info"), N_("ASCII format data such as [PictureInfo]"), IfdId::olympusId,
SectionId::makerTags, asciiString, -1, printValue},
{0x0209, "CameraID", N_("Camera ID"), N_("Camera ID data"), IfdId::olympusId, SectionId::makerTags, asciiString, -1,
print0x0209},
{0x020b, "ImageWidth2", N_("Image Width 2"), N_("Image width 2"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x020c, "ImageHeight2", N_("Image Height 2"), N_("Image height 2"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x020d, "Software", N_("Software"), N_("Software"), IfdId::olympusId, SectionId::makerTags, asciiString, -1,
printValue},
{0x0280, "PreviewImage", N_("Preview Image"), N_("Preview image"), IfdId::olympusId, SectionId::makerTags,
unsignedByte, -1, printValue},
{0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), N_("Pre-capture frames"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0301, "WhiteBoard", N_("White Board"), N_("White board"), IfdId::olympusId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0302, "OneTouchWB", N_("One Touch WB"), N_("One touch white balance"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusOneTouchWb)},
{0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0304, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0403, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusSceneMode)},
{0x0404, "Firmware", N_("Firmware"), N_("Firmware"), IfdId::olympusId, SectionId::makerTags, asciiString, -1,
printValue},
{0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::olympusId, SectionId::makerTags, undefined,
-1, printValue},
{0x0f00, "DataDump1", N_("Data Dump 1"), N_("Various camera settings 1"), IfdId::olympusId, SectionId::makerTags,
undefined, -1, printValue},
{0x0f01, "DataDump2", N_("Data Dump 2"), N_("Various camera settings 2"), IfdId::olympusId, SectionId::makerTags,
undefined, -1, printValue},
{0x1000, "ShutterSpeed", N_("Shutter Speed"), N_("Shutter speed value"), IfdId::olympusId, SectionId::makerTags,
signedRational, -1, printValue},
{0x1001, "ISOSpeed", N_("ISO Speed"), N_("ISO speed value"), IfdId::olympusId, SectionId::makerTags, signedRational,
-1, printValue},
{0x1002, "ApertureValue", N_("Aperture Value"), N_("Aperture value"), IfdId::olympusId, SectionId::makerTags,
signedRational, -1, printValue},
{0x1003, "Brightness", N_("Brightness"), N_("Brightness value"), IfdId::olympusId, SectionId::makerTags,
signedRational, -1, printValue},
{0x1004, "FlashMode", N_("Flash Mode"), N_("Flash mode"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG(olympusOffOn)},
{0x1005, "FlashDevice", N_("Flash Device"), N_("Flash device"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusFlashDevice)},
{0x1006, "Bracket", N_("Bracket"), N_("Exposure compensation value"), IfdId::olympusId, SectionId::makerTags,
signedRational, -1, printValue},
{0x1007, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), IfdId::olympusId,
SectionId::makerTags, signedShort, -1, printValue},
{0x1008, "LensTemperature", N_("Lens Temperature"), N_("Lens temperature"), IfdId::olympusId, SectionId::makerTags,
signedShort, -1, printValue},
{0x1009, "LightCondition", N_("Light Condition"), N_("Light condition"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x100a, "FocusRange", N_("Focus Range"), N_("Focus range"), IfdId::olympusId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusFocusRange)},
{0x100b, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG(olympusFocusMode)},
{0x100c, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), IfdId::olympusId, SectionId::makerTags,
unsignedRational, -1, printValue},
{0x100d, "Zoom", N_("Zoom"), N_("Zoom step count"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x100e, "MacroFocus", N_("Macro Focus"), N_("Macro focus step count"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x100f, "SharpnessFactor", N_("Sharpness Factor"), N_("Sharpness factor"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusSharpness)},
{0x1010, "FlashChargeLevel", N_("Flash Charge Level"), N_("Flash charge level"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x1011, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x1012, "BlackLevel", N_("BlackLevel"), N_("Black level"), IfdId::olympusId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x1013, "0x1013", "0x1013", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x1014, "0x1014", "0x1014", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x1015, "WhiteBalance", N_("White Balance"), N_("White balance mode"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, print0x1015},
{0x1016, "0x1016", "0x1016", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x1017, "RedBalance", N_("Red Balance"), N_("Red balance"), IfdId::olympusId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x1018, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), N_("Color matrix number"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x101a, "SerialNumber2", N_("Serial Number 2"), N_("Serial number 2"), IfdId::olympusId, SectionId::makerTags,
asciiString, -1, printValue},
{0x101b, "0x101b", "0x101b", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x101c, "0x101c", "0x101c", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x101d, "0x101d", "0x101d", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x101e, "0x101e", "0x101e", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x101f, "0x101f", "0x101f", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x1020, "0x1020", "0x1020", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x1021, "0x1021", "0x1021", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x1022, "0x1022", "0x1022", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x1023, "FlashBias", N_("Flash Bias"), N_("Flash exposure compensation"), IfdId::olympusId, SectionId::makerTags,
signedRational, -1, printValue},
{0x1024, "0x1024", "0x1024", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x1025, "0x1025", "0x1025", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, signedRational, -1, printValue},
{0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x1028, "ExternalFlashMode", N_("External Flash Mode"), N_("External flash mode"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x1029, "Contrast", N_("Contrast"), N_("Contrast setting"), IfdId::olympusId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusContrast)},
{0x102a, "SharpnessFactor2", N_("Sharpness Factor 2"), N_("Sharpness factor 2"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x102b, "ColorControl", N_("Color Control"), N_("Color control"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x102c, "ValidBits", N_("ValidBits"), N_("Valid bits"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x102d, "CoringFilter", N_("CoringFilter"), N_("Coring filter"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x102e, "ImageWidth", N_("Image Width"), N_("Image width"), IfdId::olympusId, SectionId::makerTags, unsignedLong,
-1, printValue},
{0x102f, "ImageHeight", N_("Image Height"), N_("Image height"), IfdId::olympusId, SectionId::makerTags,
unsignedLong, -1, printValue},
{0x1030, "0x1030", "0x1030", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x1031, "0x1031", "0x1031", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x1032, "0x1032", "0x1032", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x1033, "0x1033", "0x1033", N_("Unknown"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x1034, "CompressionRatio", N_("Compression Ratio"), N_("Compression ratio"), IfdId::olympusId,
SectionId::makerTags, unsignedRational, -1, printValue},
{0x1035, "Thumbnail", N_("Thumbnail"), N_("Preview image embedded"), IfdId::olympusId, SectionId::makerTags,
unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), N_("Offset of the preview image"), IfdId::olympusId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x1037, "ThumbnailLength", N_("Thumbnail Length"), N_("Size of the preview image"), IfdId::olympusId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x1039, "CCDScanMode", N_("CCD Scan Mode"), N_("CCD scan mode"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusCCDScanMode)},
{0x103a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x103b, "InfinityLensStep", N_("Infinity Lens Step"), N_("Infinity lens step"), IfdId::olympusId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x103c, "NearLensStep", N_("Near Lens Step"), N_("Near lens step"), IfdId::olympusId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x2010, "Equipment", N_("Equipment Info"), N_("Camera equipment sub-IFD"), IfdId::olympusId, SectionId::makerTags,
unsignedLong, -1, printValue},
{0x2020, "CameraSettings", N_("Camera Settings"), N_("Camera Settings sub-IFD"), IfdId::olympusId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x2030, "RawDevelopment", N_("Raw Development"), N_("Raw development sub-IFD"), IfdId::olympusId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x2031, "RawDevelopment2", N_("Raw Development 2"), N_("Raw development 2 sub-IFD"), IfdId::olympusId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x2040, "ImageProcessing", N_("Image Processing"), N_("Image processing sub-IFD"), IfdId::olympusId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x2050, "FocusInfo", N_("Focus Info"), N_("Focus sub-IFD"), IfdId::olympusId, SectionId::makerTags, unsignedLong,
-1, printValue},
{0x3000, "RawInfo", N_("Raw Info"), N_("Raw sub-IFD"), IfdId::olympusId, SectionId::makerTags, unsignedLong, -1,
printValue},
// End of list marker
{0xffff, "(UnknownOlympusMakerNoteTag)", "(UnknownOlympusMakerNoteTag)", N_("Unknown OlympusMakerNote tag"),
IfdId::olympusId, SectionId::makerTags, asciiString, -1, printValue},
};
const TagInfo* OlympusMakerNote::tagList() {
return tagInfo_;
}
// Olympus CameraSettings Tags
//! ExposureMode, tag 0x0200
constexpr TagDetails olympusExposureMode[] = {
{1, N_("Manual")}, {2, N_("Program")}, {3, N_("Aperture-priority AE")}, {4, N_("Shutter speed priority AE")},
{5, N_("Program-shift")},
};
//! MeteringMode, tag 0x0202
constexpr TagDetails olympusMeteringMode[] = {
{2, N_("Center-weighted average")},
{3, N_("Spot")},
{5, N_("ESP")},
{261, N_("Pattern+AF")},
{515, N_("Spot+Highlight control")},
{1027, N_("Spot+Shadow control")},
};
//! MacroMode, tag 0x0300
constexpr TagDetails olympusMacroMode[] = {
{0, N_("Off")},
{1, N_("On")},
{2, N_("Super Macro")},
};
//! FocusMode, tag 0x0301
[[maybe_unused]] constexpr TagDetails olympusCsFocusMode[] = {
{0, N_("Single AF")}, {1, N_("Sequential shooting AF")}, {2, N_("Continuous AF")}, {3, N_("Multi AF")},
{10, N_("MF")},
};
//! FocusProcess, tag 0x0302
constexpr TagDetails olympusFocusProcess[] = {
{0, N_("AF Not Used")},
{1, N_("AF Used")},
};
//! AFSearch, tag 0x0303
constexpr TagDetails olympusAFSearch[] = {
{0, N_("Not Ready")},
{1, N_("Ready")},
};
//! FlashMode, tag 0x0400
constexpr TagDetailsBitmask olympusFlashMode[] = {
{0x0000, N_("Off")}, {0x0001, N_("On")}, {0x0002, N_("Fill-in")}, {0x0004, N_("Red-eye")},
{0x0008, N_("Slow-sync")}, {0x0010, N_("Forced On")}, {0x0020, N_("2nd Curtain")},
};
//! FlashRemoteControl, tag 0x0403
constexpr TagDetails olympusFlashRemoteControl[] = {
{0x0, N_("Off")},
{0x1, N_("Channel 1, Low")},
{0x2, N_("Channel 2, Low")},
{0x3, N_("Channel 3, Low")},
{0x4, N_("Channel 4, Low")},
{0x9, N_("Channel 1, Mid")},
{0xa, N_("Channel 2, Mid")},
{0xb, N_("Channel 3, Mid")},
{0xc, N_("Channel 4, Mid")},
{0x11, N_("Channel 1, High")},
{0x12, N_("Channel 2, High")},
{0x13, N_("Channel 3, High")},
{0x14, N_("Channel 4, High")},
};
//! FlashControlMode, tag 0x0404
constexpr TagDetails olympusFlashControlMode[] = {
{0, N_("Off")},
{3, N_("TTL")},
{4, N_("Auto")},
{5, N_("Manual")},
};
//! WhiteBalance, tag 0x0500
constexpr TagDetails olympusWhiteBalance[] = {
{0, N_("Auto")},
{1, N_("Auto (Keep Warm Color Off)")},
{16, N_("7500K (Fine Weather with Shade)")},
{17, N_("6000K (Cloudy)")},
{18, N_("5300K (Fine Weather)")},
{20, N_("3000K (Tungsten light)")},
{21, N_("3600K (Tungsten light-like)")},
{22, N_("Auto Setup")},
{23, N_("5500K (Flash)")},
{33, N_("6600K (Daylight fluorescent)")},
{34, N_("4500K (Neutral white fluorescent)")},
{35, N_("4000K (Cool white fluorescent)")},
{36, N_("White Fluorescent")},
{48, N_("3600K (Tungsten light-like)")},
{67, N_("Underwater")},
{256, N_("One Touch WB 1")},
{257, N_("One Touch WB 2")},
{258, N_("One Touch WB 3")},
{259, N_("One Touch WB 4")},
{512, N_("Custom WB 1")},
{513, N_("Custom WB 2")},
{514, N_("Custom WB 3")},
{515, N_("Custom WB 4")},
};
//! ModifiedSaturation, tag 0x0504
constexpr TagDetails olympusModifiedSaturation[] = {
{0, N_("Off")},
{1, N_("CM1 (Red Enhance)")},
{2, N_("CM2 (Green Enhance)")},
{3, N_("CM3 (Blue Enhance)")},
{4, N_("CM4 (Skin Tones)")},
};
//! ColorSpace, tag 0x0507
constexpr TagDetails olympusColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
{2, N_("Pro Photo RGB")},
};
//! NoiseReduction, tag 0x050a
constexpr TagDetailsBitmask olympusNoiseReduction[] = {
{0x0001, N_("Noise Reduction")},
{0x0002, N_("Noise Filter")},
{0x0004, N_("Noise Filter (ISO Boost)")},
{0x0008, N_("Auto")},
};
//! PictureMode, tag 0x0520
constexpr TagDetails olympusPictureMode[] = {
{1, N_("Vivid")},
{2, N_("Natural")},
{3, N_("Muted")},
{4, N_("Portrait")},
{5, N_("i-Enhance")},
{6, N_("e-Portrait")},
{7, N_("Color Creator")},
{9, N_("Color Profile 1")},
{10, N_("Color Profile 2")},
{11, N_("Color Profile 3")},
{12, N_("Monochrome Profile 1")},
{13, N_("Monochrome Profile 2")},
{14, N_("Monochrome Profile 3")},
{256, N_("Monotone")},
{512, N_("Sepia")},
};
//! PictureModeBWFilter, tag 0x0525
constexpr TagDetails olympusPictureModeBWFilter[] = {
{0, N_("n/a")}, {1, N_("Neutral")}, {2, N_("Yellow")}, {3, N_("Orange")}, {4, N_("Red")}, {5, N_("Green")},
};
//! PictureModeTone, tag 0x0526
constexpr TagDetails olympusPictureModeTone[] = {
{0, N_("n/a")}, {1, N_("Neutral")}, {2, N_("Sepia")}, {3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")},
};
constexpr TagDetails artFilters[] = {
{0, N_("Off")},
{1, N_("Soft Focus")},
{2, N_("Pop Art")},
{3, N_("Pale & Light Color")},
{4, N_("Light Tone")},
{5, N_("Pin Hole")},
{6, N_("Grainy Film")},
{9, N_("Diorama")},
{10, N_("Cross Process")},
{12, N_("Fish Eye")},
{13, N_("Drawing")},
{14, N_("Gentle Sepia")},
{15, N_("Pale & Light Color II")},
{16, N_("Pop Art II")},
{17, N_("Pin Hole II")},
{18, N_("Pin Hole III")},
{19, N_("Grainy Film II")},
{20, N_("Dramatic Tone")},
{21, N_("Punk")},
{22, N_("Soft Focus 2")},
{23, N_("Sparkle")},
{24, N_("Watercolor")},
{25, N_("Key Line")},
{26, N_("Key Line II")},
{27, N_("Miniature")},
{28, N_("Reflection")},
{29, N_("Fragmented")},
{31, N_("Cross Process II")},
{32, N_("Dramatic Tone II")},
{33, N_("Watercolor I")},
{34, N_("Watercolor II")},
{35, N_("Diorama II")},
{36, N_("Vintage")},
{37, N_("Vintage II")},
{38, N_("Vintage III")},
{39, N_("Partial Color")},
{40, N_("Partial Color II")},
{41, N_("Partial Color III")},
};
//! OlympusCs Quality, tag 0x0603
constexpr TagDetails olympusCsQuality[] = {
{1, N_("SQ")},
{2, N_("HQ")},
{3, N_("SHQ")},
{4, N_("RAW")},
};
//! Olympus ImageStabilization, tag 0x0604
static constexpr TagDetails olympusImageStabilization[] = {
{0, N_("Off")}, {1, N_("S-IS 1")}, {2, N_("S-IS 2")}, {3, N_("S-IS 3")}, {4, N_("S-IS AUTO")},
};
constexpr TagInfo OlympusMakerNote::tagInfoCs_[] = {
{0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), IfdId::olympusCsId,
SectionId::makerTags, undefined, -1, printExifVersion},
{0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), IfdId::olympusCsId,
SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusNoYes)},
{0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), IfdId::olympusCsId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), IfdId::olympusCsId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusExposureMode)},
{0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusOffOn)},
{0x0202, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusMeteringMode)},
{0x0203, "ExposureShift", N_("Exposure Shift"), N_("Exposure shift"), IfdId::olympusCsId, SectionId::makerTags,
signedRational, -1, printValue},
{0x0300, "MacroMode", N_("Macro Mode"), N_("Macro mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusMacroMode)},
{0x0301, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, printCs0x0301},
{0x0302, "FocusProcess", N_("Focus Process"), N_("Focus process"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusFocusProcess)},
{0x0303, "AFSearch", N_("AF Search"), N_("AF search"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG(olympusAFSearch)},
{0x0304, "AFAreas", N_("AF Areas"), N_("AF areas"), IfdId::olympusCsId, SectionId::makerTags, unsignedLong, -1,
printValue},
{0x0305, "AFPointSelected", N_("AFPointSelected"), N_("AFPointSelected"), IfdId::olympusCsId, SectionId::makerTags,
signedRational, -1, printValue},
{0x0307, "AFFineTuneAdj", N_("AF Fine Tune Adjust"), N_("AF fine tune adjust"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0400, "FlashMode", N_("Flash Mode"), N_("Flash mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG_BITMASK(olympusFlashMode)},
{0x0401, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation"),
IfdId::olympusCsId, SectionId::makerTags, signedRational, -1, printValue},
{0x0403, "FlashRemoteControl", N_("Flash Remote Control"), N_("Flash remote control"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashRemoteControl)},
{0x0404, "FlashControlMode", N_("Flash Control Mode"), N_("Flash control mode"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashControlMode)},
{0x0405, "FlashIntensity", N_("Flash Intensity"), N_("Flash intensity"), IfdId::olympusCsId, SectionId::makerTags,
signedRational, -1, printValue},
{0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), IfdId::olympusCsId,
SectionId::makerTags, signedRational, -1, printValue},
{0x0500, "WhiteBalance", N_("White Balance 2"), N_("White balance 2"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusWhiteBalance)},
{0x0501, "WhiteBalanceTemperature", N_("White Balance Temperature"), N_("White balance temperature"),
IfdId::olympusCsId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0502, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0503, "CustomSaturation", N_("Custom Saturation"), N_("Custom saturation"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0504, "ModifiedSaturation", N_("Modified Saturation"), N_("Modified saturation"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusModifiedSaturation)},
{0x0505, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0506, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0507, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusColorSpace)},
{0x0509, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusSceneMode)},
{0x050a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)},
{0x050b, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x050c, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x050d, "CompressionFactor", N_("Compression Factor"), N_("Compression factor"), IfdId::olympusCsId,
SectionId::makerTags, unsignedRational, -1, printValue},
{0x050f, "Gradation", N_("Gradation"), N_("Gradation"), IfdId::olympusCsId, SectionId::makerTags, signedShort, -1,
print0x050f},
{0x0520, "PictureMode", N_("Picture Mode"), N_("Picture mode"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusPictureMode)},
{0x0521, "PictureModeSaturation", N_("Picture Mode Saturation"), N_("Picture mode saturation"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0522, "PictureModeHue", N_("Picture Mode Hue"), N_("Picture mode hue"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0523, "PictureModeContrast", N_("Picture Mode Contrast"), N_("Picture mode contrast"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0524, "PictureModeSharpness", N_("Picture Mode Sharpness"), N_("Picture mode sharpness"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0525, "PictureModeBWFilter", N_("Picture Mode BW Filter"), N_("Picture mode BW filter"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeBWFilter)},
{0x0526, "PictureModeTone", N_("Picture Mode Tone"), N_("Picture mode tone"), IfdId::olympusCsId,
SectionId::makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeTone)},
{0x0527, "NoiseFilter", N_("Noise Filter"), N_("Noise filter"), IfdId::olympusCsId, SectionId::makerTags,
signedShort, -1, print0x0527},
{0x0529, "ArtFilter", N_("Art Filter"), N_("Art filter"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, print0x0529},
{0x052c, "MagicFilter", N_("Magic Filter"), N_("Magic filter"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, print0x0529},
{0x0600, "DriveMode", N_("Drive Mode"), N_("Drive mode"), IfdId::olympusCsId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0601, "PanoramaMode", N_("Panorama Mode"), N_("Panorama mode"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0603, "Quality", N_("Image Quality 2"), N_("Image quality 2"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusCsQuality)},
{0x0604, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::olympusCsId,
SectionId::makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusImageStabilization)},
{0x0900, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), IfdId::olympusCsId,
SectionId::makerTags, signedLong, -1, printValue},
{0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x0903, "LevelGaugeRoll", N_("Level Gauge Roll"), N_("Level gauge roll"), IfdId::olympusCsId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x0904, "LevelGaugePitch", N_("Level Gauge Pitch"), N_("Level gauge pitch"), IfdId::olympusCsId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
// End of list marker
{0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), IfdId::olympusCsId,
SectionId::makerTags, asciiString, -1, printValue},
};
const TagInfo* OlympusMakerNote::tagListCs() {
return tagInfoCs_;
}
//! OlympusEq FlashType, tag 0x1000
constexpr TagDetails olympusEqFlashType[] = {
{0, N_("None")},
{2, N_("Simple E-System")},
{3, N_("E-System")},
};
//! OlympusEq FlashModel, tag 0x1001
constexpr TagDetails olympusEqFlashModel[] = {
{0, N_("None")}, {1, "FL-20"}, {2, "FL-50"}, {3, "RF-11"}, {4, "TF-22"}, {5, "FL-36"},
{6, "FL-50R"}, {7, "FL-36R"}, {9, "FL-14"}, {11, "FL-600R"}, {11, "FL-600R"} // To silence compiler warning
};
constexpr TagInfo OlympusMakerNote::tagInfoEq_[] = {
{0x0000, "EquipmentVersion", N_("Equipment Version"), N_("Equipment version"), IfdId::olympusEqId,
SectionId::makerTags, undefined, -1, printExifVersion},
{0x0100, "CameraType", N_("Camera Type"), N_("Camera type"), IfdId::olympusEqId, SectionId::makerTags, asciiString,
-1, printValue},
{0x0101, "SerialNumber", N_("Serial Number"), N_("Serial number"), IfdId::olympusEqId, SectionId::makerTags,
asciiString, -1, printValue},
{0x0102, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), IfdId::olympusEqId,
SectionId::makerTags, asciiString, -1, printValue},
{0x0103, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), IfdId::olympusEqId,
SectionId::makerTags, unsignedRational, -1, printValue},
{0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), IfdId::olympusEqId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0201, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::olympusEqId, SectionId::makerTags, unsignedByte, -1,
print0x0201},
{0x0202, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), IfdId::olympusEqId,
SectionId::makerTags, asciiString, -1, printValue},
{0x0203, "LensModel", N_("Lens Model"), N_("Lens model"), IfdId::olympusEqId, SectionId::makerTags, asciiString, -1,
printValue},
{0x0204, "LensFirmwareVersion", N_("Lens Firmware Version"), N_("Lens firmware version"), IfdId::olympusEqId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x0205, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"),
IfdId::olympusEqId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0206, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"),
IfdId::olympusEqId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x0207, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), IfdId::olympusEqId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0208, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), IfdId::olympusEqId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x020a, "MaxApertureAtCurrentFocal", N_("Max Aperture At Current Focal"), N_("Max aperture at current focal"),
IfdId::olympusEqId, SectionId::makerTags, unsignedShort, -1, printValue},
{0x020b, "LensProperties", N_("Lens Properties"), N_("Lens properties"), IfdId::olympusEqId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0301, "Extender", N_("Extender"), N_("Extender"), IfdId::olympusEqId, SectionId::makerTags, unsignedByte, -1,
printEq0x0301},
{0x0302, "ExtenderSerialNumber", N_("Extender Serial Number"), N_("Extender serial number"), IfdId::olympusEqId,
SectionId::makerTags, asciiString, -1, printValue},
{0x0303, "ExtenderModel", N_("Extender Model"), N_("Extender model"), IfdId::olympusEqId, SectionId::makerTags,
asciiString, -1, printValue},
{0x0304, "ExtenderFirmwareVersion", N_("Extender Firmware Version"), N_("Extender firmware version"),
IfdId::olympusEqId, SectionId::makerTags, unsignedLong, -1, printValue},
{0x0403, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), IfdId::olympusEqId, SectionId::makerTags,
asciiString, -1, printValue},
{0x1000, "FlashType", N_("Flash Type"), N_("Flash type"), IfdId::olympusEqId, SectionId::makerTags, unsignedShort,
-1, EXV_PRINT_TAG(olympusEqFlashType)},
{0x1001, "FlashModel", N_("Flash Model"), N_("Flash model"), IfdId::olympusEqId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashModel)},
{0x1002, "FlashFirmwareVersion", N_("Flash Firmware Version"), N_("Flash firmware version"), IfdId::olympusEqId,
SectionId::makerTags, unsignedLong, -1, printValue},
{0x1003, "FlashSerialNumber", N_("FlashSerialNumber"), N_("FlashSerialNumber"), IfdId::olympusEqId,
SectionId::makerTags, asciiString, -1, printValue},
// End of list marker
{0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), IfdId::olympusEqId,
SectionId::makerTags, asciiString, -1, printValue},
};
const TagInfo* OlympusMakerNote::tagListEq() {
return tagInfoEq_;
}
//! OlympusRd ColorSpace, tag 0x0108
constexpr TagDetails olympusRdColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
{2, N_("Pro Photo RGB")},
};
//! OlympusRd Engine, tag 0x0109
constexpr TagDetails olympusRdEngine[] = {
{0, N_("High Speed")},
{1, N_("High Function")},
{2, N_("Advanced High Speed")},
{3, N_("Advanced High Function")},
};
//! OlympusRd EditStatus, tag 0x010b
constexpr TagDetails olympusRdEditStatus[] = {
{0, N_("Original")},
{1, N_("Edited (Landscape)")},
{6, N_("Edited (Portrait)")},
{8, N_("Edited (Portrait)")},
};
//! OlympusRd Settings, tag 0x010c
constexpr TagDetailsBitmask olympusRdSettings[] = {
{0x0001, N_("WB Color Temp")}, {0x0004, N_("WB Gray Point")}, {0x0008, N_("Saturation")},
{0x0010, N_("Contrast")}, {0x0020, N_("Sharpness")}, {0x0040, N_("Color Space")},
{0x0080, N_("High Function")}, {0x0100, N_("Noise Reduction")},
};
constexpr TagInfo OlympusMakerNote::tagInfoRd_[] = {
{0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), IfdId::olympusRdId,
SectionId::makerTags, undefined, -1, printExifVersion},
{0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), IfdId::olympusRdId,
SectionId::makerTags, signedRational, -1, printValue},
{0x0101, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), IfdId::olympusRdId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0102, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("WB fine adjustment"), IfdId::olympusRdId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0103, "GrayPoint", N_("Gray Point"), N_("Gray point"), IfdId::olympusRdId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0104, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), IfdId::olympusRdId,
SectionId::makerTags, signedShort, -1, printValue},
{0x0105, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), IfdId::olympusRdId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0106, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), IfdId::olympusRdId, SectionId::makerTags,
signedShort, -1, printValue},
{0x0107, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), IfdId::olympusRdId, SectionId::makerTags,
signedShort, -1, printValue},
{0x0108, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::olympusRdId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRdColorSpace)},
{0x0109, "Engine", N_("Engine"), N_("Engine"), IfdId::olympusRdId, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG(olympusRdEngine)},
{0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusRdId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)},
{0x010b, "EditStatus", N_("Edit Status"), N_("Edit status"), IfdId::olympusRdId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRdEditStatus)},
{0x010c, "Settings", N_("Settings"), N_("Settings"), IfdId::olympusRdId, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG_BITMASK(olympusRdSettings)},
// End of list marker
{0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), IfdId::olympusRdId,
SectionId::makerTags, asciiString, -1, printValue},
};
const TagInfo* OlympusMakerNote::tagListRd() {
return tagInfoRd_;
}
//! OlympusRd2 WhiteBalance, tag 0x0101
constexpr TagDetails olympusRd2WhiteBalance[] = {
{1, N_("Color Temperature")},
{2, N_("Gray Point")},
};
//! OlympusRd2 ColorSpace, tag 0x0109
constexpr TagDetails olympusRd2ColorSpace[] = {
{0, N_("sRGB")},
{1, N_("Adobe RGB")},
{2, N_("Pro Photo RGB")},
};
//! OlympusRd2 Engine, tag 0x010b
constexpr TagDetails olympusRd2Engine[] = {
{0, N_("High Speed")},
{1, N_("High Function")},
};
//! OlympusRd2 PictureMode, tag 0x010c
constexpr TagDetails olympusRd2PictureMode[] = {
{1, N_("Vivid")}, {2, N_("Natural")}, {3, N_("Muted")}, {256, N_("Monotone")}, {512, N_("Sepia")},
};
//! OlympusRd2 PM_BWFilter, tag 0x0110
constexpr TagDetails olympusRd2PM_BWFilter[] = {
{1, N_("Neutral")}, {2, N_("Yellow")}, {3, N_("Orange")}, {4, N_("Red")}, {5, N_("Green")},
};
//! OlympusRd2 PMPictureTone, tag 0x0111
constexpr TagDetails olympusRd2PMPictureTone[] = {
{1, N_("Neutral")}, {2, N_("Sepia")}, {3, N_("Blue")}, {4, N_("Purple")}, {5, N_("Green")},
};
constexpr TagInfo OlympusMakerNote::tagInfoRd2_[] = {
{0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), IfdId::olympusRd2Id,
SectionId::makerTags, undefined, -1, printExifVersion},
{0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), IfdId::olympusRd2Id,
SectionId::makerTags, signedRational, -1, printValue},
{0x0101, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRd2WhiteBalance)},
{0x0102, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), IfdId::olympusRd2Id,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0103, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("White balance fine adjustment"), IfdId::olympusRd2Id,
SectionId::makerTags, signedShort, -1, printValue},
{0x0104, "GrayPoint", N_("Gray Point"), N_("Gray point"), IfdId::olympusRd2Id, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0105, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), IfdId::olympusRd2Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0106, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), IfdId::olympusRd2Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0107, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), IfdId::olympusRd2Id,
SectionId::makerTags, signedShort, -1, printValue},
{0x0108, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), IfdId::olympusRd2Id,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0109, "ColorSpace", N_("Color Space"), N_("Color space"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRd2ColorSpace)},
{0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)},
{0x010b, "Engine", N_("Engine"), N_("Engine"), IfdId::olympusRd2Id, SectionId::makerTags, unsignedShort, -1,
EXV_PRINT_TAG(olympusRd2Engine)},
{0x010c, "PictureMode", N_("Picture Mode"), N_("Picture mode"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PictureMode)},
{0x010d, "PMSaturation", N_("PM Saturation"), N_("Picture mode saturation"), IfdId::olympusRd2Id,
SectionId::makerTags, signedShort, -1, printValue},
{0x010e, "PMContrast", N_("PM Contrast"), N_("Picture mode contrast"), IfdId::olympusRd2Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x010f, "PMSharpness", N_("PM Sharpness"), N_("Picture mode sharpness"), IfdId::olympusRd2Id, SectionId::makerTags,
signedShort, -1, printValue},
{0x0110, "PM_BWFilter", N_("PM BW Filter"), N_("PM BW filter"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PM_BWFilter)},
{0x0111, "PMPictureTone", N_("PM Picture Tone"), N_("PM picture tone"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PMPictureTone)},
{0x0112, "Gradation", N_("Gradation"), N_("Gradation"), IfdId::olympusRd2Id, SectionId::makerTags, signedShort, -1,
printValue},
{0x0113, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::olympusRd2Id, SectionId::makerTags, signedShort,
-1, printValue},
{0x0119, "AutoGradation", N_("Auto Gradation"), N_("Auto gradation"), IfdId::olympusRd2Id, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x0120, "PMNoiseFilter", N_("PM Noise Filter"), N_("Picture mode noise filter"), IfdId::olympusRd2Id,
SectionId::makerTags, unsignedShort, -1, printValue},
// End of list marker
{0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), IfdId::olympusRd2Id,
SectionId::makerTags, asciiString, -1, printValue},
};
const TagInfo* OlympusMakerNote::tagListRd2() {
return tagInfoRd2_;
}
//! OlympusIp MultipleExposureMode, tag 0x101c
constexpr TagDetails olympusIpMultipleExposureMode[] = {
{0, N_("Off")},
{2, N_("On (2 frames)")},
{3, N_("On (3 frames)")},
};
//! OlympusIp olympusIpAspectRatio, tag 0x101c
constexpr TagDetails olympusIpAspectRatio[] = {
{1, "4:3"}, {2, "3:2"}, {3, "16:9"}, {4, "6:6"}, {5, "5:4"}, {6, "7:6"}, {7, "6:5"}, {8, "7:5"}, {9, "3:4"},
};
constexpr TagInfo OlympusMakerNote::tagInfoIp_[] = {
{0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"),
IfdId::olympusIpId, SectionId::makerTags, undefined, -1, printExifVersion},
{0x0100, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0102, "WB_RBLevels3000K", N_("WB RB Levels 3000K"), N_("WB RB levels 3000K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x010e, "WB_RBLevelsCWB1", N_("WB RB Levels CWB1"), N_("WB RB levels CWB1"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x010f, "WB_RBLevelsCWB2", N_("WB RB Levels CWB2"), N_("WB RB levels CWB2"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0110, "WB_RBLevelsCWB3", N_("WB RB Levels CWB3"), N_("WB RB levels CWB3"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0111, "WB_RBLevelsCWB4", N_("WB RB Levels CWB4"), N_("WB RB levels CWB4"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, printValue},
{0x0113, "WB_GLevel3000K", N_("WB G Level 3000K"), N_("WB G level 3000K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0114, "WB_GLevel3300K", N_("WB G Level 3300K"), N_("WB G level 3300K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0115, "WB_GLevel3600K", N_("WB G Level 3600K"), N_("WB G level 3600K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0116, "WB_GLevel3900K", N_("WB G Level 3900K"), N_("WB G level 3900K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0117, "WB_GLevel4000K", N_("WB G Level 4000K"), N_("WB G level 4000K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0118, "WB_GLevel4300K", N_("WB G Level 4300K"), N_("WB G level 4300K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0119, "WB_GLevel4500K", N_("WB G Level 4500K"), N_("WB G level 4500K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x011a, "WB_GLevel4800K", N_("WB G Level 4800K"), N_("WB G level 4800K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x011b, "WB_GLevel5300K", N_("WB G Level 5300K"), N_("WB G level 5300K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x011c, "WB_GLevel6000K", N_("WB G Level 6000K"), N_("WB G level 6000K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x011d, "WB_GLevel6600K", N_("WB G Level 6600K"), N_("WB G level 6600K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x011e, "WB_GLevel7500K", N_("WB G Level 7500K"), N_("WB G level 7500K"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x011f, "WB_GLevel", N_("WB G Level"), N_("WB G level"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0200, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0300, "Enhancer", N_("Enhancer"), N_("Enhancer"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0301, "EnhancerValues", N_("Enhancer Values"), N_("Enhancer values"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0600, "BlackLevel", N_("Black Level"), N_("Black level"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x0610, "GainBase", N_("Gain Base"), N_("Gain base"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0611, "ValidBits", N_("Valid Bits"), N_("Valid bits"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort,
-1, printValue},
{0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), IfdId::olympusIpId, SectionId::makerTags, unsignedShort, -1,
printValue},
{0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), IfdId::olympusIpId, SectionId::makerTags, unsignedLong,
-1, printValue},
{0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), IfdId::olympusIpId, SectionId::makerTags, unsignedLong,
-1, printValue},
{0x1010, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)},
{0x1011, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x1012, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)},
{0x101c, "MultipleExposureMode", N_("Multiple Exposure Mode"), N_("Multiple exposure mode"), IfdId::olympusIpId,
SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusIpMultipleExposureMode)},
{0x1112, "AspectRatio", N_("Aspect Ratio"), N_("Aspect ratio"), IfdId::olympusIpId, SectionId::makerTags,
unsignedByte, -1, EXV_PRINT_TAG(olympusIpAspectRatio)},
{0x1113, "AspectFrame", N_("Aspect Frame"), N_("Aspect frame"), IfdId::olympusIpId, SectionId::makerTags,
unsignedShort, -1, printValue},
{0x1200, "FaceDetect", N_("Face Detect"), N_("Face detect"), IfdId::olympusIpId, SectionId::makerTags, unsignedLong,
-1, EXV_PRINT_TAG(olympusOffOn)},
{0x1201, "FaceDetectArea", N_("Face Detect Area"), N_("Face detect area"), IfdId::olympusIpId, SectionId::makerTags,
signedShort, -1, printValue},
// End of list marker
{0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), IfdId::olympusIpId,
SectionId::makerTags, asciiString, -1, printValue},