*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;
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;
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);