exiftool_vendored 13.29.0 → 13.30.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 +24 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/config_files/pix4d.config +9 -8
- data/bin/exiftool +7 -4
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +3 -1
- data/bin/lib/Image/ExifTool/Exif.pm +3 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- data/bin/lib/Image/ExifTool/LigoGPS.pm +2 -2
- data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -3
- data/bin/lib/Image/ExifTool/Olympus.pm +5 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +51 -11
- data/bin/lib/Image/ExifTool/QuickTime.pm +21 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +10 -0
- data/bin/lib/Image/ExifTool/Sigma.pm +12 -4
- data/bin/lib/Image/ExifTool/Sony.pm +3 -3
- data/bin/lib/Image/ExifTool/TagLookup.pm +3735 -3729
- data/bin/lib/Image/ExifTool/TagNames.pod +17 -4
- data/bin/lib/Image/ExifTool/Writer.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +6 -5
- 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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 407bb495700282a96cd7754a1e9ce3a6a7dcf4813d87e827aaee71072c30c3db
|
4
|
+
data.tar.gz: 062ad0aa55b80eec46031dbc893626cd378be12829be2cd70752170f8084e52a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aee8809f7201113e2d5d4e0af3818fc9a2d6336b6300adc85406d55bc18af20e5e6944b6370caff28e4d472a80d8d35f4e182782bfb96b96c52f73daeb8c6438
|
7
|
+
data.tar.gz: 8926eb6ea49420269786c0addbdc87e4c0fe3aa19e113369e7591bf59bed98308494de80a797c8e9b3c6941d580ade0e210680960ebc2513c13d67d446e7cd33
|
data/bin/Changes
CHANGED
@@ -4,9 +4,32 @@ ExifTool Version History
|
|
4
4
|
|
5
5
|
RSS feed: https://exiftool.org/rss.xml
|
6
6
|
|
7
|
-
Note: The most recent production release is Version 13.
|
7
|
+
Note: The most recent production release is Version 13.30. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
May 22, 2025 - Version 13.30 (production release)
|
11
|
+
|
12
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
13
|
+
- Added some new Olympus ArtFilter values
|
14
|
+
- Added support for reading timed GPS from Transcend Drive Body Camera 70 MP4
|
15
|
+
videos
|
16
|
+
- Added a new FujiFilm AdvancedFilter value (thanks Greybeard)
|
17
|
+
- Decode maker notes from Sigma BF images
|
18
|
+
- Decode a few more Pentax AF-related tags (thanks Karsten Gieselmann)
|
19
|
+
- Extract PreviewImage and its metadata from Sigma BF MOV videos
|
20
|
+
- Allow multiple config files to be specified on the command line (but leave
|
21
|
+
undocumented for now because the config files currently included in the full
|
22
|
+
ExifTool package aren't compatible with this feature)
|
23
|
+
- Removed warning introduced in version 12.60 for an undefined tag in a -if
|
24
|
+
condition, but leave the 12.60 change that sets these tags to an empty
|
25
|
+
string when -m is used
|
26
|
+
- Patched LensID conversion to better handle a manual lens on a Sony ILCE-7M2
|
27
|
+
- Patched to avoid runtime warning when using -fast option and reading and
|
28
|
+
HEIC file via a pipe (but you will still get a seek error)
|
29
|
+
- Fixed some tag format types in the config_files/pix4d.config file
|
30
|
+
- Fixed possible "uninitialized value" warning when reading some types of Ligo
|
31
|
+
timed GPS
|
32
|
+
|
10
33
|
Apr. 27, 2025 - Version 13.29
|
11
34
|
|
12
35
|
- Changed default -geotime argument to use SubSecDateTimeOriginal if available
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
|
|
109
109
|
terminal window to extract and run ExifTool:
|
110
110
|
|
111
111
|
cd ~/Desktop
|
112
|
-
gzip -dc Image-ExifTool-13.
|
113
|
-
cd Image-ExifTool-13.
|
112
|
+
gzip -dc Image-ExifTool-13.30.tar.gz | tar -xf -
|
113
|
+
cd Image-ExifTool-13.30
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
115
115
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
@@ -8,10 +8,11 @@
|
|
8
8
|
#
|
9
9
|
# Requires: ExifTool version 7.00 or later
|
10
10
|
#
|
11
|
-
# References: 1) https://support.pix4d.com/hc/en-us/articles/360016450032
|
11
|
+
# References: 1) https://support.pix4d.com/hc/en-us/articles/360016450032
|
12
12
|
#
|
13
13
|
# Revisions: 2017/12/08 - P. Harvey Created
|
14
14
|
# 2020/04/02 - PH Updated to current specification
|
15
|
+
# 2025/05/01 - PH Changed some Writable types to match the spec
|
15
16
|
#------------------------------------------------------------------------------
|
16
17
|
|
17
18
|
%Image::ExifTool::UserDefined = (
|
@@ -40,8 +41,8 @@
|
|
40
41
|
PerspectiveFocalLength => { Writable => 'real' },
|
41
42
|
PerspectiveDistortion => { },
|
42
43
|
IMULinearVelocity => { },
|
43
|
-
GPSXYAccuracy => { Writable => '
|
44
|
-
GPSZAccuracy => { Writable => '
|
44
|
+
GPSXYAccuracy => { Writable => 'rational' },
|
45
|
+
GPSZAccuracy => { Writable => 'rational' },
|
45
46
|
FlightUUID => { },
|
46
47
|
CentralWaveLength => { },
|
47
48
|
BandName => { List => 'Seq' },
|
@@ -77,11 +78,11 @@
|
|
77
78
|
Albedo => { List => 'Seq' },
|
78
79
|
ReflectArea => { List => 'Seq' },
|
79
80
|
CalibrationPicture => { Writable => 'integer' },
|
80
|
-
GyroRate => { Writable => '
|
81
|
-
IMUPitchAccuracy => { Writable => '
|
82
|
-
IMURollAccuracy => { Writable => '
|
83
|
-
IMUYawAccuracy => { Writable => '
|
84
|
-
NominalCameraDistance => { Writable => '
|
81
|
+
GyroRate => { Writable => 'rational' },
|
82
|
+
IMUPitchAccuracy => { Writable => 'rational' },
|
83
|
+
IMURollAccuracy => { Writable => 'rational' },
|
84
|
+
IMUYawAccuracy => { Writable => 'rational' },
|
85
|
+
NominalCameraDistance => { Writable => 'rational' },
|
85
86
|
AboveGroundAltitude => { Writable => 'real' },
|
86
87
|
SunSensorYaw => { Writable => 'real' },
|
87
88
|
SunSensorPitch => { Writable => 'real' },
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.30';
|
15
15
|
|
16
16
|
$^W = 1; # enable global warnings
|
17
17
|
|
@@ -35,9 +35,9 @@ BEGIN {
|
|
35
35
|
# add lib directory at start of include path
|
36
36
|
unshift @INC, $incDir;
|
37
37
|
# load or disable config file if specified
|
38
|
-
|
38
|
+
while (@ARGV and lc($ARGV[0]) eq '-config') {
|
39
39
|
shift;
|
40
|
-
|
40
|
+
push @Image::ExifTool::configFiles, shift;
|
41
41
|
}
|
42
42
|
}
|
43
43
|
use Image::ExifTool qw{:Public};
|
@@ -6052,7 +6052,7 @@ with this command:
|
|
6052
6052
|
|
6053
6053
|
produces output like this:
|
6054
6054
|
|
6055
|
-
-- Generated by ExifTool 13.
|
6055
|
+
-- Generated by ExifTool 13.30 --
|
6056
6056
|
File: a.jpg - 2003:10:31 15:44:19
|
6057
6057
|
(f/5.6, 1/60s, ISO 100)
|
6058
6058
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -7150,6 +7150,9 @@ accessing tags from the corresponding C<FileNUM> group.
|
|
7150
7150
|
User-defined Composite tags may access tags from alternate files using the
|
7151
7151
|
appropriate (case-sensitive) family 8 group name.
|
7152
7152
|
|
7153
|
+
The B<-fast> option, if used, also applies to processing of the alternate
|
7154
|
+
files.
|
7155
|
+
|
7153
7156
|
=item B<-list_dir>
|
7154
7157
|
|
7155
7158
|
List directories themselves instead of their contents. This option
|
@@ -995,7 +995,7 @@ TagID: foreach $tagID (@keys) {
|
|
995
995
|
if ($format and $format =~ /\$val\{/ and
|
996
996
|
($$tagInfo{Writable} or not defined $$tagInfo{Writable}))
|
997
997
|
{
|
998
|
-
warn "Warning: \$
|
998
|
+
warn "Warning: \$val{} used in Format of writable tag - $short $name\n"
|
999
999
|
}
|
1000
1000
|
}
|
1001
1001
|
if ($$tagInfo{Hidden}) {
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.91';
|
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)
|
@@ -638,6 +638,7 @@ $VERSION = '4.90';
|
|
638
638
|
'61182.60' => 'Canon RF 16-28mm F2.8 IS STM', #42
|
639
639
|
'61182.61' => 'Canon RF 50mm F1.4 L VCM', #42
|
640
640
|
'61182.62' => 'Canon RF 24mm F1.4 L VCM', #42
|
641
|
+
'61182.63' => 'Canon RF 20mm F1.4 L VCM', #42
|
641
642
|
65535 => 'n/a',
|
642
643
|
);
|
643
644
|
|
@@ -7033,6 +7034,7 @@ my %ciMaxFocal = (
|
|
7033
7034
|
323 => 'Canon RF 16-28mm F2.8 IS STM', #42
|
7034
7035
|
325 => 'Canon RF 50mm F1.4 L VCM', #42
|
7035
7036
|
326 => 'Canon RF 24mm F1.4 L VCM', #42
|
7037
|
+
327 => 'Canon RF 20mm F1.4 L VCM', #42
|
7036
7038
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
7037
7039
|
},
|
7038
7040
|
},
|
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
57
57
|
use Image::ExifTool qw(:DataAccess :Utils);
|
58
58
|
use Image::ExifTool::MakerNotes;
|
59
59
|
|
60
|
-
$VERSION = '4.
|
60
|
+
$VERSION = '4.57';
|
61
61
|
|
62
62
|
sub ProcessExif($$$);
|
63
63
|
sub WriteExif($$$);
|
@@ -5804,6 +5804,8 @@ sub PrintLensID($$@)
|
|
5804
5804
|
}
|
5805
5805
|
if ($$et{Make} eq 'SONY') {
|
5806
5806
|
if ($lensType eq 65535) {
|
5807
|
+
# patch for manual lens (forum17379)
|
5808
|
+
return $$printConv{$lensType} if $$printConv{$lensType} and not $focalLength and $maxAperture == 1;
|
5807
5809
|
# handle Sony E-type lenses when LensType2 isn't valid (NEX/ILCE models only)
|
5808
5810
|
if ($$et{Model} =~ /NEX|ILCE/) {
|
5809
5811
|
unless (%sonyEtype) {
|
@@ -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.97';
|
35
35
|
|
36
36
|
sub ProcessFujiDir($$$);
|
37
37
|
sub ProcessFaceRec($$$);
|
@@ -628,6 +628,7 @@ my %faceCategories = (
|
|
628
628
|
0x60006 => 'Partial Color Purple',
|
629
629
|
0x70000 => 'Soft Focus',
|
630
630
|
0x90000 => 'Low Key',
|
631
|
+
0x100000 => 'Light Leak', #forum17392
|
631
632
|
},
|
632
633
|
},
|
633
634
|
0x1210 => { #2
|
Binary file
|
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use vars qw($VERSION);
|
12
12
|
use Image::ExifTool;
|
13
13
|
|
14
|
-
$VERSION = '1.
|
14
|
+
$VERSION = '1.05';
|
15
15
|
|
16
16
|
sub ProcessLigoGPS($$$;$);
|
17
17
|
sub ProcessLigoJSON($$$);
|
@@ -329,7 +329,7 @@ sub ProcessLigoJSON($$$)
|
|
329
329
|
my $dataPt = $$dirInfo{DataPt};
|
330
330
|
my $dirLen = $$dirInfo{DirLen};
|
331
331
|
require Image::ExifTool::Import;
|
332
|
-
$et->VerboseDir('LIGO_JSON', undef, length($$dataPt) - pos($$dataPt));
|
332
|
+
$et->VerboseDir('LIGO_JSON', undef, length($$dataPt) - (pos($$dataPt) || 0));
|
333
333
|
$$et{SET_GROUP1} = 'LIGO';
|
334
334
|
while ($$dataPt =~ /LIGOGPSINFO (\{.*?\})/g) {
|
335
335
|
my $json = $1;
|
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
|
|
21
21
|
sub WriteUnknownOrPreview($$$);
|
22
22
|
sub FixLeicaBase($$;$);
|
23
23
|
|
24
|
-
$VERSION = '2.
|
24
|
+
$VERSION = '2.17';
|
25
25
|
|
26
26
|
my $debug; # set to 1 to enable debugging code
|
27
27
|
|
@@ -991,9 +991,9 @@ my $debug; # set to 1 to enable debugging code
|
|
991
991
|
{
|
992
992
|
Name => 'MakerNoteSigma',
|
993
993
|
Condition => q{
|
994
|
-
return undef unless $$self{Make}=~/^(SIGMA|FOVEON)
|
994
|
+
return undef unless $$self{Make}=~/^(SIGMA|FOVEON)/i;
|
995
995
|
# save version number in "MakerNoteSigmaVer" member variable
|
996
|
-
$$self{MakerNoteSigmaVer} = $$valPt=~/^SIGMA\0\0\0
|
996
|
+
$$self{MakerNoteSigmaVer} = $$valPt=~/^SIGMA\0\0\0.(.)/s ? ord($1) : -1;
|
997
997
|
return 1;
|
998
998
|
},
|
999
999
|
SubDirectory => {
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
40
40
|
use Image::ExifTool::Exif;
|
41
41
|
use Image::ExifTool::APP12;
|
42
42
|
|
43
|
-
$VERSION = '2.
|
43
|
+
$VERSION = '2.86';
|
44
44
|
|
45
45
|
sub PrintLensInfo($$$);
|
46
46
|
|
@@ -550,6 +550,7 @@ my %filters = (
|
|
550
550
|
4 => 'Light Tone',
|
551
551
|
5 => 'Pin Hole', # (SZ-10 magic filter 2,SZ-31MR,E-PL3)
|
552
552
|
6 => 'Grainy Film',
|
553
|
+
8 => 'Underwater', #forum17348
|
553
554
|
9 => 'Diorama',
|
554
555
|
10 => 'Cross Process',
|
555
556
|
12 => 'Fish Eye', # (SZ-10 magic filter 3)
|
@@ -581,6 +582,9 @@ my %filters = (
|
|
581
582
|
39 => 'Partial Color', #forum6269
|
582
583
|
40 => 'Partial Color II', #forum6269
|
583
584
|
41 => 'Partial Color III', #forum6269
|
585
|
+
42 => 'Bleach Bypass', #forum17348
|
586
|
+
43 => 'Bleach Bypass II', #forum17348
|
587
|
+
44 => 'Instant Film', #forum17348
|
584
588
|
);
|
585
589
|
|
586
590
|
my %toneLevelType = (
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
58
58
|
use Image::ExifTool::GPS;
|
59
59
|
use Image::ExifTool::HP;
|
60
60
|
|
61
|
-
$VERSION = '3.
|
61
|
+
$VERSION = '3.51';
|
62
62
|
|
63
63
|
sub CryptShutterCount($$);
|
64
64
|
sub PrintFilter($$$);
|
@@ -1263,7 +1263,7 @@ my %binaryDataAttrs = (
|
|
1263
1263
|
}],
|
1264
1264
|
},{
|
1265
1265
|
Name => 'AFPointSelected',
|
1266
|
-
Condition => '$$self{Model} =~ /K-3\b/',
|
1266
|
+
Condition => '$$self{Model} =~ /(K-3|KP)\b/',
|
1267
1267
|
Writable => 'int16u',
|
1268
1268
|
Notes => 'K-3',
|
1269
1269
|
PrintConvColumns => 2,
|
@@ -3038,6 +3038,10 @@ my %binaryDataAttrs = (
|
|
3038
3038
|
# 0x0236 - undef[52] (Q)
|
3039
3039
|
# 0x0237 - undef[11] possibly related to smart effect setting? (Q)
|
3040
3040
|
# 0x0238 - undef[9] (Q)
|
3041
|
+
0x0238 => { #KarstenGieselmann
|
3042
|
+
Name => 'CAFPointInfo',
|
3043
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Pentax::CAFPointInfo' },
|
3044
|
+
},
|
3041
3045
|
0x0239 => { #PH
|
3042
3046
|
Name => 'LensInfoQ',
|
3043
3047
|
SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LensInfoQ' },
|
@@ -5001,10 +5005,10 @@ my %binaryDataAttrs = (
|
|
5001
5005
|
# 0x0a - values: 00,05,0d,15,86,8e,a6,ae
|
5002
5006
|
0x0b => { #JD
|
5003
5007
|
Name => 'AFPointsInFocus',
|
5004
|
-
Condition => '$$self{Model} !~ /K-
|
5008
|
+
Condition => '$$self{Model} !~ /(K-(1|3|70)|KP)\b/',
|
5005
5009
|
Notes => q{
|
5006
|
-
models other than the K-1
|
5007
|
-
though a single AFPoint has been selected, in which case the selected
|
5010
|
+
models other than the K-1, K-3, K-70 and KP. May report two points in focus
|
5011
|
+
even though a single AFPoint has been selected, in which case the selected
|
5008
5012
|
AFPoint is the first reported
|
5009
5013
|
},
|
5010
5014
|
PrintConvColumns => 2,
|
@@ -5081,6 +5085,37 @@ my %binaryDataAttrs = (
|
|
5081
5085
|
},
|
5082
5086
|
);
|
5083
5087
|
|
5088
|
+
# AF information for K-01 and later (ref Karsten Gieselmann private communication)
|
5089
|
+
%Image::ExifTool::Pentax::CAFPointInfo = (
|
5090
|
+
%binaryDataAttrs,
|
5091
|
+
FIRST_ENTRY => 0,
|
5092
|
+
DATAMEMBER => [ 1 ],
|
5093
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
5094
|
+
NOTES => 'Contrast-detect AF-point information for the K-01 and later models.',
|
5095
|
+
1 => {
|
5096
|
+
Name => 'NumCAFPoints',
|
5097
|
+
RawConv => '$$self{NumCAFPoints} = ($val & 0x0f) * ($val >> 4); $val',
|
5098
|
+
ValueConv => '($val >> 4) * ($val & 0x0f)',
|
5099
|
+
},
|
5100
|
+
1.1 => {
|
5101
|
+
Name => 'CAFGridSize',
|
5102
|
+
ValueConv => '($val >> 4) . " " . ($val & 0x0f)', # (width x height)
|
5103
|
+
PrintConv => '$val =~ tr/ /x/; $val',
|
5104
|
+
},
|
5105
|
+
2 => {
|
5106
|
+
Name => 'CAFPointsInFocus',
|
5107
|
+
Format => 'int8u[int(($val{1}+3)/4)]',
|
5108
|
+
Writable => 0,
|
5109
|
+
PrintConv => 'Image::ExifTool::Pentax::DecodeAFPoints($val,$$self{NumCAFPoints},2,0x02)',
|
5110
|
+
},
|
5111
|
+
2.1 => {
|
5112
|
+
Name => 'CAFPointsSelected',
|
5113
|
+
Format => 'int8u[int(($val{1}+3)/4)]',
|
5114
|
+
Writable => 0,
|
5115
|
+
PrintConv => 'Image::ExifTool::Pentax::DecodeAFPoints($val,$$self{NumCAFPoints},2,0x03)',
|
5116
|
+
},
|
5117
|
+
);
|
5118
|
+
|
5084
5119
|
# Kelvin white balance information (ref 28, topic 4834)
|
5085
5120
|
%Image::ExifTool::Pentax::KelvinWB = (
|
5086
5121
|
%binaryDataAttrs,
|
@@ -5747,29 +5782,34 @@ my %binaryDataAttrs = (
|
|
5747
5782
|
%Image::ExifTool::Pentax::AFPointInfo = (
|
5748
5783
|
%binaryDataAttrs,
|
5749
5784
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
5785
|
+
DATAMEMBER => [ 2 ],
|
5750
5786
|
NOTES => 'AF point information written by the K-1.',
|
5751
5787
|
# 0 - int16u: 1 (version?)
|
5752
5788
|
2 => {
|
5753
5789
|
Name => 'NumAFPoints',
|
5754
5790
|
Format => 'int16u',
|
5791
|
+
RawConv => '$$self{NumAFPoints} = $val',
|
5755
5792
|
},
|
5756
5793
|
4 => {
|
5757
5794
|
Name => 'AFPointsInFocus',
|
5758
5795
|
Condition => '$$self{Model} =~ /K-1\b/',
|
5759
|
-
Format => 'int8u[
|
5760
|
-
|
5796
|
+
Format => 'int8u[int(($val{2}+3)/4)]',
|
5797
|
+
Writable => 0,
|
5798
|
+
PrintConv => 'Image::ExifTool::Pentax::DecodeAFPoints($val,$$self{NumAFPoints},2,0x02)',
|
5761
5799
|
},
|
5762
5800
|
4.1 => {
|
5763
5801
|
Name => 'AFPointsSelected',
|
5764
5802
|
Condition => '$$self{Model} =~ /K-1\b/',
|
5765
|
-
Format => 'int8u[
|
5766
|
-
|
5803
|
+
Format => 'int8u[int(($val{2}+3)/4)]',
|
5804
|
+
Writable => 0,
|
5805
|
+
PrintConv => 'Image::ExifTool::Pentax::DecodeAFPoints($val,$$self{NumAFPoints},2,0x03)',
|
5767
5806
|
},
|
5768
5807
|
4.2 => {
|
5769
5808
|
Name => 'AFPointsSpecial',
|
5770
5809
|
Condition => '$$self{Model} =~ /K-1\b/',
|
5771
|
-
Format => 'int8u[
|
5772
|
-
|
5810
|
+
Format => 'int8u[int(($val{2}+3)/4)]',
|
5811
|
+
Writable => 0,
|
5812
|
+
PrintConv => 'Image::ExifTool::Pentax::DecodeAFPoints($val,$$self{NumAFPoints},2,0x03,0x03)',
|
5773
5813
|
},
|
5774
5814
|
);
|
5775
5815
|
|
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
49
49
|
use Image::ExifTool::Exif;
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
|
52
|
-
$VERSION = '3.
|
52
|
+
$VERSION = '3.17';
|
53
53
|
|
54
54
|
sub ProcessMOV($$;$);
|
55
55
|
sub ProcessKeys($$$);
|
@@ -2378,6 +2378,25 @@ my %userDefined = (
|
|
2378
2378
|
# @etc - 4 bytes all zero (Samsung WB30F)
|
2379
2379
|
# saut - 4 bytes all zero (Samsung SM-N900T)
|
2380
2380
|
# smrd - string "TRUEBLUE" (Samsung SM-C101, etc)
|
2381
|
+
# ---- Sigma ----
|
2382
|
+
SIGM => {
|
2383
|
+
Name => 'PreviewImage',
|
2384
|
+
# 32-byte header followed by preview image. Length at offset 6 in header
|
2385
|
+
Condition => 'length($$valPt) > 0x20 and length($$valPt) == unpack("x6V",$$valPt) + 0x20',
|
2386
|
+
Groups => { 2 => 'Preview' },
|
2387
|
+
SetBase => 1, # so $$self{BASE} will be set for correct offsets in verbose/html dumps
|
2388
|
+
RawConv => q{
|
2389
|
+
$val = substr($val, 0x20);
|
2390
|
+
my $pt = $self->ValidateImage(\$val, $tag);
|
2391
|
+
if ($pt) {
|
2392
|
+
$$self{BASE} += 0x20;
|
2393
|
+
$$self{DOC_NUM} = ++$$self{DOC_COUNT};
|
2394
|
+
$self->ExtractInfo($pt, { ReEntry => 1 });
|
2395
|
+
$$self{DOC_NUM} = 0;
|
2396
|
+
}
|
2397
|
+
return $pt;
|
2398
|
+
},
|
2399
|
+
},
|
2381
2400
|
# ---- TomTom Bandit Action Cam ----
|
2382
2401
|
TTMD => {
|
2383
2402
|
Name => 'TomTomMetaData',
|
@@ -9380,7 +9399,7 @@ sub HandleItemInfo($)
|
|
9380
9399
|
$et->ProcessDirectory(\%dirInfo, $subTable, $proc);
|
9381
9400
|
delete $$et{DOC_NUM};
|
9382
9401
|
}
|
9383
|
-
$raf->Seek($curPos, 0) or $et->Warn('Seek error')
|
9402
|
+
$raf->Seek($curPos, 0) or $et->Warn('Seek error'); # seek back to original position
|
9384
9403
|
pop @{$$et{PATH}};
|
9385
9404
|
}
|
9386
9405
|
# process the item properties now that we should know their associations and document numbers
|
@@ -2287,6 +2287,16 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
2287
2287
|
$lat = ($lat - 187.982162849635) / 3;
|
2288
2288
|
$lon = ($lon - 2199.19873715495) / 2;
|
2289
2289
|
$ddd = 1;
|
2290
|
+
} elsif (Get32u($dataPt,0) == 0x400000 and abs($lat) <= 90 and abs($lon) <= 180) {
|
2291
|
+
# Transcend Drive Body Camera 70
|
2292
|
+
# 0000: 00 00 40 00 66 72 65 65 47 50 53 20 4c 00 00 00 [..@.freeGPS L...]
|
2293
|
+
# 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
2294
|
+
# 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
2295
|
+
# 0030: 09 00 00 00 26 00 00 00 15 00 00 00 e9 07 00 00 [....&...........]
|
2296
|
+
# 0040: 05 00 00 00 10 00 00 00 41 53 45 00 6c 59 ee 41 [........ASE.lY.A]
|
2297
|
+
# 0050: 9f 1a f7 41 3c 6b 0f 41 9a 99 99 43 00 00 00 00 [...A<k.A...C....]
|
2298
|
+
$ddd = 1; # already in decimal degrees
|
2299
|
+
$spd /= $knotsToKph; # already in km/h
|
2290
2300
|
} else {
|
2291
2301
|
$debug and $et->FoundTag(GPSType => 17);
|
2292
2302
|
}
|
@@ -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.35';
|
23
23
|
|
24
24
|
# sigma LensType lookup (ref IB)
|
25
25
|
%sigmaLensTypes = (
|
@@ -412,7 +412,12 @@ $VERSION = '1.34';
|
|
412
412
|
Name => 'Software',
|
413
413
|
Priority => 0,
|
414
414
|
},
|
415
|
-
0x0019 =>
|
415
|
+
0x0019 => {
|
416
|
+
Name => 'AutoBracket',
|
417
|
+
# (some models don't have spaces around "of")
|
418
|
+
PrintConv => '$val =~ s/(\d)of(\d)/$1 of $2/; $val',
|
419
|
+
PrintConvInv => '$val',
|
420
|
+
},
|
416
421
|
0x001a => [ #PH
|
417
422
|
{
|
418
423
|
Name => 'PreviewImageStart',
|
@@ -641,8 +646,11 @@ $VERSION = '1.34';
|
|
641
646
|
},
|
642
647
|
0x0033 => { #PH
|
643
648
|
Name => 'ExposureTime2',
|
644
|
-
Condition =>
|
645
|
-
|
649
|
+
Condition => q{
|
650
|
+
$$self{Model} !~ / (SD1|SD9|SD15|Merrill|Quattro|fp)$/ and
|
651
|
+
$$self{MakerNoteSigmaVer} < 4
|
652
|
+
},
|
653
|
+
Notes => 'only valid for some models',
|
646
654
|
ValueConv => '$val * 1e-6',
|
647
655
|
ValueConvInv => 'int($val * 1e6 + 0.5)',
|
648
656
|
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
@@ -10604,7 +10604,7 @@ my %isoSetting2010 = (
|
|
10604
10604
|
0x800b => { Name => 'Sony_rtmd_0x800b', Format => 'int16u', %hidUnk }, # (ZoomRingPosition?, forum14315)
|
10605
10605
|
# 0x8100 - 16 bytes starting with 0x060e2b340401
|
10606
10606
|
0x8100 => { Name => 'Sony_rtmd_0x8100', Format => 'int8u', %hidUnk },
|
10607
|
-
0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1
|
10607
|
+
0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1,2
|
10608
10608
|
0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
|
10609
10609
|
0x8105 => { Name => 'Sony_rtmd_0x8105', Format => 'int16u', %hidUnk }, # seen: 20092
|
10610
10610
|
0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1","24000 1001" frame rate?
|
@@ -10625,7 +10625,7 @@ my %isoSetting2010 = (
|
|
10625
10625
|
Format => 'int16u',
|
10626
10626
|
},
|
10627
10627
|
0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u', %hidUnk }, # seen: 0,1
|
10628
|
-
0x8115 => { Name => 'Sony_rtmd_0x8115', Format => 'int16u', %hidUnk }, # seen: 100
|
10628
|
+
0x8115 => { Name => 'Sony_rtmd_0x8115', Format => 'int16u', %hidUnk }, # seen: 100 - ISO
|
10629
10629
|
# 0x8300 - container for other tags in this format
|
10630
10630
|
0x8500 => {
|
10631
10631
|
Name => 'GPSVersionID',
|
@@ -10703,7 +10703,7 @@ my %isoSetting2010 = (
|
|
10703
10703
|
},
|
10704
10704
|
0xe000 => { Name => 'Sony_rtmd_0xe000', Format => 'int8u', %hidUnk }, # (16 bytes)
|
10705
10705
|
0xe300 => { Name => 'Sony_rtmd_0xe300', Format => 'int8u', %hidUnk }, # seen: 0,1
|
10706
|
-
0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600,12800
|
10706
|
+
0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600,12800 - ISO
|
10707
10707
|
0xe302 => { Name => 'Sony_rtmd_0xe302', Format => 'int8u', %hidUnk }, # seen: 1
|
10708
10708
|
0xe303 => { #forum12218
|
10709
10709
|
Name => 'WhiteBalance',
|