summaryrefslogtreecommitdiffstats
path: root/mpeglib/lib/splay/window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mpeglib/lib/splay/window.cpp')
-rw-r--r--mpeglib/lib/splay/window.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/mpeglib/lib/splay/window.cpp b/mpeglib/lib/splay/window.cpp
new file mode 100644
index 00000000..b95dbdcf
--- /dev/null
+++ b/mpeglib/lib/splay/window.cpp
@@ -0,0 +1,70 @@
+/*
+ wrapper for window functions
+ Copyright (C) 2001 Martin Vogt
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Library General Public License as published by
+ the Free Software Foundation.
+
+ For more information look at the file COPYRIGHT in this package
+
+ */
+
+
+#include "mpegsound.h"
+
+
+static int windowInit=0;
+
+ATTR_ALIGN(64) REAL win[4][36];
+ATTR_ALIGN(64) REAL winINV[4][36];
+
+
+void initialize_win() {
+ if (windowInit==true) {
+ return;
+ }
+ windowInit=true;
+
+ int i;
+
+ for(i=0;i<18;i++) {
+ /*
+ win[0][i]=win[1][i]=0.5*sin(PI_72*(double)(2*i+1))/
+ cos(PI_72*(double)(2*i+19));
+ */
+ win[0][i]=win[1][i]=0.5*sin(PI_72*(double)(2*(i+0)+1))/cos(MY_PI * (double) (2*(i+0) +19) / 72.0 );
+ win[0][i+18] = win[3][i+18] = 0.5 * sin( MY_PI / 72.0 * (double) (2*(i+18)+1) ) / cos ( MY_PI * (double) (2*(i+18)+19) / 72.0 );
+ }
+ /*
+ for(;i<36;i++) {
+ win[0][i]=win[3][i]=0.5*sin(PI_72*(double)(2*i+1))/cos(PI_72*(double)(2*i+19));
+
+ }
+ */
+ for(i=0;i<6;i++) {
+ win[1][i+18]=0.5/cos(MY_PI*(double)(2*(i+18)+19)/72.0);
+ win[3][i+12]=0.5/cos(MY_PI*(double)(2*(i+12)+19)/72.0);
+ win[1][i+24]=0.5*sin(PI_24*(double)(2*i+13))/cos(MY_PI*(double)(2*(i+24)+19)/72.0);
+ win[1][i+30]=win[3][i]=0.0;
+ win[3][i+6 ]=0.5*sin(PI_24*(double)(2*i+1))/cos(MY_PI*(double)(2*(i+6)+19)/72.0);
+ }
+ for(i=0;i<12;i++)
+ win[2][i]=0.5*sin(PI_24*(double)(2*i+1))/cos(MY_PI*(double)(2*i+7)/24.0);
+
+ int j;
+
+ for(j=0;j<4;j++) {
+ int len[4] = { 36,36,12,36 };
+ for(i=0;i<len[j];i+=2)
+ winINV[j][i] = + win[j][i];
+ for(i=1;i<len[j];i+=2)
+ winINV[j][i] = - win[j][i];
+ }
+
+
+}
+
+
+inline REAL* getSplayWindow(int nr) { return win[nr]; }
+inline REAL* getSplayWindowINV(int nr) { return winINV[nr]; }