exiftool_vendored 12.16.0 → 12.17.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +23 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +28 -26
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
- data/bin/lib/Image/ExifTool/Canon.pm +2 -1
- data/bin/lib/Image/ExifTool/CanonCustom.pm +19 -1
- data/bin/lib/Image/ExifTool/Exif.pm +31 -15
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/GPS.pm +5 -5
- data/bin/lib/Image/ExifTool/H264.pm +20 -5
- data/bin/lib/Image/ExifTool/NikonSettings.pm +7 -7
- data/bin/lib/Image/ExifTool/README +5 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +46 -4
- data/bin/lib/Image/ExifTool/TagNames.pod +122 -5
- data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -6
- data/bin/lib/Image/ExifTool/Writer.pl +6 -4
- data/bin/lib/Image/ExifTool/XMP.pm +28 -2
- 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: 282998369bb9233d2f181df0f59f292915623e97fba11993c01c310e533eb29f
|
4
|
+
data.tar.gz: fd371cfbcd5c85f4a8ab489cd9ee53f0a24dd3ac69a598d5d0a35a47a05853a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0347af9fa9e87b8a4de28e8274cd5f00bbd75d78ffc0a340624da063681eae24385a46928848248b92a53ec3549010b269bd2216e5a8390f8da4bf727223ba86
|
7
|
+
data.tar.gz: becbc52e82c10df8e11c73460e711926d3e422d8e42af2c81bf94b4f1f511a7e68037e9e1601cda42964fe995bb8c54d79ecd2196a583a85941d748d749d18be
|
data/bin/Changes
CHANGED
@@ -7,6 +7,26 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.16. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Feb. 3, 2021 - Version 12.17
|
11
|
+
|
12
|
+
- Added a new Canon FocusMode value
|
13
|
+
- Added a new FujiFilm FilmMode value
|
14
|
+
- Added a number of new XMP-crs tags (thanks Herb)
|
15
|
+
- Decode a new H264 MDPM tag
|
16
|
+
- Allow non-conforming lower-case XMP boolean "true" and "false" values to be
|
17
|
+
written, but only when print conversion is disabled
|
18
|
+
- Improved Validate option to warn about non-capitalized boolean XMP values
|
19
|
+
- Improved logic for setting GPSLatitude/LongitudeRef values when writing
|
20
|
+
- Changed -json and -php options so the -a option is implied even without the
|
21
|
+
-g option
|
22
|
+
- Avoid extracting audio/video data from AVI videos when -ee -u is used
|
23
|
+
- Patched decoding of Canon ContinuousShootingSpeed for newer firmware
|
24
|
+
versions of the EOS-1DXmkIII
|
25
|
+
- Re-worked LensID patch of version 12.00 (github issue #51)
|
26
|
+
- Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
|
27
|
+
- Fixed problem where group could not be specified for PNG-pHYs tags when
|
28
|
+
writing
|
29
|
+
|
10
30
|
Jan. 21, 2021 - Version 12.16 (production release)
|
11
31
|
|
12
32
|
- Extract another form of video subtitle text
|
@@ -14,6 +34,8 @@ Jan. 21, 2021 - Version 12.16 (production release)
|
|
14
34
|
stream in MP4 files
|
15
35
|
- Changed a Nikon FlashMode value
|
16
36
|
- Fixed problem that caused a failed DPX test on Strawberry Perl
|
37
|
+
- API Changes:
|
38
|
+
- Enhanced ExtractEmbedded option
|
17
39
|
|
18
40
|
Jan. 18, 2021 - Version 12.15 (production release)
|
19
41
|
|
@@ -220,7 +242,7 @@ July 27, 2020 - Version 12.02
|
|
220
242
|
- Improved decoding of some Canon EOS 1DXmkIII custom functions
|
221
243
|
- Allow integer QuickTime TrackNumber and DiskNumber values
|
222
244
|
- Relax validity check of QuickTime:ContentCreateDate when writing with -n
|
223
|
-
- Removed "Com" from the start of some unknown ItemList tag names
|
245
|
+
- Removed "Com" from the start of some unknown QuickTime ItemList tag names
|
224
246
|
- Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
|
225
247
|
- Changed QuickTime CleanAperture tags decode as signed rationals
|
226
248
|
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
|
|
106
106
|
terminal window to extract and run ExifTool:
|
107
107
|
|
108
108
|
cd ~/Desktop
|
109
|
-
gzip -dc Image-ExifTool-12.
|
110
|
-
cd Image-ExifTool-12.
|
109
|
+
gzip -dc Image-ExifTool-12.17.tar.gz | tar -xf -
|
110
|
+
cd Image-ExifTool-12.17
|
111
111
|
./exiftool t/images/ExifTool.jpg
|
112
112
|
|
113
113
|
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 = '12.
|
13
|
+
my $version = '12.17';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -1264,7 +1264,7 @@ for (;;) {
|
|
1264
1264
|
if (/^php$/i) {
|
1265
1265
|
$json = 2;
|
1266
1266
|
$html = $xml = 0;
|
1267
|
-
$mt->Options(Duplicates=>1);
|
1267
|
+
$mt->Options(Duplicates => 1);
|
1268
1268
|
next;
|
1269
1269
|
}
|
1270
1270
|
if (/^z(ip)?$/i) {
|
@@ -1505,7 +1505,6 @@ if ($xml) {
|
|
1505
1505
|
require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64)
|
1506
1506
|
}
|
1507
1507
|
$mt->Options(List => 1) unless $joinLists;
|
1508
|
-
$mt->Options(Duplicates => 0) unless defined $showGroup;
|
1509
1508
|
$showTagID = 'D' if $tabFormat and not $showTagID;
|
1510
1509
|
} elsif ($structOpt) {
|
1511
1510
|
$mt->Options(List => 1);
|
@@ -2304,7 +2303,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2304
2303
|
$group = $et->GetGroup($tag, $showGroup);
|
2305
2304
|
# look ahead to see if this tag may suppress a priority tag in
|
2306
2305
|
# the same group, and if so suppress this tag instead
|
2307
|
-
next if $noDups and $tag =~ /^(.*?)
|
2306
|
+
next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and
|
2308
2307
|
$group eq $et->GetGroup($1, $showGroup);
|
2309
2308
|
$group = 'Unknown' if not $group and ($xml or $json or $csv);
|
2310
2309
|
if ($fp and not ($allGroup or $csv)) {
|
@@ -2327,6 +2326,9 @@ TAG: foreach $tag (@foundTags) {
|
|
2327
2326
|
}
|
2328
2327
|
undef $group; # undefine so we don't print it below
|
2329
2328
|
}
|
2329
|
+
} elsif ($noDups) {
|
2330
|
+
# don't allow duplicates, but avoid suppressing the priority tag
|
2331
|
+
next if $tag =~ /^(.*?) \(/ and defined $$info{$1};
|
2330
2332
|
}
|
2331
2333
|
|
2332
2334
|
++$lineCount; # we are printing something meaningful
|
@@ -4917,7 +4919,7 @@ and the value is written to all possible groups/tags. For example, the
|
|
4917
4919
|
string form must be used in the following command since the intent is to set
|
4918
4920
|
the value of all existing date/time tags from C<CreateDate>:
|
4919
4921
|
|
4920
|
-
exiftool
|
4922
|
+
exiftool '-time:all<$createdate' -wm w FILE
|
4921
4923
|
|
4922
4924
|
=item B<-x> I<TAG> (B<-exclude>)
|
4923
4925
|
|
@@ -4943,7 +4945,7 @@ between images, but allows the metadata to be altered by editing the
|
|
4943
4945
|
intermediate file (C<out.args> in this example):
|
4944
4946
|
|
4945
4947
|
exiftool -args -G1 --filename --directory src.jpg > out.args
|
4946
|
-
exiftool -@ out.args -sep
|
4948
|
+
exiftool -@ out.args -sep ', ' dst.jpg
|
4947
4949
|
|
4948
4950
|
Note: Be careful when copying information with this technique since it is
|
4949
4951
|
easy to write tags which are normally considered "unsafe". For instance,
|
@@ -5207,18 +5209,18 @@ JSON arrays unless B<-sep> is used. By default XMP structures are flattened
|
|
5207
5209
|
into individual tags in the JSON output, but the original structure may be
|
5208
5210
|
preserved with the B<-struct> option (this also causes all list-type XMP
|
5209
5211
|
tags to be output as JSON arrays, otherwise single-item lists would be
|
5210
|
-
output as simple strings). The B<-a> option is implied
|
5211
|
-
|
5212
|
-
|
5213
|
-
|
5214
|
-
|
5215
|
-
|
5216
|
-
|
5217
|
-
|
5218
|
-
|
5219
|
-
|
5220
|
-
|
5221
|
-
|
5212
|
+
output as simple strings). The B<-a> option is implied when B<-json> is
|
5213
|
+
used, but entries with identical JSON names are suppressed in the output.
|
5214
|
+
(B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
|
5215
|
+
the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
|
5216
|
+
"id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
|
5217
|
+
numerical value is different from the converted "val". The B<-b> option may
|
5218
|
+
be added to output binary data, encoded in base64 if necessary (indicated by
|
5219
|
+
ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added
|
5220
|
+
to include tag table information (see B<-t> for details). The JSON output
|
5221
|
+
is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the
|
5222
|
+
UTF-8 validation is disabled if a character set other than UTF-8 is
|
5223
|
+
specified.
|
5222
5224
|
|
5223
5225
|
If I<JSONFILE> is specified, the file is imported and the tag definitions
|
5224
5226
|
from the file are used to set tag values on a per-file basis. The special
|
@@ -5367,7 +5369,7 @@ with this command:
|
|
5367
5369
|
|
5368
5370
|
produces output like this:
|
5369
5371
|
|
5370
|
-
-- Generated by ExifTool 12.
|
5372
|
+
-- Generated by ExifTool 12.17 --
|
5371
5373
|
File: a.jpg - 2003:10:31 15:44:19
|
5372
5374
|
(f/5.6, 1/60s, ISO 100)
|
5373
5375
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5527,18 +5529,18 @@ Notes:
|
|
5527
5529
|
argument like C<%d%f.txt> is written as C<%%d%%f.txt>.
|
5528
5530
|
|
5529
5531
|
2) If the argument for B<-w> does not contain a valid format code (eg. %f),
|
5530
|
-
then it is interpreted as a file extension
|
5531
|
-
|
5532
|
-
multiple source files is typically done by shell redirection, ie)
|
5532
|
+
then it is interpreted as a file extension, but there are three different
|
5533
|
+
ways to create a single output file from multiple source files:
|
5533
5534
|
|
5535
|
+
# 1. Shell redirection
|
5534
5536
|
exiftool FILE1 FILE2 ... > out.txt
|
5535
5537
|
|
5536
|
-
|
5537
|
-
be interpreted as a format string, and the same result may be obtained
|
5538
|
-
without the use of shell redirection:
|
5539
|
-
|
5538
|
+
# 2. With the -w option and a zero-width format code
|
5540
5539
|
exiftool -w+! %0fout.txt FILE1 FILE2 ...
|
5541
5540
|
|
5541
|
+
# 3. With the -W option (see the -W option below)
|
5542
|
+
exiftool -W+! out.txt FILE1 FILE2 ...
|
5543
|
+
|
5542
5544
|
Advanced features:
|
5543
5545
|
|
5544
5546
|
A substring of the original file name, directory or extension may be taken
|
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 = '12.
|
31
|
+
$VERSION = '12.17';
|
32
32
|
$RELEASE = '';
|
33
33
|
@ISA = qw(Exporter);
|
34
34
|
%EXPORT_TAGS = (
|
@@ -310,9 +310,10 @@ C<integer> is a string of digits (possibly beginning with a '+' or '-'),
|
|
310
310
|
C<real> is a floating point number, C<rational> is entered as a floating
|
311
311
|
point number but stored as two C<integer> strings separated by a '/'
|
312
312
|
character, C<date> is a date/time string entered in the format "YYYY:mm:dd
|
313
|
-
HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False"
|
314
|
-
|
315
|
-
|
313
|
+
HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False" (but "true"
|
314
|
+
and "false" may be written as a ValueConv value for compatibility with
|
315
|
+
non-conforming applications), C<struct> indicates a structured tag, and
|
316
|
+
C<lang-alt> is a tag that supports alternate languages.
|
316
317
|
|
317
318
|
When reading, C<struct> tags are extracted only if the L<Struct|../ExifTool.html#Struct> (-struct)
|
318
319
|
option is used. Otherwise the corresponding I<Flattened> tags, indicated by
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.43';
|
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)
|
@@ -2128,6 +2128,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2128
2128
|
16 => 'Pan Focus', #PH
|
2129
2129
|
# 137 - Single?
|
2130
2130
|
256 => 'AF + MF', #PH (NC, EOS M)
|
2131
|
+
257 => 'Live View', #forum12082
|
2131
2132
|
512 => 'Movie Snap Focus', #48
|
2132
2133
|
519 => 'Movie Servo AF', #PH (NC, EOS M)
|
2133
2134
|
},
|
@@ -19,7 +19,7 @@ use Image::ExifTool qw(:DataAccess);
|
|
19
19
|
use Image::ExifTool::Canon;
|
20
20
|
use Image::ExifTool::Exif;
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.58';
|
23
23
|
|
24
24
|
sub ProcessCanonCustom($$$);
|
25
25
|
sub ProcessCanonCustom2($$$);
|
@@ -2098,6 +2098,24 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2098
2098
|
'$val=~/(\d+)/ ? $1 : 0',
|
2099
2099
|
'$val=~/(\d+)/ ? $1 : 0',
|
2100
2100
|
],
|
2101
|
+
},{ # (1DXmkIII firmware 1.3)
|
2102
|
+
Name => 'ContinuousShootingSpeed',
|
2103
|
+
Condition => '$count == 5',
|
2104
|
+
Count => 5,
|
2105
|
+
PrintConv => [
|
2106
|
+
'"Hi $val"',
|
2107
|
+
'"Cont $val"',
|
2108
|
+
'"Lo $val"',
|
2109
|
+
'"Soft $val"',
|
2110
|
+
'"Soft LS $val"',
|
2111
|
+
],
|
2112
|
+
PrintConvInv => [
|
2113
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2114
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2115
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2116
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2117
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2118
|
+
],
|
2101
2119
|
},{ # others
|
2102
2120
|
Name => 'ContinuousShootingSpeed',
|
2103
2121
|
Count => 3,
|
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
56
56
|
use Image::ExifTool qw(:DataAccess :Utils);
|
57
57
|
use Image::ExifTool::MakerNotes;
|
58
58
|
|
59
|
-
$VERSION = '4.
|
59
|
+
$VERSION = '4.32';
|
60
60
|
|
61
61
|
sub ProcessExif($$$);
|
62
62
|
sub WriteExif($$$);
|
@@ -2560,6 +2560,7 @@ my %opcodeInfo = (
|
|
2560
2560
|
5 => 'Color sequential area',
|
2561
2561
|
7 => 'Trilinear',
|
2562
2562
|
8 => 'Color sequential linear',
|
2563
|
+
# 15 - used by DJI XT2
|
2563
2564
|
},
|
2564
2565
|
},
|
2565
2566
|
0xa300 => {
|
@@ -4728,8 +4729,8 @@ my %subSecConv = (
|
|
4728
4729
|
},
|
4729
4730
|
LensID => {
|
4730
4731
|
Groups => { 2 => 'Camera' },
|
4732
|
+
Require => 'LensType',
|
4731
4733
|
Desire => {
|
4732
|
-
0 => 'LensType',
|
4733
4734
|
1 => 'FocalLength',
|
4734
4735
|
2 => 'MaxAperture',
|
4735
4736
|
3 => 'MaxApertureValue',
|
@@ -4748,25 +4749,16 @@ my %subSecConv = (
|
|
4748
4749
|
Applies only to LensType values with a lookup table. May be configured
|
4749
4750
|
by adding user-defined lenses
|
4750
4751
|
},
|
4751
|
-
# this LensID is only valid if the LensType has a PrintConv
|
4752
|
-
# or LensType or LensModel are the model name
|
4752
|
+
# this LensID is only valid if the LensType has a PrintConv or is a model name
|
4753
4753
|
RawConv => q{
|
4754
4754
|
my $printConv = $$self{TAG_INFO}{LensType}{PrintConv};
|
4755
|
-
return $val if ref $printConv eq 'HASH' or
|
4756
|
-
|
4757
|
-
(defined $val[0] and $val[0] =~ /(mm|\d\/F)/) or
|
4758
|
-
(defined $val[6] and $val[6] =~ /(mm|\d\/F)/);
|
4755
|
+
return $val if ref $printConv eq 'HASH' or (ref $printConv eq 'ARRAY' and
|
4756
|
+
ref $$printConv[0] eq 'HASH') or $val[0] =~ /(mm|\d\/F)/;
|
4759
4757
|
return undef;
|
4760
4758
|
},
|
4761
|
-
ValueConv => '$val
|
4759
|
+
ValueConv => '$val',
|
4762
4760
|
PrintConv => q{
|
4763
4761
|
my $pcv;
|
4764
|
-
# use LensModel ([6]) if LensType ([0]) is not populated
|
4765
|
-
# (iPhone populates LensModel but not LensType)
|
4766
|
-
if (not defined $val[0] and defined $val[6]) {
|
4767
|
-
$val[0] = $val[6];
|
4768
|
-
$prt[0] = $prt[6];
|
4769
|
-
}
|
4770
4762
|
# use LensType2 instead of LensType if available and valid (Sony E-mount lenses)
|
4771
4763
|
# (0x8000 or greater; 0 for several older/3rd-party E-mount lenses)
|
4772
4764
|
if (defined $val[9] and ($val[9] & 0x8000 or $val[9] == 0)) {
|
@@ -4794,6 +4786,30 @@ my %subSecConv = (
|
|
4794
4786
|
return $lens;
|
4795
4787
|
},
|
4796
4788
|
},
|
4789
|
+
'LensID-2' => {
|
4790
|
+
Name => 'LensID',
|
4791
|
+
Groups => { 2 => 'Camera' },
|
4792
|
+
Desire => {
|
4793
|
+
0 => 'LensModel',
|
4794
|
+
1 => 'Lens',
|
4795
|
+
2 => 'XMP-aux:LensID',
|
4796
|
+
3 => 'Make',
|
4797
|
+
},
|
4798
|
+
Inhibit => {
|
4799
|
+
4 => 'Composite:LensID',
|
4800
|
+
},
|
4801
|
+
RawConv => q{
|
4802
|
+
return undef if defined $val[2] and defined $val[3];
|
4803
|
+
return $val if defined $val[0] and $val[0] =~ /(mm|\d\/F)/;
|
4804
|
+
return $val if defined $val[1] and $val[1] =~ /(mm|\d\/F)/;
|
4805
|
+
return undef;
|
4806
|
+
},
|
4807
|
+
ValueConv => q{
|
4808
|
+
return $val[0] if defined $val[0] and $val[0] =~ /(mm|\d\/F)/;
|
4809
|
+
return $val[1];
|
4810
|
+
},
|
4811
|
+
PrintConv => '$_=$val; s/(\d)\/F/$1mm F/; s/mmF/mm F/; s/(\d) mm/${1}mm/; s/ - /-/; $_',
|
4812
|
+
},
|
4797
4813
|
);
|
4798
4814
|
|
4799
4815
|
# table for unknown IFD entries
|
@@ -31,7 +31,7 @@ use vars qw($VERSION);
|
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
use Image::ExifTool::Exif;
|
33
33
|
|
34
|
-
$VERSION = '1.
|
34
|
+
$VERSION = '1.79';
|
35
35
|
|
36
36
|
sub ProcessFujiDir($$$);
|
37
37
|
sub ProcessFaceRec($$$);
|
@@ -623,6 +623,7 @@ my %faceCategories = (
|
|
623
623
|
0x700 => 'Eterna', #12
|
624
624
|
0x800 => 'Classic Negative', #forum10536
|
625
625
|
0x900 => 'Bleach Bypass', #forum10890
|
626
|
+
0xa00 => 'Nostalgic Neg', #forum12085
|
626
627
|
},
|
627
628
|
},
|
628
629
|
0x1402 => { #2
|
@@ -12,7 +12,7 @@ use strict;
|
|
12
12
|
use vars qw($VERSION);
|
13
13
|
use Image::ExifTool::Exif;
|
14
14
|
|
15
|
-
$VERSION = '1.
|
15
|
+
$VERSION = '1.52';
|
16
16
|
|
17
17
|
my %coordConv = (
|
18
18
|
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val)',
|
@@ -50,8 +50,8 @@ my %coordConv = (
|
|
50
50
|
OTHER => sub {
|
51
51
|
my ($val, $inv) = @_;
|
52
52
|
return undef unless $inv;
|
53
|
-
return uc $1 if $val =~ /\b([NS])
|
54
|
-
return $1 eq '-' ? 'S' : 'N' if $val =~
|
53
|
+
return uc $1 if $val =~ /\b([NS])\b/i;
|
54
|
+
return $1 eq '-' ? 'S' : 'N' if $val =~ /([-+]?)\d+/;
|
55
55
|
return undef;
|
56
56
|
},
|
57
57
|
N => 'North',
|
@@ -78,8 +78,8 @@ my %coordConv = (
|
|
78
78
|
OTHER => sub {
|
79
79
|
my ($val, $inv) = @_;
|
80
80
|
return undef unless $inv;
|
81
|
-
return uc $1 if $val =~ /\b([EW])
|
82
|
-
return $1 eq '-' ? 'W' : 'E' if $val =~
|
81
|
+
return uc $1 if $val =~ /\b([EW])\b/i;
|
82
|
+
return $1 eq '-' ? 'W' : 'E' if $val =~ /([-+]?)\d+/;
|
83
83
|
return undef;
|
84
84
|
},
|
85
85
|
E => 'East',
|
@@ -89,7 +89,7 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
89
89
|
Notes => 'hours:minutes:seconds:frames',
|
90
90
|
ValueConv => 'sprintf("%.2x:%.2x:%.2x:%.2x",reverse unpack("C*",$val))',
|
91
91
|
},
|
92
|
-
# 0x14 - TitleBinaryGroup
|
92
|
+
# 0x14 - TitleBinaryGroup - val: 0x00000000,0x14200130
|
93
93
|
# 0x15 - TitleCassetteNo (ref 7)
|
94
94
|
# 0x16-0x17 - TitleSoftID (ref 7)
|
95
95
|
# (0x18,0x19 listed as TitleTextHeader/TitleText by ref 7)
|
@@ -134,8 +134,8 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
134
134
|
Name => 'Camera2',
|
135
135
|
SubDirectory => { TagTable => 'Image::ExifTool::H264::Camera2' },
|
136
136
|
},
|
137
|
-
# 0x73 Lens - val:
|
138
|
-
# 0x74 Gain
|
137
|
+
# 0x73 Lens - val: 0x04ffffd3,0x0effffd3,0x15ffffd3,0x41ffffd3,0x52ffffd3,0x59ffffd3,0x65ffffd3,0x71ffffd3,0x75ffffd3,0x79ffffd3,0x7fffffd3,0xffffffd3...
|
138
|
+
# 0x74 Gain - val: 0xb8ffff0f
|
139
139
|
# 0x75 Pedestal
|
140
140
|
# 0x76 Gamma
|
141
141
|
# 0x77 Detail
|
@@ -376,34 +376,49 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
376
376
|
Notes => 'combined with tag 0xc8',
|
377
377
|
},
|
378
378
|
# 0xc9-0xcf - GPSOption
|
379
|
+
# 0xc9 - val: 0x001d0203
|
380
|
+
0xca => { #PH (Sony DSC-HX7V)
|
381
|
+
Name => 'GPSDateStamp',
|
382
|
+
Format => 'string',
|
383
|
+
Groups => { 1 => 'GPS', 2 => 'Time' },
|
384
|
+
Combine => 2, # the next 2 tags contain the rest of the string
|
385
|
+
Notes => 'combined with tags 0xcb and 0xcc',
|
386
|
+
ValueConv => 'Image::ExifTool::Exif::ExifDate($val)',
|
387
|
+
},
|
379
388
|
0xe0 => {
|
380
389
|
Name => 'MakeModel',
|
381
390
|
SubDirectory => { TagTable => 'Image::ExifTool::H264::MakeModel' },
|
382
391
|
},
|
383
392
|
# 0xe1-0xef - MakerOption
|
384
393
|
# 0xe1 - val: 0x01000670,0x01000678,0x06ffffff,0x01ffffff,0x01000020,0x01000400...
|
385
|
-
# 0xe2-0xe8 - val: 0x00000000 in many samples
|
386
394
|
0xe1 => { #6
|
387
395
|
Name => 'RecInfo',
|
388
396
|
Condition => '$$self{Make} eq "Canon"',
|
389
397
|
Notes => 'Canon only',
|
390
398
|
SubDirectory => { TagTable => 'Image::ExifTool::H264::RecInfo' },
|
391
399
|
},
|
400
|
+
# 0xe2-0xe8 - val: 0x00000000 in many samples
|
401
|
+
# 0xe2 - val: 0x00000000,0x01000000,0x01010000,0x8080900c,0x8080a074
|
402
|
+
# 0xe3 - val: 0x00801f89,0x00801f8b,0x00c01f89,0xc9c01f80
|
392
403
|
0xe4 => { #PH
|
393
404
|
Name => 'Model',
|
394
405
|
Condition => '$$self{Make} eq "Sony"', # (possibly also Canon models?)
|
395
406
|
Description => 'Camera Model Name',
|
396
|
-
Notes => 'Sony
|
407
|
+
Notes => 'Sony only, combined with tags 0xe5 and 0xe6',
|
397
408
|
Format => 'string',
|
398
409
|
Combine => 2, # (not sure about 0xe6, but include it just in case)
|
399
410
|
RawConv => '$val eq "" ? undef : $val',
|
400
411
|
},
|
412
|
+
# 0xeb - val: 0x008a0a00,0x0a300000,0x508a0a00,0x52880a00,0x528a0a00
|
413
|
+
# 0xec - val: 0x0b700000
|
414
|
+
# 0xed - val: 0x0ce0f819
|
401
415
|
0xee => { #6 (HFS200)
|
402
416
|
Name => 'FrameInfo',
|
403
417
|
Condition => '$$self{Make} eq "Canon"',
|
404
418
|
Notes => 'Canon only',
|
405
419
|
SubDirectory => { TagTable => 'Image::ExifTool::H264::FrameInfo' },
|
406
420
|
},
|
421
|
+
# 0xef - val: 0x01c00000,0x0e00000c
|
407
422
|
);
|
408
423
|
|
409
424
|
# ConsumerCamera1 information (ref PH)
|