mf: Restart transforms and sinks on seek.
This MR fixes seek in VRChat by copying the sequence of flushes/stop/starts that Windows does.
The order on Windows is:
- Stop sources;
- Flush MFTs;
- Start sources;
- Request output down the chain of sink inputs;
- Flush sinks; and
- Start the clock
This takes place whether we pause before we seek or seek without pause.
Changes in version 2:
- Add test to see when SAR requests new samples;
- Add test to examine when step 4 from above takes place;
- Adjust the seek implementation in
mf/session.c
to match findings from the new tests; - Adjust
mfmediaengine
to reflect findings from the new tests; - Refactored
if
statement insession_start
to be aswitch
again
Edited by Brendan McGrath