exiftool_vendored 13.33.0 → 13.34.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5188f2fb9bb03c179101219cd17d5129411b4f517c3e6acd10c915336d0fa89e
4
- data.tar.gz: 953b6ce7f3f1a259cbc4f34e7b72a4851460d762297132f9498306644aede5e5
3
+ metadata.gz: ee6400c2f7784efecc62e0876ee90696b3f523abbf6438ee5d3c60e56574ca11
4
+ data.tar.gz: 33c0b5f6228fc949cead6b4d357117227b7f5fe74a98cef2377cbfca6c8e9753
5
5
  SHA512:
6
- metadata.gz: 6bc2708043ba0de2e7f492c456f0257a342771e7d962a306620ded3ce97a30727087a0d5200ed615ac083b394f8dee318b4e7e68e472739028df1c98d91e17fa
7
- data.tar.gz: b2ce97b5597a47050ed22df9baec8a3b760f3da83956fd7c842e0d4eddbcc6b44597b0c40f024bfca54421141f27c954aae6bee6f51dbdb3eba271fa84cfb69f
6
+ metadata.gz: 50d16f2dfe3be3a2c117f72f244da5b762fb7f876fec921e32f7347f002f50de235da85949121cde69175b9b0a6aa11094e80d7e3a720207c422c750f748a0f1
7
+ data.tar.gz: 5cc1844f04cf8a423af7e7e79403b9e817389cf7b357a482a64fa8c693d9b230018c090dcd722a9b9161e2df35184a421c5db984a2805033fc3e0b3e082b964b
data/bin/Changes CHANGED
@@ -7,6 +7,22 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.30. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Aug. 18, 2025 - Version 13.34
11
+
12
+ - Decode a number of new Pentax tags (thanks Karsten Gieselmann)
13
+ - Decode a new Canon tag (thanks Peter Wem, github #344)
14
+ - Updated Sony decoding for the ILME-FX2 and DSC-RX1RM3 (thanks Jos Roost)
15
+ - Minor fixes to decoding of new Olympus tags (thanks Karsten Gieselmann)
16
+ - Reverted change of 13.20 which changed the behaviour when writing
17
+ incorrectly-formatted date/time values
18
+ - Patched to avoid "uninitialized value $module" when using some custom config
19
+ files
20
+ - Fixed issue reading maker notes from some Sony ILCE models
21
+ - API Changes:
22
+ - Added UndefTags option to allow -m
23
+ and/or -f to be used without modifying the value of undef tags in -if
24
+ expressions (which was the behaviour prior to version 12.60)
25
+
10
26
  July 25, 2025 - Version 13.33
11
27
 
12
28
  - Added read support for TNEF files (eg. "winmail.dat")
@@ -14,13 +30,15 @@ July 25, 2025 - Version 13.33
14
30
  - Decode Canon FocusBracketing tag (github #340)
15
31
  - Decode more tags for newer Nikon Z models (thanks Warren Hatch)
16
32
  - Decode a few more Olympus tags (thanks Karsten Gieselmann)
33
+ - Decode face detection tags for the Pentax K-3III (thanks Karsten Gieselmann)
17
34
  - Decode a few more FujiFilm tags (github #343)
18
35
  - Handle Olympus RawDev2IFD tag 0x8000 (named it RawDevSubIFD)
19
36
  - Improved recognition of some Sony lenses (github #342)
20
- - Enhanced the -p option to cycle through sub-subdocuments
21
- - Improved extraction of GoPro timed GPS to use sub-subdocuments to separate
22
- the individual fixes, allowing -p to extract all fixes at sub-second
23
- resolution (althought for earlier models these don't all contain timestamps)
37
+ - Enhanced the -p option to cycle through sub-documents
38
+ - Improved extraction of GoPro timed GPS to use sub-document numbers to
39
+ separate the individual fixes, allowing -p to extract all fixes at
40
+ sub-second resolution (although for earlier models these may not contain
41
+ timestamps)
24
42
  - Extract EXIF information from Sigma fp MOV videos
25
43
  - Patched to avoid "multi-segment EXIF with external pointers" error when
26
44
  writing Olympus OM-1 JPG files converted by some utilities
data/bin/META.json CHANGED
@@ -50,6 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.33",
53
+ "version" : "13.34",
54
54
  "x_serialization_backend" : "JSON::PP version 4.06"
55
55
  }
data/bin/META.yml CHANGED
@@ -31,5 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.33'
34
+ version: '13.34'
35
35
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -110,8 +110,8 @@ your home directory, then you would type the following commands in a
110
110
  terminal window to extract and run ExifTool:
111
111
 
112
112
  cd ~/Desktop
113
- gzip -dc Image-ExifTool-13.33.tar.gz | tar -xf -
114
- cd Image-ExifTool-13.33
113
+ gzip -dc Image-ExifTool-13.34.tar.gz | tar -xf -
114
+ cd Image-ExifTool-13.34
115
115
  ./exiftool t/images/ExifTool.jpg
116
116
 
117
117
  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.33';
14
+ my $version = '13.34';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -5831,12 +5831,12 @@ escaped. The inverse conversion is applied when writing tags.
5831
5831
  =item B<-f> (B<-forcePrint>)
5832
5832
 
5833
5833
  Force printing of tags even if they don't exist. This option applies to
5834
- tags specified on the command line, or with the B<-p>, B<-if> or
5835
- B<-tagsFromFile> options. When B<-f> is used, the value of any missing tag
5836
- is set to a dash (C<->) by default, but this may be configured via the API
5837
- MissingTagValue option. B<-f> is also used to add a 'flags' attribute to
5838
- the B<-listx> output, or to allow tags to be deleted when writing with the
5839
- B<-csv>=I<CSVFILE> feature.
5834
+ tags specified on the command line, or with the B<-p>, B<-if> (unless the
5835
+ API UndefTags option is set), B<-fileNUM> or B<-tagsFromFile> options. When
5836
+ B<-f> is used, the value of any missing tag is set to a dash (C<->) by
5837
+ default, but this may be configured via the API MissingTagValue option.
5838
+ B<-f> is also used to add a 'flags' attribute to the B<-listx> output, or to
5839
+ allow tags to be deleted when writing with the B<-csv>=I<CSVFILE> feature.
5840
5840
 
5841
5841
  =item B<-g>[I<NUM>][:I<NUM>...] (B<-groupHeadings>)
5842
5842
 
@@ -6001,7 +6001,7 @@ translation, follow these steps (you must have Perl installed for this):
6001
6001
  6. Edit the generated language module lib/Image/ExifTool/Lang/ru.pm, and
6002
6002
  search and replace all 'MISSING' strings in the file with your translations.
6003
6003
 
6004
- 7. Email the module ('ru.pm' in this example) to exiftool.team@gmail.com
6004
+ 7. Email the module ('ru.pm' in this example) to exiftool@gmail.com
6005
6005
 
6006
6006
  8. Thank you!!
6007
6007
 
@@ -6011,7 +6011,7 @@ For list-type tags, this causes only the item with the specified index to be
6011
6011
  extracted. I<INDEX> is 0 for the first item in the list. Negative indices
6012
6012
  may also be used to reference items from the end of the list. Has no effect
6013
6013
  on single-valued tags. Also applies to tag values when copying from a tag,
6014
- and in B<-if> conditions.
6014
+ and in B<-if>, B<-p> and B<-fileNUM> arguments.
6015
6015
 
6016
6016
  =item B<-n> (B<--printConv>)
6017
6017
 
@@ -6076,7 +6076,7 @@ with this command:
6076
6076
 
6077
6077
  produces output like this:
6078
6078
 
6079
- -- Generated by ExifTool 13.33 --
6079
+ -- Generated by ExifTool 13.34 --
6080
6080
  File: a.jpg - 2003:10:31 15:44:19
6081
6081
  (f/5.6, 1/60s, ISO 100)
6082
6082
  File: b.jpg - 2006:05:23 11:57:38
@@ -6624,11 +6624,8 @@ Notes:
6624
6624
 
6625
6625
  1) The B<-n> and B<-b> options also apply to tags used in I<EXPR>.
6626
6626
 
6627
- 2) Some binary data blocks are not extracted unless specified explicitly.
6628
- These tags are not available for use in the B<-if> condition unless they are
6629
- also specified on the command line. The alternative is to use the
6630
- C<$GROUP:all> syntax. (eg. Use C<$exif:all> instead of C<$exif> in I<EXPR>
6631
- to test for the existence of EXIF tags.)
6627
+ 2) The API RequestTags option is automatically set for all tags used in the
6628
+ B<-if> condition.
6632
6629
 
6633
6630
  3) Tags in the string are interpolated in a similar way to B<-p> before the
6634
6631
  expression is evaluated. In this interpolation, C<$/> is converted to a
@@ -6650,8 +6647,8 @@ C<$Copy1:TAG>, C<$Copy2:TAG>, etc).
6650
6647
  command when B<-execute> was used, and may be used like any other tag in the
6651
6648
  condition (ie. "$OK").
6652
6649
 
6653
- 7) The API RequestTags option is automatically set for all tags used in the
6654
- B<-if> condition.
6650
+ 7) The values of undefined tags in the expression are affected by the B<-f>
6651
+ and B<-m> options unless the API UndefTags option is also set.
6655
6652
 
6656
6653
  8) The condition fails if a Perl error occurs. This could happen for
6657
6654
  instance if an undefined value (eg. a missing tag) is used improperly.
@@ -6666,8 +6663,9 @@ so ExifTool leaves it up to you to make the final decision. Minor errors
6666
6663
  and warnings are indicated by "[minor]" at the start of the message.
6667
6664
  Warnings which affect processing when ignored are indicated by "[Minor]"
6668
6665
  (with a capital "M"). Note that this causes missing values in
6669
- B<-tagsFromFile>, B<-p> and B<-if> strings to be set to an empty string
6670
- rather than an undefined value.
6666
+ B<-tagsFromFile>, B<-p>, B<-if> and B<-fileNUM> strings to be set to an
6667
+ empty string rather than an undefined value (but this may be avoided for
6668
+ B<-if> using the API UndefTags option).
6671
6669
 
6672
6670
  =item B<-o> I<OUTFILE> or I<FMT> (B<-out>)
6673
6671
 
@@ -7279,11 +7277,11 @@ Set user parameter. I<PARAM> is an arbitrary user parameter name. This is
7279
7277
  an interface to the API UserParam option (see the
7280
7278
  L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
7281
7279
  provides a method to access user-defined parameters in arguments to the
7282
- B<-if> and B<-p> options as if they were any other tag. Appending a hash
7283
- tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also causes the
7284
- parameter to be extracted as a normal tag in the UserParam group. Similar
7285
- to the B<-api> option, the parameter value is set to 1 if I<=VAL> is
7286
- omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
7280
+ B<-if>, B<-p> and B<-fileNUM> options as if they were any other tag.
7281
+ Appending a hash tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also
7282
+ causes the parameter to be extracted as a normal tag in the UserParam group.
7283
+ Similar to the B<-api> option, the parameter value is set to 1 if I<=VAL>
7284
+ is omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
7287
7285
  I<VAL> is omitted with C<^=>.
7288
7286
 
7289
7287
  exiftool -p '$test from $filename' -userparam test=Hello FILE
@@ -7293,18 +7291,20 @@ I<VAL> is omitted with C<^=>.
7293
7291
  =head3 Advanced formatting feature
7294
7292
 
7295
7293
  An advanced formatting feature allows modification of the value of any tag
7296
- interpolated within a B<-if> or B<-p> option argument, or a B<-tagsFromFile>
7297
- redirection string. Tag names within these strings are prefixed by a C<$>
7298
- symbol, and an arbitrary Perl expression may be applied to the tag value by
7299
- placing braces around the tag name and inserting the expression after the
7300
- name, separated by a semicolon (ie. C<${TAG;EXPR}>). The expression acts on
7301
- the value of the tag through the default input variable (C<$_>), and has
7302
- access to the full ExifTool API through the current ExifTool object
7303
- (C<$self>) and the tag key (C<$tag>). It may contain any valid Perl code,
7304
- including translation (C<tr///>) and substitution (C<s///>) operations, but
7305
- note that braces within the expression must be balanced. The example below
7306
- prints the camera Make with spaces translated to underlines, and multiple
7307
- consecutive underlines replaced by a single underline:
7294
+ interpolated within a B<-if>, B<-p> or B<-fileNUM> argument, or a
7295
+ B<-tagsFromFile> redirection string. Tag names within these strings are
7296
+ prefixed by a C<$> symbol, and an arbitrary Perl expression may be applied
7297
+ to the tag value by placing braces around the tag name and inserting the
7298
+ expression after the name, separated by a semicolon (ie. C<${TAG;EXPR}>).
7299
+ The expression acts on the value of the tag through the default input
7300
+ variable (C<$_>), and has access to the full ExifTool API through the
7301
+ current ExifTool object (C<$self>) and the tag key (C<$tag>). It may
7302
+ contain any valid Perl code, including translation (C<tr///>) and
7303
+ substitution (C<s///>) operations, but note that braces within the
7304
+ expression must be balanced. If the expression does not modify C<$_> the
7305
+ original tag value is returned. The example below prints the camera Make
7306
+ with spaces translated to underlines, and multiple consecutive underlines
7307
+ replaced by a single underline:
7308
7308
 
7309
7309
  exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg
7310
7310
 
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.94';
91
+ $VERSION = '4.95';
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)
@@ -2151,6 +2151,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2151
2151
  TagTable => 'Image::ExifTool::Canon::RawBurstInfo',
2152
2152
  }
2153
2153
  },
2154
+ # 0x4049 - related to croping (forum13491) - "8 0 0 0" = no crop, "8 1 0 1" = crop enabled
2154
2155
  0x4059 => { #forum16111
2155
2156
  Name => 'LevelInfo',
2156
2157
  SubDirectory => {
@@ -9331,6 +9332,14 @@ my %filterConv = (
9331
9332
  3 => 'Vehicles',
9332
9333
  },
9333
9334
  },
9335
+ 21 => { #github344 (R6)
9336
+ Name => 'SubjectSwitching',
9337
+ PrintConv => {
9338
+ 0 => 'Initial Priority',
9339
+ 1 => 'On Subject',
9340
+ 2 => 'Switch Subject',
9341
+ },
9342
+ },
9334
9343
  24 => { #forum16068
9335
9344
  Name => 'EyeDetection',
9336
9345
  PrintConv => \%offOn,
@@ -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.59';
60
+ $VERSION = '4.60';
61
61
 
62
62
  sub ProcessExif($$$);
63
63
  sub WriteExif($$$);
@@ -6362,9 +6362,10 @@ sub ProcessExif($$$)
6362
6362
  $et->Warn("Bad format ($format) for $dir entry $index", $inMakerNotes);
6363
6363
  ++$warnCount;
6364
6364
  }
6365
- # assume corrupted IFD if this is our first entry (except Sony ILCE-7M2 firmware 1.21)
6366
- return 0 unless $index or $$et{Model} eq 'ILCE-7M2';
6367
- next;
6365
+ # assume corrupted IFD if this is our first entry (except Sony ILCE which have an empty first entry)
6366
+ next if $index or $$et{Model} =~ /^ILCE/;
6367
+ # $et->Warn(sprintf('Format code 0x%x encountered -- Possibly corrupted IFD'));
6368
+ return 0;
6368
6369
  }
6369
6370
  }
6370
6371
  my $formatStr = $formatName[$format]; # get name of this format
@@ -1816,6 +1816,7 @@ sub WriteRAF($$)
1816
1816
  # make sure padding is only zero bytes (can be >100k for HS10)
1817
1817
  # (have seen non-null padding in X-Pro1)
1818
1818
  if ($buff =~ /[^\0]/) {
1819
+ HexDump(\$buff);
1819
1820
  return 1 if $et->Error('Non-null bytes found in padding', 2);
1820
1821
  }
1821
1822
  }
@@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
49
49
  use Image::ExifTool qw(:DataAccess :Utils);
50
50
  use Image::ExifTool::Exif;
51
51
 
52
- $VERSION = '2.88';
52
+ $VERSION = '2.89';
53
53
 
54
54
  # Full list of product codes for Sony-compatible Minolta lenses
55
55
  # (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
@@ -603,6 +603,8 @@ $VERSION = '2.88';
603
603
  19 => 'Vivid 2', #JR (7SM3)
604
604
  20 => 'IN', #JR (7SM3)
605
605
  21 => 'SH', #JR (7SM3)
606
+ 22 => 'FL2', #JR (ILME-FX2)
607
+ 23 => 'FL3', #JR (ILME-FX2)
606
608
  100 => 'Neutral', #JD
607
609
  101 => 'Clear', #JD
608
610
  102 => 'Deep', #JD
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.49';
68
+ $VERSION = '4.50';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -723,6 +723,7 @@ sub GetAFPointGrid($$;$);
723
723
  '9F 48 48 48 24 24 A1 06' => 'Yongnuo YN40mm F2.8N', #30
724
724
  '9F 54 68 68 18 18 A2 06' => 'Yongnuo YN100mm F2N', #30
725
725
  '9F 4C 44 44 18 18 A1 06' => 'Yongnuo YN35mm F2', #30
726
+ '9F 4D 50 50 14 14 A0 06' => 'Yongnuo YN50mm F1.8N', #30
726
727
  #
727
728
  '02 40 44 5C 2C 34 02 00' => 'Exakta AF 35-70mm 1:3.5-4.5 MC',
728
729
  #
@@ -41,7 +41,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
41
41
  use Image::ExifTool::Exif;
42
42
  use Image::ExifTool::APP12;
43
43
 
44
- $VERSION = '2.88';
44
+ $VERSION = '2.89';
45
45
 
46
46
  sub PrintLensInfo($$$);
47
47
 
@@ -1944,14 +1944,14 @@ my %indexInfo = (
1944
1944
  0x201 => 'Airplanes; Passenger/Transport Plane Found',
1945
1945
  0x202 => 'Airplanes; Small Plane/Fighter Jet Found',
1946
1946
  0x203 => 'Airplanes; Helicopter Found',
1947
- 0x300 => 'Trains, Object Not Found',
1948
- 0x301 => 'Trains, Object Found',
1949
- 0x400 => 'Birds, Object Not Found',
1950
- 0x401 => 'Birds Object Found',
1951
- 0x500 => 'Dogs & Cats, Object Not Found',
1952
- 0x501 => 'Dogs & Cats, Object Found',
1953
- 0x600 => 'Human, Object Not Found',
1954
- 0x601 => 'Human, Object Found',
1947
+ 0x300 => 'Trains; Object Not Found',
1948
+ 0x301 => 'Trains; Object Found',
1949
+ 0x400 => 'Birds; Object Not Found',
1950
+ 0x401 => 'Birds; Object Found',
1951
+ 0x500 => 'Dogs & Cats; Object Not Found',
1952
+ 0x501 => 'Dogs & Cats; Object Found',
1953
+ 0x600 => 'Human; Object Not Found',
1954
+ 0x601 => 'Human; Object Found',
1955
1955
  },
1956
1956
  },
1957
1957
  0x030a => {
@@ -2514,7 +2514,7 @@ my %indexInfo = (
2514
2514
  2, 3, 5 or numbers: 1. Mode, 2. Shot number, 3. Mode bits, 5. Shutter mode,
2515
2515
  6. Shooting mode (E-M1 II and later models)
2516
2516
  },
2517
- PrintConv => q {
2517
+ PrintConv => q{
2518
2518
  my ($a,$b,$c,$d,$e,$f) = split ' ',$val;
2519
2519
  if ($b) {
2520
2520
  $b = ', Shot ' . $b;
@@ -2618,10 +2618,10 @@ my %indexInfo = (
2618
2618
  RawConv => '$$self{ImageStabilization} = $val',
2619
2619
  PrintConv => {
2620
2620
  0 => 'Off',
2621
- 1 => 'On, S-IS1 (All Direction Shake I.S.)', #25
2622
- 2 => 'On, S-IS2 (Vertical Shake I.S.)', #25
2623
- 3 => 'On, S-IS3 (Horizontal Shake I.S.)', #25
2624
- 4 => 'On, S-IS Auto (Auto I.S.)', #25
2621
+ 1 => 'On, S-IS1 (All Direction Shake IS)', #25
2622
+ 2 => 'On, S-IS2 (Vertical Shake IS)', #25
2623
+ 3 => 'On, S-IS3 (Horizontal Shake IS)', #25
2624
+ 4 => 'On, S-IS Auto', #25
2625
2625
  },
2626
2626
  },
2627
2627
  0x804 => { #PH (E-M1 with firmware update)
@@ -2793,15 +2793,16 @@ my %indexInfo = (
2793
2793
  FIRST_ENTRY => 0,
2794
2794
  FORMAT => 'int16u',
2795
2795
  WRITABLE => 1,
2796
- 0 => { Name => 'AFFrameSize', Format => 'int16u[2]' },
2797
- 2 => { Name => 'AFFocusArea', Format => 'int16u[4]' },
2796
+ NOTES => 'Position and size of selected AF Area and focus areas for OM cameras.',
2797
+ 0 => { Name => 'AFFrameSize', Format => 'int16u[2]' , Notes => 'width/height of the focus/select frame' },
2798
+ 2 => { Name => 'AFFocusArea', Format => 'int16u[4]' , Notes => 'X Y width height. The center is identical to AFPointSelected' },
2798
2799
  6 => {
2799
2800
  Name => 'AFSelectedArea',
2800
2801
  Format => 'int16u[4]',
2801
2802
  Notes => q{
2802
- X Y width height. Subject Detection OFF: User selected AF target area.
2803
- Subject Detection ON: Area related to subject
2804
- }
2803
+ X Y width height. Subject and Face Detection OFF: User selected AF target
2804
+ area. Subject or Face Detection ON: Area related to detection process.
2805
+ },
2805
2806
  },
2806
2807
  );
2807
2808
 
@@ -2810,21 +2811,35 @@ my %indexInfo = (
2810
2811
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2811
2812
  WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
2812
2813
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
2813
- NOTES => 'Subject Detection for OM cameras.',
2814
2814
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2815
2815
  FIRST_ENTRY => 0,
2816
2816
  FORMAT => 'int16u',
2817
2817
  WRITABLE => 1,
2818
- 0 => { Name => 'SubjectDetectFrameSize', Format => 'int16u[2]' },
2818
+ NOTES => q{
2819
+ Subject Detection data for OM cameras. These tags contain the areas of a
2820
+ subject and its elements detected by Subject Detection, or the main face and
2821
+ eyes detected by Face Detection. These elements can be either L1 details
2822
+ (level 1, such as head, chassis, airplane nose, etc.) or L2 details (level
2823
+ 2, such as eye, driver, airplane cockpit, etc.).
2824
+ },
2825
+ 0 => { Name => 'SubjectDetectFrameSize', Format => 'int16u[2]', Notes => 'width/height of the subject detect frame' },
2819
2826
  2 => { Name => 'SubjectDetectArea', Format => 'int16u[4]', Notes => 'X Y width height' },
2820
- 6 => { Name => 'SubjectDetectDetail', Format => 'int16u[4]' },
2827
+ 6 => { Name => 'SubjectDetectDetail', Format => 'int16u[4]', Notes => 'X Y width height' },
2821
2828
  10 => {
2822
2829
  Name => 'SubjectDetectStatus',
2830
+ Notes => q{
2831
+ Indicates the presence of data related to subject and face detection, not
2832
+ necessarily corresponding to the detection result
2833
+ },
2823
2834
  PrintConv => {
2824
- 256 => 'Level 2 Detail', # (eye, airplane cockpit, ...)
2825
- 257 => 'Level 1 Detail', # (head, airplane nose, ...)
2826
- 260 => 'Subject Detected, No Detail',
2827
- 772 => 'No Detection',
2835
+ 0 => 'No Data',
2836
+ 257 => 'Subject and L1 Detail Detected', # (head, airplane nose, ...)
2837
+ 258 => 'Subject and L2 Detail Detected', # (eye, airplane cockpit, ...)
2838
+ 260 => 'Subject Detected, No Details',
2839
+ 515 => 'Face and Eye Detected',
2840
+ 516 => 'Face Detected',
2841
+ 771 => 'Subject Detail or Eye Detected',
2842
+ 772 => 'No Subject or Face Detected',
2828
2843
  },
2829
2844
  },
2830
2845
  );
@@ -59,7 +59,7 @@ use Image::ExifTool::Exif;
59
59
  use Image::ExifTool::GPS;
60
60
  use Image::ExifTool::HP;
61
61
 
62
- $VERSION = '3.54';
62
+ $VERSION = '3.55';
63
63
 
64
64
  sub CryptShutterCount($$);
65
65
  sub PrintFilter($$$);
@@ -1977,6 +1977,8 @@ my %binaryDataAttrs = (
1977
1977
  '18 3' => 'Auto Program (MTF)', #PH (NC)
1978
1978
  '18 22' => 'Auto Program (Shallow DOF)', #PH (NC)
1979
1979
  '20 22' => 'Blur Control', #PH (Q)
1980
+ '24 0' => 'Aperture Priority (Adv.Hyp)', #KG
1981
+ '25 0' => 'Manual Exposure (Adv.Hyp)', #KG
1980
1982
  '26 0' => 'Shutter and Aperture Priority (TAv)', #PH (K-3III)
1981
1983
  '249 0' => 'Movie (TAv)', #31
1982
1984
  '250 0' => 'Movie (TAv, Auto Aperture)', #31
@@ -1998,10 +2000,13 @@ my %binaryDataAttrs = (
1998
2000
  Count => 4,
1999
2001
  PrintConv => [{
2000
2002
  0 => 'Single-frame', # (also Interval Shooting for K-01 - PH)
2001
- 1 => 'Continuous', # (K-5 Hi)
2002
- 2 => 'Continuous (Lo)', #PH (K-5)
2003
+ 1 => 'Continuous', #KG *ist D, *ist Ds, *ist DS2, K110D, K10D, K100D, K100D Super, K20D, Ricoh GR III / GR IIIx
2004
+ #KG Hi: K200D, K-x, K-7, K-r, K-5, K-01, K-5 II, K-5 IIs, K-30, K-500, K-50, K-S1, K-S2, K-70
2005
+ #KG High: K-3, K-3 II, K-1, K-1 II, KP, K-3 III, K-3 III Mono
2006
+ 2 => 'Continuous (Lo)', #KG all models listed under 'Hi'
2003
2007
  3 => 'Burst', #PH (K20D)
2004
- 4 => 'Continuous (Medium)', #PH (K-3)
2008
+ 4 => 'Continuous (Medium)', #KG all models listed under 'High'
2009
+ 5 => 'Continuous (Low)', #KG all models listed under 'High'
2005
2010
  255 => 'Video', #PH (K-x)
2006
2011
  },{
2007
2012
  0 => 'No Timer',
@@ -3009,7 +3014,7 @@ my %binaryDataAttrs = (
3009
3014
  }],
3010
3015
  0x022b => [{
3011
3016
  Name => 'LevelInfoK3III',
3012
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"',
3017
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
3013
3018
  SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LevelInfoK3III' },
3014
3019
  },{ #PH (K-5)
3015
3020
  Name => 'LevelInfo',
@@ -5066,7 +5071,7 @@ my %binaryDataAttrs = (
5066
5071
  },
5067
5072
  0x14 => {
5068
5073
  Name => 'AFPointValues',
5069
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
5074
+ Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
5070
5075
  Format => 'int16uRev[69]',
5071
5076
  Unknown => 1,
5072
5077
  Notes => 'some unknown values related to each AFPoint',
@@ -5079,7 +5084,7 @@ my %binaryDataAttrs = (
5079
5084
  },
5080
5085
  0x12a => {
5081
5086
  Name => 'AFPointsSelected', # (should probably be "AFPointSelected", but the bitmask allows multiple points)
5082
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
5087
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5083
5088
  Notes => q{
5084
5089
  K-3III only. 41 selectable AF points from a total of 101 available in a 13x9
5085
5090
  grid. Columns are labelled A-M and rows are 1-9. The center point is G5. The
@@ -5097,7 +5102,7 @@ my %binaryDataAttrs = (
5097
5102
  0x18f => { # byte has a value of 1 if corresponding AF point is ... in focus maybe?
5098
5103
  # usually the same points as AFPointsSelected above, but not always
5099
5104
  Name => 'AFPointsUnknown',
5100
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
5105
+ Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
5101
5106
  Unknown => 1,
5102
5107
  Format => 'int8u[101]',
5103
5108
  PrintConv => \&AFPointNamesK3III,
@@ -5105,7 +5110,7 @@ my %binaryDataAttrs = (
5105
5110
  0x1fa => {
5106
5111
  Name => 'LiveView',
5107
5112
  Notes => 'decoded only for the K-3 III',
5108
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # and other models?
5113
+ Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
5109
5114
  PrintConv => { 0 => 'Off', 1 => 'On' },
5110
5115
  },
5111
5116
  0x1fd => {
@@ -5114,6 +5119,54 @@ my %binaryDataAttrs = (
5114
5119
  Condition => '$$self{Model} eq "PENTAX K-3 II"',
5115
5120
  PrintConv => { 0 => 'Off', 1 => 'Short', 2 => 'Medium', 3 => 'Long' },
5116
5121
  },
5122
+ 0x021f => { #KG
5123
+ Name => 'FirstFrameActionInAFC',
5124
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5125
+ PrintConv => {
5126
+ '0' => 'Auto',
5127
+ '1' => 'Release Priority',
5128
+ '2' => 'Focus Priority',
5129
+ # there is at least another value '3' but I couldn't figure out the
5130
+ # meaning. However, this occurs for a few AF-S captures, so it has
5131
+ # no real practical meaning.
5132
+ },
5133
+ },
5134
+ 0x0220 => { #KG
5135
+ Name => 'ActionInAFCCont',
5136
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5137
+ PrintConv => {
5138
+ '0' => 'Auto',
5139
+ '1' => 'Focus Priority',
5140
+ '2' => 'FPS Priority',
5141
+ },
5142
+ },
5143
+ 545 => { #KG
5144
+ Name => 'AFCHold',
5145
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5146
+ Mask => 0x03,
5147
+ PrintConv => { 0 => 'Low', 1 => 'Medium', 2 => 'High', 3 => 'Off' },
5148
+ },
5149
+ 545.1 => { #KG
5150
+ Name => 'AFCSensitivity',
5151
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5152
+ Mask => 0x0c,
5153
+ PrintConv => '5 - $val',
5154
+ PrintConvInv => '5 - $val',
5155
+ },
5156
+ 545.2 => { #KG
5157
+ Name => 'AFCPointTracking',
5158
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5159
+ Mask => 0x70,
5160
+ PrintConv => { 0 => 'Type 1', 1 => 'Type 2', 2 => 'Type 3' },
5161
+ },
5162
+ 0x0960 => { #KG
5163
+ Name => 'SubjectRecognition',
5164
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5165
+ PrintConv => {
5166
+ 0 => 'Off',
5167
+ 1 => 'On',
5168
+ },
5169
+ },
5117
5170
  );
5118
5171
 
5119
5172
  # AF information for K-01 and later (ref Karsten Gieselmann private communication)
@@ -6023,6 +6076,14 @@ my %binaryDataAttrs = (
6023
6076
  K-500. It is currently not known where the corresponding temperature
6024
6077
  sensors are located in the camera.
6025
6078
  },
6079
+ 0x0a => { #KG
6080
+ Name => 'ShotNumber',
6081
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
6082
+ # The exact same method to detect this tag with a similar set of files
6083
+ # does not reveal anything for K-1. Is this only available for K-3-III ?
6084
+ # Internal representation starts at 0 for the 1st shot
6085
+ ValueConv => '$val+1',
6086
+ },
6026
6087
  # (it would be nice to know where these temperature sensors are located,
6027
6088
  # but since according to the manual the Slow Shutter Speed NR Auto mode
6028
6089
  # is based on "internal temperature", my guess is that there must be
@@ -802,7 +802,8 @@ numerical, and generated automatically otherwise.
802
802
  Shift : [Writable tags only] Specifies type of shift to apply if this
803
803
  value may be shifted. Set to 'Time' for shifting date/time
804
804
  tags, or '0' to prevent tag from being shifted or
805
- conditionally deleted.
805
+ conditionally deleted. May not be used for Writable Composite
806
+ tags.
806
807
 
807
808
  Writable : Indicates this tag can be written (or not written if Writable
808
809
  is set to zero), and for EXIF and QuickTime tables gives
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.74';
37
+ $VERSION = '3.75';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -76,6 +76,9 @@ sub PrintInvLensSpec($;$$);
76
76
  6 => 'Sony LA-EA4 Adapter',
77
77
  7 => 'Sony LA-EA5 Adapter', #JR
78
78
  13 => 'Samyang AF 35-150mm F2-2.8',
79
+ 17 => 'Samyang RS 21mm F3.5', #JR
80
+ 18 => 'Samyang RS 28mm F3.5', #JR
81
+ 19 => 'Samyang RS 32mm F2.8', #JR
79
82
  20 => 'Samyang AF 35mm F1.4 P FE', #JR
80
83
  21 => 'Samyang AF 14-24mm F2.8', #JR
81
84
  # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
@@ -251,9 +254,11 @@ sub PrintInvLensSpec($;$$);
251
254
  49474.8 => 'Viltrox 50mm F1.8 FE', #JR
252
255
  49474.9 => 'Viltrox 75mm F1.2 E', #JR
253
256
  '49474.10' => 'Viltrox 20mm F2.8 FE', #JR
257
+ '49474.11' => 'Viltrox AF 135/1.8 LAB FE', #JR
254
258
  49475 => 'Tamron 50-300mm F4.5-6.3 Di III VC VXD', #JR (Model A069)
255
259
  49476 => 'Tamron 28-300mm F4-7.1 Di III VC VXD', #JR (Model A074)
256
260
  49477 => 'Tamron 90mm F2.8 Di III Macro VXD', #JR (Model F072)
261
+ 49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
257
262
 
258
263
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
259
264
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -315,6 +320,8 @@ sub PrintInvLensSpec($;$$);
315
320
  50550 => 'Sigma 28-105mm F2.8 DG DN | A', #JR (024)
316
321
  50551 => 'Sigma 28-45mm F1.8 DG DN | A', #JR (024)
317
322
  50553 => 'Sigma 300-600mm F4 DG OS | S', #JR (025)
323
+ 50554 => 'Sigma 16-300mm F3.5-6.7 DC OS | C', #JR (025)
324
+ 50556 => 'Sigma 17-40mm F1.8 DC | C', #JR (025)
318
325
 
319
326
  # lenses listed in the Sigma MC-11 list, but not yet seen:
320
327
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -1198,7 +1205,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1198
1205
  # FocusMode for SLT/HV/ILCA and NEX/ILCE; doesn't seem to apply to DSC models (always 0)
1199
1206
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1200
1207
  Name => 'FocusMode',
1201
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1208
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3)/)',
1202
1209
  Writable => 'int8u',
1203
1210
  Priority => 0,
1204
1211
  PrintConv => {
@@ -1230,7 +1237,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1230
1237
  },
1231
1238
  },{
1232
1239
  Name => 'AFAreaModeSetting',
1233
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1240
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3))/',
1234
1241
  Notes => 'NEX, ILCE and some DSC models',
1235
1242
  RawConv => '$$self{AFAreaILCE} = $val',
1236
1243
  DataMember => 'AFAreaILCE',
@@ -1267,7 +1274,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1267
1274
  # observed values in range (0 0) to (640 480), with center (320 240) often seen
1268
1275
  # for NEX-5R/6, positions appear to be in an 11x9 grid
1269
1276
  Name => 'FlexibleSpotPosition',
1270
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1277
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3))/',
1271
1278
  Writable => 'int16u',
1272
1279
  Count => 2,
1273
1280
  Notes => q{
@@ -1427,7 +1434,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1427
1434
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1428
1435
  0x2021 => { #JR
1429
1436
  Name => 'AFTracking',
1430
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1437
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3)/)',
1431
1438
  Writable => 'int8u',
1432
1439
  PrintConv => {
1433
1440
  0 => 'Off',
@@ -1723,7 +1730,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1723
1730
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1724
1731
  {
1725
1732
  Name => 'Tag9050a',
1726
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1733
+ Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-(FX2|FX3)|ZV-)/',
1727
1734
  SubDirectory => {
1728
1735
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1729
1736
  ByteOrder => 'LittleEndian',
@@ -1744,7 +1751,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1744
1751
  },
1745
1752
  },{
1746
1753
  Name => 'Tag9050d',
1747
- Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
1754
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ILME-FX2|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
1748
1755
  SubDirectory => {
1749
1756
  TagTable => 'Image::ExifTool::Sony::Tag9050d',
1750
1757
  ByteOrder => 'LittleEndian',
@@ -2185,6 +2192,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2185
2192
  398 => 'ILX-LR1', #JR
2186
2193
  399 => 'ZV-E10M2', #JR
2187
2194
  400 => 'ILCE-1M2', #PH
2195
+ 401 => 'DSC-RX1RM3', #JR
2196
+ 406 => 'ILME-FX2', #JR
2188
2197
  },
2189
2198
  },
2190
2199
  0xb020 => { #2
@@ -6327,6 +6336,8 @@ my %pictureProfile2010 = (
6327
6336
  38 => 'VV2',
6328
6337
  39 => 'IN',
6329
6338
  40 => 'SH',
6339
+ 48 => 'FL2', #JR
6340
+ 49 => 'FL3', #JR
6330
6341
  },
6331
6342
  );
6332
6343
  my %isoSetting2010 = (
@@ -8236,7 +8247,7 @@ my %isoSetting2010 = (
8236
8247
  0x000a => {
8237
8248
  Name => 'ShutterCount',
8238
8249
  # number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
8239
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR))/',
8250
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR)|ILME-FX2)/',
8240
8251
  Format => 'int32u',
8241
8252
  Notes => 'total number of mechanical shutter actuations',
8242
8253
  RawConv => '$val & 0x00ffffff',
@@ -8497,7 +8508,7 @@ my %isoSetting2010 = (
8497
8508
  },
8498
8509
  0x002a => [{
8499
8510
  Name => 'Quality2',
8500
- Condition => '$$self{Model} !~ /^(ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
8511
+ Condition => '$$self{Model} !~ /^(DSC-RX1RM3|ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX2|FX3|FX30)|ZV-(E1|E10M2))\b/',
8501
8512
  PrintConv => {
8502
8513
  0 => 'JPEG',
8503
8514
  1 => 'RAW',
@@ -8522,7 +8533,7 @@ my %isoSetting2010 = (
8522
8533
  # },
8523
8534
  0x0053 => {
8524
8535
  Name => 'ModelReleaseYear',
8525
- Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
8536
+ Condition => '$$self{Model} !~ /^(DSC-RX1RM3|ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX2|FX3|FX30)|ZV-(E1|E10M2))\b/',
8526
8537
  Format => 'int8u',
8527
8538
  PrintConv => 'sprintf("20%.2d", $val)',
8528
8539
  },
@@ -8565,7 +8576,7 @@ my %isoSetting2010 = (
8565
8576
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8566
8577
 
8567
8578
  0x03e2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 181', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8568
- 0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8579
+ 0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186|187)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8569
8580
  0x044e => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 178', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8570
8581
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8571
8582
  0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167 and $$self{Software} !~ /^ILCE-7M4 (v2|v3)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -9893,10 +9904,19 @@ my %isoSetting2010 = (
9893
9904
  WRITE_PROC => \&WriteEnciphered,
9894
9905
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9895
9906
  FORMAT => 'int8u',
9896
- NOTES => 'Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.',
9907
+ DATAMEMBER => [ 0x00, 0x37 ],
9908
+ NOTES => q{
9909
+ Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX2/FX3/FX30,
9910
+ ZV-E1/E10M2.
9911
+ },
9897
9912
  FIRST_ENTRY => 0,
9898
9913
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9899
- 0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
9914
+ 0x0000 => {
9915
+ Name => 'Tag9416_0000',
9916
+ Hidden => 1, # (hide from documentation)
9917
+ PrintConv => 'sprintf("%3d",$val)',
9918
+ RawConv => '$$self{TagVersion} = $val; undef', # (used only to set TagVersion)
9919
+ },
9900
9920
  0x0004 => {
9901
9921
  Name => 'SonyISO',
9902
9922
  Format => 'int16u',
@@ -9945,7 +9965,9 @@ my %isoSetting2010 = (
9945
9965
  PrintConv => \%sonyExposureProgram3,
9946
9966
  },
9947
9967
  0x0037 => {
9948
- Name => 'CreativeStyle',
9968
+ Name => 'CreativeStyle',
9969
+ Notes => 'offsets after this are shifted by 1 for the ILME-FX2',
9970
+ Hook => '$varSize += 1 if $$self{Model} =~ /^(ILME-FX2)/',
9949
9971
  PrintConv => {
9950
9972
  0 => 'Standard',
9951
9973
  1 => 'Vivid',
@@ -9964,6 +9986,8 @@ my %isoSetting2010 = (
9964
9986
  16 => 'VV2',
9965
9987
  17 => 'IN',
9966
9988
  18 => 'SH',
9989
+ 19 => 'FL2',
9990
+ 20 => 'FL3',
9967
9991
  255 => 'Off',
9968
9992
  },
9969
9993
  },
@@ -10056,7 +10080,7 @@ my %isoSetting2010 = (
10056
10080
  },
10057
10081
  0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2070G
10058
10082
  Name => 'VignettingCorrParams',
10059
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
10083
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-(FX2|FX30)|ZV-(E1|E10M2))\b/',
10060
10084
  Format => 'int16s[32]',
10061
10085
  },
10062
10086
  0x08b5 => {
@@ -10095,7 +10119,7 @@ my %isoSetting2010 = (
10095
10119
  },
10096
10120
  0x0945 => {
10097
10121
  Name => 'ChromaticAberrationCorrParams',
10098
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
10122
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-(FX2|FX30)|ZV-(E1|E10M2))\b/',
10099
10123
  Format => 'int16s[32]',
10100
10124
  },
10101
10125
  );
@@ -643,6 +643,7 @@ my %tagLookup = (
643
643
  'acdseeregionnameassigntype' => { 505 => [\'Regions','RegionsRegionListNameAssignType'] },
644
644
  'acdseeregiontype' => { 505 => [\'Regions','RegionsRegionListType'] },
645
645
  'actionadvised' => { 138 => 0x2a },
646
+ 'actioninafccont' => { 371 => 0x220 },
646
647
  'activearea' => { 125 => 0xc68d },
647
648
  'actived-lighting' => { 246 => 0x22, 304 => 0x24 },
648
649
  'actived-lightingmode' => { 304 => 0x25 },
@@ -746,9 +747,12 @@ my %tagLookup = (
746
747
  'afassistbeam' => { 2 => 0x8, 90 => 0x50e, 91 => 0x4, 92 => 0x5, 93 => 0x4, 94 => 0x4, 95 => 0x5 },
747
748
  'afassistlamp' => { 360 => 0x31 },
748
749
  'afbuttonpressed' => { 455 => [0x83,0x283] },
750
+ 'afchold' => { 371 => 0x221 },
749
751
  'afconfidence' => { 1 => 0x3d },
750
752
  'afconfigtool' => { 2 => 0x1 },
751
753
  'afcoordinatesavailable' => { 203 => 0x7, 204 => 0x7 },
754
+ 'afcpointtracking' => { 371 => '545.2' },
755
+ 'afcsensitivity' => { 371 => '545.1' },
752
756
  'afdefocus' => { 371 => 0x6 },
753
757
  'afdetectionmethod' => { 200 => 0x4, 201 => 0x4, 203 => 0x4, 204 => 0x4 },
754
758
  'afduringliveview' => { 90 => 0x511 },
@@ -3132,6 +3136,7 @@ my %tagLookup = (
3132
3136
  'firmwarerevision2' => { 431 => 0xc },
3133
3137
  'firmwareversion' => { 7 => 0x10b, 11 => 0x136, 14 => 0xff, 15 => 0x107, 145 => [0x415,0xce5], 161 => 0x57, 163 => 'FirmwareVersion', 358 => 0x320, 360 => 0x2, 362 => 0x3109, 399 => 0x230, 425 => ['CNFV','FIRM','info'], 428 => 0x18, 429 => 0x2a, 433 => 0x2 },
3134
3138
  'firmwareversions' => { 408 => 0x301 },
3139
+ 'firstframeactioninafc' => { 371 => 0x21f },
3135
3140
  'firstphotodate' => { 518 => 'FirstPhotoDate' },
3136
3141
  'firstpublicationdate' => { 346 => 'FirstPublicationDate' },
3137
3142
  'fixtureidentifier' => { 138 => 0x16, 526 => 'FixtureIdentifier' },
@@ -6647,7 +6652,7 @@ my %tagLookup = (
6647
6652
  'shotlocation' => { 562 => 'shotLocation' },
6648
6653
  'shotlogdata' => { 512 => 'shot_log_data' },
6649
6654
  'shotname' => { 425 => 'shot', 562 => 'shotName' },
6650
- 'shotnumber' => { 562 => 'shotNumber' },
6655
+ 'shotnumber' => { 404 => 0xa, 562 => 'shotNumber' },
6651
6656
  'shotnumbersincepowerup' => { 471 => 0x44e, 490 => 0x1a, 491 => 0x16, 492 => 0xa },
6652
6657
  'shotnumbersincepowerup2' => { 455 => 0x200 },
6653
6658
  'shotsize' => { 562 => 'shotSize' },
@@ -6871,7 +6876,9 @@ my %tagLookup = (
6871
6876
  'subjectlocation' => { 125 => 0xa214, 538 => 'SubjectLocation' },
6872
6877
  'subjectmotion' => { 316 => '78.2', 317 => '78.2', 327 => '78.2', 330 => 0x103, 331 => 0x103, 332 => 0x119 },
6873
6878
  'subjectprogram' => { 188 => 0x22 },
6879
+ 'subjectrecognition' => { 371 => 0x960 },
6874
6880
  'subjectreference' => { 138 => 0xc },
6881
+ 'subjectswitching' => { 2 => 0x15 },
6875
6882
  'subjecttodetect' => { 2 => 0x14 },
6876
6883
  'sublabels1' => { 544 => [\'TagStructure','TagStructureSubLabels'] },
6877
6884
  'sublabels2' => { 544 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
@@ -12767,7 +12774,6 @@ my %tagExists = (
12767
12774
  'tag940a' => 1,
12768
12775
  'tag940c' => 1,
12769
12776
  'tag940e' => 1,
12770
- 'tag9416_0000' => 1,
12771
12777
  'taggedpdf' => 1,
12772
12778
  'taggingtime' => 1,
12773
12779
  'tailnumber' => 1,
@@ -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 28629 tags, with 17828 unique tag names.
15
+ They contain a total of 28636 tags, with 17834 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
@@ -10339,6 +10339,7 @@ Information about creative filter settings.
10339
10339
  18 AFStatusViewfinder int32s
10340
10340
  19 InitialAFPointInServo int32s
10341
10341
  20 SubjectToDetect int32s
10342
+ 21 SubjectSwitching int32s
10342
10343
  24 EyeDetection int32s
10343
10344
 
10344
10345
  =head3 Canon RawBurstInfo Tags
@@ -19406,6 +19407,8 @@ any information found here will be extracted, even if the tag is not listed.
19406
19407
 
19407
19408
  =head3 Olympus AFTargetInfo Tags
19408
19409
 
19410
+ Position and size of selected AF Area and focus areas for OM cameras.
19411
+
19409
19412
  Index2 Tag Name Writable
19410
19413
  ------ -------- --------
19411
19414
  0 AFFrameSize int16u[2]
@@ -19414,7 +19417,11 @@ any information found here will be extracted, even if the tag is not listed.
19414
19417
 
19415
19418
  =head3 Olympus SubjectDetectInfo Tags
19416
19419
 
19417
- Subject Detection for OM cameras.
19420
+ Subject Detection data for OM cameras. These tags contain the areas of a
19421
+ subject and its elements detected by Subject Detection, or the main face and
19422
+ eyes detected by Face Detection. These elements can be either L1 details
19423
+ (level 1, such as head, chassis, airplane nose, etc.) or L2 details (level
19424
+ 2, such as eye, driver, airplane cockpit, etc.).
19418
19425
 
19419
19426
  Index2 Tag Name Writable
19420
19427
  ------ -------- --------
@@ -20724,6 +20731,12 @@ Flash information tags for the K10D, K20D and K200D.
20724
20731
  399 AFPointsUnknown? int8u[101]~
20725
20732
  506 LiveView int8u
20726
20733
  509 AFHold int8u
20734
+ 543 FirstFrameActionInAFC int8u
20735
+ 544 ActionInAFCCont int8u
20736
+ 545 AFCHold int8u & 0x03
20737
+ 545.1 AFCSensitivity int8u & 0x0c
20738
+ 545.2 AFCPointTracking int8u & 0x70
20739
+ 2400 SubjectRecognition int8u
20727
20740
 
20728
20741
  =head3 Pentax KelvinWB Tags
20729
20742
 
@@ -20965,6 +20978,7 @@ sensors are located in the camera.
20965
20978
 
20966
20979
  Index1 Tag Name Writable
20967
20980
  ------ -------- --------
20981
+ 10 ShotNumber no
20968
20982
  12 SensorTemperature int16s
20969
20983
  14 SensorTemperature2 int16s
20970
20984
  20 CameraTemperature4 int16s
@@ -23614,11 +23628,11 @@ E-mount models.
23614
23628
 
23615
23629
  =head3 Sony Tag9416 Tags
23616
23630
 
23617
- Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.
23631
+ Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX2/FX3/FX30,
23632
+ ZV-E1/E10M2.
23618
23633
 
23619
23634
  Index1 Tag Name Writable
23620
23635
  ------ -------- --------
23621
- 0 Tag9416_0000 no
23622
23636
  4 SonyISO no
23623
23637
  6 StopsAboveBaseISO no
23624
23638
  10 SonyExposureTime2 no
@@ -695,12 +695,11 @@ TAG: foreach $tagInfo (@matchingTags) {
695
695
  my $src = GetTagTable($$table{SRC_TABLE});
696
696
  $writeProc = $$src{WRITE_PROC} unless $writeProc;
697
697
  }
698
- {
698
+ if ($writeProc) {
699
699
  # make sure module is loaded if the writeProc is a string
700
700
  unless (ref $writeProc) {
701
701
  my $module = $writeProc;
702
- $module =~ s/::\w+$//;
703
- eval "require $module";
702
+ $module =~ s/::\w+$// and eval "require $module";
704
703
  }
705
704
  no strict 'refs';
706
705
  next unless $writeProc and &$writeProc();
@@ -3405,7 +3404,7 @@ sub InsertTagValues($$;$$$$)
3405
3404
  undef $advFmtSelf;
3406
3405
  $didExpr = 1; # set flag indicating an expression was evaluated
3407
3406
  }
3408
- unless (defined $val) {
3407
+ unless (defined $val or (ref $opt and $$self{OPTIONS}{UndefTags})) {
3409
3408
  $val = $$self{OPTIONS}{MissingTagValue};
3410
3409
  unless (defined $val) {
3411
3410
  my $g3 = ($docGrp and $var !~ /\b(main|doc\d+):/i) ? $docGrp . ':' : '';
@@ -5053,6 +5052,7 @@ TryLib: for ($lib=$strptimeLib; ; $lib='') {
5053
5052
  last;
5054
5053
  }
5055
5054
  if (not $lib) {
5055
+ last unless $$self{OPTIONS}{StrictDate};
5056
5056
  warn $wrn || "Install POSIX::strptime or Time::Piece for inverse date/time conversions\n";
5057
5057
  return undef;
5058
5058
  } elsif ($lib eq 'POSIX::strptime') {
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf $configFile @configFiles $noConfig);
31
31
 
32
- $VERSION = '13.33';
32
+ $VERSION = '13.34';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -1181,6 +1181,7 @@ my @availableOptions = (
1181
1181
  [ 'SystemTags', undef, 'extract additional File System tags' ],
1182
1182
  [ 'TextOut', \*STDOUT, 'file for Verbose/HtmlDump output' ],
1183
1183
  [ 'TimeZone', undef, 'local time zone' ],
1184
+ [ 'UndefTags', undef, 'leave undef tags in -if conditions when -m or -f are used' ],
1184
1185
  [ 'Unknown', 0, 'flag to get values of unknown tags (0-2)' ],
1185
1186
  [ 'UserParam', { }, 'user parameters for additional user-defined tag values' ],
1186
1187
  [ 'Validate', undef, 'perform additional validation' ],
@@ -1199,6 +1199,11 @@ For Unix-based systems, the value may also be a time zone ID like
1199
1199
  "America/New_York". Requires Time::Piece on Windows, or POSIX::tzset on
1200
1200
  other systems. Default is undef.
1201
1201
 
1202
+ =item UndefTags
1203
+
1204
+ Flag to maintain undefined tag values in the application B<-if> expression
1205
+ when the B<-f> or B<-m> option is also used. Default is undef.
1206
+
1202
1207
  =item Unknown
1203
1208
 
1204
1209
  Flag to get the values of unknown tags. If set to 1, unknown tags are
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.33
3
+ Version: 13.34
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('13.33.0')
4
+ VERSION = Gem::Version.new('13.34.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: 13.33.0
4
+ version: 13.34.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: 2025-07-30 00:00:00.000000000 Z
12
+ date: 2025-09-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool