exiftool_vendored 12.64.1 → 12.65.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.
- checksums.yaml +4 -4
- data/bin/Changes +26 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +22 -15
- data/bin/lib/Image/ExifTool/Apple.pm +9 -5
- data/bin/lib/Image/ExifTool/BigTIFF.pm +8 -1
- data/bin/lib/Image/ExifTool/Canon.pm +3 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +561 -67
- data/bin/lib/Image/ExifTool/NikonCustom.pm +862 -61
- data/bin/lib/Image/ExifTool/PDF.pm +18 -8
- data/bin/lib/Image/ExifTool/QuickTime.pm +18 -10
- data/bin/lib/Image/ExifTool/Samsung.pm +227 -227
- data/bin/lib/Image/ExifTool/Sony.pm +128 -24
- data/bin/lib/Image/ExifTool/TagLookup.pm +4607 -4591
- data/bin/lib/Image/ExifTool/TagNames.pod +465 -21
- data/bin/lib/Image/ExifTool/Writer.pl +7 -2
- data/bin/lib/Image/ExifTool.pm +112 -92
- data/bin/lib/Image/ExifTool.pod +26 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -184
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
|
|
65
65
|
use Image::ExifTool::GPS;
|
66
66
|
use Image::ExifTool::XMP;
|
67
67
|
|
68
|
-
$VERSION = '4.
|
68
|
+
$VERSION = '4.24';
|
69
69
|
|
70
70
|
sub LensIDConv($$$);
|
71
71
|
sub ProcessNikonAVI($$$);
|
@@ -932,6 +932,14 @@ my %hDMIOutputResolutionZ9 = (
|
|
932
932
|
#7 => '480p',
|
933
933
|
);
|
934
934
|
|
935
|
+
my %hdrLevelZ8 = (
|
936
|
+
0 => 'Auto',
|
937
|
+
1 => 'Extra High',
|
938
|
+
2 => 'High',
|
939
|
+
3 => 'Normal',
|
940
|
+
4 => 'Low',
|
941
|
+
);
|
942
|
+
|
935
943
|
my %highFrameRateZ9 = (
|
936
944
|
0 => 'Off',
|
937
945
|
1 => 'CH',
|
@@ -953,9 +961,10 @@ my %imageAreaZ9b = (
|
|
953
961
|
);
|
954
962
|
|
955
963
|
my %infoZSeries = (
|
956
|
-
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
|
957
|
-
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',
|
958
966
|
);
|
967
|
+
|
959
968
|
my %iSOAutoHiLimitZ7 = (
|
960
969
|
0 => 'ISO 64',
|
961
970
|
1 => 'ISO 80',
|
@@ -1118,6 +1127,32 @@ my %multipleExposureModeZ9 = (
|
|
1118
1127
|
2 => 'On (Series)',
|
1119
1128
|
);
|
1120
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
|
+
|
1121
1156
|
my %offLowNormalHighZ7 = (
|
1122
1157
|
0 => 'Off',
|
1123
1158
|
1 => 'Low',
|
@@ -1125,6 +1160,13 @@ my %offLowNormalHighZ7 = (
|
|
1125
1160
|
3 => 'High',
|
1126
1161
|
);
|
1127
1162
|
|
1163
|
+
my %portraitImpressionBalanceZ8 = (
|
1164
|
+
0 => 'Off',
|
1165
|
+
1 => 'Mode 1',
|
1166
|
+
2 => 'Mode 2',
|
1167
|
+
3 => 'Mode 3',
|
1168
|
+
);
|
1169
|
+
|
1128
1170
|
my %releaseModeZ7 = (
|
1129
1171
|
0 => 'Continuous Low',
|
1130
1172
|
1 => 'Continuous High',
|
@@ -1146,6 +1188,7 @@ my %subjectDetectionZ9 = (
|
|
1146
1188
|
2 => 'People',
|
1147
1189
|
3 => 'Animals',
|
1148
1190
|
4 => 'Vehicles',
|
1191
|
+
6 => 'Airplanes',
|
1149
1192
|
);
|
1150
1193
|
|
1151
1194
|
my %timeZoneZ9 = (
|
@@ -1404,6 +1447,66 @@ my %afPoints81 = (
|
|
1404
1447
|
17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
|
1405
1448
|
);
|
1406
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
|
+
);
|
1407
1510
|
my %cropHiSpeed = ( #IB
|
1408
1511
|
0 => 'Off',
|
1409
1512
|
1 => '1.3x Crop', # (1.3x Crop, Large)
|
@@ -1530,6 +1633,7 @@ my %base64coord = (
|
|
1530
1633
|
0x0006 => { Name => 'Sharpness', Writable => 'string' },
|
1531
1634
|
0x0007 => {
|
1532
1635
|
Name => 'FocusMode',
|
1636
|
+
RawConv => '$$self{FocusMode} = $val',
|
1533
1637
|
Writable => 'string',
|
1534
1638
|
},
|
1535
1639
|
# FlashSetting (better named FlashSyncMode, ref 28) values:
|
@@ -1721,6 +1825,7 @@ my %base64coord = (
|
|
1721
1825
|
PrintConv => {
|
1722
1826
|
1 => 'sRGB',
|
1723
1827
|
2 => 'Adobe RGB',
|
1828
|
+
4 => 'BT.2100', #observed on Z8 with Tone Mode set to HLG
|
1724
1829
|
},
|
1725
1830
|
},
|
1726
1831
|
0x001f => { #PH
|
@@ -1976,6 +2081,7 @@ my %base64coord = (
|
|
1976
2081
|
0 => 'Did Not Fire',
|
1977
2082
|
1 => 'Fired, Manual', #14
|
1978
2083
|
3 => 'Not Ready', #28
|
2084
|
+
#5 observed on Z9 firing remote SB-5000 via WR-R11a optical awl
|
1979
2085
|
7 => 'Fired, External', #14
|
1980
2086
|
8 => 'Fired, Commander Mode',
|
1981
2087
|
9 => 'Fired, TTL Mode',
|
@@ -2316,6 +2422,15 @@ my %base64coord = (
|
|
2316
2422
|
ByteOrder => 'LittleEndian',
|
2317
2423
|
},
|
2318
2424
|
},
|
2425
|
+
{ # (Z8 firmware version 1.00 ref 28)
|
2426
|
+
Condition => '$$valPt =~ /^0806/',
|
2427
|
+
Name => 'ShotInfoZ8',
|
2428
|
+
SubDirectory => {
|
2429
|
+
TagTable => 'Image::ExifTool::Nikon::ShotInfoZ8',
|
2430
|
+
DecryptStart => 4,
|
2431
|
+
ByteOrder => 'LittleEndian',
|
2432
|
+
},
|
2433
|
+
},
|
2319
2434
|
{ # (Z9 firmware version 1.00 ref 28)
|
2320
2435
|
Condition => '$$valPt =~ /^0805/',
|
2321
2436
|
Name => 'ShotInfoZ9',
|
@@ -2766,7 +2881,7 @@ my %base64coord = (
|
|
2766
2881
|
},
|
2767
2882
|
0x00b7 => [{
|
2768
2883
|
Name => 'AFInfo2',
|
2769
|
-
Condition => '$$self{Model} =~ /^NIKON Z 9\b/i', #AFInfo2Version 0400
|
2884
|
+
Condition => '$$self{Model} =~ /^NIKON (Z 8|Z 9)\b/i', #AFInfo2Version 0400
|
2770
2885
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::AFInfo2V0400' },
|
2771
2886
|
},{ #JD
|
2772
2887
|
Name => 'AFInfo2',
|
@@ -3895,6 +4010,7 @@ my %base64coord = (
|
|
3895
4010
|
205 => 'Dynamic Area (M)', #28 (Z9)
|
3896
4011
|
206 => 'Dynamic Area (L)', #28 (Z9)
|
3897
4012
|
207 => '3D-tracking', #28 (Z9)
|
4013
|
+
208 => 'Wide-Area (C1/C2)', #28 (Z8, Z9)
|
3898
4014
|
},
|
3899
4015
|
},
|
3900
4016
|
],
|
@@ -4476,6 +4592,15 @@ my %base64coord = (
|
|
4476
4592
|
208 => 'Wide (C1/C2)',
|
4477
4593
|
},
|
4478
4594
|
},
|
4595
|
+
10 => {
|
4596
|
+
Name => 'AFPointsUsed',
|
4597
|
+
Condition => '$$self{AFAreaMode} == 6', #only valid for Auto AF Area mode. Other modes handled via AFAreaXPosition/AFAreaYPosition
|
4598
|
+
Format => 'undef[51]',
|
4599
|
+
ValueConv => 'join(" ", unpack("H2"x51, $val))',
|
4600
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
4601
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints493); },
|
4602
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints493); },
|
4603
|
+
},
|
4479
4604
|
0x3e => {
|
4480
4605
|
Name => 'AFImageWidth',
|
4481
4606
|
Format => 'int16u',
|
@@ -5172,7 +5297,7 @@ my %nikonFocalConversions = (
|
|
5172
5297
|
%binaryDataAttrs,
|
5173
5298
|
NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
|
5174
5299
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
5175
|
-
DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56 ],
|
5300
|
+
DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56, 0x58 ],
|
5176
5301
|
0x00 => {
|
5177
5302
|
Name => 'LensDataVersion',
|
5178
5303
|
Format => 'string[4]',
|
@@ -5352,7 +5477,7 @@ my %nikonFocalConversions = (
|
|
5352
5477
|
0x4c => { #28
|
5353
5478
|
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.
|
5354
5479
|
Format => 'int8u',
|
5355
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5480
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1 and $$self{FocusMode} ne "Manual"',
|
5356
5481
|
RawConv => '$$self{FocusDistanceRangeWidth} = $val',
|
5357
5482
|
Unknown => 1,
|
5358
5483
|
},
|
@@ -5361,19 +5486,26 @@ my %nikonFocalConversions = (
|
|
5361
5486
|
Format => 'int16u',
|
5362
5487
|
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5363
5488
|
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
|
5364
|
-
ValueConv => '0.01 * 10**($val/40)',
|
5365
|
-
ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0'
|
5489
|
+
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
|
5490
|
+
ValueConvInv => '$val>0 ? log(12*($val+80)/log(2) : 0', #was '$val>0 ? 40*log($val*100)/log(10) : 0'
|
5366
5491
|
PrintConv => q{
|
5367
|
-
(defined $$self{
|
5492
|
+
(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
|
5368
5493
|
},
|
5369
5494
|
},
|
5370
|
-
0x56 => { #28
|
5495
|
+
0x56 => { #28 #not valif for focus mode M
|
5371
5496
|
Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
|
5372
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5497
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1 and $$self{FocusMode} ne "Manual"',
|
5373
5498
|
Format => 'int8u',
|
5374
5499
|
RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
|
5375
5500
|
Unknown => 1,
|
5376
5501
|
},
|
5502
|
+
0x58 => { #28
|
5503
|
+
Name => 'FocusStepsFromInfinity',
|
5504
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1', #valid for both AF and manual focus modes
|
5505
|
+
Format => 'int8u',
|
5506
|
+
RawConv => '$$self{FocusStepsFromInfinity} = $val', # 0 at Infinity, otherwise a small positive number monotonically increasing towards CFD.
|
5507
|
+
Unknown => 1,
|
5508
|
+
},
|
5377
5509
|
0x5a => { #28
|
5378
5510
|
Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
|
5379
5511
|
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
@@ -8156,6 +8288,75 @@ my %nikonFocalConversions = (
|
|
8156
8288
|
},
|
8157
8289
|
);
|
8158
8290
|
|
8291
|
+
# shot information for the Z8 firmware 1.00 (encrypted) - ref 28
|
8292
|
+
%Image::ExifTool::Nikon::ShotInfoZ8 = (
|
8293
|
+
PROCESS_PROC => \&ProcessNikonEncrypted,
|
8294
|
+
WRITE_PROC => \&ProcessNikonEncrypted,
|
8295
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
8296
|
+
VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
|
8297
|
+
DATAMEMBER => [ 0x04 ],
|
8298
|
+
IS_SUBDIR => [ 0x30, 0x84, 0x8c ],
|
8299
|
+
WRITABLE => 1,
|
8300
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8301
|
+
NOTES => 'These tags are extracted from encrypted data in images from the Z8.',
|
8302
|
+
0x00 => {
|
8303
|
+
Name => 'ShotInfoVersion',
|
8304
|
+
Format => 'string[4]',
|
8305
|
+
Writable => 0,
|
8306
|
+
},
|
8307
|
+
0x04 => {
|
8308
|
+
Name => 'FirmwareVersion',
|
8309
|
+
DataMember => 'FirmwareVersion',
|
8310
|
+
Format => 'string[8]',
|
8311
|
+
Writable => 0,
|
8312
|
+
RawConv => '$$self{FirmwareVersion} = $val',
|
8313
|
+
},
|
8314
|
+
0x0e => {
|
8315
|
+
Name => 'FirmwareVersion2',
|
8316
|
+
Format => 'string[8]',
|
8317
|
+
Writable => 0,
|
8318
|
+
Hidden => 1,
|
8319
|
+
},
|
8320
|
+
0x18 => {
|
8321
|
+
Name => 'FirmwareVersion3',
|
8322
|
+
Format => 'string[8]',
|
8323
|
+
Writable => 0,
|
8324
|
+
Hidden => 1,
|
8325
|
+
},
|
8326
|
+
0x24 => {
|
8327
|
+
Name => 'NumberOffsets', # number of entries in offset table. offsets are from start of ShotInfo data.
|
8328
|
+
Format => 'int32u',
|
8329
|
+
Writable => 0,
|
8330
|
+
Hidden => 1,
|
8331
|
+
},
|
8332
|
+
# subdirectories, referenced by offsets (not processed if offset is zero)
|
8333
|
+
0x30 => {
|
8334
|
+
Name => 'SequenceOffset',
|
8335
|
+
Format => 'int32u',
|
8336
|
+
SubDirectory => {
|
8337
|
+
TagTable => 'Image::ExifTool::Nikon::SeqInfoZ9',
|
8338
|
+
Start => '$val',
|
8339
|
+
},
|
8340
|
+
},
|
8341
|
+
0x84 => {
|
8342
|
+
Name => 'OrientOffset',
|
8343
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
8344
|
+
Format => 'int32u',
|
8345
|
+
SubDirectory => {
|
8346
|
+
TagTable => 'Image::ExifTool::Nikon::OrientationInfo',
|
8347
|
+
Start => '$val',
|
8348
|
+
},
|
8349
|
+
},
|
8350
|
+
0x8c => {
|
8351
|
+
Name => 'MenuOffset',
|
8352
|
+
Format => 'int32u',
|
8353
|
+
SubDirectory => {
|
8354
|
+
TagTable => 'Image::ExifTool::Nikon::MenuInfoZ8',
|
8355
|
+
Start => '$val',
|
8356
|
+
},
|
8357
|
+
},
|
8358
|
+
);
|
8359
|
+
|
8159
8360
|
# shot information for the Z9 firmware 1.00 (encrypted) - ref 28
|
8160
8361
|
%Image::ExifTool::Nikon::ShotInfoZ9 = (
|
8161
8362
|
PROCESS_PROC => \&ProcessNikonEncrypted,
|
@@ -8207,9 +8408,10 @@ my %nikonFocalConversions = (
|
|
8207
8408
|
},
|
8208
8409
|
},
|
8209
8410
|
0x58 => {
|
8210
|
-
Name => 'Offset13', #offset13 - length x'8f80 (Z9 firmware 3.01 NEF), using currently for a few
|
8411
|
+
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.
|
8211
8412
|
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "03.01"',
|
8212
8413
|
Format => 'int32u',
|
8414
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
8213
8415
|
SubDirectory => {
|
8214
8416
|
TagTable => 'Image::ExifTool::Nikon::Offset13InfoZ9',
|
8215
8417
|
Start => '$val',
|
@@ -8219,6 +8421,7 @@ my %nikonFocalConversions = (
|
|
8219
8421
|
Name => 'AutoCaptureOffset',
|
8220
8422
|
Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "04.00"',
|
8221
8423
|
Format => 'int32u',
|
8424
|
+
AlwaysDecrypt => 1, # (necessary because FirmwareVersion is extracted after decryption time)
|
8222
8425
|
SubDirectory => {
|
8223
8426
|
TagTable => 'Image::ExifTool::Nikon::AutoCaptureInfo',
|
8224
8427
|
Start => '$val',
|
@@ -8248,6 +8451,8 @@ my %nikonFocalConversions = (
|
|
8248
8451
|
%binaryDataAttrs,
|
8249
8452
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8250
8453
|
DATAMEMBER => [ 0x20, 0x28, 0x2a ],
|
8454
|
+
#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.
|
8455
|
+
#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.
|
8251
8456
|
0x0020 => {
|
8252
8457
|
Name => 'FocusShiftShooting',
|
8253
8458
|
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
|
@@ -8425,6 +8630,24 @@ my %nikonFocalConversions = (
|
|
8425
8630
|
},
|
8426
8631
|
);
|
8427
8632
|
|
8633
|
+
%Image::ExifTool::Nikon::MenuInfoZ8 = (
|
8634
|
+
%binaryDataAttrs,
|
8635
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8636
|
+
IS_SUBDIR => [ 0x10 ],
|
8637
|
+
# 0x00 - int32u size of this directory
|
8638
|
+
0x10 => [
|
8639
|
+
{
|
8640
|
+
Name => 'MenuSettingsOffsetZ8',
|
8641
|
+
Format => 'int32u',
|
8642
|
+
Notes => 'Firmware versions 1.0.0',
|
8643
|
+
SubDirectory => {
|
8644
|
+
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
|
8645
|
+
Start => '$dirStart + $val',
|
8646
|
+
},
|
8647
|
+
},
|
8648
|
+
],
|
8649
|
+
);
|
8650
|
+
|
8428
8651
|
%Image::ExifTool::Nikon::MenuInfoZ9 = (
|
8429
8652
|
%binaryDataAttrs,
|
8430
8653
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
@@ -8452,7 +8675,7 @@ my %nikonFocalConversions = (
|
|
8452
8675
|
},
|
8453
8676
|
},
|
8454
8677
|
{
|
8455
|
-
Name => '
|
8678
|
+
Name => 'MenuSettingsOffsetZ9v4',
|
8456
8679
|
Notes => 'Firmware versions 4.0 and later',
|
8457
8680
|
Format => 'int32u',
|
8458
8681
|
SubDirectory => {
|
@@ -8466,9 +8689,19 @@ my %nikonFocalConversions = (
|
|
8466
8689
|
%Image::ExifTool::Nikon::AutoCaptureInfo = (
|
8467
8690
|
%binaryDataAttrs,
|
8468
8691
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8692
|
+
DATAMEMBER => [ 0 ],
|
8693
|
+
0 => {
|
8694
|
+
Name => 'AutoCapturedFrame',
|
8695
|
+
RawConv => '$$self{AutoCapturedFrame} = $val',
|
8696
|
+
PrintConv => {
|
8697
|
+
0 => 'No',
|
8698
|
+
5 => 'Yes',
|
8699
|
+
},
|
8700
|
+
},
|
8469
8701
|
1 => {
|
8470
8702
|
Name => 'AutoCaptureCriteria',
|
8471
|
-
|
8703
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8704
|
+
PrintConv => q[
|
8472
8705
|
$_ = '';
|
8473
8706
|
return $_ . Image::ExifTool::DecodeBits($val,
|
8474
8707
|
{
|
@@ -8481,6 +8714,7 @@ my %nikonFocalConversions = (
|
|
8481
8714
|
# 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.
|
8482
8715
|
55 => {
|
8483
8716
|
Name => 'AutoCaptureRecordingTime',
|
8717
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8484
8718
|
PrintConv => {
|
8485
8719
|
0 => '1 Sec',
|
8486
8720
|
1 => '3 Sec',
|
@@ -8500,6 +8734,7 @@ my %nikonFocalConversions = (
|
|
8500
8734
|
},
|
8501
8735
|
56 => {
|
8502
8736
|
Name => 'AutoCaptureWaitTime',
|
8737
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8503
8738
|
PrintConv => {
|
8504
8739
|
0 => 'No Wait',
|
8505
8740
|
1 => '10 Sec',
|
@@ -8518,14 +8753,17 @@ my %nikonFocalConversions = (
|
|
8518
8753
|
},
|
8519
8754
|
74 => {
|
8520
8755
|
Name => 'AutoCaptureDistanceFar',
|
8756
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8521
8757
|
PrintConv => 'sprintf("%.1f m", $val/10)',
|
8522
8758
|
},
|
8523
8759
|
78 => {
|
8524
8760
|
Name => 'AutoCaptureDistanceNear',
|
8761
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8525
8762
|
PrintConv => 'sprintf("%.1f m", $val/10)',
|
8526
8763
|
},
|
8527
8764
|
95 => {
|
8528
8765
|
Name => 'AutoCaptureCriteriaMotionDirection',
|
8766
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8529
8767
|
PrintConv => q[
|
8530
8768
|
return 'All' if $val eq 255;
|
8531
8769
|
$_ = '';
|
@@ -8542,11 +8780,21 @@ my %nikonFocalConversions = (
|
|
8542
8780
|
});
|
8543
8781
|
],
|
8544
8782
|
},
|
8545
|
-
99 =>
|
8546
|
-
|
8547
|
-
|
8783
|
+
99 => {
|
8784
|
+
Name => 'AutoCaptureCriteriaMotionSpeed', #1-5
|
8785
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8786
|
+
},
|
8787
|
+
100 => {
|
8788
|
+
Name => 'AutoCaptureCriteriaMotionSize', #1-5
|
8789
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8790
|
+
},
|
8791
|
+
105 => {
|
8792
|
+
Name => 'AutoCaptureCriteriaSubjectSize', #1-5
|
8793
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8794
|
+
},
|
8548
8795
|
106 => {
|
8549
8796
|
Name => 'AutoCaptureCriteriaSubjectType',
|
8797
|
+
Condition => '$$self{AutoCapturedFrame} and $$self{AutoCapturedFrame} ne 0',
|
8550
8798
|
PrintConv => {
|
8551
8799
|
0 => 'Auto (all)',
|
8552
8800
|
1 => 'People',
|
@@ -8822,10 +9070,253 @@ my %nikonFocalConversions = (
|
|
8822
9070
|
#859 => HDMIViewAssist
|
8823
9071
|
);
|
8824
9072
|
|
9073
|
+
%Image::ExifTool::Nikon::MenuSettingsZ8 = (
|
9074
|
+
%binaryDataAttrs,
|
9075
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9076
|
+
DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596 ],
|
9077
|
+
IS_SUBDIR => [ 943 ],
|
9078
|
+
NOTES => 'These tags are used by the Z8 firmware 1.00.',
|
9079
|
+
72 => {
|
9080
|
+
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
|
9081
|
+
PrintConv => \%highFrameRateZ9,
|
9082
|
+
},
|
9083
|
+
152 => {
|
9084
|
+
Name => 'MultipleExposureMode',
|
9085
|
+
RawConv => '$$self{MultipleExposureMode} = $val',
|
9086
|
+
PrintConv => \%multipleExposureModeZ9,
|
9087
|
+
},
|
9088
|
+
154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
|
9089
|
+
184 => {
|
9090
|
+
Name => 'IntervalDurationHours',
|
9091
|
+
Format => 'int32u',
|
9092
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9093
|
+
},
|
9094
|
+
188 => {
|
9095
|
+
Name => 'IntervalDurationMinutes',
|
9096
|
+
Format => 'int32u',
|
9097
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9098
|
+
},
|
9099
|
+
192 => {
|
9100
|
+
Name => 'IntervalDurationSeconds',
|
9101
|
+
Format => 'int32u',
|
9102
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9103
|
+
},
|
9104
|
+
200 => {
|
9105
|
+
Name => 'Intervals',
|
9106
|
+
Format => 'int32u',
|
9107
|
+
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
9108
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9109
|
+
},
|
9110
|
+
204 => {
|
9111
|
+
Name => 'ShotsPerInterval',
|
9112
|
+
Format => 'int32u',
|
9113
|
+
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
9114
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9115
|
+
},
|
9116
|
+
208 => {
|
9117
|
+
Name => 'IntervalExposureSmoothing',
|
9118
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9119
|
+
Format => 'int8u',
|
9120
|
+
PrintConv => \%offOn,
|
9121
|
+
},
|
9122
|
+
210 => {
|
9123
|
+
Name => 'IntervalPriority',
|
9124
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
|
9125
|
+
Format => 'int8u',
|
9126
|
+
PrintConv => \%offOn,
|
9127
|
+
},
|
9128
|
+
244 => {
|
9129
|
+
Name => 'FocusShiftNumberShots', #1-300
|
9130
|
+
RawConv => '$$self{FocusShiftNumberShots} = $val',
|
9131
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9132
|
+
},
|
9133
|
+
248 => {
|
9134
|
+
Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
|
9135
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9136
|
+
},
|
9137
|
+
252 => {
|
9138
|
+
Name => 'FocusShiftInterval',
|
9139
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9140
|
+
PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
|
9141
|
+
},
|
9142
|
+
256 => {
|
9143
|
+
Name => 'FocusShiftExposureLock',
|
9144
|
+
Unknown => 1,
|
9145
|
+
PrintConv => \%offOn,
|
9146
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
|
9147
|
+
},
|
9148
|
+
286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
|
9149
|
+
288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
|
9150
|
+
324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
|
9151
|
+
338 => { Name => 'AutoISO', PrintConv => \%offOn },
|
9152
|
+
340 => {
|
9153
|
+
Name => 'ISOAutoHiLimit',
|
9154
|
+
Format => 'int16u',
|
9155
|
+
Unknown => 1,
|
9156
|
+
ValueConv => '($val-104)/8',
|
9157
|
+
ValueConvInv => '8 * ($val + 104)',
|
9158
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9159
|
+
},
|
9160
|
+
342 => {
|
9161
|
+
Name => 'ISOAutoFlashLimit',
|
9162
|
+
Format => 'int16u',
|
9163
|
+
Unknown => 1,
|
9164
|
+
ValueConv => '($val-104)/8',
|
9165
|
+
ValueConvInv => '8 * ($val + 104)',
|
9166
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9167
|
+
},
|
9168
|
+
350 => {
|
9169
|
+
Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
|
9170
|
+
ValueConv => '$val / 8',
|
9171
|
+
Format => 'int16s',
|
9172
|
+
PrintConv => \%iSOAutoShutterTimeZ9,
|
9173
|
+
},
|
9174
|
+
432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
9175
|
+
434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
|
9176
|
+
436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
|
9177
|
+
440 => {
|
9178
|
+
Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
|
9179
|
+
RawConv => '$$self{FlashControlMode} = $val',
|
9180
|
+
PrintConv => \%flashControlModeZ7,
|
9181
|
+
},
|
9182
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
9183
|
+
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
9184
|
+
554 => {
|
9185
|
+
Name => 'BracketSet',
|
9186
|
+
RawConv => '$$self{BracketSet} = $val',
|
9187
|
+
PrintConv => \%bracketSetZ9,
|
9188
|
+
},
|
9189
|
+
556 => {
|
9190
|
+
Name => 'BracketProgram',
|
9191
|
+
Condition => '$$self{BracketSet} < 3',
|
9192
|
+
Notes => 'AE and/or Flash Bracketing',
|
9193
|
+
PrintConv => \%bracketProgramZ9,
|
9194
|
+
},
|
9195
|
+
558 => {
|
9196
|
+
Name => 'BracketIncrement',
|
9197
|
+
Condition => '$$self{BracketSet} < 3',
|
9198
|
+
Notes => 'AE and/or Flash Bracketing',
|
9199
|
+
PrintConv => \%bracketIncrementZ9,
|
9200
|
+
},
|
9201
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
9202
|
+
#572 HDRSaveRaw 0=> No; 1=> Yes
|
9203
|
+
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
9204
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
9205
|
+
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
9206
|
+
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
9207
|
+
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
9208
|
+
596 => {
|
9209
|
+
Name => 'DynamicAFAreaSize',
|
9210
|
+
Condition => '$$self{AFAreaMode} == 2',
|
9211
|
+
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
9212
|
+
PrintConv => \%dynamicAfAreaModesZ9,
|
9213
|
+
},
|
9214
|
+
618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
|
9215
|
+
622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
|
9216
|
+
636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
|
9217
|
+
730 => {
|
9218
|
+
Name => 'MovieImageArea',
|
9219
|
+
Unknown => 1,
|
9220
|
+
Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
|
9221
|
+
PrintConv => \%imageAreaZ9b,
|
9222
|
+
},
|
9223
|
+
740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
|
9224
|
+
742 => {
|
9225
|
+
Name => 'MovieISOAutoHiLimit',
|
9226
|
+
Format => 'int16u',
|
9227
|
+
Unknown => 1,
|
9228
|
+
ValueConv => '($val-104)/8',
|
9229
|
+
ValueConvInv => '8 * ($val + 104)',
|
9230
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9231
|
+
},
|
9232
|
+
744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
|
9233
|
+
746 => {
|
9234
|
+
Name => 'MovieISOAutoManualMode',
|
9235
|
+
Format => 'int16u',
|
9236
|
+
Unknown => 1,
|
9237
|
+
ValueConv => '($val-104)/8',
|
9238
|
+
ValueConvInv => '8 * ($val + 104)',
|
9239
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
9240
|
+
},
|
9241
|
+
820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
|
9242
|
+
822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
|
9243
|
+
828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
|
9244
|
+
830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
|
9245
|
+
832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
|
9246
|
+
834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
|
9247
|
+
836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
|
9248
|
+
840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
9249
|
+
842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
|
9250
|
+
844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
|
9251
|
+
846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
|
9252
|
+
848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
|
9253
|
+
850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
|
9254
|
+
882 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
|
9255
|
+
884 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
|
9256
|
+
886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
|
9257
|
+
887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
|
9258
|
+
888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
9259
|
+
896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
9260
|
+
943 => {
|
9261
|
+
Name => 'CustomSettingsZ8',
|
9262
|
+
Format => 'undef[730]',
|
9263
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
|
9264
|
+
},
|
9265
|
+
1682 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
9266
|
+
1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
9267
|
+
1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
9268
|
+
1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
9269
|
+
1716 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
9270
|
+
1718 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9271
|
+
1720 => { Name => 'NonCPULens3FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9272
|
+
1722 => { Name => 'NonCPULens4FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9273
|
+
1724 => { Name => 'NonCPULens5FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9274
|
+
1726 => { Name => 'NonCPULens6FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9275
|
+
1728 => { Name => 'NonCPULens7FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9276
|
+
1730 => { Name => 'NonCPULens8FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9277
|
+
1732 => { Name => 'NonCPULens9FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9278
|
+
1734 => { Name => 'NonCPULens10FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9279
|
+
1736 => { Name => 'NonCPULens11FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9280
|
+
1738 => { Name => 'NonCPULens12FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9281
|
+
1740 => { Name => 'NonCPULens13FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9282
|
+
1742 => { Name => 'NonCPULens14FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9283
|
+
1744 => { Name => 'NonCPULens15FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9284
|
+
1746 => { Name => 'NonCPULens16FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9285
|
+
1748 => { Name => 'NonCPULens17FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9286
|
+
1750 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9287
|
+
1752 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9288
|
+
1754 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9289
|
+
1756 => { Name => 'NonCPULens1MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9290
|
+
1758 => { Name => 'NonCPULens2MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9291
|
+
1760 => { Name => 'NonCPULens3MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9292
|
+
1762 => { Name => 'NonCPULens4MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9293
|
+
1764 => { Name => 'NonCPULens5MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9294
|
+
1766 => { Name => 'NonCPULens6MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9295
|
+
1768 => { Name => 'NonCPULens7MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9296
|
+
1770 => { Name => 'NonCPULens8MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9297
|
+
1772 => { Name => 'NonCPULens9MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9298
|
+
1774 => { Name => 'NonCPULens10MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9299
|
+
1776 => { Name => 'NonCPULens11MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9300
|
+
1778 => { Name => 'NonCPULens12MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9301
|
+
1780 => { Name => 'NonCPULens13MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9302
|
+
1782 => { Name => 'NonCPULens14MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9303
|
+
1784 => { Name => 'NonCPULens15MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9304
|
+
1786 => { Name => 'NonCPULens16MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9305
|
+
1788 => { Name => 'NonCPULens17MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9306
|
+
1790 => { Name => 'NonCPULens18MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9307
|
+
1792 => { Name => 'NonCPULens19MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9308
|
+
1794 => { Name => 'NonCPULens20MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
|
9309
|
+
1808 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
9310
|
+
1826 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
9311
|
+
1827 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
|
9312
|
+
1862 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
|
9313
|
+
1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
|
9314
|
+
1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
|
9315
|
+
);
|
8825
9316
|
%Image::ExifTool::Nikon::MenuSettingsZ9 = (
|
8826
9317
|
%binaryDataAttrs,
|
8827
9318
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8828
|
-
DATAMEMBER => [ 140, 188, 192, 232, 424, 534, 576 ],
|
9319
|
+
DATAMEMBER => [ 140, 188, 192, 232, 424, 528, 534, 576 ],
|
8829
9320
|
IS_SUBDIR => [ 799 ],
|
8830
9321
|
NOTES => 'These tags are used by the Z9.',
|
8831
9322
|
#90 ISO
|
@@ -8839,13 +9330,13 @@ my %nikonFocalConversions = (
|
|
8839
9330
|
Name => 'Intervals',
|
8840
9331
|
Format => 'int32u',
|
8841
9332
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
8842
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
9333
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
8843
9334
|
},
|
8844
9335
|
192 => {
|
8845
9336
|
Name => 'ShotsPerInterval',
|
8846
9337
|
Format => 'int32u',
|
8847
9338
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
8848
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
9339
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
8849
9340
|
},
|
8850
9341
|
#220 NEFCompression 0=> 'Lossless' 1=> 'High Efficiency*' 4=> 'High Efficientcy'
|
8851
9342
|
232 => {
|
@@ -8942,7 +9433,7 @@ my %nikonFocalConversions = (
|
|
8942
9433
|
444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
8943
9434
|
456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
8944
9435
|
#526 FocusMode
|
8945
|
-
528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9
|
9436
|
+
528 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
8946
9437
|
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
|
8947
9438
|
534 => {
|
8948
9439
|
Name => 'BracketSet',
|
@@ -8967,7 +9458,7 @@ my %nikonFocalConversions = (
|
|
8967
9458
|
574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
8968
9459
|
576 => {
|
8969
9460
|
Name => 'DynamicAFAreaSize',
|
8970
|
-
Condition => '$$self{
|
9461
|
+
Condition => '$$self{AFAreaMode} == 2',
|
8971
9462
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
8972
9463
|
PrintConv => \%dynamicAfAreaModesZ9,
|
8973
9464
|
},
|
@@ -9036,7 +9527,7 @@ my %nikonFocalConversions = (
|
|
9036
9527
|
%Image::ExifTool::Nikon::MenuSettingsZ9v3 = (
|
9037
9528
|
%binaryDataAttrs,
|
9038
9529
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9039
|
-
DATAMEMBER => [ 154, 204, 208, 248, 444, 554, 596 ],
|
9530
|
+
DATAMEMBER => [ 154, 204, 208, 248, 444, 548, 554, 596 ],
|
9040
9531
|
IS_SUBDIR => [ 847 ],
|
9041
9532
|
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
9042
9533
|
72 => {
|
@@ -9053,13 +9544,13 @@ my %nikonFocalConversions = (
|
|
9053
9544
|
Name => 'Intervals',
|
9054
9545
|
Format => 'int32u',
|
9055
9546
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
9056
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
9547
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
9057
9548
|
},
|
9058
9549
|
208 => {
|
9059
9550
|
Name => 'ShotsPerInterval',
|
9060
9551
|
Format => 'int32u',
|
9061
9552
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
9062
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
9553
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
9063
9554
|
},
|
9064
9555
|
248 => {
|
9065
9556
|
Name => 'FocusShiftNumberShots', #1-300
|
@@ -9143,7 +9634,7 @@ my %nikonFocalConversions = (
|
|
9143
9634
|
#462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
|
9144
9635
|
#464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
9145
9636
|
#476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
9146
|
-
548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
|
9637
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
9147
9638
|
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
9148
9639
|
554 => {
|
9149
9640
|
Name => 'BracketSet',
|
@@ -9167,7 +9658,7 @@ my %nikonFocalConversions = (
|
|
9167
9658
|
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
9168
9659
|
596 => {
|
9169
9660
|
Name => 'DynamicAFAreaSize',
|
9170
|
-
Condition => '$$self{
|
9661
|
+
Condition => '$$self{AFAreaMode} == 2',
|
9171
9662
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
9172
9663
|
PrintConv => \%dynamicAfAreaModesZ9,
|
9173
9664
|
},
|
@@ -9265,10 +9756,11 @@ my %nikonFocalConversions = (
|
|
9265
9756
|
#1892 DispButton CSf2
|
9266
9757
|
#1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
|
9267
9758
|
);
|
9759
|
+
|
9268
9760
|
%Image::ExifTool::Nikon::MenuSettingsZ9v4 = (
|
9269
9761
|
%binaryDataAttrs,
|
9270
9762
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
9271
|
-
DATAMEMBER => [ 154, 204, 208, 248, 444, 554, 596 ],
|
9763
|
+
DATAMEMBER => [ 154, 204, 208, 248, 444, 548, 554, 570, 596 ],
|
9272
9764
|
IS_SUBDIR => [ 847 ],
|
9273
9765
|
NOTES => 'These tags are used by the Z9 firmware 3.00.',
|
9274
9766
|
72 => {
|
@@ -9285,13 +9777,13 @@ my %nikonFocalConversions = (
|
|
9285
9777
|
Name => 'Intervals',
|
9286
9778
|
Format => 'int32u',
|
9287
9779
|
RawConv => '$$self{IntervalShootingIntervals} = $val',
|
9288
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
9780
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
9289
9781
|
},
|
9290
9782
|
208 => {
|
9291
9783
|
Name => 'ShotsPerInterval',
|
9292
9784
|
Format => 'int32u',
|
9293
9785
|
RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
|
9294
|
-
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{
|
9786
|
+
Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
|
9295
9787
|
},
|
9296
9788
|
248 => {
|
9297
9789
|
Name => 'FocusShiftNumberShots', #1-300
|
@@ -9375,7 +9867,7 @@ my %nikonFocalConversions = (
|
|
9375
9867
|
#462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
|
9376
9868
|
#464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
|
9377
9869
|
#476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
|
9378
|
-
548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
|
9870
|
+
548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
|
9379
9871
|
550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
9380
9872
|
554 => {
|
9381
9873
|
Name => 'BracketSet',
|
@@ -9394,13 +9886,15 @@ my %nikonFocalConversions = (
|
|
9394
9886
|
Notes => 'AE and/or Flash Bracketing',
|
9395
9887
|
PrintConv => \%bracketIncrementZ9,
|
9396
9888
|
},
|
9889
|
+
570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
|
9397
9890
|
576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
|
9891
|
+
582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
|
9398
9892
|
586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
|
9399
9893
|
592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
|
9400
9894
|
594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
|
9401
9895
|
596 => {
|
9402
9896
|
Name => 'DynamicAFAreaSize',
|
9403
|
-
Condition => '$$self{
|
9897
|
+
Condition => '$$self{AFAreaMode} == 2',
|
9404
9898
|
RawConv => '$$self{DynamicAFAreaSize} = $val',
|
9405
9899
|
PrintConv => \%dynamicAfAreaModesZ9,
|
9406
9900
|
},
|
@@ -9450,14 +9944,14 @@ my %nikonFocalConversions = (
|
|
9450
9944
|
804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
|
9451
9945
|
812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
|
9452
9946
|
847 => {
|
9453
|
-
Name => '
|
9454
|
-
Format => 'undef[
|
9455
|
-
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::
|
9456
|
-
},
|
9457
|
-
|
9458
|
-
|
9459
|
-
|
9460
|
-
|
9947
|
+
Name => 'CustomSettingsZ9v4',
|
9948
|
+
Format => 'undef[632]',
|
9949
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9v4' },
|
9950
|
+
},
|
9951
|
+
1498 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
|
9952
|
+
1500 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
|
9953
|
+
1506 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
|
9954
|
+
1528 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
|
9461
9955
|
1532 => { Name => 'NonCPULens1FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
|
9462
9956
|
1536 => { Name => 'NonCPULens2FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9463
9957
|
1540 => { Name => 'NonCPULens3FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
@@ -9469,7 +9963,7 @@ my %nikonFocalConversions = (
|
|
9469
9963
|
1564 => { Name => 'NonCPULens9FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9470
9964
|
1568 => { Name => 'NonCPULens10FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9471
9965
|
1572 => { Name => 'NonCPULens11FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9472
|
-
1576 => { Name => '
|
9966
|
+
1576 => { Name => 'NonCPULens12FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9473
9967
|
1580 => { Name => 'NonCPULens13FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9474
9968
|
1584 => { Name => 'NonCPULens14FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9475
9969
|
1588 => { Name => 'NonCPULens15FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
@@ -9478,26 +9972,26 @@ my %nikonFocalConversions = (
|
|
9478
9972
|
1600 => { Name => 'NonCPULens18FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9479
9973
|
1604 => { Name => 'NonCPULens19FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9480
9974
|
1608 => { Name => 'NonCPULens20FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
|
9481
|
-
1612 => { Name => 'NonCPULens1MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9482
|
-
1616 => { Name => 'NonCPULens2MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9483
|
-
1620 => { Name => 'NonCPULens3MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9484
|
-
1624 => { Name => 'NonCPULens4MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9485
|
-
1628 => { Name => 'NonCPULens5MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9486
|
-
1632 => { Name => 'NonCPULens6MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9487
|
-
1636 => { Name => 'NonCPULens7MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9488
|
-
1640 => { Name => 'NonCPULens8MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9489
|
-
1644 => { Name => 'NonCPULens9MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9490
|
-
1648 => { Name => 'NonCPULens10MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9491
|
-
1652 => { Name => 'NonCPULens11MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9492
|
-
1656 => { Name => 'NonCPULens12MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9493
|
-
1660 => { Name => 'NonCPULens13MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9494
|
-
1664 => { Name => 'NonCPULens14MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9495
|
-
1668 => { Name => 'NonCPULens15MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9496
|
-
1672 => { Name => 'NonCPULens16MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9497
|
-
1676 => { Name => 'NonCPULens17MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9498
|
-
1680 => { Name => 'NonCPULens18MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9499
|
-
1684 => { Name => 'NonCPULens19MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9500
|
-
1688 => { Name => 'NonCPULens20MaxAperture', Format => 'int16s', PrintConv => 'sprintf("
|
9975
|
+
1612 => { Name => 'NonCPULens1MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1}, #non-CPU aperture interface, values and storage differ from the Z8
|
9976
|
+
1616 => { Name => 'NonCPULens2MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9977
|
+
1620 => { Name => 'NonCPULens3MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9978
|
+
1624 => { Name => 'NonCPULens4MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9979
|
+
1628 => { Name => 'NonCPULens5MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9980
|
+
1632 => { Name => 'NonCPULens6MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9981
|
+
1636 => { Name => 'NonCPULens7MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9982
|
+
1640 => { Name => 'NonCPULens8MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9983
|
+
1644 => { Name => 'NonCPULens9MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9984
|
+
1648 => { Name => 'NonCPULens10MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9985
|
+
1652 => { Name => 'NonCPULens11MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9986
|
+
1656 => { Name => 'NonCPULens12MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9987
|
+
1660 => { Name => 'NonCPULens13MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9988
|
+
1664 => { Name => 'NonCPULens14MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9989
|
+
1668 => { Name => 'NonCPULens15MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9990
|
+
1672 => { Name => 'NonCPULens16MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9991
|
+
1676 => { Name => 'NonCPULens17MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9992
|
+
1680 => { Name => 'NonCPULens18MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9993
|
+
1684 => { Name => 'NonCPULens19MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9994
|
+
1688 => { Name => 'NonCPULens20MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
|
9501
9995
|
1704 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
|
9502
9996
|
1717 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
|
9503
9997
|
1724 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
|
@@ -10823,16 +11317,14 @@ my %nikonFocalConversions = (
|
|
10823
11317
|
},
|
10824
11318
|
);
|
10825
11319
|
|
10826
|
-
# MakerNotes0x51 - compression info for Z9
|
11320
|
+
# MakerNotes0x51 - compression info for Z8 and Z9
|
10827
11321
|
%Image::ExifTool::Nikon::MakerNotes0x51 = (
|
10828
11322
|
%binaryDataAttrs,
|
10829
|
-
DATAMEMBER => [ 0 ],
|
10830
11323
|
GROUPS => { 0 => 'MakerNotes' },
|
10831
11324
|
0 => {
|
10832
|
-
Name => '
|
11325
|
+
Name => 'FirmwareVersion51',
|
10833
11326
|
Format => 'string[8]',
|
10834
11327
|
Writable => 0,
|
10835
|
-
RawConv => '$$self{FirmwareVersion} = $val',
|
10836
11328
|
},
|
10837
11329
|
10 => {
|
10838
11330
|
Name => 'NEFCompression',
|
@@ -12483,8 +12975,10 @@ sub PrepareNikonOffsets($$$$$)
|
|
12483
12975
|
for ($i=0; $i<@sorted-1; ++$i) {
|
12484
12976
|
my $pos = $sorted[$i][0];
|
12485
12977
|
my $len = $sorted[$i+1][1] - $sorted[$i][1];
|
12978
|
+
my $tagInfo = $$tagTablePtr{$pos};
|
12979
|
+
$tagInfo = $et->GetTagInfo($tagTablePtr, $pos) if $tagInfo and
|
12980
|
+
not (ref $tagInfo eq 'HASH' and $$tagInfo{AlwaysDecrypt});
|
12486
12981
|
# set DirLen in SubDirectory entry
|
12487
|
-
my $tagInfo = $et->GetTagInfo($tagTablePtr, $pos) if $$tagTablePtr{$pos};
|
12488
12982
|
my $subdir;
|
12489
12983
|
$$subdir{DirLen} = $len if ref $tagInfo eq 'HASH' and defined($subdir=$$tagInfo{SubDirectory});
|
12490
12984
|
if ($decryptMode) {
|
@@ -12496,7 +12990,7 @@ sub PrepareNikonOffsets($$$$$)
|
|
12496
12990
|
if ($subdir and $$subdir{KnownEnd}) {
|
12497
12991
|
$n = $$subdir{KnownEnd};
|
12498
12992
|
if ($n > $len) {
|
12499
|
-
$et->Warn("Data too short for $$tagInfo{Name}",1);
|
12993
|
+
$et->Warn("Data too short for $$tagInfo{Name}",1) unless $$tagInfo{AlwaysDecrypt};
|
12500
12994
|
$n = $len;
|
12501
12995
|
}
|
12502
12996
|
}
|