exiftool-vendored.pl 12.38.0 → 12.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/LICENSE +10 -3
  2. package/bin/Changes +17 -0
  3. package/bin/MANIFEST +1 -0
  4. package/bin/META.json +1 -1
  5. package/bin/META.yml +1 -1
  6. package/bin/README +45 -45
  7. package/bin/exiftool +46 -46
  8. package/bin/lib/File/RandomAccess.pm +1 -1
  9. package/bin/lib/File/RandomAccess.pod +2 -2
  10. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  12. package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. package/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. package/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. package/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. package/bin/lib/Image/ExifTool/Apple.pm +1 -1
  17. package/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. package/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. package/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  21. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
  23. package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Canon.pm +1 -1
  25. package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. package/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  28. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. package/bin/lib/Image/ExifTool/Casio.pm +1 -1
  30. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  32. package/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. package/bin/lib/Image/ExifTool/DNG.pm +1 -1
  34. package/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. package/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. package/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. package/bin/lib/Image/ExifTool/Exif.pm +9 -1
  40. package/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. package/bin/lib/Image/ExifTool/FLIR.pm +16 -4
  44. package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  45. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. package/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  47. package/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  50. package/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. package/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. package/bin/lib/Image/ExifTool/GPS.pm +1 -1
  54. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. package/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  56. package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. package/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. package/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. package/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  61. package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. package/bin/lib/Image/ExifTool/ID3.pm +1 -1
  63. package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  64. package/bin/lib/Image/ExifTool/ISO.pm +1 -1
  65. package/bin/lib/Image/ExifTool/ITC.pm +1 -1
  66. package/bin/lib/Image/ExifTool/Import.pm +1 -1
  67. package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  68. package/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  69. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  70. package/bin/lib/Image/ExifTool/JSON.pm +1 -1
  71. package/bin/lib/Image/ExifTool/JVC.pm +1 -1
  72. package/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  73. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  74. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  75. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  76. package/bin/lib/Image/ExifTool/LNK.pm +1 -1
  77. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  82. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. package/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  84. package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  85. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  96. package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  97. package/bin/lib/Image/ExifTool/MIE.pm +1 -1
  98. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  100. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  101. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  102. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  103. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  104. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  105. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  106. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  107. package/bin/lib/Image/ExifTool/MXF.pm +1 -1
  108. package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  109. package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  110. package/bin/lib/Image/ExifTool/Matroska.pm +9 -5
  111. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  112. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  113. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  114. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  115. package/bin/lib/Image/ExifTool/Nikon.pm +897 -184
  116. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  117. package/bin/lib/Image/ExifTool/NikonCustom.pm +519 -6
  118. package/bin/lib/Image/ExifTool/NikonSettings.pm +17 -18
  119. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  120. package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  121. package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  122. package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  123. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  124. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  125. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  126. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  127. package/bin/lib/Image/ExifTool/PDF.pm +1 -1
  128. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  129. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  130. package/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  131. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  132. package/bin/lib/Image/ExifTool/PNG.pm +28 -8
  133. package/bin/lib/Image/ExifTool/PPM.pm +1 -1
  134. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  135. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  136. package/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  137. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  138. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  139. package/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  140. package/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  141. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  142. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  143. package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  144. package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  145. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  146. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  147. package/bin/lib/Image/ExifTool/QuickTime.pm +1 -1
  148. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +14 -3
  149. package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  150. package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  151. package/bin/lib/Image/ExifTool/RTF.pm +1 -1
  152. package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  153. package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  154. package/bin/lib/Image/ExifTool/Real.pm +1 -1
  155. package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  156. package/bin/lib/Image/ExifTool/Red.pm +1 -1
  157. package/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  158. package/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  159. package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  160. package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  161. package/bin/lib/Image/ExifTool/Shift.pl +3 -1
  162. package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  163. package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  164. package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  165. package/bin/lib/Image/ExifTool/Sony.pm +1 -1
  166. package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  167. package/bin/lib/Image/ExifTool/Stim.pm +1 -1
  168. package/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  169. package/bin/lib/Image/ExifTool/TagLookup.pm +4560 -4474
  170. package/bin/lib/Image/ExifTool/TagNames.pod +320 -21
  171. package/bin/lib/Image/ExifTool/Text.pm +1 -1
  172. package/bin/lib/Image/ExifTool/Theora.pm +1 -1
  173. package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  174. package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  175. package/bin/lib/Image/ExifTool/VCard.pm +1 -1
  176. package/bin/lib/Image/ExifTool/Validate.pm +1 -1
  177. package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  178. package/bin/lib/Image/ExifTool/WTV.pm +1 -1
  179. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  180. package/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  181. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  182. package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  183. package/bin/lib/Image/ExifTool/WritePNG.pl +30 -10
  184. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  185. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  186. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +2 -1
  187. package/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  188. package/bin/lib/Image/ExifTool/Writer.pl +6 -5
  189. package/bin/lib/Image/ExifTool/XMP.pm +40 -22
  190. package/bin/lib/Image/ExifTool/XMP2.pl +3 -2
  191. package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  192. package/bin/lib/Image/ExifTool/ZIP.pm +10 -2
  193. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  194. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  195. package/bin/lib/Image/ExifTool.pm +11 -3
  196. package/bin/lib/Image/ExifTool.pod +64 -63
  197. package/bin/perl-Image-ExifTool.spec +43 -43
  198. package/bin/pp_build_exe.args +5 -5
  199. package/package.json +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.