exiftool_vendored 12.42.0 → 12.52.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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +226 -6
  3. data/bin/MANIFEST +14 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +45 -44
  7. data/bin/config_files/acdsee.config +2 -1
  8. data/bin/config_files/frameCount.config +56 -0
  9. data/bin/config_files/tiff_version.config +1 -1
  10. data/bin/exiftool +116 -97
  11. data/bin/fmt_files/gpx.fmt +3 -0
  12. data/bin/fmt_files/gpx_wpt.fmt +3 -0
  13. data/bin/lib/Image/ExifTool/Apple.pm +16 -3
  14. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +23 -12
  15. data/bin/lib/Image/ExifTool/Canon.pm +66 -37
  16. data/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
  17. data/bin/lib/Image/ExifTool/CanonVRD.pm +7 -8
  18. data/bin/lib/Image/ExifTool/Casio.pm +3 -3
  19. data/bin/lib/Image/ExifTool/DJI.pm +2 -1
  20. data/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
  21. data/bin/lib/Image/ExifTool/EXE.pm +9 -1
  22. data/bin/lib/Image/ExifTool/Exif.pm +17 -12
  23. data/bin/lib/Image/ExifTool/FLAC.pm +17 -3
  24. data/bin/lib/Image/ExifTool/FLIR.pm +9 -7
  25. data/bin/lib/Image/ExifTool/FlashPix.pm +26 -3
  26. data/bin/lib/Image/ExifTool/FujiFilm.pm +51 -4
  27. data/bin/lib/Image/ExifTool/GPS.pm +31 -5
  28. data/bin/lib/Image/ExifTool/Geotag.pm +36 -8
  29. data/bin/lib/Image/ExifTool/ICC_Profile.pm +3 -2
  30. data/bin/lib/Image/ExifTool/ICO.pm +143 -0
  31. data/bin/lib/Image/ExifTool/ID3.pm +6 -6
  32. data/bin/lib/Image/ExifTool/IPTC.pm +5 -1
  33. data/bin/lib/Image/ExifTool/JPEG.pm +1 -0
  34. data/bin/lib/Image/ExifTool/Jpeg2000.pm +24 -3
  35. data/bin/lib/Image/ExifTool/LNK.pm +5 -2
  36. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  37. data/bin/lib/Image/ExifTool/Lang/fr.pm +6015 -759
  38. data/bin/lib/Image/ExifTool/Lang/sk.pm +1927 -0
  39. data/bin/lib/Image/ExifTool/M2TS.pm +98 -8
  40. data/bin/lib/Image/ExifTool/MIE.pm +9 -3
  41. data/bin/lib/Image/ExifTool/MISB.pm +494 -0
  42. data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -1
  43. data/bin/lib/Image/ExifTool/Matroska.pm +272 -48
  44. data/bin/lib/Image/ExifTool/Motorola.pm +8 -2
  45. data/bin/lib/Image/ExifTool/Nikon.pm +746 -382
  46. data/bin/lib/Image/ExifTool/NikonCustom.pm +139 -106
  47. data/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
  48. data/bin/lib/Image/ExifTool/Olympus.pm +6 -4
  49. data/bin/lib/Image/ExifTool/PNG.pm +8 -1
  50. data/bin/lib/Image/ExifTool/Panasonic.pm +21 -4
  51. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
  52. data/bin/lib/Image/ExifTool/Parrot.pm +96 -2
  53. data/bin/lib/Image/ExifTool/Pentax.pm +7 -2
  54. data/bin/lib/Image/ExifTool/Photoshop.pm +29 -3
  55. data/bin/lib/Image/ExifTool/QuickTime.pm +166 -13
  56. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +161 -22
  57. data/bin/lib/Image/ExifTool/README +15 -4
  58. data/bin/lib/Image/ExifTool/RIFF.pm +106 -9
  59. data/bin/lib/Image/ExifTool/Samsung.pm +2 -2
  60. data/bin/lib/Image/ExifTool/Sigma.pm +27 -1
  61. data/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
  62. data/bin/lib/Image/ExifTool/Sony.pm +75 -47
  63. data/bin/lib/Image/ExifTool/TagInfoXML.pm +13 -6
  64. data/bin/lib/Image/ExifTool/TagLookup.pm +4791 -4519
  65. data/bin/lib/Image/ExifTool/TagNames.pod +2056 -1446
  66. data/bin/lib/Image/ExifTool/Text.pm +3 -4
  67. data/bin/lib/Image/ExifTool/Torrent.pm +2 -3
  68. data/bin/lib/Image/ExifTool/Validate.pm +3 -3
  69. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
  70. data/bin/lib/Image/ExifTool/WriteExif.pl +100 -23
  71. data/bin/lib/Image/ExifTool/WriteIPTC.pl +2 -6
  72. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
  73. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +12 -7
  74. data/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
  75. data/bin/lib/Image/ExifTool/WriteXMP.pl +15 -1
  76. data/bin/lib/Image/ExifTool/Writer.pl +46 -18
  77. data/bin/lib/Image/ExifTool/XMP.pm +78 -59
  78. data/bin/lib/Image/ExifTool/XMP2.pl +19 -4
  79. data/bin/lib/Image/ExifTool/ZIP.pm +19 -7
  80. data/bin/lib/Image/ExifTool.pm +146 -38
  81. data/bin/lib/Image/ExifTool.pod +83 -69
  82. data/bin/perl-Image-ExifTool.spec +43 -43
  83. data/lib/exiftool_vendored/version.rb +1 -1
  84. metadata +10 -4
@@ -15,68 +15,87 @@ package Image::ExifTool::NikonCustom;
15
15
  use strict;
16
16
  use vars qw($VERSION);
17
17
 
18
- $VERSION = '1.20';
18
+ $VERSION = '1.22';
19
19
 
20
20
  my %buttonsZ9= (
21
- 0 => 'None',
22
- 1 => 'Preview',
23
- 3 => 'FV Lock',
24
- 4 => 'AE/AF Lock',
25
- 5 => 'AE Lock Only',
26
- 6 => 'AE Lock (reset on release)',
27
- 7 => 'AE Lock (hold)',
28
- 8 => 'AF Lock Only',
29
- 9 => 'AF-On',
30
- 10 => 'Flash Disable/Enable',
31
- 11 => 'Bracketing Burst',
32
- 12 => '+NEF(RAW)',
33
- 18 => 'Virtual Horizon',
34
- 19 => 'Synchronized Release',
35
- 20 => 'My Menu',
36
- 21 => 'My Menu Top Item',
37
- 22 => 'Playback',
38
- 23 => 'Rating',
39
- 24 => 'Protect',
40
- 25 => 'Zoom',
41
- 26 => 'Focus Peaking',
42
- 28 => 'Image Area',
43
- 30 => 'Non-CPU Lens',
44
- 31 => 'Active-D Lighting',
45
- 33 => '1 Stop Speed/Aperture',
46
- 35 => 'Metering',
47
- 36 => 'Auto Bracketing',
48
- 37 => 'Multiple Exposure',
49
- 38 => 'HDR Overlay',
50
- 39 => 'Picture Control',
51
- 40 => 'Quality',
52
- 41 => 'Focus Mode/AF AreaMode',
53
- 42 => 'Select Center Focus Point',
54
- 44 => 'Record Movie',
55
- 47 => 'Choose Folder',
56
- 48 => 'Power Aperture (Open)',
57
- 49 => 'Power Aperture (Close)',
58
- 52 => 'Microphone Sensitivity',
59
- 57 => 'Preset Focus Point',
60
- 58 => 'AE/AWB Lock (hold)',
61
- 59 => 'AF-AreaMode',
62
- 60 => 'AF-AreaMode + AF-On',
63
- 61 => 'Recall Shooting Functions',
64
- 64 => 'Filtered Playback',
65
- 65 => 'Same as AF-On',
66
- 66 => 'Voice Memo',
67
- 70 => 'Photo Shooting Bank',
68
- 73 => 'Exposure Compensation',
69
- 76 => 'Silent Mode',
70
- 78 => 'LiveView Information',
71
- 79 => 'AWB Lock (hold)',
72
- 80 => 'Grid Display',
73
- 81 => 'Starlight View',
74
- 82 => 'Select To Send (PC)',
75
- 83 => 'Select To Send (FTP)',
76
- 85 => 'Control Lock',
77
- 86 => 'Save Focus Position',
78
- 87 => 'Recall Focus Position',
79
- 88 => 'Recall Shooting Functions (Hold)',
21
+ SeparateTable => 'ButtonsZ9',
22
+ PrintConv => {
23
+ 0 => 'None',
24
+ 1 => 'Preview',
25
+ 3 => 'FV Lock',
26
+ 4 => 'AE/AF Lock',
27
+ 5 => 'AE Lock Only',
28
+ 6 => 'AE Lock (reset on release)',
29
+ 7 => 'AE Lock (hold)',
30
+ 8 => 'AF Lock Only',
31
+ 9 => 'AF-On',
32
+ 10 => 'Flash Disable/Enable',
33
+ 11 => 'Bracketing Burst',
34
+ 12 => '+NEF(RAW)',
35
+ 18 => 'Virtual Horizon',
36
+ 19 => 'Synchronized Release',
37
+ 20 => 'My Menu',
38
+ 21 => 'My Menu Top Item',
39
+ 22 => 'Playback',
40
+ 23 => 'Rating',
41
+ 24 => 'Protect',
42
+ 25 => 'Zoom',
43
+ 26 => 'Focus Peaking',
44
+ 28 => 'Image Area',
45
+ 30 => 'Non-CPU Lens',
46
+ 31 => 'Active-D Lighting',
47
+ 33 => '1 Stop Speed/Aperture',
48
+ 34 => 'White Balance',
49
+ 35 => 'Metering',
50
+ 36 => 'Auto Bracketing',
51
+ 37 => 'Multiple Exposure',
52
+ 38 => 'HDR Overlay',
53
+ 39 => 'Picture Control',
54
+ 40 => 'Quality',
55
+ 41 => 'Focus Mode/AF AreaMode',
56
+ 42 => 'Select Center Focus Point',
57
+ 44 => 'Record Movie',
58
+ 47 => 'Choose Folder',
59
+ 48 => 'Power Aperture (Open)',
60
+ 49 => 'Power Aperture (Close)',
61
+ 52 => 'Microphone Sensitivity',
62
+ 57 => 'Preset Focus Point',
63
+ 58 => 'AE/AWB Lock (hold)',
64
+ 59 => 'AF-AreaMode',
65
+ 60 => 'AF-AreaMode + AF-On',
66
+ 61 => 'Recall Shooting Functions',
67
+ 64 => 'Filtered Playback',
68
+ 65 => 'Same as AF-On',
69
+ 66 => 'Voice Memo',
70
+ 70 => 'Photo Shooting Bank',
71
+ 71 => 'ISO',
72
+ 73 => 'Exposure Compensation',
73
+ 76 => 'Silent Mode',
74
+ 78 => 'LiveView Information',
75
+ 79 => 'AWB Lock (hold)',
76
+ 80 => 'Grid Display',
77
+ 81 => 'Starlight View',
78
+ 82 => 'Select To Send (PC)',
79
+ 83 => 'Select To Send (FTP)',
80
+ 84 => 'Pattern Tone Range',
81
+ 85 => 'Control Lock',
82
+ 86 => 'Save Focus Position',
83
+ 87 => 'Recall Focus Position',
84
+ 88 => 'Recall Shooting Functions (Hold)',
85
+ 97 => 'High Frequency Flicker Reduction',
86
+ 98 => 'Switch FX/DX',
87
+ 99 => 'View Mode (Photo LV)',
88
+ 100 => 'Photo Flicker Reduction',
89
+ 101 => 'Filtered Playback (Select Criteria)',
90
+ 103 => 'Start Series Playback',
91
+ 104 => 'View Assist',
92
+ 105 => 'Hi-Res Zoom+',
93
+ 106 => 'Hi-Res Zoom-',
94
+ 108 => 'Override Other Cameras',
95
+ 109 => 'DISP - Cycle Information Display (shooting)', # Shooting Mode
96
+ 110 => 'DISP - Cycle Information Display (playback)', # Playback mode
97
+ 111 => 'Resume Shooting',
98
+ },
80
99
  );
81
100
  my %dialsZ9 = (
82
101
  0 => '1 Frame',
@@ -116,16 +135,19 @@ my %focusModeRestrictionsZ9 = (
116
135
  4 => 'No Restrictions',
117
136
  );
118
137
  my %powerOffDelayTimesZ9 = (
119
- 0 => '2 s',
120
- 1 => '4 s',
121
- 3 => '10 s',
122
- 4 => '20 s',
123
- 5 => '30 s',
124
- 6 => '1 min',
125
- 7 => '5 min',
126
- 8 => '10 min',
127
- 11 => '30 min',
128
- 12 => 'No Limit',
138
+ SeparateTable => 'DelaysZ9',
139
+ PrintConv => {
140
+ 0 => '2 s',
141
+ 1 => '4 s',
142
+ 3 => '10 s',
143
+ 4 => '20 s',
144
+ 5 => '30 s',
145
+ 6 => '1 min',
146
+ 7 => '5 min',
147
+ 8 => '10 min',
148
+ 11 => '30 min',
149
+ 12 => 'No Limit',
150
+ },
129
151
  );
130
152
  my %thirdHalfFull = (
131
153
  0 => '1/3 EV',
@@ -9767,10 +9789,10 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9767
9789
  3 => '3 s',
9768
9790
  },
9769
9791
  },
9770
- 51 => { Name => 'PlaybackMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-a
9771
- 53 => { Name => 'MenuMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-b
9772
- 55 => { Name => 'ShootingInfoMonitorOffTime',PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-c
9773
- 57 => { Name => 'ImageReviewMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-d
9792
+ 51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-a
9793
+ 53 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-b
9794
+ 55 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc4-c
9795
+ 57 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-d
9774
9796
  59 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
9775
9797
  61 => { # CSd2 # values: 1-200 & 'No Limit'
9776
9798
  Name => 'MaxContinuousRelease',
@@ -9848,25 +9870,25 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9848
9870
  },
9849
9871
  },
9850
9872
  97 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
9851
- 99 => { Name => 'Func1Button', PrintConv => \%buttonsZ9}, # CSf2-a
9873
+ 99 => { Name => 'Func1Button', %buttonsZ9}, # CSf2-a
9852
9874
  #101 Func1Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-a
9853
9875
  #103 Func1Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
9854
9876
  #105 Func1Button submenu: AreaMode+AF-On 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
9855
9877
  #109 Func1Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-a
9856
9878
  #111 Func1Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-a
9857
9879
  #113 Func1Button & Func1ButtonPlayback submenu: Rating # CSf2-a & CSf3a 0=>'Candidate For Deletion' 6=>''None'
9858
- 115 => { Name => 'Func2Button', PrintConv => \%buttonsZ9}, # CSf2-b
9880
+ 115 => { Name => 'Func2Button', %buttonsZ9}, # CSf2-b
9859
9881
  #117 Func2Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
9860
9882
  #119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
9861
9883
  #121 Func2Button submenu: AreaMode+AF-On 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
9862
9884
  #125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
9863
9885
  #127 Func2Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-b
9864
9886
  #129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
9865
- 131 => { Name => 'AFOnButton', PrintConv => \%buttonsZ9}, # CSf2-c
9866
- 143 => { Name => 'SubSelector', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-g
9867
- 155 => { Name => 'AssignMovieRecordButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-m
9868
- 159 => { Name => 'LensFunc1Button', PrintConv => \%buttonsZ9}, # CSf2-o
9869
- 167 => { Name => 'LensFunc2Button', PrintConv => \%buttonsZ9}, # CSf2-p
9887
+ 131 => { Name => 'AFOnButton', %buttonsZ9}, # CSf2-c
9888
+ 143 => { Name => 'SubSelector', %buttonsZ9, Unknown => 1}, # CSf2-g
9889
+ 155 => { Name => 'AssignMovieRecordButton', %buttonsZ9, Unknown => 1}, # CSf2-m
9890
+ 159 => { Name => 'LensFunc1Button', %buttonsZ9}, # CSf2-o
9891
+ 167 => { Name => 'LensFunc2Button', %buttonsZ9}, # CSf2-p
9870
9892
  173 => { # CSf2-q
9871
9893
  Name => 'LensControlRing',
9872
9894
  PrintConv => {
@@ -9877,8 +9899,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9877
9899
  4 => 'Aperture',
9878
9900
  },
9879
9901
  },
9880
- 175 => { Name => 'MultiSelectorShootMode', PrintConv => \%buttonsZ9}, # CSf2-h called the OK button in camera, tag name retained for compatibility
9881
- 179 => { Name => 'MultiSelectorPlaybackMode', PrintConv => \%buttonsZ9}, # CSf3f
9902
+ 175 => { Name => 'MultiSelectorShootMode', %buttonsZ9}, # CSf2-h called the OK button in camera, tag name retained for compatibility
9903
+ 179 => { Name => 'MultiSelectorPlaybackMode', %buttonsZ9}, # CSf3f
9882
9904
  183 => { Name => 'ShutterSpeedLock', PrintConv => \%offOn }, # CSf4-a
9883
9905
  184 => { Name => 'ApertureLock', PrintConv => \%offOn }, # CSf4-b
9884
9906
  185 => { # CSf5-a Previous cameras reported this tag as part of CmdDialsReverseRotation. Blend with CSf5-b separate settings together to match extant tag name and values
@@ -9902,9 +9924,20 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9902
9924
  }],
9903
9925
  191 => { Name => 'UseDialWithoutHold', PrintConv => \%offOn, Unknown => 1 }, # CSf6
9904
9926
  193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
9905
- 195 => { Name => 'MovieFunc1Button', PrintConv => \%buttonsZ9}, # CSg2-a
9906
- 203 => { Name => 'MovieAF-OnButton', PrintConv => \%buttonsZ9}, # CSg2-f
9907
- 217 => { Name => 'MovieMultiSelector', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-h
9927
+ 195 => { Name => 'MovieFunc1Button', %buttonsZ9}, # CSg2-a
9928
+ 199 => { Name => 'MovieFunc2Button', %buttonsZ9}, # CSg2-b
9929
+ 203 => { Name => 'MovieAF-OnButton', %buttonsZ9}, # CSg2-f
9930
+ 215 => { # CSg2-z
9931
+ Name => 'MovieLensControlRing',
9932
+ PrintConv => {
9933
+ 0 => 'None (Disabled)',
9934
+ 2 => 'ISO Sensitivity',
9935
+ 3 => 'Exposure Compensation',
9936
+ 4 => 'Power Aperture',
9937
+ 5 => 'Hi-Res Zoom',
9938
+ },
9939
+ },
9940
+ 217 => { Name => 'MovieMultiSelector', %buttonsZ9, Unknown => 1}, # CSg2-h
9908
9941
  221 => { Name => 'MovieAFSpeed', ValueConv => '$val - 5', ValueConvInv => '$val + 6' }, # CSg6-a
9909
9942
  223 => { Name => 'MovieAFSpeedApply', rintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg6-b
9910
9943
  225 => { # CSg7
@@ -9931,11 +9964,11 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9931
9964
  269.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
9932
9965
  269.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
9933
9966
  273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
9934
- 277 => { Name => 'VerticalFuncButton', PrintConv => \%buttonsZ9}, # CSf2-c
9935
- 281 => { Name => 'Func3Button', PrintConv => \%buttonsZ9}, # CSf2-c
9936
- 285 => { Name => 'VerticalAFOnButton', PrintConv => \%buttonsZ9}, # CSf2-l
9967
+ 277 => { Name => 'VerticalFuncButton', %buttonsZ9}, # CSf2-c
9968
+ 281 => { Name => 'Func3Button', %buttonsZ9}, # CSf2-c
9969
+ 285 => { Name => 'VerticalAFOnButton', %buttonsZ9}, # CSf2-l
9937
9970
  293 => { Name => 'VerticalMultiSelectorPlaybackMode', PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
9938
- 295 => { Name => 'MovieFunc3Button', PrintConv => \%buttonsZ9}, # CSg2-c
9971
+ 295 => { Name => 'MovieFunc3Button', %buttonsZ9}, # CSg2-c
9939
9972
  335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9940
9973
  336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9941
9974
  337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
@@ -9947,26 +9980,26 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9947
9980
  356 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd14
9948
9981
  357 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
9949
9982
  359 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
9950
- 373 => { Name => 'Func4Button', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-e
9951
- 379 => { Name => 'AudioButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-i
9952
- 381 => { Name => 'QualityButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-j
9953
- 399 => { Name => 'VerticalMultiSelector', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-k
9954
- 421 => { Name => 'Func1ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-a
9955
- 423 => { Name => 'Func2ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-b
9956
- 425 => { Name => 'Func3ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-c
9957
- 431 => { Name => 'Func4ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-e
9958
- 437 => { Name => 'MovieRecordButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-m
9959
- 439 => { Name => 'VerticalFuncButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-d
9960
- 441 => { Name => 'AudioButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-g
9961
- 447 => { Name => 'QualityButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-h
9983
+ 373 => { Name => 'Func4Button', %buttonsZ9, Unknown => 1}, # CSf2-e
9984
+ 379 => { Name => 'AudioButton', %buttonsZ9, Unknown => 1}, # CSf2-i
9985
+ 381 => { Name => 'QualityButton', %buttonsZ9, Unknown => 1}, # CSf2-j
9986
+ 399 => { Name => 'VerticalMultiSelector', %buttonsZ9, Unknown => 1}, # CSf2-k
9987
+ 421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
9988
+ 423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
9989
+ 425 => { Name => 'Func3ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-c
9990
+ 431 => { Name => 'Func4ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-e
9991
+ 437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
9992
+ 439 => { Name => 'VerticalFuncButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-d
9993
+ 441 => { Name => 'AudioButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-g
9994
+ 447 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
9962
9995
  467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
9963
- 453 => { Name => 'WhiteBalanceButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-i
9996
+ 453 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
9964
9997
  459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
9965
9998
  463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
9966
9999
  469 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
9967
- 481 => { Name => 'VerticalMovieFuncButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-d
9968
- 505 => { Name => 'VerticalMovieAFOnButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-l
9969
- 515 => { Name => 'MovieAFAreaMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-e
10000
+ 481 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
10001
+ 505 => { Name => 'VerticalMovieAFOnButton', %buttonsZ9, Unknown => 1}, # CSg2-l
10002
+ 515 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
9970
10003
  #521 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
9971
10004
  #522 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
9972
10005
  #523 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
@@ -2036,11 +2036,13 @@ sub ProcessNikonSettings($$$)
2036
2036
  for ($i=0; $i<$num; ++$i) {
2037
2037
  my $entry = $start + 0x18 + $i * 8;
2038
2038
  my $tag = Get16u($dataPt, $entry);
2039
- my $fmt = Get16u($dataPt, $entry + 2);
2039
+ # this is odd, but either the format is 16-bit and always big-endian,
2040
+ # or it is 8-bit and we have an unknown byte in the entry...
2041
+ my $fmt = Get8u($dataPt, $entry + 3);
2040
2042
  my $val = Get32u($dataPt, $entry + 4);
2041
2043
  # abort if the tag has a format that we haven't yet seen
2042
- # (assuming this is a size/format code. So far we have only seen 0x400)
2043
- $fmt == 0x400 or $et->Warn(sprintf('Unknown format 0x%x for NikonSettings tag 0x%.4x',$fmt,$tag)), last;
2044
+ # (assuming this is a size/format code. So far we have only seen a code of 4)
2045
+ $fmt == 4 or $et->Warn(sprintf('Unknown format $fmt for NikonSettings tag 0x%.4x',$tag)), last;
2044
2046
  $et->HandleTag($tagTablePtr, $tag, $val,
2045
2047
  DataPt => $dataPt,
2046
2048
  DataPos => $$dirInfo{DataPos},
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
40
40
  use Image::ExifTool::Exif;
41
41
  use Image::ExifTool::APP12;
42
42
 
43
- $VERSION = '2.78';
43
+ $VERSION = '2.79';
44
44
 
45
45
  sub PrintLensInfo($$$);
46
46
 
@@ -115,6 +115,7 @@ my %olympusLensTypes = (
115
115
  '0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
116
116
  '0 35 10' => 'Olympus M.Zuiko 100-400mm F5.0-6.3', #IB
117
117
  '0 36 10' => 'Olympus M.Zuiko Digital ED 8-25mm F4 Pro', #IB
118
+ '0 37 10' => 'Olympus M.Zuiko Digital ED 40-150mm F4.0 Pro', #forum3833
118
119
  # Sigma lenses
119
120
  '1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
120
121
  '1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
@@ -433,6 +434,7 @@ my %olympusCameraTypes = (
433
434
  S0092 => 'E-M1MarkIII', #IB
434
435
  S0093 => 'E-P7', #IB
435
436
  S0095 => 'OM-1', #IB
437
+ S0101 => 'OM-5', #IB
436
438
  SR45 => 'D220',
437
439
  SR55 => 'D320L',
438
440
  SR83 => 'D340L',
@@ -1834,7 +1836,7 @@ my %indexInfo = (
1834
1836
  1 => 'Sequential shooting AF',
1835
1837
  2 => 'Continuous AF',
1836
1838
  3 => 'Multi AF',
1837
- 4 => 'Face detect', #11
1839
+ 4 => 'Face Detect', #11
1838
1840
  10 => 'MF',
1839
1841
  }, {
1840
1842
  0 => '(none)',
@@ -1842,7 +1844,7 @@ my %indexInfo = (
1842
1844
  0 => 'S-AF',
1843
1845
  2 => 'C-AF',
1844
1846
  4 => 'MF',
1845
- 5 => 'Face detect',
1847
+ 5 => 'Face Detect',
1846
1848
  6 => 'Imager AF',
1847
1849
  7 => 'Live View Magnification Frame',
1848
1850
  8 => 'AF sensor',
@@ -1919,7 +1921,7 @@ my %indexInfo = (
1919
1921
  PrintConv => [{
1920
1922
  0 => 'Off',
1921
1923
  1 => 'Motorsports',
1922
- 2 => 'Airplnes',
1924
+ 2 => 'Airplanes',
1923
1925
  3 => 'Trains',
1924
1926
  4 => 'Birds',
1925
1927
  5 => 'Dogs & Cats',
@@ -36,7 +36,7 @@ use strict;
36
36
  use vars qw($VERSION $AUTOLOAD %stdCase);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
 
39
- $VERSION = '1.60';
39
+ $VERSION = '1.61';
40
40
 
41
41
  sub ProcessPNG_tEXt($$$);
42
42
  sub ProcessPNG_iTXt($$$);
@@ -339,6 +339,11 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
339
339
  # int32u DividedHeight2
340
340
  # int32u IDAT_Offset2 [location of IDAT with start of DividedHeight2 segment]
341
341
  },
342
+ caBX => { # C2PA metadata
343
+ Name => 'JUMBF',
344
+ SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
345
+ },
346
+ # cICP - Coding-independent code points (added in 2022 specification)
342
347
  );
343
348
 
344
349
  # PNG IHDR chunk
@@ -536,6 +541,8 @@ my %unreg = ( Notes => 'unregistered' );
536
541
  Label => { %unreg },
537
542
  Make => { %unreg, Groups => { 2 => 'Camera' } },
538
543
  Model => { %unreg, Groups => { 2 => 'Camera' } },
544
+ # parameters (written by Stable Diffusion)
545
+ # aesthetic_score (written by Stable Diffusion)
539
546
  'create-date'=> {
540
547
  Name => 'CreateDate',
541
548
  Groups => { 2 => 'Time' },
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
  use Image::ExifTool::Exif;
39
39
 
40
- $VERSION = '2.17';
40
+ $VERSION = '2.18';
41
41
 
42
42
  sub ProcessLeicaLEIC($$$);
43
43
  sub WhiteBalanceConv($;$$);
@@ -543,7 +543,11 @@ my %shootingMode = (
543
543
  0x2c => [
544
544
  {
545
545
  Name => 'ContrastMode',
546
- Condition => '$$self{Model} !~ /^DMC-(FX10|G1|L1|L10|LC80|GF\d+|G2|TZ10|ZS7)$/',
546
+ Condition => q{
547
+ $$self{Model} !~ /^DMC-(FX10|G1|L1|L10|LC80|GF\d+|G2|TZ10|ZS7)$/ and
548
+ # tested for DC-GH6, but rule out other DC- models just in case - PH
549
+ $$self{Model} !~ /^DC-/
550
+ },
547
551
  Flags => 'PrintHex',
548
552
  Writable => 'int16u',
549
553
  Notes => q{
@@ -1129,7 +1133,10 @@ my %shootingMode = (
1129
1133
  8 => 'Cinelike D', #forum11194
1130
1134
  9 => 'Cinelike V', #forum11194
1131
1135
  11 => 'L. Monochrome', #forum11194
1136
+ 12 => 'Like709', #forum14033
1132
1137
  15 => 'L. Monochrome D', #forum11194
1138
+ 17 => 'V-Log', #forum14033
1139
+ 18 => 'Cinelike D2', #forum14033
1133
1140
  },
1134
1141
  },
1135
1142
  0x8a => { #18
@@ -1255,8 +1262,9 @@ my %shootingMode = (
1255
1262
  Writable => 'rational64u',
1256
1263
  Format => 'int32u',
1257
1264
  PrintConv => {
1258
- '0 0' => 'Expressive',
1259
- # '0 1' => have seen this for XS1 (PH)
1265
+ # '0 0' => 'Expressive', #forum11194
1266
+ '0 0' => 'Off', #forum14033 (GH6)
1267
+ '0 1' => 'Expressive', #forum14033 (GH6) (have also seen this for XS1)
1260
1268
  '0 2' => 'Retro',
1261
1269
  '0 4' => 'High Key',
1262
1270
  '0 8' => 'Sepia',
@@ -1435,6 +1443,15 @@ my %shootingMode = (
1435
1443
  ValueConv => '$_=sprintf("%.4x",$val); s/(..)(..)/$2 $1/; $_',
1436
1444
  ValueConvInv => '$val =~ s/(..) (..)/$2$1/; hex($val)',
1437
1445
  },
1446
+ 0xe8 => { #PH (DC-GH6)
1447
+ Name => 'MinimumISO',
1448
+ Writable => 'int32u',
1449
+ },
1450
+ 0xee => { #PH (DC-GH6)
1451
+ Name => 'DynamicRangeBoost',
1452
+ Writable => 'int16u',
1453
+ PrintConv => { 0 => 'Off', 1 => 'On' },
1454
+ },
1438
1455
  0x0e00 => {
1439
1456
  Name => 'PrintIM',
1440
1457
  Description => 'Print Image Matching',
@@ -21,7 +21,7 @@ use vars qw($VERSION);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
  use Image::ExifTool::Exif;
23
23
 
24
- $VERSION = '1.25';
24
+ $VERSION = '1.27';
25
25
 
26
26
  sub ProcessJpgFromRaw($$$);
27
27
  sub WriteJpgFromRaw($$$);
@@ -218,6 +218,7 @@ my %panasonicWhiteBalance = ( #forum9396
218
218
  0x30 => { Name => 'CropLeft', Writable => 'int16u' },
219
219
  0x31 => { Name => 'CropBottom', Writable => 'int16u' },
220
220
  0x32 => { Name => 'CropRight', Writable => 'int16u' },
221
+ # 0x44 - may contain another pointer to the raw data starting at byte 2 in this data (DC-GH6)
221
222
  0x10f => {
222
223
  Name => 'Make',
223
224
  Groups => { 2 => 'Camera' },
@@ -737,6 +738,8 @@ sub WriteDistortionInfo($$$)
737
738
  # 2 - value count
738
739
  # 3 - reference to list of original offset values
739
740
  # 4 - IFD format number
741
+ # 5 - (pointer to StripOffsets value added by this PatchRawDataOffset routine)
742
+ # 6 - flag set if this is a fixed offset (Panasonic GH6 fixed-offset hack)
740
743
  sub PatchRawDataOffset($$$)
741
744
  {
742
745
  my ($offsetInfo, $raf, $ifd) = @_;
@@ -745,15 +748,32 @@ sub PatchRawDataOffset($$$)
745
748
  my $rawDataOffset = $$offsetInfo{0x118};
746
749
  my $err;
747
750
  $err = 1 unless $ifd == 0;
748
- $err = 1 unless $stripOffsets and $stripByteCounts and $$stripOffsets[2] == 1;
749
- if ($rawDataOffset) {
751
+ if ($stripOffsets or $stripByteCounts) {
752
+ $err = 1 unless $stripOffsets and $stripByteCounts and $$stripOffsets[2] == 1;
753
+ } else {
754
+ # the DC-GH6 and DC-GH5M2 write RawDataOffset with no Strip tags, so we need
755
+ # to create fake StripByteCounts information for copying the data
756
+ if ($$offsetInfo{0x118}) { # (just to be safe)
757
+ $stripByteCounts = $$offsetInfo{0x117} = [ $PanasonicRaw::Main{0x117}, 0, 1, [ 0 ], 4 ];
758
+ # set flag so the offset will be fixed (GH6 hack, see https://exiftool.org/forum/index.php?topic=13861.0)
759
+ # (of course, fixing up the offset is now unnecessary, but continue to do this even
760
+ # though the fixup adjustment will be 0 because this allows us to delete the following
761
+ # line to remove the fix-offset restriction if Panasonic ever sees the light, but note
762
+ # that in this case we should investigate the purpose of the seemily-duplicate raw
763
+ # data offset contained within PanasonicRaw_0x0044)
764
+ $$offsetInfo{0x118}[6] = 1;
765
+ }
766
+ }
767
+ if ($rawDataOffset and not $err) {
750
768
  $err = 1 unless $$rawDataOffset[2] == 1;
751
- $err = 1 unless $$stripOffsets[3][0] == 0xffffffff or $$stripByteCounts[3][0] == 0;
769
+ if ($stripOffsets) {
770
+ $err = 1 unless $$stripOffsets[3][0] == 0xffffffff or $$stripByteCounts[3][0] == 0;
771
+ }
752
772
  }
753
773
  $err and return 'Unsupported Panasonic/Leica RAW variant';
754
774
  if ($rawDataOffset) {
755
775
  # update StripOffsets along with this tag if it contains a reasonable value
756
- unless ($$stripOffsets[3][0] == 0xffffffff) {
776
+ if ($stripOffsets and $$stripOffsets[3][0] != 0xffffffff) {
757
777
  # save pointer to StripOffsets value for updating later
758
778
  push @$rawDataOffset, $$stripOffsets[1];
759
779
  }