- if (p_jp2->j2k->m_specific_param.m_decoder.m_numcomps_to_decode) {
- /* Bypass all JP2 component transforms */
- return OPJ_TRUE;
- }
-
- if (!opj_jp2_check_color(p_image, &(p_jp2->color), p_manager)) {
- return OPJ_FALSE;
- }
-
- /* Set Image Color Space */
- if (p_jp2->enumcs == 16) {
- p_image->color_space = OPJ_CLRSPC_SRGB;
- } else if (p_jp2->enumcs == 17) {
- p_image->color_space = OPJ_CLRSPC_GRAY;
- } else if (p_jp2->enumcs == 18) {
- p_image->color_space = OPJ_CLRSPC_SYCC;
- } else if (p_jp2->enumcs == 24) {
- p_image->color_space = OPJ_CLRSPC_EYCC;
- } else if (p_jp2->enumcs == 12) {
- p_image->color_space = OPJ_CLRSPC_CMYK;
- } else {
- p_image->color_space = OPJ_CLRSPC_UNKNOWN;
- }
-
- if (p_jp2->color.jp2_pclr) {
- /* Part 1, I.5.3.4: Either both or none : */
- if (!p_jp2->color.jp2_pclr->cmap) {
- opj_jp2_free_pclr(&(p_jp2->color));
- } else {
- if (!opj_jp2_apply_pclr(p_image, &(p_jp2->color), p_manager)) {
- return OPJ_FALSE;
- }
- }
- }
-
- /* Apply the color space if needed */
- if (p_jp2->color.jp2_cdef) {
- opj_jp2_apply_cdef(p_image, &(p_jp2->color), p_manager);
- }
-
- if (p_jp2->color.icc_profile_buf) {
- p_image->icc_profile_buf = p_jp2->color.icc_profile_buf;
- p_image->icc_profile_len = p_jp2->color.icc_profile_len;
- p_jp2->color.icc_profile_buf = NULL;
- }
-
- return OPJ_TRUE;