[Openal] OpenAL/DirectSound3D issue on Realtek/Intel HD
garinh at cheesetoast.net
Thu Mar 24 08:54:09 PST 2005
> I've encountered an issue which appears to show up on Intel/Realtek HD
> Boards when using "DirectSound3D" as the OpenAL "Device". If we exceed
> a set
> threshold (I narrowed it down to 15) of buffers then any of those
> buffers over
> that limit seem to have a different volume calculation to those under
> threshold. When I say different volume calc, I mean that the final
> output vol
> is considerably louder on these buffers over this threshold than those
> I'm not sure whether this is a driver issue for these cards or a
> problem with how OpenAL allocates buffers, The hope is that someone
> provide some explanation.
This pretty much _has_ to be a driver issue, since AL creates and makes
use of DS3D buffers in a consistent way -- there is no special handling
of a subset of the DS3D buffers. The only magic number used when
running the DS3D backend is a check to make sure that DS3D can provide
at least 16 DS3D buffers -- if not the implementation falls back to DS.
Hopefully when you are referring to a "set threshold of buffers" you
actually mean OpenAL sources -- because if the behavior is changing
based on how many OpenAL buffers are being created, then all bets are
off... (That certainly shouldn't happen -- you can have up to 65535 AL
buffers, and your system should be getting awfully slow before you hit
> It would be helpful to identify the underlying device being used by
> DirectSound3D. Is that possible with the OpenAL API?
Not within the API -- you'll have to build a debug version of AL and
track this down. The code you want is in alcOpenDevice --
openal/win/Alc/ALc.c. The device being opened is the default device
(whatever is the preferred audio device on the system's audio control
> It also would be helpful to know what this threshold is, a guestimate
> would be the number of hardware channels. If that is correct, is it
> possible to
> get the number of hardware channels using the OpenAL API?
Sort of -- you just create sources until AL stops giving you sources.
With the DS3D implementation, that number will be the same as DS3D's
More information about the Openal