aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-05-28 17:11:12 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-05-28 18:58:46 +0200
commitf0a2c8285a4e14b977b7d949cc7323f9be876b1f (patch)
treec0f692c674a5c315a4655054683baca41934ae34
parentced0307ea94bb55d00631094d3c188167aa87b4d (diff)
downloadffmpeg-f0a2c8285a4e14b977b7d949cc7323f9be876b1f.tar.gz
j2kdec: Try to fix 8bps output case
Ive no test samples for which this makes a difference but it matches the 16bit implementation. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/j2kdec.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/libavcodec/j2kdec.c b/libavcodec/j2kdec.c
index a1fd5558d6..d2e003ce8f 100644
--- a/libavcodec/j2kdec.c
+++ b/libavcodec/j2kdec.c
@@ -933,12 +933,10 @@ static int decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile)
dst = line + x * s->ncomponents + compno;
for (; x < tile->comp[compno].coord[0][1] - s->image_offset_x; x += s->cdx[compno]) {
- *src[compno] += 1 << (s->cbps[compno]-1);
- if (*src[compno] < 0)
- *src[compno] = 0;
- else if (*src[compno] >= (1 << s->cbps[compno]))
- *src[compno] = (1 << s->cbps[compno]) - 1;
- *dst = *src[compno]++;
+ int val = *src[compno]++ << (8 - s->cbps[compno]);
+ val += 1 << 7;
+ val = av_clip(val, 0, (1 << 8) - 1);
+ *dst = val;
dst += s->ncomponents;
}
line += s->picture->linesize[0];