[Openal-devel] ALC_ENUMERATE_ALL_EXT and pluggable sound devices
Guilherme Balena Versiani
guibv at comunip.com.br
Wed Sep 16 11:43:54 PDT 2009
Day by day, pluggable devices become even more popular. They are cheap
and very attractive for mobile users. Some of pluggable USB sound
devices have good quality. For this reason, it is not suitable anymore
to be obliged to restart an application (or a game) after connecting a
device to be able to use it... And I think that ALC_ENUMERATE_ALL_EXT
extension should reflect devices changes of the system.
Regarding the support of pluggable devices, I tried to prefix the
following strings with the name of an USB sound device, respectively,
"X-Fi on", "Audigy on", "Generic Hardware on", "Generic Software on",
"DirectSound3D on", "DirectSound on", and "MMSYSTEM on", then calling
alcOpenDevice a second time after the application has been started to
change the current OpenAL context to the USB sound device, but I had no
success doing that. I don't know if there is another way to overcome
A second problem was that I could't list the current connected USB
device by using ALC_ALL_DEVICES_SPECIFIER. Inspecting some OpenAL code
in SVN (specifically the Windows Router code), I discovered that the
variables g_pDeviceList, g_pCaptureDeviceList and g_pAllDevicesList are
initialized only once, in the occurrence of calling opening functions
like alcOpenDevice (see the function BuildDeviceList). I personally
tried to change the code to force a reinitialization of the structures
every time the function BuildDeviceList was called, but I had no success
when trying to select them afterwards (the device was listed, but I
couldn't use it; the alcOpenDevice issued error opening the device).
Do you see any solution for this in the OpenAL roadmap? Or this
"feature" should be implemented elsewhere?
-- Guilherme Balena Versiani.
More information about the Openal-devel