[MPlayer-dev-eng] [PATCH] liba52/parse.c: avoid dirty hack on mingw32

Zuxy Meng zuxy.meng at gmail.com
Thu Nov 2 02:20:40 CET 2006


Hi,

2006/11/1, Emanuele Giaquinta <e.giaquinta at glauco.it>:
> > Since libavutil is now mandatory, we need this hack no more when
> > MEMALIGN_HACK is defined.
>
> If I understand correctly, the problem is that memalign is bogus on
> MINGW, but since memalign is present MEMALIGN_HACK is not defined so
> your patch won't work. What about this one instead?
>
> --
> Emanuele Giaquinta
>
>
> Index: parse.c
> ===================================================================
> --- parse.c     (revision 20577)
> +++ parse.c     (working copy)
> @@ -37,6 +37,7 @@
>  #include "bitstream.h"
>  #include "tables.h"
>  #include "mm_accel.h"
> +#include "libavutil/avutil.h"
>
>  #ifdef HAVE_MEMALIGN
>  /* some systems have memalign() but no declaration for it */
> @@ -63,16 +64,10 @@
>     if (state == NULL)
>        return NULL;
>
> -    state->samples = memalign (16, 256 * 12 * sizeof (sample_t));
>  #if defined(__MINGW32__) && defined(HAVE_SSE)
> -    for(i=0;i<10;i++){
> -      if((int)state->samples%16){
> -        sample_t* samplestmp=malloc(256 * 12 * sizeof (sample_t));
> -        free(state->samples);
> -        state->samples = samplestmp;
> -      }
> -      else break;
> -    }
> +    state->samples = av_malloc(256 * 12 * sizeof (sample_t));
> +#else
> +    state->samples = memalign (16, 256 * 12 * sizeof (sample_t));
>  #endif
>     if(((int)state->samples%16) && (mm_accel&MM_ACCEL_X86_SSE)){
>       mm_accel &=~MM_ACCEL_X86_SSE;
> @@ -915,6 +910,10 @@
>
>  void a52_free (a52_state_t * state)
>  {
> -    free (state->samples);
> +#if defined(__MINGW32__) && defined(HAVE_SSE)
> +    av_free (state->samples);
> +#else
> +     free (state->samples);
> +#endif
>     free (state);
>  }

Surely nicer.:-)

-- 
Zuxy
Beauty is truth,
While truth is beauty.
PGP KeyID: E8555ED6



More information about the MPlayer-dev-eng mailing list