Modify parameters in encoding APIs have been changed from mm_image_info_s to mm_util_...
[platform/core/multimedia/libmm-utility.git] / png / mm_util_png.c
index d5fc22d..1ba36c2 100755 (executable)
@@ -231,8 +231,9 @@ static int __read_png(FILE *fp, void *memory, const size_t memory_size, mm_util_
        return ret;
 }
 
-int _write_png(mm_image_info_s *decoded, mm_util_png_compression compression_level, FILE *fp, void **buffer, size_t *size)
+static int __write_png(mm_util_image_h *decoded, mm_util_png_compression compression_level, FILE *fp, void **buffer, size_t *size)
 {
+       mm_image_info_s *_decoded = (mm_image_info_s *)decoded;
        png_structp png_ptr;
        png_infop info_ptr;
        guint row_index;
@@ -241,8 +242,11 @@ int _write_png(mm_image_info_s *decoded, mm_util_png_compression compression_lev
        png_mem_s png_mem_ptr = {NULL, 0};
        png_property_s png_prop;
 
-       mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
-       mm_util_retvm_if(((fp == NULL) && (buffer == NULL || size == NULL)), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid png image");
+       mm_util_retvm_if(!decoded, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid image src");
+       mm_util_retvm_if(!fp && (!buffer || !size), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid parameter");
+       mm_util_retvm_if(_decoded->color != MM_UTIL_COLOR_RGBA, MM_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported color [%d]", _decoded->color);
+
+       mm_util_fenter();
 
        /* initialize png_prop */
        png_prop.filter = PNG_FILTER_NONE;
@@ -282,11 +286,11 @@ int _write_png(mm_image_info_s *decoded, mm_util_png_compression compression_lev
        /* set properties(header) from png_prop */
        png_set_filter(png_ptr, 0, png_prop.filter);
        png_set_compression_level(png_ptr, compression_level);
-       png_set_IHDR(png_ptr, info_ptr, decoded->width, decoded->height, png_prop.bit_depth, png_prop.color_type, png_prop.interlace_type, png_prop.compression_type, png_prop.filter_type);
+       png_set_IHDR(png_ptr, info_ptr, _decoded->width, _decoded->height, png_prop.bit_depth, png_prop.color_type, png_prop.interlace_type, png_prop.compression_type, png_prop.filter_type);
 
        rowbytes = (size_t)png_get_rowbytes(png_ptr, info_ptr);
 
-       row_pointers = png_malloc(png_ptr, sizeof(png_bytep) * decoded->height);
+       row_pointers = png_malloc(png_ptr, sizeof(png_bytep) * _decoded->height);
        if (row_pointers == NULL) {
                mm_util_error("out of memory");
                png_destroy_write_struct(&png_ptr, &info_ptr);
@@ -294,8 +298,8 @@ int _write_png(mm_image_info_s *decoded, mm_util_png_compression compression_lev
        }
 
        /* write png data */
-       for (row_index = 0; row_index < decoded->height; row_index++)
-               row_pointers[row_index] = decoded->data + (row_index * rowbytes);
+       for (row_index = 0; row_index < _decoded->height; row_index++)
+               row_pointers[row_index] = _decoded->data + (row_index * rowbytes);
 
        png_write_info(png_ptr, info_ptr);
        png_write_image(png_ptr, row_pointers);
@@ -310,6 +314,8 @@ int _write_png(mm_image_info_s *decoded, mm_util_png_compression compression_lev
                *size = png_mem_ptr.size;
        }
 
+       mm_util_fleave();
+
        return MM_UTIL_ERROR_NONE;
 }
 
@@ -341,17 +347,17 @@ int mm_util_decode_from_png_memory(void *memory, const size_t src_size, mm_util_
        return __read_png(NULL, memory, src_size, decoded);
 }
 
-int mm_util_encode_to_png_file(mm_image_info_s *decoded, mm_util_png_compression compression_level, const char *fpath)
+int mm_util_encode_to_png_file(mm_util_image_h decoded, mm_util_png_compression compression_level, const char *file_path)
 {
        int ret = MM_UTIL_ERROR_NONE;
        FILE *fp = NULL;
 
        mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
-       mm_util_retvm_if(!MMUTIL_STRING_VALID(fpath), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid path");
+       mm_util_retvm_if(!MMUTIL_STRING_VALID(file_path), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid file_path");
 
-       mm_util_fenter();
+       mm_util_sec_debug("Save to file [%s]", file_path);
 
-       ret = mm_util_safe_fopen(fpath, "w", &fp);
+       ret = mm_util_safe_fopen(file_path, "w", &fp);
        if (ret != MM_UTIL_ERROR_NONE) {
                mm_util_error("mm_util_safe_fopen failed (%d)", ret);
                mm_util_safe_fclose(fp);
@@ -359,31 +365,17 @@ int mm_util_encode_to_png_file(mm_image_info_s *decoded, mm_util_png_compression
                return ret;
        }
 
-       ret = _write_png(decoded, compression_level, fp, NULL, NULL);
-       if (ret != MM_UTIL_ERROR_NONE)
-               mm_util_error("_write_png failed (%d)", ret);
+       ret = __write_png(decoded, compression_level, fp, NULL, NULL);
 
        mm_util_safe_fclose(fp);
 
-       mm_util_fleave();
-
        return ret;
 }
 
-int mm_util_encode_to_png_memory(mm_image_info_s *decoded, mm_util_png_compression compression_level, void **data, size_t *size)
+int mm_util_encode_to_png_memory(mm_util_image_h decoded, mm_util_png_compression compression_level, void **buffer, size_t *size)
 {
-       int ret = MM_UTIL_ERROR_NONE;
-
-       mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
-       mm_util_retvm_if((data == NULL || size == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid png image");
-
-       mm_util_fenter();
+       mm_util_retvm_if(!buffer, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid buffer");
+       mm_util_retvm_if(!size, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid size");
 
-       ret = _write_png(decoded, compression_level, NULL, data, size);
-       if (ret != MM_UTIL_ERROR_NONE)
-               mm_util_error("_write_png failed (%d)", ret);
-
-       mm_util_fleave();
-
-       return ret;
+       return __write_png(decoded, compression_level, NULL, buffer, size);
 }