From f7440c1784882217c6b399bb3bbf34719bc2f001 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 25 Mar 2002 16:35:24 +0000 Subject: byte interleaving for mga untested (no g200 mga or whatever i would need ...) experimental sse2 version (even less tested as no p4 either ...) sse2 version would need 16-byte aligned src & dst else sig11 sse2 version is disabled by default git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5338 b3059339-0415-0410-9bf9-f77b7e298cf2 --- postproc/rgb2rgb.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'postproc/rgb2rgb.c') diff --git a/postproc/rgb2rgb.c b/postproc/rgb2rgb.c index abe1223065..f9f3ec9774 100644 --- a/postproc/rgb2rgb.c +++ b/postproc/rgb2rgb.c @@ -409,3 +409,21 @@ void rgb24toyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst rgb24toyv12_C(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride); #endif } + +void interleaveBytes(uint8_t *src1, uint8_t *src2, uint8_t *dst, + int width, int height, int src1Stride, int src2Stride, int dstStride) +{ +#ifdef CAN_COMPILE_X86_ASM + // ordered per speed fasterst first + if(gCpuCaps.hasMMX2) + interleaveBytes_MMX2(src1, src2, dst, width, height, src1Stride, src2Stride, dstStride); + else if(gCpuCaps.has3DNow) + interleaveBytes_3DNow(src1, src2, dst, width, height, src1Stride, src2Stride, dstStride); + else if(gCpuCaps.hasMMX) + interleaveBytes_MMX(src1, src2, dst, width, height, src1Stride, src2Stride, dstStride); + else + interleaveBytes_C(src1, src2, dst, width, height, src1Stride, src2Stride, dstStride); +#else + interleaveBytes_C(src1, src2, dst, width, height, src1Stride, src2Stride, dstStride); +#endif +} -- cgit v1.2.3