summaryrefslogtreecommitdiff
path: root/libopenjpeg/pi.c
diff options
context:
space:
mode:
authorAntonin Descampe <antonin@gmail.com>2004-07-20 05:40:55 +0000
committerAntonin Descampe <antonin@gmail.com>2004-07-20 05:40:55 +0000
commitd38080aa00f777a5e7e6788941b945b52f1b9219 (patch)
tree0fcf12924bd3a1993bbbe66abfa15cfcfb19882a /libopenjpeg/pi.c
parentaa6c1d28ad5525f281fcc34961adcbde43090611 (diff)
* Bug fixed in jpt decoding
* Bug fixed in pcrl progression order (profile-1 compliance) * Change in tcd_dump
Diffstat (limited to 'libopenjpeg/pi.c')
-rw-r--r--libopenjpeg/pi.c65
1 files changed, 43 insertions, 22 deletions
diff --git a/libopenjpeg/pi.c b/libopenjpeg/pi.c
index 042a25f5..cfe5ba00 100644
--- a/libopenjpeg/pi.c
+++ b/libopenjpeg/pi.c
@@ -269,6 +269,7 @@ int pi_next_rpcl(pi_iterator_t * pi)
pi->compno < pi->poc.compno1; pi->compno++) {
int levelno;
int trx0, try0;
+ int trx1, try1;// Add antonin pcrl
int rpx, rpy;
int prci, prcj;
comp = &pi->comps[pi->compno];
@@ -279,6 +280,8 @@ int pi_next_rpcl(pi_iterator_t * pi)
levelno = comp->numresolutions - 1 - pi->resno;
trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
+ trx1 = int_ceildiv(pi->tx1, comp->dx << levelno);// Add antonin pcrl
+ try1 = int_ceildiv(pi->ty1, comp->dy << levelno);// Add antonin pcrl
rpx = res->pdx + levelno;
rpy = res->pdy + levelno;
if (!
@@ -296,6 +299,10 @@ int pi_next_rpcl(pi_iterator_t * pi)
if ((res->pw==0)||(res->pw==0)) continue;
//ddA
+ //Add Antonin : pcrl
+ if ((trx0==trx1)||(try0==try1)) continue;
+ //ddA
+
prci =
int_floordivpow2(int_ceildiv
(pi->x, comp->dx << levelno),
@@ -358,62 +365,69 @@ int pi_next_pcrl(pi_iterator_t * pi)
}
}
for (pi->y = pi->ty0; pi->y < pi->ty1;
- pi->y += pi->dy - (pi->y % pi->dy)) {
+ pi->y += pi->dy - (pi->y % pi->dy)) {
for (pi->x = pi->tx0; pi->x < pi->tx1;
- pi->x += pi->dx - (pi->x % pi->dx)) {
+ pi->x += pi->dx - (pi->x % pi->dx)) {
for (pi->compno = pi->poc.compno0;
- pi->compno < pi->poc.compno1; pi->compno++) {
+ pi->compno < pi->poc.compno1; pi->compno++) {
comp = &pi->comps[pi->compno];
for (pi->resno = pi->poc.resno0;
- pi->resno < int_min(pi->poc.resno1,
- comp->numresolutions); pi->resno++) {
+ pi->resno < int_min(pi->poc.resno1,
+ comp->numresolutions); pi->resno++) {
int levelno;
int trx0, try0;
+ int trx1, try1;// Add antonin pcrl
int rpx, rpy;
int prci, prcj;
res = &comp->resolutions[pi->resno];
levelno = comp->numresolutions - 1 - pi->resno;
trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
+ trx1 = int_ceildiv(pi->tx1, comp->dx << levelno);// Add antonin pcrl
+ try1 = int_ceildiv(pi->ty1, comp->dy << levelno);// Add antonin pcrl
rpx = res->pdx + levelno;
rpy = res->pdy + levelno;
if (!
- (pi->x % (comp->dx << rpx) == 0
- || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
+ (pi->x % (comp->dx << rpx) == 0
+ || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
continue;
}
if (!
- (pi->y % (comp->dy << rpy) == 0
- || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
+ (pi->y % (comp->dy << rpy) == 0
+ || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
continue;
}
-
+
//Add Antonin : sizebug1
if ((res->pw==0)||(res->pw==0)) continue;
//ddA
+ //Add Antonin : pcrl
+ if ((trx0==trx1)||(try0==try1)) continue;
+ //ddA
+
prci =
int_floordivpow2(int_ceildiv
- (pi->x, comp->dx << levelno),
- res->pdx) - int_floordivpow2(trx0, res->pdx);
+ (pi->x, comp->dx << levelno),
+ res->pdx) - int_floordivpow2(trx0, res->pdx);
prcj =
int_floordivpow2(int_ceildiv
- (pi->y, comp->dy << levelno),
- res->pdy) - int_floordivpow2(try0, res->pdy);
+ (pi->y, comp->dy << levelno),
+ res->pdy) - int_floordivpow2(try0, res->pdy);
pi->precno = prci + prcj * res->pw;
for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
if (!pi->
- include[pi->layno * pi->step_l +
- pi->resno * pi->step_r +
- pi->compno * pi->step_c +
- pi->precno * pi->step_p]) {
+ include[pi->layno * pi->step_l +
+ pi->resno * pi->step_r +
+ pi->compno * pi->step_c +
+ pi->precno * pi->step_p]) {
pi->include[pi->layno * pi->step_l +
- pi->resno * pi->step_r +
- pi->compno * pi->step_c +
- pi->precno * pi->step_p] = 1;
+ pi->resno * pi->step_r +
+ pi->compno * pi->step_c +
+ pi->precno * pi->step_p] = 1;
return 1;
}
- skip:;
+skip:;
}
}
}
@@ -460,12 +474,15 @@ int pi_next_cprl(pi_iterator_t * pi)
comp->numresolutions); pi->resno++) {
int levelno;
int trx0, try0;
+ int trx1, try1;// Add antonin pcrl
int rpx, rpy;
int prci, prcj;
res = &comp->resolutions[pi->resno];
levelno = comp->numresolutions - 1 - pi->resno;
trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
+ trx1 = int_ceildiv(pi->tx1, comp->dx << levelno);// Add antonin pcrl
+ try1 = int_ceildiv(pi->ty1, comp->dy << levelno);// Add antonin pcrl
rpx = res->pdx + levelno;
rpy = res->pdy + levelno;
if (!
@@ -483,6 +500,10 @@ int pi_next_cprl(pi_iterator_t * pi)
if ((res->pw==0)||(res->pw==0)) continue;
//ddA
+ //Add Antonin : pcrl
+ if ((trx0==trx1)||(try0==try1)) continue;
+ //ddA
+
prci =
int_floordivpow2(int_ceildiv
(pi->x, comp->dx << levelno),