exiftool_vendored 13.42.0 → 13.45.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 +44 -1
- data/bin/MANIFEST +2 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +48 -48
- data/bin/config_files/example.config +5 -2
- data/bin/exiftool +96 -84
- data/bin/lib/Image/ExifTool/Apple.pm +0 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
- data/bin/lib/Image/ExifTool/Canon.pm +24 -1
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +2 -2
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +4 -2
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -2
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +3 -3
- data/bin/lib/Image/ExifTool/Google.pm +2 -2
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +0 -1
- data/bin/lib/Image/ExifTool/Import.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +5 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- data/bin/lib/Image/ExifTool/Kandao.pm +399 -0
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/MRC.pm +4 -4
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -2
- data/bin/lib/Image/ExifTool/Matroska.pm +56 -15
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +13 -15
- data/bin/lib/Image/ExifTool/NikonCustom.pm +10 -8
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +30 -6
- data/bin/lib/Image/ExifTool/Pentax.pm +9 -1
- data/bin/lib/Image/ExifTool/PhaseOne.pm +17 -1
- data/bin/lib/Image/ExifTool/Plot.pm +2 -2
- data/bin/lib/Image/ExifTool/Protobuf.pm +42 -16
- data/bin/lib/Image/ExifTool/QuickTime.pm +48 -8
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
- data/bin/lib/Image/ExifTool/README +5 -5
- data/bin/lib/Image/ExifTool/RIFF.pm +5 -4
- data/bin/lib/Image/ExifTool/Reconyx.pm +2 -2
- data/bin/lib/Image/ExifTool/Samsung.pm +11 -1
- data/bin/lib/Image/ExifTool/Sony.pm +29 -3
- data/bin/lib/Image/ExifTool/TNEF.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +7129 -7108
- data/bin/lib/Image/ExifTool/TagNames.pod +259 -111
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -2
- data/bin/lib/Image/ExifTool/Writer.pl +9 -5
- data/bin/lib/Image/ExifTool/XMP.pm +4 -2
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +33 -26
- data/bin/lib/Image/ExifTool.pod +88 -79
- data/bin/perl-Image-ExifTool.spec +47 -47
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -1
|
@@ -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.25';
|
|
53
53
|
|
|
54
54
|
sub ProcessMOV($$;$);
|
|
55
55
|
sub ProcessKeys($$$);
|
|
@@ -494,6 +494,7 @@ my %qtFlags = ( #12
|
|
|
494
494
|
ispe => 1, # primary item must have an ispe and pixi, so no need to inherit these
|
|
495
495
|
pixi => 1,
|
|
496
496
|
irot => 1, # (tmap may have a different irot)
|
|
497
|
+
imir => 1, # (ditto)
|
|
497
498
|
pasp => 1, # (NC)
|
|
498
499
|
hvcC => 2, # (hvcC is a property of hvc1 referred to by primary grid)
|
|
499
500
|
colr => 2, # (colr is a property of primary grid or hvc1 referred to by primary)
|
|
@@ -600,7 +601,7 @@ my %userDefined = (
|
|
|
600
601
|
# 0010: 73 6e 61 6c 00 00 00 00 00 f7 b6 d2 00 0a 46 e0 [snal..........F.]
|
|
601
602
|
# 0020: 68 67 6c 67 00 00 00 00 01 02 0a a2 00 00 00 21 [hglg...........!]
|
|
602
603
|
# 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
|
603
|
-
# (also Samsung WB750 uncompressed thumbnail data starting with "SDIC\0")
|
|
604
|
+
# (also Samsung WB750 uncompressed thumbnail data starting with "SDIC\0")
|
|
604
605
|
],
|
|
605
606
|
# fre1 - 4 bytes: "june" (Kodak PixPro SP360)
|
|
606
607
|
frea => {
|
|
@@ -987,6 +988,25 @@ my %userDefined = (
|
|
|
987
988
|
ProcessProc => \&ProcessInsta360,
|
|
988
989
|
},
|
|
989
990
|
},
|
|
991
|
+
# Kandao tags (Kandao QooCam 3 Ultra)
|
|
992
|
+
kvar => {
|
|
993
|
+
Name => 'KVAR',
|
|
994
|
+
BlockExtract => 1,
|
|
995
|
+
Notes => q{
|
|
996
|
+
by default, data in this tag is parsed to extract some embedded metadata,
|
|
997
|
+
but it may also be extracted as a KVAR file via the "KVAR" tag or by setting
|
|
998
|
+
the API BlockExtract option
|
|
999
|
+
},
|
|
1000
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Kandao::Main' },
|
|
1001
|
+
},
|
|
1002
|
+
kfix => {
|
|
1003
|
+
Name => 'KFIX',
|
|
1004
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Kandao::Main' },
|
|
1005
|
+
},
|
|
1006
|
+
kstb => { # (NC)
|
|
1007
|
+
Name => 'KSTB',
|
|
1008
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Kandao::Main' },
|
|
1009
|
+
},
|
|
990
1010
|
);
|
|
991
1011
|
|
|
992
1012
|
# stuff seen in 'skip' atom (70mai Pro Plus+ MP4 videos)
|
|
@@ -2667,6 +2687,7 @@ my %userDefined = (
|
|
|
2667
2687
|
ByteOrder => 'BigEndian',
|
|
2668
2688
|
},
|
|
2669
2689
|
},
|
|
2690
|
+
# PREX - seen written by Sony ILCE-7M5 (apparently contains another video profile?)
|
|
2670
2691
|
);
|
|
2671
2692
|
|
|
2672
2693
|
# FPRF atom information (ref 11)
|
|
@@ -2970,7 +2991,6 @@ my %userDefined = (
|
|
|
2970
2991
|
Condition => '$$valPt =~ /^(prof|rICC)/',
|
|
2971
2992
|
# (don't do this because Apple Preview won't display an HEIC with a 0-length profile)
|
|
2972
2993
|
# Permanent => 0, # (in QuickTime, this writes a zero-length box instead of deleting)
|
|
2973
|
-
Permanent => 1,
|
|
2974
2994
|
SubDirectory => {
|
|
2975
2995
|
TagTable => 'Image::ExifTool::ICC_Profile::Main',
|
|
2976
2996
|
Start => 4,
|
|
@@ -2991,6 +3011,22 @@ my %userDefined = (
|
|
|
2991
3011
|
3 => 'Rotate 90 CW',
|
|
2992
3012
|
},
|
|
2993
3013
|
},
|
|
3014
|
+
imir => { # (applied before rotation)
|
|
3015
|
+
Name => 'Mirroring',
|
|
3016
|
+
Format => 'int8u',
|
|
3017
|
+
# yes, I realize this making this writable is useless without the ability to
|
|
3018
|
+
# create/delete this box because it is the existence of this box that is
|
|
3019
|
+
# significant. (The people who wrote the specification succeeded in making
|
|
3020
|
+
# this as complicated as possible because creating/deleting boxes from the
|
|
3021
|
+
# item property container is a real pain in the ass!)
|
|
3022
|
+
Writable => 'int8u',
|
|
3023
|
+
Protected => 1,
|
|
3024
|
+
PrintConv => {
|
|
3025
|
+
0 => 'Vertical',
|
|
3026
|
+
1 => 'Horizontal',
|
|
3027
|
+
# (it would have been great if the specification allowed for a "no mirroring" value)
|
|
3028
|
+
},
|
|
3029
|
+
},
|
|
2994
3030
|
ispe => {
|
|
2995
3031
|
Name => 'ImageSpatialExtent',
|
|
2996
3032
|
Condition => '$$valPt =~ /^\0{4}/', # (version/flags == 0/0)
|
|
@@ -3405,7 +3441,7 @@ my %userDefined = (
|
|
|
3405
3441
|
ssrc => { Name => 'Non-primarySourceTrack', Format => 'int32u' }, #29
|
|
3406
3442
|
sync => { Name => 'SyncronizedTrack', Format => 'int32u' }, #29
|
|
3407
3443
|
# hint - Original media for hint track (ref 29)
|
|
3408
|
-
# cdep (Structural Dependency QT tag?)
|
|
3444
|
+
# cdep (Structural Dependency QT tag?)
|
|
3409
3445
|
);
|
|
3410
3446
|
|
|
3411
3447
|
# track aperture mode dimensions atoms
|
|
@@ -6622,7 +6658,7 @@ my %userDefined = (
|
|
|
6622
6658
|
This directory contains a list of key names which are used to decode tags
|
|
6623
6659
|
written by the "mdta" handler. Also in this table are a few tags found in
|
|
6624
6660
|
timed metadata that are not yet writable by ExifTool. The prefix of
|
|
6625
|
-
"com.apple.quicktime." has been removed from
|
|
6661
|
+
"com.apple.quicktime." has been removed from most TagID's below. These tags
|
|
6626
6662
|
support alternate languages in the same way as the
|
|
6627
6663
|
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> tags. Note
|
|
6628
6664
|
that by default,
|
|
@@ -6716,14 +6752,17 @@ my %userDefined = (
|
|
|
6716
6752
|
'encoder' => { }, # forum15418 (written by ffmpeg)
|
|
6717
6753
|
#
|
|
6718
6754
|
# the following tags aren't in the com.apple.quicktime namespace:
|
|
6755
|
+
# (Note: must add any non-'com' prefix to %fullKeysID in WriteQuickTime.pl
|
|
6756
|
+
# to avoid adding the 'com.apple.quicktime' prefix when writing)
|
|
6719
6757
|
#
|
|
6720
6758
|
'com.android.version' => 'AndroidVersion',
|
|
6721
6759
|
'com.android.capture.fps' => { Name => 'AndroidCaptureFPS', Writable => 'float' },
|
|
6722
6760
|
'com.android.manufacturer' => 'AndroidMake',
|
|
6723
6761
|
'com.android.model' => 'AndroidModel',
|
|
6724
6762
|
'com.xiaomi.preview_video_cover' => { Name => 'XiaomiPreviewVideoCover', Writable => 'int32s' },
|
|
6725
|
-
'xiaomi.exifInfo.videoinfo' => 'XiaomiExifInfo',
|
|
6726
6763
|
'com.xiaomi.hdr10' => { Name => 'XiaomiHDR10', Writable => 'int32s' },
|
|
6764
|
+
'xiaomi.exifInfo.videoinfo' => 'XiaomiExifInfo',
|
|
6765
|
+
'samsung.android.utc_offset' => { Name => 'AndroidTimeZone', Groups => { 2 => 'Time' } },
|
|
6727
6766
|
#
|
|
6728
6767
|
# also seen
|
|
6729
6768
|
#
|
|
@@ -9007,13 +9046,13 @@ sub GetString($$)
|
|
|
9007
9046
|
sub PrintableTagID($;$)
|
|
9008
9047
|
{
|
|
9009
9048
|
my $tag = $_[0];
|
|
9010
|
-
my $n = ($tag =~ s/([
|
|
9049
|
+
my $n = ($tag =~ s/([^-_a-zA-Z0-9])/'x'.unpack('H*',$1)/eg);
|
|
9011
9050
|
if ($n and $_[1]) {
|
|
9012
9051
|
if ($n > 2 and $_[1] & 0x01) {
|
|
9013
9052
|
$tag = '0x' . unpack('H8', $_[0]);
|
|
9014
9053
|
$tag =~ s/^0x0000/0x/;
|
|
9015
9054
|
} elsif ($_[1] & 0x02) {
|
|
9016
|
-
($tag = $_[0]) =~ s/([
|
|
9055
|
+
($tag = $_[0]) =~ s/([^-_a-zA-Z0-9])/'\\x'.unpack('H*',$1)/eg;
|
|
9017
9056
|
}
|
|
9018
9057
|
}
|
|
9019
9058
|
return $tag;
|
|
@@ -9776,6 +9815,7 @@ sub ProcessKeys($$$)
|
|
|
9776
9815
|
$name = "Tag_$name" if length $name < 2;
|
|
9777
9816
|
$newInfo = { Name => $name, Groups => { 1 => 'Keys' } };
|
|
9778
9817
|
$msg = ' (Unknown)';
|
|
9818
|
+
$et->VPrint(0, $$et{INDENT}, "[adding Keys:$tag]\n");
|
|
9779
9819
|
}
|
|
9780
9820
|
# substitute this tag in the ItemList table with the given index
|
|
9781
9821
|
my $id = $$et{KeysCount} . '.' . $index;
|
|
@@ -111,7 +111,7 @@ my %insvLimit = (
|
|
|
111
111
|
The tags below are extracted from timed metadata in QuickTime and other
|
|
112
112
|
formats of video files when the ExtractEmbedded option is used. Although
|
|
113
113
|
most of these tags are combined into the single table below, ExifTool
|
|
114
|
-
currently reads
|
|
114
|
+
currently reads 117 different types of timed GPS metadata from video files.
|
|
115
115
|
},
|
|
116
116
|
GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
|
|
117
117
|
GPSLongitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
|
|
@@ -211,7 +211,7 @@ my %insvLimit = (
|
|
|
211
211
|
},
|
|
212
212
|
},{
|
|
213
213
|
Name => 'gpmd_Wolfbox', # Wolfbox G900 Dashcam and Redtiger F9 4K
|
|
214
|
-
Condition => '$$valPt =~ /^.{136}0{16}
|
|
214
|
+
Condition => '$$valPt =~ /^.{136}(0{16}[A-Z]{4}|https:\/\/www.redtiger\0)/s',
|
|
215
215
|
SubDirectory => {
|
|
216
216
|
TagTable => 'Image::ExifTool::QuickTime::Stream',
|
|
217
217
|
ProcessProc => \&ProcessWolfbox,
|
|
@@ -348,7 +348,7 @@ numerical, and generated automatically otherwise.
|
|
|
348
348
|
but applied automatically to individual tags. Value specifies
|
|
349
349
|
pattern for split, or 1 for default pattern ',?\\s+'.
|
|
350
350
|
|
|
351
|
-
'Avoid' - avoid creating this tag when writing if possible.
|
|
351
|
+
'Avoid' - avoid creating this tag when writing if possible.
|
|
352
352
|
This is only effective if another tag exists with the same
|
|
353
353
|
name. Setting this flag also sets the default Priority to 0
|
|
354
354
|
for this tag.
|
|
@@ -632,7 +632,7 @@ numerical, and generated automatically otherwise.
|
|
|
632
632
|
value, and $tag is the tag key. The subroutine takes 2
|
|
633
633
|
arguments: the Raw value and a reference to the current
|
|
634
634
|
ExifTool object. The advanced formatting expression (if any)
|
|
635
|
-
may be accessed via the ExifTool "FMT_EXPR" member variable.
|
|
635
|
+
may be accessed via the ExifTool "FMT_EXPR" member variable.
|
|
636
636
|
The expression or subroutine is evaluated if and when the tag
|
|
637
637
|
value is requested (ie. only after all extraction is
|
|
638
638
|
complete), so if necessary at this time the values of all
|
|
@@ -650,7 +650,7 @@ numerical, and generated automatically otherwise.
|
|
|
650
650
|
enabled. If this isn't possible (as with Composite tags where
|
|
651
651
|
the converted values of the source tags are needed), set the
|
|
652
652
|
Priority to 0 to avoid taking priority over a valid tag. If
|
|
653
|
-
ValueConv is not specified, the Raw value is not converted.
|
|
653
|
+
ValueConv is not specified, the Raw value is not converted.
|
|
654
654
|
Composite tags which Require or Desire other tags may access
|
|
655
655
|
the ValueConv, PrintConv and Raw values of these tags through
|
|
656
656
|
the elements of the @val, @prt and @raw lists respectively
|
|
@@ -822,7 +822,7 @@ numerical, and generated automatically otherwise.
|
|
|
822
822
|
SubDirectory is writable as a block, or if the SubDirectory
|
|
823
823
|
can not be edited (in which case Writable is set to 0). If
|
|
824
824
|
non-zero, the SubDirectory is also extracted as a block, so
|
|
825
|
-
the Binary and Protected flags should usually set as well.
|
|
825
|
+
the Binary and Protected flags should usually set as well.
|
|
826
826
|
There is currently no way to specify a write format for a
|
|
827
827
|
SubDirectory that is not writable as a block (the default is
|
|
828
828
|
'int32u' for IFD-type SubDirectories, and 'undef' for all
|
|
@@ -970,7 +970,7 @@ numerical, and generated automatically otherwise.
|
|
|
970
970
|
data record), $dataPt (reference to the data block), and $pos
|
|
971
971
|
(position of this tag in the data block), and assign a new
|
|
972
972
|
value to $format to dynamically set the tag format, and/or
|
|
973
|
-
increment $varSize to add a byte offset to subsequent tags.
|
|
973
|
+
increment $varSize to add a byte offset to subsequent tags.
|
|
974
974
|
$varSize may be set to a large number to effectively abort
|
|
975
975
|
processing of the directory after this tag. Must have
|
|
976
976
|
corresponding DATAMEMBER entry in writable tables. Must not
|
|
@@ -30,7 +30,7 @@ use strict;
|
|
|
30
30
|
use vars qw($VERSION $AUTOLOAD);
|
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
32
32
|
|
|
33
|
-
$VERSION = '1.
|
|
33
|
+
$VERSION = '1.73';
|
|
34
34
|
|
|
35
35
|
sub ConvertTimecode($);
|
|
36
36
|
sub ProcessSGLT($$$);
|
|
@@ -391,7 +391,7 @@ my %code2charset = (
|
|
|
391
391
|
smpl => { #16
|
|
392
392
|
Name => 'Sampler',
|
|
393
393
|
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Sampler' },
|
|
394
|
-
},
|
|
394
|
+
},
|
|
395
395
|
inst => { #16
|
|
396
396
|
Name => 'Instrument',
|
|
397
397
|
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Instrument' },
|
|
@@ -546,11 +546,11 @@ my %code2charset = (
|
|
|
546
546
|
'id3 ' => {
|
|
547
547
|
Name => 'ID3',
|
|
548
548
|
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
|
549
|
-
},
|
|
549
|
+
},
|
|
550
550
|
'ID3 ' => { # (NC)
|
|
551
551
|
Name => 'ID3-2',
|
|
552
552
|
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
|
553
|
-
},
|
|
553
|
+
},
|
|
554
554
|
#
|
|
555
555
|
# WebP-specific tags
|
|
556
556
|
#
|
|
@@ -851,6 +851,7 @@ my %code2charset = (
|
|
|
851
851
|
Name => 'DateCreated',
|
|
852
852
|
Groups => { 2 => 'Time' },
|
|
853
853
|
ValueConv => '$_=$val; s/-/:/g; $_',
|
|
854
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
854
855
|
},
|
|
855
856
|
ICRP => 'Cropped',
|
|
856
857
|
IDIM => 'Dimensions',
|
|
@@ -420,7 +420,7 @@ my %convUnicode = (
|
|
|
420
420
|
WRITABLE => 1,
|
|
421
421
|
FIRST_ENTRY => 0,
|
|
422
422
|
NOTES => 'Maker notes tags for Reconyx MicroFire cameras.',
|
|
423
|
-
0x10 => { Name => 'FileNumber', Format => 'int16u' },
|
|
423
|
+
0x10 => { Name => 'FileNumber', Format => 'int16u' },
|
|
424
424
|
0x12 => { Name => 'DirectoryNumber', Format => 'int16u' },
|
|
425
425
|
0x14 => {
|
|
426
426
|
Name => 'DirectoryCreateDate',
|
|
@@ -695,7 +695,7 @@ my %convUnicode = (
|
|
|
695
695
|
0x51 => { Name => 'UserLabel', Format => 'string[51]' },
|
|
696
696
|
0x84 => { Name => 'SerialNumber', Format => 'string[15]' },
|
|
697
697
|
0x93 => { Name => 'DirectoryNumber', Format => 'int16u' },
|
|
698
|
-
0x95 => { Name => 'FileNumber', Format => 'int16u' },
|
|
698
|
+
0x95 => { Name => 'FileNumber', Format => 'int16u' },
|
|
699
699
|
);
|
|
700
700
|
|
|
701
701
|
__END__
|
|
@@ -23,7 +23,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
23
23
|
use Image::ExifTool::Exif;
|
|
24
24
|
use Image::ExifTool::JSON;
|
|
25
25
|
|
|
26
|
-
$VERSION = '1.
|
|
26
|
+
$VERSION = '1.60';
|
|
27
27
|
|
|
28
28
|
sub WriteSTMN($$$);
|
|
29
29
|
sub ProcessINFO($$$);
|
|
@@ -1314,7 +1314,17 @@ my %formatMinMax = (
|
|
|
1314
1314
|
# 0x0da1-name - seen 'Captured_App_Info' #forum16086
|
|
1315
1315
|
# 0xa050-name - seen 'Jpeg360_2D_Info' (Samsung Gear 360)
|
|
1316
1316
|
# 0xa050 - seen 'Jpeg3602D' (Samsung Gear 360)
|
|
1317
|
+
# 0x0c61-name - seen 'Camera_Capture_Mode_Info'
|
|
1318
|
+
# 0x0c61 - seen '1'
|
|
1317
1319
|
# 0x0c81-name - seen 'Watermark_Info'
|
|
1320
|
+
# 0x0ce1-name - seen 'Gallery_DC_Data'
|
|
1321
|
+
# 0x0ce1 - seen '0,109,2,19010102,4000,3000,0,0,0,0;116.284004;1.0'
|
|
1322
|
+
# 0x0e41-name - seen 'Video_Edited_UTC_Offset'
|
|
1323
|
+
# 0x0e41 - seen '+0800'
|
|
1324
|
+
'0x0e41' => {
|
|
1325
|
+
Name => 'VideoEditedTimeZone',
|
|
1326
|
+
Groups => { 2 => 'Time' },
|
|
1327
|
+
},
|
|
1318
1328
|
);
|
|
1319
1329
|
|
|
1320
1330
|
# DualShot Extra Info (ref PH)
|
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
34
34
|
use Image::ExifTool::Exif;
|
|
35
35
|
use Image::ExifTool::Minolta;
|
|
36
36
|
|
|
37
|
-
$VERSION = '3.
|
|
37
|
+
$VERSION = '3.83';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -261,7 +261,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
261
261
|
49475 => 'Tamron 50-300mm F4.5-6.3 Di III VC VXD', #JR (Model A069)
|
|
262
262
|
49476 => 'Tamron 28-300mm F4-7.1 Di III VC VXD', #JR (Model A074)
|
|
263
263
|
49477 => 'Tamron 90mm F2.8 Di III Macro VXD', #JR (Model F072)
|
|
264
|
-
49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
|
|
264
|
+
49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
|
|
265
265
|
|
|
266
266
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
|
267
267
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
|
@@ -1534,6 +1534,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1534
1534
|
0 => 'Compressed RAW',
|
|
1535
1535
|
1 => 'Uncompressed RAW',
|
|
1536
1536
|
2 => 'Lossless Compressed RAW', #JR (NC) seen for ILCE-1
|
|
1537
|
+
3 => 'Compressed RAW 2', # ILCE-7M5
|
|
1537
1538
|
65535 => 'n/a', # seen for ILCE-7SM3 JPEG-only
|
|
1538
1539
|
},
|
|
1539
1540
|
},
|
|
@@ -1591,9 +1592,25 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1591
1592
|
'1 3' => 'RAW + Extra Fine',
|
|
1592
1593
|
'1 4' => 'RAW + Light', #JR
|
|
1593
1594
|
'2 0' => 'S-size RAW',
|
|
1595
|
+
'2 1' => 'S-size RAW + Standard', # (NC)
|
|
1596
|
+
'2 2' => 'S-size RAW + Fine', # (NC)
|
|
1597
|
+
'2 3' => 'S-size RAW + Extra Fine', # (NC)
|
|
1598
|
+
'2 4' => 'S-size RAW + Light', # (NC)
|
|
1594
1599
|
'3 0' => 'M-size RAW', # ILCE-1/7RM5, APS-C mode
|
|
1600
|
+
'3 1' => 'M-size RAW + Standard', # (NC)
|
|
1595
1601
|
'3 2' => 'M-size RAW + Fine',
|
|
1596
1602
|
'3 3' => 'M-size RAW + Extra Fine',
|
|
1603
|
+
'3 4' => 'M-size RAW + Light', # (NC)
|
|
1604
|
+
'4 0' => 'Compressed RAW', # (NC)
|
|
1605
|
+
'4 1' => 'Compressed RAW + Standard', # (NC)
|
|
1606
|
+
'4 2' => 'Compressed RAW + Fine',
|
|
1607
|
+
'4 3' => 'Compressed RAW + Extra Fine', # (NC)
|
|
1608
|
+
'4 4' => 'Compressed RAW + Light', # (NC)
|
|
1609
|
+
'5 0' => 'Compressed HQ RAW', # (NC)
|
|
1610
|
+
'5 1' => 'Compressed HQ RAW + Standard', # (NC)
|
|
1611
|
+
'5 2' => 'Compressed HQ RAW + Fine',
|
|
1612
|
+
'5 3' => 'Compressed HQ RAW + Extra Fine', # (NC)
|
|
1613
|
+
'5 4' => 'Compressed HQ RAW + Light', # (NC)
|
|
1597
1614
|
},
|
|
1598
1615
|
},
|
|
1599
1616
|
0x202f => { #JR (ILCE-7RM3)
|
|
@@ -2095,6 +2112,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
2095
2112
|
'4 0 1 0' => 'ARW 4.0.1', #github195 (ZV-E1)
|
|
2096
2113
|
'5 0 0 0' => 'ARW 5.0', # (ILCE-9M3)
|
|
2097
2114
|
'5 0 1 0' => 'ARW 5.0.1', # (ILCE-1 with FirmWare 2.0)
|
|
2115
|
+
'6 0 0 0' => 'ARW 6.0.0', # (ILCE-7M5)
|
|
2098
2116
|
# what about cRAW images?
|
|
2099
2117
|
},
|
|
2100
2118
|
},
|
|
@@ -2215,6 +2233,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
2215
2233
|
403 => 'ILCE-6100A', #JR
|
|
2216
2234
|
404 => 'DSC-RX100M7A', #github347
|
|
2217
2235
|
406 => 'ILME-FX2', #JR
|
|
2236
|
+
407 => 'ILCE-7M5', #PH
|
|
2218
2237
|
408 => 'ZV-1A', #JR
|
|
2219
2238
|
},
|
|
2220
2239
|
},
|
|
@@ -7563,6 +7582,12 @@ my %isoSetting2010 = (
|
|
|
7563
7582
|
# appears to be difference between used FNumber and MaxAperture, 256 being +1 APEX or stop
|
|
7564
7583
|
# however, not always valid e.g. bracketing, Shutter-prio e.a.
|
|
7565
7584
|
# difference between 0x0002 and 0x0004 mostly 0.0, 0.1 or 0.2 stops.
|
|
7585
|
+
0x000a => { #github369
|
|
7586
|
+
Name => 'ShutterCount',
|
|
7587
|
+
Format => 'int32u',
|
|
7588
|
+
Condition => '$$self{Model} =~ /^ILCE-7M5$/',
|
|
7589
|
+
Notes => 'ILCE-7M5',
|
|
7590
|
+
},
|
|
7566
7591
|
0x0020 => {
|
|
7567
7592
|
Name => 'Shutter',
|
|
7568
7593
|
Format => 'int16u[3]',
|
|
@@ -7593,6 +7618,7 @@ my %isoSetting2010 = (
|
|
|
7593
7618
|
# NEX-5N/7. For the A99V it is definitely more than 16 bits, but it wraps at
|
|
7594
7619
|
# 65536 for the A7R.
|
|
7595
7620
|
Format => 'int32u',
|
|
7621
|
+
Condition => '$$self{Model} !~ /^ILCE-7M5$/',
|
|
7596
7622
|
Notes => q{
|
|
7597
7623
|
total number of image exposures made by the camera, modulo 65536 for some
|
|
7598
7624
|
models
|
|
@@ -9987,7 +10013,7 @@ my %isoSetting2010 = (
|
|
|
9987
10013
|
PrintConv => \%sonyExposureProgram3,
|
|
9988
10014
|
},
|
|
9989
10015
|
0x0037 => {
|
|
9990
|
-
Name => 'CreativeStyle',
|
|
10016
|
+
Name => 'CreativeStyle',
|
|
9991
10017
|
Notes => 'offsets after this are shifted by 1 for the ILME-FX2',
|
|
9992
10018
|
Hook => '$varSize += 1 if $$self{Model} =~ /^(ILME-FX2)/',
|
|
9993
10019
|
PrintConv => {
|
|
@@ -345,7 +345,7 @@ sub ProcessProps($$$)
|
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
347
|
if (not defined $val) {
|
|
348
|
-
$val = ReadValue($dataPt, $pos, $fmt, $count, $size);
|
|
348
|
+
$val = ReadValue($dataPt, $pos, $fmt, $count, $size);
|
|
349
349
|
if ($type == 0x06 or $type == 0x07 or $type == 0x0b or $type == 0x40) {
|
|
350
350
|
my @a = split ' ', $val;
|
|
351
351
|
if ($type == 0x06) { # currency
|
|
@@ -377,7 +377,7 @@ sub ProcessProps($$$)
|
|
|
377
377
|
my $copy = $val;
|
|
378
378
|
$val = \$copy; # change to a binary data reference
|
|
379
379
|
}
|
|
380
|
-
$et->HandleTag($tagTbl, $tag, $val,
|
|
380
|
+
$et->HandleTag($tagTbl, $tag, $val,
|
|
381
381
|
DataPt => $dataPt,
|
|
382
382
|
DataPos => $dataPos,
|
|
383
383
|
Start => $pos,
|