when disabling thinning, it probably needs to skip to the next keyframe before starting outputting samples again, to make sure the decoder can start from a clean point
But shouldn't it already be at a keyframe due to being in thinned mode before?
Changing the test a bit, it passes too with something like this
This snippet only passes if it is pasted at the beginning of the test. If it is done afterwards, the MESourceRateChanged is received before the samples from the requests that preceded it. I think if that event was sent by an async command this wouldn't really happen because the request commands would get processed first? Or perhaps this is related to async request triggering an async read (i.e. the async requests would get processed before the async rate change but the async reads afterwards)? I can consistently reproduce all your remarks about MEStreamThinMode however. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8505#note_124033