⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 owngsmamr.h

📁 audio-video-codecs.rar语音编解码器
💻 H
📖 第 1 页 / 共 2 页
字号:
      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 + -