exiftool_vendored 11.97.0 → 11.98.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 +10 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +78 -40
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/HtmlDump.pm +2 -2
- data/bin/lib/Image/ExifTool/M2TS.pm +43 -23
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +11 -2
- data/bin/lib/Image/ExifTool/RIFF.pm +15 -3
- data/bin/lib/Image/ExifTool/Sony.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +1 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +2 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd206618b02e9bdc096dbaf8dc497c6bce6a27e5782b42db0a308ba043752c49
|
|
4
|
+
data.tar.gz: 783ecd5157f77b7f56d7c85a3ddcb86aebc170e6e937ebfacfa7141a90f74cd8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c4e18ca046d054a9a06289921a7ebd70801a64f3ac133de19156969077a1618841926104c9eef4cfdcd57ead9aed13ef2b1cd53b16a7b204fd6bba4342b633ef
|
|
7
|
+
data.tar.gz: 397e4a867443f593c3d73be6e549e9b0df9256ef551cad3ff39ef335bada1a47bf63fcdc58435672f39873418d74ecfec7ecc385008da471cd6cb34904f5c26a
|
data/bin/Changes
CHANGED
|
@@ -7,6 +7,16 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 11.85. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
|
9
9
|
|
|
10
|
+
May 1, 2020 - Version 11.98
|
|
11
|
+
|
|
12
|
+
- Added a new Nikon LensID (thanks Warren Hatch)
|
|
13
|
+
- Added a new Sony LensType (thanks LibRaw)
|
|
14
|
+
- Added a new Canon LensType
|
|
15
|
+
- Patched to extract EXIF with an "Exif\0\0" header from WebP images
|
|
16
|
+
- Enhanced -efile option and added to the documentation
|
|
17
|
+
- Minor tweak to -htmlDump output (disallow locking of empty selection)
|
|
18
|
+
- Fixed problem determining Duration of some M2TS videos
|
|
19
|
+
|
|
10
20
|
Apr. 27, 2020 - Version 11.97
|
|
11
21
|
|
|
12
22
|
- Added experimental -efile option (undocumented)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -105,8 +105,8 @@ your home directory, then you would type the following commands in a
|
|
|
105
105
|
terminal window to extract and run ExifTool:
|
|
106
106
|
|
|
107
107
|
cd ~/Desktop
|
|
108
|
-
gzip -dc Image-ExifTool-11.
|
|
109
|
-
cd Image-ExifTool-11.
|
|
108
|
+
gzip -dc Image-ExifTool-11.98.tar.gz | tar -xf -
|
|
109
|
+
cd Image-ExifTool-11.98
|
|
110
110
|
./exiftool t/images/ExifTool.jpg
|
|
111
111
|
|
|
112
112
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
use strict;
|
|
11
11
|
require 5.004;
|
|
12
12
|
|
|
13
|
-
my $version = '11.
|
|
13
|
+
my $version = '11.98';
|
|
14
14
|
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
16
16
|
my $exeDir;
|
|
@@ -90,6 +90,7 @@ my @csvFiles; # list of files when reading with CSV option (in ExifTool Ch
|
|
|
90
90
|
my @csvTags; # order of tags for first file with CSV option (lower case)
|
|
91
91
|
my @delFiles; # list of files to delete
|
|
92
92
|
my @dynamicFiles; # list of -tagsFromFile files with dynamic names and -TAG<=FMT pairs
|
|
93
|
+
my @efile; # files for writing list of error/fail/same file names
|
|
93
94
|
my @exclude; # list of excluded tags
|
|
94
95
|
my (@echo3, @echo4);# stdout and stderr echo after processing is complete
|
|
95
96
|
my @files; # list of files and directories to scan
|
|
@@ -140,8 +141,6 @@ my $deleteOrig; # 0=restore original files, 1=delete originals, 2=delete w/o
|
|
|
140
141
|
my $disableOutput; # flag to disable normal output
|
|
141
142
|
my $doSetFileName; # flag set if FileName may be written
|
|
142
143
|
my $doUnzip; # flag to extract info from .gz and .bz2 files
|
|
143
|
-
my $efile; # file for writing list of error file names
|
|
144
|
-
my $efile2; # file for writing list of failed file names
|
|
145
144
|
my $escapeC; # C-style escape
|
|
146
145
|
my $escapeHTML; # flag to escape printed values for html
|
|
147
146
|
my $evalWarning; # warning from eval
|
|
@@ -242,7 +241,8 @@ my %optArgs = (
|
|
|
242
241
|
'-d' => 1, '-dateformat' => 1,
|
|
243
242
|
'-D' => 0, # necessary to avoid matching lower-case equivalent
|
|
244
243
|
'-echo' => 1, '-echo1' => 1, '-echo2' => 1, '-echo3' => 1, '-echo4' => 1,
|
|
245
|
-
'-efile' => 1, '-efile1' => 1, '-efile2' => 1,
|
|
244
|
+
'-efile' => 1, '-efile1' => 1, '-efile2' => 1, '-efile3' => 1, '-efile4' => 1,
|
|
245
|
+
'-efile!' => 1, '-efile1!' => 1, '-efile2!' => 1, '-efile3!' => 1, '-efile4!' => 1,
|
|
246
246
|
'-ext' => 1, '--ext' => 1, '-ext+' => 1, '--ext+' => 1,
|
|
247
247
|
'-extension' => 1, '--extension' => 1, '-extension+' => 1, '--extension+' => 1,
|
|
248
248
|
'-fileorder' => 1,
|
|
@@ -409,6 +409,7 @@ undef @delFiles;
|
|
|
409
409
|
undef @dynamicFiles;
|
|
410
410
|
undef @echo3;
|
|
411
411
|
undef @echo4;
|
|
412
|
+
undef @efile;
|
|
412
413
|
undef @exclude;
|
|
413
414
|
undef @files;
|
|
414
415
|
undef @newValues;
|
|
@@ -442,8 +443,6 @@ undef $deleteOrig;
|
|
|
442
443
|
undef $disableOutput;
|
|
443
444
|
undef $doSetFileName;
|
|
444
445
|
undef $doUnzip;
|
|
445
|
-
undef $efile;
|
|
446
|
-
undef $efile2;
|
|
447
446
|
undef $escapeHTML;
|
|
448
447
|
undef $escapeC;
|
|
449
448
|
undef $evalWarning;
|
|
@@ -873,13 +872,13 @@ for (;;) {
|
|
|
873
872
|
$mt->Options(Duplicates => 1);
|
|
874
873
|
next;
|
|
875
874
|
}
|
|
876
|
-
if (/^efile(
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
875
|
+
if (/^efile(\d)?(!)?$/i) {
|
|
876
|
+
my $arg = shift;
|
|
877
|
+
defined $arg or Error("Expecting file name for -$_ option\n"), $badCmd=1, next;
|
|
878
|
+
$efile[0] = $arg if not $1 or $1 & 0x01;
|
|
879
|
+
$efile[1] = $arg if $1 and $1 & 0x02;
|
|
880
|
+
$efile[2] = $arg if $1 and $1 & 0x04;
|
|
881
|
+
unlink $arg if $2;
|
|
883
882
|
next;
|
|
884
883
|
}
|
|
885
884
|
# (-execute handled at top of loop)
|
|
@@ -1925,6 +1924,7 @@ sub GetImageInfo($$)
|
|
|
1925
1924
|
if (@condition) {
|
|
1926
1925
|
unless ($file eq '-' or $et->Exists($file)) {
|
|
1927
1926
|
Warn "Error: File not found - $file\n";
|
|
1927
|
+
EFile($file);
|
|
1928
1928
|
FileNotFound($file);
|
|
1929
1929
|
++$countBad;
|
|
1930
1930
|
return;
|
|
@@ -1970,15 +1970,7 @@ sub GetImageInfo($$)
|
|
|
1970
1970
|
}
|
|
1971
1971
|
unless ($result) {
|
|
1972
1972
|
$verbose and print $vout "-------- $file (failed condition)$progStr\n";
|
|
1973
|
-
|
|
1974
|
-
if ($et->Open(\*FAIL_FILE, $efile2, '>>')) {
|
|
1975
|
-
print FAIL_FILE $file, "\n" or Warn("Error writing to $efile2\n"), undef $efile2;
|
|
1976
|
-
close FAIL_FILE;
|
|
1977
|
-
} else {
|
|
1978
|
-
Warn("Error opening '${efile2}' for append\n");
|
|
1979
|
-
undef $efile2;
|
|
1980
|
-
}
|
|
1981
|
-
}
|
|
1973
|
+
EFile($file, 2);
|
|
1982
1974
|
++$countFailed;
|
|
1983
1975
|
return;
|
|
1984
1976
|
}
|
|
@@ -1999,6 +1991,7 @@ sub GetImageInfo($$)
|
|
|
1999
1991
|
++$countGoodWr;
|
|
2000
1992
|
} else {
|
|
2001
1993
|
Warn "Error renaming $original\n";
|
|
1994
|
+
EFile($file);
|
|
2002
1995
|
++$countBad;
|
|
2003
1996
|
}
|
|
2004
1997
|
return;
|
|
@@ -2009,7 +2002,7 @@ sub GetImageInfo($$)
|
|
|
2009
2002
|
my ($fp, $outfile, $append);
|
|
2010
2003
|
if ($textOut and $verbose and not $tagOut) {
|
|
2011
2004
|
($fp, $outfile, $append) = OpenOutputFile($orig);
|
|
2012
|
-
$fp or ++$countBad, return;
|
|
2005
|
+
$fp or EFile($file), ++$countBad, return;
|
|
2013
2006
|
# delete file if we exit prematurely (unless appending)
|
|
2014
2007
|
$tmpText = $outfile unless $append;
|
|
2015
2008
|
$et->Options(TextOut => $fp);
|
|
@@ -2041,6 +2034,7 @@ sub GetImageInfo($$)
|
|
|
2041
2034
|
Warn "Error: File not found - $file\n";
|
|
2042
2035
|
FileNotFound($file);
|
|
2043
2036
|
$outfile and close($fp), undef($tmpText), $et->Unlink($outfile);
|
|
2037
|
+
EFile($file);
|
|
2044
2038
|
++$countBad;
|
|
2045
2039
|
return;
|
|
2046
2040
|
}
|
|
@@ -2090,6 +2084,7 @@ sub GetImageInfo($$)
|
|
|
2090
2084
|
}
|
|
2091
2085
|
if ($info->{Error}) {
|
|
2092
2086
|
Warn "Error: $info->{Error} - $file\n";
|
|
2087
|
+
EFile($file);
|
|
2093
2088
|
++$countBad;
|
|
2094
2089
|
return;
|
|
2095
2090
|
}
|
|
@@ -2100,7 +2095,7 @@ sub GetImageInfo($$)
|
|
|
2100
2095
|
# or if there is none of the requested information available
|
|
2101
2096
|
if ($binaryOutput or not %$info) {
|
|
2102
2097
|
my $errs = $et->GetInfo('Warning', 'Error');
|
|
2103
|
-
PrintErrors($et, $errs, $file) and $rtnVal = 1;
|
|
2098
|
+
PrintErrors($et, $errs, $file) and EFile($file), $rtnVal = 1;
|
|
2104
2099
|
} elsif ($et->GetValue('Error') or ($$et{Validate} and $et->GetValue('Warning'))) {
|
|
2105
2100
|
$rtnVal = 1;
|
|
2106
2101
|
}
|
|
@@ -2108,7 +2103,7 @@ sub GetImageInfo($$)
|
|
|
2108
2103
|
# open output file (or stdout if no output file) if not done already
|
|
2109
2104
|
unless ($outfile or $tagOut) {
|
|
2110
2105
|
($fp, $outfile, $append) = OpenOutputFile($orig);
|
|
2111
|
-
$fp or ++$countBad, return;
|
|
2106
|
+
$fp or EFile($file), ++$countBad, return;
|
|
2112
2107
|
$tmpText = $outfile unless $append;
|
|
2113
2108
|
}
|
|
2114
2109
|
|
|
@@ -2167,7 +2162,7 @@ sub GetImageInfo($$)
|
|
|
2167
2162
|
}
|
|
2168
2163
|
delete $printFmt{HEAD} unless $outfile; # print header only once per output file
|
|
2169
2164
|
my $errs = $et->GetInfo('Warning', 'Error');
|
|
2170
|
-
PrintErrors($et, $errs, $file);
|
|
2165
|
+
PrintErrors($et, $errs, $file) and EFile($file);
|
|
2171
2166
|
} elsif (not $disableOutput) {
|
|
2172
2167
|
my ($tag, $line, %noDups, %csvInfo, $bra, $ket, $sep);
|
|
2173
2168
|
if ($fp) {
|
|
@@ -2659,6 +2654,7 @@ sub SetImageInfo($$$)
|
|
|
2659
2654
|
$outfile = FilenameSPrintf($outOpt, $orig);
|
|
2660
2655
|
if ($outfile eq '') {
|
|
2661
2656
|
Warn "Error: Can't create file with zero-length name from $orig\n";
|
|
2657
|
+
EFile($infile);
|
|
2662
2658
|
++$countBadCr;
|
|
2663
2659
|
return 0;
|
|
2664
2660
|
}
|
|
@@ -2675,6 +2671,7 @@ sub SetImageInfo($$$)
|
|
|
2675
2671
|
unless (CanCreate($outType)) {
|
|
2676
2672
|
my $what = $srcType ? 'other types' : 'scratch';
|
|
2677
2673
|
WarnOnce "Error: Can't create $outType files from $what\n";
|
|
2674
|
+
EFile($infile);
|
|
2678
2675
|
++$countBadCr;
|
|
2679
2676
|
return 0;
|
|
2680
2677
|
}
|
|
@@ -2712,6 +2709,7 @@ sub SetImageInfo($$$)
|
|
|
2712
2709
|
$outfile = NextUnusedFilename($outfile);
|
|
2713
2710
|
if ($et->Exists($outfile) and not $doSetFileName) {
|
|
2714
2711
|
Warn "Error: '${outfile}' already exists - $infile\n";
|
|
2712
|
+
EFile($infile);
|
|
2715
2713
|
++$countBadWr;
|
|
2716
2714
|
return 0;
|
|
2717
2715
|
}
|
|
@@ -2732,7 +2730,7 @@ sub SetImageInfo($$$)
|
|
|
2732
2730
|
$setTags = $tagsFromSrc || $setTags{$dyFile};
|
|
2733
2731
|
} else {
|
|
2734
2732
|
$fromFile = FilenameSPrintf($dyFile, $orig);
|
|
2735
|
-
++$countBadWr, return 0
|
|
2733
|
+
defined $fromFile or EFile($infile), ++$countBadWr, return 0;
|
|
2736
2734
|
$setTags = $setTags{$dyFile};
|
|
2737
2735
|
}
|
|
2738
2736
|
# do we have multiple -tagsFromFile options with this file?
|
|
@@ -2817,7 +2815,7 @@ sub SetImageInfo($$$)
|
|
|
2817
2815
|
my $err;
|
|
2818
2816
|
$err = "You shouldn't write FileName or Directory with TestFile" if defined $newFileName or defined $newDir;
|
|
2819
2817
|
$err = "The -o option shouldn't be used with TestFile" if defined $outfile;
|
|
2820
|
-
$err and Warn("Error: $err - $infile\n"), ++$countBadWr, return 0;
|
|
2818
|
+
$err and Warn("Error: $err - $infile\n"), EFile($infile), ++$countBadWr, return 0;
|
|
2821
2819
|
$testName = FilenameSPrintf($testName, $orig);
|
|
2822
2820
|
$testName = Image::ExifTool::GetNewFileName($file, $testName) if $file ne '';
|
|
2823
2821
|
}
|
|
@@ -2844,6 +2842,7 @@ sub SetImageInfo($$$)
|
|
|
2844
2842
|
$sameFile = $outfile; # same file, but the name has a different case
|
|
2845
2843
|
} else {
|
|
2846
2844
|
Warn "Error: '${outfile}' already exists - $infile\n";
|
|
2845
|
+
EFile($infile);
|
|
2847
2846
|
++$countBadWr;
|
|
2848
2847
|
return 0;
|
|
2849
2848
|
}
|
|
@@ -2863,6 +2862,7 @@ sub SetImageInfo($$$)
|
|
|
2863
2862
|
unless ($numSet) {
|
|
2864
2863
|
# no need to write if no tags set
|
|
2865
2864
|
print $vout "Nothing changed in $file\n" if defined $verbose;
|
|
2865
|
+
EFile($infile, 1);
|
|
2866
2866
|
++$countSameWr;
|
|
2867
2867
|
return 1;
|
|
2868
2868
|
}
|
|
@@ -2870,6 +2870,7 @@ sub SetImageInfo($$$)
|
|
|
2870
2870
|
if ($numSet == $numPseudo) {
|
|
2871
2871
|
# no need to write if no real tags
|
|
2872
2872
|
Warn("Error: Nothing to write - $file\n");
|
|
2873
|
+
EFile($infile, 1);
|
|
2873
2874
|
++$countBadWr;
|
|
2874
2875
|
return 0;
|
|
2875
2876
|
}
|
|
@@ -2881,6 +2882,7 @@ sub SetImageInfo($$$)
|
|
|
2881
2882
|
} else {
|
|
2882
2883
|
# file doesn't exist, and we can't create it
|
|
2883
2884
|
Warn "Error: File not found - $file\n";
|
|
2885
|
+
EFile($infile);
|
|
2884
2886
|
FileNotFound($file);
|
|
2885
2887
|
++$countBadWr;
|
|
2886
2888
|
return 0;
|
|
@@ -2895,9 +2897,11 @@ sub SetImageInfo($$$)
|
|
|
2895
2897
|
if ($r1 > 0 or $r2 > 0 or $r3 > 0 or $r4 > 0) {
|
|
2896
2898
|
++$countGoodWr;
|
|
2897
2899
|
} elsif ($r1 < 0 or $r2 < 0 or $r3 < 0 or $r4 < 0) {
|
|
2900
|
+
EFile($infile);
|
|
2898
2901
|
++$countBadWr;
|
|
2899
2902
|
return 0;
|
|
2900
2903
|
} else {
|
|
2904
|
+
EFile($infile, 1);
|
|
2901
2905
|
++$countSameWr;
|
|
2902
2906
|
}
|
|
2903
2907
|
if (defined $hardLink or defined $symLink or defined $testName) {
|
|
@@ -2911,6 +2915,7 @@ sub SetImageInfo($$$)
|
|
|
2911
2915
|
$outfile = "${file}_exiftool_tmp";
|
|
2912
2916
|
if ($et->Exists($outfile)) {
|
|
2913
2917
|
Warn("Error: Temporary file already exists: $outfile\n");
|
|
2918
|
+
EFile($infile);
|
|
2914
2919
|
++$countBadWr;
|
|
2915
2920
|
return 0;
|
|
2916
2921
|
}
|
|
@@ -3007,6 +3012,7 @@ sub SetImageInfo($$$)
|
|
|
3007
3012
|
} else {
|
|
3008
3013
|
close(NEW_FILE);
|
|
3009
3014
|
Warn "Error opening $file for writing\n";
|
|
3015
|
+
EFile($infile);
|
|
3010
3016
|
$et->Unlink($newFile);
|
|
3011
3017
|
++$countBadWr;
|
|
3012
3018
|
}
|
|
@@ -3024,11 +3030,13 @@ sub SetImageInfo($$$)
|
|
|
3024
3030
|
# unlink may fail if already renamed or no permission
|
|
3025
3031
|
if (not $et->Unlink($file)) {
|
|
3026
3032
|
Warn "Error renaming temporary file to $dstFile\n";
|
|
3033
|
+
EFile($infile);
|
|
3027
3034
|
$et->Unlink($newFile);
|
|
3028
3035
|
++$countBadWr;
|
|
3029
3036
|
# try renaming again now that the target has been deleted
|
|
3030
3037
|
} elsif (not $et->Rename($newFile, $dstFile)) {
|
|
3031
3038
|
Warn "Error renaming temporary file to $dstFile\n";
|
|
3039
|
+
EFile($infile);
|
|
3032
3040
|
# (don't delete tmp file now because it is all we have left)
|
|
3033
3041
|
++$countBadWr;
|
|
3034
3042
|
} else {
|
|
@@ -3050,6 +3058,7 @@ sub SetImageInfo($$$)
|
|
|
3050
3058
|
++$countGoodWr;
|
|
3051
3059
|
}
|
|
3052
3060
|
} elsif ($success) {
|
|
3061
|
+
EFile($infile, 1);
|
|
3053
3062
|
if ($isTemporary) {
|
|
3054
3063
|
# just erase the temporary file since no changes were made
|
|
3055
3064
|
$et->Unlink($tmpFile);
|
|
@@ -3063,6 +3072,7 @@ sub SetImageInfo($$$)
|
|
|
3063
3072
|
}
|
|
3064
3073
|
print $vout "Nothing changed in $file\n" if defined $verbose;
|
|
3065
3074
|
} else {
|
|
3075
|
+
EFile($infile);
|
|
3066
3076
|
$et->Unlink($tmpFile) if defined $tmpFile;
|
|
3067
3077
|
++$countBadWr;
|
|
3068
3078
|
}
|
|
@@ -3450,7 +3460,7 @@ sub DoSetFromFile($$$)
|
|
|
3450
3460
|
++$warns while $$info{"Warning ($warns)"};
|
|
3451
3461
|
$numSet -= $warns;
|
|
3452
3462
|
}
|
|
3453
|
-
PrintErrors($et, $info, $file) and ++$countBadWr, return 0;
|
|
3463
|
+
PrintErrors($et, $info, $file) and EFile($file), ++$countBadWr, return 0;
|
|
3454
3464
|
Warn "Warning: No writable tags set from $file\n" unless $numSet;
|
|
3455
3465
|
return 1;
|
|
3456
3466
|
}
|
|
@@ -3649,6 +3659,7 @@ sub ScanDir($$;$)
|
|
|
3649
3659
|
{
|
|
3650
3660
|
Warn("Not writing $path\n");
|
|
3651
3661
|
WarnOnce("Use -overwrite_original_in_place to write files with Unicode surrogate characters\n");
|
|
3662
|
+
EFile($file);
|
|
3652
3663
|
++$countBad;
|
|
3653
3664
|
next;
|
|
3654
3665
|
}
|
|
@@ -3723,6 +3734,7 @@ sub FindFileWindows($$)
|
|
|
3723
3734
|
$evalWarning =~ s/ at .*//s;
|
|
3724
3735
|
Warn "Error: [Win32::FindFile] $evalWarning - $wildfile\n";
|
|
3725
3736
|
undef @files;
|
|
3737
|
+
EFile($wildfile);
|
|
3726
3738
|
++$countBad;
|
|
3727
3739
|
}
|
|
3728
3740
|
return @files;
|
|
@@ -4049,8 +4061,8 @@ sub CreateDirectory($)
|
|
|
4049
4061
|
}
|
|
4050
4062
|
$dir .= '/';
|
|
4051
4063
|
}
|
|
4064
|
+
++$countNewDir if $created;
|
|
4052
4065
|
}
|
|
4053
|
-
++$countNewDir if $created;
|
|
4054
4066
|
return $created;
|
|
4055
4067
|
}
|
|
4056
4068
|
|
|
@@ -4237,6 +4249,29 @@ sub ReadStayOpen($)
|
|
|
4237
4249
|
}
|
|
4238
4250
|
}
|
|
4239
4251
|
|
|
4252
|
+
#------------------------------------------------------------------------------
|
|
4253
|
+
# Add new entry to -efile output file
|
|
4254
|
+
# Inputs: 0) file name, 1) -efile option number (0=error, 1=same, 2=failed)
|
|
4255
|
+
sub EFile($$)
|
|
4256
|
+
{
|
|
4257
|
+
my $entry = shift;
|
|
4258
|
+
my $efile = $efile[shift || 0];
|
|
4259
|
+
if (defined $efile and length $entry and $entry ne '-') {
|
|
4260
|
+
my $err;
|
|
4261
|
+
CreateDirectory($efile);
|
|
4262
|
+
if ($mt->Open(\*EFILE_FILE, $efile, '>>')) {
|
|
4263
|
+
print EFILE_FILE $entry, "\n" or Warn("Error writing to $efile\n"), $err = 1;
|
|
4264
|
+
close EFILE_FILE;
|
|
4265
|
+
} else {
|
|
4266
|
+
Warn("Error opening '${efile}' for append\n");
|
|
4267
|
+
$err = 1;
|
|
4268
|
+
}
|
|
4269
|
+
if ($err) {
|
|
4270
|
+
defined $_ and $_ eq $efile and undef $_ foreach @efile;
|
|
4271
|
+
}
|
|
4272
|
+
}
|
|
4273
|
+
}
|
|
4274
|
+
|
|
4240
4275
|
#------------------------------------------------------------------------------
|
|
4241
4276
|
# Print list of tags
|
|
4242
4277
|
# Inputs: 0) message, 1-N) list of tag names
|
|
@@ -4282,15 +4317,6 @@ sub PrintErrors($$$)
|
|
|
4282
4317
|
Warn "$tag: $info->{$key} - $file\n";
|
|
4283
4318
|
}
|
|
4284
4319
|
}
|
|
4285
|
-
if ($$info{Error} and $efile) {
|
|
4286
|
-
if ($et->Open(\*ERR_FILE, $efile, '>>')) {
|
|
4287
|
-
print ERR_FILE $file, "\n" or Warn("Error writing to $efile\n"), undef $efile;
|
|
4288
|
-
close ERR_FILE;
|
|
4289
|
-
} else {
|
|
4290
|
-
Warn("Error opening '${efile}' for append\n");
|
|
4291
|
-
undef $efile;
|
|
4292
|
-
}
|
|
4293
|
-
}
|
|
4294
4320
|
return $$info{Error};
|
|
4295
4321
|
}
|
|
4296
4322
|
|
|
@@ -4523,6 +4549,7 @@ L<Advanced options|/Advanced options>
|
|
|
4523
4549
|
-common_args Define common arguments
|
|
4524
4550
|
-config CFGFILE Specify configuration file name
|
|
4525
4551
|
-echo[NUM] TEXT Echo text to stdout or stderr
|
|
4552
|
+
-efile[NUM][!] ERRFILE Save names of files with errors
|
|
4526
4553
|
-execute[NUM] Execute multiple commands on one line
|
|
4527
4554
|
-srcfile FMT Process a different source file
|
|
4528
4555
|
-stay_open FLAG Keep reading -@ argfile even after EOF
|
|
@@ -5259,7 +5286,7 @@ with this command:
|
|
|
5259
5286
|
|
|
5260
5287
|
produces output like this:
|
|
5261
5288
|
|
|
5262
|
-
-- Generated by ExifTool 11.
|
|
5289
|
+
-- Generated by ExifTool 11.98 --
|
|
5263
5290
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5264
5291
|
(f/5.6, 1/60s, ISO 100)
|
|
5265
5292
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -6206,6 +6233,17 @@ is output as the command line is parsed, before the processing of any input
|
|
|
6206
6233
|
files. I<NUM> may also be 3 or 4 to output text (to stdout or stderr
|
|
6207
6234
|
respectively) after processing is complete.
|
|
6208
6235
|
|
|
6236
|
+
=item B<-efile>[I<NUM>][!] I<ERRFILE>
|
|
6237
|
+
|
|
6238
|
+
Save the names of files giving errors (I<NUM> missing or 1), files that were
|
|
6239
|
+
unchanged (I<NUM> is 2), files that fail the B<-if> condition (I<NUM> is 4),
|
|
6240
|
+
or any combination thereof (by summing I<NUM>, eg. B<-efile3> is the same
|
|
6241
|
+
has having both B<-efile> and B<-efile2> options with the same I<ERRFILE>).
|
|
6242
|
+
By default, file names are appended to any existing I<ERRFILE>, but
|
|
6243
|
+
I<ERRFILE> is overwritten if an exclamation point is added to the option
|
|
6244
|
+
(eg. B<-efile!>). Saves the name of the file specified by the B<-srcfile>
|
|
6245
|
+
option if applicable.
|
|
6246
|
+
|
|
6209
6247
|
=item B<-execute>[I<NUM>]
|
|
6210
6248
|
|
|
6211
6249
|
Execute command for all arguments up to this point on the command line (plus
|
data/bin/lib/Image/ExifTool.pm
CHANGED
|
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
28
28
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
|
|
30
30
|
|
|
31
|
-
$VERSION = '11.
|
|
31
|
+
$VERSION = '11.98';
|
|
32
32
|
$RELEASE = '';
|
|
33
33
|
@ISA = qw(Exporter);
|
|
34
34
|
%EXPORT_TAGS = (
|
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.37';
|
|
92
92
|
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
|
@@ -486,6 +486,7 @@ $VERSION = '4.36';
|
|
|
486
486
|
368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016)
|
|
487
487
|
368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018)
|
|
488
488
|
368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018)
|
|
489
|
+
368.10 => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
|
|
489
490
|
'368.10' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
|
|
490
491
|
# Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
|
|
491
492
|
488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
|
|
@@ -532,7 +533,7 @@ $VERSION = '4.36';
|
|
|
532
533
|
757 => 'Canon EF 400mm f/2.8L IS III USM', #IB
|
|
533
534
|
758 => 'Canon EF 600mm f/4L IS III USM', #IB
|
|
534
535
|
|
|
535
|
-
1136 => 'Sigma 24-70mm f/2.8 DG OS HSM |
|
|
536
|
+
1136 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
|
|
536
537
|
# (STM lenses - 0x10xx)
|
|
537
538
|
4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
|
|
538
539
|
4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens',
|
|
@@ -13,7 +13,7 @@ use vars qw($VERSION);
|
|
|
13
13
|
use Image::ExifTool; # only for FinishTiffDump()
|
|
14
14
|
use Image::ExifTool::HTML qw(EscapeHTML);
|
|
15
15
|
|
|
16
|
-
$VERSION = '1.
|
|
16
|
+
$VERSION = '1.39';
|
|
17
17
|
|
|
18
18
|
sub DumpTable($$$;$$$$$$);
|
|
19
19
|
sub Open($$$;@);
|
|
@@ -122,7 +122,7 @@ function doClick(e)
|
|
|
122
122
|
if (!clicked) {
|
|
123
123
|
firstOutEvt = lastInEvt = undefined;
|
|
124
124
|
high(e, 2);
|
|
125
|
-
clicked = 1;
|
|
125
|
+
if (hlist) clicked = 1;
|
|
126
126
|
} else {
|
|
127
127
|
clicked = 0;
|
|
128
128
|
if (firstOutEvt) high(firstOutEvt, 0);
|
|
@@ -31,7 +31,7 @@ use strict;
|
|
|
31
31
|
use vars qw($VERSION);
|
|
32
32
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
33
33
|
|
|
34
|
-
$VERSION = '1.
|
|
34
|
+
$VERSION = '1.17';
|
|
35
35
|
|
|
36
36
|
# program map table "stream_type" lookup (ref 6/1)
|
|
37
37
|
my %streamType = (
|
|
@@ -313,7 +313,7 @@ sub ProcessM2TS($$)
|
|
|
313
313
|
my $raf = $$dirInfo{RAF};
|
|
314
314
|
my ($buff, $pLen, $upkPrefix, $j, $fileType, $eof);
|
|
315
315
|
my (%pmt, %pidType, %data, %sectLen);
|
|
316
|
-
my ($startTime, $endTime, $backScan, $maxBack);
|
|
316
|
+
my ($startTime, $endTime, $fwdTime, $backScan, $maxBack);
|
|
317
317
|
my $verbose = $et->Options('Verbose');
|
|
318
318
|
my $out = $et->Options('TextOut');
|
|
319
319
|
|
|
@@ -330,7 +330,7 @@ sub ProcessM2TS($$)
|
|
|
330
330
|
$upkPrefix = 'x4N';
|
|
331
331
|
}
|
|
332
332
|
my $prePos = $pLen - 188; # byte position of packet prefix
|
|
333
|
-
my $readSize = 64 * $pLen; #
|
|
333
|
+
my $readSize = 64 * $pLen; # size of our read buffer
|
|
334
334
|
$raf->Seek(0,0); # rewind to start
|
|
335
335
|
$raf->Read($buff, $readSize) >= $pLen * 4 or return 0; # require at least 4 packets
|
|
336
336
|
# validate the sync byte in the next 3 packets
|
|
@@ -351,39 +351,58 @@ sub ProcessM2TS($$)
|
|
|
351
351
|
my %didPID = ( 1 => 0, 2 => 0, 0x1fff => 0 );
|
|
352
352
|
my %needPID = ( 0 => 1 ); # lookup for stream PID's that we still need to parse
|
|
353
353
|
my $pEnd = 0;
|
|
354
|
-
my $i = 0;
|
|
355
354
|
|
|
356
355
|
# parse packets from MPEG-2 Transport Stream
|
|
357
356
|
for (;;) {
|
|
358
357
|
|
|
359
358
|
unless (%needPID) {
|
|
360
359
|
last unless defined $startTime;
|
|
361
|
-
# seek backwards
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
$backScan -= $pLen;
|
|
365
|
-
last if $backScan < $maxBack;
|
|
366
|
-
} else {
|
|
367
|
-
undef $endTime;
|
|
368
|
-
last if $et->Options('FastScan');
|
|
360
|
+
# reconfigure to seek backwards for last PCR
|
|
361
|
+
unless (defined $backScan) {
|
|
362
|
+
$et->Options('FastScan') and undef($endTime), last;
|
|
369
363
|
$verbose and print "[Starting backscan for last PCR]\n";
|
|
370
|
-
|
|
371
|
-
|
|
364
|
+
$fwdTime = $endTime;
|
|
365
|
+
undef $endTime;
|
|
366
|
+
# remember how far we got when reading forward through the file
|
|
367
|
+
my $fwdPos = $raf->Tell() - length($buff) + $pEnd;
|
|
368
|
+
# determine the number of whole packets in the file
|
|
372
369
|
$raf->Seek(0, 2) or last;
|
|
373
370
|
my $fsize = $raf->Tell();
|
|
374
371
|
my $nPack = int($fsize / $pLen);
|
|
375
|
-
$backScan =
|
|
372
|
+
$backScan = $nPack * $pLen - $fsize;
|
|
376
373
|
# set limit on how far back we will go
|
|
377
374
|
$maxBack = $fwdPos - $fsize;
|
|
378
|
-
|
|
375
|
+
# scan back a maximum of 512k (have seen last PCR at -276k)
|
|
376
|
+
my $nMax = int(512000 / $pLen); # max packets to scan
|
|
377
|
+
my $nRem = int(-$maxBack / $pLen); # packets remaining in file
|
|
378
|
+
$maxBack = $backScan - $nMax * $pLen if $nRem > $nMax;
|
|
379
|
+
$pEnd = 0;
|
|
379
380
|
}
|
|
380
|
-
$raf->Seek($backScan, 2) or last;
|
|
381
381
|
}
|
|
382
|
-
my $pos
|
|
382
|
+
my $pos;
|
|
383
383
|
# read more if necessary
|
|
384
|
-
if (
|
|
385
|
-
|
|
386
|
-
$pos = $pEnd =
|
|
384
|
+
if (defined $backScan) {
|
|
385
|
+
last if defined $endTime;
|
|
386
|
+
$pos = $pEnd = $pEnd - 2 * $pLen; # step back to previous packet
|
|
387
|
+
if ($pos < 0) {
|
|
388
|
+
# read another buffer from end of file
|
|
389
|
+
last if $backScan <= $maxBack;
|
|
390
|
+
my $readThis = $readSize;
|
|
391
|
+
$backScan -= $readSize;
|
|
392
|
+
if ($backScan < $maxBack) {
|
|
393
|
+
$readThis = $readSize - ($maxBack - $backScan);
|
|
394
|
+
$backScan = $maxBack;
|
|
395
|
+
}
|
|
396
|
+
$raf->Seek($backScan, 2) or last;
|
|
397
|
+
$raf->Read($buff, $readThis) == $readThis or last;
|
|
398
|
+
$pos = $pEnd = $readThis - $pLen;
|
|
399
|
+
}
|
|
400
|
+
} else {
|
|
401
|
+
$pos = $pEnd;
|
|
402
|
+
if ($pos + $pLen > length $buff) {
|
|
403
|
+
$raf->Read($buff, $readSize) >= $pLen or $eof = 1, last;
|
|
404
|
+
$pos = $pEnd = 0;
|
|
405
|
+
}
|
|
387
406
|
}
|
|
388
407
|
$pEnd += $pLen;
|
|
389
408
|
# decode the packet prefix
|
|
@@ -404,8 +423,8 @@ sub ProcessM2TS($$)
|
|
|
404
423
|
# my $continuity_counter = $prefix & 0x0000000f;
|
|
405
424
|
|
|
406
425
|
if ($verbose > 1) {
|
|
426
|
+
my $i = ($raf->Tell() - length($buff) + $pEnd) / $pLen - 1;
|
|
407
427
|
print $out "Transport packet $i:\n";
|
|
408
|
-
++$i;
|
|
409
428
|
$et->VerboseDump(\$buff, Len => $pLen, Addr => $i * $pLen, Start => $pos - $prePos);
|
|
410
429
|
my $str = $pidName{$pid} ? " ($pidName{$pid})" : '';
|
|
411
430
|
printf $out " Timecode: 0x%.4x\n", Get32u(\$buff, $pos - $prePos) if $pLen == 192;
|
|
@@ -646,7 +665,8 @@ sub ProcessM2TS($$)
|
|
|
646
665
|
}
|
|
647
666
|
|
|
648
667
|
# calculate Duration if available
|
|
649
|
-
|
|
668
|
+
$endTime = $fwdTime unless defined $endTime;
|
|
669
|
+
if (defined $startTime and defined $endTime) {
|
|
650
670
|
$endTime += 0x80000000 * 1200 if $startTime > $endTime; # handle 33-bit wrap
|
|
651
671
|
$et->HandleTag($tagTablePtr, 'Duration', $endTime - $startTime);
|
|
652
672
|
}
|
|
@@ -62,7 +62,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
62
62
|
use Image::ExifTool::Exif;
|
|
63
63
|
use Image::ExifTool::GPS;
|
|
64
64
|
|
|
65
|
-
$VERSION = '3.
|
|
65
|
+
$VERSION = '3.82';
|
|
66
66
|
|
|
67
67
|
sub LensIDConv($$$);
|
|
68
68
|
sub ProcessNikonAVI($$$);
|
|
@@ -297,6 +297,7 @@ sub GetAFPointGrid($$;$);
|
|
|
297
297
|
'B8 40 2D 44 2C 34 BA 06' => 'AF-S Nikkor 18-35mm f/3.5-4.5G ED',
|
|
298
298
|
'A0 40 2D 74 2C 3C BB 0E' => 'AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR', #PH
|
|
299
299
|
'A1 54 55 55 0C 0C BC 06' => 'AF-S Nikkor 58mm f/1.4G', #IB
|
|
300
|
+
'A1 48 6E 8E 24 24 DB 4E' => 'AF-S Nikkor 120-300mm f/2.8E FL ED SR VR', #28
|
|
300
301
|
'A2 40 2D 53 2C 3C BD 0E' => 'AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II',
|
|
301
302
|
'A4 40 2D 8E 2C 40 BF 0E' => 'AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR',
|
|
302
303
|
'A5 4C 44 44 14 14 C0 06' => 'AF-S Nikkor 35mm f/1.8G ED', #35 ("ED" ref 11)
|
|
@@ -46,7 +46,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
46
46
|
use Image::ExifTool::Exif;
|
|
47
47
|
use Image::ExifTool::GPS;
|
|
48
48
|
|
|
49
|
-
$VERSION = '2.
|
|
49
|
+
$VERSION = '2.48';
|
|
50
50
|
|
|
51
51
|
sub ProcessMOV($$;$);
|
|
52
52
|
sub ProcessKeys($$$);
|
|
@@ -1628,10 +1628,14 @@ my %eeBox = (
|
|
|
1628
1628
|
Avoid => 1,
|
|
1629
1629
|
Format => 'string', # (necessary to remove the trailing NULL)
|
|
1630
1630
|
},
|
|
1631
|
-
date => {
|
|
1631
|
+
date => {
|
|
1632
1632
|
Name => 'DateTimeOriginal',
|
|
1633
1633
|
Description => 'Date/Time Original',
|
|
1634
1634
|
Groups => { 2 => 'Time' },
|
|
1635
|
+
Notes => q{
|
|
1636
|
+
Apple Photos has been reported to show a crazy date/time for some MP4 files
|
|
1637
|
+
containing this tag
|
|
1638
|
+
}, #forum10690/11125
|
|
1635
1639
|
Shift => 'Time',
|
|
1636
1640
|
ValueConv => q{
|
|
1637
1641
|
require Image::ExifTool::XMP;
|
|
@@ -8232,6 +8236,11 @@ sub HandleItemInfo($)
|
|
|
8232
8236
|
if ($buff =~ /^(MM\0\x2a|II\x2a\0)/) {
|
|
8233
8237
|
$et->Warn('Missing Exif header');
|
|
8234
8238
|
$start = 0;
|
|
8239
|
+
} elsif ($buff =~ /^Exif\0\0/) {
|
|
8240
|
+
# (haven't seen this yet, but it is just a matter of time
|
|
8241
|
+
# until someone screws it up like this)
|
|
8242
|
+
$et->Warn('Missing Exif header size');
|
|
8243
|
+
$start = 6;
|
|
8235
8244
|
} else {
|
|
8236
8245
|
my $n = unpack('N', $buff);
|
|
8237
8246
|
$start = 4 + $n; # skip "Exif\0\0" header if it exists
|
|
@@ -29,7 +29,7 @@ use strict;
|
|
|
29
29
|
use vars qw($VERSION);
|
|
30
30
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
31
31
|
|
|
32
|
-
$VERSION = '1.
|
|
32
|
+
$VERSION = '1.56';
|
|
33
33
|
|
|
34
34
|
sub ConvertTimecode($);
|
|
35
35
|
sub ProcessSGLT($$$);
|
|
@@ -485,14 +485,26 @@ my %code2charset = (
|
|
|
485
485
|
#
|
|
486
486
|
# WebP-specific tags
|
|
487
487
|
#
|
|
488
|
-
EXIF => { # (WebP)
|
|
488
|
+
EXIF => [{ # (WebP)
|
|
489
489
|
Name => 'EXIF',
|
|
490
|
+
Condition => '$$valPt =~ /^(II\x2a\0|MM\0\x2a)/',
|
|
490
491
|
Notes => 'WebP files',
|
|
491
492
|
SubDirectory => {
|
|
492
493
|
TagTable => 'Image::ExifTool::Exif::Main',
|
|
493
494
|
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
|
494
495
|
},
|
|
495
|
-
},
|
|
496
|
+
},{ # (WebP) - have also seen with "Exif\0\0" header - PH
|
|
497
|
+
Name => 'EXIF',
|
|
498
|
+
Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/',
|
|
499
|
+
SubDirectory => {
|
|
500
|
+
TagTable => 'Image::ExifTool::Exif::Main',
|
|
501
|
+
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
|
502
|
+
Start => 6,
|
|
503
|
+
},
|
|
504
|
+
},{
|
|
505
|
+
Name => 'UnknownEXIF',
|
|
506
|
+
Binary => 1,
|
|
507
|
+
}],
|
|
496
508
|
'XMP ' => { #14 (WebP)
|
|
497
509
|
Name => 'XMP',
|
|
498
510
|
Notes => 'WebP files',
|
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
34
34
|
use Image::ExifTool::Exif;
|
|
35
35
|
use Image::ExifTool::Minolta;
|
|
36
36
|
|
|
37
|
-
$VERSION = '3.
|
|
37
|
+
$VERSION = '3.24';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -232,7 +232,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
232
232
|
51507 => 'Samyang AF 35mm F1.4', #IB
|
|
233
233
|
51508 => 'Samyang AF 45mm F1.8',
|
|
234
234
|
51510 => 'Samyang AF 18mm F2.8', #JR
|
|
235
|
-
|
|
235
|
+
51512 => 'Samyang AF 75mm F1.8 FE', #IB
|
|
236
236
|
);
|
|
237
237
|
|
|
238
238
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
|
@@ -10651,6 +10651,7 @@ my %tagExists = (
|
|
|
10651
10651
|
'unknown_slmt' => 1,
|
|
10652
10652
|
'unknownd30' => 1,
|
|
10653
10653
|
'unknowndata' => 1,
|
|
10654
|
+
'unknownexif' => 1,
|
|
10654
10655
|
'unknowninfo' => 1,
|
|
10655
10656
|
'unknowninfo2' => 1,
|
|
10656
10657
|
'unknowninfo2version' => 1,
|
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
|
12
12
|
=head1 TAG TABLES
|
|
13
13
|
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
|
15
|
-
They contain a total of
|
|
15
|
+
They contain a total of 23365 tags, with 15307 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
|
|
@@ -28940,6 +28940,7 @@ sub-documents, but the Duration is calculated for the full video.
|
|
|
28940
28940
|
'ANMF' ANMF RIFF ANMF
|
|
28941
28941
|
'CSET' CharacterSet RIFF CSET
|
|
28942
28942
|
'EXIF' EXIF EXIF
|
|
28943
|
+
UnknownEXIF no
|
|
28943
28944
|
'ICCP' ICC_Profile ICC_Profile
|
|
28944
28945
|
'IDIT' DateTimeOriginal no
|
|
28945
28946
|
'JUNK' OlympusJunk Olympus AVI
|
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: 11.
|
|
4
|
+
version: 11.98.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: 2020-
|
|
12
|
+
date: 2020-05-02 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: exiftool
|