/* * int init_encode(StaticCodeBook s){ * //memset(c,0,sizeof(codebook)); * c=s; * entries=s.entries; * dim=s.dim; * codelist=make_words(s.lengthlist, s.entries); * valuelist=s.unquantize(); * return(0); * } */ internal int init_decode(StaticCodeBook s) { //memset(c,0,sizeof(codebook)); c = s; entries = s.entries; dim = s.dim; valuelist = s.unquantize(); decode_tree = make_decode_tree(); if (decode_tree == null) { //goto err_out; clear(); return(-1); } return(0); // err_out: // vorbis_book_clear(c); // return(-1); }
// all of the real encoding details are here. The modes, books, // everything int unpack_books(csBuffer opb) { //d* codebooks books = opb.read(8) + 1; if (book_param == null || book_param.Length != books) { book_param = new StaticCodeBook[books]; } for (int i = 0; i < books; i++) { book_param[i] = new StaticCodeBook(); if (book_param[i].unpack(opb) != 0) { //goto err_out; clear(); return(-1); } } // time backend settings times = opb.read(6) + 1; if (time_type == null || time_type.Length != times) { time_type = new int[times]; } if (time_param == null || time_param.Length != times) { time_param = new Object[times]; } for (int i = 0; i < times; i++) { time_type[i] = opb.read(16); if (time_type[i] < 0 || time_type[i] >= VI_TIMEB) { //goto err_out; clear(); return(-1); } time_param[i] = FuncTime.time_P[time_type[i]].unpack(this, opb); if (time_param[i] == null) { //goto err_out; clear(); return(-1); } } // floor backend settings floors = opb.read(6) + 1; if (floor_type == null || floor_type.Length != floors) { floor_type = new int[floors]; } if (floor_param == null || floor_param.Length != floors) { floor_param = new Object[floors]; } for (int i = 0; i < floors; i++) { floor_type[i] = opb.read(16); if (floor_type[i] < 0 || floor_type[i] >= VI_FLOORB) { //goto err_out; clear(); return(-1); } floor_param[i] = FuncFloor.floor_P[floor_type[i]].unpack(this, opb); if (floor_param[i] == null) { //goto err_out; clear(); return(-1); } } // residue backend settings residues = opb.read(6) + 1; if (residue_type == null || residue_type.Length != residues) { residue_type = new int[residues]; } if (residue_param == null || residue_param.Length != residues) { residue_param = new Object[residues]; } for (int i = 0; i < residues; i++) { residue_type[i] = opb.read(16); if (residue_type[i] < 0 || residue_type[i] >= VI_RESB) { // goto err_out; clear(); return(-1); } residue_param[i] = FuncResidue.residue_P[residue_type[i]].unpack(this, opb); if (residue_param[i] == null) { // goto err_out; clear(); return(-1); } } // map backend settings maps = opb.read(6) + 1; if (map_type == null || map_type.Length != maps) { map_type = new int[maps]; } if (map_param == null || map_param.Length != maps) { map_param = new Object[maps]; } for (int i = 0; i < maps; i++) { map_type[i] = opb.read(16); if (map_type[i] < 0 || map_type[i] >= VI_MAPB) { // goto err_out; clear(); return(-1); } map_param[i] = FuncMapping.mapping_P[map_type[i]].unpack(this, opb); if (map_param[i] == null) { // goto err_out; clear(); return(-1); } } // mode settings modes = opb.read(6) + 1; if (mode_param == null || mode_param.Length != modes) { 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); if ((mode_param[i].windowtype >= VI_WINDOWB) || (mode_param[i].transformtype >= VI_WINDOWB) || (mode_param[i].mapping >= maps)) { // goto err_out; clear(); return(-1); } } if (opb.read(1) != 1) { //goto err_out; // top level EOP check clear(); return(-1); } return(0); // err_out: // vorbis_info_clear(vi); // return(-1); }