exiftool_vendored 12.38.0 → 12.39.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +17 -0
  3. data/bin/MANIFEST +1 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +45 -45
  7. data/bin/exiftool +46 -46
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
  23. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. data/bin/lib/Image/ExifTool/Canon.pm +1 -1
  25. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. data/bin/lib/Image/ExifTool/Exif.pm +9 -1
  40. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIR.pm +16 -4
  44. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  47. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  50. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  56. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  61. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  63. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  64. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  66. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  67. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  68. data/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  69. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  70. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  72. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  74. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  75. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  77. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  96. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  97. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  98. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  101. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  110. data/bin/lib/Image/ExifTool/Matroska.pm +9 -5
  111. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  112. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  114. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  115. data/bin/lib/Image/ExifTool/Nikon.pm +897 -184
  116. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  117. data/bin/lib/Image/ExifTool/NikonCustom.pm +519 -6
  118. data/bin/lib/Image/ExifTool/NikonSettings.pm +17 -18
  119. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  120. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  123. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  125. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  126. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  127. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  128. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  131. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PNG.pm +28 -8
  133. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  134. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  135. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  138. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  139. data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  140. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  143. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  145. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  147. data/bin/lib/Image/ExifTool/QuickTime.pm +1 -1
  148. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +14 -3
  149. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  150. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  151. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Shift.pl +3 -1
  162. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  164. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  166. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  168. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  169. data/bin/lib/Image/ExifTool/TagLookup.pm +4560 -4474
  170. data/bin/lib/Image/ExifTool/TagNames.pod +320 -21
  171. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  175. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  178. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  179. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WritePNG.pl +30 -10
  184. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  185. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  186. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +2 -1
  187. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  188. data/bin/lib/Image/ExifTool/Writer.pl +6 -5
  189. data/bin/lib/Image/ExifTool/XMP.pm +40 -22
  190. data/bin/lib/Image/ExifTool/XMP2.pl +3 -2
  191. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  192. data/bin/lib/Image/ExifTool/ZIP.pm +10 -2
  193. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  194. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  195. data/bin/lib/Image/ExifTool.pm +11 -3
  196. data/bin/lib/Image/ExifTool.pod +64 -63
  197. data/bin/perl-Image-ExifTool.spec +43 -43
  198. data/lib/exiftool_vendored/version.rb +1 -1
  199. metadata +2 -2
@@ -61,7 +61,7 @@ sub HexEncode($)
61
61
 
62
62
  #------------------------------------------------------------------------------
63
63
  # Write profile chunk (possibly compressed if Zlib is available)
64
- # Inputs: 0) outfile, 1) Raw profile type, 2) data ref
64
+ # Inputs: 0) outfile, 1) Raw profile type (SCALAR ref for iCCP name), 2) data ref
65
65
  # 3) profile header type (undef if not a text profile)
66
66
  # Returns: 1 on success
67
67
  sub WriteProfile($$$;$)
@@ -73,10 +73,10 @@ sub WriteProfile($$$;$)
73
73
  }
74
74
  if (not defined $profile) {
75
75
  # write ICC profile as compressed iCCP chunk if possible
76
- if ($rawType eq 'icm') {
76
+ if (ref $rawType) {
77
77
  return 0 unless $deflate;
78
78
  $chunk = 'iCCP';
79
- $prefix = "$rawType\0\0";
79
+ $prefix = "$$rawType\0\0";
80
80
  } else {
81
81
  $chunk = $rawType;
82
82
  if ($rawType eq $stdCase{zxif}) {
@@ -116,7 +116,7 @@ sub WriteProfile($$$;$)
116
116
  }
117
117
 
118
118
  #------------------------------------------------------------------------------
119
- # Add iCCP chunk to the PNG image if necessary (must come before PLTE and IDAT)
119
+ # Add iCCP-related chunks to the PNG image if necessary (must come before PLTE and IDAT)
120
120
  # Inputs: 0) ExifTool object ref, 1) output file or scalar ref
121
121
  # Returns: true on success
122
122
  sub Add_iCCP($$)
@@ -127,9 +127,28 @@ sub Add_iCCP($$)
127
127
  my $tagTablePtr = Image::ExifTool::GetTagTable('Image::ExifTool::ICC_Profile::Main');
128
128
  my %dirInfo = ( Parent => 'PNG', DirName => 'ICC_Profile' );
129
129
  my $buff = $et->WriteDirectory(\%dirInfo, $tagTablePtr);
130
- if (defined $buff and length $buff and WriteProfile($outfile, 'icm', \$buff)) {
131
- $et->VPrint(0, "Created ICC profile\n");
132
- delete $$et{ADD_DIRS}{ICC_Profile}; # don't add it again
130
+ if (defined $buff and length $buff) {
131
+ my $profileName = $et->GetNewValue($Image::ExifTool::PNG::Main{'iCCP-name'});
132
+ $profileName = 'icm' unless defined $profileName;
133
+ if (WriteProfile($outfile, \$profileName, \$buff)) {
134
+ $et->VPrint(0, "Created ICC profile with name '${profileName}'\n");
135
+ delete $$et{ADD_DIRS}{ICC_Profile}; # don't add it again
136
+ }
137
+ }
138
+ }
139
+ # must also add sRGB and gAMA before PLTE and IDAT
140
+ if ($$et{ADD_PNG}) {
141
+ my ($tag, %addBeforePLTE);
142
+ foreach $tag (qw(sRGB gAMA)) {
143
+ next unless $$et{ADD_PNG}{$tag};
144
+ $addBeforePLTE{$tag} = $$et{ADD_PNG}{$tag};
145
+ delete $$et{ADD_PNG}{$tag};
146
+ }
147
+ if (%addBeforePLTE) {
148
+ my $save = $$et{ADD_PNG};
149
+ $$et{ADD_PNG} = \%addBeforePLTE;
150
+ AddChunks($et, $outfile);
151
+ $$et{ADD_PNG} = $save;
133
152
  }
134
153
  }
135
154
  return 1;
@@ -244,9 +263,10 @@ sub AddChunks($$;@)
244
263
  # write any outstanding PNG tags
245
264
  foreach $tag (sort keys %$addTags) {
246
265
  my $tagInfo = $$addTags{$tag};
266
+ next if $$tagInfo{FakeTag}; # (iCCP-name)
247
267
  my $nvHash = $et->GetNewValueHash($tagInfo);
248
- # (native PNG information is always preferred, so don't check IsCreating)
249
- next unless $et->IsOverwriting($nvHash);
268
+ # (native PNG information is always preferred, so don't rely on just IsCreating)
269
+ next unless $$nvHash{IsCreating} or $et->IsOverwriting($nvHash) > 0;
250
270
  my $val = $et->GetNewValue($nvHash);
251
271
  if (defined $val) {
252
272
  next if $$nvHash{EditOnly};
@@ -381,7 +401,7 @@ strings).
381
401
 
382
402
  =head1 AUTHOR
383
403
 
384
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
404
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
385
405
 
386
406
  This library is free software; you can redistribute it and/or modify it
387
407
  under the same terms as Perl itself.
@@ -257,7 +257,7 @@ default resource name, and applied if no appended name is provided.
257
257
 
258
258
  =head1 AUTHOR
259
259
 
260
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
260
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
261
261
 
262
262
  This library is free software; you can redistribute it and/or modify it
263
263
  under the same terms as Perl itself.
@@ -687,7 +687,7 @@ Thanks to Tim Kordick for his help testing the EPS writer.
687
687
 
688
688
  =head1 AUTHOR
689
689
 
690
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
690
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
691
691
 
692
692
  This library is free software; you can redistribute it and/or modify it
693
693
  under the same terms as Perl itself.
@@ -1335,6 +1335,7 @@ sub WriteQuickTime($$$)
1335
1335
  # write the new atom if it was modified
1336
1336
  if (defined $newData) {
1337
1337
  my $sizeDiff = length($buff) - length($newData);
1338
+ # pad to original size if specified, otherwise give verbose message about the changed size
1338
1339
  if ($sizeDiff > 0 and $$tagInfo{PreservePadding} and $et->Options('QuickTimePad')) {
1339
1340
  $newData .= "\0" x $sizeDiff;
1340
1341
  $et->VPrint(1, " ($$tagInfo{Name} padded to original size)");
@@ -1922,7 +1923,7 @@ QuickTime-based file formats like MOV and MP4.
1922
1923
 
1923
1924
  =head1 AUTHOR
1924
1925
 
1925
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1926
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1926
1927
 
1927
1928
  This library is free software; you can redistribute it and/or modify it
1928
1929
  under the same terms as Perl itself.
@@ -1619,7 +1619,7 @@ This file contains routines to write XMP metadata.
1619
1619
 
1620
1620
  =head1 AUTHOR
1621
1621
 
1622
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1622
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1623
1623
 
1624
1624
  This library is free software; you can redistribute it and/or modify it
1625
1625
  under the same terms as Perl itself.
@@ -136,9 +136,9 @@ my %rawType = (
136
136
  my @delGroups = qw(
137
137
  Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
138
138
  APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
139
- FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD
140
- IPTC ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD Microsoft MIE
141
- MPF NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG PNG-pHYs
139
+ FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
140
+ ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD Microsoft MIE MPF
141
+ NikonApp NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG PNG-pHYs
142
142
  PrintIM QuickTime RMETA RSRC SubIFD Trailer UserData XML XML-* XMP XMP-*
143
143
  );
144
144
  # family 2 group names that we can delete
@@ -3532,7 +3532,8 @@ PAT: foreach $pattern (@patterns) {
3532
3532
  # 2) optional tag value (before RawConv) if deleting specific values
3533
3533
  # Returns: >0 - tag should be overwritten
3534
3534
  # =0 - the tag should be preserved
3535
- # <0 - not sure, we need the value to know
3535
+ # <0 - not sure, we need the old value to tell (if there is no old value
3536
+ # then the tag should be written if $$nvHash{IsCreating} is true)
3536
3537
  # Notes: $$nvHash{Value} is updated with the new value when shifting a value
3537
3538
  sub IsOverwriting($$;$)
3538
3539
  {
@@ -7036,7 +7037,7 @@ used routines.
7036
7037
 
7037
7038
  =head1 AUTHOR
7038
7039
 
7039
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
7040
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
7040
7041
 
7041
7042
  This library is free software; you can redistribute it and/or modify it
7042
7043
  under the same terms as Perl itself.
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.50';
53
+ $VERSION = '3.51';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -192,6 +192,9 @@ my %xmpNS = (
192
192
  GettyImagesGIFT => 'http://xmp.gettyimages.com/gift/1.0/',
193
193
  LImage => 'http://ns.leiainc.com/photos/1.0/image/',
194
194
  Profile => 'http://ns.google.com/photos/dd/1.0/profile/',
195
+ sdc => 'http://ns.nikon.com/sdc/1.0/',
196
+ ast => 'http://ns.nikon.com/asteroid/1.0/',
197
+ nine => 'http://ns.nikon.com/nine/1.0/',
195
198
  );
196
199
 
197
200
  # build reverse namespace lookup
@@ -878,6 +881,18 @@ my %sRangeMask = (
878
881
  Name => 'Device',
879
882
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::Device' },
880
883
  },
884
+ sdc => {
885
+ Name => 'sdc',
886
+ SubDirectory => { TagTable => 'Image::ExifTool::Nikon::sdc' },
887
+ },
888
+ ast => {
889
+ Name => 'ast',
890
+ SubDirectory => { TagTable => 'Image::ExifTool::Nikon::ast' },
891
+ },
892
+ nine => {
893
+ Name => 'nine',
894
+ SubDirectory => { TagTable => 'Image::ExifTool::Nikon::nine' },
895
+ },
881
896
  );
882
897
 
883
898
  # hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
@@ -3438,26 +3453,6 @@ NoLoop:
3438
3453
  my $key = $et->FoundTag($tagInfo, $val) or return 0;
3439
3454
  # save original components of rational numbers (used when copying)
3440
3455
  $$et{RATIONAL}{$key} = $rational if defined $rational;
3441
- # allow read-only subdirectories (eg. embedded base64 XMP/IPTC in NKSC files)
3442
- if ($$tagInfo{SubDirectory} and not $$et{IsWriting}) {
3443
- my $subdir = $$tagInfo{SubDirectory};
3444
- my $dataPt = ref $$et{VALUE}{$key} ? $$et{VALUE}{$key} : \$$et{VALUE}{$key};
3445
- # process subdirectory information
3446
- my %dirInfo = (
3447
- DirName => $$subdir{DirName} || $$tagInfo{Name},
3448
- DataPt => $dataPt,
3449
- DirLen => length $$dataPt,
3450
- IsExtended => 1, # (hack to avoid Duplicate warning for embedded XMP)
3451
- );
3452
- my $oldOrder = GetByteOrder();
3453
- SetByteOrder($$subdir{ByteOrder}) if $$subdir{ByteOrder};
3454
- my $oldNS = $$et{definedNS};
3455
- delete $$et{definedNS};
3456
- my $subTablePtr = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
3457
- $et->ProcessDirectory(\%dirInfo, $subTablePtr, $$subdir{ProcessProc});
3458
- SetByteOrder($oldOrder);
3459
- $$et{definedNS} = $oldNS;
3460
- }
3461
3456
  # save structure/list information if necessary
3462
3457
  if (@structProps and (@structProps > 1 or defined $structProps[0][1]) and
3463
3458
  not $$et{NO_STRUCT})
@@ -3488,6 +3483,29 @@ NoLoop:
3488
3483
  my $tagID = join('/',@$props);
3489
3484
  $et->VerboseInfo($tagID, $tagInfo, Value => $rawVal || $val);
3490
3485
  }
3486
+ # allow read-only subdirectories (eg. embedded base64 XMP/IPTC in NKSC files)
3487
+ if ($$tagInfo{SubDirectory} and not $$et{IsWriting}) {
3488
+ my $subdir = $$tagInfo{SubDirectory};
3489
+ my $dataPt = ref $$et{VALUE}{$key} ? $$et{VALUE}{$key} : \$$et{VALUE}{$key};
3490
+ # decode if necessary (eg. Nikon XMP-ast:XMLPackets)
3491
+ $dataPt = DecodeBase64($$dataPt) if $$tagInfo{Encoding} and $$tagInfo{Encoding} eq 'Base64';
3492
+ # process subdirectory information
3493
+ my %dirInfo = (
3494
+ DirName => $$subdir{DirName} || $$tagInfo{Name},
3495
+ DataPt => $dataPt,
3496
+ DirLen => length $$dataPt,
3497
+ IgnoreProp => $$subdir{IgnoreProp}, # (allow XML to ignore specified properties)
3498
+ IsExtended => 1, # (hack to avoid Duplicate warning for embedded XMP)
3499
+ );
3500
+ my $oldOrder = GetByteOrder();
3501
+ SetByteOrder($$subdir{ByteOrder}) if $$subdir{ByteOrder};
3502
+ my $oldNS = $$et{definedNS};
3503
+ delete $$et{definedNS};
3504
+ my $subTablePtr = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
3505
+ $et->ProcessDirectory(\%dirInfo, $subTablePtr, $$subdir{ProcessProc});
3506
+ SetByteOrder($oldOrder);
3507
+ $$et{definedNS} = $oldNS;
3508
+ }
3491
3509
  return 1;
3492
3510
  }
3493
3511
 
@@ -4347,7 +4365,7 @@ information.
4347
4365
 
4348
4366
  =head1 AUTHOR
4349
4367
 
4350
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
4368
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
4351
4369
 
4352
4370
  This library is free software; you can redistribute it and/or modify it
4353
4371
  under the same terms as Perl itself.
@@ -16,6 +16,7 @@
16
16
  # 11) http://www.extensis.com/en/support/kb_article.jsp?articleNumber=6102211
17
17
  # 12) XMPSpecificationPart3_May2013, page 58
18
18
  # 13) https://developer.android.com/training/camera2/Dynamic-depth-v1.0.pdf
19
+ # 14) http://www.iptc.org/standards/photo-metadata/iptc-standard/
19
20
  #------------------------------------------------------------------------------
20
21
 
21
22
  package Image::ExifTool::XMP;
@@ -530,7 +531,7 @@ my %sImageRegion = ( # new in 1.5
530
531
  rRole => { Namespace => 'Iptc4xmpExt', FlatName => 'Role', List => 'Bag', Struct => \%sEntity },
531
532
  );
532
533
 
533
- # IPTC Extension namespace properties (Iptc4xmpExt) (ref 4)
534
+ # IPTC Extension namespace properties (Iptc4xmpExt) (ref 4, 14)
534
535
  %Image::ExifTool::XMP::iptcExt = (
535
536
  %xmpTableDefaults,
536
537
  GROUPS => { 1 => 'XMP-iptcExt', 2 => 'Author' },
@@ -2125,7 +2126,7 @@ This file contains definitions for less common XMP namespaces.
2125
2126
 
2126
2127
  =head1 AUTHOR
2127
2128
 
2128
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2129
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2129
2130
 
2130
2131
  This library is free software; you can redistribute it and/or modify it
2131
2132
  under the same terms as Perl itself.
@@ -855,7 +855,7 @@ information.
855
855
 
856
856
  =head1 AUTHOR
857
857
 
858
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
858
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
859
859
 
860
860
  This library is free software; you can redistribute it and/or modify it
861
861
  under the same terms as Perl itself.
@@ -19,7 +19,7 @@ use strict;
19
19
  use vars qw($VERSION $warnString);
20
20
  use Image::ExifTool qw(:DataAccess :Utils);
21
21
 
22
- $VERSION = '1.26';
22
+ $VERSION = '1.27';
23
23
 
24
24
  sub WarnProc($) { $warnString = $_[0]; }
25
25
 
@@ -125,6 +125,7 @@ my %iWorkType = (
125
125
  Name => 'ZipFileName',
126
126
  Format => 'string[$$self{ZipFileNameLength}]',
127
127
  },
128
+ _com => 'ZipFileComment',
128
129
  );
129
130
 
130
131
  # GNU ZIP tags (ref 3)
@@ -380,6 +381,8 @@ sub HandleMember($$;$)
380
381
  $et->HandleTag($tagTablePtr, 9, $member->compressedSize());
381
382
  $et->HandleTag($tagTablePtr, 11, $member->uncompressedSize());
382
383
  $et->HandleTag($tagTablePtr, 15, $member->fileName());
384
+ my $com = $member->fileComment();
385
+ $et->HandleTag($tagTablePtr, '_com', $com) if defined $com and length $com;
383
386
  }
384
387
 
385
388
  #------------------------------------------------------------------------------
@@ -448,6 +451,10 @@ sub ProcessZIP($$)
448
451
  $et->Warn("$err reading ZIP file");
449
452
  last;
450
453
  }
454
+ # extract zip file comment
455
+ my $comment = $zip->zipfileComment();
456
+ $et->FoundTag(Comment => $comment) if defined $comment and length $comment;
457
+
451
458
  $$dirInfo{ZIP} = $zip;
452
459
 
453
460
  # check for an Office Open file (DOCX, etc)
@@ -655,6 +662,7 @@ sub ProcessZIP($$)
655
662
  DataLen => 30 + $len,
656
663
  DirStart => 0,
657
664
  DirLen => 30 + $len,
665
+ MixedTags => 1, # (to ignore FileComment tag)
658
666
  );
659
667
  $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
660
668
  my $flags = Get16u(\$buff, 6);
@@ -700,7 +708,7 @@ Electronic Publication (EPUB), and Sketch design files (SKETCH).
700
708
 
701
709
  =head1 AUTHOR
702
710
 
703
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
711
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
704
712
 
705
713
  This library is free software; you can redistribute it and/or modify it
706
714
  under the same terms as Perl itself.
@@ -220,7 +220,7 @@ metadata from Zeiss Integrated Software RAW (ZISRAW) CZI files.
220
220
 
221
221
  =head1 AUTHOR
222
222
 
223
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
223
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
224
224
 
225
225
  This library is free software; you can redistribute it and/or modify it
226
226
  under the same terms as Perl itself.
@@ -215,7 +215,7 @@ information from Apple iWork '09 XML+ZIP files.
215
215
 
216
216
  =head1 AUTHOR
217
217
 
218
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
218
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
219
219
 
220
220
  This library is free software; you can redistribute it and/or modify it
221
221
  under the same terms as Perl itself.
@@ -8,7 +8,7 @@
8
8
  # Revisions: Nov. 12/2003 - P. Harvey Created
9
9
  # (See html/history.html for revision history)
10
10
  #
11
- # Legal: Copyright (c) 2003-2021, Phil Harvey (philharvey66 at gmail.com)
11
+ # Legal: Copyright (c) 2003-2022, Phil Harvey (philharvey66 at gmail.com)
12
12
  # This library is free software; you can redistribute it and/or
13
13
  # modify it under the same terms as Perl itself.
14
14
  #------------------------------------------------------------------------------
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars);
31
31
 
32
- $VERSION = '12.38';
32
+ $VERSION = '12.39';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -406,6 +406,8 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
406
406
  # NDPI => ['TIFF', 'Hamamatsu NanoZoomer Digital Pathology Image'],
407
407
  NEF => ['TIFF', 'Nikon (RAW) Electronic Format'],
408
408
  NEWER => 'COS',
409
+ NKSC => ['XMP', 'Nikon Sidecar'],
410
+
409
411
  NMBTEMPLATE => ['ZIP','Apple Numbers Template'],
410
412
  NRW => ['TIFF', 'Nikon RAW (2)'],
411
413
  NUMBERS => ['ZIP','Apple Numbers spreadsheet'],
@@ -691,6 +693,7 @@ my %fileDescription = (
691
693
  MRW => 'image/x-minolta-mrw',
692
694
  MXF => 'application/mxf',
693
695
  NEF => 'image/x-nikon-nef',
696
+ NKSC => 'application/x-nikon-nxstudio',
694
697
  NRW => 'image/x-nikon-nrw',
695
698
  NUMBERS => 'application/x-iwork-numbers-sffnumbers',
696
699
  ODB => 'application/vnd.oasis.opendocument.database',
@@ -4090,7 +4093,7 @@ sub Open($*$;$)
4090
4093
  $file =~ s/^([\s&])/.\/$1/; # protect leading whitespace or ampersand
4091
4094
  # default to read mode ('<') unless input is a trusted pipe
4092
4095
  $mode = (($file =~ /\|$/ and $$self{TRUST_PIPE}) ? '' : '<') unless $mode;
4093
- undef $$self{TRUST_PIPE};
4096
+ delete $$self{TRUST_PIPE};
4094
4097
  if ($mode) {
4095
4098
  if ($self->EncodeFileName($file)) {
4096
4099
  # handle Windows Unicode file name
@@ -6029,6 +6032,8 @@ sub IdentifyTrailer($;$)
6029
6032
  $type = 'Samsung';
6030
6033
  } elsif ($buff =~ /8db42d694ccc418790edff439fe026bf$/s) {
6031
6034
  $type = 'Insta360';
6035
+ } elsif ($buff =~ m(\0{6}/NIKON APP$)) {
6036
+ $type = 'NikonApp';
6032
6037
  }
6033
6038
  last;
6034
6039
  }
@@ -6064,6 +6069,9 @@ sub ProcessTrailers($$)
6064
6069
  if ($dirName eq 'Insta360') {
6065
6070
  require 'Image/ExifTool/QuickTimeStream.pl';
6066
6071
  $proc = 'Image::ExifTool::QuickTime::ProcessInsta360';
6072
+ } elsif ($dirName eq 'NikonApp') {
6073
+ require Image::ExifTool::Nikon;
6074
+ $proc = 'Image::ExifTool::Nikon::ProcessNikonApp';
6067
6075
  } else {
6068
6076
  require "Image/ExifTool/$dirName.pm";
6069
6077
  $proc = "Image::ExifTool::${dirName}::Process$dirName";
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # URL: https://exiftool.org/
7
7
  #
8
- # Legal: Copyright (c) 2003-2021, Phil Harvey (philharvey66 at gmail.com)
8
+ # Legal: Copyright (c) 2003-2022, Phil Harvey (philharvey66 at gmail.com)
9
9
  # This library is free software; you can redistribute it and/or
10
10
  # modify it under the same terms as Perl itself.
11
11
  #------------------------------------------------------------------------------
@@ -65,48 +65,48 @@ supported by ExifTool (r = read, w = write, c = create):
65
65
 
66
66
  File Types
67
67
  ------------+-------------+-------------+-------------+------------
68
- 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RIFF r
69
- 3FR r | DSS r | JP2 r/w | ODS r | RSRC r
70
- 3G2 r/w | DV r | JPEG r/w | ODT r | RTF r
71
- 3GP r/w | DVB r/w | JSON r | OFR r | RW2 r/w
72
- A r | DVR-MS r | JXL r | OGG r | RWL r/w
73
- AA r | DYLIB r | K25 r | OGV r | RWZ r
74
- AAE r | EIP r | KDC r | ONP r | RM r
75
- AAX r/w | EPS r/w | KEY r | OPUS r | SEQ r
76
- ACR r | EPUB r | LA r | ORF r/w | SKETCH r
77
- AFM r | ERF r/w | LFP r | ORI r/w | SO r
78
- AI r/w | EXE r | LIF r | OTF r | SR2 r/w
79
- AIFF r | EXIF r/w/c | LNK r | PAC r | SRF r
80
- APE r | EXR r | LRV r/w | PAGES r | SRW r/w
81
- ARQ r/w | EXV r/w/c | M2TS r | PBM r/w | SVG r
82
- ARW r/w | F4A/V r/w | M4A/V r/w | PCD r | SWF r
83
- ASF r | FFF r/w | MACOS r | PCX r | THM r/w
84
- AVI r | FITS r | MAX r | PDB r | TIFF r/w
85
- AVIF r/w | FLA r | MEF r/w | PDF r/w | TORRENT r
86
- AZW r | FLAC r | MIE r/w/ | PEF r/w | TTC r
87
- BMP r | FLIF r/w | MIFF r c | PFA r | TTF r
88
- BPG r | FLV r | MKA r | PFB r | TXT r
89
- BTF r | FPF r | MKS r | PFM r | VCF r
90
- CHM r | FPX r | MKV r | PGF r | VRD r/w/c
91
- COS r | GIF r/w | MNG r/w | PGM r/w | VSD r
92
- CR2 r/w | GPR r/w | MOBI r | PLIST r | WAV r
93
- CR3 r/w | GZ r | MODD r | PICT r | WDP r/w
94
- CRM r/w | HDP r/w | MOI r | PMP r | WEBP r
95
- CRW r/w | HDR r | MOS r/w | PNG r/w | WEBM r
96
- CS1 r/w | HEIC r/w | MOV r/w | PPM r/w | WMA r
97
- CSV r | HEIF r/w | MP3 r | PPT r | WMV r
98
- CZI r | HTML r | MP4 r/w | PPTX r | WTV r
99
- DCM r | ICC r/w/c | MPC r | PS r/w | WV r
100
- DCP r/w | ICS r | MPG r | PSB r/w | X3F r/w
101
- DCR r | IDML r | MPO r/w | PSD r/w | XCF r
102
- DFONT r | IIQ r/w | MQV r/w | PSP r | XLS r
103
- DIVX r | IND r/w | MRC r | QTIF r/w | XLSX r
104
- DJVU r | INSP r/w | MRW r/w | R3D r | XMP r/w/c
105
- DLL r | INSV r | MXF r | RA r | ZIP r
106
- DNG r/w | INX r | NEF r/w | RAF r/w |
107
- DOC r | ISO r | NRW r/w | RAM r |
108
- DOCX r | ITC r | NUMBERS r | RAR r |
109
- DPX r | J2C r | O r | RAW r/w |
68
+ 360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
69
+ 3FR r | DSS r | JP2 r/w | ODP r | RIFF r
70
+ 3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
71
+ 3GP r/w | DVB r/w | JSON r | ODT r | RTF r
72
+ A r | DVR-MS r | JXL r | OFR r | RW2 r/w
73
+ AA r | DYLIB r | K25 r | OGG r | RWL r/w
74
+ AAE r | EIP r | KDC r | OGV r | RWZ r
75
+ AAX r/w | EPS r/w | KEY r | ONP r | RM r
76
+ ACR r | EPUB r | LA r | OPUS r | SEQ r
77
+ AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
78
+ AI r/w | EXE r | LIF r | ORI r/w | SO r
79
+ AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
80
+ APE r | EXR r | LRV r/w | PAC r | SRF r
81
+ ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
82
+ ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
83
+ ASF r | FFF r/w | MACOS r | PCD r | SWF r
84
+ AVI r | FITS r | MAX r | PCX r | THM r/w
85
+ AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
86
+ AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
87
+ BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
88
+ BPG r | FLV r | MKA r | PFA r | TTF r
89
+ BTF r | FPF r | MKS r | PFB r | TXT r
90
+ CHM r | FPX r | MKV r | PFM r | VCF r
91
+ COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
92
+ CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
93
+ CR3 r/w | GZ r | MODD r | PLIST r | WAV r
94
+ CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
95
+ CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
96
+ CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
97
+ CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
98
+ CZI r | HTML r | MP4 r/w | PPT r | WMV r
99
+ DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
100
+ DCP r/w | ICS r | MPG r | PS r/w | WV r
101
+ DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
102
+ DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
103
+ DIVX r | IND r/w | MRC r | PSP r | XLS r
104
+ DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
105
+ DLL r | INSV r | MXF r | R3D r | XMP r/w/c
106
+ DNG r/w | INX r | NEF r/w | RA r | ZIP r
107
+ DOC r | ISO r | NKSC r/w | RAF r/w |
108
+ DOCX r | ITC r | NRW r/w | RAM r |
109
+ DPX r | J2C r | NUMBERS r | RAR r |
110
110
 
111
111
  Meta Information
112
112
  ----------------------+----------------------+---------------------
@@ -2325,25 +2325,26 @@ MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
2325
2325
  MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
2326
2326
  MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
2327
2327
  Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
2328
- NikonScan, NikonSettings, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,
2329
- PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne,
2330
- PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD,
2331
- PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
2332
- Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
2333
- Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
2334
- SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
2335
- SubIFD, System, Theora, Torrent, Track#, UserData, UserParam, VCalendar,
2336
- VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
2337
- XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage,
2338
- XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
2339
- XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc,
2340
- XMP-dex, XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX,
2341
- XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-ics,
2342
- XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
2343
- XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech,
2344
- XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur,
2345
- XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM,
2346
- XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes
2328
+ NikonScan, NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR,
2329
+ Opus, PDF, PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax,
2330
+ PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript,
2331
+ PreviewIFD, PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF,
2332
+ RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP,
2333
+ Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2,
2334
+ SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw,
2335
+ Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, UserData,
2336
+ UserParam, VCalendar, VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM,
2337
+ XMP-Device, XMP-GAudio, XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano,
2338
+ XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas,
2339
+ XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell,
2340
+ XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji,
2341
+ XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv,
2342
+ XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro,
2343
+ XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx,
2344
+ XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl,
2345
+ XMP-prm, XMP-pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ,
2346
+ XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg,
2347
+ ZIP, iTunes
2347
2348
 
2348
2349
  =item Family 2 (Category):
2349
2350
 
@@ -2742,7 +2743,7 @@ specified by the L</Charset> option.
2742
2743
 
2743
2744
  =head1 AUTHOR
2744
2745
 
2745
- Copyright 2003-2021, Phil Harvey
2746
+ Copyright 2003-2022, Phil Harvey
2746
2747
 
2747
2748
  This library is free software; you can redistribute it and/or modify it
2748
2749
  under the same terms as Perl itself.