我正在尋找一些替代pulseaudio的windows。 linux下有非常簡單的方式來輸出原始聲音(帶的PulseAudio):winapi音頻輸出
pa_simple_write(pulse, data, bufferSize, &error);
這是完美的工作與小緩衝區,我發在循環運行。
在windows下我用這樣的:
void writeAudioBlock(HWAVEOUT hWaveOut, LPSTR block, DWORD size)
{
WAVEHDR header;
ZeroMemory(&header, sizeof(WAVEHDR));
header.dwBufferLength = size;
header.lpData = block;
waveOutPrepareHeader(hWaveOut, &header, sizeof(WAVEHDR));
ResetEvent(waveDone);
waveOutWrite(hWaveOut, &header, sizeof(WAVEHDR));
WaitForSingleObject(waveDone, INFINITE);
waveOutUnprepareHeader(
hWaveOut,
&header,
sizeof(WAVEHDR)
);
}
它的工作,但是當我送另一塊的數據我聽到片之間小的延遲。任何其他方式輸出小塊數據緩衝區聲音設備?
好文章。我已經爲比賽做了一個很大的緩衝區,但是有一些問題需要用正確的方式填充。謝謝。 – DEgITx
+1鏈接到展示雙緩衝的文章。 –