exiftool-vendored.pl 12.80.0 → 12.84.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 (43) hide show
  1. package/bin/Changes +81 -0
  2. package/bin/MANIFEST +6 -18
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +1 -1
  5. package/bin/README +4 -2
  6. package/bin/build_geolocation +872 -0
  7. package/bin/config_files/example.config +2 -2
  8. package/bin/exiftool +61 -17
  9. package/bin/fmt_files/gpx.fmt +2 -1
  10. package/bin/fmt_files/gpx_wpt.fmt +2 -1
  11. package/bin/lib/Image/ExifTool/Apple.pm +51 -7
  12. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +47 -31
  13. package/bin/lib/Image/ExifTool/CanonVRD.pm +19 -6
  14. package/bin/lib/Image/ExifTool/DJI.pm +29 -0
  15. package/bin/lib/Image/ExifTool/Exif.pm +19 -2
  16. package/bin/lib/Image/ExifTool/FujiFilm.pm +20 -7
  17. package/bin/lib/Image/ExifTool/GM.pm +552 -0
  18. package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  19. package/bin/lib/Image/ExifTool/Geolocation.pm +423 -178
  20. package/bin/lib/Image/ExifTool/Geotag.pm +26 -13
  21. package/bin/lib/Image/ExifTool/M2TS.pm +32 -4
  22. package/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
  23. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Nikon.pm +337 -27
  25. package/bin/lib/Image/ExifTool/NikonCustom.pm +55 -1
  26. package/bin/lib/Image/ExifTool/Olympus.pm +1 -0
  27. package/bin/lib/Image/ExifTool/OpenEXR.pm +21 -3
  28. package/bin/lib/Image/ExifTool/PNG.pm +3 -3
  29. package/bin/lib/Image/ExifTool/QuickTime.pm +45 -24
  30. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +66 -30
  31. package/bin/lib/Image/ExifTool/README +2 -0
  32. package/bin/lib/Image/ExifTool/Sony.pm +16 -7
  33. package/bin/lib/Image/ExifTool/TagLookup.pm +4827 -4778
  34. package/bin/lib/Image/ExifTool/TagNames.pod +953 -620
  35. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +32 -9
  36. package/bin/lib/Image/ExifTool/Writer.pl +169 -130
  37. package/bin/lib/Image/ExifTool/XMP.pm +4 -2
  38. package/bin/lib/Image/ExifTool/XMP2.pl +3 -0
  39. package/bin/lib/Image/ExifTool.pm +106 -48
  40. package/bin/lib/Image/ExifTool.pod +47 -25
  41. package/bin/perl-Image-ExifTool.spec +1 -1
  42. package/bin/pp_build_exe.args +4 -4
  43. package/package.json +3 -3
@@ -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.30';
68
+ $VERSION = '4.33';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -678,6 +678,7 @@ sub GetAFPointGrid($$;$);
678
678
  'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
679
679
  'FD 00 44 44 18 18 DF 00' => 'Voigtlander APO-Lanthar 35mm F2', #30
680
680
  'FD 00 59 59 18 18 DF 00' => 'Voigtlander Macro APO-Lanthar 65mm F2', #30
681
+ 'FD 00 48 48 07 07 DF 00' => 'Voigtlander Nokton 40mm F1.2 Aspherical', #30
681
682
  #
682
683
  '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
683
684
  '00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
@@ -890,6 +891,12 @@ my %bracketProgramZ9 = (
890
891
  9 => '9F',
891
892
  );
892
893
 
894
+ my %dialsFrameAdvanceZoomPositionZ9 = (
895
+ 0 => 'Hold',
896
+ 1 => 'Focus Point',
897
+ 2 => 'Face Priority',
898
+ );
899
+
893
900
  my %dynamicAfAreaModesZ9 = (
894
901
  0 => 'Small',
895
902
  1 => 'Medium',
@@ -949,6 +956,7 @@ my %highFrameRateZ9 = (
949
956
  3 => 'C30',
950
957
  5 => 'C60',
951
958
  4 => 'C120',
959
+ 6 => 'C15',
952
960
  );
953
961
 
954
962
  my %imageAreaD6 = (
@@ -1118,6 +1126,12 @@ my %movieFrameSizeZ9 = (
1118
1126
  3 => '7680x4320',
1119
1127
  );
1120
1128
 
1129
+ my %movieSlowMotion = (
1130
+ 0 => 'Off',
1131
+ 1 => 'On (4x)', # 120p recording with playback @ 30p [1920 x 1080; 30p x 4] or 100p recording with playback @ 25p [1920 x 1080; 25p x 4]
1132
+ 2 => 'On (5x)', # 120p recording with playback @ 24p [1920 x 1080; 20p x 5]
1133
+ );
1134
+
1121
1135
  my %movieToneMapZ9 = (
1122
1136
  0 => 'SDR',
1123
1137
  1 => 'HLG',
@@ -1125,7 +1139,7 @@ my %movieToneMapZ9 = (
1125
1139
  );
1126
1140
 
1127
1141
  my %movieTypeZ9 = (
1128
- 1 => 'H.265 8-bit (MP4)',
1142
+ 1 => 'H.264 8-bit (MP4)',
1129
1143
  2 => 'H.265 8-bit (MOV)',
1130
1144
  3 => 'H.265 10-bit (MOV)',
1131
1145
  4 => 'ProRes 422 HQ 10-bit (MOV)',
@@ -1172,6 +1186,22 @@ my %offLowNormalHighZ7 = (
1172
1186
  3 => 'High',
1173
1187
  );
1174
1188
 
1189
+ my %pixelShiftDelay = (
1190
+ 0 => 'Off',
1191
+ 1 => '1 s',
1192
+ 2 => '2 s',
1193
+ 3 => '3 s',
1194
+ 4 => '5 s',
1195
+ 5 => '10 s',
1196
+ );
1197
+
1198
+ my %pixelShiftNumberShots = (
1199
+ 0 => '4',
1200
+ 1 => '8',
1201
+ 2 => '16',
1202
+ 3 => '32',
1203
+ );
1204
+
1175
1205
  my %portraitImpressionBalanceZ8 = (
1176
1206
  0 => 'Off',
1177
1207
  1 => 'Mode 1',
@@ -5469,20 +5499,21 @@ my %nikonFocalConversions = (
5469
5499
  28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
5470
5500
  29 => 'Nikkor Z 28mm f/2.8', #IB
5471
5501
  30 => 'Nikkor Z 400mm f/2.8 TC VR S', #28
5472
- 31 => 'Nikkor Z 24-120 f/4', #28
5502
+ 31 => 'Nikkor Z 24-120mm f/4 S', #github#250
5473
5503
  32 => 'Nikkor Z 800mm f/6.3 VR S', #28
5474
5504
  35 => 'Nikkor Z 28-75mm f/2.8', #IB
5475
5505
  36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
5476
5506
  37 => 'Nikkor Z 600mm f/4 TC VR S', #28
5477
5507
  38 => 'Nikkor Z 85mm f/1.2 S', #28
5478
5508
  39 => 'Nikkor Z 17-28mm f/2.8', #IB
5479
- 40 => 'NIKKOR Z 26mm f/2.8', #28
5480
- 41 => 'NIKKOR Z DX 12-28mm f/3.5-5.6 PZ VR', #28
5509
+ 40 => 'Nikkor Z 26mm f/2.8', #28
5510
+ 41 => 'Nikkor Z DX 12-28mm f/3.5-5.6 PZ VR', #28
5481
5511
  42 => 'Nikkor Z 180-600mm f/5.6-6.3 VR', #30
5482
- 43 => 'NIKKOR Z DX 24mm f/1.7', #28
5483
- 44 => 'NIKKOR Z 70-180mm f/2.8', #28
5484
- 45 => 'NIKKOR Z 600mm f/6.3 VR S', #28
5512
+ 43 => 'Nikkor Z DX 24mm f/1.7', #28
5513
+ 44 => 'Nikkor Z 70-180mm f/2.8', #28
5514
+ 45 => 'Nikkor Z 600mm f/6.3 VR S', #28
5485
5515
  46 => 'Nikkor Z 135mm f/1.8 S Plena', #28
5516
+ 48 => 'Nikkor Z 28-400mm f/4-8 VR', #30
5486
5517
  32768 => 'Nikkor Z 400mm f/2.8 TC VR S TC-1.4x', #28
5487
5518
  32769 => 'Nikkor Z 600mm f/4 TC VR S TC-1.4x', #28
5488
5519
  },
@@ -8382,7 +8413,7 @@ my %nikonFocalConversions = (
8382
8413
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
8383
8414
  VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
8384
8415
  DATAMEMBER => [ 0x04 ],
8385
- IS_SUBDIR => [ 0x30, 0x84, 0x8c ],
8416
+ IS_SUBDIR => [ 0x30, 0x80, 0x84, 0x8c ],
8386
8417
  WRITABLE => 1,
8387
8418
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8388
8419
  NOTES => 'These tags are extracted from encrypted data in images from the Z8.',
@@ -8425,6 +8456,16 @@ my %nikonFocalConversions = (
8425
8456
  Start => '$val',
8426
8457
  },
8427
8458
  },
8459
+ 0x80 => {
8460
+ Name => 'AutoCaptureOffset',
8461
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
8462
+ Format => 'int32u',
8463
+ AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
8464
+ SubDirectory => {
8465
+ TagTable => 'Image::ExifTool::Nikon::AutoCaptureInfo',
8466
+ Start => '$val',
8467
+ },
8468
+ },
8428
8469
  0x84 => {
8429
8470
  Name => 'OrientOffset',
8430
8471
  Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
@@ -8709,13 +8750,24 @@ my %nikonFocalConversions = (
8709
8750
  0x10 => [
8710
8751
  {
8711
8752
  Name => 'MenuSettingsOffsetZ8',
8753
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "02.00"',
8712
8754
  Format => 'int32u',
8713
- Notes => 'Firmware versions 1.0.0',
8755
+ Notes => 'Firmware versions 1.0.0 and 1.1.0',
8714
8756
  SubDirectory => {
8715
8757
  TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
8716
8758
  Start => '$dirStart + $val',
8717
8759
  },
8718
8760
  },
8761
+ {
8762
+ Name => 'MenuSettingsOffsetZ8v2',
8763
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
8764
+ Notes => 'Firmware version 2.0',
8765
+ Format => 'int32u',
8766
+ SubDirectory => {
8767
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8v2',
8768
+ Start => '$dirStart + $val',
8769
+ },
8770
+ },
8719
8771
  ],
8720
8772
  );
8721
8773
 
@@ -9065,15 +9117,7 @@ my %nikonFocalConversions = (
9065
9117
  #463 => SilentPhotography
9066
9118
  502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
9067
9119
  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
- },
9120
+ 506 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 },
9077
9121
  510 => {
9078
9122
  Name => 'MovieType',
9079
9123
  Unknown => 1,
@@ -9284,7 +9328,7 @@ my %nikonFocalConversions = (
9284
9328
  },
9285
9329
  618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
9286
9330
  622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
9287
- 636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9331
+ 636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9288
9332
  730 => {
9289
9333
  Name => 'MovieImageArea',
9290
9334
  Unknown => 1,
@@ -9333,7 +9377,7 @@ my %nikonFocalConversions = (
9333
9377
  Format => 'undef[730]',
9334
9378
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
9335
9379
  },
9336
- 1682 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9380
+ 1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9337
9381
  1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9338
9382
  1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
9339
9383
  1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
@@ -9384,6 +9428,260 @@ my %nikonFocalConversions = (
9384
9428
  1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
9385
9429
  1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
9386
9430
  );
9431
+ %Image::ExifTool::Nikon::MenuSettingsZ8v2 = (
9432
+ %binaryDataAttrs,
9433
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9434
+ DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596, 2046 ],
9435
+ IS_SUBDIR => [ 943 ],
9436
+ NOTES => 'These tags are used by the Z8 firmware 1.00.',
9437
+ 72 => {
9438
+ Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
9439
+ PrintConv => \%highFrameRateZ9,
9440
+ },
9441
+ 152 => {
9442
+ Name => 'MultipleExposureMode',
9443
+ RawConv => '$$self{MultipleExposureMode} = $val',
9444
+ PrintConv => \%multipleExposureModeZ9,
9445
+ },
9446
+ 154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
9447
+ 184 => {
9448
+ Name => 'IntervalDurationHours',
9449
+ Format => 'int32u',
9450
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9451
+ },
9452
+ 188 => {
9453
+ Name => 'IntervalDurationMinutes',
9454
+ Format => 'int32u',
9455
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9456
+ },
9457
+ 192 => {
9458
+ Name => 'IntervalDurationSeconds',
9459
+ Format => 'int32u',
9460
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9461
+ },
9462
+ 200 => {
9463
+ Name => 'Intervals',
9464
+ Format => 'int32u',
9465
+ RawConv => '$$self{IntervalShootingIntervals} = $val',
9466
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9467
+ },
9468
+ 204 => {
9469
+ Name => 'ShotsPerInterval',
9470
+ Format => 'int32u',
9471
+ RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
9472
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9473
+ },
9474
+ 208 => {
9475
+ Name => 'IntervalExposureSmoothing',
9476
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9477
+ Format => 'int8u',
9478
+ PrintConv => \%offOn,
9479
+ },
9480
+ 210 => {
9481
+ Name => 'IntervalPriority',
9482
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
9483
+ Format => 'int8u',
9484
+ PrintConv => \%offOn,
9485
+ },
9486
+ 244 => {
9487
+ Name => 'FocusShiftNumberShots', #1-300
9488
+ RawConv => '$$self{FocusShiftNumberShots} = $val',
9489
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
9490
+ },
9491
+ 248 => {
9492
+ Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
9493
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
9494
+ },
9495
+ 252 => {
9496
+ Name => 'FocusShiftInterval',
9497
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
9498
+ PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
9499
+ },
9500
+ 256 => {
9501
+ Name => 'FocusShiftExposureLock',
9502
+ Unknown => 1,
9503
+ PrintConv => \%offOn,
9504
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
9505
+ },
9506
+ 286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
9507
+ 288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
9508
+ 324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
9509
+ 338 => { Name => 'AutoISO', PrintConv => \%offOn },
9510
+ 340 => {
9511
+ Name => 'ISOAutoHiLimit',
9512
+ Format => 'int16u',
9513
+ Unknown => 1,
9514
+ ValueConv => '($val-104)/8',
9515
+ ValueConvInv => '8 * ($val + 104)',
9516
+ PrintConv => \%iSOAutoHiLimitZ7,
9517
+ },
9518
+ 342 => {
9519
+ Name => 'ISOAutoFlashLimit',
9520
+ Format => 'int16u',
9521
+ Unknown => 1,
9522
+ ValueConv => '($val-104)/8',
9523
+ ValueConvInv => '8 * ($val + 104)',
9524
+ PrintConv => \%iSOAutoHiLimitZ7,
9525
+ },
9526
+ 350 => {
9527
+ Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
9528
+ ValueConv => '$val / 8',
9529
+ Format => 'int16s',
9530
+ PrintConv => \%iSOAutoShutterTimeZ9,
9531
+ },
9532
+ 432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9533
+ 434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
9534
+ 436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
9535
+ 440 => {
9536
+ Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
9537
+ RawConv => '$$self{FlashControlMode} = $val',
9538
+ PrintConv => \%flashControlModeZ7,
9539
+ },
9540
+ 548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
9541
+ 550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
9542
+ 554 => {
9543
+ Name => 'BracketSet',
9544
+ RawConv => '$$self{BracketSet} = $val',
9545
+ PrintConv => \%bracketSetZ9,
9546
+ },
9547
+ 556 => {
9548
+ Name => 'BracketProgram',
9549
+ Condition => '$$self{BracketSet} < 3',
9550
+ Notes => 'AE and/or Flash Bracketing',
9551
+ PrintConv => \%bracketProgramZ9,
9552
+ },
9553
+ 558 => {
9554
+ Name => 'BracketIncrement',
9555
+ Condition => '$$self{BracketSet} < 3',
9556
+ Notes => 'AE and/or Flash Bracketing',
9557
+ PrintConv => \%bracketIncrementZ9,
9558
+ },
9559
+ 570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
9560
+ #572 HDRSaveRaw 0=> No; 1=> Yes
9561
+ 576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
9562
+ 582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
9563
+ 586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
9564
+ 592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
9565
+ 594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
9566
+ 596 => {
9567
+ Name => 'DynamicAFAreaSize',
9568
+ Condition => '$$self{AFAreaMode} == 2',
9569
+ RawConv => '$$self{DynamicAFAreaSize} = $val',
9570
+ PrintConv => \%dynamicAfAreaModesZ9,
9571
+ },
9572
+ 618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
9573
+ 622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
9574
+ 636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9575
+ 730 => {
9576
+ Name => 'MovieImageArea',
9577
+ Unknown => 1,
9578
+ Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
9579
+ PrintConv => \%imageAreaZ9b,
9580
+ },
9581
+ #736 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 }, #only valid for MovieType H.264 8-bit
9582
+ 740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
9583
+ 742 => {
9584
+ Name => 'MovieISOAutoHiLimit',
9585
+ Format => 'int16u',
9586
+ Unknown => 1,
9587
+ ValueConv => '($val-104)/8',
9588
+ ValueConvInv => '8 * ($val + 104)',
9589
+ PrintConv => \%iSOAutoHiLimitZ7,
9590
+ },
9591
+ 744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
9592
+ 746 => {
9593
+ Name => 'MovieISOAutoManualMode',
9594
+ Format => 'int16u',
9595
+ Unknown => 1,
9596
+ ValueConv => '($val-104)/8',
9597
+ ValueConvInv => '8 * ($val + 104)',
9598
+ PrintConv => \%iSOAutoHiLimitZ7,
9599
+ },
9600
+ 820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
9601
+ 822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9602
+ 828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
9603
+ 830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
9604
+ 832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
9605
+ 834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
9606
+ 836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
9607
+ 840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9608
+ 842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
9609
+ 844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
9610
+ 846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9611
+ 848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
9612
+ 850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
9613
+ 878 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
9614
+ 880 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
9615
+ 886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
9616
+ 887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
9617
+ 888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
9618
+ 896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
9619
+ 943 => {
9620
+ Name => 'CustomSettingsZ8',
9621
+ Format => 'undef[755]',
9622
+ SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
9623
+ },
9624
+ 1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9625
+ 1700 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9626
+ 1706 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
9627
+ 1728 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
9628
+ 1732 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
9629
+ 1734 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9630
+ 1736 => { Name => 'NonCPULens3FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9631
+ 1738 => { Name => 'NonCPULens4FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9632
+ 1740 => { Name => 'NonCPULens5FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9633
+ 1742 => { Name => 'NonCPULens6FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9634
+ 1744 => { Name => 'NonCPULens7FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9635
+ 1746 => { Name => 'NonCPULens8FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9636
+ 1748 => { Name => 'NonCPULens9FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9637
+ 1750 => { Name => 'NonCPULens10FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9638
+ 1752 => { Name => 'NonCPULens11FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9639
+ 1754 => { Name => 'NonCPULens12FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9640
+ 1756 => { Name => 'NonCPULens13FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9641
+ 1758 => { Name => 'NonCPULens14FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9642
+ 1760 => { Name => 'NonCPULens15FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9643
+ 1762 => { Name => 'NonCPULens16FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9644
+ 1764 => { Name => 'NonCPULens17FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9645
+ 1766 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9646
+ 1768 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9647
+ 1770 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
9648
+ 1812 => { Name => 'NonCPULens1MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9649
+ 1816 => { Name => 'NonCPULens2MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9650
+ 1820 => { Name => 'NonCPULens3MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9651
+ 1824 => { Name => 'NonCPULens4MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9652
+ 1828 => { Name => 'NonCPULens5MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9653
+ 1832 => { Name => 'NonCPULens6MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9654
+ 1836 => { Name => 'NonCPULens7MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9655
+ 1840 => { Name => 'NonCPULens8MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9656
+ 1844 => { Name => 'NonCPULens9MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9657
+ 1848 => { Name => 'NonCPULens10MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9658
+ 1852 => { Name => 'NonCPULens11MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9659
+ 1856 => { Name => 'NonCPULens12MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9660
+ 1860 => { Name => 'NonCPULens13MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9661
+ 1864 => { Name => 'NonCPULens14MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9662
+ 1868 => { Name => 'NonCPULens15MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9663
+ 1872 => { Name => 'NonCPULens16MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9664
+ 1876 => { Name => 'NonCPULens17MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9665
+ 1880 => { Name => 'NonCPULens18MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9666
+ 1884 => { Name => 'NonCPULens19MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9667
+ 1888 => { Name => 'NonCPULens20MaxAperture', Format => 'int32u', PrintConv => 'sprintf("%.1fmm",$val/100)', Unknown => 1},
9668
+ 1824 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
9669
+ 1842 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
9670
+ 1843 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
9671
+ 1878 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
9672
+ 1906 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
9673
+ 1915 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
9674
+ 2046 => { Name => 'PixelShiftShooting', RawConv => '$$self{PixelShiftShooting} = $val', PrintConv => \%multipleExposureModeZ9 }, #off/on/on (series)
9675
+ 2048 => { Name => 'PixelShiftNumberShots', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftNumberShots },
9676
+ 2050 => { Name => 'PixelShiftDelay', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftDelay },
9677
+ 2052 => { Name => 'PlaybackButton', %buttonsZ9 }, #CSf2
9678
+ 2054 => { Name => 'WBButton', %buttonsZ9}, #CSf2
9679
+ 2056 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
9680
+ 2058 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
9681
+ 2060 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
9682
+ 2062 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
9683
+ 2064 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
9684
+ );
9387
9685
  %Image::ExifTool::Nikon::MenuSettingsZ9 = (
9388
9686
  %binaryDataAttrs,
9389
9687
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -9733,7 +10031,7 @@ my %nikonFocalConversions = (
9733
10031
  RawConv => '$$self{DynamicAFAreaSize} = $val',
9734
10032
  PrintConv => \%dynamicAfAreaModesZ9,
9735
10033
  },
9736
- 636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
10034
+ 636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9737
10035
  646 => {
9738
10036
  Name => 'MovieImageArea',
9739
10037
  Unknown => 1,
@@ -9833,7 +10131,7 @@ my %nikonFocalConversions = (
9833
10131
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9834
10132
  DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
9835
10133
  IS_SUBDIR => [ 847 ],
9836
- NOTES => 'These tags are used by the Z9 firmware 3.00.',
10134
+ NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0',
9837
10135
  72 => {
9838
10136
  Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
9839
10137
  PrintConv => \%highFrameRateZ9,
@@ -9970,7 +10268,7 @@ my %nikonFocalConversions = (
9970
10268
  RawConv => '$$self{DynamicAFAreaSize} = $val',
9971
10269
  PrintConv => \%dynamicAfAreaModesZ9,
9972
10270
  },
9973
- 636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
10271
+ 636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9974
10272
  646 => {
9975
10273
  Name => 'MovieImageArea',
9976
10274
  Unknown => 1,
@@ -10116,6 +10414,18 @@ my %nikonFocalConversions = (
10116
10414
  Format => 'fixed32u',
10117
10415
  PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
10118
10416
  },
10417
+ 2052 => { #CSf2-m3
10418
+ Name => 'CommandDialFrameAdvanceZoom',
10419
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
10420
+ PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
10421
+ Unknown => 1
10422
+ },
10423
+ 2054 => { #CSf2-n3
10424
+ Name => 'SubCommandDialFrameAdvanceZoom',
10425
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
10426
+ PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
10427
+ Unknown => 1
10428
+ },
10119
10429
  2056 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
10120
10430
  2058 => { Name => 'WBButton', %buttonsZ9}, #CSf2
10121
10431
  2060 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
@@ -11406,7 +11716,7 @@ my %nikonFocalConversions = (
11406
11716
  },
11407
11717
  );
11408
11718
 
11409
- # MakerNotes0x56 - burst info for Z9
11719
+ # MakerNotes0x56 - burst info for Z8 and Z9
11410
11720
  %Image::ExifTool::Nikon::MakerNotes0x56 = (
11411
11721
  %binaryDataAttrs,
11412
11722
  GROUPS => { 0 => 'MakerNotes' },
@@ -11416,7 +11726,7 @@ my %nikonFocalConversions = (
11416
11726
  Writable => 0,
11417
11727
  },
11418
11728
  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.
11729
+ 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
11730
  Format => 'int16u'
11421
11731
  },
11422
11732
  );
@@ -11440,7 +11750,7 @@ my %nikonFocalConversions = (
11440
11750
  Name => 'VignetteInfo', # Z-series vignette correction information
11441
11751
  SubDirectory => { TagTable => 'Image::ExifTool::Nikon::VignetteInfo' },
11442
11752
  },
11443
- # 0x07 - undef[104]
11753
+ # 0x07 - undef[104] #possibly Z-series diffration correction information (#28)
11444
11754
  # 0x08 - undef[24]
11445
11755
  # 0x09 - undef[36]
11446
11756
  );
@@ -15,7 +15,7 @@ package Image::ExifTool::NikonCustom;
15
15
  use strict;
16
16
  use vars qw($VERSION @ISA @EXPORT_OK %buttonsZ9);
17
17
 
18
- $VERSION = '1.24';
18
+ $VERSION = '1.25';
19
19
 
20
20
  @ISA = qw(Exporter);
21
21
  @EXPORT_OK = qw(%buttonsZ9);
@@ -77,6 +77,7 @@ $VERSION = '1.24';
77
77
  66 => 'Voice Memo',
78
78
  70 => 'Photo Shooting Bank',
79
79
  71 => 'ISO',
80
+ 72 => 'Shooting Mode',
80
81
  73 => 'Exposure Compensation',
81
82
  76 => 'Silent Mode',
82
83
  78 => 'LiveView Information',
@@ -90,6 +91,9 @@ $VERSION = '1.24';
90
91
  86 => 'Save Focus Position',
91
92
  87 => 'Recall Focus Position',
92
93
  88 => 'Recall Shooting Functions (Hold)',
94
+ 89 => 'Set Picture Control (HLG)',
95
+ 90 => 'Skin Softening',
96
+ 91 => 'Portrait Impression Balance',
93
97
  97 => 'High Frequency Flicker Reduction',
94
98
  98 => 'Switch FX/DX',
95
99
  99 => 'View Mode (Photo LV)',
@@ -104,7 +108,25 @@ $VERSION = '1.24';
104
108
  110 => 'DISP - Cycle Information Display (playback)', # Playback mode
105
109
  111 => 'Resume Shooting',
106
110
  112 => 'Switch Eyes',
111
+ 113 => 'Power Zoom +',
112
+ 114 => 'Power Zoom -',
107
113
  115 => 'Delete',
114
+ 116 => 'Pixel Shift Shooting',
115
+ 117 => 'Cycle AF-area Mode',
116
+ 118 => 'Raw Processing (Current)', #118-131 are Retouch options
117
+ 119 => 'Raw Processing (Multiple)',
118
+ 120 => 'Trim',
119
+ 121 => 'Resize (Current)',
120
+ 122 => 'Resize (Multiple)',
121
+ 123 => 'D-Lighting',
122
+ 124 => 'Straighten',
123
+ 125 => 'Distortion Control',
124
+ 126 => 'Perspective Control',
125
+ 127 => 'Monochrome',
126
+ 128 => 'Overlay (Add)',
127
+ 129 => 'Lighten',
128
+ 130 => 'Darken',
129
+ 131 => 'Motion Blend',
108
130
  },
109
131
  );
110
132
  my %dialsZ9 = (
@@ -118,6 +140,18 @@ my %dialsZ9 = (
118
140
  7 => 'Rating',
119
141
  8 => 'Page',
120
142
  9 => 'Skip To First Shot In Series',
143
+ 10 => 'Uploaded to FTP',
144
+ 11 => 'Uploaded to Computer',
145
+ );
146
+ my %dialsVideoZ9 = (
147
+ 0 => '2 s',
148
+ 1 => '5 s',
149
+ 2 => '10 s',
150
+ 3 => '1 Frame',
151
+ 4 => '5 Frames',
152
+ 5 => '10 Frames',
153
+ 6 => 'First/Last Frame',
154
+ 7 => 'Playback Speed',
121
155
  );
122
156
  my %evfGridsZ9 = (
123
157
  0 => '3x3',
@@ -9974,6 +10008,9 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9974
10008
  421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
9975
10009
  423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
9976
10010
  437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
10011
+ 453 => { Name => 'WBButtonPlaybackMode', %buttonsZ9}, #CSf2
10012
+ 461 => { Name => 'CommandDialVideoPlaybackMode', PrintConv => \%dialsVideoZ9, Unknown => 1}, # CSf3-b
10013
+ 465 => { Name => 'SubCommandDialVideoPlaybackMode', PrintConv => \%dialsVideoZ9, Unknown => 1}, # CSf3-b
9977
10014
  467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
9978
10015
  459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
9979
10016
  463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
@@ -10055,6 +10092,11 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10055
10092
  },
10056
10093
  681 => { Name => 'ViewModeShowEffectsOfSettings', PrintConv => { 0=>'Always', 1=> 'Only When Flash Not Used'}, Unknown => 1 }, #CS8-a
10057
10094
  683 => { Name => 'DispButton', %buttonsZ9}, #CSf2
10095
+ 753 => { #CSd5
10096
+ Name => 'ExposureDelay',
10097
+ Format => 'int16u',
10098
+ PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
10099
+ },
10058
10100
  );
10059
10101
 
10060
10102
  # Z9 custom settings (ref 1) #base at offset26 + 1035 (firmware 1.0.0)
@@ -10806,7 +10848,19 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10806
10848
  471 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
10807
10849
  477 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
10808
10850
  483 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
10851
+ 485 => { # CSf3-m2
10852
+ Name => 'CommandDialVideoPlaybackMode',
10853
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
10854
+ PrintConv => \%dialsVideoZ9,
10855
+ Unknown => 1
10856
+ },
10809
10857
  487 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
10858
+ 489 => { # CSf3-n2
10859
+ Name => 'SubCommandDialVideoPlaybackMode',
10860
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
10861
+ PrintConv => \%dialsVideoZ9,
10862
+ Unknown => 1
10863
+ },
10810
10864
  491 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
10811
10865
  493 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
10812
10866
  505 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
@@ -197,6 +197,7 @@ my %olympusLensTypes = (
197
197
  # '65535 07 40' - Seen for LUMIX S 16-35/F4 on Panasonic DC-S1H (ref PH)
198
198
  # Other makes
199
199
  '24 01 10' => 'Venus Optics Laowa 50mm F2.8 2x Macro', #DonKomarechka
200
+ 'f7 03 10' => 'LAOWA C&D-Dreamer MFT 7.5mm F2.0', #forum3833
200
201
  );
201
202
 
202
203
  # lookup for Olympus camera types (ref PH)