< prev index next >
src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
Print this page
@@ -1608,10 +1608,11 @@
jboolean reset) {
int ret;
int h_samp0, h_samp1, h_samp2;
int v_samp0, v_samp1, v_samp2;
+ int cid0, cid1, cid2;
jboolean retval = JNI_FALSE;
imageIODataPtr data = (imageIODataPtr)jlong_to_ptr(ptr);
j_decompress_ptr cinfo;
struct jpeg_source_mgr *src;
sun_jpeg_error_ptr jerr;
@@ -1729,12 +1730,24 @@
v_samp0 = cinfo->comp_info[0].v_samp_factor;
v_samp1 = cinfo->comp_info[1].v_samp_factor;
v_samp2 = cinfo->comp_info[2].v_samp_factor;
- if ((h_samp1 == h_samp0) && (h_samp2 == h_samp0) &&
- (v_samp1 == v_samp0) && (v_samp2 == v_samp0))
+ cid0 = cinfo->comp_info[0].component_id;
+ cid1 = cinfo->comp_info[1].component_id;
+ cid2 = cinfo->comp_info[2].component_id;
+
+ /*
+ * 8041501 : Added extra check to verify component ID's
+ * before checking sampling factors, because if we dont
+ * check component ID's we will be overwriting decision
+ * made in jdapimin.c to set default compression parameters.
+ */
+
+ if ((!(cid0 == 1 && cid1 == 2 && cid2 == 3)) &&
+ ((h_samp1 == h_samp0) && (h_samp2 == h_samp0) &&
+ (v_samp1 == v_samp0) && (v_samp2 == v_samp0)))
{
cinfo->jpeg_color_space = JCS_RGB;
/* output is already RGB, so it stays the same */
}
}
< prev index next >