exiftool-vendored.exe 12.62.0 → 12.67.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.
- package/LICENSE +254 -254
- package/bin/exiftool_files/Changes +96 -1
- package/bin/exiftool_files/Makefile.PL +7 -1
- package/bin/exiftool_files/README +50 -46
- package/bin/exiftool_files/config_files/guano.config +161 -0
- package/bin/exiftool_files/exiftool.pl +113 -78
- package/bin/exiftool_files/lib/Image/ExifTool/7Z.pm +793 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +19 -8
- package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +33 -12
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +4 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +31 -14
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +8 -2
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +6 -3
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +226 -28
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1467 -202
- package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +16 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +948 -31
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +874 -63
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +23 -5
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +19 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +5 -5
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +91 -30
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
- package/bin/exiftool_files/lib/Image/ExifTool/README +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +11 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +227 -227
- package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +229 -30
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4758 -4633
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +715 -23
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +17 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +9 -7
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +36 -12
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +14 -2
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +33 -1
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +96 -28
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +5 -5
- package/bin/exiftool_files/lib/Image/ExifTool.pm +184 -132
- package/bin/exiftool_files/lib/Image/ExifTool.pod +124 -58
- package/package.json +3 -2
|
@@ -60,11 +60,12 @@ package Image::ExifTool::Nikon;
|
|
|
60
60
|
use strict;
|
|
61
61
|
use vars qw($VERSION %nikonLensIDs %nikonTextEncoding);
|
|
62
62
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
63
|
+
use Image::ExifTool::NikonCustom qw(%buttonsZ9);
|
|
63
64
|
use Image::ExifTool::Exif;
|
|
64
65
|
use Image::ExifTool::GPS;
|
|
65
66
|
use Image::ExifTool::XMP;
|
|
66
67
|
|
|
67
|
-
$VERSION = '4.
|
|
68
|
+
$VERSION = '4.25';
|
|
68
69
|
|
|
69
70
|
sub LensIDConv($$$);
|
|
70
71
|
sub ProcessNikonAVI($$$);
|
|
@@ -855,11 +856,17 @@ my %banksZ9 = (
|
|
|
855
856
|
|
|
856
857
|
my %bracketIncrementZ9 = (
|
|
857
858
|
0 => '0.3',
|
|
858
|
-
|
|
859
|
+
1 => '0.5',
|
|
859
860
|
2 => '0.7',
|
|
860
861
|
3 => '1.0',
|
|
861
862
|
4 => '2.0',
|
|
862
863
|
5 => '3.0',
|
|
864
|
+
6 => '1.3',
|
|
865
|
+
7 => '1.5',
|
|
866
|
+
8 => '1.7',
|
|
867
|
+
9 => '2.3',
|
|
868
|
+
10 => '2.5',
|
|
869
|
+
11 => '2.7',
|
|
863
870
|
);
|
|
864
871
|
|
|
865
872
|
my %bracketSetZ9 = (
|
|
@@ -925,6 +932,14 @@ my %hDMIOutputResolutionZ9 = (
|
|
|
925
932
|
#7 => '480p',
|
|
926
933
|
);
|
|
927
934
|
|
|
935
|
+
my %hdrLevelZ8 = (
|
|
936
|
+
0 => 'Auto',
|
|
937
|
+
1 => 'Extra High',
|
|
938
|
+
2 => 'High',
|
|
939
|
+
3 => 'Normal',
|
|
940
|
+
4 => 'Low',
|
|
941
|
+
);
|
|
942
|
+
|
|
928
943
|
my %highFrameRateZ9 = (
|
|
929
944
|
0 => 'Off',
|
|
930
945
|
1 => 'CH',
|
|
@@ -946,9 +961,10 @@ my %imageAreaZ9b = (
|
|
|
946
961
|
);
|
|
947
962
|
|
|
948
963
|
my %infoZSeries = (
|
|
949
|
-
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
|
|
950
|
-
Notes => 'Z Series cameras thru
|
|
964
|
+
Condition => '$$self{Model} =~ /^NIKON Z (30|5|50|6|6_2|7|7_2|8|fc|9)\b/i',
|
|
965
|
+
Notes => 'Z Series cameras thru July 2023',
|
|
951
966
|
);
|
|
967
|
+
|
|
952
968
|
my %iSOAutoHiLimitZ7 = (
|
|
953
969
|
0 => 'ISO 64',
|
|
954
970
|
1 => 'ISO 80',
|
|
@@ -1111,6 +1127,32 @@ my %multipleExposureModeZ9 = (
|
|
|
1111
1127
|
2 => 'On (Series)',
|
|
1112
1128
|
);
|
|
1113
1129
|
|
|
1130
|
+
my %nonCPULensApertureZ8 = ( # 2**(val/6) rounded - non-CPU aperture interface, values and storage differ from the Z8
|
|
1131
|
+
12 => 'f/1.2',
|
|
1132
|
+
24 => 'f/1.4',
|
|
1133
|
+
40 => 'f/1.8',
|
|
1134
|
+
48 => 'f/2.0',
|
|
1135
|
+
64 => 'f/2.5',
|
|
1136
|
+
72 => 'f/2.8',
|
|
1137
|
+
84 => 'f/3.3',
|
|
1138
|
+
88 => 'f/3.5',
|
|
1139
|
+
96 => 'f/4.0',
|
|
1140
|
+
104 => 'f/4.5',
|
|
1141
|
+
112 => 'f/5.0',
|
|
1142
|
+
120 => 'f/5.6',
|
|
1143
|
+
128 => 'f/6.3',
|
|
1144
|
+
136 => 'f/7.1',
|
|
1145
|
+
144 => 'f/8',
|
|
1146
|
+
156 => 'f/9.5',
|
|
1147
|
+
168 => 'f/11',
|
|
1148
|
+
180 => 'f/13',
|
|
1149
|
+
188 => 'f/15',
|
|
1150
|
+
192 => 'f/16',
|
|
1151
|
+
204 => 'f/19',
|
|
1152
|
+
216 => 'f/22',
|
|
1153
|
+
313 => 'N/A', #camera menu shows "--" indicating value has not been set for the lens
|
|
1154
|
+
);
|
|
1155
|
+
|
|
1114
1156
|
my %offLowNormalHighZ7 = (
|
|
1115
1157
|
0 => 'Off',
|
|
1116
1158
|
1 => 'Low',
|
|
@@ -1118,6 +1160,13 @@ my %offLowNormalHighZ7 = (
|
|
|
1118
1160
|
3 => 'High',
|
|
1119
1161
|
);
|
|
1120
1162
|
|
|
1163
|
+
my %portraitImpressionBalanceZ8 = (
|
|
1164
|
+
0 => 'Off',
|
|
1165
|
+
1 => 'Mode 1',
|
|
1166
|
+
2 => 'Mode 2',
|
|
1167
|
+
3 => 'Mode 3',
|
|
1168
|
+
);
|
|
1169
|
+
|
|
1121
1170
|
my %releaseModeZ7 = (
|
|
1122
1171
|
0 => 'Continuous Low',
|
|
1123
1172
|
1 => 'Continuous High',
|
|
@@ -1139,6 +1188,7 @@ my %subjectDetectionZ9 = (
|
|
|
1139
1188
|
2 => 'People',
|
|
1140
1189
|
3 => 'Animals',
|
|
1141
1190
|
4 => 'Vehicles',
|
|
1191
|
+
6 => 'Airplanes',
|
|
1142
1192
|
);
|
|
1143
1193
|
|
|
1144
1194
|
my %timeZoneZ9 = (
|
|
@@ -1397,6 +1447,66 @@ my %afPoints81 = (
|
|
|
1397
1447
|
17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
|
|
1398
1448
|
);
|
|
1399
1449
|
|
|
1450
|
+
# AF point indices for models with 493 focus points, eg. Z8/Z9 (ref 28)
|
|
1451
|
+
# - Auto Area AF uses 15 of the 17 rows (A-Q) and 27 of the 29 columns (1-27), center is H14 (405 of the 493 focus points can be used by Auto-area AF)
|
|
1452
|
+
#
|
|
1453
|
+
my %afPoints493 = (
|
|
1454
|
+
1 => 'A1', 28 => 'B1', 55 => 'C1', 82 => 'D1', 109 => 'E1', 136 => 'F1', 163 => 'G1', 190 => 'H1',
|
|
1455
|
+
2 => 'A2', 29 => 'B2', 56 => 'C2', 83 => 'D2', 110 => 'E2', 137 => 'F2', 164 => 'G2', 191 => 'H2',
|
|
1456
|
+
3 => 'A3', 30 => 'B3', 57 => 'C3', 84 => 'D3', 111 => 'E3', 138 => 'F3', 165 => 'G3', 192 => 'H3',
|
|
1457
|
+
4 => 'A4', 31 => 'B4', 58 => 'C4', 85 => 'D4', 112 => 'E4', 139 => 'F4', 166 => 'G4', 193 => 'H4',
|
|
1458
|
+
5 => 'A5', 32 => 'B5', 59 => 'C5', 86 => 'D5', 113 => 'E5', 140 => 'F5', 167 => 'G5', 194 => 'H5',
|
|
1459
|
+
6 => 'A6', 33 => 'B6', 60 => 'C6', 87 => 'D6', 114 => 'E6', 141 => 'F6', 168 => 'G6', 195 => 'H6',
|
|
1460
|
+
7 => 'A7', 34 => 'B7', 61 => 'C7', 88 => 'D7', 115 => 'E7', 142 => 'F7', 169 => 'G7', 196 => 'H7',
|
|
1461
|
+
8 => 'A8', 35 => 'B8', 62 => 'C8', 89 => 'D8', 116 => 'E8', 143 => 'F8', 170 => 'G8', 197 => 'H8',
|
|
1462
|
+
9 => 'A9', 36 => 'B9', 63 => 'C9', 90 => 'D9', 117 => 'E9', 144 => 'F9', 171 => 'G9', 198 => 'H9',
|
|
1463
|
+
10 => 'A10', 37 => 'B10', 64 => 'C10', 91 => 'D10', 118 => 'E10', 145 => 'F10', 172 => 'G10', 199 => 'H10',
|
|
1464
|
+
11 => 'A11', 38 => 'B11' , 65 => 'C11', 92 => 'D11', 119 => 'E11', 146 => 'F11', 173 => 'G11', 200 => 'H11',
|
|
1465
|
+
12 => 'A12', 39 => 'B12' , 66 => 'C12', 93 => 'D12', 120 => 'E12', 147 => 'F12', 174 => 'G12', 201 => 'H12',
|
|
1466
|
+
13 => 'A13', 40 => 'B13' , 67 => 'C13', 94 => 'D13', 121 => 'E13', 148 => 'F13', 175 => 'G13', 202 => 'H13',
|
|
1467
|
+
14 => 'A14', 41 => 'B14' , 68 => 'C14', 95 => 'D14', 122 => 'E14', 149 => 'F14', 176 => 'G14', 203 => 'H14',
|
|
1468
|
+
15 => 'A15', 42 => 'B15', 69 => 'C15', 96 => 'D15', 123 => 'E15', 150 => 'F15', 177 => 'G15', 204 => 'H15',
|
|
1469
|
+
16 => 'A16', 43 => 'B16' , 70 => 'C16', 97 => 'D16', 124 => 'E16', 151 => 'F16', 178 => 'G16', 205 => 'H16',
|
|
1470
|
+
17 => 'A17', 44 => 'B17', 71 => 'C17', 98 => 'D17', 125 => 'E17', 152 => 'F17', 179 => 'G17', 206 => 'H17',
|
|
1471
|
+
18 => 'A18', 45 => 'B18', 72 => 'C18', 99 => 'D18', 126 => 'E18', 153 => 'F18', 180 => 'G18', 207 => 'H18',
|
|
1472
|
+
19 => 'A19', 46 => 'B19', 73 => 'C19', 100 => 'D19', 127 => 'E19', 154 => 'F19', 181 => 'G19', 208 => 'H19',
|
|
1473
|
+
20 => 'A20', 47 => 'B20', 74 => 'C20', 101 => 'D20', 128 => 'E20', 155 => 'F20', 182 => 'G20', 209 => 'H20',
|
|
1474
|
+
21 => 'A21', 48 => 'B21', 75 => 'C21', 102 => 'D21', 129 => 'E21', 156 => 'F21', 183 => 'G21', 210 => 'H21',
|
|
1475
|
+
22 => 'A22', 49 => 'B22', 76 => 'C22', 103 => 'D22', 130 => 'E22', 157 => 'F22', 184 => 'G22', 211 => 'H22',
|
|
1476
|
+
23 => 'A23', 50 => 'B23', 77 => 'C23', 104 => 'D23', 131 => 'E23', 158 => 'F23', 185 => 'G23', 212 => 'H23',
|
|
1477
|
+
24 => 'A24', 51 => 'B24', 78 => 'C24', 105 => 'D24', 132 => 'E24', 159 => 'F24', 186 => 'G24', 213 => 'H24',
|
|
1478
|
+
25 => 'A25', 52 => 'B25', 79 => 'C25', 106 => 'D25', 133 => 'E25', 160 => 'F25', 187 => 'G25', 214 => 'H25',
|
|
1479
|
+
26 => 'A26', 53 => 'B26', 80 => 'C26', 107 => 'D26', 134 => 'E26', 161 => 'F26', 188 => 'G26', 215 => 'H26',
|
|
1480
|
+
27 => 'A27', 54 => 'B27', 81 => 'C27', 108 => 'D27', 135 => 'E27', 162 => 'F27', 189 => 'G27', 216 => 'H27',
|
|
1481
|
+
|
|
1482
|
+
217 => 'I1', 244 => 'J1', 271 => 'K1', 298 => 'L1', 325 => 'M1', 352 => 'N1', 379 => 'O1',
|
|
1483
|
+
218 => 'I2', 245 => 'J2', 272 => 'K2', 299 => 'L2', 326 => 'M2', 353 => 'N2', 380 => 'O2',
|
|
1484
|
+
219 => 'I3', 246 => 'J3', 273 => 'K3', 300 => 'L3', 327 => 'M3', 354 => 'N3', 381 => 'O3',
|
|
1485
|
+
220 => 'I4', 247 => 'J4', 274 => 'K4', 301 => 'L4', 328 => 'M4', 355 => 'N4', 382 => 'O4',
|
|
1486
|
+
221 => 'I5', 248 => 'J5', 275 => 'K5', 302 => 'L5', 329 => 'M5', 356 => 'N5', 383 => 'O5',
|
|
1487
|
+
222 => 'I6', 249 => 'J6', 276 => 'K6', 303 => 'L6', 330 => 'M6', 357 => 'N6', 384 => 'O6',
|
|
1488
|
+
223 => 'I7', 250 => 'J7', 277 => 'K7', 304 => 'L7', 331 => 'M7', 358 => 'N7', 385 => 'O7',
|
|
1489
|
+
224 => 'I8', 251 => 'J8', 278 => 'K8', 305 => 'L8', 332 => 'M8', 359 => 'N8', 386 => 'O8',
|
|
1490
|
+
225 => 'I9', 252 => 'J9', 279 => 'K9', 306 => 'L9', 333 => 'M9', 360 => 'N9', 387 => 'O9',
|
|
1491
|
+
226 => 'I10', 253 => 'J10', 280 => 'K10', 307 => 'L10', 334 => 'M10', 361 => 'N10', 388 => 'O10',
|
|
1492
|
+
227 => 'I11', 254 => 'J11', 281 => 'K11', 308 => 'L11', 335 => 'M11', 362 => 'N11', 389 => 'O11',
|
|
1493
|
+
228 => 'I12', 255 => 'J12', 282 => 'K12', 309 => 'L12', 336 => 'M12', 363 => 'N12', 390 => 'O12',
|
|
1494
|
+
229 => 'I13', 256 => 'J13', 283 => 'K13', 310 => 'L13', 337 => 'M13', 364 => 'N13', 391 => 'O13',
|
|
1495
|
+
230 => 'I14', 257 => 'J14', 284 => 'K14', 311 => 'L14', 338 => 'M14', 365 => 'N14', 392 => 'O14',
|
|
1496
|
+
231 => 'I15', 258 => 'J15', 285 => 'K15', 312 => 'L15', 339 => 'M15', 366 => 'N15', 393 => 'O15',
|
|
1497
|
+
232 => 'I16', 259 => 'J16', 286 => 'K16', 313 => 'L16', 340 => 'M16', 367 => 'N16', 394 => 'O16',
|
|
1498
|
+
233 => 'I17', 260 => 'J17', 287 => 'K17', 314 => 'L17', 341 => 'M17', 368 => 'N17', 395 => 'O17',
|
|
1499
|
+
234 => 'I18', 261 => 'J18', 288 => 'K18', 315 => 'L18', 342 => 'M18', 369 => 'N18', 396 => 'O18',
|
|
1500
|
+
235 => 'I19', 262 => 'J19', 289 => 'K19', 316 => 'L19', 343 => 'M19', 370 => 'N19', 397 => 'O19',
|
|
1501
|
+
236 => 'I20', 263 => 'J20', 290 => 'K20', 317 => 'L20', 344 => 'M20', 371 => 'N20', 398 => 'O20',
|
|
1502
|
+
237 => 'I21', 264 => 'J21', 291 => 'K21', 318 => 'L21', 345 => 'M21', 372 => 'N21', 399 => 'O21',
|
|
1503
|
+
238 => 'I22', 265 => 'J22', 292 => 'K22', 319 => 'L22', 346 => 'M22', 373 => 'N22', 400 => 'O22',
|
|
1504
|
+
239 => 'I23', 266 => 'J23', 293 => 'K23', 320 => 'L23', 347 => 'M23', 374 => 'N23', 401 => 'O23',
|
|
1505
|
+
240 => 'I24', 267 => 'J24', 294 => 'K24', 321 => 'L24', 348 => 'M24', 375 => 'N24', 402 => 'O24',
|
|
1506
|
+
241 => 'I25', 268 => 'J25', 295 => 'K25', 322 => 'L25', 349 => 'M25', 376 => 'N25', 403 => 'O25',
|
|
1507
|
+
242 => 'I26', 269 => 'J26', 296 => 'K26', 323 => 'L26', 350 => 'M26', 377 => 'N26', 404 => 'O26',
|
|
1508
|
+
243 => 'I27', 270 => 'J27', 297 => 'K27', 324 => 'L27', 351 => 'M27', 378 => 'N27', 405 => 'O27',
|
|
1509
|
+
);
|
|
1400
1510
|
my %cropHiSpeed = ( #IB
|
|
1401
1511
|
0 => 'Off',
|
|
1402
1512
|
1 => '1.3x Crop', # (1.3x Crop, Large)
|
|
@@ -1523,6 +1633,7 @@ my %base64coord = (
|
|
|
1523
1633
|
0x0006 => { Name => 'Sharpness', Writable => 'string' },
|
|
1524
1634
|
0x0007 => {
|
|
1525
1635
|
Name => 'FocusMode',
|
|
1636
|
+
RawConv => '$$self{FocusMode} = $val',
|
|
1526
1637
|
Writable => 'string',
|
|
1527
1638
|
},
|
|
1528
1639
|
# FlashSetting (better named FlashSyncMode, ref 28) values:
|
|
@@ -1714,6 +1825,7 @@ my %base64coord = (
|
|
|
1714
1825
|
PrintConv => {
|
|
1715
1826
|
1 => 'sRGB',
|
|
1716
1827
|
2 => 'Adobe RGB',
|
|
1828
|
+
4 => 'BT.2100', #observed on Z8 with Tone Mode set to HLG
|
|
1717
1829
|
},
|
|
1718
1830
|
},
|
|
1719
1831
|
0x001f => { #PH
|
|
@@ -1871,6 +1983,14 @@ my %base64coord = (
|
|
|
1871
1983
|
Writable => 'rational64s',
|
|
1872
1984
|
Count => 2,
|
|
1873
1985
|
},
|
|
1986
|
+
0x0044 => { #28
|
|
1987
|
+
Name => 'JPGCompression',
|
|
1988
|
+
RawConv => '($val) ? $val : undef', # undef for raw files
|
|
1989
|
+
PrintConv => {
|
|
1990
|
+
1 => 'Size Priority',
|
|
1991
|
+
3 => 'Optimal Quality',
|
|
1992
|
+
},
|
|
1993
|
+
},
|
|
1874
1994
|
0x0045 => { #IB
|
|
1875
1995
|
Name => 'CropArea',
|
|
1876
1996
|
Notes => 'left, top, width, height',
|
|
@@ -1969,6 +2089,7 @@ my %base64coord = (
|
|
|
1969
2089
|
0 => 'Did Not Fire',
|
|
1970
2090
|
1 => 'Fired, Manual', #14
|
|
1971
2091
|
3 => 'Not Ready', #28
|
|
2092
|
+
#5 observed on Z9 firing remote SB-5000 via WR-R11a optical awl
|
|
1972
2093
|
7 => 'Fired, External', #14
|
|
1973
2094
|
8 => 'Fired, Commander Mode',
|
|
1974
2095
|
9 => 'Fired, TTL Mode',
|
|
@@ -2309,6 +2430,15 @@ my %base64coord = (
|
|
|
2309
2430
|
ByteOrder => 'LittleEndian',
|
|
2310
2431
|
},
|
|
2311
2432
|
},
|
|
2433
|
+
{ # (Z8 firmware version 1.00 ref 28)
|
|
2434
|
+
Condition => '$$valPt =~ /^0806/',
|
|
2435
|
+
Name => 'ShotInfoZ8',
|
|
2436
|
+
SubDirectory => {
|
|
2437
|
+
TagTable => 'Image::ExifTool::Nikon::ShotInfoZ8',
|
|
2438
|
+
DecryptStart => 4,
|
|
2439
|
+
ByteOrder => 'LittleEndian',
|
|
2440
|
+
},
|
|
2441
|
+
},
|
|
2312
2442
|
{ # (Z9 firmware version 1.00 ref 28)
|
|
2313
2443
|
Condition => '$$valPt =~ /^0805/',
|
|
2314
2444
|
Name => 'ShotInfoZ9',
|
|
@@ -2759,7 +2889,7 @@ my %base64coord = (
|
|
|
2759
2889
|
},
|
|
2760
2890
|
0x00b7 => [{
|
|
2761
2891
|
Name => 'AFInfo2',
|
|
2762
|
-
Condition => '$$self{Model} =~ /^NIKON Z 9\b/i', #AFInfo2Version 0400
|
|
2892
|
+
Condition => '$$self{Model} =~ /^NIKON (Z 8|Z 9)\b/i', #AFInfo2Version 0400
|
|
2763
2893
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::AFInfo2V0400' },
|
|
2764
2894
|
},{ #JD
|
|
2765
2895
|
Name => 'AFInfo2',
|
|
@@ -3888,6 +4018,7 @@ my %base64coord = (
|
|
|
3888
4018
|
205 => 'Dynamic Area (M)', #28 (Z9)
|
|
3889
4019
|
206 => 'Dynamic Area (L)', #28 (Z9)
|
|
3890
4020
|
207 => '3D-tracking', #28 (Z9)
|
|
4021
|
+
208 => 'Wide-Area (C1/C2)', #28 (Z8, Z9)
|
|
3891
4022
|
},
|
|
3892
4023
|
},
|
|
3893
4024
|
],
|
|
@@ -4469,6 +4600,15 @@ my %base64coord = (
|
|
|
4469
4600
|
208 => 'Wide (C1/C2)',
|
|
4470
4601
|
},
|
|
4471
4602
|
},
|
|
4603
|
+
10 => {
|
|
4604
|
+
Name => 'AFPointsUsed',
|
|
4605
|
+
Condition => '$$self{AFAreaMode} == 6', #only valid for Auto AF Area mode. Other modes handled via AFAreaXPosition/AFAreaYPosition
|
|
4606
|
+
Format => 'undef[51]',
|
|
4607
|
+
ValueConv => 'join(" ", unpack("H2"x51, $val))',
|
|
4608
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
4609
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints493); },
|
|
4610
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints493); },
|
|
4611
|
+
},
|
|
4472
4612
|
0x3e => {
|
|
4473
4613
|
Name => 'AFImageWidth',
|
|
4474
4614
|
Format => 'int16u',
|
|
@@ -5165,7 +5305,7 @@ my %nikonFocalConversions = (
|
|
|
5165
5305
|
%binaryDataAttrs,
|
|
5166
5306
|
NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
|
|
5167
5307
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
5168
|
-
DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56 ],
|
|
5308
|
+
DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56, 0x58 ],
|
|
5169
5309
|
0x00 => {
|
|
5170
5310
|
Name => 'LensDataVersion',
|
|
5171
5311
|
Format => 'string[4]',
|
|
@@ -5345,7 +5485,7 @@ my %nikonFocalConversions = (
|
|
|
5345
5485
|
0x4c => { #28
|
|
5346
5486
|
Name => 'FocusDistanceRangeWidth', #reflects the number of discrete absolute lens positions that are mapped to the reported FocusDistance. Will be 1 near CFD reflecting very narrow focus distance bands (i.e., quite accurate). Near Infinity will be something like 32. Note: 0 at infinity.
|
|
5347
5487
|
Format => 'int8u',
|
|
5348
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5488
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1 and $$self{FocusMode} ne "Manual"',
|
|
5349
5489
|
RawConv => '$$self{FocusDistanceRangeWidth} = $val',
|
|
5350
5490
|
Unknown => 1,
|
|
5351
5491
|
},
|
|
@@ -5354,19 +5494,26 @@ my %nikonFocalConversions = (
|
|
|
5354
5494
|
Format => 'int16u',
|
|
5355
5495
|
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5356
5496
|
RawConv => '$val = $val/256', # 1st byte is the fractional component. This byte was not previously considered in the legacy calculation (which only used the 2nd byte). When 2nd byte < 80; distance is < 1 meter
|
|
5357
|
-
ValueConv => '0.01 * 10**($val/40)',
|
|
5358
|
-
ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0'
|
|
5497
|
+
ValueConv => '2**(($val-80)/12)', # in m #slighly more accurate than the legacy calcualtion of '0.01 * 10**($val/40)'. Tested at all focus positions using the 105mm,70-200mm & 600mm
|
|
5498
|
+
ValueConvInv => '$val>0 ? log(12*($val+80)/log(2) : 0', #was '$val>0 ? 40*log($val*100)/log(10) : 0'
|
|
5359
5499
|
PrintConv => q{
|
|
5360
|
-
(defined $$self{
|
|
5500
|
+
(defined $$self{FocusStepsFromInfinity} and not $$self{FocusStepsFromInfinity}) ? "Inf" : $val < 1 ? $val < 0.35 ? sprintf("%.4f m", $val): sprintf("%.3f m", $val): sprintf("%.2f m", $val), #distances less than 35mm are quite accurate with increasingly less precision past 1m
|
|
5361
5501
|
},
|
|
5362
5502
|
},
|
|
5363
|
-
0x56 => { #28
|
|
5503
|
+
0x56 => { #28 #not valif for focus mode M
|
|
5364
5504
|
Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
|
|
5365
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5505
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1 and $$self{FocusMode} ne "Manual"',
|
|
5366
5506
|
Format => 'int8u',
|
|
5367
5507
|
RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
|
|
5368
5508
|
Unknown => 1,
|
|
5369
5509
|
},
|
|
5510
|
+
0x58 => { #28
|
|
5511
|
+
Name => 'FocusStepsFromInfinity',
|
|
5512
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1', #valid for both AF and manual focus modes
|
|
5513
|
+
Format => 'int8u',
|
|
5514
|
+
RawConv => '$$self{FocusStepsFromInfinity} = $val', # 0 at Infinity, otherwise a small positive number monotonically increasing towards CFD.
|
|
5515
|
+
Unknown => 1,
|
|
5516
|
+
},
|
|
5370
5517
|
0x5a => { #28
|
|
5371
5518
|
Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
|
|
5372
5519
|
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
@@ -8149,6 +8296,75 @@ my %nikonFocalConversions = (
|
|
|
8149
8296
|
},
|
|
8150
8297
|
);
|
|
8151
8298
|
|
|
8299
|
+
# shot information for the Z8 firmware 1.00 (encrypted) - ref 28
|
|
8300
|
+
%Image::ExifTool::Nikon::ShotInfoZ8 = (
|
|
8301
|
+
PROCESS_PROC => \&ProcessNikonEncrypted,
|
|
8302
|
+
WRITE_PROC => \&ProcessNikonEncrypted,
|
|
8303
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
8304
|
+
VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
|
|
8305
|
+
DATAMEMBER => [ 0x04 ],
|
|
8306
|
+
IS_SUBDIR => [ 0x30, 0x84, 0x8c ],
|
|
8307
|
+
WRITABLE => 1,
|
|
8308
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8309
|
+
NOTES => 'These tags are extracted from encrypted data in images from the Z8.',
|
|
8310
|
+
0x00 => {
|
|
8311
|
+
Name => 'ShotInfoVersion',
|
|
8312
|
+
Format => 'string[4]',
|
|
8313
|
+
Writable => 0,
|
|
8314
|
+
},
|
|
8315
|
+
0x04 => {
|
|
8316
|
+
Name => 'FirmwareVersion',
|
|
8317
|
+
DataMember => 'FirmwareVersion',
|
|
8318
|
+
Format => 'string[8]',
|
|
8319
|
+
Writable => 0,
|
|
8320
|
+
RawConv => '$$self{FirmwareVersion} = $val',
|
|
8321
|
+
},
|
|
8322
|
+
0x0e => {
|
|
8323
|
+
Name => 'FirmwareVersion2',
|
|
8324
|
+
Format => 'string[8]',
|
|
8325
|
+
Writable => 0,
|
|
8326
|
+
Hidden => 1,
|
|
8327
|
+
},
|
|
8328
|
+
0x18 => {
|
|
8329
|
+
Name => 'FirmwareVersion3',
|
|
8330
|
+
Format => 'string[8]',
|
|
8331
|
+
Writable => 0,
|
|
8332
|
+
Hidden => 1,
|
|
8333
|
+
},
|
|
8334
|
+
0x24 => {
|
|
8335
|
+
Name => 'NumberOffsets', # number of entries in offset table. offsets are from start of ShotInfo data.
|
|
8336
|
+
Format => 'int32u',
|
|
8337
|
+
Writable => 0,
|
|
8338
|
+
Hidden => 1,
|
|
8339
|
+
},
|
|
8340
|
+
# subdirectories, referenced by offsets (not processed if offset is zero)
|
|
8341
|
+
0x30 => {
|
|
8342
|
+
Name => 'SequenceOffset',
|
|
8343
|
+
Format => 'int32u',
|
|
8344
|
+
SubDirectory => {
|
|
8345
|
+
TagTable => 'Image::ExifTool::Nikon::SeqInfoZ9',
|
|
8346
|
+
Start => '$val',
|
|
8347
|
+
},
|
|
8348
|
+
},
|
|
8349
|
+
0x84 => {
|
|
8350
|
+
Name => 'OrientOffset',
|
|
8351
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
|
8352
|
+
Format => 'int32u',
|
|
8353
|
+
SubDirectory => {
|
|
8354
|
+
TagTable => 'Image::ExifTool::Nikon::OrientationInfo',
|
|
8355
|
+
Start => '$val',
|
|
8356
|
+
},
|
|
8357
|
+
},
|
|
8358
|
+
0x8c => {
|
|
8359
|
+
Name => 'MenuOffset',
|
|
8360
|
+
Format => 'int32u',
|
|
8361
|
+
SubDirectory => {
|
|
8362
|
+
TagTable => 'Image::ExifTool::Nikon::MenuInfoZ8',
|
|
8363
|
+
Start => '$val',
|
|
8364
|
+
},
|
|
8365
|
+
},
|
|
8366
|
+
);
|
|
8367
|
+
|
|
8152
8368
|
# shot information for the Z9 firmware 1.00 (encrypted) - ref 28
|
|
8153
8369
|
%Image::ExifTool::Nikon::ShotInfoZ9 = (
|
|
8154
8370
|
PROCESS_PROC => \&ProcessNikonEncrypted,
|
|
@@ -8156,7 +8372,7 @@ my %nikonFocalConversions = (
|
|
|
8156
8372
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
8157
8373
|
VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
|
|
8158
8374
|
DATAMEMBER => [ 0x04 ],
|
|
8159
|
-
IS_SUBDIR => [ 0x30, 0x58, 0x84, 0x8c ],
|
|
8375
|
+
IS_SUBDIR => [ 0x30, 0x58, 0x80, 0x84, 0x8c ],
|
|
8160
8376
|
WRITABLE => 1,
|
|
8161
8377
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8162
8378
|
NOTES => 'These tags are extracted from encrypted data in images from the Z9.',
|
|
@@ -8200,14 +8416,25 @@ my %nikonFocalConversions = (
|
|
|
8200
8416
|
},
|
|
8201
8417
|
},
|
|
8202
8418
|
0x58 => {
|
|
8203
|
-
Name => 'Offset13', #offset13 - length x'8f80 (Z9 firmware 3.01 NEF), using currently for a few
|
|
8419
|
+
Name => 'Offset13', #offset13 - length x'8f80 (Z9 firmware 3.01 NEF), using currently for a few focus related tags. Might be premature to give the offset a more meaningful name at this point.
|
|
8204
8420
|
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "03.01"',
|
|
8205
8421
|
Format => 'int32u',
|
|
8422
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
|
8206
8423
|
SubDirectory => {
|
|
8207
8424
|
TagTable => 'Image::ExifTool::Nikon::Offset13InfoZ9',
|
|
8208
8425
|
Start => '$val',
|
|
8209
8426
|
},
|
|
8210
8427
|
},
|
|
8428
|
+
0x80 => {
|
|
8429
|
+
Name => 'AutoCaptureOffset',
|
|
8430
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "04.00"',
|
|
8431
|
+
Format => 'int32u',
|
|
8432
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
|
8433
|
+
SubDirectory => {
|
|
8434
|
+
TagTable => 'Image::ExifTool::Nikon::AutoCaptureInfo',
|
|
8435
|
+
Start => '$val',
|
|
8436
|
+
},
|
|
8437
|
+
},
|
|
8211
8438
|
0x84 => {
|
|
8212
8439
|
Name => 'OrientOffset',
|
|
8213
8440
|
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
|
@@ -8232,6 +8459,8 @@ my %nikonFocalConversions = (
|
|
|
8232
8459
|
%binaryDataAttrs,
|
|
8233
8460
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8234
8461
|
DATAMEMBER => [ 0x20, 0x28, 0x2a ],
|
|
8462
|
+
#0x0019 => HDRFrame # For JPG 0=> Not HDR; 1=> file is the blended exposure. For raw files: 0=> Not from an HDR capture sequence; otherwise frame number in the HDR capture sequence -- 'Save Individual Pictures (RAW)' must be enabled.
|
|
8463
|
+
#0x001A => MultipleExposureFrame # For JPG 0=> Not a multiple exposure; 1=> file is the blended exposure. For raw files: 0=> Not a multiple exposure capture; otherwise frame number in the capture sequence -- 'Save Individual Pictures (RAW)' must be enabled.
|
|
8235
8464
|
0x0020 => {
|
|
8236
8465
|
Name => 'FocusShiftShooting',
|
|
8237
8466
|
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
|
@@ -8409,6 +8638,24 @@ my %nikonFocalConversions = (
|
|
|
8409
8638
|
},
|
|
8410
8639
|
);
|
|
8411
8640
|
|
|
8641
|
+
%Image::ExifTool::Nikon::MenuInfoZ8 = (
|
|
8642
|
+
%binaryDataAttrs,
|
|
8643
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8644
|
+
IS_SUBDIR => [ 0x10 ],
|
|
8645
|
+
# 0x00 - int32u size of this directory
|
|
8646
|
+
0x10 => [
|
|
8647
|
+
{
|
|
8648
|
+
Name => 'MenuSettingsOffsetZ8',
|
|
8649
|
+
Format => 'int32u',
|
|
8650
|
+
Notes => 'Firmware versions 1.0.0',
|
|
8651
|
+
SubDirectory => {
|
|
8652
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
|
|
8653
|
+
Start => '$dirStart + $val',
|
|
8654
|
+
},
|
|
8655
|
+
},
|
|
8656
|
+
],
|
|
8657
|
+
);
|
|
8658
|
+
|
|
8412
8659
|
%Image::ExifTool::Nikon::MenuInfoZ9 = (
|
|
8413
8660
|
%binaryDataAttrs,
|
|
8414
8661
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
@@ -8427,16 +8674,144 @@ my %nikonFocalConversions = (
|
|
|
8427
8674
|
},
|
|
8428
8675
|
{
|
|
8429
8676
|
Name => 'MenuSettingsOffsetZ9v3',
|
|
8430
|
-
|
|
8677
|
+
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "04.00"',
|
|
8678
|
+
Notes => 'Firmware versions 3.0 and v3.10',
|
|
8431
8679
|
Format => 'int32u',
|
|
8432
8680
|
SubDirectory => {
|
|
8433
8681
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v3',
|
|
8434
8682
|
Start => '$dirStart + $val',
|
|
8435
8683
|
},
|
|
8436
8684
|
},
|
|
8685
|
+
{
|
|
8686
|
+
Name => 'MenuSettingsOffsetZ9v4',
|
|
8687
|
+
Notes => 'Firmware versions 4.0 and later',
|
|
8688
|
+
Format => 'int32u',
|
|
8689
|
+
SubDirectory => {
|
|
8690
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v4',
|
|
8691
|
+
Start => '$dirStart + $val',
|
|
8692
|
+
},
|
|
8693
|
+
},
|
|
8437
8694
|
],
|
|
8438
8695
|
);
|
|
8439
8696
|
|
|
8697
|
+
%Image::ExifTool::Nikon::AutoCaptureInfo = (
|
|
8698
|
+
%binaryDataAttrs,
|
|
8699
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8700
|
+
DATAMEMBER => [ 0 ],
|
|
8701
|
+
0 => {
|
|
8702
|
+
Name => 'AutoCapturedFrame',
|
|
8703
|
+
RawConv => '$$self{AutoCapturedFrame} = $val',
|
|
8704
|
+
PrintConv => {
|
|
8705
|
+
0 => 'No',
|
|
8706
|
+
5 => 'Yes',
|
|
8707
|
+
},
|
|
8708
|
+
},
|
|
8709
|
+
1 => {
|
|
8710
|
+
Name => 'AutoCaptureCriteria',
|
|
8711
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8712
|
+
PrintConv => q[
|
|
8713
|
+
$_ = '';
|
|
8714
|
+
return $_ . Image::ExifTool::DecodeBits($val,
|
|
8715
|
+
{
|
|
8716
|
+
0 => 'Distance',
|
|
8717
|
+
1 => 'Motion',
|
|
8718
|
+
2 => 'Subject Detection',
|
|
8719
|
+
});
|
|
8720
|
+
],
|
|
8721
|
+
},
|
|
8722
|
+
# offsets 3-52 contain a bitmap of the focus points enabled when AutoArea is the AF-Area Mode. 0=> disabled, 1=> enabled. Focus points are in a grid with dimensions 25x15.
|
|
8723
|
+
55 => {
|
|
8724
|
+
Name => 'AutoCaptureRecordingTime',
|
|
8725
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8726
|
+
PrintConv => {
|
|
8727
|
+
0 => '1 Sec',
|
|
8728
|
+
1 => '3 Sec',
|
|
8729
|
+
2 => '5 Sec',
|
|
8730
|
+
#3 => '',
|
|
8731
|
+
4 => '30 Sec',
|
|
8732
|
+
5 => 'No Limit',
|
|
8733
|
+
6 => '2 Sec',
|
|
8734
|
+
7 => '10 Sec',
|
|
8735
|
+
8 => '20 Sec',
|
|
8736
|
+
9 => '1 Min',
|
|
8737
|
+
10 => '3 Min',
|
|
8738
|
+
11 => '5 Min',
|
|
8739
|
+
12 => '10 Min',
|
|
8740
|
+
13 => '30 Min',
|
|
8741
|
+
},
|
|
8742
|
+
},
|
|
8743
|
+
56 => {
|
|
8744
|
+
Name => 'AutoCaptureWaitTime',
|
|
8745
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8746
|
+
PrintConv => {
|
|
8747
|
+
0 => 'No Wait',
|
|
8748
|
+
1 => '10 Sec',
|
|
8749
|
+
2 => '30 Sec',
|
|
8750
|
+
3 => '1 Min',
|
|
8751
|
+
4 => '5 Min',
|
|
8752
|
+
5 => '10 Min',
|
|
8753
|
+
6 => '30 Min',
|
|
8754
|
+
7 => '1 Sec',
|
|
8755
|
+
8 => '2 Sec',
|
|
8756
|
+
9 => '3 Sec',
|
|
8757
|
+
10 => '5 Sec',
|
|
8758
|
+
11 => '20 Sec',
|
|
8759
|
+
12 => '3 Min',
|
|
8760
|
+
},
|
|
8761
|
+
},
|
|
8762
|
+
74 => {
|
|
8763
|
+
Name => 'AutoCaptureDistanceFar',
|
|
8764
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8765
|
+
PrintConv => 'sprintf("%.1f m", $val/10)',
|
|
8766
|
+
},
|
|
8767
|
+
78 => {
|
|
8768
|
+
Name => 'AutoCaptureDistanceNear',
|
|
8769
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8770
|
+
PrintConv => 'sprintf("%.1f m", $val/10)',
|
|
8771
|
+
},
|
|
8772
|
+
95 => {
|
|
8773
|
+
Name => 'AutoCaptureCriteriaMotionDirection',
|
|
8774
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8775
|
+
PrintConv => q[
|
|
8776
|
+
return 'All' if $val eq 255;
|
|
8777
|
+
$_ = '';
|
|
8778
|
+
return $_ . Image::ExifTool::DecodeBits($val,
|
|
8779
|
+
{
|
|
8780
|
+
0 => 'Top Left',
|
|
8781
|
+
1 => 'Top Right',
|
|
8782
|
+
2 => 'Bottom Left',
|
|
8783
|
+
3 => 'Bottom Right',
|
|
8784
|
+
4 => 'Left',
|
|
8785
|
+
5 => 'Right',
|
|
8786
|
+
6 => 'Top Center',
|
|
8787
|
+
7 => 'Bottom Center',
|
|
8788
|
+
});
|
|
8789
|
+
],
|
|
8790
|
+
},
|
|
8791
|
+
99 => {
|
|
8792
|
+
Name => 'AutoCaptureCriteriaMotionSpeed', #1-5
|
|
8793
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8794
|
+
},
|
|
8795
|
+
100 => {
|
|
8796
|
+
Name => 'AutoCaptureCriteriaMotionSize', #1-5
|
|
8797
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8798
|
+
},
|
|
8799
|
+
105 => {
|
|
8800
|
+
Name => 'AutoCaptureCriteriaSubjectSize', #1-5
|
|
8801
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8802
|
+
},
|
|
8803
|
+
106 => {
|
|
8804
|
+
Name => 'AutoCaptureCriteriaSubjectType',
|
|
8805
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
|
8806
|
+
PrintConv => {
|
|
8807
|
+
0 => 'Auto (all)',
|
|
8808
|
+
1 => 'People',
|
|
8809
|
+
2 => 'Animals',
|
|
8810
|
+
3 => 'Vehicle'
|
|
8811
|
+
},
|
|
8812
|
+
},
|
|
8813
|
+
);
|
|
8814
|
+
|
|
8440
8815
|
%Image::ExifTool::Nikon::OrientationInfo = (
|
|
8441
8816
|
%binaryDataAttrs,
|
|
8442
8817
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
@@ -8703,10 +9078,253 @@ my %nikonFocalConversions = (
|
|
|
8703
9078
|
#859 => HDMIViewAssist
|
|
8704
9079
|
);
|
|
8705
9080
|
|
|
9081
|
+
%Image::ExifTool::Nikon::MenuSettingsZ8 = (
|
|
9082
|
+
%binaryDataAttrs,
|
|
9083
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9084
|
+
DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596 ],
|
|
9085
|
+
IS_SUBDIR => [ 943 ],
|
|
9086
|
+
NOTES => 'These tags are used by the Z8 firmware 1.00.',
|
|
9087
|
+
72 => {
|
|
9088
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9089
|
+
PrintConv => \%highFrameRateZ9,
|
|
9090
|
+
},
|
|
9091
|
+
152 => {
|
|
9092
|
+
Name => 'MultipleExposureMode',
|
|
9093
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
|
9094
|
+
PrintConv => \%multipleExposureModeZ9,
|
|
9095
|
+
},
|
|
9096
|
+
154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
|
9097
|
+
184 => {
|
|
9098
|
+
Name => 'IntervalDurationHours',
|
|
9099
|
+
Format => 'int32u',
|
|
9100
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9101
|
+
},
|
|
9102
|
+
188 => {
|
|
9103
|
+
Name => 'IntervalDurationMinutes',
|
|
9104
|
+
Format => 'int32u',
|
|
9105
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9106
|
+
},
|
|
9107
|
+
192 => {
|
|
9108
|
+
Name => 'IntervalDurationSeconds',
|
|
9109
|
+
Format => 'int32u',
|
|
9110
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9111
|
+
},
|
|
9112
|
+
200 => {
|
|
9113
|
+
Name => 'Intervals',
|
|
9114
|
+
Format => 'int32u',
|
|
9115
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
9116
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9117
|
+
},
|
|
9118
|
+
204 => {
|
|
9119
|
+
Name => 'ShotsPerInterval',
|
|
9120
|
+
Format => 'int32u',
|
|
9121
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
9122
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9123
|
+
},
|
|
9124
|
+
208 => {
|
|
9125
|
+
Name => 'IntervalExposureSmoothing',
|
|
9126
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9127
|
+
Format => 'int8u',
|
|
9128
|
+
PrintConv => \%offOn,
|
|
9129
|
+
},
|
|
9130
|
+
210 => {
|
|
9131
|
+
Name => 'IntervalPriority',
|
|
9132
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
|
9133
|
+
Format => 'int8u',
|
|
9134
|
+
PrintConv => \%offOn,
|
|
9135
|
+
},
|
|
9136
|
+
244 => {
|
|
9137
|
+
Name => 'FocusShiftNumberShots', #1-300
|
|
9138
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
|
9139
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9140
|
+
},
|
|
9141
|
+
248 => {
|
|
9142
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
|
9143
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9144
|
+
},
|
|
9145
|
+
252 => {
|
|
9146
|
+
Name => 'FocusShiftInterval',
|
|
9147
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9148
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
|
9149
|
+
},
|
|
9150
|
+
256 => {
|
|
9151
|
+
Name => 'FocusShiftExposureLock',
|
|
9152
|
+
Unknown => 1,
|
|
9153
|
+
PrintConv => \%offOn,
|
|
9154
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9155
|
+
},
|
|
9156
|
+
286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
|
9157
|
+
288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
|
9158
|
+
324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
|
9159
|
+
338 => { Name => 'AutoISO', PrintConv => \%offOn },
|
|
9160
|
+
340 => {
|
|
9161
|
+
Name => 'ISOAutoHiLimit',
|
|
9162
|
+
Format => 'int16u',
|
|
9163
|
+
Unknown => 1,
|
|
9164
|
+
ValueConv => '($val-104)/8',
|
|
9165
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9166
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9167
|
+
},
|
|
9168
|
+
342 => {
|
|
9169
|
+
Name => 'ISOAutoFlashLimit',
|
|
9170
|
+
Format => 'int16u',
|
|
9171
|
+
Unknown => 1,
|
|
9172
|
+
ValueConv => '($val-104)/8',
|
|
9173
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9174
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9175
|
+
},
|
|
9176
|
+
350 => {
|
|
9177
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
|
9178
|
+
ValueConv => '$val / 8',
|
|
9179
|
+
Format => 'int16s',
|
|
9180
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
|
9181
|
+
},
|
|
9182
|
+
432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9183
|
+
434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
9184
|
+
436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
|
9185
|
+
440 => {
|
|
9186
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
|
9187
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
|
9188
|
+
PrintConv => \%flashControlModeZ7,
|
|
9189
|
+
},
|
|
9190
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
|
9191
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
9192
|
+
554 => {
|
|
9193
|
+
Name => 'BracketSet',
|
|
9194
|
+
RawConv => '$$self{BracketSet} = $val',
|
|
9195
|
+
PrintConv => \%bracketSetZ9,
|
|
9196
|
+
},
|
|
9197
|
+
556 => {
|
|
9198
|
+
Name => 'BracketProgram',
|
|
9199
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9200
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9201
|
+
PrintConv => \%bracketProgramZ9,
|
|
9202
|
+
},
|
|
9203
|
+
558 => {
|
|
9204
|
+
Name => 'BracketIncrement',
|
|
9205
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9206
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9207
|
+
PrintConv => \%bracketIncrementZ9,
|
|
9208
|
+
},
|
|
9209
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
|
9210
|
+
#572 HDRSaveRaw 0=> No; 1=> Yes
|
|
9211
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
|
9212
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
|
9213
|
+
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
|
9214
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
|
9215
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
9216
|
+
596 => {
|
|
9217
|
+
Name => 'DynamicAFAreaSize',
|
|
9218
|
+
Condition => '$$self{AFAreaMode} == 2',
|
|
9219
|
+
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9220
|
+
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9221
|
+
},
|
|
9222
|
+
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
|
9223
|
+
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
|
9224
|
+
636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9225
|
+
730 => {
|
|
9226
|
+
Name => 'MovieImageArea',
|
|
9227
|
+
Unknown => 1,
|
|
9228
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
|
9229
|
+
PrintConv => \%imageAreaZ9b,
|
|
9230
|
+
},
|
|
9231
|
+
740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
|
9232
|
+
742 => {
|
|
9233
|
+
Name => 'MovieISOAutoHiLimit',
|
|
9234
|
+
Format => 'int16u',
|
|
9235
|
+
Unknown => 1,
|
|
9236
|
+
ValueConv => '($val-104)/8',
|
|
9237
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9238
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9239
|
+
},
|
|
9240
|
+
744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9241
|
+
746 => {
|
|
9242
|
+
Name => 'MovieISOAutoManualMode',
|
|
9243
|
+
Format => 'int16u',
|
|
9244
|
+
Unknown => 1,
|
|
9245
|
+
ValueConv => '($val-104)/8',
|
|
9246
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9247
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9248
|
+
},
|
|
9249
|
+
820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
9250
|
+
822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9251
|
+
828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
|
9252
|
+
830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
|
9253
|
+
832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
9254
|
+
834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
|
9255
|
+
836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
|
9256
|
+
840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9257
|
+
842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
|
9258
|
+
844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
|
9259
|
+
846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9260
|
+
848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
|
9261
|
+
850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
|
9262
|
+
882 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9263
|
+
884 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
9264
|
+
886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
9265
|
+
887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
9266
|
+
888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
|
9267
|
+
896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
|
9268
|
+
943 => {
|
|
9269
|
+
Name => 'CustomSettingsZ8',
|
|
9270
|
+
Format => 'undef[730]',
|
|
9271
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
|
9272
|
+
},
|
|
9273
|
+
1682 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9274
|
+
1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9275
|
+
1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9276
|
+
1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
9277
|
+
1716 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
|
9278
|
+
1718 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9279
|
+
1720 => { Name => 'NonCPULens3FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9280
|
+
1722 => { Name => 'NonCPULens4FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9281
|
+
1724 => { Name => 'NonCPULens5FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9282
|
+
1726 => { Name => 'NonCPULens6FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9283
|
+
1728 => { Name => 'NonCPULens7FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9284
|
+
1730 => { Name => 'NonCPULens8FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9285
|
+
1732 => { Name => 'NonCPULens9FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9286
|
+
1734 => { Name => 'NonCPULens10FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9287
|
+
1736 => { Name => 'NonCPULens11FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9288
|
+
1738 => { Name => 'NonCPULens12FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9289
|
+
1740 => { Name => 'NonCPULens13FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9290
|
+
1742 => { Name => 'NonCPULens14FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9291
|
+
1744 => { Name => 'NonCPULens15FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9292
|
+
1746 => { Name => 'NonCPULens16FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9293
|
+
1748 => { Name => 'NonCPULens17FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9294
|
+
1750 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9295
|
+
1752 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9296
|
+
1754 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9297
|
+
1756 => { Name => 'NonCPULens1MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9298
|
+
1758 => { Name => 'NonCPULens2MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9299
|
+
1760 => { Name => 'NonCPULens3MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9300
|
+
1762 => { Name => 'NonCPULens4MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9301
|
+
1764 => { Name => 'NonCPULens5MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9302
|
+
1766 => { Name => 'NonCPULens6MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9303
|
+
1768 => { Name => 'NonCPULens7MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9304
|
+
1770 => { Name => 'NonCPULens8MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9305
|
+
1772 => { Name => 'NonCPULens9MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9306
|
+
1774 => { Name => 'NonCPULens10MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9307
|
+
1776 => { Name => 'NonCPULens11MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9308
|
+
1778 => { Name => 'NonCPULens12MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9309
|
+
1780 => { Name => 'NonCPULens13MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9310
|
+
1782 => { Name => 'NonCPULens14MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9311
|
+
1784 => { Name => 'NonCPULens15MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9312
|
+
1786 => { Name => 'NonCPULens16MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9313
|
+
1788 => { Name => 'NonCPULens17MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9314
|
+
1790 => { Name => 'NonCPULens18MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9315
|
+
1792 => { Name => 'NonCPULens19MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9316
|
+
1794 => { Name => 'NonCPULens20MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
|
9317
|
+
1808 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
|
9318
|
+
1826 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9319
|
+
1827 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
|
9320
|
+
1862 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9321
|
+
1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
9322
|
+
1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
9323
|
+
);
|
|
8706
9324
|
%Image::ExifTool::Nikon::MenuSettingsZ9 = (
|
|
8707
9325
|
%binaryDataAttrs,
|
|
8708
9326
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8709
|
-
DATAMEMBER => [ 140, 188, 192, 232, 424, 534, 576 ],
|
|
9327
|
+
DATAMEMBER => [ 140, 188, 192, 232, 424, 528, 534, 576 ],
|
|
8710
9328
|
IS_SUBDIR => [ 799 ],
|
|
8711
9329
|
NOTES => 'These tags are used by the Z9.',
|
|
8712
9330
|
#90 ISO
|
|
@@ -8720,13 +9338,13 @@ my %nikonFocalConversions = (
|
|
|
8720
9338
|
Name => 'Intervals',
|
|
8721
9339
|
Format => 'int32u',
|
|
8722
9340
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
8723
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
|
9341
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
|
8724
9342
|
},
|
|
8725
9343
|
192 => {
|
|
8726
9344
|
Name => 'ShotsPerInterval',
|
|
8727
9345
|
Format => 'int32u',
|
|
8728
9346
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
8729
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
|
9347
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
|
8730
9348
|
},
|
|
8731
9349
|
#220 NEFCompression 0=> 'Lossless' 1=> 'High Efficiency*' 4=> 'High Efficientcy'
|
|
8732
9350
|
232 => {
|
|
@@ -8823,7 +9441,7 @@ my %nikonFocalConversions = (
|
|
|
8823
9441
|
444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
|
8824
9442
|
456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
|
8825
9443
|
#526 FocusMode
|
|
8826
|
-
528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9
|
|
9444
|
+
528 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
|
8827
9445
|
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
|
|
8828
9446
|
534 => {
|
|
8829
9447
|
Name => 'BracketSet',
|
|
@@ -8848,7 +9466,7 @@ my %nikonFocalConversions = (
|
|
|
8848
9466
|
574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
8849
9467
|
576 => {
|
|
8850
9468
|
Name => 'DynamicAFAreaSize',
|
|
8851
|
-
Condition => '$$self{
|
|
9469
|
+
Condition => '$$self{AFAreaMode} == 2',
|
|
8852
9470
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
8853
9471
|
PrintConv => \%dynamicAfAreaModesZ9,
|
|
8854
9472
|
},
|
|
@@ -8917,7 +9535,7 @@ my %nikonFocalConversions = (
|
|
|
8917
9535
|
%Image::ExifTool::Nikon::MenuSettingsZ9v3 = (
|
|
8918
9536
|
%binaryDataAttrs,
|
|
8919
9537
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
8920
|
-
DATAMEMBER => [ 154, 204, 208, 248, 444, 554, 596 ],
|
|
9538
|
+
DATAMEMBER => [ 154, 204, 208, 248, 444, 548, 554, 596 ],
|
|
8921
9539
|
IS_SUBDIR => [ 847 ],
|
|
8922
9540
|
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
|
8923
9541
|
72 => {
|
|
@@ -8934,13 +9552,13 @@ my %nikonFocalConversions = (
|
|
|
8934
9552
|
Name => 'Intervals',
|
|
8935
9553
|
Format => 'int32u',
|
|
8936
9554
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
8937
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
|
9555
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
|
8938
9556
|
},
|
|
8939
9557
|
208 => {
|
|
8940
9558
|
Name => 'ShotsPerInterval',
|
|
8941
9559
|
Format => 'int32u',
|
|
8942
9560
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
8943
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
|
9561
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
|
8944
9562
|
},
|
|
8945
9563
|
248 => {
|
|
8946
9564
|
Name => 'FocusShiftNumberShots', #1-300
|
|
@@ -9024,7 +9642,7 @@ my %nikonFocalConversions = (
|
|
|
9024
9642
|
#462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
|
|
9025
9643
|
#464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
|
9026
9644
|
#476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
|
9027
|
-
548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
|
|
9645
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
|
9028
9646
|
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
9029
9647
|
554 => {
|
|
9030
9648
|
Name => 'BracketSet',
|
|
@@ -9048,7 +9666,7 @@ my %nikonFocalConversions = (
|
|
|
9048
9666
|
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
9049
9667
|
596 => {
|
|
9050
9668
|
Name => 'DynamicAFAreaSize',
|
|
9051
|
-
Condition => '$$self{
|
|
9669
|
+
Condition => '$$self{AFAreaMode} == 2',
|
|
9052
9670
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9053
9671
|
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9054
9672
|
},
|
|
@@ -9147,6 +9765,305 @@ my %nikonFocalConversions = (
|
|
|
9147
9765
|
#1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
|
|
9148
9766
|
);
|
|
9149
9767
|
|
|
9768
|
+
%Image::ExifTool::Nikon::MenuSettingsZ9v4 = (
|
|
9769
|
+
%binaryDataAttrs,
|
|
9770
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
9771
|
+
DATAMEMBER => [ 154, 204, 208, 248, 444, 548, 554, 570, 596 ],
|
|
9772
|
+
IS_SUBDIR => [ 847 ],
|
|
9773
|
+
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
|
9774
|
+
72 => {
|
|
9775
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
|
9776
|
+
PrintConv => \%highFrameRateZ9,
|
|
9777
|
+
},
|
|
9778
|
+
154 => {
|
|
9779
|
+
Name => 'MultipleExposureMode',
|
|
9780
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
|
9781
|
+
PrintConv => \%multipleExposureModeZ9,
|
|
9782
|
+
},
|
|
9783
|
+
156 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
|
9784
|
+
204 => {
|
|
9785
|
+
Name => 'Intervals',
|
|
9786
|
+
Format => 'int32u',
|
|
9787
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
|
9788
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
|
9789
|
+
},
|
|
9790
|
+
208 => {
|
|
9791
|
+
Name => 'ShotsPerInterval',
|
|
9792
|
+
Format => 'int32u',
|
|
9793
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
|
9794
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
|
9795
|
+
},
|
|
9796
|
+
248 => {
|
|
9797
|
+
Name => 'FocusShiftNumberShots', #1-300
|
|
9798
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
|
9799
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9800
|
+
},
|
|
9801
|
+
252 => {
|
|
9802
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
|
9803
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9804
|
+
},
|
|
9805
|
+
256 => {
|
|
9806
|
+
Name => 'FocusShiftInterval',
|
|
9807
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9808
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
|
9809
|
+
},
|
|
9810
|
+
260 => {
|
|
9811
|
+
Name => 'FocusShiftExposureLock',
|
|
9812
|
+
Unknown => 1,
|
|
9813
|
+
PrintConv => \%offOn,
|
|
9814
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
9815
|
+
},
|
|
9816
|
+
290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
|
9817
|
+
292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
|
9818
|
+
328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
|
9819
|
+
#334 JPGCompression 0 => 'Size Priority', 1 => 'Optimal Quality',
|
|
9820
|
+
342 => { Name => 'AutoISO', PrintConv => \%offOn },
|
|
9821
|
+
344 => {
|
|
9822
|
+
Name => 'ISOAutoHiLimit',
|
|
9823
|
+
Format => 'int16u',
|
|
9824
|
+
Unknown => 1,
|
|
9825
|
+
ValueConv => '($val-104)/8',
|
|
9826
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9827
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9828
|
+
},
|
|
9829
|
+
346 => {
|
|
9830
|
+
Name => 'ISOAutoFlashLimit',
|
|
9831
|
+
Format => 'int16u',
|
|
9832
|
+
Unknown => 1,
|
|
9833
|
+
ValueConv => '($val-104)/8',
|
|
9834
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9835
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9836
|
+
},
|
|
9837
|
+
354 => {
|
|
9838
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
|
9839
|
+
ValueConv => '$val / 8',
|
|
9840
|
+
Format => 'int16s',
|
|
9841
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
|
9842
|
+
},
|
|
9843
|
+
436 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9844
|
+
438 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
|
9845
|
+
440 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
|
9846
|
+
444 => {
|
|
9847
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
|
9848
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
|
9849
|
+
PrintConv => \%flashControlModeZ7,
|
|
9850
|
+
},
|
|
9851
|
+
446 => {
|
|
9852
|
+
Name => 'FlashMasterCompensation',
|
|
9853
|
+
Format => 'int8s',
|
|
9854
|
+
Unknown => 1,
|
|
9855
|
+
ValueConv => '$val/6',
|
|
9856
|
+
ValueConvInv => '6 * $val',
|
|
9857
|
+
PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
|
|
9858
|
+
PrintConvInv => '$val',
|
|
9859
|
+
},
|
|
9860
|
+
450 => {
|
|
9861
|
+
Name => 'FlashGNDistance',
|
|
9862
|
+
Condition => '$$self{FlashControlMode} == 2',
|
|
9863
|
+
Unknown => 1,
|
|
9864
|
+
ValueConv => '$val + 3',
|
|
9865
|
+
PrintConv => \%flashGNDistance,
|
|
9866
|
+
},
|
|
9867
|
+
454 => {
|
|
9868
|
+
Name => 'FlashOutput', # range[0,24] with 0=>Full; 1=>50%; then decreasing flash power in 1/3 stops to 0.39% (1/256 full power). also found in FlashInfoUnknown at offset 0x0a (with different mappings)
|
|
9869
|
+
Condition => '$$self{FlashControlMode} >= 3',
|
|
9870
|
+
Unknown => 1,
|
|
9871
|
+
ValueConv => '2 ** (-$val/3)',
|
|
9872
|
+
ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
|
|
9873
|
+
PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
|
|
9874
|
+
PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
|
|
9875
|
+
},
|
|
9876
|
+
#462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
|
|
9877
|
+
#464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
|
9878
|
+
#476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
|
9879
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
|
9880
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
|
9881
|
+
554 => {
|
|
9882
|
+
Name => 'BracketSet',
|
|
9883
|
+
RawConv => '$$self{BracketSet} = $val',
|
|
9884
|
+
PrintConv => \%bracketSetZ9,
|
|
9885
|
+
},
|
|
9886
|
+
556 => {
|
|
9887
|
+
Name => 'BracketProgram',
|
|
9888
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9889
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9890
|
+
PrintConv => \%bracketProgramZ9,
|
|
9891
|
+
},
|
|
9892
|
+
558 => {
|
|
9893
|
+
Name => 'BracketIncrement',
|
|
9894
|
+
Condition => '$$self{BracketSet} < 3',
|
|
9895
|
+
Notes => 'AE and/or Flash Bracketing',
|
|
9896
|
+
PrintConv => \%bracketIncrementZ9,
|
|
9897
|
+
},
|
|
9898
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
|
9899
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
|
9900
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
|
9901
|
+
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
|
9902
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
|
9903
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
|
9904
|
+
596 => {
|
|
9905
|
+
Name => 'DynamicAFAreaSize',
|
|
9906
|
+
Condition => '$$self{AFAreaMode} == 2',
|
|
9907
|
+
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
|
9908
|
+
PrintConv => \%dynamicAfAreaModesZ9,
|
|
9909
|
+
},
|
|
9910
|
+
636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
|
9911
|
+
646 => {
|
|
9912
|
+
Name => 'MovieImageArea',
|
|
9913
|
+
Unknown => 1,
|
|
9914
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
|
9915
|
+
PrintConv => \%imageAreaZ9b,
|
|
9916
|
+
},
|
|
9917
|
+
656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
|
9918
|
+
658 => {
|
|
9919
|
+
Name => 'MovieISOAutoHiLimit',
|
|
9920
|
+
Format => 'int16u',
|
|
9921
|
+
Unknown => 1,
|
|
9922
|
+
ValueConv => '($val-104)/8',
|
|
9923
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9924
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9925
|
+
},
|
|
9926
|
+
660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
|
9927
|
+
662 => {
|
|
9928
|
+
Name => 'MovieISOAutoManualMode',
|
|
9929
|
+
Format => 'int16u',
|
|
9930
|
+
Unknown => 1,
|
|
9931
|
+
ValueConv => '($val-104)/8',
|
|
9932
|
+
ValueConvInv => '8 * ($val + 104)',
|
|
9933
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
|
9934
|
+
},
|
|
9935
|
+
736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
|
9936
|
+
738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
|
9937
|
+
744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
|
9938
|
+
746 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
|
9939
|
+
748 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
|
9940
|
+
750 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
|
9941
|
+
752 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
|
9942
|
+
756 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9943
|
+
758 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
|
9944
|
+
760 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
|
9945
|
+
762 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
|
9946
|
+
764 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
|
9947
|
+
766 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
|
9948
|
+
788 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
|
|
9949
|
+
794 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
|
9950
|
+
796 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
|
9951
|
+
802 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
|
9952
|
+
803 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
|
9953
|
+
804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
|
9954
|
+
812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
|
9955
|
+
847 => {
|
|
9956
|
+
Name => 'CustomSettingsZ9v4',
|
|
9957
|
+
Format => 'undef[632]',
|
|
9958
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9v4' },
|
|
9959
|
+
},
|
|
9960
|
+
1498 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
|
9961
|
+
1500 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
|
9962
|
+
1506 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
|
9963
|
+
1528 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
|
9964
|
+
1532 => { Name => 'NonCPULens1FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
|
9965
|
+
1536 => { Name => 'NonCPULens2FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9966
|
+
1540 => { Name => 'NonCPULens3FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9967
|
+
1544 => { Name => 'NonCPULens4FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9968
|
+
1548 => { Name => 'NonCPULens5FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9969
|
+
1552 => { Name => 'NonCPULens6FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9970
|
+
1556 => { Name => 'NonCPULens7FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9971
|
+
1560 => { Name => 'NonCPULens8FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9972
|
+
1564 => { Name => 'NonCPULens9FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9973
|
+
1568 => { Name => 'NonCPULens10FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9974
|
+
1572 => { Name => 'NonCPULens11FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9975
|
+
1576 => { Name => 'NonCPULens12FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9976
|
+
1580 => { Name => 'NonCPULens13FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9977
|
+
1584 => { Name => 'NonCPULens14FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9978
|
+
1588 => { Name => 'NonCPULens15FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9979
|
+
1592 => { Name => 'NonCPULens16FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9980
|
+
1596 => { Name => 'NonCPULens17FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9981
|
+
1600 => { Name => 'NonCPULens18FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9982
|
+
1604 => { Name => 'NonCPULens19FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9983
|
+
1608 => { Name => 'NonCPULens20FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
|
9984
|
+
1612 => { Name => 'NonCPULens1MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1}, #non-CPU aperture interface, values and storage differ from the Z8
|
|
9985
|
+
1616 => { Name => 'NonCPULens2MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9986
|
+
1620 => { Name => 'NonCPULens3MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9987
|
+
1624 => { Name => 'NonCPULens4MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9988
|
+
1628 => { Name => 'NonCPULens5MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9989
|
+
1632 => { Name => 'NonCPULens6MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9990
|
+
1636 => { Name => 'NonCPULens7MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9991
|
+
1640 => { Name => 'NonCPULens8MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9992
|
+
1644 => { Name => 'NonCPULens9MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9993
|
+
1648 => { Name => 'NonCPULens10MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9994
|
+
1652 => { Name => 'NonCPULens11MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9995
|
+
1656 => { Name => 'NonCPULens12MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9996
|
+
1660 => { Name => 'NonCPULens13MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9997
|
+
1664 => { Name => 'NonCPULens14MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9998
|
+
1668 => { Name => 'NonCPULens15MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
9999
|
+
1672 => { Name => 'NonCPULens16MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
10000
|
+
1676 => { Name => 'NonCPULens17MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
10001
|
+
1680 => { Name => 'NonCPULens18MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
10002
|
+
1684 => { Name => 'NonCPULens19MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
10003
|
+
1688 => { Name => 'NonCPULens20MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
|
10004
|
+
1704 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
|
10005
|
+
1717 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
|
|
10006
|
+
1724 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
|
10007
|
+
1725 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
|
10008
|
+
1760 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
|
|
10009
|
+
1784 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
|
|
10010
|
+
1788 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
|
10011
|
+
1797 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
|
10012
|
+
1862 => {
|
|
10013
|
+
Name => 'AutoCapturePreset',
|
|
10014
|
+
PrintConv => {
|
|
10015
|
+
0 => '1',
|
|
10016
|
+
1 => '2',
|
|
10017
|
+
2 => '3',
|
|
10018
|
+
3 => '4',
|
|
10019
|
+
4 => '5',
|
|
10020
|
+
},
|
|
10021
|
+
},
|
|
10022
|
+
1864 => {
|
|
10023
|
+
Name => 'FocusShiftAutoReset',
|
|
10024
|
+
Unknown => 1,
|
|
10025
|
+
PrintConv => \%offOn,
|
|
10026
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
|
10027
|
+
},
|
|
10028
|
+
1922 => { #CSd4-a
|
|
10029
|
+
Name => 'PreReleaseBurstLength',
|
|
10030
|
+
PrintConv => {
|
|
10031
|
+
0 => 'None',
|
|
10032
|
+
1 => '0.3 Sec',
|
|
10033
|
+
2 => '0.5 Sec',
|
|
10034
|
+
3 => '1 Sec',
|
|
10035
|
+
},
|
|
10036
|
+
},
|
|
10037
|
+
1924 => { #CSd4-b
|
|
10038
|
+
Name => 'PostReleaseBurstLength',
|
|
10039
|
+
PrintConv => {
|
|
10040
|
+
0 => '1 Sec',
|
|
10041
|
+
1 => '2 Sec',
|
|
10042
|
+
2 => '3 Sec',
|
|
10043
|
+
3 => 'Max',
|
|
10044
|
+
},
|
|
10045
|
+
},
|
|
10046
|
+
1938 => { Name => 'VerticalISOButton', %buttonsZ9}, #CSf2
|
|
10047
|
+
1940 => { Name => 'ExposureCompensationButton', %buttonsZ9}, #CSf2
|
|
10048
|
+
1942 => { Name => 'ISOButton', %buttonsZ9}, #CSf2
|
|
10049
|
+
2002 => { Name => 'ViewModeShowEffectsOfSettings', PrintConv => { 0=>'Always', 1=> 'Only When Flash Not Used'}, Unknown => 1 }, #CSd9-a
|
|
10050
|
+
2004 => { Name => 'DispButton', %buttonsZ9}, #CSf2
|
|
10051
|
+
2048 => { #CSd6
|
|
10052
|
+
Name => 'ExposureDelay',
|
|
10053
|
+
Format => 'fixed32u',
|
|
10054
|
+
PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
|
|
10055
|
+
},
|
|
10056
|
+
2056 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
|
|
10057
|
+
2058 => { Name => 'WBButton', %buttonsZ9}, #CSf2
|
|
10058
|
+
2060 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
|
|
10059
|
+
2062 => { Name => 'FlashModeButton', %buttonsZ9}, #CSf2
|
|
10060
|
+
2064 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
10061
|
+
2066 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
10062
|
+
2068 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
10063
|
+
2070 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
10064
|
+
2072 => { Name => 'FlashModeButtonPlaybackMode', %buttonsZ9}, #CSf2
|
|
10065
|
+
);
|
|
10066
|
+
|
|
9150
10067
|
# Flash information (ref JD)
|
|
9151
10068
|
%Image::ExifTool::Nikon::FlashInfo0100 = (
|
|
9152
10069
|
%binaryDataAttrs,
|
|
@@ -10409,16 +11326,14 @@ my %nikonFocalConversions = (
|
|
|
10409
11326
|
},
|
|
10410
11327
|
);
|
|
10411
11328
|
|
|
10412
|
-
# MakerNotes0x51 - compression info for Z9
|
|
11329
|
+
# MakerNotes0x51 - compression info for Z8 and Z9
|
|
10413
11330
|
%Image::ExifTool::Nikon::MakerNotes0x51 = (
|
|
10414
11331
|
%binaryDataAttrs,
|
|
10415
|
-
DATAMEMBER => [ 0 ],
|
|
10416
11332
|
GROUPS => { 0 => 'MakerNotes' },
|
|
10417
11333
|
0 => {
|
|
10418
|
-
Name => '
|
|
11334
|
+
Name => 'FirmwareVersion51',
|
|
10419
11335
|
Format => 'string[8]',
|
|
10420
11336
|
Writable => 0,
|
|
10421
|
-
RawConv => '$$self{FirmwareVersion} = $val',
|
|
10422
11337
|
},
|
|
10423
11338
|
10 => {
|
|
10424
11339
|
Name => 'NEFCompression',
|
|
@@ -12069,8 +12984,10 @@ sub PrepareNikonOffsets($$$$$)
|
|
|
12069
12984
|
for ($i=0; $i<@sorted-1; ++$i) {
|
|
12070
12985
|
my $pos = $sorted[$i][0];
|
|
12071
12986
|
my $len = $sorted[$i+1][1] - $sorted[$i][1];
|
|
12072
|
-
# set DirLen in SubDirectory entry
|
|
12073
12987
|
my $tagInfo = $$tagTablePtr{$pos};
|
|
12988
|
+
$tagInfo = $et->GetTagInfo($tagTablePtr, $pos) if $tagInfo and
|
|
12989
|
+
not (ref $tagInfo eq 'HASH' and $$tagInfo{AlwaysDecrypt});
|
|
12990
|
+
# set DirLen in SubDirectory entry
|
|
12074
12991
|
my $subdir;
|
|
12075
12992
|
$$subdir{DirLen} = $len if ref $tagInfo eq 'HASH' and defined($subdir=$$tagInfo{SubDirectory});
|
|
12076
12993
|
if ($decryptMode) {
|
|
@@ -12082,7 +12999,7 @@ sub PrepareNikonOffsets($$$$$)
|
|
|
12082
12999
|
if ($subdir and $$subdir{KnownEnd}) {
|
|
12083
13000
|
$n = $$subdir{KnownEnd};
|
|
12084
13001
|
if ($n > $len) {
|
|
12085
|
-
$et->Warn("Data too short for $$tagInfo{Name}",1);
|
|
13002
|
+
$et->Warn("Data too short for $$tagInfo{Name}",1) unless $$tagInfo{AlwaysDecrypt};
|
|
12086
13003
|
$n = $len;
|
|
12087
13004
|
}
|
|
12088
13005
|
}
|