2011-03-11 62 views
1

我的代碼中有幾個waveout手柄並行播放。waveOutSetVolume忽略手柄

現在我想爲每個waveout句柄設置不同的音量。

有一個waveOutSetVolume Win32API函數:http://msdn.microsoft.com/en-us/library/ms713762%28v=vs.85%29.aspx

的問題是,它完全地忽略了手柄我發送,它設置音量所有waveout的在我的程序處理。

如何使其將音量設置爲特定的waveout手柄?

+1

這是通過設計,您傳遞給waveOutSetVolume的句柄是* device *句柄,而不是流句柄。 – 2011-03-11 09:57:56

回答

1

我猜你正在寫給同一個設備。

若要調整每個播放「流」的音量,請在將音頻樣本寫入設備之前縮放音頻樣本。

另外請記住,使用兩個設備手柄來有效地混合您的播放流是不必要的。在你的代碼中做這件事很簡單。

+0

我需要實時混合和最小的延遲。在寫入設備之前混合/改變音量,從而產生明顯的延遲。 – DxCK 2011-06-08 07:54:50

+0

您的目標延遲是多少?更改音量(通過縮放音頻採樣)不需要緩衝,因此不會增加延遲。如果你混合使用,你可以保持緩衝區大小很小,並儘量減少延遲。如果您需要絕對的最小延遲,請查看Kernel Streaming。 – Nikos 2011-06-08 13:32:49