exiftool_vendored 12.41.0 → 12.42.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: 71c2e8314b54966900545a4af41762c9c6d8974544187d914e82eb7c71b4ab3c
4
- data.tar.gz: f277eb099be9d35e2979e80ce97629f824acb338059360ca7f41ef15e1d43fbe
3
+ metadata.gz: f04f379fa443cf663ef664f3df6f25a51f3f10032e77df170b4acfdb1caf25a0
4
+ data.tar.gz: 5f5915a880562b0113657c7105cd394d78bccef7da9858573baf6fdbf624853f
5
5
  SHA512:
6
- metadata.gz: 7fac789e834098bd6506929bac1aef023b5573d08d67cdda9b521884d1d946bc875e9ff7d19ad3a68d46c098030bb43e14bb7510d7233a5f0f842d5f3c712047
7
- data.tar.gz: 3d18856320e32e9c86258212c1ff7c909b388747604f8b7fbe8cf2e001cb12d672affc8986acc82a8c03f1a61ecd447a556b44b63670b659180d5ab2de3664b4
6
+ metadata.gz: '08ac6468381fc32451778b63d29469a676adc963eda607bafe0493766d4eb52151ca825385fdb689ecac4e6b01faf6441914d985716d57646331a3ffa437b5dd'
7
+ data.tar.gz: 489352e145414a723380fdf952310050d95f7f4a466f00a8b4ce50fd02134ed650d9d5468c5a2c9fb83e828e240bf2279dec821157f58c22e73cea5928080f5d
data/bin/Changes CHANGED
@@ -4,9 +4,29 @@ ExifTool Version History
4
4
 
5
5
  RSS feed: https://exiftool.org/rss.xml
6
6
 
7
- Note: The most recent production release is Version 12.30. (Other versions are
7
+ Note: The most recent production release is Version 12.42. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ June 1, 2022 - Version 12.42 (production release)
11
+
12
+ - Added support for reading maker notes from Panasonic DC-GH6 videos
13
+ - Added conversion for Samsung MCCData
14
+ - Added a new Nikon LensID (thanks Chris)
15
+ - Added a few new Canon LensType values
16
+ - Added a couple of new Olympus StackedImage values (thanks Eberhard)
17
+ - Added a few new values for some Nikon Settings tags (thanks Warren Hatch)
18
+ - Added a "lang:" element to the -json output for alternate language tags when
19
+ -D, -H or -t is used
20
+ - Update DNG writer to not issue an error when writing DNG 1.6 files
21
+ - Decode information from DJI "ae_dbg_info" maker notes
22
+ - Decode Olympus AISubjectTrackingMode
23
+ - Changed ExifTool FileSize print conversion to use kB/MB/GB units instead of
24
+ KiB/MiB/GiB
25
+ - Changed "is not shiftable" warning to appear in -v (instead of just -v3)
26
+ output
27
+ - Patched to allow PDF Encrypt object to be "null"
28
+ - Fixed bug reading ICC_Profile 'meta' tags
29
+
10
30
  Apr. 7, 2022 - Version 12.41
11
31
 
12
32
  - Added support for "OM SYSTEM" maker notes
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.41"
50
+ "version" : "12.42"
51
51
  }
data/bin/META.yml CHANGED
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 12.41
31
+ version: 12.42
data/bin/README CHANGED
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
107
107
  terminal window to extract and run ExifTool:
108
108
 
109
109
  cd ~/Desktop
110
- gzip -dc Image-ExifTool-12.41.tar.gz | tar -xf -
111
- cd Image-ExifTool-12.41
110
+ gzip -dc Image-ExifTool-12.42.tar.gz | tar -xf -
111
+ cd Image-ExifTool-12.42
112
112
  ./exiftool t/images/ExifTool.jpg
113
113
 
114
114
  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.41';
14
+ my $version = '12.42';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  BEGIN {
@@ -2554,8 +2554,9 @@ TAG: foreach $tag (@foundTags) {
2554
2554
  if ($showTagID or $outFormat < 0) {
2555
2555
  $val = { val => $val };
2556
2556
  if ($showTagID) {
2557
- my $id = $et->GetTagID($tag);
2557
+ my ($id, $lang) = $et->GetTagID($tag);
2558
2558
  $id = sprintf('0x%.4x', $id) if $showTagID eq 'H' and $id =~ /^\d+$/;
2559
+ $$val{lang} = $lang if $lang;
2559
2560
  $$val{id} = $id;
2560
2561
  }
2561
2562
  if ($tabFormat) {
@@ -5466,7 +5467,7 @@ with this command:
5466
5467
 
5467
5468
  produces output like this:
5468
5469
 
5469
- -- Generated by ExifTool 12.41 --
5470
+ -- Generated by ExifTool 12.42 --
5470
5471
  File: a.jpg - 2003:10:31 15:44:19
5471
5472
  (f/5.6, 1/60s, ISO 100)
5472
5473
  File: b.jpg - 2006:05:23 11:57:38
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.57';
91
+ $VERSION = '4.58';
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)
@@ -197,6 +197,7 @@ $VERSION = '4.57';
197
197
  44 => 'Canon EF 90-300mm f/4.5-5.6', #32
198
198
  45 => 'Canon EF-S 18-55mm f/3.5-5.6 [II]', #PH (same ID for version II, ref 20)
199
199
  46 => 'Canon EF 28-90mm f/4-5.6', #32
200
+ # 46 => 'Tamron 28-300mm f/3.5-6.3 Di VC PZD (A010)', # (also possibly?)
200
201
  47 => 'Zeiss Milvus 35mm f/2 or 50mm f/2', #IB
201
202
  47.1 => 'Zeiss Milvus 50mm f/2 Makro', #IB
202
203
  47.2 => 'Zeiss Milvus 135mm f/2 ZE', #IB
@@ -571,7 +572,9 @@ $VERSION = '4.57';
571
572
  61494 => 'Canon CN-E 85mm T1.3 L F', #PH
572
573
  61495 => 'Canon CN-E 135mm T2.2 L F', #PH
573
574
  61496 => 'Canon CN-E 35mm T1.5 L F', #PH
574
- # see RFLensType tag for master list of 61182 RF lenses
575
+ #
576
+ # see RFLensType tag for master list of 61182 RF lenses
577
+ #
575
578
  61182 => 'Canon RF 50mm F1.2L USM or other Canon RF Lens',
576
579
  61182.1 => 'Canon RF 24-105mm F4L IS USM',
577
580
  61182.2 => 'Canon RF 28-70mm F2L USM',
@@ -603,7 +606,12 @@ $VERSION = '4.57';
603
606
  '61182.28' => 'Canon RF 400mm F2.8L IS USM', #IB
604
607
  '61182.29' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
605
608
  '61182.30' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
606
- #'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM',
609
+ '61182.31' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
610
+ # we need the RFLensType values for the following...
611
+ '61182.32' => 'Canon RF 800mm F5.6L IS USM', #PH (NC)
612
+ '61182.33' => 'Canon RF 1200mm F8L IS USM', #PH (NC)
613
+ '61182.34' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
614
+ '61182.35' => 'Canon RF 100mm F2.8L MACRO IS USM', #(NC)
607
615
  65535 => 'n/a',
608
616
  );
609
617
 
@@ -6804,6 +6812,7 @@ my %ciMaxFocal = (
6804
6812
  289 => 'Canon RF 400mm F2.8L IS USM', #IB
6805
6813
  290 => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
6806
6814
  291 => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
6815
+ 292 => 'Canon RF 600mm F4L IS USM', #GiaZopatti
6807
6816
  #xxx => 'Canon RF 100mm F2.8L MACRO IS USM',
6808
6817
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6809
6818
  },
@@ -11,11 +11,14 @@ package Image::ExifTool::DJI;
11
11
 
12
12
  use strict;
13
13
  use vars qw($VERSION);
14
+ use Image::ExifTool qw(:DataAccess :Utils);
14
15
  use Image::ExifTool::Exif;
15
16
  use Image::ExifTool::XMP;
16
17
  use Image::ExifTool::GPS;
17
18
 
18
- $VERSION = '1.04';
19
+ $VERSION = '1.05';
20
+
21
+ sub ProcessDJIInfo($$$);
19
22
 
20
23
  my %convFloat2 = (
21
24
  PrintConv => 'sprintf("%+.2f", $val)',
@@ -44,6 +47,29 @@ my %convFloat2 = (
44
47
  0x0b => { Name => 'CameraRoll', Writable => 'float', %convFloat2 },
45
48
  );
46
49
 
50
+ # DJI debug maker notes
51
+ %Image::ExifTool::DJI::Info = (
52
+ PROCESS_PROC => \&ProcessDJIInfo,
53
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
54
+ NOTES => 'Tags written by some DJI drones.',
55
+ VARS => { LONG_TAGS => 2 },
56
+ ae_dbg_info => { Name => 'AEDebugInfo' },
57
+ ae_histogram_info => { Name => 'AEHistogramInfo' },
58
+ ae_local_histogram => { Name => 'AELocalHistogram' },
59
+ ae_liveview_histogram_info => { Name => 'AELiveViewHistogramInfo' },
60
+ ae_liveview_local_histogram => { Name => 'AELiveViewLocalHistogram' },
61
+ awb_dbg_info => { Name => 'AWBDebugInfo' },
62
+ af_dbg_info => { Name => 'AFDebugInfo' },
63
+ hiso => { Name => 'Histogram' },
64
+ xidiri => { Name => 'Xidiri' },
65
+ 'GimbalDegree(Y,P,R)'=> { Name => 'GimbalDegree' },
66
+ 'FlightDegree(Y,P,R)'=> { Name => 'FlightDegree' },
67
+ adj_dbg_info => { Name => 'ADJDebugInfo' },
68
+ sensor_id => { Name => 'SensorID' },
69
+ 'FlightSpeed(X,Y,Z)' => { Name => 'FlightSpeed' },
70
+ hyperlapse_dbg_info => { Name => 'HyperlapsDebugInfo' },
71
+ );
72
+
47
73
  # thermal parameters in APP4 of DJI ZH20T images (ref forum11401)
48
74
  %Image::ExifTool::DJI::ThermalParams = (
49
75
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -134,6 +160,38 @@ my %convFloat2 = (
134
160
  },
135
161
  );
136
162
 
163
+ #------------------------------------------------------------------------------
164
+ # Process DJI infor (ref PH)
165
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
166
+ # Returns: 1 on success
167
+ sub ProcessDJIInfo($$$)
168
+ {
169
+ my ($et, $dirInfo, $tagTbl) = @_;
170
+ my $dataPt = $$dirInfo{DataPt};
171
+ my $dirStart = $$dirInfo{DirStart} || 0;
172
+ my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $dirStart);
173
+ if ($dirStart) {
174
+ my $buff = substr($$dataPt, $dirStart, $dirLen);
175
+ $dataPt = \$buff;
176
+ }
177
+ while ($$dataPt =~ /\G\[(.*?)\](?=(\[|$))/sg) {
178
+ my ($tag, $val) = split /:/, $1, 2;
179
+ if ($val =~ /^([\x20-\x7f]+)\0*$/) {
180
+ $val = $1;
181
+ } else {
182
+ my $buff = $val;
183
+ $val = \$buff;
184
+ }
185
+ if (not $$tagTbl{$tag} and $tag=~ /^[-_a-zA-Z0-9]+$/) {
186
+ my $name = $tag;
187
+ $name =~ s/_([a-z])/_\U$1/g;
188
+ AddTagToTable($tagTbl, $tag, { Name => Image::ExifTool::MakeTagName($name) });
189
+ }
190
+ $et->HandleTag($tagTbl, $tag, $val);
191
+ }
192
+ return 1;
193
+ }
194
+
137
195
  __END__
138
196
 
139
197
  =head1 NAME
@@ -680,8 +680,14 @@ sub ProcessAdobeMakN($$$)
680
680
  my $dataPos = $$dirInfo{DataPos};
681
681
  my $hdrLen = 6;
682
682
 
683
- # hack for extra 12 bytes in MakN header of JPEG converted to DNG by Adobe Camera Raw
684
- # (4 bytes "00 00 00 01" followed by 8 unknown bytes)
683
+ # 2018-09-27: hack for extra 12 bytes in MakN header of JPEG converted to DNG
684
+ # by Adobe Camera Raw (4 bytes "00 00 00 01" followed by 8 unknown bytes)
685
+ # - this is because CameraRaw copies the maker notes from the wrong location
686
+ # in a JPG image (off by 12 bytes presumably due to the JPEG headers)
687
+ # - this hack won't work in most cases because the extra bytes are not consistent
688
+ # since they are just the data that existed in the JPG before the maker notes
689
+ # - also, the last 12 bytes of the maker notes will be missing
690
+ # - 2022-04-26: this bug still exists in Camera Raw 14.3
685
691
  $hdrLen += 12 if $len >= 18 and substr($$dataPt, $start+6, 4) eq "\0\0\0\x01";
686
692
 
687
693
  my $dirStart = $start + $hdrLen; # pointer to maker note directory
@@ -3397,6 +3397,15 @@ my %opcodeInfo = (
3397
3397
  },
3398
3398
  # the DJI FC2103 writes some interesting stuff here (with sections labelled
3399
3399
  # awb_dbg_info, ae_dbg_info, ae_histogram_info, af_dbg_info, hiso, xidiri) - PH
3400
+ {
3401
+ Name => 'MakerNoteDJIInfo',
3402
+ Condition => '$$valPt =~ /^\[ae_dbg_info:/',
3403
+ MakerNotes => 1,
3404
+ Binary => 1,
3405
+ WriteGroup => 'IFD0', # (for Validate)
3406
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::Info' },
3407
+ Format => 'undef',
3408
+ },
3400
3409
  {
3401
3410
  Name => 'DNGPrivateData',
3402
3411
  Flags => [ 'Binary', 'Protected' ],
@@ -25,7 +25,7 @@ use strict;
25
25
  use vars qw($VERSION);
26
26
  use Image::ExifTool qw(:DataAccess :Utils);
27
27
 
28
- $VERSION = '1.38';
28
+ $VERSION = '1.39';
29
29
 
30
30
  sub ProcessICC($$);
31
31
  sub ProcessICC_Profile($$$);
@@ -522,11 +522,11 @@ my %manuSig = ( #6
522
522
  prmg => 'Perceptual Reference Medium Gamut',
523
523
  },
524
524
  },
525
- meta => { #5 (EVENTUALLY DECODE THIS ONCE WE HAVE A SAMPLE!!)
525
+ meta => { #5
526
526
  Name => 'Metadata',
527
527
  SubDirectory => {
528
528
  TagTable => 'Image::ExifTool::ICC_Profile::Metadata',
529
- Validate => '$type eq "meta"',
529
+ Validate => '$type eq "dict"',
530
530
  },
531
531
  },
532
532
 
@@ -891,6 +891,7 @@ my %manuSig = ( #6
891
891
  ManufacturerName => { },
892
892
  MediaColor => { },
893
893
  MediaWeight => { },
894
+ CreatorApp => { },
894
895
  );
895
896
 
896
897
  #------------------------------------------------------------------------------
@@ -1000,7 +1001,7 @@ sub FormatICCTag($$$)
1000
1001
  }
1001
1002
 
1002
1003
  #------------------------------------------------------------------------------
1003
- # Process ICC metadata record (ref 5) (UNTESTED!)
1004
+ # Process ICC metadata record (ref 5)
1004
1005
  # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
1005
1006
  # Returns: 1 on success
1006
1007
  sub ProcessMetadata($$$)
@@ -1032,7 +1033,7 @@ sub ProcessMetadata($$$)
1032
1033
  my $namePtr = Get32u($dataPt, $entry);
1033
1034
  my $nameLen = Get32u($dataPt, $entry + 4);
1034
1035
  my $valuePtr = Get32u($dataPt, $entry + 8);
1035
- my $valueLen = Get32u($dataPt, $entry + 16);
1036
+ my $valueLen = Get32u($dataPt, $entry + 12);
1036
1037
  next unless $namePtr and $valuePtr; # ignore if offsets are zero
1037
1038
  if ($namePtr < $minPtr or $namePtr + $nameLen > $dirLen or
1038
1039
  $valuePtr < $minPtr or $valuePtr + $valueLen > $dirLen)
@@ -1040,8 +1041,8 @@ sub ProcessMetadata($$$)
1040
1041
  $et->Warn('Corrupted ICC meta dictionary');
1041
1042
  last;
1042
1043
  }
1043
- my $tag = substr($dataPt, $dirStart + $namePtr, $nameLen);
1044
- my $val = substr($dataPt, $dirStart + $valuePtr, $valueLen);
1044
+ my $tag = substr($$dataPt, $dirStart + $namePtr, $nameLen);
1045
+ my $val = substr($$dataPt, $dirStart + $valuePtr, $valueLen);
1045
1046
  $tag = $et->Decode($tag, 'UTF16', 'MM', 'UTF8');
1046
1047
  $val = $et->Decode($val, 'UTF16', 'MM');
1047
1048
  # generate tagInfo if it doesn't exist
@@ -1050,6 +1051,7 @@ sub ProcessMetadata($$$)
1050
1051
  $name =~ s/\s+(.)/\u$1/g;
1051
1052
  $name =~ tr/-_a-zA-Z0-9//dc;
1052
1053
  next unless length $name;
1054
+ $et->VPrint(0, $$et{INDENT}, "[adding $tag]\n");
1053
1055
  AddTagToTable($tagTablePtr, $tag, { Name => $name });
1054
1056
  }
1055
1057
  $et->HandleTag($tagTablePtr, $tag, $val);
@@ -1312,7 +1314,7 @@ sub ProcessICC_Profile($$$)
1312
1314
  DirName => $name,
1313
1315
  Parent => $$dirInfo{DirName},
1314
1316
  );
1315
- my $type = substr($$dataPt, $valuePtr, 4);
1317
+ my $type = $fmt;
1316
1318
  #### eval Validate ($type)
1317
1319
  if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
1318
1320
  $et->Warn("Invalid ICC $name data");
@@ -6,7 +6,7 @@
6
6
  # Revisions: 09/12/2005 - P. Harvey Created
7
7
  # 09/08/2020 - PH Added Lyrics3 support
8
8
  #
9
- # References: 1) http://www.id3.org/
9
+ # References: 1) http://www.id3.org/ (now https://id3.org)
10
10
  # 2) http://www.mp3-tech.org/
11
11
  # 3) http://www.fortunecity.com/underworld/sonic/3/id3tag.html
12
12
  # 4) https://id3.org/Lyrics3
@@ -76,9 +76,9 @@ my %dateTimeConv = (
76
76
  OGG, FLAC, APE, MPC and RealAudio files. ID3v2 tags which support multiple
77
77
  languages (eg. Comment and Lyrics) are extracted by specifying the tag name,
78
78
  followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg.
79
- "Comment-spa"). See L<http://www.id3.org/> for the official ID3
80
- specification and L<http://www.loc.gov/standards/iso639-2/php/code_list.php>
81
- for a list of ISO 639-2 language codes.
79
+ "Comment-spa"). See L<https://id3.org/> for the official ID3 specification
80
+ and L<http://www.loc.gov/standards/iso639-2/php/code_list.php> for a list of
81
+ ISO 639-2 language codes.
82
82
  },
83
83
  ID3v1 => {
84
84
  Name => 'ID3v1',
@@ -1661,7 +1661,7 @@ under the same terms as Perl itself.
1661
1661
 
1662
1662
  =over 4
1663
1663
 
1664
- =item L<http://www.id3.org/>
1664
+ =item L<https://id3.org/>
1665
1665
 
1666
1666
  =item L<http://www.mp3-tech.org/>
1667
1667
 
@@ -89,6 +89,11 @@ my $debug; # set to 1 to enable debugging code
89
89
  FixBase => 1, # necessary for AVI and MOV videos
90
90
  },
91
91
  },
92
+ {
93
+ Name => 'MakerNoteDJIInfo',
94
+ Condition => '$$valPt =~ /^\[ae_dbg_info:/',
95
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::Info' },
96
+ },
92
97
  {
93
98
  Name => 'MakerNoteDJI',
94
99
  Condition => '$$self{Make} eq "DJI" and $$valPt !~ /^...\@AMBA/s',
@@ -63,7 +63,7 @@ use Image::ExifTool::Exif;
63
63
  use Image::ExifTool::GPS;
64
64
  use Image::ExifTool::XMP;
65
65
 
66
- $VERSION = '4.05';
66
+ $VERSION = '4.06';
67
67
 
68
68
  sub LensIDConv($$$);
69
69
  sub ProcessNikonAVI($$$);
@@ -667,6 +667,7 @@ sub GetAFPointGrid($$;$);
667
667
  '00 54 55 55 0C 0C 00 00' => 'Voigtlander Nokton 58mm F1.4 SLII',
668
668
  '00 40 64 64 2C 2C 00 00' => 'Voigtlander APO-Lanthar 90mm F3.5 SLII Close Focus',
669
669
  '07 40 30 45 2D 35 03 02.2' => 'Voigtlander Ultragon 19-35mm F3.5-4.5 VMV', #NJ
670
+ '71 48 64 64 24 24 00 00' => 'Voigtlander APO-Skopar 90mm F2.8 SL IIs', #30
670
671
  #
671
672
  '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
672
673
  '00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
@@ -8586,6 +8587,8 @@ my %nikonFocalConversions = (
8586
8587
  4 => 'Wide (L)',
8587
8588
  5 => '3D',
8588
8589
  6 => 'Auto',
8590
+ 12 => 'Wide (C1)',
8591
+ 13 => 'Wide (C2)',
8589
8592
  },
8590
8593
  },
8591
8594
  530 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
@@ -8656,6 +8659,8 @@ my %nikonFocalConversions = (
8656
8659
  2 => 'H.265 8-bit (MOV)',
8657
8660
  3 => 'H.265 10-bit (MOV)',
8658
8661
  4 => 'ProRes 422 HQ 10-bit (MOV)',
8662
+ 5 => 'ProRes RAW HQ 12-bit (MOV)',
8663
+ 6 => 'NRAW 12-bit (NEV)'
8659
8664
  },
8660
8665
  },
8661
8666
  616 => {
@@ -15,7 +15,7 @@ package Image::ExifTool::NikonCustom;
15
15
  use strict;
16
16
  use vars qw($VERSION);
17
17
 
18
- $VERSION = '1.19';
18
+ $VERSION = '1.20';
19
19
 
20
20
  my %buttonsZ9= (
21
21
  0 => 'None',
@@ -74,6 +74,9 @@ my %buttonsZ9= (
74
74
  82 => 'Select To Send (PC)',
75
75
  83 => 'Select To Send (FTP)',
76
76
  85 => 'Control Lock',
77
+ 86 => 'Save Focus Position',
78
+ 87 => 'Recall Focus Position',
79
+ 88 => 'Recall Shooting Functions (Hold)',
77
80
  );
78
81
  my %dialsZ9 = (
79
82
  0 => '1 Frame',
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
40
40
  use Image::ExifTool::Exif;
41
41
  use Image::ExifTool::APP12;
42
42
 
43
- $VERSION = '2.77';
43
+ $VERSION = '2.78';
44
44
 
45
45
  sub PrintLensInfo($$$);
46
46
 
@@ -1911,6 +1911,23 @@ my %indexInfo = (
1911
1911
  Name => 'FocusBracketStepSize',
1912
1912
  Writable => 'int8u',
1913
1913
  },
1914
+ 0x309 => { #forum13341
1915
+ Name => 'AISubjectTrackingMode',
1916
+ Writable => 'int16u',
1917
+ ValueConv => '($val >> 8) . " " . ($val & 0xff)',
1918
+ ValueConvInv => 'my @a = split " ", $val; $val = $a[0]*256 + $a[1]',
1919
+ PrintConv => [{
1920
+ 0 => 'Off',
1921
+ 1 => 'Motorsports',
1922
+ 2 => 'Airplnes',
1923
+ 3 => 'Trains',
1924
+ 4 => 'Birds',
1925
+ 5 => 'Dogs & Cats',
1926
+ },{
1927
+ 0 => 'Object Not Found',
1928
+ 1 => 'Object Found',
1929
+ }],
1930
+ },
1914
1931
  0x400 => { #6
1915
1932
  Name => 'FlashMode',
1916
1933
  Writable => 'int16u',
@@ -2538,11 +2555,13 @@ my %indexInfo = (
2538
2555
  '3 8' => 'ND8 (3EV)', #IB
2539
2556
  '3 16' => 'ND16 (4EV)', #IB
2540
2557
  '3 32' => 'ND32 (5EV)', #IB
2558
+ '3 64' => 'ND64 (6EV)', #forum13341
2541
2559
  '5 4' => 'HDR1', #forum8906
2542
2560
  '6 4' => 'HDR2', #forum8906
2543
2561
  '8 8' => 'Tripod high resolution', #IB
2544
2562
  '9 *' => 'Focus-stacked (* images)', #IB (* = 2-15)
2545
- '11 16' => 'Hand-held high resolution', #IB (perhaps '11 15' would be possible, ref 24)
2563
+ '11 12' => 'Hand-held high resolution (11 12)', #forum13341 (OM-1)
2564
+ '11 16' => 'Hand-held high resolution (11 16)', #IB (perhaps '11 15' would be possible, ref 24)
2546
2565
  OTHER => sub {
2547
2566
  my ($val, $inv, $conv) = @_;
2548
2567
  if ($inv) {
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
  require Exporter;
23
23
 
24
- $VERSION = '1.54';
24
+ $VERSION = '1.55';
25
25
 
26
26
  sub FetchObject($$$$);
27
27
  sub ExtractObject($$;$$);
@@ -2276,6 +2276,7 @@ XRef:
2276
2276
  # load XRef stream in hybrid file if it exists
2277
2277
  push @xrefOffsets, $$mainDict{XRefStm}, 'XRefStm' if $$mainDict{XRefStm};
2278
2278
  $encrypt = $$mainDict{Encrypt} if $$mainDict{Encrypt};
2279
+ undef $encrypt if $encrypt and $encrypt eq 'null'; # (have seen "null")
2279
2280
  if ($$mainDict{ID} and ref $$mainDict{ID} eq 'ARRAY') {
2280
2281
  $id = ReadPDFValue($mainDict->{ID}->[0]);
2281
2282
  }
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
  use Image::ExifTool::Exif;
39
39
 
40
- $VERSION = '2.16';
40
+ $VERSION = '2.17';
41
41
 
42
42
  sub ProcessLeicaLEIC($$$);
43
43
  sub WhiteBalanceConv($;$$);
@@ -2472,6 +2472,15 @@ my %shootingMode = (
2472
2472
  Start => 12,
2473
2473
  },
2474
2474
  },
2475
+ 0x200080 => { # (GH6)
2476
+ Name => 'ExifData',
2477
+ Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
2478
+ SubDirectory => {
2479
+ TagTable => 'Image::ExifTool::Exif::Main',
2480
+ ProcessProc => \&Image::ExifTool::ProcessTIFF,
2481
+ Start => 12,
2482
+ },
2483
+ },
2475
2484
  );
2476
2485
 
2477
2486
  # Panasonic Composite tags
@@ -171,7 +171,7 @@ sub DecodeAFPoints($$$$;$);
171
171
  '3 255.4' => 'Sigma DF EX Aspherical 28-70mm F2.8', #12
172
172
  '3 255.5' => 'Sigma AF Tele 400mm F5.6 Multi-coated', #JD
173
173
  '3 255.6' => 'Sigma 24-60mm F2.8 EX DG', #PH
174
- '3 255.7' => 'Sigma 70-300mm F4-5.6 Macro', #JD
174
+ '3 255.7' => 'Sigma 70-300mm F4-5.6 Macro', #JD (also DG Macro, ref 27)
175
175
  '3 255.8' => 'Sigma 55-200mm F4-5.6 DC', #JD
176
176
  '3 255.9' => 'Sigma 18-50mm F2.8 EX DC', #JD (also Macro version - PH)
177
177
  '4 1' => 'smc PENTAX-FA SOFT 28mm F2.8',
@@ -248,11 +248,12 @@ my %unicodeString = (
248
248
  Protected => 1,
249
249
  Notes => q{
250
250
  this tag indicates provides a way for XMP-aware applications to indicate
251
- that the XMP is synchronized with the IPTC. When writing, special values of
252
- "new" and "old" represent the digests of the IPTC from the edited and
253
- original files respectively, and are undefined if the IPTC does not exist in
254
- the respective file. Set this to "new" as an indication that the XMP is
255
- synchronized with the IPTC
251
+ that the XMP is synchronized with the IPTC. The MWG recommendation is to
252
+ ignore the XMP if IPTCDigest exists and doesn't match the CurrentIPTCDigest.
253
+ When writing, special values of "new" and "old" represent the digests of the
254
+ IPTC from the edited and original files respectively, and are undefined if
255
+ the IPTC does not exist in the respective file. Set this to "new" as an
256
+ indication that the XMP is synchronized with the IPTC
256
257
  },
257
258
  # also note the 'new' feature requires that the IPTC comes before this tag is written
258
259
  ValueConv => 'unpack("H*", $val)',
@@ -22,7 +22,7 @@ use vars qw($VERSION %samsungLensTypes);
22
22
  use Image::ExifTool qw(:DataAccess :Utils);
23
23
  use Image::ExifTool::Exif;
24
24
 
25
- $VERSION = '1.51';
25
+ $VERSION = '1.52';
26
26
 
27
27
  sub WriteSTMN($$$);
28
28
  sub ProcessINFO($$$);
@@ -1000,7 +1000,238 @@ my %formatMinMax = (
1000
1000
  '0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
1001
1001
  # 0x0aa1-name - seen 'MCC_Data'
1002
1002
  # 0x0aa1 - seen '204','222','234','302','429'
1003
- '0x0aa1' => 'MCCData', # (unknown meaning)
1003
+ '0x0aa1' => {
1004
+ Name => 'MCCData',
1005
+ Groups => { 2 => 'Location' },
1006
+ PrintConv => {
1007
+ 202 => 'Greece',
1008
+ 204 => 'Netherlands',
1009
+ 206 => 'Belgium',
1010
+ 208 => 'France',
1011
+ 212 => 'Monaco',
1012
+ 213 => 'Andorra',
1013
+ 214 => 'Spain',
1014
+ 216 => 'Hungary',
1015
+ 218 => 'Bosnia & Herzegov.',
1016
+ 219 => 'Croatia',
1017
+ 220 => 'Serbia',
1018
+ 221 => 'Kosovo',
1019
+ 222 => 'Italy',
1020
+ 226 => 'Romania',
1021
+ 228 => 'Switzerland',
1022
+ 230 => 'Czech Rep.',
1023
+ 231 => 'Slovakia',
1024
+ 232 => 'Austria',
1025
+ 234 => 'United Kingdom',
1026
+ 235 => 'United Kingdom',
1027
+ 238 => 'Denmark',
1028
+ 240 => 'Sweden',
1029
+ 242 => 'Norway',
1030
+ 244 => 'Finland',
1031
+ 246 => 'Lithuania',
1032
+ 247 => 'Latvia',
1033
+ 248 => 'Estonia',
1034
+ 250 => 'Russian Federation',
1035
+ 255 => 'Ukraine',
1036
+ 257 => 'Belarus',
1037
+ 259 => 'Moldova',
1038
+ 260 => 'Poland',
1039
+ 262 => 'Germany',
1040
+ 266 => 'Gibraltar',
1041
+ 268 => 'Portugal',
1042
+ 270 => 'Luxembourg',
1043
+ 272 => 'Ireland',
1044
+ 274 => 'Iceland',
1045
+ 276 => 'Albania',
1046
+ 278 => 'Malta',
1047
+ 280 => 'Cyprus',
1048
+ 282 => 'Georgia',
1049
+ 283 => 'Armenia',
1050
+ 284 => 'Bulgaria',
1051
+ 286 => 'Turkey',
1052
+ 288 => 'Faroe Islands',
1053
+ 289 => 'Abkhazia',
1054
+ 290 => 'Greenland',
1055
+ 292 => 'San Marino',
1056
+ 293 => 'Slovenia',
1057
+ 294 => 'Macedonia',
1058
+ 295 => 'Liechtenstein',
1059
+ 297 => 'Montenegro',
1060
+ 302 => 'Canada',
1061
+ 308 => 'St. Pierre & Miquelon',
1062
+ 310 => 'United States / Guam',
1063
+ 311 => 'United States / Guam',
1064
+ 312 => 'United States',
1065
+ 316 => 'United States',
1066
+ 330 => 'Puerto Rico',
1067
+ 334 => 'Mexico',
1068
+ 338 => 'Jamaica',
1069
+ 340 => 'French Guiana / Guadeloupe / Martinique',
1070
+ 342 => 'Barbados',
1071
+ 344 => 'Antigua and Barbuda',
1072
+ 346 => 'Cayman Islands',
1073
+ 348 => 'British Virgin Islands',
1074
+ 350 => 'Bermuda',
1075
+ 352 => 'Grenada',
1076
+ 354 => 'Montserrat',
1077
+ 356 => 'Saint Kitts and Nevis',
1078
+ 358 => 'Saint Lucia',
1079
+ 360 => 'St. Vincent & Gren.',
1080
+ 362 => 'Bonaire, Sint Eustatius and Saba / Curacao / Netherlands Antilles',
1081
+ 363 => 'Aruba',
1082
+ 364 => 'Bahamas',
1083
+ 365 => 'Anguilla',
1084
+ 366 => 'Dominica',
1085
+ 368 => 'Cuba',
1086
+ 370 => 'Dominican Republic',
1087
+ 372 => 'Haiti',
1088
+ 374 => 'Trinidad and Tobago',
1089
+ 376 => 'Turks and Caicos Islands / US Virgin Islands',
1090
+ 400 => 'Azerbaijan',
1091
+ 401 => 'Kazakhstan',
1092
+ 402 => 'Bhutan',
1093
+ 404 => 'India',
1094
+ 405 => 'India',
1095
+ 410 => 'Pakistan',
1096
+ 412 => 'Afghanistan',
1097
+ 413 => 'Sri Lanka',
1098
+ 414 => 'Myanmar (Burma)',
1099
+ 415 => 'Lebanon',
1100
+ 416 => 'Jordan',
1101
+ 417 => 'Syrian Arab Republic',
1102
+ 418 => 'Iraq',
1103
+ 419 => 'Kuwait',
1104
+ 420 => 'Saudi Arabia',
1105
+ 421 => 'Yemen',
1106
+ 422 => 'Oman',
1107
+ 424 => 'United Arab Emirates',
1108
+ 425 => 'Israel / Palestinian Territory',
1109
+ 426 => 'Bahrain',
1110
+ 427 => 'Qatar',
1111
+ 428 => 'Mongolia',
1112
+ 429 => 'Nepal',
1113
+ 430 => 'United Arab Emirates',
1114
+ 431 => 'United Arab Emirates',
1115
+ 432 => 'Iran',
1116
+ 434 => 'Uzbekistan',
1117
+ 436 => 'Tajikistan',
1118
+ 437 => 'Kyrgyzstan',
1119
+ 438 => 'Turkmenistan',
1120
+ 440 => 'Japan',
1121
+ 441 => 'Japan',
1122
+ 450 => 'South Korea',
1123
+ 452 => 'Viet Nam',
1124
+ 454 => 'Hongkong, China',
1125
+ 455 => 'Macao, China',
1126
+ 456 => 'Cambodia',
1127
+ 457 => 'Laos P.D.R.',
1128
+ 460 => 'China',
1129
+ 466 => 'Taiwan',
1130
+ 467 => 'North Korea',
1131
+ 470 => 'Bangladesh',
1132
+ 472 => 'Maldives',
1133
+ 502 => 'Malaysia',
1134
+ 505 => 'Australia',
1135
+ 510 => 'Indonesia',
1136
+ 514 => 'Timor-Leste',
1137
+ 515 => 'Philippines',
1138
+ 520 => 'Thailand',
1139
+ 525 => 'Singapore',
1140
+ 528 => 'Brunei Darussalam',
1141
+ 530 => 'New Zealand',
1142
+ 537 => 'Papua New Guinea',
1143
+ 539 => 'Tonga',
1144
+ 540 => 'Solomon Islands',
1145
+ 541 => 'Vanuatu',
1146
+ 542 => 'Fiji',
1147
+ 544 => 'American Samoa',
1148
+ 545 => 'Kiribati',
1149
+ 546 => 'New Caledonia',
1150
+ 547 => 'French Polynesia',
1151
+ 548 => 'Cook Islands',
1152
+ 549 => 'Samoa',
1153
+ 550 => 'Micronesia',
1154
+ 552 => 'Palau',
1155
+ 553 => 'Tuvalu',
1156
+ 555 => 'Niue',
1157
+ 602 => 'Egypt',
1158
+ 603 => 'Algeria',
1159
+ 604 => 'Morocco',
1160
+ 605 => 'Tunisia',
1161
+ 606 => 'Libya',
1162
+ 607 => 'Gambia',
1163
+ 608 => 'Senegal',
1164
+ 609 => 'Mauritania',
1165
+ 610 => 'Mali',
1166
+ 611 => 'Guinea',
1167
+ 612 => 'Ivory Coast',
1168
+ 613 => 'Burkina Faso',
1169
+ 614 => 'Niger',
1170
+ 615 => 'Togo',
1171
+ 616 => 'Benin',
1172
+ 617 => 'Mauritius',
1173
+ 618 => 'Liberia',
1174
+ 619 => 'Sierra Leone',
1175
+ 620 => 'Ghana',
1176
+ 621 => 'Nigeria',
1177
+ 622 => 'Chad',
1178
+ 623 => 'Central African Rep.',
1179
+ 624 => 'Cameroon',
1180
+ 625 => 'Cape Verde',
1181
+ 626 => 'Sao Tome & Principe',
1182
+ 627 => 'Equatorial Guinea',
1183
+ 628 => 'Gabon',
1184
+ 629 => 'Congo, Republic',
1185
+ 630 => 'Congo, Dem. Rep.',
1186
+ 631 => 'Angola',
1187
+ 632 => 'Guinea-Bissau',
1188
+ 633 => 'Seychelles',
1189
+ 634 => 'Sudan',
1190
+ 635 => 'Rwanda',
1191
+ 636 => 'Ethiopia',
1192
+ 637 => 'Somalia',
1193
+ 638 => 'Djibouti',
1194
+ 639 => 'Kenya',
1195
+ 640 => 'Tanzania',
1196
+ 641 => 'Uganda',
1197
+ 642 => 'Burundi',
1198
+ 643 => 'Mozambique',
1199
+ 645 => 'Zambia',
1200
+ 646 => 'Madagascar',
1201
+ 647 => 'Reunion',
1202
+ 648 => 'Zimbabwe',
1203
+ 649 => 'Namibia',
1204
+ 650 => 'Malawi',
1205
+ 651 => 'Lesotho',
1206
+ 652 => 'Botswana',
1207
+ 653 => 'Swaziland',
1208
+ 654 => 'Comoros',
1209
+ 655 => 'South Africa',
1210
+ 657 => 'Eritrea',
1211
+ 659 => 'South Sudan',
1212
+ 702 => 'Belize',
1213
+ 704 => 'Guatemala',
1214
+ 706 => 'El Salvador',
1215
+ 708 => 'Honduras',
1216
+ 710 => 'Nicaragua',
1217
+ 712 => 'Costa Rica',
1218
+ 714 => 'Panama',
1219
+ 716 => 'Peru',
1220
+ 722 => 'Argentina Republic',
1221
+ 724 => 'Brazil',
1222
+ 730 => 'Chile',
1223
+ 732 => 'Colombia',
1224
+ 734 => 'Venezuela',
1225
+ 736 => 'Bolivia',
1226
+ 738 => 'Guyana',
1227
+ 740 => 'Ecuador',
1228
+ 744 => 'Paraguay',
1229
+ 746 => 'Suriname',
1230
+ 748 => 'Uruguay',
1231
+ 750 => 'Falkland Islands (Malvinas)',
1232
+ 901 => 'International Networks / Satellite Networks',
1233
+ },
1234
+ },
1004
1235
  # 0x0ab0-name - seen 'DualShot_Meta_Info'
1005
1236
  '0x0ab1-name' => {
1006
1237
  Name => 'DepthMapName',
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
19
19
  use strict;
20
20
  use vars qw($VERSION);
21
21
 
22
- $VERSION = '1.66';
22
+ $VERSION = '1.67';
23
23
 
24
24
  # this is a special table used to define command-line shortcuts
25
25
  # (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
@@ -118,6 +118,7 @@ $VERSION = '1.66';
118
118
  'MakerNoteCasio',
119
119
  'MakerNoteCasio2',
120
120
  'MakerNoteDJI',
121
+ 'MakerNoteDJIInfo',
121
122
  'MakerNoteFLIR',
122
123
  'MakerNoteFujiFilm',
123
124
  'MakerNoteGE',
@@ -894,6 +894,7 @@ my %tagLookup = (
894
894
  'aiservosecondimagepriority' => { 84 => 0x51a },
895
895
  'aiservotrackingmethod' => { 84 => 0x504 },
896
896
  'aiservotrackingsensitivity' => { 83 => 0x14, 84 => 0x502 },
897
+ 'aisubjecttrackingmode' => { 297 => 0x309 },
897
898
  'album' => { 372 => ['albm',"\xa9alb"], 374 => 'album', 380 => ['albm',"\xa9alb"], 503 => 'album' },
898
899
  'albumartist' => { 179 => 'WM/AlbumArtist', 372 => 'aART', 380 => 'albr' },
899
900
  'albumcoverurl' => { 179 => 'WM/AlbumCoverURL' },
@@ -4024,6 +4025,7 @@ my %tagLookup = (
4024
4025
  'makernotecasio' => { 117 => 'MakN', 119 => 0x927c },
4025
4026
  'makernotecasio2' => { 117 => 'MakN', 119 => 0x927c },
4026
4027
  'makernotedji' => { 117 => 'MakN', 119 => 0x927c },
4028
+ 'makernotedjiinfo' => { 117 => 'MakN', 119 => 0x927c },
4027
4029
  'makernoteflir' => { 117 => 'MakN', 119 => 0x927c },
4028
4030
  'makernotefujifilm' => { 117 => 'MakN', 119 => 0x927c },
4029
4031
  'makernotege' => { 117 => 'MakN', 119 => 0x927c },
@@ -7123,6 +7125,7 @@ my %tagExists = (
7123
7125
  'actualsoftpostpadding' => 1,
7124
7126
  'actualsoftprepadding' => 1,
7125
7127
  'additionalinfo' => 1,
7128
+ 'adjdebuginfo' => 1,
7126
7129
  'adjustedtbnimageheight' => 1,
7127
7130
  'adjustedtbnimagewidth' => 1,
7128
7131
  'adobe_cm' => 1,
@@ -7142,11 +7145,16 @@ my %tagExists = (
7142
7145
  'advancedscenemode' => 1,
7143
7146
  'adventrevision' => 1,
7144
7147
  'adventscale' => 1,
7148
+ 'aedebuginfo' => 1,
7145
7149
  'aeflags' => 1,
7150
+ 'aehistograminfo' => 1,
7146
7151
  'aeinfo' => 1,
7147
7152
  'aeinfo2' => 1,
7148
7153
  'aeinfo3' => 1,
7149
7154
  'aeinfounknown' => 1,
7155
+ 'aeliveviewhistograminfo' => 1,
7156
+ 'aeliveviewlocalhistogram' => 1,
7157
+ 'aelocalhistogram' => 1,
7150
7158
  'af-cprioritysel' => 1,
7151
7159
  'af-sprioritysel' => 1,
7152
7160
  'afarea' => 1,
@@ -7158,6 +7166,7 @@ my %tagExists = (
7158
7166
  'afcp' => 1,
7159
7167
  'afcp_iptc' => 1,
7160
7168
  'afcsettings' => 1,
7169
+ 'afdebuginfo' => 1,
7161
7170
  'aff1' => 1,
7162
7171
  'aff5' => 1,
7163
7172
  'affheader' => 1,
@@ -7400,6 +7409,7 @@ my %tagExists = (
7400
7409
  'avi1' => 1,
7401
7410
  'avif' => 1,
7402
7411
  'aviheader' => 1,
7412
+ 'awbdebuginfo' => 1,
7403
7413
  'awbinfo' => 1,
7404
7414
  'axisdistancex' => 1,
7405
7415
  'axisdistancey' => 1,
@@ -8100,6 +8110,7 @@ my %tagExists = (
8100
8110
  'creatingapplication' => 1,
8101
8111
  'creatingtransform' => 1,
8102
8112
  'creationpathvector' => 1,
8113
+ 'creatorapp' => 1,
8103
8114
  'creatorapplication' => 1,
8104
8115
  'creatorappversion' => 1,
8105
8116
  'creatoratom' => 1,
@@ -8817,6 +8828,8 @@ my %tagExists = (
8817
8828
  'flashused' => 1,
8818
8829
  'flashversion' => 1,
8819
8830
  'flavor' => 1,
8831
+ 'flightdegree' => 1,
8832
+ 'flightspeed' => 1,
8820
8833
  'flipstatus' => 1,
8821
8834
  'flir' => 1,
8822
8835
  'flir_gps' => 1,
@@ -8986,6 +8999,7 @@ my %tagExists = (
8986
8999
  'gifplaintextextension' => 1,
8987
9000
  'gifversion' => 1,
8988
9001
  'gimage' => 1,
9002
+ 'gimbaldegree' => 1,
8989
9003
  'gimbalpitch' => 1,
8990
9004
  'gimbalroll' => 1,
8991
9005
  'gimbalyaw' => 1,
@@ -9159,6 +9173,7 @@ my %tagExists = (
9159
9173
  'huffmantablelength' => 1,
9160
9174
  'huffmantablevalue' => 1,
9161
9175
  'hyperfocaldistance' => 1,
9176
+ 'hyperlapsdebuginfo' => 1,
9162
9177
  'hyperlinkbase' => 1,
9163
9178
  'hyperlinks' => 1,
9164
9179
  'hyperlinkschanged' => 1,
@@ -12093,6 +12108,7 @@ my %tagExists = (
12093
12108
  'xcfversion' => 1,
12094
12109
  'xclippathunits' => 1,
12095
12110
  'xheight' => 1,
12111
+ 'xidiri' => 1,
12096
12112
  'xmag' => 1,
12097
12113
  'xmethod' => 1,
12098
12114
  'xmldata' => 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 25775 tags, with 16465 unique tag names.
15
+ They contain a total of 25792 tags, with 16480 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
@@ -629,6 +629,7 @@ for the official EXIF 2.32 specification.
629
629
  MakerNoteCanon ExifIFD Canon
630
630
  MakerNoteCasio ExifIFD Casio
631
631
  MakerNoteCasio2 ExifIFD Casio Type2
632
+ MakerNoteDJIInfo ExifIFD DJI Info
632
633
  MakerNoteDJI ExifIFD DJI
633
634
  MakerNoteFLIR ExifIFD FLIR
634
635
  MakerNoteFujiFilm ExifIFD FujiFilm
@@ -854,6 +855,7 @@ for the official EXIF 2.32 specification.
854
855
  MakerNotePentax IFD0 Pentax
855
856
  MakerNotePentax5 IFD0 Pentax
856
857
  MakerNoteRicohPentax IFD0 Pentax
858
+ MakerNoteDJIInfo IFD0 DJI Info
857
859
  DNGPrivateData IFD0 int8u!
858
860
  0xc635 MakerNoteSafety IFD0 int16u
859
861
  0xc640 RawImageSegmentation - no
@@ -6755,6 +6757,7 @@ Metadata tags that exist.
6755
6757
 
6756
6758
  Tag Name Writable
6757
6759
  -------- --------
6760
+ CreatorApp no
6758
6761
  ManufacturerName no
6759
6762
  MediaColor no
6760
6763
  MediaWeight no
@@ -10651,6 +10654,30 @@ These tags belong to the ExifTool XMP-drone-dji family 1 group.
10651
10654
  RtkStdLon real
10652
10655
  SelfData string
10653
10656
 
10657
+ =head3 DJI Info Tags
10658
+
10659
+ Tags written by some DJI drones.
10660
+
10661
+ Tag ID Tag Name Writable
10662
+ ------ -------- --------
10663
+ 'FlightDegree(Y,P,R)' FlightDegree no
10664
+ 'FlightSpeed(X,Y,Z)' FlightSpeed no
10665
+ 'GimbalDegree(Y,P,R)' GimbalDegree no
10666
+ 'adj_dbg_info' ADJDebugInfo no
10667
+ 'ae_dbg_info' AEDebugInfo no
10668
+ 'ae_histogram_info' AEHistogramInfo no
10669
+ 'ae_liveview_histogram_info'
10670
+ AELiveViewHistogramInfo no
10671
+ 'ae_liveview_local_histogram'
10672
+ AELiveViewLocalHistogram no
10673
+ 'ae_local_histogram' AELocalHistogram no
10674
+ 'af_dbg_info' AFDebugInfo no
10675
+ 'awb_dbg_info' AWBDebugInfo no
10676
+ 'hiso' Histogram no
10677
+ 'hyperlapse_dbg_info' HyperlapsDebugInfo no
10678
+ 'sensor_id' SensorID no
10679
+ 'xidiri' Xidiri no
10680
+
10654
10681
  =head3 DJI ThermalParams Tags
10655
10682
 
10656
10683
  Thermal parameters extracted from APP4 of DJI RJPEG files from the ZH20T.
@@ -16641,6 +16668,7 @@ any information found here will be extracted, even if the tag is not listed.
16641
16668
  0x0306 AFFineTune int8u
16642
16669
  0x0307 AFFineTuneAdj int16s[3]
16643
16670
  0x0308 FocusBracketStepSize int8u
16671
+ 0x0309 AISubjectTrackingMode int16u
16644
16672
  0x0400 FlashMode int16u
16645
16673
  0x0401 FlashExposureComp rational64s
16646
16674
  0x0403 FlashRemoteControl int16u
@@ -17432,29 +17460,30 @@ iPalm.
17432
17460
  Tags extracted from the PANA and LEIC user data found in MP4 videos from
17433
17461
  various Panasonic and Leica models.
17434
17462
 
17435
- Index1 Tag Name Writable
17436
- ------ -------- --------
17437
- 0 Make no
17438
- 4 Model no
17439
- 12 Model no
17440
- 16 JPEG-likeData EXIF
17441
- 22 Model no
17442
- 52 Version1 no
17443
- 62 Version2 no
17444
- 80 MakerNoteLeica5 Panasonic Leica5
17445
- 88 ThumbnailWidth no
17446
- 90 ThumbnailHeight no
17447
- 92 ThumbnailImage no
17448
- 1334 ThumbnailWidth no
17449
- 1338 ThumbnailHeight no
17450
- 1342 ThumbnailLength no
17451
- 1350 ThumbnailImage no
17452
- 1358 ThumbnailWidth no
17453
- 1362 ThumbnailHeight no
17454
- 1366 ThumbnailLength no
17455
- 1374 ThumbnailImage no
17456
- 16488 ExifData EXIF
17457
- 16512 ExifData EXIF
17463
+ Index1 Tag Name Writable
17464
+ ------ -------- --------
17465
+ 0 Make no
17466
+ 4 Model no
17467
+ 12 Model no
17468
+ 16 JPEG-likeData EXIF
17469
+ 22 Model no
17470
+ 52 Version1 no
17471
+ 62 Version2 no
17472
+ 80 MakerNoteLeica5 Panasonic Leica5
17473
+ 88 ThumbnailWidth no
17474
+ 90 ThumbnailHeight no
17475
+ 92 ThumbnailImage no
17476
+ 1334 ThumbnailWidth no
17477
+ 1338 ThumbnailHeight no
17478
+ 1342 ThumbnailLength no
17479
+ 1350 ThumbnailImage no
17480
+ 1358 ThumbnailWidth no
17481
+ 1362 ThumbnailHeight no
17482
+ 1366 ThumbnailLength no
17483
+ 1374 ThumbnailImage no
17484
+ 16488 ExifData EXIF
17485
+ 16512 ExifData EXIF
17486
+ 0x00200080 ExifData EXIF
17458
17487
 
17459
17488
  =head2 Pentax Tags
17460
17489
 
@@ -20955,6 +20984,7 @@ still proprietary) Adobe format.
20955
20984
  MakerNoteCanon Canon
20956
20985
  MakerNoteCasio Casio
20957
20986
  MakerNoteCasio2 Casio Type2
20987
+ MakerNoteDJIInfo DJI Info
20958
20988
  MakerNoteDJI DJI
20959
20989
  MakerNoteFLIR FLIR
20960
20990
  MakerNoteFujiFilm FujiFilm
@@ -26755,9 +26785,9 @@ ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
26755
26785
  OGG, FLAC, APE, MPC and RealAudio files. ID3v2 tags which support multiple
26756
26786
  languages (eg. Comment and Lyrics) are extracted by specifying the tag name,
26757
26787
  followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg.
26758
- "Comment-spa"). See L<http://www.id3.org/> for the official ID3
26759
- specification and L<http://www.loc.gov/standards/iso639-2/php/code_list.php>
26760
- for a list of ISO 639-2 language codes.
26788
+ "Comment-spa"). See L<https://id3.org/> for the official ID3 specification
26789
+ and L<http://www.loc.gov/standards/iso639-2/php/code_list.php> for a list of
26790
+ ISO 639-2 language codes.
26761
26791
 
26762
26792
  Tag Name Writable
26763
26793
  -------- --------
@@ -37496,6 +37526,7 @@ for more details.
37496
37526
  MakerNoteCasio
37497
37527
  MakerNoteCasio2
37498
37528
  MakerNoteDJI
37529
+ MakerNoteDJIInfo
37499
37530
  MakerNoteFLIR
37500
37531
  MakerNoteFujiFilm
37501
37532
  MakerNoteGE
@@ -858,7 +858,7 @@ TAG: foreach $tagInfo (@matchingTags) {
858
858
  ($shift or ($shiftable eq '0' and $options{DelValue})))
859
859
  {
860
860
  $err = "$wgrp1:$tag is not shiftable";
861
- $verbose > 2 and print $out "$err\n";
861
+ $verbose and print $out "$err\n";
862
862
  next;
863
863
  }
864
864
  }
@@ -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);
31
31
 
32
- $VERSION = '12.41';
32
+ $VERSION = '12.42';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -5896,13 +5896,13 @@ sub GetUnixTime($;$)
5896
5896
  sub ConvertFileSize($)
5897
5897
  {
5898
5898
  my $val = shift;
5899
- $val < 2048 and return "$val bytes";
5900
- $val < 10240 and return sprintf('%.1f KiB', $val / 1024);
5901
- $val < 2097152 and return sprintf('%.0f KiB', $val / 1024);
5902
- $val < 10485760 and return sprintf('%.1f MiB', $val / 1048576);
5903
- $val < 2147483648 and return sprintf('%.0f MiB', $val / 1048576);
5904
- $val < 10737418240 and return sprintf('%.1f GiB', $val / 1073741824);
5905
- return sprintf('%.0f GiB', $val / 1073741824);
5899
+ $val < 2000 and return "$val bytes";
5900
+ $val < 10000 and return sprintf('%.1f kB', $val / 1000);
5901
+ $val < 2000000 and return sprintf('%.0f kB', $val / 1000);
5902
+ $val < 10000000 and return sprintf('%.1f MB', $val / 1000000);
5903
+ $val < 2000000000 and return sprintf('%.0f MB', $val / 1000000);
5904
+ $val < 10000000000 and return sprintf('%.1f GB', $val / 1000000000);
5905
+ return sprintf('%.0f GB', $val / 1000000000);
5906
5906
  }
5907
5907
 
5908
5908
  #------------------------------------------------------------------------------
@@ -7686,8 +7686,8 @@ sub DoProcessTIFF($$;$)
7686
7686
  # check DNG version
7687
7687
  if ($$self{DNGVersion}) {
7688
7688
  my $ver = $$self{DNGVersion};
7689
- # currently support up to DNG version 1.5
7690
- unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.5) {
7689
+ # currently support up to DNG version 1.6
7690
+ unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.6) {
7691
7691
  $ver =~ tr/ /./;
7692
7692
  $self->Error("DNG Version $ver not yet tested", 1);
7693
7693
  }
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.41
3
+ Version: 12.42
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('12.41.0')
4
+ VERSION = Gem::Version.new('12.42.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.41.0
4
+ version: 12.42.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: 2022-04-18 00:00:00.000000000 Z
12
+ date: 2022-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool