]> git.sesse.net Git - vlc/commitdiff
* Fixed a segfault on exit under Windows 2000
authorRenaud Dartus <reno@videolan.org>
Wed, 31 Oct 2001 11:55:53 +0000 (11:55 +0000)
committerRenaud Dartus <reno@videolan.org>
Wed, 31 Oct 2001 11:55:53 +0000 (11:55 +0000)
include/common.h
plugins/imdct/ac3_srfft_sse.c
src/ac3_decoder/ac3_decoder.h
src/ac3_decoder/ac3_decoder_thread.c

index b34e824f390bc77fa34072e5ea3a766fc9366839..ab36323d14f6fcbe7f6d15b2e0c7d481e22d642f 100644 (file)
@@ -3,7 +3,7 @@
  * Collection of useful common types and macros definitions
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: common.h,v 1.43 2001/10/30 19:34:53 reno Exp $
+ * $Id: common.h,v 1.44 2001/10/31 11:55:53 reno Exp $
  *
  * Authors: Samuel Hocevar <sam@via.ecp.fr>
  *          Vincent Seguin <seguin@via.ecp.fr>
@@ -209,12 +209,8 @@ struct pgrm_descriptor_s;
 #       include <unistd.h>
 #       define memalign(align,size) valloc(size)
 #   else
-#       if defined( __MINGW32__ )
-#           define memalign(align,size) (void *)(((unsigned long)(malloc(size+align-1))+align-1)&~(align-1))
-#       else
         /* Assume malloc alignment is sufficient */
-#           define memalign(align,size) malloc(size)
-#       endif
+#       define memalign(align,size) malloc(size)
 #   endif
 
     
index 29d6995495d415db521ab6e2443f95fbc325c64e..e715e9e579853836bdd095aedf6a01c4dfe5bad7 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_srfft_sse.c: accelerated SSE ac3 fft functions
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ac3_srfft_sse.c,v 1.6 2001/10/30 19:34:53 reno Exp $
+ * $Id: ac3_srfft_sse.c,v 1.7 2001/10/31 11:55:53 reno Exp $
  *
  * Authors: Renaud Dartus <reno@videolan.org>
  *          Aaron Holtzman <aholtzma@engr.uvic.ca>
@@ -200,7 +200,6 @@ static void fft_asmb_sse (int k, complex_t *x, complex_t *wTB,
 {
     __asm__ __volatile__ (
     ".align 16\n"
-    "pushl %%esp\n"
     "pushl %%ebp\n"
     "movl %%esp, %%ebp\n"
 
@@ -345,7 +344,6 @@ static void fft_asmb_sse (int k, complex_t *x, complex_t *wTB,
     "addl $4, %%esp\n"
 
     "leave\n"
-    "popl %%esp\n"
     : "=c" (k), "=a" (x), "=D" (wTB)
     : "c" (k), "a" (x), "D" (wTB), "d" (d), "S" (d_3), "b" (C_1_sse) );
 }
index 71882df09b6df8571edbd505274c23b61055259f..c6740bc5196887a51894a572d2b0b6636ccb2bad 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_decoder.h : ac3 decoder interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_decoder.h,v 1.12 2001/10/30 19:34:53 reno Exp $
+ * $Id: ac3_decoder.h,v 1.13 2001/10/31 11:55:53 reno Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Renaud Dartus <reno@videolan.org>
@@ -355,6 +355,9 @@ typedef struct mantissa_s
 struct ac3dec_s
 {
     float *             samples;
+#if defined( __MINGW32__ )
+    float *             samples_back;
+#endif
     imdct_t *           imdct;
 
     /*
index 13d9bd08daea526172b88b1a3d315716fe4f15a1..667d83ed6cba5763ba9c3badc3f7e32193ce2788 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_decoder_thread.c: ac3 decoder thread
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_decoder_thread.c,v 1.38 2001/10/30 19:34:53 reno Exp $
+ * $Id: ac3_decoder_thread.c,v 1.39 2001/10/31 11:55:53 reno Exp $
  *
  * Authors: Michel Lespinasse <walken@zoy.org>
  *
@@ -151,7 +151,12 @@ vlc_thread_t ac3dec_CreateThread( adec_config_t * p_config )
 #undef IMDCT
 
     /* Initialize the ac3 decoder structures */
+#if defined( __MINGW32__ )
+    p_ac3thread->ac3_decoder->samples_back = memalign(16, 6 * 256 * sizeof(float) + 15);
+    p_ac3thread->ac3_decoder->samples = (float *) (((unsigned long) p_ac3thread->ac3_decoder->samples_back+15) & ~0xFUL);
+#else
     p_ac3thread->ac3_decoder->samples = memalign(16, 6 * 256 * sizeof(float));
+#endif
     p_ac3thread->ac3_decoder->imdct->buf = memalign(16, N/4 * sizeof(complex_t));
     p_ac3thread->ac3_decoder->imdct->delay = memalign(16, 6 * 256 * sizeof(float));
     p_ac3thread->ac3_decoder->imdct->delay1 = memalign(16, 6 * 256 * sizeof(float));
@@ -197,7 +202,11 @@ vlc_thread_t ac3dec_CreateThread( adec_config_t * p_config )
         free( p_ac3thread->ac3_decoder->imdct->delay1 );
         free( p_ac3thread->ac3_decoder->imdct->delay );
         free( p_ac3thread->ac3_decoder->imdct->buf );
+#if defined( __MINGW32__ )
+        free( p_ac3thread->ac3_decoder->samples_back );
+#else
         free( p_ac3thread->ac3_decoder->samples );
+#endif
         free( p_ac3thread->ac3_decoder->imdct );
         free( p_ac3thread->ac3_decoder );
         free( p_ac3thread );
@@ -392,7 +401,11 @@ static void EndThread (ac3dec_thread_t * p_ac3thread)
     free( p_ac3thread->ac3_decoder->imdct->delay1 );
     free( p_ac3thread->ac3_decoder->imdct->delay );
     free( p_ac3thread->ac3_decoder->imdct->buf );
+#if defined( __MINGW32__ )
+    free( p_ac3thread->ac3_decoder->samples_back );
+#else
     free( p_ac3thread->ac3_decoder->samples );
+#endif
     free( p_ac3thread->ac3_decoder->imdct );
     free( p_ac3thread->ac3_decoder );
     free( p_ac3thread->p_config );