oops. memfile compatability layer bug. fixed. using ftell now. also added in

an extra "if" for "if quality >= 90 then make pixel UV sampling 1x1 not 2x2
as normal for jpeg encoding"


SVN revision: 7040
This commit is contained in:
Carsten Haitzler 2003-06-17 08:12:03 +00:00
parent 40763eba6e
commit 32061346b6
2 changed files with 32 additions and 4 deletions

View File

@ -558,7 +558,7 @@ eet_data_image_jpeg_convert(int *size, void *data, int w, int h, int alpha, int
struct jpeg_compress_struct cinfo;
FILE *f;
unsigned char *buf;
f =_eet_memfile_write_open(&d, &sz);
if (!f) return NULL;
@ -590,6 +590,15 @@ eet_data_image_jpeg_convert(int *size, void *data, int w, int h, int alpha, int
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
if (quality >= 90)
{
cinfo.comp_info[0].h_samp_factor = 1;
cinfo.comp_info[0].v_samp_factor = 1;
cinfo.comp_info[1].h_samp_factor = 1;
cinfo.comp_info[1].v_samp_factor = 1;
cinfo.comp_info[2].h_samp_factor = 1;
cinfo.comp_info[2].v_samp_factor = 1;
}
jpeg_start_compress(&cinfo, TRUE);
ptr = data;
@ -612,9 +621,9 @@ eet_data_image_jpeg_convert(int *size, void *data, int w, int h, int alpha, int
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);
_eet_memfile_write_close(f);
*size = sz;
if (buf) free(buf);
_eet_memfile_write_close(f);
return d;
}
@ -625,7 +634,7 @@ eet_data_image_jpeg_alpha_convert(int *size, void *data, int w, int h, int alpha
unsigned char *d;
int *header;
int sz1, sz2;
if (words_bigendian == -1)
{
unsigned long int v;
@ -676,6 +685,15 @@ eet_data_image_jpeg_alpha_convert(int *size, void *data, int w, int h, int alpha
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
if (quality >= 90)
{
cinfo.comp_info[0].h_samp_factor = 1;
cinfo.comp_info[0].v_samp_factor = 1;
cinfo.comp_info[1].h_samp_factor = 1;
cinfo.comp_info[1].v_samp_factor = 1;
cinfo.comp_info[2].h_samp_factor = 1;
cinfo.comp_info[2].v_samp_factor = 1;
}
jpeg_start_compress(&cinfo, TRUE);
ptr = data;
@ -750,6 +768,15 @@ eet_data_image_jpeg_alpha_convert(int *size, void *data, int w, int h, int alpha
cinfo.in_color_space = JCS_GRAYSCALE;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
if (quality >= 90)
{
cinfo.comp_info[0].h_samp_factor = 1;
cinfo.comp_info[0].v_samp_factor = 1;
cinfo.comp_info[1].h_samp_factor = 1;
cinfo.comp_info[1].v_samp_factor = 1;
cinfo.comp_info[2].h_samp_factor = 1;
cinfo.comp_info[2].v_samp_factor = 1;
}
jpeg_start_compress(&cinfo, TRUE);
ptr = data;

View File

@ -92,7 +92,8 @@ _eet_memfile_write_close(FILE *f)
{
int j;
(*(_eet_memfile_info[i].size)) = fseek(f, 0, SEEK_END);
fseek(f, 0, SEEK_END);
(*(_eet_memfile_info[i].size)) = ftell(f);
rewind(f);
(*(_eet_memfile_info[i].data)) = malloc(*(_eet_memfile_info[i].size));
if (!(*(_eet_memfile_info[i].data)))