亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? decg729.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*/////////////////////////////////////////////////////////////////////////////
//
//                  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: decoder API functions.
//
*/

#include <stdio.h>
#include <stdlib.h>
#include <ippsc.h>
#include "owng729.h"

/* HPF coefficients */

static __ALIGN32 CONST short tab1[3] = {
 7699,
 -15398,
 7699};
static __ALIGN32 CONST short tab2[3] = {BWF_HARMONIC_E, 15836, -7667};
static __ALIGN32 CONST short lspSID_init[LPF_DIM] = {31441,  27566,  21458, 13612,
 4663, -4663, -13612,
 -21458, -27566, -31441};

static __ALIGN32 CONST short tab3[32] = {
        1, 3, 8, 6, 18, 16,
        11, 13, 38, 36, 31, 33,
        21, 23, 28, 26, 0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0};

static __ALIGN32 CONST short tab4[32] = {
    0, 2, 5, 4, 12, 10, 7, 9, 25,
    24, 20, 22, 14, 15, 19, 17,
    36, 31, 21, 26, 1, 6, 16, 11,
    27, 29, 32, 30, 39, 37, 34, 35};

static int DecoderObjSize(void) {
    int fltSize;
    int objSize = sizeof(G729Decoder_Obj);
    ippsHighPassFilterSize_G729(&fltSize);
    objSize += fltSize; /* provide memory for postprocessing high pass filter with upscaling */
    SynthesisFilterSize_G729(&fltSize);
    objSize += 2 * fltSize;/* provide memory for two synthesis filters */
    ippsPhaseDispersionGetStateSize_G729D_16s(&fltSize);
    objSize += fltSize; /* provide memory for phase dispersion */
    objSize += 4*32;
    return objSize;
}

G729_CODECFUN( APIG729_Status, apiG729Decoder_Alloc,
               (G729Codec_Type codecType, int *pCodecSize)) {
    if((codecType != G729_CODEC)&&(codecType != G729A_CODEC)
       &&(codecType != G729D_CODEC)&&(codecType != G729E_CODEC)&&(codecType != G729I_CODEC)) {
        return APIG729_StsBadCodecType;
    }
    *pCodecSize =  DecoderObjSize();
    return APIG729_StsNoErr;
}

G729_CODECFUN( APIG729_Status, apiG729Decoder_Init,
               (G729Decoder_Obj* decoderObj, G729Codec_Type codecType)) {
    int i,fltSize;
    Ipp16s abDec[6];

    if((codecType != G729_CODEC)&&(codecType != G729A_CODEC)
       &&(codecType != G729D_CODEC)&&(codecType != G729E_CODEC)&&(codecType != G729I_CODEC)) {
        return APIG729_StsBadCodecType;
    }

    ippsZero_16s((short*)decoderObj,sizeof(*decoderObj)>>1) ;

    decoderObj->objPrm.objSize = DecoderObjSize();
    decoderObj->objPrm.key = DEC_KEY;
    decoderObj->objPrm.codecType=codecType;

    decoderObj->codecType=codecType;
    decoderObj->synFltw=NULL;
    decoderObj->synFltw0=NULL;
    decoderObj->PhDispMem=NULL;

    decoderObj->postProc = (char*)decoderObj + sizeof(G729Decoder_Obj);
    decoderObj->postProc = IPP_ALIGNED_PTR(decoderObj->postProc, 16);
    ippsHighPassFilterSize_G729(&fltSize);
    decoderObj->synFltw = (char*)decoderObj->postProc + fltSize;
    decoderObj->synFltw = IPP_ALIGNED_PTR(decoderObj->synFltw, 16);
    SynthesisFilterSize_G729(&fltSize);
    decoderObj->synFltw0 = (char*)decoderObj->synFltw + fltSize;
    decoderObj->synFltw0 = IPP_ALIGNED_PTR(decoderObj->synFltw0, 16);
    decoderObj->PhDispMem = (char*)decoderObj->synFltw0 + fltSize;
    decoderObj->PhDispMem = IPP_ALIGNED_PTR(decoderObj->PhDispMem, 16);
    abDec[0] = tab2[0];
    abDec[1] = tab2[1];
    abDec[2] = tab2[2];
    abDec[3] = tab1[0];
    abDec[4] = tab1[1];
    abDec[5] = tab1[2];
    for(i=0;i<4;i++) decoderObj->prevFrameQuantEn[i]=-14336;
    ippsHighPassFilterInit_G729(abDec,decoderObj->postProc);
    SynthesisFilterInit_G729(decoderObj->synFltw);
    SynthesisFilterInit_G729(decoderObj->synFltw0);
    ippsPhaseDispersionInit_G729D_16s((IppsPhaseDispersion_State_G729D *)decoderObj->PhDispMem);

    /* synthesis speech buffer*/
    ippsZero_16s(decoderObj->LTPostFilt,TBWD_DIM);
    decoderObj->voiceFlag=60;
    ippsZero_16s(decoderObj->prevExcitat, L_prevExcitat);
    decoderObj->betaPreFilter = PITCH_SHARP_MIN;
    decoderObj->prevFrameDelay = 60;
    decoderObj->gains[0] = 0;
    decoderObj->gains[1] = 0;
    for(i=0; i<LSP_MA_ORDER; i++)
        ippsCopy_16s( &resetPrevLSP[0], &decoderObj->prevLSPfreq[i][0], LPF_DIM );
    ippsCopy_16s(presetLSP, decoderObj->prevSubfrLSP, LPF_DIM );
    decoderObj->preemphFilt = 0;
    ippsZero_16s(decoderObj->resFilBuf1, MAX_PITCH_LAG+LP_SUBFRAME_DIM);
    ippsZero_16s(decoderObj->zeroPostFiltVec1 + LPF_DIM+1, BWLPCF1_DIM/*IMP_RESP_LEN*/);
    decoderObj->seedSavage = 21845;
    decoderObj->seed = SEED_INIT;
    decoderObj->CNGvar = 3;

    decoderObj->pstFltMode = 1;

    if(decoderObj->codecType == G729_CODEC ) {
        decoderObj->gainExact = BWF_HARMONIC;
    } else if( decoderObj->codecType == G729A_CODEC) {
        decoderObj->gainExact = (1<<12);
        decoderObj->CNGidx = 0;
        decoderObj->SIDflag0 = 0;
        decoderObj->SIDflag1 = 1;
        ippsCopy_16s( lspSID_init, decoderObj->lspSID, LPF_DIM );
    } else {
        decoderObj->prevMA = 0;
        decoderObj->gammaPost1 = BWF1_PST_E;
        decoderObj->gammaPost2 = BWF2_PST_E;
        decoderObj->gammaHarm = BWF_HARMONIC_E;
        decoderObj->BWDcounter2 = 0;
        decoderObj->FWDcounter2 = 0;

        ippsZero_16s(decoderObj->pBwdLPC, BWLPCF1_DIM);
        ippsZero_16s(decoderObj->pBwdLPC2, BWLPCF1_DIM);
        decoderObj->pBwdLPC[0] = (1<<12);
        decoderObj->pBwdLPC2[0] = (1<<12);

        decoderObj->prevVoiceFlag = 0;
        decoderObj->prevBFI = 0;
        decoderObj->prevLPmode = 0;
        decoderObj->interpCoeff2 = 0;
        decoderObj->interpCoeff2_2 = 4506;
        ippsZero_16s(decoderObj->pPrevFilt, BWLPCF1_DIM);
        decoderObj->pPrevFilt[0] = (1<<12);
        decoderObj->prevPitch = 30;
        decoderObj->stat_pitch = 0;
        ippsZero_16s(decoderObj->pPrevBwdLPC, BWLPCF1_DIM);
        decoderObj->pPrevBwdLPC[0]= (1<<12);
        ippsZero_16s(decoderObj->pPrevBwdRC, 2);
        decoderObj->valGainAttenuation = IPP_MAX_16S;
        decoderObj->BFIcount = 0;
        decoderObj->BWDFrameCounter = 0;

        decoderObj->gainExact = BWF_HARMONIC;
        ippsWinHybridGetStateSize_G729E_16s(&fltSize);
        if(fltSize > sizeof(int)*BWLPCF1_DIM) {
            return APIG729_StsNotInitialized;
        }
        ippsWinHybridInit_G729E_16s((IppsWinHybridState_G729E_16s*)&decoderObj->hwState);

        decoderObj->SIDflag0 = 0;
        decoderObj->SIDflag1 = 1;
        decoderObj->CNGidx = 0;
        ippsCopy_16s( lspSID_init, decoderObj->lspSID, LPF_DIM );
        decoderObj->sidGain = SIDgain[0];
    }
    return APIG729_StsNoErr;
}

G729_CODECFUN( APIG729_Status, apiG729Decoder_InitBuff,
               (G729Decoder_Obj* decoderObj, char *buff)) {
#if !defined (NO_SCRATCH_MEMORY_USED)

    if(NULL==decoderObj || NULL==buff)
        return APIG729_StsBadArgErr;

    decoderObj->Mem.base = buff;
    decoderObj->Mem.CurPtr = decoderObj->Mem.base;
    decoderObj->Mem.VecPtr = (int *)(decoderObj->Mem.base+G729_ENCODER_SCRATCH_MEMORY_SIZE);
#endif /*SCRATCH_IDAIS*/
    return APIG729_StsNoErr;
}

G729_CODECFUN( APIG729_Status, apiG729Decoder_Mode,
               (G729Decoder_Obj* decoderObj, int mode))
{
   if(NULL==decoderObj)
        return APIG729_StsBadArgErr;
   decoderObj->pstFltMode = mode;
   return APIG729_StsNoErr;
}
static APIG729_Status G729Decode
(G729Decoder_Obj* decoderObj,const unsigned char* src, int frametype, short* dst);
static APIG729_Status G729ADecode
(G729Decoder_Obj* decoderObj,const unsigned char* src, int frametype, short* dst);
static APIG729_Status G729BaseDecode
(G729Decoder_Obj* decoderObj,const unsigned char* src, int frametype, short* dst);

G729_CODECFUN( APIG729_Status, apiG729Decode,
               (G729Decoder_Obj* decoderObj,const unsigned char* src, int frametype, short* dst)) {
    if(decoderObj->codecType == G729A_CODEC) {
        if(G729ADecode(decoderObj,src,frametype,dst) != APIG729_StsNoErr) {
            return APIG729_StsErr;
        }
    } else if(decoderObj->codecType == G729_CODEC && frametype != 2 && frametype != 4) {
        if(G729BaseDecode(decoderObj,src,frametype,dst) != APIG729_StsNoErr) {
            return APIG729_StsErr;
        }
    } else {
        if(G729Decode(decoderObj,src,frametype,dst) != APIG729_StsNoErr) {
            return APIG729_StsErr;
        }
    }
    return APIG729_StsNoErr;
}

APIG729_Status G729Decode
(G729Decoder_Obj* decoderObj,const unsigned char* src, int frametype, short* dst) {

    LOCAL_ALIGN_ARRAY(32, short, AzDec, BWLPCF1_DIM*2,decoderObj);
    LOCAL_ALIGN_ARRAY(32, short, newLSP,LPF_DIM,decoderObj);
    LOCAL_ALIGN_ARRAY(32, short, ACELPcodeVec, LP_SUBFRAME_DIM,decoderObj);
    LOCAL_ALIGN_ARRAY(32, short, BWDfiltLPC, 2*BWLPCF1_DIM,decoderObj);
    LOCAL_ALIGN_ARRAY(32, short, FWDfiltLPC, 2*LPF_DIM+2,decoderObj);
    LOCAL_ALIGN_ARRAY(32, short, BWDrc,BWLPCF_DIM,decoderObj);
    LOCAL_ALIGN_ARRAY(32, int,   BWDacf,BWLPCF1_DIM,decoderObj);
    LOCAL_ALIGN_ARRAY(32, int,   BWDhighAcf,BWLPCF1_DIM,decoderObj);
    LOCAL_ALIGN_ARRAY(32, short, phaseDispExcit,LP_SUBFRAME_DIM,decoderObj);
    LOCAL_ARRAY(short, prevFrameDelay,2,decoderObj);
    LOCAL_ARRAY(short, idx,4,decoderObj);
    LOCAL_ARRAY(short, delayVal,2,decoderObj);
    LOCAL_ARRAY(short, tmp_parm,5,decoderObj);
    short  prevFrameDelay1=0;  /* 1-st subframe pitch lag*/
    short  subfrVoiceFlag, *pAz, *pA;
    char  *synFltw = decoderObj->synFltw;
    short *prevExcitat = decoderObj->prevExcitat;
    short *excitation = prevExcitat + L_prevExcitat;
    short *synth = decoderObj->LTPostFilt+SYNTH_BWD_DIM;
    short *prevSubfrLSP = decoderObj->prevSubfrLSP;
    const  unsigned char *pParm;
    const  short *parm;
    short  *ppAz, temp, badFrameIndicator, badPitch, index, pulseSign, gPl, gC;
    short  voiceFlag = decoderObj->voiceFlag;
    short  sidGain = decoderObj->sidGain;
    short  gainNow = decoderObj->gainNow;
    short *lspSID = decoderObj->lspSID;
    int    i, j, subfrIdx, index2, fType, gpVal=0, LPmode = 0;
    short  satFilter, statStat, mAq, prevM, dominantBWDmode, L_hSt;
    IppStatus status;

    if(NULL==decoderObj || NULL==src || NULL ==dst)
        return APIG729_StsBadArgErr;
    if((decoderObj->codecType != G729_CODEC)
       &&(decoderObj->codecType != G729D_CODEC)&&(decoderObj->codecType != G729E_CODEC)&&(decoderObj->codecType != G729I_CODEC)) {
        return APIG729_StsBadCodecType;
    }
    if(decoderObj->objPrm.objSize <= 0)
        return APIG729_StsNotInitialized;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青椒成人免费视频| 欧美一区二区三区精品| 欧美精品九九99久久| 久久免费看少妇高潮| 亚洲福利一区二区| 不卡视频一二三| 久久美女高清视频| 麻豆视频观看网址久久| 欧美综合视频在线观看| 国产精品久久久久久久蜜臀| 免费成人av在线播放| 欧美性一级生活| 国产精品免费看片| 国产在线日韩欧美| 日韩一区二区在线看| 亚洲国产乱码最新视频| 成人在线视频一区| 国产视频911| 国产老肥熟一区二区三区| 欧美一区二区成人| 伊人婷婷欧美激情| 91麻豆福利精品推荐| 欧美韩日一区二区三区四区| 极品少妇xxxx精品少妇| 日韩一区二区三区视频在线| 亚洲不卡一区二区三区| 欧美三级日韩在线| 亚洲成av人在线观看| 欧美日本免费一区二区三区| 伊人开心综合网| 色一情一乱一乱一91av| 亚洲在线视频免费观看| 欧美三区在线观看| 亚洲mv在线观看| 欧美日韩成人综合| 蜜臀av一区二区在线免费观看| 欧美网站大全在线观看| 日韩成人一区二区三区在线观看| 欧美日韩免费高清一区色橹橹| 亚洲综合免费观看高清在线观看| 欧美中文字幕一区二区三区亚洲| 亚洲丶国产丶欧美一区二区三区| 69精品人人人人| 麻豆精品久久久| 国产日韩欧美制服另类| 岛国精品一区二区| 最近中文字幕一区二区三区| 色欧美日韩亚洲| 无吗不卡中文字幕| 欧美tickling网站挠脚心| 激情六月婷婷综合| 国产精品三级av| 欧美中文字幕亚洲一区二区va在线| 亚洲国产一区二区在线播放| 91麻豆精品国产91| 国产激情91久久精品导航| 亚洲精品午夜久久久| 这里只有精品电影| 成人黄色软件下载| 日韩精品亚洲一区| 久久精品水蜜桃av综合天堂| 色婷婷一区二区| 久久国产福利国产秒拍| 日韩久久一区二区| 欧美日本免费一区二区三区| 国产一区二区三区免费| 亚洲欧美日韩国产成人精品影院| 欧美日韩久久久一区| 国产一区二区中文字幕| 亚洲综合色噜噜狠狠| 久久亚洲二区三区| 欧美日韩国产综合一区二区 | caoporm超碰国产精品| 亚洲精品水蜜桃| 久久综合丝袜日本网| 色婷婷精品久久二区二区蜜臀av| 人人爽香蕉精品| **欧美大码日韩| 日韩三级免费观看| 91色porny| 国产精品一区二区在线观看不卡| 亚洲免费三区一区二区| 久久久www成人免费毛片麻豆| 欧美最新大片在线看| 成人黄色国产精品网站大全在线免费观看| 亚洲国产精品久久人人爱| 国产色一区二区| 8x福利精品第一导航| 91在线免费视频观看| 国产福利电影一区二区三区| 午夜久久久影院| 亚洲精品视频在线观看网站| 精品国产亚洲一区二区三区在线观看 | 18成人在线视频| 亚洲精品在线免费播放| 欧美日韩国产综合视频在线观看| 99国产精品国产精品久久| 狠狠色综合日日| 美女视频网站久久| 午夜不卡av在线| 一区二区三区在线免费观看| 国产欧美日韩综合| 久久老女人爱爱| www国产成人| 精品成人佐山爱一区二区| 91精品国产欧美一区二区成人| 欧美中文字幕一区二区三区亚洲| heyzo一本久久综合| 成人av在线资源网站| 国产91精品露脸国语对白| 国内精品国产成人| 国产一区二区导航在线播放| 久久超碰97人人做人人爱| 日本不卡免费在线视频| 爽好多水快深点欧美视频| 亚洲伊人伊色伊影伊综合网| 一区二区三区欧美| 午夜在线成人av| 三级影片在线观看欧美日韩一区二区 | 青青国产91久久久久久| 日韩在线观看一区二区| 日本少妇一区二区| 精品一区二区三区免费| 韩国一区二区视频| 国产一区二区不卡| 成人黄色软件下载| 色婷婷综合激情| 欧美丰满高潮xxxx喷水动漫 | 欧美在线播放高清精品| 欧美天堂一区二区三区| 欧美一区二区三区系列电影| 日韩三级视频中文字幕| 久久精品人人做人人爽人人| 国产精品麻豆网站| 午夜私人影院久久久久| 麻豆极品一区二区三区| 国产二区国产一区在线观看| 9i在线看片成人免费| 欧美午夜精品久久久久久超碰| 欧美人成免费网站| 精品国产不卡一区二区三区| 久久精品一区八戒影视| 自拍偷拍亚洲激情| 日韩黄色片在线观看| 国产精品 欧美精品| 91福利在线看| 精品日韩99亚洲| 中文字幕一区二区三区色视频| 亚洲成人自拍一区| 国模大尺度一区二区三区| 91在线视频播放地址| 91精品国产综合久久福利| 欧美极品另类videosde| 亚洲午夜在线视频| 国产麻豆视频精品| 欧美丝袜自拍制服另类| 久久看人人爽人人| 亚洲电影视频在线| 国产一区久久久| 欧美日韩视频在线第一区| 久久久久久一二三区| 亚洲综合色自拍一区| 国产成人免费9x9x人网站视频| 欧美性感一类影片在线播放| 国产欧美精品区一区二区三区| 婷婷中文字幕一区三区| 不卡av电影在线播放| 日韩三级在线免费观看| 一个色在线综合| 成人黄色小视频| 精品国产成人在线影院| 亚洲va欧美va人人爽| 91麻豆文化传媒在线观看| 欧美一区二区三区播放老司机| 亚洲婷婷在线视频| 国产精品夜夜嗨| 91精品国产一区二区人妖| 尤物在线观看一区| 成人av在线一区二区| 欧美xxxx老人做受| 亚洲成人1区2区| 91精品1区2区| 亚洲天堂av一区| 成人动漫一区二区在线| 国产亚洲精品福利| 麻豆国产精品一区二区三区| 欧美日本一道本在线视频| 伊人开心综合网| 色噜噜夜夜夜综合网| 中文字幕一区二区三区在线不卡| 国产一区在线观看麻豆| 2020国产精品自拍| 激情综合色综合久久综合| 4438x成人网最大色成网站| 亚洲成av人片一区二区| 欧美日韩一区在线观看| 亚洲mv在线观看| 欧美日韩国产高清一区二区三区 | 欧美国产精品中文字幕| 国产精品正在播放|