# HG changeset patch # User vitor # Date 1283892281 0 # Node ID 2dd67ed2f9473588547e6e6e50f726a8368183bc # Parent 04e68eb1aab7f1566f067ff89af99a2204324478 Move AMRNB lsf2lsp() function to common code for using in future AMRWB decoder. Patch by Marcelo Galvo Pvoa diff -r 04e68eb1aab7 -r 2dd67ed2f947 amrnbdec.c --- a/amrnbdec.c Tue Sep 07 19:54:48 2010 +0000 +++ b/amrnbdec.c Tue Sep 07 20:44:41 2010 +0000 @@ -222,20 +222,6 @@ /// @{ /** - * 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 @@ 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 @@ 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++) diff -r 04e68eb1aab7 -r 2dd67ed2f947 lsp.c --- a/lsp.c Tue Sep 07 19:54:48 2010 +0000 +++ b/lsp.c Tue Sep 07 20:44:41 2010 +0000 @@ -65,6 +65,14 @@ lsp[i] = ff_cos(lsf[i] * 20861 >> 15); // divide by PI and (0,13) -> (0,14) } +void ff_acelp_lsf2lspd(double *lsp, const float *lsf, int lp_order) +{ + int i; + + for(i = 0; i < lp_order; i++) + lsp[i] = cos(2.0 * M_PI * lsf[i]); +} + /** * \brief decodes polynomial coefficients from LSP * \param f [out] decoded polynomial coefficients (-0x20000000 <= (3.22) <= 0x1fffffff) diff -r 04e68eb1aab7 -r 2dd67ed2f947 lsp.h --- a/lsp.h Tue Sep 07 19:54:48 2010 +0000 +++ b/lsp.h Tue Sep 07 20:44:41 2010 +0000 @@ -63,6 +63,11 @@ void ff_acelp_lsf2lsp(int16_t *lsp, const int16_t *lsf, int lp_order); /** + * Floating point version of ff_acelp_lsf2lsp() + */ +void ff_acelp_lsf2lspd(double *lsp, const float *lsf, int lp_order); + +/** * \brief LSP to LP conversion (3.2.6 of G.729) * \param[out] lp decoded LP coefficients (-0x8000 <= (3.12) < 0x8000) * \param lsp LSP coefficients (-0x8000 <= (0.15) < 0x8000)