#include <inttypes.h>
#ifndef USE_TIZEN_60
#include <tbm_surface.h>
-#include <mm_util_image.h>
-#include <mm_util_imgp.h>
-#include <mm_error.h>
+#include <image_util.h>
#endif
#define USECONDS_TO_MSECONDS(usec) ((usec) / G_GINT64_CONSTANT (1000))
}
#ifndef USE_TIZEN_60
-static int __convert_colorspace(unsigned char *src_data, size_t src_size, int src_w, int src_h, mm_util_color_format_e src_fmt, mm_util_color_format_e dst_fmt, snapshot_data_s *result)
+static int __convert_colorspace(unsigned char *src_data, size_t src_size, int src_w, int src_h, image_util_colorspace_e src_colorspace, image_util_colorspace_e dst_colorspace, snapshot_data_s *result)
{
int ret;
- mm_util_image_h src_image;
- mm_util_image_h dst_image;
+ image_util_image_h src_image = NULL;
+ image_util_image_h dst_image = NULL;
+ transformation_h transform = NULL;
size_t size;
RET_VAL_IF(src_data == NULL, -1, "src_data is NULL");
RET_VAL_IF(result == NULL, -1, "result is NULL");
- ret = mm_image_create_image(src_w, src_h, src_fmt, src_data, src_size, &src_image);
- RET_VAL_IF(ret != MM_ERROR_NONE, -1, "failed to mm_image_create_image()");
+ ret = image_util_create_image(src_w, src_h, src_colorspace, src_data, src_size, &src_image);
+ RET_VAL_IF(ret != IMAGE_UTIL_ERROR_NONE, -1, "failed to image_util_create_image()");
- ret = mm_util_convert_colorspace(src_image, dst_fmt, &dst_image);
- mm_image_destroy_image(src_image);
- RET_VAL_IF(ret != MM_ERROR_NONE, -1, "failed to mm_util_convert_colorspace()");
+ if ((ret = image_util_transform_create(&transform) != IMAGE_UTIL_ERROR_NONE)) {
+ LOG_ERROR("failed to image_util_transform_create(), ret[0x%x]", ret);
+ goto error;
+ }
+
+ if ((ret = image_util_transform_set_colorspace(transform, dst_colorspace) != IMAGE_UTIL_ERROR_NONE)) {
+ LOG_ERROR("failed to image_util_transform_set_colorspace(), ret[0x%x]", ret);
+ goto error;
+ }
- mm_image_debug_image(dst_image, NULL);
+ if ((ret = image_util_transform_run2(transform, src_image, &dst_image) != IMAGE_UTIL_ERROR_NONE)) {
+ LOG_ERROR("failed to image_util_transform_run2(), ret[0x%x]", ret);
+ goto error;
+ }
+
+ if ((ret = image_util_get_image(dst_image, &result->width, &result->height, NULL, &result->data, &size) != IMAGE_UTIL_ERROR_NONE)) {
+ LOG_ERROR("failed to image_util_get_image(), ret[0x%x]", ret);
+ goto error;
+ }
- ret = mm_image_get_image(dst_image, &result->width, &result->height, NULL, &result->data, &size);
- mm_image_destroy_image(dst_image);
- RET_VAL_IF(ret != MM_ERROR_NONE, -1, "failed to mm_image_get_image()");
+ image_util_transform_destroy(transform);
+ image_util_destroy_image(dst_image);
+ image_util_destroy_image(src_image);
result->size = (uint32_t)size;
- LOG_INFO("src[data:%p, size:%zu, %dx%d, fmt:%d] -> dst[data:%p, size:%u, %ux%u, fmt:%d]",
- src_data, src_size, src_w, src_h, src_fmt, result->data, result->size, result->width, result->height, dst_fmt);
+ LOG_INFO("src[data:%p, size:%zu, %dx%d, colorspace:%d] -> dst[data:%p, size:%u, %ux%u, colorspace:%d]",
+ src_data, src_size, src_w, src_h, src_colorspace, result->data, result->size, result->width, result->height, dst_colorspace);
return 0;
+error:
+ if (transform)
+ image_util_transform_destroy(transform);
+ if (dst_image)
+ image_util_destroy_image(dst_image);
+ if (src_image)
+ image_util_destroy_image(src_image);
+ return -1;
}
-static int __get_mm_util_color_format(tbm_format in_format, mm_util_color_format_e *out_format)
+static int __get_image_util_colorspace(tbm_format in_format, image_util_colorspace_e *colorspace)
{
switch(in_format) {
case TBM_FORMAT_NV12:
- *out_format = MM_UTIL_COLOR_NV12;
+ *colorspace = IMAGE_UTIL_COLORSPACE_NV12;
break;
case TBM_FORMAT_YUV420:
- *out_format = MM_UTIL_COLOR_YUV420;
+ *colorspace = IMAGE_UTIL_COLORSPACE_I420;
break;
case TBM_FORMAT_BGRA8888:
- *out_format = MM_UTIL_COLOR_BGRA;
+ *colorspace = IMAGE_UTIL_COLORSPACE_BGRA8888;
break;
case TBM_FORMAT_BGRX8888:
- *out_format = MM_UTIL_COLOR_BGRX;
+ *colorspace = IMAGE_UTIL_COLORSPACE_BGRX8888;
break;
case TBM_FORMAT_ARGB8888:
- *out_format = MM_UTIL_COLOR_ARGB;
+ *colorspace = IMAGE_UTIL_COLORSPACE_ARGB8888;
break;
default:
- LOG_ERROR("invalid format");
+ LOG_ERROR("invalid tbm format");
return -1;
}
return 0;
unsigned char *tmp_src = NULL;
unsigned int i;
tbm_surface_info_s info;
- mm_util_color_format_e src_format;
+ image_util_colorspace_e src_colorspace;
RET_VAL_IF(!tbm_surf, -1, "tbm_surf is NULL");
RET_VAL_IF(!snapshot, -1, "snapshot is NULL");
LOG_DEBUG("%c%c%c%c, %dx%d, size:%d, num of planes:%d",
FOURCC_STR(info.format), info.width, info.height, info.size, info.num_planes);
- if (__get_mm_util_color_format(info.format, &src_format) < 0) {
- LOG_ERROR("failed to __get_mm_util_color_format()");
+ if (__get_image_util_colorspace(info.format, &src_colorspace) < 0) {
+ LOG_ERROR("failed to __get_image_util_color_space()");
return -1;
}
- switch (src_format) {
- case MM_UTIL_COLOR_NV12:
+ switch (src_colorspace) {
+ case IMAGE_UTIL_COLORSPACE_NV12:
src_size = (info.width * info.height) + (info.width * (info.height >> 1));
dst_buffer = (unsigned char *)g_malloc(src_size);
tmp_src += info.planes[1].stride;
}
break;
- case MM_UTIL_COLOR_YUV420:
+ case IMAGE_UTIL_COLORSPACE_I420:
src_size = (info.width * info.height) * 2;
dst_buffer = (unsigned char *)g_malloc(src_size);
tmp_src += info.planes[2].stride;
}
break;
- case MM_UTIL_COLOR_BGRX:
- case MM_UTIL_COLOR_BGRA:
- case MM_UTIL_COLOR_ARGB:
+ case IMAGE_UTIL_COLORSPACE_BGRA8888:
+ case IMAGE_UTIL_COLORSPACE_BGRX8888:
+ case IMAGE_UTIL_COLORSPACE_ARGB8888:
src_size = (info.width * 4) * info.height;
dst_buffer = (unsigned char *)g_malloc(src_size);
}
return __convert_colorspace(dst_buffer, src_size, info.width, info.height,
- src_format, MM_UTIL_COLOR_RGB24, snapshot);
+ src_colorspace, IMAGE_UTIL_COLORSPACE_RGB888, snapshot);
}
static int __get_rgb24_frame(esplusplayer_handle espp, snapshot_data_s *snapshot)