From b9a6fae9301ff45cab65508b9d15fb1b15d31214 Mon Sep 17 00:00:00 2001
From: Alan Curry <pacman@TheWorld.com>
Date: Sat, 18 Feb 2006 00:41:28 +0000
Subject: [PATCH] don't call altivec_yuv2packedX() with a dstFormat that it
 doesn't support; instead fall back on yuv2packedXinC

Originally committed as revision 17642 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
---
 postproc/swscale_template.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c
index 6a8e576ffb1..98828a91367 100644
--- a/postproc/swscale_template.c
+++ b/postproc/swscale_template.c
@@ -967,14 +967,19 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
 #endif
 	default:
 #ifdef HAVE_ALTIVEC
-		altivec_yuv2packedX (c, lumFilter, lumSrc, lumFilterSize,
-			    chrFilter, chrSrc, chrFilterSize,
-			    dest, dstW, dstY);
-#else
-		yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
-			    chrFilter, chrSrc, chrFilterSize,
-			    dest, dstW, dstY);
+		/* The following list of supported dstFormat values should
+		   match what's found in the body of altivec_yuv2packedX() */
+		if(c->dstFormat==IMGFMT_ABGR  || c->dstFormat==IMGFMT_BGRA  ||
+		   c->dstFormat==IMGFMT_BGR24 || c->dstFormat==IMGFMT_RGB24 ||
+		   c->dstFormat==IMGFMT_RGBA  || c->dstFormat==IMGFMT_ARGB)
+			altivec_yuv2packedX (c, lumFilter, lumSrc, lumFilterSize,
+				    chrFilter, chrSrc, chrFilterSize,
+				    dest, dstW, dstY);
+		else
 #endif
+			yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
+				    chrFilter, chrSrc, chrFilterSize,
+				    dest, dstW, dstY);
 		break;
 	}
 }
-- 
GitLab