|
|
|
@@ -1395,22 +1395,28 @@ static int jpeg2000_decode_packets_po_iteration(Jpeg2000DecoderContext *s, Jpeg2 |
|
|
|
uint8_t reducedresno = codsty->nreslevels - 1 -reslevelno; // ==> N_L - r |
|
|
|
Jpeg2000ResLevel *rlevel = comp->reslevel + reslevelno; |
|
|
|
unsigned prcx, prcy; |
|
|
|
int trx0, try0; |
|
|
|
|
|
|
|
int xc = x / s->cdx[compno]; |
|
|
|
int yc = y / s->cdy[compno]; |
|
|
|
if (!s->cdx[compno] || !s->cdy[compno]) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
trx0 = ff_jpeg2000_ceildiv(tile->coord[0][0], s->cdx[compno] << reducedresno); |
|
|
|
try0 = ff_jpeg2000_ceildiv(tile->coord[1][0], s->cdy[compno] << reducedresno); |
|
|
|
|
|
|
|
if (reslevelno >= codsty->nreslevels) |
|
|
|
continue; |
|
|
|
|
|
|
|
if (yc % (1LL << (rlevel->log2_prec_height + reducedresno)) && y != tile->coord[1][0]) //FIXME this is a subset of the check |
|
|
|
if (!(y % ((uint64_t)s->cdy[compno] << (rlevel->log2_prec_height + reducedresno)) == 0 || |
|
|
|
(y == tile->coord[1][0] && (try0 << reducedresno) % (1U << (reducedresno + rlevel->log2_prec_height))))) |
|
|
|
continue; |
|
|
|
|
|
|
|
if (xc % (1LL << (rlevel->log2_prec_width + reducedresno)) && x != tile->coord[0][0]) //FIXME this is a subset of the check |
|
|
|
if (!(x % ((uint64_t)s->cdx[compno] << (rlevel->log2_prec_width + reducedresno)) == 0 || |
|
|
|
(x == tile->coord[0][0] && (trx0 << reducedresno) % (1U << (reducedresno + rlevel->log2_prec_width))))) |
|
|
|
continue; |
|
|
|
|
|
|
|
// check if a precinct exists |
|
|
|
prcx = ff_jpeg2000_ceildivpow2(xc, reducedresno) >> rlevel->log2_prec_width; |
|
|
|
prcy = ff_jpeg2000_ceildivpow2(yc, reducedresno) >> rlevel->log2_prec_height; |
|
|
|
prcx = ff_jpeg2000_ceildiv(x, s->cdx[compno] << reducedresno) >> rlevel->log2_prec_width; |
|
|
|
prcy = ff_jpeg2000_ceildiv(y, s->cdy[compno] << reducedresno) >> rlevel->log2_prec_height; |
|
|
|
prcx -= ff_jpeg2000_ceildivpow2(comp->coord_o[0][0], reducedresno) >> rlevel->log2_prec_width; |
|
|
|
prcy -= ff_jpeg2000_ceildivpow2(comp->coord_o[1][0], reducedresno) >> rlevel->log2_prec_height; |
|
|
|
|
|
|
|
|