[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