exiftool_vendored 13.42.0 → 13.45.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +44 -1
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +48 -48
  7. data/bin/config_files/example.config +5 -2
  8. data/bin/exiftool +96 -84
  9. data/bin/lib/Image/ExifTool/Apple.pm +0 -1
  10. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
  11. data/bin/lib/Image/ExifTool/Canon.pm +24 -1
  12. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  13. data/bin/lib/Image/ExifTool/DarwinCore.pm +2 -2
  14. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  15. data/bin/lib/Image/ExifTool/Exif.pm +4 -2
  16. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  17. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  18. data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -2
  19. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  20. data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
  21. data/bin/lib/Image/ExifTool/Geotag.pm +3 -3
  22. data/bin/lib/Image/ExifTool/Google.pm +2 -2
  23. data/bin/lib/Image/ExifTool/ICC_Profile.pm +0 -1
  24. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  25. data/bin/lib/Image/ExifTool/JPEG.pm +5 -1
  26. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  27. data/bin/lib/Image/ExifTool/Kandao.pm +399 -0
  28. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  29. data/bin/lib/Image/ExifTool/MRC.pm +4 -4
  30. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  31. data/bin/lib/Image/ExifTool/MacOS.pm +1 -2
  32. data/bin/lib/Image/ExifTool/Matroska.pm +56 -15
  33. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  34. data/bin/lib/Image/ExifTool/Nikon.pm +13 -15
  35. data/bin/lib/Image/ExifTool/NikonCustom.pm +10 -8
  36. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  37. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  38. data/bin/lib/Image/ExifTool/Panasonic.pm +30 -6
  39. data/bin/lib/Image/ExifTool/Pentax.pm +9 -1
  40. data/bin/lib/Image/ExifTool/PhaseOne.pm +17 -1
  41. data/bin/lib/Image/ExifTool/Plot.pm +2 -2
  42. data/bin/lib/Image/ExifTool/Protobuf.pm +42 -16
  43. data/bin/lib/Image/ExifTool/QuickTime.pm +48 -8
  44. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
  45. data/bin/lib/Image/ExifTool/README +5 -5
  46. data/bin/lib/Image/ExifTool/RIFF.pm +5 -4
  47. data/bin/lib/Image/ExifTool/Reconyx.pm +2 -2
  48. data/bin/lib/Image/ExifTool/Samsung.pm +11 -1
  49. data/bin/lib/Image/ExifTool/Sony.pm +29 -3
  50. data/bin/lib/Image/ExifTool/TNEF.pm +2 -2
  51. data/bin/lib/Image/ExifTool/TagLookup.pm +7129 -7108
  52. data/bin/lib/Image/ExifTool/TagNames.pod +259 -111
  53. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  54. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  55. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -2
  56. data/bin/lib/Image/ExifTool/Writer.pl +9 -5
  57. data/bin/lib/Image/ExifTool/XMP.pm +4 -2
  58. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  59. data/bin/lib/Image/ExifTool.pm +33 -26
  60. data/bin/lib/Image/ExifTool.pod +88 -79
  61. data/bin/perl-Image-ExifTool.spec +47 -47
  62. data/lib/exiftool_vendored/version.rb +1 -1
  63. metadata +2 -1
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.42';
14
+ my $version = '13.45';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -3287,7 +3287,7 @@ sub SetImageInfo($$$)
3287
3287
  }
3288
3288
  }
3289
3289
  next;
3290
- }
3290
+ }
3291
3291
  my @exclTags = @csvExclude;
3292
3292
  foreach (@exclTags) {
3293
3293
  tr/-0-9a-zA-Z_:#?*//dc; # remove illegal characters
@@ -5088,7 +5088,7 @@ input. Metadata is read from source files and printed in readable form to
5088
5088
  the console (or written to output text files with B<-w>).
5089
5089
 
5090
5090
  To write or delete metadata, tag values are assigned using
5091
- -I<TAG>=[I<VALUE>], and/or the B<-geotag>, B<-csv=> or B<-json=> options.
5091
+ -I<TAG>=[I<VALUE>], and/or the B<-geotag>, B<-csv=> or B<-json=> options.
5092
5092
  To copy or move metadata, the B<-tagsFromFile> feature is used. By default
5093
5093
  the original files are preserved with C<_original> appended to their names
5094
5094
  -- be sure to verify that the new files are OK before erasing the originals.
@@ -5107,52 +5107,52 @@ supported by ExifTool (r = read, w = write, c = create):
5107
5107
 
5108
5108
  File Types
5109
5109
  ------------+-------------+-------------+-------------+------------
5110
- 360 r/w | DR4 r/w/c | JP2 r/w | ODT r | RWL r/w
5111
- 3FR r | DSF r | JPEG r/w | OFR r | RWZ r
5112
- 3G2 r/w | DSS r | JSON r | OGG r | RM r
5113
- 3GP r/w | DV r | JXL r/w | OGV r | SEQ r
5114
- 7Z r | DVB r/w | K25 r | ONP r | SKETCH r
5115
- A r | DVR-MS r | KDC r | OPUS r | SO r
5116
- AA r | DYLIB r | KEY r | ORF r/w | SR2 r/w
5117
- AAC r | EIP r | LA r | ORI r/w | SRF r
5118
- AAE r | EPS r/w | LFP r | OTF r | SRW r/w
5119
- AAX r/w | EPUB r | LIF r | PAC r | SVG r
5120
- ACR r | ERF r/w | LNK r | PAGES r | SWF r
5121
- AFM r | EXE r | LRV r/w | PBM r/w | THM r/w
5122
- AI r/w | EXIF r/w/c | M2TS r | PCAP r | TIFF r/w
5123
- AIFF r | EXR r | M4A/V r/w | PCAPNG r | TNEF r
5124
- APE r | EXV r/w/c | MACOS r | PCD r | TORRENT r
5125
- ARQ r/w | F4A/V r/w | MAX r | PCX r | TTC r
5126
- ARW r/w | FFF r/w | MEF r/w | PDB r | TTF r
5127
- ASF r | FITS r | MIE r/w/c | PDF r/w | TXT r
5128
- AVI r | FLA r | MIFF r | PEF r/w | URL r
5129
- AVIF r/w | FLAC r | MKA r | PFA r | VCF r
5130
- AZW r | FLIF r/w | MKS r | PFB r | VNT r
5131
- BMP r | FLV r | MKV r | PFM r | VRD r/w/c
5132
- BPG r | FPF r | MNG r/w | PGF r | VSD r
5133
- BTF r | FPX r | MOBI r | PGM r/w | VSDX r
5134
- C2PA r | GIF r/w | MODD r | PLIST r | WAV r
5135
- CHM r | GLV r/w | MOI r | PICT r | WDP r/w
5136
- COS r | GPR r/w | MOS r/w | PMP r | WEBP r/w
5137
- CR2 r/w | GZ r | MOV r/w | PNG r/w | WEBM r
5138
- CR3 r/w | HDP r/w | MP3 r | PPM r/w | WMA r
5139
- CRM r/w | HDR r | MP4 r/w | PPT r | WMV r
5140
- CRW r/w | HEIC r/w | MPC r | PPTX r | WOFF r
5141
- CS1 r/w | HEIF r/w | MPG r | PS r/w | WOFF2 r
5142
- CSV r | HTML r | MPO r/w | PSB r/w | WPG r
5143
- CUR r | ICC r/w/c | MQV r/w | PSD r/w | WTV r
5144
- CZI r | ICO r | MRC r | PSP r | WV r
5145
- DCM r | ICS r | MRW r/w | QTIF r/w | X3F r/w
5146
- DCP r/w | IDML r | MXF r | R3D r | XCF r
5147
- DCR r | IIQ r/w | NEF r/w | RA r | XISF r
5148
- DFONT r | IND r/w | NKA r | RAF r/w | XLS r
5149
- DIVX r | INSP r/w | NKSC r/w | RAM r | XLSX r
5150
- DJVU r | INSV r | NRW r/w | RAR r | XMP r/w/c
5151
- DLL r | INX r | NUMBERS r | RAW r/w | ZIP r
5152
- DNG r/w | ISO r | NXD r | RIFF r |
5153
- DOC r | ITC r | O r | RSRC r |
5154
- DOCX r | J2C r | ODP r | RTF r |
5155
- DPX r | JNG r/w | ODS r | RW2 r/w |
5110
+ 360 r/w | DR4 r/w/c | JP2 r/w | ODS r | RW2 r/w
5111
+ 3FR r | DSF r | JPEG r/w | ODT r | RWL r/w
5112
+ 3G2 r/w | DSS r | JSON r | OFR r | RWZ r
5113
+ 3GP r/w | DV r | JXL r/w | OGG r | RM r
5114
+ 7Z r | DVB r/w | K25 r | OGV r | SEQ r
5115
+ A r | DVR-MS r | KDC r | ONP r | SKETCH r
5116
+ AA r | DYLIB r | KEY r | OPUS r | SO r
5117
+ AAC r | EIP r | KVAR r | ORF r/w | SR2 r/w
5118
+ AAE r | EPS r/w | LA r | ORI r/w | SRF r
5119
+ AAX r/w | EPUB r | LFP r | OTF r | SRW r/w
5120
+ ACR r | ERF r/w | LIF r | PAC r | SVG r
5121
+ AFM r | EXE r | LNK r | PAGES r | SWF r
5122
+ AI r/w | EXIF r/w/c | LRV r/w | PBM r/w | THM r/w
5123
+ AIFF r | EXR r | M2TS r | PCAP r | TIFF r/w
5124
+ APE r | EXV r/w/c | M4A/V r/w | PCAPNG r | TNEF r
5125
+ ARQ r/w | F4A/V r/w | MACOS r | PCD r | TORRENT r
5126
+ ARW r/w | FFF r/w | MAX r | PCX r | TTC r
5127
+ ASF r | FITS r | MEF r/w | PDB r | TTF r
5128
+ AVI r | FLA r | MIE r/w/c | PDF r/w | TXT r
5129
+ AVIF r/w | FLAC r | MIFF r | PEF r/w | URL r
5130
+ AZW r | FLIF r/w | MKA r | PFA r | VCF r
5131
+ BMP r | FLV r | MKS r | PFB r | VNT r
5132
+ BPG r | FPF r | MKV r | PFM r | VRD r/w/c
5133
+ BTF r | FPX r | MNG r/w | PGF r | VSD r
5134
+ C2PA r | GIF r/w | MOBI r | PGM r/w | VSDX r
5135
+ CHM r | GLV r/w | MODD r | PLIST r | WAV r
5136
+ COS r | GPR r/w | MOI r | PICT r | WDP r/w
5137
+ CR2 r/w | GZ r | MOS r/w | PMP r | WEBP r/w
5138
+ CR3 r/w | HDP r/w | MOV r/w | PNG r/w | WEBM r
5139
+ CRM r/w | HDR r | MP3 r | PPM r/w | WMA r
5140
+ CRW r/w | HEIC r/w | MP4 r/w | PPT r | WMV r
5141
+ CS1 r/w | HEIF r/w | MPC r | PPTX r | WOFF r
5142
+ CSV r | HTML r | MPG r | PS r/w | WOFF2 r
5143
+ CUR r | ICC r/w/c | MPO r/w | PSB r/w | WPG r
5144
+ CZI r | ICO r | MQV r/w | PSD r/w | WTV r
5145
+ DCM r | ICS r | MRC r | PSP r | WV r
5146
+ DCP r/w | IDML r | MRW r/w | QTIF r/w | X3F r/w
5147
+ DCR r | IIQ r/w | MXF r | R3D r | XCF r
5148
+ DFONT r | IND r/w | NEF r/w | RA r | XISF r
5149
+ DIVX r | INSP r/w | NKA r | RAF r/w | XLS r
5150
+ DJVU r | INSV r | NKSC r/w | RAM r | XLSX r
5151
+ DLL r | INX r | NRW r/w | RAR r | XMP r/w/c
5152
+ DNG r/w | ISO r | NUMBERS r | RAW r/w | ZIP r
5153
+ DOC r | ITC r | NXD r | RIFF r |
5154
+ DOCX r | J2C r | O r | RSRC r |
5155
+ DPX r | JNG r/w | ODP r | RTF r |
5156
5156
 
5157
5157
  Meta Information
5158
5158
  ----------------------+----------------------+---------------------
@@ -5338,7 +5338,7 @@ information. Use the B<-s> option to see the tag names instead.
5338
5338
  =item B<-->I<TAG>
5339
5339
 
5340
5340
  Exclude specified tag from extracted information. Same as the B<-x> option.
5341
- Group names and wildcards are permitted as described above for B<->I<TAG>.
5341
+ Group names and wildcards are permitted as described above for B<->I<TAG>.
5342
5342
  Once excluded from the output, a tag may not be re-included by a subsequent
5343
5343
  option. May also be used following a B<-tagsFromFile> option to exclude
5344
5344
  tags from being copied (when redirecting to another tag, it is the source
@@ -5367,8 +5367,8 @@ add or remove existing entries from a list, or to shift date/time values
5367
5367
  values (or decrement if I<VALUE> is negative), and C<-=> may be used to
5368
5368
  conditionally delete or replace a tag (see L</WRITING EXAMPLES> for
5369
5369
  examples). C<^=> is used to write an empty string instead of deleting the
5370
- tag when no I<VALUE> is given, but otherwise it is equivalent to C<=>.
5371
- (Note that the caret must be quoted on the Windows command line.)
5370
+ tag when no I<VALUE> is given, but otherwise it is equivalent to C<=>.
5371
+ (Note that the caret must be quoted in the Windows CMD shell.)
5372
5372
 
5373
5373
  I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
5374
5374
  prefixed by optional family numbers, and separated colons. If no group name
@@ -5432,7 +5432,7 @@ deleting all groups. For example, C<-2all:all=> deletes tags individually,
5432
5432
  while C<-all:all=> deletes entire blocks.
5433
5433
 
5434
5434
  5) The "APP" group names ("APP0" through "APP15") are used to delete JPEG
5435
- application segments which are not associated with another deletable group.
5435
+ application segments which are not associated with another deletable group.
5436
5436
  For example, specifying C<-APP14:All=> will NOT delete the APP14 "Adobe"
5437
5437
  segment because this is accomplished with C<-Adobe:All>. But note that
5438
5438
  these unnamed APP segments may not be excluded with C<--APPxx:all> when
@@ -5444,7 +5444,7 @@ command line. To shift a date/time value and copy it to another tag in the
5444
5444
  same operation, use the B<-globalTimeShift> option.
5445
5445
 
5446
5446
  7) The C<+=> operator may not be used to shift a List-type date/time tag
5447
- (eg. XMP-dc:Date) because C<+=> is used to add elements to the list.
5447
+ (eg. XMP-dc:Date) because C<+=> is used to add elements to the list.
5448
5448
  Instead, the B<-globalTimeShift> option should be used.
5449
5449
 
5450
5450
  Special feature: Integer values may be specified in hexadecimal with a
@@ -5459,7 +5459,8 @@ option for more details). Note that quotes are required around this
5459
5459
  argument to prevent shell redirection since it contains a C<E<lt>> symbol.
5460
5460
  If I<DATFILE>/I<FMT> is not provided, the effect is the same as C<-TAG=>,
5461
5461
  and the tag is simply deleted. C<+E<lt>=> or C<-E<lt>=> may also be used to
5462
- add or delete specific list entries, or to shift date/time values.
5462
+ add or delete specific list entries, to conditionally delete/replace tags,
5463
+ or to shift date/time values.
5463
5464
 
5464
5465
  =item B<-tagsFromFile> I<SRCFILE> or I<FMT>
5465
5466
 
@@ -5514,15 +5515,15 @@ destination group is specified, the information is written to the preferred
5514
5515
  group. Whitespace around the C<E<gt>> or C<E<lt>> is ignored. As a
5515
5516
  convenience, C<-tagsFromFile @> is assumed for any redirected tags which are
5516
5517
  specified without a prior B<-tagsFromFile> option. Copied tags may also be
5517
- added or deleted from a list with arguments of the form
5518
- E<quot>'-I<SRCTAG>+E<lt>I<DSTTAG>'E<quot> or
5518
+ added or deleted from a list, or conditionally deleted/replaced with
5519
+ arguments of the form E<quot>'-I<SRCTAG>+E<lt>I<DSTTAG>'E<quot> or
5519
5520
  E<quot>'-I<SRCTAG>-E<lt>I<DSTTAG>'E<quot> (but see Note 5 below).
5520
5521
 
5521
5522
  An extension of the redirection feature allows strings involving tag names
5522
5523
  to be used on the right hand side of the C<E<lt>> symbol with the syntax
5523
5524
  E<quot>'-I<DSTTAG>E<lt>I<STR>'E<quot>, where tag names in I<STR> are
5524
5525
  prefixed with a C<$> symbol. See the B<-p> option and the
5525
- L</Advanced formatting feature> section for more details about this syntax.
5526
+ L</Advanced formatting feature> section for more details about this syntax.
5526
5527
  Strings starting with a C<=> sign must insert a single space after the
5527
5528
  C<E<lt>> to avoid confusion with the C<E<lt>=> operator which sets the tag
5528
5529
  value from the contents of a file. A single space at the start of the
@@ -5569,12 +5570,19 @@ list items when copying groups of tags from a file containing redundant
5569
5570
  information, it also prevents values of different tags from being copied
5570
5571
  into the same list when this is the intent. To accumulate values
5571
5572
  from different operations into the same list, add a C<+> after the initial
5572
- C<-> of the argument. For example:
5573
+ C<-> of the argument or use the B<-addTagsFromFile> option. For example:
5573
5574
 
5574
5575
  exiftool -tagsfromfile @ '-subject<make' '-+subject<model' ...
5575
5576
 
5576
- Similarly, C<-+DSTTAG> must be used when conditionally replacing a tag to
5577
- prevent overriding earlier conditions.
5577
+ or
5578
+
5579
+ exiftool -addtagsfromfile @ '-subject<make' '-subject<model' ...
5580
+
5581
+ Similarly, C<-+DSTTAG> or B<-addTagsFromFile> must be used when
5582
+ conditionally replacing a tag to prevent overriding earlier conditions.
5583
+
5584
+ Other than these differences, the B<-tagsFromFile> and B<-addTagsFromFile>
5585
+ options are equivalent.
5578
5586
 
5579
5587
  6) The B<-a> option (allow duplicate tags) is always in effect when copying
5580
5588
  tags from I<SRCFILE>, but the highest priority tag is always copied last so
@@ -5598,7 +5606,7 @@ value in a string (with C<$>), but isn't when copying the tag directly.
5598
5606
 
5599
5607
  Finally, the behaviour is different when a destination tag or group of
5600
5608
  C<All> is used. When copying directly, a destination group and/or tag name
5601
- of C<All> writes to the same family 1 group and/or tag name as the source.
5609
+ of C<All> writes to the same family 1 group and/or tag name as the source.
5602
5610
  But when interpolated in a string, the identity of the source tags are lost
5603
5611
  and the value is written to all possible groups/tags. For example, the
5604
5612
  string form must be used in the following command since the intent is to set
@@ -5683,7 +5691,7 @@ when copying tags using the B<-tagsFromFile> option.
5683
5691
 
5684
5692
  2) If the hemisphere is known, a reference direction (N, S, E or W) is
5685
5693
  appended to each printed coordinate, but adding a C<+> or C<-> to the format
5686
- specifier (eg. C<%+.6f> or C<%-.6f>) prints a signed coordinate instead.
5694
+ specifier (eg. C<%+.6f> or C<%-.6f>) prints a signed coordinate instead.
5687
5695
  (C<+> adds a leading "+" for positive coordinates, but C<-> does not.)
5688
5696
 
5689
5697
  3) This print formatting may be disabled with the B<-n> option to extract
@@ -5876,7 +5884,7 @@ Force printing of tags even if they don't exist. This option applies to
5876
5884
  tags specified on the command line, or with the B<-p>, B<-if> (unless the
5877
5885
  API UndefTags option is set), B<-fileNUM> or B<-tagsFromFile> options. When
5878
5886
  B<-f> is used, the value of any missing tag is set to a dash (C<->) by
5879
- default, but this may be configured via the API MissingTagValue option.
5887
+ default, but this may be configured via the API MissingTagValue option.
5880
5888
  B<-f> is also used to add a 'flags' attribute to the B<-listx> output, or to
5881
5889
  allow tags to be deleted when writing with the B<-csv>=I<CSVFILE> feature.
5882
5890
 
@@ -5936,7 +5944,7 @@ into individual tags in the JSON output, but the original structure may be
5936
5944
  preserved with the B<-struct> option (this also causes all list-type XMP
5937
5945
  tags to be output as JSON arrays, otherwise single-item lists would be
5938
5946
  output as simple strings). The B<-a> option is implied when B<-json> is
5939
- used, but entries with identical JSON names are suppressed in the output.
5947
+ used, but entries with identical JSON names are suppressed in the output.
5940
5948
  (B<-G4> may be used to ensure that all tags have unique JSON names.)
5941
5949
 
5942
5950
  Adding the B<-D> or B<-H> option changes tag values to JSON objects with
@@ -6127,7 +6135,7 @@ with this command:
6127
6135
 
6128
6136
  produces output like this:
6129
6137
 
6130
- -- Generated by ExifTool 13.42 --
6138
+ -- Generated by ExifTool 13.45 --
6131
6139
  File: a.jpg - 2003:10:31 15:44:19
6132
6140
  (f/5.6, 1/60s, ISO 100)
6133
6141
  File: b.jpg - 2006:05:23 11:57:38
@@ -6385,7 +6393,7 @@ example:
6385
6393
  A special feature allows the copy number to be incremented for each
6386
6394
  processed file by using %C (upper case) instead of %c. This allows a
6387
6395
  sequential number to be added to output file names, even if the names are
6388
- different. For %C, a copy number of zero is not omitted as it is with %c.
6396
+ different. For %C, a copy number of zero is not omitted as it is with %c.
6389
6397
  A leading '-' causes the number to be reset at the start of each new
6390
6398
  directory (in the original directory structure if the files are being
6391
6399
  moved), and '+' has no effect. The number before the decimal place gives
@@ -6447,7 +6455,7 @@ example, the following pairs of commands give the same result:
6447
6455
  exiftool test.jpg -W+ out.txt # equivalent -W option
6448
6456
 
6449
6457
  4) Adding the B<-v> option to B<-W> sends a list of the tags and output file
6450
- names to the console instead of giving a verbose dump of the entire file.
6458
+ names to the console instead of giving a verbose dump of the entire file.
6451
6459
  (Unless appending all output to one file for each source file by using
6452
6460
  B<-W+> with an output file I<FMT> that does not contain %t, %g, %s or %o.)
6453
6461
 
@@ -6480,7 +6488,7 @@ are formatted as an RDF Bag, but they are combined into a single string when
6480
6488
  B<-s> or B<-sep> is used. Using B<-L> changes the XML encoding from "UTF-8"
6481
6489
  to "windows-1252". Other B<-charset> settings change the encoding only if
6482
6490
  there is a corresponding standard XML character set. The B<-b> option
6483
- causes binary data values to be written, encoded in base64 if necessary.
6491
+ causes binary data values to be written, encoded in base64 if necessary.
6484
6492
  The B<-t> option adds tag table information to the output (see B<-t> for
6485
6493
  details).
6486
6494
 
@@ -6791,7 +6799,7 @@ superseded by any value written to the FileModifyDate tag.
6791
6799
 
6792
6800
  =item B<-password> I<PASSWD>
6793
6801
 
6794
- Specify password to allow processing of password-protected PDF documents.
6802
+ Specify password to allow processing of password-protected PDF documents.
6795
6803
  If a password is required but not given, a warning is issued and the
6796
6804
  document is not processed. This option is ignored if a password is not
6797
6805
  required.
@@ -6896,7 +6904,7 @@ argument per line (NOT one option per line -- some options require
6896
6904
  additional arguments, and all arguments must be placed on separate lines).
6897
6905
  Blank lines and lines beginning with C<#> are ignored (unless they start
6898
6906
  with C<#[CSTR]>, in which case the rest of the line is treated as a C
6899
- string, allowing standard C escape sequences such as "\n" for a newline).
6907
+ string, allowing standard C escape sequences such as "\n" for a newline).
6900
6908
  White space at the start of a line is removed. Normal shell processing of
6901
6909
  arguments is not performed, which among other things means that arguments
6902
6910
  should not be quoted and spaces are treated as any other character.
@@ -6941,7 +6949,7 @@ list. The B<-lang> option may be combined with B<-listx> to output
6941
6949
  descriptions in a single language, and the B<-sort> and/or B<-lang> options
6942
6950
  may be combined with B<-listgeo> (installation of the alternate database is
6943
6951
  required for the additional languages). Also, the API GeolocMinPop,
6944
- GeolocFeature and GeolocAltNames options apply to the B<-listgeo> output.
6952
+ GeolocFeature and GeolocAltNames options apply to the B<-listgeo> output.
6945
6953
  Here are some examples:
6946
6954
 
6947
6955
  -list # list all tag names
@@ -6960,7 +6968,7 @@ Here are some examples:
6960
6968
  When combined with B<-listx>, the B<-s> option shortens the output by
6961
6969
  omitting the descriptions and values (as in the last example above), and
6962
6970
  B<-f> adds 'flags' and 'struct' attributes if applicable. The flags are
6963
- formatted as a comma-separated list of the following possible values:
6971
+ formatted as a comma-separated list of the following possible values:
6964
6972
  Avoid, Binary, List, Mandatory, Permanent, Protected, Unknown and Unsafe
6965
6973
  (see the L<Tag Name documentation|Image::ExifTool::TagNames>). For XMP List
6966
6974
  tags, the list type (Alt, Bag or Seq) is also given, and flattened structure
@@ -7070,7 +7078,7 @@ See L<https://exiftool.org/geolocation.html> for details.
7070
7078
 
7071
7079
  =item B<-globalTimeShift> I<SHIFT>
7072
7080
 
7073
- Shift all formatted date/time values by the specified amount when reading.
7081
+ Shift all formatted date/time values by the specified amount when reading.
7074
7082
  Does not apply to unformatted (B<-n>) output. I<SHIFT> takes the same form
7075
7083
  as the date/time shift when writing (see
7076
7084
  L<Image::ExifTool::Shift.pl|Image::ExifTool::Shift.pl> for details), with a
@@ -7296,7 +7304,7 @@ received up to this point, send a "{ready}" message to stdout when done
7296
7304
  (unless the B<-q> or B<-T> option is used), and continue trying to read
7297
7305
  arguments for the next command from I<ARGFILE>. To aid in command/response
7298
7306
  synchronization, any number appended to the B<-execute> option is echoed in
7299
- the "{ready}" message. For example, C<-execute613> results in "{ready613}".
7307
+ the "{ready}" message. For example, C<-execute613> results in "{ready613}".
7300
7308
  When this number is added, B<-q> no longer suppresses the "{ready}" message.
7301
7309
  (Also, see the B<-echo3> and B<-echo4> options for additional ways to pass
7302
7310
  signals back to your application.)
@@ -7315,7 +7323,7 @@ writing the following lines to the currently open I<ARGFILE>:
7315
7323
  -@
7316
7324
  NEWARGFILE
7317
7325
 
7318
- This causes I<ARGFILE> to be closed, and I<NEWARGFILE> to be kept open.
7326
+ This causes I<ARGFILE> to be closed, and I<NEWARGFILE> to be kept open.
7319
7327
  (Without the B<-stay_open> here, exiftool would have returned to reading
7320
7328
  arguments from I<ARGFILE> after reaching the end of I<NEWARGFILE>.)
7321
7329
 
@@ -7332,7 +7340,7 @@ Set user parameter. I<PARAM> is an arbitrary user parameter name. This is
7332
7340
  an interface to the API UserParam option (see the
7333
7341
  L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
7334
7342
  provides a method to access user-defined parameters in arguments to the
7335
- B<-if>, B<-p> and B<-fileNUM> options as if they were any other tag.
7343
+ B<-if>, B<-p> and B<-fileNUM> options as if they were any other tag.
7336
7344
  Appending a hash tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also
7337
7345
  causes the parameter to be extracted as a normal tag in the UserParam group.
7338
7346
  Similar to the B<-api> option, the parameter value is set to 1 if I<=VAL>
@@ -7350,7 +7358,7 @@ interpolated within a B<-if>, B<-p> or B<-fileNUM> argument, or a
7350
7358
  B<-tagsFromFile> redirection string. Tag names within these strings are
7351
7359
  prefixed by a C<$> symbol, and an arbitrary Perl expression may be applied
7352
7360
  to the tag value by placing braces around the tag name and inserting the
7353
- expression after the name, separated by a semicolon (ie. C<${TAG;EXPR}>).
7361
+ expression after the name, separated by a semicolon (ie. C<${TAG;EXPR}>).
7354
7362
  The expression acts on the value of the tag through the default input
7355
7363
  variable (C<$_>), and has access to the full ExifTool API through the
7356
7364
  current ExifTool object (C<$self>) and the tag key (C<$tag>). It may
@@ -7376,6 +7384,10 @@ expression is empty (ie. C<${TAG;}>). This removes the characters / \ ? * :
7376
7384
  illegal in Windows file names, so this feature is useful if tag values are
7377
7385
  used in file names.)
7378
7386
 
7387
+ Note that the expression is not evaluated for undefined (non-existant) tags,
7388
+ which may have other values if either the B<-m> or B<-f> command-line option
7389
+ or the API MissingTagValue option is used.
7390
+
7379
7391
  =head4 Helper functions
7380
7392
 
7381
7393
  Note that function names are case sensitive.
@@ -7403,7 +7415,7 @@ shift syntax. For example, to shift a date/time value back by one year:
7403
7415
  B<C<NoDups>>
7404
7416
 
7405
7417
  Removes duplicate items from a list with a separator specified by the
7406
- B<-sep> option. This function is most useful when copying list-type tags.
7418
+ B<-sep> option. This function is most useful when copying list-type tags.
7407
7419
  For example, the following command may be used to remove duplicate Keywords:
7408
7420
 
7409
7421
  exiftool -sep '##' '-keywords<${keywords;NoDups}' a.jpg
@@ -7450,7 +7462,7 @@ ExifTool 9.79 and later allow the file name encoding to be specified with
7450
7462
  C<-charset filename=CHARSET>, where C<CHARSET> is the name of a valid
7451
7463
  ExifTool character set, preferably C<UTF8> (see the B<-charset> option for a
7452
7464
  complete list). Setting this triggers the use of Windows wide-character i/o
7453
- routines, thus providing support for most Unicode file names (see note 4).
7465
+ routines, thus providing support for most Unicode file names (see note 4).
7454
7466
  But note that it is not trivial to pass properly encoded file names on the
7455
7467
  Windows command line (see L<https://exiftool.org/faq.html#Q18> for details),
7456
7468
  so placing them in a UTF-8 encoded B<-@> argfile and using
@@ -7790,14 +7802,14 @@ C<src.jpg>.
7790
7802
  Rebuild all EXIF meta information from scratch in an image. This technique
7791
7803
  can be used in JPEG images to repair corrupted EXIF information which
7792
7804
  otherwise could not be written due to errors. The C<Unsafe> tag is a
7793
- shortcut for unsafe EXIF tags in JPEG images which are not normally copied.
7805
+ shortcut for unsafe EXIF tags in JPEG images which are not normally copied.
7794
7806
  See the L<tag name documentation|Image::ExifTool::TagNames> for more details
7795
7807
  about unsafe tags.
7796
7808
 
7797
7809
  =item C<exiftool -Tagsfromfile a.jpg out.xmp>
7798
7810
 
7799
7811
  Copy meta information from C<a.jpg> to an XMP data file. If the XMP data
7800
- file C<out.xmp> already exists, it will be updated with the new information.
7812
+ file C<out.xmp> already exists, it will be updated with the new information.
7801
7813
  Otherwise the XMP data file will be created. Only metadata-only files may
7802
7814
  be created like this (files containing images may be edited but not
7803
7815
  created). See L</WRITING EXAMPLES> above for another technique to generate
@@ -7837,7 +7849,7 @@ C<dst.jpg>.
7837
7849
 
7838
7850
  =item C<exiftool '-Description<${FileName;s/\.[^.]*$//}' dir>
7839
7851
 
7840
- Set the image Description from the file name after removing the extension.
7852
+ Set the image Description from the file name after removing the extension.
7841
7853
  This example uses the L</Advanced formatting feature> to perform a
7842
7854
  substitution operation to remove the last dot and subsequent characters from
7843
7855
  the file name.
@@ -8068,7 +8080,7 @@ Add an IPTC keyword in a pipeline, saving output to a new file.
8068
8080
 
8069
8081
  =item C<curl -s http://a.domain.com/bigfile.jpg | exiftool -fast ->
8070
8082
 
8071
- Extract information from an image over the internet using the cURL utility.
8083
+ Extract information from an image over the internet using the cURL utility.
8072
8084
  The B<-fast> option prevents exiftool from scanning for trailer information,
8073
8085
  so only the meta information header is transferred.
8074
8086
 
@@ -116,7 +116,6 @@ sub ConvertPLIST($$);
116
116
  # - changed in 12.19 to MediaGroupUUID, NealKrawetz private communication
117
117
  # - changed back to ContentIdentifier since Apple writes this to Keys content.identifier (forum14874)
118
118
  Writable => 'string',
119
-
120
119
  },
121
120
  # 0x0012 - (QRMOutputType, ref 2)
122
121
  # 0x0013 - (SphereExternalForceOffset, ref 2)
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.63';
38
+ $VERSION = '3.64';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -346,7 +346,7 @@ or "Rights-en-US"). (See L<http://www.ietf.org/rfc/rfc3066.txt> for the RFC
346
346
  3066 specification.) A C<lang-alt> tag with no language code accesses the
347
347
  "x-default" language, but causes other languages for this tag to be deleted
348
348
  when writing. The "x-default" language code may be specified when writing
349
- to preserve other existing languages (eg. "XMP-dc:Description-x-default").
349
+ to preserve other existing languages (eg. "XMP-dc:Description-x-default").
350
350
  When reading, "x-default" is not specified.
351
351
 
352
352
  The XMP tags are organized according to schema B<Namespace> in the following
@@ -555,7 +555,7 @@ Pentax, Ricoh, Samsung, Sanyo, SeaLife, Sony, Supra and Vivitar.
555
555
  These tags are used in Panasonic/Leica cameras.
556
556
  },
557
557
  Pentax => q{
558
- These tags are used in Pentax/Asahi cameras.
558
+ These tags are used in Pentax/Asahi/Ricoh cameras.
559
559
  },
560
560
  CanonRaw => q{
561
561
  These tags apply to CRW-format Canon RAW files and information in the APP0
@@ -629,7 +629,7 @@ and RPM).
629
629
  Extra => q{
630
630
  The extra tags provide extra features or extra information extracted or
631
631
  generated by ExifTool that is not directly associated with another tag
632
- group. The B<Group> column lists the family 1 group name when reading.
632
+ group. The B<Group> column lists the family 1 group name when reading.
633
633
  Tags with a "-" in this column are write-only.
634
634
 
635
635
  Tags in the family 1 "System" group are referred to as "pseudo" tags because
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.99';
91
+ $VERSION = '5.01';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -492,6 +492,7 @@ $VERSION = '4.99';
492
492
  '368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50
493
493
  '368.13' => 'Sigma 24-105mm f/4 DG OS HSM | A', #forum3833
494
494
  '368.14' => 'Sigma 18-300mm f/3.5-6.3 DC Macro OS HSM | C', #forum15280 (014)
495
+ '368.15' => 'Sigma 24mm F1.4 DG HSM | A', #50 (015)
495
496
  # Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
496
497
  488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
497
498
  489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
@@ -1423,6 +1424,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1423
1424
  Condition => '$$self{Model} =~ /\bEOS (R6m2|R8|R50)$/',
1424
1425
  SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6m2' },
1425
1426
  },
1427
+ {
1428
+ Name => 'CanonCameraInfoR6m3',
1429
+ Condition => '$$self{Model} =~ /\bEOS R6 Mark III$/',
1430
+ SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6m3' },
1431
+ },
1426
1432
  {
1427
1433
  Name => 'CanonCameraInfoG5XII',
1428
1434
  Condition => '$$self{Model} =~ /\bG5 X Mark II$/',
@@ -4794,6 +4800,22 @@ my %ciMaxFocal = (
4794
4800
  },
4795
4801
  );
4796
4802
 
4803
+ %Image::ExifTool::Canon::CameraInfoR6m3 = (
4804
+ %binaryDataAttrs,
4805
+ FIRST_ENTRY => 0,
4806
+ PRIORITY => 0,
4807
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4808
+ NOTES => 'CameraInfo tags for the EOS R6 Mark II.',
4809
+ 0x086d => { #forum17745
4810
+ Name => 'ShutterCount',
4811
+ Format => 'int32u',
4812
+ # (upper 2 bytes are currently unknown for this tag in JPEG images --
4813
+ # we need samples ideally spanning the 65536 count)
4814
+ RawConv => '$$self{PATH}[2] eq "UUID-Canon" ? $val : $val & 0xffff',
4815
+ Notes => 'includes electronic + mechanical shutter',
4816
+ },
4817
+ );
4818
+
4797
4819
  # ref https://exiftool.org/forum/index.php?topic=15356.0
4798
4820
  %Image::ExifTool::Canon::CameraInfoG5XII = (
4799
4821
  %binaryDataAttrs,
@@ -9375,6 +9397,7 @@ my %filterConv = (
9375
9397
  0 => 'Initial Priority',
9376
9398
  1 => 'On Subject',
9377
9399
  2 => 'Switch Subject',
9400
+ 0x7fffffff => 'n/a',
9378
9401
  },
9379
9402
  },
9380
9403
  24 => { #forum16068 #KG extensions for 'left' and 'right'
@@ -1362,7 +1362,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
1362
1362
  PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
1363
1363
  },{
1364
1364
  Name => 'UsableMeteringModes',
1365
- Count => 2,
1365
+ Count => 2,
1366
1366
  PrintConv => [
1367
1367
  \%disableEnable,
1368
1368
  'sprintf("Flags 0x%x",$val)', # (evaluative,partial,spot,center-weighted average)
@@ -296,7 +296,7 @@ my %event = (
296
296
  taxonomicStatus => { },
297
297
  verbatimTaxonRank => { },
298
298
  vernacularName => { Writable => 'lang-alt' },
299
- superFamily => { }, # dwc.tdwg.org added 2023
299
+ superFamily => { }, # dwc.tdwg.org added 2023
300
300
  subFamily => { }, # dwc.tdwg.org added 2023
301
301
  tribe => { }, # dwc.tdwg.org added 2023
302
302
  subTribe => { }, # dwc.tdwg.org added 2023
@@ -332,7 +332,7 @@ my %event = (
332
332
  georeferenceProtocol => { },
333
333
  georeferenceRemarks => { },
334
334
  georeferenceSources => { },
335
- georeferenceVerificationStatus => { }, # dwc.tdwg.org removed 2023
335
+ georeferenceVerificationStatus => { }, # dwc.tdwg.org removed 2023
336
336
  higherGeography => { },
337
337
  higherGeographyID => { },
338
338
  island => { },
@@ -1113,7 +1113,7 @@ sub ProcessPEResources($$)
1113
1113
  #------------------------------------------------------------------------------
1114
1114
  # Process Windows PE file data dictionary
1115
1115
  # Inputs: 0) ExifTool object ref, 1) dirInfo ref
1116
- # Returns: true on success or if the PE resources didn't exist, or false on error
1116
+ # Returns: true on success or if the PE resources didn't exist, or false on error
1117
1117
  # processing the PE resources
1118
1118
  sub ProcessPEDict($$)
1119
1119
  {
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
57
57
  use Image::ExifTool qw(:DataAccess :Utils);
58
58
  use Image::ExifTool::MakerNotes;
59
59
 
60
- $VERSION = '4.61';
60
+ $VERSION = '4.63';
61
61
 
62
62
  sub ProcessExif($$$);
63
63
  sub WriteExif($$$);
@@ -213,7 +213,7 @@ $formatName[129] = 'utf8'; # (Exif 3.0)
213
213
  10 => 'JBIG Color', #3
214
214
  99 => 'JPEG', #16
215
215
  262 => 'Kodak 262', #16
216
- 32766 => 'Next', #3
216
+ 32766 => 'Next or Sony ARW Compressed 2', #3/Milos
217
217
  32767 => 'Sony ARW Compressed', #16
218
218
  32769 => 'Packed RAW', #PH (used by Epson, Nikon, Samsung)
219
219
  32770 => 'Samsung SRW Compressed', #PH
@@ -1598,6 +1598,7 @@ my %opcodeInfo = (
1598
1598
  2 => 'Sony Compressed RAW', # (lossy, ref IB)
1599
1599
  3 => 'Sony Lossless Compressed RAW', #IB
1600
1600
  4 => 'Sony Lossless Compressed RAW 2', #JR (ILCE-1)
1601
+ 6 => 'Sony Compressed RAW 2', # ILCE-7M5
1601
1602
  },
1602
1603
  },
1603
1604
  # 0x7001 - int16u[1] (in SubIFD of Sony ARW images) - values: 0,1
@@ -3590,6 +3591,7 @@ my %opcodeInfo = (
3590
3591
  Condition => '$$valPt =~ /^\[ae_dbg_info:/',
3591
3592
  MakerNotes => 1,
3592
3593
  Binary => 1,
3594
+ NotIFD => 1,
3593
3595
  WriteGroup => 'IFD0', # (for Validate)
3594
3596
  SubDirectory => { TagTable => 'Image::ExifTool::DJI::Info' },
3595
3597
  Format => 'undef',
@@ -479,7 +479,7 @@ my %float8g = ( Format => 'float', PrintConv => 'sprintf("%.8g",$val)' );
479
479
  VARS => { ID_FMT => 'none' },
480
480
  NOTES => q{
481
481
  Tags listed below are only for the first measurement tool, however multiple
482
- measurements may be added, and information is extracted for all of them.
482
+ measurements may be added, and information is extracted for all of them.
483
483
  Tags for subsequent measurements are generated as required with the prefixes
484
484
  "Meas2", "Meas3", etc.
485
485
  },
@@ -1454,7 +1454,7 @@ sub ProcessContents($$$)
1454
1454
  my ($w, $h) = unpack('V2',$2);
1455
1455
  $et->FoundTag(ImageWidth => $w);
1456
1456
  $et->FoundTag(ImageHeight => $h);
1457
- $et->HandleTag($tagTablePtr, OriginalFileName => $name);
1457
+ $et->HandleTag($tagTablePtr, OriginalFileName => $name);
1458
1458
  if ($$dataPt =~ /\G\x01\0{4}(.{12})/sg) {
1459
1459
  # (first 4 bytes seem to be number of objects, next 4 bytes are zero, then ICC size)
1460
1460
  my $size = unpack('x8V', $1);