Merge pull request #305 from sveinse/feature-wasapi-glitch-fix
wasapi: Implement fix for glitching WASAPI playback in the Shared Mode
This commit is contained in:
commit
0326a6573b
1 changed files with 3 additions and 0 deletions
|
|
@ -5764,6 +5764,7 @@ PA_THREAD_FUNC ProcThreadPoll(void *param)
|
|||
// Calculate timeout for next polling attempt.
|
||||
sleep_ms_in = GetFramesSleepTime(stream->in.framesPerHostCallback / WASAPI_PACKETS_PER_INPUT_BUFFER, stream->in.wavex.Format.nSamplesPerSec);
|
||||
sleep_ms_out = GetFramesSleepTime(stream->out.framesPerBuffer, stream->out.wavex.Format.nSamplesPerSec);
|
||||
sleep_ms_out /= 2; // wait only for half of the buffer
|
||||
|
||||
// WASAPI Input packets tend to expire very easily, let's limit sleep time to 2 milliseconds
|
||||
// for all cases. Please propose better solution if any.
|
||||
|
|
@ -5776,6 +5777,7 @@ PA_THREAD_FUNC ProcThreadPoll(void *param)
|
|||
{
|
||||
//sleep_ms_in = GetFramesSleepTime((stream->bufferProcessor.framesPerUserBuffer ? stream->bufferProcessor.framesPerUserBuffer : stream->in.params.frames_per_buffer), stream->in.wavex.Format.nSamplesPerSec);
|
||||
sleep_ms_out = GetFramesSleepTime((stream->bufferProcessor.framesPerUserBuffer ? stream->bufferProcessor.framesPerUserBuffer : stream->out.params.frames_per_buffer), stream->out.wavex.Format.nSamplesPerSec);
|
||||
sleep_ms_out /= 2; // wait only for half of the buffer
|
||||
}
|
||||
|
||||
// Choose smallest
|
||||
|
|
@ -5789,6 +5791,7 @@ PA_THREAD_FUNC ProcThreadPoll(void *param)
|
|||
{
|
||||
sleep_ms_in = GetFramesSleepTimeMicroseconds(stream->in.framesPerHostCallback / WASAPI_PACKETS_PER_INPUT_BUFFER, stream->in.wavex.Format.nSamplesPerSec);
|
||||
sleep_ms_out = GetFramesSleepTimeMicroseconds((stream->bufferProcessor.framesPerUserBuffer ? stream->bufferProcessor.framesPerUserBuffer : stream->out.params.frames_per_buffer), stream->out.wavex.Format.nSamplesPerSec);
|
||||
sleep_ms_out /= 2; // wait only for half of the buffer
|
||||
|
||||
// Choose smallest
|
||||
if ((sleep_ms_in != 0) && (sleep_ms_out != 0))
|
||||
|
|
|
|||
Loading…
Reference in a new issue