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

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

?? vadenergy.c

?? Intel開發的IPP庫的應用實例
?? 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) 2002-2006 Intel Corporation. All Rights Reserved.
//
//  Intel(R) Integrated Performance Primitives Audio Processing
//  Sample for Windows*
//
//  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 ippEULA.rtf located in the root directory of your Intel(R) IPP
//  product installation for more information.
//
//  Description:
//  This source file contains the implementation of energy-related computations for
//  Voice Activity Detector based upon the Intel(R) Integrated Performance Primitives.
//
*/

/* headers */
#include <ipps.h>
#include "VADcommon.h"

#define   Q15    15  /* N value of a Q15 (QM.N format) number */

/* Function prototypes */
void E_ComputeEnergyDB(const Ipp16s* pFrame, EStateStruct* pEState);
void E_ComputeNoiseEnergyThreshDB(EStateStruct* pEState, int frameNum);

/********************************************************************************
// Name:             E_GetStateSizeBytes
// Description:      Calculate and return the size in bytes required by the Energy
//                   state structure.
// Input Arguments:
//                   None
// Output Arguments:
//                   pNumStateBytes - pointer to output variable containing the
//                                    calculated  state size
// Returns:          None
// Notes:
********************************************************************************/
void E_GetStateSizeBytes(int* pNumStateBytes)
{
    /* initialize with the size of the static components of the EStateStruct */
    *pNumStateBytes = sizeof(EStateStruct);
}

/********************************************************************************
// Name:            E_Init
// Description:     Initialize the Energy state structure with initial values. Also,
//                  assign the externally allocated memory to the internal variables
//                  of the EStateStruct.
//
// Input Arguments:
//                  cWinSamps      - size of an input data frame in samples
//                  frameShiftMsec - frame shift for overlapping frames in msec
// Input/Output Arguments:
//                  pEState        - pointer to an EState structure
// Returns:         None
********************************************************************************/
void E_Init(EStateStruct* pEState, int cWinSamps, int frameShiftMsec)
{
    int    halfFrameShiftMsec;
    int     i;

    /* number of samples in a frame */
    pEState->cFrameSamples = cWinSamps;

    /* find number of right shifts for terms in energy summation */
    if (cWinSamps > 0)
    {
      pEState->cScaleFactor = 0;
      i = cWinSamps;
      while(i>0)
      {
        pEState->cScaleFactor++;
        i >>= 1;
      }
    }

    /* half the frame shift used to round of the computations of variables */
    halfFrameShiftMsec = frameShiftMsec/2;

    /* Initialize variables */
    pEState->cInitNoiseEstFrames = (E_INIT_NOISE_ESTIMATE_MSEC + halfFrameShiftMsec) / frameShiftMsec;

    /* Initial value to compute running average in order to initialize noise floor */
    pEState->noiseFloorDB = E_MIN_ENERGY_DB;
}

/********************************************************************************
// Name:            E_UpdateEnergyState
// Description:     Update the energy state based on the current input frame.
//
// Input Arguments:
//                  pFrame    - input frame
//                  frameNum  - current frame number used in initializing the noise floor
// Input/Output Arguments:
//                  pEState   - pointer to an EState structure
//
// Returns:         None
********************************************************************************/
void E_UpdateEnergyState(const Ipp16s* pFrame, int frameNum, EStateStruct* pEState)
{
    /* compute frame energy in DB */
    E_ComputeEnergyDB(pFrame, pEState);

    /* compute threshold for noise for the current frame */
    E_ComputeNoiseEnergyThreshDB(pEState, frameNum);
}

/********************************************************************************
// Name:            E_ComputeEnergyDB
// Description:     Compute the energy of the input frame in DB. The energy is computed
//                  as the variance of the samples in the input frame. The variance is
//                  subsequently converted into DB (10log10).
//
// Input Arguments:
//                  pFrame         - input frame
// Input/Output Arguments:
//                  pEState      - pointer to an EState structure
//
// Returns:         None
********************************************************************************/
void E_ComputeEnergyDB(const Ipp16s* pFrame, EStateStruct* pEState)
{
    Ipp32s  sumSqr;    /* sum square of the input samples */
    int     i;

    sumSqr = 0;

    /* compute sum-square and sum of the input samples */
    for (i=0; i<pEState->cFrameSamples; i++)
    {
        sumSqr  += (pFrame[i]*pFrame[i]) >> pEState->cScaleFactor;
    }

    /* convert to DB using Intel(R) IPP call */
    if (sumSqr > 0)
    {
        ipps10Log10_32s_Sfs(&sumSqr, &(pEState->energyDB), 1, -Q15);
    }
    else
    {
        pEState->energyDB = E_MIN_ENERGY_DB;
    }
}

/********************************************************************************
// Name:            E_ComputeNoiseEnergyThreshDB
// Description:     Compute the noise energy threshold of the input frame in DB.
//                  The noise threshold is computed as the sum of a noise floor and
//                  a correction term.

//                  The noise floor is initialized as the average
//                  energy over the initial E_INIT_NOISE_ESTIMATE_MSEC of input data.
//                  The noise floor is then updated in hypothesized non-speech regions
//                  using either a slow or fast adaptation factor.
//
// Input Arguments:
//                  frameNum  - current frame number used in initializing the noise floor
// Input/Output Arguments:
//                  pEState - pointer to an EState structure
//
// Returns:         None
********************************************************************************/
void E_ComputeNoiseEnergyThreshDB(EStateStruct* pEState, int frameNum)
{
    if (frameNum <= pEState->cInitNoiseEstFrames)
    {
        /* Initialize noise floor */
        pEState->noiseFloorDB = pEState->noiseFloorDB * (frameNum-1) + pEState->energyDB;
        pEState->noiseFloorDB /= frameNum;
    }
    else
    {
        if (pEState->energyDB > pEState->noiseThreshDB)
        {
            WEIGHTED_AVG_Q15(pEState->energyDB, pEState->noiseFloorDB, E_SLOW_ADAPT_ALPHA_Q15, pEState->noiseFloorDB)
        }
        else
        {
            WEIGHTED_AVG_Q15(pEState->energyDB, pEState->noiseFloorDB, E_FAST_ADAPT_ALPHA_Q15, pEState->noiseFloorDB)
        }
    }

    pEState->noiseThreshDB = pEState->noiseFloorDB + E_THRESH_OFFSET_DB_Q15;
}

/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清免费在线| 成人免费视频caoporn| 日韩精品一区二区三区视频 | 免费在线看一区| 欧美日本一区二区三区四区| 午夜在线电影亚洲一区| 正在播放亚洲一区| 看电影不卡的网站| 久久精品日韩一区二区三区| 成人免费电影视频| 日韩欧美激情一区| 琪琪久久久久日韩精品| 日本欧美一区二区| 亚洲精品国产无套在线观| 国产精品日韩成人| 国产欧美日韩在线| 欧美日韩日日摸| 日韩女优电影在线观看| 久久先锋影音av| 亚洲人成7777| 亚洲一区在线视频观看| 欧美成人a视频| 国产盗摄视频一区二区三区| 国产精品乱码一区二三区小蝌蚪| 91视频观看视频| 日韩激情中文字幕| 国产午夜精品久久久久久久 | 精品久久一区二区| 国产成人精品影视| 亚洲一区二区av电影| 精品久久国产字幕高潮| 成人a免费在线看| 亚洲国产精品久久久男人的天堂| 精品久久久网站| 欧美在线视频不卡| 国产成人无遮挡在线视频| 夜夜夜精品看看| 久久精品夜色噜噜亚洲aⅴ| 在线观看日韩电影| 国产精品中文字幕日韩精品| 亚洲一区国产视频| 国产欧美精品区一区二区三区| 欧美日韩在线观看一区二区 | 欧美日免费三级在线| 国模无码大尺度一区二区三区| 一区二区三区中文字幕电影 | 一区二区三区四区不卡在线| 日韩欧美一区二区久久婷婷| 欧洲一区在线电影| 不卡高清视频专区| 国产真实乱偷精品视频免| 天堂在线亚洲视频| 成人欧美一区二区三区| 久久综合精品国产一区二区三区| 欧美专区日韩专区| 成人成人成人在线视频| 国产精品亚洲一区二区三区在线| 日韩在线播放一区二区| 一区二区三区中文免费| 国产精品久久久久久久岛一牛影视| 欧美xxxx老人做受| 日韩一区二区精品在线观看| 色综合 综合色| 99久久精品免费看| 粉嫩蜜臀av国产精品网站| 麻豆91在线看| 蜜桃精品视频在线观看| 天堂va蜜桃一区二区三区| 亚洲综合视频在线观看| 一区二区三区在线免费| 亚洲欧洲成人自拍| 国产精品久久久久久久久免费相片| 精品国产免费一区二区三区香蕉| 91精品国产入口在线| 欧美人成免费网站| 欧美日韩精品系列| 欧美精品777| 欧美久久久久久蜜桃| 欧美喷水一区二区| 91麻豆精品国产综合久久久久久| 欧美视频你懂的| 欧美伊人久久久久久久久影院| 91国产精品成人| 欧美亚洲国产一区二区三区| 欧美三级资源在线| 欧美精品第1页| 欧美精品一区二区三区在线| 日韩精品一区在线| 国产日本亚洲高清| 国产精品久久综合| 一区二区三区av电影| 一区二区三区四区av| 日韩精品高清不卡| 国产一区二区久久| 春色校园综合激情亚洲| 色婷婷综合久久久久中文一区二区 | 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91精品国产一区二区| 精品日韩在线观看| 国产精品福利av| 亚洲国产cao| 久久草av在线| 99久久99久久精品免费观看| 欧美亚洲一区三区| 欧美videossexotv100| 国产精品久久久久影视| 亚洲一卡二卡三卡四卡无卡久久 | 伊人开心综合网| 日日夜夜免费精品视频| 国产精品主播直播| 91久久久免费一区二区| 日韩三级电影网址| 国产精品美女久久久久久久久久久 | 青椒成人免费视频| 国产成人一级电影| 欧美在线免费观看视频| 精品国产一区二区三区四区四| 欧美极品另类videosde| 亚洲一区在线看| 国产麻豆9l精品三级站| 色拍拍在线精品视频8848| 日韩美女视频在线| **欧美大码日韩| 精品亚洲成av人在线观看| 97国产精品videossex| 欧美一个色资源| 亚洲日本在线看| 久久国产精品第一页| 色屁屁一区二区| 久久久亚洲国产美女国产盗摄 | 欧美日韩一本到| 久久久av毛片精品| 三级久久三级久久久| 99久久精品99国产精品| 精品乱人伦小说| 视频一区中文字幕国产| 91论坛在线播放| 久久精品人人爽人人爽| 日本在线观看不卡视频| 91免费精品国自产拍在线不卡| 精品国精品自拍自在线| 午夜精品视频一区| 91美女片黄在线观看| 欧美国产日韩a欧美在线观看 | 91精品综合久久久久久| 亚洲美女屁股眼交3| 丁香婷婷综合五月| 欧美不卡一区二区三区四区| 亚洲成在线观看| 日本高清不卡一区| 国产精品你懂的| 成人综合在线观看| 久久亚洲精品国产精品紫薇| 蜜臀av性久久久久蜜臀av麻豆| 欧美色综合影院| 一区二区三区欧美视频| 成人av网址在线观看| 久久久精品人体av艺术| 国产一区二区福利| 久久精品视频在线看| 国产精品一区在线观看乱码| 精品久久国产字幕高潮| 国产又黄又大久久| 欧美va亚洲va国产综合| 狠狠色伊人亚洲综合成人| 欧美一区二区福利视频| 日韩高清在线一区| 欧美一区二区三区视频| 日本欧美一区二区三区| 欧美一级理论片| 精品一二三四区| 久久综合色播五月| 福利电影一区二区| 中文字幕av资源一区| thepron国产精品| 国产精品高清亚洲| 一本久久a久久免费精品不卡| 亚洲欧美一区二区三区孕妇| 欧美在线影院一区二区| 五月综合激情日本mⅴ| 日韩视频免费观看高清完整版在线观看| 性久久久久久久久久久久 | 日韩精品一区二区三区在线观看 | 精品久久国产字幕高潮| 国产精品一区二区在线观看网站| 国产网站一区二区三区| 成人免费毛片片v| 一区二区三区在线免费播放| 91精品国产综合久久久久久久 | www激情久久| 国产成人在线视频网站| 亚洲欧美电影一区二区| 欧美吞精做爰啪啪高潮| 免费在线成人网| 国产欧美精品一区| 欧洲一区二区三区在线| 国产一区欧美日韩| 最新中文字幕一区二区三区| 欧美日本国产一区| 国产精品一色哟哟哟|