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

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

?? cpi_equaliser_basic.c

?? VC++視頻開發實例集錦(包括“遠程視頻監控”"語音識別系統"等13個經典例子)
?? C
字號:
#include "stdafx.h"
#include "globals.h"
#include "CPI_Player.h"
#include "CPI_Equaliser.h"


typedef struct _CPs_EqualiserContext_Basic
{
    BOOL m_bEnabled;
    int m_aryLevels[10];
    BOOL m_bStreamIsCapable;
    unsigned int m_aryHistory[256];	
    unsigned int m_aryFuture[256];		
    unsigned int m_iCursor;

    int m_arySum_left[9];
    int m_arySum_right[9];

} CPs_EqualiserContext_Basic;


#define CIC_WRAPSAMPLE(expr)			(expr&0xFF)			
#define CIC_DECODESAMPLE_LEFT(expr)		(*(short*)&(expr))
#define CIC_DECODESAMPLE_RIGHT(expr)	(*((short*)&(expr) + 1))
#define CIC_FPMULTIPLY(expr1, expr2)	( ( (expr1) * (expr2) )>>8 )
#define CIC_TRUNCATESHORT(expr)    (((expr) > SHRT_MAX) ? SHRT_MAX : (((expr) < SHRT_MIN) ? SHRT_MIN : (expr)))

const int glb_iEQOffsets[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256 };
const int glb_iEQOffsets_his[] = { -1, -2, -4, -8, -16, -32, -64, -128, -256 };


void CPP_EBSC_Initialise(CPs_EqualiserModule* pModule, const int iFrequency, const BOOL b16bit);
void CPP_EBSC_Uninitialise(CPs_EqualiserModule* pModule);
void CPP_EBSC_ApplySettings(CPs_EqualiserModule* pModule, const CPs_EQSettings* pSettings, BOOL* pbEnableStateChanged);
void CPP_EBSC_ApplyEQToBlock_Inplace(CPs_EqualiserModule* pModule, void* pPCMBlock, const DWORD dwBlockSize);
//
void CPI_Player_Equaliser_Initialise_Basic(CPs_EqualiserModule* pModule)
{
    CPs_EqualiserContext_Basic* pContext;

    pModule->Initialise = CPP_EBSC_Initialise;
    pModule->Uninitialise = CPP_EBSC_Uninitialise;
    pModule->ApplySettings = CPP_EBSC_ApplySettings;
    pModule->ApplyEQToBlock_Inplace = CPP_EBSC_ApplyEQToBlock_Inplace;

    pContext = (CPs_EqualiserContext_Basic*)malloc(sizeof(CPs_EqualiserContext_Basic));
    pModule->m_pModuleCookie = pContext;

    memset(pContext->m_aryLevels, 0, sizeof(pContext->m_aryLevels));
    pContext->m_bEnabled = FALSE;
}
//
void CPP_EBSC_Initialise(CPs_EqualiserModule* pModule, const int iFrequency, const BOOL b16bit)
{
    CPs_EqualiserContext_Basic* pContext = (CPs_EqualiserContext_Basic*)pModule->m_pModuleCookie;
    CP_TRACE0("Equaliser (re)initialising");

    memset(pContext->m_aryHistory, 0, sizeof(pContext->m_aryHistory));
    memset(pContext->m_aryFuture, 0, sizeof(pContext->m_aryFuture));
    memset(pContext->m_arySum_left, 0, sizeof(pContext->m_arySum_left));
    memset(pContext->m_arySum_right, 0, sizeof(pContext->m_arySum_right));
    pContext->m_iCursor = 0;

    if(iFrequency == 44100 && b16bit == TRUE)
        pContext->m_bStreamIsCapable = TRUE;
    else
        pContext->m_bStreamIsCapable = FALSE;
}
//
void CPP_EBSC_Uninitialise(CPs_EqualiserModule* pModule)
{
    CPs_EqualiserContext_Basic* pContext = (CPs_EqualiserContext_Basic*)pModule->m_pModuleCookie;
    CP_CHECKOBJECT(pContext);
    CP_TRACE0("Equaliser shutting down");

    free(pContext);
    pModule->m_pModuleCookie = NULL;
}
//
void CPP_EBSC_ApplySettings(CPs_EqualiserModule* pModule, const CPs_EQSettings* pSettings, BOOL* pbEnableStateChanged)
{
    CPs_EqualiserContext_Basic* pContext = (CPs_EqualiserContext_Basic*)pModule->m_pModuleCookie;
    int iBandIDX = 0;

    for(iBandIDX=0; iBandIDX < 8; iBandIDX++)
        pContext->m_aryLevels[9-iBandIDX] = (pSettings->m_aryBands[iBandIDX]<<1) + 256;

    pContext->m_aryLevels[0] = pContext->m_aryLevels[2];
    pContext->m_aryLevels[1] = pContext->m_aryLevels[2];

    if(pContext->m_bEnabled == pSettings->m_bEnabled)
        *pbEnableStateChanged = FALSE;
    else
        *pbEnableStateChanged = TRUE;
    pContext->m_bEnabled = pSettings->m_bEnabled;
}
//
void CPP_EBSC_ApplyEQToBlock_Inplace(CPs_EqualiserModule* pModule, void* _pPCMBlock, const DWORD dwBlockSize)
{
    CPs_EqualiserContext_Basic* pContext = (CPs_EqualiserContext_Basic*)pModule->m_pModuleCookie;
    const int iNumSamples = dwBlockSize >> 2;
    int* pSampleBase = (int*)_pPCMBlock;
    int iSampleIDX, iPointIDX;
    unsigned int iThisSample, iThisSample_EQ;
    int iThisSample_left, iThisSample_right;
    int aryCoefficient_left[9], aryCoefficient_right[9];
    int iClips = 0;

    if(pContext->m_bStreamIsCapable == FALSE || pContext->m_bEnabled == FALSE)
        return;

    for(iSampleIDX =0; iSampleIDX < iNumSamples; iSampleIDX++)
    {
        iThisSample = pContext->m_aryFuture[pContext->m_iCursor];
        pContext->m_aryFuture[pContext->m_iCursor] = pSampleBase[iSampleIDX];

        iThisSample_left = CIC_DECODESAMPLE_LEFT(iThisSample);
        iThisSample_right = CIC_DECODESAMPLE_RIGHT(iThisSample);


        for(iPointIDX =0; iPointIDX < 9; iPointIDX++)
        {
            pContext->m_arySum_left[iPointIDX] += CIC_DECODESAMPLE_LEFT(pContext->m_aryFuture[CIC_WRAPSAMPLE(pContext->m_iCursor+glb_iEQOffsets[iPointIDX])]);
            pContext->m_arySum_right[iPointIDX] += CIC_DECODESAMPLE_RIGHT(pContext->m_aryFuture[CIC_WRAPSAMPLE(pContext->m_iCursor+glb_iEQOffsets[iPointIDX])]);
        }

        for(iPointIDX =0; iPointIDX < 9; iPointIDX++)
        {
            aryCoefficient_left[iPointIDX] = pContext->m_arySum_left[iPointIDX] >> (iPointIDX+1);
            aryCoefficient_right[iPointIDX] = pContext->m_arySum_right[iPointIDX] >> (iPointIDX+1);
        }

        iThisSample_left = CIC_FPMULTIPLY(iThisSample_left - aryCoefficient_left[0], pContext->m_aryLevels[0]);
        iThisSample_right = CIC_FPMULTIPLY(iThisSample_right - aryCoefficient_right[0], pContext->m_aryLevels[0]);
        for(iPointIDX =0; iPointIDX < 8; iPointIDX++)
        {
            iThisSample_left += CIC_FPMULTIPLY(aryCoefficient_left[iPointIDX] - aryCoefficient_left[iPointIDX+1], pContext->m_aryLevels[iPointIDX+1]);
            iThisSample_right += CIC_FPMULTIPLY(aryCoefficient_right[iPointIDX] - aryCoefficient_right[iPointIDX+1], pContext->m_aryLevels[iPointIDX+1]);
        }
        iThisSample_left += CIC_FPMULTIPLY(aryCoefficient_left[8], pContext->m_aryLevels[9]);
        iThisSample_right += CIC_FPMULTIPLY(aryCoefficient_right[8], pContext->m_aryLevels[9]);

        for(iPointIDX =0; iPointIDX < 9; iPointIDX++)
        {
            pContext->m_arySum_left[iPointIDX] -= CIC_DECODESAMPLE_LEFT(pContext->m_aryHistory[CIC_WRAPSAMPLE(pContext->m_iCursor+glb_iEQOffsets_his[iPointIDX])]);
            pContext->m_arySum_right[iPointIDX] -= CIC_DECODESAMPLE_RIGHT(pContext->m_aryHistory[CIC_WRAPSAMPLE(pContext->m_iCursor+glb_iEQOffsets_his[iPointIDX])]);
        }

        *(short*)&iThisSample_EQ = CIC_TRUNCATESHORT(iThisSample_left);
        *((short*)&iThisSample_EQ + 1) = CIC_TRUNCATESHORT(iThisSample_right);

        pSampleBase[iSampleIDX] = iThisSample_EQ;
        pContext->m_aryHistory[pContext->m_iCursor] = iThisSample;

        pContext->m_iCursor = CIC_WRAPSAMPLE(pContext->m_iCursor+1);
    }
}
//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合99re88久久爱| 国产福利一区二区三区在线视频| 99国产精品久久久久久久久久久| 中文字幕乱码一区二区免费| 不卡一卡二卡三乱码免费网站| 1024成人网色www| 欧美三级在线看| 精品在线一区二区三区| 中文字幕免费不卡在线| 欧美三级日韩三级| 国内精品久久久久影院一蜜桃| 国产精品私房写真福利视频| 色狠狠色狠狠综合| 极品尤物av久久免费看| 亚洲欧美另类在线| 久久精品欧美一区二区三区不卡| 欧美在线999| 国产精品一区二区黑丝| 亚洲大片精品永久免费| 日韩一区二区三区三四区视频在线观看 | 有码一区二区三区| 日韩三级免费观看| a亚洲天堂av| 国产做a爰片久久毛片| 国产精品超碰97尤物18| 4438成人网| 91亚洲国产成人精品一区二区三| 久久成人免费电影| 亚洲大片精品永久免费| 久久久久国产成人精品亚洲午夜| 91麻豆精品国产91久久久资源速度 | 91蜜桃视频在线| 水蜜桃久久夜色精品一区的特点 | 欧美在线观看视频在线| 久久99国产精品久久99| 亚洲国产日日夜夜| 精品盗摄一区二区三区| 欧美日本国产视频| 91久久精品一区二区| 成人精品gif动图一区| 国产一区二区三区电影在线观看| 香蕉影视欧美成人| 亚洲在线观看免费视频| 中文字幕一区二区视频| 国产欧美综合在线观看第十页| 欧美狂野另类xxxxoooo| 91在线免费看| 久久99国产精品久久| 日韩中文字幕一区二区三区| 亚洲午夜久久久| 玉米视频成人免费看| 亚洲国产高清不卡| 久久久久免费观看| 日韩欧美激情在线| 久久奇米777| 国产亚洲欧美中文| 中文字幕制服丝袜成人av| 最新欧美精品一区二区三区| 中文天堂在线一区| 一区二区三区国产豹纹内裤在线| 亚洲人成伊人成综合网小说| 亚洲欧洲精品天堂一级| 欧美一级二级三级蜜桃| 日韩欧美一级片| 国产亚洲女人久久久久毛片| 久久人人超碰精品| 中文字幕一区二区三区视频 | 色婷婷久久综合| 在线看国产一区| av一区二区久久| 91在线无精精品入口| 欧美日韩日日骚| 欧美精品一区二区久久久| 久久精品这里都是精品| 国产精品免费人成网站| 亚洲黄色性网站| 欧美a级理论片| 国产iv一区二区三区| eeuss鲁片一区二区三区在线看| 不卡影院免费观看| 日本韩国欧美一区| 精品理论电影在线观看| 日韩欧美在线不卡| 精品福利视频一区二区三区| 久久精品欧美一区二区三区不卡| 亚洲天堂成人网| 久久精品国产一区二区三| 国产伦精品一区二区三区免费| 国产成人日日夜夜| 一本色道久久加勒比精品| 日韩欧美中文字幕公布| 中文字幕色av一区二区三区| 日韩av电影天堂| 国产不卡视频在线播放| 在线欧美日韩国产| 欧美tk丨vk视频| 亚洲欧美电影院| 韩国精品免费视频| 欧美高清视频一二三区| 亚洲国产激情av| 国产自产v一区二区三区c| 在线精品视频一区二区三四 | 欧洲中文字幕精品| 精品成a人在线观看| 亚洲高清免费在线| 99精品偷自拍| 国产精品美女久久久久aⅴ国产馆| 日本成人在线网站| 欧美日韩日日骚| 亚洲一区在线免费观看| 成人免费高清在线| 久久影院午夜论| 久久精品国产免费| 欧美精品久久久久久久多人混战| 亚洲精品免费在线观看| 99热国产精品| 最近日韩中文字幕| 成人av在线一区二区三区| 欧美精品一区二区三区很污很色的| 亚洲gay无套男同| 欧美亚洲一区三区| 亚洲第一福利一区| 欧美片在线播放| 亚洲成人精品一区二区| 色综合久久久久| 一区二区三区日韩精品视频| 一本色道亚洲精品aⅴ| 一区二区三区不卡在线观看 | 日日欢夜夜爽一区| 欧美婷婷六月丁香综合色| 一区二区三区在线免费播放| 在线视频欧美区| 丝袜美腿亚洲综合| 欧美本精品男人aⅴ天堂| 国产剧情在线观看一区二区| 久久久久国产精品麻豆ai换脸| 国产精品综合网| 中文字幕欧美激情| 91久久精品午夜一区二区| 亚洲电影在线播放| 日韩一区二区三区视频| 国产自产视频一区二区三区| 欧美国产欧美综合| 色呦呦网站一区| 日本伊人午夜精品| 久久精品视频网| 色香蕉久久蜜桃| 丝袜亚洲精品中文字幕一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲国产精品人人做人人爽| 6080亚洲精品一区二区| 激情综合色播五月| 亚洲少妇30p| 欧美一区二区三区婷婷月色| 国产伦精品一区二区三区在线观看| 国产精品久久久久久久久图文区| 精品视频在线看| 国产一区二区三区四区五区入口 | 99国产精品视频免费观看| 亚洲国产一二三| 国产日韩欧美制服另类| 在线中文字幕一区| 精品午夜久久福利影院| 1024国产精品| 精品国产乱码久久久久久夜甘婷婷| 99这里都是精品| 久久电影国产免费久久电影| 亚洲欧美日韩国产综合| 精品三级在线看| 欧美性淫爽ww久久久久无| 国产一区二区三区蝌蚪| 亚瑟在线精品视频| 中文字幕一区二区三区不卡在线| 欧美一区二区三区不卡| 91麻豆精东视频| 国产精品主播直播| 免费成人美女在线观看| 最新国产の精品合集bt伙计| 久久久久国产精品人| 欧美精品vⅰdeose4hd| 在线视频国内一区二区| 国产一区二区精品久久| 奇米影视一区二区三区| 亚洲小少妇裸体bbw| 国产精品国产三级国产三级人妇| 日韩精品一区国产麻豆| 欧美日韩三级一区二区| 在线区一区二视频| 91免费看片在线观看| 处破女av一区二区| 激情综合色丁香一区二区| 蜜桃av一区二区在线观看| 亚洲成a人v欧美综合天堂 | 欧美一区2区视频在线观看| 91在线一区二区三区| 香蕉久久夜色精品国产使用方法| 夜夜嗨av一区二区三区| 国产精品久久二区二区| 欧美激情综合五月色丁香| 久久精品视频一区|