summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorexiftool <exiftool@users.sourceforge.net>2023-06-08 13:26:19 -0400
committerexiftool <exiftool@users.sourceforge.net>2023-06-08 13:26:19 -0400
commitadc7447eae4d896541bbba3777686771828e9075 (patch)
tree6e74715a1cd4bc061e83af711fbf1a13d0322d89 /lib
parenta2f26dc90ab031c687b5730cb1e6dffb35e3e029 (diff)
Update to 12.63
Diffstat (limited to 'lib')
-rw-r--r--lib/Image/ExifTool.pm87
-rw-r--r--lib/Image/ExifTool.pod23
-rw-r--r--lib/Image/ExifTool/7Z.pm793
-rw-r--r--lib/Image/ExifTool/Canon.pm1
-rw-r--r--lib/Image/ExifTool/CanonRaw.pm8
-rw-r--r--lib/Image/ExifTool/Exif.pm45
-rw-r--r--lib/Image/ExifTool/FujiFilm.pm6
-rw-r--r--lib/Image/ExifTool/GPS.pm7
-rw-r--r--lib/Image/ExifTool/Geotag.pm5
-rw-r--r--lib/Image/ExifTool/Jpeg2000.pm253
-rw-r--r--lib/Image/ExifTool/MPF.pm3
-rw-r--r--lib/Image/ExifTool/MinoltaRaw.pm4
-rw-r--r--lib/Image/ExifTool/PNG.pm12
-rw-r--r--lib/Image/ExifTool/PhaseOne.pm10
-rw-r--r--lib/Image/ExifTool/QuickTime.pm53
-rw-r--r--lib/Image/ExifTool/QuickTimeStream.pl36
-rw-r--r--lib/Image/ExifTool/README2
-rw-r--r--lib/Image/ExifTool/RIFF.pm20
-rw-r--r--lib/Image/ExifTool/Shortcuts.pm3
-rw-r--r--lib/Image/ExifTool/SigmaRaw.pm8
-rw-r--r--lib/Image/ExifTool/Sony.pm110
-rw-r--r--lib/Image/ExifTool/TagLookup.pm1935
-rw-r--r--lib/Image/ExifTool/TagNames.pod80
-rw-r--r--lib/Image/ExifTool/Validate.pm18
-rw-r--r--lib/Image/ExifTool/WriteExif.pl16
-rw-r--r--lib/Image/ExifTool/Writer.pl13
-rw-r--r--lib/Image/ExifTool/XMP.pm16
-rw-r--r--lib/Image/ExifTool/XMP2.pl32
-rw-r--r--lib/Image/ExifTool/ZIP.pm10
29 files changed, 2472 insertions, 1137 deletions
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index b8e8893f..deb26186 100644
--- a/lib/Image/ExifTool.pm
+++ b/lib/Image/ExifTool.pm
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
%static_vars);
-$VERSION = '12.62';
+$VERSION = '12.63';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
@@ -114,7 +114,7 @@ sub WriteTIFF($$$);
sub PackUTF8(@);
sub UnpackUTF8($);
sub SetPreferredByteOrder($;$);
-sub ImageDataMD5($$$;$$);
+sub ImageDataHash($$$;$$);
sub CopyBlock($$$);
sub CopyFileAttrs($$$);
sub TimeNow(;$$);
@@ -194,7 +194,7 @@ $defaultLang = 'en'; # default language
PSD XMP BMP WPG BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV
OGG FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF
LFP HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST RAR
- BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC
+ 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC
M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA
PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO TXT);
@@ -228,6 +228,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
'3GP' => ['MOV', '3rd Gen. Partnership Project audio/video'],
'3GP2'=> '3G2',
'3GPP'=> '3GP',
+ '7Z' => ['7Z', '7z archive'],
A => ['EXE', 'Static library'],
AA => ['AA', 'Audible Audiobook'],
AAE => ['PLIST','Apple edit information'],
@@ -590,6 +591,7 @@ my %fileDescription = (
# types may be specified by some modules, eg. QuickTime.pm and RIFF.pm)
%mimeType = (
'3FR' => 'image/x-hasselblad-3fr',
+ '7Z' => 'application/x-7z-compressed',
AA => 'audio/audible',
AAE => 'application/vnd.apple.photos',
AI => 'application/vnd.adobe.illustrator',
@@ -1827,15 +1829,16 @@ my %systemTagsNotes = (
if specifically requested
},
},
- ImageDataMD5 => {
+ ImageDataHash => {
Notes => q{
- MD5 of image data. Generated only if specifically requested for JPEG, TIFF,
+ Hash of image data. Generated only if specifically requested for JPEG, TIFF,
PNG, CRW, CR3, MRW, RAF, X3F, IIQ, JP2, JXL, HEIC and AVIF images, MOV/MP4
- videos, and some RIFF-based files such as AVI, WAV and WEBP. The MD5
+ videos, and some RIFF-based files such as AVI, WAV and WEBP. The hash
includes the main image data, plus JpgFromRaw/OtherImage for some formats,
but does not include ThumbnailImage or PreviewImage. Includes video and
- audio data for MOV/MP4. The L<XMP-et:OriginalImageMD5 tag|XMP.html#ExifTool>
- provides a place to store these values in the file.
+ audio data for MOV/MP4. The L<XMP-et:OriginalImageHash and
+ XMP-et:OriginalImageHashType tags|XMP.html#ExifTool> provide a way to store the this hash value
+ and the hash type in the file.
},
},
);
@@ -2314,6 +2317,12 @@ sub Options($$;@)
$newVal = defined $newVal ? "$oldVal|$newVal" : $oldVal;
}
$$options{$param} = $newVal;
+ } elsif ($param eq 'ImageHashType') {
+ if (defined $newVal and $newVal =~ /^(MD5|SHA256|SHA512)$/i) {
+ $$options{$param} = uc($newVal);
+ } else {
+ warn("Invalid $param setting '${newVal}'\n"), return $oldVal;
+ }
} else {
if ($param eq 'Escape') {
# set ESCAPE_PROC
@@ -2396,6 +2405,7 @@ sub ClearOptions($)
HtmlDumpBase => undef, # base address for HTML dump
IgnoreMinorErrors => undef, # ignore minor errors when reading/writing
IgnoreTags => undef, # list of tags to ignore when extracting
+ ImageHashType => 'MD5', # image hash algorithm
Lang => $defaultLang,# localized language for descriptions etc
LargeFileSupport => undef, # flag indicating support of 64-bit file offsets
List => undef, # extract lists of PrintConv values into arrays [no longer documented]
@@ -2518,10 +2528,17 @@ sub ExtractInfo($;@)
}
}
- # create MD5 object if ImageDataMD5 is requested
- if ($$req{imagedatamd5} and not $$self{ImageDataMD5}) {
- if (require Digest::MD5) {
- $$self{ImageDataMD5} = Digest::MD5->new;
+ # create Hash object if ImageDataHash is requested
+ if ($$req{imagedatahash} and not $$self{ImageDataHash}) {
+ my $imageHashType = $self->Options('ImageHashType');
+ if ($imageHashType =~ /^SHA(256|512)$/i) {
+ if (require Digest::SHA) {
+ $$self{ImageDataHash} = Digest::SHA->new($1);
+ } else {
+ $self->WarnOnce("Install Digest::SHA to calculate image data SHA$1");
+ }
+ } elsif (require Digest::MD5) {
+ $$self{ImageDataHash} = Digest::MD5->new;
} else {
$self->WarnOnce('Install Digest::MD5 to calculate image data MD5');
}
@@ -2915,10 +2932,13 @@ sub ExtractInfo($;@)
# restore necessary members when exiting re-entrant code
$$self{$_} = $$reEntry{$_} foreach keys %$reEntry;
SetByteOrder($saveOrder);
- } elsif ($$self{ImageDataMD5}) {
- my $digest = $$self{ImageDataMD5}->hexdigest;
+ } elsif ($$self{ImageDataHash}) {
+ my $digest = $$self{ImageDataHash}->hexdigest;
# (don't store empty digest)
- $self->FoundTag(ImageDataMD5 => $digest) unless $digest eq 'd41d8cd98f00b204e9800998ecf8427e';
+ $self->FoundTag(ImageDataHash => $digest) unless
+ $digest eq 'd41d8cd98f00b204e9800998ecf8427e' or
+ $digest eq 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' or
+ $digest eq 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e';
}
# ($type may be undef without an Error when processing sub-documents)
@@ -5582,6 +5602,7 @@ my %formatSize = (
ifd => 4,
ifd64 => 8,
ue7 => 1,
+ utf8 => 1, # (Exif 3.0)
);
my %readValueProc = (
int8s => \&Get8s,
@@ -6487,15 +6508,15 @@ sub ProcessJPEG($$)
my $req = $$self{REQ_TAG_LOOKUP};
my $htmlDump = $$self{HTML_DUMP};
my %dumpParms = ( Out => $out );
- my ($ch, $s, $length, $md5, $md5size);
+ my ($ch, $s, $length, $hash, $hashsize);
my ($success, $wantTrailer, $trailInfo, $foundSOS, $gotSize, %jumbfChunk);
my (@iccChunk, $iccChunkCount, $iccChunksTotal, @flirChunk, $flirCount, $flirTotal);
my ($preview, $scalado, @dqt, $subSampling, $dumpEnd, %extendedXMP);
- # get pointer to MD5 object if it exists and we are the top-level JPEG or JP2
+ # get pointer to hash object if it exists and we are the top-level JPEG or JP2
if ($$self{FILE_TYPE} =~ /^(JPEG|JP2)$/ and not $$self{DOC_NUM}) {
- $md5 = $$self{ImageDataMD5};
- $md5size = 0;
+ $hash = $$self{ImageDataHash};
+ $hashsize = 0;
}
# check to be sure this is a valid JPG (or J2C, or EXV) file
@@ -6544,7 +6565,7 @@ sub ProcessJPEG($$)
#
# read ahead to the next segment unless we have reached EOI, SOS or SOD
#
- unless ($marker and ($marker==0xd9 or ($marker==0xda and not $wantTrailer and not $md5) or
+ unless ($marker and ($marker==0xd9 or ($marker==0xda and not $wantTrailer and not $hash) or
$marker==0x93))
{
# read up to next marker (JPEG markers begin with 0xff)
@@ -6576,19 +6597,19 @@ sub ProcessJPEG($$)
$nextSegPos = $raf->Tell();
$len -= 4; # subtract size of length word
last unless $raf->Seek($len, 1);
- } elsif ($md5 and defined $marker and ($marker == 0x00 or $marker == 0xda or
+ } elsif ($hash and defined $marker and ($marker == 0x00 or $marker == 0xda or
($marker >= 0xd0 and $marker <= 0xd7)))
{
- # calculate MD5 for image data (includes leading ff d9 but not trailing ff da)
- $md5->add("\xff" . chr($marker));
+ # calculate hash for image data (includes leading ff d9 but not trailing ff da)
+ $hash->add("\xff" . chr($marker));
my $n = $skipped - (length($buff) - 1); # number of extra 0xff's
if (not $n) {
$buff = substr($buff, 0, -1); # remove trailing 0xff
} elsif ($n > 1) {
$buff .= "\xff" x ($n - 1); # add back extra 0xff's
}
- $md5->add($buff);
- $md5size += $skipped + 2;
+ $hash->add($buff);
+ $hashsize += $skipped + 2;
}
# read second segment too if this was the first
next unless defined $marker;
@@ -6800,7 +6821,7 @@ sub ProcessJPEG($$)
next if $trailInfo or $wantTrailer or $verbose > 2 or $htmlDump;
}
# must scan to EOI if Validate or JpegCompressionFactor used
- next if $$options{Validate} or $calcImageLen or $$req{trailer} or $md5;
+ next if $$options{Validate} or $calcImageLen or $$req{trailer} or $hash;
# nothing interesting to parse after start of scan (SOS)
$success = 1;
last; # all done parsing file
@@ -6808,9 +6829,9 @@ sub ProcessJPEG($$)
pop @$path;
$verbose and print $out "JPEG SOD\n";
$success = 1;
- if ($md5 and $$self{FILE_TYPE} eq 'JP2') {
+ if ($hash and $$self{FILE_TYPE} eq 'JP2') {
my $pos = $raf->Tell();
- $self->ImageDataMD5($raf, undef, 'SOD');
+ $self->ImageDataHash($raf, undef, 'SOD');
$raf->Seek($pos, 0);
}
next if $verbose > 2 or $htmlDump;
@@ -6829,7 +6850,7 @@ sub ProcessJPEG($$)
or ($$options{RequestAll} and $$options{RequestAll} > 2)))
{
my $num = unpack('C',$$segDataPt) & 0x0f; # get table index
- $dqt[$num] = $$segDataPt if $num < 4; # save for MD5 calculation
+ $dqt[$num] = $$segDataPt if $num < 4; # save for hash calculation
}
# handle all other markers
my $dumpType = '';
@@ -7612,8 +7633,8 @@ sub ProcessJPEG($$)
delete $extendedXMP{$guid};
}
}
- # print verbose MD5 message if necessary
- print $out "$$self{INDENT}(ImageDataMD5: $md5size bytes of JPEG image data)\n" if $md5size and $verbose;
+ # print verbose hash message if necessary
+ print $out "$$self{INDENT}(ImageDataHash: $hashsize bytes of JPEG image data)\n" if $hashsize and $verbose;
# calculate JPEGDigest if requested
if (@dqt) {
require Image::ExifTool::JPEGDigest;
@@ -7889,8 +7910,8 @@ sub DoProcessTIFF($$;$)
if ($$self{TIFF_TYPE} eq 'TIFF') {
$self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
}
- if ($$self{ImageDataMD5} and $$self{A100DataOffset} and $raf->Seek($$self{A100DataOffset},0)) {
- $self->ImageDataMD5($raf, undef, 'A100');
+ if ($$self{ImageDataHash} and $$self{A100DataOffset} and $raf->Seek($$self{A100DataOffset},0)) {
+ $self->ImageDataHash($raf, undef, 'A100');
}
return 1;
}
diff --git a/lib/Image/ExifTool.pod b/lib/Image/ExifTool.pod
index 1ad96ac5..a70d2514 100644
--- a/lib/Image/ExifTool.pod
+++ b/lib/Image/ExifTool.pod
@@ -65,10 +65,11 @@ supported by ExifTool (r = read, w = write, c = create):
File Types
------------+-------------+-------------+-------------+------------
- 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RSRC r
- 3FR r | DSS r | JP2 r/w | ODS r | RTF r
- 3G2 r/w | DV r | JPEG r/w | ODT r | RW2 r/w
- 3GP r/w | DVB r/w | JSON r | OFR r | RWL r/w
+ 360 r/w | DPX r | J2C r | O r | RIFF r
+ 3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
+ 3G2 r/w | DSS r | JP2 r/w | ODS r | RTF r
+ 3GP r/w | DV r | JPEG r/w | ODT r | RW2 r/w
+ 7Z r | DVB r/w | JSON r | OFR r | RWL r/w
A r | DVR-MS r | JXL r | OGG r | RWZ r
AA r | DYLIB r | K25 r | OGV r | RM r
AAE r | EIP r | KDC r | ONP r | SEQ r
@@ -107,7 +108,6 @@ supported by ExifTool (r = read, w = write, c = create):
DNG r/w | INX r | NKSC r/w | RAM r |
DOC r | ISO r | NRW r/w | RAR r |
DOCX r | ITC r | NUMBERS r | RAW r/w |
- DPX r | J2C r | O r | RIFF r |
Meta Information
----------------------+----------------------+---------------------
@@ -301,6 +301,10 @@ of tag keys, and with other L</Sort> settings the entries may not be in the
same order as requested.) If a requested tag doesn't exist, a tag key is
still generated, but the tag value is undefined.
+B<Note:> Do not reuse this list in subsequent calls to L</ImageInfo> because
+it returns tag keys, not names, and the list will grow for each call
+resulting in increasingly slower performance.
+
=item HASH ref
Reference to a hash containing the options settings valid for this call
@@ -569,7 +573,9 @@ Flag to generate Composite tags when extracting information. Default is 1.
=item Compress
Flag to write new values in compressed format if possible. Has no effect
-unless Compress::Zlib is installed. Default is undef.
+unless the relevant compression library is available. Valid when writing
+metadata to PNG, JXL or MIE images. Setting this to zero causes JXL
+metadata to be rewritten as uncompressed when edited. Default is undef.
=item CoordFormat
@@ -791,6 +797,11 @@ allowed. A special tag name of "All" may be used to ignore all tags except
those specified by the L</RequestTags> option. Set to undef to clear the
previous IgnoreTags list. Default is undef.
+=item ImageHashType
+
+Sets type of hash algorithem used for the ImageDataHash tag calculation.
+Supported options are 'MD5', 'SHA256', and 'SHA512'. Default is 'MD5'.
+
=item Lang
Localized language for exiftool tag descriptions, etc. Available languages
diff --git a/lib/Image/ExifTool/7Z.pm b/lib/Image/ExifTool/7Z.pm
new file mode 100644
index 00000000..1b8d0bc9
--- /dev/null
+++ b/lib/Image/ExifTool/7Z.pm
@@ -0,0 +1,793 @@
+#------------------------------------------------------------------------------
+# File: 7Z.pm
+#
+# Description: Read 7z archive meta information
+#
+# Revisions: 2023/04/28 - Amir Gooran (Cyberno)
+# 2023-05-06 - PH Minor changes in ExifTool interfacing
+#
+# References: 1) https://py7zr.readthedocs.io/en/latest/archive_format.html
+#------------------------------------------------------------------------------
+
+package Image::ExifTool::7Z;
+
+use strict;
+use vars qw($VERSION);
+use Image::ExifTool qw(:DataAccess :Utils);
+
+$VERSION = '1.00';
+
+sub ReadUInt32 {
+ my $buff;
+
+ $_[0]->Read($buff, 4);
+ my ($output) = unpack('L', $buff);
+ return $output;
+}
+
+sub ReadUInt64 {
+ my $buff;
+ my $output;
+
+ $_[0]->Read($buff, 1);
+ my $b = ord($buff);
+ if($b == 255){ # read real uint64
+ $_[0]->Read($buff, 8);
+ my ($output) = unpack('Q', $buff);
+ return $output;
+ }
+ my @blen = (0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE);
+
+ my $mask = 0x80;
+ my $vlen = 8;
+
+ for (my $l = 0 ; $l < scalar(@blen) ; $l++) {
+ my $v = $blen[$l];
+ if($b <= $v){
+ $vlen = $l;
+ last;
+ }
+ $mask >>= 1;
+ }
+ if($vlen == 0){
+ return $b & ($mask - 1);
+ }
+ $_[0]->Read($buff, $vlen);
+ $buff .= "\0\0\0\0\0\0\0\0";
+
+ my $value = unpack('Q', $buff);
+ my $highpart = $b & ($mask - 1);
+ return $value + ($highpart << ($vlen * 8));
+}
+
+sub ReadRealUInt64 {
+ my $buff;
+
+ $_[0]->Read($buff, 8);
+ my $value = unpack('Q', $buff);
+ return $value;
+}
+
+sub ReadBoolean {
+ my $buff;
+ my $count = $_[1];
+ my $checkall = $_[2];
+ my @result = ();
+
+ if($checkall){
+ $_[0]->Read($buff, 1);
+ my $all_defined = ord($buff);
+ if($all_defined != 0){
+ @result = (1)x$count;
+ return @result;
+ }
+ }
+
+ my $b = 0;
+ my $mask = 0;
+
+ for (my $i = 0 ; $i < $count ; $i++) {
+ if($mask == 0){
+ $_[0]->Read($buff, 1);
+ $b = ord($buff);
+ $mask = 0x80;
+ }
+ push(@result, ($b & $mask) != 0);
+ $mask >>= 1;
+ }
+ return @result;
+}
+
+sub ReadUTF16 {
+ my $val = "";
+ my $ch;
+
+ for(my $i=0; $i < 65536; $i++){
+ $_[0]->Read($ch, 2);
+ if($ch eq "\0\0"){
+ last;
+ }
+ $val .= $ch;
+ }
+ return $val;
+}
+
+sub ReadPackInfo {
+ my $et = shift;
+
+ my $buff;
+ my %out_packinfo = ();
+ $out_packinfo{"packsizes"} = ();
+
+ $out_packinfo{"packpos"} = ReadUInt64($_[0]);
+ my $numstreams = ReadUInt64($_[0]);
+ $et->VPrint(0, "Number Of Streams: $numstreams\n");
+
+ $_[0]->Read($buff, 1);
+ my $pid = ord($buff);
+
+ my @packsizes;
+ if($pid == 9){ # size
+ for (my $i = 0 ; $i < $numstreams ; $i++) {
+ push(@{ $out_packinfo{"packsizes"} }, ReadUInt64($_[0]));
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ if($pid == 10){ # crc
+ my @crcs;
+ my @digestdefined = ReadBoolean($_[0], $numstreams, 1);
+ foreach my $crcexist (@digestdefined) {
+ if($crcexist){
+ push(@crcs, ReadUInt32($_[0]));
+ }
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ }
+ if($pid != 0) { # end id expected
+ return 0;
+ }
+ return \%out_packinfo;
+}
+
+sub findInBinPair {
+ my @bindpairs = @{$_[0]};
+ my $index = $_[1];
+
+ for (my $i = 0; $i < scalar(@bindpairs); $i++) {
+ if($bindpairs[$i] == $index){
+ return $i;
+ }
+ }
+ return -1;
+}
+
+sub ReadFolder {
+ my $et = shift;
+ my $buff;
+ my $totalin = 0;
+ my $totalout = 0;
+ my %out_folder = ();
+ $out_folder{"packed_indices"} = ();
+ $out_folder{"bindpairs"} = ();
+ $out_folder{"coders"} = ();
+
+ my $num_coders = ReadUInt64($_[0]);
+ $et->VPrint(0, "Number of coders: $num_coders\n");
+
+ for (my $i = 0; $i < $num_coders; $i++) {
+ my %c = ();
+ $_[0]->Read($buff, 1);
+ my $b = ord($buff);
+ my $methodsize = $b & 0xF;
+ my $iscomplex = ($b & 0x10) == 0x10;
+ my $hasattributes = ($b & 0x20) == 0x20;
+ if($methodsize > 0){
+ $_[0]->Read($buff, $methodsize);
+ $c{"method"} = $buff;
+ }
+ else{
+ $c{"method"} = "\0";
+ }
+ if($iscomplex){
+ $c{"numinstreams"} = ReadUInt64($_[0]);
+ $c{"numoutstreams"} = ReadUInt64($_[0]);
+ }
+ else{
+ $c{"numinstreams"} = 1;
+ $c{"numoutstreams"} = 1;
+ }
+ $totalin += $c{"numinstreams"};
+ $totalout += $c{"numoutstreams"};
+ if($hasattributes){
+ my $proplen = ReadUInt64($_[0]);
+ $_[0]->Read($buff, $proplen);
+ $c{"properties"} = $buff;
+ }
+ else {
+ $c{"properties"} = undef;
+ }
+ $et->VPrint(0, "Reading coder $i\n");
+ push(@{ $out_folder{"coders"} }, \%c);
+ }
+ my $num_bindpairs = $totalout - 1;
+ for (my $i = 0; $i < $num_bindpairs; $i++) {
+ my @bond = (ReadUInt64($_[0]), ReadUInt64($_[0]));
+ push(@{ $out_folder{"bindpairs"} }, @bond);
+ }
+ my $num_packedstreams = $totalin - $num_bindpairs;
+ if($num_packedstreams == 1){
+ for (my $i = 0; $i < $totalin; $i++) {
+ if(findInBinPair(\@{ $out_folder{"bindpairs"} }, $i) < 0){
+ push(@{ $out_folder{"packed_indices"} }, $i);
+ }
+ }
+ }
+ else{
+ for (my $i = 0; $i < $num_packedstreams; $i++) {
+ push(@{ $out_folder{"packed_indices"} }, ReadUInt64($_[0]));
+ }
+ }
+
+ return \%out_folder;
+}
+
+sub RetrieveCodersInfo{
+ my $et = shift;
+ my $buff;
+ my @folders = @{ $_[1] };
+
+ $_[0]->Read($buff, 1);
+ my $pid = ord($buff);
+
+ if($pid != 0x0c){ # coders unpack size id expected
+ return 0;
+ }
+ foreach my $folder (@folders) {
+ $folder->{"unpacksizes"} = ();
+ foreach my $c (@{ $folder->{"coders"} }) {
+ for (my $i = 0 ; $i < $c->{"numoutstreams"} ; $i++) {
+ push(@{ $folder->{"unpacksizes" } }, ReadUInt64($_[0]));
+ }
+ }
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+
+ if($pid == 0x0a){ #crc
+ my $numfolders = scalar(@folders);
+ $et->VPrint(0, "Number of folders: $numfolders\n");
+ my @defined = ReadBoolean($_[0], $numfolders, 1);
+ my @crcs;
+ foreach my $crcexist (@defined) {
+ if($crcexist){
+ push(@crcs, ReadUInt32($_[0]));
+ }
+ }
+ for (my $i = 0 ; $i < $numfolders ; $i++) {
+ $folders[$i]->{"digestdefined"} = $defined[$i];
+ $folders[$i]->{"crc"} = $crcs[$i];
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+
+ if($pid != 0x00){ # end id expected
+ $et->VPrint(0, "Invalid PID: $pid\n");
+ return 0;
+ }
+ return 1;
+}
+
+sub ReadUnpackInfo {
+ my $et = shift;
+ my $buff;
+ my %out_unpackinfo = ();
+
+ $_[0]->Read($buff, 1);
+ my $pid = ord($buff);
+
+ if($pid != 0xb) { # folder id expected
+ return 0;
+ }
+
+ $out_unpackinfo{"numfolders"} = ReadUInt64($_[0]);
+ $out_unpackinfo{"folders"} = ();
+
+ $_[0]->Read($buff, 1);
+ my $external = ord($buff);
+
+ if($external == 0x00){
+ for (my $i = 0 ; $i < $out_unpackinfo{"numfolders"}; $i++) {
+ $et->VPrint(0, "Reading folder $i\n");
+ my $folder = ReadFolder($et, $_[0]);
+ push(@{ $out_unpackinfo{"folders"} }, $folder);
+ }
+ }
+ return 0 unless RetrieveCodersInfo($et, $_[0], $out_unpackinfo{"folders"});
+ return \%out_unpackinfo;
+}
+
+sub ReadSubstreamsInfo {
+ my $et = shift;
+ my $buff;
+ my %out_substreamsinfo = ();
+ $out_substreamsinfo{"num_unpackstreams_folders"} = ();
+
+ my $numfolders = $_[1];
+ my $folders = $_[2];
+
+ $_[0]->Read($buff, 1);
+ my $pid = ord($buff);
+ if($pid == 13){ # num unpack stream
+ $et->VPrint(0, "Num unpack stream detected.\n");
+ for (my $i = 0 ; $i < $numfolders; $i++) {
+ push(@{ $out_substreamsinfo{"num_unpackstreams_folders"} }, ReadUInt64($_[0]));
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ else{
+ @{ $out_substreamsinfo{"num_unpackstreams_folders"} } = (1)x$numfolders;
+ }
+ if($pid == 9){ # size property
+ $et->VPrint(0, "Size property detected.\n");
+ $out_substreamsinfo{"unpacksizes"} = ();
+ for(my $i=0; $i< scalar(@{ $out_substreamsinfo{"num_unpackstreams_folders"} }); $i++){
+ my $totalsize = 0;
+ for(my $j=1; $j < @{ $out_substreamsinfo{"num_unpackstreams_folders"} }[$i]; $j++){
+ my $size = ReadUInt64($_[0]);
+ push(@{ $out_substreamsinfo{"unpacksizes"} }, $size);
+ $totalsize += $size;
+ }
+ # self.unpacksizes.append(folders[i].get_unpack_size() - totalsize)
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ my $num_digests = 0;
+ my $num_digests_total = 0;
+ for (my $i = 0 ; $i < $numfolders; $i++) {
+ my $numsubstreams = @{ $out_substreamsinfo{"num_unpackstreams_folders"} }[$i];
+ if($numsubstreams != 1 or not @{ $folders }[$i]->{"digestdefined"}){
+ $num_digests += $numsubstreams;
+ }
+ $num_digests_total += $numsubstreams;
+ }
+ $et->VPrint(0, "Num Digests Total: $num_digests_total\n");
+ if($pid == 10) { # crc property
+ $et->VPrint(0, "CRC property detected.\n");
+ my @crcs;
+ my @defined = ReadBoolean($_[0], $num_digests, 1);
+ foreach my $crcexist (@defined) {
+ push(@crcs, ReadUInt32($_[0]));
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ if($pid != 0x00){ # end id expected
+ return 0;
+ }
+ return \%out_substreamsinfo;
+}
+
+sub ReadStreamsInfo {
+ my $et = shift;
+ my $buff;
+ my $unpackinfo;
+ my %out_streamsinfo = ();
+
+ $_[0]->Read($buff, 1);
+ my $pid = ord($buff);
+ if($pid == 6){ # pack info
+ my $packinfo = ReadPackInfo($et, $_[0]);
+ return 0 unless $packinfo;
+ $out_streamsinfo{"packinfo"} = $packinfo;
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ if($pid == 7) { # unpack info
+ $et->VPrint(0, "Unpack info data detected.\n");
+ $unpackinfo = ReadUnpackInfo($et, $_[0]);
+ return 0 unless $unpackinfo;
+ $out_streamsinfo{"unpackinfo"} = $unpackinfo;
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ if($pid == 8){ # substreams info
+ $et->VPrint(0, "Substreams info data detected.\n");
+ my $substreamsinfo = ReadSubstreamsInfo($et, $_[0], $unpackinfo->{"numfolders"}, $unpackinfo->{"folders"});
+ return 0 unless $substreamsinfo;
+ $out_streamsinfo{"substreamsinfo"} = $substreamsinfo;
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ if($pid != 0x00){ # end id expected
+ $et->VPrint(0, "Invalid PID: $pid\n");
+ return 0;
+ }
+ return \%out_streamsinfo;
+}
+
+sub IsNativeCoder {
+ my $coder = $_[0];
+
+ if(ord(substr($coder->{"method"}, 0, 1)) == 3){
+ if(ord(substr($coder->{"method"}, 1, 1)) == 1) {
+ if(ord(substr($coder->{"method"}, 2, 1)) == 1) {
+ return "LZMA";
+ }
+ }
+ }
+ elsif(ord(substr($coder->{"method"}, 0, 1)) == 6){
+ if(ord(substr($coder->{"method"}, 1, 1)) == 0xf1) {
+ if(ord(substr($coder->{"method"}, 2, 1)) == 7) {
+ if(ord(substr($coder->{"method"}, 3, 1)) == 1) {
+ return "7zAES";
+ }
+ }
+ }
+ }
+}
+
+sub GetDecompressor {
+ my $et = shift;
+
+ my $folder = $_[0];
+ my %out_decompressor = ();
+ $out_decompressor{"chain"} = ();
+ $out_decompressor{"input_size"} = $_[1];
+ $out_decompressor{"_unpacksizes"} = $folder->{"unpacksizes"};
+ @{ $out_decompressor{"_unpacked"} } = (0) x scalar(@{ $out_decompressor{"_unpacksizes"} });
+ $out_decompressor{"consumed"} = 0;
+ $out_decompressor{"block_size"} = 32768;
+ $out_decompressor{"_unused"} = [];
+
+ foreach my $coder (@{ $folder->{"coders"} }) {
+ my $algorithm = IsNativeCoder($coder);
+ if($algorithm eq "7zAES") {
+ $et->Warn("File is encrypted.", 0);
+ return 0;
+ }
+ else{
+ push(@{ $out_decompressor{"chain"} }, $algorithm);
+ }
+ }
+
+ return \%out_decompressor;
+}
+
+sub ReadData {
+ my $et = shift;
+ my $decompressor = $_[1];
+ my $rest_size = $decompressor->{"input_size"} - $decompressor->{"consumed"};
+ my $unused_s = scalar(@{ $decompressor->{"_unused"} });
+ my $read_size = $rest_size - $unused_s;
+ my $data = "";
+ if($read_size > $decompressor->{"block_size"} - $unused_s){
+ $read_size = $decompressor->{"block_size"} - $unused_s;
+ }
+ if($read_size > 0){
+ $decompressor->{"consumed"} += $_[0]->Read($data, $read_size);
+ $et->VPrint(0, "Compressed size: $read_size\n");
+ }
+ return $data;
+}
+
+sub Decompress_Internal {
+ my $data = "";
+ for(my $i=0; $i < scalar(@{ $_[0]->{"chain"} }); $i++){
+ if(@{ $_[0]->{"_unpacked"} }[$i] < @{ $_[0]->{"_unpacksizes"} }[$i]){
+ my %opts = ();
+ $opts{"Filter"} = Lzma::Filter::Lzma1();
+ my ($z, $status) = Compress::Raw::Lzma::RawDecoder->new( %opts );
+ $status = $z->code($_[1], $data);
+ @{ $_[0]->{"_unpacked"} }[$i] += length($data);
+ }
+ }
+ return $data;
+}
+
+sub Decompress {
+ my $et = shift;
+ my $max_length = $_[1];
+ my $data = ReadData($et, $_[0], $_[1]);
+ my $tmp = Decompress_Internal($_[1], $data);
+ return $tmp;
+}
+
+sub ReadName {
+ my $numfiles = $_[1];
+
+ for(my $i=0; $i < $numfiles; $i++){
+ @{ $_[2] }[$i]->{"filename"} = ReadUTF16($_[0]);
+ }
+}
+
+sub ReadTimes {
+ my $et = shift;
+ my $external;
+ my $numfiles = $_[1];
+ my $name = $_[2];
+
+ my @defined = ReadBoolean($_[0], $numfiles, 1);
+ $_[0]->Read($external, 1);
+ if(ord($external) != 0){
+ $et->Warn("Invalid or corrupted file. (ReadTimes)");
+ return 0;
+ }
+
+ for(my $i=0; $i < $numfiles; $i++){
+ if($defined[$i]){
+ my $value = ReadRealUInt64($_[0]);
+ $value = $value / 10000000.0 - 11644473600;
+ @{ $_[3] }[$i]->{$name} = $value;
+ }
+ else{
+ @{ $_[3] }[$i]->{$name} = undef;
+ }
+ }
+}
+
+sub ReadAttributes {
+ my $numfiles = $_[1];
+
+ for(my $i=0; $i < $numfiles; $i++){
+ if($_[2][$i]){
+ my $value = ReadUInt32($_[0]);
+ @{ $_[3] }[$i]->{"attributes"} = $value >> 8;
+ }
+ else{
+ @{ $_[3] }[$i]->{"attributes"} = undef;
+ }
+ }
+}
+
+sub ReadFilesInfo {
+ my $et = shift;
+ my $buff;
+
+ my $numfiles = ReadUInt64($_[0]);
+ my @out_files = ();
+ for(my $i = 0; $i < $numfiles; $i++){
+ my %new_file = ();
+ $new_file{"emptystream"} = 0;
+ push(@out_files, \%new_file);
+ }
+ my $numemptystreams = 0;
+ $et->VPrint(0, "Number of files: $numfiles\n");
+ while(1){
+ $_[0]->Read($buff, 1);
+ my $prop = ord($buff);
+ if($prop == 0){ # end
+ return \@out_files;
+ }
+ my $size = ReadUInt64($_[0]);
+ if($prop == 25) { # dummy
+ $_[0]->Seek($size, 1);
+ next;
+ }
+ $_[0]->Read($buff, $size);
+ my $buffer = new File::RandomAccess(\$buff);
+ if($prop == 14){ # empty stream
+ my @isempty = ReadBoolean($buffer, $numfiles, 0);
+ my $numemptystreams = 0;
+ for(my $i = 0; $i < $numfiles; $i++){
+ if($isempty[$i] == 0){
+ $out_files[$i]->{"emptystream"} = 0;
+ }
+ else{
+ $out_files[$i]->{"emptystream"} = 1;
+ $numemptystreams++;
+ }
+ }
+ }
+ elsif($prop == 15) { # empty file
+
+ }
+ elsif($prop == 17){ # name
+ $et->VPrint(0, "Name prop detected.\n");
+ my $external;
+ $buffer->Read($external, 1);
+ my $is_external = ord($external);
+ if($is_external == 0){
+ ReadName($buffer, $numfiles, \@out_files);
+ }
+ }
+ elsif($prop == 20){ # last write time
+ $et->VPrint(0, "Last write time detected.\n");
+ ReadTimes($et, $buffer, $numfiles, "lastwritetime", \@out_files);
+ }
+ elsif($prop == 21){ # attributes
+ $et->VPrint(0, "File attributes detected.\n");
+ my $external;
+ my @defined = ReadBoolean($buffer, $numfiles, 1);
+ $_[0]->Read($external, 1);
+ if(ord($external) == 0){
+ ReadAttributes($buffer, $numfiles, \@defined, \@out_files);
+ }
+ else{
+ my $dataindex = ReadUINT64($buffer);
+ #TODO: try to read external data
+ }
+ }
+ }
+}
+
+sub ExtractHeaderInfo {
+ my $et = shift;
+ my $buff;
+ my %out_headerinfo = ();
+ $out_headerinfo{"files_info"} = ();
+ my $files_info;
+
+ $_[0]->Read($buff, 1);
+ my $pid = ord($buff);
+
+ if($pid == 0x04){
+ my $mainstreams = ReadStreamsInfo($et, $_[0]);
+ if($mainstreams == 0){
+ $et->Warn("Invalid or corrupted file. (ExtractHeaderInfo)");
+ return 0;
+ }
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ if($pid == 0x05){
+ $et->VPrint(0, "File info pid reached.\n");
+ $files_info = ReadFilesInfo($et, $_[0]);
+ push(@{ $out_headerinfo{"files_info"} }, $files_info);
+ $_[0]->Read($buff, 1);
+ $pid = ord($buff);
+ }
+ if($pid != 0x00){ # end id expected
+ $et->VPrint(0, "Invalid PID: $pid\n");
+ return 0;
+ }
+ return \%out_headerinfo;
+}
+
+sub DisplayFiles {
+ my $et = shift;
+ my $docNum = 0;
+ my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
+
+ foreach my $currentfile (@{ $_[0] }){
+ $$et{DOC_NUM} = ++$docNum;
+ $et->HandleTag($tagTablePtr, 'ModifyDate', $currentfile->{"lastwritetime"});
+ $et->HandleTag($tagTablePtr, 'ArchivedFileName', $currentfile->{"filename"});
+ }
+ delete $$et{DOC_NUM};
+ if($docNum > 1 and not $et->Options('Duplicates')){
+ $et->Warn("Use the Duplicates option to extract tags for all $docNum files", 1);
+ }
+}
+
+#------------------------------------------------------------------------------
+# Extract information from a 7z file
+# Inputs: 0) ExifTool object reference, 1) dirInfo reference
+# Returns: 1 on success, 0 if this wasn't a valid 7z file
+sub Process7Z($$)
+{
+ my ($et, $dirInfo) = @_;
+ my $raf = $$dirInfo{RAF};
+ my ($flags, $buff);
+
+ return 0 unless $raf->Read($buff, 6) and $buff eq "7z\xbc\xaf\x27\x1c";
+
+ $et->SetFileType();
+
+ $raf->Read($buff, 2);
+ my ($major_version, $minor_version) = unpack('cc', $buff);
+ my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
+ $et->HandleTag($tagTablePtr, 'FileVersion', sprintf('7z v%d.%.2d',$major_version,$minor_version));
+
+ $raf->Seek(4, 1); # skip Start Header CRC
+
+ $raf->Read($buff, 20);
+ my ($nextheaderoffset, $nextheadersize) = unpack('QQx', $buff);
+ $et->VPrint(0, "NextHeaderOffset: $nextheaderoffset, NextHeaderSize: $nextheadersize\n");
+
+ $raf->Seek($nextheaderoffset, 1); # going to next header offset
+ $raf->Read($buff, 1);
+ my $pid = ord($buff);
+ if($pid == 1){ # normal header
+ $et->VPrint(0,"Normal header detected. trying to decode\n");
+ my $headerinfo = ExtractHeaderInfo($et, $raf);
+ if($headerinfo == 0){
+ $et->Warn("Invalid or corrupted file.");
+ return 1;
+ }
+ DisplayFiles($et, @{ $headerinfo->{"files_info"} });
+ }
+ elsif($pid == 23){ # encoded header
+ unless (eval { require Compress::Raw::Lzma }) {
+ $et->Warn("Install Compress::Raw::Lzma to read encoded 7z information");
+ return 1;
+ }
+ $et->VPrint(0, "Encoded Header detected. trying to decode\n");
+ my $streamsinfo = ReadStreamsInfo($et, $raf);
+ if($streamsinfo == 0){
+ $et->Warn("Invalid or corrupted file.");
+ return 1;
+ }
+ my $buffer2 = ();
+ foreach my $folder (@{ $streamsinfo->{"unpackinfo"}->{"folders"} }) {
+ my @uncompressed = @{ $folder->{"unpacksizes"} };
+ my $compressed_size = $streamsinfo->{"packinfo"}->{"packsizes"}[0];
+ my $uncompressed_size = @uncompressed[scalar(@uncompressed) - 1];
+ my $decomporessor = GetDecompressor($et, $folder, $compressed_size);
+ if($decomporessor == 0){
+ $et->Warn("Invalid or corrupted file.");
+ return 1;
+ }
+
+ my $src_start = 32;
+ $src_start += $streamsinfo->{"packinfo"}->{"packpos"};
+ $raf->Seek($src_start, 0);
+ my $remaining = $uncompressed_size;
+ my $folder_data = "";
+ while($remaining > 0){
+ $folder_data .= Decompress($et, $raf, $decomporessor, $remaining);
+ $remaining = $uncompressed_size - length($folder_data);
+ }
+ $buffer2 = new File::RandomAccess(\$folder_data);
+ }
+ $buffer2->Seek(0, 0);
+ $buffer2->Read($buff, 1);
+ $pid = ord($buff);
+ if($pid != 0x01){ # header field expected
+ return 0;
+ }
+ my $headerinfo = ExtractHeaderInfo($et, $buffer2);
+ if($headerinfo == 0){
+ $et->Warn("Invalid or corrupted file.");
+ return 1;
+ }
+ DisplayFiles($et, @{ $headerinfo->{"files_info"} });
+ }else{ # Unknown header
+ return 0;
+ }
+
+ return 1;
+}
+
+1; # end
+
+__END__
+
+=head1 NAME
+
+Image::ExifTool::7Z - Read 7z archives
+
+=head1 SYNOPSIS
+
+This module is used by Image::ExifTool
+
+=head1 DESCRIPTION
+
+This module contains definitions required by Image::ExifTool to extract meta
+information from 7z archives.
+
+=head1 AUTHOR
+
+Copyright 2023, Amir Gooran
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 REFERENCES
+
+=over 4
+
+=item L<https://py7zr.readthedocs.io/en/latest/archive_format.html>
+
+=back
+
+=head1 SEE ALSO
+
+L<Image::ExifTool::TagNames/ZIP RAR5 Tags>
+
+=cut
+
diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm
index 65e1b022..30ba70ab 100644
--- a/lib/Image/ExifTool/Canon.pm
+++ b/lib/Image/ExifTool/Canon.pm
@@ -2092,6 +2092,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
TagTable => 'Image::ExifTool::Canon::AFConfig',
}
},
+ # 0x402b - crop information (forum14904)
0x403f => { #25
Name => 'RawBurstModeRoll',
SubDirectory => {
diff --git a/lib/Image/ExifTool/CanonRaw.pm b/lib/Image/ExifTool/CanonRaw.pm
index 58805865..53f619f9 100644
--- a/lib/Image/ExifTool/CanonRaw.pm
+++ b/lib/Image/ExifTool/CanonRaw.pm
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::Canon;
-$VERSION = '1.60';
+$VERSION = '1.61';
sub WriteCRW($$);
sub ProcessCanonRaw($$$);
@@ -698,9 +698,9 @@ sub ProcessCanonRaw($$$)
$format ne 'string' and not $subdir;
} else {
$valueDataPos = $ptr;
- # do MD5 of image data if requested
- if ($$et{ImageDataMD5} and $tagID == 0x2005) {
- $raf->Seek($ptr, 0) and $et->ImageDataMD5($raf, $size, 'raw');
+ # do hash of image data if requested
+ if ($$et{ImageDataHash} and $tagID == 0x2005) {
+ $raf->Seek($ptr, 0) and $et->ImageDataHash($raf, $size, 'raw');
}
if ($size <= 512 or ($verbose > 2 and $size <= 65536)
or ($tagInfo and ($$tagInfo{SubDirectory}
diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm
index 9382c5f4..55b41159 100644
--- a/lib/Image/ExifTool/Exif.pm
+++ b/lib/Image/ExifTool/Exif.pm
@@ -43,6 +43,7 @@
# 30) http://geotiff.maptools.org/spec/geotiffhome.html
# 31) https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_tag_codes.h
# 32) Jeffry Friedl private communication
+# 33) https://www.cipa.jp/std/documents/download_e.html?DC-008-Translation-2023-E (Exif 3.0)
# IB) Iliah Borg private communication (LibRaw)
# JD) Jens Duttke private communication
#------------------------------------------------------------------------------
@@ -65,7 +66,7 @@ sub RebuildMakerNotes($$$);
sub EncodeExifText($$);
sub ValidateIFD($;$);
sub ValidateImageData($$$;$);
-sub AddImageDataMD5($$$);
+sub AddImageDataHash($$$);
sub ProcessTiffIFD($$$);
sub PrintParameter($$$);
sub GetOffList($$$$$);
@@ -79,6 +80,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
# byte sizes for the various EXIF format types below
@formatSize = (undef,1,1,2,4,8,1,1,2,4,8,4,8,4,2,8,8,8,8);
+$formatSize[129] = 1; # (Exif 3.0)
@formatName = (
undef, 'int8u', 'string', 'int16u',
@@ -87,6 +89,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
'double', 'ifd', 'unicode', 'complex',
'int64u', 'int64s', 'ifd64', # (new BigTIFF formats)
);
+$formatName[129] = 'utf8'; # (Exif 3.0)
# hash to look up EXIF format numbers by name
# (format types are all lower case)
@@ -110,6 +113,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
'int64u' => 16, # LONG8 [BigTIFF]
'int64s' => 17, # SLONG8 [BigTIFF]
'ifd64' => 18, # IFD8 (with int64u format) [BigTIFF]
+ 'utf8' => 129,# UTF-8 (Exif 3.0)
# Note: unicode and complex types are not yet properly supported by ExifTool.
# These are types which have been observed in the Adobe DNG SDK code, but
# aren't fully supported there either. We know the sizes, but that's about it.
@@ -2823,6 +2827,13 @@ my %opcodeInfo = (
0xa433 => { Name => 'LensMake', Writable => 'string' }, #24
0xa434 => { Name => 'LensModel', Writable => 'string' }, #24
0xa435 => { Name => 'LensSerialNumber', Writable => 'string' }, #24
+ 0xa436 => { Name => 'Title', Writable => 'string', Avoid => 1 }, #33
+ 0xa437 => { Name => 'Photographer', Writable => 'string' }, #33
+ 0xa438 => { Name => 'ImageEditor', Writable => 'string' }, #33
+ 0xa439 => { Name => 'CameraFirmware', Writable => 'string' }, #33
+ 0xa43a => { Name => 'RAWDevelopingSoftware', Writable => 'string' }, #33
+ 0xa43b => { Name => 'ImageEditingSoftware', Writable => 'string' }, #33
+ 0xa43c => { Name => 'MetadataEditingSoftware', Writable => 'string' }, #33
0xa460 => { #Exif2.32
Name => 'CompositeImage',
Writable => 'int16u',
@@ -4910,10 +4921,10 @@ my %subSecConv = (
Writable => 1,
Protected => 1,
WriteAlso => {
- GPSLatitude => '(defined $val and $val =~ /(.*?)( ?[NS])?,/) ? $1 : undef',
- GPSLatitudeRef => '(defined $val and $val =~ /(-?)(.*?) ?([NS]?),/) ? ($3 || ($1 ? "S" : "N")) : undef',
- GPSLongitude => '(defined $val and $val =~ /, ?(.*?)( ?[EW]?)$/) ? $1 : undef',
- GPSLongitudeRef => '(defined $val and $val =~ /, ?(-?)(.*?) ?([EW]?)$/) ? ($3 || ($1 ? "W" : "E")) : undef',
+ GPSLatitude => '(defined $val and $val =~ /(.*) /) ? $1 : undef',
+ GPSLatitudeRef => '(defined $val and $val =~ /(-?)(.*?) /) ? ($1 ? "S" : "N") : undef',
+ GPSLongitude => '(defined $val and $val =~ / (.*)$/) ? $1 : undef',
+ GPSLongitudeRef => '(defined $val and $val =~ / (-?)/) ? ($1 ? "W" : "E") : undef',
},
PrintConvInv => q{
return undef unless $val =~ /(.*? ?[NS]?), ?(.*? ?[EW]?)$/;
@@ -4921,7 +4932,7 @@ my %subSecConv = (
require Image::ExifTool::GPS;
$lat = Image::ExifTool::GPS::ToDegrees($lat, 1, "lat");
$lon = Image::ExifTool::GPS::ToDegrees($lon, 1, "lon");
- return "$lat, $lon";
+ return "$lat $lon";
},
Require => {
0 => 'GPSLatitude',
@@ -5929,12 +5940,12 @@ sub ProcessExif($$$)
my ($verbose,$validate,$saveFormat) = @{$$et{OPTIONS}}{qw(Verbose Validate SaveFormat)};
my $htmlDump = $$et{HTML_DUMP};
my $success = 1;
- my ($tagKey, $dirSize, $makerAddr, $strEnc, %offsetInfo, $offName, $nextOffName, $doMD5);
+ my ($tagKey, $dirSize, $makerAddr, $strEnc, %offsetInfo, $offName, $nextOffName, $doHash);
my $inMakerNotes = $$tagTablePtr{GROUPS}{0} eq 'MakerNotes';
my $isExif = ($tagTablePtr eq \%Image::ExifTool::Exif::Main);
- # set flag to calculate image data MD5 if requested
- $doMD5 = 1 if $$et{ImageDataMD5} and (($$et{FILE_TYPE} eq 'TIFF' and not $base and not $inMakerNotes) or
+ # set flag to calculate image data hash if requested
+ $doHash = 1 if $$et{ImageDataHash} and (($$et{FILE_TYPE} eq 'TIFF' and not $base and not $inMakerNotes) or
($$et{FILE_TYPE} eq 'RAF' and $dirName eq 'FujiIFD'));
# set encoding to assume for strings
@@ -6088,7 +6099,7 @@ sub ProcessExif($$$)
my $format = Get16u($dataPt, $entry+2);
my $count = Get32u($dataPt, $entry+4);
# (Apple uses the BigTIFF format code 16 in the maker notes of their ProRaw DNG files)
- if (($format < 1 or $format > 13) and not ($format == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
+ if (($format < 1 or $format > 13) and $format != 129 and not ($format == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
if ($mapFmt and $$mapFmt{$format}) {
$format = $$mapFmt{$format};
} else {
@@ -6404,7 +6415,13 @@ sub ProcessExif($$$)
# convert according to specified format
$val = ReadValue($valueDataPt,$valuePtr,$formatStr,$count,$readSize,\$rational);
# re-code if necessary
- $val = $et->Decode($val, $strEnc) if $strEnc and $formatStr eq 'string' and defined $val;
+ if (defined $val) {
+ if ($formatStr eq 'utf8') {
+ $val = $et->Decode($val, 'UTF8');
+ } elsif ($strEnc and $formatStr eq 'string') {
+ $val = $et->Decode($val, $strEnc);
+ }
+ }
}
}
@@ -6781,7 +6798,7 @@ sub ProcessExif($$$)
}
$val = join(' ', @vals);
}
- if ($validate or $doMD5) {
+ if ($validate or $doHash) {
if ($$tagInfo{OffsetPair}) {
$offsetInfo{$tagID} = [ $tagInfo, $val ];
} elsif ($saveForValidate{$tagID} and $isExif) {
@@ -6800,8 +6817,8 @@ sub ProcessExif($$$)
}
if (%offsetInfo) {
- # calculate image data MD5 if requested
- AddImageDataMD5($et, $dirInfo, \%offsetInfo) if $doMD5;
+ # calculate image data hash if requested
+ AddImageDataHash($et, $dirInfo, \%offsetInfo) if $doHash;
# validate image data offsets for this IFD (note: modifies %offsetInfo)
Image::ExifTool::Validate::ValidateOffsetInfo($et, \%offsetInfo, $dirName, $inMakerNotes) if $validate;
}
diff --git a/lib/Image/ExifTool/FujiFilm.pm b/lib/Image/ExifTool/FujiFilm.pm
index a73d5dc9..36c5f383 100644
--- a/lib/Image/ExifTool/FujiFilm.pm
+++ b/lib/Image/ExifTool/FujiFilm.pm
@@ -31,7 +31,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
-$VERSION = '1.87';
+$VERSION = '1.88';
sub ProcessFujiDir($$$);
sub ProcessFaceRec($$$);
@@ -1687,8 +1687,8 @@ sub ProcessRAF($$)
my $tagTablePtr = GetTagTable('Image::ExifTool::FujiFilm::IFD');
# this is TIFF-format data only for some models, so no warning if it fails
unless ($et->ProcessTIFF(\%dirInfo, $tagTablePtr, \&Image::ExifTool::ProcessTIFF)) {
- # do MD5 of image data if necessary
- $et->ImageDataMD5($raf, $len, 'raw') if $$et{ImageDataMD5} and $raf->Seek($start,0);
+ # do hash of image data if necessary
+ $et->ImageDataHash($raf, $len, 'raw') if $$et{ImageDataHash} and $raf->Seek($start,0);
}
delete $$et{SET_GROUP1};
$ifdNum = ($ifdNum || 1) + 1;
diff --git a/lib/Image/ExifTool/GPS.pm b/lib/Image/ExifTool/GPS.pm
index be75ee45..1804aa8e 100644
--- a/lib/Image/ExifTool/GPS.pm
+++ b/lib/Image/ExifTool/GPS.pm
@@ -106,8 +106,10 @@ my %coordConv = (
return undef unless $inv and $val =~ /^([-+0-9])/;
return($1 eq '-' ? 1 : 0);
},
- 0 => 'Above Sea Level',
- 1 => 'Below Sea Level',
+ 0 => 'Above Sea Level', # (ellipsoidal surface, Exif 3.0)
+ 1 => 'Below Sea Level', # (ellipsoidal surface, Exif 3.0)
+ # 2 => 'Above Sea Level', # (Exif 3.0)
+ # 3 => 'Below Sea Level', # (Exif 3.0)
},
},
0x0006 => {
@@ -289,6 +291,7 @@ my %coordConv = (
Name => 'GPSProcessingMethod',
Writable => 'undef',
Notes => 'values of "GPS", "CELLID", "WLAN" or "MANUAL" by the EXIF spec.',
+ # (or QZZSS, GALILEO, GLONASS, BEIDOU or NAVIC in Exif 3.0)
RawConv => 'Image::ExifTool::Exif::ConvertExifText($self,$val,1,$tag)',
RawConvInv => 'Image::ExifTool::Exif::EncodeExifText($self,$val)',
},
diff --git a/lib/Image/ExifTool/Geotag.pm b/lib/Image/ExifTool/Geotag.pm
index 7b91dcfa..34b7a8d0 100644
--- a/lib/Image/ExifTool/Geotag.pm
+++ b/lib/Image/ExifTool/Geotag.pm
@@ -29,7 +29,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:Public);
use Image::ExifTool::GPS;
-$VERSION = '1.71';
+$VERSION = '1.72';
sub JITTER() { return 2 } # maximum time jitter
@@ -224,6 +224,9 @@ sub LoadTrackLog($$;$)
# determine file format
if (not $format) {
s/^\xef\xbb\xbf//; # remove leading BOM if it exists
+ if (/^\xff\xfe|\xfe\xff/) {
+ return "ExifTool doesn't yet read UTF16-format track logs";
+ }
if (/^<(\?xml|gpx)[\s>]/) { # look for XML or GPX header
$format = 'XML';
# check for NMEA sentence
diff --git a/lib/Image/ExifTool/Jpeg2000.pm b/lib/Image/ExifTool/Jpeg2000.pm
index d71a6066..8b5a8c93 100644
--- a/lib/Image/ExifTool/Jpeg2000.pm
+++ b/lib/Image/ExifTool/Jpeg2000.pm
@@ -16,7 +16,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.34';
+$VERSION = '1.35';
sub ProcessJpeg2000Box($$$);
sub ProcessJUMD($$$);
@@ -130,7 +130,10 @@ my %j2cMarker = (
NOTES => q{
The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
images, but not all of these are extracted. Note that ExifTool currently
- writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
+ writes only EXIF, IPTC and XMP tags in Jpeg2000 images, and EXIF and XMP in
+ JXL images. ExifTool will read/write Brotli-compressed EXIF and XMP in JXL
+ images, but the API Compress option must be set to create new EXIF and XMP
+ in compressed format.
},
#
# NOTE: ONLY TAGS WITH "Format" DEFINED ARE EXTRACTED!
@@ -262,7 +265,7 @@ my %j2cMarker = (
uuid => [
{
Name => 'UUID-EXIF',
- # (this is the EXIF that we create)
+ # (this is the EXIF that we create in JP2)
Condition => '$$valPt=~/^JpgTiffExif->JP2(?!Exif\0\0)/',
SubDirectory => {
TagTable => 'Image::ExifTool::Exif::Main',
@@ -298,7 +301,7 @@ my %j2cMarker = (
},
{
Name => 'UUID-IPTC',
- # (this is the IPTC that we create)
+ # (this is the IPTC that we create in JP2)
Condition => '$$valPt=~/^\x33\xc7\xa4\xd2\xb8\x1d\x47\x23\xa0\xba\xf1\xa3\xe0\x97\xad\x38/',
SubDirectory => {
TagTable => 'Image::ExifTool::IPTC::Main',
@@ -431,7 +434,6 @@ my %j2cMarker = (
# stuff seen in JPEG XL images:
#
# jbrd - JPEG Bitstream Reconstruction Data (allows lossless conversion back to original JPG)
- # jxlp - partial JXL codestream
jxlc => {
Name => 'JXLCodestream',
Format => 'undef',
@@ -441,6 +443,15 @@ my %j2cMarker = (
},
RawConv => 'Image::ExifTool::Jpeg2000::ProcessJXLCodestream($self,\$val); undef',
},
+ jxlp => {
+ Name => 'PartialJXLCodestream',
+ Format => 'undef',
+ Notes => q{
+ Partial codestreams in JPEG XL image. Currently processed only to determine
+ ImageSize
+ },
+ RawConv => 'Image::ExifTool::Jpeg2000::ProcessJXLCodestream($self,\$val); undef',
+ },
Exif => {
Name => 'EXIF',
SubDirectory => {
@@ -451,6 +462,38 @@ my %j2cMarker = (
Start => '$valuePtr + 4 + (length($$dataPt)-$valuePtr > 4 ? unpack("N", $$dataPt) : 0)',
},
},
+ hrgm => {
+ Name => 'GainMapImage',
+ Groups => { 2 => 'Preview' },
+ Format => 'undef',
+ Binary => 1,
+ },
+ brob => [{ # Brotli-encoded metadata (see https://libjxl.readthedocs.io/en/latest/api_decoder.html)
+ Name => 'BrotliXMP',
+ Condition => '$$valPt =~ /^xml /i',
+ SubDirectory => {
+ TagTable => 'Image::ExifTool::XMP::Main',
+ ProcessProc => \&ProcessBrotli,
+ WriteProc => \&ProcessBrotli,
+ # (don't set DirName to 'XMP' because this would enable a block write of raw XMP)
+ },
+ },{
+ Name => 'BrotliEXIF',
+ Condition => '$$valPt =~ /^exif/i',
+ SubDirectory => {
+ TagTable => 'Image::ExifTool::Exif::Main',
+ ProcessProc => \&ProcessBrotli,
+ WriteProc => \&ProcessBrotli,
+ # (don't set DirName to 'EXIF' because this would enable a block write of raw EXIF)
+ },
+ },{
+ Name => 'BrotliJUMB',
+ Condition => '$$valPt =~ /^jumb/i',
+ SubDirectory => {
+ TagTable => 'Image::ExifTool::Jpeg2000::Main',
+ ProcessProc => \&ProcessBrotli,
+ },
+ }],
);
%Image::ExifTool::Jpeg2000::ImageHeader = (
@@ -840,12 +883,31 @@ sub CreateNewBoxes($$)
$tagTable = GetTagTable('Image::ExifTool::XMP::Main') if $dir eq 'XMP';
my %dirInfo = (
DirName => $dir,
- Parent => 'JP2',
+ Parent => $tag,
);
+ my $compress = $et->Options('Compress');
+ $dirInfo{Compact} = 1 if $$et{IsJXL} and $compress;
my $newdir = $et->WriteDirectory(\%dirInfo, $tagTable, $$subdir{WriteProc});
if (defined $newdir and length $newdir) {
# not sure why, but EXIF box is padded with leading 0's in my sample
my $pad = $dirName eq 'Exif' ? "\0\0\0\0" : '';
+ if ($$et{IsJXL} and $compress) {
+ # create as Brotli-compressed metadata
+ if (eval { require IO::Compress::Brotli }) {
+ my $compressed;
+ eval { $compressed = IO::Compress::Brotli::bro($pad . $newdir) };
+ if ($@ or not $compressed) {
+ $et->Warn("Error encoding $dirName brob box");
+ } else {
+ $et->VPrint(0, " Writing Brotli-compressed $dir\n");
+ $newdir = $compressed;
+ $pad = $tag;
+ $tag = 'brob';
+ }
+ } else {
+ $et->WarnOnce('Install IO::Compress::Brotli to create Brotli-compressed metadata');
+ }
+ }
my $boxhdr = pack('N', length($newdir) + length($pad) + 8) . $tag;
Write($outfile, $boxhdr, $pad, $newdir) or return 0;
next;
@@ -934,7 +996,7 @@ sub ProcessJpeg2000Box($$$)
my $raf = $$dirInfo{RAF};
my $outfile = $$dirInfo{OutFile};
my $dirEnd = $dirStart + $dirLen;
- my ($err, $outBuff, $verbose, $doColour, $md5);
+ my ($err, $outBuff, $verbose, $doColour, $hash);
if ($outfile) {
unless ($raf) {
@@ -952,8 +1014,8 @@ sub ProcessJpeg2000Box($$$)
# (must not set verbose flag when writing!)
$verbose = $$et{OPTIONS}{Verbose};
$et->VerboseDir($$dirInfo{DirName}) if $verbose;
- # do MD5 if requested, but only for top-level image data
- $md5 = $$et{ImageDataMD5} if $raf;
+ # do hash if requested, but only for top-level image data
+ $hash = $$et{ImageDataHash} if $raf;
}
# loop through all contained boxes
my ($pos, $boxLen, $lastBox);
@@ -1023,8 +1085,8 @@ sub ProcessJpeg2000Box($$$)
my $msg = sprintf("offset 0x%.4x to end of file", $dataPos + $base + $pos);
$et->VPrint(0, "$$et{INDENT}- Tag '${boxID}' ($msg)\n");
}
- if ($md5 and $isImageData{$boxID}) {
- $et->ImageDataMD5($raf, undef, $boxID);
+ if ($hash and $isImageData{$boxID}) {
+ $et->ImageDataHash($raf, undef, $boxID);
}
}
last; # (ignore the rest of the file when reading)
@@ -1042,8 +1104,8 @@ sub ProcessJpeg2000Box($$$)
Write($outfile, $$dataPt) or $err = 1;
$raf->Read($buff,$boxLen) == $boxLen or $err = '', last;
Write($outfile, $buff) or $err = 1;
- } elsif ($md5 and $isImageData{$boxID}) {
- $et->ImageDataMD5($raf, $boxLen, $boxID);
+ } elsif ($hash and $isImageData{$boxID}) {
+ $et->ImageDataHash($raf, $boxLen, $boxID);
} else {
$raf->Seek($boxLen, 1) or $err = 'Seek error', last;
}
@@ -1056,9 +1118,9 @@ sub ProcessJpeg2000Box($$$)
# read the box data
$dataPos = $raf->Tell() - $base;
$raf->Read($buff,$boxLen) == $boxLen or $err = '', last;
- if ($md5 and $isImageData{$boxID}) {
- $md5->add($buff);
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $boxLen bytes of $boxID data)\n");
+ if ($hash and $isImageData{$boxID}) {
+ $hash->add($buff);
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $boxLen bytes of $boxID data)\n");
}
$valuePtr = 0;
$dataLen = $boxLen;
@@ -1144,19 +1206,66 @@ sub ProcessJpeg2000Box($$$)
$subdirInfo{DirName} =~ s/^UUID-//;
my $subTable = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
if ($outfile) {
- # remove this directory from our create list
- delete $$et{AddJp2Dirs}{$$tagInfo{Name}}; # (eg. 'EXIF' or 'XMP')
- delete $$et{AddJp2Dirs}{$boxID}; # (eg. 'Exif' or 'xml ')
+ # (special case for brob box, which may be EXIF or XMP)
+ my $fakeID = $boxID;
+ if ($boxID eq 'brob') {
+ # I have seen 'brob' ID's with funny cases, so standardize these
+ $fakeID = 'xml ' if $$dataPt =~ /^xml /i;
+ $fakeID = 'Exif' if $$dataPt =~ /^Exif/i;
+ }
my $newdir;
# only edit writable UUID, Exif and jp2h boxes
- if ($uuid or $boxID eq 'Exif' or ($boxID eq 'xml ' and $$et{IsJXL}) or
+ if ($uuid or $fakeID eq 'Exif' or ($fakeID eq 'xml ' and $$et{IsJXL}) or
($boxID eq 'jp2h' and $$et{EDIT_DIRS}{jp2h}))
{
+ my $compress = $et->Options('Compress');
+ $subdirInfo{Parent} = $fakeID;
+ $subdirInfo{Compact} = 1 if $compress and $$et{IsJXL};
$newdir = $et->WriteDirectory(\%subdirInfo, $subTable, $$subdir{WriteProc});
next if defined $newdir and not length $newdir; # next if deleting the box
+ # compress JXL EXIF or XMP metadata if requested
+ if (defined $newdir and $$et{IsJXL} and defined $compress and
+ ($fakeID eq 'Exif' or $fakeID eq 'xml '))
+ {
+ if ($compress and $boxID ne 'brob') {
+ # rewrite as a Brotli-compressed 'brob' box
+ if (eval { require IO::Compress::Brotli }) {
+ my $pad = $boxID eq 'Exif' ? "\0\0\0\0" : '';
+ my $compressed;
+ eval { $compressed = IO::Compress::Brotli::bro($pad . $newdir) };
+ if ($@ or not $compressed) {
+ $et->Warn("Error encoding $boxID brob box");
+ } else {
+ $et->VPrint(0, " Writing Brotli-compressed $boxID\n");
+ $newdir = $boxID . $compressed;
+ $boxID = 'brob';
+ $subdirStart = $valuePtr = 0;
+ ++$$et{CHANGED};
+ }
+ } else {
+ $et->WarnOnce('Install IO::Compress::Brotli to write Brotli-compressed metadata');
+ }
+ } elsif (not $compress and $boxID eq 'brob') {
+ # (in this case, ProcessBrotli has returned uncompressed data,
+ # so change to the uncompressed 'xml ' or 'Exif' box type)
+ $et->VPrint(0, " Writing uncompressed $fakeID\n");
+ $boxID = $fakeID;
+ $subdirStart = $valuePtr = 0;
+ ++$$et{CHANGED};
+ }
+ }
} elsif (defined $uuid) {
$et->Warn("Not editing $$tagInfo{Name} box", 1);
}
+ # remove this directory from our create list
+ delete $$et{AddJp2Dirs}{$fakeID}; # (eg. 'Exif' or 'xml ')
+ if ($boxID eq 'brob') {
+ # (can't make tag Name 'XMP' or 'Exif' for Brotli-compressed tags because it
+ # would break the logic in WriteDirectory(), so we do a lookup here instead)
+ delete $$et{AddJp2Dirs}{{'xml '=>'XMP','Exif'=>'EXIF'}->{$fakeID}};
+ } else {
+ delete $$et{AddJp2Dirs}{$$tagInfo{Name}}; # (eg. 'EXIF' or 'XMP')
+ }
# use old box data if not changed
defined $newdir or $newdir = substr($$dataPt, $subdirStart, $subdirLen);
my $prefixLen = $subdirStart - $valuePtr;
@@ -1233,18 +1342,106 @@ sub GetBits($$)
}
#------------------------------------------------------------------------------
+# Read/write Brotli-encoded metadata
+# Inputs: 0) ExifTool ref, 1) dirInfoRef, 2) tag table ref
+# Returns: 1 on success when reading, or new data when writing (undef if unchanged)
+# (ref https://libjxl.readthedocs.io/en/latest/api_decoder.html)
+sub ProcessBrotli($$$)
+{
+ my ($et, $dirInfo, $tagTablePtr) = @_;
+ my $dataPt = $$dirInfo{DataPt};
+
+ return 0 unless length($$dataPt) > 4;
+
+ my $isWriting = $$dirInfo{IsWriting};
+ my $type = substr($$dataPt, 0, 4);
+ $et->VerboseDir("Decrypted Brotli '${type}'") unless $isWriting;
+ my %knownType = ( exif => 'Exif', 'xml ' => 'xml ', jumb => 'jumb' );
+ my $stdType = $knownType{lc $type};
+ unless ($stdType) {
+ $et->Warn('Unknown Brotli box type', 1);
+ return 1;
+ }
+ if ($type ne $stdType) {
+ $et->Warn("Incorrect case for Brotli '${type}' data (should be '${stdType}')");
+ $type = $stdType;
+ }
+ if (eval { require IO::Uncompress::Brotli }) {
+ if ($isWriting and not eval { require IO::Compress::Brotli }) {
+ $et->WarnOnce('Install IO::Compress::Brotli to write Brotli-compressed metadata');
+ return undef;
+ }
+ my $compress = $et->Options('Compress');
+ my $verbose = $isWriting ? 0 : $et->Options('Verbose');
+ my $dat = substr($$dataPt, 4);
+ eval { $dat = IO::Uncompress::Brotli::unbro($dat, 100000000) };
+ $@ and $et->Warn("Error decoding $type brob box"), return 1;
+ $verbose > 2 and $et->VerboseDump(\$dat, Prefix => $$et{INDENT} . ' ');
+ my %dirInfo = ( DataPt => \$dat );
+ if ($type eq 'xml ') {
+ $dirInfo{DirName} = 'XMP'; # (necessary for block read/write)
+ require Image::ExifTool::XMP;
+ if ($isWriting) {
+ $dirInfo{Compact} = 1 if $compress; # (no need to add padding if writing compressed)
+ $dat = $et->WriteDirectory(\%dirInfo, $tagTablePtr);
+ } else {
+ Image::ExifTool::XMP::ProcessXMP($et, \%dirInfo, $tagTablePtr);
+ }
+ } elsif ($type eq 'Exif') {
+ $dirInfo{DirName} = 'EXIF'; # (necessary for block read/write)
+ $dirInfo{DirStart} = 4 + (length($dat) > 4 ? unpack("N", $dat) : 0);
+ if ($dirInfo{DirStart} > length $dat) {
+ $et->Warn("Corrupted Brotli '${type}' data");
+ } elsif ($isWriting) {
+ $dat = $et->WriteDirectory(\%dirInfo, $tagTablePtr, \&Image::ExifTool::WriteTIFF);
+ # add back header word
+ $dat = "\0\0\0\0" . $dat if defined $dat and length $dat;
+ } else {
+ $et->ProcessTIFF(\%dirInfo, $tagTablePtr);
+ }
+ } elsif ($type eq 'jumb') {
+ return undef if $isWriting; # (can't yet write JUMBF)
+ Image::ExifTool::ProcessJUMB($et, \%dirInfo, $tagTablePtr); # (untested)
+ }
+ if ($isWriting) {
+ return undef unless defined $dat;
+ # rewrite as uncompressed if Compress option is set to 0 (or '')
+ return $dat if defined $compress and not $compress;
+ eval { $dat = IO::Compress::Brotli::bro($dat) };
+ $@ and $et->Warn("Error encoding $type brob box"), return undef;
+ $et->VPrint(0, " Writing Brotli-compressed $type\n");
+ return $type . $dat;
+ }
+ } else {
+ $et->WarnOnce('Install IO::Uncompress::Brotli to decode Brotli-compressed metadata');
+ return undef if $isWriting;
+ }
+ return 1;
+}
+
+#------------------------------------------------------------------------------
# Extract parameters from JPEG XL codestream [unverified!]
# Inputs: 0) ExifTool ref, 1) codestream ref
-# Returns: 1
+# Returns: 1 on success
sub ProcessJXLCodestream($$)
{
my ($et, $dataPt) = @_;
- # add padding if necessary to avoid unpacking past end of data
- if (length $$dataPt < 14) {
- my $tmp = $$dataPt . ("\0" x 14);
- $dataPt = \$tmp;
+
+ return 0 unless $$dataPt =~ /^(\0\0\0\0)?\xff\x0a/; # validate codestream
+ # ignore if already extracted (ie. subsequent jxlp boxes)
+ return 0 if $$et{VALUE}{ImageWidth};
+ # work with first 64 bytes of codestream data
+ # (and add padding if necessary to avoid unpacking past end of data)
+ my $dat;
+ if (length $$dataPt > 64) {
+ $dat = substr($$dataPt, 0, 64);
+ } elsif (length $$dataPt < 18) {
+ $dat = $$dataPt . ("\0" x 18); # (so we'll have a minimum 14 bytes to work with)
+ } else {
+ $dat = $$dataPt;
}
- my @a = unpack 'x2C12', $$dataPt;
+ $dat =~ s/^\0\0\0\0//; # remove jxlp header word
+ my @a = unpack 'x2C12', $dat;
my ($x, $y);
my $small = GetBits(\@a, 1);
if ($small) {
@@ -1362,8 +1559,8 @@ sub ProcessJXL($$)
$$dirInfo{RAF} = new File::RandomAccess(\$buff);
} else {
$et->SetFileType('JXL Codestream','image/jxl', 'jxl');
- if ($$et{ImageDataMD5} and $raf->Seek(0,0)) {
- $et->ImageDataMD5($raf, undef, 'JXL');
+ if ($$et{ImageDataHash} and $raf->Seek(0,0)) {
+ $et->ImageDataHash($raf, undef, 'JXL');
}
return ProcessJXLCodestream($et, \$hdr);
}
diff --git a/lib/Image/ExifTool/MPF.pm b/lib/Image/ExifTool/MPF.pm
index 9d05adeb..f87fb77d 100644
--- a/lib/Image/ExifTool/MPF.pm
+++ b/lib/Image/ExifTool/MPF.pm
@@ -15,7 +15,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
-$VERSION = '1.14';
+$VERSION = '1.15';
sub ProcessMPImageList($$$);
@@ -131,6 +131,7 @@ sub ProcessMPImageList($$$);
0x020002 => 'Multi-frame Disparity',
0x020003 => 'Multi-angle',
0x030000 => 'Baseline MP Primary Image',
+ 0x040000 => 'Original Preservation Image', # (Exif 3.0)
},
},
4 => {
diff --git a/lib/Image/ExifTool/MinoltaRaw.pm b/lib/Image/ExifTool/MinoltaRaw.pm
index 1961b3ea..7fa04e60 100644
--- a/lib/Image/ExifTool/MinoltaRaw.pm
+++ b/lib/Image/ExifTool/MinoltaRaw.pm
@@ -17,7 +17,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Minolta;
-$VERSION = '1.18';
+$VERSION = '1.19';
sub ProcessMRW($$;$);
sub WriteMRW($$;$);
@@ -489,7 +489,7 @@ sub ProcessMRW($$;$)
$err and $et->Error("MRW format error", $$et{TIFF_TYPE} eq 'ARW');
} else {
$err and $et->Warn("MRW format error");
- $et->ImageDataMD5($raf, undef, 'raw') unless $$et{A100DataOffset};
+ $et->ImageDataHash($raf, undef, 'raw') unless $$et{A100DataOffset};
}
return $rtnVal;
}
diff --git a/lib/Image/ExifTool/PNG.pm b/lib/Image/ExifTool/PNG.pm
index 0a426ed9..d39c3cef 100644
--- a/lib/Image/ExifTool/PNG.pm
+++ b/lib/Image/ExifTool/PNG.pm
@@ -36,7 +36,7 @@ use strict;
use vars qw($VERSION $AUTOLOAD %stdCase);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.63';
+$VERSION = '1.64';
sub ProcessPNG_tEXt($$$);
sub ProcessPNG_iTXt($$$);
@@ -1374,7 +1374,7 @@ sub ProcessPNG($$)
my $datCount = 0;
my $datBytes = 0;
my $fastScan = $et->Options('FastScan');
- my $md5 = $$et{ImageDataMD5};
+ my $hash = $$et{ImageDataHash};
my ($n, $sig, $err, $hbuf, $dbuf, $cbuf);
my ($wasHdr, $wasEnd, $wasDat, $doTxt, @txtOffset);
@@ -1454,7 +1454,7 @@ sub ProcessPNG($$)
if ($datCount and $chunk ne $datChunk) {
my $s = $datCount > 1 ? 's' : '';
print $out "$fileType $datChunk ($datCount chunk$s, total $datBytes bytes)\n";
- print $out "$$et{INDENT}(ImageDataMD5: $datBytes bytes of $datChunk data)\n" if $md5;
+ print $out "$$et{INDENT}(ImageDataHash: $datBytes bytes of $datChunk data)\n" if $hash;
$datCount = $datBytes = 0;
}
}
@@ -1541,8 +1541,8 @@ sub ProcessPNG($$)
}
# skip over data chunks if possible/necessary
} elsif (not $validate or $len > $chunkSizeLimit) {
- if ($md5) {
- $et->ImageDataMD5($raf, $len);
+ if ($hash) {
+ $et->ImageDataHash($raf, $len);
$raf->Read($cbuf, 4) == 4 or $et->Warn('Truncated data'), last;
} else {
$raf->Seek($len + 4, 1) or $et->Warn('Seek error'), last;
@@ -1565,7 +1565,7 @@ sub ProcessPNG($$)
$et->Warn("Corrupted $fileType image") unless $wasEnd;
last;
}
- $md5->add($dbuf) if $md5 and $datChunk; # add to MD5 if necessary
+ $hash->add($dbuf) if $hash and $datChunk; # add to hash if necessary
if ($verbose or $validate or ($outfile and not $fastScan)) {
# check CRC when in verbose mode (since we don't care about speed)
my $crc = CalculateCRC(\$hbuf, undef, 4);
diff --git a/lib/Image/ExifTool/PhaseOne.pm b/lib/Image/ExifTool/PhaseOne.pm
index 2fa64f0a..eba7349a 100644
--- a/lib/Image/ExifTool/PhaseOne.pm
+++ b/lib/Image/ExifTool/PhaseOne.pm
@@ -15,7 +15,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
-$VERSION = '1.08';
+$VERSION = '1.09';
sub WritePhaseOne($$$);
sub ProcessPhaseOne($$$);
@@ -585,7 +585,7 @@ sub ProcessPhaseOne($$$)
my $dirLen = $$dirInfo{DirLen} || $$dirInfo{DataLen} - $dirStart;
my $binary = $et->Options('Binary');
my $verbose = $et->Options('Verbose');
- my $md5 = $$et{ImageDataMD5};
+ my $hash = $$et{ImageDataHash};
my $htmlDump = $$et{HTML_DUMP};
return 0 if $dirLen < 12;
@@ -678,16 +678,16 @@ sub ProcessPhaseOne($$$)
}
}
}
- if ($md5 and $tagInfo and $$tagInfo{IsImageData}) {
+ if ($hash and $tagInfo and $$tagInfo{IsImageData}) {
my ($pos, $len) = ($valuePtr, $size);
while ($len) {
my $n = $len > 65536 ? 65536 : $len;
my $tmp = substr($$dataPt, $pos, $n);
- $md5->add($tmp);
+ $hash->add($tmp);
$len -= $n;
$pos += $n;
}
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $size bytes of PhaseOne:$$tagInfo{Name})\n");
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $size bytes of PhaseOne:$$tagInfo{Name})\n");
}
my %parms = (
DirName => $ifdType,
diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm
index fde189c3..73c21bdd 100644
--- a/lib/Image/ExifTool/QuickTime.pm
+++ b/lib/Image/ExifTool/QuickTime.pm
@@ -447,8 +447,8 @@ my %dupDirOK = ( ipco => 1, '----' => 1 );
my %eeStd = ( stco => 'stbl', co64 => 'stbl', stsz => 'stbl', stz2 => 'stbl',
stsc => 'stbl', stts => 'stbl' );
-# atoms required for generating ImageDataMD5
-my %md5Box = ( vide => { %eeStd }, soun => { %eeStd } );
+# atoms required for generating ImageDataHash
+my %hashBox = ( vide => { %eeStd }, soun => { %eeStd } );
# boxes and their containers for the various handler types that we want to save
# when the ExtractEmbedded is enabled (currently only the 'gps ' container name is
@@ -2867,6 +2867,25 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
Name => 'AV1Configuration',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::AV1Config' },
},
+ clli => {
+ Name => 'ContentLightLevel',
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::ContentLightLevel' },
+ },
+ # ref https://nokiatech.github.io/heif/technical.html
+ # cclv - Content Color Volume
+ # mdcv - Mastering Display Color Volume
+ # rrtp - Required reference types
+ # crtt - Creation time information
+ # mdft - Modification time information
+ # udes - User description
+ # altt - Accessibility text
+ # aebr - Auto exposure information
+ # wbbr - White balance information
+ # fobr - Focus information
+ # afbr - Flash exposure information
+ # dobr - Depth of field information
+ # pano - Panorama information
+ # iscl - Image Scaling
);
# ref https://aomediacodec.github.io/av1-spec/av1-spec.pdf
@@ -3128,6 +3147,16 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
},
);
+# ref https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/MPEG4Writer.cpp
+%Image::ExifTool::QuickTime::ContentLightLevel = (
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
+ GROUPS => { 2 => 'Video' },
+ FIRST_ENTRY => 0,
+ FORMAT => 'int16u',
+ 0 => 'MaxContentLightLevel',
+ 1 => 'MaxPicAverageLightLevel',
+);
+
%Image::ExifTool::QuickTime::ItemRef = (
PROCESS_PROC => \&ProcessMOV,
WRITE_PROC => \&WriteQuickTime,
@@ -8787,15 +8816,15 @@ sub HandleItemInfo($)
$et->VPrint(0, "$$et{INDENT} [snip $snip bytes]\n") if $snip;
}
}
- # do MD5 checksum of AVIF "av01" and HEIC image data
- if ($isImageData{$type} and $$et{ImageDataMD5}) {
- my $md5 = $$et{ImageDataMD5};
+ # do hash of AVIF "av01" and HEIC image data
+ if ($isImageData{$type} and $$et{ImageDataHash}) {
+ my $hash = $$et{ImageDataHash};
my $tot = 0;
foreach $extent (@{$$item{Extents}}) {
$raf->Seek($$extent[1] + $base, 0) or $et->Warn("Seek error in $type image data"), last;
- $tot += $et->ImageDataMD5($raf, $$extent[2], "$type image", 1);
+ $tot += $et->ImageDataHash($raf, $$extent[2], "$type image", 1);
}
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $tot bytes of $type data)\n") if $tot;
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $tot bytes of $type data)\n") if $tot;
}
next unless $name;
# assemble the data for this item
@@ -9299,8 +9328,8 @@ sub ProcessMOV($$;$)
$$raf{NoBuffer} = 1 if $fast; # disable buffering in FastScan mode
my $ee = $$et{OPTIONS}{ExtractEmbedded};
- my $md5 = $$et{ImageDataMD5};
- if ($ee or $md5) {
+ my $hash = $$et{ImageDataHash};
+ if ($ee or $hash) {
$unkOpt = $$et{OPTIONS}{Unknown};
require 'Image/ExifTool/QuickTimeStream.pl';
}
@@ -9382,7 +9411,7 @@ sub ProcessMOV($$;$)
# set flag to store additional information for ExtractEmbedded option
my $handlerType = $$et{HandlerType};
if ($eeBox{$handlerType} and $eeBox{$handlerType}{$tag}) {
- if ($ee or $md5) {
+ if ($ee or $hash) {
# (there is another 'gps ' box with a track log that doesn't contain offsets)
if ($tag ne 'gps ' or $eeBox{$handlerType}{$tag} eq $dirID) {
$eeTag = 1;
@@ -9394,7 +9423,7 @@ sub ProcessMOV($$;$)
} elsif ($ee and $ee > 1 and $eeBox2{$handlerType} and $eeBox2{$handlerType}{$tag}) {
$eeTag = 1;
$$et{OPTIONS}{Unknown} = 1;
- } elsif ($md5 and $md5Box{$handlerType} and $md5Box{$handlerType}{$tag}) {
+ } elsif ($hash and $hashBox{$handlerType} and $hashBox{$handlerType}{$tag}) {
$eeTag = 1;
$$et{OPTIONS}{Unknown} = 1;
}
@@ -9629,7 +9658,7 @@ ItemID: foreach $id (keys %$items) {
}
if ($tag eq 'stbl') {
# process sample data when exiting SampleTable box if extracting embedded
- ProcessSamples($et) if $ee or $md5;
+ ProcessSamples($et) if $ee or $hash;
} elsif ($tag eq 'minf') {
$$et{HandlerType} = ''; # reset handler type at end of media info box
}
diff --git a/lib/Image/ExifTool/QuickTimeStream.pl b/lib/Image/ExifTool/QuickTimeStream.pl
index 8fd9f51a..32fd893a 100644
--- a/lib/Image/ExifTool/QuickTimeStream.pl
+++ b/lib/Image/ExifTool/QuickTimeStream.pl
@@ -1128,14 +1128,14 @@ sub Process_text($$$;$)
# Inputs: 0) ExifTool ref
# Notes: Also accesses ExifTool RAF*, SET_GROUP1, HandlerType, MetaFormat,
# ee*, and avcC elements (* = must exist)
-# - may be called either due to ExtractEmbedded option, or ImageDataMD5 requested
-# - MD5 includes only video and audio data
+# - may be called either due to ExtractEmbedded option, or ImageDataHash requested
+# - hash includes only video and audio data
sub ProcessSamples($)
{
my $et = shift;
my ($raf, $ee) = @$et{qw(RAF ee)};
- my ($i, $buff, $pos, $hdrLen, $hdrFmt, @time, @dur, $oldIndent, $md5);
- my ($mdatOffset, $mdatSize); # (for range-checking samples when MD5 is done)
+ my ($i, $buff, $pos, $hdrLen, $hdrFmt, @time, @dur, $oldIndent, $hash);
+ my ($mdatOffset, $mdatSize); # (for range-checking samples when hash is done)
return unless $ee;
delete $$et{ee}; # use only once
@@ -1144,22 +1144,22 @@ sub ProcessSamples($)
my $type = $$et{HandlerType} || '';
if ($type eq 'vide') {
# only process specific types of video streams
- $md5 = $$et{ImageDataMD5};
+ $hash = $$et{ImageDataHash};
# only process specific video types if ExtractEmbedded was used
- # (otherwise we are only here to calculate the audio/video MD5)
+ # (otherwise we are only here to calculate the audio/video hash)
if ($eeOpt) {
if ($$ee{avcC}) { $type = 'avcC' }
elsif ($$ee{JPEG}) { $type = 'JPEG' }
- else { return unless $md5 }
+ else { return unless $hash }
}
} elsif ($type eq 'soun') {
- $md5 = $$et{ImageDataMD5};
- return unless $md5;
+ $hash = $$et{ImageDataHash};
+ return unless $hash;
} else {
- return unless $eeOpt; # (don't do MD5 on other types)
+ return unless $eeOpt; # (don't do hash on other types)
}
- my $md5size = 0;
+ my $hashSize = 0;
my ($start, $size) = @$ee{qw(start size)};
#
# determine sample start offsets from chunk offsets (stco) and sample-to-chunk table (stsc),
@@ -1213,7 +1213,7 @@ Sample: for ($i=0; ; ) {
++$iChunk;
}
@$start == @$size or $et->WarnOnce('Incorrect sample start/size count'), return;
- # process as chunks if we are only interested in calculating MD5
+ # process as chunks if we are only interested in calculating hash
if ($type eq 'soun' or $type eq 'vide') {
$start = $stco;
$size = \@chunkSize;
@@ -1232,7 +1232,7 @@ Sample: for ($i=0; ; ) {
$oldIndent = $$et{INDENT};
$$et{INDENT} = '';
}
- if ($md5) {
+ if ($hash) {
$mdatSize = $$et{MediaDataSize};
$mdatOffset = $$et{MediaDataOffset} if defined $mdatSize;
}
@@ -1249,7 +1249,7 @@ Sample: for ($i=0; ; ) {
delete $$et{FoundGPSLatitude};
delete $$et{FoundGPSDateTime};
- # range check the sample data for MD5 if necessary
+ # range check the sample data for hash if necessary
my $size = $$size[$i];
if (defined $mdatOffset) {
if ($$start[$i] < $mdatOffset) {
@@ -1268,9 +1268,9 @@ Sample: for ($i=0; ; ) {
next unless $n;
$size = $n;
}
- if ($md5) {
- $md5->add($buff);
- $md5size += length $buff;
+ if ($hash) {
+ $hash->add($buff);
+ $hashSize += length $buff;
}
if ($type eq 'avcC') {
next if length($buff) <= $hdrLen;
@@ -1399,7 +1399,7 @@ Sample: for ($i=0; ; ) {
}
if ($verbose) {
my $str = $type eq 'soun' ? 'Audio' : 'Video';
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $md5size bytes of $str data)\n") if $md5size;
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $hashSize bytes of $str data)\n") if $hashSize;
$$et{INDENT} = $oldIndent;
$et->VPrint(0, "--------------------------\n");
}
diff --git a/lib/Image/ExifTool/README b/lib/Image/ExifTool/README
index a365df39..1286870b 100644
--- a/lib/Image/ExifTool/README
+++ b/lib/Image/ExifTool/README
@@ -412,7 +412,7 @@ numerical, and generated automatically otherwise.
'IsComposite' - flag set for Composite tags
'IsImageData' - flag set if this is an image data offset to
- be included in ImageDataMD5 calculation. Must have an
+ be included in ImageDataHash calculation. Must have an
OffsetPair entry which is the ID of the corresponding size.
'IsOffset' - flag set if the tag represents an offset to some
diff --git a/lib/Image/ExifTool/RIFF.pm b/lib/Image/ExifTool/RIFF.pm
index 0d43ad6d..cb841df4 100644
--- a/lib/Image/ExifTool/RIFF.pm
+++ b/lib/Image/ExifTool/RIFF.pm
@@ -30,7 +30,7 @@ use strict;
use vars qw($VERSION $AUTOLOAD);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.64';
+$VERSION = '1.65';
sub ConvertTimecode($);
sub ProcessSGLT($$$);
@@ -38,7 +38,7 @@ sub ProcessSLLT($$$);
sub ProcessLucas($$$);
sub WriteRIFF($$);
-# RIFF chunks containing image data (to include in ImageDataMD5 digest)
+# RIFF chunks containing image data (to include in ImageDataHash digest)
my %isImageData = (
LIST_movi => 1, # (AVI: contains ##db, ##dc, ##wb)
data => 1, # (WAV)
@@ -652,6 +652,7 @@ my %code2charset = (
Name => 'Acidizer',
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Acidizer' },
},
+ guan => 'Guano', #forum14831
);
# the maker notes used by some digital cameras
@@ -1987,7 +1988,7 @@ sub ProcessRIFF($$)
my $unknown = $et->Options('Unknown');
my $validate = $et->Options('Validate');
my $ee = $et->Options('ExtractEmbedded');
- my $md5 = $$et{ImageDataMD5};
+ my $hash = $$et{ImageDataHash};
# verify this is a valid RIFF file
return 0 unless $raf->Read($buff, 12) == 12;
@@ -2045,6 +2046,7 @@ sub ProcessRIFF($$)
} else {
next;
}
+ last;
}
# stop when we hit the audio data or AVI index or AVI movie data
# --> no more because Adobe Bridge stores XMP after this!!
@@ -2067,9 +2069,9 @@ sub ProcessRIFF($$)
# (in LIST_movi chunk: ##db = uncompressed DIB, ##dc = compressed DIB, ##wb = audio data)
if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
$raf->Read($buff, $len2) == $len2 or $err=1, last;
- if ($md5 and $isImageData{$tag}) {
- $md5->add($buff);
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: '${tag}' chunk, $len2 bytes)\n");
+ if ($hash and $isImageData{$tag}) {
+ $hash->add($buff);
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: '${tag}' chunk, $len2 bytes)\n");
}
my $setGroups;
if ($tagInfo and ref $tagInfo eq 'HASH' and $$tagInfo{SetGroups}) {
@@ -2099,10 +2101,10 @@ sub ProcessRIFF($$)
next; # (must not increment $pos)
} else {
my $rewind;
- # do MD5 if required
- if ($md5 and $isImageData{$tag}) {
+ # do hash if required
+ if ($hash and $isImageData{$tag}) {
$rewind = $raf->Tell();
- $et->ImageDataMD5($raf, $len2, "'${tag}' chunk");
+ $et->ImageDataHash($raf, $len2, "'${tag}' chunk");
}
if ($tag eq 'LIST_movi' and $ee) {
$raf->Seek($rewind, 0) or $err = 1, last if $rewind;
diff --git a/lib/Image/ExifTool/Shortcuts.pm b/lib/Image/ExifTool/Shortcuts.pm
index b17f935b..34e09ac0 100644
--- a/lib/Image/ExifTool/Shortcuts.pm
+++ b/lib/Image/ExifTool/Shortcuts.pm
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
use strict;
use vars qw($VERSION);
-$VERSION = '1.67';
+$VERSION = '1.68';
# this is a special table used to define command-line shortcuts
# (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
@@ -276,6 +276,7 @@ $VERSION = '1.67';
'FileModifyDate',
'FileName',
],
+ ImageDataMD5 => [ 'ImageDataHash' ], # (for backward compatibilty)
);
#------------------------------------------------------------------------------
diff --git a/lib/Image/ExifTool/SigmaRaw.pm b/lib/Image/ExifTool/SigmaRaw.pm
index 45d47143..1c840945 100644
--- a/lib/Image/ExifTool/SigmaRaw.pm
+++ b/lib/Image/ExifTool/SigmaRaw.pm
@@ -16,7 +16,7 @@ use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Sigma;
-$VERSION = '1.30';
+$VERSION = '1.31';
sub ProcessX3FHeader($$$);
sub ProcessX3FDirectory($$$);
@@ -549,9 +549,9 @@ sub ProcessX3FDirectory($$$)
$len -= 28;
# ignore all image data but JPEG compressed (version 2.0, type 2, format 18)
unless ($buff =~ /^SECi\0\0\x02\0\x02\0\0\0\x12\0\0\0/) {
- # do MD5 on non-preview data if requested
- if ($$et{ImageDataMD5} and substr($buff,8,1) ne "\x02") {
- $et->ImageDataMD5($raf, $len, 'SigmaRaw IMAG');
+ # do hash on non-preview data if requested
+ if ($$et{ImageDataHash} and substr($buff,8,1) ne "\x02") {
+ $et->ImageDataHash($raf, $len, 'SigmaRaw IMAG');
}
next;
}
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index 7dbae6d9..2a3c1ee4 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::Minolta;
-$VERSION = '3.60';
+$VERSION = '3.61';
sub ProcessSRF($$$);
sub ProcessSR2($$$);
@@ -1061,7 +1061,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
},{
Name => 'Tag2010i', # ?
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1F?|E10))\b/',
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX95|HX99|RX0M2)|ZV-(1F?|E10))\b/',
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
},{
Name => 'Tag_0x2010',
@@ -1137,7 +1137,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
# FocusMode for SLT/HV/ILCA and NEX/ILCE; doesn't seem to apply to DSC models (always 0)
# from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
Name => 'FocusMode',
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2)/)',
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
Writable => 'int8u',
Priority => 0,
PrintConv => {
@@ -1169,7 +1169,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
},
},{
Name => 'AFAreaModeSetting',
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-E|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
Notes => 'NEX, ILCE and some DSC models',
RawConv => '$$self{AFAreaILCE} = $val',
DataMember => 'AFAreaILCE',
@@ -1205,7 +1205,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
# observed values in range (0 0) to (640 480), with center (320 240) often seen
# for NEX-5R/6, positions appear to be in an 11x9 grid
Name => 'FlexibleSpotPosition',
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-E|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
Writable => 'int16u',
Count => 2,
Notes => q{
@@ -1365,7 +1365,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
# from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
0x2021 => { #JR
Name => 'AFTracking',
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2)/)',
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
Writable => 'int8u',
PrintConv => {
0 => 'Off',
@@ -2070,6 +2070,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
390 => 'ILCE-7RM5', #IB
391 => 'ILME-FX30', #JR
393 => 'ZV-E1', #JR
+ 395 => 'ZV-1M2', #JR
},
},
0xb020 => { #2
@@ -6182,6 +6183,7 @@ my %pictureProfile2010 = (
31 => 'Gamma S-Log3 (PP8 or PP9)', #14
33 => 'Gamma HLG2 (PP10)', #14
34 => 'Gamma HLG3', #IB
+ 36 => 'Off',
37 => 'FL',
38 => 'VV2',
39 => 'IN',
@@ -6637,8 +6639,30 @@ my %isoSetting2010 = (
},
#0x1914 => { Name => 'SonyImageWidth', Format => 'int16u' },
#0x1918 => { Name => 'SonyImageHeight', Format => 'int16u' },
+ 0x192c => {
+ Name => 'AspectRatio',
+ Condition => '$$self{Model} !~ /^(DSC-RX100|Stellar)\b/',
+ PrintConv => {
+ 0 => '16:9',
+ 1 => '4:3',
+ 2 => '3:2',
+ 3 => '1:1',
+ 5 => 'Panorama',
+ },
+ },
#0x192e => { Name => 'SonyImageWidth', Format => 'int16u' },
#0x1930 => { Name => 'SonyImageHeight', Format => 'int16u' },
+ 0x1a88 => {
+ Name => 'AspectRatio',
+ Condition => '$$self{Model} =~ /^(DSC-RX100|Stellar)\b/',
+ PrintConv => {
+ 0 => '16:9',
+ 1 => '4:3',
+ 2 => '3:2',
+ 3 => '1:1',
+ 5 => 'Panorama',
+ },
+ },
);
%Image::ExifTool::Sony::Tag2010f = ( #JR
@@ -6714,6 +6738,16 @@ my %isoSetting2010 = (
},
#0x1914 => { Name => 'SonyImageWidth', Format => 'int16u' },
#0x1918 => { Name => 'SonyImageHeight', Format => 'int16u' },
+ 0x192c => {
+ Name => 'AspectRatio',
+ PrintConv => {
+ 0 => '16:9',
+ 1 => '4:3',
+ 2 => '3:2',
+ 3 => '1:1',
+ 5 => 'Panorama',
+ },
+ },
#0x192e => { Name => 'SonyImageWidth', Format => 'int16u' },
#0x1930 => { Name => 'SonyImageHeight', Format => 'int16u' },
);
@@ -6845,6 +6879,16 @@ my %isoSetting2010 = (
},
# 0x1940 => { Name => 'SonyImageWidth', Format => 'int16u' },
# 0x1944 => { Name => 'SonyImageHeight', Format => 'int16u' },
+ 0x1958 => {
+ Name => 'AspectRatio',
+ PrintConv => {
+ 0 => '16:9',
+ 1 => '4:3',
+ 2 => '3:2',
+ 3 => '1:1',
+ 5 => 'Panorama',
+ },
+ },
# 0x195a => { Name => 'SonyImageWidth', Format => 'int16u' },
# 0x195c => { Name => 'SonyImageHeight', Format => 'int16u' },
);
@@ -6982,6 +7026,16 @@ my %isoSetting2010 = (
Condition => '$$self{Model} !~ /^DSC-/',
PrintConv => { 11 => '11 (APS-C)', 16 => '16 (Full-frame)'},
},
+ 0x192c => {
+ Name => 'AspectRatio',
+ PrintConv => {
+ 0 => '16:9',
+ 1 => '4:3',
+ 2 => '3:2',
+ 3 => '1:1',
+ 5 => 'Panorama',
+ },
+ },
# 0x1970 => { Name => 'SonyImageWidth', Format => 'int16u' },
# 0x1974 => { Name => 'SonyImageHeight', Format => 'int16u' },
# 0x198a => { Name => 'SonyImageWidth', Format => 'int16u' },
@@ -7113,6 +7167,16 @@ my %isoSetting2010 = (
Condition => '$$self{Model} !~ /^DSC-/',
PrintConv => { 11 => '11 (APS-C)', 16 => '16 (Full-frame)'},
},
+ 0x188c => {
+ Name => 'AspectRatio',
+ PrintConv => {
+ 0 => '16:9',
+ 1 => '4:3',
+ 2 => '3:2',
+ 3 => '1:1',
+ 5 => 'Panorama',
+ },
+ },
);
%Image::ExifTool::Sony::Tag202a = (
@@ -8273,6 +8337,30 @@ my %isoSetting2010 = (
Format => 'int8u',
PrintConv => 'sprintf("20%.2d", $val)',
},
+ 0x0133 => {
+ Name => 'ShutterType',
+ Condition => '$$self{Model} =~ /^(DSC-(HX350|HX400V|HX60V|HX80|HX90|HX90V|QX30|RX10|RX10M2|RX10M3|RX100M3|RX100M4))\b/',
+ PrintConv => {
+ 7 => 'Electronic',
+ 23 => 'Mechanical',
+ },
+ },
+ 0x0139 => {
+ Name => 'ShutterType',
+ Condition => '$$self{Model} =~ /^(DSC-(HX95|HX99|RX0|RX0M2|RX10M4|RX100M5|RX100M5A|RX100M6))\b/',
+ PrintConv => {
+ 7 => 'Electronic',
+ 23 => 'Mechanical',
+ },
+ },
+ 0x013f => {
+ Name => 'ShutterType',
+ Condition => '$$self{Model} =~ /^(DSC-RX100M7|ZV-(1|1F|1M2))\b/',
+ PrintConv => {
+ 7 => 'Electronic',
+ 23 => 'Mechanical',
+ },
+ },
);
%Image::ExifTool::Sony::Tag9401 = ( # JR
@@ -8284,7 +8372,7 @@ my %isoSetting2010 = (
FIRST_ENTRY => 0,
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
DATAMEMBER => [ 0 ],
- IS_SUBDIR => [ 0x03e2, 0x044e, 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
+ IS_SUBDIR => [ 0x03e2, 0x044e, 0x0498, 0x049d, 0x04a1, 0x04a2, 0x04ba, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
0x03e2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 181', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8292,7 +8380,8 @@ my %isoSetting2010 = (
0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
- 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
+ 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/ and $$self{Model} !~ /^ZV-1M2/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
+ 0x04ba => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 155 and $$self{Model} =~ /^ZV-1M2/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
0x0636 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(73|74)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8690,6 +8779,11 @@ my %isoSetting2010 = (
10 => 'Night View/Portrait',
11 => 'Autumn Leaves',
13 => 'Sepia',
+ 15 => 'FL',
+ 16 => 'VV2',
+ 17 => 'IN',
+ 18 => 'SH',
+ 255 => 'Off',
},
},
0x0052 => {
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index 5e417cc0..93ae8363 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -537,9 +537,11 @@ my @tableList = (
'Image::ExifTool::XMP::extensis',
'Image::ExifTool::XMP::fpv',
'Image::ExifTool::XMP::hdr',
+ 'Image::ExifTool::XMP::hdrgm',
'Image::ExifTool::XMP::ics',
'Image::ExifTool::XMP::iptcCore',
'Image::ExifTool::XMP::iptcExt',
+ 'Image::ExifTool::XMP::panorama',
'Image::ExifTool::XMP::pdf',
'Image::ExifTool::XMP::photoshop',
'Image::ExifTool::XMP::pmi',
@@ -564,15 +566,15 @@ my @tableList = (
# lookup for all writable tags
my %tagLookup = (
'aberrationcorrectiondistance' => { 109 => 0x69 },
- 'about' => { 515 => 'about' },
- 'aboutcvterm' => { 507 => 'AboutCvTerm' },
- 'aboutcvtermcvid' => { 507 => [\'AboutCvTerm','AboutCvTermCvId'] },
- 'aboutcvtermid' => { 507 => [\'AboutCvTerm','AboutCvTermCvTermId'] },
- 'aboutcvtermname' => { 507 => [\'AboutCvTerm','AboutCvTermCvTermName'] },
- 'aboutcvtermrefinedabout' => { 507 => [\'AboutCvTerm','AboutCvTermCvTermRefinedAbout'] },
+ 'about' => { 517 => 'about' },
+ 'aboutcvterm' => { 508 => 'AboutCvTerm' },
+ 'aboutcvtermcvid' => { 508 => [\'AboutCvTerm','AboutCvTermCvId'] },
+ 'aboutcvtermid' => { 508 => [\'AboutCvTerm','AboutCvTermCvTermId'] },
+ 'aboutcvtermname' => { 508 => [\'AboutCvTerm','AboutCvTermCvTermName'] },
+ 'aboutcvtermrefinedabout' => { 508 => [\'AboutCvTerm','AboutCvTermCvTermRefinedAbout'] },
'absolutealtitude' => { 116 => 'AbsoluteAltitude' },
- 'abspeakaudiofilepath' => { 521 => 'absPeakAudioFilePath' },
- 'academicfield' => { 511 => 'academicField' },
+ 'abspeakaudiofilepath' => { 523 => 'absPeakAudioFilePath' },
+ 'academicfield' => { 513 => 'academicField' },
'acceleration' => { 119 => 0x9404, 501 => 'Acceleration' },
'accelerationtracking' => { 84 => 0x518 },
'accelerationvector' => { 1 => 0x8 },
@@ -590,18 +592,18 @@ my %tagLookup = (
'adaptervoltage' => { 138 => 0x407 },
'addaspectratioinfo' => { 84 => 0x80e },
'addiptcinformation' => { 84 => 0x815 },
- 'additionalmodelinformation' => { 507 => 'AddlModelInfo' },
+ 'additionalmodelinformation' => { 508 => 'AddlModelInfo' },
'addoriginaldecisiondata' => { 84 => 0x80f, 85 => 0x11, 86 => 0x13, 89 => 0x14 },
'address' => { 161 => 'Address' },
'adjustmentmode' => { 412 => 0x15 },
'adlbracketingstep' => { 197 => 0x17 },
'adlbracketingtype' => { 197 => 0x18 },
'adobe' => { 120 => 'Adobe' },
- 'adultcontentwarning' => { 322 => 'AdultContentWarning', 514 => 'adultContentWarning' },
+ 'adultcontentwarning' => { 322 => 'AdultContentWarning', 516 => 'adultContentWarning' },
'advancedfilter' => { 127 => 0x1201 },
'advancedraw' => { 287 => 0x76a43203 },
'advancedscenetype' => { 335 => 0x3d },
- 'advisory' => { 519 => 'Advisory' },
+ 'advisory' => { 521 => 'Advisory' },
'ae_iso' => { 343 => 0x2, 344 => 0x4, 345 => 0x12 },
'aeaperture' => { 343 => 0x1, 344 => 0x3, 345 => 0x11 },
'aeaperturesteps' => { 343 => 0x8, 344 => 0xb },
@@ -909,9 +911,9 @@ my %tagLookup = (
'aftrackingsensitivity' => { 2 => 0x2 },
'aftype' => { 415 => 0x2 },
'afwithshutter' => { 422 => 0x2a },
- 'aggregateissuenumber' => { 511 => 'aggregateIssueNumber' },
- 'aggregationtype' => { 511 => 'aggregationType' },
- 'agreement' => { 514 => 'agreement' },
+ 'aggregateissuenumber' => { 513 => 'aggregateIssueNumber' },
+ 'aggregationtype' => { 513 => 'aggregationType' },
+ 'agreement' => { 516 => 'agreement' },
'ah2greeninterpolationthreshold' => { 138 => 0xe4e },
'airplanemode' => { 238 => 0x624, 239 => 0x654 },
'aiservocontinuousshooting' => { 83 => 0x15 },
@@ -923,23 +925,23 @@ my %tagLookup = (
'aiservotrackingmethod' => { 84 => 0x504 },
'aiservotrackingsensitivity' => { 83 => 0x14, 84 => 0x502 },
'aisubjecttrackingmode' => { 312 => 0x309 },
- 'album' => { 387 => ['albm',"\xa9alb"], 389 => 'album', 395 => ['albm',"\xa9alb"], 521 => 'album' },
+ 'album' => { 387 => ['albm',"\xa9alb"], 389 => 'album', 395 => ['albm',"\xa9alb"], 523 => 'album' },
'albumartist' => { 179 => 'WM/AlbumArtist', 387 => 'aART', 395 => 'albr' },
'albumcoverurl' => { 179 => 'WM/AlbumCoverURL' },
'albumtitle' => { 179 => 'WM/AlbumTitle' },
'albumtitleid' => { 387 => 'atID' },
'alreadyapplied' => { 494 => 'AlreadyApplied', 496 => 'AlreadyApplied' },
- 'alternatetitle' => { 511 => 'alternateTitle' },
- 'alternatetitlea-lang' => { 511 => [\'alternateTitle','alternateTitleA-lang'] },
- 'alternatetitlea-platform' => { 511 => [\'alternateTitle','alternateTitleA-platform'] },
- 'alternatetitletext' => { 511 => [\'alternateTitle','alternateTitleText'] },
+ 'alternatetitle' => { 513 => 'alternateTitle' },
+ 'alternatetitlea-lang' => { 513 => [\'alternateTitle','alternateTitleA-lang'] },
+ 'alternatetitlea-platform' => { 513 => [\'alternateTitle','alternateTitleA-platform'] },
+ 'alternatetitletext' => { 513 => [\'alternateTitle','alternateTitleText'] },
'altitude' => { 196 => 0x6 },
- 'alttapename' => { 521 => 'altTapeName' },
- 'alttextaccessibility' => { 506 => 'AltTextAccessibility' },
- 'alttimecode' => { 521 => 'altTimecode' },
- 'alttimecodetimeformat' => { 521 => [\'altTimecode','altTimecodeTimeFormat'] },
- 'alttimecodetimevalue' => { 521 => [\'altTimecode','altTimecodeTimeValue'] },
- 'alttimecodevalue' => { 521 => [\'altTimecode','altTimecodeValue'] },
+ 'alttapename' => { 523 => 'altTapeName' },
+ 'alttextaccessibility' => { 507 => 'AltTextAccessibility' },
+ 'alttimecode' => { 523 => 'altTimecode' },
+ 'alttimecodetimeformat' => { 523 => [\'altTimecode','altTimecodeTimeFormat'] },
+ 'alttimecodetimevalue' => { 523 => [\'altTimecode','altTimecodeTimeValue'] },
+ 'alttimecodevalue' => { 523 => [\'altTimecode','altTimecodeValue'] },
'ambienceselection' => { 4 => 0x1 },
'ambientinfrared' => { 398 => 0x5c },
'ambientlight' => { 398 => 0x5e },
@@ -978,7 +980,7 @@ my %tagLookup = (
'approvedby' => { 502 => 'ApprovedBy' },
'approximatefnumber' => { 330 => 0x313, 337 => 0x3406 },
'approximatefocusdistance' => { 491 => 'ApproximateFocusDistance' },
- 'appversion' => { 505 => 'AppVersion' },
+ 'appversion' => { 506 => 'AppVersion' },
'aps-csizecapture' => { 454 => 0x114, 455 => [0x114,0x1eb,0x1ee,0x21a,0x21c] },
'aquahsl' => { 103 => 0x20914 },
'armidentifier' => { 132 => 0x78 },
@@ -988,30 +990,30 @@ my %tagLookup = (
'artdirector' => { 387 => "\xa9ard" },
'artfilter' => { 312 => 0x529 },
'artfiltereffect' => { 312 => 0x52f },
- 'artist' => { 119 => 0x13b, 325 => 'Artist', 340 => 0x13b, 370 => 0x22e, 387 => "\xa9ART", 389 => 'artist', 395 => "\xa9ART", 517 => 'Artist', 521 => 'artist' },
+ 'artist' => { 119 => 0x13b, 325 => 'Artist', 340 => 0x13b, 370 => 0x22e, 387 => "\xa9ART", 389 => 'artist', 395 => "\xa9ART", 519 => 'Artist', 523 => 'artist' },
'artmode' => { 113 => 0x301b },
'artmodeparameters' => { 113 => 0x310b },
'artwork' => { 389 => 'artwork' },
- 'artworkcircadatecreated' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCircaDateCreated'] },
- 'artworkcontentdescription' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOContentDescription'] },
- 'artworkcontributiondescription' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOContributionDescription'] },
- 'artworkcopyrightnotice' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCopyrightNotice'] },
- 'artworkcopyrightownerid' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerId'] },
- 'artworkcopyrightownername' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerName'] },
- 'artworkcreator' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCreator'] },
- 'artworkcreatorid' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCreatorId'] },
- 'artworkdatecreated' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAODateCreated'] },
- 'artworklicensorid' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorId'] },
- 'artworklicensorname' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorName'] },
- 'artworkorobject' => { 507 => 'ArtworkOrObject' },
- 'artworkphysicaldescription' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOPhysicalDescription'] },
- 'artworksource' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOSource'] },
- 'artworksourceinventoryno' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvNo'] },
- 'artworksourceinvurl' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvURL'] },
- 'artworkstyleperiod' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOStylePeriod'] },
- 'artworktitle' => { 507 => [\'ArtworkOrObject','ArtworkOrObjectAOTitle'] },
+ 'artworkcircadatecreated' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCircaDateCreated'] },
+ 'artworkcontentdescription' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOContentDescription'] },
+ 'artworkcontributiondescription' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOContributionDescription'] },
+ 'artworkcopyrightnotice' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCopyrightNotice'] },
+ 'artworkcopyrightownerid' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerId'] },
+ 'artworkcopyrightownername' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerName'] },
+ 'artworkcreator' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCreator'] },
+ 'artworkcreatorid' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCreatorId'] },
+ 'artworkdatecreated' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAODateCreated'] },
+ 'artworklicensorid' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorId'] },
+ 'artworklicensorname' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorName'] },
+ 'artworkorobject' => { 508 => 'ArtworkOrObject' },
+ 'artworkphysicaldescription' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOPhysicalDescription'] },
+ 'artworksource' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOSource'] },
+ 'artworksourceinventoryno' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvNo'] },
+ 'artworksourceinvurl' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvURL'] },
+ 'artworkstyleperiod' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOStylePeriod'] },
+ 'artworktitle' => { 508 => [\'ArtworkOrObject','ArtworkOrObjectAOTitle'] },
'aspectframe' => { 316 => 0x1113 },
- 'aspectratio' => { 5 => 0x0, 316 => 0x1112, 370 => 0x80, 422 => 0x55, 423 => 0x55, 424 => 0xa },
+ 'aspectratio' => { 5 => 0x0, 316 => 0x1112, 370 => 0x80, 422 => 0x55, 423 => 0x55, 424 => 0xa, 448 => [0x192c,0x1a88], 449 => 0x192c, 450 => 0x1958, 451 => 0x192c, 452 => 0x188c },
'assetid' => { 484 => 'AssetID' },
'asshoticcprofile' => { 119 => 0xc68f },
'asshotneutral' => { 119 => 0xc628 },
@@ -1039,29 +1041,29 @@ my %tagLookup = (
'attributionname' => { 492 => 'attributionName' },
'attributionurl' => { 492 => 'attributionURL' },
'audio' => { 335 => 0x20 },
- 'audiobitrate' => { 67 => 0x6c, 507 => 'audioBitRate' },
- 'audiobitratemode' => { 507 => 'audioBitRateMode' },
- 'audiobitspersample' => { 507 => 'audioBitsPerSample' },
+ 'audiobitrate' => { 67 => 0x6c, 508 => 'audioBitRate' },
+ 'audiobitratemode' => { 508 => 'audioBitRateMode' },
+ 'audiobitspersample' => { 508 => 'audioBitsPerSample' },
'audiobutton' => { 310 => 0x17b },
'audiobuttonplaybackmode' => { 310 => 0x1b9 },
- 'audiochannelcount' => { 507 => 'audioChannelCount' },
+ 'audiochannelcount' => { 508 => 'audioChannelCount' },
'audiochannels' => { 67 => 0x70 },
- 'audiochanneltype' => { 521 => 'audioChannelType' },
+ 'audiochanneltype' => { 523 => 'audioChannelType' },
'audiocompression' => { 84 => 0x816, 155 => 'Compression' },
- 'audiocompressor' => { 521 => 'audioCompressor' },
+ 'audiocompressor' => { 523 => 'audioCompressor' },
'audiodata' => { 476 => 'Data' },
'audioduration' => { 131 => 0x99 },
'audiogain' => { 389 => 'player.movie.audio.gain' },
'audiomimetype' => { 476 => 'Mime' },
- 'audiomoddate' => { 521 => 'audioModDate' },
+ 'audiomoddate' => { 523 => 'audioModDate' },
'audiooutcue' => { 131 => 0x9a },
- 'audiosamplerate' => { 67 => 0x6e, 521 => 'audioSampleRate' },
- 'audiosampletype' => { 521 => 'audioSampleType' },
+ 'audiosamplerate' => { 67 => 0x6e, 523 => 'audioSampleRate' },
+ 'audiosampletype' => { 523 => 'audioSampleType' },
'audiosamplingrate' => { 131 => 0x97 },
'audiosamplingresolution' => { 131 => 0x98 },
'audiotype' => { 131 => 0x96 },
- 'author' => { 157 => 'Author', 321 => 'Author', 325 => 'Author', 386 => 'Author', 387 => ['auth',"\xa9aut"], 389 => 'author', 395 => 'auth', 489 => 'author', 508 => 'Author', 519 => 'Author' },
- 'authorsposition' => { 509 => 'AuthorsPosition' },
+ 'author' => { 157 => 'Author', 321 => 'Author', 325 => 'Author', 386 => 'Author', 387 => ['auth',"\xa9aut"], 389 => 'author', 395 => 'auth', 489 => 'author', 510 => 'Author', 521 => 'Author' },
+ 'authorsposition' => { 511 => 'AuthorsPosition' },
'authorurl' => { 179 => 'WM/AuthorURL' },
'autoafpointcolortracking' => { 84 => 0x51c },
'autoafpointseleositraf' => { 2 => 0xa },
@@ -1105,7 +1107,7 @@ my %tagLookup = (
'azimuth' => { 165 => 'Azimuth' },
'babyage' => { 335 => [0x8010,0x33] },
'babyname' => { 335 => 0x66 },
- 'backgroundalpha' => { 516 => 'bgalpha' },
+ 'backgroundalpha' => { 518 => 'bgalpha' },
'balance' => { 389 => 'player.movie.audio.balance' },
'baseexposurecompensation' => { 351 => 0x15 },
'baseiso' => { 77 => 0x2, 97 => 0x101c, 138 => 0x903, 337 => 0x312a, 466 => 0x6 },
@@ -1117,7 +1119,8 @@ my %tagLookup = (
'baselineexposureoffset' => { 119 => 0xc7a5 },
'baselinenoise' => { 119 => 0xc62b },
'baselinesharpness' => { 119 => 0xc62c },
- 'baseurl' => { 519 => 'BaseURL' },
+ 'baserenditionishdr' => { 505 => 'BaseRenditionIsHDR' },
+ 'baseurl' => { 521 => 'BaseURL' },
'bass' => { 389 => 'player.movie.audio.bass' },
'batterylevel' => { 335 => 0x38, 422 => 0x51, 426 => 0xc, 427 => 0x4, 428 => 0x4, 467 => 0x7 },
'batterylevelgrip1' => { 467 => 0x6 },
@@ -1134,12 +1137,12 @@ my %tagLookup = (
'bayergreensplit' => { 119 => 0xc62d },
'bayerpattern' => { 137 => 0xf902, 188 => 0x17 },
'beatsperminute' => { 387 => 'tmpo' },
- 'beatspliceparams' => { 521 => 'beatSpliceParams' },
- 'beatspliceparamsriseindecibel' => { 521 => [\'beatSpliceParams','beatSpliceParamsRiseInDecibel'] },
- 'beatspliceparamsriseintimeduration' => { 521 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDuration'] },
- 'beatspliceparamsriseintimedurationscale' => { 521 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationScale'] },
- 'beatspliceparamsriseintimedurationvalue' => { 521 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationValue'] },
- 'beatspliceparamsusefilebeatsmarker' => { 521 => [\'beatSpliceParams','beatSpliceParamsUseFileBeatsMarker'] },
+ 'beatspliceparams' => { 523 => 'beatSpliceParams' },
+ 'beatspliceparamsriseindecibel' => { 523 => [\'beatSpliceParams','beatSpliceParamsRiseInDecibel'] },
+ 'beatspliceparamsriseintimeduration' => { 523 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDuration'] },
+ 'beatspliceparamsriseintimedurationscale' => { 523 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationScale'] },
+ 'beatspliceparamsriseintimedurationvalue' => { 523 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationValue'] },
+ 'beatspliceparamsusefilebeatsmarker' => { 523 => [\'beatSpliceParams','beatSpliceParamsUseFileBeatsMarker'] },
'beep' => { 294 => '13.1', 295 => '5.4', 296 => '0.1', 299 => '2.1', 300 => '3.1', 301 => '3.1', 303 => '10.1', 305 => '0.1', 307 => '5.5', 309 => '4.1' },
'beeppitch' => { 304 => '3.1' },
'beepvolume' => { 304 => '4.5' },
@@ -1147,7 +1150,7 @@ my %tagLookup = (
'bestshotmode' => { 113 => 0x3007 },
'bitdepth' => { 162 => 'BitDepth', 188 => 0x11, 254 => 0x41 },
'bitspercomponent' => { 133 => 0x87 },
- 'bitspersample' => { 119 => 0x102, 340 => 0xa, 517 => 'BitsPerSample' },
+ 'bitspersample' => { 119 => 0x102, 340 => 0xa, 519 => 'BitsPerSample' },
'blackacquirerows' => { 138 => 0x18ba },
'blacklevel' => { 119 => [0x7310,0xc61a], 206 => 0x20, 233 => 0x3d, 317 => [0x401,0x1012], 379 => 0x21d, 442 => [0x7300,0x7310] },
'blacklevel2' => { 316 => 0x600, 320 => 0x600 },
@@ -1168,8 +1171,8 @@ my %tagLookup = (
'blacksadj' => { 470 => 0x9018 },
'bleachbypasstoning' => { 370 => 0x7f },
'blockshotafresponse' => { 297 => '1.5', 298 => '1.5', 308 => '1.5', 310 => 0x7 },
- 'blogtitle' => { 511 => 'blogTitle' },
- 'blogurl' => { 511 => 'blogURL' },
+ 'blogtitle' => { 513 => 'blogTitle' },
+ 'blogurl' => { 513 => 'blogURL' },
'bluebalance' => { 317 => 0x1018, 340 => 0x12, 370 => 0x1b },
'bluecurvelimits' => { 108 => 0x1fe },
'bluecurvepoints' => { 107 => 0x79, 108 => 0x1d4 },
@@ -1189,7 +1192,7 @@ my %tagLookup = (
'bodyfirmware' => { 403 => 0x0 },
'bodyfirmwareversion' => { 313 => 0x104, 314 => 0x100, 317 => 0x104 },
'bodyserialnumber' => { 403 => 0x10 },
- 'bookedition' => { 511 => 'bookEdition' },
+ 'bookedition' => { 513 => 'bookEdition' },
'bootloaderversion' => { 397 => 0x26 },
'bracketincrement' => { 238 => 0x21a, 239 => 0x22e },
'bracketmode' => { 57 => 0x3 },
@@ -1222,7 +1225,7 @@ my %tagLookup = (
'bwmode' => { 317 => 0x203 },
'by-line' => { 131 => 0x50 },
'by-linetitle' => { 131 => 0x55 },
- 'bytecount' => { 511 => 'byteCount' },
+ 'bytecount' => { 513 => 'byteCount' },
'c14configuration' => { 138 => 0x1964 },
'cacheversion' => { 119 => 0xc7aa },
'calibratedfocallength' => { 116 => 'CalibratedFocalLength' },
@@ -1236,7 +1239,7 @@ my %tagLookup = (
'calibrationversion' => { 138 => 0x9c6 },
'callforimage' => { 484 => 'CallForImage' },
'camera' => { 473 => [\'Cameras','CamerasCamera'] },
- 'cameraangle' => { 395 => 'angl', 521 => 'cameraAngle' },
+ 'cameraangle' => { 395 => 'angl', 523 => 'cameraAngle' },
'cameraappinfo' => { 473 => [\'Cameras','CamerasCameraAppInfo'] },
'cameraappinfoapplication' => { 473 => [\'Cameras','CamerasCameraAppInfoApplication'] },
'cameraappinfoitemuri' => { 473 => [\'Cameras','CamerasCameraAppInfoItemURI'] },
@@ -1278,6 +1281,7 @@ my %tagLookup = (
'camerae-mountversion' => { 469 => 0xb },
'cameraelevationangle' => { 119 => 0x9405, 501 => 'CameraElevationAngle' },
'camerafilename' => { 484 => 'CameraFilename' },
+ 'camerafirmware' => { 119 => 0xa439 },
'cameraid' => { 317 => 0x209, 395 => 'cmid', 411 => 0x209 },
'cameraidentifier' => { 389 => 'camera.identifier' },
'cameraimage' => { 473 => [\'Cameras','CamerasCameraImage'] },
@@ -1295,18 +1299,18 @@ my %tagLookup = (
'cameraimagingmodelprincipalpointy' => { 473 => [\'Cameras','CamerasCameraImagingModelPrincipalPointY'] },
'cameraimagingmodelskew' => { 473 => [\'Cameras','CamerasCameraImagingModelSkew'] },
'cameraiso' => { 34 => 0x10 },
- 'cameralabel' => { 119 => 0xc7a1, 521 => 'cameraLabel' },
+ 'cameralabel' => { 119 => 0xc7a1, 523 => 'cameraLabel' },
'cameralightestimate' => { 473 => [\'Cameras','CamerasCameraLightEstimate'] },
'cameralightestimatecolorcorrectionb' => { 473 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionB'] },
'cameralightestimatecolorcorrectiong' => { 473 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionG'] },
'cameralightestimatecolorcorrectionr' => { 473 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionR'] },
'cameralightestimatepixelintensity' => { 473 => [\'Cameras','CamerasCameraLightEstimatePixelIntensity'] },
'cameramakemodel' => { 484 => 'CameraMakeModel' },
- 'cameramodel' => { 379 => 0x410, 521 => 'cameraModel' },
+ 'cameramodel' => { 379 => 0x410, 523 => 'cameraModel' },
'cameramodelid' => { 176 => 'CameraModelID' },
'cameramodelrestriction' => { 494 => 'CameraModelRestriction', 496 => 'CameraModelRestriction' },
'cameramotion' => { 389 => 'direction.motion' },
- 'cameramove' => { 521 => 'cameraMove' },
+ 'cameramove' => { 523 => 'cameraMove' },
'cameraorientation' => { 7 => 0x30, 9 => 0x7d, 11 => 0x30, 13 => 0x35, 14 => 0x30, 15 => 0x30, 16 => 0x31, 17 => 0x31, 18 => 0x35, 19 => 0x27, 20 => 0x31, 21 => 0x7d, 22 => 0x38, 23 => [0x36,0x3a], 24 => 0x7d, 25 => 0x83, 26 => 0x84, 27 => 0x96, 28 => 0x35, 29 => 0x96, 335 => 0x8f, 374 => 0x1, 379 => 0x100, 428 => [0x16,0x18], 457 => 0x28, 458 => 0x24, 459 => 0x29 },
'cameraowner' => { 141 => 0xc353 },
'cameraparameters' => { 317 => 0x2050 },
@@ -1327,29 +1331,29 @@ my %tagLookup = (
'cameraposetimestamp' => { 473 => [\'Cameras','CamerasCameraPoseTimestamp'] },
'cameraprofile' => { 494 => 'CameraProfile', 496 => 'CameraProfile' },
'cameraprofiledigest' => { 494 => 'CameraProfileDigest', 496 => 'CameraProfileDigest' },
- 'cameraprofiles' => { 509 => 'CameraProfiles' },
- 'cameraprofilesaperturevalue' => { 509 => [\'CameraProfiles','CameraProfilesApertureValue'] },
- 'cameraprofilesauthor' => { 509 => [\'CameraProfiles','CameraProfilesAuthor'] },
- 'cameraprofilesautoscale' => { 509 => [\'CameraProfiles','CameraProfilesAutoScale'] },
- 'cameraprofilescameraprettyname' => { 509 => [\'CameraProfiles','CameraProfilesCameraPrettyName'] },
- 'cameraprofilescamerarawprofile' => { 509 => [\'CameraProfiles','CameraProfilesCameraRawProfile'] },
- 'cameraprofilesfocallength' => { 509 => [\'CameraProfiles','CameraProfilesFocalLength'] },
- 'cameraprofilesfocusdistance' => { 509 => [\'CameraProfiles','CameraProfilesFocusDistance'] },
- 'cameraprofileslens' => { 509 => [\'CameraProfiles','CameraProfilesLens'] },
- 'cameraprofileslensprettyname' => { 509 => [\'CameraProfiles','CameraProfilesLensPrettyName'] },
- 'cameraprofilesmake' => { 509 => [\'CameraProfiles','CameraProfilesMake'] },
- 'cameraprofilesmodel' => { 509 => [\'CameraProfiles','CameraProfilesModel'] },
- 'cameraprofilesperspectivemodel' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModel'] },
- 'cameraprofilesperspectivemodelimagexcenter' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelImageXCenter'] },
- 'cameraprofilesperspectivemodelimageycenter' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelImageYCenter'] },
- 'cameraprofilesperspectivemodelradialdistortparam1' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelRadialDistortParam1'] },
- 'cameraprofilesperspectivemodelradialdistortparam2' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelRadialDistortParam2'] },
- 'cameraprofilesperspectivemodelradialdistortparam3' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelRadialDistortParam3'] },
- 'cameraprofilesperspectivemodelscalefactor' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelScaleFactor'] },
- 'cameraprofilesperspectivemodelversion' => { 509 => [\'CameraProfiles','CameraProfilesPerspectiveModelVersion'] },
- 'cameraprofilesprofilename' => { 509 => [\'CameraProfiles','CameraProfilesProfileName'] },
- 'cameraprofilessensorformatfactor' => { 509 => [\'CameraProfiles','CameraProfilesSensorFormatFactor'] },
- 'cameraprofilesuniquecameramodel' => { 509 => [\'CameraProfiles','CameraProfilesUniqueCameraModel'] },
+ 'cameraprofiles' => { 511 => 'CameraProfiles' },
+ 'cameraprofilesaperturevalue' => { 511 => [\'CameraProfiles','CameraProfilesApertureValue'] },
+ 'cameraprofilesauthor' => { 511 => [\'CameraProfiles','CameraProfilesAuthor'] },
+ 'cameraprofilesautoscale' => { 511 => [\'CameraProfiles','CameraProfilesAutoScale'] },
+ 'cameraprofilescameraprettyname' => { 511 => [\'CameraProfiles','CameraProfilesCameraPrettyName'] },
+ 'cameraprofilescamerarawprofile' => { 511 => [\'CameraProfiles','CameraProfilesCameraRawProfile'] },
+ 'cameraprofilesfocallength' => { 511 => [\'CameraProfiles','CameraProfilesFocalLength'] },
+ 'cameraprofilesfocusdistance' => { 511 => [\'CameraProfiles','CameraProfilesFocusDistance'] },
+ 'cameraprofileslens' => { 511 => [\'CameraProfiles','CameraProfilesLens'] },
+ 'cameraprofileslensprettyname' => { 511 => [\'CameraProfiles','CameraProfilesLensPrettyName'] },
+ 'cameraprofilesmake' => { 511 => [\'CameraProfiles','CameraProfilesMake'] },
+ 'cameraprofilesmodel' => { 511 => [\'CameraProfiles','CameraProfilesModel'] },
+ 'cameraprofilesperspectivemodel' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModel'] },
+ 'cameraprofilesperspectivemodelimagexcenter' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelImageXCenter'] },
+ 'cameraprofilesperspectivemodelimageycenter' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelImageYCenter'] },
+ 'cameraprofilesperspectivemodelradialdistortparam1' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelRadialDistortParam1'] },
+ 'cameraprofilesperspectivemodelradialdistortparam2' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelRadialDistortParam2'] },
+ 'cameraprofilesperspectivemodelradialdistortparam3' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelRadialDistortParam3'] },
+ 'cameraprofilesperspectivemodelscalefactor' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelScaleFactor'] },
+ 'cameraprofilesperspectivemodelversion' => { 511 => [\'CameraProfiles','CameraProfilesPerspectiveModelVersion'] },
+ 'cameraprofilesprofilename' => { 511 => [\'CameraProfiles','CameraProfilesProfileName'] },
+ 'cameraprofilessensorformatfactor' => { 511 => [\'CameraProfiles','CameraProfilesSensorFormatFactor'] },
+ 'cameraprofilesuniquecameramodel' => { 511 => [\'CameraProfiles','CameraProfilesUniqueCameraModel'] },
'camerarawcolortone' => { 109 => 0xe1 },
'camerarawcontrast' => { 109 => 0xe3 },
'camerarawhighlightpoint' => { 109 => 0xe6 },
@@ -1393,7 +1397,7 @@ my %tagLookup = (
'caption-abstract' => { 131 => 0x78 },
'captionsauthornames' => { 499 => 'CaptionsAuthorNames' },
'captionsdatetimestamps' => { 499 => 'CaptionsDateTimeStamps' },
- 'captionwriter' => { 509 => 'CaptionWriter' },
+ 'captionwriter' => { 511 => 'CaptionWriter' },
'captureframerate' => { 113 => 0x4001 },
'captureheightnormal' => { 138 => 0x1839 },
'capturelook' => { 138 => 0xc48 },
@@ -1405,7 +1409,7 @@ my %tagLookup = (
'casioimagesize' => { 113 => 0x9 },
'catalogsets' => { 131 => 0xff, 475 => 'CatalogSets', 487 => 'CatalogSets' },
'categories' => { 64 => 0x23, 489 => 'categories' },
- 'category' => { 131 => 0xf, 179 => 'WM/Category', 311 => 0x30, 387 => 'catg', 509 => 'Category' },
+ 'category' => { 131 => 0xf, 179 => 'WM/Category', 311 => 0x30, 387 => 'catg', 511 => 'Category' },
'cbcrgain' => { 409 => 0xa036 },
'cbcrgaindefault' => { 409 => 0xa035 },
'cbcrmatrix' => { 409 => 0xa034 },
@@ -1428,7 +1432,7 @@ my %tagLookup = (
'centerfocuspoint' => { 309 => '2.2' },
'centerpixel' => { 138 => 0x40c },
'centerweightedareasize' => { 294 => '7.1', 295 => '8.1', 297 => '8.1', 298 => '8.1', 302 => '7.1', 303 => '5.1', 304 => '7.1', 305 => '6.3', 307 => '8.1', 308 => '8.1', 309 => '8.1', 310 => 0x1f },
- 'certificate' => { 525 => 'Certificate' },
+ 'certificate' => { 527 => 'Certificate' },
'cfainterpolationalgorithm' => { 138 => 0xe60 },
'cfainterpolationmetric' => { 138 => 0xe61 },
'cfaoffsetcols' => { 138 => 0xc71 },
@@ -1440,18 +1444,18 @@ my %tagLookup = (
'cfapatternvalues' => { 500 => [\'CFAPattern','CFAPatternValues'] },
'cfarepeatpatterndim' => { 119 => 0x828d },
'cfazipperfixthreshold' => { 138 => 0xe62 },
- 'channel' => { 511 => 'channel' },
- 'channela-lang' => { 511 => [\'channel','channelA-lang'] },
- 'channelchannel' => { 511 => [\'channel','channelChannel'] },
+ 'channel' => { 513 => 'channel' },
+ 'channela-lang' => { 513 => [\'channel','channelA-lang'] },
+ 'channelchannel' => { 513 => [\'channel','channelChannel'] },
'channels' => { 155 => 'Channels' },
- 'channelsubchannel1' => { 511 => [\'channel','channelSubchannel1'] },
- 'channelsubchannel2' => { 511 => [\'channel','channelSubchannel2'] },
- 'channelsubchannel3' => { 511 => [\'channel','channelSubchannel3'] },
- 'channelsubchannel4' => { 511 => [\'channel','channelSubchannel4'] },
+ 'channelsubchannel1' => { 513 => [\'channel','channelSubchannel1'] },
+ 'channelsubchannel2' => { 513 => [\'channel','channelSubchannel2'] },
+ 'channelsubchannel3' => { 513 => [\'channel','channelSubchannel3'] },
+ 'channelsubchannel4' => { 513 => [\'channel','channelSubchannel4'] },
'chapterlist' => { 395 => 'chpl' },
'checkmark' => { 103 => 0x10101, 108 => 0x26a },
'checkmark2' => { 109 => 0x8e },
- 'childfontfiles' => { 526 => [\'Fonts','FontsChildFontFiles'] },
+ 'childfontfiles' => { 528 => [\'Fonts','FontsChildFontFiles'] },
'chmodeshootingspeed' => { 294 => '10.3', 295 => '11.2', 310 => 0x10b },
'chromablurradius' => { 119 => 0xc631 },
'chromanoisecolorspace' => { 138 => 0xe6d },
@@ -1470,7 +1474,7 @@ my %tagLookup = (
'chromaticaberrationsetting' => { 80 => 0x6 },
'chrominancenoisereduction' => { 103 => 0x20601, 109 => 0x5e, 412 => 0x1a },
'chrominancenr_tiff_jpeg' => { 109 => 0x60 },
- 'circadatecreated' => { 507 => 'CircaDateCreated' },
+ 'circadatecreated' => { 508 => 'CircaDateCreated' },
'circgradbasedcorractive' => { 494 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'], 496 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'] },
'circgradbasedcorramount' => { 494 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'], 496 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'] },
'circgradbasedcorrblacks2012' => { 494 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBlacks2012'], 496 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBlacks2012'] },
@@ -1614,7 +1618,7 @@ my %tagLookup = (
'circgradbasedcorrwhat' => { 494 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'], 496 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'] },
'circgradbasedcorrwhites2012' => { 494 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalWhites2012'], 496 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalWhites2012'] },
'circulargradientbasedcorrections' => { 494 => 'CircularGradientBasedCorrections', 496 => 'CircularGradientBasedCorrections' },
- 'city' => { 131 => 0x5a, 161 => 'City', 335 => 0x6d, 509 => 'City' },
+ 'city' => { 131 => 0x5a, 161 => 'City', 335 => 0x6d, 511 => 'City' },
'city2' => { 335 => 0x80 },
'clarity' => { 127 => 0x100f, 247 => 0x35, 248 => 0x3d, 435 => 0x2036, 494 => 'Clarity', 496 => 'Clarity' },
'clarity2012' => { 494 => 'Clarity2012', 496 => 'Clarity2012' },
@@ -1623,7 +1627,7 @@ my %tagLookup = (
'classifystate' => { 131 => 0xe1 },
'clearretouch' => { 335 => 0x7c },
'clearretouchvalue' => { 335 => 0xa3 },
- 'client' => { 521 => 'client' },
+ 'client' => { 523 => 'client' },
'clientname' => { 502 => 'ClientName' },
'clipboardaspectratio' => { 494 => 'ClipboardAspectRatio', 496 => 'ClipboardAspectRatio' },
'clipboardorientation' => { 494 => 'ClipboardOrientation', 496 => 'ClipboardOrientation' },
@@ -1647,26 +1651,26 @@ my %tagLookup = (
'collectionname' => { 170 => [\'Collections','CollectionsCollectionName'], 395 => 'coll' },
'collections' => { 170 => 'Collections', 489 => 'collections' },
'collectionuri' => { 170 => [\'Collections','CollectionsCollectionURI'] },
- 'color' => { 389 => 'player.movie.visual.color', 510 => 'color' },
+ 'color' => { 389 => 'player.movie.visual.color', 512 => 'color' },
'coloraberrationcontrol' => { 287 => 0xc89224b },
'coloradjustment' => { 412 => 0x14 },
'coloradjustmentmode' => { 411 => 0x210 },
- 'coloranta' => { 526 => [\'Colorants','ColorantsA'] },
- 'colorantb' => { 526 => [\'Colorants','ColorantsB'] },
- 'colorantblack' => { 526 => [\'Colorants','ColorantsBlack'] },
- 'colorantblue' => { 526 => [\'Colorants','ColorantsBlue'] },
- 'colorantcyan' => { 526 => [\'Colorants','ColorantsCyan'] },
- 'colorantgray' => { 526 => [\'Colorants','ColorantsGray'] },
- 'colorantgreen' => { 526 => [\'Colorants','ColorantsGreen'] },
- 'colorantl' => { 526 => [\'Colorants','ColorantsL'] },
- 'colorantmagenta' => { 526 => [\'Colorants','ColorantsMagenta'] },
- 'colorantmode' => { 526 => [\'Colorants','ColorantsMode'] },
- 'colorantred' => { 526 => [\'Colorants','ColorantsRed'] },
- 'colorants' => { 526 => 'Colorants' },
- 'colorantswatchname' => { 526 => [\'Colorants','ColorantsSwatchName'] },
- 'coloranttint' => { 526 => [\'Colorants','ColorantsTint'] },
- 'coloranttype' => { 526 => [\'Colorants','ColorantsType'] },
- 'colorantyellow' => { 526 => [\'Colorants','ColorantsYellow'] },
+ 'coloranta' => { 528 => [\'Colorants','ColorantsA'] },
+ 'colorantb' => { 528 => [\'Colorants','ColorantsB'] },
+ 'colorantblack' => { 528 => [\'Colorants','ColorantsBlack'] },
+ 'colorantblue' => { 528 => [\'Colorants','ColorantsBlue'] },
+ 'colorantcyan' => { 528 => [\'Colorants','ColorantsCyan'] },
+ 'colorantgray' => { 528 => [\'Colorants','ColorantsGray'] },
+ 'colorantgreen' => { 528 => [\'Colorants','ColorantsGreen'] },
+ 'colorantl' => { 528 => [\'Colorants','ColorantsL'] },
+ 'colorantmagenta' => { 528 => [\'Colorants','ColorantsMagenta'] },
+ 'colorantmode' => { 528 => [\'Colorants','ColorantsMode'] },
+ 'colorantred' => { 528 => [\'Colorants','ColorantsRed'] },
+ 'colorants' => { 528 => 'Colorants' },
+ 'colorantswatchname' => { 528 => [\'Colorants','ColorantsSwatchName'] },
+ 'coloranttint' => { 528 => [\'Colorants','ColorantsTint'] },
+ 'coloranttype' => { 528 => [\'Colorants','ColorantsType'] },
+ 'colorantyellow' => { 528 => [\'Colorants','ColorantsYellow'] },
'colorbalance' => { 156 => 'ColorBalance' },
'colorbalanceadj' => { 287 => 0x76a43202 },
'colorbalanceblue' => { 181 => 0x1e },
@@ -1715,7 +1719,7 @@ my %tagLookup = (
'colormatrixb2' => { 370 => 0x21d },
'colormatrixnumber' => { 317 => 0x1019 },
'colormatrixsrgb' => { 409 => 0xa031 },
- 'colormode' => { 113 => 0x3015, 127 => 0x1210, 140 => 0x66, 181 => 0x28, 184 => 0x16, 186 => 0x101, 187 => 0x36, 189 => 0x7, 233 => 0x3, 277 => 0x4, 335 => 0x32, 412 => 0x2c, 435 => 0xb029, 509 => 'ColorMode' },
+ 'colormode' => { 113 => 0x3015, 127 => 0x1210, 140 => 0x66, 181 => 0x28, 184 => 0x16, 186 => 0x101, 187 => 0x36, 189 => 0x7, 233 => 0x3, 277 => 0x4, 335 => 0x32, 412 => 0x2c, 435 => 0xb029, 511 => 'ColorMode' },
'colormoirereduction' => { 103 => 0x20670, 288 => 0x15 },
'colormoirereductionmode' => { 288 => 0x5 },
'colormoirereductionon' => { 103 => '0x20670.0' },
@@ -1844,10 +1848,10 @@ my %tagLookup = (
'compimagesumexposureused' => { 501 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesSumOfExposureTimesOfUsed'] },
'compimagetotalexposureperiod' => { 501 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesTotalExposurePeriod'] },
'compimagevalues' => { 501 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesValues'] },
- 'complianceprofile' => { 511 => 'complianceProfile' },
+ 'complianceprofile' => { 513 => 'complianceProfile' },
'componentsconfiguration' => { 119 => 0x9101, 162 => 'Components', 500 => 'ComponentsConfiguration' },
'componentversion' => { 97 => 0x80c },
- 'composer' => { 179 => 'WM/Composer', 387 => ["\xa9com","\xa9wrt"], 395 => ["\xa9com","\xa9wrt"], 521 => 'composer' },
+ 'composer' => { 179 => 'WM/Composer', 387 => ["\xa9com","\xa9wrt"], 395 => ["\xa9com","\xa9wrt"], 523 => 'composer' },
'composerkeywords' => { 395 => "\xa9cok" },
'compositeimage' => { 119 => 0xa460, 501 => 'CompositeImage' },
'compositeimagecount' => { 119 => 0xa461, 501 => 'CompositeImageCount' },
@@ -1859,7 +1863,7 @@ my %tagLookup = (
'compositionadjusty' => { 369 => 0x6 },
'compressedbitsperpixel' => { 119 => 0x9102, 500 => 'CompressedBitsPerPixel' },
'compressedimagesize' => { 186 => 0x40, 317 => 0x40 },
- 'compression' => { 119 => 0x103, 340 => 0xb, 517 => 'Compression' },
+ 'compression' => { 119 => 0x103, 340 => 0xb, 519 => 'Compression' },
'compressionfactor' => { 312 => 0x50d },
'compressionformat' => { 63 => 0x4 },
'compressionratio' => { 162 => 'Compression', 317 => 0x1034 },
@@ -1880,7 +1884,7 @@ my %tagLookup = (
'constrainedcropheight' => { 108 => 0x266, 381 => 0xd6 },
'constrainedcropwidth' => { 108 => 0x262, 381 => 0xd5 },
'contact' => { 131 => 0x76 },
- 'contactinfo' => { 494 => 'ContactInfo', 496 => 'ContactInfo', 510 => 'contactInfo' },
+ 'contactinfo' => { 494 => 'ContactInfo', 496 => 'ContactInfo', 512 => 'contactInfo' },
'container' => { 473 => 'Container' },
'containerdirectory' => { 473 => [\'Container','ContainerDirectory'] },
'containerdirectoryitem' => { 473 => [\'Container','ContainerDirectoryItem'] },
@@ -1888,16 +1892,16 @@ my %tagLookup = (
'containerdirectoryitemlength' => { 473 => [\'Container','ContainerDirectoryItemLength'] },
'containerdirectoryitemmime' => { 473 => [\'Container','ContainerDirectoryItemMime'] },
'containerdirectoryitempadding' => { 473 => [\'Container','ContainerDirectoryItemPadding'] },
- 'containerformat' => { 507 => 'ContainerFormat' },
- 'containerformatidentifier' => { 507 => [\'ContainerFormat','ContainerFormatIdentifier'] },
- 'containerformatname' => { 507 => [\'ContainerFormat','ContainerFormatName'] },
+ 'containerformat' => { 508 => 'ContainerFormat' },
+ 'containerformatidentifier' => { 508 => [\'ContainerFormat','ContainerFormatIdentifier'] },
+ 'containerformatname' => { 508 => [\'ContainerFormat','ContainerFormatName'] },
'contentcreatedate' => { 387 => "\xa9day", 395 => ['@day',"\xa9day"] },
'contentdistributor' => { 179 => 'WM/ContentDistributor' },
'contentdistributorid' => { 395 => 'cdis' },
'contentid' => { 395 => 'ccid' },
'contentlocationcode' => { 131 => 0x1a },
'contentlocationname' => { 131 => 0x1b },
- 'contenttype' => { 511 => 'contentType' },
+ 'contenttype' => { 513 => 'contentType' },
'continuousbracketing' => { 184 => 0x20 },
'continuousdrive' => { 34 => 0x5 },
'continuousmodedisplay' => { 310 => 0x51 },
@@ -1926,24 +1930,24 @@ my %tagLookup = (
'contrastuserdef1' => { 19 => 0xee, 70 => 0x90, 71 => 0xa8 },
'contrastuserdef2' => { 19 => 0xef, 70 => 0xa8, 71 => 0xc0 },
'contrastuserdef3' => { 19 => 0xf0, 70 => 0xc0, 71 => 0xd8 },
- 'contributedmedia' => { 521 => 'contributedMedia' },
- 'contributedmediaduration' => { 521 => [\'contributedMedia','contributedMediaDuration'] },
- 'contributedmediadurationscale' => { 521 => [\'contributedMedia','contributedMediaDurationScale'] },
- 'contributedmediadurationvalue' => { 521 => [\'contributedMedia','contributedMediaDurationValue'] },
- 'contributedmediamanaged' => { 521 => [\'contributedMedia','contributedMediaManaged'] },
- 'contributedmediapath' => { 521 => [\'contributedMedia','contributedMediaPath'] },
- 'contributedmediastarttime' => { 521 => [\'contributedMedia','contributedMediaStartTime'] },
- 'contributedmediastarttimescale' => { 521 => [\'contributedMedia','contributedMediaStartTimeScale'] },
- 'contributedmediastarttimevalue' => { 521 => [\'contributedMedia','contributedMediaStartTimeValue'] },
- 'contributedmediatrack' => { 521 => [\'contributedMedia','contributedMediaTrack'] },
- 'contributedmediawebstatement' => { 521 => [\'contributedMedia','contributedMediaWebStatement'] },
- 'contributor' => { 497 => 'contributor', 507 => 'Contributor' },
- 'contributoridentifier' => { 507 => [\'Contributor','ContributorIdentifier'] },
- 'contributorname' => { 507 => [\'Contributor','ContributorName'] },
- 'contributorrole' => { 507 => [\'Contributor','ContributorRole'] },
+ 'contributedmedia' => { 523 => 'contributedMedia' },
+ 'contributedmediaduration' => { 523 => [\'contributedMedia','contributedMediaDuration'] },
+ 'contributedmediadurationscale' => { 523 => [\'contributedMedia','contributedMediaDurationScale'] },
+ 'contributedmediadurationvalue' => { 523 => [\'contributedMedia','contributedMediaDurationValue'] },
+ 'contributedmediamanaged' => { 523 => [\'contributedMedia','contributedMediaManaged'] },
+ 'contributedmediapath' => { 523 => [\'contributedMedia','contributedMediaPath'] },
+ 'contributedmediastarttime' => { 523 => [\'contributedMedia','contributedMediaStartTime'] },
+ 'contributedmediastarttimescale' => { 523 => [\'contributedMedia','contributedMediaStartTimeScale'] },
+ 'contributedmediastarttimevalue' => { 523 => [\'contributedMedia','contributedMediaStartTimeValue'] },
+ 'contributedmediatrack' => { 523 => [\'contributedMedia','contributedMediaTrack'] },
+ 'contributedmediawebstatement' => { 523 => [\'contributedMedia','contributedMediaWebStatement'] },
+ 'contributor' => { 497 => 'contributor', 508 => 'Contributor' },
+ 'contributoridentifier' => { 508 => [\'Contributor','ContributorIdentifier'] },
+ 'contributorname' => { 508 => [\'Contributor','ContributorName'] },
+ 'contributorrole' => { 508 => [\'Contributor','ContributorRole'] },
'contributors' => { 157 => 'Contributors' },
'controldialset' => { 184 => 0x46 },
- 'controlledvocabularyterm' => { 507 => 'CVterm' },
+ 'controlledvocabularyterm' => { 508 => 'CVterm' },
'controllerboardversion' => { 330 => 0x332 },
'controlmode' => { 77 => 0x12 },
'controlringresponse' => { 310 => 0x1d5 },
@@ -1951,9 +1955,9 @@ my %tagLookup = (
'conversionlens' => { 313 => 0x403, 335 => 0x35 },
'converter' => { 119 => 0xfe4d, 277 => 0xb, 494 => 'Converter', 496 => 'Converter' },
'converttograyscale' => { 494 => 'ConvertToGrayscale', 496 => 'ConvertToGrayscale' },
- 'cookingequipment' => { 513 => 'cookingEquipment' },
- 'cookingmethod' => { 513 => 'cookingMethod' },
- 'copyright' => { 0 => 0x3, 119 => 0x8298, 157 => 'Copyright', 325 => 'Copyright', 340 => 0x8298, 370 => 0x22f, 386 => 'Copyright', 387 => ['cprt',"\xa9cpy"], 389 => 'copyright', 395 => ['cprt',"\xa9cpy"], 494 => 'Copyright', 496 => 'Copyright', 508 => 'Copyright', 514 => 'copyright', 517 => 'Copyright', 521 => 'copyright' },
+ 'cookingequipment' => { 515 => 'cookingEquipment' },
+ 'cookingmethod' => { 515 => 'cookingMethod' },
+ 'copyright' => { 0 => 0x3, 119 => 0x8298, 157 => 'Copyright', 325 => 'Copyright', 340 => 0x8298, 370 => 0x22f, 386 => 'Copyright', 387 => ['cprt',"\xa9cpy"], 389 => 'copyright', 395 => ['cprt',"\xa9cpy"], 494 => 'Copyright', 496 => 'Copyright', 510 => 'Copyright', 516 => 'copyright', 519 => 'Copyright', 523 => 'copyright' },
'copyrightflag' => { 384 => 0x40a },
'copyrightnotice' => { 131 => 0x74 },
'copyrightowner' => { 322 => 'CopyrightOwner' },
@@ -1962,48 +1966,48 @@ my %tagLookup = (
'copyrightownername' => { 322 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerName'] },
'copyrightregistrationnumber' => { 322 => 'CopyrightRegistrationNumber' },
'copyrightstatus' => { 322 => 'CopyrightStatus' },
- 'copyrightyear' => { 507 => 'CopyrightYear', 511 => 'copyrightYear' },
+ 'copyrightyear' => { 508 => 'CopyrightYear', 513 => 'copyrightYear' },
'coringfilter' => { 316 => 0x310, 317 => 0x102d, 320 => 0x310 },
'coringvalues' => { 316 => 0x311, 320 => 0x311 },
- 'corporateentity' => { 511 => 'corporateEntity' },
+ 'corporateentity' => { 513 => 'corporateEntity' },
'correlatedcolortemp' => { 334 => 0x35b },
- 'country' => { 161 => 'Country', 335 => 0x69, 509 => 'Country' },
+ 'country' => { 161 => 'Country', 335 => 0x69, 511 => 'Country' },
'country-primarylocationcode' => { 131 => 0x64 },
'country-primarylocationname' => { 131 => 0x65 },
- 'countrycode' => { 232 => 0x5, 382 => 'CountryCode', 506 => 'CountryCode' },
- 'course' => { 513 => 'course' },
+ 'countrycode' => { 232 => 0x5, 382 => 'CountryCode', 507 => 'CountryCode' },
+ 'course' => { 515 => 'course' },
'coverage' => { 497 => 'coverage' },
'coverart' => { 387 => 'covr' },
- 'coverdate' => { 511 => 'coverDate' },
- 'coverdisplaydate' => { 511 => 'coverDisplayDate' },
+ 'coverdate' => { 513 => 'coverDate' },
+ 'coverdisplaydate' => { 513 => 'coverDisplayDate' },
'coveruri' => { 395 => 'cvru' },
'cpufirmwareversion' => { 370 => 0x28 },
'crc32' => { 498 => 'crc32' },
- 'createdate' => { 119 => 0x9004, 157 => 'CreateDate', 321 => 'CreationDate', 325 => 'create-date', 386 => 'CreationDate', 392 => 0x1, 519 => 'CreateDate' },
- 'creationdate' => { 389 => 'creationdate', 508 => 'CreationDate', 511 => 'creationDate' },
+ 'createdate' => { 119 => 0x9004, 157 => 'CreateDate', 321 => 'CreationDate', 325 => 'create-date', 386 => 'CreationDate', 392 => 0x1, 521 => 'CreateDate' },
+ 'creationdate' => { 389 => 'creationdate', 510 => 'CreationDate', 513 => 'creationDate' },
'creationtime' => { 325 => 'Creation Time' },
'creativestyle' => { 422 => 0x1a, 423 => 0x18, 433 => 0x41, 435 => 0xb020, 466 => 0x4a },
'creativestylesetting' => { 424 => 0xf, 440 => 0x7 },
'creativestylewaschanged' => { 470 => 0x8001 },
- 'creator' => { 321 => 'Creator', 386 => 'Creator', 497 => 'creator', 507 => 'Creator', 508 => 'Creator' },
- 'creatoraddress' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiAdrExtadr'] },
+ 'creator' => { 321 => 'Creator', 386 => 'Creator', 497 => 'creator', 508 => 'Creator', 510 => 'Creator' },
+ 'creatoraddress' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiAdrExtadr'] },
'creatorappid' => { 178 => 'CreatorAppId' },
- 'creatorcity' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCity'] },
- 'creatorcontactinfo' => { 506 => 'CreatorContactInfo' },
- 'creatorcountry' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCtry'] },
- 'creatoridentifier' => { 507 => [\'Creator','CreatorIdentifier'] },
- 'creatorname' => { 507 => [\'Creator','CreatorName'] },
+ 'creatorcity' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCity'] },
+ 'creatorcontactinfo' => { 507 => 'CreatorContactInfo' },
+ 'creatorcountry' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCtry'] },
+ 'creatoridentifier' => { 508 => [\'Creator','CreatorIdentifier'] },
+ 'creatorname' => { 508 => [\'Creator','CreatorName'] },
'creatoropenwithuioptions' => { 178 => 'CreatorOpenWithUIOptions' },
- 'creatorpostalcode' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiAdrPcode'] },
- 'creatorregion' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiAdrRegion'] },
- 'creatorrole' => { 507 => [\'Creator','CreatorRole'] },
- 'creatortool' => { 519 => 'CreatorTool' },
- 'creatorworkemail' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiEmailWork'] },
- 'creatorworktelephone' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiTelWork'] },
- 'creatorworkurl' => { 506 => [\'CreatorContactInfo','CreatorContactInfoCiUrlWork'] },
- 'credit' => { 131 => 0x6e, 509 => 'Credit' },
- 'creditline' => { 514 => 'creditLine' },
- 'creditlinereq' => { 524 => 'CreditLineReq' },
+ 'creatorpostalcode' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiAdrPcode'] },
+ 'creatorregion' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiAdrRegion'] },
+ 'creatorrole' => { 508 => [\'Creator','CreatorRole'] },
+ 'creatortool' => { 521 => 'CreatorTool' },
+ 'creatorworkemail' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiEmailWork'] },
+ 'creatorworktelephone' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiTelWork'] },
+ 'creatorworkurl' => { 507 => [\'CreatorContactInfo','CreatorContactInfoCiUrlWork'] },
+ 'credit' => { 131 => 0x6e, 511 => 'Credit' },
+ 'creditline' => { 516 => 'creditLine' },
+ 'creditlinereq' => { 526 => 'CreditLineReq' },
'creditlinerequired' => { 322 => 'CreditLineRequired' },
'cropactive' => { 101 => 0x0, 108 => 0x244 },
'cropangle' => { 494 => 'CropAngle', 496 => 'CropAngle' },
@@ -2058,7 +2062,7 @@ my %tagLookup = (
'cropy' => { 101 => 0x4, 488 => 'CropY' },
'crossprocess' => { 370 => 0x7b },
'crossprocessparams' => { 370 => 0x235 },
- 'cuisine' => { 513 => 'cuisine' },
+ 'cuisine' => { 515 => 'cuisine' },
'currenticcprofile' => { 119 => 0xc691 },
'currentpreprofilematrix' => { 119 => 0xc692 },
'currentversion' => { 470 => 0xd000 },
@@ -2138,26 +2142,26 @@ my %tagLookup = (
'darkpedestal' => { 138 => 0xc7f },
'datacompressionmethod' => { 133 => 0x6e },
'dataimprint' => { 181 => 0x34 },
- 'dataonscreen' => { 507 => 'DataOnScreen' },
- 'dataonscreenregion' => { 507 => [\'DataOnScreen','DataOnScreenRegion'] },
- 'dataonscreenregiond' => { 507 => [\'DataOnScreen','DataOnScreenRegionD'] },
- 'dataonscreenregionh' => { 507 => [\'DataOnScreen','DataOnScreenRegionH'] },
- 'dataonscreenregiontext' => { 507 => [\'DataOnScreen','DataOnScreenRegionText'] },
- 'dataonscreenregionunit' => { 507 => [\'DataOnScreen','DataOnScreenRegionUnit'] },
- 'dataonscreenregionw' => { 507 => [\'DataOnScreen','DataOnScreenRegionW'] },
- 'dataonscreenregionx' => { 507 => [\'DataOnScreen','DataOnScreenRegionX'] },
- 'dataonscreenregiony' => { 507 => [\'DataOnScreen','DataOnScreenRegionY'] },
+ 'dataonscreen' => { 508 => 'DataOnScreen' },
+ 'dataonscreenregion' => { 508 => [\'DataOnScreen','DataOnScreenRegion'] },
+ 'dataonscreenregiond' => { 508 => [\'DataOnScreen','DataOnScreenRegionD'] },
+ 'dataonscreenregionh' => { 508 => [\'DataOnScreen','DataOnScreenRegionH'] },
+ 'dataonscreenregiontext' => { 508 => [\'DataOnScreen','DataOnScreenRegionText'] },
+ 'dataonscreenregionunit' => { 508 => [\'DataOnScreen','DataOnScreenRegionUnit'] },
+ 'dataonscreenregionw' => { 508 => [\'DataOnScreen','DataOnScreenRegionW'] },
+ 'dataonscreenregionx' => { 508 => [\'DataOnScreen','DataOnScreenRegionX'] },
+ 'dataonscreenregiony' => { 508 => [\'DataOnScreen','DataOnScreenRegionY'] },
'datascaling' => { 370 => 0x3d },
'date' => { 370 => 0x6, 497 => 'date' },
'dateacquired' => { 178 => 'DateAcquired', 179 => '{2CBAA8F5-D81F-47CA-B17A-F8D822300131} 100' },
- 'datecreated' => { 131 => 0x37, 509 => 'DateCreated' },
+ 'datecreated' => { 131 => 0x37, 511 => 'DateCreated' },
'datedisplayformat' => { 279 => 0x3 },
'dateidentified' => { 118 => [\'Identification','IdentificationDateIdentified'] },
'dateimprint' => { 299 => '4.2' },
- 'daterecieved' => { 511 => 'dateRecieved' },
+ 'daterecieved' => { 513 => 'dateRecieved' },
'datesent' => { 132 => 0x46 },
'datestampmode' => { 64 => 0x1c, 233 => 0x9d },
- 'datetime' => { 489 => 'datetime', 517 => 'DateTime' },
+ 'datetime' => { 489 => 'datetime', 519 => 'DateTime' },
'datetimedigitized' => { 500 => 'DateTimeDigitized' },
'datetimeoriginal' => { 100 => 0x0, 119 => 0x9003, 154 => 0x14, 157 => 'OriginalDate', 390 => 'IDIT', 395 => 'date', 396 => 0xb, 397 => 0x3b, 398 => 0x3e, 500 => 'DateTimeOriginal' },
'datetimestamp' => { 140 => 0x64 },
@@ -2240,31 +2244,31 @@ my %tagLookup = (
'depthmeasuretype' => { 119 => 0xc7ed },
'depthnear' => { 119 => 0xc7ea },
'depthunits' => { 119 => 0xc7ec },
- 'derivedfrom' => { 522 => 'DerivedFrom' },
- 'derivedfromalternatepaths' => { 522 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
- 'derivedfromdocumentid' => { 522 => [\'DerivedFrom','DerivedFromDocumentID'] },
- 'derivedfromfilepath' => { 522 => [\'DerivedFrom','DerivedFromFilePath'] },
- 'derivedfromfrompart' => { 522 => [\'DerivedFrom','DerivedFromFromPart'] },
- 'derivedfrominstanceid' => { 522 => [\'DerivedFrom','DerivedFromInstanceID'] },
- 'derivedfromlastmodifydate' => { 522 => [\'DerivedFrom','DerivedFromLastModifyDate'] },
- 'derivedfromlasturl' => { 522 => [\'DerivedFrom','DerivedFromLastURL'] },
- 'derivedfromlinkcategory' => { 522 => [\'DerivedFrom','DerivedFromLinkCategory'] },
- 'derivedfromlinkform' => { 522 => [\'DerivedFrom','DerivedFromLinkForm'] },
- 'derivedfrommanager' => { 522 => [\'DerivedFrom','DerivedFromManager'] },
- 'derivedfrommanagervariant' => { 522 => [\'DerivedFrom','DerivedFromManagerVariant'] },
- 'derivedfrommanageto' => { 522 => [\'DerivedFrom','DerivedFromManageTo'] },
- 'derivedfrommanageui' => { 522 => [\'DerivedFrom','DerivedFromManageUI'] },
- 'derivedfrommaskmarkers' => { 522 => [\'DerivedFrom','DerivedFromMaskMarkers'] },
- 'derivedfromoriginaldocumentid' => { 522 => [\'DerivedFrom','DerivedFromOriginalDocumentID'] },
- 'derivedfrompartmapping' => { 522 => [\'DerivedFrom','DerivedFromPartMapping'] },
- 'derivedfromplacedresolutionunit' => { 522 => [\'DerivedFrom','DerivedFromPlacedResolutionUnit'] },
- 'derivedfromplacedxresolution' => { 522 => [\'DerivedFrom','DerivedFromPlacedXResolution'] },
- 'derivedfromplacedyresolution' => { 522 => [\'DerivedFrom','DerivedFromPlacedYResolution'] },
- 'derivedfromrenditionclass' => { 522 => [\'DerivedFrom','DerivedFromRenditionClass'] },
- 'derivedfromrenditionparams' => { 522 => [\'DerivedFrom','DerivedFromRenditionParams'] },
- 'derivedfromtopart' => { 522 => [\'DerivedFrom','DerivedFromToPart'] },
- 'derivedfromversionid' => { 522 => [\'DerivedFrom','DerivedFromVersionID'] },
- 'description' => { 325 => 'Description', 387 => ['desc','dscp',"\xa9des"], 389 => 'description', 395 => 'dscp', 494 => 'Description', 496 => 'Description', 497 => 'description', 519 => 'Description' },
+ 'derivedfrom' => { 524 => 'DerivedFrom' },
+ 'derivedfromalternatepaths' => { 524 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
+ 'derivedfromdocumentid' => { 524 => [\'DerivedFrom','DerivedFromDocumentID'] },
+ 'derivedfromfilepath' => { 524 => [\'DerivedFrom','DerivedFromFilePath'] },
+ 'derivedfromfrompart' => { 524 => [\'DerivedFrom','DerivedFromFromPart'] },
+ 'derivedfrominstanceid' => { 524 => [\'DerivedFrom','DerivedFromInstanceID'] },
+ 'derivedfromlastmodifydate' => { 524 => [\'DerivedFrom','DerivedFromLastModifyDate'] },
+ 'derivedfromlasturl' => { 524 => [\'DerivedFrom','DerivedFromLastURL'] },
+ 'derivedfromlinkcategory' => { 524 => [\'DerivedFrom','DerivedFromLinkCategory'] },
+ 'derivedfromlinkform' => { 524 => [\'DerivedFrom','DerivedFromLinkForm'] },
+ 'derivedfrommanager' => { 524 => [\'DerivedFrom','DerivedFromManager'] },
+ 'derivedfrommanagervariant' => { 524 => [\'DerivedFrom','DerivedFromManagerVariant'] },
+ 'derivedfrommanageto' => { 524 => [\'DerivedFrom','DerivedFromManageTo'] },
+ 'derivedfrommanageui' => { 524 => [\'DerivedFrom','DerivedFromManageUI'] },
+ 'derivedfrommaskmarkers' => { 524 => [\'DerivedFrom','DerivedFromMaskMarkers'] },
+ 'derivedfromoriginaldocumentid' => { 524 => [\'DerivedFrom','DerivedFromOriginalDocumentID'] },
+ 'derivedfrompartmapping' => { 524 => [\'DerivedFrom','DerivedFromPartMapping'] },
+ 'derivedfromplacedresolutionunit' => { 524 => [\'DerivedFrom','DerivedFromPlacedResolutionUnit'] },
+ 'derivedfromplacedxresolution' => { 524 => [\'DerivedFrom','DerivedFromPlacedXResolution'] },
+ 'derivedfromplacedyresolution' => { 524 => [\'DerivedFrom','DerivedFromPlacedYResolution'] },
+ 'derivedfromrenditionclass' => { 524 => [\'DerivedFrom','DerivedFromRenditionClass'] },
+ 'derivedfromrenditionparams' => { 524 => [\'DerivedFrom','DerivedFromRenditionParams'] },
+ 'derivedfromtopart' => { 524 => [\'DerivedFrom','DerivedFromToPart'] },
+ 'derivedfromversionid' => { 524 => [\'DerivedFrom','DerivedFromVersionID'] },
+ 'description' => { 325 => 'Description', 387 => ['desc','dscp',"\xa9des"], 389 => 'description', 395 => 'dscp', 494 => 'Description', 496 => 'Description', 497 => 'description', 521 => 'Description' },
'destination' => { 132 => 0x5 },
'destinationcity' => { 370 => 0x24, 376 => 0x3 },
'destinationcitycode' => { 377 => 0x1001 },
@@ -2280,7 +2284,7 @@ my %tagLookup = (
'deviantwhiteflash' => { 138 => 0x841 },
'deviantwhitefluorescent' => { 138 => 0x840 },
'deviantwhitetungsten' => { 138 => 0x83f },
- 'device' => { 511 => 'device' },
+ 'device' => { 513 => 'device' },
'devicesettingdescription' => { 500 => 'DeviceSettingDescription' },
'devicesettingdescriptioncolumns' => { 500 => [\'DeviceSettingDescription','DeviceSettingDescriptionColumns'] },
'devicesettingdescriptionrows' => { 500 => [\'DeviceSettingDescription','DeviceSettingDescriptionRows'] },
@@ -2289,7 +2293,7 @@ my %tagLookup = (
'dewarpdata' => { 116 => 'DewarpData' },
'dewarpflag' => { 116 => 'DewarpFlag' },
'dialdirectiontvav' => { 84 => 0x706 },
- 'dietaryneeds' => { 513 => 'dietaryNeeds' },
+ 'dietaryneeds' => { 515 => 'dietaryNeeds' },
'diffractioncompensation' => { 222 => 0x20e, 237 => 0x142, 238 => 0x1a2, 239 => 0x1b6 },
'diffractioncorrection' => { 335 => 0xbc, 360 => 0x3 },
'diffractioncorrectionon' => { 103 => 0x2070b },
@@ -2322,31 +2326,31 @@ my %tagLookup = (
'digitalgain' => { 74 => 0xb },
'digitalgem' => { 217 => 0x0 },
'digitalice' => { 254 => 0x100 },
- 'digitalimageguid' => { 507 => 'DigImageGUID' },
+ 'digitalimageguid' => { 508 => 'DigImageGUID' },
'digitallensoptimizer' => { 62 => 0xa },
'digitallensoptimizersetting' => { 80 => 0x9 },
'digitalroc' => { 251 => 0x0 },
- 'digitalsourcefiletype' => { 507 => 'DigitalSourcefileType' },
- 'digitalsourcetype' => { 507 => 'DigitalSourceType' },
+ 'digitalsourcefiletype' => { 508 => 'DigitalSourcefileType' },
+ 'digitalsourcetype' => { 508 => 'DigitalSourceType' },
'digitalzoom' => { 34 => 0xc, 112 => 0xa, 127 => 0x1044, 140 => 0x68, 151 => 0x22, 152 => 0x1e, 156 => 'DigitalZoom', 181 => 0xc, 233 => 0x86, 277 => 0xa, 317 => 0x204, 370 => 0x1e, 377 => 0xa, 411 => 0x204, 457 => 0x12, 458 => 0x12 },
'digitalzoomon' => { 411 => 0x21b },
'digitalzoomratio' => { 119 => 0xa404, 446 => 0x200, 448 => 0x21c, 500 => 'DigitalZoomRatio' },
- 'director' => { 179 => 'WM/Director', 387 => "\xa9dir", 389 => 'director', 395 => "\xa9dir", 521 => 'director' },
- 'directorphotography' => { 521 => 'directorPhotography' },
+ 'director' => { 179 => 'WM/Director', 387 => "\xa9dir", 389 => 'director', 395 => "\xa9dir", 523 => 'director' },
+ 'directorphotography' => { 523 => 'directorPhotography' },
'directory' => { 120 => 'Directory' },
'directoryindex' => { 7 => 0x137, 9 => 0x2dc, 11 => 0x17e, 13 => 0x238, 14 => 0x13f, 15 => 0x133, 16 => 0x1df, 17 => 0x1a7, 18 => 0x1f0, 19 => 0xcc, 20 => 0x1c7, 21 => 0x298, 22 => 0x1e7, 23 => 0x1e5, 24 => [0x27c,0x280], 25 => 0x2b6, 26 => 0x2bf, 28 => 0x1f7, 29 => 0x4ba },
'directoryindex2' => { 21 => 0x29c },
'directorynumber' => { 210 => 0x3, 398 => 0x12 },
'disableautocreation' => { 477 => 'DisableAutoCreation' },
'disclaimer' => { 325 => 'Disclaimer' },
- 'discnumber' => { 521 => 'discNumber' },
- 'dishtype' => { 513 => 'dishType' },
+ 'discnumber' => { 523 => 'discNumber' },
+ 'dishtype' => { 515 => 'dishType' },
'disknumber' => { 387 => 'disk' },
'displayallafpoints' => { 84 => 0x514 },
'displayaperture' => { 34 => 0x23 },
'displayedunitsx' => { 385 => 0x2 },
'displayedunitsy' => { 385 => 0x6 },
- 'displayname' => { 389 => 'displayname', 510 => 'displayName' },
+ 'displayname' => { 389 => 'displayname', 512 => 'displayName' },
'distance1' => { 140 => 0x28 },
'distance2' => { 140 => 0x2c },
'distance3' => { 140 => 0x30 },
@@ -2371,14 +2375,14 @@ my %tagLookup = (
'distortionparam09' => { 339 => 0x9 },
'distortionparam11' => { 339 => 0xb },
'distortionscale' => { 339 => 0x5 },
- 'distributor' => { 511 => 'distributor' },
- 'distributorproductid' => { 510 => 'distributorProductID' },
+ 'distributor' => { 513 => 'distributor' },
+ 'distributorproductid' => { 512 => 'distributorProductID' },
'dloon' => { 103 => '0x20706.0', 109 => 0xdc },
'dlosetting' => { 103 => 0x20706, 109 => 0xdd },
'dlosettingapplied' => { 102 => 0x4 },
'dloshootingdistance' => { 109 => 0xde },
'dloversion' => { 102 => 0x5 },
- 'dmcomment' => { 521 => 'comment' },
+ 'dmcomment' => { 523 => 'comment' },
'dmdithermatrix' => { 138 => 0xc7a },
'dmdithermatrixheight' => { 138 => 0xc7c },
'dmdithermatrixwidth' => { 138 => 0xc7b },
@@ -2389,16 +2393,16 @@ my %tagLookup = (
'dngprivatedata' => { 119 => 0xc634 },
'dngversion' => { 119 => 0xc612 },
'document' => { 325 => 'Document' },
- 'documentancestors' => { 509 => 'DocumentAncestors' },
+ 'documentancestors' => { 511 => 'DocumentAncestors' },
'documenthistory' => { 131 => 0xe7 },
- 'documentid' => { 522 => 'DocumentID' },
+ 'documentid' => { 524 => 'DocumentID' },
'documentname' => { 119 => 0x10d },
'documentnotes' => { 131 => 0xe6 },
- 'doi' => { 511 => 'doi' },
- 'dopesheet' => { 507 => 'Dopesheet' },
- 'dopesheetlink' => { 507 => 'DopesheetLink' },
- 'dopesheetlinklink' => { 507 => [\'DopesheetLink','DopesheetLinkLink'] },
- 'dopesheetlinklinkqualifier' => { 507 => [\'DopesheetLink','DopesheetLinkLinkQualifier'] },
+ 'doi' => { 513 => 'doi' },
+ 'dopesheet' => { 508 => 'Dopesheet' },
+ 'dopesheetlink' => { 508 => 'DopesheetLink' },
+ 'dopesheetlinklink' => { 508 => [\'DopesheetLink','DopesheetLinkLink'] },
+ 'dopesheetlinklinkqualifier' => { 508 => [\'DopesheetLink','DopesheetLinkLinkQualifier'] },
'doublingmicrovolts' => { 138 => 0xc82 },
'dpp' => { 489 => 'dpp' },
'dr4cameramodel' => { 104 => 0x3 },
@@ -2410,9 +2414,9 @@ my %tagLookup = (
'drivemodesetting' => { 424 => 0x4 },
'drivespeed' => { 125 => '0.2' },
'dspfirmwareversion' => { 370 => 0x27 },
- 'duration' => { 67 => 0x6a, 155 => 'Duration', 169 => 'Duration', 513 => 'duration', 521 => 'duration' },
- 'durationscale' => { 521 => [\'duration','durationScale'] },
- 'durationvalue' => { 521 => [\'duration','durationValue'] },
+ 'duration' => { 67 => 0x6a, 155 => 'Duration', 169 => 'Duration', 515 => 'duration', 523 => 'duration' },
+ 'durationscale' => { 523 => [\'duration','durationScale'] },
+ 'durationvalue' => { 523 => [\'duration','durationValue'] },
'dustremovaldata' => { 64 => 0x97 },
'dxcropalert' => { 238 => 0x23c, 239 => 0x250 },
'dynamicafarea' => { 294 => '1.4', 303 => '1.4' },
@@ -2463,24 +2467,24 @@ my %tagLookup = (
'edit7' => { 395 => "\xa9ed7" },
'edit8' => { 395 => "\xa9ed8" },
'edit9' => { 395 => "\xa9ed9" },
- 'edition' => { 511 => 'edition' },
+ 'edition' => { 513 => 'edition' },
'editorialupdate' => { 131 => 0x8 },
'editstatus' => { 131 => 0x7, 382 => 'EditStatus', 489 => 'EditStatus' },
'editversionname' => { 287 => 0x3d136244 },
'effectivelv' => { 370 => 0x2d },
'effectivemaxaperture' => { 226 => 0x12, 227 => 0x13, 231 => 0x14 },
- 'eissn' => { 511 => 'eIssn' },
+ 'eissn' => { 513 => 'eIssn' },
'electricalblackcolumns' => { 138 => 0x1810 },
'electronicfront-curtainshutter' => { 297 => '5.2', 298 => '5.2', 307 => '5.3', 308 => '5.2' },
'electronicfrontcurtainshutter' => { 435 => 0x201a },
'elevation' => { 165 => 'Elevation' },
'email' => { 157 => 'EMail' },
- 'embargodate' => { 514 => 'embargoDate' },
- 'embdencrightsexpr' => { 507 => 'EmbdEncRightsExpr' },
- 'embeddedencodedrightsexpr' => { 507 => [\'EmbdEncRightsExpr','EmbdEncRightsExprEncRightsExpr'] },
- 'embeddedencodedrightsexprlangid' => { 507 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprLangId'] },
- 'embeddedencodedrightsexprtype' => { 507 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprEncType'] },
- 'embeddedxmpdigest' => { 509 => 'EmbeddedXMPDigest' },
+ 'embargodate' => { 516 => 'embargoDate' },
+ 'embdencrightsexpr' => { 508 => 'EmbdEncRightsExpr' },
+ 'embeddedencodedrightsexpr' => { 508 => [\'EmbdEncRightsExpr','EmbdEncRightsExprEncRightsExpr'] },
+ 'embeddedencodedrightsexprlangid' => { 508 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprLangId'] },
+ 'embeddedencodedrightsexprtype' => { 508 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprEncType'] },
+ 'embeddedxmpdigest' => { 511 => 'EmbeddedXMPDigest' },
'emissivity' => { 121 => 0x3 },
'emptyslotrelease' => { 238 => 0x625, 239 => 0x655 },
'enablechromanoisereduction' => { 138 => 0xe6e },
@@ -2491,12 +2495,12 @@ my %tagLookup = (
'encoderid' => { 395 => "\xa9enc" },
'encodingtime' => { 179 => 'WM/EncodingTime' },
'encryptionkey' => { 409 => 0xa020 },
- 'endingpage' => { 511 => 'endingPage' },
+ 'endingpage' => { 513 => 'endingPage' },
'enduser' => { 322 => 'EndUser' },
'enduserid' => { 322 => [\'EndUser','EndUserEndUserID'] },
'endusername' => { 322 => [\'EndUser','EndUserEndUserName'] },
'energysavingmode' => { 238 => 0x648, 239 => 0x678 },
- 'engineer' => { 521 => 'engineer' },
+ 'engineer' => { 523 => 'engineer' },
'enhancedarktones' => { 280 => 0x8 },
'enhancedenoisealreadyapplied' => { 491 => 'EnhanceDenoiseAlreadyApplied' },
'enhancedenoiselumaamount' => { 491 => 'EnhanceDenoiseLumaAmount' },
@@ -2513,11 +2517,11 @@ my %tagLookup = (
'envelopenumber' => { 132 => 0x28 },
'envelopepriority' => { 132 => 0x3c },
'enveloperecordversion' => { 132 => 0x0 },
- 'episode' => { 507 => 'Episode' },
+ 'episode' => { 508 => 'Episode' },
'episodeglobaluniqueid' => { 387 => 'egid' },
- 'episodeidentifier' => { 507 => [\'Episode','EpisodeIdentifier'] },
- 'episodename' => { 507 => [\'Episode','EpisodeName'] },
- 'episodenumber' => { 507 => [\'Episode','EpisodeNumber'] },
+ 'episodeidentifier' => { 508 => [\'Episode','EpisodeIdentifier'] },
+ 'episodename' => { 508 => [\'Episode','EpisodeName'] },
+ 'episodenumber' => { 508 => [\'Episode','EpisodeNumber'] },
'epsonimageheight' => { 317 => 0x20c },
'epsonimagewidth' => { 317 => 0x20b },
'epsonsoftware' => { 317 => 0x20d },
@@ -2525,17 +2529,17 @@ my %tagLookup = (
'equipmentmanufacturer' => { 472 => 'EquipmentManufacturer' },
'equipmentversion' => { 313 => 0x0 },
'ettlii' => { 84 => 0x304, 85 => 0xd, 86 => 0xe, 87 => 0x7, 88 => 0x7, 89 => 0xe },
- 'event' => { 475 => 'Event', 487 => 'Event', 507 => 'Event', 511 => 'event' },
- 'eventalias' => { 510 => 'eventAlias' },
+ 'event' => { 475 => 'Event', 487 => 'Event', 508 => 'Event', 513 => 'event' },
+ 'eventalias' => { 512 => 'eventAlias' },
'eventdate' => { 118 => [\'Event','EventEventDate'] },
'eventday' => { 118 => [\'Event','EventDay'] },
'eventearliestdate' => { 118 => [\'Event','EventEarliestDate'] },
- 'eventend' => { 510 => 'eventEnd' },
+ 'eventend' => { 512 => 'eventEnd' },
'eventenddayofyear' => { 118 => [\'Event','EventEndDayOfYear'] },
'eventfieldnotes' => { 118 => [\'Event','EventFieldNotes'] },
'eventfieldnumber' => { 118 => [\'Event','EventFieldNumber'] },
'eventhabitat' => { 118 => [\'Event','EventHabitat'] },
- 'eventid' => { 118 => [\'Event','EventEventID'], 507 => 'EventId' },
+ 'eventid' => { 118 => [\'Event','EventEventID'], 508 => 'EventId' },
'eventlatestdate' => { 118 => [\'Event','EventLatestDate'] },
'eventmonth' => { 118 => [\'Event','EventMonth'] },
'eventnumber' => { 396 => 0x9, 397 => 0x37, 398 => 0x3a },
@@ -2545,11 +2549,11 @@ my %tagLookup = (
'eventsamplesizevalue' => { 118 => [\'Event','EventSampleSizeValue'] },
'eventsamplingeffort' => { 118 => [\'Event','EventSamplingEffort'] },
'eventsamplingprotocol' => { 118 => [\'Event','EventSamplingProtocol'] },
- 'eventstart' => { 510 => 'eventStart' },
+ 'eventstart' => { 512 => 'eventStart' },
'eventstartdayofyear' => { 118 => [\'Event','EventStartDayOfYear'] },
- 'eventsubtype' => { 510 => 'eventSubtype' },
+ 'eventsubtype' => { 512 => 'eventSubtype' },
'eventtime' => { 118 => [\'Event','EventEventTime'] },
- 'eventtype' => { 510 => 'eventType' },
+ 'eventtype' => { 512 => 'eventType' },
'eventverbatimeventdate' => { 118 => [\'Event','EventVerbatimEventDate'] },
'eventyear' => { 118 => [\'Event','EventYear'] },
'evfgrid' => { 310 => 0x165 },
@@ -2560,7 +2564,7 @@ my %tagLookup = (
'evsteps' => { 351 => '1.2', 353 => 0x0 },
'evstepsize' => { 299 => '5.1', 300 => '6.1', 301 => '6.1', 305 => '0.7' },
'exclusivecoverage' => { 484 => 'ExclusiveCoverage' },
- 'exclusivityenddate' => { 514 => 'exclusivityEndDate' },
+ 'exclusivityenddate' => { 516 => 'exclusivityEndDate' },
'excursiontolerance' => { 133 => 0x82 },
'executiveproducer' => { 387 => "\xa9xpd" },
'exif' => { 120 => 'EXIF' },
@@ -2571,7 +2575,7 @@ my %tagLookup = (
'exifunicodebyteorder' => { 120 => 'ExifUnicodeByteOrder' },
'exifversion' => { 119 => 0x9000, 500 => 'ExifVersion' },
'exitpupilposition' => { 226 => 0x4, 227 => 0x4, 231 => 0x4 },
- 'expirationdate' => { 131 => 0x25, 514 => 'expirationDate' },
+ 'expirationdate' => { 131 => 0x25, 516 => 'expirationDate' },
'expirationtime' => { 131 => 0x26 },
'exposure' => { 119 => 0xfe51, 494 => 'Exposure', 496 => 'Exposure' },
'exposure2012' => { 494 => 'Exposure2012', 496 => 'Exposure2012' },
@@ -2615,7 +2619,7 @@ my %tagLookup = (
'exposurewarning' => { 127 => 0x1302 },
'exrauto' => { 127 => 0x1033 },
'exrmode' => { 127 => 0x1034 },
- 'extdescraccessibility' => { 506 => 'ExtDescrAccessibility' },
+ 'extdescraccessibility' => { 507 => 'ExtDescrAccessibility' },
'extendedmenubanks' => { 238 => 0x114, 239 => 0x124 },
'extendedshutterspeeds' => { 310 => 0x102 },
'extendedwbdetect' => { 312 => 0x902 },
@@ -2643,7 +2647,7 @@ my %tagLookup = (
'externalflashstatus' => { 215 => '8.2' },
'externalflashzoom' => { 315 => 0x1205, 317 => 0x1027 },
'externalflashzoomoverride' => { 215 => '8.1' },
- 'externalmetadatalink' => { 507 => 'ExternalMetadataLink' },
+ 'externalmetadatalink' => { 508 => 'ExternalMetadataLink' },
'externalsensorbrightnessvalue' => { 330 => 0x311, 333 => 0x311, 334 => 0x311, 337 => 0x3408 },
'extrainfoversion' => { 426 => 0x1a },
'eyestartaf' => { 184 => 0x40 },
@@ -2753,15 +2757,15 @@ my %tagLookup = (
'faithfulunsharpmaskthreshold' => { 109 => 0xae },
'far' => { 479 => 'Far' },
'fastresetlinetime' => { 138 => 0x1860 },
- 'feedidentifier' => { 507 => 'FeedIdentifier' },
+ 'feedidentifier' => { 508 => 'FeedIdentifier' },
'femicroadjustment' => { 84 => 0x111 },
'ffid' => { 498 => 'ffid' },
- 'field' => { 510 => 'field' },
+ 'field' => { 512 => 'field' },
'fieldcount' => { 317 => 0x103f },
'fieldofview' => { 395 => "FOV\x00" },
'fifoenonepixeldelay' => { 138 => 0x1901 },
'filecreatedate' => { 120 => 'FileCreateDate' },
- 'filedatarate' => { 521 => 'fileDataRate' },
+ 'filedatarate' => { 523 => 'fileDataRate' },
'fileformat' => { 95 => 0x0, 132 => 0x14, 412 => [0x22,0x26], 435 => 0xb000 },
'filegroupid' => { 120 => 'FileGroupID' },
'fileindex' => { 7 => 0x143, 9 => 0x2d0, 11 => 0x172, 13 => 0x22c, 14 => 0x133, 15 => 0x13f, 16 => 0x1d3, 17 => 0x19b, 18 => 0x1e4, 19 => 0xd0, 20 => 0x1bb, 21 => 0x28c, 22 => 0x1db, 23 => 0x1d9, 24 => [0x270,0x274], 25 => 0x2aa, 26 => 0x2b3, 28 => 0x1eb, 29 => 0x4ae, 336 => 0x0 },
@@ -3000,18 +3004,18 @@ my %tagLookup = (
'focuswarning' => { 127 => 0x1301 },
'foldername' => { 181 => 0x27 },
'foldernumber' => { 422 => 0x9a, 424 => [0x402,0x114,0x316] },
- 'fontcomposite' => { 526 => [\'Fonts','FontsComposite'] },
- 'fontface' => { 526 => [\'Fonts','FontsFontFace'] },
- 'fontfamily' => { 526 => [\'Fonts','FontsFontFamily'] },
- 'fontfilename' => { 526 => [\'Fonts','FontsFontFileName'] },
- 'fontname' => { 526 => [\'Fonts','FontsFontName'] },
- 'fonts' => { 526 => 'Fonts' },
- 'fonttype' => { 526 => [\'Fonts','FontsFontType'] },
- 'fontversion' => { 526 => [\'Fonts','FontsVersionString'] },
+ 'fontcomposite' => { 528 => [\'Fonts','FontsComposite'] },
+ 'fontface' => { 528 => [\'Fonts','FontsFontFace'] },
+ 'fontfamily' => { 528 => [\'Fonts','FontsFontFamily'] },
+ 'fontfilename' => { 528 => [\'Fonts','FontsFontFileName'] },
+ 'fontname' => { 528 => [\'Fonts','FontsFontName'] },
+ 'fonts' => { 528 => 'Fonts' },
+ 'fonttype' => { 528 => [\'Fonts','FontsFontType'] },
+ 'fontversion' => { 528 => [\'Fonts','FontsVersionString'] },
'for' => { 386 => 'For' },
'forcewrite' => { 120 => 'ForceWrite' },
- 'format' => { 395 => "\xa9fmt", 479 => 'Format', 497 => 'format', 519 => 'Format' },
- 'forwardlock' => { 516 => 'forwardlock' },
+ 'format' => { 395 => "\xa9fmt", 479 => 'Format', 497 => 'format', 521 => 'Format' },
+ 'forwardlock' => { 518 => 'forwardlock' },
'forwardmatrix1' => { 119 => 0xc714 },
'forwardmatrix2' => { 119 => 0xc715 },
'forwardmatrix3' => { 119 => 0xcd34 },
@@ -3024,7 +3028,7 @@ my %tagLookup = (
'framerate' => { 67 => [0x1,0x6], 119 => 0xc764, 127 => 0x3820 },
'framereadouttime' => { 389 => 'camera.framereadouttimeinmicroseconds' },
'framewidth' => { 127 => 0x3821 },
- 'framing' => { 510 => 'framing' },
+ 'framing' => { 512 => 'framing' },
'freebytes' => { 97 => 0x1 },
'freememorycardimages' => { 182 => [0x37,0x54], 183 => [0x2d,0x4a], 184 => 0x32 },
'frontfacingcamera' => { 1 => 0x45 },
@@ -3054,7 +3058,9 @@ my %tagLookup = (
'functionbutton' => { 301 => '13.1', 305 => '5.2' },
'gainbase' => { 316 => 0x610 },
'gaincontrol' => { 119 => 0xa407, 500 => 'GainControl' },
- 'gamma' => { 119 => 0xa500, 138 => 0x8fe, 323 => 'gAMA', 340 => 0x11c, 501 => 'Gamma' },
+ 'gainmapmax' => { 505 => 'GainMapMax' },
+ 'gainmapmin' => { 505 => 'GainMapMin' },
+ 'gamma' => { 119 => 0xa500, 138 => 0x8fe, 323 => 'gAMA', 340 => 0x11c, 501 => 'Gamma', 505 => 'Gamma' },
'gammablackpoint' => { 105 => 0xc },
'gammacolortone' => { 105 => 0x3 },
'gammacompensatedvalue' => { 133 => 0x91 },
@@ -3077,13 +3083,13 @@ my %tagLookup = (
'geimagesize' => { 127 => 0x1304 },
'gemake' => { 129 => 0x300 },
'gemodel' => { 129 => 0x207 },
- 'genre' => { 387 => ['gnre',"\xa9gen"], 389 => 'genre', 395 => ['gnre',"\xa9gen"], 507 => 'Genre', 511 => 'genre', 521 => 'genre' },
- 'genrecvid' => { 507 => [\'Genre','GenreCvId'] },
- 'genrecvtermid' => { 507 => [\'Genre','GenreCvTermId'] },
- 'genrecvtermname' => { 507 => [\'Genre','GenreCvTermName'] },
- 'genrecvtermrefinedabout' => { 507 => [\'Genre','GenreCvTermRefinedAbout'] },
+ 'genre' => { 387 => ['gnre',"\xa9gen"], 389 => 'genre', 395 => ['gnre',"\xa9gen"], 508 => 'Genre', 513 => 'genre', 523 => 'genre' },
+ 'genrecvid' => { 508 => [\'Genre','GenreCvId'] },
+ 'genrecvtermid' => { 508 => [\'Genre','GenreCvTermId'] },
+ 'genrecvtermname' => { 508 => [\'Genre','GenreCvTermName'] },
+ 'genrecvtermrefinedabout' => { 508 => [\'Genre','GenreCvTermRefinedAbout'] },
'genreid' => { 387 => 'geID' },
- 'geography' => { 512 => 'geography' },
+ 'geography' => { 514 => 'geography' },
'geologicalcontext' => { 118 => 'GeologicalContext' },
'geologicalcontextbed' => { 118 => [\'GeologicalContext','GeologicalContextBed'] },
'geologicalcontextformation' => { 118 => [\'GeologicalContext','GeologicalContextFormation'] },
@@ -3103,7 +3109,7 @@ my %tagLookup = (
'gimbalyawdegree' => { 116 => 'GimbalYawDegree' },
'globalaltitude' => { 384 => 0x419 },
'globalangle' => { 384 => 0x40d },
- 'good' => { 521 => 'good' },
+ 'good' => { 523 => 'good' },
'googlehostheader' => { 387 => 'gshh' },
'googlepingmessage' => { 387 => 'gspm' },
'googlepingurl' => { 387 => 'gspu' },
@@ -3328,21 +3334,23 @@ my %tagLookup = (
'h3resetblackpixels' => { 138 => 0x18b0 },
'halftonehints' => { 119 => 0x141 },
'hardlink' => { 120 => 'HardLink' },
- 'hasalternative' => { 511 => 'hasAlternative' },
- 'hascorrection' => { 511 => 'hasCorrection' },
- 'hascorrectiona-lang' => { 511 => [\'hasCorrection','hasCorrectionA-lang'] },
- 'hascorrectiona-platform' => { 511 => [\'hasCorrection','hasCorrectionA-platform'] },
- 'hascorrectiontext' => { 511 => [\'hasCorrection','hasCorrectionText'] },
+ 'hasalternative' => { 513 => 'hasAlternative' },
+ 'hascorrection' => { 513 => 'hasCorrection' },
+ 'hascorrectiona-lang' => { 513 => [\'hasCorrection','hasCorrectionA-lang'] },
+ 'hascorrectiona-platform' => { 513 => [\'hasCorrection','hasCorrectionA-platform'] },
+ 'hascorrectiontext' => { 513 => [\'hasCorrection','hasCorrectionText'] },
'hascrop' => { 494 => 'HasCrop', 496 => 'HasCrop' },
- 'hasextendedxmp' => { 523 => 'HasExtendedXMP' },
+ 'hasextendedxmp' => { 525 => 'HasExtendedXMP' },
'hassettings' => { 494 => 'HasSettings', 496 => 'HasSettings' },
- 'hastranslation' => { 511 => 'hasTranslation' },
- 'hasvisibleoverprint' => { 526 => 'HasVisibleOverprint' },
- 'hasvisibletransparency' => { 526 => 'HasVisibleTransparency' },
+ 'hastranslation' => { 513 => 'hasTranslation' },
+ 'hasvisibleoverprint' => { 528 => 'HasVisibleOverprint' },
+ 'hasvisibletransparency' => { 528 => 'HasVisibleTransparency' },
'hdmioutputn-log' => { 237 => 0x35a },
'hdmioutputresolution' => { 238 => 0x610, 239 => 0x640 },
'hdmiviewassist' => { 310 => 0x20f },
'hdr' => { 60 => 0x1, 218 => 0x4, 219 => 0x4, 335 => 0x9e, 370 => 0x85, 435 => 0x200a },
+ 'hdrcapacitymax' => { 505 => 'HDRCapacityMax' },
+ 'hdrcapacitymin' => { 505 => 'HDRCapacityMin' },
'hdreditmode' => { 494 => 'HDREditMode', 496 => 'HDREditMode' },
'hdreffect' => { 60 => 0x2 },
'hdrgain' => { 1 => 0x30 },
@@ -3355,7 +3363,7 @@ my %tagLookup = (
'hdrshot' => { 335 => 0x76 },
'hdrsmoothing' => { 218 => 0x6 },
'hdvideo' => { 387 => 'hdvd' },
- 'headline' => { 131 => 0x69, 507 => 'Headline', 509 => 'Headline' },
+ 'headline' => { 131 => 0x69, 508 => 'Headline', 511 => 'Headline' },
'hierarchicalkeywords' => { 171 => [\'Keywords','KeywordsHierarchy'] },
'hierarchicalkeywords1' => { 171 => [\'Keywords','KeywordsHierarchyKeyword'] },
'hierarchicalkeywords1applied' => { 171 => [\'Keywords','KeywordsHierarchyApplied'] },
@@ -3401,13 +3409,13 @@ my %tagLookup = (
'highspeedsync' => { 184 => 0x5, 310 => 0x55, 422 => 0x2, 423 => 0x2 },
'hintversion' => { 395 => 'hinv' },
'histogramxml' => { 287 => 0x83a1a25 },
- 'history' => { 509 => 'History', 522 => 'History' },
- 'historyaction' => { 522 => [\'History','HistoryAction'] },
- 'historychanged' => { 522 => [\'History','HistoryChanged'] },
- 'historyinstanceid' => { 522 => [\'History','HistoryInstanceID'] },
- 'historyparameters' => { 522 => [\'History','HistoryParameters'] },
- 'historysoftwareagent' => { 522 => [\'History','HistorySoftwareAgent'] },
- 'historywhen' => { 522 => [\'History','HistoryWhen'] },
+ 'history' => { 511 => 'History', 524 => 'History' },
+ 'historyaction' => { 524 => [\'History','HistoryAction'] },
+ 'historychanged' => { 524 => [\'History','HistoryChanged'] },
+ 'historyinstanceid' => { 524 => [\'History','HistoryInstanceID'] },
+ 'historyparameters' => { 524 => [\'History','HistoryParameters'] },
+ 'historysoftwareagent' => { 524 => [\'History','HistorySoftwareAgent'] },
+ 'historywhen' => { 524 => [\'History','HistoryWhen'] },
'holefilldarkdeltathreshold' => { 138 => 0xc88 },
'holefilldeltathreshold' => { 138 => 0xc7e },
'hometowncity' => { 113 => 0x3006, 370 => 0x23, 376 => 0x2 },
@@ -3451,7 +3459,7 @@ my %tagLookup = (
'humanobservationyear' => { 118 => [\'HumanObservation','HumanObservationYear'] },
'humidity' => { 119 => 0x9401, 501 => 'Humidity' },
'icc_profile' => { 120 => 'ICC_Profile' },
- 'iccprofilename' => { 509 => 'ICCProfile' },
+ 'iccprofilename' => { 511 => 'ICCProfile' },
'iconuri' => { 395 => 'icnu' },
'idccreativestyle' => { 470 => 0x8000 },
'idcpreviewlength' => { 470 => 0x202 },
@@ -3464,7 +3472,7 @@ my %tagLookup = (
'identificationverificationstatus' => { 118 => [\'Identification','IdentificationIdentificationVerificationStatus'] },
'identifiedby' => { 118 => [\'Identification','IdentificationIdentifiedBy'] },
'identifiedbyid' => { 118 => [\'Identification','IdentificationIdentifiedByID'] },
- 'identifier' => { 497 => 'identifier', 519 => 'Identifier' },
+ 'identifier' => { 497 => 'identifier', 521 => 'Identifier' },
'ifcameramodel' => { 138 => 0x9c8 },
'illuminantdata1' => { 119 => 0xcd35 },
'illuminantdata2' => { 119 => 0xcd36 },
@@ -3489,17 +3497,19 @@ my %tagLookup = (
'imagecropy' => { 138 => 0x420 },
'imagedata' => { 481 => 'Data' },
'imagedatasize' => { 233 => 0xa2 },
- 'imagedescription' => { 119 => 0x10e, 517 => 'ImageDescription' },
+ 'imagedescription' => { 119 => 0x10e, 519 => 'ImageDescription' },
'imageduplicationconstraints' => { 322 => 'ImageDuplicationConstraints' },
'imagedustoff' => { 287 => 0xfe443a45 },
'imageeditcount' => { 370 => 0x41 },
'imageediting' => { 370 => 0x32 },
+ 'imageeditingsoftware' => { 119 => 0xa43b },
+ 'imageeditor' => { 119 => 0xa438 },
'imageeffects' => { 402 => 0x1010 },
'imagefileconstraints' => { 322 => 'ImageFileConstraints' },
'imagefileformatasdelivered' => { 322 => 'ImageFileFormatAsDelivered' },
'imagefilesizeasdelivered' => { 322 => 'ImageFileSizeAsDelivered' },
'imagegeneration' => { 127 => 0x1436 },
- 'imageheight' => { 119 => 0x101, 188 => 0xc, 379 => 0x10d, 479 => 'ImageHeight', 517 => 'ImageLength' },
+ 'imageheight' => { 119 => 0x101, 188 => 0xc, 379 => 0x10d, 479 => 'ImageHeight', 519 => 'ImageLength' },
'imagehistory' => { 119 => 0x9213, 499 => 'ImageHistory' },
'imageidnumber' => { 330 => 0x340 },
'imagemimetype' => { 481 => 'Mime' },
@@ -3518,27 +3528,27 @@ my %tagLookup = (
'imagerbiassettlingdelaymsec' => { 138 => 0x600 },
'imagerboardversion' => { 138 => 0x439 },
'imagercols' => { 138 => 0x17d4 },
- 'imageref' => { 505 => 'ImageRef' },
- 'imageregion' => { 507 => 'ImageRegion' },
- 'imageregionboundary' => { 507 => [\'ImageRegion','ImageRegionRegionBoundary'] },
- 'imageregionboundaryh' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbH'] },
- 'imageregionboundaryrx' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbRx'] },
- 'imageregionboundaryshape' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbShape'] },
- 'imageregionboundaryunit' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbUnit'] },
- 'imageregionboundaryvertices' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbVertices'] },
- 'imageregionboundaryverticesx' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbX'] },
- 'imageregionboundaryverticesy' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbY'] },
- 'imageregionboundaryw' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbW'] },
- 'imageregionboundaryx' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbX'] },
- 'imageregionboundaryy' => { 507 => [\'ImageRegion','ImageRegionRegionBoundaryRbY'] },
- 'imageregionctype' => { 507 => [\'ImageRegion','ImageRegionRCtype'] },
- 'imageregionctypeidentifier' => { 507 => [\'ImageRegion','ImageRegionRCtypeIdentifier'] },
- 'imageregionctypename' => { 507 => [\'ImageRegion','ImageRegionRCtypeName'] },
- 'imageregionid' => { 507 => [\'ImageRegion','ImageRegionRId'] },
- 'imageregionname' => { 507 => [\'ImageRegion','ImageRegionName'] },
- 'imageregionrole' => { 507 => [\'ImageRegion','ImageRegionRRole'] },
- 'imageregionroleidentifier' => { 507 => [\'ImageRegion','ImageRegionRRoleIdentifier'] },
- 'imageregionrolename' => { 507 => [\'ImageRegion','ImageRegionRRoleName'] },
+ 'imageref' => { 506 => 'ImageRef' },
+ 'imageregion' => { 508 => 'ImageRegion' },
+ 'imageregionboundary' => { 508 => [\'ImageRegion','ImageRegionRegionBoundary'] },
+ 'imageregionboundaryh' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbH'] },
+ 'imageregionboundaryrx' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbRx'] },
+ 'imageregionboundaryshape' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbShape'] },
+ 'imageregionboundaryunit' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbUnit'] },
+ 'imageregionboundaryvertices' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbVertices'] },
+ 'imageregionboundaryverticesx' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbX'] },
+ 'imageregionboundaryverticesy' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbY'] },
+ 'imageregionboundaryw' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbW'] },
+ 'imageregionboundaryx' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbX'] },
+ 'imageregionboundaryy' => { 508 => [\'ImageRegion','ImageRegionRegionBoundaryRbY'] },
+ 'imageregionctype' => { 508 => [\'ImageRegion','ImageRegionRCtype'] },
+ 'imageregionctypeidentifier' => { 508 => [\'ImageRegion','ImageRegionRCtypeIdentifier'] },
+ 'imageregionctypename' => { 508 => [\'ImageRegion','ImageRegionRCtypeName'] },
+ 'imageregionid' => { 508 => [\'ImageRegion','ImageRegionRId'] },
+ 'imageregionname' => { 508 => [\'ImageRegion','ImageRegionName'] },
+ 'imageregionrole' => { 508 => [\'ImageRegion','ImageRegionRRole'] },
+ 'imageregionroleidentifier' => { 508 => [\'ImageRegion','ImageRegionRRoleIdentifier'] },
+ 'imageregionrolename' => { 508 => [\'ImageRegion','ImageRegionRRoleName'] },
'imageresolution' => { 138 => 0x944 },
'imageresolutionjpg' => { 138 => 0x945 },
'imagereview' => { 296 => '0.4', 305 => '0.4' },
@@ -3554,7 +3564,7 @@ my %tagLookup = (
'imagesegmentstartline' => { 138 => 0x184c },
'imagesize' => { 162 => 'ImageSize' },
'imagesizeraw' => { 233 => 0x3e },
- 'imagesizerestriction' => { 514 => 'imageSizeRestriction' },
+ 'imagesizerestriction' => { 516 => 'imageSizeRestriction' },
'imagesourcedata' => { 119 => 0x935c },
'imagespace' => { 138 => 0x909 },
'imagestabilization' => { 34 => 0x22, 113 => 0x3020, 127 => 0x1422, 156 => 'ImageStabilization', 182 => 0xbd, 183 => 0x71, 184 => 0x57, 185 => 0x0, 186 => [0x18,0x107,0x113], 187 => 0x49c2, 233 => 0xac, 312 => 0x604, 315 => 0x1600, 335 => 0x1a, 427 => 0x12, 428 => 0x11, 435 => 0xb026 },
@@ -3570,41 +3580,41 @@ my %tagLookup = (
'imagetone' => { 370 => 0x4f },
'imagetype' => { 131 => 0x82, 322 => 'ImageType' },
'imageuniqueid' => { 1 => 0x15, 64 => 0x28, 119 => 0xa420, 499 => 'ImageUniqueID', 500 => 'ImageUniqueID' },
- 'imagewidth' => { 119 => 0x100, 188 => 0xe, 379 => 0x10c, 479 => 'ImageWidth', 517 => 'ImageWidth' },
+ 'imagewidth' => { 119 => 0x100, 188 => 0xe, 379 => 0x10c, 479 => 'ImageWidth', 519 => 'ImageWidth' },
'inclinationangle' => { 470 => 0x900f },
'inclinationcorrection' => { 470 => 0x900e },
'incrementaltemperature' => { 494 => 'IncrementalTemperature', 496 => 'IncrementalTemperature' },
'incrementaltint' => { 494 => 'IncrementalTint', 496 => 'IncrementalTint' },
- 'industry' => { 511 => 'industry', 512 => 'industry' },
+ 'industry' => { 513 => 'industry', 514 => 'industry' },
'infobuttonwhenshooting' => { 84 => 0x409 },
'information' => { 389 => 'information', 395 => "\xa9inf" },
'infourl' => { 395 => 'infu' },
'infraredilluminator' => { 396 => 0x28 },
- 'ingredientexclusion' => { 513 => 'ingredientExclusion' },
- 'ingredients' => { 522 => 'Ingredients' },
- 'ingredientsalternatepaths' => { 522 => [\'Ingredients','IngredientsAlternatePaths'] },
- 'ingredientsdocumentid' => { 522 => [\'Ingredients','IngredientsDocumentID'] },
- 'ingredientsfilepath' => { 522 => [\'Ingredients','IngredientsFilePath'] },
- 'ingredientsfrompart' => { 522 => [\'Ingredients','IngredientsFromPart'] },
- 'ingredientsinstanceid' => { 522 => [\'Ingredients','IngredientsInstanceID'] },
- 'ingredientslastmodifydate' => { 522 => [\'Ingredients','IngredientsLastModifyDate'] },
- 'ingredientslasturl' => { 522 => [\'Ingredients','IngredientsLastURL'] },
- 'ingredientslinkcategory' => { 522 => [\'Ingredients','IngredientsLinkCategory'] },
- 'ingredientslinkform' => { 522 => [\'Ingredients','IngredientsLinkForm'] },
- 'ingredientsmanager' => { 522 => [\'Ingredients','IngredientsManager'] },
- 'ingredientsmanagervariant' => { 522 => [\'Ingredients','IngredientsManagerVariant'] },
- 'ingredientsmanageto' => { 522 => [\'Ingredients','IngredientsManageTo'] },
- 'ingredientsmanageui' => { 522 => [\'Ingredients','IngredientsManageUI'] },
- 'ingredientsmaskmarkers' => { 522 => [\'Ingredients','IngredientsMaskMarkers'] },
- 'ingredientsoriginaldocumentid' => { 522 => [\'Ingredients','IngredientsOriginalDocumentID'] },
- 'ingredientspartmapping' => { 522 => [\'Ingredients','IngredientsPartMapping'] },
- 'ingredientsplacedresolutionunit' => { 522 => [\'Ingredients','IngredientsPlacedResolutionUnit'] },
- 'ingredientsplacedxresolution' => { 522 => [\'Ingredients','IngredientsPlacedXResolution'] },
- 'ingredientsplacedyresolution' => { 522 => [\'Ingredients','IngredientsPlacedYResolution'] },
- 'ingredientsrenditionclass' => { 522 => [\'Ingredients','IngredientsRenditionClass'] },
- 'ingredientsrenditionparams' => { 522 => [\'Ingredients','IngredientsRenditionParams'] },
- 'ingredientstopart' => { 522 => [\'Ingredients','IngredientsToPart'] },
- 'ingredientsversionid' => { 522 => [\'Ingredients','IngredientsVersionID'] },
+ 'ingredientexclusion' => { 515 => 'ingredientExclusion' },
+ 'ingredients' => { 524 => 'Ingredients' },
+ 'ingredientsalternatepaths' => { 524 => [\'Ingredients','IngredientsAlternatePaths'] },
+ 'ingredientsdocumentid' => { 524 => [\'Ingredients','IngredientsDocumentID'] },
+ 'ingredientsfilepath' => { 524 => [\'Ingredients','IngredientsFilePath'] },
+ 'ingredientsfrompart' => { 524 => [\'Ingredients','IngredientsFromPart'] },
+ 'ingredientsinstanceid' => { 524 => [\'Ingredients','IngredientsInstanceID'] },
+ 'ingredientslastmodifydate' => { 524 => [\'Ingredients','IngredientsLastModifyDate'] },
+ 'ingredientslasturl' => { 524 => [\'Ingredients','IngredientsLastURL'] },
+ 'ingredientslinkcategory' => { 524 => [\'Ingredients','IngredientsLinkCategory'] },
+ 'ingredientslinkform' => { 524 => [\'Ingredients','IngredientsLinkForm'] },
+ 'ingredientsmanager' => { 524 => [\'Ingredients','IngredientsManager'] },
+ 'ingredientsmanagervariant' => { 524 => [\'Ingredients','IngredientsManagerVariant'] },
+ 'ingredientsmanageto' => { 524 => [\'Ingredients','IngredientsManageTo'] },
+ 'ingredientsmanageui' => { 524 => [\'Ingredients','IngredientsManageUI'] },
+ 'ingredientsmaskmarkers' => { 524 => [\'Ingredients','IngredientsMaskMarkers'] },
+ 'ingredientsoriginaldocumentid' => { 524 => [\'Ingredients','IngredientsOriginalDocumentID'] },
+ 'ingredientspartmapping' => { 524 => [\'Ingredients','IngredientsPartMapping'] },
+ 'ingredientsplacedresolutionunit' => { 524 => [\'Ingredients','IngredientsPlacedResolutionUnit'] },
+ 'ingredientsplacedxresolution' => { 524 => [\'Ingredients','IngredientsPlacedXResolution'] },
+ 'ingredientsplacedyresolution' => { 524 => [\'Ingredients','IngredientsPlacedYResolution'] },
+ 'ingredientsrenditionclass' => { 524 => [\'Ingredients','IngredientsRenditionClass'] },
+ 'ingredientsrenditionparams' => { 524 => [\'Ingredients','IngredientsRenditionParams'] },
+ 'ingredientstopart' => { 524 => [\'Ingredients','IngredientsToPart'] },
+ 'ingredientsversionid' => { 524 => [\'Ingredients','IngredientsVersionID'] },
'initialafpointaiservoaf' => { 84 => 0x51e },
'initialafpointinservo' => { 2 => 0x13 },
'initialcameradolly' => { 482 => 'InitialCameraDolly' },
@@ -3618,13 +3628,13 @@ my %tagLookup = (
'initialzoomsetting' => { 294 => '9.3', 303 => '27.3' },
'inkset' => { 119 => 0x14c },
'inputprofile' => { 138 => 0x1389 },
- 'instanceid' => { 522 => 'InstanceID' },
+ 'instanceid' => { 524 => 'InstanceID' },
'instantplaybacksetup' => { 184 => 0x3e },
'instantplaybacktime' => { 184 => 0x3d },
- 'instructions' => { 509 => 'Instructions' },
- 'instrument' => { 521 => 'instrument' },
+ 'instructions' => { 511 => 'Instructions' },
+ 'instrument' => { 523 => 'instrument' },
'integrationtime' => { 138 => 0x423 },
- 'intellectualgenre' => { 506 => 'IntellectualGenre' },
+ 'intellectualgenre' => { 507 => 'IntellectualGenre' },
'intelligentauto' => { 435 => 0xb052, 462 => 0xd, 463 => 0xe, 464 => 0xd },
'intelligentcontrast' => { 52 => 0x4 },
'intelligentd-range' => { 335 => 0x79 },
@@ -3657,9 +3667,9 @@ my %tagLookup = (
'intervalpriority' => { 222 => 0x186, 237 => 0xba },
'intervals' => { 222 => 0x17c, 237 => 0xb0, 238 => 0xbc, 239 => 0xcc },
'intervalshooting' => { 223 => 0x24, 255 => 0x24, 256 => 0x28, 370 => 0x92 },
- 'introtime' => { 521 => 'introTime' },
- 'introtimescale' => { 521 => [\'introTime','introTimeScale'] },
- 'introtimevalue' => { 521 => [\'introTime','introTimeValue'] },
+ 'introtime' => { 523 => 'introTime' },
+ 'introtimescale' => { 523 => [\'introTime','introTimeScale'] },
+ 'introtimevalue' => { 523 => [\'introTime','introTimeValue'] },
'ipaversion' => { 138 => 0xdae },
'ipfcameramodel' => { 138 => 0xe4d },
'iptc' => { 120 => 'IPTC' },
@@ -3669,13 +3679,13 @@ my %tagLookup = (
'iptcimageheight' => { 133 => 0x1e },
'iptcimagerotation' => { 133 => 0x66 },
'iptcimagewidth' => { 133 => 0x14 },
- 'iptclastedited' => { 507 => 'IptcLastEdited' },
+ 'iptclastedited' => { 508 => 'IptcLastEdited' },
'iptcpicturenumber' => { 133 => 0xa },
'iptcpixelheight' => { 133 => 0x32 },
'iptcpixelwidth' => { 133 => 0x28 },
- 'isalternativeof' => { 511 => 'isAlternativeOf' },
- 'isbn' => { 511 => 'isbn' },
- 'iscorrectionof' => { 511 => 'isCorrectionOf' },
+ 'isalternativeof' => { 513 => 'isAlternativeOf' },
+ 'isbn' => { 513 => 'isbn' },
+ 'iscorrectionof' => { 513 => 'isCorrectionOf' },
'iscustompicturestyle' => { 109 => 0x3 },
'ismergedhdr' => { 491 => 'IsMergedHDR' },
'ismergedpanorama' => { 491 => 'IsMergedPanorama' },
@@ -3706,20 +3716,20 @@ my %tagLookup = (
'isostepsize' => { 294 => '6.1', 295 => '7.2', 297 => '7.2', 298 => '7.2', 303 => '4.1', 307 => '7.2', 308 => '7.2', 310 => 0x15d },
'isovalue' => { 317 => 0x1001 },
'isrccode' => { 395 => "\xa9isr" },
- 'issn' => { 511 => 'issn' },
- 'issueidentifier' => { 511 => 'issueIdentifier' },
- 'issuename' => { 511 => 'issueName' },
- 'issueteaser' => { 511 => 'issueTeaser' },
- 'issuetype' => { 511 => 'issueType' },
- 'istranslationof' => { 511 => 'isTranslationOf' },
+ 'issn' => { 513 => 'issn' },
+ 'issueidentifier' => { 513 => 'issueIdentifier' },
+ 'issuename' => { 513 => 'issueName' },
+ 'issueteaser' => { 513 => 'issueTeaser' },
+ 'issuetype' => { 513 => 'issueType' },
+ 'istranslationof' => { 513 => 'isTranslationOf' },
'itemsubtype' => { 178 => 'ItemSubType' },
'itunesu' => { 387 => 'itnu' },
'jobid' => { 131 => 0xb8 },
'jobname' => { 502 => 'JobName' },
- 'jobref' => { 520 => 'JobRef' },
- 'jobrefid' => { 520 => [\'JobRef','JobRefId'] },
- 'jobrefname' => { 520 => [\'JobRef','JobRefName'] },
- 'jobrefurl' => { 520 => [\'JobRef','JobRefUrl'] },
+ 'jobref' => { 522 => 'JobRef' },
+ 'jobrefid' => { 522 => [\'JobRef','JobRefId'] },
+ 'jobrefname' => { 522 => [\'JobRef','JobRefName'] },
+ 'jobrefurl' => { 522 => [\'JobRef','JobRefUrl'] },
'jobstatus' => { 502 => 'JobStatus' },
'jpeg-heifswitch' => { 435 => 0x2039 },
'jpeghandling' => { 494 => 'JPEGHandling', 496 => 'JPEGHandling' },
@@ -3750,16 +3760,16 @@ my %tagLookup = (
'kelvinwb_16' => { 359 => 0x41 },
'kelvinwb_daylight' => { 359 => 0x1 },
'kerneldenominators' => { 138 => 0x933 },
- 'key' => { 521 => 'key' },
+ 'key' => { 523 => 'key' },
'keystonecompensation' => { 316 => 0x1900 },
'keystonedirection' => { 316 => 0x1901 },
'keystonevalue' => { 316 => 0x1906 },
- 'keyword' => { 387 => 'keyw', 511 => 'keyword' },
+ 'keyword' => { 387 => 'keyw', 513 => 'keyword' },
'keywordinfo' => { 171 => 'Keywords' },
- 'keywords' => { 131 => 0x19, 157 => 'Keywords', 321 => 'Keywords', 386 => 'Keywords', 389 => 'keywords', 489 => 'keywords', 508 => 'Keywords', 519 => 'Keywords' },
- 'killdate' => { 511 => 'killDate' },
- 'killdatea-platform' => { 511 => [\'killDate','killDateA-platform'] },
- 'killdatedate' => { 511 => [\'killDate','killDateDate'] },
+ 'keywords' => { 131 => 0x19, 157 => 'Keywords', 321 => 'Keywords', 386 => 'Keywords', 389 => 'keywords', 489 => 'keywords', 510 => 'Keywords', 521 => 'Keywords' },
+ 'killdate' => { 513 => 'killDate' },
+ 'killdatea-platform' => { 513 => [\'killDate','killDateA-platform'] },
+ 'killdatedate' => { 513 => [\'killDate','killDateDate'] },
'kodakimageheight' => { 137 => 0xf908, 140 => 0xe, 142 => [0xfa1e,0xfa52], 148 => 0x70 },
'kodakimagewidth' => { 137 => 0xf907, 140 => 0xc, 142 => [0xfa1d,0xfa51], 148 => 0x6c },
'kodakinfotype' => { 137 => 0xfa00 },
@@ -3769,13 +3779,13 @@ my %tagLookup = (
'kodakmodel' => { 140 => 0x0, 148 => 0x28 },
'kodaktag' => { 138 => 0x3ea },
'kodakversion' => { 138 => 0x0 },
- 'label' => { 325 => 'Label', 519 => 'Label' },
- 'labelname1' => { 505 => [\'TagStructure','TagStructureLabelName'] },
- 'labelname2' => { 505 => [\'TagStructure','TagStructureSubLabelsLabelName'] },
- 'labelname3' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsLabelName'] },
- 'labelname4' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsLabelName'] },
- 'labelname5' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
- 'labelname6' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
+ 'label' => { 325 => 'Label', 521 => 'Label' },
+ 'labelname1' => { 506 => [\'TagStructure','TagStructureLabelName'] },
+ 'labelname2' => { 506 => [\'TagStructure','TagStructureSubLabelsLabelName'] },
+ 'labelname3' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsLabelName'] },
+ 'labelname4' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsLabelName'] },
+ 'labelname5' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
+ 'labelname6' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
'landmark' => { 335 => 0x6f },
'landscapeoutputhighlightpoint' => { 109 => 0x26 },
'landscapeoutputshadowpoint' => { 109 => 0x27 },
@@ -3801,7 +3811,7 @@ my %tagLookup = (
'lastkeywordiptc' => { 178 => 'LastKeywordIPTC' },
'lastkeywordxmp' => { 178 => 'LastKeywordXMP' },
'lastphotodate' => { 482 => 'LastPhotoDate' },
- 'lasturl' => { 522 => 'LastURL' },
+ 'lasturl' => { 524 => 'LastURL' },
'lateralchromaticaberration' => { 435 => 0x2012 },
'lateralchromaticaberrationcorrectionalreadyapplied' => { 491 => 'LateralChromaticAberrationCorrectionAlreadyApplied' },
'latestageorhigheststage' => { 118 => [\'GeologicalContext','GeologicalContextLatestAgeOrHighestStage'] },
@@ -3831,7 +3841,7 @@ my %tagLookup = (
'lcdmatrixmarvin' => { 138 => 0xe76 },
'lcdpanels' => { 83 => 0x8 },
'lcheditor' => { 287 => 0x8ae85e },
- 'legacyiptcdigest' => { 509 => 'LegacyIPTCDigest' },
+ 'legacyiptcdigest' => { 511 => 'LegacyIPTCDigest' },
'legalcode' => { 492 => 'legalcode' },
'lens' => { 119 => 0xfdea, 233 => 0x84, 491 => 'Lens' },
'lensafstopbutton' => { 82 => 0x11, 83 => 0x13, 84 => 0x506, 85 => 0x10, 86 => 0x12, 89 => 0x13, 90 => 0x9 },
@@ -3961,12 +3971,12 @@ my %tagLookup = (
'linearityuppermargin' => { 41 => 0x32c, 42 => 0x282, 45 => [0x2ba,0x2d1,0x2d5], 47 => 0x1e5, 48 => [0x1fe,0x2de], 49 => [0x232,0x310], 50 => 0x31e },
'linearizationtable' => { 119 => 0xc618 },
'linearresponselimit' => { 119 => 0xc62e },
- 'link' => { 511 => 'link' },
+ 'link' => { 513 => 'link' },
'linkaetoafpoint' => { 351 => '14.2' },
- 'linkedencodedrightsexpr' => { 507 => [\'LinkedEncRightsExpr','LinkedEncRightsExprLinkedRightsExpr'] },
- 'linkedencodedrightsexprlangid' => { 507 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprLangId'] },
- 'linkedencodedrightsexprtype' => { 507 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprEncType'] },
- 'linkedencrightsexpr' => { 507 => 'LinkedEncRightsExpr' },
+ 'linkedencodedrightsexpr' => { 508 => [\'LinkedEncRightsExpr','LinkedEncRightsExprLinkedRightsExpr'] },
+ 'linkedencodedrightsexprlangid' => { 508 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprLangId'] },
+ 'linkedencodedrightsexprtype' => { 508 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprEncType'] },
+ 'linkedencrightsexpr' => { 508 => 'LinkedEncRightsExpr' },
'linlogcoring' => { 138 => 0x904 },
'lithostratigraphicterms' => { 118 => [\'GeologicalContext','GeologicalContextLithostratigraphicTerms'] },
'livephotoauto' => { 389 => 'live-photo.auto' },
@@ -3989,44 +3999,44 @@ my %tagLookup = (
'localcaption' => { 131 => 0x79 },
'localizedcameramodel' => { 119 => 0xc615 },
'locallocationname' => { 409 => 0x30 },
- 'location' => { 232 => 0x9, 335 => 0x67, 487 => 'Location', 506 => 'Location', 510 => 'location', 511 => 'location' },
+ 'location' => { 232 => 0x9, 335 => 0x67, 487 => 'Location', 507 => 'Location', 512 => 'location', 513 => 'location' },
'locationaccuracyhorizontal' => { 389 => 'location.accuracy.horizontal' },
'locationareacode' => { 493 => 'lac' },
'locationbody' => { 389 => 'location.body' },
- 'locationcreated' => { 507 => 'LocationCreated' },
- 'locationcreatedcity' => { 507 => [\'LocationCreated','LocationCreatedCity'] },
- 'locationcreatedcountrycode' => { 507 => [\'LocationCreated','LocationCreatedCountryCode'] },
- 'locationcreatedcountryname' => { 507 => [\'LocationCreated','LocationCreatedCountryName'] },
- 'locationcreatedgpsaltitude' => { 507 => [\'LocationCreated','LocationCreatedGPSAltitude'] },
- 'locationcreatedgpslatitude' => { 507 => [\'LocationCreated','LocationCreatedGPSLatitude'] },
- 'locationcreatedgpslongitude' => { 507 => [\'LocationCreated','LocationCreatedGPSLongitude'] },
- 'locationcreatedidentifier' => { 507 => [\'LocationCreated','LocationCreatedIdentifier'] },
- 'locationcreatedlocationid' => { 507 => [\'LocationCreated','LocationCreatedLocationId'] },
- 'locationcreatedlocationname' => { 507 => [\'LocationCreated','LocationCreatedLocationName'] },
- 'locationcreatedprovincestate' => { 507 => [\'LocationCreated','LocationCreatedProvinceState'] },
- 'locationcreatedsublocation' => { 507 => [\'LocationCreated','LocationCreatedSublocation'] },
- 'locationcreatedworldregion' => { 507 => [\'LocationCreated','LocationCreatedWorldRegion'] },
+ 'locationcreated' => { 508 => 'LocationCreated' },
+ 'locationcreatedcity' => { 508 => [\'LocationCreated','LocationCreatedCity'] },
+ 'locationcreatedcountrycode' => { 508 => [\'LocationCreated','LocationCreatedCountryCode'] },
+ 'locationcreatedcountryname' => { 508 => [\'LocationCreated','LocationCreatedCountryName'] },
+ 'locationcreatedgpsaltitude' => { 508 => [\'LocationCreated','LocationCreatedGPSAltitude'] },
+ 'locationcreatedgpslatitude' => { 508 => [\'LocationCreated','LocationCreatedGPSLatitude'] },
+ 'locationcreatedgpslongitude' => { 508 => [\'LocationCreated','LocationCreatedGPSLongitude'] },
+ 'locationcreatedidentifier' => { 508 => [\'LocationCreated','LocationCreatedIdentifier'] },
+ 'locationcreatedlocationid' => { 508 => [\'LocationCreated','LocationCreatedLocationId'] },
+ 'locationcreatedlocationname' => { 508 => [\'LocationCreated','LocationCreatedLocationName'] },
+ 'locationcreatedprovincestate' => { 508 => [\'LocationCreated','LocationCreatedProvinceState'] },
+ 'locationcreatedsublocation' => { 508 => [\'LocationCreated','LocationCreatedSublocation'] },
+ 'locationcreatedworldregion' => { 508 => [\'LocationCreated','LocationCreatedWorldRegion'] },
'locationdate' => { 389 => 'location.date' },
'locationinformation' => { 395 => 'loci' },
'locationinfoversion' => { 232 => 0x0 },
'locationname' => { 389 => 'location.name', 409 => 0x31 },
'locationnote' => { 389 => 'location.note' },
'locationrole' => { 389 => 'location.role' },
- 'locationshown' => { 507 => 'LocationShown' },
- 'locationshowncity' => { 507 => [\'LocationShown','LocationShownCity'] },
- 'locationshowncountrycode' => { 507 => [\'LocationShown','LocationShownCountryCode'] },
- 'locationshowncountryname' => { 507 => [\'LocationShown','LocationShownCountryName'] },
- 'locationshowngpsaltitude' => { 507 => [\'LocationShown','LocationShownGPSAltitude'] },
- 'locationshowngpslatitude' => { 507 => [\'LocationShown','LocationShownGPSLatitude'] },
- 'locationshowngpslongitude' => { 507 => [\'LocationShown','LocationShownGPSLongitude'] },
- 'locationshownidentifier' => { 507 => [\'LocationShown','LocationShownIdentifier'] },
- 'locationshownlocationid' => { 507 => [\'LocationShown','LocationShownLocationId'] },
- 'locationshownlocationname' => { 507 => [\'LocationShown','LocationShownLocationName'] },
- 'locationshownprovincestate' => { 507 => [\'LocationShown','LocationShownProvinceState'] },
- 'locationshownsublocation' => { 507 => [\'LocationShown','LocationShownSublocation'] },
- 'locationshownworldregion' => { 507 => [\'LocationShown','LocationShownWorldRegion'] },
+ 'locationshown' => { 508 => 'LocationShown' },
+ 'locationshowncity' => { 508 => [\'LocationShown','LocationShownCity'] },
+ 'locationshowncountrycode' => { 508 => [\'LocationShown','LocationShownCountryCode'] },
+ 'locationshowncountryname' => { 508 => [\'LocationShown','LocationShownCountryName'] },
+ 'locationshowngpsaltitude' => { 508 => [\'LocationShown','LocationShownGPSAltitude'] },
+ 'locationshowngpslatitude' => { 508 => [\'LocationShown','LocationShownGPSLatitude'] },
+ 'locationshowngpslongitude' => { 508 => [\'LocationShown','LocationShownGPSLongitude'] },
+ 'locationshownidentifier' => { 508 => [\'LocationShown','LocationShownIdentifier'] },
+ 'locationshownlocationid' => { 508 => [\'LocationShown','LocationShownLocationId'] },
+ 'locationshownlocationname' => { 508 => [\'LocationShown','LocationShownLocationName'] },
+ 'locationshownprovincestate' => { 508 => [\'LocationShown','LocationShownProvinceState'] },
+ 'locationshownsublocation' => { 508 => [\'LocationShown','LocationShownSublocation'] },
+ 'locationshownworldregion' => { 508 => [\'LocationShown','LocationShownWorldRegion'] },
'lockmicrophonebutton' => { 84 => 0x709 },
- 'logcomment' => { 521 => 'logComment' },
+ 'logcomment' => { 523 => 'logComment' },
'logscale' => { 138 => 0x902 },
'longdescription' => { 387 => 'ldes' },
'longexposurenoisereduction' => { 62 => 0x4, 84 => 0x201, 85 => 0x1, 86 => 0x2, 87 => 0x1, 88 => 0x1, 89 => 0x2, 90 => 0x1, 335 => 0x49, 422 => 0x2b, 423 => 0x25, 424 => 0x25, 435 => 0x2008, 440 => 0x11, 466 => 0x44 },
@@ -4054,7 +4064,7 @@ my %tagLookup = (
'looksupportsmonochrome' => { 494 => [\'Look','LookSupportsMonochrome'], 496 => [\'Look','LookSupportsMonochrome'] },
'looksupportsoutputreferred' => { 494 => [\'Look','LookSupportsOutputReferred'], 496 => [\'Look','LookSupportsOutputReferred'] },
'lookuuid' => { 494 => [\'Look','LookUUID'], 496 => [\'Look','LookUUID'] },
- 'loop' => { 521 => 'loop' },
+ 'loop' => { 523 => 'loop' },
'loopstyle' => { 395 => 'LOOP' },
'lowestbiostratigraphiczone' => { 118 => [\'GeologicalContext','GeologicalContextLowestBiostratigraphicZone'] },
'luminanceadjustmentaqua' => { 494 => 'LuminanceAdjustmentAqua', 496 => 'LuminanceAdjustmentAqua' },
@@ -4074,7 +4084,7 @@ my %tagLookup = (
'luminancenr_tiff_jpeg' => { 109 => 0x6d },
'luminancesmoothing' => { 494 => 'LuminanceSmoothing', 496 => 'LuminanceSmoothing' },
'lvshootingareadisplay' => { 84 => [0x40b,0x40c] },
- 'lyrics' => { 387 => "\xa9lyr", 395 => "\xa9lyr", 521 => 'lyrics' },
+ 'lyrics' => { 387 => "\xa9lyr", 395 => "\xa9lyr", 523 => 'lyrics' },
'lyricsuri' => { 395 => 'lrcu' },
'm16cversion' => { 330 => 0x333 },
'macatom' => { 495 => 'macAtom' },
@@ -4111,9 +4121,9 @@ my %tagLookup = (
'magnifiedview' => { 86 => 0x11, 88 => 0x9 },
'mainboardversion' => { 138 => 0x438 },
'maindialexposurecomp' => { 305 => '0.6' },
- 'mainingredient' => { 513 => 'mainIngredient' },
+ 'mainingredient' => { 515 => 'mainIngredient' },
'majorversion' => { 485 => 'MajorVersion' },
- 'make' => { 98 => 0x0, 115 => 0x1, 119 => 0x10f, 156 => 'Make', 325 => 'Make', 340 => 0x10f, 389 => 'make', 395 => ['@mak',"\xa9mak"], 510 => 'make', 517 => 'Make' },
+ 'make' => { 98 => 0x0, 115 => 0x1, 119 => 0x10f, 156 => 'Make', 325 => 'Make', 340 => 0x10f, 389 => 'make', 395 => ['@mak',"\xa9mak"], 512 => 'make', 519 => 'Make' },
'makernote' => { 500 => 'MakerNote' },
'makernoteapple' => { 117 => 'MakN', 119 => 0x927c },
'makernotecanon' => { 117 => 'MakN', 119 => 0x927c },
@@ -4212,63 +4222,63 @@ my %tagLookup = (
'makernoteunknowntext' => { 117 => 'MakN', 119 => 0x927c },
'makernoteversion' => { 1 => 0x1, 186 => 0x0, 233 => 0x1, 317 => 0x0, 335 => 0x8000, 406 => 0x0, 409 => 0x1, 412 => [0x1d,0x1f], 425 => 0x2000 },
'makerurl' => { 395 => "\xa9mal" },
- 'managedfrom' => { 522 => 'ManagedFrom' },
- 'managedfromalternatepaths' => { 522 => [\'ManagedFrom','ManagedFromAlternatePaths'] },
- 'managedfromdocumentid' => { 522 => [\'ManagedFrom','ManagedFromDocumentID'] },
- 'managedfromfilepath' => { 522 => [\'ManagedFrom','ManagedFromFilePath'] },
- 'managedfromfrompart' => { 522 => [\'ManagedFrom','ManagedFromFromPart'] },
- 'managedfrominstanceid' => { 522 => [\'ManagedFrom','ManagedFromInstanceID'] },
- 'managedfromlastmodifydate' => { 522 => [\'ManagedFrom','ManagedFromLastModifyDate'] },
- 'managedfromlasturl' => { 522 => [\'ManagedFrom','ManagedFromLastURL'] },
- 'managedfromlinkcategory' => { 522 => [\'ManagedFrom','ManagedFromLinkCategory'] },
- 'managedfromlinkform' => { 522 => [\'ManagedFrom','ManagedFromLinkForm'] },
- 'managedfrommanager' => { 522 => [\'ManagedFrom','ManagedFromManager'] },
- 'managedfrommanagervariant' => { 522 => [\'ManagedFrom','ManagedFromManagerVariant'] },
- 'managedfrommanageto' => { 522 => [\'ManagedFrom','ManagedFromManageTo'] },
- 'managedfrommanageui' => { 522 => [\'ManagedFrom','ManagedFromManageUI'] },
- 'managedfrommaskmarkers' => { 522 => [\'ManagedFrom','ManagedFromMaskMarkers'] },
- 'managedfromoriginaldocumentid' => { 522 => [\'ManagedFrom','ManagedFromOriginalDocumentID'] },
- 'managedfrompartmapping' => { 522 => [\'ManagedFrom','ManagedFromPartMapping'] },
- 'managedfromplacedresolutionunit' => { 522 => [\'ManagedFrom','ManagedFromPlacedResolutionUnit'] },
- 'managedfromplacedxresolution' => { 522 => [\'ManagedFrom','ManagedFromPlacedXResolution'] },
- 'managedfromplacedyresolution' => { 522 => [\'ManagedFrom','ManagedFromPlacedYResolution'] },
- 'managedfromrenditionclass' => { 522 => [\'ManagedFrom','ManagedFromRenditionClass'] },
- 'managedfromrenditionparams' => { 522 => [\'ManagedFrom','ManagedFromRenditionParams'] },
- 'managedfromtopart' => { 522 => [\'ManagedFrom','ManagedFromToPart'] },
- 'managedfromversionid' => { 522 => [\'ManagedFrom','ManagedFromVersionID'] },
- 'manager' => { 522 => 'Manager' },
- 'managervariant' => { 522 => 'ManagerVariant' },
- 'manageto' => { 522 => 'ManageTo' },
- 'manageui' => { 522 => 'ManageUI' },
- 'manifest' => { 522 => 'Manifest' },
- 'manifestlinkform' => { 522 => [\'Manifest','ManifestLinkForm'] },
- 'manifestplacedresolutionunit' => { 522 => [\'Manifest','ManifestPlacedResolutionUnit'] },
- 'manifestplacedxresolution' => { 522 => [\'Manifest','ManifestPlacedXResolution'] },
- 'manifestplacedyresolution' => { 522 => [\'Manifest','ManifestPlacedYResolution'] },
- 'manifestreference' => { 522 => [\'Manifest','ManifestReference'] },
- 'manifestreferencealternatepaths' => { 522 => [\'Manifest','ManifestReferenceAlternatePaths'] },
- 'manifestreferencedocumentid' => { 522 => [\'Manifest','ManifestReferenceDocumentID'] },
- 'manifestreferencefilepath' => { 522 => [\'Manifest','ManifestReferenceFilePath'] },
- 'manifestreferencefrompart' => { 522 => [\'Manifest','ManifestReferenceFromPart'] },
- 'manifestreferenceinstanceid' => { 522 => [\'Manifest','ManifestReferenceInstanceID'] },
- 'manifestreferencelastmodifydate' => { 522 => [\'Manifest','ManifestReferenceLastModifyDate'] },
- 'manifestreferencelasturl' => { 522 => [\'Manifest','ManifestReferenceLastURL'] },
- 'manifestreferencelinkcategory' => { 522 => [\'Manifest','ManifestReferenceLinkCategory'] },
- 'manifestreferencelinkform' => { 522 => [\'Manifest','ManifestReferenceLinkForm'] },
- 'manifestreferencemanager' => { 522 => [\'Manifest','ManifestReferenceManager'] },
- 'manifestreferencemanagervariant' => { 522 => [\'Manifest','ManifestReferenceManagerVariant'] },
- 'manifestreferencemanageto' => { 522 => [\'Manifest','ManifestReferenceManageTo'] },
- 'manifestreferencemanageui' => { 522 => [\'Manifest','ManifestReferenceManageUI'] },
- 'manifestreferencemaskmarkers' => { 522 => [\'Manifest','ManifestReferenceMaskMarkers'] },
- 'manifestreferenceoriginaldocumentid' => { 522 => [\'Manifest','ManifestReferenceOriginalDocumentID'] },
- 'manifestreferencepartmapping' => { 522 => [\'Manifest','ManifestReferencePartMapping'] },
- 'manifestreferenceplacedresolutionunit' => { 522 => [\'Manifest','ManifestReferencePlacedResolutionUnit'] },
- 'manifestreferenceplacedxresolution' => { 522 => [\'Manifest','ManifestReferencePlacedXResolution'] },
- 'manifestreferenceplacedyresolution' => { 522 => [\'Manifest','ManifestReferencePlacedYResolution'] },
- 'manifestreferencerenditionclass' => { 522 => [\'Manifest','ManifestReferenceRenditionClass'] },
- 'manifestreferencerenditionparams' => { 522 => [\'Manifest','ManifestReferenceRenditionParams'] },
- 'manifestreferencetopart' => { 522 => [\'Manifest','ManifestReferenceToPart'] },
- 'manifestreferenceversionid' => { 522 => [\'Manifest','ManifestReferenceVersionID'] },
+ 'managedfrom' => { 524 => 'ManagedFrom' },
+ 'managedfromalternatepaths' => { 524 => [\'ManagedFrom','ManagedFromAlternatePaths'] },
+ 'managedfromdocumentid' => { 524 => [\'ManagedFrom','ManagedFromDocumentID'] },
+ 'managedfromfilepath' => { 524 => [\'ManagedFrom','ManagedFromFilePath'] },
+ 'managedfromfrompart' => { 524 => [\'ManagedFrom','ManagedFromFromPart'] },
+ 'managedfrominstanceid' => { 524 => [\'ManagedFrom','ManagedFromInstanceID'] },
+ 'managedfromlastmodifydate' => { 524 => [\'ManagedFrom','ManagedFromLastModifyDate'] },
+ 'managedfromlasturl' => { 524 => [\'ManagedFrom','ManagedFromLastURL'] },
+ 'managedfromlinkcategory' => { 524 => [\'ManagedFrom','ManagedFromLinkCategory'] },
+ 'managedfromlinkform' => { 524 => [\'ManagedFrom','ManagedFromLinkForm'] },
+ 'managedfrommanager' => { 524 => [\'ManagedFrom','ManagedFromManager'] },
+ 'managedfrommanagervariant' => { 524 => [\'ManagedFrom','ManagedFromManagerVariant'] },
+ 'managedfrommanageto' => { 524 => [\'ManagedFrom','ManagedFromManageTo'] },
+ 'managedfrommanageui' => { 524 => [\'ManagedFrom','ManagedFromManageUI'] },
+ 'managedfrommaskmarkers' => { 524 => [\'ManagedFrom','ManagedFromMaskMarkers'] },
+ 'managedfromoriginaldocumentid' => { 524 => [\'ManagedFrom','ManagedFromOriginalDocumentID'] },
+ 'managedfrompartmapping' => { 524 => [\'ManagedFrom','ManagedFromPartMapping'] },
+ 'managedfromplacedresolutionunit' => { 524 => [\'ManagedFrom','ManagedFromPlacedResolutionUnit'] },
+ 'managedfromplacedxresolution' => { 524 => [\'ManagedFrom','ManagedFromPlacedXResolution'] },
+ 'managedfromplacedyresolution' => { 524 => [\'ManagedFrom','ManagedFromPlacedYResolution'] },
+ 'managedfromrenditionclass' => { 524 => [\'ManagedFrom','ManagedFromRenditionClass'] },
+ 'managedfromrenditionparams' => { 524 => [\'ManagedFrom','ManagedFromRenditionParams'] },
+ 'managedfromtopart' => { 524 => [\'ManagedFrom','ManagedFromToPart'] },
+ 'managedfromversionid' => { 524 => [\'ManagedFrom','ManagedFromVersionID'] },
+ 'manager' => { 524 => 'Manager' },
+ 'managervariant' => { 524 => 'ManagerVariant' },
+ 'manageto' => { 524 => 'ManageTo' },
+ 'manageui' => { 524 => 'ManageUI' },
+ 'manifest' => { 524 => 'Manifest' },
+ 'manifestlinkform' => { 524 => [\'Manifest','ManifestLinkForm'] },
+ 'manifestplacedresolutionunit' => { 524 => [\'Manifest','ManifestPlacedResolutionUnit'] },
+ 'manifestplacedxresolution' => { 524 => [\'Manifest','ManifestPlacedXResolution'] },
+ 'manifestplacedyresolution' => { 524 => [\'Manifest','ManifestPlacedYResolution'] },
+ 'manifestreference' => { 524 => [\'Manifest','ManifestReference'] },
+ 'manifestreferencealternatepaths' => { 524 => [\'Manifest','ManifestReferenceAlternatePaths'] },
+ 'manifestreferencedocumentid' => { 524 => [\'Manifest','ManifestReferenceDocumentID'] },
+ 'manifestreferencefilepath' => { 524 => [\'Manifest','ManifestReferenceFilePath'] },
+ 'manifestreferencefrompart' => { 524 => [\'Manifest','ManifestReferenceFromPart'] },
+ 'manifestreferenceinstanceid' => { 524 => [\'Manifest','ManifestReferenceInstanceID'] },
+ 'manifestreferencelastmodifydate' => { 524 => [\'Manifest','ManifestReferenceLastModifyDate'] },
+ 'manifestreferencelasturl' => { 524 => [\'Manifest','ManifestReferenceLastURL'] },
+ 'manifestreferencelinkcategory' => { 524 => [\'Manifest','ManifestReferenceLinkCategory'] },
+ 'manifestreferencelinkform' => { 524 => [\'Manifest','ManifestReferenceLinkForm'] },
+ 'manifestreferencemanager' => { 524 => [\'Manifest','ManifestReferenceManager'] },
+ 'manifestreferencemanagervariant' => { 524 => [\'Manifest','ManifestReferenceManagerVariant'] },
+ 'manifestreferencemanageto' => { 524 => [\'Manifest','ManifestReferenceManageTo'] },
+ 'manifestreferencemanageui' => { 524 => [\'Manifest','ManifestReferenceManageUI'] },
+ 'manifestreferencemaskmarkers' => { 524 => [\'Manifest','ManifestReferenceMaskMarkers'] },
+ 'manifestreferenceoriginaldocumentid' => { 524 => [\'Manifest','ManifestReferenceOriginalDocumentID'] },
+ 'manifestreferencepartmapping' => { 524 => [\'Manifest','ManifestReferencePartMapping'] },
+ 'manifestreferenceplacedresolutionunit' => { 524 => [\'Manifest','ManifestReferencePlacedResolutionUnit'] },
+ 'manifestreferenceplacedxresolution' => { 524 => [\'Manifest','ManifestReferencePlacedXResolution'] },
+ 'manifestreferenceplacedyresolution' => { 524 => [\'Manifest','ManifestReferencePlacedYResolution'] },
+ 'manifestreferencerenditionclass' => { 524 => [\'Manifest','ManifestReferenceRenditionClass'] },
+ 'manifestreferencerenditionparams' => { 524 => [\'Manifest','ManifestReferenceRenditionParams'] },
+ 'manifestreferencetopart' => { 524 => [\'Manifest','ManifestReferenceToPart'] },
+ 'manifestreferenceversionid' => { 524 => [\'Manifest','ManifestReferenceVersionID'] },
'manometerpressure' => { 312 => 0x900, 335 => 0x86 },
'manometerreading' => { 312 => 0x901 },
'manualafpointselectpattern' => { 84 => 0x513 },
@@ -4283,27 +4293,27 @@ my %tagLookup = (
'manufacturedate' => { 191 => 0x6705, 350 => 0x1 },
'manufacturedate1' => { 404 => 0x4 },
'manufacturedate2' => { 404 => 0x5 },
- 'manufacturer' => { 479 => 'Manufacturer', 510 => 'manufacturer' },
+ 'manufacturer' => { 479 => 'Manufacturer', 512 => 'manufacturer' },
'mariahchromablursize' => { 138 => 0xf0d },
'mariahmaphithreshold' => { 138 => 0xf0c },
'mariahmaplothreshold' => { 138 => 0xf0b },
'mariahsigmathreshold' => { 138 => 0xf0e },
'mariahtexturethreshold' => { 138 => 0xf0a },
- 'marked' => { 508 => 'Marked', 525 => 'Marked' },
- 'markers' => { 521 => 'markers' },
- 'markerscomment' => { 521 => [\'markers','markersComment'] },
- 'markerscuepointparams' => { 521 => [\'markers','markersCuePointParams'] },
- 'markerscuepointparamskey' => { 521 => [\'markers','markersCuePointParamsKey'] },
- 'markerscuepointparamsvalue' => { 521 => [\'markers','markersCuePointParamsValue'] },
- 'markerscuepointtype' => { 521 => [\'markers','markersCuePointType'] },
- 'markersduration' => { 521 => [\'markers','markersDuration'] },
- 'markerslocation' => { 521 => [\'markers','markersLocation'] },
- 'markersname' => { 521 => [\'markers','markersName'] },
- 'markersprobability' => { 521 => [\'markers','markersProbability'] },
- 'markersspeaker' => { 521 => [\'markers','markersSpeaker'] },
- 'markersstarttime' => { 521 => [\'markers','markersStartTime'] },
- 'markerstarget' => { 521 => [\'markers','markersTarget'] },
- 'markerstype' => { 521 => [\'markers','markersType'] },
+ 'marked' => { 510 => 'Marked', 527 => 'Marked' },
+ 'markers' => { 523 => 'markers' },
+ 'markerscomment' => { 523 => [\'markers','markersComment'] },
+ 'markerscuepointparams' => { 523 => [\'markers','markersCuePointParams'] },
+ 'markerscuepointparamskey' => { 523 => [\'markers','markersCuePointParamsKey'] },
+ 'markerscuepointparamsvalue' => { 523 => [\'markers','markersCuePointParamsValue'] },
+ 'markerscuepointtype' => { 523 => [\'markers','markersCuePointType'] },
+ 'markersduration' => { 523 => [\'markers','markersDuration'] },
+ 'markerslocation' => { 523 => [\'markers','markersLocation'] },
+ 'markersname' => { 523 => [\'markers','markersName'] },
+ 'markersprobability' => { 523 => [\'markers','markersProbability'] },
+ 'markersspeaker' => { 523 => [\'markers','markersSpeaker'] },
+ 'markersstarttime' => { 523 => [\'markers','markersStartTime'] },
+ 'markerstarget' => { 523 => [\'markers','markersTarget'] },
+ 'markerstype' => { 523 => [\'markers','markersType'] },
'maskedareas' => { 119 => 0xc68e },
'maskgroupbasedcorractive' => { 494 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionActive'], 496 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionActive'] },
'maskgroupbasedcorramount' => { 494 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionAmount'], 496 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionAmount'] },
@@ -4462,19 +4472,19 @@ my %tagLookup = (
'maxapertureatmaxfocal' => { 127 => 0x1407, 163 => 'MaxApertureAtMaxFocal', 225 => 0xb, 226 => 0x10, 227 => 0x11, 231 => 0x12, 313 => 0x206 },
'maxapertureatminfocal' => { 127 => 0x1406, 225 => 0xa, 226 => 0xf, 227 => 0x10, 231 => 0x11, 313 => 0x205 },
'maxaperturevalue' => { 119 => 0x9205, 379 => 0x414, 500 => 'MaxApertureValue' },
- 'maxavailheight' => { 507 => 'MaxAvailHeight' },
- 'maxavailwidth' => { 507 => 'MaxAvailWidth' },
+ 'maxavailheight' => { 508 => 'MaxAvailHeight' },
+ 'maxavailwidth' => { 508 => 'MaxAvailWidth' },
'maxcontinuousrelease' => { 294 => 0xb, 295 => 0xc, 297 => '12.1', 298 => '12.1', 303 => 0xc, 304 => 0xb, 307 => '12.1', 308 => '12.1', 310 => 0x3d },
'maxfaces' => { 316 => 0x1202 },
'maxfocallength' => { 7 => 0xe6, 8 => 0x10, 9 => 0x1ab, 10 => 0x13, 11 => 0x115, 12 => 0x13, 13 => 0x153, 14 => 0xda, 16 => 0xfa, 17 => 0xee, 18 => 0x103, 19 => 0x95, 20 => 0xea, 21 => 0x157, 22 => 0xee, 23 => 0xec, 24 => 0x12b, 25 => 0x165, 26 => 0x16a, 27 => 0x188, 28 => 0x116, 29 => 0x18d, 34 => 0x17, 127 => 0x1405, 163 => 'MaxFocalLength', 225 => 0x9, 226 => 0xe, 227 => 0xf, 231 => 0x10, 313 => 0x208, 448 => 0x127c, 449 => 0x1138, 450 => 0x330, 451 => 0x330, 452 => 0x30e },
'maximumdensityrange' => { 133 => 0x8c },
- 'maxpagesize' => { 526 => 'MaxPageSize' },
- 'maxpagesizeh' => { 526 => [\'MaxPageSize','MaxPageSizeH'] },
- 'maxpagesizeunit' => { 526 => [\'MaxPageSize','MaxPageSizeUnit'] },
- 'maxpagesizew' => { 526 => [\'MaxPageSize','MaxPageSizeW'] },
+ 'maxpagesize' => { 528 => 'MaxPageSize' },
+ 'maxpagesizeh' => { 528 => [\'MaxPageSize','MaxPageSizeH'] },
+ 'maxpagesizeunit' => { 528 => [\'MaxPageSize','MaxPageSizeUnit'] },
+ 'maxpagesizew' => { 528 => [\'MaxPageSize','MaxPageSizeW'] },
'maxpixelvaluethreshold' => { 138 => 0xc7d },
'maxsamplevalue' => { 119 => 0x119 },
- 'maxstorage' => { 516 => 'maxstorage' },
+ 'maxstorage' => { 518 => 'maxstorage' },
'mb-d10batteries' => { 294 => '12.6' },
'mb-d10batterytype' => { 303 => '13.3' },
'mb-d11batterytype' => { 304 => '2.3' },
@@ -4487,7 +4497,7 @@ my %tagLookup = (
'mditemfscreationdate' => { 173 => 'MDItemFSCreationDate' },
'mditemfslabel' => { 173 => 'MDItemFSLabel' },
'mditemusertags' => { 173 => 'MDItemUserTags' },
- 'meal' => { 513 => 'meal' },
+ 'meal' => { 515 => 'meal' },
'measuredev' => { 28 => 0x9, 77 => 0x3, 97 => 0x1814, 156 => 'MeasuredEV' },
'measuredev2' => { 13 => 0x8, 28 => 0x8, 77 => 0x17 },
'measuredev3' => { 13 => 0x9 },
@@ -4521,15 +4531,16 @@ my %tagLookup = (
'menubuttondisplayposition' => { 82 => 0xb, 85 => 0xa, 86 => 0xb, 89 => 0xb },
'menubuttonreturn' => { 90 => 0xb },
'menumonitorofftime' => { 294 => '26.1', 295 => '22.1', 297 => '22.1', 298 => '22.1', 302 => '21.1', 303 => '8.2', 304 => '21.1', 307 => '22.1', 308 => '22.1', 309 => '22.1', 310 => 0x35 },
- 'metadataauthority' => { 507 => 'metadataAuthority' },
- 'metadataauthorityidentifier' => { 507 => [\'metadataAuthority','metadataAuthorityIdentifier'] },
- 'metadataauthorityname' => { 507 => [\'metadataAuthority','metadataAuthorityName'] },
- 'metadatadate' => { 519 => 'MetadataDate' },
- 'metadatalastedited' => { 507 => 'metadataLastEdited' },
- 'metadatalasteditor' => { 507 => 'metadataLastEditor' },
- 'metadatalasteditoridentifier' => { 507 => [\'metadataLastEditor','metadataLastEditorIdentifier'] },
- 'metadatalasteditorname' => { 507 => [\'metadataLastEditor','metadataLastEditorName'] },
- 'metadatamoddate' => { 521 => 'metadataModDate' },
+ 'metadataauthority' => { 508 => 'metadataAuthority' },
+ 'metadataauthorityidentifier' => { 508 => [\'metadataAuthority','metadataAuthorityIdentifier'] },
+ 'metadataauthorityname' => { 508 => [\'metadataAuthority','metadataAuthorityName'] },
+ 'metadatadate' => { 521 => 'MetadataDate' },
+ 'metadataeditingsoftware' => { 119 => 0xa43c },
+ 'metadatalastedited' => { 508 => 'metadataLastEdited' },
+ 'metadatalasteditor' => { 508 => 'metadataLastEditor' },
+ 'metadatalasteditoridentifier' => { 508 => [\'metadataLastEditor','metadataLastEditorIdentifier'] },
+ 'metadatalasteditorname' => { 508 => [\'metadataLastEditor','metadataLastEditorName'] },
+ 'metadatamoddate' => { 523 => 'metadataModDate' },
'metaversion' => { 443 => 0x34 },
'meterinfo1row1' => { 436 => 0x0, 437 => 0x0 },
'meterinfo1row2' => { 436 => 0x6c, 437 => 0x5a },
@@ -4583,10 +4594,10 @@ my %tagLookup = (
'mirrorlockup' => { 82 => 0xc, 83 => 0xc, 84 => 0x60f, 85 => 0xb, 86 => 0xc, 87 => 0x6, 88 => 0x6, 89 => 0xc, 90 => 0x3 },
'mobilecountrycode' => { 493 => 'mcc' },
'mobilenetworkcode' => { 493 => 'mnc' },
- 'moddate' => { 325 => 'modify-date', 508 => 'ModDate' },
+ 'moddate' => { 325 => 'modify-date', 510 => 'ModDate' },
'modedialposition' => { 428 => 0x14 },
- 'model' => { 98 => 0x6, 119 => 0x110, 156 => 'Model', 325 => 'Model', 340 => 0x110, 370 => 0x23f, 389 => 'model', 395 => ['@mod','CNMN','cmnm',"\xa9mdl","\xa9mod"], 412 => 0x84, 479 => 'Model', 510 => 'model', 517 => 'Model' },
- 'modelage' => { 507 => 'ModelAge' },
+ 'model' => { 98 => 0x6, 119 => 0x110, 156 => 'Model', 325 => 'Model', 340 => 0x110, 370 => 0x23f, 389 => 'model', 395 => ['@mod','CNMN','cmnm',"\xa9mdl","\xa9mod"], 412 => 0x84, 479 => 'Model', 512 => 'model', 519 => 'Model' },
+ 'modelage' => { 508 => 'ModelAge' },
'modelid' => { 311 => 0x0 },
'modelingflash' => { 294 => '21.4', 295 => '31.1', 297 => '31.1', 298 => '31.1', 303 => '26.4', 304 => '30.2', 305 => '7.4', 306 => '30.1', 307 => '31.1', 308 => '31.1', 309 => '31.3', 310 => 0x5d },
'modelreleaseid' => { 322 => 'ModelReleaseID' },
@@ -4594,8 +4605,8 @@ my %tagLookup = (
'modelreleaseyear' => { 457 => 0x52, 458 => 0x46, 459 => 0x53 },
'modeltiepoint' => { 119 => 0x8482 },
'modeltransform' => { 119 => 0x85d8 },
- 'modelyear' => { 510 => 'modelYear' },
- 'modificationdate' => { 511 => 'modificationDate' },
+ 'modelyear' => { 512 => 'modelYear' },
+ 'modificationdate' => { 513 => 'modificationDate' },
'modifiedcolortemp' => { 66 => 0x9 },
'modifieddigitalgain' => { 66 => 0xb },
'modifiedparamflag' => { 58 => 0x1 },
@@ -4609,7 +4620,7 @@ my %tagLookup = (
'modifiedwhitebalance' => { 66 => 0x8 },
'modifiedwhitebalanceblue' => { 66 => 0x7 },
'modifiedwhitebalancered' => { 66 => 0x6 },
- 'modifydate' => { 119 => 0x132, 157 => 'ModifyDate', 321 => 'ModDate', 323 => 'tIME', 386 => 'ModDate', 392 => 0x2, 519 => 'ModifyDate' },
+ 'modifydate' => { 119 => 0x132, 157 => 'ModifyDate', 321 => 'ModDate', 323 => 'tIME', 386 => 'ModDate', 392 => 0x2, 521 => 'ModifyDate' },
'moirefilter' => { 119 => 0xfe58, 494 => 'MoireFilter', 496 => 'MoireFilter' },
'monitorbrightness' => { 238 => 0x59a, 239 => 0x5ca },
'monitordisplayoff' => { 184 => 0x4c },
@@ -4722,8 +4733,8 @@ my %tagLookup = (
'mycolormode' => { 69 => 0x2 },
'name' => { 395 => 'name', 494 => 'Name', 496 => 'Name' },
'narrator' => { 387 => "\xa9nrt" },
- 'nationalcatalognumber' => { 511 => 'nationalCatalogNumber' },
- 'nativedigest' => { 500 => 'NativeDigest', 517 => 'NativeDigest' },
+ 'nationalcatalognumber' => { 513 => 'nationalCatalogNumber' },
+ 'nativedigest' => { 500 => 'NativeDigest', 519 => 'NativeDigest' },
'ndfilter' => { 77 => 0x1c, 312 => 0x204, 402 => 0x1019 },
'near' => { 479 => 'Near' },
'nefbitdepth' => { 233 => 0xe22 },
@@ -4751,7 +4762,7 @@ my %tagLookup = (
'newlensdata' => { 231 => 0x2f },
'newrawimagedigest' => { 119 => 0xc7a7 },
'newsphotoversion' => { 133 => 0x0 },
- 'nickname' => { 519 => 'Nickname' },
+ 'nickname' => { 521 => 'Nickname' },
'nikoncapturedata' => { 233 => 0xe01 },
'nikoncaptureeditversions' => { 233 => 0xe13 },
'nikoncaptureoffsets' => { 233 => 0xe0e },
@@ -4787,27 +4798,27 @@ my %tagLookup = (
'normallinetime' => { 138 => 0x186a },
'normalwhitelevel' => { 41 => 0x32a, 42 => 0x280, 45 => [0x2b8,0x2cf,0x2d3], 46 => 0x569, 47 => 0x1e3, 48 => [0x1fc,0x2dc], 49 => [0x230,0x30e], 50 => 0x31c },
'notes' => { 471 => 'Notes', 489 => 'notes' },
- 'npages' => { 526 => 'NPages' },
+ 'npages' => { 528 => 'NPages' },
'nullrecord' => { 97 => 0x0 },
'numafpoints' => { 347 => 0x2 },
- 'number' => { 511 => 'number' },
- 'numberofbeats' => { 521 => 'numberOfBeats' },
+ 'number' => { 513 => 'number' },
+ 'numberofbeats' => { 523 => 'numberOfBeats' },
'numberoffocuspoints' => { 297 => '1.3', 298 => '1.3', 301 => '0.2', 302 => '0.3', 304 => '0.3' },
'numfaceelements' => { 127 => 0x4200 },
'numfacepositions' => { 327 => 0x0 },
'numindexentries' => { 133 => 0x54 },
'numwbentries' => { 341 => 0x0, 342 => 0x0 },
- 'object' => { 511 => 'object' },
+ 'object' => { 513 => 'object' },
'objectattributereference' => { 131 => 0x4 },
'objectcycle' => { 131 => 0x4b, 489 => 'ObjectCycle' },
- 'objectdescription' => { 510 => 'objectDescription' },
+ 'objectdescription' => { 512 => 'objectDescription' },
'objectdistance' => { 112 => 0x6, 113 => 0x2022 },
'objectname' => { 131 => 0x5 },
'objectpreviewdata' => { 131 => 0xca },
'objectpreviewfileformat' => { 131 => 0xc8 },
'objectpreviewfileversion' => { 131 => 0xc9 },
- 'objectsubtype' => { 510 => 'objectSubtype' },
- 'objecttype' => { 510 => 'objectType' },
+ 'objectsubtype' => { 512 => 'objectSubtype' },
+ 'objecttype' => { 512 => 'objectType' },
'objecttypereference' => { 131 => 0x3 },
'occurrence' => { 118 => 'Occurrence' },
'occurrenceassociatedmedia' => { 118 => [\'Occurrence','OccurrenceAssociatedMedia'] },
@@ -4843,11 +4854,13 @@ my %tagLookup = (
'oecfnames' => { 500 => [\'OECF','OECFNames'] },
'oecfrows' => { 500 => [\'OECF','OECFRows'] },
'oecfvalues' => { 500 => [\'OECF','OECFValues'] },
- 'offsaledate' => { 511 => 'offSaleDate' },
- 'offsaledatea-platform' => { 511 => [\'offSaleDate','offSaleDateA-platform'] },
- 'offsaledatedate' => { 511 => [\'offSaleDate','offSaleDateDate'] },
+ 'offsaledate' => { 513 => 'offSaleDate' },
+ 'offsaledatea-platform' => { 513 => [\'offSaleDate','offSaleDateA-platform'] },
+ 'offsaledatedate' => { 513 => [\'offSaleDate','offSaleDateDate'] },
'offsetdacvalue' => { 138 => 0x190a },
+ 'offsethdr' => { 505 => 'OffsetHDR' },
'offsetschema' => { 119 => 0xea1d },
+ 'offsetsdr' => { 505 => 'OffsetSDR' },
'offsettime' => { 119 => 0x9010 },
'offsettimedigitized' => { 119 => 0x9012 },
'offsettimeoriginal' => { 119 => 0x9011 },
@@ -4864,12 +4877,12 @@ my %tagLookup = (
'omensurfaceindex' => { 138 => 0xa64 },
'oneshotafrelease' => { 2 => 0x9 },
'onetouchwb' => { 317 => 0x302 },
- 'onsaledate' => { 511 => 'onSaleDate' },
- 'onsaledatea-platform' => { 511 => [\'onSaleDate','onSaleDateA-platform'] },
- 'onsaledatedate' => { 511 => [\'onSaleDate','onSaleDateDate'] },
- 'onsaleday' => { 511 => 'onSaleDay' },
- 'onsaledaya-platform' => { 511 => [\'onSaleDay','onSaleDayA-platform'] },
- 'onsaledayday' => { 511 => [\'onSaleDay','onSaleDayDay'] },
+ 'onsaledate' => { 513 => 'onSaleDate' },
+ 'onsaledatea-platform' => { 513 => [\'onSaleDate','onSaleDateA-platform'] },
+ 'onsaledatedate' => { 513 => [\'onSaleDate','onSaleDateDate'] },
+ 'onsaleday' => { 513 => 'onSaleDay' },
+ 'onsaledaya-platform' => { 513 => [\'onSaleDay','onSaleDayA-platform'] },
+ 'onsaledayday' => { 513 => [\'onSaleDay','onSaleDayDay'] },
'opcodelist1' => { 119 => 0xc740 },
'opcodelist2' => { 119 => 0xc741 },
'opcodelist3' => { 119 => 0xc74e },
@@ -4877,12 +4890,12 @@ my %tagLookup = (
'opticalzoomcode' => { 77 => 0xa },
'opticalzoommode' => { 335 => 0x34 },
'opticalzoomon' => { 411 => 0x219 },
- 'optionenddate' => { 514 => 'optionEndDate' },
+ 'optionenddate' => { 516 => 'optionEndDate' },
'opto-electricconvfactor' => { 500 => 'OECF' },
'orangehsl' => { 103 => 0x20911 },
'ordernumber' => { 127 => 0x8002 },
- 'organisationinimagecode' => { 507 => 'OrganisationInImageCode' },
- 'organisationinimagename' => { 507 => 'OrganisationInImageName' },
+ 'organisationinimagecode' => { 508 => 'OrganisationInImageCode' },
+ 'organisationinimagename' => { 508 => 'OrganisationInImageName' },
'organism' => { 118 => 'Organism' },
'organismassociatedoccurrences' => { 118 => [\'Organism','OrganismAssociatedOccurrences'] },
'organismassociatedorganisms' => { 118 => [\'Organism','OrganismAssociatedOrganisms'] },
@@ -4891,8 +4904,8 @@ my %tagLookup = (
'organismpreviousidentifications' => { 118 => [\'Organism','OrganismPreviousIdentifications'] },
'organismremarks' => { 118 => [\'Organism','OrganismOrganismRemarks'] },
'organismscope' => { 118 => [\'Organism','OrganismOrganismScope'] },
- 'organization' => { 511 => 'organization' },
- 'orientation' => { 119 => 0x112, 340 => 0x112, 510 => 'orientation', 517 => 'Orientation' },
+ 'organization' => { 513 => 'organization' },
+ 'orientation' => { 119 => 0x112, 340 => 0x112, 512 => 'orientation', 519 => 'Orientation' },
'orientation2' => { 440 => [0x28,0x2e] },
'orientationlinkedaf' => { 2 => 0xe },
'orientationlinkedafpoint' => { 84 => 0x516 },
@@ -4905,8 +4918,10 @@ my %tagLookup = (
'originaldefaultcropsize' => { 119 => 0xc793 },
'originaldefaultfinalsize' => { 119 => 0xc791 },
'originaldirectory' => { 332 => 0x408 },
- 'originaldocumentid' => { 522 => 'OriginalDocumentID' },
+ 'originaldocumentid' => { 524 => 'OriginalDocumentID' },
'originalfilename' => { 97 => 0x816, 138 => 0x3e9, 150 => 0x20, 332 => 0x407, 484 => 'OriginalFilename' },
+ 'originalimagehash' => { 474 => 'OriginalImageHash' },
+ 'originalimagehashtype' => { 474 => 'OriginalImageHashType' },
'originalimageheight' => { 79 => 0xc, 123 => 0x1 },
'originalimagemd5' => { 474 => 'OriginalImageMD5' },
'originalimagesize' => { 162 => 'OriginalImageSize' },
@@ -4917,7 +4932,7 @@ my %tagLookup = (
'originalrawfilename' => { 119 => 0xc68b },
'originaltransmissionreference' => { 131 => 0x67 },
'originatingprogram' => { 131 => 0x41, 489 => 'OriginatingProgram' },
- 'originplatform' => { 511 => 'originPlatform' },
+ 'originplatform' => { 513 => 'originPlatform' },
'os' => { 498 => 'os' },
'otherconditions' => { 322 => 'OtherConditions' },
'otherconstraints' => { 322 => 'OtherConstraints' },
@@ -4928,9 +4943,9 @@ my %tagLookup = (
'otherlicensedocuments' => { 322 => 'OtherLicenseDocuments' },
'otherlicenseinfo' => { 322 => 'OtherLicenseInfo' },
'otherlicenserequirements' => { 322 => 'OtherLicenseRequirements' },
- 'outcue' => { 521 => 'outCue' },
- 'outcuescale' => { 521 => [\'outCue','outCueScale'] },
- 'outcuevalue' => { 521 => [\'outCue','outCueValue'] },
+ 'outcue' => { 523 => 'outCue' },
+ 'outcuescale' => { 523 => [\'outCue','outCueScale'] },
+ 'outcuevalue' => { 523 => [\'outCue','outCueValue'] },
'outputimageheight' => { 199 => 0x3 },
'outputimagewidth' => { 199 => 0x2 },
'outputlut' => { 335 => 0xa7 },
@@ -4939,21 +4954,21 @@ my %tagLookup = (
'overclockcols' => { 138 => 0x189c },
'overclockrows' => { 138 => 0x18c4 },
'overridelookvignette' => { 494 => 'OverrideLookVignette', 496 => 'OverrideLookVignette' },
- 'owner' => { 525 => 'Owner' },
+ 'owner' => { 527 => 'Owner' },
'ownerid' => { 131 => 0xbc },
'ownername' => { 15 => 0x10f, 64 => 0x9, 97 => 0x810, 119 => [0xa430,0xfde8], 156 => 'OwnerName', 491 => 'OwnerName', 501 => 'CameraOwnerName' },
'padding' => { 119 => 0xea1c },
- 'pagecount' => { 511 => 'pageCount' },
- 'pageimage' => { 519 => [\'PageInfo','PageInfoImage'] },
- 'pageimageformat' => { 519 => [\'PageInfo','PageInfoFormat'] },
- 'pageimageheight' => { 519 => [\'PageInfo','PageInfoHeight'] },
- 'pageimagepagenumber' => { 519 => [\'PageInfo','PageInfoPageNumber'] },
- 'pageimagewidth' => { 519 => [\'PageInfo','PageInfoWidth'] },
- 'pageinfo' => { 519 => 'PageInfo' },
+ 'pagecount' => { 513 => 'pageCount' },
+ 'pageimage' => { 521 => [\'PageInfo','PageInfoImage'] },
+ 'pageimageformat' => { 521 => [\'PageInfo','PageInfoFormat'] },
+ 'pageimageheight' => { 521 => [\'PageInfo','PageInfoHeight'] },
+ 'pageimagepagenumber' => { 521 => [\'PageInfo','PageInfoPageNumber'] },
+ 'pageimagewidth' => { 521 => [\'PageInfo','PageInfoWidth'] },
+ 'pageinfo' => { 521 => 'PageInfo' },
'pagename' => { 119 => 0x11d },
'pagenumber' => { 119 => 0x129 },
- 'pageprogressiondirection' => { 511 => 'pageProgressionDirection' },
- 'pagerange' => { 511 => 'pageRange' },
+ 'pageprogressiondirection' => { 513 => 'pageProgressionDirection' },
+ 'pagerange' => { 513 => 'pageRange' },
'paintbasedcorrectionmasks' => { 494 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'], 496 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'] },
'paintbasedcorrections' => { 494 => 'PaintBasedCorrections', 496 => 'PaintBasedCorrections' },
'paintcorrectionactive' => { 494 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'], 496 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'] },
@@ -5126,8 +5141,8 @@ my %tagLookup = (
'panoramicstitchtheta0' => { 176 => 'PanoramicStitchTheta0', 177 => 0x3 },
'panoramicstitchtheta1' => { 176 => 'PanoramicStitchTheta1', 177 => 0x4 },
'panoramicstitchversion' => { 177 => 0x0 },
- 'pantry' => { 522 => 'Pantry' },
- 'pantryinstanceid' => { 522 => [\'Pantry','PantryInstanceID'] },
+ 'pantry' => { 524 => 'Pantry' },
+ 'pantryinstanceid' => { 524 => [\'Pantry','PantryInstanceID'] },
'parallax' => { 127 => 0xb211, 311 => 0x28 },
'parametricdarks' => { 494 => 'ParametricDarks', 496 => 'ParametricDarks' },
'parametrichighlights' => { 494 => 'ParametricHighlights', 496 => 'ParametricHighlights' },
@@ -5137,23 +5152,23 @@ my %tagLookup = (
'parametricshadows' => { 494 => 'ParametricShadows', 496 => 'ParametricShadows' },
'parametricshadowsplit' => { 494 => 'ParametricShadowSplit', 496 => 'ParametricShadowSplit' },
'parentalrating' => { 179 => 'WM/ParentalRating' },
- 'parentid' => { 507 => 'parentId' },
+ 'parentid' => { 508 => 'parentId' },
'parentmediaeventid' => { 484 => 'ParentMediaEventID' },
'parentmeid' => { 484 => 'ParentMEID' },
'parentproductid' => { 387 => '@ppi' },
- 'parentreference1' => { 505 => [\'TagStructure','TagStructureParentReference'] },
- 'parentreference2' => { 505 => [\'TagStructure','TagStructureSubLabelsParentReference'] },
- 'parentreference3' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsParentReference'] },
- 'parentreference4' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsParentReference'] },
- 'parentreference5' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
- 'parentreference6' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
+ 'parentreference1' => { 506 => [\'TagStructure','TagStructureParentReference'] },
+ 'parentreference2' => { 506 => [\'TagStructure','TagStructureSubLabelsParentReference'] },
+ 'parentreference3' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsParentReference'] },
+ 'parentreference4' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsParentReference'] },
+ 'parentreference5' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
+ 'parentreference6' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
'parentshorttitle' => { 387 => '@PST' },
'parenttitle' => { 387 => '@pti' },
'partialactivecols1' => { 138 => 0x17e8 },
'partialactivecols2' => { 138 => 0x17f2 },
'partialactiverows1' => { 138 => 0x17fc },
'partialactiverows2' => { 138 => 0x1806 },
- 'partofcompilation' => { 521 => 'partOfCompilation' },
+ 'partofcompilation' => { 523 => 'partOfCompilation' },
'patientbirthdate' => { 472 => 'PatientDOB' },
'patientid' => { 472 => 'PatientID' },
'patientname' => { 472 => 'PatientName' },
@@ -5169,7 +5184,7 @@ my %tagLookup = (
'patternimagerwidth' => { 138 => 0x960 },
'patternx' => { 138 => 0x966 },
'patterny' => { 138 => 0x967 },
- 'pdfversion' => { 508 => 'PDFVersion' },
+ 'pdfversion' => { 510 => 'PDFVersion' },
'pentaximagesize' => { 370 => 0x9 },
'pentaxmodelid' => { 350 => 0x0, 370 => 0x5 },
'pentaxmodeltype' => { 370 => 0x1 },
@@ -5190,23 +5205,23 @@ my %tagLookup = (
'peripherallighting' => { 79 => 0x2, 127 => 0x3804 },
'peripherallightingsetting' => { 80 => 0x5 },
'peripherallightingvalue' => { 79 => 0x6 },
- 'permissions' => { 514 => 'permissions' },
+ 'permissions' => { 516 => 'permissions' },
'permits' => { 492 => 'permits' },
- 'person' => { 511 => 'person' },
+ 'person' => { 513 => 'person' },
'personality' => { 484 => 'Personality' },
- 'personheard' => { 507 => 'PersonHeard' },
- 'personheardidentifier' => { 507 => [\'PersonHeard','PersonHeardIdentifier'] },
- 'personheardname' => { 507 => [\'PersonHeard','PersonHeardName'] },
- 'personinimage' => { 507 => 'PersonInImage' },
- 'personinimagecharacteristic' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristic'] },
- 'personinimagecvtermcvid' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvId'] },
- 'personinimagecvtermid' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermId'] },
- 'personinimagecvtermname' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermName'] },
- 'personinimagecvtermrefinedabout' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermRefinedAbout'] },
- 'personinimagedescription' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonDescription'] },
- 'personinimageid' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonId'] },
- 'personinimagename' => { 507 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonName'] },
- 'personinimagewdetails' => { 507 => 'PersonInImageWDetails' },
+ 'personheard' => { 508 => 'PersonHeard' },
+ 'personheardidentifier' => { 508 => [\'PersonHeard','PersonHeardIdentifier'] },
+ 'personheardname' => { 508 => [\'PersonHeard','PersonHeardName'] },
+ 'personinimage' => { 508 => 'PersonInImage' },
+ 'personinimagecharacteristic' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristic'] },
+ 'personinimagecvtermcvid' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvId'] },
+ 'personinimagecvtermid' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermId'] },
+ 'personinimagecvtermname' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermName'] },
+ 'personinimagecvtermrefinedabout' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermRefinedAbout'] },
+ 'personinimagedescription' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonDescription'] },
+ 'personinimageid' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonId'] },
+ 'personinimagename' => { 508 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonName'] },
+ 'personinimagewdetails' => { 508 => 'PersonInImageWDetails' },
'perspectiveaspect' => { 494 => 'PerspectiveAspect', 496 => 'PerspectiveAspect' },
'perspectivehorizontal' => { 494 => 'PerspectiveHorizontal', 496 => 'PerspectiveHorizontal' },
'perspectiverotate' => { 494 => 'PerspectiveRotate', 496 => 'PerspectiveRotate' },
@@ -5277,9 +5292,10 @@ my %tagLookup = (
'photoeffectsgreen' => { 289 => 0x6 },
'photoeffectsred' => { 289 => 0x4 },
'photoeffectstype' => { 289 => 0x0 },
+ 'photographer' => { 119 => 0xa437 },
'photographicsensitivity' => { 501 => 'PhotographicSensitivity' },
'photoinfoplayback' => { 294 => '17.6', 303 => '33.6' },
- 'photometricinterpretation' => { 119 => 0x106, 517 => 'PhotometricInterpretation' },
+ 'photometricinterpretation' => { 119 => 0x106, 519 => 'PhotometricInterpretation' },
'photoshootingmenubank' => { 238 => 0x112, 239 => 0x122, 240 => 0x24, 258 => 0x0 },
'photoshootingmenubankimagearea' => { 236 => 0x6dd, 238 => 0x134, 239 => 0x148, 258 => '7.1' },
'photoshopbgrthumbnail' => { 384 => 0x409 },
@@ -5335,7 +5351,7 @@ my %tagLookup = (
'pixelsperunitx' => { 324 => 0x0 },
'pixelsperunity' => { 324 => 0x4 },
'pixelunits' => { 324 => 0x8 },
- 'planarconfiguration' => { 119 => 0x11c, 517 => 'PlanarConfiguration' },
+ 'planarconfiguration' => { 119 => 0x11c, 519 => 'PlanarConfiguration' },
'plane' => { 473 => [\'Planes','PlanesPlane'] },
'planeboundary' => { 473 => [\'Planes','PlanesPlaneBoundary'] },
'planeboundaryvertexcount' => { 473 => [\'Planes','PlanesPlaneBoundaryVertexCount'] },
@@ -5351,12 +5367,12 @@ my %tagLookup = (
'planeposerotationz' => { 473 => [\'Planes','PlanesPlanePoseRotationZ'] },
'planeposetimestamp' => { 473 => [\'Planes','PlanesPlanePoseTimestamp'] },
'planes' => { 473 => 'Planes' },
- 'planningref' => { 507 => 'PlanningRef' },
- 'planningrefidentifier' => { 507 => [\'PlanningRef','PlanningRefIdentifier'] },
- 'planningrefname' => { 507 => [\'PlanningRef','PlanningRefName'] },
- 'planningrefrole' => { 507 => [\'PlanningRef','PlanningRefRole'] },
- 'platenames' => { 526 => 'PlateNames' },
- 'platform' => { 511 => 'platform' },
+ 'planningref' => { 508 => 'PlanningRef' },
+ 'planningrefidentifier' => { 508 => [\'PlanningRef','PlanningRefIdentifier'] },
+ 'planningrefname' => { 508 => [\'PlanningRef','PlanningRefName'] },
+ 'planningrefrole' => { 508 => [\'PlanningRef','PlanningRefRole'] },
+ 'platenames' => { 528 => 'PlateNames' },
+ 'platform' => { 513 => 'platform' },
'playallframes' => { 395 => 'AllF' },
'playbackflickdown' => { 310 => 0x159 },
'playbackflickup' => { 310 => 0x155 },
@@ -5406,7 +5422,7 @@ my %tagLookup = (
'poserotationy' => { 473 => [\'Pose','PoseRotationY'] },
'poserotationz' => { 473 => [\'Pose','PoseRotationZ'] },
'posetimestamp' => { 473 => [\'Pose','PoseTimestamp'] },
- 'positiondescriptor' => { 510 => 'positionDescriptor' },
+ 'positiondescriptor' => { 512 => 'positionDescriptor' },
'postalcode' => { 161 => 'PostalCode' },
'postcropvignetteamount' => { 494 => 'PostCropVignetteAmount', 496 => 'PostCropVignetteAmount' },
'postcropvignettefeather' => { 494 => 'PostCropVignetteFeather', 496 => 'PostCropVignetteFeather' },
@@ -5433,7 +5449,7 @@ my %tagLookup = (
'prefs' => { 131 => 0xdd, 382 => 'Prefs' },
'prereadfastresetcount' => { 138 => 0x187e },
'prereleaseburstlength' => { 239 => 0x712 },
- 'preservedfilename' => { 522 => 'PreservedFileName' },
+ 'preservedfilename' => { 524 => 'PreservedFileName' },
'preservedspecimen' => { 118 => 'PreservedSpecimen' },
'preservedspecimenmaterialsampleid' => { 118 => [\'PreservedSpecimen','PreservedSpecimenMaterialSampleID'] },
'presettype' => { 494 => 'PresetType', 496 => 'PresetType' },
@@ -5465,7 +5481,7 @@ my %tagLookup = (
'previewsettingsdigest' => { 119 => 0xc719 },
'previewsettingsname' => { 119 => 0xc718 },
'primaryafpoint' => { 193 => [0x38,0x44,0x7,0x8] },
- 'primarychromaticities' => { 119 => 0x13f, 517 => 'PrimaryChromaticities' },
+ 'primarychromaticities' => { 119 => 0x13f, 519 => 'PrimaryChromaticities' },
'primaryftp' => { 484 => 'PrimaryFTP' },
'primaryslot' => { 240 => 0x25, 258 => 0x2 },
'printim' => { 119 => 0xc4a5 },
@@ -5478,20 +5494,20 @@ my %tagLookup = (
'processborderrowstop' => { 138 => 0xc63 },
'processingsoftware' => { 119 => 0xb },
'processversion' => { 494 => 'ProcessVersion', 496 => 'ProcessVersion' },
- 'producer' => { 179 => 'WM/Producer', 321 => 'Producer', 387 => "\xa9prd", 389 => 'producer', 395 => "\xa9prd", 508 => 'Producer' },
+ 'producer' => { 179 => 'WM/Producer', 321 => 'Producer', 387 => "\xa9prd", 389 => 'producer', 395 => "\xa9prd", 510 => 'Producer' },
'producerkeywords' => { 395 => "\xa9pdk" },
- 'productcode' => { 511 => 'productCode' },
- 'productid' => { 132 => 0x32, 387 => 'prID', 510 => 'productID' },
- 'productidtype' => { 510 => 'productIDType' },
- 'productinimage' => { 507 => 'ProductInImage' },
- 'productinimagedescription' => { 507 => [\'ProductInImage','ProductInImageProductDescription'] },
- 'productinimagegtin' => { 507 => [\'ProductInImage','ProductInImageProductGTIN'] },
- 'productinimagename' => { 507 => [\'ProductInImage','ProductInImageProductName'] },
- 'productinimageproductid' => { 507 => [\'ProductInImage','ProductInImageProductId'] },
+ 'productcode' => { 513 => 'productCode' },
+ 'productid' => { 132 => 0x32, 387 => 'prID', 512 => 'productID' },
+ 'productidtype' => { 512 => 'productIDType' },
+ 'productinimage' => { 508 => 'ProductInImage' },
+ 'productinimagedescription' => { 508 => [\'ProductInImage','ProductInImageProductDescription'] },
+ 'productinimagegtin' => { 508 => [\'ProductInImage','ProductInImageProductGTIN'] },
+ 'productinimagename' => { 508 => [\'ProductInImage','ProductInImageProductName'] },
+ 'productinimageproductid' => { 508 => [\'ProductInImage','ProductInImageProductId'] },
'productioncode' => { 350 => 0x2 },
'productorserviceconstraints' => { 322 => 'ProductOrServiceConstraints' },
'productversion' => { 387 => 'VERS' },
- 'profession' => { 511 => 'profession' },
+ 'profession' => { 513 => 'profession' },
'profile' => { 473 => [\'Profiles','ProfilesProfile'] },
'profilecalibrationsig' => { 119 => 0xc6f4 },
'profilecameraindices' => { 473 => [\'Profiles','ProfilesProfileCameraIndices'] },
@@ -5517,29 +5533,29 @@ my %tagLookup = (
'programversion' => { 131 => 0x46 },
'prohibits' => { 492 => 'prohibits' },
'projectiontype' => { 482 => 'ProjectionType', 483 => 'ProjectionType' },
- 'projectname' => { 521 => 'projectName' },
- 'projectref' => { 521 => 'projectRef' },
- 'projectrefpath' => { 521 => [\'projectRef','projectRefPath'] },
- 'projectreftype' => { 521 => [\'projectRef','projectRefType'] },
+ 'projectname' => { 523 => 'projectName' },
+ 'projectref' => { 523 => 'projectRef' },
+ 'projectrefpath' => { 523 => [\'projectRef','projectRefPath'] },
+ 'projectreftype' => { 523 => [\'projectRef','projectRefType'] },
'promotionurl' => { 179 => 'WM/PromotionURL' },
'propertyreleaseid' => { 322 => 'PropertyReleaseID' },
'propertyreleasestatus' => { 322 => 'PropertyReleaseStatus' },
'provider' => { 179 => 'WM/Provider' },
'province-state' => { 131 => 0x5f },
- 'publicationdate' => { 511 => 'publicationDate' },
- 'publicationdatea-platform' => { 511 => [\'publicationDate','publicationDateA-platform'] },
- 'publicationdatedate' => { 511 => [\'publicationDate','publicationDateDate'] },
- 'publicationdisplaydate' => { 511 => 'publicationDisplayDate' },
- 'publicationdisplaydatea-platform' => { 511 => [\'publicationDisplayDate','publicationDisplayDateA-platform'] },
- 'publicationdisplaydatedate' => { 511 => [\'publicationDisplayDate','publicationDisplayDateDate'] },
- 'publicationevent' => { 507 => 'PublicationEvent' },
- 'publicationeventdate' => { 507 => [\'PublicationEvent','PublicationEventDate'] },
- 'publicationeventidentifier' => { 507 => [\'PublicationEvent','PublicationEventIdentifier'] },
- 'publicationeventname' => { 507 => [\'PublicationEvent','PublicationEventName'] },
- 'publicationname' => { 511 => 'publicationName' },
+ 'publicationdate' => { 513 => 'publicationDate' },
+ 'publicationdatea-platform' => { 513 => [\'publicationDate','publicationDateA-platform'] },
+ 'publicationdatedate' => { 513 => [\'publicationDate','publicationDateDate'] },
+ 'publicationdisplaydate' => { 513 => 'publicationDisplayDate' },
+ 'publicationdisplaydatea-platform' => { 513 => [\'publicationDisplayDate','publicationDisplayDateA-platform'] },
+ 'publicationdisplaydatedate' => { 513 => [\'publicationDisplayDate','publicationDisplayDateDate'] },
+ 'publicationevent' => { 508 => 'PublicationEvent' },
+ 'publicationeventdate' => { 508 => [\'PublicationEvent','PublicationEventDate'] },
+ 'publicationeventidentifier' => { 508 => [\'PublicationEvent','PublicationEventIdentifier'] },
+ 'publicationeventname' => { 508 => [\'PublicationEvent','PublicationEventName'] },
+ 'publicationname' => { 513 => 'publicationName' },
'publisher' => { 179 => 'WM/Publisher', 387 => "\xa9pub", 389 => 'publisher', 497 => 'publisher' },
- 'publishingfrequency' => { 511 => 'publishingFrequency' },
- 'pulldown' => { 521 => 'pullDown' },
+ 'publishingfrequency' => { 513 => 'publishingFrequency' },
+ 'pulldown' => { 523 => 'pullDown' },
'purchasedate' => { 387 => 'purd' },
'purplehsl' => { 103 => 0x20916 },
'pxshiftperiphedgenr' => { 470 => 0x9013 },
@@ -5566,26 +5582,26 @@ my %tagLookup = (
'rangemaskmapinforgbmax' => { 494 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMax'], 496 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMax'] },
'rangemaskmapinforgbmin' => { 494 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMin'], 496 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMin'] },
'rasterizedcaption' => { 131 => 0x7d },
- 'rating' => { 119 => 0x4746, 127 => 0x1431, 381 => 0xdf, 387 => 'rtng', 395 => 'rtng', 435 => 0x2002, 489 => 'rating', 498 => 'rating', 507 => 'Rating', 511 => 'rating', 519 => 'Rating' },
- 'ratingpercent' => { 119 => 0x4749, 178 => 'Rating', 387 => 'rate', 519 => 'RatingPercent' },
- 'ratingregion' => { 507 => [\'Rating','RatingRatingRegion'] },
- 'ratingregioncity' => { 507 => [\'Rating','RatingRatingRegionCity'] },
- 'ratingregioncountrycode' => { 507 => [\'Rating','RatingRatingRegionCountryCode'] },
- 'ratingregioncountryname' => { 507 => [\'Rating','RatingRatingRegionCountryName'] },
- 'ratingregiongpsaltitude' => { 507 => [\'Rating','RatingRatingRegionGPSAltitude'] },
- 'ratingregiongpslatitude' => { 507 => [\'Rating','RatingRatingRegionGPSLatitude'] },
- 'ratingregiongpslongitude' => { 507 => [\'Rating','RatingRatingRegionGPSLongitude'] },
- 'ratingregionidentifier' => { 507 => [\'Rating','RatingRatingRegionIdentifier'] },
- 'ratingregionlocationid' => { 507 => [\'Rating','RatingRatingRegionLocationId'] },
- 'ratingregionlocationname' => { 507 => [\'Rating','RatingRatingRegionLocationName'] },
- 'ratingregionprovincestate' => { 507 => [\'Rating','RatingRatingRegionProvinceState'] },
- 'ratingregionsublocation' => { 507 => [\'Rating','RatingRatingRegionSublocation'] },
- 'ratingregionworldregion' => { 507 => [\'Rating','RatingRatingRegionWorldRegion'] },
- 'ratingscalemaxvalue' => { 507 => [\'Rating','RatingRatingScaleMaxValue'] },
- 'ratingscaleminvalue' => { 507 => [\'Rating','RatingRatingScaleMinValue'] },
- 'ratingsourcelink' => { 507 => [\'Rating','RatingRatingSourceLink'] },
- 'ratingvalue' => { 507 => [\'Rating','RatingRatingValue'] },
- 'ratingvaluelogolink' => { 507 => [\'Rating','RatingRatingValueLogoLink'] },
+ 'rating' => { 119 => 0x4746, 127 => 0x1431, 381 => 0xdf, 387 => 'rtng', 395 => 'rtng', 435 => 0x2002, 489 => 'rating', 498 => 'rating', 508 => 'Rating', 513 => 'rating', 521 => 'Rating' },
+ 'ratingpercent' => { 119 => 0x4749, 178 => 'Rating', 387 => 'rate', 521 => 'RatingPercent' },
+ 'ratingregion' => { 508 => [\'Rating','RatingRatingRegion'] },
+ 'ratingregioncity' => { 508 => [\'Rating','RatingRatingRegionCity'] },
+ 'ratingregioncountrycode' => { 508 => [\'Rating','RatingRatingRegionCountryCode'] },
+ 'ratingregioncountryname' => { 508 => [\'Rating','RatingRatingRegionCountryName'] },
+ 'ratingregiongpsaltitude' => { 508 => [\'Rating','RatingRatingRegionGPSAltitude'] },
+ 'ratingregiongpslatitude' => { 508 => [\'Rating','RatingRatingRegionGPSLatitude'] },
+ 'ratingregiongpslongitude' => { 508 => [\'Rating','RatingRatingRegionGPSLongitude'] },
+ 'ratingregionidentifier' => { 508 => [\'Rating','RatingRatingRegionIdentifier'] },
+ 'ratingregionlocationid' => { 508 => [\'Rating','RatingRatingRegionLocationId'] },
+ 'ratingregionlocationname' => { 508 => [\'Rating','RatingRatingRegionLocationName'] },
+ 'ratingregionprovincestate' => { 508 => [\'Rating','RatingRatingRegionProvinceState'] },
+ 'ratingregionsublocation' => { 508 => [\'Rating','RatingRatingRegionSublocation'] },
+ 'ratingregionworldregion' => { 508 => [\'Rating','RatingRatingRegionWorldRegion'] },
+ 'ratingscalemaxvalue' => { 508 => [\'Rating','RatingRatingScaleMaxValue'] },
+ 'ratingscaleminvalue' => { 508 => [\'Rating','RatingRatingScaleMinValue'] },
+ 'ratingsourcelink' => { 508 => [\'Rating','RatingRatingSourceLink'] },
+ 'ratingvalue' => { 508 => [\'Rating','RatingRatingValue'] },
+ 'ratingvaluelogolink' => { 508 => [\'Rating','RatingRatingValueLogoLink'] },
'rawandjpgrecording' => { 82 => 0x8, 186 => 0x109, 351 => 0xd },
'rawbrightnessadj' => { 103 => 0x20001, 108 => 0x38 },
'rawburstimagecount' => { 75 => 0x2 },
@@ -5607,6 +5623,7 @@ my %tagLookup = (
'rawdevcolorspace' => { 318 => 0x108, 319 => 0x109 },
'rawdevcontrastvalue' => { 318 => 0x106, 319 => 0x105 },
'rawdeveditstatus' => { 318 => 0x10b },
+ 'rawdevelopingsoftware' => { 119 => 0xa43a },
'rawdevelopmentprocess' => { 370 => 0x62 },
'rawdevengine' => { 318 => 0x109, 319 => 0x10b },
'rawdevexposurebiasvalue' => { 318 => 0x100, 319 => 0x100 },
@@ -5647,17 +5664,17 @@ my %tagLookup = (
'readouttypeactual' => { 138 => 0x1903 },
'readouttyperequested' => { 138 => 0x1902 },
'reardisplay' => { 294 => '12.3', 295 => '6.2' },
- 'recdevice' => { 507 => 'RecDevice' },
- 'recdeviceattlensdescription' => { 507 => [\'RecDevice','RecDeviceAttLensDescription'] },
- 'recdevicemanufacturer' => { 507 => [\'RecDevice','RecDeviceManufacturer'] },
- 'recdevicemodelname' => { 507 => [\'RecDevice','RecDeviceModelName'] },
- 'recdeviceownersdeviceid' => { 507 => [\'RecDevice','RecDeviceOwnersDeviceId'] },
- 'recdeviceserialnumber' => { 507 => [\'RecDevice','RecDeviceSerialNumber'] },
- 'recipeendingpage' => { 513 => 'recipeEndingPage' },
- 'recipepagerange' => { 513 => 'recipePageRange' },
- 'recipesource' => { 513 => 'recipeSource' },
- 'recipestartingpage' => { 513 => 'recipeStartingPage' },
- 'recipetitle' => { 513 => 'recipeTitle' },
+ 'recdevice' => { 508 => 'RecDevice' },
+ 'recdeviceattlensdescription' => { 508 => [\'RecDevice','RecDeviceAttLensDescription'] },
+ 'recdevicemanufacturer' => { 508 => [\'RecDevice','RecDeviceManufacturer'] },
+ 'recdevicemodelname' => { 508 => [\'RecDevice','RecDeviceModelName'] },
+ 'recdeviceownersdeviceid' => { 508 => [\'RecDevice','RecDeviceOwnersDeviceId'] },
+ 'recdeviceserialnumber' => { 508 => [\'RecDevice','RecDeviceSerialNumber'] },
+ 'recipeendingpage' => { 515 => 'recipeEndingPage' },
+ 'recipepagerange' => { 515 => 'recipePageRange' },
+ 'recipesource' => { 515 => 'recipeSource' },
+ 'recipestartingpage' => { 515 => 'recipeStartingPage' },
+ 'recipetitle' => { 515 => 'recipeTitle' },
'recognizedface1age' => { 328 => 0x20 },
'recognizedface1name' => { 328 => 0x4 },
'recognizedface1position' => { 328 => 0x18 },
@@ -5705,13 +5722,13 @@ my %tagLookup = (
'reductionmatrix2' => { 119 => 0xc626 },
'reductionmatrix3' => { 119 => 0xcd3a },
'reelname' => { 119 => 0xc789, 395 => 'reel' },
- 'reference1' => { 505 => [\'TagStructure','TagStructureReference'] },
- 'reference2' => { 505 => [\'TagStructure','TagStructureSubLabelsReference'] },
- 'reference3' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsReference'] },
- 'reference4' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsReference'] },
- 'reference5' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
- 'reference6' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
- 'referenceblackwhite' => { 119 => 0x214, 517 => 'ReferenceBlackWhite' },
+ 'reference1' => { 506 => [\'TagStructure','TagStructureReference'] },
+ 'reference2' => { 506 => [\'TagStructure','TagStructureSubLabelsReference'] },
+ 'reference3' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsReference'] },
+ 'reference4' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsReference'] },
+ 'reference5' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
+ 'reference6' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
+ 'referenceblackwhite' => { 119 => 0x214, 519 => 'ReferenceBlackWhite' },
'referencedate' => { 131 => 0x2f },
'referencenumber' => { 131 => 0x32 },
'references' => { 157 => 'References' },
@@ -5746,10 +5763,10 @@ my %tagLookup = (
'regionrotation' => { 172 => [\'Regions','RegionsRegionListRotation'] },
'regionseealso' => { 172 => [\'Regions','RegionsRegionListSeeAlso'] },
'regiontype' => { 172 => [\'Regions','RegionsRegionListType'] },
- 'registryentryrole' => { 507 => [\'RegistryId','RegistryIdRegEntryRole'] },
- 'registryid' => { 507 => 'RegistryId' },
- 'registryitemid' => { 507 => [\'RegistryId','RegistryIdRegItemId'] },
- 'registryorganisationid' => { 507 => [\'RegistryId','RegistryIdRegOrgId'] },
+ 'registryentryrole' => { 508 => [\'RegistryId','RegistryIdRegEntryRole'] },
+ 'registryid' => { 508 => 'RegistryId' },
+ 'registryitemid' => { 508 => [\'RegistryId','RegistryIdRegItemId'] },
+ 'registryorganisationid' => { 508 => [\'RegistryId','RegistryIdRegOrgId'] },
'relatedaudiofile' => { 155 => 'data' },
'relatedaudiofilename' => { 155 => '1Name' },
'relatedaudiofiletype' => { 155 => '0Type' },
@@ -5768,45 +5785,45 @@ my %tagLookup = (
'relationshipofresourceid' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelationshipOfResourceID'] },
'relationshipremarks' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelationshipRemarks'] },
'relativealtitude' => { 116 => 'RelativeAltitude' },
- 'relativepeakaudiofilepath' => { 521 => 'relativePeakAudioFilePath' },
- 'relativetimestamp' => { 521 => 'relativeTimestamp' },
- 'relativetimestampscale' => { 521 => [\'relativeTimestamp','relativeTimestampScale'] },
- 'relativetimestampvalue' => { 521 => [\'relativeTimestamp','relativeTimestampValue'] },
+ 'relativepeakaudiofilepath' => { 523 => 'relativePeakAudioFilePath' },
+ 'relativetimestamp' => { 523 => 'relativeTimestamp' },
+ 'relativetimestampscale' => { 523 => [\'relativeTimestamp','relativeTimestampScale'] },
+ 'relativetimestampvalue' => { 523 => [\'relativeTimestamp','relativeTimestampValue'] },
'releasebuttontousedial' => { 294 => '17.8', 295 => '18.5', 297 => '18.4', 298 => '18.4', 303 => '33.8', 304 => '17.6', 307 => '18.5', 308 => '18.4' },
- 'releasedate' => { 131 => 0x1e, 387 => 'rldt', 489 => 'ReleaseDate', 521 => 'releaseDate' },
+ 'releasedate' => { 131 => 0x1e, 387 => 'rldt', 489 => 'ReleaseDate', 523 => 'releaseDate' },
'releasemode' => { 113 => 0x3001, 237 => 0x5c, 268 => 0x184d, 435 => 0xb049 },
'releasemode2' => { 444 => 0x112c, 445 => [0x112c,0x8], 446 => [0x1108,0x8], 447 => [0x1184,0x8], 448 => [0x1160,0x8], 449 => [0x4,0x1018], 450 => [0x4,0x210], 451 => [0x4,0x210], 452 => [0x4,0x208], 454 => [0x67,0x3f], 455 => [0x6b,0x6d,0x73,0x4b], 456 => [0x6b,0x4b], 457 => 0x10, 458 => 0x10, 459 => 0x9, 466 => 0x34 },
'releasemode3' => { 444 => 0x1128, 445 => 0x1128, 446 => 0x1104, 447 => 0x1180, 448 => 0x115c, 449 => 0x1014, 450 => 0x20c, 451 => 0x20c, 452 => 0x204 },
- 'releaseready' => { 507 => 'ReleaseReady' },
+ 'releaseready' => { 508 => 'ReleaseReady' },
'releasesetting' => { 97 => 0x1016 },
'releasetime' => { 131 => 0x23, 489 => 'ReleaseTime' },
'remoteonduration' => { 296 => '3.4', 299 => '17.2', 300 => '18.2', 301 => '18.2', 302 => '18.2', 304 => '18.2', 305 => '4.3', 309 => '19.2' },
- 'renditionclass' => { 522 => 'RenditionClass' },
- 'renditionof' => { 522 => 'RenditionOf' },
- 'renditionofalternatepaths' => { 522 => [\'RenditionOf','RenditionOfAlternatePaths'] },
- 'renditionofdocumentid' => { 522 => [\'RenditionOf','RenditionOfDocumentID'] },
- 'renditionoffilepath' => { 522 => [\'RenditionOf','RenditionOfFilePath'] },
- 'renditionoffrompart' => { 522 => [\'RenditionOf','RenditionOfFromPart'] },
- 'renditionofinstanceid' => { 522 => [\'RenditionOf','RenditionOfInstanceID'] },
- 'renditionoflastmodifydate' => { 522 => [\'RenditionOf','RenditionOfLastModifyDate'] },
- 'renditionoflasturl' => { 522 => [\'RenditionOf','RenditionOfLastURL'] },
- 'renditionoflinkcategory' => { 522 => [\'RenditionOf','RenditionOfLinkCategory'] },
- 'renditionoflinkform' => { 522 => [\'RenditionOf','RenditionOfLinkForm'] },
- 'renditionofmanager' => { 522 => [\'RenditionOf','RenditionOfManager'] },
- 'renditionofmanagervariant' => { 522 => [\'RenditionOf','RenditionOfManagerVariant'] },
- 'renditionofmanageto' => { 522 => [\'RenditionOf','RenditionOfManageTo'] },
- 'renditionofmanageui' => { 522 => [\'RenditionOf','RenditionOfManageUI'] },
- 'renditionofmaskmarkers' => { 522 => [\'RenditionOf','RenditionOfMaskMarkers'] },
- 'renditionoforiginaldocumentid' => { 522 => [\'RenditionOf','RenditionOfOriginalDocumentID'] },
- 'renditionofpartmapping' => { 522 => [\'RenditionOf','RenditionOfPartMapping'] },
- 'renditionofplacedresolutionunit' => { 522 => [\'RenditionOf','RenditionOfPlacedResolutionUnit'] },
- 'renditionofplacedxresolution' => { 522 => [\'RenditionOf','RenditionOfPlacedXResolution'] },
- 'renditionofplacedyresolution' => { 522 => [\'RenditionOf','RenditionOfPlacedYResolution'] },
- 'renditionofrenditionclass' => { 522 => [\'RenditionOf','RenditionOfRenditionClass'] },
- 'renditionofrenditionparams' => { 522 => [\'RenditionOf','RenditionOfRenditionParams'] },
- 'renditionoftopart' => { 522 => [\'RenditionOf','RenditionOfToPart'] },
- 'renditionofversionid' => { 522 => [\'RenditionOf','RenditionOfVersionID'] },
- 'renditionparams' => { 522 => 'RenditionParams' },
+ 'renditionclass' => { 524 => 'RenditionClass' },
+ 'renditionof' => { 524 => 'RenditionOf' },
+ 'renditionofalternatepaths' => { 524 => [\'RenditionOf','RenditionOfAlternatePaths'] },
+ 'renditionofdocumentid' => { 524 => [\'RenditionOf','RenditionOfDocumentID'] },
+ 'renditionoffilepath' => { 524 => [\'RenditionOf','RenditionOfFilePath'] },
+ 'renditionoffrompart' => { 524 => [\'RenditionOf','RenditionOfFromPart'] },
+ 'renditionofinstanceid' => { 524 => [\'RenditionOf','RenditionOfInstanceID'] },
+ 'renditionoflastmodifydate' => { 524 => [\'RenditionOf','RenditionOfLastModifyDate'] },
+ 'renditionoflasturl' => { 524 => [\'RenditionOf','RenditionOfLastURL'] },
+ 'renditionoflinkcategory' => { 524 => [\'RenditionOf','RenditionOfLinkCategory'] },
+ 'renditionoflinkform' => { 524 => [\'RenditionOf','RenditionOfLinkForm'] },
+ 'renditionofmanager' => { 524 => [\'RenditionOf','RenditionOfManager'] },
+ 'renditionofmanagervariant' => { 524 => [\'RenditionOf','RenditionOfManagerVariant'] },
+ 'renditionofmanageto' => { 524 => [\'RenditionOf','RenditionOfManageTo'] },
+ 'renditionofmanageui' => { 524 => [\'RenditionOf','RenditionOfManageUI'] },
+ 'renditionofmaskmarkers' => { 524 => [\'RenditionOf','RenditionOfMaskMarkers'] },
+ 'renditionoforiginaldocumentid' => { 524 => [\'RenditionOf','RenditionOfOriginalDocumentID'] },
+ 'renditionofpartmapping' => { 524 => [\'RenditionOf','RenditionOfPartMapping'] },
+ 'renditionofplacedresolutionunit' => { 524 => [\'RenditionOf','RenditionOfPlacedResolutionUnit'] },
+ 'renditionofplacedxresolution' => { 524 => [\'RenditionOf','RenditionOfPlacedXResolution'] },
+ 'renditionofplacedyresolution' => { 524 => [\'RenditionOf','RenditionOfPlacedYResolution'] },
+ 'renditionofrenditionclass' => { 524 => [\'RenditionOf','RenditionOfRenditionClass'] },
+ 'renditionofrenditionparams' => { 524 => [\'RenditionOf','RenditionOfRenditionParams'] },
+ 'renditionoftopart' => { 524 => [\'RenditionOf','RenditionOfToPart'] },
+ 'renditionofversionid' => { 524 => [\'RenditionOf','RenditionOfVersionID'] },
+ 'renditionparams' => { 524 => 'RenditionParams' },
'repeatingflashcount' => { 211 => 0xd, 212 => 0xe, 213 => 0xe, 214 => 0xe, 215 => 0xe, 216 => 0xe, 303 => '17.2', 304 => '24.2', 305 => '9.2', 306 => '24.2', 309 => '25.2' },
'repeatingflashcountbuilt-in' => { 275 => 0x4db },
'repeatingflashcountexternal' => { 275 => 0x4c3 },
@@ -5817,8 +5834,8 @@ my %tagLookup = (
'repeatingflashrateexternal' => { 275 => 0x4c2 },
'requirements' => { 395 => "\xa9req" },
'requires' => { 492 => 'requires' },
- 'resampleparams' => { 521 => 'resampleParams' },
- 'resampleparamsquality' => { 521 => [\'resampleParams','resampleParamsQuality'] },
+ 'resampleparams' => { 523 => 'resampleParams' },
+ 'resampleparamsquality' => { 523 => [\'resampleParams','resampleParamsQuality'] },
'resamplingkerneldenominators050' => { 138 => 0xe50 },
'resamplingkerneldenominators067' => { 138 => 0xe4f },
'resamplingkerneldenominators100' => { 138 => 0xe51 },
@@ -5826,12 +5843,12 @@ my %tagLookup = (
'resetblacksegrows' => { 138 => 0x181a },
'resolution' => { 162 => 'Resolution' },
'resolutionmode' => { 412 => [0x87,0x4] },
- 'resolutionunit' => { 119 => 0x128, 134 => 0x2, 517 => 'ResolutionUnit' },
+ 'resolutionunit' => { 119 => 0x128, 134 => 0x2, 519 => 'ResolutionUnit' },
'resourceid' => { 118 => [\'ResourceRelationship','ResourceRelationshipResourceID'] },
'resourcerelationship' => { 118 => 'ResourceRelationship' },
'resourcerelationshipid' => { 118 => [\'ResourceRelationship','ResourceRelationshipResourceRelationshipID'] },
'restrictdrivemodes' => { 84 => 0x612 },
- 'restrictions' => { 514 => 'restrictions' },
+ 'restrictions' => { 516 => 'restrictions' },
'retouchareafeather' => { 494 => [\'RetouchAreas','RetouchAreasFeather'], 496 => [\'RetouchAreas','RetouchAreasFeather'] },
'retouchareamaskalpha' => { 494 => [\'RetouchAreas','RetouchAreasMasksAlpha'], 496 => [\'RetouchAreas','RetouchAreasMasksAlpha'] },
'retouchareamaskangle' => { 494 => [\'RetouchAreas','RetouchAreasMasksAngle'], 496 => [\'RetouchAreas','RetouchAreasMasksAngle'] },
@@ -5943,8 +5960,8 @@ my %tagLookup = (
'retouchnefprocessing' => { 252 => 0x5 },
'retractlensonpoweroff' => { 84 => 0x814 },
'reuse' => { 322 => 'Reuse' },
- 'reuseallowed' => { 524 => 'ReuseAllowed' },
- 'reuseprohibited' => { 514 => 'reuseProhibited' },
+ 'reuseallowed' => { 526 => 'ReuseAllowed' },
+ 'reuseprohibited' => { 516 => 'reuseProhibited' },
'reverseexposurecompdial' => { 301 => '5.2' },
'reversefocusring' => { 310 => 0x163 },
'reverseindicators' => { 294 => '12.1', 295 => '6.1', 297 => '6.1', 298 => '6.1', 299 => '4.3', 300 => '5.2', 301 => '5.4', 303 => '33.5', 304 => '5.1', 307 => '6.1', 308 => '6.1', 309 => '6.2', 310 => 0xc1 },
@@ -5962,8 +5979,8 @@ my %tagLookup = (
'rightalbedo' => { 485 => 'RightAlbedo' },
'rightascension' => { 165 => 'RightAscension' },
'rights' => { 497 => 'rights' },
- 'rightsagent' => { 514 => 'rightsAgent' },
- 'rightsowner' => { 514 => 'rightsOwner' },
+ 'rightsagent' => { 516 => 'rightsAgent' },
+ 'rightsowner' => { 516 => 'rightsOwner' },
'roll' => { 115 => 0x8, 395 => ['roll',"\xa9frl"] },
'rollangle' => { 127 => 0x144d, 244 => 0x0, 312 => 0x903, 335 => 0x90, 369 => 0x1, 407 => 0x2 },
'romoperationmode' => { 97 => 0x80d },
@@ -5983,9 +6000,9 @@ my %tagLookup = (
'safetyshiftinavortv' => { 82 => 0x10, 83 => 0x10, 85 => 0xf, 86 => 0x10, 89 => 0x10 },
'sameexposurefornewaperture' => { 84 => 0x112 },
'samplebits' => { 155 => 'SampleBits' },
- 'samplepagerange' => { 511 => 'samplePageRange' },
+ 'samplepagerange' => { 513 => 'samplePageRange' },
'samplerate' => { 155 => 'SampleRate' },
- 'samplesperpixel' => { 119 => 0x115, 340 => 0x8, 517 => 'SamplesPerPixel' },
+ 'samplesperpixel' => { 119 => 0x115, 340 => 0x8, 519 => 'SamplesPerPixel' },
'samplestructure' => { 133 => 0x5a },
'samsungmodelid' => { 409 => 0x3 },
'sanyoquality' => { 411 => 0x201 },
@@ -6011,7 +6028,7 @@ my %tagLookup = (
'saturationuserdef1' => { 19 => 0x100, 70 => 0x98, 71 => 0xb0 },
'saturationuserdef2' => { 19 => 0x101, 70 => 0xb0, 71 => 0xc8 },
'saturationuserdef3' => { 19 => 0x102, 70 => 0xc8, 71 => 0xe0 },
- 'saveid' => { 522 => 'SaveID' },
+ 'saveid' => { 524 => 'SaveID' },
'sbaanalysiscomplete' => { 138 => 0xc35 },
'sbablack' => { 138 => 0xc25 },
'sbagmoffset' => { 138 => 0xc4a },
@@ -6023,10 +6040,10 @@ my %tagLookup = (
'sbalowgray' => { 138 => 0xc47 },
'sbaneutralbal' => { 138 => 0xc32 },
'sbawhite' => { 138 => 0xc27 },
- 'scaletype' => { 521 => 'scaleType' },
+ 'scaletype' => { 523 => 'scaleType' },
'scanimageenhancer' => { 254 => 0x60 },
'scanningdirection' => { 133 => 0x64 },
- 'scene' => { 395 => 'scen', 506 => 'Scene', 521 => 'scene' },
+ 'scene' => { 395 => 'scen', 507 => 'Scene', 523 => 'scene' },
'scenearea' => { 315 => 0x211, 317 => 0x1031 },
'sceneassist' => { 233 => 0x9c },
'scenecapturetype' => { 119 => 0xa406, 500 => 'SceneCaptureType' },
@@ -6047,13 +6064,13 @@ my %tagLookup = (
'sdrhighlights' => { 494 => 'SDRHighlights', 496 => 'SDRHighlights' },
'sdrshadows' => { 494 => 'SDRShadows', 496 => 'SDRShadows' },
'sdrwhites' => { 494 => 'SDRWhites', 496 => 'SDRWhites' },
- 'season' => { 507 => 'Season', 510 => 'season' },
- 'seasonidentifier' => { 507 => [\'Season','SeasonIdentifier'] },
- 'seasonname' => { 507 => [\'Season','SeasonName'] },
- 'seasonnumber' => { 507 => [\'Season','SeasonNumber'] },
+ 'season' => { 508 => 'Season', 512 => 'season' },
+ 'seasonidentifier' => { 508 => [\'Season','SeasonIdentifier'] },
+ 'seasonname' => { 508 => [\'Season','SeasonName'] },
+ 'seasonnumber' => { 508 => [\'Season','SeasonNumber'] },
'secondaryftp' => { 484 => 'SecondaryFTP' },
'secondaryslotfunction' => { 238 => 0x22c, 239 => 0x240, 257 => 0x13c, 268 => 0x1d0 },
- 'section' => { 511 => 'section' },
+ 'section' => { 513 => 'section' },
'securityclassification' => { 119 => 0x9212 },
'selectableafpoint' => { 84 => 0x509 },
'selectafareaselectionmode' => { 2 => 0xc },
@@ -6066,7 +6083,7 @@ my %tagLookup = (
'selftimershotcount' => { 295 => '20.2', 297 => '20.3', 298 => '20.3', 299 => '18.2', 300 => '19.2', 301 => '19.2', 302 => '19.3', 304 => '19.3', 307 => '20.3', 308 => '20.3', 309 => '20.2', 310 => 0x2d },
'selftimershotinterval' => { 295 => '20.3', 297 => '20.2', 298 => '20.2', 302 => '19.2', 307 => '20.2', 308 => '20.2', 310 => 0x31 },
'selftimertime' => { 97 => 0x1806, 184 => 0x1f, 294 => '18.1', 295 => '20.1', 296 => '3.3', 297 => '20.1', 298 => '20.1', 299 => '18.1', 300 => '19.1', 301 => '19.1', 302 => '19.1', 303 => '7.2', 304 => '19.1', 305 => '3.3', 307 => '20.1', 308 => '20.1', 309 => '20.1', 310 => 0x2b },
- 'sellingagency' => { 511 => 'sellingAgency' },
+ 'sellingagency' => { 513 => 'sellingAgency' },
'semanticstyle' => { 1 => 0x40 },
'semanticstylepreset' => { 1 => 0x42 },
'semanticstylerenderingver' => { 1 => 0x41 },
@@ -6104,29 +6121,29 @@ my %tagLookup = (
'sequencefilenumber' => { 445 => 0x4, 446 => 0x4, 447 => 0x4, 448 => 0x4, 457 => 0xc, 458 => 0xc, 459 => 0x1a },
'sequenceimagenumber' => { 445 => 0x0, 446 => 0x0, 447 => 0x0, 448 => 0x0, 457 => 0x8, 458 => 0x8, 459 => 0x12, 466 => 0x24 },
'sequencelength' => { 457 => 0x22, 458 => 0x1e, 459 => [0x16,0x1e] },
- 'sequencename' => { 510 => 'sequenceName' },
- 'sequencenumber' => { 77 => 0x9, 113 => 0x301c, 127 => 0x1101, 140 => 0x1d, 275 => 0x51c, 335 => 0x2b, 424 => [0x10c,0x30c], 435 => 0xb04a, 510 => 'sequenceNumber' },
+ 'sequencename' => { 512 => 'sequenceName' },
+ 'sequencenumber' => { 77 => 0x9, 113 => 0x301c, 127 => 0x1101, 140 => 0x1d, 275 => 0x51c, 335 => 0x2b, 424 => [0x10c,0x30c], 435 => 0xb04a, 512 => 'sequenceNumber' },
'sequenceshotinterval' => { 411 => 0x224 },
- 'sequencetotalnumber' => { 510 => 'sequenceTotalNumber' },
+ 'sequencetotalnumber' => { 512 => 'sequenceTotalNumber' },
'sequentialshot' => { 411 => 0x20e },
'serialnumber' => { 64 => 0xc, 97 => 0x180b, 119 => [0xa431,0xfde9], 137 => 0xfa04, 139 => 0xfa00, 141 => 0xc354, 142 => 0xfa19, 153 => 0x0, 156 => 'SerialNumber', 191 => 0x5501, 233 => [0xa0,0x1d], 313 => 0x101, 317 => [0x404,0x101a], 330 => 0x303, 332 => 0x305, 337 => 0x3103, 370 => 0x229, 379 => 0x102, 380 => 0x407, 395 => ['SNum','slno'], 396 => 0x15, 397 => 0x4b, 398 => 0x7e, 402 => 0x5, 409 => 0xa002, 412 => 0x2, 435 => 0x2031, 491 => 'SerialNumber', 501 => 'BodySerialNumber' },
'serialnumberformat' => { 64 => 0x15, 97 => 0x183b },
'serialnumberhash' => { 395 => 'CAME' },
- 'series' => { 507 => 'Series' },
+ 'series' => { 508 => 'Series' },
'seriesdatetime' => { 472 => 'SeriesDateTime' },
'seriesdescription' => { 472 => 'SeriesDescription' },
- 'seriesidentifier' => { 507 => [\'Series','SeriesIdentifier'] },
+ 'seriesidentifier' => { 508 => [\'Series','SeriesIdentifier'] },
'seriesmodality' => { 472 => 'SeriesModality' },
- 'seriesname' => { 507 => [\'Series','SeriesName'] },
- 'seriesnumber' => { 472 => 'SeriesNumber', 511 => 'seriesNumber' },
- 'seriestitle' => { 511 => 'seriesTitle' },
+ 'seriesname' => { 508 => [\'Series','SeriesName'] },
+ 'seriesnumber' => { 472 => 'SeriesNumber', 513 => 'seriesNumber' },
+ 'seriestitle' => { 513 => 'seriesTitle' },
'serviceidentifier' => { 132 => 0x1e },
- 'servingsize' => { 513 => 'servingSize' },
+ 'servingsize' => { 515 => 'servingSize' },
'setbuttoncrosskeysfunc' => { 87 => 0x0, 88 => 0x0 },
'setbuttonwhenshooting' => { 82 => 0x1, 84 => 0x704, 90 => 0xc },
'setclockfromlocationdata' => { 238 => 0x61d, 239 => 0x64d },
'setfunctionwhenshooting' => { 85 => 0x0, 86 => 0x1, 89 => 0x1 },
- 'setting' => { 510 => 'setting' },
+ 'setting' => { 512 => 'setting' },
'shadingcompensation' => { 312 => 0x50c, 335 => 0x8a },
'shadingcompensation2' => { 316 => 0x1012 },
'shadow' => { 412 => 0xe },
@@ -6169,7 +6186,7 @@ my %tagLookup = (
'sharpnessuserdef2' => { 19 => 0xf8, 70 => 0xac, 71 => 0xc4 },
'sharpnessuserdef3' => { 19 => 0xf9, 70 => 0xc4, 71 => 0xdc },
'shiftcols' => { 138 => 0xc70 },
- 'shootid' => { 510 => 'shootID' },
+ 'shootid' => { 512 => 'shootID' },
'shootingdistance' => { 103 => 0x20701 },
'shootinginfodisplay' => { 294 => '13.2', 295 => '5.1', 303 => '10.2', 304 => '4.1', 307 => '5.1', 309 => '5.3' },
'shootinginfomonitorofftime' => { 294 => '26.2', 295 => '22.2', 297 => '22.2', 298 => '22.2', 302 => '21.2', 303 => '9.1', 304 => '21.2', 307 => '22.2', 308 => '22.2', 309 => '22.2', 310 => 0x37 },
@@ -6181,20 +6198,20 @@ my %tagLookup = (
'shortownername' => { 19 => 0xac },
'shortreleasetimelag' => { 84 => 0x80d },
'shorttitle' => { 387 => '@sti' },
- 'shotdate' => { 521 => 'shotDate' },
- 'shotday' => { 521 => 'shotDay' },
- 'shotlocation' => { 521 => 'shotLocation' },
+ 'shotdate' => { 523 => 'shotDate' },
+ 'shotday' => { 523 => 'shotDay' },
+ 'shotlocation' => { 523 => 'shotLocation' },
'shotlogdata' => { 477 => 'shot_log_data' },
- 'shotname' => { 395 => 'shot', 521 => 'shotName' },
- 'shotnumber' => { 521 => 'shotNumber' },
+ 'shotname' => { 395 => 'shot', 523 => 'shotName' },
+ 'shotnumber' => { 523 => 'shotNumber' },
'shotnumbersincepowerup' => { 439 => 0x44e, 457 => 0x1a, 458 => 0x16, 459 => 0xa },
'shotnumbersincepowerup2' => { 424 => 0x200 },
- 'shotsize' => { 521 => 'shotSize' },
+ 'shotsize' => { 523 => 'shotSize' },
'shotsperinterval' => { 222 => 0x180, 237 => 0xb4, 238 => 0xc0, 239 => 0xd0 },
'showmovement' => { 387 => 'shwm' },
- 'shownevent' => { 507 => 'EventExt' },
- 'showneventidentifier' => { 507 => [\'EventExt','EventExtIdentifier'] },
- 'showneventname' => { 507 => [\'EventExt','EventExtName'] },
+ 'shownevent' => { 508 => 'EventExt' },
+ 'showneventidentifier' => { 508 => [\'EventExt','EventExtIdentifier'] },
+ 'showneventname' => { 508 => [\'EventExt','EventExtName'] },
'shutter' => { 454 => 0x20, 455 => 0x26, 456 => 0x26 },
'shutter-aelock' => { 82 => 0x4, 84 => 0x701, 85 => 0x3, 86 => 0x4, 87 => 0x3, 88 => 0x3, 89 => 0x4, 90 => 0x2 },
'shutteraelbutton' => { 83 => 0x4 },
@@ -6213,8 +6230,8 @@ my %tagLookup = (
'shutterspeedrange' => { 84 => 0x10c },
'shutterspeedsetting' => { 184 => 0x6, 422 => 0x2f, 423 => 0x28, 424 => 0x0 },
'shutterspeedvalue' => { 93 => 0x1, 119 => 0x9201, 317 => 0x1000, 379 => 0x400, 500 => 'ShutterSpeedValue' },
- 'shuttertype' => { 127 => 0x1050, 335 => 0x9f, 370 => 0x87 },
- 'sidecarforextension' => { 509 => 'SidecarForExtension' },
+ 'shuttertype' => { 127 => 0x1050, 335 => 0x9f, 370 => 0x87, 459 => [0x133,0x139,0x13f] },
+ 'sidecarforextension' => { 511 => 'SidecarForExtension' },
'sigmaimpulseparameters' => { 138 => 0xe0d },
'sigmascalingfactorcamera' => { 138 => 0xe0c },
'sigmascalingfactorlowres' => { 138 => 0xe0b },
@@ -6224,13 +6241,13 @@ my %tagLookup = (
'silentphotography' => { 233 => 0xbf },
'similarityindex' => { 131 => 0xe4 },
'singleframebracketing' => { 184 => 0x21 },
- 'skilllevel' => { 513 => 'skillLevel' },
+ 'skilllevel' => { 515 => 'skillLevel' },
'skintonecorrection' => { 370 => 0x95 },
'skiplinetime' => { 138 => 0x184e },
'slaveflashmeteringsegments' => { 370 => 0x20b },
- 'slideshowname' => { 510 => 'slideshowName' },
- 'slideshownumber' => { 510 => 'slideshowNumber' },
- 'slideshowtotalnumber' => { 510 => 'slideshowTotalNumber' },
+ 'slideshowname' => { 512 => 'slideshowName' },
+ 'slideshownumber' => { 512 => 'slideshowNumber' },
+ 'slideshowtotalnumber' => { 512 => 'slideshowTotalNumber' },
'slowshutter' => { 77 => 0x8 },
'slowsync' => { 127 => 0x1030 },
'smartalbumcolor' => { 409 => 0x20 },
@@ -6238,20 +6255,20 @@ my %tagLookup = (
'smileshutter' => { 424 => 0x31 },
'smileshuttermode' => { 424 => 0x27 },
'smoothness' => { 119 => 0xfe57, 494 => 'Smoothness', 496 => 'Smoothness' },
- 'snapshot' => { 507 => 'SnapshotLink' },
- 'snapshotformat' => { 507 => [\'SnapshotLink','SnapshotLinkFormat'] },
- 'snapshotheightpixels' => { 507 => [\'SnapshotLink','SnapshotLinkHeightPixels'] },
- 'snapshotimagerole' => { 507 => [\'SnapshotLink','SnapshotLinkImageRole'] },
- 'snapshotlink' => { 507 => [\'SnapshotLink','SnapshotLinkLink'] },
- 'snapshotlinkqualifier' => { 507 => [\'SnapshotLink','SnapshotLinkLinkQualifier'] },
+ 'snapshot' => { 508 => 'SnapshotLink' },
+ 'snapshotformat' => { 508 => [\'SnapshotLink','SnapshotLinkFormat'] },
+ 'snapshotheightpixels' => { 508 => [\'SnapshotLink','SnapshotLinkHeightPixels'] },
+ 'snapshotimagerole' => { 508 => [\'SnapshotLink','SnapshotLinkImageRole'] },
+ 'snapshotlink' => { 508 => [\'SnapshotLink','SnapshotLinkLink'] },
+ 'snapshotlinkqualifier' => { 508 => [\'SnapshotLink','SnapshotLinkLinkQualifier'] },
'snapshots' => { 489 => 'Snapshots' },
- 'snapshotusedvideoframe' => { 507 => [\'SnapshotLink','SnapshotLinkUsedVideoFrame'] },
- 'snapshotusedvideoframetimeformat' => { 507 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeFormat'] },
- 'snapshotusedvideoframetimevalue' => { 507 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeValue'] },
- 'snapshotusedvideoframevalue' => { 507 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameValue'] },
- 'snapshotwidthpixels' => { 507 => [\'SnapshotLink','SnapshotLinkWidthPixels'] },
+ 'snapshotusedvideoframe' => { 508 => [\'SnapshotLink','SnapshotLinkUsedVideoFrame'] },
+ 'snapshotusedvideoframetimeformat' => { 508 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeFormat'] },
+ 'snapshotusedvideoframetimevalue' => { 508 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeValue'] },
+ 'snapshotusedvideoframevalue' => { 508 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameValue'] },
+ 'snapshotwidthpixels' => { 508 => [\'SnapshotLink','SnapshotLinkWidthPixels'] },
'softskineffect' => { 435 => 0x200f },
- 'software' => { 119 => 0x131, 157 => 'Software', 325 => 'Software', 379 => 0x203, 389 => 'software', 412 => 0x18, 479 => 'Software', 517 => 'Software' },
+ 'software' => { 119 => 0x131, 157 => 'Software', 325 => 'Software', 379 => 0x203, 389 => 'software', 412 => 0x18, 479 => 'Software', 519 => 'Software' },
'softwareversion' => { 395 => ['@swr',"\xa9swr"], 411 => 0x207 },
'soloist' => { 387 => "\xa9sol" },
'songwriter' => { 395 => "\xa9swf" },
@@ -6283,7 +6300,7 @@ my %tagLookup = (
'sortname' => { 387 => 'sonm', 494 => 'SortName', 496 => 'SortName' },
'sortshow' => { 387 => 'sosn' },
'soundengineer' => { 387 => "\xa9sne" },
- 'source' => { 131 => 0x73, 325 => 'Source', 497 => 'source', 498 => 'source', 509 => 'Source' },
+ 'source' => { 131 => 0x73, 325 => 'Source', 497 => 'source', 498 => 'source', 511 => 'Source' },
'sourcecount' => { 483 => 'SourceCount' },
'sourcecredits' => { 395 => "\xa9src" },
'sourcedirectoryindex' => { 357 => 0x0 },
@@ -6295,13 +6312,13 @@ my %tagLookup = (
'spatialfrequencyresponsenames' => { 500 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseNames'] },
'spatialfrequencyresponserows' => { 500 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseRows'] },
'spatialfrequencyresponsevalues' => { 500 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseValues'] },
- 'speakerplacement' => { 521 => 'speakerPlacement' },
+ 'speakerplacement' => { 523 => 'speakerPlacement' },
'specialeffectlevel' => { 113 => 0x3030 },
'specialeffectmode' => { 113 => 0x2076 },
'specialeffectsetting' => { 113 => 0x3031 },
'specialinstructions' => { 131 => 0x28 },
'specialmode' => { 317 => 0x200, 411 => 0x200 },
- 'specialoccasion' => { 513 => 'specialOccasion' },
+ 'specialoccasion' => { 515 => 'specialOccasion' },
'specialtypeid' => { 477 => 'SpecialTypeID' },
'spectralsensitivity' => { 119 => 0x8824, 500 => 'SpectralSensitivity' },
'specularwhitelevel' => { 41 => 0x32b, 42 => 0x281, 45 => [0x2b9,0x2d0,0x2d4], 46 => 0x56a, 47 => 0x1e4, 48 => [0x1fd,0x2dd], 49 => [0x231,0x30f], 50 => 0x31d },
@@ -6316,7 +6333,7 @@ my %tagLookup = (
'splittoninghighlightsaturation' => { 494 => 'SplitToningHighlightSaturation', 496 => 'SplitToningHighlightSaturation' },
'splittoningshadowhue' => { 494 => 'SplitToningShadowHue', 496 => 'SplitToningShadowHue' },
'splittoningshadowsaturation' => { 494 => 'SplitToningShadowSaturation', 496 => 'SplitToningShadowSaturation' },
- 'sport' => { 511 => 'sport' },
+ 'sport' => { 513 => 'sport' },
'spotfocuspointx' => { 181 => 0x2d },
'spotfocuspointy' => { 181 => 0x2e },
'spotmeteringmode' => { 34 => 0x27 },
@@ -6355,15 +6372,15 @@ my %tagLookup = (
'standardwhitetungsten' => { 138 => 0x835 },
'standbytimer' => { 295 => '19.1', 297 => '19.1', 298 => '19.1', 301 => '18.1', 302 => '18.1', 307 => '19.1', 308 => '19.1' },
'starlightview' => { 310 => 0x249 },
- 'startingpage' => { 511 => 'startingPage' },
+ 'startingpage' => { 513 => 'startingPage' },
'startmovieshooting' => { 84 => 0x70d },
- 'starttimecode' => { 395 => "\xa9TIM", 521 => 'startTimecode' },
- 'starttimecodetimeformat' => { 521 => [\'startTimecode','startTimecodeTimeFormat'] },
- 'starttimecodetimevalue' => { 521 => [\'startTimecode','startTimecodeTimeValue'] },
- 'starttimecodevalue' => { 521 => [\'startTimecode','startTimecodeValue'] },
- 'starttimesamplesize' => { 395 => "\xa9TSZ", 521 => 'startTimeSampleSize' },
- 'starttimescale' => { 395 => "\xa9TSC", 521 => 'startTimeScale' },
- 'state' => { 161 => 'State', 335 => 0x6b, 509 => 'State' },
+ 'starttimecode' => { 395 => "\xa9TIM", 523 => 'startTimecode' },
+ 'starttimecodetimeformat' => { 523 => [\'startTimecode','startTimecodeTimeFormat'] },
+ 'starttimecodetimevalue' => { 523 => [\'startTimecode','startTimecodeTimeValue'] },
+ 'starttimecodevalue' => { 523 => [\'startTimecode','startTimecodeValue'] },
+ 'starttimesamplesize' => { 395 => "\xa9TSZ", 523 => 'startTimeSampleSize' },
+ 'starttimescale' => { 395 => "\xa9TSC", 523 => 'startTimeScale' },
+ 'state' => { 161 => 'State', 335 => 0x6b, 511 => 'State' },
'status' => { 475 => 'Status', 487 => 'Status' },
'stereomode' => { 483 => 'StereoMode' },
'stitched' => { 483 => 'Stitched' },
@@ -6372,16 +6389,16 @@ my %tagLookup = (
'storagemethod' => { 188 => 0x12 },
'storebyorientation' => { 295 => '46.3', 297 => '47.3', 298 => '47.3', 307 => '47.3', 308 => '47.3', 310 => 0xd },
'storedescription' => { 387 => 'sdes' },
- 'storylineidentifier' => { 507 => 'StorylineIdentifier' },
+ 'storylineidentifier' => { 508 => 'StorylineIdentifier' },
'straightenangle' => { 287 => 0x2fc08431 },
- 'streamready' => { 507 => 'StreamReady' },
+ 'streamready' => { 508 => 'StreamReady' },
'streamtype' => { 176 => 'StreamType' },
- 'stretchmode' => { 521 => 'stretchMode' },
+ 'stretchmode' => { 523 => 'stretchMode' },
'studydatetime' => { 472 => 'StudyDateTime' },
'studydescription' => { 472 => 'StudyDescription' },
'studyid' => { 472 => 'StudyID' },
'studyphysician' => { 472 => 'StudyPhysician' },
- 'styleperiod' => { 507 => 'StylePeriod' },
+ 'styleperiod' => { 508 => 'StylePeriod' },
'sub-location' => { 131 => 0x5c },
'subcommanddialplaybackmode' => { 310 => 0x1cf },
'subfiledata' => { 164 => 'data' },
@@ -6390,9 +6407,9 @@ my %tagLookup = (
'subfilename' => { 164 => '1Name' },
'subfileresource' => { 164 => 'rsrc' },
'subfiletype' => { 119 => 0xfe, 164 => '0Type' },
- 'subject' => { 321 => 'Subject', 386 => 'Subject', 497 => 'subject', 508 => 'Subject', 522 => 'subject' },
+ 'subject' => { 321 => 'Subject', 386 => 'Subject', 497 => 'subject', 510 => 'Subject', 524 => 'subject' },
'subjectarea' => { 119 => 0x9214, 500 => 'SubjectArea' },
- 'subjectcode' => { 506 => 'SubjectCode' },
+ 'subjectcode' => { 507 => 'SubjectCode' },
'subjectdetection' => { 238 => 0x23e, 239 => 0x252 },
'subjectdistance' => { 119 => 0x9206, 140 => 0x3e, 500 => 'SubjectDistance' },
'subjectdistancerange' => { 119 => 0xa40c, 500 => 'SubjectDistanceRange' },
@@ -6400,40 +6417,40 @@ my %tagLookup = (
'subjectmotion' => { 297 => '78.2', 298 => '78.2', 308 => '78.2', 310 => 0x103 },
'subjectprogram' => { 181 => 0x22 },
'subjectreference' => { 131 => 0xc },
- 'sublabels1' => { 505 => [\'TagStructure','TagStructureSubLabels'] },
- 'sublabels2' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
- 'sublabels3' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabels'] },
- 'sublabels4' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabels'] },
- 'sublabels5' => { 505 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabels'] },
+ 'sublabels1' => { 506 => [\'TagStructure','TagStructureSubLabels'] },
+ 'sublabels2' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
+ 'sublabels3' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabels'] },
+ 'sublabels4' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabels'] },
+ 'sublabels5' => { 506 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabels'] },
'subseccreatedate' => { 114 => 'Exif-SubSecCreateDate' },
'subsecdatetimeoriginal' => { 114 => 'Exif-SubSecDateTimeOriginal' },
'subsecmodifydate' => { 114 => 'Exif-SubSecModifyDate' },
'subsectime' => { 119 => 0x9290 },
'subsectimedigitized' => { 119 => 0x9292 },
'subsectimeoriginal' => { 119 => 0x9291 },
- 'subsection1' => { 511 => 'subsection1' },
- 'subsection2' => { 511 => 'subsection2' },
- 'subsection3' => { 511 => 'subsection3' },
- 'subsection4' => { 511 => 'subsection4' },
+ 'subsection1' => { 513 => 'subsection1' },
+ 'subsection2' => { 513 => 'subsection2' },
+ 'subsection3' => { 513 => 'subsection3' },
+ 'subsection4' => { 513 => 'subsection4' },
'subselector' => { 295 => '49.1', 297 => '71.1', 298 => '71.1', 308 => '71.1', 310 => 0x8f },
'subselectorassignment' => { 295 => '48.1' },
'subselectorcenter' => { 297 => '72.1', 298 => '72.1', 308 => '72.1' },
'subselectorplusdials' => { 295 => '49.2', 297 => '73.1', 298 => '73.1', 308 => '73.1' },
- 'subtitle' => { 179 => 'WM/SubTitle', 387 => "\xa9st3", 395 => "\xa9snm", 511 => 'subtitle' },
+ 'subtitle' => { 179 => 'WM/SubTitle', 387 => "\xa9st3", 395 => "\xa9snm", 513 => 'subtitle' },
'subtitlekeywords' => { 395 => "\xa9snk" },
- 'subversionfilename' => { 505 => [\'SubVersions','SubVersionsFileName'] },
- 'subversionreference' => { 505 => [\'SubVersions','SubVersionsVersRef'] },
- 'subversions' => { 505 => 'SubVersions' },
+ 'subversionfilename' => { 506 => [\'SubVersions','SubVersionsFileName'] },
+ 'subversionreference' => { 506 => [\'SubVersions','SubVersionsVersRef'] },
+ 'subversions' => { 506 => 'SubVersions' },
'superimposeddisplay' => { 82 => 0xa, 84 => 0x510, 85 => 0x9, 86 => 0xa, 89 => 0xa, 90 => 0xe },
'supermacro' => { 64 => 0x1a },
- 'supplementalcategories' => { 131 => 0x14, 509 => 'SupplementalCategories' },
+ 'supplementalcategories' => { 131 => 0x14, 511 => 'SupplementalCategories' },
'supplementaltype' => { 133 => 0x37 },
- 'supplementdisplayid' => { 511 => 'supplementDisplayID' },
- 'supplementstartingpage' => { 511 => 'supplementStartingPage' },
- 'supplementtitle' => { 511 => 'supplementTitle' },
- 'supplychainsource' => { 507 => 'SupplyChainSource' },
- 'supplychainsourceidentifier' => { 507 => [\'SupplyChainSource','SupplyChainSourceIdentifier'] },
- 'supplychainsourcename' => { 507 => [\'SupplyChainSource','SupplyChainSourceName'] },
+ 'supplementdisplayid' => { 513 => 'supplementDisplayID' },
+ 'supplementstartingpage' => { 513 => 'supplementStartingPage' },
+ 'supplementtitle' => { 513 => 'supplementTitle' },
+ 'supplychainsource' => { 508 => 'SupplyChainSource' },
+ 'supplychainsourceidentifier' => { 508 => [\'SupplyChainSource','SupplyChainSourceIdentifier'] },
+ 'supplychainsourcename' => { 508 => [\'SupplyChainSource','SupplyChainSourceName'] },
'supportsamount' => { 494 => 'SupportsAmount', 496 => 'SupportsAmount' },
'supportscolor' => { 494 => 'SupportsColor', 496 => 'SupportsColor' },
'supportshighdynamicrange' => { 494 => 'SupportsHighDynamicRange', 496 => 'SupportsHighDynamicRange' },
@@ -6442,25 +6459,25 @@ my %tagLookup = (
'supportsoutputreferred' => { 494 => 'SupportsOutputReferred', 496 => 'SupportsOutputReferred' },
'supportsscenereferred' => { 494 => 'SupportsSceneReferred', 496 => 'SupportsSceneReferred' },
'svisosetting' => { 351 => 0x14 },
- 'swatchcoloranta' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsA'] },
- 'swatchcolorantb' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsB'] },
- 'swatchcolorantblack' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsBlack'] },
- 'swatchcolorantblue' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsBlue'] },
- 'swatchcolorantcyan' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsCyan'] },
- 'swatchcolorantgray' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsGray'] },
- 'swatchcolorantgreen' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsGreen'] },
- 'swatchcolorantl' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsL'] },
- 'swatchcolorantmagenta' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsMagenta'] },
- 'swatchcolorantmode' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsMode'] },
- 'swatchcolorantred' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsRed'] },
- 'swatchcolorantswatchname' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsSwatchName'] },
- 'swatchcoloranttint' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsTint'] },
- 'swatchcoloranttype' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsType'] },
- 'swatchcolorantyellow' => { 526 => [\'SwatchGroups','SwatchGroupsColorantsYellow'] },
- 'swatchgroupname' => { 526 => [\'SwatchGroups','SwatchGroupsGroupName'] },
- 'swatchgroups' => { 526 => 'SwatchGroups' },
- 'swatchgroupscolorants' => { 526 => [\'SwatchGroups','SwatchGroupsColorants'] },
- 'swatchgrouptype' => { 526 => [\'SwatchGroups','SwatchGroupsGroupType'] },
+ 'swatchcoloranta' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsA'] },
+ 'swatchcolorantb' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsB'] },
+ 'swatchcolorantblack' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsBlack'] },
+ 'swatchcolorantblue' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsBlue'] },
+ 'swatchcolorantcyan' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsCyan'] },
+ 'swatchcolorantgray' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsGray'] },
+ 'swatchcolorantgreen' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsGreen'] },
+ 'swatchcolorantl' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsL'] },
+ 'swatchcolorantmagenta' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsMagenta'] },
+ 'swatchcolorantmode' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsMode'] },
+ 'swatchcolorantred' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsRed'] },
+ 'swatchcolorantswatchname' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsSwatchName'] },
+ 'swatchcoloranttint' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsTint'] },
+ 'swatchcoloranttype' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsType'] },
+ 'swatchcolorantyellow' => { 528 => [\'SwatchGroups','SwatchGroupsColorantsYellow'] },
+ 'swatchgroupname' => { 528 => [\'SwatchGroups','SwatchGroupsGroupName'] },
+ 'swatchgroups' => { 528 => 'SwatchGroups' },
+ 'swatchgroupscolorants' => { 528 => [\'SwatchGroups','SwatchGroupsColorants'] },
+ 'swatchgrouptype' => { 528 => [\'SwatchGroups','SwatchGroupsGroupType'] },
'sweeppanoramadirection' => { 335 => 0x93, 424 => 0x33 },
'sweeppanoramafieldofview' => { 335 => 0x94 },
'sweeppanoramasize' => { 424 => 0x32 },
@@ -6470,9 +6487,9 @@ my %tagLookup = (
'system' => { 379 => 0x204 },
'tagged' => { 381 => 0xdd, 382 => 'Tagged', 489 => 'tagged' },
'tagslist' => { 499 => 'TagsList' },
- 'tagstructure' => { 505 => 'TagStructure' },
- 'takenumber' => { 521 => 'takeNumber' },
- 'tapename' => { 521 => 'tapeName' },
+ 'tagstructure' => { 506 => 'TagStructure' },
+ 'takenumber' => { 523 => 'takeNumber' },
+ 'tapename' => { 523 => 'tapeName' },
'targetaperture' => { 77 => 0x4 },
'targetcompressionratio' => { 95 => 0x1 },
'targetdistancesetting' => { 97 => 0x1807 },
@@ -6530,29 +6547,29 @@ my %tagLookup = (
'tda4edgepolarity' => { 138 => 0x198f },
'tda4gain' => { 138 => 0x198e },
'tda4offset' => { 138 => 0x198c },
- 'teaser' => { 511 => 'teaser' },
+ 'teaser' => { 513 => 'teaser' },
'teleconverter' => { 186 => 0x105, 435 => 0x105 },
'tempampgainx100' => { 138 => 0x1914 },
- 'tempo' => { 521 => 'tempo' },
- 'temporalcoverage' => { 507 => 'TemporalCoverage' },
- 'temporalcoveragefrom' => { 507 => [\'TemporalCoverage','TemporalCoverageTempCoverageFrom'] },
- 'temporalcoverageto' => { 507 => [\'TemporalCoverage','TemporalCoverageTempCoverageTo'] },
+ 'tempo' => { 523 => 'tempo' },
+ 'temporalcoverage' => { 508 => 'TemporalCoverage' },
+ 'temporalcoveragefrom' => { 508 => [\'TemporalCoverage','TemporalCoverageTempCoverageFrom'] },
+ 'temporalcoverageto' => { 508 => [\'TemporalCoverage','TemporalCoverageTempCoverageTo'] },
'termsandconditionstext' => { 322 => 'TermsAndConditionsText' },
'termsandconditionsurl' => { 322 => 'TermsAndConditionsURL' },
'testname' => { 120 => 'TestName' },
'textencoding' => { 232 => 0x4 },
- 'textlayername' => { 509 => [\'TextLayers','TextLayersLayerName'] },
- 'textlayers' => { 509 => 'TextLayers' },
- 'textlayertext' => { 509 => [\'TextLayers','TextLayersLayerText'] },
+ 'textlayername' => { 511 => [\'TextLayers','TextLayersLayerName'] },
+ 'textlayers' => { 511 => 'TextLayers' },
+ 'textlayertext' => { 511 => [\'TextLayers','TextLayersLayerText'] },
'textstamp' => { 335 => [0x8008,0x8009,0x3b,0x3e] },
'texture' => { 494 => 'Texture', 496 => 'Texture' },
'three-dtrackingfacedetection' => { 297 => '1.4', 298 => '1.4', 308 => '1.4' },
'three-dtrackingwatcharea' => { 297 => '78.1', 298 => '78.1', 308 => '78.1' },
'thresholding' => { 119 => 0x107 },
'thumbnailfilename' => { 97 => 0x817 },
- 'thumbnailformat' => { 519 => [\'Thumbnails','ThumbnailsFormat'] },
- 'thumbnailheight' => { 142 => 0xfa55, 519 => [\'Thumbnails','ThumbnailsHeight'] },
- 'thumbnailimage' => { 6 => 'CNDA', 97 => 0x2008, 114 => 'Exif-ThumbnailImage', 122 => 0x3, 167 => 'data', 317 => 0x100, 395 => 'thmb', 519 => [\'Thumbnails','ThumbnailsImage'] },
+ 'thumbnailformat' => { 521 => [\'Thumbnails','ThumbnailsFormat'] },
+ 'thumbnailheight' => { 142 => 0xfa55, 521 => [\'Thumbnails','ThumbnailsHeight'] },
+ 'thumbnailimage' => { 6 => 'CNDA', 97 => 0x2008, 114 => 'Exif-ThumbnailImage', 122 => 0x3, 167 => 'data', 317 => 0x100, 395 => 'thmb', 521 => [\'Thumbnails','ThumbnailsImage'] },
'thumbnailimagename' => { 167 => '1Name' },
'thumbnailimagesize' => { 167 => 'ImageSize' },
'thumbnailimagetype' => { 167 => '0Type' },
@@ -6560,9 +6577,9 @@ my %tagLookup = (
'thumbnaillength' => { 119 => 0x202 },
'thumbnailoffset' => { 119 => 0x201 },
'thumbnailpng' => { 395 => 'thmb' },
- 'thumbnails' => { 519 => 'Thumbnails' },
- 'thumbnailwidth' => { 142 => 0xfa54, 519 => [\'Thumbnails','ThumbnailsWidth'] },
- 'ticker' => { 511 => 'ticker' },
+ 'thumbnails' => { 521 => 'Thumbnails' },
+ 'thumbnailwidth' => { 142 => 0xfa54, 521 => [\'Thumbnails','ThumbnailsWidth'] },
+ 'ticker' => { 513 => 'ticker' },
'tiffhandling' => { 494 => 'TIFFHandling', 496 => 'TIFFHandling' },
'tiffmeteringimage' => { 187 => 0x104c, 433 => 0x1110 },
'tilelength' => { 119 => 0x143 },
@@ -6571,19 +6588,19 @@ my %tagLookup = (
'timecodes' => { 119 => 0xc763 },
'timecreated' => { 131 => 0x3c, 140 => 0x14, 149 => 0x10, 382 => 'TimeCreated' },
'timelapseshotnumber' => { 338 => 0x10 },
- 'timeperiod' => { 511 => 'timePeriod' },
+ 'timeperiod' => { 513 => 'timePeriod' },
'timerfunctionbutton' => { 296 => '5.2', 299 => '12.1', 300 => '13.1' },
'timerlength' => { 84 => 0x80c },
'timerrecording' => { 335 => 0x96 },
- 'timescaleparams' => { 521 => 'timeScaleParams' },
- 'timescaleparamsframeoverlappingpercentage' => { 521 => [\'timeScaleParams','timeScaleParamsFrameOverlappingPercentage'] },
- 'timescaleparamsframesize' => { 521 => [\'timeScaleParams','timeScaleParamsFrameSize'] },
- 'timescaleparamsquality' => { 521 => [\'timeScaleParams','timeScaleParamsQuality'] },
+ 'timescaleparams' => { 523 => 'timeScaleParams' },
+ 'timescaleparamsframeoverlappingpercentage' => { 523 => [\'timeScaleParams','timeScaleParamsFrameOverlappingPercentage'] },
+ 'timescaleparamsframesize' => { 523 => [\'timeScaleParams','timeScaleParamsFrameSize'] },
+ 'timescaleparamsquality' => { 523 => [\'timeScaleParams','timeScaleParamsQuality'] },
'timesent' => { 132 => 0x50 },
'timeshot' => { 484 => 'TimeShot' },
- 'timesignature' => { 521 => 'timeSignature' },
+ 'timesignature' => { 523 => 'timeSignature' },
'timesincepoweron' => { 335 => 0x29 },
- 'timestamp' => { 11 => 0x45e, 19 => 0x11c, 311 => 0x8, 325 => 'TimeStamp', 335 => 0xaf, 483 => 'Timestamp', 490 => 'Timestamp', 505 => 'TimeStamp' },
+ 'timestamp' => { 11 => 0x45e, 19 => 0x11c, 311 => 0x8, 325 => 'TimeStamp', 335 => 0xaf, 483 => 'Timestamp', 490 => 'Timestamp', 506 => 'TimeStamp' },
'timestamp1' => { 11 => 0x45a },
'timezone' => { 78 => 0x1, 238 => 0x594, 239 => 0x5c4, 279 => 0x0, 405 => 0xa },
'timezonecity' => { 78 => 0x2 },
@@ -6591,7 +6608,7 @@ my %tagLookup = (
'timezoneinfo' => { 100 => 0x2 },
'timezoneoffset' => { 119 => 0x882a },
'tint' => { 389 => 'player.movie.visual.tint', 494 => 'Tint', 496 => 'Tint' },
- 'title' => { 157 => 'Title', 321 => 'Title', 325 => 'Title', 335 => 0x65, 386 => 'Title', 387 => ['titl',"\xa9nam"], 389 => 'title', 395 => ['titl',"\xa9nam"], 497 => 'title', 508 => 'Title', 519 => 'Title' },
+ 'title' => { 119 => 0xa436, 157 => 'Title', 321 => 'Title', 325 => 'Title', 335 => 0x65, 386 => 'Title', 387 => ['titl',"\xa9nam"], 389 => 'title', 395 => ['titl',"\xa9nam"], 497 => 'title', 510 => 'Title', 521 => 'Title' },
'togglestyleamount' => { 494 => 'ToggleStyleAmount', 496 => 'ToggleStyleAmount' },
'togglestyledigest' => { 494 => 'ToggleStyleDigest', 496 => 'ToggleStyleDigest' },
'tonecomp' => { 233 => 0x81 },
@@ -6651,38 +6668,39 @@ my %tagLookup = (
'track' => { 387 => "\xa9trk", 395 => "\xa9trk" },
'trackcreatedate' => { 394 => 0x1 },
'trackmodifydate' => { 394 => 0x2 },
- 'tracknumber' => { 387 => 'trkn', 521 => 'trackNumber' },
- 'tracks' => { 521 => 'Tracks' },
- 'tracksframerate' => { 521 => [\'Tracks','TracksFrameRate'] },
- 'tracksmarkers' => { 521 => [\'Tracks','TracksMarkers'] },
- 'tracksmarkerscomment' => { 521 => [\'Tracks','TracksMarkersComment'] },
- 'tracksmarkerscuepointparams' => { 521 => [\'Tracks','TracksMarkersCuePointParams'] },
- 'tracksmarkerscuepointparamskey' => { 521 => [\'Tracks','TracksMarkersCuePointParamsKey'] },
- 'tracksmarkerscuepointparamsvalue' => { 521 => [\'Tracks','TracksMarkersCuePointParamsValue'] },
- 'tracksmarkerscuepointtype' => { 521 => [\'Tracks','TracksMarkersCuePointType'] },
- 'tracksmarkersduration' => { 521 => [\'Tracks','TracksMarkersDuration'] },
- 'tracksmarkerslocation' => { 521 => [\'Tracks','TracksMarkersLocation'] },
- 'tracksmarkersname' => { 521 => [\'Tracks','TracksMarkersName'] },
- 'tracksmarkersprobability' => { 521 => [\'Tracks','TracksMarkersProbability'] },
- 'tracksmarkersspeaker' => { 521 => [\'Tracks','TracksMarkersSpeaker'] },
- 'tracksmarkersstarttime' => { 521 => [\'Tracks','TracksMarkersStartTime'] },
- 'tracksmarkerstarget' => { 521 => [\'Tracks','TracksMarkersTarget'] },
- 'tracksmarkerstype' => { 521 => [\'Tracks','TracksMarkersType'] },
- 'trackstrackname' => { 521 => [\'Tracks','TracksTrackName'] },
- 'trackstracktype' => { 521 => [\'Tracks','TracksTrackType'] },
+ 'tracknumber' => { 387 => 'trkn', 523 => 'trackNumber' },
+ 'tracks' => { 523 => 'Tracks' },
+ 'tracksframerate' => { 523 => [\'Tracks','TracksFrameRate'] },
+ 'tracksmarkers' => { 523 => [\'Tracks','TracksMarkers'] },
+ 'tracksmarkerscomment' => { 523 => [\'Tracks','TracksMarkersComment'] },
+ 'tracksmarkerscuepointparams' => { 523 => [\'Tracks','TracksMarkersCuePointParams'] },
+ 'tracksmarkerscuepointparamskey' => { 523 => [\'Tracks','TracksMarkersCuePointParamsKey'] },
+ 'tracksmarkerscuepointparamsvalue' => { 523 => [\'Tracks','TracksMarkersCuePointParamsValue'] },
+ 'tracksmarkerscuepointtype' => { 523 => [\'Tracks','TracksMarkersCuePointType'] },
+ 'tracksmarkersduration' => { 523 => [\'Tracks','TracksMarkersDuration'] },
+ 'tracksmarkerslocation' => { 523 => [\'Tracks','TracksMarkersLocation'] },
+ 'tracksmarkersname' => { 523 => [\'Tracks','TracksMarkersName'] },
+ 'tracksmarkersprobability' => { 523 => [\'Tracks','TracksMarkersProbability'] },
+ 'tracksmarkersspeaker' => { 523 => [\'Tracks','TracksMarkersSpeaker'] },
+ 'tracksmarkersstarttime' => { 523 => [\'Tracks','TracksMarkersStartTime'] },
+ 'tracksmarkerstarget' => { 523 => [\'Tracks','TracksMarkersTarget'] },
+ 'tracksmarkerstype' => { 523 => [\'Tracks','TracksMarkersType'] },
+ 'trackstrackname' => { 523 => [\'Tracks','TracksTrackName'] },
+ 'trackstracktype' => { 523 => [\'Tracks','TracksTrackType'] },
'tracktype' => { 395 => 'kgtt' },
'trailer' => { 120 => 'Trailer' },
'trailersignature' => { 164 => 'zmie' },
- 'transcript' => { 507 => 'Transcript' },
- 'transcriptlink' => { 507 => 'TranscriptLink' },
- 'transcriptlinklink' => { 507 => [\'TranscriptLink','TranscriptLinkLink'] },
- 'transcriptlinklinkqualifier' => { 507 => [\'TranscriptLink','TranscriptLinkLinkQualifier'] },
- 'transferfunction' => { 119 => 0x12d, 517 => 'TransferFunction' },
+ 'transcript' => { 508 => 'Transcript' },
+ 'transcriptlink' => { 508 => 'TranscriptLink' },
+ 'transcriptlinklink' => { 508 => [\'TranscriptLink','TranscriptLinkLink'] },
+ 'transcriptlinklinkqualifier' => { 508 => [\'TranscriptLink','TranscriptLinkLinkQualifier'] },
+ 'transferfunction' => { 119 => 0x12d, 519 => 'TransferFunction' },
'transfertimenormal' => { 138 => 0x1888 },
'transfertimetest' => { 138 => 0x1889 },
'transform' => { 335 => [0x8012,0x59] },
- 'transmissionreference' => { 509 => 'TransmissionReference' },
- 'trapped' => { 321 => 'Trapped', 508 => 'Trapped' },
+ 'transformation' => { 509 => 'Transformation' },
+ 'transmissionreference' => { 511 => 'TransmissionReference' },
+ 'trapped' => { 321 => 'Trapped', 510 => 'Trapped' },
'trashbuttonfunction' => { 84 => 0x710 },
'travelday' => { 335 => 0x36 },
'treble' => { 389 => 'player.movie.audio.treble' },
@@ -6699,7 +6717,7 @@ my %tagLookup = (
'tvnetworkname' => { 387 => 'tvnn' },
'tvseason' => { 387 => 'tvsn' },
'tvshow' => { 387 => 'tvsh' },
- 'type' => { 478 => 'Type', 497 => 'type', 516 => 'type' },
+ 'type' => { 478 => 'Type', 497 => 'type', 518 => 'type' },
'typestatus' => { 118 => [\'Identification','IdentificationTypeStatus'] },
'uniquecameramodel' => { 119 => 0xc614 },
'uniquedocumentid' => { 131 => 0xbb },
@@ -6776,15 +6794,15 @@ my %tagLookup = (
'uprighttransform_5' => { 494 => 'UprightTransform_5', 496 => 'UprightTransform_5' },
'uprighttransformcount' => { 494 => 'UprightTransformCount', 496 => 'UprightTransformCount' },
'uprightversion' => { 494 => 'UprightVersion', 496 => 'UprightVersion' },
- 'urgency' => { 131 => 0xa, 509 => 'Urgency' },
- 'url' => { 157 => 'URL', 325 => 'URL', 384 => 0x40b, 511 => 'url' },
+ 'urgency' => { 131 => 0xa, 511 => 'Urgency' },
+ 'url' => { 157 => 'URL', 325 => 'URL', 384 => 0x40b, 513 => 'url' },
'url_list' => { 384 => 0x41e },
- 'urla-platform' => { 511 => [\'url','urlA-platform'] },
- 'urlurl' => { 511 => [\'url','urlUrl'] },
+ 'urla-platform' => { 513 => [\'url','urlA-platform'] },
+ 'urlurl' => { 513 => [\'url','urlUrl'] },
'usablemeteringmodes' => { 84 => 0x10a },
'usableshootingmodes' => { 84 => 0x109 },
- 'usage' => { 512 => 'usage' },
- 'usageterms' => { 525 => 'UsageTerms' },
+ 'usage' => { 514 => 'usage' },
+ 'usageterms' => { 527 => 'UsageTerms' },
'usbpowerdelivery' => { 238 => 0x664, 239 => 0x694 },
'usedialwithouthold' => { 310 => 0xbf },
'useguidelines' => { 492 => 'useGuidelines' },
@@ -6799,7 +6817,7 @@ my %tagLookup = (
'userprofile' => { 330 => 0x302, 334 => 0x34c, 337 => 0x3038 },
'userrating' => { 389 => 'rating.user', 395 => 'urat' },
'usmlenselectronicmf' => { 2 => 0x7, 83 => 0x7, 84 => 0x501 },
- 'uspsnumber' => { 511 => 'uspsNumber' },
+ 'uspsnumber' => { 513 => 'uspsNumber' },
'utmeasting' => { 168 => 'Easting' },
'utmmapdatum' => { 168 => 'Datum' },
'utmnorthing' => { 168 => 'Northing' },
@@ -6819,23 +6837,23 @@ my %tagLookup = (
'vendorinfomodel' => { 473 => [\'VendorInfo','VendorInfoModel'] },
'vendorinfonotes' => { 473 => [\'VendorInfo','VendorInfoNotes'] },
'verbatimidentification' => { 118 => [\'Identification','IdentificationVerbatimIdentification'] },
- 'version' => { 127 => 0x0, 386 => 'Version', 389 => 'version', 494 => 'Version', 496 => 'Version' },
+ 'version' => { 127 => 0x0, 386 => 'Version', 389 => 'version', 494 => 'Version', 496 => 'Version', 505 => 'Version' },
'versioncreatedate' => { 470 => 0xd100 },
- 'versionid' => { 522 => 'VersionID' },
- 'versionidentifier' => { 511 => 'versionIdentifier' },
+ 'versionid' => { 524 => 'VersionID' },
+ 'versionidentifier' => { 513 => 'versionIdentifier' },
'versionmodifydate' => { 470 => 0xd101 },
- 'versions' => { 522 => 'Versions' },
- 'versionscomments' => { 522 => [\'Versions','VersionsComments'] },
- 'versionsevent' => { 522 => [\'Versions','VersionsEvent'] },
- 'versionseventaction' => { 522 => [\'Versions','VersionsEventAction'] },
- 'versionseventchanged' => { 522 => [\'Versions','VersionsEventChanged'] },
- 'versionseventinstanceid' => { 522 => [\'Versions','VersionsEventInstanceID'] },
- 'versionseventparameters' => { 522 => [\'Versions','VersionsEventParameters'] },
- 'versionseventsoftwareagent' => { 522 => [\'Versions','VersionsEventSoftwareAgent'] },
- 'versionseventwhen' => { 522 => [\'Versions','VersionsEventWhen'] },
- 'versionsmodifier' => { 522 => [\'Versions','VersionsModifier'] },
- 'versionsmodifydate' => { 522 => [\'Versions','VersionsModifyDate'] },
- 'versionsversion' => { 522 => [\'Versions','VersionsVersion'] },
+ 'versions' => { 524 => 'Versions' },
+ 'versionscomments' => { 524 => [\'Versions','VersionsComments'] },
+ 'versionsevent' => { 524 => [\'Versions','VersionsEvent'] },
+ 'versionseventaction' => { 524 => [\'Versions','VersionsEventAction'] },
+ 'versionseventchanged' => { 524 => [\'Versions','VersionsEventChanged'] },
+ 'versionseventinstanceid' => { 524 => [\'Versions','VersionsEventInstanceID'] },
+ 'versionseventparameters' => { 524 => [\'Versions','VersionsEventParameters'] },
+ 'versionseventsoftwareagent' => { 524 => [\'Versions','VersionsEventSoftwareAgent'] },
+ 'versionseventwhen' => { 524 => [\'Versions','VersionsEventWhen'] },
+ 'versionsmodifier' => { 524 => [\'Versions','VersionsModifier'] },
+ 'versionsmodifydate' => { 524 => [\'Versions','VersionsModifyDate'] },
+ 'versionsversion' => { 524 => [\'Versions','VersionsVersion'] },
'verticalafonbutton' => { 294 => '3.2', 295 => '47.2', 297 => '79.1', 310 => 0x11d },
'verticalclockoverlaps' => { 138 => 0x412 },
'verticalfuncbutton' => { 295 => '42.2', 297 => '67.1', 310 => 0x115 },
@@ -6849,50 +6867,50 @@ my %tagLookup = (
'vfdisplayillumination' => { 2 => 0x11, 84 => [0x510,0x51d] },
'vibrance' => { 488 => 'Vibrance', 494 => 'Vibrance', 496 => 'Vibrance' },
'vibrationreduction' => { 259 => [0x75,0x82,0x1ae], 267 => '586.1', 274 => '590.2', 278 => 0x4 },
- 'videoalphamode' => { 521 => 'videoAlphaMode' },
- 'videoalphapremultiplecolor' => { 521 => 'videoAlphaPremultipleColor' },
- 'videoalphapremultiplecolora' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorA'] },
- 'videoalphapremultiplecolorb' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorB'] },
- 'videoalphapremultiplecolorblack' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlack'] },
- 'videoalphapremultiplecolorblue' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlue'] },
- 'videoalphapremultiplecolorcyan' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorCyan'] },
- 'videoalphapremultiplecolorgray' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGray'] },
- 'videoalphapremultiplecolorgreen' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGreen'] },
- 'videoalphapremultiplecolorl' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorL'] },
- 'videoalphapremultiplecolormagenta' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMagenta'] },
- 'videoalphapremultiplecolormode' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMode'] },
- 'videoalphapremultiplecolorred' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorRed'] },
- 'videoalphapremultiplecolorswatchname' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorSwatchName'] },
- 'videoalphapremultiplecolortint' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorTint'] },
- 'videoalphapremultiplecolortype' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorType'] },
- 'videoalphapremultiplecoloryellow' => { 521 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorYellow'] },
- 'videoalphaunityistransparent' => { 521 => 'videoAlphaUnityIsTransparent' },
- 'videobitrate' => { 507 => 'videoBitRate' },
- 'videobitratemode' => { 507 => 'videoBitRateMode' },
+ 'videoalphamode' => { 523 => 'videoAlphaMode' },
+ 'videoalphapremultiplecolor' => { 523 => 'videoAlphaPremultipleColor' },
+ 'videoalphapremultiplecolora' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorA'] },
+ 'videoalphapremultiplecolorb' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorB'] },
+ 'videoalphapremultiplecolorblack' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlack'] },
+ 'videoalphapremultiplecolorblue' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlue'] },
+ 'videoalphapremultiplecolorcyan' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorCyan'] },
+ 'videoalphapremultiplecolorgray' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGray'] },
+ 'videoalphapremultiplecolorgreen' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGreen'] },
+ 'videoalphapremultiplecolorl' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorL'] },
+ 'videoalphapremultiplecolormagenta' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMagenta'] },
+ 'videoalphapremultiplecolormode' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMode'] },
+ 'videoalphapremultiplecolorred' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorRed'] },
+ 'videoalphapremultiplecolorswatchname' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorSwatchName'] },
+ 'videoalphapremultiplecolortint' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorTint'] },
+ 'videoalphapremultiplecolortype' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorType'] },
+ 'videoalphapremultiplecoloryellow' => { 523 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorYellow'] },
+ 'videoalphaunityistransparent' => { 523 => 'videoAlphaUnityIsTransparent' },
+ 'videobitrate' => { 508 => 'videoBitRate' },
+ 'videobitratemode' => { 508 => 'videoBitRateMode' },
'videoburstmode' => { 335 => 0xbb },
'videoburstresolution' => { 335 => 0xb3 },
'videocodec' => { 67 => 0x74 },
- 'videocolorspace' => { 521 => 'videoColorSpace' },
+ 'videocolorspace' => { 523 => 'videoColorSpace' },
'videocompression' => { 127 => 0x3806 },
- 'videocompressor' => { 521 => 'videoCompressor' },
- 'videodisplayaspectratio' => { 507 => 'videoDisplayAspectRatio' },
- 'videoencodingprofile' => { 507 => 'videoEncodingProfile' },
- 'videofieldorder' => { 521 => 'videoFieldOrder' },
- 'videoframerate' => { 335 => 0x27, 521 => 'videoFrameRate' },
- 'videoframesize' => { 521 => 'videoFrameSize' },
- 'videoframesizeh' => { 521 => [\'videoFrameSize','videoFrameSizeH'] },
- 'videoframesizeunit' => { 521 => [\'videoFrameSize','videoFrameSizeUnit'] },
- 'videoframesizew' => { 521 => [\'videoFrameSize','videoFrameSizeW'] },
- 'videomoddate' => { 521 => 'videoModDate' },
- 'videopixelaspectratio' => { 521 => 'videoPixelAspectRatio' },
- 'videopixeldepth' => { 521 => 'videoPixelDepth' },
+ 'videocompressor' => { 523 => 'videoCompressor' },
+ 'videodisplayaspectratio' => { 508 => 'videoDisplayAspectRatio' },
+ 'videoencodingprofile' => { 508 => 'videoEncodingProfile' },
+ 'videofieldorder' => { 523 => 'videoFieldOrder' },
+ 'videoframerate' => { 335 => 0x27, 523 => 'videoFrameRate' },
+ 'videoframesize' => { 523 => 'videoFrameSize' },
+ 'videoframesizeh' => { 523 => [\'videoFrameSize','videoFrameSizeH'] },
+ 'videoframesizeunit' => { 523 => [\'videoFrameSize','videoFrameSizeUnit'] },
+ 'videoframesizew' => { 523 => [\'videoFrameSize','videoFrameSizeW'] },
+ 'videomoddate' => { 523 => 'videoModDate' },
+ 'videopixelaspectratio' => { 523 => 'videoPixelAspectRatio' },
+ 'videopixeldepth' => { 523 => 'videoPixelDepth' },
'videopreburst' => { 335 => 0xc1 },
'videoquality' => { 113 => 0x4003 },
'videorecordingmode' => { 127 => 0x3803 },
- 'videoshottype' => { 507 => 'VideoShotType' },
- 'videoshottypeidentifier' => { 507 => [\'VideoShotType','VideoShotTypeIdentifier'] },
- 'videoshottypename' => { 507 => [\'VideoShotType','VideoShotTypeName'] },
- 'videostreamscount' => { 507 => 'videoStreamsCount' },
+ 'videoshottype' => { 508 => 'VideoShotType' },
+ 'videoshottypeidentifier' => { 508 => [\'VideoShotType','VideoShotTypeIdentifier'] },
+ 'videoshottypename' => { 508 => [\'VideoShotType','VideoShotTypeName'] },
+ 'videostreamscount' => { 508 => 'videoStreamsCount' },
'viewfinder' => { 379 => 0x455 },
'viewfinderdisplay' => { 294 => '12.4', 295 => '6.3' },
'viewfinderwarning' => { 294 => '13.4', 304 => '3.5', 305 => '6.2', 309 => '4.4' },
@@ -6900,7 +6918,7 @@ my %tagLookup = (
'viewinfoduringexposure' => { 84 => 0x407 },
'viewingmode' => { 424 => 0x2f, 440 => 0x18 },
'viewingmode2' => { 424 => [0x85,0x285] },
- 'viewpoint' => { 510 => 'viewpoint' },
+ 'viewpoint' => { 512 => 'viewpoint' },
'vignetteamount' => { 494 => 'VignetteAmount', 496 => 'VignetteAmount' },
'vignettecontrol' => { 233 => 0x2a, 287 => 0x76a43205 },
'vignettecontrolintensity' => { 287 => 0xac6bd5c0 },
@@ -6910,11 +6928,14 @@ my %tagLookup = (
'vignettingcorrection' => { 119 => 0x7031, 409 => 0xa053, 435 => 0x2011 },
'vignettingcorrparams' => { 119 => 0x7032, 465 => 0x64a, 466 => [0x34a,0x350,0x35c,0x368] },
'vignettingsetting' => { 409 => 0xa054 },
+ 'virtualfocallength' => { 509 => 'VirtualFocalLength' },
'virtualhorizonstyle' => { 310 => 0x167 },
- 'visualcolor' => { 507 => 'VisualColour' },
- 'visualtechnique' => { 510 => 'visualTechnique' },
+ 'virtualimagexcenter' => { 509 => 'VirtualImageXCenter' },
+ 'virtualimageycenter' => { 509 => 'VirtualImageYCenter' },
+ 'visualcolor' => { 508 => 'VisualColour' },
+ 'visualtechnique' => { 512 => 'visualTechnique' },
'voicememo' => { 411 => 0x216 },
- 'volume' => { 511 => 'volume' },
+ 'volume' => { 513 => 'volume' },
'vr_0x66' => { 259 => 0x66 },
'vrdoffset' => { 64 => 0xd0 },
'vrmode' => { 238 => 0x212, 239 => 0x226, 278 => 0x6 },
@@ -7150,7 +7171,7 @@ my %tagLookup = (
'wbtype5' => { 341 => 0xd, 342 => 0x11 },
'wbtype6' => { 341 => 0x10, 342 => 0x15 },
'wbtype7' => { 341 => 0x13, 342 => 0x19 },
- 'webstatement' => { 525 => 'WebStatement' },
+ 'webstatement' => { 527 => 'WebStatement' },
'weightedflatsubject' => { 486 => 'weightedFlatSubject' },
'what' => { 494 => 'What', 496 => 'What' },
'whitebalance' => { 7 => 0x6f, 8 => [0x44,0x4a], 9 => 0xbc, 10 => 0x36, 11 => 0x5e, 12 => 0x36, 13 => 0x78, 14 => 0x6f, 15 => 0x6f, 16 => 0x73, 17 => 0x6f, 18 => 0x78, 19 => 0x54, 20 => 0x6f, 21 => 0xbc, 22 => 0x7b, 24 => 0xbc, 25 => 0xc2, 27 => 0x131, 28 => 0x77, 74 => 0x8, 77 => 0x7, 112 => 0x7, 113 => [0x19,0x2012], 119 => [0xa403,0xfe4e], 127 => 0x1002, 138 => 0x3fc, 139 => 0xfa0d, 140 => 0x40, 151 => 0x1a, 181 => 0x3, 182 => 0xe, 183 => 0x4, 184 => 0xb, 186 => 0x115, 233 => 0x5, 277 => 0x7, 330 => 0x304, 335 => 0x3, 337 => 0x3033, 370 => 0x19, 377 => 0x7, 401 => 0x26, 402 => 0x1003, 412 => [0x88,0x3c,0x7,0x58], 422 => 0xf, 423 => 0xe, 435 => [0x115,0xb054], 494 => 'WhiteBalance', 496 => 'WhiteBalance', 500 => 'WhiteBalance' },
@@ -7175,7 +7196,7 @@ my %tagLookup = (
'whitebalancetemperature' => { 312 => 0x501 },
'whiteboard' => { 317 => 0x301 },
'whitelevel' => { 119 => 0xc61d, 370 => 0x7e, 442 => 0x787f },
- 'whitepoint' => { 119 => 0x13e, 334 => 0x35d, 370 => 0x201, 517 => 'WhitePoint' },
+ 'whitepoint' => { 119 => 0x13e, 334 => 0x35d, 370 => 0x201, 519 => 'WhitePoint' },
'whites2012' => { 494 => 'Whites2012', 496 => 'Whites2012' },
'whitesadj' => { 470 => 0x9017 },
'wideadapter' => { 402 => 0x1017 },
@@ -7188,14 +7209,14 @@ my %tagLookup = (
'windowsatomextension' => { 495 => [\'windowsAtom','windowsAtomExtension'] },
'windowsatominvocationflags' => { 495 => [\'windowsAtom','windowsAtomInvocationFlags'] },
'windowsatomuncprojectpath' => { 495 => [\'windowsAtom','windowsAtomUncProjectPath'] },
- 'wordcount' => { 511 => 'wordCount' },
+ 'wordcount' => { 513 => 'wordCount' },
'work' => { 387 => "\xa9wrk" },
'workcolorspace' => { 103 => 0x10200, 108 => 0x270 },
- 'workflowtag' => { 507 => 'WorkflowTag' },
- 'workflowtagcvid' => { 507 => [\'WorkflowTag','WorkflowTagCvId'] },
- 'workflowtagcvtermid' => { 507 => [\'WorkflowTag','WorkflowTagCvTermId'] },
- 'workflowtagcvtermname' => { 507 => [\'WorkflowTag','WorkflowTagCvTermName'] },
- 'workflowtagcvtermrefinedabout' => { 507 => [\'WorkflowTag','WorkflowTagCvTermRefinedAbout'] },
+ 'workflowtag' => { 508 => 'WorkflowTag' },
+ 'workflowtagcvid' => { 508 => [\'WorkflowTag','WorkflowTagCvId'] },
+ 'workflowtagcvtermid' => { 508 => [\'WorkflowTag','WorkflowTagCvTermId'] },
+ 'workflowtagcvtermname' => { 508 => [\'WorkflowTag','WorkflowTagCvTermName'] },
+ 'workflowtagcvtermrefinedabout' => { 508 => [\'WorkflowTag','WorkflowTagCvTermRefinedAbout'] },
'worktodo' => { 502 => 'WorkToDo' },
'worldtimelocation' => { 335 => 0x3a, 370 => 0x22, 376 => '0.1' },
'writer' => { 179 => 'WM/Writer' },
@@ -7205,26 +7226,26 @@ my %tagLookup = (
'xilinxversion' => { 138 => 0x414 },
'xml' => { 136 => 'xml ' },
'xmp' => { 106 => 0xffff00f6, 120 => 'XMP' },
- 'xmptoolkit' => { 518 => 'xmptk' },
+ 'xmptoolkit' => { 520 => 'xmptk' },
'xpauthor' => { 119 => 0x9c9d },
'xpcomment' => { 119 => 0x9c9c },
'xpkeywords' => { 119 => 0x9c9e },
'xposition' => { 119 => 0x11e },
'xpsubject' => { 119 => 0x9c9f },
'xptitle' => { 119 => 0x9c9b },
- 'xresolution' => { 119 => 0x11a, 134 => 0x3, 385 => 0x0, 517 => 'XResolution' },
+ 'xresolution' => { 119 => 0x11a, 134 => 0x3, 385 => 0x0, 519 => 'XResolution' },
'xyresolution' => { 123 => 0x3 },
'yaw' => { 115 => 0x7, 395 => ['_yaw',"\xa9fyw"] },
'yawangle' => { 244 => 0x8, 407 => 0x0 },
- 'ycbcrcoefficients' => { 119 => 0x211, 517 => 'YCbCrCoefficients' },
- 'ycbcrpositioning' => { 119 => 0x213, 517 => 'YCbCrPositioning' },
- 'ycbcrsubsampling' => { 119 => 0x212, 517 => 'YCbCrSubSampling' },
+ 'ycbcrcoefficients' => { 119 => 0x211, 519 => 'YCbCrCoefficients' },
+ 'ycbcrpositioning' => { 119 => 0x213, 519 => 'YCbCrPositioning' },
+ 'ycbcrsubsampling' => { 119 => 0x212, 519 => 'YCbCrSubSampling' },
'year' => { 387 => 'yrrc', 389 => 'year', 395 => 'yrrc' },
'yearcreated' => { 140 => 0x10, 149 => 0xc },
'yellowhsl' => { 103 => 0x20912 },
- 'yield' => { 513 => 'yield' },
+ 'yield' => { 515 => 'yield' },
'yposition' => { 119 => 0x11f },
- 'yresolution' => { 119 => 0x11b, 134 => 0x5, 385 => 0x4, 517 => 'YResolution' },
+ 'yresolution' => { 119 => 0x11b, 134 => 0x5, 385 => 0x4, 519 => 'YResolution' },
'zebrapatterntonerange' => { 310 => 0x211 },
'zoneidentifier' => { 120 => 'ZoneIdentifier' },
'zonematching' => { 186 => 0x10a, 189 => [0x3a,0x4a], 435 => 0xb024 },
@@ -7769,6 +7790,9 @@ my %tagExists = (
'broadcast' => 1,
'broadcastdate' => 1,
'broadcastextension' => 1,
+ 'brotliexif' => 1,
+ 'brotlijumb' => 1,
+ 'brotlixmp' => 1,
'btoa0' => 1,
'btoa1' => 1,
'btoa2' => 1,
@@ -8272,6 +8296,7 @@ my %tagExists = (
'contentencryption' => 1,
'contentgroupdescription' => 1,
'contentlanguage' => 1,
+ 'contentlightlevel' => 1,
'contentprotected' => 1,
'contentprotectedpercent' => 1,
'contentrating' => 1,
@@ -9179,6 +9204,7 @@ my %tagExists = (
'gaindeadmapimageheight' => 1,
'gaindeadmapimagetype' => 1,
'gaindeadmapimagewidth' => 1,
+ 'gainmapimage' => 1,
'gammablue' => 1,
'gammagreen' => 1,
'gammainfo' => 1,
@@ -9322,6 +9348,7 @@ my %tagExists = (
'gtcitation' => 1,
'gtmodeltype' => 1,
'gtrastertype' => 1,
+ 'guano' => 1,
'gyro360fly' => 1,
'gyromode' => 1,
'gyroscope' => 1,
@@ -9358,6 +9385,7 @@ my %tagExists = (
'hdmiexternalrecorder' => 1,
'hdmioutputhdr' => 1,
'hdmioutputrange' => 1,
+ 'hdrgm' => 1,
'hdrinfo' => 1,
'hdrinfo2' => 1,
'hdrinfoversion' => 1,
@@ -9480,7 +9508,7 @@ my %tagExists = (
'imagecompressiontable' => 1,
'imagecoordinatesystem' => 1,
'imagedatadiscard' => 1,
- 'imagedatamd5' => 1,
+ 'imagedatahash' => 1,
'imagedataoffset' => 1,
'imagedepth' => 1,
'imageelements' => 1,
@@ -10053,6 +10081,7 @@ my %tagExists = (
'matter' => 1,
'maxband' => 1,
'maxbitrate' => 1,
+ 'maxcontentlightlevel' => 1,
'maxdatarate' => 1,
'maximumbitrate' => 1,
'maximumimageindex' => 1,
@@ -10064,6 +10093,7 @@ my %tagExists = (
'maxpacketsize' => 1,
'maxpagenormal' => 1,
'maxpdusize' => 1,
+ 'maxpicaveragelightlevel' => 1,
'maxsubfilesize' => 1,
'maxtransmissiontime' => 1,
'maxval' => 1,
@@ -10765,6 +10795,7 @@ my %tagExists = (
'partialactivecolsright' => 1,
'partialactiverowsbottom' => 1,
'partialactiverowstop' => 1,
+ 'partialjxlcodestream' => 1,
'partialpalette' => 1,
'partialsyncsamples' => 1,
'participants' => 1,
@@ -11108,7 +11139,6 @@ my %tagExists = (
'rafdata' => 1,
'rafversion' => 1,
'rangeimagelocalset' => 1,
- 'rarversion' => 1,
'rasterpadding' => 1,
'rate' => 1,
'rated' => 1,
@@ -12092,7 +12122,6 @@ my %tagExists = (
'transfercharacteristics' => 1,
'transferrange' => 1,
'transfersequence' => 1,
- 'transformation' => 1,
'transformcreatedate' => 1,
'transformedimagetitle' => 1,
'transformmodifydate' => 1,
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index 2507885c..f54be37c 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
=head1 TAG TABLES
The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 26407 tags, with 16869 unique tag names.
+They contain a total of 26443 tags, with 16891 unique tag names.
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -798,6 +798,13 @@ for the official EXIF 2.32 specification.
0xa433 LensMake ExifIFD string
0xa434 LensModel ExifIFD string
0xa435 LensSerialNumber ExifIFD string
+ 0xa436 Title ExifIFD string/
+ 0xa437 Photographer ExifIFD string
+ 0xa438 ImageEditor ExifIFD string
+ 0xa439 CameraFirmware ExifIFD string
+ 0xa43a RAWDevelopingSoftware ExifIFD string
+ 0xa43b ImageEditingSoftware ExifIFD string
+ 0xa43c MetadataEditingSoftware ExifIFD string
0xa460 CompositeImage ExifIFD int16u
0xa461 CompositeImageCount ExifIFD int16u[2]
0xa462 CompositeImageExposureTimes ExifIFD undef
@@ -1306,6 +1313,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
GPano XMP GPano
GSpherical XMP GSpherical
hdr XMP hdr
+ hdrgm XMP hdrgm
ics XMP ics
iptcCore XMP iptcCore
iptcExt XMP iptcExt
@@ -1319,6 +1327,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
mwg-kw MWG Keywords
mwg-rs MWG Regions
nine Nikon nine
+ panorama XMP panorama
pdf XMP pdf
pdfx XMP pdfx
photomech PhotoMechanic XMP
@@ -4047,6 +4056,8 @@ These tags belong to the ExifTool XMP-et family 1 group.
Tag Name Writable
-------- --------
+ OriginalImageHash string
+ OriginalImageHashType string
OriginalImageMD5 string
=head3 XMP exif Tags
@@ -4498,6 +4509,24 @@ These tags belong to the ExifTool XMP-hdr family 1 group.
CCVWhiteXY string
SceneReferred boolean
+=head3 XMP hdrgm Tags
+
+Tags used in Adobe gain map images.
+
+These tags belong to the ExifTool XMP-hdrgm family 1 group.
+
+ Tag Name Writable
+ -------- --------
+ BaseRenditionIsHDR boolean
+ GainMapMax real+
+ GainMapMin real+
+ Gamma real/+
+ HDRCapacityMax real
+ HDRCapacityMin real
+ OffsetHDR real+
+ OffsetSDR real+
+ Version string/
+
=head3 XMP ics Tags
Tags used by IDimager. Nested TagStructure structures are unrolled to an
@@ -5127,6 +5156,19 @@ These tags belong to the ExifTool XMP-mediapro family 1 group.
Status string
UserFields string+
+=head3 XMP panorama Tags
+
+Adobe Photoshop Panorama-profile tags.
+
+These tags belong to the ExifTool XMP-panorama family 1 group.
+
+ Tag Name Writable
+ -------- --------
+ Transformation string
+ VirtualFocalLength real
+ VirtualImageXCenter real
+ VirtualImageYCenter real
+
=head3 XMP pdf Tags
Adobe PDF namespace tags. The official XMP specification defines only
@@ -20439,6 +20481,8 @@ WX300, but not for panorama images.
6294 LensType int16u
6296 DistortionCorrParamsPresent int8u
6297 DistortionCorrParamsNumber int8u
+ 6444 AspectRatio int8u
+ 6792 AspectRatio int8u
=head3 Sony Tag2010f Tags
@@ -20469,6 +20513,7 @@ Valid for DSC-RX100M2, DSC-QX10/QX100.
4406 MinFocalLength int16u
4408 MaxFocalLength int16u
4412 SonyISO int16u
+ 6444 AspectRatio int8u
=head3 Sony Tag2010g Tags
@@ -20507,6 +20552,7 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.
6338 LensType int16u
6340 DistortionCorrParamsPresent int8u
6341 DistortionCorrParamsNumber int8u
+ 6488 AspectRatio int8u
=head3 Sony Tag2010h Tags
@@ -20546,6 +20592,7 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.
6386 LensType int16u
6388 DistortionCorrParamsPresent int8u
6389 DistortionCorrParamsNumber int8u
+ 6444 AspectRatio int8u
=head3 Sony Tag2010i Tags
@@ -20584,6 +20631,7 @@ RX100M5A/RX100M7/HX99.
6134 LensType int16u
6136 DistortionCorrParamsPresent int8u
6137 DistortionCorrParamsNumber int8u
+ 6284 AspectRatio int8u
=head3 Sony MeterInfo9 Tags
@@ -20825,6 +20873,9 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
42 Quality2 int8u
71 SonyImageHeight int16u~
83 ModelReleaseYear int8u~
+ 307 ShutterType int8u
+ 313 ShutterType int8u
+ 319 ShutterType int8u
=head3 Sony Tag9401 Tags
@@ -20836,6 +20887,7 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
1181 ISOInfo Sony ISOInfo
1185 ISOInfo Sony ISOInfo
1186 ISOInfo Sony ISOInfo
+ 1210 ISOInfo Sony ISOInfo
1437 ISOInfo Sony ISOInfo
1588 ISOInfo Sony ISOInfo
1590 ISOInfo Sony ISOInfo
@@ -24104,7 +24156,10 @@ chunk.
The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
images, but not all of these are extracted. Note that ExifTool currently
-writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
+writes only EXIF, IPTC and XMP tags in Jpeg2000 images, and EXIF and XMP in
+JXL images. ExifTool will read/write Brotli-compressed EXIF and XMP in JXL
+images, but the API Compress option must be set to create new EXIF and XMP
+in compressed format.
Tag ID Tag Name Writable
------ -------- --------
@@ -24114,6 +24169,9 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
'bfil' BinaryFilter no
'bidb' BinaryData no
'bpcc' BitsPerComponent no
+ 'brob' BrotliXMP XMP
+ BrotliEXIF EXIF
+ BrotliJUMB Jpeg2000
'c2sh' C2PASaltHash no
'cbor' CBORData CBOR
'cdef' ComponentDefinition no
@@ -24132,6 +24190,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
'ftbl' FragmentTable no
'ftyp' FileType Jpeg2000 FileType
'gtso' GraphicsTechnologyStandardOutput no
+ 'hrgm' GainMapImage no
'ihdr' ImageHeader Jpeg2000 ImageHeader
'inst' InstructionSet no
'jP ' JP2Signature no
@@ -24145,6 +24204,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
'jumb' JUMBFBox Jpeg2000
'jumd' JUMBFDescr Jpeg2000 JUMD
'jxlc' JXLCodestream no
+ 'jxlp' PartialJXLCodestream no
'lbl ' Label no
'mdat' MediaData no
'mp7b' MPEG7Binary no
@@ -28588,6 +28648,7 @@ and are not currently writable.
'auxC' AuxiliaryImageType no
'av1C' AV1Configuration QuickTime AV1Config
'clap' CleanAperture no
+ 'clli' ContentLightLevel QuickTime ContentLightLevel
'colr' ICC_Profile ICC_Profile
ColorRepresentation QuickTime ColorRep
'hvcC' HEVCConfiguration QuickTime HEVCConfig
@@ -28611,6 +28672,13 @@ and are not currently writable.
2.4 ChromaSamplePosition no
3 InitialDelaySamples? no
+=head3 QuickTime ContentLightLevel Tags
+
+ Index2 Tag Name Writable
+ ------ -------- --------
+ 0 MaxContentLightLevel no
+ 1 MaxPicAverageLightLevel no
+
=head3 QuickTime ColorRep Tags
Index1 Tag Name Writable
@@ -29607,6 +29675,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
'fmt ' AudioFormat RIFF AudioFormat
'gps0' GPSTrack QuickTime Stream
'gsen' GSensor QuickTime Stream
+ 'guan' Guano no
'iXML' IXML XMP XML
'id3 ' ID3 ID3
'inst' Instrument RIFF Instrument
@@ -37740,15 +37809,15 @@ These tags are extracted from RAR archive files.
=head3 ZIP RAR5 Tags
-These tags are extracted from RAR v5 archive files.
+These tags are extracted from RAR v5 and 7z archive files.
Tag Name Writable
-------- --------
ArchivedFileName no
CompressedSize no
+ FileVersion no
ModifyDate no
OperatingSystem no
- RARVersion no
UncompressedSize no
=head2 RTF Tags
@@ -38167,7 +38236,7 @@ FileName.
ICC_Profile ICC_Profile yes!
ID3Size File no
IPTC IPTC yes!
- ImageDataMD5 File no
+ ImageDataHash File no
ImageHeight File no
ImageWidth File no
JPEGDigest File no
@@ -38627,6 +38696,7 @@ for more details.
IFD0:XPAuthor
IFD0:XPKeywords
IFD0:XPSubject
+ ImageDataMD5 ImageDataHash yes
LargeTags CanonVRD yes
DLOData
EXIF
diff --git a/lib/Image/ExifTool/Validate.pm b/lib/Image/ExifTool/Validate.pm
index d2db087b..c629ae41 100644
--- a/lib/Image/ExifTool/Validate.pm
+++ b/lib/Image/ExifTool/Validate.pm
@@ -17,7 +17,7 @@ package Image::ExifTool::Validate;
use strict;
use vars qw($VERSION %exifSpec);
-$VERSION = '1.20';
+$VERSION = '1.21';
use Image::ExifTool qw(:Utils);
use Image::ExifTool::Exif;
@@ -56,6 +56,15 @@ use Image::ExifTool::Exif;
0x212 => 1, 0x9204 => 1, 0xa210 => 1, 0xa500 => 221,
0x213 => 1, 0x9205 => 1, 0xa214 => 1,
0x214 => 1, 0x9206 => 1, 0xa215 => 1,
+
+ # new Exif 3.0 tags
+ 0xa436 => 300,
+ 0xa437 => 300,
+ 0xa438 => 300,
+ 0xa439 => 300,
+ 0xa43a => 300,
+ 0xa43b => 300,
+ 0xa43c => 300,
);
# GPSVersionID numbers when each tag was introduced
@@ -147,6 +156,13 @@ my %stdFormat = (
0xc68d => 'int(16|32)u', 0xc791 => 'int(16|32)u',
0xc68e => 'int(16|32)u', 0xc792 => 'int(16|32)u',
0xc6d2 => '', 0xc793 => '(int16u|int32u|rational64u)',
+ # Exif 3.0 spec
+ 0x10e => 'string|utf8', 0xa430 => 'string|utf8', 0xa439 => 'string|utf8',
+ 0x10f => 'string|utf8', 0xa433 => 'string|utf8', 0xa43a => 'string|utf8',
+ 0x110 => 'string|utf8', 0xa434 => 'string|utf8', 0xa43b => 'string|utf8',
+ 0x131 => 'string|utf8', 0xa436 => 'string|utf8', 0xa43c => 'string|utf8',
+ 0x13b => 'string|utf8', 0xa437 => 'string|utf8', 0xa43a => 'string|utf8',
+ 0x8298 => 'string|utf8', 0xa438 => 'string|utf8',
},
);
diff --git a/lib/Image/ExifTool/WriteExif.pl b/lib/Image/ExifTool/WriteExif.pl
index 506a0755..4d3da0e8 100644
--- a/lib/Image/ExifTool/WriteExif.pl
+++ b/lib/Image/ExifTool/WriteExif.pl
@@ -420,15 +420,15 @@ sub ValidateImageData($$$;$)
}
#------------------------------------------------------------------------------
-# Add specified image data to ImageDataMD5 hash
+# Add specified image data to ImageDataHash hash
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) lookup for [tagInfo,value] based on tagID
-sub AddImageDataMD5($$$)
+sub AddImageDataHash($$$)
{
my ($et, $dirInfo, $offsetInfo) = @_;
my ($tagID, $offset, $buff);
my $verbose = $et->Options('Verbose');
- my $md5 = $$et{ImageDataMD5};
+ my $hash = $$et{ImageDataHash};
my $raf = $$dirInfo{RAF};
foreach $tagID (sort keys %$offsetInfo) {
@@ -451,12 +451,12 @@ sub AddImageDataMD5($$$)
my $size = shift @sizes;
next unless $offset =~ /^\d+$/ and $size and $size =~ /^\d+$/ and $size;
next unless $raf->Seek($offset, 0); # (offset is absolute)
- $total += $et->ImageDataMD5($raf, $size);
+ $total += $et->ImageDataHash($raf, $size);
}
if ($verbose) {
my $name = "$$dirInfo{DirName}:$$tagInfo{Name}";
$name =~ s/Offsets?|Start$//;
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $total bytes of $name data)\n");
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $total bytes of $name data)\n");
}
}
}
@@ -780,7 +780,7 @@ Entry: for (;;) {
$readFormat = $oldFormat = Get16u($dataPt, $entry+2);
$readCount = $oldCount = Get32u($dataPt, $entry+4);
undef $oldImageData;
- if ($oldFormat < 1 or $oldFormat > 13 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
+ if (($oldFormat < 1 or $oldFormat > 13) and $oldFormat != 129 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
my $msg = "Bad format ($oldFormat) for $name entry $index";
# patch to preserve invalid directory entries in SubIFD3 of
# various Kodak Z-series cameras (Z812, Z1085IS, Z1275)
@@ -1277,7 +1277,9 @@ NoWrite: next if $isNew > 0;
$et->Warn("Writing large value for $name",1);
}
# re-code if necessary
- if ($strEnc and $newFormName eq 'string') {
+ if ($newFormName eq 'utf8') {
+ $newValue = $et->Encode($newValue, 'UTF8');
+ } elsif ($strEnc and $newFormName eq 'string') {
$newValue = $et->Encode($newValue, $strEnc);
}
} else {
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index 1503697c..2ebab79d 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -1293,6 +1293,7 @@ sub SetNewValuesFromFile($$;@)
HexTagIDs => $$options{HexTagIDs},
IgnoreMinorErrors=>$$options{IgnoreMinorErrors},
IgnoreTags => $$options{IgnoreTags},
+ ImageHashType => $$options{ImageHashType},
Lang => $$options{Lang},
LargeFileSupport=> $$options{LargeFileSupport},
List => 1,
@@ -6880,14 +6881,14 @@ sub SetFileTime($$;$$$$)
}
#------------------------------------------------------------------------------
-# Add data to MD5 checksum
+# Add data to hash checksum
# Inputs: 0) ExifTool ref, 1) RAF ref, 2) data size (or undef to read to end of file),
# 3) data name (or undef for no warnings or messages), 4) flag for no verbose message
-# Returns: number of bytes read and MD5'd
-sub ImageDataMD5($$$;$$)
+# Returns: number of bytes read and hashed
+sub ImageDataHash($$$;$$)
{
my ($self, $raf, $size, $type, $noMsg) = @_;
- my $md5 = $$self{ImageDataMD5} or return;
+ my $hash = $$self{ImageDataHash} or return;
my ($bytesRead, $n) = (0, 65536);
my $buff;
for (;;) {
@@ -6900,11 +6901,11 @@ sub ImageDataMD5($$$;$$)
$self->Warn("Error reading $type data") if $type and defined $size;
last;
}
- $md5->add($buff);
+ $hash->add($buff);
$bytesRead += length $buff;
}
if ($$self{OPTIONS}{Verbose} and $bytesRead and $type and not $noMsg) {
- $self->VPrint(0, "$$self{INDENT}(ImageDataMD5: $bytesRead bytes of $type data)\n");
+ $self->VPrint(0, "$$self{INDENT}(ImageDataHash: $bytesRead bytes of $type data)\n");
}
return $bytesRead;
}
diff --git a/lib/Image/ExifTool/XMP.pm b/lib/Image/ExifTool/XMP.pm
index 92c85a4e..dfcff1f4 100644
--- a/lib/Image/ExifTool/XMP.pm
+++ b/lib/Image/ExifTool/XMP.pm
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
require Exporter;
-$VERSION = '3.59';
+$VERSION = '3.60';
@ISA = qw(Exporter);
@EXPORT_OK = qw(EscapeXML UnescapeXML);
@@ -144,6 +144,7 @@ my %xmpNS = (
xmpTPg => 'http://ns.adobe.com/xap/1.0/t/pg/',
xmpidq => 'http://ns.adobe.com/xmp/Identifier/qual/1.0/',
xmpPLUS => 'http://ns.adobe.com/xap/1.0/PLUS/',
+ panorama => 'http://ns.adobe.com/photoshop/1.0/panorama-profile',
dex => 'http://ns.optimasc.com/dex/1.0/',
mediapro => 'http://ns.iview-multimedia.com/mediapro/1.0/',
expressionmedia => 'http://ns.microsoft.com/expressionmedia/1.0/',
@@ -199,6 +200,7 @@ my %xmpNS = (
ast => 'http://ns.nikon.com/asteroid/1.0/',
nine => 'http://ns.nikon.com/nine/1.0/',
hdr_metadata => 'http://ns.adobe.com/hdr-metadata/1.0/',
+ hdrgm => 'http://ns.adobe.com/hdr-gain-map/1.0/',
);
# build reverse namespace lookup
@@ -709,6 +711,10 @@ my %sRangeMask = (
Name => 'xmpPLUS',
SubDirectory => { TagTable => 'Image::ExifTool::XMP::xmpPLUS' },
},
+ panorama => {
+ Name => 'panorama',
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::panorama' },
+ },
plus => {
Name => 'plus',
SubDirectory => { TagTable => 'Image::ExifTool::PLUS::XMP' },
@@ -909,6 +915,10 @@ my %sRangeMask = (
Name => 'hdr',
SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdr' },
},
+ hdrgm => {
+ Name => 'hdrgm',
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdrgm' },
+ },
);
# hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
@@ -2566,7 +2576,9 @@ my %sPantryItem = (
%xmpTableDefaults,
GROUPS => { 1 => 'XMP-et', 2 => 'Image' },
NAMESPACE => 'et',
- OriginalImageMD5 => { Notes => 'used to store ExifTool ImageDataMD5 digest' },
+ OriginalImageHash => { Notes => 'used to store ExifTool ImageDataHash digest' },
+ OriginalImageHashType => { Notes => "ImageHashType API setting, default 'MD5'" },
+ OriginalImageMD5 => { Notes => 'deprecated' },
);
# table to add tags in other namespaces
diff --git a/lib/Image/ExifTool/XMP2.pl b/lib/Image/ExifTool/XMP2.pl
index 983f4e6a..63613899 100644
--- a/lib/Image/ExifTool/XMP2.pl
+++ b/lib/Image/ExifTool/XMP2.pl
@@ -1388,6 +1388,17 @@ my %sSubVersion = (
ReuseAllowed => { Writable => 'boolean' },
);
+%Image::ExifTool::XMP::panorama = (
+ %xmpTableDefaults,
+ GROUPS => { 1 => 'XMP-panorama', 2 => 'Image' },
+ NAMESPACE => 'panorama',
+ NOTES => 'Adobe Photoshop Panorama-profile tags.',
+ Transformation => { },
+ VirtualFocalLength => { Writable => 'real' },
+ VirtualImageXCenter => { Writable => 'real' },
+ VirtualImageYCenter => { Writable => 'real' },
+);
+
# Creative Commons namespace properties (cc) (ref 5)
%Image::ExifTool::XMP::cc = (
%xmpTableDefaults,
@@ -2094,6 +2105,27 @@ my %sSubVersion = (
scene_referred => { Name => 'SceneReferred', Writable => 'boolean' },
);
+# HDR Gain Map metadata namespace
+%Image::ExifTool::XMP::hdrgm = (
+ %xmpTableDefaults,
+ GROUPS => { 1 => 'XMP-hdrgm', 2 => 'Image' },
+ NAMESPACE => 'hdrgm',
+ TABLE_DESC => 'XMP HDR Gain Map Metadata',
+ NOTES => 'Tags used in Adobe gain map images.',
+ Version => { Avoid => 1 },
+ BaseRenditionIsHDR => { Writable => 'boolean' },
+ # this is a pain in the ass: List items below may or may not be lists
+ # according to the Adobe specification -- I don't know how to handle tags
+ # with a variable format like this, so just make them lists here for now
+ OffsetSDR => { Writable => 'real', List => 'Seq' },
+ OffsetHDR => { Writable => 'real', List => 'Seq' },
+ HDRCapacityMin => { Writable => 'real' },
+ HDRCapacityMax => { Writable => 'real' },
+ GainMapMin => { Writable => 'real', List => 'Seq' },
+ GainMapMax => { Writable => 'real', List => 'Seq' },
+ Gamma => { Writable => 'real', List => 'Seq', Avoid => 1 },
+);
+
# SVG namespace properties (ref 9)
%Image::ExifTool::XMP::SVG = (
GROUPS => { 0 => 'SVG', 1 => 'SVG', 2 => 'Image' },
diff --git a/lib/Image/ExifTool/ZIP.pm b/lib/Image/ExifTool/ZIP.pm
index d58b8538..2fdef80a 100644
--- a/lib/Image/ExifTool/ZIP.pm
+++ b/lib/Image/ExifTool/ZIP.pm
@@ -20,7 +20,7 @@ use strict;
use vars qw($VERSION $warnString);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.29';
+$VERSION = '1.30';
sub WarnProc($) { $warnString = $_[0]; }
@@ -259,8 +259,8 @@ my %iWorkType = (
%Image::ExifTool::ZIP::RAR5 = (
GROUPS => { 2 => 'Other' },
VARS => { NO_ID => 1 },
- NOTES => 'These tags are extracted from RAR v5 archive files.',
- RARVersion => { },
+ NOTES => 'These tags are extracted from RAR v5 and 7z archive files.',
+ FileVersion => { },
CompressedSize => { },
ModifyDate => {
Groups => { 2 => 'Time' },
@@ -310,7 +310,7 @@ sub ProcessRAR($$)
$et->SetFileType();
SetByteOrder('II');
my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
- $et->HandleTag($tagTablePtr, 'RARVersion', 4);
+ $et->HandleTag($tagTablePtr, 'FileVersion', 'RAR v4');
$tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR');
for (;;) {
@@ -356,7 +356,7 @@ sub ProcessRAR($$)
return 0 unless $raf->Read($buff, 1) and $buff eq "\0";
$et->SetFileType();
my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
- $et->HandleTag($tagTablePtr, 'RARVersion', 5);
+ $et->HandleTag($tagTablePtr, 'FileVersion', 'RAR v5');
$$et{INDENT} .= '| ';
# loop through header blocks