📄 amrcode_comm.h
字号:
/*******************************************************************************
** File : AmrCode_comm.h
* Purpose : Declaration of public interface of AMR-NB SPEECH CODER
Date : 2006 -01-18 create
**********************************************************************************/
#ifndef AMRENC_INTERFACE_H
#define AMRENC_INTERFACE_H
#include "typedef.h"
#include "vad.h"
#include "amrcode_public.h"
#ifdef MMS_IO#define AMR_MAGIC_NUMBER "#!AMR\n"#define MAX_PACKED_SIZE (MAX_SERIAL_SIZE /8 + 2)#endif/* frame size in serial bitstream file (frame type + serial stream + flags) */#define SERIAL_FRAMESIZE (1+MAX_SERIAL_SIZE+5)
/****** const defines *****/
#define L_TOTAL 320 /* Total size of speech buffer. */
#define L_WINDOW 240 /* Window size in LP analysis */
#define L_FRAME 160 /* Frame size */
#define L_FRAME_BY2 80 /* Frame size divided by 2 */
#define L_SUBFR 40 /* Subframe size */
#define L_CODE 40 /* codevector length */
#define NB_TRACK 5 /* number of tracks */
#define STEP 5 /* codebook step size */
#define NB_TRACK_MR102 4 /* number of tracks mode mr102 */
#define STEP_MR102 4 /* codebook step size mode mr102 */
#define M 10 /* Order of LP filter */
#define MP1 (M+1) /* Order of LP filter + 1 */
#define LSF_GAP 205 /* Minimum distance between LSF after quantization; 50 Hz = 205 */
#define LSP_PRED_FAC_MR122 21299 /* MR122 LSP prediction factor (0.65 Q15) */#define AZ_SIZE (4*M+4) /* Size of array of LP filters in 4 subfr.s */
#define PIT_MIN_MR122 18 /* Minimum pitch lag (MR122 mode) */
#define PIT_MIN 20 /* Minimum pitch lag (all other modes) */
#define PIT_MAX 143 /* Maximum pitch lag */
#define L_INTERPOL (10+1) /* Length of filter for interpolation */
#define L_INTER_SRCH 4 /* Length of filter for CL LTP search interpolation */
#define MU 26214 /* Factor for tilt compensation filter 0.8 */
#define AGC_FAC 29491 /* Factor for automatic gain control 0.9 */
#define L_NEXT 40 /* Overhead in LP analysis */
#define SHARPMAX 13017 /* Maximum value of pitch sharpening */
#define SHARPMIN 0 /* Minimum value of pitch sharpening */
#define MAX_PRM_SIZE 57 /* max. num. of params */
#define MAX_SERIAL_SIZE 244 /* max. num. of serial bits */
#define GP_CLIP 15565 /* Pitch gain clipping = 0.95 */
#define N_FRAME 7 /* old pitch gains in average calculation */
#define EHF_MASK 0x0008 /* encoder homing frame pattern */
#define LTPG_MEM_SIZE 5 /* number of stored past LTP coding gains + 1 */
#define DTX_HIST_SIZE 8#define DTX_ELAPSED_FRAMES_THRESH (24 + 7 -1)#define DTX_HANG_CONST 7 /* yields eight frames of SP HANGOVER */
typedef enum
{
RX_SPEECH_GOOD = 0,
RX_SPEECH_DEGRADED,
RX_ONSET,
RX_SPEECH_BAD,
RX_SID_FIRST,
RX_SID_UPDATE,
RX_SID_BAD,
RX_NO_DATA,
RX_N_FRAMETYPES
}RXFrameType;
/* Channel decoded frame type */typedef enum
{
CHDEC_SID_FIRST = 0,
CHDEC_SID_FIRST_INCOMPLETE,
CHDEC_SID_UPDATE_INCOMPLETE,
CHDEC_SID_UPDATE,
CHDEC_SPEECH,
CHDEC_SPEECH_ONSET,
CHDEC_ESCAPE_MARKER,
CHDEC_ESCAPE_DATA,
CHDEC_NO_DATA
}CHDECFrameType ;
/* Channel decoded frame quality */typedef enum
{
CHDEC_GOOD = 0,
CHDEC_PROBABLY_DEGRADED,
CHDEC_PROBABLY_BAD,
CHDEC_BAD
} CHDECFrameQuality ;
typedef struct
{
Word16 past_rq[M]; /* Past quantized prediction error, Q15 */
} Q_plsfState;
typedef struct
{
Word16 old_A[M + 1]; /* Last A(z) for case of unstable filter */
} LevinsonState;
typedef struct
{
Word16 onset; /* onset state, Q0 */
Word16 prev_alpha; /* previous adaptor output, Q15 */
Word16 prev_gc; /* previous code gain, Q1 */
Word16 ltpg_mem[LTPG_MEM_SIZE]; /* LTP coding gain history, Q13 */ /* (ltpg_mem[0] not used for history) */
} GainAdaptState;
typedef struct
{
LevinsonState *levinsonSt;} lpcState;typedef struct
{
/* Past LSPs */ Word16 lsp_old[M]; Word16 lsp_old_q[M]; /* Quantization state */ Q_plsfState *qSt;} lspState;typedef struct
{
Word16 past_qua_en[4]; /* normal MA predictor memory, Q10 */
/* (contains 20*log10(qua_err)) */
Word16 past_qua_en_MR122[4]; /* MA predictor memory for MR122 mode, Q10 */ /* (contains log2(qua_err)) */
} gc_predState;
typedef struct
{
Word16 sf0_exp_gcode0; Word16 sf0_frac_gcode0; Word16 sf0_exp_target_en; Word16 sf0_frac_target_en; Word16 sf0_exp_coeff[5]; Word16 sf0_frac_coeff[5]; Word16 *gain_idx_ptr; gc_predState *gc_predSt; gc_predState *gc_predUnqSt; GainAdaptState *adaptSt;} gainQuantState; /* state variable */typedef struct
{
/* counters */ Word16 count; /* gain history Q11 */ Word16 gp[N_FRAME]; } tonStabState;typedef struct
{
Word16 T0_prev_subframe; /* integer pitch lag of previous sub-frame */} Pitch_frState;/* state variable */typedef struct
{
Word16 old_T0_med; Word16 ada_w; Word16 wght_flg; } pitchOLWghtState;
/* state variable */typedef struct
{
Pitch_frState *pitchSt;} clLtpState;typedef struct
{
Word16 lsp_hist[M * DTX_HIST_SIZE]; Word16 log_en_hist[DTX_HIST_SIZE]; Word16 hist_ptr; Word16 log_en_index; Word16 init_lsf_vq_index; Word16 lsp_index[3]; /* DTX handler stuff */ Word16 dtxHangoverCount; Word16 decAnaElapsedCount;} dtx_encState;
typedef struct
{
Word16 y2_hi; Word16 y2_lo; Word16 y1_hi; Word16 y1_lo; Word16 x0; Word16 x1;} Pre_ProcessState;
typedef struct
{
Word16 sid_update_rate; /* Send SID Update every sid_update_rate frame */
Word16 sid_update_counter; /* Number of frames since last SID */ Word16 sid_handover_debt; /* Number of extra SID_UPD frames to schedule*/ TXFrameType prev_ft;} sid_syncState;
typedef struct
{
/* Speech vector */ Word16 old_speech[L_TOTAL]; Word16 *speech, *p_window, *p_window_12k2; Word16 *new_speech; /* Global variable */ /* Weight speech vector */ Word16 old_wsp[L_FRAME + PIT_MAX]; Word16 *wsp; /* OL LTP states */ Word16 old_lags[5]; Word16 ol_gain_flg[2]; /* Excitation vector */ Word16 old_exc[L_FRAME + PIT_MAX + L_INTERPOL]; Word16 *exc; /* Zero vector */ Word16 ai_zero[L_SUBFR + MP1]; Word16 *zero; /* Impulse response vector */ Word16 *h1; Word16 hvec[L_SUBFR * 2]; /* Substates */ lpcState *lpcSt; lspState *lspSt; clLtpState *clLtpSt; gainQuantState *gainQuantSt; pitchOLWghtState *pitchOLWghtSt; tonStabState *tonStabSt; vadState *vadSt; Flag dtx; dtx_encState *dtx_encSt; /* Filter's memory */ Word16 mem_syn[M], mem_w0[M], mem_w[M]; Word16 mem_err[M + L_SUBFR], *error; Word16 sharp;} cod_amrState;
typedef struct
{
Pre_ProcessState *pre_state; cod_amrState *cod_amr_state; Flag dtx;
} Speech_Encode_FrameState;
typedef struct
{
Speech_Encode_FrameState* SpeechEncodeFrameState;
sid_syncState* SidsyncState;
}AmrNBCoder;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -