Modify jpeg open and set parameters 44/215144/1
authorjiyong.min <jiyong.min@samsung.com>
Wed, 2 Oct 2019 01:50:47 +0000 (10:50 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Wed, 2 Oct 2019 01:50:47 +0000 (10:50 +0900)
Change-Id: I1e0e07f2de6125e9062d3ed3bbfb191d480adaab

jpeg/mm_util_jpeg.c

index 101709a..9fc21d6 100644 (file)
@@ -138,6 +138,50 @@ static void __jpeg_convert_rgb_colorspace(mm_util_color_format_e mm_color_format
                *j_color_comp = pixel_depth;
 }
 
+static void __jpeg_encode_open(j_compress_ptr cinfo, mm_util_jpeg_cont_format_e control_format, FILE *fp, void **mem, unsigned long *size)
+{
+       if (control_format == MM_UTIL_JPEG_FILE) {
+               jpeg_stdio_dest(cinfo, fp);
+               mm_util_debug("jpeg_stdio_dest");
+       } else {
+               jpeg_mem_dest(cinfo, (unsigned char **)mem, size);
+               mm_util_debug("jpeg_mem_dest");
+       }
+}
+
+static void __jpeg_decode_open(j_decompress_ptr dinfo, mm_util_jpeg_cont_format_e control_format, FILE *fp, void *src, unsigned long size)
+{
+       /*specify data source (eg, a file) */
+       if (control_format == MM_UTIL_JPEG_FILE) {
+               jpeg_stdio_src(dinfo, fp);
+               mm_util_debug("jpeg_stdio_src");
+       } else {
+               jpeg_mem_src(dinfo, src, size);
+               mm_util_debug("jpeg_mem_src");
+       }
+}
+
+static void __jpeg_decode_set_common_params(j_decompress_ptr dinfo, mm_util_color_format_e color_space, mm_util_jpeg_decode_downscale downscale)
+{
+       mm_util_debug("image width: %d height: %d color_space: %d, downscale: %d", dinfo->image_width, dinfo->image_height, color_space, downscale);
+
+       if (dinfo->image_width > ENC_MAX_LEN || dinfo->image_height > ENC_MAX_LEN) {
+               dinfo->scale_num = 1;
+               dinfo->scale_denom = 8;
+               dinfo->do_fancy_upsampling = FALSE;
+               dinfo->do_block_smoothing = FALSE;
+               dinfo->dither_mode = JDITHER_ORDERED;
+       } else if (downscale != MM_UTIL_JPEG_DECODE_DOWNSCALE_1_1) {
+               dinfo->scale_num = 1;
+               dinfo->scale_denom = (unsigned int)downscale;
+               dinfo->do_fancy_upsampling = FALSE;
+               dinfo->do_block_smoothing = FALSE;
+               dinfo->dither_mode = JDITHER_ORDERED;
+       }
+
+       dinfo->dct_method = JDCT_FASTEST;
+}
+
 static int __jpeg_decode_get_buffer_size(j_decompress_ptr dinfo, int row_stride, mm_util_color_format_e color_format, size_t *size)
 {
        *size = 0;
@@ -185,14 +229,9 @@ static int _mm_util_jpeg_encode(mm_util_jpeg_cont_format_e control_format, mm_ut
        mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "Can't set error handler");
 
        jpeg_create_compress(&cinfo);
+       mm_util_debug("jpeg_create_compress");
 
-       if (control_format == MM_UTIL_JPEG_FILE) {
-               jpeg_stdio_dest(&cinfo, fp);
-               mm_util_debug("jpeg_stdio_dest");
-       } else {
-               jpeg_mem_dest(&cinfo, (unsigned char **)mem, &size);
-               mm_util_debug("jpeg_mem_dest");
-       }
+       __jpeg_encode_open(&cinfo, control_format, fp, mem, &size);
 
        _width = cinfo.image_width = _decoded->width;
        _height = cinfo.image_height = _decoded->height;
@@ -350,34 +389,13 @@ static int _mm_util_jpeg_decode(mm_util_jpeg_cont_format_e control_format, FILE
        mm_util_debug("jpeg_create_decompress");
 
        /*specify data source (eg, a file) */
-       if (control_format == MM_UTIL_JPEG_FILE) {
-               jpeg_stdio_src(&dinfo, fp);
-               mm_util_debug("jpeg_stdio_src");
-       } else {
-               jpeg_mem_src(&dinfo, src, (unsigned long)size);
-               mm_util_debug("jpeg_mem_src");
-       }
+       __jpeg_decode_open(&dinfo, control_format, fp, src, (unsigned long)size);
 
        /*read file parameters with jpeg_read_header() */
        jpeg_read_header(&dinfo, TRUE);
        mm_util_debug("jpeg_read_header");
 
-       mm_util_debug("image width: %d height: %d", dinfo.image_width, dinfo.image_height);
-       if (dinfo.image_width > ENC_MAX_LEN || dinfo.image_height > ENC_MAX_LEN) {
-               dinfo.scale_num = 1;
-               dinfo.scale_denom = 8;
-               dinfo.do_fancy_upsampling = FALSE;
-               dinfo.do_block_smoothing = FALSE;
-               dinfo.dither_mode = JDITHER_ORDERED;
-       } else if (downscale != MM_UTIL_JPEG_DECODE_DOWNSCALE_1_1) {
-               dinfo.scale_num = 1;
-               dinfo.scale_denom = (unsigned int)downscale;
-               dinfo.do_fancy_upsampling = FALSE;
-               dinfo.do_block_smoothing = FALSE;
-               dinfo.dither_mode = JDITHER_ORDERED;
-       }
-
-       dinfo.dct_method = JDCT_FASTEST;
+       __jpeg_decode_set_common_params(&dinfo, color_format, downscale);
 
        /* set parameters for decompression */
        __jpeg_convert_rgb_colorspace(color_format, &dinfo.out_color_space, NULL);