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,1427 @@
1
+ /* -*- C++ -*-
2
+ * Copyright 2019-2021 LibRaw LLC (info@libraw.org)
3
+ *
4
+ LibRaw uses code from dcraw.c -- Dave Coffin's raw photo decoder,
5
+ dcraw.c is copyright 1997-2018 by Dave Coffin, dcoffin a cybercom o net.
6
+ LibRaw do not use RESTRICTED code from dcraw.c
7
+
8
+ LibRaw is free software; you can redistribute it and/or modify
9
+ it under the terms of the one of two licenses as you choose:
10
+
11
+ 1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
12
+ (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
13
+
14
+ 2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
15
+ (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
16
+
17
+ */
18
+
19
+ #include "../../internal/dcraw_defs.h"
20
+
21
+ int LibRaw::guess_RAFDataGeneration (uchar *RAFData_start) // returns offset to first valid width/height pair
22
+ {
23
+
24
+ /* RAFDataGeneration codes, values are 4 bytes, little endian
25
+
26
+ RAFData gen. 0: no RAFData
27
+ DBP for GX680 / DX-2000
28
+ E550, E900, (F500 / F505?) F550, F600 / F605, F700, F770 / F775, F800, F810, F900
29
+ HS10 HS11, HS20 / HS22, HS30 / HS33 / HS35, HS50
30
+ S1, SL1000, S100, S200 / S205, S20Pro, S2Pro, S3Pro, S5Pro
31
+ S5000, S5100 / S5500, S5200 / S5600, S6000 / S6500, S7000, S9000 / S9500, S9100 / S9600
32
+
33
+ RAFData gen. 1, offset to WH pair (offsetWH_inRAFData) = 0:
34
+ - number in bytes 0..1 is less than 10000
35
+ - contains WH pair, recommended image size WH pair, 16 bytes unknown, 2*13 values (for crops, scales?)
36
+ X100, X-Pro1, X-S1, X10, XF1
37
+
38
+ RAFData gen. 2, offset to WH pair = 4:
39
+ - bytes 0..1 contain a number greater than 10000; bytes 2..3 contain zero;
40
+ version is in bytes 0..1, possibly big endian
41
+ - contains WH pair, recommended image size WH pair, 16 bytes unknown, 2*13 values
42
+ X-E1
43
+
44
+ RAFData gen. 3, offset to WH pair = 4:
45
+ - bytes 0..1 contain zero; bytes 2..3 contain version;
46
+ - contains a table of 3+2*13 values; first 3 values look like WHW
47
+ X-A1, X-A2, X-E2, X-M1
48
+ X-T1, X-T10
49
+ X100S, X100T
50
+ X20, X30, X70, XQ1, XQ2
51
+
52
+ RAFData gen. 4, offset to WH pair = 8:
53
+ - same conditions as for RAFData gen. 3, but also adds WRTS in bytes 4..7
54
+ - contains a table of 3+2*13 values; first 3 values look like WHW
55
+ - H in WHW group has a different meaning if the shot is taken in crop 2 mode
56
+ GFX 100, GFX 100S, GFX 50R, GFX 50S, GFX 50S II
57
+ X-E2S, X-E3, X-H1, X-S10
58
+ X-T2, X-T3, X-T4, X-T20, X-T30
59
+ X-Pro2, X-Pro3
60
+ X100F, X100V
61
+
62
+ RAFData gen. set to 4096:
63
+ - RAFData length is exactly 4096
64
+ X-A3, X-A5, X-A7, X-A10, X-A20
65
+ X-T100, X-T200,
66
+ XF10
67
+ */
68
+
69
+ int offsetWH_inRAFData=0; /* clang warns about not initialized value */
70
+ ushort b01 = sget2(RAFData_start); // bytes 0..1
71
+ ushort b23 = sget2(RAFData_start+2); // bytes 2..3
72
+ int is_WRTS = (sget4(RAFData_start + 4) == 0x53545257); // STRW
73
+ if (b01 && !b23 && (b01<10000))
74
+ {
75
+ imFuji.RAFDataGeneration = 1;
76
+ offsetWH_inRAFData = 0;
77
+ }
78
+ else if ((b01>10000) && !b23)
79
+ {
80
+ imFuji.RAFDataGeneration = 2;
81
+ imFuji.RAFDataVersion = b01;
82
+ offsetWH_inRAFData = 4;
83
+ }
84
+ else if (!b01)
85
+ {
86
+ if (!is_WRTS)
87
+ {
88
+ imFuji.RAFDataGeneration = 3;
89
+ offsetWH_inRAFData = 4;
90
+ }
91
+ else
92
+ {
93
+ imFuji.RAFDataGeneration = 4;
94
+ offsetWH_inRAFData = 8;
95
+ }
96
+ imFuji.RAFDataVersion = b23;
97
+ }
98
+
99
+ // printf ("RAFDataVersion: 0x%04x, RAFDataGeneration: %d\n",
100
+ // imFuji.RAFDataVersion, imFuji.RAFDataGeneration);
101
+
102
+ return offsetWH_inRAFData;
103
+ }
104
+
105
+ void LibRaw::parseAdobeRAFMakernote()
106
+ {
107
+
108
+ uchar *PrivateMknBuf;
109
+ unsigned posPrivateMknBuf=0; /* clang warns about not inited value */
110
+ unsigned PrivateMknLength;
111
+ unsigned PrivateOrder;
112
+ unsigned ifd_start, ifd_len;
113
+ unsigned PrivateEntries, PrivateTagID;
114
+ unsigned PrivateTagBytes;
115
+ int FujiShotSelect;
116
+ unsigned wb_section_offset = 0;
117
+ int posWB;
118
+ int c;
119
+
120
+ #define CHECKSPACE_ABS3(s1, s2, s3) \
121
+ if (INT64(s1) + INT64(s2) + INT64(s3) > INT64(PrivateMknLength)) \
122
+ { \
123
+ free(PrivateMknBuf); \
124
+ return; \
125
+ }
126
+
127
+ #define CHECKSPACE_ABS2(s1,s2) \
128
+ if (INT64(s1) + INT64(s2) > INT64(PrivateMknLength)) \
129
+ { \
130
+ free(PrivateMknBuf); \
131
+ return; \
132
+ }
133
+
134
+ #define CHECKSPACE(s) \
135
+ if (INT64(posPrivateMknBuf) + INT64(s) > INT64(PrivateMknLength)) \
136
+ { \
137
+ free(PrivateMknBuf); \
138
+ return; \
139
+ }
140
+
141
+ #define isWB(posWB) \
142
+ sget2(posWB) != 0 && sget2(posWB + 2) != 0 && sget2(posWB + 4) != 0 && \
143
+ sget2(posWB + 6) != 0 && sget2(posWB + 8) != 0 && \
144
+ sget2(posWB + 10) != 0 && sget2(posWB) != 0xff && \
145
+ sget2(posWB + 2) != 0xff && sget2(posWB + 4) != 0xff && \
146
+ sget2(posWB + 6) != 0xff && sget2(posWB + 8) != 0xff && \
147
+ sget2(posWB + 10) != 0xff && sget2(posWB) == sget2(posWB + 6) && \
148
+ sget2(posWB) < sget2(posWB + 2) && sget2(posWB) < sget2(posWB + 4) && \
149
+ sget2(posWB) < sget2(posWB + 8) && sget2(posWB) < sget2(posWB + 10)
150
+
151
+ #define get_average_WB(wb_index) \
152
+ CHECKSPACE(8); \
153
+ FORC4 icWBC[wb_index][GRGB_2_RGBG(c)] = \
154
+ sget2(PrivateMknBuf + posPrivateMknBuf + (c << 1)); \
155
+ if ((PrivateTagBytes == 16) && average_WBData) { \
156
+ CHECKSPACE(16); \
157
+ FORC4 icWBC[wb_index][GRGB_2_RGBG(c)] = \
158
+ (icWBC[wb_index][GRGB_2_RGBG(c)] + \
159
+ sget2(PrivateMknBuf + posPrivateMknBuf + (c << 1)+8)) /2; \
160
+ } \
161
+ if (use_WBcorr_coeffs) { \
162
+ icWBC[wb_index][0] *= wbR_corr; \
163
+ icWBC[wb_index][2] *= wbB_corr; \
164
+ }
165
+
166
+ ushort use_WBcorr_coeffs = 0;
167
+ double wbR_corr = 1.0;
168
+ double wbB_corr = 1.0;
169
+
170
+ if (strstr(model, "S2Pro")
171
+ || strstr(model, "S20Pro")
172
+ || strstr(model, "F700")
173
+ || strstr(model, "S5000")
174
+ || strstr(model, "S7000")
175
+ ) {
176
+ use_WBcorr_coeffs = 1;
177
+ wbR_corr = 10.0 / 17.0 / 0.652941;
178
+ wbB_corr = 2.0 /3.0 / (3.0 / 4.0 + 1.0 / 300.0);
179
+ } else if (strstr(model, "DBP") || strstr(model, "DX-2000")) {
180
+ use_WBcorr_coeffs = 1;
181
+ wbR_corr = 0.7632653061;
182
+ wbB_corr = 0.8591549296;
183
+ }
184
+
185
+ FujiShotSelect = LIM(shot_select, 0, 1);
186
+ int average_WBData = 1;
187
+
188
+ order = 0x4d4d;
189
+ PrivateMknLength = get4();
190
+
191
+ // At least 0x36 bytes because of memcpy(imFuji.RAFVersion, PrivateMknBuf + 0x32, 4);
192
+ if ((PrivateMknLength >= 0x36) && (PrivateMknLength < 10240000) &&
193
+ (PrivateMknBuf = (uchar *)malloc(PrivateMknLength + 1024))) // 1024b for safety
194
+ {
195
+ fread(PrivateMknBuf, PrivateMknLength, 1, ifp);
196
+ memcpy(imFuji.SerialSignature, PrivateMknBuf + 6, 0x0c);
197
+ imFuji.SerialSignature[0x0c] = 0;
198
+ memcpy(imFuji.SensorID, imFuji.SerialSignature + 0x06, 0x04);
199
+ imFuji.SensorID[0x04] = 0;
200
+ c = 11;
201
+ while (isdigit(imFuji.SerialSignature[c]) && (c>0))
202
+ c--;
203
+ ilm.CamID = unique_id = (unsigned long long)atoi(imFuji.SerialSignature+c+1);
204
+ memcpy(model, PrivateMknBuf + 0x12, 0x20);
205
+ model[0x20] = 0;
206
+ memcpy(imFuji.RAFVersion, PrivateMknBuf + 0x32, 4);
207
+ imFuji.RAFVersion[4] = 0;
208
+
209
+ PrivateOrder = sget2(PrivateMknBuf);
210
+ unsigned s, l;
211
+ s = ifd_start = sget4(PrivateMknBuf +2)+6;
212
+ CHECKSPACE(INT64(ifd_start)+4LL);
213
+ l = ifd_len = sget4(PrivateMknBuf +ifd_start);
214
+ CHECKSPACE_ABS3(ifd_start, ifd_len, 4);
215
+
216
+ if (!sget4(PrivateMknBuf+ifd_start+ifd_len+4))
217
+ FujiShotSelect = 0;
218
+
219
+ if ((FujiShotSelect == 1) && (PrivateMknLength > ifd_len*2)) {
220
+ ifd_start += (ifd_len+4);
221
+ CHECKSPACE_ABS2(ifd_start, 4);
222
+ ifd_len = sget4(PrivateMknBuf +ifd_start);
223
+ if ((ifd_start+ifd_len) > PrivateMknLength) {
224
+ ifd_start = s;
225
+ ifd_len = l;
226
+ FujiShotSelect = 0;
227
+ }
228
+ } else FujiShotSelect = 0;
229
+
230
+ CHECKSPACE_ABS3(ifd_start, 4, 4);
231
+ PrivateEntries = sget4(PrivateMknBuf + ifd_start + 4);
232
+ if ((PrivateEntries > 1000) ||
233
+ ((PrivateOrder != 0x4d4d) && (PrivateOrder != 0x4949)))
234
+ {
235
+ free(PrivateMknBuf);
236
+ return;
237
+ }
238
+ posPrivateMknBuf = (ifd_start+8);
239
+
240
+ /*
241
+ * because Adobe DNG converter strips or misplaces 0xfnnn tags,
242
+ * for now, Auto WB is missing for the following cameras:
243
+ * - F550EXR / F600EXR / F770EXR / F800EXR / F900EXR
244
+ * - HS10 / HS11 / HS20EXR / HS30EXR / HS33EXR / HS35EXR / HS50EXR
245
+ * - S1 / SL1000
246
+ **/
247
+ while (PrivateEntries--)
248
+ {
249
+ order = 0x4d4d;
250
+ CHECKSPACE(4);
251
+ PrivateTagID = sget2(PrivateMknBuf + posPrivateMknBuf);
252
+ PrivateTagBytes = sget2(PrivateMknBuf + posPrivateMknBuf + 2);
253
+ posPrivateMknBuf += 4;
254
+ order = PrivateOrder;
255
+
256
+ if (PrivateTagID == 0x2000)
257
+ {
258
+ get_average_WB(LIBRAW_WBI_Auto);
259
+ }
260
+ else if (PrivateTagID == 0x2100)
261
+ {
262
+ get_average_WB(LIBRAW_WBI_FineWeather);
263
+ }
264
+ else if (PrivateTagID == 0x2200)
265
+ {
266
+ get_average_WB(LIBRAW_WBI_Shade);
267
+ }
268
+ else if (PrivateTagID == 0x2300)
269
+ {
270
+ get_average_WB(LIBRAW_WBI_FL_D);
271
+ }
272
+ else if (PrivateTagID == 0x2301)
273
+ {
274
+ get_average_WB(LIBRAW_WBI_FL_N);
275
+ }
276
+ else if (PrivateTagID == 0x2302)
277
+ {
278
+ get_average_WB(LIBRAW_WBI_FL_W);
279
+ }
280
+ else if (PrivateTagID == 0x2310)
281
+ {
282
+ get_average_WB(LIBRAW_WBI_FL_WW);
283
+ }
284
+ else if (PrivateTagID == 0x2311)
285
+ {
286
+ get_average_WB(LIBRAW_WBI_FL_L);
287
+ }
288
+ else if (PrivateTagID == 0x2400)
289
+ {
290
+ get_average_WB(LIBRAW_WBI_Tungsten);
291
+ }
292
+ else if (PrivateTagID == 0x2410)
293
+ {
294
+ get_average_WB(LIBRAW_WBI_Flash);
295
+ }
296
+ else if (PrivateTagID == 0x2f00)
297
+ {
298
+ CHECKSPACE(4);
299
+ int nWBs = MIN(sget4(PrivateMknBuf + posPrivateMknBuf), 6);
300
+ posWB = posPrivateMknBuf + 4;
301
+ for (int wb_ind = LIBRAW_WBI_Custom1; wb_ind < LIBRAW_WBI_Custom1+nWBs; wb_ind++) {
302
+ CHECKSPACE_ABS2(posWB, 8);
303
+ FORC4 icWBC[wb_ind][GRGB_2_RGBG(c)] =
304
+ sget2(PrivateMknBuf + posWB + (c << 1));
305
+ if ((PrivateTagBytes >= unsigned(4+16*nWBs)) && average_WBData) {
306
+ posWB += 8;
307
+ CHECKSPACE_ABS2(posWB, 8);
308
+ FORC4 icWBC[wb_ind][GRGB_2_RGBG(c)] =
309
+ (icWBC[wb_ind][GRGB_2_RGBG(c)] +
310
+ sget2(PrivateMknBuf + posWB + (c << 1))) /2;
311
+ }
312
+ if (use_WBcorr_coeffs) {
313
+ icWBC[wb_ind][0] *= wbR_corr;
314
+ icWBC[wb_ind][2] *= wbB_corr;
315
+ }
316
+ posWB += 8;
317
+ }
318
+ }
319
+ else if (PrivateTagID == 0x2ff0)
320
+ {
321
+ get_average_WB(LIBRAW_WBI_AsShot);
322
+ FORC4 cam_mul[c] = icWBC[LIBRAW_WBI_AsShot][c];
323
+ }
324
+ else if ((PrivateTagID == 0x4000) &&
325
+ ((PrivateTagBytes == 8) || (PrivateTagBytes == 16)))
326
+ {
327
+ imFuji.BlackLevel[0] = PrivateTagBytes / 2;
328
+ CHECKSPACE(10);
329
+ FORC4 imFuji.BlackLevel[GRGB_2_RGBG(c)+1] =
330
+ sget2(PrivateMknBuf + posPrivateMknBuf + (c << 1));
331
+ if (imFuji.BlackLevel[0] == 8) {
332
+ CHECKSPACE(18);
333
+ FORC4 imFuji.BlackLevel[GRGB_2_RGBG(c) + 5] =
334
+ sget2(PrivateMknBuf + posPrivateMknBuf + (c << 1) + 8);
335
+ }
336
+ }
337
+ else if (PrivateTagID == 0x9650)
338
+ {
339
+ CHECKSPACE(4);
340
+ short a = (short)sget2(PrivateMknBuf + posPrivateMknBuf);
341
+ float b = fMAX(1.0f, sget2(PrivateMknBuf + posPrivateMknBuf + 2));
342
+ imFuji.ExpoMidPointShift = a / b;
343
+ imCommon.ExposureCalibrationShift += imFuji.ExpoMidPointShift;
344
+ }
345
+ else if ((PrivateTagID == 0xc000) && (PrivateTagBytes > 3) &&
346
+ (PrivateTagBytes < 10240000))
347
+ {
348
+ order = 0x4949;
349
+ if (PrivateTagBytes != 4096) // not one of Fuji X-A3, X-A5, X-A7, X-A10, X-A20, X-T100, X-T200, XF10
350
+ {
351
+ int is34 = 0;
352
+ CHECKSPACE(8);
353
+ guess_RAFDataGeneration (PrivateMknBuf + posPrivateMknBuf);
354
+ // printf ("RAFDataVersion: 0x%04x, RAFDataGeneration: %d\n",
355
+ // imFuji.RAFDataVersion, imFuji.RAFDataGeneration);
356
+
357
+ for (posWB = 0; posWB < (int)PrivateTagBytes - 16; posWB++)
358
+ {
359
+ CHECKSPACE_ABS2(posWB, 12);
360
+ if ((!memcmp(PrivateMknBuf + posWB, "TSNERDTS", 8) &&
361
+ (sget2(PrivateMknBuf + posWB + 10) > 125)))
362
+ {
363
+ posWB += 10;
364
+ icWBC[LIBRAW_WBI_Auto][1] =
365
+ icWBC[LIBRAW_WBI_Auto][3] =
366
+ sget2(PrivateMknBuf + posWB);
367
+ icWBC[LIBRAW_WBI_Auto][0] =
368
+ sget2(PrivateMknBuf + posWB + 2);
369
+ icWBC[LIBRAW_WBI_Auto][2] =
370
+ sget2(PrivateMknBuf + posWB + 4);
371
+ break;
372
+ }
373
+ }
374
+
375
+ if ((imFuji.RAFDataVersion == 0x0260) || // X-Pro3, GFX 100S
376
+ (imFuji.RAFDataVersion == 0x0261) || // X100V, GFX 50S II
377
+ (imFuji.RAFDataVersion == 0x0262) || // X-T4
378
+ (imFuji.RAFDataVersion == 0x0264) || // X-S10
379
+ (imFuji.RAFDataVersion == 0x0265) || // X-E4
380
+ (imFuji.RAFDataVersion == 0x0266) || // X-T30 II
381
+ !strcmp(model, "X-Pro3") ||
382
+ !strcmp(model, "GFX 100S") ||
383
+ !strcmp(model, "GFX100S") ||
384
+ !strcmp(model, "GFX 50S II") ||
385
+ !strcmp(model, "GFX50S II") ||
386
+ !strcmp(model, "X100V") ||
387
+ !strcmp(model, "X-T4") ||
388
+ !strcmp(model, "X-E4") ||
389
+ !strcmp(model, "X-T30 II") ||
390
+ !strcmp(model, "X-S10"))
391
+ is34 = 1;
392
+
393
+ if (imFuji.RAFDataVersion == 0x4500) // X-E1, RAFData gen. 3
394
+ {
395
+ wb_section_offset = 0x13ac;
396
+ }
397
+ else if (imFuji.RAFDataVersion == 0x0146 || // X20
398
+ imFuji.RAFDataVersion == 0x0149 || // X100S
399
+ imFuji.RAFDataVersion == 0x0249) // X100S
400
+ {
401
+ wb_section_offset = 0x1410;
402
+ }
403
+ else if (imFuji.RAFDataVersion == 0x014d || // X-M1
404
+ imFuji.RAFDataVersion == 0x014e) // X-A1, X-A2
405
+ {
406
+ wb_section_offset = 0x1474;
407
+ }
408
+ else if (imFuji.RAFDataVersion == 0x014f || // X-E2
409
+ imFuji.RAFDataVersion == 0x024f || // X-E2
410
+ imFuji.RAFDataVersion == 0x025d || // X-H1
411
+ imFuji.RAFDataVersion == 0x035d) // X-H1
412
+ {
413
+ wb_section_offset = 0x1480;
414
+ }
415
+ else if (imFuji.RAFDataVersion == 0x0150) // XQ1, XQ2
416
+ {
417
+ wb_section_offset = 0x1414;
418
+ }
419
+ else if (imFuji.RAFDataVersion == 0x0151 || // X-T1 w/diff. fws
420
+ imFuji.RAFDataVersion == 0x0251 || imFuji.RAFDataVersion == 0x0351 ||
421
+ imFuji.RAFDataVersion == 0x0451 || imFuji.RAFDataVersion == 0x0551)
422
+ {
423
+ wb_section_offset = 0x14b0;
424
+ }
425
+ else if (imFuji.RAFDataVersion == 0x0152 || // X30
426
+ imFuji.RAFDataVersion == 0x0153) // X100T
427
+ {
428
+ wb_section_offset = 0x1444;
429
+ }
430
+ else if (imFuji.RAFDataVersion == 0x0154) // X-T10
431
+ {
432
+ wb_section_offset = 0x1824;
433
+ }
434
+ else if (imFuji.RAFDataVersion == 0x0155) // X70
435
+ {
436
+ wb_section_offset = 0x17b4;
437
+ }
438
+ else if (imFuji.RAFDataVersion == 0x0255 || // X-Pro2
439
+ imFuji.RAFDataVersion == 0x0455)
440
+ {
441
+ wb_section_offset = 0x135c;
442
+ }
443
+ else if (imFuji.RAFDataVersion == 0x0258 || // X-T2
444
+ imFuji.RAFDataVersion == 0x025b) // X-T20
445
+ {
446
+ wb_section_offset = 0x13dc;
447
+ }
448
+ else if (imFuji.RAFDataVersion == 0x0259) // X100F
449
+ {
450
+ wb_section_offset = 0x1370;
451
+ }
452
+ else if (imFuji.RAFDataVersion == 0x025a || // GFX 50S
453
+ imFuji.RAFDataVersion == 0x045a)
454
+ {
455
+ wb_section_offset = 0x1424;
456
+ }
457
+ else if (imFuji.RAFDataVersion == 0x025c) // X-E3
458
+ {
459
+ wb_section_offset = 0x141c;
460
+ }
461
+ else if (imFuji.RAFDataVersion == 0x025e) // X-T3
462
+ {
463
+ wb_section_offset = 0x2014;
464
+ }
465
+ else if (imFuji.RAFDataVersion == 0x025f) // X-T30, GFX 50R, GFX 100 (? RAFDataVersion 0x045f)
466
+ {
467
+ if (!strcmp(model, "X-T30")) {
468
+ CHECKSPACE(0x20b8 + 12);
469
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x20b8))
470
+ wb_section_offset = 0x20b8;
471
+ else
472
+ {
473
+ CHECKSPACE(0x20c8 + 12);
474
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x20c8))
475
+ wb_section_offset = 0x20c8;
476
+ }
477
+ }
478
+ else if (!strcmp(model, "GFX 50R"))
479
+ wb_section_offset = 0x1424;
480
+ else if (!strcmp(model, "GFX 100"))
481
+ wb_section_offset = 0x20e4;
482
+ }
483
+ else if (imFuji.RAFDataVersion == 0x0260) // X-Pro3, GFX 100S
484
+ {
485
+ if (!strcmp(model, "X-Pro3"))
486
+ wb_section_offset = 0x20e8;
487
+ else if (!strcmp(model, "GFX 100S") || !strcmp(model, "GFX100S"))
488
+ wb_section_offset = 0x2108;
489
+ }
490
+ else if (imFuji.RAFDataVersion == 0x0261) // X100V, GFX 50S II
491
+ {
492
+ if (!strcmp(model, "X100V"))
493
+ wb_section_offset = 0x2078;
494
+ else if (!strcmp(model, "GFX 50S II") || !strcmp(model, "GFX50S II"))
495
+ wb_section_offset = 0x214c;
496
+ }
497
+ else if (imFuji.RAFDataVersion == 0x0262) // X-T4
498
+ {
499
+ wb_section_offset = 0x21c8;
500
+ }
501
+ else if (imFuji.RAFDataVersion == 0x0264) // X-S10
502
+ {
503
+ wb_section_offset = 0x21de;
504
+ }
505
+ else if ((imFuji.RAFDataVersion == 0x0265) || // X-E4
506
+ (imFuji.RAFDataVersion == 0x0266)) // X-T30 II
507
+ {
508
+ wb_section_offset = 0x21cc;
509
+ }
510
+ else if (imFuji.RAFDataVersion == 0x0355) // X-E2S
511
+ {
512
+ wb_section_offset = 0x1840;
513
+ }
514
+
515
+ /* try for unknown RAF Data versions */
516
+ else if (!strcmp(model, "X-Pro2"))
517
+ {
518
+ CHECKSPACE(0x135c + 12);
519
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x135c))
520
+ wb_section_offset = 0x135c;
521
+ }
522
+ else if (!strcmp(model, "X100F"))
523
+ {
524
+ CHECKSPACE(0x1370 + 12);
525
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1370))
526
+ wb_section_offset = 0x1370;
527
+ }
528
+ else if (!strcmp(model, "X-E1"))
529
+ {
530
+ CHECKSPACE(0x13ac + 12);
531
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x13ac))
532
+ wb_section_offset = 0x13ac;
533
+ }
534
+ else if (!strcmp(model, "X-T2") ||
535
+ !strcmp(model, "X-T20"))
536
+ {
537
+ CHECKSPACE(0x13dc + 12);
538
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x13dc))
539
+ wb_section_offset = 0x13dc;
540
+ }
541
+ else if (!strcmp(model, "X20") ||
542
+ !strcmp(model, "X100S"))
543
+ {
544
+ CHECKSPACE(0x1410 + 12);
545
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1410))
546
+ wb_section_offset = 0x1410;
547
+ }
548
+ else if (!strcmp(model, "XQ1") ||
549
+ !strcmp(model, "XQ2"))
550
+ {
551
+ CHECKSPACE(0x1414+ 12);
552
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1414))
553
+ wb_section_offset = 0x1414;
554
+ }
555
+ else if (!strcmp(model, "X-E3"))
556
+ {
557
+ CHECKSPACE(0x141c + 12);
558
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x141c))
559
+ wb_section_offset = 0x141c;
560
+ }
561
+ else if (!strcmp(model, "GFX 50S") ||
562
+ !strcmp(model, "GFX 50R"))
563
+ {
564
+ CHECKSPACE(0x1424 + 12);
565
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1424))
566
+ wb_section_offset = 0x1424;
567
+ }
568
+ else if (!strcmp(model, "GFX 50S II") || !strcmp(model, "GFX50S II")) {
569
+ CHECKSPACE(0x214c + 12);
570
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x214c))
571
+ wb_section_offset = 0x214c;
572
+ }
573
+ else if (!strcmp(model, "X30") ||
574
+ !strcmp(model, "X100T"))
575
+ {
576
+ CHECKSPACE(0x1444 + 12);
577
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1444))
578
+ wb_section_offset = 0x1444;
579
+ }
580
+ else if (!strcmp(model, "X-M1") ||
581
+ !strcmp(model, "X-A1") ||
582
+ !strcmp(model, "X-A2"))
583
+ {
584
+ CHECKSPACE(0x1474 + 12);
585
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1474))
586
+ wb_section_offset = 0x1474;
587
+ }
588
+ else if (!strcmp(model, "X-E2") ||
589
+ !strcmp(model, "X-H1"))
590
+ {
591
+ CHECKSPACE(0x1480 + 12);
592
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1480))
593
+ wb_section_offset = 0x1480;
594
+ }
595
+ else if (!strcmp(model, "X-T1"))
596
+ {
597
+ CHECKSPACE(0x14b0 + 12);
598
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x14b0))
599
+ wb_section_offset = 0x14b0;
600
+ }
601
+ else if (!strcmp(model, "X70"))
602
+ {
603
+ CHECKSPACE(0x17b4 + 12);
604
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x17b4))
605
+ wb_section_offset = 0x17b4;
606
+ }
607
+ else if (!strcmp(model, "X-T10"))
608
+ {
609
+ CHECKSPACE(0x1824 + 12);
610
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1824))
611
+ wb_section_offset = 0x1824;
612
+ }
613
+ else if (!strcmp(model, "X-E2S"))
614
+ {
615
+ CHECKSPACE(0x1840 + 12);
616
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1840))
617
+ wb_section_offset = 0x1840;
618
+ }
619
+ else if (!strcmp(model, "X-T3"))
620
+ {
621
+ CHECKSPACE(0x2014 + 12);
622
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x2014))
623
+ wb_section_offset = 0x2014;
624
+ }
625
+ else if (!strcmp(model, "X100V"))
626
+ {
627
+ CHECKSPACE(0x2078 + 12);
628
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x2078))
629
+ wb_section_offset = 0x2078;
630
+ }
631
+ else if (!strcmp(model, "X-T30"))
632
+ {
633
+ CHECKSPACE(0x20b8 + 12);
634
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x20b8))
635
+ wb_section_offset = 0x20b8;
636
+ else
637
+ {
638
+ CHECKSPACE(0x20c8 + 12);
639
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x20c8))
640
+ wb_section_offset = 0x20c8;
641
+ }
642
+ }
643
+ else if (!strcmp(model, "GFX 100"))
644
+ {
645
+ CHECKSPACE(0x20e4 + 12);
646
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x20e4))
647
+ wb_section_offset = 0x20e4;
648
+ }
649
+ else if (!strcmp(model, "X-Pro3"))
650
+ {
651
+ CHECKSPACE(0x20e8 + 12);
652
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x20e8))
653
+ wb_section_offset = 0x20e8;
654
+ }
655
+ else if (!strcmp(model, "GFX100S") || !strcmp(model, "GFX 100S"))
656
+ {
657
+ CHECKSPACE(0x2108 + 12);
658
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x2108))
659
+ wb_section_offset = 0x2108;
660
+ }
661
+ else if (!strcmp(model, "X-T4"))
662
+ {
663
+ CHECKSPACE(0x21c8 + 12);
664
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x21c8))
665
+ wb_section_offset = 0x21c8;
666
+ }
667
+ else if ((!strcmp(model, "X-E4")) ||
668
+ (!strcmp(model, "X-T30 II")))
669
+ {
670
+ CHECKSPACE(0x21cc + 12);
671
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x21cc))
672
+ wb_section_offset = 0x21cc;
673
+ }
674
+ else if (!strcmp(model, "X-S10"))
675
+ {
676
+ CHECKSPACE(0x21de + 12);
677
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x21de))
678
+ wb_section_offset = 0x21de;
679
+ }
680
+ /* no RAF Data version for the models below */
681
+ else if (!strcmp(model, "FinePix X100")) // X100 0 0x19f0 0x19e8
682
+ {
683
+ if (!strcmp(imFuji.RAFVersion, "0069"))
684
+ wb_section_offset = 0x19e8;
685
+ else if (!strcmp(imFuji.RAFVersion, "0100") ||
686
+ !strcmp(imFuji.RAFVersion, "0110"))
687
+ wb_section_offset = 0x19f0;
688
+ else
689
+ {
690
+ CHECKSPACE(0x19e8 + 12);
691
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x19e8))
692
+ wb_section_offset = 0x19e8;
693
+ else
694
+ {
695
+ CHECKSPACE(0x19f0 + 12);
696
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x19f0))
697
+ wb_section_offset = 0x19f0;
698
+ }
699
+ }
700
+ }
701
+ else if (!strcmp(model, "X-Pro1")) // X-Pro1 0 0x13a4
702
+ {
703
+ if (!strcmp(imFuji.RAFVersion, "0100") ||
704
+ !strcmp(imFuji.RAFVersion, "0101") ||
705
+ !strcmp(imFuji.RAFVersion, "0204"))
706
+ wb_section_offset = 0x13a4;
707
+ else
708
+ {
709
+ CHECKSPACE(0x13a4 + 12);
710
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x13a4))
711
+ wb_section_offset = 0x13a4;
712
+ }
713
+ }
714
+ else if (!strcmp(model, "XF1")) // XF1 0 0x138c
715
+ {
716
+ if (!strcmp(imFuji.RAFVersion, "0100"))
717
+ wb_section_offset = 0x138c;
718
+ else
719
+ {
720
+ CHECKSPACE(0x138c + 12);
721
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x138c))
722
+ wb_section_offset = 0x138c;
723
+ }
724
+ }
725
+ else if (!strcmp(model, "X-S1")) // X-S1 0 0x1284
726
+ {
727
+ if (!strcmp(imFuji.RAFVersion, "0100"))
728
+ wb_section_offset = 0x1284;
729
+ else
730
+ {
731
+ CHECKSPACE(0x1284 + 12);
732
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1284))
733
+ wb_section_offset = 0x1284;
734
+ }
735
+ }
736
+ else if (!strcmp(model, "X10")) // X10 0 0x1280 0x12d4
737
+ {
738
+ if (!strcmp(imFuji.RAFVersion, "0100") ||
739
+ !strcmp(imFuji.RAFVersion, "0102"))
740
+ wb_section_offset = 0x1280;
741
+ else if (!strcmp(imFuji.RAFVersion, "0103"))
742
+ wb_section_offset = 0x12d4;
743
+ else
744
+ {
745
+ CHECKSPACE(0x1280 + 12);
746
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x1280))
747
+ wb_section_offset = 0x1280;
748
+ else
749
+ {
750
+ CHECKSPACE(0x12d4 + 12);
751
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x12d4))
752
+ wb_section_offset = 0x12d4;
753
+ }
754
+ }
755
+ }
756
+ else if (!strcmp(model, "XF1")) // XF1 0 0x138c
757
+ {
758
+ if (!strcmp(imFuji.RAFVersion, "0100"))
759
+ wb_section_offset = 0x138c;
760
+ else
761
+ {
762
+ CHECKSPACE(0x138c + 12);
763
+ if (isWB(PrivateMknBuf + posPrivateMknBuf + 0x138c))
764
+ wb_section_offset = 0x138c;
765
+ }
766
+ }
767
+
768
+ if (wb_section_offset)
769
+ {
770
+ CHECKSPACE(INT64(wb_section_offset) + 12LL);
771
+ }
772
+
773
+ if (wb_section_offset &&
774
+ isWB(PrivateMknBuf + posPrivateMknBuf + wb_section_offset))
775
+ {
776
+
777
+ if (!imFuji.RAFDataVersion)
778
+ {
779
+ posWB = posPrivateMknBuf + wb_section_offset - 6;
780
+ CHECKSPACE_ABS2(posWB, 6);
781
+ icWBC[LIBRAW_WBI_Auto][1] =
782
+ icWBC[LIBRAW_WBI_Auto][3] =
783
+ sget2(PrivateMknBuf + posWB);
784
+ icWBC[LIBRAW_WBI_Auto][0] =
785
+ sget2(PrivateMknBuf + posWB + 2);
786
+ icWBC[LIBRAW_WBI_Auto][2] =
787
+ sget2(PrivateMknBuf + posWB + 4);
788
+ }
789
+
790
+ posWB = posPrivateMknBuf + wb_section_offset;
791
+ for (int wb_ind = 0; wb_ind < (int)Fuji_wb_list1.size(); posWB += 6, wb_ind++)
792
+ {
793
+ CHECKSPACE_ABS2(posWB, 6);
794
+ icWBC[Fuji_wb_list1[wb_ind]][1] =
795
+ icWBC[Fuji_wb_list1[wb_ind]][3] =
796
+ sget2(PrivateMknBuf + posWB);
797
+ icWBC[Fuji_wb_list1[wb_ind]][0] =
798
+ sget2(PrivateMknBuf + posWB + 2);
799
+ icWBC[Fuji_wb_list1[wb_ind]][2] =
800
+ sget2(PrivateMknBuf + posWB + 4);
801
+ }
802
+ int found = 0;
803
+ if (is34)
804
+ posWB += 0x30;
805
+ posWB += 0xc0;
806
+ CHECKSPACE_ABS2(posWB, 2);
807
+ ushort Gval = sget2(PrivateMknBuf + posWB);
808
+ for (int posEndCCTsection = posWB; posEndCCTsection < (posWB + 30);
809
+ posEndCCTsection += 6)
810
+ {
811
+ CHECKSPACE_ABS2(posEndCCTsection, 2);
812
+ if (sget2(PrivateMknBuf + posEndCCTsection) != Gval)
813
+ {
814
+ if (is34)
815
+ wb_section_offset = posEndCCTsection - 34*3*2; // 34 records, 3 2-byte values in a record
816
+ else
817
+ wb_section_offset = posEndCCTsection - 31*3*2; // 31 records, 3 2-byte values in a record
818
+ found = 1;
819
+ break;
820
+ }
821
+ }
822
+
823
+ if (found)
824
+ {
825
+ for (int iCCT = 0; iCCT < 31; iCCT++)
826
+ {
827
+ CHECKSPACE_ABS2(wb_section_offset, iCCT*6+6);
828
+ icWBCCTC[iCCT][0] = FujiCCT_K[iCCT];
829
+ icWBCCTC[iCCT][1] = sget2(PrivateMknBuf + wb_section_offset + iCCT * 6 + 2);
830
+ icWBCCTC[iCCT][2] = icWBCCTC[iCCT][4] = sget2(PrivateMknBuf + wb_section_offset + iCCT * 6);
831
+ icWBCCTC[iCCT][3] = sget2(PrivateMknBuf + wb_section_offset + iCCT * 6 + 4);
832
+ }
833
+ }
834
+ }
835
+ }
836
+ else // process 4K raf data
837
+ {
838
+ int wb[4];
839
+ int nWB, tWB, pWB;
840
+ int iCCT = 0;
841
+ imFuji.RAFDataGeneration = 4096; // X-A3, X-A5, X-A7, X-A10, X-A20, X-T100, X-T200, XF10
842
+ posWB = posPrivateMknBuf + 0x200;
843
+ for (int wb_ind = 0; wb_ind < 42; wb_ind++)
844
+ {
845
+ CHECKSPACE_ABS2(posWB, 24);
846
+ nWB = sget4(PrivateMknBuf + posWB);
847
+ posWB += 4;
848
+ tWB = sget4(PrivateMknBuf + posWB);
849
+ posWB += 4;
850
+ wb[0] = sget4(PrivateMknBuf + posWB) << 1;
851
+ posWB += 4;
852
+ wb[1] = sget4(PrivateMknBuf + posWB);
853
+ posWB += 4;
854
+ wb[3] = sget4(PrivateMknBuf + posWB);
855
+ posWB += 4;
856
+ wb[2] = sget4(PrivateMknBuf + posWB) << 1;
857
+ posWB += 4;
858
+
859
+ if (tWB && (iCCT < 64))
860
+ {
861
+ icWBCCTC[iCCT][0] = tWB;
862
+ FORC4 icWBCCTC[iCCT][c + 1] = wb[c];
863
+ iCCT++;
864
+ }
865
+ if (nWB != 0x46)
866
+ {
867
+ for (pWB = 1; pWB < (int)Fuji_wb_list2.size(); pWB += 2)
868
+ {
869
+ if (Fuji_wb_list2[pWB] == nWB)
870
+ {
871
+ FORC4 icWBC[Fuji_wb_list2[pWB - 1]][c] = wb[c];
872
+ break;
873
+ }
874
+ }
875
+ }
876
+ }
877
+ }
878
+ }
879
+ posPrivateMknBuf += PrivateTagBytes;
880
+ }
881
+ free(PrivateMknBuf);
882
+ }
883
+ #undef get_average_WB
884
+ #undef CHECKSPACE
885
+ #undef CHECKSPACE_ABS2
886
+ #undef CHECKSPACE_ABS3
887
+ }
888
+
889
+ void LibRaw::parseFujiMakernotes(unsigned tag, unsigned type, unsigned len,
890
+ unsigned /*dng_writer*/)
891
+ {
892
+ if (tag == 0x0010)
893
+ {
894
+ char FujiSerial[sizeof(imgdata.shootinginfo.InternalBodySerial)];
895
+ char *words[4] = { 0,0,0,0 };
896
+ char yy[2], mm[3], dd[3], ystr[16], ynum[16];
897
+ int year, nwords, ynum_len;
898
+ unsigned c;
899
+ memset(FujiSerial, 0, sizeof(imgdata.shootinginfo.InternalBodySerial));
900
+ ifp->read(FujiSerial, MIN(len,sizeof(FujiSerial)), 1);
901
+ nwords = getwords(FujiSerial, words, 4,
902
+ sizeof(imgdata.shootinginfo.InternalBodySerial));
903
+ for (int i = 0; i < nwords; i++)
904
+ {
905
+ if (!words[i]) break; // probably damaged input
906
+ mm[2] = dd[2] = 0;
907
+ if (strnlen(words[i],
908
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1) < 18)
909
+ {
910
+ if (i == 0)
911
+ {
912
+ strncpy(imgdata.shootinginfo.InternalBodySerial, words[0],
913
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1);
914
+ }
915
+ else
916
+ {
917
+ char tbuf[sizeof(imgdata.shootinginfo.InternalBodySerial)];
918
+ snprintf(tbuf, sizeof(tbuf)-1, "%s %s",
919
+ imgdata.shootinginfo.InternalBodySerial, words[i]);
920
+ strncpy(imgdata.shootinginfo.InternalBodySerial, tbuf,
921
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1);
922
+ }
923
+ }
924
+ else
925
+ {
926
+ strncpy(
927
+ dd,
928
+ words[i] +
929
+ strnlen(words[i],
930
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1) -
931
+ 14,
932
+ 2);
933
+ strncpy(
934
+ mm,
935
+ words[i] +
936
+ strnlen(words[i],
937
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1) -
938
+ 16,
939
+ 2);
940
+ strncpy(
941
+ yy,
942
+ words[i] +
943
+ strnlen(words[i],
944
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1) -
945
+ 18,
946
+ 2);
947
+ year = (yy[0] - '0') * 10 + (yy[1] - '0');
948
+ if (year < 70)
949
+ year += 2000;
950
+ else
951
+ year += 1900;
952
+
953
+ ynum_len = MIN(
954
+ int(sizeof(ynum) - 1),
955
+ (int)strnlen(words[i],
956
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1) -
957
+ 18);
958
+ strncpy(ynum, words[i], ynum_len);
959
+ ynum[ynum_len] = 0;
960
+ for (int j = 0; ynum[j] && ynum[j + 1] && sscanf(ynum + j, "%2x", &c);
961
+ j += 2)
962
+ ystr[j / 2] = c;
963
+ ynum_len /= 2;
964
+ ystr[ynum_len + 1] = 0;
965
+ strcpy(model2, ystr);
966
+
967
+ if (i == 0)
968
+ {
969
+ char tbuf[sizeof(imgdata.shootinginfo.InternalBodySerial)];
970
+
971
+ if (nwords == 1)
972
+ {
973
+ snprintf(
974
+ tbuf, sizeof(tbuf), "%s %d:%s:%s %s",
975
+ ystr, year, mm, dd,
976
+ words[0] +
977
+ strnlen(words[0], sizeof(imgdata.shootinginfo.InternalBodySerial)-1)-12);
978
+ }
979
+ else
980
+ {
981
+ snprintf(
982
+ tbuf, sizeof(tbuf), "%s %d:%s:%s %s", ystr, year, mm, dd,
983
+ words[0] +
984
+ strnlen(words[0],
985
+ sizeof(imgdata.shootinginfo.InternalBodySerial) -
986
+ 1) -
987
+ 12);
988
+ }
989
+ strncpy(imgdata.shootinginfo.InternalBodySerial, tbuf,
990
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1);
991
+ }
992
+ else
993
+ {
994
+ char tbuf[sizeof(imgdata.shootinginfo.InternalBodySerial)];
995
+ snprintf(
996
+ tbuf, sizeof(tbuf), "%s %s %d:%s:%s %s",
997
+ imgdata.shootinginfo.InternalBodySerial, ystr, year, mm, dd,
998
+ words[i] +
999
+ strnlen(words[i],
1000
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1) -
1001
+ 12);
1002
+ strncpy(imgdata.shootinginfo.InternalBodySerial, tbuf,
1003
+ sizeof(imgdata.shootinginfo.InternalBodySerial) - 1);
1004
+ }
1005
+ }
1006
+ }
1007
+ }
1008
+ else
1009
+ switch (tag)
1010
+ {
1011
+ case 0x1002:
1012
+ imFuji.WB_Preset = get2();
1013
+ break;
1014
+ case 0x1011:
1015
+ imCommon.FlashEC = getreal(type);
1016
+ break;
1017
+ case 0x1020:
1018
+ imFuji.Macro = get2();
1019
+ break;
1020
+ case 0x1021:
1021
+ imFuji.FocusMode = imgdata.shootinginfo.FocusMode = get2();
1022
+ break;
1023
+ case 0x1022:
1024
+ imFuji.AFMode = get2();
1025
+ break;
1026
+ case 0x1023:
1027
+ imFuji.FocusPixel[0] = get2();
1028
+ imFuji.FocusPixel[1] = get2();
1029
+ break;
1030
+ case 0x102b:
1031
+ imFuji.PrioritySettings = get2();
1032
+ break;
1033
+ case 0x102d:
1034
+ imFuji.FocusSettings = get4();
1035
+ break;
1036
+ case 0x102e:
1037
+ imFuji.AF_C_Settings = get4();
1038
+ break;
1039
+ case 0x1034:
1040
+ imFuji.ExrMode = get2();
1041
+ break;
1042
+ case 0x104d:
1043
+ FujiCropMode = get2(); // odd: one of raw dimensions here can be lost
1044
+ break;
1045
+ case 0x1050:
1046
+ imFuji.ShutterType = get2();
1047
+ break;
1048
+ case 0x1100:
1049
+ imFuji.AutoBracketing = get2(); // AutoBracketing = 6 for pixel shift mode
1050
+ break;
1051
+ case 0x1101:
1052
+ imFuji.SequenceNumber = get2();
1053
+ break;
1054
+ case 0x1103:
1055
+ imgdata.shootinginfo.DriveMode = get2();
1056
+ imFuji.DriveMode = imgdata.shootinginfo.DriveMode & 0xff;
1057
+ break;
1058
+ case 0x1105:
1059
+ imFuji.SeriesLength = get2();
1060
+ break;
1061
+ case 0x1106:
1062
+ imFuji.PixelShiftOffset[0] = getreal(type);
1063
+ imFuji.PixelShiftOffset[1] = getreal(type);
1064
+ break;
1065
+ case 0x1301:
1066
+ imFuji.FocusWarning = get2();
1067
+ break;
1068
+ case 0x1400:
1069
+ imFuji.DynamicRange = get2();
1070
+ break;
1071
+ case 0x1401:
1072
+ imFuji.FilmMode = get2();
1073
+ break;
1074
+ case 0x1402:
1075
+ imFuji.DynamicRangeSetting = get2();
1076
+ break;
1077
+ case 0x1403:
1078
+ imFuji.DevelopmentDynamicRange = get2();
1079
+ break;
1080
+ case 0x1404:
1081
+ ilm.MinFocal = getreal(type);
1082
+ break;
1083
+ case 0x1405:
1084
+ ilm.MaxFocal = getreal(type);
1085
+ break;
1086
+ case 0x1406:
1087
+ ilm.MaxAp4MinFocal = getreal(type);
1088
+ break;
1089
+ case 0x1407:
1090
+ ilm.MaxAp4MaxFocal = getreal(type);
1091
+ break;
1092
+ case 0x140b:
1093
+ imFuji.AutoDynamicRange = get2();
1094
+ break;
1095
+ case 0x1422:
1096
+ imFuji.ImageStabilization[0] = get2();
1097
+ imFuji.ImageStabilization[1] = get2();
1098
+ imFuji.ImageStabilization[2] = get2();
1099
+ imgdata.shootinginfo.ImageStabilization =
1100
+ (imFuji.ImageStabilization[0] << 9) + imFuji.ImageStabilization[1];
1101
+ break;
1102
+ case 0x1438:
1103
+ imFuji.ImageCount = get2();
1104
+ break;
1105
+ case 0x1431:
1106
+ imFuji.Rating = get4();
1107
+ break;
1108
+ case 0x1443:
1109
+ imFuji.DRangePriority = get2();
1110
+ break;
1111
+ case 0x1444:
1112
+ imFuji.DRangePriorityAuto = get2();
1113
+ break;
1114
+ case 0x1445:
1115
+ imFuji.DRangePriorityFixed = get2();
1116
+ break;
1117
+ }
1118
+ return;
1119
+ }
1120
+
1121
+ void LibRaw::parse_fuji_thumbnail(int offset)
1122
+ {
1123
+ uchar xmpmarker[] = "http://ns.adobe.com/xap/1.0/";
1124
+ uchar buf[sizeof(xmpmarker)+1];
1125
+ int xmpsz = sizeof(xmpmarker); // we do not
1126
+
1127
+ INT64 pos = ftell(ifp);
1128
+ fseek(ifp, offset, SEEK_SET);
1129
+ ushort s_order = order;
1130
+ order = 0x4a4a; // JPEG is always in MM order
1131
+
1132
+ if (get2() == 0xFFD8)
1133
+ {
1134
+ while (1)
1135
+ {
1136
+ ushort tag = get2();
1137
+ if (tag != 0xFFE1 && tag != 0xFFE2) // allow APP1/APP2 only
1138
+ break;
1139
+ INT64 tpos = ftell(ifp);
1140
+ int len = get2();
1141
+ if (len > xmpsz + 2)
1142
+ {
1143
+ if ((fread(buf, 1, xmpsz, ifp) == xmpsz) && !memcmp(buf, xmpmarker, xmpsz)) // got it
1144
+ {
1145
+ xmplen = len - xmpsz - 2;
1146
+ xmpdata = (char*) calloc(xmplen+1,1);
1147
+ unsigned br = fread(xmpdata, 1, xmplen, ifp);
1148
+ xmpdata[br] = 0;
1149
+ break;
1150
+ }
1151
+ }
1152
+ fseek(ifp, tpos + len, SEEK_SET);
1153
+ }
1154
+ }
1155
+
1156
+ order = s_order;
1157
+ fseek(ifp, pos, SEEK_SET);
1158
+ }
1159
+
1160
+ void LibRaw::parse_fuji(int offset)
1161
+ {
1162
+ unsigned entries, tag, len, save, c;
1163
+
1164
+ #define get_average_WB(wb_index) \
1165
+ FORC4 icWBC[wb_index][GRGB_2_RGBG(c)] = get2(); \
1166
+ if ((len == 16) && average_WBData) { \
1167
+ FORC4 icWBC[wb_index][GRGB_2_RGBG(c)] = \
1168
+ (icWBC[wb_index][GRGB_2_RGBG(c)] + get2())/2; \
1169
+ } \
1170
+ if (use_WBcorr_coeffs) { \
1171
+ icWBC[wb_index][0] *= wbR_corr; \
1172
+ icWBC[wb_index][2] *= wbB_corr; \
1173
+ }
1174
+
1175
+ ushort raw_inset_present = 0;
1176
+ ushort use_WBcorr_coeffs = 0;
1177
+ double wbR_corr = 1.0;
1178
+ double wbB_corr = 1.0;
1179
+ ilm.CamID = unique_id;
1180
+ int average_WBData = 1;
1181
+
1182
+ fseek(ifp, offset, SEEK_SET);
1183
+ entries = get4();
1184
+ if (entries > 255)
1185
+ return;
1186
+ imgdata.process_warnings |= LIBRAW_WARN_PARSEFUJI_PROCESSED;
1187
+
1188
+ if (strstr(model, "S2Pro")
1189
+ || strstr(model, "S20Pro")
1190
+ || strstr(model, "F700")
1191
+ || strstr(model, "S5000")
1192
+ || strstr(model, "S7000")
1193
+ ) {
1194
+ use_WBcorr_coeffs = 1;
1195
+ wbR_corr = 10.0 / 17.0 / 0.652941;
1196
+ wbB_corr = 2.0 /3.0 / (3.0 / 4.0 + 1.0 / 300.0);
1197
+ } else if (strstr(model, "DBP") || strstr(model, "DX-2000")) {
1198
+ use_WBcorr_coeffs = 1;
1199
+ wbR_corr = 0.7632653061;
1200
+ wbB_corr = 0.8591549296;
1201
+ }
1202
+
1203
+ while (entries--)
1204
+ {
1205
+ tag = get2();
1206
+ len = get2();
1207
+ save = ftell(ifp);
1208
+ if (tag == 0x0100) // RawImageFullSize
1209
+ {
1210
+ raw_height = get2();
1211
+ raw_width = get2();
1212
+ raw_inset_present = 1;
1213
+ }
1214
+ else if ((tag == 0x0110) && raw_inset_present) // RawImageCropTopLeft
1215
+ {
1216
+ imgdata.sizes.raw_inset_crops[0].ctop = get2();
1217
+ imgdata.sizes.raw_inset_crops[0].cleft = get2();
1218
+ }
1219
+ else if ((tag == 0x0111) && raw_inset_present) // RawImageCroppedSize
1220
+ {
1221
+ imgdata.sizes.raw_inset_crops[0].cheight = get2();
1222
+ imgdata.sizes.raw_inset_crops[0].cwidth = get2();
1223
+ }
1224
+ else if ((tag == 0x0115) && raw_inset_present) // RawImageAspectRatio
1225
+ {
1226
+ int a = get2();
1227
+ int b = get2();
1228
+ if (a * b == 6)
1229
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_3to2;
1230
+ else if (a * b == 12)
1231
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_4to3;
1232
+ else if (a * b == 144)
1233
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_16to9;
1234
+ else if (a * b == 1)
1235
+ imgdata.sizes.raw_aspect = LIBRAW_IMAGE_ASPECT_1to1;
1236
+ }
1237
+ else if (tag == 0x0121) // RawImageSize
1238
+ {
1239
+ height = get2();
1240
+ if ((width = get2()) == 4284)
1241
+ width += 3;
1242
+ }
1243
+ else if (tag == 0x0130) // FujiLayout,
1244
+ {
1245
+ fuji_layout = fgetc(ifp) >> 7;
1246
+ fuji_width = !(fgetc(ifp) & 8);
1247
+ }
1248
+ else if (tag == 0x0131) // XTransLayout
1249
+ {
1250
+ filters = 9;
1251
+ char *xtrans_abs_alias = &xtrans_abs[0][0];
1252
+ FORC(36)
1253
+ {
1254
+ int q = fgetc(ifp);
1255
+ xtrans_abs_alias[35 - c] = MAX(0, MIN(q, 2)); /* & 3;*/
1256
+ }
1257
+ }
1258
+ else if (tag == 0x2ff0) // WB_GRGBLevels
1259
+ {
1260
+ get_average_WB(LIBRAW_WBI_AsShot);
1261
+ FORC4 cam_mul[c] = icWBC[LIBRAW_WBI_AsShot][c];
1262
+ }
1263
+ else if ((tag == 0x4000) &&
1264
+ ((len == 8) || (len == 16)))
1265
+ {
1266
+ imFuji.BlackLevel[0] = len / 2;
1267
+ FORC4 imFuji.BlackLevel[GRGB_2_RGBG(c)+1] = get2();
1268
+ if (imFuji.BlackLevel[0] == 8)
1269
+ FORC4 imFuji.BlackLevel[GRGB_2_RGBG(c)+5] = get2();
1270
+ if (imFuji.BlackLevel[0] == 4)
1271
+ FORC4 cblack[c] = imFuji.BlackLevel[c+1];
1272
+ else if (imFuji.BlackLevel[0] == 8)
1273
+ FORC4 cblack[c] = (imFuji.BlackLevel[c+1]+imFuji.BlackLevel[c+5]) /2;
1274
+ }
1275
+ else if (tag == 0x9200) // RelativeExposure
1276
+ {
1277
+ int s1 = get2();
1278
+ int s2 = get2();
1279
+ if ((s1 == s2) || !s1)
1280
+ imFuji.BrightnessCompensation = 0.0f;
1281
+ else if ((s1*4) == s2)
1282
+ imFuji.BrightnessCompensation = 2.0f;
1283
+ else if ((s1*16) == s2)
1284
+ imFuji.BrightnessCompensation = 4.0f;
1285
+ else
1286
+ imFuji.BrightnessCompensation = log(double(s2)/double(s1))/log(2.0);
1287
+ }
1288
+ else if (tag == 0x9650) // RawExposureBias
1289
+ {
1290
+ short a = (short)get2();
1291
+ float b = fMAX(1.0f, get2());
1292
+ imFuji.ExpoMidPointShift = a / b;
1293
+ imCommon.ExposureCalibrationShift += imFuji.ExpoMidPointShift;
1294
+ }
1295
+ else if (tag == 0x2000) // WB_GRGBLevelsAuto
1296
+ {
1297
+ get_average_WB(LIBRAW_WBI_Auto);
1298
+ }
1299
+ else if (tag == 0x2100) // WB_GRGBLevelsDaylight
1300
+ {
1301
+ get_average_WB(LIBRAW_WBI_FineWeather);
1302
+ }
1303
+ else if (tag == 0x2200) // WB_GRGBLevelsCloudy
1304
+ {
1305
+ get_average_WB(LIBRAW_WBI_Shade);
1306
+ }
1307
+ else if (tag == 0x2300) // WB_GRGBLevelsDaylightFluor
1308
+ {
1309
+ get_average_WB(LIBRAW_WBI_FL_D);
1310
+ }
1311
+ else if (tag == 0x2301) // WB_GRGBLevelsDayWhiteFluor
1312
+ {
1313
+ get_average_WB(LIBRAW_WBI_FL_N);
1314
+ }
1315
+ else if (tag == 0x2302) // WB_GRGBLevelsWhiteFluorescent
1316
+ {
1317
+ get_average_WB(LIBRAW_WBI_FL_W);
1318
+ }
1319
+ else if (tag == 0x2310) // WB_GRGBLevelsWarmWhiteFluor
1320
+ {
1321
+ get_average_WB(LIBRAW_WBI_FL_WW);
1322
+ }
1323
+ else if (tag == 0x2311) // WB_GRGBLevelsLivingRoomWarmWhiteFluor
1324
+ {
1325
+ get_average_WB(LIBRAW_WBI_FL_L);
1326
+ }
1327
+ else if (tag == 0x2400) // WB_GRGBLevelsTungsten
1328
+ {
1329
+ get_average_WB(LIBRAW_WBI_Tungsten);
1330
+ }
1331
+ else if (tag == 0x2410)
1332
+ {
1333
+ get_average_WB(LIBRAW_WBI_Flash);
1334
+ }
1335
+ else if (tag == 0x2f00) // WB_GRGBLevels
1336
+ {
1337
+ int nWBs = get4();
1338
+ nWBs = MIN(nWBs, 6);
1339
+ for (int wb_ind = LIBRAW_WBI_Custom1; wb_ind < LIBRAW_WBI_Custom1+nWBs; wb_ind++) {
1340
+ FORC4 icWBC[wb_ind][GRGB_2_RGBG(c)] = get2();
1341
+ if ((len >= unsigned(4+16*nWBs)) && average_WBData) {
1342
+ FORC4 icWBC[wb_ind][GRGB_2_RGBG(c)] =
1343
+ (icWBC[wb_ind][GRGB_2_RGBG(c)] +get2()) /2;
1344
+ }
1345
+ if (use_WBcorr_coeffs) {
1346
+ icWBC[LIBRAW_WBI_Custom1 + wb_ind][0] *= wbR_corr;
1347
+ icWBC[LIBRAW_WBI_Custom1 + wb_ind][2] *= wbB_corr;
1348
+ }
1349
+ }
1350
+ }
1351
+
1352
+ else if (tag == 0xc000) // RAFData
1353
+ {
1354
+ int offsetWH_inRAFData;
1355
+ unsigned save_order = order;
1356
+ order = 0x4949;
1357
+ if (len > 20000)
1358
+ {
1359
+ uchar RAFDataHeader[16];
1360
+ libraw_internal_data.unpacker_data.posRAFData = save;
1361
+ libraw_internal_data.unpacker_data.lenRAFData = (len >> 1);
1362
+ fread(RAFDataHeader, sizeof RAFDataHeader, 1, ifp);
1363
+ offsetWH_inRAFData = guess_RAFDataGeneration(RAFDataHeader);
1364
+ fseek(ifp, offsetWH_inRAFData-int(sizeof RAFDataHeader), SEEK_CUR);
1365
+ for (int i=0;
1366
+ i< (int)((sizeof imFuji.RAFData_ImageSizeTable) / (sizeof imFuji.RAFData_ImageSizeTable[0]));
1367
+ i++) {
1368
+ imFuji.RAFData_ImageSizeTable[i] = get4();
1369
+ }
1370
+
1371
+ // if ((width > raw_width)
1372
+ // || (raw_inset_present && (width < imgdata.sizes.raw_inset_crops[0].cwidth))
1373
+ // )
1374
+ // width = raw_width;
1375
+ // if ((height > raw_height)
1376
+ // || (raw_inset_present && (height < imgdata.sizes.raw_inset_crops[0].cheight))
1377
+ // )
1378
+ // height = raw_height;
1379
+ //
1380
+
1381
+ }
1382
+ else if (len == 4096) // X-A3, X-A5, X-A7, X-A10, X-A20, X-T100, X-T200, XF10
1383
+ { // Ill.A aligned to CCT 2850
1384
+ int wb[4];
1385
+ int nWB, tWB;
1386
+ int iCCT = 0;
1387
+ imFuji.RAFDataGeneration = 4096;
1388
+ fseek(ifp, save + 0x200, SEEK_SET);
1389
+ for (int wb_ind = 0; wb_ind < 42; wb_ind++)
1390
+ {
1391
+ nWB = get4();
1392
+ tWB = get4();
1393
+ wb[0] = get4() << 1;
1394
+ wb[1] = get4();
1395
+ wb[3] = get4();
1396
+ wb[2] = get4() << 1;
1397
+ if (tWB && (iCCT < 64))
1398
+ {
1399
+ icWBCCTC[iCCT][0] = tWB;
1400
+ FORC4 icWBCCTC[iCCT][c + 1] = wb[c];
1401
+ iCCT++;
1402
+ }
1403
+ if (nWB != 70)
1404
+ {
1405
+ for (int pWB = 1; pWB < (int)Fuji_wb_list2.size(); pWB += 2)
1406
+ {
1407
+ if (Fuji_wb_list2[pWB] == nWB)
1408
+ {
1409
+ FORC4 icWBC[Fuji_wb_list2[pWB - 1]][c] = wb[c];
1410
+ break;
1411
+ }
1412
+ }
1413
+ }
1414
+ }
1415
+ }
1416
+ order = save_order;
1417
+ }
1418
+ fseek(ifp, save + len, SEEK_SET);
1419
+ }
1420
+
1421
+ if (!imFuji.RAFDataGeneration) {
1422
+ height <<= fuji_layout;
1423
+ width >>= fuji_layout;
1424
+ }
1425
+ #undef get_average_WB
1426
+ }
1427
+