exiftool_vendored 12.73.0 → 12.74.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 +26 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +49 -40
- data/bin/lib/File/RandomAccess.pm +31 -5
- data/bin/lib/File/RandomAccess.pod +4 -4
- data/bin/lib/Image/ExifTool/7Z.pm +3 -3
- data/bin/lib/Image/ExifTool/AFCP.pm +2 -2
- data/bin/lib/Image/ExifTool/BZZ.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +5 -5
- data/bin/lib/Image/ExifTool/Canon.pm +3 -3
- data/bin/lib/Image/ExifTool/CanonVRD.pm +2 -2
- data/bin/lib/Image/ExifTool/DICOM.pm +2 -2
- data/bin/lib/Image/ExifTool/DNG.pm +4 -4
- data/bin/lib/Image/ExifTool/Exif.pm +2 -2
- data/bin/lib/Image/ExifTool/FLIR.pm +2 -2
- data/bin/lib/Image/ExifTool/Fixup.pm +3 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +3 -3
- data/bin/lib/Image/ExifTool/FujiFilm.pm +8 -3
- data/bin/lib/Image/ExifTool/Geotag.pm +3 -3
- data/bin/lib/Image/ExifTool/HtmlDump.pm +2 -2
- data/bin/lib/Image/ExifTool/ID3.pm +2 -2
- data/bin/lib/Image/ExifTool/Import.pm +5 -5
- data/bin/lib/Image/ExifTool/JSON.pm +2 -2
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +2 -2
- data/bin/lib/Image/ExifTool/MIE.pm +3 -3
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +3 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +3 -3
- data/bin/lib/Image/ExifTool/Ogg.pm +2 -2
- data/bin/lib/Image/ExifTool/PLIST.pm +3 -3
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +3 -3
- data/bin/lib/Image/ExifTool/PhaseOne.pm +2 -2
- data/bin/lib/Image/ExifTool/Photoshop.pm +3 -3
- data/bin/lib/Image/ExifTool/PostScript.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +40 -107
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +8 -6
- data/bin/lib/Image/ExifTool/RSRC.pm +2 -2
- data/bin/lib/Image/ExifTool/Samsung.pm +4 -4
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +3 -3
- data/bin/lib/Image/ExifTool/Sony.pm +3 -3
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5 -5
- data/bin/lib/Image/ExifTool/TagNames.pod +5 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +15 -15
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +4 -2
- data/bin/lib/Image/ExifTool/Writer.pl +66 -42
- data/bin/lib/Image/ExifTool/ZIP.pm +6 -6
- data/bin/lib/Image/ExifTool.pm +27 -23
- data/bin/lib/Image/ExifTool.pod +7 -6
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -24,7 +24,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
24
24
|
use Image::ExifTool::Exif;
|
25
25
|
use Image::ExifTool::GPS;
|
26
26
|
|
27
|
-
$VERSION = '1.
|
27
|
+
$VERSION = '1.23';
|
28
28
|
|
29
29
|
sub ProcessFLIR($$;$);
|
30
30
|
sub ProcessFLIRText($$$);
|
@@ -1468,7 +1468,7 @@ sub ProcessMeasInfo($$$)
|
|
1468
1468
|
sub ProcessFLIR($$;$)
|
1469
1469
|
{
|
1470
1470
|
my ($et, $dirInfo, $tagTablePtr) = @_;
|
1471
|
-
my $raf = $$dirInfo{RAF} ||
|
1471
|
+
my $raf = $$dirInfo{RAF} || File::RandomAccess->new($$dirInfo{DataPt});
|
1472
1472
|
my $verbose = $et->Options('Verbose');
|
1473
1473
|
my $out = $et->Options('TextOut');
|
1474
1474
|
my $base = $raf->Tell();
|
@@ -39,7 +39,7 @@ use Image::ExifTool qw(GetByteOrder SetByteOrder Get32u Get32s Set32u
|
|
39
39
|
Get16u Get16s Set16u);
|
40
40
|
use vars qw($VERSION);
|
41
41
|
|
42
|
-
$VERSION = '1.
|
42
|
+
$VERSION = '1.06';
|
43
43
|
|
44
44
|
sub AddFixup($$;$$);
|
45
45
|
sub ApplyFixup($$);
|
@@ -69,7 +69,7 @@ sub new
|
|
69
69
|
sub Clone($)
|
70
70
|
{
|
71
71
|
my $self = shift;
|
72
|
-
my $clone =
|
72
|
+
my $clone = Image::ExifTool::Fixup->new;
|
73
73
|
$clone->{Start} = $self->{Start};
|
74
74
|
$clone->{Shift} = $self->{Shift};
|
75
75
|
my $phash = $self->{Pointers};
|
@@ -317,7 +317,7 @@ Image::ExifTool::Fixup - Utility to handle pointer fixups
|
|
317
317
|
|
318
318
|
use Image::ExifTool::Fixup;
|
319
319
|
|
320
|
-
$fixup =
|
320
|
+
$fixup = Image::ExifTool::Fixup->new;
|
321
321
|
|
322
322
|
# add a new fixup to a pointer at the specified offset in data
|
323
323
|
$fixup->AddFixup($offset);
|
@@ -22,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
22
22
|
use Image::ExifTool::Exif;
|
23
23
|
use Image::ExifTool::ASF; # for GetGUID()
|
24
24
|
|
25
|
-
$VERSION = '1.
|
25
|
+
$VERSION = '1.48';
|
26
26
|
|
27
27
|
sub ProcessFPX($$);
|
28
28
|
sub ProcessFPXR($$$);
|
@@ -2206,7 +2206,7 @@ sub ProcessFPX($$)
|
|
2206
2206
|
my ($tag, %hier, %objIndex, %loadedDifSect);
|
2207
2207
|
|
2208
2208
|
# handle FPX format in memory from PNG cpIp chunk
|
2209
|
-
$raf or $raf =
|
2209
|
+
$raf or $raf = File::RandomAccess->new($$dirInfo{DataPt});
|
2210
2210
|
|
2211
2211
|
# read header
|
2212
2212
|
return 0 unless $raf->Read($buff,HDR_SIZE) == HDR_SIZE;
|
@@ -2353,7 +2353,7 @@ sub ProcessFPX($$)
|
|
2353
2353
|
$et->Warn('Error loading Mini-FAT stream');
|
2354
2354
|
last;
|
2355
2355
|
}
|
2356
|
-
$miniStream =
|
2356
|
+
$miniStream = File::RandomAccess->new(\$miniStreamBuff);
|
2357
2357
|
}
|
2358
2358
|
|
2359
2359
|
my $tagInfo;
|
@@ -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.92';
|
35
35
|
|
36
36
|
sub ProcessFujiDir($$$);
|
37
37
|
sub ProcessFaceRec($$$);
|
@@ -1187,6 +1187,8 @@ my %faceCategories = (
|
|
1187
1187
|
ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
|
1188
1188
|
PrintConv => '$val=~tr/ /x/; $val',
|
1189
1189
|
},
|
1190
|
+
# 0x112 - int16u[2] same as 0x111 but with width/height swapped?
|
1191
|
+
# 0x113 - int16u[2] same as 0x111?
|
1190
1192
|
0x115 => {
|
1191
1193
|
Name => 'RawImageAspectRatio',
|
1192
1194
|
Format => 'int16u',
|
@@ -1236,6 +1238,7 @@ my %faceCategories = (
|
|
1236
1238
|
Count => 36,
|
1237
1239
|
PrintConv => '$val =~ tr/012 /RGB/d; join " ", $val =~ /....../g',
|
1238
1240
|
},
|
1241
|
+
# 0x141 - int16u[2] Bit depth? "14 42" for 14-bit RAF and "16 48" for 16-bit RAF
|
1239
1242
|
0x2000 => { #IB
|
1240
1243
|
Name => 'WB_GRGBLevelsAuto',
|
1241
1244
|
Format => 'int16u',
|
@@ -1408,6 +1411,8 @@ my %faceCategories = (
|
|
1408
1411
|
0xf00e => 'WB_GRBLevels',
|
1409
1412
|
0xf00f => 'ChromaticAberrationParams', # (rational64s[23])
|
1410
1413
|
0xf010 => 'VignettingParams', #9 (rational64s[31 or 64])
|
1414
|
+
# 0xf013 - int32u[3] same as 0xf00d
|
1415
|
+
# 0xf014 - int32u[3] - also related to WhiteBalance
|
1411
1416
|
);
|
1412
1417
|
|
1413
1418
|
# information found in FFMV atom of MOV videos
|
@@ -1688,7 +1693,7 @@ sub WriteRAF($$)
|
|
1688
1693
|
# rewrite the embedded JPEG in memory
|
1689
1694
|
my %jpegInfo = (
|
1690
1695
|
Parent => 'RAF',
|
1691
|
-
RAF =>
|
1696
|
+
RAF => File::RandomAccess->new(\$jpeg),
|
1692
1697
|
OutFile => \$outJpeg,
|
1693
1698
|
);
|
1694
1699
|
$$et{FILE_TYPE} = 'JPEG';
|
@@ -1792,7 +1797,7 @@ sub ProcessRAF($$)
|
|
1792
1797
|
# extract information from embedded JPEG
|
1793
1798
|
my %dirInfo = (
|
1794
1799
|
Parent => 'RAF',
|
1795
|
-
RAF =>
|
1800
|
+
RAF => File::RandomAccess->new(\$jpeg),
|
1796
1801
|
);
|
1797
1802
|
if ($jpos) {
|
1798
1803
|
$$et{BASE} += $jpos;
|
@@ -29,7 +29,7 @@ use vars qw($VERSION);
|
|
29
29
|
use Image::ExifTool qw(:Public);
|
30
30
|
use Image::ExifTool::GPS;
|
31
31
|
|
32
|
-
$VERSION = '1.
|
32
|
+
$VERSION = '1.74';
|
33
33
|
|
34
34
|
sub JITTER() { return 2 } # maximum time jitter
|
35
35
|
|
@@ -174,7 +174,7 @@ sub LoadTrackLog($$;$)
|
|
174
174
|
# $val is track file name
|
175
175
|
if ($et->Open(\*EXIFTOOL_TRKFILE, $val)) {
|
176
176
|
$trackFile = $val;
|
177
|
-
$raf =
|
177
|
+
$raf = File::RandomAccess->new(\*EXIFTOOL_TRKFILE);
|
178
178
|
unless ($raf->Read($_, 256)) {
|
179
179
|
close EXIFTOOL_TRKFILE;
|
180
180
|
return "Empty track file '${val}'";
|
@@ -202,7 +202,7 @@ sub LoadTrackLog($$;$)
|
|
202
202
|
}
|
203
203
|
unless ($from) {
|
204
204
|
# set up RAF for reading log file in memory
|
205
|
-
$raf =
|
205
|
+
$raf = File::RandomAccess->new(\$val);
|
206
206
|
$from = 'data';
|
207
207
|
}
|
208
208
|
|
@@ -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.40';
|
17
17
|
|
18
18
|
sub DumpTable($$$;$$$$$$);
|
19
19
|
sub Open($$$;@);
|
@@ -894,7 +894,7 @@ Image::ExifTool::HtmlDump - Dump information in hex to HTML page
|
|
894
894
|
=head1 SYNOPSIS
|
895
895
|
|
896
896
|
use Image::ExifTool::HtmlDump;
|
897
|
-
my $dump =
|
897
|
+
my $dump = Image::ExifTool::HtmlDump->new;
|
898
898
|
$dump->Add($start, $size, $comment);
|
899
899
|
$dump->Print($dumpInfo, $raf, $dataPt, $dataPos, $outfile);
|
900
900
|
|
@@ -18,7 +18,7 @@ use strict;
|
|
18
18
|
use vars qw($VERSION);
|
19
19
|
use Image::ExifTool qw(:DataAccess :Utils);
|
20
20
|
|
21
|
-
$VERSION = '1.
|
21
|
+
$VERSION = '1.61';
|
22
22
|
|
23
23
|
sub ProcessID3v2($$$);
|
24
24
|
sub ProcessPrivate($$$);
|
@@ -1408,7 +1408,7 @@ sub ProcessID3($$)
|
|
1408
1408
|
$$et{DoneID3} = 1;
|
1409
1409
|
|
1410
1410
|
# allow this to be called with either RAF or DataPt
|
1411
|
-
my $raf = $$dirInfo{RAF} ||
|
1411
|
+
my $raf = $$dirInfo{RAF} || File::RandomAccess->new($$dirInfo{DataPt});
|
1412
1412
|
my ($buff, %id3Header, %id3Trailer, $hBuff, $tBuff, $eBuff, $tagTablePtr);
|
1413
1413
|
my $rtnVal = 0;
|
1414
1414
|
my $hdrEnd = 0;
|
@@ -12,7 +12,7 @@ require Exporter;
|
|
12
12
|
|
13
13
|
use vars qw($VERSION @ISA @EXPORT_OK);
|
14
14
|
|
15
|
-
$VERSION = '1.
|
15
|
+
$VERSION = '1.11';
|
16
16
|
@ISA = qw(Exporter);
|
17
17
|
@EXPORT_OK = qw(ReadCSV ReadJSON);
|
18
18
|
|
@@ -38,13 +38,13 @@ sub ReadCSV($$;$$)
|
|
38
38
|
$raf = $file;
|
39
39
|
$file = 'CSV file';
|
40
40
|
} elsif (ref $file eq 'GLOB') {
|
41
|
-
$raf =
|
41
|
+
$raf = File::RandomAccess->new($file);
|
42
42
|
$file = 'CSV file';
|
43
43
|
} else {
|
44
44
|
open CSVFILE, $file or return "Error opening CSV file '${file}'";
|
45
45
|
binmode CSVFILE;
|
46
46
|
$openedFile = 1;
|
47
|
-
$raf =
|
47
|
+
$raf = File::RandomAccess->new(\*CSVFILE);
|
48
48
|
}
|
49
49
|
$delim = ',' unless defined $delim;
|
50
50
|
# set input record separator by first newline found in the file
|
@@ -253,13 +253,13 @@ sub ReadJSON($$;$$)
|
|
253
253
|
$raf = $file;
|
254
254
|
$file = 'JSON file';
|
255
255
|
} elsif (ref $file eq 'GLOB') {
|
256
|
-
$raf =
|
256
|
+
$raf = File::RandomAccess->new($file);
|
257
257
|
$file = 'JSON file';
|
258
258
|
} else {
|
259
259
|
open JSONFILE, $file or return "Error opening JSON file '${file}'";
|
260
260
|
binmode JSONFILE;
|
261
261
|
$openedFile = 1;
|
262
|
-
$raf =
|
262
|
+
$raf = File::RandomAccess->new(\*JSONFILE);
|
263
263
|
}
|
264
264
|
my $obj = ReadJSONObject($raf);
|
265
265
|
close JSONFILE if $openedFile;
|
@@ -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.07';
|
18
18
|
|
19
19
|
sub ProcessJSON($$);
|
20
20
|
sub ProcessTag($$$$%);
|
@@ -120,7 +120,7 @@ sub ProcessJSON($$)
|
|
120
120
|
my $buff = substr(${$$dirInfo{DataPt}}, $$dirInfo{DirStart}, $$dirInfo{DirLen});
|
121
121
|
$dataPt = \$buff;
|
122
122
|
}
|
123
|
-
$raf =
|
123
|
+
$raf = File::RandomAccess->new($dataPt);
|
124
124
|
# extract as a block if requested
|
125
125
|
my $blockName = $$dirInfo{BlockInfo} ? $$dirInfo{BlockInfo}{Name} : '';
|
126
126
|
my $blockExtract = $et->Options('BlockExtract');
|
@@ -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.38';
|
20
20
|
|
21
21
|
sub ProcessJpeg2000Box($$$);
|
22
22
|
sub ProcessJUMD($$$);
|
@@ -1583,7 +1583,7 @@ sub ProcessJXL($$)
|
|
1583
1583
|
$$et{IsJXL} = 2;
|
1584
1584
|
my $buff = "\0\0\0\x0cJXL \x0d\x0a\x87\x0a\0\0\0\x14ftypjxl \0\0\0\0jxl ";
|
1585
1585
|
# add metadata to empty ISO BMFF container
|
1586
|
-
$$dirInfo{RAF} =
|
1586
|
+
$$dirInfo{RAF} = File::RandomAccess->new(\$buff);
|
1587
1587
|
} else {
|
1588
1588
|
$et->SetFileType('JXL Codestream','image/jxl', 'jxl');
|
1589
1589
|
if ($$et{ImageDataHash} and $raf->Seek(0,0)) {
|
@@ -14,7 +14,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
14
14
|
use Image::ExifTool::Exif;
|
15
15
|
use Image::ExifTool::GPS;
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.53';
|
18
18
|
|
19
19
|
sub ProcessMIE($$);
|
20
20
|
sub ProcessMIEGroup($$$);
|
@@ -1077,7 +1077,7 @@ sub WriteMIEGroup($$$)
|
|
1077
1077
|
$newVal = '';
|
1078
1078
|
%subdirInfo = (
|
1079
1079
|
OutFile => \$newVal,
|
1080
|
-
RAF =>
|
1080
|
+
RAF => File::RandomAccess(\$oldVal)->new,
|
1081
1081
|
);
|
1082
1082
|
} elsif ($optCompress and not $$dirInfo{IsCompressed}) {
|
1083
1083
|
# write to memory so we can compress the new MIE group
|
@@ -1585,7 +1585,7 @@ sub ProcessMIEGroup($$$)
|
|
1585
1585
|
WasCompressed => $wasCompressed,
|
1586
1586
|
);
|
1587
1587
|
# read from uncompressed data instead if necessary
|
1588
|
-
$subdirInfo{RAF} =
|
1588
|
+
$subdirInfo{RAF} = File::RandomAccess(\$value)->new if $valLen;
|
1589
1589
|
|
1590
1590
|
my $oldOrder = GetByteOrder();
|
1591
1591
|
SetByteOrder($format & 0x08 ? 'II' : 'MM');
|
@@ -17,7 +17,7 @@ use vars qw($VERSION);
|
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
18
18
|
use Image::ExifTool::Minolta;
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.20';
|
21
21
|
|
22
22
|
sub ProcessMRW($$;$);
|
23
23
|
sub WriteMRW($$;$);
|
@@ -400,7 +400,7 @@ sub ProcessMRW($$;$)
|
|
400
400
|
|
401
401
|
if ($$dirInfo{DataPt}) {
|
402
402
|
# make a RAF object for MRW information extracted from other file types
|
403
|
-
$raf =
|
403
|
+
$raf = File::RandomAccess->new($$dirInfo{DataPt});
|
404
404
|
# MRW information in DNG images may not start at beginning of data block
|
405
405
|
$raf->Seek($$dirInfo{DirStart}, 0) if $$dirInfo{DirStart};
|
406
406
|
}
|
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
|
|
65
65
|
use Image::ExifTool::GPS;
|
66
66
|
use Image::ExifTool::XMP;
|
67
67
|
|
68
|
-
$VERSION = '4.
|
68
|
+
$VERSION = '4.30';
|
69
69
|
|
70
70
|
sub LensIDConv($$$);
|
71
71
|
sub ProcessNikonAVI($$$);
|
@@ -677,6 +677,7 @@ sub GetAFPointGrid($$;$);
|
|
677
677
|
'71 48 64 64 24 24 00 00' => 'Voigtlander APO-Skopar 90mm F2.8 SL IIs', #30
|
678
678
|
'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
|
679
679
|
'FD 00 44 44 18 18 DF 00' => 'Voigtlander APO-Lanthar 35mm F2', #30
|
680
|
+
'FD 00 59 59 18 18 DF 00' => 'Voigtlander Macro APO-Lanthar 65mm F2', #30
|
680
681
|
#
|
681
682
|
'00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
|
682
683
|
'00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
|
@@ -690,6 +691,7 @@ sub GetAFPointGrid($$;$);
|
|
690
691
|
'00 54 62 62 0C 0C 00 00' => 'Carl Zeiss Planar T* 1.4/85 ZF.2',
|
691
692
|
'00 54 68 68 18 18 00 00' => 'Carl Zeiss Makro-Planar T* 2/100 ZF.2',
|
692
693
|
'00 54 72 72 18 18 00 00' => 'Carl Zeiss Apo Sonnar T* 2/135 ZF.2',
|
694
|
+
'02 54 3C 3C 0C 0C 00 00' => 'Zeiss Otus 1.4/28 ZF.2', #30
|
693
695
|
'00 54 53 53 0C 0C 00 00' => 'Zeiss Otus 1.4/55', #IB
|
694
696
|
'01 54 62 62 0C 0C 00 00' => 'Zeiss Otus 1.4/85',
|
695
697
|
'03 54 68 68 0C 0C 00 00' => 'Zeiss Otus 1.4/100', #IB
|
@@ -9852,7 +9852,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
9852
9852
|
85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
|
9853
9853
|
87 => { # CSe2
|
9854
9854
|
Name => 'FlashShutterSpeed',
|
9855
|
-
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to
|
9855
|
+
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
|
9856
9856
|
PrintConv => {
|
9857
9857
|
0 => '1 s',
|
9858
9858
|
1 => '1/2 s',
|
@@ -10242,7 +10242,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10242
10242
|
85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
|
10243
10243
|
87 => { # CSe2
|
10244
10244
|
Name => 'FlashShutterSpeed',
|
10245
|
-
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to
|
10245
|
+
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
|
10246
10246
|
PrintConv => {
|
10247
10247
|
0 => '1 s',
|
10248
10248
|
1 => '1/2 s',
|
@@ -10652,7 +10652,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10652
10652
|
85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
|
10653
10653
|
87 => { # CSe2
|
10654
10654
|
Name => 'FlashShutterSpeed',
|
10655
|
-
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to
|
10655
|
+
ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
|
10656
10656
|
PrintConv => {
|
10657
10657
|
0 => '1 s',
|
10658
10658
|
1 => '1/2 s',
|
@@ -17,7 +17,7 @@ use strict;
|
|
17
17
|
use vars qw($VERSION);
|
18
18
|
use Image::ExifTool qw(:DataAccess :Utils);
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.03';
|
21
21
|
|
22
22
|
my $MAX_PACKETS = 2; # maximum packets to scan from each stream at start of file
|
23
23
|
|
@@ -189,7 +189,7 @@ sub ProcessOGG($$)
|
|
189
189
|
if (defined $numFlac and defined $val{$stream}) {
|
190
190
|
# process FLAC headers as if it was a complete FLAC file
|
191
191
|
require Image::ExifTool::FLAC;
|
192
|
-
my %dirInfo = ( RAF =>
|
192
|
+
my %dirInfo = ( RAF => File::RandomAccess->new(\$val{$stream}) );
|
193
193
|
Image::ExifTool::FLAC::ProcessFLAC($et, \%dirInfo);
|
194
194
|
}
|
195
195
|
return $success;
|
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
21
|
use Image::ExifTool::XMP;
|
22
22
|
use Image::ExifTool::GPS;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.12';
|
25
25
|
|
26
26
|
sub ExtractObject($$;$);
|
27
27
|
sub Get24u($$);
|
@@ -351,9 +351,9 @@ sub ProcessBinaryPLIST($$;$)
|
|
351
351
|
my $start = $$dirInfo{DirStart};
|
352
352
|
if ($start or ($$dirInfo{DirLen} and $$dirInfo{DirLen} != length $$dataPt)) {
|
353
353
|
my $buf2 = substr($$dataPt, $start || 0, $$dirInfo{DirLen});
|
354
|
-
$$dirInfo{RAF} =
|
354
|
+
$$dirInfo{RAF} = File::RandomAccess->new(\$buf2);
|
355
355
|
} else {
|
356
|
-
$$dirInfo{RAF} =
|
356
|
+
$$dirInfo{RAF} = File::RandomAccess->new($dataPt);
|
357
357
|
}
|
358
358
|
my $strt = $$dirInfo{DirStart} || 0;
|
359
359
|
}
|
@@ -21,7 +21,7 @@ use vars qw($VERSION);
|
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
22
22
|
use Image::ExifTool::Exif;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.29';
|
25
25
|
|
26
26
|
sub ProcessJpgFromRaw($$$);
|
27
27
|
sub WriteJpgFromRaw($$$);
|
@@ -839,7 +839,7 @@ sub WriteJpgFromRaw($$$)
|
|
839
839
|
my $buff = substr($$dataPt, $dirStart, $dirLen);
|
840
840
|
$dataPt = \$buff;
|
841
841
|
}
|
842
|
-
my $raf =
|
842
|
+
my $raf = File::RandomAccess->new($dataPt);
|
843
843
|
my $outbuff;
|
844
844
|
my %dirInfo = (
|
845
845
|
RAF => $raf,
|
@@ -890,7 +890,7 @@ sub ProcessJpgFromRaw($$$)
|
|
890
890
|
# extract information from embedded JPEG
|
891
891
|
my %dirInfo = (
|
892
892
|
Parent => 'RAF',
|
893
|
-
RAF =>
|
893
|
+
RAF => File::RandomAccess->new($dataPt),
|
894
894
|
);
|
895
895
|
if ($verbose) {
|
896
896
|
my $indent = $$et{INDENT};
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.10';
|
19
19
|
|
20
20
|
sub WritePhaseOne($$$);
|
21
21
|
sub ProcessPhaseOne($$$);
|
@@ -473,7 +473,7 @@ sub WritePhaseOne($$$)
|
|
473
473
|
return undef if $numEntries < 2 or $numEntries > 300 or $ifdEnd > $dirLen;
|
474
474
|
my $hdrBuff = $hdr;
|
475
475
|
my $valBuff = ''; # buffer for value data
|
476
|
-
my $fixup =
|
476
|
+
my $fixup = Image::ExifTool::Fixup->new;
|
477
477
|
my $index;
|
478
478
|
for ($index=0; $index<$numEntries; ++$index) {
|
479
479
|
my $entry = $dirStart + $ifdStart + 8 + $entrySize * $index;
|
@@ -28,7 +28,7 @@ use strict;
|
|
28
28
|
use vars qw($VERSION $AUTOLOAD $iptcDigestInfo %printFlags);
|
29
29
|
use Image::ExifTool qw(:DataAccess :Utils);
|
30
30
|
|
31
|
-
$VERSION = '1.
|
31
|
+
$VERSION = '1.70';
|
32
32
|
|
33
33
|
sub ProcessPhotoshop($$$);
|
34
34
|
sub WritePhotoshop($$$);
|
@@ -70,7 +70,7 @@ my %thumbnailInfo = (
|
|
70
70
|
Protected => 1,
|
71
71
|
RawConv => 'my $img=substr($val,0x1c); $self->ValidateImage(\$img,$tag)',
|
72
72
|
ValueConvInv => q{
|
73
|
-
my $et =
|
73
|
+
my $et = Image::ExifTool->new;
|
74
74
|
my @tags = qw{ImageWidth ImageHeight FileType};
|
75
75
|
my $info = $et->ImageInfo(\$val, @tags);
|
76
76
|
my ($w, $h, $type) = @$info{@tags};
|
@@ -892,7 +892,7 @@ sub ProcessDocumentData($$$)
|
|
892
892
|
unless ($raf) {
|
893
893
|
my $dataPt = $$dirInfo{DataPt};
|
894
894
|
my $start = $$dirInfo{DirStart} || 0;
|
895
|
-
$raf =
|
895
|
+
$raf = File::RandomAccess->new($dataPt);
|
896
896
|
$raf->Seek($start, 0) if $start;
|
897
897
|
$dirLen = length $$dataPt - $start unless defined $dirLen;
|
898
898
|
$et->VerboseDump($dataPt, Start => $start, Len => $dirLen, Base => $$dirInfo{Base});
|
@@ -16,7 +16,7 @@ use strict;
|
|
16
16
|
use vars qw($VERSION $AUTOLOAD);
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.45';
|
20
20
|
|
21
21
|
sub WritePS($$);
|
22
22
|
sub ProcessPS($$;$);
|
@@ -430,7 +430,7 @@ sub ProcessPS($$;$)
|
|
430
430
|
|
431
431
|
# allow read from data
|
432
432
|
unless ($raf) {
|
433
|
-
$raf =
|
433
|
+
$raf = File::RandomAccess->new($$dirInfo{DataPt});
|
434
434
|
$et->VerboseDir('PostScript');
|
435
435
|
}
|
436
436
|
#
|