364 switch (cinfo->in_color_space) {
366 if (cinfo->input_components != 1)
367 ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
371#if RGB_PIXELSIZE != 3
372 if (cinfo->input_components != RGB_PIXELSIZE)
373 ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
378 if (cinfo->input_components != 3)
379 ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
384 if (cinfo->input_components != 4)
385 ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
389 if (cinfo->input_components < 1)
390 ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
395 switch (cinfo->jpeg_color_space) {
397 if (cinfo->num_components != 1)
398 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
399 if (cinfo->in_color_space == JCS_GRAYSCALE)
400 cconvert->pub.color_convert = grayscale_convert;
401 else if (cinfo->in_color_space == JCS_RGB) {
402 cconvert->pub.start_pass = rgb_ycc_start;
403 cconvert->pub.color_convert = rgb_gray_convert;
407 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
411 if (cinfo->num_components != 3)
412 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
416 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
420 if (cinfo->num_components != 3)
421 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
422 if (cinfo->in_color_space ==
JCS_RGB) {
423 cconvert->pub.start_pass = rgb_ycc_start;
424 cconvert->pub.color_convert = rgb_ycc_convert;
428 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
432 if (cinfo->num_components != 4)
433 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
434 if (cinfo->in_color_space ==
JCS_CMYK)
437 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
441 if (cinfo->num_components != 4)
442 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
443 if (cinfo->in_color_space ==
JCS_CMYK) {
444 cconvert->pub.start_pass = rgb_ycc_start;
445 cconvert->pub.color_convert = cmyk_ycck_convert;
449 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
453 if (cinfo->jpeg_color_space != cinfo->in_color_space ||
454 cinfo->num_components != cinfo->input_components)
455 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);