vcomp/cmpto_j2k: move pool setting to a sep func

The logic is a bit tricky so separate it to a separate func.

just a refactor
This commit is contained in:
Martin Pulec
2024-09-03 11:48:51 +02:00
parent f613056481
commit 1cffc72fa8

View File

@@ -188,6 +188,30 @@ static struct {
{R12L, CMPTO_444_U12_MSB16LE_P012, RG48, r12l_to_rg48_cuda},
};
static void
set_pool(struct state_video_compress_j2k *s)
{
s->pool_in_device_memory = false;
#ifdef HAVE_CUDA
if (cuda_devices_count == 1) {
s->pool_in_device_memory = true;
s->pool = video_frame_pool(
s->max_in_frames,
cmpto_j2k_enc_cuda_buffer_data_allocator<
cuda_wrapper_malloc, cuda_wrapper_free>());
return;
}
MSG(WARNING, "More than 1 CUDA device will use CPU buffers and "
"conversion...\n");
s->pool = video_frame_pool(
s->max_in_frames,
cmpto_j2k_enc_cuda_buffer_data_allocator<cuda_wrapper_malloc_host,
cuda_wrapper_free_host>());
#else
s->pool = video_frame_pool(s->max_in_frames, default_data_allocator());
#endif
}
static bool configure_with(struct state_video_compress_j2k *s, struct video_desc desc){
enum cmpto_sample_format_type sample_format;
bool found = false;
@@ -238,25 +262,7 @@ static bool configure_with(struct state_video_compress_j2k *s, struct video_desc
"Setting MCT",
NOOP);
s->pool_in_device_memory = false;
#ifdef HAVE_CUDA
if (cuda_devices_count == 1) {
s->pool_in_device_memory = true;
s->pool = video_frame_pool(
s->max_in_frames,
cmpto_j2k_enc_cuda_buffer_data_allocator<
cuda_wrapper_malloc, cuda_wrapper_free>());
} else {
MSG(WARNING, "More than 1 CUDA device will use CPU buffers and "
"conversion...\n");
s->pool = video_frame_pool(
s->max_in_frames,
cmpto_j2k_enc_cuda_buffer_data_allocator<
cuda_wrapper_malloc_host, cuda_wrapper_free_host>());
}
#else
s->pool = video_frame_pool(s->max_in_frames, default_data_allocator());
#endif
set_pool(s);
s->compressed_desc = desc;
s->compressed_desc.color_spec = codec_is_a_rgb(desc.color_spec) ? J2KR : J2K;