exiftool_vendored 12.54.0 → 12.56.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 +34 -4
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +19 -19
- data/bin/arg_files/xmp2exif.args +4 -1
- data/bin/exiftool +28 -28
- data/bin/fmt_files/kml.fmt +3 -0
- data/bin/fmt_files/kml_track.fmt +6 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- data/bin/lib/Image/ExifTool/Canon.pm +8 -2
- data/bin/lib/Image/ExifTool/Exif.pm +31 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +69 -8
- data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -4
- data/bin/lib/Image/ExifTool/InfiRay.pm +227 -0
- data/bin/lib/Image/ExifTool/JPEG.pm +40 -6
- data/bin/lib/Image/ExifTool/Matroska.pm +4 -4
- data/bin/lib/Image/ExifTool/Nikon.pm +187 -384
- data/bin/lib/Image/ExifTool/OpenEXR.pm +32 -15
- data/bin/lib/Image/ExifTool/PNG.pm +80 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +19 -4
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +127 -39
- data/bin/lib/Image/ExifTool/README +3 -0
- data/bin/lib/Image/ExifTool/Real.pm +2 -2
- data/bin/lib/Image/ExifTool/Sony.pm +5 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4544 -4525
- data/bin/lib/Image/ExifTool/TagNames.pod +229 -21
- data/bin/lib/Image/ExifTool/VCard.pm +19 -5
- data/bin/lib/Image/ExifTool.pm +56 -15
- data/bin/lib/Image/ExifTool.pod +51 -50
- data/bin/perl-Image-ExifTool.spec +18 -18
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -64,7 +64,7 @@ use Image::ExifTool::Exif;
|
|
64
64
|
use Image::ExifTool::GPS;
|
65
65
|
use Image::ExifTool::XMP;
|
66
66
|
|
67
|
-
$VERSION = '4.
|
67
|
+
$VERSION = '4.18';
|
68
68
|
|
69
69
|
sub LensIDConv($$$);
|
70
70
|
sub ProcessNikonAVI($$$);
|
@@ -919,6 +919,14 @@ my %hDMIOutputResolutionZ9 = (
|
|
919
919
|
#7 => '480p',
|
920
920
|
);
|
921
921
|
|
922
|
+
my %highFrameRateZ9 = (
|
923
|
+
0 => 'Off',
|
924
|
+
1 => 'CH',
|
925
|
+
3 => 'C30',
|
926
|
+
5 => 'C60',
|
927
|
+
4 => 'C120',
|
928
|
+
);
|
929
|
+
|
922
930
|
my %imageAreaZ9 = (
|
923
931
|
0 => 'FX',
|
924
932
|
1 => 'DX',
|
@@ -1651,7 +1659,7 @@ my %base64coord = (
|
|
1651
1659
|
0x0019 => { #5
|
1652
1660
|
Name => 'ExposureBracketValue',
|
1653
1661
|
Writable => 'rational64s',
|
1654
|
-
PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
|
1662
|
+
PrintConv => '$val !~ /undef/ ? Image::ExifTool::Exif::PrintFraction($val) : "n/a" ', #undef observed for Z9 jpgs at C30/C60/C90 [data is 0/0 rather than the usual 0/6]
|
1655
1663
|
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
1656
1664
|
},
|
1657
1665
|
0x001a => { #PH
|
@@ -1803,6 +1811,7 @@ my %base64coord = (
|
|
1803
1811
|
0x0034 => { #forum9646
|
1804
1812
|
Name => 'ShutterMode',
|
1805
1813
|
Writable => 'int16u',
|
1814
|
+
RawConv => '$$self{ShutterMode} = $val',
|
1806
1815
|
PrintConv => {
|
1807
1816
|
0 => 'Mechanical',
|
1808
1817
|
16 => 'Electronic',
|
@@ -1811,6 +1820,7 @@ my %base64coord = (
|
|
1811
1820
|
64 => 'Electronic (Movie)', #JanSkoda (Z6II)
|
1812
1821
|
80 => 'Auto (Mechanical)', #JanSkoda (Z6II)
|
1813
1822
|
81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
|
1823
|
+
96 => 'Electronic (High Speed)', #28 Z9 at C30/C60/C120 frame rates
|
1814
1824
|
},
|
1815
1825
|
},
|
1816
1826
|
0x0035 => [{ #32
|
@@ -1874,6 +1884,14 @@ my %base64coord = (
|
|
1874
1884
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::MakerNotes0x51' },
|
1875
1885
|
},
|
1876
1886
|
#0x0053 #28 possibly a secondary DistortionControl block (in addition to DistortInfo)? Certainly offset 0x04 within block contains tag AutoDistortionControl for Z72 and D6 (1=>On; 2=> Off)
|
1887
|
+
0x0056 => { #28 (Z9)
|
1888
|
+
Name => 'MakerNotes0x56',
|
1889
|
+
Writable => 'undef',
|
1890
|
+
Hidden => 1,
|
1891
|
+
Permanent => 0,
|
1892
|
+
Flags => [ 'Binary', 'Protected' ],
|
1893
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::MakerNotes0x56' },
|
1894
|
+
},
|
1877
1895
|
#0x005e #28 possibly DiffractionCompensation block? Certainly offset 0x04 within block contains tag DiffractionCompensation
|
1878
1896
|
0x0080 => { Name => 'ImageAdjustment', Writable => 'string' },
|
1879
1897
|
0x0081 => { Name => 'ToneComp', Writable => 'string' }, #2
|
@@ -2003,6 +2021,7 @@ my %base64coord = (
|
|
2003
2021
|
6 => 'White-Balance Bracketing',
|
2004
2022
|
7 => 'IR Control',
|
2005
2023
|
8 => 'D-Lighting Bracketing', #forum6281 (NC)
|
2024
|
+
11 => 'Pre-capture', #28 Z9 pre-release burst
|
2006
2025
|
});
|
2007
2026
|
],
|
2008
2027
|
},
|
@@ -4292,10 +4311,10 @@ my %base64coord = (
|
|
4292
4311
|
$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
|
4293
4312
|
$$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
|
4294
4313
|
},
|
4295
|
-
Format => 'int16u',
|
4314
|
+
Format => 'int16u', # (decodes same byte as 0x2f)
|
4296
4315
|
},
|
4297
4316
|
0x2f => { #28 (Z7) Still photography range 1-17 for the 493 point Z7 (arranged in a 29x17 grid. Center at x=16, y=10).
|
4298
|
-
Name => '
|
4317
|
+
Name => 'FocusPositionHorizontal',
|
4299
4318
|
Condition => q{
|
4300
4319
|
$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
|
4301
4320
|
$$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
|
@@ -4309,7 +4328,7 @@ my %base64coord = (
|
|
4309
4328
|
$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
|
4310
4329
|
$$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
|
4311
4330
|
},
|
4312
|
-
Format => 'int16u',
|
4331
|
+
Format => 'int16u', # (decodes same byte as 0x31)
|
4313
4332
|
},{ #PH (D500, see forum11190)
|
4314
4333
|
Name => 'AFPointsInFocus',
|
4315
4334
|
Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 7',
|
@@ -4322,7 +4341,7 @@ my %base64coord = (
|
|
4322
4341
|
},
|
4323
4342
|
],
|
4324
4343
|
0x31 => { #28 (Z7)
|
4325
|
-
Name => '
|
4344
|
+
Name => 'FocusPositionVertical',
|
4326
4345
|
Condition => q{
|
4327
4346
|
$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
|
4328
4347
|
$$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
|
@@ -4452,6 +4471,21 @@ my %base64coord = (
|
|
4452
4471
|
Writable => 0,
|
4453
4472
|
RawConv => '$$self{AFInfo2Version} = $val',
|
4454
4473
|
},
|
4474
|
+
5 => { #28
|
4475
|
+
Name => 'AFAreaMode', #reflects the mode active when the shutter is tripped, not the position of the Focus Mode button (which is recorded in MenuSettingsZ9 tag also named AfAreaMode)
|
4476
|
+
PrintConv => {
|
4477
|
+
192 => 'Pinpoint',
|
4478
|
+
193 => 'Single',
|
4479
|
+
195 => 'Wide (S)',
|
4480
|
+
196 => 'Wide (L)',
|
4481
|
+
197 => 'Auto',
|
4482
|
+
204 => 'Dynamic Area (S)',
|
4483
|
+
205 => 'Dynamic Area (M)',
|
4484
|
+
206 => 'Dynamic Area (L)',
|
4485
|
+
207 => '3D-tracking',
|
4486
|
+
208 => 'Wide (C1/C2)',
|
4487
|
+
},
|
4488
|
+
},
|
4455
4489
|
0x3e => {
|
4456
4490
|
Name => 'AFImageWidth',
|
4457
4491
|
Format => 'int16u',
|
@@ -4460,6 +4494,11 @@ my %base64coord = (
|
|
4460
4494
|
Name => 'AFImageHeight',
|
4461
4495
|
Format => 'int16u',
|
4462
4496
|
},
|
4497
|
+
0x42 => { #28
|
4498
|
+
Name => 'AFAreaXPosition', #top left image corner is the origin
|
4499
|
+
Format => 'int16u', # (decodes same byte as 0x43)
|
4500
|
+
RawConv => '$val ? $val : undef',
|
4501
|
+
},
|
4463
4502
|
0x43 => {
|
4464
4503
|
Name => 'FocusPositionHorizontal',
|
4465
4504
|
Notes => q{
|
@@ -4471,6 +4510,11 @@ my %base64coord = (
|
|
4471
4510
|
# (the 11R (5) position is not used, for a total of 29 columns, ref AlbertShan email)
|
4472
4511
|
PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29); },
|
4473
4512
|
},
|
4513
|
+
0x44 => { #28
|
4514
|
+
Name => 'AFAreaYPosition',
|
4515
|
+
Format => 'int16u', # (decodes same byte as 0x45)
|
4516
|
+
RawConv => '$val ? $val : undef',
|
4517
|
+
},
|
4474
4518
|
0x45 => {
|
4475
4519
|
Name => 'FocusPositionVertical',
|
4476
4520
|
# (the 6U (4) and 2D (12) are not used, for a total of 17 rows, ref AlbertShan email)
|
@@ -5260,6 +5304,7 @@ my %nikonFocalConversions = (
|
|
5260
5304
|
22 => 'Nikkor Z 24-50mm f/4-6.3', #IB
|
5261
5305
|
23 => 'Nikkor Z 14-24mm f/2.8 S', #IB
|
5262
5306
|
24 => 'Nikkor Z MC 105mm f/2.8 VR S', #IB
|
5307
|
+
25 => 'Nikkor Z 40mm f/2', #28
|
5263
5308
|
27 => 'Nikkor Z MC 50mm f/2.8', #IB
|
5264
5309
|
28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
|
5265
5310
|
29 => 'Nikkor Z 28mm f/2.8', #IB
|
@@ -5267,7 +5312,10 @@ my %nikonFocalConversions = (
|
|
5267
5312
|
31 => 'Nikkor Z 24-120 f/4', #28
|
5268
5313
|
32 => 'Nikkor Z 800mm f/6.3 VR S', #28
|
5269
5314
|
36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
|
5315
|
+
37 => 'Nikkor Z 600mm f/4 TC VR S', #28
|
5270
5316
|
39 => 'Nikkor Z 17-28mm f/2.8', #IB
|
5317
|
+
32768 => 'Nikkor Z 400mm f/2.8 TC VR S TC-1.4x', #28
|
5318
|
+
32769 => 'Nikkor Z 600mm f/4 TC VR S TC-1.4x', #28
|
5271
5319
|
},
|
5272
5320
|
},
|
5273
5321
|
0x35 => { #28
|
@@ -8309,9 +8357,9 @@ my %nikonFocalConversions = (
|
|
8309
8357
|
WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
|
8310
8358
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
8311
8359
|
VARS => { ID_LABEL => 'Index' },
|
8312
|
-
DATAMEMBER => [ 0x04, 0x30,
|
8313
|
-
|
8314
|
-
IS_SUBDIR => [
|
8360
|
+
DATAMEMBER => [ 0x04, 0x30, 0x84, 0x8c,0x93, 0xb4, 0xbc, 0xbe,
|
8361
|
+
0x4410, 0x4411, 0x80c4, 0x8149, 0x814a ],
|
8362
|
+
IS_SUBDIR => [ 0x44ec, 0x8225 ],
|
8315
8363
|
WRITABLE => 1,
|
8316
8364
|
FIRST_ENTRY => 0,
|
8317
8365
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
@@ -8348,20 +8396,12 @@ my %nikonFocalConversions = (
|
|
8348
8396
|
Hidden => 1,
|
8349
8397
|
},
|
8350
8398
|
0x30 => {
|
8351
|
-
Name => '
|
8352
|
-
DataMember => '
|
8399
|
+
Name => 'SequenceOffset', #offset3 - length 2528 (Z9 firmware 1.0)
|
8400
|
+
DataMember => 'SequenceOffset',
|
8353
8401
|
Format => 'int32u',
|
8354
8402
|
Writable => 0,
|
8355
8403
|
Hidden => 1,
|
8356
|
-
RawConv => '$$self{
|
8357
|
-
},
|
8358
|
-
0x38 => {
|
8359
|
-
Name => 'Offset5', #offset5 - length 2488 (Z9 firmware 1.0)
|
8360
|
-
DataMember => 'Offset5',
|
8361
|
-
Format => 'int32u',
|
8362
|
-
Writable => 0,
|
8363
|
-
Hidden => 1,
|
8364
|
-
RawConv => '$$self{Offset5} = $val || 0x10000000; undef', # (ignore if 0)
|
8404
|
+
RawConv => '$$self{SequenceOffset} = $val || 0x10000000; undef', # (ignore if 0)
|
8365
8405
|
},
|
8366
8406
|
0x84 => {
|
8367
8407
|
Name => 'OrientationOffset', #offset24 - length 108 (Z9 firmware 1.0)
|
@@ -8372,23 +8412,25 @@ my %nikonFocalConversions = (
|
|
8372
8412
|
RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef', # (ignore if 0)
|
8373
8413
|
},
|
8374
8414
|
0x8c => {
|
8375
|
-
Name => '
|
8376
|
-
DataMember => '
|
8415
|
+
Name => 'MenuOffset', #offset26 - length 1895 (Z9 firmware 1.0)
|
8416
|
+
DataMember => 'MenuOffset6',
|
8377
8417
|
Format => 'int32u',
|
8378
8418
|
Writable => 0,
|
8379
8419
|
Hidden => 1,
|
8380
|
-
RawConv => '$$self{
|
8420
|
+
RawConv => '$$self{MenuOffset} = $val || 0x10000000; undef', # (ignore if 0)
|
8381
8421
|
},
|
8382
|
-
###
|
8383
|
-
|
8384
|
-
Name => '
|
8422
|
+
### 0x0094 - SequenceOffset info start (Z9 firmware 1.00)
|
8423
|
+
0x0093 => {
|
8424
|
+
Name => 'SequenceOffsetHook',
|
8425
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8385
8426
|
Hidden => 1,
|
8386
8427
|
RawConv => 'undef',
|
8387
|
-
# account for variable location of
|
8388
|
-
Hook => '$varSize = $$self{
|
8428
|
+
# account for variable location of SequenceOffset data
|
8429
|
+
Hook => '$varSize = $$self{SequenceOffset} - 0x0094',
|
8389
8430
|
},
|
8390
|
-
|
8431
|
+
0x00b4 => {
|
8391
8432
|
Name => 'FocusShiftShooting',
|
8433
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8392
8434
|
RawConv => '$$self{FocusShiftShooting} = $val',
|
8393
8435
|
PrintConv => q{
|
8394
8436
|
return 'Off' if $val == 0 ;
|
@@ -8396,8 +8438,9 @@ my %nikonFocalConversions = (
|
|
8396
8438
|
return "On: $i"
|
8397
8439
|
},
|
8398
8440
|
},
|
8399
|
-
|
8441
|
+
0x00bc => {
|
8400
8442
|
Name => 'IntervalShooting',
|
8443
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8401
8444
|
RawConv => '$$self{IntervalShooting} = $val',
|
8402
8445
|
Format => 'int16u',
|
8403
8446
|
PrintConv => q{
|
@@ -8408,32 +8451,73 @@ my %nikonFocalConversions = (
|
|
8408
8451
|
#$val == 0 ? 'Off' : sprintf("On: Interval %.0f of %.0f Frame %.0f of %.0f",$val, $$self{IntervalShootingIntervals}, $$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}),
|
8409
8452
|
},
|
8410
8453
|
},
|
8411
|
-
|
8454
|
+
0x00be => {
|
8455
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8412
8456
|
Name => 'IntervalFrame',
|
8413
8457
|
RawConv => '$$self{IntervalFrame} = $val',
|
8414
|
-
Condition => '$$self{
|
8458
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8415
8459
|
Format => 'int16u',
|
8416
8460
|
Hidden => 1,
|
8417
8461
|
},
|
8418
|
-
###
|
8419
|
-
|
8462
|
+
### 0x4400 - Offset26 info start (Z9 firmware 3.01 C30/C60/C120 )
|
8463
|
+
0x4410 => {
|
8464
|
+
Name => 'MenuSettingsZ9Offset',
|
8465
|
+
Condition => '$$self{ShutterMode} eq 96', # C30/C60/C120 jpgs only
|
8466
|
+
Writable => 0,
|
8467
|
+
Hidden => 1,
|
8468
|
+
# offset to MenuSettingsZ9 is relative to start of Offset26 block
|
8469
|
+
RawConv => '$$self{MenuSettingsZ9Offset} = ($val || 0x10000000) + $$self{MenuOffset}; undef', # (ignore if 0)
|
8470
|
+
},
|
8471
|
+
0x4411 => {
|
8472
|
+
Name => 'Hook5',
|
8473
|
+
Condition => '$$self{ShutterMode} eq 96', # C30/C60/C120 jpgs only
|
8474
|
+
Hidden => 1,
|
8475
|
+
RawConv => 'undef',
|
8476
|
+
# account for variable location of menu settings data
|
8477
|
+
Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0x44ec',
|
8478
|
+
},
|
8479
|
+
0x44ec => [
|
8480
|
+
{
|
8481
|
+
Name => 'MenuSettingsZ9',
|
8482
|
+
Condition => '$$self{ShutterMode} eq 96 and $$self{FirmwareVersion} lt "03.00"', # C30/C60/C120 jpgs only
|
8483
|
+
Format => 'undef[1646]',
|
8484
|
+
Notes => 'Firmware versions 2.11 and earlier',
|
8485
|
+
SubDirectory => {
|
8486
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
|
8487
|
+
},
|
8488
|
+
},
|
8489
|
+
{
|
8490
|
+
Name => 'MenuSettingsZ9',
|
8491
|
+
Notes => 'Firmware versions 3.0 and later',
|
8492
|
+
Condition => '$$self{ShutterMode} eq 96', # C30/C60/C120 jpgs only
|
8493
|
+
Format => 'undef[1948]',
|
8494
|
+
SubDirectory => {
|
8495
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
|
8496
|
+
},
|
8497
|
+
},
|
8498
|
+
],
|
8499
|
+
### 0x80c5 - OrientationInfo start (Z9 firmware 3.01)
|
8500
|
+
0x80c4 => {
|
8420
8501
|
Name => 'OrientationHook',
|
8502
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8421
8503
|
Hidden => 1,
|
8422
8504
|
RawConv => 'undef',
|
8423
8505
|
# account for variable location of OrientationInfo data
|
8424
|
-
Hook => '$varSize = $$self{OrientationOffset} -
|
8506
|
+
Hook => '$varSize = $$self{OrientationOffset} - 0x80c5',
|
8425
8507
|
},
|
8426
|
-
|
8508
|
+
0x80c5 => {
|
8427
8509
|
Name => 'RollAngle',
|
8428
|
-
|
8510
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8511
|
+
Format => 'fixed32u',
|
8429
8512
|
Notes => 'converted to degrees of clockwise camera roll',
|
8430
8513
|
ValueConv => '$val <= 180 ? $val : $val - 360',
|
8431
8514
|
ValueConvInv => '$val >= 0 ? $val : $val + 360',
|
8432
8515
|
PrintConv => 'sprintf("%.1f", $val)',
|
8433
8516
|
PrintConvInv => '$val',
|
8434
8517
|
},
|
8435
|
-
|
8518
|
+
0x80c9 => {
|
8436
8519
|
Name => 'PitchAngle',
|
8520
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8437
8521
|
Format => 'fixed32u',
|
8438
8522
|
Notes => 'converted to degrees of upward camera tilt',
|
8439
8523
|
ValueConv => '$val <= 180 ? $val : $val - 360',
|
@@ -8441,8 +8525,9 @@ my %nikonFocalConversions = (
|
|
8441
8525
|
PrintConv => 'sprintf("%.1f", $val)',
|
8442
8526
|
PrintConvInv => '$val',
|
8443
8527
|
},
|
8444
|
-
|
8528
|
+
0x80cd => {
|
8445
8529
|
Name => 'YawAngle',
|
8530
|
+
Condition => '$$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8446
8531
|
Format => 'fixed32u',
|
8447
8532
|
Notes => 'the camera yaw angle when shooting in portrait orientation',
|
8448
8533
|
ValueConv => '$val <= 180 ? $val : $val - 360',
|
@@ -8450,25 +8535,27 @@ my %nikonFocalConversions = (
|
|
8450
8535
|
PrintConv => 'sprintf("%.1f", $val)',
|
8451
8536
|
PrintConvInv => '$val',
|
8452
8537
|
},
|
8453
|
-
###
|
8454
|
-
|
8538
|
+
### 0x8139 - Offset26 info start (Z9 firmware 3.01)
|
8539
|
+
0x8149 => {
|
8455
8540
|
Name => 'MenuSettingsZ9Offset',
|
8541
|
+
Condition => '$$self{ShutterMode} ne 96', # C30/C60/C120 jpgs handled at 0x4410
|
8456
8542
|
Writable => 0,
|
8457
8543
|
Hidden => 1,
|
8458
8544
|
# offset to MenuSettingsZ9 is relative to start of Offset26 block
|
8459
|
-
RawConv => '$$self{MenuSettingsZ9Offset} = ($val || 0x10000000) + $$self{
|
8545
|
+
RawConv => '$$self{MenuSettingsZ9Offset} = ($val || 0x10000000) + $$self{MenuOffset}; undef', # (ignore if 0)
|
8460
8546
|
},
|
8461
|
-
|
8547
|
+
0x814a => {
|
8462
8548
|
Name => 'Hook5',
|
8549
|
+
Condition => '$$self{ShutterMode} ne 96', # C30/C60/C120 jpgs handled at 0x4410
|
8463
8550
|
Hidden => 1,
|
8464
8551
|
RawConv => 'undef',
|
8465
8552
|
# account for variable location of menu settings data
|
8466
|
-
Hook => '$varSize = $$self{MenuSettingsZ9Offset} -
|
8553
|
+
Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0x8225',
|
8467
8554
|
},
|
8468
|
-
|
8555
|
+
0x8225 => [
|
8469
8556
|
{
|
8470
8557
|
Name => 'MenuSettingsZ9',
|
8471
|
-
Condition => '$$self{FirmwareVersion} lt "03.00"',
|
8558
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FirmwareVersion} lt "03.00"', # C30/C60/C120 jpgs handled at 0x4410
|
8472
8559
|
Format => 'undef[1646]',
|
8473
8560
|
Notes => 'Firmware versions 2.11 and earlier',
|
8474
8561
|
SubDirectory => {
|
@@ -8478,6 +8565,7 @@ my %nikonFocalConversions = (
|
|
8478
8565
|
{
|
8479
8566
|
Name => 'MenuSettingsZ9',
|
8480
8567
|
Notes => 'Firmware versions 3.0 and later',
|
8568
|
+
Condition => '$$self{ShutterMode} ne 96', # C30/C60/C120 jpgs handled at 0x4410
|
8481
8569
|
Format => 'undef[1948]',
|
8482
8570
|
SubDirectory => {
|
8483
8571
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
|
@@ -8726,34 +8814,34 @@ my %nikonFocalConversions = (
|
|
8726
8814
|
Name => 'Intervals',
|
8727
8815
|
Format => 'int32u',
|
8728
8816
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
8729
|
-
Condition => '$$self{
|
8817
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8730
8818
|
},
|
8731
8819
|
192 => {
|
8732
8820
|
Name => 'ShotsPerInterval',
|
8733
8821
|
Format => 'int32u',
|
8734
8822
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
8735
|
-
Condition => '$$self{
|
8823
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8736
8824
|
},
|
8737
8825
|
#220 NEFCompression 0=> 'Lossless' 1=> 'High Efficiency*' 4=> 'High Efficientcy'
|
8738
8826
|
232 => {
|
8739
8827
|
Name => 'FocusShiftNumberShots', #1-300
|
8740
8828
|
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
8741
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
8829
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8742
8830
|
},
|
8743
8831
|
236 => {
|
8744
8832
|
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
8745
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
8833
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8746
8834
|
},
|
8747
8835
|
240 => {
|
8748
8836
|
Name => 'FocusShiftInterval',
|
8749
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
8837
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8750
8838
|
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
8751
8839
|
},
|
8752
8840
|
244 => {
|
8753
8841
|
Name => 'FocusShiftExposureLock',
|
8754
8842
|
Unknown => 1,
|
8755
8843
|
PrintConv => \%offOn,
|
8756
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
8844
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8757
8845
|
},
|
8758
8846
|
274 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
8759
8847
|
276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, #single tag from both Photo & Video menus
|
@@ -8913,12 +9001,17 @@ my %nikonFocalConversions = (
|
|
8913
9001
|
1636 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
8914
9002
|
1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
8915
9003
|
);
|
9004
|
+
|
8916
9005
|
%Image::ExifTool::Nikon::MenuSettingsZ9Firmware3 = ( #starts at Offset26 + 248
|
8917
9006
|
%binaryDataAttrs,
|
8918
9007
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8919
9008
|
DATAMEMBER => [ 154, 204, 208, 248, 444, 554 ],
|
8920
9009
|
IS_SUBDIR => [ 847 ],
|
8921
9010
|
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
9011
|
+
72 => {
|
9012
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
9013
|
+
PrintConv => \%highFrameRateZ9,
|
9014
|
+
},
|
8922
9015
|
154 => {
|
8923
9016
|
Name => 'MultipleExposureMode',
|
8924
9017
|
RawConv => '$$self{MultipleExposureMode} = $val',
|
@@ -8929,33 +9022,33 @@ my %nikonFocalConversions = (
|
|
8929
9022
|
Name => 'Intervals',
|
8930
9023
|
Format => 'int32u',
|
8931
9024
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
8932
|
-
Condition => '$$self{
|
9025
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8933
9026
|
},
|
8934
9027
|
208 => {
|
8935
9028
|
Name => 'ShotsPerInterval',
|
8936
9029
|
Format => 'int32u',
|
8937
9030
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
8938
|
-
Condition => '$$self{
|
9031
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8939
9032
|
},
|
8940
9033
|
248 => {
|
8941
9034
|
Name => 'FocusShiftNumberShots', #1-300
|
8942
9035
|
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
8943
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
9036
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8944
9037
|
},
|
8945
9038
|
252 => {
|
8946
9039
|
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
8947
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
9040
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8948
9041
|
},
|
8949
9042
|
256 => {
|
8950
9043
|
Name => 'FocusShiftInterval',
|
8951
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
9044
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8952
9045
|
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
8953
9046
|
},
|
8954
9047
|
260 => {
|
8955
9048
|
Name => 'FocusShiftExposureLock',
|
8956
9049
|
Unknown => 1,
|
8957
9050
|
PrintConv => \%offOn,
|
8958
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
9051
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
8959
9052
|
},
|
8960
9053
|
290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
8961
9054
|
292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
@@ -9107,340 +9200,33 @@ my %nikonFocalConversions = (
|
|
9107
9200
|
Name => 'FocusShiftAutoReset',
|
9108
9201
|
Unknown => 1,
|
9109
9202
|
PrintConv => \%offOn,
|
9110
|
-
Condition => '$$self{FocusShiftShooting} > 0',
|
9203
|
+
Condition => '$$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9111
9204
|
},
|
9112
|
-
|
9113
|
-
|
9114
|
-
#1828 ExposureCompensationButton CSf2
|
9115
|
-
#1830 ISOButton CSf2
|
9116
|
-
#1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
|
9117
|
-
#1892 DispButton CSf2
|
9118
|
-
#1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
|
9119
|
-
);
|
9120
|
-
|
9121
|
-
# Flash information (ref JD)
|
9122
|
-
%Image::ExifTool::Nikon::FlashInfo0100 = (
|
9123
|
-
%binaryDataAttrs,
|
9124
|
-
DATAMEMBER => [ 9.2, 15, 16 ],
|
9125
|
-
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9126
|
-
NOTES => q{
|
9127
|
-
These tags are used by the D2H, D2Hs, D2X, D2Xs, D50, D70, D70s, D80 and
|
9128
|
-
D200.
|
9129
|
-
},
|
9130
|
-
# NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
|
9131
|
-
0 => {
|
9132
|
-
Name => 'FlashInfoVersion',
|
9133
|
-
Format => 'string[4]',
|
9134
|
-
Writable => 0,
|
9135
|
-
},
|
9136
|
-
4 => { #PH
|
9137
|
-
Name => 'FlashSource',
|
9205
|
+
1810 => { #CSd4-a
|
9206
|
+
Name => 'PreReleaseBurstLength',
|
9138
9207
|
PrintConv => {
|
9139
9208
|
0 => 'None',
|
9140
|
-
1 => '
|
9141
|
-
2 => '
|
9142
|
-
|
9143
|
-
},
|
9144
|
-
# 5 - values: 46,48,50,54,78
|
9145
|
-
6 => {
|
9146
|
-
Format => 'int8u[2]',
|
9147
|
-
Name => 'ExternalFlashFirmware',
|
9148
|
-
SeparateTable => 'FlashFirmware',
|
9149
|
-
PrintConv => \%flashFirmware,
|
9150
|
-
},
|
9151
|
-
8 => {
|
9152
|
-
Name => 'ExternalFlashFlags',
|
9153
|
-
PrintConv => { 0 => '(none)',
|
9154
|
-
BITMASK => {
|
9155
|
-
0 => 'Fired', #28
|
9156
|
-
2 => 'Bounce Flash', #PH
|
9157
|
-
4 => 'Wide Flash Adapter',
|
9158
|
-
5 => 'Dome Diffuser', #28
|
9159
|
-
},
|
9160
|
-
},
|
9161
|
-
},
|
9162
|
-
9.1 => {
|
9163
|
-
Name => 'FlashCommanderMode',
|
9164
|
-
Mask => 0x80,
|
9165
|
-
PrintConv => { 0 => 'Off', 1 => 'On' },
|
9166
|
-
},
|
9167
|
-
9.2 => {
|
9168
|
-
Name => 'FlashControlMode',
|
9169
|
-
Mask => 0x7f,
|
9170
|
-
DataMember => 'FlashControlMode',
|
9171
|
-
RawConv => '$$self{FlashControlMode} = $val',
|
9172
|
-
PrintConv => \%flashControlMode,
|
9173
|
-
SeparateTable => 'FlashControlMode',
|
9174
|
-
},
|
9175
|
-
10 => [
|
9176
|
-
{
|
9177
|
-
Name => 'FlashOutput',
|
9178
|
-
Condition => '$$self{FlashControlMode} >= 0x06',
|
9179
|
-
ValueConv => '2 ** (-$val/6)',
|
9180
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9181
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9182
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9183
|
-
},
|
9184
|
-
{
|
9185
|
-
Name => 'FlashCompensation',
|
9186
|
-
Format => 'int8s',
|
9187
|
-
Priority => 0,
|
9188
|
-
ValueConv => '-$val/6',
|
9189
|
-
ValueConvInv => '-6 * $val',
|
9190
|
-
PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
|
9191
|
-
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
9192
|
-
},
|
9193
|
-
],
|
9194
|
-
11 => {
|
9195
|
-
Name => 'FlashFocalLength',
|
9196
|
-
RawConv => '$val ? $val : undef',
|
9197
|
-
PrintConv => '"$val mm"',
|
9198
|
-
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
9199
|
-
},
|
9200
|
-
12 => {
|
9201
|
-
Name => 'RepeatingFlashRate',
|
9202
|
-
RawConv => '$val ? $val : undef',
|
9203
|
-
PrintConv => '"$val Hz"',
|
9204
|
-
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
9205
|
-
},
|
9206
|
-
13 => {
|
9207
|
-
Name => 'RepeatingFlashCount',
|
9208
|
-
RawConv => '$val ? $val : undef',
|
9209
|
-
},
|
9210
|
-
14 => { #PH
|
9211
|
-
Name => 'FlashGNDistance',
|
9212
|
-
SeparateTable => 1,
|
9213
|
-
PrintConv => \%flashGNDistance,
|
9214
|
-
},
|
9215
|
-
15 => {
|
9216
|
-
Name => 'FlashGroupAControlMode',
|
9217
|
-
Mask => 0x0f,
|
9218
|
-
DataMember => 'FlashGroupAControlMode',
|
9219
|
-
RawConv => '$$self{FlashGroupAControlMode} = $val',
|
9220
|
-
PrintConv => \%flashControlMode,
|
9221
|
-
SeparateTable => 'FlashControlMode',
|
9222
|
-
},
|
9223
|
-
16 => {
|
9224
|
-
Name => 'FlashGroupBControlMode',
|
9225
|
-
Mask => 0x0f,
|
9226
|
-
DataMember => 'FlashGroupBControlMode',
|
9227
|
-
RawConv => '$$self{FlashGroupBControlMode} = $val',
|
9228
|
-
PrintConv => \%flashControlMode,
|
9229
|
-
SeparateTable => 'FlashControlMode',
|
9230
|
-
},
|
9231
|
-
17 => [
|
9232
|
-
{
|
9233
|
-
Name => 'FlashGroupAOutput',
|
9234
|
-
Condition => '$$self{FlashGroupAControlMode} >= 0x06',
|
9235
|
-
ValueConv => '2 ** (-$val/6)',
|
9236
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9237
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9238
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9239
|
-
},
|
9240
|
-
{
|
9241
|
-
Name => 'FlashGroupACompensation',
|
9242
|
-
Format => 'int8s',
|
9243
|
-
ValueConv => '-$val/6',
|
9244
|
-
ValueConvInv => '-6 * $val',
|
9245
|
-
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
9246
|
-
PrintConvInv => '$val',
|
9247
|
-
},
|
9248
|
-
],
|
9249
|
-
18 => [
|
9250
|
-
{
|
9251
|
-
Name => 'FlashGroupBOutput',
|
9252
|
-
Condition => '$$self{FlashGroupBControlMode} >= 0x06',
|
9253
|
-
ValueConv => '2 ** (-$val/6)',
|
9254
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9255
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9256
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9209
|
+
1 => '0.3 Sec',
|
9210
|
+
2 => '0.5 Sec',
|
9211
|
+
3 => '1 Sec',
|
9257
9212
|
},
|
9258
|
-
{
|
9259
|
-
Name => 'FlashGroupBCompensation',
|
9260
|
-
Format => 'int8s',
|
9261
|
-
ValueConv => '-$val/6',
|
9262
|
-
ValueConvInv => '-6 * $val',
|
9263
|
-
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
9264
|
-
PrintConvInv => '$val',
|
9265
|
-
},
|
9266
|
-
],
|
9267
|
-
);
|
9268
|
-
|
9269
|
-
# Flash information for D40, D40x, D3 and D300 (ref JD)
|
9270
|
-
%Image::ExifTool::Nikon::FlashInfo0102 = (
|
9271
|
-
%binaryDataAttrs,
|
9272
|
-
DATAMEMBER => [ 9.2, 16.1, 17.1, 17.2 ],
|
9273
|
-
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9274
|
-
NOTES => q{
|
9275
|
-
These tags are used by the D3 (firmware 1.x), D40, D40X, D60 and D300
|
9276
|
-
(firmware 1.00).
|
9277
9213
|
},
|
9278
|
-
|
9279
|
-
|
9280
|
-
Name => 'FlashInfoVersion',
|
9281
|
-
Format => 'string[4]',
|
9282
|
-
Writable => 0,
|
9283
|
-
},
|
9284
|
-
4 => { #PH
|
9285
|
-
Name => 'FlashSource',
|
9214
|
+
1812 => { #CSd4-b
|
9215
|
+
Name => 'PostReleaseBurstLength',
|
9286
9216
|
PrintConv => {
|
9287
|
-
0 => '
|
9288
|
-
1 => '
|
9289
|
-
2 => '
|
9290
|
-
|
9291
|
-
},
|
9292
|
-
# 5 - values: 46,48,50,54,78
|
9293
|
-
6 => {
|
9294
|
-
Format => 'int8u[2]',
|
9295
|
-
Name => 'ExternalFlashFirmware',
|
9296
|
-
SeparateTable => 'FlashFirmware',
|
9297
|
-
PrintConv => \%flashFirmware,
|
9298
|
-
},
|
9299
|
-
8 => {
|
9300
|
-
Name => 'ExternalFlashFlags',
|
9301
|
-
PrintConv => { BITMASK => {
|
9302
|
-
0 => 'Fired', #28
|
9303
|
-
2 => 'Bounce Flash', #PH
|
9304
|
-
4 => 'Wide Flash Adapter',
|
9305
|
-
5 => 'Dome Diffuser', #28
|
9306
|
-
}},
|
9307
|
-
},
|
9308
|
-
9.1 => {
|
9309
|
-
Name => 'FlashCommanderMode',
|
9310
|
-
Mask => 0x80,
|
9311
|
-
PrintConv => { 0 => 'Off', 1 => 'On' },
|
9312
|
-
},
|
9313
|
-
9.2 => {
|
9314
|
-
Name => 'FlashControlMode',
|
9315
|
-
Mask => 0x7f,
|
9316
|
-
DataMember => 'FlashControlMode',
|
9317
|
-
RawConv => '$$self{FlashControlMode} = $val',
|
9318
|
-
PrintConv => \%flashControlMode,
|
9319
|
-
SeparateTable => 'FlashControlMode',
|
9320
|
-
},
|
9321
|
-
10 => [
|
9322
|
-
{
|
9323
|
-
Name => 'FlashOutput',
|
9324
|
-
Condition => '$$self{FlashControlMode} >= 0x06',
|
9325
|
-
ValueConv => '2 ** (-$val/6)',
|
9326
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9327
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9328
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9217
|
+
0 => '1 Sec',
|
9218
|
+
1 => '2 Sec',
|
9219
|
+
2 => '3 Sec',
|
9220
|
+
3 => 'Max',
|
9329
9221
|
},
|
9330
|
-
{
|
9331
|
-
Name => 'FlashCompensation',
|
9332
|
-
# this is the compensation from the camera (0x0012) for "Built-in" FlashType, or
|
9333
|
-
# the compensation from the external unit (0x0017) for "Optional" FlashType - PH
|
9334
|
-
Format => 'int8s',
|
9335
|
-
Priority => 0,
|
9336
|
-
ValueConv => '-$val/6',
|
9337
|
-
ValueConvInv => '-6 * $val',
|
9338
|
-
PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
|
9339
|
-
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
9340
|
-
},
|
9341
|
-
],
|
9342
|
-
12 => {
|
9343
|
-
Name => 'FlashFocalLength',
|
9344
|
-
RawConv => '$val ? $val : undef',
|
9345
|
-
PrintConv => '"$val mm"',
|
9346
|
-
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
9347
|
-
},
|
9348
|
-
13 => {
|
9349
|
-
Name => 'RepeatingFlashRate',
|
9350
|
-
RawConv => '$val ? $val : undef',
|
9351
|
-
PrintConv => '"$val Hz"',
|
9352
|
-
PrintConvInv => '$val=~/(\d+)/; $1 || 0',
|
9353
|
-
},
|
9354
|
-
14 => {
|
9355
|
-
Name => 'RepeatingFlashCount',
|
9356
|
-
RawConv => '$val ? $val : undef',
|
9357
|
-
},
|
9358
|
-
15 => { #PH
|
9359
|
-
Name => 'FlashGNDistance',
|
9360
|
-
SeparateTable => 1,
|
9361
|
-
PrintConv => \%flashGNDistance,
|
9362
|
-
},
|
9363
|
-
16.1 => {
|
9364
|
-
Name => 'FlashGroupAControlMode',
|
9365
|
-
Mask => 0x0f,
|
9366
|
-
Notes => 'note: group A tags may apply to the built-in flash settings for some models',
|
9367
|
-
DataMember => 'FlashGroupAControlMode',
|
9368
|
-
RawConv => '$$self{FlashGroupAControlMode} = $val',
|
9369
|
-
PrintConv => \%flashControlMode,
|
9370
|
-
SeparateTable => 'FlashControlMode',
|
9371
|
-
},
|
9372
|
-
17.1 => {
|
9373
|
-
Name => 'FlashGroupBControlMode',
|
9374
|
-
Mask => 0xf0,
|
9375
|
-
Notes => 'note: group B tags may apply to group A settings for some models',
|
9376
|
-
DataMember => 'FlashGroupBControlMode',
|
9377
|
-
RawConv => '$$self{FlashGroupBControlMode} = $val',
|
9378
|
-
PrintConv => \%flashControlMode,
|
9379
|
-
SeparateTable => 'FlashControlMode',
|
9380
9222
|
},
|
9381
|
-
|
9382
|
-
|
9383
|
-
|
9384
|
-
|
9385
|
-
|
9386
|
-
|
9387
|
-
|
9388
|
-
SeparateTable => 'FlashControlMode',
|
9389
|
-
},
|
9390
|
-
18 => [
|
9391
|
-
{
|
9392
|
-
Name => 'FlashGroupAOutput',
|
9393
|
-
Condition => '$$self{FlashGroupAControlMode} >= 0x06',
|
9394
|
-
ValueConv => '2 ** (-$val/6)',
|
9395
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9396
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9397
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9398
|
-
},
|
9399
|
-
{
|
9400
|
-
Name => 'FlashGroupACompensation',
|
9401
|
-
Format => 'int8s',
|
9402
|
-
ValueConv => '-$val/6',
|
9403
|
-
ValueConvInv => '-6 * $val',
|
9404
|
-
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
9405
|
-
PrintConvInv => '$val',
|
9406
|
-
},
|
9407
|
-
],
|
9408
|
-
19 => [
|
9409
|
-
{
|
9410
|
-
Name => 'FlashGroupBOutput',
|
9411
|
-
Condition => '$$self{FlashGroupBControlMode} >= 0x60',
|
9412
|
-
ValueConv => '2 ** (-$val/6)',
|
9413
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9414
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9415
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9416
|
-
},
|
9417
|
-
{
|
9418
|
-
Name => 'FlashGroupBCompensation',
|
9419
|
-
Format => 'int8s',
|
9420
|
-
ValueConv => '-$val/6',
|
9421
|
-
ValueConvInv => '-6 * $val',
|
9422
|
-
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
9423
|
-
PrintConvInv => '$val',
|
9424
|
-
},
|
9425
|
-
],
|
9426
|
-
20 => [ #PH
|
9427
|
-
{
|
9428
|
-
Name => 'FlashGroupCOutput',
|
9429
|
-
Condition => '$$self{FlashGroupCControlMode} >= 0x06',
|
9430
|
-
ValueConv => '2 ** (-$val/6)',
|
9431
|
-
ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
|
9432
|
-
PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
|
9433
|
-
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
9434
|
-
},
|
9435
|
-
{
|
9436
|
-
Name => 'FlashGroupCCompensation',
|
9437
|
-
Format => 'int8s',
|
9438
|
-
ValueConv => '-$val/6',
|
9439
|
-
ValueConvInv => '-6 * $val',
|
9440
|
-
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
9441
|
-
PrintConvInv => '$val',
|
9442
|
-
},
|
9443
|
-
],
|
9223
|
+
#1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
|
9224
|
+
#1826 VerticalISOButton CSf2
|
9225
|
+
#1828 ExposureCompensationButton CSf2
|
9226
|
+
#1830 ISOButton CSf2
|
9227
|
+
#1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
|
9228
|
+
#1892 DispButton CSf2
|
9229
|
+
#1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
|
9444
9230
|
);
|
9445
9231
|
|
9446
9232
|
# Flash information (ref JD)
|
@@ -10724,6 +10510,21 @@ my %nikonFocalConversions = (
|
|
10724
10510
|
},
|
10725
10511
|
);
|
10726
10512
|
|
10513
|
+
# MakerNotes0x56 - burst info for Z9
|
10514
|
+
%Image::ExifTool::Nikon::MakerNotes0x56 = (
|
10515
|
+
%binaryDataAttrs,
|
10516
|
+
GROUPS => { 0 => 'MakerNotes' },
|
10517
|
+
0 => {
|
10518
|
+
Name => 'FirmwareVersion',
|
10519
|
+
Format => 'string[4]',
|
10520
|
+
Writable => 0,
|
10521
|
+
},
|
10522
|
+
4 => {
|
10523
|
+
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.
|
10524
|
+
Format => 'int16u'
|
10525
|
+
},
|
10526
|
+
);
|
10527
|
+
|
10727
10528
|
# extra info found in IFD0 of NEF files (ref PH, Z6/Z7)
|
10728
10529
|
%Image::ExifTool::Nikon::NEFInfo = (
|
10729
10530
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
@@ -11869,6 +11670,7 @@ sub PrintAFPointsLeftRight($$)
|
|
11869
11670
|
{
|
11870
11671
|
my ($col, $ncol) = @_;
|
11871
11672
|
my $center = 1 + ($ncol + 1)/2;
|
11673
|
+
return 'n/a' if $col == 0; #out of focus
|
11872
11674
|
return 'C' if $col == $center;
|
11873
11675
|
return sprintf('%d', $center - $col) . 'L of Center' if $col < $center;
|
11874
11676
|
return sprintf('%d', $col - $center) . 'R of Center' if $col > $center;
|
@@ -11882,6 +11684,7 @@ sub PrintAFPointsUpDown($$)
|
|
11882
11684
|
{
|
11883
11685
|
my ($row, $nrow) = @_;
|
11884
11686
|
my $center = 1 + ($nrow + 1)/2;
|
11687
|
+
return 'n/a' if $row == 0; #out of focus
|
11885
11688
|
return 'C' if $row == $center;
|
11886
11689
|
return sprintf('%d', $center - $row) . 'U from Center' if $row < $center;
|
11887
11690
|
return sprintf('%d', $row - $center) . 'D from Center' if $row > $center;
|