This allows to use DLLOVERRIDES with native DLLs, making it more convenient for testing and debugging. This will also makes it possible to create an alternative media source implementation with a different backend without breaking the current one.
--
v2: mfmp4srcsnk: Register the MP3 and MPEG4 sink factory classes.
mfasfsrcsnk: Register the Asf Byte Stream Handler class.
mfmp4srcsnk: Register the MPEG4 Byte Stream Handler class.
mfsrcsnk: Register the WAV Byte Stream Handler class.
mfsrcsnk: Register the AVI Byte Stream Handler class.
mfsrcsnk: Refactor sink class factory helpers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6362
This is based on work done by Andrew Eikum. It has been in some form in Proton for the last 4 years.
If server's sampling rate is not 48kHz **DOOM Eternal** will try to set it 48kHz for the streams using the implemented interface. There's a whole class of audio devices that use 44.1kHz sampling rate and at least PulseAudio / PipeWire tends to inherit the value from the hardware to avoid resampling. The value can also be overridden by the user via the audio server's config files.
In such cases, if the interface is not present or stubbed, this results in **audio underruns and noticeable crackling**.
It's easy to test with pipewire-pulse:
```
$ cat /etc/pipewire/pipewire.conf.d/sample-rate.conf
context.properties = {
default.clock.rate = 41100
}
```
With PulseAudio this should be doable via setting `default-sample-rate = 41100` in `/etc/pulse/daemon.conf`.
--
v9: winepulse.drv: Implement set_sample_rate.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5585