From 919b7aef263325e8b21dd7fd36c67e89ae80431e Mon Sep 17 00:00:00 2001 From: kostya Date: Sat, 14 Feb 2009 16:37:39 +0000 Subject: Some AltiVec functions in SwScaler produce different output than their counterparts in pure C, so don't invoke them in bitexact mode. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28555 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 1 + libswscale/swscale_template.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'libswscale') diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 586715eacd..a38c14d9a8 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -2396,6 +2396,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d #ifdef COMPILE_ALTIVEC if ((c->flags & SWS_CPU_CAPS_ALTIVEC) && + !(c->flags & SWS_BITEXACT) && srcFormat == PIX_FMT_YUV420P) { // unscaled YV12 -> packed YUV, we want speed if (dstFormat == PIX_FMT_YUYV422) diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index c0e680ca4a..1f5a10de41 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -1136,9 +1136,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ #if HAVE_ALTIVEC /* The following list of supported dstFormat values should match what's found in the body of altivec_yuv2packedX() */ - if (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA || + if (!(c->flags & SWS_BITEXACT) && + (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA || c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 || - c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB) + c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB)) altivec_yuv2packedX (c, lumFilter, lumSrc, lumFilterSize, chrFilter, chrSrc, chrFilterSize, dest, dstW, dstY); -- cgit v1.2.3