Looks good, thanks. I'm seeing some test failures however: https://testbot.winehq.org/JobDetails.pl?Key=144685
The timeout is probably because 100 ms just isn't enough; I'd turn that up to at least 1 second.
The Windows 11 failures are weirder. I've never seen the filter graph use IBaseFilter::FindPin() before and I don't know what it's being used for, but implementing it does make things basically work, at least.