You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
j2k: change fixed point of stepsize to 16.16
This seems more natural and matches jpeg2000 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -289,7 +289,7 @@ int ff_j2k_init_component(Jpeg2000Component *comp,
|
|||||||
}
|
}
|
||||||
/* BITEXACT computing case --> convert to int */
|
/* BITEXACT computing case --> convert to int */
|
||||||
// if (avctx->flags & CODEC_FLAG_BITEXACT)
|
// if (avctx->flags & CODEC_FLAG_BITEXACT)
|
||||||
band->stepsize = stepsize * (1 << 13);
|
band->stepsize = stepsize * (1 << 16);
|
||||||
|
|
||||||
/* computation of tbx_0, tbx_1, tby_0, tby_1
|
/* computation of tbx_0, tbx_1, tby_0, tby_1
|
||||||
* see ISO/IEC 15444-1:2002 B.5 eq. B-15 and tbl B.1
|
* see ISO/IEC 15444-1:2002 B.5 eq. B-15 and tbl B.1
|
||||||
|
@@ -830,7 +830,7 @@ static int decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile)
|
|||||||
int *datap = &comp->data[(comp->coord[0][1] - comp->coord[0][0]) * (y+j) + x];
|
int *datap = &comp->data[(comp->coord[0][1] - comp->coord[0][0]) * (y+j) + x];
|
||||||
int *ptr = t1.data[j];
|
int *ptr = t1.data[j];
|
||||||
for (i = 0; i < (cblk->coord[0][1] - cblk->coord[0][0]); ++i) {
|
for (i = 0; i < (cblk->coord[0][1] - cblk->coord[0][0]); ++i) {
|
||||||
int tmp = ((int64_t)ptr[i]) * ((int64_t)band->stepsize) >> 13, tmp2;
|
int tmp = ((int64_t)ptr[i]) * ((int64_t)band->stepsize) >> 16, tmp2;
|
||||||
tmp2 = FFABS(tmp>>1) + (tmp&1);
|
tmp2 = FFABS(tmp>>1) + (tmp&1);
|
||||||
datap[i] = tmp < 0 ? -tmp2 : tmp2;
|
datap[i] = tmp < 0 ? -tmp2 : tmp2;
|
||||||
}
|
}
|
||||||
|
@@ -802,7 +802,7 @@ static void truncpasses(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile)
|
|||||||
Jpeg2000Cblk *cblk = prec->cblk + cblkno;
|
Jpeg2000Cblk *cblk = prec->cblk + cblkno;
|
||||||
|
|
||||||
cblk->ninclpasses = getcut(cblk, s->lambda,
|
cblk->ninclpasses = getcut(cblk, s->lambda,
|
||||||
(int64_t)dwt_norms[codsty->transform][bandpos][lev] * (int64_t)band->stepsize >> 13);
|
(int64_t)dwt_norms[codsty->transform][bandpos][lev] * (int64_t)band->stepsize >> 16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -863,7 +863,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno
|
|||||||
int *ptr = t1.data[y-yy0];
|
int *ptr = t1.data[y-yy0];
|
||||||
for (x = xx0; x < xx1; x++){
|
for (x = xx0; x < xx1; x++){
|
||||||
*ptr = (comp->data[(comp->coord[0][1] - comp->coord[0][0]) * y + x]);
|
*ptr = (comp->data[(comp->coord[0][1] - comp->coord[0][0]) * y + x]);
|
||||||
*ptr = (int64_t)*ptr * (int64_t)(8192 * 8192 / band->stepsize) >> 13 - NMSEDEC_FRACBITS;
|
*ptr = (int64_t)*ptr * (int64_t)(16384 * 65536 / band->stepsize) >> 14 - NMSEDEC_FRACBITS;
|
||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user