avcodec/jpeglsdec: Implement the 4th (lossy) transform
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 11 Jul 2013 17:37:29 +0000 (19:37 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 12 Jul 2013 15:52:03 +0000 (17:52 +0200)
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>
libavcodec/jpeglsdec.c

index d9eb8e8..0e344f5 100644 (file)
@@ -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];
             }