@woosh/meep-engine 3.9.0 → 3.10.0

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 (696) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/package.json +3 -2
  4. package/src/avif/encode_image_source.d.ts +70 -0
  5. package/src/avif/encode_image_source.d.ts.map +1 -0
  6. package/src/avif/encode_image_source.js +117 -0
  7. package/src/avif/encoder_worker.js +15 -126
  8. package/src/avif/index.d.ts +4 -2
  9. package/src/avif/index.js +21 -2
  10. package/src/avif/native/DECISIONS.md +537 -0
  11. package/src/avif/native/NOTICE.md +61 -0
  12. package/src/avif/native/api/AvifDecoder.d.ts +67 -0
  13. package/src/avif/native/api/AvifDecoder.d.ts.map +1 -0
  14. package/src/avif/native/api/AvifDecoder.js +121 -0
  15. package/src/avif/native/api/apply_transformations.d.ts +30 -0
  16. package/src/avif/native/api/apply_transformations.d.ts.map +1 -0
  17. package/src/avif/native/api/apply_transformations.js +120 -0
  18. package/src/avif/native/api/avif_to_sampler2d.d.ts +25 -0
  19. package/src/avif/native/api/avif_to_sampler2d.d.ts.map +1 -0
  20. package/src/avif/native/api/avif_to_sampler2d.js +42 -0
  21. package/src/avif/native/api/convert_to_rgba.d.ts +54 -0
  22. package/src/avif/native/api/convert_to_rgba.d.ts.map +1 -0
  23. package/src/avif/native/api/convert_to_rgba.js +204 -0
  24. package/src/avif/native/api/decode_avif.d.ts +24 -0
  25. package/src/avif/native/api/decode_avif.d.ts.map +1 -0
  26. package/src/avif/native/api/decode_avif.js +111 -0
  27. package/src/avif/native/api/decode_image_item.d.ts +18 -0
  28. package/src/avif/native/api/decode_image_item.d.ts.map +1 -0
  29. package/src/avif/native/api/decode_image_item.js +234 -0
  30. package/src/avif/native/api/encode_avif.d.ts +73 -0
  31. package/src/avif/native/api/encode_avif.d.ts.map +1 -0
  32. package/src/avif/native/api/encode_avif.js +488 -0
  33. package/src/avif/native/api/sampler2d_to_avif.d.ts +22 -0
  34. package/src/avif/native/api/sampler2d_to_avif.d.ts.map +1 -0
  35. package/src/avif/native/api/sampler2d_to_avif.js +108 -0
  36. package/src/avif/native/av1/decode/Av1FrameContext.d.ts +286 -0
  37. package/src/avif/native/av1/decode/Av1FrameContext.d.ts.map +1 -0
  38. package/src/avif/native/av1/decode/Av1FrameContext.js +622 -0
  39. package/src/avif/native/av1/decode/block_decoded.d.ts +27 -0
  40. package/src/avif/native/av1/decode/block_decoded.d.ts.map +1 -0
  41. package/src/avif/native/av1/decode/block_decoded.js +59 -0
  42. package/src/avif/native/av1/decode/decode_av1_still.d.ts +22 -0
  43. package/src/avif/native/av1/decode/decode_av1_still.d.ts.map +1 -0
  44. package/src/avif/native/av1/decode/decode_av1_still.js +309 -0
  45. package/src/avif/native/av1/decode/decode_coefficients.d.ts +20 -0
  46. package/src/avif/native/av1/decode/decode_coefficients.d.ts.map +1 -0
  47. package/src/avif/native/av1/decode/decode_coefficients.js +259 -0
  48. package/src/avif/native/av1/decode/decode_palette.d.ts +28 -0
  49. package/src/avif/native/av1/decode/decode_palette.d.ts.map +1 -0
  50. package/src/avif/native/av1/decode/decode_palette.js +442 -0
  51. package/src/avif/native/av1/decode/decode_tile.d.ts +14 -0
  52. package/src/avif/native/av1/decode/decode_tile.d.ts.map +1 -0
  53. package/src/avif/native/av1/decode/decode_tile.js +1213 -0
  54. package/src/avif/native/av1/decode/get_scan.d.ts +16 -0
  55. package/src/avif/native/av1/decode/get_scan.d.ts.map +1 -0
  56. package/src/avif/native/av1/decode/get_scan.js +138 -0
  57. package/src/avif/native/av1/decode/read_lr.d.ts +35 -0
  58. package/src/avif/native/av1/decode/read_lr.d.ts.map +1 -0
  59. package/src/avif/native/av1/decode/read_lr.js +277 -0
  60. package/src/avif/native/av1/decode/read_transform_type.d.ts +19 -0
  61. package/src/avif/native/av1/decode/read_transform_type.d.ts.map +1 -0
  62. package/src/avif/native/av1/decode/read_transform_type.js +92 -0
  63. package/src/avif/native/av1/decode/reconstruct.d.ts +36 -0
  64. package/src/avif/native/av1/decode/reconstruct.d.ts.map +1 -0
  65. package/src/avif/native/av1/decode/reconstruct.js +241 -0
  66. package/src/avif/native/av1/decode/transform_type.d.ts +49 -0
  67. package/src/avif/native/av1/decode/transform_type.d.ts.map +1 -0
  68. package/src/avif/native/av1/decode/transform_type.js +137 -0
  69. package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts +81 -0
  70. package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts.map +1 -0
  71. package/src/avif/native/av1/encode/Av1BlockSnapshot.js +299 -0
  72. package/src/avif/native/av1/encode/Av1EncodeContext.d.ts +384 -0
  73. package/src/avif/native/av1/encode/Av1EncodeContext.d.ts.map +1 -0
  74. package/src/avif/native/av1/encode/Av1EncodeContext.js +590 -0
  75. package/src/avif/native/av1/encode/build_headers.d.ts +50 -0
  76. package/src/avif/native/av1/encode/build_headers.d.ts.map +1 -0
  77. package/src/avif/native/av1/encode/build_headers.js +359 -0
  78. package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts +26 -0
  79. package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts.map +1 -0
  80. package/src/avif/native/av1/encode/choose_chroma_alpha.js +90 -0
  81. package/src/avif/native/av1/encode/choose_filters.d.ts +21 -0
  82. package/src/avif/native/av1/encode/choose_filters.d.ts.map +1 -0
  83. package/src/avif/native/av1/encode/choose_filters.js +318 -0
  84. package/src/avif/native/av1/encode/choose_restoration.d.ts +35 -0
  85. package/src/avif/native/av1/encode/choose_restoration.d.ts.map +1 -0
  86. package/src/avif/native/av1/encode/choose_restoration.js +616 -0
  87. package/src/avif/native/av1/encode/decode_effort.d.ts +57 -0
  88. package/src/avif/native/av1/encode/decode_effort.d.ts.map +1 -0
  89. package/src/avif/native/av1/encode/decode_effort.js +59 -0
  90. package/src/avif/native/av1/encode/encode_av1_still.d.ts +17 -0
  91. package/src/avif/native/av1/encode/encode_av1_still.d.ts.map +1 -0
  92. package/src/avif/native/av1/encode/encode_av1_still.js +194 -0
  93. package/src/avif/native/av1/encode/encode_effort.d.ts +56 -0
  94. package/src/avif/native/av1/encode/encode_effort.d.ts.map +1 -0
  95. package/src/avif/native/av1/encode/encode_effort.js +97 -0
  96. package/src/avif/native/av1/encode/encode_tile.d.ts +26 -0
  97. package/src/avif/native/av1/encode/encode_tile.d.ts.map +1 -0
  98. package/src/avif/native/av1/encode/encode_tile.js +2331 -0
  99. package/src/avif/native/av1/encode/quantise.d.ts +51 -0
  100. package/src/avif/native/av1/encode/quantise.d.ts.map +1 -0
  101. package/src/avif/native/av1/encode/quantise.js +212 -0
  102. package/src/avif/native/av1/encode/write_coefficients.d.ts +42 -0
  103. package/src/avif/native/av1/encode/write_coefficients.d.ts.map +1 -0
  104. package/src/avif/native/av1/encode/write_coefficients.js +367 -0
  105. package/src/avif/native/av1/encode/write_lr.d.ts +33 -0
  106. package/src/avif/native/av1/encode/write_lr.d.ts.map +1 -0
  107. package/src/avif/native/av1/encode/write_lr.js +174 -0
  108. package/src/avif/native/av1/encode/write_transform_type.d.ts +21 -0
  109. package/src/avif/native/av1/encode/write_transform_type.d.ts.map +1 -0
  110. package/src/avif/native/av1/encode/write_transform_type.js +70 -0
  111. package/src/avif/native/av1/entropy/CdfContext.d.ts +167 -0
  112. package/src/avif/native/av1/entropy/CdfContext.d.ts.map +1 -0
  113. package/src/avif/native/av1/entropy/CdfContext.js +433 -0
  114. package/src/avif/native/av1/entropy/SymbolReader.d.ts +103 -0
  115. package/src/avif/native/av1/entropy/SymbolReader.d.ts.map +1 -0
  116. package/src/avif/native/av1/entropy/SymbolReader.js +317 -0
  117. package/src/avif/native/av1/entropy/SymbolWriter.d.ts +107 -0
  118. package/src/avif/native/av1/entropy/SymbolWriter.d.ts.map +1 -0
  119. package/src/avif/native/av1/entropy/SymbolWriter.js +352 -0
  120. package/src/avif/native/av1/entropy/coefficient_context.d.ts +71 -0
  121. package/src/avif/native/av1/entropy/coefficient_context.d.ts.map +1 -0
  122. package/src/avif/native/av1/entropy/coefficient_context.js +325 -0
  123. package/src/avif/native/av1/entropy/partition_cdf.d.ts +54 -0
  124. package/src/avif/native/av1/entropy/partition_cdf.d.ts.map +1 -0
  125. package/src/avif/native/av1/entropy/partition_cdf.js +98 -0
  126. package/src/avif/native/av1/entropy/symbol_cost.d.ts +37 -0
  127. package/src/avif/native/av1/entropy/symbol_cost.d.ts.map +1 -0
  128. package/src/avif/native/av1/entropy/symbol_cost.js +76 -0
  129. package/src/avif/native/av1/filter/cdef.d.ts +15 -0
  130. package/src/avif/native/av1/filter/cdef.d.ts.map +1 -0
  131. package/src/avif/native/av1/filter/cdef.js +313 -0
  132. package/src/avif/native/av1/filter/loop_filter.d.ts +14 -0
  133. package/src/avif/native/av1/filter/loop_filter.d.ts.map +1 -0
  134. package/src/avif/native/av1/filter/loop_filter.js +377 -0
  135. package/src/avif/native/av1/filter/loop_restoration.d.ts +42 -0
  136. package/src/avif/native/av1/filter/loop_restoration.d.ts.map +1 -0
  137. package/src/avif/native/av1/filter/loop_restoration.js +451 -0
  138. package/src/avif/native/av1/filter/superres.d.ts +18 -0
  139. package/src/avif/native/av1/filter/superres.d.ts.map +1 -0
  140. package/src/avif/native/av1/filter/superres.js +86 -0
  141. package/src/avif/native/av1/grain/FilmGrainState.d.ts +62 -0
  142. package/src/avif/native/av1/grain/FilmGrainState.d.ts.map +1 -0
  143. package/src/avif/native/av1/grain/FilmGrainState.js +87 -0
  144. package/src/avif/native/av1/grain/film_grain.d.ts +16 -0
  145. package/src/avif/native/av1/grain/film_grain.d.ts.map +1 -0
  146. package/src/avif/native/av1/grain/film_grain.js +623 -0
  147. package/src/avif/native/av1/obu/FrameHeader.d.ts +248 -0
  148. package/src/avif/native/av1/obu/FrameHeader.d.ts.map +1 -0
  149. package/src/avif/native/av1/obu/FrameHeader.js +381 -0
  150. package/src/avif/native/av1/obu/ObuHeader.d.ts +53 -0
  151. package/src/avif/native/av1/obu/ObuHeader.d.ts.map +1 -0
  152. package/src/avif/native/av1/obu/ObuHeader.js +62 -0
  153. package/src/avif/native/av1/obu/SequenceHeader.d.ts +157 -0
  154. package/src/avif/native/av1/obu/SequenceHeader.d.ts.map +1 -0
  155. package/src/avif/native/av1/obu/SequenceHeader.js +225 -0
  156. package/src/avif/native/av1/obu/for_each_obu.d.ts +24 -0
  157. package/src/avif/native/av1/obu/for_each_obu.d.ts.map +1 -0
  158. package/src/avif/native/av1/obu/for_each_obu.js +50 -0
  159. package/src/avif/native/av1/obu/parse_frame_header.d.ts +18 -0
  160. package/src/avif/native/av1/obu/parse_frame_header.d.ts.map +1 -0
  161. package/src/avif/native/av1/obu/parse_frame_header.js +841 -0
  162. package/src/avif/native/av1/obu/parse_obu_header.d.ts +23 -0
  163. package/src/avif/native/av1/obu/parse_obu_header.d.ts.map +1 -0
  164. package/src/avif/native/av1/obu/parse_obu_header.js +69 -0
  165. package/src/avif/native/av1/obu/parse_sequence_header.d.ts +17 -0
  166. package/src/avif/native/av1/obu/parse_sequence_header.d.ts.map +1 -0
  167. package/src/avif/native/av1/obu/parse_sequence_header.js +263 -0
  168. package/src/avif/native/av1/obu/write_frame_header.d.ts +16 -0
  169. package/src/avif/native/av1/obu/write_frame_header.d.ts.map +1 -0
  170. package/src/avif/native/av1/obu/write_frame_header.js +579 -0
  171. package/src/avif/native/av1/obu/write_sequence_header.d.ts +17 -0
  172. package/src/avif/native/av1/obu/write_sequence_header.d.ts.map +1 -0
  173. package/src/avif/native/av1/obu/write_sequence_header.js +189 -0
  174. package/src/avif/native/av1/predict/IntraPredictionState.d.ts +49 -0
  175. package/src/avif/native/av1/predict/IntraPredictionState.d.ts.map +1 -0
  176. package/src/avif/native/av1/predict/IntraPredictionState.js +58 -0
  177. package/src/avif/native/av1/predict/intra_filter_type.d.ts +17 -0
  178. package/src/avif/native/av1/predict/intra_filter_type.d.ts.map +1 -0
  179. package/src/avif/native/av1/predict/intra_filter_type.js +79 -0
  180. package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts +50 -0
  181. package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts.map +1 -0
  182. package/src/avif/native/av1/predict/predict_chroma_from_luma.js +153 -0
  183. package/src/avif/native/av1/predict/predict_intra.d.ts +42 -0
  184. package/src/avif/native/av1/predict/predict_intra.d.ts.map +1 -0
  185. package/src/avif/native/av1/predict/predict_intra.js +803 -0
  186. package/src/avif/native/av1/predict/predict_palette.d.ts +23 -0
  187. package/src/avif/native/av1/predict/predict_palette.d.ts.map +1 -0
  188. package/src/avif/native/av1/predict/predict_palette.js +36 -0
  189. package/src/avif/native/av1/tables/av1_symbols.d.ts +411 -0
  190. package/src/avif/native/av1/tables/av1_symbols.d.ts.map +1 -0
  191. package/src/avif/native/av1/tables/av1_symbols.js +419 -0
  192. package/src/avif/native/av1/tables/block_tables.d.ts +181 -0
  193. package/src/avif/native/av1/tables/block_tables.d.ts.map +1 -0
  194. package/src/avif/native/av1/tables/block_tables.js +270 -0
  195. package/src/avif/native/av1/tables/cdf_tables.d.ts +961 -0
  196. package/src/avif/native/av1/tables/cdf_tables.d.ts.map +1 -0
  197. package/src/avif/native/av1/tables/cdf_tables.js +1893 -0
  198. package/src/avif/native/av1/tables/coefficient_tables.d.ts +41 -0
  199. package/src/avif/native/av1/tables/coefficient_tables.d.ts.map +1 -0
  200. package/src/avif/native/av1/tables/coefficient_tables.js +82 -0
  201. package/src/avif/native/av1/tables/derived_block_tables.d.ts +15 -0
  202. package/src/avif/native/av1/tables/derived_block_tables.d.ts.map +1 -0
  203. package/src/avif/native/av1/tables/derived_block_tables.js +23 -0
  204. package/src/avif/native/av1/tables/filter_tables.d.ts +171 -0
  205. package/src/avif/native/av1/tables/filter_tables.d.ts.map +1 -0
  206. package/src/avif/native/av1/tables/filter_tables.js +313 -0
  207. package/src/avif/native/av1/tables/grain_tables.d.ts +11 -0
  208. package/src/avif/native/av1/tables/grain_tables.d.ts.map +1 -0
  209. package/src/avif/native/av1/tables/grain_tables.js +190 -0
  210. package/src/avif/native/av1/tables/prediction_tables.d.ts +141 -0
  211. package/src/avif/native/av1/tables/prediction_tables.d.ts.map +1 -0
  212. package/src/avif/native/av1/tables/prediction_tables.js +223 -0
  213. package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts +21 -0
  214. package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts.map +1 -0
  215. package/src/avif/native/av1/tables/quantizer_matrix_tables.js +38 -0
  216. package/src/avif/native/av1/tables/quantizer_tables.d.ts +21 -0
  217. package/src/avif/native/av1/tables/quantizer_tables.d.ts.map +1 -0
  218. package/src/avif/native/av1/tables/quantizer_tables.js +160 -0
  219. package/src/avif/native/av1/tables/scan_tables.d.ts +321 -0
  220. package/src/avif/native/av1/tables/scan_tables.d.ts.map +1 -0
  221. package/src/avif/native/av1/tables/scan_tables.js +727 -0
  222. package/src/avif/native/av1/tables/segmentation_tables.d.ts +31 -0
  223. package/src/avif/native/av1/tables/segmentation_tables.d.ts.map +1 -0
  224. package/src/avif/native/av1/tables/segmentation_tables.js +48 -0
  225. package/src/avif/native/av1/tables/transform_tables.d.ts +91 -0
  226. package/src/avif/native/av1/tables/transform_tables.d.ts.map +1 -0
  227. package/src/avif/native/av1/tables/transform_tables.js +140 -0
  228. package/src/avif/native/av1/tables/unpack_table.d.ts +33 -0
  229. package/src/avif/native/av1/tables/unpack_table.d.ts.map +1 -0
  230. package/src/avif/native/av1/tables/unpack_table.js +73 -0
  231. package/src/avif/native/av1/transform/forward_transform_2d.d.ts +61 -0
  232. package/src/avif/native/av1/transform/forward_transform_2d.d.ts.map +1 -0
  233. package/src/avif/native/av1/transform/forward_transform_2d.js +574 -0
  234. package/src/avif/native/av1/transform/inverse_transform_1d.d.ts +76 -0
  235. package/src/avif/native/av1/transform/inverse_transform_1d.d.ts.map +1 -0
  236. package/src/avif/native/av1/transform/inverse_transform_1d.js +590 -0
  237. package/src/avif/native/av1/transform/inverse_transform_2d.d.ts +46 -0
  238. package/src/avif/native/av1/transform/inverse_transform_2d.d.ts.map +1 -0
  239. package/src/avif/native/av1/transform/inverse_transform_2d.js +180 -0
  240. package/src/avif/native/av1/util/ceil_log2.d.ts +13 -0
  241. package/src/avif/native/av1/util/ceil_log2.d.ts.map +1 -0
  242. package/src/avif/native/av1/util/ceil_log2.js +18 -0
  243. package/src/avif/native/av1/util/floor_log2.d.ts +20 -0
  244. package/src/avif/native/av1/util/floor_log2.d.ts.map +1 -0
  245. package/src/avif/native/av1/util/floor_log2.js +20 -0
  246. package/src/avif/native/av1/util/round2.d.ts +22 -0
  247. package/src/avif/native/av1/util/round2.d.ts.map +1 -0
  248. package/src/avif/native/av1/util/round2.js +27 -0
  249. package/src/avif/native/av1/util/round2_signed.d.ts +14 -0
  250. package/src/avif/native/av1/util/round2_signed.d.ts.map +1 -0
  251. package/src/avif/native/av1/util/round2_signed.js +17 -0
  252. package/src/avif/native/av1/util/tile_log2.d.ts +16 -0
  253. package/src/avif/native/av1/util/tile_log2.d.ts.map +1 -0
  254. package/src/avif/native/av1/util/tile_log2.js +23 -0
  255. package/src/avif/native/bitstream/BitReader.d.ts +174 -0
  256. package/src/avif/native/bitstream/BitReader.d.ts.map +1 -0
  257. package/src/avif/native/bitstream/BitReader.js +391 -0
  258. package/src/avif/native/bitstream/BitWriter.d.ts +122 -0
  259. package/src/avif/native/bitstream/BitWriter.d.ts.map +1 -0
  260. package/src/avif/native/bitstream/BitWriter.js +351 -0
  261. package/src/avif/native/color/ColourTransform.d.ts +62 -0
  262. package/src/avif/native/color/ColourTransform.d.ts.map +1 -0
  263. package/src/avif/native/color/ColourTransform.js +189 -0
  264. package/src/avif/native/color/YuvImage.d.ts +51 -0
  265. package/src/avif/native/color/YuvImage.d.ts.map +1 -0
  266. package/src/avif/native/color/YuvImage.js +66 -0
  267. package/src/avif/native/color/clamp_sample.d.ts +18 -0
  268. package/src/avif/native/color/clamp_sample.d.ts.map +1 -0
  269. package/src/avif/native/color/clamp_sample.js +25 -0
  270. package/src/avif/native/color/linear_to_transfer.d.ts +24 -0
  271. package/src/avif/native/color/linear_to_transfer.d.ts.map +1 -0
  272. package/src/avif/native/color/linear_to_transfer.js +126 -0
  273. package/src/avif/native/color/primaries.d.ts +20 -0
  274. package/src/avif/native/color/primaries.d.ts.map +1 -0
  275. package/src/avif/native/color/primaries.js +94 -0
  276. package/src/avif/native/color/rgb_row_to_ycbcr.d.ts +20 -0
  277. package/src/avif/native/color/rgb_row_to_ycbcr.d.ts.map +1 -0
  278. package/src/avif/native/color/rgb_row_to_ycbcr.js +78 -0
  279. package/src/avif/native/color/transfer_to_linear.d.ts +49 -0
  280. package/src/avif/native/color/transfer_to_linear.d.ts.map +1 -0
  281. package/src/avif/native/color/transfer_to_linear.js +171 -0
  282. package/src/avif/native/color/upsample_chroma_row.d.ts +35 -0
  283. package/src/avif/native/color/upsample_chroma_row.d.ts.map +1 -0
  284. package/src/avif/native/color/upsample_chroma_row.js +89 -0
  285. package/src/avif/native/color/ycbcr_row_to_rgb.d.ts +23 -0
  286. package/src/avif/native/color/ycbcr_row_to_rgb.d.ts.map +1 -0
  287. package/src/avif/native/color/ycbcr_row_to_rgb.js +78 -0
  288. package/src/avif/native/heif/AvifFile.d.ts +112 -0
  289. package/src/avif/native/heif/AvifFile.d.ts.map +1 -0
  290. package/src/avif/native/heif/AvifFile.js +142 -0
  291. package/src/avif/native/heif/ItemProperty.d.ts +244 -0
  292. package/src/avif/native/heif/ItemProperty.d.ts.map +1 -0
  293. package/src/avif/native/heif/ItemProperty.js +321 -0
  294. package/src/avif/native/heif/find_item_property.d.ts +17 -0
  295. package/src/avif/native/heif/find_item_property.d.ts.map +1 -0
  296. package/src/avif/native/heif/find_item_property.js +28 -0
  297. package/src/avif/native/heif/find_item_references.d.ts +16 -0
  298. package/src/avif/native/heif/find_item_references.d.ts.map +1 -0
  299. package/src/avif/native/heif/find_item_references.js +29 -0
  300. package/src/avif/native/heif/find_items_referencing.d.ts +17 -0
  301. package/src/avif/native/heif/find_items_referencing.d.ts.map +1 -0
  302. package/src/avif/native/heif/find_items_referencing.js +36 -0
  303. package/src/avif/native/heif/parse_avif_file.d.ts +15 -0
  304. package/src/avif/native/heif/parse_avif_file.d.ts.map +1 -0
  305. package/src/avif/native/heif/parse_avif_file.js +383 -0
  306. package/src/avif/native/heif/parse_image_grid.d.ts +18 -0
  307. package/src/avif/native/heif/parse_image_grid.d.ts.map +1 -0
  308. package/src/avif/native/heif/parse_image_grid.js +48 -0
  309. package/src/avif/native/heif/parse_item_property.d.ts +18 -0
  310. package/src/avif/native/heif/parse_item_property.d.ts.map +1 -0
  311. package/src/avif/native/heif/parse_item_property.js +243 -0
  312. package/src/avif/native/heif/read_item_data.d.ts +22 -0
  313. package/src/avif/native/heif/read_item_data.d.ts.map +1 -0
  314. package/src/avif/native/heif/read_item_data.js +97 -0
  315. package/src/avif/native/heif/write_avif_file.d.ts +50 -0
  316. package/src/avif/native/heif/write_avif_file.d.ts.map +1 -0
  317. package/src/avif/native/heif/write_avif_file.js +348 -0
  318. package/src/avif/native/heif/write_item_property.d.ts +16 -0
  319. package/src/avif/native/heif/write_item_property.d.ts.map +1 -0
  320. package/src/avif/native/heif/write_item_property.js +182 -0
  321. package/src/avif/native/index.d.ts +14 -0
  322. package/src/avif/native/index.d.ts.map +1 -0
  323. package/src/avif/native/index.js +56 -0
  324. package/src/avif/native/isobmff/BoxHeader.d.ts +50 -0
  325. package/src/avif/native/isobmff/BoxHeader.d.ts.map +1 -0
  326. package/src/avif/native/isobmff/BoxHeader.js +57 -0
  327. package/src/avif/native/isobmff/BoxWriter.d.ts +118 -0
  328. package/src/avif/native/isobmff/BoxWriter.d.ts.map +1 -0
  329. package/src/avif/native/isobmff/BoxWriter.js +264 -0
  330. package/src/avif/native/isobmff/ByteCursor.d.ts +125 -0
  331. package/src/avif/native/isobmff/ByteCursor.d.ts.map +1 -0
  332. package/src/avif/native/isobmff/ByteCursor.js +298 -0
  333. package/src/avif/native/isobmff/for_each_box.d.ts +23 -0
  334. package/src/avif/native/isobmff/for_each_box.d.ts.map +1 -0
  335. package/src/avif/native/isobmff/for_each_box.js +39 -0
  336. package/src/avif/native/isobmff/read_box_header.d.ts +22 -0
  337. package/src/avif/native/isobmff/read_box_header.d.ts.map +1 -0
  338. package/src/avif/native/isobmff/read_box_header.js +59 -0
  339. package/src/avif/native/isobmff/read_full_box_header.d.ts +26 -0
  340. package/src/avif/native/isobmff/read_full_box_header.d.ts.map +1 -0
  341. package/src/avif/native/isobmff/read_full_box_header.js +33 -0
  342. package/src/avif/threaded_image_encoder.d.ts +7 -2
  343. package/src/avif/threaded_image_encoder.d.ts.map +1 -1
  344. package/src/avif/threaded_image_encoder.js +107 -21
  345. package/src/core/binary/BinaryBuffer.d.ts +40 -0
  346. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  347. package/src/core/binary/BinaryBuffer.js +100 -0
  348. package/src/core/binary/hash/crc32.d.ts +16 -0
  349. package/src/core/binary/hash/crc32.d.ts.map +1 -0
  350. package/src/core/binary/hash/crc32.js +96 -0
  351. package/src/core/binary/utf8/utf8_decode.d.ts +21 -0
  352. package/src/core/binary/utf8/utf8_decode.d.ts.map +1 -0
  353. package/src/core/binary/utf8/utf8_decode.js +43 -0
  354. package/src/core/binary/utf8/utf8_encode_into.d.ts +20 -0
  355. package/src/core/binary/utf8/utf8_encode_into.d.ts.map +1 -0
  356. package/src/core/binary/utf8/utf8_encode_into.js +48 -0
  357. package/src/core/binary/utf8/utf8_encoded_length.d.ts +14 -0
  358. package/src/core/binary/utf8/utf8_encoded_length.d.ts.map +1 -0
  359. package/src/core/binary/utf8/utf8_encoded_length.js +36 -0
  360. package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +417 -0
  361. package/src/core/color/COLOR_REVIEW_2026_08_28.md +779 -0
  362. package/src/core/color/Color.d.ts +128 -20
  363. package/src/core/color/Color.d.ts.map +1 -1
  364. package/src/core/color/Color.js +959 -866
  365. package/src/core/color/PQ/PQ_constants.d.ts +10 -0
  366. package/src/core/color/PQ/PQ_constants.d.ts.map +1 -1
  367. package/src/core/color/PQ/PQ_constants.js +10 -0
  368. package/src/core/color/PQ/linear_to_PQ.d.ts.map +1 -1
  369. package/src/core/color/PQ/linear_to_PQ.js +6 -0
  370. package/src/core/color/REC709_PRIMARIES.d.ts +50 -0
  371. package/src/core/color/REC709_PRIMARIES.d.ts.map +1 -0
  372. package/src/core/color/REC709_PRIMARIES.js +53 -0
  373. package/src/core/color/construct/color_from_hex.d.ts +21 -0
  374. package/src/core/color/construct/color_from_hex.d.ts.map +1 -0
  375. package/src/core/color/construct/color_from_hex.js +33 -0
  376. package/src/core/color/construct/color_from_temperature.d.ts +22 -0
  377. package/src/core/color/construct/color_from_temperature.d.ts.map +1 -0
  378. package/src/core/color/construct/color_from_temperature.js +33 -0
  379. package/src/core/color/construct/color_from_uint24.d.ts +19 -0
  380. package/src/core/color/construct/color_from_uint24.d.ts.map +1 -0
  381. package/src/core/color/construct/color_from_uint24.js +26 -0
  382. package/src/core/color/construct/color_from_uint32.d.ts +20 -0
  383. package/src/core/color/construct/color_from_uint32.d.ts.map +1 -0
  384. package/src/core/color/construct/color_from_uint32.js +39 -0
  385. package/src/core/color/construct/color_gray.d.ts +17 -0
  386. package/src/core/color/construct/color_gray.d.ts.map +1 -0
  387. package/src/core/color/construct/color_gray.js +22 -0
  388. package/src/core/color/hex/hex2rgb.d.ts +1 -11
  389. package/src/core/color/hex/hex2rgb.d.ts.map +1 -1
  390. package/src/core/color/hex/hex2rgb.js +7 -24
  391. package/src/core/color/hex/hex_to_rgb.d.ts +18 -0
  392. package/src/core/color/hex/hex_to_rgb.d.ts.map +1 -0
  393. package/src/core/color/hex/hex_to_rgb.js +62 -0
  394. package/src/core/color/hex/rgb2hex.d.ts +1 -8
  395. package/src/core/color/hex/rgb2hex.d.ts.map +1 -1
  396. package/src/core/color/hex/rgb2hex.js +7 -13
  397. package/src/core/color/hex/rgb_to_hex.d.ts +9 -0
  398. package/src/core/color/hex/rgb_to_hex.d.ts.map +1 -0
  399. package/src/core/color/hex/rgb_to_hex.js +13 -0
  400. package/src/core/color/hex/rgba_to_hex.d.ts +19 -0
  401. package/src/core/color/hex/rgba_to_hex.d.ts.map +1 -0
  402. package/src/core/color/hex/rgba_to_hex.js +23 -0
  403. package/src/core/color/hsv/hsv2rgb.d.ts +1 -12
  404. package/src/core/color/hsv/hsv2rgb.d.ts.map +1 -1
  405. package/src/core/color/hsv/hsv2rgb.js +8 -21
  406. package/src/core/color/hsv/hsv2rgb_float.d.ts +1 -12
  407. package/src/core/color/hsv/hsv2rgb_float.d.ts.map +1 -1
  408. package/src/core/color/hsv/hsv2rgb_float.js +8 -56
  409. package/src/core/color/hsv/hsv_to_rgb.d.ts +13 -0
  410. package/src/core/color/hsv/hsv_to_rgb.d.ts.map +1 -0
  411. package/src/core/color/hsv/hsv_to_rgb.js +39 -0
  412. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts +13 -0
  413. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -0
  414. package/src/core/color/hsv/hsv_to_rgb_uint8.js +21 -0
  415. package/src/core/color/hsv/hue_to_rgb_sextant.d.ts +24 -0
  416. package/src/core/color/hsv/hue_to_rgb_sextant.d.ts.map +1 -0
  417. package/src/core/color/hsv/hue_to_rgb_sextant.js +67 -0
  418. package/src/core/color/hsv/rgb2hsv.d.ts +1 -12
  419. package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
  420. package/src/core/color/hsv/rgb2hsv.js +7 -42
  421. package/src/core/color/hsv/rgb_to_hsv.d.ts +13 -0
  422. package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -0
  423. package/src/core/color/hsv/rgb_to_hsv.js +42 -0
  424. package/src/core/color/hunt/hpe_to_xyz.d.ts +2 -0
  425. package/src/core/color/hunt/hpe_to_xyz.d.ts.map +1 -0
  426. package/src/core/color/hunt/hpe_to_xyz.js +4 -0
  427. package/src/core/color/hunt/xyz_to_hpe.d.ts +1 -6
  428. package/src/core/color/hunt/xyz_to_hpe.d.ts.map +1 -1
  429. package/src/core/color/hunt/xyz_to_hpe.js +12 -15
  430. package/src/core/color/illuminant/D65_spd_tabulated.d.ts.map +1 -1
  431. package/src/core/color/illuminant/D65_spd_tabulated.js +107 -104
  432. package/src/core/color/int2rgb.d.ts +1 -10
  433. package/src/core/color/int2rgb.d.ts.map +1 -1
  434. package/src/core/color/int2rgb.js +7 -12
  435. package/src/core/color/int_to_rgb.d.ts +21 -0
  436. package/src/core/color/int_to_rgb.d.ts.map +1 -0
  437. package/src/core/color/int_to_rgb.js +33 -0
  438. package/src/core/color/kelvin/kelvin_to_rgb.d.ts.map +1 -1
  439. package/src/core/color/kelvin/kelvin_to_rgb.js +22 -2
  440. package/src/core/color/kelvin/rgb_to_kelvin.d.ts +22 -2
  441. package/src/core/color/kelvin/rgb_to_kelvin.d.ts.map +1 -1
  442. package/src/core/color/kelvin/rgb_to_kelvin.js +22 -2
  443. package/src/core/color/lab/lab_to_xyz.d.ts +20 -0
  444. package/src/core/color/lab/lab_to_xyz.d.ts.map +1 -0
  445. package/src/core/color/lab/lab_to_xyz.js +69 -0
  446. package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts +34 -0
  447. package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts.map +1 -0
  448. package/src/core/color/oklab/gamut_clip_adaptive_l0.js +46 -0
  449. package/src/core/color/oklab/gamut_clip_at_l0.d.ts +33 -0
  450. package/src/core/color/oklab/gamut_clip_at_l0.d.ts.map +1 -0
  451. package/src/core/color/oklab/gamut_clip_at_l0.js +84 -0
  452. package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts +24 -0
  453. package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts.map +1 -0
  454. package/src/core/color/oklab/gamut_clip_preserve_chroma.js +37 -0
  455. package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts +23 -0
  456. package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts.map +1 -0
  457. package/src/core/color/oklab/gamut_clip_project_to_lcusp.js +46 -0
  458. package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts +19 -0
  459. package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts.map +1 -0
  460. package/src/core/color/oklab/linear_srgb_to_okhsl.js +93 -0
  461. package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts +12 -4
  462. package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts.map +1 -1
  463. package/src/core/color/oklab/linear_srgb_to_okhsv.js +108 -84
  464. package/src/core/color/oklab/linear_srgb_to_oklab.d.ts +13 -4
  465. package/src/core/color/oklab/linear_srgb_to_oklab.d.ts.map +1 -1
  466. package/src/core/color/oklab/linear_srgb_to_oklab.js +28 -19
  467. package/src/core/color/oklab/okhsl_chroma_bounds.d.ts +51 -0
  468. package/src/core/color/oklab/okhsl_chroma_bounds.d.ts.map +1 -0
  469. package/src/core/color/oklab/okhsl_chroma_bounds.js +128 -0
  470. package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts +19 -0
  471. package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts.map +1 -0
  472. package/src/core/color/oklab/okhsl_to_linear_srgb.js +85 -0
  473. package/src/core/color/oklab/oklab_to_oklch.d.ts +24 -0
  474. package/src/core/color/oklab/oklab_to_oklch.d.ts.map +1 -0
  475. package/src/core/color/oklab/oklab_to_oklch.js +35 -0
  476. package/src/core/color/oklab/oklch_to_oklab.d.ts +18 -0
  477. package/src/core/color/oklab/oklch_to_oklab.d.ts.map +1 -0
  478. package/src/core/color/oklab/oklch_to_oklab.js +26 -0
  479. package/src/core/color/oklab/toe.d.ts +12 -0
  480. package/src/core/color/oklab/toe.d.ts.map +1 -1
  481. package/src/core/color/oklab/toe.js +34 -22
  482. package/src/core/color/operations/color_add.d.ts +21 -0
  483. package/src/core/color/operations/color_add.d.ts.map +1 -0
  484. package/src/core/color/operations/color_add.js +23 -0
  485. package/src/core/color/operations/color_add_scaled.d.ts +20 -0
  486. package/src/core/color/operations/color_add_scaled.d.ts.map +1 -0
  487. package/src/core/color/operations/color_add_scaled.js +30 -0
  488. package/src/core/color/operations/color_clamp.d.ts +22 -0
  489. package/src/core/color/operations/color_clamp.d.ts.map +1 -0
  490. package/src/core/color/operations/color_clamp.js +25 -0
  491. package/src/core/color/operations/color_darken.d.ts +2 -1
  492. package/src/core/color/operations/color_darken.d.ts.map +1 -1
  493. package/src/core/color/operations/color_darken.js +25 -24
  494. package/src/core/color/operations/color_desaturate.d.ts +2 -1
  495. package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
  496. package/src/core/color/operations/color_desaturate.js +25 -24
  497. package/src/core/color/operations/color_get_hsl.d.ts +18 -0
  498. package/src/core/color/operations/color_get_hsl.d.ts.map +1 -0
  499. package/src/core/color/operations/color_get_hsl.js +60 -0
  500. package/src/core/color/operations/color_is_in_gamut.d.ts +20 -0
  501. package/src/core/color/operations/color_is_in_gamut.d.ts.map +1 -0
  502. package/src/core/color/operations/color_is_in_gamut.js +30 -0
  503. package/src/core/color/operations/color_lerp.d.ts +12 -3
  504. package/src/core/color/operations/color_lerp.d.ts.map +1 -1
  505. package/src/core/color/operations/color_lerp.js +55 -46
  506. package/src/core/color/operations/color_lighten.d.ts +9 -5
  507. package/src/core/color/operations/color_lighten.d.ts.map +1 -1
  508. package/src/core/color/operations/color_lighten.js +29 -24
  509. package/src/core/color/operations/color_mix_okhsv_channel.d.ts +24 -0
  510. package/src/core/color/operations/color_mix_okhsv_channel.d.ts.map +1 -0
  511. package/src/core/color/operations/color_mix_okhsv_channel.js +48 -0
  512. package/src/core/color/operations/color_multiply_rgb.d.ts +21 -0
  513. package/src/core/color/operations/color_multiply_rgb.d.ts.map +1 -0
  514. package/src/core/color/operations/color_multiply_rgb.js +26 -0
  515. package/src/core/color/operations/color_saturate.d.ts +9 -5
  516. package/src/core/color/operations/color_saturate.d.ts.map +1 -1
  517. package/src/core/color/operations/color_saturate.js +29 -24
  518. package/src/core/color/operations/color_scale_okhsv_channel.d.ts +1 -1
  519. package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -1
  520. package/src/core/color/operations/color_scale_okhsv_channel.js +58 -45
  521. package/src/core/color/operations/color_srgb_apply.d.ts +28 -0
  522. package/src/core/color/operations/color_srgb_apply.d.ts.map +1 -0
  523. package/src/core/color/operations/color_srgb_apply.js +40 -0
  524. package/src/core/color/operations/color_sub.d.ts +16 -0
  525. package/src/core/color/operations/color_sub.d.ts.map +1 -0
  526. package/src/core/color/operations/color_sub.js +18 -0
  527. package/src/core/color/parse_color.d.ts +10 -1
  528. package/src/core/color/parse_color.d.ts.map +1 -1
  529. package/src/core/color/parse_color.js +100 -84
  530. package/src/core/color/parse_color_normalized.d.ts +24 -0
  531. package/src/core/color/parse_color_normalized.d.ts.map +1 -0
  532. package/src/core/color/parse_color_normalized.js +38 -0
  533. package/src/core/color/rgb2uint24.d.ts +1 -8
  534. package/src/core/color/rgb2uint24.d.ts.map +1 -1
  535. package/src/core/color/rgb2uint24.js +7 -20
  536. package/src/core/color/rgb2uint32.d.ts +1 -9
  537. package/src/core/color/rgb2uint32.d.ts.map +1 -1
  538. package/src/core/color/rgb2uint32.js +7 -18
  539. package/src/core/color/rgb_to_luminance.d.ts +14 -5
  540. package/src/core/color/rgb_to_luminance.d.ts.map +1 -1
  541. package/src/core/color/rgb_to_luminance.js +24 -13
  542. package/src/core/color/rgb_to_uint24.d.ts +9 -0
  543. package/src/core/color/rgb_to_uint24.d.ts.map +1 -0
  544. package/src/core/color/rgb_to_uint24.js +20 -0
  545. package/src/core/color/rgb_to_uint32.d.ts +10 -0
  546. package/src/core/color/rgb_to_uint32.d.ts.map +1 -0
  547. package/src/core/color/rgb_to_uint32.js +21 -0
  548. package/src/core/color/sRGB/linear_to_sRGB.d.ts +7 -0
  549. package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
  550. package/src/core/color/sRGB/linear_to_sRGB.js +39 -32
  551. package/src/core/color/xyz/hpe_to_xyz.d.ts +24 -0
  552. package/src/core/color/xyz/hpe_to_xyz.d.ts.map +1 -0
  553. package/src/core/color/xyz/hpe_to_xyz.js +39 -0
  554. package/src/core/color/xyz/rgb_to_xyz.d.ts +17 -2
  555. package/src/core/color/xyz/rgb_to_xyz.d.ts.map +1 -1
  556. package/src/core/color/xyz/rgb_to_xyz.js +44 -18
  557. package/src/core/color/xyz/xyz_cmf_tabulated.d.ts.map +1 -1
  558. package/src/core/color/xyz/xyz_cmf_tabulated.js +217 -211
  559. package/src/core/color/xyz/xyz_cmf_wyman.d.ts +4 -0
  560. package/src/core/color/xyz/xyz_cmf_wyman.d.ts.map +1 -1
  561. package/src/core/color/xyz/xyz_cmf_wyman.js +74 -65
  562. package/src/core/color/xyz/xyz_to_hpe.d.ts +18 -0
  563. package/src/core/color/xyz/xyz_to_hpe.d.ts.map +1 -0
  564. package/src/core/color/xyz/xyz_to_hpe.js +33 -0
  565. package/src/core/color/xyz/xyz_to_rgb.d.ts +17 -2
  566. package/src/core/color/xyz/xyz_to_rgb.d.ts.map +1 -1
  567. package/src/core/color/xyz/xyz_to_rgb.js +39 -16
  568. package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts +7 -2
  569. package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts.map +1 -1
  570. package/src/core/color/ycxcz/xyz_to_ycxcz.js +33 -28
  571. package/src/core/events/signal/Signal.js +820 -820
  572. package/src/core/math/clamp_index.d.ts +18 -0
  573. package/src/core/math/clamp_index.d.ts.map +1 -0
  574. package/src/core/math/clamp_index.js +23 -0
  575. package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +803 -0
  576. package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts +5 -3
  577. package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts.map +1 -1
  578. package/src/engine/asset/loaders/image/jpeg/JpegFrame.js +5 -3
  579. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts +2 -1
  580. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts.map +1 -1
  581. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.js +2 -1
  582. package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts +17 -0
  583. package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts.map +1 -1
  584. package/src/engine/asset/loaders/image/jpeg/JpegImage.js +197 -157
  585. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts +0 -1
  586. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts.map +1 -1
  587. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.js +0 -1
  588. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts +28 -0
  589. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts.map +1 -0
  590. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.js +31 -0
  591. package/src/engine/asset/loaders/image/png/PNG.d.ts +3 -18
  592. package/src/engine/asset/loaders/image/png/PNG.d.ts.map +1 -1
  593. package/src/engine/asset/loaders/image/png/PNG.js +3 -139
  594. package/src/engine/asset/loaders/image/png/PNGReader.d.ts +16 -16
  595. package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
  596. package/src/engine/asset/loaders/image/png/PNGReader.js +143 -160
  597. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_iTXt.js +3 -3
  598. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_zTXt.js +3 -3
  599. package/src/engine/asset/loaders/image/png/crc32.d.ts +1 -15
  600. package/src/engine/asset/loaders/image/png/crc32.d.ts.map +1 -1
  601. package/src/engine/asset/loaders/image/png/crc32.js +5 -89
  602. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts +12 -10
  603. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts.map +1 -1
  604. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.js +20 -45
  605. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts +2 -1
  606. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts.map +1 -1
  607. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.js +2 -0
  608. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts +2 -1
  609. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts.map +1 -1
  610. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.js +2 -0
  611. package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts +22 -0
  612. package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts.map +1 -0
  613. package/src/engine/asset/loaders/image/png/filter/png_unfilter.js +68 -0
  614. package/src/engine/asset/loaders/image/png/png_inflate.d.ts +20 -0
  615. package/src/engine/asset/loaders/image/png/png_inflate.d.ts.map +1 -0
  616. package/src/engine/asset/loaders/image/png/png_inflate.js +85 -0
  617. package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts +22 -0
  618. package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts.map +1 -0
  619. package/src/engine/asset/loaders/image/png/png_unpack_samples.js +38 -0
  620. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  621. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +135 -132
  622. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +16 -3
  623. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  624. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1157 -1149
  625. package/src/engine/graphics/render/frame_graph/FrameGraph.js +900 -900
  626. package/src/engine/physics/ecs/PhysicsSystem.d.ts +72 -81
  627. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  628. package/src/engine/physics/ecs/PhysicsSystem.js +86 -77
  629. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  630. package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +451 -0
  631. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +625 -0
  632. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  633. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts +14 -3
  634. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts.map +1 -1
  635. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.js +50 -51
  636. package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
  637. package/src/shade/renderer/scene/serialization/deserialize_scene.js +531 -521
  638. package/src/shade/renderer/scene/serialization/write_image_source.d.ts.map +1 -1
  639. package/src/shade/renderer/scene/serialization/write_image_source.js +6 -4
  640. package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.d.ts.map +1 -1
  641. package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.js +34 -32
  642. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +31 -0
  643. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts.map +1 -1
  644. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -31
  645. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts +10 -0
  646. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts.map +1 -1
  647. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.js +32 -22
  648. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.d.ts.map +1 -1
  649. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js +22 -21
  650. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +6 -0
  651. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
  652. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +110 -104
  653. package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.d.ts.map +1 -1
  654. package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.js +23 -21
  655. package/src/view/elements/ColorPickerView.js +296 -296
  656. package/src/avif/codec/dec/Readme.md +0 -14
  657. package/src/avif/codec/dec/avif_dec.cpp +0 -234
  658. package/src/avif/codec/dec/avif_dec.d.ts +0 -3
  659. package/src/avif/codec/dec/avif_dec.d.ts.map +0 -1
  660. package/src/avif/codec/dec/avif_dec.js +0 -16
  661. package/src/avif/codec/dec/avif_dec.wasm +0 -0
  662. package/src/avif/codec/enc/README.md +0 -37
  663. package/src/avif/codec/enc/avif_enc.cpp +0 -216
  664. package/src/avif/codec/enc/avif_enc.d.ts +0 -3
  665. package/src/avif/codec/enc/avif_enc.d.ts.map +0 -1
  666. package/src/avif/codec/enc/avif_enc.js +0 -6144
  667. package/src/avif/codec/enc/avif_enc.wasm +0 -0
  668. package/src/avif/codec/enc/avif_enc_mt.d.ts +0 -3
  669. package/src/avif/codec/enc/avif_enc_mt.d.ts.map +0 -1
  670. package/src/avif/codec/enc/avif_enc_mt.js +0 -6811
  671. package/src/avif/codec/enc/avif_enc_mt.wasm +0 -0
  672. package/src/avif/codec/enc/avif_enc_mt.worker.d.mts +0 -2
  673. package/src/avif/codec/enc/avif_enc_mt.worker.d.mts.map +0 -1
  674. package/src/avif/codec/enc/avif_enc_mt.worker.d.ts +0 -11
  675. package/src/avif/codec/enc/avif_enc_mt.worker.d.ts.map +0 -1
  676. package/src/avif/codec/enc/avif_enc_mt.worker.js +0 -171
  677. package/src/avif/codec/enc/avif_enc_mt.worker.mjs +0 -1
  678. package/src/avif/decode.d.ts +0 -3
  679. package/src/avif/decode.d.ts.map +0 -1
  680. package/src/avif/decode.js +0 -42
  681. package/src/avif/encode.d.ts +0 -3
  682. package/src/avif/encode.d.ts.map +0 -1
  683. package/src/avif/encode.js +0 -75
  684. package/src/avif/meta.d.ts +0 -24
  685. package/src/avif/meta.d.ts.map +0 -1
  686. package/src/avif/meta.js +0 -23
  687. package/src/avif/tsconfig.tsbuildinfo +0 -1
  688. package/src/avif/utils.d.ts +0 -17
  689. package/src/avif/utils.d.ts.map +0 -1
  690. package/src/avif/utils.js +0 -31
  691. package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts +0 -23
  692. package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts.map +0 -1
  693. package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.js +0 -214
  694. package/src/engine/asset/loaders/image/png/inflate.d.ts +0 -7
  695. package/src/engine/asset/loaders/image/png/inflate.d.ts.map +0 -1
  696. package/src/engine/asset/loaders/image/png/inflate.js +0 -20
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The scan order a transform block's coefficients are coded in.
3
+ *
4
+ * Transforms larger than 32 in either direction reuse a smaller scan: only the top-left 32x32
5
+ * carries coefficients, so there is nothing for a larger scan to visit.
6
+ *
7
+ * @param {number} tx_size
8
+ * @param {number} plane_tx_type
9
+ * @returns {Uint16Array}
10
+ * @see AV1 spec 5.11.41 "Get scan function"
11
+ *
12
+ * @author Alex Goldring
13
+ * @copyright Company Named Limited (c) 2026
14
+ */
15
+ export function get_scan(tx_size: number, plane_tx_type: number): Uint16Array;
16
+ //# sourceMappingURL=get_scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_scan.d.ts","sourceRoot":"","sources":["../../../../../../src/avif/native/av1/decode/get_scan.js"],"names":[],"mappings":"AA6FA;;;;;;;;;;;;;GAaG;AACH,kCARW,MAAM,iBACN,MAAM,GACJ,WAAW,CAoCvB"}
@@ -0,0 +1,138 @@
1
+ import {
2
+ H_ADST,
3
+ H_DCT,
4
+ H_FLIPADST,
5
+ IDTX,
6
+ TX_16X4,
7
+ TX_16X16,
8
+ TX_16X32,
9
+ TX_16X64,
10
+ TX_16X8,
11
+ TX_32X16,
12
+ TX_32X8,
13
+ TX_4X16,
14
+ TX_4X4,
15
+ TX_4X8,
16
+ TX_64X16,
17
+ TX_64X64,
18
+ TX_8X16,
19
+ TX_8X32,
20
+ TX_8X4,
21
+ TX_8X8,
22
+ V_ADST,
23
+ V_DCT,
24
+ V_FLIPADST
25
+ } from "../tables/av1_symbols.js";
26
+ import { TX_SIZE_SQR_UP } from "../tables/block_tables.js";
27
+ import * as scans from "../tables/scan_tables.js";
28
+
29
+ /**
30
+ * Default (diagonal) scans, indexed by transform size. Sizes with no default scan of their own
31
+ * borrow one, per `get_default_scan`.
32
+ * @type {Uint16Array[]}
33
+ */
34
+ const DEFAULT_SCAN = build_scan_table("DEFAULT");
35
+
36
+ /**
37
+ * Row-major scans, used when the transform is vertical-only.
38
+ * @type {Uint16Array[]}
39
+ */
40
+ const MROW_SCAN = build_scan_table("MROW");
41
+
42
+ /**
43
+ * Column-major scans, used when the transform is horizontal-only.
44
+ * @type {Uint16Array[]}
45
+ */
46
+ const MCOL_SCAN = build_scan_table("MCOL");
47
+
48
+ /**
49
+ * @param {string} prefix
50
+ * @returns {Uint16Array[]}
51
+ */
52
+ function build_scan_table(prefix) {
53
+ const table = new Array(19).fill(null);
54
+
55
+ /**
56
+ * @param {number} tx_size
57
+ * @param {string} name
58
+ */
59
+ function set(tx_size, name) {
60
+ table[tx_size] = scans[`${prefix}_SCAN_${name}`] ?? null;
61
+ }
62
+
63
+ set(TX_4X4, "4X4");
64
+ set(TX_4X8, "4X8");
65
+ set(TX_8X4, "8X4");
66
+ set(TX_8X8, "8X8");
67
+ set(TX_8X16, "8X16");
68
+ set(TX_16X8, "16X8");
69
+ set(TX_16X16, "16X16");
70
+ set(TX_4X16, "4X16");
71
+ set(TX_16X4, "16X4");
72
+
73
+ if (prefix === "DEFAULT") {
74
+ set(TX_16X32, "16X32");
75
+ set(TX_32X16, "32X16");
76
+ set(TX_8X32, "8X32");
77
+ set(TX_32X8, "32X8");
78
+ }
79
+
80
+ return table;
81
+ }
82
+
83
+ /**
84
+ * `get_default_scan( txSz )`, including its fall-through to the 32x32 scan.
85
+ * @param {number} tx_size
86
+ * @returns {Uint16Array}
87
+ */
88
+ function get_default_scan(tx_size) {
89
+ const scan = DEFAULT_SCAN[tx_size];
90
+
91
+ return scan !== null && scan !== undefined ? scan : scans.DEFAULT_SCAN_32X32;
92
+ }
93
+
94
+ /**
95
+ * The scan order a transform block's coefficients are coded in.
96
+ *
97
+ * Transforms larger than 32 in either direction reuse a smaller scan: only the top-left 32x32
98
+ * carries coefficients, so there is nothing for a larger scan to visit.
99
+ *
100
+ * @param {number} tx_size
101
+ * @param {number} plane_tx_type
102
+ * @returns {Uint16Array}
103
+ * @see AV1 spec 5.11.41 "Get scan function"
104
+ *
105
+ * @author Alex Goldring
106
+ * @copyright Company Named Limited (c) 2026
107
+ */
108
+ export function get_scan(tx_size, plane_tx_type) {
109
+ if (tx_size === TX_16X64) {
110
+ return scans.DEFAULT_SCAN_16X32;
111
+ }
112
+
113
+ if (tx_size === TX_64X16) {
114
+ return scans.DEFAULT_SCAN_32X16;
115
+ }
116
+
117
+ if (TX_SIZE_SQR_UP[tx_size] === TX_64X64) {
118
+ return scans.DEFAULT_SCAN_32X32;
119
+ }
120
+
121
+ if (plane_tx_type === IDTX) {
122
+ return get_default_scan(tx_size);
123
+ }
124
+
125
+ if (plane_tx_type === V_DCT || plane_tx_type === V_ADST || plane_tx_type === V_FLIPADST) {
126
+ const scan = MROW_SCAN[tx_size];
127
+
128
+ return scan !== null && scan !== undefined ? scan : scans.MROW_SCAN_16X4;
129
+ }
130
+
131
+ if (plane_tx_type === H_DCT || plane_tx_type === H_ADST || plane_tx_type === H_FLIPADST) {
132
+ const scan = MCOL_SCAN[tx_size];
133
+
134
+ return scan !== null && scan !== undefined ? scan : scans.MCOL_SCAN_16X4;
135
+ }
136
+
137
+ return get_default_scan(tx_size);
138
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Read the loop restoration units a superblock covers.
3
+ *
4
+ * Restoration units are not superblock-aligned: their size is signalled independently, so a
5
+ * superblock may cover several units or part of one. The coefficients are coded as differences from
6
+ * the previous unit's, which is why the reference values live on the context and persist across
7
+ * superblocks within a tile.
8
+ *
9
+ * @param {Av1FrameContext} ctx
10
+ * @param {number} r superblock row in 4x4 units
11
+ * @param {number} c superblock column in 4x4 units
12
+ * @param {number} b_size the superblock size
13
+ * @see AV1 spec 5.11.57 "Read loop restoration syntax"
14
+ *
15
+ * @author Alex Goldring
16
+ * @copyright Company Named Limited (c) 2026
17
+ */
18
+ export function read_lr(ctx: Av1FrameContext, r: number, c: number, b_size: number): void;
19
+ /**
20
+ * Which restoration units a superblock is responsible for coding.
21
+ *
22
+ * Units are not superblock-aligned — their size is signalled independently of the superblock size —
23
+ * so this is where the two grids are reconciled, once, for the reader and the encoder's writer
24
+ * both. A superblock codes the units whose top left corner falls inside it.
25
+ *
26
+ * @param {Av1FrameContext} ctx
27
+ * @param {number} r superblock row in 4x4 units
28
+ * @param {number} c superblock column in 4x4 units
29
+ * @param {number} b_size the superblock size
30
+ * @param {number} plane
31
+ * @param {Int32Array} range filled with the first and last unit row, then column
32
+ * @see AV1 spec 5.11.57
33
+ */
34
+ export function loop_restoration_unit_range(ctx: Av1FrameContext, r: number, c: number, b_size: number, plane: number, range: Int32Array): void;
35
+ //# sourceMappingURL=read_lr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read_lr.d.ts","sourceRoot":"","sources":["../../../../../../src/avif/native/av1/decode/read_lr.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;;GAgBG;AACH,iDARW,MAAM,KACN,MAAM,UACN,MAAM,QA0BhB;AAKD;;;;;;;;;;;;;;GAcG;AACH,qEAPW,MAAM,KACN,MAAM,UACN,MAAM,SACN,MAAM,SACN,UAAU,QAgCpB"}
@@ -0,0 +1,277 @@
1
+ import { clamp } from "../../../../core/math/clamp.js";
2
+ import {
3
+ MI_SIZE,
4
+ RESTORE_NONE,
5
+ RESTORE_SGRPROJ,
6
+ RESTORE_WIENER,
7
+ SGRPROJ_PARAMS_BITS,
8
+ SGRPROJ_PRJ_BITS,
9
+ SGRPROJ_PRJ_SUBEXP_K,
10
+ SUPERRES_NUM
11
+ } from "../tables/av1_symbols.js";
12
+ import {
13
+ SGRPROJ_XQD_MAX,
14
+ SGRPROJ_XQD_MIN,
15
+ SGR_PARAMS,
16
+ WIENER_TAPS_K,
17
+ WIENER_TAPS_MAX,
18
+ WIENER_TAPS_MIN
19
+ } from "../tables/filter_tables.js";
20
+ import { NUM_4X4_BLOCKS_HIGH, NUM_4X4_BLOCKS_WIDE } from "../tables/block_tables.js";
21
+ import { count_units_in_frame } from "../filter/loop_restoration.js";
22
+ import { round2 } from "../util/round2.js";
23
+
24
+ /**
25
+ * Read the loop restoration units a superblock covers.
26
+ *
27
+ * Restoration units are not superblock-aligned: their size is signalled independently, so a
28
+ * superblock may cover several units or part of one. The coefficients are coded as differences from
29
+ * the previous unit's, which is why the reference values live on the context and persist across
30
+ * superblocks within a tile.
31
+ *
32
+ * @param {Av1FrameContext} ctx
33
+ * @param {number} r superblock row in 4x4 units
34
+ * @param {number} c superblock column in 4x4 units
35
+ * @param {number} b_size the superblock size
36
+ * @see AV1 spec 5.11.57 "Read loop restoration syntax"
37
+ *
38
+ * @author Alex Goldring
39
+ * @copyright Company Named Limited (c) 2026
40
+ */
41
+ export function read_lr(ctx, r, c, b_size) {
42
+ const frame = ctx.frame;
43
+
44
+ if (frame.allow_intrabc === 1) {
45
+ return;
46
+ }
47
+
48
+ for (let plane = 0; plane < ctx.num_planes; plane++) {
49
+ if (frame.frame_restoration_type[plane] === RESTORE_NONE) {
50
+ continue;
51
+ }
52
+
53
+ loop_restoration_unit_range(ctx, r, c, b_size, plane, UNIT_RANGE);
54
+
55
+ for (let unit_row = UNIT_RANGE[0]; unit_row < UNIT_RANGE[1]; unit_row++) {
56
+ for (let unit_col = UNIT_RANGE[2]; unit_col < UNIT_RANGE[3]; unit_col++) {
57
+ read_lr_unit(ctx, plane, unit_row, unit_col);
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ /** @type {Int32Array} first and last row, then first and last column */
64
+ const UNIT_RANGE = new Int32Array(4);
65
+
66
+ /**
67
+ * Which restoration units a superblock is responsible for coding.
68
+ *
69
+ * Units are not superblock-aligned — their size is signalled independently of the superblock size —
70
+ * so this is where the two grids are reconciled, once, for the reader and the encoder's writer
71
+ * both. A superblock codes the units whose top left corner falls inside it.
72
+ *
73
+ * @param {Av1FrameContext} ctx
74
+ * @param {number} r superblock row in 4x4 units
75
+ * @param {number} c superblock column in 4x4 units
76
+ * @param {number} b_size the superblock size
77
+ * @param {number} plane
78
+ * @param {Int32Array} range filled with the first and last unit row, then column
79
+ * @see AV1 spec 5.11.57
80
+ */
81
+ export function loop_restoration_unit_range(ctx, r, c, b_size, plane, range) {
82
+ const frame = ctx.frame;
83
+
84
+ const w = NUM_4X4_BLOCKS_WIDE[b_size];
85
+ const h = NUM_4X4_BLOCKS_HIGH[b_size];
86
+
87
+ const sub_x = plane === 0 ? 0 : ctx.subsampling_x;
88
+ const sub_y = plane === 0 ? 0 : ctx.subsampling_y;
89
+
90
+ const unit_size = frame.loop_restoration_size[plane];
91
+
92
+ const unit_rows = count_units_in_frame(unit_size, round2(frame.frame_height, sub_y));
93
+ const unit_cols = count_units_in_frame(unit_size, round2(frame.upscaled_width, sub_x));
94
+
95
+ let numerator;
96
+ let denominator;
97
+
98
+ if (frame.use_superres === 1) {
99
+ numerator = (MI_SIZE >> sub_x) * frame.superres_denom;
100
+ denominator = unit_size * SUPERRES_NUM;
101
+ } else {
102
+ numerator = MI_SIZE >> sub_x;
103
+ denominator = unit_size;
104
+ }
105
+
106
+ range[0] = Math.floor((r * (MI_SIZE >> sub_y) + unit_size - 1) / unit_size);
107
+ range[1] = Math.min(unit_rows, Math.floor(((r + h) * (MI_SIZE >> sub_y) + unit_size - 1) / unit_size));
108
+ range[2] = Math.floor((c * numerator + denominator - 1) / denominator);
109
+ range[3] = Math.min(unit_cols, Math.floor(((c + w) * numerator + denominator - 1) / denominator));
110
+ }
111
+
112
+ /**
113
+ * @param {Av1FrameContext} ctx
114
+ * @param {number} plane
115
+ * @param {number} unit_row
116
+ * @param {number} unit_col
117
+ * @see AV1 spec 5.11.58 "Read loop restoration unit syntax"
118
+ */
119
+ function read_lr_unit(ctx, plane, unit_row, unit_col) {
120
+ const reader = ctx.reader;
121
+ const cdf = ctx.cdf;
122
+
123
+ const frame_type = ctx.frame.frame_restoration_type[plane];
124
+
125
+ let restoration_type;
126
+
127
+ if (frame_type === RESTORE_WIENER) {
128
+ restoration_type = reader.read_symbol(cdf.use_wiener, 0, 2) === 1 ? RESTORE_WIENER : RESTORE_NONE;
129
+ } else if (frame_type === RESTORE_SGRPROJ) {
130
+ restoration_type = reader.read_symbol(cdf.use_sgrproj, 0, 2) === 1 ? RESTORE_SGRPROJ : RESTORE_NONE;
131
+ } else {
132
+ restoration_type = reader.read_symbol(cdf.restoration_type, 0, 3);
133
+ }
134
+
135
+ const index = ctx.lr_unit_index(plane, unit_row, unit_col);
136
+
137
+ ctx.lr_type[index] = restoration_type;
138
+
139
+ if (restoration_type === RESTORE_WIENER) {
140
+ for (let pass = 0; pass < 2; pass++) {
141
+ // chroma's outermost tap is always zero, which is what makes it a five tap filter
142
+ const first = plane !== 0 ? 1 : 0;
143
+
144
+ if (plane !== 0) {
145
+ ctx.lr_wiener[index * 6 + pass * 3] = 0;
146
+ }
147
+
148
+ for (let j = first; j < 3; j++) {
149
+ const minimum = WIENER_TAPS_MIN[j];
150
+ const maximum = WIENER_TAPS_MAX[j];
151
+ const k = WIENER_TAPS_K[j];
152
+
153
+ const reference = ctx.ref_lr_wiener[(plane * 2 + pass) * 3 + j];
154
+
155
+ const value = decode_signed_subexp_with_ref(ctx, minimum, maximum + 1, k, reference);
156
+
157
+ ctx.lr_wiener[index * 6 + pass * 3 + j] = value;
158
+ ctx.ref_lr_wiener[(plane * 2 + pass) * 3 + j] = value;
159
+ }
160
+ }
161
+
162
+ return;
163
+ }
164
+
165
+ if (restoration_type !== RESTORE_SGRPROJ) {
166
+ return;
167
+ }
168
+
169
+ const set = reader.read_literal(SGRPROJ_PARAMS_BITS);
170
+
171
+ ctx.lr_sgr_set[index] = set;
172
+
173
+ for (let i = 0; i < 2; i++) {
174
+ const radius = SGR_PARAMS[set * 4 + i * 2];
175
+
176
+ const minimum = SGRPROJ_XQD_MIN[i];
177
+ const maximum = SGRPROJ_XQD_MAX[i];
178
+
179
+ let value;
180
+
181
+ if (radius !== 0) {
182
+ value = decode_signed_subexp_with_ref(
183
+ ctx,
184
+ minimum,
185
+ maximum + 1,
186
+ SGRPROJ_PRJ_SUBEXP_K,
187
+ ctx.ref_sgr_xqd[plane * 2 + i]
188
+ );
189
+ } else {
190
+ // a zero radius means that pass contributes nothing, so its weight is not coded; the
191
+ // second one is derived so the three weights still sum to unity
192
+ value = i === 1
193
+ ? clamp((1 << SGRPROJ_PRJ_BITS) - ctx.ref_sgr_xqd[plane * 2], minimum, maximum)
194
+ : 0;
195
+ }
196
+
197
+ ctx.lr_sgr_xqd[index * 2 + i] = value;
198
+ ctx.ref_sgr_xqd[plane * 2 + i] = value;
199
+ }
200
+ }
201
+
202
+ /**
203
+ * @param {Av1FrameContext} ctx
204
+ * @param {number} low
205
+ * @param {number} high
206
+ * @param {number} k
207
+ * @param {number} reference
208
+ * @returns {number}
209
+ * @see AV1 spec 5.11.58, `decode_signed_subexp_with_ref_bool`
210
+ */
211
+ function decode_signed_subexp_with_ref(ctx, low, high, k, reference) {
212
+ return decode_unsigned_subexp_with_ref(ctx, high - low, k, reference - low) + low;
213
+ }
214
+
215
+ /**
216
+ * @param {Av1FrameContext} ctx
217
+ * @param {number} mx
218
+ * @param {number} k
219
+ * @param {number} r
220
+ * @returns {number}
221
+ */
222
+ function decode_unsigned_subexp_with_ref(ctx, mx, k, r) {
223
+ const v = decode_subexp(ctx, mx, k);
224
+
225
+ if ((r << 1) <= mx) {
226
+ return inverse_recenter(r, v);
227
+ }
228
+
229
+ return mx - 1 - inverse_recenter(mx - 1 - r, v);
230
+ }
231
+
232
+ /**
233
+ * @param {Av1FrameContext} ctx
234
+ * @param {number} num_symbols
235
+ * @param {number} k
236
+ * @returns {number}
237
+ */
238
+ function decode_subexp(ctx, num_symbols, k) {
239
+ const reader = ctx.reader;
240
+
241
+ let i = 0;
242
+ let mk = 0;
243
+
244
+ for (;;) {
245
+ const b2 = i !== 0 ? k + i - 1 : k;
246
+ const a = 1 << b2;
247
+
248
+ if (num_symbols <= mk + 3 * a) {
249
+ return reader.read_ns(num_symbols - mk) + mk;
250
+ }
251
+
252
+ if (reader.read_literal(1) === 1) {
253
+ i++;
254
+ mk += a;
255
+ } else {
256
+ return reader.read_literal(b2) + mk;
257
+ }
258
+ }
259
+ }
260
+
261
+ /**
262
+ * @param {number} r
263
+ * @param {number} v
264
+ * @returns {number}
265
+ * @see AV1 spec 5.9.28 "Inverse recenter function"
266
+ */
267
+ function inverse_recenter(r, v) {
268
+ if (v > 2 * r) {
269
+ return v;
270
+ }
271
+
272
+ if ((v & 1) !== 0) {
273
+ return r - ((v + 1) >> 1);
274
+ }
275
+
276
+ return r + (v >> 1);
277
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Read the transform type for a luma transform block and record it across the 4x4 positions it
3
+ * covers.
4
+ *
5
+ * A type is only coded when the transform size allows more than a plain DCT *and* the block is
6
+ * actually quantised — at quantizer index zero the residual is exact and the choice would be
7
+ * meaningless, so the format spends no bits on it.
8
+ *
9
+ * @param {Av1FrameContext} ctx
10
+ * @param {number} x4 luma 4x4 column
11
+ * @param {number} y4 luma 4x4 row
12
+ * @param {number} tx_size
13
+ * @see AV1 spec 5.11.47 "Transform type syntax"
14
+ *
15
+ * @author Alex Goldring
16
+ * @copyright Company Named Limited (c) 2026
17
+ */
18
+ export function read_transform_type(ctx: Av1FrameContext, x4: number, y4: number, tx_size: number): void;
19
+ //# sourceMappingURL=read_transform_type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read_transform_type.d.ts","sourceRoot":"","sources":["../../../../../../src/avif/native/av1/decode/read_transform_type.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;GAgBG;AACH,8DARW,MAAM,MACN,MAAM,WACN,MAAM,QAmDhB"}
@@ -0,0 +1,92 @@
1
+ import {
2
+ DCT_DCT,
3
+ SEG_LVL_ALT_Q,
4
+ SEG_LVL_MAX,
5
+ TX_SET_INTRA_1
6
+ } from "../tables/av1_symbols.js";
7
+ import { TX_HEIGHT, TX_SIZE_SQR, TX_WIDTH } from "../tables/block_tables.js";
8
+ import {
9
+ TX_TYPE_INTRA_INV_SET1,
10
+ TX_TYPE_INTRA_INV_SET2
11
+ } from "../tables/transform_tables.js";
12
+ import { FILTER_INTRA_MODE_TO_INTRA_DIR } from "../tables/prediction_tables.js";
13
+ import { clamp } from "../../../../core/math/clamp.js";
14
+ import { get_tx_set } from "./transform_type.js";
15
+
16
+ /**
17
+ * Read the transform type for a luma transform block and record it across the 4x4 positions it
18
+ * covers.
19
+ *
20
+ * A type is only coded when the transform size allows more than a plain DCT *and* the block is
21
+ * actually quantised — at quantizer index zero the residual is exact and the choice would be
22
+ * meaningless, so the format spends no bits on it.
23
+ *
24
+ * @param {Av1FrameContext} ctx
25
+ * @param {number} x4 luma 4x4 column
26
+ * @param {number} y4 luma 4x4 row
27
+ * @param {number} tx_size
28
+ * @see AV1 spec 5.11.47 "Transform type syntax"
29
+ *
30
+ * @author Alex Goldring
31
+ * @copyright Company Named Limited (c) 2026
32
+ */
33
+ export function read_transform_type(ctx, x4, y4, tx_size) {
34
+ const frame = ctx.frame;
35
+
36
+ const set = get_tx_set(tx_size, 0, frame.reduced_tx_set);
37
+
38
+ let tx_type = DCT_DCT;
39
+
40
+ const qindex = frame.segmentation_enabled === 1
41
+ ? segment_qindex(frame, ctx.segment_id)
42
+ : frame.base_q_idx;
43
+
44
+ if (set > 0 && qindex > 0) {
45
+ const intra_direction = ctx.use_filter_intra === 1
46
+ ? FILTER_INTRA_MODE_TO_INTRA_DIR[ctx.filter_intra_mode]
47
+ : ctx.y_mode;
48
+
49
+ const square = TX_SIZE_SQR[tx_size];
50
+
51
+ if (set === TX_SET_INTRA_1) {
52
+ const symbol = ctx.reader.read_symbol(
53
+ ctx.cdf.intra_tx_type_set1,
54
+ (square * 13 + intra_direction) * 8,
55
+ 7
56
+ );
57
+
58
+ tx_type = TX_TYPE_INTRA_INV_SET1[symbol];
59
+ } else {
60
+ const symbol = ctx.reader.read_symbol(
61
+ ctx.cdf.intra_tx_type_set2,
62
+ (square * 13 + intra_direction) * 6,
63
+ 5
64
+ );
65
+
66
+ tx_type = TX_TYPE_INTRA_INV_SET2[symbol];
67
+ }
68
+ }
69
+
70
+ const width4 = TX_WIDTH[tx_size] >> 2;
71
+ const height4 = TX_HEIGHT[tx_size] >> 2;
72
+
73
+ for (let i = 0; i < width4; i++) {
74
+ for (let j = 0; j < height4; j++) {
75
+ ctx.tx_types[(y4 + j) * ctx.mi_stride + x4 + i] = tx_type;
76
+ }
77
+ }
78
+ }
79
+
80
+ /**
81
+ * `get_qindex( 1, segmentId )`.
82
+ * @param {FrameHeader} frame
83
+ * @param {number} segment_id
84
+ * @returns {number}
85
+ */
86
+ function segment_qindex(frame, segment_id) {
87
+ if (frame.feature_enabled[segment_id * SEG_LVL_MAX + SEG_LVL_ALT_Q] !== 0) {
88
+ return clamp(frame.base_q_idx + frame.feature_data[segment_id * SEG_LVL_MAX + SEG_LVL_ALT_Q], 0, 255);
89
+ }
90
+
91
+ return frame.base_q_idx;
92
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `dc_q( b )`. Exported because an encoder has to quantise with exactly what this dequantises with.
3
+ * @param {number} bit_depth
4
+ * @param {number} b
5
+ * @returns {number}
6
+ */
7
+ export function dc_quant(bit_depth: number, b: number): number;
8
+ /**
9
+ * `ac_q( b )`.
10
+ * @param {number} bit_depth
11
+ * @param {number} b
12
+ * @returns {number}
13
+ */
14
+ export function ac_quant(bit_depth: number, b: number): number;
15
+ /**
16
+ * `get_qindex( 0, segment_id )`: the block's quantizer index, honouring any per-block delta.
17
+ * @param {Av1FrameContext} ctx
18
+ * @returns {number}
19
+ * @see AV1 spec 7.12.2 "Dequantization functions"
20
+ */
21
+ export function get_qindex(ctx: Av1FrameContext): number;
22
+ /**
23
+ * Dequantise, inverse transform and add the residual into the plane.
24
+ *
25
+ * @param {Av1FrameContext} ctx
26
+ * @param {number} plane
27
+ * @param {number} x left edge of the transform block in plane samples
28
+ * @param {number} y top edge of the transform block in plane samples
29
+ * @param {number} tx_size
30
+ * @see AV1 spec 7.12.3 "Reconstruct process"
31
+ *
32
+ * @author Alex Goldring
33
+ * @copyright Company Named Limited (c) 2026
34
+ */
35
+ export function reconstruct(ctx: Av1FrameContext, plane: number, x: number, y: number, tx_size: number): void;
36
+ //# sourceMappingURL=reconstruct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconstruct.d.ts","sourceRoot":"","sources":["../../../../../../src/avif/native/av1/decode/reconstruct.js"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,oCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;GAKG;AACH,oCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;GAKG;AACH,kDAHa,MAAM,CAsBlB;AA0BD;;;;;;;;;;;;GAYG;AACH,yDATW,MAAM,KACN,MAAM,KACN,MAAM,WACN,MAAM,QAsGhB"}