summaryrefslogtreecommitdiff
path: root/libswscale
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2009-02-14 16:37:39 +0000
committerKostya Shishkov <kostya.shishkov@gmail.com>2009-02-14 16:37:39 +0000
commit12794f73eb8ef5307d1d72a36f04cc55252503f0 (patch)
treeea03b0e712a23fca142f366be568e609145d9bbf /libswscale
parent24d54e9ebb0e3cf5459445d06f13818976e0a295 (diff)
Some AltiVec functions in SwScaler produce different output than their
counterparts in pure C, so don't invoke them in bitexact mode. Originally committed as revision 28555 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
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);