From: jiyong.min Date: Wed, 2 Oct 2019 01:50:47 +0000 (+0900) Subject: Modify jpeg open and set parameters X-Git-Tag: accepted/tizen/5.5/unified/20191031.021526~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ddc148f291c2e08837c9892f25b1f08b147bb1c9;p=platform%2Fcore%2Fmultimedia%2Flibmm-utility.git Modify jpeg open and set parameters Change-Id: I1e0e07f2de6125e9062d3ed3bbfb191d480adaab --- diff --git a/jpeg/mm_util_jpeg.c b/jpeg/mm_util_jpeg.c index 101709a..9fc21d6 100644 --- a/jpeg/mm_util_jpeg.c +++ b/jpeg/mm_util_jpeg.c @@ -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);