[RFC PATCH v1 2/3] lib/block.c: Use optimized routine for wave_operation

Viswanath Puttagunta <[email protected]> Wed, 10 Sep 2014 14:15:08 -0500
Newsgroups gmane.comp.multimedia.ogg.vorbis.devel
Message-ID <1410376509-12148-3-git-send-email-viswanath.puttagunta@linaro.org>
Signed-off-by: Viswanath Puttagunta <[email protected]>
---
 lib/block.c |   14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/lib/block.c b/lib/block.c
index dfcd843..0c3f781 100644
--- a/lib/block.c
+++ b/lib/block.c
@@ -30,6 +30,7 @@
 #include "lpc.h"
 #include "registry.h"
 #include "misc.h"
+#include "simd.h"
 
 static int ilog2(unsigned int v){
   int ret=0;
@@ -774,15 +775,13 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
           const float *w=_vorbis_window_get(b->window[1]-hs);
           float *pcm=v->pcm[j]+prevCenter;
           float *p=vb->pcm[j];
-          for(i=0;i<n1;i++)
-            pcm[i]=pcm[i]*w[n1-i-1] + p[i]*w[i];
+	  wave_operation(&pcm[0], &w[0], &p[0], n1);
         }else{
           /* large/small */
           const float *w=_vorbis_window_get(b->window[0]-hs);
           float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
           float *p=vb->pcm[j];
-          for(i=0;i<n0;i++)
-            pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+	  wave_operation(&pcm[0], &w[0], &p[0], n0);
         }
       }else{
         if(v->W){
@@ -790,8 +789,8 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
           const float *w=_vorbis_window_get(b->window[0]-hs);
           float *pcm=v->pcm[j]+prevCenter;
           float *p=vb->pcm[j]+n1/2-n0/2;
-          for(i=0;i<n0;i++)
-            pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+	  wave_operation(&pcm[0], &w[0], &p[0], n0);
+	  i = n0;
           for(;i<n1/2+n0/2;i++)
             pcm[i]=p[i];
         }else{
@@ -799,8 +798,7 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
           const float *w=_vorbis_window_get(b->window[0]-hs);
           float *pcm=v->pcm[j]+prevCenter;
           float *p=vb->pcm[j];
-          for(i=0;i<n0;i++)
-            pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+	  wave_operation(&pcm[0], &w[0], &p[0], n0);
         }
       }
 
-- 
1.7.9.5