+ else if(cinfo.out_color_space == JCS_YCCK)
+ {
+ //FIXME
+ fprintf(stderr, "Error: Can't convert YCCK to RGB.\n");
+ return -1;
+ }
+ else if(cinfo.out_color_space == JCS_YCbCr)
+ {
+ for (y=0;y<cinfo.output_height;y++) {
+ int x;
+ for(x=0;x<cinfo.output_width;x++) {
+ int y = js[x*3+0];
+ int u = js[x*3+1];
+ int v = js[x*3+1];
+ // untested:
+ js[x*3+0] = y + ((360*(v-128))>>8);
+ js[x*3+1] = y - ((88*(u-128)-183*(v-128))>>8);
+ js[x*3+2] = y + ((455 * (u-128))>>8);
+ }
+ }
+ }
+ else if(cinfo.out_color_space == JCS_CMYK)
+ {
+ for (y=0;y<cinfo.output_height;y++)
+ { int x;
+ jpeg_read_scanlines(&cinfo,&js,1);
+ /* This routine seems to work for now-
+ It's a mixture of 3 different
+ CMYK->RGB conversion routines I found in the
+ web. (which all produced garbage)
+ I'm happily accepting suggestions. (mk)*/
+ for(x=0;x<cinfo.output_width;x++) {
+ int white = 255 - js[x*4+3];
+ js[x*3+0] = white - ((js[x*4]*white)>>8);
+ js[x*3+1] = white - ((js[x*4+1]*white)>>8);
+ js[x*3+2] = white - ((js[x*4+2]*white)>>8);
+ }
+ swf_SetJPEGBitsLines(out,(U8**)&js,1);
+ }
+ }