On Wed Sep 4 04:21:27 2024 +0000, Brendan McGrath wrote:
The media type is set, but then the game clears it when `IMFTopologyServiceLookupClient::ReleaseServicePointers` is called. We are calling `ReleaseServicePointers` as a result of setting the presentation clock. The MEError is passed to the application, I guess so it has some idea that an error occurred. The game I was looking at did not seem to use it though. I tried those errors on the `IMFStreamSink::ProcessSample` doc page, and some don't send a message to the application at all. In all cases however, a `MFVP_MESSAGE_ENDSTREAMING` message is sent to the presenter. The errors that didn't generate a message to the application were:
- MF_E_INVALID_STATE_TRANSITION;
- MF_E_INVALIDREQUEST;
- MF_E_NO_CLOCK;
- MF_E_SHUTDOWN; and
- MF_E_STREAMSINK_REMOVED
All the rest send an MEError (including some random error codes I tried, so the list above seem to be exceptions). I'll now try the other presenter methods with MF_E_TRANSFORM_TYPE_NOT_SET and see if any others enter a loop.
I could only get it to loop if I returned `MF_E_TRANSFORM_TYPE_NOT_SET` on `IMFVideoPresenter::ProcessMessage` with either `MFVP_MESSAGE_INVALIDATEMEDIATYPE` or `MFVP_MESSAGE_PROCESSINPUTNOTIFY`.