[FFmpeg-cvslog] tiffdec: add RGB48 (16bit) support

Jean First git at videolan.org
Sun Sep 25 16:56:00 CEST 2011


ffmpeg | branch: master | Jean First <jeanfirst at gmail.com> | Sun Sep 25 16:00:04 2011 +0200| [72381b2b479d99962092ce458ac8e98f00528f86] | committer: Michael Niedermayer

tiffdec: add RGB48 (16bit) support

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=72381b2b479d99962092ce458ac8e98f00528f86
---

 libavcodec/tiff.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index e2c80ef..06b5b8e 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -601,11 +601,25 @@ static int decode_frame(AVCodecContext *avctx,
         dst = p->data[0];
         soff = s->bpp >> 3;
         ssize = s->width * soff;
+        if (s->avctx->pix_fmt == PIX_FMT_RGB48LE) {
+            for (i = 0; i < s->height; i++) {
+                for (j = soff; j < ssize; j += 2)
+                    AV_WL16(dst + j, AV_RL16(dst + j) + AV_RL16(dst + j - soff));
+                dst += stride;
+            }
+        } else if (s->avctx->pix_fmt == PIX_FMT_RGB48BE) {
+            for (i = 0; i < s->height; i++) {
+                for (j = soff; j < ssize; j += 2)
+                    AV_WB16(dst + j, AV_RB16(dst + j) + AV_RB16(dst + j - soff));
+                dst += stride;
+            }
+        } else {
         for(i = 0; i < s->height; i++) {
             for(j = soff; j < ssize; j++)
                 dst[j] += dst[j - soff];
             dst += stride;
         }
+        }
     }
 
     if(s->invert){



More information about the ffmpeg-cvslog mailing list