prevent crash in case we are unable to get aligned buffer

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12090 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
faust3 2004-04-01 12:35:17 +00:00
parent 3076975c63
commit 2041a9a551
1 changed files with 11 additions and 8 deletions

View File

@ -31,6 +31,7 @@
#include "a52_internal.h" #include "a52_internal.h"
#include "bitstream.h" #include "bitstream.h"
#include "tables.h" #include "tables.h"
#include "mm_accel.h"
#ifdef HAVE_MEMALIGN #ifdef HAVE_MEMALIGN
/* some systems have memalign() but no declaration for it */ /* some systems have memalign() but no declaration for it */
@ -53,9 +54,6 @@ sample_t * a52_init (uint32_t mm_accel)
sample_t * samples; sample_t * samples;
int i; int i;
imdct_init (mm_accel);
downmix_accel_init(mm_accel);
samples = memalign (16, 256 * 12 * sizeof (sample_t)); samples = memalign (16, 256 * 12 * sizeof (sample_t));
#if defined(__MINGW32__) && defined(HAVE_SSE) #if defined(__MINGW32__) && defined(HAVE_SSE)
for(i=0;i<10;i++){ for(i=0;i<10;i++){
@ -66,13 +64,18 @@ sample_t * a52_init (uint32_t mm_accel)
} }
else break; else break;
} }
if((int)samples%16){
printf("unable to get 16 bit aligned memory => expect crashes when using SSE instructions\n");
}
#endif #endif
if(((int)samples%16) && (mm_accel&MM_ACCEL_X86_SSE)){
mm_accel &=~MM_ACCEL_X86_SSE;
printf("liba52: unable to get 16 byte aligned memory disabling usage of SSE instructions\n");
}
if (samples == NULL) if (samples == NULL)
return NULL; return NULL;
imdct_init (mm_accel);
downmix_accel_init(mm_accel);
for (i = 0; i < 256 * 12; i++) for (i = 0; i < 256 * 12; i++)
samples[i] = 0; samples[i] = 0;