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