exiftool-vendored.pl 13.25.1 → 13.29.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/README.md +10 -2
- package/bin/Changes +56 -3
- package/bin/META.json +3 -2
- package/bin/META.yml +3 -2
- package/bin/README +3 -3
- package/bin/arg_files/exif2xmp.args +2 -1
- package/bin/arg_files/xmp2exif.args +2 -1
- package/bin/build_geolocation +1 -1
- package/bin/exiftool +17 -15
- package/bin/lib/Image/ExifTool/Canon.pm +5 -4
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -0
- package/bin/lib/Image/ExifTool/JPEG.pm +20 -8
- package/bin/lib/Image/ExifTool/LigoGPS.pm +16 -2
- package/bin/lib/Image/ExifTool/MPF.pm +5 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +3 -2
- package/bin/lib/Image/ExifTool/PCAP.pm +5 -5
- package/bin/lib/Image/ExifTool/Panasonic.pm +9 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +54 -7
- package/bin/lib/Image/ExifTool/Pentax.pm +102 -1
- package/bin/lib/Image/ExifTool/Plot.pm +36 -15
- package/bin/lib/Image/ExifTool/QuickTime.pm +78 -12
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +70 -14
- package/bin/lib/Image/ExifTool/README +12 -2
- package/bin/lib/Image/ExifTool/RIFF.pm +15 -6
- package/bin/lib/Image/ExifTool/Sony.pm +5 -0
- package/bin/lib/Image/ExifTool/TagLookup.pm +23 -2
- package/bin/lib/Image/ExifTool/TagNames.pod +149 -92
- package/bin/lib/Image/ExifTool/WriteExif.pl +2 -0
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +3 -0
- package/bin/lib/Image/ExifTool/Writer.pl +17 -6
- package/bin/lib/Image/ExifTool/XMP.pm +23 -16
- package/bin/lib/Image/ExifTool/XMP2.pl +5 -1
- package/bin/lib/Image/ExifTool.pm +7 -3
- package/bin/lib/Image/ExifTool.pod +13 -12
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/windows_exiftool.txt +6 -5
- package/package.json +12 -9
|
@@ -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 107 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")' },
|
|
@@ -318,7 +317,7 @@ my %insvLimit = (
|
|
|
318
317
|
ByteOrder => 'Little-Endian',
|
|
319
318
|
},
|
|
320
319
|
}],
|
|
321
|
-
mett => { # Parrot drones
|
|
320
|
+
mett => { # Parrot drones and iPhone/Android using ARCore
|
|
322
321
|
Name => 'mett',
|
|
323
322
|
SubDirectory => { TagTable => 'Image::ExifTool::Parrot::mett' },
|
|
324
323
|
},
|
|
@@ -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;
|
|
@@ -3148,8 +3200,9 @@ sub ProcessTTAD($$$)
|
|
|
3148
3200
|
}
|
|
3149
3201
|
|
|
3150
3202
|
#------------------------------------------------------------------------------
|
|
3151
|
-
# Extract information from Insta360 trailer (INSV and
|
|
3203
|
+
# Extract information from Insta360 trailer (INSV, INSP and MP4 files) or 'inst' box (ref PH)
|
|
3152
3204
|
# Inputs: 0) ExifTool ref, 1) Optional dirInfo ref for returning trailer info
|
|
3205
|
+
# (dirInfo has Offset from end of trailer to end of file or DirEnd absolute end of trailer)
|
|
3153
3206
|
# Returns: true on success
|
|
3154
3207
|
# Notes: There looks to be some useful information by telemetry-parser, but
|
|
3155
3208
|
# the code is cryptic: https://github.com/AdrianEddy/telemetry-parser
|
|
@@ -3161,13 +3214,16 @@ sub ProcessInsta360($;$)
|
|
|
3161
3214
|
my $offset = $dirInfo ? $$dirInfo{Offset} || 0 : 0;
|
|
3162
3215
|
my ($buff, $dirTable, $dirTablePos);
|
|
3163
3216
|
|
|
3217
|
+
if ($dirInfo and $$dirInfo{DirEnd}) {
|
|
3218
|
+
$raf->Seek(0, 2);
|
|
3219
|
+
$offset = $raf->Tell() - $$dirInfo{DirEnd};
|
|
3220
|
+
}
|
|
3164
3221
|
return 0 unless $raf->Seek(-78-$offset, 2) and $raf->Read($buff, 78) == 78 and
|
|
3165
3222
|
substr($buff,-32) eq "8db42d694ccc418790edff439fe026bf"; # check magic number
|
|
3166
3223
|
|
|
3167
3224
|
my $verbose = $et->Options('Verbose');
|
|
3168
3225
|
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
3169
|
-
my $
|
|
3170
|
-
my $trailEnd = $fileEnd - $offset;
|
|
3226
|
+
my $trailEnd = $raf->Tell();
|
|
3171
3227
|
my $trailerLen = unpack('x38V', $buff);
|
|
3172
3228
|
$trailerLen > $trailEnd and $et->Warn('Bad Insta360 trailer size'), return 0;
|
|
3173
3229
|
if ($dirInfo) {
|
|
@@ -3207,7 +3263,7 @@ sub ProcessInsta360($;$)
|
|
|
3207
3263
|
($epos -= $len) + $trailerLen < 0 and last;
|
|
3208
3264
|
$raf->Seek($epos-$offset, 2) or last;
|
|
3209
3265
|
if ($verbose) {
|
|
3210
|
-
$et->VPrint(0, sprintf("Insta360 Record 0x%x (offset 0x%x, %d bytes):\n", $id, $
|
|
3266
|
+
$et->VPrint(0, sprintf("Insta360 Record 0x%x (offset 0x%x, %d bytes):\n", $id, $trailEnd + $epos, $len));
|
|
3211
3267
|
}
|
|
3212
3268
|
# there are 2 types of record 0x300:
|
|
3213
3269
|
# 1. 56 byte records
|
|
@@ -982,6 +982,16 @@ 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
|
+
|
|
990
|
+
DontRead : [QuickTime tags with compatible SubDirectory entries only]
|
|
991
|
+
Avoid reading subdirectory data from file. Instead, pass RAF
|
|
992
|
+
reference (with current position at start of directory) and
|
|
993
|
+
DirEnd.
|
|
994
|
+
|
|
985
995
|
TagID : [reserved] Used internally to save the table key for this tag.
|
|
986
996
|
Note: For XMP tables this corresponds to the XMP property
|
|
987
997
|
name, but the table key may have a full XMP namespace prefix
|
|
@@ -1071,8 +1081,8 @@ numerical, and generated automatically otherwise.
|
|
|
1071
1081
|
ByteOrder : Specifies byte ordering if different than than the rest of the
|
|
1072
1082
|
file. Must be either BigEndian, LittleEndian or Unknown. If
|
|
1073
1083
|
Unknown is specified, the byte order will be determined from
|
|
1074
|
-
the directory count (however, this can not be done if
|
|
1075
|
-
is specified).
|
|
1084
|
+
the directory count for EXIF (however, this can not be done if
|
|
1085
|
+
OffsetPt is specified).
|
|
1076
1086
|
|
|
1077
1087
|
Validate : If given, specifies Perl expression which is used to validate
|
|
1078
1088
|
the subdirectory data (regardless of Validate option setting).
|
|
@@ -30,7 +30,7 @@ use strict;
|
|
|
30
30
|
use vars qw($VERSION $AUTOLOAD);
|
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
32
32
|
|
|
33
|
-
$VERSION = '1.
|
|
33
|
+
$VERSION = '1.71';
|
|
34
34
|
|
|
35
35
|
sub ConvertTimecode($);
|
|
36
36
|
sub ProcessSGLT($$$);
|
|
@@ -547,6 +547,10 @@ my %code2charset = (
|
|
|
547
547
|
Name => 'ID3',
|
|
548
548
|
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
|
549
549
|
},
|
|
550
|
+
'ID3 ' => { # (NC)
|
|
551
|
+
Name => 'ID3-2',
|
|
552
|
+
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
|
553
|
+
},
|
|
550
554
|
#
|
|
551
555
|
# WebP-specific tags
|
|
552
556
|
#
|
|
@@ -668,6 +672,9 @@ my %code2charset = (
|
|
|
668
672
|
Name => 'SEAL',
|
|
669
673
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
|
670
674
|
},
|
|
675
|
+
# LGWV - written by Logic Pro
|
|
676
|
+
# minf, elm1, regn, umid, DGDA - written by Pro Tools
|
|
677
|
+
# MXrt, muma, chrp - written by Sequoia Pro
|
|
671
678
|
);
|
|
672
679
|
|
|
673
680
|
# the maker notes used by some digital cameras
|
|
@@ -1554,9 +1561,9 @@ my %code2charset = (
|
|
|
1554
1561
|
Name => 'Duration',
|
|
1555
1562
|
Require => {
|
|
1556
1563
|
0 => 'RIFF:AvgBytesPerSec',
|
|
1557
|
-
1 => 'FileSize',
|
|
1558
1564
|
},
|
|
1559
1565
|
Desire => {
|
|
1566
|
+
1 => 'FileSize', # (only used if 'data' length isn't available)
|
|
1560
1567
|
# check FrameCount because this calculation only applies
|
|
1561
1568
|
# to audio-only files (eg. WAV)
|
|
1562
1569
|
2 => 'FrameCount',
|
|
@@ -1564,8 +1571,9 @@ my %code2charset = (
|
|
|
1564
1571
|
},
|
|
1565
1572
|
# (can't calculate duration like this for compressed audio types)
|
|
1566
1573
|
RawConv => q{
|
|
1567
|
-
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)
|
|
1568
|
-
return
|
|
1574
|
+
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)$/ or $val[2] or $val[3];
|
|
1575
|
+
return undef unless $val[0] and ($$self{RIFFDataLen} or $val[1]);
|
|
1576
|
+
return(($$self{RIFFDataLen} || $val[1]) / $val[0]);
|
|
1569
1577
|
},
|
|
1570
1578
|
PrintConv => 'ConvertDuration($val)',
|
|
1571
1579
|
},
|
|
@@ -2098,8 +2106,9 @@ sub ProcessRIFF($$)
|
|
|
2098
2106
|
$pos += 4;
|
|
2099
2107
|
$tag .= "_$buff";
|
|
2100
2108
|
$len -= 4; # already read 4 bytes (the LIST type)
|
|
2101
|
-
} elsif ($tag eq 'data'
|
|
2102
|
-
$len = $$et{DataSize64};
|
|
2109
|
+
} elsif ($tag eq 'data') {
|
|
2110
|
+
$len = $$et{DataSize64} if $len == 0xffffffff and $$et{DataSize64};
|
|
2111
|
+
$$et{RIFFDataLen} = ($$et{RIFFDataLen} || 0) + $len;
|
|
2103
2112
|
}
|
|
2104
2113
|
$et->VPrint(0, "RIFF '${tag}' chunk ($len bytes of data):\n");
|
|
2105
2114
|
if ($len <= 0) {
|
|
@@ -10766,6 +10766,11 @@ my %isoSetting2010 = (
|
|
|
10766
10766
|
0 => 'Sony:FocusPosition2',
|
|
10767
10767
|
1 => 'FocalLengthIn35mmFormat',
|
|
10768
10768
|
},
|
|
10769
|
+
# (NOTE: This calculation may be wrong. "Focus Distance 2 is the result of an erroneous
|
|
10770
|
+
# user supplied formula to exiftool. It does use data embedded in the raw file,
|
|
10771
|
+
# but it is not the data. The actual embedded data seems to be proportional to
|
|
10772
|
+
# magnification not a focus distance. The camera needs to calculate magnification
|
|
10773
|
+
# for translation stabilization.", ref https://www.fredmiranda.com/forum/topic/1858744/0)
|
|
10769
10774
|
ValueConv => q{
|
|
10770
10775
|
return undef unless $val;
|
|
10771
10776
|
return 'inf' if $val >= 255;
|
|
@@ -730,6 +730,7 @@ my %tagLookup = (
|
|
|
730
730
|
'afareas' => { 334 => 0x304 },
|
|
731
731
|
'afareaselectionmethod' => { 2 => 0xd },
|
|
732
732
|
'afareaselectmethod' => { 90 => 0x51b },
|
|
733
|
+
'afareasize' => { 358 => 0xde },
|
|
733
734
|
'afareawidth' => { 200 => 0x18, 201 => 0x4e, 203 => 0x32, 204 => 0x46 },
|
|
734
735
|
'afareaxposition' => { 200 => 0x14, 201 => 0x4a, 203 => 0x2e, 204 => 0x42, 428 => 0x1203 },
|
|
735
736
|
'afareaxposition1' => { 428 => 0x1201 },
|
|
@@ -795,12 +796,14 @@ my %tagLookup = (
|
|
|
795
796
|
'afpointsinfocus' => { 82 => 0xe, 199 => 0x2, 201 => 0x30, 369 => 0xb, 370 => 0x4, 394 => [0xf,0x3c] },
|
|
796
797
|
'afpointsinfocus5d' => { 19 => 0x38 },
|
|
797
798
|
'afpointspotmetering' => { 89 => 0xd },
|
|
798
|
-
'afpointsselected' => { 200 => 0x1c, 201 => 0x1c, 370 => '4.1', 497 => 0x4 },
|
|
799
|
+
'afpointsselected' => { 200 => 0x1c, 201 => 0x1c, 369 => 0x12a, 370 => '4.1', 497 => 0x4 },
|
|
799
800
|
'afpointsspecial' => { 370 => '4.2' },
|
|
801
|
+
'afpointsunknown' => { 369 => 0x18f },
|
|
800
802
|
'afpointsunknown1' => { 369 => 0x0 },
|
|
801
803
|
'afpointsunknown2' => { 369 => 0x2 },
|
|
802
804
|
'afpointsused' => { 200 => 0x8, 201 => [0x1c,0x8], 202 => 0x8, 203 => 0xa, 204 => 0xa, 441 => [0x10,0x16e] },
|
|
803
805
|
'afpointswitching' => { 2 => 0x4 },
|
|
806
|
+
'afpointvalues' => { 369 => 0x14 },
|
|
804
807
|
'afpredictor' => { 369 => 0x4 },
|
|
805
808
|
'afresponse' => { 246 => 0xad },
|
|
806
809
|
'afresult' => { 339 => 0x1038 },
|
|
@@ -6466,7 +6469,7 @@ my %tagLookup = (
|
|
|
6466
6469
|
'sensorserialnumber' => { 145 => 0x9ce },
|
|
6467
6470
|
'sensorshield' => { 253 => 0x76b, 254 => 0x77b, 255 => 0x66d, 256 => 0x69d, 257 => 0x705 },
|
|
6468
6471
|
'sensorsize' => { 163 => 'SensorSize', 394 => 0x35 },
|
|
6469
|
-
'sensortemperature' => { 337 => 0x1500, 339 => 0x1007, 399 => 0xc, 403 => 0x210, 438 => [0x39,0x55] },
|
|
6472
|
+
'sensortemperature' => { 337 => 0x1500, 339 => 0x1007, 399 => [0xc,0x2a], 403 => 0x210, 438 => [0x39,0x55] },
|
|
6470
6473
|
'sensortemperature2' => { 399 => 0xe, 403 => 0x211 },
|
|
6471
6474
|
'sensortopborder' => { 145 => 0x3ec },
|
|
6472
6475
|
'sensortopmargin' => { 403 => 0x10b },
|
|
@@ -7042,6 +7045,7 @@ my %tagLookup = (
|
|
|
7042
7045
|
'track' => { 412 => "\xa9trk", 420 => "\xa9trk" },
|
|
7043
7046
|
'trackcreatedate' => { 419 => 0x1 },
|
|
7044
7047
|
'trackmodifydate' => { 419 => 0x2 },
|
|
7048
|
+
'trackname' => { 420 => 'tnam' },
|
|
7045
7049
|
'tracknumber' => { 412 => 'trkn', 557 => 'trackNumber' },
|
|
7046
7050
|
'tracks' => { 557 => 'Tracks' },
|
|
7047
7051
|
'tracksframerate' => { 557 => [\'Tracks','TracksFrameRate'] },
|
|
@@ -7818,6 +7822,7 @@ my %tagExists = (
|
|
|
7818
7822
|
'alternateduotonecolors' => 1,
|
|
7819
7823
|
'alternateellipsoidheight' => 1,
|
|
7820
7824
|
'alternateellipsoidheightextended' => 1,
|
|
7825
|
+
'alternateformattrack' => 1,
|
|
7821
7826
|
'alternateheading' => 1,
|
|
7822
7827
|
'alternatelatitude' => 1,
|
|
7823
7828
|
'alternatelongitude' => 1,
|
|
@@ -7880,8 +7885,10 @@ my %tagExists = (
|
|
|
7880
7885
|
'archivallocation' => 1,
|
|
7881
7886
|
'archivedfilename' => 1,
|
|
7882
7887
|
'arcoreaccel' => 1,
|
|
7888
|
+
'arcoreaccel0' => 1,
|
|
7883
7889
|
'arcorecustom' => 1,
|
|
7884
7890
|
'arcoregyro' => 1,
|
|
7891
|
+
'arcoregyro0' => 1,
|
|
7885
7892
|
'arcorevideo' => 1,
|
|
7886
7893
|
'ardronefile' => 1,
|
|
7887
7894
|
'ardronetelemetry' => 1,
|
|
@@ -8573,6 +8580,7 @@ my %tagExists = (
|
|
|
8573
8580
|
'cloneobject' => 1,
|
|
8574
8581
|
'clonetype' => 1,
|
|
8575
8582
|
'closedcaptioning' => 1,
|
|
8583
|
+
'closedcaptiontrack' => 1,
|
|
8576
8584
|
'cmddialsaperturesetting' => 1,
|
|
8577
8585
|
'cmddialschangemainsub' => 1,
|
|
8578
8586
|
'cmddialschangemainsubexposure' => 1,
|
|
@@ -9388,6 +9396,7 @@ my %tagExists = (
|
|
|
9388
9396
|
'extendedcontentdescr' => 1,
|
|
9389
9397
|
'extendedcontentencryption' => 1,
|
|
9390
9398
|
'extendedinfo' => 1,
|
|
9399
|
+
'extendedlanguagetag' => 1,
|
|
9391
9400
|
'extendedstreamprops' => 1,
|
|
9392
9401
|
'extendedtracktitle' => 1,
|
|
9393
9402
|
'extendedxmp' => 1,
|
|
@@ -9632,6 +9641,7 @@ my %tagExists = (
|
|
|
9632
9641
|
'fontweight' => 1,
|
|
9633
9642
|
'footerposition' => 1,
|
|
9634
9643
|
'footnotes' => 1,
|
|
9644
|
+
'forcedsubtitletrack' => 1,
|
|
9635
9645
|
'form' => 1,
|
|
9636
9646
|
'formatsdcard' => 1,
|
|
9637
9647
|
'formattag' => 1,
|
|
@@ -9799,6 +9809,7 @@ my %tagExists = (
|
|
|
9799
9809
|
'gipcver' => 1,
|
|
9800
9810
|
'givenname' => 1,
|
|
9801
9811
|
'gixiver' => 1,
|
|
9812
|
+
'gkudata' => 1,
|
|
9802
9813
|
'glamoursettings' => 1,
|
|
9803
9814
|
'globalinfo' => 1,
|
|
9804
9815
|
'globalpalette' => 1,
|
|
@@ -9931,6 +9942,8 @@ my %tagExists = (
|
|
|
9931
9942
|
'hdmioutputhdr' => 1,
|
|
9932
9943
|
'hdmioutputrange' => 1,
|
|
9933
9944
|
'hdrgaincurve' => 1,
|
|
9945
|
+
'hdrgaincurvesize' => 1,
|
|
9946
|
+
'hdrgaininfo' => 1,
|
|
9934
9947
|
'hdrgainmap' => 1,
|
|
9935
9948
|
'hdrgm' => 1,
|
|
9936
9949
|
'hdrimage' => 1,
|
|
@@ -10022,6 +10035,7 @@ my %tagExists = (
|
|
|
10022
10035
|
'ics' => 1,
|
|
10023
10036
|
'id' => 1,
|
|
10024
10037
|
'id3' => 1,
|
|
10038
|
+
'id3-2' => 1,
|
|
10025
10039
|
'id3size' => 1,
|
|
10026
10040
|
'id3v1' => 1,
|
|
10027
10041
|
'id3v1_enh' => 1,
|
|
@@ -10186,6 +10200,7 @@ my %tagExists = (
|
|
|
10186
10200
|
'insetnwpixelx' => 1,
|
|
10187
10201
|
'insetnwpixely' => 1,
|
|
10188
10202
|
'insta360' => 1,
|
|
10203
|
+
'insta360info' => 1,
|
|
10189
10204
|
'institution' => 1,
|
|
10190
10205
|
'instructionset' => 1,
|
|
10191
10206
|
'instruments' => 1,
|
|
@@ -11116,6 +11131,7 @@ my %tagExists = (
|
|
|
11116
11131
|
'nominalplaytime' => 1,
|
|
11117
11132
|
'nominalvideobitrate' => 1,
|
|
11118
11133
|
'nomssmarttags' => 1,
|
|
11134
|
+
'non-primarysourcetrack' => 1,
|
|
11119
11135
|
'normallinetransfertiming' => 1,
|
|
11120
11136
|
'noseslimming' => 1,
|
|
11121
11137
|
'note' => 1,
|
|
@@ -12034,6 +12050,7 @@ my %tagExists = (
|
|
|
12034
12050
|
'rotationxyz' => 1,
|
|
12035
12051
|
'rotmode' => 1,
|
|
12036
12052
|
'roundtripversion' => 1,
|
|
12053
|
+
'rovegps' => 1,
|
|
12037
12054
|
'rowcount' => 1,
|
|
12038
12055
|
'rowinterleavefactor' => 1,
|
|
12039
12056
|
'rsrc' => 1,
|
|
@@ -12561,6 +12578,7 @@ my %tagExists = (
|
|
|
12561
12578
|
'subsystemversion' => 1,
|
|
12562
12579
|
'subtileblocksize' => 1,
|
|
12563
12580
|
'subtitledescription' => 1,
|
|
12581
|
+
'subtitletrack' => 1,
|
|
12564
12582
|
'suffix' => 1,
|
|
12565
12583
|
'suggestedpalette' => 1,
|
|
12566
12584
|
'summary' => 1,
|
|
@@ -12591,6 +12609,7 @@ my %tagExists = (
|
|
|
12591
12609
|
'synchronizedlyricstext' => 1,
|
|
12592
12610
|
'synchronizedlyricstype' => 1,
|
|
12593
12611
|
'synconly' => 1,
|
|
12612
|
+
'syncronizedtrack' => 1,
|
|
12594
12613
|
'syncsampletable' => 1,
|
|
12595
12614
|
'syncstate' => 1,
|
|
12596
12615
|
'synlyrics' => 1,
|
|
@@ -12761,6 +12780,7 @@ my %tagExists = (
|
|
|
12761
12780
|
'timecode' => 1,
|
|
12762
12781
|
'timecodeindex' => 1,
|
|
12763
12782
|
'timecodeindexparms' => 1,
|
|
12783
|
+
'timecodetrack' => 1,
|
|
12764
12784
|
'timeinfo' => 1,
|
|
12765
12785
|
'timelapse' => 1,
|
|
12766
12786
|
'timelineinfo' => 1,
|
|
@@ -12859,6 +12879,7 @@ my %tagExists = (
|
|
|
12859
12879
|
'trackvolume' => 1,
|
|
12860
12880
|
'trademark' => 1,
|
|
12861
12881
|
'transactionid' => 1,
|
|
12882
|
+
'transcripttrack' => 1,
|
|
12862
12883
|
'transfercharacteristic' => 1,
|
|
12863
12884
|
'transfercharacteristics' => 1,
|
|
12864
12885
|
'transferrange' => 1,
|