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

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

?? utilamrwb.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 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: AMRWB speech codec: common utilities.
//
*/

#include "ownamrwb.h"

__ALIGN32 CONST IppSpchBitRate Mode2RateTbl[11] = {
   IPP_SPCHBR_6600,      /* 6.60 kbps */
   IPP_SPCHBR_8850,      /* 8.85 kbps */
   IPP_SPCHBR_12650,     /* 12.65 kbps */
   IPP_SPCHBR_14250,     /* 14.25 kbps */
   IPP_SPCHBR_15850,     /* 15.85 kbps */
   IPP_SPCHBR_18250,     /* 18.25 kbps */
   IPP_SPCHBR_19850,     /* 19.85 kbps */
   IPP_SPCHBR_23050,     /* 23.05 kbps */
   IPP_SPCHBR_23850,     /* 23.85 kbps */
   IPP_SPCHBR_DTX
};
short  amrExtractBits( const char **pBitStrm, int *currBitstrmOffset, int numParamBits )
{
    int     i ;
    int  unpackedParam = 0 ;

    for ( i = 0 ; i < numParamBits ; i ++ ){
        int  lTemp;
        lTemp = ((*pBitStrm)[(i + *currBitstrmOffset)>>3] >> ((7 - i - *currBitstrmOffset) & 0x7)) & 1;
        unpackedParam <<= 1;
        unpackedParam +=  lTemp ;
    }

    *pBitStrm += (numParamBits + *currBitstrmOffset)>>3;
    *currBitstrmOffset = (numParamBits + *currBitstrmOffset) & 0x7;

    return unpackedParam ;
}
/* Find the voicing factor (1=voice to -1=unvoiced) */
short ownVoiceFactor(short *pPitchExc, short valExcFmt, short valPitchGain,
                   short *pFixCdbkExc, short valCodeGain, short len)
{
    short valExpDiff, tmp, valExp, valEner, valExp1, valEner2, valExp2, valVoiceFac;
    int s;

    ippsDotProd_16s32s_Sfs( pPitchExc, pPitchExc, len, &s, -1);
    s = Add_32s(s, 1);

    valExp1 = (30 - Norm_32s_I(&s));
    valEner = s>>16;
    valExp1 -= (valExcFmt << 1);

    s = (valPitchGain * valPitchGain) << 1;
    valExp = Norm_32s_I(&s);
    tmp = (short)(s>>16);

    valEner = Mul_16s_Sfs(valEner, tmp, 15);
    valExp1 -= (valExp + 10);

    ippsDotProd_16s32s_Sfs( pFixCdbkExc, pFixCdbkExc,len, &s, -1);
    s = Add_32s(s, 1);

    valExp2 = (30 - Norm_32s_I(&s));
    valEner2 = s>>16;

    valExp = Exp_16s(valCodeGain);
    tmp = valCodeGain << valExp;
    tmp = Mul_16s_Sfs(tmp, tmp, 15);
    valEner2 = Mul_16s_Sfs(valEner2, tmp, 15);
    valExp2 -= (valExp << 1);

    valExpDiff = (valExp1 - valExp2);

    if (valExpDiff >= 0)
    {
        valEner >>= 1;
        valEner2 >>= (valExpDiff + 1);
    } else
    {
        if ((1 - valExpDiff) >= 15)
            valEner = 0;
        else
            valEner >>= (1 - valExpDiff);
        valEner2 >>= 1;
    }

    valVoiceFac = valEner - valEner2;
    valEner += (valEner2 + 1);

    if (valVoiceFac >= 0)
        valVoiceFac = (valVoiceFac << 15) / valEner;
    else
        valVoiceFac = -(((-valVoiceFac) << 15) / valEner);

    return (valVoiceFac);
}

/* 2.0 - 6.4 kHz phase dispersion */
static __ALIGN32 CONST short impPhaseDispLowTbl[SUBFRAME_SIZE] =
{
    20182,  9693,  3270, -3437,  2864, -5240,  1589, -1357,   600,
     3893, -1497,  -698,  1203, -5249,  1199,  5371, -1488,  -705,
    -2887,  1976,   898,   721, -3876,  4227, -5112,  6400, -1032,
    -4725,  4093, -4352,  3205,  2130, -1996, -1835,  2648, -1786,
     -406,   573,  2484, -3608,  3139, -1363, -2566,  3808,  -639,
    -2051,  -541,  2376,  3932, -6262,  1432, -3601,  4889,   370,
      567, -1163, -2854,  1914,    39, -2418,  3454,  2975, -4021,
     3431
};

/* 3.2 - 6.4 kHz phase dispersion */
static __ALIGN32 CONST short impPhaseDispMidTbl[SUBFRAME_SIZE] =
{
    24098, 10460, -5263,  -763,  2048,  -927, 1753, -3323,  2212,
      652, -2146,  2487, -3539,  4109, -2107,  -374, -626,  4270,
    -5485,  2235,  1858, -2769,   744,  1140,  -763, -1615, 4060,
    -4574,  2982, -1163,   731, -1098,   803,   167,  -714,  606,
     -560,   639,    43, -1766,  3228, -2782,   665,   763,  233,
    -2002,  1291,  1871, -3470,  1032,  2710, -4040,  3624,-4214,
     5292, -4270,  1563,   108,  -580,  1642, -2458,   957,  544,
     2540
};

void ownPhaseDispInit(short *pDispvec)
{
    ippsZero_16s(pDispvec, 8);
    return;
}

void ownPhaseDisp(short valCodeGain, short valPitchGain, short *pFixCdbkExc,
                  short valLevelDisp, short *pDispvec)
{
    short valState;
    short *pPrevPitchGain, *pPrevCodeGain, *pPrevState;
    int i, j;
    IPP_ALIGNED_ARRAY (16, short, pCodevec, SUBFRAME_SIZE*2);

    pPrevState = pDispvec;
    pPrevCodeGain = pDispvec + 1;
    pPrevPitchGain = pDispvec + 2;

    ippsZero_16s(pCodevec, SUBFRAME_SIZE*2);

    if (valPitchGain < MIN_GAIN_PITCH)
        valState = 0;
    else if (valPitchGain < THRESH_GAIN_PITCH)
        valState = 1;
    else
        valState = 2;

    ippsMove_16s(pPrevPitchGain, &pPrevPitchGain[1], 5);
    pPrevPitchGain[0] = valPitchGain;

    if ((valCodeGain - *pPrevCodeGain) > (*pPrevCodeGain << 1)) {
        if (valState < 2) valState += 1;
    } else {
        j = 0;
        for (i = 0; i < 6; i++)
            if (pPrevPitchGain[i] < MIN_GAIN_PITCH) j += 1;
        if (j > 2) valState = 0;
        if (valState > (*pPrevState + 1)) valState -= 1;
    }

    *pPrevCodeGain = valCodeGain;
    *pPrevState = valState;

    valState += valLevelDisp;
    if (valState == 0)
    {
        for (i = 0; i < SUBFRAME_SIZE; i++)
        {
            if (pFixCdbkExc[i] != 0)
            {
                for (j = 0; j < SUBFRAME_SIZE; j++)
                {
                    pCodevec[i + j] += (pFixCdbkExc[i] * impPhaseDispLowTbl[j] + 0x00004000) >> 15;
                }
            }
        }
    } else if (valState == 1)
    {
        for (i = 0; i < SUBFRAME_SIZE; i++)
        {
            if (pFixCdbkExc[i] != 0)
            {
                for (j = 0; j < SUBFRAME_SIZE; j++)
                {
                    pCodevec[i + j] += (pFixCdbkExc[i] * impPhaseDispMidTbl[j] + 0x00004000) >> 15;
                }
            }
        }
    }
    if (valState < 2)
        ippsAdd_16s(pCodevec, &pCodevec[SUBFRAME_SIZE], pFixCdbkExc, SUBFRAME_SIZE);

    return;
}

/*-------------------------------------------------------------------*
 * Decimate a vector by 2 with 2nd order fir filter.                 *
 *-------------------------------------------------------------------*/

#define L_FIR  5
#define L_MEM  (L_FIR-2)
static __ALIGN32 CONST short hFirTbl[L_FIR] = {4260, 7536, 9175, 7536, 4260};

void ownLPDecim2(short *pSignal, short len, short *pMem)
{
    short *pSignalPtr;
    int i, j, s;
    IPP_ALIGNED_ARRAY (16, short, pTmpvec, FRAME_SIZE + L_MEM);

    ippsCopy_16s(pMem, pTmpvec, L_MEM);
    ippsCopy_16s(pSignal, &pTmpvec[L_MEM], len);
    ippsCopy_16s(&pSignal[len-L_MEM], pMem, L_MEM);

    for (i = 0, j = 0; i < len; i += 2, j++)
    {
        pSignalPtr = &pTmpvec[i];
        ippsDotProd_16s32s_Sfs(pSignalPtr, hFirTbl, L_FIR, &s, -1);
        pSignal[j] = Cnvrt_NR_32s16s(s);
    }
    return;
}

/* Conversion of 16th-order 12.8kHz ISF vector into 20th-order 16kHz ISF vector */
#define INV_LENGTH 2731

void ownIsfExtrapolation(short *pHfIsf)
{
    IPP_ALIGNED_ARRAY (16, short, pIsfDiffvec, LP_ORDER - 2);
    int i, s, pIsfCorrvec[3];
    short valCoeff, valMean, valExp, valExp2, valHigh, valLow, valMaxCorr;
    short tmp, tmp2, tmp3;

    pHfIsf[LP_ORDER_16K - 1] = pHfIsf[LP_ORDER - 1];
    ippsSub_16s(pHfIsf, &pHfIsf[1], pIsfDiffvec, (LP_ORDER - 2));

    s = 0;
    for (i = 3; i < (LP_ORDER - 1); i++)
        s += pIsfDiffvec[i - 1] * INV_LENGTH;
    valMean = Cnvrt_NR_32s16s(s<<1);

    pIsfCorrvec[0] = 0;
    pIsfCorrvec[1] = 0;
    pIsfCorrvec[2] = 0;

    ippsMax_16s(pIsfDiffvec, (LP_ORDER - 2), &tmp);
    valExp = Exp_16s(tmp);
    ippsLShiftC_16s_I(valExp, pIsfDiffvec, (LP_ORDER - 2));
    valMean <<= valExp;
    for (i = 7; i < (LP_ORDER - 2); i++)
    {
        tmp2 = pIsfDiffvec[i] - valMean;
        tmp3 = pIsfDiffvec[i - 2] - valMean;
        s = tmp2 * tmp3;
        valHigh = s >> 15;
        valLow = s & 0x7fff;
        s = (valHigh*valHigh + ((valHigh*valLow + valLow*valHigh)>>15)) << 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久性| 蜜臀av性久久久久蜜臀av麻豆| 欧美国产成人精品| 久久综合色8888| 91精品国产一区二区人妖| 欧美日韩一区二区电影| 欧美性一二三区| 欧美精品一区二区在线观看| 欧美mv日韩mv| 久久综合九色综合久久久精品综合 | 久久亚洲精华国产精华液| 91精品国产综合久久精品app| 欧美日韩中文一区| 欧美精品丝袜中出| 日韩欧美一二三| 久久奇米777| 国产精品入口麻豆原神| 综合色天天鬼久久鬼色| 一区二区三区波多野结衣在线观看| 亚洲一区二区三区免费视频| 天堂精品中文字幕在线| 黄色精品一二区| av一区二区三区| 欧美日韩精品一二三区| 5858s免费视频成人| 精品国产1区2区3区| 国产精品网曝门| 亚洲自拍偷拍九九九| 免费成人av在线| 春色校园综合激情亚洲| 色狠狠色噜噜噜综合网| 91精品国产欧美一区二区| 国产欧美日本一区二区三区| 一区视频在线播放| 亚洲国产aⅴ天堂久久| 狠狠色狠狠色综合日日91app| 成人少妇影院yyyy| 欧美日韩精品免费观看视频| www激情久久| 亚洲精品日韩一| 青青草成人在线观看| 国内成人免费视频| av资源网一区| 日韩视频一区二区| 国产精品不卡视频| 青草国产精品久久久久久| 豆国产96在线|亚洲| 欧美少妇一区二区| 久久婷婷综合激情| 亚洲综合久久av| 国产精品一区二区三区99| 色婷婷av一区二区三区软件| 精品久久人人做人人爰| 一区二区高清视频在线观看| 国模娜娜一区二区三区| 色综合中文字幕国产 | 精品国产一二三| 一区二区三区四区在线播放| 韩国成人精品a∨在线观看| 欧美性一区二区| 中文无字幕一区二区三区| 三级影片在线观看欧美日韩一区二区 | 欧美国产精品中文字幕| 青青国产91久久久久久| 92国产精品观看| 欧美本精品男人aⅴ天堂| 亚洲精品成人a在线观看| 国产精品中文字幕欧美| 91精品国产综合久久久久久| 亚洲柠檬福利资源导航| 久久福利视频一区二区| 欧美三级中文字幕在线观看| 国产精品久线在线观看| 黑人巨大精品欧美一区| 91精品国产欧美一区二区| 亚洲精品午夜久久久| 大陆成人av片| 精品成人一区二区三区四区| 国产精品2024| 欧美一区二区观看视频| 一区二区三区电影在线播| av电影天堂一区二区在线观看| 精品国内二区三区| 日本伊人精品一区二区三区观看方式| 一本色道久久综合精品竹菊| 国产亚洲短视频| 国内精品写真在线观看| 日韩一区二区三区在线观看| 天天色天天操综合| 欧美日韩精品欧美日韩精品一 | 久久精品视频网| 国产一区免费电影| 日韩精品中文字幕一区二区三区| 日韩精品高清不卡| 欧美日韩激情在线| 亚洲成人黄色影院| 欧美亚洲综合另类| 亚洲影院免费观看| 欧美日韩国产综合久久| 亚洲精品免费在线观看| 91同城在线观看| 亚洲视频小说图片| 色偷偷久久人人79超碰人人澡 | 免费人成黄页网站在线一区二区 | 亚洲国产乱码最新视频 | 久久麻豆一区二区| 国产真实乱对白精彩久久| 久久综合九色综合欧美亚洲| 国产一区二区三区不卡在线观看| 久久―日本道色综合久久| 国产黑丝在线一区二区三区| 久久久精品国产免费观看同学| 国产一区二区三区四区五区入口 | 欧美另类变人与禽xxxxx| 亚洲第一久久影院| 在线播放91灌醉迷j高跟美女| 五月婷婷欧美视频| 4438x成人网最大色成网站| 日韩精品每日更新| 精品精品欲导航| 国产精品系列在线播放| 亚洲欧洲日韩女同| 91久久精品日日躁夜夜躁欧美| 亚洲无线码一区二区三区| 欧美欧美欧美欧美首页| 蜜臀av性久久久久av蜜臀妖精| 久久中文娱乐网| 成人av午夜影院| 久久99热这里只有精品| 久久久久久久av麻豆果冻| 成人在线视频一区| 亚洲精品v日韩精品| 欧美日韩国产精选| 久草热8精品视频在线观看| 国产日韩精品视频一区| 色视频欧美一区二区三区| 日韩在线卡一卡二| 久久久久久久久蜜桃| 97久久精品人人澡人人爽| 亚洲大片一区二区三区| 精品国产麻豆免费人成网站| 成人精品高清在线| 亚洲一级二级在线| 精品日本一线二线三线不卡| 不卡视频一二三四| 亚洲成人久久影院| 久久久精品免费免费| 色老汉一区二区三区| 毛片不卡一区二区| 中文字幕一区二区三区不卡在线| 欧美精品1区2区3区| 国产成人午夜高潮毛片| 亚洲3atv精品一区二区三区| 国产夜色精品一区二区av| 欧美专区日韩专区| 国产一区二区三区四区五区入口 | 久久只精品国产| 欧美性感一类影片在线播放| 韩日欧美一区二区三区| 一区二区三区中文免费| 337p粉嫩大胆噜噜噜噜噜91av| 91视频一区二区三区| 久久国产精品99久久久久久老狼| 一级日本不卡的影视| 久久久久9999亚洲精品| 欧美肥妇free| 欧美综合一区二区三区| 国产成人精品一区二区三区四区 | 亚洲精品在线三区| 欧美人妖巨大在线| av在线不卡网| 韩国v欧美v日本v亚洲v| 午夜国产精品影院在线观看| 亚洲欧美综合网| 日本一区二区三区四区在线视频| 制服丝袜激情欧洲亚洲| 色系网站成人免费| 成人高清免费观看| 国产麻豆91精品| 久久精品理论片| 舔着乳尖日韩一区| 一区二区在线观看免费| 国产精品欧美久久久久无广告| 日韩欧美在线观看一区二区三区| 在线视频国内一区二区| a级精品国产片在线观看| 国产精品99久久久久久似苏梦涵| 麻豆精品一区二区av白丝在线| 亚洲综合精品自拍| 亚洲精品免费播放| 中文字幕日韩一区二区| 国产欧美视频一区二区| 精品国产91久久久久久久妲己| 日韩视频123| 欧美精品自拍偷拍| 555www色欧美视频| 欧美一区二区三区思思人| 欧美精选午夜久久久乱码6080| 欧美三级视频在线播放| 在线精品视频免费观看|