Added X-Fi check and convert surround FLOAT to SHORT when it is detected #3024
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Follow up from https://bugs.dolphin-emu.org/issues/8711
The OpenAL backend wasn't working on hardware based OpenAL cards (basically only the X-Fi), stereo mode generated buffer queue errors and never played anything, and surround mode was very loud with lots of clipping.
This happens because the X-Fi doesn't support float point operation, only fixed point (even though the drivers reports that it supports).
I added a check to detect a X-Fi, and when it does it converts float to short.
Stereo is perfect now (I used the code that was already there), but for some reason on surround there is some clipping (and this clipping happens even if I force short mode with OpenAL Soft).
I couldn't find why this happens, sadly, but now it is usable.