int src_format, unsigned int src_length, unsigned int jpeg_quality,
void **result_data, unsigned int *result_length)
{
- int ret = 0;
+ int ret = MM_UTIL_ERROR_NONE;
gboolean ret_conv = TRUE;
- int jpeg_format = 0;
+ mm_util_color_format_e jpeg_format = MM_UTIL_COLOR_NUM;
unsigned char *converted_src = NULL;
unsigned int converted_src_size = 0;
+ mm_util_image_h decoded = NULL;
+ void *encoded_data = NULL;
+ size_t encoded_data_size = 0;
mmf_return_val_if_fail(src_data && result_data && result_length, FALSE);
return FALSE;
}
- ret = mm_util_jpeg_encode_to_memory(result_data, result_length,
- converted_src, src_width, src_height, jpeg_format, jpeg_quality);
+ converted_src_size = (converted_src && (converted_src != src_data)) ? converted_src_size : src_length;
+ ret = mm_image_create_image(src_width, src_height, jpeg_format, converted_src, (size_t)converted_src_size, &decoded);
+ if (ret != MM_UTIL_ERROR_NONE) {
+ _mmcam_dbg_err("mm_image_create_image error [%d]", ret);
+ if (converted_src && (converted_src != src_data))
+ free(converted_src);
+ return FALSE;
+ }
+
+ ret = mm_util_encode_to_jpeg_memory(decoded, jpeg_quality, &encoded_data, &encoded_data_size);
+ mm_image_destroy_image(decoded);
if (converted_src && (converted_src != src_data)) {
free(converted_src);
converted_src = NULL;
}
- if (ret != MM_ERROR_NONE) {
+ if (ret != MM_UTIL_ERROR_NONE) {
_mmcam_dbg_err("No encoder supports %d format, error code %x", src_format, ret);
+ if (encoded_data)
+ free(encoded_data);
return FALSE;
}
+ *result_data = encoded_data;
+ *result_length = (unsigned int)encoded_data_size;
+
return TRUE;
}