Inheritance: FuncFloor
Esempio n. 1
0
        void unpack_books(csBuffer opb)
        {
            books      = opb.read(8) + 1;
            book_param = new StaticCodeBook[books];
            for (int i = 0; i < books; i++)
            {
                book_param[i] = new StaticCodeBook();
                book_param[i].unpack(opb);
            }

            times = opb.read(6) + 1;
            for (int i = 0; i < times; i++)
            {
                opb.read(16);
            }

            floors      = opb.read(6) + 1;
            floor_funcs = new Floor1[floors];
            floor_param = new object[floors];
            for (int i = 0; i < floors; i++)
            {
                int type = opb.read(16);
                if (type != 1)
                {
                    throw new csorbisException("floor type must be 1");
                }
                floor_funcs[i] = new Floor1();
                floor_param[i] = floor_funcs[i].unpack(this, opb);
            }

            residues      = opb.read(6) + 1;
            residue_funcs = new FuncResidue[residues];
            residue_param = new object[residues];
            for (int i = 0; i < residues; i++)
            {
                int type = opb.read(16);
                if (type > 2)
                {
                    throw new csorbisException("residue type must be <= 2");
                }
                residue_funcs[i] = FuncResidue.make(type);
                residue_param[i] = residue_funcs[i].unpack(this, opb);
            }

            maps      = opb.read(6) + 1;
            map_funcs = new FuncMapping[maps];
            map_param = new object[maps];
            for (int i = 0; i < maps; i++)
            {
                int type = opb.read(16);
                if (type != 0)
                {
                    throw new csorbisException("mapping type must be 0");
                }
                map_funcs[i] = new Mapping0();
                map_param[i] = map_funcs[i].unpack(this, opb);
            }

            modes      = opb.read(6) + 1;
            mode_param = new InfoMode[modes];
            for (int i = 0; i < modes; i++)
            {
                mode_param[i]               = new InfoMode();
                mode_param[i].blockflag     = opb.read(1);
                mode_param[i].windowtype    = opb.read(16);
                mode_param[i].transformtype = opb.read(16);
                mode_param[i].mapping       = opb.read(8);
            }
            opb.read(1);
        }