amstream: Allow AMMSF_ADDDEFAULTRENDERER only with MSPID_PrimaryAudio.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2020-03-03 17:19:15 -06:00 committed by Alexandre Julliard
parent c6d436f7fd
commit 3e6eaaa2c5
2 changed files with 13 additions and 15 deletions

View File

@ -305,26 +305,21 @@ static HRESULT WINAPI multimedia_stream_AddMediaStream(IAMMultiMediaStream *ifac
if (dwFlags & AMMSF_ADDDEFAULTRENDERER)
{
if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo))
IBaseFilter *dsound_render;
if (!IsEqualGUID(PurposeId, &MSPID_PrimaryAudio))
{
/* Default renderer not supported by video stream */
WARN("AMMSF_ADDDEFAULTRENDERER requested with id %s, returning MS_E_PURPOSEID.\n", debugstr_guid(PurposeId));
return MS_E_PURPOSEID;
}
else
if (SUCCEEDED(hr = CoCreateInstance(&CLSID_DSoundRender, NULL,
CLSCTX_INPROC_SERVER, &IID_IBaseFilter, (void **)&dsound_render)))
{
IBaseFilter* dsoundrender_filter;
/* Create the default renderer for audio */
hr = CoCreateInstance(&CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER, &IID_IBaseFilter, (LPVOID*)&dsoundrender_filter);
if (SUCCEEDED(hr))
{
hr = IGraphBuilder_AddFilter(This->pFilterGraph, dsoundrender_filter, NULL);
IBaseFilter_Release(dsoundrender_filter);
}
/* No media stream created when the default renderer is used */
return hr;
hr = IGraphBuilder_AddFilter(This->pFilterGraph, dsound_render, NULL);
IBaseFilter_Release(dsound_render);
}
return hr;
}
if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo))

View File

@ -840,6 +840,9 @@ static void test_add_stream(void)
IGraphBuilder_Release(graph);
}
hr = IAMMultiMediaStream_AddMediaStream(mmstream, NULL, &test_mspid,
AMMSF_ADDDEFAULTRENDERER, NULL);
ok(hr == MS_E_PURPOSEID, "Got hr %#x.\n", hr);
hr = IAMMultiMediaStream_AddMediaStream(mmstream, NULL, &test_mspid,
AMMSF_ADDDEFAULTRENDERER, &audio_stream);
todo_wine ok(hr == E_INVALIDARG, "Got hr %#x.\n", hr);