summaryrefslogtreecommitdiff
path: root/libavcodec/jpeglsdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-07-11 19:37:29 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-07-12 17:52:03 +0200
commit8aea97a49d19a12691bc82ed97705053cfdb6ad2 (patch)
tree3f0c5031ae34be966ce75390853dc481e86917db /libavcodec/jpeglsdec.c
parent937cfebd72d30e617591c666ea4854a3898a64b2 (diff)
downloadffmpeg-8aea97a49d19a12691bc82ed97705053cfdb6ad2.tar.gz
avcodec/jpeglsdec: Implement the 4th (lossy) transform
Fixes remainder of Ticket893 Std deviation from the intended image is 0.11, max sample error +-1 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/jpeglsdec.c')
-rw-r--r--libavcodec/jpeglsdec.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/jpeglsdec.c b/libavcodec/jpeglsdec.c
index d9eb8e80ba..0e344f54d8 100644
--- a/libavcodec/jpeglsdec.c
+++ b/libavcodec/jpeglsdec.c
@@ -391,6 +391,16 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
src[x+1] = g;
}
break;
+ case 4:
+ for (x = off; x < w; x += 3) {
+ int r = src[x+0] - (( 359 * (src[x+2]-128) + 490) >> 8);
+ int g = src[x+0] - (( 88 * (src[x+1]-128) - 183 * (src[x+2]-128) + 30) >> 8);
+ int b = src[x+0] + ((454 * (src[x+1]-128) + 574) >> 8);
+ src[x+0] = av_clip_uint8(r);
+ src[x+1] = av_clip_uint8(g);
+ src[x+2] = av_clip_uint8(b);
+ }
+ break;
}
src += s->picture.linesize[0];
}