exiftool_vendored 12.64.1 → 12.67.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c5856e8cbcaf8e5f8ff633ceb9a4150426019668a54304609a7d04190d81324
4
- data.tar.gz: 19ba2a9b10f76de0471eb0fa3da47ad1d68c79a8b1076dda1aa3d56c49b08c25
3
+ metadata.gz: 7a6389f7140433c97eea74b3a6b428d8c5d940dc4d295741a9a69027ee561079
4
+ data.tar.gz: b28eb642d02cf914b516e1e5e2a40588548b7ab77158a1cf78ee6b76334ad682
5
5
  SHA512:
6
- metadata.gz: 470e7fbc1cd13d0d108424eefab70069a222a26ca843e17d772c2eb0055eb99654718efc0a514723c67571a4c65a43ded42a7184f1a967fa72ef56b97bc07994
7
- data.tar.gz: 8d4d9fcdf6d33422cb00c0c503e09c676d8b62363827f84ba83ca69efe9780224d1cca729c3317ee2a421800773f55e6bf3e2b1ecf7997ce0d8971e171a7a086
6
+ metadata.gz: 0b6f0e36a66b21a6e6d9635484cba7d0ad9f94aabfede322548a0f7e31e100aa0c75766f4c0248fba3be575e734ef698b270086b5a35ba3c5164118090cc02f6
7
+ data.tar.gz: 15859db49991094833a0e8cb4ac64604b8235abc48fdb0baea28f4d4c6a1260c9b241be4e4b4ceabc4ca840eb4da9386546f843913702488109ab2393fb1465f
data/bin/Changes CHANGED
@@ -7,6 +7,52 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.60. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Sept. 19, 2023 - Version 12.67
11
+
12
+ - Added a new Pentax LensType (thanks dmont)
13
+ - Added a new FujiFilm FilmMode and FaceElementTypes values (thanks Greybeard)
14
+ - Fixed error writing new DataMining tag where URI prefix wasn't being
15
+ properly added to the value
16
+
17
+ Sept. 19, 2023 - Version 12.66
18
+
19
+ - Added a few new Canon LensType values (thanks Norbert Wasser)
20
+ - Added conversions for a few Apple:ImageCaptureType values
21
+ - Added new XMP tag for PLUS version 2.0.1
22
+ - Added a new CanonModelID (thanks Laurent Clevy)
23
+ - Decode another tag from Canon 1DS raw images (Hubert Figuiere, github #219)
24
+ - Decode JPGCompression for newer Nikon models (thanks Warren Hatch)
25
+ - Fixed bug introduced in 12.65 where duplicate tags were not returned even
26
+ when the groups where specified explicitly
27
+ - API Changes:
28
+ - Added WindowsWideFile option
29
+
30
+ Aug. 10, 2023 - Version 12.65
31
+
32
+ - Added a new QuickTime Keys tag
33
+ - Added a new CanonModelID (thanks Laurent Clevy)
34
+ - Added a new Canon LensType (thanks Norbert Wasser)
35
+ - Added number in brackets to converted Samsung MCCData value
36
+ - Decode a number of new Sony tags (thanks Jos Roost)
37
+ - Decode a few new FlashPix tags (github #217)
38
+ - Improved decoding of Nikon Z9 firmware 4.0 tags (thanks Warren Hatch)
39
+ - Improved parsing of PDF:Keywords to support semicolon-separated lists
40
+ - Enhanced -api option to show list of available options if no argument is
41
+ provided
42
+ - Lowered priority of IFD1 tags in ARW images so IFD0/SubIFD take precedence
43
+ - Changed QuickTime tag names for atID (AlbumTitleID to ArtistID) and plID
44
+ (PlayListID to AlbumID) (github issue #216), and added cmID (ComposerID)
45
+ - Changed Apple:MediaGroupUUID tag name back to ContentIdentifier
46
+ - Patched the -d option to handle the %s format code internally when writing
47
+ (avoids problems due to inconsistent behaviour of this format code in the
48
+ strptime function on different systems)
49
+ - Patched patch of version 12.32 to restore ability to read from named pipes
50
+ - Fixed bug which could cause a hang when processing a corrupt BigTIFF image
51
+ - Fixed document number for auxiliary image metadata in HEIC files
52
+ - Fixed misspelt Apple tag name (thanks Neal Krawetz)
53
+ - API Changes:
54
+ - Added AvailableOptions method
55
+
10
56
  June 28, 2023 - Version 12.64
11
57
 
12
58
  - Added a new Sony LensType (thanks Jos Roost)
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.64"
53
+ "version" : "12.67"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: 0
32
32
  requires:
33
33
  perl: 5.004
34
- version: 12.64
34
+ version: 12.67
data/bin/README CHANGED
@@ -108,8 +108,8 @@ your home directory, then you would type the following commands in a
108
108
  terminal window to extract and run ExifTool:
109
109
 
110
110
  cd ~/Desktop
111
- gzip -dc Image-ExifTool-12.64.tar.gz | tar -xf -
112
- cd Image-ExifTool-12.64
111
+ gzip -dc Image-ExifTool-12.67.tar.gz | tar -xf -
112
+ cd Image-ExifTool-12.67
113
113
  ./exiftool t/images/ExifTool.jpg
114
114
 
115
115
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.64';
14
+ my $version = '12.67';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -814,11 +814,17 @@ for (;;) {
814
814
  /^(-?)(a|duplicates)$/i and $mt->Options(Duplicates => ($1 ? 0 : 1)), next;
815
815
  if ($a eq 'api') {
816
816
  my $opt = shift;
817
- defined $opt or Error("Expected OPT[=VAL] argument for -api option\n"), $badCmd=1, next;
818
- my $val = ($opt =~ s/=(.*)//s) ? $1 : 1;
819
- # empty string means an undefined value unless ^= is used
820
- $val = undef unless $opt =~ s/\^$// or length $val;
821
- $mt->Options($opt => $val);
817
+ if (defined $opt and length $opt) {
818
+ my $val = ($opt =~ s/=(.*)//s) ? $1 : 1;
819
+ # empty string means an undefined value unless ^= is used
820
+ $val = undef unless $opt =~ s/\^$// or length $val;
821
+ $mt->Options($opt => $val);
822
+ } else {
823
+ print "Available API Options:\n";
824
+ my $availableOptions = Image::ExifTool::AvailableOptions();
825
+ printf(" %-17s - %s\n", $$_[0], $$_[2]) foreach @$availableOptions;
826
+ $helped = 1;
827
+ }
822
828
  next;
823
829
  }
824
830
  /^arg(s|format)$/i and $argFormat = 1, next;
@@ -2874,7 +2880,7 @@ sub SetImageInfo($$$)
2874
2880
  }
2875
2881
  unless ($isStdout) {
2876
2882
  $outfile = NextUnusedFilename($outfile);
2877
- if ($et->Exists($outfile) and not $doSetFileName) {
2883
+ if ($et->Exists($outfile, 1) and not $doSetFileName) {
2878
2884
  Warn "Error: '${outfile}' already exists - $infile\n";
2879
2885
  EFile($infile);
2880
2886
  ++$countBadWr;
@@ -3005,7 +3011,7 @@ sub SetImageInfo($$$)
3005
3011
  $outfile = Image::ExifTool::GetNewFileName(defined $outfile ? $outfile : $file, $newDir);
3006
3012
  }
3007
3013
  $outfile = NextUnusedFilename($outfile, $infile);
3008
- if ($et->Exists($outfile)) {
3014
+ if ($et->Exists($outfile, 1)) {
3009
3015
  if ($infile eq $outfile) {
3010
3016
  undef $outfile; # not changing the file name after all
3011
3017
  # (allow for case-insensitive filesystems)
@@ -4233,7 +4239,7 @@ sub NextUnusedFilename($;$)
4233
4239
  }
4234
4240
  $filename .= substr($fmt, $pos); # add rest of file name
4235
4241
  # return now with filename unless file exists
4236
- return $filename unless ($mt->Exists($filename) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
4242
+ return $filename unless ($mt->Exists($filename, 1) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
4237
4243
  if (defined $okfile) {
4238
4244
  return $filename if $filename eq $okfile;
4239
4245
  my ($fn, $ok) = (AbsPath($filename), AbsPath($okfile));
@@ -4313,7 +4319,7 @@ sub OpenOutputFile($;@)
4313
4319
  $outfile .= $textOut;
4314
4320
  }
4315
4321
  my $mode = '>';
4316
- if ($mt->Exists($outfile)) {
4322
+ if ($mt->Exists($outfile, 1)) {
4317
4323
  unless ($textOverwrite) {
4318
4324
  Warn "Output file $outfile already exists for $file\n";
4319
4325
  return ();
@@ -5576,7 +5582,7 @@ with this command:
5576
5582
 
5577
5583
  produces output like this:
5578
5584
 
5579
- -- Generated by ExifTool 12.64 --
5585
+ -- Generated by ExifTool 12.67 --
5580
5586
  File: a.jpg - 2003:10:31 15:44:19
5581
5587
  (f/5.6, 1/60s, ISO 100)
5582
5588
  File: b.jpg - 2006:05:23 11:57:38
@@ -6516,13 +6522,15 @@ load exiftool for each invocation.
6516
6522
 
6517
6523
  =over 5
6518
6524
 
6519
- =item B<-api> I<OPT[[^]=[VAL]]>
6525
+ =item B<-api> [I<OPT[[^]=[VAL]]>]
6520
6526
 
6521
6527
  Set ExifTool API option. I<OPT> is an API option name. The option value is
6522
6528
  set to 1 if I<=VAL> is omitted. If I<VAL> is omitted, the option value is
6523
- set to undef if C<=> is used, or an empty string with C<^=>. See
6524
- L<Image::ExifTool Options|Image::ExifTool/Options> for a list of available
6525
- API options. This overrides API options set via the config file.
6529
+ set to undef if C<=> is used, or an empty string with C<^=>. If I<OPT> is
6530
+ not specified a list of available options is returned. The option name is
6531
+ not case senstive, but the option values are. See
6532
+ L<Image::ExifTool Options|Image::ExifTool/Options> for option details. This
6533
+ overrides API options set via the config file.
6526
6534
 
6527
6535
  =item B<-common_args>
6528
6536
 
@@ -7316,10 +7324,13 @@ CreateDate and FileNumber tags, in the form "20060507_118-1861.jpg".
7316
7324
 
7317
7325
  =head1 GEOTAGGING EXAMPLES
7318
7326
 
7319
- ExifTool implements geotagging via 3 special tags: Geotag (which for
7320
- convenience is also implemented as an exiftool option), Geosync and Geotime.
7321
- The examples below highlight some geotagging features. See
7322
- L<https://exiftool.org/geotag.html> for additional documentation.
7327
+ ExifTool implements geotagging from GPS log files via 3 special tags: Geotag
7328
+ (which for convenience is also implemented as an exiftool option), Geosync
7329
+ and Geotime. The examples below highlight some geotagging features. See
7330
+ L<https://exiftool.org/geotag.html> for additional documentation. (Note
7331
+ that geotagging from known GPS coordinates is done by writing the
7332
+ L<GPS tags|Image::ExifTool::TagNames/GPS Tags> directly rather than using
7333
+ the B<-geotag> option.)
7323
7334
 
7324
7335
  =over 5
7325
7336
 
@@ -16,7 +16,7 @@ use vars qw($VERSION);
16
16
  use Image::ExifTool::Exif;
17
17
  use Image::ExifTool::PLIST;
18
18
 
19
- $VERSION = '1.09';
19
+ $VERSION = '1.11';
20
20
 
21
21
  sub ConvertPLIST($$);
22
22
 
@@ -110,24 +110,32 @@ sub ConvertPLIST($$);
110
110
  },
111
111
  # 0x0010 - int32s: 1 (SphereStatus, ref 2)
112
112
  0x0011 => { # (if defined, there is a live photo associated with the video, #forum13565) (AssetIdentifier, ref 2)
113
- Name => 'MediaGroupUUID', #NealKrawetz private communication
114
- # (changed in 12.19 from Name => 'ContentIdentifier', #forum8750)
113
+ Name => 'ContentIdentifier',
114
+ Notes => 'called MediaGroupUUID when it appears as an XAttr',
115
+ # - originally called ContentIdentifier, forum8750
116
+ # - changed in 12.19 to MediaGroupUUID, NealKrawetz private communication
117
+ # - changed back to ContentIdentifier since Apple writes this to Keys content.identifier (forum14874)
115
118
  Writable => 'string',
119
+
116
120
  },
117
121
  # 0x0012 - (QRMOutputType, ref 2)
118
122
  # 0x0013 - (SphereExternalForceOffset, ref 2)
119
123
  0x0014 => { # (StillImageCaptureType, ref 2)
120
124
  Name => 'ImageCaptureType',
121
125
  Writable => 'int32s',
122
- Unknown => 1, # (don't know what the values mean)
123
126
  # seen: 1,2,3,4,5,10,12
127
+ PrintConv => { #forum15096
128
+ 1 => 'ProRAW',
129
+ 2 => 'Portrait',
130
+ 10 => 'Photo',
131
+ },
124
132
  },
125
133
  0x0015 => { # (ImageGroupIdentifier, ref 2)
126
134
  Name => 'ImageUniqueID',
127
135
  Writable => 'string',
128
136
  },
129
137
  # 0x0016 - string[29]: "AXZ6pMTOh2L+acSh4Kg630XCScoO\0" (PhotosOriginatingSignature, ref 2)
130
- 0x0017 => { #forum13565 (only valid if MediaGroupUUID exists) (StillImageCaptureFlags, ref 2)
138
+ 0x0017 => { #forum13565 (only valid if MediaGroupUUID/ContentIdentifier exists) (StillImageCaptureFlags, ref 2)
131
139
  Name => 'LivePhotoVideoIndex',
132
140
  Notes => 'divide by RunTimeScale to get time in seconds',
133
141
  },
@@ -153,7 +161,7 @@ sub ConvertPLIST($$);
153
161
  # 0x001e - (OriginatingAppID, ref 2)
154
162
  # 0x001f - int32s: 0,1 (PhotosAppFeatureFlags, ref 2)
155
163
  0x0020 => { # (ImageCaptureRequestIdentifier, ref 2)
156
- Name => 'ImageCaptureReqestID',
164
+ Name => 'ImageCaptureRequestID',
157
165
  Writable => 'string',
158
166
  Unknown => 1,
159
167
  },
@@ -15,7 +15,7 @@ use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
  use Image::ExifTool::Exif;
17
17
 
18
- $VERSION = '1.07';
18
+ $VERSION = '1.08';
19
19
 
20
20
  my $maxOffset = 0x7fffffff; # currently supported maximum data offset/size
21
21
 
@@ -216,6 +216,13 @@ sub ProcessBigIFD($$$)
216
216
  $dirStart = Image::ExifTool::Get64u(\$nextIFD, 0);
217
217
  $dirStart or last;
218
218
  $offName = $nextOffName;
219
+ # protect against infinite loop
220
+ if ($$et{PROCESSED}{$dirStart}) {
221
+ $et->Warn("$dirName pointer references previous $$et{PROCESSED}{$dirStart} directory");
222
+ last;
223
+ } else {
224
+ $$et{PROCESSED}{$dirStart} = $dirName;
225
+ }
219
226
  }
220
227
  return 1;
221
228
  }
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.66';
91
+ $VERSION = '4.68';
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)
@@ -608,18 +608,24 @@ $VERSION = '4.66';
608
608
  '61182.33' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
609
609
  '61182.34' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
610
610
  '61182.35' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
611
- '61182.36' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
612
- '61182.37' => 'Canon RF 800mm F5.6L IS USM', #42
613
- '61182.38' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
614
- '61182.39' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
615
- '61182.40' => 'Canon RF 1200mm F8L IS USM', #42
616
- '61182.41' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
617
- '61182.42' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
618
- '61182.43' => 'Canon RF 135mm F1.8 L IS USM', #42
619
- '61182.44' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
620
- '61182.45' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
611
+ '61182.36' => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
612
+ '61182.37' => 'Canon RF 600mm F4L IS USM + RF2x', #42
613
+ '61182.38' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
614
+ '61182.39' => 'Canon RF 800mm F5.6L IS USM', #42
615
+ '61182.40' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
616
+ '61182.41' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
617
+ '61182.42' => 'Canon RF 1200mm F8L IS USM', #42
618
+ '61182.43' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
619
+ '61182.44' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
620
+ '61182.45' => 'Canon RF 135mm F1.8 L IS USM', #42
621
+ '61182.46' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
622
+ '61182.47' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
623
+ '61182.48' => 'Canon RF 100-300mm F2.8L IS USM', #42
624
+ '61182.49' => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
625
+ '61182.50' => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
626
+ '61182.51' => 'Canon RF 28mm F2.8 STM', #42
621
627
  # we need the RFLensType values for the following...
622
- '61182.46' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
628
+ '61182.52' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
623
629
  65535 => 'n/a',
624
630
  );
625
631
 
@@ -983,6 +989,8 @@ $VERSION = '4.66';
983
989
  0x80000480 => 'EOS R50', #42
984
990
  0x80000481 => 'EOS R6 Mark II', #42
985
991
  0x80000487 => 'EOS R8', #42
992
+ 0x80000491 => 'PowerShot V10', #25
993
+ 0x80000498 => 'EOS R100', #25
986
994
  0x80000520 => 'EOS D2000C', #IB
987
995
  0x80000560 => 'EOS D6000C', #PH (guess)
988
996
  );
@@ -1696,6 +1704,12 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1696
1704
  # Writable => 'int32u',
1697
1705
  # Protected => 2,
1698
1706
  },
1707
+ 0x82 => { #github219 (found on 1DS)
1708
+ Name => 'RawDataLength',
1709
+ # (can't yet write 1DS raw files)
1710
+ # Writable => 'int32u',
1711
+ # Protected => 2,
1712
+ },
1699
1713
  0x83 => { #PH
1700
1714
  Name => 'OriginalDecisionDataOffset',
1701
1715
  Writable => 'int32u',
@@ -6857,6 +6871,8 @@ my %ciMaxFocal = (
6857
6871
  290 => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
6858
6872
  291 => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
6859
6873
  292 => 'Canon RF 600mm F4L IS USM', #GiaZopatti
6874
+ 293 => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
6875
+ 294 => 'Canon RF 600mm F4L IS USM + RF2x', #42
6860
6876
  295 => 'Canon RF 800mm F5.6L IS USM', #42
6861
6877
  296 => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
6862
6878
  297 => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
@@ -6867,6 +6883,10 @@ my %ciMaxFocal = (
6867
6883
  303 => 'Canon RF 135mm F1.8 L IS USM', #42
6868
6884
  304 => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
6869
6885
  305 => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
6886
+ 306 => 'Canon RF 100-300mm F2.8L IS USM', #42
6887
+ 307 => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
6888
+ 308 => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
6889
+ 313 => 'Canon RF 28mm F2.8 STM', #42
6870
6890
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6871
6891
  },
6872
6892
  },
@@ -11,6 +11,7 @@
11
11
  # 4) http://msdn.microsoft.com/en-us/library/aa380374.aspx
12
12
  # 5) http://www.cpan.org/modules/by-authors/id/H/HC/HCARVEY/File-MSWord-0.1.zip
13
13
  # 6) https://msdn.microsoft.com/en-us/library/cc313153(v=office.12).aspx
14
+ # 7) https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-oshared/3ef02e83-afef-4b6c-9585-c109edd24e07
14
15
  #------------------------------------------------------------------------------
15
16
 
16
17
  package Image::ExifTool::FlashPix;
@@ -21,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
21
22
  use Image::ExifTool::Exif;
22
23
  use Image::ExifTool::ASF; # for GetGUID()
23
24
 
24
- $VERSION = '1.45';
25
+ $VERSION = '1.46';
25
26
 
26
27
  sub ProcessFPX($$);
27
28
  sub ProcessFPXR($$$);
@@ -587,6 +588,7 @@ my %fpxFileType = (
587
588
  However, ExifTool will also extract any other information found in the
588
589
  UserDefined properties.
589
590
  },
591
+ # 0x01 => 'CodePage', #7
590
592
  0x02 => 'Category',
591
593
  0x03 => 'PresentationTarget',
592
594
  0x04 => 'Bytes',
@@ -631,12 +633,16 @@ my %fpxFileType = (
631
633
  Name => 'AppVersion',
632
634
  ValueConv => 'sprintf("%d.%.4d",$val >> 16, $val & 0xffff)',
633
635
  },
634
- # 0x18 ? seen -1
636
+ # 0x18 ? seen -1 (DigitalSignature, VtDigSig format, ref 7)
635
637
  # 0x19 ? seen 0
636
638
  # 0x1a ? seen 0
637
639
  # 0x1b ? seen 0
638
640
  # 0x1c ? seen 0,1
639
641
  # 0x1d ? seen 1
642
+ 0x1a => 'ContentType', #7, github#217
643
+ 0x1b => 'ContentStatus', #7, github#217
644
+ 0x1c => 'Language', #7, github#217
645
+ 0x1d => 'DocVersion', #7, github#217
640
646
  # 0x1e ? seen 1
641
647
  # 0x1f ? seen 1,5
642
648
  # 0x20 ? seen 0,5
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.88';
34
+ $VERSION = '1.89';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -670,6 +670,7 @@ my %faceCategories = (
670
670
  0x800 => 'Classic Negative', #forum10536
671
671
  0x900 => 'Bleach Bypass', #forum10890
672
672
  0xa00 => 'Nostalgic Neg', #forum12085
673
+ 0xb00 => 'Reala ACE', #forum15190
673
674
  },
674
675
  },
675
676
  0x1402 => { #2
@@ -897,6 +898,8 @@ my %faceCategories = (
897
898
  25 => 'Aircraft Cockpit',
898
899
  26 => 'Train Front',
899
900
  27 => 'Train Cockpit',
901
+ 28 => 'Animal Head (28)', #forum15192
902
+ 29 => 'Animal Body (29)', #forum15192
900
903
  },'REPEAT'],
901
904
  },
902
905
  # 0x4202 int8u[-1] - number of cooredinates in each rectangle? (ref 11)
@@ -1109,7 +1109,7 @@ sub SetGeoValues($$;$)
1109
1109
  $iExt = $i1;
1110
1110
  }
1111
1111
  if (abs($time - $tn) > $geoMaxExtSecs) {
1112
- $err or $err = 'Time is too far from nearest GPS fix';
1112
+ $err or $err = 'Time is too far from nearest GPS fix'.' '.abs($time-$tn).' '.$geoMaxExtSecs;
1113
1113
  $et->VPrint(2, ' Nearest fix: ', PrintFixTime($tn), "\n") if $verbose > 2;
1114
1114
  $fix = { } if $$geotag{DateTimeOnly};
1115
1115
  } else {