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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ec_fb.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
字號(hào):
/* /////////////////////////////////////////////////////////////////////////////
//
//                  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, fullband algorithm
//
*/

#include "ipps.h"
#include "ippsc.h"
#include "ec_api.h"
#include "ownec.h"
/* Returns size of frame */
int ec_fb_GetFrameSize(int *s)
{
    *s = FB_FRAME_SIZE;
    return 0;
}

/* Returns size of buffer for state structure */
int ec_fb_GetSize(IppPCMFrequency freq, int taptime_ms, int *s)
{
    int size = 0, tap, tap_m, csize;

    if (freq == IPP_PCM_FREQ_8000) {
        tap = taptime_ms * 8;
        tap_m = tap + 2000;
    } else if (freq == IPP_PCM_FREQ_16000) {
        tap = taptime_ms * 16;
        tap_m = tap + 4000;
    } else {
        return 1;
    }

    size += ALIGN(sizeof(_fbECState));

    size += ALIGN(tap * sizeof(Ipp32f));
    size += ALIGN(tap * sizeof(Ipp32f));
    size += ALIGN(tap_m * sizeof(Ipp32f));

    ippsFullbandControllerGetSize_EC_32f(FB_FRAME_SIZE, tap, freq, &csize);

    size += ALIGN(csize);

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

    *s = size;

    return 0;
}

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

/* Initializes state structure */
int ec_fb_Init(void *stat, IppPCMFrequency freq, int taptime_ms)
{
    _fbECState *state=(_fbECState *)stat;
    int i, tap, tap_m, csize;
    Ipp8u *ptr = (Ipp8u *)state;

    ptr += ALIGN(sizeof(_fbECState));

    /* number of filter coeffs */
    if (freq == IPP_PCM_FREQ_8000) {
        tap = taptime_ms * 8;
        tap_m = tap + 2000;
    } else if (freq == IPP_PCM_FREQ_16000) {
        tap = taptime_ms * 16;
        tap_m = tap + 4000;
    } else {
        return 1;
    }

    state->tap = tap;
    /* size of history buffer */
    state->tap_m = tap_m;
    /* size of frame */
    state->frameSize = FB_FRAME_SIZE;

    /* fixed filter coeffs */
    state->firf_coef = (Ipp32f *)ptr;
    ptr += ALIGN(tap * sizeof(Ipp32f));
    /* adaptive filter coeffs */
    state->fira_coef = (Ipp32f *)ptr;
    ptr += ALIGN(tap * sizeof(Ipp32f));
    /* history buffer */
    state->rin_hist = (Ipp32f *)ptr;
    ptr += ALIGN(state->tap_m * sizeof(Ipp32f));

    /* enable adaptation */
    state->mode = 1;
    /* used in ToneDisabler */
    state->td_mode = 0;

    /* current position in history buffer */
    state->pos = tap + 1;

    /* error of NLMS */
    state->err = 0;
    /* receive_in signal power */
    state->r_in_pwr = 0;
    /* send_in signal power */
    state->s_in_pwr = 0;
    /* used in ToneDisabler */
    state->td_coeff = 1 - 4.0f * (state->frameSize) / freq;
    state->td_thres = 500;
    state->td_resr = state->td_ress = 0;

    /* Initialize fullband controller */
    state->controller = (IppsFullbandControllerState_EC_32f *)ptr;

    ippsFullbandControllerGetSize_EC_32f((state->frameSize), tap, freq, &csize);
    ippsFullbandControllerInit_EC_32f(state->controller, (state->frameSize), state->tap, freq);

    ptr += ALIGN(csize);

    /* Initialize tone detection  */
    ippsToneDetectGetStateSize_EC_32f(freq, &csize);

    state->tdr = (IppsToneDetectState_EC_32f *)ptr;
    ptr += csize;
    state->tds = (IppsToneDetectState_EC_32f *)ptr;
    ippsToneDetectInit_EC_32f(state->tdr, freq);
    ippsToneDetectInit_EC_32f(state->tds, freq);

    /* Zero coeffs and history buffer */
    for (i = 0; i < tap; i++)
        state->fira_coef[i] = state->firf_coef[i] = 0;

    for (i = 0; i < state->tap_m; i++)
        state->rin_hist[i] = 0;

    return 0;
}

/* Do operation or set mode */
int ec_fb_ModeOp(void *stat, ECOpcode op)
{
    _fbECState *state=(_fbECState *)stat;
    int i;

    switch (op) {
    case (EC_COEFFS_ZERO):      /* Zero coeffs of filters */
        for (i = 0; i < state->tap; i++)
            state->fira_coef[i] = state->firf_coef[i] = 0;
        break;
    case(EC_ADAPTATION_ENABLE): /* Enable adaptation */
        if (!(state->mode & 1))
            ippsFullbandControllerReset_EC_32f(state->controller);
        state->mode |= 1;
        break;
    case(EC_ADAPTATION_DISABLE): /* Disable adaptation */
        state->mode &= ~1;
        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_fb_ToneDisabler(void *stat, Ipp32f *r_in, Ipp32f *s_in)
{
    _fbECState *state=(_fbECState *)stat;
    int resr, ress;
    int i;
    Ipp32f r_in_pwr = 0, s_in_pwr = 0;
    int frameSize = state->frameSize;

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

    /* Update receive-in signal and send-in signal powers */
    for (i = 0; i < frameSize; i++) {
        r_in_pwr += r_in[i] * r_in[i];
        s_in_pwr += s_in[i] * s_in[i];
    }

    ADDWEIGHTED(state->r_in_pwr, r_in_pwr, state->td_coeff);
    ADDWEIGHTED(state->s_in_pwr, s_in_pwr, state->td_coeff);

    if (state->td_ress || state->td_resr) {
       if ((!state->td_resr || state->r_in_pwr < state->td_thres) &&
            (!state->td_ress || state->s_in_pwr < state->td_thres))
        {
    /* Restore previous mode */
            state->td_resr = state->td_ress = 0;
            if (state->td_mode & 1)
                ec_fb_ModeOp(state, EC_ADAPTATION_ENABLE);
            if (state->td_mode & 2)
                ec_fb_ModeOp(state, EC_NLP_ENABLE);
        }
    } else if (resr || ress) {
        if (resr) state->td_resr = 1;
        if (ress) state->td_ress = 1;
    /* Zero coeffs, disable adaptation and NLP */
        state->td_mode = state->mode;
        ec_fb_ModeOp(state, EC_COEFFS_ZERO);
        ec_fb_ModeOp(state, EC_ADAPTATION_DISABLE);
        ec_fb_ModeOp(state, EC_NLP_DISABLE);
    }

    return 0;
}

/* Process one frame */
int ec_fb_ProcessFrame(void *stat, Ipp32f *r_in, Ipp32f *s_in, Ipp32f *s_out)
{
    _fbECState *state=(_fbECState *)stat;
    int i;
    int tap = state->tap;
    int pos = state->pos;
    int frameSize = state->frameSize;
    Ipp32f ss[FB_FRAME_SIZE_MAX], s_out_a_buf[FB_FRAME_SIZE_MAX];
    Ipp32f *rin_hist = state->rin_hist;
    Ipp32f sg;

    /* ToneDisabler */
    if (TD_ENABLED)
        ec_fb_ToneDisabler(state, r_in, s_in);

    /* Update history buffer */
    for (i = 0; i < frameSize; i++) {
        rin_hist[pos + i] = r_in[i];
    }

    /* Do filtering with fixed coeffs */
    ippsFIR_EC_32f(state->rin_hist + pos, s_in, s_out, frameSize, state->firf_coef, tap);

    if (ADAPTATION_ENABLED) {
    /* Update fullband controller */
        ippsFullbandControllerUpdate_EC_32f(rin_hist + pos, s_in, ss, state->controller);
    /* Do NLMS filtering */
        ippsNLMS_EC_32f(state->rin_hist + pos, s_in, ss, s_out_a_buf, frameSize, state->fira_coef, tap, &(state->err));
    /* Apply fullband controller */
        ippsFullbandController_EC_32f(s_out_a_buf, s_out, state->fira_coef, state->firf_coef, &sg, state->controller);

    /* Apply NLP coeff */
        if (NLP_ENABLED)
            for (i = 0; i < frameSize; i++)
                s_out[i] *= sg;
    }

    /* Update position in history buffer */
    pos += frameSize;

    if (pos + frameSize < state->tap_m) {
        state->pos = pos;
    } else {
        for (i = 0; i < tap + 1; i++)
            state->rin_hist[i] = state->rin_hist[i + pos - tap - 1];
        state->pos = tap + 1;
    }

    return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆国产精品久久| 美腿丝袜亚洲综合| 波多野结衣中文一区| 国产欧美一区二区三区鸳鸯浴 | 久久久久国产精品人| 国产一区二区三区精品欧美日韩一区二区三区| 欧美一级高清片| 久久丁香综合五月国产三级网站| 2021久久国产精品不只是精品| 国产精品996| 一区二区在线电影| 91精品国产欧美一区二区成人| 经典三级在线一区| 中文字幕一区视频| 欧美人牲a欧美精品| 国产剧情一区二区三区| 亚洲欧美另类图片小说| 91麻豆精品国产自产在线 | 国产欧美日本一区二区三区| 91在线视频免费观看| 日韩精品高清不卡| 欧美国产成人精品| 91麻豆精品国产综合久久久久久| 国产精品一区久久久久| 亚洲国产另类精品专区| 久久久久九九视频| 欧美色男人天堂| 国产精品91xxx| 天堂久久久久va久久久久| 国产片一区二区| 欧美日韩国产免费一区二区 | 日韩综合一区二区| 中文字幕 久热精品 视频在线| 在线观看亚洲a| 国产98色在线|日韩| 日韩精品电影一区亚洲| 中文字幕亚洲一区二区av在线 | 不卡av在线免费观看| 亚洲国产精品一区二区久久| 国产亚洲精品bt天堂精选| 欧美精选午夜久久久乱码6080| 成人激情免费电影网址| 久久国产精品99久久人人澡| 亚洲在线视频网站| 国产精品免费视频一区| 日韩亚洲欧美一区| 欧美日本一区二区三区四区| 99re这里都是精品| 国产成人av电影在线观看| 日韩不卡在线观看日韩不卡视频| 亚洲免费在线播放| 国产精品成人一区二区艾草| 久久久亚洲午夜电影| 欧美xingq一区二区| 91精品国产日韩91久久久久久| 91麻豆精品在线观看| 高清av一区二区| 国产一区二区h| 久久99国内精品| 蜜桃视频免费观看一区| 丝袜诱惑制服诱惑色一区在线观看| 亚洲色图欧美在线| 亚洲桃色在线一区| 1区2区3区欧美| 自拍偷拍国产精品| 中文字幕视频一区| 亚洲天堂网中文字| 亚洲欧美色综合| 亚洲精品网站在线观看| 一区二区视频在线| 亚洲高清视频中文字幕| 一区二区三区日韩在线观看| 亚洲精品写真福利| 亚洲午夜国产一区99re久久| 亚洲美女屁股眼交| 亚洲激情男女视频| 午夜成人在线视频| 视频在线在亚洲| 三级久久三级久久久| 免费成人av资源网| 韩国成人精品a∨在线观看| 国产一区激情在线| 丰满少妇久久久久久久 | 色菇凉天天综合网| 日本韩国欧美一区二区三区| 欧美三级三级三级| 日韩一区二区免费视频| 亚洲精品一区二区三区99| 久久久精品国产免大香伊| 国产精品污www在线观看| 亚洲三级视频在线观看| 午夜精品久久久久久久99水蜜桃 | 欧美久久久久久久久久| 欧美一区二区三区免费| 久久久久久99精品| 亚洲少妇中出一区| 调教+趴+乳夹+国产+精品| 精品影院一区二区久久久| 国产a级毛片一区| 色噜噜狠狠一区二区三区果冻| 欧美精品777| 久久久国产精华| 一区二区三区日韩欧美精品| 日韩不卡一区二区三区| 成人一区二区三区视频在线观看| 99re66热这里只有精品3直播 | 成人动漫视频在线| 欧美日韩国产另类不卡| 久久日一线二线三线suv| 有坂深雪av一区二区精品| 麻豆免费精品视频| 99视频精品在线| 日韩欧美一二三| 亚洲婷婷综合久久一本伊一区| 午夜不卡av免费| 成人av在线电影| 欧美一级久久久久久久大片| 国产精品美女视频| 久久国产免费看| 色美美综合视频| 久久精品免视看| 肉色丝袜一区二区| 91老师国产黑色丝袜在线| 精品免费国产二区三区| 亚洲一卡二卡三卡四卡| 国产91精品露脸国语对白| 91精品国产综合久久久久久久 | 久久亚洲综合av| 亚洲成人av一区二区三区| 成人久久视频在线观看| 日韩一区二区三| 亚洲综合免费观看高清完整版| 国产高清不卡一区| 欧美一区二区三区色| 亚洲综合免费观看高清完整版在线| 国产精品一区在线观看你懂的| 欧美精品日韩一本| 一区二区在线观看视频| 成人午夜av电影| 精品国产制服丝袜高跟| 日韩有码一区二区三区| 色噜噜狠狠成人中文综合| 中文字幕一区二区三区在线播放 | 美日韩一区二区| 欧美日韩一区二区不卡| 成人免费在线播放视频| 国产91清纯白嫩初高中在线观看| 欧美一区二区三区爱爱| 日韩主播视频在线| 欧美视频三区在线播放| 一区二区三区日韩欧美精品| 97se亚洲国产综合自在线| 久久久国产综合精品女国产盗摄| 久久精品国产一区二区| 欧美人妇做爰xxxⅹ性高电影| 亚洲综合色成人| 欧美在线观看禁18| 亚洲妇女屁股眼交7| 欧美日韩一卡二卡三卡 | 亚洲午夜羞羞片| 在线一区二区观看| 亚洲一区二区高清| 欧美在线综合视频| 亚洲愉拍自拍另类高清精品| 日本精品一区二区三区四区的功能| 国产精品久久久一本精品| 成人app在线| 亚洲美女偷拍久久| 欧美性猛交xxxx乱大交退制版| 亚洲图片欧美视频| 欧美日韩国产三级| 麻豆精品一区二区| 亚洲精品在线电影| 成人国产精品视频| 亚洲欧洲99久久| 欧洲另类一二三四区| 视频一区在线视频| 欧美精品一区二区三区高清aⅴ | 激情综合亚洲精品| 精品国产一区二区在线观看| 国产一区二区免费在线| 欧美激情中文字幕一区二区| 91在线免费视频观看| 亚洲国产aⅴ天堂久久| 日韩美一区二区三区| 国产91清纯白嫩初高中在线观看| 国产精品超碰97尤物18| 欧美日韩国产综合一区二区三区 | 亚洲人成网站色在线观看| 欧美偷拍一区二区| 精品一区二区三区在线播放| 国产日韩精品一区二区三区| 一本到不卡精品视频在线观看 | 久久99久久99| 国产精品青草综合久久久久99| 在线一区二区三区做爰视频网站| 日日嗨av一区二区三区四区| 国产午夜亚洲精品不卡| 欧美午夜精品一区二区三区| 九九九精品视频|