exiftool_vendored 11.76.0 → 11.77.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +13 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +37 -27
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +2 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +19 -1
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +20 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +58 -14
- data/bin/lib/Image/ExifTool/Sigma.pm +55 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +2130 -2108
- data/bin/lib/Image/ExifTool/TagNames.pod +39 -2
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd451e6596364dc94693d9694471ff7dbcb068ca
|
4
|
+
data.tar.gz: 6bd1bcefaa21900ace822f793e9dde15d3338585
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42be2d0a6ef3f205ce0222cd589509020f58e5033f8b7ad2376a5062ecf88956e568c43c0f4315811f03f27afd5c2128e7c196e4edcf49bf1d57d3d45b8b18fd
|
7
|
+
data.tar.gz: da9ff3fb71a2d837ff7a7a01c5ec80e0d1b44455771421084b8e8422fadcc27ddd5fea2d043027c707a0a53c0612454a59f4e23ad342c17cab8448cc6c431d47
|
data/bin/Changes
CHANGED
@@ -4,9 +4,22 @@ ExifTool Version History
|
|
4
4
|
|
5
5
|
RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
|
6
6
|
|
7
|
+
(I'll be away from Nov 16-24, 2019 so don't expect any updates
|
8
|
+
or email/forum responses during this period. - PH)
|
9
|
+
|
7
10
|
Note: The most recent production release is Version 11.70. (Other versions are
|
8
11
|
considered development releases, and are not uploaded to CPAN.)
|
9
12
|
|
13
|
+
Nov. 27, 2019 - Version 11.77
|
14
|
+
|
15
|
+
- Added a new Nikon LensID (thanks Joe Schonberg)
|
16
|
+
- Added a number of new Olympus LensType values (thanks LibRaw)
|
17
|
+
- Added a new Canon LensType
|
18
|
+
- Decode timed GPS from Ambarella A12 dash cam MP4 videos
|
19
|
+
- Decode a number of new Sigma tags (thanks LibRaw)
|
20
|
+
- Decode a couple of new PanasonicRaw tags (thanks LibRaw)
|
21
|
+
- Enhanced -fileOrder option to add -fast feature
|
22
|
+
|
10
23
|
Nov. 12, 2019 - Version 11.76
|
11
24
|
|
12
25
|
- Added support for the Sony ILCE-9M2 (thanks Jos Roost)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
|
|
104
104
|
terminal window to extract and run ExifTool:
|
105
105
|
|
106
106
|
cd ~/Desktop
|
107
|
-
gzip -dc Image-ExifTool-11.
|
108
|
-
cd Image-ExifTool-11.
|
107
|
+
gzip -dc Image-ExifTool-11.77.tar.gz | tar -xf -
|
108
|
+
cd Image-ExifTool-11.77
|
109
109
|
./exiftool t/images/ExifTool.jpg
|
110
110
|
|
111
111
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
use strict;
|
11
11
|
require 5.004;
|
12
12
|
|
13
|
-
my $version = '11.
|
13
|
+
my $version = '11.77';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -500,6 +500,7 @@ $xml = 0;
|
|
500
500
|
|
501
501
|
# define local variables used only in this command loop
|
502
502
|
my @fileOrder; # tags to use for ordering of input files
|
503
|
+
my $fileOrderFast; # -fast level for -fileOrder option
|
503
504
|
my $addGeotime; # automatically added geotime argument
|
504
505
|
my $doGlob; # flag set to do filename wildcard expansion
|
505
506
|
my $escapeXML; # flag to escape printed values for xml
|
@@ -874,8 +875,10 @@ for (;;) {
|
|
874
875
|
$mt->Options(FastScan => (length $1 ? $1 : 1));
|
875
876
|
next;
|
876
877
|
}
|
877
|
-
if (
|
878
|
+
if (/^fileorder(\d*)$/i) {
|
878
879
|
push @fileOrder, shift if @ARGV;
|
880
|
+
my $num = $1 || 0;
|
881
|
+
$fileOrderFast = $num if not defined $fileOrderFast or $fileOrderFast > $num;
|
879
882
|
next;
|
880
883
|
}
|
881
884
|
$a eq 'globaltimeshift' and $mt->Options(GlobalTimeShift => shift), next;
|
@@ -1672,6 +1675,7 @@ if (@fileOrder) {
|
|
1672
1675
|
my @allFiles;
|
1673
1676
|
ProcessFiles($mt, \@allFiles);
|
1674
1677
|
my $sortTool = new Image::ExifTool;
|
1678
|
+
$sortTool->Options(FastScan => $fileOrderFast) if $fileOrderFast;
|
1675
1679
|
$sortTool->Options(PrintConv => $mt->Options('PrintConv'));
|
1676
1680
|
$sortTool->Options(Duplicates => 0);
|
1677
1681
|
my (%sortBy, %isFloat, @rev, $file);
|
@@ -1913,10 +1917,10 @@ sub GetImageInfo($$)
|
|
1913
1917
|
{
|
1914
1918
|
# set package so eval'd functions are in Image::ExifTool namespace
|
1915
1919
|
package Image::ExifTool;
|
1916
|
-
|
1920
|
+
|
1917
1921
|
#### eval "-if" condition (%info)
|
1918
1922
|
$result = eval $cond;
|
1919
|
-
|
1923
|
+
|
1920
1924
|
$@ and $evalWarning = $@;
|
1921
1925
|
}
|
1922
1926
|
if ($evalWarning) {
|
@@ -4410,7 +4414,7 @@ L<Processing control|/Processing control>
|
|
4410
4414
|
-ext[+] EXT (-extension) Process files with specified extension
|
4411
4415
|
-F[OFFSET] (-fixBase) Fix the base for maker notes offsets
|
4412
4416
|
-fast[NUM] Increase speed when extracting metadata
|
4413
|
-
-fileOrder [-]TAG
|
4417
|
+
-fileOrder[NUM] [-]TAG Set file processing order
|
4414
4418
|
-i DIR (-ignore) Ignore specified directory name
|
4415
4419
|
-if[NUM] EXPR Conditionally process files
|
4416
4420
|
-m (-ignoreMinorErrors) Ignore minor errors and warnings
|
@@ -5176,7 +5180,7 @@ with this command:
|
|
5176
5180
|
|
5177
5181
|
produces output like this:
|
5178
5182
|
|
5179
|
-
-- Generated by ExifTool 11.
|
5183
|
+
-- Generated by ExifTool 11.77 --
|
5180
5184
|
File: a.jpg - 2003:10:31 15:44:19
|
5181
5185
|
(f/5.6, 1/60s, ISO 100)
|
5182
5186
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5574,37 +5578,43 @@ permanently if B<-F> is used when writing EXIF to an image. eg)
|
|
5574
5578
|
|
5575
5579
|
=item B<-fast>[I<NUM>]
|
5576
5580
|
|
5577
|
-
Increase speed of extracting information. With B<-fast
|
5578
|
-
scan to the end of a JPEG image to check for an AFCP or
|
5579
|
-
trailer, or past the first comment in GIF images or the
|
5580
|
-
WAV/AVI files to search for additional metadata. These
|
5581
|
-
small when reading images directly from disk, but can be
|
5582
|
-
piping images through a network connection. For more
|
5583
|
-
benefits, B<-fast2> also causes exiftool to avoid
|
5584
|
-
MakerNote information. B<-fast3> avoids extracting
|
5585
|
-
and returns only pseudo System tags, but still reads
|
5586
|
-
obtain an educated guess at FileType. B<-fast4> doesn't
|
5587
|
-
header, and determines FileType based only on the file
|
5588
|
-
effect when writing.
|
5581
|
+
Increase speed of extracting information. With B<-fast> (or B<-fast1>),
|
5582
|
+
ExifTool will not scan to the end of a JPEG image to check for an AFCP or
|
5583
|
+
PreviewImage trailer, or past the first comment in GIF images or the
|
5584
|
+
audio/video data in WAV/AVI files to search for additional metadata. These
|
5585
|
+
speed benefits are small when reading images directly from disk, but can be
|
5586
|
+
substantial if piping images through a network connection. For more
|
5587
|
+
substantial speed benefits, B<-fast2> also causes exiftool to avoid
|
5588
|
+
extracting any EXIF MakerNote information. B<-fast3> avoids extracting
|
5589
|
+
metadata from the file, and returns only pseudo System tags, but still reads
|
5590
|
+
the file header to obtain an educated guess at FileType. B<-fast4> doesn't
|
5591
|
+
even read the file header, and determines FileType based only on the file
|
5592
|
+
extension. Has no effect when writing.
|
5589
5593
|
|
5590
5594
|
Note that a separate B<-fast> setting may be used for evaluation of a B<-if>
|
5591
|
-
condition
|
5595
|
+
condition, or when ordering files with the B<-fileOrder> option. See the
|
5596
|
+
B<-if> and B<-fileOrder> options for details.
|
5592
5597
|
|
5593
|
-
=item B<-fileOrder> [-]I<TAG>
|
5598
|
+
=item B<-fileOrder>[I<NUM>] [-]I<TAG>
|
5594
5599
|
|
5595
5600
|
Set file processing order according to the sorted value of the specified
|
5596
5601
|
I<TAG>. For example, to process files in order of date:
|
5597
5602
|
|
5598
5603
|
exiftool -fileOrder DateTimeOriginal DIR
|
5599
5604
|
|
5600
|
-
Additional B<-fileOrder> options may be added for secondary sort keys.
|
5605
|
+
Additional B<-fileOrder> options may be added for secondary sort keys.
|
5601
5606
|
Numbers are sorted numerically, and all other values are sorted
|
5602
|
-
alphabetically.
|
5603
|
-
with a C<-> (eg.
|
5604
|
-
|
5605
|
-
|
5606
|
-
|
5607
|
-
|
5607
|
+
alphabetically. Files missing the specified tag are sorted last. The sort
|
5608
|
+
order may be reversed by prefixing the tag name with a C<-> (eg.
|
5609
|
+
C<-fileOrder -createdate>). Print conversion of the sorted values is
|
5610
|
+
disabled with the B<-n> option, or a C<#> appended to the tag name. Other
|
5611
|
+
formatting options (eg. B<-d>) have no effect on the sorted values. Note
|
5612
|
+
that the B<-fileOrder> option can have a large performance impact since it
|
5613
|
+
involves an additional processing pass of each file, but this impact may be
|
5614
|
+
reduced by specifying a I<NUM> for the B<-fast> level used during the
|
5615
|
+
metadata-extraction phase. For example, B<-fileOrder4> may be used if
|
5616
|
+
I<TAG> is a pseudo System tag. If multiple B<-fileOrder> options are used,
|
5617
|
+
the extraction is done at the lowest B<-fast> level.
|
5608
5618
|
|
5609
5619
|
=item B<-i> I<DIR> (B<-ignore>)
|
5610
5620
|
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup $testLen);
|
29
29
|
|
30
|
-
$VERSION = '11.
|
30
|
+
$VERSION = '11.77';
|
31
31
|
$RELEASE = '';
|
32
32
|
@ISA = qw(Exporter);
|
33
33
|
%EXPORT_TAGS = (
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.28';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -550,6 +550,7 @@ $VERSION = '4.27';
|
|
550
550
|
4158 => 'Canon EF-S 18-55mm f/4-5.6 IS STM', #PH
|
551
551
|
4159 => 'Canon EF-M 32mm f/1.4 STM', #42
|
552
552
|
4160 => 'Canon EF-S 35mm f/2.8 Macro IS STM', #42
|
553
|
+
4208 => 'Sigma 56mm f/1.4 DC DN | C', #forum10603
|
553
554
|
# (Nano USM lenses - 0x90xx)
|
554
555
|
36910 => 'Canon EF 70-300mm f/4-5.6 IS II USM', #42
|
555
556
|
36912 => 'Canon EF-S 18-135mm f/3.5-5.6 IS USM', #42
|
@@ -61,7 +61,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
61
61
|
use Image::ExifTool::Exif;
|
62
62
|
use Image::ExifTool::GPS;
|
63
63
|
|
64
|
-
$VERSION = '3.
|
64
|
+
$VERSION = '3.74';
|
65
65
|
|
66
66
|
sub LensIDConv($$$);
|
67
67
|
sub ProcessNikonAVI($$$);
|
@@ -427,6 +427,7 @@ sub GetAFPointGrid($$;$);
|
|
427
427
|
'7A 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC OS HSM',
|
428
428
|
'ED 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC OS HSM', #JD
|
429
429
|
'90 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 II DC OS HSM', #JohnHelour
|
430
|
+
'89 30 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC Macro OS HS | C', #JoeSchonberg
|
430
431
|
'A5 40 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM',
|
431
432
|
# LensFStops varies with FocalLength for this lens (ref 2):
|
432
433
|
'92 2C 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', #2
|
@@ -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.62';
|
43
43
|
|
44
44
|
sub PrintLensInfo($$$);
|
45
45
|
|
@@ -169,6 +169,13 @@ my %olympusLensTypes = (
|
|
169
169
|
'2 26 10' => 'Lumix G 25mm F1.7 Asph.', #NJ
|
170
170
|
'2 27 10' => 'Leica DG Vario-Elmar 100-400mm F4.0-6.3 Asph. Power OIS', #NJ
|
171
171
|
'2 28 10' => 'Lumix G Vario 12-60mm F3.5-5.6 Asph. Power OIS', #NJ
|
172
|
+
'2 29 10' => 'Leica DG Summilux 12mm F1.4 Asph.', #IB
|
173
|
+
'2 30 10' => 'Leica DG Vario-Elmarit 12-60mm F2.8-4 Asph. Power OIS', #IB
|
174
|
+
'2 33 10' => 'Lumix G X Vario 12-35mm F2.8 II Asph. Power OIS', #IB
|
175
|
+
'2 35 10' => 'Leica DG Vario-Elmarit 8-18mm F2.8-4 Asph.', #IB
|
176
|
+
'2 36 10' => 'Leica DG Elmarit 200mm F2.8 Power OIS', #IB
|
177
|
+
'2 37 10' => 'Leica DG Vario-Elmarit 50-200mm F2.8-4 Asph. Power OIS', #IB
|
178
|
+
'2 38 10' => 'Leica DG Vario-Summilux 10-25mm F1.7 Asph.', #IB
|
172
179
|
'3 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.', #11
|
173
180
|
'3 02 00' => 'Leica D Summilux 25mm F1.4 Asph.', #11
|
174
181
|
# Tamron lenses
|
@@ -3908,6 +3915,17 @@ my %indexInfo = (
|
|
3908
3915
|
Image::ExifTool::Exif::ExtractImage($self,$val[0],$val[1],"ZoomedPreviewImage");
|
3909
3916
|
},
|
3910
3917
|
},
|
3918
|
+
# this is actually for PanasonicRaw tags, but it uses the lens lookup here
|
3919
|
+
LensType => {
|
3920
|
+
Require => {
|
3921
|
+
0 => 'LensTypeMake',
|
3922
|
+
1 => 'LensTypeModel',
|
3923
|
+
},
|
3924
|
+
Notes => 'based on tags found in some Panasonic RW2 images',
|
3925
|
+
SeparateTable => 'LensType',
|
3926
|
+
ValueConv => '"$val[0] $val[1]"',
|
3927
|
+
PrintConv => \%olympusLensTypes,
|
3928
|
+
},
|
3911
3929
|
);
|
3912
3930
|
|
3913
3931
|
# add our composite tags
|
@@ -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.24';
|
25
25
|
|
26
26
|
sub ProcessJpgFromRaw($$$);
|
27
27
|
sub WriteJpgFromRaw($$$);
|
@@ -500,7 +500,25 @@ my %panasonicWhiteBalance = ( #forum9396
|
|
500
500
|
Writable => 'int32u',
|
501
501
|
PrintConv => { 0 => 'No', 1 => 'Yes' },
|
502
502
|
},
|
503
|
-
#
|
503
|
+
# Note: LensTypeMake and LensTypeModel are combined into a Composite LensType tag
|
504
|
+
# defined in Olympus.pm which has the same values as Olympus:LensType
|
505
|
+
0x1201 => {
|
506
|
+
Name => 'LensTypeMake',
|
507
|
+
Condition => '$format eq "int16u"',
|
508
|
+
Writable => 'int16u',
|
509
|
+
},
|
510
|
+
0x1202 => {
|
511
|
+
Name => 'LensTypeModel',
|
512
|
+
Condition => '$format eq "int16u"',
|
513
|
+
Writable => 'int16u',
|
514
|
+
RawConv => q{
|
515
|
+
return undef unless $val;
|
516
|
+
require Image::ExifTool::Olympus; # (to load Composite LensID)
|
517
|
+
return $val;
|
518
|
+
},
|
519
|
+
ValueConv => '$_=sprintf("%.4x",$val); s/(..)(..)/$2 $1/; $_',
|
520
|
+
ValueConvInv => '$val =~ s/(..) (..)/$2$1/; hex($val)',
|
521
|
+
},
|
504
522
|
0x1203 => { #4
|
505
523
|
Name => 'FocalLengthIn35mmFormat',
|
506
524
|
Writable => 'int16u',
|
@@ -697,8 +697,40 @@ sub Process_text($$$)
|
|
697
697
|
}
|
698
698
|
return if $found;
|
699
699
|
|
700
|
-
# check for
|
701
|
-
|
700
|
+
# check for enciphered binary GPS data
|
701
|
+
# BlueSkySea:
|
702
|
+
# 0000: 00 00 aa aa aa aa 54 54 98 9a 9b 93 9a 92 98 9a [......TT........]
|
703
|
+
# 0010: 9a 9d 9f 9b 9f 9d aa aa aa aa aa aa aa aa aa aa [................]
|
704
|
+
# 0020: aa aa aa aa aa a9 e4 9e 92 9f 9b 9f 92 9d 99 ef [................]
|
705
|
+
# 0030: 9a 9a 98 9b 93 9d 9d 9c 93 aa aa aa aa aa 9a 99 [................]
|
706
|
+
# 0040: 9b aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa [................]
|
707
|
+
# [...]
|
708
|
+
# decrypted:
|
709
|
+
# 0000: aa aa 00 00 00 00 fe fe 32 30 31 39 30 38 32 30 [........20190820]
|
710
|
+
# 0010: 30 37 35 31 35 37 00 00 00 00 00 00 00 00 00 00 [075157..........]
|
711
|
+
# 0020: 00 00 00 00 00 03 4e 34 38 35 31 35 38 37 33 45 [......N48515873E]
|
712
|
+
# 0030: 30 30 32 31 39 37 37 36 39 00 00 00 00 00 30 33 [002197769.....03]
|
713
|
+
# 0040: 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [1...............]
|
714
|
+
# [...]
|
715
|
+
# Ambarella A12:
|
716
|
+
# 0000: 00 00 f2 e1 f0 ee 54 54 98 9a 9b 93 9b 9b 9b 9c [......TT........]
|
717
|
+
# 0010: 9b 9a 9a 93 9a 9b a6 9a 9b 9b 93 9b 9a 9b 9c 9a [................]
|
718
|
+
# 0020: 9d 9a 92 9f 93 a9 e4 9f 9f 9e 9f 9b 9b 9c 9d ef [................]
|
719
|
+
# 0030: 9a 99 9d 9e 99 9a 9a 9e 9b 81 9a 9b 9f 9d 9a 9a [................]
|
720
|
+
# 0040: 9a 87 9a 9a 9a 87 9a 98 99 87 9a 9a 99 87 9a 9a [................]
|
721
|
+
# [...]
|
722
|
+
# decrypted:
|
723
|
+
# 0000: aa aa 58 4b 5a 44 fe fe 32 30 31 39 31 31 31 36 [..XKZD..20191116]
|
724
|
+
# 0010: 31 30 30 39 30 31 0c 30 31 31 39 31 30 31 36 30 [100901.011910160]
|
725
|
+
# 0020: 37 30 38 35 39 03 4e 35 35 34 35 31 31 36 37 45 [70859.N55451167E]
|
726
|
+
# 0030: 30 33 37 34 33 30 30 34 31 2b 30 31 35 37 30 30 [037430041+015700]
|
727
|
+
# 0040: 30 2d 30 30 30 2d 30 32 33 2d 30 30 33 2d 30 30 [0-000-023-003-00]
|
728
|
+
# [...]
|
729
|
+
# 0100: aa 55 57 ed ed 45 58 54 44 00 01 30 30 30 30 31 [.UW..EXTD..00001]
|
730
|
+
# 0110: 31 30 38 30 30 30 58 00 58 00 58 00 58 00 58 00 [108000X.X.X.X.X.]
|
731
|
+
# 0120: 58 00 58 00 58 00 58 00 00 00 00 00 00 00 00 00 [X.X.X.X.........]
|
732
|
+
# 0130: 00 00 00 00 00 00 00 [.......]
|
733
|
+
if ($$buffPt =~ /^\0\0(..\xaa\xaa|\xf2\xe1\xf0\xee)/s and length $$buffPt >= 282) {
|
702
734
|
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 8, 14)));
|
703
735
|
if ($val =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/) {
|
704
736
|
$tags{GPSDateTime} = "$1:$2:$3 $4:$5:$6";
|
@@ -710,19 +742,31 @@ sub Process_text($$$)
|
|
710
742
|
if ($val =~ /^([EW])(\d{3})(\d+$)$/) {
|
711
743
|
$tags{GPSLongitude} = ($2 + $3 / 600000) * ($1 eq 'W' ? -1 : 1);
|
712
744
|
}
|
713
|
-
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt,
|
714
|
-
$tags{
|
715
|
-
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt,
|
716
|
-
|
717
|
-
|
718
|
-
$tags{
|
745
|
+
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0x39, 5)));
|
746
|
+
$tags{GPSAltitude} = $val + 0 if $val =~ /^[-+]\d+$/;
|
747
|
+
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0x3e, 3)));
|
748
|
+
if ($val =~ /^\d+$/) {
|
749
|
+
$tags{GPSSpeed} = $val + 0;
|
750
|
+
$tags{GPSSpeedRef} = 'K';
|
751
|
+
}
|
752
|
+
if ($$buffPt =~ /^\0\0..\xaa\xaa/s) { # (BlueSkySea)
|
753
|
+
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0xad, 12)));
|
754
|
+
# the first X,Y,Z accelerometer readings from the AccelerometerData
|
755
|
+
if ($val =~ /^([-+]\d{3})([-+]\d{3})([-+]\d{3})$/) {
|
756
|
+
$tags{Accelerometer} = "$1 $2 $3";
|
757
|
+
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0xba, 96)));
|
758
|
+
my $order = GetByteOrder();
|
759
|
+
SetByteOrder('II');
|
760
|
+
$val = ReadValue(\$val, 0, 'float');
|
761
|
+
SetByteOrder($order);
|
762
|
+
$tags{AccelerometerData} = $val;
|
763
|
+
}
|
764
|
+
} else { # (Ambarella)
|
765
|
+
my @acc;
|
766
|
+
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0x41, 195)));
|
767
|
+
push @acc, $1, $2, $3 while $val =~ /\G([-+]\d{3})([-+]\d{3})([-+]\d{3})/g;
|
768
|
+
$tags{Accelerometer} = "@acc" if @acc;
|
719
769
|
}
|
720
|
-
$val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0xba, 96)));
|
721
|
-
my $order = GetByteOrder();
|
722
|
-
SetByteOrder('II');
|
723
|
-
$val = ReadValue(\$val, 0, 'float');
|
724
|
-
SetByteOrder($order);
|
725
|
-
$tags{AccelerometerData} = $val;
|
726
770
|
}
|
727
771
|
}
|
728
772
|
|
@@ -19,7 +19,7 @@ use strict;
|
|
19
19
|
use vars qw($VERSION %sigmaLensTypes);
|
20
20
|
use Image::ExifTool::Exif;
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.30';
|
23
23
|
|
24
24
|
# sigma LensType lookup (ref IB)
|
25
25
|
%sigmaLensTypes = (
|
@@ -762,8 +762,62 @@ $VERSION = '1.29';
|
|
762
762
|
0x0087 => 'ResolutionMode', #PH (Quattro models)
|
763
763
|
0x0088 => 'WhiteBalance', #PH (Quattro models)
|
764
764
|
0x008c => 'Firmware', #PH (Quattro models)
|
765
|
+
0x011f => { #IB (FP DNG images)
|
766
|
+
Name => 'CameraCalibration',
|
767
|
+
Writable => 'float',
|
768
|
+
Count => 9,
|
769
|
+
},
|
770
|
+
0x0120 => { #IB (FP DNG images)
|
771
|
+
Name => 'WBSettings',
|
772
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Sigma::WBSettings' },
|
773
|
+
},
|
774
|
+
0x0121 => { #IB (FP DNG images)
|
775
|
+
Name => 'WBSettings2',
|
776
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Sigma::WBSettings2' },
|
777
|
+
},
|
778
|
+
);
|
779
|
+
|
780
|
+
# WB settings (ref IB)
|
781
|
+
%Image::ExifTool::Sigma::WBSettings = (
|
782
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
783
|
+
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
784
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
785
|
+
WRITABLE => 1,
|
786
|
+
FORMAT => 'float',
|
787
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
788
|
+
0 => { Name => 'WB_RGBLevelsAuto', Format => 'float[3]' },
|
789
|
+
3 => { Name => 'WB_RGBLevelsDaylight', Format => 'float[3]' },
|
790
|
+
6 => { Name => 'WB_RGBLevelsShade', Format => 'float[3]' },
|
791
|
+
9 => { Name => 'WB_RGBLevelsOvercast', Format => 'float[3]' },
|
792
|
+
12 => { Name => 'WB_RGBLevelsIncandescent', Format => 'float[3]' },
|
793
|
+
15 => { Name => 'WB_RGBLevelsFluorescent', Format => 'float[3]' },
|
794
|
+
18 => { Name => 'WB_RGBLevelsFlash', Format => 'float[3]' },
|
795
|
+
21 => { Name => 'WB_RGBLevelsCustom1', Format => 'float[3]' },
|
796
|
+
24 => { Name => 'WB_RGBLevelsCustom2', Format => 'float[3]' },
|
797
|
+
27 => { Name => 'WB_RGBLevelsCustom3', Format => 'float[3]' },
|
798
|
+
);
|
799
|
+
|
800
|
+
# WB settings (ref IB)
|
801
|
+
%Image::ExifTool::Sigma::WBSettings2 = (
|
802
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
803
|
+
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
804
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
805
|
+
WRITABLE => 1,
|
806
|
+
FORMAT => 'float',
|
807
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
808
|
+
0 => { Name => 'WB_RGBLevelsUnknown0', Unknown => 1, Format => 'float[3]' },
|
809
|
+
3 => { Name => 'WB_RGBLevelsUnknown1', Unknown => 1, Format => 'float[3]' },
|
810
|
+
6 => { Name => 'WB_RGBLevelsUnknown2', Unknown => 1, Format => 'float[3]' },
|
811
|
+
9 => { Name => 'WB_RGBLevelsUnknown3', Unknown => 1, Format => 'float[3]' },
|
812
|
+
12 => { Name => 'WB_RGBLevelsUnknown4', Unknown => 1, Format => 'float[3]' },
|
813
|
+
15 => { Name => 'WB_RGBLevelsUnknown5', Unknown => 1, Format => 'float[3]' },
|
814
|
+
18 => { Name => 'WB_RGBLevelsUnknown6', Unknown => 1, Format => 'float[3]' },
|
815
|
+
21 => { Name => 'WB_RGBLevelsUnknown7', Unknown => 1, Format => 'float[3]' },
|
816
|
+
24 => { Name => 'WB_RGBLevelsUnknown8', Unknown => 1, Format => 'float[3]' },
|
817
|
+
27 => { Name => 'WB_RGBLevelsUnknown9', Unknown => 1, Format => 'float[3]' },
|
765
818
|
);
|
766
819
|
|
820
|
+
|
767
821
|
1; # end
|
768
822
|
|
769
823
|
__END__
|