summaryrefslogtreecommitdiff
path: root/libopenjpeg/pi.c
diff options
context:
space:
mode:
authorAntonin Descampe <antonin@gmail.com>2006-08-04 10:12:14 +0000
committerAntonin Descampe <antonin@gmail.com>2006-08-04 10:12:14 +0000
commit7860407cb5ea5f9da0ac9600f775dd06679e2a67 (patch)
treef6e8dc18ca94db613d992482c673afeaf5f45d23 /libopenjpeg/pi.c
parent4d6bd49719b6b9759cb5bd8a5eb2ec384e91ede0 (diff)
fixed a bug in pi.c, line 473, that appeared when more than 100 precincts were generated in a resolution level
Diffstat (limited to 'libopenjpeg/pi.c')
-rw-r--r--libopenjpeg/pi.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/libopenjpeg/pi.c b/libopenjpeg/pi.c
index c13ff472..efcc4c4c 100644
--- a/libopenjpeg/pi.c
+++ b/libopenjpeg/pi.c
@@ -386,7 +386,6 @@ LABEL_SKIP:;
opj_pi_iterator_t *pi_create(opj_image_t *image, opj_cp_t *cp, int tileno) {
int p, q;
int compno, resno, pino;
- int maxres = 0;
opj_pi_iterator_t *pi = NULL;
opj_tcp_t *tcp = NULL;
opj_tccp_t *tccp = NULL;
@@ -402,6 +401,8 @@ opj_pi_iterator_t *pi_create(opj_image_t *image, opj_cp_t *cp, int tileno) {
}
for (pino = 0; pino < tcp->numpocs + 1; pino++) { /* change */
+ int maxres = 0;
+ int maxprec = 0;
p = tileno % cp->tw;
q = tileno / cp->tw;
@@ -467,17 +468,22 @@ opj_pi_iterator_t *pi_create(opj_image_t *image, opj_cp_t *cp, int tileno) {
py1 = int_ceildivpow2(ry1, res->pdy) << res->pdy;
res->pw = (rx0==rx1)?0:((px1 - px0) >> res->pdx);
res->ph = (ry0==ry1)?0:((py1 - py0) >> res->pdy);
+
+ if (res->pw*res->ph > maxprec) {
+ maxprec = res->pw*res->ph;
+ }
+
}
}
tccp = &tcp->tccps[0];
pi[pino].step_p = 1;
- pi[pino].step_c = 100 * pi[pino].step_p;
+ pi[pino].step_c = maxprec * pi[pino].step_p;
pi[pino].step_r = image->numcomps * pi[pino].step_c;
pi[pino].step_l = maxres * pi[pino].step_r;
if (pino == 0) {
- array_size = image->numcomps * maxres * tcp->numlayers * 100 * sizeof(short int);
+ array_size = image->numcomps * maxres * tcp->numlayers * maxprec * sizeof(short int);
pi[pino].include = (short int *) opj_malloc(array_size);
if(!pi[pino].include) {
/* TODO: throw an error */