csvorbis.Residue0.unpack C# (CSharp) Method

unpack() public method

public unpack ( Info vi, csBuffer opb ) : Object
vi Info
opb csogg.csBuffer
return Object
        public override Object unpack(Info vi, csBuffer opb)
        {
            int acc=0;
            InfoResidue0 info=new InfoResidue0();

            info.begin=opb.read(24);
            info.end=opb.read(24);
            info.grouping=opb.read(24)+1;
            info.partitions=opb.read(6)+1;
            info.groupbook=opb.read(8);

            for(int j=0;j<info.partitions;j++)
            {
                int cascade=opb.read(3);
                if(opb.read(1)!=0)
                {
                    cascade|=(opb.read(5)<<3);
                }
                info.secondstages[j]=cascade;
                acc+=icount(cascade);
            }

            for(int j=0;j<acc;j++)
            {
                info.booklist[j]=opb.read(8);
                //    if(info.booklist[j]==255)info.booklist[j]=-1;
            }

            if(info.groupbook>=vi.books)
            {
                free_info(info);
                return(null);
            }

            for(int j=0;j<acc;j++)
            {
                if(info.booklist[j]>=vi.books)
                {
                    free_info(info);
                    return(null);
                }
            }
            return(info);
            //  errout:
            //    free_info(info);
            //    return(NULL);
        }