exiftool_vendored 9.37.0 → 9.41.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 (889) hide show
  1. checksums.yaml +6 -14
  2. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/Changes +74 -0
  3. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/MANIFEST +14 -0
  4. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/META.yml +1 -1
  5. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/Makefile.PL +0 -0
  6. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/README +30 -30
  7. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/exif2iptc.args +0 -0
  8. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/exif2xmp.args +0 -0
  9. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/gps2xmp.args +0 -0
  10. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptc2exif.args +0 -0
  11. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptc2xmp.args +0 -0
  12. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptcCore.args +0 -0
  13. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/pdf2xmp.args +0 -0
  14. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2exif.args +0 -0
  15. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2gps.args +0 -0
  16. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2iptc.args +0 -0
  17. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2pdf.args +0 -0
  18. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/config_files/ExifTool_config +0 -0
  19. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/config_files/convert_regions.config +0 -0
  20. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/exiftool +266 -226
  21. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/gpx.fmt +0 -0
  22. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/gpx_wpt.fmt +0 -0
  23. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/kml.fmt +0 -0
  24. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/ExifTool.html +79 -54
  25. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/MIE1.1-20070121.pdf +0 -0
  26. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/Shift.html +0 -0
  27. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/AFCP.html +0 -0
  28. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/AIFF.html +0 -0
  29. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/APE.html +0 -0
  30. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/APP12.html +0 -0
  31. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ASF.html +0 -0
  32. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Apple.html +11 -8
  33. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/BMP.html +0 -0
  34. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Canon.html +138 -14
  35. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonCustom.html +0 -0
  36. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonRaw.html +0 -0
  37. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonVRD.html +0 -0
  38. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Casio.html +0 -0
  39. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Composite.html +19 -13
  40. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DICOM.html +0 -0
  41. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DNG.html +0 -0
  42. data/bin/Image-ExifTool-9.41/html/TagNames/DPX.html +190 -0
  43. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DV.html +0 -0
  44. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DarwinCore.html +0 -0
  45. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DjVu.html +0 -0
  46. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/EXE.html +0 -0
  47. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/EXIF.html +0 -0
  48. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Extra.html +13 -6
  49. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FLAC.html +0 -0
  50. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FLIR.html +166 -2
  51. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Flash.html +0 -0
  52. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FlashPix.html +0 -0
  53. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Font.html +0 -0
  54. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FotoStation.html +0 -0
  55. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FujiFilm.html +11 -1
  56. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GE.html +0 -0
  57. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GIF.html +0 -0
  58. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GIMP.html +0 -0
  59. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GPS.html +0 -0
  60. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GeoTiff.html +0 -0
  61. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/H264.html +0 -0
  62. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/HP.html +0 -0
  63. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/HTML.html +0 -0
  64. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ICC_Profile.html +0 -0
  65. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ID3.html +0 -0
  66. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/IPTC.html +3 -3
  67. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ITC.html +0 -0
  68. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JFIF.html +0 -0
  69. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JPEG.html +6 -4
  70. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JVC.html +0 -0
  71. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Jpeg2000.html +0 -0
  72. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Kodak.html +0 -0
  73. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/KyoceraRaw.html +0 -0
  74. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/LNK.html +0 -0
  75. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Leaf.html +0 -0
  76. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/M2TS.html +0 -0
  77. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MIE.html +0 -0
  78. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MIFF.html +0 -0
  79. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MNG.html +0 -0
  80. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPC.html +0 -0
  81. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPEG.html +0 -0
  82. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPF.html +0 -0
  83. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MWG.html +0 -0
  84. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MXF.html +0 -0
  85. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Matroska.html +0 -0
  86. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Microsoft.html +0 -0
  87. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Minolta.html +30 -19
  88. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MinoltaRaw.html +0 -0
  89. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Nikon.html +81 -60
  90. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/NikonCapture.html +0 -0
  91. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/NikonCustom.html +0 -0
  92. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/OOXML.html +0 -0
  93. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Ogg.html +0 -0
  94. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Olympus.html +0 -0
  95. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/OpenEXR.html +0 -0
  96. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PDF.html +6 -6
  97. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PGF.html +0 -0
  98. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PICT.html +0 -0
  99. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PLIST.html +0 -0
  100. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PNG.html +25 -18
  101. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PSP.html +0 -0
  102. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Panasonic.html +51 -14
  103. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PanasonicRaw.html +0 -0
  104. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Pentax.html +23 -6
  105. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhaseOne.html +0 -0
  106. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhotoCD.html +0 -0
  107. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhotoMechanic.html +0 -0
  108. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Photoshop.html +0 -0
  109. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PostScript.html +0 -0
  110. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PrintIM.html +0 -0
  111. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Qualcomm.html +0 -0
  112. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/QuickTime.html +404 -126
  113. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RIFF.html +19 -13
  114. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RSRC.html +0 -0
  115. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RTF.html +0 -0
  116. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Radiance.html +0 -0
  117. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Rawzor.html +0 -0
  118. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Real.html +0 -0
  119. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Reconyx.html +0 -0
  120. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Ricoh.html +0 -0
  121. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Samsung.html +27 -1
  122. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sanyo.html +0 -0
  123. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Scalado.html +0 -0
  124. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Shortcuts.html +0 -0
  125. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sigma.html +0 -0
  126. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/SigmaRaw.html +0 -0
  127. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sony.html +491 -121
  128. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/SonyIDC.html +0 -0
  129. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Stim.html +0 -0
  130. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Theora.html +0 -0
  131. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Torrent.html +0 -0
  132. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Unknown.html +0 -0
  133. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Vorbis.html +0 -0
  134. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/XMP.html +824 -175
  135. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ZIP.html +0 -0
  136. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/iWork.html +0 -0
  137. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/index.html +7 -5
  138. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/style.css +0 -0
  139. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/ancient_history.html +201 -0
  140. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/canon_raw.html +0 -0
  141. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/commentary.html +0 -0
  142. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/config.html +0 -0
  143. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/data_members.html +9 -0
  144. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/exiftool_pod.html +92 -71
  145. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/faq.html +0 -0
  146. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/filename.html +0 -0
  147. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/geotag.html +13 -9
  148. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/history.html +82 -201
  149. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/htmldump.html +0 -0
  150. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/idiosyncracies.html +4 -2
  151. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/index.html +46 -35
  152. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/install.html +0 -0
  153. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/metafiles.html +0 -0
  154. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/overview.png +0 -0
  155. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/standards.html +0 -0
  156. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/struct.html +0 -0
  157. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/style.css +0 -0
  158. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/under.html +0 -0
  159. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/verbose.html +0 -0
  160. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/writing.html +0 -0
  161. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/File/RandomAccess.pm +0 -0
  162. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/File/RandomAccess.pod +0 -0
  163. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool.pm +387 -331
  164. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool.pod +101 -81
  165. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AES.pm +0 -0
  166. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AFCP.pm +14 -14
  167. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AIFF.pm +17 -17
  168. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/APE.pm +18 -18
  169. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/APP12.pm +21 -21
  170. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ASF.pm +48 -48
  171. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Apple.pm +31 -19
  172. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BMP.pm +4 -4
  173. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BZZ.pm +0 -0
  174. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BigTIFF.pm +36 -36
  175. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BuildTagLookup.pm +12 -12
  176. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Canon.pm +126 -38
  177. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonCustom.pm +37 -37
  178. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonRaw.pm +30 -30
  179. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonVRD.pm +75 -75
  180. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CaptureOne.pm +18 -18
  181. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Casio.pm +0 -0
  182. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset.pm +13 -13
  183. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
  184. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
  185. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
  186. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
  187. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
  188. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
  189. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
  190. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
  191. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
  192. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
  193. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
  194. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
  195. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
  196. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
  197. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
  198. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
  199. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
  200. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
  201. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
  202. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
  203. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
  204. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
  205. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
  206. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
  207. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
  208. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
  209. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
  210. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
  211. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
  212. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
  213. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DICOM.pm +56 -17
  214. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DNG.pm +85 -85
  215. data/bin/Image-ExifTool-9.41/lib/Image/ExifTool/DPX.pm +151 -0
  216. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DV.pm +6 -6
  217. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DarwinCore.pm +0 -0
  218. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DjVu.pm +14 -14
  219. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/EXE.pm +47 -47
  220. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Exif.pm +126 -116
  221. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FLAC.pm +14 -14
  222. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FLIR.pm +282 -22
  223. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Fixup.pm +0 -0
  224. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Flash.pm +41 -41
  225. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FlashPix.pm +97 -97
  226. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Font.pm +46 -46
  227. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FotoStation.pm +21 -20
  228. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FujiFilm.pm +40 -38
  229. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GE.pm +0 -0
  230. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GIF.pm +32 -32
  231. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GIMP.pm +11 -11
  232. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GPS.pm +3 -3
  233. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GeoTiff.pm +19 -19
  234. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Geotag.pm +69 -66
  235. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/H264.pm +42 -42
  236. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HP.pm +9 -9
  237. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HTML.pm +16 -16
  238. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HtmlDump.pm +10 -10
  239. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ICC_Profile.pm +48 -48
  240. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ID3.pm +84 -84
  241. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/IPTC.pm +38 -38
  242. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ITC.pm +11 -11
  243. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Import.pm +0 -0
  244. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/InDesign.pm +18 -18
  245. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JPEG.pm +10 -6
  246. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JPEGDigest.pm +4 -4
  247. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JVC.pm +8 -8
  248. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Jpeg2000.pm +50 -58
  249. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Kodak.pm +15 -15
  250. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/KyoceraRaw.pm +4 -4
  251. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/LNK.pm +24 -24
  252. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/cs.pm +0 -0
  253. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/de.pm +0 -0
  254. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/en_ca.pm +0 -0
  255. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/en_gb.pm +0 -0
  256. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/es.pm +0 -0
  257. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/fi.pm +0 -0
  258. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/fr.pm +1 -1
  259. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/it.pm +0 -0
  260. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ja.pm +0 -0
  261. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ko.pm +0 -0
  262. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/nl.pm +0 -0
  263. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/pl.pm +0 -0
  264. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ru.pm +0 -0
  265. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/sv.pm +0 -0
  266. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/tr.pm +0 -0
  267. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/zh_cn.pm +0 -0
  268. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/zh_tw.pm +0 -0
  269. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Leaf.pm +11 -11
  270. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/M2TS.pm +37 -37
  271. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIE.pm +95 -95
  272. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIEUnits.pod +0 -0
  273. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIFF.pm +17 -17
  274. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MNG.pm +0 -0
  275. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPC.pm +11 -11
  276. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPEG.pm +28 -28
  277. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPF.pm +22 -22
  278. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MWG.pm +9 -9
  279. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MXF.pm +46 -46
  280. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MakerNotes.pm +61 -59
  281. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Matroska.pm +27 -27
  282. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Microsoft.pm +8 -8
  283. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Minolta.pm +50 -28
  284. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MinoltaRaw.pm +17 -17
  285. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Nikon.pm +80 -63
  286. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/NikonCapture.pm +29 -29
  287. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/NikonCustom.pm +0 -0
  288. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/OOXML.pm +20 -20
  289. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Ogg.pm +19 -19
  290. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Olympus.pm +3 -3
  291. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/OpenEXR.pm +16 -16
  292. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PDF.pm +126 -126
  293. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PGF.pm +7 -7
  294. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PICT.pm +18 -18
  295. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PLIST.pm +39 -39
  296. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PNG.pm +141 -95
  297. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PPM.pm +11 -11
  298. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PSP.pm +14 -14
  299. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Panasonic.pm +82 -37
  300. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PanasonicRaw.pm +40 -40
  301. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Pentax.pm +86 -14
  302. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhaseOne.pm +36 -36
  303. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhotoCD.pm +4 -4
  304. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhotoMechanic.pm +12 -12
  305. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Photoshop.pm +23 -23
  306. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PostScript.pm +36 -36
  307. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PrintIM.pm +10 -10
  308. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Qualcomm.pm +5 -5
  309. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/QuickTime.pm +528 -219
  310. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/README +5 -3
  311. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RIFF.pm +40 -32
  312. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RSRC.pm +15 -15
  313. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RTF.pm +15 -15
  314. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Radiance.pm +9 -9
  315. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Rawzor.pm +19 -19
  316. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Real.pm +43 -43
  317. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Reconyx.pm +0 -0
  318. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Ricoh.pm +24 -24
  319. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Samsung.pm +41 -15
  320. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sanyo.pm +0 -0
  321. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Scalado.pm +5 -5
  322. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Shift.pl +0 -0
  323. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Shortcuts.pm +0 -0
  324. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sigma.pm +0 -0
  325. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/SigmaRaw.pm +56 -56
  326. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sony.pm +450 -166
  327. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/SonyIDC.pm +9 -9
  328. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Stim.pm +0 -0
  329. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagInfoXML.pm +6 -4
  330. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagLookup.pm +1707 -1468
  331. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagNames.pod +568 -102
  332. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Theora.pm +0 -0
  333. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Torrent.pm +11 -11
  334. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Unknown.pm +0 -0
  335. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Vorbis.pm +5 -5
  336. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteCanonRaw.pl +51 -51
  337. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteExif.pl +273 -273
  338. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteIPTC.pl +44 -44
  339. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePDF.pl +45 -39
  340. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePNG.pl +86 -40
  341. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePhotoshop.pl +27 -27
  342. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePostScript.pl +47 -47
  343. data/bin/Image-ExifTool-9.41/lib/Image/ExifTool/WriteQuickTime.pl +344 -0
  344. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteXMP.pl +112 -112
  345. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Writer.pl +428 -360
  346. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMP.pm +195 -104
  347. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMP2.pl +1 -0
  348. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMPStruct.pl +53 -52
  349. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ZIP.pm +50 -50
  350. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/iWork.pm +17 -17
  351. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/perl-Image-ExifTool.spec +31 -31
  352. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP.t +0 -0
  353. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP_2.out +0 -0
  354. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP_3.out +0 -0
  355. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AIFF.t +0 -0
  356. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AIFF_2.out +0 -0
  357. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE.t +0 -0
  358. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE_2.out +0 -0
  359. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE_3.out +0 -0
  360. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ASF.t +0 -0
  361. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ASF_2.out +0 -0
  362. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BMP.t +0 -0
  363. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BMP_2.out +0 -0
  364. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BigTIFF.t +0 -0
  365. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BigTIFF_2.out +0 -0
  366. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon.t +0 -0
  367. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw.t +0 -0
  368. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_2.out +0 -0
  369. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_4.out +5 -7
  370. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_5.out +0 -0
  371. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_6.out +0 -0
  372. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_7.out +0 -0
  373. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD.t +0 -0
  374. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_11.out +0 -0
  375. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_12.out +0 -0
  376. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_2.out +0 -0
  377. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_3.out +0 -0
  378. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_4.out +0 -0
  379. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_5.out +0 -0
  380. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_6.out +0 -0
  381. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_7.out +0 -0
  382. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_8.out +0 -0
  383. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_9.out +0 -0
  384. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon_2.out +4 -3
  385. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon_3.out +0 -0
  386. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio.t +0 -0
  387. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_2.out +0 -0
  388. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_3.out +0 -0
  389. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_4.out +0 -0
  390. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_5.out +0 -0
  391. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_6.out +0 -0
  392. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DICOM.t +0 -0
  393. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DICOM_2.out +0 -0
  394. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG.t +0 -0
  395. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG_2.out +0 -0
  396. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG_3.out +0 -0
  397. data/bin/Image-ExifTool-9.41/t/DPX.t +28 -0
  398. data/bin/Image-ExifTool-9.41/t/DPX_2.out +35 -0
  399. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DV.t +0 -0
  400. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DV_2.out +0 -0
  401. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DjVu.t +0 -0
  402. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DjVu_2.out +0 -0
  403. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE.t +0 -0
  404. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_2.out +0 -0
  405. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_3.out +0 -0
  406. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_4.out +0 -0
  407. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool.t +0 -0
  408. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_16.out +0 -0
  409. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_17.out +0 -0
  410. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_2.out +0 -0
  411. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_20.out +0 -0
  412. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_21.out +0 -0
  413. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_22.out +0 -0
  414. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_23.out +0 -0
  415. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_24.out +0 -0
  416. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_25.out +0 -0
  417. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_26.out +0 -0
  418. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_3.out +0 -0
  419. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_4.out +0 -0
  420. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_5.out +0 -0
  421. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_6.out +0 -0
  422. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_7.out +0 -0
  423. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_8.out +0 -0
  424. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_9.out +0 -0
  425. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC.t +0 -0
  426. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC_2.out +0 -0
  427. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC_3.out +0 -0
  428. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR.t +0 -0
  429. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR_2.out +0 -0
  430. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR_3.out +0 -0
  431. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash.t +0 -0
  432. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FlashPix.t +0 -0
  433. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FlashPix_2.out +0 -0
  434. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash_2.out +0 -0
  435. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash_3.out +0 -0
  436. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font.t +0 -0
  437. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_2.out +0 -0
  438. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_3.out +0 -0
  439. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_4.out +0 -0
  440. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_5.out +0 -0
  441. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_6.out +0 -0
  442. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_7.out +0 -0
  443. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation.t +0 -0
  444. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation_2.out +0 -0
  445. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation_3.out +0 -0
  446. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm.t +0 -0
  447. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_2.out +0 -0
  448. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_3.out +0 -0
  449. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_4.out +0 -0
  450. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_5.out +0 -0
  451. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE.t +0 -0
  452. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE_2.out +0 -0
  453. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE_3.out +0 -0
  454. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF.t +0 -0
  455. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_2.out +0 -0
  456. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_3.out +0 -0
  457. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_4.out +0 -0
  458. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIMP.t +0 -0
  459. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIMP_2.out +0 -0
  460. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS.t +0 -0
  461. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS_2.out +0 -0
  462. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS_3.out +0 -0
  463. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff.t +0 -0
  464. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff_2.out +0 -0
  465. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff_3.out +0 -0
  466. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag.t +18 -1
  467. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_2.out +0 -0
  468. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_3.out +0 -0
  469. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_5.out +0 -0
  470. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_6.out +0 -0
  471. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_7.out +0 -0
  472. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_8.out +0 -0
  473. data/bin/Image-ExifTool-9.41/t/Geotag_9.out +7 -0
  474. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/HTML.t +0 -0
  475. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/HTML_2.out +0 -0
  476. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC.t +0 -0
  477. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_2.out +0 -0
  478. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_4.out +0 -0
  479. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_5.out +0 -0
  480. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_6.out +0 -0
  481. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_7.out +0 -0
  482. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_8.out +0 -0
  483. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ITC.t +0 -0
  484. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ITC_2.out +0 -0
  485. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign.t +0 -0
  486. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_2.out +0 -0
  487. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_3.out +0 -0
  488. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_4.out +0 -0
  489. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC.t +0 -0
  490. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC_2.out +0 -0
  491. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC_3.out +0 -0
  492. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000.t +0 -0
  493. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_2.out +0 -0
  494. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_3.out +0 -0
  495. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_4.out +0 -0
  496. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak.t +0 -0
  497. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak_2.out +0 -0
  498. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak_3.out +0 -0
  499. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/KyoceraRaw.t +0 -0
  500. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/KyoceraRaw_2.out +0 -0
  501. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/LNK.t +0 -0
  502. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/LNK_2.out +0 -0
  503. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang.t +0 -0
  504. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_1.out +0 -0
  505. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_10.out +0 -0
  506. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_11.out +0 -0
  507. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_12.out +0 -0
  508. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_13.out +0 -0
  509. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_14.out +0 -0
  510. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_15.out +0 -0
  511. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_16.out +0 -0
  512. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_17.out +0 -0
  513. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_18.out +0 -0
  514. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_2.out +0 -0
  515. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_3.out +0 -0
  516. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_4.out +0 -0
  517. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_5.out +0 -0
  518. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_6.out +0 -0
  519. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_7.out +0 -0
  520. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_8.out +0 -0
  521. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_9.out +0 -0
  522. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/M2TS.t +0 -0
  523. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/M2TS_2.out +0 -0
  524. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE.t +0 -0
  525. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_2.out +0 -0
  526. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_3.out +0 -0
  527. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_5.out +0 -0
  528. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_6.out +0 -0
  529. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIFF.t +0 -0
  530. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIFF_2.out +0 -0
  531. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MP3.t +0 -0
  532. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MP3_2.out +0 -0
  533. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG.t +0 -0
  534. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_2.out +0 -0
  535. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_3.out +0 -0
  536. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_4.out +0 -0
  537. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_5.out +0 -0
  538. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_6.out +0 -0
  539. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MXF.t +0 -0
  540. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MXF_2.out +0 -0
  541. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Matroska.t +0 -0
  542. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Matroska_2.out +0 -0
  543. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta.t +0 -0
  544. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_2.out +0 -0
  545. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_3.out +0 -0
  546. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_4.out +0 -0
  547. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon.t +0 -0
  548. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_2.out +0 -0
  549. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_3.out +0 -0
  550. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_4.out +0 -0
  551. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_5.out +0 -0
  552. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_7.out +0 -0
  553. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_8.out +0 -0
  554. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus.t +0 -0
  555. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_2.out +0 -0
  556. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_3.out +0 -0
  557. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_4.out +0 -0
  558. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_5.out +0 -0
  559. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_6.out +0 -0
  560. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_7.out +0 -0
  561. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/OpenEXR.t +0 -0
  562. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/OpenEXR_2.out +0 -0
  563. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF.t +0 -0
  564. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_10.out +0 -0
  565. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_11.out +0 -0
  566. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_12.out +0 -0
  567. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_14.out +0 -0
  568. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_15.out +0 -0
  569. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_16.out +0 -0
  570. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_17.out +0 -0
  571. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_18.out +0 -0
  572. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_19.out +0 -0
  573. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_2.out +0 -0
  574. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_20.out +0 -0
  575. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_22.out +0 -0
  576. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_4.out +0 -0
  577. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_5.out +0 -0
  578. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_6.out +0 -0
  579. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_7.out +0 -0
  580. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_8.out +0 -0
  581. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_9.out +0 -0
  582. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PGF.t +0 -0
  583. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PGF_2.out +0 -0
  584. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PICT.t +0 -0
  585. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PICT_2.out +0 -0
  586. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST.t +0 -0
  587. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST_2.out +0 -0
  588. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST_3.out +0 -0
  589. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG.t +31 -1
  590. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_2.out +0 -0
  591. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_3.out +0 -0
  592. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_4.out +0 -0
  593. data/bin/Image-ExifTool-9.41/t/PNG_5.out +17 -0
  594. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM.t +0 -0
  595. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM_2.out +0 -0
  596. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM_3.out +0 -0
  597. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PSP.t +0 -0
  598. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PSP_2.out +0 -0
  599. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic.t +0 -0
  600. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_2.out +0 -0
  601. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_3.out +0 -0
  602. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_4.out +0 -0
  603. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_5.out +0 -0
  604. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax.t +0 -0
  605. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_2.out +0 -0
  606. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_3.out +0 -0
  607. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_4.out +0 -0
  608. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoCD.t +0 -0
  609. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoCD_2.out +0 -0
  610. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic.t +0 -0
  611. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic_2.out +0 -0
  612. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic_3.out +0 -0
  613. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop.t +0 -0
  614. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop_2.out +0 -0
  615. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop_3.out +0 -0
  616. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript.t +0 -0
  617. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript_2.out +0 -0
  618. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript_3.out +0 -0
  619. data/bin/Image-ExifTool-9.41/t/QuickTime.t +54 -0
  620. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/QuickTime_2.out +10 -8
  621. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/QuickTime_3.out +10 -8
  622. data/bin/Image-ExifTool-9.41/t/QuickTime_4.out +16 -0
  623. data/bin/Image-ExifTool-9.41/t/QuickTime_5.out +12 -0
  624. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF.t +0 -0
  625. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_2.out +0 -0
  626. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_3.out +0 -0
  627. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_4.out +0 -0
  628. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RTF.t +0 -0
  629. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RTF_2.out +0 -0
  630. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Radiance.t +0 -0
  631. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Radiance_2.out +0 -0
  632. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real.t +0 -0
  633. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_2.out +0 -0
  634. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_3.out +0 -0
  635. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_4.out +0 -0
  636. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh.t +0 -0
  637. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_2.out +0 -0
  638. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_3.out +0 -0
  639. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_4.out +0 -0
  640. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo.t +0 -0
  641. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo_2.out +0 -0
  642. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo_3.out +0 -0
  643. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma.t +0 -0
  644. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_2.out +0 -0
  645. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_3.out +0 -0
  646. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_4.out +0 -0
  647. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_5.out +0 -0
  648. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony.t +0 -0
  649. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_2.out +0 -0
  650. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_3.out +0 -0
  651. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_5.out +0 -0
  652. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/TestLib.pm +0 -0
  653. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Torrent.t +0 -0
  654. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Torrent_2.out +0 -0
  655. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown.t +0 -0
  656. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown_2.out +0 -0
  657. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown_3.out +0 -0
  658. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Vorbis.t +0 -0
  659. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Vorbis_2.out +0 -0
  660. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer.t +53 -1
  661. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_10.out +0 -0
  662. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_11.out +0 -0
  663. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_13.out +0 -0
  664. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_14.out +0 -0
  665. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_15.out +0 -0
  666. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_16.out +0 -0
  667. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_17.out +0 -0
  668. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_18.out +0 -0
  669. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_19.out +0 -0
  670. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_2.out +0 -0
  671. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_22.out +0 -0
  672. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_24.out +0 -0
  673. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_25.out +0 -0
  674. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_26.out +0 -0
  675. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_27.out +0 -0
  676. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_28.out +0 -0
  677. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_29.out +0 -0
  678. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_30.out +0 -0
  679. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_31.out +0 -0
  680. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_32.out +0 -0
  681. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_33.out +0 -0
  682. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_34.out +0 -0
  683. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_35.out +0 -0
  684. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_36.out +0 -0
  685. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_37.out +0 -0
  686. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_38.out +0 -0
  687. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_39.out +0 -0
  688. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_4.out +0 -0
  689. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_40.out +0 -0
  690. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_41.out +0 -0
  691. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_42.out +0 -0
  692. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_43.out +0 -0
  693. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_44.out +0 -0
  694. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_45.out +0 -0
  695. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_46.out +8 -6
  696. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_47.out +0 -0
  697. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_48.out +0 -0
  698. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_50.out +0 -0
  699. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_51.out +0 -0
  700. data/bin/Image-ExifTool-9.41/t/Writer_52.out +22 -0
  701. data/bin/Image-ExifTool-9.41/t/Writer_53.out +33 -0
  702. data/bin/Image-ExifTool-9.41/t/Writer_54.out +2 -0
  703. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_6.out +0 -0
  704. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_7.out +0 -0
  705. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_9.out +0 -0
  706. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP.t +0 -0
  707. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_10.out +0 -0
  708. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_11.out +0 -0
  709. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_12.out +0 -0
  710. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_13.out +0 -0
  711. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_14.out +0 -0
  712. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_15.out +0 -0
  713. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_16.out +0 -0
  714. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_17.out +0 -0
  715. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_18.out +0 -0
  716. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_19.out +0 -0
  717. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_2.out +0 -0
  718. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_20.out +0 -0
  719. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_21.out +0 -0
  720. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_22.out +0 -0
  721. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_23.out +0 -0
  722. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_24.out +0 -0
  723. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_25.out +0 -0
  724. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_26.out +0 -0
  725. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_27.out +0 -0
  726. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_28.out +0 -0
  727. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_29.out +0 -0
  728. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_3.out +0 -0
  729. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_30.out +0 -0
  730. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_31.out +0 -0
  731. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_32.out +0 -0
  732. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_34.out +0 -0
  733. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_36.out +0 -0
  734. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_37.out +0 -0
  735. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_39.out +0 -0
  736. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_40.out +0 -0
  737. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_41.out +0 -0
  738. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_5.out +0 -0
  739. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_6.out +0 -0
  740. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_7.out +0 -0
  741. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_8.out +0 -0
  742. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_9.out +0 -0
  743. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP.t +0 -0
  744. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_2.out +0 -0
  745. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_3.out +0 -0
  746. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_4.out +0 -0
  747. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_5.out +0 -0
  748. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_6.out +0 -0
  749. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_7.out +0 -0
  750. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/AFCP.jpg +0 -0
  751. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/AIFF.aif +0 -0
  752. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/APE.ape +0 -0
  753. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/APE.mpc +0 -0
  754. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ASF.wmv +0 -0
  755. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/BMP.bmp +0 -0
  756. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/BigTIFF.btf +0 -0
  757. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Canon.jpg +0 -0
  758. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Canon1DmkIII.jpg +0 -0
  759. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonRaw.cr2 +0 -0
  760. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonRaw.crw +0 -0
  761. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonVRD.vrd +0 -0
  762. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CaptureOne.eip +0 -0
  763. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Casio.jpg +0 -0
  764. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Casio2.jpg +0 -0
  765. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CasioQVCI.jpg +0 -0
  766. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DICOM.dcm +0 -0
  767. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DNG.dng +0 -0
  768. data/bin/Image-ExifTool-9.41/t/images/DPX.dpx +0 -0
  769. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DV.dv +0 -0
  770. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DjVu.djvu +0 -0
  771. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.elf +0 -0
  772. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.exe +0 -0
  773. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.macho +0 -0
  774. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExifTool.jpg +0 -0
  775. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExifTool.tif +0 -0
  776. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExtendedXMP.jpg +0 -0
  777. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLAC.flac +0 -0
  778. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLAC.ogg +0 -0
  779. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLIR.fpf +0 -0
  780. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLIR.jpg +0 -0
  781. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Flash.flv +0 -0
  782. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Flash.swf +0 -0
  783. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FlashPix.ppt +0 -0
  784. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.afm +0 -0
  785. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.dfont +0 -0
  786. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfa +0 -0
  787. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfb +0 -0
  788. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfm +0 -0
  789. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.ttf +0 -0
  790. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FotoStation.jpg +0 -0
  791. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FujiFilm.jpg +0 -0
  792. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FujiFilm.raf +0 -0
  793. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GE.jpg +0 -0
  794. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GIF.gif +0 -0
  795. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GIMP.xcf +0 -0
  796. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GPS.jpg +0 -0
  797. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GeoTiff.tif +0 -0
  798. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.gpx +0 -0
  799. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.igc +0 -0
  800. data/bin/Image-ExifTool-9.41/t/images/Geotag.kml +55 -0
  801. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.log +0 -0
  802. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.xml +0 -0
  803. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag2.log +0 -0
  804. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/HTML.html +0 -0
  805. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/IPTC.jpg +0 -0
  806. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ITC.itc +0 -0
  807. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/InDesign.indd +0 -0
  808. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/JVC.jpg +0 -0
  809. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/JVC2.jpg +0 -0
  810. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Jpeg2000.j2c +0 -0
  811. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Jpeg2000.jp2 +0 -0
  812. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Kodak.jpg +0 -0
  813. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/KyoceraRaw.raw +0 -0
  814. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/LNK.lnk +0 -0
  815. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/M2TS.mts +0 -0
  816. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MIE.mie +0 -0
  817. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MIFF.miff +0 -0
  818. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MP3.mp3 +0 -0
  819. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MWG.jpg +0 -0
  820. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MXF.mxf +0 -0
  821. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Matroska.mkv +0 -0
  822. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Minolta.jpg +0 -0
  823. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Minolta.mrw +0 -0
  824. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Nikon.jpg +0 -0
  825. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Nikon.nef +0 -0
  826. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/NikonD2Hs.jpg +0 -0
  827. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/NikonD70.jpg +0 -0
  828. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OOXML.docx +0 -0
  829. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Olympus.jpg +0 -0
  830. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Olympus2.jpg +0 -0
  831. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OlympusE1.jpg +0 -0
  832. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OpenDoc.ods +0 -0
  833. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OpenEXR.exr +0 -0
  834. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PDF.pdf +0 -0
  835. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PDF2.pdf +0 -0
  836. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PGF.pgf +0 -0
  837. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PICT.pict +0 -0
  838. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PLIST-bin.plist +0 -0
  839. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PLIST-xml.plist +0 -0
  840. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PNG.png +0 -0
  841. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PPM.ppm +0 -0
  842. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PSP.psp +0 -0
  843. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Panasonic.jpg +0 -0
  844. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Panasonic.rw2 +0 -0
  845. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Pentax.avi +0 -0
  846. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Pentax.jpg +0 -0
  847. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PhotoCD.pcd +0 -0
  848. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PhotoMechanic.jpg +0 -0
  849. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Photoshop.psd +0 -0
  850. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PostScript.eps +0 -0
  851. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/QuickTime.m4a +0 -0
  852. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/QuickTime.mov +0 -0
  853. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.avi +0 -0
  854. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.wav +0 -0
  855. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.webp +0 -0
  856. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RTF.rtf +0 -0
  857. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Radiance.hdr +0 -0
  858. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.ra +0 -0
  859. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.ram +0 -0
  860. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.rm +0 -0
  861. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Ricoh.jpg +0 -0
  862. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Ricoh2.jpg +0 -0
  863. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sanyo.jpg +0 -0
  864. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sigma.jpg +0 -0
  865. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sigma.x3f +0 -0
  866. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/SigmaDP2.x3f +0 -0
  867. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sony.jpg +0 -0
  868. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sony.pmp +0 -0
  869. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Torrent.torrent +0 -0
  870. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Unknown.jpg +0 -0
  871. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Vorbis.ogg +0 -0
  872. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Writer.jpg +0 -0
  873. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.inx +0 -0
  874. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.jpg +0 -0
  875. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.svg +0 -0
  876. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.xml +0 -0
  877. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.xmp +0 -0
  878. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP2.xmp +0 -0
  879. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP3.xmp +0 -0
  880. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP4.xmp +0 -0
  881. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP5.xmp +0 -0
  882. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ZIP.gz +0 -0
  883. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ZIP.zip +0 -0
  884. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/iWork.numbers +0 -0
  885. data/lib/exiftool_vendored.rb +11 -3
  886. data/lib/exiftool_vendored/version.rb +1 -1
  887. data/lib/exiftool_vendored/version_extractor.rb +5 -7
  888. metadata +942 -886
  889. data/bin/Image-ExifTool-9.37/t/QuickTime.t +0 -31
@@ -8,42 +8,51 @@
8
8
  # 09/22/2006 - P. Harvey Added M4A support
9
9
  # 07/27/2010 - P. Harvey Updated to 2010-05-03 QuickTime spec
10
10
  #
11
- # References: 1) http://developer.apple.com/mac/library/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html
12
- # 2) http://search.cpan.org/dist/MP4-Info-1.04/
13
- # 3) http://www.geocities.com/xhelmboyx/quicktime/formats/mp4-layout.txt
14
- # 4) http://wiki.multimedia.cx/index.php?title=Apple_QuickTime
15
- # 5) ISO 14496-12 (http://neuron2.net/library/avc/c041828_ISO_IEC_14496-12_2005(E).pdf)
16
- # 6) ISO 14496-16 (http://www.iec-normen.de/previewpdf/info_isoiec14496-16%7Bed2.0%7Den.pdf)
17
- # 7) http://atomicparsley.sourceforge.net/mpeg-4files.html
18
- # 8) http://wiki.multimedia.cx/index.php?title=QuickTime_container
19
- # 9) http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart3.pdf (Oct 2008)
20
- # 10) http://code.google.com/p/mp4v2/wiki/iTunesMetadata
21
- # 11) http://www.canieti.com.mx/assets/files/1011/IEC_100_1384_DC.pdf
22
- # 12) QuickTime file format specification 2010-05-03
23
- # 13) http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v10.pdf
24
- # 14) http://standards.iso.org/ittf/PubliclyAvailableStandards/c051533_ISO_IEC_14496-12_2008.zip
25
- # 15) http://getid3.sourceforge.net/source/module.audio-video.quicktime.phps
26
- # 16) http://qtra.apple.com/atoms.html
27
- # 17) http://www.etsi.org/deliver/etsi_ts/126200_126299/126244/10.01.00_60/ts_126244v100100p.pdf
11
+ # References:
12
+ #
13
+ # 1) http://developer.apple.com/mac/library/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html
14
+ # 2) http://search.cpan.org/dist/MP4-Info-1.04/
15
+ # 3) http://www.geocities.com/xhelmboyx/quicktime/formats/mp4-layout.txt
16
+ # 4) http://wiki.multimedia.cx/index.php?title=Apple_QuickTime
17
+ # 5) ISO 14496-12 (http://read.pudn.com/downloads64/ebook/226547/ISO_base_media_file_format.pdf)
18
+ # 6) ISO 14496-16 (http://www.iec-normen.de/previewpdf/info_isoiec14496-16%7Bed2.0%7Den.pdf)
19
+ # 7) http://atomicparsley.sourceforge.net/mpeg-4files.html
20
+ # 8) http://wiki.multimedia.cx/index.php?title=QuickTime_container
21
+ # 9) http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart3.pdf (Oct 2008)
22
+ # 10) http://code.google.com/p/mp4v2/wiki/iTunesMetadata
23
+ # 11) http://www.canieti.com.mx/assets/files/1011/IEC_100_1384_DC.pdf
24
+ # 12) QuickTime file format specification 2010-05-03
25
+ # 13) http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v10.pdf
26
+ # 14) http://standards.iso.org/ittf/PubliclyAvailableStandards/c051533_ISO_IEC_14496-12_2008.zip
27
+ # 15) http://getid3.sourceforge.net/source/module.audio-video.quicktime.phps
28
+ # 16) http://qtra.apple.com/atoms.html
29
+ # 17) http://www.etsi.org/deliver/etsi_ts/126200_126299/126244/10.01.00_60/ts_126244v100100p.pdf
30
+ # 18) https://github.com/appsec-labs/iNalyzer/blob/master/scinfo.m
31
+ # 19) http://nah6.com/~itsme/cvs-xdadevtools/iphone/tools/decodesinf.pl
32
+ # 20) https://developer.apple.com/legacy/library/documentation/quicktime/reference/QT7-1_Update_Reference/QT7-1_Update_Reference.pdf
28
33
  #------------------------------------------------------------------------------
29
34
 
30
35
  package Image::ExifTool::QuickTime;
31
36
 
32
37
  use strict;
33
- use vars qw($VERSION);
38
+ use vars qw($VERSION $AUTOLOAD);
34
39
  use Image::ExifTool qw(:DataAccess :Utils);
35
40
  use Image::ExifTool::Exif;
36
41
 
37
- $VERSION = '1.70';
42
+ $VERSION = '1.72';
38
43
 
39
44
  sub FixWrongFormat($);
40
45
  sub ProcessMOV($$;$);
41
46
  sub ProcessKeys($$$);
42
47
  sub ProcessMetaData($$$);
43
48
  sub ProcessEncodingParams($$$);
49
+ sub ProcessHybrid($$$);
50
+ sub ProcessRights($$$);
44
51
  sub ConvertISO6709($);
45
52
  sub PrintGPSCoordinates($);
46
53
  sub UnpackLang($);
54
+ sub WriteQuickTime($$$);
55
+ sub WriteMOV($$);
47
56
 
48
57
  # MIME types for all entries in the ftypLookup with file extensions
49
58
  # (defaults to 'video/mp4' if not found in this lookup)
@@ -167,9 +176,15 @@ my %timeInfo = (
167
176
  $self->WarnOnce('Patched incorrect time zero for QuickTime date/time tag',1) if $val;
168
177
  return $val;
169
178
  },
179
+ Shift => 'Time',
180
+ Writable => 1,
181
+ Permanent => 1,
182
+ DelValue => 0,
170
183
  # Note: This value will be in UTC if generated by a system that is aware of the time zone
171
184
  ValueConv => 'ConvertUnixTime($val, $self->Options("QuickTimeUTC"))',
185
+ ValueConvInv => 'GetUnixTime($val) + (66 * 365 + 17) * 24 * 3600',
172
186
  PrintConv => '$self->ConvertDateTime($val)',
187
+ PrintConvInv => '$self->InverseDateTime($val)',
173
188
  # (can't put Groups here because they aren't constant!)
174
189
  );
175
190
  # information for duration tags
@@ -259,6 +274,7 @@ my %graphicsMode = (
259
274
  # QuickTime atoms
260
275
  %Image::ExifTool::QuickTime::Main = (
261
276
  PROCESS_PROC => \&ProcessMOV,
277
+ WRITE_PROC => \&WriteQuickTime,
262
278
  GROUPS => { 2 => 'Video' },
263
279
  NOTES => q{
264
280
  The QuickTime format is used for many different types of audio, video and
@@ -267,6 +283,9 @@ my %graphicsMode = (
267
283
  proprietary information written by many camera models. Tags with a question
268
284
  mark after their name are not extracted unless the Unknown option is set.
269
285
 
286
+ ExifTool has the ability to write/create XMP, and edit date/time tags in
287
+ QuickTime format files.
288
+
270
289
  According to the specification, many QuickTime date/time tags should be
271
290
  stored as UTC. Unfortunately, digital cameras often store local time values
272
291
  instead (presumably because they don't know the time zone). For this
@@ -274,7 +293,7 @@ my %graphicsMode = (
274
293
  However, if the QuickTimeUTC option is set via the API or the ExifTool
275
294
  configuration file, then ExifTool will assume these values are properly
276
295
  stored as UTC, and will convert them to local time when extracting.
277
-
296
+
278
297
  See
279
298
  L<http://developer.apple.com/mac/library/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html>
280
299
  for the official specification.
@@ -332,6 +351,7 @@ my %graphicsMode = (
332
351
  uuid => [
333
352
  { #9 (MP4 files)
334
353
  Name => 'UUID-XMP',
354
+ # *** this is where ExifTool writes XMP in MP4 videos (as per XMP spec) ***
335
355
  Condition => '$$valPt=~/^\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac/',
336
356
  SubDirectory => {
337
357
  TagTable => 'Image::ExifTool::XMP::Main',
@@ -366,8 +386,8 @@ my %graphicsMode = (
366
386
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::HTC' },
367
387
  },
368
388
  udta => {
369
- Name => 'TopUserData',
370
- SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::TopUserData' },
389
+ Name => 'UserData',
390
+ SubDirectory => { TagTable => 'Image::ExifTool::FLIR::UserData' },
371
391
  },
372
392
  );
373
393
 
@@ -391,7 +411,7 @@ my %graphicsMode = (
391
411
  Name => 'CompatibleBrands',
392
412
  Format => 'undef[$size-8]',
393
413
  # ignore any entry with a null, and return others as a list
394
- ValueConv => 'my @a=($val=~/.{4}/sg); @a=grep(!/\0/,@a); \@a',
414
+ ValueConv => 'my @a=($val=~/.{4}/sg); @a=grep(!/\0/,@a); \@a',
395
415
  },
396
416
  );
397
417
 
@@ -428,7 +448,8 @@ my %graphicsMode = (
428
448
 
429
449
  # image description data block
430
450
  %Image::ExifTool::QuickTime::ImageDesc = (
431
- PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
451
+ PROCESS_PROC => \&ProcessHybrid,
452
+ VARS => { ID_LABEL => 'ID/Index' },
432
453
  GROUPS => { 2 => 'Image' },
433
454
  FORMAT => 'int16u',
434
455
  2 => {
@@ -487,11 +508,75 @@ my %graphicsMode = (
487
508
  },
488
509
  },
489
510
  41 => 'BitDepth',
511
+ #
512
+ # Observed offsets for child atoms of various CompressorID types:
513
+ #
514
+ # CompressorID Offset Child atoms
515
+ # ----------- ------ ----------------
516
+ # avc1 86 avcC, btrt, colr, pasp, fiel, clap
517
+ # mp4v 86 esds, pasp
518
+ # s263 86 d263
519
+ #
520
+ btrt => {
521
+ Name => 'BitrateInfo',
522
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Bitrate' },
523
+ },
524
+ # Reference for fiel, colr, pasp, clap:
525
+ # https://developer.apple.com/library/mac/technotes/tn2162/_index.html#//apple_ref/doc/uid/DTS40013070-CH1-TNTAG9
526
+ fiel => {
527
+ Name => 'VideoFieldOrder',
528
+ ValueConv => 'join(" ", unpack("C*",$val))',
529
+ PrintConv => [{
530
+ 1 => 'Progressive',
531
+ 2 => '2:1 Interlaced',
532
+ }],
533
+ },
534
+ colr => {
535
+ Name => 'ColorRepresentation',
536
+ ValueConv => 'join(" ", substr($val,0,4), unpack("x4n*",$val))',
537
+ },
538
+ pasp => {
539
+ Name => 'PixelAspectRatio',
540
+ ValueConv => 'join(":", unpack("N*",$val))',
541
+ },
542
+ clap => {
543
+ Name => 'CleanAperture',
544
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::CleanAperture' },
545
+ },
546
+ # avcC - AVC configuration (ref http://thompsonng.blogspot.ca/2010/11/mp4-file-format-part-2.html)
547
+ # esds - elementary stream descriptor
548
+ # d263
549
+ gama => { Name => 'Gamma', Format => 'fixed32u' },
550
+ # mjqt - default quantization table for MJPEG
551
+ # mjht - default Huffman table for MJPEG
552
+ );
553
+
554
+ # 'btrt' atom information (ref http://lists.freedesktop.org/archives/gstreamer-commits/2011-October/054459.html)
555
+ %Image::ExifTool::QuickTime::Bitrate = (
556
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
557
+ GROUPS => { 2 => 'Video' },
558
+ FORMAT => 'int32u',
559
+ PRIORITY => 0, # often filled with zeros
560
+ 0 => 'BufferSize',
561
+ 1 => 'MaxBitrate',
562
+ 2 => 'AverageBitrate',
563
+ );
564
+
565
+ # 'clap' atom information (ref https://developer.apple.com/library/mac/technotes/tn2162/_index.html#//apple_ref/doc/uid/DTS40013070-CH1-TNTAG9)
566
+ %Image::ExifTool::QuickTime::CleanAperture = (
567
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
568
+ GROUPS => { 2 => 'Video' },
569
+ FORMAT => 'rational64u',
570
+ 0 => 'CleanApertureWidth',
571
+ 1 => 'CleanApertureHeight',
572
+ 2 => 'CleanApertureOffsetX',
573
+ 3 => 'CleanApertureOffsetY',
490
574
  );
491
575
 
492
576
  # preview data block
493
577
  %Image::ExifTool::QuickTime::Preview = (
494
578
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
579
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
495
580
  GROUPS => { 2 => 'Image' },
496
581
  FORMAT => 'int16u',
497
582
  0 => {
@@ -511,6 +596,7 @@ my %graphicsMode = (
511
596
  # movie atoms
512
597
  %Image::ExifTool::QuickTime::Movie = (
513
598
  PROCESS_PROC => \&ProcessMOV,
599
+ WRITE_PROC => \&WriteQuickTime,
514
600
  GROUPS => { 2 => 'Video' },
515
601
  mvhd => {
516
602
  Name => 'MovieHeader',
@@ -567,8 +653,10 @@ my %graphicsMode = (
567
653
  # movie header data block
568
654
  %Image::ExifTool::QuickTime::MovieHeader = (
569
655
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
656
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
570
657
  GROUPS => { 2 => 'Video' },
571
658
  FORMAT => 'int32u',
659
+ DATAMEMBER => [ 0, 1, 2, 3, 4 ],
572
660
  0 => {
573
661
  Name => 'MovieHeaderVersion',
574
662
  Format => 'int8u',
@@ -630,7 +718,8 @@ my %graphicsMode = (
630
718
  # track atoms
631
719
  %Image::ExifTool::QuickTime::Track = (
632
720
  PROCESS_PROC => \&ProcessMOV,
633
- GROUPS => { 2 => 'Video' },
721
+ WRITE_PROC => \&WriteQuickTime,
722
+ GROUPS => { 1 => 'Track#', 2 => 'Video' },
634
723
  tkhd => {
635
724
  Name => 'TrackHeader',
636
725
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::TrackHeader' },
@@ -681,8 +770,10 @@ my %graphicsMode = (
681
770
  # track header data block
682
771
  %Image::ExifTool::QuickTime::TrackHeader = (
683
772
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
773
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
684
774
  GROUPS => { 1 => 'Track#', 2 => 'Video' },
685
775
  FORMAT => 'int32u',
776
+ DATAMEMBER => [ 0, 1, 2, 5 ],
686
777
  0 => {
687
778
  Name => 'TrackHeaderVersion',
688
779
  Format => 'int8u',
@@ -753,6 +844,7 @@ my %graphicsMode = (
753
844
  # user data atoms
754
845
  %Image::ExifTool::QuickTime::UserData = (
755
846
  PROCESS_PROC => \&ProcessMOV,
847
+ WRITE_PROC => \&WriteQuickTime,
756
848
  GROUPS => { 2 => 'Video' },
757
849
  NOTES => q{
758
850
  Tag ID's beginning with the copyright symbol (hex 0xa9) are multi-language
@@ -868,6 +960,7 @@ my %graphicsMode = (
868
960
  hinv => 'HintVersion', #PH (guess)
869
961
  XMP_ => { #PH (Adobe CS3 Bridge)
870
962
  Name => 'XMP',
963
+ # *** this is where ExifTool writes XMP in MOV videos (as per XMP spec) ***
871
964
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
872
965
  },
873
966
  # the following are 3gp tags, references:
@@ -1022,6 +1115,14 @@ my %graphicsMode = (
1022
1115
  scen => { Name => 'Scene', Format => 'string' }, # (NC)
1023
1116
  shot => { Name => 'ShotName', Format => 'string' }, # (NC)
1024
1117
  slno => { Name => 'SerialNumber', Format => 'string' }, # (NC)
1118
+ apmd => { Name => 'ApertureMode', Format => 'undef' }, #20
1119
+ kgtt => { #http://lists.ffmpeg.org/pipermail/ffmpeg-devel-irc/2012-June/000707.html
1120
+ # 'TrackType' will expand to 'Track#Type' when found inside a track
1121
+ Name => 'TrackType',
1122
+ # set flag to process this as international text
1123
+ # even though the tag ID doesn't start with 0xa9
1124
+ IText => 1,
1125
+ },
1025
1126
  # other non-Apple tags (ref 16)
1026
1127
  # hpix - HipixRichPicture (ref 16, HIPIX)
1027
1128
  # strk - sub-track information (ref 16, ISO)
@@ -1305,10 +1406,18 @@ my %graphicsMode = (
1305
1406
  # ducp - 4 bytes all zero (Samsung ST96,WB750), 52 bytes all zero (Samsung WB30F)
1306
1407
  # edli - 52 bytes all zero (Samsung WB30F)
1307
1408
  # @etc - 4 bytes all zero (Samsung WB30F)
1409
+ # smrd - string "TRUEBLUE" (Samsung SM-C101)
1308
1410
  '@sec' => { #PH (Samsung WB30F)
1309
1411
  Name => 'SamsungSec',
1310
1412
  SubDirectory => { TagTable => 'Image::ExifTool::Samsung::sec' },
1311
1413
  },
1414
+ 'smta' => { #PH (Samsung SM-C101)
1415
+ Name => 'SamsungSmta',
1416
+ SubDirectory => {
1417
+ TagTable => 'Image::ExifTool::Samsung::smta',
1418
+ Start => 4,
1419
+ },
1420
+ },
1312
1421
  #
1313
1422
  # other 3rd-party tags
1314
1423
  # (ref http://code.google.com/p/mp4parser/source/browse/trunk/isoparser/src/main/resources/isoparser-default.properties?r=814)
@@ -1332,88 +1441,6 @@ my %graphicsMode = (
1332
1441
  },
1333
1442
  );
1334
1443
 
1335
- # top-level user data written by FLIR cameras in MP4 videos
1336
- %Image::ExifTool::QuickTime::TopUserData = (
1337
- PROCESS_PROC => \&ProcessMOV,
1338
- GROUPS => { 1 => 'FLIR', 2 => 'Camera' },
1339
- NOTES => 'Tags written in MP4 videos from some FLIR cameras.',
1340
- uuid => [
1341
- {
1342
- Name => 'FLIR_Parts',
1343
- Condition => '$$valPt=~/^\x43\xc3\x99\x3b\x0f\x94\x42\x4b\x82\x05\x6b\x66\x51\x3f\x48\x5d/s',
1344
- SubDirectory => {
1345
- TagTable => 'Image::ExifTool::FLIR::Parts',
1346
- Start => 16,
1347
- },
1348
- },
1349
- {
1350
- Name => 'FLIR_Serial',
1351
- Condition => '$$valPt=~/^\x57\xf5\xb9\x3e\x51\xe4\x48\xaf\xa0\xd9\xc3\xef\x1b\x37\xf7\x12/s',
1352
- SubDirectory => {
1353
- TagTable => 'Image::ExifTool::FLIR::SerialNums',
1354
- Start => 16,
1355
- },
1356
- },
1357
- {
1358
- Name => 'FLIR_Params',
1359
- Condition => '$$valPt=~/^\x41\xe5\xdc\xf9\xe8\x0a\x41\xce\xad\xfe\x7f\x0c\x58\x08\x2c\x19/s',
1360
- SubDirectory => {
1361
- TagTable => 'Image::ExifTool::FLIR::Params',
1362
- Start => 16,
1363
- },
1364
- },
1365
- {
1366
- Name => 'FLIR_UnknownUUID',
1367
- Condition => '$$valPt=~/^\x57\x45\x20\x50\x2c\xbb\x44\xad\xae\x54\x15\xe9\xb8\x39\xd9\x03/s',
1368
- SubDirectory => {
1369
- TagTable => 'Image::ExifTool::FLIR::UnknownUUID',
1370
- Start => 16,
1371
- },
1372
- },
1373
- {
1374
- Name => 'FLIR_GPS',
1375
- Condition => '$$valPt=~/^\x7f\x2e\x21\x00\x8b\x46\x49\x18\xaf\xb1\xde\x70\x9a\x74\xf6\xf5/s',
1376
- SubDirectory => {
1377
- TagTable => 'Image::ExifTool::FLIR::GPS_UUID',
1378
- Start => 16,
1379
- },
1380
- },
1381
- {
1382
- Name => 'FLIR_MoreInfo',
1383
- Condition => '$$valPt=~/^\x2b\x45\x2f\xdc\x74\x35\x40\x94\xba\xee\x22\xa6\xb2\x3a\x7c\xf8/s',
1384
- SubDirectory => {
1385
- TagTable => 'Image::ExifTool::FLIR::MoreInfo',
1386
- Start => 16,
1387
- },
1388
- },
1389
- {
1390
- Name => 'SoftwareComponents',
1391
- Condition => '$$valPt=~/^\x78\x3f\xc7\x83\x0c\x95\x4b\x00\x8c\xc7\xac\xf1\xec\xb4\xd3\x9a/s',
1392
- Unknown => 1,
1393
- ValueConv => 'join " ", unpack "x20N4xZ*", $val',
1394
- },
1395
- {
1396
- Name => 'FLIR_Unknown',
1397
- Condition => '$$valPt=~/^\x52\xae\xda\x45\x17\x1e\x48\xb1\x92\x47\x93\xa4\x21\x4e\x43\xf5/s',
1398
- Unknown => 1,
1399
- ValueConv => 'unpack "x20C*", $val',
1400
- },
1401
- {
1402
- Name => 'Units',
1403
- Condition => '$$valPt=~/^\xf8\xab\x72\x1e\x84\x73\x44\xa0\xb8\xc8\x1b\x04\x82\x6e\x07\x24/s',
1404
- List => 1,
1405
- RawConv => 'my @a = split "\0", substr($val, 20); \@a',
1406
- },
1407
- {
1408
- Name => 'ThumbnailImage',
1409
- Groups => { 2 => 'Image' },
1410
- Condition => '$$valPt=~/^\x91\xaf\x9b\x93\x45\x9b\x44\x56\x98\xd1\x5e\x76\xea\x01\x04\xac....\xff\xd8\xff/s',
1411
- RawConv => 'substr($val, 20)',
1412
- Binary => 1,
1413
- },
1414
- ],
1415
- );
1416
-
1417
1444
  # User-specific media data atoms (ref 11)
1418
1445
  %Image::ExifTool::QuickTime::MetaData = (
1419
1446
  PROCESS_PROC => \&Image::ExifTool::QuickTime::ProcessMetaData,
@@ -1636,6 +1663,7 @@ my %graphicsMode = (
1636
1663
  },
1637
1664
  'xml ' => {
1638
1665
  Name => 'XML',
1666
+ Flags => [ 'Binary', 'Protected', 'BlockExtract' ],
1639
1667
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
1640
1668
  },
1641
1669
  'keys' => {
@@ -1659,7 +1687,7 @@ my %graphicsMode = (
1659
1687
  # track reference atoms
1660
1688
  %Image::ExifTool::QuickTime::TrackRef = (
1661
1689
  PROCESS_PROC => \&ProcessMOV,
1662
- GROUPS => { 2 => 'Video' },
1690
+ GROUPS => { 1 => 'Track#', 2 => 'Video' },
1663
1691
  chap => { Name => 'ChapterList', Format => 'int32u' },
1664
1692
  tmcd => { Name => 'TimeCode', Format => 'int32u' },
1665
1693
  mpod => { #PH (FLIR MP4)
@@ -1674,7 +1702,7 @@ my %graphicsMode = (
1674
1702
  # (ref https://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap2/qtff2.html)
1675
1703
  %Image::ExifTool::QuickTime::TrackAperture = (
1676
1704
  PROCESS_PROC => \&ProcessMOV,
1677
- GROUPS => { 2 => 'Video' },
1705
+ GROUPS => { 1 => 'Track#', 2 => 'Video' },
1678
1706
  clef => {
1679
1707
  Name => 'CleanApertureDimensions',
1680
1708
  Format => 'fixed32u',
@@ -2063,7 +2091,7 @@ my %graphicsMode = (
2063
2091
  GROUPS => { 2 => 'Audio' },
2064
2092
  # (I have commented out the ones that don't have integer values because they
2065
2093
  # probably don't appear, and definitly wouldn't work with current decoding - PH)
2066
-
2094
+
2067
2095
  # global codec properties
2068
2096
  #'lnam' => 'AudioCodecName',
2069
2097
  #'lmak' => 'AudioCodecManufacturer',
@@ -2209,7 +2237,8 @@ my %graphicsMode = (
2209
2237
  # MP4 media box (ref 5)
2210
2238
  %Image::ExifTool::QuickTime::Media = (
2211
2239
  PROCESS_PROC => \&ProcessMOV,
2212
- GROUPS => { 2 => 'Video' },
2240
+ WRITE_PROC => \&WriteQuickTime,
2241
+ GROUPS => { 1 => 'Track#', 2 => 'Video' },
2213
2242
  NOTES => 'MP4 media box.',
2214
2243
  mdhd => {
2215
2244
  Name => 'MediaHeader',
@@ -2228,8 +2257,10 @@ my %graphicsMode = (
2228
2257
  # MP4 media header box (ref 5)
2229
2258
  %Image::ExifTool::QuickTime::MediaHeader = (
2230
2259
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2231
- GROUPS => { 2 => 'Video' },
2260
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
2261
+ GROUPS => { 1 => 'Track#', 2 => 'Video' },
2232
2262
  FORMAT => 'int32u',
2263
+ DATAMEMBER => [ 0, 1, 2, 3, 4 ],
2233
2264
  0 => {
2234
2265
  Name => 'MediaHeaderVersion',
2235
2266
  RawConv => '$$self{MediaHeaderVersion} = $val',
@@ -2276,7 +2307,7 @@ my %graphicsMode = (
2276
2307
  # MP4 media information box (ref 5)
2277
2308
  %Image::ExifTool::QuickTime::MediaInfo = (
2278
2309
  PROCESS_PROC => \&ProcessMOV,
2279
- GROUPS => { 2 => 'Video' },
2310
+ GROUPS => { 1 => 'Track#', 2 => 'Video' },
2280
2311
  NOTES => 'MP4 media info box.',
2281
2312
  vmhd => {
2282
2313
  Name => 'VideoHeader',
@@ -2460,53 +2491,211 @@ my %graphicsMode = (
2460
2491
  },
2461
2492
  );
2462
2493
 
2463
- # MP4 audio sample description box (ref 5)
2494
+ # MP4 audio sample description box (ref 5/AtomicParsley 0.9.4 parsley.cpp)
2464
2495
  %Image::ExifTool::QuickTime::AudioSampleDesc = (
2465
- PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2496
+ PROCESS_PROC => \&ProcessHybrid,
2497
+ VARS => { ID_LABEL => 'ID/Index' },
2466
2498
  GROUPS => { 2 => 'Audio' },
2467
- FORMAT => 'int16u',
2468
- NOTES => 'MP4 audio sample description.',
2469
- 2 => {
2499
+ NOTES => q{
2500
+ MP4 audio sample description. This hybrid atom contains both data and child
2501
+ atoms.
2502
+ },
2503
+ 4 => {
2470
2504
  Name => 'AudioFormat',
2471
2505
  Format => 'undef[4]',
2472
2506
  RawConv => q{
2507
+ $$self{AudioFormat} = $val;
2473
2508
  return undef unless $val =~ /^[\w ]{4}$/i;
2474
2509
  # check for protected audio format
2475
2510
  $self->OverrideFileType('M4P') if $val eq 'drms' and $$self{VALUE}{FileType} eq 'M4A';
2476
2511
  return $val;
2477
2512
  },
2478
2513
  },
2479
- 10 => { #PH
2514
+ 20 => { #PH
2480
2515
  Name => 'AudioVendorID',
2516
+ Condition => '$$self{AudioFormat} ne "mp4s"',
2481
2517
  Format => 'undef[4]',
2482
2518
  RawConv => '$val eq "\0\0\0\0" ? undef : $val',
2483
2519
  PrintConv => \%vendorID,
2484
2520
  SeparateTable => 'VendorID',
2485
2521
  },
2486
- 12 => 'AudioChannels',
2487
- 13 => 'AudioBitsPerSample',
2488
- 16 => { Name => 'AudioSampleRate', Format => 'fixed32u' },
2489
- 28 => { #PH
2490
- Name => 'AudioFormat',
2522
+ 24 => { Name => 'AudioChannels', Format => 'int16u' },
2523
+ 26 => { Name => 'AudioBitsPerSample', Format => 'int16u' },
2524
+ 32 => { Name => 'AudioSampleRate', Format => 'fixed32u' },
2525
+ #
2526
+ # Observed offsets for child atoms of various AudioFormat types:
2527
+ #
2528
+ # AudioFormat Offset Child atoms
2529
+ # ----------- ------ ----------------
2530
+ # mp4a 52 * wave, chan, esds
2531
+ # in24 52 wave, chan
2532
+ # "ms\0\x11" 52 wave
2533
+ # sowt 52 chan
2534
+ # mp4a 36 * esds, pinf
2535
+ # drms 36 esds, sinf
2536
+ # samr 36 damr
2537
+ # alac 36 alac
2538
+ #
2539
+ # (* child atoms found at different offsets in mp4a)
2540
+ #
2541
+ pinf => {
2542
+ Name => 'PurchaseInfo',
2543
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::ProtectionInfo' },
2544
+ },
2545
+ sinf => { # "protection scheme information"
2546
+ Name => 'ProtectionInfo', #3
2547
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::ProtectionInfo' },
2548
+ },
2549
+ # chan - 16/36 bytes
2550
+ # esds - 31/40/42/43 bytes - ES descriptor (ref 3)
2551
+ damr => { #3
2552
+ Name => 'DecodeConfig',
2553
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::DecodeConfig' },
2554
+ },
2555
+ wave => {
2556
+ Name => 'Wave',
2557
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Wave' },
2558
+ },
2559
+ # alac - 28 bytes
2560
+ );
2561
+
2562
+ # AMR decode config box (ref 3)
2563
+ %Image::ExifTool::QuickTime::DecodeConfig = (
2564
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2565
+ GROUPS => { 2 => 'Audio' },
2566
+ 0 => {
2567
+ Name => 'EncoderVendor',
2491
2568
  Format => 'undef[4]',
2492
- RawConv => '$val =~ /^[\w ]{4}$/i ? $val : undef',
2493
- Notes => 'in Casio MOV videos',
2494
2569
  },
2570
+ 4 => 'EncoderVersion',
2571
+ # 5 - int16u - packet modes
2572
+ # 7 - int8u - number of packet mode changes
2573
+ # 8 - int8u - bytes per packet
2574
+ );
2575
+
2576
+ %Image::ExifTool::QuickTime::ProtectionInfo = (
2577
+ PROCESS_PROC => \&ProcessMOV,
2578
+ GROUPS => { 2 => 'Audio' },
2579
+ NOTES => 'Child atoms found in "sinf" and/or "pinf" atoms.',
2580
+ frma => 'OriginalFormat',
2581
+ # imif - IPMP information
2582
+ schm => {
2583
+ Name => 'SchemeType',
2584
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::SchemeType' },
2585
+ },
2586
+ schi => {
2587
+ Name => 'SchemeInfo',
2588
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::SchemeInfo' },
2589
+ },
2590
+ # skcr
2591
+ # enda
2592
+ );
2593
+
2594
+ %Image::ExifTool::QuickTime::Wave = (
2595
+ PROCESS_PROC => \&ProcessMOV,
2596
+ frma => 'PurchaseFileFormat',
2597
+ # "ms\0\x11" - 20 bytes
2598
+ );
2599
+
2600
+ # scheme type atom
2601
+ # ref http://xhelmboyx.tripod.com/formats/mp4-layout.txt
2602
+ %Image::ExifTool::QuickTime::SchemeType = (
2603
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2604
+ GROUPS => { 2 => 'Audio' },
2605
+ # 0 - 4 bytes version
2606
+ 4 => { Name => 'SchemeType', Format => 'undef[4]' },
2607
+ 8 => { Name => 'SchemeVersion', Format => 'int16u' },
2608
+ 10 => { Name => 'SchemeURL', Format => 'string[$size-10]' },
2609
+ );
2610
+
2611
+ %Image::ExifTool::QuickTime::SchemeInfo = (
2612
+ PROCESS_PROC => \&ProcessMOV,
2613
+ GROUPS => { 2 => 'Audio' },
2614
+ user => {
2615
+ Name => 'UserID',
2616
+ Groups => { 2 => 'Author' },
2617
+ ValueConv => '"0x" . unpack("H*",$val)',
2618
+ },
2619
+ cert => { # ref http://www.onvif.org/specs/stream/ONVIF-ExportFileFormat-Spec-v100.pdf
2620
+ Name => 'Certificate',
2621
+ ValueConv => '"0x" . unpack("H*",$val)',
2622
+ },
2623
+ 'key ' => {
2624
+ Name => 'KeyID',
2625
+ ValueConv => '"0x" . unpack("H*",$val)',
2626
+ },
2627
+ iviv => {
2628
+ Name => 'InitializationVector',
2629
+ ValueConv => 'unpack("H*",$val)',
2630
+ },
2631
+ righ => {
2632
+ Name => 'Rights',
2633
+ Groups => { 2 => 'Author' },
2634
+ SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Rights' },
2635
+ },
2636
+ name => { Name => 'UserName', Groups => { 2 => 'Author' } },
2637
+ # chtb
2638
+ # priv - private data
2639
+ # sign
2640
+ # adkm - Adobe DRM key management system (ref http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf)
2641
+ # iKMS
2642
+ # iSFM
2643
+ # iSLT
2644
+ );
2645
+
2646
+ %Image::ExifTool::QuickTime::Rights = (
2647
+ PROCESS_PROC => \&ProcessRights,
2648
+ GROUPS => { 2 => 'Audio' },
2649
+ veID => 'ItemVendorID', #PH ("VendorID" ref 19)
2650
+ plat => 'Platform', #18?
2651
+ aver => 'VersionRestrictions', #19 ("appversion?" ref 18)
2652
+ tran => 'TransactionID', #18
2653
+ song => 'ItemID', #19 ("appid" ref 18)
2654
+ tool => {
2655
+ Name => 'ItemTool', #PH (guess) ("itunes build?" ref 18)
2656
+ Format => 'string',
2657
+ },
2658
+ medi => 'MediaFlags', #PH (?)
2659
+ mode => 'ModeFlags', #PH (?) 0x04 is HD flag (https://compilr.com/heksesang/requiem-mac/UnDrm.java)
2495
2660
  );
2496
2661
 
2497
2662
  # MP4 hint sample description box (ref 5)
2663
+ # (ref https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-SW1)
2498
2664
  %Image::ExifTool::QuickTime::HintSampleDesc = (
2499
- PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2500
- FORMAT => 'int16u',
2665
+ PROCESS_PROC => \&ProcessHybrid,
2666
+ VARS => { ID_LABEL => 'ID/Index' },
2501
2667
  NOTES => 'MP4 hint sample description.',
2502
- 2 => { Name => 'HintFormat', Format => 'undef[4]' },
2668
+ 4 => { Name => 'HintFormat', Format => 'undef[4]' },
2669
+ # 14 - int16u DataReferenceIndex
2670
+ 16 => { Name => 'HintTrackVersion', Format => 'int16u' },
2671
+ # 18 - int16u LastCompatibleHintTrackVersion
2672
+ 20 => { Name => 'MaxPacketSize', Format => 'int32u' },
2673
+ #
2674
+ # Observed offsets for child atoms of various HintFormat types:
2675
+ #
2676
+ # HintFormat Offset Child atoms
2677
+ # ----------- ------ ----------------
2678
+ # "rtp " 24 tims
2679
+ #
2680
+ tims => { Name => 'RTPTimeScale', Format => 'int32u' },
2681
+ tsro => { Name => 'TimestampRandomOffset', Format => 'int32u' },
2682
+ snro => { Name => 'SequenceNumberRandomOffset', Format => 'int32u' },
2503
2683
  );
2504
2684
 
2505
2685
  # MP4 generic sample description box
2506
2686
  %Image::ExifTool::QuickTime::OtherSampleDesc = (
2507
- PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2508
- FORMAT => 'int16u',
2509
- 2 => { Name => 'OtherFormat', Format => 'undef[4]' },
2687
+ PROCESS_PROC => \&ProcessHybrid,
2688
+ 4 => { Name => 'OtherFormat', Format => 'undef[4]' },
2689
+ #
2690
+ # Observed offsets for child atoms of various OtherFormat types:
2691
+ #
2692
+ # OtherFormat Offset Child atoms
2693
+ # ----------- ------ ----------------
2694
+ # avc1 86 avcC
2695
+ # mp4a 36 esds
2696
+ # mp4s 16 esds
2697
+ # tmcd 34 name
2698
+ #
2510
2699
  );
2511
2700
 
2512
2701
  # MP4 data information box (ref 5)
@@ -2560,7 +2749,7 @@ my %graphicsMode = (
2560
2749
  6 => {
2561
2750
  Name => 'TextFace',
2562
2751
  Format => 'int16u',
2563
- PrintConv => {
2752
+ PrintConv => {
2564
2753
  0 => 'Plain',
2565
2754
  BITMASK => {
2566
2755
  0 => 'Bold',
@@ -2577,15 +2766,16 @@ my %graphicsMode = (
2577
2766
  Name => 'TextSize',
2578
2767
  Format => 'int16u',
2579
2768
  },
2580
- 10 => {
2769
+ # 10 - reserved
2770
+ 12 => {
2581
2771
  Name => 'TextColor',
2582
2772
  Format => 'int16u[3]',
2583
2773
  },
2584
- 16 => {
2774
+ 18 => {
2585
2775
  Name => 'BackgroundColor',
2586
2776
  Format => 'int16u[3]',
2587
2777
  },
2588
- 22 => {
2778
+ 24 => {
2589
2779
  Name => 'FontName',
2590
2780
  Format => 'pstring',
2591
2781
  ValueConv => '$self->Decode($val, $self->Options("CharsetQuickTime"))',
@@ -2828,14 +3018,22 @@ my %graphicsMode = (
2828
3018
  Image::ExifTool::AddCompositeTags('Image::ExifTool::QuickTime');
2829
3019
 
2830
3020
 
3021
+ #------------------------------------------------------------------------------
3022
+ # AutoLoad our writer routines when necessary
3023
+ #
3024
+ sub AUTOLOAD
3025
+ {
3026
+ return Image::ExifTool::DoAutoLoad($AUTOLOAD, @_);
3027
+ }
3028
+
2831
3029
  #------------------------------------------------------------------------------
2832
3030
  # Calculate rotation of video track
2833
3031
  # Inputs: 0) ExifTool object ref
2834
3032
  # Returns: rotation angle or undef
2835
3033
  sub CalcRotation($)
2836
3034
  {
2837
- my $exifTool = shift;
2838
- my $value = $$exifTool{VALUE};
3035
+ my $et = shift;
3036
+ my $value = $$et{VALUE};
2839
3037
  my ($i, $track);
2840
3038
  # get the video track family 1 group (ie. "Track1");
2841
3039
  for ($i=0; ; ++$i) {
@@ -2843,7 +3041,7 @@ sub CalcRotation($)
2843
3041
  my $tag = "HandlerType$idx";
2844
3042
  last unless $$value{$tag};
2845
3043
  next unless $$value{$tag} eq 'vide';
2846
- $track = $exifTool->GetGroup($tag, 1);
3044
+ $track = $et->GetGroup($tag, 1);
2847
3045
  last;
2848
3046
  }
2849
3047
  return undef unless $track;
@@ -2852,7 +3050,7 @@ sub CalcRotation($)
2852
3050
  my $idx = $i ? " ($i)" : '';
2853
3051
  my $tag = "MatrixStructure$idx";
2854
3052
  last unless $$value{$tag};
2855
- next unless $exifTool->GetGroup($tag, 1) eq $track;
3053
+ next unless $et->GetGroup($tag, 1) eq $track;
2856
3054
  my @a = split ' ', $$value{$tag};
2857
3055
  return undef unless $a[0] or $a[1];
2858
3056
  # calculate the rotation angle (assume uniform rotation)
@@ -2869,7 +3067,7 @@ sub CalcRotation($)
2869
3067
  # Returns: average sample rate (in Hz)
2870
3068
  sub CalcSampleRate($$)
2871
3069
  {
2872
- my ($exifTool, $valPt) = @_;
3070
+ my ($et, $valPt) = @_;
2873
3071
  my @dat = unpack('N*', $$valPt);
2874
3072
  my ($num, $dur) = (0, 0);
2875
3073
  my $i;
@@ -2877,8 +3075,8 @@ sub CalcSampleRate($$)
2877
3075
  $num += $dat[$i]; # total number of samples
2878
3076
  $dur += $dat[$i] * $dat[$i+1]; # total sample duration
2879
3077
  }
2880
- return undef unless $num and $dur and $$exifTool{MediaTS};
2881
- return $num * $$exifTool{MediaTS} / $dur;
3078
+ return undef unless $num and $dur and $$et{MediaTS};
3079
+ return $num * $$et{MediaTS} / $dur;
2882
3080
  }
2883
3081
 
2884
3082
  #------------------------------------------------------------------------------
@@ -2929,11 +3127,11 @@ sub ConvertISO6709($)
2929
3127
  # Returns: PrintConv value
2930
3128
  sub PrintGPSCoordinates($)
2931
3129
  {
2932
- my ($val, $exifTool) = @_;
3130
+ my ($val, $et) = @_;
2933
3131
  require Image::ExifTool::GPS;
2934
3132
  my @v = split ' ', $val;
2935
- my $prt = Image::ExifTool::GPS::ToDMS($exifTool, $v[0], 1, "N") . ', ' .
2936
- Image::ExifTool::GPS::ToDMS($exifTool, $v[1], 1, "E");
3133
+ my $prt = Image::ExifTool::GPS::ToDMS($et, $v[0], 1, "N") . ', ' .
3134
+ Image::ExifTool::GPS::ToDMS($et, $v[1], 1, "E");
2937
3135
  if (defined $v[2]) {
2938
3136
  $prt .= ', ' . ($v[2] < 0 ? -$v[2] . ' m Below' : $v[2] . ' m Above') . ' Sea Level';
2939
3137
  }
@@ -2967,13 +3165,13 @@ sub UnpackLang($)
2967
3165
  # Returns: 1 on success
2968
3166
  sub ProcessMetaData($$$)
2969
3167
  {
2970
- my ($exifTool, $dirInfo, $tagTablePtr) = @_;
3168
+ my ($et, $dirInfo, $tagTablePtr) = @_;
2971
3169
  my $dataPt = $$dirInfo{DataPt};
2972
3170
  my $dirLen = length $$dataPt;
2973
- my $verbose = $exifTool->Options('Verbose');
3171
+ my $verbose = $et->Options('Verbose');
2974
3172
  return 0 unless $dirLen >= 2;
2975
3173
  my $count = Get16u($dataPt, 0);
2976
- $verbose and $exifTool->VerboseDir('MetaData', $count);
3174
+ $verbose and $et->VerboseDir('MetaData', $count);
2977
3175
  my $i;
2978
3176
  my $pos = 2;
2979
3177
  for ($i=0; $i<$count; ++$i) {
@@ -2984,7 +3182,7 @@ sub ProcessMetaData($$$)
2984
3182
  my $lang = Get16u($dataPt, $pos + 6);
2985
3183
  my $enc = Get16u($dataPt, $pos + 8);
2986
3184
  my $val = substr($$dataPt, $pos + 10, $size);
2987
- my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tag);
3185
+ my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
2988
3186
  if ($tagInfo) {
2989
3187
  # convert language code to ASCII (ignore read-only bit)
2990
3188
  $lang = UnpackLang($lang);
@@ -2993,19 +3191,19 @@ sub ProcessMetaData($$$)
2993
3191
  my $langInfo = Image::ExifTool::GetLangInfo($tagInfo, $lang);
2994
3192
  $tagInfo = $langInfo if $langInfo;
2995
3193
  }
2996
- $verbose and $exifTool->VerboseInfo($tag, $tagInfo,
3194
+ $verbose and $et->VerboseInfo($tag, $tagInfo,
2997
3195
  Value => $val,
2998
3196
  DataPt => $dataPt,
2999
3197
  Start => $pos + 10,
3000
3198
  Size => $size - 10,
3001
3199
  );
3002
3200
  # convert from UTF-16 BE if necessary
3003
- $val = $exifTool->Decode($val, 'UCS2') if $enc == 1;
3201
+ $val = $et->Decode($val, 'UCS2') if $enc == 1;
3004
3202
  if ($enc == 0 and $$tagInfo{Unknown}) {
3005
3203
  # binary data
3006
- $exifTool->FoundTag($tagInfo, \$val);
3204
+ $et->FoundTag($tagInfo, \$val);
3007
3205
  } else {
3008
- $exifTool->FoundTag($tagInfo, $val);
3206
+ $et->FoundTag($tagInfo, $val);
3009
3207
  }
3010
3208
  }
3011
3209
  $pos += $size;
@@ -3013,20 +3211,103 @@ sub ProcessMetaData($$$)
3013
3211
  return 1;
3014
3212
  }
3015
3213
 
3214
+ #------------------------------------------------------------------------------
3215
+ # Process hybrid binary data + QuickTime container (ref PH)
3216
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
3217
+ # Returns: 1 on success
3218
+ sub ProcessHybrid($$$)
3219
+ {
3220
+ my ($et, $dirInfo, $tagTablePtr) = @_;
3221
+ # brute-force search for child atoms after first 8 bytes of binary data
3222
+ my $dataPt = $$dirInfo{DataPt};
3223
+ my $pos = ($$dirInfo{DirStart} || 0) + 8;
3224
+ my $len = length($$dataPt);
3225
+ my $try = $pos;
3226
+ my $childPos;
3227
+
3228
+ while ($pos <= $len - 8) {
3229
+ my $tag = substr($$dataPt, $try+4, 4);
3230
+ # look only for well-behaved tag ID's
3231
+ $tag =~ /[^\w ]/ and $try = ++$pos, next;
3232
+ my $size = Get32u($dataPt, $try);
3233
+ if ($size + $try == $len) {
3234
+ # the atom ends exactly at the end of the parent -- this must be it
3235
+ $childPos = $pos;
3236
+ $$dirInfo{DirLen} = $pos; # the binary data ends at the first child atom
3237
+ last;
3238
+ }
3239
+ if ($size < 8 or $size + $try > $len - 8) {
3240
+ $try = ++$pos; # fail. try next position
3241
+ } else {
3242
+ $try += $size; # could be another atom following this
3243
+ }
3244
+ }
3245
+ # process binary data
3246
+ $$dirInfo{MixedTags} = 1; # ignore non-integer tag ID's
3247
+ $et->ProcessBinaryData($dirInfo, $tagTablePtr);
3248
+ # process child atoms if found
3249
+ if ($childPos) {
3250
+ $$dirInfo{DirStart} = $childPos;
3251
+ $$dirInfo{DirLen} = $len - $childPos;
3252
+ ProcessMOV($et, $dirInfo, $tagTablePtr);
3253
+ }
3254
+ return 1;
3255
+ }
3256
+
3257
+ #------------------------------------------------------------------------------
3258
+ # Process iTunes 'righ' atom (ref PH)
3259
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
3260
+ # Returns: 1 on success
3261
+ sub ProcessRights($$$)
3262
+ {
3263
+ my ($et, $dirInfo, $tagTablePtr) = @_;
3264
+ my $dataPt = $$dirInfo{DataPt};
3265
+ my $dataPos = $$dirInfo{Base};
3266
+ my $dirLen = length $$dataPt;
3267
+ my $unknown = $$et{OPTIONS}{Unkown} || $$et{OPTIONS}{Verbose};
3268
+ my $pos;
3269
+ $et->VerboseDir('righ', $dirLen / 8);
3270
+ for ($pos = 0; $pos + 8 <= $dirLen; $pos += 8) {
3271
+ my $tag = substr($$dataPt, $pos, 4);
3272
+ last if $tag eq "\0\0\0\0";
3273
+ my $val = substr($$dataPt, $pos + 4, 4);
3274
+ my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
3275
+ unless ($tagInfo) {
3276
+ next unless $unknown;
3277
+ my $name = $tag;
3278
+ $name =~ s/([\x00-\x1f\x7f-\xff])/'x'.unpack('H*',$1)/eg;
3279
+ $tagInfo = {
3280
+ Name => "Unknown_$name",
3281
+ Description => "Unknown $name",
3282
+ Unknown => 1,
3283
+ },
3284
+ AddTagToTable($tagTablePtr, $tag, $tagInfo);
3285
+ }
3286
+ $val = '0x' . unpack('H*', $val) unless $$tagInfo{Format};
3287
+ $et->HandleTag($tagTablePtr, $tag, $val,
3288
+ DataPt => $dataPt,
3289
+ DataPos => $dataPos,
3290
+ Start => $pos + 4,
3291
+ Size => 4,
3292
+ );
3293
+ }
3294
+ return 1;
3295
+ }
3296
+
3016
3297
  #------------------------------------------------------------------------------
3017
3298
  # Process iTunes Encoding Params (ref PH)
3018
3299
  # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
3019
3300
  # Returns: 1 on success
3020
3301
  sub ProcessEncodingParams($$$)
3021
3302
  {
3022
- my ($exifTool, $dirInfo, $tagTablePtr) = @_;
3303
+ my ($et, $dirInfo, $tagTablePtr) = @_;
3023
3304
  my $dataPt = $$dirInfo{DataPt};
3024
3305
  my $dirLen = length $$dataPt;
3025
3306
  my $pos;
3026
- $exifTool->VerboseDir('Encoding Params', $dirLen / 8);
3307
+ $et->VerboseDir('Encoding Params', $dirLen / 8);
3027
3308
  for ($pos = 0; $pos + 8 <= $dirLen; $pos += 8) {
3028
3309
  my ($tag, $val) = unpack("x${pos}a4N", $$dataPt);
3029
- $exifTool->HandleTag($tagTablePtr, $tag, $val);
3310
+ $et->HandleTag($tagTablePtr, $tag, $val);
3030
3311
  }
3031
3312
  return 1;
3032
3313
  }
@@ -3037,13 +3318,13 @@ sub ProcessEncodingParams($$$)
3037
3318
  # Returns: 1 on success
3038
3319
  sub ProcessKeys($$$)
3039
3320
  {
3040
- my ($exifTool, $dirInfo, $tagTablePtr) = @_;
3321
+ my ($et, $dirInfo, $tagTablePtr) = @_;
3041
3322
  my $dataPt = $$dirInfo{DataPt};
3042
3323
  my $dirLen = length $$dataPt;
3043
3324
  my $out;
3044
- if ($exifTool->Options('Verbose')) {
3045
- $exifTool->VerboseDir('Keys');
3046
- $out = $exifTool->Options('TextOut');
3325
+ if ($et->Options('Verbose')) {
3326
+ $et->VerboseDir('Keys');
3327
+ $out = $et->Options('TextOut');
3047
3328
  }
3048
3329
  my $pos = 8;
3049
3330
  my $index = 1;
@@ -3061,15 +3342,15 @@ sub ProcessKeys($$$)
3061
3342
  }
3062
3343
  next unless $tag;
3063
3344
  # (I have some samples where the tag is a reversed ItemList or UserData tag ID)
3064
- my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tag);
3345
+ my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
3065
3346
  unless ($tagInfo) {
3066
- $tagInfo = $exifTool->GetTagInfo($infoTable, $tag);
3347
+ $tagInfo = $et->GetTagInfo($infoTable, $tag);
3067
3348
  unless ($tagInfo) {
3068
- $tagInfo = $exifTool->GetTagInfo($userTable, $tag);
3349
+ $tagInfo = $et->GetTagInfo($userTable, $tag);
3069
3350
  if (not $tagInfo and $tag =~ /^\w{3}\xa9$/) {
3070
3351
  $tag = pack('N', unpack('V', $tag));
3071
- $tagInfo = $exifTool->GetTagInfo($infoTable, $tag);
3072
- $tagInfo or $tagInfo = $exifTool->GetTagInfo($userTable, $tag);
3352
+ $tagInfo = $et->GetTagInfo($infoTable, $tag);
3353
+ $tagInfo or $tagInfo = $et->GetTagInfo($userTable, $tag);
3073
3354
  }
3074
3355
  }
3075
3356
  }
@@ -3095,7 +3376,7 @@ sub ProcessKeys($$$)
3095
3376
  if ($newInfo) {
3096
3377
  $msg or $msg = '';
3097
3378
  AddTagToTable($infoTable, $index, $newInfo);
3098
- $out and printf $out "%sAdded ItemList Tag 0x%.4x = $tag$msg\n", $exifTool->{INDENT}, $index;
3379
+ $out and printf $out "%sAdded ItemList Tag 0x%.4x = $tag$msg\n", $$et{INDENT}, $index;
3099
3380
  }
3100
3381
  $pos += $len;
3101
3382
  ++$index;
@@ -3109,12 +3390,12 @@ sub ProcessKeys($$$)
3109
3390
  # Returns: 1 on success
3110
3391
  sub ProcessMOV($$;$)
3111
3392
  {
3112
- my ($exifTool, $dirInfo, $tagTablePtr) = @_;
3393
+ my ($et, $dirInfo, $tagTablePtr) = @_;
3113
3394
  my $raf = $$dirInfo{RAF};
3114
3395
  my $dataPt = $$dirInfo{DataPt};
3115
- my $verbose = $exifTool->Options('Verbose');
3396
+ my $verbose = $et->Options('Verbose');
3116
3397
  my $dataPos = $$dirInfo{Base} || 0;
3117
- my $charsetQuickTime = $exifTool->Options('CharsetQuickTime');
3398
+ my $charsetQuickTime = $et->Options('CharsetQuickTime');
3118
3399
  my ($buff, $tag, $size, $track, $isUserData, %triplet);
3119
3400
 
3120
3401
  # more convenient to package data as a RandomAccess file
@@ -3134,69 +3415,95 @@ sub ProcessMOV($$;$)
3134
3415
  }
3135
3416
  ($size, $tag) = unpack('Na4', $buff);
3136
3417
  if ($dataPt) {
3137
- $verbose and $exifTool->VerboseDir($$dirInfo{DirName});
3418
+ $verbose and $et->VerboseDir($$dirInfo{DirName});
3138
3419
  } else {
3139
3420
  # check on file type if called with a RAF
3140
3421
  $$tagTablePtr{$tag} or return 0;
3141
- if ($tag eq 'ftyp') {
3142
- # read ahead 4 bytes to see what type of file this is
3422
+ if ($tag eq 'ftyp' and $size >= 12) {
3423
+ # read ftyp atom to see what type of file this is
3143
3424
  my $fileType;
3144
- if ($raf->Read($buff, 4) == 4) {
3145
- $raf->Seek(-4, 1);
3425
+ if ($raf->Read($buff, $size-8) == $size-8) {
3426
+ $raf->Seek(-($size-8), 1);
3427
+ my $type = substr($buff, 0, 4);
3146
3428
  # see if we know the extension for this file type
3147
- $fileType = $1 if $ftypLookup{$buff} and $ftypLookup{$buff} =~ /\(\.(\w+)/;
3429
+ if ($ftypLookup{$type} and $ftypLookup{$type} =~ /\(\.(\w+)/) {
3430
+ $fileType = $1;
3431
+ # check compatible brands
3432
+ } elsif ($buff =~ /^.{8}(.{4})+(mp41|mp42)/s) {
3433
+ $fileType = 'MP4';
3434
+ } elsif ($buff =~ /^.{8}(.{4})+(f4v )/s) {
3435
+ $fileType = 'F4V';
3436
+ } elsif ($buff =~ /^.{8}(.{4})+(qt )/s) {
3437
+ $fileType = 'MOV';
3438
+ }
3148
3439
  }
3149
3440
  $fileType or $fileType = 'MP4'; # default to MP4
3150
- $exifTool->SetFileType($fileType, $mimeLookup{$fileType} || 'video/mp4');
3441
+ $et->SetFileType($fileType, $mimeLookup{$fileType} || 'video/mp4');
3151
3442
  } else {
3152
- $exifTool->SetFileType(); # MOV
3443
+ $et->SetFileType(); # MOV
3153
3444
  }
3154
3445
  SetByteOrder('MM');
3155
3446
  }
3156
3447
  for (;;) {
3157
3448
  if ($size < 8) {
3158
- last if $size == 0;
3159
- $size == 1 or $exifTool->Warn('Invalid atom size'), last;
3449
+ if ($size == 0) {
3450
+ if ($dataPt) {
3451
+ # a zero size isn't legal for contained atoms, but Canon uses it to
3452
+ # terminate the CNTH atom (ie. CanonEOS100D.mov), so tolerate it here
3453
+ my $pos = $raf->Tell() - 4;
3454
+ $raf->Seek(0,2);
3455
+ my $str = $$dirInfo{DirName} . ' with ' . ($raf->Tell() - $pos) . ' bytes';
3456
+ $et->VPrint(0,"$$et{INDENT}\[Terminator found in $str remaining]");
3457
+ } else {
3458
+ $tag = sprintf("0x%.8x",Get32u(\$tag,0)) if $tag =~ /[\x00-\x1f\x7f-\xff]/;
3459
+ $et->VPrint(0,"$$et{INDENT}Tag '$tag' extends to end of file");
3460
+ }
3461
+ last;
3462
+ }
3463
+ $size == 1 or $et->Warn('Invalid atom size'), last;
3464
+ # read extended atom size
3160
3465
  $raf->Read($buff, 8) == 8 or last;
3161
3466
  $dataPos += 8;
3162
3467
  my ($hi, $lo) = unpack('NN', $buff);
3163
- $size = $lo;
3164
3468
  if ($hi or $lo > 0x7fffffff) {
3165
3469
  if ($hi > 0x7fffffff) {
3166
- $exifTool->Warn('Invalid atom size');
3470
+ $et->Warn('Invalid atom size');
3167
3471
  last;
3168
- } elsif (not $exifTool->Options('LargeFileSupport')) {
3169
- $exifTool->Warn('End of processing at large atom (LargeFileSupport not enabled)');
3472
+ } elsif (not $et->Options('LargeFileSupport')) {
3473
+ $et->Warn('End of processing at large atom (LargeFileSupport not enabled)');
3170
3474
  last;
3171
3475
  }
3172
3476
  }
3173
- $size = $hi * 4294967296 + $lo - 8;
3174
- $size < 8 and $exifTool->Warn('Invalid extended size'), last;
3477
+ $size = $hi * 4294967296 + $lo - 16;
3478
+ $size < 0 and $et->Warn('Invalid extended size'), last;
3479
+ } else {
3480
+ $size -= 8;
3175
3481
  }
3176
- $size -= 8;
3177
- if ($isUserData and $$exifTool{SET_GROUP1}) {
3178
- my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tag);
3482
+ if ($isUserData and $$et{SET_GROUP1}) {
3483
+ my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
3179
3484
  # add track name to UserData tags inside tracks
3180
- $tag = $$exifTool{SET_GROUP1} . $tag;
3485
+ $tag = $$et{SET_GROUP1} . $tag;
3181
3486
  if (not $$tagTablePtr{$tag} and $tagInfo) {
3182
3487
  my %newInfo = %$tagInfo;
3183
3488
  foreach ('Name', 'Description') {
3184
- $newInfo{$_} = $$exifTool{SET_GROUP1} . $$tagInfo{$_} if $$tagInfo{$_};
3489
+ next unless $$tagInfo{$_};
3490
+ $newInfo{$_} = $$et{SET_GROUP1} . $$tagInfo{$_};
3491
+ $newInfo{$_} =~ s/^(Track\d+)Track/$1/; # remove duplicate "Track" in name
3185
3492
  }
3186
3493
  AddTagToTable($tagTablePtr, $tag, \%newInfo);
3187
3494
  }
3188
3495
  }
3189
- my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tag);
3496
+ my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
3190
3497
  # allow numerical tag ID's
3191
3498
  unless ($tagInfo) {
3192
3499
  my $num = unpack('N', $tag);
3193
3500
  if ($$tagTablePtr{$num}) {
3194
- $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $num);
3501
+ $tagInfo = $et->GetTagInfo($tagTablePtr, $num);
3195
3502
  $tag = $num;
3196
3503
  }
3197
3504
  }
3198
3505
  # generate tagInfo if Unknown option set
3199
- if (not defined $tagInfo and ($exifTool->{OPTIONS}->{Unknown} or
3506
+ if (not defined $tagInfo and ($$et{OPTIONS}{Unknown} or
3200
3507
  $verbose or $tag =~ /^\xa9/))
3201
3508
  {
3202
3509
  my $name = $tag;
@@ -3219,23 +3526,24 @@ sub ProcessMOV($$;$)
3219
3526
  AddTagToTable($tagTablePtr, $tag, $tagInfo);
3220
3527
  }
3221
3528
  # save required tag sizes
3222
- $exifTool->HandleTag($tagTablePtr, "$tag-size", $size) if $$tagTablePtr{"$tag-size"};
3529
+ $et->HandleTag($tagTablePtr, "$tag-size", $size) if $$tagTablePtr{"$tag-size"};
3223
3530
  # load values only if associated with a tag (or verbose) and < 16MB long
3224
3531
  if ((defined $tagInfo or $verbose) and $size < 0x1000000) {
3225
3532
  my $val;
3226
- unless ($raf->Read($val, $size) == $size) {
3227
- $exifTool->Warn("Truncated '$tag' data");
3533
+ my $missing = $size - $raf->Read($val, $size);
3534
+ if ($missing) {
3535
+ $et->Warn("Truncated '$tag' data (missing $missing bytes)");
3228
3536
  last;
3229
3537
  }
3230
3538
  # use value to get tag info if necessary
3231
- $tagInfo or $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tag, \$val);
3539
+ $tagInfo or $tagInfo = $et->GetTagInfo($tagTablePtr, $tag, \$val);
3232
3540
  my $hasData = ($$dirInfo{HasData} and $val =~ /\0...data\0/s);
3233
3541
  if ($verbose and not $hasData) {
3234
3542
  my $tval;
3235
3543
  if ($tagInfo and $$tagInfo{Format}) {
3236
3544
  $tval = ReadValue(\$val, 0, $$tagInfo{Format}, $$tagInfo{Count}, length($val));
3237
3545
  }
3238
- $exifTool->VerboseInfo($tag, $tagInfo,
3546
+ $et->VerboseInfo($tag, $tagInfo,
3239
3547
  Value => $tval,
3240
3548
  DataPt => \$val,
3241
3549
  DataPos => $dataPos,
@@ -3249,7 +3557,7 @@ sub ProcessMOV($$;$)
3249
3557
  $tag = $triplet{name};
3250
3558
  # add 'mean' to name unless it is 'com.apple.iTunes'
3251
3559
  $tag = $triplet{mean} . '/' . $tag unless $triplet{mean} eq 'com.apple.iTunes';
3252
- $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tag, \$val);
3560
+ $tagInfo = $et->GetTagInfo($tagTablePtr, $tag, \$val);
3253
3561
  unless ($tagInfo) {
3254
3562
  my $name = $triplet{name};
3255
3563
  my $desc = $name;
@@ -3298,20 +3606,21 @@ sub ProcessMOV($$;$)
3298
3606
  # Base needed for IsOffset tags in binary data
3299
3607
  Base => $base,
3300
3608
  );
3609
+ $dirInfo{BlockInfo} = $tagInfo if $$tagInfo{BlockExtract};
3301
3610
  if ($$subdir{ByteOrder} and $$subdir{ByteOrder} =~ /^Little/) {
3302
3611
  SetByteOrder('II');
3303
3612
  }
3304
- my $oldGroup1 = $exifTool->{SET_GROUP1};
3613
+ my $oldGroup1 = $$et{SET_GROUP1};
3305
3614
  if ($$tagInfo{Name} eq 'Track') {
3306
3615
  $track or $track = 0;
3307
- $exifTool->{SET_GROUP1} = 'Track' . (++$track);
3616
+ $$et{SET_GROUP1} = 'Track' . (++$track);
3308
3617
  }
3309
3618
  my $subTable = GetTagTable($$subdir{TagTable});
3310
3619
  my $proc = $$subdir{ProcessProc};
3311
3620
  # make ProcessMOV() the default processing procedure for subdirectories
3312
3621
  $proc = \&ProcessMOV unless $proc or $$subTable{PROCESS_PROC};
3313
- $exifTool->ProcessDirectory(\%dirInfo, $subTable, $proc) if $size > $start;
3314
- $exifTool->{SET_GROUP1} = $oldGroup1;
3622
+ $et->ProcessDirectory(\%dirInfo, $subTable, $proc) if $size > $start;
3623
+ $$et{SET_GROUP1} = $oldGroup1;
3315
3624
  SetByteOrder('MM');
3316
3625
  } elsif ($hasData) {
3317
3626
  # handle atoms containing 'data' tags
@@ -3334,7 +3643,7 @@ sub ProcessMOV($$;$)
3334
3643
  # 0x18=double, 0x1b=BMP, 0x1c='meta' atom
3335
3644
  if ($stringEncoding{$flags}) {
3336
3645
  # handle all string formats
3337
- $value = $exifTool->Decode($value, $stringEncoding{$flags});
3646
+ $value = $et->Decode($value, $stringEncoding{$flags});
3338
3647
  } else {
3339
3648
  if (not $format) {
3340
3649
  if ($flags == 0x15 or $flags == 0x16) {
@@ -3381,7 +3690,7 @@ sub ProcessMOV($$;$)
3381
3690
  $langInfo = Image::ExifTool::GetLangInfo($tagInfo, $lang) if $lang;
3382
3691
  }
3383
3692
  $langInfo or $langInfo = $tagInfo;
3384
- $exifTool->VerboseInfo($tag, $langInfo,
3693
+ $et->VerboseInfo($tag, $langInfo,
3385
3694
  Value => ref $value ? $$value : $value,
3386
3695
  DataPt => \$val,
3387
3696
  DataPos => $dataPos,
@@ -3390,10 +3699,10 @@ sub ProcessMOV($$;$)
3390
3699
  Format => $format,
3391
3700
  Extra => sprintf(", Type='$type', Flags=0x%x",$flags)
3392
3701
  ) if $verbose;
3393
- $exifTool->FoundTag($langInfo, $value) if defined $value;
3702
+ $et->FoundTag($langInfo, $value) if defined $value;
3394
3703
  $pos += $len;
3395
3704
  }
3396
- } elsif ($tag =~ /^\xa9/) {
3705
+ } elsif ($tag =~ /^\xa9/ or $$tagInfo{IText}) {
3397
3706
  # parse international text to extract all languages
3398
3707
  my $pos = 0;
3399
3708
  for (;;) {
@@ -3415,23 +3724,23 @@ sub ProcessMOV($$;$)
3415
3724
  if ($lang < 0x400) {
3416
3725
  # this is a Macintosh language code
3417
3726
  # a language code of 0 is Macintosh english, so treat as default
3418
- if ($lang) {
3727
+ if ($lang) {
3419
3728
  # use Font.pm to look up language string
3420
3729
  require Image::ExifTool::Font;
3421
3730
  $lang = $Image::ExifTool::Font::ttLang{Macintosh}{$lang};
3422
3731
  }
3423
3732
  # the spec says only "Macintosh text encoding", but
3424
3733
  # allow this to be configured by the user
3425
- $str = $exifTool->Decode($str, $charsetQuickTime);
3734
+ $str = $et->Decode($str, $charsetQuickTime);
3426
3735
  } else {
3427
3736
  # convert language code to ASCII (ignore read-only bit)
3428
3737
  $lang = UnpackLang($lang);
3429
3738
  # may be either UTF-8 or UTF-16BE
3430
3739
  my $enc = $str=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
3431
- $str = $exifTool->Decode($str, $enc);
3740
+ $str = $et->Decode($str, $enc);
3432
3741
  }
3433
3742
  $langInfo = Image::ExifTool::GetLangInfo($tagInfo, $lang) if $lang;
3434
- $exifTool->FoundTag($langInfo || $tagInfo, $str);
3743
+ $et->FoundTag($langInfo || $tagInfo, $str);
3435
3744
  $pos += $len;
3436
3745
  }
3437
3746
  } else {
@@ -3439,22 +3748,22 @@ sub ProcessMOV($$;$)
3439
3748
  if ($format) {
3440
3749
  $val = ReadValue(\$val, 0, $format, $$tagInfo{Count}, length($val));
3441
3750
  }
3442
- my $key = $exifTool->FoundTag($tagInfo, $val);
3751
+ my $key = $et->FoundTag($tagInfo, $val);
3443
3752
  # decode if necessary (NOTE: must be done after RawConv)
3444
3753
  if (defined $key and (not $format or $format =~ /^string/) and
3445
3754
  not $$tagInfo{Unknown} and not $$tagInfo{ValueConv} and
3446
- not $$tagInfo{Binary} and defined $$exifTool{VALUE}{$key} and not ref $val)
3755
+ not $$tagInfo{Binary} and defined $$et{VALUE}{$key} and not ref $val)
3447
3756
  {
3448
- my $vp = \$$exifTool{VALUE}{$key};
3757
+ my $vp = \$$et{VALUE}{$key};
3449
3758
  if (not ref $$vp and length($$vp) <= 65536 and $$vp =~ /[\x80-\xff]/) {
3450
3759
  # the encoding of this is not specified, so use CharsetQuickTime
3451
- $$vp = $exifTool->Decode($$vp, $charsetQuickTime);
3760
+ $$vp = $et->Decode($$vp, $charsetQuickTime);
3452
3761
  }
3453
3762
  }
3454
3763
  }
3455
3764
  }
3456
3765
  } else {
3457
- $raf->Seek($size, 1) or $exifTool->Warn("Truncated '$tag' data"), last;
3766
+ $raf->Seek($size, 1) or $et->Warn("Truncated '$tag' data"), last;
3458
3767
  }
3459
3768
  $raf->Read($buff, 8) == 8 or last;
3460
3769
  $dataPos += $size + 8;
@@ -3469,9 +3778,9 @@ sub ProcessMOV($$;$)
3469
3778
  # Returns: 1 on success
3470
3779
  sub ProcessQTIF($$)
3471
3780
  {
3472
- my ($exifTool, $dirInfo) = @_;
3781
+ my ($et, $dirInfo) = @_;
3473
3782
  my $table = GetTagTable('Image::ExifTool::QuickTime::ImageFile');
3474
- return ProcessMOV($exifTool, $dirInfo, $table);
3783
+ return ProcessMOV($et, $dirInfo, $table);
3475
3784
  }
3476
3785
 
3477
3786
  1; # end