diff libswscale/swscale_template.c @ 29475:a697eafd804d

Vertical yuv -> yuv16 scaler.
author ramiro
date Fri, 14 Aug 2009 15:52:40 +0000
parents 8d73112b7589
children dc1a6d06b090
line wrap: on
line diff
--- a/libswscale/swscale_template.c	Fri Aug 14 09:31:16 2009 +0000
+++ b/libswscale/swscale_template.c	Fri Aug 14 15:52:40 2009 +0000
@@ -2813,6 +2813,15 @@
             {
                 const int chrSkipMask= (1<<c->chrDstVSubSample)-1;
                 if ((dstY&chrSkipMask) || isGray(dstFormat)) uDest=vDest= NULL; //FIXME split functions in lumi / chromi
+                if (is16BPS(dstFormat))
+                {
+                    yuv2yuvX16inC(
+                        vLumFilter+dstY*vLumFilterSize   , lumSrcPtr, vLumFilterSize,
+                        vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize,
+                        alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW,
+                        dstFormat);
+                }
+                else
                 if (vLumFilterSize == 1 && vChrFilterSize == 1) // unscaled YV12
                 {
                     int16_t *lumBuf = lumPixBuf[0];
@@ -2898,10 +2907,21 @@
             {
                 const int chrSkipMask= (1<<c->chrDstVSubSample)-1;
                 if ((dstY&chrSkipMask) || isGray(dstFormat)) uDest=vDest= NULL; //FIXME split functions in lumi / chromi
+                if (is16BPS(dstFormat))
+                {
+                    yuv2yuvX16inC(
+                        vLumFilter+dstY*vLumFilterSize   , lumSrcPtr, vLumFilterSize,
+                        vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize,
+                        alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW,
+                        dstFormat);
+                }
+                else
+                {
                 yuv2yuvXinC(
                     vLumFilter+dstY*vLumFilterSize   , lumSrcPtr, vLumFilterSize,
                     vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize,
                     alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW);
+                }
             }
             else
             {