diff --git a/legacy/eet/ChangeLog b/legacy/eet/ChangeLog index fcafa795cd..0b3c5fbe65 100644 --- a/legacy/eet/ChangeLog +++ b/legacy/eet/ChangeLog @@ -540,3 +540,9 @@ * Added a new macro for adding arrays of basic types. EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY + +2011-11-16 Carsten Haitzler (The Rasterman) + + * JPEG encode and decode in eet now uses ISLOW (not IFAST) due to + noticable quality losses in the chase for speed. It will use + IFAST for quality less than 60 when encoding diff --git a/legacy/eet/NEWS b/legacy/eet/NEWS index 80e5965fa1..43118b0aa1 100644 --- a/legacy/eet/NEWS +++ b/legacy/eet/NEWS @@ -25,3 +25,4 @@ Improvements: * use stringshare for mmaped file names * use eina locking wrappers * use eina_file for file IO + * jpeg encode and decode quality improved at expense of speed diff --git a/legacy/eet/src/lib/eet_image.c b/legacy/eet/src/lib/eet_image.c index 06816b1cd5..79f6f906d4 100644 --- a/legacy/eet/src/lib/eet_image.c +++ b/legacy/eet/src/lib/eet_image.c @@ -447,7 +447,7 @@ eet_data_image_jpeg_rgb_decode(const void *data, } jpeg_read_header(&cinfo, TRUE); - cinfo.dct_method = JDCT_FASTEST; + cinfo.dct_method = JDCT_ISLOW; // JDCT_FLOAT JDCT_IFAST(quality loss) cinfo.do_fancy_upsampling = FALSE; cinfo.do_block_smoothing = FALSE; jpeg_start_decompress(&cinfo); @@ -595,7 +595,7 @@ eet_data_image_jpeg_alpha_decode(const void *data, } jpeg_read_header(&cinfo, TRUE); - cinfo.dct_method = JDCT_FASTEST; + cinfo.dct_method = JDCT_ISLOW; // JDCT_FLOAT JDCT_IFAST(quality loss) cinfo.do_fancy_upsampling = FALSE; cinfo.do_block_smoothing = FALSE; jpeg_start_decompress(&cinfo); @@ -832,8 +832,12 @@ eet_data_image_jpeg_convert(int *size, cinfo.image_height = h; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; + cinfo.optimize_coding = FALSE; + cinfo.dct_method = JDCT_ISLOW; // JDCT_FLOAT JDCT_IFAST(quality loss) + if (quality < 60) cinfo.dct_method = JDCT_IFAST; jpeg_set_defaults(&cinfo); jpeg_set_quality(&cinfo, quality, TRUE); + if (quality >= 90) { cinfo.comp_info[0].h_samp_factor = 1; @@ -925,6 +929,9 @@ eet_data_image_jpeg_alpha_convert(int *size, cinfo.image_height = h; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; + cinfo.optimize_coding = FALSE; + cinfo.dct_method = JDCT_ISLOW; // JDCT_FLOAT JDCT_IFAST(quality loss) + if (quality < 60) cinfo.dct_method = JDCT_IFAST; jpeg_set_defaults(&cinfo); jpeg_set_quality(&cinfo, quality, TRUE); if (quality >= 90)