Remove dependency of mmutil-jpeg. Use capi-media-image-util instead 89/146289/1 accepted/tizen/unified/20170829.053211 submit/tizen/20170828.073653
authorHaejeong Kim <backto.kim@samsung.com>
Mon, 28 Aug 2017 01:16:59 +0000 (10:16 +0900)
committerHaejeong Kim <backto.kim@samsung.com>
Mon, 28 Aug 2017 01:16:59 +0000 (10:16 +0900)
Change-Id: Ifdf3ec27e60e4e4b4d4e34b5a8eac370524024d1

CMakeLists.txt
packaging/libmedia-thumbnail.spec
server/CMakeLists.txt
src/media-thumb-internal.c
test/CMakeLists.txt

index f405d5d..6eb775a 100755 (executable)
@@ -39,7 +39,7 @@ MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/include ${CMAKE_SOURCE_DIR}/src/include/util ${CMAKE_SOURCE_DIR}/src/include/codec ${CMAKE_SOURCE_DIR}/src/include/util ${CMAKE_SOURCE_DIR}/src/include/ipc ${CMAKE_SOURCE_DIR}/server/include ${CMAKE_SOURCE_DIR}/md5)
 
 INCLUDE(FindPkgConfig)
-       pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog sqlite3 mm-fileinfo aul libexif ecore-evas evas capi-media-image-util mmutil-jpeg libmedia-utils libtzplatform-config db-util)
+       pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog sqlite3 mm-fileinfo aul libexif ecore-evas evas capi-media-image-util libmedia-utils libtzplatform-config db-util)
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
index d2c53e4..27a0c47 100644 (file)
@@ -14,7 +14,6 @@ BuildRequires: cmake
 BuildRequires: pkgconfig(dlog)
 BuildRequires: pkgconfig(mm-fileinfo)
 BuildRequires: pkgconfig(capi-media-image-util)
-BuildRequires: pkgconfig(mmutil-jpeg)
 BuildRequires: pkgconfig(libexif)
 BuildRequires: pkgconfig(evas)
 BuildRequires: pkgconfig(ecore)
index 1493bb5..35f14a8 100755 (executable)
@@ -5,7 +5,7 @@ SET(THUMB-SERVER
            thumb-server-internal.c)
 
 INCLUDE(FindPkgConfig)
-       pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog mm-fileinfo aul libexif ecore-evas evas mmutil-jpeg libmedia-utils libtzplatform-config)
+       pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog mm-fileinfo aul libexif ecore-evas evas libmedia-utils libtzplatform-config)
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
index 1f09570..f9ad343 100755 (executable)
@@ -38,7 +38,6 @@
 #include <unistd.h>
 
 #include <mm_file.h>
-#include <mm_util_jpeg.h>
 #include <image_util.h>
 #include <Evas.h>
 #include <Ecore_Evas.h>
@@ -218,9 +217,9 @@ int _media_thumb_rotate_argb(unsigned char *source, const unsigned int size, int
        int width = 0, height = 0;
        unsigned char *temp_buf = NULL;
 
-       if (format == MM_UTIL_JPEG_FMT_BGRA8888) {
+       if (format == IMAGE_UTIL_COLORSPACE_BGRA8888) {
                dpp = 4;
-       } else if (format == MM_UTIL_JPEG_FMT_RGB888) {
+       } else if (format == IMAGE_UTIL_COLORSPACE_RGB888) {
                dpp = 3;
        } else {
                thumb_err("Invalid parameter");
@@ -479,6 +478,55 @@ static int _media_thumb_get_data_from_exif(ExifData *ed,
        return MS_MEDIA_ERR_NONE;
 }
 
+static int __media_thumb_decode_jpeg(unsigned char *src, unsigned long long size, image_util_colorspace_e colorspace, unsigned char **dst, unsigned long *width, unsigned long *height, unsigned long long *dst_size)
+{
+       int err = IMAGE_UTIL_ERROR_NONE;
+       image_util_decode_h decoder = NULL;
+
+       err = image_util_decode_create(&decoder);
+       if (err != IMAGE_UTIL_ERROR_NONE) {
+               thumb_err("image_util_decode_create failed! (%d)", err);
+               return MS_MEDIA_ERR_INTERNAL;
+       }
+
+       err = image_util_decode_set_input_buffer(decoder, src, size);
+       if (err != IMAGE_UTIL_ERROR_NONE) {
+               thumb_err("image_util_decode_set_input_buffer failed! (%d)", err);
+               image_util_decode_destroy(decoder);
+               return MS_MEDIA_ERR_INTERNAL;
+       }
+
+       err = image_util_decode_set_colorspace(decoder, colorspace);
+       if (err != IMAGE_UTIL_ERROR_NONE) {
+               thumb_err("image_util_decode_set_colorspace failed! (%d)", err);
+               image_util_decode_destroy(decoder);
+               return MS_MEDIA_ERR_INTERNAL;
+       }
+
+       err = image_util_decode_set_output_buffer(decoder, dst);
+       if (err != IMAGE_UTIL_ERROR_NONE) {
+               thumb_err("image_util_decode_set_output_buffer failed! (%d)", err);
+               image_util_decode_destroy(decoder);
+               return MS_MEDIA_ERR_INTERNAL;
+       }
+
+       err = image_util_decode_run(decoder, width, height, dst_size);
+       if (err != IMAGE_UTIL_ERROR_NONE) {
+               thumb_err("image_util_decode_run failed! (%d)", err);
+               image_util_decode_destroy(decoder);
+               return MS_MEDIA_ERR_INTERNAL;
+       }
+
+       err = image_util_decode_destroy(decoder);
+       if (err != IMAGE_UTIL_ERROR_NONE) {
+               thumb_err("image_util_decode_destroy failed! (%d)", err);
+               return MS_MEDIA_ERR_INTERNAL;
+       }
+
+       return MS_MEDIA_ERR_NONE;
+}
+
+
 int _media_thumb_get_thumb_from_exif(ExifData *ed,
                                                                const char *file_full_path,
                                                                const char *thumb_path,
@@ -491,11 +539,12 @@ int _media_thumb_get_thumb_from_exif(ExifData *ed,
        int size = 0;
        int thumb_width = 0;
        int thumb_height = 0;
+       unsigned long long thumb_size = 0;
+       unsigned char *raw_image = NULL;
        int origin_width = 0;
        int origin_height = 0;
        void *thumb = NULL;
        bool is_rotated = (orientation == ROT_90 || orientation == ROT_180 || orientation == ROT_270) ? TRUE : FALSE;
-       mm_util_jpeg_yuv_data decoded = {0,};
 
        if (ed == NULL) {
                return MS_MEDIA_ERR_INVALID_PARAMETER;
@@ -526,16 +575,13 @@ int _media_thumb_get_thumb_from_exif(ExifData *ed,
        }
 
        if (is_rotated) {
-               err = mm_util_decode_from_jpeg_memory(&decoded, thumb, (unsigned int)size, MM_UTIL_JPEG_FMT_RGB888);
+               err = __media_thumb_decode_jpeg(thumb, size, IMAGE_UTIL_COLORSPACE_RGB888, &raw_image, (unsigned long *)&thumb_width, (unsigned long *)&thumb_height, &thumb_size);
                SAFE_FREE(thumb);
                if (err != MS_MEDIA_ERR_NONE) {
-                       thumb_err("mm_util_decode_from_jpeg_turbo_memory failed : %d", err);
+                       thumb_err("__media_thumb_decode_jpeg failed : %d", err);
                        return err;
                }
 
-               thumb_width = decoded.width;
-               thumb_height = decoded.height;
-
                int rot_type = IMAGE_UTIL_ROTATION_NONE;
                if (orientation == ROT_90) {
                        rot_type = IMAGE_UTIL_ROTATION_90;
@@ -544,17 +590,17 @@ int _media_thumb_get_thumb_from_exif(ExifData *ed,
                } else if (orientation == ROT_270) {
                        rot_type = IMAGE_UTIL_ROTATION_270;
                }
-               err = _media_thumb_rotate_thumb(decoded.data, decoded.size, &(decoded.width), &(decoded.height), rot_type, MM_UTIL_JPEG_FMT_RGB888);
+               err = _media_thumb_rotate_thumb(raw_image, thumb_size, &thumb_width, &thumb_height, rot_type, IMAGE_UTIL_COLORSPACE_RGB888);
                if (err != MS_MEDIA_ERR_NONE) {
                        thumb_err("_media_thumb_rotate_thumb falied: %d", err);
                        SAFE_FREE(thumb_info->data);
                        return err;
                }
-               //thumb_dbg("Width : %d, Height : %d", decoded.width, decoded.height);
-               thumb_info->data = decoded.data;
-               thumb_info->size = decoded.size;
-               thumb_info->width = decoded.width;
-               thumb_info->height = decoded.height;
+
+               thumb_info->data = raw_image;
+               thumb_info->size = thumb_size;
+               thumb_info->width = thumb_width;
+               thumb_info->height = thumb_height;
        } else {
                /*in this case, just write raw data in file */
                thumb_dbg_slog("Thumb is :%s", thumb_path);
@@ -1118,7 +1164,7 @@ int _media_thumb_video(const char *origin_path, int thumb_width, int thumb_heigh
                SAFE_FREE(new_frame);
 
                if (rot_type == IMAGE_UTIL_ROTATION_90 || rot_type == IMAGE_UTIL_ROTATION_180 || rot_type == IMAGE_UTIL_ROTATION_270) {
-                       err = _media_thumb_rotate_thumb(thumb_info->data, thumb_info->size, &(thumb_info->width), &(thumb_info->height), rot_type, MM_UTIL_JPEG_FMT_BGRA8888);
+                       err = _media_thumb_rotate_thumb(thumb_info->data, thumb_info->size, &(thumb_info->width), &(thumb_info->height), rot_type, IMAGE_UTIL_COLORSPACE_BGRA8888);
                        if (err != MS_MEDIA_ERR_NONE) {
                                thumb_err("_media_thumb_rotate_thumb falied: %d", err);
                                SAFE_FREE(thumb_info->data);
index 20f7d4e..51c570d 100644 (file)
@@ -1,7 +1,7 @@
 SET(TEST-THUMB "test-thumb.c")
 
 INCLUDE(FindPkgConfig)
-       pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog mm-fileinfo aul libexif ecore-evas evas mmutil-jpeg libmedia-utils libtzplatform-config)
+       pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog mm-fileinfo aul libexif ecore-evas evas libmedia-utils libtzplatform-config)
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")