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

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

?? decg723.c

?? G.729 and G.723.1 codecs x86 (and x86_64) Linux and FreeBSD source code for Asterisk open source PBX
?? C
字號:
/*/////////////////////////////////////////////////////////////////////////////////                  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-2007 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 ippEULA.rtf or ippEULA.txt 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.723.1 speech codec: decode API functions.//*/#include "owng723.h"static Ipp32s DecoderObjSize(void){   return sizeof(G723Decoder_Obj);}G723_CODECFUN( APIG723_Status, apiG723Decoder_Alloc, (Ipp32s *pCodecSize)){   *pCodecSize =  DecoderObjSize();   return APIG723_StsNoErr;}G723_CODECFUN( APIG723_Status, apiG723Decoder_Init,              (G723Decoder_Obj* decoderObj, Ipp32u mode)){   Ipp8s* oldMemBuff;   if(NULL==decoderObj)      return APIG723_StsBadArgErr;    oldMemBuff = decoderObj->Mem.base; /* if Reinit */   ippsZero_16s((Ipp16s*)decoderObj,sizeof(G723Decoder_Obj)>>1) ;   /* non-initialized data, bug in debug mode AK27.08.01 */   decoderObj->objPrm.objSize = DecoderObjSize();   decoderObj->objPrm.mode = mode;   decoderObj->objPrm.key = G723_DEC_KEY;   decoderObj->objPrm.rat = 0; /* default 6.3 KBit/s*/   ippsCopy_16s(LPCDCTbl,decoderObj->PrevLPC,G723_LPC_ORDER);   decoderObj->PstFltGain = (Ipp16s) 0x1000 ;   /* Initialize the CNG */   decoderObj->PastFrameType = G723_ActiveFrm;   decoderObj->sSidGain = 0;   decoderObj->CNGSeed = 12345;   decoderObj->CasheCounter = 0;   ippsCopy_16s(LPCDCTbl,decoderObj->SIDLSP,G723_LPC_ORDER);   apiG723Decoder_InitBuff(decoderObj,oldMemBuff);   return APIG723_StsNoErr;}G723_CODECFUN( APIG723_Status, apiG723Decoder_ControlMode,              (G723Decoder_Obj* decoderObj, Ipp32u mode)){   decoderObj->objPrm.mode = mode;   return APIG723_StsNoErr;}G723_CODECFUN( APIG723_Status, apiG723Decoder_InitBuff,         (G723Decoder_Obj* decoderObj, Ipp8s *buff)){   if(NULL==decoderObj) return APIG723_StsBadArgErr;   if(NULL==buff) return APIG723_StsBadArgErr;   if(buff)   decoderObj->Mem.base = buff; // otherwise reinit   else if (decoderObj->Mem.base == NULL) return APIG723_StsNotInitialized;   decoderObj->Mem.CurPtr = decoderObj->Mem.base;   decoderObj->Mem.VecPtr = (Ipp32s *)(decoderObj->Mem.base+G723_ENCODER_SCRATCH_MEMORY_SIZE);   return APIG723_StsNoErr;}void DecoderCNG_G723(G723Decoder_Obj* decoderObj, ParamStream_G723 *CurrentParams, Ipp16s *pExcitation, Ipp16s *pDstLPC){    Ipp32s i;    if(CurrentParams->FrameType == G723_SIDFrm) { /* SID Frame */        LOCAL_ARRAY(Ipp16s, qIndex,3, decoderObj);        DecodeSIDGain_G723_16s(CurrentParams->sAmpIndex[0],&decoderObj->sSidGain);        /* LSP inverse quantization */        qIndex[2] =  (Ipp16s)(CurrentParams->lLSPIdx & 0xff);        qIndex[1] =  (Ipp16s)((CurrentParams->lLSPIdx>>8) & 0xff);        qIndex[0] =  (Ipp16s)((CurrentParams->lLSPIdx>>16) & 0xff);        if(ippsLSFDecode_G723_16s(qIndex, decoderObj->PrevLPC,  0, decoderObj->SIDLSP) != ippStsNoErr)           ippsCopy_16s(decoderObj->PrevLPC,decoderObj->SIDLSP,G723_LPC_ORDER);        LOCAL_ARRAY_FREE(Ipp16s, qIndex,3, decoderObj);    } else { /* non SID Frame */       if(decoderObj->PastFrameType == G723_ActiveFrm) {  /* Case of 1st SID frame erased */            QuantSIDGain_G723_16s(&decoderObj->sSidGain, &decoderObj->CurrGain, 0, &i);            DecodeSIDGain_G723_16s(i,&decoderObj->sSidGain);        }    }    if(decoderObj->PastFrameType == G723_ActiveFrm) {        decoderObj->CurrGain = decoderObj->sSidGain;    } else { /* update gain */        decoderObj->CurrGain = (Ipp16s)(( 7*decoderObj->CurrGain + decoderObj->sSidGain) >> 3) ;    }    {       LOCAL_ARRAY(Ipp8s, buff,ComfortNoiseExcitation_G723_16s_Buff_Size, decoderObj);       ComfortNoiseExcitation_G723_16s(decoderObj->CurrGain, decoderObj->PrevExcitation, pExcitation,                    &decoderObj->CNGSeed, CurrentParams->PitchLag,CurrentParams->AdCdbkLag,CurrentParams->AdCdbkGain, CurrentParams->currRate, buff, &decoderObj->CasheCounter);       LOCAL_ARRAY_FREE(Ipp8s, buff,ComfortNoiseExcitation_G723_16s_Buff_Size, decoderObj);    }    /* LSP interpolation */    LSPInterpolation(decoderObj->SIDLSP, decoderObj->PrevLPC, pDstLPC) ;    ippsCopy_16s(decoderObj->SIDLSP,decoderObj->PrevLPC,G723_LPC_ORDER);    return;}G723_CODECFUN( APIG723_Status, apiG723Decode,         (G723Decoder_Obj* decoderObj, const Ipp8s* src, Ipp16s badFrameIndicator, Ipp16s* dst)){    Ipp32s   i,j,k   ;    Ipp16s *pData ;    LOCAL_ALIGN_ARRAY(32, Ipp16s, SubZeroLPC,G723_LPC_ORDER+1, decoderObj);    LOCAL_ARRAY(Ipp16s, CurrLPC,4*(G723_LPC_ORDER+1), decoderObj);    LOCAL_ARRAY(Ipp16s, AdaptiveVector,G723_SBFR_LEN, decoderObj);    LOCAL_ARRAY(Ipp16s, CurrLSF,G723_LPC_ORDER, decoderObj);    LOCAL_ARRAY(Ipp16s, TemporaryVector,G723_MAX_PITCH+G723_FRM_LEN, decoderObj);    LOCAL_ARRAY(GainInfo_G723, GainInfo,4, decoderObj);    ParamStream_G723 CurrentParams;    if(NULL==decoderObj || NULL==src || NULL ==dst)      return APIG723_StsBadArgErr;    if(decoderObj->objPrm.objSize <= 0)      return APIG723_StsNotInitialized;    if(G723_DEC_KEY != decoderObj->objPrm.key)      return APIG723_StsBadCodecType;    CurrentParams.FrameType = G723_UntransmittedFrm;    CurrentParams.lLSPIdx = 0;    CurrentParams.sAmpIndex[0] = 0;    CurrentParams.sAmpIndex[1] = 0;    CurrentParams.sAmpIndex[2] = 0;    CurrentParams.sAmpIndex[3] = 0;    CurrentParams.PitchLag[0] = 0;    CurrentParams.PitchLag[1] = 0;    CurrentParams.currRate = (G723_Rate)decoderObj->objPrm.rat;    CurrentParams.isBadFrame = badFrameIndicator;    if(badFrameIndicator == 0) {        GetParamFromBitstream( src, &CurrentParams); /* Unpack the bitstream */        if( CurrentParams.FrameType == G723_ActiveFrm) decoderObj->objPrm.rat = CurrentParams.currRate;    }    if ( CurrentParams.isBadFrame != 0 ) {        if(decoderObj->PastFrameType == G723_ActiveFrm) CurrentParams.FrameType = G723_ActiveFrm;  /* active */        else CurrentParams.FrameType = G723_UntransmittedFrm;  /* untransmitted */    }    if(CurrentParams.FrameType != G723_ActiveFrm) { /* non active frame */        /* noise generation */        DecoderCNG_G723(decoderObj, &CurrentParams, dst, CurrLPC);    } else {        /* Update erasure count. Section 3.10*/        if ( 0 != CurrentParams.isBadFrame )            decoderObj->ErasedFramesCounter++;        else            decoderObj->ErasedFramesCounter = 0 ;        if ( decoderObj->ErasedFramesCounter > 3 )            decoderObj->ErasedFramesCounter = 3 ;        {            LOCAL_ARRAY(Ipp16s, qIndex,3, decoderObj);            /* Decode the LSP vector for subframe 3.  Section 3.2 */            qIndex[2] =  (Ipp16s)(CurrentParams.lLSPIdx & 0xff);            qIndex[1] =  (Ipp16s)((CurrentParams.lLSPIdx>>8) & 0xff);            qIndex[0] =  (Ipp16s)((CurrentParams.lLSPIdx>>16) & 0xff);            if(ippsLSFDecode_G723_16s(qIndex,  decoderObj->PrevLPC, CurrentParams.isBadFrame, CurrLSF) != ippStsNoErr)               ippsCopy_16s(decoderObj->PrevLPC,CurrLSF,G723_LPC_ORDER);            LOCAL_ARRAY_FREE(Ipp16s, qIndex,3, decoderObj);        }        /* LSP interpolation.  Section 3.3  */        LSPInterpolation(CurrLSF, decoderObj->PrevLPC, CurrLPC) ;        ippsCopy_16s(CurrLSF,decoderObj->PrevLPC,G723_LPC_ORDER);        /* Generate the excitation for the frame */        ippsCopy_16s(decoderObj->PrevExcitation,TemporaryVector,G723_MAX_PITCH);        pData = &TemporaryVector[G723_MAX_PITCH] ;        if ( 0 == decoderObj->ErasedFramesCounter ) {            /*update the interpolation gain memory.*/            decoderObj->InterpolatedGain = (Ipp16s)(-GainDBLvls[(CurrentParams.sAmpIndex[2]+CurrentParams.sAmpIndex[3])>>1]);            for ( i = 0 ; i < 4 ; i ++ ) {               Ipp32s lLag;               Ipp16s sGain;                /* Fixed codebook excitation. Section 3.5 */                FixedCodebookVector_G723_16s(CurrentParams.sPosition[i], CurrentParams.sAmplitude[i],                   CurrentParams.sAmpIndex[i], CurrentParams.sGrid[i], CurrentParams.AdCdbkGain[i],                   i, CurrentParams.currRate, pData, &lLag, &sGain ) ;                if ( G723_Rate63 == CurrentParams.currRate ){                   if(1 == CurrentParams.sTrainDirac[i] ){                      Ipp16s  Tmp[G723_SBFR_LEN] ;                      ippsCopy_16s(pData,Tmp,G723_SBFR_LEN);                      /*  Generation of a Dirac train. Section 2.15 */                      for ( j = CurrentParams.PitchLag[i>>1]; j < G723_SBFR_LEN ; j += CurrentParams.PitchLag[i>>1] ) {                         ippsAdd_16s_I(Tmp,&pData[j],G723_SBFR_LEN-j);                      }                   }                }else{ /*rate53*/                   lLag += CurrentParams.PitchLag[i>>1]-1+CurrentParams.AdCdbkLag[i];                   if(lLag < G723_SBFR_LEN-2) {                      ippsHarmonicFilter_16s_I(sGain,lLag,&pData[lLag],G723_SBFR_LEN-lLag);                   }                }                /* Adaptive codebook excitation. Section 3.4 */                ippsDecodeAdaptiveVector_G723_16s(CurrentParams.PitchLag[i>>1],CurrentParams.AdCdbkLag[i],CurrentParams.AdCdbkGain[i],                                                  &TemporaryVector[G723_SBFR_LEN*i], AdaptiveVector, SA_Rate[CurrentParams.currRate]);                /* Codebook contributions to excitation. */                ippsLShiftC_16s_I(1,pData,G723_SBFR_LEN);                ippsAdd_16s_I(AdaptiveVector,pData,G723_SBFR_LEN);                pData += G723_SBFR_LEN ;            }            ippsCopy_16s(&TemporaryVector[G723_MAX_PITCH],dst,G723_FRM_LEN);            /* Interpolation index calculation. Section 3.10 */             InterpolationIndex_G723_16s( TemporaryVector, CurrentParams.PitchLag[1],                                       &decoderObj->sSidGain, &decoderObj->CurrGain, &decoderObj->InterpolationIdx );            /* Pitch post filter coefficients calculation.  Section 3.6 */            if ( decoderObj->objPrm.mode&G723Decode_PF_Enabled )                for ( i = 0 ; i < 4 ; i ++ )                   ippsPitchPostFilter_G723_16s(CurrentParams.PitchLag[i>>1], &TemporaryVector[G723_MAX_PITCH], &GainInfo[i].sDelay,                                    &GainInfo[i].sGain, &GainInfo[i].sScalingGain, (Ipp16s)i, SA_Rate[CurrentParams.currRate]);            ippsCopy_16s(decoderObj->PrevExcitation,TemporaryVector,G723_MAX_PITCH);            ippsCopy_16s(dst,&TemporaryVector[G723_MAX_PITCH],G723_FRM_LEN);            /* Pitch post filtering. Section 3.6 */            if ( decoderObj->objPrm.mode&G723Decode_PF_Enabled )                for ( i = 0 ; i < 4 ; i ++ ){                   ippsInterpolateC_NR_G729_16s_Sfs(                      &TemporaryVector[G723_MAX_PITCH+i*G723_SBFR_LEN], GainInfo[i].sScalingGain,                      &TemporaryVector[G723_MAX_PITCH+i*G723_SBFR_LEN+GainInfo[i].sDelay], GainInfo[i].sGain,                      &dst[i*G723_SBFR_LEN],G723_SBFR_LEN,15);                }            ippsCopy_16s(decoderObj->PrevLPC,decoderObj->SIDLSP,G723_LPC_ORDER);        } else {            /* Frame erasure. Section 3.10 */            /*compute the interpolation gain.*/            decoderObj->InterpolatedGain =  (Ipp16s)((3 * decoderObj->InterpolatedGain + 2 ) >> 2) ;            if ( decoderObj->ErasedFramesCounter >= 3 ) {    /* Test for clearing */               ippsZero_16s(dst,G723_FRM_LEN);               ippsZero_16s(TemporaryVector,G723_FRM_LEN+G723_MAX_PITCH);            }else{               ResidualInterpolation_G723_16s_I(TemporaryVector,  dst, decoderObj->InterpolationIdx,                                                    decoderObj->InterpolatedGain, &decoderObj->ResIntSeed ) ;            }        }        ippsCopy_16s(&TemporaryVector[G723_FRM_LEN],decoderObj->PrevExcitation,G723_MAX_PITCH);        decoderObj->CNGSeed = 12345;        decoderObj->CasheCounter = 0;    }    decoderObj->PastFrameType = CurrentParams.FrameType;    /* Speech synthesis. Section 3.7 */    pData = dst ;    for ( i = 0 ; i < 4 ; i ++ ) {        SubZeroLPC[0] = CurrLPC[i*(G723_LPC_ORDER+1)];        for(k=1; k<G723_LPC_ORDER+1; k++) SubZeroLPC[k] = (Ipp16s)(-CurrLPC[i*(G723_LPC_ORDER+1)+k]);        ippsSynthesisFilter_NR_16s_ISfs(SubZeroLPC, pData, G723_SBFR_LEN, 13, decoderObj->SyntFltIIRMem);        ippsCopy_16s(&pData[G723_SBFR_LEN-G723_LPC_ORDER], decoderObj->SyntFltIIRMem, G723_LPC_ORDER);        if ( decoderObj->objPrm.mode&G723Decode_PF_Enabled ) {           /* Formant post filter. Section 3.8 */           PostFilter(decoderObj, pData, &CurrLPC[i*(G723_LPC_ORDER+1)+1] ) ;        }else{           ippsMulC_16s_I(2,pData,G723_SBFR_LEN);        }        pData += G723_SBFR_LEN ;    }    CLEAR_SCRATCH_MEMORY(decoderObj);    return APIG723_StsNoErr;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久人人做人人爰| 久久影院午夜片一区| 日韩一区在线看| 国内一区二区在线| 精品一区二区三区久久| 日韩一级精品视频在线观看| 手机精品视频在线观看| 日韩一级大片在线观看| 国内精品视频一区二区三区八戒 | 日韩毛片在线免费观看| 99久久免费精品高清特色大片| 国产精品久久精品日日| 欧美在线一区二区三区| 日韩av网站免费在线| 亚洲欧美另类小说| 色噜噜偷拍精品综合在线| 丝袜亚洲精品中文字幕一区| 日韩三级免费观看| 成人av资源在线观看| 亚洲女同女同女同女同女同69| 欧美性色aⅴ视频一区日韩精品| 日本特黄久久久高潮| 久久久久九九视频| 欧美在线不卡视频| 国产精品911| 蜜臀av国产精品久久久久| 日韩一级二级三级| 成人动漫一区二区| 石原莉奈一区二区三区在线观看| 精品少妇一区二区三区在线播放 | 成人午夜免费视频| 亚洲黄色在线视频| 欧美xfplay| 色菇凉天天综合网| 国产乱码精品一区二区三区五月婷 | 欧美日韩一区二区三区高清| 精品写真视频在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 日韩欧美在线1卡| 色综合久久久久| 国产精品影视在线观看| 国产无一区二区| 北岛玲一区二区三区四区| 亚洲成人三级小说| 自拍偷拍国产精品| 欧美www视频| 欧美卡1卡2卡| 日本韩国一区二区三区视频| 国产一区在线不卡| 日本欧美肥老太交大片| 亚洲综合免费观看高清在线观看| 国产亚洲人成网站| 亚洲人成亚洲人成在线观看图片 | 捆绑紧缚一区二区三区视频| 亚洲天天做日日做天天谢日日欢| 精品久久久三级丝袜| 欧美日韩不卡一区| 91官网在线免费观看| 成人黄色av网站在线| 国产在线视频一区二区三区| 日韩国产欧美在线播放| 亚洲在线成人精品| 自拍偷在线精品自拍偷无码专区| 久久久久国产精品麻豆ai换脸| 国产高清精品久久久久| 一区二区成人在线视频| 国产精品视频免费看| 精品国产乱码久久久久久久久| 51午夜精品国产| 欧美日韩视频在线一区二区| 色8久久人人97超碰香蕉987| 粉嫩蜜臀av国产精品网站| 国产一区二区毛片| 国产精品77777| 国产自产v一区二区三区c| 精品一区二区精品| 久久99精品国产麻豆婷婷洗澡| 午夜不卡在线视频| 亚洲mv在线观看| 午夜精品久久久久久久99水蜜桃| 尤物在线观看一区| 尤物视频一区二区| 亚洲福利一二三区| 偷拍一区二区三区| 奇米精品一区二区三区在线观看一| 丁香婷婷综合激情五月色| 成人小视频在线观看| 97久久久精品综合88久久| proumb性欧美在线观看| 国产精品中文字幕一区二区三区| 日韩在线一区二区三区| 午夜精品久久久久| 日本aⅴ精品一区二区三区| 美女www一区二区| 国产精品一区一区| 99久久久久久| 欧美影院一区二区三区| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区三区小说| 久久中文字幕电影| 国产精品国产成人国产三级 | 久久久亚洲精品石原莉奈| 国产午夜三级一区二区三| 中文字幕亚洲综合久久菠萝蜜| 尤物av一区二区| 捆绑变态av一区二区三区| 福利电影一区二区三区| 在线看日韩精品电影| 日韩一区二区在线观看视频| 国产亚洲美州欧州综合国| 亚洲男人天堂一区| 午夜影院在线观看欧美| 久久久综合激的五月天| 国产精品欧美一区喷水| 亚洲精品亚洲人成人网在线播放| 亚洲成人黄色影院| 国产成人精品aa毛片| 色老汉av一区二区三区| 日韩午夜激情av| 国产精品狼人久久影院观看方式| 亚洲午夜久久久久久久久久久| 欧美日韩久久久一区| 欧美电视剧免费全集观看| 国产精品理论片| 青椒成人免费视频| 色综合久久99| 国产三级欧美三级| 天堂av在线一区| 成人久久视频在线观看| 91精品国产一区二区人妖| 国产精品国产三级国产aⅴ原创| 日本aⅴ亚洲精品中文乱码| 波多野结衣在线aⅴ中文字幕不卡| 欧美日韩国产高清一区二区| 国产精品毛片a∨一区二区三区| 日韩国产一区二| 色噜噜狠狠色综合中国| 日本一区二区三区国色天香 | 国产一区二区网址| 欧美亚一区二区| 国产精品丝袜一区| 久久av资源站| 欧美日韩免费视频| 亚洲三级在线看| 成人免费视频一区| 久久亚洲综合色| 丝袜亚洲另类欧美| 欧美性猛交一区二区三区精品| 日本一区二区成人| 国产乱子伦视频一区二区三区 | 菠萝蜜视频在线观看一区| 精品区一区二区| 青青国产91久久久久久| 欧美日韩在线不卡| 亚洲另类春色国产| 99re热这里只有精品免费视频| 国产欧美一区二区三区在线看蜜臀| 久久精品国产免费看久久精品| 欧美丰满嫩嫩电影| 亚洲成人av一区二区三区| 天天综合网 天天综合色| 97久久精品人人做人人爽50路| 久久久一区二区三区捆绑**| 久久成人综合网| 日韩一区二区不卡| 色噜噜狠狠成人网p站| 亚洲品质自拍视频| va亚洲va日韩不卡在线观看| 国产精品免费人成网站| 不卡一区在线观看| 国产精品久久综合| 99久久国产免费看| 中文字幕亚洲视频| 91激情在线视频| 一个色在线综合| 欧美日韩亚洲综合一区二区三区| 亚洲国产精品久久艾草纯爱 | 国产乱码精品一区二区三区av| 欧美mv日韩mv| 国产精品1区2区3区| 国产欧美日韩三级| 暴力调教一区二区三区| 亚洲激情在线播放| 69堂精品视频| 国产在线精品一区二区| 欧美激情一区二区三区不卡| av一区二区三区| 一区二区成人在线视频| 中文字幕一区av| 91久久国产最好的精华液| 亚洲高清免费观看高清完整版在线观看| 在线观看一区日韩| 免费不卡在线观看| 欧美激情在线看| 色琪琪一区二区三区亚洲区| 日韩精品一卡二卡三卡四卡无卡| 日韩欧美在线1卡| 99riav久久精品riav| 亚洲电影激情视频网站| 2020国产精品久久精品美国|