Separating current command looks okay to me, but stopping the session on CMD_END is causing problems by sending MESessionStopped(MF_E_INVALIDREQUEST). You can see this with attached mfplay program, that's using EVR internally. My original idea for CMD_END was to use it as a marker in commands queue that would block pending commands, allowing for end-of-presentation transitions to complete properly. For me with this MR it's still at SESSION_STATE_STOPPING_SINKS when session_stop() is called. Note that you need !608 to use this program.
P.S. please rename requests_callback to sa_ready_callback or something similar, it's about checking for pending samples, and not about making new requests.
[MFPlayer.exe](/uploads/bd4e0e1f11666eaf435a6ad54045655e/MFPlayer.exe)