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

📄 owng729.h

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 H
📖 第 1 页 / 共 2 页
字号:
/*/////////////////////////////////////////////////////////////////////////////
//
//                  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 + -