Modify parameters in encoding APIs have been changed from mm_image_info_s to mm_util_...
[platform/core/multimedia/libmm-utility.git] / bmp / mm_util_bmp.c
index 2d12d7e..4ef1022 100755 (executable)
@@ -179,27 +179,31 @@ static int __read_bmp(const char *file_path, void *memory, size_t src_size, mm_u
 }
 
 /* encodes color image to bmp image */
-static int _write_bmp(mm_image_info_s *decoded, const char *filename, void **memory, size_t *src_size)
+static int __write_bmp(mm_util_image_h decoded, const char *file_path, void **buffer, size_t *src_size)
 {
+       mm_image_info_s *_decoded = (mm_image_info_s *)decoded;
        bmpfile_t *bmp;
        rgb_pixel_t pixel = { 0, 0, 0, 0 };
        uint16_t row, col;
        uint8_t *image;
 
-       mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
-       mm_util_retvm_if(!MMUTIL_STRING_VALID(filename) && (memory == NULL || src_size == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid bmp image");
+       mm_util_retvm_if(!decoded, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid image src");
+       mm_util_retvm_if(!MMUTIL_STRING_VALID(file_path) && (!buffer || !src_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();
 
        /* header of bmp image is create at 'bmp' */
-       if ((bmp = bmp_create(decoded->width, decoded->height, BYTES_PER_PIXEL * 8)) == NULL) {
+       if ((bmp = bmp_create(_decoded->width, _decoded->height, BYTES_PER_PIXEL * 8)) == NULL) {
                mm_util_error("Invalid depth value.");
                return MM_UTIL_ERROR_INVALID_OPERATION;
        }
 
        /* pixcels of bmp image is stored at 'bmp' */
-       image = (uint8_t *) decoded->data;
-       for (row = 0; row != decoded->height; row++) {
-               for (col = 0; col != decoded->width; col++) {
-                       size_t z = (row * decoded->width + col) * BYTES_PER_PIXEL;
+       image = (uint8_t *) _decoded->data;
+       for (row = 0; row != _decoded->height; row++) {
+               for (col = 0; col != _decoded->width; col++) {
+                       size_t z = (row * _decoded->width + col) * BYTES_PER_PIXEL;
                        pixel.red = image[z];
                        pixel.green = image[z + 1];
                        pixel.blue = image[z + 2];
@@ -207,24 +211,29 @@ static int _write_bmp(mm_image_info_s *decoded, const char *filename, void **mem
                }
        }
 
-       /* write 'bmp' to file or memory */
-       if (MMUTIL_STRING_VALID(filename)) {
-               if (bmp_save(bmp, filename) == false) {
+       /* write 'bmp' to file or buffer */
+       if (MMUTIL_STRING_VALID(file_path)) {
+               mm_util_sec_debug("Save to file [%s]", file_path);
+               if (bmp_save(bmp, file_path) == false) {
                        mm_util_error("Saving bmp was failed.");
                        bmp_destroy(bmp);
                        return MM_UTIL_ERROR_INVALID_OPERATION;
                }
        } else {
-               if (bmp_save2(bmp, memory, src_size) == false) {
+               mm_util_sec_debug("Save to buffer");
+               if (bmp_save2(bmp, buffer, src_size) == false) {
                        mm_util_error("Saving bmp was failed.");
                        bmp_destroy(bmp);
-                       MMUTIL_SAFE_FREE(*memory);
+                       MMUTIL_SAFE_FREE(*buffer);
                        *src_size = 0;
                        return MM_UTIL_ERROR_INVALID_OPERATION;
                }
        }
 
        bmp_destroy(bmp);
+
+       mm_util_fleave();
+
        return MM_UTIL_ERROR_NONE;
 }
 
@@ -243,38 +252,17 @@ int mm_util_decode_from_bmp_memory(void *memory, const size_t src_size, mm_util_
        return __read_bmp(NULL, memory, src_size, decoded);
 }
 
-int mm_util_encode_bmp_to_file(mm_image_info_s *decoded, const char *filename)
+int mm_util_encode_bmp_to_file(mm_util_image_h decoded, const char *file_path)
 {
-       int ret = MM_UTIL_ERROR_NONE;
-
-       mm_util_retvm_if(!MMUTIL_STRING_VALID(filename), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid bmp image");
-       mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
-
-       mm_util_fenter();
-
-       ret = _write_bmp(decoded, filename, NULL, NULL);
-       if (ret != MM_UTIL_ERROR_NONE)
-               mm_util_error("_write_bmp failed (%d)", ret);
-
-       mm_util_fleave();
+       mm_util_retvm_if(!MMUTIL_STRING_VALID(file_path), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid file_path");
 
-       return ret;
+       return __write_bmp(decoded, file_path, NULL, NULL);
 }
 
-int mm_util_encode_bmp_to_memory(mm_image_info_s *decoded, void **buffer, size_t *size)
+int mm_util_encode_bmp_to_memory(mm_util_image_h decoded, 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((buffer == NULL || size == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid bmp image");
-
-       mm_util_fenter();
-
-       ret = _write_bmp(decoded, NULL, buffer, size);
-       if (ret != MM_UTIL_ERROR_NONE)
-               mm_util_error("_write_bmp failed (%d)", ret);
-
-       mm_util_fleave();
+       mm_util_retvm_if(!buffer, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid buffer");
+       mm_util_retvm_if(!size, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid size");
 
-       return ret;
+       return __write_bmp(decoded, NULL, buffer, size);
 }