[soc]: r4868 - amr/amr-ffmpeg.diff
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 */
participants (1)
-
cmcq