我正在寻找一些替代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链接到展示双缓冲的文章。 –