diff options
author | ramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-08-14 15:52:40 +0000 |
---|---|---|
committer | ramiro <ramiro@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-08-14 15:52:40 +0000 |
commit | 15fb97be65657f4c52a289b24f6302f4817b5bb5 (patch) | |
tree | f61f1316e35cca17d9dfe5a0c1bfc288e5de12fd /libswscale/swscale_template.c | |
parent | b3506ab290d655ac9f7a0d7641edc2980c4e07dd (diff) | |
download | mpv-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.c | 20 |
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 { |