csvorbis.Floor1.inverse2 C# (CSharp) Method

inverse2() public method

public inverse2 ( Block vb, Object i, Object memo, float fout ) : int
vb Block
i Object
memo Object
fout float
return int
        public override int inverse2(Block vb, Object i, Object memo, float[] fout)
        {
            LookFloor1 look=(LookFloor1)i;
            InfoFloor1 info=look.vi;
            int n=vb.vd.vi.blocksizes[vb.mode]/2;

            if(memo!=null)
            {
                /* render the lines */
                int[] fit_value=(int[] )memo;
                int hx=0;
                int lx=0;
                int ly=fit_value[0]*info.mult;
                for(int j=1;j<look.posts;j++)
                {
                    int current=look.forward_index[j];
                    int hy=fit_value[current]&0x7fff;
                    if(hy==fit_value[current])
                    {
                        hy*=info.mult;
                        hx=info.postlist[current];

                        render_line(lx,hx,ly,hy,fout);

                        lx=hx;
                        ly=hy;
                    }
                }
                for(int j=hx;j<n;j++)
                {
                    fout[j]*=fout[j-1]; /* be certain */
                }
                return(1);
            }
            for(int j=0; j<n; j++)
            {
                fout[j]=0.0f;
            }
            return(0);
        }