340{
345
346 TRACE(
"mmstream %p, stream_object %p, id %s, flags %#lx, ret_stream %p.\n",
348
349 if (IMediaStreamFilter_GetMediaStream(
This->filter, PurposeId, &
stream) ==
S_OK)
350 {
351 IMediaStream_Release(
stream);
352 return MS_E_PURPOSEID;
353 }
354
357
359 {
361
362 if (ret_stream)
364
366 {
367 WARN(
"AMMSF_ADDDEFAULTRENDERER requested with id %s, returning MS_E_PURPOSEID.\n",
debugstr_guid(PurposeId));
368 return MS_E_PURPOSEID;
369 }
370
373 {
376 }
378 }
379
380 if (stream_object)
381 {
382 hr = IUnknown_QueryInterface(stream_object, &IID_IAMMediaStream, (
void **)&pStream);
384 {
386 hr = IAMMediaStream_GetInformation(pStream, &stream_id,
NULL);
388 {
390 {
393 }
394 else
395 {
397 }
398 }
399
400 IAMMediaStream_Release(pStream);
401
403 }
404 }
405
408 else if (
IsEqualGUID(PurposeId, &MSPID_PrimaryAudio))
410 else
411 return MS_E_PURPOSEID;
412
415
416 hr = IAMMediaStream_Initialize(pStream, stream_object,
dwFlags, PurposeId,
This->type);
418 {
419 IAMMediaStream_Release(pStream);
421 }
422
424 IAMMediaStream_Release(pStream);
425
427}
HRESULT audio_stream_create(IUnknown *outer, void **out)
HRESULT ddraw_stream_create(IUnknown *outer, void **out)
const GUID IID_IBaseFilter
@ AMMSF_ADDDEFAULTRENDERER
static IFilterGraph2 * create_graph(void)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define IsEqualGUID(rguid1, rguid2)