aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRamiro Polla <ramiro.polla@gmail.com>2009-04-02 18:32:49 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2009-04-02 18:32:49 +0000
commit392b65676414345e69546655cd2ece9ca2550f6b (patch)
tree9c8bfcb8bf97551deefd3e251f914a0b4a802a79
parent5b7c7dd3297535a584a7e8e852757dca15139713 (diff)
downloadffmpeg-392b65676414345e69546655cd2ece9ca2550f6b.tar.gz
swscale: Split h[yc]scale_fast() into their own functions.
Originally committed as revision 29128 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
-rw-r--r--libswscale/swscale_template.c61
1 files changed, 38 insertions, 23 deletions
diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c
index 04e9d17a64..28b023ea98 100644
--- a/libswscale/swscale_template.c
+++ b/libswscale/swscale_template.c
@@ -2243,6 +2243,22 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, uint8_t *src, int srcW
#endif /* HAVE_ALTIVEC */
#endif /* HAVE_MMX */
}
+
+static inline void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
+ int dstWidth, uint8_t *src, int srcW,
+ int xInc)
+{
+ int i;
+ unsigned int xpos=0;
+ for (i=0;i<dstWidth;i++)
+ {
+ register unsigned int xx=xpos>>16;
+ register unsigned int xalpha=(xpos&0xFFFF)>>9;
+ dst[i]= (src[xx]<<7) + (src[xx+1] - src[xx])*xalpha;
+ xpos+=xInc;
+ }
+}
+
// *** horizontal scale Y line to temp buffer
static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint8_t *src, int srcW, int xInc,
int flags, int canMMX2BeUsed, int16_t *hLumFilter,
@@ -2465,15 +2481,7 @@ FUNNY_Y_CODE
} //if MMX2 can't be used
#endif
#else
- int i;
- unsigned int xpos=0;
- for (i=0;i<dstWidth;i++)
- {
- register unsigned int xx=xpos>>16;
- register unsigned int xalpha=(xpos&0xFFFF)>>9;
- dst[i]= (src[xx]<<7) + (src[xx+1] - src[xx])*xalpha;
- xpos+=xInc;
- }
+ RENAME(hyscale_fast)(c, dst, dstWidth, src, srcW, xInc);
#endif /* ARCH_X86 */
}
@@ -2491,6 +2499,26 @@ FUNNY_Y_CODE
}
}
+static inline void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst,
+ int dstWidth, uint8_t *src1,
+ uint8_t *src2, int srcW, int xInc)
+{
+ int i;
+ unsigned int xpos=0;
+ for (i=0;i<dstWidth;i++)
+ {
+ register unsigned int xx=xpos>>16;
+ register unsigned int xalpha=(xpos&0xFFFF)>>9;
+ dst[i]=(src1[xx]*(xalpha^127)+src1[xx+1]*xalpha);
+ dst[i+VOFW]=(src2[xx]*(xalpha^127)+src2[xx+1]*xalpha);
+ /* slower
+ dst[i]= (src1[xx]<<7) + (src1[xx+1] - src1[xx])*xalpha;
+ dst[i+VOFW]=(src2[xx]<<7) + (src2[xx+1] - src2[xx])*xalpha;
+ */
+ xpos+=xInc;
+ }
+}
+
inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint8_t *src1, uint8_t *src2,
int srcW, int xInc, int flags, int canMMX2BeUsed, int16_t *hChrFilter,
int16_t *hChrFilterPos, int hChrFilterSize, void *funnyUVCode,
@@ -2754,20 +2782,7 @@ FUNNY_UV_CODE
} //if MMX2 can't be used
#endif
#else
- int i;
- unsigned int xpos=0;
- for (i=0;i<dstWidth;i++)
- {
- register unsigned int xx=xpos>>16;
- register unsigned int xalpha=(xpos&0xFFFF)>>9;
- dst[i]=(src1[xx]*(xalpha^127)+src1[xx+1]*xalpha);
- dst[i+VOFW]=(src2[xx]*(xalpha^127)+src2[xx+1]*xalpha);
- /* slower
- dst[i]= (src1[xx]<<7) + (src1[xx+1] - src1[xx])*xalpha;
- dst[i+VOFW]=(src2[xx]<<7) + (src2[xx+1] - src2[xx])*xalpha;
- */
- xpos+=xInc;
- }
+ RENAME(hcscale_fast)(c, dst, dstWidth, src1, src2, srcW, xInc);
#endif /* ARCH_X86 */
}
if(c->srcRange != c->dstRange && !(isRGB(c->dstFormat) || isBGR(c->dstFormat))){