DBG("libjpeg_fb_read_prepare()");
byte *start;
uns len = bdirect_read_prepare(i->fastbuf, &start);
+ DBG("readed %u bytes at %p", len, start);
if (!len)
{
// XXX: maybe only generate a warning and return EOI markers to recover from such errors (also in skip_input_data)
DBG("libjpeg_fill_input_buffer()");
struct libjpeg_read_internals *i = (struct libjpeg_read_internals *)cinfo;
libjpeg_fastbuf_read_commit(i);
+ libjpeg_fastbuf_read_prepare(i);
return 1;
}
{
case JCS_CMYK:
read_flags = (read_flags & ~IMAGE_COLOR_SPACE & IMAGE_CHANNELS_FORMAT) | COLOR_SPACE_CMYK;
- i->cinfo.out_color_space = JCS_YCbCr;
+ i->cinfo.out_color_space = JCS_CMYK;
+ break;
+ case JCS_YCCK:
+ read_flags = (read_flags & ~IMAGE_COLOR_SPACE & IMAGE_CHANNELS_FORMAT) | COLOR_SPACE_YCCK;
+ i->cinfo.out_color_space = JCS_YCCK;
break;
default:
read_flags = (read_flags & ~IMAGE_COLOR_SPACE & IMAGE_CHANNELS_FORMAT) | COLOR_SPACE_RGB;
}
i.cinfo.input_components = color_space_channels[img->flags & IMAGE_COLOR_SPACE];
jpeg_set_defaults(&i.cinfo);
+ jpeg_set_colorspace(&i.cinfo, i.cinfo.in_color_space);
if (io->jpeg_quality)
jpeg_set_quality(&i.cinfo, MIN(io->jpeg_quality, 100), 1);
if (io->exif_size)