diff --git a/dll/directx/wine/dsound/capture.c b/dll/directx/wine/dsound/capture.c index b8df4f5248..35533de080 100644 --- a/dll/directx/wine/dsound/capture.c +++ b/dll/directx/wine/dsound/capture.c @@ -846,6 +846,12 @@ static HRESULT IDirectSoundCaptureBufferImpl_Create( wfex->nAvgBytesPerSec, wfex->nBlockAlign, wfex->wBitsPerSample, wfex->cbSize); + /* Do some sanity checks for 'recording' SamplesPerSec value */ + if (wfex->nSamplesPerSec > 100000) + wfex->nSamplesPerSec = 100000; + if (wfex->nSamplesPerSec < 5000) + wfex->nSamplesPerSec = 5000; + device->pwfx = DSOUND_CopyFormat(wfex); if ( device->pwfx == NULL ) { *ppobj = NULL; diff --git a/sdk/lib/drivers/sound/mmebuddy/wave/widMessage.c b/sdk/lib/drivers/sound/mmebuddy/wave/widMessage.c index 81fd344a41..c2e8363a23 100644 --- a/sdk/lib/drivers/sound/mmebuddy/wave/widMessage.c +++ b/sdk/lib/drivers/sound/mmebuddy/wave/widMessage.c @@ -61,6 +61,14 @@ widMessage( } case WIDM_OPEN : { + + /* Do sanity checks for 'recording' SamplesPerSec value */ + LPWAVEOPENDESC OpenParameters = (LPWAVEOPENDESC)Parameter1; + if (OpenParameters->lpFormat->nSamplesPerSec > 100000) + OpenParameters->lpFormat->nSamplesPerSec = 100000; + if (OpenParameters->lpFormat->nSamplesPerSec < 5000) + OpenParameters->lpFormat->nSamplesPerSec = 5000; + Result = MmeOpenDevice(WAVE_IN_DEVICE_TYPE, DeviceId, (LPWAVEOPENDESC) Parameter1,