mirror of https://github.com/mpv-player/mpv
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:
parent
3076975c63
commit
2041a9a551
|
@ -31,6 +31,7 @@
|
|||
#include "a52_internal.h"
|
||||
#include "bitstream.h"
|
||||
#include "tables.h"
|
||||
#include "mm_accel.h"
|
||||
|
||||
#ifdef HAVE_MEMALIGN
|
||||
/* some systems have memalign() but no declaration for it */
|
||||
|
@ -53,9 +54,6 @@ sample_t * a52_init (uint32_t mm_accel)
|
|||
sample_t * samples;
|
||||
int i;
|
||||
|
||||
imdct_init (mm_accel);
|
||||
downmix_accel_init(mm_accel);
|
||||
|
||||
samples = memalign (16, 256 * 12 * sizeof (sample_t));
|
||||
#if defined(__MINGW32__) && defined(HAVE_SSE)
|
||||
for(i=0;i<10;i++){
|
||||
|
@ -66,13 +64,18 @@ sample_t * a52_init (uint32_t mm_accel)
|
|||
}
|
||||
else break;
|
||||
}
|
||||
if((int)samples%16){
|
||||
printf("unable to get 16 bit aligned memory => expect crashes when using SSE instructions\n");
|
||||
}
|
||||
#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)
|
||||
return NULL;
|
||||
|
||||
return NULL;
|
||||
|
||||
imdct_init (mm_accel);
|
||||
downmix_accel_init(mm_accel);
|
||||
|
||||
for (i = 0; i < 256 * 12; i++)
|
||||
samples[i] = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue