exiftool_vendored 12.42.0 → 12.52.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +226 -6
- data/bin/MANIFEST +14 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -44
- data/bin/config_files/acdsee.config +2 -1
- data/bin/config_files/frameCount.config +56 -0
- data/bin/config_files/tiff_version.config +1 -1
- data/bin/exiftool +116 -97
- data/bin/fmt_files/gpx.fmt +3 -0
- data/bin/fmt_files/gpx_wpt.fmt +3 -0
- data/bin/lib/Image/ExifTool/Apple.pm +16 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +23 -12
- data/bin/lib/Image/ExifTool/Canon.pm +66 -37
- data/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +7 -8
- data/bin/lib/Image/ExifTool/Casio.pm +3 -3
- data/bin/lib/Image/ExifTool/DJI.pm +2 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
- data/bin/lib/Image/ExifTool/EXE.pm +9 -1
- data/bin/lib/Image/ExifTool/Exif.pm +17 -12
- data/bin/lib/Image/ExifTool/FLAC.pm +17 -3
- data/bin/lib/Image/ExifTool/FLIR.pm +9 -7
- data/bin/lib/Image/ExifTool/FlashPix.pm +26 -3
- data/bin/lib/Image/ExifTool/FujiFilm.pm +51 -4
- data/bin/lib/Image/ExifTool/GPS.pm +31 -5
- data/bin/lib/Image/ExifTool/Geotag.pm +36 -8
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +3 -2
- data/bin/lib/Image/ExifTool/ICO.pm +143 -0
- data/bin/lib/Image/ExifTool/ID3.pm +6 -6
- data/bin/lib/Image/ExifTool/IPTC.pm +5 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -0
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +24 -3
- data/bin/lib/Image/ExifTool/LNK.pm +5 -2
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +6015 -759
- data/bin/lib/Image/ExifTool/Lang/sk.pm +1927 -0
- data/bin/lib/Image/ExifTool/M2TS.pm +98 -8
- data/bin/lib/Image/ExifTool/MIE.pm +9 -3
- data/bin/lib/Image/ExifTool/MISB.pm +494 -0
- data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +272 -48
- data/bin/lib/Image/ExifTool/Motorola.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +746 -382
- data/bin/lib/Image/ExifTool/NikonCustom.pm +139 -106
- data/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
- data/bin/lib/Image/ExifTool/Olympus.pm +6 -4
- data/bin/lib/Image/ExifTool/PNG.pm +8 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +21 -4
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
- data/bin/lib/Image/ExifTool/Parrot.pm +96 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +7 -2
- data/bin/lib/Image/ExifTool/Photoshop.pm +29 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +166 -13
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +161 -22
- data/bin/lib/Image/ExifTool/README +15 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +106 -9
- data/bin/lib/Image/ExifTool/Samsung.pm +2 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +27 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
- data/bin/lib/Image/ExifTool/Sony.pm +75 -47
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +13 -6
- data/bin/lib/Image/ExifTool/TagLookup.pm +4791 -4519
- data/bin/lib/Image/ExifTool/TagNames.pod +2056 -1446
- data/bin/lib/Image/ExifTool/Text.pm +3 -4
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -3
- data/bin/lib/Image/ExifTool/Validate.pm +3 -3
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
- data/bin/lib/Image/ExifTool/WriteExif.pl +100 -23
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +2 -6
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +12 -7
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
- data/bin/lib/Image/ExifTool/WriteXMP.pl +15 -1
- data/bin/lib/Image/ExifTool/Writer.pl +46 -18
- data/bin/lib/Image/ExifTool/XMP.pm +78 -59
- data/bin/lib/Image/ExifTool/XMP2.pl +19 -4
- data/bin/lib/Image/ExifTool/ZIP.pm +19 -7
- data/bin/lib/Image/ExifTool.pm +146 -38
- data/bin/lib/Image/ExifTool.pod +83 -69
- data/bin/perl-Image-ExifTool.spec +43 -43
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +10 -4
@@ -49,6 +49,7 @@
|
|
49
49
|
# 36) Hayo Baann (forum10207)
|
50
50
|
# 37) Tom Lachecki, private communication
|
51
51
|
# 38) https://github.com/exiftool/exiftool/pull/40 (and forum10893)
|
52
|
+
# 39) Stefan Grube private communication (Z9)
|
52
53
|
# IB) Iliah Borg private communication (LibRaw)
|
53
54
|
# JD) Jens Duttke private communication
|
54
55
|
# NJ) Niels Kristian Bech Jensen private communication
|
@@ -63,7 +64,7 @@ use Image::ExifTool::Exif;
|
|
63
64
|
use Image::ExifTool::GPS;
|
64
65
|
use Image::ExifTool::XMP;
|
65
66
|
|
66
|
-
$VERSION = '4.
|
67
|
+
$VERSION = '4.15';
|
67
68
|
|
68
69
|
sub LensIDConv($$$);
|
69
70
|
sub ProcessNikonAVI($$$);
|
@@ -363,10 +364,12 @@ sub GetAFPointGrid($$;$);
|
|
363
364
|
'26 58 37 37 14 14 1C 02' => 'Sigma 24mm F1.8 EX DG Aspherical Macro',
|
364
365
|
'E1 58 37 37 14 14 1C 02' => 'Sigma 24mm F1.8 EX DG Aspherical Macro',
|
365
366
|
'02 46 37 37 25 25 02 00' => 'Sigma 24mm F2.8 Super Wide II Macro',
|
367
|
+
'7E 54 37 37 0C 0C 4B 06' => 'Sigma 24mm F1.4 DG HSM | A', #30
|
366
368
|
'26 58 3C 3C 14 14 1C 02' => 'Sigma 28mm F1.8 EX DG Aspherical Macro',
|
367
369
|
'48 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
|
368
370
|
'F8 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM', #JD
|
369
371
|
'91 54 44 44 0C 0C 4B 06' => 'Sigma 35mm F1.4 DG HSM', #30
|
372
|
+
'BD 54 48 48 0C 0C 4B 46' => 'Sigma 40mm F1.4 DG HSM | A', #30
|
370
373
|
'DE 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 EX DG HSM',
|
371
374
|
'88 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 DG HSM | A',
|
372
375
|
'02 48 50 50 24 24 02 00' => 'Sigma Macro 50mm F2.8', #https://exiftool.org/forum/index.php/topic,4027.0.html
|
@@ -380,6 +383,7 @@ sub GetAFPointGrid($$;$);
|
|
380
383
|
'32 54 6A 6A 24 24 35 02.2' => 'Sigma Macro 105mm F2.8 EX DG', #JD
|
381
384
|
'E5 54 6A 6A 24 24 35 02' => 'Sigma Macro 105mm F2.8 EX DG',
|
382
385
|
'97 48 6A 6A 24 24 4B 0E' => 'Sigma Macro 105mm F2.8 EX DG OS HSM',
|
386
|
+
'BE 54 6A 6A 0C 0C 4B 46' => 'Sigma 105mm F1.4 DG HSM | A', #30
|
383
387
|
'48 48 76 76 24 24 4B 06' => 'Sigma APO Macro 150mm F2.8 EX DG HSM',
|
384
388
|
'F5 48 76 76 24 24 4B 06' => 'Sigma APO Macro 150mm F2.8 EX DG HSM', #24
|
385
389
|
'99 48 76 76 24 24 4B 0E' => 'Sigma APO Macro 150mm F2.8 EX DG OS HSM', #(Christian Hesse)
|
@@ -435,7 +439,7 @@ sub GetAFPointGrid($$;$);
|
|
435
439
|
'90 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 II DC OS HSM', #JohnHelour
|
436
440
|
'89 30 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC Macro OS HS | C', #JoeSchonberg
|
437
441
|
'A5 40 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM',
|
438
|
-
|
442
|
+
# LensFStops varies with FocalLength for this lens (ref 2):
|
439
443
|
'92 2C 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', #2
|
440
444
|
'87 2C 2D 8E 2C 40 4B 0E' => 'Sigma 18-300mm F3.5-6.3 DC Macro HSM', #30
|
441
445
|
# '92 2C 2D 88 2C 40 4B 0E' (250mm)
|
@@ -606,6 +610,7 @@ sub GetAFPointGrid($$;$);
|
|
606
610
|
'CC 44 68 98 34 41 DF 0E' => 'Tamron 100-400mm f/4.5-6.3 Di VC USD', #30
|
607
611
|
'EB 40 76 A6 38 40 DF 0E' => 'Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)',
|
608
612
|
'E3 40 76 A6 38 40 DF 4E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #30
|
613
|
+
'E3 40 76 A6 38 40 DF 0E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2 (A022)', #forum3833
|
609
614
|
'20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
|
610
615
|
'00 3E 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)',
|
611
616
|
'00 3F 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di (A08)',
|
@@ -668,6 +673,7 @@ sub GetAFPointGrid($$;$);
|
|
668
673
|
'00 40 64 64 2C 2C 00 00' => 'Voigtlander APO-Lanthar 90mm F3.5 SLII Close Focus',
|
669
674
|
'07 40 30 45 2D 35 03 02.2' => 'Voigtlander Ultragon 19-35mm F3.5-4.5 VMV', #NJ
|
670
675
|
'71 48 64 64 24 24 00 00' => 'Voigtlander APO-Skopar 90mm F2.8 SL IIs', #30
|
676
|
+
'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
|
671
677
|
#
|
672
678
|
'00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
|
673
679
|
'00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
|
@@ -825,6 +831,53 @@ my %activeDLightingZ7 = (
|
|
825
831
|
5 => 'Extra High',
|
826
832
|
);
|
827
833
|
|
834
|
+
my %aFAreaModeZ9 = (
|
835
|
+
0 => 'Pinpoint',
|
836
|
+
1 => 'Single',
|
837
|
+
2 => 'Dynamic',
|
838
|
+
3 => 'Wide (S)',
|
839
|
+
4 => 'Wide (L)',
|
840
|
+
5 => '3D',
|
841
|
+
6 => 'Auto',
|
842
|
+
11 => 'Subject Tracking',
|
843
|
+
12 => 'Wide (C1)',
|
844
|
+
13 => 'Wide (C2)',
|
845
|
+
);
|
846
|
+
|
847
|
+
my %banksZ9 = (
|
848
|
+
0 => 'A',
|
849
|
+
1 => 'B',
|
850
|
+
2 => 'C',
|
851
|
+
3 => 'D',
|
852
|
+
);
|
853
|
+
|
854
|
+
my %bracketIncrementZ9 = (
|
855
|
+
0 => '0.3',
|
856
|
+
#1 => '0.5',
|
857
|
+
2 => '0.7',
|
858
|
+
3 => '1.0',
|
859
|
+
4 => '2.0',
|
860
|
+
5 => '3.0',
|
861
|
+
);
|
862
|
+
|
863
|
+
my %bracketSetZ9 = (
|
864
|
+
0 => 'AE/Flash',
|
865
|
+
1 => 'AE',
|
866
|
+
2 => 'Flash',
|
867
|
+
3 => 'White Balance',
|
868
|
+
4 => 'Active-D Lighting',
|
869
|
+
);
|
870
|
+
|
871
|
+
my %bracketProgramZ9 = (
|
872
|
+
0 => 'Disabled',
|
873
|
+
2 => '2F',
|
874
|
+
3 => '3F',
|
875
|
+
4 => '4F',
|
876
|
+
5 => '5F',
|
877
|
+
7 => '7F',
|
878
|
+
9 => '9F',
|
879
|
+
);
|
880
|
+
|
828
881
|
my %flashControlModeZ7 = (
|
829
882
|
0 => 'TTL',
|
830
883
|
1 => 'Auto External Flash',
|
@@ -853,9 +906,32 @@ my %focusModeZ7 = (
|
|
853
906
|
4 => 'AF-F', # full frame
|
854
907
|
);
|
855
908
|
|
909
|
+
my %hDMIOutputResolutionZ9 = (
|
910
|
+
0 => 'Auto',
|
911
|
+
1 => '4320p',
|
912
|
+
2 => '2160p',
|
913
|
+
3 => '1080p',
|
914
|
+
#4 => '1080i',
|
915
|
+
5 => '720p',
|
916
|
+
#6 => '576p',
|
917
|
+
#7 => '480p',
|
918
|
+
);
|
919
|
+
|
920
|
+
my %imageAreaZ9 = (
|
921
|
+
0 => 'FX',
|
922
|
+
1 => 'DX',
|
923
|
+
4 => '16:9',
|
924
|
+
8 => '1:1',
|
925
|
+
);
|
926
|
+
|
927
|
+
my %imageAreaZ9b = (
|
928
|
+
0 => 'FX',
|
929
|
+
1 => 'DX',
|
930
|
+
);
|
931
|
+
|
856
932
|
my %infoZSeries = (
|
857
933
|
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
|
858
|
-
Notes => 'Z Series cameras thru
|
934
|
+
Notes => 'Z Series cameras thru December 2021',
|
859
935
|
);
|
860
936
|
my %iSOAutoHiLimitZ7 = (
|
861
937
|
0 => 'ISO 64',
|
@@ -891,6 +967,66 @@ my %iSOAutoHiLimitZ7 = (
|
|
891
967
|
32 => 'ISO Hi 2.0',
|
892
968
|
);
|
893
969
|
|
970
|
+
my %iSOAutoShutterTimeZ9 = (
|
971
|
+
-15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
|
972
|
+
-12 => '15 s',
|
973
|
+
-9 => '8 s',
|
974
|
+
-6 => '4 s',
|
975
|
+
-3 => '2 s',
|
976
|
+
0 => '1 s',
|
977
|
+
1 => '1/1.3 s',
|
978
|
+
2 => '1/1.6 s',
|
979
|
+
3 => '1/2 s',
|
980
|
+
4 => '1/2.5 s',
|
981
|
+
5 => '1/3 s',
|
982
|
+
6 => '1/4 s',
|
983
|
+
7 => '1/5 s',
|
984
|
+
8 => '1/6 s',
|
985
|
+
9 => '1/8 s',
|
986
|
+
10 => '1/10 s',
|
987
|
+
11 => '1/13 s',
|
988
|
+
12 => '1/15 s',
|
989
|
+
13 => '1/20 s',
|
990
|
+
14 => '1/25 s',
|
991
|
+
15 => '1/30 s',
|
992
|
+
16 => '1/40 s',
|
993
|
+
17 => '1/50 s',
|
994
|
+
18 => '1/60 s',
|
995
|
+
19 => '1/80 s',
|
996
|
+
20 => '1/100 s',
|
997
|
+
21 => '1/120 s',
|
998
|
+
22 => '1/160 s',
|
999
|
+
23 => '1/200 s',
|
1000
|
+
24 => '1/250 s',
|
1001
|
+
25 => '1/320 s',
|
1002
|
+
26 => '1/400 s',
|
1003
|
+
27 => '1/500 s',
|
1004
|
+
28 => '1/640 s',
|
1005
|
+
29 => '1/800 s',
|
1006
|
+
30 => '1/1000 s',
|
1007
|
+
31 => '1/1250 s',
|
1008
|
+
32 => '1/1600 s',
|
1009
|
+
33 => '1/2000 s',
|
1010
|
+
34 => '1/2500 s',
|
1011
|
+
35 => '1/3200 s',
|
1012
|
+
36 => '1/4000 s',
|
1013
|
+
37 => '1/5000 s',
|
1014
|
+
37.5 => '1/6000 s',
|
1015
|
+
38 => '1/6400 s',
|
1016
|
+
39 => '1/8000 s',
|
1017
|
+
40 => '1/10000 s',
|
1018
|
+
40.5 => '1/12000 s',
|
1019
|
+
41 => '1/13000 s',
|
1020
|
+
42 => '1/16000 s',
|
1021
|
+
);
|
1022
|
+
|
1023
|
+
my %languageZ9 = (
|
1024
|
+
4 => 'English',
|
1025
|
+
5 => 'Spanish',
|
1026
|
+
7 => 'French',
|
1027
|
+
15 => 'Portuguese'
|
1028
|
+
);
|
1029
|
+
|
894
1030
|
my %meteringModeZ7 = (
|
895
1031
|
0 => 'Matrix',
|
896
1032
|
1 => 'Center',
|
@@ -898,6 +1034,30 @@ my %meteringModeZ7 = (
|
|
898
1034
|
3 => 'Highlight'
|
899
1035
|
);
|
900
1036
|
|
1037
|
+
my %monitorBrightnessZ9 = (
|
1038
|
+
0 => '-5',
|
1039
|
+
1 => '-4',
|
1040
|
+
2 => '-3',
|
1041
|
+
3 => '-2',
|
1042
|
+
4 => '-1',
|
1043
|
+
5 => '0',
|
1044
|
+
6 => '1',
|
1045
|
+
7 => '2',
|
1046
|
+
8 => '3',
|
1047
|
+
9 => '4',
|
1048
|
+
10 => '5',
|
1049
|
+
14 => 'Hi1',
|
1050
|
+
15 => 'Hi2',
|
1051
|
+
16 => 'Lo2',
|
1052
|
+
17 => 'Lo1',
|
1053
|
+
);
|
1054
|
+
|
1055
|
+
my %movieFlickerReductionZ9 = (
|
1056
|
+
0 => 'Auto',
|
1057
|
+
1 => '50Hz',
|
1058
|
+
2 => '60Hz',
|
1059
|
+
);
|
1060
|
+
|
901
1061
|
my %movieFrameRateZ7 = (
|
902
1062
|
0 => '120p',
|
903
1063
|
1 => '100p',
|
@@ -908,6 +1068,33 @@ my %movieFrameRateZ7 = (
|
|
908
1068
|
6 => '24p',
|
909
1069
|
);
|
910
1070
|
|
1071
|
+
my %movieFrameSizeZ9 = (
|
1072
|
+
1 => '1920x1080',
|
1073
|
+
2 => '3840x2160',
|
1074
|
+
3 => '7680x4320',
|
1075
|
+
);
|
1076
|
+
|
1077
|
+
my %movieToneMapZ9 = (
|
1078
|
+
0 => 'SDR',
|
1079
|
+
1 => 'HLG',
|
1080
|
+
2 => 'N-Log',
|
1081
|
+
);
|
1082
|
+
|
1083
|
+
my %movieTypeZ9 = (
|
1084
|
+
1 => 'H.265 8-bit (MP4)',
|
1085
|
+
2 => 'H.265 8-bit (MOV)',
|
1086
|
+
3 => 'H.265 10-bit (MOV)',
|
1087
|
+
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
1088
|
+
5 => 'ProRes RAW HQ 12-bit (MOV)',
|
1089
|
+
6 => 'NRAW 12-bit (NEV)'
|
1090
|
+
);
|
1091
|
+
|
1092
|
+
my %multipleExposureModeZ9 = (
|
1093
|
+
0 => 'Off',
|
1094
|
+
1 => 'On',
|
1095
|
+
2 => 'On (Series)',
|
1096
|
+
);
|
1097
|
+
|
911
1098
|
my %offLowNormalHighZ7 = (
|
912
1099
|
0 => 'Off',
|
913
1100
|
1 => 'Low',
|
@@ -915,10 +1102,11 @@ my %offLowNormalHighZ7 = (
|
|
915
1102
|
3 => 'High',
|
916
1103
|
);
|
917
1104
|
|
918
|
-
my %
|
919
|
-
|
920
|
-
|
921
|
-
|
1105
|
+
my %secondarySlotFunctionZ9 = (
|
1106
|
+
0 => 'Overflow',
|
1107
|
+
1 => 'Backup',
|
1108
|
+
2 => 'NEF Primary + JPG Secondary',
|
1109
|
+
3 => 'JPG Primary + JPG Secondary',
|
922
1110
|
);
|
923
1111
|
|
924
1112
|
my %subjectDetectionZ9 = (
|
@@ -929,6 +1117,34 @@ my %subjectDetectionZ9 = (
|
|
929
1117
|
4 => 'Vehicles',
|
930
1118
|
);
|
931
1119
|
|
1120
|
+
my %timeZoneZ9 = (
|
1121
|
+
3 => '+10:00 (Sydney)',
|
1122
|
+
5 => '+09:00 (Tokyo)',
|
1123
|
+
6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
|
1124
|
+
10 => '+05:45 (Kathmandu)',
|
1125
|
+
11 => '+05:30 (New Dehli)',
|
1126
|
+
12 => '+05:00 (Islamabad)',
|
1127
|
+
13 => '+04:30 (Kabul)',
|
1128
|
+
14 => '+04:00 (Abu Dhabi)',
|
1129
|
+
15 => '+03:30 (Tehran)',
|
1130
|
+
16 => '+03:00 (Moscow, Nairobi)',
|
1131
|
+
17 => '+02:00 (Athens, Helsinki)',
|
1132
|
+
18 => '+01:00 (Madrid, Paris, Berlin)',
|
1133
|
+
19 => '+00:00 (London)',
|
1134
|
+
20 => '-01:00 (Azores)',
|
1135
|
+
21 => '-02:00 (Fernando de Noronha)',
|
1136
|
+
22 => '-03:00 (Buenos Aires, Sao Paulo)',
|
1137
|
+
23 => '-03:30 (Newfoundland)',
|
1138
|
+
24 => '-04:00 (Manaus, Caracas)',
|
1139
|
+
25 => '-05:00 (New York, Toronto, Lima)',
|
1140
|
+
26 => '-06:00 (Chicago, Mexico City)',
|
1141
|
+
27 => '-07:00 (Denver)',
|
1142
|
+
28 => '-08:00 (Los Angeles, Vancouver)',
|
1143
|
+
29 => '-09:00 (Anchorage)',
|
1144
|
+
30 => '-10:00 (Hawaii)',
|
1145
|
+
);
|
1146
|
+
|
1147
|
+
|
932
1148
|
my %vRModeZ9 = (
|
933
1149
|
0 => 'Off',
|
934
1150
|
1 => 'Normal',
|
@@ -1124,8 +1340,6 @@ my %afPoints153 = (
|
|
1124
1340
|
|
1125
1341
|
# AF point indices for models with 81 focus points, eg. Z6/Z7/Z50 (ref 38)
|
1126
1342
|
# - 9 rows (A-I) with 9 columns (1-9), center is E5
|
1127
|
-
# NOTE: the AF points start 2 bytes into the data, so the map starts
|
1128
|
-
# at 17 instead of 1
|
1129
1343
|
#
|
1130
1344
|
# 7 6 5 4 3 2 1 0
|
1131
1345
|
# 00 : [H5][G5][F5][A5][B5][C5][D5][E5]
|
@@ -1140,23 +1354,23 @@ my %afPoints153 = (
|
|
1140
1354
|
# 09 : [H1][G1][F1][A1][B1][C1][D1][E1]
|
1141
1355
|
# 0a : [ ][ ][ ][ ][ ][ ][ ][I1]
|
1142
1356
|
my %afPoints81 = (
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1357
|
+
1 => 'E5', 18 => 'I6', 35 => 'H7', 52 => 'G8', 69 => 'F9',
|
1358
|
+
2 => 'D5', 19 => 'E4', 36 => 'I7', 53 => 'H8', 70 => 'G9',
|
1359
|
+
3 => 'C5', 20 => 'D4', 37 => 'E3', 54 => 'I8', 71 => 'H9',
|
1360
|
+
4 => 'B5', 21 => 'C4', 38 => 'D3', 55 => 'E2', 72 => 'I9',
|
1361
|
+
5 => 'A5', 22 => 'B4', 39 => 'C3', 56 => 'D2', 73 => 'E1',
|
1362
|
+
6 => 'F5', 23 => 'A4', 40 => 'B3', 57 => 'C2', 74 => 'D1',
|
1363
|
+
7 => 'G5', 24 => 'F4', 41 => 'A3', 58 => 'B2', 75 => 'C1',
|
1364
|
+
8 => 'H5', 25 => 'G4', 42 => 'F3', 59 => 'A2', 76 => 'B1',
|
1365
|
+
9 => 'I5', 26 => 'H4', 43 => 'G3', 60 => 'F2', 77 => 'A1',
|
1366
|
+
10 => 'E6', 27 => 'I4', 44 => 'H3', 61 => 'G2', 78 => 'F1',
|
1367
|
+
11 => 'D6', 28 => 'E7', 45 => 'I3', 62 => 'H2', 79 => 'G1',
|
1368
|
+
12 => 'C6', 29 => 'D7', 46 => 'E8', 63 => 'I2', 80 => 'H1',
|
1369
|
+
13 => 'B6', 30 => 'C7', 47 => 'D8', 64 => 'E9', 81 => 'I1',
|
1370
|
+
14 => 'A6', 31 => 'B7', 48 => 'C8', 65 => 'D9',
|
1371
|
+
15 => 'F6', 32 => 'A7', 49 => 'B8', 66 => 'C9',
|
1372
|
+
16 => 'G6', 33 => 'F7', 50 => 'A8', 67 => 'B9',
|
1373
|
+
17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
|
1160
1374
|
);
|
1161
1375
|
|
1162
1376
|
my %cropHiSpeed = ( #IB
|
@@ -1597,10 +1811,14 @@ my %base64coord = (
|
|
1597
1811
|
81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
|
1598
1812
|
},
|
1599
1813
|
},
|
1600
|
-
0x0035 => { #32
|
1814
|
+
0x0035 => [{ #32
|
1601
1815
|
Name => 'HDRInfo',
|
1816
|
+
Condition => '$count != 6',
|
1602
1817
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo' },
|
1603
|
-
},
|
1818
|
+
},{
|
1819
|
+
Name => 'HDRInfo2',
|
1820
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo2' },
|
1821
|
+
}],
|
1604
1822
|
0x0037 => { #XavierJubier
|
1605
1823
|
Name => 'MechanicalShutterCount',
|
1606
1824
|
Writable => 'int32u',
|
@@ -1623,6 +1841,11 @@ my %base64coord = (
|
|
1623
1841
|
3 => 'Small',
|
1624
1842
|
},
|
1625
1843
|
},
|
1844
|
+
0x003f => { #https://github.com/darktable-org/darktable/issues/12282
|
1845
|
+
Name => 'WhiteBalanceFineTune',
|
1846
|
+
Writable => 'rational64s',
|
1847
|
+
Count => 2,
|
1848
|
+
},
|
1626
1849
|
0x0045 => { #IB
|
1627
1850
|
Name => 'CropArea',
|
1628
1851
|
Notes => 'left, top, width, height',
|
@@ -2080,7 +2303,7 @@ my %base64coord = (
|
|
2080
2303
|
TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
|
2081
2304
|
DecryptStart => 4,
|
2082
2305
|
# TODO: eventually set the length dynamically according to actual offsets!
|
2083
|
-
DecryptLen => 0xec4b +
|
2306
|
+
DecryptLen => 0xec4b + 2196, # decoded thru end of Offset26
|
2084
2307
|
ByteOrder => 'LittleEndian',
|
2085
2308
|
},
|
2086
2309
|
},
|
@@ -2481,6 +2704,12 @@ my %base64coord = (
|
|
2481
2704
|
TagTable => 'Image::ExifTool::Nikon::MultiExposure',
|
2482
2705
|
ByteOrder => 'LittleEndian',
|
2483
2706
|
},
|
2707
|
+
},{
|
2708
|
+
Name => 'MultiExposure2',
|
2709
|
+
Condition => '$$valPt =~ /^010[23]/', # 0102 is NC (PH)
|
2710
|
+
SubDirectory => {
|
2711
|
+
TagTable => 'Image::ExifTool::Nikon::MultiExposure2',
|
2712
|
+
},
|
2484
2713
|
}],
|
2485
2714
|
0x00b1 => { #14/PH/JD (D80)
|
2486
2715
|
Name => 'HighISONoiseReduction',
|
@@ -2797,10 +3026,10 @@ my %base64coord = (
|
|
2797
3026
|
Name => 'VRMode',
|
2798
3027
|
PrintConv => {
|
2799
3028
|
0 => 'Off',
|
2800
|
-
1 => 'Sport'
|
2801
|
-
3 => 'Normal'
|
3029
|
+
1 => 'Normal', #39 (was 'Sport')
|
3030
|
+
3 => 'Sport', #39 (was 'Normal')
|
2802
3031
|
},
|
2803
|
-
%infoZSeries
|
3032
|
+
%infoZSeries,
|
2804
3033
|
},{
|
2805
3034
|
Name => 'VRMode',
|
2806
3035
|
PrintConv => {
|
@@ -2811,6 +3040,13 @@ my %base64coord = (
|
|
2811
3040
|
},
|
2812
3041
|
}],
|
2813
3042
|
# 7 - values: 0, 1
|
3043
|
+
8 => { #39
|
3044
|
+
Name => 'VRType',
|
3045
|
+
PrintConv => {
|
3046
|
+
2 => 'In-body', # (IBIS)
|
3047
|
+
3 => 'In-body + Lens', # (IBIS + VR)
|
3048
|
+
},
|
3049
|
+
},
|
2814
3050
|
);
|
2815
3051
|
|
2816
3052
|
# Face detection information - PH (S8100)
|
@@ -3343,8 +3579,10 @@ my %base64coord = (
|
|
3343
3579
|
sprintf("%s%.2d:%.2d", $sign, $h, abs($val)-60*$h);
|
3344
3580
|
},
|
3345
3581
|
PrintConvInv => q{
|
3346
|
-
$val =~ /
|
3347
|
-
return $1 . ($2 * 60 + $3);
|
3582
|
+
$val =~ /Z$/ and return 0;
|
3583
|
+
$val =~ /([-+])(\d{1,2}):?(\d{2})$/ and return $1 . ($2 * 60 + $3);
|
3584
|
+
$val =~ /^(\d{2})(\d{2})$/ and return $1 * 60 + $2;
|
3585
|
+
return undef;
|
3348
3586
|
},
|
3349
3587
|
},
|
3350
3588
|
2 => {
|
@@ -3561,7 +3799,6 @@ my %base64coord = (
|
|
3561
3799
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
3562
3800
|
DATAMEMBER => [ 0, 4, 6 ],
|
3563
3801
|
NOTES => "These tags are written by Nikon DSLR's which have the live view feature.",
|
3564
|
-
# NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
|
3565
3802
|
0 => {
|
3566
3803
|
Name => 'AFInfo2Version',
|
3567
3804
|
Format => 'undef[4]',
|
@@ -3672,7 +3909,7 @@ my %base64coord = (
|
|
3672
3909
|
{ #PH/JD
|
3673
3910
|
Name => 'PrimaryAFPoint',
|
3674
3911
|
# PrimaryAFPoint may only be valid for PhaseDetect - certainly true on the D6, possibly other bodies? (ref 28)
|
3675
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
3912
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
3676
3913
|
Notes => q{
|
3677
3914
|
models with 51-point AF -- 5 rows (A-E) and 11 columns (1-11): D3, D3S, D3X,
|
3678
3915
|
D4, D4S, D300, D300S, D700, D800, D800e and D810
|
@@ -3778,22 +4015,6 @@ my %base64coord = (
|
|
3778
4015
|
1 => 'E9 (Center)',
|
3779
4016
|
},
|
3780
4017
|
},
|
3781
|
-
{ #PH (Z7) (NC)
|
3782
|
-
Name => 'PrimaryAFPoint',
|
3783
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
3784
|
-
Notes => q{
|
3785
|
-
Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
3786
|
-
at the center
|
3787
|
-
},
|
3788
|
-
PrintConv => {
|
3789
|
-
0 => '(none)',
|
3790
|
-
246 => 'I15 (Center)',
|
3791
|
-
OTHER => sub {
|
3792
|
-
my ($val, $inv) = @_;
|
3793
|
-
return GetAFPointGrid($val, 29, $inv);
|
3794
|
-
},
|
3795
|
-
},
|
3796
|
-
},
|
3797
4018
|
{
|
3798
4019
|
Name => 'PrimaryAFPoint',
|
3799
4020
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
@@ -3807,7 +4028,7 @@ my %base64coord = (
|
|
3807
4028
|
8 => [
|
3808
4029
|
{ #JD/PH
|
3809
4030
|
Name => 'AFPointsUsed',
|
3810
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
4031
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
3811
4032
|
Notes => q{
|
3812
4033
|
models with 51-point AF -- 5 rows: A1-9, B1-11, C1-11, D1-11, E1-9. Center
|
3813
4034
|
point is C6
|
@@ -3911,33 +4132,78 @@ my %base64coord = (
|
|
3911
4132
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
|
3912
4133
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
|
3913
4134
|
},
|
3914
|
-
{ #38 (Z6/Z7/Z50)
|
3915
|
-
Name => 'AFPointsUsed',
|
3916
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{Model} =~ /^NIKON Z/',
|
3917
|
-
Notes => q{
|
3918
|
-
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
3919
|
-
phase detect AF points. Center point is E5
|
3920
|
-
},
|
3921
|
-
Format => 'undef[13]',
|
3922
|
-
ValueConv => 'join(" ", unpack("H2"x13, $val))',
|
3923
|
-
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3924
|
-
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
3925
|
-
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
3926
|
-
},
|
3927
4135
|
{ #PH
|
3928
4136
|
Name => 'AFPointsUsed',
|
3929
4137
|
# version 301 uses a separate field at offset 0x0a for this tag (ref 28)
|
3930
|
-
Condition => '$$self{AFInfo2Version}
|
4138
|
+
Condition => '$$self{AFInfo2Version} !~ /^03/',
|
3931
4139
|
Format => 'undef[7]',
|
3932
4140
|
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
3933
4141
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3934
4142
|
PrintConv => '"Unknown ($val)"',
|
3935
4143
|
PrintConvInv => '$val=~s/Unknown \\((.*)\\)/$1/; $val',
|
3936
4144
|
},
|
4145
|
+
{ #PH
|
4146
|
+
Name => 'PrimaryAFPoint',
|
4147
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} =~ /^03/',
|
4148
|
+
Notes => 'newer models with 51-point AF',
|
4149
|
+
PrintConvColumns => 5,
|
4150
|
+
PrintConv => {
|
4151
|
+
0 => '(none)',
|
4152
|
+
%afPoints51,
|
4153
|
+
1 => 'C6 (Center)', # (add " (Center)" to central point)
|
4154
|
+
},
|
4155
|
+
},
|
4156
|
+
{ #PH (Z7)
|
4157
|
+
Name => 'PrimaryAFPoint',
|
4158
|
+
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
4159
|
+
PrintConv => {
|
4160
|
+
0 => '(none)',
|
4161
|
+
%afPoints81,
|
4162
|
+
1 => 'E5 (Center)', # (add " (Center)" to central point)
|
4163
|
+
},
|
4164
|
+
},
|
4165
|
+
# this was wrong, but keep the code as a comment in case it may be useful later
|
4166
|
+
#{ #PH (Z7) (NC)
|
4167
|
+
# Name => 'PrimaryAFPoint',
|
4168
|
+
# Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
4169
|
+
# Notes => q{
|
4170
|
+
# Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
4171
|
+
# at the center
|
4172
|
+
# },
|
4173
|
+
# PrintConv => {
|
4174
|
+
# 0 => '(none)',
|
4175
|
+
# 246 => 'I15 (Center)',
|
4176
|
+
# OTHER => sub {
|
4177
|
+
# my ($val, $inv) = @_;
|
4178
|
+
# return GetAFPointGrid($val, 29, $inv);
|
4179
|
+
# },
|
4180
|
+
# },
|
4181
|
+
#},
|
3937
4182
|
],
|
3938
|
-
0x0a => { #
|
3939
|
-
|
3940
|
-
Condition => '$$self{
|
4183
|
+
0x0a => [{ #PH (D780)
|
4184
|
+
Name => 'AFPointsUsed',
|
4185
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} =~ /^03/',
|
4186
|
+
Notes => 'newer models with 51-point AF',
|
4187
|
+
Format => 'undef[7]',
|
4188
|
+
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
4189
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
4190
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints51); },
|
4191
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints51); },
|
4192
|
+
},{ #38 (Z6/Z7/Z50)
|
4193
|
+
Name => 'AFPointsUsed',
|
4194
|
+
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
4195
|
+
Notes => q{
|
4196
|
+
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
4197
|
+
phase detect AF points. Center point is E5
|
4198
|
+
},
|
4199
|
+
Format => 'undef[11]',
|
4200
|
+
ValueConv => 'join(" ", unpack("H2"x11, $val))',
|
4201
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
4202
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
4203
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
4204
|
+
},{ #28 (D6) in any of the 3 Group modes on the D6, the points specify the outer boundaries of the focus point area; otherwise the tag value is consistent with other Nikon bodies
|
4205
|
+
Name => 'AFPointsUsed',
|
4206
|
+
Condition => '$$self{PhaseDetectAF} == 9 and $$self{AFInfo2Version} =~ /^03/',
|
3941
4207
|
Notes => q{
|
3942
4208
|
models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15). Center
|
3943
4209
|
point is D8
|
@@ -3947,7 +4213,7 @@ my %base64coord = (
|
|
3947
4213
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3948
4214
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints105); },
|
3949
4215
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints105); },
|
3950
|
-
},
|
4216
|
+
}],
|
3951
4217
|
0x10 => { #PH (D90 and D5000)
|
3952
4218
|
Name => 'AFImageWidth',
|
3953
4219
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
@@ -4026,7 +4292,7 @@ my %base64coord = (
|
|
4026
4292
|
},
|
4027
4293
|
Format => 'int16u',
|
4028
4294
|
},
|
4029
|
-
0x2f => { #28 (Z7)
|
4295
|
+
0x2f => { #28 (Z7) Still photography range 1-17 for the 493 point Z7 (arranged in a 29x17 grid. Center at x=16, y=10).
|
4030
4296
|
Name => 'AFFocusPointXPosition',
|
4031
4297
|
Condition => q{
|
4032
4298
|
$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
|
@@ -4174,7 +4440,7 @@ my %base64coord = (
|
|
4174
4440
|
},
|
4175
4441
|
);
|
4176
4442
|
|
4177
|
-
%Image::ExifTool::Nikon::AFInfo2V0400 = ( #V0400 related fields begin at x'3c'
|
4443
|
+
%Image::ExifTool::Nikon::AFInfo2V0400 = ( #V0400 related fields begin at x'3c' (Z9)
|
4178
4444
|
%binaryDataAttrs,
|
4179
4445
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
4180
4446
|
DATAMEMBER => [ 0 ],
|
@@ -4194,11 +4460,19 @@ my %base64coord = (
|
|
4194
4460
|
},
|
4195
4461
|
0x43 => {
|
4196
4462
|
Name => 'FocusPositionHorizontal',
|
4197
|
-
|
4463
|
+
Notes => q{
|
4464
|
+
the focus points form a 29x17 grid, but the X,Y coordinate values run from 1,1
|
4465
|
+
to 30,19. The horizontal coordinate 11R (5) and the vertical coordinates 6U
|
4466
|
+
(4) and 2D (12) are not used for some reason
|
4467
|
+
},
|
4468
|
+
# 493 focus points for Z9 fall in a 30x19 grid
|
4469
|
+
# (the 11R (5) position is not used, for a total of 29 columns, ref AlbertShan email)
|
4470
|
+
PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29); },
|
4198
4471
|
},
|
4199
4472
|
0x45 => {
|
4200
4473
|
Name => 'FocusPositionVertical',
|
4201
|
-
|
4474
|
+
# (the 6U (4) and 2D (12) are not used, for a total of 17 rows, ref AlbertShan email)
|
4475
|
+
PrintConv => sub { my ($val) = @_; PrintAFPointsUpDown($val, 17); },
|
4202
4476
|
},
|
4203
4477
|
0x46 => {
|
4204
4478
|
Name => 'AFAreaWidth',
|
@@ -4210,9 +4484,13 @@ my %base64coord = (
|
|
4210
4484
|
Name => 'AFAreaHeight',
|
4211
4485
|
Format => 'int16u',
|
4212
4486
|
RawConv => '$val ? $val : undef',
|
4213
|
-
}
|
4214
|
-
|
4215
|
-
|
4487
|
+
},
|
4488
|
+
0x4a => {
|
4489
|
+
Name => 'FocusResult',
|
4490
|
+
# in Manual Foucs mode, reflects the state of viewfinder focus indicator.
|
4491
|
+
# In AF-C or AF-S, reflects the result of the last AF operation.
|
4492
|
+
PrintConv => { 0=> "Out of Focus", 1=>"Focus"},
|
4493
|
+
},
|
4216
4494
|
);
|
4217
4495
|
|
4218
4496
|
# Nikon AF fine-tune information (ref 28)
|
@@ -4858,7 +5136,7 @@ my %nikonFocalConversions = (
|
|
4858
5136
|
%binaryDataAttrs,
|
4859
5137
|
NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
|
4860
5138
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
4861
|
-
DATAMEMBER => [ 0x03, 0x2f ],
|
5139
|
+
DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56 ],
|
4862
5140
|
0x00 => {
|
4863
5141
|
Name => 'LensDataVersion',
|
4864
5142
|
Format => 'string[4]',
|
@@ -4884,12 +5162,12 @@ my %nikonFocalConversions = (
|
|
4884
5162
|
%nikonApertureConversions,
|
4885
5163
|
},
|
4886
5164
|
# --> another extra byte at position 0x08 in this version of LensData (PH)
|
4887
|
-
0x09 => {
|
4888
|
-
|
4889
|
-
|
4890
|
-
|
4891
|
-
|
4892
|
-
},
|
5165
|
+
#0x09 => {
|
5166
|
+
# Name => 'FocusPosition', #28 - this appears to be copied from an older version of LensData and is no longer valid. Text with Z9 and Z7_2 with a variety of lenses
|
5167
|
+
# Condition => '$$self{OldLensData}',
|
5168
|
+
# PrintConv => 'sprintf("0x%02x", $val)',
|
5169
|
+
# PrintConvInv => '$val',
|
5170
|
+
#},
|
4893
5171
|
0x0b => {
|
4894
5172
|
Notes => 'this focus distance is approximate, and not very accurate for some lenses',
|
4895
5173
|
Name => 'FocusDistance',
|
@@ -4948,7 +5226,8 @@ my %nikonFocalConversions = (
|
|
4948
5226
|
%nikonApertureConversions,
|
4949
5227
|
},
|
4950
5228
|
#
|
4951
|
-
# ---- new LensData tags used by Nikkor Z
|
5229
|
+
# ---- new LensData tags used by Nikkor Z cameras (ref PH/28). ----
|
5230
|
+
# (some fields are strictly for Z-series lenses, others apply to legacy F-mount as well, ref 28)
|
4952
5231
|
#
|
4953
5232
|
0x2f => { # look forward to see if new lens data exists...
|
4954
5233
|
Name => 'NewLensData',
|
@@ -4956,7 +5235,7 @@ my %nikonFocalConversions = (
|
|
4956
5235
|
RawConv => '$$self{NewLensData} = 1 unless $val =~ /^.\0+$/s; undef',
|
4957
5236
|
Hidden => 1,
|
4958
5237
|
},
|
4959
|
-
0x30 => {
|
5238
|
+
0x30 => { #PH
|
4960
5239
|
Name => 'LensID',
|
4961
5240
|
Condition => '$$self{NewLensData}',
|
4962
5241
|
Notes => 'tags from here onward used for Nikkor Z lenses only',
|
@@ -4982,9 +5261,24 @@ my %nikonFocalConversions = (
|
|
4982
5261
|
27 => 'Nikkor Z MC 50mm f/2.8', #IB
|
4983
5262
|
28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
|
4984
5263
|
29 => 'Nikkor Z 28mm f/2.8', #IB
|
5264
|
+
30 => 'Nikkor Z 400mm f/2.8 TC VR S', #28
|
5265
|
+
31 => 'Nikkor Z 24-120 f/4', #28
|
5266
|
+
32 => 'Nikkor Z 800mm f/6.3 VR S', #28
|
5267
|
+
36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
|
5268
|
+
39 => 'Nikkor Z 17-28mm f/2.8', #IB
|
4985
5269
|
},
|
4986
5270
|
},
|
4987
|
-
|
5271
|
+
0x35 => { #28
|
5272
|
+
Name => 'LensMountType',
|
5273
|
+
RawConv => '$$self{LensMountType} = $val', # 0=> DSLR lens via FTZ style adapter; 1=> Native Z lens;
|
5274
|
+
Format => 'int8u',
|
5275
|
+
Unknown => 1,
|
5276
|
+
PrintConv => {
|
5277
|
+
0 => 'F-mount Lens',
|
5278
|
+
1 => 'Z-mount Lens',
|
5279
|
+
},
|
5280
|
+
},
|
5281
|
+
0x36 => { #PH
|
4988
5282
|
Name => 'MaxAperture',
|
4989
5283
|
Condition => '$$self{NewLensData}',
|
4990
5284
|
Format => 'int16u',
|
@@ -4994,7 +5288,7 @@ my %nikonFocalConversions = (
|
|
4994
5288
|
PrintConv => 'sprintf("%.1f",$val)',
|
4995
5289
|
PrintConvInv => '$val',
|
4996
5290
|
},
|
4997
|
-
0x38 => {
|
5291
|
+
0x38 => { #PH
|
4998
5292
|
Name => 'FNumber',
|
4999
5293
|
Condition => '$$self{NewLensData}',
|
5000
5294
|
Format => 'int16u',
|
@@ -5004,7 +5298,7 @@ my %nikonFocalConversions = (
|
|
5004
5298
|
PrintConv => 'sprintf("%.1f",$val)',
|
5005
5299
|
PrintConvInv => '$val',
|
5006
5300
|
},
|
5007
|
-
0x3c => {
|
5301
|
+
0x3c => { #PH
|
5008
5302
|
Name => 'FocalLength',
|
5009
5303
|
Condition => '$$self{NewLensData}',
|
5010
5304
|
Format => 'int16u',
|
@@ -5012,14 +5306,36 @@ my %nikonFocalConversions = (
|
|
5012
5306
|
PrintConv => '"$val mm"',
|
5013
5307
|
PrintConvInv => '$val=~s/\s*mm$//;$val',
|
5014
5308
|
},
|
5015
|
-
|
5309
|
+
0x4c => { #28
|
5310
|
+
Name => 'FocusDistanceRangeWidth', #reflects the number of discrete absolute lens positions that are mapped to the reported FocusDistance. Will be 1 near CFD reflecting very narrow focus distance bands (i.e., quite accurate). Near Infinity will be something like 32. Note: 0 at infinity.
|
5311
|
+
Format => 'int8u',
|
5312
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5313
|
+
RawConv => '$$self{FocusDistanceRangeWidth} = $val',
|
5314
|
+
Unknown => 1,
|
5315
|
+
},
|
5316
|
+
0x4e => { #28
|
5016
5317
|
Name => 'FocusDistance',
|
5017
|
-
|
5018
|
-
|
5318
|
+
Format => 'int16u',
|
5319
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5320
|
+
RawConv => '$val = $val/256', # 1st byte is the fractional component. This byte was not previously considered in the legacy calculation (which only used the 2nd byte). When 2nd byte < 80; distance is < 1 meter
|
5019
5321
|
ValueConv => '0.01 * 10**($val/40)', # in m
|
5020
5322
|
ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0',
|
5021
|
-
PrintConv =>
|
5022
|
-
|
5323
|
+
PrintConv => q{
|
5324
|
+
(defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) ? "Inf" : $val < 1 ? $val < 0.35 ? sprintf("%.4f m", $val): sprintf("%.3f m", $val): sprintf("%.2f m", $val), #distances less than 35mm are quite accurate with increasingly less precision past 1m
|
5325
|
+
},
|
5326
|
+
},
|
5327
|
+
0x56 => { #28
|
5328
|
+
Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
|
5329
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5330
|
+
Format => 'int8u',
|
5331
|
+
RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
|
5332
|
+
Unknown => 1,
|
5333
|
+
},
|
5334
|
+
0x5a => { #28
|
5335
|
+
Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
|
5336
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5337
|
+
Format => 'int32s',
|
5338
|
+
Unknown => 1,
|
5023
5339
|
},
|
5024
5340
|
);
|
5025
5341
|
|
@@ -5422,14 +5738,14 @@ my %nikonFocalConversions = (
|
|
5422
5738
|
},
|
5423
5739
|
0x27d => {
|
5424
5740
|
Name => 'ShutterCount',
|
5425
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
5741
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.01/',
|
5426
5742
|
Notes => 'firmware 1.10',
|
5427
5743
|
Format => 'int32u',
|
5428
5744
|
Priority => 0,
|
5429
5745
|
},
|
5430
5746
|
0x27f => {
|
5431
5747
|
Name => 'ShutterCount',
|
5432
|
-
Condition => '$$self{FirmwareVersion} =~ /^2
|
5748
|
+
Condition => '$$self{FirmwareVersion} =~ /^2\.0/',
|
5433
5749
|
Notes => 'firmware 2.00, 2.01 and 2.02',
|
5434
5750
|
Format => 'int32u',
|
5435
5751
|
Priority => 0,
|
@@ -7323,7 +7639,7 @@ my %nikonFocalConversions = (
|
|
7323
7639
|
# (moves around too much and doesn't fit cleanly in the offset table)
|
7324
7640
|
#0x38be => {
|
7325
7641
|
# Name => 'Rotation',
|
7326
|
-
# Condition => '$$self{FirmwareVersion} =~ /^1
|
7642
|
+
# Condition => '$$self{FirmwareVersion} =~ /^1\.0/',
|
7327
7643
|
# Mask => 0x30,
|
7328
7644
|
# PrintConv => {
|
7329
7645
|
# 0 => 'Horizontal',
|
@@ -7629,7 +7945,7 @@ my %nikonFocalConversions = (
|
|
7629
7945
|
},
|
7630
7946
|
0x189d => { #PH (NC)
|
7631
7947
|
Name => 'CustomSettingsD4S',
|
7632
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
7948
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.00/',
|
7633
7949
|
Notes => 'firmware version 1.00',
|
7634
7950
|
Format => 'undef[56]',
|
7635
7951
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
@@ -7637,7 +7953,7 @@ my %nikonFocalConversions = (
|
|
7637
7953
|
0x18c2 => { # CSf1-c (no idea why it is so far away from the rest of the settings)
|
7638
7954
|
Name => 'MultiSelectorLiveViewMode',
|
7639
7955
|
Groups => { 1 => 'NikonCustom' },
|
7640
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
7956
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
7641
7957
|
Mask => 0xc0,
|
7642
7958
|
PrintConv => {
|
7643
7959
|
0 => 'Reset',
|
@@ -7738,7 +8054,7 @@ my %nikonFocalConversions = (
|
|
7738
8054
|
},
|
7739
8055
|
0x193d => {
|
7740
8056
|
Name => 'CustomSettingsD4S',
|
7741
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
8057
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
7742
8058
|
Notes => 'firmware version 1.01',
|
7743
8059
|
Format => 'undef[56]',
|
7744
8060
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
@@ -7991,8 +8307,8 @@ my %nikonFocalConversions = (
|
|
7991
8307
|
WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
|
7992
8308
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
7993
8309
|
VARS => { ID_LABEL => 'Index' },
|
7994
|
-
DATAMEMBER => [ 0x04, 0x30, 0x38, 0x84, 0x8c, 0x6c6f, 0x6c98,
|
7995
|
-
0x6c9a,
|
8310
|
+
DATAMEMBER => [ 0x04, 0x30, 0x38, 0x84, 0x8c, 0x6c6f, 0x6c90, 0x6c98,
|
8311
|
+
0x6c9a, 0xeaea, 0xeb6f, 0xeb70 ],
|
7996
8312
|
IS_SUBDIR => [ 0xec4b ],
|
7997
8313
|
WRITABLE => 1,
|
7998
8314
|
FIRST_ENTRY => 0,
|
@@ -8069,6 +8385,15 @@ my %nikonFocalConversions = (
|
|
8069
8385
|
# account for variable location of Offset3 data
|
8070
8386
|
Hook => '$varSize = $$self{Offset3} - 0x6c70',
|
8071
8387
|
},
|
8388
|
+
0x6c90 => {
|
8389
|
+
Name => 'FocusShiftShooting',
|
8390
|
+
RawConv => '$$self{FocusShiftShooting} = $val',
|
8391
|
+
PrintConv => q{
|
8392
|
+
return 'Off' if $val == 0 ;
|
8393
|
+
my $i = sprintf("Frame %.0f of %.0f",$val, $$self{FocusShiftNumberShots}); # something like Frame 1 of 100"
|
8394
|
+
return "On: $i"
|
8395
|
+
},
|
8396
|
+
},
|
8072
8397
|
0x6c98 => {
|
8073
8398
|
Name => 'IntervalShooting',
|
8074
8399
|
RawConv => '$$self{IntervalShooting} = $val',
|
@@ -8088,23 +8413,6 @@ my %nikonFocalConversions = (
|
|
8088
8413
|
Format => 'int16u',
|
8089
8414
|
Hidden => 1,
|
8090
8415
|
},
|
8091
|
-
### 0x7718 - Offset5 info start (Z9 firmware 1.00)
|
8092
|
-
0x7717 => {
|
8093
|
-
Name => 'Offsset5Hook',
|
8094
|
-
Hidden => 1,
|
8095
|
-
RawConv => 'undef',
|
8096
|
-
# account for variable location of Offset5 data
|
8097
|
-
Hook => '$varSize = $$self{Offset5} - 0x7718',
|
8098
|
-
},
|
8099
|
-
0x7844 => {
|
8100
|
-
Name => 'FocusShiftShooting',
|
8101
|
-
RawConv => '$$self{FocusShiftShooting} = $val',
|
8102
|
-
PrintConv => q{
|
8103
|
-
return 'Off' if $val == 0 ;
|
8104
|
-
my $i = sprintf("Frame %.0f of %.0f",$val, $$self{FocusShiftNumberShots}); # something like Frame 1 of 100"
|
8105
|
-
return "On: $i"
|
8106
|
-
},
|
8107
|
-
},
|
8108
8416
|
### 0xeaeb - OrientationInfo start (Z9 firmware 1.00)
|
8109
8417
|
0xeaea => {
|
8110
8418
|
Name => 'OrientationHook',
|
@@ -8155,14 +8463,26 @@ my %nikonFocalConversions = (
|
|
8155
8463
|
# account for variable location of menu settings data
|
8156
8464
|
Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0xec4b',
|
8157
8465
|
},
|
8158
|
-
0xec4b =>
|
8159
|
-
|
8160
|
-
|
8161
|
-
|
8162
|
-
|
8466
|
+
0xec4b => [
|
8467
|
+
{
|
8468
|
+
Name => 'MenuSettingsZ9',
|
8469
|
+
Condition => '$$self{FirmwareVersion} lt "03.00"',
|
8470
|
+
Format => 'undef[1646]',
|
8471
|
+
Notes => 'Firmware versions 2.11 and earlier',
|
8472
|
+
SubDirectory => {
|
8473
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
|
8474
|
+
},
|
8163
8475
|
},
|
8164
|
-
|
8165
|
-
|
8476
|
+
{
|
8477
|
+
Name => 'MenuSettingsZ9',
|
8478
|
+
Notes => 'Firmware versions 3.0 and later',
|
8479
|
+
Format => 'undef[1948]',
|
8480
|
+
SubDirectory => {
|
8481
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
|
8482
|
+
},
|
8483
|
+
},
|
8484
|
+
],
|
8485
|
+
# note: DecryptLen currently set to 0xec4b + 2196
|
8166
8486
|
);
|
8167
8487
|
|
8168
8488
|
%Image::ExifTool::Nikon::MenuSettingsZ7II = (
|
@@ -8270,8 +8590,8 @@ my %nikonFocalConversions = (
|
|
8270
8590
|
PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
|
8271
8591
|
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
8272
8592
|
},
|
8273
|
-
346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
|
8274
|
-
348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7,
|
8593
|
+
346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
8594
|
+
348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
8275
8595
|
352 => {
|
8276
8596
|
Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
|
8277
8597
|
RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
|
@@ -8296,12 +8616,12 @@ my %nikonFocalConversions = (
|
|
8296
8616
|
PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
|
8297
8617
|
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
8298
8618
|
},
|
8299
|
-
#360 => {Name => 'FlashGroupAControlMode'
|
8300
|
-
#368 => {Name => 'FlashGroupBControlMode'
|
8301
|
-
#376 => {Name => 'FlashGroupCControlMode'
|
8302
|
-
#384 => {Name => 'FlashGroupDControlMode'
|
8303
|
-
#392 => {Name => 'FlashGroupEControlMode'
|
8304
|
-
#400 => {Name => 'FlashGroupFControlMode'
|
8619
|
+
#360 => { Name => 'FlashGroupAControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
|
8620
|
+
#368 => { Name => 'FlashGroupBControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
|
8621
|
+
#376 => { Name => 'FlashGroupCControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
|
8622
|
+
#384 => { Name => 'FlashGroupDControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
|
8623
|
+
#392 => { Name => 'FlashGroupEControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
|
8624
|
+
#400 => { Name => 'FlashGroupFControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
|
8305
8625
|
#434 => FocusMode
|
8306
8626
|
#436 => AFAreaMode
|
8307
8627
|
#438 => VibrationReduction
|
@@ -8309,8 +8629,8 @@ my %nikonFocalConversions = (
|
|
8309
8629
|
#444 => BracketProgram
|
8310
8630
|
#446 => BracketIncrement
|
8311
8631
|
#463 => SilentPhotography
|
8312
|
-
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
|
8313
|
-
504 => { Name => 'MovieFrameRate',
|
8632
|
+
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
8633
|
+
504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
8314
8634
|
506 => {
|
8315
8635
|
Name => 'MovieSlowMotion',
|
8316
8636
|
Unknown => 1,
|
@@ -8339,9 +8659,9 @@ my %nikonFocalConversions = (
|
|
8339
8659
|
PrintConv => \%iSOAutoHiLimitZ7,
|
8340
8660
|
},
|
8341
8661
|
#520 => MovieWhiteBalanceSameAsPhoto
|
8342
|
-
568 => { Name => 'MovieActiveD-Lighting',
|
8343
|
-
572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
|
8344
|
-
574 => { Name => 'MovieVignetteControl',
|
8662
|
+
568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
8663
|
+
572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
8664
|
+
574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
8345
8665
|
576 => {
|
8346
8666
|
Name => 'MovieVignetteControlSameAsPhoto',
|
8347
8667
|
Unknown => 1,
|
@@ -8357,7 +8677,7 @@ my %nikonFocalConversions = (
|
|
8357
8677
|
Unknown => 1,
|
8358
8678
|
PrintConv => \%offOn
|
8359
8679
|
},
|
8360
|
-
584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
|
8680
|
+
584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
8361
8681
|
#586 => MovieAFAreaMode
|
8362
8682
|
590 => {
|
8363
8683
|
Name => 'MovieVibrationReduction',
|
@@ -8397,11 +8717,7 @@ my %nikonFocalConversions = (
|
|
8397
8717
|
140 => {
|
8398
8718
|
Name => 'MultipleExposureMode',
|
8399
8719
|
RawConv => '$$self{MultipleExposureMode} = $val',
|
8400
|
-
PrintConv =>
|
8401
|
-
0 => 'Off',
|
8402
|
-
1 => 'On (Series)',
|
8403
|
-
2 => 'On',
|
8404
|
-
},
|
8720
|
+
PrintConv => \%multipleExposureModeZ9,
|
8405
8721
|
},
|
8406
8722
|
142 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0' }, #range 2-9
|
8407
8723
|
188 => {
|
@@ -8437,27 +8753,11 @@ my %nikonFocalConversions = (
|
|
8437
8753
|
PrintConv => \%offOn,
|
8438
8754
|
Condition => '$$self{FocusShiftShooting} > 0',
|
8439
8755
|
},
|
8440
|
-
274 => {
|
8441
|
-
|
8442
|
-
|
8443
|
-
0 => 'A',
|
8444
|
-
1 => 'B',
|
8445
|
-
2 => 'C',
|
8446
|
-
3 => 'D',
|
8447
|
-
},
|
8448
|
-
},
|
8449
|
-
276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn, }, #single tag from both Photo & Video menus
|
8450
|
-
308 => {
|
8451
|
-
Name => 'PhotoShootingMenuBankImageArea',
|
8452
|
-
PrintConv => {
|
8453
|
-
0 => 'FX',
|
8454
|
-
1 => 'DX',
|
8455
|
-
4 => '16:9',
|
8456
|
-
8 => '1:1',
|
8457
|
-
},
|
8458
|
-
},
|
8756
|
+
274 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
8757
|
+
276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, #single tag from both Photo & Video menus
|
8758
|
+
308 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
8459
8759
|
#310 ImageQuality
|
8460
|
-
322 => { Name => 'AutoISO', PrintConv => \%offOn
|
8760
|
+
322 => { Name => 'AutoISO', PrintConv => \%offOn },
|
8461
8761
|
324 => {
|
8462
8762
|
Name => 'ISOAutoHiLimit',
|
8463
8763
|
Format => 'int16u',
|
@@ -8479,58 +8779,7 @@ my %nikonFocalConversions = (
|
|
8479
8779
|
Name => 'ISOAutoShutterTime', #shutter speed is 2 ** (-$val/24)
|
8480
8780
|
ValueConv => '$val / 8',
|
8481
8781
|
Format => 'int16s',
|
8482
|
-
PrintConv =>
|
8483
|
-
-15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
|
8484
|
-
-12 => '15 s',
|
8485
|
-
-9 => '8 s',
|
8486
|
-
-6 => '4 s',
|
8487
|
-
-3 => '2 s',
|
8488
|
-
0 => '1 s',
|
8489
|
-
1 => '1/1.3 s',
|
8490
|
-
2 => '1/1.6 s',
|
8491
|
-
3 => '1/2 s',
|
8492
|
-
4 => '1/2.5 s',
|
8493
|
-
5 => '1/3 s',
|
8494
|
-
6 => '1/4 s',
|
8495
|
-
7 => '1/5 s',
|
8496
|
-
8 => '1/6 s',
|
8497
|
-
9 => '1/8 s',
|
8498
|
-
10 => '1/10 s',
|
8499
|
-
11 => '1/13 s',
|
8500
|
-
12 => '1/15 s',
|
8501
|
-
13 => '1/20 s',
|
8502
|
-
14 => '1/25 s',
|
8503
|
-
15 => '1/30 s',
|
8504
|
-
16 => '1/40 s',
|
8505
|
-
17 => '1/50 s',
|
8506
|
-
18 => '1/60 s',
|
8507
|
-
19 => '1/80 s',
|
8508
|
-
20 => '1/100 s',
|
8509
|
-
21 => '1/120 s',
|
8510
|
-
22 => '1/160 s',
|
8511
|
-
23 => '1/200 s',
|
8512
|
-
24 => '1/250 s',
|
8513
|
-
25 => '1/320 s',
|
8514
|
-
26 => '1/400 s',
|
8515
|
-
27 => '1/500 s',
|
8516
|
-
28 => '1/640 s',
|
8517
|
-
29 => '1/800 s',
|
8518
|
-
30 => '1/1000 s',
|
8519
|
-
31 => '1/1250 s',
|
8520
|
-
32 => '1/1600 s',
|
8521
|
-
33 => '1/2000 s',
|
8522
|
-
34 => '1/2500 s',
|
8523
|
-
35 => '1/3200 s',
|
8524
|
-
36 => '1/4000 s',
|
8525
|
-
37 => '1/5000 s',
|
8526
|
-
37.5 => '1/6000 s',
|
8527
|
-
38 => '1/6400 s',
|
8528
|
-
39 => '1/8000 s',
|
8529
|
-
40 => '1/10000 s',
|
8530
|
-
40.5 => '1/12000 s',
|
8531
|
-
41 => '1/13000 s',
|
8532
|
-
42 => '1/16000 s',
|
8533
|
-
},
|
8782
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
8534
8783
|
},
|
8535
8784
|
#336 WhiteBalance
|
8536
8785
|
#406 PictureControl
|
@@ -8539,8 +8788,8 @@ my %nikonFocalConversions = (
|
|
8539
8788
|
#412 => { Name => 'NoiseReduction', PrintConv => \%offOn }, #Long Exposure Noise Reduction
|
8540
8789
|
#414 HighISONoiseReduction
|
8541
8790
|
#414 VignetteControl
|
8542
|
-
416 => { Name => 'MovieVignetteControl',
|
8543
|
-
418 => { Name => 'DiffractionCompensation',
|
8791
|
+
416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
8792
|
+
418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
8544
8793
|
#419 AutoDistortionControl #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
8545
8794
|
420 => { Name => 'FlickerReductionShooting', PrintConv => \%offOn },
|
8546
8795
|
#422 MeteringMode
|
@@ -8575,94 +8824,39 @@ my %nikonFocalConversions = (
|
|
8575
8824
|
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
8576
8825
|
},
|
8577
8826
|
#442 flash wirelss control 0=> 'Off' 1=> 'CMD'
|
8578
|
-
444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7,
|
8579
|
-
456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
|
8827
|
+
444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
8828
|
+
456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
8580
8829
|
#526 FocusMode
|
8581
|
-
528 => {
|
8582
|
-
|
8583
|
-
PrintConv => {
|
8584
|
-
1 => 'Single',
|
8585
|
-
2 => 'Dynamic',
|
8586
|
-
3 => 'Wide (S)',
|
8587
|
-
4 => 'Wide (L)',
|
8588
|
-
5 => '3D',
|
8589
|
-
6 => 'Auto',
|
8590
|
-
12 => 'Wide (C1)',
|
8591
|
-
13 => 'Wide (C2)',
|
8592
|
-
},
|
8593
|
-
},
|
8594
|
-
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
8830
|
+
528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9 },
|
8831
|
+
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
|
8595
8832
|
534 => {
|
8596
8833
|
Name => 'BracketSet',
|
8597
8834
|
RawConv => '$$self{BracketSet} = $val',
|
8598
|
-
PrintConv =>
|
8599
|
-
0 => 'AE/Flash',
|
8600
|
-
1 => 'AE',
|
8601
|
-
2 => 'Flash',
|
8602
|
-
3 => 'White Balance',
|
8603
|
-
4 => 'Active-D Lighting',
|
8604
|
-
},
|
8835
|
+
PrintConv => \%bracketSetZ9,
|
8605
8836
|
},
|
8606
8837
|
536 => {
|
8607
8838
|
Name => 'BracketProgram',
|
8608
8839
|
Condition => '$$self{BracketSet} < 3',
|
8609
8840
|
Notes => 'AE and/or Flash Bracketing',
|
8610
|
-
PrintConv =>
|
8611
|
-
0 => 'Disabled',
|
8612
|
-
2 => '2F',
|
8613
|
-
3 => '3F',
|
8614
|
-
4 => '4F',
|
8615
|
-
5 => '5F',
|
8616
|
-
7 => '7F',
|
8617
|
-
9 => '9F',
|
8618
|
-
},
|
8841
|
+
PrintConv => \%bracketProgramZ9,
|
8619
8842
|
},
|
8620
8843
|
538 => {
|
8621
8844
|
Name => 'BracketIncrement',
|
8622
8845
|
Condition => '$$self{BracketSet} < 3',
|
8623
8846
|
Notes => 'AE and/or Flash Bracketing',
|
8624
|
-
PrintConv =>
|
8625
|
-
0 => '0.3',
|
8626
|
-
#1 => '0.5',
|
8627
|
-
2 => '0.7',
|
8628
|
-
3 => '1.0',
|
8629
|
-
4 => '2.0',
|
8630
|
-
5 => '3.0',
|
8631
|
-
},
|
8847
|
+
PrintConv => \%bracketIncrementZ9,
|
8632
8848
|
},
|
8633
8849
|
#544 BracketProgram for ADL
|
8634
|
-
556 => {
|
8635
|
-
|
8636
|
-
|
8637
|
-
0 => 'Overflow',
|
8638
|
-
1 => 'Backup',
|
8639
|
-
2 => 'NEF Primary + JPG Secondary',
|
8640
|
-
3 => 'JPG Primary + JPG Secondary',
|
8641
|
-
},
|
8642
|
-
},
|
8643
|
-
572 => { Name => 'DXCropAlert', PrintConv => \%offOn, },
|
8644
|
-
574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9},
|
8850
|
+
556 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
8851
|
+
572 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
8852
|
+
574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
8645
8853
|
604 => {
|
8646
8854
|
Name => 'MovieImageArea',
|
8647
8855
|
Unknown => 1,
|
8648
|
-
Mask => 0x01,
|
8649
|
-
PrintConv =>
|
8650
|
-
0 => 'FX',
|
8651
|
-
1 => 'DX',
|
8652
|
-
},
|
8653
|
-
},
|
8654
|
-
614 => {
|
8655
|
-
Name => 'MovieType',
|
8656
|
-
Unknown => 1,
|
8657
|
-
PrintConv => {
|
8658
|
-
1 => 'H.265 8-bit (MP4)',
|
8659
|
-
2 => 'H.265 8-bit (MOV)',
|
8660
|
-
3 => 'H.265 10-bit (MOV)',
|
8661
|
-
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
8662
|
-
5 => 'ProRes RAW HQ 12-bit (MOV)',
|
8663
|
-
6 => 'NRAW 12-bit (NEV)'
|
8664
|
-
},
|
8856
|
+
Mask => 0x01, # without the mask 4 => 'FX', 5 => DX. only the 2nd Z-series field encountered with a mask
|
8857
|
+
PrintConv => \%imageAreaZ9b,
|
8665
8858
|
},
|
8859
|
+
614 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
8666
8860
|
616 => {
|
8667
8861
|
Name => 'MovieISOAutoHiLimit',
|
8668
8862
|
Format => 'int16u',
|
@@ -8671,110 +8865,44 @@ my %nikonFocalConversions = (
|
|
8671
8865
|
ValueConvInv => '8 * ($val + 104)',
|
8672
8866
|
PrintConv => \%iSOAutoHiLimitZ7,
|
8673
8867
|
},
|
8674
|
-
618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1},
|
8868
|
+
618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
8675
8869
|
620 => {
|
8676
8870
|
Name => 'MovieISOAutoManualMode',
|
8677
8871
|
Format => 'int16u',
|
8678
8872
|
Unknown => 1,
|
8679
8873
|
ValueConv => '($val-104)/8',
|
8680
|
-
|
8874
|
+
ValueConvInv => '8 * ($val + 104)',
|
8681
8875
|
PrintConv => \%iSOAutoHiLimitZ7,
|
8682
8876
|
},
|
8683
|
-
696 => { Name => 'MovieActiveD-Lighting',
|
8684
|
-
698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
|
8685
|
-
704 => {
|
8686
|
-
|
8687
|
-
|
8688
|
-
|
8689
|
-
|
8690
|
-
|
8691
|
-
|
8692
|
-
},
|
8693
|
-
|
8694
|
-
708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
|
8695
|
-
710 => {
|
8696
|
-
Name => 'MovieAFAreaMode',
|
8697
|
-
PrintConv => {
|
8698
|
-
1 => 'Single',
|
8699
|
-
3 => 'Wide (S)',
|
8700
|
-
4 => 'Wide (L)',
|
8701
|
-
6 => 'Auto',
|
8702
|
-
11 => 'Subject Tracking',
|
8703
|
-
},
|
8704
|
-
},
|
8705
|
-
712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1},
|
8706
|
-
716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
8707
|
-
718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'On', 2 => 'On' }, Unknown => 1 }, #not sure why the unusal mapping with 2 => 'On'
|
8708
|
-
720 => { Name => 'MicrophoneSensitivity', Unknown => 1}, #1-20
|
8709
|
-
722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
8877
|
+
696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
8878
|
+
698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
8879
|
+
704 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
8880
|
+
706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
8881
|
+
708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
8882
|
+
710 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
8883
|
+
712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
8884
|
+
716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
8885
|
+
718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
8886
|
+
720 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, #1-20
|
8887
|
+
722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
8710
8888
|
724 => { Name => 'MicrophoneFrequencyResponse', PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
8711
|
-
726 => { Name => 'WindNoiseReduction',
|
8712
|
-
748 => {
|
8713
|
-
|
8714
|
-
|
8715
|
-
|
8716
|
-
|
8717
|
-
|
8718
|
-
2 => 'N-Log',
|
8719
|
-
},
|
8720
|
-
},
|
8721
|
-
754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
|
8722
|
-
756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
|
8723
|
-
762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
8724
|
-
763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
8725
|
-
764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1},
|
8889
|
+
726 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
8890
|
+
748 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
|
8891
|
+
754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
8892
|
+
756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
8893
|
+
762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
8894
|
+
763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
8895
|
+
764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
8726
8896
|
799 => {
|
8727
8897
|
Name => 'CustomSettingsZ9',
|
8728
8898
|
Format => 'undef[608]',
|
8729
8899
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
|
8730
8900
|
},
|
8731
|
-
1426 => {
|
8732
|
-
|
8733
|
-
|
8734
|
-
|
8735
|
-
|
8736
|
-
5 => 'Spanish',
|
8737
|
-
7 => 'French',
|
8738
|
-
},
|
8739
|
-
},
|
8740
|
-
1428 => {
|
8741
|
-
Name => 'TimeZone',
|
8742
|
-
PrintConv => {
|
8743
|
-
5 => '+09:00 (Tokyo)',
|
8744
|
-
6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
|
8745
|
-
10 => '+05:45 (Kathmandu)',
|
8746
|
-
11 => '+05:30 (New Dehli)',
|
8747
|
-
16 => '+03:00 (Moscow, Nairobi)',
|
8748
|
-
15 => '+02:00 (Athens)',
|
8749
|
-
16 => '+01:00 (Madrid, Paris, Berlin)',
|
8750
|
-
17 => '+02:00 (Athens, Helsinki)',
|
8751
|
-
18 => '+00:00 (London)',
|
8752
|
-
19 => '+00:00', #PH (unknown city)
|
8753
|
-
22 => '-03:00 (Buenos Aires, Sao Paulo)',
|
8754
|
-
24 => '-04:00 (Manaus, Caracas)',
|
8755
|
-
25 => '-05:00 (New York, Toronto, Lima)',
|
8756
|
-
26 => '-06:00 (Chicago, Mexico City)',
|
8757
|
-
27 => '-07:00 (Denver)',
|
8758
|
-
28 => '-08:00 (Los Angeles, Vancouver)',
|
8759
|
-
29 => '-09:00 (Anchorage)',
|
8760
|
-
30 => '-10:00 (Hawaii)',
|
8761
|
-
},
|
8762
|
-
},
|
8763
|
-
1434 => {Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1}, # settings: -5 to +5
|
8764
|
-
1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
8765
|
-
1552 => {
|
8766
|
-
Name => 'HDMIOutputResolution',
|
8767
|
-
PrintConv => {
|
8768
|
-
0 => 'Auto',
|
8769
|
-
1 => '4320p',
|
8770
|
-
2 => '2160p',
|
8771
|
-
3 => '1080p',
|
8772
|
-
#4 => '1080i',
|
8773
|
-
5 => '720p',
|
8774
|
-
#6 => '576p',
|
8775
|
-
#7 => '480p',
|
8776
|
-
},
|
8777
|
-
},
|
8901
|
+
1426 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
8902
|
+
1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
8903
|
+
1434 => { Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1 }, # settings: -5 to +5
|
8904
|
+
1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
8905
|
+
1552 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
8778
8906
|
1565 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
|
8779
8907
|
1572 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
8780
8908
|
1573 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
@@ -8783,6 +8911,177 @@ my %nikonFocalConversions = (
|
|
8783
8911
|
1636 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
8784
8912
|
1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
8785
8913
|
);
|
8914
|
+
%Image::ExifTool::Nikon::MenuSettingsZ9Firmware3 = ( #starts at Offset26 + 248
|
8915
|
+
%binaryDataAttrs,
|
8916
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8917
|
+
DATAMEMBER => [ 154, 204, 208, 248, 554 ],
|
8918
|
+
IS_SUBDIR => [ 847 ],
|
8919
|
+
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
8920
|
+
154 => {
|
8921
|
+
Name => 'MultipleExposureMode',
|
8922
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
8923
|
+
PrintConv => \%multipleExposureModeZ9,
|
8924
|
+
},
|
8925
|
+
156 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
8926
|
+
204 => {
|
8927
|
+
Name => 'Intervals',
|
8928
|
+
Format => 'int32u',
|
8929
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
8930
|
+
Condition => '$$self{IntervalShooting} > 0',
|
8931
|
+
},
|
8932
|
+
208 => {
|
8933
|
+
Name => 'ShotsPerInterval',
|
8934
|
+
Format => 'int32u',
|
8935
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
8936
|
+
Condition => '$$self{IntervalShooting} > 0',
|
8937
|
+
},
|
8938
|
+
248 => {
|
8939
|
+
Name => 'FocusShiftNumberShots', #1-300
|
8940
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
8941
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
8942
|
+
},
|
8943
|
+
252 => {
|
8944
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
8945
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
8946
|
+
},
|
8947
|
+
256 => {
|
8948
|
+
Name => 'FocusShiftInterval',
|
8949
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
8950
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
8951
|
+
},
|
8952
|
+
260 => {
|
8953
|
+
Name => 'FocusShiftExposureLock',
|
8954
|
+
Unknown => 1,
|
8955
|
+
PrintConv => \%offOn,
|
8956
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
8957
|
+
},
|
8958
|
+
290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
8959
|
+
292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
8960
|
+
328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
8961
|
+
342 => { Name => 'AutoISO', PrintConv => \%offOn },
|
8962
|
+
344 => {
|
8963
|
+
Name => 'ISOAutoHiLimit',
|
8964
|
+
Format => 'int16u',
|
8965
|
+
Unknown => 1,
|
8966
|
+
ValueConv => '($val-104)/8',
|
8967
|
+
ValueConvInv => '8 * ($val + 104)',
|
8968
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
8969
|
+
},
|
8970
|
+
346 => {
|
8971
|
+
Name => 'ISOAutoFlashLimit',
|
8972
|
+
Format => 'int16u',
|
8973
|
+
Unknown => 1,
|
8974
|
+
ValueConv => '($val-104)/8',
|
8975
|
+
ValueConvInv => '8 * ($val + 104)',
|
8976
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
8977
|
+
},
|
8978
|
+
354 => {
|
8979
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
8980
|
+
ValueConv => '$val / 8',
|
8981
|
+
Format => 'int16s',
|
8982
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
8983
|
+
},
|
8984
|
+
436 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
8985
|
+
438 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
8986
|
+
440 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
8987
|
+
548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
|
8988
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
8989
|
+
554 => {
|
8990
|
+
Name => 'BracketSet',
|
8991
|
+
RawConv => '$$self{BracketSet} = $val',
|
8992
|
+
PrintConv => \%bracketSetZ9,
|
8993
|
+
},
|
8994
|
+
556 => {
|
8995
|
+
Name => 'BracketProgram',
|
8996
|
+
Condition => '$$self{BracketSet} < 3',
|
8997
|
+
Notes => 'AE and/or Flash Bracketing',
|
8998
|
+
PrintConv => \%bracketProgramZ9,
|
8999
|
+
},
|
9000
|
+
558 => {
|
9001
|
+
Name => 'BracketIncrement',
|
9002
|
+
Condition => '$$self{BracketSet} < 3',
|
9003
|
+
Notes => 'AE and/or Flash Bracketing',
|
9004
|
+
PrintConv => \%bracketIncrementZ9,
|
9005
|
+
},
|
9006
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
9007
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
9008
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
9009
|
+
636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
9010
|
+
646 => {
|
9011
|
+
Name => 'MovieImageArea',
|
9012
|
+
Unknown => 1,
|
9013
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
9014
|
+
PrintConv => \%imageAreaZ9b,
|
9015
|
+
},
|
9016
|
+
656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
9017
|
+
658 => {
|
9018
|
+
Name => 'MovieISOAutoHiLimit',
|
9019
|
+
Format => 'int16u',
|
9020
|
+
Unknown => 1,
|
9021
|
+
ValueConv => '($val-104)/8',
|
9022
|
+
ValueConvInv => '8 * ($val + 104)',
|
9023
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9024
|
+
},
|
9025
|
+
660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
9026
|
+
662 => {
|
9027
|
+
Name => 'MovieISOAutoManualMode',
|
9028
|
+
Format => 'int16u',
|
9029
|
+
Unknown => 1,
|
9030
|
+
ValueConv => '($val-104)/8',
|
9031
|
+
ValueConvInv => '8 * ($val + 104)',
|
9032
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9033
|
+
},
|
9034
|
+
736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
9035
|
+
738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
9036
|
+
744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
9037
|
+
746 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
9038
|
+
748 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
9039
|
+
750 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
9040
|
+
752 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
9041
|
+
756 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
9042
|
+
758 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
9043
|
+
760 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
9044
|
+
762 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
9045
|
+
764 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
9046
|
+
766 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
9047
|
+
788 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
|
9048
|
+
794 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
9049
|
+
796 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
9050
|
+
802 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
9051
|
+
803 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
9052
|
+
804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
9053
|
+
812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
9054
|
+
847 => {
|
9055
|
+
Name => 'CustomSettingsZ9',
|
9056
|
+
Format => 'undef[608]',
|
9057
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
|
9058
|
+
},
|
9059
|
+
1474 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
9060
|
+
1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
9061
|
+
1482 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
9062
|
+
1504 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
9063
|
+
1600 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
9064
|
+
1613 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
|
9065
|
+
1620 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
9066
|
+
1621 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
9067
|
+
1656 => { Name => 'EnergySavingMode', PrintConv =>\%offOn, Unknown => 1 },
|
9068
|
+
1680 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
|
9069
|
+
1684 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
9070
|
+
1693 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
9071
|
+
1754 => {
|
9072
|
+
Name => 'FocusShiftAutoReset',
|
9073
|
+
Unknown => 1,
|
9074
|
+
PrintConv => \%offOn,
|
9075
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
9076
|
+
},
|
9077
|
+
#1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
|
9078
|
+
#1826 VerticalISOButton CSf2
|
9079
|
+
#1828 ExposureCompensationButton CSf2
|
9080
|
+
#1830 ISOButton CSf2
|
9081
|
+
#1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
|
9082
|
+
#1892 DispButton CSf2
|
9083
|
+
#1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
|
9084
|
+
);
|
8786
9085
|
|
8787
9086
|
# Flash information (ref JD)
|
8788
9087
|
%Image::ExifTool::Nikon::FlashInfo0100 = (
|
@@ -10076,6 +10375,36 @@ my %nikonFocalConversions = (
|
|
10076
10375
|
},
|
10077
10376
|
);
|
10078
10377
|
|
10378
|
+
# Multi exposure2 / image overlay information (ref 39)
|
10379
|
+
%Image::ExifTool::Nikon::MultiExposure2 = (
|
10380
|
+
%binaryDataAttrs,
|
10381
|
+
FORMAT => 'int32u',
|
10382
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
10383
|
+
0 => {
|
10384
|
+
Name => 'MultiExposureVersion',
|
10385
|
+
Format => 'string[4]',
|
10386
|
+
Writable => 0,
|
10387
|
+
},
|
10388
|
+
1 => {
|
10389
|
+
Name => 'MultiExposureMode',
|
10390
|
+
PrintConv => {
|
10391
|
+
0 => 'Off',
|
10392
|
+
1 => 'Multiple Exposure',
|
10393
|
+
3 => 'HDR',
|
10394
|
+
},
|
10395
|
+
},
|
10396
|
+
2 => 'MultiExposureShots',
|
10397
|
+
3 => {
|
10398
|
+
Name => 'MultiExposureOverlayMode',
|
10399
|
+
PrintConv => {
|
10400
|
+
0 => 'Add',
|
10401
|
+
1 => 'Average',
|
10402
|
+
2 => 'Light',
|
10403
|
+
3 => 'Dark',
|
10404
|
+
},
|
10405
|
+
},
|
10406
|
+
);
|
10407
|
+
|
10079
10408
|
# HDR information (ref 32)
|
10080
10409
|
%Image::ExifTool::Nikon::HDRInfo = (
|
10081
10410
|
%binaryDataAttrs,
|
@@ -10084,12 +10413,13 @@ my %nikonFocalConversions = (
|
|
10084
10413
|
0 => {
|
10085
10414
|
Name => 'HDRInfoVersion',
|
10086
10415
|
Format => 'string[4]',
|
10416
|
+
Writable => 0,
|
10087
10417
|
},
|
10088
10418
|
4 => {
|
10089
10419
|
Name => 'HDR',
|
10090
10420
|
PrintConv => {
|
10091
10421
|
0 => 'Off',
|
10092
|
-
1 => 'On',
|
10422
|
+
1 => 'On (normal)',
|
10093
10423
|
48 => 'Auto', #PH (NC)
|
10094
10424
|
},
|
10095
10425
|
},
|
@@ -10127,6 +10457,35 @@ my %nikonFocalConversions = (
|
|
10127
10457
|
},
|
10128
10458
|
);
|
10129
10459
|
|
10460
|
+
# ref 39 (Z9)
|
10461
|
+
%Image::ExifTool::Nikon::HDRInfo2 = (
|
10462
|
+
%binaryDataAttrs,
|
10463
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
10464
|
+
0 => {
|
10465
|
+
Name => 'HDRInfoVersion', # 0200
|
10466
|
+
Format => 'string[4]',
|
10467
|
+
Writable => 0,
|
10468
|
+
},
|
10469
|
+
4 => {
|
10470
|
+
Name => 'HDR',
|
10471
|
+
PrintConv => {
|
10472
|
+
0 => 'Off',
|
10473
|
+
1 => 'On (normal)',
|
10474
|
+
},
|
10475
|
+
},
|
10476
|
+
5 => {
|
10477
|
+
Name => 'HDRLevel',
|
10478
|
+
PrintConv => {
|
10479
|
+
0 => 'n/a',
|
10480
|
+
1 => 'Normal',
|
10481
|
+
2 => 'Low',
|
10482
|
+
3 => 'High',
|
10483
|
+
4 => 'High+',
|
10484
|
+
5 => 'Auto',
|
10485
|
+
},
|
10486
|
+
},
|
10487
|
+
);
|
10488
|
+
|
10130
10489
|
# location information (ref PH)
|
10131
10490
|
%Image::ExifTool::Nikon::LocationInfo = (
|
10132
10491
|
%binaryDataAttrs,
|
@@ -10847,9 +11206,14 @@ my %nikonFocalConversions = (
|
|
10847
11206
|
Name => 'LocationInfo',
|
10848
11207
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::LocationInfo' },
|
10849
11208
|
},
|
11209
|
+
0x200003f => 'WhiteBalanceFineTune',
|
10850
11210
|
# 0x200003f - rational64s[2]: "0 0"
|
10851
11211
|
# 0x2000042 - undef[6]: "0100\x03\0"
|
10852
11212
|
# 0x2000043 - undef[12]: all zeros
|
11213
|
+
0x200004e => {
|
11214
|
+
Name => 'NikonSettings',
|
11215
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonSettings::Main' },
|
11216
|
+
},
|
10853
11217
|
0x2000083 => {
|
10854
11218
|
Name => 'LensType',
|
10855
11219
|
# credit to Tom Christiansen (ref 7) for figuring this out...
|
@@ -11316,7 +11680,7 @@ sub PrintAFPointsGridInv($$$)
|
|
11316
11680
|
#------------------------------------------------------------------------------
|
11317
11681
|
# Print conversion for relative Left/Right AF points (ref 28)
|
11318
11682
|
# Inputs: 0) column, 1) number of columns
|
11319
|
-
# Returns: AF point data as a string (e.g. '2L' or 'C' or '3R')
|
11683
|
+
# Returns: AF point data as a string (e.g. '2L of Center' or 'C' or '3R of Center')
|
11320
11684
|
sub PrintAFPointsLeftRight($$)
|
11321
11685
|
{
|
11322
11686
|
my ($col, $ncol) = @_;
|
@@ -11329,7 +11693,7 @@ sub PrintAFPointsLeftRight($$)
|
|
11329
11693
|
#------------------------------------------------------------------------------
|
11330
11694
|
# Print conversion for relative Up/Down AF points (ref 28)
|
11331
11695
|
# Inputs: 0) row, 1) number of rows
|
11332
|
-
# Returns: AF point data as a string (e.g. '2U' or 'C' or '3D')
|
11696
|
+
# Returns: AF point data as a string (e.g. '2U from Center' or 'C' or '3D from Center')
|
11333
11697
|
sub PrintAFPointsUpDown($$)
|
11334
11698
|
{
|
11335
11699
|
my ($row, $nrow) = @_;
|