I've created https://gitlab.winehq.org/wine/wine/-/merge_requests/9693 with a couple of adjustments. Mainly I changed the async sample requests to update pending_thin directly, removing the extra async callback when thinning mode gets updated on sample request. I also removed the thinning update on EOS, it doesn't seem right to me and I think this is just a side effect of thinning mode getting updated whenever samples are skipped. The tests are still passing as before with my changes (with GStreamer media source disabled). I then moved the stream thin updates out of the filter function, I think it makes it a bit clearer that the value is being latched until specific events occur (sample gets skipped, or keyframe gets sent). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8505#note_124895