[FFmpeg-soc] [soc]: r4868 - amr/amr-ffmpeg.diff
cmcq
subversion at mplayerhq.hu
Fri Jul 31 16:44:50 CEST 2009
Author: cmcq
Date: Fri Jul 31 16:44:49 2009
New Revision: 4868
Log:
Absorb qcelp_lsp.c into lsp.c because it's also useful for AMR
Modified:
amr/amr-ffmpeg.diff
Modified: amr/amr-ffmpeg.diff
==============================================================================
--- amr/amr-ffmpeg.diff Fri Jul 31 16:36:17 2009 (r4867)
+++ amr/amr-ffmpeg.diff Fri Jul 31 16:44:49 2009 (r4868)
@@ -6,10 +6,19 @@ Index: libavcodec/Makefile
OBJS-$(CONFIG_AC3_ENCODER) += ac3enc.o ac3tab.o ac3.o
OBJS-$(CONFIG_ALAC_DECODER) += alac.o
OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o lpc.o
-+OBJS-$(CONFIG_AMRNB_DECODER) += amrnbdec.o qcelp_lsp.o celp_filters.o celp_math.o acelp_filters.o acelp_vectors.o
++OBJS-$(CONFIG_AMRNB_DECODER) += amrnbdec.o celp_filters.o celp_math.o acelp_filters.o acelp_vectors.o lsp.o
OBJS-$(CONFIG_AMV_DECODER) += sp5xdec.o mjpegdec.o mjpeg.o
OBJS-$(CONFIG_APE_DECODER) += apedec.o
OBJS-$(CONFIG_ASV1_DECODER) += asv1.o mpeg12data.o
+@@ -180,7 +181,7 @@
+ OBJS-$(CONFIG_PPM_DECODER) += pnmenc.o pnm.o
+ OBJS-$(CONFIG_PPM_ENCODER) += pnmenc.o
+ OBJS-$(CONFIG_PTX_DECODER) += ptx.o
+-OBJS-$(CONFIG_QCELP_DECODER) += qcelpdec.o qcelp_lsp.o celp_math.o celp_filters.o acelp_vectors.o
++OBJS-$(CONFIG_QCELP_DECODER) += qcelpdec.o celp_math.o celp_filters.o acelp_vectors.o lsp.o
+ OBJS-$(CONFIG_QDM2_DECODER) += qdm2.o mpegaudiodec.o mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o
+ OBJS-$(CONFIG_QDRAW_DECODER) += qdrw.o
+ OBJS-$(CONFIG_QPEG_DECODER) += qpeg.o
Index: libavcodec/allcodecs.c
===================================================================
--- libavcodec/allcodecs.c (revision 19401)
@@ -214,16 +223,195 @@ Index: libavcodec/acelp_vectors.h
+ const int length);
+
#endif /* AVCODEC_ACELP_VECTORS_H */
+Index: libavcodec/qcelpdec.c
+===================================================================
+--- libavcodec/qcelpdec.c (revision 19401)
++++ libavcodec/qcelpdec.c (working copy)
+@@ -38,6 +38,7 @@
+ #include "celp_math.h"
+ #include "celp_filters.h"
+ #include "acelp_vectors.h"
++#include "lsp.h"
+
+ #undef NDEBUG
+ #include <assert.h>
+@@ -76,13 +77,6 @@
+ } QCELPContext;
+
+ /**
+- * Reconstructs LPC coefficients from the line spectral pair frequencies.
+- *
+- * TIA/EIA/IS-733 2.4.3.3.5
+- */
+-void ff_celp_lspf2lpc(const double *lspf, float *lpc);
+-
+-/**
+ * Initialize the speech codec according to the specification.
+ *
+ * TIA/EIA/IS-733 2.4.9
Index: libavcodec/qcelp_lsp.c
===================================================================
--- libavcodec/qcelp_lsp.c (revision 19401)
+++ libavcodec/qcelp_lsp.c (working copy)
-@@ -27,8 +27,6 @@
- * @remark Development mentored by Benjamin Larson
- */
-
+@@ -1,81 +0,0 @@
+-/*
+- * QCELP decoder
+- * Copyright (c) 2007 Reynaldo H. Verdejo Pinochet
+- *
+- * This file is part of FFmpeg.
+- *
+- * FFmpeg is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2.1 of the License, or (at your option) any later version.
+- *
+- * FFmpeg is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public
+- * License along with FFmpeg; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+- */
+-
+-/**
+- * @file libavcodec/qcelp_lsp.c
+- * QCELP decoder
+- * @author Reynaldo H. Verdejo Pinochet
+- * @remark FFmpeg merging spearheaded by Kenan Gillet
+- * @remark Development mentored by Benjamin Larson
+- */
+-
-#include "libavutil/mathematics.h"
-
- /**
- * Computes the Pa / (1 + z(-1)) or Qa / (1 - z(-1)) coefficients
- * needed for LSP to LPC conversion.
+-/**
+- * Computes the Pa / (1 + z(-1)) or Qa / (1 - z(-1)) coefficients
+- * needed for LSP to LPC conversion.
+- * We only need to calculate the 6 first elements of the polynomial.
+- *
+- * @param lspf line spectral pair frequencies
+- * @param f [out] polynomial input/output as a vector
+- *
+- * TIA/EIA/IS-733 2.4.3.3.5-1/2
+- */
+-static void lsp2polyf(const double *lspf, double *f, int lp_half_order)
+-{
+- int i, j;
+-
+- f[0] = 1.0;
+- f[1] = -2 * lspf[0];
+- lspf -= 2;
+- for(i=2; i<=lp_half_order; i++)
+- {
+- double val = -2 * lspf[2*i];
+- f[i] = val * f[i-1] + 2*f[i-2];
+- for(j=i-1; j>1; j--)
+- f[j] += f[j-1] * val + f[j-2];
+- f[1] += val;
+- }
+-}
+-
+-/**
+- * Reconstructs LPC coefficients from the line spectral pair frequencies.
+- *
+- * @param lspf line spectral pair frequencies
+- * @param lpc linear predictive coding coefficients
+- */
+-void ff_celp_lspf2lpc(const double *lspf, float *lpc)
+-{
+- double pa[6], qa[6];
+- int i;
+-
+- lsp2polyf(lspf, pa, 5);
+- lsp2polyf(lspf + 1, qa, 5);
+-
+- for (i=4; i>=0; i--)
+- {
+- double paf = pa[i+1] + pa[i];
+- double qaf = qa[i+1] - qa[i];
+-
+- lpc[i ] = 0.5*(paf+qaf);
+- lpc[9-i] = 0.5*(paf-qaf);
+- }
+-}
+Index: libavcodec/lsp.c
+===================================================================
+--- libavcodec/lsp.c (revision 19401)
++++ libavcodec/lsp.c (working copy)
+@@ -1,6 +1,7 @@
+ /*
+ * LSP routines for ACELP-based codecs
+ *
++ * Copyright (c) 2007 Reynaldo H. Verdejo Pinochet (QCELP decoder)
+ * Copyright (c) 2008 Vladimir Voroshilov
+ *
+ * This file is part of FFmpeg.
+@@ -118,3 +119,48 @@
+ /* LSP values for second subframe (3.2.5 of G.729)*/
+ ff_acelp_lsp2lpc(lp_2nd, lsp_2nd, lp_order >> 1);
+ }
++
++/**
++ * Computes the Pa / (1 + z(-1)) or Qa / (1 - z(-1)) coefficients
++ * needed for LSP to LPC conversion.
++ * We only need to calculate the 6 first elements of the polynomial.
++ *
++ * @param lspf line spectral pair frequencies
++ * @param f [out] polynomial input/output as a vector
++ *
++ * TIA/EIA/IS-733 2.4.3.3.5-1/2
++ */
++static void lsp2polyf(const double *lspf, double *f, int lp_half_order)
++{
++ int i, j;
++
++ f[0] = 1.0;
++ f[1] = -2 * lspf[0];
++ lspf -= 2;
++ for(i=2; i<=lp_half_order; i++)
++ {
++ double val = -2 * lspf[2*i];
++ f[i] = val * f[i-1] + 2*f[i-2];
++ for(j=i-1; j>1; j--)
++ f[j] += f[j-1] * val + f[j-2];
++ f[1] += val;
++ }
++}
++
++void ff_celp_lspf2lpc(const double *lspf, float *lpc)
++{
++ double pa[6], qa[6];
++ int i;
++
++ lsp2polyf(lspf, pa, 5);
++ lsp2polyf(lspf + 1, qa, 5);
++
++ for (i=4; i>=0; i--)
++ {
++ double paf = pa[i+1] + pa[i];
++ double qaf = qa[i+1] - qa[i];
++
++ lpc[i ] = 0.5*(paf+qaf);
++ lpc[9-i] = 0.5*(paf-qaf);
++ }
++}
+Index: libavcodec/lsp.h
+===================================================================
+--- libavcodec/lsp.h (revision 19401)
++++ libavcodec/lsp.h (working copy)
+@@ -67,4 +67,14 @@
+ */
+ void ff_acelp_lp_decode(int16_t* lp_1st, int16_t* lp_2nd, const int16_t* lsp_2nd, const int16_t* lsp_prev, int lp_order);
+
++/**
++ * Reconstructs LPC coefficients from the line spectral pair frequencies.
++ *
++ * TIA/EIA/IS-733 2.4.3.3.5
++ *
++ * @param lspf line spectral pair frequencies
++ * @param lpc linear predictive coding coefficients
++ */
++void ff_celp_lspf2lpc(const double *lspf, float *lpc);
++
+ #endif /* AVCODEC_LSP_H */
More information about the FFmpeg-soc
mailing list