exiftool_vendored 12.80.0 → 12.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +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
|
);
|