exiftool_vendored 10.31.0 → 10.40.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (1296) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Image-ExifTool-10.40/Changes +7693 -0
  3. data/bin/Image-ExifTool-10.40/MANIFEST +998 -0
  4. data/bin/Image-ExifTool-10.40/META.json +51 -0
  5. data/bin/Image-ExifTool-10.40/META.yml +31 -0
  6. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/Makefile.PL +0 -0
  7. data/bin/Image-ExifTool-10.40/README +240 -0
  8. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/exif2iptc.args +0 -0
  9. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/exif2xmp.args +0 -0
  10. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/gps2xmp.args +0 -0
  11. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/iptc2exif.args +0 -0
  12. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/iptc2xmp.args +0 -0
  13. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/iptcCore.args +0 -0
  14. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/pdf2xmp.args +0 -0
  15. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/xmp2exif.args +0 -0
  16. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/xmp2gps.args +0 -0
  17. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/xmp2iptc.args +0 -0
  18. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/arg_files/xmp2pdf.args +0 -0
  19. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/bibble.config +0 -0
  20. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/convert_regions.config +0 -0
  21. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/example.config +0 -0
  22. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/fotoware.config +0 -0
  23. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/gps2utm.config +0 -0
  24. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/photoshop_paths.config +0 -0
  25. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/config_files/picasa_faces.config +0 -0
  26. data/bin/Image-ExifTool-10.40/config_files/time_zone.config +76 -0
  27. data/bin/Image-ExifTool-10.40/exiftool +6462 -0
  28. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/fmt_files/gpx.fmt +0 -0
  29. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/fmt_files/gpx_wpt.fmt +0 -0
  30. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/fmt_files/kml.fmt +0 -0
  31. data/bin/Image-ExifTool-10.40/html/ExifTool.html +2122 -0
  32. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/MIE1.1-20070121.pdf +0 -0
  33. data/bin/Image-ExifTool-10.40/html/Shift.html +179 -0
  34. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/AFCP.html +0 -0
  35. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/AIFF.html +0 -0
  36. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/APE.html +0 -0
  37. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/APP12.html +0 -0
  38. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/ASF.html +0 -0
  39. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Apple.html +0 -0
  40. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Audible.html +0 -0
  41. data/bin/Image-ExifTool-10.40/html/TagNames/BMP.html +233 -0
  42. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/BPG.html +0 -0
  43. data/bin/Image-ExifTool-10.40/html/TagNames/Canon.html +9741 -0
  44. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/CanonCustom.html +0 -0
  45. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/CanonRaw.html +0 -0
  46. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/CanonVRD.html +0 -0
  47. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Casio.html +0 -0
  48. data/bin/Image-ExifTool-10.40/html/TagNames/Composite.html +745 -0
  49. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DICOM.html +0 -0
  50. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DJI.html +0 -0
  51. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DNG.html +0 -0
  52. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DPX.html +0 -0
  53. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DV.html +0 -0
  54. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DarwinCore.html +0 -0
  55. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/DjVu.html +0 -0
  56. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/EXE.html +0 -0
  57. data/bin/Image-ExifTool-10.40/html/TagNames/EXIF.html +3484 -0
  58. data/bin/Image-ExifTool-10.40/html/TagNames/Extra.html +471 -0
  59. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/FLAC.html +0 -0
  60. data/bin/Image-ExifTool-10.40/html/TagNames/FLIF.html +84 -0
  61. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/FLIR.html +0 -0
  62. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Flash.html +0 -0
  63. data/bin/Image-ExifTool-10.40/html/TagNames/FlashPix.html +1475 -0
  64. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Font.html +0 -0
  65. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/FotoStation.html +0 -0
  66. data/bin/Image-ExifTool-10.40/html/TagNames/FujiFilm.html +867 -0
  67. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/GE.html +0 -0
  68. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/GIF.html +0 -0
  69. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/GIMP.html +0 -0
  70. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/GPS.html +0 -0
  71. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/GeoTiff.html +0 -0
  72. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/H264.html +0 -0
  73. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/HP.html +0 -0
  74. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/HTML.html +0 -0
  75. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/ICC_Profile.html +0 -0
  76. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/ID3.html +0 -0
  77. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/IPTC.html +0 -0
  78. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/ISO.html +0 -0
  79. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/ITC.html +0 -0
  80. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/JFIF.html +0 -0
  81. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/JPEG.html +0 -0
  82. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/JVC.html +0 -0
  83. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Jpeg2000.html +0 -0
  84. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Kodak.html +0 -0
  85. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/KyoceraRaw.html +0 -0
  86. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/LNK.html +0 -0
  87. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Leaf.html +0 -0
  88. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Lytro.html +0 -0
  89. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/M2TS.html +0 -0
  90. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MIE.html +0 -0
  91. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MIFF.html +0 -0
  92. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MNG.html +0 -0
  93. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MOI.html +0 -0
  94. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MPC.html +0 -0
  95. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MPEG.html +0 -0
  96. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MPF.html +0 -0
  97. data/bin/Image-ExifTool-10.40/html/TagNames/MWG.html +584 -0
  98. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MXF.html +0 -0
  99. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Matroska.html +0 -0
  100. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Microsoft.html +0 -0
  101. data/bin/Image-ExifTool-10.40/html/TagNames/Minolta.html +2634 -0
  102. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/MinoltaRaw.html +0 -0
  103. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Motorola.html +0 -0
  104. data/bin/Image-ExifTool-10.40/html/TagNames/Nikon.html +6016 -0
  105. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/NikonCapture.html +0 -0
  106. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/NikonCustom.html +0 -0
  107. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Nintendo.html +0 -0
  108. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/OOXML.html +0 -0
  109. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Ogg.html +0 -0
  110. data/bin/Image-ExifTool-10.40/html/TagNames/Olympus.html +3655 -0
  111. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/OpenEXR.html +0 -0
  112. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Opus.html +0 -0
  113. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PDF.html +0 -0
  114. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PGF.html +0 -0
  115. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PICT.html +0 -0
  116. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PLIST.html +0 -0
  117. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PLUS.html +0 -0
  118. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PNG.html +0 -0
  119. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PSP.html +0 -0
  120. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Palm.html +0 -0
  121. data/bin/Image-ExifTool-10.40/html/TagNames/Panasonic.html +1701 -0
  122. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PanasonicRaw.html +0 -0
  123. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Pentax.html +0 -0
  124. data/bin/Image-ExifTool-10.40/html/TagNames/PhaseOne.html +263 -0
  125. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PhotoCD.html +0 -0
  126. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PhotoMechanic.html +0 -0
  127. data/bin/Image-ExifTool-10.40/html/TagNames/Photoshop.html +739 -0
  128. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PostScript.html +0 -0
  129. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/PrintIM.html +0 -0
  130. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Qualcomm.html +0 -0
  131. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/QuickTime.html +0 -0
  132. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/RIFF.html +0 -0
  133. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/RSRC.html +0 -0
  134. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/RTF.html +0 -0
  135. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Radiance.html +0 -0
  136. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Rawzor.html +0 -0
  137. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Real.html +0 -0
  138. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Reconyx.html +0 -0
  139. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Ricoh.html +0 -0
  140. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Samsung.html +0 -0
  141. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Sanyo.html +0 -0
  142. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Scalado.html +0 -0
  143. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Shortcuts.html +0 -0
  144. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Sigma.html +0 -0
  145. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/SigmaRaw.html +0 -0
  146. data/bin/Image-ExifTool-10.40/html/TagNames/Sony.html +10305 -0
  147. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/SonyIDC.html +0 -0
  148. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Stim.html +0 -0
  149. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Theora.html +0 -0
  150. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Torrent.html +0 -0
  151. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Unknown.html +0 -0
  152. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/VCard.html +0 -0
  153. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/Vorbis.html +0 -0
  154. data/bin/Image-ExifTool-10.40/html/TagNames/XMP.html +10158 -0
  155. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/ZIP.html +0 -0
  156. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/iWork.html +0 -0
  157. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/index.html +0 -0
  158. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/TagNames/style.css +0 -0
  159. data/bin/Image-ExifTool-10.40/html/ancient_history.html +8365 -0
  160. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/canon_raw.html +0 -0
  161. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/commentary.html +0 -0
  162. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/config.html +0 -0
  163. data/bin/Image-ExifTool-10.40/html/data_members.html +286 -0
  164. data/bin/Image-ExifTool-10.40/html/exiftool_pod.html +1873 -0
  165. data/bin/Image-ExifTool-10.40/html/faq.html +1591 -0
  166. data/bin/Image-ExifTool-10.40/html/filename.html +353 -0
  167. data/bin/Image-ExifTool-10.40/html/geotag.html +661 -0
  168. data/bin/Image-ExifTool-10.40/html/history.html +317 -0
  169. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/htmldump.html +0 -0
  170. data/bin/Image-ExifTool-10.40/html/idiosyncracies.html +272 -0
  171. data/bin/Image-ExifTool-10.40/html/index.html +1363 -0
  172. data/bin/Image-ExifTool-10.40/html/install.html +261 -0
  173. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/metafiles.html +0 -0
  174. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/overview.png +0 -0
  175. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/standards.html +0 -0
  176. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/struct.html +0 -0
  177. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/style.css +0 -0
  178. data/bin/Image-ExifTool-10.40/html/under.html +137 -0
  179. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/verbose.html +0 -0
  180. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/html/writing.html +0 -0
  181. data/bin/Image-ExifTool-10.40/lib/File/RandomAccess.pm +378 -0
  182. data/bin/Image-ExifTool-10.40/lib/File/RandomAccess.pod +231 -0
  183. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool.pm +7773 -0
  184. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool.pod +2569 -0
  185. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/AES.pm +501 -0
  186. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/AFCP.pm +286 -0
  187. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/AIFF.pm +289 -0
  188. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/APE.pm +282 -0
  189. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/APP12.pm +322 -0
  190. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/ASF.pm +885 -0
  191. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Apple.pm +153 -0
  192. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Audible.pm +317 -0
  193. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/BMP.pm +361 -0
  194. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/BPG.pm +251 -0
  195. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/BZZ.pm +472 -0
  196. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/BigTIFF.pm +282 -0
  197. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/BuildTagLookup.pm +2562 -0
  198. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Canon.pm +8929 -0
  199. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/CanonCustom.pm +2667 -0
  200. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/CanonRaw.pm +910 -0
  201. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/CanonVRD.pm +2273 -0
  202. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/CaptureOne.pm +235 -0
  203. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Casio.pm +2060 -0
  204. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Charset.pm +423 -0
  205. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
  206. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
  207. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
  208. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
  209. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
  210. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
  211. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
  212. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
  213. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
  214. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
  215. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
  216. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
  217. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
  218. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
  219. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
  220. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
  221. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
  222. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
  223. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
  224. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
  225. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
  226. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
  227. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
  228. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
  229. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
  230. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
  231. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
  232. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
  233. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
  234. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
  235. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DICOM.pm +3874 -0
  236. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DJI.pm +71 -0
  237. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DNG.pm +835 -0
  238. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DPX.pm +182 -0
  239. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DV.pm +319 -0
  240. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DarwinCore.pm +322 -0
  241. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/DjVu.pm +376 -0
  242. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/EXE.pm +1401 -0
  243. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Exif.pm +6097 -0
  244. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/FLAC.pm +297 -0
  245. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/FLIF.pm +353 -0
  246. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/FLIR.pm +1535 -0
  247. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Fixup.pm +366 -0
  248. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Flash.pm +755 -0
  249. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/FlashPix.pm +1960 -0
  250. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Font.pm +647 -0
  251. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/FotoStation.pm +261 -0
  252. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/FujiFilm.pm +1264 -0
  253. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/GE.pm +81 -0
  254. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/GIF.pm +542 -0
  255. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/GIMP.pm +258 -0
  256. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/GPS.pm +559 -0
  257. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/GeoTiff.pm +2263 -0
  258. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Geotag.pm +1287 -0
  259. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/H264.pm +1110 -0
  260. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/HP.pm +263 -0
  261. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/HTML.pm +576 -0
  262. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/HtmlDump.pm +898 -0
  263. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/ICC_Profile.pm +1013 -0
  264. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/ID3.pm +1570 -0
  265. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/IPTC.pm +1264 -0
  266. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/ISO.pm +206 -0
  267. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/ITC.pm +215 -0
  268. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Import.pm +329 -0
  269. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/InDesign.pm +277 -0
  270. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/JPEG.pm +605 -0
  271. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/JPEGDigest.pm +2616 -0
  272. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/JVC.pm +130 -0
  273. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Jpeg2000.pm +898 -0
  274. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Kodak.pm +2096 -0
  275. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
  276. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/LNK.pm +723 -0
  277. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/cs.pm +1588 -0
  278. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/de.pm +8692 -0
  279. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/en_ca.pm +940 -0
  280. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/en_gb.pm +983 -0
  281. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/es.pm +4019 -0
  282. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/fi.pm +2854 -0
  283. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/fr.pm +4758 -0
  284. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/it.pm +7918 -0
  285. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/ja.pm +5835 -0
  286. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/ko.pm +2330 -0
  287. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/nl.pm +3222 -0
  288. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/pl.pm +1276 -0
  289. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/ru.pm +768 -0
  290. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/sv.pm +638 -0
  291. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/tr.pm +544 -0
  292. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/zh_cn.pm +1330 -0
  293. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lang/zh_tw.pm +801 -0
  294. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Leaf.pm +517 -0
  295. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Lytro.pm +217 -0
  296. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/M2TS.pm +729 -0
  297. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MIE.pm +2564 -0
  298. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MIEUnits.pod +377 -0
  299. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MIFF.pm +279 -0
  300. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MNG.pm +684 -0
  301. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MOI.pm +158 -0
  302. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MPC.pm +156 -0
  303. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MPEG.pm +736 -0
  304. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MPF.pm +288 -0
  305. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MWG.pm +757 -0
  306. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MXF.pm +3031 -0
  307. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MakerNotes.pm +1745 -0
  308. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Matroska.pm +932 -0
  309. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Microsoft.pm +904 -0
  310. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Minolta.pm +2996 -0
  311. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/MinoltaRaw.pm +535 -0
  312. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Motorola.pm +62 -0
  313. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Nikon.pm +8173 -0
  314. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/NikonCapture.pm +940 -0
  315. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/NikonCustom.pm +8682 -0
  316. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Nintendo.pm +128 -0
  317. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/OOXML.pm +409 -0
  318. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Ogg.pm +240 -0
  319. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Olympus.pm +3998 -0
  320. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/OpenEXR.pm +323 -0
  321. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Opus.pm +98 -0
  322. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PDF.pm +2367 -0
  323. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PGF.pm +143 -0
  324. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PICT.pm +1260 -0
  325. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PLIST.pm +448 -0
  326. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PLUS.pm +2607 -0
  327. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PNG.pm +1255 -0
  328. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PPM.pm +169 -0
  329. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PSP.pm +306 -0
  330. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Palm.pm +403 -0
  331. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Panasonic.pm +2378 -0
  332. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PanasonicRaw.pm +643 -0
  333. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Pentax.pm +6135 -0
  334. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PhaseOne.pm +725 -0
  335. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PhotoCD.pm +507 -0
  336. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
  337. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Photoshop.pm +952 -0
  338. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PostScript.pm +699 -0
  339. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/PrintIM.pm +125 -0
  340. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Qualcomm.pm +1344 -0
  341. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/QuickTime.pm +6708 -0
  342. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/README +1010 -0
  343. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/RIFF.pm +1587 -0
  344. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/RSRC.pm +241 -0
  345. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/RTF.pm +383 -0
  346. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Radiance.pm +144 -0
  347. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Rawzor.pm +189 -0
  348. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Real.pm +739 -0
  349. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Reconyx.pm +190 -0
  350. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Ricoh.pm +1150 -0
  351. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Samsung.pm +1271 -0
  352. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Sanyo.pm +440 -0
  353. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Scalado.pm +141 -0
  354. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Shift.pl +627 -0
  355. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Shortcuts.pm +338 -0
  356. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Sigma.pm +764 -0
  357. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/SigmaRaw.pm +670 -0
  358. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Sony.pm +9800 -0
  359. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/SonyIDC.pm +333 -0
  360. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Stim.pm +196 -0
  361. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/TagInfoXML.pm +827 -0
  362. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/TagLookup.pm +9515 -0
  363. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/TagNames.pod +30714 -0
  364. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Theora.pm +145 -0
  365. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Torrent.pm +317 -0
  366. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Unknown.pm +66 -0
  367. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/VCard.pm +405 -0
  368. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Vorbis.pm +255 -0
  369. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
  370. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WriteExif.pl +2483 -0
  371. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WriteIPTC.pl +706 -0
  372. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WritePDF.pl +771 -0
  373. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WritePNG.pl +390 -0
  374. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
  375. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WritePostScript.pl +772 -0
  376. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WriteQuickTime.pl +358 -0
  377. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/WriteXMP.pl +1381 -0
  378. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/Writer.pl +6322 -0
  379. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/XMP.pm +3897 -0
  380. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/XMP2.pl +1705 -0
  381. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/XMPStruct.pl +843 -0
  382. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/ZIP.pm +667 -0
  383. data/bin/Image-ExifTool-10.40/lib/Image/ExifTool/iWork.pm +223 -0
  384. data/bin/Image-ExifTool-10.40/perl-Image-ExifTool.spec +113 -0
  385. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/AFCP.t +0 -0
  386. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/AFCP_2.out +0 -0
  387. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/AFCP_3.out +0 -0
  388. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/AIFF.t +0 -0
  389. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/AIFF_2.out +0 -0
  390. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/APE.t +0 -0
  391. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/APE_2.out +0 -0
  392. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/APE_3.out +0 -0
  393. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ASF.t +0 -0
  394. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ASF_2.out +0 -0
  395. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Apple.t +0 -0
  396. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Apple_2.out +0 -0
  397. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Audible.t +0 -0
  398. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Audible_2.out +0 -0
  399. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/BMP.t +0 -0
  400. data/bin/Image-ExifTool-10.40/t/BMP_2.out +24 -0
  401. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/BPG.t +0 -0
  402. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/BPG_2.out +0 -0
  403. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/BigTIFF.t +0 -0
  404. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/BigTIFF_2.out +0 -0
  405. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Canon.t +0 -0
  406. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonRaw.t +0 -0
  407. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonRaw_2.out +0 -0
  408. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonRaw_4.out +0 -0
  409. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonRaw_5.out +0 -0
  410. data/bin/Image-ExifTool-10.40/t/CanonRaw_6.out +233 -0
  411. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonRaw_7.out +0 -0
  412. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD.t +0 -0
  413. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_11.out +0 -0
  414. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_12.out +0 -0
  415. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_13.out +0 -0
  416. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_14.out +0 -0
  417. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_15.out +0 -0
  418. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_16.out +0 -0
  419. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_17.out +0 -0
  420. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_18.out +0 -0
  421. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_19.out +0 -0
  422. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_2.out +0 -0
  423. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_20.out +0 -0
  424. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_21.out +0 -0
  425. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_3.out +0 -0
  426. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_4.out +0 -0
  427. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_5.out +0 -0
  428. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_6.out +0 -0
  429. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_7.out +0 -0
  430. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_8.out +0 -0
  431. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/CanonVRD_9.out +0 -0
  432. data/bin/Image-ExifTool-10.40/t/Canon_2.out +358 -0
  433. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Canon_3.out +0 -0
  434. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Casio.t +0 -0
  435. data/bin/Image-ExifTool-10.40/t/Casio_2.out +72 -0
  436. data/bin/Image-ExifTool-10.40/t/Casio_3.out +102 -0
  437. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Casio_4.out +0 -0
  438. data/bin/Image-ExifTool-10.40/t/Casio_5.out +80 -0
  439. data/bin/Image-ExifTool-10.40/t/Casio_6.out +117 -0
  440. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DICOM.t +0 -0
  441. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DICOM_2.out +0 -0
  442. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DNG.t +0 -0
  443. data/bin/Image-ExifTool-10.40/t/DNG_2.out +329 -0
  444. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DNG_3.out +0 -0
  445. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DPX.t +0 -0
  446. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DPX_2.out +0 -0
  447. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DV.t +0 -0
  448. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DV_2.out +0 -0
  449. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DjVu.t +0 -0
  450. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/DjVu_2.out +0 -0
  451. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE.t +0 -0
  452. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE_2.out +0 -0
  453. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE_3.out +0 -0
  454. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE_4.out +0 -0
  455. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE_5.out +0 -0
  456. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE_6.out +0 -0
  457. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/EXE_7.out +0 -0
  458. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool.t +0 -0
  459. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_16.out +0 -0
  460. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_17.out +0 -0
  461. data/bin/Image-ExifTool-10.40/t/ExifTool_2.out +427 -0
  462. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_20.out +0 -0
  463. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_21.out +0 -0
  464. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_22.out +0 -0
  465. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_23.out +0 -0
  466. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_24.out +0 -0
  467. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_25.out +0 -0
  468. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_26.out +0 -0
  469. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_27.out +0 -0
  470. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_28.out +0 -0
  471. data/bin/Image-ExifTool-10.40/t/ExifTool_29.out +426 -0
  472. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_3.out +0 -0
  473. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_30.out +0 -0
  474. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_4.out +0 -0
  475. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_5.out +0 -0
  476. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_6.out +0 -0
  477. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_7.out +0 -0
  478. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_8.out +0 -0
  479. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ExifTool_9.out +0 -0
  480. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLAC.t +0 -0
  481. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLAC_2.out +0 -0
  482. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLAC_3.out +0 -0
  483. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLIF.t +0 -0
  484. data/bin/Image-ExifTool-10.40/t/FLIF_2.out +51 -0
  485. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLIF_3.out +0 -0
  486. data/bin/Image-ExifTool-10.40/t/FLIF_4.out +18 -0
  487. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLIF_5.out +0 -0
  488. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLIF_6.out +0 -0
  489. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLIR.t +0 -0
  490. data/bin/Image-ExifTool-10.40/t/FLIR_2.out +118 -0
  491. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FLIR_3.out +0 -0
  492. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Flash.t +0 -0
  493. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FlashPix.t +0 -0
  494. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FlashPix_2.out +0 -0
  495. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Flash_2.out +0 -0
  496. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Flash_3.out +0 -0
  497. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font.t +0 -0
  498. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font_2.out +0 -0
  499. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font_3.out +0 -0
  500. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font_4.out +0 -0
  501. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font_5.out +0 -0
  502. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font_6.out +0 -0
  503. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Font_7.out +0 -0
  504. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FotoStation.t +0 -0
  505. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FotoStation_2.out +0 -0
  506. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FotoStation_3.out +0 -0
  507. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FujiFilm.t +0 -0
  508. data/bin/Image-ExifTool-10.40/t/FujiFilm_2.out +89 -0
  509. data/bin/Image-ExifTool-10.40/t/FujiFilm_3.out +90 -0
  510. data/bin/Image-ExifTool-10.40/t/FujiFilm_4.out +143 -0
  511. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/FujiFilm_5.out +0 -0
  512. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GE.t +0 -0
  513. data/bin/Image-ExifTool-10.40/t/GE_2.out +86 -0
  514. data/bin/Image-ExifTool-10.40/t/GE_3.out +86 -0
  515. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GIF.t +0 -0
  516. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GIF_2.out +0 -0
  517. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GIF_3.out +0 -0
  518. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GIF_4.out +0 -0
  519. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GIMP.t +0 -0
  520. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GIMP_2.out +0 -0
  521. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GPS.t +0 -0
  522. data/bin/Image-ExifTool-10.40/t/GPS_2.out +96 -0
  523. data/bin/Image-ExifTool-10.40/t/GPS_3.out +98 -0
  524. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GeoTiff.t +0 -0
  525. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GeoTiff_2.out +0 -0
  526. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GeoTiff_3.out +0 -0
  527. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/GeoTiff_4.out +0 -0
  528. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag.t +0 -0
  529. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_10.out +0 -0
  530. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_11.out +0 -0
  531. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_2.out +0 -0
  532. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_3.out +0 -0
  533. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_5.out +0 -0
  534. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_6.out +0 -0
  535. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_7.out +0 -0
  536. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_8.out +0 -0
  537. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Geotag_9.out +0 -0
  538. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/HTML.t +0 -0
  539. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/HTML_2.out +0 -0
  540. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC.t +0 -0
  541. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC_2.out +0 -0
  542. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC_4.out +0 -0
  543. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC_5.out +0 -0
  544. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC_6.out +0 -0
  545. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC_7.out +0 -0
  546. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/IPTC_8.out +0 -0
  547. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ISO.t +0 -0
  548. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ISO_2.out +0 -0
  549. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ITC.t +0 -0
  550. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ITC_2.out +0 -0
  551. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/InDesign.t +0 -0
  552. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/InDesign_2.out +0 -0
  553. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/InDesign_3.out +0 -0
  554. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/InDesign_4.out +0 -0
  555. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/JVC.t +0 -0
  556. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/JVC_2.out +0 -0
  557. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/JVC_3.out +0 -0
  558. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Jpeg2000.t +0 -0
  559. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Jpeg2000_2.out +0 -0
  560. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Jpeg2000_3.out +0 -0
  561. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Jpeg2000_4.out +0 -0
  562. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Kodak.t +0 -0
  563. data/bin/Image-ExifTool-10.40/t/Kodak_2.out +111 -0
  564. data/bin/Image-ExifTool-10.40/t/Kodak_3.out +121 -0
  565. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/KyoceraRaw.t +0 -0
  566. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/KyoceraRaw_2.out +0 -0
  567. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/LNK.t +0 -0
  568. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/LNK_2.out +0 -0
  569. data/bin/Image-ExifTool-10.40/t/Lang.t +42 -0
  570. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Lang_1.out +0 -0
  571. data/bin/Image-ExifTool-10.40/t/Lang_10.out +47 -0
  572. data/bin/Image-ExifTool-10.40/t/Lang_11.out +47 -0
  573. data/bin/Image-ExifTool-10.40/t/Lang_12.out +47 -0
  574. data/bin/Image-ExifTool-10.40/t/Lang_13.out +47 -0
  575. data/bin/Image-ExifTool-10.40/t/Lang_14.out +47 -0
  576. data/bin/Image-ExifTool-10.40/t/Lang_15.out +47 -0
  577. data/bin/Image-ExifTool-10.40/t/Lang_16.out +47 -0
  578. data/bin/Image-ExifTool-10.40/t/Lang_17.out +47 -0
  579. data/bin/Image-ExifTool-10.40/t/Lang_18.out +47 -0
  580. data/bin/Image-ExifTool-10.40/t/Lang_2.out +47 -0
  581. data/bin/Image-ExifTool-10.40/t/Lang_3.out +47 -0
  582. data/bin/Image-ExifTool-10.40/t/Lang_4.out +47 -0
  583. data/bin/Image-ExifTool-10.40/t/Lang_5.out +47 -0
  584. data/bin/Image-ExifTool-10.40/t/Lang_6.out +47 -0
  585. data/bin/Image-ExifTool-10.40/t/Lang_7.out +47 -0
  586. data/bin/Image-ExifTool-10.40/t/Lang_8.out +47 -0
  587. data/bin/Image-ExifTool-10.40/t/Lang_9.out +47 -0
  588. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Lytro.t +0 -0
  589. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Lytro_2.out +0 -0
  590. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/M2TS.t +0 -0
  591. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/M2TS_2.out +0 -0
  592. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MIE.t +0 -0
  593. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MIE_2.out +0 -0
  594. data/bin/Image-ExifTool-10.40/t/MIE_3.out +136 -0
  595. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MIE_5.out +0 -0
  596. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MIE_6.out +0 -0
  597. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MIFF.t +0 -0
  598. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MIFF_2.out +0 -0
  599. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MOI.t +0 -0
  600. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MOI_2.out +0 -0
  601. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MP3.t +0 -0
  602. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MP3_2.out +0 -0
  603. data/bin/Image-ExifTool-10.40/t/MWG.t +99 -0
  604. data/bin/Image-ExifTool-10.40/t/MWG_2.out +13 -0
  605. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MWG_3.out +0 -0
  606. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MWG_4.out +0 -0
  607. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MWG_5.out +0 -0
  608. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MWG_6.out +0 -0
  609. data/bin/Image-ExifTool-10.40/t/MWG_7.out +11 -0
  610. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MXF.t +0 -0
  611. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/MXF_2.out +0 -0
  612. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Matroska.t +0 -0
  613. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Matroska_2.out +0 -0
  614. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Minolta.t +0 -0
  615. data/bin/Image-ExifTool-10.40/t/Minolta_2.out +135 -0
  616. data/bin/Image-ExifTool-10.40/t/Minolta_3.out +148 -0
  617. data/bin/Image-ExifTool-10.40/t/Minolta_4.out +150 -0
  618. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Motorola.t +0 -0
  619. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Motorola_2.out +0 -0
  620. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Nikon.t +0 -0
  621. data/bin/Image-ExifTool-10.40/t/Nikon_2.out +84 -0
  622. data/bin/Image-ExifTool-10.40/t/Nikon_3.out +100 -0
  623. data/bin/Image-ExifTool-10.40/t/Nikon_4.out +176 -0
  624. data/bin/Image-ExifTool-10.40/t/Nikon_5.out +169 -0
  625. data/bin/Image-ExifTool-10.40/t/Nikon_7.out +261 -0
  626. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Nikon_8.out +0 -0
  627. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Olympus.t +0 -0
  628. data/bin/Image-ExifTool-10.40/t/Olympus_2.out +81 -0
  629. data/bin/Image-ExifTool-10.40/t/Olympus_3.out +83 -0
  630. data/bin/Image-ExifTool-10.40/t/Olympus_4.out +194 -0
  631. data/bin/Image-ExifTool-10.40/t/Olympus_5.out +266 -0
  632. data/bin/Image-ExifTool-10.40/t/Olympus_6.out +153 -0
  633. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Olympus_7.out +0 -0
  634. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Olympus_8.out +0 -0
  635. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/OpenEXR.t +0 -0
  636. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/OpenEXR_2.out +0 -0
  637. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Opus.t +0 -0
  638. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Opus_2.out +0 -0
  639. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF.t +0 -0
  640. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_10.out +0 -0
  641. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_11.out +0 -0
  642. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_12.out +0 -0
  643. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_14.out +0 -0
  644. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_15.out +0 -0
  645. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_16.out +0 -0
  646. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_17.out +0 -0
  647. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_18.out +0 -0
  648. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_19.out +0 -0
  649. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_2.out +0 -0
  650. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_20.out +0 -0
  651. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_22.out +0 -0
  652. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_4.out +0 -0
  653. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_5.out +0 -0
  654. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_6.out +0 -0
  655. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_7.out +0 -0
  656. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_8.out +0 -0
  657. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PDF_9.out +0 -0
  658. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PGF.t +0 -0
  659. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PGF_2.out +0 -0
  660. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PICT.t +0 -0
  661. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PICT_2.out +0 -0
  662. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PLIST.t +0 -0
  663. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PLIST_2.out +0 -0
  664. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PLIST_3.out +0 -0
  665. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PLUS.t +0 -0
  666. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PLUS_2.out +0 -0
  667. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PNG.t +0 -0
  668. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PNG_2.out +0 -0
  669. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PNG_3.out +0 -0
  670. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PNG_4.out +0 -0
  671. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PNG_5.out +0 -0
  672. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PPM.t +0 -0
  673. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PPM_2.out +0 -0
  674. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PPM_3.out +0 -0
  675. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PSP.t +0 -0
  676. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PSP_2.out +0 -0
  677. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Palm.t +0 -0
  678. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Palm_2.out +0 -0
  679. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Panasonic.t +0 -0
  680. data/bin/Image-ExifTool-10.40/t/Panasonic_2.out +101 -0
  681. data/bin/Image-ExifTool-10.40/t/Panasonic_3.out +121 -0
  682. data/bin/Image-ExifTool-10.40/t/Panasonic_4.out +206 -0
  683. data/bin/Image-ExifTool-10.40/t/Panasonic_5.out +244 -0
  684. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Pentax.t +0 -0
  685. data/bin/Image-ExifTool-10.40/t/Pentax_2.out +225 -0
  686. data/bin/Image-ExifTool-10.40/t/Pentax_3.out +266 -0
  687. data/bin/Image-ExifTool-10.40/t/Pentax_4.out +132 -0
  688. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PhaseOne.t +0 -0
  689. data/bin/Image-ExifTool-10.40/t/PhaseOne_2.out +99 -0
  690. data/bin/Image-ExifTool-10.40/t/PhaseOne_3.out +170 -0
  691. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PhotoCD.t +0 -0
  692. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PhotoCD_2.out +0 -0
  693. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PhotoMechanic.t +0 -0
  694. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PhotoMechanic_2.out +0 -0
  695. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PhotoMechanic_3.out +0 -0
  696. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Photoshop.t +0 -0
  697. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Photoshop_2.out +0 -0
  698. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Photoshop_3.out +0 -0
  699. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PostScript.t +0 -0
  700. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PostScript_2.out +0 -0
  701. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/PostScript_3.out +0 -0
  702. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/QuickTime.t +0 -0
  703. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/QuickTime_2.out +0 -0
  704. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/QuickTime_3.out +0 -0
  705. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/QuickTime_4.out +0 -0
  706. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/QuickTime_5.out +0 -0
  707. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/RIFF.t +0 -0
  708. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/RIFF_2.out +0 -0
  709. data/bin/Image-ExifTool-10.40/t/RIFF_3.out +55 -0
  710. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/RIFF_4.out +0 -0
  711. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/RTF.t +0 -0
  712. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/RTF_2.out +0 -0
  713. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Radiance.t +0 -0
  714. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Radiance_2.out +0 -0
  715. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Real.t +0 -0
  716. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Real_2.out +0 -0
  717. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Real_3.out +0 -0
  718. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Real_4.out +0 -0
  719. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Ricoh.t +0 -0
  720. data/bin/Image-ExifTool-10.40/t/Ricoh_2.out +72 -0
  721. data/bin/Image-ExifTool-10.40/t/Ricoh_3.out +100 -0
  722. data/bin/Image-ExifTool-10.40/t/Ricoh_4.out +114 -0
  723. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Sanyo.t +0 -0
  724. data/bin/Image-ExifTool-10.40/t/Sanyo_2.out +103 -0
  725. data/bin/Image-ExifTool-10.40/t/Sanyo_3.out +113 -0
  726. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Sigma.t +0 -0
  727. data/bin/Image-ExifTool-10.40/t/Sigma_2.out +93 -0
  728. data/bin/Image-ExifTool-10.40/t/Sigma_3.out +96 -0
  729. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Sigma_4.out +0 -0
  730. data/bin/Image-ExifTool-10.40/t/Sigma_5.out +194 -0
  731. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Sony.t +0 -0
  732. data/bin/Image-ExifTool-10.40/t/Sony_2.out +86 -0
  733. data/bin/Image-ExifTool-10.40/t/Sony_3.out +87 -0
  734. data/bin/Image-ExifTool-10.40/t/Sony_5.out +34 -0
  735. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/TestLib.pm +0 -0
  736. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Torrent.t +0 -0
  737. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Torrent_2.out +0 -0
  738. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Unknown.t +0 -0
  739. data/bin/Image-ExifTool-10.40/t/Unknown_2.out +92 -0
  740. data/bin/Image-ExifTool-10.40/t/Unknown_3.out +92 -0
  741. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/VCard.t +0 -0
  742. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/VCard_2.out +0 -0
  743. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/VCard_3.out +0 -0
  744. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Vorbis.t +0 -0
  745. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Vorbis_2.out +0 -0
  746. data/bin/Image-ExifTool-10.40/t/Writer.t +1071 -0
  747. data/bin/Image-ExifTool-10.40/t/Writer_10.out +246 -0
  748. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_11.out +0 -0
  749. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_13.out +0 -0
  750. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_14.out +0 -0
  751. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_15.out +0 -0
  752. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_16.out +0 -0
  753. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_17.out +0 -0
  754. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_18.out +0 -0
  755. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_19.out +0 -0
  756. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_2.out +0 -0
  757. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_22.out +0 -0
  758. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_24.out +0 -0
  759. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_25.out +0 -0
  760. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_26.out +0 -0
  761. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_27.out +0 -0
  762. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_28.out +0 -0
  763. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_29.out +0 -0
  764. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_30.out +0 -0
  765. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_31.out +0 -0
  766. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_32.out +0 -0
  767. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_33.out +0 -0
  768. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_34.out +0 -0
  769. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_35.out +0 -0
  770. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_36.out +0 -0
  771. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_37.out +0 -0
  772. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_38.out +0 -0
  773. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_39.out +0 -0
  774. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_4.out +0 -0
  775. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_40.out +0 -0
  776. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_41.out +0 -0
  777. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_42.out +0 -0
  778. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_43.out +0 -0
  779. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_44.out +0 -0
  780. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_45.out +0 -0
  781. data/bin/Image-ExifTool-10.40/t/Writer_46.out +111 -0
  782. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_47.out +0 -0
  783. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_48.out +0 -0
  784. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_50.out +0 -0
  785. data/bin/Image-ExifTool-10.40/t/Writer_51.out +414 -0
  786. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_52.out +0 -0
  787. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_53.out +0 -0
  788. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_54.out +0 -0
  789. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_55.out +0 -0
  790. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_56.out +0 -0
  791. data/bin/Image-ExifTool-10.40/t/Writer_58.out +44 -0
  792. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_6.out +0 -0
  793. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/Writer_7.out +0 -0
  794. data/bin/Image-ExifTool-10.40/t/Writer_9.out +243 -0
  795. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP.t +0 -0
  796. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_10.out +0 -0
  797. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_11.out +0 -0
  798. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_12.out +0 -0
  799. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_13.out +0 -0
  800. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_14.out +0 -0
  801. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_15.out +0 -0
  802. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_16.out +0 -0
  803. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_17.out +0 -0
  804. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_18.out +0 -0
  805. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_19.out +0 -0
  806. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_2.out +0 -0
  807. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_20.out +0 -0
  808. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_21.out +0 -0
  809. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_22.out +0 -0
  810. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_23.out +0 -0
  811. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_24.out +0 -0
  812. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_25.out +0 -0
  813. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_26.out +0 -0
  814. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_27.out +0 -0
  815. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_28.out +0 -0
  816. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_29.out +0 -0
  817. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_3.out +0 -0
  818. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_30.out +0 -0
  819. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_31.out +0 -0
  820. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_32.out +0 -0
  821. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_34.out +0 -0
  822. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_36.out +0 -0
  823. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_37.out +0 -0
  824. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_39.out +0 -0
  825. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_40.out +0 -0
  826. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_41.out +0 -0
  827. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_42.out +0 -0
  828. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_43.out +0 -0
  829. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_44.out +0 -0
  830. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_45.out +0 -0
  831. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_5.out +0 -0
  832. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_6.out +0 -0
  833. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_7.out +0 -0
  834. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_8.out +0 -0
  835. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/XMP_9.out +0 -0
  836. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP.t +0 -0
  837. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP_2.out +0 -0
  838. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP_3.out +0 -0
  839. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP_4.out +0 -0
  840. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP_5.out +0 -0
  841. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP_6.out +0 -0
  842. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/ZIP_7.out +0 -0
  843. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/AFCP.jpg +0 -0
  844. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/AIFF.aif +0 -0
  845. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/APE.ape +0 -0
  846. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/APE.mpc +0 -0
  847. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ASF.wmv +0 -0
  848. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Apple.jpg +0 -0
  849. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Audible.aa +0 -0
  850. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/BMP.bmp +0 -0
  851. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/BPG.bpg +0 -0
  852. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/BigTIFF.btf +0 -0
  853. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Canon.jpg +0 -0
  854. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Canon1DmkIII.jpg +0 -0
  855. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/CanonRaw.cr2 +0 -0
  856. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/CanonRaw.crw +0 -0
  857. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/CanonVRD.dr4 +0 -0
  858. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/CanonVRD.vrd +0 -0
  859. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/CaptureOne.eip +0 -0
  860. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Casio.jpg +0 -0
  861. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Casio2.jpg +0 -0
  862. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/CasioQVCI.jpg +0 -0
  863. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/DICOM.dcm +0 -0
  864. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/DNG.dng +0 -0
  865. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/DPX.dpx +0 -0
  866. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/DV.dv +0 -0
  867. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/DjVu.djvu +0 -0
  868. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/EXE.a +0 -0
  869. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/EXE.dylib +0 -0
  870. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/EXE.elf +0 -0
  871. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/EXE.exe +0 -0
  872. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/EXE.macho +0 -0
  873. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/EXE.so +0 -0
  874. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ExifTool.jpg +0 -0
  875. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ExifTool.tif +0 -0
  876. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ExtendedXMP.jpg +0 -0
  877. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FLAC.flac +0 -0
  878. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FLAC.ogg +0 -0
  879. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FLIF.flif +0 -0
  880. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FLIR.fpf +0 -0
  881. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FLIR.jpg +0 -0
  882. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Flash.flv +0 -0
  883. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Flash.swf +0 -0
  884. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FlashPix.ppt +0 -0
  885. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Font.afm +0 -0
  886. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Font.dfont +0 -0
  887. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Font.pfa +0 -0
  888. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Font.pfb +0 -0
  889. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Font.pfm +0 -0
  890. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Font.ttf +0 -0
  891. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FotoStation.jpg +0 -0
  892. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FujiFilm.jpg +0 -0
  893. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/FujiFilm.raf +0 -0
  894. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/GE.jpg +0 -0
  895. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/GIF.gif +0 -0
  896. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/GIMP.xcf +0 -0
  897. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/GPS.jpg +0 -0
  898. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/GeoTiff.tif +0 -0
  899. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag.gpx +0 -0
  900. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag.igc +0 -0
  901. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag.kml +0 -0
  902. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag.log +0 -0
  903. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag.xml +0 -0
  904. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag2.log +0 -0
  905. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Geotag3.log +0 -0
  906. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/HTML.html +0 -0
  907. data/bin/Image-ExifTool-10.40/t/images/ICC_Profile.icc +0 -0
  908. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/IPTC.jpg +0 -0
  909. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ISO.iso +0 -0
  910. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ITC.itc +0 -0
  911. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/InDesign.indd +0 -0
  912. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/JVC.jpg +0 -0
  913. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/JVC2.jpg +0 -0
  914. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Jpeg2000.j2c +0 -0
  915. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Jpeg2000.jp2 +0 -0
  916. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Kodak.jpg +0 -0
  917. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/KyoceraRaw.raw +0 -0
  918. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/LNK.lnk +0 -0
  919. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Lytro.lfp +0 -0
  920. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/M2TS.mts +0 -0
  921. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/MIE.mie +0 -0
  922. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/MIFF.miff +0 -0
  923. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/MOI.moi +0 -0
  924. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/MP3.mp3 +0 -0
  925. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/MWG.jpg +0 -0
  926. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/MXF.mxf +0 -0
  927. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Matroska.mkv +0 -0
  928. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Minolta.jpg +0 -0
  929. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Minolta.mrw +0 -0
  930. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Motorola.jpg +0 -0
  931. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Nikon.jpg +0 -0
  932. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Nikon.nef +0 -0
  933. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/NikonD2Hs.jpg +0 -0
  934. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/NikonD70.jpg +0 -0
  935. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/OOXML.docx +0 -0
  936. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Olympus.dss +0 -0
  937. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Olympus.jpg +0 -0
  938. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Olympus2.jpg +0 -0
  939. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/OlympusE1.jpg +0 -0
  940. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/OpenDoc.ods +0 -0
  941. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/OpenEXR.exr +0 -0
  942. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Opus.opus +0 -0
  943. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PDF.pdf +0 -0
  944. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PDF2.pdf +0 -0
  945. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PGF.pgf +0 -0
  946. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PICT.pict +0 -0
  947. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PLIST-bin.plist +0 -0
  948. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PLIST-xml.plist +0 -0
  949. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PLUS.xmp +0 -0
  950. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PNG.png +0 -0
  951. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PPM.ppm +0 -0
  952. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PSP.psp +0 -0
  953. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Palm.mobi +0 -0
  954. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Panasonic.jpg +0 -0
  955. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Panasonic.rw2 +0 -0
  956. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Pentax.avi +0 -0
  957. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Pentax.jpg +0 -0
  958. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PhaseOne.iiq +0 -0
  959. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PhotoCD.pcd +0 -0
  960. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PhotoMechanic.jpg +0 -0
  961. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Photoshop.psd +0 -0
  962. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/PostScript.eps +0 -0
  963. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/QuickTime.m4a +0 -0
  964. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/QuickTime.mov +0 -0
  965. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/RIFF.avi +0 -0
  966. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/RIFF.wav +0 -0
  967. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/RIFF.webp +0 -0
  968. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/RTF.rtf +0 -0
  969. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Radiance.hdr +0 -0
  970. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Real.ra +0 -0
  971. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Real.ram +0 -0
  972. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Real.rm +0 -0
  973. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Ricoh.jpg +0 -0
  974. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Ricoh2.jpg +0 -0
  975. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Sanyo.jpg +0 -0
  976. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Sigma.jpg +0 -0
  977. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Sigma.x3f +0 -0
  978. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/SigmaDP2.x3f +0 -0
  979. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Sony.jpg +0 -0
  980. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Sony.pmp +0 -0
  981. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Torrent.torrent +0 -0
  982. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Unknown.jpg +0 -0
  983. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/VCard.ics +0 -0
  984. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/VCard.vcf +0 -0
  985. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Vorbis.ogg +0 -0
  986. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/Writer.jpg +0 -0
  987. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP.inx +0 -0
  988. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP.jpg +0 -0
  989. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP.svg +0 -0
  990. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP.xml +0 -0
  991. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP.xmp +0 -0
  992. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP2.xmp +0 -0
  993. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP3.xmp +0 -0
  994. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP4.xmp +0 -0
  995. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP5.xmp +0 -0
  996. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/XMP6.xmp +0 -0
  997. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ZIP.gz +0 -0
  998. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/ZIP.zip +0 -0
  999. data/bin/{Image-ExifTool-10.31 → Image-ExifTool-10.40}/t/images/iWork.numbers +0 -0
  1000. data/lib/exiftool_vendored/version.rb +1 -1
  1001. metadata +1000 -997
  1002. data/bin/Image-ExifTool-10.31/Changes +0 -7604
  1003. data/bin/Image-ExifTool-10.31/MANIFEST +0 -995
  1004. data/bin/Image-ExifTool-10.31/META.json +0 -51
  1005. data/bin/Image-ExifTool-10.31/META.yml +0 -31
  1006. data/bin/Image-ExifTool-10.31/README +0 -239
  1007. data/bin/Image-ExifTool-10.31/config_files/time_zone.config +0 -56
  1008. data/bin/Image-ExifTool-10.31/exiftool +0 -6431
  1009. data/bin/Image-ExifTool-10.31/html/ExifTool.html +0 -2114
  1010. data/bin/Image-ExifTool-10.31/html/Shift.html +0 -209
  1011. data/bin/Image-ExifTool-10.31/html/TagNames/BMP.html +0 -110
  1012. data/bin/Image-ExifTool-10.31/html/TagNames/Canon.html +0 -9740
  1013. data/bin/Image-ExifTool-10.31/html/TagNames/Composite.html +0 -739
  1014. data/bin/Image-ExifTool-10.31/html/TagNames/EXIF.html +0 -3482
  1015. data/bin/Image-ExifTool-10.31/html/TagNames/Extra.html +0 -469
  1016. data/bin/Image-ExifTool-10.31/html/TagNames/FLIF.html +0 -79
  1017. data/bin/Image-ExifTool-10.31/html/TagNames/FlashPix.html +0 -1465
  1018. data/bin/Image-ExifTool-10.31/html/TagNames/FujiFilm.html +0 -849
  1019. data/bin/Image-ExifTool-10.31/html/TagNames/MWG.html +0 -584
  1020. data/bin/Image-ExifTool-10.31/html/TagNames/Minolta.html +0 -2633
  1021. data/bin/Image-ExifTool-10.31/html/TagNames/Nikon.html +0 -6002
  1022. data/bin/Image-ExifTool-10.31/html/TagNames/Olympus.html +0 -3655
  1023. data/bin/Image-ExifTool-10.31/html/TagNames/Panasonic.html +0 -1700
  1024. data/bin/Image-ExifTool-10.31/html/TagNames/PhaseOne.html +0 -253
  1025. data/bin/Image-ExifTool-10.31/html/TagNames/Photoshop.html +0 -739
  1026. data/bin/Image-ExifTool-10.31/html/TagNames/Sony.html +0 -10219
  1027. data/bin/Image-ExifTool-10.31/html/TagNames/XMP.html +0 -9332
  1028. data/bin/Image-ExifTool-10.31/html/ancient_history.html +0 -8209
  1029. data/bin/Image-ExifTool-10.31/html/data_members.html +0 -280
  1030. data/bin/Image-ExifTool-10.31/html/exiftool_pod.html +0 -2567
  1031. data/bin/Image-ExifTool-10.31/html/faq.html +0 -1589
  1032. data/bin/Image-ExifTool-10.31/html/filename.html +0 -352
  1033. data/bin/Image-ExifTool-10.31/html/geotag.html +0 -658
  1034. data/bin/Image-ExifTool-10.31/html/history.html +0 -375
  1035. data/bin/Image-ExifTool-10.31/html/idiosyncracies.html +0 -272
  1036. data/bin/Image-ExifTool-10.31/html/index.html +0 -1358
  1037. data/bin/Image-ExifTool-10.31/html/install.html +0 -259
  1038. data/bin/Image-ExifTool-10.31/html/under.html +0 -128
  1039. data/bin/Image-ExifTool-10.31/lib/File/RandomAccess.pm +0 -378
  1040. data/bin/Image-ExifTool-10.31/lib/File/RandomAccess.pod +0 -231
  1041. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool.pm +0 -7765
  1042. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool.pod +0 -2556
  1043. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/AES.pm +0 -501
  1044. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/AFCP.pm +0 -286
  1045. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/AIFF.pm +0 -289
  1046. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/APE.pm +0 -282
  1047. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/APP12.pm +0 -322
  1048. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/ASF.pm +0 -885
  1049. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Apple.pm +0 -153
  1050. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Audible.pm +0 -317
  1051. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/BMP.pm +0 -179
  1052. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/BPG.pm +0 -251
  1053. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/BZZ.pm +0 -472
  1054. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/BigTIFF.pm +0 -282
  1055. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/BuildTagLookup.pm +0 -2563
  1056. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Canon.pm +0 -8926
  1057. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/CanonCustom.pm +0 -2667
  1058. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/CanonRaw.pm +0 -910
  1059. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/CanonVRD.pm +0 -2273
  1060. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/CaptureOne.pm +0 -235
  1061. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Casio.pm +0 -2058
  1062. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Charset.pm +0 -423
  1063. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DICOM.pm +0 -3874
  1064. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DJI.pm +0 -71
  1065. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DNG.pm +0 -835
  1066. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DPX.pm +0 -182
  1067. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DV.pm +0 -319
  1068. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DarwinCore.pm +0 -322
  1069. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/DjVu.pm +0 -376
  1070. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/EXE.pm +0 -1401
  1071. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Exif.pm +0 -6038
  1072. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/FLAC.pm +0 -297
  1073. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/FLIF.pm +0 -345
  1074. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/FLIR.pm +0 -1533
  1075. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Fixup.pm +0 -366
  1076. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Flash.pm +0 -755
  1077. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/FlashPix.pm +0 -1935
  1078. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Font.pm +0 -647
  1079. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/FotoStation.pm +0 -261
  1080. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/FujiFilm.pm +0 -1257
  1081. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/GE.pm +0 -81
  1082. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/GIF.pm +0 -542
  1083. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/GIMP.pm +0 -258
  1084. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/GPS.pm +0 -558
  1085. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/GeoTiff.pm +0 -2263
  1086. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Geotag.pm +0 -1287
  1087. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/H264.pm +0 -1110
  1088. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/HP.pm +0 -263
  1089. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/HTML.pm +0 -576
  1090. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/HtmlDump.pm +0 -898
  1091. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/ICC_Profile.pm +0 -1013
  1092. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/ID3.pm +0 -1570
  1093. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/IPTC.pm +0 -1264
  1094. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/ISO.pm +0 -206
  1095. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/ITC.pm +0 -215
  1096. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Import.pm +0 -329
  1097. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/InDesign.pm +0 -277
  1098. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/JPEG.pm +0 -605
  1099. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/JPEGDigest.pm +0 -2616
  1100. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/JVC.pm +0 -130
  1101. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Jpeg2000.pm +0 -898
  1102. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Kodak.pm +0 -2096
  1103. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/KyoceraRaw.pm +0 -173
  1104. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/LNK.pm +0 -723
  1105. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/cs.pm +0 -1588
  1106. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/de.pm +0 -8692
  1107. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/en_ca.pm +0 -934
  1108. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/en_gb.pm +0 -977
  1109. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/es.pm +0 -4019
  1110. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/fi.pm +0 -2854
  1111. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/fr.pm +0 -4758
  1112. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/it.pm +0 -7918
  1113. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/ja.pm +0 -5835
  1114. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/ko.pm +0 -2330
  1115. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/nl.pm +0 -3222
  1116. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/pl.pm +0 -1276
  1117. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/ru.pm +0 -768
  1118. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/sv.pm +0 -638
  1119. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/tr.pm +0 -544
  1120. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1330
  1121. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lang/zh_tw.pm +0 -801
  1122. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Leaf.pm +0 -517
  1123. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Lytro.pm +0 -217
  1124. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/M2TS.pm +0 -729
  1125. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MIE.pm +0 -2564
  1126. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MIEUnits.pod +0 -377
  1127. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MIFF.pm +0 -279
  1128. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MNG.pm +0 -684
  1129. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MOI.pm +0 -158
  1130. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MPC.pm +0 -156
  1131. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MPEG.pm +0 -736
  1132. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MPF.pm +0 -292
  1133. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MWG.pm +0 -751
  1134. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MXF.pm +0 -3031
  1135. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MakerNotes.pm +0 -1745
  1136. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Matroska.pm +0 -932
  1137. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Microsoft.pm +0 -904
  1138. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Minolta.pm +0 -2993
  1139. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/MinoltaRaw.pm +0 -535
  1140. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Motorola.pm +0 -62
  1141. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Nikon.pm +0 -8155
  1142. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/NikonCapture.pm +0 -940
  1143. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/NikonCustom.pm +0 -8682
  1144. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Nintendo.pm +0 -128
  1145. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/OOXML.pm +0 -409
  1146. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Ogg.pm +0 -240
  1147. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Olympus.pm +0 -3989
  1148. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/OpenEXR.pm +0 -323
  1149. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Opus.pm +0 -98
  1150. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PDF.pm +0 -2367
  1151. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PGF.pm +0 -143
  1152. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PICT.pm +0 -1260
  1153. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PLIST.pm +0 -448
  1154. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PLUS.pm +0 -2607
  1155. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PNG.pm +0 -1255
  1156. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PPM.pm +0 -169
  1157. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PSP.pm +0 -306
  1158. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Palm.pm +0 -403
  1159. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Panasonic.pm +0 -2374
  1160. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PanasonicRaw.pm +0 -643
  1161. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Pentax.pm +0 -6133
  1162. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PhaseOne.pm +0 -707
  1163. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PhotoCD.pm +0 -507
  1164. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PhotoMechanic.pm +0 -256
  1165. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Photoshop.pm +0 -939
  1166. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PostScript.pm +0 -699
  1167. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/PrintIM.pm +0 -125
  1168. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Qualcomm.pm +0 -1344
  1169. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/QuickTime.pm +0 -6697
  1170. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/README +0 -1000
  1171. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/RIFF.pm +0 -1587
  1172. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/RSRC.pm +0 -241
  1173. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/RTF.pm +0 -383
  1174. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Radiance.pm +0 -144
  1175. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Rawzor.pm +0 -189
  1176. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Real.pm +0 -739
  1177. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Reconyx.pm +0 -190
  1178. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Ricoh.pm +0 -1148
  1179. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Samsung.pm +0 -1269
  1180. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Sanyo.pm +0 -440
  1181. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Scalado.pm +0 -141
  1182. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Shift.pl +0 -627
  1183. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Shortcuts.pm +0 -338
  1184. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Sigma.pm +0 -760
  1185. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/SigmaRaw.pm +0 -670
  1186. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Sony.pm +0 -9634
  1187. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/SonyIDC.pm +0 -332
  1188. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Stim.pm +0 -196
  1189. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/TagInfoXML.pm +0 -827
  1190. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/TagLookup.pm +0 -9367
  1191. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/TagNames.pod +0 -30437
  1192. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Theora.pm +0 -145
  1193. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Torrent.pm +0 -317
  1194. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Unknown.pm +0 -66
  1195. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/VCard.pm +0 -405
  1196. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Vorbis.pm +0 -255
  1197. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WriteCanonRaw.pl +0 -637
  1198. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WriteExif.pl +0 -2472
  1199. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WriteIPTC.pl +0 -706
  1200. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WritePDF.pl +0 -771
  1201. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WritePNG.pl +0 -390
  1202. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WritePhotoshop.pl +0 -266
  1203. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WritePostScript.pl +0 -772
  1204. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WriteQuickTime.pl +0 -358
  1205. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/WriteXMP.pl +0 -1381
  1206. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/Writer.pl +0 -6260
  1207. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/XMP.pm +0 -4087
  1208. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/XMP2.pl +0 -1321
  1209. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/XMPStruct.pl +0 -843
  1210. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/ZIP.pm +0 -667
  1211. data/bin/Image-ExifTool-10.31/lib/Image/ExifTool/iWork.pm +0 -223
  1212. data/bin/Image-ExifTool-10.31/perl-Image-ExifTool.spec +0 -113
  1213. data/bin/Image-ExifTool-10.31/t/BMP_2.out +0 -23
  1214. data/bin/Image-ExifTool-10.31/t/CanonRaw_6.out +0 -233
  1215. data/bin/Image-ExifTool-10.31/t/Canon_2.out +0 -358
  1216. data/bin/Image-ExifTool-10.31/t/Casio_2.out +0 -72
  1217. data/bin/Image-ExifTool-10.31/t/Casio_3.out +0 -102
  1218. data/bin/Image-ExifTool-10.31/t/Casio_5.out +0 -80
  1219. data/bin/Image-ExifTool-10.31/t/Casio_6.out +0 -117
  1220. data/bin/Image-ExifTool-10.31/t/DNG_2.out +0 -329
  1221. data/bin/Image-ExifTool-10.31/t/ExifTool_2.out +0 -427
  1222. data/bin/Image-ExifTool-10.31/t/ExifTool_29.out +0 -426
  1223. data/bin/Image-ExifTool-10.31/t/FLIF_2.out +0 -50
  1224. data/bin/Image-ExifTool-10.31/t/FLIF_4.out +0 -17
  1225. data/bin/Image-ExifTool-10.31/t/FLIR_2.out +0 -118
  1226. data/bin/Image-ExifTool-10.31/t/FujiFilm_2.out +0 -89
  1227. data/bin/Image-ExifTool-10.31/t/FujiFilm_3.out +0 -90
  1228. data/bin/Image-ExifTool-10.31/t/FujiFilm_4.out +0 -143
  1229. data/bin/Image-ExifTool-10.31/t/GE_2.out +0 -86
  1230. data/bin/Image-ExifTool-10.31/t/GE_3.out +0 -86
  1231. data/bin/Image-ExifTool-10.31/t/GPS_2.out +0 -96
  1232. data/bin/Image-ExifTool-10.31/t/GPS_3.out +0 -98
  1233. data/bin/Image-ExifTool-10.31/t/Kodak_2.out +0 -111
  1234. data/bin/Image-ExifTool-10.31/t/Kodak_3.out +0 -121
  1235. data/bin/Image-ExifTool-10.31/t/Lang.t +0 -40
  1236. data/bin/Image-ExifTool-10.31/t/Lang_10.out +0 -46
  1237. data/bin/Image-ExifTool-10.31/t/Lang_11.out +0 -46
  1238. data/bin/Image-ExifTool-10.31/t/Lang_12.out +0 -46
  1239. data/bin/Image-ExifTool-10.31/t/Lang_13.out +0 -46
  1240. data/bin/Image-ExifTool-10.31/t/Lang_14.out +0 -46
  1241. data/bin/Image-ExifTool-10.31/t/Lang_15.out +0 -46
  1242. data/bin/Image-ExifTool-10.31/t/Lang_16.out +0 -46
  1243. data/bin/Image-ExifTool-10.31/t/Lang_17.out +0 -46
  1244. data/bin/Image-ExifTool-10.31/t/Lang_18.out +0 -46
  1245. data/bin/Image-ExifTool-10.31/t/Lang_2.out +0 -46
  1246. data/bin/Image-ExifTool-10.31/t/Lang_3.out +0 -46
  1247. data/bin/Image-ExifTool-10.31/t/Lang_4.out +0 -46
  1248. data/bin/Image-ExifTool-10.31/t/Lang_5.out +0 -46
  1249. data/bin/Image-ExifTool-10.31/t/Lang_6.out +0 -46
  1250. data/bin/Image-ExifTool-10.31/t/Lang_7.out +0 -46
  1251. data/bin/Image-ExifTool-10.31/t/Lang_8.out +0 -46
  1252. data/bin/Image-ExifTool-10.31/t/Lang_9.out +0 -46
  1253. data/bin/Image-ExifTool-10.31/t/MIE_3.out +0 -136
  1254. data/bin/Image-ExifTool-10.31/t/MWG.t +0 -90
  1255. data/bin/Image-ExifTool-10.31/t/MWG_2.out +0 -13
  1256. data/bin/Image-ExifTool-10.31/t/Minolta_2.out +0 -135
  1257. data/bin/Image-ExifTool-10.31/t/Minolta_3.out +0 -148
  1258. data/bin/Image-ExifTool-10.31/t/Minolta_4.out +0 -150
  1259. data/bin/Image-ExifTool-10.31/t/Nikon_2.out +0 -84
  1260. data/bin/Image-ExifTool-10.31/t/Nikon_3.out +0 -100
  1261. data/bin/Image-ExifTool-10.31/t/Nikon_4.out +0 -176
  1262. data/bin/Image-ExifTool-10.31/t/Nikon_5.out +0 -169
  1263. data/bin/Image-ExifTool-10.31/t/Nikon_7.out +0 -261
  1264. data/bin/Image-ExifTool-10.31/t/Olympus_2.out +0 -81
  1265. data/bin/Image-ExifTool-10.31/t/Olympus_3.out +0 -83
  1266. data/bin/Image-ExifTool-10.31/t/Olympus_4.out +0 -194
  1267. data/bin/Image-ExifTool-10.31/t/Olympus_5.out +0 -266
  1268. data/bin/Image-ExifTool-10.31/t/Olympus_6.out +0 -153
  1269. data/bin/Image-ExifTool-10.31/t/Panasonic_2.out +0 -101
  1270. data/bin/Image-ExifTool-10.31/t/Panasonic_3.out +0 -121
  1271. data/bin/Image-ExifTool-10.31/t/Panasonic_4.out +0 -206
  1272. data/bin/Image-ExifTool-10.31/t/Panasonic_5.out +0 -244
  1273. data/bin/Image-ExifTool-10.31/t/Pentax_2.out +0 -225
  1274. data/bin/Image-ExifTool-10.31/t/Pentax_3.out +0 -266
  1275. data/bin/Image-ExifTool-10.31/t/Pentax_4.out +0 -131
  1276. data/bin/Image-ExifTool-10.31/t/PhaseOne_2.out +0 -99
  1277. data/bin/Image-ExifTool-10.31/t/PhaseOne_3.out +0 -170
  1278. data/bin/Image-ExifTool-10.31/t/RIFF_3.out +0 -54
  1279. data/bin/Image-ExifTool-10.31/t/Ricoh_2.out +0 -72
  1280. data/bin/Image-ExifTool-10.31/t/Ricoh_3.out +0 -100
  1281. data/bin/Image-ExifTool-10.31/t/Ricoh_4.out +0 -114
  1282. data/bin/Image-ExifTool-10.31/t/Sanyo_2.out +0 -103
  1283. data/bin/Image-ExifTool-10.31/t/Sanyo_3.out +0 -113
  1284. data/bin/Image-ExifTool-10.31/t/Sigma_2.out +0 -93
  1285. data/bin/Image-ExifTool-10.31/t/Sigma_3.out +0 -96
  1286. data/bin/Image-ExifTool-10.31/t/Sigma_5.out +0 -194
  1287. data/bin/Image-ExifTool-10.31/t/Sony_2.out +0 -86
  1288. data/bin/Image-ExifTool-10.31/t/Sony_3.out +0 -87
  1289. data/bin/Image-ExifTool-10.31/t/Sony_5.out +0 -34
  1290. data/bin/Image-ExifTool-10.31/t/Unknown_2.out +0 -92
  1291. data/bin/Image-ExifTool-10.31/t/Unknown_3.out +0 -92
  1292. data/bin/Image-ExifTool-10.31/t/Writer.t +0 -999
  1293. data/bin/Image-ExifTool-10.31/t/Writer_10.out +0 -246
  1294. data/bin/Image-ExifTool-10.31/t/Writer_46.out +0 -107
  1295. data/bin/Image-ExifTool-10.31/t/Writer_51.out +0 -414
  1296. data/bin/Image-ExifTool-10.31/t/Writer_9.out +0 -243
@@ -0,0 +1,2273 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: CanonVRD.pm
3
+ #
4
+ # Description: Read/write Canon VRD and DR4 information
5
+ #
6
+ # Revisions: 2006/10/30 - P. Harvey Created
7
+ # 2007/10/23 - PH Added new VRD 3.0 tags
8
+ # 2008/08/29 - PH Added new VRD 3.4 tags
9
+ # 2008/12/02 - PH Added new VRD 3.5 tags
10
+ # 2010/06/18 - PH Support variable-length CustomPictureStyle data
11
+ # 2010/09/14 - PH Added r/w support for XMP in VRD
12
+ # 2015/05/16 - PH Added DR4 support (DPP 4.1.50.0)
13
+ #
14
+ # References: 1) Bogdan private communication (Canon DPP v3.4.1.1)
15
+ # 2) Gert Kello private communiation (DPP 3.8)
16
+ #------------------------------------------------------------------------------
17
+
18
+ package Image::ExifTool::CanonVRD;
19
+
20
+ use strict;
21
+ use vars qw($VERSION);
22
+ use Image::ExifTool qw(:DataAccess :Utils);
23
+ use Image::ExifTool::Canon;
24
+
25
+ $VERSION = '1.28';
26
+
27
+ sub ProcessCanonVRD($$;$);
28
+ sub WriteCanonVRD($$;$);
29
+ sub ProcessEditData($$$);
30
+ sub ProcessIHL($$$);
31
+ sub ProcessIHLExif($$$);
32
+ sub ProcessDR4($$;$);
33
+ sub SortDR4($$);
34
+
35
+ # map for adding directories to VRD
36
+ my %vrdMap = (
37
+ XMP => 'CanonVRD',
38
+ CanonVRD => 'VRD',
39
+ );
40
+
41
+ my %noYes = (
42
+ PrintConvColumns => 2,
43
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
44
+ );
45
+
46
+ # DR4 format codes
47
+ my %vrdFormat = (
48
+ 1 => 'int32u',
49
+ 2 => 'string',
50
+ 8 => 'int32u',
51
+ 9 => 'int32s',
52
+ 13 => 'double',
53
+ 33 => 'int32u', # (array)
54
+ 38 => 'double', # (array)
55
+ # 254 => 'undef', ?
56
+ 255 => 'undef',
57
+ );
58
+
59
+ # empty VRD header/footer for creating VRD from scratch
60
+ my $blankHeader = "CANON OPTIONAL DATA\0\0\x01\0\0\0\0\0\0";
61
+ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
62
+
63
+ # main tag table blocks in CanonVRD trailer (ref PH)
64
+ %Image::ExifTool::CanonVRD::Main = (
65
+ WRITE_PROC => \&WriteCanonVRD,
66
+ PROCESS_PROC => \&ProcessCanonVRD,
67
+ NOTES => q{
68
+ Canon Digital Photo Professional writes VRD (Recipe Data) information as a
69
+ trailer record to JPEG, TIFF, CRW and CR2 images, or as stand-alone VRD or
70
+ DR4 files. The tags listed below represent information found in these
71
+ records. The complete VRD/DR4 data record may be accessed as a block using
72
+ the Extra 'CanonVRD' or 'CanonDR4' tag, but this tag is not extracted or
73
+ copied unless specified explicitly.
74
+ },
75
+ 0xffff00f4 => {
76
+ Name => 'EditData',
77
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::Edit' },
78
+ },
79
+ 0xffff00f5 => {
80
+ Name => 'IHLData',
81
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::IHL' },
82
+ },
83
+ 0xffff00f6 => {
84
+ Name => 'XMP',
85
+ Flags => [ 'Binary', 'Protected' ],
86
+ Writable => 'undef', # allow writing/deleting as a block
87
+ SubDirectory => {
88
+ DirName => 'XMP',
89
+ TagTable => 'Image::ExifTool::XMP::Main',
90
+ },
91
+ },
92
+ 0xffff00f7 => {
93
+ Name => 'Edit4Data',
94
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::Edit4' },
95
+ },
96
+ );
97
+
98
+ # the VRD edit information is divided into sections
99
+ %Image::ExifTool::CanonVRD::Edit = (
100
+ WRITE_PROC => \&ProcessEditData,
101
+ PROCESS_PROC => \&ProcessEditData,
102
+ VARS => { ID_LABEL => 'Index' }, # change TagID label in documentation
103
+ NOTES => 'Canon VRD edit information.',
104
+ 0 => {
105
+ Name => 'VRD1',
106
+ Size => 0x272, # size of version 1.0 edit information in bytes
107
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::Ver1' },
108
+ },
109
+ 1 => {
110
+ Name => 'VRDStampTool',
111
+ Size => 0, # size is variable, and obtained from int32u at directory start
112
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::StampTool' },
113
+ },
114
+ 2 => {
115
+ Name => 'VRD2',
116
+ Size => undef, # size is the remaining edit data
117
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::Ver2' },
118
+ },
119
+ );
120
+
121
+ # Canon DPP version 4 edit information
122
+ %Image::ExifTool::CanonVRD::Edit4 = (
123
+ WRITE_PROC => \&ProcessEditData,
124
+ PROCESS_PROC => \&ProcessEditData,
125
+ VARS => { ID_LABEL => 'Index' }, # change TagID label in documentation
126
+ NOTES => 'Canon DPP version 4 edit information.',
127
+ 0 => {
128
+ Name => 'DR4',
129
+ Size => undef, # size is the remaining edit data
130
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::DR4' },
131
+ },
132
+ );
133
+
134
+ # "IHL Created Optional Item Data" tags (not yet writable)
135
+ %Image::ExifTool::CanonVRD::IHL = (
136
+ PROCESS_PROC => \&ProcessIHL,
137
+ TAG_PREFIX => 'VRD_IHL',
138
+ GROUPS => { 2 => 'Image' },
139
+ 1 => [
140
+ # this contains edited TIFF-format data, with an original IFD at 0x0008
141
+ # and an edited IFD with offset given in the TIFF header.
142
+ {
143
+ Name => 'IHL_EXIF',
144
+ Condition => '$self->Options("ExtractEmbedded")',
145
+ SubDirectory => {
146
+ TagTable => 'Image::ExifTool::Exif::Main',
147
+ ProcessProc => \&ProcessIHLExif,
148
+ },
149
+ },{
150
+ Name => 'IHL_EXIF',
151
+ Notes => q{
152
+ extracted as a block if the Unknown option is used, or processed as the
153
+ first sub-document with the ExtractEmbedded option
154
+ },
155
+ Binary => 1,
156
+ Unknown => 1,
157
+ },
158
+ ],
159
+ # 2 - written by DPP 3.0.2.6, and it looks something like edit data,
160
+ # but I haven't decoded it yet - PH
161
+ 3 => {
162
+ # (same size as the PreviewImage with DPP 3.0.2.6)
163
+ Name => 'ThumbnailImage',
164
+ Groups => { 2 => 'Preview' },
165
+ Binary => 1,
166
+ },
167
+ 4 => {
168
+ Name => 'PreviewImage',
169
+ Groups => { 2 => 'Preview' },
170
+ Binary => 1,
171
+ },
172
+ 5 => {
173
+ Name => 'RawCodecVersion',
174
+ ValueConv => '$val =~ s/\0.*//s; $val', # truncate string at null
175
+ },
176
+ 6 => {
177
+ Name => 'CRCDevelParams',
178
+ Binary => 1,
179
+ Unknown => 1,
180
+ },
181
+ );
182
+
183
+ # VRD version 1 tags (ref PH)
184
+ %Image::ExifTool::CanonVRD::Ver1 = (
185
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
186
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
187
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
188
+ WRITABLE => 1,
189
+ FIRST_ENTRY => 0,
190
+ GROUPS => { 2 => 'Image' },
191
+ DATAMEMBER => [ 0x002 ], # necessary for writing
192
+ #
193
+ # RAW image adjustment
194
+ #
195
+ 0x002 => {
196
+ Name => 'VRDVersion',
197
+ Format => 'int16u',
198
+ Writable => 0,
199
+ DataMember => 'VRDVersion',
200
+ RawConv => '$$self{VRDVersion} = $val',
201
+ PrintConv => '$val =~ s/^(\d)(\d*)(\d)$/$1.$2.$3/; $val',
202
+ },
203
+ 0x006 => {
204
+ Name => 'WBAdjRGGBLevels',
205
+ Format => 'int16u[4]',
206
+ },
207
+ 0x018 => {
208
+ Name => 'WhiteBalanceAdj',
209
+ Format => 'int16u',
210
+ PrintConvColumns => 2,
211
+ PrintConv => {
212
+ 0 => 'Auto',
213
+ 1 => 'Daylight',
214
+ 2 => 'Cloudy',
215
+ 3 => 'Tungsten',
216
+ 4 => 'Fluorescent',
217
+ 5 => 'Flash',
218
+ 8 => 'Shade',
219
+ 9 => 'Kelvin',
220
+ 30 => 'Manual (Click)',
221
+ 31 => 'Shot Settings',
222
+ },
223
+ },
224
+ 0x01a => {
225
+ Name => 'WBAdjColorTemp',
226
+ Format => 'int16u',
227
+ },
228
+ # 0x01c similar to 0x006
229
+ 0x024 => {
230
+ Name => 'WBFineTuneActive',
231
+ Format => 'int16u',
232
+ %noYes,
233
+ },
234
+ 0x028 => {
235
+ Name => 'WBFineTuneSaturation',
236
+ Format => 'int16u',
237
+ },
238
+ 0x02c => {
239
+ Name => 'WBFineTuneTone',
240
+ Format => 'int16u',
241
+ },
242
+ 0x02e => {
243
+ Name => 'RawColorAdj',
244
+ Format => 'int16u',
245
+ PrintConv => {
246
+ 0 => 'Shot Settings',
247
+ 1 => 'Faithful',
248
+ 2 => 'Custom',
249
+ },
250
+ },
251
+ 0x030 => {
252
+ Name => 'RawCustomSaturation',
253
+ Format => 'int32s',
254
+ },
255
+ 0x034 => {
256
+ Name => 'RawCustomTone',
257
+ Format => 'int32s',
258
+ },
259
+ 0x038 => {
260
+ Name => 'RawBrightnessAdj',
261
+ Format => 'int32s',
262
+ ValueConv => '$val / 6000',
263
+ ValueConvInv => 'int($val * 6000 + ($val < 0 ? -0.5 : 0.5))',
264
+ PrintConv => 'sprintf("%.2f",$val)',
265
+ PrintConvInv => '$val',
266
+ },
267
+ 0x03c => {
268
+ Name => 'ToneCurveProperty',
269
+ Format => 'int16u',
270
+ PrintConvColumns => 2,
271
+ PrintConv => {
272
+ 0 => 'Shot Settings',
273
+ 1 => 'Linear',
274
+ 2 => 'Custom 1',
275
+ 3 => 'Custom 2',
276
+ 4 => 'Custom 3',
277
+ 5 => 'Custom 4',
278
+ 6 => 'Custom 5',
279
+ },
280
+ },
281
+ # 0x040 usually "10 9 2"
282
+ 0x07a => {
283
+ Name => 'DynamicRangeMin',
284
+ Format => 'int16u',
285
+ },
286
+ 0x07c => {
287
+ Name => 'DynamicRangeMax',
288
+ Format => 'int16u',
289
+ },
290
+ # 0x0c6 usually "10 9 2"
291
+ #
292
+ # RGB image adjustment
293
+ #
294
+ 0x110 => {
295
+ Name => 'ToneCurveActive',
296
+ Format => 'int16u',
297
+ %noYes,
298
+ },
299
+ 0x113 => {
300
+ Name => 'ToneCurveMode',
301
+ PrintConv => { 0 => 'RGB', 1 => 'Luminance' },
302
+ },
303
+ 0x114 => {
304
+ Name => 'BrightnessAdj',
305
+ Format => 'int8s',
306
+ },
307
+ 0x115 => {
308
+ Name => 'ContrastAdj',
309
+ Format => 'int8s',
310
+ },
311
+ 0x116 => {
312
+ Name => 'SaturationAdj',
313
+ Format => 'int16s',
314
+ },
315
+ 0x11e => {
316
+ Name => 'ColorToneAdj',
317
+ Notes => 'in degrees, so -1 is the same as 359',
318
+ Format => 'int32s',
319
+ },
320
+ 0x126 => {
321
+ Name => 'LuminanceCurvePoints',
322
+ Format => 'int16u[21]',
323
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
324
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
325
+ },
326
+ 0x150 => {
327
+ Name => 'LuminanceCurveLimits',
328
+ Notes => '4 numbers: input and output highlight and shadow points',
329
+ Format => 'int16u[4]',
330
+ },
331
+ 0x159 => {
332
+ Name => 'ToneCurveInterpolation',
333
+ PrintConv => { 0 => 'Curve', 1 => 'Straight' },
334
+ },
335
+ 0x160 => {
336
+ Name => 'RedCurvePoints',
337
+ Format => 'int16u[21]',
338
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
339
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
340
+ },
341
+ # 0x193 same as 0x159
342
+ 0x19a => {
343
+ Name => 'GreenCurvePoints',
344
+ Format => 'int16u[21]',
345
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
346
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
347
+ },
348
+ # 0x1cd same as 0x159
349
+ 0x1d4 => {
350
+ Name => 'BlueCurvePoints',
351
+ Format => 'int16u[21]',
352
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
353
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
354
+ },
355
+ 0x18a => {
356
+ Name => 'RedCurveLimits',
357
+ Format => 'int16u[4]',
358
+ },
359
+ 0x1c4 => {
360
+ Name => 'GreenCurveLimits',
361
+ Format => 'int16u[4]',
362
+ },
363
+ 0x1fe => {
364
+ Name => 'BlueCurveLimits',
365
+ Format => 'int16u[4]',
366
+ },
367
+ # 0x207 same as 0x159
368
+ 0x20e => {
369
+ Name => 'RGBCurvePoints',
370
+ Format => 'int16u[21]',
371
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
372
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
373
+ },
374
+ 0x238 => {
375
+ Name => 'RGBCurveLimits',
376
+ Format => 'int16u[4]',
377
+ },
378
+ # 0x241 same as 0x159
379
+ 0x244 => {
380
+ Name => 'CropActive',
381
+ Format => 'int16u',
382
+ %noYes,
383
+ },
384
+ 0x246 => {
385
+ Name => 'CropLeft',
386
+ Notes => 'crop coordinates in original unrotated image',
387
+ Format => 'int16u',
388
+ },
389
+ 0x248 => {
390
+ Name => 'CropTop',
391
+ Format => 'int16u',
392
+ },
393
+ 0x24a => {
394
+ Name => 'CropWidth',
395
+ Format => 'int16u',
396
+ },
397
+ 0x24c => {
398
+ Name => 'CropHeight',
399
+ Format => 'int16u',
400
+ },
401
+ 0x25a => {
402
+ Name => 'SharpnessAdj',
403
+ Format => 'int16u',
404
+ },
405
+ 0x260 => {
406
+ Name => 'CropAspectRatio',
407
+ Format => 'int16u',
408
+ PrintConv => {
409
+ 0 => 'Free',
410
+ 1 => '3:2',
411
+ 2 => '2:3',
412
+ 3 => '4:3',
413
+ 4 => '3:4',
414
+ 5 => 'A-size Landscape',
415
+ 6 => 'A-size Portrait',
416
+ 7 => 'Letter-size Landscape',
417
+ 8 => 'Letter-size Portrait',
418
+ 9 => '4:5',
419
+ 10 => '5:4',
420
+ 11 => '1:1',
421
+ 12 => 'Circle',
422
+ 65535 => 'Custom',
423
+ },
424
+ },
425
+ 0x262 => {
426
+ Name => 'ConstrainedCropWidth',
427
+ Format => 'float',
428
+ PrintConv => 'sprintf("%.7g",$val)',
429
+ PrintConvInv => '$val',
430
+ },
431
+ 0x266 => {
432
+ Name => 'ConstrainedCropHeight',
433
+ Format => 'float',
434
+ PrintConv => 'sprintf("%.7g",$val)',
435
+ PrintConvInv => '$val',
436
+ },
437
+ 0x26a => {
438
+ Name => 'CheckMark',
439
+ Format => 'int16u',
440
+ PrintConv => {
441
+ 0 => 'Clear',
442
+ 1 => 1,
443
+ 2 => 2,
444
+ 3 => 3,
445
+ },
446
+ },
447
+ 0x26e => {
448
+ Name => 'Rotation',
449
+ Format => 'int16u',
450
+ PrintConv => {
451
+ 0 => 0,
452
+ 1 => 90,
453
+ 2 => 180,
454
+ 3 => 270,
455
+ },
456
+ },
457
+ 0x270 => {
458
+ Name => 'WorkColorSpace',
459
+ Format => 'int16u',
460
+ PrintConv => {
461
+ 0 => 'sRGB',
462
+ 1 => 'Adobe RGB',
463
+ 2 => 'Wide Gamut RGB',
464
+ 3 => 'Apple RGB',
465
+ 4 => 'ColorMatch RGB',
466
+ },
467
+ },
468
+ # (VRD 1.0.0 edit data ends here -- 0x272 bytes)
469
+ );
470
+
471
+ # VRD Stamp Tool tags (ref PH)
472
+ %Image::ExifTool::CanonVRD::StampTool = (
473
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
474
+ GROUPS => { 2 => 'Image' },
475
+ 0x00 => {
476
+ Name => 'StampToolCount',
477
+ Format => 'int32u',
478
+ },
479
+ );
480
+
481
+ # VRD version 2 and 3 tags (ref PH)
482
+ %Image::ExifTool::CanonVRD::Ver2 = (
483
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
484
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
485
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
486
+ WRITABLE => 1,
487
+ FIRST_ENTRY => 0,
488
+ FORMAT => 'int16s',
489
+ DATAMEMBER => [ 0x58, 0xdc, 0xdf, 0xe0 ], # (required for DataMember and var-format tags)
490
+ IS_SUBDIR => [ 0xe0 ],
491
+ GROUPS => { 2 => 'Image' },
492
+ NOTES => 'Tags added in DPP version 2.0 and later.',
493
+ 0x02 => {
494
+ Name => 'PictureStyle',
495
+ PrintConvColumns => 2,
496
+ PrintConv => {
497
+ 0 => 'Standard',
498
+ 1 => 'Portrait',
499
+ 2 => 'Landscape',
500
+ 3 => 'Neutral',
501
+ 4 => 'Faithful',
502
+ 5 => 'Monochrome',
503
+ 6 => 'Unknown?', # PH (maybe in-camera custom picture style?)
504
+ 7 => 'Custom',
505
+ },
506
+ },
507
+ 0x03 => { Name => 'IsCustomPictureStyle', %noYes },
508
+ # 0x08: 3
509
+ # 0x09: 4095
510
+ # 0x0a: 0
511
+ # 0x0b: 4095
512
+ # 0x0c: 0
513
+ 0x0d => 'StandardRawColorTone',
514
+ 0x0e => 'StandardRawSaturation',
515
+ 0x0f => 'StandardRawContrast',
516
+ 0x10 => { Name => 'StandardRawLinear', %noYes },
517
+ 0x11 => 'StandardRawSharpness',
518
+ 0x12 => 'StandardRawHighlightPoint',
519
+ 0x13 => 'StandardRawShadowPoint',
520
+ 0x14 => 'StandardOutputHighlightPoint', #2
521
+ 0x15 => 'StandardOutputShadowPoint', #2
522
+ 0x16 => 'PortraitRawColorTone',
523
+ 0x17 => 'PortraitRawSaturation',
524
+ 0x18 => 'PortraitRawContrast',
525
+ 0x19 => { Name => 'PortraitRawLinear', %noYes },
526
+ 0x1a => 'PortraitRawSharpness',
527
+ 0x1b => 'PortraitRawHighlightPoint',
528
+ 0x1c => 'PortraitRawShadowPoint',
529
+ 0x1d => 'PortraitOutputHighlightPoint',
530
+ 0x1e => 'PortraitOutputShadowPoint',
531
+ 0x1f => 'LandscapeRawColorTone',
532
+ 0x20 => 'LandscapeRawSaturation',
533
+ 0x21 => 'LandscapeRawContrast',
534
+ 0x22 => { Name => 'LandscapeRawLinear', %noYes },
535
+ 0x23 => 'LandscapeRawSharpness',
536
+ 0x24 => 'LandscapeRawHighlightPoint',
537
+ 0x25 => 'LandscapeRawShadowPoint',
538
+ 0x26 => 'LandscapeOutputHighlightPoint',
539
+ 0x27 => 'LandscapeOutputShadowPoint',
540
+ 0x28 => 'NeutralRawColorTone',
541
+ 0x29 => 'NeutralRawSaturation',
542
+ 0x2a => 'NeutralRawContrast',
543
+ 0x2b => { Name => 'NeutralRawLinear', %noYes },
544
+ 0x2c => 'NeutralRawSharpness',
545
+ 0x2d => 'NeutralRawHighlightPoint',
546
+ 0x2e => 'NeutralRawShadowPoint',
547
+ 0x2f => 'NeutralOutputHighlightPoint',
548
+ 0x30 => 'NeutralOutputShadowPoint',
549
+ 0x31 => 'FaithfulRawColorTone',
550
+ 0x32 => 'FaithfulRawSaturation',
551
+ 0x33 => 'FaithfulRawContrast',
552
+ 0x34 => { Name => 'FaithfulRawLinear', %noYes },
553
+ 0x35 => 'FaithfulRawSharpness',
554
+ 0x36 => 'FaithfulRawHighlightPoint',
555
+ 0x37 => 'FaithfulRawShadowPoint',
556
+ 0x38 => 'FaithfulOutputHighlightPoint',
557
+ 0x39 => 'FaithfulOutputShadowPoint',
558
+ 0x3a => {
559
+ Name => 'MonochromeFilterEffect',
560
+ PrintConv => {
561
+ -2 => 'None',
562
+ -1 => 'Yellow',
563
+ 0 => 'Orange',
564
+ 1 => 'Red',
565
+ 2 => 'Green',
566
+ },
567
+ },
568
+ 0x3b => {
569
+ Name => 'MonochromeToningEffect',
570
+ PrintConv => {
571
+ -2 => 'None',
572
+ -1 => 'Sepia',
573
+ 0 => 'Blue',
574
+ 1 => 'Purple',
575
+ 2 => 'Green',
576
+ },
577
+ },
578
+ 0x3c => 'MonochromeContrast',
579
+ 0x3d => { Name => 'MonochromeLinear', %noYes },
580
+ 0x3e => 'MonochromeSharpness',
581
+ 0x3f => 'MonochromeRawHighlightPoint',
582
+ 0x40 => 'MonochromeRawShadowPoint',
583
+ 0x41 => 'MonochromeOutputHighlightPoint',
584
+ 0x42 => 'MonochromeOutputShadowPoint',
585
+ 0x45 => { Name => 'UnknownContrast', Unknown => 1 },
586
+ 0x46 => { Name => 'UnknownLinear', %noYes, Unknown => 1 },
587
+ 0x47 => { Name => 'UnknownSharpness', Unknown => 1 },
588
+ 0x48 => { Name => 'UnknownRawHighlightPoint', Unknown => 1 },
589
+ 0x49 => { Name => 'UnknownRawShadowPoint', Unknown => 1 },
590
+ 0x4a => { Name => 'UnknownOutputHighlightPoint',Unknown => 1 },
591
+ 0x4b => { Name => 'UnknownOutputShadowPoint', Unknown => 1 },
592
+ 0x4c => 'CustomColorTone',
593
+ 0x4d => 'CustomSaturation',
594
+ 0x4e => 'CustomContrast',
595
+ 0x4f => { Name => 'CustomLinear', %noYes },
596
+ 0x50 => 'CustomSharpness',
597
+ 0x51 => 'CustomRawHighlightPoint',
598
+ 0x52 => 'CustomRawShadowPoint',
599
+ 0x53 => 'CustomOutputHighlightPoint',
600
+ 0x54 => 'CustomOutputShadowPoint',
601
+ 0x58 => {
602
+ Name => 'CustomPictureStyleData',
603
+ Format => 'var_int16u',
604
+ Binary => 1,
605
+ Notes => 'variable-length data structure',
606
+ Writable => 0,
607
+ RawConv => 'length($val) == 2 ? undef : $val', # ignore if no data
608
+ },
609
+ # (VRD 2.0.0 edit data ends here: 178 bytes, index 0x59)
610
+ 0x5e => [{
611
+ Name => 'ChrominanceNoiseReduction',
612
+ Condition => '$$self{VRDVersion} < 330',
613
+ Notes => 'VRDVersion prior to 3.3.0',
614
+ PrintConv => {
615
+ 0 => 'Off',
616
+ 58 => 'Low',
617
+ 100 => 'High',
618
+ },
619
+ },{ #1
620
+ Name => 'ChrominanceNoiseReduction',
621
+ Notes => 'VRDVersion 3.3.0 or later',
622
+ PrintHex => 1,
623
+ PrintConvColumns => 4,
624
+ PrintConv => {
625
+ 0x00 => 0,
626
+ 0x10 => 1,
627
+ 0x21 => 2,
628
+ 0x32 => 3,
629
+ 0x42 => 4,
630
+ 0x53 => 5,
631
+ 0x64 => 6,
632
+ 0x74 => 7,
633
+ 0x85 => 8,
634
+ 0x96 => 9,
635
+ 0xa6 => 10,
636
+ 0xa7 => 11,
637
+ 0xa8 => 12,
638
+ 0xa9 => 13,
639
+ 0xaa => 14,
640
+ 0xab => 15,
641
+ 0xac => 16,
642
+ 0xad => 17,
643
+ 0xae => 18,
644
+ 0xaf => 19,
645
+ 0xb0 => 20,
646
+ },
647
+ }],
648
+ 0x5f => [{
649
+ Name => 'LuminanceNoiseReduction',
650
+ Condition => '$$self{VRDVersion} < 330',
651
+ Notes => 'VRDVersion prior to 3.3.0',
652
+ PrintConv => {
653
+ 0 => 'Off',
654
+ 65 => 'Low',
655
+ 100 => 'High',
656
+ },
657
+ },{ #1
658
+ Name => 'LuminanceNoiseReduction',
659
+ Notes => 'VRDVersion 3.3.0 or later',
660
+ PrintHex => 1,
661
+ PrintConvColumns => 4,
662
+ PrintConv => {
663
+ 0x00 => 0,
664
+ 0x41 => 1,
665
+ 0x64 => 2,
666
+ 0x6e => 3,
667
+ 0x78 => 4,
668
+ 0x82 => 5,
669
+ 0x8c => 6,
670
+ 0x96 => 7,
671
+ 0xa0 => 8,
672
+ 0xaa => 9,
673
+ 0xb4 => 10,
674
+ 0xb5 => 11,
675
+ 0xb6 => 12,
676
+ 0xb7 => 13,
677
+ 0xb8 => 14,
678
+ 0xb9 => 15,
679
+ 0xba => 16,
680
+ 0xbb => 17,
681
+ 0xbc => 18,
682
+ 0xbd => 19,
683
+ 0xbe => 20,
684
+ },
685
+ }],
686
+ 0x60 => [{
687
+ Name => 'ChrominanceNR_TIFF_JPEG',
688
+ Condition => '$$self{VRDVersion} < 330',
689
+ Notes => 'VRDVersion prior to 3.3.0',
690
+ PrintConv => {
691
+ 0 => 'Off',
692
+ 33 => 'Low',
693
+ 100 => 'High',
694
+ },
695
+ },{ #1
696
+ Name => 'ChrominanceNR_TIFF_JPEG',
697
+ Notes => 'VRDVersion 3.3.0 or later',
698
+ PrintHex => 1,
699
+ PrintConvColumns => 4,
700
+ PrintConv => {
701
+ 0x00 => 0,
702
+ 0x10 => 1,
703
+ 0x21 => 2,
704
+ 0x32 => 3,
705
+ 0x42 => 4,
706
+ 0x53 => 5,
707
+ 0x64 => 6,
708
+ 0x74 => 7,
709
+ 0x85 => 8,
710
+ 0x96 => 9,
711
+ 0xa6 => 10,
712
+ 0xa7 => 11,
713
+ 0xa8 => 12,
714
+ 0xa9 => 13,
715
+ 0xaa => 14,
716
+ 0xab => 15,
717
+ 0xac => 16,
718
+ 0xad => 17,
719
+ 0xae => 18,
720
+ 0xaf => 19,
721
+ 0xb0 => 20,
722
+ },
723
+ }],
724
+ # 0x61: 1
725
+ # (VRD 3.0.0 edit data ends here: 196 bytes, index 0x62)
726
+ 0x62 => { Name => 'ChromaticAberrationOn', %noYes },
727
+ 0x63 => { Name => 'DistortionCorrectionOn', %noYes },
728
+ 0x64 => { Name => 'PeripheralIlluminationOn', %noYes },
729
+ 0x65 => { Name => 'ColorBlur', %noYes },
730
+ 0x66 => {
731
+ Name => 'ChromaticAberration',
732
+ ValueConv => '$val / 0x400',
733
+ ValueConvInv => 'int($val * 0x400 + 0.5)',
734
+ PrintConv => 'sprintf("%.0f%%", $val * 100)',
735
+ PrintConvInv => 'ToFloat($val) / 100',
736
+ },
737
+ 0x67 => {
738
+ Name => 'DistortionCorrection',
739
+ ValueConv => '$val / 0x400',
740
+ ValueConvInv => 'int($val * 0x400 + 0.5)',
741
+ PrintConv => 'sprintf("%.0f%%", $val * 100)',
742
+ PrintConvInv => 'ToFloat($val) / 100',
743
+ },
744
+ 0x68 => {
745
+ Name => 'PeripheralIllumination',
746
+ ValueConv => '$val / 0x400',
747
+ ValueConvInv => 'int($val * 0x400 + 0.5)',
748
+ PrintConv => 'sprintf("%.0f%%", $val * 100)',
749
+ PrintConvInv => 'ToFloat($val) / 100',
750
+ },
751
+ 0x69 => {
752
+ Name => 'AberrationCorrectionDistance',
753
+ Notes => '100% = infinity',
754
+ RawConv => '$val == 0x7fff ? undef : $val',
755
+ ValueConv => '1 - $val / 0x400',
756
+ ValueConvInv => 'int((1 - $val) * 0x400 + 0.5)',
757
+ PrintConv => 'sprintf("%.0f%%", $val * 100)',
758
+ PrintConvInv => 'ToFloat($val) / 100',
759
+ },
760
+ 0x6a => 'ChromaticAberrationRed',
761
+ 0x6b => 'ChromaticAberrationBlue',
762
+ 0x6d => { #1
763
+ Name => 'LuminanceNR_TIFF_JPEG',
764
+ Notes => 'val = raw / 10',
765
+ ValueConv => '$val / 10',
766
+ ValueConvInv => 'int($val * 10 + 0.5)',
767
+ },
768
+ # (VRD 3.4.0 edit data ends here: 220 bytes, index 0x6e)
769
+ 0x6e => { Name => 'AutoLightingOptimizerOn', %noYes },
770
+ 0x6f => {
771
+ Name => 'AutoLightingOptimizer',
772
+ PrintConv => {
773
+ 100 => 'Low',
774
+ 200 => 'Standard',
775
+ 300 => 'Strong',
776
+ 0x7fff => 'n/a', #1
777
+ },
778
+ },
779
+ # 0x71: 200
780
+ # 0x73: 100
781
+ # (VRD 3.5.0 edit data ends here: 232 bytes, index 0x74)
782
+ 0x75 => {
783
+ Name => 'StandardRawHighlight',
784
+ ValueConv => '$val / 10',
785
+ ValueConvInv => '$val * 10',
786
+ },
787
+ 0x76 => {
788
+ Name => 'PortraitRawHighlight',
789
+ ValueConv => '$val / 10',
790
+ ValueConvInv => '$val * 10',
791
+ },
792
+ 0x77 => {
793
+ Name => 'LandscapeRawHighlight',
794
+ ValueConv => '$val / 10',
795
+ ValueConvInv => '$val * 10',
796
+ },
797
+ 0x78 => {
798
+ Name => 'NeutralRawHighlight',
799
+ ValueConv => '$val / 10',
800
+ ValueConvInv => '$val * 10',
801
+ },
802
+ 0x79 => {
803
+ Name => 'FaithfulRawHighlight',
804
+ ValueConv => '$val / 10',
805
+ ValueConvInv => '$val * 10',
806
+ },
807
+ 0x7a => {
808
+ Name => 'MonochromeRawHighlight',
809
+ ValueConv => '$val / 10',
810
+ ValueConvInv => '$val * 10',
811
+ },
812
+ 0x7b => {
813
+ Name => 'UnknownRawHighlight',
814
+ Unknown => 1,
815
+ ValueConv => '$val / 10',
816
+ ValueConvInv => '$val * 10',
817
+ },
818
+ 0x7c => {
819
+ Name => 'CustomRawHighlight',
820
+ ValueConv => '$val / 10',
821
+ ValueConvInv => '$val * 10',
822
+ },
823
+ 0x7e => {
824
+ Name => 'StandardRawShadow',
825
+ ValueConv => '$val / 10',
826
+ ValueConvInv => '$val * 10',
827
+ },
828
+ 0x7f => {
829
+ Name => 'PortraitRawShadow',
830
+ ValueConv => '$val / 10',
831
+ ValueConvInv => '$val * 10',
832
+ },
833
+ 0x80 => {
834
+ Name => 'LandscapeRawShadow',
835
+ ValueConv => '$val / 10',
836
+ ValueConvInv => '$val * 10',
837
+ },
838
+ 0x81 => {
839
+ Name => 'NeutralRawShadow',
840
+ ValueConv => '$val / 10',
841
+ ValueConvInv => '$val * 10',
842
+ },
843
+ 0x82 => {
844
+ Name => 'FaithfulRawShadow',
845
+ ValueConv => '$val / 10',
846
+ ValueConvInv => '$val * 10',
847
+ },
848
+ 0x83 => {
849
+ Name => 'MonochromeRawShadow',
850
+ ValueConv => '$val / 10',
851
+ ValueConvInv => '$val * 10',
852
+ },
853
+ 0x84 => {
854
+ Name => 'UnknownRawShadow',
855
+ Unknown => 1,
856
+ ValueConv => '$val / 10',
857
+ ValueConvInv => '$val * 10',
858
+ },
859
+ 0x85 => {
860
+ Name => 'CustomRawShadow',
861
+ ValueConv => '$val / 10',
862
+ ValueConvInv => '$val * 10',
863
+ },
864
+ 0x8b => { #2
865
+ Name => 'AngleAdj',
866
+ Format => 'int32s',
867
+ ValueConv => '$val / 100',
868
+ ValueConvInv => '$val * 100',
869
+ },
870
+ 0x8e => {
871
+ Name => 'CheckMark2',
872
+ Format => 'int16u',
873
+ PrintConvColumns => 2,
874
+ PrintConv => {
875
+ 0 => 'Clear',
876
+ 1 => 1,
877
+ 2 => 2,
878
+ 3 => 3,
879
+ 4 => 4,
880
+ 5 => 5,
881
+ },
882
+ },
883
+ # (VRD 3.8.0 edit data ends here: 286 bytes, index 0x8f)
884
+ 0x90 => {
885
+ Name => 'UnsharpMask',
886
+ PrintConv => { 0 => 'Off', 1 => 'On' },
887
+ },
888
+ 0x92 => 'StandardUnsharpMaskStrength',
889
+ 0x94 => 'StandardUnsharpMaskFineness',
890
+ 0x96 => 'StandardUnsharpMaskThreshold',
891
+ 0x98 => 'PortraitUnsharpMaskStrength',
892
+ 0x9a => 'PortraitUnsharpMaskFineness',
893
+ 0x9c => 'PortraitUnsharpMaskThreshold',
894
+ 0x9e => 'LandscapeUnsharpMaskStrength',
895
+ 0xa0 => 'LandscapeUnsharpMaskFineness',
896
+ 0xa2 => 'LandscapeUnsharpMaskThreshold',
897
+ 0xa4 => 'NeutraUnsharpMaskStrength',
898
+ 0xa6 => 'NeutralUnsharpMaskFineness',
899
+ 0xa8 => 'NeutralUnsharpMaskThreshold',
900
+ 0xaa => 'FaithfulUnsharpMaskStrength',
901
+ 0xac => 'FaithfulUnsharpMaskFineness',
902
+ 0xae => 'FaithfulUnsharpMaskThreshold',
903
+ 0xb0 => 'MonochromeUnsharpMaskStrength',
904
+ 0xb2 => 'MonochromeUnsharpMaskFineness',
905
+ 0xb4 => 'MonochromeUnsharpMaskThreshold',
906
+ 0xb6 => 'CustomUnsharpMaskStrength',
907
+ 0xb8 => 'CustomUnsharpMaskFineness',
908
+ 0xba => 'CustomUnsharpMaskThreshold',
909
+ 0xbc => 'CustomDefaultUnsharpStrength',
910
+ 0xbe => 'CustomDefaultUnsharpFineness',
911
+ 0xc0 => 'CustomDefaultUnsharpThreshold',
912
+ # (VRD 3.9.1 edit data ends here: 392 bytes, index 0xc4)
913
+ # 0xc9: 3 - some RawSharpness
914
+ # 0xca: 4095 - some RawHighlightPoint
915
+ # 0xcb: 0 - some RawShadowPoint
916
+ # 0xcc: 4095 - some OutputHighlightPoint
917
+ # 0xcd: 0 - some OutputShadowPoint
918
+ # 0xd1: 3 - some UnsharpMaskStrength
919
+ # 0xd3: 7 - some UnsharpMaskFineness
920
+ # 0xd5: 3,4 - some UnsharpMaskThreshold
921
+ 0xd6 => { Name => 'CropCircleActive', %noYes },
922
+ 0xd7 => 'CropCircleX',
923
+ 0xd8 => 'CropCircleY',
924
+ 0xd9 => 'CropCircleRadius',
925
+ # 0xda: 0, 1
926
+ # 0xdb: 100
927
+ 0xdc => {
928
+ Name => 'DLOOn',
929
+ DataMember => 'DLOOn',
930
+ RawConv => '$$self{DLOOn} = $val',
931
+ %noYes,
932
+ },
933
+ 0xdd => 'DLOSetting',
934
+ # (VRD 3.11.0 edit data ends here: 444 bytes, index 0xde)
935
+ 0xde => {
936
+ Name => 'DLOShootingDistance',
937
+ Notes => '100% = infinity',
938
+ RawConv => '$val == 0x7fff ? undef : $val',
939
+ ValueConv => '1 - $val / 0x400',
940
+ ValueConvInv => 'int((1 - $val) * 0x400 + 0.5)',
941
+ PrintConv => 'sprintf("%.0f%%", $val * 100)',
942
+ PrintConvInv => 'ToFloat($val) / 100',
943
+ },
944
+ 0xdf => {
945
+ Name => 'DLODataLength',
946
+ DataMember => 'DLODataLength',
947
+ Format => 'int32u',
948
+ Writable => 0,
949
+ RawConv => '$$self{DLODataLength} = $val',
950
+ },
951
+ 0xe0 => { # (yes, this overlaps DLODataLength)
952
+ Name => 'DLOInfo',
953
+ # - have seen DLODataLengths of 65536,64869 when DLO is Off, so must test DLOOn flag
954
+ Condition => '$$self{DLOOn}',
955
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::DLOInfo' },
956
+ Hook => '$varSize += $$self{DLODataLength} + 0x16',
957
+ },
958
+ 0xe1 => 'CameraRawColorTone',
959
+ # (VRD 3.11.2 edit data ends here: 452 bytes, index 0xe2, unless DLO is on)
960
+ 0xe2 => 'CameraRawSaturation',
961
+ 0xe3 => 'CameraRawContrast',
962
+ 0xe4 => { Name => 'CameraRawLinear', %noYes },
963
+ 0xe5 => 'CameraRawSharpness',
964
+ 0xe6 => 'CameraRawHighlightPoint',
965
+ 0xe7 => 'CameraRawShadowPoint',
966
+ 0xe8 => 'CameraRawOutputHighlightPoint',
967
+ 0xe9 => 'CameraRawOutputShadowPoint',
968
+ );
969
+
970
+ # DLO tags (ref PH)
971
+ %Image::ExifTool::CanonVRD::DLOInfo = (
972
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
973
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
974
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
975
+ WRITABLE => 1,
976
+ FIRST_ENTRY => 1,
977
+ FORMAT => 'int16s',
978
+ GROUPS => { 2 => 'Image' },
979
+ NOTES => 'Tags added when DLO (Digital Lens Optimizer) is on.',
980
+ # 0x01 - seen 3112,3140
981
+ 0x04 => 'DLOSettingApplied',
982
+ 0x05 => {
983
+ Name => 'DLOVersion', #(NC)
984
+ Format => 'string[10]',
985
+ },
986
+ 0x0a => {
987
+ Name => 'DLOData',
988
+ LargeTag => 1, # large tag, so avoid storing unnecessarily
989
+ Notes => 'variable-length Digital Lens Optimizer data, stored in JPEG-like format',
990
+ Format => 'undef[$$self{DLODataLength}]',
991
+ Writable => 0,
992
+ Binary => 1,
993
+ },
994
+ );
995
+
996
+ # VRD version 4 tags (ref PH)
997
+ %Image::ExifTool::CanonVRD::DR4 = (
998
+ PROCESS_PROC => \&ProcessDR4,
999
+ WRITE_PROC => \&ProcessDR4,
1000
+ WRITABLE => 1,
1001
+ GROUPS => { 2 => 'Image' },
1002
+ VARS => { HEX_ID => 1, SORT_PROC => \&SortDR4 },
1003
+ NOTES => q{
1004
+ Tags written by Canon DPP version 4 in CanonVRD trailers and DR4 files. Each
1005
+ tag has three associated flag words which are stored with the directory
1006
+ entry, some of which are extracted as a separate tag, indicated in the table
1007
+ below by a decimal appended to the tag ID (.0, .1 or .2).
1008
+ },
1009
+ header => {
1010
+ Name => 'DR4Header',
1011
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::DR4Header' },
1012
+ },
1013
+ 0x10002 => 'Rotation', # left/right rotation 90,180,270
1014
+ 0x10003 => 'AngleAdj', # crop angle
1015
+ # 0x10018 - fmt=8: 0
1016
+ # 0x10020 - fmt=2: ''
1017
+ 0x10021 => 'CustomPictureStyle', # (string)
1018
+ 0x10101 => {
1019
+ Name => 'CheckMark',
1020
+ PrintConv => {
1021
+ 0 => 'Clear',
1022
+ 1 => 1,
1023
+ 2 => 2,
1024
+ 3 => 3,
1025
+ 4 => 4,
1026
+ 5 => 5,
1027
+ },
1028
+ },
1029
+ 0x10200 => {
1030
+ Name => 'WorkColorSpace',
1031
+ PrintConv => {
1032
+ 1 => 'sRGB',
1033
+ 2 => 'Adobe RGB',
1034
+ 3 => 'Wide Gamut RGB',
1035
+ 4 => 'Apple RGB',
1036
+ 5 => 'ColorMatch RGB',
1037
+ },
1038
+ },
1039
+ # 0x10201 - fmt=9: 0
1040
+ # 0x10f20 - fmt=9: 350
1041
+ 0x20001 => 'RawBrightnessAdj',
1042
+ 0x20101 => {
1043
+ Name => 'WhiteBalanceAdj',
1044
+ PrintConvColumns => 2,
1045
+ PrintConv => {
1046
+ -1 => 'Manual (Click)',
1047
+ 0 => 'Auto',
1048
+ 1 => 'Daylight',
1049
+ 2 => 'Cloudy',
1050
+ 3 => 'Tungsten',
1051
+ 4 => 'Fluorescent',
1052
+ 5 => 'Flash',
1053
+ 8 => 'Shade',
1054
+ 9 => 'Kelvin',
1055
+ 255 => 'Shot Settings',
1056
+ },
1057
+ },
1058
+ 0x20102 => 'WBAdjColorTemp',
1059
+ 0x20105 => 'WBAdjMagentaGreen',
1060
+ 0x20106 => 'WBAdjBlueAmber',
1061
+ 0x20125 => {
1062
+ Name => 'WBAdjRGGBLevels',
1063
+ PrintConv => '$val =~ s/^\d+ //; $val', # remove first integer (14: what is this for?)
1064
+ PrintConvInv => '"14 $val"',
1065
+ },
1066
+ 0x20200 => { Name => 'GammaLinear', %noYes },
1067
+ 0x20301 => {
1068
+ Name => 'PictureStyle',
1069
+ PrintHex => 1,
1070
+ PrintConv => {
1071
+ 0x81 => 'Standard',
1072
+ 0x82 => 'Portrait',
1073
+ 0x83 => 'Landscape',
1074
+ 0x84 => 'Neutral',
1075
+ 0x85 => 'Faithful',
1076
+ 0x86 => 'Monochrome',
1077
+ 0x87 => 'Auto',
1078
+ 0x88 => 'Fine Detail',
1079
+ 0xf0 => 'Shot Settings',
1080
+ 0xff => 'Custom',
1081
+ },
1082
+ },
1083
+ # 0x20302 - Gamma curve data
1084
+ 0x20303 => 'ContrastAdj',
1085
+ 0x20304 => 'ColorToneAdj',
1086
+ 0x20305 => 'ColorSaturationAdj',
1087
+ 0x20306 => {
1088
+ Name => 'MonochromeToningEffect',
1089
+ PrintConv => {
1090
+ 0 => 'None',
1091
+ 1 => 'Sepia',
1092
+ 2 => 'Blue',
1093
+ 3 => 'Purple',
1094
+ 4 => 'Green',
1095
+ },
1096
+ },
1097
+ 0x20307 => {
1098
+ Name => 'MonochromeFilterEffect',
1099
+ PrintConv => {
1100
+ 0 => 'None',
1101
+ 1 => 'Yellow',
1102
+ 2 => 'Orange',
1103
+ 3 => 'Red',
1104
+ 4 => 'Green',
1105
+ },
1106
+ },
1107
+ 0x20308 => 'UnsharpMaskStrength',
1108
+ 0x20309 => 'UnsharpMaskFineness',
1109
+ 0x2030a => 'UnsharpMaskThreshold',
1110
+ 0x2030b => 'ShadowAdj',
1111
+ 0x2030c => 'HighlightAdj',
1112
+ 0x20310 => {
1113
+ Name => 'SharpnessAdj',
1114
+ PrintConv => {
1115
+ 0 => 'Sharpness',
1116
+ 1 => 'Unsharp Mask',
1117
+ },
1118
+ },
1119
+ '0x20310.0' => { Name => 'SharpnessAdjOn', %noYes },
1120
+ 0x20311 => 'SharpnessStrength',
1121
+ 0x20400 => {
1122
+ Name => 'ToneCurve',
1123
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::ToneCurve' },
1124
+ },
1125
+ '0x20400.1' => { Name => 'ToneCurveOriginal', %noYes },
1126
+ # 0x20401 - fmt=33 (312 bytes)
1127
+ 0x20410 => 'ToneCurveBrightness',
1128
+ 0x20411 => 'ToneCurveContrast',
1129
+ 0x20500 => {
1130
+ Name => 'AutoLightingOptimizer',
1131
+ PrintConv => {
1132
+ 0 => 'Low',
1133
+ 1 => 'Standard',
1134
+ 2 => 'Strong',
1135
+ },
1136
+ },
1137
+ '0x20500.0' => {
1138
+ Name => 'AutoLightingOptimizerOn',
1139
+ Notes => 'ignored if gamma is linear',
1140
+ %noYes,
1141
+ },
1142
+ # 0x20501 - fmt=13: 0
1143
+ # 0x20502 - fmt=13: 0
1144
+ 0x20600 => 'LuminanceNoiseReduction',
1145
+ 0x20601 => 'ChrominanceNoiseReduction',
1146
+ # 0x20650 - fmt=9: 0 (JPG images)
1147
+ 0x20701 => {
1148
+ Name => 'ShootingDistance',
1149
+ Notes => '100% = infinity',
1150
+ ValueConv => '$val / 10',
1151
+ ValueConvInv => '$val * 10',
1152
+ PrintConv => 'sprintf("%.0f%%", $val * 100)',
1153
+ PrintConvInv => 'ToFloat($val) / 100',
1154
+ },
1155
+ 0x20702 => {
1156
+ Name => 'PeripheralIllumination',
1157
+ PrintConv => 'sprintf "%g", $val',
1158
+ PrintConvInv => '$val',
1159
+ },
1160
+ '0x20702.0' => { Name => 'PeripheralIlluminationOn', %noYes },
1161
+ 0x20703 => {
1162
+ Name => 'ChromaticAberration',
1163
+ PrintConv => 'sprintf "%g", $val',
1164
+ PrintConvInv => '$val',
1165
+ },
1166
+ '0x20703.0' => { Name => 'ChromaticAberrationOn', %noYes },
1167
+ 0x20704 => { Name => 'ColorBlurOn', %noYes },
1168
+ 0x20705 => {
1169
+ Name => 'DistortionCorrection',
1170
+ PrintConv => 'sprintf "%g", $val',
1171
+ PrintConvInv => '$val',
1172
+ },
1173
+ '0x20705.0' => { Name => 'DistortionCorrectionOn', %noYes },
1174
+ 0x20706 => 'DLOSetting',
1175
+ '0x20706.0' => { Name => 'DLOOn', %noYes },
1176
+ 0x20707 => {
1177
+ Name => 'ChromaticAberrationRed',
1178
+ PrintConv => 'sprintf "%g", $val',
1179
+ PrintConvInv => '$val',
1180
+ },
1181
+ 0x20708 => {
1182
+ Name => 'ChromaticAberrationBlue',
1183
+ PrintConv => 'sprintf "%g", $val',
1184
+ PrintConvInv => '$val',
1185
+ },
1186
+ 0x20709 => {
1187
+ Name => 'DistortionEffect',
1188
+ PrintConv => {
1189
+ 0 => 'Shot Settings',
1190
+ 1 => 'Emphasize Linearity',
1191
+ 2 => 'Emphasize Distance',
1192
+ 3 => 'Emphasize Periphery',
1193
+ 4 => 'Emphasize Center',
1194
+ },
1195
+ },
1196
+ # 0x20800 - fmt=1: 0
1197
+ # 0x20801 - fmt=1: 0
1198
+ 0x20900 => 'ColorHue',
1199
+ 0x20901 => 'SaturationAdj',
1200
+ 0x20910 => 'RedHSL',
1201
+ 0x20911 => 'OrangeHSL',
1202
+ 0x20912 => 'GreenHSL',
1203
+ 0x20913 => 'AquaHSL',
1204
+ 0x20914 => 'BlueHSL',
1205
+ 0x20915 => 'BlueHSL',
1206
+ 0x20916 => 'PurpleHSL',
1207
+ 0x20917 => 'MagentaHSL',
1208
+ 0x20a00 => {
1209
+ Name => 'GammaInfo',
1210
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::GammaInfo' },
1211
+ },
1212
+ # 0x20a01 - Auto picture style settings
1213
+ # 0x20a02 - Standard picture style settings
1214
+ # 0x20a03 - Portrait picture style settings
1215
+ # 0x20a04 - Landscape picture style settings
1216
+ # 0x20a05 - Neutral picture style settings
1217
+ # 0x20a06 - Faithful picture style settings
1218
+ # 0x20a07 - Monochrome picture style settings
1219
+ # 0x20a08 - (unknown picture style settings)
1220
+ # 0x20a09 - Custom picture style settings
1221
+ # 0x20a20 - Fine Detail picture style settings
1222
+ 0x30101 => {
1223
+ Name => 'CropAspectRatio',
1224
+ PrintConv => {
1225
+ 0 => 'Free',
1226
+ 1 => 'Custom',
1227
+ 2 => '1:1',
1228
+ 3 => '3:2',
1229
+ 4 => '2:3',
1230
+ 5 => '4:3',
1231
+ 6 => '3:4',
1232
+ 7 => '5:4',
1233
+ 8 => '4:5',
1234
+ 9 => '16:9',
1235
+ 10 => '9:16',
1236
+ },
1237
+ },
1238
+ 0x30102 => 'CropAspectRatioCustom',
1239
+ # 0x30103 - fmt=33: "0 0 8"
1240
+ 0xf0100 => {
1241
+ Name => 'CropInfo',
1242
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::CropInfo' },
1243
+ },
1244
+ 0xf0500 => {
1245
+ Name => 'CustomPictureStyleData',
1246
+ Binary => 1,
1247
+ },
1248
+ 0xf0510 => {
1249
+ Name => 'StampInfo',
1250
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::StampInfo' },
1251
+ },
1252
+ 0xf0511 => {
1253
+ Name => 'DustInfo',
1254
+ SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::DustInfo' },
1255
+ },
1256
+ 0xf0512 => 'LensFocalLength',
1257
+ # 0xf0521 - DLO data
1258
+ # 0xf0520 - DLO data
1259
+ # 0xf0530 - created when dust delete data applied (4 bytes, all zero)
1260
+ # 0xf0600 - fmt=253 (2308 bytes, JPG images)
1261
+ # 0xf0601 - fmt=253 (2308 bytes, JPG images)
1262
+ # 0x1ff52c - values: 129,130,132 (related to custom picture style somehow)
1263
+ # to do:
1264
+ # - find 8-15mm CR2 sample and decode linear distortion effect fine-tune
1265
+ );
1266
+
1267
+ # Version 4 header information (ref PH)
1268
+ %Image::ExifTool::CanonVRD::DR4Header = (
1269
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1270
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1271
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1272
+ WRITABLE => 1,
1273
+ FIRST_ENTRY => 0,
1274
+ FORMAT => 'int32u',
1275
+ GROUPS => { 2 => 'Image' },
1276
+ # 0 - value: 'IIII' (presumably byte order)
1277
+ # 1 - value: 0x00040004 (currently use this for magic number)
1278
+ # 2 - value: 6
1279
+ 3 => {
1280
+ Name => 'DR4CameraModel',
1281
+ Writable => 'int32u',
1282
+ PrintHex => 1,
1283
+ SeparateTable => 'Canon CameraModelID',
1284
+ PrintConv => \%Image::ExifTool::Canon::canonModelID,
1285
+ },
1286
+ # 4 - value: 3
1287
+ # 5 - value: 4
1288
+ # 6 - value: 5
1289
+ # 7 - DR4 directory entry count
1290
+ );
1291
+
1292
+ # Version 4 RGB tone curve information (ref PH)
1293
+ %Image::ExifTool::CanonVRD::ToneCurve = (
1294
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1295
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1296
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1297
+ WRITABLE => 1,
1298
+ FIRST_ENTRY => 0,
1299
+ FORMAT => 'int32u',
1300
+ GROUPS => { 2 => 'Image' },
1301
+ 0x00 => {
1302
+ Name => 'ToneCurveColorSpace',
1303
+ PrintConv => {
1304
+ 0 => 'RGB',
1305
+ 1 => 'Luminance',
1306
+ },
1307
+ },
1308
+ 0x01 => {
1309
+ Name => 'ToneCurveShape',
1310
+ PrintConv => {
1311
+ 0 => 'Curve',
1312
+ 1 => 'Straight',
1313
+ },
1314
+ },
1315
+ 0x03 => { Name => 'ToneCurveInputRange', Format => 'int32u[2]', Notes => '255 max' },
1316
+ 0x05 => { Name => 'ToneCurveOutputRange', Format => 'int32u[2]', Notes => '255 max' },
1317
+ 0x07 => {
1318
+ Name => 'RGBCurvePoints',
1319
+ Format => 'int32u[21]',
1320
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
1321
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
1322
+ },
1323
+ 0x0a => 'ToneCurveX',
1324
+ 0x0b => 'ToneCurveY',
1325
+ 0x2d => {
1326
+ Name => 'RedCurvePoints',
1327
+ Format => 'int32u[21]',
1328
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
1329
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
1330
+ },
1331
+ 0x53 => {
1332
+ Name => 'GreenCurvePoints',
1333
+ Format => 'int32u[21]',
1334
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
1335
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
1336
+ },
1337
+ 0x79 => {
1338
+ Name => 'BlueCurvePoints',
1339
+ Format => 'int32u[21]',
1340
+ PrintConv => 'Image::ExifTool::CanonVRD::ToneCurvePrint($val)',
1341
+ PrintConvInv => 'Image::ExifTool::CanonVRD::ToneCurvePrintInv($val)',
1342
+ },
1343
+ );
1344
+
1345
+ # Version 4 gamma curve information (ref PH)
1346
+ %Image::ExifTool::CanonVRD::GammaInfo = (
1347
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1348
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1349
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1350
+ WRITABLE => 1,
1351
+ FIRST_ENTRY => 0,
1352
+ FORMAT => 'double',
1353
+ GROUPS => { 2 => 'Image' },
1354
+ 0x02 => 'GammaContrast',
1355
+ 0x03 => 'GammaColorTone',
1356
+ 0x04 => 'GammaSaturation',
1357
+ 0x05 => 'GammaUnsharpMaskStrength',
1358
+ 0x06 => 'GammaUnsharpMaskFineness',
1359
+ 0x07 => 'GammaUnsharpMaskThreshold',
1360
+ 0x08 => 'GammaSharpnessStrength',
1361
+ 0x09 => 'GammaShadow',
1362
+ 0x0a => 'GammaHighlight',
1363
+ # 0x0b-0x10 are the same as first 6 doubles of tag DR4_0x20302
1364
+ # 0x0b - value: 14
1365
+ 0x0c => {
1366
+ Name => 'GammaBlackPoint',
1367
+ ValueConv => q{
1368
+ return 0 if $val <= 0;
1369
+ $val = log($val / 4.6875) / log(2) + 1;
1370
+ return abs($val) > 1e-10 ? $val : 0;
1371
+ },
1372
+ ValueConvInv => '$val ? exp(($val - 1) * log(2)) * 4.6876 : 0',
1373
+ PrintConv => 'sprintf("%+.3f", $val)',
1374
+ PrintConvInv => '$val',
1375
+ },
1376
+ 0x0d => {
1377
+ Name => 'GammaWhitePoint',
1378
+ ValueConv => q{
1379
+ return $val if $val <= 0;
1380
+ $val = log($val / 4.6875) / log(2) - 11.77109325169954;
1381
+ return abs($val) > 1e-10 ? $val : 0;
1382
+ },
1383
+ ValueConvInv => '$val ? exp(($val + 11.77109325169954) * log(2)) * 4.6875 : 0',
1384
+ PrintConv => 'sprintf("%+.3f", $val)',
1385
+ PrintConvInv => '$val',
1386
+ },
1387
+ 0x0e => {
1388
+ Name => 'GammaMidPoint',
1389
+ ValueConv => q{
1390
+ return $val if $val <= 0;
1391
+ $val = log($val / 4.6875) / log(2) - 8;
1392
+ return abs($val) > 1e-10 ? $val : 0;
1393
+ },
1394
+ ValueConvInv => '$val ? exp(($val + 8) * log(2)) * 4.6876 : 0',
1395
+ PrintConv => 'sprintf("%+.3f", $val)',
1396
+ PrintConvInv => '$val',
1397
+ },
1398
+ 0x0f => { Name => 'GammaCurveOutputRange', Format => 'double[2]', Notes => '16383 max' },
1399
+ );
1400
+
1401
+ # Version 4 crop information (ref PH)
1402
+ %Image::ExifTool::CanonVRD::CropInfo = (
1403
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1404
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1405
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1406
+ WRITABLE => 1,
1407
+ FIRST_ENTRY => 0,
1408
+ FORMAT => 'int32s',
1409
+ GROUPS => { 2 => 'Image' },
1410
+ 0 => { Name => 'CropActive', %noYes },
1411
+ 1 => 'CropRotatedOriginalWidth',
1412
+ 2 => 'CropRotatedOriginalHeight',
1413
+ 3 => 'CropX',
1414
+ 4 => 'CropY',
1415
+ 5 => 'CropWidth',
1416
+ 6 => 'CropHeight',
1417
+ 8 => {
1418
+ Name => 'CropRotation',
1419
+ Format => 'double',
1420
+ PrintConv => 'sprintf("%.7g",$val)',
1421
+ PrintConvInv => '$val',
1422
+ },
1423
+ 0x0a => 'CropOriginalWidth',
1424
+ 0x0b => 'CropOriginalHeight',
1425
+ # 0x0c double - value: 100
1426
+ );
1427
+
1428
+ # DR4 Stamp Tool tags (ref PH)
1429
+ %Image::ExifTool::CanonVRD::StampInfo = (
1430
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1431
+ GROUPS => { 2 => 'Image' },
1432
+ FORMAT => 'int32u',
1433
+ FIRST_ENTRY => 0,
1434
+ 0x02 => 'StampToolCount',
1435
+ );
1436
+
1437
+ # DR4 dust delete information (ref PH)
1438
+ %Image::ExifTool::CanonVRD::DustInfo = (
1439
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1440
+ GROUPS => { 2 => 'Image' },
1441
+ FORMAT => 'int32u',
1442
+ FIRST_ENTRY => 0,
1443
+ 0x02 => { Name => 'DustDeleteApplied', %noYes },
1444
+ );
1445
+
1446
+ #------------------------------------------------------------------------------
1447
+ # sort DR4 tag ID's for the documentation
1448
+ sub SortDR4($$)
1449
+ {
1450
+ my ($a, $b) = @_;
1451
+ my ($aHex, $aDec, $bHex, $bDec);
1452
+ ($aHex, $aDec) = ($1, $2) if $a =~ /^(0x[0-9a-f]+)?\.?(\d*?)$/;
1453
+ ($bHex, $bDec) = ($1, $2) if $b =~ /^(0x[0-9a-f]+)?\.?(\d*?)$/;
1454
+ if ($aHex) {
1455
+ return 1 unless defined $bDec; # $b is 'header';
1456
+ return hex($aHex) <=> hex($bHex) || $aDec <=> $bDec if $bHex;
1457
+ return hex($aHex) <=> $bDec || 1;
1458
+ } elsif ($bHex) {
1459
+ return -1 unless defined $aDec;
1460
+ return $aDec <=> hex($bHex) || -1;
1461
+ } else {
1462
+ return 1 unless defined $bDec;
1463
+ return -1 unless defined $aDec;
1464
+ return $aDec <=> $bDec;
1465
+ }
1466
+ }
1467
+
1468
+ #------------------------------------------------------------------------------
1469
+ # Tone curve print conversion
1470
+ sub ToneCurvePrint($)
1471
+ {
1472
+ my $val = shift;
1473
+ my @vals = split ' ', $val;
1474
+ return $val unless @vals == 21;
1475
+ my $n = shift @vals;
1476
+ return $val unless $n >= 2 and $n <= 10;
1477
+ $val = '';
1478
+ while ($n--) {
1479
+ $val and $val .= ' ';
1480
+ $val .= '(' . shift(@vals) . ',' . shift(@vals) . ')';
1481
+ }
1482
+ return $val;
1483
+ }
1484
+
1485
+ #------------------------------------------------------------------------------
1486
+ # Inverse print conversion for tone curve
1487
+ sub ToneCurvePrintInv($)
1488
+ {
1489
+ my $val = shift;
1490
+ my @vals = ($val =~ /\((\d+),(\d+)\)/g);
1491
+ return undef unless @vals >= 4 and @vals <= 20 and not @vals & 0x01;
1492
+ unshift @vals, scalar(@vals) / 2;
1493
+ while (@vals < 21) { push @vals, 0 }
1494
+ return join(' ',@vals);
1495
+ }
1496
+
1497
+ #------------------------------------------------------------------------------
1498
+ # Read/Write VRD edit data
1499
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1500
+ # Returns: Reading: 1 on success; Writing: modified edit data, or undef if nothing changed
1501
+ sub ProcessEditData($$$)
1502
+ {
1503
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1504
+ $et or return 1; # allow dummy access
1505
+ my $dataPt = $$dirInfo{DataPt};
1506
+ my $pos = $$dirInfo{DirStart};
1507
+ my $dataPos = $$dirInfo{DataPos};
1508
+ my $outfile = $$dirInfo{OutFile};
1509
+ my $dirLen = $$dirInfo{DirLen};
1510
+ my $verbose = $et->Options('Verbose');
1511
+ my $out = $et->Options('TextOut');
1512
+ my $oldChanged = $$et{CHANGED};
1513
+
1514
+ $et->VerboseDir('VRD Edit Data', 0, $dirLen) unless $outfile;
1515
+
1516
+ if ($outfile) {
1517
+ # make a copy for editing in place
1518
+ my $buff = substr($$dataPt, $pos, $dirLen);
1519
+ $dataPt = $$dirInfo{DataPt} = \$buff;
1520
+ $pos = $$dirInfo{DirStart} = 0;
1521
+ }
1522
+ my $dirEnd = $pos + $dirLen;
1523
+
1524
+ # loop through all records in the edit data
1525
+ my ($recNum, $recLen, $err);
1526
+ for ($recNum=0;; ++$recNum, $pos+=$recLen) {
1527
+ if ($pos + 4 > $dirEnd) {
1528
+ last if $pos == $dirEnd; # all done if we arrived at end
1529
+ $recLen = 0; # just reset record size (will exit loop on test below)
1530
+ } else {
1531
+ $recLen = Get32u($dataPt, $pos);
1532
+ # (DR4 has a null terminator)
1533
+ last if $recLen == 0 and $pos + 4 == $dirEnd;
1534
+ }
1535
+ $pos += 4; # move to start of record
1536
+ if ($pos + $recLen > $dirEnd) {
1537
+ $et->Warn('Possibly corrupt CanonVRD Edit record');
1538
+ $err = 1;
1539
+ last;
1540
+ }
1541
+ my $saveRecLen = $recLen;
1542
+ if ($verbose > 1 and not $outfile) {
1543
+ printf $out "$$et{INDENT}CanonVRD Edit record ($recLen bytes at offset 0x%x)\n",
1544
+ $pos + $dataPos;
1545
+ if ($recNum and $verbose > 2) {
1546
+ my %parms = (
1547
+ Start => $pos,
1548
+ Addr => $pos + $dataPos,
1549
+ Out => $out,
1550
+ Prefix => $$et{INDENT},
1551
+ );
1552
+ $parms{MaxLen} = $verbose == 3 ? 96 : 2048 if $verbose < 5;
1553
+ HexDump($dataPt, $recLen, %parms);
1554
+ }
1555
+ }
1556
+
1557
+ # our edit information is the 0th record, so don't process the others
1558
+ next if $recNum;
1559
+
1560
+ # process VRD edit information
1561
+ my $subTablePtr = $tagTablePtr;
1562
+ my $index;
1563
+ my %subdirInfo = (
1564
+ DataPt => $dataPt,
1565
+ DataPos => $dataPos,
1566
+ DirStart => $pos,
1567
+ DirLen => $recLen,
1568
+ OutFile => $outfile,
1569
+ );
1570
+ my $subStart = 0;
1571
+ # loop through various sections of the VRD edit data
1572
+ for ($index=0; ; ++$index) {
1573
+ my $tagInfo = $$subTablePtr{$index} or last;
1574
+ my $subLen;
1575
+ my $maxLen = $recLen - $subStart;
1576
+ if ($$tagInfo{Size}) {
1577
+ $subLen = $$tagInfo{Size};
1578
+ } elsif (defined $$tagInfo{Size}) {
1579
+ # get size from int32u at $subStart
1580
+ last unless $subStart + 4 <= $recLen;
1581
+ $subLen = Get32u($dataPt, $subStart + $pos);
1582
+ $subStart += 4; # skip the length word
1583
+ } else {
1584
+ $subLen = $maxLen;
1585
+ }
1586
+ $subLen > $maxLen and $subLen = $maxLen;
1587
+ if ($subLen) {
1588
+ my $subTable = GetTagTable($$tagInfo{SubDirectory}{TagTable});
1589
+ my $subName = $$tagInfo{Name};
1590
+ $subdirInfo{DirStart} = $subStart + $pos;
1591
+ $subdirInfo{DirLen} = $subLen;
1592
+ $subdirInfo{DirName} = $subName;
1593
+ if ($outfile) {
1594
+ # rewrite this section of the VRD edit information
1595
+ $verbose and print $out " Rewriting Canon $subName\n";
1596
+ my $newVal = $et->WriteDirectory(\%subdirInfo, $subTable);
1597
+ if ($newVal) {
1598
+ my $sizeDiff = length($newVal) - $subLen;
1599
+ substr($$dataPt, $pos+$subStart, $subLen) = $newVal;
1600
+ if ($sizeDiff) {
1601
+ $subLen = length $newVal;
1602
+ $recLen += $sizeDiff;
1603
+ $dirEnd += $sizeDiff;
1604
+ $dirLen += $sizeDiff;
1605
+ }
1606
+ }
1607
+ } else {
1608
+ $et->VPrint(0, "$$et{INDENT}$subName (SubDirectory) -->\n");
1609
+ $et->VerboseDump($dataPt,
1610
+ Start => $pos + $subStart,
1611
+ Addr => $dataPos + $pos + $subStart,
1612
+ Len => $subLen,
1613
+ );
1614
+ # extract tags from this section of the VRD edit information
1615
+ $et->ProcessDirectory(\%subdirInfo, $subTable);
1616
+ }
1617
+ }
1618
+ # next section starts at the end of this one
1619
+ $subStart += $subLen;
1620
+ }
1621
+ if ($outfile and $saveRecLen ne $recLen) {
1622
+ # update record length if necessary
1623
+ Set32u($recLen, $dataPt, $pos - 4)
1624
+ }
1625
+ }
1626
+ if ($outfile) {
1627
+ return undef if $oldChanged == $$et{CHANGED};
1628
+ return substr($$dataPt, $$dirInfo{DirStart}, $dirLen);
1629
+ }
1630
+ return $err ? 0 : 1;
1631
+ }
1632
+
1633
+ #------------------------------------------------------------------------------
1634
+ # Process VRD IHL data
1635
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1636
+ # Returns: 1 on success
1637
+ sub ProcessIHL($$$)
1638
+ {
1639
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1640
+ my $dataPt = $$dirInfo{DataPt};
1641
+ my $dataPos = $$dirInfo{DataPos};
1642
+ my $pos = $$dirInfo{DirStart};
1643
+ my $dirLen = $$dirInfo{DirLen};
1644
+ my $dirEnd = $pos + $dirLen;
1645
+
1646
+ $et->VerboseDir('VRD IHL', 0, $dirLen);
1647
+
1648
+ SetByteOrder('II'); # (make up your mind, Canon!)
1649
+ while ($pos + 48 <= $dirEnd) {
1650
+ my $hdr = substr($$dataPt, $pos, 48);
1651
+ unless ($hdr =~ /^IHL Created Optional Item Data\0\0/) {
1652
+ $et->Warn('Possibly corrupted VRD IHL data');
1653
+ last;
1654
+ }
1655
+ my $tag = Get32u($dataPt, $pos + 36);
1656
+ my $size = Get32u($dataPt, $pos + 40); # size of data in IHL record
1657
+ my $next = Get32u($dataPt, $pos + 44); # size of complete IHL record
1658
+ if ($size > $next or $pos + 48 + $next > $dirEnd) {
1659
+ $et->Warn(sprintf('Bad size for VRD IHL tag 0x%.4x', $tag));
1660
+ last;
1661
+ }
1662
+ $pos += 48;
1663
+ $et->HandleTag($tagTablePtr, $tag, substr($$dataPt, $pos, $size),
1664
+ DataPt => $dataPt,
1665
+ DataPos => $dataPos,
1666
+ Start => $pos,
1667
+ Size => $size
1668
+ );
1669
+ $pos += $next;
1670
+ }
1671
+ return 1;
1672
+ }
1673
+
1674
+ #------------------------------------------------------------------------------
1675
+ # Process VRD IHL EXIF data
1676
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1677
+ # Returns: 1 on success
1678
+ sub ProcessIHLExif($$$)
1679
+ {
1680
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1681
+ $$et{DOC_NUM} = 1;
1682
+ # the IHL-edited maker notes may look messed up, but the offsets should be OK
1683
+ my $oldFix = $et->Options(FixBase => 0);
1684
+ my $rtnVal = $et->ProcessTIFF($dirInfo, $tagTablePtr);
1685
+ $et->Options(FixBase => $oldFix);
1686
+ delete $$et{DOC_NUM};
1687
+ return $rtnVal;
1688
+ }
1689
+
1690
+ #------------------------------------------------------------------------------
1691
+ # Wrap DR4 data with the VRD header/footer and edit record
1692
+ # Inputs: 0) DR4 record
1693
+ # Returns: VRD[Edit[DR4]] data
1694
+ sub WrapDR4($)
1695
+ {
1696
+ my $val = shift;
1697
+ my $n = length $val;
1698
+ my $oldOrder = GetByteOrder();
1699
+ SetByteOrder('MM');
1700
+ $val = $blankHeader . "\xff\xff\0\xf7" . Set32u($n+8) . Set32u($n) .
1701
+ $val . "\0\0\0\0" . $blankFooter;
1702
+ # update the new VRD length in the header/footer
1703
+ Set32u($n + 16, \$val, 0x18); # (extra 16 bytes for the edit record wrapper)
1704
+ Set32u($n + 16, \$val, length($val) - 0x2c);
1705
+ SetByteOrder($oldOrder);
1706
+ return $val;
1707
+ }
1708
+
1709
+ #------------------------------------------------------------------------------
1710
+ # Read/Write DPP version 4 edit data or DR4 file
1711
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1712
+ # Returns:
1713
+ # Reading from memory (not RAF and not IsWriting): 1 on success
1714
+ # Editing from memory (not RAF and IsWriting): modified edit data, or undef if nothing changed
1715
+ # Reading file (RAF and not OutFile): 1 if a valid DR4 file, 0 if not
1716
+ # Writing file (RAF and OutFile): 1 if valid DR4 file, 0 if not, -1 on write error
1717
+ # (serves me right for not having a consistent interface for the various modes of operation)
1718
+ sub ProcessDR4($$;$)
1719
+ {
1720
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1721
+ $et or return 1; # allow dummy access
1722
+ my $dataPt = $$dirInfo{DataPt};
1723
+ my $raf = $$dirInfo{RAF};
1724
+ my $outfile = $$dirInfo{OutFile};
1725
+ my $isWriting = $outfile || $$dirInfo{IsWriting};
1726
+ my $dataPos = $$dirInfo{DataPos} || 0;
1727
+ my $verbose = $et->Options('Verbose');
1728
+ my $unknown = $et->Options('Unknown');
1729
+ my ($pos, $dirLen, $numEntries, $err, $newTags);
1730
+
1731
+ # write CanonDR4 as a block if specified
1732
+ if ($isWriting) {
1733
+ my $nvHash;
1734
+ my $newVal = $et->GetNewValue('CanonDR4', \$nvHash);
1735
+ if ($newVal) {
1736
+ $et->VPrint(0, " Writing CanonDR4 as a block\n");
1737
+ $$et{DidCanonVRD} = 1; # set flag so we don't add this twice
1738
+ ++$$et{CHANGED};
1739
+ if ($outfile) {
1740
+ Write($$dirInfo{OutFile}, $newVal) or return -1;
1741
+ return 1;
1742
+ } else {
1743
+ return $newVal;
1744
+ }
1745
+ } elsif (not $dataPt and ($nvHash or $$et{DEL_GROUP}{CanonVRD})) {
1746
+ $et->Error("Can't delete all CanonDR4 information from a DR4 file");
1747
+ return 1;
1748
+ }
1749
+ }
1750
+ if ($dataPt) {
1751
+ $pos = $$dirInfo{DirStart} || 0;
1752
+ $dirLen = $$dirInfo{DirLen} || length($$dataPt) - $pos;
1753
+ } else {
1754
+ # load DR4 file into memory
1755
+ my $buff;
1756
+ $raf->Read($buff, 8) == 8 and $buff eq "IIII\x04\0\x04\0" or return 0;
1757
+ $et->SetFileType();
1758
+ $raf->Seek(0, 2) or return $err = 1;
1759
+ $dirLen = $raf->Tell();
1760
+ $raf->Seek(0, 0) or return $err = 1;
1761
+ $raf->Read($buff, $dirLen) == $dirLen or $err = 1;
1762
+ $err and $et->Warn('Error reading DR4 file'), return 1;
1763
+ $tagTablePtr = GetTagTable('Image::ExifTool::CanonVRD::DR4');
1764
+ $dataPt = \$buff;
1765
+ $pos = 0;
1766
+ }
1767
+ my $dirEnd = $pos + $dirLen;
1768
+
1769
+ if (($$et{TAGS_FROM_FILE} and
1770
+ not $$et{EXCL_TAG_LOOKUP}{canondr4}) or $$et{REQ_TAG_LOOKUP}{canondr4})
1771
+ {
1772
+ # extract CanonDR4 block if copying tags, or if requested
1773
+ $et->FoundTag('CanonDR4', substr($$dataPt, $pos, $dirLen));
1774
+ }
1775
+
1776
+ # version 4 header is 32 bytes (int32u[8])
1777
+ if ($dirLen < 32) {
1778
+ $err = 1;
1779
+ } else {
1780
+ SetByteOrder(substr($$dataPt, $pos, 2)) or $err = 1;
1781
+ # process the DR4 header
1782
+ my %hdrInfo = (
1783
+ DataPt => $dataPt,
1784
+ DirStart => $pos,
1785
+ DirLen => 32,
1786
+ DirName => 'DR4Header',
1787
+ );
1788
+ my $hdrTable = GetTagTable('Image::ExifTool::CanonVRD::DR4Header');
1789
+ if ($outfile) {
1790
+ my $hdr = $et->WriteDirectory(\%hdrInfo, $hdrTable);
1791
+ substr($$dataPt, $pos, 32) = $hdr if $hdr and length $hdr == 32;
1792
+ } else {
1793
+ $et->VerboseDir('DR4Header', undef, 32);
1794
+ $et->ProcessDirectory(\%hdrInfo, $hdrTable);
1795
+ }
1796
+ # number of entries in the DR4 directory
1797
+ $numEntries = Get32u($dataPt, $pos + 28);
1798
+ $err = 1 if $dirLen < 36 + 28 * $numEntries;
1799
+ }
1800
+ $err and $et->Warn('Invalid DR4 directory'), return $outfile ? undef : 0;
1801
+
1802
+ if ($outfile) {
1803
+ $newTags = $et->GetNewTagInfoHash($tagTablePtr);
1804
+ } else {
1805
+ $et->VerboseDir('DR4', $numEntries, $dirLen);
1806
+ }
1807
+
1808
+ my $index;
1809
+ for ($index=0; $index<$numEntries; ++$index) {
1810
+ my ($val, @flg, $i);
1811
+ my $entry = $pos + 36 + 28 * $index;
1812
+ last if $entry + 28 > $dirEnd;
1813
+ my $tag = Get32u($dataPt, $entry);
1814
+ my $fmt = Get32u($dataPt, $entry + 4);
1815
+ $flg[0] = Get32u($dataPt, $entry + 8);
1816
+ $flg[1] = Get32u($dataPt, $entry + 12);
1817
+ $flg[2] = Get32u($dataPt, $entry + 16);
1818
+ my $off = Get32u($dataPt, $entry + 20) + $pos;
1819
+ my $len = Get32u($dataPt, $entry + 24);
1820
+ next if $off + $len >= $dirEnd;
1821
+ my $format = $vrdFormat{$fmt};
1822
+ if (not $format) {
1823
+ $val = unpack 'H*', substr($$dataPt, $off, $len);
1824
+ $format = 'undef';
1825
+ } elsif ($format eq 'double' and $len eq 8) {
1826
+ # avoid teeny weeny values
1827
+ $val = ReadValue($dataPt, $off, $format, undef, $len);
1828
+ $val = 0 if abs($val) < 1e-100;
1829
+ }
1830
+ if ($outfile) {
1831
+ # write (binary data) subdirectory if it exists
1832
+ my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
1833
+ if ($tagInfo and $$tagInfo{SubDirectory}) {
1834
+ my %subdirInfo = (
1835
+ DataPt => $dataPt,
1836
+ DirStart => $off,
1837
+ DirLen => $len,
1838
+ DirName => $$tagInfo{Name},
1839
+ );
1840
+ my $subTablePtr = GetTagTable($$tagInfo{SubDirectory}{TagTable});
1841
+ my $saveChanged = $$et{CHANGED};
1842
+ my $dat = $et->WriteDirectory(\%subdirInfo, $subTablePtr);
1843
+ if (defined $dat and length($dat) == $len) {
1844
+ substr($$dataPt, $off, $len) = $dat;
1845
+ } else {
1846
+ $$et{CHANGED} = $saveChanged; # didn't change anything after all
1847
+ }
1848
+ } else {
1849
+ # loop through main tag and flags (don't yet consider flag 2)
1850
+ for ($i=-1; $i<2; ++$i) {
1851
+ $tagInfo = $$newTags{$i>=0 ? sprintf('0x%x.%d',$tag,$i) : $tag};
1852
+ next unless $tagInfo;
1853
+ if ($i >= 0) {
1854
+ $off = $entry + 8 + 4 * $i;
1855
+ $format = 'int32u';
1856
+ $len = 4;
1857
+ undef $val;
1858
+ }
1859
+ $val = ReadValue($dataPt, $off, $format, undef, $len) unless defined $val;
1860
+ my $nvHash;
1861
+ my $newVal = $et->GetNewValue($tagInfo, \$nvHash);
1862
+ if ($et->IsOverwriting($nvHash, $val) and defined $newVal) {
1863
+ my $count = int($len / Image::ExifTool::FormatSize($format));
1864
+ my $rtnVal = WriteValue($newVal, $format, $count, $dataPt, $off);
1865
+ if (defined $rtnVal) {
1866
+ $et->VerboseValue("- CanonVRD:$$tagInfo{Name}", $val);
1867
+ $et->VerboseValue("+ CanonVRD:$$tagInfo{Name}", $newVal);
1868
+ ++$$et{CHANGED};
1869
+ }
1870
+ }
1871
+ }
1872
+ }
1873
+ next;
1874
+ }
1875
+ $et->HandleTag($tagTablePtr, $tag, $val,
1876
+ DataPt => $dataPt,
1877
+ DataPos => $dataPos,
1878
+ Start => $off,
1879
+ Size => $len,
1880
+ Index => $index,
1881
+ Format => $format,
1882
+ # $flg[0] is on/off flag
1883
+ # $flg[1] "is default" flag?
1884
+ # $flg[2] changed to 0 when some unsharp mask settings were changed
1885
+ Extra => ", fmt=$fmt flags=" . join(',', @flg),
1886
+ );
1887
+ foreach $i (0..2) {
1888
+ my $flagID = sprintf('0x%x.%d', $tag, $i);
1889
+ $et->HandleTag($tagTablePtr, $flagID, $flg[$i]) if $$tagTablePtr{$flagID};
1890
+ }
1891
+ }
1892
+ return 1 unless $isWriting;
1893
+ return substr($$dataPt, $pos, $dirLen) unless $raf;
1894
+ return 1 if Write($outfile, substr($$dataPt, $pos, $dirLen));
1895
+ return -1;
1896
+ }
1897
+
1898
+ #------------------------------------------------------------------------------
1899
+ # Read/write Canon VRD file
1900
+ # Inputs: 0) ExifTool object reference, 1) dirInfo reference
1901
+ # Returns: 1 if this was a Canon VRD file, 0 otherwise, -1 on write error
1902
+ sub ProcessVRD($$)
1903
+ {
1904
+ my ($et, $dirInfo) = @_;
1905
+ my $raf = $$dirInfo{RAF};
1906
+ my $buff;
1907
+ my $num = $raf->Read($buff, 0x1c);
1908
+
1909
+ # initialize write directories if necessary
1910
+ $et->InitWriteDirs(\%vrdMap, 'XMP') if $$dirInfo{OutFile};
1911
+
1912
+ if (not $num and $$dirInfo{OutFile}) {
1913
+ # create new VRD file from scratch
1914
+ my $newVal = $et->GetNewValue('CanonVRD');
1915
+ if ($newVal) {
1916
+ $et->VPrint(0, " Writing CanonVRD as a block\n");
1917
+ Write($$dirInfo{OutFile}, $newVal) or return -1;
1918
+ $$et{DidCanonVRD} = 1;
1919
+ ++$$et{CHANGED};
1920
+ } else {
1921
+ # allow VRD to be created from individual tags
1922
+ if ($$et{ADD_DIRS}{CanonVRD}) {
1923
+ my $newVal = '';
1924
+ if (ProcessCanonVRD($et, { OutFile => \$newVal }) > 0) {
1925
+ Write($$dirInfo{OutFile}, $newVal) or return -1;
1926
+ ++$$et{CHANGED};
1927
+ return 1;
1928
+ }
1929
+ }
1930
+ $et->Error('No CanonVRD information to write');
1931
+ }
1932
+ } else {
1933
+ $num == 0x1c or return 0;
1934
+ $buff =~ /^CANON OPTIONAL DATA\0/ or return 0;
1935
+ $et->SetFileType();
1936
+ $$dirInfo{DirName} = 'CanonVRD'; # set directory name for verbose output
1937
+ my $result = ProcessCanonVRD($et, $dirInfo);
1938
+ return $result if $result < 0;
1939
+ $result or $et->Warn('Format error in VRD file');
1940
+ }
1941
+ return 1;
1942
+ }
1943
+
1944
+ #------------------------------------------------------------------------------
1945
+ # Write VRD data record as a block
1946
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1947
+ # Returns: VRD data block (may be empty if no VRD data)
1948
+ # Notes: Increments ExifTool CHANGED flag if changed
1949
+ sub WriteCanonVRD($$;$)
1950
+ {
1951
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1952
+ $et or return 1; # allow dummy access
1953
+ my $nvHash = $et->GetNewValueHash($Image::ExifTool::Extra{CanonVRD});
1954
+ my $val = $et->GetNewValue($nvHash);
1955
+ $val = '' unless defined $val;
1956
+ return undef unless $et->IsOverwriting($nvHash, $val);
1957
+ ++$$et{CHANGED};
1958
+ return $val;
1959
+ }
1960
+
1961
+ #------------------------------------------------------------------------------
1962
+ # Read/write CanonVRD information (from VRD file or VRD trailer)
1963
+ # Inputs: 0) ExifTool object reference, 1) dirInfo reference
1964
+ # Returns: 1 on success, 0 not valid VRD, or -1 error writing
1965
+ # - updates DataPos to point to start of CanonVRD information
1966
+ # - updates DirLen to existing trailer length
1967
+ sub ProcessCanonVRD($$;$)
1968
+ {
1969
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1970
+ my $raf = $$dirInfo{RAF};
1971
+ my $offset = $$dirInfo{Offset} || 0;
1972
+ my $outfile = $$dirInfo{OutFile};
1973
+ my $dataPt = $$dirInfo{DataPt};
1974
+ my $verbose = $et->Options('Verbose');
1975
+ my $out = $et->Options('TextOut');
1976
+ my ($buff, $created, $err, $blockLen, $blockType, %didDir, $fromFile);
1977
+ #
1978
+ # The CanonVRD trailer has a 0x1c-byte header and a 0x40-byte footer,
1979
+ # each beginning with "CANON OPTIONAL DATA\0" and containing an int32u
1980
+ # giving the size of the contained data (at byte 0x18 and 0x14 respectively)
1981
+ #
1982
+ if ($raf) {
1983
+ $fromFile = 1;
1984
+ } else {
1985
+ unless ($dataPt) {
1986
+ return 1 unless $outfile;
1987
+ # create blank VRD data from scratch
1988
+ my $blank = $blankHeader . $blankFooter;
1989
+ $dataPt = \$blank;
1990
+ $verbose and print $out " Creating CanonVRD trailer\n";
1991
+ $created = 1;
1992
+ }
1993
+ $raf = new File::RandomAccess($dataPt);
1994
+ }
1995
+ # read and validate the footer
1996
+ $raf->Seek(-0x40-$offset, 2) or return 0;
1997
+ $raf->Read($buff, 0x40) == 0x40 or return 0;
1998
+ $buff =~ /^CANON OPTIONAL DATA\0(.{4})/s or return 0;
1999
+ my $dirLen = unpack('N', $1) + 0x5c; # size including header+footer
2000
+
2001
+ # read and validate the header
2002
+ unless ($dirLen < 0x80000000 and
2003
+ $raf->Seek(-$dirLen, 1) and
2004
+ $raf->Read($buff, 0x1c) == 0x1c and
2005
+ $buff =~ /^CANON OPTIONAL DATA\0/ and
2006
+ $raf->Seek(-0x1c, 1))
2007
+ {
2008
+ $et->Warn('Bad CanonVRD trailer');
2009
+ return 0;
2010
+ }
2011
+ # set variables returned in dirInfo hash
2012
+ $$dirInfo{DataPos} = $raf->Tell();
2013
+ $$dirInfo{DirLen} = $dirLen;
2014
+
2015
+ if ($outfile and ref $outfile eq 'SCALAR' and not length $$outfile) {
2016
+ # write directly to outfile to avoid duplicating data in memory
2017
+ $$outfile = $$dataPt unless $fromFile;
2018
+ # TRICKY! -- copy to outfile memory buffer and edit in place
2019
+ # (so we must disable all Write() calls for this case)
2020
+ $dataPt = $outfile;
2021
+ }
2022
+ if ($fromFile) {
2023
+ $dataPt = \$buff unless $dataPt;
2024
+ # read VRD data into memory if necessary
2025
+ unless ($raf->Read($$dataPt, $dirLen) == $dirLen) {
2026
+ $$dataPt = '' if $outfile and $outfile eq $dataPt;
2027
+ $et->Warn('Error reading CanonVRD data');
2028
+ return 0;
2029
+ }
2030
+ }
2031
+ # exit quickly if writing and no CanonVRD tags are being edited
2032
+ if ($outfile and not exists $$et{EDIT_DIRS}{CanonVRD}) {
2033
+ print $out "$$et{INDENT} [nothing changed]\n" if $verbose;
2034
+ return 1 if $outfile eq $dataPt;
2035
+ return Write($outfile, $$dataPt) ? 1 : -1;
2036
+ }
2037
+
2038
+ my $vrdType = 'VRD';
2039
+
2040
+ if ($outfile) {
2041
+ $verbose and not $created and print $out " Rewriting CanonVRD trailer\n";
2042
+ # delete CanonVRD information if specified
2043
+ my $doDel = $$et{DEL_GROUP}{CanonVRD};
2044
+ unless ($doDel) {
2045
+ $doDel = 1 if $$et{DEL_GROUP}{Trailer} and $$et{FILE_TYPE} ne 'VRD';
2046
+ unless ($doDel) {
2047
+ # also delete if writing as a block (will get added back again later)
2048
+ if ($$et{NEW_VALUE}{$Image::ExifTool::Extra{CanonVRD}}) {
2049
+ # delete if this isn't version 4
2050
+ $doDel = 1 unless $$dataPt =~ /^.{28}\xff\xff\0\xf7/s;
2051
+ }
2052
+ if ($$et{NEW_VALUE}{$Image::ExifTool::Extra{CanonDR4}} and not $doDel) {
2053
+ # delete if this is version 4
2054
+ $doDel = 1 if $$dataPt =~ /^.{28}\xff\xff\0\xf7/s;
2055
+ }
2056
+ }
2057
+ }
2058
+ if ($doDel) {
2059
+ if ($$et{FILE_TYPE} eq 'VRD') {
2060
+ my $newVal = $et->GetNewValue('CanonVRD');
2061
+ if ($newVal) {
2062
+ $verbose and print $out " Writing CanonVRD as a block\n";
2063
+ if ($outfile eq $dataPt) {
2064
+ $$outfile = $newVal;
2065
+ } else {
2066
+ Write($outfile, $newVal) or return -1;
2067
+ }
2068
+ $$et{DidCanonVRD} = 1;
2069
+ ++$$et{CHANGED};
2070
+ } else {
2071
+ $et->Error("Can't delete all CanonVRD information from a VRD file");
2072
+ }
2073
+ } else {
2074
+ $verbose and print $out " Deleting CanonVRD trailer\n";
2075
+ $$outfile = '' if $outfile eq $dataPt;
2076
+ ++$$et{CHANGED};
2077
+ }
2078
+ return 1;
2079
+ }
2080
+ # write now and return if CanonVRD was set as a block
2081
+ my $val = $et->GetNewValue('CanonVRD');
2082
+ unless ($val) {
2083
+ $val = $et->GetNewValue('CanonDR4');
2084
+ $vrdType = 'DR4' if $val;
2085
+ }
2086
+ if ($val) {
2087
+ $verbose and print $out " Writing Canon$vrdType as a block\n";
2088
+ # must wrap DR4 data with the VRD header/footer and edit record
2089
+ $val = WrapDR4($val) if $vrdType eq 'DR4';
2090
+ if ($outfile eq $dataPt) {
2091
+ $$outfile = $val;
2092
+ } else {
2093
+ Write($outfile, $val) or return -1;
2094
+ }
2095
+ $$et{DidCanonVRD} = 1;
2096
+ ++$$et{CHANGED};
2097
+ return 1;
2098
+ }
2099
+ } elsif ($verbose or $$et{HTML_DUMP}) {
2100
+ $et->DumpTrailer($dirInfo) if $$dirInfo{RAF};
2101
+ }
2102
+
2103
+ $tagTablePtr = GetTagTable('Image::ExifTool::CanonVRD::Main');
2104
+
2105
+ # validate VRD trailer and get position and length of edit record
2106
+ SetByteOrder('MM'); # VRD header/footer is big-endian
2107
+ my $pos = 0x1c; # start at end of header
2108
+
2109
+ # loop through the VRD blocks
2110
+ for (;;) {
2111
+ my $end = $dirLen - 0x40; # end of last VRD block (and start of footer)
2112
+ if ($pos + 8 > $end) {
2113
+ last if $pos == $end;
2114
+ $blockLen = $end; # mark as invalid
2115
+ } else {
2116
+ $blockType = Get32u($dataPt, $pos);
2117
+ $blockLen = Get32u($dataPt, $pos + 4);
2118
+ }
2119
+ $vrdType = 'DR4' if $blockType eq 0xffff00f7;
2120
+ $pos += 8; # move to start of block
2121
+ if ($pos + $blockLen > $end) {
2122
+ $et->Warn('Possibly corrupt CanonVRD block');
2123
+ last;
2124
+ }
2125
+ if ($verbose > 1 and not $outfile) {
2126
+ printf $out " CanonVRD block 0x%.8x ($blockLen bytes at offset 0x%x)\n",
2127
+ $blockType, $pos + $$dirInfo{DataPos};
2128
+ if ($verbose > 2) {
2129
+ my %parms = (
2130
+ Start => $pos,
2131
+ Addr => $pos + $$dirInfo{DataPos},
2132
+ Out => $out,
2133
+ Prefix => $$et{INDENT},
2134
+ );
2135
+ $parms{MaxLen} = $verbose == 3 ? 96 : 2048 if $verbose < 5;
2136
+ HexDump($dataPt, $blockLen, %parms);
2137
+ }
2138
+ }
2139
+ my $tagInfo = $$tagTablePtr{$blockType};
2140
+ unless ($tagInfo) {
2141
+ unless ($et->Options('Unknown')) {
2142
+ $pos += $blockLen; # step to next block
2143
+ next;
2144
+ }
2145
+ my $name = sprintf('CanonVRD_0x%.8x', $blockType);
2146
+ my $desc = $name;
2147
+ $desc =~ tr/_/ /;
2148
+ $tagInfo = {
2149
+ Name => $name,
2150
+ Description => $desc,
2151
+ Binary => 1,
2152
+ };
2153
+ AddTagToTable($tagTablePtr, $blockType, $tagInfo);
2154
+ }
2155
+ if ($$tagInfo{SubDirectory}) {
2156
+ my $subTablePtr = GetTagTable($$tagInfo{SubDirectory}{TagTable});
2157
+ my %subdirInfo = (
2158
+ DataPt => $dataPt,
2159
+ DataLen => length $$dataPt,
2160
+ DataPos => $$dirInfo{DataPos},
2161
+ DirStart => $pos,
2162
+ DirLen => $blockLen,
2163
+ DirName => $$tagInfo{Name},
2164
+ Parent => 'CanonVRD',
2165
+ OutFile => $outfile,
2166
+ );
2167
+ if ($outfile) {
2168
+ # set flag indicating we did this directory
2169
+ $didDir{$$tagInfo{Name}} = 1;
2170
+ my ($dat, $diff);
2171
+ if ($$et{NEW_VALUE}{$tagInfo}) {
2172
+ # write as a block
2173
+ $et->VPrint(0, "Writing $$tagInfo{Name} as a block\n");
2174
+ $dat = $et->GetNewValue($tagInfo);
2175
+ $dat = '' unless defined $dat;
2176
+ ++$$et{CHANGED};
2177
+ } else {
2178
+ $dat = $et->WriteDirectory(\%subdirInfo, $subTablePtr);
2179
+ }
2180
+ # update data with new directory
2181
+ if (defined $dat) {
2182
+ if (length $dat or $$et{FILE_TYPE} !~ /^(CRW|VRD)$/) {
2183
+ # replace with new block (updating the block length word)
2184
+ substr($$dataPt, $pos-4, $blockLen+4) = Set32u(length $dat) . $dat;
2185
+ } else {
2186
+ # remove block totally (CRW/VRD files only)
2187
+ substr($$dataPt, $pos-8, $blockLen+8) = '';
2188
+ }
2189
+ # make necessary adjustments if block changes length
2190
+ if (($diff = length($$dataPt) - $dirLen) != 0) {
2191
+ $pos += $diff;
2192
+ $dirLen += $diff;
2193
+ # update the new VRD length in the header/footer
2194
+ Set32u($dirLen - 0x5c, $dataPt, 0x18);
2195
+ Set32u($dirLen - 0x5c, $dataPt, $dirLen - 0x2c);
2196
+ }
2197
+ }
2198
+ } else {
2199
+ # extract as a block if requested
2200
+ $et->ProcessDirectory(\%subdirInfo, $subTablePtr);
2201
+ }
2202
+ } else {
2203
+ $et->HandleTag($tagTablePtr, $blockType, substr($$dataPt, $pos, $blockLen));
2204
+ }
2205
+ $pos += $blockLen; # step to next block
2206
+ }
2207
+ if ($outfile) {
2208
+ # create XMP block if necessary (CRW/VRD files only)
2209
+ if ($$et{ADD_DIRS}{CanonVRD} and not $didDir{XMP}) {
2210
+ my $subTablePtr = GetTagTable('Image::ExifTool::XMP::Main');
2211
+ my $dat = $et->WriteDirectory({ Parent => 'CanonVRD' }, $subTablePtr);
2212
+ if ($dat) {
2213
+ my $blockLen = length $dat;
2214
+ substr($$dataPt, -0x40, 0) = Set32u(0xffff00f6) . Set32u(length $dat) . $dat;
2215
+ $dirLen = length $$dataPt;
2216
+ # update the new VRD length in the header/footer
2217
+ Set32u($dirLen - 0x5c, $dataPt, 0x18);
2218
+ Set32u($dirLen - 0x5c, $dataPt, $dirLen - 0x2c);
2219
+ }
2220
+ }
2221
+ # write CanonVRD trailer unless it is empty
2222
+ if (length $$dataPt) {
2223
+ Write($outfile, $$dataPt) or $err = 1 unless $outfile eq $dataPt;
2224
+ } else {
2225
+ $verbose and print $out " Deleting CanonVRD trailer\n";
2226
+ }
2227
+ } elsif ($vrdType eq 'VRD' and (($$et{TAGS_FROM_FILE} and
2228
+ not $$et{EXCL_TAG_LOOKUP}{canonvrd}) or $$et{REQ_TAG_LOOKUP}{canonvrd}))
2229
+ {
2230
+ # extract CanonVRD block if copying tags, or if requested (and not DR4 info)
2231
+ $et->FoundTag('CanonVRD', $buff);
2232
+ }
2233
+ undef $buff;
2234
+ return $err ? -1 : 1;
2235
+ }
2236
+
2237
+ 1; # end
2238
+
2239
+ __END__
2240
+
2241
+ =head1 NAME
2242
+
2243
+ Image::ExifTool::CanonVRD - Read/write Canon VRD and DR4 information
2244
+
2245
+ =head1 SYNOPSIS
2246
+
2247
+ This module is used by Image::ExifTool
2248
+
2249
+ =head1 DESCRIPTION
2250
+
2251
+ This module contains definitions required by Image::ExifTool to read and
2252
+ write VRD and DR4 Recipe Data information as written by the Canon Digital
2253
+ Photo Professional software. This information is written to VRD and DR4
2254
+ files, and as a trailer in JPEG, CRW, CR2 and TIFF images.
2255
+
2256
+ =head1 AUTHOR
2257
+
2258
+ Copyright 2003-2017, Phil Harvey (phil at owl.phy.queensu.ca)
2259
+
2260
+ This library is free software; you can redistribute it and/or modify it
2261
+ under the same terms as Perl itself.
2262
+
2263
+ =head1 ACKNOWLEDGEMENTS
2264
+
2265
+ Thanks to Bogdan and Gert Kello for decoding some tags.
2266
+
2267
+ =head1 SEE ALSO
2268
+
2269
+ L<Image::ExifTool::TagNames/CanonVRD Tags>,
2270
+ L<Image::ExifTool(3pm)|Image::ExifTool>
2271
+
2272
+ =cut
2273
+