Remove `GifImageDesc` from gif_image_s 68/191168/1
authorjiyong.min <jiyong.min@samsung.com>
Fri, 12 Oct 2018 04:06:49 +0000 (13:06 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Fri, 12 Oct 2018 04:08:03 +0000 (13:08 +0900)
Change-Id: I5c8d9a8fdd2c6d95dfce3733c8a1853289735081

gif/include/mm_util_gif.h [changed mode: 0755->0644]
gif/include/mm_util_gif_private.h
gif/mm_util_gif.c
gif/test/mm_util_gif_testsuite.c [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 0d482e5..48fecec
@@ -60,7 +60,6 @@ int mm_util_encode_to_gif_memory(mm_gif_file_h gif_file_h, void **buffer, size_t
 
 /* 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_position(mm_gif_image_h gif_image_h, const int left, const int top, const int width, const int height);
 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);
index f45c2bc..849cb18 100644 (file)
@@ -36,16 +36,13 @@ typedef struct {
 
 typedef struct {
        /* for giflib, Same as SavedImage */
-       GifImageDesc image_desc;
+       unsigned long width;
+       unsigned long height;
        void *image_data;
        int delay_time;
 
        int ext_block_count;
        ExtensionBlock *ext_blocks;
-
-       /* for libmm */
-       GifWord width;
-       GifWord height;
 } gif_image_s;
 
 typedef struct {
index e05ed36..e4040f0 100644 (file)
@@ -295,8 +295,8 @@ static int __gif_extract_rgb(gif_image_s *gif_image, unsigned long num_of_pixels
        *blue = blueP;
        mm_util_retvm_if((redP == NULL || greenP == NULL || blueP == NULL), MM_UTIL_ERROR_OUT_OF_MEMORY, "Memory allocation failed");
 
-       for (i = 0; i < gif_image->image_desc.Height; i++) {
-               for (j = 0; j < gif_image->image_desc.Width; j++) {
+       for (i = 0; i < gif_image->height; i++) {
+               for (j = 0; j < gif_image->width; j++) {
                        *redP++ = *buffer++;
                        *greenP++ = *buffer++;
                        *blueP++ = *buffer++;
@@ -307,7 +307,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, GifByteType **intermediate_image, unsigned long *intermediate_image_size)
+int __gif_make_color_map(gif_image_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;
@@ -315,7 +315,7 @@ int __gif_make_color_map(gif_image_s *gif_image, GifByteType **intermediate_imag
 
        mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
-       unsigned long num_of_pixels = gif_image->image_desc.Width * gif_image->image_desc.Height;
+       unsigned long num_of_pixels = gif_image->width * gif_image->height;
 
        /* make colormap and quantization for the color table of gif */
        ret = __gif_extract_rgb(gif_image, num_of_pixels, &red, &green, &blue);
@@ -324,7 +324,7 @@ int __gif_make_color_map(gif_image_s *gif_image, GifByteType **intermediate_imag
                goto FAIL;
        }
 
-       if ((gif_image->image_desc.ColorMap = GifMakeMapObject(colormap_size, NULL)) == NULL) {
+       if ((*color_map = GifMakeMapObject(colormap_size, NULL)) == NULL) {
                mm_util_error("To make color map is  failed");
                ret = MM_UTIL_ERROR_INVALID_OPERATION;
                goto FAIL;
@@ -339,7 +339,7 @@ int __gif_make_color_map(gif_image_s *gif_image, GifByteType **intermediate_imag
        }
        *intermediate_image_size = num_of_pixels * sizeof(GifByteType);
 
-       if (GifQuantizeBuffer(gif_image->image_desc.Width, gif_image->image_desc.Height, &colormap_size, red, green, blue, *intermediate_image, gif_image->image_desc.ColorMap->Colors) == GIF_ERROR) {
+       if (GifQuantizeBuffer(gif_image->width, gif_image->height, &colormap_size, red, green, blue, *intermediate_image, (*color_map)->Colors) == GIF_ERROR) {
                mm_util_error("could not quantize buffer");
                ret = MM_UTIL_ERROR_INVALID_OPERATION;
                goto FAIL;
@@ -351,7 +351,7 @@ FAIL:
                MMUTIL_SAFE_FREE(*intermediate_image);
 
        *intermediate_image_size = 0;
-       COLORMAP_FREE(gif_image->image_desc.ColorMap);
+       COLORMAP_FREE(*color_map);
 SUCCESS:
        RGB_FREE(red, green, blue);
 
@@ -465,7 +465,7 @@ int _gif_encode_move_to_mem(const unsigned char *src, size_t src_size, void **ds
 int _gif_image_write_image(gif_file_s *gif_file, gif_image_s *gif_image)
 {
        int ret = MM_UTIL_ERROR_NONE;
-
+       ColorMapObject *color_map = NULL;
        GifByteType *intermediate_image = NULL;
        unsigned long intermediate_image_size = 0;
        unsigned long idx = 0;
@@ -474,16 +474,18 @@ int _gif_image_write_image(gif_file_s *gif_file, gif_image_s *gif_image)
        mm_util_retvm_if(gif_image->image_data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
        /* Make local color map */
-       ret = __gif_make_color_map(gif_image, &intermediate_image, &intermediate_image_size);
+       ret = __gif_make_color_map(gif_image, &color_map, &intermediate_image, &intermediate_image_size);
        mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "__gif_make_color_map failed");
 
-       if (EGifPutImageDesc(gif_file->GifFile, gif_image->image_desc.Left, gif_image->image_desc.Top,
-               gif_image->image_desc.Width, gif_image->image_desc.Height, gif_image->image_desc.Interlace,
-               gif_image->image_desc.ColorMap) == GIF_ERROR) {
+       if (EGifPutImageDesc(gif_file->GifFile, 0, 0, gif_image->width, gif_image->height,
+               FALSE, color_map) == GIF_ERROR) {
                mm_util_error("EGifPutImageDesc failed due to %s", GifErrorString(gif_file->GifFile->Error));
+               COLORMAP_FREE(color_map);
                MMUTIL_SAFE_FREE(intermediate_image);
                return MM_UTIL_ERROR_INVALID_OPERATION;
        }
+       /* release color map */
+       COLORMAP_FREE(color_map);
 
        mm_util_debug("put pixel count: %lu", (intermediate_image_size / sizeof(GifPixelType)));
 
@@ -698,9 +700,8 @@ int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_gif_image_h *gif_image
 
        /* init image when it is allocated */
        /* set default width & height */
-       pImage->width = pImage->image_desc.Width = gif_file->width;
-       pImage->height =  pImage->image_desc.Height = gif_file->height;
-       pImage->image_desc.Interlace = FALSE;   /* don't change this,  fixed value */
+       pImage->width = gif_file->width;
+       pImage->height = gif_file->height;
        pImage->ext_block_count = 0;
        pImage->ext_blocks = NULL;
 
@@ -709,26 +710,6 @@ int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_gif_image_h *gif_image
        return MM_UTIL_ERROR_NONE;
 }
 
-int mm_util_gif_image_set_position(mm_gif_image_h gif_image_h, const int left, const int top, const int width, const int height)
-{
-       gif_image_s *gif_image = (gif_image_s *)gif_image_h;
-
-       mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if((left < 0) || (top < 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if((width <= 0) || (height <= 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if((gif_image->width > 0) && (left + width > gif_image->width), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if((gif_image->height > 0) && (top + height > gif_image->height), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
-       mm_util_info("l = %d, t = %d, w= %d, h = %d", left, top, width, height);
-
-       gif_image->image_desc.Left = left;
-       gif_image->image_desc.Top = top;
-       gif_image->image_desc.Width = width;
-       gif_image->image_desc.Height = height;
-
-       return MM_UTIL_ERROR_NONE;
-}
-
 int mm_util_gif_image_set_delay_time(mm_gif_image_h gif_image_h, const int delay_time)
 {
        gif_image_s *gif_image = (gif_image_s *)gif_image_h;
@@ -765,9 +746,6 @@ void mm_util_gif_image_destory(mm_gif_image_h gif_image_h)
 
        mm_util_retm_if(gif_image == NULL, "Invalid parameter");
 
-       /* release color map */
-       COLORMAP_FREE(gif_image->image_desc.ColorMap);
-
        /* release extension blocks */
        if (gif_image->ext_blocks != NULL) {
                for (i = 0; i < gif_image->ext_block_count; i++) {
@@ -896,9 +874,7 @@ int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_gif_image_h gif_im
        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->image_desc.Width <= 0) || (gif_image->image_desc.Height <= 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if((gif_image->image_desc.Left + gif_image->image_desc.Width > gif_file->width), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if((gif_image->image_desc.Top + gif_image->image_desc.Height > gif_file->height), 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");
 
        if (gif_file->is_started == FALSE) {
@@ -911,7 +887,7 @@ int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_gif_image_h gif_im
        ret = _gif_image_write_ext_blocks(gif_file, gif_image);
        mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_write_ext_blocks failed");
 
-       /* Write image description */
+       /* Write image description & data */
        ret = _gif_image_write_image(gif_file, gif_image);
        mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_write_image_desc failed");
 
old mode 100755 (executable)
new mode 100644 (file)
index 783004e..3860cfe
@@ -175,9 +175,6 @@ int main(int argc, char *argv[])
                        ret = mm_util_gif_image_set_delay_time(gif_image, 20);
                        fprintf(stderr, "\t mm_util_gif_image_set_delay_time [%d]\n", ret);
 
-                       ret = mm_util_gif_image_set_position(gif_image, 0, 0, files[i].decoded.width, files[i].decoded.height);
-                       fprintf(stderr, "\t mm_util_gif_image_set_position [%d]\n", ret);
-
                        ret = mm_util_gif_encode_add_image(gif_file, gif_image);
                        fprintf(stderr, "\t mm_util_gif_enc_add_image [%d]\n", ret);