exiftool-vendored.exe 12.30.0 → 12.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/bin/exiftool_files/Changes +129 -3
  2. package/bin/exiftool_files/README +2 -2
  3. package/bin/exiftool_files/arg_files/xmp2exif.args +2 -1
  4. package/bin/exiftool_files/config_files/example.config +1 -1
  5. package/bin/exiftool_files/exiftool.pl +100 -58
  6. package/bin/exiftool_files/fmt_files/gpx.fmt +1 -1
  7. package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +1 -1
  8. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +13 -3
  9. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +331 -0
  10. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +175 -12
  11. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +12 -2
  12. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +2 -0
  13. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +13 -2
  14. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +2 -2
  15. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +109 -3
  16. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +33 -8
  17. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +5 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +14 -10
  19. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -2
  20. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +16 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  22. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -3
  23. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +154 -24
  24. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +27 -12
  25. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
  26. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +1204 -96
  27. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +5 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +135 -71
  29. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +5 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +4 -2
  31. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +11 -12
  32. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +4 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +2 -2
  34. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +2 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +69 -10
  36. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +141 -111
  37. package/bin/exiftool_files/lib/Image/ExifTool/README +9 -2
  38. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +56 -13
  39. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +9 -4
  40. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +6473 -5827
  41. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +1401 -54
  42. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -0
  43. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +2 -0
  44. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +10 -0
  45. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +10 -11
  46. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +50 -5
  47. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +125 -31
  48. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +3 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +3 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool.pm +8931 -8864
  51. package/bin/exiftool_files/lib/Image/ExifTool.pod +21 -13
  52. package/package.json +3 -3
@@ -408,6 +408,9 @@ numerical, and generated automatically otherwise.
408
408
  to be evaluated. Expression may access $val and $et,
409
409
  and is evaluated only when reading.
410
410
 
411
+ 'iTXt' - [PNG TextualData tags only] flag to write tag as PNG
412
+ iTXt chunk even if it contains no special characters.
413
+
411
414
  'List' - flag indicating that duplicate entries of this tag
412
415
  are allowed, and will be accumulated in a list. Note that for
413
416
  XMP information, 3 different types of lists are supported and
@@ -447,6 +450,10 @@ numerical, and generated automatically otherwise.
447
450
  may be written if the tag already exists. By default, all
448
451
  MakerNotes tags are permanent unless otherwise specified.
449
452
 
453
+ 'PreservePadding' - [QuickTime only] flag to preserve the
454
+ original size of the QuickTime atom by padding with nulls when
455
+ writing with the QuickTimePad option.
456
+
450
457
  'PrintHex' - specifies that unknown PrintConv values should
451
458
  be printed in hex (eg. 'Unknown (0x1)'). Also causes
452
459
  numerical tag values to be printed in hex in the HTML tag name
@@ -471,9 +478,9 @@ numerical, and generated automatically otherwise.
471
478
  tags in IFD1 of JPEG images which default to priority 0.
472
479
 
473
480
  'Protected' - bit mask to protect tags from writing:
474
- Bit 0x01 indicates an 'unsafe' tag, which is not set via
481
+ Bit 0x01 indicates an 'Unsafe' tag, which is not set via
475
482
  SetNewValuesFromFile() unless specified explicitly.
476
- Bit 0x02 indicates a 'protected' tag, which should not be set
483
+ Bit 0x02 indicates a 'Protected' tag, which should not be set
477
484
  directly by the user.
478
485
 
479
486
  'PutFirst' - [EXIF only] flag to place this value before IFD0
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.44';
37
+ $VERSION = '3.48';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -154,6 +154,7 @@ sub PrintInvLensSpec($;$$);
154
154
  32866 => 'Sony FE 24mm F2.8 G', #IB
155
155
  32867 => 'Sony FE 40mm F2.5 G', #IB
156
156
  32868 => 'Sony FE 50mm F2.5 G', #IB
157
+ 32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
157
158
 
158
159
  # (comment this out so LensID will report the LensModel, which is more useful)
159
160
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -196,6 +197,9 @@ sub PrintInvLensSpec($;$$);
196
197
  49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
197
198
  49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
198
199
  49467 => 'Tamron 11-20mm F2.8 Di III-A RXD', #JR (Model B060)
200
+ 49468 => 'Tamron 18-300mm F3.5-6.3 Di III-A VC VXD', #JR (Model B061)
201
+ 49469 => 'Tamron 35-150mm F2-F2.8 Di III VXD', #JR (Model A058)
202
+ 49470 => 'Tamron 28-75mm F2.8 Di III VXD G2', #JR (Model A063)
199
203
 
200
204
  49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
201
205
  49473.1 => 'Viltrox 23mm F1.4 E', #JR
@@ -237,7 +241,10 @@ sub PrintInvLensSpec($;$$);
237
241
  50526 => 'Sigma 28-70mm F2.8 DG DN | C', #JR (021)
238
242
  50527 => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #JR (021)
239
243
  50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
240
-
244
+ 50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
245
+ 50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
246
+ 50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
247
+
241
248
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
242
249
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
243
250
  50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
@@ -1576,6 +1583,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1576
1583
  65535 => 'n/a',
1577
1584
  },
1578
1585
  },
1586
+ # 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
1579
1587
  0x3000 => {
1580
1588
  Name => 'ShotInfo',
1581
1589
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1604,7 +1612,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1604
1612
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1605
1613
  {
1606
1614
  Name => 'Tag9050a',
1607
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1615
+ Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1608
1616
  SubDirectory => {
1609
1617
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1610
1618
  ByteOrder => 'LittleEndian',
@@ -1618,7 +1626,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1618
1626
  },
1619
1627
  },{
1620
1628
  Name => 'Tag9050c',
1621
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)/',
1629
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
1622
1630
  SubDirectory => {
1623
1631
  TagTable => 'Image::ExifTool::Sony::Tag9050c',
1624
1632
  ByteOrder => 'LittleEndian',
@@ -2026,7 +2034,9 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2026
2034
  383 => 'ILCE-7SM3',
2027
2035
  384 => 'ILCE-1', #PH
2028
2036
  385 => 'ILME-FX3', #JR
2037
+ 386 => 'ILCE-7RM3A', #JR
2029
2038
  387 => 'ILCE-7RM4A', #forum12542
2039
+ 388 => 'ILCE-7M4', #IB/JR
2030
2040
  },
2031
2041
  },
2032
2042
  0xb020 => { #2
@@ -7949,7 +7959,7 @@ my %isoSetting2010 = (
7949
7959
  },
7950
7960
  0x0088 => {
7951
7961
  Name => 'InternalSerialNumber', #(NC)
7952
- Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
7962
+ Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
7953
7963
  Format => 'int8u[6]',
7954
7964
  PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7955
7965
  },
@@ -8187,7 +8197,7 @@ my %isoSetting2010 = (
8187
8197
  },
8188
8198
  0x002a => [{
8189
8199
  Name => 'Quality2',
8190
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8200
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8191
8201
  PrintConv => {
8192
8202
  0 => 'JPEG',
8193
8203
  1 => 'RAW',
@@ -8196,7 +8206,7 @@ my %isoSetting2010 = (
8196
8206
  },
8197
8207
  },{
8198
8208
  Name => 'Quality2',
8199
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8209
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8200
8210
  PrintConv => {
8201
8211
  1 => 'JPEG',
8202
8212
  2 => 'RAW',
@@ -8207,13 +8217,13 @@ my %isoSetting2010 = (
8207
8217
  }],
8208
8218
  0x0047 => {
8209
8219
  Name => 'SonyImageHeight',
8210
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8220
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8211
8221
  Format => 'int16u',
8212
8222
  PrintConv => '$val > 0 ? 8*$val : "n.a."',
8213
8223
  },
8214
8224
  0x0053 => {
8215
8225
  Name => 'ModelReleaseYear',
8216
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8226
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8217
8227
  Format => 'int8u',
8218
8228
  PrintConv => 'sprintf("20%.2d", $val)',
8219
8229
  },
@@ -8228,10 +8238,11 @@ my %isoSetting2010 = (
8228
8238
  FIRST_ENTRY => 0,
8229
8239
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8230
8240
  DATAMEMBER => [ 0 ],
8231
- IS_SUBDIR => [ 0x0498, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8241
+ IS_SUBDIR => [ 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8232
8242
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8233
8243
 
8234
8244
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8245
+ 0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8235
8246
  0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8236
8247
  0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8237
8248
  0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8370,8 +8381,8 @@ my %isoSetting2010 = (
8370
8381
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8371
8382
  DATAMEMBER => [ 0x04 ],
8372
8383
  0x04 => {
8373
- # seen values 0,2,3,18,32,49,50,83,148
8374
- # CameraTemperature is valid for all values except 0,148
8384
+ # seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
8385
+ # CameraTemperature is valid for all values above except ==0 and >=130
8375
8386
  Name => 'TempTest2',
8376
8387
  DataMember => 'TempTest2',
8377
8388
  Hidden => 1,
@@ -9500,7 +9511,7 @@ my %isoSetting2010 = (
9500
9511
  WRITE_PROC => \&WriteEnciphered,
9501
9512
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9502
9513
  FORMAT => 'int8u',
9503
- NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
9514
+ NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
9504
9515
  FIRST_ENTRY => 0,
9505
9516
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9506
9517
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -9627,10 +9638,22 @@ my %isoSetting2010 = (
9627
9638
  },
9628
9639
  0x088f => {
9629
9640
  Name => 'VignettingCorrParams',
9641
+ Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
9642
+ Format => 'int16s[16]',
9643
+ },
9644
+ 0x0891 => {
9645
+ Name => 'VignettingCorrParams',
9646
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9630
9647
  Format => 'int16s[16]',
9631
9648
  },
9632
9649
  0x0914 => {
9633
9650
  Name => 'ChromaticAberrationCorrParams',
9651
+ Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
9652
+ Format => 'int16s[32]',
9653
+ },
9654
+ 0x0916 => {
9655
+ Name => 'ChromaticAberrationCorrParams',
9656
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9634
9657
  Format => 'int16s[32]',
9635
9658
  },
9636
9659
  );
@@ -10320,6 +10343,26 @@ my %isoSetting2010 = (
10320
10343
  ValueConv => '"$val[0] $val[1]Z"',
10321
10344
  PrintConv => '$self->ConvertDateTime($val)',
10322
10345
  },
10346
+ GPSLatitude => {
10347
+ SubDoc => 1, # generate for all sub-documents
10348
+ Groups => { 2 => 'Location' },
10349
+ Require => {
10350
+ 0 => 'Sony:GPSLatitude',
10351
+ 1 => 'Sony:GPSLatitudeRef',
10352
+ },
10353
+ ValueConv => '$val[1] =~ /^S/i ? -$val[0] : $val[0]',
10354
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
10355
+ },
10356
+ GPSLongitude => {
10357
+ SubDoc => 1, # generate for all sub-documents
10358
+ Groups => { 2 => 'Location' },
10359
+ Require => {
10360
+ 0 => 'Sony:GPSLongitude',
10361
+ 1 => 'Sony:GPSLongitudeRef',
10362
+ },
10363
+ ValueConv => '$val[1] =~ /^W/i ? -$val[0] : $val[0]',
10364
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
10365
+ },
10323
10366
  );
10324
10367
 
10325
10368
  # add our composite tags
@@ -15,7 +15,7 @@ use vars qw($VERSION @ISA $makeMissing);
15
15
  use Image::ExifTool qw(:Utils :Vars);
16
16
  use Image::ExifTool::XMP;
17
17
 
18
- $VERSION = '1.31';
18
+ $VERSION = '1.32';
19
19
  @ISA = qw(Exporter);
20
20
 
21
21
  # set this to a language code to generate Lang module with 'MISSING' entries
@@ -58,6 +58,12 @@ my %translateLang = (
58
58
  my $numbersFirst = 1; # set to -1 to sort numbers last, or 2 to put negative numbers last
59
59
  my $caseInsensitive; # used internally by sort routine
60
60
 
61
+ # write groups that don't represent real family 1 group names
62
+ my %fakeWriteGroup = (
63
+ Comment => 1, # (JPEG Comment)
64
+ colr => 1, # (Jpeg2000 'colr' box)
65
+ );
66
+
61
67
  #------------------------------------------------------------------------------
62
68
  # Utility to print tag information database as an XML list
63
69
  # Inputs: 0) output file name (undef to send to console),
@@ -178,9 +184,8 @@ PTILoop: for ($index=0; $index<@infoArray; ++$index) {
178
184
  }
179
185
  my @groups = $et->GetGroup($tagInfo);
180
186
  my $writeGroup = $$tagInfo{WriteGroup} || $$table{WRITE_GROUP};
181
- if ($writeGroup and $writeGroup ne 'Comment') {
182
- $groups[1] = $writeGroup; # use common write group for group 1
183
- }
187
+ # use common write group for group 1 (unless fake)
188
+ $groups[1] = $writeGroup if $writeGroup and not $fakeWriteGroup{$writeGroup};
184
189
  # add group names if different from table defaults
185
190
  my $grp = '';
186
191
  for ($fam=0; $fam<3; ++$fam) {