From 83abf567369ae32e7e4ee402ddd1ed0bad63187a Mon Sep 17 00:00:00 2001 From: Antonin Descampe Date: Mon, 31 Aug 2009 13:18:20 +0000 Subject: [PATCH] JavaOpenJpegDecoder.c : fixed a signed/unsigned behaviour when returning form C to JAVA --- ChangeLog | 3 +++ JavaOpenJPEG/JavaOpenJPEGDecoder.c | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70b61563..47ca7075 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ What's New for OpenJPEG ! : changed + : added +August 31, 2009 +* [antonin] JavaOpenJpegDecoder.c : fixed a signed/unsigned behaviour when returning form C to JAVA + August 21, 2008 * [antonin] found a bug in tcd.c that was preventing to find the correct threshold in tcd_rateallocate.c for high-precision images. Applied a temporary patch but a better solution should be found. diff --git a/JavaOpenJPEG/JavaOpenJPEGDecoder.c b/JavaOpenJPEG/JavaOpenJPEGDecoder.c index a33fe9db..3f65655a 100644 --- a/JavaOpenJPEG/JavaOpenJPEGDecoder.c +++ b/JavaOpenJPEG/JavaOpenJPEGDecoder.c @@ -782,13 +782,13 @@ JNIEXPORT jint JNICALL Java_org_openJpeg_OpenJPEGJavaDecoder_internalDecodeJ2Kto ptr2 = image->comps[2].data; #ifdef CHECK_THRESHOLDS if (image->comps[0].sgnd) { - min_value = 0; - max_value = 255; - } else { min_value = -128; max_value = 127; + } else { + min_value = 0; + max_value = 255; } -#endif +#endif // Get the pointer to the Java structure where the data must be copied fid = (*env)->GetFieldID(env, cls,"image24", "[I"); jia = (*env)->GetObjectField(env, obj, fid); @@ -828,13 +828,13 @@ JNIEXPORT jint JNICALL Java_org_openJpeg_OpenJPEGJavaDecoder_internalDecodeJ2Kto ptrBBody = jbBody; #ifdef CHECK_THRESHOLDS if (image->comps[0].sgnd) { - min_value = 0; - max_value = 255; - } else { min_value = -128; max_value = 127; + } else { + min_value = 0; + max_value = 255; } -#endif +#endif //printf("C: transfering %d shorts to Java image8 pointer = %d\n", wr*hr,ptrSBody); for (i=0; icomps[0].sgnd) { - min_value = 0; - max_value = 65535; - } else { min_value = -32768; max_value = 32767; + } else { + min_value = 0; + max_value = 65535; } printf("C: minValue = %d, maxValue = %d\n", min_value, max_value); #endif