Commit c2e94209 authored by Michael Niedermayer's avatar Michael Niedermayer

j2k: drop cblknx/y from Jpeg2000Band

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 8c2e201c
...@@ -291,17 +291,12 @@ int ff_j2k_init_component(Jpeg2000Component *comp, ...@@ -291,17 +291,12 @@ int ff_j2k_init_component(Jpeg2000Component *comp,
log2_band_prec_width = reslevel->log2_prec_width - 1; log2_band_prec_width = reslevel->log2_prec_width - 1;
log2_band_prec_height = reslevel->log2_prec_height - 1; log2_band_prec_height = reslevel->log2_prec_height - 1;
} }
band->cblknx = ff_jpeg2000_ceildivpow2(band->coord[0][1], band->log2_cblk_width) - (band->coord[0][0] >> band->log2_cblk_width);
band->cblkny = ff_jpeg2000_ceildivpow2(band->coord[1][1], band->log2_cblk_height) - (band->coord[1][0] >> band->log2_cblk_height);
for (j = 0; j < 2; j++) for (j = 0; j < 2; j++)
band->coord[0][j] = ff_jpeg2000_ceildiv(band->coord[0][j], dx); band->coord[0][j] = ff_jpeg2000_ceildiv(band->coord[0][j], dx);
for (j = 0; j < 2; j++) for (j = 0; j < 2; j++)
band->coord[1][j] = ff_jpeg2000_ceildiv(band->coord[1][j], dy); band->coord[1][j] = ff_jpeg2000_ceildiv(band->coord[1][j], dy);
band->cblknx = ff_jpeg2000_ceildiv(band->cblknx, dx);
band->cblkny = ff_jpeg2000_ceildiv(band->cblkny, dy);
band->prec = av_malloc_array(reslevel->num_precincts_x * band->prec = av_malloc_array(reslevel->num_precincts_x *
reslevel->num_precincts_y, reslevel->num_precincts_y,
sizeof(*band->prec)); sizeof(*band->prec));
......
...@@ -178,7 +178,6 @@ typedef struct Jpeg2000Prec { ...@@ -178,7 +178,6 @@ typedef struct Jpeg2000Prec {
typedef struct Jpeg2000Band { typedef struct Jpeg2000Band {
uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}} uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
uint16_t log2_cblk_width, log2_cblk_height; uint16_t log2_cblk_width, log2_cblk_height;
uint16_t cblknx, cblkny;
uint32_t stepsize; // quantization stepsize (* 2^13) uint32_t stepsize; // quantization stepsize (* 2^13)
Jpeg2000Prec *prec; Jpeg2000Prec *prec;
} Jpeg2000Band; // subband } Jpeg2000Band; // subband
......
...@@ -821,6 +821,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno ...@@ -821,6 +821,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno
for (bandno = 0; bandno < reslevel->nbands ; bandno++){ for (bandno = 0; bandno < reslevel->nbands ; bandno++){
Jpeg2000Band *band = reslevel->band + bandno; Jpeg2000Band *band = reslevel->band + bandno;
Jpeg2000Prec *prec = band->prec; // we support only 1 precinct per band ATM in the encoder
int cblkx, cblky, cblkno=0, xx0, x0, xx1, y0, yy0, yy1, bandpos; int cblkx, cblky, cblkno=0, xx0, x0, xx1, y0, yy0, yy1, bandpos;
yy0 = bandno == 0 ? 0 : comp->reslevel[reslevelno-1].coord[1][1] - comp->reslevel[reslevelno-1].coord[1][0]; yy0 = bandno == 0 ? 0 : comp->reslevel[reslevelno-1].coord[1][1] - comp->reslevel[reslevelno-1].coord[1][0];
y0 = yy0; y0 = yy0;
...@@ -832,7 +833,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno ...@@ -832,7 +833,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno
bandpos = bandno + (reslevelno > 0); bandpos = bandno + (reslevelno > 0);
for (cblky = 0; cblky < band->cblkny; cblky++){ for (cblky = 0; cblky < prec->nb_codeblocks_height; cblky++){
if (reslevelno == 0 || bandno == 1) if (reslevelno == 0 || bandno == 1)
xx0 = 0; xx0 = 0;
else else
...@@ -841,7 +842,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno ...@@ -841,7 +842,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno
xx1 = FFMIN(ff_jpeg2000_ceildivpow2(band->coord[0][0] + 1, band->log2_cblk_width) << band->log2_cblk_width, xx1 = FFMIN(ff_jpeg2000_ceildivpow2(band->coord[0][0] + 1, band->log2_cblk_width) << band->log2_cblk_width,
band->coord[0][1]) - band->coord[0][0] + xx0; band->coord[0][1]) - band->coord[0][0] + xx0;
for (cblkx = 0; cblkx < band->cblknx; cblkx++, cblkno++){ for (cblkx = 0; cblkx < prec->nb_codeblocks_width; cblkx++, cblkno++){
int y, x; int y, x;
if (codsty->transform == FF_DWT53){ if (codsty->transform == FF_DWT53){
for (y = yy0; y < yy1; y++){ for (y = yy0; y < yy1; y++){
...@@ -860,7 +861,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno ...@@ -860,7 +861,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno
} }
} }
} }
encode_cblk(s, &t1, band->prec->cblk + cblkno, tile, xx1 - xx0, yy1 - yy0, encode_cblk(s, &t1, prec->cblk + cblkno, tile, xx1 - xx0, yy1 - yy0,
bandpos, codsty->nreslevels - reslevelno - 1); bandpos, codsty->nreslevels - reslevelno - 1);
xx0 = xx1; xx0 = xx1;
xx1 = FFMIN(xx1 + (1 << band->log2_cblk_width), band->coord[0][1] - band->coord[0][0] + x0); xx1 = FFMIN(xx1 + (1 << band->log2_cblk_width), band->coord[0][1] - band->coord[0][0] + x0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment