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,873 @@
1
+ /* -*- C++ -*-
2
+ * Copyright 2019-2022 LibRaw LLC (info@libraw.org)
3
+ *
4
+ * PhaseOne IIQ-Sv2 decoder is inspired by code provided by Daniel Vogelbacher <daniel@chaospixel.com>
5
+ *
6
+
7
+ LibRaw is free software; you can redistribute it and/or modify
8
+ it under the terms of the one of two licenses as you choose:
9
+
10
+ 1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
11
+ (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
12
+
13
+ 2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
14
+ (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
15
+
16
+ */
17
+
18
+ #include "../../internal/libraw_cxx_defs.h"
19
+ #include <vector>
20
+ #include <algorithm> // for std::sort
21
+
22
+ void LibRaw::sony_arq_load_raw()
23
+ {
24
+ int row, col;
25
+ if (imgdata.idata.filters || imgdata.idata.colors < 3)
26
+ throw LIBRAW_EXCEPTION_IO_CORRUPT;
27
+
28
+ read_shorts(imgdata.rawdata.raw_image,
29
+ imgdata.sizes.raw_width * imgdata.sizes.raw_height * 4);
30
+ libraw_internal_data.internal_data.input->seek(
31
+ -2, SEEK_CUR); // avoid wrong eof error
32
+
33
+ if(imgdata.rawparams.options & LIBRAW_RAWOPTIONS_ARQ_SKIP_CHANNEL_SWAP)
34
+ return;
35
+
36
+ for (row = 0; row < imgdata.sizes.raw_height; row++)
37
+ {
38
+ unsigned short(*rowp)[4] =
39
+ (unsigned short(*)[4]) &
40
+ imgdata.rawdata.raw_image[row * imgdata.sizes.raw_width * 4];
41
+ for (col = 0; col < imgdata.sizes.raw_width; col++)
42
+ {
43
+ unsigned short g2 = rowp[col][2];
44
+ rowp[col][2] = rowp[col][3];
45
+ rowp[col][3] = g2;
46
+ if (((unsigned)(row - imgdata.sizes.top_margin) < imgdata.sizes.height) &&
47
+ ((unsigned)(col - imgdata.sizes.left_margin) < imgdata.sizes.width) &&
48
+ (MAX(MAX(rowp[col][0], rowp[col][1]),
49
+ MAX(rowp[col][2], rowp[col][3])) > imgdata.color.maximum))
50
+ derror();
51
+ }
52
+ }
53
+ }
54
+
55
+ void LibRaw::pentax_4shot_load_raw()
56
+ {
57
+ #ifdef LIBRAW_CALLOC_RAWSTORE
58
+ ushort *plane = (ushort *)calloc(size_t(imgdata.sizes.raw_width) *
59
+ size_t(imgdata.sizes.raw_height), sizeof(ushort));
60
+ #else
61
+ ushort *plane = (ushort *)malloc(size_t(imgdata.sizes.raw_width) *
62
+ size_t(imgdata.sizes.raw_height) * sizeof(ushort));
63
+ #endif
64
+ int alloc_sz = imgdata.sizes.raw_width * (imgdata.sizes.raw_height + 16) * 4 *
65
+ sizeof(ushort);
66
+ #ifdef LIBRAW_CALLOC_RAWSTORE
67
+ ushort(*result)[4] = (ushort(*)[4])calloc(alloc_sz,1);
68
+ #else
69
+ ushort(*result)[4] = (ushort(*)[4])malloc(alloc_sz);
70
+ #endif
71
+ struct movement_t
72
+ {
73
+ int row, col;
74
+ } _move[4] = {
75
+ {1, 1},
76
+ {0, 1},
77
+ {0, 0},
78
+ {1, 0},
79
+ };
80
+
81
+ int tidx = 0;
82
+ for (int i = 0; i < 4; i++)
83
+ {
84
+ int move_row, move_col;
85
+ if (imgdata.rawparams.p4shot_order[i] >= '0' &&
86
+ imgdata.rawparams.p4shot_order[i] <= '3')
87
+ {
88
+ move_row = ((imgdata.rawparams.p4shot_order[i] - '0') & 2) ? 1 : 0;
89
+ move_col = ((imgdata.rawparams.p4shot_order[i] - '0') & 1) ? 1 : 0;
90
+ }
91
+ else
92
+ {
93
+ move_row = _move[i].row;
94
+ move_col = _move[i].col;
95
+ }
96
+ for (; tidx < 16; tidx++)
97
+ if (tiff_ifd[tidx].t_width == imgdata.sizes.raw_width &&
98
+ tiff_ifd[tidx].t_height == imgdata.sizes.raw_height &&
99
+ tiff_ifd[tidx].bps > 8 && tiff_ifd[tidx].samples == 1)
100
+ break;
101
+ if (tidx >= 16)
102
+ break;
103
+ imgdata.rawdata.raw_image = plane;
104
+ ID.input->seek(tiff_ifd[tidx].offset, SEEK_SET);
105
+ imgdata.idata.filters = 0xb4b4b4b4;
106
+ libraw_internal_data.unpacker_data.data_offset = tiff_ifd[tidx].offset;
107
+ (this->*pentax_component_load_raw)();
108
+ for (int row = 0; row < imgdata.sizes.raw_height - move_row; row++)
109
+ {
110
+ int colors[2];
111
+ for (int c = 0; c < 2; c++)
112
+ colors[c] = COLOR(row, c);
113
+ ushort *srcrow = &plane[imgdata.sizes.raw_width * row];
114
+ ushort(*dstrow)[4] =
115
+ &result[(imgdata.sizes.raw_width) * (row + move_row) + move_col];
116
+ for (int col = 0; col < imgdata.sizes.raw_width - move_col; col++)
117
+ dstrow[col][colors[col % 2]] = srcrow[col];
118
+ }
119
+ tidx++;
120
+ }
121
+
122
+ if (imgdata.color.cblack[4] == 2 && imgdata.color.cblack[5] == 2)
123
+ for (int c = 0; c < 4; c++)
124
+ imgdata.color.cblack[FC(c / 2, c % 2)] +=
125
+ imgdata.color.cblack[6 +
126
+ c / 2 % imgdata.color.cblack[4] *
127
+ imgdata.color.cblack[5] +
128
+ c % 2 % imgdata.color.cblack[5]];
129
+ imgdata.color.cblack[4] = imgdata.color.cblack[5] = 0;
130
+
131
+ // assign things back:
132
+ imgdata.sizes.raw_pitch = imgdata.sizes.raw_width * 8;
133
+ imgdata.idata.filters = 0;
134
+ imgdata.rawdata.raw_alloc = imgdata.rawdata.color4_image = result;
135
+ free(plane);
136
+ imgdata.rawdata.raw_image = 0;
137
+ }
138
+
139
+ void LibRaw::hasselblad_full_load_raw()
140
+ {
141
+ int row, col;
142
+
143
+ for (row = 0; row < S.height; row++)
144
+ for (col = 0; col < S.width; col++)
145
+ {
146
+ read_shorts(&imgdata.image[row * S.width + col][2], 1); // B
147
+ read_shorts(&imgdata.image[row * S.width + col][1], 1); // G
148
+ read_shorts(&imgdata.image[row * S.width + col][0], 1); // R
149
+ }
150
+ }
151
+
152
+ static inline void unpack7bytesto4x16(unsigned char *src, unsigned short *dest)
153
+ {
154
+ dest[0] = (src[0] << 6) | (src[1] >> 2);
155
+ dest[1] = ((src[1] & 0x3) << 12) | (src[2] << 4) | (src[3] >> 4);
156
+ dest[2] = (src[3] & 0xf) << 10 | (src[4] << 2) | (src[5] >> 6);
157
+ dest[3] = ((src[5] & 0x3f) << 8) | src[6];
158
+ }
159
+
160
+ static inline void unpack28bytesto16x16ns(unsigned char *src,
161
+ unsigned short *dest)
162
+ {
163
+ dest[0] = (src[3] << 6) | (src[2] >> 2);
164
+ dest[1] = ((src[2] & 0x3) << 12) | (src[1] << 4) | (src[0] >> 4);
165
+ dest[2] = (src[0] & 0xf) << 10 | (src[7] << 2) | (src[6] >> 6);
166
+ dest[3] = ((src[6] & 0x3f) << 8) | src[5];
167
+ dest[4] = (src[4] << 6) | (src[11] >> 2);
168
+ dest[5] = ((src[11] & 0x3) << 12) | (src[10] << 4) | (src[9] >> 4);
169
+ dest[6] = (src[9] & 0xf) << 10 | (src[8] << 2) | (src[15] >> 6);
170
+ dest[7] = ((src[15] & 0x3f) << 8) | src[14];
171
+ dest[8] = (src[13] << 6) | (src[12] >> 2);
172
+ dest[9] = ((src[12] & 0x3) << 12) | (src[19] << 4) | (src[18] >> 4);
173
+ dest[10] = (src[18] & 0xf) << 10 | (src[17] << 2) | (src[16] >> 6);
174
+ dest[11] = ((src[16] & 0x3f) << 8) | src[23];
175
+ dest[12] = (src[22] << 6) | (src[21] >> 2);
176
+ dest[13] = ((src[21] & 0x3) << 12) | (src[20] << 4) | (src[27] >> 4);
177
+ dest[14] = (src[27] & 0xf) << 10 | (src[26] << 2) | (src[25] >> 6);
178
+ dest[15] = ((src[25] & 0x3f) << 8) | src[24];
179
+ }
180
+
181
+ #define swab32(x) \
182
+ ((unsigned int)((((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
183
+ (((unsigned int)(x) & (unsigned int)0x0000ff00UL) << 8) | \
184
+ (((unsigned int)(x) & (unsigned int)0x00ff0000UL) >> 8) | \
185
+ (((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24)))
186
+
187
+ static inline void swab32arr(unsigned *arr, unsigned len)
188
+ {
189
+ for (unsigned i = 0; i < len; i++)
190
+ arr[i] = swab32(arr[i]);
191
+ }
192
+ #undef swab32
193
+
194
+ static inline void unpack7bytesto4x16_nikon(unsigned char *src,
195
+ unsigned short *dest)
196
+ {
197
+ dest[3] = (src[6] << 6) | (src[5] >> 2);
198
+ dest[2] = ((src[5] & 0x3) << 12) | (src[4] << 4) | (src[3] >> 4);
199
+ dest[1] = (src[3] & 0xf) << 10 | (src[2] << 2) | (src[1] >> 6);
200
+ dest[0] = ((src[1] & 0x3f) << 8) | src[0];
201
+ }
202
+
203
+ void LibRaw::nikon_14bit_load_raw()
204
+ {
205
+ const unsigned linelen =
206
+ (unsigned)(ceilf((float)(S.raw_width * 7 / 4) / 16.0)) *
207
+ 16; // 14512; // S.raw_width * 7 / 4;
208
+ const unsigned pitch = S.raw_pitch ? S.raw_pitch / 2 : S.raw_width;
209
+ unsigned char *buf = (unsigned char *)calloc(linelen,1);
210
+ for (int row = 0; row < S.raw_height; row++)
211
+ {
212
+ unsigned bytesread =
213
+ libraw_internal_data.internal_data.input->read(buf, 1, linelen);
214
+ unsigned short *dest = &imgdata.rawdata.raw_image[pitch * row];
215
+ // swab32arr((unsigned *)buf, bytesread / 4);
216
+ for (unsigned int sp = 0, dp = 0;
217
+ dp < pitch - 3 && sp < linelen - 6 && sp < bytesread - 6;
218
+ sp += 7, dp += 4)
219
+ unpack7bytesto4x16_nikon(buf + sp, dest + dp);
220
+ }
221
+ free(buf);
222
+ }
223
+
224
+ void LibRaw::fuji_14bit_load_raw()
225
+ {
226
+ const unsigned linelen = S.raw_width * 7 / 4;
227
+ const unsigned pitch = S.raw_pitch ? S.raw_pitch / 2 : S.raw_width;
228
+ unsigned char *buf = (unsigned char *)calloc(linelen,1);
229
+
230
+ for (int row = 0; row < S.raw_height; row++)
231
+ {
232
+ unsigned bytesread =
233
+ libraw_internal_data.internal_data.input->read(buf, 1, linelen);
234
+ unsigned short *dest = &imgdata.rawdata.raw_image[pitch * row];
235
+ if (bytesread % 28)
236
+ {
237
+ swab32arr((unsigned *)buf, bytesread / 4);
238
+ for (unsigned int sp = 0, dp = 0;
239
+ dp < pitch - 3 && sp < linelen - 6 && sp < bytesread - 6;
240
+ sp += 7, dp += 4)
241
+ unpack7bytesto4x16(buf + sp, dest + dp);
242
+ }
243
+ else
244
+ for (unsigned int sp = 0, dp = 0;
245
+ dp < pitch - 15 && sp < linelen - 27 && sp < bytesread - 27;
246
+ sp += 28, dp += 16)
247
+ unpack28bytesto16x16ns(buf + sp, dest + dp);
248
+ }
249
+ free(buf);
250
+ }
251
+ void LibRaw::nikon_load_padded_packed_raw() // 12 bit per pixel, padded to 16
252
+ // bytes
253
+ {
254
+ // libraw_internal_data.unpacker_data.load_flags -> row byte count
255
+ if (libraw_internal_data.unpacker_data.load_flags < 2000 ||
256
+ libraw_internal_data.unpacker_data.load_flags > 64000)
257
+ return;
258
+ unsigned char *buf =
259
+ (unsigned char *)calloc(libraw_internal_data.unpacker_data.load_flags,1);
260
+ for (int row = 0; row < S.raw_height; row++)
261
+ {
262
+ checkCancel();
263
+ libraw_internal_data.internal_data.input->read(
264
+ buf, libraw_internal_data.unpacker_data.load_flags, 1);
265
+ for (int icol = 0; icol < S.raw_width / 2; icol++)
266
+ {
267
+ imgdata.rawdata.raw_image[(row)*S.raw_width + (icol * 2)] =
268
+ ((buf[icol * 3 + 1] & 0xf) << 8) | buf[icol * 3];
269
+ imgdata.rawdata.raw_image[(row)*S.raw_width + (icol * 2 + 1)] =
270
+ buf[icol * 3 + 2] << 4 | ((buf[icol * 3 + 1] & 0xf0) >> 4);
271
+ }
272
+ }
273
+ free(buf);
274
+ }
275
+
276
+ void LibRaw::nikon_load_striped_packed_raw()
277
+ {
278
+ int vbits = 0, bwide, rbits, bite, row, col, i;
279
+
280
+ UINT64 bitbuf = 0;
281
+ unsigned load_flags = 24; // libraw_internal_data.unpacker_data.load_flags;
282
+ unsigned tiff_bps = libraw_internal_data.unpacker_data.tiff_bps;
283
+
284
+ struct tiff_ifd_t *ifd = &tiff_ifd[0];
285
+ while (ifd < &tiff_ifd[libraw_internal_data.identify_data.tiff_nifds] &&
286
+ ifd->offset != libraw_internal_data.unpacker_data.data_offset)
287
+ ++ifd;
288
+ if (ifd == &tiff_ifd[libraw_internal_data.identify_data.tiff_nifds])
289
+ throw LIBRAW_EXCEPTION_DECODE_RAW;
290
+
291
+ if (!ifd->rows_per_strip || !ifd->strip_offsets_count)
292
+ return; // not unpacked
293
+ int stripcnt = 0;
294
+
295
+ bwide = S.raw_width * tiff_bps / 8;
296
+ bwide += bwide & load_flags >> 7;
297
+ rbits = bwide * 8 - S.raw_width * tiff_bps;
298
+ if (load_flags & 1)
299
+ bwide = bwide * 16 / 15;
300
+ bite = 8 + (load_flags & 24);
301
+ for (row = 0; row < S.raw_height; row++)
302
+ {
303
+ checkCancel();
304
+ if (!(row % ifd->rows_per_strip))
305
+ {
306
+ if (stripcnt >= ifd->strip_offsets_count)
307
+ return; // run out of data
308
+ libraw_internal_data.internal_data.input->seek(
309
+ ifd->strip_offsets[stripcnt], SEEK_SET);
310
+ stripcnt++;
311
+ }
312
+ for (col = 0; col < S.raw_width; col++)
313
+ {
314
+ for (vbits -= tiff_bps; vbits < 0; vbits += bite)
315
+ {
316
+ bitbuf <<= bite;
317
+ for (i = 0; i < bite; i += 8)
318
+ bitbuf |=
319
+ (unsigned)(libraw_internal_data.internal_data.input->get_char()
320
+ << i);
321
+ }
322
+ imgdata.rawdata.raw_image[(row)*S.raw_width + (col)] =
323
+ bitbuf << (64 - tiff_bps - vbits) >> (64 - tiff_bps);
324
+ }
325
+ vbits -= rbits;
326
+ }
327
+ }
328
+
329
+ struct pana_cs6_page_decoder
330
+ {
331
+ unsigned int pixelbuffer[18], lastoffset, maxoffset;
332
+ unsigned char current, *buffer;
333
+ pana_cs6_page_decoder(unsigned char *_buffer, unsigned int bsize)
334
+ : lastoffset(0), maxoffset(bsize), current(0), buffer(_buffer)
335
+ {
336
+ }
337
+ void read_page(); // will throw IO error if not enough space in buffer
338
+ void read_page12(); // 12-bit variant
339
+ unsigned int nextpixel() { return current < 14 ? pixelbuffer[current++] : 0; }
340
+ unsigned int nextpixel12() { return current < 18 ? pixelbuffer[current++] : 0; }
341
+ };
342
+
343
+ void pana_cs6_page_decoder::read_page()
344
+ {
345
+ if (!buffer || (maxoffset - lastoffset < 16))
346
+ throw LIBRAW_EXCEPTION_IO_EOF;
347
+ #define wbuffer(i) ((unsigned short)buffer[lastoffset + 15 - i])
348
+ pixelbuffer[0] = (wbuffer(0) << 6) | (wbuffer(1) >> 2); // 14 bit
349
+ pixelbuffer[1] = (((wbuffer(1) & 0x3) << 12) | (wbuffer(2) << 4) | (wbuffer(3) >> 4)) & 0x3fff; // 14 bit
350
+ pixelbuffer[2] = (wbuffer(3) >> 2) & 0x3; // 2
351
+ pixelbuffer[3] = ((wbuffer(3) & 0x3) << 8) | wbuffer(4); // 10
352
+ pixelbuffer[4] = (wbuffer(5) << 2) | (wbuffer(6) >> 6); // 10
353
+ pixelbuffer[5] = ((wbuffer(6) & 0x3f) << 4) | (wbuffer(7) >> 4); // 10
354
+ pixelbuffer[6] = (wbuffer(7) >> 2) & 0x3;
355
+ pixelbuffer[7] = ((wbuffer(7) & 0x3) << 8) | wbuffer(8);
356
+ pixelbuffer[8] = ((wbuffer(9) << 2) & 0x3fc) | (wbuffer(10) >> 6);
357
+ pixelbuffer[9] = ((wbuffer(10) << 4) | (wbuffer(11) >> 4)) & 0x3ff;
358
+ pixelbuffer[10] = (wbuffer(11) >> 2) & 0x3;
359
+ pixelbuffer[11] = ((wbuffer(11) & 0x3) << 8) | wbuffer(12);
360
+ pixelbuffer[12] = (((wbuffer(13) << 2) & 0x3fc) | wbuffer(14) >> 6) & 0x3ff;
361
+ pixelbuffer[13] = ((wbuffer(14) << 4) | (wbuffer(15) >> 4)) & 0x3ff;
362
+ #undef wbuffer
363
+ current = 0;
364
+ lastoffset += 16;
365
+ }
366
+
367
+ void pana_cs6_page_decoder::read_page12()
368
+ {
369
+ if (!buffer || (maxoffset - lastoffset < 16))
370
+ throw LIBRAW_EXCEPTION_IO_EOF;
371
+ #define wb(i) ((unsigned short)buffer[lastoffset + 15 - i])
372
+ pixelbuffer[0] = (wb(0) << 4) | (wb(1) >> 4); // 12 bit: 8/0 + 4 upper bits of /1
373
+ pixelbuffer[1] = (((wb(1) & 0xf) << 8) | (wb(2))) & 0xfff; // 12 bit: 4l/1 + 8/2
374
+
375
+ pixelbuffer[2] = (wb(3) >> 6) & 0x3; // 2; 2u/3, 6 low bits remains in wb(3)
376
+ pixelbuffer[3] = ((wb(3) & 0x3f) << 2) | (wb(4) >> 6); // 8; 6l/3 + 2u/4; 6 low bits remains in wb(4)
377
+ pixelbuffer[4] = ((wb(4) & 0x3f) << 2) | (wb(5) >> 6); // 8: 6l/4 + 2u/5; 6 low bits remains in wb(5)
378
+ pixelbuffer[5] = ((wb(5) & 0x3f) << 2) | (wb(6) >> 6); // 8: 6l/5 + 2u/6, 6 low bits remains in wb(6)
379
+
380
+ pixelbuffer[6] = (wb(6) >> 4) & 0x3; // 2, 4 low bits remains in wb(6)
381
+ pixelbuffer[7] = ((wb(6) & 0xf) << 4) | (wb(7) >> 4); // 8: 4 low bits from wb(6), 4 upper bits from wb(7)
382
+ pixelbuffer[8] = ((wb(7) & 0xf) << 4) | (wb(8) >> 4); // 8: 4 low bits from wb7, 4 upper bits from wb8
383
+ pixelbuffer[9] = ((wb(8) & 0xf) << 4) | (wb(9) >> 4); // 8: 4 low bits from wb8, 4 upper bits from wb9
384
+
385
+ pixelbuffer[10] = (wb(9) >> 2) & 0x3; // 2: bits 2-3 from wb9, two low bits remain in wb9
386
+ pixelbuffer[11] = ((wb(9) & 0x3) << 6) | (wb(10) >> 2); // 8: 2 bits from wb9, 6 bits from wb10
387
+ pixelbuffer[12] = ((wb(10) & 0x3) << 6) | (wb(11) >> 2); // 8: 2 bits from wb10, 6 bits from wb11
388
+ pixelbuffer[13] = ((wb(11) & 0x3) << 6) | (wb(12) >> 2); // 8: 2 bits from wb11, 6 bits from wb12
389
+
390
+ pixelbuffer[14] = wb(12) & 0x3; // 2: low bits from wb12
391
+ pixelbuffer[15] = wb(13);
392
+ pixelbuffer[16] = wb(14);
393
+ pixelbuffer[17] = wb(15);
394
+ #undef wb
395
+ current = 0;
396
+ lastoffset += 16;
397
+ }
398
+
399
+ void LibRaw::panasonicC6_load_raw()
400
+ {
401
+ const int rowstep = 16;
402
+ const bool _12bit = libraw_internal_data.unpacker_data.pana_bpp == 12;
403
+ const int pixperblock = _12bit ? 14 : 11;
404
+ const int blocksperrow = imgdata.sizes.raw_width / pixperblock;
405
+ const int rowbytes = blocksperrow * 16;
406
+ const unsigned pixelbase0 = _12bit ? 0x80 : 0x200;
407
+ const unsigned pixelbase_compare = _12bit ? 0x800 : 0x2000;
408
+ const unsigned spix_compare = _12bit ? 0x3fff : 0xffff;
409
+ const unsigned pixel_mask = _12bit ? 0xfff : 0x3fff;
410
+ std::vector<unsigned char> iobuf;
411
+ try
412
+ {
413
+ iobuf.resize(rowbytes * rowstep);
414
+ }
415
+ catch (...)
416
+ {
417
+ throw LIBRAW_EXCEPTION_ALLOC;
418
+ }
419
+
420
+ for (int row = 0; row < imgdata.sizes.raw_height - rowstep + 1;
421
+ row += rowstep)
422
+ {
423
+ int rowstoread = MIN(rowstep, imgdata.sizes.raw_height - row);
424
+ if (libraw_internal_data.internal_data.input->read(
425
+ iobuf.data(), rowbytes, rowstoread) != rowstoread)
426
+ throw LIBRAW_EXCEPTION_IO_EOF;
427
+ pana_cs6_page_decoder page(iobuf.data(), rowbytes * rowstoread);
428
+ for (int crow = 0, col = 0; crow < rowstoread; crow++, col = 0)
429
+ {
430
+ unsigned short *rowptr =
431
+ &imgdata.rawdata
432
+ .raw_image[(row + crow) * imgdata.sizes.raw_pitch / 2];
433
+ for (int rblock = 0; rblock < blocksperrow; rblock++)
434
+ {
435
+ if (_12bit)
436
+ page.read_page12();
437
+ else
438
+ page.read_page();
439
+ unsigned oddeven[2] = {0, 0}, nonzero[2] = {0, 0};
440
+ unsigned pmul = 0, pixel_base = 0;
441
+ for (int pix = 0; pix < pixperblock; pix++)
442
+ {
443
+ if (pix % 3 == 2)
444
+ {
445
+ unsigned base = _12bit ? page.nextpixel12(): page.nextpixel();
446
+ if (base > 3)
447
+ throw LIBRAW_EXCEPTION_IO_CORRUPT; // not possible b/c of 2-bit
448
+ // field, but....
449
+ if (base == 3)
450
+ base = 4;
451
+ pixel_base = pixelbase0 << base;
452
+ pmul = 1 << base;
453
+ }
454
+ unsigned epixel = _12bit ? page.nextpixel12() : page.nextpixel();
455
+ if (oddeven[pix % 2])
456
+ {
457
+ epixel *= pmul;
458
+ if (pixel_base < pixelbase_compare && nonzero[pix % 2] > pixel_base)
459
+ epixel += nonzero[pix % 2] - pixel_base;
460
+ nonzero[pix % 2] = epixel;
461
+ }
462
+ else
463
+ {
464
+ oddeven[pix % 2] = epixel;
465
+ if (epixel)
466
+ nonzero[pix % 2] = epixel;
467
+ else
468
+ epixel = nonzero[pix % 2];
469
+ }
470
+ unsigned spix = epixel - 0xf;
471
+ if (spix <= spix_compare)
472
+ rowptr[col++] = spix & spix_compare;
473
+ else
474
+ {
475
+ epixel = (((signed int)(epixel + 0x7ffffff1)) >> 0x1f);
476
+ rowptr[col++] = epixel & pixel_mask;
477
+ }
478
+ }
479
+ }
480
+ }
481
+ }
482
+ }
483
+
484
+
485
+ void LibRaw::panasonicC7_load_raw()
486
+ {
487
+ const int rowstep = 16;
488
+ int pixperblock = libraw_internal_data.unpacker_data.pana_bpp == 14 ? 9 : 10;
489
+ int rowbytes = imgdata.sizes.raw_width / pixperblock * 16;
490
+ unsigned char *iobuf = (unsigned char *)calloc(rowbytes * rowstep,1);
491
+ for (int row = 0; row < imgdata.sizes.raw_height - rowstep + 1;
492
+ row += rowstep)
493
+ {
494
+ int rowstoread = MIN(rowstep, imgdata.sizes.raw_height - row);
495
+ if (libraw_internal_data.internal_data.input->read(
496
+ iobuf, rowbytes, rowstoread) != rowstoread)
497
+ throw LIBRAW_EXCEPTION_IO_EOF;
498
+ unsigned char *bytes = iobuf;
499
+ for (int crow = 0; crow < rowstoread; crow++)
500
+ {
501
+ unsigned short *rowptr =
502
+ &imgdata.rawdata
503
+ .raw_image[(row + crow) * imgdata.sizes.raw_pitch / 2];
504
+ for (int col = 0; col < imgdata.sizes.raw_width - pixperblock + 1;
505
+ col += pixperblock, bytes += 16)
506
+ {
507
+ if (libraw_internal_data.unpacker_data.pana_bpp == 14)
508
+ {
509
+ rowptr[col] = bytes[0] + ((bytes[1] & 0x3F) << 8);
510
+ rowptr[col + 1] =
511
+ (bytes[1] >> 6) + 4 * (bytes[2]) + ((bytes[3] & 0xF) << 10);
512
+ rowptr[col + 2] =
513
+ (bytes[3] >> 4) + 16 * (bytes[4]) + ((bytes[5] & 3) << 12);
514
+ rowptr[col + 3] = ((bytes[5] & 0xFC) >> 2) + (bytes[6] << 6);
515
+ rowptr[col + 4] = bytes[7] + ((bytes[8] & 0x3F) << 8);
516
+ rowptr[col + 5] =
517
+ (bytes[8] >> 6) + 4 * bytes[9] + ((bytes[10] & 0xF) << 10);
518
+ rowptr[col + 6] =
519
+ (bytes[10] >> 4) + 16 * bytes[11] + ((bytes[12] & 3) << 12);
520
+ rowptr[col + 7] = ((bytes[12] & 0xFC) >> 2) + (bytes[13] << 6);
521
+ rowptr[col + 8] = bytes[14] + ((bytes[15] & 0x3F) << 8);
522
+ }
523
+ else if (libraw_internal_data.unpacker_data.pana_bpp ==
524
+ 12) // have not seen in the wild yet
525
+ {
526
+ rowptr[col] = ((bytes[1] & 0xF) << 8) + bytes[0];
527
+ rowptr[col + 1] = 16 * bytes[2] + (bytes[1] >> 4);
528
+ rowptr[col + 2] = ((bytes[4] & 0xF) << 8) + bytes[3];
529
+ rowptr[col + 3] = 16 * bytes[5] + (bytes[4] >> 4);
530
+ rowptr[col + 4] = ((bytes[7] & 0xF) << 8) + bytes[6];
531
+ rowptr[col + 5] = 16 * bytes[8] + (bytes[7] >> 4);
532
+ rowptr[col + 6] = ((bytes[10] & 0xF) << 8) + bytes[9];
533
+ rowptr[col + 7] = 16 * bytes[11] + (bytes[10] >> 4);
534
+ rowptr[col + 8] = ((bytes[13] & 0xF) << 8) + bytes[12];
535
+ rowptr[col + 9] = 16 * bytes[14] + (bytes[13] >> 4);
536
+ }
537
+ }
538
+ }
539
+ }
540
+ free(iobuf);
541
+ }
542
+
543
+ void LibRaw::unpacked_load_raw_fuji_f700s20()
544
+ {
545
+ int base_offset = 0;
546
+ int row_size = imgdata.sizes.raw_width * 2; // in bytes
547
+ if (imgdata.idata.raw_count == 2 && imgdata.rawparams.shot_select)
548
+ {
549
+ libraw_internal_data.internal_data.input->seek(-row_size, SEEK_CUR);
550
+ base_offset = row_size; // in bytes
551
+ }
552
+ unsigned char *buffer = (unsigned char *)calloc(row_size,2);
553
+ for (int row = 0; row < imgdata.sizes.raw_height; row++)
554
+ {
555
+ read_shorts((ushort *)buffer, imgdata.sizes.raw_width * 2);
556
+ memmove(&imgdata.rawdata.raw_image[row * imgdata.sizes.raw_pitch / 2],
557
+ buffer + base_offset, row_size);
558
+ }
559
+ free(buffer);
560
+ }
561
+
562
+ void LibRaw::nikon_load_sraw()
563
+ {
564
+ // We're already seeked to data!
565
+ unsigned char *rd =
566
+ (unsigned char *)calloc(3 * (imgdata.sizes.raw_width + 2),1);
567
+ if (!rd)
568
+ throw LIBRAW_EXCEPTION_ALLOC;
569
+ try
570
+ {
571
+ int row, col;
572
+ for (row = 0; row < imgdata.sizes.raw_height; row++)
573
+ {
574
+ checkCancel();
575
+ libraw_internal_data.internal_data.input->read(rd, 3,
576
+ imgdata.sizes.raw_width);
577
+ for (col = 0; col < imgdata.sizes.raw_width - 1; col += 2)
578
+ {
579
+ int bi = col * 3;
580
+ ushort bits1 = (rd[bi + 1] & 0xf) << 8 | rd[bi]; // 3,0,1
581
+ ushort bits2 = rd[bi + 2] << 4 | ((rd[bi + 1] >> 4) & 0xf); // 452
582
+ ushort bits3 = ((rd[bi + 4] & 0xf) << 8) | rd[bi + 3]; // 967
583
+ ushort bits4 = rd[bi + 5] << 4 | ((rd[bi + 4] >> 4) & 0xf); // ab8
584
+ imgdata.image[row * imgdata.sizes.raw_width + col][0] = bits1;
585
+ imgdata.image[row * imgdata.sizes.raw_width + col][1] = bits3;
586
+ imgdata.image[row * imgdata.sizes.raw_width + col][2] = bits4;
587
+ imgdata.image[row * imgdata.sizes.raw_width + col + 1][0] = bits2;
588
+ imgdata.image[row * imgdata.sizes.raw_width + col + 1][1] = 2048;
589
+ imgdata.image[row * imgdata.sizes.raw_width + col + 1][2] = 2048;
590
+ }
591
+ }
592
+ }
593
+ catch (...)
594
+ {
595
+ free(rd);
596
+ throw;
597
+ }
598
+ free(rd);
599
+ C.maximum = 0xfff; // 12 bit?
600
+ if (imgdata.rawparams.specials & LIBRAW_RAWSPECIAL_SRAW_NO_INTERPOLATE)
601
+ {
602
+ return; // no CbCr interpolation
603
+ }
604
+ // Interpolate CC channels
605
+ int row, col;
606
+ for (row = 0; row < imgdata.sizes.raw_height; row++)
607
+ {
608
+ checkCancel(); // will throw out
609
+ for (col = 0; col < imgdata.sizes.raw_width; col += 2)
610
+ {
611
+ int col2 = col < imgdata.sizes.raw_width - 2 ? col + 2 : col;
612
+ imgdata.image[row * imgdata.sizes.raw_width + col + 1][1] =
613
+ (unsigned short)(int(imgdata.image[row * imgdata.sizes.raw_width +
614
+ col][1] +
615
+ imgdata.image[row * imgdata.sizes.raw_width +
616
+ col2][1]) /
617
+ 2);
618
+ imgdata.image[row * imgdata.sizes.raw_width + col + 1][2] =
619
+ (unsigned short)(int(imgdata.image[row * imgdata.sizes.raw_width +
620
+ col][2] +
621
+ imgdata.image[row * imgdata.sizes.raw_width +
622
+ col2][2]) /
623
+ 2);
624
+ }
625
+ }
626
+ if (imgdata.rawparams.specials & LIBRAW_RAWSPECIAL_SRAW_NO_RGB)
627
+ return;
628
+
629
+ for (row = 0; row < imgdata.sizes.raw_height; row++)
630
+ {
631
+ checkCancel(); // will throw out
632
+ for (col = 0; col < imgdata.sizes.raw_width; col++)
633
+ {
634
+ float Y =
635
+ float(imgdata.image[row * imgdata.sizes.raw_width + col][0]) / 2549.f;
636
+ float Ch2 =
637
+ float(imgdata.image[row * imgdata.sizes.raw_width + col][1] - 1280) /
638
+ 1536.f;
639
+ float Ch3 =
640
+ float(imgdata.image[row * imgdata.sizes.raw_width + col][2] - 1280) /
641
+ 1536.f;
642
+ if (Y > 1.f)
643
+ Y = 1.f;
644
+ if (Y > 0.803f)
645
+ Ch2 = Ch3 = 0.5f;
646
+ float r = Y + 1.40200f * (Ch3 - 0.5f);
647
+ if (r < 0.f)
648
+ r = 0.f;
649
+ if (r > 1.f)
650
+ r = 1.f;
651
+ float g = Y - 0.34414f * (Ch2 - 0.5f) - 0.71414 * (Ch3 - 0.5f);
652
+ if (g > 1.f)
653
+ g = 1.f;
654
+ if (g < 0.f)
655
+ g = 0.f;
656
+ float b = Y + 1.77200 * (Ch2 - 0.5f);
657
+ if (b > 1.f)
658
+ b = 1.f;
659
+ if (b < 0.f)
660
+ b = 0.f;
661
+ imgdata.image[row * imgdata.sizes.raw_width + col][0] =
662
+ imgdata.color.curve[int(r * 3072.f)];
663
+ imgdata.image[row * imgdata.sizes.raw_width + col][1] =
664
+ imgdata.color.curve[int(g * 3072.f)];
665
+ imgdata.image[row * imgdata.sizes.raw_width + col][2] =
666
+ imgdata.color.curve[int(b * 3072.f)];
667
+ }
668
+ }
669
+ C.maximum = 16383;
670
+ }
671
+
672
+ /*
673
+ Each row is decoded independently. Each row starts with a 16 bit prefix.
674
+ The hi byte is zero, the lo byte (first 3 bits) indicates a bit_base.
675
+ Other bits remain unused.
676
+
677
+ |0000 0000|0000 0XXX| => XXX is bit_base
678
+
679
+ After the prefix the pixel data starts. Pixels are grouped into clusters
680
+ forming 8 output pixel. Each cluster starts with a variable length of
681
+ bits, indicating decompression flags.
682
+
683
+
684
+ */
685
+
686
+ #undef MIN
687
+ #undef MAX
688
+ #undef LIM
689
+
690
+ #define MIN(a, b) ((a) < (b) ? (a) : (b))
691
+ #define MAX(a, b) ((a) > (b) ? (a) : (b))
692
+ #define LIM(x, min, max) MAX(min, MIN(x, max))
693
+
694
+ struct iiq_bitstream_t
695
+ {
696
+ uint64_t curr;
697
+ uint32_t *input;
698
+ uint8_t used;
699
+ iiq_bitstream_t(uint32_t *img_input): curr(0),input(img_input),used(0){}
700
+
701
+ void fill()
702
+ {
703
+ if (used <= 32)
704
+ {
705
+ uint64_t bitpump_next = *input++;
706
+ curr = (curr << 32) | bitpump_next;
707
+ used += 32;
708
+ }
709
+ }
710
+ uint64_t peek(uint8_t len)
711
+ {
712
+ if (len >= used)
713
+ fill();
714
+
715
+ uint64_t res = curr >> (used - len);
716
+ return res & ((1 << (uint8_t)len) - 1);
717
+ }
718
+
719
+ void consume(uint8_t len)
720
+ {
721
+ peek(len); // fill buffer if needed
722
+ used -= len;
723
+ }
724
+
725
+ uint64_t get(char len)
726
+ {
727
+ uint64_t val = peek(len);
728
+ consume(len);
729
+ return val;
730
+ }
731
+
732
+ };
733
+
734
+ void decode_S_type(int32_t out_width, uint32_t *img_input, ushort *outbuf /*, int bit_depth*/)
735
+ {
736
+ #if 0
737
+ if (((bit_depth - 12) & 0xFFFFFFFD) != 0)
738
+ return 0;
739
+ #endif
740
+ iiq_bitstream_t stream(img_input);
741
+
742
+ const int pix_corr_shift = 2; // 16 - bit_depth;
743
+ unsigned int bit_check[2] = { 0, 0 };
744
+
745
+ const uint8_t used_corr[8] = {
746
+ 3, 3, 3, 3, 1, 1, 1, 1,
747
+ };
748
+
749
+ const uint8_t extra_bits[8] = {
750
+ 1, 2, 3, 4, 0, 0, 0, 0,
751
+ };
752
+
753
+ const uint8_t bit_indicator[8 * 4] = {
754
+ 9, 8, 0, 7, 6, 6, 5, 5, 1, 1, 1, 1, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,
755
+ };
756
+
757
+ const uint8_t skip_bits[8 * 4] = {5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
758
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
759
+
760
+ int block_count = ((out_width - 8) >> 3) + 1;
761
+ int block_total_bytes = 8 * block_count;
762
+
763
+ int32_t prev_pix_value[2] = { 0, 0 };
764
+
765
+ uint8_t init_bits = stream.get(16) & 7;
766
+
767
+ if (out_width - 7 > 0)
768
+ {
769
+ uint8_t pix_sub_init = 17 - init_bits;
770
+
771
+ for (int blk_id = 0; blk_id < block_count; ++blk_id)
772
+ {
773
+ int8_t idx_even = stream.peek(7);
774
+ stream.consume(2);
775
+
776
+ if ((unsigned int)idx_even >= 32)
777
+ bit_check[0] = ((unsigned int)idx_even >> 5) + bit_check[0] - 2;
778
+ else
779
+ {
780
+ bit_check[0] = bit_indicator[idx_even];
781
+ stream.consume(skip_bits[idx_even]);
782
+ }
783
+
784
+ int8_t idx_odd = stream.peek(7);
785
+ stream.consume(2);
786
+
787
+ if ((unsigned int)idx_odd >= 32)
788
+ bit_check[1] = ((unsigned int)idx_odd >> 5) + bit_check[1] - 2;
789
+ else
790
+ {
791
+ bit_check[1] = bit_indicator[idx_odd];
792
+ stream.consume(skip_bits[idx_odd]);
793
+ }
794
+
795
+ uint8_t bidx = stream.peek(3);
796
+ stream.consume(used_corr[bidx]);
797
+
798
+ uint8_t take_bits = init_bits + extra_bits[bidx]; // 11 or less
799
+
800
+ uint32_t bp_shift[2] = {bit_check[0] - extra_bits[bidx], bit_check[1] - extra_bits[bidx]};
801
+
802
+ int pix_sub[2] = {0xFFFF >> (pix_sub_init - bit_check[0]), 0xFFFF >> (pix_sub_init - bit_check[1])};
803
+
804
+ for (int i = 0; i < 8; i++) // MAIN LOOP for pixel decoding
805
+ {
806
+ int32_t value = 0;
807
+ if (bit_check[i & 1] == 9)
808
+ value = stream.get(14);
809
+ else
810
+ value = prev_pix_value[i & 1] + ((uint32_t)stream.get(take_bits) << bp_shift[i & 1]) - pix_sub[i & 1];
811
+
812
+ outbuf[i] = LIM(value << pix_corr_shift, 0, 0xffff);
813
+ prev_pix_value[i & 1] = value;
814
+ }
815
+ outbuf += 8; // always produce 8 pixels from this cluster
816
+ }
817
+ } // if width > 7 // End main if
818
+
819
+ // Final block
820
+ // maybe fill/unpack extra bytes if width % 8 <> 0?
821
+ if (block_total_bytes < out_width)
822
+ {
823
+ do
824
+ {
825
+ stream.fill();
826
+ uint32_t pix_value = stream.get(14);
827
+ ++block_total_bytes;
828
+ *outbuf++ = pix_value << pix_corr_shift;
829
+ } while (block_total_bytes < out_width);
830
+ }
831
+ }
832
+
833
+ struct p1_row_info_t
834
+ {
835
+ unsigned row;
836
+ INT64 offset;
837
+ p1_row_info_t(): row(0),offset(0){}
838
+ p1_row_info_t(const p1_row_info_t& q): row(q.row),offset(q.offset){}
839
+ bool operator < (const p1_row_info_t & rhs) const { return offset < rhs.offset; }
840
+ };
841
+
842
+ void LibRaw::phase_one_load_raw_s()
843
+ {
844
+ if(!libraw_internal_data.unpacker_data.strip_offset || !imgdata.rawdata.raw_image || !libraw_internal_data.unpacker_data.data_offset)
845
+ throw LIBRAW_EXCEPTION_IO_CORRUPT;
846
+ std::vector<p1_row_info_t> stripes(imgdata.sizes.raw_height+1);
847
+ libraw_internal_data.internal_data.input->seek(libraw_internal_data.unpacker_data.strip_offset, SEEK_SET);
848
+ for (unsigned row = 0; row < imgdata.sizes.raw_height; row++)
849
+ {
850
+ stripes[row].row = row;
851
+ stripes[row].offset = INT64(get4()) + libraw_internal_data.unpacker_data.data_offset;
852
+ }
853
+ stripes[imgdata.sizes.raw_height].row = imgdata.sizes.raw_height;
854
+ stripes[imgdata.sizes.raw_height].offset = libraw_internal_data.unpacker_data.data_offset + INT64(libraw_internal_data.unpacker_data.data_size);
855
+ std::sort(stripes.begin(), stripes.end());
856
+ INT64 maxsz = imgdata.sizes.raw_width * 3 + 2; // theor max: 17 bytes per 8 pix + row header
857
+ std::vector<uint8_t> datavec(maxsz);
858
+
859
+ for (unsigned row = 0; row < imgdata.sizes.raw_height; row++)
860
+ {
861
+ if (stripes[row].row >= imgdata.sizes.raw_height) continue;
862
+ ushort *datap = imgdata.rawdata.raw_image + stripes[row].row * imgdata.sizes.raw_width;
863
+ libraw_internal_data.internal_data.input->seek(stripes[row].offset, SEEK_SET);
864
+ INT64 readsz = stripes[row + 1].offset - stripes[row].offset;
865
+ if (readsz > maxsz)
866
+ throw LIBRAW_EXCEPTION_IO_CORRUPT;
867
+
868
+ if(libraw_internal_data.internal_data.input->read(datavec.data(), 1, readsz) != readsz)
869
+ derror(); // TODO: check read state
870
+
871
+ decode_S_type(imgdata.sizes.raw_width, (uint32_t *)datavec.data(), datap /*, 14 */);
872
+ }
873
+ }