From 60a425ca0e1f796aa2262252a06926bbcaae0904 Mon Sep 17 00:00:00 2001 From: "jiyong.min" Date: Mon, 15 Oct 2018 07:55:23 +0900 Subject: [PATCH] Change 'gif_image_s' to 'mm_image_info_s' as the unified structure for raw image is used Change-Id: I201e87505947b850b32ccb902bec6c8c053b269c --- common/include/mm_util_type.h | 1 + gif/include/mm_util_gif.h | 18 +++++------ gif/include/mm_util_gif_private.h | 10 +----- gif/mm_util_gif.c | 66 ++++++++++++++++++++------------------- gif/test/mm_util_gif_testsuite.c | 2 +- 5 files changed, 44 insertions(+), 53 deletions(-) diff --git a/common/include/mm_util_type.h b/common/include/mm_util_type.h index 2a36fd3..47ad9bf 100755 --- a/common/include/mm_util_type.h +++ b/common/include/mm_util_type.h @@ -78,6 +78,7 @@ typedef struct { mm_util_color_format_e color; void *data; size_t size; + int delay_time; } mm_image_info_s; #ifdef __cplusplus diff --git a/gif/include/mm_util_gif.h b/gif/include/mm_util_gif.h index 48fecec..431ec3b 100644 --- a/gif/include/mm_util_gif.h +++ b/gif/include/mm_util_gif.h @@ -47,10 +47,6 @@ typedef enum { MM_UTIL_GIF_DISPOSAL_PREVIOUS = 3, /**< Restore to previous content. */ } mm_util_gif_disposal; -#define GRAPHIC_EXT_BLOCK_SIZE 4 - -typedef void* mm_gif_image_h; - typedef void* mm_gif_file_h; int mm_util_decode_from_gif_file(const char *filename, mm_image_info_s * decoded); @@ -59,20 +55,20 @@ int mm_util_encode_to_gif_file(mm_gif_file_h gif_file_h, const char *path); int mm_util_encode_to_gif_memory(mm_gif_file_h gif_file_h, void **buffer, size_t *size); /* a-gif extras */ -int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_gif_image_h *gif_image_h); -int mm_util_gif_image_set_delay_time(mm_gif_image_h gif_image_h, const int delay_time); -int mm_util_gif_image_set_image(mm_gif_image_h gif_image_h, const unsigned char *image_data); -void mm_util_gif_image_destory(mm_gif_image_h gif_image_h); +int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_image_info_s **gif_image_h); +int mm_util_gif_image_set_delay_time(mm_image_info_s * gif_image_h, const int delay_time); +int mm_util_gif_image_set_image(mm_image_info_s * gif_image_h, const unsigned char *image_data); +void mm_util_gif_image_destory(mm_image_info_s * gif_image_h); int mm_util_gif_encode_create(mm_gif_file_h *gif_file_h); int mm_util_gif_encode_set_file(mm_gif_file_h gif_file_h, const char *file_name); int mm_util_gif_encode_set_mem(mm_gif_file_h gif_file_h, void **data, size_t *data_size); int mm_util_gif_encode_set_resolution(mm_gif_file_h gif_file_h, const int width, const int height); int mm_util_gif_encode_start(mm_gif_file_h gif_file_h); -int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_gif_image_h gif_image_h); +int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_image_info_s * gif_image_h); int mm_util_gif_encode_save(mm_gif_file_h gif_file_h); -int mm_util_gif_enocde_set_image_handle(mm_gif_file_h gif_file_h, mm_gif_image_h gif_image_h); -int mm_util_gif_enocde_get_image_handle(mm_gif_file_h gif_file_h, const int index, mm_gif_image_h *gif_image_h); +int mm_util_gif_enocde_set_image_handle(mm_gif_file_h gif_file_h, mm_image_info_s * gif_image_h); +int mm_util_gif_enocde_get_image_handle(mm_gif_file_h gif_file_h, const int index, mm_image_info_s **gif_image_h); void mm_util_gif_encode_destroy(mm_gif_file_h gif_file_h); /* a-gif extras */ diff --git a/gif/include/mm_util_gif_private.h b/gif/include/mm_util_gif_private.h index c943e59..b08e18c 100644 --- a/gif/include/mm_util_gif_private.h +++ b/gif/include/mm_util_gif_private.h @@ -35,14 +35,6 @@ typedef struct { } gif_mem_s; typedef struct { - /* for giflib, Same as SavedImage */ - unsigned long width; - unsigned long height; - void *image_data; - int delay_time; -} gif_image_s; - -typedef struct { GifFileType *GifFile; /**< GifFile opened */ char *filename; void **enc_buffer; /**< Encoded output data attached to callback */ @@ -52,7 +44,7 @@ typedef struct { gboolean is_started; int saved_image_count; - gif_image_s **saved_image; + mm_image_info_s **saved_image; GifWord width; GifWord height; ColorMapObject *color_map; diff --git a/gif/mm_util_gif.c b/gif/mm_util_gif.c index 4b1c7e2..7dc7150 100644 --- a/gif/mm_util_gif.c +++ b/gif/mm_util_gif.c @@ -34,6 +34,7 @@ #define RGB_ALLOC(r, g, b, number, size) { r = calloc(1, number * size); g = calloc(1, number * size); b = calloc(1, number * size); } #define RGB_FREE(r, g, b) { MMUTIL_SAFE_FREE(r); MMUTIL_SAFE_FREE(g); MMUTIL_SAFE_FREE(b); } +#define GRAPHIC_EXT_BLOCK_SIZE 4 static int __convert_gif_to_rgba(mm_image_info_s *decoded, ColorMapObject *color_map, GifRowType *screen_buffer, unsigned long width, unsigned long height) { @@ -280,11 +281,11 @@ static const int DEFAULT_COLORMAP_SIZE = (1 << 8); int _gif_image_alloc_glob_ext_block(GifFileType *gif_file, int function, int byte_count, ExtensionBlock **ext_block); -static int __gif_extract_rgb(gif_image_s *gif_image, unsigned long num_of_pixels, GifByteType **red, GifByteType **green, GifByteType **blue) +static int __gif_extract_rgb(mm_image_info_s *gif_image, unsigned long num_of_pixels, GifByteType **red, GifByteType **green, GifByteType **blue) { GifWord i, j; GifByteType *redP, *greenP, *blueP; - GifByteType *buffer = (GifByteType*)gif_image->image_data; + GifByteType *buffer = (GifByteType*)gif_image->data; mm_util_fenter(); @@ -307,7 +308,7 @@ static int __gif_extract_rgb(gif_image_s *gif_image, unsigned long num_of_pixels return MM_UTIL_ERROR_NONE; } -int __gif_make_color_map(gif_image_s *gif_image, ColorMapObject **color_map, GifByteType **intermediate_image, unsigned long *intermediate_image_size) +int __gif_make_color_map(mm_image_info_s *gif_image, ColorMapObject **color_map, GifByteType **intermediate_image, unsigned long *intermediate_image_size) { int ret = MM_UTIL_ERROR_NONE; int colormap_size = DEFAULT_COLORMAP_SIZE; @@ -462,7 +463,7 @@ int _gif_encode_move_to_mem(const unsigned char *src, size_t src_size, void **ds return MM_UTIL_ERROR_NONE; } -int _gif_image_write_image(gif_file_s *gif_file, gif_image_s *gif_image) +int _gif_image_write_image(gif_file_s *gif_file, mm_image_info_s *gif_image) { int ret = MM_UTIL_ERROR_NONE; ColorMapObject *color_map = NULL; @@ -471,7 +472,7 @@ int _gif_image_write_image(gif_file_s *gif_file, gif_image_s *gif_image) unsigned long idx = 0; mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); - mm_util_retvm_if(gif_image->image_data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); + mm_util_retvm_if(gif_image->data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); /* Make local color map */ ret = __gif_make_color_map(gif_image, &color_map, &intermediate_image, &intermediate_image_size); @@ -503,7 +504,7 @@ int _gif_image_write_image(gif_file_s *gif_file, gif_image_s *gif_image) return MM_UTIL_ERROR_NONE; } -int _gif_image_create_ext_block(gif_image_s *gif_image, int function, int byte_count, ExtensionBlock **ext_block) +int _gif_image_create_ext_block(mm_image_info_s *gif_image, int function, int byte_count, ExtensionBlock **ext_block) { ExtensionBlock *_ext_block = NULL; @@ -532,7 +533,7 @@ int _gif_image_create_ext_block(gif_image_s *gif_image, int function, int byte_c return MM_UTIL_ERROR_NONE; } -int _gif_image_write_ext_block(gif_file_s *gif_file, gif_image_s *gif_image) +int _gif_image_write_ext_block(gif_file_s *gif_file, mm_image_info_s *gif_image) { int ret = MM_UTIL_ERROR_NONE; ExtensionBlock *_ext_block = NULL; @@ -658,14 +659,14 @@ int _gif_image_write_glob_ext_blocks(gif_file_s *gif_file) return MM_UTIL_ERROR_NONE; } -int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_gif_image_h *gif_image_h) +int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_image_info_s **gif_image_h) { gif_file_s *gif_file = (gif_file_s *)gif_file_h; - gif_image_s *pImage = NULL; + mm_image_info_s *pImage = NULL; mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); - pImage = (gif_image_s *)calloc(1, sizeof(gif_image_s)); + pImage = (mm_image_info_s *)calloc(1, sizeof(mm_image_info_s)); mm_util_retvm_if(pImage == NULL, MM_UTIL_ERROR_OUT_OF_MEMORY, "Memory allocation failed"); /* init image when it is allocated */ @@ -673,14 +674,14 @@ int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_gif_image_h *gif_image pImage->width = gif_file->width; pImage->height = gif_file->height; - *gif_image_h = (mm_gif_image_h)pImage; + *gif_image_h = (mm_image_info_s *)pImage; return MM_UTIL_ERROR_NONE; } -int mm_util_gif_image_set_delay_time(mm_gif_image_h gif_image_h, const int delay_time) +int mm_util_gif_image_set_delay_time(mm_image_info_s * gif_image_h, const int delay_time) { - gif_image_s *gif_image = (gif_image_s *)gif_image_h; + mm_image_info_s *gif_image = (mm_image_info_s *)gif_image_h; mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_retvm_if(delay_time < 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); @@ -692,26 +693,27 @@ int mm_util_gif_image_set_delay_time(mm_gif_image_h gif_image_h, const int delay return MM_UTIL_ERROR_NONE; } -int mm_util_gif_image_set_image(mm_gif_image_h gif_image_h, const unsigned char *image_data) +int mm_util_gif_image_set_image(mm_image_info_s * gif_image_h, const unsigned char *image_data) { - gif_image_s *gif_image = (gif_image_s *)gif_image_h; + mm_image_info_s *gif_image = (mm_image_info_s *)gif_image_h; mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_retvm_if(image_data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_info("ptr = %p", image_data); - gif_image->image_data = (void *)image_data; + gif_image->data = (void *)image_data; return MM_UTIL_ERROR_NONE; } -void mm_util_gif_image_destory(mm_gif_image_h gif_image_h) +void mm_util_gif_image_destory(mm_image_info_s * gif_image_h) { - gif_image_s *gif_image = (gif_image_s *)gif_image_h; + mm_image_info_s *gif_image = (mm_image_info_s *)gif_image_h; mm_util_retm_if(gif_image == NULL, "Invalid parameter"); + MMUTIL_SAFE_FREE(gif_image->data); MMUTIL_SAFE_FREE(gif_image); } @@ -822,17 +824,17 @@ int mm_util_gif_encode_start(mm_gif_file_h gif_file_h) return MM_UTIL_ERROR_NONE; } -int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_gif_image_h gif_image_h) +int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_image_info_s *gif_image_h) { int ret = MM_UTIL_ERROR_NONE; gif_file_s *gif_file = (gif_file_s *)gif_file_h; - gif_image_s *gif_image = (gif_image_s *)gif_image_h; + mm_image_info_s *gif_image = (mm_image_info_s *)gif_image_h; mm_util_fenter(); mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_retvm_if((gif_image->width == 0) || (gif_image->height == 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); - mm_util_retvm_if(gif_image->image_data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); + mm_util_retvm_if(gif_image->data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); if (gif_file->is_started == FALSE) { mm_util_warn("first added image, mm_util_gif_encode_start is needed"); @@ -883,10 +885,10 @@ int mm_util_gif_encode_save(mm_gif_file_h gif_file_h) return MM_UTIL_ERROR_NONE; } -int mm_util_gif_enocde_set_image_handle(mm_gif_file_h gif_file_h, mm_gif_image_h gif_image_h) +int mm_util_gif_enocde_set_image_handle(mm_gif_file_h gif_file_h, mm_image_info_s *gif_image_h) { gif_file_s *gif_file = (gif_file_s *)gif_file_h; - gif_image_s *gif_image = (gif_image_s *)gif_image_h; + mm_image_info_s *gif_image = (mm_image_info_s *)gif_image_h; mm_util_fenter(); mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); @@ -894,10 +896,10 @@ int mm_util_gif_enocde_set_image_handle(mm_gif_file_h gif_file_h, mm_gif_image_h mm_util_retvm_if(gif_file->is_started, MM_UTIL_ERROR_INVALID_OPERATION, "Encoding has already started"); if (gif_file->saved_image == NULL) { - gif_file->saved_image = (gif_image_s **)calloc(1, sizeof(mm_gif_image_h)); + gif_file->saved_image = (mm_image_info_s **)calloc(1, sizeof(mm_image_info_s *)); mm_util_retvm_if(gif_file->saved_image == NULL, MM_UTIL_ERROR_OUT_OF_MEMORY, "memory allocation failed"); } else { - gif_image_s **tmp = (gif_image_s **)realloc(gif_file->saved_image, sizeof(mm_gif_image_h) * (gif_file->saved_image_count + 1)); + mm_image_info_s **tmp = (mm_image_info_s **)realloc(gif_file->saved_image, sizeof(mm_image_info_s *) * (gif_file->saved_image_count + 1)); mm_util_retvm_if(tmp == NULL, MM_UTIL_ERROR_OUT_OF_MEMORY, "memory allocation failed"); gif_file->saved_image = tmp; } @@ -908,7 +910,7 @@ int mm_util_gif_enocde_set_image_handle(mm_gif_file_h gif_file_h, mm_gif_image_h return MM_UTIL_ERROR_NONE; } -int mm_util_gif_enocde_get_image_handle(mm_gif_file_h gif_file_h, const int index, mm_gif_image_h *gif_image_h) +int mm_util_gif_enocde_get_image_handle(mm_gif_file_h gif_file_h, const int index, mm_image_info_s **gif_image_h) { gif_file_s *gif_file = (gif_file_s *)gif_file_h; @@ -918,7 +920,7 @@ int mm_util_gif_enocde_get_image_handle(mm_gif_file_h gif_file_h, const int inde mm_util_retvm_if(gif_file->is_started, MM_UTIL_ERROR_INVALID_OPERATION, "Encoding has already started"); if (index < gif_file->saved_image_count) - *gif_image_h = (mm_gif_image_h)gif_file->saved_image[index]; + *gif_image_h = (mm_image_info_s *)gif_file->saved_image[index]; else *gif_image_h = NULL; @@ -931,7 +933,7 @@ int mm_util_encode_to_gif_file(mm_gif_file_h gif_file_h, const char *path) int i = 0; gif_file_s *gif_file = (gif_file_s *)gif_file_h; - mm_gif_image_h gif_image = NULL; + mm_image_info_s *gif_image = NULL; mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_retvm_if(gif_file->saved_image == NULL, MM_UTIL_ERROR_INVALID_OPERATION, "Invalid parameter"); @@ -944,7 +946,7 @@ int mm_util_encode_to_gif_file(mm_gif_file_h gif_file_h, const char *path) mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_start failed"); for (i = 0; i < gif_file->saved_image_count; i++) { - gif_image = (mm_gif_image_h)gif_file->saved_image[i]; + gif_image = (mm_image_info_s *)gif_file->saved_image[i]; ret = mm_util_gif_encode_add_image(gif_file_h, gif_image); mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_add_image failed"); mm_util_gif_image_destory(gif_image); @@ -963,7 +965,7 @@ int mm_util_encode_to_gif_memory(mm_gif_file_h gif_file_h, void **buffer, size_t int i = 0; gif_file_s *gif_file = (gif_file_s *)gif_file_h; - mm_gif_image_h gif_image = NULL; + mm_image_info_s * gif_image = NULL; mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter"); mm_util_retvm_if(gif_file->saved_image == NULL, MM_UTIL_ERROR_INVALID_OPERATION, "Invalid parameter"); @@ -976,7 +978,7 @@ int mm_util_encode_to_gif_memory(mm_gif_file_h gif_file_h, void **buffer, size_t mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_start failed"); for (i = 0; i < gif_file->saved_image_count; i++) { - gif_image = (mm_gif_image_h)gif_file->saved_image[i]; + gif_image = (mm_image_info_s *)gif_file->saved_image[i]; ret = mm_util_gif_encode_add_image(gif_file_h, gif_image); mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_add_image failed"); mm_util_gif_image_destory(gif_image); @@ -1004,7 +1006,7 @@ void mm_util_gif_encode_destroy(mm_gif_file_h gif_file_h) if (gif_file->saved_image != NULL) { for (i = 0; i < gif_file->saved_image_count; i++) { - mm_gif_image_h tmp = (mm_gif_image_h)gif_file->saved_image[i]; + mm_image_info_s * tmp = (mm_image_info_s *)gif_file->saved_image[i]; mm_util_gif_image_destory(tmp); } MMUTIL_SAFE_FREE(gif_file->saved_image); diff --git a/gif/test/mm_util_gif_testsuite.c b/gif/test/mm_util_gif_testsuite.c index 3860cfe..693e8d5 100644 --- a/gif/test/mm_util_gif_testsuite.c +++ b/gif/test/mm_util_gif_testsuite.c @@ -147,7 +147,7 @@ int main(int argc, char *argv[]) } mm_gif_file_h gif_file = NULL; - mm_gif_image_h gif_image = NULL; + mm_image_info_s * gif_image = NULL; unsigned char *encoded_gif_mem = NULL; size_t encoded_gif_size = 0; -- 2.7.4