exiftool_vendored 12.62.0 → 12.63.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +29 -1
  3. data/bin/MANIFEST +1 -0
  4. data/bin/META.json +4 -1
  5. data/bin/META.yml +4 -1
  6. data/bin/Makefile.PL +7 -1
  7. data/bin/README +10 -7
  8. data/bin/exiftool +22 -16
  9. data/bin/lib/Image/ExifTool/7Z.pm +793 -0
  10. data/bin/lib/Image/ExifTool/Canon.pm +1 -0
  11. data/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
  12. data/bin/lib/Image/ExifTool/Exif.pm +31 -14
  13. data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -3
  14. data/bin/lib/Image/ExifTool/GPS.pm +5 -2
  15. data/bin/lib/Image/ExifTool/Geotag.pm +4 -1
  16. data/bin/lib/Image/ExifTool/Jpeg2000.pm +225 -28
  17. data/bin/lib/Image/ExifTool/MPF.pm +2 -1
  18. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  19. data/bin/lib/Image/ExifTool/PNG.pm +6 -6
  20. data/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
  21. data/bin/lib/Image/ExifTool/QuickTime.pm +41 -12
  22. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +18 -18
  23. data/bin/lib/Image/ExifTool/README +1 -1
  24. data/bin/lib/Image/ExifTool/RIFF.pm +11 -9
  25. data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  26. data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  27. data/bin/lib/Image/ExifTool/Sony.pm +102 -8
  28. data/bin/lib/Image/ExifTool/TagLookup.pm +982 -953
  29. data/bin/lib/Image/ExifTool/TagNames.pod +75 -5
  30. data/bin/lib/Image/ExifTool/Validate.pm +17 -1
  31. data/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
  32. data/bin/lib/Image/ExifTool/Writer.pl +7 -6
  33. data/bin/lib/Image/ExifTool/XMP.pm +14 -2
  34. data/bin/lib/Image/ExifTool/XMP2.pl +32 -0
  35. data/bin/lib/Image/ExifTool/ZIP.pm +5 -5
  36. data/bin/lib/Image/ExifTool.pm +54 -33
  37. data/bin/lib/Image/ExifTool.pod +17 -6
  38. data/bin/perl-Image-ExifTool.spec +6 -6
  39. data/lib/exiftool_vendored/version.rb +1 -1
  40. metadata +3 -2
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 26407 tags, with 16869 unique tag names.
15
+ They contain a total of 26443 tags, with 16891 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  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.
798
798
  0xa433 LensMake ExifIFD string
799
799
  0xa434 LensModel ExifIFD string
800
800
  0xa435 LensSerialNumber ExifIFD string
801
+ 0xa436 Title ExifIFD string/
802
+ 0xa437 Photographer ExifIFD string
803
+ 0xa438 ImageEditor ExifIFD string
804
+ 0xa439 CameraFirmware ExifIFD string
805
+ 0xa43a RAWDevelopingSoftware ExifIFD string
806
+ 0xa43b ImageEditingSoftware ExifIFD string
807
+ 0xa43c MetadataEditingSoftware ExifIFD string
801
808
  0xa460 CompositeImage ExifIFD int16u
802
809
  0xa461 CompositeImageCount ExifIFD int16u[2]
803
810
  0xa462 CompositeImageExposureTimes ExifIFD undef
@@ -1306,6 +1313,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
1306
1313
  GPano XMP GPano
1307
1314
  GSpherical XMP GSpherical
1308
1315
  hdr XMP hdr
1316
+ hdrgm XMP hdrgm
1309
1317
  ics XMP ics
1310
1318
  iptcCore XMP iptcCore
1311
1319
  iptcExt XMP iptcExt
@@ -1319,6 +1327,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
1319
1327
  mwg-kw MWG Keywords
1320
1328
  mwg-rs MWG Regions
1321
1329
  nine Nikon nine
1330
+ panorama XMP panorama
1322
1331
  pdf XMP pdf
1323
1332
  pdfx XMP pdfx
1324
1333
  photomech PhotoMechanic XMP
@@ -4047,6 +4056,8 @@ These tags belong to the ExifTool XMP-et family 1 group.
4047
4056
 
4048
4057
  Tag Name Writable
4049
4058
  -------- --------
4059
+ OriginalImageHash string
4060
+ OriginalImageHashType string
4050
4061
  OriginalImageMD5 string
4051
4062
 
4052
4063
  =head3 XMP exif Tags
@@ -4498,6 +4509,24 @@ These tags belong to the ExifTool XMP-hdr family 1 group.
4498
4509
  CCVWhiteXY string
4499
4510
  SceneReferred boolean
4500
4511
 
4512
+ =head3 XMP hdrgm Tags
4513
+
4514
+ Tags used in Adobe gain map images.
4515
+
4516
+ These tags belong to the ExifTool XMP-hdrgm family 1 group.
4517
+
4518
+ Tag Name Writable
4519
+ -------- --------
4520
+ BaseRenditionIsHDR boolean
4521
+ GainMapMax real+
4522
+ GainMapMin real+
4523
+ Gamma real/+
4524
+ HDRCapacityMax real
4525
+ HDRCapacityMin real
4526
+ OffsetHDR real+
4527
+ OffsetSDR real+
4528
+ Version string/
4529
+
4501
4530
  =head3 XMP ics Tags
4502
4531
 
4503
4532
  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.
5127
5156
  Status string
5128
5157
  UserFields string+
5129
5158
 
5159
+ =head3 XMP panorama Tags
5160
+
5161
+ Adobe Photoshop Panorama-profile tags.
5162
+
5163
+ These tags belong to the ExifTool XMP-panorama family 1 group.
5164
+
5165
+ Tag Name Writable
5166
+ -------- --------
5167
+ Transformation string
5168
+ VirtualFocalLength real
5169
+ VirtualImageXCenter real
5170
+ VirtualImageYCenter real
5171
+
5130
5172
  =head3 XMP pdf Tags
5131
5173
 
5132
5174
  Adobe PDF namespace tags. The official XMP specification defines only
@@ -20439,6 +20481,8 @@ WX300, but not for panorama images.
20439
20481
  6294 LensType int16u
20440
20482
  6296 DistortionCorrParamsPresent int8u
20441
20483
  6297 DistortionCorrParamsNumber int8u
20484
+ 6444 AspectRatio int8u
20485
+ 6792 AspectRatio int8u
20442
20486
 
20443
20487
  =head3 Sony Tag2010f Tags
20444
20488
 
@@ -20469,6 +20513,7 @@ Valid for DSC-RX100M2, DSC-QX10/QX100.
20469
20513
  4406 MinFocalLength int16u
20470
20514
  4408 MaxFocalLength int16u
20471
20515
  4412 SonyISO int16u
20516
+ 6444 AspectRatio int8u
20472
20517
 
20473
20518
  =head3 Sony Tag2010g Tags
20474
20519
 
@@ -20507,6 +20552,7 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.
20507
20552
  6338 LensType int16u
20508
20553
  6340 DistortionCorrParamsPresent int8u
20509
20554
  6341 DistortionCorrParamsNumber int8u
20555
+ 6488 AspectRatio int8u
20510
20556
 
20511
20557
  =head3 Sony Tag2010h Tags
20512
20558
 
@@ -20546,6 +20592,7 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.
20546
20592
  6386 LensType int16u
20547
20593
  6388 DistortionCorrParamsPresent int8u
20548
20594
  6389 DistortionCorrParamsNumber int8u
20595
+ 6444 AspectRatio int8u
20549
20596
 
20550
20597
  =head3 Sony Tag2010i Tags
20551
20598
 
@@ -20584,6 +20631,7 @@ RX100M5A/RX100M7/HX99.
20584
20631
  6134 LensType int16u
20585
20632
  6136 DistortionCorrParamsPresent int8u
20586
20633
  6137 DistortionCorrParamsNumber int8u
20634
+ 6284 AspectRatio int8u
20587
20635
 
20588
20636
  =head3 Sony MeterInfo9 Tags
20589
20637
 
@@ -20825,6 +20873,9 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
20825
20873
  42 Quality2 int8u
20826
20874
  71 SonyImageHeight int16u~
20827
20875
  83 ModelReleaseYear int8u~
20876
+ 307 ShutterType int8u
20877
+ 313 ShutterType int8u
20878
+ 319 ShutterType int8u
20828
20879
 
20829
20880
  =head3 Sony Tag9401 Tags
20830
20881
 
@@ -20836,6 +20887,7 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
20836
20887
  1181 ISOInfo Sony ISOInfo
20837
20888
  1185 ISOInfo Sony ISOInfo
20838
20889
  1186 ISOInfo Sony ISOInfo
20890
+ 1210 ISOInfo Sony ISOInfo
20839
20891
  1437 ISOInfo Sony ISOInfo
20840
20892
  1588 ISOInfo Sony ISOInfo
20841
20893
  1590 ISOInfo Sony ISOInfo
@@ -24104,7 +24156,10 @@ chunk.
24104
24156
 
24105
24157
  The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
24106
24158
  images, but not all of these are extracted. Note that ExifTool currently
24107
- writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24159
+ writes only EXIF, IPTC and XMP tags in Jpeg2000 images, and EXIF and XMP in
24160
+ JXL images. ExifTool will read/write Brotli-compressed EXIF and XMP in JXL
24161
+ images, but the API Compress option must be set to create new EXIF and XMP
24162
+ in compressed format.
24108
24163
 
24109
24164
  Tag ID Tag Name Writable
24110
24165
  ------ -------- --------
@@ -24114,6 +24169,9 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24114
24169
  'bfil' BinaryFilter no
24115
24170
  'bidb' BinaryData no
24116
24171
  'bpcc' BitsPerComponent no
24172
+ 'brob' BrotliXMP XMP
24173
+ BrotliEXIF EXIF
24174
+ BrotliJUMB Jpeg2000
24117
24175
  'c2sh' C2PASaltHash no
24118
24176
  'cbor' CBORData CBOR
24119
24177
  'cdef' ComponentDefinition no
@@ -24132,6 +24190,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24132
24190
  'ftbl' FragmentTable no
24133
24191
  'ftyp' FileType Jpeg2000 FileType
24134
24192
  'gtso' GraphicsTechnologyStandardOutput no
24193
+ 'hrgm' GainMapImage no
24135
24194
  'ihdr' ImageHeader Jpeg2000 ImageHeader
24136
24195
  'inst' InstructionSet no
24137
24196
  'jP ' JP2Signature no
@@ -24145,6 +24204,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
24145
24204
  'jumb' JUMBFBox Jpeg2000
24146
24205
  'jumd' JUMBFDescr Jpeg2000 JUMD
24147
24206
  'jxlc' JXLCodestream no
24207
+ 'jxlp' PartialJXLCodestream no
24148
24208
  'lbl ' Label no
24149
24209
  'mdat' MediaData no
24150
24210
  'mp7b' MPEG7Binary no
@@ -28588,6 +28648,7 @@ and are not currently writable.
28588
28648
  'auxC' AuxiliaryImageType no
28589
28649
  'av1C' AV1Configuration QuickTime AV1Config
28590
28650
  'clap' CleanAperture no
28651
+ 'clli' ContentLightLevel QuickTime ContentLightLevel
28591
28652
  'colr' ICC_Profile ICC_Profile
28592
28653
  ColorRepresentation QuickTime ColorRep
28593
28654
  'hvcC' HEVCConfiguration QuickTime HEVCConfig
@@ -28611,6 +28672,13 @@ and are not currently writable.
28611
28672
  2.4 ChromaSamplePosition no
28612
28673
  3 InitialDelaySamples? no
28613
28674
 
28675
+ =head3 QuickTime ContentLightLevel Tags
28676
+
28677
+ Index2 Tag Name Writable
28678
+ ------ -------- --------
28679
+ 0 MaxContentLightLevel no
28680
+ 1 MaxPicAverageLightLevel no
28681
+
28614
28682
  =head3 QuickTime ColorRep Tags
28615
28683
 
28616
28684
  Index1 Tag Name Writable
@@ -29607,6 +29675,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
29607
29675
  'fmt ' AudioFormat RIFF AudioFormat
29608
29676
  'gps0' GPSTrack QuickTime Stream
29609
29677
  'gsen' GSensor QuickTime Stream
29678
+ 'guan' Guano no
29610
29679
  'iXML' IXML XMP XML
29611
29680
  'id3 ' ID3 ID3
29612
29681
  'inst' Instrument RIFF Instrument
@@ -37740,15 +37809,15 @@ These tags are extracted from RAR archive files.
37740
37809
 
37741
37810
  =head3 ZIP RAR5 Tags
37742
37811
 
37743
- These tags are extracted from RAR v5 archive files.
37812
+ These tags are extracted from RAR v5 and 7z archive files.
37744
37813
 
37745
37814
  Tag Name Writable
37746
37815
  -------- --------
37747
37816
  ArchivedFileName no
37748
37817
  CompressedSize no
37818
+ FileVersion no
37749
37819
  ModifyDate no
37750
37820
  OperatingSystem no
37751
- RARVersion no
37752
37821
  UncompressedSize no
37753
37822
 
37754
37823
  =head2 RTF Tags
@@ -38167,7 +38236,7 @@ FileName.
38167
38236
  ICC_Profile ICC_Profile yes!
38168
38237
  ID3Size File no
38169
38238
  IPTC IPTC yes!
38170
- ImageDataMD5 File no
38239
+ ImageDataHash File no
38171
38240
  ImageHeight File no
38172
38241
  ImageWidth File no
38173
38242
  JPEGDigest File no
@@ -38627,6 +38696,7 @@ for more details.
38627
38696
  IFD0:XPAuthor
38628
38697
  IFD0:XPKeywords
38629
38698
  IFD0:XPSubject
38699
+ ImageDataMD5 ImageDataHash yes
38630
38700
  LargeTags CanonVRD yes
38631
38701
  DLOData
38632
38702
  EXIF
@@ -17,7 +17,7 @@ package Image::ExifTool::Validate;
17
17
  use strict;
18
18
  use vars qw($VERSION %exifSpec);
19
19
 
20
- $VERSION = '1.20';
20
+ $VERSION = '1.21';
21
21
 
22
22
  use Image::ExifTool qw(:Utils);
23
23
  use Image::ExifTool::Exif;
@@ -56,6 +56,15 @@ use Image::ExifTool::Exif;
56
56
  0x212 => 1, 0x9204 => 1, 0xa210 => 1, 0xa500 => 221,
57
57
  0x213 => 1, 0x9205 => 1, 0xa214 => 1,
58
58
  0x214 => 1, 0x9206 => 1, 0xa215 => 1,
59
+
60
+ # new Exif 3.0 tags
61
+ 0xa436 => 300,
62
+ 0xa437 => 300,
63
+ 0xa438 => 300,
64
+ 0xa439 => 300,
65
+ 0xa43a => 300,
66
+ 0xa43b => 300,
67
+ 0xa43c => 300,
59
68
  );
60
69
 
61
70
  # GPSVersionID numbers when each tag was introduced
@@ -147,6 +156,13 @@ my %stdFormat = (
147
156
  0xc68d => 'int(16|32)u', 0xc791 => 'int(16|32)u',
148
157
  0xc68e => 'int(16|32)u', 0xc792 => 'int(16|32)u',
149
158
  0xc6d2 => '', 0xc793 => '(int16u|int32u|rational64u)',
159
+ # Exif 3.0 spec
160
+ 0x10e => 'string|utf8', 0xa430 => 'string|utf8', 0xa439 => 'string|utf8',
161
+ 0x10f => 'string|utf8', 0xa433 => 'string|utf8', 0xa43a => 'string|utf8',
162
+ 0x110 => 'string|utf8', 0xa434 => 'string|utf8', 0xa43b => 'string|utf8',
163
+ 0x131 => 'string|utf8', 0xa436 => 'string|utf8', 0xa43c => 'string|utf8',
164
+ 0x13b => 'string|utf8', 0xa437 => 'string|utf8', 0xa43a => 'string|utf8',
165
+ 0x8298 => 'string|utf8', 0xa438 => 'string|utf8',
150
166
  },
151
167
  );
152
168
 
@@ -420,15 +420,15 @@ sub ValidateImageData($$$;$)
420
420
  }
421
421
 
422
422
  #------------------------------------------------------------------------------
423
- # Add specified image data to ImageDataMD5 hash
423
+ # Add specified image data to ImageDataHash hash
424
424
  # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) lookup for [tagInfo,value] based on tagID
425
- sub AddImageDataMD5($$$)
425
+ sub AddImageDataHash($$$)
426
426
  {
427
427
  my ($et, $dirInfo, $offsetInfo) = @_;
428
428
  my ($tagID, $offset, $buff);
429
429
 
430
430
  my $verbose = $et->Options('Verbose');
431
- my $md5 = $$et{ImageDataMD5};
431
+ my $hash = $$et{ImageDataHash};
432
432
  my $raf = $$dirInfo{RAF};
433
433
 
434
434
  foreach $tagID (sort keys %$offsetInfo) {
@@ -451,12 +451,12 @@ sub AddImageDataMD5($$$)
451
451
  my $size = shift @sizes;
452
452
  next unless $offset =~ /^\d+$/ and $size and $size =~ /^\d+$/ and $size;
453
453
  next unless $raf->Seek($offset, 0); # (offset is absolute)
454
- $total += $et->ImageDataMD5($raf, $size);
454
+ $total += $et->ImageDataHash($raf, $size);
455
455
  }
456
456
  if ($verbose) {
457
457
  my $name = "$$dirInfo{DirName}:$$tagInfo{Name}";
458
458
  $name =~ s/Offsets?|Start$//;
459
- $et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $total bytes of $name data)\n");
459
+ $et->VPrint(0, "$$et{INDENT}(ImageDataHash: $total bytes of $name data)\n");
460
460
  }
461
461
  }
462
462
  }
@@ -780,7 +780,7 @@ Entry: for (;;) {
780
780
  $readFormat = $oldFormat = Get16u($dataPt, $entry+2);
781
781
  $readCount = $oldCount = Get32u($dataPt, $entry+4);
782
782
  undef $oldImageData;
783
- if ($oldFormat < 1 or $oldFormat > 13 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
783
+ if (($oldFormat < 1 or $oldFormat > 13) and $oldFormat != 129 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
784
784
  my $msg = "Bad format ($oldFormat) for $name entry $index";
785
785
  # patch to preserve invalid directory entries in SubIFD3 of
786
786
  # various Kodak Z-series cameras (Z812, Z1085IS, Z1275)
@@ -1277,7 +1277,9 @@ NoWrite: next if $isNew > 0;
1277
1277
  $et->Warn("Writing large value for $name",1);
1278
1278
  }
1279
1279
  # re-code if necessary
1280
- if ($strEnc and $newFormName eq 'string') {
1280
+ if ($newFormName eq 'utf8') {
1281
+ $newValue = $et->Encode($newValue, 'UTF8');
1282
+ } elsif ($strEnc and $newFormName eq 'string') {
1281
1283
  $newValue = $et->Encode($newValue, $strEnc);
1282
1284
  }
1283
1285
  } else {
@@ -1293,6 +1293,7 @@ sub SetNewValuesFromFile($$;@)
1293
1293
  HexTagIDs => $$options{HexTagIDs},
1294
1294
  IgnoreMinorErrors=>$$options{IgnoreMinorErrors},
1295
1295
  IgnoreTags => $$options{IgnoreTags},
1296
+ ImageHashType => $$options{ImageHashType},
1296
1297
  Lang => $$options{Lang},
1297
1298
  LargeFileSupport=> $$options{LargeFileSupport},
1298
1299
  List => 1,
@@ -6880,14 +6881,14 @@ sub SetFileTime($$;$$$$)
6880
6881
  }
6881
6882
 
6882
6883
  #------------------------------------------------------------------------------
6883
- # Add data to MD5 checksum
6884
+ # Add data to hash checksum
6884
6885
  # Inputs: 0) ExifTool ref, 1) RAF ref, 2) data size (or undef to read to end of file),
6885
6886
  # 3) data name (or undef for no warnings or messages), 4) flag for no verbose message
6886
- # Returns: number of bytes read and MD5'd
6887
- sub ImageDataMD5($$$;$$)
6887
+ # Returns: number of bytes read and hashed
6888
+ sub ImageDataHash($$$;$$)
6888
6889
  {
6889
6890
  my ($self, $raf, $size, $type, $noMsg) = @_;
6890
- my $md5 = $$self{ImageDataMD5} or return;
6891
+ my $hash = $$self{ImageDataHash} or return;
6891
6892
  my ($bytesRead, $n) = (0, 65536);
6892
6893
  my $buff;
6893
6894
  for (;;) {
@@ -6900,11 +6901,11 @@ sub ImageDataMD5($$$;$$)
6900
6901
  $self->Warn("Error reading $type data") if $type and defined $size;
6901
6902
  last;
6902
6903
  }
6903
- $md5->add($buff);
6904
+ $hash->add($buff);
6904
6905
  $bytesRead += length $buff;
6905
6906
  }
6906
6907
  if ($$self{OPTIONS}{Verbose} and $bytesRead and $type and not $noMsg) {
6907
- $self->VPrint(0, "$$self{INDENT}(ImageDataMD5: $bytesRead bytes of $type data)\n");
6908
+ $self->VPrint(0, "$$self{INDENT}(ImageDataHash: $bytesRead bytes of $type data)\n");
6908
6909
  }
6909
6910
  return $bytesRead;
6910
6911
  }
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.59';
53
+ $VERSION = '3.60';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -144,6 +144,7 @@ my %xmpNS = (
144
144
  xmpTPg => 'http://ns.adobe.com/xap/1.0/t/pg/',
145
145
  xmpidq => 'http://ns.adobe.com/xmp/Identifier/qual/1.0/',
146
146
  xmpPLUS => 'http://ns.adobe.com/xap/1.0/PLUS/',
147
+ panorama => 'http://ns.adobe.com/photoshop/1.0/panorama-profile',
147
148
  dex => 'http://ns.optimasc.com/dex/1.0/',
148
149
  mediapro => 'http://ns.iview-multimedia.com/mediapro/1.0/',
149
150
  expressionmedia => 'http://ns.microsoft.com/expressionmedia/1.0/',
@@ -199,6 +200,7 @@ my %xmpNS = (
199
200
  ast => 'http://ns.nikon.com/asteroid/1.0/',
200
201
  nine => 'http://ns.nikon.com/nine/1.0/',
201
202
  hdr_metadata => 'http://ns.adobe.com/hdr-metadata/1.0/',
203
+ hdrgm => 'http://ns.adobe.com/hdr-gain-map/1.0/',
202
204
  );
203
205
 
204
206
  # build reverse namespace lookup
@@ -709,6 +711,10 @@ my %sRangeMask = (
709
711
  Name => 'xmpPLUS',
710
712
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::xmpPLUS' },
711
713
  },
714
+ panorama => {
715
+ Name => 'panorama',
716
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::panorama' },
717
+ },
712
718
  plus => {
713
719
  Name => 'plus',
714
720
  SubDirectory => { TagTable => 'Image::ExifTool::PLUS::XMP' },
@@ -909,6 +915,10 @@ my %sRangeMask = (
909
915
  Name => 'hdr',
910
916
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdr' },
911
917
  },
918
+ hdrgm => {
919
+ Name => 'hdrgm',
920
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdrgm' },
921
+ },
912
922
  );
913
923
 
914
924
  # hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
@@ -2566,7 +2576,9 @@ my %sPantryItem = (
2566
2576
  %xmpTableDefaults,
2567
2577
  GROUPS => { 1 => 'XMP-et', 2 => 'Image' },
2568
2578
  NAMESPACE => 'et',
2569
- OriginalImageMD5 => { Notes => 'used to store ExifTool ImageDataMD5 digest' },
2579
+ OriginalImageHash => { Notes => 'used to store ExifTool ImageDataHash digest' },
2580
+ OriginalImageHashType => { Notes => "ImageHashType API setting, default 'MD5'" },
2581
+ OriginalImageMD5 => { Notes => 'deprecated' },
2570
2582
  );
2571
2583
 
2572
2584
  # table to add tags in other namespaces
@@ -1388,6 +1388,17 @@ my %sSubVersion = (
1388
1388
  ReuseAllowed => { Writable => 'boolean' },
1389
1389
  );
1390
1390
 
1391
+ %Image::ExifTool::XMP::panorama = (
1392
+ %xmpTableDefaults,
1393
+ GROUPS => { 1 => 'XMP-panorama', 2 => 'Image' },
1394
+ NAMESPACE => 'panorama',
1395
+ NOTES => 'Adobe Photoshop Panorama-profile tags.',
1396
+ Transformation => { },
1397
+ VirtualFocalLength => { Writable => 'real' },
1398
+ VirtualImageXCenter => { Writable => 'real' },
1399
+ VirtualImageYCenter => { Writable => 'real' },
1400
+ );
1401
+
1391
1402
  # Creative Commons namespace properties (cc) (ref 5)
1392
1403
  %Image::ExifTool::XMP::cc = (
1393
1404
  %xmpTableDefaults,
@@ -2094,6 +2105,27 @@ my %sSubVersion = (
2094
2105
  scene_referred => { Name => 'SceneReferred', Writable => 'boolean' },
2095
2106
  );
2096
2107
 
2108
+ # HDR Gain Map metadata namespace
2109
+ %Image::ExifTool::XMP::hdrgm = (
2110
+ %xmpTableDefaults,
2111
+ GROUPS => { 1 => 'XMP-hdrgm', 2 => 'Image' },
2112
+ NAMESPACE => 'hdrgm',
2113
+ TABLE_DESC => 'XMP HDR Gain Map Metadata',
2114
+ NOTES => 'Tags used in Adobe gain map images.',
2115
+ Version => { Avoid => 1 },
2116
+ BaseRenditionIsHDR => { Writable => 'boolean' },
2117
+ # this is a pain in the ass: List items below may or may not be lists
2118
+ # according to the Adobe specification -- I don't know how to handle tags
2119
+ # with a variable format like this, so just make them lists here for now
2120
+ OffsetSDR => { Writable => 'real', List => 'Seq' },
2121
+ OffsetHDR => { Writable => 'real', List => 'Seq' },
2122
+ HDRCapacityMin => { Writable => 'real' },
2123
+ HDRCapacityMax => { Writable => 'real' },
2124
+ GainMapMin => { Writable => 'real', List => 'Seq' },
2125
+ GainMapMax => { Writable => 'real', List => 'Seq' },
2126
+ Gamma => { Writable => 'real', List => 'Seq', Avoid => 1 },
2127
+ );
2128
+
2097
2129
  # SVG namespace properties (ref 9)
2098
2130
  %Image::ExifTool::XMP::SVG = (
2099
2131
  GROUPS => { 0 => 'SVG', 1 => 'SVG', 2 => 'Image' },
@@ -20,7 +20,7 @@ use strict;
20
20
  use vars qw($VERSION $warnString);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
 
23
- $VERSION = '1.29';
23
+ $VERSION = '1.30';
24
24
 
25
25
  sub WarnProc($) { $warnString = $_[0]; }
26
26
 
@@ -259,8 +259,8 @@ my %iWorkType = (
259
259
  %Image::ExifTool::ZIP::RAR5 = (
260
260
  GROUPS => { 2 => 'Other' },
261
261
  VARS => { NO_ID => 1 },
262
- NOTES => 'These tags are extracted from RAR v5 archive files.',
263
- RARVersion => { },
262
+ NOTES => 'These tags are extracted from RAR v5 and 7z archive files.',
263
+ FileVersion => { },
264
264
  CompressedSize => { },
265
265
  ModifyDate => {
266
266
  Groups => { 2 => 'Time' },
@@ -310,7 +310,7 @@ sub ProcessRAR($$)
310
310
  $et->SetFileType();
311
311
  SetByteOrder('II');
312
312
  my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
313
- $et->HandleTag($tagTablePtr, 'RARVersion', 4);
313
+ $et->HandleTag($tagTablePtr, 'FileVersion', 'RAR v4');
314
314
  $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR');
315
315
 
316
316
  for (;;) {
@@ -356,7 +356,7 @@ sub ProcessRAR($$)
356
356
  return 0 unless $raf->Read($buff, 1) and $buff eq "\0";
357
357
  $et->SetFileType();
358
358
  my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
359
- $et->HandleTag($tagTablePtr, 'RARVersion', 5);
359
+ $et->HandleTag($tagTablePtr, 'FileVersion', 'RAR v5');
360
360
  $$et{INDENT} .= '| ';
361
361
 
362
362
  # loop through header blocks