exiftool_vendored 12.18.0 → 12.22.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.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +54 -0
  3. data/bin/MANIFEST +1 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +2 -2
  7. data/bin/config_files/example.config +1 -8
  8. data/bin/exiftool +70 -32
  9. data/bin/fmt_files/gpx.fmt +1 -1
  10. data/bin/fmt_files/gpx_wpt.fmt +1 -1
  11. data/bin/fmt_files/kml.fmt +1 -1
  12. data/bin/fmt_files/kml_track.fmt +1 -1
  13. data/bin/lib/Image/ExifTool.pm +74 -24
  14. data/bin/lib/Image/ExifTool.pod +33 -25
  15. data/bin/lib/Image/ExifTool/Apple.pm +3 -2
  16. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +20 -10
  17. data/bin/lib/Image/ExifTool/Canon.pm +6 -1
  18. data/bin/lib/Image/ExifTool/DJI.pm +6 -6
  19. data/bin/lib/Image/ExifTool/Exif.pm +5 -2
  20. data/bin/lib/Image/ExifTool/FITS.pm +13 -2
  21. data/bin/lib/Image/ExifTool/GPS.pm +22 -11
  22. data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
  23. data/bin/lib/Image/ExifTool/M2TS.pm +40 -4
  24. data/bin/lib/Image/ExifTool/MIE.pm +2 -2
  25. data/bin/lib/Image/ExifTool/Microsoft.pm +296 -82
  26. data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
  27. data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
  28. data/bin/lib/Image/ExifTool/QuickTime.pm +28 -12
  29. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +6 -5
  30. data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
  31. data/bin/lib/Image/ExifTool/Sony.pm +51 -17
  32. data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
  33. data/bin/lib/Image/ExifTool/TagLookup.pm +4031 -4022
  34. data/bin/lib/Image/ExifTool/TagNames.pod +130 -95
  35. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  36. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +7 -5
  37. data/bin/lib/Image/ExifTool/Writer.pl +43 -10
  38. data/bin/lib/Image/ExifTool/XMP.pm +4 -4
  39. data/bin/perl-Image-ExifTool.spec +1 -1
  40. data/lib/exiftool_vendored/version.rb +1 -1
  41. metadata +20 -6
@@ -17,6 +17,7 @@ my %movMap = (
17
17
  Keys => 'Movie', # MOV-Movie-Meta-Keys !! (hack due to different Meta location)
18
18
  Meta => 'UserData',
19
19
  XMP => 'UserData', # MOV-Movie-UserData-XMP
20
+ Microsoft => 'UserData', # MOV-Movie-UserData-Microsoft
20
21
  UserData => 'Movie', # MOV-Movie-UserData
21
22
  Movie => 'MOV',
22
23
  GSpherical => 'SphericalVideoXML', # MOV-Movie-Track-SphericalVideoXML
@@ -30,6 +31,7 @@ my %mp4Map = (
30
31
  Keys => 'Movie', # MOV-Movie-Meta-Keys !! (hack due to different Meta location)
31
32
  Meta => 'UserData',
32
33
  UserData => 'Movie', # MOV-Movie-UserData
34
+ Microsoft => 'UserData', # MOV-Movie-UserData-Microsoft
33
35
  Movie => 'MOV',
34
36
  XMP => 'MOV', # MOV-XMP
35
37
  GSpherical => 'SphericalVideoXML', # MOV-Movie-Track-SphericalVideoXML
@@ -76,8 +78,8 @@ my %dirMap = (
76
78
  # convert ExifTool Format to QuickTime type
77
79
  my %qtFormat = (
78
80
  'undef' => 0x00, string => 0x01,
79
- int8s => 0x15, int16s => 0x15, int32s => 0x15,
80
- int8u => 0x16, int16u => 0x16, int32u => 0x16,
81
+ int8s => 0x15, int16s => 0x15, int32s => 0x15, int64s => 0x15,
82
+ int8u => 0x16, int16u => 0x16, int32u => 0x16, int64u => 0x16,
81
83
  float => 0x17, double => 0x18,
82
84
  );
83
85
  my $undLang = 0x55c4; # numeric code for default ('und') language
@@ -294,7 +296,7 @@ sub GetLangInfo($$)
294
296
  sub CheckQTValue($$$)
295
297
  {
296
298
  my ($et, $tagInfo, $valPtr) = @_;
297
- my $format = $$tagInfo{Format} || $$tagInfo{Table}{FORMAT};
299
+ my $format = $$tagInfo{Format} || $$tagInfo{Writable} || $$tagInfo{Table}{FORMAT};
298
300
  return undef unless $format;
299
301
  return Image::ExifTool::CheckValue($valPtr, $format, $$tagInfo{Count});
300
302
  }
@@ -307,8 +309,8 @@ sub FormatQTValue($$;$$)
307
309
  {
308
310
  my ($et, $valPt, $format, $writable) = @_;
309
311
  my $flags;
310
- if ($format and $format ne 'string') {
311
- $$valPt = WriteValue($$valPt, $format);
312
+ if ($format and $format ne 'string' or not $format and $writable and $writable ne 'string') {
313
+ $$valPt = WriteValue($$valPt, $format || $writable);
312
314
  if ($writable and $qtFormat{$writable}) {
313
315
  $flags = $qtFormat{$writable};
314
316
  } else {
@@ -135,10 +135,10 @@ my %rawType = (
135
135
  my @delGroups = qw(
136
136
  Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
137
137
  APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
138
- FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
139
- ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
140
- PDF-update PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC
141
- SubIFD Trailer UserData XML XML-* XMP XMP-*
138
+ FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD
139
+ IPTC ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD Microsoft MIE
140
+ MPF NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG PNG-pHYs
141
+ PrintIM QuickTime RMETA RSRC SubIFD Trailer UserData XML XML-* XMP XMP-*
142
142
  );
143
143
  # family 2 group names that we can delete
144
144
  my @delGroup2 = qw(
@@ -2639,12 +2639,14 @@ GWTInfo: foreach $tagInfo (@infoArray) {
2639
2639
 
2640
2640
  #------------------------------------------------------------------------------
2641
2641
  # Get list of all group names
2642
- # Inputs: 0) Group family number
2642
+ # Inputs: 0) [optional] ExifTool ref, 1) Group family number
2643
2643
  # Returns: List of group names (sorted alphabetically)
2644
- sub GetAllGroups($)
2644
+ sub GetAllGroups($;$)
2645
2645
  {
2646
2646
  local $_;
2647
2647
  my $family = shift || 0;
2648
+ my $self;
2649
+ ref $family and $self = $family, $family = shift || 0;
2648
2650
 
2649
2651
  $family == 3 and return('Doc#', 'Main');
2650
2652
  $family == 4 and return('Copy#');
@@ -2663,9 +2665,23 @@ sub GetAllGroups($)
2663
2665
  $allGroups{$grp} = 1 if ($grps = $$table{GROUPS}) and ($grp = $$grps{$family});
2664
2666
  foreach $tag (TagTableKeys($table)) {
2665
2667
  my @infoArray = GetTagInfoList($table, $tag);
2666
- foreach $tagInfo (@infoArray) {
2667
- next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
2668
- $allGroups{$grp} = 1;
2668
+ if ($family == 7) {
2669
+ foreach $tagInfo (@infoArray) {
2670
+ my $id = $$tagInfo{TagID};
2671
+ if (not defined $id) {
2672
+ $id = ''; # (just to be safe)
2673
+ } elsif ($id =~ /^\d+$/) {
2674
+ $id = sprintf('0x%x', $id) if $self and $$self{OPTIONS}{HexTagIDs};
2675
+ } else {
2676
+ $id =~ s/([^-_A-Za-z0-9])/sprintf('%.2x',ord $1)/ge;
2677
+ }
2678
+ $allGroups{'ID-' . $id} = 1;
2679
+ }
2680
+ } else {
2681
+ foreach $tagInfo (@infoArray) {
2682
+ next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
2683
+ $allGroups{$grp} = 1;
2684
+ }
2669
2685
  }
2670
2686
  }
2671
2687
  }
@@ -4935,6 +4951,12 @@ sub Set64u(@)
4935
4951
  $_[1] and substr(${$_[1]}, $_[2], length($val)) = $val;
4936
4952
  return $val;
4937
4953
  }
4954
+ sub Set64s(@)
4955
+ {
4956
+ my $val = shift;
4957
+ $val < 0 and $val += 4294967296 * 4294967296; # (temporary hack won't really work due to round-off errors)
4958
+ return Set64u($val, @_);
4959
+ }
4938
4960
  sub SetRational64u(@) {
4939
4961
  my ($numer,$denom) = Rationalize($_[0],0xffffffff);
4940
4962
  my $val = Set32u($numer) . Set32u($denom);
@@ -4996,6 +5018,7 @@ my %writeValueProc = (
4996
5018
  int16uRev => \&Set16uRev,
4997
5019
  int32s => \&Set32s,
4998
5020
  int32u => \&Set32u,
5021
+ int64s => \&Set64s,
4999
5022
  int64u => \&Set64u,
5000
5023
  rational32s => \&SetRational32s,
5001
5024
  rational32u => \&SetRational32u,
@@ -6632,7 +6655,17 @@ sub SetFileTime($$;$$$$)
6632
6655
  # open file by name if necessary
6633
6656
  unless (ref $file) {
6634
6657
  # (file will be automatically closed when *FH goes out of scope)
6635
- $self->Open(\*FH, $file, '+<') or $self->Warn('Error opening file for update'), return 0;
6658
+ unless ($self->Open(\*FH, $file, '+<')) {
6659
+ my $success;
6660
+ if (defined $atime or defined $mtime) {
6661
+ my ($a, $m, $c) = $self->GetFileTime($file);
6662
+ $atime = $a unless defined $atime;
6663
+ $mtime = $m unless defined $mtime;
6664
+ $success = eval { utime($atime, $mtime, $file) } if defined $atime and defined $mtime;
6665
+ }
6666
+ $self->Warn('Error opening file for update') unless $success;
6667
+ return $success;
6668
+ }
6636
6669
  $saveFile = $file;
6637
6670
  $file = \*FH;
6638
6671
  }
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.38';
53
+ $VERSION = '3.39';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -201,13 +201,13 @@ my %uri2ns = ( 'http://ns.exiftool.org/1.0/' => 'et' ); # (allow exiftool.org as
201
201
  ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
202
202
  ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 2, "N")',
203
203
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
204
- PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
204
+ PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
205
205
  );
206
206
  %longConv = (
207
207
  ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
208
208
  ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 2, "E")',
209
209
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
210
- PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
210
+ PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
211
211
  );
212
212
  %dateTimeInfo = (
213
213
  # NOTE: Do NOT put "Groups" here because Groups hash must not be common!
@@ -2280,7 +2280,7 @@ my %sPantryItem = (
2280
2280
  Priority => 0,
2281
2281
  # prevent this from getting set from a LensID that has been converted
2282
2282
  ValueConvInv => q{
2283
- warn "Expected one or more integer values" if $val =~ /[^\d ]/;
2283
+ warn "Expected one or more integer values" if $val =~ /[^-\d ]/;
2284
2284
  return $val;
2285
2285
  },
2286
2286
  },
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.18
3
+ Version: 12.22
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('12.18.0')
4
+ VERSION = Gem::Version.new('12.22.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.18.0
4
+ version: 12.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-02-11 00:00:00.000000000 Z
12
+ date: 2021-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -155,16 +155,16 @@ dependencies:
155
155
  name: simplecov
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - "~>"
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
- version: 0.17.1
160
+ version: '0'
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - "~>"
165
+ - - ">="
166
166
  - !ruby/object:Gem::Version
167
- version: 0.17.1
167
+ version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: simplecov-console
170
170
  requirement: !ruby/object:Gem::Requirement
@@ -179,6 +179,20 @@ dependencies:
179
179
  - - ">="
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: simplecov_json_formatter
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
182
196
  - !ruby/object:Gem::Dependency
183
197
  name: yard
184
198
  requirement: !ruby/object:Gem::Requirement