|
|
|
@ -221,20 +221,6 @@ static enum Mode unpack_bitstream(AMRContext *p, const uint8_t *buf, |
|
|
|
|
/// @defgroup amr_lpc_decoding AMR pitch LPC coefficient decoding functions
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convert an lsf vector into an lsp vector. |
|
|
|
|
* |
|
|
|
|
* @param lsf input lsf vector |
|
|
|
|
* @param lsp output lsp vector |
|
|
|
|
*/ |
|
|
|
|
static void lsf2lsp(const float *lsf, double *lsp) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < LP_FILTER_ORDER; i++) |
|
|
|
|
lsp[i] = cos(2.0 * M_PI * lsf[i]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Interpolate the LSF vector (used for fixed gain smoothing). |
|
|
|
|
* The interpolation is done over all four subframes even in MODE_12k2. |
|
|
|
@ -293,7 +279,7 @@ static void lsf2lsp_for_mode12k2(AMRContext *p, double lsp[LP_FILTER_ORDER], |
|
|
|
|
if (update) |
|
|
|
|
interpolate_lsf(p->lsf_q, lsf_q); |
|
|
|
|
|
|
|
|
|
lsf2lsp(lsf_q, lsp); |
|
|
|
|
ff_acelp_lsf2lspd(lsp, lsf_q, LP_FILTER_ORDER); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -357,7 +343,7 @@ static void lsf2lsp_3(AMRContext *p) |
|
|
|
|
interpolate_lsf(p->lsf_q, lsf_q); |
|
|
|
|
memcpy(p->prev_lsf_r, lsf_r, LP_FILTER_ORDER * sizeof(*lsf_r)); |
|
|
|
|
|
|
|
|
|
lsf2lsp(lsf_q, p->lsp[3]); |
|
|
|
|
ff_acelp_lsf2lspd(p->lsp[3], lsf_q, LP_FILTER_ORDER); |
|
|
|
|
|
|
|
|
|
// interpolate LSP vectors at subframes 1, 2 and 3
|
|
|
|
|
for (i = 1; i <= 3; i++) |
|
|
|
|