[openal] number of maximum sources. was: distance model questions
Chris Robinson
chris.kcat at gmail.com
Thu Jul 30 06:29:39 EDT 2015
On 07/29/2015 11:55 PM, Victorious wrote:
> How was the limit of 255 mono and 1 stereo source chosen? Also, I'd
> like to increase this for stereo sources e.g 1 stereo source for
> background music, another stereo source for environmental ambient
> sounds.
You can request a specific number of stereo sources during context creation.
ALCint attr[3] = {
ALC_STEREO_SOURCES, 2,
0 /* end-of-list */
};
context = alcCreateContext(device, attr);
For OpenAL Soft, this will result in a "limit" of 254 mono sources and 2
stereo sources. Though these are only soft limits... OpenAL Soft
ultimately doesn't care how many non-mono sources you play; as long as
you have a source ID generated, you can play something with it. But
other implementations may reduce the number of sources you can play for
each stereo source playing above the specified limit.
Personally, I'd like to see these separate mono/stereo source limits
removed. I understand why it exists (certain implementations have a hard
limit on the number of simultaneous voices, particularly hardware, and a
single source doesn't necessarily map to a single voice, so increasing
the stereo source count may take away extra mono sources, and so on),
but it's extremely clunky because an app doesn't necessarily know how
many stereo sources they'll play at once, and 4+ channel sources aren't
accounted for at all. There has to be a better way to handle the issue.
As for why there's the 256 (255+1) limit with OpenAL Soft, it's partly a
hold-over (IIRC, that's what both Creative's software driver and the old
SI had), but also partly precautionary (I remember certain old tutorials
suggesting that you could generate sources in a loop and just stop when
it fails to create any more; if there was no source limit, this would
cause such an app to lock up while it eats up all the system memory).
There are things I could do to remove the limit without risking poorly
programmed apps breaking, it would just require interested apps to be a
bit proactive.
More information about the openal
mailing list