Пример #1
0
        /*
         * 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);
        }
Пример #2
0
        // 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);
        }
Пример #3
0
        // 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);
        }
Пример #4
0
		/*
		  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);
		}