Add implementation for loading interchange texture formats with multiple runtime formats support
217 lines
8.2 KiB
C
217 lines
8.2 KiB
C
// 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 0
|
|
int channel0, int channel1, // both default to -1
|
|
uint64_t state_handle); // thread local state: can be 0, or bt_ktx2_create_transcode_state()
|
|
|