mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-22 20:34:11 +00:00
dmsynth: Implement the sink GetDesiredBufferSize method.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
a0addfe38d
commit
ec69d69f2a
|
@ -180,11 +180,22 @@ static HRESULT WINAPI IDirectMusicSynthSinkImpl_SetDirectSound(IDirectMusicSynth
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IDirectMusicSynthSinkImpl_GetDesiredBufferSize(IDirectMusicSynthSink *iface,
|
static HRESULT WINAPI IDirectMusicSynthSinkImpl_GetDesiredBufferSize(IDirectMusicSynthSink *iface,
|
||||||
DWORD *buffer_size_in_samples)
|
DWORD *size)
|
||||||
{
|
{
|
||||||
IDirectMusicSynthSinkImpl *This = impl_from_IDirectMusicSynthSink(iface);
|
IDirectMusicSynthSinkImpl *This = impl_from_IDirectMusicSynthSink(iface);
|
||||||
|
WAVEFORMATEX format;
|
||||||
|
DWORD fmtsize = sizeof(format);
|
||||||
|
|
||||||
FIXME("(%p)->(%p): stub\n", This, buffer_size_in_samples);
|
TRACE("(%p, %p)\n", This, size);
|
||||||
|
|
||||||
|
if (!size)
|
||||||
|
return E_POINTER;
|
||||||
|
if (!This->synth)
|
||||||
|
return DMUS_E_SYNTHNOTCONFIGURED;
|
||||||
|
|
||||||
|
if (FAILED(IDirectMusicSynth_GetFormat(This->synth, &format, &fmtsize)))
|
||||||
|
return E_UNEXPECTED;
|
||||||
|
*size = format.nSamplesPerSec * format.nChannels * 4;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,6 +149,8 @@ static void test_dmsynth(void)
|
||||||
/* Synth isn't fully initialized yet */
|
/* Synth isn't fully initialized yet */
|
||||||
hr = IDirectMusicSynth_Activate(dmsynth, TRUE);
|
hr = IDirectMusicSynth_Activate(dmsynth, TRUE);
|
||||||
ok(hr == DMUS_E_NOSYNTHSINK, "IDirectMusicSynth_Activate returned: %#lx\n", hr);
|
ok(hr == DMUS_E_NOSYNTHSINK, "IDirectMusicSynth_Activate returned: %#lx\n", hr);
|
||||||
|
hr = IDirectMusicSynthSink_GetDesiredBufferSize(dmsynth_sink, &size);
|
||||||
|
ok(hr == DMUS_E_SYNTHNOTCONFIGURED, "IDirectMusicSynthSink_GetDesiredBufferSize returned: %#lx\n", hr);
|
||||||
|
|
||||||
/* Open / Close */
|
/* Open / Close */
|
||||||
hr = IDirectMusicSynth_Open(dmsynth, NULL);
|
hr = IDirectMusicSynth_Open(dmsynth, NULL);
|
||||||
|
@ -274,6 +276,28 @@ static void test_dmsynth(void)
|
||||||
hr = IDirectMusicSynth_GetFormat(dmsynth, &format, &size);
|
hr = IDirectMusicSynth_GetFormat(dmsynth, &format, &size);
|
||||||
ok(hr == S_OK, "GetFormat failed: %#lx\n", hr);
|
ok(hr == S_OK, "GetFormat failed: %#lx\n", hr);
|
||||||
ok(size == sizeof(format), "GetFormat size mismatch, got %ld\n", size);
|
ok(size == sizeof(format), "GetFormat size mismatch, got %ld\n", size);
|
||||||
|
IDirectMusicSynth_Close(dmsynth);
|
||||||
|
|
||||||
|
/* GetDesiredBufferSize */
|
||||||
|
hr = IDirectMusicSynthSink_GetDesiredBufferSize(dmsynth_sink, NULL);
|
||||||
|
ok(hr == E_POINTER, "IDirectMusicSynthSink_GetDesiredBufferSize returned: %#lx\n", hr);
|
||||||
|
hr = IDirectMusicSynthSink_GetDesiredBufferSize(dmsynth_sink, &size);
|
||||||
|
ok(hr == E_UNEXPECTED, "IDirectMusicSynthSink_GetDesiredBufferSize returned: %#lx\n", hr);
|
||||||
|
params.dwValidParams = 0;
|
||||||
|
hr = IDirectMusicSynth_Open(dmsynth, ¶ms);
|
||||||
|
ok(hr == S_OK, "Open failed: %#lx\n", hr);
|
||||||
|
hr = IDirectMusicSynthSink_GetDesiredBufferSize(dmsynth_sink, &size);
|
||||||
|
ok(hr == S_OK, "IDirectMusicSynthSink_GetDesiredBufferSize returned: %#lx\n", hr);
|
||||||
|
ok(size == params.dwSampleRate * params.dwAudioChannels * 4, "size: %ld\n", size);
|
||||||
|
IDirectMusicSynth_Close(dmsynth);
|
||||||
|
params.dwValidParams = DMUS_PORTPARAMS_AUDIOCHANNELS;
|
||||||
|
params.dwAudioChannels = 1;
|
||||||
|
hr = IDirectMusicSynth_Open(dmsynth, ¶ms);
|
||||||
|
ok(hr == S_OK, "Open failed: %#lx\n", hr);
|
||||||
|
hr = IDirectMusicSynthSink_GetDesiredBufferSize(dmsynth_sink, &size);
|
||||||
|
ok(hr == S_OK, "IDirectMusicSynthSink_GetDesiredBufferSize returned: %#lx\n", hr);
|
||||||
|
ok(size == params.dwSampleRate * params.dwAudioChannels * 4, "size: %ld\n", size);
|
||||||
|
IDirectMusicSynth_Close(dmsynth);
|
||||||
|
|
||||||
if (control_synth)
|
if (control_synth)
|
||||||
IDirectMusicSynth_Release(control_synth);
|
IDirectMusicSynth_Release(control_synth);
|
||||||
|
|
Loading…
Reference in a new issue