Mercurial > mplayer.hg
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 {