exiftool-vendored.pl 12.43.0 → 12.44.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.
package/bin/Changes CHANGED
@@ -7,6 +7,22 @@ RSS feed: https://exiftool.org/rss.xml
7
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
+ July 21, 2022 - Version 12.44
11
+
12
+ - Added a few new Sony lenses (thanks Jos Roost)
13
+ - Decode Accelerometer and Gyroscope data from ARCore videos
14
+ - Decode a couple of new Motorola tags (thanks Neal Krawetz)
15
+ - Decode FujiFilm FirmwareVersion (thanks Justin Arkinson)
16
+ - Decode MetaType for timed metadata in videos
17
+ - Decode a number of new Nikon Z tags (thanks Warren Hatch)
18
+ - Extract more types of embedded images from FlashPix-format files
19
+ - Made Composite GPSLatitude and GPSLongitude writable for setting GPS
20
+ coordinates and reference directions with one assignment
21
+ - Fixed bug introduced in 12.39 which broke extraction of timed GPS from some
22
+ INNOVV videos
23
+ - Fixed bug introduced in 12.43 which broke extraction of timed GPSDateTime
24
+ from Insta360 videos
25
+
10
26
  July 6, 2022 - Version 12.43
11
27
 
12
28
  - Added the ability to geotag from Google Takeout JSON files
@@ -99,6 +115,7 @@ Jan. 13, 2022 - Version 12.39
99
115
  - Added a new Pentax LensType (thanks Christian Shulz)
100
116
  - Added a couple of new Nikon LensID's
101
117
  - Added support for Nikon NKSC sidecar files
118
+ - Decode another type of timed GPS from MP4 videos
102
119
  - Decode more tags for the Nikon Z7 and Z9 (thanks Warren Hatch)
103
120
  - Decode a couple more FLIR tags
104
121
  - Extract ZIP file comments
package/bin/META.json CHANGED
@@ -47,6 +47,6 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.43",
50
+ "version" : "12.44",
51
51
  "x_serialization_backend" : "JSON::PP version 4.02"
52
52
  }
package/bin/META.yml CHANGED
@@ -28,5 +28,5 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 12.43
31
+ version: 12.44
32
32
  x_serialization_backend: 'JSON::PP version 4.02'
package/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.43.tar.gz | tar -xf -
111
- cd Image-ExifTool-12.43
110
+ gzip -dc Image-ExifTool-12.44.tar.gz | tar -xf -
111
+ cd Image-ExifTool-12.44
112
112
  ./exiftool t/images/ExifTool.jpg
113
113
 
114
114
  Note: These commands extract meta information from one of the test images.
package/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.43';
14
+ my $version = '12.44';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  BEGIN {
@@ -663,7 +663,7 @@ for (;;) {
663
663
  }
664
664
  $group = $2;
665
665
  shift;
666
- $group =~ /IFD/i and Warn("Can't list tags for specific IFD\n"), next;
666
+ $group =~ /IFD/i and Warn("Can't list tags for specific IFD\n"), $helped=1, next;
667
667
  $group =~ /^(all|\*)$/ and undef $group;
668
668
  } else {
669
669
  $pass or next;
@@ -5467,7 +5467,7 @@ with this command:
5467
5467
 
5468
5468
  produces output like this:
5469
5469
 
5470
- -- Generated by ExifTool 12.43 --
5470
+ -- Generated by ExifTool 12.44 --
5471
5471
  File: a.jpg - 2003:10:31 15:44:19
5472
5472
  (f/5.6, 1/60s, ISO 100)
5473
5473
  File: b.jpg - 2006:05:23 11:57:38
@@ -195,6 +195,7 @@ my %event = (
195
195
  # new, ref forum13707
196
196
  degreeOfEstablishment => { },
197
197
  georeferenceVerificationStatus => { },
198
+ pathway => { },
198
199
  recordedByID => { },
199
200
  },
200
201
  },
@@ -298,6 +298,7 @@ my %fpxFileType = (
298
298
  %Image::ExifTool::FlashPix::Main = (
299
299
  PROCESS_PROC => \&ProcessFPXR,
300
300
  GROUPS => { 2 => 'Image' },
301
+ VARS => { LONG_TAGS => 0 },
301
302
  NOTES => q{
302
303
  The FlashPix file format, introduced in 1996, was developed by Kodak,
303
304
  Hewlett-Packard and Microsoft. Internally the FPX file structure mimics
@@ -480,6 +481,12 @@ my %fpxFileType = (
480
481
  return $val;
481
482
  },
482
483
  },
484
+ IeImg => {
485
+ Name => 'EmbeddedImage',
486
+ Notes => 'embedded images in Scene7 vignette VNT files',
487
+ Groups => { 2 => 'Preview' },
488
+ Binary => 1,
489
+ },
483
490
  );
484
491
 
485
492
  # Summary Information properties
@@ -2255,7 +2262,8 @@ sub ProcessFPX($$)
2255
2262
  # remove instance number or class ID from tag if necessary
2256
2263
  $tagInfo = $et->GetTagInfo($tagTablePtr, $1) if
2257
2264
  ($tag =~ /(.*) \d{6}$/s and $$tagTablePtr{$1}) or
2258
- ($tag =~ /(.*)_[0-9a-f]{16}$/s and $$tagTablePtr{$1});
2265
+ ($tag =~ /(.*)_[0-9a-f]{16}$/s and $$tagTablePtr{$1}) or
2266
+ ($tag =~ /(.*)_[0-9]{4}$/s and $$tagTablePtr{$1}); # IeImg instances
2259
2267
  }
2260
2268
 
2261
2269
  my $lSib = Get32u(\$dir, $pos + 0x44); # left sibling
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.81';
34
+ $VERSION = '1.82';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -763,6 +763,8 @@ my %faceCategories = (
763
763
  },
764
764
  PrintConvInv => '$val=~/(0x[0-9a-f]+)/i; hex $1',
765
765
  },
766
+ 0x1447 => { Name => 'FirmwareVersion', Writable => 'string' },
767
+ 0x1448 => { Name => 'FirmwareVersion2', Writable => 'string' },
766
768
  0x3803 => { #forum10037
767
769
  Name => 'VideoRecordingMode',
768
770
  Groups => { 2 => 'Video' },
@@ -12,7 +12,7 @@ use strict;
12
12
  use vars qw($VERSION);
13
13
  use Image::ExifTool::Exif;
14
14
 
15
- $VERSION = '1.53';
15
+ $VERSION = '1.54';
16
16
 
17
17
  my %coordConv = (
18
18
  ValueConv => 'Image::ExifTool::GPS::ToDegrees($val)',
@@ -360,21 +360,41 @@ my %coordConv = (
360
360
  # which must therefore require this module as necessary
361
361
  GPSLatitude => {
362
362
  SubDoc => 1, # generate for all sub-documents
363
+ Writable => 1,
364
+ Avoid => 1,
365
+ Priority => 1, # (necessary because Avoid sets default Priority to 0)
363
366
  Require => {
364
367
  0 => 'GPS:GPSLatitude',
365
368
  1 => 'GPS:GPSLatitudeRef',
366
369
  },
370
+ WriteAlso => {
371
+ 'GPS:GPSLatitude' => '$val',
372
+ 'GPS:GPSLatitudeRef' => '$val < 0 ? "S" : "N"',
373
+ },
367
374
  ValueConv => '$val[1] =~ /^S/i ? -$val[0] : $val[0]',
368
375
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
376
+ PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
369
377
  },
370
378
  GPSLongitude => {
371
379
  SubDoc => 1, # generate for all sub-documents
380
+ Writable => 1,
381
+ Avoid => 1,
382
+ Priority => 1,
383
+ Require => {
384
+ 0 => 'GPS:GPSLongitude',
385
+ 1 => 'GPS:GPSLongitudeRef',
386
+ },
387
+ WriteAlso => {
388
+ 'GPS:GPSLongitude' => '$val',
389
+ 'GPS:GPSLongitudeRef' => '$val < 0 ? "W" : "E"',
390
+ },
372
391
  Require => {
373
392
  0 => 'GPS:GPSLongitude',
374
393
  1 => 'GPS:GPSLongitudeRef',
375
394
  },
376
395
  ValueConv => '$val[1] =~ /^W/i ? -$val[0] : $val[0]',
377
396
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
397
+ PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
378
398
  },
379
399
  GPSAltitude => {
380
400
  SubDoc => [1,3], # generate for sub-documents if Desire 1 or 3 has a chance to exist
@@ -14,7 +14,7 @@ use strict;
14
14
  use vars qw($VERSION);
15
15
  use Image::ExifTool::Exif;
16
16
 
17
- $VERSION = '1.01';
17
+ $VERSION = '1.02';
18
18
 
19
19
  # Motorola makernotes tags (ref PH)
20
20
  %Image::ExifTool::Motorola::Main = (
@@ -54,7 +54,12 @@ $VERSION = '1.01';
54
54
  # 0x6400 - string: 'AUTO','ON','OFF'
55
55
  # 0x6401 - string: 'HDR'
56
56
  # 0x6410 - string: 'NO','YES'
57
- # 0x6420 - int32s: 0 (only exists in HDR images?)
57
+ # 0x6420 - int32s for some models: 0 (only exists in HDR images?)
58
+ 0x6420 => { #forum13731
59
+ Condition => '$format eq "string"',
60
+ Name => 'CustomRendered',
61
+ Writable => 'string',
62
+ },
58
63
  # 0x6430 - float
59
64
  # 0x6431 - int8u: 0,1
60
65
  # 0x6432 - int8u: 0,79,100
@@ -89,6 +94,7 @@ $VERSION = '1.01';
89
94
  # 0x64c2,0x64c3 - int32s
90
95
  # 0x64c4 - int32s
91
96
  # 0x64c5 - int32u
97
+ 0x64d0 => { Name => 'DriveMode', Writable => 'string' }, #forum13731
92
98
  # 0x6500 - int8u: 1
93
99
  # 0x6501 - string: 'Luma-Chroma Plane','Chroma only' or int8u: 0
94
100
  # 0x6502 - string: 'Luma-Chroma Plane','Chroma only','' or int8u: 1,255
@@ -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.07';
66
+ $VERSION = '4.08';
67
67
 
68
68
  sub LensIDConv($$$);
69
69
  sub ProcessNikonAVI($$$);
@@ -2081,7 +2081,7 @@ my %base64coord = (
2081
2081
  TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
2082
2082
  DecryptStart => 4,
2083
2083
  # TODO: eventually set the length dynamically according to actual offsets!
2084
- DecryptLen => 0xec4b + 1646, # decoded thru end of CustomSettingZ9 in Offset26 (+MenuSettingsZ9Offset)
2084
+ DecryptLen => 0xec4b + 1907, # decoded thru end of Offset26
2085
2085
  ByteOrder => 'LittleEndian',
2086
2086
  },
2087
2087
  },
@@ -4867,7 +4867,7 @@ my %nikonFocalConversions = (
4867
4867
  %binaryDataAttrs,
4868
4868
  NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
4869
4869
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4870
- DATAMEMBER => [ 0x03, 0x2f ],
4870
+ DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56 ],
4871
4871
  0x00 => {
4872
4872
  Name => 'LensDataVersion',
4873
4873
  Format => 'string[4]',
@@ -4893,12 +4893,12 @@ my %nikonFocalConversions = (
4893
4893
  %nikonApertureConversions,
4894
4894
  },
4895
4895
  # --> another extra byte at position 0x08 in this version of LensData (PH)
4896
- 0x09 => {
4897
- Name => 'FocusPosition',
4898
- Condition => '$$self{OldLensData}',
4899
- PrintConv => 'sprintf("0x%02x", $val)',
4900
- PrintConvInv => '$val',
4901
- },
4896
+ #0x09 => {
4897
+ # Name => 'FocusPosition', #28 - this appears to be copied from an older version of LensData and is no longer valid. Text with Z9 and Z7_2 with a variety of lenses
4898
+ # Condition => '$$self{OldLensData}',
4899
+ # PrintConv => 'sprintf("0x%02x", $val)',
4900
+ # PrintConvInv => '$val',
4901
+ #},
4902
4902
  0x0b => {
4903
4903
  Notes => 'this focus distance is approximate, and not very accurate for some lenses',
4904
4904
  Name => 'FocusDistance',
@@ -4957,7 +4957,8 @@ my %nikonFocalConversions = (
4957
4957
  %nikonApertureConversions,
4958
4958
  },
4959
4959
  #
4960
- # ---- new LensData tags used by Nikkor Z lenses ---- (ref PH)
4960
+ # ---- new LensData tags used by Nikkor Z cameras (ref PH/28). ----
4961
+ # (some fields are strictly for Z-series lenses, others apply to legacy F-mount as well, ref 28)
4961
4962
  #
4962
4963
  0x2f => { # look forward to see if new lens data exists...
4963
4964
  Name => 'NewLensData',
@@ -4965,7 +4966,7 @@ my %nikonFocalConversions = (
4965
4966
  RawConv => '$$self{NewLensData} = 1 unless $val =~ /^.\0+$/s; undef',
4966
4967
  Hidden => 1,
4967
4968
  },
4968
- 0x30 => {
4969
+ 0x30 => { #PH
4969
4970
  Name => 'LensID',
4970
4971
  Condition => '$$self{NewLensData}',
4971
4972
  Notes => 'tags from here onward used for Nikkor Z lenses only',
@@ -4991,9 +4992,22 @@ my %nikonFocalConversions = (
4991
4992
  27 => 'Nikkor Z MC 50mm f/2.8', #IB
4992
4993
  28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
4993
4994
  29 => 'Nikkor Z 28mm f/2.8', #IB
4995
+ 30 => 'Nikkor Z 400mm f/2.8 TC VR S', #28
4996
+ 31 => 'Nikkor Z 24-120 f/4', #28
4997
+ 32 => 'Nikkor Z 800mm f/6.3 VR S', #28
4994
4998
  },
4995
4999
  },
4996
- 0x36 => {
5000
+ 0x35 => { #28
5001
+ Name => 'LensMountType',
5002
+ RawConv => '$$self{LensMountType} = $val', # 0=> DSLR lens via FTZ style adapter; 1=> Native Z lens;
5003
+ Format => 'int8u',
5004
+ Unknown => 1,
5005
+ PrintConv => {
5006
+ 0 => 'F-mount Lens',
5007
+ 1 => 'Z-mount Lens',
5008
+ },
5009
+ },
5010
+ 0x36 => { #PH
4997
5011
  Name => 'MaxAperture',
4998
5012
  Condition => '$$self{NewLensData}',
4999
5013
  Format => 'int16u',
@@ -5003,7 +5017,7 @@ my %nikonFocalConversions = (
5003
5017
  PrintConv => 'sprintf("%.1f",$val)',
5004
5018
  PrintConvInv => '$val',
5005
5019
  },
5006
- 0x38 => {
5020
+ 0x38 => { #PH
5007
5021
  Name => 'FNumber',
5008
5022
  Condition => '$$self{NewLensData}',
5009
5023
  Format => 'int16u',
@@ -5013,7 +5027,7 @@ my %nikonFocalConversions = (
5013
5027
  PrintConv => 'sprintf("%.1f",$val)',
5014
5028
  PrintConvInv => '$val',
5015
5029
  },
5016
- 0x3c => {
5030
+ 0x3c => { #PH
5017
5031
  Name => 'FocalLength',
5018
5032
  Condition => '$$self{NewLensData}',
5019
5033
  Format => 'int16u',
@@ -5021,14 +5035,36 @@ my %nikonFocalConversions = (
5021
5035
  PrintConv => '"$val mm"',
5022
5036
  PrintConvInv => '$val=~s/\s*mm$//;$val',
5023
5037
  },
5024
- 0x4f => {
5025
- Name => 'FocusDistance',
5026
- Condition => '$$self{NewLensData}',
5027
- # (perhaps int16u Format? -- although upper byte would always be zero)
5038
+ 0x4c => { #28
5039
+ Name => 'FocusDistanceRangeWidth', #reflects the number of discrete absolute lens positions that are mapped to the reported FocusDistance. Will be 1 near CFD reflecting very narrow focus distance bands (i.e., quite accurate). Near Infinity will be something like 32. Note: 0 at infinity.
5040
+ Format => 'int8u',
5041
+ Condition => '$$self{NewLensData} and $$self{LensMountType} == 1',
5042
+ RawConv => '$$self{FocusDistanceRangeWidth} = $val',
5043
+ Unknown => 1,
5044
+ },
5045
+ 0x4e => { #28
5046
+ Name => 'FocusDistance',
5047
+ Format => 'int16u',
5048
+ Condition => '$$self{NewLensData} and $$self{LensMountType} == 1',
5049
+ RawConv => '$val = $val/256', # 1st byte is the fractional component. This byte was not previously considered in the legacy calculation (which only used the 2nd byte). When 2nd byte < 80; distance is < 1 meter
5028
5050
  ValueConv => '0.01 * 10**($val/40)', # in m
5029
5051
  ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0',
5030
- PrintConv => '$val ? sprintf("%.2f m",$val) : "inf"',
5031
- PrintConvInv => '$val eq "inf" ? 0 : $val =~ s/\s*m$//, $val',
5052
+ PrintConv => q{
5053
+ $$self{FocusDistanceRangeWidth} == 0 ? "Inf" : $val < 1 ? $val < 0.35 ? sprintf("%.4f m", $val): sprintf("%.3f m", $val): sprintf("%.2f m", $val), #distances less than 35mm are quite accurate with increasingly less precision past 1m
5054
+ },
5055
+ },
5056
+ 0x56 => { #28
5057
+ Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
5058
+ Condition => '$$self{NewLensData} and $$self{LensMountType} == 1',
5059
+ Format => 'int8u',
5060
+ RawConv => 'unless ($$self{FocusDistanceRangeWidth} == 0 ) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
5061
+ Unknown => 1,
5062
+ },
5063
+ 0x5a => { #28
5064
+ Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
5065
+ Condition => '$$self{NewLensData} and $$self{LensMountType} == 1',
5066
+ Format => 'int32s',
5067
+ Unknown => 1,
5032
5068
  },
5033
5069
  );
5034
5070
 
@@ -8753,13 +8789,18 @@ my %nikonFocalConversions = (
8753
8789
  6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
8754
8790
  10 => '+05:45 (Kathmandu)',
8755
8791
  11 => '+05:30 (New Dehli)',
8792
+ 12 => '+05:00 (Islamabad)',
8793
+ 13 => '+04:30 (Kabul)',
8794
+ 14 => '+04:00 (Abu Dhabi)',
8795
+ 15 => '+03:30 (Tehran)',
8756
8796
  16 => '+03:00 (Moscow, Nairobi)',
8757
- 15 => '+02:00 (Athens)',
8758
- 16 => '+01:00 (Madrid, Paris, Berlin)',
8759
8797
  17 => '+02:00 (Athens, Helsinki)',
8760
- 18 => '+00:00 (London)',
8761
- 19 => '+00:00', #PH (unknown city)
8798
+ 18 => '+01:00 (Madrid, Paris, Berlin)',
8799
+ 19 => '+00:00 (London)',
8800
+ 20 => '-01:00 (Azores)',
8801
+ 21 => '-02:00 (Fernando de Noronha)',
8762
8802
  22 => '-03:00 (Buenos Aires, Sao Paulo)',
8803
+ 23 => '-03:30 (Newfoundland)',
8763
8804
  24 => '-04:00 (Manaus, Caracas)',
8764
8805
  25 => '-05:00 (New York, Toronto, Lima)',
8765
8806
  26 => '-06:00 (Chicago, Mexico City)',
@@ -13,8 +13,9 @@ package Image::ExifTool::Parrot;
13
13
 
14
14
  use strict;
15
15
  use vars qw($VERSION);
16
+ use Image::ExifTool qw(:DataAccess :Utils);
16
17
 
17
- $VERSION = '1.01';
18
+ $VERSION = '1.02';
18
19
 
19
20
  sub Process_mett($$$);
20
21
 
@@ -22,7 +23,10 @@ sub Process_mett($$$);
22
23
  %Image::ExifTool::Parrot::mett = (
23
24
  PROCESS_PROC => \&Process_mett,
24
25
  # put the 'P' records first in the documentation
25
- VARS => { SORT_PROC => sub { my ($a,$b)=@_; $a=~s/P/A/; $b=~s/P/A/; $a cmp $b } },
26
+ VARS => {
27
+ SORT_PROC => sub { my ($a,$b)=@_; $a=~s/P/A/; $b=~s/P/A/; $a cmp $b },
28
+ LONG_TAGS => 1
29
+ },
26
30
  NOTES => q{
27
31
  Streaming metadata found in Parrot drone videos. See
28
32
  L<https://developer.parrot.com/docs/pdraw/metadata.html> for the
@@ -52,6 +56,23 @@ sub Process_mett($$$);
52
56
  Name => 'ParrotAutomation',
53
57
  SubDirectory => { TagTable => 'Image::ExifTool::Parrot::Automation' },
54
58
  },
59
+ # timed metadata written by ARCore (see forum13653)
60
+ 'application/arcore-accel' => {
61
+ Name => 'ARCoreAccel',
62
+ SubDirectory => { TagTable => 'Image::ExifTool::Parrot::ARCoreAccel', ByteOrder => 'II' },
63
+ },
64
+ 'application/arcore-gyro' => {
65
+ Name => 'ARCoreGyro',
66
+ SubDirectory => { TagTable => 'Image::ExifTool::Parrot::ARCoreGyro', ByteOrder => 'II' },
67
+ },
68
+ 'application/arcore-video-0' => {
69
+ Name => 'ARCoreVideo',
70
+ SubDirectory => { TagTable => 'Image::ExifTool::Parrot::ARCoreVideo', ByteOrder => 'II' },
71
+ },
72
+ 'application/arcore-custom-event' => {
73
+ Name => 'ARCoreCustom',
74
+ SubDirectory => { TagTable => 'Image::ExifTool::Parrot::ARCoreCustom', ByteOrder => 'II' },
75
+ },
55
76
  );
56
77
 
57
78
  # tags found in the Parrot 'mett' V1 timed metadata (ref 1) [untested]
@@ -630,6 +651,69 @@ sub Process_mett($$$);
630
651
  },
631
652
  );
632
653
 
654
+ # ARCore Accel data (ref PH)
655
+ %Image::ExifTool::Parrot::ARCoreAccel = (
656
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
657
+ GROUPS => { 2 => 'Location' },
658
+ NOTES => 'ARCore accelerometer data.',
659
+ FIRST_ENTRY => 0,
660
+ # 00-04: always 10 34 16 1 29
661
+ 4 => {
662
+ Name => 'AccelerometerUnknown',
663
+ Format => 'undef[16]',
664
+ Unknown => 1,
665
+ ValueConv => 'join " ", unpack("Cx4Cx4Cx4C", $val)',
666
+ },
667
+ 5 => { # (NC)
668
+ Name => 'Accelerometer',
669
+ Format => 'undef[14]',
670
+ RawConv => 'GetFloat(\$val,0) . " " . GetFloat(\$val,5) . " " . GetFloat(\$val,10)',
671
+ },
672
+ # 05-08: float Accelerometer X
673
+ # 09: 37
674
+ # 10-13: float Accelerometer Y
675
+ # 14: 45
676
+ # 15-18: float Accelerometer Z
677
+ # 19: 48
678
+ # 20-24: 128-255
679
+ # 25: 246 then 247
680
+ # 26: 188
681
+ # 27: 2
682
+ # 28: 56
683
+ # 29-32: 128-255
684
+ # 33: increments slowly (about once every 56 samples or so)
685
+ );
686
+
687
+ # ARCore Gyro data (ref PH)
688
+ %Image::ExifTool::Parrot::ARCoreGyro = (
689
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
690
+ GROUPS => { 2 => 'Location' },
691
+ NOTES => 'ARCore accelerometer data.',
692
+ FIRST_ENTRY => 0,
693
+ # 00-04: always 10 34 16 3 29
694
+ 4 => {
695
+ Name => 'GyroscopeUnknown',
696
+ Format => 'undef[16]',
697
+ Unknown => 1, # always "29 37 45 48" in my sample, just like AccelerometerUnknown
698
+ ValueConv => 'join " ", unpack("Cx4Cx4Cx4C", $val)',
699
+ },
700
+ 5 => { # (NC)
701
+ Name => 'Gyroscope',
702
+ Format => 'undef[14]',
703
+ RawConv => 'GetFloat(\$val,0) . " " . GetFloat(\$val,5) . " " . GetFloat(\$val,10)',
704
+ },
705
+ );
706
+
707
+ %Image::ExifTool::Parrot::ARCoreVideo = (
708
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
709
+ FIRST_ENTRY => 0,
710
+ );
711
+
712
+ %Image::ExifTool::Parrot::ARCoreCustom = (
713
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
714
+ FIRST_ENTRY => 0,
715
+ );
716
+
633
717
  %Image::ExifTool::Parrot::Composite = (
634
718
  GPSDateTime => {
635
719
  Description => 'GPS Date/Time',
@@ -677,9 +761,18 @@ sub Process_mett($$$)
677
761
  my $dataPos = $$dirInfo{DataPos};
678
762
  my $dirEnd = length $$dataPt;
679
763
  my $pos = $$dirInfo{DirStart} || 0;
764
+ my $metaType = $$et{MetaType} || '';
680
765
 
681
766
  $et->VerboseDir('Parrot mett', undef, $dirEnd);
682
767
 
768
+ if ($$tagTbl{$metaType}) {
769
+ $et->HandleTag($tagTbl, $metaType, undef,
770
+ DataPt => $dataPt,
771
+ DataPos => $dataPos,
772
+ Base => $$dirInfo{Base},
773
+ );
774
+ return 1;
775
+ }
683
776
  while ($pos + 4 < $dirEnd) {
684
777
  my ($id, $nwords) = unpack("x${pos}a2n", $$dataPt);
685
778
  my $size;
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
47
47
  use Image::ExifTool::Exif;
48
48
  use Image::ExifTool::GPS;
49
49
 
50
- $VERSION = '2.74';
50
+ $VERSION = '2.75';
51
51
 
52
52
  sub ProcessMOV($$;$);
53
53
  sub ProcessKeys($$$);
@@ -7516,6 +7516,12 @@ my %eeBox2 = (
7516
7516
  Format => 'undef[4]',
7517
7517
  RawConv => '$$self{MetaFormat} = $val',
7518
7518
  },
7519
+ 8 => { # starts at 8 for MetaFormat eq 'camm', and 17 for 'mett'
7520
+ Name => 'MetaType',
7521
+ Format => 'undef[$size-8]',
7522
+ # may start at various locations!
7523
+ RawConv => '$$self{MetaType} = ($val=~/(application[^\0]+)/ ? $1 : undef)',
7524
+ },
7519
7525
  #
7520
7526
  # Observed offsets for child atoms of various MetaFormat types:
7521
7527
  #
@@ -1527,7 +1527,7 @@ sub ProcessFreeGPS($$$)
1527
1527
  $spd = $9 * $knotsToKph if length $9;
1528
1528
  $trk = $10 if length $10;
1529
1529
 
1530
- } elsif ($$dataPt =~ /^.{64}[\x01-\x0c]\0{3}[\x01-\x1f]\0{3}A[NS][EW]\0/s) {
1530
+ } elsif ($$dataPt =~ /^.{64}[\x01-\x0c]\0{3}[\x01-\x1f]\0{3}A[NS][EW]\0{5}/s) {
1531
1531
 
1532
1532
  # Akaso V1 dascham
1533
1533
  # 0000: 00 00 80 00 66 72 65 65 47 50 53 20 78 00 00 00 [....freeGPS x...]
@@ -1624,6 +1624,9 @@ sub ProcessFreeGPS($$$)
1624
1624
  # 0000: 00 00 80 00 66 72 65 65 47 50 53 20 4c 00 00 00 [....freeGPS L...]
1625
1625
  # 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
1626
1626
  # 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
1627
+ # 0030: 10 00 00 00 2d 00 00 00 14 00 00 00 11 00 00 00 [....-...........]
1628
+ # 0040: 0c 00 00 00 1f 00 00 00 41 4e 45 00 5d 9a a9 45 [........ANE.]..E]
1629
+ # 0050: ab 1e e5 44 ec 51 f0 40 b8 5e a5 43 00 00 00 00 [...D.Q.@.^.C....]
1627
1630
  # (records are same structure as Type 3 Novatek GPS in ProcessFreeGPS2() below)
1628
1631
  ($hr,$min,$sec,$yr,$mon,$day,$stat,$latRef,$lonRef,$lat,$lon,$spd,$trk) =
1629
1632
  unpack('x48V6a1a1a1x1V4', $$dataPt);
@@ -2700,7 +2703,7 @@ sub ProcessInsta360($;$)
2700
2703
  $a[$_] = GetDouble(\$a[$_], 0) foreach 4,6,8,9,10;
2701
2704
  $a[4] = -abs($a[4]) if $a[5] eq 'S'; # (abs just in case it was already signed)
2702
2705
  $a[6] = -abs($a[6]) if $a[7] ne 'E';
2703
- $et->HandleTag($tagTbl, GPSDateTifme => Image::ExifTool::ConvertUnixTime($a[0]) . 'Z');
2706
+ $et->HandleTag($tagTbl, GPSDateTime => Image::ExifTool::ConvertUnixTime($a[0]) . 'Z');
2704
2707
  $et->HandleTag($tagTbl, GPSLatitude => $a[4]);
2705
2708
  $et->HandleTag($tagTbl, GPSLongitude => $a[6]);
2706
2709
  $et->HandleTag($tagTbl, GPSSpeed => $a[8] * $mpsToKph);
@@ -395,7 +395,9 @@ numerical, and generated automatically otherwise.
395
395
  be accessible.
396
396
 
397
397
  'Hidden' - set to hide tag from the TagName documentation.
398
- Also suppresses verbose output of a BinaryData tag.
398
+ Also suppresses verbose output of a BinaryData tag. The
399
+ RawConv of a Hidden tag should return undef so the tag value
400
+ is not seen by the user.
399
401
 
400
402
  'IsComposite' - flag set for Composite tags
401
403
 
@@ -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.50';
37
+ $VERSION = '3.51';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -154,7 +154,12 @@ sub PrintInvLensSpec($;$$);
154
154
  32866 => 'Sony FE 24mm F2.8 G', #IB
155
155
  32867 => 'Sony FE 40mm F2.5 G', #IB
156
156
  32868 => 'Sony FE 50mm F2.5 G', #IB
157
+ 32871 => 'Sony FE PZ 16-35mm F4 G', #JR
158
+ 32873 => 'Sony E PZ 10-20mm F4 G', #JR
157
159
  32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
160
+ 32875 => 'Sony FE 24-70mm F2.8 GM II', #JR
161
+ 32876 => 'Sony E 11mm F1.8', #JR
162
+ 32877 => 'Sony E 15mm F1.4 G', #JR
158
163
 
159
164
  # (comment this out so LensID will report the LensModel, which is more useful)
160
165
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -245,6 +250,7 @@ sub PrintInvLensSpec($;$$);
245
250
  50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
246
251
  50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
247
252
  50532 => 'Sigma 20mm F2 DG DN | C', #JR (022)
253
+ 50533 => 'Sigma 16-28mm F2.8 DG DN | C', #JR (022)
248
254
 
249
255
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
250
256
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -2043,7 +2043,7 @@ my %tagLookup = (
2043
2043
  'customrawhighlightpoint' => { 109 => 0x51 },
2044
2044
  'customrawshadow' => { 109 => 0x85 },
2045
2045
  'customrawshadowpoint' => { 109 => 0x52 },
2046
- 'customrendered' => { 119 => 0xa401, 484 => 'CustomRendered' },
2046
+ 'customrendered' => { 119 => 0xa401, 191 => 0x6420, 484 => 'CustomRendered' },
2047
2047
  'customsaturation' => { 109 => 0x4d, 297 => 0x503 },
2048
2048
  'customsettingsalldefault' => { 279 => '0.2', 288 => '0.2' },
2049
2049
  'customsettingsbank' => { 279 => '0.1', 280 => '0.1', 282 => '0.1', 283 => '0.1', 288 => '0.1', 292 => '0.2', 293 => '0.2', 295 => 0x1 },
@@ -2345,7 +2345,7 @@ my %tagLookup = (
2345
2345
  'drangepriority' => { 127 => 0x1443 },
2346
2346
  'drangepriorityauto' => { 127 => 0x1444 },
2347
2347
  'drangepriorityfixed' => { 127 => 0x1445 },
2348
- 'drivemode' => { 113 => 0x3103, 125 => '0.1', 181 => 0x6, 184 => 0x1e, 187 => 0xe, 297 => 0x600, 355 => 0x34, 387 => 0x1002, 397 => 0x3, 407 => 0x4, 408 => 0x7e, 409 => 0x34 },
2348
+ 'drivemode' => { 113 => 0x3103, 125 => '0.1', 181 => 0x6, 184 => 0x1e, 187 => 0xe, 191 => 0x64d0, 297 => 0x600, 355 => 0x34, 387 => 0x1002, 397 => 0x3, 407 => 0x4, 408 => 0x7e, 409 => 0x34 },
2349
2349
  'drivemode2' => { 184 => 0xa, 336 => 0x7, 418 => 0xe, 425 => 0x1 },
2350
2350
  'drivemodesetting' => { 409 => 0x4 },
2351
2351
  'drivespeed' => { 125 => '0.2' },
@@ -2742,7 +2742,8 @@ my %tagLookup = (
2742
2742
  'firmwarename' => { 394 => 0xa001 },
2743
2743
  'firmwarerevision' => { 19 => 0xa4, 64 => 0x1e, 385 => 0x0 },
2744
2744
  'firmwarerevision2' => { 385 => 0xc },
2745
- 'firmwareversion' => { 7 => 0x10b, 11 => 0x136, 14 => 0xff, 15 => 0x107, 138 => [0x415,0xce5], 154 => 0x57, 156 => 'FirmwareVersion', 318 => 0x320, 320 => 0x2, 322 => 0x3109, 355 => 0x230, 380 => ['CNFV','FIRM'], 382 => 0x18, 383 => 0x2a, 387 => 0x2 },
2745
+ 'firmwareversion' => { 7 => 0x10b, 11 => 0x136, 14 => 0xff, 15 => 0x107, 127 => 0x1447, 138 => [0x415,0xce5], 154 => 0x57, 156 => 'FirmwareVersion', 318 => 0x320, 320 => 0x2, 322 => 0x3109, 355 => 0x230, 380 => ['CNFV','FIRM'], 382 => 0x18, 383 => 0x2a, 387 => 0x2 },
2746
+ 'firmwareversion2' => { 127 => 0x1448 },
2746
2747
  'firmwareversions' => { 364 => 0x301 },
2747
2748
  'firstphotodate' => { 466 => 'FirstPhotoDate' },
2748
2749
  'firstpublicationdate' => { 307 => 'FirstPublicationDate' },
@@ -2884,9 +2885,10 @@ my %tagLookup = (
2884
2885
  'focusbracketstepsize' => { 297 => 0x308 },
2885
2886
  'focuscontinuous' => { 34 => 0x20 },
2886
2887
  'focusdisplayaiservoandmf' => { 84 => 0x515 },
2887
- 'focusdistance' => { 163 => 'FocusDistance', 181 => 0x13, 187 => 0x49bb, 219 => 0x9, 220 => 0xa, 224 => [0xb,0x4f], 300 => 0x305, 314 => 0x0, 318 => 0x304, 319 => 0x304 },
2888
+ 'focusdistance' => { 163 => 'FocusDistance', 181 => 0x13, 187 => 0x49bb, 219 => 0x9, 220 => 0xa, 224 => [0xb,0x4e], 300 => 0x305, 314 => 0x0, 318 => 0x304, 319 => 0x304 },
2888
2889
  'focusdistancelower' => { 7 => 0x45, 9 => 0x8e, 11 => 0x45, 13 => 0x56, 14 => 0x45, 15 => 0x45, 16 => 0x52, 17 => 0x52, 18 => 0x56, 20 => 0x52, 21 => 0x8e, 22 => 0x59, 23 => 0x57, 24 => 0x8e, 25 => 0x94, 26 => 0x95, 27 => 0xa7, 28 => 0x56, 29 => 0xa7, 57 => 0x15, 77 => 0x14 },
2889
2890
  'focusdistancerange' => { 1 => 0xc },
2891
+ 'focusdistancerangewidth' => { 224 => 0x4c },
2890
2892
  'focusdistanceupper' => { 7 => 0x43, 9 => 0x8c, 11 => 0x43, 13 => 0x54, 14 => 0x43, 15 => 0x43, 16 => 0x50, 17 => 0x50, 18 => 0x54, 20 => 0x50, 21 => 0x8c, 22 => 0x57, 23 => 0x55, 24 => 0x8c, 25 => 0x92, 26 => 0x93, 27 => 0xa5, 28 => 0x54, 29 => 0xa5, 57 => 0x14, 77 => 0x13 },
2891
2893
  'focusholdbutton' => { 184 => 0x44 },
2892
2894
  'focusinfoversion' => { 300 => 0x0 },
@@ -2904,7 +2906,7 @@ my %tagLookup = (
2904
2906
  'focuspointlock' => { 295 => 0x1d3 },
2905
2907
  'focuspointpersistence' => { 295 => 0x105 },
2906
2908
  'focuspointwrap' => { 279 => '2.2', 280 => '2.2', 282 => '2.1', 283 => '2.1', 287 => '1.1', 288 => '2.2', 289 => '1.1', 292 => '2.2', 293 => '2.1', 294 => '2.5', 295 => 0x16 },
2907
- 'focusposition' => { 219 => 0x8, 220 => 0x8, 224 => 0x9, 355 => 0x10, 418 => 0x9bb },
2909
+ 'focusposition' => { 219 => 0x8, 220 => 0x8, 355 => 0x10, 418 => 0x9bb },
2908
2910
  'focusposition2' => { 425 => [0x29,0x2b,0x2f], 445 => 0x2d, 448 => 0x20 },
2909
2911
  'focuspositionhorizontal' => { 194 => 0x43 },
2910
2912
  'focuspositionvertical' => { 194 => 0x45 },
@@ -3054,9 +3056,9 @@ my %tagLookup = (
3054
3056
  'gpshpositioningerror' => { 130 => 0x1f, 484 => 'GPSHPositioningError' },
3055
3057
  'gpsimgdirection' => { 130 => 0x11, 484 => 'GPSImgDirection' },
3056
3058
  'gpsimgdirectionref' => { 130 => 0x10, 484 => 'GPSImgDirectionRef' },
3057
- 'gpslatitude' => { 116 => 'GpsLatitude', 130 => 0x2, 160 => 'Latitude', 484 => 'GPSLatitude' },
3059
+ 'gpslatitude' => { 114 => 'GPS-GPSLatitude', 116 => 'GpsLatitude', 130 => 0x2, 160 => 'Latitude', 484 => 'GPSLatitude' },
3058
3060
  'gpslatituderef' => { 130 => 0x1 },
3059
- 'gpslongitude' => { 116 => 'GpsLongitude', 130 => 0x4, 160 => 'Longitude', 484 => 'GPSLongitude' },
3061
+ 'gpslongitude' => { 114 => 'GPS-GPSLongitude', 116 => 'GpsLongitude', 130 => 0x4, 160 => 'Longitude', 484 => 'GPSLongitude' },
3060
3062
  'gpslongituderef' => { 130 => 0x3 },
3061
3063
  'gpslongtitude' => { 116 => 'GpsLongtitude' },
3062
3064
  'gpsmapdatum' => { 130 => 0x12, 160 => 'Datum', 484 => 'GPSMapDatum' },
@@ -3754,6 +3756,7 @@ my %tagLookup = (
3754
3756
  'lenscorrectionsettings' => { 483 => 'LensCorrectionSettings' },
3755
3757
  'lensdistortinfo' => { 475 => 'LensDistortInfo' },
3756
3758
  'lensdistortionparams' => { 302 => 0x206 },
3759
+ 'lensdriveend' => { 224 => 0x56 },
3757
3760
  'lensdrivenoaf' => { 84 => 0x505 },
3758
3761
  'lensdrivewhenafimpossible' => { 2 => 0xb },
3759
3762
  'lense-mountversion' => { 409 => 0x3f0, 454 => 0xd },
@@ -3778,6 +3781,8 @@ my %tagLookup = (
3778
3781
  'lensmodulationoptimizer' => { 127 => 0x1045 },
3779
3782
  'lensmount' => { 409 => 0x99, 433 => 0x1892, 435 => 0x18be, 436 => 0x18ee, 437 => 0x17f2, 439 => 0x105, 440 => 0x105, 450 => 0x604, 451 => 0x5e },
3780
3783
  'lensmount2' => { 454 => 0x8 },
3784
+ 'lensmounttype' => { 224 => 0x35 },
3785
+ 'lenspositionabsolute' => { 224 => 0x5a },
3781
3786
  'lensprofilechromaticaberrationscale' => { 478 => 'LensProfileChromaticAberrationScale', 480 => 'LensProfileChromaticAberrationScale' },
3782
3787
  'lensprofiledigest' => { 478 => 'LensProfileDigest', 480 => 'LensProfileDigest' },
3783
3788
  'lensprofiledistortionscale' => { 478 => 'LensProfileDistortionScale', 480 => 'LensProfileDistortionScale' },
@@ -4725,6 +4730,7 @@ my %tagLookup = (
4725
4730
  'occurrenceorganismquantity' => { 118 => [\'Occurrence','OccurrenceOrganismQuantity'] },
4726
4731
  'occurrenceorganismquantitytype' => { 118 => [\'Occurrence','OccurrenceOrganismQuantityType'] },
4727
4732
  'occurrenceothercatalognumbers' => { 118 => [\'Occurrence','OccurrenceOtherCatalogNumbers'] },
4733
+ 'occurrencepathway' => { 118 => [\'Occurrence','OccurrencePathway'] },
4728
4734
  'occurrencepreparations' => { 118 => [\'Occurrence','OccurrencePreparations'] },
4729
4735
  'occurrencepreviousidentifications' => { 118 => [\'Occurrence','OccurrencePreviousIdentifications'] },
4730
4736
  'occurrencerecordedby' => { 118 => [\'Occurrence','OccurrenceRecordedBy'] },
@@ -7117,6 +7123,7 @@ my %tagExists = (
7117
7123
  'acceldata' => 1,
7118
7124
  'accelerometermatrix' => 1,
7119
7125
  'accelerometertime' => 1,
7126
+ 'accelerometerunknown' => 1,
7120
7127
  'accelmode' => 1,
7121
7128
  'accelypr' => 1,
7122
7129
  'accessdate' => 1,
@@ -7291,6 +7298,10 @@ my %tagExists = (
7291
7298
  'appname' => 1,
7292
7299
  'archivallocation' => 1,
7293
7300
  'archivedfilename' => 1,
7301
+ 'arcoreaccel' => 1,
7302
+ 'arcorecustom' => 1,
7303
+ 'arcoregyro' => 1,
7304
+ 'arcorevideo' => 1,
7294
7305
  'ardronefile' => 1,
7295
7306
  'ardronetelemetry' => 1,
7296
7307
  'artist2' => 1,
@@ -9102,6 +9113,7 @@ my %tagExists = (
9102
9113
  'gyro360fly' => 1,
9103
9114
  'gyromode' => 1,
9104
9115
  'gyroscope' => 1,
9116
+ 'gyroscopeunknown' => 1,
9105
9117
  'gyroypr' => 1,
9106
9118
  'handler' => 1,
9107
9119
  'handlerclass' => 1,
@@ -10022,6 +10034,7 @@ my %tagExists = (
10022
10034
  'metaimagesize' => 1,
10023
10035
  'metarelation' => 1,
10024
10036
  'metasampledesc' => 1,
10037
+ 'metatype' => 1,
10025
10038
  'metdata' => 1,
10026
10039
  'meterinfo' => 1,
10027
10040
  'meteringbutton' => 1,
@@ -12171,6 +12184,8 @@ my %tagExists = (
12171
12184
  my %compositeModules = (
12172
12185
  'filenumber' => 'Image::ExifTool::Canon',
12173
12186
  'flash' => 'Image::ExifTool::XMP',
12187
+ 'gpslatitude' => 'Image::ExifTool::GPS',
12188
+ 'gpslongitude' => 'Image::ExifTool::GPS',
12174
12189
  'gpsposition' => 'Image::ExifTool::Exif',
12175
12190
  'jpgfromraw' => 'Image::ExifTool::Exif',
12176
12191
  'originaldecisiondata' => 'Image::ExifTool::Canon',
@@ -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 25802 tags, with 16493 unique tag names.
15
+ They contain a total of 25816 tags, with 16503 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
@@ -11209,6 +11209,8 @@ Tags extracted from FLIR Public image Format (FPF) files.
11209
11209
  0x1444 DRangePriorityAuto int16u
11210
11210
  0x1445 DRangePriorityFixed int16u
11211
11211
  0x1446 FlickerReduction int32u
11212
+ 0x1447 FirmwareVersion string
11213
+ 0x1448 FirmwareVersion2 string
11212
11214
  0x3803 VideoRecordingMode int32u
11213
11215
  0x3804 PeripheralLighting int16u
11214
11216
  0x3806 VideoCompression int16u
@@ -13445,6 +13447,8 @@ DiMAGE X and Xt.
13445
13447
  ------ -------- --------
13446
13448
  0x5500 BuildNumber string
13447
13449
  0x5501 SerialNumber string
13450
+ 0x6420 CustomRendered string
13451
+ 0x64d0 DriveMode string
13448
13452
  0x665e Sensor string
13449
13453
  0x6705 ManufactureDate string
13450
13454
 
@@ -14555,7 +14559,6 @@ Tags found in the encrypted LensData from cameras such as the Z6 and Z7.
14555
14559
  0 LensDataVersion no
14556
14560
  4 ExitPupilPosition int8u
14557
14561
  5 AFAperture int8u
14558
- 9 FocusPosition int8u
14559
14562
  11 FocusDistance int8u
14560
14563
  12 FocalLength int8u
14561
14564
  13 LensIDNumber int8u
@@ -14567,10 +14570,14 @@ Tags found in the encrypted LensData from cameras such as the Z6 and Z7.
14567
14570
  19 MCUVersion int8u
14568
14571
  20 EffectiveMaxAperture int8u
14569
14572
  48 LensID int16u
14573
+ 53 LensMountType? int8u
14570
14574
  54 MaxAperture int16u
14571
14575
  56 FNumber int16u
14572
14576
  60 FocalLength int16u
14573
- 79 FocusDistance int8u
14577
+ 76 FocusDistanceRangeWidth? int8u
14578
+ 78 FocusDistance int16u~
14579
+ 86 LensDriveEnd? int8u
14580
+ 90 LensPositionAbsolute? int32s
14574
14581
 
14575
14582
  =head3 Nikon LensDataUnknown Tags
14576
14583
 
@@ -21676,6 +21683,7 @@ specification.
21676
21683
  'Contents' Contents XMP
21677
21684
  'Current User' CurrentUser no
21678
21685
  'ICC Profile 0001' ICC_Profile ICC_Profile
21686
+ 'IeImg' EmbeddedImage no
21679
21687
  'Preview' PreviewImage no
21680
21688
  'Property' PreviewInfo FlashPix PreviewInfo
21681
21689
  'Subimage 0000 Header' SubimageHdr FlashPix SubimageHdr
@@ -23905,6 +23913,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
23905
23913
  OccurrenceOrganismQuantity string_
23906
23914
  OccurrenceOrganismQuantityType string_
23907
23915
  OccurrenceOtherCatalogNumbers string_
23916
+ OccurrencePathway string_
23908
23917
  OccurrencePreparations string_
23909
23918
  OccurrencePreviousIdentifications string_
23910
23919
  OccurrenceRecordedBy string_
@@ -24137,6 +24146,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
24137
24146
  OrganismQuantity string
24138
24147
  OrganismQuantityType string
24139
24148
  OtherCatalogNumbers string
24149
+ Pathway string
24140
24150
  Preparations string
24141
24151
  PreviousIdentifications string
24142
24152
  RecordNumber string
@@ -28798,6 +28808,7 @@ MP4 metadata sample description.
28798
28808
  Tag ID Tag Name Writable
28799
28809
  ------ -------- --------
28800
28810
  0x0004 MetaFormat no
28811
+ 0x0008 MetaType no
28801
28812
  'btrt' BitrateInfo QuickTime Bitrate
28802
28813
  'keys' Keys QuickTime Keys
28803
28814
 
@@ -29295,14 +29306,19 @@ Streaming metadata found in Parrot drone videos. See
29295
29306
  L<https://developer.parrot.com/docs/pdraw/metadata.html> for the
29296
29307
  specification.
29297
29308
 
29298
- Tag ID Tag Name Writable
29299
- ------ -------- --------
29300
- 'P1' ParrotV1 Parrot V1
29301
- 'P2' ParrotV2 Parrot V2
29302
- 'P3' ParrotV3 Parrot V3
29303
- 'E1' ParrotTimeStamp Parrot TimeStamp
29304
- 'E2' ParrotFollowMe Parrot FollowMe
29305
- 'E3' ParrotAutomation Parrot Automation
29309
+ Tag ID Tag Name Writable
29310
+ ------ -------- --------
29311
+ 'P1' ParrotV1 Parrot V1
29312
+ 'P2' ParrotV2 Parrot V2
29313
+ 'P3' ParrotV3 Parrot V3
29314
+ 'E1' ParrotTimeStamp Parrot TimeStamp
29315
+ 'E2' ParrotFollowMe Parrot FollowMe
29316
+ 'E3' ParrotAutomation Parrot Automation
29317
+ 'application/arcore-accel' ARCoreAccel Parrot ARCoreAccel
29318
+ 'application/arcore-custom-event'
29319
+ ARCoreCustom Parrot ARCoreCustom
29320
+ 'application/arcore-gyro' ARCoreGyro Parrot ARCoreGyro
29321
+ 'application/arcore-video-0' ARCoreVideo Parrot ARCoreVideo
29306
29322
 
29307
29323
  =head3 Parrot V1 Tags
29308
29324
 
@@ -29430,6 +29446,36 @@ Parrot streaming metadata automation extension.
29430
29446
  28 AutomationAnimation no
29431
29447
  29 AutomationFlags no
29432
29448
 
29449
+ =head3 Parrot ARCoreAccel Tags
29450
+
29451
+ ARCore accelerometer data.
29452
+
29453
+ Index1 Tag Name Writable
29454
+ ------ -------- --------
29455
+ 4 AccelerometerUnknown? no
29456
+ 5 Accelerometer no
29457
+
29458
+ =head3 Parrot ARCoreCustom Tags
29459
+
29460
+ Index1 Tag Name Writable
29461
+ ------ -------- --------
29462
+ [no tags known]
29463
+
29464
+ =head3 Parrot ARCoreGyro Tags
29465
+
29466
+ ARCore accelerometer data.
29467
+
29468
+ Index1 Tag Name Writable
29469
+ ------ -------- --------
29470
+ 4 GyroscopeUnknown? no
29471
+ 5 Gyroscope no
29472
+
29473
+ =head3 Parrot ARCoreVideo Tags
29474
+
29475
+ Index1 Tag Name Writable
29476
+ ------ -------- --------
29477
+ [no tags known]
29478
+
29433
29479
  =head2 Matroska Tags
29434
29480
 
29435
29481
  The following tags are extracted from Matroska multimedia container files.
@@ -37236,14 +37282,14 @@ values, may created via the ExifTool configuration file.
37236
37282
  GPSDestLongitude GPS:GPSDestLongitude no
37237
37283
  GPS:GPSDestLongitudeRef
37238
37284
  GPSDestLongitudeRef XMP-exif:GPSDestLongitude no
37239
- GPSLatitude GPS:GPSLatitude no
37285
+ GPSLatitude GPS:GPSLatitude yes/
37240
37286
  GPS:GPSLatitudeRef
37241
37287
  GPSLatitude QuickTime:GPSCoordinates no
37242
37288
  GPSLatitude QuickTime:LocationInformation no
37243
37289
  GPSLatitude Sony:GPSLatitude no
37244
37290
  Sony:GPSLatitudeRef
37245
37291
  GPSLatitudeRef XMP-exif:GPSLatitude no
37246
- GPSLongitude GPS:GPSLongitude no
37292
+ GPSLongitude GPS:GPSLongitude yes/
37247
37293
  GPS:GPSLongitudeRef
37248
37294
  GPSLongitude QuickTime:GPSCoordinates no
37249
37295
  GPSLongitude QuickTime:LocationInformation no
@@ -975,7 +975,7 @@ TAG: foreach $tagInfo (@matchingTags) {
975
975
  } else {
976
976
  $wgrp = '';
977
977
  }
978
- foreach $wtag (keys %{$$tagInfo{WriteAlso}}) {
978
+ foreach $wtag (sort keys %{$$tagInfo{WriteAlso}}) {
979
979
  my ($n,$e) = $self->SetNewValue($wgrp . $wtag, undef, Replace=>2);
980
980
  $numSet += $n;
981
981
  }
@@ -1123,7 +1123,7 @@ WriteAlso:
1123
1123
  $wgrp = '';
1124
1124
  }
1125
1125
  local $SIG{'__WARN__'} = \&SetWarning;
1126
- foreach $wtag (keys %$writeAlso) {
1126
+ foreach $wtag (sort keys %$writeAlso) {
1127
1127
  my %opts = (
1128
1128
  Type => 'ValueConv',
1129
1129
  Protected => $protected | 0x02,
@@ -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.43';
32
+ $VERSION = '12.44';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.43
3
+ Version: 12.44
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -21,10 +21,10 @@
21
21
  # 10) Copy zip archive to web servers.
22
22
  # 11) Update zip file version in link and text of html/index.html.
23
23
  #------------------------------------------------------------------------------
24
- -T exiftool-12.43
25
- #--info=FileVersion=12.4.3.0
26
- #--info=ProductVersion=12.4.3.0
27
- ##"--info=Build Date=2022:07:06 14:42:27-04:00"
24
+ -T exiftool-12.44
25
+ #--info=FileVersion=12.4.4.0
26
+ #--info=ProductVersion=12.4.4.0
27
+ ##"--info=Build Date=2022:07:21 06:23:10-04:00"
28
28
  ##"--info=Bundled Perl Version=ActivePerl 5.24.0"
29
29
  ##"--info=LegalCopyright=Copyright (c) 2003-2022, Phil Harvey"
30
30
  ##"--info=ProductName=ExifTool"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exiftool-vendored.pl",
3
- "version": "12.43.0",
3
+ "version": "12.44.0",
4
4
  "description": "Vendored perl ExifTool for Node.js",
5
5
  "main": "./index.js",
6
6
  "homepage": "https://github.com/mceachen/exiftool-vendored.pl#readme",