Emulator Issues #8711

OpenAL backend on cards with hardware OpenAL - Error queuing buffers

Added by LAGonauta about 5 years ago. Updated over 4 years ago.

% Done:


Operating system:
Issue type:
Relates to usability:
Relates to performance:
Relates to maintainability:
Regression start:
Fixed in:


Game Name?

All, tested most on Paper Mario: The Thousand-Year Door.

Game ID?

All, tested most on G8ME01.

What's the problem? Describe what went wrong in few words.

With OpenAL Soft everything works fine, but there is no sound when using Creative's OpenAL with a X-Fi Titanium.
With Dolby ProLogic II decoder the sound works, but with too much gain causing clipping. It is REALLY loud.

What did you expect to happen instead?
Sound plays, and the gain in normal when using DPLII.

What steps will reproduce the problem?
1. Need a computer with hardware OpenAL (tested on X-Fi processor)
2. Delete the OpenAL Soft from Dolphin folder
3. Play any game

Dolphin 3.5 and 3.5-367 are old versions of Dolphin that have
known issues and bugs, so don't report issues about them and test the
latest Dolphin version first.
Which versions of Dolphin did you test on?

Does using an older version of Dolphin solve your issue? If yes, which
versions of Dolphin used to work?
It worked on 3.5-1818 with some cracks on the sound (maybe the transition between buffers are not perfect). Tested on the x64 version released by skid called OpenAL-sane-defaults.
It can be downloaded from here:

What are your PC specifications? (including, but not limited to: Operating
System, CPU and GPU)
Windows 8.1 64-bit
Pentium G3220
Intel HD Graphics
4GB 1333MHz RAM

Is there any other relevant information? (e.g. logs, screenshots,
configuration files)
You can download a small sound sample here:!t89jRRiL!elb_0VyzF4_-a_dOqPt4-t-1c8biqV6d_sE7386KBU4 (CAUTION: REALLY loud)

There are three lines in the log file that shows why there is no sound without DPLII decoder:
00:20:402 OpenALStream.cpp:308 E[Audio]: Error queuing buffers: 0000a004
00:20:402 OpenALStream.cpp:308 E[Audio]: Error queuing buffers: 0000a004
00:20:402 OpenALStream.cpp:308 E[Audio]: Error queuing buffers: 0000a004

If I am not mistaken, that error is InvalidOperation and it does not show when DPLII decoder is active.

Capturar.PNG (29 KB) Capturar.PNG LAGonauta, 09/11/2015 02:55 AM
patch.txt (3.79 KB) patch.txt LAGonauta, 09/11/2015 02:09 PM
0002-Changed-some-things.patch (1.5 KB) 0002-Changed-some-things.patch LAGonauta, 09/11/2015 02:19 PM
0001-Added-X-Fi-check-and-now-Surround-FLOAT-is-converted.patch (4.05 KB) 0001-Added-X-Fi-check-and-now-Surround-FLOAT-is-converted.patch LAGonauta, 09/11/2015 02:19 PM


#2 Updated by LAGonauta almost 5 years ago


I downloaded the source code and managed to figure out the problem.
The X-Fi hardware does not support Float Point 32-bit buffers, only 16-bit or 32-bit fixed point buffers, even though its drivers reports as having support.
On OpenALStream.cpp I disabled the code to use float point on line 279 and it worked perfectly when not decoding Dolby ProLogic II. A code to force fixed point if there is “X-Fi” in the renderer name should do the trick (I could do it, but I only have C# skills and my code is never pretty)

Maybe in reality the X-Fi expects Fixed Point 32-bit when set to AL_FORMAT_51CHN32, and this is why we can hear what is happening but it is too loud.

#3 Updated by degasus almost 5 years ago

I could do it, but I only have C# skills and my code is never pretty

Try it, we're trying to be very helpful on PRs :D

#4 Updated by LAGonauta almost 5 years ago

Thanks wickmarkus86 :)
This is my first time using Git, so I have no idea how some things work... But I made a patch. How do I generate a PR?

Stereo mode now works perfectly, but on surround mode there is still some clipping (but is usable now)... I have no idea why as I used the same code to convert float to short that is used on stereo. Maybe the DPL2 decoder increases the overall volume?

#5 Updated by LAGonauta almost 5 years ago

Oops, there was some leftovers from my experiment with INT32 and now those are proper patches :)

#6 Updated by BhaaL almost 5 years ago

You need a GitHub Account to create a Pull Request. Simply hit the "Fork" Button on our repository (which creates a copy in your own space), clone from there, make your changes (preferably on a branch, not directly on master), push them and then head over to the GitHub page. It will show the new changes and let you create a Pull Request straight to the Dolphin repo.
If you need more help on that, hit us up on in #dolphin-dev.

#7 Updated by skidau over 4 years ago

  • Status changed from New to Fixed

Also available in: Atom PDF