changeset 10889:de32bff741ea libavcodec

Split some SIPR structs to a header file for the upcoming SIPR16k commit
author vitor
date Sat, 16 Jan 2010 03:40:25 +0000
parents 427070f45916
children 36587d8c1201
files sipr.c sipr.h
diffstat 2 files changed, 84 insertions(+), 53 deletions(-) [+]
line wrap: on
line diff
--- a/sipr.c	Sat Jan 16 00:32:09 2010 +0000
+++ b/sipr.c	Sat Jan 16 03:40:25 2010 +0000
@@ -37,28 +37,11 @@
 #include "acelp_filters.h"
 #include "celp_filters.h"
 
-#define LSFQ_DIFF_MIN        (0.0125 * M_PI)
-
-#define LP_FILTER_ORDER      10
-
-/** Number of past samples needed for excitation interpolation */
-#define L_INTERPOL           (LP_FILTER_ORDER + 1)
-
-/**  Subframe size for all modes except 16k */
-#define SUBFR_SIZE           48
-
 #define MAX_SUBFRAME_COUNT   5
 
+#include "sipr.h"
 #include "siprdata.h"
 
-typedef enum {
-    MODE_16k,
-    MODE_8k5,
-    MODE_6k5,
-    MODE_5k0,
-    MODE_COUNT
-} SiprMode;
-
 typedef struct {
     const char *mode_name;
     uint16_t bits_per_frame;
@@ -127,41 +110,6 @@
     }
 };
 
-typedef struct {
-    AVCodecContext *avctx;
-    DSPContext dsp;
-
-    SiprMode mode;
-
-    float past_pitch_gain;
-    float lsf_history[LP_FILTER_ORDER];
-
-    float excitation[L_INTERPOL + PITCH_DELAY_MAX + 5*SUBFR_SIZE];
-
-    DECLARE_ALIGNED_16(float, synth_buf[LP_FILTER_ORDER + 5*SUBFR_SIZE + 6]);
-
-    float lsp_history[LP_FILTER_ORDER];
-    float gain_mem;
-    float energy_history[4];
-    float highpass_filt_mem[2];
-    float postfilter_mem[PITCH_DELAY_MAX + LP_FILTER_ORDER];
-
-    /* 5k0 */
-    float tilt_mem;
-    float postfilter_agc;
-    float postfilter_mem5k0[PITCH_DELAY_MAX + LP_FILTER_ORDER];
-    float postfilter_syn5k0[LP_FILTER_ORDER + SUBFR_SIZE*5];
-} SiprContext;
-
-typedef struct {
-    int vq_indexes[5];
-    int pitch_delay[5];        ///< pitch delay
-    int gp_index[5];           ///< adaptive-codebook gain indexes
-    int16_t fc_indexes[5][10]; ///< fixed-codebook indexes
-    int gc_index[5];           ///< fixed-codebook gain indexes
-} SiprParameters;
-
-
 static void dequant(float *out, const int *idx, const float *cbs[])
 {
     int i;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sipr.h	Sat Jan 16 03:40:25 2010 +0000
@@ -0,0 +1,83 @@
+/*
+ * SIPR / ACELP.NET decoder
+ *
+ * Copyright (c) 2008 Vladimir Voroshilov
+ * Copyright (c) 2009 Vitor Sessak
+ *
+ * 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
+ */
+
+#ifndef AVCODEC_SIPR_H
+#define AVCODEC_SIPR_H
+
+#include "avcodec.h"
+#include "dsputil.h"
+#include "acelp_pitch_delay.h"
+
+#define LSFQ_DIFF_MIN        (0.0125 * M_PI)
+
+#define LP_FILTER_ORDER      10
+
+/** Number of past samples needed for excitation interpolation */
+#define L_INTERPOL           (LP_FILTER_ORDER + 1)
+
+/**  Subframe size for all modes except 16k */
+#define SUBFR_SIZE           48
+
+typedef enum {
+    MODE_16k,
+    MODE_8k5,
+    MODE_6k5,
+    MODE_5k0,
+    MODE_COUNT
+} SiprMode;
+
+typedef struct {
+    AVCodecContext *avctx;
+    DSPContext dsp;
+
+    SiprMode mode;
+
+    float past_pitch_gain;
+    float lsf_history[LP_FILTER_ORDER];
+
+    float excitation[L_INTERPOL + PITCH_DELAY_MAX + 5*SUBFR_SIZE];
+
+    DECLARE_ALIGNED_16(float, synth_buf[LP_FILTER_ORDER + 5*SUBFR_SIZE + 6]);
+
+    float lsp_history[LP_FILTER_ORDER];
+    float gain_mem;
+    float energy_history[4];
+    float highpass_filt_mem[2];
+    float postfilter_mem[PITCH_DELAY_MAX + LP_FILTER_ORDER];
+
+    /* 5k0 */
+    float tilt_mem;
+    float postfilter_agc;
+    float postfilter_mem5k0[PITCH_DELAY_MAX + LP_FILTER_ORDER];
+    float postfilter_syn5k0[LP_FILTER_ORDER + SUBFR_SIZE*5];
+} SiprContext;
+
+typedef struct {
+    int vq_indexes[5];
+    int pitch_delay[5];        ///< pitch delay
+    int gp_index[5];           ///< adaptive-codebook gain indexes
+    int16_t fc_indexes[5][10]; ///< fixed-codebook indexes
+    int gc_index[5];           ///< fixed-codebook gain indexes
+} SiprParameters;
+
+#endif /* AVCODEC_SIPR_H */