Exemple #1
0
        void init(Info vi)
        {
            this.vi  = vi;
            modebits = VUtils.ilog2(vi.modes);

            transform[0] = new Mdct();
            transform[1] = new Mdct();
            ((Mdct)transform[0]).init(vi.blocksizes[0]);
            ((Mdct)transform[1]).init(vi.blocksizes[1]);

            wnd[0][0][0] = window(vi.blocksizes[0], vi.blocksizes[0] / 2, vi.blocksizes[0] / 2);
            wnd[1][0][0] = window(vi.blocksizes[1], vi.blocksizes[0] / 2, vi.blocksizes[0] / 2);
            wnd[1][0][1] = window(vi.blocksizes[1], vi.blocksizes[0] / 2, vi.blocksizes[1] / 2);
            wnd[1][1][0] = window(vi.blocksizes[1], vi.blocksizes[1] / 2, vi.blocksizes[0] / 2);
            wnd[1][1][1] = window(vi.blocksizes[1], vi.blocksizes[1] / 2, vi.blocksizes[1] / 2);

            fullbooks = new CodeBook[vi.books];
            for (int i = 0; i < vi.books; i++)
            {
                fullbooks[i] = new CodeBook();
                fullbooks[i].init_decode(vi.book_param[i]);
            }

            // initialize the storage vectors to a decent size greater than the minimum

            pcm_storage = 8192;             // we'll assume later that we have a minimum of twice
            // the blocksize of accumulated samples in analysis
            pcm = new float[vi.channels][];
            for (int i = 0; i < vi.channels; i++)
            {
                pcm[i] = new float[pcm_storage];
            }

            // all 1 (large block) or 0 (small block)
            // explicitly set for the sake of clarity
            lW = 0;             // previous window size
            W  = 0;             // current window size

            // all vector indexes; multiples of samples_per_envelope_step
            centerW     = vi.blocksizes[1] / 2;
            pcm_current = centerW;

            // initialize all the mapping/backend lookups
            mode = new Object[vi.modes];

            for (int i = 0; i < vi.modes; i++)
            {
                int         mapnum  = vi.mode_param[i].mapping;
                FuncMapping mapping = vi.map_funcs[mapnum];

                mode[i] = mapping.look(this, vi.mode_param[i], vi.map_param[mapnum]);
            }
        }
Exemple #2
0
        // Analysis side code, but directly related to blocking.  Thus it's
        // here and not in analysis.c (which is for analysis transforms only).
        // The init is here because some of it is shared
        int init(Info vi, bool encp)
        {
            //memset(v,0,sizeof(vorbis_dsp_state));
            this.vi=vi;
            modebits=ilog2(vi.modes);

            transform[0]=new Object[VI_TRANSFORMB];
            transform[1]=new Object[VI_TRANSFORMB];

            // MDCT is tranform 0

            transform[0][0]=new Mdct();
            transform[1][0]=new Mdct();
            ((Mdct)transform[0][0]).init(vi.blocksizes[0]);
            ((Mdct)transform[1][0]).init(vi.blocksizes[1]);

            wnd[0][0][0]=new float[VI_WINDOWB][];
            wnd[0][0][1]=wnd[0][0][0];
            wnd[0][1][0]=wnd[0][0][0];
            wnd[0][1][1]=wnd[0][0][0];
            wnd[1][0][0]=new float[VI_WINDOWB][];
            wnd[1][0][1]=new float[VI_WINDOWB][];
            wnd[1][1][0]=new float[VI_WINDOWB][];
            wnd[1][1][1]=new float[VI_WINDOWB][];

            for(int i=0;i<VI_WINDOWB;i++)
            {
                wnd[0][0][0][i]=
                    window(i,vi.blocksizes[0],vi.blocksizes[0]/2,vi.blocksizes[0]/2);
                wnd[1][0][0][i]=
                    window(i,vi.blocksizes[1],vi.blocksizes[0]/2,vi.blocksizes[0]/2);
                wnd[1][0][1][i]=
                    window(i,vi.blocksizes[1],vi.blocksizes[0]/2,vi.blocksizes[1]/2);
                wnd[1][1][0][i]=
                    window(i,vi.blocksizes[1],vi.blocksizes[1]/2,vi.blocksizes[0]/2);
                wnd[1][1][1][i]=
                    window(i,vi.blocksizes[1],vi.blocksizes[1]/2,vi.blocksizes[1]/2);
            }

            //    if(encp){ // encode/decode differ here
            //      // finish the codebooks
            //      fullbooks=new CodeBook[vi.books];
            //      for(int i=0;i<vi.books;i++){
            //	fullbooks[i]=new CodeBook();
            //	fullbooks[i].init_encode(vi.book_param[i]);
            //      }
            //      analysisp=1;
            //    }
            //    else{
            // finish the codebooks
            fullbooks=new CodeBook[vi.books];
            for(int i=0;i<vi.books;i++)
            {
                fullbooks[i]=new CodeBook();
                fullbooks[i].init_decode(vi.book_param[i]);
            }

            //    }

            // initialize the storage vectors to a decent size greater than the
            // minimum

            pcm_storage=8192; // we'll assume later that we have
            // a minimum of twice the blocksize of
            // accumulated samples in analysis
            pcm=new float[vi.channels][];
            //pcmret=new float[vi.channels][];
            {
            for(int i=0;i<vi.channels;i++)
            {
                pcm[i]=new float[pcm_storage];
            }
            }

            // all 1 (large block) or 0 (small block)
            // explicitly set for the sake of clarity
            lW=0; // previous window size
            W=0;  // current window size

            // all vector indexes; multiples of samples_per_envelope_step
            centerW=vi.blocksizes[1]/2;

            pcm_current=centerW;

            // initialize all the mapping/backend lookups
            mode=new Object[vi.modes];

            for(int i=0;i<vi.modes;i++)
            {
                int mapnum=vi.mode_param[i].mapping;
                int maptype=vi.map_type[mapnum];

                mode[i]=FuncMapping.mapping_P[maptype].look(this,vi.mode_param[i],
                    vi.map_param[mapnum]);

            }
            return(0);
        }
Exemple #3
0
        // Analysis side code, but directly related to blocking.  Thus it's
        // here and not in analysis.c (which is for analysis transforms only).
        // The init is here because some of it is shared

        private int init(Info vi, bool encp)
        {
            this.vi  = vi;
            modebits = Util.ilog2(vi.modes);

            transform[0] = new Object[VI_TRANSFORMB];
            transform[1] = new Object[VI_TRANSFORMB];

            // MDCT is tranform 0

            transform[0][0] = new Mdct();
            transform[1][0] = new Mdct();
            ((Mdct)transform[0][0]).init(vi.blocksizes[0]);
            ((Mdct)transform[1][0]).init(vi.blocksizes[1]);

            wnd[0][0][0] = new float[VI_WINDOWB][];
            wnd[0][0][1] = wnd[0][0][0];
            wnd[0][1][0] = wnd[0][0][0];
            wnd[0][1][1] = wnd[0][0][0];
            wnd[1][0][0] = new float[VI_WINDOWB][];
            wnd[1][0][1] = new float[VI_WINDOWB][];
            wnd[1][1][0] = new float[VI_WINDOWB][];
            wnd[1][1][1] = new float[VI_WINDOWB][];

            for (int i = 0; i < VI_WINDOWB; i++)
            {
                wnd[0][0][0][i] = window(i, vi.blocksizes[0], vi.blocksizes[0] / 2, vi.blocksizes[0] / 2);
                wnd[1][0][0][i] = window(i, vi.blocksizes[1], vi.blocksizes[0] / 2, vi.blocksizes[0] / 2);
                wnd[1][0][1][i] = window(i, vi.blocksizes[1], vi.blocksizes[0] / 2, vi.blocksizes[1] / 2);
                wnd[1][1][0][i] = window(i, vi.blocksizes[1], vi.blocksizes[1] / 2, vi.blocksizes[0] / 2);
                wnd[1][1][1][i] = window(i, vi.blocksizes[1], vi.blocksizes[1] / 2, vi.blocksizes[1] / 2);
            }

            // finish the codebooks
            fullbooks = new CodeBook[vi.books];
            for (int i = 0; i < vi.books; i++)
            {
                fullbooks[i] = new CodeBook();
                fullbooks[i].init_decode(vi.book_param[i]);
            }

            // initialize the storage vectors to a decent size greater than the minimum
            pcm_storage = 8192;             // we'll assume later that we have
            // a minimum of twice the blocksize of
            // accumulated samples in analysis
            pcm = new float[vi.Channels][];
            for (int i = 0; i < vi.Channels; i++)
            {
                pcm[i] = new float[pcm_storage];
            }

            // all 1 (large block) or 0 (small block)
            // explicitly set for the sake of clarity
            lW = 0;            // previous window size
            W  = 0;            // current window size

            // all vector indexes; multiples of samples_per_envelope_step
            centerW = vi.blocksizes[1] / 2;

            pcm_current = centerW;

            // initialize all the mapping/backend lookups
            mode = new Object[vi.modes];

            for (int i = 0; i < vi.modes; i++)
            {
                int mapnum  = vi.mode_param[i].mapping;
                int maptype = vi.map_type[mapnum];

                mode[i] = FuncMapping.mapping_P[maptype].look(this, vi.mode_param[i],
                                                              vi.map_param[mapnum]);
            }

            return(0);
        }