Blob Blame History Raw
diff -up openjpeg_v1_4_sources_r697/libopenjpeg/jp2.c.poppler_regression openjpeg_v1_4_sources_r697/libopenjpeg/jp2.c
--- openjpeg_v1_4_sources_r697/libopenjpeg/jp2.c.poppler_regression	2011-01-02 12:14:45.000000000 -0600
+++ openjpeg_v1_4_sources_r697/libopenjpeg/jp2.c	2012-01-31 12:27:28.487393779 -0600
@@ -638,7 +638,7 @@ bool jp2_read_jp2h(opj_jp2_t *jp2, opj_c
     jp2_read_boxhdr(cinfo, cio, &box);
     continue;
   }
-    if(box.type == JP2_CDEF)
+    if(box.type == JP2_CDEF && !jp2->ignore_pclr_cmap_cdef)
   {
     if( !jp2_read_cdef(jp2, cio, &box, color))
  {
@@ -648,7 +648,7 @@ bool jp2_read_jp2h(opj_jp2_t *jp2, opj_c
     jp2_read_boxhdr(cinfo, cio, &box);
     continue;
   }
-    if(box.type == JP2_PCLR)
+    if(box.type == JP2_PCLR && !jp2->ignore_pclr_cmap_cdef)
   {
     if( !jp2_read_pclr(jp2, cio, &box, color))
  {
@@ -658,7 +658,7 @@ bool jp2_read_jp2h(opj_jp2_t *jp2, opj_c
     jp2_read_boxhdr(cinfo, cio, &box);
     continue;
   }
-    if(box.type == JP2_CMAP)
+    if(box.type == JP2_CMAP && !jp2->ignore_pclr_cmap_cdef)
   {
     if( !jp2_read_cmap(jp2, cio, &box, color))
  {
@@ -712,8 +712,10 @@ opj_image_t* jp2_decode(opj_jp2_t *jp2,
 	opj_event_msg(cinfo, EVT_ERROR, "Failed to decode J2K image\n");
 	return NULL;
    }
+   
+    if (!jp2->ignore_pclr_cmap_cdef){
 
-/* Set Image Color Space */
+    /* Set Image Color Space */
 	if (jp2->enumcs == 16)
 		image->color_space = CLRSPC_SRGB;
 	else if (jp2->enumcs == 17)
@@ -741,6 +743,7 @@ opj_image_t* jp2_decode(opj_jp2_t *jp2,
 	color.icc_profile_buf = NULL;
 	image->icc_profile_len = color.icc_profile_len;
    }
+   }
 	return image;
 
 }/* jp2_decode() */
@@ -953,6 +956,7 @@ void jp2_setup_decoder(opj_jp2_t *jp2, o
 	/* setup the J2K codec */
 	j2k_setup_decoder(jp2->j2k, parameters);
 	/* further JP2 initializations go here */
+	jp2->ignore_pclr_cmap_cdef = parameters->flags & OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG;
 }
 
 /* ----------------------------------------------------------------------- */
diff -up openjpeg_v1_4_sources_r697/libopenjpeg/jp2.h.poppler_regression openjpeg_v1_4_sources_r697/libopenjpeg/jp2.h
--- openjpeg_v1_4_sources_r697/libopenjpeg/jp2.h.poppler_regression	2011-01-02 12:14:45.000000000 -0600
+++ openjpeg_v1_4_sources_r697/libopenjpeg/jp2.h	2012-01-31 12:28:02.506968473 -0600
@@ -140,6 +140,7 @@ typedef struct opj_jp2 {
 	opj_jp2_comps_t *comps;
 	unsigned int j2k_codestream_offset;
 	unsigned int j2k_codestream_length;
+	bool ignore_pclr_cmap_cdef;
 } opj_jp2_t;
 
 /**
diff -up openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.c.poppler_regression openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.c
--- openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.c.poppler_regression	2011-01-02 12:14:45.000000000 -0600
+++ openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.c	2012-01-31 12:29:02.956212753 -0600
@@ -121,6 +121,7 @@ void OPJ_CALLCONV opj_set_default_decode
 
 		parameters->decod_format = -1;
 		parameters->cod_format = -1;
+		parameters->flags = 0;
 /* UniPG>> */
 #ifdef USE_JPWL
 		parameters->jpwl_correct = false;
diff -up openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.h.poppler_regression openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.h
--- openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.h.poppler_regression	2011-01-02 12:14:45.000000000 -0600
+++ openjpeg_v1_4_sources_r697/libopenjpeg/openjpeg.h	2012-01-31 12:29:59.656503901 -0600
@@ -367,6 +367,8 @@ typedef struct opj_cparameters {
 	char tcp_mct;
 } opj_cparameters_t;
 
+#define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG     0x0001
+
 /**
 Decompression parameters
 */
@@ -419,6 +421,7 @@ typedef struct opj_dparameters {
 	*/
 	OPJ_LIMIT_DECODING cp_limit_decoding;
 
+	unsigned int flags;
 } opj_dparameters_t;
 
 /** Common fields between JPEG-2000 compression and decompression master structs. */