exiftool_vendored 13.26.0 → 13.27.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 +4 -4
- data/bin/Changes +12 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +7 -5
- data/bin/lib/Image/ExifTool/Pentax.pm +50 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +61 -9
- data/bin/lib/Image/ExifTool/README +7 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5 -2
- data/bin/lib/Image/ExifTool/TagNames.pod +99 -84
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
- data/bin/lib/Image/ExifTool.pm +7 -3
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb0a184eb27a7f2bd365b24473d079bf59c21bfb5d18e4322438164364218151
|
4
|
+
data.tar.gz: 39f8672fe231f2d0588920382a7cc7b5d36199a03c7a86f43d0a0161ec5ba2f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c618366df0c65fff73241fe27a143eacb46a64280866edc3ba23f1b7fc8a5765d605029afd58fce678e080bdbd951989ab460336623afebee96ed1e0c61d891
|
7
|
+
data.tar.gz: 93d27263a8c922cea0bef3eec89779517dd040539cf9fae2e3712823fe5d48148ca86663ed469300b3677c1a99a3c9ccfc7564bbdd57150894682424db23621f
|
data/bin/Changes
CHANGED
@@ -7,6 +7,18 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 13.25. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Apr. 8, 2025 - Version 13.27
|
11
|
+
|
12
|
+
- Decode AF points for the Pentax K-3III
|
13
|
+
- Decode timed GPS from a variant of the Rove R2-4K dashcam
|
14
|
+
- Properly decode SensorTemperature for Pentax K3-III
|
15
|
+
- Patched PCAP test to avoid potential failure
|
16
|
+
- Patched to avoid potential "not a HASH reference" error when writing MOV/MP4
|
17
|
+
videos
|
18
|
+
- Fixed issue which could result in "uninitialized value" errors when reading
|
19
|
+
one type of timed GPS from MP4 videos
|
20
|
+
- Fixed problem writing MotionPhotoVideo in MP4 files
|
21
|
+
|
10
22
|
Mar. 31, 2025 - Version 13.26
|
11
23
|
|
12
24
|
- Added a new Olympus CameraType (thanks Herb)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
|
|
109
109
|
terminal window to extract and run ExifTool:
|
110
110
|
|
111
111
|
cd ~/Desktop
|
112
|
-
gzip -dc Image-ExifTool-13.
|
113
|
-
cd Image-ExifTool-13.
|
112
|
+
gzip -dc Image-ExifTool-13.27.tar.gz | tar -xf -
|
113
|
+
cd Image-ExifTool-13.27
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
115
115
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.27';
|
15
15
|
|
16
16
|
$^W = 1; # enable global warnings
|
17
17
|
|
@@ -4289,6 +4289,7 @@ sub ScanDir($$;$)
|
|
4289
4289
|
next unless $recurse;
|
4290
4290
|
# ignore directories starting with "." by default
|
4291
4291
|
next if $file =~ /^\./ and $recurse == 1;
|
4292
|
+
# note: this doesn't work in Windows cmd (see forum17243)
|
4292
4293
|
next if $ignore{$file} or ($ignore{SYMLINKS} and -l $path);
|
4293
4294
|
ScanDir($et, $path, $list);
|
4294
4295
|
last if $end;
|
@@ -6053,7 +6054,7 @@ with this command:
|
|
6053
6054
|
|
6054
6055
|
produces output like this:
|
6055
6056
|
|
6056
|
-
-- Generated by ExifTool 13.
|
6057
|
+
-- Generated by ExifTool 13.27 --
|
6057
6058
|
File: a.jpg - 2003:10:31 15:44:19
|
6058
6059
|
(f/5.6, 1/60s, ISO 100)
|
6059
6060
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6550,9 +6551,10 @@ name, or a full path, and is case sensitive. If a full path is specified,
|
|
6550
6551
|
it must match the Directory tag exactly to be ignored. Use multiple B<-i>
|
6551
6552
|
options to ignore more than one directory name. A special I<DIR> value of
|
6552
6553
|
C<SYMLINKS> may be specified to avoid recursing into directories which are
|
6553
|
-
symbolic links when the B<-r> option is used
|
6554
|
-
|
6555
|
-
files
|
6554
|
+
symbolic links when the B<-r> option is used (note this does not currently
|
6555
|
+
work under Windows). As well, a value of C<HIDDEN> may be used to ignore
|
6556
|
+
files with names that start with a "." (ie. hidden files on Unix systems)
|
6557
|
+
when scanning a directory.
|
6556
6558
|
|
6557
6559
|
=item B<-if>[I<NUM>] I<EXPR>
|
6558
6560
|
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
58
58
|
use Image::ExifTool::GPS;
|
59
59
|
use Image::ExifTool::HP;
|
60
60
|
|
61
|
-
$VERSION = '3.
|
61
|
+
$VERSION = '3.49';
|
62
62
|
|
63
63
|
sub CryptShutterCount($$);
|
64
64
|
sub PrintFilter($$$);
|
@@ -737,6 +737,19 @@ my %filterSettings = (
|
|
737
737
|
52 => ['Toning2', '%+d'], #31 Extract Color (-3-+3)
|
738
738
|
);
|
739
739
|
|
740
|
+
# order of K-3iii AF points
|
741
|
+
my @k3iiiAF = qw(C3 C4 C5 C6 C7 D3 D4 D5 D6 D7 E3 E4 E5 E6 E7 F3 F4 F5 F6 F7
|
742
|
+
G3 G4 G5 G6 G7 E1 E9 D2 D8 E2 E8 F2 F8 C2 C8 G2 G8 D1 D9 F1 F9);
|
743
|
+
|
744
|
+
# print AF Point names
|
745
|
+
sub AFPointsK3iii($;$)
|
746
|
+
{
|
747
|
+
my @a = split ' ', shift;
|
748
|
+
my @pts;
|
749
|
+
$a[$_] and push @pts, $k3iiiAF[$_] || "Unknown($_)" foreach 0..$#a;
|
750
|
+
return @pts ? join '.', sort @pts : '(none)';
|
751
|
+
}
|
752
|
+
|
740
753
|
# decoding for Pentax Firmware ID tags - PH
|
741
754
|
my %pentaxFirmwareID = (
|
742
755
|
# the first 2 numbers are the firmware version, I'm not sure what the second 2 mean
|
@@ -5017,6 +5030,31 @@ my %binaryDataAttrs = (
|
|
5017
5030
|
20 => 'Mid-right',
|
5018
5031
|
},
|
5019
5032
|
},
|
5033
|
+
0x14 => {
|
5034
|
+
Name => 'AFPointValues',
|
5035
|
+
Format => 'int16uRev[61]',
|
5036
|
+
Unknown => 1,
|
5037
|
+
Notes => 'some unknown values related to each AFPoint',
|
5038
|
+
# order is the same as AFPoints below, but there is an additional value for the
|
5039
|
+
# following AFPoints in this order starting at index 28 in the array: C3 C4 C5 C6 C7
|
5040
|
+
# D3 D4 D5 D6 D7 E3 E4 E5 E6 E7 F3 F4 F5 F6 F7 G3 G4 G5 G6 G7 E1 E9 D2 D8 E2 E8 F2 F8
|
5041
|
+
# (values are int16s stored in reversed byte order)
|
5042
|
+
ValueConv => 'my @a=split " ",$val;$_>32767 and $_-=65536 foreach @a;join " ",@a',
|
5043
|
+
},
|
5044
|
+
0x12a => { # byte has a value of 2 if corresponding AF point is selected
|
5045
|
+
Name => 'AFPoints',
|
5046
|
+
Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
|
5047
|
+
Format => 'int8u[41]',
|
5048
|
+
PrintConv => \&AFPointsK3iii,
|
5049
|
+
},
|
5050
|
+
0x18f => { # byte has a value of 1 if corresponding AF point is in focus maybe?
|
5051
|
+
# usually the same points as AFPoints above, but not always
|
5052
|
+
Name => 'AFPointsUnknown',
|
5053
|
+
Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
|
5054
|
+
Unknown => 1,
|
5055
|
+
Format => 'int8u[41]',
|
5056
|
+
PrintConv => \&AFPointsK3iii,
|
5057
|
+
},
|
5020
5058
|
0x1fa => {
|
5021
5059
|
Name => 'LiveView',
|
5022
5060
|
Notes => 'decoded only for the K-3 III',
|
@@ -5740,6 +5778,7 @@ my %binaryDataAttrs = (
|
|
5740
5778
|
# more quickly than CameraTemperature when shooting video.)
|
5741
5779
|
0x0c => {
|
5742
5780
|
Name => 'SensorTemperature', #forum6677 (was CameraTemperature2)
|
5781
|
+
Condition => '$$self{Model} !~ /K-3 Mark III/', # (and maybe others?)
|
5743
5782
|
Format => 'int16s',
|
5744
5783
|
ValueConv => '$val / 10',
|
5745
5784
|
ValueConvInv => '$val * 10',
|
@@ -5748,6 +5787,7 @@ my %binaryDataAttrs = (
|
|
5748
5787
|
},
|
5749
5788
|
0x0e => {
|
5750
5789
|
Name => 'SensorTemperature2', #forum6677 (was CameraTemperature3)
|
5790
|
+
Condition => '$$self{Model} ne "K-3 Mark III"', # (and maybe others?)
|
5751
5791
|
Format => 'int16s',
|
5752
5792
|
ValueConv => '$val / 10',
|
5753
5793
|
ValueConvInv => '$val * 10',
|
@@ -5769,6 +5809,15 @@ my %binaryDataAttrs = (
|
|
5769
5809
|
PrintConvInv => '$val=~s/ ?c$//i; $val',
|
5770
5810
|
},
|
5771
5811
|
# 0x18,0x1a,0x1c,0x1e = int16u[4] BlackPoint - PH
|
5812
|
+
0x2a => {
|
5813
|
+
Name => 'SensorTemperature',
|
5814
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5815
|
+
Format => 'int16s',
|
5816
|
+
ValueConv => '$val / 10',
|
5817
|
+
ValueConvInv => '$val * 10',
|
5818
|
+
PrintConv => 'sprintf("%.1f C", $val)',
|
5819
|
+
PrintConvInv => '$val=~s/ ?c$//i; $val',
|
5820
|
+
},
|
5772
5821
|
);
|
5773
5822
|
|
5774
5823
|
# currently unknown info
|
@@ -945,7 +945,7 @@ my %userDefined = (
|
|
945
945
|
Notes => 'MP4-format video saved in Samsung motion-photo HEIC images.',
|
946
946
|
Binary => 1,
|
947
947
|
# note that this may be written and/or deleted, but can't currently be added back again
|
948
|
-
Writable =>
|
948
|
+
Writable => 'undef',
|
949
949
|
},
|
950
950
|
# '35AX'? - seen "AT" (Yada RoadCam Pro 4K dashcam)
|
951
951
|
cust => 'CustomInfo', # 70mai A810
|
@@ -111,9 +111,8 @@ my %insvLimit = (
|
|
111
111
|
The tags below are extracted from timed metadata in QuickTime and other
|
112
112
|
formats of video files when the ExtractEmbedded option is used. Although
|
113
113
|
most of these tags are combined into the single table below, ExifTool
|
114
|
-
currently reads
|
114
|
+
currently reads 104 different types of timed GPS metadata from video files.
|
115
115
|
},
|
116
|
-
VARS => { NO_ID => 1 },
|
117
116
|
GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
|
118
117
|
GPSLongitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
|
119
118
|
GPSLatitude2 => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")' },
|
@@ -336,11 +335,25 @@ my %insvLimit = (
|
|
336
335
|
Groups => { 0 => 'Trailer', 1 => 'Insta360' }, # (so these groups will appear in the -listg options)
|
337
336
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::INSV_MakerNotes' },
|
338
337
|
},
|
339
|
-
ssmd => {
|
340
|
-
Name => '
|
338
|
+
ssmd => [{
|
339
|
+
Name => 'RoveGPS', # Rove R2-4K new model
|
340
|
+
# double value of GPSLatitude is 4294967295 (00 00 e0 ff ff ff ef 41) for no GPS
|
341
|
+
Condition => 'length $$valPt == 32 and $$valPt !~ /^\0\0\xe0\xff\xff\xff\xef\x41/',
|
342
|
+
SubDirectory => {
|
343
|
+
TagTable => 'Image::ExifTool::QuickTime::RoveGPS',
|
344
|
+
ByteOrder => 'Little-Endian',
|
345
|
+
},
|
346
|
+
},{
|
347
|
+
Name => 'Accelerometer', # Rove R2-4K new model
|
348
|
+
Condition => 'length $$valPt == 12',
|
349
|
+
Format => 'float',
|
350
|
+
ByteOrder => 'Little-Endian',
|
351
|
+
},{
|
352
|
+
Name => 'PreviewImage', # Chigee AIO-5 dashcam
|
353
|
+
Condition => '$$valPt =~ /^\xff\xd8\xff/',
|
341
354
|
Groups => { 2 => 'Preview' },
|
342
355
|
RawConv => '$self->ValidateImage(\$val,$tag)',
|
343
|
-
},
|
356
|
+
}],
|
344
357
|
djmd => { # (DJI AC003 Osmo Action 4 cam)
|
345
358
|
Name => 'DJIMetadata',
|
346
359
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::Protobuf' },
|
@@ -358,6 +371,45 @@ my %insvLimit = (
|
|
358
371
|
MagneticVariation => { }, # (from LIGOGPSINFO)
|
359
372
|
);
|
360
373
|
|
374
|
+
# accelerometer from newer Rove R2-4K cam
|
375
|
+
%Image::ExifTool::QuickTime::RoveGPS = (
|
376
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
377
|
+
GROUPS => { 2 => 'Location' },
|
378
|
+
FIRST_ENTRY => 0,
|
379
|
+
0 => {
|
380
|
+
Name => 'GPSLatitude',
|
381
|
+
Format => 'double',
|
382
|
+
ValueConv => 'my $deg = int($val/100); $val = $deg + ($val - $deg * 100) / 60',
|
383
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
384
|
+
},
|
385
|
+
8 => {
|
386
|
+
Name => 'GPSLongitude',
|
387
|
+
Format => 'double',
|
388
|
+
ValueConv => 'my $deg = int($val/100); $val = $deg + ($val - $deg * 100) / 60',
|
389
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
390
|
+
},
|
391
|
+
20 => {
|
392
|
+
Name => 'GPSSpeed',
|
393
|
+
Format => 'int16u',
|
394
|
+
ValueConv => '$val * 1.852', # convert from knots to km/h
|
395
|
+
},
|
396
|
+
22 => {
|
397
|
+
Name => 'GPSDateTime',
|
398
|
+
Description => 'GPS Date/Time',
|
399
|
+
Groups => { 2 => 'Time' },
|
400
|
+
Format => 'int8u[6]',
|
401
|
+
ValueConv => q{
|
402
|
+
my @v = split ' ', $val;
|
403
|
+
$v[0] += 2000;
|
404
|
+
sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2d', @v);
|
405
|
+
},
|
406
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
407
|
+
},
|
408
|
+
# Seen this in the next 4 bytes:
|
409
|
+
# ff 01 01 00 - good GPS?
|
410
|
+
# ff 00 ff ff - no GPS?
|
411
|
+
);
|
412
|
+
|
361
413
|
# tags found in 'camm' type 0 timed metadata (ref 4)
|
362
414
|
%Image::ExifTool::QuickTime::camm0 = (
|
363
415
|
PROCESS_PROC => \&ProcessCAMM,
|
@@ -2351,12 +2403,12 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
2351
2403
|
}
|
2352
2404
|
SetByteOrder($oldOrder);
|
2353
2405
|
return $$et{DOC_NUM} ? 1 : 0 if $done;
|
2354
|
-
return 0 if defined $yr and $mon < 1 or $mon > 12; # quick sanity check
|
2406
|
+
return 0 if defined $yr and ($mon < 1 or $mon > 12); # quick sanity check
|
2355
2407
|
#
|
2356
2408
|
# save tag values extracted by above code
|
2357
2409
|
#
|
2358
2410
|
FoundSomething($et, $tagTbl, $$dirInfo{SampleTime}, $$dirInfo{SampleDuration});
|
2359
|
-
$sec = '0' . $sec
|
2411
|
+
$sec = '0' . $sec if defined $sec and $sec !~ /^\d{2}/; # pad integer part of seconds to 2 digits
|
2360
2412
|
if (defined $yr) {
|
2361
2413
|
$yr += 2000 if $yr < 2000;
|
2362
2414
|
my $time = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%sZ',$yr,$mon,$day,$hr,$min,$sec);
|
@@ -2368,8 +2420,8 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
2368
2420
|
if (defined $lat and defined $lon) {
|
2369
2421
|
# lat/long are in DDDMM.MMMM format unless $ddd is set
|
2370
2422
|
ConvertLatLon($lat, $lon) unless $ddd;
|
2371
|
-
$et->HandleTag($tagTbl, GPSLatitude => $lat * ($latRef eq 'S' ? -1 : 1));
|
2372
|
-
$et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
|
2423
|
+
$et->HandleTag($tagTbl, GPSLatitude => $lat * (($latRef and $latRef eq 'S') ? -1 : 1));
|
2424
|
+
$et->HandleTag($tagTbl, GPSLongitude => $lon * (($lonRef and $lonRef eq 'W') ? -1 : 1));
|
2373
2425
|
}
|
2374
2426
|
$et->HandleTag($tagTbl, GPSAltitude => $alt) if defined $alt;
|
2375
2427
|
$et->HandleTag($tagTbl, GPSSpeed => $spd) if defined $spd;
|
@@ -982,6 +982,11 @@ numerical, and generated automatically otherwise.
|
|
982
982
|
for use when ExtractInfo is called with the ReEntry flag from
|
983
983
|
inside the RawConv of a tag.
|
984
984
|
|
985
|
+
ByteOrder : [Non-writable tags extracted with HandleTag and writable EXIF
|
986
|
+
offset-pair tags only] Specifies byte order if tag value is
|
987
|
+
stored with a constant byte order that is different from that
|
988
|
+
of the parent directory.
|
989
|
+
|
985
990
|
TagID : [reserved] Used internally to save the table key for this tag.
|
986
991
|
Note: For XMP tables this corresponds to the XMP property
|
987
992
|
name, but the table key may have a full XMP namespace prefix
|
@@ -1071,8 +1076,8 @@ numerical, and generated automatically otherwise.
|
|
1071
1076
|
ByteOrder : Specifies byte ordering if different than than the rest of the
|
1072
1077
|
file. Must be either BigEndian, LittleEndian or Unknown. If
|
1073
1078
|
Unknown is specified, the byte order will be determined from
|
1074
|
-
the directory count (however, this can not be done if
|
1075
|
-
is specified).
|
1079
|
+
the directory count for EXIF (however, this can not be done if
|
1080
|
+
OffsetPt is specified).
|
1076
1081
|
|
1077
1082
|
Validate : If given, specifies Perl expression which is used to validate
|
1078
1083
|
the subdirectory data (regardless of Validate option setting).
|
@@ -785,7 +785,7 @@ my %tagLookup = (
|
|
785
785
|
'afpointmode' => { 374 => 0x3 },
|
786
786
|
'afpointposition' => { 119 => 0x2021, 358 => 0x4d },
|
787
787
|
'afpointregistration' => { 88 => 0x7 },
|
788
|
-
'afpoints' => { 190 => 0x10 },
|
788
|
+
'afpoints' => { 190 => 0x10, 369 => 0x12a },
|
789
789
|
'afpointsel' => { 329 => 0xb, 330 => 0xb, 331 => 0xb, 332 => 0xb },
|
790
790
|
'afpointselected' => { 191 => 0xd, 334 => 0x305, 394 => 0xe, 445 => 0x15, 446 => 0x14, 447 => [0x14,0x1c], 462 => 0x201e },
|
791
791
|
'afpointselected2' => { 374 => 0x4 },
|
@@ -797,10 +797,12 @@ my %tagLookup = (
|
|
797
797
|
'afpointspotmetering' => { 89 => 0xd },
|
798
798
|
'afpointsselected' => { 200 => 0x1c, 201 => 0x1c, 370 => '4.1', 497 => 0x4 },
|
799
799
|
'afpointsspecial' => { 370 => '4.2' },
|
800
|
+
'afpointsunknown' => { 369 => 0x18f },
|
800
801
|
'afpointsunknown1' => { 369 => 0x0 },
|
801
802
|
'afpointsunknown2' => { 369 => 0x2 },
|
802
803
|
'afpointsused' => { 200 => 0x8, 201 => [0x1c,0x8], 202 => 0x8, 203 => 0xa, 204 => 0xa, 441 => [0x10,0x16e] },
|
803
804
|
'afpointswitching' => { 2 => 0x4 },
|
805
|
+
'afpointvalues' => { 369 => 0x14 },
|
804
806
|
'afpredictor' => { 369 => 0x4 },
|
805
807
|
'afresponse' => { 246 => 0xad },
|
806
808
|
'afresult' => { 339 => 0x1038 },
|
@@ -6466,7 +6468,7 @@ my %tagLookup = (
|
|
6466
6468
|
'sensorserialnumber' => { 145 => 0x9ce },
|
6467
6469
|
'sensorshield' => { 253 => 0x76b, 254 => 0x77b, 255 => 0x66d, 256 => 0x69d, 257 => 0x705 },
|
6468
6470
|
'sensorsize' => { 163 => 'SensorSize', 394 => 0x35 },
|
6469
|
-
'sensortemperature' => { 337 => 0x1500, 339 => 0x1007, 399 => 0xc, 403 => 0x210, 438 => [0x39,0x55] },
|
6471
|
+
'sensortemperature' => { 337 => 0x1500, 339 => 0x1007, 399 => [0xc,0x2a], 403 => 0x210, 438 => [0x39,0x55] },
|
6470
6472
|
'sensortemperature2' => { 399 => 0xe, 403 => 0x211 },
|
6471
6473
|
'sensortopborder' => { 145 => 0x3ec },
|
6472
6474
|
'sensortopmargin' => { 403 => 0x10b },
|
@@ -12041,6 +12043,7 @@ my %tagExists = (
|
|
12041
12043
|
'rotationxyz' => 1,
|
12042
12044
|
'rotmode' => 1,
|
12043
12045
|
'roundtripversion' => 1,
|
12046
|
+
'rovegps' => 1,
|
12044
12047
|
'rowcount' => 1,
|
12045
12048
|
'rowinterleavefactor' => 1,
|
12046
12049
|
'rsrc' => 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
|
15
|
+
They contain a total of 28440 tags, with 17667 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
|
@@ -20666,6 +20666,9 @@ Flash information tags for the K10D, K20D and K200D.
|
|
20666
20666
|
6 AFDefocus int8u
|
20667
20667
|
7 AFIntegrationTime int8u
|
20668
20668
|
11 AFPointsInFocus int8u
|
20669
|
+
20 AFPointValues? no
|
20670
|
+
298 AFPoints int8u[41]~
|
20671
|
+
399 AFPointsUnknown? int8u[41]~
|
20669
20672
|
506 LiveView int8u
|
20670
20673
|
509 AFHold int8u
|
20671
20674
|
|
@@ -20902,6 +20905,7 @@ sensors are located in the camera.
|
|
20902
20905
|
14 SensorTemperature2 int16s
|
20903
20906
|
20 CameraTemperature4 int16s
|
20904
20907
|
22 CameraTemperature5 int16s
|
20908
|
+
42 SensorTemperature int16s
|
20905
20909
|
|
20906
20910
|
=head3 Pentax UnknownInfo Tags
|
20907
20911
|
|
@@ -30318,7 +30322,7 @@ for the official QuickTime specification.
|
|
30318
30322
|
'meta' Meta QuickTime Meta
|
30319
30323
|
'moof' MovieFragment QuickTime MovieFragment
|
30320
30324
|
'moov' Movie QuickTime Movie
|
30321
|
-
'mpvd' MotionPhotoVideo
|
30325
|
+
'mpvd' MotionPhotoVideo undef
|
30322
30326
|
'nbmt' NextbaseMeta QuickTime Stream
|
30323
30327
|
'pict' PreviewPICT no
|
30324
30328
|
'pnot' Preview QuickTime Preview
|
@@ -30353,81 +30357,83 @@ for the official QuickTime specification.
|
|
30353
30357
|
The tags below are extracted from timed metadata in QuickTime and other
|
30354
30358
|
formats of video files when the ExtractEmbedded option is used. Although
|
30355
30359
|
most of these tags are combined into the single table below, ExifTool
|
30356
|
-
currently reads
|
30360
|
+
currently reads 104 different types of timed GPS metadata from video files.
|
30357
30361
|
|
30358
|
-
Tag Name
|
30359
|
-
--------
|
30360
|
-
Accelerometer
|
30361
|
-
AccelerometerData
|
30362
|
-
AngularVelocity
|
30363
|
-
CTMD
|
30364
|
-
CameraDateTime
|
30365
|
-
CameraModel
|
30366
|
-
Car
|
30367
|
-
|
30368
|
-
|
30369
|
-
|
30370
|
-
|
30371
|
-
|
30372
|
-
|
30373
|
-
|
30374
|
-
|
30375
|
-
|
30376
|
-
|
30377
|
-
|
30378
|
-
|
30379
|
-
|
30380
|
-
|
30381
|
-
|
30382
|
-
|
30383
|
-
|
30384
|
-
|
30385
|
-
|
30386
|
-
|
30387
|
-
|
30388
|
-
|
30389
|
-
|
30390
|
-
|
30391
|
-
|
30392
|
-
|
30393
|
-
|
30394
|
-
|
30395
|
-
|
30396
|
-
|
30397
|
-
|
30398
|
-
|
30399
|
-
|
30400
|
-
|
30401
|
-
|
30402
|
-
|
30403
|
-
|
30404
|
-
|
30405
|
-
|
30406
|
-
|
30407
|
-
|
30408
|
-
|
30409
|
-
|
30410
|
-
|
30411
|
-
|
30412
|
-
|
30413
|
-
|
30414
|
-
|
30415
|
-
|
30416
|
-
|
30417
|
-
|
30418
|
-
|
30419
|
-
|
30420
|
-
|
30421
|
-
|
30422
|
-
|
30423
|
-
|
30424
|
-
|
30425
|
-
|
30426
|
-
|
30427
|
-
|
30428
|
-
|
30429
|
-
|
30430
|
-
|
30362
|
+
Tag ID Tag Name Writable
|
30363
|
+
------ -------- --------
|
30364
|
+
'Accelerometer' Accelerometer no
|
30365
|
+
'AccelerometerData' AccelerometerData no
|
30366
|
+
'AngularVelocity' AngularVelocity no
|
30367
|
+
'CTMD' CTMD Canon CTMD
|
30368
|
+
'CameraDateTime' CameraDateTime no
|
30369
|
+
'CameraModel' CameraModel no
|
30370
|
+
'Car' Car no
|
30371
|
+
'DateTimeOriginal' DateTimeOriginal no
|
30372
|
+
'DateTimeStamp' DateTimeStamp no
|
30373
|
+
'Distance' Distance no
|
30374
|
+
'ExposureCompensation' ExposureCompensation no
|
30375
|
+
'ExposureTime' ExposureTime no
|
30376
|
+
'FNumber' FNumber no
|
30377
|
+
'FrameNumber' FrameNumber no
|
30378
|
+
'GPSAltitude' GPSAltitude no
|
30379
|
+
'GPSDOP' GPSDOP no
|
30380
|
+
'GPSDateTime' GPSDateTime no
|
30381
|
+
'GPSLatitude' GPSLatitude no
|
30382
|
+
'GPSLatitude2' GPSLatitude2 no
|
30383
|
+
'GPSLongitude' GPSLongitude no
|
30384
|
+
'GPSLongitude2' GPSLongitude2 no
|
30385
|
+
'GPSSatellites' GPSSatellites no
|
30386
|
+
'GPSSpeed' GPSSpeed no
|
30387
|
+
'GPSSpeedRef' GPSSpeedRef no
|
30388
|
+
'GPSTimeStamp' GPSTimeStamp no
|
30389
|
+
'GPSTrack' GPSTrack no
|
30390
|
+
'GPSTrackRef' GPSTrackRef no
|
30391
|
+
'GSensor' GSensor no
|
30392
|
+
'INSV' INSV QuickTime INSV_MakerNotes
|
30393
|
+
'ISO' ISO no
|
30394
|
+
'JPEG' JpgFromRaw no
|
30395
|
+
'KiloCalories' KiloCalories no
|
30396
|
+
'MagneticVariation' MagneticVariation no
|
30397
|
+
'RVMI' RVMI_gReV QuickTime RVMI_gReV
|
30398
|
+
RVMI_sReV QuickTime RVMI_sReV
|
30399
|
+
'RawGSensor' RawGSensor no
|
30400
|
+
'SampleDateTime' SampleDateTime no
|
30401
|
+
'SampleDuration' SampleDuration no
|
30402
|
+
'SampleTime' SampleTime no
|
30403
|
+
'Text' Text no
|
30404
|
+
'TimeCode' TimeCode no
|
30405
|
+
'Unknown00' Unknown00? no
|
30406
|
+
'Unknown01' Unknown01? no
|
30407
|
+
'Unknown02' Unknown02? no
|
30408
|
+
'Unknown03' Unknown03? no
|
30409
|
+
'UserLabel' UserLabel no
|
30410
|
+
'VerticalSpeed' VerticalSpeed no
|
30411
|
+
'VideoTimeStamp' VideoTimeStamp no
|
30412
|
+
'camm' camm0 QuickTime camm0
|
30413
|
+
camm1 QuickTime camm1
|
30414
|
+
camm2 QuickTime camm2
|
30415
|
+
camm3 QuickTime camm3
|
30416
|
+
camm4 QuickTime camm4
|
30417
|
+
camm5 QuickTime camm5
|
30418
|
+
camm6 QuickTime camm6
|
30419
|
+
camm7 QuickTime camm7
|
30420
|
+
'dbgi' DJIDebug? DJI Protobuf
|
30421
|
+
'djmd' DJIMetadata DJI Protobuf
|
30422
|
+
'fdsc' fdsc GoPro fdsc
|
30423
|
+
'gpmd' gpmd_Kingslim QuickTime Stream
|
30424
|
+
gpmd_Rove QuickTime Stream
|
30425
|
+
gpmd_FMAS QuickTime Stream
|
30426
|
+
gpmd_Wolfbox QuickTime Stream
|
30427
|
+
gpmd_GoPro GoPro GPMF
|
30428
|
+
'marl' marl GM marl
|
30429
|
+
'mebx' mebx QuickTime Keys
|
30430
|
+
'mett' mett Parrot mett
|
30431
|
+
'rtmd' rtmd Sony rtmd
|
30432
|
+
'ssmd' RoveGPS QuickTime RoveGPS
|
30433
|
+
Accelerometer no
|
30434
|
+
PreviewImage no
|
30435
|
+
'text' PreviewInfo QuickTime PreviewInfo
|
30436
|
+
'tx3g' tx3g QuickTime tx3g
|
30431
30437
|
|
30432
30438
|
=head3 QuickTime INSV_MakerNotes Tags
|
30433
30439
|
|
@@ -30438,14 +30444,6 @@ currently reads 103 different types of timed GPS metadata from video files.
|
|
30438
30444
|
0x001a Firmware no
|
30439
30445
|
0x002a Parameters no
|
30440
30446
|
|
30441
|
-
=head3 QuickTime PreviewInfo Tags
|
30442
|
-
|
30443
|
-
Preview stored by TomTom Bandit ActionCam.
|
30444
|
-
|
30445
|
-
Index1 Tag Name Writable
|
30446
|
-
------ -------- --------
|
30447
|
-
8 PreviewImage no
|
30448
|
-
|
30449
30447
|
=head3 QuickTime RVMI_gReV Tags
|
30450
30448
|
|
30451
30449
|
GPS information extracted from the RVMI box of MOV videos.
|
@@ -30670,6 +30668,23 @@ VideoKeys family 1 gorup.
|
|
30670
30668
|
------ -------- --------
|
30671
30669
|
'cits' FaceItem QuickTime Keys
|
30672
30670
|
|
30671
|
+
=head3 QuickTime RoveGPS Tags
|
30672
|
+
|
30673
|
+
Index1 Tag Name Writable
|
30674
|
+
------ -------- --------
|
30675
|
+
0 GPSLatitude no
|
30676
|
+
8 GPSLongitude no
|
30677
|
+
20 GPSSpeed no
|
30678
|
+
22 GPSDateTime no
|
30679
|
+
|
30680
|
+
=head3 QuickTime PreviewInfo Tags
|
30681
|
+
|
30682
|
+
Preview stored by TomTom Bandit ActionCam.
|
30683
|
+
|
30684
|
+
Index1 Tag Name Writable
|
30685
|
+
------ -------- --------
|
30686
|
+
8 PreviewImage no
|
30687
|
+
|
30673
30688
|
=head3 QuickTime tx3g Tags
|
30674
30689
|
|
30675
30690
|
Tags extracted from the tx3g sbtl timed metadata of Yuneec and Autel drones,
|
@@ -1729,6 +1729,7 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
1729
1729
|
# (note that $tag may be a binary Keys index here)
|
1730
1730
|
foreach $tag (@addTags) {
|
1731
1731
|
my $tagInfo = $$dirs{$tag} || $$newTags{$tag};
|
1732
|
+
next unless ref $tagInfo eq 'HASH'; # (shouldn't happen, but somehow there is forum17260)
|
1732
1733
|
next if defined $$tagInfo{CanCreate} and not $$tagInfo{CanCreate};
|
1733
1734
|
next if defined $$tagInfo{MediaType} and $$et{MediaType} ne $$tagInfo{MediaType};
|
1734
1735
|
my $subdir = $$tagInfo{SubDirectory};
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -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);
|
31
31
|
|
32
|
-
$VERSION = '13.
|
32
|
+
$VERSION = '13.27';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -9213,10 +9213,14 @@ sub HandleTag($$$$;%)
|
|
9213
9213
|
if ($start >= 0 and $start + $size <= $dLen) {
|
9214
9214
|
$format = $$tagInfo{Format} || $$tagTablePtr{FORMAT};
|
9215
9215
|
$format = $pfmt if not $format and $pfmt and $formatSize{$pfmt};
|
9216
|
-
if ($format) {
|
9216
|
+
if (not $format) {
|
9217
|
+
$val = substr($$dataPt, $start, $size);
|
9218
|
+
} elsif (not $$tagInfo{ByteOrder}) {
|
9217
9219
|
$val = ReadValue($dataPt, $start, $format, $$tagInfo{Count}, $size, \$rational);
|
9218
9220
|
} else {
|
9219
|
-
$
|
9221
|
+
my $oldOrder = GetByteOrder(), SetByteOrder($$tagInfo{ByteOrder});
|
9222
|
+
$val = ReadValue($dataPt, $start, $format, $$tagInfo{Count}, $size, \$rational);
|
9223
|
+
SetByteOrder($oldOrder);
|
9220
9224
|
}
|
9221
9225
|
$binVal = substr($$dataPt, $start, $size) if $$self{OPTIONS}{SaveBin};
|
9222
9226
|
} else {
|
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.
|
4
|
+
version: 13.27.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-04-
|
12
|
+
date: 2025-04-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|