1e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/*
2e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc.
3e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **
4e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License");
5e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** you may not use this file except in compliance with the License.
6e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** You may obtain a copy of the License at
7e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **
8e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **     http://www.apache.org/licenses/LICENSE-2.0
9e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **
10e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Unless required by applicable law or agreed to in writing, software
11e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS,
12e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** See the License for the specific language governing permissions and
14e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** limitations under the License.
15e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard */
16e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
17e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/*--------------------------------------------------------------------------*
19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard *                         COD_MAIN.H                                       *
20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard *--------------------------------------------------------------------------*
21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard *       Static memory in the encoder				            *
22e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard *--------------------------------------------------------------------------*/
23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#ifndef __COD_MAIN_H__
24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#define __COD_MAIN_H__
25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "cnst.h"                          /* coder constant parameters */
27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
28e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "wb_vad.h"
29e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "dtx.h"
30e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "stream.h"
31e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "voAMRWB.h"
32e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
33e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardtypedef struct
34e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard{
35e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_decim[2 * L_FILT16k];       /* speech decimated filter memory */
36e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_sig_in[6];                  /* hp50 filter memory */
37e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_preemph;                    /* speech preemph filter memory */
38e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_speech[L_TOTAL - L_FRAME];  /* old speech vector at 12.8kHz */
39e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_wsp[PIT_MAX / OPL_DECIM];   /* old decimated weighted speech vector */
40e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_exc[PIT_MAX + L_INTERPOL];  /* old excitation vector */
41e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_levinson[M + 2];            /* levinson routine memory */
42e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 ispold[M];                      /* old isp (immittance spectral pairs) */
43e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 ispold_q[M];                    /* quantized old isp */
44e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 past_isfq[M];                   /* past isf quantizer */
45e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_wsp;                        /* wsp vector memory */
46e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_decim2[3];                  /* wsp decimation filter memory */
47e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_w0;                         /* target vector memory */
48e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_syn[M];                     /* synthesis memory */
49e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 tilt_code;                      /* tilt of code */
50e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_wsp_max;                    /* old wsp maximum value */
51e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_wsp_shift;                  /* old wsp shift */
52e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 Q_old;                          /* old scaling factor */
53e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 Q_max[2];                       /* old maximum scaling factor */
54e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 gp_clip[2];                     /* gain of pitch clipping memory */
55e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 qua_gain[4];                    /* gain quantizer memory */
56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
57e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_T0_med;
58e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 ol_gain;
59e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 ada_w;
60e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 ol_wght_flg;
61e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_ol_lag[5];
62e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 hp_wsp_mem[9];
63e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 old_hp_wsp[L_FRAME / OPL_DECIM + (PIT_MAX / OPL_DECIM)];
64e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    VadVars *vadSt;
65e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    dtx_encState *dtx_encSt;
66e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 first_frame;
67e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 isfold[M];                      /* old isf (frequency domain) */
68e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word32 L_gc_thres;                     /* threshold for noise enhancer */
69e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_syn_hi[M];                  /* modified synthesis memory (MSB) */
70e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_syn_lo[M];                  /* modified synthesis memory (LSB) */
71e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_deemph;                     /* speech deemph filter memory */
72e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_sig_out[6];                 /* hp50 filter memory for synthesis */
73e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_hp400[6];                   /* hp400 filter memory for synthesis */
74e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_oversamp[2 * L_FILT];       /* synthesis oversampled filter memory */
75e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_syn_hf[M];                  /* HF synthesis memory */
76e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_hf[2 * L_FILT16k];          /* HF band-pass filter memory */
77e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 mem_hf2[2 * L_FILT16k];         /* HF band-pass filter memory */
78e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 seed2;                          /* random memory for HF generation */
79e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 vad_hist;
80e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 gain_alpha;
81e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    /*  TX_State structure  */
82e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	Word16 sid_update_counter;
83e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 sid_handover_debt;
84e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard    Word16 prev_ft;
85e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	Word16 allow_dtx;
86e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	/*some input/output buffer parameters */
87e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	unsigned char       *inputStream;
88e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	int			        inputSize;
89e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	VOAMRWBMODE  		mode;
90e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	VOAMRWBFRAMETYPE	frameType;
91e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	unsigned short      *outputStream;
92e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	int			        outputSize;
93e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	FrameStream         *stream;
94e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	VO_MEM_OPERATOR     *pvoMemop;
95e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	VO_MEM_OPERATOR     voMemoprator;
96e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	VO_PTR              hCheck;
97e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard} Coder_State;
98e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
99e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardtypedef void* HAMRENC;
100e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
101e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#endif  //__COD_MAIN_H__
102e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
103e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
104