| 390 | } |
| 391 | |
| 392 | bool basis_compressor::init(const basis_compressor_params ¶ms) |
| 393 | { |
| 394 | debug_printf("basis_compressor::init\n"); |
| 395 | |
| 396 | if (!g_library_initialized) |
| 397 | { |
| 398 | error_printf("basis_compressor::init: basisu_encoder_init() MUST be called before using any encoder functionality!\n"); |
| 399 | return false; |
| 400 | } |
| 401 | |
| 402 | if (!params.m_pJob_pool) |
| 403 | { |
| 404 | error_printf("basis_compressor::init: A non-null job_pool pointer must be specified\n"); |
| 405 | return false; |
| 406 | } |
| 407 | |
| 408 | m_params = params; |
| 409 | |
| 410 | if ((m_params.m_compute_stats) && (!m_params.m_validate_output_data)) |
| 411 | m_params.m_validate_output_data = true; |
| 412 | |
| 413 | m_hdr_image_scale = 1.0f; |
| 414 | m_ldr_to_hdr_upconversion_nit_multiplier = 1.0f; |
| 415 | m_upconverted_any_ldr_images = false; |
| 416 | |
| 417 | m_total_slice_orig_texels = 0; |
| 418 | m_basis_file_size = 0; |
| 419 | m_basis_bits_per_texel = 0.0f; |
| 420 | m_ktx2_file_size = 0; |
| 421 | m_ktx2_bits_per_texel = 0.0f; |
| 422 | |
| 423 | check_for_hdr_inputs(); |
| 424 | |
| 425 | if (m_params.m_hdr) |
| 426 | { |
| 427 | if ((m_params.m_debug) && (m_params.m_ktx2_and_basis_srgb_transfer_function) && (m_params.m_ktx2_and_basis_srgb_transfer_function.was_changed())) |
| 428 | { |
| 429 | debug_printf("Warning: m_ktx2_and_basis_srgb_transfer_function being forced to false in HDR mode (we always write linear KTX2/.basis files in HDR mode)\n"); |
| 430 | } |
| 431 | |
| 432 | // Always slam m_ktx2_and_basis_srgb_transfer_function on HDR inputs. We always write linear to KTX2 and .basis for HDR outputs. |
| 433 | m_params.m_ktx2_and_basis_srgb_transfer_function = false; |
| 434 | } |
| 435 | |
| 436 | if (m_params.m_debug) |
| 437 | { |
| 438 | debug_printf("\nbasis_compressor::init:\n"); |
| 439 | |
| 440 | #define PRINT_BOOL_VALUE(v) fmt_debug_printf("{}: {} {}\n", BASISU_STRINGIZE2(v), static_cast<bool>(m_params.v), m_params.v.was_changed()); |
| 441 | #define PRINT_INT_VALUE(v) fmt_debug_printf("{}: {} {}\n", BASISU_STRINGIZE2(v), static_cast<int>(m_params.v), m_params.v.was_changed()); |
| 442 | #define PRINT_UINT_VALUE(v) fmt_debug_printf("{}: {} {}\n", BASISU_STRINGIZE2(v), static_cast<uint32_t>(m_params.v), m_params.v.was_changed()); |
| 443 | #define PRINT_FLOAT_VALUE(v) fmt_debug_printf("{}: {} {}\n", BASISU_STRINGIZE2(v), static_cast<float>(m_params.v), m_params.v.was_changed()); |
| 444 | |
| 445 | fmt_debug_printf("Source LDR images: {}, HDR images: {}, filenames: {}, alpha filenames: {}, LDR mipmap images: {}, HDR mipmap images: {}\n", |
| 446 | (uint64_t)m_params.m_source_images.size(), (uint64_t)m_params.m_source_images_hdr.size(), |
| 447 | (uint64_t)m_params.m_source_filenames.size(), (uint64_t)m_params.m_source_alpha_filenames.size(), |
| 448 | (uint64_t)m_params.m_source_mipmap_images.size(), (uint64_t)m_params.m_source_mipmap_images_hdr.size()); |
| 449 |
no test coverage detected