RenderExclusiveEventDriven
此範例應用程式會使用核心音訊 API,將音訊數據轉譯為使用者指定的輸出裝置。 此範例示範以獨佔模式轉譯用戶端的事件驅動緩衝處理。 針對獨佔模式數據流,用戶端會與音訊裝置共用端點緩衝區。
本主題包含下列各節。
描述
此範例示範下列功能。
- 多媒體裝置列舉和選取的MMDevice API 。
- 適用於串流管理作業的 WASAPI。
需求
Products | 版本 |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
下載範例
此範例可在下列位置取得。
Location | 路徑/URL |
---|---|
Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveEventDriven\... |
建置範例
若要建置 RenderExclusiveEventDriven 範例,請使用下列步驟:
- 開啟 Windows SDK 的 CMD 殼層,並變更為 RenderExclusiveEventDriven 範例目錄。
- 在 RenderExclusiveEventDriven 目錄中執行 命令
start WASAPIRenderExclusiveEventDriven.sln
,以在 Visual Studio 視窗中開啟 WASAPIRenderExclusiveEventDriven 專案。 - 從視窗中,選取 [ 偵錯 ] 或 [發行 方案組態],從功能表欄選取 [建 置] 功能表,然後選取 [ 建 置] 選項。 如果您未從 SDK 的 CMD 殼層開啟 Visual Studio,Visual Studio 將無法存取 SDK 建置環境。 在此情況下,除非您明確設定項目檔 WASAPIRenderExclusiveEventDriven.vcproj 中使用的環境變數 MSSdk,否則不會建置此範例。
執行範例
如果您成功建置示範應用程式,就會產生可執行檔WASAPIRenderExclusiveEventDriven.exe。 若要執行它,請在命令視窗中輸入 WASAPIRenderExclusiveEventDriven
,後面接著必要或選擇性自變數。 下列範例示範如何在預設多媒體裝置上指定播放持續時間來執行範例。
WASAPIRenderExclusiveEventDriven.exe -d 20 -multimedia
下表顯示自變數。
Argument | 描述 |
---|---|
-? | 顯示說明。 |
-h | 顯示說明。 |
-f | Hz 中的正弦波頻率。 |
-l | 以毫秒為單位的音訊轉譯延遲。 |
-D | 以秒為單位的正弦波持續時間。 |
-m | 停用 MMCSS 的使用。 |
-安慰 | 使用預設主控台裝置。 |
-通信 | 使用預設通訊裝置。 |
-多媒體 | 使用預設多媒體裝置。 |
-端點 | 使用參數值中指定的端點標識碼。 |
如果應用程式在沒有自變數的情況下執行,它會列舉可用的裝置,並提示使用者選取轉譯會話的裝置。 在使用者指定裝置之後,應用程式會在 440 Hz 轉譯正弦波 10 秒。 您可以藉由指定 -f 和 -d 參數值來修改這些值。
RenderExclusiveEventDriven 範例示範事件驅動緩衝。 此範例示範如何:
- 具現化音訊用戶端、將它設定為以獨佔模式執行,並在呼叫 IAudioClient::Initialize 中設定AUDCLNT_STREAMFLAGS_EVENTCALLBACK旗標來啟用事件驅動緩衝。
- 藉由呼叫 IAudioClient::SetEventHandle 方法,將用戶端與準備好轉譯的範例產生關聯。
- 建立轉譯線程以處理來自音訊引擎的範例。
- 在傳送緩衝區至裝置之前,請先在128位元組界限上正確對齊緩衝區。 這是藉由調整引擎的週期性來完成。
- 檢查裝置端點的混合格式,以判斷是否可以轉譯範例。 如果裝置不支援混合格式,數據會轉換成 PCM。
- 處理數據流切換。
轉譯會話開始並啟動數據流之後,音訊引擎會發出訊號,以在每次緩衝區準備好供客戶端處理時通知用戶端。 音訊數據也可以在定時器驅動循環中處理。 此模式會在 RenderExclusiveTimerDriven 範例中示範。
如需轉譯數據流的詳細資訊,請參閱 轉譯數據流。
相關主題