📄 owng729.h
字号:
/*/////////////////////////////////////////////////////////////////////////////
//
// INTEL CORPORATION PROPRIETARY INFORMATION
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Intel Corporation and may not be copied
// or disclosed except in accordance with the terms of that agreement.
// Copyright(c) 2005 Intel Corporation. All Rights Reserved.
//
// Intel(R) Integrated Performance Primitives
// USC - Unified Speech Codec interface library
//
// By downloading and installing USC codec, you hereby agree that the
// accompanying Materials are being provided to you under the terms and
// conditions of the End User License Agreement for the Intel(R) Integrated
// Performance Primitives product previously accepted by you. Please refer
// to the file ipplic.htm located in the root directory of your Intel(R) IPP
// product installation for more information.
//
// A speech coding standards promoted by ITU, ETSI, 3GPP and other
// organizations. Implementations of these standards, or the standard enabled
// platforms may require licenses from various entities, including
// Intel Corporation.
//
//
// Purpose: G.729/A/B/D/E speech codec: main own header file.
//
*/
#ifndef __OWNCODEC_H__
#define __OWNCODEC_H__
#include <stdlib.h>
#include <ipps.h>
#include <ippsc.h>
#include "g729api.h"
#include "scratchmem.h"
#define ENC_KEY 0xecd729
#define DEC_KEY 0xdec729
#define G729_ENCODER_SCRATCH_MEMORY_SIZE (5120+40)
#define SEC_STAGE_BITS 5
#define FIR_STAGE_BITS 7
#define PARM_DIM 11
#define FIR_STAGE (1<<FIR_STAGE_BITS)
#define SPEECH_BUF_DIM 240
#define SEC_STAGE (1<<SEC_STAGE_BITS)
#define LP_LOOK_AHEAD 40
#define LP_WINDOW_DIM 240
#define LP_SUBFRAME_DIM 40
#define LP_FRAME_DIM 80
#define LPC_WINDOW (speechHistory + SPEECH_BUF_DIM - LP_WINDOW_DIM)
#define PRESENT_SPEECH (speechHistory + SPEECH_BUF_DIM - LP_FRAME_DIM - LP_LOOK_AHEAD)
#define MIN_PITCH_LAG 20
#define LPF_DIM 10 /*LP filter order */
#define INTERPOLATION_FILTER_DIM (10+1)
#define MAX_PITCH_LAG 143
#define L_prevExcitat (MAX_PITCH_LAG+INTERPOLATION_FILTER_DIM)
#define PITCH_SHARP_MIN 3277 /*pitch sharpening min = 0.2 */
#define BWF2 22938 /*bandwitdh = 0.7 */
#define PITCH_SHARP_MAX 13017 /*pitch sharpening max = 0.8 */
#define COEFF1 29491
#define CDBK1_BIT_NUM 3
#define CDBK2_BIT_NUM 4
#define CDBK1_DIM (1<<CDBK1_BIT_NUM)
#define LSF_MIN 40 /*lsf min = 0.005 */
#define CDBK2_DIM (1<<CDBK2_BIT_NUM)
#define LSP_MA_ORDER 4 /*MA moving average */
#define BW_EXP_FACT 321 /*bandwidth expansion factor */
#define LSF_MAX 25681 /*lsf max = 3.135 */
#define BWF2_PST 18022 /*weighting factor */
#define PITCH_GAIN_MAX 15564 /*for improving */
#define IMP_RESP_LEN 20
#define BWF1_PST BWF2 /*weighting factor */
#define CORR_DIM 616
#define RES_FIL_DIM (MAX_PITCH_LAG + 1 + 8)
#define SID_FRAME_MIN 3
#define SEED_INIT 11111
#define ACF_NOW 2
#define ACF_TOTAL 3
#define GAIN0 28672
#define GAIN1 (-IPP_MIN_16S-GAIN0)
#define GAIN_NUM 2
#define TOTAL_ACF_DIM (ACF_TOTAL *(LPF_DIM+1))
#define VAD_LPC_DIM 12
#define ACF_DIM (ACF_NOW *(LPF_DIM+1))
#define SIX_PI 19302
#define BWLPCF_DIM 30 /*backward LP filter order*/
#define SYNTH_BWD_DIM BWLPCF_DIM + 35
#define BWLPCF1_DIM (BWLPCF_DIM+1)
#define TBWD_DIM LP_FRAME_DIM + SYNTH_BWD_DIM
#define N0_98 32113
#define BWF2_PST_E 21300 /*Numerator wgt factor */
#define BWF1_PST_E BWF2 /*Denominator wgt factor 0.70*/
#define IMP_RESP_LEN_E 32 /*Imp.resp. len */
#define BWF_HARMONIC_E (1<<13)
#define BWF_HARMONIC (1<<14)
#define CDBK1_BIT_NUM_6K 3
#define CDBK2_BIT_NUM_6K 3
#define CDBK1_DIM_6K (1<<CDBK1_BIT_NUM_6K)
#define CDBK2_DIM_6K (1<<CDBK2_BIT_NUM_6K)
#define CNG_STACK_SIZE (1<<5)
#define G729_CODECFUN(type,name,arg) extern type name arg
typedef struct _SynthesisFilterState {
int nTaps;
short *buffer;
}SynthesisFilterState;
typedef struct _G729Coder_Obj {
int objSize;
int key;
unsigned int mode;
G729Codec_Type codecType;
}G729Coder_Obj;
typedef struct _VADmemory {
short LSFMean[LPF_DIM];
short minBuf[16];
short musicRC[10];
short VADPrev;
short VADPPrev;
short minPrev;
short minNext;
short minVAD;
short EMean;
short SEMean;
short SLEMean;
short SZCMean;
short VADPrevEnergy;
short SILcounter;
short updateCounter;
short extCounter;
short VADflag;
short VADflag2;
short lessCounter;
short frameCounter;
short musicCounter;
short musicSEMean;
short musicMCounter;
short conscCounter;
short conscCounterFlagP;
short MeanPgain;
short count_pflag;
short conscCounterFlagR;
short Mcount_pflag;
}VADmemory;
struct _G729Decoder_Obj {
G729Coder_Obj objPrm;
#if !defined (NO_SCRATCH_MEMORY_USED)
ScratchMem_Obj Mem;
#endif
short resFilBuf1[RES_FIL_DIM+LP_SUBFRAME_DIM];
short prevLSPfreq[LSP_MA_ORDER][LPF_DIM];
short LTPostFilt[TBWD_DIM];
short prevExcitat[LP_FRAME_DIM+L_prevExcitat];
short prevSubfrLSP[LPF_DIM];
short prevSubfrLSPquant[LPF_DIM];
short zeroPostFiltVec1[LPF_DIM+BWLPCF_DIM+2];
short decPrm[20]; /*analysis data pointer */
int coderErr[4]; /*memory for improving */
short pBwdLPC[BWLPCF1_DIM];
short pBwdLPC2[BWLPCF1_DIM];
short pPrevBwdLPC[BWLPCF1_DIM];
int hwState[BWLPCF1_DIM];
short pPrevFilt[BWLPCF1_DIM]; /* selected previously filter */
G729Codec_Type codecType;
short preemphFilt;
short seed;
short voiceFlag;
short gainExact; /*gain's precision */
short betaPreFilter; /*quant adaptive codebook gain from the previous subframe */
short gainNow;
short sidGain;
short seedSavage;
short CNGvar;
short SIDflag0;
short lspSID[LPF_DIM];
short SIDflag1;
short CNGidx; /*CNG cache parameters */
char *postProc; /*High pass post processing filter memory */
char *synFltw; /*Synthesis filter memory */
char *synFltw0; /*Synthesis filter memory */
int pstFltMode; /*post filter: 1- on, 0- off */
short gains[2]; /*pitch + vcodebook gains */
short prevFrameDelay;
short prevMA; /*previous MA prediction coef.*/
short prevFrameQuantEn[4];
short prevVoiceFlag;
short prevBFI;
short prevLPmode;
short interpCoeff2;
short interpCoeff2_2;
short valGainAttenuation;
short BFIcount;
char *PhDispMem;
short pPrevBwdRC[2];
short BWDFrameCounter;
short stat_pitch; /*pitch stationarity */
short prevFrameDelay2; /*previous frame delay */
short pitchStatIntDelay;
short pitchStatFracDelay;
short prevPitch;
short gammaPost1;
short gammaPost2;
short gammaHarm;
short BWDcounter2;
short FWDcounter2;
};
struct _G729Encoder_Obj {
G729Coder_Obj objPrm;
#if !defined (NO_SCRATCH_MEMORY_USED)
ScratchMem_Obj Mem;
#endif
short encSyn[LP_FRAME_DIM];/*encodersynthesisbuffer*/
short speechHistory[SPEECH_BUF_DIM];
short prevLSPfreq[LSP_MA_ORDER][LPF_DIM];
short energySfs[GAIN_NUM];/*energyscalefactors*/
short pACF[ACF_DIM];
short ACFsum[TOTAL_ACF_DIM];
short BWDsynth[TBWD_DIM];
short energy[GAIN_NUM];
short prevFrameQuantEn[4];/*quantizedenergyforpreviousframes*/
short resFilMem0[BWLPCF_DIM];
short resFilMem[BWLPCF_DIM+LP_SUBFRAME_DIM];
short quantLspSID[LPF_DIM];
short prevSubfrLSP[LPF_DIM];
short prevSubfrLSPquant[LPF_DIM];
int hwState[BWLPCF1_DIM];
short ACFsfs[ACF_NOW];
short ACFsumSfs[ACF_TOTAL];
short pPrevFilt[BWLPCF1_DIM];
short pPrevBwdLPC[BWLPCF1_DIM];
short pBwdLPC2[BWLPCF1_DIM];
short betaPreFilter;/*quantadaptivecodebookgainfromtheprevioussubframe*/
short prevWgtSpeech[LP_FRAME_DIM+MAX_PITCH_LAG+1];
short prevExcitat[LP_FRAME_DIM+L_prevExcitat+2];
short encPrm[19];
short zeroPostFiltVec1[LP_SUBFRAME_DIM+BWLPCF_DIM+1];/*zeroextendedimpulseresponse*/
short prevCoeff[LPF_DIM+1];
short prevSubfrLPC[LPF_DIM+1];
short reflC[LPF_DIM+1];
G729Codec_Type codecType;
short ACnorm;
short ACFcounter;
short gainNow;
short energyDim;/*energiesnumber*/
short SIDframeCounter;
short prevSubfrSmooth;/*perceptualweighting*/
short sidGain;
short speechDiff;
short prevLPmode;
short *pSynth;
short pPrevBwdRC[2];
short prevLAR[2];/*previoussubframelogarearatio*/
short prevDTXEnergy;
short seed;
short CNGidx;/*CNGcacheparameters*/
char *preProc;/*highpasspreprocessingfiltermemory*/
char *synFltw;/*synthesisfilter1memory*/
char *synFltw0;/*synthesisfilter2memory*/
char *vadMem;/*VADmemory*/
int mode;/*mode's*/
short extraTime;/*fixedcodebooksearchextratime*/
short prevRC[2];
int coderErr[4];
short dominantBWDmode;
short interpCoeff2_2;
short statGlobal;/*globalstationaritymesure*/
short pLag[5];
short pGain[5];
short BWDFrameCounter;/*consecutivebackwardframesNbre*/
short val_BWDFrameCounter;/*BWDFrameCounterassociated*/
short BWDcounter2;
short FWDcounter2;
};
int ExtractBitsG729(const unsigned char **pSrc, int *len, int Count );
void NoiseExcitationFactorization_G729B_16s(const Ipp16s *pSrc,Ipp32s val1,
Ipp16s val2, Ipp16s *pDst, int len);
int ComfortNoiseExcitation_G729B_16s_I(const Ipp16s *pSrc, const Ipp16s *pPos,
const Ipp16s *pSign, Ipp16s val, Ipp16s t,
Ipp16s *pSrcDst, Ipp16s *t2, short *Sfs);
void RandomCodebookParm_G729B_16s(Ipp16s *pSrc1, Ipp16s *pSrc2, Ipp16s *pSrc3,
Ipp16s *pSrc4, short *n);
void QuantSIDGain_G729B_16s(const Ipp16s *pSrc, const Ipp16s *pSrcSfs,
int len, Ipp16s *p, int *pIdx);
void Sum_G729_16s_Sfs(const Ipp16s *pSrc, const Ipp16s *pSrcSfs,
Ipp16s *pDst, Ipp16s *pDstSfs, int len, int*pSumMem);
void VoiceActivityDetectSize_G729(int *pSrc);
void VoiceActivityDetectInit_G729(char *pSrc);
void VoiceActivityDetect_G729(Ipp16s *pSrc,Ipp16s *pLSF,Ipp32s *pAutoCorr,
Ipp16s autoExp, Ipp16s rc, Ipp16s *pVad, char*pVADmem,short *pTmp);
void VADMusicDetection( G729Codec_Type codecType, int Val, short expVal, short *rc,
short *lags, short *pgains, short stat_flg,
short *Vad, char*pVADmem);
IppStatus SynthesisFilter_G729_16s (const Ipp16s *pLPC, const Ipp16s *pSrc,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -