exiftool_vendored 12.39.0 → 12.41.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +45 -0
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/arg_files/exif2xmp.args +5 -0
- data/bin/arg_files/xmp2exif.args +6 -0
- data/bin/config_files/acdsee.config +6 -6
- data/bin/config_files/photoshop_paths.config +30 -7
- data/bin/config_files/picasa_faces.config +1 -1
- data/bin/config_files/pix4d.config +2 -2
- data/bin/config_files/tiff_version.config +2 -2
- data/bin/exiftool +52 -21
- data/bin/lib/Image/ExifTool/Canon.pm +78 -4
- data/bin/lib/Image/ExifTool/Exif.pm +44 -20
- data/bin/lib/Image/ExifTool/Geotag.pm +3 -2
- data/bin/lib/Image/ExifTool/MacOS.pm +9 -9
- data/bin/lib/Image/ExifTool/MakerNotes.pm +12 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +39 -12
- data/bin/lib/Image/ExifTool/Olympus.pm +7 -6
- data/bin/lib/Image/ExifTool/QuickTime.pm +9 -5
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
- data/bin/lib/Image/ExifTool/Samsung.pm +5 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
- data/bin/lib/Image/ExifTool/Sony.pm +10 -4
- data/bin/lib/Image/ExifTool/TagLookup.pm +6360 -6354
- data/bin/lib/Image/ExifTool/TagNames.pod +22 -2
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +7 -3
- data/bin/lib/Image/ExifTool/WriteXMP.pl +2 -0
- data/bin/lib/Image/ExifTool/XMP.pm +9 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +21 -7
- data/bin/lib/Image/ExifTool.pm +11 -3
- data/bin/lib/Image/ExifTool.pod +7 -6
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -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 25775 tags, with 16465 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
|
@@ -669,6 +669,7 @@ for the official EXIF 2.32 specification.
|
|
669
669
|
MakerNoteNintendo ExifIFD Nintendo
|
670
670
|
MakerNoteOlympus ExifIFD Olympus
|
671
671
|
MakerNoteOlympus2 ExifIFD Olympus
|
672
|
+
MakerNoteOlympus3 ExifIFD Olympus
|
672
673
|
MakerNoteLeica ExifIFD Panasonic
|
673
674
|
MakerNoteLeica2 ExifIFD Panasonic Leica2
|
674
675
|
MakerNoteLeica3 ExifIFD Panasonic Leica3
|
@@ -7346,6 +7347,7 @@ Unknown only to reduce the volume of the normal output.
|
|
7346
7347
|
0x4021 MultiExp Canon MultiExp
|
7347
7348
|
0x4024 FilterInfo Canon FilterInfo
|
7348
7349
|
0x4025 HDRInfo Canon HDRInfo
|
7350
|
+
0x4026 LogInfo Canon LogInfo
|
7349
7351
|
0x4028 AFConfig Canon AFConfig
|
7350
7352
|
0x403f RawBurstModeRoll Canon RawBurstInfo
|
7351
7353
|
|
@@ -9515,6 +9517,18 @@ Information about creative filter settings.
|
|
9515
9517
|
1 HDR int32s
|
9516
9518
|
2 HDREffect int32s
|
9517
9519
|
|
9520
|
+
=head3 Canon LogInfo Tags
|
9521
|
+
|
9522
|
+
Index4 Tag Name Writable
|
9523
|
+
------ -------- --------
|
9524
|
+
4 CompressionFormat int32s
|
9525
|
+
6 Sharpness int32s
|
9526
|
+
7 Saturation int32s
|
9527
|
+
8 ColorTone int32s
|
9528
|
+
9 ColorSpace2 int32s
|
9529
|
+
10 ColorMatrix int32s
|
9530
|
+
11 CanonLogVersion int32s
|
9531
|
+
|
9518
9532
|
=head3 Canon AFConfig Tags
|
9519
9533
|
|
9520
9534
|
Index4 Tag Name Writable
|
@@ -13591,6 +13605,8 @@ These tags belong to the ExifTool XMP-ast family 1 group.
|
|
13591
13605
|
About no
|
13592
13606
|
GPSAltitude no
|
13593
13607
|
GPSAltitudeRef no
|
13608
|
+
GPSImgDirection no
|
13609
|
+
GPSImgDirectionRef no
|
13594
13610
|
GPSLatitude no
|
13595
13611
|
GPSLatitudeRef no
|
13596
13612
|
GPSLongitude no
|
@@ -14317,6 +14333,7 @@ These tags are used by the Z9.
|
|
14317
14333
|
434 FlashOutput? int8u
|
14318
14334
|
444 FlashRemoteControl? int8u
|
14319
14335
|
456 FlashWirelessOption? int8u
|
14336
|
+
528 AFAreaMode int8u
|
14320
14337
|
530 VRMode int8u
|
14321
14338
|
534 BracketSet int8u
|
14322
14339
|
536 BracketProgram int8u
|
@@ -14710,7 +14727,7 @@ These tags are used by the D4S, D750, D810, D5500, D7200 (FlashInfoVersion
|
|
14710
14727
|
0 AFInfo2Version no
|
14711
14728
|
62 AFImageWidth int16u
|
14712
14729
|
64 AFImageHeight int16u
|
14713
|
-
67
|
14730
|
+
67 FocusPositionHorizontal int8u~
|
14714
14731
|
69 FocusPositionVertical int8u~
|
14715
14732
|
70 AFAreaWidth int16u
|
14716
14733
|
72 AFAreaHeight int16u
|
@@ -20978,6 +20995,7 @@ still proprietary) Adobe format.
|
|
20978
20995
|
MakerNoteNintendo Nintendo
|
20979
20996
|
MakerNoteOlympus Olympus
|
20980
20997
|
MakerNoteOlympus2 Olympus
|
20998
|
+
MakerNoteOlympus3 Olympus
|
20981
20999
|
MakerNoteLeica Panasonic
|
20982
21000
|
MakerNoteLeica2 Panasonic Leica2
|
20983
21001
|
MakerNoteLeica3 Panasonic Leica3
|
@@ -37010,6 +37028,7 @@ FileName.
|
|
37010
37028
|
NewGUID ExifTool no
|
37011
37029
|
Now ExifTool no
|
37012
37030
|
OtherImage File no
|
37031
|
+
PageCount File no
|
37013
37032
|
PreviewImage File yes
|
37014
37033
|
PreviewPDF File no
|
37015
37034
|
PreviewPNG File no
|
@@ -37517,6 +37536,7 @@ for more details.
|
|
37517
37536
|
MakerNoteNintendo
|
37518
37537
|
MakerNoteOlympus
|
37519
37538
|
MakerNoteOlympus2
|
37539
|
+
MakerNoteOlympus3
|
37520
37540
|
MakerNoteLeica
|
37521
37541
|
MakerNoteLeica2
|
37522
37542
|
MakerNoteLeica3
|
@@ -1391,9 +1391,13 @@ sub WriteQuickTime($$$)
|
|
1391
1391
|
$pos += $siz;
|
1392
1392
|
}
|
1393
1393
|
if ($msg) {
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1394
|
+
# (allow empty sample description for non-audio/video handler types, eg. 'url ', 'meta')
|
1395
|
+
if ($$et{HandlerType}) {
|
1396
|
+
my $grp = $$et{CUR_WRITE_GROUP} || $parent;
|
1397
|
+
$et->Error("$msg for $grp");
|
1398
|
+
return $rtnErr;
|
1399
|
+
}
|
1400
|
+
$flg = 1; # (this seems to be the case)
|
1397
1401
|
}
|
1398
1402
|
$$et{QtDataFlg} = $flg;
|
1399
1403
|
}
|
@@ -298,6 +298,8 @@ sub SetPropertyPath($$;$$$$)
|
|
298
298
|
$flatInfo = $$tagTablePtr{$flatID};
|
299
299
|
if ($flatInfo) {
|
300
300
|
return if $$flatInfo{PropertyPath};
|
301
|
+
} elsif (@$propList > 50) {
|
302
|
+
return; # avoid deep recursion
|
301
303
|
} else {
|
302
304
|
# flattened tag doesn't exist, so create it now
|
303
305
|
# (could happen if we were just writing a structure)
|
@@ -3399,6 +3399,10 @@ NoLoop:
|
|
3399
3399
|
}
|
3400
3400
|
# save property list for verbose "adding" message unless this tag already exists
|
3401
3401
|
$added = \@tagList unless $$tagTablePtr{$tagID};
|
3402
|
+
# if this is an empty structure, we must add a Struct field
|
3403
|
+
if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
|
3404
|
+
$$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' };
|
3405
|
+
}
|
3402
3406
|
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
3403
3407
|
last;
|
3404
3408
|
}
|
@@ -3730,7 +3734,11 @@ sub ParseXMPElement($$$;$$$$)
|
|
3730
3734
|
} elsif ($prop eq 'rdf:Description') {
|
3731
3735
|
# remove unnecessary rdf:Description elements since parseType='Resource'
|
3732
3736
|
# is more efficient (also necessary to make property path consistent)
|
3733
|
-
|
3737
|
+
if (grep /^rdf:Description$/, @$propList) {
|
3738
|
+
$parseResource = 1;
|
3739
|
+
# set parseType so we know this is a structure
|
3740
|
+
$attrs{'rdf:parseType'} = 'Resource';
|
3741
|
+
}
|
3734
3742
|
} elsif ($prop eq 'xmp:xmpmeta') {
|
3735
3743
|
# patch MicrosoftPhoto unconformity
|
3736
3744
|
$prop = 'x:xmpmeta';
|
@@ -634,15 +634,14 @@ sub RestoreStruct($;$)
|
|
634
634
|
local $_;
|
635
635
|
my ($et, $keepFlat) = @_;
|
636
636
|
my ($key, %structs, %var, %lists, $si, %listKeys, @siList);
|
637
|
-
my $ex = $$et{TAG_EXTRA};
|
638
637
|
my $valueHash = $$et{VALUE};
|
639
638
|
my $fileOrder = $$et{FILE_ORDER};
|
640
639
|
my $tagExtra = $$et{TAG_EXTRA};
|
641
640
|
foreach $key (keys %{$$et{TAG_INFO}}) {
|
642
|
-
$$
|
643
|
-
my $structProps = $$
|
644
|
-
delete $$
|
645
|
-
my $tagInfo = $$et{TAG_INFO}{$key};
|
641
|
+
$$tagExtra{$key} or next;
|
642
|
+
my $structProps = $$tagExtra{$key}{Struct} or next;
|
643
|
+
delete $$tagExtra{$key}{Struct}; # (don't re-use)
|
644
|
+
my $tagInfo = $$et{TAG_INFO}{$key}; # tagInfo for flattened tag
|
646
645
|
my $table = $$tagInfo{Table};
|
647
646
|
my $prop = shift @$structProps;
|
648
647
|
my $tag = $$prop[0];
|
@@ -829,8 +828,23 @@ sub RestoreStruct($;$)
|
|
829
828
|
$var{$_} and push @siList, $_ foreach keys %structs;
|
830
829
|
# save new structures in the same order they were read from file
|
831
830
|
foreach $si (sort { $var{$a}[1] <=> $var{$b}[1] } @siList) {
|
832
|
-
|
833
|
-
|
831
|
+
# test to see if a tag for this structure has already been generated
|
832
|
+
# (this could happen only if one of the structures in a list was empty)
|
833
|
+
$key = $var{$si}[0]{Name};
|
834
|
+
my $found;
|
835
|
+
if ($$valueHash{$key}) {
|
836
|
+
my @keys = grep /^$key( \(\d+\))?$/, keys %$valueHash;
|
837
|
+
foreach $key (@keys) {
|
838
|
+
next unless $$valueHash{$key} eq $structs{$si};
|
839
|
+
$found = 1;
|
840
|
+
last;
|
841
|
+
}
|
842
|
+
}
|
843
|
+
unless ($found) {
|
844
|
+
# otherwise, generate a new tag for this structure
|
845
|
+
$key = $et->FoundTag($var{$si}[0], '');
|
846
|
+
$$valueHash{$key} = $structs{$si};
|
847
|
+
}
|
834
848
|
$$fileOrder{$key} = $var{$si}[1];
|
835
849
|
}
|
836
850
|
}
|
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);
|
31
31
|
|
32
|
-
$VERSION = '12.
|
32
|
+
$VERSION = '12.41';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -320,7 +320,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
320
320
|
FPF => ['FPF', 'FLIR Public image Format'],
|
321
321
|
FPX => ['FPX', 'FlashPix'],
|
322
322
|
GIF => ['GIF', 'Compuserve Graphics Interchange Format'],
|
323
|
-
GPR => ['TIFF', '
|
323
|
+
GPR => ['TIFF', 'General Purpose RAW'], # https://gopro.github.io/gpr/
|
324
324
|
GZ => 'GZIP',
|
325
325
|
GZIP => ['GZIP', 'GNU ZIP compressed archive'],
|
326
326
|
HDP => ['TIFF', 'Windows HD Photo'],
|
@@ -1799,6 +1799,7 @@ my %systemTagsNotes = (
|
|
1799
1799
|
Writable => 1,
|
1800
1800
|
Protected => 1,
|
1801
1801
|
},
|
1802
|
+
PageCount => { Notes => 'the number of pages in a multi-page TIFF document' },
|
1802
1803
|
);
|
1803
1804
|
|
1804
1805
|
# tags defined by UserParam option (added at runtime)
|
@@ -7448,7 +7449,11 @@ sub DoProcessTIFF($$;$)
|
|
7448
7449
|
# this looks like a BigTIFF image
|
7449
7450
|
$raf->Seek(0);
|
7450
7451
|
require Image::ExifTool::BigTIFF;
|
7451
|
-
|
7452
|
+
my $result = Image::ExifTool::BigTIFF::ProcessBTF($self, $dirInfo);
|
7453
|
+
if ($result) {
|
7454
|
+
$self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
|
7455
|
+
return 1;
|
7456
|
+
}
|
7452
7457
|
} elsif ($identifier == 0x4f52 or $identifier == 0x5352) {
|
7453
7458
|
# Olympus ORF image (set FileType now because base type is 'ORF')
|
7454
7459
|
$self->SetFileType($fileType = 'ORF');
|
@@ -7541,6 +7546,9 @@ sub DoProcessTIFF($$;$)
|
|
7541
7546
|
# override whatever FileType we set since we now know it is DNG
|
7542
7547
|
$self->OverrideFileType($$self{TIFF_TYPE} = 'DNG');
|
7543
7548
|
}
|
7549
|
+
if ($$self{TIFF_TYPE} eq 'TIFF') {
|
7550
|
+
$self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
|
7551
|
+
}
|
7544
7552
|
return 1;
|
7545
7553
|
}
|
7546
7554
|
#
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -593,12 +593,13 @@ different when copying tags with L</SetNewValuesFromFile>.
|
|
593
593
|
=item DateFormat
|
594
594
|
|
595
595
|
Format for printing date/time values. See C<strftime> in the L<POSIX>
|
596
|
-
package for details about
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
596
|
+
package and L<https://exiftool.org/filename.html#codes> for details about
|
597
|
+
the format string. If the date can not be converted, the value is left
|
598
|
+
unchanged unless the StrictDate option is set. Timezones are ignored. The
|
599
|
+
inverse conversion (ie. when calling L</SetNewValue>) is performed only if
|
600
|
+
POSIX::strptime or Time::Piece is installed. The default setting of undef
|
601
|
+
causes date/time values to remain in standard EXIF format (similar to a
|
602
|
+
DateFormat of "%Y:%m:%d %H:%M:%S").
|
602
603
|
|
603
604
|
=item Duplicates
|
604
605
|
|
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: 12.
|
4
|
+
version: 12.41.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: 2022-
|
12
|
+
date: 2022-04-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|