exiftool_vendored 13.36.0 → 13.38.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 +39 -1
- data/bin/MANIFEST +9 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +47 -47
- data/bin/build_geolocation +7 -3
- data/bin/exiftool +65 -63
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +16 -9
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +59 -5
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +5 -5
- data/bin/lib/Image/ExifTool/DSF.pm +138 -0
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +5 -2
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -4
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GM.pm +1 -1
- data/bin/lib/Image/ExifTool/Geolocation.pm +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +11 -8
- data/bin/lib/Image/ExifTool/Google.pm +814 -0
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +14 -13
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +2 -2
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +34 -25
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/MakerNotes.pm +30 -7
- data/bin/lib/Image/ExifTool/Microsoft.pm +4 -4
- data/bin/lib/Image/ExifTool/Nikon.pm +4 -4
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +18 -7
- data/bin/lib/Image/ExifTool/Protobuf.pm +12 -6
- data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +30 -8
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -0
- data/bin/lib/Image/ExifTool/README +7 -6
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
- data/bin/lib/Image/ExifTool/Sony.pm +22 -7
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5753 -5696
- data/bin/lib/Image/ExifTool/TagNames.pod +707 -518
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
- data/bin/lib/Image/ExifTool/WPG.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WavPack.pm +144 -0
- data/bin/lib/Image/ExifTool/XMP.pm +43 -37
- data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +42 -27
- data/bin/lib/Image/ExifTool.pod +60 -59
- data/bin/perl-Image-ExifTool.spec +46 -46
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +6 -6
@@ -42,7 +42,7 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
42
42
|
# information extracted from H.264 video streams
|
43
43
|
%Image::ExifTool::H264::Main = (
|
44
44
|
GROUPS => { 2 => 'Video' },
|
45
|
-
VARS => {
|
45
|
+
VARS => { ID_FMT => 'none' },
|
46
46
|
NOTES => q{
|
47
47
|
Tags extracted from H.264 video streams. The metadata for AVCHD videos is
|
48
48
|
stored in this stream.
|
@@ -964,7 +964,7 @@ my %manuSig = ( #6
|
|
964
964
|
%Image::ExifTool::ICC_Profile::Metadata = (
|
965
965
|
PROCESS_PROC => \&ProcessMetadata,
|
966
966
|
GROUPS => { 0 => 'ICC_Profile', 1 => 'ICC-meta', 2 => 'Image' },
|
967
|
-
VARS => {
|
967
|
+
VARS => { ID_FMT => 'none' },
|
968
968
|
NOTES => q{
|
969
969
|
Only these few tags have been pre-defined, but ExifTool will extract any
|
970
970
|
Metadata tags that exist.
|
@@ -18,7 +18,7 @@ use strict;
|
|
18
18
|
use vars qw($VERSION);
|
19
19
|
use Image::ExifTool qw(:DataAccess :Utils);
|
20
20
|
|
21
|
-
$VERSION = '1.
|
21
|
+
$VERSION = '1.64';
|
22
22
|
|
23
23
|
sub ProcessID3v2($$$);
|
24
24
|
sub ProcessPrivate($$$);
|
@@ -76,16 +76,16 @@ my %userTagName = (
|
|
76
76
|
|
77
77
|
# This table is just for documentation purposes
|
78
78
|
%Image::ExifTool::ID3::Main = (
|
79
|
-
VARS => {
|
79
|
+
VARS => { ID_FMT => 'none' },
|
80
80
|
PROCESS_PROC => \&ProcessID3Dir, # (used to process 'id3 ' chunk in WAV files)
|
81
81
|
NOTES => q{
|
82
|
-
ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
|
83
|
-
OGG, FLAC, APE, MPC and RealAudio files. ID3v2 tags which support
|
84
|
-
languages (eg. Comment and Lyrics) are extracted by specifying the
|
85
|
-
followed by a dash ('-'), then a 3-character ISO 639-2 language
|
86
|
-
"Comment-spa"). See L<https://id3.org/> for the official ID3
|
87
|
-
and L<http://www.loc.gov/standards/iso639-2/php/code_list.php>
|
88
|
-
ISO 639-2 language codes.
|
82
|
+
ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, WV, AIFF,
|
83
|
+
OGG, FLAC, APE, DSF, MPC and RealAudio files. ID3v2 tags which support
|
84
|
+
multiple languages (eg. Comment and Lyrics) are extracted by specifying the
|
85
|
+
tag name, followed by a dash ('-'), then a 3-character ISO 639-2 language
|
86
|
+
code (eg. "Comment-spa"). See L<https://id3.org/> for the official ID3
|
87
|
+
specification and L<http://www.loc.gov/standards/iso639-2/php/code_list.php>
|
88
|
+
for a list of ISO 639-2 language codes.
|
89
89
|
},
|
90
90
|
ID3v1 => {
|
91
91
|
Name => 'ID3v1',
|
@@ -720,7 +720,7 @@ my %id3v2_common = (
|
|
720
720
|
# Synchronized lyrics/text
|
721
721
|
%Image::ExifTool::ID3::SynLyrics = (
|
722
722
|
GROUPS => { 1 => 'ID3', 2 => 'Audio' },
|
723
|
-
VARS => {
|
723
|
+
VARS => { ID_FMT => 'none' },
|
724
724
|
PROCESS_PROC => \&ProcessSynText,
|
725
725
|
NOTES => 'The following tags are extracted from synchronized lyrics/text frames.',
|
726
726
|
desc => { Name => 'SynchronizedLyricsDescription' },
|
@@ -754,7 +754,7 @@ my %id3v2_common = (
|
|
754
754
|
%Image::ExifTool::ID3::Private = (
|
755
755
|
PROCESS_PROC => \&Image::ExifTool::ID3::ProcessPrivate,
|
756
756
|
GROUPS => { 1 => 'ID3', 2 => 'Audio' },
|
757
|
-
VARS => {
|
757
|
+
VARS => { ID_FMT => 'none' },
|
758
758
|
NOTES => q{
|
759
759
|
ID3 private (PRIV) tags. ExifTool will decode any private tags found, even
|
760
760
|
if they do not appear in this table.
|
@@ -1437,6 +1437,7 @@ sub ProcessID3($$)
|
|
1437
1437
|
|
1438
1438
|
# allow this to be called with either RAF or DataPt
|
1439
1439
|
my $raf = $$dirInfo{RAF} || File::RandomAccess->new($$dirInfo{DataPt});
|
1440
|
+
my $dataPos = $$dirInfo{DataPos} || 0;
|
1440
1441
|
my ($buff, %id3Header, %id3Trailer, $hBuff, $tBuff, $eBuff, $tagTablePtr);
|
1441
1442
|
my $rtnVal = 0;
|
1442
1443
|
my $hdrEnd = 0;
|
@@ -1486,7 +1487,7 @@ sub ProcessID3($$)
|
|
1486
1487
|
}
|
1487
1488
|
%id3Header = (
|
1488
1489
|
DataPt => \$hBuff,
|
1489
|
-
DataPos => $pos,
|
1490
|
+
DataPos => $dataPos + $pos,
|
1490
1491
|
DirStart => 0,
|
1491
1492
|
DirLen => length($hBuff),
|
1492
1493
|
Version => $vers,
|
@@ -1511,7 +1512,7 @@ sub ProcessID3($$)
|
|
1511
1512
|
$trailSize = 128;
|
1512
1513
|
%id3Trailer = (
|
1513
1514
|
DataPt => \$tBuff,
|
1514
|
-
DataPos => $raf->Tell() - 128,
|
1515
|
+
DataPos => $dataPos + $raf->Tell() - 128,
|
1515
1516
|
DirStart => 0,
|
1516
1517
|
DirLen => length($tBuff),
|
1517
1518
|
);
|
@@ -565,7 +565,7 @@ sub ProcessJPEG_HDR($$$);
|
|
565
565
|
# APP9 Media Jukebox segment (ref PH)
|
566
566
|
%Image::ExifTool::JPEG::MediaJukebox = (
|
567
567
|
GROUPS => { 0 => 'XML', 1 => 'MediaJukebox', 2 => 'Image' },
|
568
|
-
VARS => {
|
568
|
+
VARS => { ID_FMT => 'none' },
|
569
569
|
NOTES => 'Tags found in the XML metadata of the APP9 "Media Jukebox" segment.',
|
570
570
|
Date => {
|
571
571
|
Groups => { 2 => 'Time' },
|
@@ -21,7 +21,7 @@ sub ProcessTag($$$$%);
|
|
21
21
|
|
22
22
|
%Image::ExifTool::JSON::Main = (
|
23
23
|
GROUPS => { 0 => 'JSON', 1 => 'JSON', 2 => 'Other' },
|
24
|
-
VARS => {
|
24
|
+
VARS => { ID_FMT => 'none' },
|
25
25
|
PROCESS_PROC => \&ProcessJSON,
|
26
26
|
NOTES => q{
|
27
27
|
Other than a few tags in the table below, JSON tags have not been
|
@@ -18,7 +18,7 @@ $VERSION = '1.01';
|
|
18
18
|
%Image::ExifTool::LIF::Main = (
|
19
19
|
GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Image' },
|
20
20
|
PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
|
21
|
-
VARS => {
|
21
|
+
VARS => { ID_FMT => 'none' },
|
22
22
|
NOTES => q{
|
23
23
|
Tags extracted from Leica Image Format (LIF) imaging files. As well as the
|
24
24
|
tags listed below, all available information is extracted from the
|
@@ -26,7 +26,7 @@ sub ProcessLinkInfo($$$);
|
|
26
26
|
%Image::ExifTool::LNK::Main = (
|
27
27
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
28
28
|
GROUPS => { 2 => 'Other' },
|
29
|
-
VARS => {
|
29
|
+
VARS => { ID_FMT => 'hex' }, # print hex ID's in documentation
|
30
30
|
NOTES => 'Information extracted from MS Shell Link (Windows shortcut) files.',
|
31
31
|
# maybe the Flags aren't very useful to the user (since they are
|
32
32
|
# mainly structural), but extract them anyway for completeness
|
@@ -262,7 +262,7 @@ sub ProcessLinkInfo($$$);
|
|
262
262
|
GROUPS => { 2 => 'Other' },
|
263
263
|
PROCESS_PROC => \&ProcessLinkInfo,
|
264
264
|
FORMAT => 'int32u',
|
265
|
-
VARS => {
|
265
|
+
VARS => { ID_FMT => 'none' },
|
266
266
|
VolumeID => { },
|
267
267
|
DriveType => {
|
268
268
|
PrintConv => {
|
@@ -22,7 +22,7 @@ sub ExtractTags($$$);
|
|
22
22
|
# Lytro LFP tags (ref PH)
|
23
23
|
%Image::ExifTool::Lytro::Main = (
|
24
24
|
GROUPS => { 2 => 'Camera' },
|
25
|
-
VARS => {
|
25
|
+
VARS => { ID_FMT => 'none' },
|
26
26
|
NOTES => q{
|
27
27
|
Tag definitions for Lytro Light Field Picture (LFP) files. ExifTool
|
28
28
|
extracts the full JSON metadata blocks, as well as breaking them down into
|
@@ -32,7 +32,7 @@ use strict;
|
|
32
32
|
use vars qw($VERSION);
|
33
33
|
use Image::ExifTool qw(:DataAccess :Utils);
|
34
34
|
|
35
|
-
$VERSION = '1.
|
35
|
+
$VERSION = '1.31';
|
36
36
|
|
37
37
|
# program map table "stream_type" lookup (ref 6/1/9)
|
38
38
|
my %streamType = (
|
@@ -132,7 +132,7 @@ my $knotsToKph = 1.852; # knots --> km/h
|
|
132
132
|
# information extracted from the MPEG-2 transport stream
|
133
133
|
%Image::ExifTool::M2TS::Main = (
|
134
134
|
GROUPS => { 2 => 'Video' },
|
135
|
-
VARS => {
|
135
|
+
VARS => { ID_FMT => 'none' },
|
136
136
|
NOTES => q{
|
137
137
|
The MPEG-2 transport stream is used as a container for many different
|
138
138
|
audio/video formats (including AVCHD). This table lists information
|
@@ -165,7 +165,7 @@ my $knotsToKph = 1.852; # knots --> km/h
|
|
165
165
|
# information extracted from AC-3 audio streams
|
166
166
|
%Image::ExifTool::M2TS::AC3 = (
|
167
167
|
GROUPS => { 1 => 'AC3', 2 => 'Audio' },
|
168
|
-
VARS => {
|
168
|
+
VARS => { ID_FMT => 'none' },
|
169
169
|
NOTES => 'Tags extracted from AC-3 audio streams.',
|
170
170
|
AudioSampleRate => {
|
171
171
|
PrintConv => {
|
@@ -322,7 +322,7 @@ sub ParsePID($$$$$)
|
|
322
322
|
if ($$et{OPTIONS}{ExtractEmbedded}) {
|
323
323
|
$more = 1;
|
324
324
|
} elsif (not $$et{OPTIONS}{Validate}) {
|
325
|
-
$et->Warn('The ExtractEmbedded option may find more tags in the video data',
|
325
|
+
$et->Warn('The ExtractEmbedded option may find more tags in the video data',7);
|
326
326
|
}
|
327
327
|
} elsif ($type == 0x81 or $type == 0x87 or $type == 0x91) {
|
328
328
|
# AC-3 audio
|
@@ -557,31 +557,40 @@ sub ProcessM2TS($$)
|
|
557
557
|
{
|
558
558
|
my ($et, $dirInfo) = @_;
|
559
559
|
my $raf = $$dirInfo{RAF};
|
560
|
-
my ($buff, $
|
560
|
+
my ($buff, $j, $eof, $pLen, $readSize);
|
561
561
|
my (%pmt, %pidType, %data, %sectLen, %packLen, %fromStart);
|
562
562
|
my ($startTime, $endTime, $fwdTime, $backScan, $maxBack);
|
563
563
|
my $verbose = $et->Options('Verbose');
|
564
564
|
my $out = $et->Options('TextOut');
|
565
565
|
|
566
|
-
# read
|
567
|
-
return 0 unless $raf->Read($buff,
|
566
|
+
# read enough to guarantee 2 sync bytes
|
567
|
+
return 0 unless $raf->Read($buff, 383) == 383;
|
568
568
|
# test for magic number (sync byte is the only thing we can safely check)
|
569
|
-
return 0 unless $buff =~ /^(
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
569
|
+
return 0 unless $buff =~ /^(.{0,190}?)\x47(.{187}|.{191})\x47/s;
|
570
|
+
my $tcLen = length($2) - 187; # (length of timecode = 0 or 4 bytes)
|
571
|
+
my $start = length($1) - $tcLen;
|
572
|
+
# we may need to try the validation twice to handle the edge case
|
573
|
+
# where the first byte of a timecode is 0x47 and we were fooled
|
574
|
+
# into thinking there was no timecode
|
575
|
+
Try: for (;;) {
|
576
|
+
$start += 192 if $start < 0; # (if all or part of first timecode was missing)
|
577
|
+
$pLen = 188 + $tcLen;
|
578
|
+
$readSize = 64 * $pLen; # size of our read buffer
|
579
|
+
$raf->Seek($start, 0); # rewind to start
|
580
|
+
$raf->Read($buff, $readSize) >= $pLen * 4 or return 0; # require at least 4 packets
|
581
|
+
# validate the sync byte in the next 3 packets
|
582
|
+
for ($j=1; $j<4; ++$j) {
|
583
|
+
next if substr($buff, $tcLen + $pLen * $j, 1) eq 'G'; # (0x47)
|
584
|
+
return 0 if $tcLen;
|
585
|
+
$tcLen = 4;
|
586
|
+
$start -= 4;
|
587
|
+
next Try;
|
588
|
+
}
|
589
|
+
last; # success!
|
583
590
|
}
|
584
|
-
|
591
|
+
# (use M2T instead of M2TS just as an indicator that there is no timecode)
|
592
|
+
$et->SetFileType($tcLen ? 'M2TS' : 'M2T');
|
593
|
+
$et->Warn("File doesn't begin with the start of a packet") if $start;
|
585
594
|
SetByteOrder('MM');
|
586
595
|
my $tagTablePtr = GetTagTable('Image::ExifTool::M2TS::Main');
|
587
596
|
|
@@ -667,7 +676,7 @@ sub ProcessM2TS($$)
|
|
667
676
|
}
|
668
677
|
$pEnd += $pLen;
|
669
678
|
# decode the packet prefix
|
670
|
-
$pos += $
|
679
|
+
$pos += $tcLen;
|
671
680
|
my $prefix = unpack("x${pos}N", $buff); # (use unpack instead of Get32u for speed)
|
672
681
|
# validate sync byte
|
673
682
|
unless (($prefix & 0xff000000) == 0x47000000) {
|
@@ -685,9 +694,9 @@ sub ProcessM2TS($$)
|
|
685
694
|
if ($verbose > 1) {
|
686
695
|
my $i = ($raf->Tell() - length($buff) + $pEnd) / $pLen - 1;
|
687
696
|
print $out "Transport packet $i:\n";
|
688
|
-
$et->VerboseDump(\$buff, Len => $pLen, Addr => $i * $pLen, Start => $pos - $
|
697
|
+
$et->VerboseDump(\$buff, Len => $pLen, Addr => $i * $pLen, Start => $pos - $tcLen);
|
689
698
|
my $str = $pidName{$pid} ? " ($pidName{$pid})" : ' <not in Program Map Table!>';
|
690
|
-
printf $out " Timecode: 0x%.4x\n", Get32u(\$buff, $pos - $
|
699
|
+
printf $out " Timecode: 0x%.4x\n", Get32u(\$buff, $pos - $tcLen) if $pLen == 192;
|
691
700
|
printf $out " Packet ID: 0x%.4x$str\n", $pid;
|
692
701
|
printf $out " Start Flag: %s\n", $payload_unit_start_indicator ? 'Yes' : 'No';
|
693
702
|
}
|
@@ -172,7 +172,7 @@ strings.
|
|
172
172
|
hp_C homeopathic potency of centesimal series (homeopathic potency)
|
173
173
|
hp_X homeopathic potency of decimal series (homeopathic potency)
|
174
174
|
HPF high power field (view area in microscope)
|
175
|
-
Hz
|
175
|
+
Hz Hertz (frequency)
|
176
176
|
in inch, international (length)
|
177
177
|
in_br inch, British (length)
|
178
178
|
in_us inch, U.S. (length)
|
@@ -322,7 +322,7 @@ $VERSION = '1.17';
|
|
322
322
|
|
323
323
|
%Image::ExifTool::MPEG::Xing = (
|
324
324
|
GROUPS => { 2 => 'Audio' },
|
325
|
-
VARS => {
|
325
|
+
VARS => { ID_FMT => 'none' },
|
326
326
|
NOTES => 'These tags are extracted from the Xing/Info frame.',
|
327
327
|
1 => { Name => 'VBRFrames' },
|
328
328
|
2 => { Name => 'VBRBytes' },
|
@@ -28,7 +28,7 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
|
|
28
28
|
# MWG Composite tags
|
29
29
|
%Image::ExifTool::MWG::Composite = (
|
30
30
|
GROUPS => { 0 => 'Composite', 1 => 'MWG', 2 => 'Image' },
|
31
|
-
VARS => {
|
31
|
+
VARS => { ID_FMT => 'none' },
|
32
32
|
WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
|
33
33
|
NOTES => q{
|
34
34
|
The table below lists special Composite tags which are used to access other
|
@@ -116,7 +116,7 @@ my %componentDataDef = (
|
|
116
116
|
# Note: The Binary flag is automatically set for all Unknown tags with unknown Type
|
117
117
|
%Image::ExifTool::MXF::Main = (
|
118
118
|
GROUPS => { 2 => 'Video' },
|
119
|
-
VARS => { NO_LOOKUP => 1,
|
119
|
+
VARS => { NO_LOOKUP => 1, ID_FMT => 'none' }, # tag ID's are too bulky
|
120
120
|
NOTES => q{
|
121
121
|
Tags extracted from Material Exchange Format files. Tag ID's are not listed
|
122
122
|
because they are bulky 16-byte binary values.
|
@@ -52,7 +52,7 @@ my %delXAttr = (
|
|
52
52
|
# "mdls" tags (ref PH)
|
53
53
|
%Image::ExifTool::MacOS::MDItem = (
|
54
54
|
WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
|
55
|
-
VARS => {
|
55
|
+
VARS => { ID_FMT => 'none' },
|
56
56
|
GROUPS => { 0 => 'File', 1 => 'MacOS', 2 => 'Other' },
|
57
57
|
NOTES => q{
|
58
58
|
MDItem tags are extracted using the "mdls" utility. They are extracted if
|
@@ -245,7 +245,7 @@ my %delXAttr = (
|
|
245
245
|
%Image::ExifTool::MacOS::XAttr = (
|
246
246
|
WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
|
247
247
|
GROUPS => { 0 => 'File', 1 => 'MacOS', 2 => 'Other' },
|
248
|
-
VARS => {
|
248
|
+
VARS => { ID_FMT => 'none' }, # (id's are too long)
|
249
249
|
NOTES => q{
|
250
250
|
XAttr tags are extracted using the "xattr" utility. They are extracted if
|
251
251
|
any "XAttr*" tag or the MacOS group is specifically requested, or by setting
|
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
|
|
21
21
|
sub WriteUnknownOrPreview($$$);
|
22
22
|
sub FixLeicaBase($$;$);
|
23
23
|
|
24
|
-
$VERSION = '2.
|
24
|
+
$VERSION = '2.18';
|
25
25
|
|
26
26
|
my $debug; # set to 1 to enable debugging code
|
27
27
|
|
@@ -157,6 +157,13 @@ my $debug; # set to 1 to enable debugging code
|
|
157
157
|
FixOffsets => '$valuePtr -= 210 if $tagID >= 0x1303',
|
158
158
|
},
|
159
159
|
},
|
160
|
+
{
|
161
|
+
Name => 'MakerNoteGoogle',
|
162
|
+
Condition => '$$valPt =~ /^HDRP[\x02\x03]/',
|
163
|
+
SubDirectory => {
|
164
|
+
TagTable => 'Image::ExifTool::Google::HDRPlusMakerNote',
|
165
|
+
},
|
166
|
+
},
|
160
167
|
{
|
161
168
|
Name => 'MakerNoteHasselblad',
|
162
169
|
Condition => '$$self{Make} eq "Hasselblad"',
|
@@ -843,29 +850,45 @@ my $debug; # set to 1 to enable debugging code
|
|
843
850
|
PutFirst => 1, # place immediately after TIFF header
|
844
851
|
},
|
845
852
|
{
|
846
|
-
Name => '
|
853
|
+
Name => 'MakerNoteReconyxHyperFire',
|
847
854
|
Condition => q{
|
848
855
|
$$valPt =~ /^\x01\xf1([\x02\x03]\x00)?/ and
|
849
856
|
($1 or $$self{Make} eq "RECONYX")
|
850
857
|
},
|
851
858
|
SubDirectory => {
|
852
|
-
TagTable => 'Image::ExifTool::Reconyx::
|
859
|
+
TagTable => 'Image::ExifTool::Reconyx::HyperFire',
|
853
860
|
ByteOrder => 'Little-endian',
|
854
861
|
},
|
855
862
|
},
|
856
863
|
{
|
857
|
-
Name => '
|
864
|
+
Name => 'MakerNoteReconyxUltraFire',
|
858
865
|
Condition => '$$valPt =~ /^RECONYXUF\0/',
|
859
866
|
SubDirectory => {
|
860
|
-
TagTable => 'Image::ExifTool::Reconyx::
|
867
|
+
TagTable => 'Image::ExifTool::Reconyx::UltraFire',
|
861
868
|
ByteOrder => 'Little-endian',
|
862
869
|
},
|
863
870
|
},
|
864
871
|
{
|
865
|
-
Name => '
|
872
|
+
Name => 'MakerNoteReconyxHyperFire2',
|
866
873
|
Condition => '$$valPt =~ /^RECONYXH2\0/',
|
867
874
|
SubDirectory => {
|
868
|
-
TagTable => 'Image::ExifTool::Reconyx::
|
875
|
+
TagTable => 'Image::ExifTool::Reconyx::HyperFire2',
|
876
|
+
ByteOrder => 'Little-endian',
|
877
|
+
},
|
878
|
+
},
|
879
|
+
{
|
880
|
+
Name => 'MakerNoteReconyxMicroFire',
|
881
|
+
Condition => '$$valPt =~ /^RECONYXMF\0/',
|
882
|
+
SubDirectory => {
|
883
|
+
TagTable => 'Image::ExifTool::Reconyx::MicroFire',
|
884
|
+
ByteOrder => 'Little-endian',
|
885
|
+
},
|
886
|
+
},
|
887
|
+
{
|
888
|
+
Name => 'MakerNoteReconyxHyperFire4K',
|
889
|
+
Condition => '$$valPt =~ /^RECONYXHF4K\0/',
|
890
|
+
SubDirectory => {
|
891
|
+
TagTable => 'Image::ExifTool::Reconyx::HyperFire4K',
|
869
892
|
ByteOrder => 'Little-endian',
|
870
893
|
},
|
871
894
|
},
|
@@ -230,7 +230,7 @@ sub CheckXtra($$$);
|
|
230
230
|
GROUPS => { 0 => 'XMP', 1 => 'XMP-microsoft', 2 => 'Image' },
|
231
231
|
NAMESPACE => 'MicrosoftPhoto',
|
232
232
|
TABLE_DESC => 'XMP Microsoft',
|
233
|
-
VARS => {
|
233
|
+
VARS => { ID_FMT => 'none' },
|
234
234
|
NOTES => q{
|
235
235
|
Microsoft Photo 1.0 schema XMP tags. This is likely not a complete list,
|
236
236
|
but represents tags which have been observed in sample images. The actual
|
@@ -263,7 +263,7 @@ sub CheckXtra($$$);
|
|
263
263
|
GROUPS => { 0 => 'XMP', 1 => 'XMP-MP1', 2 => 'Image' },
|
264
264
|
NAMESPACE => 'MP1',
|
265
265
|
TABLE_DESC => 'XMP Microsoft Photo',
|
266
|
-
VARS => {
|
266
|
+
VARS => { ID_FMT => 'none' },
|
267
267
|
NOTES => q{
|
268
268
|
Microsoft Photo 1.1 schema XMP tags which have been observed.
|
269
269
|
},
|
@@ -320,7 +320,7 @@ my %sRegions = (
|
|
320
320
|
GROUPS => { 0 => 'XMP', 1 => 'XMP-MP', 2 => 'Image' },
|
321
321
|
NAMESPACE => 'MP',
|
322
322
|
TABLE_DESC => 'XMP Microsoft Photo',
|
323
|
-
VARS => {
|
323
|
+
VARS => { ID_FMT => 'none' },
|
324
324
|
NOTES => q{
|
325
325
|
Microsoft Photo 1.2 schema XMP tags which have been observed.
|
326
326
|
},
|
@@ -361,7 +361,7 @@ my %sRegions = (
|
|
361
361
|
WRITE_GROUP => 'Microsoft',
|
362
362
|
AVOID => 1,
|
363
363
|
GROUPS => { 0 => 'QuickTime', 2 => 'Video' },
|
364
|
-
VARS => {
|
364
|
+
VARS => { ID_FMT => 'none' },
|
365
365
|
NOTES => q{
|
366
366
|
Tags found in the Microsoft "Xtra" atom of QuickTime videos. Tag ID's are
|
367
367
|
not shown because some are unruly GUID's. Currently most of these tags are
|
@@ -13069,7 +13069,7 @@ my %nikonFocalConversions = (
|
|
13069
13069
|
GROUPS => { 0 => 'XMP', 1 => 'XMP-ast', 2 => 'Image' },
|
13070
13070
|
PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
|
13071
13071
|
NAMESPACE => 'ast',
|
13072
|
-
VARS => {
|
13072
|
+
VARS => { ID_FMT => 'none' },
|
13073
13073
|
NOTES => 'Tags used by Nikon NX Studio in Nikon NKSC sidecar files and trailers.',
|
13074
13074
|
about => { },
|
13075
13075
|
version => { },
|
@@ -13127,7 +13127,7 @@ my %nikonFocalConversions = (
|
|
13127
13127
|
GROUPS => { 0 => 'XMP', 1 => 'XMP-sdc', 2 => 'Image' },
|
13128
13128
|
PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
|
13129
13129
|
NAMESPACE => 'sdc',
|
13130
|
-
VARS => {
|
13130
|
+
VARS => { ID_FMT => 'none' },
|
13131
13131
|
about => { },
|
13132
13132
|
version => { },
|
13133
13133
|
appversion => { Name => 'AppVersion' },
|
@@ -13137,7 +13137,7 @@ my %nikonFocalConversions = (
|
|
13137
13137
|
GROUPS => { 0 => 'XMP', 1 => 'XMP-nine', 2 => 'Image' },
|
13138
13138
|
PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
|
13139
13139
|
NAMESPACE => 'nine',
|
13140
|
-
VARS => {
|
13140
|
+
VARS => { ID_FMT => 'none' },
|
13141
13141
|
about => { },
|
13142
13142
|
version => { },
|
13143
13143
|
Label => { },
|
@@ -13154,7 +13154,7 @@ my %nikonFocalConversions = (
|
|
13154
13154
|
%Image::ExifTool::Nikon::NineEdits = (
|
13155
13155
|
GROUPS => { 0 => 'XML', 1 => 'NineEdits', 2 => 'Image' },
|
13156
13156
|
PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
|
13157
|
-
VARS => {
|
13157
|
+
VARS => { ID_FMT => 'none' },
|
13158
13158
|
NOTES => 'XML-based tags used to store editing information.',
|
13159
13159
|
filterParametersBinary => { %base64bin },
|
13160
13160
|
filterParametersExportExportData => { %base64bin },
|
@@ -54,7 +54,7 @@ my @vectorVals;
|
|
54
54
|
%Image::ExifTool::OOXML::Main = (
|
55
55
|
GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Document' },
|
56
56
|
PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
|
57
|
-
VARS => {
|
57
|
+
VARS => { ID_FMT => 'none' },
|
58
58
|
NOTES => q{
|
59
59
|
The Office Open XML (OOXML) format was introduced with Microsoft Office 2007
|
60
60
|
and is used by file types such as DOCX, PPTX and XLSX. These are
|
@@ -21,7 +21,7 @@ $VERSION = '1.04';
|
|
21
21
|
|
22
22
|
my $MAX_PACKETS = 2; # maximum packets to scan from each stream at start of file
|
23
23
|
|
24
|
-
# Information types
|
24
|
+
# Information types recognized in Ogg files
|
25
25
|
%Image::ExifTool::Ogg::Main = (
|
26
26
|
NOTES => q{
|
27
27
|
ExifTool extracts the following types of information from Ogg files. See
|
@@ -41,7 +41,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
41
41
|
use Image::ExifTool::Exif;
|
42
42
|
use Image::ExifTool::APP12;
|
43
43
|
|
44
|
-
$VERSION = '2.
|
44
|
+
$VERSION = '2.91';
|
45
45
|
|
46
46
|
sub PrintLensInfo($$$);
|
47
47
|
|
@@ -120,6 +120,7 @@ my %olympusLensTypes = (
|
|
120
120
|
'0 38 10' => 'Olympus M.Zuiko Digital ED 20mm F1.4 Pro',
|
121
121
|
'0 39 10' => 'Olympus M.Zuiko Digital ED 90mm F3.5 Macro IS Pro', #forum3833
|
122
122
|
'0 40 10' => 'Olympus M.Zuiko Digital ED 150-600mm F5.0-6.3', #forum15652
|
123
|
+
'0 41 10' => 'OM System M.Zuiko Digital ED 50-200mm F2.8 IS Pro', #github#352
|
123
124
|
# Sigma lenses
|
124
125
|
'1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
|
125
126
|
'1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
|
@@ -20,7 +20,7 @@ $VERSION = '1.00';
|
|
20
20
|
# Other info
|
21
21
|
%Image::ExifTool::Other::PFM = (
|
22
22
|
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
|
23
|
-
VARS => {
|
23
|
+
VARS => { ID_FMT => 'none' },
|
24
24
|
NOTES => q{
|
25
25
|
Tags extracted from Portable FloatMap images. See
|
26
26
|
L<http://www.pauldebevec.com/Research/HDR/PFM/> for the specification.
|
@@ -2553,7 +2553,7 @@ my %shootingMode = (
|
|
2553
2553
|
NAMESPACE => 'xmpDSA',
|
2554
2554
|
WRITABLE => 'string',
|
2555
2555
|
AVOID => 1,
|
2556
|
-
VARS => {
|
2556
|
+
VARS => { ID_FMT => 'none' },
|
2557
2557
|
NOTES => 'XMP Digital Shift Assistant tags written by some Leica cameras.',
|
2558
2558
|
Version => { }, # eg. "1.0.0"
|
2559
2559
|
CorrectionAlreadyApplied => { Writable => 'boolean' },
|
@@ -59,7 +59,7 @@ use Image::ExifTool::Exif;
|
|
59
59
|
use Image::ExifTool::GPS;
|
60
60
|
use Image::ExifTool::HP;
|
61
61
|
|
62
|
-
$VERSION = '3.
|
62
|
+
$VERSION = '3.58';
|
63
63
|
|
64
64
|
sub CryptShutterCount($$);
|
65
65
|
sub PrintFilter($$$);
|
@@ -416,6 +416,8 @@ sub AFAreasK3III($$);
|
|
416
416
|
#
|
417
417
|
'31 1' => '18.3mm F2.8', #PH (GR III built-in)
|
418
418
|
'31 4' => '26.1mm F2.8', #PH (GR IIIx built-in)
|
419
|
+
'31 5' => '26.1mm F2.8 GT-2 TC', #KG (GR IIIx built-in plus GT-2 TC)
|
420
|
+
'31 8' => '18.3mm F2.8', #KG (GR IV built-in)
|
419
421
|
);
|
420
422
|
|
421
423
|
# Pentax model ID codes - PH
|
@@ -1183,7 +1185,8 @@ my %binaryDataAttrs = (
|
|
1183
1185
|
0x111 => 'AF-C (Release-priority)', #PH (K-5,K-3)
|
1184
1186
|
0x112 => 'AF-A (Release-priority)', #PH (K-3)
|
1185
1187
|
0x120 => 'Contrast-detect (Release-priority)', #PH (K-01)
|
1186
|
-
# bit 15 indicates macro mode (disabled for MF, and defaults to Select for Snap, Infinity)
|
1188
|
+
# bit 15 indicates macro mode (disabled for MF, and defaults to Select for Snap, Infinity) #KG 'disabled for MF' - in contradiction with 0x8003 ??
|
1189
|
+
0x8003 => 'Manual (Macro)', # (GR IV)
|
1187
1190
|
0x8006 => 'Auto-area (Macro)', # (GR III)
|
1188
1191
|
0x8007 => 'Zone Select (Macro)', # (GR III)
|
1189
1192
|
0x8008 => 'Select (Macro)', # (GR III)
|
@@ -1970,16 +1973,18 @@ my %binaryDataAttrs = (
|
|
1970
1973
|
'19 0' => 'Astrotracer', #29
|
1971
1974
|
# extra K10D modes (ref 16)
|
1972
1975
|
'13 0' => 'Shutter & Aperture Priority AE',
|
1976
|
+
'14 0' => 'Shutter Priority AE', #KG (K-3III))
|
1973
1977
|
'15 0' => 'Sensitivity Priority AE',
|
1974
1978
|
'16 0' => 'Flash X-Sync Speed AE',
|
1979
|
+
'17 0' => 'Flash X-Sync Speed', #KG (K-3III))
|
1975
1980
|
'18 0' => 'Auto Program (Normal)', #PH (K-5)
|
1976
1981
|
'18 1' => 'Auto Program (Hi-speed)', #PH (NC)
|
1977
1982
|
'18 2' => 'Auto Program (DOF)', #PH (K-5)
|
1978
1983
|
'18 3' => 'Auto Program (MTF)', #PH (NC)
|
1979
1984
|
'18 22' => 'Auto Program (Shallow DOF)', #PH (NC)
|
1980
1985
|
'20 22' => 'Blur Control', #PH (Q)
|
1981
|
-
'24 0' => 'Aperture Priority (Adv.Hyp)', #KG
|
1982
|
-
'25 0' => 'Manual Exposure (Adv.Hyp)', #KG
|
1986
|
+
'24 0' => 'Aperture Priority (Adv.Hyp)', #KG (K-3III)
|
1987
|
+
'25 0' => 'Manual Exposure (Adv.Hyp)', #KG (K-3III)
|
1983
1988
|
'26 0' => 'Shutter and Aperture Priority (TAv)', #PH (K-3III)
|
1984
1989
|
'249 0' => 'Movie (TAv)', #31
|
1985
1990
|
'250 0' => 'Movie (TAv, Auto Aperture)', #31
|
@@ -2209,7 +2214,9 @@ my %binaryDataAttrs = (
|
|
2209
2214
|
# 256 - seen for GR III
|
2210
2215
|
# 257 - seen for GR III
|
2211
2216
|
# 262 - seen for GR III
|
2212
|
-
32768 => 'n/a
|
2217
|
+
32768 => 'Standard', #KG (K-3IIIm) (was "n/a" previously - PH)
|
2218
|
+
32769 => 'Hard', #KG (K-3IIIm)
|
2219
|
+
32770 => 'Soft', #KG (K-3IIIm)
|
2213
2220
|
},
|
2214
2221
|
},
|
2215
2222
|
0x0050 => { #PH
|
@@ -5856,8 +5863,8 @@ my %binaryDataAttrs = (
|
|
5856
5863
|
%binaryDataAttrs,
|
5857
5864
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
5858
5865
|
FORMAT => 'int16u',
|
5859
|
-
DATAMEMBER => [ 3 ],
|
5860
|
-
NOTES => 'AF tags written by the K-3 Mark III, GR III and GR
|
5866
|
+
DATAMEMBER => [ 2, 3 ],
|
5867
|
+
NOTES => 'AF tags written by the K-3 Mark III, GR III, GR IIIx and GR IV.',
|
5861
5868
|
0 => {
|
5862
5869
|
Name => 'AFInfo',
|
5863
5870
|
Format => 'int16u[$size/2]',
|
@@ -5903,6 +5910,10 @@ my %binaryDataAttrs = (
|
|
5903
5910
|
0x200b => 'Contrast-detect Spot',
|
5904
5911
|
},
|
5905
5912
|
},
|
5913
|
+
2 => {
|
5914
|
+
Name => 'MaxNumAFPoints',
|
5915
|
+
RawConv => '$$self{MaxNumAFPoints} = $val',
|
5916
|
+
},
|
5906
5917
|
3 => {
|
5907
5918
|
Name => 'NumAFPoints',
|
5908
5919
|
RawConv => '$$self{NumAFPoints} = $val',
|