波形捕捉:(1)枚举捕捉设备
枚舉"捕捉設備"
后在網上找到類似翻譯:DirectSound學習筆記(1):枚舉聲音設備? 作者:pyundeng
而且作者是在06年發表的,哎~~~
猶豫了半天是否有必要繼續翻譯下去,最后打算還是繼續寫吧。就當做練英文好了。剛剛又搜了下博客圓,沒有發現類似文章,所以更堅定要繼續寫下去。
大家可別懷疑我只是復制粘貼哦,我可是一字一句翻譯出來的,當然也會參考一些已有的資料。
????? 如果你的應用程序只是單純得通過用戶首選設備用來捕捉聲音,那就沒有必要來枚舉可用的設備。當你通過調用?DirectSoundCaptureCreate8 或DirectSoundFullDuplexCreate8?方法來創建一個設備對象時,你可以聲明一個默認設備。更多信息,請查看Creating the Capture Device Object。
????? 枚舉操作在以下情況下是必須的:
????? 1.你的應用程序所需的性能并不是所有設備都能滿提供。
????? 2.你的應用程序需要2種或以上的設備。
????? 3.你希望提供用戶選擇設備的功能。
????? 枚舉為了實現三個目的:
????? 1.指明哪些硬件是可用的。
????? 2.為每一個設備提供了一個GUID(全局統一標識符)。
????? 3.允許你為每一個枚舉出來的設備創建一個臨時設備對象,這樣你就可以獲取設備的性能。
????? 想要枚舉設備,你必須首先設置一個回調函數(在系統中這個函數將會在枚舉每個設備時被調用一次)。你可以在這個函數內執行任何操作,你也可以給這個函數隨意命名,但是你必須根據 DSEnumCallback 的原型聲明它。如果想要繼續枚舉設備,那么這個回調函數必須返回TRUE,否則返回FALSE。比如,在找到一個滿足你要求性能的設備后。
????? 一個回調函數的例子:
????? 下面這個回調函數將每個枚舉出來的設備名添加到復選框中,并且將它的GUID存儲為數據項。前三個參數由設備提供,第四個參數由?DirectSoundEnumerate?函數傳入;這個參數能被用來傳遞任何32位的值,在本例中則是這個復選框的窗口句柄。在Windows.h中定義的宏被用來向復選框中添加字符串和數據。
?BOOL?CALLBACK?DSEnumProc(LPGUID?lpGUID,?
?????????????LPCTSTR?lpszDesc,
?????????????LPCTSTR?lpszDrvName,?
?????????????LPVOID?lpContext?)
????{
??????HWND?hCombo?=?(HWND)lpContext;
??????LPGUID?lpTemp?=?NULL;
?????
??????if?(lpGUID?!=?NULL)??//??NULL?only?for?"Primary?Sound?Driver".
??????{
????????if?((lpTemp?=?(LPGUID)malloc(sizeof(GUID)))?==?NULL)
????????{
????????????return(TRUE);
????????}
????????memcpy(lpTemp,?lpGUID,?sizeof(GUID));
??????}
?????
??????ComboBox_AddString(hCombo,?lpszDesc);
??????ComboBox_SetItemData(hCombo,?
??????????ComboBox_FindString(hCombo,?0,?lpszDesc),
??????????lpTemp?);
??????free(lpTemp);
??????return(TRUE);
????}
????? 枚舉在包含復選框的對話框被初始化的時候啟動。假設 hCombo 是這個復選框的句柄而 hDlg 是這個對話的句柄。
Code
????if?(FAILED(DirectSoundEnumerate((LPDSENUMCALLBACK)DSEnumProc,
????????(VOID*)&hCombo)))
????{
??????EndDialog(hDlg,?TRUE);
??????return(TRUE);
????}
????? 在這個例子中,復選框的句柄地址被傳遞到 DirectSoundEnumerate 中,而 DirectSoundEnumerate 則傳遞它到回調函數中。這個參數可以是任何你想在回調函數中訪問的32位值。
????? 第一個被枚舉出來的設備通常被稱為主聲音設備,此時這個回調函數的 lpGUID 參數為 NULL。這個設備代表了用戶在控制面板中設置的首選播放設備。當用戶選擇設備時,它被單獨枚舉出來以便應用程序能夠輕松的將主聲音設備添加到列表上。主設備也是通過它正確的名字和GUID被枚舉出來的。
?
查看其它:
??????導 言
????? 1.枚舉“捕捉設備”
????? 2.創建“捕捉設備對象”
??????3.“捕捉設備”性能
????? 4.創建一個“捕捉緩沖區”
????? 5.“捕捉緩沖區”信息
????? 6.“捕捉緩沖區”通知
????? 7.?“捕捉緩沖區”特效
????? 8.使用“捕捉緩沖區”
????? 9.寫入到WAV文件?
總結
以上是生活随笔為你收集整理的波形捕捉:(1)枚举捕捉设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速配置MPLS ×××
- 下一篇: 压缩与反压缩之 COMPRESS 与 E