exiftool_vendored 12.42.0 → 12.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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) = @_;
|