summaryrefslogtreecommitdiffstats
path: root/libswscale
diff options
context:
space:
mode:
authorkostya <kostya@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-02-14 16:37:39 +0000
committerkostya <kostya@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-02-14 16:37:39 +0000
commit919b7aef263325e8b21dd7fd36c67e89ae80431e (patch)
tree39ee694250fd85b42771d385e8b15c73ae32a373 /libswscale
parent3d7071594c9823cbb40f256dec7b6f3c081ce2ed (diff)
downloadmpv-919b7aef263325e8b21dd7fd36c67e89ae80431e.tar.bz2
mpv-919b7aef263325e8b21dd7fd36c67e89ae80431e.tar.xz
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
Diffstat (limited to 'libswscale')
-rw-r--r--libswscale/swscale.c1
-rw-r--r--libswscale/swscale_template.c5
2 files changed, 4 insertions, 2 deletions
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);