Nikolay Sivov (@nsivov) commented about dlls/mf/session.c:
} if (stream_sink)
{
IMFMediaTypeHandler *handler;
if (SUCCEEDED(hr = IMFStreamSink_GetMediaTypeHandler(stream_sink, &handler)))
{
IMFMediaType *type;
if (SUCCEEDED(hr = IMFMediaTypeHandler_GetCurrentMediaType(handler, &type)))
hr = IMFMediaTypeHandler_SetCurrentMediaType(handler, type);
for (i = 0; FAILED(hr) && SUCCEEDED(hr = IMFMediaTypeHandler_GetMediaTypeByIndex(handler, i, &type)); ++i)
This is reusing outer loop index variable, hanging for me indefinitely. With that fixed I get MF_E_NO_MORE_TYPES error with a test player from https://gitlab.winehq.org/wine/wine/-/merge_requests/607#note_6300. I'm guessing error value from EVR stream leaking through. Such streams do not report supported or current types.