exiftool_vendored 13.16.0 → 13.18.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.
@@ -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.41';
68
+ $VERSION = '4.43';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -1370,6 +1370,25 @@ my %retouchValues = ( #PH
1370
1370
  54 => 'Low Key', # (S3500)
1371
1371
  );
1372
1372
 
1373
+ # AF points for models with 11 focus points (eg. D3400)
1374
+ my %afPoints11 = (
1375
+ 0 => '(none)',
1376
+ 0x7ff => 'All 11 Points',
1377
+ BITMASK => {
1378
+ 0 => 'Center',
1379
+ 1 => 'Top',
1380
+ 2 => 'Bottom',
1381
+ 3 => 'Mid-left',
1382
+ 4 => 'Mid-right',
1383
+ 5 => 'Upper-left',
1384
+ 6 => 'Upper-right',
1385
+ 7 => 'Lower-left',
1386
+ 8 => 'Lower-right',
1387
+ 9 => 'Far Left',
1388
+ 10 => 'Far Right',
1389
+ },
1390
+ );
1391
+
1373
1392
  # AF point indices for models with 51 focus points, eg. D3 (ref JD/PH)
1374
1393
  # A1 A2 A3 A4 A5 A6 A7 A8 A9
1375
1394
  # B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11
@@ -1546,167 +1565,61 @@ my %afPoints81 = (
1546
1565
  17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
1547
1566
  );
1548
1567
 
1549
- # AF point indices for 209 focus point(single-point AF) cameras equipped with Expeed 7 processor eg. Z50ii). Single-point AF array is 11 rows x 19 columns. (ref 28)
1568
+ # AF point indices for 209/231 focus point(single-point AF) cameras equipped with Expeed 7 processor eg. Z50ii). Single-point AF array is 11 rows x 19 columns. (ref 28)
1550
1569
  # - Auto Area AF has 2 additional columns available and provides 231 focus points. Uses 11 rows (A-K) and 21 columns (1-21), center is F11
1551
- my %afPoints209 = (
1552
- 1 => 'A1', 22 => 'B1', 43 => 'C1', 64 => 'D1', 85 => 'E1', 106 => 'F1', 127 => 'G1', 148 => 'H1',
1553
- 2 => 'A2', 23 => 'B2', 44 => 'C2', 65 => 'D2', 86 => 'E2', 107 => 'F2', 128 => 'G2', 149 => 'H2',
1554
- 3 => 'A3', 24 => 'B3', 45 => 'C3', 66 => 'D3', 87 => 'E3', 108 => 'F3', 129 => 'G3', 150 => 'H3',
1555
- 4 => 'A4', 25 => 'B4', 46 => 'C4', 67 => 'D4', 88 => 'E4', 109 => 'F4', 130 => 'G4', 151 => 'H4',
1556
- 5 => 'A5', 26 => 'B5', 47 => 'C5', 68 => 'D5', 89 => 'E5', 110 => 'F5', 131 => 'G5', 152 => 'H5',
1557
- 6 => 'A6', 27 => 'B6', 48 => 'C6', 69 => 'D6', 90 => 'E6', 111 => 'F6', 132 => 'G6', 153 => 'H6',
1558
- 7 => 'A7', 28 => 'B7', 49 => 'C7', 70 => 'D7', 91 => 'E7', 112 => 'F7', 133 => 'G7', 154 => 'H7',
1559
- 8 => 'A8', 29 => 'B8', 50 => 'C8', 71 => 'D8', 92 => 'E8', 113 => 'F8', 134 => 'G8', 155 => 'H8',
1560
- 9 => 'A9', 30 => 'B9', 51 => 'C9', 72 => 'D9', 93 => 'E9', 114 => 'F9', 135 => 'G9', 156 => 'H9',
1561
- 10 => 'A10', 31 => 'B10', 52 => 'C10', 73 => 'D10', 94 => 'E10', 115 => 'F10', 136 => 'G10', 157 => 'H10',
1562
- 11 => 'A11', 32 => 'B11' , 53 => 'C11', 74 => 'D11', 95 => 'E11', 116 => 'F11', 137 => 'G11', 158 => 'H11',
1563
- 12 => 'A12', 33 => 'B12' , 54 => 'C12', 75 => 'D12', 96 => 'E12', 117 => 'F12', 138 => 'G12', 159 => 'H12',
1564
- 13 => 'A13', 34 => 'B13' , 55 => 'C13', 76 => 'D13', 97 => 'E13', 118 => 'F13', 139 => 'G13', 160 => 'H13',
1565
- 14 => 'A14', 35 => 'B14' , 56 => 'C14', 77 => 'D14', 98 => 'E14', 119 => 'F14', 140 => 'G14', 161 => 'H14',
1566
- 15 => 'A15', 36 => 'B15', 57 => 'C15', 78 => 'D15', 99 => 'E15', 120 => 'F15', 141 => 'G15', 162 => 'H15',
1567
- 16 => 'A16', 37 => 'B16' , 58 => 'C16', 79 => 'D16', 100 => 'E16', 121 => 'F16', 142 => 'G16', 163 => 'H16',
1568
- 17 => 'A17', 38 => 'B17', 59 => 'C17', 80 => 'D17', 101 => 'E17', 122 => 'F17', 143 => 'G17', 164 => 'H17',
1569
- 18 => 'A18', 39 => 'B18', 60 => 'C18', 81 => 'D18', 102 => 'E18', 123 => 'F18', 144 => 'G18', 165 => 'H18',
1570
- 19 => 'A19', 40 => 'B19', 61 => 'C19', 82 => 'D19', 103 => 'E19', 124 => 'F19', 145 => 'G19', 166 => 'H19',
1571
- 20 => 'A20', 41 => 'B20', 62 => 'C20', 83 => 'D20', 104 => 'E20', 125 => 'F20', 146 => 'G20', 167 => 'H20',
1572
- 21 => 'A21', 42 => 'B21', 63 => 'C21', 84 => 'D21', 105 => 'E21', 126 => 'F21', 147 => 'G21', 168 => 'H21',
1573
-
1574
- 169 => 'I1', 190 => 'J1', 211 => 'K1',
1575
- 170 => 'I2', 191 => 'J2', 212 => 'K2',
1576
- 171 => 'I3', 192 => 'J3', 213 => 'K3',
1577
- 172 => 'I4', 193 => 'J4', 214 => 'K4',
1578
- 173 => 'I5', 194 => 'J5', 215 => 'K5',
1579
- 174 => 'I6', 195 => 'J6', 216 => 'K6',
1580
- 175 => 'I7', 196 => 'J7', 217 => 'K7',
1581
- 176 => 'I8', 197 => 'J8', 218 => 'K8',
1582
- 177 => 'I9', 198 => 'J9', 219 => 'K9',
1583
- 178 => 'I10', 199 => 'J10', 220 => 'K10',
1584
- 179 => 'I11', 200 => 'J11', 221 => 'K11',
1585
- 180 => 'I12', 201 => 'J12', 222 => 'K12',
1586
- 181 => 'I13', 202 => 'J13', 223 => 'K13',
1587
- 182 => 'I14', 203 => 'J14', 224 => 'K14',
1588
- 183 => 'I15', 204 => 'J15', 225 => 'K15',
1589
- 184 => 'I16', 205 => 'J16', 226 => 'K16',
1590
- 185 => 'I17', 206 => 'J17', 227 => 'K17',
1591
- 186 => 'I18', 207 => 'J18', 228 => 'K18',
1592
- 187 => 'I19', 208 => 'J19', 229 => 'K19',
1593
- 188 => 'I20', 209 => 'J20', 230 => 'K20',
1594
- 189 => 'I21', 210 => 'J21', 231 => 'K21',
1595
- );
1596
-
1597
- # AF point indices for 273 focus point (single-point AF) cameras equipped with Expeed 7 processor (eg. Z6iii and Zf). Single-point AF array is 13 rows x 21 columns (ref 28)
1570
+ my @afPoints231 = (qw(
1571
+ A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21
1572
+ B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21
1573
+ C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21
1574
+ D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 D21
1575
+ E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15 E16 E17 E18 E19 E20 E21
1576
+ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21
1577
+ G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15 G16 G17 G18 G19 G20 G21
1578
+ H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21
1579
+ I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15 I16 I17 I18 I19 I20 I21
1580
+ J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15 J16 J17 J18 J19 J20 J21
1581
+ K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 K11 K12 K13 K14 K15 K16 K17 K18 K19 K20 K21
1582
+ ));
1583
+
1584
+ # AF point indices for 273/299 focus point (single-point AF) cameras equipped with Expeed 7 processor (eg. Z6iii and Zf). Single-point AF array is 13 rows x 21 columns (ref 28)
1598
1585
  # - Auto Area AF has 2 additional columns available and provides 299 focus points. Uses 13 rows (A-M) and 23 columns (1-23), center is G12
1599
1586
  #
1600
- my %afPoints273 = (
1601
- 1 => 'A1', 24 => 'B1', 47 => 'C1', 70 => 'D1', 93 => 'E1', 116 => 'F1', 139 => 'G1', 162 => 'H1',
1602
- 2 => 'A2', 25 => 'B2', 48 => 'C2', 71 => 'D2', 94 => 'E2', 117 => 'F2', 140 => 'G2', 163 => 'H2',
1603
- 3 => 'A3', 26 => 'B3', 49 => 'C3', 72 => 'D3', 95 => 'E3', 118 => 'F3', 141 => 'G3', 164 => 'H3',
1604
- 4 => 'A4', 27 => 'B4', 50 => 'C4', 73 => 'D4', 96 => 'E4', 119 => 'F4', 142 => 'G4', 165 => 'H4',
1605
- 5 => 'A5', 28 => 'B5', 51 => 'C5', 74 => 'D5', 97 => 'E5', 120 => 'F5', 143 => 'G5', 166 => 'H5',
1606
- 6 => 'A6', 29 => 'B6', 52 => 'C6', 75 => 'D6', 98 => 'E6', 121 => 'F6', 144 => 'G6', 167 => 'H6',
1607
- 7 => 'A7', 30 => 'B7', 53 => 'C7', 76 => 'D7', 99 => 'E7', 122 => 'F7', 145 => 'G7', 168 => 'H7',
1608
- 8 => 'A8', 31 => 'B8', 54 => 'C8', 77 => 'D8', 100 => 'E8', 123 => 'F8', 146 => 'G8', 169 => 'H8',
1609
- 9 => 'A9', 32 => 'B9', 55 => 'C9', 78 => 'D9', 101 => 'E9', 124 => 'F9', 147 => 'G9', 170 => 'H9',
1610
- 10 => 'A10', 33 => 'B10', 56 => 'C10', 79 => 'D10', 102 => 'E10', 125 => 'F10', 148 => 'G10', 171 => 'H10',
1611
- 11 => 'A11', 34 => 'B11' , 57 => 'C11', 80 => 'D11', 103 => 'E11', 126 => 'F11', 149 => 'G11', 172 => 'H11',
1612
- 12 => 'A12', 35 => 'B12' , 58 => 'C12', 81 => 'D12', 104 => 'E12', 127 => 'F12', 150 => 'G12', 173 => 'H12',
1613
- 13 => 'A13', 36 => 'B13' , 59 => 'C13', 82 => 'D13', 105 => 'E13', 128 => 'F13', 151 => 'G13', 174 => 'H13',
1614
- 14 => 'A14', 37 => 'B14' , 60 => 'C14', 83 => 'D14', 106 => 'E14', 129 => 'F14', 152 => 'G14', 175 => 'H14',
1615
- 15 => 'A15', 38 => 'B15', 61 => 'C15', 84 => 'D15', 107 => 'E15', 130 => 'F15', 153 => 'G15', 176 => 'H15',
1616
- 16 => 'A16', 39 => 'B16' , 62 => 'C16', 85 => 'D16', 108 => 'E16', 131 => 'F16', 154 => 'G16', 177 => 'H16',
1617
- 17 => 'A17', 40 => 'B17', 63 => 'C17', 86 => 'D17', 109 => 'E17', 132 => 'F17', 155 => 'G17', 178 => 'H17',
1618
- 18 => 'A18', 41 => 'B18', 64 => 'C18', 87 => 'D18', 110 => 'E18', 133 => 'F18', 156 => 'G18', 179 => 'H18',
1619
- 19 => 'A19', 42 => 'B19', 65 => 'C19', 88 => 'D19', 111 => 'E19', 134 => 'F19', 157 => 'G19', 180 => 'H19',
1620
- 20 => 'A20', 43 => 'B20', 66 => 'C20', 89 => 'D20', 112 => 'E20', 135 => 'F20', 158 => 'G20', 181 => 'H20',
1621
- 21 => 'A21', 44 => 'B21', 67 => 'C21', 90 => 'D21', 113 => 'E21', 136 => 'F21', 159 => 'G21', 182 => 'H21',
1622
- 22 => 'A22', 45 => 'B22', 68 => 'C22', 91 => 'D22', 114 => 'E22', 137 => 'F22', 160 => 'G22', 183 => 'H22',
1623
- 23 => 'A23', 46 => 'B23', 69 => 'C23', 92 => 'D23', 115 => 'E23', 138 => 'F23', 161 => 'G23', 184 => 'H23',
1624
-
1625
- 185 => 'I1', 208 => 'J1', 231 => 'K1', 254 => 'L1', 277 => 'M1',
1626
- 186 => 'I2', 209 => 'J2', 232 => 'K2', 255 => 'L2', 278 => 'M2',
1627
- 187 => 'I3', 210 => 'J3', 233 => 'K3', 256 => 'L3', 279 => 'M3',
1628
- 188 => 'I4', 211 => 'J4', 234 => 'K4', 257 => 'L4', 280 => 'M4',
1629
- 189 => 'I5', 212 => 'J5', 235 => 'K5', 258 => 'L5', 281 => 'M5',
1630
- 190 => 'I6', 213 => 'J6', 236 => 'K6', 259 => 'L6', 282 => 'M6',
1631
- 191 => 'I7', 214 => 'J7', 237 => 'K7', 260 => 'L7', 283 => 'M7',
1632
- 192 => 'I8', 215 => 'J8', 238 => 'K8', 261 => 'L8', 284 => 'M8',
1633
- 193 => 'I9', 216 => 'J9', 239 => 'K9', 262 => 'L9', 285 => 'M9',
1634
- 194 => 'I10', 217 => 'J10', 240 => 'K10', 263 => 'L10', 286 => 'M10',
1635
- 195 => 'I11', 218 => 'J11', 241 => 'K11', 264 => 'L11', 287 => 'M11',
1636
- 196 => 'I12', 219 => 'J12', 242 => 'K12', 265 => 'L12', 288 => 'M12',
1637
- 197 => 'I13', 220 => 'J13', 243 => 'K13', 266 => 'L13', 289 => 'M13',
1638
- 198 => 'I14', 221 => 'J14', 244 => 'K14', 267 => 'L14', 290 => 'M14',
1639
- 199 => 'I15', 222 => 'J15', 245 => 'K15', 268 => 'L15', 291 => 'M15',
1640
- 200 => 'I16', 223 => 'J16', 246 => 'K16', 269 => 'L16', 292 => 'M16',
1641
- 201 => 'I17', 224 => 'J17', 247 => 'K17', 270 => 'L17', 293 => 'M17',
1642
- 202 => 'I18', 225 => 'J18', 248 => 'K18', 271 => 'L18', 294 => 'M18',
1643
- 203 => 'I19', 226 => 'J19', 249 => 'K19', 272 => 'L19', 295 => 'M19',
1644
- 204 => 'I20', 227 => 'J20', 250 => 'K20', 273 => 'L20', 296 => 'M20',
1645
- 205 => 'I21', 228 => 'J21', 251 => 'K21', 274 => 'L21', 297 => 'M21',
1646
- 206 => 'I22', 229 => 'J22', 252 => 'K22', 275 => 'L22', 298 => 'M22',
1647
- 208 => 'I23', 230 => 'J23', 253 => 'K23', 276 => 'L23', 299 => 'M23',
1648
- );
1649
-
1650
- # AF point indices for 493 focus point (single-point AF) cameras equipped with Expeed 7 processor (eg. Z8 and Z9). Single-point AF array is 17 rows x 29 columns (ref 28)
1651
- # - 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)
1587
+ my @afPoints299 = (qw(
1588
+ A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23
1589
+ B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23
1590
+ C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23
1591
+ D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 D21 D22 D23
1592
+ E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15 E16 E17 E18 E19 E20 E21 E22 E23
1593
+ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23
1594
+ G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15 G16 G17 G18 G19 G20 G21 G22 G23
1595
+ H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23
1596
+ I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15 I16 I17 I18 I19 I20 I21 I22 I23
1597
+ J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15 J16 J17 J18 J19 J20 J21 J22 J23
1598
+ K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 K11 K12 K13 K14 K15 K16 K17 K18 K19 K20 K21 K22 K23
1599
+ L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15 L16 L17 L18 L19 L20 L21 L22 L23
1600
+ M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 M13 M14 M15 M16 M17 M18 M19 M20 M21 M22 M23
1601
+ ));
1602
+
1603
+ # AF point indices for 405/493 focus point (single-point AF) cameras equipped with Expeed 7 processor (eg. Z8 and Z9). Single-point AF array is 17 rows x 29 columns (ref 28)
1604
+ # - Auto Area AF uses 15 of the 17 rows (A-O) and 27 of the 29 columns (1-27), center is H14 (405 of the 493 focus points can be used by Auto-area AF)
1652
1605
  #
1653
- my %afPoints493 = (
1654
- 1 => 'A1', 28 => 'B1', 55 => 'C1', 82 => 'D1', 109 => 'E1', 136 => 'F1', 163 => 'G1', 190 => 'H1',
1655
- 2 => 'A2', 29 => 'B2', 56 => 'C2', 83 => 'D2', 110 => 'E2', 137 => 'F2', 164 => 'G2', 191 => 'H2',
1656
- 3 => 'A3', 30 => 'B3', 57 => 'C3', 84 => 'D3', 111 => 'E3', 138 => 'F3', 165 => 'G3', 192 => 'H3',
1657
- 4 => 'A4', 31 => 'B4', 58 => 'C4', 85 => 'D4', 112 => 'E4', 139 => 'F4', 166 => 'G4', 193 => 'H4',
1658
- 5 => 'A5', 32 => 'B5', 59 => 'C5', 86 => 'D5', 113 => 'E5', 140 => 'F5', 167 => 'G5', 194 => 'H5',
1659
- 6 => 'A6', 33 => 'B6', 60 => 'C6', 87 => 'D6', 114 => 'E6', 141 => 'F6', 168 => 'G6', 195 => 'H6',
1660
- 7 => 'A7', 34 => 'B7', 61 => 'C7', 88 => 'D7', 115 => 'E7', 142 => 'F7', 169 => 'G7', 196 => 'H7',
1661
- 8 => 'A8', 35 => 'B8', 62 => 'C8', 89 => 'D8', 116 => 'E8', 143 => 'F8', 170 => 'G8', 197 => 'H8',
1662
- 9 => 'A9', 36 => 'B9', 63 => 'C9', 90 => 'D9', 117 => 'E9', 144 => 'F9', 171 => 'G9', 198 => 'H9',
1663
- 10 => 'A10', 37 => 'B10', 64 => 'C10', 91 => 'D10', 118 => 'E10', 145 => 'F10', 172 => 'G10', 199 => 'H10',
1664
- 11 => 'A11', 38 => 'B11' , 65 => 'C11', 92 => 'D11', 119 => 'E11', 146 => 'F11', 173 => 'G11', 200 => 'H11',
1665
- 12 => 'A12', 39 => 'B12' , 66 => 'C12', 93 => 'D12', 120 => 'E12', 147 => 'F12', 174 => 'G12', 201 => 'H12',
1666
- 13 => 'A13', 40 => 'B13' , 67 => 'C13', 94 => 'D13', 121 => 'E13', 148 => 'F13', 175 => 'G13', 202 => 'H13',
1667
- 14 => 'A14', 41 => 'B14' , 68 => 'C14', 95 => 'D14', 122 => 'E14', 149 => 'F14', 176 => 'G14', 203 => 'H14',
1668
- 15 => 'A15', 42 => 'B15', 69 => 'C15', 96 => 'D15', 123 => 'E15', 150 => 'F15', 177 => 'G15', 204 => 'H15',
1669
- 16 => 'A16', 43 => 'B16' , 70 => 'C16', 97 => 'D16', 124 => 'E16', 151 => 'F16', 178 => 'G16', 205 => 'H16',
1670
- 17 => 'A17', 44 => 'B17', 71 => 'C17', 98 => 'D17', 125 => 'E17', 152 => 'F17', 179 => 'G17', 206 => 'H17',
1671
- 18 => 'A18', 45 => 'B18', 72 => 'C18', 99 => 'D18', 126 => 'E18', 153 => 'F18', 180 => 'G18', 207 => 'H18',
1672
- 19 => 'A19', 46 => 'B19', 73 => 'C19', 100 => 'D19', 127 => 'E19', 154 => 'F19', 181 => 'G19', 208 => 'H19',
1673
- 20 => 'A20', 47 => 'B20', 74 => 'C20', 101 => 'D20', 128 => 'E20', 155 => 'F20', 182 => 'G20', 209 => 'H20',
1674
- 21 => 'A21', 48 => 'B21', 75 => 'C21', 102 => 'D21', 129 => 'E21', 156 => 'F21', 183 => 'G21', 210 => 'H21',
1675
- 22 => 'A22', 49 => 'B22', 76 => 'C22', 103 => 'D22', 130 => 'E22', 157 => 'F22', 184 => 'G22', 211 => 'H22',
1676
- 23 => 'A23', 50 => 'B23', 77 => 'C23', 104 => 'D23', 131 => 'E23', 158 => 'F23', 185 => 'G23', 212 => 'H23',
1677
- 24 => 'A24', 51 => 'B24', 78 => 'C24', 105 => 'D24', 132 => 'E24', 159 => 'F24', 186 => 'G24', 213 => 'H24',
1678
- 25 => 'A25', 52 => 'B25', 79 => 'C25', 106 => 'D25', 133 => 'E25', 160 => 'F25', 187 => 'G25', 214 => 'H25',
1679
- 26 => 'A26', 53 => 'B26', 80 => 'C26', 107 => 'D26', 134 => 'E26', 161 => 'F26', 188 => 'G26', 215 => 'H26',
1680
- 27 => 'A27', 54 => 'B27', 81 => 'C27', 108 => 'D27', 135 => 'E27', 162 => 'F27', 189 => 'G27', 216 => 'H27',
1681
-
1682
- 217 => 'I1', 244 => 'J1', 271 => 'K1', 298 => 'L1', 325 => 'M1', 352 => 'N1', 379 => 'O1',
1683
- 218 => 'I2', 245 => 'J2', 272 => 'K2', 299 => 'L2', 326 => 'M2', 353 => 'N2', 380 => 'O2',
1684
- 219 => 'I3', 246 => 'J3', 273 => 'K3', 300 => 'L3', 327 => 'M3', 354 => 'N3', 381 => 'O3',
1685
- 220 => 'I4', 247 => 'J4', 274 => 'K4', 301 => 'L4', 328 => 'M4', 355 => 'N4', 382 => 'O4',
1686
- 221 => 'I5', 248 => 'J5', 275 => 'K5', 302 => 'L5', 329 => 'M5', 356 => 'N5', 383 => 'O5',
1687
- 222 => 'I6', 249 => 'J6', 276 => 'K6', 303 => 'L6', 330 => 'M6', 357 => 'N6', 384 => 'O6',
1688
- 223 => 'I7', 250 => 'J7', 277 => 'K7', 304 => 'L7', 331 => 'M7', 358 => 'N7', 385 => 'O7',
1689
- 224 => 'I8', 251 => 'J8', 278 => 'K8', 305 => 'L8', 332 => 'M8', 359 => 'N8', 386 => 'O8',
1690
- 225 => 'I9', 252 => 'J9', 279 => 'K9', 306 => 'L9', 333 => 'M9', 360 => 'N9', 387 => 'O9',
1691
- 226 => 'I10', 253 => 'J10', 280 => 'K10', 307 => 'L10', 334 => 'M10', 361 => 'N10', 388 => 'O10',
1692
- 227 => 'I11', 254 => 'J11', 281 => 'K11', 308 => 'L11', 335 => 'M11', 362 => 'N11', 389 => 'O11',
1693
- 228 => 'I12', 255 => 'J12', 282 => 'K12', 309 => 'L12', 336 => 'M12', 363 => 'N12', 390 => 'O12',
1694
- 229 => 'I13', 256 => 'J13', 283 => 'K13', 310 => 'L13', 337 => 'M13', 364 => 'N13', 391 => 'O13',
1695
- 230 => 'I14', 257 => 'J14', 284 => 'K14', 311 => 'L14', 338 => 'M14', 365 => 'N14', 392 => 'O14',
1696
- 231 => 'I15', 258 => 'J15', 285 => 'K15', 312 => 'L15', 339 => 'M15', 366 => 'N15', 393 => 'O15',
1697
- 232 => 'I16', 259 => 'J16', 286 => 'K16', 313 => 'L16', 340 => 'M16', 367 => 'N16', 394 => 'O16',
1698
- 233 => 'I17', 260 => 'J17', 287 => 'K17', 314 => 'L17', 341 => 'M17', 368 => 'N17', 395 => 'O17',
1699
- 234 => 'I18', 261 => 'J18', 288 => 'K18', 315 => 'L18', 342 => 'M18', 369 => 'N18', 396 => 'O18',
1700
- 235 => 'I19', 262 => 'J19', 289 => 'K19', 316 => 'L19', 343 => 'M19', 370 => 'N19', 397 => 'O19',
1701
- 236 => 'I20', 263 => 'J20', 290 => 'K20', 317 => 'L20', 344 => 'M20', 371 => 'N20', 398 => 'O20',
1702
- 237 => 'I21', 264 => 'J21', 291 => 'K21', 318 => 'L21', 345 => 'M21', 372 => 'N21', 399 => 'O21',
1703
- 238 => 'I22', 265 => 'J22', 292 => 'K22', 319 => 'L22', 346 => 'M22', 373 => 'N22', 400 => 'O22',
1704
- 239 => 'I23', 266 => 'J23', 293 => 'K23', 320 => 'L23', 347 => 'M23', 374 => 'N23', 401 => 'O23',
1705
- 240 => 'I24', 267 => 'J24', 294 => 'K24', 321 => 'L24', 348 => 'M24', 375 => 'N24', 402 => 'O24',
1706
- 241 => 'I25', 268 => 'J25', 295 => 'K25', 322 => 'L25', 349 => 'M25', 376 => 'N25', 403 => 'O25',
1707
- 242 => 'I26', 269 => 'J26', 296 => 'K26', 323 => 'L26', 350 => 'M26', 377 => 'N26', 404 => 'O26',
1708
- 243 => 'I27', 270 => 'J27', 297 => 'K27', 324 => 'L27', 351 => 'M27', 378 => 'N27', 405 => 'O27',
1709
- );
1606
+ my @afPoints405 = (qw(
1607
+ A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24 A25 A26 A27
1608
+ B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23 B24 B25 B26 B27
1609
+ C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23 C24 C25 C26 C27
1610
+ D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 D21 D22 D23 D24 D25 D26 D27
1611
+ E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15 E16 E17 E18 E19 E20 E21 E22 E23 E24 E25 E26 E27
1612
+ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27
1613
+ G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15 G16 G17 G18 G19 G20 G21 G22 G23 G24 G25 G26 G27
1614
+ H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27
1615
+ I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15 I16 I17 I18 I19 I20 I21 I22 I23 I24 I25 I26 I27
1616
+ J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15 J16 J17 J18 J19 J20 J21 J22 J23 J24 J25 J26 J27
1617
+ K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 K11 K12 K13 K14 K15 K16 K17 K18 K19 K20 K21 K22 K23 K24 K25 K26 K27
1618
+ L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15 L16 L17 L18 L19 L20 L21 L22 L23 L24 L25 L26 L27
1619
+ M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 M13 M14 M15 M16 M17 M18 M19 M20 M21 M22 M23 M24 M25 M26 M27
1620
+ N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17 N18 N19 N20 N21 N22 N23 N24 N25 N26 N27
1621
+ O1 O2 O3 O4 O5 O6 O7 O8 O9 O10 O11 O12 O13 O14 O15 O16 O17 O18 O19 O20 O21 O22 O23 O24 O25 O26 O27
1622
+ ));
1710
1623
 
1711
1624
  my %cropHiSpeed = ( #IB
1712
1625
  0 => 'Off',
@@ -4133,23 +4046,7 @@ my %base64coord = (
4133
4046
  Name => 'AFPointsInFocus',
4134
4047
  Format => 'int16u',
4135
4048
  PrintConvColumns => 2,
4136
- PrintConv => {
4137
- 0 => '(none)',
4138
- 0x7ff => 'All 11 Points',
4139
- BITMASK => {
4140
- 0 => 'Center',
4141
- 1 => 'Top',
4142
- 2 => 'Bottom',
4143
- 3 => 'Mid-left',
4144
- 4 => 'Mid-right',
4145
- 5 => 'Upper-left',
4146
- 6 => 'Upper-right',
4147
- 7 => 'Lower-left',
4148
- 8 => 'Lower-right',
4149
- 9 => 'Far Left',
4150
- 10 => 'Far Right',
4151
- },
4152
- },
4049
+ PrintConv => \%afPoints11,
4153
4050
  },
4154
4051
  );
4155
4052
 
@@ -4621,7 +4518,7 @@ my %base64coord = (
4621
4518
  0x1c => [
4622
4519
  { #PH
4623
4520
  Name => 'ContrastDetectAFInFocus',
4624
- Condition => '$$self{AFInfo2Version} eq "0100"',
4521
+ Condition => '$$self{AFInfo2Version} eq "0100" and $$self{ContrastDetectAF}',
4625
4522
  PrintConv => { 0 => 'No', 1 => 'Yes' },
4626
4523
  },{ #PH (D500, see forum11190)
4627
4524
  Name => 'AFPointsSelected',
@@ -4631,6 +4528,11 @@ my %base64coord = (
4631
4528
  ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4632
4529
  PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
4633
4530
  PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
4531
+ },{ #PH (D3400) (NC "selected")
4532
+ Name => 'AFPointsSelected',
4533
+ Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 2',
4534
+ Format => 'int16u',
4535
+ PrintConv => \%afPoints11,
4634
4536
  },
4635
4537
  ],
4636
4538
  # 0x1d - always zero (with or without live view)
@@ -4679,6 +4581,14 @@ my %base64coord = (
4679
4581
  ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4680
4582
  PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
4681
4583
  PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
4584
+ },{ #PH (D7500) (NC "in focus")
4585
+ Name => 'AFPointsInFocus',
4586
+ Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 1',
4587
+ Format => 'undef[7]',
4588
+ ValueConv => 'join(" ", unpack("H2"x7, $val))',
4589
+ ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4590
+ PrintConv => sub { PrintAFPoints(shift, \%afPoints51); },
4591
+ PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints51); },
4682
4592
  },
4683
4593
  ],
4684
4594
  0x31 => { #28 (Z7)
@@ -4745,6 +4655,16 @@ my %base64coord = (
4745
4655
  11 => 'Far Right',
4746
4656
  },
4747
4657
  },
4658
+ {
4659
+ Name => 'PrimaryAFPoint',
4660
+ Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} eq "0101"',
4661
+ PrintConvColumns => 5,
4662
+ PrintConv => {
4663
+ 0 => '(none)',
4664
+ %afPoints51,
4665
+ 1 => 'C6 (Center)',
4666
+ },
4667
+ },
4748
4668
  {
4749
4669
  Name => 'PrimaryAFPoint',
4750
4670
  Condition => '$$self{AFInfo2Version} eq "0101"',
@@ -4841,26 +4761,26 @@ my %base64coord = (
4841
4761
  Notes => 'either AFPointsUsed or AFAreaX/YPosition will be set, but not both',
4842
4762
  ValueConv => 'join(" ", unpack("H2"x51, $val))',
4843
4763
  ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4844
- PrintConv => sub { PrintAFPoints(shift, \%afPoints493); },
4845
- PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints493); },
4764
+ PrintConv => sub { PrintAFPoints(shift, \@afPoints405); },
4765
+ PrintConvInv => sub { PrintAFPointsInv(shift, \@afPoints405); },
4846
4766
  },{
4847
4767
  Name => 'AFPointsUsed', # Z6iii and Zf (AFInfo2Version 0401)
4848
4768
  Condition => '$$self{Model} =~ /^NIKON (Z6_3|Z f)\b/i and ($$self{AFAreaModeUsed} == 197 or $$self{AFAreaModeUsed} == 207)',
4849
- Format => 'undef[35]',
4850
- ValueConv => 'join(" ", unpack("H2"x35, $val))',
4769
+ Format => 'undef[38]',
4770
+ ValueConv => 'join(" ", unpack("H2"x38, $val))',
4851
4771
  ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4852
- PrintConv => sub { PrintAFPoints(shift, \%afPoints273); },
4853
- PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints273); },
4772
+ PrintConv => sub { PrintAFPoints(shift, \@afPoints299); },
4773
+ PrintConvInv => sub { PrintAFPointsInv(shift, \@afPoints299); },
4854
4774
  },{
4855
4775
  Name => 'AFPointsUsed', # Z50ii (AFInfo2Version 0402)
4856
4776
  Condition => '$$self{Model} =~ /^NIKON Z50_2\b/i and ($$self{AFAreaModeUsed} == 197 or $$self{AFAreaModeUsed} == 207)',
4857
- Format => 'undef[27]',
4858
- ValueConv => 'join(" ", unpack("H2"x27, $val))',
4777
+ Format => 'undef[29]',
4778
+ ValueConv => 'join(" ", unpack("H2"x29, $val))',
4859
4779
  ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4860
- PrintConv => sub { PrintAFPoints(shift, \%afPoints209); },
4861
- PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints209); },
4780
+ PrintConv => sub { PrintAFPoints(shift, \@afPoints231); },
4781
+ PrintConvInv => sub { PrintAFPointsInv(shift, \@afPoints231); },
4862
4782
  }],
4863
- 0x3e => {
4783
+ 62 => {
4864
4784
  Name => 'AFImageWidth',
4865
4785
  Format => 'int16u',
4866
4786
  },
@@ -13611,7 +13531,7 @@ sub ProcessNikonAVI($$$)
13611
13531
  #------------------------------------------------------------------------------
13612
13532
  # Print conversion for Nikon AF points
13613
13533
  # Inputs: 0) value to convert (as a string of hex bytes),
13614
- # 1) lookup for AF point bit number (starting at 1)
13534
+ # 1) lookup for AF point bit number (starting at 1), or array ref
13615
13535
  sub PrintAFPoints($$)
13616
13536
  {
13617
13537
  my ($val, $afPoints) = @_;
@@ -13623,7 +13543,7 @@ sub PrintAFPoints($$)
13623
13543
  next unless $dat[$i];
13624
13544
  for ($j=0; $j<8; ++$j) {
13625
13545
  next unless $dat[$i] & (1 << $j);
13626
- my $point = $$afPoints{$i*8 + $j + 1};
13546
+ my $point = ref $afPoints eq 'HASH' ? $$afPoints{$i*8+$j+1} : $$afPoints[$i*8+$j];
13627
13547
  push @points, $point if defined $point;
13628
13548
  }
13629
13549
  }
@@ -13638,17 +13558,21 @@ sub PrintAFPoints($$)
13638
13558
 
13639
13559
  #------------------------------------------------------------------------------
13640
13560
  # Inverse print conversion for AF points
13641
- # Inputs: 0) AF point string, 1) AF point lookup
13561
+ # Inputs: 0) AF point string, 1) AF point hash or array ref
13642
13562
  # Returns: AF point data as a string of hex bytes
13643
13563
  sub PrintAFPointsInv($$)
13644
13564
  {
13645
13565
  my ($val, $afPoints) = @_;
13646
13566
  my @points = ($val =~ /[A-Za-z]\d+/g);
13647
- my $size = int((scalar(keys %$afPoints) + 7) / 8);
13567
+ my $size = int((scalar(ref $afPoints eq 'HASH' ? keys %$afPoints : @$afPoints) + 7) / 8);
13648
13568
  my @dat = (0) x $size;
13649
13569
  if (@points) {
13650
13570
  my (%bitNum, $point);
13651
- $bitNum{$$afPoints{$_}} = $_ foreach keys %$afPoints; # build reverse lookup
13571
+ if (ref $afPoints eq 'HASH') {
13572
+ $bitNum{$$afPoints{$_}} = $_ foreach keys %$afPoints; # build reverse lookup
13573
+ } else {
13574
+ $bitNum{$$afPoints[$_]} = $_ + 1 foreach 0..$#$afPoints;
13575
+ }
13652
13576
  foreach $point (@points) {
13653
13577
  my $bitNum = $bitNum{uc $point} or next;
13654
13578
  my $byte = int(($bitNum - 1) / 8);
@@ -9838,7 +9838,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9838
9838
  5 => '5 (Delayed)',
9839
9839
  },
9840
9840
  },
9841
- 11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
9841
+ 11 => { Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
9842
9842
  13 => { # CSa5
9843
9843
  Name => 'StoreByOrientation',
9844
9844
  PrintConv => {
@@ -10149,7 +10149,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10149
10149
  5 => '5 (Delayed)',
10150
10150
  },
10151
10151
  },
10152
- 11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10152
+ 11 => { Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10153
10153
  13 => { # CSa5
10154
10154
  Name => 'StoreByOrientation',
10155
10155
  PrintConv => {
@@ -10547,7 +10547,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10547
10547
  5 => '5 (Delayed)',
10548
10548
  },
10549
10549
  },
10550
- 11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10550
+ 11 => { Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10551
10551
  13 => { # CSa5
10552
10552
  Name => 'StoreByOrientation',
10553
10553
  PrintConv => {
@@ -10957,7 +10957,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10957
10957
  5 => '5 (Delayed)',
10958
10958
  },
10959
10959
  },
10960
- 11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10960
+ 11 => { Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10961
10961
  13 => { # CSa5
10962
10962
  Name => 'StoreByOrientation',
10963
10963
  PrintConv => {
@@ -1165,7 +1165,7 @@ sub ProcessPSD($$)
1165
1165
  $len = Set32u(length $data);
1166
1166
  Write($outfile, $len, $data) or $err = 1;
1167
1167
  # look for trailer and edit if necessary
1168
- my $trailInfo = Image::ExifTool::IdentifyTrailer($raf);
1168
+ my $trailInfo = $et->IdentifyTrailer($raf);
1169
1169
  if ($trailInfo) {
1170
1170
  my $tbuf = '';
1171
1171
  $$trailInfo{OutFile} = \$tbuf; # rewrite trailer(s)
@@ -1223,7 +1223,7 @@ sub ProcessPSD($$)
1223
1223
  }
1224
1224
  $$et{INDENT} = $oldIndent;
1225
1225
  # process trailers if they exist
1226
- my $trailInfo = Image::ExifTool::IdentifyTrailer($raf);
1226
+ my $trailInfo = $et->IdentifyTrailer($raf);
1227
1227
  $et->ProcessTrailers($trailInfo) if $trailInfo;
1228
1228
  }
1229
1229
  return $rtnVal;