exiftool_vendored 12.73.0 → 12.74.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
#
|