@rbernon I updated the MR to add the additional tests and conditions you mentioned & refactored the code to make them pass. I also added a test for thin mode getting updated at end of stream. I've also started tracking winegstreamer and winedmo source progress separately, I think this is useful because the amount of todos to remove to pass correctly with winedmo has become non-trivial. Hence the todo_gstreamer/todo_winedmo stuff. If that's not wanted I can remove it again. The problem I have right now is: the sequence of changing the rate in between sample requests and expecting thin mode to only be updated when another sample is requested afterwards fails on wine most of the time. It is not deterministic, the async SetRate command can just finish before the next RequestSample call queues anything. The tests also sometimes fail on windows (at a rate of roughly 1 in 50). I'm unsure how to make wine's implementation more likely to pass. Ignoring logs using `WINEDEBUG=-mfplat` seems to make it more likely to pass. Moving the SetRate call to happen after the six RequestSample calls makes it pass reliably. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8505#note_124264