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

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

?? ec_sb_int.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 EC Sample
//
//  By downloading and installing this sample, 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.
//
//
//  Purpose: Echo Canceller, subband algorithm
//
*/

#include <stdlib.h>
#include "ipps.h"
#include "ippsc.h"
#include "ec_api_int.h"
#include "ownec_int.h"

/* init scratch memory buffer */
int ec_isb_InitBuff(_isbECState *state, char *buff) {
#if !defined (NO_SCRATCH_MEMORY_USED)
    if(NULL==state)
        return 1;
    if(NULL != buff)
       state->Mem.base = buff;
    else
       if (NULL == state->Mem.base)
          return 1;
    state->Mem.CurPtr = state->Mem.base;
    state->Mem.VecPtr = (int *)(state->Mem.base+EC_SCRATCH_MEMORY_SIZE);
#endif
    return 0;
}
/* Returns size of frame */
int ec_isb_GetFrameSize(IppPCMFrequency freq, int taptime_ms, int *s)
{
    *s = SB_FRAME_SIZE;
    return 0;
}

int ec_isb_GetSegNum(isbECState *state)
{
      return state->numSegments;
}
int ec_isb_GetSubbandNum(isbECState *state)
{
   return state->numSubbands;
}

/* Returns size of buffer for state structure */
int ec_isb_GetSize(IppPCMFrequency freq, int taptime_ms, int *s)
{
    int size = 0, numSegments;
    int pSizeSpec, pSizeInit, pSizeBuf;
    int pSizeInit1, pSizeBuf1, csize;

    size += ALIGN(sizeof(_isbECState));

    ippsFFTGetSize_R_16s32s(SB_FFT_ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate,
        &pSizeSpec, &pSizeInit, &pSizeBuf);

    size += ALIGN(pSizeSpec);

    ippsFFTGetSize_C_32sc(SB_FFT_ORDER, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate,
        &pSizeSpec, &pSizeInit1, &pSizeBuf1);

    size += ALIGN(pSizeSpec);

    csize = pSizeInit;
    if (csize < pSizeInit1)
        csize = pSizeInit1;
    if (csize < pSizeBuf)
        csize = pSizeBuf;
    if (csize < pSizeBuf1)
        csize = pSizeBuf1;

    ippsFFTGetSize_R_32s(SB_FFT_ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate,
        &pSizeSpec, &pSizeInit1, &pSizeBuf1);

    size += ALIGN(pSizeSpec);

    if (csize < pSizeInit1)
        csize = pSizeInit1;

    if (csize < pSizeBuf1)
        csize = pSizeBuf1;

    size += ALIGN(csize);

    if (freq == IPP_PCM_FREQ_8000) {
        numSegments = (taptime_ms * 8 - 1) / SB_FRAME_SIZE + 1;
    } else if (freq == IPP_PCM_FREQ_16000) {
        numSegments = (taptime_ms * 16 - 1) / SB_FRAME_SIZE + 1;
    } else {
        return 1;
    }

    size += ALIGN(3 * numSegments * sizeof(Ipp32sc *));

    size += ALIGN(3 * numSegments * SB_SUBBANDS * sizeof(Ipp32sc));

    ippsSubbandControllerGetSize_EC_16s(SB_SUBBANDS, SB_FRAME_SIZE, numSegments, freq, &csize);

    size += ALIGN(csize);

    ippsToneDetectGetStateSize_EC_16s(freq, &csize);
    size += ALIGN(csize * 2);

    *s = size;

    return 0;
}

/* Returns delay introduced to send-path */
int ec_isb_GetSendPathDelay(int *delay)
{
    *delay = 0;
    return 0;
}

/* acquire NLP gain coeff */
int ec_isb_GetNLPGain(_isbECState *state)
{
   return state->sgain;
}

/* Initializes state structure */
int ec_isb_Init(_isbECState *state, IppPCMFrequency freq, int taptime_ms)
{
    int i, numSegments;
    int pSizeSpec, pSizeInit, pSizeBuf;
    int pSizeInit1, pSizeBuf1, csize;
    Ipp8u *ptr = (Ipp8u *)state, *ptr0, *ptr1, *ptr2, *buf;

    ptr += ALIGN(sizeof(_isbECState));


    ippsFFTGetSize_R_16s32s(SB_FFT_ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate,
        &pSizeSpec, &pSizeInit, &pSizeBuf);

    ptr0 = ptr;
    ptr += ALIGN(pSizeSpec);

    ippsFFTGetSize_C_32sc(SB_FFT_ORDER, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate,
        &pSizeSpec, &pSizeInit1, &pSizeBuf1);

    ptr1 = ptr;
    ptr += ALIGN(pSizeSpec);

    csize = pSizeInit;
    if (csize < pSizeInit1)
        csize = pSizeInit1;
    if (csize < pSizeBuf)
        csize = pSizeBuf;
    if (csize < pSizeBuf1)
        csize = pSizeBuf1;

    ippsFFTGetSize_R_32s(SB_FFT_ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate,
        &pSizeSpec, &pSizeInit1, &pSizeBuf1);

    ptr2 = ptr;
    ptr += ALIGN(pSizeSpec);

    if (csize < pSizeInit1)
        csize = pSizeInit1;

    if (csize < pSizeBuf1)
        csize = pSizeBuf1;

    ippsFFTInit_R_16s32s(&(state->spec_fft), SB_FFT_ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate,
        ptr0, ptr);
    ippsFFTInit_R_32s(&(state->spec_fft32), SB_FFT_ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate,
        ptr1, ptr);
    ippsFFTInit_C_32sc(&(state->spec_fftC), SB_FFT_ORDER, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate,
        ptr2, ptr);

    /* Work buffer for FFT */
    state->pBuf = ptr;

    ptr += ALIGN(csize);

    state->FFTSize = 128;
    state->numSubbands = 65;
    state->frameSize = 64;
    state->windowLen = SB_WIN_LEN;

    if (freq == IPP_PCM_FREQ_8000) {
        numSegments = (taptime_ms * 8 - 1) / state->frameSize + 1;
    } else if (freq == IPP_PCM_FREQ_16000) {
        numSegments = (taptime_ms * 16 - 1) / state->frameSize + 1;
    } else {
        return 1;
    }

    state->numSegments = numSegments;

    /* receive-in subband history */
    state->ppRinSubbandHistory = (Ipp32sc **)ptr;
    ptr += ALIGN(3 * numSegments * sizeof(Ipp32sc *));
    /* adaptive coeffs */
    state->ppAdaptiveCoefs = state->ppRinSubbandHistory + numSegments;
    /* fixed coeffs */
    state->ppFixedCoefs = state->ppRinSubbandHistory + numSegments * 2;

    buf = ptr;
    ptr += ALIGN(3 * numSegments * SB_SUBBANDS * sizeof(Ipp32sc));

    /* Zero coeffs buffer and history buffer */
    ippsZero_32sc((Ipp32sc *)buf, 3 * numSegments * SB_SUBBANDS);

    /* Initialize receive-in subband history array */
    for (i = 0; i < numSegments; i++) {
        (state->ppRinSubbandHistory)[i] = (Ipp32sc *)buf + i * (state->numSubbands);
    }
    buf += numSegments * (state->numSubbands) * sizeof(Ipp32sc);

    /* Initialize adaptive coeffs array */
    for (i = 0; i < numSegments; i++) {
        (state->ppAdaptiveCoefs)[i] = (Ipp32sc *)buf + i * (state->numSubbands);
    }
    buf += numSegments * (state->numSubbands) * sizeof(Ipp32sc);

    /* Initialize fixed coeffs array */
    for (i = 0; i < numSegments; i++) {
        (state->ppFixedCoefs)[i] = (Ipp32sc *)buf + i * (state->numSubbands);
    }

    /* Initialize subband controller */
    state->controller = (IppsSubbandControllerState_EC_16s *)ptr;
    if (ippsSubbandControllerInit_EC_16s(state->controller, state->numSubbands, state->frameSize, numSegments, freq) != ippStsOk)
        return 1;

    ippsSubbandControllerGetSize_EC_16s(SB_SUBBANDS, SB_FRAME_SIZE, numSegments, freq, &csize);

    ptr += ALIGN(csize);

    /* Initialize tone detection */
    ippsToneDetectGetStateSize_EC_16s(freq, &csize);
    state->tdr = (IppsToneDetectState_EC_16s *)ptr;
    ptr += csize;
    state->tds = (IppsToneDetectState_EC_16s *)ptr;
    ippsToneDetectInit_EC_16s(state->tdr, freq);
    ippsToneDetectInit_EC_16s(state->tds, freq);

    /* zero receive-in history buffer */
    for (i = 0; i < state->windowLen; i++)
        state->pRinHistory[i] = 0;

    /* enable adaptation */
    state->mode = 1;

    state->r_in_pwr = 0;
    state->s_in_pwr = 0;
    state->td_coeff = COEF_ONE - COEF_ONE * 4 * state->frameSize / freq;
    state->td_thres = 500;
    state->td_resr = state->td_ress = 0;
    state->sgain = IPP_MAX_16S;
    state->constrainSubbandNum=0;
    state->convergedSBNum=0;
    return 0;
}

/* Do operation or set mode */
int ec_isb_ModeOp(_isbECState *state, ECOpcode op)
{
    int i, j;

    switch (op) {
    case (EC_COEFFS_ZERO):      /* Zero coeffs of filters */
        {
            for (i = 0; i < state->numSegments; i++)
                for (j = 0; j < state->numSubbands; j++)
                    state->ppAdaptiveCoefs[i][j].re = state->ppAdaptiveCoefs[i][j].im =
                        state->ppFixedCoefs[i][j].re = state->ppFixedCoefs[i][j].im = 0;
        }
        break;
    case(EC_ADAPTATION_ENABLE): /* Enable adaptation */
        if (!(state->mode & 1))
            ippsSubbandControllerReset_EC_16s(state->controller);
        state->mode |= 1;
        break;
    case(EC_ADAPTATION_ENABLE_LITE): /* Enable adaptation */
        if (!(state->mode & 1))
            ippsSubbandControllerReset_EC_16s(state->controller);
        state->mode |= 9; /* Enable adaptation + no constrain */
        break;
    case(EC_ADAPTATION_DISABLE): /* Disable adaptation */
        state->mode &= ~1;
        break;
    case(EC_ADAPTATION_DISABLE_LITE): /* Disable adaptation */
        state->mode &= ~8;
        break;
    case(EC_NLP_ENABLE):    /* Enable NLP */
        state->mode |= 2;
        break;
    case(EC_NLP_DISABLE):   /* Disable NLP */
        state->mode &= ~2;
        break;
    case(EC_TD_ENABLE):     /* Enable ToneDisabler */
        state->mode |= 4;
        break;
    case(EC_TD_DISABLE):    /* Disable ToneDisabler */
        state->mode &= ~4;
        break;
    default:
        break;
    }

    return 0;
}


/* Tone Disabler */
static int ec_isb_ToneDisabler(_isbECState *state, Ipp16s *r_in, Ipp16s *s_in)
{
    int resr, ress;
    int i;
    Ipp64s r_in_pwr = 0, s_in_pwr = 0;

    /* Detect 2100 Hz with periodical phase reversal */
    ippsToneDetect_EC_16s(r_in, state->frameSize, &resr, state->tdr);
    ippsToneDetect_EC_16s(s_in, state->frameSize, &ress, state->tds);

    /* Update receive-in signal and send-in signal powers */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费在线观看入口| 五月天激情小说综合| 国产视频一区二区三区在线观看| 欧美一级高清大全免费观看| 欧美一区二区三区在线观看视频| 在线成人高清不卡| 日韩小视频在线观看专区| 欧美一区二区视频在线观看2020| 日韩午夜在线播放| 精品日韩一区二区| 国产片一区二区三区| 国产精品天美传媒沈樵| 亚洲欧洲精品一区二区精品久久久| 国产精品久久网站| 亚洲激情在线播放| 日韩黄色免费网站| 激情欧美一区二区三区在线观看| 国产精品自拍一区| av成人免费在线观看| 91丨porny丨国产入口| 在线观看欧美黄色| 宅男噜噜噜66一区二区66| 欧美一区二区三区四区久久| 久久综合久久久久88| 中文字幕不卡在线播放| 亚洲女人的天堂| 婷婷综合五月天| 国产综合一区二区| 99免费精品在线| 欧美日韩不卡在线| 亚洲一区二区av电影| 亚洲视频小说图片| 午夜亚洲福利老司机| 激情图片小说一区| 91丝袜美腿高跟国产极品老师| 欧美日韩卡一卡二| 久久综合九色综合欧美亚洲| 亚洲欧美偷拍另类a∨色屁股| 性欧美疯狂xxxxbbbb| 国产九九视频一区二区三区| fc2成人免费人成在线观看播放| 色婷婷av一区二区| 日韩女优视频免费观看| 亚洲国产精品激情在线观看| 一区二区三区在线免费播放| 麻豆成人av在线| 99久久国产免费看| 日韩欧美美女一区二区三区| 国产精品久久久久久久久免费丝袜| 一区二区三区高清| 国产精品99久| 欧美日本在线观看| 国产精品嫩草影院com| 午夜欧美视频在线观看| 国产白丝网站精品污在线入口| 欧美日韩国产精选| 国产精品传媒入口麻豆| 免费看日韩精品| 色先锋aa成人| 久久久久久久电影| 日日夜夜精品视频免费| 成人av手机在线观看| 在线综合视频播放| 一区二区三区日韩| 国产精品一二一区| 91麻豆精品国产自产在线观看一区 | 一区二区三区精品视频在线| 捆绑紧缚一区二区三区视频 | 日本一区二区三区电影| 亚洲成av人综合在线观看| 成人激情免费视频| 久久免费偷拍视频| 丝袜亚洲另类丝袜在线| 91在线精品一区二区三区| 久久久另类综合| 日韩av一区二| 欧美影院一区二区三区| 中文字幕在线一区| 国产伦精品一区二区三区免费| 亚洲成人黄色小说| 国内精品久久久久影院色| 欧美影视一区在线| 亚洲柠檬福利资源导航| 成人激情动漫在线观看| 精品国产a毛片| 裸体歌舞表演一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 中文子幕无线码一区tr| 国产乱淫av一区二区三区| 日韩精品一区二区三区中文不卡| 亚洲国产综合在线| 91色.com| 亚洲欧美激情插| 99久久伊人久久99| 中文字幕一区二区三区蜜月| 丁香婷婷综合激情五月色| 久久综合狠狠综合久久综合88 | 国产成人亚洲综合a∨猫咪| 日韩三级高清在线| 久久综合综合久久综合| 这里只有精品免费| 男人操女人的视频在线观看欧美| 欧美一区日韩一区| 另类中文字幕网| 欧美变态tickle挠乳网站| 蜜臀av一级做a爰片久久| 日韩三级视频在线观看| 久久精品久久久精品美女| 日韩视频免费观看高清在线视频| 奇米精品一区二区三区在线观看一| 制服丝袜在线91| 久久精品国产成人一区二区三区 | 一区二区三区四区在线| 欧美在线观看视频一区二区| 一个色综合av| 91精品国产综合久久精品图片 | 日韩一区二区三区在线视频| 久久福利视频一区二区| 欧美精品一区二区三区蜜臀| 国产乱色国产精品免费视频| 国产精品网友自拍| 一本久久综合亚洲鲁鲁五月天| 一区二区三区精密机械公司| 欧美日韩亚洲丝袜制服| 美女爽到高潮91| 国产亲近乱来精品视频| 色婷婷av一区二区三区软件| 三级久久三级久久久| 精品免费国产二区三区| 成人亚洲一区二区一| 亚洲综合无码一区二区| 日韩一区二区免费视频| 色悠悠亚洲一区二区| 久久国产麻豆精品| 国产精品嫩草影院av蜜臀| 欧美日韩一二三| 国模娜娜一区二区三区| 亚洲人123区| 日韩欧美在线123| 成人美女视频在线看| 亚洲风情在线资源站| 久久理论电影网| 欧美午夜一区二区| 国产一区二三区好的| 亚洲精品成人在线| 精品粉嫩超白一线天av| 99热精品国产| 美女精品自拍一二三四| 专区另类欧美日韩| 制服丝袜av成人在线看| 成人av网址在线| 日本亚洲最大的色成网站www| 日本一二三不卡| 欧美一级艳片视频免费观看| 成人黄色777网| 久久激情综合网| 亚洲精品视频观看| 国产丝袜欧美中文另类| 欧美日韩一区在线| 不卡欧美aaaaa| 久久99国产精品成人| 一区二区激情小说| 国产色91在线| 日韩欧美中文字幕精品| 日本道精品一区二区三区| 国产一区二区在线视频| 天天色天天操综合| 日韩理论电影院| 国产女人水真多18毛片18精品视频| 欧美嫩在线观看| 色综合激情五月| 国产91对白在线观看九色| 免费成人在线观看视频| 一区二区欧美国产| 中文字幕在线视频一区| 久久久久久一级片| 日韩一区二区三区电影| 欧美又粗又大又爽| 国产成人福利片| 蜜臀久久99精品久久久久宅男| 一区二区欧美精品| 亚洲天天做日日做天天谢日日欢| 久久久久久久久久久久久女国产乱 | 日本色综合中文字幕| 一区二区三区四区视频精品免费 | 欧美激情综合五月色丁香小说| 欧美人动与zoxxxx乱| 91视频观看免费| 成人av在线看| 国产不卡高清在线观看视频| 精品亚洲aⅴ乱码一区二区三区| 91麻豆精品国产91久久久久久 | 日本乱码高清不卡字幕| 粉嫩欧美一区二区三区高清影视| 蜜桃av噜噜一区| 六月丁香婷婷久久| 日本aⅴ免费视频一区二区三区| 亚洲成人tv网| 亚洲1区2区3区视频| 亚洲不卡在线观看|