[openal] Incorrect Device Names

Chris Robinson chris.kcat at gmail.com
Fri Sep 2 06:09:14 EDT 2016


On 09/01/2016 09:00 PM, Tommy Scott wrote:
> I wanted to make one more comment regarding this. Technically, OpenAL
> Soft is implementing this incorrectly according to the OpenAL
> Programmer's Guide. In there it states the following:
>
> ALC_DEVICE_SPECIFIER will return the name of the specified output device
> if a pointer is supplied
>
> And furthermore:
>
>          Checking the current device name
> The developer can check to see the name of the device that was actually
> opened using the function call alcGetString with a pointer to an open
> device and the name
> “ALC_DEVICE_SPECIFIER”.
>
> ...
>
> And this is exactly how sample code is used provided in the original
> OpenAL SDK. So this should give the full device name, not just some
> driver specifier. I think that changing this behavior was not a good
> thing. Perhaps a different enumeration should be used for just getting
> the driver specifier.

Even though I agree ALC_DEVICE_SPECIFIER should return the actual device 
name(s) with a separate enumeration for listing drivers, that's not how 
implementations work. Before OpenAL Soft was even thought of, Creative's 
wrapper was already returning the basic "Generic Software" and "Generic 
Hardware" driver names through ALC_DEVICE_SPECIFIER, with the individual 
device names coming from either device-specific drivers or through 
ALC_ALL_DEVICES_SPECIFIER.

The ALC_ENUMERATE_ALL_EXT extension 
<https://icculus.org/alextreg/wiki/ALC_ENUMERATE_ALL_EXT> was made 
specifically to be able to enumerate the individual devices instead of 
the driver names. If I changed this for OpenAL Soft, making 
ALC_DEVICE_SPECIFIER return the full name, it would create an 
inconsistency with other implementations.


More information about the openal mailing list