Discussion:
OpenAL/DirectSound3D issue on Realtek/Intel HD
a***@binarybydesign.net
2005-03-24 10:51:22 UTC
Permalink
Hi all,

I've encountered an issue which appears to show up on Intel/Realtek HD Audio
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 this
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 below.

I'm not sure whether this is a driver issue for these cards or a possible
problem with how OpenAL allocates buffers, The hope is that someone will
provide some explanation.

With a view to solve the immediate problem:

Forcing "DirectSound" as the OpenAL "Device" works, however it is something I'm
loath to do this since it would mean that people would lose the benefit of
using DirectSound3D when it does work for them.

It would be helpful to identify the underlying device being used by
DirectSound3D. Is that possible with the OpenAL API?

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?

BTW, I have tested other soundcards - Creative SB PCI512, SB Audigy & a Soundmax
- and have not encountered such a problem. In all cases I have installed the
latest DirectX (9.0b) and the latest OpenAL installer (1.2.8).

Cheers

--
Andrew Baker

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
Garin Hiebert
2005-03-24 16:54:09 UTC
Permalink
Post by a***@binarybydesign.net
I've encountered an issue which appears to show up on Intel/Realtek HD Audio
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 this
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 below.
I'm not sure whether this is a driver issue for these cards or a possible
problem with how OpenAL allocates buffers, The hope is that someone will
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
that limit.)
Post by a***@binarybydesign.net
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
panel).
Post by a***@binarybydesign.net
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
GetMaxNum3DMonoBuffers.


Garin
a***@binarybydesign.net
2005-03-24 17:29:35 UTC
Permalink
Post by Garin Hiebert
Hopefully when you are referring to a "set threshold of buffers" you
actually mean OpenAL sources ... [SNIP]
Yes, I did mean sources...
Post by Garin Hiebert
Post by a***@binarybydesign.net
It would be helpful to identify the underlying device being used by
DirectSound3D. Is that possible with the OpenAL API?
Not within the API... [SNIP]
Shame. It would be handy - certain in the case of workarounds - to have that
information. Its not uncommon in OpenGL to use that to detect problem cards and
the dreaded microsoft software renderer.
Post by Garin Hiebert
Post by a***@binarybydesign.net
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
GetMaxNum3DMonoBuffers.
OK. Thanks for you help.

--
Andrew Baker

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

Loading...