csvorbis.DspState.window C# (CSharp) Method

window() static private method

static private window ( int type, int wnd, int left, int right ) : float[]
type int
wnd int
left int
right int
return float[]
        internal static float[] window(int type, int wnd, int left, int right)
        {
            float[] ret=new float[wnd];
            switch(type)
            {
                case 0:
                    // The 'vorbis window' (window 0) is sin(sin(x)*sin(x)*2pi)
                {
                    int leftbegin=wnd/4-left/2;
                    int rightbegin=wnd-wnd/4-right/2;

                    for(int i=0;i<left;i++)
                    {
                        float x=(float)((i+.5)/left*M_PI/2.0);
                        x=(float)Math.Sin(x);
                        x*=x;
                        x*=(float)(M_PI/2.0);
                        x=(float)Math.Sin(x);
                        ret[i+leftbegin]=x;
                    }

                    for(int i=leftbegin+left;i<rightbegin;i++)
                    {
                        ret[i]=1.0f;
                    }

                    for(int i=0;i<right;i++)
                    {
                        float x=(float)((right-i-.5)/right*M_PI/2.0);
                        x=(float)Math.Sin(x);
                        x*=x;
                        x*=(float)(M_PI/2.0);
                        x=(float)Math.Sin(x);
                        ret[i+rightbegin]=x;
                    }
                }
                    break;
                default:
                    //free(ret);
                    return(null);
            }
            return(ret);
        }