From 29ea3dde47818da3eecb917ebb1db797a3e80d44 Mon Sep 17 00:00:00 2001
From: Parvatha Elangovan
Date: Tue, 5 Feb 2008 15:15:38 +0000
Subject: [PATCH] In convert.c, corrected imagetobmp() conversion for
grayscale. In tcd.c, corrected Rate modification in tcd_init_encode().
---
ChangeLog | 4 ++++
codec/convert.c | 3 ++-
libopenjpeg/tcd.c | 19 +++++++++++++------
3 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e449f465..b97905f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@ What's New for OpenJPEG
! : changed
+ : added
+February 5, 2008
+! [Parvatha] In convert.c, corrected imagetobmp() conversion for grayscale. In tcd.c, corrected Rate modification in
+ tcd_init_encode(). Thanks to Jeremy Furtek and Jérôme Fimes.
+
January 31, 2008
! [GB] In opjviewer, unification of JPEG 2000 family handlers (*.jp2, *.mj2, *.j2k) in a single file
diff --git a/codec/convert.c b/codec/convert.c
index b3b51a8f..e56d1311 100644
--- a/codec/convert.c
+++ b/codec/convert.c
@@ -914,7 +914,8 @@ int imagetobmp(opj_image_t * image, const char *outfile) {
if (image->comps[0].prec > 8) {
adjustR = image->comps[0].prec - 8;
printf("BMP CONVERSION: Truncating component 0 from %d bits to 8 bits\n", image->comps[0].prec);
- }
+ }else
+ adjustR = 0;
for (i = 0; i < 256; i++) {
fprintf(fdest, "%c%c%c%c", i, i, i, 0);
diff --git a/libopenjpeg/tcd.c b/libopenjpeg/tcd.c
index be6f8f27..01ee3950 100644
--- a/libopenjpeg/tcd.c
+++ b/libopenjpeg/tcd.c
@@ -418,12 +418,19 @@ void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int cur
/* Modification of the RATE >> */
for (j = 0; j < tcp->numlayers; j++) {
tcp->rates[j] = tcp->rates[j] ?
- ((float) (tile->numcomps
- * (tile->x1 - tile->x0)
- * (tile->y1 - tile->y0)
- * image->comps[0].prec))/
- (tcp->rates[j] * 8 * image->comps[0].dx * image->comps[0].dy)
- : 0;
+ cp->tp_on ?
+ (((float) (tile->numcomps
+ * (tile->x1 - tile->x0)
+ * (tile->y1 - tile->y0)
+ * image->comps[0].prec))
+ /(tcp->rates[j] * 8 * image->comps[0].dx * image->comps[0].dy)) - (((tcd->cur_totnum_tp - 1) * 14 )/ tcp->numlayers)
+ :
+ ((float) (tile->numcomps
+ * (tile->x1 - tile->x0)
+ * (tile->y1 - tile->y0)
+ * image->comps[0].prec))/
+ (tcp->rates[j] * 8 * image->comps[0].dx * image->comps[0].dy)
+ : 0;
if (tcp->rates[j]) {
if (j && tcp->rates[j] < tcp->rates[j - 1] + 10) {