diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-05-27 17:58:06 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-05-27 17:58:06 +0200 |
commit | 243cc38d944b1a457178d5984d250321361301b3 (patch) | |
tree | 059817a76b5edece8291dd3b4049596f1a1313c7 | |
parent | 1b5cb6c00a170ebd850dc14cf23b33b5644f7909 (diff) | |
download | ffmpeg-243cc38d944b1a457178d5984d250321361301b3.tar.gz |
j2k: change fixed point of stepsize to 16.16
This seems more natural and matches jpeg2000
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/j2k.c | 2 | ||||
-rw-r--r-- | libavcodec/j2kdec.c | 2 | ||||
-rw-r--r-- | libavcodec/j2kenc.c | 4 |
3 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/j2k.c b/libavcodec/j2k.c index 171a10150b..2eca8455d9 100644 --- a/libavcodec/j2k.c +++ b/libavcodec/j2k.c @@ -289,7 +289,7 @@ int ff_j2k_init_component(Jpeg2000Component *comp, } /* BITEXACT computing case --> convert to int */ // 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 * see ISO/IEC 15444-1:2002 B.5 eq. B-15 and tbl B.1 diff --git a/libavcodec/j2kdec.c b/libavcodec/j2kdec.c index b349c97111..7bf0e9e6de 100644 --- a/libavcodec/j2kdec.c +++ b/libavcodec/j2kdec.c @@ -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 *ptr = t1.data[j]; 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); datap[i] = tmp < 0 ? -tmp2 : tmp2; } diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index aea12f3218..7807552706 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -802,7 +802,7 @@ static void truncpasses(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile) Jpeg2000Cblk *cblk = prec->cblk + cblkno; 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]; for (x = xx0; x < xx1; 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++; } } |