【发布时间】:2012-06-05 16:52:31
【问题描述】:
我正在为 windows 寻找一些 pulseaudio 的替代品。 在 linux 下,有一种非常简单的方法可以输出原始声音(使用 pulseaudio):
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)
);
}
它正在工作,但是当我发送另一条数据时,我听到各条之间的延迟很小。还有其他方法可以将小块数据缓冲区输出到声音设备吗?
【问题讨论】:
标签: c++ winapi buffer pulseaudio