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,1269 @@
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
+
16
+ #include "../../internal/libraw_cxx_defs.h"
17
+ #include "../../internal/libraw_cameraids.h"
18
+
19
+ #ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
20
+ int LibRaw::open_file(const char *fname, INT64 max_buf_size)
21
+ {
22
+ int big = 0;
23
+ if (max_buf_size == LIBRAW_OPEN_BIGFILE)
24
+ big = 1;
25
+ else if (max_buf_size == LIBRAW_OPEN_FILE)
26
+ big = 0;
27
+ else
28
+ {
29
+ #ifndef LIBRAW_WIN32_CALLS
30
+ struct stat st;
31
+ if (stat(fname, &st))
32
+ return LIBRAW_IO_ERROR;
33
+ big = (st.st_size > max_buf_size) ? 1 : 0;
34
+ #else
35
+ struct _stati64 st;
36
+ if (_stati64(fname, &st))
37
+ return LIBRAW_IO_ERROR;
38
+ big = (st.st_size > max_buf_size) ? 1 : 0;
39
+ #endif
40
+ }
41
+
42
+ LibRaw_abstract_datastream *stream;
43
+ try
44
+ {
45
+ if (big)
46
+ stream = new LibRaw_bigfile_datastream(fname);
47
+ else
48
+ stream = new LibRaw_file_datastream(fname);
49
+ }
50
+
51
+ catch (const std::bad_alloc& )
52
+ {
53
+ recycle();
54
+ return LIBRAW_UNSUFFICIENT_MEMORY;
55
+ }
56
+ if (!stream->valid())
57
+ {
58
+ delete stream;
59
+ return LIBRAW_IO_ERROR;
60
+ }
61
+ ID.input_internal = 0; // preserve from deletion on error
62
+ int ret = open_datastream(stream);
63
+ if (ret == LIBRAW_SUCCESS)
64
+ {
65
+ ID.input_internal = 1; // flag to delete datastream on recycle
66
+ }
67
+ else
68
+ {
69
+ delete stream;
70
+ ID.input_internal = 0;
71
+ }
72
+ return ret;
73
+ }
74
+
75
+ #if defined(WIN32) || defined(_WIN32)
76
+ #ifndef LIBRAW_WIN32_UNICODEPATHS
77
+ int LibRaw::open_file(const wchar_t *, INT64)
78
+ {
79
+ return LIBRAW_NOT_IMPLEMENTED;
80
+ }
81
+ #else
82
+ int LibRaw::open_file(const wchar_t *fname, INT64 max_buf_size)
83
+ {
84
+ int big = 0;
85
+ if (max_buf_size == LIBRAW_OPEN_BIGFILE)
86
+ big = 1;
87
+ else if (max_buf_size == LIBRAW_OPEN_FILE)
88
+ big = 0;
89
+ else
90
+ {
91
+ struct _stati64 st;
92
+ if (_wstati64(fname, &st))
93
+ return LIBRAW_IO_ERROR;
94
+ big = (st.st_size > max_buf_size) ? 1 : 0;
95
+ }
96
+
97
+ LibRaw_abstract_datastream *stream;
98
+ try
99
+ {
100
+ if (big)
101
+ stream = new LibRaw_bigfile_datastream(fname);
102
+ else
103
+ stream = new LibRaw_file_datastream(fname);
104
+ }
105
+
106
+ catch (const std::bad_alloc&)
107
+ {
108
+ recycle();
109
+ return LIBRAW_UNSUFFICIENT_MEMORY;
110
+ }
111
+ if (!stream->valid())
112
+ {
113
+ delete stream;
114
+ return LIBRAW_IO_ERROR;
115
+ }
116
+ ID.input_internal = 0; // preserve from deletion on error
117
+ int ret = open_datastream(stream);
118
+ if (ret == LIBRAW_SUCCESS)
119
+ {
120
+ ID.input_internal = 1; // flag to delete datastream on recycle
121
+ }
122
+ else
123
+ {
124
+ delete stream;
125
+ ID.input_internal = 0;
126
+ }
127
+ return ret;
128
+ }
129
+ #endif
130
+ #endif
131
+
132
+ #else /* LIBRAW_NO_IOSTREAMS_DATASTREAM*/
133
+
134
+ int LibRaw::libraw_openfile_tail(LibRaw_abstract_datastream *stream)
135
+ {
136
+ if (!stream->valid())
137
+ {
138
+ delete stream;
139
+ return LIBRAW_IO_ERROR;
140
+ }
141
+ ID.input_internal = 0; // preserve from deletion on error
142
+ int ret = open_datastream(stream);
143
+ if (ret == LIBRAW_SUCCESS)
144
+ {
145
+ ID.input_internal = 1; // flag to delete datastream on recycle
146
+ }
147
+ else
148
+ {
149
+ delete stream;
150
+ ID.input_internal = 0;
151
+ }
152
+ return ret;
153
+ }
154
+
155
+ int LibRaw::open_file(const char *fname)
156
+ {
157
+ LibRaw_abstract_datastream *stream;
158
+ try
159
+ {
160
+ #ifdef LIBRAW_WIN32_CALLS
161
+ stream = new LibRaw_bigfile_buffered_datastream(fname);
162
+ #else
163
+ stream = new LibRaw_bigfile_datastream(fname);
164
+ #endif
165
+ }
166
+ catch (const std::bad_alloc&)
167
+ {
168
+ recycle();
169
+ return LIBRAW_UNSUFFICIENT_MEMORY;
170
+ }
171
+ if ((stream->size() > (INT64)LIBRAW_MAX_NONDNG_RAW_FILE_SIZE) && (stream->size() > (INT64)LIBRAW_MAX_DNG_RAW_FILE_SIZE))
172
+ {
173
+ delete stream;
174
+ return LIBRAW_TOO_BIG;
175
+ }
176
+ return libraw_openfile_tail(stream);
177
+ }
178
+
179
+ #if defined(WIN32) || defined(_WIN32)
180
+ #ifndef LIBRAW_WIN32_UNICODEPATHS
181
+ int LibRaw::open_file(const wchar_t *)
182
+ {
183
+ return LIBRAW_NOT_IMPLEMENTED;
184
+ }
185
+ #else
186
+ int LibRaw::open_file(const wchar_t *fname)
187
+ {
188
+ LibRaw_abstract_datastream *stream;
189
+ try
190
+ {
191
+ #ifdef LIBRAW_WIN32_CALLS
192
+ stream = new LibRaw_bigfile_buffered_datastream(fname);
193
+ #else
194
+ stream = new LibRaw_bigfile_datastream(fname);
195
+ #endif
196
+ }
197
+ catch (const std::bad_alloc&)
198
+ {
199
+ recycle();
200
+ return LIBRAW_UNSUFFICIENT_MEMORY;
201
+ }
202
+ if ((stream->size() > (INT64)LIBRAW_MAX_DNG_RAW_FILE_SIZE) && (stream->size() > (INT64)LIBRAW_MAX_NONDNG_RAW_FILE_SIZE))
203
+ {
204
+ delete stream;
205
+ return LIBRAW_TOO_BIG;
206
+ }
207
+
208
+ return libraw_openfile_tail(stream);
209
+ }
210
+ #endif
211
+ #endif
212
+
213
+ #endif
214
+
215
+ int LibRaw::open_buffer(const void *buffer, size_t size)
216
+ {
217
+ // this stream will close on recycle()
218
+ if (!buffer || buffer == (const void *)-1)
219
+ return LIBRAW_IO_ERROR;
220
+
221
+ if ((size > (INT64)LIBRAW_MAX_DNG_RAW_FILE_SIZE) && (size > (INT64)LIBRAW_MAX_NONDNG_RAW_FILE_SIZE))
222
+ return LIBRAW_TOO_BIG;
223
+
224
+ LibRaw_buffer_datastream *stream;
225
+ try
226
+ {
227
+ stream = new LibRaw_buffer_datastream(buffer, size);
228
+ }
229
+ catch (const std::bad_alloc& )
230
+ {
231
+ recycle();
232
+ return LIBRAW_UNSUFFICIENT_MEMORY;
233
+ }
234
+ if (!stream->valid())
235
+ {
236
+ delete stream;
237
+ return LIBRAW_IO_ERROR;
238
+ }
239
+ ID.input_internal = 0; // preserve from deletion on error
240
+ int ret = open_datastream(stream);
241
+ if (ret == LIBRAW_SUCCESS)
242
+ {
243
+ ID.input_internal = 1; // flag to delete datastream on recycle
244
+ }
245
+ else
246
+ {
247
+ delete stream;
248
+ ID.input_internal = 0;
249
+ }
250
+ return ret;
251
+ }
252
+
253
+ int LibRaw::open_bayer(const unsigned char *buffer, unsigned datalen,
254
+ ushort _raw_width, ushort _raw_height,
255
+ ushort _left_margin, ushort _top_margin,
256
+ ushort _right_margin, ushort _bottom_margin,
257
+ unsigned char procflags, unsigned char bayer_pattern,
258
+ unsigned unused_bits, unsigned otherflags,
259
+ unsigned black_level)
260
+ {
261
+ // this stream will close on recycle()
262
+ if (!buffer || buffer == (const void *)-1)
263
+ return LIBRAW_IO_ERROR;
264
+
265
+ LibRaw_buffer_datastream *stream;
266
+ try
267
+ {
268
+ stream = new LibRaw_buffer_datastream(buffer, datalen);
269
+ }
270
+ catch (const std::bad_alloc& )
271
+ {
272
+ recycle();
273
+ return LIBRAW_UNSUFFICIENT_MEMORY;
274
+ }
275
+ if (!stream->valid())
276
+ {
277
+ delete stream;
278
+ return LIBRAW_IO_ERROR;
279
+ }
280
+ ID.input = stream;
281
+ SET_PROC_FLAG(LIBRAW_PROGRESS_OPEN);
282
+ // From identify
283
+ initdata();
284
+ strcpy(imgdata.idata.make, "BayerDump");
285
+ snprintf(imgdata.idata.model, sizeof(imgdata.idata.model) - 1,
286
+ "%u x %u pixels", _raw_width, _raw_height);
287
+ S.flip = procflags >> 2;
288
+ libraw_internal_data.internal_output_params.zero_is_bad = procflags & 2;
289
+ libraw_internal_data.unpacker_data.data_offset = 0;
290
+ S.raw_width = _raw_width;
291
+ S.raw_height = _raw_height;
292
+ S.left_margin = _left_margin;
293
+ S.top_margin = _top_margin;
294
+ S.width = S.raw_width - S.left_margin - _right_margin;
295
+ S.height = S.raw_height - S.top_margin - _bottom_margin;
296
+
297
+ imgdata.idata.filters = 0x1010101 * bayer_pattern;
298
+ imgdata.idata.colors =
299
+ 4 - !((imgdata.idata.filters & imgdata.idata.filters >> 1) & 0x5555);
300
+ libraw_internal_data.unpacker_data.load_flags = otherflags;
301
+ switch (libraw_internal_data.unpacker_data.tiff_bps =
302
+ (datalen)*8 / (S.raw_width * S.raw_height))
303
+ {
304
+ case 8:
305
+ load_raw = &LibRaw::eight_bit_load_raw;
306
+ break;
307
+ case 10:
308
+ if ((datalen) / S.raw_height * 3u >= S.raw_width * 4u)
309
+ {
310
+ load_raw = &LibRaw::android_loose_load_raw;
311
+ break;
312
+ }
313
+ else if (libraw_internal_data.unpacker_data.load_flags & 1)
314
+ {
315
+ load_raw = &LibRaw::android_tight_load_raw;
316
+ break;
317
+ }
318
+ case 12:
319
+ libraw_internal_data.unpacker_data.load_flags |= 128;
320
+ load_raw = &LibRaw::packed_load_raw;
321
+ break;
322
+ case 16:
323
+ libraw_internal_data.unpacker_data.order =
324
+ 0x4949 | 0x404 * (libraw_internal_data.unpacker_data.load_flags & 1);
325
+ libraw_internal_data.unpacker_data.tiff_bps -=
326
+ libraw_internal_data.unpacker_data.load_flags >> 4;
327
+ libraw_internal_data.unpacker_data.tiff_bps -=
328
+ libraw_internal_data.unpacker_data.load_flags =
329
+ libraw_internal_data.unpacker_data.load_flags >> 1 & 7;
330
+ load_raw = &LibRaw::unpacked_load_raw;
331
+ }
332
+ C.maximum =
333
+ (1 << libraw_internal_data.unpacker_data.tiff_bps) - (1 << unused_bits);
334
+ C.black = black_level;
335
+ S.iwidth = S.width;
336
+ S.iheight = S.height;
337
+ imgdata.idata.colors = 3;
338
+ imgdata.idata.filters |= ((imgdata.idata.filters >> 2 & 0x22222222) |
339
+ (imgdata.idata.filters << 2 & 0x88888888)) &
340
+ imgdata.idata.filters << 1;
341
+
342
+ imgdata.idata.raw_count = 1;
343
+ for (int i = 0; i < 4; i++)
344
+ imgdata.color.pre_mul[i] = 1.0;
345
+
346
+ strcpy(imgdata.idata.cdesc, "RGBG");
347
+
348
+ ID.input_internal = 1;
349
+ SET_PROC_FLAG(LIBRAW_PROGRESS_IDENTIFY);
350
+ return LIBRAW_SUCCESS;
351
+ }
352
+
353
+ struct foveon_data_t
354
+ {
355
+ const char *make;
356
+ const char *model;
357
+ const int raw_width, raw_height;
358
+ const int white;
359
+ const int left_margin, top_margin;
360
+ const int width, height;
361
+ } foveon_data[] = {
362
+ {"Sigma", "SD9", 2304, 1531, 12000, 20, 8, 2266, 1510},
363
+ {"Sigma", "SD9", 1152, 763, 12000, 10, 2, 1132, 755},
364
+ {"Sigma", "SD10", 2304, 1531, 12000, 20, 8, 2266, 1510},
365
+ {"Sigma", "SD10", 1152, 763, 12000, 10, 2, 1132, 755},
366
+ {"Sigma", "SD14", 2688, 1792, 14000, 18, 12, 2651, 1767},
367
+ {"Sigma", "SD14", 2688, 896, 14000, 18, 6, 2651, 883}, // 2/3
368
+ {"Sigma", "SD14", 1344, 896, 14000, 9, 6, 1326, 883}, // 1/2
369
+ {"Sigma", "SD15", 2688, 1792, 2900, 18, 12, 2651, 1767},
370
+ {"Sigma", "SD15", 2688, 896, 2900, 18, 6, 2651, 883}, // 2/3 ?
371
+ {"Sigma", "SD15", 1344, 896, 2900, 9, 6, 1326, 883}, // 1/2 ?
372
+ {"Sigma", "DP1", 2688, 1792, 2100, 18, 12, 2651, 1767},
373
+ {"Sigma", "DP1", 2688, 896, 2100, 18, 6, 2651, 883}, // 2/3 ?
374
+ {"Sigma", "DP1", 1344, 896, 2100, 9, 6, 1326, 883}, // 1/2 ?
375
+ {"Sigma", "DP1S", 2688, 1792, 2200, 18, 12, 2651, 1767},
376
+ {"Sigma", "DP1S", 2688, 896, 2200, 18, 6, 2651, 883}, // 2/3
377
+ {"Sigma", "DP1S", 1344, 896, 2200, 9, 6, 1326, 883}, // 1/2
378
+ {"Sigma", "DP1X", 2688, 1792, 3560, 18, 12, 2651, 1767},
379
+ {"Sigma", "DP1X", 2688, 896, 3560, 18, 6, 2651, 883}, // 2/3
380
+ {"Sigma", "DP1X", 1344, 896, 3560, 9, 6, 1326, 883}, // 1/2
381
+ {"Sigma", "DP2", 2688, 1792, 2326, 13, 16, 2651, 1767},
382
+ {"Sigma", "DP2", 2688, 896, 2326, 13, 8, 2651, 883}, // 2/3 ??
383
+ {"Sigma", "DP2", 1344, 896, 2326, 7, 8, 1325, 883}, // 1/2 ??
384
+ {"Sigma", "DP2S", 2688, 1792, 2300, 18, 12, 2651, 1767},
385
+ {"Sigma", "DP2S", 2688, 896, 2300, 18, 6, 2651, 883}, // 2/3
386
+ {"Sigma", "DP2S", 1344, 896, 2300, 9, 6, 1326, 883}, // 1/2
387
+ {"Sigma", "DP2X", 2688, 1792, 2300, 18, 12, 2651, 1767},
388
+ {"Sigma", "DP2X", 2688, 896, 2300, 18, 6, 2651, 883}, // 2/3
389
+ {"Sigma", "DP2X", 1344, 896, 2300, 9, 6, 1325, 883}, // 1/2
390
+ {"Sigma", "SD1", 4928, 3264, 3900, 12, 52, 4807, 3205}, // Full size
391
+ {"Sigma", "SD1", 4928, 1632, 3900, 12, 26, 4807, 1603}, // 2/3 size
392
+ {"Sigma", "SD1", 2464, 1632, 3900, 6, 26, 2403, 1603}, // 1/2 size
393
+ {"Sigma", "SD1 Merrill", 4928, 3264, 3900, 12, 52, 4807, 3205}, // Full size
394
+ {"Sigma", "SD1 Merrill", 4928, 1632, 3900, 12, 26, 4807, 1603}, // 2/3 size
395
+ {"Sigma", "SD1 Merrill", 2464, 1632, 3900, 6, 26, 2403, 1603}, // 1/2 size
396
+ {"Sigma", "DP1 Merrill", 4928, 3264, 3900, 12, 0, 4807, 3205},
397
+ {"Sigma", "DP1 Merrill", 2464, 1632, 3900, 12, 0, 2403, 1603}, // 1/2 size
398
+ {"Sigma", "DP1 Merrill", 4928, 1632, 3900, 12, 0, 4807, 1603}, // 2/3 size
399
+ {"Sigma", "DP2 Merrill", 4928, 3264, 3900, 12, 0, 4807, 3205},
400
+ {"Sigma", "DP2 Merrill", 2464, 1632, 3900, 12, 0, 2403, 1603}, // 1/2 size
401
+ {"Sigma", "DP2 Merrill", 4928, 1632, 3900, 12, 0, 4807, 1603}, // 2/3 size
402
+ {"Sigma", "DP3 Merrill", 4928, 3264, 3900, 12, 0, 4807, 3205},
403
+ {"Sigma", "DP3 Merrill", 2464, 1632, 3900, 12, 0, 2403, 1603}, // 1/2 size
404
+ {"Sigma", "DP3 Merrill", 4928, 1632, 3900, 12, 0, 4807, 1603}, // 2/3 size
405
+ {"Polaroid", "x530", 1440, 1088, 2700, 10, 13, 1419, 1059},
406
+ // dp2 Q
407
+ {"Sigma", "dp3 Quattro", 5888, 3776, 16383, 204, 76, 5446,
408
+ 3624}, // full size, new fw ??
409
+ {"Sigma", "dp3 Quattro", 5888, 3672, 16383, 204, 24, 5446,
410
+ 3624}, // full size
411
+ {"Sigma", "dp3 Quattro", 2944, 1836, 16383, 102, 12, 2723,
412
+ 1812}, // half size
413
+ {"Sigma", "dp3 Quattro", 2944, 1888, 16383, 102, 38, 2723,
414
+ 1812}, // half size, new fw??
415
+
416
+ {"Sigma", "dp2 Quattro", 5888, 3776, 16383, 204, 76, 5446,
417
+ 3624}, // full size, new fw
418
+ {"Sigma", "dp2 Quattro", 5888, 3672, 16383, 204, 24, 5446,
419
+ 3624}, // full size
420
+ {"Sigma", "dp2 Quattro", 2944, 1836, 16383, 102, 12, 2723,
421
+ 1812}, // half size
422
+ {"Sigma", "dp2 Quattro", 2944, 1888, 16383, 102, 38, 2723,
423
+ 1812}, // half size, new fw
424
+
425
+ {"Sigma", "dp1 Quattro", 5888, 3776, 16383, 204, 76, 5446,
426
+ 3624}, // full size, new fw??
427
+ {"Sigma", "dp1 Quattro", 5888, 3672, 16383, 204, 24, 5446,
428
+ 3624}, // full size
429
+ {"Sigma", "dp1 Quattro", 2944, 1836, 16383, 102, 12, 2723,
430
+ 1812}, // half size
431
+ {"Sigma", "dp1 Quattro", 2944, 1888, 16383, 102, 38, 2723,
432
+ 1812}, // half size, new fw
433
+
434
+ {"Sigma", "dp0 Quattro", 5888, 3776, 16383, 204, 76, 5446,
435
+ 3624}, // full size, new fw??
436
+ {"Sigma", "dp0 Quattro", 5888, 3672, 16383, 204, 24, 5446,
437
+ 3624}, // full size
438
+ {"Sigma", "dp0 Quattro", 2944, 1836, 16383, 102, 12, 2723,
439
+ 1812}, // half size
440
+ {"Sigma", "dp0 Quattro", 2944, 1888, 16383, 102, 38, 2723,
441
+ 1812}, // half size, new fw
442
+ // Sigma sd Quattro
443
+ {"Sigma", "sd Quattro", 5888, 3776, 16383, 204, 76, 5446,
444
+ 3624}, // full size
445
+ {"Sigma", "sd Quattro", 2944, 1888, 16383, 102, 38, 2723,
446
+ 1812}, // half size
447
+ // Sd Quattro H
448
+ {"Sigma", "sd Quattro H", 6656, 4480, 4000, 224, 160, 6208,
449
+ 4160}, // full size
450
+ {"Sigma", "sd Quattro H", 3328, 2240, 4000, 112, 80, 3104,
451
+ 2080}, // half size
452
+ {"Sigma", "sd Quattro H", 5504, 3680, 4000, 0, 4, 5496, 3668}, // full size
453
+ {"Sigma", "sd Quattro H", 2752, 1840, 4000, 0, 2, 2748, 1834}, // half size
454
+ };
455
+ const int foveon_count = sizeof(foveon_data) / sizeof(foveon_data[0]);
456
+
457
+ int LibRaw::open_datastream(LibRaw_abstract_datastream *stream)
458
+ {
459
+
460
+ if (!stream)
461
+ return ENOENT;
462
+ if (!stream->valid())
463
+ return LIBRAW_IO_ERROR;
464
+ if ((stream->size() > (INT64)LIBRAW_MAX_DNG_RAW_FILE_SIZE) && (stream->size() > (INT64)LIBRAW_MAX_NONDNG_RAW_FILE_SIZE))
465
+ return LIBRAW_TOO_BIG;
466
+
467
+ recycle();
468
+ if (callbacks.pre_identify_cb)
469
+ {
470
+ int r = (callbacks.pre_identify_cb)(this);
471
+ if (r == 1)
472
+ goto final;
473
+ }
474
+
475
+ try
476
+ {
477
+ ID.input = stream;
478
+ SET_PROC_FLAG(LIBRAW_PROGRESS_OPEN);
479
+
480
+ identify();
481
+
482
+ // Fuji layout files: either DNG or unpacked_load_raw should be used
483
+ if (libraw_internal_data.internal_output_params.fuji_width || libraw_internal_data.unpacker_data.fuji_layout)
484
+ {
485
+ if (!imgdata.idata.dng_version && load_raw != &LibRaw::unpacked_load_raw
486
+ && load_raw != &LibRaw::unpacked_load_raw_FujiDBP
487
+ && load_raw != &LibRaw::unpacked_load_raw_fuji_f700s20
488
+ )
489
+ return LIBRAW_FILE_UNSUPPORTED;
490
+ }
491
+
492
+ // promote the old single thumbnail to the thumbs_list if not present already
493
+ if (imgdata.thumbs_list.thumbcount < LIBRAW_THUMBNAIL_MAXCOUNT)
494
+ {
495
+ bool already = false;
496
+ if(imgdata.thumbnail.tlength || libraw_internal_data.internal_data.toffset)
497
+ for(int i = 0; i < imgdata.thumbs_list.thumbcount; i++)
498
+ if (imgdata.thumbs_list.thumblist[i].toffset == libraw_internal_data.internal_data.toffset
499
+ && imgdata.thumbs_list.thumblist[i].tlength == imgdata.thumbnail.tlength)
500
+ {
501
+ already = true;
502
+ break;
503
+ }
504
+ if (!already)
505
+ {
506
+ int idx = imgdata.thumbs_list.thumbcount;
507
+ imgdata.thumbs_list.thumblist[idx].toffset = libraw_internal_data.internal_data.toffset;
508
+ imgdata.thumbs_list.thumblist[idx].tlength = imgdata.thumbnail.tlength;
509
+ imgdata.thumbs_list.thumblist[idx].tflip = 0xffff;
510
+ imgdata.thumbs_list.thumblist[idx].tformat = libraw_internal_data.unpacker_data.thumb_format;
511
+ imgdata.thumbs_list.thumblist[idx].tmisc = libraw_internal_data.unpacker_data.thumb_misc;
512
+ // promote if set
513
+ imgdata.thumbs_list.thumblist[idx].twidth = imgdata.thumbnail.twidth;
514
+ imgdata.thumbs_list.thumblist[idx].theight = imgdata.thumbnail.theight;
515
+ imgdata.thumbs_list.thumbcount++;
516
+ }
517
+ }
518
+
519
+
520
+ imgdata.lens.Lens[sizeof(imgdata.lens.Lens) - 1] = 0; // make sure lens is 0-terminated
521
+
522
+ if (callbacks.post_identify_cb)
523
+ (callbacks.post_identify_cb)(this);
524
+
525
+ #define isRIC imgdata.sizes.raw_inset_crops[0]
526
+
527
+ if (!imgdata.idata.dng_version && makeIs(LIBRAW_CAMERAMAKER_Fujifilm)
528
+ && (!strcmp(imgdata.idata.normalized_model, "S3Pro")
529
+ || !strcmp(imgdata.idata.normalized_model, "S5Pro")
530
+ || !strcmp(imgdata.idata.normalized_model, "S2Pro")))
531
+ {
532
+ isRIC.cleft = isRIC.ctop = 0xffff;
533
+ isRIC.cwidth = isRIC.cheight = 0;
534
+ }
535
+ // Wipe out canon incorrect in-camera crop
536
+ if (!imgdata.idata.dng_version && makeIs(LIBRAW_CAMERAMAKER_Canon)
537
+ && isRIC.cleft == 0 && isRIC.ctop == 0 // non symmetric!
538
+ && isRIC.cwidth < (imgdata.sizes.raw_width * 4 / 5)) // less than 80% of sensor width
539
+ {
540
+ isRIC.cleft = isRIC.ctop = 0xffff;
541
+ isRIC.cwidth = isRIC.cheight = 0;
542
+ }
543
+
544
+ // Wipe out non-standard WB
545
+ if (!imgdata.idata.dng_version &&
546
+ (makeIs(LIBRAW_CAMERAMAKER_Sony) && !strcmp(imgdata.idata.normalized_model, "DSC-F828"))
547
+ && !(imgdata.rawparams.options & LIBRAW_RAWOPTIONS_PROVIDE_NONSTANDARD_WB))
548
+ {
549
+ for (int i = 0; i < 4; i++) imgdata.color.cam_mul[i] = (i == 1);
550
+ memset(imgdata.color.WB_Coeffs, 0, sizeof(imgdata.color.WB_Coeffs));
551
+ memset(imgdata.color.WBCT_Coeffs, 0, sizeof(imgdata.color.WBCT_Coeffs));
552
+ }
553
+
554
+ if (load_raw == &LibRaw::nikon_load_raw)
555
+ nikon_read_curve();
556
+
557
+ if (load_raw == &LibRaw::lossless_jpeg_load_raw &&
558
+ MN.canon.RecordMode && makeIs(LIBRAW_CAMERAMAKER_Kodak) &&
559
+ /* Not normalized models here, it is intentional */
560
+ (!strncasecmp(imgdata.idata.model, "EOS D2000", 9) || // if we want something different for B&W cameras,
561
+ !strncasecmp(imgdata.idata.model, "EOS D6000", 9))) // it's better to compare with CamIDs
562
+ {
563
+ imgdata.color.black = 0;
564
+ imgdata.color.maximum = 4501;
565
+ memset(imgdata.color.cblack, 0, sizeof(imgdata.color.cblack));
566
+ memset(imgdata.sizes.mask, 0, sizeof(imgdata.sizes.mask));
567
+ imgdata.sizes.mask[0][3] = 1; // to skip mask re-calc
568
+ libraw_internal_data.unpacker_data.load_flags |= 512;
569
+ }
570
+
571
+ if (load_raw == &LibRaw::panasonic_load_raw)
572
+ {
573
+ if (libraw_internal_data.unpacker_data.pana_encoding == 6 ||
574
+ libraw_internal_data.unpacker_data.pana_encoding == 7)
575
+ {
576
+ for (int i = 0; i < 3; i++)
577
+ imgdata.color.cblack[i] =
578
+ libraw_internal_data.internal_data.pana_black[i];
579
+ imgdata.color.cblack[3] = imgdata.color.cblack[1];
580
+ imgdata.color.cblack[4] = imgdata.color.cblack[5] = 0;
581
+ imgdata.color.black = 0;
582
+ imgdata.color.maximum =
583
+ MAX(imgdata.color.linear_max[0],
584
+ MAX(imgdata.color.linear_max[1], imgdata.color.linear_max[2]));
585
+ }
586
+
587
+ if (libraw_internal_data.unpacker_data.pana_encoding == 6)
588
+ {
589
+ int rowbytes11 = imgdata.sizes.raw_width / 11 * 16;
590
+ int rowbytes14 = imgdata.sizes.raw_width / 14 * 16;
591
+ INT64 ds = INT64(libraw_internal_data.unpacker_data.data_size);
592
+ if (!ds)
593
+ ds = libraw_internal_data.internal_data.input->size() - libraw_internal_data.unpacker_data.data_offset;
594
+ if ((imgdata.sizes.raw_width % 11) == 0 &&
595
+ (INT64(imgdata.sizes.raw_height) * rowbytes11 == ds))
596
+ load_raw = &LibRaw::panasonicC6_load_raw;
597
+ else if ((imgdata.sizes.raw_width % 14) == 0 &&
598
+ (INT64(imgdata.sizes.raw_height) * rowbytes14 == ds))
599
+ load_raw = &LibRaw::panasonicC6_load_raw;
600
+ else
601
+ imgdata.idata.raw_count = 0; // incorrect size
602
+ }
603
+ else if (libraw_internal_data.unpacker_data.pana_encoding == 7)
604
+ {
605
+ int pixperblock =
606
+ libraw_internal_data.unpacker_data.pana_bpp == 14 ? 9 : 10;
607
+ int rowbytes = imgdata.sizes.raw_width / pixperblock * 16;
608
+ if ((imgdata.sizes.raw_width % pixperblock) == 0 &&
609
+ (INT64(imgdata.sizes.raw_height) * rowbytes ==
610
+ INT64(libraw_internal_data.unpacker_data.data_size)))
611
+ load_raw = &LibRaw::panasonicC7_load_raw;
612
+ else
613
+ imgdata.idata.raw_count = 0; // incorrect size
614
+ }
615
+ }
616
+
617
+ #define NIKON_14BIT_SIZE(rw, rh) \
618
+ (((unsigned)(ceilf((float)(rw * 7 / 4) / 16.0)) * 16) * rh)
619
+
620
+ // Ugly hack, replace with proper data/line size for different
621
+ // cameras/format when available
622
+ if (makeIs(LIBRAW_CAMERAMAKER_Nikon)
623
+ && (!strncasecmp(imgdata.idata.model, "Z", 1) || !strcasecmp(imgdata.idata.model,"D6"))
624
+ && NIKON_14BIT_SIZE(imgdata.sizes.raw_width, imgdata.sizes.raw_height) ==
625
+ libraw_internal_data.unpacker_data.data_size)
626
+ {
627
+ load_raw = &LibRaw::nikon_14bit_load_raw;
628
+ }
629
+ #undef NIKON_14BIT_SIZE
630
+
631
+ // Linear max from 14-bit camera, but on 12-bit data?
632
+ if (makeIs(LIBRAW_CAMERAMAKER_Sony) &&
633
+ imgdata.color.maximum > 0 &&
634
+ imgdata.color.linear_max[0] > (long)imgdata.color.maximum &&
635
+ imgdata.color.linear_max[0] <= (long)imgdata.color.maximum * 4)
636
+ for (int c = 0; c < 4; c++)
637
+ imgdata.color.linear_max[c] /= 4;
638
+
639
+ if (makeIs(LIBRAW_CAMERAMAKER_Canon))
640
+ {
641
+ if (!imgdata.idata.dng_version && (MN.canon.DefaultCropAbsolute.l != -1)) // tag 0x00e0 SensorInfo was parsed
642
+ {
643
+ if (imgdata.sizes.raw_aspect != LIBRAW_IMAGE_ASPECT_UNKNOWN)
644
+ { // tag 0x009a AspectInfo was parsed
645
+ isRIC.cleft += MN.canon.DefaultCropAbsolute.l;
646
+ isRIC.ctop += MN.canon.DefaultCropAbsolute.t;
647
+ }
648
+ else
649
+ {
650
+ isRIC.cleft = MN.canon.DefaultCropAbsolute.l;
651
+ isRIC.ctop = MN.canon.DefaultCropAbsolute.t;
652
+ isRIC.cwidth = MN.canon.DefaultCropAbsolute.r - MN.canon.DefaultCropAbsolute.l + 1;
653
+ isRIC.cheight = MN.canon.DefaultCropAbsolute.b - MN.canon.DefaultCropAbsolute.t + 1;
654
+ }
655
+ }
656
+ else
657
+ {
658
+ if (imgdata.sizes.raw_aspect != LIBRAW_IMAGE_ASPECT_UNKNOWN)
659
+ {
660
+ }
661
+ else
662
+ { // Canon PowerShot S2 IS
663
+ }
664
+ }
665
+ #undef isRIC
666
+ if (imgdata.color.raw_bps < 14 && !imgdata.idata.dng_version && load_raw != &LibRaw::canon_sraw_load_raw)
667
+ {
668
+ int xmax = (1 << imgdata.color.raw_bps) - 1;
669
+ if (MN.canon.SpecularWhiteLevel > xmax) // Adjust 14-bit metadata to real bps
670
+ {
671
+ int div = 1 << (14 - imgdata.color.raw_bps);
672
+ for (int c = 0; c < 4; c++) imgdata.color.linear_max[c] /= div;
673
+ for (int c = 0; c < 4; c++) MN.canon.ChannelBlackLevel[c] /= div;
674
+ MN.canon.AverageBlackLevel /= div;
675
+ MN.canon.SpecularWhiteLevel /= div;
676
+ MN.canon.NormalWhiteLevel /= div;
677
+ }
678
+ }
679
+ }
680
+
681
+ if (makeIs(LIBRAW_CAMERAMAKER_Canon) &&
682
+ (load_raw == &LibRaw::canon_sraw_load_raw) &&
683
+ imgdata.sizes.raw_width > 0)
684
+ {
685
+ float ratio =
686
+ float(imgdata.sizes.raw_height) / float(imgdata.sizes.raw_width);
687
+ if ((ratio < 0.57 || ratio > 0.75) &&
688
+ MN.canon.SensorHeight > 1 &&
689
+ MN.canon.SensorWidth > 1)
690
+ {
691
+ imgdata.sizes.raw_width = MN.canon.SensorWidth;
692
+ imgdata.sizes.left_margin = MN.canon.DefaultCropAbsolute.l;
693
+ imgdata.sizes.iwidth = imgdata.sizes.width =
694
+ MN.canon.DefaultCropAbsolute.r - MN.canon.DefaultCropAbsolute.l + 1;
695
+ imgdata.sizes.raw_height = MN.canon.SensorHeight;
696
+ imgdata.sizes.top_margin = MN.canon.DefaultCropAbsolute.t;
697
+ imgdata.sizes.iheight = imgdata.sizes.height =
698
+ MN.canon.DefaultCropAbsolute.b - MN.canon.DefaultCropAbsolute.t + 1;
699
+ libraw_internal_data.unpacker_data.load_flags |=
700
+ 256; // reset width/height in canon_sraw_load_raw()
701
+ imgdata.sizes.raw_pitch = 8 * imgdata.sizes.raw_width;
702
+ }
703
+ else if (imgdata.sizes.raw_width == 4032 &&
704
+ imgdata.sizes.raw_height == 3402 &&
705
+ !strcasecmp(imgdata.idata.model, "EOS 80D")) // 80D hardcoded
706
+ {
707
+ imgdata.sizes.raw_width = 4536;
708
+ imgdata.sizes.left_margin = 28;
709
+ imgdata.sizes.iwidth = imgdata.sizes.width =
710
+ imgdata.sizes.raw_width - imgdata.sizes.left_margin;
711
+ imgdata.sizes.raw_height = 3024;
712
+ imgdata.sizes.top_margin = 8;
713
+ imgdata.sizes.iheight = imgdata.sizes.height =
714
+ imgdata.sizes.raw_height - imgdata.sizes.top_margin;
715
+ libraw_internal_data.unpacker_data.load_flags |= 256;
716
+ imgdata.sizes.raw_pitch = 8 * imgdata.sizes.raw_width;
717
+ }
718
+ }
719
+
720
+ #ifdef USE_DNGSDK
721
+ if (imgdata.idata.dng_version
722
+ &&libraw_internal_data.unpacker_data.tiff_compress == 34892
723
+ && libraw_internal_data.unpacker_data.tiff_bps == 8
724
+ && libraw_internal_data.unpacker_data.tiff_samples == 3
725
+ && load_raw == &LibRaw::lossy_dng_load_raw)
726
+ {
727
+ // Data should be linearized by DNG SDK
728
+ C.black = 0;
729
+ memset(C.cblack, 0, sizeof(C.cblack));
730
+ }
731
+ #endif
732
+
733
+ // XTrans Compressed?
734
+ if (!imgdata.idata.dng_version &&
735
+ makeIs(LIBRAW_CAMERAMAKER_Fujifilm) &&
736
+ (load_raw == &LibRaw::unpacked_load_raw))
737
+ {
738
+ if (imgdata.sizes.raw_width * (imgdata.sizes.raw_height * 2ul) !=
739
+ libraw_internal_data.unpacker_data.data_size)
740
+ {
741
+ if ((imgdata.sizes.raw_width * (imgdata.sizes.raw_height * 7ul)) / 4 ==
742
+ libraw_internal_data.unpacker_data.data_size)
743
+ load_raw = &LibRaw::fuji_14bit_load_raw;
744
+ else
745
+ parse_fuji_compressed_header();
746
+ }
747
+ else if (!strcmp(imgdata.idata.normalized_model, "X-H2S")
748
+ && libraw_internal_data.internal_data.input->size()
749
+ < (libraw_internal_data.unpacker_data.data_size + libraw_internal_data.unpacker_data.data_offset))
750
+ {
751
+ parse_fuji_compressed_header(); // try to use compressed header: X-H2S may record wrong data size
752
+ }
753
+ }
754
+ // set raw_inset_crops[1] via raw_aspect
755
+ if (imgdata.sizes.raw_aspect >= LIBRAW_IMAGE_ASPECT_MINIMAL_REAL_ASPECT_VALUE
756
+ && imgdata.sizes.raw_aspect <= LIBRAW_IMAGE_ASPECT_MAXIMAL_REAL_ASPECT_VALUE
757
+ /* crops[0] is valid*/
758
+ && (imgdata.sizes.raw_inset_crops[0].cleft < 0xffff)
759
+ && (imgdata.sizes.raw_inset_crops[0].cleft + imgdata.sizes.raw_inset_crops[0].cwidth <= imgdata.sizes.raw_width)
760
+ && (imgdata.sizes.raw_inset_crops[0].ctop < 0xffff)
761
+ && (imgdata.sizes.raw_inset_crops[0].ctop + imgdata.sizes.raw_inset_crops[0].cheight <= imgdata.sizes.raw_height)
762
+ && imgdata.sizes.raw_inset_crops[0].cwidth > 0 && imgdata.sizes.raw_inset_crops[0].cheight >0
763
+ /* crops[1] is not set*/
764
+ && (imgdata.sizes.raw_inset_crops[1].cleft == 0xffff)
765
+ && (imgdata.sizes.raw_inset_crops[1].ctop == 0xffff)
766
+ )
767
+ {
768
+ float c0_ratio = float(imgdata.sizes.raw_inset_crops[0].cwidth) / float(imgdata.sizes.raw_inset_crops[0].cheight);
769
+ float c1_ratio = float(imgdata.sizes.raw_aspect) / 1000.f;
770
+ if (c0_ratio / c1_ratio < 0.98 || c0_ratio / c1_ratio > 1.02) // set crops[1]
771
+ {
772
+ if (c1_ratio > c0_ratio) // requested image is wider, cut from top/bottom
773
+ {
774
+ int newheight = int(imgdata.sizes.raw_inset_crops[0].cwidth / c1_ratio);
775
+ int dtop = (imgdata.sizes.raw_inset_crops[0].cheight - newheight) / 2;
776
+ imgdata.sizes.raw_inset_crops[1].ctop = imgdata.sizes.raw_inset_crops[0].ctop + dtop;
777
+ imgdata.sizes.raw_inset_crops[1].cheight = newheight;
778
+ imgdata.sizes.raw_inset_crops[1].cleft = imgdata.sizes.raw_inset_crops[0].cleft;
779
+ imgdata.sizes.raw_inset_crops[1].cwidth = imgdata.sizes.raw_inset_crops[0].cwidth;
780
+ }
781
+ else
782
+ {
783
+ int newwidth = int(imgdata.sizes.raw_inset_crops[0].cheight * c1_ratio);
784
+ int dleft = (imgdata.sizes.raw_inset_crops[0].cwidth - newwidth) / 2;
785
+ imgdata.sizes.raw_inset_crops[1].cleft = imgdata.sizes.raw_inset_crops[0].cleft + dleft;
786
+ imgdata.sizes.raw_inset_crops[1].cwidth = newwidth;
787
+ imgdata.sizes.raw_inset_crops[1].ctop = imgdata.sizes.raw_inset_crops[0].ctop;
788
+ imgdata.sizes.raw_inset_crops[1].cheight = imgdata.sizes.raw_inset_crops[0].cheight;
789
+ }
790
+ }
791
+ }
792
+
793
+ int adjust_margins = 0;
794
+ if (makeIs(LIBRAW_CAMERAMAKER_Fujifilm) && (imgdata.idata.filters == 9))
795
+ {
796
+ // Adjust top/left margins for X-Trans
797
+ int newtm = imgdata.sizes.top_margin % 6
798
+ ? (imgdata.sizes.top_margin / 6 + 1) * 6
799
+ : imgdata.sizes.top_margin;
800
+ int newlm = imgdata.sizes.left_margin % 6
801
+ ? (imgdata.sizes.left_margin / 6 + 1) * 6
802
+ : imgdata.sizes.left_margin;
803
+ if (newtm != imgdata.sizes.top_margin ||
804
+ newlm != imgdata.sizes.left_margin)
805
+ {
806
+ imgdata.sizes.height -= (newtm - imgdata.sizes.top_margin);
807
+ imgdata.sizes.top_margin = newtm;
808
+ imgdata.sizes.width -= (newlm - imgdata.sizes.left_margin);
809
+ imgdata.sizes.left_margin = newlm;
810
+ for (int c1 = 0; c1 < 6; c1++)
811
+ for (int c2 = 0; c2 < 6; c2++)
812
+ imgdata.idata.xtrans[c1][c2] = imgdata.idata.xtrans_abs[c1][c2];
813
+ }
814
+ adjust_margins = 6;
815
+ }
816
+ else if (!libraw_internal_data.internal_output_params.fuji_width
817
+ && imgdata.idata.filters >= 1000)
818
+ {
819
+ if ((imgdata.sizes.top_margin % 2) || (imgdata.sizes.left_margin % 2))
820
+ {
821
+ int crop[2] = { 0,0 };
822
+ unsigned filt;
823
+ int c;
824
+ if (imgdata.sizes.top_margin % 2)
825
+ {
826
+ imgdata.sizes.top_margin += 1;
827
+ imgdata.sizes.height -= 1;
828
+ crop[1] = 1;
829
+ }
830
+ if (imgdata.sizes.left_margin % 2)
831
+ {
832
+ imgdata.sizes.left_margin += 1;
833
+ imgdata.sizes.width -= 1;
834
+ crop[0] = 1;
835
+ }
836
+ for (filt = c = 0; c < 16; c++)
837
+ filt |= FC((c >> 1) + (crop[1]), (c & 1) + (crop[0])) << c * 2;
838
+ imgdata.idata.filters = filt;
839
+ }
840
+ adjust_margins = 2;
841
+ }
842
+
843
+ if(adjust_margins) // adjust crop_inset margins
844
+ for (int i = 0; i < 2; i++)
845
+ {
846
+ if (imgdata.sizes.raw_inset_crops[i].cleft && imgdata.sizes.raw_inset_crops[i].cleft < 0xffff
847
+ && imgdata.sizes.raw_inset_crops[i].cwidth && imgdata.sizes.raw_inset_crops[i].cwidth < 0xffff
848
+ && (imgdata.sizes.raw_inset_crops[i].cleft%adjust_margins)
849
+ && (imgdata.sizes.raw_inset_crops[i].cwidth > adjust_margins))
850
+ {
851
+ int newleft = ((imgdata.sizes.raw_inset_crops[i].cleft / adjust_margins) + 1) * adjust_margins;
852
+ int diff = newleft - imgdata.sizes.raw_inset_crops[i].cleft;
853
+ if (diff > 0)
854
+ {
855
+ imgdata.sizes.raw_inset_crops[i].cleft += diff;
856
+ imgdata.sizes.raw_inset_crops[i].cwidth -= diff;
857
+ }
858
+ }
859
+ if (imgdata.sizes.raw_inset_crops[i].ctop && imgdata.sizes.raw_inset_crops[i].ctop < 0xffff
860
+ && imgdata.sizes.raw_inset_crops[i].cheight && imgdata.sizes.raw_inset_crops[i].cheight < 0xffff
861
+ && (imgdata.sizes.raw_inset_crops[i].ctop%adjust_margins)
862
+ && (imgdata.sizes.raw_inset_crops[i].cheight > adjust_margins))
863
+ {
864
+ int newtop = ((imgdata.sizes.raw_inset_crops[i].ctop / adjust_margins) + 1) * adjust_margins;
865
+ int diff = newtop - imgdata.sizes.raw_inset_crops[i].ctop;
866
+ if (diff > 0)
867
+ {
868
+ imgdata.sizes.raw_inset_crops[i].ctop += diff;
869
+ imgdata.sizes.raw_inset_crops[i].cheight -= diff;
870
+ }
871
+ }
872
+ }
873
+
874
+
875
+ #ifdef USE_DNGSDK
876
+ if (
877
+ imgdata.rawparams.use_dngsdk &&
878
+ !(imgdata.rawparams.options & (LIBRAW_RAWOPTIONS_DNG_STAGE2 | LIBRAW_RAWOPTIONS_DNG_STAGE3 | LIBRAW_RAWOPTIONS_DNG_DISABLEWBADJUST)))
879
+ #endif
880
+ {
881
+ // Fix DNG white balance if needed: observed only for Kalpanika X3F tools produced DNGs
882
+ if (imgdata.idata.dng_version && (imgdata.idata.filters == 0) &&
883
+ imgdata.idata.colors > 1 && imgdata.idata.colors < 5)
884
+ {
885
+ float delta[4] = { 0.f, 0.f, 0.f, 0.f };
886
+ int black[4];
887
+ for (int c = 0; c < 4; c++)
888
+ black[c] = imgdata.color.dng_levels.dng_black +
889
+ imgdata.color.dng_levels.dng_cblack[c];
890
+ for (int c = 0; c < imgdata.idata.colors; c++)
891
+ delta[c] = imgdata.color.dng_levels.dng_whitelevel[c] - black[c];
892
+ float mindelta = delta[0], maxdelta = delta[0];
893
+ for (int c = 1; c < imgdata.idata.colors; c++)
894
+ {
895
+ if (mindelta > delta[c])
896
+ mindelta = delta[c];
897
+ if (maxdelta < delta[c])
898
+ maxdelta = delta[c];
899
+ }
900
+ if (mindelta > 1 && maxdelta < (mindelta * 20)) // safety
901
+ {
902
+ for (int c = 0; c < imgdata.idata.colors; c++)
903
+ {
904
+ imgdata.color.cam_mul[c] /= (delta[c] / maxdelta);
905
+ imgdata.color.pre_mul[c] /= (delta[c] / maxdelta);
906
+ }
907
+ imgdata.color.maximum = imgdata.color.cblack[0] + maxdelta;
908
+ }
909
+ }
910
+ }
911
+
912
+ if (imgdata.idata.dng_version &&
913
+ makeIs(LIBRAW_CAMERAMAKER_Panasonic)
914
+ && !strcasecmp(imgdata.idata.normalized_model, "DMC-LX100"))
915
+ imgdata.sizes.width = 4288;
916
+
917
+ if (imgdata.idata.dng_version
918
+ && makeIs(LIBRAW_CAMERAMAKER_Leica)
919
+ && !strcasecmp(imgdata.idata.normalized_model, "SL2"))
920
+ imgdata.sizes.height -= 16;
921
+
922
+ if (makeIs(LIBRAW_CAMERAMAKER_Sony) &&
923
+ imgdata.idata.dng_version)
924
+ {
925
+ if (S.raw_width == 3984)
926
+ S.width = 3925;
927
+ else if (S.raw_width == 4288)
928
+ S.width = S.raw_width - 32;
929
+ else if (S.raw_width == 4928 && S.height < 3280)
930
+ S.width = S.raw_width - 8;
931
+ else if (S.raw_width == 5504)
932
+ S.width = S.raw_width - (S.height > 3664 ? 8 : 32);
933
+ }
934
+
935
+ if (makeIs(LIBRAW_CAMERAMAKER_Sony) &&
936
+ !imgdata.idata.dng_version)
937
+ {
938
+ if(load_raw ==&LibRaw::sony_arq_load_raw)
939
+ {
940
+ if(S.raw_width > 12000) // A7RM4 16x, both APS-C and APS
941
+ S.width = S.raw_width - 64;
942
+ else // A7RM3/M4 4x merge
943
+ S.width = S.raw_width - 32;
944
+ }
945
+
946
+ if (((!strncasecmp(imgdata.idata.model, "ILCE-7RM", 8) ||
947
+ !strcasecmp(imgdata.idata.model, "ILCA-99M2")) &&
948
+ (S.raw_width == 5216 || S.raw_width == 6304)) // A7RM2/M3/A99M2 in APS mode; A7RM4 in APS-C
949
+ ||
950
+ (!strcasecmp(imgdata.idata.model, "ILCE-7R") && S.raw_width >= 4580 &&
951
+ S.raw_width < 5020) // A7R in crop mode, no samples, so size est.
952
+ || (!strcasecmp(imgdata.idata.model, "ILCE-7") &&
953
+ S.raw_width == 3968) // A7 in crop mode
954
+ ||
955
+ ((!strncasecmp(imgdata.idata.model, "ILCE-7M", 7) ||
956
+ !strcasecmp(imgdata.idata.model, "ILCE-9") ||
957
+ #if 0
958
+ !strcasecmp(imgdata.idata.model,
959
+ "SLT-A99V")) // Does SLT-A99 also have APS-C mode??
960
+ #endif
961
+ (mnCamID == SonyID_SLT_A99)) // 2 reasons: some cameras are SLT-A99, no 'V'; some are Hasselblad HV
962
+ && S.raw_width > 3750 &&
963
+ S.raw_width < 4120) // A7M2, A7M3, AA9, most likely APS-C raw_width
964
+ // is 3968 (same w/ A7), but no samples, so guess
965
+ || (!strncasecmp(imgdata.idata.model, "ILCE-7S", 7) &&
966
+ S.raw_width == 2816) // A7S2=> exact, hope it works for A7S-I too
967
+ )
968
+ S.width = S.raw_width - 32;
969
+ }
970
+
971
+
972
+ // FIXME: it is possible that DNG contains 4x main frames + some previews; in this case imgdata.idata.raw_count will be greater than 4
973
+ if (makeIs(LIBRAW_CAMERAMAKER_Pentax) &&
974
+ /*!strcasecmp(imgdata.idata.model,"K-3 II") &&*/
975
+ imgdata.idata.raw_count == 4 &&
976
+ (imgdata.rawparams.options & LIBRAW_RAWOPTIONS_PENTAX_PS_ALLFRAMES))
977
+ {
978
+ imgdata.idata.raw_count = 1;
979
+ imgdata.idata.filters = 0;
980
+ imgdata.idata.colors = 4;
981
+ imgdata.sizes.top_margin+=2;
982
+ imgdata.sizes.left_margin+=2;
983
+ imgdata.sizes.width-=4;
984
+ imgdata.sizes.height-=4;
985
+ IO.mix_green = 1;
986
+ pentax_component_load_raw = load_raw;
987
+ load_raw = &LibRaw::pentax_4shot_load_raw;
988
+ }
989
+
990
+ if (!imgdata.idata.dng_version && makeIs(LIBRAW_CAMERAMAKER_Leaf) &&
991
+ !strcmp(imgdata.idata.model, "Credo 50"))
992
+ {
993
+ imgdata.color.pre_mul[0] = 1.f / 0.3984f;
994
+ imgdata.color.pre_mul[2] = 1.f / 0.7666f;
995
+ imgdata.color.pre_mul[1] = imgdata.color.pre_mul[3] = 1.0;
996
+ }
997
+
998
+ if (!imgdata.idata.dng_version && makeIs(LIBRAW_CAMERAMAKER_Fujifilm) &&
999
+ (!strncmp(imgdata.idata.model, "S20Pro", 6) ||
1000
+ !strncmp(imgdata.idata.model, "F700", 4)))
1001
+ {
1002
+ imgdata.sizes.raw_width /= 2;
1003
+ load_raw = &LibRaw::unpacked_load_raw_fuji_f700s20;
1004
+ }
1005
+
1006
+ if (load_raw == &LibRaw::packed_load_raw &&
1007
+ makeIs(LIBRAW_CAMERAMAKER_Nikon) &&
1008
+ !libraw_internal_data.unpacker_data.load_flags &&
1009
+ (!strncasecmp(imgdata.idata.model, "D810", 4) ||
1010
+ !strcasecmp(imgdata.idata.model, "D4S")) &&
1011
+ libraw_internal_data.unpacker_data.data_size * 2u ==
1012
+ imgdata.sizes.raw_height * imgdata.sizes.raw_width * 3u)
1013
+ {
1014
+ libraw_internal_data.unpacker_data.load_flags = 80;
1015
+ }
1016
+ // Adjust BL for Sony A900/A850
1017
+ if (load_raw == &LibRaw::packed_load_raw &&
1018
+ makeIs(LIBRAW_CAMERAMAKER_Sony)) // 12 bit sony, but metadata may be for 14-bit range
1019
+ {
1020
+ if (C.maximum > 4095)
1021
+ C.maximum = 4095;
1022
+ if (C.black > 256 || C.cblack[0] > 256)
1023
+ {
1024
+ C.black /= 4;
1025
+ for (int c = 0; c < 4; c++)
1026
+ C.cblack[c] /= 4;
1027
+ for (unsigned c = 0; c < C.cblack[4] * C.cblack[5]; c++)
1028
+ C.cblack[6 + c] /= 4;
1029
+ }
1030
+ }
1031
+
1032
+ if (load_raw == &LibRaw::nikon_yuv_load_raw) // Is it Nikon sRAW?
1033
+ {
1034
+ load_raw = &LibRaw::nikon_load_sraw;
1035
+ C.black = 0;
1036
+ memset(C.cblack, 0, sizeof(C.cblack));
1037
+ imgdata.idata.filters = 0;
1038
+ libraw_internal_data.unpacker_data.tiff_samples = 3;
1039
+ imgdata.idata.colors = 3;
1040
+ double beta_1 = -5.79342238397656E-02;
1041
+ double beta_2 = 3.28163551282665;
1042
+ double beta_3 = -8.43136004842678;
1043
+ double beta_4 = 1.03533181861023E+01;
1044
+ for (int i = 0; i <= 3072; i++)
1045
+ {
1046
+ double x = (double)i / 3072.;
1047
+ double y = (1. - exp(-beta_1 * x - beta_2 * x * x - beta_3 * x * x * x -
1048
+ beta_4 * x * x * x * x));
1049
+ if (y < 0.)
1050
+ y = 0.;
1051
+ imgdata.color.curve[i] = (y * 16383.);
1052
+ }
1053
+ for (int i = 0; i < 3; i++)
1054
+ for (int j = 0; j < 4; j++)
1055
+ imgdata.color.rgb_cam[i][j] = float(i == j);
1056
+ }
1057
+ // Adjust BL for Nikon 12bit
1058
+ if ((load_raw == &LibRaw::nikon_load_raw ||
1059
+ load_raw == &LibRaw::packed_load_raw ||
1060
+ load_raw == &LibRaw::nikon_load_padded_packed_raw) &&
1061
+ makeIs(LIBRAW_CAMERAMAKER_Nikon) &&
1062
+ strncmp(imgdata.idata.model, "COOLPIX", 7) &&
1063
+ libraw_internal_data.unpacker_data.tiff_bps == 12)
1064
+ {
1065
+ C.maximum = 4095;
1066
+ C.black /= 4;
1067
+ for (int c = 0; c < 4; c++)
1068
+ C.cblack[c] /= 4;
1069
+ for (unsigned c = 0; c < C.cblack[4] * C.cblack[5]; c++)
1070
+ C.cblack[6 + c] /= 4;
1071
+ }
1072
+
1073
+ // Adjust wb_already_applied
1074
+ if (load_raw == &LibRaw::nikon_load_sraw)
1075
+ imgdata.color.as_shot_wb_applied =
1076
+ LIBRAW_ASWB_APPLIED | LIBRAW_ASWB_NIKON_SRAW;
1077
+ else if (makeIs(LIBRAW_CAMERAMAKER_Canon) &&
1078
+ MN.canon.multishot[0] >= 8 &&
1079
+ MN.canon.multishot[1] > 0)
1080
+ imgdata.color.as_shot_wb_applied =
1081
+ LIBRAW_ASWB_APPLIED | LIBRAW_ASWB_CANON;
1082
+ else if (makeIs(LIBRAW_CAMERAMAKER_Nikon) &&
1083
+ MN.nikon.ExposureMode == 1)
1084
+ imgdata.color.as_shot_wb_applied =
1085
+ LIBRAW_ASWB_APPLIED | LIBRAW_ASWB_NIKON;
1086
+ else if (makeIs(LIBRAW_CAMERAMAKER_Pentax) &&
1087
+ ((MN.pentax.MultiExposure & 0x01) == 1))
1088
+ imgdata.color.as_shot_wb_applied =
1089
+ LIBRAW_ASWB_APPLIED | LIBRAW_ASWB_PENTAX;
1090
+ else
1091
+ imgdata.color.as_shot_wb_applied = 0;
1092
+
1093
+ // Adjust Highlight Linearity limit
1094
+ if (C.linear_max[0] < 0)
1095
+ {
1096
+ if (imgdata.idata.dng_version)
1097
+ {
1098
+ for (int c = 0; c < 4; c++)
1099
+ C.linear_max[c] = -1 * C.linear_max[c] + imgdata.color.cblack[c + 6];
1100
+ }
1101
+ else
1102
+ {
1103
+ for (int c = 0; c < 4; c++)
1104
+ C.linear_max[c] = -1 * C.linear_max[c] + imgdata.color.cblack[c];
1105
+ }
1106
+ }
1107
+
1108
+ if (makeIs(LIBRAW_CAMERAMAKER_Nikon) &&
1109
+ (!C.linear_max[0]) && (C.maximum > 1024) && (load_raw != &LibRaw::nikon_load_sraw))
1110
+ {
1111
+ C.linear_max[0] = C.linear_max[1] = C.linear_max[2] = C.linear_max[3] =
1112
+ (long)((float)(C.maximum) / 1.07f);
1113
+ }
1114
+
1115
+ // Correct WB for Samsung GX20
1116
+ if (
1117
+ #if 0
1118
+ /* GX20 should be corrected, but K20 is not */
1119
+ makeIs(LIBRAW_CAMERAMAKER_Pentax) &&
1120
+ !strcasecmp(imgdata.idata.normalized_model, "K20D")
1121
+ #endif
1122
+ #if 0
1123
+ !strcasecmp(imgdata.idata.make, "Samsung") &&
1124
+ !strcasecmp(imgdata.idata.model, "GX20")
1125
+ #endif
1126
+ makeIs(LIBRAW_CAMERAMAKER_Pentax) &&
1127
+ (mnCamID == PentaxID_GX20) // Samsung rebranding
1128
+ )
1129
+ {
1130
+ for (int cnt = LIBRAW_WBI_Unknown; cnt <= LIBRAW_WBI_StudioTungsten; cnt++) {
1131
+ if (C.WB_Coeffs[cnt][1]) {
1132
+ C.WB_Coeffs[cnt][0] = (int)((float)(C.WB_Coeffs[cnt][0]) * 1.0503f);
1133
+ C.WB_Coeffs[cnt][2] = (int)((float)(C.WB_Coeffs[cnt][2]) * 2.2867f);
1134
+ }
1135
+ }
1136
+ for (int cnt = 0; cnt < 64; cnt++) {
1137
+ if (C.WBCT_Coeffs[cnt][0] > 0.0f) {
1138
+ C.WBCT_Coeffs[cnt][1] *= 1.0503f;
1139
+ C.WBCT_Coeffs[cnt][3] *= 2.2867f;
1140
+ }
1141
+ }
1142
+ for(int cnt = 0; cnt < 4; cnt++)
1143
+ imgdata.color.pre_mul[cnt] =
1144
+ C.WB_Coeffs[LIBRAW_WBI_Daylight][cnt];
1145
+ }
1146
+
1147
+ // Adjust BL for Panasonic
1148
+ if (load_raw == &LibRaw::panasonic_load_raw &&
1149
+ makeIs(LIBRAW_CAMERAMAKER_Panasonic) &&
1150
+ ID.pana_black[0] && ID.pana_black[1] && ID.pana_black[2])
1151
+ {
1152
+ if (libraw_internal_data.unpacker_data.pana_encoding == 5)
1153
+ libraw_internal_data.internal_output_params.zero_is_bad = 0;
1154
+ C.black = 0;
1155
+ int add = libraw_internal_data.unpacker_data.pana_encoding == 4 ? 15 : 0;
1156
+ C.cblack[0] = ID.pana_black[0] + add;
1157
+ C.cblack[1] = C.cblack[3] = ID.pana_black[1] + add;
1158
+ C.cblack[2] = ID.pana_black[2] + add;
1159
+ unsigned i = C.cblack[3];
1160
+ for (int c = 0; c < 3; c++)
1161
+ if (i > C.cblack[c])
1162
+ i = C.cblack[c];
1163
+ for (int c = 0; c < 4; c++)
1164
+ C.cblack[c] -= i;
1165
+ C.black = i;
1166
+ }
1167
+
1168
+ // Adjust sizes for X3F processing
1169
+ #ifdef USE_X3FTOOLS
1170
+ if (load_raw == &LibRaw::x3f_load_raw)
1171
+ {
1172
+ for (int i = 0; i < foveon_count; i++)
1173
+ if (!strcasecmp(imgdata.idata.make, foveon_data[i].make) &&
1174
+ !strcasecmp(imgdata.idata.model, foveon_data[i].model) &&
1175
+ imgdata.sizes.raw_width == foveon_data[i].raw_width &&
1176
+ imgdata.sizes.raw_height == foveon_data[i].raw_height)
1177
+ {
1178
+ imgdata.sizes.top_margin = foveon_data[i].top_margin;
1179
+ imgdata.sizes.left_margin = foveon_data[i].left_margin;
1180
+ imgdata.sizes.width = imgdata.sizes.iwidth = foveon_data[i].width;
1181
+ imgdata.sizes.height = imgdata.sizes.iheight = foveon_data[i].height;
1182
+ C.maximum = foveon_data[i].white;
1183
+ break;
1184
+ }
1185
+ }
1186
+ #endif
1187
+ #if 0
1188
+ size_t bytes = ID.input->size()-libraw_internal_data.unpacker_data.data_offset;
1189
+ float bpp = float(bytes)/float(S.raw_width)/float(S.raw_height);
1190
+ float bpp2 = float(bytes)/float(S.width)/float(S.height);
1191
+ if(!strcasecmp(imgdata.idata.make,"Hasselblad") && bpp == 6.0f)
1192
+ {
1193
+ load_raw = &LibRaw::hasselblad_full_load_raw;
1194
+ S.width = S.raw_width;
1195
+ S.height = S.raw_height;
1196
+ P1.filters = 0;
1197
+ P1.colors=3;
1198
+ P1.raw_count=1;
1199
+ C.maximum=0xffff;
1200
+ }
1201
+ #endif
1202
+ if (C.profile_length)
1203
+ {
1204
+ if (C.profile)
1205
+ free(C.profile);
1206
+ INT64 profile_sz = MIN(INT64(C.profile_length), ID.input->size() - ID.profile_offset);
1207
+ if (profile_sz > 0LL && profile_sz < LIBRAW_MAX_PROFILE_SIZE_MB * 1024LL * 1024LL)
1208
+ {
1209
+ C.profile = calloc(size_t(profile_sz),1);
1210
+ C.profile_length = unsigned(profile_sz);
1211
+ ID.input->seek(ID.profile_offset, SEEK_SET);
1212
+ ID.input->read(C.profile, size_t(profile_sz), 1);
1213
+ }
1214
+ else
1215
+ C.profile = NULL;
1216
+ }
1217
+
1218
+ SET_PROC_FLAG(LIBRAW_PROGRESS_IDENTIFY);
1219
+ }
1220
+ catch (const std::bad_alloc&)
1221
+ {
1222
+ EXCEPTION_HANDLER(LIBRAW_EXCEPTION_ALLOC);
1223
+ }
1224
+ catch (const LibRaw_exceptions& err)
1225
+ {
1226
+ EXCEPTION_HANDLER(err);
1227
+ }
1228
+ catch (const std::exception& )
1229
+ {
1230
+ EXCEPTION_HANDLER(LIBRAW_EXCEPTION_IO_CORRUPT);
1231
+ }
1232
+
1233
+ final:;
1234
+
1235
+ if (P1.raw_count < 1)
1236
+ return LIBRAW_FILE_UNSUPPORTED;
1237
+
1238
+ write_fun = &LibRaw::write_ppm_tiff;
1239
+
1240
+ if (load_raw == &LibRaw::kodak_ycbcr_load_raw)
1241
+ {
1242
+ S.height += S.height & 1;
1243
+ S.width += S.width & 1;
1244
+ }
1245
+
1246
+ IO.shrink =
1247
+ P1.filters &&
1248
+ (O.half_size || ((O.threshold || O.aber[0] != 1 || O.aber[2] != 1)));
1249
+ if (IO.shrink && P1.filters >= 1000)
1250
+ {
1251
+ S.width &= 65534;
1252
+ S.height &= 65534;
1253
+ }
1254
+
1255
+ S.iheight = (S.height + IO.shrink) >> IO.shrink;
1256
+ S.iwidth = (S.width + IO.shrink) >> IO.shrink;
1257
+
1258
+ // Save color,sizes and internal data into raw_image fields
1259
+ memmove(&imgdata.rawdata.color, &imgdata.color, sizeof(imgdata.color));
1260
+ memmove(&imgdata.rawdata.sizes, &imgdata.sizes, sizeof(imgdata.sizes));
1261
+ memmove(&imgdata.rawdata.iparams, &imgdata.idata, sizeof(imgdata.idata));
1262
+ memmove(&imgdata.rawdata.ioparams,
1263
+ &libraw_internal_data.internal_output_params,
1264
+ sizeof(libraw_internal_data.internal_output_params));
1265
+
1266
+ SET_PROC_FLAG(LIBRAW_PROGRESS_SIZE_ADJUST);
1267
+
1268
+ return LIBRAW_SUCCESS;
1269
+ }