私は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)
);
}
動作していますが、別のデータを送信すると、ピース間にわずかな遅延が聞こえます。データバッファの小さなチャンクをサウンドデバイスに出力する他の方法はありますか?