feat(image_decoder): remove args for open_cb (#5402)
This commit is contained in:
@@ -155,7 +155,7 @@ lv_result_t lv_image_decoder_open(lv_image_decoder_dsc_t * dsc, const void * src
|
|||||||
if(try_cache(dsc) == LV_RESULT_OK) return LV_RESULT_OK;
|
if(try_cache(dsc) == LV_RESULT_OK) return LV_RESULT_OK;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
res = decoder->open_cb(decoder, dsc, args);
|
res = decoder->open_cb(decoder, dsc);
|
||||||
|
|
||||||
/*Opened successfully. It is a good decoder for this image source*/
|
/*Opened successfully. It is a good decoder for this image source*/
|
||||||
if(res == LV_RESULT_OK) return res;
|
if(res == LV_RESULT_OK) return res;
|
||||||
|
|||||||
@@ -79,11 +79,8 @@ typedef lv_result_t (*lv_image_decoder_info_f_t)(lv_image_decoder_t * decoder, c
|
|||||||
* Open an image for decoding. Prepare it as it is required to read it later
|
* Open an image for decoding. Prepare it as it is required to read it later
|
||||||
* @param decoder pointer to the decoder the function associated with
|
* @param decoder pointer to the decoder the function associated with
|
||||||
* @param dsc pointer to decoder descriptor. `src`, `color` are already initialized in it.
|
* @param dsc pointer to decoder descriptor. `src`, `color` are already initialized in it.
|
||||||
* @param args arguments of how to decode the image. see `lv_image_decoder_args_t`.
|
|
||||||
*/
|
*/
|
||||||
typedef lv_result_t (*lv_image_decoder_open_f_t)(lv_image_decoder_t * decoder,
|
typedef lv_result_t (*lv_image_decoder_open_f_t)(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
lv_image_decoder_dsc_t * dsc,
|
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decode `len` pixels starting from the given `x`, `y` coordinates and store them in `buf`.
|
* Decode `len` pixels starting from the given `x`, `y` coordinates and store them in `buf`.
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ typedef struct {
|
|||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
static void decoder_cache_free(lv_image_cache_data_t * cached_data, void * user_data);
|
static void decoder_cache_free(lv_image_cache_data_t * cached_data, void * user_data);
|
||||||
static void image_try_self_pre_mul(lv_image_decoder_dsc_t * dsc);
|
static void image_try_self_pre_mul(lv_image_decoder_dsc_t * dsc);
|
||||||
@@ -367,10 +366,14 @@ failed:
|
|||||||
return LV_RESULT_INVALID;
|
return LV_RESULT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
/**
|
||||||
const lv_image_decoder_args_t * args)
|
* Decode an image using the vg_lite gpu.
|
||||||
|
* @param decoder pointer to the decoder
|
||||||
|
* @param dsc pointer to the decoder descriptor
|
||||||
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
|
*/
|
||||||
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
{
|
{
|
||||||
LV_UNUSED(args); /*Unused*/
|
|
||||||
|
|
||||||
lv_result_t res = LV_RESULT_INVALID;
|
lv_result_t res = LV_RESULT_INVALID;
|
||||||
|
|
||||||
|
|||||||
@@ -167,11 +167,15 @@ lv_result_t lv_bin_decoder_info(lv_image_decoder_t * decoder, const void * src,
|
|||||||
return LV_RESULT_OK;
|
return LV_RESULT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_result_t lv_bin_decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
/**
|
||||||
const lv_image_decoder_args_t * args)
|
* Decode an image from a binary file
|
||||||
|
* @param decoder pointer to the decoder
|
||||||
|
* @param dsc pointer to the decoder descriptor
|
||||||
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
|
*/
|
||||||
|
lv_result_t lv_bin_decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder);
|
LV_UNUSED(decoder);
|
||||||
LV_UNUSED(args);
|
|
||||||
|
|
||||||
lv_fs_res_t res = LV_RESULT_INVALID;
|
lv_fs_res_t res = LV_RESULT_INVALID;
|
||||||
bool use_directly = false; /*If the image is already decoded and can be used directly*/
|
bool use_directly = false; /*If the image is already decoded and can be used directly*/
|
||||||
|
|||||||
@@ -50,8 +50,7 @@ lv_result_t lv_bin_decoder_get_area(lv_image_decoder_t * decoder, lv_image_decod
|
|||||||
* @param dsc pointer to decoder descriptor. `src`, `style` are already initialized in it.
|
* @param dsc pointer to decoder descriptor. `src`, `style` are already initialized in it.
|
||||||
* @return LV_RESULT_OK: the info is successfully stored in `header`; LV_RESULT_INVALID: unknown format or other error.
|
* @return LV_RESULT_OK: the info is successfully stored in `header`; LV_RESULT_INVALID: unknown format or other error.
|
||||||
*/
|
*/
|
||||||
lv_result_t lv_bin_decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
lv_result_t lv_bin_decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the pending decoding. Free resources etc.
|
* Close the pending decoding. Free resources etc.
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ typedef struct {
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
|
|
||||||
static lv_result_t decoder_get_area(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_get_area(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
||||||
const lv_area_t * full_area, lv_area_t * decoded_area);
|
const lv_area_t * full_area, lv_area_t * decoded_area);
|
||||||
@@ -136,15 +135,13 @@ static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a BMP image and return the decided image
|
* Open a BMP image and return the decided image
|
||||||
* @param src can be file name or pointer to a C array
|
* @param decoder pointer to the decoder
|
||||||
* @param style style of the image object (unused now but certain formats might use it)
|
* @param dsc pointer to the decoder descriptor
|
||||||
* @return pointer to the decoded image or `LV_IMAGE_DECODER_OPEN_FAIL` if failed
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
*/
|
*/
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
const lv_image_decoder_args_t * args)
|
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder);
|
LV_UNUSED(decoder);
|
||||||
LV_UNUSED(args);
|
|
||||||
|
|
||||||
/*If it's a BMP file...*/
|
/*If it's a BMP file...*/
|
||||||
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
||||||
|
|||||||
@@ -67,8 +67,7 @@ struct lv_image_pixel_color_s {
|
|||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
static void decoder_close(lv_image_decoder_t * dec, lv_image_decoder_dsc_t * dsc);
|
static void decoder_close(lv_image_decoder_t * dec, lv_image_decoder_dsc_t * dsc);
|
||||||
|
|
||||||
static struct ffmpeg_context_s * ffmpeg_open_file(const char * path);
|
static struct ffmpeg_context_s * ffmpeg_open_file(const char * path);
|
||||||
@@ -270,11 +269,15 @@ static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src,
|
|||||||
return LV_RESULT_INVALID;
|
return LV_RESULT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
/**
|
||||||
const lv_image_decoder_args_t * args)
|
* Decode an image using ffmpeg library
|
||||||
|
* @param decoder pointer to the decoder
|
||||||
|
* @param dsc pointer to the decoder descriptor
|
||||||
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
|
*/
|
||||||
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder);
|
LV_UNUSED(decoder);
|
||||||
LV_UNUSED(args);
|
|
||||||
|
|
||||||
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
||||||
const char * path = dsc->src;
|
const char * path = dsc->src;
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ typedef struct error_mgr_s {
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
static lv_draw_buf_t * decode_jpeg_file(const char * filename);
|
static lv_draw_buf_t * decode_jpeg_file(const char * filename);
|
||||||
static bool get_jpeg_size(const char * filename, uint32_t * width, uint32_t * height);
|
static bool get_jpeg_size(const char * filename, uint32_t * width, uint32_t * height);
|
||||||
@@ -141,15 +140,13 @@ static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a JPEG image and return the decided image
|
* Open a JPEG image and return the decided image
|
||||||
* @param src can be file name or pointer to a C array
|
* @param decoder pointer to the decoder
|
||||||
* @param style style of the image object (unused now but certain formats might use it)
|
* @param dsc pointer to the decoder descriptor
|
||||||
* @return pointer to the decoded image or `LV_IMAGE_DECODER_OPEN_FAIL` if failed
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
*/
|
*/
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
const lv_image_decoder_args_t * args)
|
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder); /*Unused*/
|
LV_UNUSED(decoder); /*Unused*/
|
||||||
LV_UNUSED(args); /*Unused*/
|
|
||||||
|
|
||||||
/*If it's a JPEG file...*/
|
/*If it's a JPEG file...*/
|
||||||
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
||||||
|
|||||||
@@ -24,8 +24,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
static lv_draw_buf_t * decode_png_file(const char * filename);
|
static lv_draw_buf_t * decode_png_file(const char * filename);
|
||||||
|
|
||||||
@@ -117,15 +116,13 @@ static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a PNG image and return the decided image
|
* Open a PNG image and return the decided image
|
||||||
* @param src can be file name or pointer to a C array
|
* @param decoder pointer to the decoder
|
||||||
* @param style style of the image object (unused now but certain formats might use it)
|
* @param dsc pointer to the decoder descriptor
|
||||||
* @return pointer to the decoded image or `LV_IMAGE_DECODER_OPEN_FAIL` if failed
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
*/
|
*/
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
const lv_image_decoder_args_t * args)
|
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder); /*Unused*/
|
LV_UNUSED(decoder); /*Unused*/
|
||||||
LV_UNUSED(args); /*Unused*/
|
|
||||||
|
|
||||||
/*If it's a PNG file...*/
|
/*If it's a PNG file...*/
|
||||||
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
if(dsc->src_type == LV_IMAGE_SRC_FILE) {
|
||||||
|
|||||||
@@ -25,8 +25,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
static void decoder_close(lv_image_decoder_t * dec, lv_image_decoder_dsc_t * dsc);
|
static void decoder_close(lv_image_decoder_t * dec, lv_image_decoder_dsc_t * dsc);
|
||||||
static void convert_color_depth(uint8_t * img_p, uint32_t px_cnt);
|
static void convert_color_depth(uint8_t * img_p, uint32_t px_cnt);
|
||||||
static lv_draw_buf_t * decode_png_data(const void * png_data, size_t png_data_size);
|
static lv_draw_buf_t * decode_png_data(const void * png_data, size_t png_data_size);
|
||||||
@@ -150,11 +149,9 @@ static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src,
|
|||||||
* @param dsc decoded image descriptor
|
* @param dsc decoded image descriptor
|
||||||
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
*/
|
*/
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
const lv_image_decoder_args_t * args)
|
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder);
|
LV_UNUSED(decoder);
|
||||||
LV_UNUSED(args);
|
|
||||||
|
|
||||||
const uint8_t * png_data = NULL;
|
const uint8_t * png_data = NULL;
|
||||||
size_t png_data_size = 0;
|
size_t png_data_size = 0;
|
||||||
|
|||||||
@@ -27,8 +27,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
static lv_result_t decoder_info(lv_image_decoder_t * decoder, const void * src, lv_image_header_t * header);
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc);
|
||||||
const lv_image_decoder_args_t * args);
|
|
||||||
|
|
||||||
static lv_result_t decoder_get_area(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
static lv_result_t decoder_get_area(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
||||||
const lv_area_t * full_area, lv_area_t * decoded_area);
|
const lv_area_t * full_area, lv_area_t * decoded_area);
|
||||||
@@ -143,11 +142,15 @@ static size_t input_func(JDEC * jd, uint8_t * buff, size_t ndata)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
/**
|
||||||
const lv_image_decoder_args_t * args)
|
* Decode a JPG image and return the decoded data.
|
||||||
|
* @param decoder pointer to the decoder
|
||||||
|
* @param dsc pointer to the decoder descriptor
|
||||||
|
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't open the image
|
||||||
|
*/
|
||||||
|
static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||||
{
|
{
|
||||||
LV_UNUSED(decoder);
|
LV_UNUSED(decoder);
|
||||||
LV_UNUSED(args);
|
|
||||||
lv_fs_file_t * f = lv_malloc(sizeof(lv_fs_file_t));
|
lv_fs_file_t * f = lv_malloc(sizeof(lv_fs_file_t));
|
||||||
if(dsc->src_type == LV_IMAGE_SRC_VARIABLE) {
|
if(dsc->src_type == LV_IMAGE_SRC_VARIABLE) {
|
||||||
#if LV_USE_FS_MEMFS
|
#if LV_USE_FS_MEMFS
|
||||||
|
|||||||
Reference in New Issue
Block a user