static int _convert_jpeg_colorspace_tbl[] = {
MM_UTIL_JPEG_FMT_YUV420, /* IMAGE_UTIL_COLORSPACE_YUV420 */
- -1, /* IMAGE_UTIL_COLORSPACE_YUV422 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV422 */
MM_UTIL_JPEG_FMT_YUV420, /* IMAGE_UTIL_COLORSPACE_I420 */
MM_UTIL_JPEG_FMT_NV12, /* IMAGE_UTIL_COLORSPACE_NV12 */
- -1, /* IMAGE_UTIL_COLORSPACE_UYVY */
- -1, /* IMAGE_UTIL_COLORSPACE_YUYV */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB565 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_UYVY */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUYV */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB565 */
MM_UTIL_JPEG_FMT_RGB888, /* IMAGE_UTIL_COLORSPACE_RGB888 */
MM_UTIL_JPEG_FMT_ARGB8888, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
MM_UTIL_JPEG_FMT_BGRA8888, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
MM_UTIL_JPEG_FMT_RGBA8888, /* IMAGE_UTIL_COLORSPACE_RGBA8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV21 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV16 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV61 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV21 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV16 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV61 */
};
static int _convert_png_colorspace_tbl[] = {
- -1, /* IMAGE_UTIL_COLORSPACE_YUV420 */
- -1, /* IMAGE_UTIL_COLORSPACE_YUV422 */
- -1, /* IMAGE_UTIL_COLORSPACE_I420 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV12 */
- -1, /* IMAGE_UTIL_COLORSPACE_UYVY */
- -1, /* IMAGE_UTIL_COLORSPACE_YUYV */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB565 */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB888 */
- -1, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV420 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV422 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_I420 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV12 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_UYVY */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUYV */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB565 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
MM_UTIL_PNG_COLOR_TYPE_RGB_ALPHA, /* IMAGE_UTIL_COLORSPACE_RGBA8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV21 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV16 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV61 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV21 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV16 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV61 */
};
static int _convert_gif_colorspace_tbl[] = {
- -1, /* IMAGE_UTIL_COLORSPACE_YUV420 */
- -1, /* IMAGE_UTIL_COLORSPACE_YUV422 */
- -1, /* IMAGE_UTIL_COLORSPACE_I420 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV12 */
- -1, /* IMAGE_UTIL_COLORSPACE_UYVY */
- -1, /* IMAGE_UTIL_COLORSPACE_YUYV */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB565 */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB888 */
- -1, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
- MM_UTIL_GIF_FMT_RGBA8888, /* IMAGE_UTIL_COLORSPACE_RGBA8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV21 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV16 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV61 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV420 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV422 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_I420 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV12 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_UYVY */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUYV */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB565 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
+ MM_UTIL_GIF_FMT_RGBA8888, /* IMAGE_UTIL_COLORSPACE_RGBA8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV21 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV16 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV61 */
};
static int _convert_bmp_colorspace_tbl[] = {
- -1, /* IMAGE_UTIL_COLORSPACE_YUV420 */
- -1, /* IMAGE_UTIL_COLORSPACE_YUV422 */
- -1, /* IMAGE_UTIL_COLORSPACE_I420 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV12 */
- -1, /* IMAGE_UTIL_COLORSPACE_UYVY */
- -1, /* IMAGE_UTIL_COLORSPACE_YUYV */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB565 */
- -1, /* IMAGE_UTIL_COLORSPACE_RGB888 */
- -1, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV420 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUV422 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_I420 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV12 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_UYVY */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_YUYV */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB565 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_RGB888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_ARGB8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRA8888 */
MM_UTIL_BMP_FMT_RGBA8888, /* IMAGE_UTIL_COLORSPACE_RGBA8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV21 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV16 */
- -1, /* IMAGE_UTIL_COLORSPACE_NV61 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_BGRX8888 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV21 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV16 */
+ _NOT_SUPPORTED_COLORSPACE, /* IMAGE_UTIL_COLORSPACE_NV61 */
};
static int _convert_decode_scale_tbl[] = {
MM_UTIL_JPEG_DECODE_DOWNSCALE_1_8,
};
+#define _NUM_OF_COLORSPACE (sizeof(_convert_colorspace_tbl)/sizeof(int))
+#define _NUM_OF_SCALE (sizeof(_convert_decode_scale_tbl)/sizeof(int))
+
static int _convert_image_util_error_code(const char *func, int code)
{
int ret = IMAGE_UTIL_ERROR_INVALID_OPERATION;
return true;
}
+static gboolean _is_valid_colorspace(image_util_colorspace_e colorspace)
+{
+ if (colorspace < 0 || colorspace >= _NUM_OF_COLORSPACE)
+ return FALSE;
+
+ return TRUE;
+}
+
+static gboolean _is_supported_colorspace(image_util_colorspace_e colorspace, image_util_type_e type)
+{
+ switch (type) {
+ case IMAGE_UTIL_JPEG:
+ image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == _NOT_SUPPORTED_COLORSPACE), FALSE, "[jpeg]not supported format");
+ break;
+ case IMAGE_UTIL_PNG:
+ image_util_retvm_if((_convert_png_colorspace_tbl[colorspace] == _NOT_SUPPORTED_COLORSPACE), FALSE, "[png]not supported format");
+ break;
+ case IMAGE_UTIL_GIF:
+ image_util_retvm_if((_convert_gif_colorspace_tbl[colorspace] == _NOT_SUPPORTED_COLORSPACE), FALSE, "[gif]not supported format");
+ break;
+ case IMAGE_UTIL_BMP:
+ image_util_retvm_if((_convert_bmp_colorspace_tbl[colorspace] == _NOT_SUPPORTED_COLORSPACE), FALSE, "[bmp]not supported format");
+ break;
+ default:
+ image_util_retvm_if((_convert_bmp_colorspace_tbl[colorspace] == _NOT_SUPPORTED_COLORSPACE), FALSE, "Invalid image type");
+ }
+ return TRUE;
+}
+
int image_util_foreach_supported_jpeg_colorspace(image_util_supported_jpeg_colorspace_cb callback, void *user_data)
{
- int i = 0;
+ image_util_colorspace_e idx = _NOT_SUPPORTED_COLORSPACE;
DEPRECATION_LOGW("image_util_foreach_supported_jpeg_colorspace()", "image_util_foreach_supported_colorspace()");
image_util_retvm_if((callback == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "callback is null");
/* RGB has higher precedence than YUV */
- for (i = sizeof(_convert_jpeg_colorspace_tbl) / sizeof(int) - 1; i >= 0; i--) {
- if (_convert_jpeg_colorspace_tbl[i] != -1)
- if (false == callback(i, user_data))
+ for (idx = _NUM_OF_COLORSPACE - 1; idx >= 0; idx--) {
+ if (_is_supported_colorspace(idx, IMAGE_UTIL_JPEG))
+ if (false == callback(idx, user_data))
return IMAGE_UTIL_ERROR_NONE;
}
transformation_s *_handle = (transformation_s *) calloc(1, sizeof(transformation_s));
image_util_retvm_if((_handle == NULL), IMAGE_UTIL_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY(0x%08x)", IMAGE_UTIL_ERROR_OUT_OF_MEMORY);
- _handle->colorspace = -1;
+ _handle->colorspace = _NOT_SUPPORTED_COLORSPACE;
_handle->_util_cb = NULL;
_handle->image_h = 0;
_handle->hardware_acceleration = false;
image_util_retvm_if((dest == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "dest is null");
image_util_retvm_if((src == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "src is null");
- image_util_retvm_if((dest_colorspace < 0 || dest_colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid dst_colorspace");
- image_util_retvm_if((src_colorspace < 0 || src_colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid src_colorspace");
+ image_util_retvm_if((_is_valid_colorspace(dest_colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid dst_colorspace");
+ image_util_retvm_if((_is_valid_colorspace(src_colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid src_colorspace");
err = mm_util_convert_colorspace(src, width, height, _convert_colorspace_tbl[src_colorspace], dest, _convert_colorspace_tbl[dest_colorspace]);
{
int err = MM_UTIL_ERROR_NONE;
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
image_util_retvm_if((width <= 0 || height <= 0), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid width or Invalid height");
image_util_retvm_if((size == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "size is null");
image_util_retvm_if((dest == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "dest is null");
image_util_retvm_if((src == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "src is null");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
image_util_retvm_if((dest_width == NULL || dest_height == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "dest_width or dest_height is null");
image_util_retvm_if((*dest_width <= 0 || *dest_height <= 0), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid dest_width or Invalid dest_height");
image_util_retvm_if((dest == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "dest is null");
image_util_retvm_if((src == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "src is null");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
image_util_retvm_if((dest_rotation < 0 || dest_rotation > IMAGE_UTIL_ROTATION_FLIP_VERT), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid rotation");
image_util_retvm_if((dest_width == NULL || dest_height == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "dest_width or dest_height is null");
image_util_retvm_if((dest == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "dest is null");
image_util_retvm_if((src == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "src is null");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
image_util_retvm_if((width == NULL || height == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "width or height is null");
image_util_retvm_if((src_width <= x || src_height <= y || src_width < x + *width || src_height < y + *height), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid crop area");
image_util_retvm_if((image_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "image_buffer is null");
image_util_retvm_if((size == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "size is null");
image_util_retvm_if((strlen(path) == 0), IMAGE_UTIL_ERROR_NO_SUCH_FILE, "Invalid path");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_supported_colorspace(colorspace, IMAGE_UTIL_JPEG) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
mm_util_jpeg_yuv_data decoded;
memset(&decoded, 0, sizeof(mm_util_jpeg_yuv_data));
image_util_retvm_if((jpeg_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "jpeg_buffer is null");
image_util_retvm_if((image_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "image_buffer is null");
image_util_retvm_if((size == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "size is null");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_supported_colorspace(colorspace, IMAGE_UTIL_JPEG) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
mm_util_jpeg_yuv_data decoded;
memset(&decoded, 0, sizeof(mm_util_jpeg_yuv_data));
image_util_retvm_if((image_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "image_buffer is null");
image_util_retvm_if((size == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "size is null");
image_util_retvm_if((strlen(path) == 0), IMAGE_UTIL_ERROR_NO_SUCH_FILE, "Invalid path");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- image_util_retvm_if((downscale < 0 || downscale >= sizeof(_convert_decode_scale_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "downsacle is invalid");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_supported_colorspace(colorspace, IMAGE_UTIL_JPEG) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ image_util_retvm_if((downscale < 0 || downscale >= _NUM_OF_SCALE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "downsacle is invalid");
mm_util_jpeg_yuv_data decoded;
memset(&decoded, 0, sizeof(mm_util_jpeg_yuv_data));
image_util_retvm_if((jpeg_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "jpeg_buffer is null");
image_util_retvm_if((image_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "image_buffer is null");
image_util_retvm_if((size == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "size is null");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- image_util_retvm_if((downscale < 0 || downscale >= sizeof(_convert_decode_scale_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "downsacle is invalid");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_supported_colorspace(colorspace, IMAGE_UTIL_JPEG) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ image_util_retvm_if((downscale < 0 || downscale >= _NUM_OF_SCALE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "downsacle is invalid");
mm_util_jpeg_yuv_data decoded;
memset(&decoded, 0, sizeof(mm_util_jpeg_yuv_data));
image_util_retvm_if((path == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "path is null");
image_util_retvm_if((buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "buffer is null");
image_util_retvm_if((strlen(path) == 0), IMAGE_UTIL_ERROR_NO_SUCH_FILE, "Invalid path");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_supported_colorspace(colorspace, IMAGE_UTIL_JPEG) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
err = mm_util_jpeg_encode_to_file(path, (void *)buffer, width, height, _convert_jpeg_colorspace_tbl[colorspace], quality);
return _convert_image_util_error_code(__func__, err);
image_util_retvm_if((jpeg_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "jpeg_buffer is null");
image_util_retvm_if((image_buffer == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "image_buffer is null");
image_util_retvm_if((jpeg_size == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "jpeg_size is null");
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ image_util_retvm_if((_is_supported_colorspace(colorspace, IMAGE_UTIL_JPEG) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
err = mm_util_jpeg_encode_to_memory((void **)jpeg_buffer, jpeg_size, (void *)image_buffer, width, height, _convert_jpeg_colorspace_tbl[colorspace], quality);
return _convert_image_util_error_code(__func__, err);
int image_util_foreach_supported_colorspace(image_util_type_e image_type, image_util_supported_colorspace_cb callback, void *user_data)
{
- int i = 0;
+ image_util_colorspace_e idx = _NOT_SUPPORTED_COLORSPACE;
image_util_retvm_if((callback == NULL), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "callback is null");
- switch (image_type) {
- case IMAGE_UTIL_JPEG:
- /* RGB has higher precedence than YUV */
- for (i = sizeof(_convert_jpeg_colorspace_tbl) / sizeof(int) - 1; i >= 0; i--) {
- if (_convert_jpeg_colorspace_tbl[i] != -1)
- if (false == callback(i, user_data))
+ if ((image_type == IMAGE_UTIL_JPEG) || (image_type == IMAGE_UTIL_PNG)
+ || (image_type == IMAGE_UTIL_GIF) || (image_type == IMAGE_UTIL_BMP)) {
+ for (idx = _NUM_OF_COLORSPACE - 1; idx >= 0; idx--) {
+ if (_is_supported_colorspace(idx, image_type))
+ if (false == callback(idx, user_data))
return IMAGE_UTIL_ERROR_NONE;
}
- break;
- case IMAGE_UTIL_PNG:
- for (i = sizeof(_convert_png_colorspace_tbl) / sizeof(int) - 1; i >= 0; i--) {
- if (_convert_png_colorspace_tbl[i] != -1)
- if (false == callback(i, user_data))
- return IMAGE_UTIL_ERROR_NONE;
-
- }
- break;
- case IMAGE_UTIL_GIF:
- for (i = sizeof(_convert_gif_colorspace_tbl) / sizeof(int) - 1; i >= 0; i--) {
- if (_convert_gif_colorspace_tbl[i] != -1)
- if (false == callback(i, user_data))
- return IMAGE_UTIL_ERROR_NONE;
-
- }
- break;
- case IMAGE_UTIL_BMP:
- for (i = sizeof(_convert_bmp_colorspace_tbl) / sizeof(int) - 1; i >= 0; i--) {
- if (_convert_bmp_colorspace_tbl[i] != -1)
- if (false == callback(i, user_data))
- return IMAGE_UTIL_ERROR_NONE;
-
- }
- break;
- default:
+ } else {
return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
}
return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
}
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_jpeg_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- switch (_handle->image_type) {
- case IMAGE_UTIL_JPEG:
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- case IMAGE_UTIL_PNG:
- image_util_retvm_if((_convert_png_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- case IMAGE_UTIL_GIF:
- image_util_retvm_if((_convert_gif_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- case IMAGE_UTIL_BMP:
- image_util_retvm_if((_convert_bmp_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- default:
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+ if ((_handle->image_type == IMAGE_UTIL_JPEG) || (_handle->image_type == IMAGE_UTIL_PNG)
+ || (_handle->image_type == IMAGE_UTIL_GIF) || (_handle->image_type == IMAGE_UTIL_BMP)) {
+ image_util_retvm_if((_is_supported_colorspace(colorspace, _handle->image_type) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ } else {
image_util_error("Invalid image type");
return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
}
image_util_error("Wrong image format");
return IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT;
}
- image_util_retvm_if((down_scale < 0 || down_scale >= sizeof(image_util_scale_e)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "downscale is invalid");
+ image_util_retvm_if((down_scale < 0 || down_scale >= _NUM_OF_SCALE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "downscale is invalid");
_handle->down_scale = down_scale;
return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
}
- image_util_retvm_if((colorspace < 0 || colorspace >= sizeof(_convert_jpeg_colorspace_tbl) / sizeof(int)), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
- switch (_handle->image_type) {
- case IMAGE_UTIL_JPEG:
- image_util_retvm_if((_convert_jpeg_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- case IMAGE_UTIL_PNG:
- image_util_retvm_if((_convert_png_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- case IMAGE_UTIL_GIF:
- image_util_retvm_if((_convert_gif_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- case IMAGE_UTIL_BMP:
- image_util_retvm_if((_convert_bmp_colorspace_tbl[colorspace] == -1), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
- break;
- default:
+ image_util_retvm_if((_is_valid_colorspace(colorspace) == FALSE), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid colorspace");
+
+ if ((_handle->image_type == IMAGE_UTIL_JPEG) || (_handle->image_type == IMAGE_UTIL_PNG)
+ || (_handle->image_type == IMAGE_UTIL_GIF) || (_handle->image_type == IMAGE_UTIL_BMP)) {
+ image_util_retvm_if((_is_supported_colorspace(colorspace, _handle->image_type) == FALSE), IMAGE_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported format");
+ } else {
image_util_error("Invalid image type");
return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
}