exiftool_vendored 12.95.0 → 12.97.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +19 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +28 -15
- data/bin/lib/Image/ExifTool/Canon.pm +1 -0
- data/bin/lib/Image/ExifTool/FujiFilm.pm +23 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
- data/bin/lib/Image/ExifTool/InDesign.pm +17 -3
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +355 -62
- data/bin/lib/Image/ExifTool/NikonCustom.pm +421 -11
- data/bin/lib/Image/ExifTool/QuickTime.pm +20 -14
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4831 -4816
- data/bin/lib/Image/ExifTool/TagNames.pod +190 -3
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +34 -35
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -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.
|
18
|
+
$VERSION = '1.26';
|
19
19
|
|
20
20
|
@ISA = qw(Exporter);
|
21
21
|
@EXPORT_OK = qw(%buttonsZ9);
|
@@ -94,6 +94,7 @@ $VERSION = '1.25';
|
|
94
94
|
89 => 'Set Picture Control (HLG)',
|
95
95
|
90 => 'Skin Softening',
|
96
96
|
91 => 'Portrait Impression Balance',
|
97
|
+
92 => 'Fast AF-On',
|
97
98
|
97 => 'High Frequency Flicker Reduction',
|
98
99
|
98 => 'Switch FX/DX',
|
99
100
|
99 => 'View Mode (Photo LV)',
|
@@ -113,7 +114,7 @@ $VERSION = '1.25';
|
|
113
114
|
115 => 'Delete',
|
114
115
|
116 => 'Pixel Shift Shooting',
|
115
116
|
117 => 'Cycle AF-area Mode',
|
116
|
-
118 => 'Raw Processing (Current)', #118-131 are Retouch options
|
117
|
+
118 => 'Raw Processing (Current)', #118-131 are Playback Retouch options
|
117
118
|
119 => 'Raw Processing (Multiple)',
|
118
119
|
120 => 'Trim',
|
119
120
|
121 => 'Resize (Current)',
|
@@ -129,6 +130,103 @@ $VERSION = '1.25';
|
|
129
130
|
131 => 'Motion Blend',
|
130
131
|
},
|
131
132
|
);
|
133
|
+
my %buttonsZ6III= (
|
134
|
+
SeparateTable => 'ButtonsZ6III',
|
135
|
+
PrintConv => {
|
136
|
+
0 => 'None',
|
137
|
+
1 => 'Preview',
|
138
|
+
3 => 'FV Lock',
|
139
|
+
4 => 'AE/AF Lock',
|
140
|
+
5 => 'AE Lock Only',
|
141
|
+
6 => 'AE Lock (reset on release)',
|
142
|
+
7 => 'AE Lock (hold)',
|
143
|
+
8 => 'AF Lock Only',
|
144
|
+
9 => 'AF-On',
|
145
|
+
10 => 'Flash Disable/Enable',
|
146
|
+
11 => 'Bracketing Burst',
|
147
|
+
12 => '+NEF(RAW)',
|
148
|
+
18 => 'Virtual Horizon',
|
149
|
+
19 => 'Synchronized Release',
|
150
|
+
20 => 'My Menu',
|
151
|
+
21 => 'My Menu Top Item',
|
152
|
+
22 => 'Playback',
|
153
|
+
23 => 'Rating',
|
154
|
+
24 => 'Protect',
|
155
|
+
25 => 'Zoom',
|
156
|
+
26 => 'Focus Peaking',
|
157
|
+
27 => 'Flash Mode/Compensation',
|
158
|
+
28 => 'Image Area',
|
159
|
+
30 => 'Non-CPU Lens',
|
160
|
+
31 => 'Active-D Lighting',
|
161
|
+
32 => 'Exposure Delay Mode',
|
162
|
+
33 => '1 Stop Speed/Aperture',
|
163
|
+
34 => 'White Balance',
|
164
|
+
35 => 'Metering',
|
165
|
+
36 => 'Auto Bracketing',
|
166
|
+
37 => 'Multiple Exposure',
|
167
|
+
38 => 'HDR Overlay',
|
168
|
+
39 => 'Picture Control',
|
169
|
+
40 => 'Quality',
|
170
|
+
41 => 'Focus Mode/AF AreaMode',
|
171
|
+
42 => 'Select Center Focus Point',
|
172
|
+
44 => 'Record Movie',
|
173
|
+
45 => 'Thumbnail On/Off',
|
174
|
+
46 => 'View Histograms',
|
175
|
+
47 => 'Choose Folder',
|
176
|
+
48 => 'Power Aperture (Open)',
|
177
|
+
49 => 'Power Aperture (Close)',
|
178
|
+
52 => 'Microphone Sensitivity',
|
179
|
+
53 => 'Release Mode',
|
180
|
+
57 => 'Preset Focus Point',
|
181
|
+
58 => 'AE/AWB Lock (hold)',
|
182
|
+
59 => 'AF-AreaMode',
|
183
|
+
60 => 'AF-AreaMode + AF-On',
|
184
|
+
61 => 'Recall Shooting Functions',
|
185
|
+
64 => 'Filtered Playback',
|
186
|
+
65 => 'Same as AF-On',
|
187
|
+
66 => 'Voice Memo',
|
188
|
+
70 => 'Photo Shooting Bank',
|
189
|
+
71 => 'ISO',
|
190
|
+
72 => 'Shooting Mode',
|
191
|
+
73 => 'Exposure Compensation',
|
192
|
+
76 => 'Silent Mode',
|
193
|
+
78 => 'LiveView Information',
|
194
|
+
79 => 'AWB Lock (hold)',
|
195
|
+
80 => 'Grid Display',
|
196
|
+
81 => 'Starlight View',
|
197
|
+
82 => 'Select To Send (PC)',
|
198
|
+
83 => 'Select To Send (FTP)',
|
199
|
+
84 => 'Pattern Tone Range',
|
200
|
+
85 => 'Control Lock',
|
201
|
+
86 => 'Save Focus Position',
|
202
|
+
87 => 'Recall Focus Position',
|
203
|
+
88 => 'Recall Shooting Functions (Hold)',
|
204
|
+
89 => 'Set Picture Control (HLG)',
|
205
|
+
90 => 'Skin Softening',
|
206
|
+
91 => 'Portrait Impression Balance',
|
207
|
+
97 => 'High Frequency Flicker Reduction',
|
208
|
+
98 => 'Switch FX/DX',
|
209
|
+
99 => 'View Mode (Photo LV)',
|
210
|
+
100 => 'Photo Flicker Reduction',
|
211
|
+
101 => 'Filtered Playback (Select Criteria)',
|
212
|
+
103 => 'Start Series Playback',
|
213
|
+
104 => 'View Assist',
|
214
|
+
105 => 'Hi-Res Zoom+',
|
215
|
+
106 => 'Hi-Res Zoom-',
|
216
|
+
108 => 'Override Other Cameras',
|
217
|
+
109 => 'DISP - Cycle Information Display (shooting)', # Shooting Mode
|
218
|
+
110 => 'DISP - Cycle Information Display (playback)', # Playback mode
|
219
|
+
111 => 'Resume Shooting',
|
220
|
+
112 => 'Switch Eyes',
|
221
|
+
113 => 'Power Zoom +',
|
222
|
+
114 => 'Power Zoom -',
|
223
|
+
115 => 'Delete',
|
224
|
+
116 => 'Pixel Shift Shooting',
|
225
|
+
117 => 'Cycle AF-area Mode',
|
226
|
+
118 => 'Pixel Shift Shooting',
|
227
|
+
119 => 'Move Focus Point',
|
228
|
+
},
|
229
|
+
);
|
132
230
|
my %dialsZ9 = (
|
133
231
|
0 => '1 Frame',
|
134
232
|
1 => '10 Frames',
|
@@ -199,6 +297,17 @@ my %thirdHalfFull = (
|
|
199
297
|
1 => '1/2 EV',
|
200
298
|
2 => '1 EV',
|
201
299
|
);
|
300
|
+
my %touchFnAreaZ6III = (
|
301
|
+
0 => 'Entire Frame',
|
302
|
+
1 => 'Right Half',
|
303
|
+
2 => 'Top Right Quadrant',
|
304
|
+
3 => 'Bottom Right Quadrant',
|
305
|
+
4 => 'Left Half',
|
306
|
+
5 => 'Top Left Quadrant',
|
307
|
+
6 => 'Bottom Left Quadrant',
|
308
|
+
7 => 'Top Half',
|
309
|
+
8 => 'Bottom Half',
|
310
|
+
);
|
202
311
|
|
203
312
|
my %limitNolimit = ( 0 => 'Limit', 1 => 'No Limit' );
|
204
313
|
my %offOn = ( 0 => 'Off', 1 => 'On' );
|
@@ -9700,6 +9809,308 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
9700
9809
|
},
|
9701
9810
|
);
|
9702
9811
|
|
9812
|
+
# Z6III custom settings (ref 1) #base at offset27 + 1255 (firmware 1.0.0)
|
9813
|
+
%Image::ExifTool::NikonCustom::SettingsZ6III = (
|
9814
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
9815
|
+
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
9816
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
9817
|
+
WRITABLE => 1,
|
9818
|
+
FIRST_ENTRY => 0,
|
9819
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9820
|
+
NOTES => 'Custom settings for the Z6III.',
|
9821
|
+
DATAMEMBER => [ 189 ],
|
9822
|
+
3 => { # CSa1
|
9823
|
+
Name => 'AF-CPrioritySelection',
|
9824
|
+
PrintConv => {
|
9825
|
+
0 => 'Release',
|
9826
|
+
1 => 'Release + Focus',
|
9827
|
+
3 => 'Focus',
|
9828
|
+
},
|
9829
|
+
},
|
9830
|
+
5 => { Name => 'AF-SPrioritySelection', PrintConv => {0 => 'Release',1 => 'Focus'}}, #CSa2
|
9831
|
+
7 => { # CSa3 #when AFAreaMode is 3D-tracking, blocked shot response will be 3, regardless of this setting
|
9832
|
+
Name => 'BlockShotAFResponse',
|
9833
|
+
PrintConv => {
|
9834
|
+
1 => '1 (Quick)',
|
9835
|
+
2 => '2',
|
9836
|
+
3 => '3 (Normal)',
|
9837
|
+
4 => '4',
|
9838
|
+
5 => '5 (Delayed)',
|
9839
|
+
},
|
9840
|
+
},
|
9841
|
+
11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
|
9842
|
+
13 => { # CSa5
|
9843
|
+
Name => 'StoreByOrientation',
|
9844
|
+
PrintConv => {
|
9845
|
+
0 => 'Off',
|
9846
|
+
1 => 'Focus Point',
|
9847
|
+
2 => 'Focus Point and AF-area mode',
|
9848
|
+
},
|
9849
|
+
},
|
9850
|
+
15 => { Name => 'AFActivation', PrintConv => {0 => 'AF-On Only', 1 => 'Shutter/AF-On'}}, # CSa6-a
|
9851
|
+
16 => { Name => 'AF-OnOutOfFocusRelease', PrintConv => {0 => 'Disable', 1 => 'Enable'}, Unknown => 1}, # CSa6-b
|
9852
|
+
17 => { Name => 'LimitAF-AreaModeSelPinpoint', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
9853
|
+
19 => { Name => 'LimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
9854
|
+
20 => { Name => 'LimitAF-AreaModeSelWideAF_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
9855
|
+
21 => { Name => 'LimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
9856
|
+
22 => { Name => 'FocusPointWrap', PrintConv => { 0 => 'No Wrap', 1 => 'Wrap' }, Unknown => 1 }, # CSa10
|
9857
|
+
23 => { Name => 'ManualFocusPointIllumination', PrintConv => {0 => 'On During Focus Point Selection Only', 1 => 'On', }, Unknown => 1 }, # CSa10a
|
9858
|
+
24 => { Name => 'DynamicAreaAFAssist', PrintConv => { 0 => 'Focus Point Only',1 => 'Focus and Surrounding Points',}, Unknown => 1 }, # CSa10b
|
9859
|
+
|
9860
|
+
26 => { Name => 'AF-AssistIlluminator', PrintConv => \%offOn }, # CSa11
|
9861
|
+
27 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa14
|
9862
|
+
29 => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2
|
9863
|
+
31 => { # CSb3
|
9864
|
+
Name => 'EasyExposureCompensation',
|
9865
|
+
PrintConv => {
|
9866
|
+
0 => 'Off',
|
9867
|
+
1 => 'On',
|
9868
|
+
2 => 'On (auto reset)',
|
9869
|
+
},
|
9870
|
+
},
|
9871
|
+
33 => { # CSb5
|
9872
|
+
Name => 'CenterWeightedAreaSize',
|
9873
|
+
PrintConv => {
|
9874
|
+
0 => 'Standard',
|
9875
|
+
1 => 'Small',
|
9876
|
+
4 => 'Average',
|
9877
|
+
},
|
9878
|
+
},
|
9879
|
+
35 => { # CSb6-a
|
9880
|
+
Name => 'FineTuneOptMatrixMetering',
|
9881
|
+
Format => 'int8s',
|
9882
|
+
ValueConv => '$val / 6',
|
9883
|
+
ValueConvInv => 'int($val*6)',
|
9884
|
+
PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
|
9885
|
+
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
9886
|
+
},
|
9887
|
+
37 => { # CSb6-b
|
9888
|
+
Name => 'FineTuneOptCenterWeighted',
|
9889
|
+
Format => 'int8s',
|
9890
|
+
ValueConv => '$val / 6',
|
9891
|
+
ValueConvInv => 'int($val*6)',
|
9892
|
+
PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
|
9893
|
+
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
9894
|
+
},
|
9895
|
+
39 => { # CSb6-c
|
9896
|
+
Name => 'FineTuneOptSpotMetering',
|
9897
|
+
Format => 'int8s',
|
9898
|
+
ValueConv => '$val / 6',
|
9899
|
+
ValueConvInv => 'int($val*6)',
|
9900
|
+
PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
|
9901
|
+
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
9902
|
+
},
|
9903
|
+
41 => { # CSb6-d
|
9904
|
+
Name => 'FineTuneOptHighlightWeighted',
|
9905
|
+
Format => 'int8s',
|
9906
|
+
ValueConv => '$val / 6',
|
9907
|
+
ValueConvInv => 'int($val*6)',
|
9908
|
+
PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
|
9909
|
+
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
|
9910
|
+
},
|
9911
|
+
43 => { # CSc1
|
9912
|
+
Name => 'ShutterReleaseButtonAE-L',
|
9913
|
+
PrintConv => {
|
9914
|
+
0 => 'Off',
|
9915
|
+
1 => 'On (Half Press)',
|
9916
|
+
2 => 'On (Burst Mode)',
|
9917
|
+
},
|
9918
|
+
},
|
9919
|
+
45 => { # CSc2-a
|
9920
|
+
Name => 'SelfTimerTime',
|
9921
|
+
PrintConv => {
|
9922
|
+
0 => '2 s',
|
9923
|
+
1 => '5 s',
|
9924
|
+
2 => '10 s',
|
9925
|
+
3 => '20 s',
|
9926
|
+
},
|
9927
|
+
},
|
9928
|
+
49 => { Name => 'SelfTimerShotCount', }, # CSc2-b 1-9
|
9929
|
+
53 => { # CSc2-c
|
9930
|
+
Name => 'SelfTimerShotInterval',
|
9931
|
+
PrintConv => {
|
9932
|
+
0 => '0.5 s',
|
9933
|
+
1 => '1 s',
|
9934
|
+
2 => '2 s',
|
9935
|
+
3 => '3 s',
|
9936
|
+
},
|
9937
|
+
},
|
9938
|
+
55 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-a
|
9939
|
+
57 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-b
|
9940
|
+
59 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-d
|
9941
|
+
61 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc3-c
|
9942
|
+
|
9943
|
+
63 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
|
9944
|
+
65 => { # CSd2 # values: 1-200 & 'No Limit'
|
9945
|
+
Name => 'MaxContinuousRelease',
|
9946
|
+
Format => 'int16s',
|
9947
|
+
ValueConv => '($val eq -1 ? \'No Limit\' : $val ) ',
|
9948
|
+
},
|
9949
|
+
69 => { Name => 'SyncReleaseMode', PrintConv => { 0 => 'No Sync', 1 => 'Sync' }, Unknown => 1 }, # CSd4
|
9950
|
+
75 => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-1
|
9951
|
+
76 => { Name => 'LimitSelectableImageArea1To1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-2
|
9952
|
+
77 => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-3
|
9953
|
+
78 => { Name => 'FileNumberSequence', PrintConv => \%offOn }, # CSd7
|
9954
|
+
81 => { #CSa12b
|
9955
|
+
Name => 'FocusPeakingLevel',
|
9956
|
+
Unknown => 1,
|
9957
|
+
PrintConv => {
|
9958
|
+
0 => 'High Sensitivity',
|
9959
|
+
1 => 'Standard Sensitivity',
|
9960
|
+
2 => 'Low Sensitivity',
|
9961
|
+
},
|
9962
|
+
},
|
9963
|
+
83 => { #CSa12c
|
9964
|
+
Name => 'FocusPeakingHighlightColor',
|
9965
|
+
Unknown => 1,
|
9966
|
+
PrintConv => {
|
9967
|
+
0 => 'Red',
|
9968
|
+
1 => 'Yellow',
|
9969
|
+
2 => 'Blue',
|
9970
|
+
3 => 'White',
|
9971
|
+
},
|
9972
|
+
},
|
9973
|
+
85 => { Name => 'ContinuousModeDisplay', PrintConv => \%offOn }, # CSd14
|
9974
|
+
87 => { # CSe1-a Previous cameras reported this with HighSpeedSync indicator appended as '(Auto FP)'.
|
9975
|
+
Name => 'FlashSyncSpeed',
|
9976
|
+
ValueConv => '($val-144)/8',
|
9977
|
+
PrintConv => {
|
9978
|
+
0 => '1/60 s',
|
9979
|
+
1 => '1/80 s',
|
9980
|
+
2 => '1/100 s',
|
9981
|
+
3 => '1/125 s',
|
9982
|
+
4 => '1/160 s',
|
9983
|
+
5 => '1/200 s',
|
9984
|
+
},
|
9985
|
+
},
|
9986
|
+
89 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
|
9987
|
+
91 => { # CSe2
|
9988
|
+
Name => 'FlashShutterSpeed',
|
9989
|
+
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
|
9990
|
+
PrintConv => {
|
9991
|
+
0 => '1 s',
|
9992
|
+
1 => '1/2 s',
|
9993
|
+
2 => '1/4 s',
|
9994
|
+
3 => '1/8 s',
|
9995
|
+
4 => '1/15 s',
|
9996
|
+
5 => '1/30 s',
|
9997
|
+
6 => '1/60 s',
|
9998
|
+
7 => '30 s',
|
9999
|
+
8 => '15 s',
|
10000
|
+
9 => '8 s',
|
10001
|
+
10 => '4 s',
|
10002
|
+
11 => '2 s',
|
10003
|
+
},
|
10004
|
+
},
|
10005
|
+
93 => { Name => 'FlashExposureCompArea', PrintConv => { 0 => 'Entire Frame', 1 => 'Background Only' } }, # CSe3
|
10006
|
+
95 => { Name => 'AutoFlashISOSensitivity', PrintConv => { 0 => 'Subject and Background',1 => 'Subject Only'} }, # CSe4
|
10007
|
+
97 => { Name => 'ModelingFlash', PrintConv => \%offOn }, # CSe5
|
10008
|
+
99 => { # CSe6
|
10009
|
+
Name => 'AutoBracketModeM',
|
10010
|
+
PrintConv => {
|
10011
|
+
0 => 'Flash/Speed',
|
10012
|
+
1 => 'Flash/Speed/Aperture',
|
10013
|
+
2 => 'Flash/Aperture',
|
10014
|
+
3 => 'Flash Only',
|
10015
|
+
4 => 'Flash/ISO',
|
10016
|
+
},
|
10017
|
+
},
|
10018
|
+
101 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
|
10019
|
+
103 => { Name => 'Func1Button', %buttonsZ6III }, # CSf2-a
|
10020
|
+
119 => { Name => 'Func2Button', %buttonsZ6III }, # CSf2-b
|
10021
|
+
135 => { Name => 'AFOnButton', %buttonsZ6III }, # CSf2-d
|
10022
|
+
147 => { Name => 'SubSelector', %buttonsZ6III , Unknown => 1}, # CSf2-g
|
10023
|
+
159 => { Name => 'AssignMovieRecordButton', %buttonsZ6III , Unknown => 1}, # CSf2-m
|
10024
|
+
163 => { Name => 'LensFunc1Button', %buttonsZ6III }, # CSf2-q
|
10025
|
+
171 => { Name => 'LensFunc2Button', %buttonsZ6III }, # CSf2-p
|
10026
|
+
177 => { # CSf2-u
|
10027
|
+
Name => 'LensControlRing',
|
10028
|
+
PrintConv => {
|
10029
|
+
0 => 'None (Disabled)',
|
10030
|
+
1 => 'Focus (M/A)',
|
10031
|
+
2 => 'ISO Sensitivity',
|
10032
|
+
3 => 'Exposure Compensation',
|
10033
|
+
4 => 'Aperture',
|
10034
|
+
},
|
10035
|
+
},
|
10036
|
+
179 => { Name => 'MultiSelectorShootMode', %buttonsZ6III }, # CSf2-h called the OK button in camera, tag name retained for compatibility
|
10037
|
+
183 => { Name => 'MultiSelectorPlaybackMode', %buttonsZ6III }, # CSf3f
|
10038
|
+
187 => { Name => 'ShutterSpeedLock', PrintConv => \%offOn }, # CSf5-a
|
10039
|
+
188 => { Name => 'ApertureLock', PrintConv => \%offOn }, # CSf5-b
|
10040
|
+
189 => { # CSf6-a Previous cameras reported this tag as part of CmdDialsReverseRotation. Blend with CSf5-b separate settings together to match extant tag name and values
|
10041
|
+
Name => 'CmdDialsReverseRotExposureComp',
|
10042
|
+
RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
|
10043
|
+
Hidden => 1,
|
10044
|
+
},
|
10045
|
+
190 => [{ # CSf6-b (continued from above)
|
10046
|
+
Name => 'CmdDialsReverseRotation',
|
10047
|
+
Condition => '$$self{CmdDialsReverseRotExposureComp} == 0',
|
10048
|
+
PrintConv => {
|
10049
|
+
0 => 'No',
|
10050
|
+
1 => 'Shutter Speed & Aperture',
|
10051
|
+
},
|
10052
|
+
},{
|
10053
|
+
Name => 'CmdDialsReverseRotation',
|
10054
|
+
PrintConv => {
|
10055
|
+
0 => 'Exposure Compensation',
|
10056
|
+
1 => 'Exposure Compensation, Shutter Speed & Aperture',
|
10057
|
+
},
|
10058
|
+
}],
|
10059
|
+
195 => { Name => 'UseDialWithoutHold', PrintConv => \%offOn, Unknown => 1 }, # CSf7
|
10060
|
+
197 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf8
|
10061
|
+
199 => { Name => 'MovieFunc1Button', %buttonsZ6III }, # CSg2-a
|
10062
|
+
205 => { Name => 'MovieFunc2Button', %buttonsZ6III }, # CSg2-b
|
10063
|
+
211 => { Name => 'MovieAF-OnButton', %buttonsZ6III }, # CSg2-f
|
10064
|
+
223 => { # CSg2-z
|
10065
|
+
Name => 'MovieLensControlRing',
|
10066
|
+
PrintConv => {
|
10067
|
+
0 => 'None (Disabled)',
|
10068
|
+
2 => 'ISO Sensitivity',
|
10069
|
+
3 => 'Exposure Compensation',
|
10070
|
+
4 => 'Power Aperture',
|
10071
|
+
5 => 'Hi-Res Zoom',
|
10072
|
+
},
|
10073
|
+
},
|
10074
|
+
225 => { Name => 'MovieMultiSelector', %buttonsZ6III, Unknown => 1}, # CSg2-h
|
10075
|
+
229 => { Name => 'MovieAFSpeed', ValueConv => '$val - 5', ValueConvInv => '$val + 5' }, # CSg5-a
|
10076
|
+
231 => { Name => 'MovieAFSpeedApply', PrintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg5-b
|
10077
|
+
233 => { # CSg6
|
10078
|
+
Name => 'MovieAFTrackingSensitivity',
|
10079
|
+
PrintConv => {
|
10080
|
+
0 => '1 (High)',
|
10081
|
+
1 => '2',
|
10082
|
+
2 => '3',
|
10083
|
+
3 => '4 (Normal)',
|
10084
|
+
4 => '5',
|
10085
|
+
5 => '6',
|
10086
|
+
6 => '7 (Low)',
|
10087
|
+
},
|
10088
|
+
},
|
10089
|
+
241 => { Name => 'LCDIllumination', PrintConv => \%offOn, Unknown => 1 }, # CSd13
|
10090
|
+
242 => { Name => 'ExtendedShutterSpeeds', PrintConv => \%offOn }, # CSd7
|
10091
|
+
245 => { Name => 'FocusPointPersistence', PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
|
10092
|
+
257 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
|
10093
|
+
319 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10094
|
+
320 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10095
|
+
321 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10096
|
+
323 => { Name => 'LimitAF-AreaModeSel3DTracking', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10097
|
+
325 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf14-a
|
10098
|
+
329 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf14-b
|
10099
|
+
333 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1
|
10100
|
+
340 => { Name => 'TouchFn', PrintConv => \%offOn, Unknown => 1}, # CSf4a
|
10101
|
+
341 => { Name => 'TouchFnRole', %buttonsZ6III , Unknown => 1}, # CSf4b
|
10102
|
+
345 => { Name => 'TouchFnAreaWide', PrintConv => \%touchFnAreaZ6III, Unknown => 1}, # CSf4c-1
|
10103
|
+
347 => { Name => 'TouchFnAreaTall', PrintConv => \%touchFnAreaZ6III, Unknown => 1}, # CSf4c-2
|
10104
|
+
350 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd16
|
10105
|
+
351 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd17
|
10106
|
+
353 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd18
|
10107
|
+
415 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ6III , Unknown => 1}, # CSf3-a
|
10108
|
+
417 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ6III , Unknown => 1}, # CSf3-b
|
10109
|
+
431 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ6III , Unknown => 1}, # CSf3-m
|
10110
|
+
463 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf11
|
10111
|
+
559 => { Name => 'FocusPeakingDisplay', PrintConv => \%offOn, Unknown => 1}, # CSa12a
|
10112
|
+
);
|
10113
|
+
|
9703
10114
|
# Z8 custom settings (ref 1) #base at offset26 + 1195 (firmware 1.0.0)
|
9704
10115
|
%Image::ExifTool::NikonCustom::SettingsZ8 = (
|
9705
10116
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
@@ -9960,7 +10371,6 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
9960
10371
|
193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
|
9961
10372
|
195 => { Name => 'MovieFunc1Button', %buttonsZ9}, # CSg2-a
|
9962
10373
|
199 => { Name => 'MovieFunc2Button', %buttonsZ9}, # CSg2-b
|
9963
|
-
|
9964
10374
|
203 => { Name => 'MovieAF-OnButton', %buttonsZ9}, # CSg2-f
|
9965
10375
|
215 => { # CSg2-z
|
9966
10376
|
Name => 'MovieLensControlRing',
|
@@ -9993,11 +10403,11 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
9993
10403
|
261 => { Name => 'FocusPointPersistence', PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
|
9994
10404
|
263 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
|
9995
10405
|
267 => { Name => 'CHModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
|
9996
|
-
273 => { Name => 'FlashBurstPriority',
|
9997
|
-
335 => { Name => 'LimitAF-AreaModeSelDynamic_S',
|
9998
|
-
336 => { Name => 'LimitAF-AreaModeSelDynamic_M',
|
9999
|
-
337 => { Name => 'LimitAF-AreaModeSelDynamic_L',
|
10000
|
-
339 => { Name => 'LimitAF-AreaModeSel3DTracking',
|
10406
|
+
273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
|
10407
|
+
335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10408
|
+
336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10409
|
+
337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10410
|
+
339 => { Name => 'LimitAF-AreaModeSel3DTracking', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10001
10411
|
341 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf12-a
|
10002
10412
|
345 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf12-b
|
10003
10413
|
349 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1
|
@@ -10008,9 +10418,9 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10008
10418
|
421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
|
10009
10419
|
423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
|
10010
10420
|
437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
|
10011
|
-
453 => { Name => 'WBButtonPlaybackMode',
|
10012
|
-
461 => { Name => 'CommandDialVideoPlaybackMode',
|
10013
|
-
465 => { Name => 'SubCommandDialVideoPlaybackMode',
|
10421
|
+
453 => { Name => 'WBButtonPlaybackMode', %buttonsZ9}, # CSf2
|
10422
|
+
461 => { Name => 'CommandDialVideoPlaybackMode', PrintConv => \%dialsVideoZ9, Unknown => 1}, # CSf3-b
|
10423
|
+
465 => { Name => 'SubCommandDialVideoPlaybackMode',PrintConv => \%dialsVideoZ9, Unknown => 1}, # CSf3-b
|
10014
10424
|
467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
|
10015
10425
|
459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
|
10016
10426
|
463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
|
@@ -48,7 +48,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
48
48
|
use Image::ExifTool::Exif;
|
49
49
|
use Image::ExifTool::GPS;
|
50
50
|
|
51
|
-
$VERSION = '3.
|
51
|
+
$VERSION = '3.02';
|
52
52
|
|
53
53
|
sub ProcessMOV($$;$);
|
54
54
|
sub ProcessKeys($$$);
|
@@ -9528,7 +9528,7 @@ sub ProcessMOV($$;$)
|
|
9528
9528
|
my $dirID = $$dirInfo{DirID} || '';
|
9529
9529
|
my $charsetQuickTime = $et->Options('CharsetQuickTime');
|
9530
9530
|
my ($buff, $tag, $size, $track, $isUserData, %triplet, $doDefaultLang, $index);
|
9531
|
-
my ($dirEnd, $unkOpt, %saveOptions, $atomCount, $warnStr);
|
9531
|
+
my ($dirEnd, $unkOpt, %saveOptions, $atomCount, $warnStr, $trailer);
|
9532
9532
|
|
9533
9533
|
my $topLevel = not $$et{InQuickTime};
|
9534
9534
|
$$et{InQuickTime} = 1;
|
@@ -9557,6 +9557,17 @@ sub ProcessMOV($$;$)
|
|
9557
9557
|
$tagTablePtr = GetTagTable('Image::ExifTool::QuickTime::Main');
|
9558
9558
|
}
|
9559
9559
|
($size, $tag) = unpack('Na4', $buff);
|
9560
|
+
my $fast = $$et{OPTIONS}{FastScan} || 0;
|
9561
|
+
# check for Insta360 trailer
|
9562
|
+
if ($topLevel and not $fast) {
|
9563
|
+
my $pos = $raf->Tell();
|
9564
|
+
if ($raf->Seek(-40, 2) and $raf->Read($buff, 40) == 40 and
|
9565
|
+
substr($buff, 8) eq '8db42d694ccc418790edff439fe026bf')
|
9566
|
+
{
|
9567
|
+
$trailer = [ 'Insta360', $raf->Tell() - unpack('V',$buff) ];
|
9568
|
+
}
|
9569
|
+
$raf->Seek($pos,0) or return 0;
|
9570
|
+
}
|
9560
9571
|
if ($dataPt) {
|
9561
9572
|
$verbose and $et->VerboseDir($$dirInfo{DirName});
|
9562
9573
|
} else {
|
@@ -9595,7 +9606,6 @@ sub ProcessMOV($$;$)
|
|
9595
9606
|
# have XMP take priority except for HEIC
|
9596
9607
|
$$et{PRIORITY_DIR} = 'XMP' unless $fileType and $fileType eq 'HEIC';
|
9597
9608
|
}
|
9598
|
-
my $fast = $$et{OPTIONS}{FastScan} || 0;
|
9599
9609
|
$$raf{NoBuffer} = 1 if $fast; # disable buffering in FastScan mode
|
9600
9610
|
|
9601
9611
|
my $ee = $$et{OPTIONS}{ExtractEmbedded};
|
@@ -10136,6 +10146,10 @@ ItemID: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
10136
10146
|
$dataPos += $size + 8; # point to start of next atom data
|
10137
10147
|
last if $dirEnd and $dataPos >= $dirEnd; # (note: ignores last value if 0 bytes)
|
10138
10148
|
$lastPos = $raf->Tell() + $dirBase;
|
10149
|
+
if ($trailer and $lastPos >= $$trailer[1]) {
|
10150
|
+
$et->Warn(sprintf('%s trailer at offset 0x%x', @$trailer), 1);
|
10151
|
+
last;
|
10152
|
+
}
|
10139
10153
|
$raf->Read($buff, 8) == 8 or last;
|
10140
10154
|
$lastTag = $tag if $$tagTablePtr{$tag} and $tag ne 'free'; # (Insta360 sometimes puts free block before trailer)
|
10141
10155
|
($size, $tag) = unpack('Na4', $buff);
|
@@ -10143,19 +10157,11 @@ ItemID: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
10143
10157
|
}
|
10144
10158
|
if ($warnStr) {
|
10145
10159
|
# assume this is an unknown trailer if it comes immediately after
|
10146
|
-
# mdat or moov
|
10147
|
-
|
10148
|
-
if (($lastTag eq 'mdat' or $lastTag eq 'moov' or $lastTag eq 'free') and
|
10160
|
+
# mdat or moov and has a tag name we don't recognize
|
10161
|
+
if (($lastTag eq 'mdat' or $lastTag eq 'moov') and
|
10149
10162
|
(not $$tagTablePtr{$tag} or ref $$tagTablePtr{$tag} eq 'HASH' and $$tagTablePtr{$tag}{Unknown}))
|
10150
10163
|
{
|
10151
|
-
|
10152
|
-
substr($buff, 8) eq '8db42d694ccc418790edff439fe026bf' and
|
10153
|
-
$lastPos == $raf->Tell() - unpack('V',$buff))
|
10154
|
-
{
|
10155
|
-
$et->Warn(sprintf('Insta360 trailer at offset 0x%x', $lastPos), 1);
|
10156
|
-
} else {
|
10157
|
-
$et->Warn('Unknown trailer with '.lcfirst($warnStr));
|
10158
|
-
}
|
10164
|
+
$et->Warn('Unknown trailer with '.lcfirst($warnStr));
|
10159
10165
|
} else {
|
10160
10166
|
$et->Warn($warnStr);
|
10161
10167
|
}
|
@@ -341,6 +341,7 @@ my %insvLimit = (
|
|
341
341
|
},
|
342
342
|
# djmd - DJI AC003 Osmo Action 4 cam
|
343
343
|
#TODO djmd => { SubDirectory => { TagTable => 'Image::ExifTool::DJI::djmd', ByteOrder => 'Little-Endian' } },
|
344
|
+
# (also DJI_20240615181302_0006_D.LRF)
|
344
345
|
# dbgi - DJI AC003 Osmo Action 4 cam -- lots more unknown stuff
|
345
346
|
Unknown00 => { Unknown => 1 },
|
346
347
|
Unknown01 => { Unknown => 1 },
|