📄 owngsmamr.h
字号:
Ipp16s gainPitch, Ipp16s gainCode, Ipp16s *pAQnt, Ipp16s *pLocSynth, Ipp16s *pTargetVec,
Ipp16s *code, Ipp16s *pAdaptCode, Ipp16s *pFltVector, Ipp16s *a_MemorySyn, Ipp16s *a_MemoryErr,
Ipp16s *a_Memory_W0, Ipp16s *pLTPExc, Ipp16s *vFlagSharp);
void ownPredExcMode3_6_GSMAMR (Ipp16s *pLTPExc, Ipp16s T0, Ipp16s frac, Ipp16s lenSubfr, Ipp16s flag3);
void ownPhaseDispersion_GSMAMR (sPhaseDispSt *state, IppSpchBitRate rate, Ipp16s *x, Ipp16s cbGain,
Ipp16s ltpGain, Ipp16s *innovVec, Ipp16s pitchFactor, Ipp16s tmpShift);
Ipp16s ownSourceChDetectorUpdate_GSMAMR (Ipp16s *a_EnergyHistVector, Ipp16s *vCountHangover, Ipp16s *ltpGainHist, Ipp16s *pSpeechVec, Ipp16s *vVoiceHangover);
void ownCalcUnFiltEnergy_GSMAMR(Ipp16s *pLPResVec, Ipp16s *exc, Ipp16s *code, Ipp16s gainPitch, Ipp16s lenSubfr, Ipp16s *fracEnergyCoeff,
Ipp16s *expEnergyCoeff, Ipp16s *ltpg);
void ownCalcFiltEnergy_GSMAMR(IppSpchBitRate rate, Ipp16s *pTargetVec, Ipp16s *pTargetVec2, Ipp16s *pAdaptCode, Ipp16s *pFltVector, Ipp16s *fracEnergyCoeff,
Ipp16s *expEnergyCoeff, Ipp16s *optFracCodeGain, Ipp16s *optExpCodeGain);
void ownCalcTargetEnergy_GSMAMR(Ipp16s *pTargetVec, Ipp16s *optExpCodeGain, Ipp16s *optFracCodeGain);
void ownConvertDirectCoeffToReflCoeff_GSMAMR(Ipp16s *pDirectCoeff, Ipp16s *pReflCoeff);
void ownScaleExcitation_GSMAMR(Ipp16s *pInputSignal, Ipp16s *pOutputSignal);
void ownPredEnergyMA_GSMAMR(Ipp16s *a_PastQntEnergy, Ipp16s *a_PastQntEnergy_M122, IppSpchBitRate rate, Ipp16s *code,
Ipp16s *expGainCodeCB, Ipp16s *fracGainCodeCB, Ipp16s *fracEnergyCoeff, Ipp16s *frac_en);
Ipp16s ownQntGainCodebook_GSMAMR(IppSpchBitRate rate, Ipp16s expGainCodeCB, Ipp16s fracGainCodeCB, Ipp16s *gain,
Ipp16s *pQntEnergyErr_M122, Ipp16s *pQntEnergyErr);
Ipp16s ownQntGainPitch_M7950_GSMAMR(Ipp16s gainPitchLimit, Ipp16s *gain, Ipp16s *pGainCand, Ipp16s *pGainCind);
Ipp16s ownQntGainPitch_M122_GSMAMR(Ipp16s gainPitchLimit, Ipp16s gain);
void ownUpdateUnQntPred_M475(Ipp16s *a_PastQntEnergy, Ipp16s *a_PastQntEnergy_M122,
Ipp16s expGainCodeCB, Ipp16s fracGainCodeCB, Ipp16s optExpCodeGain, Ipp16s optFracCodeGain);
Ipp16s ownGainQnt_M475(Ipp16s *a_PastQntEnergy, Ipp16s *a_PastQntEnergy_M122, Ipp16s vExpPredCBGain,
Ipp16s vFracPredCBGain, Ipp16s *a_ExpEnCoeff, Ipp16s *a_FracEnCoeff, Ipp16s vExpTargetEnergy,
Ipp16s vFracTargetEnergy, Ipp16s *codeNoSharpSF1, Ipp16s expGainCodeSF1, Ipp16s fracGainCodeSF1,
Ipp16s *expCoeffSF1, Ipp16s *fracCoeffSF1, Ipp16s expTargetEnergySF1, Ipp16s fracTargetEnergySF1,
Ipp16s gainPitchLimit, Ipp16s *gainPitSF0, Ipp16s *gainCodeSF0, Ipp16s *gainPitSF1, Ipp16s *gainCodeSF1);
void ownGainQuant_M795_GSMAMR(Ipp16s *vOnSetQntGain, Ipp16s *vPrevAdaptOut, Ipp16s *vPrevGainCode, Ipp16s *a_LTPHistoryGain, Ipp16s *pLTPRes,
Ipp16s *pLTPExc, Ipp16s *code, Ipp16s *fracEnergyCoeff, Ipp16s *expEnergyCoeff, Ipp16s expCodeEnergy, Ipp16s fracCodeEnergy,
Ipp16s expGainCodeCB, Ipp16s fracGainCodeCB, Ipp16s lenSubfr, Ipp16s optFracCodeGain, Ipp16s optExpCodeGain, Ipp16s gainPitchLimit,
Ipp16s *gainPitch, Ipp16s *gainCode, Ipp16s *pQntEnergyErr_M122, Ipp16s *pQntEnergyErr, Ipp16s **ppAnalysisParam);
Ipp16s ownGainQntInward_GSMAMR(IppSpchBitRate rate, Ipp16s expGainCodeCB, Ipp16s fracGainCodeCB, Ipp16s *fracEnergyCoeff, Ipp16s *expEnergyCoeff,
Ipp16s gainPitchLimit, Ipp16s *gainPitch, Ipp16s *gainCode, Ipp16s *pQntEnergyErr_M122, Ipp16s *pQntEnergyErr);
Ipp32s ownGainQuant_GSMAMR(sGainQuantSt *st, IppSpchBitRate rate, Ipp16s *pLTPRes, Ipp16s *pLTPExc, Ipp16s *code, Ipp16s *pTargetVec,
Ipp16s *pTargetVec2, Ipp16s *pAdaptCode, Ipp16s *pFltVector, Ipp16s even_subframe, Ipp16s gainPitchLimit, Ipp16s *gainPitSF0,
Ipp16s *gainCodeSF0, Ipp16s *gainPitch, Ipp16s *gainCode, Ipp16s **ppAnalysisParam);
void ownDecodeFixedCodebookGain_GSMAMR(Ipp16s *a_PastQntEnergy, Ipp16s *a_PastQntEnergy_M122, IppSpchBitRate rate,
Ipp16s index, Ipp16s *code, Ipp16s *gainCode);
void ownDecodeCodebookGains_GSMAMR(Ipp16s *a_PastQntEnergy, Ipp16s *a_PastQntEnergy_M122, IppSpchBitRate rate, Ipp16s index,
Ipp16s *code, Ipp16s evenSubfr, Ipp16s * gainPitch, Ipp16s * gain_cod);
void ownConcealCodebookGain_GSMAMR(Ipp16s *a_GainBuffer, Ipp16s vPastGainCode, Ipp16s *a_PastQntEnergy,
Ipp16s *a_PastQntEnergy_M122, Ipp16s state, Ipp16s *gainCode);
void ownConcealCodebookGainUpdate_GSMAMR(Ipp16s *a_GainBuffer, Ipp16s *vPastGainCode, Ipp16s *vPrevGainCode, /* i : flag: frame is bad */
Ipp16s badFrame, Ipp16s vPrevBadFr, Ipp16s *gainCode);
void ownConcealGainPitch_GSMAMR(Ipp16s *a_LSFBuffer, Ipp16s vPastGainZero, Ipp16s state, Ipp16s *pGainPitch);
void ownConcealGainPitchUpdate_GSMAMR(Ipp16s *a_LSFBuffer, Ipp16s *vPastGainZero, Ipp16s *vPrevGainZero, /* i : flag: frame is bad */
Ipp16s badFrame, Ipp16s vPrevBadFr, Ipp16s *gain_pitch);
Ipp32s ownCloseLoopFracPitchSearch_GSMAMR(Ipp16s *vTimePrevSubframe, Ipp16s *a_GainHistory, IppSpchBitRate rate, Ipp16s frameOffset,
Ipp16s *pLoopPitchLags, Ipp16s *pImpResVec, Ipp16s *pLTPExc, Ipp16s *pPredRes, Ipp16s *pTargetVec, Ipp16s lspFlag, Ipp16s *pTargetVec2,
Ipp16s *pAdaptCode, Ipp16s *pExpPitchDel, Ipp16s *pFracPitchDel, Ipp16s *gainPitch, Ipp16s **ppAnalysisParam, Ipp16s *gainPitchLimit);
Ipp16s ownGenNoise_GSMAMR(Ipp32s *pShiftReg, Ipp16s numBits);
void ownBuildCNCode_GSMAMR(Ipp32s *seed, Ipp16s *pCNVec);
void ownBuildCNParam_GSMAMR(Ipp16s *seed, const Ipp16s numParam, const Ipp16s *pTableSizeParam, Ipp16s *pCNParam);
void ownDecLSPQuantDTX_GSMAMR(Ipp16s *a_PastQntPredErr, Ipp16s *a_PastLSFQnt, Ipp16s BadFrInd, Ipp16s *indice, Ipp16s *lsp1_q);
Ipp32s ownDTXDecoder_GSMAMR(sDTXDecoderSt *st, Ipp16s *a_MemorySyn, Ipp16s *a_PastQntPredErr, Ipp16s *a_PastLSFQnt,
Ipp16s *a_PastQntEnergy, Ipp16s *a_PastQntEnergy_M122, Ipp16s *vHgAverageVar, Ipp16s *vHgAverageCount,
enum enDTXStateType newState, GSMAMR_Rate_t rate, Ipp16s *pParmVec, Ipp16s *pSynthSpeechVec,
Ipp16s *pA_LP);
enum enDTXStateType ownRX_DTX_Handler_GSMAMR(GSMAMRDecoder_Obj* decoderObj, RXFrameType frame_type);
Ipp32s ownDecSidSyncReset_GSMAMR(sDTXDecoderSt *st);
enum enDTXStateType ownDecSidSync(sDTXDecoderSt *st, RXFrameType frame_type );
void ownPrm2Bits_GSMAMR(const Ipp16s* prm, Ipp8u *Vout, GSMAMR_Rate_t rate );
void ownBits2Prm_GSMAMR( const Ipp8u *bitstream, Ipp16s* prm , GSMAMR_Rate_t rate );
Ipp32s ownEncDetectSize_GSMAMR(Ipp32s* pEncSize);
Ipp32s ownEncoderInit_GSMAMR(GSMAMREncoder_Obj* st);
Ipp32s ownDtxEncoderInit_GSMAMR(sDTXEncoderSt* st);
Ipp32s ownGainQuantInit_GSMAMR(sGainQuantSt *state);
Ipp32s ownVAD1Init_GSMAMR(IppGSMAMRVad1State *state);
Ipp32s ownVAD2Init_GSMAMR(IppGSMAMRVad2State *state);
/********************************************************
* structs declarations
*********************************************************/
typedef struct _GSMAMRCoder_Obj{
Ipp32s objSize;
Ipp32s key;
Ipp32s mode; /* encoder mode's */
GSMAMRCodec_Type codecType;
}GSMAMRCoder_Obj;
typedef struct {
Ipp16s a_SpeechVecOld[SPEECH_BUF_SIZE];
Ipp16s *pSpeechPtr, *pWindowPtr, *pWindowPtr_M122;
Ipp16s *pSpeechPtrNew;
Ipp16s a_WeightSpeechVecOld[FRAME_SIZE_GSMAMR + PITCH_MAX_LAG];
Ipp16s *pWeightSpeechVec;
Ipp16s a_LTPStateOld[5];
Ipp16s a_GainFlg[2];
Ipp16s a_ExcVecOld[FRAME_SIZE_GSMAMR + PITCH_MAX_LAG + FLT_INTER_SIZE];
Ipp16s *pExcVec;
Ipp16s a_ZeroVec[SUBFR_SIZE_GSMAMR + LP1_ORDER_SIZE];
Ipp16s *pZeroVec;
Ipp16s *pImpResVec;
Ipp16s a_ImpResVec[SUBFR_SIZE_GSMAMR];
Ipp16s a_SubState[LP_ORDER_SIZE + 1];
Ipp16s a_LSP_Old[LP_ORDER_SIZE];
Ipp16s a_LSPQnt_Old[LP_ORDER_SIZE];
Ipp16s a_PastQntPredErr[LP_ORDER_SIZE];
Ipp16s vTimePrevSubframe;
sGainQuantSt stGainQntSt;
Ipp16s vTimeMedOld;
Ipp16s vFlagVADState;
Ipp16s vCount;
Ipp16s vFlagTone;
Ipp16s a_GainHistory[PG_NUM_FRAME];
dVADState *pVAD1St;
dVADState *pVAD2St;
Ipp32s vFlagDTX;
sDTXEncoderSt stDTXEncState;
Ipp16s a_MemorySyn[LP_ORDER_SIZE], a_Memory_W0[LP_ORDER_SIZE];
Ipp16s a_MemoryErr[LP_ORDER_SIZE + SUBFR_SIZE_GSMAMR], *pErrorPtr;
Ipp16s vFlagSharp;
Ipp16s vFlagLTP;
Ipp16s vLagCountOld, vLagOld;
Ipp16s vBestHpCorr;
} sEncoderState_GSMAMR;
struct _GSMAMREncoder_Obj {
GSMAMRCoder_Obj objPrm;
/* preprocess state */
Ipp8s *preProc; /* High pass pre processing filter memory */
sEncoderState_GSMAMR stEncState;
GSMAMR_Rate_t rate; /* encode rate */
};
typedef struct{
Ipp16s a_ExcVecOld[SUBFR_SIZE_GSMAMR + PITCH_MAX_LAG + FLT_INTER_SIZE];
Ipp16s *pExcVec;
Ipp16s a_LSP_Old[LP_ORDER_SIZE];
Ipp16s a_MemorySyn[LP_ORDER_SIZE];
Ipp16s vFlagSharp;
Ipp16s vPrevPitchLag;
Ipp16s vPrevBadFr;
Ipp16s vPrevDegBadFr;
Ipp16s vStateMachine;
Ipp16s a_EnergyHistSubFr[9];
Ipp16s vLTPLag;
Ipp16s vBackgroundNoise;
Ipp16s vVoiceHangover;
Ipp16s a_LTPGainHistory[9];
Ipp16s a_EnergyHistVector[ENERGY_HIST_SIZE];
Ipp16s vCountHangover;
Ipp16s vCNGen;
Ipp16s a_GainHistory[CBGAIN_HIST_SIZE];
Ipp16s vHgAverageVar;
Ipp16s vHgAverageCount;
Ipp16s a_LSPAveraged[LP_ORDER_SIZE];
Ipp16s a_PastQntPredErr[LP_ORDER_SIZE];
Ipp16s a_PastLSFQnt[LP_ORDER_SIZE];
Ipp16s a_LSFBuffer[5];
Ipp16s vPastGainZero;
Ipp16s vPrevGainZero;
Ipp16s a_GainBuffer[5];
Ipp16s vPastGainCode;
Ipp16s vPrevGainCode;
Ipp16s a_PastQntEnergy_M122[4];
Ipp16s a_PastQntEnergy[4];
sPhaseDispSt stPhDispState;
sDTXDecoderSt dtxDecoderState;
} sDecoderState_GSMAMR;
struct _GSMAMRDecoder_Obj {
/* post process state */
GSMAMRCoder_Obj objPrm;
Ipp8s *postProc; /* High pass post processing filter memory */
sDecoderState_GSMAMR stDecState;
sPostFilterSt stPFiltState;
GSMAMR_Rate_t rate; /* decode rate */
};
Ipp32s ownEncode_GSMAMR(sEncoderState_GSMAMR *st, GSMAMR_Rate_t rate, Ipp16s ana[], Ipp32s *pVad, Ipp16s synth[]);
Ipp32s ownDecoderInit_GSMAMR(sDecoderState_GSMAMR* state, GSMAMR_Rate_t rate);
Ipp32s ownDtxDecoderInit_GSMAMR(sDTXDecoderSt* st);
Ipp32s ownPhDispInit_GSMAMR(sPhaseDispSt* state);
Ipp32s ownPostFilterInit_GSMAMR(sPostFilterSt *state);
#define GSMAMR_CODECFUN(type,name,arg) extern type name arg
/********************************************************
* auxiliary inline functions declarations
*********************************************************/
#include "aux_fnxs.h"
__INLINE Ipp32s AddProduct_32s (Ipp32s x, Ipp16s hi1, Ipp16s lo1, Ipp16s hi2, Ipp16s lo2)
{
x += 2*(hi1*hi2) + 2*((hi1*lo2)>>15) + 2*((lo1*hi2)>>15);
return x;
}
__INLINE Ipp32s AddProduct16s_32s (Ipp32s x, Ipp16s hi, Ipp16s lo, Ipp16s n)
{
x += 2*(hi*n) + 2*((lo*n)>>15);
return x;
}
#endif /* __OWNGSMAMR_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -