summaryrefslogtreecommitdiffstats
path: root/libswscale/swscale_template.c
diff options
context:
space:
mode:
authorramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-08-14 15:52:40 +0000
committerramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-08-14 15:52:40 +0000
commit15fb97be65657f4c52a289b24f6302f4817b5bb5 (patch)
treef61f1316e35cca17d9dfe5a0c1bfc288e5de12fd /libswscale/swscale_template.c
parentb3506ab290d655ac9f7a0d7641edc2980c4e07dd (diff)
downloadmpv-15fb97be65657f4c52a289b24f6302f4817b5bb5.tar.bz2
mpv-15fb97be65657f4c52a289b24f6302f4817b5bb5.tar.xz
Vertical yuv -> yuv16 scaler.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29517 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale/swscale_template.c')
-rw-r--r--libswscale/swscale_template.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c
index d1177f598e..14957dc656 100644
--- a/libswscale/swscale_template.c
+++ b/libswscale/swscale_template.c
@@ -2813,6 +2813,15 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s
{
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 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s
{
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
{