Nikolay Sivov (@nsivov) commented about dlls/mf/scheme_handler.c:
if (FAILED(IMFByteStream_QueryInterface(*out, &IID_IMFAttributes, (void **)&attributes)))WARN("Failed to get IMFAttributes interface\n");else{if (FAILED(IMFAttributes_DeleteItem(attributes, &MF_BYTESTREAM_ORIGIN_NAME)))WARN("Failed to delete MF_BYTESTREAM_ORIGIN_NAME attribute\n");if (FAILED(IMFAttributes_SetString(attributes, &MF_BYTESTREAM_EFFECTIVE_URL, url)))WARN("Failed to set MF_BYTESTREAM_EFFECTIVE_URL attribute\n");if (FAILED(IMFAttributes_SetString(attributes, &MF_BYTESTREAM_CONTENT_TYPE, L"application/octet-stream")))WARN("Failed to set MF_BYTESTREAM_CONTENT_TYPE attribute\n");IMFAttributes_Release(attributes);}- }
- IStream_Release(stream);
- return hr;
Just release ulrmon stream right away, and return if mf stream creation failed. IMFAttributes are probably always available if you're going to use MFCreateMFByteStreamOnStream(). I don't see any value in these warnings.