exiftool-vendored.exe 12.31.0 → 12.33.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.
- package/bin/exiftool_files/Changes +36 -4
- package/bin/exiftool_files/README +2 -2
- package/bin/exiftool_files/arg_files/xmp2exif.args +2 -1
- package/bin/exiftool_files/exiftool.pl +33 -21
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +331 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +16 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +97 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -2
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +47 -14
- package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +5 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +86 -78
- package/bin/exiftool_files/lib/Image/ExifTool/README +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -3
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +31 -2
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +59 -8
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +7 -2
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +1 -0
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +8867 -8864
- package/bin/exiftool_files/lib/Image/ExifTool.pod +3 -3
- package/package.json +2 -2
|
@@ -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.37';
|
|
60
60
|
|
|
61
61
|
sub ProcessExif($$$);
|
|
62
62
|
sub WriteExif($$$);
|
|
@@ -265,6 +265,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
|
|
|
265
265
|
32892 => 'Sequential Color Filter', #JR (Sony ARQ)
|
|
266
266
|
34892 => 'Linear Raw', #2
|
|
267
267
|
51177 => 'Depth Map', # (DNG 1.5)
|
|
268
|
+
52527 => 'Semantic Mask', # (DNG 1.6)
|
|
268
269
|
);
|
|
269
270
|
|
|
270
271
|
%orientation = (
|
|
@@ -291,6 +292,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
|
|
|
291
292
|
9 => 'Depth map of reduced-resolution image', # (DNG 1.5)
|
|
292
293
|
16 => 'Enhanced image data', # (DNG 1.5)
|
|
293
294
|
0x10001 => 'Alternate reduced-resolution image', # (DNG 1.2)
|
|
295
|
+
0x10004 => 'Semantic Mask', # (DNG 1.6)
|
|
294
296
|
0xffffffff => 'invalid', #(found in E5700 NEF's)
|
|
295
297
|
BITMASK => {
|
|
296
298
|
0 => 'Reduced resolution',
|
|
@@ -366,6 +368,7 @@ my %opcodeInfo = (
|
|
|
366
368
|
11 => 'DeltaPerColumn',
|
|
367
369
|
12 => 'ScalePerRow',
|
|
368
370
|
13 => 'ScalePerColumn',
|
|
371
|
+
14 => 'WarpRectilinear2', # (DNG 1.6)
|
|
369
372
|
},
|
|
370
373
|
PrintConvInv => undef, # (so the inverse conversion is not performed)
|
|
371
374
|
);
|
|
@@ -3038,12 +3041,12 @@ my %opcodeInfo = (
|
|
|
3038
3041
|
},
|
|
3039
3042
|
},
|
|
3040
3043
|
#
|
|
3041
|
-
# DNG tags 0xc6XX and
|
|
3044
|
+
# DNG tags 0xc6XX, 0xc7XX and 0xcdXX (ref 2 unless otherwise stated)
|
|
3042
3045
|
#
|
|
3043
3046
|
0xc612 => {
|
|
3044
3047
|
Name => 'DNGVersion',
|
|
3045
3048
|
Notes => q{
|
|
3046
|
-
tags 0xc612-
|
|
3049
|
+
tags 0xc612-0xcd3b are defined by the DNG specification unless otherwise
|
|
3047
3050
|
noted. See L<https://helpx.adobe.com/photoshop/digital-negative.html> for
|
|
3048
3051
|
the specification
|
|
3049
3052
|
},
|
|
@@ -4041,6 +4044,97 @@ my %opcodeInfo = (
|
|
|
4041
4044
|
Protected => 1,
|
|
4042
4045
|
WriteGroup => 'IFD0',
|
|
4043
4046
|
},
|
|
4047
|
+
0xcd2d => { # DNG 1.6
|
|
4048
|
+
Name => 'ProfileGainTableMap',
|
|
4049
|
+
Writable => 'undef',
|
|
4050
|
+
WriteGroup => 'SubIFD',
|
|
4051
|
+
Protected => 1,
|
|
4052
|
+
Binary => 1,
|
|
4053
|
+
},
|
|
4054
|
+
0xcd2e => { # DNG 1.6
|
|
4055
|
+
Name => 'SemanticName',
|
|
4056
|
+
# Writable => 'string',
|
|
4057
|
+
WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate)
|
|
4058
|
+
},
|
|
4059
|
+
0xcd30 => { # DNG 1.6
|
|
4060
|
+
Name => 'SemanticInstanceIFD',
|
|
4061
|
+
# Writable => 'string',
|
|
4062
|
+
WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate)
|
|
4063
|
+
},
|
|
4064
|
+
0xcd31 => { # DNG 1.6
|
|
4065
|
+
Name => 'CalibrationIlluminant3',
|
|
4066
|
+
Writable => 'int16u',
|
|
4067
|
+
WriteGroup => 'IFD0',
|
|
4068
|
+
Protected => 1,
|
|
4069
|
+
SeparateTable => 'LightSource',
|
|
4070
|
+
PrintConv => \%lightSource,
|
|
4071
|
+
},
|
|
4072
|
+
0xcd32 => { # DNG 1.6
|
|
4073
|
+
Name => 'CameraCalibration3',
|
|
4074
|
+
Writable => 'rational64s',
|
|
4075
|
+
WriteGroup => 'IFD0',
|
|
4076
|
+
Count => -1,
|
|
4077
|
+
Protected => 1,
|
|
4078
|
+
},
|
|
4079
|
+
0xcd33 => { # DNG 1.6
|
|
4080
|
+
Name => 'ColorMatrix3',
|
|
4081
|
+
Writable => 'rational64s',
|
|
4082
|
+
WriteGroup => 'IFD0',
|
|
4083
|
+
Count => -1,
|
|
4084
|
+
Protected => 1,
|
|
4085
|
+
},
|
|
4086
|
+
0xcd34 => { # DNG 1.6
|
|
4087
|
+
Name => 'ForwardMatrix3',
|
|
4088
|
+
Writable => 'rational64s',
|
|
4089
|
+
WriteGroup => 'IFD0',
|
|
4090
|
+
Count => -1,
|
|
4091
|
+
Protected => 1,
|
|
4092
|
+
},
|
|
4093
|
+
0xcd35 => { # DNG 1.6
|
|
4094
|
+
Name => 'IlluminantData1',
|
|
4095
|
+
Writable => 'undef',
|
|
4096
|
+
WriteGroup => 'IFD0',
|
|
4097
|
+
Protected => 1,
|
|
4098
|
+
},
|
|
4099
|
+
0xcd36 => { # DNG 1.6
|
|
4100
|
+
Name => 'IlluminantData2',
|
|
4101
|
+
Writable => 'undef',
|
|
4102
|
+
WriteGroup => 'IFD0',
|
|
4103
|
+
Protected => 1,
|
|
4104
|
+
},
|
|
4105
|
+
0xcd37 => { # DNG 1.6
|
|
4106
|
+
Name => 'IlluminantData3',
|
|
4107
|
+
Writable => 'undef',
|
|
4108
|
+
WriteGroup => 'IFD0',
|
|
4109
|
+
Protected => 1,
|
|
4110
|
+
},
|
|
4111
|
+
0xcd38 => { # DNG 1.6
|
|
4112
|
+
Name => 'MaskSubArea',
|
|
4113
|
+
# Writable => 'int32u',
|
|
4114
|
+
WriteGroup => 'SubIFD', #? (NC) Semantic Mask IFD (only for Validate)
|
|
4115
|
+
Count => 4,
|
|
4116
|
+
},
|
|
4117
|
+
0xcd39 => { # DNG 1.6
|
|
4118
|
+
Name => 'ProfileHueSatMapData3',
|
|
4119
|
+
%longBin,
|
|
4120
|
+
Writable => 'float',
|
|
4121
|
+
WriteGroup => 'IFD0',
|
|
4122
|
+
Count => -1,
|
|
4123
|
+
Protected => 1,
|
|
4124
|
+
},
|
|
4125
|
+
0xcd3a => { # DNG 1.6
|
|
4126
|
+
Name => 'ReductionMatrix3',
|
|
4127
|
+
Writable => 'rational64s',
|
|
4128
|
+
WriteGroup => 'IFD0',
|
|
4129
|
+
Count => -1,
|
|
4130
|
+
Protected => 1,
|
|
4131
|
+
},
|
|
4132
|
+
0xcd3b => { # DNG 1.6
|
|
4133
|
+
Name => 'RGBTables',
|
|
4134
|
+
Writable => 'undef',
|
|
4135
|
+
WriteGroup => 'IFD0',
|
|
4136
|
+
Protected => 1,
|
|
4137
|
+
},
|
|
4044
4138
|
0xea1c => { #13
|
|
4045
4139
|
Name => 'Padding',
|
|
4046
4140
|
Binary => 1,
|
|
@@ -28,7 +28,7 @@ use vars qw($VERSION);
|
|
|
28
28
|
use Image::ExifTool qw(:Public);
|
|
29
29
|
use Image::ExifTool::GPS;
|
|
30
30
|
|
|
31
|
-
$VERSION = '1.
|
|
31
|
+
$VERSION = '1.65';
|
|
32
32
|
|
|
33
33
|
sub JITTER() { return 2 } # maximum time jitter
|
|
34
34
|
|
|
@@ -262,8 +262,10 @@ sub LoadTrackLog($$;$)
|
|
|
262
262
|
$param = 'time';
|
|
263
263
|
} elsif (/^(Pos)?Lat/i) {
|
|
264
264
|
$param = 'lat';
|
|
265
|
+
/ref$/i and $param .= 'ref';
|
|
265
266
|
} elsif (/^(Pos)?Lon/i) {
|
|
266
267
|
$param = 'lon';
|
|
268
|
+
/ref$/i and $param .= 'ref';
|
|
267
269
|
} elsif (/^(Pos)?Alt/i) {
|
|
268
270
|
$param = 'alt';
|
|
269
271
|
} elsif (/^(Angle)?(Heading|Track)/i) {
|
|
@@ -453,7 +455,7 @@ DoneFix: $isDate = 1;
|
|
|
453
455
|
# (ExifTool enhancements allow for standard tag names or descriptions as the column headings,
|
|
454
456
|
# add support for time zones and flexible coordinates, and allow new DateTime and Shift columns)
|
|
455
457
|
#
|
|
456
|
-
my ($param, $date, $secs);
|
|
458
|
+
my ($param, $date, $secs, %neg);
|
|
457
459
|
foreach $param (@csvHeadings) {
|
|
458
460
|
my $val = shift @vals;
|
|
459
461
|
last unless defined $val;
|
|
@@ -479,6 +481,10 @@ DoneFix: $isDate = 1;
|
|
|
479
481
|
}
|
|
480
482
|
} elsif ($param eq 'lat' or $param eq 'lon') {
|
|
481
483
|
$$fix{$param} = Image::ExifTool::GPS::ToDegrees($val, 1);
|
|
484
|
+
} elsif ($param eq 'latref') {
|
|
485
|
+
$neg{lat} = 1 if $val =~ /^S/i;
|
|
486
|
+
} elsif ($param eq 'lonref') {
|
|
487
|
+
$neg{lon} = 1 if $val =~ /^W/i;
|
|
482
488
|
} elsif ($param eq 'runtime') {
|
|
483
489
|
$date = $trackTime;
|
|
484
490
|
$secs = $val;
|
|
@@ -486,6 +492,11 @@ DoneFix: $isDate = 1;
|
|
|
486
492
|
$$fix{$param} = $val;
|
|
487
493
|
}
|
|
488
494
|
}
|
|
495
|
+
# make coordinate negative according to reference direction if necessary
|
|
496
|
+
foreach $param (keys %neg) {
|
|
497
|
+
next unless defined $$fix{$param};
|
|
498
|
+
$$fix{$param} = -abs($$fix{$param});
|
|
499
|
+
}
|
|
489
500
|
if ($date and defined $secs and defined $$fix{lat} and defined $$fix{lon}) {
|
|
490
501
|
$time = $date + $secs;
|
|
491
502
|
$$has{alt} = 1 if defined $$fix{alt};
|
|
@@ -14,7 +14,7 @@ use vars qw($VERSION);
|
|
|
14
14
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
15
15
|
use Image::ExifTool::Import;
|
|
16
16
|
|
|
17
|
-
$VERSION = '1.
|
|
17
|
+
$VERSION = '1.05';
|
|
18
18
|
|
|
19
19
|
sub ProcessJSON($$);
|
|
20
20
|
sub ProcessTag($$$$%);
|
|
@@ -83,8 +83,12 @@ sub ProcessTag($$$$%)
|
|
|
83
83
|
FoundTag($et, $tagTablePtr, $tag, $val, %flags, Struct => 1);
|
|
84
84
|
return unless $et->Options('Struct') > 1;
|
|
85
85
|
}
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
# support hashes with ordered keys
|
|
87
|
+
my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
|
|
88
|
+
foreach (@keys) {
|
|
89
|
+
my $tg = $tag . ((/^\d/ and $tag =~ /\d$/) ? '_' : '') . ucfirst;
|
|
90
|
+
$tg =~ s/([^a-zA-Z])([a-z])/$1\U$2/g;
|
|
91
|
+
ProcessTag($et, $tagTablePtr, $tg, $$val{$_}, %flags, Flat => 1);
|
|
88
92
|
}
|
|
89
93
|
} elsif (ref $val eq 'ARRAY') {
|
|
90
94
|
foreach (@$val) {
|
|
@@ -16,7 +16,7 @@ use strict;
|
|
|
16
16
|
use vars qw($VERSION);
|
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.31';
|
|
20
20
|
|
|
21
21
|
sub ProcessJpeg2000Box($$$);
|
|
22
22
|
sub ProcessJUMD($$$);
|
|
@@ -116,9 +116,6 @@ my %j2cMarker = (
|
|
|
116
116
|
0x76 => 'NLT', # non-linearity point transformation
|
|
117
117
|
);
|
|
118
118
|
|
|
119
|
-
my %jumbfTypes = (
|
|
120
|
-
);
|
|
121
|
-
|
|
122
119
|
# JPEG 2000 "box" (ie. atom) names
|
|
123
120
|
# Note: only tags with a defined "Format" are extracted
|
|
124
121
|
%Image::ExifTool::Jpeg2000::Main = (
|
|
@@ -127,10 +124,13 @@ my %jumbfTypes = (
|
|
|
127
124
|
WRITE_PROC => \&ProcessJpeg2000Box,
|
|
128
125
|
PREFERRED => 1, # always add these tags when writing
|
|
129
126
|
NOTES => q{
|
|
130
|
-
The tags below are
|
|
131
|
-
|
|
132
|
-
tags in Jpeg2000 images.
|
|
127
|
+
The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
|
|
128
|
+
images, but not all of these are extracted. Note that ExifTool currently
|
|
129
|
+
writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
|
|
133
130
|
},
|
|
131
|
+
#
|
|
132
|
+
# NOTE: ONLY TAGS WITH "Format" DEFINED ARE EXTRACTED!
|
|
133
|
+
#
|
|
134
134
|
'jP ' => 'JP2Signature', # (ref 1)
|
|
135
135
|
"jP\x1a\x1a" => 'JP2Signature', # (ref 2)
|
|
136
136
|
prfl => 'Profile',
|
|
@@ -340,10 +340,20 @@ my %jumbfTypes = (
|
|
|
340
340
|
},
|
|
341
341
|
{
|
|
342
342
|
Name => 'UUID-Signature', # (seen in JUMB data of JPEG images)
|
|
343
|
+
# (may be able to remove this when JUMBF specification is finalized)
|
|
343
344
|
Condition => '$$valPt=~/^casg\x00\x11\x00\x10\x80\x00\x00\xaa\x00\x38\x9b\x71/',
|
|
344
345
|
Format => 'undef',
|
|
345
346
|
ValueConv => 'substr($val,16)',
|
|
346
347
|
},
|
|
348
|
+
{
|
|
349
|
+
Name => 'UUID-C2PAClaimSignature', # (seen in incorrectly-formatted JUMB data of JPEG images)
|
|
350
|
+
# (may be able to remove this when JUMBF specification is finalized)
|
|
351
|
+
Condition => '$$valPt=~/^c2cs\x00\x11\x00\x10\x80\x00\x00\xaa\x00\x38\x9b\x71/',
|
|
352
|
+
SubDirectory => {
|
|
353
|
+
TagTable => 'Image::ExifTool::CBOR::Main',
|
|
354
|
+
Start => '$valuePtr + 16',
|
|
355
|
+
},
|
|
356
|
+
},
|
|
347
357
|
{
|
|
348
358
|
Name => 'UUID-Unknown',
|
|
349
359
|
},
|
|
@@ -386,6 +396,27 @@ my %jumbfTypes = (
|
|
|
386
396
|
},
|
|
387
397
|
SubDirectory => { TagTable => 'Image::ExifTool::JSON::Main' },
|
|
388
398
|
},
|
|
399
|
+
cbor => {
|
|
400
|
+
Name => 'CBORData',
|
|
401
|
+
Flags => [ 'Binary', 'Protected' ],
|
|
402
|
+
SubDirectory => { TagTable => 'Image::ExifTool::CBOR::Main' },
|
|
403
|
+
},
|
|
404
|
+
bfdb => { # used in JUMBF (see # (used when tag is renamed according to JUMDLabel)
|
|
405
|
+
Name => 'BinaryDataType',
|
|
406
|
+
Notes => 'JUMBF, MIME type and optional file name',
|
|
407
|
+
Format => 'undef',
|
|
408
|
+
# (ignore "toggles" byte and just extract MIME type and file name)
|
|
409
|
+
ValueConv => '$_=substr($val,1); s/\0+$//; s/\0/, /; $_',
|
|
410
|
+
JUMBF_Suffix => 'Type', # (used when tag is renamed according to JUMDLabel)
|
|
411
|
+
},
|
|
412
|
+
bidb => { # used in JUMBF
|
|
413
|
+
Name => 'BinaryData',
|
|
414
|
+
Notes => 'JUMBF',
|
|
415
|
+
Groups => { 2 => 'Preview' },
|
|
416
|
+
Format => 'undef',
|
|
417
|
+
Binary => 1,
|
|
418
|
+
JUMBF_Suffix => 'Data', # (used when tag is renamed according to JUMDLabel)
|
|
419
|
+
},
|
|
389
420
|
#
|
|
390
421
|
# stuff seen in JPEG XL images:
|
|
391
422
|
#
|
|
@@ -690,6 +721,7 @@ sub ProcessJUMD($$$)
|
|
|
690
721
|
if ($len) {
|
|
691
722
|
$name =~ s/[^-_a-zA-Z0-9]([a-z])/\U$1/g; # capitalize characters after illegal characters
|
|
692
723
|
$name =~ tr/-_a-zA-Z0-9//dc; # remove other illegal characters
|
|
724
|
+
$name =~ s/__/_/; # collapse double underlines
|
|
693
725
|
$name = ucfirst $name; # capitalize first letter
|
|
694
726
|
$name = "Tag$name" if length($name) < 2; # must at least 2 characters long
|
|
695
727
|
$$et{JUMBFLabel} = $name;
|
|
@@ -932,6 +964,14 @@ sub ProcessJpeg2000Box($$$)
|
|
|
932
964
|
}
|
|
933
965
|
}
|
|
934
966
|
}
|
|
967
|
+
# create new tag for JUMBF data values with name corresponding to JUMBFLabel
|
|
968
|
+
if ($tagInfo and $$et{JUMBFLabel} and (not $$tagInfo{SubDirectory} or $$tagInfo{BlockExtract})) {
|
|
969
|
+
$tagInfo = { %$tagInfo, Name => $$et{JUMBFLabel} . ($$tagInfo{JUMBF_Suffix} || '') };
|
|
970
|
+
delete $$tagInfo{Description};
|
|
971
|
+
AddTagToTable($tagTablePtr, '_JUMBF_' . $$et{JUMBFLabel}, $tagInfo);
|
|
972
|
+
delete $$tagInfo{Protected}; # (must do this so -j -b returns JUMBF binary data)
|
|
973
|
+
$$tagInfo{TagID} = $boxID;
|
|
974
|
+
}
|
|
935
975
|
if ($verbose) {
|
|
936
976
|
$et->VerboseInfo($boxID, $tagInfo,
|
|
937
977
|
Table => $tagTablePtr,
|
|
@@ -942,13 +982,6 @@ sub ProcessJpeg2000Box($$$)
|
|
|
942
982
|
);
|
|
943
983
|
next unless $tagInfo;
|
|
944
984
|
}
|
|
945
|
-
# create new tag for JUMBF data values with name corresponding to JUMBFLabel
|
|
946
|
-
if ($$et{JUMBFLabel} and (not $$tagInfo{SubDirectory} or $$tagInfo{BlockExtract})) {
|
|
947
|
-
$tagInfo = { %$tagInfo, Name => $$et{JUMBFLabel} };
|
|
948
|
-
AddTagToTable($tagTablePtr, '_JUMBF_' . $$et{JUMBFLabel}, $tagInfo);
|
|
949
|
-
delete $$tagInfo{Protected}; # (must do this so -j -b returns JUMBF binary data)
|
|
950
|
-
$$tagInfo{TagID} = $boxID;
|
|
951
|
-
}
|
|
952
985
|
if ($$tagInfo{SubDirectory}) {
|
|
953
986
|
my $subdir = $$tagInfo{SubDirectory};
|
|
954
987
|
my $subdirStart = $valuePtr;
|
|
@@ -52,7 +52,7 @@ my %mdDateInfo = (
|
|
|
52
52
|
NOTES => q{
|
|
53
53
|
MDItem tags are extracted using the "mdls" utility. They are extracted if
|
|
54
54
|
any "MDItem*" tag or the MacOS group is specifically requested, or by
|
|
55
|
-
setting the L<MDItemTags|../ExifTool.html#MDItemTags>
|
|
55
|
+
setting the API L<MDItemTags|../ExifTool.html#MDItemTags> option to 1 or the API L<RequestAll|../ExifTool.html#RequestAll> option to 2 or
|
|
56
56
|
higher. Note that these tags do not necessarily reflect the current
|
|
57
57
|
metadata of a file -- it may take some time for the MacOS mdworker daemon to
|
|
58
58
|
index the file after a metadata change.
|
|
@@ -244,7 +244,7 @@ my %mdDateInfo = (
|
|
|
244
244
|
NOTES => q{
|
|
245
245
|
XAttr tags are extracted using the "xattr" utility. They are extracted if
|
|
246
246
|
any "XAttr*" tag or the MacOS group is specifically requested, or by setting
|
|
247
|
-
the L<XAttrTags|../ExifTool.html#XAttrTags>
|
|
247
|
+
the API L<XAttrTags|../ExifTool.html#XAttrTags> option to 1 or the API L<RequestAll|../ExifTool.html#RequestAll> option to 2 or higher.
|
|
248
248
|
And they are extracted by default from MacOS "._" files when reading
|
|
249
249
|
these files directly.
|
|
250
250
|
},
|
|
@@ -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 = '
|
|
65
|
+
$VERSION = '4.00';
|
|
66
66
|
|
|
67
67
|
sub LensIDConv($$$);
|
|
68
68
|
sub ProcessNikonAVI($$$);
|
|
@@ -598,6 +598,7 @@ sub GetAFPointGrid($$;$);
|
|
|
598
598
|
'00 48 5C 8E 30 3C 00 06' => 'Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17NII)', #JD
|
|
599
599
|
'F1 47 5C 8E 30 3C DF 0E' => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)',
|
|
600
600
|
'CF 47 5C 8E 31 3D DF 0E' => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A030)', #forum9773
|
|
601
|
+
'CC 44 68 98 34 41 DF 0E' => 'Tamron 100-400mm f/4.5-6.3 Di VC USD', #30
|
|
601
602
|
'EB 40 76 A6 38 40 DF 0E' => 'Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)',
|
|
602
603
|
'E3 40 76 A6 38 40 DF 4E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #30
|
|
603
604
|
'20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
|
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
40
40
|
use Image::ExifTool::Exif;
|
|
41
41
|
use Image::ExifTool::APP12;
|
|
42
42
|
|
|
43
|
-
$VERSION = '2.
|
|
43
|
+
$VERSION = '2.75';
|
|
44
44
|
|
|
45
45
|
sub PrintLensInfo($$$);
|
|
46
46
|
|
|
@@ -3609,6 +3609,10 @@ my %indexInfo = (
|
|
|
3609
3609
|
Format => 'string[24]',
|
|
3610
3610
|
Groups => { 2 => 'Time' },
|
|
3611
3611
|
},
|
|
3612
|
+
0x17f => {
|
|
3613
|
+
Name => 'LensModel',
|
|
3614
|
+
Format => 'string[32]'
|
|
3615
|
+
},
|
|
3612
3616
|
);
|
|
3613
3617
|
|
|
3614
3618
|
# yet a different "thmb" atom format (PH, E-M5)
|
|
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
|
|
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
38
38
|
use Image::ExifTool::Exif;
|
|
39
39
|
|
|
40
|
-
$VERSION = '2.
|
|
40
|
+
$VERSION = '2.16';
|
|
41
41
|
|
|
42
42
|
sub ProcessLeicaLEIC($$$);
|
|
43
43
|
sub WhiteBalanceConv($;$$);
|
|
@@ -449,7 +449,7 @@ my %shootingMode = (
|
|
|
449
449
|
same as the number printed on the camera body
|
|
450
450
|
},
|
|
451
451
|
PrintConv => q{
|
|
452
|
-
return $val unless $val=~/^([A-Z]
|
|
452
|
+
return $val unless $val=~/^([A-Z][0-9A-Z]{2})(\d{2})(\d{2})(\d{2})(\d{4})/;
|
|
453
453
|
my $yr = $2 + ($2 < 70 ? 2000 : 1900);
|
|
454
454
|
return "($1) $yr:$3:$4 no. $5";
|
|
455
455
|
},
|
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
|
58
58
|
use Image::ExifTool::GPS;
|
|
59
59
|
use Image::ExifTool::HP;
|
|
60
60
|
|
|
61
|
-
$VERSION = '3.
|
|
61
|
+
$VERSION = '3.39';
|
|
62
62
|
|
|
63
63
|
sub CryptShutterCount($$);
|
|
64
64
|
sub PrintFilter($$$);
|
|
@@ -340,6 +340,7 @@ sub DecodeAFPoints($$$$;$);
|
|
|
340
340
|
'8 64' => 'HD PENTAX-D FA* 50mm F1.4 SDM AW', #27
|
|
341
341
|
'8 65' => 'HD PENTAX-D FA 70-210mm F4 ED SDM WR', #PH
|
|
342
342
|
'8 66' => 'HD PENTAX-D FA 85mm F1.4 ED SDM AW', #James O'Neill
|
|
343
|
+
'8 195' => 'HD PENTAX DA* 16-50mm F2.8 ED PLM AW', #27
|
|
343
344
|
'8 196' => 'HD PENTAX-DA* 11-18mm F2.8 ED DC AW', #29
|
|
344
345
|
'8 197' => 'HD PENTAX-DA 55-300mm F4.5-6.3 ED PLM WR RE', #29
|
|
345
346
|
'8 198' => 'smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE', #29
|
|
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
47
47
|
use Image::ExifTool::Exif;
|
|
48
48
|
use Image::ExifTool::GPS;
|
|
49
49
|
|
|
50
|
-
$VERSION = '2.
|
|
50
|
+
$VERSION = '2.70';
|
|
51
51
|
|
|
52
52
|
sub ProcessMOV($$;$);
|
|
53
53
|
sub ProcessKeys($$$);
|
|
@@ -738,6 +738,7 @@ my %eeBox2 = (
|
|
|
738
738
|
Name => 'SamsungTrailer',
|
|
739
739
|
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::Trailer' },
|
|
740
740
|
},
|
|
741
|
+
# 'samn'? - seen in Vantrue N2S sample video
|
|
741
742
|
);
|
|
742
743
|
|
|
743
744
|
# MPEG-4 'ftyp' atom
|
|
@@ -9112,6 +9113,12 @@ sub ProcessMOV($$;$)
|
|
|
9112
9113
|
} else {
|
|
9113
9114
|
my $t = PrintableTagID($tag,2);
|
|
9114
9115
|
$et->VPrint(0,"$$et{INDENT}Tag '${t}' extends to end of file");
|
|
9116
|
+
if ($$tagTablePtr{"$tag-size"}) {
|
|
9117
|
+
my $pos = $raf->Tell();
|
|
9118
|
+
$raf->Seek(0, 2);
|
|
9119
|
+
$et->HandleTag($tagTablePtr, "$tag-size", $raf->Tell() - $pos);
|
|
9120
|
+
$et->HandleTag($tagTablePtr, "$tag-offset", $pos) if $$tagTablePtr{"$tag-offset"};
|
|
9121
|
+
}
|
|
9115
9122
|
}
|
|
9116
9123
|
last;
|
|
9117
9124
|
}
|