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); }