exiftool_vendored 12.80.0 → 12.81.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 +26 -0
- data/bin/MANIFEST +2 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/exiftool +25 -9
- data/bin/lib/Image/ExifTool/CanonVRD.pm +2 -2
- data/bin/lib/Image/ExifTool/FujiFilm.pm +13 -7
- data/bin/lib/Image/ExifTool/Geolocation.pm +294 -134
- 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 +329 -21
- 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 +12 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +1 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4791 -4776
- data/bin/lib/Image/ExifTool/TagNames.pod +542 -383
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +28 -8
- data/bin/lib/Image/ExifTool/Writer.pl +8 -2
- data/bin/lib/Image/ExifTool/XMP.pm +1 -0
- data/bin/lib/Image/ExifTool.pm +51 -37
- data/bin/lib/Image/ExifTool.pod +6 -0
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -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.31';
|
|
69
69
|
|
|
70
70
|
sub LensIDConv($$$);
|
|
71
71
|
sub ProcessNikonAVI($$$);
|
|
@@ -890,6 +890,12 @@ my %bracketProgramZ9 = (
|
|
|
890
890
|
9 => '9F',
|
|
891
891
|
);
|
|
892
892
|
|
|
893
|
+
my %dialsFrameAdvanceZoomPositionZ9 = (
|
|
894
|
+
0 => 'Hold',
|
|
895
|
+
1 => 'Focus Point',
|
|
896
|
+
2 => 'Face Priority',
|
|
897
|
+
);
|
|
898
|
+
|
|
893
899
|
my %dynamicAfAreaModesZ9 = (
|
|
894
900
|
0 => 'Small',
|
|
895
901
|
1 => 'Medium',
|
|
@@ -949,6 +955,7 @@ my %highFrameRateZ9 = (
|
|
|
949
955
|
3 => 'C30',
|
|
950
956
|
5 => 'C60',
|
|
951
957
|
4 => 'C120',
|
|
958
|
+
6 => 'C15',
|
|
952
959
|
);
|
|
953
960
|
|
|
954
961
|
my %imageAreaD6 = (
|
|
@@ -1118,6 +1125,12 @@ my %movieFrameSizeZ9 = (
|
|
|
1118
1125
|
3 => '7680x4320',
|
|
1119
1126
|
);
|
|
1120
1127
|
|
|
1128
|
+
my %movieSlowMotion = (
|
|
1129
|
+
0 => 'Off',
|
|
1130
|
+
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]
|
|
1131
|
+
2 => 'On (5x)', # 120p recording with playback @ 24p [1920 x 1080; 20p x 5]
|
|
1132
|
+
);
|
|
1133
|
+
|
|
1121
1134
|
my %movieToneMapZ9 = (
|
|
1122
1135
|
0 => 'SDR',
|
|
1123
1136
|
1 => 'HLG',
|
|
@@ -1125,7 +1138,7 @@ my %movieToneMapZ9 = (
|
|
|
1125
1138
|
);
|
|
1126
1139
|
|
|
1127
1140
|
my %movieTypeZ9 = (
|
|
1128
|
-
1 => 'H.
|
|
1141
|
+
1 => 'H.264 8-bit (MP4)',
|
|
1129
1142
|
2 => 'H.265 8-bit (MOV)',
|
|
1130
1143
|
3 => 'H.265 10-bit (MOV)',
|
|
1131
1144
|
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
|
@@ -1172,6 +1185,22 @@ my %offLowNormalHighZ7 = (
|
|
|
1172
1185
|
3 => 'High',
|
|
1173
1186
|
);
|
|
1174
1187
|
|
|
1188
|
+
my %pixelShiftDelay = (
|
|
1189
|
+
0 => 'Off',
|
|
1190
|
+
1 => '1 s',
|
|
1191
|
+
2 => '2 s',
|
|
1192
|
+
3 => '3 s',
|
|
1193
|
+
4 => '5 s',
|
|
1194
|
+
5 => '10 s',
|
|
1195
|
+
);
|
|
1196
|
+
|
|
1197
|
+
my %pixelShiftNumberShots = (
|
|
1198
|
+
0 => '4',
|
|
1199
|
+
1 => '8',
|
|
1200
|
+
2 => '16',
|
|
1201
|
+
3 => '32',
|
|
1202
|
+
);
|
|
1203
|
+
|
|
1175
1204
|
my %portraitImpressionBalanceZ8 = (
|
|
1176
1205
|
0 => 'Off',
|
|
1177
1206
|
1 => 'Mode 1',
|
|
@@ -8382,7 +8411,7 @@ my %nikonFocalConversions = (
|
|
|
8382
8411
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
8383
8412
|
VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
|
|
8384
8413
|
DATAMEMBER => [ 0x04 ],
|
|
8385
|
-
IS_SUBDIR => [ 0x30, 0x84, 0x8c ],
|
|
8414
|
+
IS_SUBDIR => [ 0x30, 0x80, 0x84, 0x8c ],
|
|
8386
8415
|
WRITABLE => 1,
|
|
8387
8416
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8388
8417
|
NOTES => 'These tags are extracted from encrypted data in images from the Z8.',
|
|
@@ -8425,6 +8454,16 @@ my %nikonFocalConversions = (
|
|
|
8425
8454
|
Start => '$val',
|
|
8426
8455
|
},
|
|
8427
8456
|
},
|
|
8457
|
+
0x80 => {
|
|
8458
|
+
Name => 'AutoCaptureOffset',
|
|
8459
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
|
8460
|
+
Format => 'int32u',
|
|
8461
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
|
8462
|
+
SubDirectory => {
|
|
8463
|
+
TagTable => 'Image::ExifTool::Nikon::AutoCaptureInfo',
|
|
8464
|
+
Start => '$val',
|
|
8465
|
+
},
|
|
8466
|
+
},
|
|
8428
8467
|
0x84 => {
|
|
8429
8468
|
Name => 'OrientOffset',
|
|
8430
8469
|
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
|
@@ -8709,13 +8748,24 @@ my %nikonFocalConversions = (
|
|
|
8709
8748
|
0x10 => [
|
|
8710
8749
|
{
|
|
8711
8750
|
Name => 'MenuSettingsOffsetZ8',
|
|
8751
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "02.00"',
|
|
8712
8752
|
Format => 'int32u',
|
|
8713
|
-
Notes => 'Firmware versions 1.0.0',
|
|
8753
|
+
Notes => 'Firmware versions 1.0.0 and 1.1.0',
|
|
8714
8754
|
SubDirectory => {
|
|
8715
8755
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
|
|
8716
8756
|
Start => '$dirStart + $val',
|
|
8717
8757
|
},
|
|
8718
8758
|
},
|
|
8759
|
+
{
|
|
8760
|
+
Name => 'MenuSettingsOffsetZ8v2',
|
|
8761
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
|
|
8762
|
+
Notes => 'Firmware version 2.0',
|
|
8763
|
+
Format => 'int32u',
|
|
8764
|
+
SubDirectory => {
|
|
8765
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8v2',
|
|
8766
|
+
Start => '$dirStart + $val',
|
|
8767
|
+
},
|
|
8768
|
+
},
|
|
8719
8769
|
],
|
|
8720
8770
|
);
|
|
8721
8771
|
|
|
@@ -9065,15 +9115,7 @@ my %nikonFocalConversions = (
|
|
|
9065
9115
|
#463 => SilentPhotography
|
|
9066
9116
|
502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9067
9117
|
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
|
-
},
|
|
9118
|
+
506 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 },
|
|
9077
9119
|
510 => {
|
|
9078
9120
|
Name => 'MovieType',
|
|
9079
9121
|
Unknown => 1,
|
|
@@ -9284,7 +9326,7 @@ my %nikonFocalConversions = (
|
|
|
9284
9326
|
},
|
|
9285
9327
|
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
|
9286
9328
|
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
|
9287
|
-
636 => { Name => '
|
|
9329
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9288
9330
|
730 => {
|
|
9289
9331
|
Name => 'MovieImageArea',
|
|
9290
9332
|
Unknown => 1,
|
|
@@ -9333,7 +9375,7 @@ my %nikonFocalConversions = (
|
|
|
9333
9375
|
Format => 'undef[730]',
|
|
9334
9376
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
|
9335
9377
|
},
|
|
9336
|
-
|
|
9378
|
+
1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9337
9379
|
1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9338
9380
|
1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9339
9381
|
1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
@@ -9384,6 +9426,260 @@ my %nikonFocalConversions = (
|
|
|
9384
9426
|
1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
9385
9427
|
1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
9386
9428
|
);
|
|
9429
|
+
%Image::ExifTool::Nikon::MenuSettingsZ8v2 = (
|
|
9430
|
+
%binaryDataAttrs,
|
|
9431
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9432
|
+
DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596, 2046 ],
|
|
9433
|
+
IS_SUBDIR => [ 943 ],
|
|
9434
|
+
NOTES => 'These tags are used by the Z8 firmware 1.00.',
|
|
9435
|
+
72 => {
|
|
9436
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9437
|
+
PrintConv => \%highFrameRateZ9,
|
|
9438
|
+
},
|
|
9439
|
+
152 => {
|
|
9440
|
+
Name => 'MultipleExposureMode',
|
|
9441
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
|
9442
|
+
PrintConv => \%multipleExposureModeZ9,
|
|
9443
|
+
},
|
|
9444
|
+
154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
|
9445
|
+
184 => {
|
|
9446
|
+
Name => 'IntervalDurationHours',
|
|
9447
|
+
Format => 'int32u',
|
|
9448
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9449
|
+
},
|
|
9450
|
+
188 => {
|
|
9451
|
+
Name => 'IntervalDurationMinutes',
|
|
9452
|
+
Format => 'int32u',
|
|
9453
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9454
|
+
},
|
|
9455
|
+
192 => {
|
|
9456
|
+
Name => 'IntervalDurationSeconds',
|
|
9457
|
+
Format => 'int32u',
|
|
9458
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9459
|
+
},
|
|
9460
|
+
200 => {
|
|
9461
|
+
Name => 'Intervals',
|
|
9462
|
+
Format => 'int32u',
|
|
9463
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
9464
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9465
|
+
},
|
|
9466
|
+
204 => {
|
|
9467
|
+
Name => 'ShotsPerInterval',
|
|
9468
|
+
Format => 'int32u',
|
|
9469
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
9470
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9471
|
+
},
|
|
9472
|
+
208 => {
|
|
9473
|
+
Name => 'IntervalExposureSmoothing',
|
|
9474
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9475
|
+
Format => 'int8u',
|
|
9476
|
+
PrintConv => \%offOn,
|
|
9477
|
+
},
|
|
9478
|
+
210 => {
|
|
9479
|
+
Name => 'IntervalPriority',
|
|
9480
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9481
|
+
Format => 'int8u',
|
|
9482
|
+
PrintConv => \%offOn,
|
|
9483
|
+
},
|
|
9484
|
+
244 => {
|
|
9485
|
+
Name => 'FocusShiftNumberShots', #1-300
|
|
9486
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
|
9487
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9488
|
+
},
|
|
9489
|
+
248 => {
|
|
9490
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
|
9491
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9492
|
+
},
|
|
9493
|
+
252 => {
|
|
9494
|
+
Name => 'FocusShiftInterval',
|
|
9495
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9496
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
|
9497
|
+
},
|
|
9498
|
+
256 => {
|
|
9499
|
+
Name => 'FocusShiftExposureLock',
|
|
9500
|
+
Unknown => 1,
|
|
9501
|
+
PrintConv => \%offOn,
|
|
9502
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9503
|
+
},
|
|
9504
|
+
286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
|
9505
|
+
288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
|
9506
|
+
324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
|
9507
|
+
338 => { Name => 'AutoISO', PrintConv => \%offOn },
|
|
9508
|
+
340 => {
|
|
9509
|
+
Name => 'ISOAutoHiLimit',
|
|
9510
|
+
Format => 'int16u',
|
|
9511
|
+
Unknown => 1,
|
|
9512
|
+
ValueConv => '($val-104)/8',
|
|
9513
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9514
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9515
|
+
},
|
|
9516
|
+
342 => {
|
|
9517
|
+
Name => 'ISOAutoFlashLimit',
|
|
9518
|
+
Format => 'int16u',
|
|
9519
|
+
Unknown => 1,
|
|
9520
|
+
ValueConv => '($val-104)/8',
|
|
9521
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9522
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9523
|
+
},
|
|
9524
|
+
350 => {
|
|
9525
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
|
9526
|
+
ValueConv => '$val / 8',
|
|
9527
|
+
Format => 'int16s',
|
|
9528
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
|
9529
|
+
},
|
|
9530
|
+
432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9531
|
+
434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
9532
|
+
436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
|
9533
|
+
440 => {
|
|
9534
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
|
9535
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
|
9536
|
+
PrintConv => \%flashControlModeZ7,
|
|
9537
|
+
},
|
|
9538
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
|
9539
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
9540
|
+
554 => {
|
|
9541
|
+
Name => 'BracketSet',
|
|
9542
|
+
RawConv => '$$self{BracketSet} = $val',
|
|
9543
|
+
PrintConv => \%bracketSetZ9,
|
|
9544
|
+
},
|
|
9545
|
+
556 => {
|
|
9546
|
+
Name => 'BracketProgram',
|
|
9547
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9548
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9549
|
+
PrintConv => \%bracketProgramZ9,
|
|
9550
|
+
},
|
|
9551
|
+
558 => {
|
|
9552
|
+
Name => 'BracketIncrement',
|
|
9553
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9554
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9555
|
+
PrintConv => \%bracketIncrementZ9,
|
|
9556
|
+
},
|
|
9557
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
|
9558
|
+
#572 HDRSaveRaw 0=> No; 1=> Yes
|
|
9559
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
|
9560
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
|
9561
|
+
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
|
9562
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
|
9563
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
9564
|
+
596 => {
|
|
9565
|
+
Name => 'DynamicAFAreaSize',
|
|
9566
|
+
Condition => '$$self{AFAreaMode} == 2',
|
|
9567
|
+
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9568
|
+
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9569
|
+
},
|
|
9570
|
+
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
|
9571
|
+
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
|
9572
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9573
|
+
730 => {
|
|
9574
|
+
Name => 'MovieImageArea',
|
|
9575
|
+
Unknown => 1,
|
|
9576
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
|
9577
|
+
PrintConv => \%imageAreaZ9b,
|
|
9578
|
+
},
|
|
9579
|
+
#736 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 }, #only valid for MovieType H.264 8-bit
|
|
9580
|
+
740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
|
9581
|
+
742 => {
|
|
9582
|
+
Name => 'MovieISOAutoHiLimit',
|
|
9583
|
+
Format => 'int16u',
|
|
9584
|
+
Unknown => 1,
|
|
9585
|
+
ValueConv => '($val-104)/8',
|
|
9586
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9587
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9588
|
+
},
|
|
9589
|
+
744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9590
|
+
746 => {
|
|
9591
|
+
Name => 'MovieISOAutoManualMode',
|
|
9592
|
+
Format => 'int16u',
|
|
9593
|
+
Unknown => 1,
|
|
9594
|
+
ValueConv => '($val-104)/8',
|
|
9595
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9596
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9597
|
+
},
|
|
9598
|
+
820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
9599
|
+
822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9600
|
+
828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
|
9601
|
+
830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
|
9602
|
+
832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
9603
|
+
834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
|
9604
|
+
836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
|
9605
|
+
840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9606
|
+
842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
|
9607
|
+
844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
|
9608
|
+
846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9609
|
+
848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
|
9610
|
+
850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
|
9611
|
+
878 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9612
|
+
880 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
9613
|
+
886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
9614
|
+
887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
9615
|
+
888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
|
9616
|
+
896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
|
9617
|
+
943 => {
|
|
9618
|
+
Name => 'CustomSettingsZ8',
|
|
9619
|
+
Format => 'undef[755]',
|
|
9620
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
|
9621
|
+
},
|
|
9622
|
+
1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9623
|
+
1700 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9624
|
+
1706 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9625
|
+
1728 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
9626
|
+
1732 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
|
9627
|
+
1734 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9628
|
+
1736 => { Name => 'NonCPULens3FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9629
|
+
1738 => { Name => 'NonCPULens4FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9630
|
+
1740 => { Name => 'NonCPULens5FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9631
|
+
1742 => { Name => 'NonCPULens6FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9632
|
+
1744 => { Name => 'NonCPULens7FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9633
|
+
1746 => { Name => 'NonCPULens8FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9634
|
+
1748 => { Name => 'NonCPULens9FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9635
|
+
1750 => { Name => 'NonCPULens10FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9636
|
+
1752 => { Name => 'NonCPULens11FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9637
|
+
1754 => { Name => 'NonCPULens12FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9638
|
+
1756 => { Name => 'NonCPULens13FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9639
|
+
1758 => { Name => 'NonCPULens14FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9640
|
+
1760 => { Name => 'NonCPULens15FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9641
|
+
1762 => { Name => 'NonCPULens16FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9642
|
+
1764 => { Name => 'NonCPULens17FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9643
|
+
1766 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9644
|
+
1768 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9645
|
+
1770 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9646
|
+
1812 => { Name => 'NonCPULens1MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9647
|
+
1816 => { Name => 'NonCPULens2MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9648
|
+
1820 => { Name => 'NonCPULens3MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9649
|
+
1824 => { Name => 'NonCPULens4MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9650
|
+
1828 => { Name => 'NonCPULens5MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9651
|
+
1832 => { Name => 'NonCPULens6MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9652
|
+
1836 => { Name => 'NonCPULens7MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9653
|
+
1840 => { Name => 'NonCPULens8MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9654
|
+
1844 => { Name => 'NonCPULens9MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9655
|
+
1848 => { Name => 'NonCPULens10MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9656
|
+
1852 => { Name => 'NonCPULens11MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9657
|
+
1856 => { Name => 'NonCPULens12MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9658
|
+
1860 => { Name => 'NonCPULens13MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9659
|
+
1864 => { Name => 'NonCPULens14MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9660
|
+
1868 => { Name => 'NonCPULens15MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9661
|
+
1872 => { Name => 'NonCPULens16MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9662
|
+
1876 => { Name => 'NonCPULens17MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9663
|
+
1880 => { Name => 'NonCPULens18MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9664
|
+
1884 => { Name => 'NonCPULens19MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9665
|
+
1888 => { Name => 'NonCPULens20MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
|
|
9666
|
+
1824 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
|
9667
|
+
1842 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9668
|
+
1843 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
|
9669
|
+
1878 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9670
|
+
1906 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
9671
|
+
1915 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
9672
|
+
2046 => { Name => 'PixelShiftShooting', RawConv => '$$self{PixelShiftShooting} = $val', PrintConv => \%multipleExposureModeZ9 }, #off/on/on (series)
|
|
9673
|
+
2048 => { Name => 'PixelShiftNumberShots', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftNumberShots },
|
|
9674
|
+
2050 => { Name => 'PixelShiftDelay', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftDelay },
|
|
9675
|
+
2052 => { Name => 'PlaybackButton', %buttonsZ9 }, #CSf2
|
|
9676
|
+
2054 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
|
9677
|
+
2056 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
|
9678
|
+
2058 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9679
|
+
2060 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9680
|
+
2062 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9681
|
+
2064 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
9682
|
+
);
|
|
9387
9683
|
%Image::ExifTool::Nikon::MenuSettingsZ9 = (
|
|
9388
9684
|
%binaryDataAttrs,
|
|
9389
9685
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
@@ -9733,7 +10029,7 @@ my %nikonFocalConversions = (
|
|
|
9733
10029
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9734
10030
|
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9735
10031
|
},
|
|
9736
|
-
636 => { Name => '
|
|
10032
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9737
10033
|
646 => {
|
|
9738
10034
|
Name => 'MovieImageArea',
|
|
9739
10035
|
Unknown => 1,
|
|
@@ -9833,7 +10129,7 @@ my %nikonFocalConversions = (
|
|
|
9833
10129
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9834
10130
|
DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
|
|
9835
10131
|
IS_SUBDIR => [ 847 ],
|
|
9836
|
-
NOTES => 'These tags are used by the Z9 firmware
|
|
10132
|
+
NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0',
|
|
9837
10133
|
72 => {
|
|
9838
10134
|
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9839
10135
|
PrintConv => \%highFrameRateZ9,
|
|
@@ -9970,7 +10266,7 @@ my %nikonFocalConversions = (
|
|
|
9970
10266
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9971
10267
|
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9972
10268
|
},
|
|
9973
|
-
636 => { Name => '
|
|
10269
|
+
636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9974
10270
|
646 => {
|
|
9975
10271
|
Name => 'MovieImageArea',
|
|
9976
10272
|
Unknown => 1,
|
|
@@ -10116,6 +10412,18 @@ my %nikonFocalConversions = (
|
|
|
10116
10412
|
Format => 'fixed32u',
|
|
10117
10413
|
PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
|
|
10118
10414
|
},
|
|
10415
|
+
2052 => { #CSf2-m3
|
|
10416
|
+
Name => 'CommandDialFrameAdvanceZoom',
|
|
10417
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
|
10418
|
+
PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
|
|
10419
|
+
Unknown => 1
|
|
10420
|
+
},
|
|
10421
|
+
2054 => { #CSf2-n3
|
|
10422
|
+
Name => 'SubCommandDialFrameAdvanceZoom',
|
|
10423
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
|
|
10424
|
+
PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
|
|
10425
|
+
Unknown => 1
|
|
10426
|
+
},
|
|
10119
10427
|
2056 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
|
|
10120
10428
|
2058 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
|
10121
10429
|
2060 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
|
@@ -11406,7 +11714,7 @@ my %nikonFocalConversions = (
|
|
|
11406
11714
|
},
|
|
11407
11715
|
);
|
|
11408
11716
|
|
|
11409
|
-
# MakerNotes0x56 - burst info for Z9
|
|
11717
|
+
# MakerNotes0x56 - burst info for Z8 and Z9
|
|
11410
11718
|
%Image::ExifTool::Nikon::MakerNotes0x56 = (
|
|
11411
11719
|
%binaryDataAttrs,
|
|
11412
11720
|
GROUPS => { 0 => 'MakerNotes' },
|
|
@@ -11416,7 +11724,7 @@ my %nikonFocalConversions = (
|
|
|
11416
11724
|
Writable => 0,
|
|
11417
11725
|
},
|
|
11418
11726
|
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.
|
|
11727
|
+
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
11728
|
Format => 'int16u'
|
|
11421
11729
|
},
|
|
11422
11730
|
);
|
|
@@ -11440,7 +11748,7 @@ my %nikonFocalConversions = (
|
|
|
11440
11748
|
Name => 'VignetteInfo', # Z-series vignette correction information
|
|
11441
11749
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::VignetteInfo' },
|
|
11442
11750
|
},
|
|
11443
|
-
# 0x07 - undef[104]
|
|
11751
|
+
# 0x07 - undef[104] #possibly Z-series diffration correction information (#28)
|
|
11444
11752
|
# 0x08 - undef[24]
|
|
11445
11753
|
# 0x09 - undef[36]
|
|
11446
11754
|
);
|