exiftool-vendored.exe 12.54.0 → 12.56.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.
Files changed (29) hide show
  1. package/bin/exiftool_files/Changes +34 -4
  2. package/bin/exiftool_files/README +19 -19
  3. package/bin/exiftool_files/arg_files/xmp2exif.args +4 -1
  4. package/bin/exiftool_files/exiftool.pl +29 -29
  5. package/bin/exiftool_files/fmt_files/kml.fmt +3 -0
  6. package/bin/exiftool_files/fmt_files/kml_track.fmt +6 -3
  7. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
  8. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +8 -2
  9. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +31 -2
  10. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +69 -8
  11. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +3 -1
  12. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -4
  13. package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +227 -0
  14. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +40 -6
  15. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +4 -4
  16. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +187 -384
  17. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +32 -15
  18. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +80 -2
  19. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +19 -4
  20. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +127 -39
  21. package/bin/exiftool_files/lib/Image/ExifTool/README +3 -0
  22. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +2 -2
  23. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4544 -4525
  25. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +229 -21
  26. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +19 -5
  27. package/bin/exiftool_files/lib/Image/ExifTool.pm +56 -15
  28. package/bin/exiftool_files/lib/Image/ExifTool.pod +51 -50
  29. package/package.json +2 -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.16';
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 => 'AFFocusPointXPosition',
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 => 'AFFocusPointYPosition',
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, 0x38, 0x84, 0x8c, 0x6c6f, 0x6c90, 0x6c98,
8313
- 0x6c9a, 0xeaea, 0xeb6f, 0xeb70 ],
8314
- IS_SUBDIR => [ 0xec4b ],
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 => 'Offset3', #offset3 - length 2528 (Z9 firmware 1.0)
8352
- DataMember => 'Offset3',
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{Offset3} = $val || 0x10000000; undef', # (ignore if 0)
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 => 'Offset26', #offset26 - length 1895 (Z9 firmware 1.0)
8376
- DataMember => 'Offset26',
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{Offset26} = $val || 0x10000000; undef', # (ignore if 0)
8420
+ RawConv => '$$self{MenuOffset} = $val || 0x10000000; undef', # (ignore if 0)
8381
8421
  },
8382
- ### 0x6c70 - Offset3 info start (Z9 firmware 1.00)
8383
- 0x6c6f => {
8384
- Name => 'Offset3Hook',
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 Offset3 data
8388
- Hook => '$varSize = $$self{Offset3} - 0x6c70',
8428
+ # account for variable location of SequenceOffset data
8429
+ Hook => '$varSize = $$self{SequenceOffset} - 0x0094',
8389
8430
  },
8390
- 0x6c90 => {
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
- 0x6c98 => {
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
- 0x6c9a => {
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{IntervalShooting} > 0',
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
- ### 0xeaeb - OrientationInfo start (Z9 firmware 1.00)
8419
- 0xeaea => {
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} - 0xeaeb',
8506
+ Hook => '$varSize = $$self{OrientationOffset} - 0x80c5',
8425
8507
  },
8426
- 0xeaeb => {
8508
+ 0x80c5 => {
8427
8509
  Name => 'RollAngle',
8428
- Format => 'fixed32u',
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
- 0xeaef => {
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
- 0xeaf3 => {
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
- ### 0xeb5f - Offset26 info start (Z9 firmware 1.00)
8454
- 0xeb6f => {
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{Offset26}; undef', # (ignore if 0)
8545
+ RawConv => '$$self{MenuSettingsZ9Offset} = ($val || 0x10000000) + $$self{MenuOffset}; undef', # (ignore if 0)
8460
8546
  },
8461
- 0xeb70 => {
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} - 0xec4b',
8553
+ Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0x8225',
8467
8554
  },
8468
- 0xec4b => [
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{IntervalShooting} > 0',
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{IntervalShooting} > 0',
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{IntervalShooting} > 0',
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{IntervalShooting} > 0',
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
- #1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
9113
- #1826 VerticalISOButton CSf2
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 => 'External',
9141
- 2 => 'Internal',
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
- # NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
9279
- 0 => {
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 => 'None',
9288
- 1 => 'External',
9289
- 2 => 'Internal',
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
- 17.2 => { #PH
9382
- Name => 'FlashGroupCControlMode',
9383
- Mask => 0x0f,
9384
- Notes => 'note: group C tags may apply to group B settings for some models',
9385
- DataMember => 'FlashGroupCControlMode',
9386
- RawConv => '$$self{FlashGroupCControlMode} = $val',
9387
- PrintConv => \%flashControlMode,
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;