diff --git a/libavcodec/amrnbdec.c b/libavcodec/amrnbdec.c
index d3fa7653f8c863c448f57b203fd39f8a5bbbcdc6..616be9710e607cfb99860e7c3c2ab65c0d379274 100644
--- a/libavcodec/amrnbdec.c
+++ b/libavcodec/amrnbdec.c
@@ -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++)
diff --git a/libavcodec/lsp.c b/libavcodec/lsp.c
index 71124920018282452e7165c1b88238cc33857c91..fa7152737a83d5a21946ad3664c4a8644ecf745a 100644
--- a/libavcodec/lsp.c
+++ b/libavcodec/lsp.c
@@ -65,6 +65,14 @@ void ff_acelp_lsf2lsp(int16_t *lsp, const int16_t *lsf, int lp_order)
         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 --git a/libavcodec/lsp.h b/libavcodec/lsp.h
index 5ee5c277bc9a5be5dad4e642461e17ba9892cb67..2c22058062dce45e867d290a3f687c6a4fd16405 100644
--- a/libavcodec/lsp.h
+++ b/libavcodec/lsp.h
@@ -62,6 +62,11 @@ void ff_set_min_dist_lsf(float *lsf, double min_spacing, int size);
  */
 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)