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