[FFmpeg-cvslog] r25153 - in trunk/libavcodec/x86: dsputilenc_mmx.c h264dsp_mmx.c

mru subversion
Tue Sep 21 19:57:21 CEST 2010


Author: mru
Date: Tue Sep 21 19:57:21 2010
New Revision: 25153

Log:
x86: disable SSE functions using stack when stack is not aligned

This fixes crashes with ICC 10.1.

Modified:
   trunk/libavcodec/x86/dsputilenc_mmx.c
   trunk/libavcodec/x86/h264dsp_mmx.c

Modified: trunk/libavcodec/x86/dsputilenc_mmx.c
==============================================================================
--- trunk/libavcodec/x86/dsputilenc_mmx.c	Tue Sep 21 19:57:17 2010	(r25152)
+++ trunk/libavcodec/x86/dsputilenc_mmx.c	Tue Sep 21 19:57:21 2010	(r25153)
@@ -1160,7 +1160,7 @@ void dsputilenc_init_mmx(DSPContext* c, 
         if(mm_flags & AV_CPU_FLAG_SSE2){
             c->get_pixels = get_pixels_sse2;
             c->sum_abs_dctelem= sum_abs_dctelem_sse2;
-#if HAVE_YASM
+#if HAVE_YASM && HAVE_ALIGNED_STACK
             c->hadamard8_diff[0]= ff_hadamard8_diff16_sse2;
             c->hadamard8_diff[1]= ff_hadamard8_diff_sse2;
 #endif
@@ -1177,7 +1177,7 @@ void dsputilenc_init_mmx(DSPContext* c, 
             }
             c->add_8x8basis= add_8x8basis_ssse3;
             c->sum_abs_dctelem= sum_abs_dctelem_ssse3;
-#if HAVE_YASM
+#if HAVE_YASM && HAVE_ALIGNED_STACK
             c->hadamard8_diff[0]= ff_hadamard8_diff16_ssse3;
             c->hadamard8_diff[1]= ff_hadamard8_diff_ssse3;
 #endif

Modified: trunk/libavcodec/x86/h264dsp_mmx.c
==============================================================================
--- trunk/libavcodec/x86/h264dsp_mmx.c	Tue Sep 21 19:57:17 2010	(r25152)
+++ trunk/libavcodec/x86/h264dsp_mmx.c	Tue Sep 21 19:57:21 2010	(r25153)
@@ -326,10 +326,12 @@ void ff_h264dsp_init_x86(H264DSPContext 
                 c->biweight_h264_pixels_tab[3]= ff_h264_biweight_8x8_sse2;
                 c->biweight_h264_pixels_tab[4]= ff_h264_biweight_8x4_sse2;
 
+#if HAVE_ALIGNED_STACK
                 c->h264_v_loop_filter_luma = ff_x264_deblock_v_luma_sse2;
                 c->h264_h_loop_filter_luma = ff_x264_deblock_h_luma_sse2;
                 c->h264_v_loop_filter_luma_intra = ff_x264_deblock_v_luma_intra_sse2;
                 c->h264_h_loop_filter_luma_intra = ff_x264_deblock_h_luma_intra_sse2;
+#endif
 
                 c->h264_idct_add16 = ff_h264_idct_add16_sse2;
                 c->h264_idct_add8  = ff_h264_idct_add8_sse2;



More information about the ffmpeg-cvslog mailing list