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.