exiftool_vendored 13.02.0 → 13.04.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: 3b02d7fc208b8d2296a64a11ab1c08e1a82eb9d2f3e04443dcef0b2c0cd0a7d6
4
- data.tar.gz: 02d7d674c3975c9462c8adfc139e81c692c5f4a1d5dc298a5b83e1f9c1a4def0
3
+ metadata.gz: 374e7e5a3d68eeca0ec6cb6a40919d056e0731958606daa8bed45a7c4c70daba
4
+ data.tar.gz: 1263e0b2b35852265b4d5352eae7f35d12cffe0277f916799a8498c75482a9be
5
5
  SHA512:
6
- metadata.gz: 04f78c57d35f72c974d88c53b3a900ccd3f25528b5506e6b5b6fb4f9f9b73f509d01b740184e24bc9f445cee9cde5cfd0fefa71b628497bbbf2c20ef142fe723
7
- data.tar.gz: 8db5ada7fdd6e765139fbda15720cf1bbf5fb61b015055a9249d18270bc05849aa79ddf20d4107e5de1d4260e68ece57a05d730449cb0b5c3aa1f3fb8b5fbc40
6
+ metadata.gz: 7b5d47b1383f939d76af17239fb4f1e1a486ae619b0d728a010bde7e8ed044de0bfc93d755f8c0a22dfa098ddf997d84f1d7a3f562f07153d1486eee68744929
7
+ data.tar.gz: b8ba0c1b6c02546df4e54c6d5c4fe072cbb98bc4b6c5b1d0f1ac323ded4ca43e06ff5bcaaaf879005d37533df86f53262cba0dd87d1a09684f360a50a6d4834c
data/bin/Changes CHANGED
@@ -7,6 +7,42 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.00. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Nov. 26, 2024 - Version 13.04
11
+
12
+ - Added the ability to write GPSDOP and GPSMeasureMode from the -geotag option
13
+ if hdop or pdop information exists in the input track file
14
+ - Added a few new Canon RFLensTypes (thanks Norbert Wasser)
15
+ - Decode timed GPS from GoPro Hero 13 videos
16
+ - Improved writing of GPSDestLatitudeRef and GPSDestLongitudeRef tags to allow
17
+ signed numbers to be written in the same way as GPSLatitudeRef and
18
+ GPSLongitudeRef
19
+ - Warn if using an Image::ExifTool library that doesn't match the application
20
+ version
21
+ - Renamed an Unknown Photoshop tag
22
+ - Convert GoPro GPSSpeed and GPSSpeed3D from m/s to km/h
23
+ - Patched to tolerate XML header in DOCX xml files
24
+ - Fixed -htmldump output to show the same names for unknown EXIF tags as with
25
+ the -u option
26
+
27
+ Nov. 12, 2024 - Version 13.03
28
+
29
+ - Added ability to include or exclude tags from CSV and JSON imports
30
+ (-csv=CSVFILE and -json=JSONFILE) by adding -TAG or --TAG options
31
+ - Added read/delete support for SEAL metadata in JPG, TIFF, XMP, PNG, WEBP,
32
+ HEIC, PPM, MOV and MP4 files, and read support in PDF, MKV and WAV files
33
+ - Added support for user-defined application extensions in GIF images
34
+ - Added print conversion for QuickTime VideoFullRangeFlag
35
+ - Apply API LimitLongValues option to hex field in -j output
36
+ - Avoid extracting some large AES-encrypted data from PDF files for
37
+ performance reasons unless the -m option is used (current limits are 100 kB
38
+ for XMP and 10 kB for everything else)
39
+ - Fixed WindowsLongPath option to support wide characters (thanks Frank B)
40
+ - Fixed problem writing ICC_Profile to a GIF image which already had one
41
+ - Fixed problem writing Apple:FocusDistanceRange
42
+ - API Changes:
43
+ - Enchanced GlobalTimeShift option to allow the base tag to be specified,
44
+ otherwise use the first specified source date/time tag when copying tags
45
+
10
46
  Nov. 5, 2024 - Version 13.02
11
47
 
12
48
  - Enhanced -j -l output to add optional "fmt" and "hex" fields
@@ -20,11 +56,12 @@ Nov. 5, 2024 - Version 13.02
20
56
  - Patched to avoid using Encode module in Windows because it can hang if run
21
57
  from a working directory with a long path name
22
58
  - Patched to use -csv output if -j also used
23
- - Fixed problem setting FileCreateDate on MacOS Sequoia if the date/time
24
- contains a time zone
59
+ - Fixed a few problems with the new WindowsLongPath option
60
+ - Fixed problem setting FileCreateDate with Xcode 16 command line tools if the
61
+ date/time contains a time zone
25
62
  - Fixed problem in -csv output when combined with -g
26
63
  - API Changes:
27
- - Added BinVal option
64
+ - Added SaveBin option
28
65
 
29
66
  Nov. 1, 2024 - Version 13.01
30
67
 
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.02"
53
+ "version" : "13.04"
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: '13.02'
34
+ version: '13.04'
data/bin/README CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
109
109
  terminal window to extract and run ExifTool:
110
110
 
111
111
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-13.02.tar.gz | tar -xf -
113
- cd Image-ExifTool-13.02
112
+ gzip -dc Image-ExifTool-13.04.tar.gz | tar -xf -
113
+ cd Image-ExifTool-13.04
114
114
  ./exiftool t/images/ExifTool.jpg
115
115
 
116
116
  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 = '13.02';
14
+ my $version = '13.04';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -597,6 +597,10 @@ if (@Image::ExifTool::UserDefined::Arguments) {
597
597
  unshift @ARGV, @Image::ExifTool::UserDefined::Arguments;
598
598
  }
599
599
 
600
+ if ($version ne $Image::ExifTool::VERSION) {
601
+ Warn "Application version $version does not match Image::ExifTool library version $Image::ExifTool::VERSION\n";
602
+ }
603
+
600
604
  # parse command-line options in 2 passes...
601
605
  # pass 1: set all of our ExifTool options
602
606
  # pass 2: print all of our help and informational output (-list, -ver, etc)
@@ -1777,7 +1781,7 @@ if ($isWriting) {
1777
1781
  if (defined $diff) {
1778
1782
  Error "Can't use -diff option when writing tags\n";
1779
1783
  next;
1780
- } elsif (@tags and not $outOpt) {
1784
+ } elsif (@tags and not $outOpt and not $csv) {
1781
1785
  my ($tg, $s) = @tags > 1 ? ("$tags[0] ...", 's') : ($tags[0], '');
1782
1786
  Warn "Ignored superfluous tag name$s or invalid option$s: -$tg\n";
1783
1787
  }
@@ -2852,8 +2856,16 @@ TAG: foreach $tag (@foundTags) {
2852
2856
  $$val{num} = $num if defined $num and not IsEqual($num, $$val{val});
2853
2857
  }
2854
2858
  my $ex = $$et{TAG_EXTRA}{$tag};
2855
- $$val{'hex'} = join ' ', unpack '(H2)*', $$ex{BinVal} if defined $$ex{BinVal};
2856
2859
  $$val{'fmt'} = $$ex{G6} if defined $$ex{G6};
2860
+ if (defined $$ex{BinVal}) {
2861
+ my $max = ($$et{OPTIONS}{LimitLongValues} - 5) / 3;
2862
+ if ($max >= 0 and length($$ex{BinVal}) > int($max)) {
2863
+ $max = int $max;
2864
+ $$val{'hex'} = join ' ', unpack("(H2)$max", $$ex{BinVal}), '[...]';
2865
+ } else {
2866
+ $$val{'hex'} = join ' ', unpack '(H2)*', $$ex{BinVal};
2867
+ }
2868
+ }
2857
2869
  }
2858
2870
  }
2859
2871
  FormatJSON($fp, $val, $ind, $quote);
@@ -3148,9 +3160,15 @@ sub SetImageInfo($$$)
3148
3160
  next unless defined $absPath and $csvInfo = $database{$absPath};
3149
3161
  }
3150
3162
  $found = 1;
3151
- $verbose and print $vout "Setting new values from $csv database\n";
3163
+ if ($verbose) {
3164
+ print $vout "Setting new values from $csv database\n";
3165
+ print $vout 'Including tags: ',join(' ',@tags),"\n" if @tags;
3166
+ print $vout 'Excluding tags: ',join(' ',@exclude),"\n" if @exclude;
3167
+ }
3152
3168
  foreach $tag (OrderedKeys($csvInfo)) {
3153
3169
  next if $tag =~ /\b(SourceFile|Directory|FileName)$/i; # don't write these
3170
+ next if @tags and not grep /^\Q$tag\E$/i, @tags;
3171
+ next if @exclude and grep /^\Q$tag\E$/i, @exclude;
3154
3172
  my ($rtn, $wrn) = $et->SetNewValue($tag, $$csvInfo{$tag},
3155
3173
  Protected => 1, AddValue => $csvAdd,
3156
3174
  ProtectSaved => $csvSaveCount);
@@ -5143,7 +5161,7 @@ information. Use the B<-s> option to see the tag names instead.
5143
5161
  =item B<-->I<TAG>
5144
5162
 
5145
5163
  Exclude specified tag from extracted information. Same as the B<-x> option.
5146
- Group names and wildcards are permitted as described above for B<-TAG>.
5164
+ Group names and wildcards are permitted as described above for B<->I<TAG>.
5147
5165
  Once excluded from the output, a tag may not be re-included by a subsequent
5148
5166
  option. May also be used following a B<-tagsFromFile> option to exclude
5149
5167
  tags from being copied (when redirecting to another tag, it is the source
@@ -5574,7 +5592,9 @@ deleted). Also, FileName and Directory columns are ignored if they exist
5574
5592
  all other columns are imported. To force a tag to be deleted, use the B<-f>
5575
5593
  option and set the value to "-" in the CSV file (or to the MissingTagValue
5576
5594
  if this API option was used). Multiple databases may be imported in a
5577
- single command.
5595
+ single command. Specific tags may be imported from the database by adding
5596
+ B<->I<TAG> options to the command, or excluded with B<-->I<TAG> options.
5597
+ If no tags are specified, then all except FileName and Directory are used.
5578
5598
 
5579
5599
  When exporting a CSV file, the B<-g> or B<-G> option adds group names to the
5580
5600
  tag headings. If the B<-a> option is used to allow duplicate tag names, the
@@ -5710,19 +5730,28 @@ preserved with the B<-struct> option (this also causes all list-type XMP
5710
5730
  tags to be output as JSON arrays, otherwise single-item lists would be
5711
5731
  output as simple strings). The B<-a> option is implied when B<-json> is
5712
5732
  used, but entries with identical JSON names are suppressed in the output.
5713
- (B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
5714
- the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
5715
- "id" fields. Adding B<-l> adds a "desc" field, and a "num" field if the
5716
- numerical value is different from the converted "val", and "fmt" and "hex"
5717
- fields for EXIF metadata if the API SaveFormat and SaveBin options are set
5718
- respectively. The B<-b> option may be added to output binary data, encoded
5719
- in base64 if necessary (indicated by ASCII "base64:" as the first 7 bytes of
5720
- the value), and B<-t> may be added to include tag table information (see
5721
- B<-t> for details). The JSON output is UTF-8 regardless of any B<-L> or
5722
- B<-charset> option setting, but the UTF-8 validation is disabled if a
5723
- character set other than UTF-8 is specified. Note that ExifTool quotes JSON
5724
- values only if they don't look like numbers (regardless of the original
5725
- storage format or the relevant metadata specification).
5733
+ (B<-G4> may be used to ensure that all tags have unique JSON names.)
5734
+
5735
+ Adding the B<-D> or B<-H> option changes tag values to JSON objects with
5736
+ "val" and "id" fields. Adding B<-l> adds a "desc" field, and a "num" field
5737
+ if the numerical value is different from the converted "val", and "fmt" and
5738
+ "hex" fields for EXIF metadata if the API SaveFormat and SaveBin options are
5739
+ set respectively, and the length of the "hex" output is limited by the API
5740
+ LimitLongValues setting. The B<-b> option may be added to output binary
5741
+ data, encoded in base64 if necessary (indicated by ASCII "base64:" as the
5742
+ first 7 bytes of the value), and B<-t> may be added to include tag table
5743
+ information (see B<-t> for details). The JSON output is UTF-8 regardless of
5744
+ any B<-L> or B<-charset> option setting, but the UTF-8 validation is
5745
+ disabled if a character set other than UTF-8 is specified.
5746
+
5747
+ Note that ExifTool quotes JSON values only if they don't look like numbers
5748
+ (regardless of the original storage format or the relevant metadata
5749
+ specification). This may be a problem when reading the JSON via a strongly
5750
+ typed language. However, the API StructFormat option may be set to "JSONQ"
5751
+ to force quoting of numbers. As well, the B<-sep> option may be used to
5752
+ convert arrays into strings. For example:
5753
+
5754
+ exiftool -j -api structformat=jsonq -sep ", " ...
5726
5755
 
5727
5756
  If I<JSONFILE> is specified, the file is imported and the tag definitions
5728
5757
  from the file are used to set tag values on a per-file basis. The special
@@ -5735,7 +5764,9 @@ that options exporting JSON objects instead of simple values are not
5735
5764
  compatible with the import file format (ie. export with B<-D>, B<-H>, B<-l>,
5736
5765
  or B<-T> is not compatible, and use B<-G> instead of B<-g>). Additionally,
5737
5766
  tag names in the input JSON file may be suffixed with a C<#> to disable
5738
- print conversion.
5767
+ print conversion. Specific tags may be imported from the database by adding
5768
+ B<->I<TAG> options to the command, or excluded with B<-->I<TAG> options.
5769
+ If no tags are specified, then all except FileName and Directory are used.
5739
5770
 
5740
5771
  Unlike CSV import, empty values are not ignored, and will cause an empty
5741
5772
  value to be written if supported by the specific metadata type. Tags are
@@ -5876,7 +5907,7 @@ with this command:
5876
5907
 
5877
5908
  produces output like this:
5878
5909
 
5879
- -- Generated by ExifTool 13.02 --
5910
+ -- Generated by ExifTool 13.04 --
5880
5911
  File: a.jpg - 2003:10:31 15:44:19
5881
5912
  (f/5.6, 1/60s, ISO 100)
5882
5913
  File: b.jpg - 2006:05:23 11:57:38
@@ -5892,8 +5923,9 @@ name, a value of 1 is returned if any tag exists in the specified group, or
5892
5923
  0 otherwise (unless the C<All> group is also specified, in which case the
5893
5924
  values of all matching tags are joined).
5894
5925
 
5895
- When B<-ee> (B<-extractEmbedded>) is combined with B<-p>, embedded documents
5896
- are effectively processed as separate input files.
5926
+ The B<-p> output iterates through the family 3 group names, with each
5927
+ sub-document producing additional output. This feature is most useful when
5928
+ used in combination with the B<-ee> option to extract embedded documents.
5897
5929
 
5898
5930
  If a specified tag does not exist, a minor warning is issued and the line
5899
5931
  with the missing tag is not printed. However, the B<-f> option may be used
@@ -6305,7 +6337,8 @@ ExifTool will not scan to the end of a JPEG image to check for an AFCP or
6305
6337
  PreviewImage trailer, or past the first comment in GIF images or the
6306
6338
  audio/video data in WAV/AVI files to search for additional metadata. These
6307
6339
  speed benefits are small when reading images directly from disk, but can be
6308
- substantial if piping images through a network connection. For more
6340
+ substantial if piping images through a network connection. Also bypasses
6341
+ CRC validation when writing PNG images which can be very slow. For more
6309
6342
  substantial speed benefits, B<-fast2> also causes exiftool to avoid
6310
6343
  extracting any EXIF MakerNote information, and to stop processing at the
6311
6344
  IDAT chunk of PNG images and the mdat atom of QuickTime-format files (but
@@ -6716,8 +6749,9 @@ names, even if they begin with a dash (C<->).
6716
6749
  Compare metadata in I<FILE> with I<FILE2>. The I<FILE2> name may include
6717
6750
  filename formatting codes (see the B<-w> option). All extracted tags from
6718
6751
  the files are compared, but the extracted tags may be controlled by adding
6719
- B<-TAG> or B<--TAG> options. For example, below is a command to compare all
6720
- the same-named files in two different directories, ignoring the System tags:
6752
+ B<->I<TAG> or B<-->I<TAG> options. For example, below is a command to
6753
+ compare all the same-named files in two different directories, ignoring the
6754
+ System tags:
6721
6755
 
6722
6756
  exiftool DIR1 -diff DIR2/%f.%e --system:all
6723
6757
 
@@ -6741,23 +6775,22 @@ the following two commands are equivalent:
6741
6775
  exiftool -geotag trk.log image.jpg
6742
6776
  exiftool -geotag trk.log "-Geotime<DateTimeOriginal#" image.jpg
6743
6777
 
6744
- When the C<Geotime> value is converted to UTC, the local system timezone is
6745
- assumed unless the date/time value contains a timezone. Writing C<Geotime>
6746
- causes the following tags to be written (provided they can be calculated
6747
- from the track log, and they are supported by the destination metadata
6748
- format): GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef,
6749
- GPSAltitude, GPSAltitudeRef, GPSDateStamp, GPSTimeStamp, GPSDateTime,
6750
- GPSTrack, GPSTrackRef, GPSSpeed, GPSSpeedRef, GPSImgDirection,
6751
- GPSImgDirectionRef, GPSPitch, GPSRoll, GPSCoordinates, AmbientTemperature
6752
- and CameraElevationAngle. By default, in image files tags are created in
6753
- EXIF, and updated in XMP only if they already exist. In QuickTime-format
6754
- files GPSCoordinates is created in the preferred location (ItemList by
6755
- default) as well as in XMP. However, C<EXIF:Geotime>, C<XMP:Geotime> or
6756
- C<QuickTime:Geotime> may be specified to write to write only to one group.
6757
- Also, C<ItemList:Geotime>, C<Keys:Geotime> or C<UserData:Geotime> may be
6758
- used to write to a specific location in QuickTime-format files. Note that
6759
- GPSPitch and GPSRoll are non-standard, and require user-defined tags in
6760
- order to be written.
6778
+ If the C<Geotime> value does not contain a time zone then the local system
6779
+ timezone is assumed. Writing C<Geotime> causes the following tags to be
6780
+ written (provided they can be calculated from the track log, and they are
6781
+ supported by the destination metadata format): GPSLatitude, GPSLatitudeRef,
6782
+ GPSLongitude, GPSLongitudeRef, GPSAltitude, GPSAltitudeRef, GPSDateStamp,
6783
+ GPSTimeStamp, GPSDateTime, GPSTrack, GPSTrackRef, GPSSpeed, GPSSpeedRef,
6784
+ GPSImgDirection, GPSImgDirectionRef, GPSPitch, GPSRoll, GPSCoordinates,
6785
+ AmbientTemperature and CameraElevationAngle. By default, in image files
6786
+ tags are created in EXIF, and updated in XMP only if they already exist. In
6787
+ QuickTime-format files GPSCoordinates is created in the preferred location
6788
+ (ItemList by default) as well as in XMP. However, C<EXIF:Geotime>,
6789
+ C<XMP:Geotime> or C<QuickTime:Geotime> may be specified to write to write
6790
+ only to one group. Also, C<ItemList:Geotime>, C<Keys:Geotime> or
6791
+ C<UserData:Geotime> may be used to write to a specific location in
6792
+ QuickTime-format files. Note that GPSPitch and GPSRoll are non-standard,
6793
+ and require user-defined tags in order to be written.
6761
6794
 
6762
6795
  The C<Geosync> tag may be used to specify a time correction which is applied
6763
6796
  to each C<Geotime> value for synchronization with GPS time. For example,
@@ -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.12';
19
+ $VERSION = '1.13';
20
20
 
21
21
  sub ConvertPLIST($$);
22
22
 
@@ -99,7 +99,7 @@ sub ConvertPLIST($$);
99
99
  my @a = split ' ', $val;
100
100
  sprintf('%.2f - %.2f m', $a[0] <= $a[1] ? @a : reverse @a);
101
101
  },
102
- PrintConvInv => '$val =~ s/ - //; $val =~ s/ ?m$//; $val',
102
+ PrintConvInv => '$val =~ s/ - / /; $val =~ s/ ?m$//; $val',
103
103
  },
104
104
  # 0x000d - int32s: 0,1,6,20,24,32,40 (SphereHealthAverageCurrent, ref 2)
105
105
  # 0x000e - int32s: 0,1,4,12 (Orientation? 0=landscape? 4=portrait? ref 1) (SphereMotionDataStatus, ref 2)
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.84';
91
+ $VERSION = '4.85';
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)
@@ -631,6 +631,9 @@ $VERSION = '4.84';
631
631
  '61182.54' => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
632
632
  '61182.55' => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
633
633
  '61182.56' => 'Canon RF 35mm F1.4 L VCM', #42
634
+ '61182.57' => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
635
+ '61182.58' => 'Canon RF 50mm F1.4 L VCM', #42
636
+ '61182.59' => 'Canon RF 24mm F1.4 L VCM', #42
634
637
  65535 => 'n/a',
635
638
  );
636
639
 
@@ -7001,6 +7004,9 @@ my %ciMaxFocal = (
7001
7004
  316 => 'Canon RF 35mm F1.4 L VCM', #42
7002
7005
  317 => 'Canon RF-S 3.9mm F3.5 STM DUAL FISHEYE', #42
7003
7006
  318 => 'Canon RF 28-70mm F2.8 IS STM', #42
7007
+ 319 => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
7008
+ 325 => 'Canon RF 50mm F1.4 L VCM', #42
7009
+ 326 => 'Canon RF 24mm F1.4 L VCM', #42
7004
7010
  # Note: add new RF lenses to %canonLensTypes with ID 61182
7005
7011
  },
7006
7012
  },
@@ -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.53';
60
+ $VERSION = '4.55';
61
61
 
62
62
  sub ProcessExif($$$);
63
63
  sub WriteExif($$$);
@@ -4421,6 +4421,13 @@ my %opcodeInfo = (
4421
4421
  Writable => 'int32u',
4422
4422
  WriteGroup => 'IFD0',
4423
4423
  },
4424
+ 0xcea1 => {
4425
+ Name => 'SEAL', # (writable directory!)
4426
+ Writable => 'string',
4427
+ WriteGroup => 'IFD0',
4428
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
4429
+ WriteCheck => 'return "Can only delete"', # (don't allow writing)
4430
+ },
4424
4431
  0xea1c => { #13
4425
4432
  Name => 'Padding',
4426
4433
  Binary => 1,
@@ -6690,8 +6697,9 @@ sub ProcessExif($$$)
6690
6697
  "Format: $fstr\nSize: $size bytes\n";
6691
6698
  if ($size > 4) {
6692
6699
  my $offPt = Get32u($dataPt,$entry+8);
6693
- # (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2})
6694
- my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || 0);
6700
+ # (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2,*.raf})
6701
+ my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) +
6702
+ ($$et{BASE_FUDGE} || $$et{BASE} || 0);
6695
6703
  $tip .= sprintf("Value offset: 0x%.4x\n", $offPt);
6696
6704
  # highlight tag name (red for bad size)
6697
6705
  my $style = ($bad or not defined $tval) ? 'V' : 'H';
@@ -6722,12 +6730,15 @@ sub ProcessExif($$$)
6722
6730
  } elsif ($tagInfo and Image::ExifTool::IsInt($tval)) {
6723
6731
  if ($$tagInfo{IsOffset} or $$tagInfo{SubIFD}) {
6724
6732
  $tval = sprintf('0x%.4x', $tval);
6725
- my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || 0);
6733
+ my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || $$et{BASE} || 0);
6726
6734
  if ($actPt != $val) {
6727
6735
  $tval .= sprintf("\nActual offset: 0x%.4x", $actPt);
6728
6736
  my $sign = $actPt < $val ? '-' : '';
6729
6737
  $tval .= sprintf("\nOffset base: ${sign}0x%.4x", abs($actPt - $val));
6730
6738
  }
6739
+ if ($$et{EXIF_POS} and not $$et{BASE_FUDGE}) {
6740
+ $tip .= sprintf("File offset: 0x%.4x\n", $actPt + $$et{EXIF_POS})
6741
+ }
6731
6742
  } elsif ($$tagInfo{PrintHex}) {
6732
6743
  $tval = sprintf('0x%x', $tval);
6733
6744
  }