From 5a5d8ae6c8208b679777f1bb614006ff72f25bce Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Tue, 7 Jan 2025 15:30:55 +0100 Subject: [PATCH] encoder: add convenience input sett. alternatives Add function returning gpujpeg_encoder_input structure for convenience, mostly to make tools like clang-tidy happy that the struct is initialized when defined. It is much better than tempting user to use something like (`= { 0 }`) to suppress the warning. Also this can be used in C++ brace-or-equal or class initializer section. --- libgpujpeg/gpujpeg_common.h | 1 + libgpujpeg/gpujpeg_encoder.h | 13 +++++++++++++ src/gpujpeg_encoder.c | 24 ++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/libgpujpeg/gpujpeg_common.h b/libgpujpeg/gpujpeg_common.h index 276a0418..5aef7e93 100644 --- a/libgpujpeg/gpujpeg_common.h +++ b/libgpujpeg/gpujpeg_common.h @@ -213,6 +213,7 @@ struct gpujpeg_parameters * * @param param Parameters for JPEG coder * @return void + * @sa gpujpeg_default_parameters */ GPUJPEG_API void gpujpeg_set_default_parameters(struct gpujpeg_parameters* param); diff --git a/libgpujpeg/gpujpeg_encoder.h b/libgpujpeg/gpujpeg_encoder.h index c144947e..b42008cd 100644 --- a/libgpujpeg/gpujpeg_encoder.h +++ b/libgpujpeg/gpujpeg_encoder.h @@ -72,6 +72,7 @@ struct gpujpeg_encoder_input * @param encoder_input Encoder input structure * @param image Input image data * @return void + * @sa gpujpeg_encoder_input_image */ GPUJPEG_API void gpujpeg_encoder_input_set_image(struct gpujpeg_encoder_input* input, uint8_t* image); @@ -82,6 +83,7 @@ gpujpeg_encoder_input_set_image(struct gpujpeg_encoder_input* input, uint8_t* im * @param encoder_input Encoder input structure * @param image GPU image data * @return void + * @sa gpujpeg_encoder_input_gpu_image */ GPUJPEG_API void gpujpeg_encoder_input_set_gpu_image(struct gpujpeg_encoder_input* input, uint8_t* image); @@ -92,10 +94,21 @@ gpujpeg_encoder_input_set_gpu_image(struct gpujpeg_encoder_input* input, uint8_t * @param encoder_input Encoder input structure * @param texture_id OpenGL texture id * @return void + * @sa gpujpeg_encoder_input_set_texture */ GPUJPEG_API void gpujpeg_encoder_input_set_texture(struct gpujpeg_encoder_input* input, struct gpujpeg_opengl_texture* texture); +/// alternative to @ref gpujpeg_encoder_input_set_image returning the struct as a return value +GPUJPEG_API struct gpujpeg_encoder_input +gpujpeg_encoder_input_image(uint8_t* image); +/// alternative to @ref gpujpeg_encoder_input_set_gpu_image returning the struct as a return value +GPUJPEG_API struct gpujpeg_encoder_input +gpujpeg_encoder_input_gpu_image(uint8_t* image); +/// alternative to @ref gpujpeg_encoder_input_set_texture returning the struct as a return value +GPUJPEG_API struct gpujpeg_encoder_input +gpujpeg_encoder_input_texture(struct gpujpeg_opengl_texture* texture); + /** * Create JPEG encoder * diff --git a/src/gpujpeg_encoder.c b/src/gpujpeg_encoder.c index be11da93..b316af1e 100644 --- a/src/gpujpeg_encoder.c +++ b/src/gpujpeg_encoder.c @@ -69,6 +69,30 @@ gpujpeg_encoder_input_set_texture(struct gpujpeg_encoder_input* input, struct gp input->texture = texture; } +struct gpujpeg_encoder_input +gpujpeg_encoder_input_image(uint8_t* image) +{ + struct gpujpeg_encoder_input ret; + gpujpeg_encoder_input_set_image(&ret, image); + return ret; +} + +struct gpujpeg_encoder_input +gpujpeg_encoder_input_gpu_image(uint8_t* image) +{ + struct gpujpeg_encoder_input ret; + gpujpeg_encoder_input_set_gpu_image(&ret, image); + return ret; +} + +struct gpujpeg_encoder_input +gpujpeg_encoder_input_texture(struct gpujpeg_opengl_texture* texture) +{ + struct gpujpeg_encoder_input ret; + gpujpeg_encoder_input_set_texture(&ret, texture); + return ret; +} + /* Documented at declaration */ struct gpujpeg_encoder* gpujpeg_encoder_create(cudaStream_t stream)