| @@ -122,9 +122,9 @@ static int decode_lspf(QCELPContext *q, float *lspf) | |||||
| const float *predictors; | const float *predictors; | ||||
| if (q->bitrate == RATE_OCTAVE || q->bitrate == I_F_Q) { | if (q->bitrate == RATE_OCTAVE || q->bitrate == I_F_Q) { | ||||
| predictors = (q->prev_bitrate != RATE_OCTAVE && | |||||
| q->prev_bitrate != I_F_Q ? | |||||
| q->prev_lspf : q->predictor_lspf); | |||||
| predictors = q->prev_bitrate != RATE_OCTAVE && | |||||
| q->prev_bitrate != I_F_Q ? q->prev_lspf | |||||
| : q->predictor_lspf; | |||||
| if (q->bitrate == RATE_OCTAVE) { | if (q->bitrate == RATE_OCTAVE) { | ||||
| q->octave_count++; | q->octave_count++; | ||||
| @@ -136,14 +136,14 @@ static int decode_lspf(QCELPContext *q, float *lspf) | |||||
| + predictors[i] * QCELP_LSP_OCTAVE_PREDICTOR | + predictors[i] * QCELP_LSP_OCTAVE_PREDICTOR | ||||
| + (i + 1) * ((1 - QCELP_LSP_OCTAVE_PREDICTOR)/11); | + (i + 1) * ((1 - QCELP_LSP_OCTAVE_PREDICTOR)/11); | ||||
| } | } | ||||
| smooth = (q->octave_count < 10 ? .875 : 0.1); | |||||
| smooth = q->octave_count < 10 ? .875 : 0.1; | |||||
| } else { | } else { | ||||
| erasure_coeff = QCELP_LSP_OCTAVE_PREDICTOR; | erasure_coeff = QCELP_LSP_OCTAVE_PREDICTOR; | ||||
| assert(q->bitrate == I_F_Q); | assert(q->bitrate == I_F_Q); | ||||
| if(q->erasure_count > 1) | if(q->erasure_count > 1) | ||||
| erasure_coeff *= (q->erasure_count < 4 ? 0.9 : 0.7); | |||||
| erasure_coeff *= q->erasure_count < 4 ? 0.9 : 0.7; | |||||
| for(i = 0; i < 10; i++) { | for(i = 0; i < 10; i++) { | ||||
| q->predictor_lspf[i] = | q->predictor_lspf[i] = | ||||
| @@ -156,11 +156,11 @@ static int decode_lspf(QCELPContext *q, float *lspf) | |||||
| // Check the stability of the LSP frequencies. | // Check the stability of the LSP frequencies. | ||||
| lspf[0] = FFMAX(lspf[0], QCELP_LSP_SPREAD_FACTOR); | lspf[0] = FFMAX(lspf[0], QCELP_LSP_SPREAD_FACTOR); | ||||
| for(i=1; i<10; i++) | for(i=1; i<10; i++) | ||||
| lspf[i] = FFMAX(lspf[i], (lspf[i-1] + QCELP_LSP_SPREAD_FACTOR)); | |||||
| lspf[i] = FFMAX(lspf[i], lspf[i - 1] + QCELP_LSP_SPREAD_FACTOR); | |||||
| lspf[9] = FFMIN(lspf[9], (1.0 - QCELP_LSP_SPREAD_FACTOR)); | |||||
| lspf[9] = FFMIN(lspf[9], 1.0 - QCELP_LSP_SPREAD_FACTOR); | |||||
| for(i=9; i>0; i--) | for(i=9; i>0; i--) | ||||
| lspf[i-1] = FFMIN(lspf[i-1], (lspf[i] - QCELP_LSP_SPREAD_FACTOR)); | |||||
| lspf[i - 1] = FFMIN(lspf[i - 1], lspf[i] - QCELP_LSP_SPREAD_FACTOR); | |||||
| // Low-pass filter the LSP frequencies. | // Low-pass filter the LSP frequencies. | ||||
| ff_weighted_vector_sumf(lspf, lspf, q->prev_lspf, smooth, 1.0-smooth, 10); | ff_weighted_vector_sumf(lspf, lspf, q->prev_lspf, smooth, 1.0-smooth, 10); | ||||