波形捕捉:(7)“捕捉缓冲区”特效
“捕捉緩沖區”特效
????? 在 Windows XP 中,有兩種可以作為內核級的實現方式的“捕捉緩沖區”特效是可行的:
????? ·回聲消除(AEC)
????? ·降噪
????? 不支持其它DMOs中的特效(諸如那些被用于緩沖區渲染的效果)。
????? DirectSoundFullDuplexCreate8?函數和 IDirectSoundCapture8::CreateCaptureBuffer 方法都以一個表明 DSCEFFECTDESC 結構體數組(該數組用于表示想要的特效)地址的?DSCBUFFERDESC?結構體作為參數。但是,如果你想利用微軟的實現方式你必須通過 DirectSoundFullDuplexCreate8 創建一個捕捉緩沖區。你也必須使用該函數創建輔助聲音緩沖區。如果不這樣做,那特效就無法實現。
????? 在每個 DSCEFFECTDESC 結構體的 dwFlags 成員中,你必須指定 DSCFX_LOCHARDWARE 或 DSCFX_LOCSOFTWARE。在大多數情況下,指定 DSCFX_LOCSOFTWARE。如果特效在指定的位置不可行,那么緩沖區創建失敗。
????? 特效由 DSCEFFECTDESC 結構體中的 guidDSCFXClass 成員來標識。在 guidDSCFXInstance 成員中指定 DSCFX_MS_AEC?或 DSCFX_MS_NS 就可以得到微軟的軟件實現方式。要想在硬件或軟件上使用其它可行的實現方式,就得從制造商那里獲取類和實例GUID。
????? 當緩沖區被創建之后,你可以通過 IDirectSoundCaptureBuffer8::GetFXStatus 方法獲取特效的信息。
????? AEC主要利于那些用于一端到另一端進行語音交流的應用程序。由A區域麥克風發出的信號從B區域的喇叭中輸出,同時被B區域的麥克風接收。不使用AEC的話,這個信號就又會被發送回A區域。導致回聲也可能是囂叫。AEC通過在每個區域監控輸入信號(以整個房間的環境作為考慮因素對輸入信號進行調整,將它從當前正在輸出的信號中排除)克服了這個問題。它同時也除去了任何由本地電腦播放著的聲音(比如音樂),從而通過網絡傳輸的語音將不會受干擾。
????? AEC在操作系統內核級別上實現并且全局使用這種效果。它有如下限制:
????? ·同一時刻只能有一個捕捉緩沖區使用AEC。
????? ·如果其它應用程序正在捕捉或播放音頻,那么AEC就不能被啟動。如果AEC已經啟動了,其它任何應用程序要捕捉聲音都會使用AEC。
????? ·不管輸入輸出的格式如何,內核混音器都以16位 mono格式處理聲音。這樣的結果是聲音質量可能會下降。以16位 mono格式捕捉聲音是為了減少對處理器的使用。
????? ·當AEC正在被使用時,所有DirectSound設備上的硬件回聲都會失效,這將會影響到其它共享了該設備的用戶的體驗。
????? ·AEC參數的變化將會影響所有正在運行的應用程序。
????? ·AEC無法在有些組合聲效卡和驅動程序的情況下使用。應用程序應該始終提供用戶關閉AEC的功能。
????? ·在操作系統版本上主要是Windows XP SP1,AEC無法在使用USB喇叭的情況下工作,也無法在那些提供不同時鐘頻率的捕捉和渲染的機器上工作。
????? ·如果音效環境改變,適配過濾器將會花費2秒或以上的時間進行調節。
????? ·任何出現在原始聲音信號后128毫秒以上的后期混響將不會從正在輸出的信號中除去。
????? 在具有這個效果的捕捉緩沖區上,使用 IDirectSoundCaptureFXAec8?接口來設置和得到AEC參數。你也可以允許噪音來填充。(一種用于防止在輸出信號中沒有新數據時而產生完全的寂靜)
????? 降噪特效只有在AEC被啟用的情況下才能被使用。降噪捕捉效果除去頻繁的背景噪音,諸如風扇噪音。使用 IDirectSoundCaptureFXNoiseSuppress8?接口來設置和獲取參數。
????? 通過使用 IDirectSoundCaptureBuffer8::GetObjectInPath 方法從捕捉緩沖區對象中得到特效接口。
?
查看其它:
??????導 言
????? 1.枚舉“捕捉設備”
????? 2.創建“捕捉設備對象”
??????3.“捕捉設備”性能
????? 4.創建一個“捕捉緩沖區”
????? 5.“捕捉緩沖區”信息
????? 6.“捕捉緩沖區”通知
????? 7.?“捕捉緩沖區”特效
????? 8.使用“捕捉緩沖區”
????? 9.寫入到WAV文件?
轉載于:https://www.cnblogs.com/stg609/archive/2008/10/23/1314479.html
總結
以上是生活随笔為你收集整理的波形捕捉:(7)“捕捉缓冲区”特效的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络专业人士笔记(1~4章)
- 下一篇: 且看微软的.Net和Sun公司的J2EE