csvorbis.CodeBook.decodev_set C# (CSharp) Method

decodev_set() private method

private decodev_set ( float a, int offset, csBuffer b, int n ) : int
a float
offset int
b csogg.csBuffer
n int
return int
        internal int decodev_set(float[] a,int offset, csBuffer b, int n)
        {
            int i,j,entry;
            int t;

            for(i=0;i<n;)
            {
                entry = decode(b);
                if(entry==-1)return(-1);
                t=entry*dim;
                for(j=0;j<dim;)
                {
                    a[offset+i++]=valuelist[t+(j++)];
                }
            }
            return(0);
        }

Usage Example

Esempio n. 1
0
        public override object inverse1(Block vb, object i, object memo)
        {
            LookFloor0 look = (LookFloor0)i;
            InfoFloor0 info = look.vi;

            float[] lsp = null;
            if (memo is float[])
            {
                lsp = (float[])memo;
            }

            int ampraw = vb.opb.read(info.ampbits);

            if (ampraw > 0)
            {
                // also handles the -1 out of data case
                int   maxval  = (1 << info.ampbits) - 1;
                float amp     = (float)ampraw / maxval * info.ampdB;
                int   booknum = vb.opb.read(Util.ilog(info.numbooks));

                if (booknum != -1 && booknum < info.numbooks)
                {
                    CodeBook b    = vb.vd.fullbooks[info.books[booknum]];
                    float    last = 0.0f;

                    if (lsp == null || lsp.Length < look.m + 1)
                    {
                        lsp = new float[look.m + 1];
                    }
                    else
                    {
                        for (int j = 0; j < lsp.Length; j++)
                        {
                            lsp[j] = 0.0f;
                        }
                    }

                    for (int j = 0; j < look.m; j += b.dim)
                    {
                        if (b.decodev_set(lsp, j, vb.opb, b.dim) == -1)
                        {
                            return(null);
                        }
                    }

                    for (int j = 0; j < look.m;)
                    {
                        for (int k = 0; k < b.dim; k++, j++)
                        {
                            lsp[j] += last;
                        }

                        last = lsp[j - 1];
                    }

                    lsp[look.m] = amp;
                    return(lsp);
                }
            }

            return(null);
        }