Vorbis sse fix by (Balatoni Denes: dbalatoni, programozo hu)
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 29 May 2005 22:11:05 +0000 (22:11 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 29 May 2005 22:11:05 +0000 (22:11 +0000)
Originally committed as revision 4317 to svn://svn.ffmpeg.org/ffmpeg/trunk

configure
libavcodec/vorbis.c
libavcodec/vorbis.h

index b33b9e6..e34d305 100755 (executable)
--- a/configure
+++ b/configure
@@ -938,7 +938,7 @@ return 0;
 EOF
 
 builtin_vector=no
-if $cc -o $TMPO $TMPC 2> /dev/null ; then
+if $cc -msse -o $TMPO $TMPC 2> /dev/null ; then
   builtin_vector=yes
 fi
 
index bda54f2..d9a705a 100644 (file)
@@ -155,6 +155,8 @@ static void vorbis_free(vorbis_context *vc) {
     av_freep(&vc->channel_floors);
     av_freep(&vc->saved);
     av_freep(&vc->ret);
+    av_freep(&vc->buf);
+    av_freep(&vc->buf_tmp);
 
     av_freep(&vc->residues);
     av_freep(&vc->modes);
@@ -759,6 +761,8 @@ static int vorbis_parse_id_hdr(vorbis_context *vc){
     vc->channel_floors=(float *)av_malloc((vc->blocksize_1/2)*vc->audio_channels * sizeof(float));
     vc->saved=(float *)av_malloc((vc->blocksize_1/2)*vc->audio_channels * sizeof(float));
     vc->ret=(float *)av_malloc((vc->blocksize_1/2)*vc->audio_channels * sizeof(float));
+    vc->buf=(float *)av_malloc(vc->blocksize_1 * sizeof(float));
+    vc->buf_tmp=(float *)av_malloc(vc->blocksize_1 * sizeof(float));
     vc->saved_start=0;
 
     ff_mdct_init(&vc->mdct0, bl0, 1);
@@ -1327,8 +1331,8 @@ static int vorbis_parse_audio_packet(vorbis_context *vc) {
         float *ret=vc->ret;
         const float *lwin=vc->lwin;
         const float *swin=vc->swin;
-        float buf[blocksize];
-        float buf_tmp[blocksize];
+        float *buf=vc->buf;
+        float *buf_tmp=vc->buf_tmp;
 
         ch_floor_ptr=vc->channel_floors+j*blocksize/2;
 
index 8e946c8..a9e88cb 100644 (file)
@@ -88,6 +88,8 @@ typedef struct {
     float *saved;
     uint_fast16_t saved_start;
     float *ret;
+    float *buf;
+    float *buf_tmp;
 } vorbis_context;