exiftool-vendored.pl 12.41.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 +60 -1
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/exiftool +5 -4
- package/bin/lib/Image/ExifTool/Apple.pm +11 -2
- package/bin/lib/Image/ExifTool/Canon.pm +39 -24
- package/bin/lib/Image/ExifTool/DJI.pm +60 -1
- package/bin/lib/Image/ExifTool/DNG.pm +8 -2
- package/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
- package/bin/lib/Image/ExifTool/Exif.pm +9 -0
- package/bin/lib/Image/ExifTool/FlashPix.pm +23 -2
- package/bin/lib/Image/ExifTool/FujiFilm.pm +23 -2
- package/bin/lib/Image/ExifTool/GPS.pm +21 -1
- package/bin/lib/Image/ExifTool/Geotag.pm +24 -4
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +10 -8
- package/bin/lib/Image/ExifTool/ID3.pm +5 -5
- package/bin/lib/Image/ExifTool/LNK.pm +5 -2
- package/bin/lib/Image/ExifTool/MakerNotes.pm +5 -0
- package/bin/lib/Image/ExifTool/Motorola.pm +8 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +84 -29
- package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +21 -2
- package/bin/lib/Image/ExifTool/PDF.pm +2 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +10 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +96 -2
- package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +6 -5
- package/bin/lib/Image/ExifTool/QuickTime.pm +7 -1
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +41 -6
- package/bin/lib/Image/ExifTool/README +8 -2
- package/bin/lib/Image/ExifTool/Samsung.pm +233 -2
- package/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
- package/bin/lib/Image/ExifTool/Sony.pm +36 -28
- package/bin/lib/Image/ExifTool/TagLookup.pm +2528 -2483
- package/bin/lib/Image/ExifTool/TagNames.pod +192 -97
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
- package/bin/lib/Image/ExifTool/Writer.pl +4 -3
- package/bin/lib/Image/ExifTool.pm +40 -16
- package/bin/lib/Image/ExifTool.pod +13 -4
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +3 -3
|
@@ -6,14 +6,16 @@
|
|
|
6
6
|
# Revisions: 2019-10-23 - P. Harvey Created
|
|
7
7
|
#
|
|
8
8
|
# References: 1) https://developer.parrot.com/docs/pdraw/metadata.html
|
|
9
|
+
# --> changed to https://developer.parrot.com/docs/pdraw/video-metadata.html
|
|
9
10
|
#------------------------------------------------------------------------------
|
|
10
11
|
|
|
11
12
|
package Image::ExifTool::Parrot;
|
|
12
13
|
|
|
13
14
|
use strict;
|
|
14
15
|
use vars qw($VERSION);
|
|
16
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
|
15
17
|
|
|
16
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.02';
|
|
17
19
|
|
|
18
20
|
sub Process_mett($$$);
|
|
19
21
|
|
|
@@ -21,7 +23,10 @@ sub Process_mett($$$);
|
|
|
21
23
|
%Image::ExifTool::Parrot::mett = (
|
|
22
24
|
PROCESS_PROC => \&Process_mett,
|
|
23
25
|
# put the 'P' records first in the documentation
|
|
24
|
-
VARS => {
|
|
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
|
+
},
|
|
25
30
|
NOTES => q{
|
|
26
31
|
Streaming metadata found in Parrot drone videos. See
|
|
27
32
|
L<https://developer.parrot.com/docs/pdraw/metadata.html> for the
|
|
@@ -51,6 +56,23 @@ sub Process_mett($$$);
|
|
|
51
56
|
Name => 'ParrotAutomation',
|
|
52
57
|
SubDirectory => { TagTable => 'Image::ExifTool::Parrot::Automation' },
|
|
53
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
|
+
},
|
|
54
76
|
);
|
|
55
77
|
|
|
56
78
|
# tags found in the Parrot 'mett' V1 timed metadata (ref 1) [untested]
|
|
@@ -629,6 +651,69 @@ sub Process_mett($$$);
|
|
|
629
651
|
},
|
|
630
652
|
);
|
|
631
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
|
+
|
|
632
717
|
%Image::ExifTool::Parrot::Composite = (
|
|
633
718
|
GPSDateTime => {
|
|
634
719
|
Description => 'GPS Date/Time',
|
|
@@ -676,9 +761,18 @@ sub Process_mett($$$)
|
|
|
676
761
|
my $dataPos = $$dirInfo{DataPos};
|
|
677
762
|
my $dirEnd = length $$dataPt;
|
|
678
763
|
my $pos = $$dirInfo{DirStart} || 0;
|
|
764
|
+
my $metaType = $$et{MetaType} || '';
|
|
679
765
|
|
|
680
766
|
$et->VerboseDir('Parrot mett', undef, $dirEnd);
|
|
681
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
|
+
}
|
|
682
776
|
while ($pos + 4 < $dirEnd) {
|
|
683
777
|
my ($id, $nwords) = unpack("x${pos}a2n", $$dataPt);
|
|
684
778
|
my $size;
|
|
@@ -171,7 +171,7 @@ sub DecodeAFPoints($$$$;$);
|
|
|
171
171
|
'3 255.4' => 'Sigma DF EX Aspherical 28-70mm F2.8', #12
|
|
172
172
|
'3 255.5' => 'Sigma AF Tele 400mm F5.6 Multi-coated', #JD
|
|
173
173
|
'3 255.6' => 'Sigma 24-60mm F2.8 EX DG', #PH
|
|
174
|
-
'3 255.7' => 'Sigma 70-300mm F4-5.6 Macro', #JD
|
|
174
|
+
'3 255.7' => 'Sigma 70-300mm F4-5.6 Macro', #JD (also DG Macro, ref 27)
|
|
175
175
|
'3 255.8' => 'Sigma 55-200mm F4-5.6 DC', #JD
|
|
176
176
|
'3 255.9' => 'Sigma 18-50mm F2.8 EX DC', #JD (also Macro version - PH)
|
|
177
177
|
'4 1' => 'smc PENTAX-FA SOFT 28mm F2.8',
|
|
@@ -248,11 +248,12 @@ my %unicodeString = (
|
|
|
248
248
|
Protected => 1,
|
|
249
249
|
Notes => q{
|
|
250
250
|
this tag indicates provides a way for XMP-aware applications to indicate
|
|
251
|
-
that the XMP is synchronized with the IPTC.
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
251
|
+
that the XMP is synchronized with the IPTC. The MWG recommendation is to
|
|
252
|
+
ignore the XMP if IPTCDigest exists and doesn't match the CurrentIPTCDigest.
|
|
253
|
+
When writing, special values of "new" and "old" represent the digests of the
|
|
254
|
+
IPTC from the edited and original files respectively, and are undefined if
|
|
255
|
+
the IPTC does not exist in the respective file. Set this to "new" as an
|
|
256
|
+
indication that the XMP is synchronized with the IPTC
|
|
256
257
|
},
|
|
257
258
|
# also note the 'new' feature requires that the IPTC comes before this tag is written
|
|
258
259
|
ValueConv => 'unpack("H*", $val)',
|
|
@@ -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.
|
|
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
|
#
|
|
@@ -80,7 +80,7 @@ my %processByMetaFormat = (
|
|
|
80
80
|
|
|
81
81
|
# data lengths for each INSV record type
|
|
82
82
|
my %insvDataLen = (
|
|
83
|
-
0x300 =>
|
|
83
|
+
0x300 => 0, # accelerometer (could be either 20 or 56 bytes)
|
|
84
84
|
0x400 => 16, # exposure (ref 6)
|
|
85
85
|
0x600 => 8, # timestamps (ref 6)
|
|
86
86
|
0x700 => 53, # GPS
|
|
@@ -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);
|
|
@@ -2621,8 +2624,33 @@ sub ProcessInsta360($;$)
|
|
|
2621
2624
|
if ($verbose) {
|
|
2622
2625
|
$et->VPrint(0, sprintf("Insta360 Record 0x%x (offset 0x%x, %d bytes):\n", $id, $fileEnd + $epos, $len));
|
|
2623
2626
|
}
|
|
2627
|
+
# there are 2 types of record 0x300:
|
|
2628
|
+
# 1. 56 byte records
|
|
2629
|
+
# 0000: 4a f7 02 00 00 00 00 00 00 00 00 00 00 1e e7 3f [J..............?]
|
|
2630
|
+
# 0010: 00 00 00 00 00 b2 ef bf 00 00 00 00 00 70 c1 bf [.............p..]
|
|
2631
|
+
# 0020: 00 00 00 e0 91 5c 8c bf 00 00 00 20 8f ff 87 bf [.....\..... ....]
|
|
2632
|
+
# 0030: 00 00 00 00 88 7f c9 bf
|
|
2633
|
+
# 2. 20 byte records
|
|
2634
|
+
# 0000: c1 d8 d9 0b 00 00 00 00 f5 83 14 80 df 7f fe 7f [................]
|
|
2635
|
+
# 0010: fe 7f 01 80
|
|
2636
|
+
if ($id == 0x300) {
|
|
2637
|
+
if ($len % 20 and not $len % 56) {
|
|
2638
|
+
$dlen = 56;
|
|
2639
|
+
} elsif ($len % 56 and not $len % 20) {
|
|
2640
|
+
$dlen = 20;
|
|
2641
|
+
} else {
|
|
2642
|
+
if ($raf->Read($buff, 20) == 20) {
|
|
2643
|
+
if (substr($buff, 16, 3) eq "\0\0\0") {
|
|
2644
|
+
$dlen = 56;
|
|
2645
|
+
} else {
|
|
2646
|
+
$dlen = 20;
|
|
2647
|
+
}
|
|
2648
|
+
}
|
|
2649
|
+
$raf->Seek($epos, 2) or last;
|
|
2650
|
+
}
|
|
2651
|
+
}
|
|
2624
2652
|
# limit the number of records we read if necessary
|
|
2625
|
-
if ($insvLimit{$id} and $len > $insvLimit{$id}[1] * $dlen and
|
|
2653
|
+
if ($dlen and $insvLimit{$id} and $len > $insvLimit{$id}[1] * $dlen and
|
|
2626
2654
|
$et->Warn("Insta360 $insvLimit{$id}[0] data is huge. Processing only the first $insvLimit{$id}[1] records",2))
|
|
2627
2655
|
{
|
|
2628
2656
|
$len = $insvLimit{$id}[1] * $dlen;
|
|
@@ -2630,11 +2658,18 @@ sub ProcessInsta360($;$)
|
|
|
2630
2658
|
$raf->Read($buff, $len) == $len or last;
|
|
2631
2659
|
$et->VerboseDump(\$buff) if $verbose > 2;
|
|
2632
2660
|
if ($dlen) {
|
|
2633
|
-
$len % $dlen
|
|
2634
|
-
|
|
2661
|
+
if ($len % $dlen) {
|
|
2662
|
+
$et->Warn(sprintf('Unexpected Insta360 record 0x%x length',$id));
|
|
2663
|
+
} elsif ($id == 0x300) {
|
|
2635
2664
|
for ($p=0; $p<$len; $p+=$dlen) {
|
|
2636
2665
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
2637
|
-
my @a
|
|
2666
|
+
my @a;
|
|
2667
|
+
if ($dlen == 56) {
|
|
2668
|
+
@a = map { GetDouble(\$buff, $p + 8 * $_) } 1..6;
|
|
2669
|
+
} else {
|
|
2670
|
+
@a = unpack("x${p}x8v6", $buff);
|
|
2671
|
+
map { $_ = ($_ - 0x8000) / 1000 } @a;
|
|
2672
|
+
}
|
|
2638
2673
|
$et->HandleTag($tagTbl, TimeCode => sprintf('%.3f', Get64u(\$buff, $p) / 1000));
|
|
2639
2674
|
$et->HandleTag($tagTbl, Accelerometer => "@a[0..2]"); # (NC)
|
|
2640
2675
|
$et->HandleTag($tagTbl, AngularVelocity => "@a[3..5]"); # (NC)
|
|
@@ -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
|
|
|
@@ -531,7 +533,8 @@ numerical, and generated automatically otherwise.
|
|
|
531
533
|
SubIFD's where the PutFirst flag is valid.
|
|
532
534
|
|
|
533
535
|
'Unknown' - this is an unknown tag (only extracted when the
|
|
534
|
-
Unknown option is set).
|
|
536
|
+
Unknown option is set). This is set to 2 for Unknown tags in
|
|
537
|
+
binary tables (extracted when Unknown is 2).
|
|
535
538
|
|
|
536
539
|
'WriteNothing' - flag indicating that nothing is actually
|
|
537
540
|
written when this tag is set. It is a fake writable tag that
|
|
@@ -975,6 +978,9 @@ numerical, and generated automatically otherwise.
|
|
|
975
978
|
alternate language tags (eg. 'fr'). Only used with formats
|
|
976
979
|
which support alternate languages (eg. XMP, MIE, etc).
|
|
977
980
|
|
|
981
|
+
AddedUnknown : [reserved] Used internally to mark Unknown tags that were
|
|
982
|
+
added to the table at run time.
|
|
983
|
+
|
|
978
984
|
SubDirectory { If it exists, this specifies the start of a new subdirectory.
|
|
979
985
|
It contains a collection of variables which specify the type
|
|
980
986
|
and location of the subdirectory. Note that ValueConv and
|
|
@@ -22,7 +22,7 @@ use vars qw($VERSION %samsungLensTypes);
|
|
|
22
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
23
23
|
use Image::ExifTool::Exif;
|
|
24
24
|
|
|
25
|
-
$VERSION = '1.
|
|
25
|
+
$VERSION = '1.52';
|
|
26
26
|
|
|
27
27
|
sub WriteSTMN($$$);
|
|
28
28
|
sub ProcessINFO($$$);
|
|
@@ -1000,7 +1000,238 @@ my %formatMinMax = (
|
|
|
1000
1000
|
'0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
|
|
1001
1001
|
# 0x0aa1-name - seen 'MCC_Data'
|
|
1002
1002
|
# 0x0aa1 - seen '204','222','234','302','429'
|
|
1003
|
-
'0x0aa1' =>
|
|
1003
|
+
'0x0aa1' => {
|
|
1004
|
+
Name => 'MCCData',
|
|
1005
|
+
Groups => { 2 => 'Location' },
|
|
1006
|
+
PrintConv => {
|
|
1007
|
+
202 => 'Greece',
|
|
1008
|
+
204 => 'Netherlands',
|
|
1009
|
+
206 => 'Belgium',
|
|
1010
|
+
208 => 'France',
|
|
1011
|
+
212 => 'Monaco',
|
|
1012
|
+
213 => 'Andorra',
|
|
1013
|
+
214 => 'Spain',
|
|
1014
|
+
216 => 'Hungary',
|
|
1015
|
+
218 => 'Bosnia & Herzegov.',
|
|
1016
|
+
219 => 'Croatia',
|
|
1017
|
+
220 => 'Serbia',
|
|
1018
|
+
221 => 'Kosovo',
|
|
1019
|
+
222 => 'Italy',
|
|
1020
|
+
226 => 'Romania',
|
|
1021
|
+
228 => 'Switzerland',
|
|
1022
|
+
230 => 'Czech Rep.',
|
|
1023
|
+
231 => 'Slovakia',
|
|
1024
|
+
232 => 'Austria',
|
|
1025
|
+
234 => 'United Kingdom',
|
|
1026
|
+
235 => 'United Kingdom',
|
|
1027
|
+
238 => 'Denmark',
|
|
1028
|
+
240 => 'Sweden',
|
|
1029
|
+
242 => 'Norway',
|
|
1030
|
+
244 => 'Finland',
|
|
1031
|
+
246 => 'Lithuania',
|
|
1032
|
+
247 => 'Latvia',
|
|
1033
|
+
248 => 'Estonia',
|
|
1034
|
+
250 => 'Russian Federation',
|
|
1035
|
+
255 => 'Ukraine',
|
|
1036
|
+
257 => 'Belarus',
|
|
1037
|
+
259 => 'Moldova',
|
|
1038
|
+
260 => 'Poland',
|
|
1039
|
+
262 => 'Germany',
|
|
1040
|
+
266 => 'Gibraltar',
|
|
1041
|
+
268 => 'Portugal',
|
|
1042
|
+
270 => 'Luxembourg',
|
|
1043
|
+
272 => 'Ireland',
|
|
1044
|
+
274 => 'Iceland',
|
|
1045
|
+
276 => 'Albania',
|
|
1046
|
+
278 => 'Malta',
|
|
1047
|
+
280 => 'Cyprus',
|
|
1048
|
+
282 => 'Georgia',
|
|
1049
|
+
283 => 'Armenia',
|
|
1050
|
+
284 => 'Bulgaria',
|
|
1051
|
+
286 => 'Turkey',
|
|
1052
|
+
288 => 'Faroe Islands',
|
|
1053
|
+
289 => 'Abkhazia',
|
|
1054
|
+
290 => 'Greenland',
|
|
1055
|
+
292 => 'San Marino',
|
|
1056
|
+
293 => 'Slovenia',
|
|
1057
|
+
294 => 'Macedonia',
|
|
1058
|
+
295 => 'Liechtenstein',
|
|
1059
|
+
297 => 'Montenegro',
|
|
1060
|
+
302 => 'Canada',
|
|
1061
|
+
308 => 'St. Pierre & Miquelon',
|
|
1062
|
+
310 => 'United States / Guam',
|
|
1063
|
+
311 => 'United States / Guam',
|
|
1064
|
+
312 => 'United States',
|
|
1065
|
+
316 => 'United States',
|
|
1066
|
+
330 => 'Puerto Rico',
|
|
1067
|
+
334 => 'Mexico',
|
|
1068
|
+
338 => 'Jamaica',
|
|
1069
|
+
340 => 'French Guiana / Guadeloupe / Martinique',
|
|
1070
|
+
342 => 'Barbados',
|
|
1071
|
+
344 => 'Antigua and Barbuda',
|
|
1072
|
+
346 => 'Cayman Islands',
|
|
1073
|
+
348 => 'British Virgin Islands',
|
|
1074
|
+
350 => 'Bermuda',
|
|
1075
|
+
352 => 'Grenada',
|
|
1076
|
+
354 => 'Montserrat',
|
|
1077
|
+
356 => 'Saint Kitts and Nevis',
|
|
1078
|
+
358 => 'Saint Lucia',
|
|
1079
|
+
360 => 'St. Vincent & Gren.',
|
|
1080
|
+
362 => 'Bonaire, Sint Eustatius and Saba / Curacao / Netherlands Antilles',
|
|
1081
|
+
363 => 'Aruba',
|
|
1082
|
+
364 => 'Bahamas',
|
|
1083
|
+
365 => 'Anguilla',
|
|
1084
|
+
366 => 'Dominica',
|
|
1085
|
+
368 => 'Cuba',
|
|
1086
|
+
370 => 'Dominican Republic',
|
|
1087
|
+
372 => 'Haiti',
|
|
1088
|
+
374 => 'Trinidad and Tobago',
|
|
1089
|
+
376 => 'Turks and Caicos Islands / US Virgin Islands',
|
|
1090
|
+
400 => 'Azerbaijan',
|
|
1091
|
+
401 => 'Kazakhstan',
|
|
1092
|
+
402 => 'Bhutan',
|
|
1093
|
+
404 => 'India',
|
|
1094
|
+
405 => 'India',
|
|
1095
|
+
410 => 'Pakistan',
|
|
1096
|
+
412 => 'Afghanistan',
|
|
1097
|
+
413 => 'Sri Lanka',
|
|
1098
|
+
414 => 'Myanmar (Burma)',
|
|
1099
|
+
415 => 'Lebanon',
|
|
1100
|
+
416 => 'Jordan',
|
|
1101
|
+
417 => 'Syrian Arab Republic',
|
|
1102
|
+
418 => 'Iraq',
|
|
1103
|
+
419 => 'Kuwait',
|
|
1104
|
+
420 => 'Saudi Arabia',
|
|
1105
|
+
421 => 'Yemen',
|
|
1106
|
+
422 => 'Oman',
|
|
1107
|
+
424 => 'United Arab Emirates',
|
|
1108
|
+
425 => 'Israel / Palestinian Territory',
|
|
1109
|
+
426 => 'Bahrain',
|
|
1110
|
+
427 => 'Qatar',
|
|
1111
|
+
428 => 'Mongolia',
|
|
1112
|
+
429 => 'Nepal',
|
|
1113
|
+
430 => 'United Arab Emirates',
|
|
1114
|
+
431 => 'United Arab Emirates',
|
|
1115
|
+
432 => 'Iran',
|
|
1116
|
+
434 => 'Uzbekistan',
|
|
1117
|
+
436 => 'Tajikistan',
|
|
1118
|
+
437 => 'Kyrgyzstan',
|
|
1119
|
+
438 => 'Turkmenistan',
|
|
1120
|
+
440 => 'Japan',
|
|
1121
|
+
441 => 'Japan',
|
|
1122
|
+
450 => 'South Korea',
|
|
1123
|
+
452 => 'Viet Nam',
|
|
1124
|
+
454 => 'Hongkong, China',
|
|
1125
|
+
455 => 'Macao, China',
|
|
1126
|
+
456 => 'Cambodia',
|
|
1127
|
+
457 => 'Laos P.D.R.',
|
|
1128
|
+
460 => 'China',
|
|
1129
|
+
466 => 'Taiwan',
|
|
1130
|
+
467 => 'North Korea',
|
|
1131
|
+
470 => 'Bangladesh',
|
|
1132
|
+
472 => 'Maldives',
|
|
1133
|
+
502 => 'Malaysia',
|
|
1134
|
+
505 => 'Australia',
|
|
1135
|
+
510 => 'Indonesia',
|
|
1136
|
+
514 => 'Timor-Leste',
|
|
1137
|
+
515 => 'Philippines',
|
|
1138
|
+
520 => 'Thailand',
|
|
1139
|
+
525 => 'Singapore',
|
|
1140
|
+
528 => 'Brunei Darussalam',
|
|
1141
|
+
530 => 'New Zealand',
|
|
1142
|
+
537 => 'Papua New Guinea',
|
|
1143
|
+
539 => 'Tonga',
|
|
1144
|
+
540 => 'Solomon Islands',
|
|
1145
|
+
541 => 'Vanuatu',
|
|
1146
|
+
542 => 'Fiji',
|
|
1147
|
+
544 => 'American Samoa',
|
|
1148
|
+
545 => 'Kiribati',
|
|
1149
|
+
546 => 'New Caledonia',
|
|
1150
|
+
547 => 'French Polynesia',
|
|
1151
|
+
548 => 'Cook Islands',
|
|
1152
|
+
549 => 'Samoa',
|
|
1153
|
+
550 => 'Micronesia',
|
|
1154
|
+
552 => 'Palau',
|
|
1155
|
+
553 => 'Tuvalu',
|
|
1156
|
+
555 => 'Niue',
|
|
1157
|
+
602 => 'Egypt',
|
|
1158
|
+
603 => 'Algeria',
|
|
1159
|
+
604 => 'Morocco',
|
|
1160
|
+
605 => 'Tunisia',
|
|
1161
|
+
606 => 'Libya',
|
|
1162
|
+
607 => 'Gambia',
|
|
1163
|
+
608 => 'Senegal',
|
|
1164
|
+
609 => 'Mauritania',
|
|
1165
|
+
610 => 'Mali',
|
|
1166
|
+
611 => 'Guinea',
|
|
1167
|
+
612 => 'Ivory Coast',
|
|
1168
|
+
613 => 'Burkina Faso',
|
|
1169
|
+
614 => 'Niger',
|
|
1170
|
+
615 => 'Togo',
|
|
1171
|
+
616 => 'Benin',
|
|
1172
|
+
617 => 'Mauritius',
|
|
1173
|
+
618 => 'Liberia',
|
|
1174
|
+
619 => 'Sierra Leone',
|
|
1175
|
+
620 => 'Ghana',
|
|
1176
|
+
621 => 'Nigeria',
|
|
1177
|
+
622 => 'Chad',
|
|
1178
|
+
623 => 'Central African Rep.',
|
|
1179
|
+
624 => 'Cameroon',
|
|
1180
|
+
625 => 'Cape Verde',
|
|
1181
|
+
626 => 'Sao Tome & Principe',
|
|
1182
|
+
627 => 'Equatorial Guinea',
|
|
1183
|
+
628 => 'Gabon',
|
|
1184
|
+
629 => 'Congo, Republic',
|
|
1185
|
+
630 => 'Congo, Dem. Rep.',
|
|
1186
|
+
631 => 'Angola',
|
|
1187
|
+
632 => 'Guinea-Bissau',
|
|
1188
|
+
633 => 'Seychelles',
|
|
1189
|
+
634 => 'Sudan',
|
|
1190
|
+
635 => 'Rwanda',
|
|
1191
|
+
636 => 'Ethiopia',
|
|
1192
|
+
637 => 'Somalia',
|
|
1193
|
+
638 => 'Djibouti',
|
|
1194
|
+
639 => 'Kenya',
|
|
1195
|
+
640 => 'Tanzania',
|
|
1196
|
+
641 => 'Uganda',
|
|
1197
|
+
642 => 'Burundi',
|
|
1198
|
+
643 => 'Mozambique',
|
|
1199
|
+
645 => 'Zambia',
|
|
1200
|
+
646 => 'Madagascar',
|
|
1201
|
+
647 => 'Reunion',
|
|
1202
|
+
648 => 'Zimbabwe',
|
|
1203
|
+
649 => 'Namibia',
|
|
1204
|
+
650 => 'Malawi',
|
|
1205
|
+
651 => 'Lesotho',
|
|
1206
|
+
652 => 'Botswana',
|
|
1207
|
+
653 => 'Swaziland',
|
|
1208
|
+
654 => 'Comoros',
|
|
1209
|
+
655 => 'South Africa',
|
|
1210
|
+
657 => 'Eritrea',
|
|
1211
|
+
659 => 'South Sudan',
|
|
1212
|
+
702 => 'Belize',
|
|
1213
|
+
704 => 'Guatemala',
|
|
1214
|
+
706 => 'El Salvador',
|
|
1215
|
+
708 => 'Honduras',
|
|
1216
|
+
710 => 'Nicaragua',
|
|
1217
|
+
712 => 'Costa Rica',
|
|
1218
|
+
714 => 'Panama',
|
|
1219
|
+
716 => 'Peru',
|
|
1220
|
+
722 => 'Argentina Republic',
|
|
1221
|
+
724 => 'Brazil',
|
|
1222
|
+
730 => 'Chile',
|
|
1223
|
+
732 => 'Colombia',
|
|
1224
|
+
734 => 'Venezuela',
|
|
1225
|
+
736 => 'Bolivia',
|
|
1226
|
+
738 => 'Guyana',
|
|
1227
|
+
740 => 'Ecuador',
|
|
1228
|
+
744 => 'Paraguay',
|
|
1229
|
+
746 => 'Suriname',
|
|
1230
|
+
748 => 'Uruguay',
|
|
1231
|
+
750 => 'Falkland Islands (Malvinas)',
|
|
1232
|
+
901 => 'International Networks / Satellite Networks',
|
|
1233
|
+
},
|
|
1234
|
+
},
|
|
1004
1235
|
# 0x0ab0-name - seen 'DualShot_Meta_Info'
|
|
1005
1236
|
'0x0ab1-name' => {
|
|
1006
1237
|
Name => 'DepthMapName',
|
|
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
|
|
|
19
19
|
use strict;
|
|
20
20
|
use vars qw($VERSION);
|
|
21
21
|
|
|
22
|
-
$VERSION = '1.
|
|
22
|
+
$VERSION = '1.67';
|
|
23
23
|
|
|
24
24
|
# this is a special table used to define command-line shortcuts
|
|
25
25
|
# (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
|
|
@@ -118,6 +118,7 @@ $VERSION = '1.66';
|
|
|
118
118
|
'MakerNoteCasio',
|
|
119
119
|
'MakerNoteCasio2',
|
|
120
120
|
'MakerNoteDJI',
|
|
121
|
+
'MakerNoteDJIInfo',
|
|
121
122
|
'MakerNoteFLIR',
|
|
122
123
|
'MakerNoteFujiFilm',
|
|
123
124
|
'MakerNoteGE',
|