From 5716aec3f9e47d17d55a44f991381f8719812645 Mon Sep 17 00:00:00 2001
From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Mon, 4 Jan 2010 09:19:32 +0000
Subject: [PATCH] Fix XvMC. XvMCCreateBlocks() may not allocate 16-byte aligned
 blocks, so we can't use SSE-optimized routines.

Originally committed as revision 21011 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/x86/dsputil_mmx.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c
index b9d2ad75132..abfebfbff5b 100644
--- a/libavcodec/x86/dsputil_mmx.c
+++ b/libavcodec/x86/dsputil_mmx.c
@@ -2596,7 +2596,9 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
         c->add_pixels_clamped = add_pixels_clamped_mmx;
         c->clear_block  = clear_block_mmx;
         c->clear_blocks = clear_blocks_mmx;
-        if (mm_flags & FF_MM_SSE){
+        if ((mm_flags & FF_MM_SSE) &&
+            !(CONFIG_MPEG_XVMC_DECODER && avctx->xvmc_acceleration > 1)){
+            /* XvMCCreateBlocks() may not allocate 16-byte aligned blocks */
             c->clear_block  = clear_block_sse;
             c->clear_blocks = clear_blocks_sse;
         }
-- 
GitLab