exiftool_vendored 12.80.0 → 12.82.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +44 -0
- data/bin/MANIFEST +4 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/exiftool +35 -13
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +44 -31
- data/bin/lib/Image/ExifTool/CanonVRD.pm +2 -2
- data/bin/lib/Image/ExifTool/FujiFilm.pm +20 -7
- data/bin/lib/Image/ExifTool/GM.pm +543 -0
- data/bin/lib/Image/ExifTool/Geolocation.pm +332 -149
- data/bin/lib/Image/ExifTool/Geotag.pm +9 -4
- data/bin/lib/Image/ExifTool/M2TS.pm +32 -4
- data/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +331 -22
- data/bin/lib/Image/ExifTool/NikonCustom.pm +55 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +1 -0
- data/bin/lib/Image/ExifTool/OpenEXR.pm +21 -3
- data/bin/lib/Image/ExifTool/PNG.pm +3 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +40 -24
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +61 -30
- data/bin/lib/Image/ExifTool/README +2 -0
- data/bin/lib/Image/ExifTool/Sony.pm +1 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4815 -4775
- data/bin/lib/Image/ExifTool/TagNames.pod +931 -617
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -8
- data/bin/lib/Image/ExifTool/Writer.pl +10 -4
- data/bin/lib/Image/ExifTool/XMP.pm +4 -2
- data/bin/lib/Image/ExifTool.pm +77 -41
- data/bin/lib/Image/ExifTool.pod +24 -11
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -29,7 +29,7 @@ use vars qw($VERSION);
|
|
29
29
|
use Image::ExifTool qw(:Public);
|
30
30
|
use Image::ExifTool::GPS;
|
31
31
|
|
32
|
-
$VERSION = '1.
|
32
|
+
$VERSION = '1.75';
|
33
33
|
|
34
34
|
sub JITTER() { return 2 } # maximum time jitter
|
35
35
|
|
@@ -1221,9 +1221,14 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
|
|
1221
1221
|
# also Geolocate if specified
|
1222
1222
|
my $nvHash;
|
1223
1223
|
my $geoloc = $et->GetNewValue('Geolocate', \$nvHash);
|
1224
|
-
if ($geoloc and
|
1225
|
-
$
|
1226
|
-
|
1224
|
+
if ($geoloc and $geoloc =~ /\bgeotag\b/i) {
|
1225
|
+
my $tag = ($$nvHash{WantGroup} ? "$$nvHash{WantGroup}:" : '') . 'Geolocate';
|
1226
|
+
# pass along any regular expressions to qualify geolocation search
|
1227
|
+
my $parms = join ',', grep m(/), split /\s*,\s*/, $geoloc;
|
1228
|
+
$parms and $parms = ",$parms,both";
|
1229
|
+
$et->SetNewValue($tag => "$$fix{lat},$$fix{lon}$parms");
|
1230
|
+
# (the Geolocate tag will be restored to its original value
|
1231
|
+
# by RestoreNewValues before the next file in batch processing)
|
1227
1232
|
}
|
1228
1233
|
return $err if $qt; # all done if writing to QuickTime only
|
1229
1234
|
# (capture error messages by calling SetNewValue in list context)
|
@@ -32,7 +32,7 @@ use strict;
|
|
32
32
|
use vars qw($VERSION);
|
33
33
|
use Image::ExifTool qw(:DataAccess :Utils);
|
34
34
|
|
35
|
-
$VERSION = '1.
|
35
|
+
$VERSION = '1.25';
|
36
36
|
|
37
37
|
# program map table "stream_type" lookup (ref 6/1/9)
|
38
38
|
my %streamType = (
|
@@ -379,7 +379,7 @@ sub ParsePID($$$$$)
|
|
379
379
|
$et->HandleTag($tagTbl, Accelerometer => "@acc");
|
380
380
|
}
|
381
381
|
SetByteOrder('MM');
|
382
|
-
$$et{
|
382
|
+
$$et{FoundGoodGPS} = 1; # (necessary to skip over empty/unknown INNOV records)
|
383
383
|
$more = 1;
|
384
384
|
} elsif ($$dataPt =~ /^\$(GPSINFO|GSNRINFO),/) {
|
385
385
|
# $GPSINFO,0x0004,2021.08.09 13:27:36,2341.54561,12031.70135,8.0,51,153,0,0,\x0d
|
@@ -481,7 +481,35 @@ sub ParsePID($$$$$)
|
|
481
481
|
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
482
482
|
SetByteOrder('MM');
|
483
483
|
$more = 1;
|
484
|
-
} elsif ($$
|
484
|
+
} elsif (length($$dataPt) >= 64 and substr($$dataPt, 32, 2) eq '$S') {
|
485
|
+
# DOD_LS600W.TS
|
486
|
+
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
487
|
+
# find the earliest sample time in the cyclical list
|
488
|
+
my ($n, $last) = (32, "\0");
|
489
|
+
for (my $i=32; $i<length($$dataPt)-32; $i+=32) {
|
490
|
+
last unless substr($$dataPt, $n, 2) eq '$S';
|
491
|
+
my $dateTime = substr($$dataPt, $i+6, 8);
|
492
|
+
$last gt $dateTime and $n = $i, last; # earliest sample if time goes backwards
|
493
|
+
$last = $dateTime;
|
494
|
+
}
|
495
|
+
for (my $i=32; $i<length($$dataPt)-32; $i+=32, $n+=32) {
|
496
|
+
$n = 32 if $n > length($$dataPt)-32;
|
497
|
+
last unless substr($$dataPt, $n, 2) eq '$S';
|
498
|
+
my @a = unpack("x${n}nnnnCCCCnCNNC", $$dataPt);
|
499
|
+
$a[8] /= 10; # 1/10 sec
|
500
|
+
$a[2] += (36000 - 65536) if $a[2] & 0x8000; # convert signed integer into range 0-36000
|
501
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
502
|
+
$et->HandleTag($tagTbl, GPSDateTime => sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%04.1fZ', @a[3..8]));
|
503
|
+
$et->HandleTag($tagTbl, GPSLatitude => $a[10] * 1e-7);
|
504
|
+
$et->HandleTag($tagTbl, GPSLongitude => $a[11] * 1e-7);
|
505
|
+
$et->HandleTag($tagTbl, GPSSpeed => $a[1] * 0.036); # convert from metres per 100 s
|
506
|
+
$et->HandleTag($tagTbl, GPSTrack => $a[2] / 100);
|
507
|
+
}
|
508
|
+
# Note: 10 bytes after last GPS record look like a single 3-axis accelerometer reading:
|
509
|
+
# eg. fd ff 00 00 ff ff 00 00 01 00
|
510
|
+
$$et{FoundGoodGPS} = 1; # so we skip over unrecognized packets
|
511
|
+
$more = 1;
|
512
|
+
} elsif ($$et{FoundGoodGPS}) {
|
485
513
|
$more = 1;
|
486
514
|
}
|
487
515
|
delete $$et{DOC_NUM};
|
@@ -538,7 +566,7 @@ sub ProcessM2TS($$)
|
|
538
566
|
my %needPID = ( 0 => 1 ); # lookup for stream PID's that we still need to parse
|
539
567
|
# PID's that may contain GPS info
|
540
568
|
my %gpsPID = (
|
541
|
-
0x0300 => 1, # Novatek INNOVV
|
569
|
+
0x0300 => 1, # Novatek INNOVV, DOD_LS600W
|
542
570
|
0x01e4 => 1, # vsys a6l dashcam
|
543
571
|
0x0e1b => 1, # Jomise T860S-GM dashcam
|
544
572
|
);
|
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
|
|
21
21
|
sub WriteUnknownOrPreview($$$);
|
22
22
|
sub FixLeicaBase($$;$);
|
23
23
|
|
24
|
-
$VERSION = '2.
|
24
|
+
$VERSION = '2.16';
|
25
25
|
|
26
26
|
my $debug; # set to 1 to enable debugging code
|
27
27
|
|
@@ -195,7 +195,7 @@ my $debug; # set to 1 to enable debugging code
|
|
195
195
|
},
|
196
196
|
{
|
197
197
|
Name => 'MakerNoteHP4', # PhotoSmart M627
|
198
|
-
Condition => '$$valPt =~ /^IIII\x04\0/',
|
198
|
+
Condition => '$$valPt =~ /^IIII[\x04|\x05]\0/',
|
199
199
|
NotIFD => 1,
|
200
200
|
SubDirectory => {
|
201
201
|
TagTable => 'Image::ExifTool::HP::Type4',
|
@@ -245,7 +245,7 @@ my %sRegions = (
|
|
245
245
|
Copyright => { Groups => { 2 => 'Author' } },
|
246
246
|
Count => { },
|
247
247
|
CurrentBitrate => { },
|
248
|
-
Description => { },
|
248
|
+
Description => { Writable => 'Unicode', Avoid => 1 },
|
249
249
|
DisplayArtist => { },
|
250
250
|
DLNAServerUDN => { },
|
251
251
|
DLNASourceURI => { },
|
@@ -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.32';
|
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,7 +5499,7 @@ 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
|
@@ -8382,7 +8412,7 @@ my %nikonFocalConversions = (
|
|
8382
8412
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
8383
8413
|
VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
|
8384
8414
|
DATAMEMBER => [ 0x04 ],
|
8385
|
-
IS_SUBDIR => [ 0x30, 0x84, 0x8c ],
|
8415
|
+
IS_SUBDIR => [ 0x30, 0x80, 0x84, 0x8c ],
|
8386
8416
|
WRITABLE => 1,
|
8387
8417
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8388
8418
|
NOTES => 'These tags are extracted from encrypted data in images from the Z8.',
|
@@ -8425,6 +8455,16 @@ my %nikonFocalConversions = (
|
|
8425
8455
|
Start => '$val',
|
8426
8456
|
},
|
8427
8457
|
},
|
8458
|
+
0x80 => {
|
8459
|
+
Name => 'AutoCaptureOffset',
|
8460
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
8461
|
+
Format => 'int32u',
|
8462
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
8463
|
+
SubDirectory => {
|
8464
|
+
TagTable => 'Image::ExifTool::Nikon::AutoCaptureInfo',
|
8465
|
+
Start => '$val',
|
8466
|
+
},
|
8467
|
+
},
|
8428
8468
|
0x84 => {
|
8429
8469
|
Name => 'OrientOffset',
|
8430
8470
|
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
@@ -8709,13 +8749,24 @@ my %nikonFocalConversions = (
|
|
8709
8749
|
0x10 => [
|
8710
8750
|
{
|
8711
8751
|
Name => 'MenuSettingsOffsetZ8',
|
8752
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "02.00"',
|
8712
8753
|
Format => 'int32u',
|
8713
|
-
Notes => 'Firmware versions 1.0.0',
|
8754
|
+
Notes => 'Firmware versions 1.0.0 and 1.1.0',
|
8714
8755
|
SubDirectory => {
|
8715
8756
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
|
8716
8757
|
Start => '$dirStart + $val',
|
8717
8758
|
},
|
8718
8759
|
},
|
8760
|
+
{
|
8761
|
+
Name => 'MenuSettingsOffsetZ8v2',
|
8762
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
8763
|
+
Notes => 'Firmware version 2.0',
|
8764
|
+
Format => 'int32u',
|
8765
|
+
SubDirectory => {
|
8766
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8v2',
|
8767
|
+
Start => '$dirStart + $val',
|
8768
|
+
},
|
8769
|
+
},
|
8719
8770
|
],
|
8720
8771
|
);
|
8721
8772
|
|
@@ -9065,15 +9116,7 @@ my %nikonFocalConversions = (
|
|
9065
9116
|
#463 => SilentPhotography
|
9066
9117
|
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
9067
9118
|
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
|
-
},
|
9119
|
+
506 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 },
|
9077
9120
|
510 => {
|
9078
9121
|
Name => 'MovieType',
|
9079
9122
|
Unknown => 1,
|
@@ -9284,7 +9327,7 @@ my %nikonFocalConversions = (
|
|
9284
9327
|
},
|
9285
9328
|
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
9286
9329
|
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
9287
|
-
636 => { Name => '
|
9330
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
9288
9331
|
730 => {
|
9289
9332
|
Name => 'MovieImageArea',
|
9290
9333
|
Unknown => 1,
|
@@ -9333,7 +9376,7 @@ my %nikonFocalConversions = (
|
|
9333
9376
|
Format => 'undef[730]',
|
9334
9377
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
9335
9378
|
},
|
9336
|
-
|
9379
|
+
1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
9337
9380
|
1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
9338
9381
|
1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
9339
9382
|
1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
@@ -9384,6 +9427,260 @@ my %nikonFocalConversions = (
|
|
9384
9427
|
1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
9385
9428
|
1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
9386
9429
|
);
|
9430
|
+
%Image::ExifTool::Nikon::MenuSettingsZ8v2 = (
|
9431
|
+
%binaryDataAttrs,
|
9432
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9433
|
+
DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596, 2046 ],
|
9434
|
+
IS_SUBDIR => [ 943 ],
|
9435
|
+
NOTES => 'These tags are used by the Z8 firmware 1.00.',
|
9436
|
+
72 => {
|
9437
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
9438
|
+
PrintConv => \%highFrameRateZ9,
|
9439
|
+
},
|
9440
|
+
152 => {
|
9441
|
+
Name => 'MultipleExposureMode',
|
9442
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
9443
|
+
PrintConv => \%multipleExposureModeZ9,
|
9444
|
+
},
|
9445
|
+
154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
9446
|
+
184 => {
|
9447
|
+
Name => 'IntervalDurationHours',
|
9448
|
+
Format => 'int32u',
|
9449
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9450
|
+
},
|
9451
|
+
188 => {
|
9452
|
+
Name => 'IntervalDurationMinutes',
|
9453
|
+
Format => 'int32u',
|
9454
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9455
|
+
},
|
9456
|
+
192 => {
|
9457
|
+
Name => 'IntervalDurationSeconds',
|
9458
|
+
Format => 'int32u',
|
9459
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9460
|
+
},
|
9461
|
+
200 => {
|
9462
|
+
Name => 'Intervals',
|
9463
|
+
Format => 'int32u',
|
9464
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
9465
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9466
|
+
},
|
9467
|
+
204 => {
|
9468
|
+
Name => 'ShotsPerInterval',
|
9469
|
+
Format => 'int32u',
|
9470
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
9471
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9472
|
+
},
|
9473
|
+
208 => {
|
9474
|
+
Name => 'IntervalExposureSmoothing',
|
9475
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9476
|
+
Format => 'int8u',
|
9477
|
+
PrintConv => \%offOn,
|
9478
|
+
},
|
9479
|
+
210 => {
|
9480
|
+
Name => 'IntervalPriority',
|
9481
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9482
|
+
Format => 'int8u',
|
9483
|
+
PrintConv => \%offOn,
|
9484
|
+
},
|
9485
|
+
244 => {
|
9486
|
+
Name => 'FocusShiftNumberShots', #1-300
|
9487
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
9488
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9489
|
+
},
|
9490
|
+
248 => {
|
9491
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
9492
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9493
|
+
},
|
9494
|
+
252 => {
|
9495
|
+
Name => 'FocusShiftInterval',
|
9496
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9497
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
9498
|
+
},
|
9499
|
+
256 => {
|
9500
|
+
Name => 'FocusShiftExposureLock',
|
9501
|
+
Unknown => 1,
|
9502
|
+
PrintConv => \%offOn,
|
9503
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9504
|
+
},
|
9505
|
+
286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
9506
|
+
288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
9507
|
+
324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
9508
|
+
338 => { Name => 'AutoISO', PrintConv => \%offOn },
|
9509
|
+
340 => {
|
9510
|
+
Name => 'ISOAutoHiLimit',
|
9511
|
+
Format => 'int16u',
|
9512
|
+
Unknown => 1,
|
9513
|
+
ValueConv => '($val-104)/8',
|
9514
|
+
ValueConvInv => '8 * ($val + 104)',
|
9515
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9516
|
+
},
|
9517
|
+
342 => {
|
9518
|
+
Name => 'ISOAutoFlashLimit',
|
9519
|
+
Format => 'int16u',
|
9520
|
+
Unknown => 1,
|
9521
|
+
ValueConv => '($val-104)/8',
|
9522
|
+
ValueConvInv => '8 * ($val + 104)',
|
9523
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9524
|
+
},
|
9525
|
+
350 => {
|
9526
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
9527
|
+
ValueConv => '$val / 8',
|
9528
|
+
Format => 'int16s',
|
9529
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
9530
|
+
},
|
9531
|
+
432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
9532
|
+
434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
9533
|
+
436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
9534
|
+
440 => {
|
9535
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
9536
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
9537
|
+
PrintConv => \%flashControlModeZ7,
|
9538
|
+
},
|
9539
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
9540
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
9541
|
+
554 => {
|
9542
|
+
Name => 'BracketSet',
|
9543
|
+
RawConv => '$$self{BracketSet} = $val',
|
9544
|
+
PrintConv => \%bracketSetZ9,
|
9545
|
+
},
|
9546
|
+
556 => {
|
9547
|
+
Name => 'BracketProgram',
|
9548
|
+
Condition => '$$self{BracketSet} < 3',
|
9549
|
+
Notes => 'AE and/or Flash Bracketing',
|
9550
|
+
PrintConv => \%bracketProgramZ9,
|
9551
|
+
},
|
9552
|
+
558 => {
|
9553
|
+
Name => 'BracketIncrement',
|
9554
|
+
Condition => '$$self{BracketSet} < 3',
|
9555
|
+
Notes => 'AE and/or Flash Bracketing',
|
9556
|
+
PrintConv => \%bracketIncrementZ9,
|
9557
|
+
},
|
9558
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
9559
|
+
#572 HDRSaveRaw 0=> No; 1=> Yes
|
9560
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
9561
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
9562
|
+
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
9563
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
9564
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
9565
|
+
596 => {
|
9566
|
+
Name => 'DynamicAFAreaSize',
|
9567
|
+
Condition => '$$self{AFAreaMode} == 2',
|
9568
|
+
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
9569
|
+
PrintConv => \%dynamicAfAreaModesZ9,
|
9570
|
+
},
|
9571
|
+
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
9572
|
+
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
9573
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
9574
|
+
730 => {
|
9575
|
+
Name => 'MovieImageArea',
|
9576
|
+
Unknown => 1,
|
9577
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
9578
|
+
PrintConv => \%imageAreaZ9b,
|
9579
|
+
},
|
9580
|
+
#736 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 }, #only valid for MovieType H.264 8-bit
|
9581
|
+
740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
9582
|
+
742 => {
|
9583
|
+
Name => 'MovieISOAutoHiLimit',
|
9584
|
+
Format => 'int16u',
|
9585
|
+
Unknown => 1,
|
9586
|
+
ValueConv => '($val-104)/8',
|
9587
|
+
ValueConvInv => '8 * ($val + 104)',
|
9588
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9589
|
+
},
|
9590
|
+
744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
9591
|
+
746 => {
|
9592
|
+
Name => 'MovieISOAutoManualMode',
|
9593
|
+
Format => 'int16u',
|
9594
|
+
Unknown => 1,
|
9595
|
+
ValueConv => '($val-104)/8',
|
9596
|
+
ValueConvInv => '8 * ($val + 104)',
|
9597
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9598
|
+
},
|
9599
|
+
820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
9600
|
+
822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
9601
|
+
828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
9602
|
+
830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
9603
|
+
832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
9604
|
+
834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
9605
|
+
836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
9606
|
+
840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
9607
|
+
842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
9608
|
+
844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
9609
|
+
846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
9610
|
+
848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
9611
|
+
850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
9612
|
+
878 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
9613
|
+
880 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
9614
|
+
886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
9615
|
+
887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
9616
|
+
888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
9617
|
+
896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
9618
|
+
943 => {
|
9619
|
+
Name => 'CustomSettingsZ8',
|
9620
|
+
Format => 'undef[755]',
|
9621
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
9622
|
+
},
|
9623
|
+
1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
9624
|
+
1700 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
9625
|
+
1706 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
9626
|
+
1728 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
9627
|
+
1732 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
9628
|
+
1734 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9629
|
+
1736 => { Name => 'NonCPULens3FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9630
|
+
1738 => { Name => 'NonCPULens4FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9631
|
+
1740 => { Name => 'NonCPULens5FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9632
|
+
1742 => { Name => 'NonCPULens6FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9633
|
+
1744 => { Name => 'NonCPULens7FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9634
|
+
1746 => { Name => 'NonCPULens8FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9635
|
+
1748 => { Name => 'NonCPULens9FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9636
|
+
1750 => { Name => 'NonCPULens10FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9637
|
+
1752 => { Name => 'NonCPULens11FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9638
|
+
1754 => { Name => 'NonCPULens12FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9639
|
+
1756 => { Name => 'NonCPULens13FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9640
|
+
1758 => { Name => 'NonCPULens14FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9641
|
+
1760 => { Name => 'NonCPULens15FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9642
|
+
1762 => { Name => 'NonCPULens16FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9643
|
+
1764 => { Name => 'NonCPULens17FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9644
|
+
1766 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9645
|
+
1768 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9646
|
+
1770 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9647
|
+
1812 => { Name => 'NonCPULens1MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9648
|
+
1816 => { Name => 'NonCPULens2MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9649
|
+
1820 => { Name => 'NonCPULens3MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9650
|
+
1824 => { Name => 'NonCPULens4MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9651
|
+
1828 => { Name => 'NonCPULens5MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9652
|
+
1832 => { Name => 'NonCPULens6MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9653
|
+
1836 => { Name => 'NonCPULens7MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9654
|
+
1840 => { Name => 'NonCPULens8MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9655
|
+
1844 => { Name => 'NonCPULens9MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9656
|
+
1848 => { Name => 'NonCPULens10MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9657
|
+
1852 => { Name => 'NonCPULens11MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9658
|
+
1856 => { Name => 'NonCPULens12MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9659
|
+
1860 => { Name => 'NonCPULens13MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9660
|
+
1864 => { Name => 'NonCPULens14MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9661
|
+
1868 => { Name => 'NonCPULens15MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9662
|
+
1872 => { Name => 'NonCPULens16MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9663
|
+
1876 => { Name => 'NonCPULens17MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9664
|
+
1880 => { Name => 'NonCPULens18MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9665
|
+
1884 => { Name => 'NonCPULens19MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9666
|
+
1888 => { Name => 'NonCPULens20MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
9667
|
+
1824 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
9668
|
+
1842 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
9669
|
+
1843 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
9670
|
+
1878 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
|
9671
|
+
1906 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
9672
|
+
1915 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
9673
|
+
2046 => { Name => 'PixelShiftShooting', RawConv => '$$self{PixelShiftShooting} = $val', PrintConv => \%multipleExposureModeZ9 }, #off/on/on (series)
|
9674
|
+
2048 => { Name => 'PixelShiftNumberShots', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftNumberShots },
|
9675
|
+
2050 => { Name => 'PixelShiftDelay', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftDelay },
|
9676
|
+
2052 => { Name => 'PlaybackButton', %buttonsZ9 }, #CSf2
|
9677
|
+
2054 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
9678
|
+
2056 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
9679
|
+
2058 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
9680
|
+
2060 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
9681
|
+
2062 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
|
9682
|
+
2064 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
|
9683
|
+
);
|
9387
9684
|
%Image::ExifTool::Nikon::MenuSettingsZ9 = (
|
9388
9685
|
%binaryDataAttrs,
|
9389
9686
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
@@ -9733,7 +10030,7 @@ my %nikonFocalConversions = (
|
|
9733
10030
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
9734
10031
|
PrintConv => \%dynamicAfAreaModesZ9,
|
9735
10032
|
},
|
9736
|
-
636 => { Name => '
|
10033
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
9737
10034
|
646 => {
|
9738
10035
|
Name => 'MovieImageArea',
|
9739
10036
|
Unknown => 1,
|
@@ -9833,7 +10130,7 @@ my %nikonFocalConversions = (
|
|
9833
10130
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9834
10131
|
DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
|
9835
10132
|
IS_SUBDIR => [ 847 ],
|
9836
|
-
NOTES => 'These tags are used by the Z9 firmware
|
10133
|
+
NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0',
|
9837
10134
|
72 => {
|
9838
10135
|
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
9839
10136
|
PrintConv => \%highFrameRateZ9,
|
@@ -9970,7 +10267,7 @@ my %nikonFocalConversions = (
|
|
9970
10267
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
9971
10268
|
PrintConv => \%dynamicAfAreaModesZ9,
|
9972
10269
|
},
|
9973
|
-
636 => { Name => '
|
10270
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
9974
10271
|
646 => {
|
9975
10272
|
Name => 'MovieImageArea',
|
9976
10273
|
Unknown => 1,
|
@@ -10116,6 +10413,18 @@ my %nikonFocalConversions = (
|
|
10116
10413
|
Format => 'fixed32u',
|
10117
10414
|
PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
|
10118
10415
|
},
|
10416
|
+
2052 => { #CSf2-m3
|
10417
|
+
Name => 'CommandDialFrameAdvanceZoom',
|
10418
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
10419
|
+
PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
|
10420
|
+
Unknown => 1
|
10421
|
+
},
|
10422
|
+
2054 => { #CSf2-n3
|
10423
|
+
Name => 'SubCommandDialFrameAdvanceZoom',
|
10424
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
10425
|
+
PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
|
10426
|
+
Unknown => 1
|
10427
|
+
},
|
10119
10428
|
2056 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
|
10120
10429
|
2058 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
10121
10430
|
2060 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
@@ -11406,7 +11715,7 @@ my %nikonFocalConversions = (
|
|
11406
11715
|
},
|
11407
11716
|
);
|
11408
11717
|
|
11409
|
-
# MakerNotes0x56 - burst info for Z9
|
11718
|
+
# MakerNotes0x56 - burst info for Z8 and Z9
|
11410
11719
|
%Image::ExifTool::Nikon::MakerNotes0x56 = (
|
11411
11720
|
%binaryDataAttrs,
|
11412
11721
|
GROUPS => { 0 => 'MakerNotes' },
|
@@ -11416,7 +11725,7 @@ my %nikonFocalConversions = (
|
|
11416
11725
|
Writable => 0,
|
11417
11726
|
},
|
11418
11727
|
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.
|
11728
|
+
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
11729
|
Format => 'int16u'
|
11421
11730
|
},
|
11422
11731
|
);
|
@@ -11440,7 +11749,7 @@ my %nikonFocalConversions = (
|
|
11440
11749
|
Name => 'VignetteInfo', # Z-series vignette correction information
|
11441
11750
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::VignetteInfo' },
|
11442
11751
|
},
|
11443
|
-
# 0x07 - undef[104]
|
11752
|
+
# 0x07 - undef[104] #possibly Z-series diffration correction information (#28)
|
11444
11753
|
# 0x08 - undef[24]
|
11445
11754
|
# 0x09 - undef[36]
|
11446
11755
|
);
|