@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.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +3 -2
- package/src/avif/encode_image_source.d.ts +70 -0
- package/src/avif/encode_image_source.d.ts.map +1 -0
- package/src/avif/encode_image_source.js +117 -0
- package/src/avif/encoder_worker.js +15 -126
- package/src/avif/index.d.ts +4 -2
- package/src/avif/index.js +21 -2
- package/src/avif/native/DECISIONS.md +537 -0
- package/src/avif/native/NOTICE.md +61 -0
- package/src/avif/native/api/AvifDecoder.d.ts +67 -0
- package/src/avif/native/api/AvifDecoder.d.ts.map +1 -0
- package/src/avif/native/api/AvifDecoder.js +121 -0
- package/src/avif/native/api/apply_transformations.d.ts +30 -0
- package/src/avif/native/api/apply_transformations.d.ts.map +1 -0
- package/src/avif/native/api/apply_transformations.js +120 -0
- package/src/avif/native/api/avif_to_sampler2d.d.ts +25 -0
- package/src/avif/native/api/avif_to_sampler2d.d.ts.map +1 -0
- package/src/avif/native/api/avif_to_sampler2d.js +42 -0
- package/src/avif/native/api/convert_to_rgba.d.ts +54 -0
- package/src/avif/native/api/convert_to_rgba.d.ts.map +1 -0
- package/src/avif/native/api/convert_to_rgba.js +204 -0
- package/src/avif/native/api/decode_avif.d.ts +24 -0
- package/src/avif/native/api/decode_avif.d.ts.map +1 -0
- package/src/avif/native/api/decode_avif.js +111 -0
- package/src/avif/native/api/decode_image_item.d.ts +18 -0
- package/src/avif/native/api/decode_image_item.d.ts.map +1 -0
- package/src/avif/native/api/decode_image_item.js +234 -0
- package/src/avif/native/api/encode_avif.d.ts +73 -0
- package/src/avif/native/api/encode_avif.d.ts.map +1 -0
- package/src/avif/native/api/encode_avif.js +488 -0
- package/src/avif/native/api/sampler2d_to_avif.d.ts +22 -0
- package/src/avif/native/api/sampler2d_to_avif.d.ts.map +1 -0
- package/src/avif/native/api/sampler2d_to_avif.js +108 -0
- package/src/avif/native/av1/decode/Av1FrameContext.d.ts +286 -0
- package/src/avif/native/av1/decode/Av1FrameContext.d.ts.map +1 -0
- package/src/avif/native/av1/decode/Av1FrameContext.js +622 -0
- package/src/avif/native/av1/decode/block_decoded.d.ts +27 -0
- package/src/avif/native/av1/decode/block_decoded.d.ts.map +1 -0
- package/src/avif/native/av1/decode/block_decoded.js +59 -0
- package/src/avif/native/av1/decode/decode_av1_still.d.ts +22 -0
- package/src/avif/native/av1/decode/decode_av1_still.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_av1_still.js +309 -0
- package/src/avif/native/av1/decode/decode_coefficients.d.ts +20 -0
- package/src/avif/native/av1/decode/decode_coefficients.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_coefficients.js +259 -0
- package/src/avif/native/av1/decode/decode_palette.d.ts +28 -0
- package/src/avif/native/av1/decode/decode_palette.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_palette.js +442 -0
- package/src/avif/native/av1/decode/decode_tile.d.ts +14 -0
- package/src/avif/native/av1/decode/decode_tile.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_tile.js +1213 -0
- package/src/avif/native/av1/decode/get_scan.d.ts +16 -0
- package/src/avif/native/av1/decode/get_scan.d.ts.map +1 -0
- package/src/avif/native/av1/decode/get_scan.js +138 -0
- package/src/avif/native/av1/decode/read_lr.d.ts +35 -0
- package/src/avif/native/av1/decode/read_lr.d.ts.map +1 -0
- package/src/avif/native/av1/decode/read_lr.js +277 -0
- package/src/avif/native/av1/decode/read_transform_type.d.ts +19 -0
- package/src/avif/native/av1/decode/read_transform_type.d.ts.map +1 -0
- package/src/avif/native/av1/decode/read_transform_type.js +92 -0
- package/src/avif/native/av1/decode/reconstruct.d.ts +36 -0
- package/src/avif/native/av1/decode/reconstruct.d.ts.map +1 -0
- package/src/avif/native/av1/decode/reconstruct.js +241 -0
- package/src/avif/native/av1/decode/transform_type.d.ts +49 -0
- package/src/avif/native/av1/decode/transform_type.d.ts.map +1 -0
- package/src/avif/native/av1/decode/transform_type.js +137 -0
- package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts +81 -0
- package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts.map +1 -0
- package/src/avif/native/av1/encode/Av1BlockSnapshot.js +299 -0
- package/src/avif/native/av1/encode/Av1EncodeContext.d.ts +384 -0
- package/src/avif/native/av1/encode/Av1EncodeContext.d.ts.map +1 -0
- package/src/avif/native/av1/encode/Av1EncodeContext.js +590 -0
- package/src/avif/native/av1/encode/build_headers.d.ts +50 -0
- package/src/avif/native/av1/encode/build_headers.d.ts.map +1 -0
- package/src/avif/native/av1/encode/build_headers.js +359 -0
- package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts +26 -0
- package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts.map +1 -0
- package/src/avif/native/av1/encode/choose_chroma_alpha.js +90 -0
- package/src/avif/native/av1/encode/choose_filters.d.ts +21 -0
- package/src/avif/native/av1/encode/choose_filters.d.ts.map +1 -0
- package/src/avif/native/av1/encode/choose_filters.js +318 -0
- package/src/avif/native/av1/encode/choose_restoration.d.ts +35 -0
- package/src/avif/native/av1/encode/choose_restoration.d.ts.map +1 -0
- package/src/avif/native/av1/encode/choose_restoration.js +616 -0
- package/src/avif/native/av1/encode/decode_effort.d.ts +57 -0
- package/src/avif/native/av1/encode/decode_effort.d.ts.map +1 -0
- package/src/avif/native/av1/encode/decode_effort.js +59 -0
- package/src/avif/native/av1/encode/encode_av1_still.d.ts +17 -0
- package/src/avif/native/av1/encode/encode_av1_still.d.ts.map +1 -0
- package/src/avif/native/av1/encode/encode_av1_still.js +194 -0
- package/src/avif/native/av1/encode/encode_effort.d.ts +56 -0
- package/src/avif/native/av1/encode/encode_effort.d.ts.map +1 -0
- package/src/avif/native/av1/encode/encode_effort.js +97 -0
- package/src/avif/native/av1/encode/encode_tile.d.ts +26 -0
- package/src/avif/native/av1/encode/encode_tile.d.ts.map +1 -0
- package/src/avif/native/av1/encode/encode_tile.js +2331 -0
- package/src/avif/native/av1/encode/quantise.d.ts +51 -0
- package/src/avif/native/av1/encode/quantise.d.ts.map +1 -0
- package/src/avif/native/av1/encode/quantise.js +212 -0
- package/src/avif/native/av1/encode/write_coefficients.d.ts +42 -0
- package/src/avif/native/av1/encode/write_coefficients.d.ts.map +1 -0
- package/src/avif/native/av1/encode/write_coefficients.js +367 -0
- package/src/avif/native/av1/encode/write_lr.d.ts +33 -0
- package/src/avif/native/av1/encode/write_lr.d.ts.map +1 -0
- package/src/avif/native/av1/encode/write_lr.js +174 -0
- package/src/avif/native/av1/encode/write_transform_type.d.ts +21 -0
- package/src/avif/native/av1/encode/write_transform_type.d.ts.map +1 -0
- package/src/avif/native/av1/encode/write_transform_type.js +70 -0
- package/src/avif/native/av1/entropy/CdfContext.d.ts +167 -0
- package/src/avif/native/av1/entropy/CdfContext.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/CdfContext.js +433 -0
- package/src/avif/native/av1/entropy/SymbolReader.d.ts +103 -0
- package/src/avif/native/av1/entropy/SymbolReader.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/SymbolReader.js +317 -0
- package/src/avif/native/av1/entropy/SymbolWriter.d.ts +107 -0
- package/src/avif/native/av1/entropy/SymbolWriter.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/SymbolWriter.js +352 -0
- package/src/avif/native/av1/entropy/coefficient_context.d.ts +71 -0
- package/src/avif/native/av1/entropy/coefficient_context.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/coefficient_context.js +325 -0
- package/src/avif/native/av1/entropy/partition_cdf.d.ts +54 -0
- package/src/avif/native/av1/entropy/partition_cdf.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/partition_cdf.js +98 -0
- package/src/avif/native/av1/entropy/symbol_cost.d.ts +37 -0
- package/src/avif/native/av1/entropy/symbol_cost.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/symbol_cost.js +76 -0
- package/src/avif/native/av1/filter/cdef.d.ts +15 -0
- package/src/avif/native/av1/filter/cdef.d.ts.map +1 -0
- package/src/avif/native/av1/filter/cdef.js +313 -0
- package/src/avif/native/av1/filter/loop_filter.d.ts +14 -0
- package/src/avif/native/av1/filter/loop_filter.d.ts.map +1 -0
- package/src/avif/native/av1/filter/loop_filter.js +377 -0
- package/src/avif/native/av1/filter/loop_restoration.d.ts +42 -0
- package/src/avif/native/av1/filter/loop_restoration.d.ts.map +1 -0
- package/src/avif/native/av1/filter/loop_restoration.js +451 -0
- package/src/avif/native/av1/filter/superres.d.ts +18 -0
- package/src/avif/native/av1/filter/superres.d.ts.map +1 -0
- package/src/avif/native/av1/filter/superres.js +86 -0
- package/src/avif/native/av1/grain/FilmGrainState.d.ts +62 -0
- package/src/avif/native/av1/grain/FilmGrainState.d.ts.map +1 -0
- package/src/avif/native/av1/grain/FilmGrainState.js +87 -0
- package/src/avif/native/av1/grain/film_grain.d.ts +16 -0
- package/src/avif/native/av1/grain/film_grain.d.ts.map +1 -0
- package/src/avif/native/av1/grain/film_grain.js +623 -0
- package/src/avif/native/av1/obu/FrameHeader.d.ts +248 -0
- package/src/avif/native/av1/obu/FrameHeader.d.ts.map +1 -0
- package/src/avif/native/av1/obu/FrameHeader.js +381 -0
- package/src/avif/native/av1/obu/ObuHeader.d.ts +53 -0
- package/src/avif/native/av1/obu/ObuHeader.d.ts.map +1 -0
- package/src/avif/native/av1/obu/ObuHeader.js +62 -0
- package/src/avif/native/av1/obu/SequenceHeader.d.ts +157 -0
- package/src/avif/native/av1/obu/SequenceHeader.d.ts.map +1 -0
- package/src/avif/native/av1/obu/SequenceHeader.js +225 -0
- package/src/avif/native/av1/obu/for_each_obu.d.ts +24 -0
- package/src/avif/native/av1/obu/for_each_obu.d.ts.map +1 -0
- package/src/avif/native/av1/obu/for_each_obu.js +50 -0
- package/src/avif/native/av1/obu/parse_frame_header.d.ts +18 -0
- package/src/avif/native/av1/obu/parse_frame_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/parse_frame_header.js +841 -0
- package/src/avif/native/av1/obu/parse_obu_header.d.ts +23 -0
- package/src/avif/native/av1/obu/parse_obu_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/parse_obu_header.js +69 -0
- package/src/avif/native/av1/obu/parse_sequence_header.d.ts +17 -0
- package/src/avif/native/av1/obu/parse_sequence_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/parse_sequence_header.js +263 -0
- package/src/avif/native/av1/obu/write_frame_header.d.ts +16 -0
- package/src/avif/native/av1/obu/write_frame_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/write_frame_header.js +579 -0
- package/src/avif/native/av1/obu/write_sequence_header.d.ts +17 -0
- package/src/avif/native/av1/obu/write_sequence_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/write_sequence_header.js +189 -0
- package/src/avif/native/av1/predict/IntraPredictionState.d.ts +49 -0
- package/src/avif/native/av1/predict/IntraPredictionState.d.ts.map +1 -0
- package/src/avif/native/av1/predict/IntraPredictionState.js +58 -0
- package/src/avif/native/av1/predict/intra_filter_type.d.ts +17 -0
- package/src/avif/native/av1/predict/intra_filter_type.d.ts.map +1 -0
- package/src/avif/native/av1/predict/intra_filter_type.js +79 -0
- package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts +50 -0
- package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts.map +1 -0
- package/src/avif/native/av1/predict/predict_chroma_from_luma.js +153 -0
- package/src/avif/native/av1/predict/predict_intra.d.ts +42 -0
- package/src/avif/native/av1/predict/predict_intra.d.ts.map +1 -0
- package/src/avif/native/av1/predict/predict_intra.js +803 -0
- package/src/avif/native/av1/predict/predict_palette.d.ts +23 -0
- package/src/avif/native/av1/predict/predict_palette.d.ts.map +1 -0
- package/src/avif/native/av1/predict/predict_palette.js +36 -0
- package/src/avif/native/av1/tables/av1_symbols.d.ts +411 -0
- package/src/avif/native/av1/tables/av1_symbols.d.ts.map +1 -0
- package/src/avif/native/av1/tables/av1_symbols.js +419 -0
- package/src/avif/native/av1/tables/block_tables.d.ts +181 -0
- package/src/avif/native/av1/tables/block_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/block_tables.js +270 -0
- package/src/avif/native/av1/tables/cdf_tables.d.ts +961 -0
- package/src/avif/native/av1/tables/cdf_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/cdf_tables.js +1893 -0
- package/src/avif/native/av1/tables/coefficient_tables.d.ts +41 -0
- package/src/avif/native/av1/tables/coefficient_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/coefficient_tables.js +82 -0
- package/src/avif/native/av1/tables/derived_block_tables.d.ts +15 -0
- package/src/avif/native/av1/tables/derived_block_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/derived_block_tables.js +23 -0
- package/src/avif/native/av1/tables/filter_tables.d.ts +171 -0
- package/src/avif/native/av1/tables/filter_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/filter_tables.js +313 -0
- package/src/avif/native/av1/tables/grain_tables.d.ts +11 -0
- package/src/avif/native/av1/tables/grain_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/grain_tables.js +190 -0
- package/src/avif/native/av1/tables/prediction_tables.d.ts +141 -0
- package/src/avif/native/av1/tables/prediction_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/prediction_tables.js +223 -0
- package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts +21 -0
- package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/quantizer_matrix_tables.js +38 -0
- package/src/avif/native/av1/tables/quantizer_tables.d.ts +21 -0
- package/src/avif/native/av1/tables/quantizer_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/quantizer_tables.js +160 -0
- package/src/avif/native/av1/tables/scan_tables.d.ts +321 -0
- package/src/avif/native/av1/tables/scan_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/scan_tables.js +727 -0
- package/src/avif/native/av1/tables/segmentation_tables.d.ts +31 -0
- package/src/avif/native/av1/tables/segmentation_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/segmentation_tables.js +48 -0
- package/src/avif/native/av1/tables/transform_tables.d.ts +91 -0
- package/src/avif/native/av1/tables/transform_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/transform_tables.js +140 -0
- package/src/avif/native/av1/tables/unpack_table.d.ts +33 -0
- package/src/avif/native/av1/tables/unpack_table.d.ts.map +1 -0
- package/src/avif/native/av1/tables/unpack_table.js +73 -0
- package/src/avif/native/av1/transform/forward_transform_2d.d.ts +61 -0
- package/src/avif/native/av1/transform/forward_transform_2d.d.ts.map +1 -0
- package/src/avif/native/av1/transform/forward_transform_2d.js +574 -0
- package/src/avif/native/av1/transform/inverse_transform_1d.d.ts +76 -0
- package/src/avif/native/av1/transform/inverse_transform_1d.d.ts.map +1 -0
- package/src/avif/native/av1/transform/inverse_transform_1d.js +590 -0
- package/src/avif/native/av1/transform/inverse_transform_2d.d.ts +46 -0
- package/src/avif/native/av1/transform/inverse_transform_2d.d.ts.map +1 -0
- package/src/avif/native/av1/transform/inverse_transform_2d.js +180 -0
- package/src/avif/native/av1/util/ceil_log2.d.ts +13 -0
- package/src/avif/native/av1/util/ceil_log2.d.ts.map +1 -0
- package/src/avif/native/av1/util/ceil_log2.js +18 -0
- package/src/avif/native/av1/util/floor_log2.d.ts +20 -0
- package/src/avif/native/av1/util/floor_log2.d.ts.map +1 -0
- package/src/avif/native/av1/util/floor_log2.js +20 -0
- package/src/avif/native/av1/util/round2.d.ts +22 -0
- package/src/avif/native/av1/util/round2.d.ts.map +1 -0
- package/src/avif/native/av1/util/round2.js +27 -0
- package/src/avif/native/av1/util/round2_signed.d.ts +14 -0
- package/src/avif/native/av1/util/round2_signed.d.ts.map +1 -0
- package/src/avif/native/av1/util/round2_signed.js +17 -0
- package/src/avif/native/av1/util/tile_log2.d.ts +16 -0
- package/src/avif/native/av1/util/tile_log2.d.ts.map +1 -0
- package/src/avif/native/av1/util/tile_log2.js +23 -0
- package/src/avif/native/bitstream/BitReader.d.ts +174 -0
- package/src/avif/native/bitstream/BitReader.d.ts.map +1 -0
- package/src/avif/native/bitstream/BitReader.js +391 -0
- package/src/avif/native/bitstream/BitWriter.d.ts +122 -0
- package/src/avif/native/bitstream/BitWriter.d.ts.map +1 -0
- package/src/avif/native/bitstream/BitWriter.js +351 -0
- package/src/avif/native/color/ColourTransform.d.ts +62 -0
- package/src/avif/native/color/ColourTransform.d.ts.map +1 -0
- package/src/avif/native/color/ColourTransform.js +189 -0
- package/src/avif/native/color/YuvImage.d.ts +51 -0
- package/src/avif/native/color/YuvImage.d.ts.map +1 -0
- package/src/avif/native/color/YuvImage.js +66 -0
- package/src/avif/native/color/clamp_sample.d.ts +18 -0
- package/src/avif/native/color/clamp_sample.d.ts.map +1 -0
- package/src/avif/native/color/clamp_sample.js +25 -0
- package/src/avif/native/color/linear_to_transfer.d.ts +24 -0
- package/src/avif/native/color/linear_to_transfer.d.ts.map +1 -0
- package/src/avif/native/color/linear_to_transfer.js +126 -0
- package/src/avif/native/color/primaries.d.ts +20 -0
- package/src/avif/native/color/primaries.d.ts.map +1 -0
- package/src/avif/native/color/primaries.js +94 -0
- package/src/avif/native/color/rgb_row_to_ycbcr.d.ts +20 -0
- package/src/avif/native/color/rgb_row_to_ycbcr.d.ts.map +1 -0
- package/src/avif/native/color/rgb_row_to_ycbcr.js +78 -0
- package/src/avif/native/color/transfer_to_linear.d.ts +49 -0
- package/src/avif/native/color/transfer_to_linear.d.ts.map +1 -0
- package/src/avif/native/color/transfer_to_linear.js +171 -0
- package/src/avif/native/color/upsample_chroma_row.d.ts +35 -0
- package/src/avif/native/color/upsample_chroma_row.d.ts.map +1 -0
- package/src/avif/native/color/upsample_chroma_row.js +89 -0
- package/src/avif/native/color/ycbcr_row_to_rgb.d.ts +23 -0
- package/src/avif/native/color/ycbcr_row_to_rgb.d.ts.map +1 -0
- package/src/avif/native/color/ycbcr_row_to_rgb.js +78 -0
- package/src/avif/native/heif/AvifFile.d.ts +112 -0
- package/src/avif/native/heif/AvifFile.d.ts.map +1 -0
- package/src/avif/native/heif/AvifFile.js +142 -0
- package/src/avif/native/heif/ItemProperty.d.ts +244 -0
- package/src/avif/native/heif/ItemProperty.d.ts.map +1 -0
- package/src/avif/native/heif/ItemProperty.js +321 -0
- package/src/avif/native/heif/find_item_property.d.ts +17 -0
- package/src/avif/native/heif/find_item_property.d.ts.map +1 -0
- package/src/avif/native/heif/find_item_property.js +28 -0
- package/src/avif/native/heif/find_item_references.d.ts +16 -0
- package/src/avif/native/heif/find_item_references.d.ts.map +1 -0
- package/src/avif/native/heif/find_item_references.js +29 -0
- package/src/avif/native/heif/find_items_referencing.d.ts +17 -0
- package/src/avif/native/heif/find_items_referencing.d.ts.map +1 -0
- package/src/avif/native/heif/find_items_referencing.js +36 -0
- package/src/avif/native/heif/parse_avif_file.d.ts +15 -0
- package/src/avif/native/heif/parse_avif_file.d.ts.map +1 -0
- package/src/avif/native/heif/parse_avif_file.js +383 -0
- package/src/avif/native/heif/parse_image_grid.d.ts +18 -0
- package/src/avif/native/heif/parse_image_grid.d.ts.map +1 -0
- package/src/avif/native/heif/parse_image_grid.js +48 -0
- package/src/avif/native/heif/parse_item_property.d.ts +18 -0
- package/src/avif/native/heif/parse_item_property.d.ts.map +1 -0
- package/src/avif/native/heif/parse_item_property.js +243 -0
- package/src/avif/native/heif/read_item_data.d.ts +22 -0
- package/src/avif/native/heif/read_item_data.d.ts.map +1 -0
- package/src/avif/native/heif/read_item_data.js +97 -0
- package/src/avif/native/heif/write_avif_file.d.ts +50 -0
- package/src/avif/native/heif/write_avif_file.d.ts.map +1 -0
- package/src/avif/native/heif/write_avif_file.js +348 -0
- package/src/avif/native/heif/write_item_property.d.ts +16 -0
- package/src/avif/native/heif/write_item_property.d.ts.map +1 -0
- package/src/avif/native/heif/write_item_property.js +182 -0
- package/src/avif/native/index.d.ts +14 -0
- package/src/avif/native/index.d.ts.map +1 -0
- package/src/avif/native/index.js +56 -0
- package/src/avif/native/isobmff/BoxHeader.d.ts +50 -0
- package/src/avif/native/isobmff/BoxHeader.d.ts.map +1 -0
- package/src/avif/native/isobmff/BoxHeader.js +57 -0
- package/src/avif/native/isobmff/BoxWriter.d.ts +118 -0
- package/src/avif/native/isobmff/BoxWriter.d.ts.map +1 -0
- package/src/avif/native/isobmff/BoxWriter.js +264 -0
- package/src/avif/native/isobmff/ByteCursor.d.ts +125 -0
- package/src/avif/native/isobmff/ByteCursor.d.ts.map +1 -0
- package/src/avif/native/isobmff/ByteCursor.js +298 -0
- package/src/avif/native/isobmff/for_each_box.d.ts +23 -0
- package/src/avif/native/isobmff/for_each_box.d.ts.map +1 -0
- package/src/avif/native/isobmff/for_each_box.js +39 -0
- package/src/avif/native/isobmff/read_box_header.d.ts +22 -0
- package/src/avif/native/isobmff/read_box_header.d.ts.map +1 -0
- package/src/avif/native/isobmff/read_box_header.js +59 -0
- package/src/avif/native/isobmff/read_full_box_header.d.ts +26 -0
- package/src/avif/native/isobmff/read_full_box_header.d.ts.map +1 -0
- package/src/avif/native/isobmff/read_full_box_header.js +33 -0
- package/src/avif/threaded_image_encoder.d.ts +7 -2
- package/src/avif/threaded_image_encoder.d.ts.map +1 -1
- package/src/avif/threaded_image_encoder.js +107 -21
- package/src/core/binary/BinaryBuffer.d.ts +40 -0
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +100 -0
- package/src/core/binary/hash/crc32.d.ts +16 -0
- package/src/core/binary/hash/crc32.d.ts.map +1 -0
- package/src/core/binary/hash/crc32.js +96 -0
- package/src/core/binary/utf8/utf8_decode.d.ts +21 -0
- package/src/core/binary/utf8/utf8_decode.d.ts.map +1 -0
- package/src/core/binary/utf8/utf8_decode.js +43 -0
- package/src/core/binary/utf8/utf8_encode_into.d.ts +20 -0
- package/src/core/binary/utf8/utf8_encode_into.d.ts.map +1 -0
- package/src/core/binary/utf8/utf8_encode_into.js +48 -0
- package/src/core/binary/utf8/utf8_encoded_length.d.ts +14 -0
- package/src/core/binary/utf8/utf8_encoded_length.d.ts.map +1 -0
- package/src/core/binary/utf8/utf8_encoded_length.js +36 -0
- package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +417 -0
- package/src/core/color/COLOR_REVIEW_2026_08_28.md +779 -0
- package/src/core/color/Color.d.ts +128 -20
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +959 -866
- package/src/core/color/PQ/PQ_constants.d.ts +10 -0
- package/src/core/color/PQ/PQ_constants.d.ts.map +1 -1
- package/src/core/color/PQ/PQ_constants.js +10 -0
- package/src/core/color/PQ/linear_to_PQ.d.ts.map +1 -1
- package/src/core/color/PQ/linear_to_PQ.js +6 -0
- package/src/core/color/REC709_PRIMARIES.d.ts +50 -0
- package/src/core/color/REC709_PRIMARIES.d.ts.map +1 -0
- package/src/core/color/REC709_PRIMARIES.js +53 -0
- package/src/core/color/construct/color_from_hex.d.ts +21 -0
- package/src/core/color/construct/color_from_hex.d.ts.map +1 -0
- package/src/core/color/construct/color_from_hex.js +33 -0
- package/src/core/color/construct/color_from_temperature.d.ts +22 -0
- package/src/core/color/construct/color_from_temperature.d.ts.map +1 -0
- package/src/core/color/construct/color_from_temperature.js +33 -0
- package/src/core/color/construct/color_from_uint24.d.ts +19 -0
- package/src/core/color/construct/color_from_uint24.d.ts.map +1 -0
- package/src/core/color/construct/color_from_uint24.js +26 -0
- package/src/core/color/construct/color_from_uint32.d.ts +20 -0
- package/src/core/color/construct/color_from_uint32.d.ts.map +1 -0
- package/src/core/color/construct/color_from_uint32.js +39 -0
- package/src/core/color/construct/color_gray.d.ts +17 -0
- package/src/core/color/construct/color_gray.d.ts.map +1 -0
- package/src/core/color/construct/color_gray.js +22 -0
- package/src/core/color/hex/hex2rgb.d.ts +1 -11
- package/src/core/color/hex/hex2rgb.d.ts.map +1 -1
- package/src/core/color/hex/hex2rgb.js +7 -24
- package/src/core/color/hex/hex_to_rgb.d.ts +18 -0
- package/src/core/color/hex/hex_to_rgb.d.ts.map +1 -0
- package/src/core/color/hex/hex_to_rgb.js +62 -0
- package/src/core/color/hex/rgb2hex.d.ts +1 -8
- package/src/core/color/hex/rgb2hex.d.ts.map +1 -1
- package/src/core/color/hex/rgb2hex.js +7 -13
- package/src/core/color/hex/rgb_to_hex.d.ts +9 -0
- package/src/core/color/hex/rgb_to_hex.d.ts.map +1 -0
- package/src/core/color/hex/rgb_to_hex.js +13 -0
- package/src/core/color/hex/rgba_to_hex.d.ts +19 -0
- package/src/core/color/hex/rgba_to_hex.d.ts.map +1 -0
- package/src/core/color/hex/rgba_to_hex.js +23 -0
- package/src/core/color/hsv/hsv2rgb.d.ts +1 -12
- package/src/core/color/hsv/hsv2rgb.d.ts.map +1 -1
- package/src/core/color/hsv/hsv2rgb.js +8 -21
- package/src/core/color/hsv/hsv2rgb_float.d.ts +1 -12
- package/src/core/color/hsv/hsv2rgb_float.d.ts.map +1 -1
- package/src/core/color/hsv/hsv2rgb_float.js +8 -56
- package/src/core/color/hsv/hsv_to_rgb.d.ts +13 -0
- package/src/core/color/hsv/hsv_to_rgb.d.ts.map +1 -0
- package/src/core/color/hsv/hsv_to_rgb.js +39 -0
- package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts +13 -0
- package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -0
- package/src/core/color/hsv/hsv_to_rgb_uint8.js +21 -0
- package/src/core/color/hsv/hue_to_rgb_sextant.d.ts +24 -0
- package/src/core/color/hsv/hue_to_rgb_sextant.d.ts.map +1 -0
- package/src/core/color/hsv/hue_to_rgb_sextant.js +67 -0
- package/src/core/color/hsv/rgb2hsv.d.ts +1 -12
- package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
- package/src/core/color/hsv/rgb2hsv.js +7 -42
- package/src/core/color/hsv/rgb_to_hsv.d.ts +13 -0
- package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -0
- package/src/core/color/hsv/rgb_to_hsv.js +42 -0
- package/src/core/color/hunt/hpe_to_xyz.d.ts +2 -0
- package/src/core/color/hunt/hpe_to_xyz.d.ts.map +1 -0
- package/src/core/color/hunt/hpe_to_xyz.js +4 -0
- package/src/core/color/hunt/xyz_to_hpe.d.ts +1 -6
- package/src/core/color/hunt/xyz_to_hpe.d.ts.map +1 -1
- package/src/core/color/hunt/xyz_to_hpe.js +12 -15
- package/src/core/color/illuminant/D65_spd_tabulated.d.ts.map +1 -1
- package/src/core/color/illuminant/D65_spd_tabulated.js +107 -104
- package/src/core/color/int2rgb.d.ts +1 -10
- package/src/core/color/int2rgb.d.ts.map +1 -1
- package/src/core/color/int2rgb.js +7 -12
- package/src/core/color/int_to_rgb.d.ts +21 -0
- package/src/core/color/int_to_rgb.d.ts.map +1 -0
- package/src/core/color/int_to_rgb.js +33 -0
- package/src/core/color/kelvin/kelvin_to_rgb.d.ts.map +1 -1
- package/src/core/color/kelvin/kelvin_to_rgb.js +22 -2
- package/src/core/color/kelvin/rgb_to_kelvin.d.ts +22 -2
- package/src/core/color/kelvin/rgb_to_kelvin.d.ts.map +1 -1
- package/src/core/color/kelvin/rgb_to_kelvin.js +22 -2
- package/src/core/color/lab/lab_to_xyz.d.ts +20 -0
- package/src/core/color/lab/lab_to_xyz.d.ts.map +1 -0
- package/src/core/color/lab/lab_to_xyz.js +69 -0
- package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts +34 -0
- package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_adaptive_l0.js +46 -0
- package/src/core/color/oklab/gamut_clip_at_l0.d.ts +33 -0
- package/src/core/color/oklab/gamut_clip_at_l0.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_at_l0.js +84 -0
- package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts +24 -0
- package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_preserve_chroma.js +37 -0
- package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts +23 -0
- package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_project_to_lcusp.js +46 -0
- package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts +19 -0
- package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts.map +1 -0
- package/src/core/color/oklab/linear_srgb_to_okhsl.js +93 -0
- package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts +12 -4
- package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts.map +1 -1
- package/src/core/color/oklab/linear_srgb_to_okhsv.js +108 -84
- package/src/core/color/oklab/linear_srgb_to_oklab.d.ts +13 -4
- package/src/core/color/oklab/linear_srgb_to_oklab.d.ts.map +1 -1
- package/src/core/color/oklab/linear_srgb_to_oklab.js +28 -19
- package/src/core/color/oklab/okhsl_chroma_bounds.d.ts +51 -0
- package/src/core/color/oklab/okhsl_chroma_bounds.d.ts.map +1 -0
- package/src/core/color/oklab/okhsl_chroma_bounds.js +128 -0
- package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts +19 -0
- package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts.map +1 -0
- package/src/core/color/oklab/okhsl_to_linear_srgb.js +85 -0
- package/src/core/color/oklab/oklab_to_oklch.d.ts +24 -0
- package/src/core/color/oklab/oklab_to_oklch.d.ts.map +1 -0
- package/src/core/color/oklab/oklab_to_oklch.js +35 -0
- package/src/core/color/oklab/oklch_to_oklab.d.ts +18 -0
- package/src/core/color/oklab/oklch_to_oklab.d.ts.map +1 -0
- package/src/core/color/oklab/oklch_to_oklab.js +26 -0
- package/src/core/color/oklab/toe.d.ts +12 -0
- package/src/core/color/oklab/toe.d.ts.map +1 -1
- package/src/core/color/oklab/toe.js +34 -22
- package/src/core/color/operations/color_add.d.ts +21 -0
- package/src/core/color/operations/color_add.d.ts.map +1 -0
- package/src/core/color/operations/color_add.js +23 -0
- package/src/core/color/operations/color_add_scaled.d.ts +20 -0
- package/src/core/color/operations/color_add_scaled.d.ts.map +1 -0
- package/src/core/color/operations/color_add_scaled.js +30 -0
- package/src/core/color/operations/color_clamp.d.ts +22 -0
- package/src/core/color/operations/color_clamp.d.ts.map +1 -0
- package/src/core/color/operations/color_clamp.js +25 -0
- package/src/core/color/operations/color_darken.d.ts +2 -1
- package/src/core/color/operations/color_darken.d.ts.map +1 -1
- package/src/core/color/operations/color_darken.js +25 -24
- package/src/core/color/operations/color_desaturate.d.ts +2 -1
- package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
- package/src/core/color/operations/color_desaturate.js +25 -24
- package/src/core/color/operations/color_get_hsl.d.ts +18 -0
- package/src/core/color/operations/color_get_hsl.d.ts.map +1 -0
- package/src/core/color/operations/color_get_hsl.js +60 -0
- package/src/core/color/operations/color_is_in_gamut.d.ts +20 -0
- package/src/core/color/operations/color_is_in_gamut.d.ts.map +1 -0
- package/src/core/color/operations/color_is_in_gamut.js +30 -0
- package/src/core/color/operations/color_lerp.d.ts +12 -3
- package/src/core/color/operations/color_lerp.d.ts.map +1 -1
- package/src/core/color/operations/color_lerp.js +55 -46
- package/src/core/color/operations/color_lighten.d.ts +9 -5
- package/src/core/color/operations/color_lighten.d.ts.map +1 -1
- package/src/core/color/operations/color_lighten.js +29 -24
- package/src/core/color/operations/color_mix_okhsv_channel.d.ts +24 -0
- package/src/core/color/operations/color_mix_okhsv_channel.d.ts.map +1 -0
- package/src/core/color/operations/color_mix_okhsv_channel.js +48 -0
- package/src/core/color/operations/color_multiply_rgb.d.ts +21 -0
- package/src/core/color/operations/color_multiply_rgb.d.ts.map +1 -0
- package/src/core/color/operations/color_multiply_rgb.js +26 -0
- package/src/core/color/operations/color_saturate.d.ts +9 -5
- package/src/core/color/operations/color_saturate.d.ts.map +1 -1
- package/src/core/color/operations/color_saturate.js +29 -24
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts +1 -1
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -1
- package/src/core/color/operations/color_scale_okhsv_channel.js +58 -45
- package/src/core/color/operations/color_srgb_apply.d.ts +28 -0
- package/src/core/color/operations/color_srgb_apply.d.ts.map +1 -0
- package/src/core/color/operations/color_srgb_apply.js +40 -0
- package/src/core/color/operations/color_sub.d.ts +16 -0
- package/src/core/color/operations/color_sub.d.ts.map +1 -0
- package/src/core/color/operations/color_sub.js +18 -0
- package/src/core/color/parse_color.d.ts +10 -1
- package/src/core/color/parse_color.d.ts.map +1 -1
- package/src/core/color/parse_color.js +100 -84
- package/src/core/color/parse_color_normalized.d.ts +24 -0
- package/src/core/color/parse_color_normalized.d.ts.map +1 -0
- package/src/core/color/parse_color_normalized.js +38 -0
- package/src/core/color/rgb2uint24.d.ts +1 -8
- package/src/core/color/rgb2uint24.d.ts.map +1 -1
- package/src/core/color/rgb2uint24.js +7 -20
- package/src/core/color/rgb2uint32.d.ts +1 -9
- package/src/core/color/rgb2uint32.d.ts.map +1 -1
- package/src/core/color/rgb2uint32.js +7 -18
- package/src/core/color/rgb_to_luminance.d.ts +14 -5
- package/src/core/color/rgb_to_luminance.d.ts.map +1 -1
- package/src/core/color/rgb_to_luminance.js +24 -13
- package/src/core/color/rgb_to_uint24.d.ts +9 -0
- package/src/core/color/rgb_to_uint24.d.ts.map +1 -0
- package/src/core/color/rgb_to_uint24.js +20 -0
- package/src/core/color/rgb_to_uint32.d.ts +10 -0
- package/src/core/color/rgb_to_uint32.d.ts.map +1 -0
- package/src/core/color/rgb_to_uint32.js +21 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts +7 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
- package/src/core/color/sRGB/linear_to_sRGB.js +39 -32
- package/src/core/color/xyz/hpe_to_xyz.d.ts +24 -0
- package/src/core/color/xyz/hpe_to_xyz.d.ts.map +1 -0
- package/src/core/color/xyz/hpe_to_xyz.js +39 -0
- package/src/core/color/xyz/rgb_to_xyz.d.ts +17 -2
- package/src/core/color/xyz/rgb_to_xyz.d.ts.map +1 -1
- package/src/core/color/xyz/rgb_to_xyz.js +44 -18
- package/src/core/color/xyz/xyz_cmf_tabulated.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_cmf_tabulated.js +217 -211
- package/src/core/color/xyz/xyz_cmf_wyman.d.ts +4 -0
- package/src/core/color/xyz/xyz_cmf_wyman.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_cmf_wyman.js +74 -65
- package/src/core/color/xyz/xyz_to_hpe.d.ts +18 -0
- package/src/core/color/xyz/xyz_to_hpe.d.ts.map +1 -0
- package/src/core/color/xyz/xyz_to_hpe.js +33 -0
- package/src/core/color/xyz/xyz_to_rgb.d.ts +17 -2
- package/src/core/color/xyz/xyz_to_rgb.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_to_rgb.js +39 -16
- package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts +7 -2
- package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts.map +1 -1
- package/src/core/color/ycxcz/xyz_to_ycxcz.js +33 -28
- package/src/core/events/signal/Signal.js +820 -820
- package/src/core/math/clamp_index.d.ts +18 -0
- package/src/core/math/clamp_index.d.ts.map +1 -0
- package/src/core/math/clamp_index.js +23 -0
- package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +803 -0
- package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts +5 -3
- package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/JpegFrame.js +5 -3
- package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts +2 -1
- package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.js +2 -1
- package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts +17 -0
- package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/JpegImage.js +197 -157
- package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts +0 -1
- package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/idct8x8_float.js +0 -1
- package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts +28 -0
- package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.js +31 -0
- package/src/engine/asset/loaders/image/png/PNG.d.ts +3 -18
- package/src/engine/asset/loaders/image/png/PNG.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNG.js +3 -139
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts +16 -16
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNGReader.js +143 -160
- package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_iTXt.js +3 -3
- package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_zTXt.js +3 -3
- package/src/engine/asset/loaders/image/png/crc32.d.ts +1 -15
- package/src/engine/asset/loaders/image/png/crc32.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/crc32.js +5 -89
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts +12 -10
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.js +20 -45
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts +2 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.js +2 -0
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts +2 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.js +2 -0
- package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts +22 -0
- package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/png/filter/png_unfilter.js +68 -0
- package/src/engine/asset/loaders/image/png/png_inflate.d.ts +20 -0
- package/src/engine/asset/loaders/image/png/png_inflate.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/png/png_inflate.js +85 -0
- package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts +22 -0
- package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/png/png_unpack_samples.js +38 -0
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +135 -132
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +16 -3
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1157 -1149
- package/src/engine/graphics/render/frame_graph/FrameGraph.js +900 -900
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +72 -81
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +86 -77
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +451 -0
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +625 -0
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts +14 -3
- package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/decode_image_source_hdr.js +50 -51
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/deserialize_scene.js +531 -521
- package/src/shade/renderer/scene/serialization/write_image_source.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/write_image_source.js +6 -4
- package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.js +34 -32
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -31
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts +10 -0
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.js +32 -22
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js +22 -21
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +110 -104
- package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.js +23 -21
- package/src/view/elements/ColorPickerView.js +296 -296
- package/src/avif/codec/dec/Readme.md +0 -14
- package/src/avif/codec/dec/avif_dec.cpp +0 -234
- package/src/avif/codec/dec/avif_dec.d.ts +0 -3
- package/src/avif/codec/dec/avif_dec.d.ts.map +0 -1
- package/src/avif/codec/dec/avif_dec.js +0 -16
- package/src/avif/codec/dec/avif_dec.wasm +0 -0
- package/src/avif/codec/enc/README.md +0 -37
- package/src/avif/codec/enc/avif_enc.cpp +0 -216
- package/src/avif/codec/enc/avif_enc.d.ts +0 -3
- package/src/avif/codec/enc/avif_enc.d.ts.map +0 -1
- package/src/avif/codec/enc/avif_enc.js +0 -6144
- package/src/avif/codec/enc/avif_enc.wasm +0 -0
- package/src/avif/codec/enc/avif_enc_mt.d.ts +0 -3
- package/src/avif/codec/enc/avif_enc_mt.d.ts.map +0 -1
- package/src/avif/codec/enc/avif_enc_mt.js +0 -6811
- package/src/avif/codec/enc/avif_enc_mt.wasm +0 -0
- package/src/avif/codec/enc/avif_enc_mt.worker.d.mts +0 -2
- package/src/avif/codec/enc/avif_enc_mt.worker.d.mts.map +0 -1
- package/src/avif/codec/enc/avif_enc_mt.worker.d.ts +0 -11
- package/src/avif/codec/enc/avif_enc_mt.worker.d.ts.map +0 -1
- package/src/avif/codec/enc/avif_enc_mt.worker.js +0 -171
- package/src/avif/codec/enc/avif_enc_mt.worker.mjs +0 -1
- package/src/avif/decode.d.ts +0 -3
- package/src/avif/decode.d.ts.map +0 -1
- package/src/avif/decode.js +0 -42
- package/src/avif/encode.d.ts +0 -3
- package/src/avif/encode.d.ts.map +0 -1
- package/src/avif/encode.js +0 -75
- package/src/avif/meta.d.ts +0 -24
- package/src/avif/meta.d.ts.map +0 -1
- package/src/avif/meta.js +0 -23
- package/src/avif/tsconfig.tsbuildinfo +0 -1
- package/src/avif/utils.d.ts +0 -17
- package/src/avif/utils.d.ts.map +0 -1
- package/src/avif/utils.js +0 -31
- package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts +0 -23
- package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts.map +0 -1
- package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.js +0 -214
- package/src/engine/asset/loaders/image/png/inflate.d.ts +0 -7
- package/src/engine/asset/loaders/image/png/inflate.d.ts.map +0 -1
- package/src/engine/asset/loaders/image/png/inflate.js +0 -20
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { PQ_MAX_NITS } from "../../../core/color/PQ/PQ_constants.js";
|
|
2
|
+
import { PQ_to_linear } from "../../../core/color/PQ/PQ_to_linear.js";
|
|
3
|
+
import {
|
|
4
|
+
TC_BT_1361,
|
|
5
|
+
TC_BT_2020_10_BIT,
|
|
6
|
+
TC_BT_2020_12_BIT,
|
|
7
|
+
TC_BT_470_B_G,
|
|
8
|
+
TC_BT_470_M,
|
|
9
|
+
TC_BT_601,
|
|
10
|
+
TC_BT_709,
|
|
11
|
+
TC_HLG,
|
|
12
|
+
TC_IEC_61966,
|
|
13
|
+
TC_LINEAR,
|
|
14
|
+
TC_LOG_100,
|
|
15
|
+
TC_LOG_100_SQRT10,
|
|
16
|
+
TC_SMPTE_2084,
|
|
17
|
+
TC_SMPTE_240,
|
|
18
|
+
TC_SMPTE_428,
|
|
19
|
+
TC_SRGB
|
|
20
|
+
} from "../av1/tables/av1_symbols.js";
|
|
21
|
+
import { convert_channel_sRGB_to_linear } from "../../../core/color/sRGB/sRGB_to_linear.js";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Luminance that a linear value of `1.0` stands for, in nits.
|
|
25
|
+
*
|
|
26
|
+
* Every transfer function here decodes to this normalisation, so that SDR content lands at `1.0`
|
|
27
|
+
* whatever curve carried it and HDR content simply goes above it.
|
|
28
|
+
*
|
|
29
|
+
* A hundred rather than the engine's 203 deliberately, and it is not a renderer setting. The SDR
|
|
30
|
+
* curves in H.273 table 3 — BT.709, sRGB, gamma 2.2, gamma 2.8 — are defined against a hundred nit
|
|
31
|
+
* reference display, so signal `1.0` decoding to linear `1.0` is their own fixed point rather than
|
|
32
|
+
* a convention this file picks. Setting it to `SDR_WHITE_NITS` would land sRGB white at 0.4926 and
|
|
33
|
+
* make this module a statement about meep instead of a statement about the standard.
|
|
34
|
+
*
|
|
35
|
+
* 203 nits is a rendering convention (BT.2408 graphics white on an HDR display), so it lives on the
|
|
36
|
+
* renderer's side of the boundary: `sampler2d_to_avif` and `avif_to_sampler2d` each name their
|
|
37
|
+
* white to the codec through `linear_reference_nits`, and that is where the two meet.
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
export const LINEAR_REFERENCE_NITS = 100;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Peak luminance an HLG signal is decoded against, in nits. The curve carries no absolute luminance
|
|
44
|
+
* of its own, and this is the reference display ITU-R BT.2100 defines its system gamma on.
|
|
45
|
+
* @type {number}
|
|
46
|
+
*/
|
|
47
|
+
export const HLG_PEAK_NITS = 1000;
|
|
48
|
+
|
|
49
|
+
/** @type {number} */
|
|
50
|
+
const HLG_A = 0.17883277;
|
|
51
|
+
|
|
52
|
+
/** @type {number} */
|
|
53
|
+
const HLG_B = 1 - 4 * HLG_A;
|
|
54
|
+
|
|
55
|
+
/** @type {number} */
|
|
56
|
+
const HLG_C = 0.5 - HLG_A * Math.log(4 * HLG_A);
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Decode one signal value to linear light.
|
|
60
|
+
*
|
|
61
|
+
* HLG is the exception: what comes back is *scene* linear, because its opto-optical transfer
|
|
62
|
+
* function is a function of the picture's luminance rather than of one channel. Completing it is
|
|
63
|
+
* {@link transfer_row_to_linear}'s job, which is why nothing should call this directly for HLG.
|
|
64
|
+
*
|
|
65
|
+
* @param {number} transfer_characteristics a `TC_*` code
|
|
66
|
+
* @param {number} value signal, `0 .. 1`
|
|
67
|
+
* @returns {number} linear light, `1.0` being {@link LINEAR_REFERENCE_NITS}
|
|
68
|
+
* @see ITU-T H.273 table 3 "Transfer characteristics"
|
|
69
|
+
*
|
|
70
|
+
* @author Alex Goldring
|
|
71
|
+
* @copyright Company Named Limited (c) 2026
|
|
72
|
+
*/
|
|
73
|
+
export function transfer_to_linear(transfer_characteristics, value) {
|
|
74
|
+
switch (transfer_characteristics) {
|
|
75
|
+
case TC_SMPTE_2084:
|
|
76
|
+
return PQ_to_linear(value) * (PQ_MAX_NITS / LINEAR_REFERENCE_NITS);
|
|
77
|
+
|
|
78
|
+
case TC_HLG:
|
|
79
|
+
return hlg_to_scene_linear(value);
|
|
80
|
+
|
|
81
|
+
case TC_LINEAR:
|
|
82
|
+
return value;
|
|
83
|
+
|
|
84
|
+
case TC_SRGB:
|
|
85
|
+
case TC_IEC_61966:
|
|
86
|
+
return convert_channel_sRGB_to_linear(value);
|
|
87
|
+
|
|
88
|
+
case TC_BT_470_M:
|
|
89
|
+
return value <= 0 ? 0 : Math.pow(value, 2.2);
|
|
90
|
+
|
|
91
|
+
case TC_BT_470_B_G:
|
|
92
|
+
return value <= 0 ? 0 : Math.pow(value, 2.8);
|
|
93
|
+
|
|
94
|
+
case TC_SMPTE_428:
|
|
95
|
+
// defined as 48 nits out of a 52.37 nit projector, and that ratio is part of the
|
|
96
|
+
// standard rather than a rounding artefact
|
|
97
|
+
return Math.pow(value, 2.6) * (52.37 / 48.0);
|
|
98
|
+
|
|
99
|
+
case TC_LOG_100:
|
|
100
|
+
return value <= 0 ? 0 : Math.pow(10, (value - 1) * 2);
|
|
101
|
+
|
|
102
|
+
case TC_LOG_100_SQRT10:
|
|
103
|
+
return value <= 0 ? 0 : Math.pow(10, (value - 1) * 2.5);
|
|
104
|
+
|
|
105
|
+
case TC_SMPTE_240:
|
|
106
|
+
return value < 0.0913 ? value / 4.0 : Math.pow((value + 0.1115) / 1.1115, 1 / 0.45);
|
|
107
|
+
|
|
108
|
+
// BT.709 and everything sharing its curve, which is also what an unspecified or reserved
|
|
109
|
+
// code is taken to mean
|
|
110
|
+
case TC_BT_709:
|
|
111
|
+
case TC_BT_601:
|
|
112
|
+
case TC_BT_2020_10_BIT:
|
|
113
|
+
case TC_BT_2020_12_BIT:
|
|
114
|
+
case TC_BT_1361:
|
|
115
|
+
default:
|
|
116
|
+
return value < 0.081 ? value / 4.5 : Math.pow((value + 0.099) / 1.099, 1 / 0.45);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Decode a row of interleaved RGB to linear light, in place.
|
|
122
|
+
*
|
|
123
|
+
* @param {number} transfer_characteristics a `TC_*` code
|
|
124
|
+
* @param {Float32Array} row interleaved, `width * 3` long
|
|
125
|
+
* @param {number} width
|
|
126
|
+
*/
|
|
127
|
+
export function transfer_row_to_linear(transfer_characteristics, row, width) {
|
|
128
|
+
const count = width * 3;
|
|
129
|
+
|
|
130
|
+
if (transfer_characteristics === TC_LINEAR) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
for (let i = 0; i < count; i++) {
|
|
135
|
+
row[i] = transfer_to_linear(transfer_characteristics, row[i]);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (transfer_characteristics !== TC_HLG) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// the opto-optical transfer function, which takes HLG from scene to display referred. It scales
|
|
143
|
+
// all three channels by a power of the *scene luminance*, so it cannot be folded into the
|
|
144
|
+
// per-channel curve above
|
|
145
|
+
const scale = HLG_PEAK_NITS / LINEAR_REFERENCE_NITS;
|
|
146
|
+
|
|
147
|
+
for (let i = 0; i < count; i += 3) {
|
|
148
|
+
const luminance = 0.2627 * row[i] + 0.6780 * row[i + 1] + 0.0593 * row[i + 2];
|
|
149
|
+
|
|
150
|
+
const gain = luminance <= 0 ? 0 : Math.pow(luminance, 0.2) * scale;
|
|
151
|
+
|
|
152
|
+
row[i] *= gain;
|
|
153
|
+
row[i + 1] *= gain;
|
|
154
|
+
row[i + 2] *= gain;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Hybrid log-gamma's inverse opto-electronic transfer function.
|
|
160
|
+
*
|
|
161
|
+
* @param {number} value
|
|
162
|
+
* @returns {number} scene linear, `0 .. 1`
|
|
163
|
+
* @see ITU-R BT.2100 table 5
|
|
164
|
+
*/
|
|
165
|
+
function hlg_to_scene_linear(value) {
|
|
166
|
+
if (value <= 0.5) {
|
|
167
|
+
return (value * value) / 3;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return (Math.exp((value - HLG_C) / HLG_A) + HLG_B) / 12;
|
|
171
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expand one row of a subsampled chroma plane to full width.
|
|
3
|
+
*
|
|
4
|
+
* @param {Uint16Array} plane
|
|
5
|
+
* @param {number} stride
|
|
6
|
+
* @param {number} plane_width in chroma samples
|
|
7
|
+
* @param {number} plane_height in chroma samples
|
|
8
|
+
* @param {number} sub_x
|
|
9
|
+
* @param {number} sub_y
|
|
10
|
+
* @param {number} row the *luma* row wanted
|
|
11
|
+
* @param {number} width full width, in luma samples
|
|
12
|
+
* @param {number} mode one of the `UPSAMPLE_*` constants
|
|
13
|
+
* @param {Float32Array} destination at least `width` long
|
|
14
|
+
*
|
|
15
|
+
* @author Alex Goldring
|
|
16
|
+
* @copyright Company Named Limited (c) 2026
|
|
17
|
+
*/
|
|
18
|
+
export function upsample_chroma_row(plane: Uint16Array, stride: number, plane_width: number, plane_height: number, sub_x: number, sub_y: number, row: number, width: number, mode: number, destination: Float32Array): void;
|
|
19
|
+
/**
|
|
20
|
+
* Repeat the nearest chroma sample. What every fast decoder does, and what the reference decoder was
|
|
21
|
+
* driven with when the fixtures were minted.
|
|
22
|
+
* @type {number}
|
|
23
|
+
*/
|
|
24
|
+
export const UPSAMPLE_NEAREST: number;
|
|
25
|
+
/**
|
|
26
|
+
* Interpolate between chroma samples, treating each as centred on the luma samples it covers.
|
|
27
|
+
*
|
|
28
|
+
* The bitstream can signal where the chroma samples actually sit, but only for 4:2:0 and only as
|
|
29
|
+
* "left" or "top left"; in practice it is almost always left unknown. Centred is the choice that
|
|
30
|
+
* neither shifts the image nor favours one edge, which matters more here than matching any
|
|
31
|
+
* particular other decoder — nothing in the format makes one interpolation normative.
|
|
32
|
+
* @type {number}
|
|
33
|
+
*/
|
|
34
|
+
export const UPSAMPLE_BILINEAR: number;
|
|
35
|
+
//# sourceMappingURL=upsample_chroma_row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsample_chroma_row.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/upsample_chroma_row.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;GAgBG;AACH,2CAdW,WAAW,UACX,MAAM,eACN,MAAM,gBACN,MAAM,SACN,MAAM,SACN,MAAM,OACN,MAAM,SACN,MAAM,QACN,MAAM,eACN,YAAY,QAwDtB;AAtFD;;;;GAIG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;;;;;;GAQG;AACH,gCAFU,MAAM,CAEmB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { clamp_index } from "../../../core/math/clamp_index.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Repeat the nearest chroma sample. What every fast decoder does, and what the reference decoder was
|
|
5
|
+
* driven with when the fixtures were minted.
|
|
6
|
+
* @type {number}
|
|
7
|
+
*/
|
|
8
|
+
export const UPSAMPLE_NEAREST = 0;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Interpolate between chroma samples, treating each as centred on the luma samples it covers.
|
|
12
|
+
*
|
|
13
|
+
* The bitstream can signal where the chroma samples actually sit, but only for 4:2:0 and only as
|
|
14
|
+
* "left" or "top left"; in practice it is almost always left unknown. Centred is the choice that
|
|
15
|
+
* neither shifts the image nor favours one edge, which matters more here than matching any
|
|
16
|
+
* particular other decoder — nothing in the format makes one interpolation normative.
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
export const UPSAMPLE_BILINEAR = 1;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Expand one row of a subsampled chroma plane to full width.
|
|
23
|
+
*
|
|
24
|
+
* @param {Uint16Array} plane
|
|
25
|
+
* @param {number} stride
|
|
26
|
+
* @param {number} plane_width in chroma samples
|
|
27
|
+
* @param {number} plane_height in chroma samples
|
|
28
|
+
* @param {number} sub_x
|
|
29
|
+
* @param {number} sub_y
|
|
30
|
+
* @param {number} row the *luma* row wanted
|
|
31
|
+
* @param {number} width full width, in luma samples
|
|
32
|
+
* @param {number} mode one of the `UPSAMPLE_*` constants
|
|
33
|
+
* @param {Float32Array} destination at least `width` long
|
|
34
|
+
*
|
|
35
|
+
* @author Alex Goldring
|
|
36
|
+
* @copyright Company Named Limited (c) 2026
|
|
37
|
+
*/
|
|
38
|
+
export function upsample_chroma_row(plane, stride, plane_width, plane_height, sub_x, sub_y, row, width, mode, destination) {
|
|
39
|
+
if (sub_x === 0 && sub_y === 0) {
|
|
40
|
+
const offset = row * stride;
|
|
41
|
+
|
|
42
|
+
for (let x = 0; x < width; x++) {
|
|
43
|
+
destination[x] = plane[offset + x];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (mode === UPSAMPLE_NEAREST) {
|
|
50
|
+
const offset = (row >> sub_y) * stride;
|
|
51
|
+
|
|
52
|
+
for (let x = 0; x < width; x++) {
|
|
53
|
+
const sample_x = x >> sub_x;
|
|
54
|
+
|
|
55
|
+
destination[x] = plane[offset + (sample_x < plane_width ? sample_x : plane_width - 1)];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// vertical position of this luma row within the chroma grid, as a sample index plus a fraction
|
|
62
|
+
const source_y = sub_y === 0 ? row : (row - 0.5) * 0.5;
|
|
63
|
+
|
|
64
|
+
const top = Math.floor(source_y);
|
|
65
|
+
const weight_y = source_y - top;
|
|
66
|
+
|
|
67
|
+
const row_top = clamp_index(top, plane_height) * stride;
|
|
68
|
+
const row_bottom = clamp_index(top + 1, plane_height) * stride;
|
|
69
|
+
|
|
70
|
+
for (let x = 0; x < width; x++) {
|
|
71
|
+
const source_x = sub_x === 0 ? x : (x - 0.5) * 0.5;
|
|
72
|
+
|
|
73
|
+
const left = Math.floor(source_x);
|
|
74
|
+
const weight_x = source_x - left;
|
|
75
|
+
|
|
76
|
+
const column_left = clamp_index(left, plane_width);
|
|
77
|
+
const column_right = clamp_index(left + 1, plane_width);
|
|
78
|
+
|
|
79
|
+
const top_left = plane[row_top + column_left];
|
|
80
|
+
const top_right = plane[row_top + column_right];
|
|
81
|
+
const bottom_left = plane[row_bottom + column_left];
|
|
82
|
+
const bottom_right = plane[row_bottom + column_right];
|
|
83
|
+
|
|
84
|
+
const above = top_left + (top_right - top_left) * weight_x;
|
|
85
|
+
const below = bottom_left + (bottom_right - bottom_left) * weight_x;
|
|
86
|
+
|
|
87
|
+
destination[x] = above + (below - above) * weight_y;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert one row of coded samples to normalised R, G and B.
|
|
3
|
+
*
|
|
4
|
+
* The chroma rows are already at full width — subsampling is the upsampler's problem, not this
|
|
5
|
+
* one's — and are floats because interpolation puts chroma between coded values.
|
|
6
|
+
*
|
|
7
|
+
* Output is clamped to `0 .. 1`. Chroma is coded independently of luma, so a lossy stream can ask
|
|
8
|
+
* for colours outside the cube; a display cannot show them and every later stage assumes it is in
|
|
9
|
+
* range.
|
|
10
|
+
*
|
|
11
|
+
* @param {ColourTransform} transform
|
|
12
|
+
* @param {Uint16Array} luma
|
|
13
|
+
* @param {number} luma_offset index of the first sample of the row
|
|
14
|
+
* @param {Float32Array} cb full width, in sample units
|
|
15
|
+
* @param {Float32Array} cr
|
|
16
|
+
* @param {number} width
|
|
17
|
+
* @param {Float32Array} destination `width * 3` long, interleaved
|
|
18
|
+
*
|
|
19
|
+
* @author Alex Goldring
|
|
20
|
+
* @copyright Company Named Limited (c) 2026
|
|
21
|
+
*/
|
|
22
|
+
export function ycbcr_row_to_rgb(transform: ColourTransform, luma: Uint16Array, luma_offset: number, cb: Float32Array, cr: Float32Array, width: number, destination: Float32Array): void;
|
|
23
|
+
//# sourceMappingURL=ycbcr_row_to_rgb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ycbcr_row_to_rgb.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/ycbcr_row_to_rgb.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,mEAVW,WAAW,eACX,MAAM,MACN,YAAY,MACZ,YAAY,SACZ,MAAM,eACN,YAAY,QA0DtB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { clamp01 } from "../../../core/math/clamp01.js";
|
|
2
|
+
import { CONVERSION_IDENTITY, CONVERSION_YCGCO } from "./ColourTransform.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Convert one row of coded samples to normalised R, G and B.
|
|
6
|
+
*
|
|
7
|
+
* The chroma rows are already at full width — subsampling is the upsampler's problem, not this
|
|
8
|
+
* one's — and are floats because interpolation puts chroma between coded values.
|
|
9
|
+
*
|
|
10
|
+
* Output is clamped to `0 .. 1`. Chroma is coded independently of luma, so a lossy stream can ask
|
|
11
|
+
* for colours outside the cube; a display cannot show them and every later stage assumes it is in
|
|
12
|
+
* range.
|
|
13
|
+
*
|
|
14
|
+
* @param {ColourTransform} transform
|
|
15
|
+
* @param {Uint16Array} luma
|
|
16
|
+
* @param {number} luma_offset index of the first sample of the row
|
|
17
|
+
* @param {Float32Array} cb full width, in sample units
|
|
18
|
+
* @param {Float32Array} cr
|
|
19
|
+
* @param {number} width
|
|
20
|
+
* @param {Float32Array} destination `width * 3` long, interleaved
|
|
21
|
+
*
|
|
22
|
+
* @author Alex Goldring
|
|
23
|
+
* @copyright Company Named Limited (c) 2026
|
|
24
|
+
*/
|
|
25
|
+
export function ycbcr_row_to_rgb(transform, luma, luma_offset, cb, cr, width, destination) {
|
|
26
|
+
const y_offset = transform.y_offset;
|
|
27
|
+
const y_scale = transform.y_scale;
|
|
28
|
+
const c_offset = transform.c_offset;
|
|
29
|
+
const c_scale = transform.c_scale;
|
|
30
|
+
|
|
31
|
+
if (transform.kind === CONVERSION_IDENTITY) {
|
|
32
|
+
// the planes are G, B and R already, and share the luma normalisation
|
|
33
|
+
for (let x = 0; x < width; x++) {
|
|
34
|
+
const i = x * 3;
|
|
35
|
+
|
|
36
|
+
destination[i] = clamp01((cr[x] - y_offset) * y_scale);
|
|
37
|
+
destination[i + 1] = clamp01((luma[luma_offset + x] - y_offset) * y_scale);
|
|
38
|
+
destination[i + 2] = clamp01((cb[x] - y_offset) * y_scale);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (transform.kind === CONVERSION_YCGCO) {
|
|
45
|
+
for (let x = 0; x < width; x++) {
|
|
46
|
+
const y = (luma[luma_offset + x] - y_offset) * y_scale;
|
|
47
|
+
const cg = (cb[x] - c_offset) * c_scale;
|
|
48
|
+
const co = (cr[x] - c_offset) * c_scale;
|
|
49
|
+
|
|
50
|
+
const t = y - cg;
|
|
51
|
+
|
|
52
|
+
const i = x * 3;
|
|
53
|
+
|
|
54
|
+
destination[i] = clamp01(t + co);
|
|
55
|
+
destination[i + 1] = clamp01(y + cg);
|
|
56
|
+
destination[i + 2] = clamp01(t - co);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const cr_to_r = transform.cr_to_r;
|
|
63
|
+
const cb_to_g = transform.cb_to_g;
|
|
64
|
+
const cr_to_g = transform.cr_to_g;
|
|
65
|
+
const cb_to_b = transform.cb_to_b;
|
|
66
|
+
|
|
67
|
+
for (let x = 0; x < width; x++) {
|
|
68
|
+
const y = (luma[luma_offset + x] - y_offset) * y_scale;
|
|
69
|
+
const u = (cb[x] - c_offset) * c_scale;
|
|
70
|
+
const v = (cr[x] - c_offset) * c_scale;
|
|
71
|
+
|
|
72
|
+
const i = x * 3;
|
|
73
|
+
|
|
74
|
+
destination[i] = clamp01(y + cr_to_r * v);
|
|
75
|
+
destination[i + 1] = clamp01(y + cb_to_g * u + cr_to_g * v);
|
|
76
|
+
destination[i + 2] = clamp01(y + cb_to_b * u);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsed model of an AVIF file.
|
|
3
|
+
*
|
|
4
|
+
* The structs here mirror the file rather than the image: `parse_avif_file` fills them in, and
|
|
5
|
+
* everything above it — deciding which item is the picture, resolving a grid, finding the alpha
|
|
6
|
+
* plane — works from this model instead of re-walking boxes.
|
|
7
|
+
*
|
|
8
|
+
* @see ISO/IEC 23008-12 "HEIF"
|
|
9
|
+
* @see ISO/IEC 23000-22 "AVIF"
|
|
10
|
+
*
|
|
11
|
+
* @author Alex Goldring
|
|
12
|
+
* @copyright Company Named Limited (c) 2026
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* One extent of an item's data. Items may be stored in pieces, and the pieces may be anywhere.
|
|
16
|
+
*/
|
|
17
|
+
export class ItemExtent {
|
|
18
|
+
/** @type {number} absolute offset, once `base_offset` and the construction method are applied */
|
|
19
|
+
offset: number;
|
|
20
|
+
/** @type {number} */
|
|
21
|
+
length: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* How an item's extent offsets should be interpreted.
|
|
25
|
+
*/
|
|
26
|
+
export type ConstructionMethod = number;
|
|
27
|
+
export namespace ConstructionMethod {
|
|
28
|
+
let FILE_OFFSET: number;
|
|
29
|
+
let IDAT_OFFSET: number;
|
|
30
|
+
let ITEM_OFFSET: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* One item from `iinf` / `iloc`.
|
|
34
|
+
*/
|
|
35
|
+
export class AvifItem {
|
|
36
|
+
/** @type {number} */
|
|
37
|
+
id: number;
|
|
38
|
+
/** @type {string} four character item type: `av01`, `grid`, `Exif`, `mime`, `tmap`, … */
|
|
39
|
+
item_type: string;
|
|
40
|
+
/** @type {string} */
|
|
41
|
+
item_name: string;
|
|
42
|
+
/** @type {string} for `mime` items */
|
|
43
|
+
content_type: string;
|
|
44
|
+
/** @type {number} @see ConstructionMethod */
|
|
45
|
+
construction_method: number;
|
|
46
|
+
/** @type {number} */
|
|
47
|
+
data_reference_index: number;
|
|
48
|
+
/** @type {number} */
|
|
49
|
+
base_offset: number;
|
|
50
|
+
/** @type {ItemExtent[]} */
|
|
51
|
+
extents: ItemExtent[];
|
|
52
|
+
/** @type {number[]} 1-based indices into {@link AvifFile.properties} */
|
|
53
|
+
property_indices: number[];
|
|
54
|
+
/** @type {boolean[]} parallel to {@link property_indices} */
|
|
55
|
+
property_essential: boolean[];
|
|
56
|
+
/** @type {boolean} set from `iinf`'s per-entry hidden flag */
|
|
57
|
+
hidden: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* One `iref` entry: a typed reference from one item to several others.
|
|
61
|
+
*/
|
|
62
|
+
export class ItemReference {
|
|
63
|
+
/** @type {string} four character reference type: `dimg`, `auxl`, `thmb`, `cdsc`, `prem`, … */
|
|
64
|
+
reference_type: string;
|
|
65
|
+
/** @type {number} */
|
|
66
|
+
from_item_id: number;
|
|
67
|
+
/** @type {number[]} */
|
|
68
|
+
to_item_ids: number[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The `grid` derived-image payload. Not a box: this is the item's own data.
|
|
72
|
+
*/
|
|
73
|
+
export class ImageGrid {
|
|
74
|
+
/** @type {number} */
|
|
75
|
+
rows: number;
|
|
76
|
+
/** @type {number} */
|
|
77
|
+
columns: number;
|
|
78
|
+
/** @type {number} */
|
|
79
|
+
output_width: number;
|
|
80
|
+
/** @type {number} */
|
|
81
|
+
output_height: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A whole parsed file.
|
|
85
|
+
*/
|
|
86
|
+
export class AvifFile {
|
|
87
|
+
/** @type {string} */
|
|
88
|
+
major_brand: string;
|
|
89
|
+
/** @type {number} */
|
|
90
|
+
minor_version: number;
|
|
91
|
+
/** @type {string[]} */
|
|
92
|
+
compatible_brands: string[];
|
|
93
|
+
/** @type {number} `0` when `pitm` is absent */
|
|
94
|
+
primary_item_id: number;
|
|
95
|
+
/** @type {Map<number, AvifItem>} */
|
|
96
|
+
items: Map<number, AvifItem>;
|
|
97
|
+
/**
|
|
98
|
+
* Properties from `ipco`, in file order. `ipma` indices are 1-based, so index `0` here
|
|
99
|
+
* corresponds to property index `1`.
|
|
100
|
+
* @type {object[]}
|
|
101
|
+
*/
|
|
102
|
+
properties: object[];
|
|
103
|
+
/** @type {ItemReference[]} */
|
|
104
|
+
references: ItemReference[];
|
|
105
|
+
/** @type {Uint8Array|null} the `idat` payload, for construction method 1 */
|
|
106
|
+
item_data: Uint8Array | null;
|
|
107
|
+
/** @type {Uint8Array} the whole file, so item extents can be resolved against it */
|
|
108
|
+
bytes: Uint8Array;
|
|
109
|
+
/** @type {boolean} true when a `moov` box is present, i.e. this is an image sequence */
|
|
110
|
+
has_image_sequence: boolean;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=AvifFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvifFile.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/heif/AvifFile.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH;IACI,iGAAiG;IACjG,QADW,MAAM,CACN;IAEX,qBAAqB;IACrB,QADW,MAAM,CACN;CACd;;;;iCAIS,MAAM;;;;;;AAQhB;;GAEG;AACH;IACI,qBAAqB;IACrB,IADW,MAAM,CACV;IAEP,yFAAyF;IACzF,WADW,MAAM,CACF;IAEf,qBAAqB;IACrB,WADW,MAAM,CACF;IAEf,sCAAsC;IACtC,cADW,MAAM,CACC;IAElB,6CAA6C;IAC7C,qBADW,MAAM,CACoC;IAErD,qBAAqB;IACrB,sBADW,MAAM,CACQ;IAEzB,qBAAqB;IACrB,aADW,MAAM,CACD;IAEhB,2BAA2B;IAC3B,SADW,UAAU,EAAE,CACV;IAEb,wEAAwE;IACxE,kBADW,MAAM,EAAE,CACG;IAEtB,6DAA6D;IAC7D,oBADW,OAAO,EAAE,CACI;IAExB,8DAA8D;IAC9D,QADW,OAAO,CACH;CAClB;AAED;;GAEG;AACH;IACI,8FAA8F;IAC9F,gBADW,MAAM,CACG;IAEpB,qBAAqB;IACrB,cADW,MAAM,CACA;IAEjB,uBAAuB;IACvB,aADW,MAAM,EAAE,CACF;CACpB;AAED;;GAEG;AACH;IACI,qBAAqB;IACrB,MADW,MAAM,CACR;IAET,qBAAqB;IACrB,SADW,MAAM,CACL;IAEZ,qBAAqB;IACrB,cADW,MAAM,CACA;IAEjB,qBAAqB;IACrB,eADW,MAAM,CACC;CACrB;AAED;;GAEG;AACH;IACI,qBAAqB;IACrB,aADW,MAAM,CACA;IAEjB,qBAAqB;IACrB,eADW,MAAM,CACC;IAElB,uBAAuB;IACvB,mBADW,MAAM,EAAE,CACI;IAEvB,+CAA+C;IAC/C,iBADW,MAAM,CACG;IAEpB,oCAAoC;IACpC,OADW,IAAI,MAAM,EAAE,QAAQ,CAAC,CACd;IAElB;;;;OAIG;IACH,YAFU,MAAM,EAAE,CAEF;IAEhB,8BAA8B;IAC9B,YADW,aAAa,EAAE,CACV;IAEhB,4EAA4E;IAC5E,WADW,UAAU,GAAC,IAAI,CACT;IAEjB,oFAAoF;IACpF,OADW,UAAU,CACK;IAE1B,wFAAwF;IACxF,oBADW,OAAO,CACS;CAC9B"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsed model of an AVIF file.
|
|
3
|
+
*
|
|
4
|
+
* The structs here mirror the file rather than the image: `parse_avif_file` fills them in, and
|
|
5
|
+
* everything above it — deciding which item is the picture, resolving a grid, finding the alpha
|
|
6
|
+
* plane — works from this model instead of re-walking boxes.
|
|
7
|
+
*
|
|
8
|
+
* @see ISO/IEC 23008-12 "HEIF"
|
|
9
|
+
* @see ISO/IEC 23000-22 "AVIF"
|
|
10
|
+
*
|
|
11
|
+
* @author Alex Goldring
|
|
12
|
+
* @copyright Company Named Limited (c) 2026
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* One extent of an item's data. Items may be stored in pieces, and the pieces may be anywhere.
|
|
17
|
+
*/
|
|
18
|
+
export class ItemExtent {
|
|
19
|
+
/** @type {number} absolute offset, once `base_offset` and the construction method are applied */
|
|
20
|
+
offset = 0;
|
|
21
|
+
|
|
22
|
+
/** @type {number} */
|
|
23
|
+
length = 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* How an item's extent offsets should be interpreted.
|
|
28
|
+
* @enum {number}
|
|
29
|
+
*/
|
|
30
|
+
export const ConstructionMethod = {
|
|
31
|
+
FILE_OFFSET: 0,
|
|
32
|
+
IDAT_OFFSET: 1,
|
|
33
|
+
ITEM_OFFSET: 2
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* One item from `iinf` / `iloc`.
|
|
38
|
+
*/
|
|
39
|
+
export class AvifItem {
|
|
40
|
+
/** @type {number} */
|
|
41
|
+
id = 0;
|
|
42
|
+
|
|
43
|
+
/** @type {string} four character item type: `av01`, `grid`, `Exif`, `mime`, `tmap`, … */
|
|
44
|
+
item_type = "";
|
|
45
|
+
|
|
46
|
+
/** @type {string} */
|
|
47
|
+
item_name = "";
|
|
48
|
+
|
|
49
|
+
/** @type {string} for `mime` items */
|
|
50
|
+
content_type = "";
|
|
51
|
+
|
|
52
|
+
/** @type {number} @see ConstructionMethod */
|
|
53
|
+
construction_method = ConstructionMethod.FILE_OFFSET;
|
|
54
|
+
|
|
55
|
+
/** @type {number} */
|
|
56
|
+
data_reference_index = 0;
|
|
57
|
+
|
|
58
|
+
/** @type {number} */
|
|
59
|
+
base_offset = 0;
|
|
60
|
+
|
|
61
|
+
/** @type {ItemExtent[]} */
|
|
62
|
+
extents = [];
|
|
63
|
+
|
|
64
|
+
/** @type {number[]} 1-based indices into {@link AvifFile.properties} */
|
|
65
|
+
property_indices = [];
|
|
66
|
+
|
|
67
|
+
/** @type {boolean[]} parallel to {@link property_indices} */
|
|
68
|
+
property_essential = [];
|
|
69
|
+
|
|
70
|
+
/** @type {boolean} set from `iinf`'s per-entry hidden flag */
|
|
71
|
+
hidden = false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* One `iref` entry: a typed reference from one item to several others.
|
|
76
|
+
*/
|
|
77
|
+
export class ItemReference {
|
|
78
|
+
/** @type {string} four character reference type: `dimg`, `auxl`, `thmb`, `cdsc`, `prem`, … */
|
|
79
|
+
reference_type = "";
|
|
80
|
+
|
|
81
|
+
/** @type {number} */
|
|
82
|
+
from_item_id = 0;
|
|
83
|
+
|
|
84
|
+
/** @type {number[]} */
|
|
85
|
+
to_item_ids = [];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The `grid` derived-image payload. Not a box: this is the item's own data.
|
|
90
|
+
*/
|
|
91
|
+
export class ImageGrid {
|
|
92
|
+
/** @type {number} */
|
|
93
|
+
rows = 1;
|
|
94
|
+
|
|
95
|
+
/** @type {number} */
|
|
96
|
+
columns = 1;
|
|
97
|
+
|
|
98
|
+
/** @type {number} */
|
|
99
|
+
output_width = 0;
|
|
100
|
+
|
|
101
|
+
/** @type {number} */
|
|
102
|
+
output_height = 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* A whole parsed file.
|
|
107
|
+
*/
|
|
108
|
+
export class AvifFile {
|
|
109
|
+
/** @type {string} */
|
|
110
|
+
major_brand = "";
|
|
111
|
+
|
|
112
|
+
/** @type {number} */
|
|
113
|
+
minor_version = 0;
|
|
114
|
+
|
|
115
|
+
/** @type {string[]} */
|
|
116
|
+
compatible_brands = [];
|
|
117
|
+
|
|
118
|
+
/** @type {number} `0` when `pitm` is absent */
|
|
119
|
+
primary_item_id = 0;
|
|
120
|
+
|
|
121
|
+
/** @type {Map<number, AvifItem>} */
|
|
122
|
+
items = new Map();
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Properties from `ipco`, in file order. `ipma` indices are 1-based, so index `0` here
|
|
126
|
+
* corresponds to property index `1`.
|
|
127
|
+
* @type {object[]}
|
|
128
|
+
*/
|
|
129
|
+
properties = [];
|
|
130
|
+
|
|
131
|
+
/** @type {ItemReference[]} */
|
|
132
|
+
references = [];
|
|
133
|
+
|
|
134
|
+
/** @type {Uint8Array|null} the `idat` payload, for construction method 1 */
|
|
135
|
+
item_data = null;
|
|
136
|
+
|
|
137
|
+
/** @type {Uint8Array} the whole file, so item extents can be resolved against it */
|
|
138
|
+
bytes = new Uint8Array(0);
|
|
139
|
+
|
|
140
|
+
/** @type {boolean} true when a `moov` box is present, i.e. this is an image sequence */
|
|
141
|
+
has_image_sequence = false;
|
|
142
|
+
}
|