Commit 8024b488 authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/jpeglsdec: support xfrm 1-3

Fixes 75% of Ticket893
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 96747e6c
......@@ -361,6 +361,43 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
goto end;
}
if (s->xfrm && s->nb_components == 3) {
int x, w;
w = s->width * s->nb_components;
if (s->bits <= 8) {
uint8_t *src = s->picture.data[0];
for (i = 0; i < s->height; i++) {
switch(s->xfrm) {
case 1:
for (x = off; x < w; x += 3) {
src[x ] += src[x+1] + 128;
src[x+2] += src[x+1] + 128;
}
break;
case 2:
for (x = off; x < w; x += 3) {
src[x ] += src[x+1] + 128;
src[x+2] += ((src[x ] + src[x+1])>>1) + 128;
}
break;
case 3:
for (x = off; x < w; x += 3) {
int g = src[x+0] - ((src[x+2]+src[x+1])>>2) + 64;
src[x+0] = src[x+2] + g + 128;
src[x+2] = src[x+1] + g + 128;
src[x+1] = g;
}
break;
}
src += s->picture.linesize[0];
}
}else
avpriv_report_missing_feature(s->avctx, "16bit xfrm");
}
if (shift) { /* we need to do point transform or normalize samples */
int x, w;
......
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