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

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

?? cpi_equaliser_basic.c

?? < VC++視頻音頻開發>> 這本書的源碼
?? 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一区二区三区免费野_久草精品视频
婷婷成人综合网| 亚洲电影你懂得| 欧美午夜理伦三级在线观看| 国产一区二区在线观看视频| 一区二区三区成人| 久久久久久影视| 欧美精品亚洲二区| 99久久久无码国产精品| 韩国欧美国产1区| 亚洲网友自拍偷拍| 亚洲欧洲日韩av| 日韩欧美一卡二卡| 欧美日韩午夜在线| 91香蕉视频在线| 国产一区二区久久| 奇米精品一区二区三区四区| 亚洲一区中文日韩| 自拍偷在线精品自拍偷无码专区| 久久一夜天堂av一区二区三区| 欧美精品1区2区3区| 欧美中文字幕一区二区三区亚洲| a美女胸又www黄视频久久| 国产美女精品人人做人人爽| 五月激情综合色| 亚洲国产美女搞黄色| 亚洲视频免费看| 国产精品久久综合| 国产精品盗摄一区二区三区| 国产精品少妇自拍| 国产精品网站在线观看| 日本人妖一区二区| av一区二区不卡| 亚洲视频在线观看一区| 亚洲欧洲日韩一区二区三区| 中文字幕欧美激情| 国产欧美日韩综合精品一区二区| 精品国产一区二区在线观看| 欧美va在线播放| 精品国产一区二区三区久久久蜜月| 日韩欧美色综合网站| 欧美大片免费久久精品三p| 欧美一区二区三区不卡| 欧美日韩专区在线| 亚洲九九爱视频| 亚洲欧美色图小说| 亚洲欧美视频在线观看视频| 亚洲嫩草精品久久| 亚洲综合在线观看视频| 亚洲国产日韩综合久久精品| 亚洲第一av色| 美女免费视频一区二区| 久久福利视频一区二区| 国内成人精品2018免费看| 国产一区日韩二区欧美三区| 国产成人自拍在线| 91社区在线播放| 欧美精品乱人伦久久久久久| 日韩视频在线你懂得| 精品对白一区国产伦| 国产欧美中文在线| 中文字幕亚洲成人| 亚洲综合久久av| 日本午夜精品视频在线观看 | 国产麻豆午夜三级精品| 国产成人av电影在线观看| av亚洲精华国产精华精华| 色婷婷综合久久久中文字幕| 欧美裸体bbwbbwbbw| 26uuu精品一区二区三区四区在线| 国产日产亚洲精品系列| 有码一区二区三区| 久久成人免费网站| 99久久99久久精品免费看蜜桃| 欧美日韩性生活| 国产清纯美女被跳蛋高潮一区二区久久w| 中文字幕中文字幕在线一区| 一区二区三区精品在线观看| 美女任你摸久久| 91丨九色丨尤物| 日韩写真欧美这视频| 国产日韩欧美精品在线| 亚洲福利视频三区| 国产精品 日产精品 欧美精品| 色拍拍在线精品视频8848| 精品黑人一区二区三区久久| 亚洲欧美精品午睡沙发| 久久精品二区亚洲w码| 色综合一个色综合亚洲| 日韩欧美亚洲国产另类 | 亚洲网友自拍偷拍| 精品一区二区免费视频| 99国产精品99久久久久久| 日韩一级二级三级| 亚洲免费观看高清完整版在线观看| 欧美a级理论片| 91国偷自产一区二区三区成为亚洲经典| 欧美成人bangbros| 亚洲一区二区在线观看视频| 国产v综合v亚洲欧| 欧美肥妇bbw| 亚洲精品乱码久久久久久 | 91精品免费在线观看| 国产精品成人在线观看| 久久99久久精品| 在线观看日韩毛片| 国产精品日日摸夜夜摸av| 另类综合日韩欧美亚洲| 欧美日韩黄视频| 亚洲欧美日韩一区二区| 国产成人av一区| 26uuu亚洲| 日韩国产欧美三级| 色婷婷av一区| 中文字幕一区二区三区色视频| 国内精品久久久久影院一蜜桃| 欧美日韩高清在线播放| 一区二区三区在线观看网站| 波多野洁衣一区| 国产精品午夜免费| 国产精品一区二区在线播放 | 色香蕉成人二区免费| 日韩中文字幕亚洲一区二区va在线| 日韩视频一区二区三区在线播放| 国产一区二区免费在线| 天天爽夜夜爽夜夜爽精品视频| 日韩一级黄色大片| 国内成人精品2018免费看| 国产蜜臀97一区二区三区| 国产成人一区在线| 午夜一区二区三区在线观看| 久久色成人在线| av一区二区三区黑人| 亚洲精品videosex极品| 国产欧美一区二区精品性| 欧美日韩国产精品成人| 99re热这里只有精品免费视频| 亚洲成人高清在线| 国产精品日韩精品欧美在线| 欧美成人aa大片| 欧美精品aⅴ在线视频| 色天使久久综合网天天| 不卡影院免费观看| 在线观看亚洲一区| 国产v综合v亚洲欧| 亚洲女与黑人做爰| 国产精品视频你懂的| 亚洲第一成年网| 国产日韩欧美精品一区| 欧日韩精品视频| 欧美男同性恋视频网站| 九九热在线视频观看这里只有精品| 欧美激情中文不卡| 欧美日韩国产综合一区二区 | 国产毛片精品国产一区二区三区| 中文字幕一区二区在线观看| 欧美一区二区免费观在线| 成人av网站在线| av一区二区久久| 日韩一级视频免费观看在线| 亚洲天堂a在线| 欧美三电影在线| 久久国产免费看| 国产精品嫩草影院com| 在线精品视频免费观看| 日本在线观看不卡视频| 久久久99精品免费观看| 91偷拍与自偷拍精品| 日日摸夜夜添夜夜添国产精品| 亚洲精品一区二区在线观看| 国产成人自拍高清视频在线免费播放| 国产乱码一区二区三区| 国产精品嫩草99a| 欧洲av在线精品| 国产主播一区二区| 有码一区二区三区| 欧美成人高清电影在线| 99精品国产热久久91蜜凸| 亚洲成人av电影| 久久久精品国产免费观看同学| 色综合久久综合| 狠狠色伊人亚洲综合成人| 亚洲丝袜自拍清纯另类| 日韩精品最新网址| 色欧美片视频在线观看| 久久成人精品无人区| 亚洲欧美一区二区三区孕妇| 日韩欧美你懂的| 色狠狠色噜噜噜综合网| 韩国欧美国产1区| 亚洲国产aⅴ天堂久久| 国产婷婷色一区二区三区四区 | 国产精品美女久久福利网站| 7777精品伊人久久久大香线蕉的 | 天天亚洲美女在线视频| 中文av一区二区| 欧美一卡2卡3卡4卡| 91精彩视频在线| 成人爽a毛片一区二区免费| 免费看欧美美女黄的网站| www日韩大片|