dsound: Request a more exact buffer size from MMDevAPI.

This commit is contained in:
Andrew Eikum 2011-10-12 15:10:04 -05:00 committed by Alexandre Julliard
parent d0c38ece9d
commit 9d29d9f766
1 changed files with 5 additions and 2 deletions

View File

@ -84,6 +84,8 @@ static void DSOUND_RecalcPrimary(DirectSoundDevice *device)
HRESULT DSOUND_ReopenDevice(DirectSoundDevice *device, BOOL forcewave)
{
UINT prebuf_frames;
REFERENCE_TIME prebuf_rt;
HRESULT hres;
TRACE("(%p, %d)\n", device, forcewave);
@ -112,10 +114,11 @@ HRESULT DSOUND_ReopenDevice(DirectSoundDevice *device, BOOL forcewave)
return hres;
}
/* buffer size = 200 * 100000 (100 ns) = 2.0 seconds */
prebuf_frames = device->prebuf * DSOUND_fraglen(device->pwfx->nSamplesPerSec, device->pwfx->nBlockAlign) / device->pwfx->nBlockAlign;
prebuf_rt = (prebuf_frames / (double)device->pwfx->nSamplesPerSec) * 10000000;
hres = IAudioClient_Initialize(device->client,
AUDCLNT_SHAREMODE_SHARED, AUDCLNT_STREAMFLAGS_NOPERSIST,
200 * 100000, 50000, device->pwfx, NULL);
prebuf_rt, 50000, device->pwfx, NULL);
if(FAILED(hres)){
IAudioClient_Release(device->client);
device->client = NULL;