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

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

?? soundfx.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
        
        
        
        DWORD dwFileSizeHigh = 0;
        DWORD dwFileSize = GetFileSize( hFile, &dwFileSizeHigh );
        CloseHandle( hFile );
        if( dwFileSizeHigh != 0 || dwFileSize > 1000000 )
        {
            SetDlgItemText( hDlg, IDC_TEXT_STATUS, TEXT("File too large.  You should stream large files.") );
            return E_FAIL;
        }
    }
    
    if( FAILED( hr = waveFile.Open( strFileName, NULL, WAVEFILE_READ ) ) )
    {
        waveFile.Close();
        SetDlgItemText( hDlg, IDC_TEXT_STATUS, TEXT("Bad wave file.") );
        return DXTRACE_ERR_MSGBOX( TEXT("Open"), hr );
    }
    else 
    {
        WAVEFORMATEX* pwfx = waveFile.GetFormat();
        if( pwfx->wFormatTag != WAVE_FORMAT_PCM && pwfx->wFormatTag != WAVE_FORMAT_IEEE_FLOAT )
        {
            
            SetDlgItemText( hDlg, IDC_TEXT_STATUS, TEXT("Wave file must be PCM or IEEE FLOAT for effects control.") );
            SetDlgItemText( hDlg, IDC_TEXT_FILENAME, TEXT("") );
            return E_FAIL;
        }
        
        waveFile.Close();
        
        SetDlgItemText( hDlg, IDC_TEXT_FILENAME, strFileName );
        SetDlgItemText( hDlg, IDC_TEXT_STATUS, TEXT("File loaded.") );
        strcpy( g_tszFilename, strFileName );
        return S_OK;
    }
}
CSoundFXManager::CSoundFXManager( )
{
    m_lpChorus = NULL;
    m_lpCompressor = NULL;
    m_lpDistortion = NULL;
    m_lpEcho = NULL;
    m_lpFlanger = NULL;
    m_lpGargle = NULL;
    m_lpParamEq = NULL;
    m_lpReverb = NULL;
    ZeroMemory( &m_paramsChorus, sizeof( DSFXChorus ) );
    ZeroMemory( &m_paramsCompressor, sizeof( DSFXCompressor ) );
    ZeroMemory( &m_paramsDistortion, sizeof( DSFXDistortion ) );
    ZeroMemory( &m_paramsFlanger, sizeof( DSFXFlanger ) );
    ZeroMemory( &m_paramsEcho, sizeof( DSFXEcho ) );
    ZeroMemory( &m_paramsGargle, sizeof( DSFXGargle ) );
    ZeroMemory( &m_paramsParamEq, sizeof( DSFXParamEq ) );
    ZeroMemory( &m_paramsReverb, sizeof( DSFXWavesReverb ) );
    m_dwNumFX = 0;
    ZeroMemory( m_rgFxDesc, sizeof( DSEFFECTDESC ) * eNUM_SFX );
    ZeroMemory( m_rgRefGuids, sizeof( GUID * ) * eNUM_SFX );
    ZeroMemory( m_rgPtrs, sizeof(LPVOID*) * eNUM_SFX );
    ZeroMemory( m_rgLoaded, sizeof( BOOL ) * eNUM_SFX );
    m_lpDSB8 = NULL;
}
CSoundFXManager::~CSoundFXManager( )
{
    
    DisableAllFX( );
    
    SAFE_RELEASE( m_lpDSB8 );
}
HRESULT CSoundFXManager::Initialize( LPDIRECTSOUNDBUFFER lpDSB, BOOL bLoadDefaultParamValues )
{
    HRESULT hr;
    if( m_lpDSB8 )
    {
        
        DisableAllFX( );
        SAFE_RELEASE( m_lpDSB8 );
    }
    if( NULL == lpDSB )
        return S_OK;
    
    if( FAILED( hr = lpDSB->QueryInterface( IID_IDirectSoundBuffer8, (LPVOID*) &m_lpDSB8 ) ) )
        return hr;
    if( bLoadDefaultParamValues )
        LoadDefaultParamValues( );
    return S_OK;
}
HRESULT CSoundFXManager::UnInitialize( )
{
    Initialize( NULL, FALSE );
    return S_OK;
}
HRESULT CSoundFXManager::LoadDefaultParamValues( )
{
    DWORD i;
    if( NULL == m_lpDSB8 )
        return E_FAIL;
    for( i = eSFX_chorus; i < eNUM_SFX; i++ )
        SetFXEnable( i );
    ActivateFX( );
    if( m_lpChorus )
        m_lpChorus->GetAllParameters( &m_paramsChorus );
    if( m_lpCompressor )
        m_lpCompressor->GetAllParameters( &m_paramsCompressor );
    if( m_lpDistortion )
        m_lpDistortion->GetAllParameters( &m_paramsDistortion );
    if( m_lpEcho )
        m_lpEcho->GetAllParameters( &m_paramsEcho );
    if( m_lpFlanger )
        m_lpFlanger->GetAllParameters( &m_paramsFlanger );
    if( m_lpGargle )
        m_lpGargle->GetAllParameters( &m_paramsGargle );
    if( m_lpParamEq )
        m_lpParamEq->GetAllParameters( &m_paramsParamEq );
    if( m_lpReverb )
        m_lpReverb->GetAllParameters( &m_paramsReverb );
    DisableAllFX( );
    return S_OK;
}
HRESULT CSoundFXManager::LoadCurrentFXParameters( )
{
    if( m_lpChorus )
        m_lpChorus->SetAllParameters( &m_paramsChorus );
    if( m_lpCompressor )
        m_lpCompressor->SetAllParameters( &m_paramsCompressor );
    if( m_lpDistortion )
        m_lpDistortion->SetAllParameters( &m_paramsDistortion );
    if( m_lpEcho )
        m_lpEcho->SetAllParameters( &m_paramsEcho );
    if( m_lpFlanger )
        m_lpFlanger->SetAllParameters( &m_paramsFlanger );
    if( m_lpGargle )
        m_lpGargle->SetAllParameters( &m_paramsGargle );
    if( m_lpParamEq )
        m_lpParamEq->SetAllParameters( &m_paramsParamEq );
    if( m_lpReverb )
        m_lpReverb->SetAllParameters( &m_paramsReverb );
    return S_OK;
}
HRESULT CSoundFXManager::
SetFXEnable( DWORD esfxType )
{
    HRESULT hr;
    if( esfxType >= eNUM_SFX )
        return E_FAIL;
    if( m_rgLoaded[esfxType] )
        return S_FALSE;
    else
        m_rgLoaded[esfxType] = TRUE;
    switch ( esfxType )
    {
    case eSFX_chorus:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_CHORUS,     IID_IDirectSoundFXChorus8,
                              (LPVOID*) &m_lpChorus );
        break;
    case eSFX_compressor:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_COMPRESSOR, IID_IDirectSoundFXCompressor8,
                              (LPVOID*) &m_lpCompressor );
        break;
    case eSFX_distortion:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_DISTORTION, IID_IDirectSoundFXDistortion8,
                              (LPVOID*) &m_lpDistortion );
        break;
    case eSFX_echo:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_ECHO,       IID_IDirectSoundFXEcho8,
                              (LPVOID*) &m_lpEcho );
        break;
    case eSFX_flanger:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_FLANGER,    IID_IDirectSoundFXFlanger8,
                              (LPVOID*) &m_lpFlanger );
        break;
    case eSFX_gargle:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_GARGLE,     IID_IDirectSoundFXGargle8,
                              (LPVOID*) &m_lpGargle );
        break;
    case eSFX_parameq:
        hr = EnableGenericFX( GUID_DSFX_STANDARD_PARAMEQ,    IID_IDirectSoundFXParamEq8,
                              (LPVOID*) &m_lpParamEq );
        break;
    case eSFX_reverb:
        hr = EnableGenericFX( GUID_DSFX_WAVES_REVERB,        IID_IDirectSoundFXWavesReverb8,
                              (LPVOID*) &m_lpReverb );
        break;
    default:
        hr = E_FAIL;
        break;
    }
    return hr;
}
HRESULT CSoundFXManager::DisableAllFX( )
{
    
    SAFE_RELEASE( m_lpChorus );
    SAFE_RELEASE( m_lpCompressor );
    SAFE_RELEASE( m_lpDistortion );
    SAFE_RELEASE( m_lpEcho );
    SAFE_RELEASE( m_lpFlanger );
    SAFE_RELEASE( m_lpGargle );
    SAFE_RELEASE( m_lpParamEq );
    SAFE_RELEASE( m_lpReverb );
    m_dwNumFX = 0;
    ZeroMemory( m_rgFxDesc, sizeof( DSEFFECTDESC ) * eNUM_SFX );
    ZeroMemory( m_rgRefGuids, sizeof( GUID * ) * eNUM_SFX );
    ZeroMemory( m_rgPtrs, sizeof(LPVOID*) * eNUM_SFX );
    ZeroMemory( m_rgLoaded, sizeof( BOOL ) * eNUM_SFX );
    if( NULL == m_lpDSB8 )
        return E_FAIL;
    
    if( m_lpDSB8 )
        m_lpDSB8->Stop();
    
    m_lpDSB8->SetFX( 0, NULL, NULL );
    return S_OK;
}
HRESULT CSoundFXManager::ActivateFX( )
{
    DWORD dwResults[eNUM_SFX];
    HRESULT hr;
    DWORD i;
    if( NULL == m_lpDSB8 )
        return E_FAIL;
    if( m_dwNumFX == 0 )
        return S_FALSE;
    if( FAILED( hr = m_lpDSB8->SetFX( m_dwNumFX, m_rgFxDesc, dwResults ) ) )
        return hr;
    
    for( i = 0; i < m_dwNumFX; i++ )
        if( FAILED( hr = m_lpDSB8->GetObjectInPath( m_rgFxDesc[i].guidDSFXClass, 0, *m_rgRefGuids[i], m_rgPtrs[i] ) ) )
            return DXTRACE_ERR_MSGBOX( TEXT("GetObjectInPath"), hr );
    return S_OK;
}
HRESULT CSoundFXManager::EnableGenericFX( GUID guidSFXClass, REFGUID rguidInterface, LPVOID * ppObj )
{
    
    if( *ppObj )
        return S_FALSE;
    if( m_dwNumFX >= eNUM_SFX )
        return E_FAIL;
    
    ZeroMemory( &m_rgFxDesc[m_dwNumFX], sizeof(DSEFFECTDESC) );
    m_rgFxDesc[m_dwNumFX].dwSize         = sizeof(DSEFFECTDESC);
    m_rgFxDesc[m_dwNumFX].dwFlags        = 0;
    CopyMemory( &m_rgFxDesc[m_dwNumFX].guidDSFXClass, &guidSFXClass, sizeof(GUID) );
    m_rgRefGuids[m_dwNumFX] = &rguidInterface;
    m_rgPtrs[m_dwNumFX] = ppObj;
    m_dwNumFX++;
    return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美aaaaaa午夜精品| 91毛片在线观看| 在线观看www91| 日本一区二区三区在线观看| 亚洲国产日韩综合久久精品| 国产麻豆成人精品| 91精品国产综合久久国产大片| 国产精品私房写真福利视频| 玖玖九九国产精品| 在线观看日韩精品| 日韩毛片一二三区| 国产九九视频一区二区三区| 欧美麻豆精品久久久久久| 中文字幕在线观看不卡| 国产美女视频一区| 91精品国产色综合久久ai换脸 | 日本高清不卡在线观看| 久久亚洲欧美国产精品乐播| 日韩和欧美一区二区三区| 91高清视频在线| 亚洲视频精选在线| 成人美女在线视频| 国产亚洲一本大道中文在线| 黄色资源网久久资源365| 欧美日韩高清影院| 亚洲二区视频在线| 色狠狠一区二区| 亚洲精品成人天堂一二三| av网站一区二区三区| 国产精品蜜臀av| 9人人澡人人爽人人精品| 精品日韩一区二区| 麻豆传媒一区二区三区| 91精品欧美福利在线观看| 亚洲国产成人av好男人在线观看| 91视频91自| 亚洲免费在线视频一区 二区| 成人午夜av影视| 亚洲色图欧洲色图婷婷| 91婷婷韩国欧美一区二区| 亚洲毛片av在线| 在线观看亚洲精品| 午夜精彩视频在线观看不卡| 欧美精品成人一区二区三区四区| 亚洲午夜免费视频| 在线不卡免费欧美| 精品一区二区av| 国产欧美精品一区二区三区四区| 国产成人av影院| 亚洲同性同志一二三专区| 91久久线看在观草草青青| 亚洲高清免费在线| 欧美电影免费观看高清完整版在| 国产精品一色哟哟哟| 中文字幕制服丝袜一区二区三区| 色综合av在线| 蜜桃av一区二区三区电影| 国产丝袜美腿一区二区三区| 欧美系列日韩一区| 久久精品国产一区二区三| 亚洲国产精品成人综合| 欧美在线视频全部完| 麻豆国产精品官网| 综合久久久久久| 日韩你懂的在线播放| 高清不卡一二三区| 亚州成人在线电影| 国产亚洲欧美日韩日本| 欧美在线啊v一区| 韩国中文字幕2020精品| 亚洲激情综合网| 久久久久久久网| 欧美午夜精品一区二区三区| 国产成人av电影在线播放| 亚洲综合丁香婷婷六月香| 精品理论电影在线| 欧美在线色视频| 国产精品一区二区三区四区| 午夜在线电影亚洲一区| 国产精品久久国产精麻豆99网站| 91精品久久久久久久91蜜桃| 99国产精品99久久久久久| 国产最新精品免费| 日韩不卡免费视频| 中文字幕一区二区三区不卡| 精品欧美一区二区在线观看| 欧美网站大全在线观看| 成人亚洲一区二区一| 另类欧美日韩国产在线| 亚洲宅男天堂在线观看无病毒| 国产人妖乱国产精品人妖| 91精品国产乱码| 在线亚洲精品福利网址导航| 成人午夜视频网站| 国产裸体歌舞团一区二区| 免费人成网站在线观看欧美高清| 亚洲欧美色一区| 国产精品三级av| 国产欧美日韩综合精品一区二区| 日韩一级高清毛片| 91麻豆精品国产综合久久久久久| 91久久精品日日躁夜夜躁欧美| 春色校园综合激情亚洲| 国产专区欧美精品| 国产一区二区三区综合| 精品一区二区三区的国产在线播放| 亚洲一二三四在线| 亚洲激情第一区| 亚洲美女少妇撒尿| 1区2区3区国产精品| 国产精品二三区| 亚洲图片激情小说| 亚洲精品欧美激情| 亚洲午夜在线视频| 亚洲18女电影在线观看| 亚洲二区在线视频| 美女一区二区视频| 另类的小说在线视频另类成人小视频在线| 日韩综合一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 久久激情五月激情| 国产一区亚洲一区| 国产a视频精品免费观看| 成人国产亚洲欧美成人综合网| 成人va在线观看| 色香蕉久久蜜桃| 欧美日韩免费一区二区三区| 欧美日韩国产美女| 欧美不卡视频一区| 国产欧美日韩亚州综合| 中文字幕视频一区| 亚洲国产精品久久久久婷婷884| 亚洲在线一区二区三区| 强制捆绑调教一区二区| 国产一区二区主播在线| 成人高清视频在线| 在线日韩av片| 欧美一级免费观看| 亚洲国产精品av| 一区二区三区电影在线播| 日韩精品欧美成人高清一区二区| 麻豆精品久久久| 成人国产亚洲欧美成人综合网| 91精品91久久久中77777| 91精品国产综合久久久久| 久久综合色8888| 亚洲色图视频网站| 久久精品二区亚洲w码| www.欧美日韩国产在线| 91麻豆精品国产91| 国产女主播一区| 亚洲综合视频在线观看| 国产一区二区视频在线播放| 99re免费视频精品全部| 日韩一区二区三区av| 中文字幕国产精品一区二区| 五月婷婷色综合| bt7086福利一区国产| 日韩一级在线观看| 亚洲天堂免费在线观看视频| 老司机精品视频导航| 91性感美女视频| 久久青草欧美一区二区三区| 亚洲动漫第一页| 成人在线视频首页| 欧美一区二区免费| 亚洲蜜臀av乱码久久精品蜜桃| 美国十次综合导航| 欧美日韩在线观看一区二区 | 欧美性大战久久| 中文字幕 久热精品 视频在线| 琪琪一区二区三区| 在线观看一区二区视频| 中文字幕人成不卡一区| 国产在线看一区| 欧美久久一二三四区| 亚洲精品久久久久久国产精华液| 国产老肥熟一区二区三区| 精品区一区二区| 日韩精品一二区| 欧美猛男男办公室激情| 亚洲人妖av一区二区| 成人精品一区二区三区中文字幕| 日韩精品一区二区三区三区免费| 性做久久久久久免费观看| 91色.com| 亚洲欧美自拍偷拍色图| 国产91精品久久久久久久网曝门| 精品国产免费一区二区三区香蕉 | 亚洲综合视频在线观看| 99国产精品一区| 国产精品女同互慰在线看| 成人久久视频在线观看| 欧美国产日韩一二三区| 粉嫩aⅴ一区二区三区四区| 久久婷婷国产综合国色天香| 激情文学综合丁香| 26uuu精品一区二区| 国产一区二区美女诱惑| 久久综合色天天久久综合图片|