exiftool_vendored 11.76.0 → 11.77.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 +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__
|