audio: Remove the minimum device spec.
I don't want to risk this change with 3.4.0 about to ship, but I'm now wondering if we should abandon the minimum spec requirement entirely and just reopen the physical device if something comes along later and wants a better spec...the lower-spec thing would just keep on with its audio stream making up the difference and we could send format-change events in case they care. The minimum spec stuff comes from a time in the design phase where we didn't have this event at all, audio streams weren't as robust, and I didn't want to risk the reopening failing and ruining everything...but maybe this is the correct way forward.
...also if we start supporting "device streams" on platforms that support this concept--of which WASAPI is one of them--it makes no sense to have a minimum, since every stream can have its own format. But that's future stuff, too.
Originally posted by @icculus in #14426
This is likely to become three tasks before we're done:
- Remove the minimum spec, close and reopen the device on the fly if something wants a better format later. This is not hard, I think; it's just a risk we've been avoiding in case the operating system/hardware wigs out. But we can play with this in the 3.6.0 era for sure.
- Remove SDL_HINT_AUDIO_ENFORCE_MINIMUM_SPEC, which is going in for 3.4.0. Basically just change the docs to "this used to do something, now it's ignored." This covers the edge case until other tasks are complete.
- Implement device streams (multiple separate opens of the same physical device on platforms that support it). This ties in with audio "roles" discussed elsewhere. This will be significantly more effort, since some fundamental assumptions in SDL_audio.c need to change, we need to have a path to handle platforms that support this and platforms that don't, and a bunch of backends will need updating. It's a big undertaking, but it might still be appropriate for 3.6.0, to be clear. If we start on this, we'll make a new issue, but I'm noting it here so the thoughts aren't lost.