exiftool_vendored 11.86.0 → 11.88.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 +38 -16
- data/bin/MANIFEST +3 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +34 -33
- data/bin/config_files/acdsee.config +1 -3
- data/bin/config_files/depthmap.config +56 -0
- data/bin/config_files/example.config +2 -0
- data/bin/config_files/gps2utm.config +1 -1
- data/bin/config_files/tiff_version.config +1 -1
- data/bin/exiftool +56 -39
- data/bin/fmt_files/gpx_wpt.fmt +1 -1
- data/bin/lib/Image/ExifTool.pm +32 -7
- data/bin/lib/Image/ExifTool.pod +53 -52
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +3 -3
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +3 -3
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +5 -5
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +2 -2
- data/bin/lib/Image/ExifTool/FujiFilm.pm +23 -7
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +2 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +4 -2
- data/bin/lib/Image/ExifTool/PDF.pm +2 -2
- data/bin/lib/Image/ExifTool/PNG.pm +10 -5
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +9 -4
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/README +51 -51
- data/bin/lib/Image/ExifTool/RIFF.pm +2 -2
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +1 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +1725 -1617
- data/bin/lib/Image/ExifTool/TagNames.pod +307 -9
- data/bin/lib/Image/ExifTool/Text.pm +59 -10
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +27 -12
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +25 -7
- data/bin/lib/Image/ExifTool/XMP.pm +6 -1
- data/bin/lib/Image/ExifTool/XMP2.pl +213 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +30 -30
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
|
@@ -466,7 +466,7 @@ Block:
|
|
|
466
466
|
} elsif ($a == 0xf9 and $length == 4) { # graphic control extension
|
|
467
467
|
|
|
468
468
|
last unless $raf->Read($buff, $length) == $length;
|
|
469
|
-
# sum the
|
|
469
|
+
# sum the individual delay times
|
|
470
470
|
my $delay = Get16u(\$buff, 1);
|
|
471
471
|
$delayTime += $delay;
|
|
472
472
|
$verbose and printf $out "Graphic Control: delay=%.2f\n", $delay / 100;
|
|
@@ -603,7 +603,7 @@ my %epsg_vertcs = (
|
|
|
603
603
|
20499 => 'Ain el Abd Bahrain Grid',
|
|
604
604
|
20538 => 'Afgooye UTM zone 38N',
|
|
605
605
|
20539 => 'Afgooye UTM zone 39N',
|
|
606
|
-
20700 => 'Lisbon
|
|
606
|
+
20700 => 'Lisbon Portuguese Grid',
|
|
607
607
|
20822 => 'Aratu UTM zone 22S',
|
|
608
608
|
20823 => 'Aratu UTM zone 23S',
|
|
609
609
|
20824 => 'Aratu UTM zone 24S',
|
|
@@ -61,7 +61,7 @@ my %manuSig = ( #6
|
|
|
61
61
|
'AAMA' => 'Aamazing Technologies, Inc.',
|
|
62
62
|
'ACER' => 'Acer Peripherals',
|
|
63
63
|
'ACLT' => 'Acolyte Color Research',
|
|
64
|
-
'ACTI' => 'Actix
|
|
64
|
+
'ACTI' => 'Actix Systems, Inc.',
|
|
65
65
|
'ADAR' => 'Adara Technology, Inc.',
|
|
66
66
|
'ADBE' => 'Adobe Systems Inc.',
|
|
67
67
|
'ADI ' => 'ADI Systems, Inc.',
|
|
@@ -283,7 +283,7 @@ my %PrintConv = ( #JD
|
|
|
283
283
|
'42bfe52476bf07f1ed0e6451903cc9ee:111111' => 'Adobe Lightroom, Quality 85% - 92%',
|
|
284
284
|
'4c3c425b4024b68c0de03904a825bc35:111111' => 'Adobe Lightroom, Quality 93% - 100%',
|
|
285
285
|
|
|
286
|
-
# Tested with Adobe Photoshop CS2 Version 9.0.2 (Win) - "Save as..." (RGB/
|
|
286
|
+
# Tested with Adobe Photoshop CS2 Version 9.0.2 (Win) - "Save as..." (RGB/CMYK)
|
|
287
287
|
'683506a889c78d9bc230a0c7ee5f62f3:221111' => 'Adobe Photoshop, Quality 0',
|
|
288
288
|
'bc490651af6592cd1dbbbc4fa2cfa1fb:221111' => 'Adobe Photoshop, Quality 1',
|
|
289
289
|
'ce4286d9f07999524c3c7472b065c5ab:221111' => 'Adobe Photoshop, Quality 2',
|
|
@@ -1339,7 +1339,7 @@ sub WriteMIEGroup($$$)
|
|
|
1339
1339
|
$extLen = Set32u($len);
|
|
1340
1340
|
$len = 254;
|
|
1341
1341
|
} else {
|
|
1342
|
-
$et->Warn("Can't write $newTag (DataLength > 2GB not yet
|
|
1342
|
+
$et->Warn("Can't write $newTag (DataLength > 2GB not yet supported)");
|
|
1343
1343
|
last; # don't write this tag
|
|
1344
1344
|
}
|
|
1345
1345
|
# write this element (with leading MIE group element if not done already)
|
|
@@ -1838,7 +1838,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
1838
1838
|
},
|
|
1839
1839
|
);
|
|
1840
1840
|
|
|
1841
|
-
# Image stabilization
|
|
1841
|
+
# Image stabilization information used by the Sony DSLR-A100 (ref 20)
|
|
1842
1842
|
%Image::ExifTool::Minolta::ISInfoA100 = (
|
|
1843
1843
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
1844
1844
|
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
|
@@ -3524,7 +3524,7 @@ my %binaryDataAttrs = (
|
|
|
3524
3524
|
Name => 'AFPointsUsed',
|
|
3525
3525
|
Condition => '$$self{PhaseDetectAF} == 5',
|
|
3526
3526
|
Notes => q{
|
|
3527
|
-
newer models with 135-point AF -- 9 rows (B-J) and 15
|
|
3527
|
+
newer models with 135-point AF -- 9 rows (B-J) and 15 columns (1-15). Center
|
|
3528
3528
|
point is F8
|
|
3529
3529
|
},
|
|
3530
3530
|
Format => 'undef[21]',
|
|
@@ -6950,8 +6950,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
6950
6950
|
},
|
|
6951
6951
|
},
|
|
6952
6952
|
49.1 => { # CSa9
|
|
6953
|
-
Name => 'LimitAFAreaModeSelection', #note that 'Dynamic area (9 points)' can be selected from the camera menu but the setting is not
|
|
6954
|
-
Mask => 0x7e, #...This AF Mode was
|
|
6953
|
+
Name => 'LimitAFAreaModeSelection', #note that 'Dynamic area (9 points)' can be selected from the camera menu but the setting is not written to the EXIF data.
|
|
6954
|
+
Mask => 0x7e, #...This AF Mode was added to the D5 firmware several months after the camera's initial release which may help explain the inconsistency.
|
|
6955
6955
|
PrintConv => {
|
|
6956
6956
|
0 => 'No Restrictions',
|
|
6957
6957
|
BITMASK => {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
# 13) Chris Shaw private communication (E-3)
|
|
22
22
|
# 14) Viktor Lushnikov private communication (E-400)
|
|
23
23
|
# 15) Yrjo Rauste private communication (E-30)
|
|
24
|
-
# 16) Godfrey DiGiorgi private
|
|
24
|
+
# 16) Godfrey DiGiorgi private communication (E-P1) + http://forums.dpreview.com/forums/read.asp?message=33187567
|
|
25
25
|
# 17) Martin Hibers private communication
|
|
26
26
|
# 18) Tomasz Kawecki private communication
|
|
27
27
|
# 19) Brad Grier private communication
|
|
@@ -39,7 +39,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
39
39
|
use Image::ExifTool::Exif;
|
|
40
40
|
use Image::ExifTool::APP12;
|
|
41
41
|
|
|
42
|
-
$VERSION = '2.
|
|
42
|
+
$VERSION = '2.64';
|
|
43
43
|
|
|
44
44
|
sub PrintLensInfo($$$);
|
|
45
45
|
|
|
@@ -109,6 +109,7 @@ my %olympusLensTypes = (
|
|
|
109
109
|
'0 32 10' => 'Olympus M.Zuiko Digital ED 12-200mm F3.5-6.3', #IB
|
|
110
110
|
'0 33 00' => 'Olympus Zuiko Digital 25mm F2.8', #PH
|
|
111
111
|
'0 34 00' => 'Olympus Zuiko Digital ED 9-18mm F4.0-5.6', #7
|
|
112
|
+
'0 34 10' => 'Olympus M.Zuiko Digital ED 12-45mm F4.0 Pro', #IB
|
|
112
113
|
'0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
|
|
113
114
|
# Sigma lenses
|
|
114
115
|
'1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
|
|
@@ -418,6 +419,7 @@ my %olympusCameraTypes = (
|
|
|
418
419
|
S0080 => 'E-M1X', #IB
|
|
419
420
|
S0085 => 'E-PL10', #IB
|
|
420
421
|
S0089 => 'E-M5MarkIII',
|
|
422
|
+
S0092 => 'E-M1MarkIII', #IB
|
|
421
423
|
SR45 => 'D220',
|
|
422
424
|
SR55 => 'D320L',
|
|
423
425
|
SR83 => 'D340L',
|
|
@@ -95,7 +95,7 @@ my %supportedFilter = (
|
|
|
95
95
|
WRITABLE => 'string',
|
|
96
96
|
# set PRIORITY to 0 so most recent Info dictionary takes precedence
|
|
97
97
|
# (Acrobat Pro bug? doesn't use same object/generation number for
|
|
98
|
-
# new Info dictionary when doing
|
|
98
|
+
# new Info dictionary when doing incremental update)
|
|
99
99
|
PRIORITY => 0,
|
|
100
100
|
NOTES => q{
|
|
101
101
|
As well as the tags listed below, the PDF specification allows for
|
|
@@ -779,7 +779,7 @@ sub FetchObject($$$$)
|
|
|
779
779
|
return undef;
|
|
780
780
|
}
|
|
781
781
|
# extract the object at the specified index in the stream
|
|
782
|
-
# (offsets in table are in sequential order, so we can
|
|
782
|
+
# (offsets in table are in sequential order, so we can subtract from
|
|
783
783
|
# the next offset to get the object length)
|
|
784
784
|
$offset = $$table[$i + 1];
|
|
785
785
|
my $len = ($$table[$i + 3] || length($$obj{_stream})) - $offset;
|
|
@@ -36,7 +36,7 @@ use strict;
|
|
|
36
36
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
38
38
|
|
|
39
|
-
$VERSION = '1.
|
|
39
|
+
$VERSION = '1.54';
|
|
40
40
|
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
|
@@ -118,6 +118,11 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
|
|
|
118
118
|
other text chunks here. For this reason, when writing, ExifTool 11.63 and
|
|
119
119
|
later create new text chunks (including XMP) before IDAT, and move existing
|
|
120
120
|
text chunks to before IDAT.
|
|
121
|
+
|
|
122
|
+
The PNG format contains CRC checksums that are validated when reading with
|
|
123
|
+
either the L<Verbose|../ExifTool.html#Verbose> or L<Validate|../ExifTool.html#Validate> option. When writing, these checksums are
|
|
124
|
+
validated by default, but the L<FastScan|../ExifTool.html#FastScan> option may be used to bypass this
|
|
125
|
+
check if speed is more of a concern.
|
|
121
126
|
},
|
|
122
127
|
bKGD => {
|
|
123
128
|
Name => 'BackgroundColor',
|
|
@@ -614,7 +619,7 @@ my %unreg = ( Notes => 'unregistered' );
|
|
|
614
619
|
GROUPS => { 2 => 'Image' },
|
|
615
620
|
FORMAT => 'int32u',
|
|
616
621
|
NOTES => q{
|
|
617
|
-
Tags found in the Animation
|
|
622
|
+
Tags found in the Animation Control chunk. See
|
|
618
623
|
L<https://wiki.mozilla.org/APNG_Specification> for details.
|
|
619
624
|
},
|
|
620
625
|
0 => {
|
|
@@ -1248,7 +1253,8 @@ sub ProcessPNG($$)
|
|
|
1248
1253
|
my $datChunk = '';
|
|
1249
1254
|
my $datCount = 0;
|
|
1250
1255
|
my $datBytes = 0;
|
|
1251
|
-
my
|
|
1256
|
+
my $fastScan = $et->Options('FastScan');
|
|
1257
|
+
my ($n, $sig, $err, $hbuf, $dbuf, $cbuf);
|
|
1252
1258
|
my ($wasHdr, $wasEnd, $wasDat, $doTxt, @txtOffset);
|
|
1253
1259
|
|
|
1254
1260
|
# check to be sure this is a valid PNG/MNG/JNG image
|
|
@@ -1264,7 +1270,6 @@ sub ProcessPNG($$)
|
|
|
1264
1270
|
# initialize with same directories, with PNG tags taking priority
|
|
1265
1271
|
$et->InitWriteDirs(\%pngMap,'PNG');
|
|
1266
1272
|
} else {
|
|
1267
|
-
$fastScan = $et->Options('FastScan');
|
|
1268
1273
|
# disable buffering in FastScan mode
|
|
1269
1274
|
$$raf{NoBuffer} = 1 if $fastScan;
|
|
1270
1275
|
}
|
|
@@ -1427,7 +1432,7 @@ sub ProcessPNG($$)
|
|
|
1427
1432
|
$et->Warn("Corrupted $fileType image") unless $wasEnd;
|
|
1428
1433
|
last;
|
|
1429
1434
|
}
|
|
1430
|
-
if ($verbose or $validate or $outfile) {
|
|
1435
|
+
if ($verbose or $validate or ($outfile and not $fastScan)) {
|
|
1431
1436
|
# check CRC when in verbose mode (since we don't care about speed)
|
|
1432
1437
|
my $crc = CalculateCRC(\$hbuf, undef, 4);
|
|
1433
1438
|
$crc = CalculateCRC(\$dbuf, $crc);
|
|
@@ -2449,7 +2449,7 @@ sub ProcessLeicaLEIC($$$)
|
|
|
2449
2449
|
#------------------------------------------------------------------------------
|
|
2450
2450
|
# Process MakerNote trailer written by Leica S2
|
|
2451
2451
|
# Inputs: 0) ExifTool object ref, 1) new absolute position of Leica trailer when writing
|
|
2452
|
-
# Returns: On success: 1 when reading, directory data when writing;
|
|
2452
|
+
# Returns: On success: 1 when reading, directory data when writing; otherwise undef
|
|
2453
2453
|
# Notes:
|
|
2454
2454
|
# - may be called twice for a file if the first call doesn't succeed
|
|
2455
2455
|
# - must leave RAF position unchanged
|
|
@@ -4309,15 +4309,15 @@ my %binaryDataAttrs = (
|
|
|
4309
4309
|
Name => 'LC3',
|
|
4310
4310
|
%lensCode,
|
|
4311
4311
|
},
|
|
4312
|
-
5 => { # LC4 =
|
|
4312
|
+
5 => { # LC4 = aberation correction, near distance data
|
|
4313
4313
|
Name => 'LC4',
|
|
4314
4314
|
%lensCode,
|
|
4315
4315
|
},
|
|
4316
|
-
6 => { # LC5 = light color
|
|
4316
|
+
6 => { # LC5 = light color aberation correction data
|
|
4317
4317
|
Name => 'LC5',
|
|
4318
4318
|
%lensCode,
|
|
4319
4319
|
},
|
|
4320
|
-
7 => { # LC6 = open
|
|
4320
|
+
7 => { # LC6 = open aberation data
|
|
4321
4321
|
Name => 'LC6',
|
|
4322
4322
|
%lensCode,
|
|
4323
4323
|
},
|
|
@@ -545,7 +545,7 @@ my %unicodeString = (
|
|
|
545
545
|
PrintConv => 'sprintf("%d%%",$val)',
|
|
546
546
|
},
|
|
547
547
|
# tags extracted from additional layer information (tag ID's are real)
|
|
548
|
-
# - must be able to
|
|
548
|
+
# - must be able to accommodate a blank entry to preserve the list ordering
|
|
549
549
|
luni => {
|
|
550
550
|
Name => 'LayerUnicodeNames',
|
|
551
551
|
List => 1,
|
|
@@ -6295,7 +6295,7 @@ my %eeBox = (
|
|
|
6295
6295
|
# tsas - temporal sublayer sample
|
|
6296
6296
|
# stsa - step-wise temporal layer access
|
|
6297
6297
|
# avss - AVC sample
|
|
6298
|
-
# tscl - temporal layer
|
|
6298
|
+
# tscl - temporal layer scalability
|
|
6299
6299
|
# sync - sync sample
|
|
6300
6300
|
},
|
|
6301
6301
|
subs => {
|
|
@@ -7391,7 +7391,7 @@ sub FixWrongFormat($)
|
|
|
7391
7391
|
#------------------------------------------------------------------------------
|
|
7392
7392
|
# Convert ISO 6709 string to standard lag/lon format
|
|
7393
7393
|
# Inputs: 0) ISO 6709 string (lat, lon, and optional alt)
|
|
7394
|
-
# Returns: position in decimal
|
|
7394
|
+
# Returns: position in decimal degrees with altitude if available
|
|
7395
7395
|
# Notes: Wikipedia indicates altitude may be in feet -- how is this specified?
|
|
7396
7396
|
sub ConvertISO6709($)
|
|
7397
7397
|
{
|
|
@@ -7610,7 +7610,12 @@ sub PrintableTagID($;$)
|
|
|
7610
7610
|
# ConstructionMethod - offset type: 0=file, 1=idat, 2=item
|
|
7611
7611
|
# DataReferenceIndex - 0 for "this file", otherwise index in dref box
|
|
7612
7612
|
# BaseOffset - base for file offsets
|
|
7613
|
-
# Extents - list of
|
|
7613
|
+
# Extents - list of details for data in file:
|
|
7614
|
+
# 0) index (extent_index)
|
|
7615
|
+
# 1) offset (extent_offset)
|
|
7616
|
+
# 2) length (extent_length)
|
|
7617
|
+
# 3) nlen (length_size)
|
|
7618
|
+
# 4) lenPt (pointer to length word)
|
|
7614
7619
|
# infe:
|
|
7615
7620
|
# ProtectionIndex - index if item is protected (0 for unprotected)
|
|
7616
7621
|
# Name - item name
|
|
@@ -8514,7 +8519,7 @@ ItemID: foreach $id (keys %$items) {
|
|
|
8514
8519
|
last ItemID;
|
|
8515
8520
|
} elsif ($$item{DocNum}) {
|
|
8516
8521
|
# this property is already associated with an item that has
|
|
8517
|
-
# an ExifTool document number, so use the lowest
|
|
8522
|
+
# an ExifTool document number, so use the lowest associated DocNum
|
|
8518
8523
|
$docNum = $$item{DocNum} if not defined $docNum or $docNum > $$item{DocNum};
|
|
8519
8524
|
} elsif (not defined $lowest or $lowest > $id) {
|
|
8520
8525
|
# keep track of the lowest associated item ID
|
|
@@ -560,7 +560,7 @@ sub SaveMetaKeys($$$)
|
|
|
560
560
|
my ($tagID, $format, $pid);
|
|
561
561
|
if ($verbose) {
|
|
562
562
|
$pid = PrintableTagID($id,1);
|
|
563
|
-
$et->VPrint(0, "$oldIndent+ [
|
|
563
|
+
$et->VPrint(0, "$oldIndent+ [Metadata Key entry, Local ID=$pid, $size bytes]\n");
|
|
564
564
|
$$et{INDENT} .= '| ';
|
|
565
565
|
}
|
|
566
566
|
|
|
@@ -174,7 +174,7 @@ key:
|
|
|
174
174
|
|
|
175
175
|
PREFERRED : Set to true if the tags in this table should always be added when
|
|
176
176
|
writing information. Overrides the order specified by SetNewGroups(). When
|
|
177
|
-
this feature is used, it may also be
|
|
177
|
+
this feature is used, it may also be desirable to specify a preferred group
|
|
178
178
|
when calling InitWriteDirs() to write these tags; this avoids creating other
|
|
179
179
|
directories for tags which are already being creating in the preferred group.
|
|
180
180
|
|
|
@@ -573,53 +573,53 @@ numerical, and generated automatically otherwise.
|
|
|
573
573
|
split at whitespace into a list of items and each item is
|
|
574
574
|
converted by the associated entry in the ValueConv list. A
|
|
575
575
|
special value of 'REPEAT' may be used to repeat the previous
|
|
576
|
-
conversion for all
|
|
577
|
-
used and the Raw value doesn't appear as one of the keys,
|
|
578
|
-
the converted value is set to "Unknown (X)", where X is
|
|
579
|
-
Raw value (unless either of the special keys exist:
|
|
580
|
-
a reference to a hash used to decode individual
|
|
581
|
-
'OTHER', a reference to a subroutine used to
|
|
582
|
-
values. The OTHER subroutine takes 3
|
|
583
|
-
flag which is set for the inverse
|
|
584
|
-
to the PrintConv hash, and returns
|
|
585
|
-
undef on error -- it may call warn() to
|
|
586
|
-
message.
|
|
587
|
-
which is used for documentation if the
|
|
588
|
-
set).
|
|
589
|
-
ExifTool object, $val is the Raw
|
|
590
|
-
key. The subroutine takes 2
|
|
591
|
-
reference to the current
|
|
592
|
-
formatting expression (if any)
|
|
593
|
-
ExifTool "FMT_EXPR" member variable.
|
|
594
|
-
subroutine is evaluated if and when the tag
|
|
595
|
-
(ie. only after all extraction is
|
|
596
|
-
at this time the values of all
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
avoided). When
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
reference for a list of
|
|
604
|
-
always be defined -- use
|
|
605
|
-
|
|
606
|
-
undef tag may hide a
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
tags are needed), set the
|
|
610
|
-
priority over a valid tag.
|
|
611
|
-
Raw value is not converted.
|
|
612
|
-
Desire other tags may access
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
Note: Warnings issued by
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
easily be missed.
|
|
576
|
+
conversion for all remaining elements). If a hash reference
|
|
577
|
+
is used and the Raw value doesn't appear as one of the keys,
|
|
578
|
+
then the converted value is set to "Unknown (X)", where X is
|
|
579
|
+
the Raw value (unless either of the special keys exist:
|
|
580
|
+
'BITMASK', a reference to a hash used to decode individual
|
|
581
|
+
value bits; or 'OTHER', a reference to a subroutine used to
|
|
582
|
+
convert unknown values. The OTHER subroutine takes 3
|
|
583
|
+
arguments: the value, a flag which is set for the inverse
|
|
584
|
+
conversion, and a reference to the PrintConv hash, and returns
|
|
585
|
+
the converted value or undef on error -- it may call warn() to
|
|
586
|
+
return an error message. The lookup hash may also contain a
|
|
587
|
+
'Notes' entry which is used for documentation if the
|
|
588
|
+
SeparateTable flag is set). In an expression, $self is a
|
|
589
|
+
reference to the current ExifTool object, $val is the Raw
|
|
590
|
+
value, and $tag is the tag key. The subroutine takes 2
|
|
591
|
+
arguments: the Raw value and a reference to the current
|
|
592
|
+
ExifTool object. The advanced formatting expression (if any)
|
|
593
|
+
may be accessed via the ExifTool "FMT_EXPR" member variable.
|
|
594
|
+
The expression or subroutine is evaluated if and when the tag
|
|
595
|
+
value is requested (ie. only after all extraction is
|
|
596
|
+
complete), so if necessary at this time the values of all
|
|
597
|
+
other tags are available via calls to
|
|
598
|
+
$self->GetValue("Tag","Raw"). (Note: In theory, types other
|
|
599
|
+
than "Raw" may be accessed, but they are slower and may lead
|
|
600
|
+
to cyclical dependencies so they should be avoided). When
|
|
601
|
+
evaluated, the expression or subroutine returns a scalar for
|
|
602
|
+
the converted value, a SCALAR reference to a binary data value
|
|
603
|
+
(see the 'Binary' flag), or an ARRAY reference for a list of
|
|
604
|
+
values. The return value should always be defined -- use
|
|
605
|
+
RawConv instead to return undef if it is necessary to test the
|
|
606
|
+
value for validity, otherwise an undef tag may hide a
|
|
607
|
+
previously defined value when the Duplicates option is not
|
|
608
|
+
enabled. If this isn't possible (as with Composite tags where
|
|
609
|
+
the converted values of the source tags are needed), set the
|
|
610
|
+
Priority to 0 to avoid taking priority over a valid tag. If
|
|
611
|
+
ValueConv is not specified, the Raw value is not converted.
|
|
612
|
+
Composite tags which Require or Desire other tags may access
|
|
613
|
+
the ValueConv, PrintConv and Raw values of these tags through
|
|
614
|
+
the elements of the @val, @prt and @raw lists respectively
|
|
615
|
+
(only if there was no RawConv or it returned a hash
|
|
616
|
+
reference). For these tags, $val may be used in an expression
|
|
617
|
+
to represent $val[0], and the first argument passed for a code
|
|
618
|
+
reference is a reference to @val. Note: Warnings issued by
|
|
619
|
+
these conversions are intercepted by ExifTool and saved as
|
|
620
|
+
Warning tags, but since ValueConv and PrintConv conversions
|
|
621
|
+
are done on demand, the warnings may be generated after the
|
|
622
|
+
list of extracted tags is returned, so may easily be missed.
|
|
623
623
|
|
|
624
624
|
PrintConv : This entry is similar to ValueConv above, except that it is
|
|
625
625
|
used to further convert the tag value to a human readable
|
|
@@ -766,7 +766,7 @@ numerical, and generated automatically otherwise.
|
|
|
766
766
|
is set to zero), and for EXIF-type tables gives format for
|
|
767
767
|
writing. Writable may be set to 1 for MakerNotes information
|
|
768
768
|
because the existing format is always used, however providing
|
|
769
|
-
a format is
|
|
769
|
+
a format is desirable because it is used in validating the
|
|
770
770
|
value. Set to 2 for tag to show "yes" in the Writable column
|
|
771
771
|
of the tag name documentation even when there is no WRITE_PROC
|
|
772
772
|
defined (eg. if it is written via an Extra tag). For EXIF
|
|
@@ -1016,7 +1016,7 @@ numerical, and generated automatically otherwise.
|
|
|
1016
1016
|
The following variables may be used in the expression: $val
|
|
1017
1017
|
(value of the tag), $dirData (reference to directory data),
|
|
1018
1018
|
$subdirStart (offset to subdirectory start) and $size (size of
|
|
1019
|
-
subdirectory). Returns true if
|
|
1019
|
+
subdirectory). Returns true if subdirectory is valid.
|
|
1020
1020
|
|
|
1021
1021
|
ProcessProc: If given, specifies processing procedure used to decode this
|
|
1022
1022
|
subdirectory data. This overrides the default procedure
|
|
@@ -1095,7 +1095,7 @@ flattened tags are allowed, and are used when it is necessary to change the Name
|
|
|
1095
1095
|
or Description of a flattened tag. The flattened tag information hash entries
|
|
1096
1096
|
are copied from the corresponding structure field definitions, even for
|
|
1097
1097
|
pre-defined flattened tags. The exception is that the List property is
|
|
1098
|
-
generated automatically unless
|
|
1098
|
+
generated automatically unless explicitly set to 0 in a pre-defined flattened
|
|
1099
1099
|
tag.
|
|
1100
1100
|
|
|
1101
1101
|
--------------------------------------------------------------------------------
|
|
@@ -142,7 +142,7 @@ my %code2charset = (
|
|
|
142
142
|
0x64 => 'APICOM G.726 ADPCM',
|
|
143
143
|
0x65 => 'APICOM G.722 ADPCM',
|
|
144
144
|
0x66 => 'Microsoft DSAT', #6
|
|
145
|
-
0x67 => '
|
|
145
|
+
0x67 => 'Microsoft DSAT DISPLAY', #6
|
|
146
146
|
0x69 => 'Voxware Byte Aligned', #7
|
|
147
147
|
0x70 => 'Voxware AC8', #7
|
|
148
148
|
0x71 => 'Voxware AC10', #7
|
|
@@ -339,7 +339,7 @@ my %code2charset = (
|
|
|
339
339
|
these files, information is extracted from subsequent RIFF chunks as
|
|
340
340
|
sub-documents, but the Duration is calculated for the full video.
|
|
341
341
|
},
|
|
342
|
-
# (not 100% sure that the
|
|
342
|
+
# (not 100% sure that the concatenation technique mentioned above is valid - PH)
|
|
343
343
|
'fmt ' => {
|
|
344
344
|
Name => 'AudioFormat',
|
|
345
345
|
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::AudioFormat' },
|
|
@@ -153,7 +153,7 @@ sub UnescapeRTF($$$)
|
|
|
153
153
|
$val =~ tr/\n\r//d; # ignore CR's and LF's
|
|
154
154
|
return $val;
|
|
155
155
|
}
|
|
156
|
-
# CR/LF is
|
|
156
|
+
# CR/LF is significant if it terminates a control sequence (so change these to a space)
|
|
157
157
|
# (was $val =~ s/(^|[^\\])((?:\\\\)*)(\\[a-zA-Z]+(?:-?\d+)?)[\n\r]/$1$2$3 /g;)
|
|
158
158
|
$val =~ s/\\(?:([a-zA-Z]+(?:-?\d+)?)[\n\r]|(.))/'\\'.($1 ? "$1 " : $2)/sge;
|
|
159
159
|
# protect the newline control sequence by converting to a \par command
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
# 4) Jaroslav Stepanek via rt.cpan.org
|
|
12
12
|
# 5) Nick Livchits private communication
|
|
13
13
|
# 6) Sreerag Raghavan private communication (SM-C200)
|
|
14
|
-
# IB) Iliah Borg private
|
|
14
|
+
# IB) Iliah Borg private communication (LibRaw)
|
|
15
15
|
# NJ) Niels Kristian Bech Jensen private communication
|
|
16
16
|
#------------------------------------------------------------------------------
|
|
17
17
|
|