Bug fixed for scalar_derived quantization type

This commit is contained in:
Antonin Descampe 2004-07-09 14:04:06 +00:00
parent 132d894726
commit 651f98ad06
2 changed files with 14 additions and 3 deletions

View File

@ -483,7 +483,7 @@ void j2k_read_qcx(int compno, int len)
len - 1 : (len - 1) / 2); len - 1 : (len - 1) / 2);
for (bandno = 0; bandno < numbands; bandno++) { for (bandno = 0; bandno < numbands; bandno++) {
int expn, mant; int expn, mant;
if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) { /* WHY STEPSIZES WHEN NOQNT ? */ if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) {
expn = cio_read(1) >> 3; /* SPqcx_i */ expn = cio_read(1) >> 3; /* SPqcx_i */
mant = 0; mant = 0;
} else { } else {
@ -494,6 +494,17 @@ void j2k_read_qcx(int compno, int len)
tccp->stepsizes[bandno].expn = expn; tccp->stepsizes[bandno].expn = expn;
tccp->stepsizes[bandno].mant = mant; tccp->stepsizes[bandno].mant = mant;
} }
/* Add Antonin : if scalar_derived -> compute other stepsizes */
if (tccp->qntsty==J2K_CCP_QNTSTY_SIQNT) {
for (bandno=1 ; bandno<J2K_MAXBANDS ; bandno++) {
tccp->stepsizes[bandno].expn = ((tccp->stepsizes[0].expn)-((bandno-1)/3+1)>0)?(tccp->stepsizes[0].expn)-((bandno-1)/3+1):0;
tccp->stepsizes[bandno].mant = tccp->stepsizes[0].mant;
}
}
/* ddA */
} }
void j2k_write_qcd() void j2k_write_qcd()

View File

@ -42,7 +42,7 @@
#define __J2K_H #define __J2K_H
#define J2K_MAXRLVLS 33 /* Number of maximum resolution level authorized */ #define J2K_MAXRLVLS 33 /* Number of maximum resolution level authorized */
#define J2K_MAXBANDS (3*J2K_MAXRLVLS+1) /* Number of maximum sub-band linked to number of resolution level */ #define J2K_MAXBANDS (3*J2K_MAXRLVLS-2) /* Number of maximum sub-band linked to number of resolution level */
#define J2K_CP_CSTY_PRT 0x01 #define J2K_CP_CSTY_PRT 0x01
#define J2K_CP_CSTY_SOP 0x02 #define J2K_CP_CSTY_SOP 0x02
@ -97,7 +97,7 @@ typedef struct {
int cblksty; /* code-block coding style */ int cblksty; /* code-block coding style */
int qmfbid; /* discrete wavelet transform identifier */ int qmfbid; /* discrete wavelet transform identifier */
int qntsty; /* quantisation style */ int qntsty; /* quantisation style */
j2k_stepsize_t stepsizes[J2K_MAXBANDS]; /* stepsizes used for quantisation */ j2k_stepsize_t stepsizes[J2K_MAXBANDS]; /* stepsizes used for quantization */
int numgbits; /* number of guard bits */ int numgbits; /* number of guard bits */
int roishift; /* Region Of Interest shift */ int roishift; /* Region Of Interest shift */
int prcw[J2K_MAXRLVLS]; /* Precinct width */ int prcw[J2K_MAXRLVLS]; /* Precinct width */