Пример #1
0
        /// <summary>
        /// Build wideband submodes.
        /// </summary>
        /// <returns>the wideband submodes.</returns>
        protected static internal SubMode[] BuildWbSubModes()
        {
            // Initialize Long Term Predictions
            HighLspQuant highLU = new HighLspQuant();
            // Initialize Codebook Searches
            SplitShapeSearch ssCbHighLbrSearch = new SplitShapeSearch(40, 10, 4, NSpeex.Codebook_Constants.hexc_10_32_table, 5, 0);
            SplitShapeSearch ssCbHighSearch    = new SplitShapeSearch(40, 8, 5, NSpeex.Codebook_Constants.hexc_table, 7, 1);

            // Initialize wide-band modes
            SubMode[] wbSubModes = new SubMode[SB_SUBMODES];
            wbSubModes[1] = new SubMode(0, 0, 1, 0, highLU, null, null, .75f, .75f, -1, 36);
            wbSubModes[2] = new SubMode(0, 0, 1, 0, highLU, null, ssCbHighLbrSearch, .85f, .6f, -1, 112);
            wbSubModes[3] = new SubMode(0, 0, 1, 0, highLU, null, ssCbHighSearch, .75f, .7f, -1, 192);
            wbSubModes[4] = new SubMode(0, 0, 1, 1, highLU, null, ssCbHighSearch, .75f, .75f, -1, 352);
            return(wbSubModes);
        }
Пример #2
0
        /// <summary>
        /// Build narrowband submodes
        /// </summary>
        /// <returns></returns>
        protected static SubMode[] buildNbSubModes()
        {
            /* Initialize Long Term Predictions */
            Ltp3Tap        ltpNb   = new Ltp3Tap(Codebook.gain_cdbk_nb, 7, 7);
            Ltp3Tap        ltpVlbr = new Ltp3Tap(Codebook.gain_cdbk_lbr, 5, 0);
            Ltp3Tap        ltpLbr  = new Ltp3Tap(Codebook.gain_cdbk_lbr, 5, 7);
            Ltp3Tap        ltpMed  = new Ltp3Tap(Codebook.gain_cdbk_lbr, 5, 7);
            LtpForcedPitch ltpFP   = new LtpForcedPitch();
            /* Initialize Codebook Searches */
            NoiseSearch      noiseSearch    = new NoiseSearch();
            SplitShapeSearch ssNbVlbrSearch = new SplitShapeSearch(40, 10, 4, Codebook.exc_10_16_table, 4, 0);
            SplitShapeSearch ssNbLbrSearch  = new SplitShapeSearch(40, 10, 4, Codebook.exc_10_32_table, 5, 0);
            SplitShapeSearch ssNbSearch     = new SplitShapeSearch(40, 5, 8, Codebook.exc_5_64_table, 6, 0);
            SplitShapeSearch ssNbMedSearch  = new SplitShapeSearch(40, 8, 5, Codebook.exc_8_128_table, 7, 0);
            SplitShapeSearch ssSbSearch     = new SplitShapeSearch(40, 5, 8, Codebook.exc_5_256_table, 8, 0);
            SplitShapeSearch ssNbUlbrSearch = new SplitShapeSearch(40, 20, 2, Codebook.exc_20_32_table, 5, 0);
            /* Initialize Line Spectral Pair Quantizers */
            NbLspQuant  nbLspQuant  = new NbLspQuant();
            LbrLspQuant lbrLspQuant = new LbrLspQuant();

            /* Initialize narrow-band modes */
            SubMode[] nbSubModes = new SubMode[NB_SUBMODES];
            /* 2150 bps "vocoder-like" mode for comfort noise */
            nbSubModes[1] = new SubMode(0, 1, 0, 0, lbrLspQuant, ltpFP, noiseSearch, .7f, .7f, -1, 43);
            /* 5.95 kbps very low bit-rate mode */
            nbSubModes[2] = new SubMode(0, 0, 0, 0, lbrLspQuant, ltpVlbr, ssNbVlbrSearch, 0.7f, 0.5f, .55f, 119);
            /* 8 kbps low bit-rate mode */
            nbSubModes[3] = new SubMode(-1, 0, 1, 0, lbrLspQuant, ltpLbr, ssNbLbrSearch, 0.7f, 0.55f, .45f, 160);
            /* 11 kbps medium bit-rate mode */
            nbSubModes[4] = new SubMode(-1, 0, 1, 0, lbrLspQuant, ltpMed, ssNbMedSearch, 0.7f, 0.63f, .35f, 220);
            /* 15 kbps high bit-rate mode */
            nbSubModes[5] = new SubMode(-1, 0, 3, 0, nbLspQuant, ltpNb, ssNbSearch, 0.7f, 0.65f, .25f, 300);
            /* 18.2 high bit-rate mode */
            nbSubModes[6] = new SubMode(-1, 0, 3, 0, nbLspQuant, ltpNb, ssSbSearch, 0.68f, 0.65f, .1f, 364);
            /* 24.6 kbps high bit-rate mode */
            nbSubModes[7] = new SubMode(-1, 0, 3, 1, nbLspQuant, ltpNb, ssNbSearch, 0.65f, 0.65f, -1, 492);
            /* 3.95 kbps very low bit-rate mode */
            nbSubModes[8] = new SubMode(0, 1, 0, 0, lbrLspQuant, ltpFP, ssNbUlbrSearch, .7f, .5f, .65f, 79);
            /* Return the Narrowband SubModes*/
            return(nbSubModes);
        }