exiftool_vendored 11.63.0 → 11.64.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea6e0dbd2fcc5d00e9ea0e5fdfa01cf96f64aaf6
4
- data.tar.gz: 6448e540c1fa5c44c3ff28d6771c14ac3da1b02c
3
+ metadata.gz: ed8e2593ed82c4f03352524a9533ca0b8f58b029
4
+ data.tar.gz: da4126b33c5a53e17233ee3edf5977f0b676ec97
5
5
  SHA512:
6
- metadata.gz: 73f15e2bb7259f5f1e08ba426f7dca7305d0ae2e71efc50173029a83efdc51ff2cc68ef1942a850ea8eafb56eb81f43f68756a57096fb222a39928ab6a994541
7
- data.tar.gz: 8aaec703cd4a179de8e9acc3115e3d96c73a25c38a1f60396049db05a11a763fe8033f50da926f4ab08f0e25e44054e82a9e8add022f51e524f381c9c1a1477c
6
+ metadata.gz: ed09f33b6a3cff1381aa1e443ee3745e5d2ceb50746eb684bb3963128c283f3de519ed4850b992739f39ea7e4e5252f9a152c0362df7d61891a1d4be4c747e04
7
+ data.tar.gz: 2df102f545c23263b6549115915df802023d9bc1c9c75992edda90d9b61e312b94180434e2f7599a38e9bf883046359f9535e812b9b47eb88edefb9c28929940
data/bin/Changes CHANGED
@@ -7,6 +7,24 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 11.50. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ [I will be on vacation and without access to my computer
11
+ from Sept. 3-24, so don't expect any updates or email/forum responses from
12
+ me during this time - PH]
13
+
14
+ Aug. 28, 2019 - Version 11.64
15
+
16
+ - Added a new Canon LensType (thanks LibRaw)
17
+ - Added a new Nikon LensID (thanks Bruno)
18
+ - Added config file for converting streaming GPS from BlueSkySea dashcam
19
+ - Decode FocusDistance for Nikon Z6/Z7
20
+ - Documented groups in families 5 and 6 (available but undocumented since
21
+ Exiftool version 8.22 and 11.50 respectively)
22
+ - Fixed some ordering problems when writing/copying nested XMP lang-alt lists
23
+ - Fixed some minor quirks with QuickTime language codes (thanks Hayo Baan)
24
+ - Fixed a CanonModelID value (thanks Dmitry)
25
+ - API Changes:
26
+ - Documented SavePath and SaveFormat options
27
+
10
28
  Aug. 20, 2019 - Version 11.63 - "PNG Early Text"
11
29
 
12
30
  - Added a few new Sigma lenses (thanks LibRaw)
data/bin/MANIFEST CHANGED
@@ -17,6 +17,7 @@ arg_files/xmp2iptc.args
17
17
  arg_files/xmp2pdf.args
18
18
  config_files/age.config
19
19
  config_files/bibble.config
20
+ config_files/blueskysea.config
20
21
  config_files/convert_regions.config
21
22
  config_files/dji.config
22
23
  config_files/example.config
@@ -885,6 +886,9 @@ t/XMP_47.out
885
886
  t/XMP_48.out
886
887
  t/XMP_49.out
887
888
  t/XMP_5.out
889
+ t/XMP_50.out
890
+ t/XMP_52.out
891
+ t/XMP_53.out
888
892
  t/XMP_6.out
889
893
  t/XMP_7.out
890
894
  t/XMP_8.out
@@ -1061,6 +1065,7 @@ t/images/XMP5.xmp
1061
1065
  t/images/XMP6.xmp
1062
1066
  t/images/XMP7.xmp
1063
1067
  t/images/XMP8.xmp
1068
+ t/images/XMP9.xmp
1064
1069
  t/images/ZIP.gz
1065
1070
  t/images/ZIP.zip
1066
1071
  t/images/iWork.numbers
data/bin/META.json CHANGED
@@ -47,6 +47,6 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.63",
50
+ "version" : "11.64",
51
51
  "x_serialization_backend" : "JSON::PP version 4.02"
52
52
  }
data/bin/META.yml CHANGED
@@ -28,5 +28,5 @@ recommends:
28
28
  Time::HiRes: '0'
29
29
  requires:
30
30
  perl: '5.004'
31
- version: '11.63'
31
+ version: '11.64'
32
32
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
104
104
  terminal window to extract and run ExifTool:
105
105
 
106
106
  cd ~/Desktop
107
- gzip -dc Image-ExifTool-11.63.tar.gz | tar -xf -
108
- cd Image-ExifTool-11.63
107
+ gzip -dc Image-ExifTool-11.64.tar.gz | tar -xf -
108
+ cd Image-ExifTool-11.64
109
109
  ./exiftool t/images/ExifTool.jpg
110
110
 
111
111
  Note: These commands extract meta information from one of the test images.
@@ -190,6 +190,7 @@ distribution package:
190
190
  config_files/ - Sample ExifTool configuration files:
191
191
  age.config - Calculate Age of person in photo
192
192
  bibble.config - Definitions for writing Bibble XMP tags
193
+ blueskysea.config - Convert GPS from BlueSkySea dashcam
193
194
  convert_regions.config - Convert between MWG and MP face regions
194
195
  dji.config - Composite tags for metadata in DJI videos
195
196
  example.config - General example showing config features
@@ -0,0 +1,101 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: blueskysea.config
3
+ #
4
+ # Description: This config file defines Composite tags to convert embedded
5
+ # metadata in videos from BlueSkySea traffic cameras
6
+ #
7
+ # Usage: exiftool -config blueskysea.config -ee FILE
8
+ #
9
+ # Example command to create .gpx log file from BlueSkySea video
10
+ # (requires gpx.fmt available in the full Exiftool distribution):
11
+ #
12
+ # exiftool -config blueskysea.config -p gpx.fmt -ee FILE
13
+ #
14
+ # Requires: ExifTool version 10.75 or later
15
+ #
16
+ # Revisions: 2019/08/23 - P. Harvey Created
17
+ #------------------------------------------------------------------------------
18
+
19
+ %Image::ExifTool::UserDefined = (
20
+ 'Image::ExifTool::Composite' => {
21
+ GROUPS => { 2 => 'Location' },
22
+ #
23
+ # Note: SubDoc flag is set for all these tags so they will be generated for
24
+ # all embedded documents
25
+ #
26
+ GPSDateTime => {
27
+ Description => 'GPS Date/Time',
28
+ Groups => { 2 => 'Time' },
29
+ SubDoc => 1,
30
+ Require => 'Text',
31
+ RawConv => q{
32
+ $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($val[0], 8, 14)));
33
+ return undef unless $val =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
34
+ return "$1:$2:$3 $4:$5:$6";
35
+ },
36
+ PrintConv => '$self->ConvertDateTime($val)',
37
+ },
38
+ GPSLatitude => {
39
+ SubDoc => 1,
40
+ Require => 'Text',
41
+ RawConv => q{
42
+ $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($val[0], 38, 9)));
43
+ return undef unless $val =~ /^([NS])(\d{2})(\d+$)$/;
44
+ return ($2 + $3 / 600000) * ($1 eq 'S' ? -1 : 1);
45
+ },
46
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
47
+ },
48
+ GPSLongitude => {
49
+ SubDoc => 1,
50
+ Require => 'Text',
51
+ RawConv => q{
52
+ $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($val[0], 47, 10)));
53
+ return undef unless $val =~ /^([EW])(\d{3})(\d+$)$/;
54
+ return ($2 + $3 / 600000) * ($1 eq 'W' ? -1 : 1);
55
+ },
56
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
57
+ },
58
+ GPSSpeed => {
59
+ SubDoc => 1,
60
+ Require => 'Text',
61
+ RawConv => q{
62
+ $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($val[0], 62, 3)));
63
+ return undef unless $val =~ /^\d+$/;
64
+ return $val + 0;
65
+ },
66
+ },
67
+ Accelerometer => {
68
+ SubDoc => 1,
69
+ Require => 'Text',
70
+ Notes => q{
71
+ the first X,Y,Z accelerometer readings from the AccelerometerData, stored in
72
+ text format
73
+ },
74
+ RawConv => q{
75
+ $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($val[0], 0xad, 12)));
76
+ return undef unless $val =~ /^([-+]\d{3})([-+]\d{3})([-+]\d{3})$/;
77
+ return "$1 $2 $3";
78
+ },
79
+ },
80
+ AccelerometerData => {
81
+ SubDoc => 1,
82
+ Require => 'Text',
83
+ Notes => q{
84
+ 24 values in 6 groups of 4 values each. For each group, the first value is
85
+ zero and the next 3 are the X,Y,Z components of acceleration. The first 5
86
+ groups are likely samples taken at 5 Hz. The last group often has zero
87
+ entries, and its meaning is unknown
88
+ },
89
+ RawConv => q{
90
+ $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($val[0], 0xba, 96)));
91
+ my $order = GetByteOrder();
92
+ SetByteOrder('II');
93
+ $val = ReadValue(\$val, 0, 'float');
94
+ SetByteOrder($order);
95
+ return $val;
96
+ },
97
+ }
98
+ },
99
+ );
100
+
101
+ 1; #end
data/bin/exiftool CHANGED
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '11.63';
13
+ my $version = '11.64';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -4961,14 +4961,17 @@ B<-csv>=I<CSVFILE> feature.
4961
4961
 
4962
4962
  Organize output by tag group. I<NUM> specifies a group family number, and
4963
4963
  may be 0 (general location), 1 (specific location), 2 (category), 3
4964
- (document number) or 4 (instance number). B<-g0> is assumed if a family
4965
- number is not specified, and family numbers may be added wherever B<-g> is
4966
- mentioned in the documentation. Multiple families may be specified by
4967
- separating them with colons. By default the resulting group name is
4968
- simplified by removing any leading C<Main:> and collapsing adjacent
4969
- identical group names, but this can be avoided by placing a colon before the
4970
- first family number (eg. B<-g:3:1>). Use the B<-listg> option to list group
4971
- names for a specified family.
4964
+ (document number), 4 (instance number), 5 (metadata path) or 6 (EXIF/TIFF
4965
+ format). B<-g0> is assumed if a family number is not specified, and family
4966
+ numbers may be added wherever B<-g> is mentioned in the documentation.
4967
+ Multiple families may be specified by separating them with colons. By
4968
+ default the resulting group name is simplified by removing any leading
4969
+ C<Main:> and collapsing adjacent identical group names, but this can be
4970
+ avoided by placing a colon before the first family number (eg. B<-g:3:1>).
4971
+ Use the B<-listg> option to list group names for a specified family. The
4972
+ SavePath and SaveFormat API options are automatically enabled if the
4973
+ respective family 5 or 6 group names are requested. See the
4974
+ L<API GetGroup documentation|Image::ExifTool/GetGroup> for more information.
4972
4975
 
4973
4976
  =item B<-G>[I<NUM>][:I<NUM>...] (B<-groupNames>)
4974
4977
 
@@ -5168,7 +5171,7 @@ with this command:
5168
5171
 
5169
5172
  produces output like this:
5170
5173
 
5171
- -- Generated by ExifTool 11.63 --
5174
+ -- Generated by ExifTool 11.64 --
5172
5175
  File: a.jpg - 2003:10:31 15:44:19
5173
5176
  (f/5.6, 1/60s, ISO 100)
5174
5177
  File: b.jpg - 2006:05:23 11:57:38
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
28
  %jpegMarker %specialTags %fileTypeLookup);
29
29
 
30
- $VERSION = '11.63';
30
+ $VERSION = '11.64';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -1636,7 +1636,7 @@ my %systemTagsNotes = (
1636
1636
  causes GPS information to be written into the EXIF or XMP of the target
1637
1637
  files. The local system timezone is assumed if the date/time value does not
1638
1638
  contain a timezone. May be deleted to delete associated GPS tags. A group
1639
- name of 'EXIF' or 'XMP' may be specified to write or delete only EXIF or XMP
1639
+ name of "EXIF" or "XMP" may be specified to write or delete only EXIF or XMP
1640
1640
  GPS tags
1641
1641
  },
1642
1642
  DelCheck => q{
@@ -1674,12 +1674,12 @@ my %systemTagsNotes = (
1674
1674
  Writable => 1,
1675
1675
  WriteOnly => 1,
1676
1676
  Notes => q{
1677
- write-only tag used to force EXIF, IPTC, XMP or PNG metadata in a file to be
1678
- rewritten. May be set to "EXIF", "IPTC", "XMP" or "PNG" to force the
1679
- corresponding metadata type to be rewritten, "FixBase" to cause EXIF to be
1680
- rewritten only if the MakerNotes offset base was fixed, or "All" to rewrite
1681
- all of these metadata types. Values are case insensitive, and multiple
1682
- values may be separated with commas, eg. C<-ForceWrite=exif,xmp>
1677
+ write-only tag used to force metadata in a file to be rewritten even if no
1678
+ tag values are changed. May be set to "EXIF", "IPTC", "XMP" or "PNG" to
1679
+ force the corresponding metadata type to be rewritten, "FixBase" to cause
1680
+ EXIF to be rewritten only if the MakerNotes offset base was fixed, or "All"
1681
+ to rewrite all of these metadata types. Values are case insensitive, and
1682
+ multiple values may be separated with commas, eg. C<-ForceWrite=exif,xmp>
1683
1683
  },
1684
1684
  },
1685
1685
  EmbeddedVideo => { Groups => { 2 => 'Video' } },
@@ -2194,8 +2194,8 @@ sub ClearOptions($)
2194
2194
  QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
2195
2195
  RequestAll => undef, # extract all tags that must be specifically requested
2196
2196
  RequestTags => undef, # extra tags to request (on top of those in the tag list)
2197
- SaveFormat => undef, # (undocumented) save family 6 tag TIFF format
2198
- SavePath => undef, # (undocumented) save family 5 location path
2197
+ SaveFormat => undef, # save family 6 tag TIFF format
2198
+ SavePath => undef, # save family 5 location path
2199
2199
  ScanForXMP => undef, # flag to scan for XMP information in all files
2200
2200
  Sort => 'Input', # order to sort found tags (Input, File, Tag, Descr, Group#)
2201
2201
  Sort2 => 'File', # secondary sort order for tags in a group (File, Tag, Descr)
@@ -853,6 +853,19 @@ current RequestTags list. Groups are requested by adding a colon after the
853
853
  name (eg. "MacOS:"). Names are converted to lower case as they are added to
854
854
  the list. Default is undef.
855
855
 
856
+ =item SaveFormat
857
+
858
+ Flag to save EXIF/TIFF format type as the family 6 group name when
859
+ extracting information. Without this option set, the family 6 group names
860
+ are not generated. Default is undef. See the L</GetGroup> option for more
861
+ details.
862
+
863
+ =item SavePath
864
+
865
+ Flag to save the metadata path as the family 5 group name when extracting
866
+ information. Without this option set, the family 5 group names are not
867
+ generated. Default is undef. See the L</GetGroup> option for more details.
868
+
856
869
  =item ScanForXMP
857
870
 
858
871
  Flag to scan all files (even unrecognized formats) for XMP information
@@ -1044,8 +1057,8 @@ CharsetPhotoshop, CharsetQuickTime, CharsetRIFF, Composite, ExtendedXMP,
1044
1057
  ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase,
1045
1058
  IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, MDItemTags,
1046
1059
  NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero), RequestAll,
1047
- RequestTags, ScanForXMP, Struct, TextOut, Unknown, Verbose, XAttrTags and
1048
- XMPAutoConv.
1060
+ RequestTags, SaveFormat, SavePath, ScanForXMP, Struct, TextOut, Unknown,
1061
+ Verbose, XAttrTags and XMPAutoConv.
1049
1062
 
1050
1063
  =item Return Value:
1051
1064
 
@@ -1451,9 +1464,9 @@ hash reference or a serialized string (see the last two examples above).
1451
1464
  =item AddValue
1452
1465
 
1453
1466
  Specifies that the value be added to an existing list in a file rather than
1454
- overwriting. Valid settings are 0 (overwrite any existing tag value), 1
1455
- (add to an existing list and warn for non-list tags) or 2 (add to existing
1456
- list and overwrite non-list tags). Default is 0.
1467
+ overwriting the existing values. Valid settings are 0 (overwrite any
1468
+ existing tag value), 1 (add to an existing list and warn for non-list tags)
1469
+ or 2 (add to existing list and overwrite non-list tags). Default is 0.
1457
1470
 
1458
1471
  =item DelValue
1459
1472
 
@@ -1516,7 +1529,7 @@ set in previous calls to L</SetNewValue>). This option is most commonly
1516
1529
  used to replace previously-set new values for list-type tags. Valid values
1517
1530
  are 0 (set new value normally -- adds to new values for list-type tags), 1
1518
1531
  (reset any previous new values before setting new value) or 2 (reset
1519
- previous new values only; new value argument is ignored).
1532
+ previous new values only; new value argument is ignored). Default is 0.
1520
1533
 
1521
1534
  =item Shift
1522
1535
 
@@ -1999,6 +2012,8 @@ The group family numbers are currently available:
1999
2012
  2) Category (eg. Author, Time)
2000
2013
  3) Document Number (eg. Main, Doc1, Doc3-2)
2001
2014
  4) Instance Number (eg. Copy1, Copy2, Copy3...)
2015
+ 5) Metadata Path (eg. JPEG-APP1-IFD0-ExifIFD)
2016
+ 6) EXIF/TIFF Format (eg. int8u, int32u, undef, string)
2002
2017
 
2003
2018
  Families 0 and 1 are based on the file structure, and are similar except
2004
2019
  that family 1 is more specific and sub-divides some groups to give more
@@ -2034,6 +2049,14 @@ specified) has no family 4 group name, but additional instances have have
2034
2049
  family 4 group names of 'Copy1', 'Copy2', 'Copy3', etc. For convenience,
2035
2050
  the primary tag may also be accessed using a group name of 'Copy0'.
2036
2051
 
2052
+ Family 5 is experimental, and gives the complete path for the metadata in
2053
+ the file. Generated only if the L</SavePath> option is used when
2054
+ extracting.
2055
+
2056
+ Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
2057
+ type of the extracted value. Generated only if the L</SaveFormat> option is
2058
+ used when extracting.
2059
+
2037
2060
  See L</GetAllGroups [static]> for complete lists of group names.
2038
2061
 
2039
2062
  =back
@@ -2267,6 +2290,15 @@ Doc#, Main
2267
2290
 
2268
2291
  Copy#
2269
2292
 
2293
+ =item Family 5 (Metadata Path):
2294
+
2295
+ eg. JPEG-APP1-IFD0-ExifIFD
2296
+
2297
+ =item Family 6 (EXIF/TIFF Format):
2298
+
2299
+ int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s,
2300
+ rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
2301
+
2270
2302
  =back
2271
2303
 
2272
2304
  =head2 GetDeleteGroups [static]
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.22';
91
+ $VERSION = '4.23';
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)
@@ -562,6 +562,7 @@ $VERSION = '4.22';
562
562
  61182.2 => 'Canon RF 24-105mm F4 L IS USM', #IB
563
563
  61182.3 => 'Canon RF 28-70mm F2 L USM', #IB
564
564
  61182.4 => 'Canon RF 85mm F1.2L USM', #IB
565
+ 61182.5 => 'Canon RF 24-240mm F4-6.3 IS USM', #IB
565
566
  65535 => 'n/a',
566
567
  );
567
568
 
@@ -794,7 +795,7 @@ $VERSION = '4.22';
794
795
  0x4020000 => 'PowerShot SX420 IS',
795
796
  0x4030000 => 'PowerShot ELPH 190 IS / IXUS 180 / IXY 190',
796
797
  0x4040000 => 'PowerShot G1',
797
- 0x4040001 => 'IXY 180', # ?? (from Canon sample)
798
+ 0x4040001 => 'PowerShot ELPH 180 IS / IXUS 175 / IXY 180', #forum10402
798
799
  0x4050000 => 'PowerShot SX720 HS',
799
800
  0x4060000 => 'PowerShot SX620 HS',
800
801
  0x4070000 => 'EOS M6',
@@ -19,7 +19,7 @@ use strict;
19
19
  use vars qw($VERSION %ttLang);
20
20
  use Image::ExifTool qw(:DataAccess :Utils);
21
21
 
22
- $VERSION = '1.08';
22
+ $VERSION = '1.09';
23
23
 
24
24
  sub ProcessOTF($$);
25
25
 
@@ -88,20 +88,20 @@ my %ttCharset = (
88
88
  1 => 'fr', 25 => 'pl', 49 => 'az', 73 => 'kn', 130 => 'ca',
89
89
  2 => 'de', 26 => 'hu', 50 => 'az', 74 => 'ta', 131 => 'la',
90
90
  3 => 'it', 27 => 'et', 51 => 'hy', 75 => 'te', 132 => 'qu',
91
- 4 => 'nl', 28 => 'lv', 52 => 'ka', 76 => 'si', 133 => 'gn',
91
+ 4 => 'nl-NL', 28 => 'lv', 52 => 'ka', 76 => 'si', 133 => 'gn',
92
92
  5 => 'sv', 29 => 'smi', 53 => 'ro', 77 => 'my', 134 => 'ay',
93
93
  6 => 'es', 30 => 'fo', 54 => 'ky', 78 => 'km', 135 => 'tt',
94
94
  7 => 'da', 31 => 'fa', 55 => 'tg', 79 => 'lo', 136 => 'ug',
95
95
  8 => 'pt', 32 => 'ru', 56 => 'tk', 80 => 'vi', 137 => 'dz',
96
96
  9 => 'no', 33 => 'zh-CN', 57 => 'mn-MN', 81 => 'id', 138 => 'jv',
97
- 10 => 'he', 34 => 'nl', 58 => 'mn-CN', 82 => 'tl', 139 => 'su',
97
+ 10 => 'he', 34 => 'nl-BE', 58 => 'mn-CN', 82 => 'tl', 139 => 'su',
98
98
  11 => 'ja', 35 => 'ga', 59 => 'ps', 83 => 'ms-MY', 140 => 'gl',
99
99
  12 => 'ar', 36 => 'sq', 60 => 'ku', 84 => 'ms-BN', 141 => 'af',
100
100
  13 => 'fi', 37 => 'ro', 61 => 'ks', 85 => 'am', 142 => 'br',
101
- 14 => 'iu', 38 => 'cs', 62 => 'sd', 86 => 'ti', 144 => 'gd',
102
- 15 => 'is', 39 => 'sk', 63 => 'bo', 87 => 'om', 145 => 'vg',
101
+ 14 => 'el', 38 => 'cs', 62 => 'sd', 86 => 'ti', 144 => 'gd',
102
+ 15 => 'is', 39 => 'sk', 63 => 'bo', 87 => 'om', 145 => 'gv',
103
103
  16 => 'mt', 40 => 'sl', 64 => 'ne', 88 => 'so', 146 => 'ga',
104
- 17 => 'tr', 41 => 'yi', 65 => 'sa', 89 => 'sw', 147 => 'rar',
104
+ 17 => 'tr', 41 => 'yi', 65 => 'sa', 89 => 'sw', 147 => 'to',
105
105
  18 => 'hr', 42 => 'sr', 66 => 'mr', 90 => 'rw', 148 => 'el',
106
106
  19 => 'zh-TW', 43 => 'mk', 67 => 'bn', 91 => 'rn', 149 => 'kl',
107
107
  20 => 'ur', 44 => 'bg', 68 => 'as', 92 => 'ny', 150 => 'az',
@@ -60,7 +60,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
60
60
  use Image::ExifTool::Exif;
61
61
  use Image::ExifTool::GPS;
62
62
 
63
- $VERSION = '3.69';
63
+ $VERSION = '3.70';
64
64
 
65
65
  sub LensIDConv($$$);
66
66
  sub ProcessNikonAVI($$$);
@@ -379,6 +379,7 @@ sub GetAFPointGrid($$;$);
379
379
  '99 48 76 76 24 24 4B 0E' => 'Sigma APO Macro 150mm F2.8 EX DG OS HSM', #(Christian Hesse)
380
380
  '48 4C 7C 7C 2C 2C 4B 02' => 'Sigma APO Macro 180mm F3.5 EX DG HSM',
381
381
  '48 4C 7D 7D 2C 2C 4B 02' => 'Sigma APO Macro 180mm F3.5 EX DG HSM',
382
+ 'F4 4C 7C 7C 2C 2C 4B 02' => 'Sigma APO Macro 180mm F3.5 EX DG HSM', #Bruno
382
383
  '94 48 7C 7C 24 24 4B 0E' => 'Sigma APO Macro 180mm F2.8 EX DG OS HSM', #MichaelTapes (HSM from ref 8)
383
384
  '48 54 8E 8E 24 24 4B 02' => 'Sigma APO 300mm F2.8 EX DG HSM',
384
385
  'FB 54 8E 8E 24 24 4B 02' => 'Sigma APO 300mm F2.8 EX DG HSM', #26
@@ -4470,6 +4471,7 @@ my %nikonFocalConversions = (
4470
4471
  0x30 => {
4471
4472
  Name => 'LensID',
4472
4473
  Condition => '$$self{NewLensData}',
4474
+ Notes => 'tags from here onward used for Nikkor Z lenses only',
4473
4475
  Format => 'int16u',
4474
4476
  PrintConv => {
4475
4477
  1 => 'Nikkor Z 24-70mm f/4 S',
@@ -4477,6 +4479,9 @@ my %nikonFocalConversions = (
4477
4479
  4 => 'Nikkor Z 35mm f/1.8 S',
4478
4480
  9 => 'Nikkor Z 50mm f/1.8 S',
4479
4481
  13 => 'Nikkor Z 24-70mm f/2.8 S',
4482
+ # missing from this list:
4483
+ # Nikkor Z 85mm f/1.8 S
4484
+ # Nikkor Z 58mm f/0.95 S Noct (coming soon)
4480
4485
  },
4481
4486
  },
4482
4487
  0x36 => {
@@ -4507,6 +4512,15 @@ my %nikonFocalConversions = (
4507
4512
  PrintConv => '"$val mm"',
4508
4513
  PrintConvInv => '$val=~s/\s*mm$//;$val',
4509
4514
  },
4515
+ 0x4f => {
4516
+ Name => 'FocusDistance',
4517
+ Condition => '$$self{NewLensData}',
4518
+ # (perhaps int16u Format? -- although upper byte would always be zero)
4519
+ ValueConv => '0.01 * 10**($val/40)', # in m
4520
+ ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0',
4521
+ PrintConv => '$val ? sprintf("%.2f m",$val) : "inf"',
4522
+ PrintConvInv => '$val eq "inf" ? 0 : $val =~ s/\s*m$//, $val',
4523
+ },
4510
4524
  );
4511
4525
 
4512
4526
  # Unknown Nikon lens data (note: data may need decrypting after byte 4)
@@ -114,10 +114,10 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
114
114
  Also according to the PNG specification, there is no restriction on the
115
115
  location of text-type chunks (tEXt, zTXt and iTXt). However, certain
116
116
  utilities (including some Apple and Adobe utilities) won't read the XMP iTXt
117
- chunk (and at least one utility won't read other text chunks) that come
118
- after the IDAT chunk. For this reason, ExifTool 11.63 and later write all
119
- text chunks (including XMP) before IDAT, and will move existing text chunks
120
- up from after IDAT.
117
+ chunk if it comes after the IDAT chunk, and at least one utility won't read
118
+ other text chunks like this. For this reason, ExifTool 11.63 and later
119
+ create new text chunks (including XMP) before IDAT, and will move existing
120
+ text chunks up from after IDAT.
121
121
  },
122
122
  bKGD => {
123
123
  Name => 'BackgroundColor',
@@ -376,14 +376,17 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
376
376
  0 => {
377
377
  Name => 'PixelsPerUnitX',
378
378
  Format => 'int32u',
379
+ Notes => 'default 2834',
379
380
  },
380
381
  4 => {
381
382
  Name => 'PixelsPerUnitY',
382
383
  Format => 'int32u',
384
+ Notes => 'default 2834',
383
385
  },
384
386
  8 => {
385
387
  Name => 'PixelUnits',
386
388
  PrintConv => { 0 => 'Unknown', 1 => 'meters' },
389
+ Notes => 'default meters',
387
390
  },
388
391
  );
389
392
 
@@ -44,7 +44,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
44
44
  use Image::ExifTool::Exif;
45
45
  use Image::ExifTool::GPS;
46
46
 
47
- $VERSION = '2.36';
47
+ $VERSION = '2.37';
48
48
 
49
49
  sub ProcessMOV($$;$);
50
50
  sub ProcessKeys($$$);
@@ -6021,7 +6021,7 @@ my %eeBox = (
6021
6021
  Format => 'int16u',
6022
6022
  RawConv => '$val ? $val : undef',
6023
6023
  # allow both Macintosh (for MOV files) and ISO (for MP4 files) language codes
6024
- ValueConv => '$val < 0x400 ? $val : pack "C*", map { (($val>>$_)&0x1f)+0x60 } 10, 5, 0',
6024
+ ValueConv => '($val < 0x400 or $val == 0x7fff) ? $val : pack "C*", map { (($val>>$_)&0x1f)+0x60 } 10, 5, 0',
6025
6025
  PrintConv => q{
6026
6026
  return $val unless $val =~ /^\d+$/;
6027
6027
  require Image::ExifTool::Font;
@@ -8658,13 +8658,19 @@ ItemID: foreach $id (keys %$items) {
8658
8658
  next if not $len and $pos;
8659
8659
  my $str = substr($val, $pos, $len);
8660
8660
  my $langInfo;
8661
- if ($lang < 0x400 and $str !~ /^\xfe\xff/) {
8661
+ if (($lang < 0x400 or $lang == 0x7fff) and $str !~ /^\xfe\xff/) {
8662
8662
  # this is a Macintosh language code
8663
8663
  # a language code of 0 is Macintosh english, so treat as default
8664
8664
  if ($lang) {
8665
- # use Font.pm to look up language string
8666
- require Image::ExifTool::Font;
8667
- $lang = $Image::ExifTool::Font::ttLang{Macintosh}{$lang};
8665
+ if ($lang == 0x7fff) {
8666
+ # technically, ISO 639-2 doesn't have a 2-character
8667
+ # equivalent for 'und', but use 'un' anyway
8668
+ $lang = 'un';
8669
+ } else {
8670
+ # use Font.pm to look up language string
8671
+ require Image::ExifTool::Font;
8672
+ $lang = $Image::ExifTool::Font::ttLang{Macintosh}{$lang};
8673
+ }
8668
8674
  }
8669
8675
  # the spec says only "Macintosh text encoding", but
8670
8676
  # allow this to be configured by the user
@@ -2588,7 +2588,7 @@ my %tagLookup = (
2588
2588
  'focusareaselection' => { 273 => '15.2' },
2589
2589
  'focuscontinuous' => { 34 => 0x20 },
2590
2590
  'focusdisplayaiservoandmf' => { 79 => 0x515 },
2591
- 'focusdistance' => { 155 => 'FocusDistance', 172 => 0x13, 178 => 0x49bb, 208 => 0x9, 209 => 0xa, 213 => 0xb, 282 => 0x305, 296 => 0x0, 300 => 0x304, 301 => 0x304 },
2591
+ 'focusdistance' => { 155 => 'FocusDistance', 172 => 0x13, 178 => 0x49bb, 208 => 0x9, 209 => 0xa, 213 => [0xb,0x4f], 282 => 0x305, 296 => 0x0, 300 => 0x304, 301 => 0x304 },
2592
2592
  'focusdistancelower' => { 7 => 0x45, 9 => 0x8e, 11 => 0x45, 13 => 0x56, 14 => 0x45, 15 => 0x45, 16 => 0x52, 17 => 0x52, 18 => 0x56, 20 => 0x52, 21 => 0x8e, 22 => 0x59, 23 => 0x57, 24 => 0x8e, 25 => 0x94, 26 => 0x95, 27 => 0xa7, 28 => 0x56, 29 => 0xa7, 55 => 0x15, 73 => 0x14 },
2593
2593
  'focusdistanceupper' => { 7 => 0x43, 9 => 0x8c, 11 => 0x43, 13 => 0x54, 14 => 0x43, 15 => 0x43, 16 => 0x50, 17 => 0x50, 18 => 0x54, 20 => 0x50, 21 => 0x8c, 22 => 0x57, 23 => 0x55, 24 => 0x8c, 25 => 0x92, 26 => 0x93, 27 => 0xa5, 28 => 0x54, 29 => 0xa5, 55 => 0x14, 73 => 0x13 },
2594
2594
  'focusholdbutton' => { 175 => 0x44 },
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 22996 tags, with 15044 unique tag names.
15
+ They contain a total of 22997 tags, with 15044 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -12070,6 +12070,7 @@ Tags found in the encrypted LensData from cameras such as the Z6 and Z7.
12070
12070
  54 MaxAperture int16u
12071
12071
  56 FNumber int16u
12072
12072
  60 FocalLength int16u
12073
+ 79 FocusDistance int8u
12073
12074
 
12074
12075
  =head3 Nikon LensDataUnknown Tags
12075
12076
 
@@ -22535,10 +22536,10 @@ this data as additional PNG chunks.
22535
22536
  Also according to the PNG specification, there is no restriction on the
22536
22537
  location of text-type chunks (tEXt, zTXt and iTXt). However, certain
22537
22538
  utilities (including some Apple and Adobe utilities) won't read the XMP iTXt
22538
- chunk (and at least one utility won't read other text chunks) that come
22539
- after the IDAT chunk. For this reason, ExifTool 11.63 and later write all
22540
- text chunks (including XMP) before IDAT, and will move existing text chunks
22541
- up from after IDAT.
22539
+ chunk if it comes after the IDAT chunk, and at least one utility won't read
22540
+ other text chunks like this. For this reason, ExifTool 11.63 and later
22541
+ create new text chunks (including XMP) before IDAT, and will move existing
22542
+ text chunks up from after IDAT.
22542
22543
 
22543
22544
  Tag ID Tag Name Writable
22544
22545
  ------ -------- --------
@@ -892,7 +892,7 @@ sub WriteXMP($$;$)
892
892
  # get hash of all information we want to change
893
893
  # (sorted by tag name so alternate languages come last, but with structures
894
894
  # first so flattened tags may be used to override individual structure elements)
895
- my @tagInfoList;
895
+ my (@tagInfoList, $delLangPath, %delLangPaths, %delAllLang, $firstNewPath);
896
896
  my $writeGroup = $$dirInfo{WriteGroup};
897
897
  foreach $tagInfo (sort ByTagName $et->GetNewTagInfoList()) {
898
898
  next unless $et->GetGroup($tagInfo, 0) eq 'XMP';
@@ -1021,7 +1021,30 @@ sub WriteXMP($$;$)
1021
1021
  my $nvHash = $et->GetNewValueHash($tagInfo);
1022
1022
  my $overwrite = $et->IsOverwriting($nvHash);
1023
1023
  my $writable = $$tagInfo{Writable} || '';
1024
- my (%attrs, $deleted, $added, $existed);
1024
+ my (%attrs, $deleted, $added, $existed, $newLang);
1025
+ # set up variables to save/restore paths of deleted lang-alt tags
1026
+ if ($writable eq 'lang-alt') {
1027
+ $newLang = lc($$tagInfo{LangCode} || 'x-default');
1028
+ if ($delLangPath and $delLangPath eq $path) {
1029
+ # restore paths of deleted entries for this language
1030
+ @delPaths = @{$delLangPaths{$newLang}} if $delLangPaths{$newLang};
1031
+ } else {
1032
+ undef %delLangPaths;
1033
+ $delLangPath = $path; # base path for deleted lang-alt tags
1034
+ undef %delAllLang;
1035
+ undef $firstNewPath; # reset first path for new lang-alt tag
1036
+ }
1037
+ if (%delAllLang) {
1038
+ # add missing paths to delete list for entries where all languages were deleted
1039
+ my ($prefix, $reSort);
1040
+ foreach $prefix (keys %delAllLang) {
1041
+ next if grep /^$prefix/, @delPaths;
1042
+ push @delPaths, "${prefix}10";
1043
+ $reSort = 1;
1044
+ }
1045
+ @delPaths = sort @delPaths if $reSort;
1046
+ }
1047
+ }
1025
1048
  # delete existing entry if necessary
1026
1049
  if ($isStruct) {
1027
1050
  # delete all structure (or pseudo-structure) elements
@@ -1034,7 +1057,7 @@ sub WriteXMP($$;$)
1034
1057
  # take attributes from old values if they exist
1035
1058
  %attrs = %{$$cap[1]};
1036
1059
  if ($overwrite) {
1037
- my ($oldLang, $delLang, $addLang, @matchingPaths, $langPathPat);
1060
+ my ($oldLang, $delLang, $addLang, @matchingPaths, $langPathPat, %langsHere);
1038
1061
  # check to see if this is an indexed list item
1039
1062
  if ($path =~ / /) {
1040
1063
  my $pp;
@@ -1047,19 +1070,20 @@ sub WriteXMP($$;$)
1047
1070
  foreach $path (@matchingPaths) {
1048
1071
  my ($val, $attrs) = @{$capture{$path}};
1049
1072
  if ($writable eq 'lang-alt') {
1073
+ # get original language code (lc for comparisons)
1074
+ $oldLang = lc($$attrs{'xml:lang'} || 'x-default');
1050
1075
  # revert to original overwrite flag if this is in a different structure
1051
1076
  if (not $langPathPat or $path !~ /^$langPathPat$/) {
1052
1077
  $overwrite = $oldOverwrite;
1053
1078
  ($langPathPat = $path) =~ s/\d+$/\\d+/;
1054
1079
  }
1080
+ # remember languages in this lang-alt list
1081
+ $langsHere{$langPathPat}{$oldLang} = 1;
1055
1082
  unless (defined $addLang) {
1056
1083
  # add to lang-alt list by default if creating this tag from scratch
1057
1084
  $addLang = $$nvHash{IsCreating} ? 1 : 0;
1058
1085
  }
1059
- # get original language code (lc for comparisons)
1060
- $oldLang = lc($$attrs{'xml:lang'} || 'x-default');
1061
1086
  if ($overwrite < 0) {
1062
- my $newLang = lc($$tagInfo{LangCode} || 'x-default');
1063
1087
  next unless $oldLang eq $newLang;
1064
1088
  # only add new tag if we are overwriting this one
1065
1089
  # (note: this won't match if original XML contains CDATA!)
@@ -1100,7 +1124,23 @@ sub WriteXMP($$;$)
1100
1124
  # save attributes and path from first deleted property
1101
1125
  # so we can replace it exactly
1102
1126
  %attrs = %$attrs unless @delPaths;
1103
- push @delPaths, $path;
1127
+ if ($writable eq 'lang-alt') {
1128
+ $langsHere{$langPathPat}{$oldLang} = 0; # (lang was deleted)
1129
+ }
1130
+ # save deleted paths so we can replace the same elements
1131
+ # (separately for each language of a lang-alt list)
1132
+ if ($writable ne 'lang-alt' or $oldLang eq $newLang) {
1133
+ push @delPaths, $path;
1134
+ } else {
1135
+ $delLangPaths{$oldLang} or $delLangPaths{$oldLang} = [ ];
1136
+ push @{$delLangPaths{$oldLang}}, $path;
1137
+ }
1138
+ # keep track of paths where we deleted all languages of a lang-alt tag
1139
+ if ($delLang) {
1140
+ my $p;
1141
+ ($p = $path) =~ s/\d+$//;
1142
+ $delAllLang{$p} = 1;
1143
+ }
1104
1144
  # delete this tag
1105
1145
  delete $capture{$path};
1106
1146
  ++$changed;
@@ -1114,11 +1154,25 @@ sub WriteXMP($$;$)
1114
1154
  next unless @delPaths or $$tagInfo{List} or $addLang;
1115
1155
  if (@delPaths) {
1116
1156
  $path = shift @delPaths;
1157
+ # make sure new path is unique
1158
+ while ($capture{$path}) {
1159
+ last unless $path =~ s/ \d(\d+)$/' '.length($1+1).($1+1)/e;
1160
+ }
1117
1161
  $deleted = 1;
1118
1162
  } else {
1119
1163
  # don't change tag if we couldn't delete old copy
1120
1164
  # unless this is a list or an lang-alt tag
1121
1165
  next unless $$tagInfo{List} or $oldLang;
1166
+ # avoid adding duplicate entry to lang-alt in a list
1167
+ if ($writable eq 'lang-alt' and %langsHere) {
1168
+ foreach (sort keys %langsHere) {
1169
+ next unless $path =~ /^$_$/;
1170
+ last unless $langsHere{$_}{$newLang};
1171
+ $path =~ /(.* )\d(\d+)(.*? \d+)$/ or $et->Error('Internal error writing lang-alt list'), last;
1172
+ my $nxt = $2 + 1;
1173
+ $path = $1 . length($nxt) . ($nxt) . $3; # step to next index
1174
+ }
1175
+ }
1122
1176
  # (match last index to put in same lang-alt list for Bag of lang-alt items)
1123
1177
  $path =~ m/.* (\d+)/g or warn "Internal error: no list index!\n", next;
1124
1178
  $added = $1;
@@ -1126,7 +1180,15 @@ sub WriteXMP($$;$)
1126
1180
  } else {
1127
1181
  # we are never overwriting, so we must be adding to a list
1128
1182
  # match the last index unless this is a list of lang-alt lists
1129
- my $pat = $writable eq 'lang-alt' ? '.* (\d+)(.*? \d+)' : '.* (\d+)';
1183
+ my $pat = '.* (\d+)';
1184
+ if ($writable eq 'lang-alt') {
1185
+ if ($firstNewPath) {
1186
+ $path = $firstNewPath;
1187
+ $overwrite = 1; # necessary to put x-default entry first below
1188
+ } else {
1189
+ $pat = '.* (\d+)(.*? \d+)';
1190
+ }
1191
+ }
1130
1192
  if ($path =~ m/$pat/g) {
1131
1193
  $added = $1;
1132
1194
  # set position to end of matching index number
@@ -1143,7 +1205,7 @@ sub WriteXMP($$;$)
1143
1205
  $$tagInfo{LangCode} eq 'x-default'))
1144
1206
  {
1145
1207
  my $saveCap = $capture{$path};
1146
- for (;;) {
1208
+ while ($saveCap) {
1147
1209
  my $p = $path;
1148
1210
  substr($p, $pos, $len) = length($nxt) . $nxt;
1149
1211
  # increment index in the path of the existing item
@@ -1155,10 +1217,9 @@ sub WriteXMP($$;$)
1155
1217
  }
1156
1218
  } else {
1157
1219
  # add to end of list
1158
- for (;;) {
1220
+ while ($capture{$path}) {
1159
1221
  my $try = length($nxt) . $nxt;
1160
1222
  substr($path, $pos, $len) = $try;
1161
- last unless $capture{$path};
1162
1223
  $len = length $try;
1163
1224
  ++$nxt;
1164
1225
  }
@@ -1181,8 +1242,10 @@ sub WriteXMP($$;$)
1181
1242
  my @newValues = $et->GetNewValue($nvHash) or next;
1182
1243
 
1183
1244
  # set language attribute for lang-alt lists
1184
- $attrs{'xml:lang'} = $$tagInfo{LangCode} || 'x-default' if $writable eq 'lang-alt';
1185
-
1245
+ if ($writable eq 'lang-alt') {
1246
+ $attrs{'xml:lang'} = $$tagInfo{LangCode} || 'x-default';
1247
+ $firstNewPath = $path if defined $added; # save path of first lang-alt tag added
1248
+ }
1186
1249
  # add new value(s) to %capture hash
1187
1250
  my $subIdx;
1188
1251
  for (;;) {
@@ -1234,6 +1297,10 @@ sub WriteXMP($$;$)
1234
1297
  $subIdx = length($subIdx) . $subIdx;
1235
1298
  } elsif (@delPaths) {
1236
1299
  $path = shift @delPaths;
1300
+ # make sure new path is unique
1301
+ while ($capture{$path}) {
1302
+ last unless $path =~ s/ \d(\d+)$/' '.length($1+1).($1+1)/e;
1303
+ }
1237
1304
  next;
1238
1305
  } else {
1239
1306
  $subIdx = '10';
@@ -1273,6 +1273,8 @@ sub SetNewValuesFromFile($$;@)
1273
1273
  QuickTimeUTC => $$options{QuickTimeUTC},
1274
1274
  RequestAll => $$options{RequestAll} || 1, # (is this still necessary now that RequestTags are being set?)
1275
1275
  RequestTags => $$options{RequestTags},
1276
+ SaveFormat => $$options{SaveFormat},
1277
+ SavePath => $$options{SavePath},
1276
1278
  ScanForXMP => $$options{ScanForXMP},
1277
1279
  StrictDate => defined $$options{StrictDate} ? $$options{StrictDate} : 1,
1278
1280
  Struct => $structOpt,
@@ -1738,6 +1740,8 @@ sub SaveNewValues($)
1738
1740
  # Notes: Restores saved new values, but currently doesn't restore them in the
1739
1741
  # original order, so there may be some minor side-effects when restoring tags
1740
1742
  # with overlapping groups. eg) XMP:Identifier, XMP-dc:Identifier
1743
+ # Also, this doesn't do the right thing for list-type tags which accumulate
1744
+ # values across a save point
1741
1745
  sub RestoreNewValues($)
1742
1746
  {
1743
1747
  my $self = shift;
@@ -2621,6 +2625,8 @@ sub GetAllGroups($)
2621
2625
 
2622
2626
  $family == 3 and return('Doc#', 'Main');
2623
2627
  $family == 4 and return('Copy#');
2628
+ $family == 5 and return('[too many possibilities to list]');
2629
+ $family == 6 and return(@Image::ExifTool::Exif::formatName[1..$#Image::ExifTool::Exif::formatName]);
2624
2630
 
2625
2631
  LoadAllTables(); # first load all our tables
2626
2632
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.63
3
+ Version: 11.64
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('11.63.0')
4
+ VERSION = Gem::Version.new('11.64.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: 11.63.0
4
+ version: 11.64.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: 2019-08-20 00:00:00.000000000 Z
12
+ date: 2019-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -192,6 +192,7 @@ files:
192
192
  - bin/arg_files/xmp2pdf.args
193
193
  - bin/config_files/age.config
194
194
  - bin/config_files/bibble.config
195
+ - bin/config_files/blueskysea.config
195
196
  - bin/config_files/convert_regions.config
196
197
  - bin/config_files/dji.config
197
198
  - bin/config_files/example.config