Nikolay Sivov (@nsivov) commented about dlls/mf/evr.c:
} if (SUCCEEDED(IMFTransform_ProcessInput(stream->parent->mixer, stream->id, sample, 0)))
IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_PROCESSINPUTNOTIFY, 0);
{
while (hr == S_OK && (hr = IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_PROCESSINPUTNOTIFY, 0)) == MF_E_TRANSFORM_TYPE_NOT_SET)
hr = IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_INVALIDATEMEDIATYPE, 0);
}
If it works like that, sure. But could we turn "hr == S_OK" to a loop break condition, after ProcessMessage. Or simply as "if ((hr == ProcessMessage()) != S_OK) break;. I think that would be more readable and easy to follow.