Change 'gif_image_s' to 'mm_image_info_s' as the unified structure for raw image... 27/191227/1
authorjiyong.min <jiyong.min@samsung.com>
Sun, 14 Oct 2018 22:55:23 +0000 (07:55 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Sun, 14 Oct 2018 22:58:24 +0000 (07:58 +0900)
Change-Id: I201e87505947b850b32ccb902bec6c8c053b269c

common/include/mm_util_type.h
gif/include/mm_util_gif.h
gif/include/mm_util_gif_private.h
gif/mm_util_gif.c
gif/test/mm_util_gif_testsuite.c

index 2a36fd3..47ad9bf 100755 (executable)
@@ -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
index 48fecec..431ec3b 100644 (file)
@@ -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 */
 
index c943e59..b08e18c 100644 (file)
@@ -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;
index 4b1c7e2..7dc7150 100644 (file)
@@ -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);
index 3860cfe..693e8d5 100644 (file)
@@ -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;