exiftool-vendored.pl 12.80.0 → 12.84.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 +81 -0
- package/bin/MANIFEST +6 -18
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +4 -2
- package/bin/build_geolocation +872 -0
- package/bin/config_files/example.config +2 -2
- package/bin/exiftool +61 -17
- package/bin/fmt_files/gpx.fmt +2 -1
- package/bin/fmt_files/gpx_wpt.fmt +2 -1
- package/bin/lib/Image/ExifTool/Apple.pm +51 -7
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +47 -31
- package/bin/lib/Image/ExifTool/CanonVRD.pm +19 -6
- package/bin/lib/Image/ExifTool/DJI.pm +29 -0
- package/bin/lib/Image/ExifTool/Exif.pm +19 -2
- package/bin/lib/Image/ExifTool/FujiFilm.pm +20 -7
- package/bin/lib/Image/ExifTool/GM.pm +552 -0
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/Geolocation.pm +423 -178
- package/bin/lib/Image/ExifTool/Geotag.pm +26 -13
- package/bin/lib/Image/ExifTool/M2TS.pm +32 -4
- package/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
- package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +337 -27
- package/bin/lib/Image/ExifTool/NikonCustom.pm +55 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +1 -0
- package/bin/lib/Image/ExifTool/OpenEXR.pm +21 -3
- package/bin/lib/Image/ExifTool/PNG.pm +3 -3
- package/bin/lib/Image/ExifTool/QuickTime.pm +45 -24
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +66 -30
- package/bin/lib/Image/ExifTool/README +2 -0
- package/bin/lib/Image/ExifTool/Sony.pm +16 -7
- package/bin/lib/Image/ExifTool/TagLookup.pm +4827 -4778
- package/bin/lib/Image/ExifTool/TagNames.pod +953 -620
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +32 -9
- package/bin/lib/Image/ExifTool/Writer.pl +169 -130
- package/bin/lib/Image/ExifTool/XMP.pm +4 -2
- package/bin/lib/Image/ExifTool/XMP2.pl +3 -0
- package/bin/lib/Image/ExifTool.pm +106 -48
- package/bin/lib/Image/ExifTool.pod +47 -25
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +3 -3
|
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
|
|
|
65
65
|
use Image::ExifTool::GPS;
|
|
66
66
|
use Image::ExifTool::XMP;
|
|
67
67
|
|
|
68
|
-
$VERSION = '4.
|
|
68
|
+
$VERSION = '4.33';
|
|
69
69
|
|
|
70
70
|
sub LensIDConv($$$);
|
|
71
71
|
sub ProcessNikonAVI($$$);
|
|
@@ -678,6 +678,7 @@ sub GetAFPointGrid($$;$);
|
|
|
678
678
|
'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
|
|
679
679
|
'FD 00 44 44 18 18 DF 00' => 'Voigtlander APO-Lanthar 35mm F2', #30
|
|
680
680
|
'FD 00 59 59 18 18 DF 00' => 'Voigtlander Macro APO-Lanthar 65mm F2', #30
|
|
681
|
+
'FD 00 48 48 07 07 DF 00' => 'Voigtlander Nokton 40mm F1.2 Aspherical', #30
|
|
681
682
|
#
|
|
682
683
|
'00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
|
|
683
684
|
'00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
|
|
@@ -890,6 +891,12 @@ my %bracketProgramZ9 = (
|
|
|
890
891
|
9 => '9F',
|
|
891
892
|
);
|
|
892
893
|
|
|
894
|
+
my %dialsFrameAdvanceZoomPositionZ9 = (
|
|
895
|
+
0 => 'Hold',
|
|
896
|
+
1 => 'Focus Point',
|
|
897
|
+
2 => 'Face Priority',
|
|
898
|
+
);
|
|
899
|
+
|
|
893
900
|
my %dynamicAfAreaModesZ9 = (
|
|
894
901
|
0 => 'Small',
|
|
895
902
|
1 => 'Medium',
|
|
@@ -949,6 +956,7 @@ my %highFrameRateZ9 = (
|
|
|
949
956
|
3 => 'C30',
|
|
950
957
|
5 => 'C60',
|
|
951
958
|
4 => 'C120',
|
|
959
|
+
6 => 'C15',
|
|
952
960
|
);
|
|
953
961
|
|
|
954
962
|
my %imageAreaD6 = (
|
|
@@ -1118,6 +1126,12 @@ my %movieFrameSizeZ9 = (
|
|
|
1118
1126
|
3 => '7680x4320',
|
|
1119
1127
|
);
|
|
1120
1128
|
|
|
1129
|
+
my %movieSlowMotion = (
|
|
1130
|
+
0 => 'Off',
|
|
1131
|
+
1 => 'On (4x)', # 120p recording with playback @ 30p [1920 x 1080; 30p x 4] or 100p recording with playback @ 25p [1920 x 1080; 25p x 4]
|
|
1132
|
+
2 => 'On (5x)', # 120p recording with playback @ 24p [1920 x 1080; 20p x 5]
|
|
1133
|
+
);
|
|
1134
|
+
|
|
1121
1135
|
my %movieToneMapZ9 = (
|
|
1122
1136
|
0 => 'SDR',
|
|
1123
1137
|
1 => 'HLG',
|
|
@@ -1125,7 +1139,7 @@ my %movieToneMapZ9 = (
|
|
|
1125
1139
|
);
|
|
1126
1140
|
|
|
1127
1141
|
my %movieTypeZ9 = (
|
|
1128
|
-
1 => 'H.
|
|
1142
|
+
1 => 'H.264 8-bit (MP4)',
|
|
1129
1143
|
2 => 'H.265 8-bit (MOV)',
|
|
1130
1144
|
3 => 'H.265 10-bit (MOV)',
|
|
1131
1145
|
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
|
@@ -1172,6 +1186,22 @@ my %offLowNormalHighZ7 = (
|
|
|
1172
1186
|
3 => 'High',
|
|
1173
1187
|
);
|
|
1174
1188
|
|
|
1189
|
+
my %pixelShiftDelay = (
|
|
1190
|
+
0 => 'Off',
|
|
1191
|
+
1 => '1 s',
|
|
1192
|
+
2 => '2 s',
|
|
1193
|
+
3 => '3 s',
|
|
1194
|
+
4 => '5 s',
|
|
1195
|
+
5 => '10 s',
|
|
1196
|
+
);
|
|
1197
|
+
|
|
1198
|
+
my %pixelShiftNumberShots = (
|
|
1199
|
+
0 => '4',
|
|
1200
|
+
1 => '8',
|
|
1201
|
+
2 => '16',
|
|
1202
|
+
3 => '32',
|
|
1203
|
+
);
|
|
1204
|
+
|
|
1175
1205
|
my %portraitImpressionBalanceZ8 = (
|
|
1176
1206
|
0 => 'Off',
|
|
1177
1207
|
1 => 'Mode 1',
|
|
@@ -5469,20 +5499,21 @@ my %nikonFocalConversions = (
|
|
|
5469
5499
|
28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
|
|
5470
5500
|
29 => 'Nikkor Z 28mm f/2.8', #IB
|
|
5471
5501
|
30 => 'Nikkor Z 400mm f/2.8 TC VR S', #28
|
|
5472
|
-
31 => 'Nikkor Z 24-
|
|
5502
|
+
31 => 'Nikkor Z 24-120mm f/4 S', #github#250
|
|
5473
5503
|
32 => 'Nikkor Z 800mm f/6.3 VR S', #28
|
|
5474
5504
|
35 => 'Nikkor Z 28-75mm f/2.8', #IB
|
|
5475
5505
|
36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
|
|
5476
5506
|
37 => 'Nikkor Z 600mm f/4 TC VR S', #28
|
|
5477
5507
|
38 => 'Nikkor Z 85mm f/1.2 S', #28
|
|
5478
5508
|
39 => 'Nikkor Z 17-28mm f/2.8', #IB
|
|
5479
|
-
40 => '
|
|
5480
|
-
41 => '
|
|
5509
|
+
40 => 'Nikkor Z 26mm f/2.8', #28
|
|
5510
|
+
41 => 'Nikkor Z DX 12-28mm f/3.5-5.6 PZ VR', #28
|
|
5481
5511
|
42 => 'Nikkor Z 180-600mm f/5.6-6.3 VR', #30
|
|
5482
|
-
43 => '
|
|
5483
|
-
44 => '
|
|
5484
|
-
45 => '
|
|
5512
|
+
43 => 'Nikkor Z DX 24mm f/1.7', #28
|
|
5513
|
+
44 => 'Nikkor Z 70-180mm f/2.8', #28
|
|
5514
|
+
45 => 'Nikkor Z 600mm f/6.3 VR S', #28
|
|
5485
5515
|
46 => 'Nikkor Z 135mm f/1.8 S Plena', #28
|
|
5516
|
+
48 => 'Nikkor Z 28-400mm f/4-8 VR', #30
|
|
5486
5517
|
32768 => 'Nikkor Z 400mm f/2.8 TC VR S TC-1.4x', #28
|
|
5487
5518
|
32769 => 'Nikkor Z 600mm f/4 TC VR S TC-1.4x', #28
|
|
5488
5519
|
},
|
|
@@ -8382,7 +8413,7 @@ my %nikonFocalConversions = (
|
|
|
8382
8413
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
8383
8414
|
VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
|
|
8384
8415
|
DATAMEMBER => [ 0x04 ],
|
|
8385
|
-
IS_SUBDIR => [ 0x30, 0x84, 0x8c ],
|
|
8416
|
+
IS_SUBDIR => [ 0x30, 0x80, 0x84, 0x8c ],
|
|
8386
8417
|
WRITABLE => 1,
|
|
8387
8418
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8388
8419
|
NOTES => 'These tags are extracted from encrypted data in images from the Z8.',
|
|
@@ -8425,6 +8456,16 @@ my %nikonFocalConversions = (
|
|
|
8425
8456
|
Start => '$val',
|
|
8426
8457
|
},
|
|
8427
8458
|
},
|
|
8459
|
+
0x80 => {
|
|
8460
|
+
Name => 'AutoCaptureOffset',
|
|
8461
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
|
8462
|
+
Format => 'int32u',
|
|
8463
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
|
8464
|
+
SubDirectory => {
|
|
8465
|
+
TagTable => 'Image::ExifTool::Nikon::AutoCaptureInfo',
|
|
8466
|
+
Start => '$val',
|
|
8467
|
+
},
|
|
8468
|
+
},
|
|
8428
8469
|
0x84 => {
|
|
8429
8470
|
Name => 'OrientOffset',
|
|
8430
8471
|
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
|
@@ -8709,13 +8750,24 @@ my %nikonFocalConversions = (
|
|
|
8709
8750
|
0x10 => [
|
|
8710
8751
|
{
|
|
8711
8752
|
Name => 'MenuSettingsOffsetZ8',
|
|
8753
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "02.00"',
|
|
8712
8754
|
Format => 'int32u',
|
|
8713
|
-
Notes => 'Firmware versions 1.0.0',
|
|
8755
|
+
Notes => 'Firmware versions 1.0.0 and 1.1.0',
|
|
8714
8756
|
SubDirectory => {
|
|
8715
8757
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
|
|
8716
8758
|
Start => '$dirStart + $val',
|
|
8717
8759
|
},
|
|
8718
8760
|
},
|
|
8761
|
+
{
|
|
8762
|
+
Name => 'MenuSettingsOffsetZ8v2',
|
|
8763
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
|
8764
|
+
Notes => 'Firmware version 2.0',
|
|
8765
|
+
Format => 'int32u',
|
|
8766
|
+
SubDirectory => {
|
|
8767
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8v2',
|
|
8768
|
+
Start => '$dirStart + $val',
|
|
8769
|
+
},
|
|
8770
|
+
},
|
|
8719
8771
|
],
|
|
8720
8772
|
);
|
|
8721
8773
|
|
|
@@ -9065,15 +9117,7 @@ my %nikonFocalConversions = (
|
|
|
9065
9117
|
#463 => SilentPhotography
|
|
9066
9118
|
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9067
9119
|
504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
9068
|
-
506 => {
|
|
9069
|
-
Name => 'MovieSlowMotion',
|
|
9070
|
-
Unknown => 1,
|
|
9071
|
-
PrintConv => {
|
|
9072
|
-
0 => 'Off',
|
|
9073
|
-
1 => 'On (4x)', # 120p recording with playback @ 30p [1920 x 1080; 30p x 4] or 100p recording with playback @ 25p [1920 x 1080; 25p x 4]
|
|
9074
|
-
2 => 'On (5x)', # 120p recording with playback @ 24p [1920 x 1080; 20p x 5]
|
|
9075
|
-
},
|
|
9076
|
-
},
|
|
9120
|
+
506 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 },
|
|
9077
9121
|
510 => {
|
|
9078
9122
|
Name => 'MovieType',
|
|
9079
9123
|
Unknown => 1,
|
|
@@ -9284,7 +9328,7 @@ my %nikonFocalConversions = (
|
|
|
9284
9328
|
},
|
|
9285
9329
|
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
|
9286
9330
|
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
|
9287
|
-
636 => { Name => '
|
|
9331
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9288
9332
|
730 => {
|
|
9289
9333
|
Name => 'MovieImageArea',
|
|
9290
9334
|
Unknown => 1,
|
|
@@ -9333,7 +9377,7 @@ my %nikonFocalConversions = (
|
|
|
9333
9377
|
Format => 'undef[730]',
|
|
9334
9378
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
|
9335
9379
|
},
|
|
9336
|
-
|
|
9380
|
+
1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9337
9381
|
1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9338
9382
|
1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9339
9383
|
1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
@@ -9384,6 +9428,260 @@ my %nikonFocalConversions = (
|
|
|
9384
9428
|
1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
9385
9429
|
1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
9386
9430
|
);
|
|
9431
|
+
%Image::ExifTool::Nikon::MenuSettingsZ8v2 = (
|
|
9432
|
+
%binaryDataAttrs,
|
|
9433
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9434
|
+
DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596, 2046 ],
|
|
9435
|
+
IS_SUBDIR => [ 943 ],
|
|
9436
|
+
NOTES => 'These tags are used by the Z8 firmware 1.00.',
|
|
9437
|
+
72 => {
|
|
9438
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9439
|
+
PrintConv => \%highFrameRateZ9,
|
|
9440
|
+
},
|
|
9441
|
+
152 => {
|
|
9442
|
+
Name => 'MultipleExposureMode',
|
|
9443
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
|
9444
|
+
PrintConv => \%multipleExposureModeZ9,
|
|
9445
|
+
},
|
|
9446
|
+
154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
|
9447
|
+
184 => {
|
|
9448
|
+
Name => 'IntervalDurationHours',
|
|
9449
|
+
Format => 'int32u',
|
|
9450
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9451
|
+
},
|
|
9452
|
+
188 => {
|
|
9453
|
+
Name => 'IntervalDurationMinutes',
|
|
9454
|
+
Format => 'int32u',
|
|
9455
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9456
|
+
},
|
|
9457
|
+
192 => {
|
|
9458
|
+
Name => 'IntervalDurationSeconds',
|
|
9459
|
+
Format => 'int32u',
|
|
9460
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9461
|
+
},
|
|
9462
|
+
200 => {
|
|
9463
|
+
Name => 'Intervals',
|
|
9464
|
+
Format => 'int32u',
|
|
9465
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
9466
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9467
|
+
},
|
|
9468
|
+
204 => {
|
|
9469
|
+
Name => 'ShotsPerInterval',
|
|
9470
|
+
Format => 'int32u',
|
|
9471
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
9472
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9473
|
+
},
|
|
9474
|
+
208 => {
|
|
9475
|
+
Name => 'IntervalExposureSmoothing',
|
|
9476
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9477
|
+
Format => 'int8u',
|
|
9478
|
+
PrintConv => \%offOn,
|
|
9479
|
+
},
|
|
9480
|
+
210 => {
|
|
9481
|
+
Name => 'IntervalPriority',
|
|
9482
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9483
|
+
Format => 'int8u',
|
|
9484
|
+
PrintConv => \%offOn,
|
|
9485
|
+
},
|
|
9486
|
+
244 => {
|
|
9487
|
+
Name => 'FocusShiftNumberShots', #1-300
|
|
9488
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
|
9489
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9490
|
+
},
|
|
9491
|
+
248 => {
|
|
9492
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
|
9493
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9494
|
+
},
|
|
9495
|
+
252 => {
|
|
9496
|
+
Name => 'FocusShiftInterval',
|
|
9497
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9498
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
|
9499
|
+
},
|
|
9500
|
+
256 => {
|
|
9501
|
+
Name => 'FocusShiftExposureLock',
|
|
9502
|
+
Unknown => 1,
|
|
9503
|
+
PrintConv => \%offOn,
|
|
9504
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9505
|
+
},
|
|
9506
|
+
286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
|
9507
|
+
288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
|
9508
|
+
324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
|
9509
|
+
338 => { Name => 'AutoISO', PrintConv => \%offOn },
|
|
9510
|
+
340 => {
|
|
9511
|
+
Name => 'ISOAutoHiLimit',
|
|
9512
|
+
Format => 'int16u',
|
|
9513
|
+
Unknown => 1,
|
|
9514
|
+
ValueConv => '($val-104)/8',
|
|
9515
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9516
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9517
|
+
},
|
|
9518
|
+
342 => {
|
|
9519
|
+
Name => 'ISOAutoFlashLimit',
|
|
9520
|
+
Format => 'int16u',
|
|
9521
|
+
Unknown => 1,
|
|
9522
|
+
ValueConv => '($val-104)/8',
|
|
9523
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9524
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9525
|
+
},
|
|
9526
|
+
350 => {
|
|
9527
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
|
9528
|
+
ValueConv => '$val / 8',
|
|
9529
|
+
Format => 'int16s',
|
|
9530
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
|
9531
|
+
},
|
|
9532
|
+
432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9533
|
+
434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
9534
|
+
436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
|
9535
|
+
440 => {
|
|
9536
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
|
9537
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
|
9538
|
+
PrintConv => \%flashControlModeZ7,
|
|
9539
|
+
},
|
|
9540
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
|
9541
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
9542
|
+
554 => {
|
|
9543
|
+
Name => 'BracketSet',
|
|
9544
|
+
RawConv => '$$self{BracketSet} = $val',
|
|
9545
|
+
PrintConv => \%bracketSetZ9,
|
|
9546
|
+
},
|
|
9547
|
+
556 => {
|
|
9548
|
+
Name => 'BracketProgram',
|
|
9549
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9550
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9551
|
+
PrintConv => \%bracketProgramZ9,
|
|
9552
|
+
},
|
|
9553
|
+
558 => {
|
|
9554
|
+
Name => 'BracketIncrement',
|
|
9555
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9556
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9557
|
+
PrintConv => \%bracketIncrementZ9,
|
|
9558
|
+
},
|
|
9559
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
|
9560
|
+
#572 HDRSaveRaw 0=> No; 1=> Yes
|
|
9561
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
|
9562
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
|
9563
|
+
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
|
9564
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
|
9565
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
9566
|
+
596 => {
|
|
9567
|
+
Name => 'DynamicAFAreaSize',
|
|
9568
|
+
Condition => '$$self{AFAreaMode} == 2',
|
|
9569
|
+
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9570
|
+
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9571
|
+
},
|
|
9572
|
+
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
|
9573
|
+
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
|
9574
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9575
|
+
730 => {
|
|
9576
|
+
Name => 'MovieImageArea',
|
|
9577
|
+
Unknown => 1,
|
|
9578
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
|
9579
|
+
PrintConv => \%imageAreaZ9b,
|
|
9580
|
+
},
|
|
9581
|
+
#736 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 }, #only valid for MovieType H.264 8-bit
|
|
9582
|
+
740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
|
9583
|
+
742 => {
|
|
9584
|
+
Name => 'MovieISOAutoHiLimit',
|
|
9585
|
+
Format => 'int16u',
|
|
9586
|
+
Unknown => 1,
|
|
9587
|
+
ValueConv => '($val-104)/8',
|
|
9588
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9589
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9590
|
+
},
|
|
9591
|
+
744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9592
|
+
746 => {
|
|
9593
|
+
Name => 'MovieISOAutoManualMode',
|
|
9594
|
+
Format => 'int16u',
|
|
9595
|
+
Unknown => 1,
|
|
9596
|
+
ValueConv => '($val-104)/8',
|
|
9597
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9598
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9599
|
+
},
|
|
9600
|
+
820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
9601
|
+
822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9602
|
+
828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
|
9603
|
+
830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
|
9604
|
+
832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
9605
|
+
834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
|
9606
|
+
836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
|
9607
|
+
840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9608
|
+
842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
|
9609
|
+
844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
|
9610
|
+
846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9611
|
+
848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
|
9612
|
+
850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
|
9613
|
+
878 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9614
|
+
880 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
9615
|
+
886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
9616
|
+
887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
9617
|
+
888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
|
9618
|
+
896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
|
9619
|
+
943 => {
|
|
9620
|
+
Name => 'CustomSettingsZ8',
|
|
9621
|
+
Format => 'undef[755]',
|
|
9622
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
|
9623
|
+
},
|
|
9624
|
+
1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9625
|
+
1700 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9626
|
+
1706 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9627
|
+
1728 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
9628
|
+
1732 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
|
9629
|
+
1734 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9630
|
+
1736 => { Name => 'NonCPULens3FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9631
|
+
1738 => { Name => 'NonCPULens4FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9632
|
+
1740 => { Name => 'NonCPULens5FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9633
|
+
1742 => { Name => 'NonCPULens6FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9634
|
+
1744 => { Name => 'NonCPULens7FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9635
|
+
1746 => { Name => 'NonCPULens8FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9636
|
+
1748 => { Name => 'NonCPULens9FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9637
|
+
1750 => { Name => 'NonCPULens10FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9638
|
+
1752 => { Name => 'NonCPULens11FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9639
|
+
1754 => { Name => 'NonCPULens12FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9640
|
+
1756 => { Name => 'NonCPULens13FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9641
|
+
1758 => { Name => 'NonCPULens14FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9642
|
+
1760 => { Name => 'NonCPULens15FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9643
|
+
1762 => { Name => 'NonCPULens16FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9644
|
+
1764 => { Name => 'NonCPULens17FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9645
|
+
1766 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9646
|
+
1768 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9647
|
+
1770 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9648
|
+
1812 => { Name => 'NonCPULens1MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9649
|
+
1816 => { Name => 'NonCPULens2MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9650
|
+
1820 => { Name => 'NonCPULens3MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9651
|
+
1824 => { Name => 'NonCPULens4MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9652
|
+
1828 => { Name => 'NonCPULens5MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9653
|
+
1832 => { Name => 'NonCPULens6MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9654
|
+
1836 => { Name => 'NonCPULens7MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9655
|
+
1840 => { Name => 'NonCPULens8MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9656
|
+
1844 => { Name => 'NonCPULens9MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9657
|
+
1848 => { Name => 'NonCPULens10MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9658
|
+
1852 => { Name => 'NonCPULens11MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9659
|
+
1856 => { Name => 'NonCPULens12MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9660
|
+
1860 => { Name => 'NonCPULens13MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9661
|
+
1864 => { Name => 'NonCPULens14MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9662
|
+
1868 => { Name => 'NonCPULens15MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9663
|
+
1872 => { Name => 'NonCPULens16MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9664
|
+
1876 => { Name => 'NonCPULens17MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9665
|
+
1880 => { Name => 'NonCPULens18MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9666
|
+
1884 => { Name => 'NonCPULens19MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9667
|
+
1888 => { Name => 'NonCPULens20MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9668
|
+
1824 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
|
9669
|
+
1842 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9670
|
+
1843 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
|
9671
|
+
1878 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9672
|
+
1906 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
9673
|
+
1915 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
9674
|
+
2046 => { Name => 'PixelShiftShooting', RawConv => '$$self{PixelShiftShooting} = $val', PrintConv => \%multipleExposureModeZ9 }, #off/on/on (series)
|
|
9675
|
+
2048 => { Name => 'PixelShiftNumberShots', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftNumberShots },
|
|
9676
|
+
2050 => { Name => 'PixelShiftDelay', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftDelay },
|
|
9677
|
+
2052 => { Name => 'PlaybackButton', %buttonsZ9 }, #CSf2
|
|
9678
|
+
2054 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
|
9679
|
+
2056 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
|
9680
|
+
2058 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9681
|
+
2060 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9682
|
+
2062 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9683
|
+
2064 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9684
|
+
);
|
|
9387
9685
|
%Image::ExifTool::Nikon::MenuSettingsZ9 = (
|
|
9388
9686
|
%binaryDataAttrs,
|
|
9389
9687
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
@@ -9733,7 +10031,7 @@ my %nikonFocalConversions = (
|
|
|
9733
10031
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9734
10032
|
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9735
10033
|
},
|
|
9736
|
-
636 => { Name => '
|
|
10034
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9737
10035
|
646 => {
|
|
9738
10036
|
Name => 'MovieImageArea',
|
|
9739
10037
|
Unknown => 1,
|
|
@@ -9833,7 +10131,7 @@ my %nikonFocalConversions = (
|
|
|
9833
10131
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9834
10132
|
DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
|
|
9835
10133
|
IS_SUBDIR => [ 847 ],
|
|
9836
|
-
NOTES => 'These tags are used by the Z9 firmware
|
|
10134
|
+
NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0',
|
|
9837
10135
|
72 => {
|
|
9838
10136
|
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9839
10137
|
PrintConv => \%highFrameRateZ9,
|
|
@@ -9970,7 +10268,7 @@ my %nikonFocalConversions = (
|
|
|
9970
10268
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9971
10269
|
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9972
10270
|
},
|
|
9973
|
-
636 => { Name => '
|
|
10271
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9974
10272
|
646 => {
|
|
9975
10273
|
Name => 'MovieImageArea',
|
|
9976
10274
|
Unknown => 1,
|
|
@@ -10116,6 +10414,18 @@ my %nikonFocalConversions = (
|
|
|
10116
10414
|
Format => 'fixed32u',
|
|
10117
10415
|
PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
|
|
10118
10416
|
},
|
|
10417
|
+
2052 => { #CSf2-m3
|
|
10418
|
+
Name => 'CommandDialFrameAdvanceZoom',
|
|
10419
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
|
10420
|
+
PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
|
|
10421
|
+
Unknown => 1
|
|
10422
|
+
},
|
|
10423
|
+
2054 => { #CSf2-n3
|
|
10424
|
+
Name => 'SubCommandDialFrameAdvanceZoom',
|
|
10425
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
|
10426
|
+
PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
|
|
10427
|
+
Unknown => 1
|
|
10428
|
+
},
|
|
10119
10429
|
2056 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
|
|
10120
10430
|
2058 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
|
10121
10431
|
2060 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
|
@@ -11406,7 +11716,7 @@ my %nikonFocalConversions = (
|
|
|
11406
11716
|
},
|
|
11407
11717
|
);
|
|
11408
11718
|
|
|
11409
|
-
# MakerNotes0x56 - burst info for Z9
|
|
11719
|
+
# MakerNotes0x56 - burst info for Z8 and Z9
|
|
11410
11720
|
%Image::ExifTool::Nikon::MakerNotes0x56 = (
|
|
11411
11721
|
%binaryDataAttrs,
|
|
11412
11722
|
GROUPS => { 0 => 'MakerNotes' },
|
|
@@ -11416,7 +11726,7 @@ my %nikonFocalConversions = (
|
|
|
11416
11726
|
Writable => 0,
|
|
11417
11727
|
},
|
|
11418
11728
|
4 => {
|
|
11419
|
-
Name => 'BurstGroupID', #all frames shot within a burst (using CL/CH/C30/C60/C120) will share the same BurstGroupID. Value will be > 0 for all images shot in continuous modes. 0 for single-frame.
|
|
11729
|
+
Name => 'BurstGroupID', #all frames shot within a burst (using CL/CH/C30/C60/C120) will share the same BurstGroupID. Value will be > 0 for all images shot in continuous modes (or via Pixel Shift). 0 for single-frame.
|
|
11420
11730
|
Format => 'int16u'
|
|
11421
11731
|
},
|
|
11422
11732
|
);
|
|
@@ -11440,7 +11750,7 @@ my %nikonFocalConversions = (
|
|
|
11440
11750
|
Name => 'VignetteInfo', # Z-series vignette correction information
|
|
11441
11751
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::VignetteInfo' },
|
|
11442
11752
|
},
|
|
11443
|
-
# 0x07 - undef[104]
|
|
11753
|
+
# 0x07 - undef[104] #possibly Z-series diffration correction information (#28)
|
|
11444
11754
|
# 0x08 - undef[24]
|
|
11445
11755
|
# 0x09 - undef[36]
|
|
11446
11756
|
);
|
|
@@ -15,7 +15,7 @@ package Image::ExifTool::NikonCustom;
|
|
|
15
15
|
use strict;
|
|
16
16
|
use vars qw($VERSION @ISA @EXPORT_OK %buttonsZ9);
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.25';
|
|
19
19
|
|
|
20
20
|
@ISA = qw(Exporter);
|
|
21
21
|
@EXPORT_OK = qw(%buttonsZ9);
|
|
@@ -77,6 +77,7 @@ $VERSION = '1.24';
|
|
|
77
77
|
66 => 'Voice Memo',
|
|
78
78
|
70 => 'Photo Shooting Bank',
|
|
79
79
|
71 => 'ISO',
|
|
80
|
+
72 => 'Shooting Mode',
|
|
80
81
|
73 => 'Exposure Compensation',
|
|
81
82
|
76 => 'Silent Mode',
|
|
82
83
|
78 => 'LiveView Information',
|
|
@@ -90,6 +91,9 @@ $VERSION = '1.24';
|
|
|
90
91
|
86 => 'Save Focus Position',
|
|
91
92
|
87 => 'Recall Focus Position',
|
|
92
93
|
88 => 'Recall Shooting Functions (Hold)',
|
|
94
|
+
89 => 'Set Picture Control (HLG)',
|
|
95
|
+
90 => 'Skin Softening',
|
|
96
|
+
91 => 'Portrait Impression Balance',
|
|
93
97
|
97 => 'High Frequency Flicker Reduction',
|
|
94
98
|
98 => 'Switch FX/DX',
|
|
95
99
|
99 => 'View Mode (Photo LV)',
|
|
@@ -104,7 +108,25 @@ $VERSION = '1.24';
|
|
|
104
108
|
110 => 'DISP - Cycle Information Display (playback)', # Playback mode
|
|
105
109
|
111 => 'Resume Shooting',
|
|
106
110
|
112 => 'Switch Eyes',
|
|
111
|
+
113 => 'Power Zoom +',
|
|
112
|
+
114 => 'Power Zoom -',
|
|
107
113
|
115 => 'Delete',
|
|
114
|
+
116 => 'Pixel Shift Shooting',
|
|
115
|
+
117 => 'Cycle AF-area Mode',
|
|
116
|
+
118 => 'Raw Processing (Current)', #118-131 are Retouch options
|
|
117
|
+
119 => 'Raw Processing (Multiple)',
|
|
118
|
+
120 => 'Trim',
|
|
119
|
+
121 => 'Resize (Current)',
|
|
120
|
+
122 => 'Resize (Multiple)',
|
|
121
|
+
123 => 'D-Lighting',
|
|
122
|
+
124 => 'Straighten',
|
|
123
|
+
125 => 'Distortion Control',
|
|
124
|
+
126 => 'Perspective Control',
|
|
125
|
+
127 => 'Monochrome',
|
|
126
|
+
128 => 'Overlay (Add)',
|
|
127
|
+
129 => 'Lighten',
|
|
128
|
+
130 => 'Darken',
|
|
129
|
+
131 => 'Motion Blend',
|
|
108
130
|
},
|
|
109
131
|
);
|
|
110
132
|
my %dialsZ9 = (
|
|
@@ -118,6 +140,18 @@ my %dialsZ9 = (
|
|
|
118
140
|
7 => 'Rating',
|
|
119
141
|
8 => 'Page',
|
|
120
142
|
9 => 'Skip To First Shot In Series',
|
|
143
|
+
10 => 'Uploaded to FTP',
|
|
144
|
+
11 => 'Uploaded to Computer',
|
|
145
|
+
);
|
|
146
|
+
my %dialsVideoZ9 = (
|
|
147
|
+
0 => '2 s',
|
|
148
|
+
1 => '5 s',
|
|
149
|
+
2 => '10 s',
|
|
150
|
+
3 => '1 Frame',
|
|
151
|
+
4 => '5 Frames',
|
|
152
|
+
5 => '10 Frames',
|
|
153
|
+
6 => 'First/Last Frame',
|
|
154
|
+
7 => 'Playback Speed',
|
|
121
155
|
);
|
|
122
156
|
my %evfGridsZ9 = (
|
|
123
157
|
0 => '3x3',
|
|
@@ -9974,6 +10008,9 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9974
10008
|
421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
|
|
9975
10009
|
423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
|
|
9976
10010
|
437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
|
|
10011
|
+
453 => { Name => 'WBButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
10012
|
+
461 => { Name => 'CommandDialVideoPlaybackMode', PrintConv => \%dialsVideoZ9, Unknown => 1}, # CSf3-b
|
|
10013
|
+
465 => { Name => 'SubCommandDialVideoPlaybackMode', PrintConv => \%dialsVideoZ9, Unknown => 1}, # CSf3-b
|
|
9977
10014
|
467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
|
|
9978
10015
|
459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
|
|
9979
10016
|
463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
|
|
@@ -10055,6 +10092,11 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
10055
10092
|
},
|
|
10056
10093
|
681 => { Name => 'ViewModeShowEffectsOfSettings', PrintConv => { 0=>'Always', 1=> 'Only When Flash Not Used'}, Unknown => 1 }, #CS8-a
|
|
10057
10094
|
683 => { Name => 'DispButton', %buttonsZ9}, #CSf2
|
|
10095
|
+
753 => { #CSd5
|
|
10096
|
+
Name => 'ExposureDelay',
|
|
10097
|
+
Format => 'int16u',
|
|
10098
|
+
PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
|
|
10099
|
+
},
|
|
10058
10100
|
);
|
|
10059
10101
|
|
|
10060
10102
|
# Z9 custom settings (ref 1) #base at offset26 + 1035 (firmware 1.0.0)
|
|
@@ -10806,7 +10848,19 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
10806
10848
|
471 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
|
|
10807
10849
|
477 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
|
|
10808
10850
|
483 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
|
|
10851
|
+
485 => { # CSf3-m2
|
|
10852
|
+
Name => 'CommandDialVideoPlaybackMode',
|
|
10853
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
|
10854
|
+
PrintConv => \%dialsVideoZ9,
|
|
10855
|
+
Unknown => 1
|
|
10856
|
+
},
|
|
10809
10857
|
487 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
|
|
10858
|
+
489 => { # CSf3-n2
|
|
10859
|
+
Name => 'SubCommandDialVideoPlaybackMode',
|
|
10860
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
|
10861
|
+
PrintConv => \%dialsVideoZ9,
|
|
10862
|
+
Unknown => 1
|
|
10863
|
+
},
|
|
10810
10864
|
491 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
|
|
10811
10865
|
493 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
|
|
10812
10866
|
505 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
|
|
@@ -197,6 +197,7 @@ my %olympusLensTypes = (
|
|
|
197
197
|
# '65535 07 40' - Seen for LUMIX S 16-35/F4 on Panasonic DC-S1H (ref PH)
|
|
198
198
|
# Other makes
|
|
199
199
|
'24 01 10' => 'Venus Optics Laowa 50mm F2.8 2x Macro', #DonKomarechka
|
|
200
|
+
'f7 03 10' => 'LAOWA C&D-Dreamer MFT 7.5mm F2.0', #forum3833
|
|
200
201
|
);
|
|
201
202
|
|
|
202
203
|
# lookup for Olympus camera types (ref PH)
|