exiftool-vendored.pl 12.49.0 → 12.54.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.
- package/bin/Changes +107 -6
- package/bin/MANIFEST +5 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +3 -3
- package/bin/exiftool +39 -30
- package/bin/lib/File/RandomAccess.pm +1 -1
- package/bin/lib/File/RandomAccess.pod +2 -2
- package/bin/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/APE.pm +1 -1
- package/bin/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/lib/Image/ExifTool/ASF.pm +1 -1
- package/bin/lib/Image/ExifTool/Apple.pm +197 -27
- package/bin/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -7
- package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- package/bin/lib/Image/ExifTool/Canon.pm +26 -9
- package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +9 -9
- package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/lib/Image/ExifTool/Casio.pm +4 -4
- package/bin/lib/Image/ExifTool/Charset.pm +1 -1
- package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +1 -1
- package/bin/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/lib/Image/ExifTool/EXE.pm +1 -1
- package/bin/lib/Image/ExifTool/Exif.pm +11 -21
- package/bin/lib/Image/ExifTool/FITS.pm +1 -1
- package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIR.pm +7 -6
- package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- package/bin/lib/Image/ExifTool/Font.pm +1 -1
- package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +20 -13
- package/bin/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/lib/Image/ExifTool/GIF.pm +1 -1
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +12 -6
- package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/lib/Image/ExifTool/Geotag.pm +14 -6
- package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- package/bin/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/lib/Image/ExifTool/HP.pm +1 -1
- package/bin/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- package/bin/lib/Image/ExifTool/ICO.pm +3 -1
- package/bin/lib/Image/ExifTool/ID3.pm +1 -1
- package/bin/lib/Image/ExifTool/IPTC.pm +6 -2
- package/bin/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/lib/Image/ExifTool/Import.pm +1 -1
- package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +2 -1
- package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +35 -8
- package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/lib/Image/ExifTool/LNK.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
- package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fr.pm +6016 -760
- package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sk.pm +1806 -0
- package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +45 -2
- package/bin/lib/Image/ExifTool/MIE.pm +1 -1
- package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/MISB.pm +2 -2
- package/bin/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/lib/Image/ExifTool/MXF.pm +1 -1
- package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/lib/Image/ExifTool/Matroska.pm +262 -46
- package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +845 -355
- package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonCustom.pm +140 -107
- package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +6 -4
- package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- package/bin/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/lib/Image/ExifTool/PDF.pm +1 -1
- package/bin/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +12 -7
- package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/lib/Image/ExifTool/PNG.pm +9 -2
- package/bin/lib/Image/ExifTool/PPM.pm +1 -1
- package/bin/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +8 -3
- package/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +52 -9
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +95 -14
- package/bin/lib/Image/ExifTool/README +6 -1
- package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/lib/Image/ExifTool/RTF.pm +1 -1
- package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +3 -1
- package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/lib/Image/ExifTool/Shift.pl +1 -1
- package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Sony.pm +35 -20
- package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/lib/Image/ExifTool/TagInfoXML.pm +15 -8
- package/bin/lib/Image/ExifTool/TagLookup.pm +4672 -4568
- package/bin/lib/Image/ExifTool/TagNames.pod +357 -46
- package/bin/lib/Image/ExifTool/Text.pm +1 -1
- package/bin/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/lib/Image/ExifTool/VCard.pm +1 -1
- package/bin/lib/Image/ExifTool/Validate.pm +1 -1
- package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +14 -1
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePDF.pl +5 -1
- package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteXMP.pl +16 -2
- package/bin/lib/Image/ExifTool/Writer.pl +35 -15
- package/bin/lib/Image/ExifTool/XMP.pm +25 -4
- package/bin/lib/Image/ExifTool/XMP2.pl +29 -2
- package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- package/bin/lib/Image/ExifTool/ZIP.pm +20 -8
- package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/lib/Image/ExifTool.pm +45 -20
- package/bin/lib/Image/ExifTool.pod +48 -46
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +6 -5
- package/package.json +3 -3
|
@@ -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.16';
|
|
67
68
|
|
|
68
69
|
sub LensIDConv($$$);
|
|
69
70
|
sub ProcessNikonAVI($$$);
|
|
@@ -368,6 +369,7 @@ sub GetAFPointGrid($$;$);
|
|
|
368
369
|
'48 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
|
|
369
370
|
'F8 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM', #JD
|
|
370
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
|
|
371
373
|
'DE 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 EX DG HSM',
|
|
372
374
|
'88 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 DG HSM | A',
|
|
373
375
|
'02 48 50 50 24 24 02 00' => 'Sigma Macro 50mm F2.8', #https://exiftool.org/forum/index.php/topic,4027.0.html
|
|
@@ -381,6 +383,7 @@ sub GetAFPointGrid($$;$);
|
|
|
381
383
|
'32 54 6A 6A 24 24 35 02.2' => 'Sigma Macro 105mm F2.8 EX DG', #JD
|
|
382
384
|
'E5 54 6A 6A 24 24 35 02' => 'Sigma Macro 105mm F2.8 EX DG',
|
|
383
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
|
|
384
387
|
'48 48 76 76 24 24 4B 06' => 'Sigma APO Macro 150mm F2.8 EX DG HSM',
|
|
385
388
|
'F5 48 76 76 24 24 4B 06' => 'Sigma APO Macro 150mm F2.8 EX DG HSM', #24
|
|
386
389
|
'99 48 76 76 24 24 4B 0E' => 'Sigma APO Macro 150mm F2.8 EX DG OS HSM', #(Christian Hesse)
|
|
@@ -436,7 +439,7 @@ sub GetAFPointGrid($$;$);
|
|
|
436
439
|
'90 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 II DC OS HSM', #JohnHelour
|
|
437
440
|
'89 30 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC Macro OS HS | C', #JoeSchonberg
|
|
438
441
|
'A5 40 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM',
|
|
439
|
-
|
|
442
|
+
# LensFStops varies with FocalLength for this lens (ref 2):
|
|
440
443
|
'92 2C 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', #2
|
|
441
444
|
'87 2C 2D 8E 2C 40 4B 0E' => 'Sigma 18-300mm F3.5-6.3 DC Macro HSM', #30
|
|
442
445
|
# '92 2C 2D 88 2C 40 4B 0E' (250mm)
|
|
@@ -614,6 +617,7 @@ sub GetAFPointGrid($$;$);
|
|
|
614
617
|
#
|
|
615
618
|
'00 40 2B 2B 2C 2C 00 02' => 'Tokina AT-X 17 AF PRO (AF 17mm f/3.5)',
|
|
616
619
|
'00 47 44 44 24 24 00 06' => 'Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro)',
|
|
620
|
+
'8D 54 68 68 24 24 87 02' => 'Tokina AT-X PRO 100mm F2.8 D Macro', #30
|
|
617
621
|
'00 54 68 68 24 24 00 02' => 'Tokina AT-X M100 AF PRO D (AF 100mm f/2.8 Macro)',
|
|
618
622
|
'27 48 8E 8E 30 30 1D 02' => 'Tokina AT-X 304 AF (AF 300mm f/4.0)',
|
|
619
623
|
'00 54 8E 8E 24 24 00 02' => 'Tokina AT-X 300 AF PRO (AF 300mm f/2.8)',
|
|
@@ -806,6 +810,7 @@ my %flashColorFilter = (
|
|
|
806
810
|
66 => 'Blue',
|
|
807
811
|
67 => 'Yellow',
|
|
808
812
|
68 => 'Amber',
|
|
813
|
+
128 => 'Incandescent', #SZ-4TN Incandescent
|
|
809
814
|
);
|
|
810
815
|
|
|
811
816
|
# flash control mode values (ref JD)
|
|
@@ -828,6 +833,53 @@ my %activeDLightingZ7 = (
|
|
|
828
833
|
5 => 'Extra High',
|
|
829
834
|
);
|
|
830
835
|
|
|
836
|
+
my %aFAreaModeZ9 = (
|
|
837
|
+
0 => 'Pinpoint',
|
|
838
|
+
1 => 'Single',
|
|
839
|
+
2 => 'Dynamic',
|
|
840
|
+
3 => 'Wide (S)',
|
|
841
|
+
4 => 'Wide (L)',
|
|
842
|
+
5 => '3D',
|
|
843
|
+
6 => 'Auto',
|
|
844
|
+
11 => 'Subject Tracking',
|
|
845
|
+
12 => 'Wide (C1)',
|
|
846
|
+
13 => 'Wide (C2)',
|
|
847
|
+
);
|
|
848
|
+
|
|
849
|
+
my %banksZ9 = (
|
|
850
|
+
0 => 'A',
|
|
851
|
+
1 => 'B',
|
|
852
|
+
2 => 'C',
|
|
853
|
+
3 => 'D',
|
|
854
|
+
);
|
|
855
|
+
|
|
856
|
+
my %bracketIncrementZ9 = (
|
|
857
|
+
0 => '0.3',
|
|
858
|
+
#1 => '0.5',
|
|
859
|
+
2 => '0.7',
|
|
860
|
+
3 => '1.0',
|
|
861
|
+
4 => '2.0',
|
|
862
|
+
5 => '3.0',
|
|
863
|
+
);
|
|
864
|
+
|
|
865
|
+
my %bracketSetZ9 = (
|
|
866
|
+
0 => 'AE/Flash',
|
|
867
|
+
1 => 'AE',
|
|
868
|
+
2 => 'Flash',
|
|
869
|
+
3 => 'White Balance',
|
|
870
|
+
4 => 'Active-D Lighting',
|
|
871
|
+
);
|
|
872
|
+
|
|
873
|
+
my %bracketProgramZ9 = (
|
|
874
|
+
0 => 'Disabled',
|
|
875
|
+
2 => '2F',
|
|
876
|
+
3 => '3F',
|
|
877
|
+
4 => '4F',
|
|
878
|
+
5 => '5F',
|
|
879
|
+
7 => '7F',
|
|
880
|
+
9 => '9F',
|
|
881
|
+
);
|
|
882
|
+
|
|
831
883
|
my %flashControlModeZ7 = (
|
|
832
884
|
0 => 'TTL',
|
|
833
885
|
1 => 'Auto External Flash',
|
|
@@ -856,9 +908,32 @@ my %focusModeZ7 = (
|
|
|
856
908
|
4 => 'AF-F', # full frame
|
|
857
909
|
);
|
|
858
910
|
|
|
911
|
+
my %hDMIOutputResolutionZ9 = (
|
|
912
|
+
0 => 'Auto',
|
|
913
|
+
1 => '4320p',
|
|
914
|
+
2 => '2160p',
|
|
915
|
+
3 => '1080p',
|
|
916
|
+
#4 => '1080i',
|
|
917
|
+
5 => '720p',
|
|
918
|
+
#6 => '576p',
|
|
919
|
+
#7 => '480p',
|
|
920
|
+
);
|
|
921
|
+
|
|
922
|
+
my %imageAreaZ9 = (
|
|
923
|
+
0 => 'FX',
|
|
924
|
+
1 => 'DX',
|
|
925
|
+
4 => '16:9',
|
|
926
|
+
8 => '1:1',
|
|
927
|
+
);
|
|
928
|
+
|
|
929
|
+
my %imageAreaZ9b = (
|
|
930
|
+
0 => 'FX',
|
|
931
|
+
1 => 'DX',
|
|
932
|
+
);
|
|
933
|
+
|
|
859
934
|
my %infoZSeries = (
|
|
860
935
|
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
|
|
861
|
-
Notes => 'Z Series cameras thru
|
|
936
|
+
Notes => 'Z Series cameras thru December 2021',
|
|
862
937
|
);
|
|
863
938
|
my %iSOAutoHiLimitZ7 = (
|
|
864
939
|
0 => 'ISO 64',
|
|
@@ -894,6 +969,66 @@ my %iSOAutoHiLimitZ7 = (
|
|
|
894
969
|
32 => 'ISO Hi 2.0',
|
|
895
970
|
);
|
|
896
971
|
|
|
972
|
+
my %iSOAutoShutterTimeZ9 = (
|
|
973
|
+
-15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
|
|
974
|
+
-12 => '15 s',
|
|
975
|
+
-9 => '8 s',
|
|
976
|
+
-6 => '4 s',
|
|
977
|
+
-3 => '2 s',
|
|
978
|
+
0 => '1 s',
|
|
979
|
+
1 => '1/1.3 s',
|
|
980
|
+
2 => '1/1.6 s',
|
|
981
|
+
3 => '1/2 s',
|
|
982
|
+
4 => '1/2.5 s',
|
|
983
|
+
5 => '1/3 s',
|
|
984
|
+
6 => '1/4 s',
|
|
985
|
+
7 => '1/5 s',
|
|
986
|
+
8 => '1/6 s',
|
|
987
|
+
9 => '1/8 s',
|
|
988
|
+
10 => '1/10 s',
|
|
989
|
+
11 => '1/13 s',
|
|
990
|
+
12 => '1/15 s',
|
|
991
|
+
13 => '1/20 s',
|
|
992
|
+
14 => '1/25 s',
|
|
993
|
+
15 => '1/30 s',
|
|
994
|
+
16 => '1/40 s',
|
|
995
|
+
17 => '1/50 s',
|
|
996
|
+
18 => '1/60 s',
|
|
997
|
+
19 => '1/80 s',
|
|
998
|
+
20 => '1/100 s',
|
|
999
|
+
21 => '1/120 s',
|
|
1000
|
+
22 => '1/160 s',
|
|
1001
|
+
23 => '1/200 s',
|
|
1002
|
+
24 => '1/250 s',
|
|
1003
|
+
25 => '1/320 s',
|
|
1004
|
+
26 => '1/400 s',
|
|
1005
|
+
27 => '1/500 s',
|
|
1006
|
+
28 => '1/640 s',
|
|
1007
|
+
29 => '1/800 s',
|
|
1008
|
+
30 => '1/1000 s',
|
|
1009
|
+
31 => '1/1250 s',
|
|
1010
|
+
32 => '1/1600 s',
|
|
1011
|
+
33 => '1/2000 s',
|
|
1012
|
+
34 => '1/2500 s',
|
|
1013
|
+
35 => '1/3200 s',
|
|
1014
|
+
36 => '1/4000 s',
|
|
1015
|
+
37 => '1/5000 s',
|
|
1016
|
+
37.5 => '1/6000 s',
|
|
1017
|
+
38 => '1/6400 s',
|
|
1018
|
+
39 => '1/8000 s',
|
|
1019
|
+
40 => '1/10000 s',
|
|
1020
|
+
40.5 => '1/12000 s',
|
|
1021
|
+
41 => '1/13000 s',
|
|
1022
|
+
42 => '1/16000 s',
|
|
1023
|
+
);
|
|
1024
|
+
|
|
1025
|
+
my %languageZ9 = (
|
|
1026
|
+
4 => 'English',
|
|
1027
|
+
5 => 'Spanish',
|
|
1028
|
+
7 => 'French',
|
|
1029
|
+
15 => 'Portuguese'
|
|
1030
|
+
);
|
|
1031
|
+
|
|
897
1032
|
my %meteringModeZ7 = (
|
|
898
1033
|
0 => 'Matrix',
|
|
899
1034
|
1 => 'Center',
|
|
@@ -901,6 +1036,30 @@ my %meteringModeZ7 = (
|
|
|
901
1036
|
3 => 'Highlight'
|
|
902
1037
|
);
|
|
903
1038
|
|
|
1039
|
+
my %monitorBrightnessZ9 = (
|
|
1040
|
+
0 => '-5',
|
|
1041
|
+
1 => '-4',
|
|
1042
|
+
2 => '-3',
|
|
1043
|
+
3 => '-2',
|
|
1044
|
+
4 => '-1',
|
|
1045
|
+
5 => '0',
|
|
1046
|
+
6 => '1',
|
|
1047
|
+
7 => '2',
|
|
1048
|
+
8 => '3',
|
|
1049
|
+
9 => '4',
|
|
1050
|
+
10 => '5',
|
|
1051
|
+
14 => 'Hi1',
|
|
1052
|
+
15 => 'Hi2',
|
|
1053
|
+
16 => 'Lo2',
|
|
1054
|
+
17 => 'Lo1',
|
|
1055
|
+
);
|
|
1056
|
+
|
|
1057
|
+
my %movieFlickerReductionZ9 = (
|
|
1058
|
+
0 => 'Auto',
|
|
1059
|
+
1 => '50Hz',
|
|
1060
|
+
2 => '60Hz',
|
|
1061
|
+
);
|
|
1062
|
+
|
|
904
1063
|
my %movieFrameRateZ7 = (
|
|
905
1064
|
0 => '120p',
|
|
906
1065
|
1 => '100p',
|
|
@@ -911,6 +1070,33 @@ my %movieFrameRateZ7 = (
|
|
|
911
1070
|
6 => '24p',
|
|
912
1071
|
);
|
|
913
1072
|
|
|
1073
|
+
my %movieFrameSizeZ9 = (
|
|
1074
|
+
1 => '1920x1080',
|
|
1075
|
+
2 => '3840x2160',
|
|
1076
|
+
3 => '7680x4320',
|
|
1077
|
+
);
|
|
1078
|
+
|
|
1079
|
+
my %movieToneMapZ9 = (
|
|
1080
|
+
0 => 'SDR',
|
|
1081
|
+
1 => 'HLG',
|
|
1082
|
+
2 => 'N-Log',
|
|
1083
|
+
);
|
|
1084
|
+
|
|
1085
|
+
my %movieTypeZ9 = (
|
|
1086
|
+
1 => 'H.265 8-bit (MP4)',
|
|
1087
|
+
2 => 'H.265 8-bit (MOV)',
|
|
1088
|
+
3 => 'H.265 10-bit (MOV)',
|
|
1089
|
+
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
|
1090
|
+
5 => 'ProRes RAW HQ 12-bit (MOV)',
|
|
1091
|
+
6 => 'NRAW 12-bit (NEV)'
|
|
1092
|
+
);
|
|
1093
|
+
|
|
1094
|
+
my %multipleExposureModeZ9 = (
|
|
1095
|
+
0 => 'Off',
|
|
1096
|
+
1 => 'On',
|
|
1097
|
+
2 => 'On (Series)',
|
|
1098
|
+
);
|
|
1099
|
+
|
|
914
1100
|
my %offLowNormalHighZ7 = (
|
|
915
1101
|
0 => 'Off',
|
|
916
1102
|
1 => 'Low',
|
|
@@ -918,10 +1104,11 @@ my %offLowNormalHighZ7 = (
|
|
|
918
1104
|
3 => 'High',
|
|
919
1105
|
);
|
|
920
1106
|
|
|
921
|
-
my %
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
1107
|
+
my %secondarySlotFunctionZ9 = (
|
|
1108
|
+
0 => 'Overflow',
|
|
1109
|
+
1 => 'Backup',
|
|
1110
|
+
2 => 'NEF Primary + JPG Secondary',
|
|
1111
|
+
3 => 'JPG Primary + JPG Secondary',
|
|
925
1112
|
);
|
|
926
1113
|
|
|
927
1114
|
my %subjectDetectionZ9 = (
|
|
@@ -932,6 +1119,34 @@ my %subjectDetectionZ9 = (
|
|
|
932
1119
|
4 => 'Vehicles',
|
|
933
1120
|
);
|
|
934
1121
|
|
|
1122
|
+
my %timeZoneZ9 = (
|
|
1123
|
+
3 => '+10:00 (Sydney)',
|
|
1124
|
+
5 => '+09:00 (Tokyo)',
|
|
1125
|
+
6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
|
|
1126
|
+
10 => '+05:45 (Kathmandu)',
|
|
1127
|
+
11 => '+05:30 (New Dehli)',
|
|
1128
|
+
12 => '+05:00 (Islamabad)',
|
|
1129
|
+
13 => '+04:30 (Kabul)',
|
|
1130
|
+
14 => '+04:00 (Abu Dhabi)',
|
|
1131
|
+
15 => '+03:30 (Tehran)',
|
|
1132
|
+
16 => '+03:00 (Moscow, Nairobi)',
|
|
1133
|
+
17 => '+02:00 (Athens, Helsinki)',
|
|
1134
|
+
18 => '+01:00 (Madrid, Paris, Berlin)',
|
|
1135
|
+
19 => '+00:00 (London)',
|
|
1136
|
+
20 => '-01:00 (Azores)',
|
|
1137
|
+
21 => '-02:00 (Fernando de Noronha)',
|
|
1138
|
+
22 => '-03:00 (Buenos Aires, Sao Paulo)',
|
|
1139
|
+
23 => '-03:30 (Newfoundland)',
|
|
1140
|
+
24 => '-04:00 (Manaus, Caracas)',
|
|
1141
|
+
25 => '-05:00 (New York, Toronto, Lima)',
|
|
1142
|
+
26 => '-06:00 (Chicago, Mexico City)',
|
|
1143
|
+
27 => '-07:00 (Denver)',
|
|
1144
|
+
28 => '-08:00 (Los Angeles, Vancouver)',
|
|
1145
|
+
29 => '-09:00 (Anchorage)',
|
|
1146
|
+
30 => '-10:00 (Hawaii)',
|
|
1147
|
+
);
|
|
1148
|
+
|
|
1149
|
+
|
|
935
1150
|
my %vRModeZ9 = (
|
|
936
1151
|
0 => 'Off',
|
|
937
1152
|
1 => 'Normal',
|
|
@@ -1127,8 +1342,6 @@ my %afPoints153 = (
|
|
|
1127
1342
|
|
|
1128
1343
|
# AF point indices for models with 81 focus points, eg. Z6/Z7/Z50 (ref 38)
|
|
1129
1344
|
# - 9 rows (A-I) with 9 columns (1-9), center is E5
|
|
1130
|
-
# NOTE: the AF points start 2 bytes into the data, so the map starts
|
|
1131
|
-
# at 17 instead of 1
|
|
1132
1345
|
#
|
|
1133
1346
|
# 7 6 5 4 3 2 1 0
|
|
1134
1347
|
# 00 : [H5][G5][F5][A5][B5][C5][D5][E5]
|
|
@@ -1143,23 +1356,23 @@ my %afPoints153 = (
|
|
|
1143
1356
|
# 09 : [H1][G1][F1][A1][B1][C1][D1][E1]
|
|
1144
1357
|
# 0a : [ ][ ][ ][ ][ ][ ][ ][I1]
|
|
1145
1358
|
my %afPoints81 = (
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1359
|
+
1 => 'E5', 18 => 'I6', 35 => 'H7', 52 => 'G8', 69 => 'F9',
|
|
1360
|
+
2 => 'D5', 19 => 'E4', 36 => 'I7', 53 => 'H8', 70 => 'G9',
|
|
1361
|
+
3 => 'C5', 20 => 'D4', 37 => 'E3', 54 => 'I8', 71 => 'H9',
|
|
1362
|
+
4 => 'B5', 21 => 'C4', 38 => 'D3', 55 => 'E2', 72 => 'I9',
|
|
1363
|
+
5 => 'A5', 22 => 'B4', 39 => 'C3', 56 => 'D2', 73 => 'E1',
|
|
1364
|
+
6 => 'F5', 23 => 'A4', 40 => 'B3', 57 => 'C2', 74 => 'D1',
|
|
1365
|
+
7 => 'G5', 24 => 'F4', 41 => 'A3', 58 => 'B2', 75 => 'C1',
|
|
1366
|
+
8 => 'H5', 25 => 'G4', 42 => 'F3', 59 => 'A2', 76 => 'B1',
|
|
1367
|
+
9 => 'I5', 26 => 'H4', 43 => 'G3', 60 => 'F2', 77 => 'A1',
|
|
1368
|
+
10 => 'E6', 27 => 'I4', 44 => 'H3', 61 => 'G2', 78 => 'F1',
|
|
1369
|
+
11 => 'D6', 28 => 'E7', 45 => 'I3', 62 => 'H2', 79 => 'G1',
|
|
1370
|
+
12 => 'C6', 29 => 'D7', 46 => 'E8', 63 => 'I2', 80 => 'H1',
|
|
1371
|
+
13 => 'B6', 30 => 'C7', 47 => 'D8', 64 => 'E9', 81 => 'I1',
|
|
1372
|
+
14 => 'A6', 31 => 'B7', 48 => 'C8', 65 => 'D9',
|
|
1373
|
+
15 => 'F6', 32 => 'A7', 49 => 'B8', 66 => 'C9',
|
|
1374
|
+
16 => 'G6', 33 => 'F7', 50 => 'A8', 67 => 'B9',
|
|
1375
|
+
17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
|
|
1163
1376
|
);
|
|
1164
1377
|
|
|
1165
1378
|
my %cropHiSpeed = ( #IB
|
|
@@ -1600,10 +1813,14 @@ my %base64coord = (
|
|
|
1600
1813
|
81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
|
|
1601
1814
|
},
|
|
1602
1815
|
},
|
|
1603
|
-
0x0035 => { #32
|
|
1816
|
+
0x0035 => [{ #32
|
|
1604
1817
|
Name => 'HDRInfo',
|
|
1818
|
+
Condition => '$count != 6',
|
|
1605
1819
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo' },
|
|
1606
|
-
},
|
|
1820
|
+
},{
|
|
1821
|
+
Name => 'HDRInfo2',
|
|
1822
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo2' },
|
|
1823
|
+
}],
|
|
1607
1824
|
0x0037 => { #XavierJubier
|
|
1608
1825
|
Name => 'MechanicalShutterCount',
|
|
1609
1826
|
Writable => 'int32u',
|
|
@@ -2088,7 +2305,7 @@ my %base64coord = (
|
|
|
2088
2305
|
TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
|
|
2089
2306
|
DecryptStart => 4,
|
|
2090
2307
|
# TODO: eventually set the length dynamically according to actual offsets!
|
|
2091
|
-
DecryptLen => 0xec4b +
|
|
2308
|
+
DecryptLen => 0xec4b + 2196, # decoded thru end of Offset26
|
|
2092
2309
|
ByteOrder => 'LittleEndian',
|
|
2093
2310
|
},
|
|
2094
2311
|
},
|
|
@@ -2489,6 +2706,12 @@ my %base64coord = (
|
|
|
2489
2706
|
TagTable => 'Image::ExifTool::Nikon::MultiExposure',
|
|
2490
2707
|
ByteOrder => 'LittleEndian',
|
|
2491
2708
|
},
|
|
2709
|
+
},{
|
|
2710
|
+
Name => 'MultiExposure2',
|
|
2711
|
+
Condition => '$$valPt =~ /^010[23]/', # 0102 is NC (PH)
|
|
2712
|
+
SubDirectory => {
|
|
2713
|
+
TagTable => 'Image::ExifTool::Nikon::MultiExposure2',
|
|
2714
|
+
},
|
|
2492
2715
|
}],
|
|
2493
2716
|
0x00b1 => { #14/PH/JD (D80)
|
|
2494
2717
|
Name => 'HighISONoiseReduction',
|
|
@@ -2805,10 +3028,10 @@ my %base64coord = (
|
|
|
2805
3028
|
Name => 'VRMode',
|
|
2806
3029
|
PrintConv => {
|
|
2807
3030
|
0 => 'Off',
|
|
2808
|
-
1 => 'Sport'
|
|
2809
|
-
3 => 'Normal'
|
|
3031
|
+
1 => 'Normal', #39 (was 'Sport')
|
|
3032
|
+
3 => 'Sport', #39 (was 'Normal')
|
|
2810
3033
|
},
|
|
2811
|
-
%infoZSeries
|
|
3034
|
+
%infoZSeries,
|
|
2812
3035
|
},{
|
|
2813
3036
|
Name => 'VRMode',
|
|
2814
3037
|
PrintConv => {
|
|
@@ -2819,6 +3042,13 @@ my %base64coord = (
|
|
|
2819
3042
|
},
|
|
2820
3043
|
}],
|
|
2821
3044
|
# 7 - values: 0, 1
|
|
3045
|
+
8 => { #39
|
|
3046
|
+
Name => 'VRType',
|
|
3047
|
+
PrintConv => {
|
|
3048
|
+
2 => 'In-body', # (IBIS)
|
|
3049
|
+
3 => 'In-body + Lens', # (IBIS + VR)
|
|
3050
|
+
},
|
|
3051
|
+
},
|
|
2822
3052
|
);
|
|
2823
3053
|
|
|
2824
3054
|
# Face detection information - PH (S8100)
|
|
@@ -3351,8 +3581,10 @@ my %base64coord = (
|
|
|
3351
3581
|
sprintf("%s%.2d:%.2d", $sign, $h, abs($val)-60*$h);
|
|
3352
3582
|
},
|
|
3353
3583
|
PrintConvInv => q{
|
|
3354
|
-
$val =~ /
|
|
3355
|
-
return $1 . ($2 * 60 + $3);
|
|
3584
|
+
$val =~ /Z$/ and return 0;
|
|
3585
|
+
$val =~ /([-+])(\d{1,2}):?(\d{2})$/ and return $1 . ($2 * 60 + $3);
|
|
3586
|
+
$val =~ /^(\d{2})(\d{2})$/ and return $1 * 60 + $2;
|
|
3587
|
+
return undef;
|
|
3356
3588
|
},
|
|
3357
3589
|
},
|
|
3358
3590
|
2 => {
|
|
@@ -3569,7 +3801,6 @@ my %base64coord = (
|
|
|
3569
3801
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
3570
3802
|
DATAMEMBER => [ 0, 4, 6 ],
|
|
3571
3803
|
NOTES => "These tags are written by Nikon DSLR's which have the live view feature.",
|
|
3572
|
-
# NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
|
|
3573
3804
|
0 => {
|
|
3574
3805
|
Name => 'AFInfo2Version',
|
|
3575
3806
|
Format => 'undef[4]',
|
|
@@ -3680,7 +3911,7 @@ my %base64coord = (
|
|
|
3680
3911
|
{ #PH/JD
|
|
3681
3912
|
Name => 'PrimaryAFPoint',
|
|
3682
3913
|
# PrimaryAFPoint may only be valid for PhaseDetect - certainly true on the D6, possibly other bodies? (ref 28)
|
|
3683
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
|
3914
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
|
3684
3915
|
Notes => q{
|
|
3685
3916
|
models with 51-point AF -- 5 rows (A-E) and 11 columns (1-11): D3, D3S, D3X,
|
|
3686
3917
|
D4, D4S, D300, D300S, D700, D800, D800e and D810
|
|
@@ -3786,22 +4017,6 @@ my %base64coord = (
|
|
|
3786
4017
|
1 => 'E9 (Center)',
|
|
3787
4018
|
},
|
|
3788
4019
|
},
|
|
3789
|
-
{ #PH (Z7) (NC)
|
|
3790
|
-
Name => 'PrimaryAFPoint',
|
|
3791
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
|
3792
|
-
Notes => q{
|
|
3793
|
-
Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
|
3794
|
-
at the center
|
|
3795
|
-
},
|
|
3796
|
-
PrintConv => {
|
|
3797
|
-
0 => '(none)',
|
|
3798
|
-
246 => 'I15 (Center)',
|
|
3799
|
-
OTHER => sub {
|
|
3800
|
-
my ($val, $inv) = @_;
|
|
3801
|
-
return GetAFPointGrid($val, 29, $inv);
|
|
3802
|
-
},
|
|
3803
|
-
},
|
|
3804
|
-
},
|
|
3805
4020
|
{
|
|
3806
4021
|
Name => 'PrimaryAFPoint',
|
|
3807
4022
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
|
@@ -3815,7 +4030,7 @@ my %base64coord = (
|
|
|
3815
4030
|
8 => [
|
|
3816
4031
|
{ #JD/PH
|
|
3817
4032
|
Name => 'AFPointsUsed',
|
|
3818
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
|
4033
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
|
3819
4034
|
Notes => q{
|
|
3820
4035
|
models with 51-point AF -- 5 rows: A1-9, B1-11, C1-11, D1-11, E1-9. Center
|
|
3821
4036
|
point is C6
|
|
@@ -3919,33 +4134,78 @@ my %base64coord = (
|
|
|
3919
4134
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
|
|
3920
4135
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
|
|
3921
4136
|
},
|
|
3922
|
-
{ #38 (Z6/Z7/Z50)
|
|
3923
|
-
Name => 'AFPointsUsed',
|
|
3924
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{Model} =~ /^NIKON Z/',
|
|
3925
|
-
Notes => q{
|
|
3926
|
-
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
|
3927
|
-
phase detect AF points. Center point is E5
|
|
3928
|
-
},
|
|
3929
|
-
Format => 'undef[13]',
|
|
3930
|
-
ValueConv => 'join(" ", unpack("H2"x13, $val))',
|
|
3931
|
-
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
3932
|
-
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
|
3933
|
-
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
|
3934
|
-
},
|
|
3935
4137
|
{ #PH
|
|
3936
4138
|
Name => 'AFPointsUsed',
|
|
3937
4139
|
# version 301 uses a separate field at offset 0x0a for this tag (ref 28)
|
|
3938
|
-
Condition => '$$self{AFInfo2Version}
|
|
4140
|
+
Condition => '$$self{AFInfo2Version} !~ /^03/',
|
|
3939
4141
|
Format => 'undef[7]',
|
|
3940
4142
|
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
|
3941
4143
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
3942
4144
|
PrintConv => '"Unknown ($val)"',
|
|
3943
4145
|
PrintConvInv => '$val=~s/Unknown \\((.*)\\)/$1/; $val',
|
|
3944
4146
|
},
|
|
4147
|
+
{ #PH
|
|
4148
|
+
Name => 'PrimaryAFPoint',
|
|
4149
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} =~ /^03/',
|
|
4150
|
+
Notes => 'newer models with 51-point AF',
|
|
4151
|
+
PrintConvColumns => 5,
|
|
4152
|
+
PrintConv => {
|
|
4153
|
+
0 => '(none)',
|
|
4154
|
+
%afPoints51,
|
|
4155
|
+
1 => 'C6 (Center)', # (add " (Center)" to central point)
|
|
4156
|
+
},
|
|
4157
|
+
},
|
|
4158
|
+
{ #PH (Z7)
|
|
4159
|
+
Name => 'PrimaryAFPoint',
|
|
4160
|
+
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
|
4161
|
+
PrintConv => {
|
|
4162
|
+
0 => '(none)',
|
|
4163
|
+
%afPoints81,
|
|
4164
|
+
1 => 'E5 (Center)', # (add " (Center)" to central point)
|
|
4165
|
+
},
|
|
4166
|
+
},
|
|
4167
|
+
# this was wrong, but keep the code as a comment in case it may be useful later
|
|
4168
|
+
#{ #PH (Z7) (NC)
|
|
4169
|
+
# Name => 'PrimaryAFPoint',
|
|
4170
|
+
# Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
|
4171
|
+
# Notes => q{
|
|
4172
|
+
# Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
|
4173
|
+
# at the center
|
|
4174
|
+
# },
|
|
4175
|
+
# PrintConv => {
|
|
4176
|
+
# 0 => '(none)',
|
|
4177
|
+
# 246 => 'I15 (Center)',
|
|
4178
|
+
# OTHER => sub {
|
|
4179
|
+
# my ($val, $inv) = @_;
|
|
4180
|
+
# return GetAFPointGrid($val, 29, $inv);
|
|
4181
|
+
# },
|
|
4182
|
+
# },
|
|
4183
|
+
#},
|
|
3945
4184
|
],
|
|
3946
|
-
0x0a => { #
|
|
3947
|
-
|
|
3948
|
-
Condition => '$$self{
|
|
4185
|
+
0x0a => [{ #PH (D780)
|
|
4186
|
+
Name => 'AFPointsUsed',
|
|
4187
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} =~ /^03/',
|
|
4188
|
+
Notes => 'newer models with 51-point AF',
|
|
4189
|
+
Format => 'undef[7]',
|
|
4190
|
+
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
|
4191
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
4192
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints51); },
|
|
4193
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints51); },
|
|
4194
|
+
},{ #38 (Z6/Z7/Z50)
|
|
4195
|
+
Name => 'AFPointsUsed',
|
|
4196
|
+
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
|
4197
|
+
Notes => q{
|
|
4198
|
+
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
|
4199
|
+
phase detect AF points. Center point is E5
|
|
4200
|
+
},
|
|
4201
|
+
Format => 'undef[11]',
|
|
4202
|
+
ValueConv => 'join(" ", unpack("H2"x11, $val))',
|
|
4203
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
4204
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
|
4205
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
|
4206
|
+
},{ #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
|
|
4207
|
+
Name => 'AFPointsUsed',
|
|
4208
|
+
Condition => '$$self{PhaseDetectAF} == 9 and $$self{AFInfo2Version} =~ /^03/',
|
|
3949
4209
|
Notes => q{
|
|
3950
4210
|
models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15). Center
|
|
3951
4211
|
point is D8
|
|
@@ -3955,7 +4215,7 @@ my %base64coord = (
|
|
|
3955
4215
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
3956
4216
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints105); },
|
|
3957
4217
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints105); },
|
|
3958
|
-
},
|
|
4218
|
+
}],
|
|
3959
4219
|
0x10 => { #PH (D90 and D5000)
|
|
3960
4220
|
Name => 'AFImageWidth',
|
|
3961
4221
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
|
@@ -5003,9 +5263,11 @@ my %nikonFocalConversions = (
|
|
|
5003
5263
|
27 => 'Nikkor Z MC 50mm f/2.8', #IB
|
|
5004
5264
|
28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
|
|
5005
5265
|
29 => 'Nikkor Z 28mm f/2.8', #IB
|
|
5006
|
-
30 => 'Nikkor Z 400mm f/2.8 TC VR S',
|
|
5007
|
-
31 => 'Nikkor Z 24-120 f/4',
|
|
5008
|
-
32 => 'Nikkor Z 800mm f/6.3 VR S',
|
|
5266
|
+
30 => 'Nikkor Z 400mm f/2.8 TC VR S', #28
|
|
5267
|
+
31 => 'Nikkor Z 24-120 f/4', #28
|
|
5268
|
+
32 => 'Nikkor Z 800mm f/6.3 VR S', #28
|
|
5269
|
+
36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
|
|
5270
|
+
39 => 'Nikkor Z 17-28mm f/2.8', #IB
|
|
5009
5271
|
},
|
|
5010
5272
|
},
|
|
5011
5273
|
0x35 => { #28
|
|
@@ -5049,31 +5311,31 @@ my %nikonFocalConversions = (
|
|
|
5049
5311
|
0x4c => { #28
|
|
5050
5312
|
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.
|
|
5051
5313
|
Format => 'int8u',
|
|
5052
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5314
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5053
5315
|
RawConv => '$$self{FocusDistanceRangeWidth} = $val',
|
|
5054
5316
|
Unknown => 1,
|
|
5055
5317
|
},
|
|
5056
5318
|
0x4e => { #28
|
|
5057
|
-
Name => 'FocusDistance',
|
|
5319
|
+
Name => 'FocusDistance',
|
|
5058
5320
|
Format => 'int16u',
|
|
5059
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5321
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5060
5322
|
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
|
|
5061
5323
|
ValueConv => '0.01 * 10**($val/40)', # in m
|
|
5062
5324
|
ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0',
|
|
5063
5325
|
PrintConv => q{
|
|
5064
|
-
(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
|
|
5326
|
+
(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
|
|
5065
5327
|
},
|
|
5066
5328
|
},
|
|
5067
5329
|
0x56 => { #28
|
|
5068
5330
|
Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
|
|
5069
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5331
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5070
5332
|
Format => 'int8u',
|
|
5071
5333
|
RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
|
|
5072
5334
|
Unknown => 1,
|
|
5073
5335
|
},
|
|
5074
5336
|
0x5a => { #28
|
|
5075
5337
|
Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
|
|
5076
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5338
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5077
5339
|
Format => 'int32s',
|
|
5078
5340
|
Unknown => 1,
|
|
5079
5341
|
},
|
|
@@ -5478,14 +5740,14 @@ my %nikonFocalConversions = (
|
|
|
5478
5740
|
},
|
|
5479
5741
|
0x27d => {
|
|
5480
5742
|
Name => 'ShutterCount',
|
|
5481
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
|
5743
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.01/',
|
|
5482
5744
|
Notes => 'firmware 1.10',
|
|
5483
5745
|
Format => 'int32u',
|
|
5484
5746
|
Priority => 0,
|
|
5485
5747
|
},
|
|
5486
5748
|
0x27f => {
|
|
5487
5749
|
Name => 'ShutterCount',
|
|
5488
|
-
Condition => '$$self{FirmwareVersion} =~ /^2
|
|
5750
|
+
Condition => '$$self{FirmwareVersion} =~ /^2\.0/',
|
|
5489
5751
|
Notes => 'firmware 2.00, 2.01 and 2.02',
|
|
5490
5752
|
Format => 'int32u',
|
|
5491
5753
|
Priority => 0,
|
|
@@ -7379,7 +7641,7 @@ my %nikonFocalConversions = (
|
|
|
7379
7641
|
# (moves around too much and doesn't fit cleanly in the offset table)
|
|
7380
7642
|
#0x38be => {
|
|
7381
7643
|
# Name => 'Rotation',
|
|
7382
|
-
# Condition => '$$self{FirmwareVersion} =~ /^1
|
|
7644
|
+
# Condition => '$$self{FirmwareVersion} =~ /^1\.0/',
|
|
7383
7645
|
# Mask => 0x30,
|
|
7384
7646
|
# PrintConv => {
|
|
7385
7647
|
# 0 => 'Horizontal',
|
|
@@ -7685,7 +7947,7 @@ my %nikonFocalConversions = (
|
|
|
7685
7947
|
},
|
|
7686
7948
|
0x189d => { #PH (NC)
|
|
7687
7949
|
Name => 'CustomSettingsD4S',
|
|
7688
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
|
7950
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.00/',
|
|
7689
7951
|
Notes => 'firmware version 1.00',
|
|
7690
7952
|
Format => 'undef[56]',
|
|
7691
7953
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
|
@@ -7693,7 +7955,7 @@ my %nikonFocalConversions = (
|
|
|
7693
7955
|
0x18c2 => { # CSf1-c (no idea why it is so far away from the rest of the settings)
|
|
7694
7956
|
Name => 'MultiSelectorLiveViewMode',
|
|
7695
7957
|
Groups => { 1 => 'NikonCustom' },
|
|
7696
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
|
7958
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
|
7697
7959
|
Mask => 0xc0,
|
|
7698
7960
|
PrintConv => {
|
|
7699
7961
|
0 => 'Reset',
|
|
@@ -7794,7 +8056,7 @@ my %nikonFocalConversions = (
|
|
|
7794
8056
|
},
|
|
7795
8057
|
0x193d => {
|
|
7796
8058
|
Name => 'CustomSettingsD4S',
|
|
7797
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
|
8059
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
|
7798
8060
|
Notes => 'firmware version 1.01',
|
|
7799
8061
|
Format => 'undef[56]',
|
|
7800
8062
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
|
@@ -8203,14 +8465,26 @@ my %nikonFocalConversions = (
|
|
|
8203
8465
|
# account for variable location of menu settings data
|
|
8204
8466
|
Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0xec4b',
|
|
8205
8467
|
},
|
|
8206
|
-
0xec4b =>
|
|
8207
|
-
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8468
|
+
0xec4b => [
|
|
8469
|
+
{
|
|
8470
|
+
Name => 'MenuSettingsZ9',
|
|
8471
|
+
Condition => '$$self{FirmwareVersion} lt "03.00"',
|
|
8472
|
+
Format => 'undef[1646]',
|
|
8473
|
+
Notes => 'Firmware versions 2.11 and earlier',
|
|
8474
|
+
SubDirectory => {
|
|
8475
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
|
|
8476
|
+
},
|
|
8211
8477
|
},
|
|
8212
|
-
|
|
8213
|
-
|
|
8478
|
+
{
|
|
8479
|
+
Name => 'MenuSettingsZ9',
|
|
8480
|
+
Notes => 'Firmware versions 3.0 and later',
|
|
8481
|
+
Format => 'undef[1948]',
|
|
8482
|
+
SubDirectory => {
|
|
8483
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
|
|
8484
|
+
},
|
|
8485
|
+
},
|
|
8486
|
+
],
|
|
8487
|
+
# note: DecryptLen currently set to 0xec4b + 2196
|
|
8214
8488
|
);
|
|
8215
8489
|
|
|
8216
8490
|
%Image::ExifTool::Nikon::MenuSettingsZ7II = (
|
|
@@ -8318,8 +8592,8 @@ my %nikonFocalConversions = (
|
|
|
8318
8592
|
PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
|
|
8319
8593
|
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
8320
8594
|
},
|
|
8321
|
-
346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
|
|
8322
|
-
348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7,
|
|
8595
|
+
346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
|
8596
|
+
348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
|
8323
8597
|
352 => {
|
|
8324
8598
|
Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
|
|
8325
8599
|
RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
|
|
@@ -8344,12 +8618,12 @@ my %nikonFocalConversions = (
|
|
|
8344
8618
|
PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
|
|
8345
8619
|
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
8346
8620
|
},
|
|
8347
|
-
#360 => {Name => 'FlashGroupAControlMode'
|
|
8348
|
-
#368 => {Name => 'FlashGroupBControlMode'
|
|
8349
|
-
#376 => {Name => 'FlashGroupCControlMode'
|
|
8350
|
-
#384 => {Name => 'FlashGroupDControlMode'
|
|
8351
|
-
#392 => {Name => 'FlashGroupEControlMode'
|
|
8352
|
-
#400 => {Name => 'FlashGroupFControlMode'
|
|
8621
|
+
#360 => { Name => 'FlashGroupAControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
|
|
8622
|
+
#368 => { Name => 'FlashGroupBControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
|
|
8623
|
+
#376 => { Name => 'FlashGroupCControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
|
|
8624
|
+
#384 => { Name => 'FlashGroupDControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
|
|
8625
|
+
#392 => { Name => 'FlashGroupEControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
|
|
8626
|
+
#400 => { Name => 'FlashGroupFControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
|
|
8353
8627
|
#434 => FocusMode
|
|
8354
8628
|
#436 => AFAreaMode
|
|
8355
8629
|
#438 => VibrationReduction
|
|
@@ -8357,8 +8631,8 @@ my %nikonFocalConversions = (
|
|
|
8357
8631
|
#444 => BracketProgram
|
|
8358
8632
|
#446 => BracketIncrement
|
|
8359
8633
|
#463 => SilentPhotography
|
|
8360
|
-
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
|
|
8361
|
-
504 => { Name => 'MovieFrameRate',
|
|
8634
|
+
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
8635
|
+
504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
8362
8636
|
506 => {
|
|
8363
8637
|
Name => 'MovieSlowMotion',
|
|
8364
8638
|
Unknown => 1,
|
|
@@ -8387,9 +8661,9 @@ my %nikonFocalConversions = (
|
|
|
8387
8661
|
PrintConv => \%iSOAutoHiLimitZ7,
|
|
8388
8662
|
},
|
|
8389
8663
|
#520 => MovieWhiteBalanceSameAsPhoto
|
|
8390
|
-
568 => { Name => 'MovieActiveD-Lighting',
|
|
8391
|
-
572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
|
|
8392
|
-
574 => { Name => 'MovieVignetteControl',
|
|
8664
|
+
568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
8665
|
+
572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
8666
|
+
574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
8393
8667
|
576 => {
|
|
8394
8668
|
Name => 'MovieVignetteControlSameAsPhoto',
|
|
8395
8669
|
Unknown => 1,
|
|
@@ -8405,7 +8679,7 @@ my %nikonFocalConversions = (
|
|
|
8405
8679
|
Unknown => 1,
|
|
8406
8680
|
PrintConv => \%offOn
|
|
8407
8681
|
},
|
|
8408
|
-
584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
|
|
8682
|
+
584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
8409
8683
|
#586 => MovieAFAreaMode
|
|
8410
8684
|
590 => {
|
|
8411
8685
|
Name => 'MovieVibrationReduction',
|
|
@@ -8445,11 +8719,7 @@ my %nikonFocalConversions = (
|
|
|
8445
8719
|
140 => {
|
|
8446
8720
|
Name => 'MultipleExposureMode',
|
|
8447
8721
|
RawConv => '$$self{MultipleExposureMode} = $val',
|
|
8448
|
-
PrintConv =>
|
|
8449
|
-
0 => 'Off',
|
|
8450
|
-
1 => 'On (Series)',
|
|
8451
|
-
2 => 'On',
|
|
8452
|
-
},
|
|
8722
|
+
PrintConv => \%multipleExposureModeZ9,
|
|
8453
8723
|
},
|
|
8454
8724
|
142 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0' }, #range 2-9
|
|
8455
8725
|
188 => {
|
|
@@ -8485,27 +8755,11 @@ my %nikonFocalConversions = (
|
|
|
8485
8755
|
PrintConv => \%offOn,
|
|
8486
8756
|
Condition => '$$self{FocusShiftShooting} > 0',
|
|
8487
8757
|
},
|
|
8488
|
-
274 => {
|
|
8489
|
-
|
|
8490
|
-
|
|
8491
|
-
0 => 'A',
|
|
8492
|
-
1 => 'B',
|
|
8493
|
-
2 => 'C',
|
|
8494
|
-
3 => 'D',
|
|
8495
|
-
},
|
|
8496
|
-
},
|
|
8497
|
-
276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn, }, #single tag from both Photo & Video menus
|
|
8498
|
-
308 => {
|
|
8499
|
-
Name => 'PhotoShootingMenuBankImageArea',
|
|
8500
|
-
PrintConv => {
|
|
8501
|
-
0 => 'FX',
|
|
8502
|
-
1 => 'DX',
|
|
8503
|
-
4 => '16:9',
|
|
8504
|
-
8 => '1:1',
|
|
8505
|
-
},
|
|
8506
|
-
},
|
|
8758
|
+
274 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
|
8759
|
+
276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, #single tag from both Photo & Video menus
|
|
8760
|
+
308 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
|
8507
8761
|
#310 ImageQuality
|
|
8508
|
-
322 => { Name => 'AutoISO', PrintConv => \%offOn
|
|
8762
|
+
322 => { Name => 'AutoISO', PrintConv => \%offOn },
|
|
8509
8763
|
324 => {
|
|
8510
8764
|
Name => 'ISOAutoHiLimit',
|
|
8511
8765
|
Format => 'int16u',
|
|
@@ -8527,58 +8781,7 @@ my %nikonFocalConversions = (
|
|
|
8527
8781
|
Name => 'ISOAutoShutterTime', #shutter speed is 2 ** (-$val/24)
|
|
8528
8782
|
ValueConv => '$val / 8',
|
|
8529
8783
|
Format => 'int16s',
|
|
8530
|
-
PrintConv =>
|
|
8531
|
-
-15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
|
|
8532
|
-
-12 => '15 s',
|
|
8533
|
-
-9 => '8 s',
|
|
8534
|
-
-6 => '4 s',
|
|
8535
|
-
-3 => '2 s',
|
|
8536
|
-
0 => '1 s',
|
|
8537
|
-
1 => '1/1.3 s',
|
|
8538
|
-
2 => '1/1.6 s',
|
|
8539
|
-
3 => '1/2 s',
|
|
8540
|
-
4 => '1/2.5 s',
|
|
8541
|
-
5 => '1/3 s',
|
|
8542
|
-
6 => '1/4 s',
|
|
8543
|
-
7 => '1/5 s',
|
|
8544
|
-
8 => '1/6 s',
|
|
8545
|
-
9 => '1/8 s',
|
|
8546
|
-
10 => '1/10 s',
|
|
8547
|
-
11 => '1/13 s',
|
|
8548
|
-
12 => '1/15 s',
|
|
8549
|
-
13 => '1/20 s',
|
|
8550
|
-
14 => '1/25 s',
|
|
8551
|
-
15 => '1/30 s',
|
|
8552
|
-
16 => '1/40 s',
|
|
8553
|
-
17 => '1/50 s',
|
|
8554
|
-
18 => '1/60 s',
|
|
8555
|
-
19 => '1/80 s',
|
|
8556
|
-
20 => '1/100 s',
|
|
8557
|
-
21 => '1/120 s',
|
|
8558
|
-
22 => '1/160 s',
|
|
8559
|
-
23 => '1/200 s',
|
|
8560
|
-
24 => '1/250 s',
|
|
8561
|
-
25 => '1/320 s',
|
|
8562
|
-
26 => '1/400 s',
|
|
8563
|
-
27 => '1/500 s',
|
|
8564
|
-
28 => '1/640 s',
|
|
8565
|
-
29 => '1/800 s',
|
|
8566
|
-
30 => '1/1000 s',
|
|
8567
|
-
31 => '1/1250 s',
|
|
8568
|
-
32 => '1/1600 s',
|
|
8569
|
-
33 => '1/2000 s',
|
|
8570
|
-
34 => '1/2500 s',
|
|
8571
|
-
35 => '1/3200 s',
|
|
8572
|
-
36 => '1/4000 s',
|
|
8573
|
-
37 => '1/5000 s',
|
|
8574
|
-
37.5 => '1/6000 s',
|
|
8575
|
-
38 => '1/6400 s',
|
|
8576
|
-
39 => '1/8000 s',
|
|
8577
|
-
40 => '1/10000 s',
|
|
8578
|
-
40.5 => '1/12000 s',
|
|
8579
|
-
41 => '1/13000 s',
|
|
8580
|
-
42 => '1/16000 s',
|
|
8581
|
-
},
|
|
8784
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
|
8582
8785
|
},
|
|
8583
8786
|
#336 WhiteBalance
|
|
8584
8787
|
#406 PictureControl
|
|
@@ -8587,8 +8790,8 @@ my %nikonFocalConversions = (
|
|
|
8587
8790
|
#412 => { Name => 'NoiseReduction', PrintConv => \%offOn }, #Long Exposure Noise Reduction
|
|
8588
8791
|
#414 HighISONoiseReduction
|
|
8589
8792
|
#414 VignetteControl
|
|
8590
|
-
416 => { Name => 'MovieVignetteControl',
|
|
8591
|
-
418 => { Name => 'DiffractionCompensation',
|
|
8793
|
+
416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
8794
|
+
418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
8592
8795
|
#419 AutoDistortionControl #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
8593
8796
|
420 => { Name => 'FlickerReductionShooting', PrintConv => \%offOn },
|
|
8594
8797
|
#422 MeteringMode
|
|
@@ -8623,94 +8826,39 @@ my %nikonFocalConversions = (
|
|
|
8623
8826
|
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
8624
8827
|
},
|
|
8625
8828
|
#442 flash wirelss control 0=> 'Off' 1=> 'CMD'
|
|
8626
|
-
444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7,
|
|
8627
|
-
456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
|
|
8829
|
+
444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
|
8830
|
+
456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
|
8628
8831
|
#526 FocusMode
|
|
8629
|
-
528 => {
|
|
8630
|
-
|
|
8631
|
-
PrintConv => {
|
|
8632
|
-
1 => 'Single',
|
|
8633
|
-
2 => 'Dynamic',
|
|
8634
|
-
3 => 'Wide (S)',
|
|
8635
|
-
4 => 'Wide (L)',
|
|
8636
|
-
5 => '3D',
|
|
8637
|
-
6 => 'Auto',
|
|
8638
|
-
12 => 'Wide (C1)',
|
|
8639
|
-
13 => 'Wide (C2)',
|
|
8640
|
-
},
|
|
8641
|
-
},
|
|
8642
|
-
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
8832
|
+
528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9 },
|
|
8833
|
+
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
|
|
8643
8834
|
534 => {
|
|
8644
8835
|
Name => 'BracketSet',
|
|
8645
8836
|
RawConv => '$$self{BracketSet} = $val',
|
|
8646
|
-
PrintConv =>
|
|
8647
|
-
0 => 'AE/Flash',
|
|
8648
|
-
1 => 'AE',
|
|
8649
|
-
2 => 'Flash',
|
|
8650
|
-
3 => 'White Balance',
|
|
8651
|
-
4 => 'Active-D Lighting',
|
|
8652
|
-
},
|
|
8837
|
+
PrintConv => \%bracketSetZ9,
|
|
8653
8838
|
},
|
|
8654
8839
|
536 => {
|
|
8655
8840
|
Name => 'BracketProgram',
|
|
8656
8841
|
Condition => '$$self{BracketSet} < 3',
|
|
8657
8842
|
Notes => 'AE and/or Flash Bracketing',
|
|
8658
|
-
PrintConv =>
|
|
8659
|
-
0 => 'Disabled',
|
|
8660
|
-
2 => '2F',
|
|
8661
|
-
3 => '3F',
|
|
8662
|
-
4 => '4F',
|
|
8663
|
-
5 => '5F',
|
|
8664
|
-
7 => '7F',
|
|
8665
|
-
9 => '9F',
|
|
8666
|
-
},
|
|
8843
|
+
PrintConv => \%bracketProgramZ9,
|
|
8667
8844
|
},
|
|
8668
8845
|
538 => {
|
|
8669
8846
|
Name => 'BracketIncrement',
|
|
8670
8847
|
Condition => '$$self{BracketSet} < 3',
|
|
8671
8848
|
Notes => 'AE and/or Flash Bracketing',
|
|
8672
|
-
PrintConv =>
|
|
8673
|
-
0 => '0.3',
|
|
8674
|
-
#1 => '0.5',
|
|
8675
|
-
2 => '0.7',
|
|
8676
|
-
3 => '1.0',
|
|
8677
|
-
4 => '2.0',
|
|
8678
|
-
5 => '3.0',
|
|
8679
|
-
},
|
|
8849
|
+
PrintConv => \%bracketIncrementZ9,
|
|
8680
8850
|
},
|
|
8681
8851
|
#544 BracketProgram for ADL
|
|
8682
|
-
556 => {
|
|
8683
|
-
|
|
8684
|
-
|
|
8685
|
-
0 => 'Overflow',
|
|
8686
|
-
1 => 'Backup',
|
|
8687
|
-
2 => 'NEF Primary + JPG Secondary',
|
|
8688
|
-
3 => 'JPG Primary + JPG Secondary',
|
|
8689
|
-
},
|
|
8690
|
-
},
|
|
8691
|
-
572 => { Name => 'DXCropAlert', PrintConv => \%offOn, },
|
|
8692
|
-
574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9},
|
|
8852
|
+
556 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
|
8853
|
+
572 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
|
8854
|
+
574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
8693
8855
|
604 => {
|
|
8694
8856
|
Name => 'MovieImageArea',
|
|
8695
8857
|
Unknown => 1,
|
|
8696
|
-
Mask => 0x01,
|
|
8697
|
-
PrintConv =>
|
|
8698
|
-
0 => 'FX',
|
|
8699
|
-
1 => 'DX',
|
|
8700
|
-
},
|
|
8701
|
-
},
|
|
8702
|
-
614 => {
|
|
8703
|
-
Name => 'MovieType',
|
|
8704
|
-
Unknown => 1,
|
|
8705
|
-
PrintConv => {
|
|
8706
|
-
1 => 'H.265 8-bit (MP4)',
|
|
8707
|
-
2 => 'H.265 8-bit (MOV)',
|
|
8708
|
-
3 => 'H.265 10-bit (MOV)',
|
|
8709
|
-
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
|
8710
|
-
5 => 'ProRes RAW HQ 12-bit (MOV)',
|
|
8711
|
-
6 => 'NRAW 12-bit (NEV)'
|
|
8712
|
-
},
|
|
8858
|
+
Mask => 0x01, # without the mask 4 => 'FX', 5 => DX. only the 2nd Z-series field encountered with a mask
|
|
8859
|
+
PrintConv => \%imageAreaZ9b,
|
|
8713
8860
|
},
|
|
8861
|
+
614 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
|
8714
8862
|
616 => {
|
|
8715
8863
|
Name => 'MovieISOAutoHiLimit',
|
|
8716
8864
|
Format => 'int16u',
|
|
@@ -8719,115 +8867,44 @@ my %nikonFocalConversions = (
|
|
|
8719
8867
|
ValueConvInv => '8 * ($val + 104)',
|
|
8720
8868
|
PrintConv => \%iSOAutoHiLimitZ7,
|
|
8721
8869
|
},
|
|
8722
|
-
618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1},
|
|
8870
|
+
618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
|
8723
8871
|
620 => {
|
|
8724
8872
|
Name => 'MovieISOAutoManualMode',
|
|
8725
8873
|
Format => 'int16u',
|
|
8726
8874
|
Unknown => 1,
|
|
8727
8875
|
ValueConv => '($val-104)/8',
|
|
8728
|
-
|
|
8876
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
8729
8877
|
PrintConv => \%iSOAutoHiLimitZ7,
|
|
8730
8878
|
},
|
|
8731
|
-
696 => { Name => 'MovieActiveD-Lighting',
|
|
8732
|
-
698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
|
|
8733
|
-
704 => {
|
|
8734
|
-
|
|
8735
|
-
|
|
8736
|
-
|
|
8737
|
-
|
|
8738
|
-
|
|
8739
|
-
|
|
8740
|
-
},
|
|
8741
|
-
|
|
8742
|
-
708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
|
|
8743
|
-
710 => {
|
|
8744
|
-
Name => 'MovieAFAreaMode',
|
|
8745
|
-
PrintConv => {
|
|
8746
|
-
1 => 'Single',
|
|
8747
|
-
3 => 'Wide (S)',
|
|
8748
|
-
4 => 'Wide (L)',
|
|
8749
|
-
6 => 'Auto',
|
|
8750
|
-
11 => 'Subject Tracking',
|
|
8751
|
-
},
|
|
8752
|
-
},
|
|
8753
|
-
712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1},
|
|
8754
|
-
716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
|
8755
|
-
718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'On', 2 => 'On' }, Unknown => 1 }, #not sure why the unusal mapping with 2 => 'On'
|
|
8756
|
-
720 => { Name => 'MicrophoneSensitivity', Unknown => 1}, #1-20
|
|
8757
|
-
722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
|
8879
|
+
696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
8880
|
+
698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
8881
|
+
704 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
|
8882
|
+
706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
|
8883
|
+
708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
8884
|
+
710 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
|
8885
|
+
712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
|
8886
|
+
716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
|
8887
|
+
718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
|
8888
|
+
720 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, #1-20
|
|
8889
|
+
722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
|
|
8758
8890
|
724 => { Name => 'MicrophoneFrequencyResponse', PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
|
8759
|
-
726 => { Name => 'WindNoiseReduction',
|
|
8760
|
-
748 => {
|
|
8761
|
-
|
|
8762
|
-
|
|
8763
|
-
|
|
8764
|
-
|
|
8765
|
-
|
|
8766
|
-
2 => 'N-Log',
|
|
8767
|
-
},
|
|
8768
|
-
},
|
|
8769
|
-
754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
|
|
8770
|
-
756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
|
|
8771
|
-
762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
8772
|
-
763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
8773
|
-
764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1},
|
|
8891
|
+
726 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
|
8892
|
+
748 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
|
|
8893
|
+
754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
8894
|
+
756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
8895
|
+
762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
8896
|
+
763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
8897
|
+
764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
|
8774
8898
|
799 => {
|
|
8775
8899
|
Name => 'CustomSettingsZ9',
|
|
8776
8900
|
Format => 'undef[608]',
|
|
8777
8901
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
|
|
8778
8902
|
},
|
|
8779
|
-
1426 => {
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
5 => 'Spanish',
|
|
8785
|
-
7 => 'French',
|
|
8786
|
-
},
|
|
8787
|
-
},
|
|
8788
|
-
1428 => {
|
|
8789
|
-
Name => 'TimeZone',
|
|
8790
|
-
PrintConv => {
|
|
8791
|
-
5 => '+09:00 (Tokyo)',
|
|
8792
|
-
6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
|
|
8793
|
-
10 => '+05:45 (Kathmandu)',
|
|
8794
|
-
11 => '+05:30 (New Dehli)',
|
|
8795
|
-
12 => '+05:00 (Islamabad)',
|
|
8796
|
-
13 => '+04:30 (Kabul)',
|
|
8797
|
-
14 => '+04:00 (Abu Dhabi)',
|
|
8798
|
-
15 => '+03:30 (Tehran)',
|
|
8799
|
-
16 => '+03:00 (Moscow, Nairobi)',
|
|
8800
|
-
17 => '+02:00 (Athens, Helsinki)',
|
|
8801
|
-
18 => '+01:00 (Madrid, Paris, Berlin)',
|
|
8802
|
-
19 => '+00:00 (London)',
|
|
8803
|
-
20 => '-01:00 (Azores)',
|
|
8804
|
-
21 => '-02:00 (Fernando de Noronha)',
|
|
8805
|
-
22 => '-03:00 (Buenos Aires, Sao Paulo)',
|
|
8806
|
-
23 => '-03:30 (Newfoundland)',
|
|
8807
|
-
24 => '-04:00 (Manaus, Caracas)',
|
|
8808
|
-
25 => '-05:00 (New York, Toronto, Lima)',
|
|
8809
|
-
26 => '-06:00 (Chicago, Mexico City)',
|
|
8810
|
-
27 => '-07:00 (Denver)',
|
|
8811
|
-
28 => '-08:00 (Los Angeles, Vancouver)',
|
|
8812
|
-
29 => '-09:00 (Anchorage)',
|
|
8813
|
-
30 => '-10:00 (Hawaii)',
|
|
8814
|
-
},
|
|
8815
|
-
},
|
|
8816
|
-
1434 => {Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1}, # settings: -5 to +5
|
|
8817
|
-
1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
8818
|
-
1552 => {
|
|
8819
|
-
Name => 'HDMIOutputResolution',
|
|
8820
|
-
PrintConv => {
|
|
8821
|
-
0 => 'Auto',
|
|
8822
|
-
1 => '4320p',
|
|
8823
|
-
2 => '2160p',
|
|
8824
|
-
3 => '1080p',
|
|
8825
|
-
#4 => '1080i',
|
|
8826
|
-
5 => '720p',
|
|
8827
|
-
#6 => '576p',
|
|
8828
|
-
#7 => '480p',
|
|
8829
|
-
},
|
|
8830
|
-
},
|
|
8903
|
+
1426 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
8904
|
+
1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
8905
|
+
1434 => { Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1 }, # settings: -5 to +5
|
|
8906
|
+
1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
8907
|
+
1552 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
|
8831
8908
|
1565 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
|
|
8832
8909
|
1572 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
|
8833
8910
|
1573 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
|
@@ -8836,6 +8913,210 @@ my %nikonFocalConversions = (
|
|
|
8836
8913
|
1636 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
8837
8914
|
1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
8838
8915
|
);
|
|
8916
|
+
%Image::ExifTool::Nikon::MenuSettingsZ9Firmware3 = ( #starts at Offset26 + 248
|
|
8917
|
+
%binaryDataAttrs,
|
|
8918
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8919
|
+
DATAMEMBER => [ 154, 204, 208, 248, 444, 554 ],
|
|
8920
|
+
IS_SUBDIR => [ 847 ],
|
|
8921
|
+
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
|
8922
|
+
154 => {
|
|
8923
|
+
Name => 'MultipleExposureMode',
|
|
8924
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
|
8925
|
+
PrintConv => \%multipleExposureModeZ9,
|
|
8926
|
+
},
|
|
8927
|
+
156 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
|
8928
|
+
204 => {
|
|
8929
|
+
Name => 'Intervals',
|
|
8930
|
+
Format => 'int32u',
|
|
8931
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
8932
|
+
Condition => '$$self{IntervalShooting} > 0',
|
|
8933
|
+
},
|
|
8934
|
+
208 => {
|
|
8935
|
+
Name => 'ShotsPerInterval',
|
|
8936
|
+
Format => 'int32u',
|
|
8937
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
8938
|
+
Condition => '$$self{IntervalShooting} > 0',
|
|
8939
|
+
},
|
|
8940
|
+
248 => {
|
|
8941
|
+
Name => 'FocusShiftNumberShots', #1-300
|
|
8942
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
|
8943
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
|
8944
|
+
},
|
|
8945
|
+
252 => {
|
|
8946
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
|
8947
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
|
8948
|
+
},
|
|
8949
|
+
256 => {
|
|
8950
|
+
Name => 'FocusShiftInterval',
|
|
8951
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
|
8952
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
|
8953
|
+
},
|
|
8954
|
+
260 => {
|
|
8955
|
+
Name => 'FocusShiftExposureLock',
|
|
8956
|
+
Unknown => 1,
|
|
8957
|
+
PrintConv => \%offOn,
|
|
8958
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
|
8959
|
+
},
|
|
8960
|
+
290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
|
8961
|
+
292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
|
8962
|
+
328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
|
8963
|
+
342 => { Name => 'AutoISO', PrintConv => \%offOn },
|
|
8964
|
+
344 => {
|
|
8965
|
+
Name => 'ISOAutoHiLimit',
|
|
8966
|
+
Format => 'int16u',
|
|
8967
|
+
Unknown => 1,
|
|
8968
|
+
ValueConv => '($val-104)/8',
|
|
8969
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
8970
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
8971
|
+
},
|
|
8972
|
+
346 => {
|
|
8973
|
+
Name => 'ISOAutoFlashLimit',
|
|
8974
|
+
Format => 'int16u',
|
|
8975
|
+
Unknown => 1,
|
|
8976
|
+
ValueConv => '($val-104)/8',
|
|
8977
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
8978
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
8979
|
+
},
|
|
8980
|
+
354 => {
|
|
8981
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
|
8982
|
+
ValueConv => '$val / 8',
|
|
8983
|
+
Format => 'int16s',
|
|
8984
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
|
8985
|
+
},
|
|
8986
|
+
436 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
8987
|
+
438 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
8988
|
+
440 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
|
8989
|
+
444 => {
|
|
8990
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
|
8991
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
|
8992
|
+
PrintConv => \%flashControlModeZ7,
|
|
8993
|
+
},
|
|
8994
|
+
446 => {
|
|
8995
|
+
Name => 'FlashMasterCompensation',
|
|
8996
|
+
Format => 'int8s',
|
|
8997
|
+
Unknown => 1,
|
|
8998
|
+
ValueConv => '$val/6',
|
|
8999
|
+
ValueConvInv => '6 * $val',
|
|
9000
|
+
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
|
9001
|
+
PrintConvInv => '$val',
|
|
9002
|
+
},
|
|
9003
|
+
450 => {
|
|
9004
|
+
Name => 'FlashGNDistance',
|
|
9005
|
+
Condition => '$$self{FlashControlMode} == 2',
|
|
9006
|
+
Unknown => 1,
|
|
9007
|
+
ValueConv => '$val + 3',
|
|
9008
|
+
PrintConv => \%flashGNDistance,
|
|
9009
|
+
},
|
|
9010
|
+
454 => {
|
|
9011
|
+
Name => 'FlashOutput', # range[0,24] with 0=>Full; 1=>50%; then decreasing flash power in 1/3 stops to 0.39% (1/256 full power). also found in FlashInfoUnknown at offset 0x0a (with different mappings)
|
|
9012
|
+
Condition => '$$self{FlashControlMode} >= 3',
|
|
9013
|
+
Unknown => 1,
|
|
9014
|
+
ValueConv => '2 ** (-$val/3)',
|
|
9015
|
+
ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
|
|
9016
|
+
PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
|
|
9017
|
+
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
9018
|
+
},
|
|
9019
|
+
#462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
|
|
9020
|
+
#464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
|
9021
|
+
#476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
|
9022
|
+
548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
|
|
9023
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
9024
|
+
554 => {
|
|
9025
|
+
Name => 'BracketSet',
|
|
9026
|
+
RawConv => '$$self{BracketSet} = $val',
|
|
9027
|
+
PrintConv => \%bracketSetZ9,
|
|
9028
|
+
},
|
|
9029
|
+
556 => {
|
|
9030
|
+
Name => 'BracketProgram',
|
|
9031
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9032
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9033
|
+
PrintConv => \%bracketProgramZ9,
|
|
9034
|
+
},
|
|
9035
|
+
558 => {
|
|
9036
|
+
Name => 'BracketIncrement',
|
|
9037
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9038
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9039
|
+
PrintConv => \%bracketIncrementZ9,
|
|
9040
|
+
},
|
|
9041
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
|
9042
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
|
9043
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
9044
|
+
636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9045
|
+
646 => {
|
|
9046
|
+
Name => 'MovieImageArea',
|
|
9047
|
+
Unknown => 1,
|
|
9048
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
|
9049
|
+
PrintConv => \%imageAreaZ9b,
|
|
9050
|
+
},
|
|
9051
|
+
656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
|
9052
|
+
658 => {
|
|
9053
|
+
Name => 'MovieISOAutoHiLimit',
|
|
9054
|
+
Format => 'int16u',
|
|
9055
|
+
Unknown => 1,
|
|
9056
|
+
ValueConv => '($val-104)/8',
|
|
9057
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9058
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9059
|
+
},
|
|
9060
|
+
660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9061
|
+
662 => {
|
|
9062
|
+
Name => 'MovieISOAutoManualMode',
|
|
9063
|
+
Format => 'int16u',
|
|
9064
|
+
Unknown => 1,
|
|
9065
|
+
ValueConv => '($val-104)/8',
|
|
9066
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9067
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9068
|
+
},
|
|
9069
|
+
736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
9070
|
+
738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9071
|
+
744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
|
9072
|
+
746 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
|
9073
|
+
748 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
9074
|
+
750 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
|
9075
|
+
752 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
|
9076
|
+
756 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9077
|
+
758 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
|
9078
|
+
760 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
|
9079
|
+
762 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9080
|
+
764 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
|
9081
|
+
766 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
|
9082
|
+
788 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
|
|
9083
|
+
794 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9084
|
+
796 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
9085
|
+
802 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
9086
|
+
803 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
9087
|
+
804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
|
9088
|
+
812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
|
9089
|
+
847 => {
|
|
9090
|
+
Name => 'CustomSettingsZ9',
|
|
9091
|
+
Format => 'undef[608]',
|
|
9092
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
|
|
9093
|
+
},
|
|
9094
|
+
1474 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9095
|
+
1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9096
|
+
1482 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9097
|
+
1504 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
9098
|
+
1600 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
|
9099
|
+
1613 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
|
|
9100
|
+
1620 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9101
|
+
1621 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
|
9102
|
+
1656 => { Name => 'EnergySavingMode', PrintConv =>\%offOn, Unknown => 1 },
|
|
9103
|
+
1680 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
|
|
9104
|
+
1684 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
9105
|
+
1693 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
9106
|
+
1754 => {
|
|
9107
|
+
Name => 'FocusShiftAutoReset',
|
|
9108
|
+
Unknown => 1,
|
|
9109
|
+
PrintConv => \%offOn,
|
|
9110
|
+
Condition => '$$self{FocusShiftShooting} > 0',
|
|
9111
|
+
},
|
|
9112
|
+
#1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
|
|
9113
|
+
#1826 VerticalISOButton CSf2
|
|
9114
|
+
#1828 ExposureCompensationButton CSf2
|
|
9115
|
+
#1830 ISOButton CSf2
|
|
9116
|
+
#1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
|
|
9117
|
+
#1892 DispButton CSf2
|
|
9118
|
+
#1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
|
|
9119
|
+
);
|
|
8839
9120
|
|
|
8840
9121
|
# Flash information (ref JD)
|
|
8841
9122
|
%Image::ExifTool::Nikon::FlashInfo0100 = (
|
|
@@ -9951,7 +10232,7 @@ my %nikonFocalConversions = (
|
|
|
9951
10232
|
},
|
|
9952
10233
|
12 => {
|
|
9953
10234
|
Name => 'FlashFocalLength',
|
|
9954
|
-
Notes => 'only valid if flash pattern is "Standard Illumination"',
|
|
10235
|
+
Notes => 'only valid if flash pattern is "Standard Illumination"', #illumination pattern no no supported starting with the SB-910
|
|
9955
10236
|
RawConv => '($val and $val != 255) ? $val : undef',
|
|
9956
10237
|
PrintConv => '"$val mm"',
|
|
9957
10238
|
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
|
@@ -10021,7 +10302,7 @@ my %nikonFocalConversions = (
|
|
|
10021
10302
|
0x29 => [ #PH
|
|
10022
10303
|
{
|
|
10023
10304
|
Name => 'FlashGroupBOutput',
|
|
10024
|
-
Condition => '$$self{FlashGroupBControlMode} >=
|
|
10305
|
+
Condition => '$$self{FlashGroupBControlMode} >= 0x06',
|
|
10025
10306
|
ValueConv => '2 ** (-$val/6)',
|
|
10026
10307
|
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
|
10027
10308
|
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
|
@@ -10061,6 +10342,7 @@ my %nikonFocalConversions = (
|
|
|
10061
10342
|
%Image::ExifTool::Nikon::FlashInfo0300 = (
|
|
10062
10343
|
%binaryDataAttrs,
|
|
10063
10344
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
10345
|
+
DATAMEMBER => [ 9.2, 17.1, 18.1, 18.2 ],
|
|
10064
10346
|
0 => {
|
|
10065
10347
|
Name => 'FlashInfoVersion',
|
|
10066
10348
|
Format => 'string[4]',
|
|
@@ -10075,15 +10357,39 @@ my %nikonFocalConversions = (
|
|
|
10075
10357
|
},
|
|
10076
10358
|
},
|
|
10077
10359
|
6 => {
|
|
10078
|
-
Format => 'int8u[2]',
|
|
10079
10360
|
Name => 'ExternalFlashFirmware',
|
|
10361
|
+
Format => 'int8u[2]',
|
|
10080
10362
|
SeparateTable => 'FlashFirmware',
|
|
10081
10363
|
PrintConv => \%flashFirmware,
|
|
10082
10364
|
},
|
|
10365
|
+
8 => {
|
|
10366
|
+
Name => 'ExternalFlashFlags',
|
|
10367
|
+
PrintConv => { BITMASK => {
|
|
10368
|
+
0 => 'Flash Ready', #flash status is 'Not Ready' when this bit is off and FlashSource is non-zero
|
|
10369
|
+
# 1 - ? (observed with SB-900)
|
|
10370
|
+
2 => 'Bounce Flash',
|
|
10371
|
+
4 => 'Wide Flash Adapter',
|
|
10372
|
+
7 => 'Zoom Override', #override takes place when the Wide Flash Adapter is dropped in place and/or the zoom level is overriden on via flash menu
|
|
10373
|
+
}},
|
|
10374
|
+
},
|
|
10375
|
+
9.1 => {
|
|
10376
|
+
Name => 'FlashCommanderMode',
|
|
10377
|
+
Mask => 0x80,
|
|
10378
|
+
PrintConv => { 0 => 'Off', 1 => 'On' },
|
|
10379
|
+
},
|
|
10380
|
+
9.2 => {
|
|
10381
|
+
Name => 'FlashControlMode',
|
|
10382
|
+
Mask => 0x7f,
|
|
10383
|
+
DataMember => 'FlashControlMode',
|
|
10384
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
|
10385
|
+
PrintConv => \%flashControlMode,
|
|
10386
|
+
SeparateTable => 'FlashControlMode',
|
|
10387
|
+
},
|
|
10083
10388
|
10 => {
|
|
10084
10389
|
Name => 'FlashCompensation',
|
|
10085
10390
|
# this is the compensation from the camera (0x0012) for "Built-in" FlashType, or
|
|
10086
10391
|
# the compensation from the external unit (0x0017) for "Optional" FlashType - PH
|
|
10392
|
+
Condition => '$$self{FlashControlMode} == 0x01 or $$self{FlashControlMode} == 0x02', #only valid for TTL and TTL-BL modes
|
|
10087
10393
|
Format => 'int8s',
|
|
10088
10394
|
Priority => 0,
|
|
10089
10395
|
ValueConv => '-$val/6',
|
|
@@ -10091,6 +10397,130 @@ my %nikonFocalConversions = (
|
|
|
10091
10397
|
PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
|
|
10092
10398
|
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
|
10093
10399
|
},
|
|
10400
|
+
13 => {
|
|
10401
|
+
Name => 'RepeatingFlashRate',
|
|
10402
|
+
RawConv => '($val and $val != 255) ? $val : undef',
|
|
10403
|
+
PrintConv => '"$val Hz"',
|
|
10404
|
+
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
|
10405
|
+
},
|
|
10406
|
+
14 => {
|
|
10407
|
+
Name => 'RepeatingFlashCount',
|
|
10408
|
+
RawConv => '($val and $val != 255) ? $val : undef',
|
|
10409
|
+
},
|
|
10410
|
+
15 => {
|
|
10411
|
+
Name => 'FlashGNDistance',
|
|
10412
|
+
SeparateTable => 1,
|
|
10413
|
+
PrintConv => \%flashGNDistance,
|
|
10414
|
+
},
|
|
10415
|
+
16 => {
|
|
10416
|
+
Name => 'FlashColorFilter',
|
|
10417
|
+
SeparateTable => 1,
|
|
10418
|
+
PrintConv => \%flashColorFilter,
|
|
10419
|
+
},
|
|
10420
|
+
17.1 => { #PH
|
|
10421
|
+
Name => 'FlashGroupAControlMode',
|
|
10422
|
+
Mask => 0x0f,
|
|
10423
|
+
Notes => 'note: group A tags may apply to the built-in flash settings for some models',
|
|
10424
|
+
DataMember => 'FlashGroupAControlMode',
|
|
10425
|
+
RawConv => '$$self{FlashGroupAControlMode} = $val',
|
|
10426
|
+
PrintConv => \%flashControlMode,
|
|
10427
|
+
SeparateTable => 'FlashControlMode',
|
|
10428
|
+
},
|
|
10429
|
+
18.1 => { #PH
|
|
10430
|
+
Name => 'FlashGroupBControlMode',
|
|
10431
|
+
Mask => 0xf0,
|
|
10432
|
+
Notes => 'note: group B tags may apply to group A settings for some models',
|
|
10433
|
+
DataMember => 'FlashGroupBControlMode',
|
|
10434
|
+
RawConv => '$$self{FlashGroupBControlMode} = $val',
|
|
10435
|
+
PrintConv => \%flashControlMode,
|
|
10436
|
+
SeparateTable => 'FlashControlMode',
|
|
10437
|
+
},
|
|
10438
|
+
18.2 => { #PH
|
|
10439
|
+
Name => 'FlashGroupCControlMode',
|
|
10440
|
+
Mask => 0x0f,
|
|
10441
|
+
Notes => 'note: group C tags may apply to group B settings for some models',
|
|
10442
|
+
DataMember => 'FlashGroupCControlMode',
|
|
10443
|
+
RawConv => '$$self{FlashGroupCControlMode} = $val',
|
|
10444
|
+
PrintConv => \%flashControlMode,
|
|
10445
|
+
SeparateTable => 'FlashControlMode',
|
|
10446
|
+
},
|
|
10447
|
+
33 => {
|
|
10448
|
+
Name => 'FlashOutput',
|
|
10449
|
+
Condition => '$$self{FlashControlMode} >= 0x06', #only valid for M mode
|
|
10450
|
+
ValueConv => '2 ** (-$val/6)',
|
|
10451
|
+
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
|
10452
|
+
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
|
10453
|
+
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
10454
|
+
},
|
|
10455
|
+
37 => {
|
|
10456
|
+
Name => 'FlashIlluminationPattern',
|
|
10457
|
+
PrintConv => {
|
|
10458
|
+
0 => 'Standard',
|
|
10459
|
+
1 => 'Center-weighted',
|
|
10460
|
+
2 => 'Even',
|
|
10461
|
+
},
|
|
10462
|
+
},
|
|
10463
|
+
38 => {
|
|
10464
|
+
Name => 'FlashFocalLength',
|
|
10465
|
+
Notes => 'only valid if flash pattern is "Standard Illumination"',
|
|
10466
|
+
RawConv => '($val and $val != 255) ? $val : undef',
|
|
10467
|
+
PrintConv => '"$val mm"',
|
|
10468
|
+
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
|
10469
|
+
},
|
|
10470
|
+
40 => [ #PH
|
|
10471
|
+
{
|
|
10472
|
+
Name => 'FlashGroupAOutput',
|
|
10473
|
+
Condition => '$$self{FlashGroupAControlMode} >= 0x06',
|
|
10474
|
+
ValueConv => '2 ** (-$val/6)',
|
|
10475
|
+
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
|
10476
|
+
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
|
10477
|
+
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
10478
|
+
},
|
|
10479
|
+
{
|
|
10480
|
+
Name => 'FlashGroupACompensation',
|
|
10481
|
+
Format => 'int8s',
|
|
10482
|
+
ValueConv => '-($val-2)/6',
|
|
10483
|
+
ValueConvInv => '-6 * $val + 2',
|
|
10484
|
+
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
|
10485
|
+
PrintConvInv => '$val',
|
|
10486
|
+
},
|
|
10487
|
+
],
|
|
10488
|
+
41 => [ #PH
|
|
10489
|
+
{
|
|
10490
|
+
Name => 'FlashGroupBOutput',
|
|
10491
|
+
Condition => '$$self{FlashGroupBControlMode} >= 0x06',
|
|
10492
|
+
ValueConv => '2 ** (-$val/6)',
|
|
10493
|
+
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
|
10494
|
+
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
|
10495
|
+
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
10496
|
+
},
|
|
10497
|
+
{
|
|
10498
|
+
Name => 'FlashGroupBCompensation',
|
|
10499
|
+
Format => 'int8s',
|
|
10500
|
+
ValueConv => '-($val-2)/6',
|
|
10501
|
+
ValueConvInv => '-6 * $val + 2',
|
|
10502
|
+
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
|
10503
|
+
PrintConvInv => '$val',
|
|
10504
|
+
},
|
|
10505
|
+
],
|
|
10506
|
+
42 => [ #PH
|
|
10507
|
+
{
|
|
10508
|
+
Name => 'FlashGroupCOutput',
|
|
10509
|
+
Condition => '$$self{FlashGroupCControlMode} >= 0x06',
|
|
10510
|
+
ValueConv => '2 ** (-$val/6)',
|
|
10511
|
+
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
|
10512
|
+
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
|
10513
|
+
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
10514
|
+
},
|
|
10515
|
+
{
|
|
10516
|
+
Name => 'FlashGroupCCompensation',
|
|
10517
|
+
Format => 'int8s',
|
|
10518
|
+
ValueConv => '-($val-2)/6',
|
|
10519
|
+
ValueConvInv => '-6 * $val + 2',
|
|
10520
|
+
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
|
10521
|
+
PrintConvInv => '$val',
|
|
10522
|
+
},
|
|
10523
|
+
],
|
|
10094
10524
|
);
|
|
10095
10525
|
# Unknown Flash information
|
|
10096
10526
|
%Image::ExifTool::Nikon::FlashInfoUnknown = (
|
|
@@ -10129,6 +10559,36 @@ my %nikonFocalConversions = (
|
|
|
10129
10559
|
},
|
|
10130
10560
|
);
|
|
10131
10561
|
|
|
10562
|
+
# Multi exposure2 / image overlay information (ref 39)
|
|
10563
|
+
%Image::ExifTool::Nikon::MultiExposure2 = (
|
|
10564
|
+
%binaryDataAttrs,
|
|
10565
|
+
FORMAT => 'int32u',
|
|
10566
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
10567
|
+
0 => {
|
|
10568
|
+
Name => 'MultiExposureVersion',
|
|
10569
|
+
Format => 'string[4]',
|
|
10570
|
+
Writable => 0,
|
|
10571
|
+
},
|
|
10572
|
+
1 => {
|
|
10573
|
+
Name => 'MultiExposureMode',
|
|
10574
|
+
PrintConv => {
|
|
10575
|
+
0 => 'Off',
|
|
10576
|
+
1 => 'Multiple Exposure',
|
|
10577
|
+
3 => 'HDR',
|
|
10578
|
+
},
|
|
10579
|
+
},
|
|
10580
|
+
2 => 'MultiExposureShots',
|
|
10581
|
+
3 => {
|
|
10582
|
+
Name => 'MultiExposureOverlayMode',
|
|
10583
|
+
PrintConv => {
|
|
10584
|
+
0 => 'Add',
|
|
10585
|
+
1 => 'Average',
|
|
10586
|
+
2 => 'Light',
|
|
10587
|
+
3 => 'Dark',
|
|
10588
|
+
},
|
|
10589
|
+
},
|
|
10590
|
+
);
|
|
10591
|
+
|
|
10132
10592
|
# HDR information (ref 32)
|
|
10133
10593
|
%Image::ExifTool::Nikon::HDRInfo = (
|
|
10134
10594
|
%binaryDataAttrs,
|
|
@@ -10137,12 +10597,13 @@ my %nikonFocalConversions = (
|
|
|
10137
10597
|
0 => {
|
|
10138
10598
|
Name => 'HDRInfoVersion',
|
|
10139
10599
|
Format => 'string[4]',
|
|
10600
|
+
Writable => 0,
|
|
10140
10601
|
},
|
|
10141
10602
|
4 => {
|
|
10142
10603
|
Name => 'HDR',
|
|
10143
10604
|
PrintConv => {
|
|
10144
10605
|
0 => 'Off',
|
|
10145
|
-
1 => 'On',
|
|
10606
|
+
1 => 'On (normal)',
|
|
10146
10607
|
48 => 'Auto', #PH (NC)
|
|
10147
10608
|
},
|
|
10148
10609
|
},
|
|
@@ -10180,6 +10641,35 @@ my %nikonFocalConversions = (
|
|
|
10180
10641
|
},
|
|
10181
10642
|
);
|
|
10182
10643
|
|
|
10644
|
+
# ref 39 (Z9)
|
|
10645
|
+
%Image::ExifTool::Nikon::HDRInfo2 = (
|
|
10646
|
+
%binaryDataAttrs,
|
|
10647
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
|
10648
|
+
0 => {
|
|
10649
|
+
Name => 'HDRInfoVersion', # 0200
|
|
10650
|
+
Format => 'string[4]',
|
|
10651
|
+
Writable => 0,
|
|
10652
|
+
},
|
|
10653
|
+
4 => {
|
|
10654
|
+
Name => 'HDR',
|
|
10655
|
+
PrintConv => {
|
|
10656
|
+
0 => 'Off',
|
|
10657
|
+
1 => 'On (normal)',
|
|
10658
|
+
},
|
|
10659
|
+
},
|
|
10660
|
+
5 => {
|
|
10661
|
+
Name => 'HDRLevel',
|
|
10662
|
+
PrintConv => {
|
|
10663
|
+
0 => 'n/a',
|
|
10664
|
+
1 => 'Normal',
|
|
10665
|
+
2 => 'Low',
|
|
10666
|
+
3 => 'High',
|
|
10667
|
+
4 => 'High+',
|
|
10668
|
+
5 => 'Auto',
|
|
10669
|
+
},
|
|
10670
|
+
},
|
|
10671
|
+
);
|
|
10672
|
+
|
|
10183
10673
|
# location information (ref PH)
|
|
10184
10674
|
%Image::ExifTool::Nikon::LocationInfo = (
|
|
10185
10675
|
%binaryDataAttrs,
|
|
@@ -11995,7 +12485,7 @@ Nikon maker notes in EXIF information.
|
|
|
11995
12485
|
|
|
11996
12486
|
=head1 AUTHOR
|
|
11997
12487
|
|
|
11998
|
-
Copyright 2003-
|
|
12488
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
11999
12489
|
|
|
12000
12490
|
This library is free software; you can redistribute it and/or modify it
|
|
12001
12491
|
under the same terms as Perl itself.
|