lightdrift-libraw 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/CHANGELOG.md +374 -0
  2. package/LICENSE +21 -0
  3. package/README.md +757 -0
  4. package/binding.gyp +38 -0
  5. package/deps/LibRaw-Source/LibRaw-0.21.4/.clang-format +4 -0
  6. package/deps/LibRaw-Source/LibRaw-0.21.4/COPYRIGHT +27 -0
  7. package/deps/LibRaw-Source/LibRaw-0.21.4/Changelog.txt +2802 -0
  8. package/deps/LibRaw-Source/LibRaw-0.21.4/DEVELOPER-NOTES +20 -0
  9. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/dng-sdk-1_4-allow-VC5-validate.diff +21 -0
  10. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/dng-sdk-1_6-hide-ccVc5-definitiion.diff +15 -0
  11. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/dng-sdk-allow-VC5-validate.diff +21 -0
  12. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/gpr_read_image.cpp.diff +29 -0
  13. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/gpr_read_image.h.diff +12 -0
  14. package/deps/LibRaw-Source/LibRaw-0.21.4/INSTALL +51 -0
  15. package/deps/LibRaw-Source/LibRaw-0.21.4/LICENSE.CDDL +340 -0
  16. package/deps/LibRaw-Source/LibRaw-0.21.4/LICENSE.LGPL +458 -0
  17. package/deps/LibRaw-Source/LibRaw-0.21.4/LibRaw.pro +19 -0
  18. package/deps/LibRaw-Source/LibRaw-0.21.4/LibRaw.sln +123 -0
  19. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.am +140 -0
  20. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.devel.nopp +230 -0
  21. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.devel.noppr2i +227 -0
  22. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.dist +501 -0
  23. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.in +1849 -0
  24. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.mingw +297 -0
  25. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.msvc +628 -0
  26. package/deps/LibRaw-Source/LibRaw-0.21.4/README.DNGSDK.txt +43 -0
  27. package/deps/LibRaw-Source/LibRaw-0.21.4/README.GoPro.txt +112 -0
  28. package/deps/LibRaw-Source/LibRaw-0.21.4/README.RawSpeed.txt +62 -0
  29. package/deps/LibRaw-Source/LibRaw-0.21.4/README.cmake +9 -0
  30. package/deps/LibRaw-Source/LibRaw-0.21.4/README.demosaic-packs +17 -0
  31. package/deps/LibRaw-Source/LibRaw-0.21.4/README.md +106 -0
  32. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.cpucount-unix.patch +15 -0
  33. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.qmake-pro-files.patch +84 -0
  34. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.samsung-decoder.patch +39 -0
  35. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.uncompressed-color-dng.patch +13 -0
  36. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.win32-dll.patch +186 -0
  37. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed_xmldata.cpp +4115 -0
  38. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/README.md +69 -0
  39. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/01.CameraMeta-extensibility.patch +13 -0
  40. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/02.Makernotes-processing.patch +36 -0
  41. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/03.remove-limits-and-logging.patch +245 -0
  42. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/04.clang-cl-compatibility.patch +37 -0
  43. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.cpp +251 -0
  44. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.h +83 -0
  45. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi_test.cpp +71 -0
  46. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rsxml2c.sh +5 -0
  47. package/deps/LibRaw-Source/LibRaw-0.21.4/aclocal.m4 +1446 -0
  48. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/output.0 +19332 -0
  49. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/output.1 +19332 -0
  50. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/output.2 +19332 -0
  51. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/requests +544 -0
  52. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/traces.0 +3028 -0
  53. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/traces.1 +665 -0
  54. package/deps/LibRaw-Source/LibRaw-0.21.4/autom4te.cache/traces.2 +3028 -0
  55. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/.keep_me +2 -0
  56. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/4channels.pro +5 -0
  57. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/4channels.vcxproj +145 -0
  58. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/4channels.vcxproj.filters +18 -0
  59. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_emu.pro +6 -0
  60. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_emu.vcxproj +145 -0
  61. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_emu.vcxproj.filters +18 -0
  62. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_half.pro +6 -0
  63. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_half.vcxproj +145 -0
  64. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_half.vcxproj.filters +18 -0
  65. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/half_mt.pro +10 -0
  66. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw-common-lib.pro +28 -0
  67. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw-common.pro +8 -0
  68. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw.pro +70 -0
  69. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw.vcxproj +234 -0
  70. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw.vcxproj.filters +295 -0
  71. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/mem_image.pro +6 -0
  72. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/mem_image.vcxproj +145 -0
  73. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/mem_image.vcxproj.filters +18 -0
  74. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/multirender_test.pro +6 -0
  75. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/multirender_test.vcxproj +145 -0
  76. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/multirender_test.vcxproj.filters +18 -0
  77. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/openbayer_sample.pro +6 -0
  78. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/openbayer_sample.vcxproj +145 -0
  79. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/openbayer_sample.vcxproj.filters +18 -0
  80. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.pro +4 -0
  81. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.vcxproj +145 -0
  82. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.vcxproj.filters +18 -0
  83. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/raw-identify.pro +6 -0
  84. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/raw-identify.vcxproj +145 -0
  85. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/raw-identify.vcxproj.filters +18 -0
  86. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/rawtextdump.pro +6 -0
  87. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/rawtextdump.vcxproj +145 -0
  88. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/rawtextdump.vcxproj.filters +18 -0
  89. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/simple_dcraw.pro +6 -0
  90. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/simple_dcraw.vcxproj +145 -0
  91. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/simple_dcraw.vcxproj.filters +18 -0
  92. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/unprocessed_raw.pro +6 -0
  93. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/unprocessed_raw.vcxproj +145 -0
  94. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/unprocessed_raw.vcxproj.filters +18 -0
  95. package/deps/LibRaw-Source/LibRaw-0.21.4/compile +347 -0
  96. package/deps/LibRaw-Source/LibRaw-0.21.4/config.guess +1433 -0
  97. package/deps/LibRaw-Source/LibRaw-0.21.4/config.sub +1804 -0
  98. package/deps/LibRaw-Source/LibRaw-0.21.4/configure +19332 -0
  99. package/deps/LibRaw-Source/LibRaw-0.21.4/configure.ac +153 -0
  100. package/deps/LibRaw-Source/LibRaw-0.21.4/depcomp +791 -0
  101. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-C.html +187 -0
  102. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-CXX.html +881 -0
  103. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-datastruct.html +1341 -0
  104. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-notes.html +305 -0
  105. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-overview.html +66 -0
  106. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/Install-LibRaw.html +124 -0
  107. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/Samples-LibRaw.html +213 -0
  108. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/Why-LibRaw.html +65 -0
  109. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/index.html +38 -0
  110. package/deps/LibRaw-Source/LibRaw-0.21.4/install-sh +501 -0
  111. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/dcraw_defs.h +66 -0
  112. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/dcraw_fileio_defs.h +25 -0
  113. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/defines.h +193 -0
  114. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/dmp_include.h +27 -0
  115. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/libraw_cameraids.h +320 -0
  116. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/libraw_cxx_defs.h +133 -0
  117. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/libraw_internal_funcs.h +412 -0
  118. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/var_defines.h +215 -0
  119. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/x3f_tools.h +539 -0
  120. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/Makefile +3 -0
  121. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw.h +534 -0
  122. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_alloc.h +148 -0
  123. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_const.h +814 -0
  124. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_datastream.h +410 -0
  125. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_internal.h +341 -0
  126. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_types.h +1175 -0
  127. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_version.h +63 -0
  128. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw.pc.in +12 -0
  129. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw_r.pc.in +12 -0
  130. package/deps/LibRaw-Source/LibRaw-0.21.4/ltmain.sh +11147 -0
  131. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ax_openmp.m4 +99 -0
  132. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/libtool.m4 +8369 -0
  133. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ltoptions.m4 +437 -0
  134. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ltsugar.m4 +124 -0
  135. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ltversion.m4 +23 -0
  136. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/lt~obsolete.m4 +99 -0
  137. package/deps/LibRaw-Source/LibRaw-0.21.4/missing +215 -0
  138. package/deps/LibRaw-Source/LibRaw-0.21.4/object/.keep_me +0 -0
  139. package/deps/LibRaw-Source/LibRaw-0.21.4/rsxml2c.sh +6 -0
  140. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/4channels.cpp +174 -0
  141. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/Makefile +2 -0
  142. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/dcraw_emu.cpp +670 -0
  143. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/dcraw_half.c +78 -0
  144. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/half_mt.c +178 -0
  145. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/half_mt_win32.c +212 -0
  146. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/mem_image_sample.cpp +282 -0
  147. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/multirender_test.cpp +107 -0
  148. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/openbayer_sample.cpp +65 -0
  149. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/postprocessing_benchmark.cpp +223 -0
  150. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/raw-identify.cpp +743 -0
  151. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/rawtextdump.cpp +144 -0
  152. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/simple_dcraw.cpp +217 -0
  153. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/unprocessed_raw.cpp +319 -0
  154. package/deps/LibRaw-Source/LibRaw-0.21.4/shlib-version.sh +11 -0
  155. package/deps/LibRaw-Source/LibRaw-0.21.4/src/Makefile +2 -0
  156. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/canon_600.cpp +225 -0
  157. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/crx.cpp +2781 -0
  158. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_dcraw.cpp +1816 -0
  159. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw.cpp +873 -0
  160. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw_dcrdefs.cpp +411 -0
  161. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/dng.cpp +284 -0
  162. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fp_dng.cpp +689 -0
  163. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fuji_compressed.cpp +1210 -0
  164. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/generic.cpp +101 -0
  165. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/kodak_decoders.cpp +524 -0
  166. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/load_mfbacks.cpp +936 -0
  167. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/smal.cpp +181 -0
  168. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack.cpp +508 -0
  169. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack_thumb.cpp +405 -0
  170. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/aahd_demosaic.cpp +781 -0
  171. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/ahd_demosaic.cpp +355 -0
  172. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dcb_demosaic.cpp +900 -0
  173. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dht_demosaic.cpp +1033 -0
  174. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/misc_demosaic.cpp +420 -0
  175. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/xtrans_demosaic.cpp +434 -0
  176. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/dngsdk_glue.cpp +416 -0
  177. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/rawspeed_glue.cpp +286 -0
  178. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_c_api.cpp +457 -0
  179. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_datastream.cpp +1046 -0
  180. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/adobepano.cpp +154 -0
  181. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/canon.cpp +1335 -0
  182. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/ciff.cpp +411 -0
  183. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/cr3_parser.cpp +896 -0
  184. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/epson.cpp +96 -0
  185. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/exif_gps.cpp +430 -0
  186. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/fuji.cpp +1427 -0
  187. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/hasselblad_model.cpp +538 -0
  188. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify.cpp +3167 -0
  189. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify_tools.cpp +140 -0
  190. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/kodak.cpp +363 -0
  191. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/leica.cpp +375 -0
  192. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/makernotes.cpp +786 -0
  193. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/mediumformat.cpp +521 -0
  194. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/minolta.cpp +110 -0
  195. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/misc_parsers.cpp +694 -0
  196. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/nikon.cpp +1051 -0
  197. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/normalize_model.cpp +1451 -0
  198. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/olympus.cpp +685 -0
  199. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/p1.cpp +192 -0
  200. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/pentax.cpp +675 -0
  201. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/samsung.cpp +182 -0
  202. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/sony.cpp +2320 -0
  203. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/tiff.cpp +2198 -0
  204. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/aspect_ratio.cpp +113 -0
  205. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/dcraw_process.cpp +259 -0
  206. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/mem_image.cpp +292 -0
  207. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_aux.cpp +413 -0
  208. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_ph.cpp +31 -0
  209. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils.cpp +190 -0
  210. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils_dcrdefs.cpp +308 -0
  211. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/ext_preprocess.cpp +127 -0
  212. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/preprocessing_ph.cpp +24 -0
  213. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/raw2image.cpp +560 -0
  214. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/subtract_black.cpp +91 -0
  215. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/cameralist.cpp +1268 -0
  216. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colorconst.cpp +57 -0
  217. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colordata.cpp +1841 -0
  218. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/wblists.cpp +217 -0
  219. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/curves.cpp +154 -0
  220. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/decoder_info.cpp +413 -0
  221. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/init_close_utils.cpp +340 -0
  222. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/open.cpp +1269 -0
  223. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/phaseone_processing.cpp +101 -0
  224. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/read_utils.cpp +176 -0
  225. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/thumb_utils.cpp +338 -0
  226. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_dcraw.cpp +330 -0
  227. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_libraw.cpp +673 -0
  228. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/apply_profile.cpp +76 -0
  229. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/file_write.cpp +338 -0
  230. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/tiff_writer.cpp +73 -0
  231. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/write_ph.cpp +39 -0
  232. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_parse_process.cpp +708 -0
  233. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_utils_patched.cpp +2119 -0
  234. package/deps/LibRaw-Source/LibRaw-0.21.4/version.sh +16 -0
  235. package/deps/LibRaw-Win64/LibRaw-0.21.4/.clang-format +4 -0
  236. package/deps/LibRaw-Win64/LibRaw-0.21.4/COPYRIGHT +27 -0
  237. package/deps/LibRaw-Win64/LibRaw-0.21.4/Changelog.txt +2802 -0
  238. package/deps/LibRaw-Win64/LibRaw-0.21.4/DEVELOPER-NOTES +20 -0
  239. package/deps/LibRaw-Win64/LibRaw-0.21.4/GoPro/dng-sdk-1_4-allow-VC5-validate.diff +21 -0
  240. package/deps/LibRaw-Win64/LibRaw-0.21.4/GoPro/dng-sdk-1_6-hide-ccVc5-definitiion.diff +15 -0
  241. package/deps/LibRaw-Win64/LibRaw-0.21.4/GoPro/dng-sdk-allow-VC5-validate.diff +21 -0
  242. package/deps/LibRaw-Win64/LibRaw-0.21.4/GoPro/gpr_read_image.cpp.diff +29 -0
  243. package/deps/LibRaw-Win64/LibRaw-0.21.4/GoPro/gpr_read_image.h.diff +12 -0
  244. package/deps/LibRaw-Win64/LibRaw-0.21.4/INSTALL +51 -0
  245. package/deps/LibRaw-Win64/LibRaw-0.21.4/LICENSE.CDDL +340 -0
  246. package/deps/LibRaw-Win64/LibRaw-0.21.4/LICENSE.LGPL +458 -0
  247. package/deps/LibRaw-Win64/LibRaw-0.21.4/LibRaw.pro +19 -0
  248. package/deps/LibRaw-Win64/LibRaw-0.21.4/LibRaw.sln +123 -0
  249. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.am +140 -0
  250. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.devel.nopp +230 -0
  251. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.devel.noppr2i +227 -0
  252. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.dist +501 -0
  253. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.in +1849 -0
  254. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.mingw +297 -0
  255. package/deps/LibRaw-Win64/LibRaw-0.21.4/Makefile.msvc +628 -0
  256. package/deps/LibRaw-Win64/LibRaw-0.21.4/README.DNGSDK.txt +43 -0
  257. package/deps/LibRaw-Win64/LibRaw-0.21.4/README.GoPro.txt +112 -0
  258. package/deps/LibRaw-Win64/LibRaw-0.21.4/README.RawSpeed.txt +62 -0
  259. package/deps/LibRaw-Win64/LibRaw-0.21.4/README.cmake +9 -0
  260. package/deps/LibRaw-Win64/LibRaw-0.21.4/README.demosaic-packs +17 -0
  261. package/deps/LibRaw-Win64/LibRaw-0.21.4/README.md +106 -0
  262. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed/rawspeed.cpucount-unix.patch +15 -0
  263. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed/rawspeed.qmake-pro-files.patch +84 -0
  264. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed/rawspeed.samsung-decoder.patch +39 -0
  265. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed/rawspeed.uncompressed-color-dng.patch +13 -0
  266. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed/rawspeed.win32-dll.patch +186 -0
  267. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed/rawspeed_xmldata.cpp +4115 -0
  268. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/README.md +69 -0
  269. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/patches/01.CameraMeta-extensibility.patch +13 -0
  270. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/patches/02.Makernotes-processing.patch +36 -0
  271. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/patches/03.remove-limits-and-logging.patch +245 -0
  272. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/patches/04.clang-cl-compatibility.patch +37 -0
  273. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.cpp +251 -0
  274. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.h +83 -0
  275. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi_test.cpp +71 -0
  276. package/deps/LibRaw-Win64/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rsxml2c.sh +5 -0
  277. package/deps/LibRaw-Win64/LibRaw-0.21.4/aclocal.m4 +1446 -0
  278. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/output.0 +19332 -0
  279. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/output.1 +19332 -0
  280. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/output.2 +19332 -0
  281. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/requests +544 -0
  282. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/traces.0 +3028 -0
  283. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/traces.1 +665 -0
  284. package/deps/LibRaw-Win64/LibRaw-0.21.4/autom4te.cache/traces.2 +3028 -0
  285. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/.keep_me +2 -0
  286. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/4channels.exe +0 -0
  287. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/dcraw_emu.exe +0 -0
  288. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/dcraw_half.exe +0 -0
  289. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/half_mt.exe +0 -0
  290. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/libraw.dll +0 -0
  291. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/mem_image.exe +0 -0
  292. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/multirender_test.exe +0 -0
  293. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/openbayer_sample.exe +0 -0
  294. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/postprocessing_benchmark.exe +0 -0
  295. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/raw-identify.exe +0 -0
  296. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/rawtextdump.exe +0 -0
  297. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/simple_dcraw.exe +0 -0
  298. package/deps/LibRaw-Win64/LibRaw-0.21.4/bin/unprocessed_raw.exe +0 -0
  299. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/4channels.pro +5 -0
  300. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/4channels.vcxproj +145 -0
  301. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/4channels.vcxproj.filters +18 -0
  302. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/dcraw_emu.pro +6 -0
  303. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/dcraw_emu.vcxproj +145 -0
  304. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/dcraw_emu.vcxproj.filters +18 -0
  305. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/dcraw_half.pro +6 -0
  306. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/dcraw_half.vcxproj +145 -0
  307. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/dcraw_half.vcxproj.filters +18 -0
  308. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/half_mt.pro +10 -0
  309. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/libraw-common-lib.pro +28 -0
  310. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/libraw-common.pro +8 -0
  311. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/libraw.pro +70 -0
  312. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/libraw.vcxproj +234 -0
  313. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/libraw.vcxproj.filters +295 -0
  314. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/mem_image.pro +6 -0
  315. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/mem_image.vcxproj +145 -0
  316. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/mem_image.vcxproj.filters +18 -0
  317. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/multirender_test.pro +6 -0
  318. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/multirender_test.vcxproj +145 -0
  319. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/multirender_test.vcxproj.filters +18 -0
  320. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/openbayer_sample.pro +6 -0
  321. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/openbayer_sample.vcxproj +145 -0
  322. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/openbayer_sample.vcxproj.filters +18 -0
  323. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.pro +4 -0
  324. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.vcxproj +145 -0
  325. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.vcxproj.filters +18 -0
  326. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/raw-identify.pro +6 -0
  327. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/raw-identify.vcxproj +145 -0
  328. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/raw-identify.vcxproj.filters +18 -0
  329. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/rawtextdump.pro +6 -0
  330. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/rawtextdump.vcxproj +145 -0
  331. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/rawtextdump.vcxproj.filters +18 -0
  332. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/simple_dcraw.pro +6 -0
  333. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/simple_dcraw.vcxproj +145 -0
  334. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/simple_dcraw.vcxproj.filters +18 -0
  335. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/unprocessed_raw.pro +6 -0
  336. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/unprocessed_raw.vcxproj +145 -0
  337. package/deps/LibRaw-Win64/LibRaw-0.21.4/buildfiles/unprocessed_raw.vcxproj.filters +18 -0
  338. package/deps/LibRaw-Win64/LibRaw-0.21.4/compile +347 -0
  339. package/deps/LibRaw-Win64/LibRaw-0.21.4/config.guess +1433 -0
  340. package/deps/LibRaw-Win64/LibRaw-0.21.4/config.sub +1804 -0
  341. package/deps/LibRaw-Win64/LibRaw-0.21.4/configure +19332 -0
  342. package/deps/LibRaw-Win64/LibRaw-0.21.4/configure.ac +153 -0
  343. package/deps/LibRaw-Win64/LibRaw-0.21.4/depcomp +791 -0
  344. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/API-C.html +187 -0
  345. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/API-CXX.html +881 -0
  346. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/API-datastruct.html +1341 -0
  347. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/API-notes.html +305 -0
  348. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/API-overview.html +66 -0
  349. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/Install-LibRaw.html +124 -0
  350. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/Samples-LibRaw.html +213 -0
  351. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/Why-LibRaw.html +65 -0
  352. package/deps/LibRaw-Win64/LibRaw-0.21.4/doc/index.html +38 -0
  353. package/deps/LibRaw-Win64/LibRaw-0.21.4/install-sh +501 -0
  354. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/dcraw_defs.h +66 -0
  355. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/dcraw_fileio_defs.h +25 -0
  356. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/defines.h +193 -0
  357. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/dmp_include.h +27 -0
  358. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/libraw_cameraids.h +320 -0
  359. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/libraw_cxx_defs.h +133 -0
  360. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/libraw_internal_funcs.h +412 -0
  361. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/var_defines.h +215 -0
  362. package/deps/LibRaw-Win64/LibRaw-0.21.4/internal/x3f_tools.h +539 -0
  363. package/deps/LibRaw-Win64/LibRaw-0.21.4/lib/Makefile +3 -0
  364. package/deps/LibRaw-Win64/LibRaw-0.21.4/lib/libraw.exp +0 -0
  365. package/deps/LibRaw-Win64/LibRaw-0.21.4/lib/libraw.lib +0 -0
  366. package/deps/LibRaw-Win64/LibRaw-0.21.4/lib/libraw_static.lib +0 -0
  367. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw.h +534 -0
  368. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw_alloc.h +148 -0
  369. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw_const.h +814 -0
  370. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw_datastream.h +410 -0
  371. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw_internal.h +341 -0
  372. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw_types.h +1175 -0
  373. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw/libraw_version.h +63 -0
  374. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw.pc.in +12 -0
  375. package/deps/LibRaw-Win64/LibRaw-0.21.4/libraw_r.pc.in +12 -0
  376. package/deps/LibRaw-Win64/LibRaw-0.21.4/ltmain.sh +11147 -0
  377. package/deps/LibRaw-Win64/LibRaw-0.21.4/m4/ax_openmp.m4 +99 -0
  378. package/deps/LibRaw-Win64/LibRaw-0.21.4/m4/libtool.m4 +8369 -0
  379. package/deps/LibRaw-Win64/LibRaw-0.21.4/m4/ltoptions.m4 +437 -0
  380. package/deps/LibRaw-Win64/LibRaw-0.21.4/m4/ltsugar.m4 +124 -0
  381. package/deps/LibRaw-Win64/LibRaw-0.21.4/m4/ltversion.m4 +23 -0
  382. package/deps/LibRaw-Win64/LibRaw-0.21.4/m4/lt~obsolete.m4 +99 -0
  383. package/deps/LibRaw-Win64/LibRaw-0.21.4/missing +215 -0
  384. package/deps/LibRaw-Win64/LibRaw-0.21.4/object/.keep_me +0 -0
  385. package/deps/LibRaw-Win64/LibRaw-0.21.4/rsxml2c.sh +6 -0
  386. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/4channels.cpp +174 -0
  387. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/Makefile +2 -0
  388. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/dcraw_emu.cpp +670 -0
  389. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/dcraw_half.c +78 -0
  390. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/half_mt.c +178 -0
  391. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/half_mt_win32.c +212 -0
  392. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/mem_image_sample.cpp +282 -0
  393. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/multirender_test.cpp +107 -0
  394. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/openbayer_sample.cpp +65 -0
  395. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/postprocessing_benchmark.cpp +223 -0
  396. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/raw-identify.cpp +743 -0
  397. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/rawtextdump.cpp +144 -0
  398. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/simple_dcraw.cpp +217 -0
  399. package/deps/LibRaw-Win64/LibRaw-0.21.4/samples/unprocessed_raw.cpp +319 -0
  400. package/deps/LibRaw-Win64/LibRaw-0.21.4/shlib-version.sh +11 -0
  401. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/Makefile +2 -0
  402. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/canon_600.cpp +225 -0
  403. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/crx.cpp +2781 -0
  404. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/decoders_dcraw.cpp +1816 -0
  405. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/decoders_libraw.cpp +873 -0
  406. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/decoders_libraw_dcrdefs.cpp +411 -0
  407. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/dng.cpp +284 -0
  408. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/fp_dng.cpp +689 -0
  409. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/fuji_compressed.cpp +1210 -0
  410. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/generic.cpp +101 -0
  411. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/kodak_decoders.cpp +524 -0
  412. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/load_mfbacks.cpp +936 -0
  413. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/smal.cpp +181 -0
  414. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/unpack.cpp +508 -0
  415. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/decoders/unpack_thumb.cpp +405 -0
  416. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/demosaic/aahd_demosaic.cpp +781 -0
  417. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/demosaic/ahd_demosaic.cpp +355 -0
  418. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/demosaic/dcb_demosaic.cpp +900 -0
  419. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/demosaic/dht_demosaic.cpp +1033 -0
  420. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/demosaic/misc_demosaic.cpp +420 -0
  421. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/demosaic/xtrans_demosaic.cpp +434 -0
  422. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/integration/dngsdk_glue.cpp +416 -0
  423. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/integration/rawspeed_glue.cpp +286 -0
  424. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/libraw_c_api.cpp +457 -0
  425. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/libraw_datastream.cpp +1046 -0
  426. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/adobepano.cpp +154 -0
  427. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/canon.cpp +1335 -0
  428. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/ciff.cpp +411 -0
  429. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/cr3_parser.cpp +896 -0
  430. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/epson.cpp +96 -0
  431. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/exif_gps.cpp +430 -0
  432. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/fuji.cpp +1427 -0
  433. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/hasselblad_model.cpp +538 -0
  434. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/identify.cpp +3167 -0
  435. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/identify_tools.cpp +140 -0
  436. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/kodak.cpp +363 -0
  437. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/leica.cpp +375 -0
  438. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/makernotes.cpp +786 -0
  439. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/mediumformat.cpp +521 -0
  440. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/minolta.cpp +110 -0
  441. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/misc_parsers.cpp +694 -0
  442. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/nikon.cpp +1051 -0
  443. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/normalize_model.cpp +1451 -0
  444. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/olympus.cpp +685 -0
  445. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/p1.cpp +192 -0
  446. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/pentax.cpp +675 -0
  447. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/samsung.cpp +182 -0
  448. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/sony.cpp +2320 -0
  449. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/metadata/tiff.cpp +2198 -0
  450. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/aspect_ratio.cpp +113 -0
  451. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/dcraw_process.cpp +259 -0
  452. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/mem_image.cpp +292 -0
  453. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/postprocessing_aux.cpp +413 -0
  454. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/postprocessing_ph.cpp +31 -0
  455. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/postprocessing_utils.cpp +190 -0
  456. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/postprocessing/postprocessing_utils_dcrdefs.cpp +308 -0
  457. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/preprocessing/ext_preprocess.cpp +127 -0
  458. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/preprocessing/preprocessing_ph.cpp +24 -0
  459. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/preprocessing/raw2image.cpp +560 -0
  460. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/preprocessing/subtract_black.cpp +91 -0
  461. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/tables/cameralist.cpp +1268 -0
  462. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/tables/colorconst.cpp +57 -0
  463. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/tables/colordata.cpp +1841 -0
  464. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/tables/wblists.cpp +217 -0
  465. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/curves.cpp +154 -0
  466. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/decoder_info.cpp +413 -0
  467. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/init_close_utils.cpp +340 -0
  468. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/open.cpp +1269 -0
  469. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/phaseone_processing.cpp +101 -0
  470. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/read_utils.cpp +176 -0
  471. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/thumb_utils.cpp +338 -0
  472. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/utils_dcraw.cpp +330 -0
  473. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/utils/utils_libraw.cpp +673 -0
  474. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/write/apply_profile.cpp +76 -0
  475. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/write/file_write.cpp +338 -0
  476. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/write/tiff_writer.cpp +73 -0
  477. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/write/write_ph.cpp +39 -0
  478. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/x3f/x3f_parse_process.cpp +708 -0
  479. package/deps/LibRaw-Win64/LibRaw-0.21.4/src/x3f/x3f_utils_patched.cpp +2119 -0
  480. package/deps/LibRaw-Win64/LibRaw-0.21.4/version.sh +16 -0
  481. package/lib/index.d.ts +324 -0
  482. package/lib/index.js +761 -0
  483. package/package.json +97 -0
  484. package/src/addon.cpp +8 -0
  485. package/src/libraw_wrapper.cpp +1223 -0
  486. package/src/libraw_wrapper.h +109 -0
  487. package/src/libraw_wrapper_new.cpp +853 -0
@@ -0,0 +1,1335 @@
1
+ /* -*- C++ -*-
2
+ * Copyright 2019-2021 LibRaw LLC (info@libraw.org)
3
+ *
4
+
5
+ LibRaw is free software; you can redistribute it and/or modify
6
+ it under the terms of the one of two licenses as you choose:
7
+
8
+ 1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
9
+ (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
10
+
11
+ 2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
12
+ (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
13
+
14
+ */
15
+ #include "../../internal/dcraw_defs.h"
16
+ #include "../../internal/libraw_cameraids.h"
17
+
18
+ libraw_area_t LibRaw::get_CanonArea() {
19
+ libraw_area_t la = {};
20
+ la.l = get2();
21
+ la.t = get2();
22
+ la.r = get2();
23
+ la.b = get2();
24
+ return la;
25
+ }
26
+
27
+ float LibRaw::_CanonConvertAperture(ushort in)
28
+ {
29
+ if ((in == (ushort)0xffe0) || (in == (ushort)0x7fff))
30
+ return 0.0f;
31
+ return LibRaw::libraw_powf64l(2.f, float(in) / 64.f);
32
+ }
33
+
34
+ static float _CanonConvertEV(short in)
35
+ {
36
+ short EV, Sign, Frac;
37
+ float Frac_f;
38
+ EV = in;
39
+ if (EV < 0)
40
+ {
41
+ EV = -EV;
42
+ Sign = -1;
43
+ }
44
+ else
45
+ {
46
+ Sign = 1;
47
+ }
48
+ Frac = EV & 0x1f;
49
+ EV -= Frac; // remove fraction
50
+
51
+ if (Frac == 0x0c)
52
+ { // convert 1/3 and 2/3 codes
53
+ Frac_f = 32.0f / 3.0f;
54
+ }
55
+ else if (Frac == 0x14)
56
+ {
57
+ Frac_f = 64.0f / 3.0f;
58
+ }
59
+ else
60
+ Frac_f = (float)Frac;
61
+
62
+ return ((float)Sign * ((float)EV + Frac_f)) / 32.0f;
63
+ }
64
+
65
+ void LibRaw::setCanonBodyFeatures(unsigned long long id)
66
+ {
67
+
68
+ ilm.CamID = id;
69
+ if ((id == CanonID_EOS_1D) ||
70
+ (id == CanonID_EOS_1D_Mark_II) ||
71
+ (id == CanonID_EOS_1D_Mark_II_N) ||
72
+ (id == CanonID_EOS_1D_Mark_III) ||
73
+ (id == CanonID_EOS_1D_Mark_IV))
74
+ {
75
+ ilm.CameraFormat = LIBRAW_FORMAT_APSH;
76
+ ilm.CameraMount = LIBRAW_MOUNT_Canon_EF;
77
+ }
78
+ else if ((id == CanonID_EOS_1Ds) ||
79
+ (id == CanonID_EOS_1Ds_Mark_II) ||
80
+ (id == CanonID_EOS_1Ds_Mark_III) ||
81
+ (id == CanonID_EOS_1D_X) ||
82
+ (id == CanonID_EOS_1D_X_Mark_II) ||
83
+ (id == CanonID_EOS_1D_X_Mark_III) ||
84
+ (id == CanonID_EOS_1D_C) ||
85
+ (id == CanonID_EOS_5D) ||
86
+ (id == CanonID_EOS_5D_Mark_II) ||
87
+ (id == CanonID_EOS_5D_Mark_III) ||
88
+ (id == CanonID_EOS_5D_Mark_IV) ||
89
+ (id == CanonID_EOS_5DS) ||
90
+ (id == CanonID_EOS_5DS_R) ||
91
+ (id == CanonID_EOS_6D) ||
92
+ (id == CanonID_EOS_6D_Mark_II))
93
+ {
94
+ ilm.CameraFormat = LIBRAW_FORMAT_FF;
95
+ ilm.CameraMount = LIBRAW_MOUNT_Canon_EF;
96
+ }
97
+ else if ((id == CanonID_EOS_M) ||
98
+ (id == CanonID_EOS_M2) ||
99
+ (id == CanonID_EOS_M3) ||
100
+ (id == CanonID_EOS_M5) ||
101
+ (id == CanonID_EOS_M10) ||
102
+ (id == CanonID_EOS_M50) ||
103
+ (id == CanonID_EOS_M50_Mark_II) ||
104
+ (id == CanonID_EOS_M6) ||
105
+ (id == CanonID_EOS_M6_Mark_II) ||
106
+ (id == CanonID_EOS_M100))
107
+ {
108
+ ilm.CameraFormat = LIBRAW_FORMAT_APSC;
109
+ ilm.CameraMount = LIBRAW_MOUNT_Canon_EF_M;
110
+ }
111
+ else if ((id == CanonID_EOS_R) ||
112
+ (id == CanonID_EOS_RP) ||
113
+ (id == CanonID_EOS_R3) ||
114
+ (id == CanonID_EOS_R5) ||
115
+ (id == CanonID_EOS_R6))
116
+ {
117
+ ilm.CameraFormat = LIBRAW_FORMAT_FF;
118
+ ilm.CameraMount = LIBRAW_MOUNT_Canon_RF;
119
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
120
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
121
+ }
122
+
123
+ else if ((id == CanonID_EOS_R7) ||
124
+ (id == CanonID_EOS_R10))
125
+ {
126
+ ilm.CameraFormat = LIBRAW_FORMAT_APSC;
127
+ ilm.CameraMount = LIBRAW_MOUNT_Canon_RF;
128
+ ilm.LensFormat = LIBRAW_FORMAT_APSC;
129
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
130
+ }
131
+
132
+ else if ((id == CanonID_EOS_D30) ||
133
+ (id == CanonID_EOS_D60) ||
134
+ (id > 0x80000000ULL))
135
+ {
136
+ ilm.CameraFormat = LIBRAW_FORMAT_APSC;
137
+ ilm.CameraMount = LIBRAW_MOUNT_Canon_EF;
138
+ }
139
+ }
140
+
141
+ int CanonCameraInfo_checkFirmwareRecordLocation (uchar *offset) {
142
+ // firmware record location allows
143
+ // to determine the subversion of the CameraInfo table
144
+ // and to adjust offsets accordingly
145
+ if (
146
+ isdigit(*offset) &&
147
+ isdigit(*(offset+2)) &&
148
+ isdigit(*(offset+4)) &&
149
+ (*(offset+1) == '.') &&
150
+ (*(offset+3) == '.') &&
151
+ ((*(offset+5) == 0) || isspace(*(offset+5)))
152
+ ) return 1;
153
+ else return 0; // error
154
+ }
155
+
156
+ void LibRaw::processCanonCameraInfo(unsigned long long id, uchar *CameraInfo,
157
+ unsigned maxlen, unsigned type, unsigned dng_writer)
158
+ {
159
+ ushort iCanonLensID = 0, iCanonMaxFocal = 0, iCanonMinFocal = 0,
160
+ iCanonLens = 0, iCanonCurFocal = 0, iCanonFocalType = 0,
161
+ iMakernotesFlip = 0,
162
+ iHTP = 0, iALO = 0;
163
+ short SubVersion_offset = 0;
164
+ ushort SubVersion = 0, mgck = 0;
165
+
166
+ if (maxlen < 16)
167
+ return; // too short
168
+
169
+ mgck = sget2(CameraInfo);
170
+ CameraInfo[0] = 0;
171
+ CameraInfo[1] = 0;
172
+ if (tagtypeIs(LIBRAW_EXIFTAG_TYPE_LONG)) {
173
+ if ((maxlen == 94) || (maxlen == 138) || (maxlen == 148) ||
174
+ (maxlen == 156) || (maxlen == 162) || (maxlen == 167) ||
175
+ (maxlen == 171) || (maxlen == 264) || (maxlen > 400))
176
+ imCommon.CameraTemperature = float(sget4(CameraInfo + ((maxlen - 3) << 2)));
177
+ else if (maxlen == 72)
178
+ imCommon.CameraTemperature = float(sget4(CameraInfo + ((maxlen - 1) << 2)));
179
+ else if ((maxlen == 85) || (maxlen == 93))
180
+ imCommon.CameraTemperature = float(sget4(CameraInfo + ((maxlen - 2) << 2)));
181
+ else if ((maxlen == 96) || (maxlen == 104))
182
+ imCommon.CameraTemperature = float(sget4(CameraInfo + ((maxlen - 4) << 2)));
183
+ }
184
+
185
+ switch (id)
186
+ {
187
+ case CanonID_EOS_1D:
188
+ case CanonID_EOS_1Ds:
189
+ iCanonCurFocal = 0x0a;
190
+ iCanonLensID = 0x0d;
191
+ iCanonMinFocal = 0x0e;
192
+ iCanonMaxFocal = 0x10;
193
+ if (!ilm.CurFocal)
194
+ ilm.CurFocal = sget2(CameraInfo + iCanonCurFocal);
195
+ if (!ilm.MinFocal)
196
+ ilm.MinFocal = sget2(CameraInfo + iCanonMinFocal);
197
+ if (!ilm.MaxFocal)
198
+ ilm.MaxFocal = sget2(CameraInfo + iCanonMaxFocal);
199
+ imCommon.CameraTemperature = 0.0f;
200
+ break;
201
+
202
+ case CanonID_EOS_1D_Mark_II:
203
+ case CanonID_EOS_1Ds_Mark_II:
204
+ iCanonCurFocal = 0x09;
205
+ iCanonLensID = 0x0c;
206
+ iCanonMinFocal = 0x11;
207
+ iCanonMaxFocal = 0x13;
208
+ iCanonFocalType = 0x2d;
209
+ break;
210
+
211
+ case CanonID_EOS_1D_Mark_II_N:
212
+ iCanonCurFocal = 0x09;
213
+ iCanonLensID = 0x0c;
214
+ iCanonMinFocal = 0x11;
215
+ iCanonMaxFocal = 0x13;
216
+ break;
217
+
218
+ case CanonID_EOS_1D_Mark_III:
219
+ case CanonID_EOS_1Ds_Mark_III:
220
+ iCanonCurFocal = 0x1d;
221
+ iMakernotesFlip = 0x30;
222
+ iCanonLensID = 0x111;
223
+ iCanonMinFocal = 0x113;
224
+ iCanonMaxFocal = 0x115;
225
+ break;
226
+
227
+ case CanonID_EOS_1D_Mark_IV:
228
+ if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x1e8))
229
+ SubVersion = 1;
230
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x1ed))
231
+ SubVersion = 2;
232
+ // printf ("==>> CanonID_EOS_1D_Mark_IV, SubVersion: %d\n", SubVersion);
233
+ iHTP = 0x07;
234
+ iCanonCurFocal = 0x1e;
235
+ iMakernotesFlip = 0x35;
236
+
237
+ if (!SubVersion)
238
+ break;
239
+ else if (SubVersion < 2)
240
+ SubVersion_offset += -1;
241
+
242
+ iCanonLensID = 0x14f+SubVersion_offset;
243
+ iCanonMinFocal = 0x151+SubVersion_offset;
244
+ iCanonMaxFocal = 0x153+SubVersion_offset;
245
+ break;
246
+
247
+ case CanonID_EOS_1D_X:
248
+ if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x271))
249
+ SubVersion = 1;
250
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x279))
251
+ SubVersion = 2;
252
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x280))
253
+ SubVersion = 3;
254
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x285))
255
+ SubVersion = 4;
256
+ // printf ("==>> CanonID_EOS_1D_X, SubVersion: %d\n", SubVersion);
257
+
258
+ if (SubVersion < 3)
259
+ SubVersion_offset += -3;
260
+
261
+ iCanonCurFocal = 0x23+SubVersion_offset;
262
+ iMakernotesFlip = 0x7d+SubVersion_offset;
263
+
264
+ if (SubVersion < 3)
265
+ SubVersion_offset += -4;
266
+ else if (SubVersion == 4)
267
+ SubVersion_offset += 5;
268
+
269
+ iCanonLensID = 0x1a7+SubVersion_offset;
270
+ iCanonMinFocal = 0x1a9+SubVersion_offset;
271
+ iCanonMaxFocal = 0x1ab+SubVersion_offset;
272
+ break;
273
+
274
+ case CanonID_EOS_5D:
275
+ iMakernotesFlip = 0x27;
276
+ iCanonCurFocal = 0x28;
277
+ iCanonLensID = 0x0c;
278
+ if (!sget2Rev(CameraInfo + iCanonLensID))
279
+ iCanonLensID = 0x97;
280
+ iCanonMinFocal = 0x93;
281
+ iCanonMaxFocal = 0x95;
282
+ break;
283
+
284
+ case CanonID_EOS_5D_Mark_II:
285
+ iHTP = 0x07;
286
+ iCanonCurFocal = 0x1e;
287
+ iMakernotesFlip = 0x31;
288
+ iALO = 0xbf;
289
+ iCanonLensID = 0xe6;
290
+ iCanonMinFocal = 0xe8;
291
+ iCanonMaxFocal = 0xea;
292
+ break;
293
+
294
+ case CanonID_EOS_5D_Mark_III:
295
+ if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x22c))
296
+ SubVersion = 1;
297
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x22d))
298
+ SubVersion = 2;
299
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x23c))
300
+ SubVersion = 3;
301
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x242))
302
+ SubVersion = 4;
303
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x247))
304
+ SubVersion = 5;
305
+ // printf ("==>> CanonID_EOS_5D_Mark_III, SubVersion: %d\n", SubVersion);
306
+
307
+ if (!SubVersion)
308
+ break;
309
+ else if (SubVersion < 3)
310
+ SubVersion_offset += -1;
311
+
312
+ iCanonCurFocal = 0x23+SubVersion_offset;
313
+
314
+ if (SubVersion == 1)
315
+ SubVersion_offset += -3;
316
+ else if (SubVersion == 2)
317
+ SubVersion_offset += -2;
318
+ else if (SubVersion >= 4)
319
+ SubVersion_offset += 6;
320
+
321
+ iMakernotesFlip = 0x7d+SubVersion_offset;
322
+
323
+ if (SubVersion < 3)
324
+ SubVersion_offset += -4;
325
+ else if (SubVersion > 4)
326
+ SubVersion_offset += 5;
327
+
328
+ iCanonLensID = 0x153+SubVersion_offset;
329
+ iCanonMinFocal = 0x155+SubVersion_offset;
330
+ iCanonMaxFocal = 0x157+SubVersion_offset;
331
+ break;
332
+
333
+ case CanonID_EOS_6D:
334
+ iCanonCurFocal = 0x23;
335
+ iMakernotesFlip = 0x83;
336
+ iCanonLensID = 0x161;
337
+ iCanonMinFocal = 0x163;
338
+ iCanonMaxFocal = 0x165;
339
+ break;
340
+
341
+ case CanonID_EOS_7D:
342
+ if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x1a8))
343
+ SubVersion = 1;
344
+ else if (CanonCameraInfo_checkFirmwareRecordLocation(CameraInfo + 0x1ac))
345
+ SubVersion = 2;
346
+ // printf ("==>> CanonID_EOS_7D, SubVersion: %d\n", SubVersion);
347
+ iHTP = 0x07;
348
+ iCanonCurFocal = 0x1e;
349
+
350
+ if (!SubVersion)
351
+ break;
352
+ else if (SubVersion < 2)
353
+ SubVersion_offset += -4;
354
+
355
+ iMakernotesFlip = 0x35+SubVersion_offset;
356
+ iCanonLensID = 0x112+SubVersion_offset;
357
+ iCanonMinFocal = 0x114+SubVersion_offset;
358
+ iCanonMaxFocal = 0x116+SubVersion_offset;
359
+ break;
360
+
361
+ case CanonID_EOS_40D:
362
+ iCanonCurFocal = 0x1d;
363
+ iMakernotesFlip = 0x30;
364
+ iCanonLensID = 0xd6;
365
+ iCanonMinFocal = 0xd8;
366
+ iCanonMaxFocal = 0xda;
367
+ iCanonLens = 0x92b;
368
+ break;
369
+
370
+ case CanonID_EOS_50D:
371
+ iHTP = 0x07;
372
+ iCanonCurFocal = 0x1e;
373
+ iMakernotesFlip = 0x31;
374
+ iALO = 0xbf;
375
+ iCanonLensID = 0xea;
376
+ iCanonMinFocal = 0xec;
377
+ iCanonMaxFocal = 0xee;
378
+ break;
379
+
380
+ case CanonID_EOS_60D:
381
+ case CanonID_EOS_1200D:
382
+ iCanonCurFocal = 0x1e;
383
+ if (id == CanonID_EOS_60D)
384
+ iMakernotesFlip = 0x36;
385
+ else
386
+ iMakernotesFlip = 0x3a;
387
+ iCanonLensID = 0xe8;
388
+ iCanonMinFocal = 0xea;
389
+ iCanonMaxFocal = 0xec;
390
+ break;
391
+
392
+ case CanonID_EOS_70D:
393
+ iCanonCurFocal = 0x23;
394
+ iMakernotesFlip = 0x84;
395
+ iCanonLensID = 0x166;
396
+ iCanonMinFocal = 0x168;
397
+ iCanonMaxFocal = 0x16a;
398
+ break;
399
+
400
+ case CanonID_EOS_80D:
401
+ iCanonCurFocal = 0x23;
402
+ iMakernotesFlip = 0x96;
403
+ iCanonLensID = 0x189;
404
+ iCanonMinFocal = 0x18b;
405
+ iCanonMaxFocal = 0x18d;
406
+ break;
407
+
408
+ case CanonID_EOS_450D:
409
+ iCanonCurFocal = 0x1d;
410
+ iMakernotesFlip = 0x30;
411
+ iCanonLensID = 0xde;
412
+ iCanonLens = 0x933;
413
+ break;
414
+
415
+ case CanonID_EOS_500D:
416
+ iHTP = 0x07;
417
+ iCanonCurFocal = 0x1e;
418
+ iMakernotesFlip = 0x31;
419
+ iALO = 0xbe;
420
+ iCanonLensID = 0xf6;
421
+ iCanonMinFocal = 0xf8;
422
+ iCanonMaxFocal = 0xfa;
423
+ break;
424
+
425
+ case CanonID_EOS_550D:
426
+ iHTP = 0x07;
427
+ iCanonCurFocal = 0x1e;
428
+ iMakernotesFlip = 0x35;
429
+ iCanonLensID = 0xff;
430
+ iCanonMinFocal = 0x101;
431
+ iCanonMaxFocal = 0x103;
432
+ break;
433
+
434
+ case CanonID_EOS_600D:
435
+ case CanonID_EOS_1100D:
436
+ iHTP = 0x07;
437
+ iCanonCurFocal = 0x1e;
438
+ iMakernotesFlip = 0x38;
439
+ iCanonLensID = 0xea;
440
+ iCanonMinFocal = 0xec;
441
+ iCanonMaxFocal = 0xee;
442
+ break;
443
+
444
+ case CanonID_EOS_650D:
445
+ case CanonID_EOS_700D:
446
+ iCanonCurFocal = 0x23;
447
+ iMakernotesFlip = 0x7d;
448
+ iCanonLensID = 0x127;
449
+ iCanonMinFocal = 0x129;
450
+ iCanonMaxFocal = 0x12b;
451
+ break;
452
+
453
+ case CanonID_EOS_750D:
454
+ case CanonID_EOS_760D:
455
+ iCanonCurFocal = 0x23;
456
+ iMakernotesFlip = 0x96;
457
+ iCanonLensID = 0x184;
458
+ iCanonMinFocal = 0x186;
459
+ iCanonMaxFocal = 0x188;
460
+ break;
461
+
462
+ case CanonID_EOS_1000D:
463
+ iCanonCurFocal = 0x1d;
464
+ iMakernotesFlip = 0x30;
465
+ iCanonLensID = 0xe2;
466
+ iCanonMinFocal = 0xe4;
467
+ iCanonMaxFocal = 0xe6;
468
+ iCanonLens = 0x937;
469
+ break;
470
+ }
471
+
472
+ if (iMakernotesFlip && (CameraInfo[iMakernotesFlip] < 3)) {
473
+ imCanon.MakernotesFlip = "065"[CameraInfo[iMakernotesFlip]] - '0';
474
+ // printf ("==>> iMakernotesFlip: 0x%x, flip: %d\n", iMakernotesFlip, imCanon.MakernotesFlip);
475
+ } else if (tagtypeIs(LIBRAW_EXIFTAG_TYPE_UNDEFINED) &&
476
+ (mgck == 0xaaaa) && (dng_writer == nonDNG)) { // CameraOrientation
477
+ int c, i;
478
+ for (i = 2; (sget2(CameraInfo+i) != 0xbbbb) && i < (int)maxlen; i++);
479
+ i+=2;
480
+ while (i < int(maxlen - 5))
481
+ if ((sget4(CameraInfo+i) == 257) && ((c = CameraInfo[i+8]) < 3)) {
482
+ imCanon.MakernotesFlip = "065"[c] - '0';
483
+ // printf ("==>> MakernotesFlip offset: 0x%x, flip: %d\n", i+8, imCanon.MakernotesFlip);
484
+ break;
485
+ } else i+=4;
486
+ }
487
+
488
+ if (iHTP)
489
+ {
490
+ imCanon.HighlightTonePriority = CameraInfo[iHTP];
491
+ if ((imCanon.HighlightTonePriority > 5) ||
492
+ (imCanon.HighlightTonePriority < 0))
493
+ imCanon.HighlightTonePriority = 0;
494
+ if (imCanon.HighlightTonePriority) {
495
+ imCommon.ExposureCalibrationShift -= float(imCanon.HighlightTonePriority);
496
+ }
497
+ }
498
+ if (iALO)
499
+ {
500
+ imCanon.AutoLightingOptimizer = CameraInfo[iALO];
501
+ if ((imCanon.AutoLightingOptimizer > 3) ||
502
+ (imCanon.AutoLightingOptimizer < 0))
503
+ imCanon.AutoLightingOptimizer = 3;
504
+ }
505
+ if (iCanonFocalType)
506
+ {
507
+ if (iCanonFocalType >= maxlen)
508
+ return; // broken;
509
+ ilm.FocalType = CameraInfo[iCanonFocalType];
510
+ if (!ilm.FocalType) // zero means 'prime' here, replacing with standard '1'
511
+ ilm.FocalType = LIBRAW_FT_PRIME_LENS;
512
+ }
513
+ if (!ilm.CurFocal && iCanonCurFocal)
514
+ {
515
+ if (iCanonCurFocal >= maxlen)
516
+ return; // broken;
517
+ ilm.CurFocal = sget2Rev(CameraInfo + iCanonCurFocal);
518
+ }
519
+ if (!ilm.LensID && iCanonLensID)
520
+ {
521
+ if (iCanonLensID >= maxlen)
522
+ return; // broken;
523
+ ilm.LensID = sget2Rev(CameraInfo + iCanonLensID);
524
+ }
525
+ if (!ilm.MinFocal && iCanonMinFocal)
526
+ {
527
+ if (iCanonMinFocal >= maxlen)
528
+ return; // broken;
529
+ ilm.MinFocal = sget2Rev(CameraInfo + iCanonMinFocal);
530
+ }
531
+ if (!ilm.MaxFocal && iCanonMaxFocal)
532
+ {
533
+ if (iCanonMaxFocal >= maxlen)
534
+ return; // broken;
535
+ ilm.MaxFocal = sget2Rev(CameraInfo + iCanonMaxFocal);
536
+ }
537
+ if (!ilm.Lens[0] && iCanonLens)
538
+ {
539
+ if (iCanonLens + 64 >= (int)maxlen) // broken;
540
+ return;
541
+
542
+ char *pl = (char *)CameraInfo + iCanonLens;
543
+ if (!strncmp(pl, "EF-S", 4))
544
+ {
545
+ memcpy(ilm.Lens, pl, 4);
546
+ ilm.Lens[4] = ' ';
547
+ memcpy(ilm.LensFeatures_pre, pl, 4);
548
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF_S;
549
+ ilm.LensFormat = LIBRAW_FORMAT_APSC;
550
+ memcpy(ilm.Lens + 5, pl + 4, 60);
551
+ }
552
+ else if (!strncmp(pl, "EF-M", 4))
553
+ {
554
+ memcpy(ilm.Lens, pl, 4);
555
+ ilm.Lens[4] = ' ';
556
+ memcpy(ilm.LensFeatures_pre, pl, 4);
557
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF_M;
558
+ ilm.LensFormat = LIBRAW_FORMAT_APSC;
559
+ memcpy(ilm.Lens + 5, pl + 4, 60);
560
+ }
561
+ else if (!strncmp(pl, "EF", 2))
562
+ {
563
+ memcpy(ilm.Lens, pl, 2);
564
+ ilm.Lens[2] = ' ';
565
+ memcpy(ilm.LensFeatures_pre, pl, 2);
566
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
567
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
568
+ memcpy(ilm.Lens + 3, pl + 2, 62);
569
+ }
570
+ else if (!strncmp(ilm.Lens, "CN-E", 4))
571
+ {
572
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 60);
573
+ ilm.Lens[4] = ' ';
574
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
575
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
576
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
577
+ }
578
+ else if (!strncmp(pl, "TS-E", 4))
579
+ {
580
+ memcpy(ilm.Lens, pl, 4);
581
+ ilm.Lens[4] = ' ';
582
+ memcpy(ilm.LensFeatures_pre, pl, 4);
583
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
584
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
585
+ memcpy(ilm.Lens + 5, pl + 4, 60);
586
+ }
587
+ else if (!strncmp(pl, "MP-E", 4))
588
+ {
589
+ memcpy(ilm.Lens, pl, 4);
590
+ ilm.Lens[4] = ' ';
591
+ memcpy(ilm.LensFeatures_pre, pl, 4);
592
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
593
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
594
+ memcpy(ilm.Lens + 5, pl + 4, 60);
595
+ }
596
+ else // non-Canon lens
597
+ memcpy(ilm.Lens, pl, 64);
598
+ }
599
+ return;
600
+ }
601
+
602
+ void LibRaw::Canon_CameraSettings(unsigned len)
603
+ {
604
+ fseek(ifp, 6, SEEK_CUR);
605
+ imCanon.Quality = get2(); // 3
606
+ get2();
607
+ imgdata.shootinginfo.DriveMode = get2(); // 5
608
+ get2();
609
+ imgdata.shootinginfo.FocusMode = get2(); // 7
610
+ imCanon.RecordMode = (get2(), get2()); // 9, format
611
+ fseek(ifp, 14, SEEK_CUR);
612
+ imgdata.shootinginfo.MeteringMode = get2(); // 17
613
+ get2();
614
+ imgdata.shootinginfo.AFPoint = get2(); // 19
615
+ imgdata.shootinginfo.ExposureMode = get2(); // 20
616
+ get2();
617
+ ilm.LensID = get2(); // 22
618
+ ilm.MaxFocal = get2(); // 23
619
+ ilm.MinFocal = get2(); // 24
620
+ ilm.FocalUnits = get2(); // 25
621
+ if (ilm.FocalUnits > 1)
622
+ {
623
+ ilm.MaxFocal /= (float)ilm.FocalUnits;
624
+ ilm.MinFocal /= (float)ilm.FocalUnits;
625
+ }
626
+ ilm.MaxAp = _CanonConvertAperture(get2()); // 26
627
+ ilm.MinAp = _CanonConvertAperture(get2()); // 27
628
+ if (len >= 36)
629
+ {
630
+ fseek(ifp, 12, SEEK_CUR);
631
+ imgdata.shootinginfo.ImageStabilization = get2(); // 34
632
+ }
633
+ else
634
+ return;
635
+ if (len >= 48)
636
+ {
637
+ fseek(ifp, 22, SEEK_CUR);
638
+ imCanon.SRAWQuality = get2(); // 46
639
+ }
640
+ }
641
+
642
+ void LibRaw::Canon_WBpresets(int skip1, int skip2)
643
+ {
644
+ int c;
645
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_Daylight][RGGB_2_RGBG(c)] = get2();
646
+
647
+ if (skip1)
648
+ fseek(ifp, skip1, SEEK_CUR);
649
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_Shade][RGGB_2_RGBG(c)] = get2();
650
+
651
+ if (skip1)
652
+ fseek(ifp, skip1, SEEK_CUR);
653
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_Cloudy][RGGB_2_RGBG(c)] = get2();
654
+
655
+ if (skip1)
656
+ fseek(ifp, skip1, SEEK_CUR);
657
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_Tungsten][RGGB_2_RGBG(c)] = get2();
658
+
659
+ if (skip1)
660
+ fseek(ifp, skip1, SEEK_CUR);
661
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_FL_W][RGGB_2_RGBG(c)] = get2();
662
+
663
+ if (skip2)
664
+ fseek(ifp, skip2, SEEK_CUR);
665
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_Flash][RGGB_2_RGBG(c)] = get2();
666
+
667
+ return;
668
+ }
669
+
670
+ void LibRaw::Canon_WBCTpresets(short WBCTversion)
671
+ {
672
+
673
+ int i;
674
+ float norm;
675
+
676
+ if (WBCTversion == 0)
677
+ { // tint, as shot R, as shot B, CСT
678
+ for (i = 0; i < 15; i++)
679
+ {
680
+ icWBCCTC[i][2] = icWBCCTC[i][4] = 1.0f;
681
+ fseek(ifp, 2, SEEK_CUR);
682
+ icWBCCTC[i][1] = 1024.0f / fMAX(get2(), 1.f);
683
+ icWBCCTC[i][3] = 1024.0f / fMAX(get2(), 1.f);
684
+ icWBCCTC[i][0] = get2();
685
+ }
686
+ }
687
+ else if (WBCTversion == 1)
688
+ { // as shot R, as shot B, tint, CСT
689
+ for (i = 0; i < 15; i++)
690
+ {
691
+ icWBCCTC[i][2] = icWBCCTC[i][4] = 1.0f;
692
+ icWBCCTC[i][1] = 1024.0f / fMAX(get2(), 1.f);
693
+ icWBCCTC[i][3] = 1024.0f / fMAX(get2(), 1.f);
694
+ fseek(ifp, 2, SEEK_CUR);
695
+ icWBCCTC[i][0] = get2();
696
+ }
697
+ }
698
+ else if (WBCTversion == 2)
699
+ { // tint, offset, as shot R, as shot B, CСT
700
+ if ((unique_id == CanonID_EOS_M3) ||
701
+ (unique_id == CanonID_EOS_M10) ||
702
+ (imCanon.ColorDataSubVer == 0xfffc))
703
+ {
704
+ for (i = 0; i < 15; i++)
705
+ {
706
+ fseek(ifp, 4, SEEK_CUR);
707
+ icWBCCTC[i][2] = icWBCCTC[i][4] =
708
+ 1.0f;
709
+ icWBCCTC[i][1] = 1024.0f / fMAX(1.f, get2());
710
+ icWBCCTC[i][3] = 1024.0f / fMAX(1.f, get2());
711
+ icWBCCTC[i][0] = get2();
712
+ }
713
+ }
714
+ else if (imCanon.ColorDataSubVer == 0xfffd)
715
+ {
716
+ for (i = 0; i < 15; i++)
717
+ {
718
+ fseek(ifp, 2, SEEK_CUR);
719
+ norm = (signed short)get2();
720
+ norm = 512.0f + norm / 8.0f;
721
+ icWBCCTC[i][2] = icWBCCTC[i][4] =
722
+ 1.0f;
723
+ icWBCCTC[i][1] = (float)get2();
724
+ if (norm > 0.001f)
725
+ icWBCCTC[i][1] /= norm;
726
+ icWBCCTC[i][3] = (float)get2();
727
+ if (norm > 0.001f)
728
+ icWBCCTC[i][3] /= norm;
729
+ icWBCCTC[i][0] = get2();
730
+ }
731
+ }
732
+ }
733
+ return;
734
+ }
735
+
736
+ void LibRaw::parseCanonMakernotes(unsigned tag, unsigned /*type*/, unsigned len, unsigned dng_writer)
737
+ {
738
+
739
+ #define AsShot_Auto_MeasuredWB(offset) \
740
+ imCanon.ColorDataSubVer = get2(); \
741
+ fseek(ifp, save1 + (offset << 1), SEEK_SET); \
742
+ FORC4 cam_mul[RGGB_2_RGBG(c)] = (float)get2(); \
743
+ get2(); \
744
+ FORC4 icWBC[LIBRAW_WBI_Auto][RGGB_2_RGBG(c)] = get2(); \
745
+ get2(); \
746
+ FORC4 icWBC[LIBRAW_WBI_Measured][RGGB_2_RGBG(c)] = get2();
747
+
748
+ #define sRAW_WB(offset) \
749
+ fseek(ifp, save1 + (offset << 1), SEEK_SET); \
750
+ FORC4 { \
751
+ sraw_mul[RGGB_2_RGBG(c)] = get2(); \
752
+ if ((float)sraw_mul[RGGB_2_RGBG(c)] > sraw_mul_max) { \
753
+ sraw_mul_max = (float)sraw_mul[RGGB_2_RGBG(c)]; \
754
+ } \
755
+ } \
756
+ sraw_mul_max /= 1024.f; \
757
+ FORC4 sraw_mul[c] = (ushort)((float)sraw_mul[c] * sraw_mul_max);
758
+
759
+ #define CR3_ColorData(offset) \
760
+ fseek(ifp, save1 + ((offset+0x0041) << 1), SEEK_SET); \
761
+ Canon_WBpresets(2, 12); \
762
+ fseek(ifp, save1 + ((offset+0x00c3) << 1), SEEK_SET); \
763
+ Canon_WBCTpresets(0); \
764
+ offsetChannelBlackLevel2 = save1 + ((offset+0x0102) << 1); \
765
+ offsetChannelBlackLevel = save1 + ((offset+0x02d1) << 1); \
766
+ offsetWhiteLevels = save1 + ((offset+0x02d5) << 1);
767
+
768
+ int c;
769
+ unsigned i;
770
+
771
+ if (tag == 0x0001) {
772
+ Canon_CameraSettings(len);
773
+
774
+ } else if (tag == 0x0002) { // focal length
775
+ ilm.FocalType = get2();
776
+ ilm.CurFocal = get2();
777
+ if (ilm.FocalUnits > 1) {
778
+ ilm.CurFocal /= (float)ilm.FocalUnits;
779
+ }
780
+
781
+ } else if (tag == 0x0004) { // subdir, ShotInfo
782
+ short tempAp;
783
+ if (dng_writer == nonDNG) {
784
+ get2();
785
+ imCanon.ISOgain[0] = get2();
786
+ imCanon.ISOgain[1] = get2();
787
+ if (imCanon.ISOgain[1] != 0x7fff) {
788
+ imCommon.real_ISO = floorf(100.f * libraw_powf64l(2.f, float(imCanon.ISOgain[0]+imCanon.ISOgain[1]) / 32.f - 5.f));
789
+ if (!iso_speed || (iso_speed == 65535))
790
+ iso_speed = imCommon.real_ISO;
791
+ }
792
+ get4();
793
+ if (((i = get2()) != 0xffff) && !shutter) {
794
+ shutter = libraw_powf64l(2.f, float((short)i) / -32.0f);
795
+ }
796
+ imCanon.wbi = (get2(), get2());
797
+ shot_order = (get2(), get2());
798
+ fseek(ifp, 4, SEEK_CUR);
799
+ } else
800
+ fseek(ifp, 24, SEEK_CUR);
801
+ tempAp = get2();
802
+ if (tempAp != 0)
803
+ imCommon.CameraTemperature = (float)(tempAp - 128);
804
+ tempAp = get2();
805
+ if (tempAp != -1)
806
+ imCommon.FlashGN = ((float)tempAp) / 32;
807
+ get2();
808
+
809
+ imCommon.FlashEC = _CanonConvertEV((signed short)get2());
810
+ fseek(ifp, 8 - 32, SEEK_CUR);
811
+ if ((tempAp = get2()) != 0x7fff)
812
+ ilm.CurAp = _CanonConvertAperture(tempAp);
813
+ if (ilm.CurAp < 0.7f) {
814
+ fseek(ifp, 32, SEEK_CUR);
815
+ ilm.CurAp = _CanonConvertAperture(get2());
816
+ }
817
+ if (!aperture)
818
+ aperture = ilm.CurAp;
819
+
820
+ } else if ((tag == 0x0007) && (dng_writer == nonDNG)) {
821
+ fgets(model2, 64, ifp);
822
+
823
+ } else if ((tag == 0x0008) && (dng_writer == nonDNG)) {
824
+ shot_order = get4();
825
+
826
+ } else if ((tag == 0x0009) && (dng_writer == nonDNG)) {
827
+ fread(artist, 64, 1, ifp);
828
+
829
+ } else if (tag == 0x000c) {
830
+ unsigned tS = get4();
831
+ sprintf(imgdata.shootinginfo.BodySerial, "%d", tS);
832
+
833
+ } else if ((tag == 0x0012) ||
834
+ (tag == 0x0026) ||
835
+ (tag == 0x003c)) {
836
+ if (!imCommon.afcount) {
837
+ imCommon.afdata[imCommon.afcount].AFInfoData_tag = tag;
838
+ imCommon.afdata[imCommon.afcount].AFInfoData_order = order;
839
+ imCommon.afdata[imCommon.afcount].AFInfoData_length = len;
840
+ imCommon.afdata[imCommon.afcount].AFInfoData = (uchar *)calloc(imCommon.afdata[imCommon.afcount].AFInfoData_length,1);
841
+ fread(imCommon.afdata[imCommon.afcount].AFInfoData, imCommon.afdata[imCommon.afcount].AFInfoData_length, 1, ifp);
842
+ imCommon.afcount = 1;
843
+ }
844
+
845
+ } else if ((tag == 0x0029) && (dng_writer == nonDNG)) { // PowerShot G9
846
+ int Got_AsShotWB = 0;
847
+ fseek(ifp, 8, SEEK_CUR);
848
+ for (unsigned linenum = 0; linenum < Canon_G9_linenums_2_StdWBi.size(); linenum++) {
849
+ if (Canon_G9_linenums_2_StdWBi[linenum] != LIBRAW_WBI_Unknown ) {
850
+ FORC4 icWBC[Canon_G9_linenums_2_StdWBi[linenum]][GRBG_2_RGBG(c)] = get4();
851
+ if (Canon_wbi2std[imCanon.wbi] == Canon_G9_linenums_2_StdWBi[linenum]) {
852
+ FORC4 cam_mul[c] = float(icWBC[Canon_G9_linenums_2_StdWBi[linenum]][c]);
853
+ Got_AsShotWB = 1;
854
+ }
855
+ }
856
+ fseek(ifp, 16, SEEK_CUR);
857
+ }
858
+ if (!Got_AsShotWB)
859
+ FORC4 cam_mul[c] = float(icWBC[LIBRAW_WBI_Auto][c]);
860
+
861
+ } else if ((tag == 0x0081) && (dng_writer == nonDNG)) { // -1D, -1Ds
862
+ data_offset = get4();
863
+ fseek(ifp, data_offset + 41, SEEK_SET);
864
+ raw_height = get2() * 2;
865
+ raw_width = get2();
866
+ filters = 0x61616161;
867
+
868
+ } else if (tag == 0x0093) {
869
+ if (!imCanon.RF_lensID) {
870
+ fseek(ifp, 0x03d<<1, SEEK_CUR);
871
+ imCanon.RF_lensID = get2();
872
+ }
873
+
874
+ } else if (tag == 0x0095 && !ilm.Lens[0])
875
+ { // lens model tag
876
+ fread(ilm.Lens, 64, 1, ifp);
877
+ if (!strncmp(ilm.Lens, "EF-S", 4))
878
+ {
879
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 60);
880
+ ilm.Lens[4] = ' ';
881
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
882
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF_S;
883
+ ilm.LensFormat = LIBRAW_FORMAT_APSC;
884
+ }
885
+ else if (!strncmp(ilm.Lens, "EF-M", 4))
886
+ {
887
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 60);
888
+ ilm.Lens[4] = ' ';
889
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
890
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF_M;
891
+ ilm.LensFormat = LIBRAW_FORMAT_APSC;
892
+ }
893
+ else if (!strncmp(ilm.Lens, "EF", 2))
894
+ {
895
+ memmove(ilm.Lens + 3, ilm.Lens + 2, 62);
896
+ ilm.Lens[2] = ' ';
897
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 2);
898
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
899
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
900
+ }
901
+ else if (!strncmp(ilm.Lens, "CN-E", 4))
902
+ {
903
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 60);
904
+ ilm.Lens[4] = ' ';
905
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
906
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
907
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
908
+ }
909
+ else if (!strncmp(ilm.Lens, "TS-E", 4))
910
+ {
911
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 60);
912
+ ilm.Lens[4] = ' ';
913
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
914
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
915
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
916
+ }
917
+ else if (!strncmp(ilm.Lens, "MP-E", 4))
918
+ {
919
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 60);
920
+ ilm.Lens[4] = ' ';
921
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
922
+ ilm.LensMount = LIBRAW_MOUNT_Canon_EF;
923
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
924
+ }
925
+
926
+ else if (!strncmp(ilm.Lens, "RF-S", 4))
927
+ {
928
+ memmove(ilm.Lens + 5, ilm.Lens + 4, 62);
929
+ ilm.Lens[4] = ' ';
930
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 4);
931
+ ilm.LensMount = LIBRAW_MOUNT_Canon_RF;
932
+ ilm.LensFormat = LIBRAW_FORMAT_APSC;
933
+ }
934
+
935
+ else if (!strncmp(ilm.Lens, "RF", 2))
936
+ {
937
+ memmove(ilm.Lens + 3, ilm.Lens + 2, 62);
938
+ ilm.Lens[2] = ' ';
939
+ memcpy(ilm.LensFeatures_pre, ilm.Lens, 2);
940
+ ilm.LensMount = LIBRAW_MOUNT_Canon_RF;
941
+ ilm.LensFormat = LIBRAW_FORMAT_FF;
942
+ }
943
+ }
944
+ else if (tag == 0x009a)
945
+ { // AspectInfo
946
+ i = get4();
947
+ switch (i)
948
+ {
949
+ case 0:
950
+ case 12: /* APS-H crop */
951
+ case 13: /* APS-C crop */
952
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_3to2;
953
+ break;
954
+ case 1:
955
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_1to1;
956
+ break;
957
+ case 2:
958
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_4to3;
959
+ break;
960
+ case 7:
961
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_16to9;
962
+ break;
963
+ case 8:
964
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_5to4;
965
+ break;
966
+ default:
967
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_OTHER;
968
+ break;
969
+ }
970
+ imgdata.sizes.raw_inset_crops[0].cwidth = get4();
971
+ imgdata.sizes.raw_inset_crops[0].cheight = get4();
972
+ imgdata.sizes.raw_inset_crops[0].cleft = get4();
973
+ imgdata.sizes.raw_inset_crops[0].ctop = get4();
974
+
975
+ } else if ((tag == 0x00a4) && (dng_writer == nonDNG)) { // -1D, -1Ds
976
+ fseek(ifp, imCanon.wbi * 48, SEEK_CUR);
977
+ FORC3 cam_mul[c] = get2();
978
+
979
+ } else if (tag == 0x00a9) {
980
+ INT64 save1 = ftell(ifp);
981
+ fseek(ifp, (0x1 << 1), SEEK_CUR);
982
+ FORC4 imgdata.color.WB_Coeffs[LIBRAW_WBI_Auto][RGGB_2_RGBG(c)] = get2();
983
+ Canon_WBpresets(0, 0);
984
+ fseek(ifp, save1, SEEK_SET);
985
+ }
986
+ else if (tag == 0x00b4)
987
+ {
988
+ switch (get2()) {
989
+ case 1:
990
+ imCommon.ColorSpace = LIBRAW_COLORSPACE_sRGB;
991
+ break;
992
+ case 2:
993
+ imCommon.ColorSpace = LIBRAW_COLORSPACE_AdobeRGB;
994
+ break;
995
+ default:
996
+ imCommon.ColorSpace = LIBRAW_COLORSPACE_Unknown;
997
+ break;
998
+ }
999
+ }
1000
+ else if (tag == 0x00e0) // SensorInfo
1001
+ {
1002
+ imCanon.SensorWidth = (get2(), get2());
1003
+ imCanon.SensorHeight = get2();
1004
+ fseek(ifp, 4, SEEK_CUR);
1005
+ imCanon.DefaultCropAbsolute = get_CanonArea();
1006
+ imCanon.LeftOpticalBlack = get_CanonArea();
1007
+ }
1008
+ else if (tag == 0x4001 && len > 500)
1009
+ {
1010
+ float sraw_mul_max = 0.f;
1011
+ int bls = 0;
1012
+ INT64 offsetChannelBlackLevel = 0L;
1013
+ INT64 offsetChannelBlackLevel2 = 0L;
1014
+ INT64 offsetWhiteLevels = 0L;
1015
+ INT64 save1 = ftell(ifp);
1016
+
1017
+ switch (len)
1018
+ {
1019
+
1020
+ case 582:
1021
+ imCanon.ColorDataVer = 1; // 20D, 350D
1022
+
1023
+ fseek(ifp, save1 + (0x0019 << 1), SEEK_SET);
1024
+ FORC4 cam_mul[RGGB_2_RGBG(c)] = (float)get2();
1025
+ fseek(ifp, save1 + (0x001e << 1), SEEK_SET);
1026
+ FORC4 icWBC[LIBRAW_WBI_Auto][RGGB_2_RGBG(c)] = get2();
1027
+ fseek(ifp, save1 + (0x0041 << 1), SEEK_SET);
1028
+ FORC4 icWBC[LIBRAW_WBI_Custom1][RGGB_2_RGBG(c)] = get2();
1029
+ fseek(ifp, save1 + (0x0046 << 1), SEEK_SET);
1030
+ FORC4 icWBC[LIBRAW_WBI_Custom2][RGGB_2_RGBG(c)] = get2();
1031
+
1032
+ fseek(ifp, save1 + (0x0023 << 1), SEEK_SET);
1033
+ Canon_WBpresets(2, 2);
1034
+ fseek(ifp, save1 + (0x004b << 1), SEEK_SET);
1035
+ Canon_WBCTpresets(1); // ABCT
1036
+ offsetChannelBlackLevel = save1 + (0x00a6 << 1);
1037
+ break;
1038
+
1039
+ case 653:
1040
+ imCanon.ColorDataVer = 2; // -1D Mark II, -1Ds Mark II
1041
+
1042
+ fseek(ifp, save1 + (0x0018 << 1), SEEK_SET);
1043
+ FORC4 icWBC[LIBRAW_WBI_Auto][RGGB_2_RGBG(c)] = get2();
1044
+ fseek(ifp, save1 + (0x0022 << 1), SEEK_SET);
1045
+ FORC4 cam_mul[RGGB_2_RGBG(c)] = (float)get2();
1046
+ fseek(ifp, save1 + (0x0090 << 1), SEEK_SET);
1047
+ FORC4 icWBC[LIBRAW_WBI_Custom1][RGGB_2_RGBG(c)] = get2();
1048
+ fseek(ifp, save1 + (0x0095 << 1), SEEK_SET);
1049
+ FORC4 icWBC[LIBRAW_WBI_Custom2][RGGB_2_RGBG(c)] = get2();
1050
+ fseek(ifp, save1 + (0x009a << 1), SEEK_SET);
1051
+ FORC4 icWBC[LIBRAW_WBI_Custom3][RGGB_2_RGBG(c)] = get2();
1052
+
1053
+ fseek(ifp, save1 + (0x0027 << 1), SEEK_SET);
1054
+ Canon_WBpresets(2, 12);
1055
+ fseek(ifp, save1 + (0x00a4 << 1), SEEK_SET);
1056
+ Canon_WBCTpresets(1); // ABCT
1057
+ offsetChannelBlackLevel = save1 + (0x011e << 1);
1058
+ break;
1059
+
1060
+ case 796:
1061
+ imCanon.ColorDataVer = 3; // -1D Mark II N, 5D, 30D, 400D; ColorDataSubVer: 1
1062
+ AsShot_Auto_MeasuredWB(0x003f);
1063
+
1064
+ fseek(ifp, save1 + (0x0071 << 1), SEEK_SET);
1065
+ FORC4 icWBC[LIBRAW_WBI_Custom1][RGGB_2_RGBG(c)] = get2();
1066
+ fseek(ifp, save1 + (0x0076 << 1), SEEK_SET);
1067
+ FORC4 icWBC[LIBRAW_WBI_Custom2][RGGB_2_RGBG(c)] = get2();
1068
+ fseek(ifp, save1 + (0x007b << 1), SEEK_SET);
1069
+ FORC4 icWBC[LIBRAW_WBI_Custom3][RGGB_2_RGBG(c)] = get2();
1070
+ fseek(ifp, save1 + (0x0080 << 1), SEEK_SET);
1071
+ FORC4 icWBC[LIBRAW_WBI_Custom][RGGB_2_RGBG(c)] = get2();
1072
+
1073
+ fseek(ifp, save1 + (0x004e << 1), SEEK_SET);
1074
+ Canon_WBpresets(2, 12);
1075
+ fseek(ifp, save1 + (0x0085 << 1), SEEK_SET);
1076
+ Canon_WBCTpresets(0); // BCAT
1077
+ offsetChannelBlackLevel = save1 + (0x00c4 << 1);
1078
+ break;
1079
+
1080
+ case 674: // -1D Mark III; ColorDataSubVer: 2
1081
+ case 692: // 40D; ColorDataSubVer: 3
1082
+ case 702: // -1Ds Mark III; ColorDataSubVer: 4
1083
+ case 1227: // 450D, 1000D; ColorDataSubVer: 5
1084
+ case 1250: // 5D Mark II, 50D; ColorDataSubVer: 6
1085
+ case 1251: // 500D; ColorDataSubVer: 7
1086
+ case 1337: // -1D Mark IV, 7D; ColorDataSubVer: 7
1087
+ case 1338: // 550D; ColorDataSubVer: 7
1088
+ case 1346: // 1100D, 60D; ColorDataSubVer: 9
1089
+ imCanon.ColorDataVer = 4;
1090
+ AsShot_Auto_MeasuredWB(0x003f);
1091
+ sRAW_WB(0x004e);
1092
+ fseek(ifp, save1 + (0x0053 << 1), SEEK_SET);
1093
+ Canon_WBpresets(2, 12);
1094
+ fseek(ifp, save1 + (0x00a8 << 1), SEEK_SET);
1095
+ Canon_WBCTpresets(0); // BCAT
1096
+
1097
+ if ((imCanon.ColorDataSubVer == 4) ||
1098
+ (imCanon.ColorDataSubVer == 5))
1099
+ {
1100
+ offsetChannelBlackLevel = save1 + (0x02b4 << 1);
1101
+ offsetWhiteLevels = save1 + (0x02b8 << 1);
1102
+ }
1103
+ else if ((imCanon.ColorDataSubVer == 6) ||
1104
+ (imCanon.ColorDataSubVer == 7))
1105
+ {
1106
+ offsetChannelBlackLevel = save1 + (0x02cb << 1);
1107
+ offsetWhiteLevels = save1 + (0x02cf << 1);
1108
+ }
1109
+ else if (imCanon.ColorDataSubVer == 9)
1110
+ {
1111
+ offsetChannelBlackLevel = save1 + (0x02cf << 1);
1112
+ offsetWhiteLevels = save1 + (0x02d3 << 1);
1113
+ }
1114
+ else
1115
+ offsetChannelBlackLevel = save1 + (0x00e7 << 1);
1116
+ break;
1117
+
1118
+ case 5120: // G10, G11, G12, G15, G16
1119
+ // G1 X, G1 X Mark II, G1 X Mark III
1120
+ // G3 X, G5 X
1121
+ // G7 X, G7 X Mark II
1122
+ // G9 X, G9 X Mark II
1123
+ // S90, S95, S100, S100V, S110, S120
1124
+ // SX1 IS, SX50 HS, SX60 HS
1125
+ // M3, M5, M6, M10, M100
1126
+ imCanon.ColorDataVer = 5;
1127
+ imCanon.ColorDataSubVer = get2();
1128
+
1129
+ fseek(ifp, save1 + (0x0047 << 1), SEEK_SET);
1130
+ FORC4 cam_mul[RGGB_2_RGBG(c)] = (float)get2();
1131
+
1132
+ if (imCanon.ColorDataSubVer == 0xfffc) // ColorDataSubVer: 65532 (-4)
1133
+ // G7 X Mark II, G9 X Mark II, G1 X Mark III
1134
+ // M5, M100, M6
1135
+ {
1136
+ fseek(ifp, save1 + (0x004f << 1), SEEK_SET);
1137
+ FORC4 icWBC[LIBRAW_WBI_Auto][RGGB_2_RGBG(c)] = get2();
1138
+ fseek(ifp, 8, SEEK_CUR);
1139
+ FORC4 icWBC[LIBRAW_WBI_Measured][RGGB_2_RGBG(c)] =
1140
+ get2();
1141
+ fseek(ifp, 8, SEEK_CUR);
1142
+ FORC4 icWBC[LIBRAW_WBI_Other][RGGB_2_RGBG(c)] = get2();
1143
+ fseek(ifp, 8, SEEK_CUR);
1144
+ Canon_WBpresets(8, 24);
1145
+ fseek(ifp, 168, SEEK_CUR);
1146
+ FORC4 icWBC[LIBRAW_WBI_FL_WW][RGGB_2_RGBG(c)] = get2();
1147
+ fseek(ifp, 24, SEEK_CUR);
1148
+ Canon_WBCTpresets(2); // BCADT
1149
+ offsetChannelBlackLevel = save1 + (0x014d << 1);
1150
+ offsetWhiteLevels = save1 + (0x0569 << 1);
1151
+ }
1152
+ else if (imCanon.ColorDataSubVer == 0xfffd) // ColorDataSubVer: 65533 (-3)
1153
+ // M10, M3
1154
+ // G1 X, G1 X Mark II
1155
+ // G3 X, G5 X, G7 X, G9 X
1156
+ // G10, G11, G12, G15, G16
1157
+ // S90, S95, S100, S100V, S110, S120
1158
+ // SX1 IS, SX50 HS, SX60 HS
1159
+ {
1160
+ fseek(ifp, save1 + (0x004c << 1), SEEK_SET);
1161
+ FORC4 icWBC[LIBRAW_WBI_Auto][RGGB_2_RGBG(c)] = get2();
1162
+ get2();
1163
+ FORC4 icWBC[LIBRAW_WBI_Measured][RGGB_2_RGBG(c)] =
1164
+ get2();
1165
+ get2();
1166
+ FORC4 icWBC[LIBRAW_WBI_Other][RGGB_2_RGBG(c)] = get2();
1167
+ get2();
1168
+ Canon_WBpresets(2, 12);
1169
+ fseek(ifp, save1 + (0x00ba << 1), SEEK_SET);
1170
+ Canon_WBCTpresets(2); // BCADT
1171
+ offsetChannelBlackLevel = save1 + (0x0108 << 1);
1172
+ }
1173
+ break;
1174
+
1175
+ case 1273: // 600D; ColorDataSubVer: 10
1176
+ case 1275: // 1200D; ColorDataSubVer: 10
1177
+ imCanon.ColorDataVer = 6;
1178
+ AsShot_Auto_MeasuredWB(0x003f);
1179
+ sRAW_WB(0x0062);
1180
+ fseek(ifp, save1 + (0x0067 << 1), SEEK_SET);
1181
+ Canon_WBpresets(2, 12);
1182
+ fseek(ifp, save1 + (0x00bc << 1), SEEK_SET);
1183
+ Canon_WBCTpresets(0); // BCAT
1184
+ offsetChannelBlackLevel = save1 + (0x01df << 1);
1185
+ offsetWhiteLevels = save1 + (0x01e3 << 1);
1186
+ break;
1187
+
1188
+ case 1312: // 5D Mark III, 650D, 700D, M; ColorDataSubVer: 10
1189
+ case 1313: // 100D, 6D, 70D, EOS M2; ColorDataSubVer: 10
1190
+ case 1316: // -1D C, -1D X; ColorDataSubVer: 10
1191
+ case 1506: // 750D, 760D, 7D Mark II; ColorDataSubVer: 11
1192
+ imCanon.ColorDataVer = 7;
1193
+ AsShot_Auto_MeasuredWB(0x003f);
1194
+ sRAW_WB(0x007b);
1195
+ fseek(ifp, save1 + (0x0080 << 1), SEEK_SET);
1196
+ Canon_WBpresets(2, 12);
1197
+ fseek(ifp, save1 + (0x00d5 << 1), SEEK_SET);
1198
+ Canon_WBCTpresets(0); // BCAT
1199
+
1200
+ if (imCanon.ColorDataSubVer == 10)
1201
+ {
1202
+ offsetChannelBlackLevel = save1 + (0x01f8 << 1);
1203
+ offsetWhiteLevels = save1 + (0x01fc << 1);
1204
+ }
1205
+ else if (imCanon.ColorDataSubVer == 11)
1206
+ {
1207
+ offsetChannelBlackLevel = save1 + (0x02d8 << 1);
1208
+ offsetWhiteLevels = save1 + (0x02dc << 1);
1209
+ }
1210
+ break;
1211
+
1212
+ case 1560: // 5DS, 5DS R; ColorDataSubVer: 12
1213
+ case 1592: // 5D Mark IV, 80D, -1D X Mark II; ColorDataSubVer: 13
1214
+ case 1353: // 1300D, 1500D, 3000D; ColorDataSubVer: 14
1215
+ case 1602: // 200D, 6D Mark II, 77D, 800D; ColorDataSubVer: 15
1216
+ imCanon.ColorDataVer = 8;
1217
+ AsShot_Auto_MeasuredWB(0x003f);
1218
+ sRAW_WB(0x0080);
1219
+ fseek(ifp, save1 + (0x0085 << 1), SEEK_SET);
1220
+ Canon_WBpresets(2, 12);
1221
+ fseek(ifp, save1 + (0x0107 << 1), SEEK_SET);
1222
+ Canon_WBCTpresets(0); // BCAT
1223
+
1224
+ if (imCanon.ColorDataSubVer == 14) // 1300D, 1500D, 3000D
1225
+ {
1226
+ offsetChannelBlackLevel = save1 + (0x022c << 1);
1227
+ offsetWhiteLevels = save1 + (0x0230 << 1);
1228
+ }
1229
+ else
1230
+ {
1231
+ offsetChannelBlackLevel = save1 + (0x030a << 1);
1232
+ offsetWhiteLevels = save1 + (0x030e << 1);
1233
+ }
1234
+ break;
1235
+
1236
+ case 1820: // M50; ColorDataSubVer: 16
1237
+ case 1824: // R; ColorDataSubVer: 17
1238
+ case 1816: // RP, 250D, SX70 HS; ColorDataSubVer: 18
1239
+ // M6 Mark II, M200, 90D, G5 X Mark II, G7 X Mark III, 850D; ColorDataSubVer: 19
1240
+ imCanon.ColorDataVer = 9;
1241
+ AsShot_Auto_MeasuredWB(0x0047);
1242
+ CR3_ColorData(0x0047);
1243
+ break;
1244
+
1245
+ case 1770: // R5 CRM
1246
+ case 2024: // -1D X Mark III; ColorDataSubVer: 32
1247
+ case 3656: // R5, R6; ColorDataSubVer: 33
1248
+ imCanon.ColorDataVer = 10;
1249
+ AsShot_Auto_MeasuredWB(0x0055);
1250
+ CR3_ColorData(0x0055);
1251
+ break;
1252
+
1253
+ case 3973: // R3; ColorDataSubVer: 34
1254
+ case 3778: // R7, R10; ColorDataSubVer: 48
1255
+ imCanon.ColorDataVer = 11;
1256
+ AsShot_Auto_MeasuredWB(0x0069);
1257
+
1258
+ fseek(ifp, save1 + ((0x0069+0x0064) << 1), SEEK_SET);
1259
+ Canon_WBpresets(2, 12);
1260
+ fseek(ifp, save1 + ((0x0069+0x00c3) << 1), SEEK_SET);
1261
+ Canon_WBCTpresets(0);
1262
+ offsetChannelBlackLevel2 = save1 + ((0x0069+0x0102) << 1);
1263
+ offsetChannelBlackLevel = save1 + ((0x0069+0x0213) << 1);
1264
+ offsetWhiteLevels = save1 + ((0x0069+0x0217) << 1);
1265
+ break;
1266
+
1267
+ default:
1268
+ imCanon.ColorDataSubVer = get2();
1269
+ break;
1270
+ }
1271
+
1272
+ if (offsetChannelBlackLevel)
1273
+ {
1274
+ fseek(ifp, offsetChannelBlackLevel, SEEK_SET);
1275
+ FORC4
1276
+ bls += (imCanon.ChannelBlackLevel[RGGB_2_RGBG(c)] = get2());
1277
+ imCanon.AverageBlackLevel = bls / 4;
1278
+ }
1279
+ if (offsetWhiteLevels)
1280
+ {
1281
+ if ((offsetWhiteLevels - offsetChannelBlackLevel) != 8L)
1282
+ fseek(ifp, offsetWhiteLevels, SEEK_SET);
1283
+ imCanon.NormalWhiteLevel = get2();
1284
+ imCanon.SpecularWhiteLevel = get2();
1285
+ FORC4
1286
+ imgdata.color.linear_max[c] = imCanon.SpecularWhiteLevel;
1287
+ }
1288
+
1289
+ if(!imCanon.AverageBlackLevel && offsetChannelBlackLevel2)
1290
+ {
1291
+ fseek(ifp, offsetChannelBlackLevel2, SEEK_SET);
1292
+ FORC4
1293
+ bls += (imCanon.ChannelBlackLevel[RGGB_2_RGBG(c)] = get2());
1294
+ imCanon.AverageBlackLevel = bls / 4;
1295
+ }
1296
+ fseek(ifp, save1, SEEK_SET);
1297
+
1298
+ } else if (tag == 0x4013) {
1299
+ get4();
1300
+ imCanon.AFMicroAdjMode = get4();
1301
+ float a = float(get4());
1302
+ float b = float(get4());
1303
+ if (fabsf(b) > 0.001f)
1304
+ imCanon.AFMicroAdjValue = a / b;
1305
+
1306
+ } else if (tag == 0x4018) {
1307
+ fseek(ifp, 8, SEEK_CUR);
1308
+ imCanon.AutoLightingOptimizer = get4();
1309
+ if ((imCanon.AutoLightingOptimizer > 3) ||
1310
+ (imCanon.AutoLightingOptimizer < 0))
1311
+ imCanon.AutoLightingOptimizer = 3;
1312
+ imCanon.HighlightTonePriority = get4();
1313
+ if ((imCanon.HighlightTonePriority > 5) ||
1314
+ (imCanon.HighlightTonePriority < 0))
1315
+ imCanon.HighlightTonePriority = 0;
1316
+ if (imCanon.HighlightTonePriority) {
1317
+ imCommon.ExposureCalibrationShift -= float(imCanon.HighlightTonePriority);
1318
+ }
1319
+
1320
+ } else if ((tag == 0x4021) && (dng_writer == nonDNG) &&
1321
+ (imCanon.multishot[0] = get4()) &&
1322
+ (imCanon.multishot[1] = get4())) {
1323
+ if (len >= 4) {
1324
+ imCanon.multishot[2] = get4();
1325
+ imCanon.multishot[3] = get4();
1326
+ }
1327
+ FORC4 cam_mul[c] = 1024;
1328
+ } else if (tag == 0x4026) {
1329
+ fseek(ifp, 44, SEEK_CUR);
1330
+ imCanon.CanonLog = get4();
1331
+ }
1332
+ #undef CR3_ColorData
1333
+ #undef sRAW_WB
1334
+ #undef AsShot_Auto_MeasuredWB
1335
+ }