OpenAL Soft 1.15 released!

Chris Robinson <[email protected]> Tue, 04 Dec 2012 16:47:43 -0800
Newsgroups gmane.comp.lib.openal.devel,gmane.comp.lib.openal
Message-ID <[email protected]>
Meant to have this out yesterday, but some last-minute fix-ups snuck in.

http://kcat.strangesoft.net/openal.html

This release has quite a few under-the-hood changes, particularly for 
the mixer, which should hopefully help performance. It also adds 
SSE-based mixing functions.

PulseAudio will attempt to spawn a server by default, now that it won't 
risk conflicting with the ALSA backend. It also has an added option to 
allow streams to move between devices (this is, unfortunately, disabled 
by default since the ALCdevice specifier doesn't get updated to reflect 
the move; so only enable it when you're aware of that potential issue).

ALSA capture was improved as well, to avoid an extra ring buffer if the 
requested size can be handled by the device.

Bugs with OSS enumeration and DirectSound float32 output have been fixed.

The new AL_SOFT_source_latency[1] extension is implemented. The 
PulseAudio, ALSA, and MMDevAPI backends currently provide proper latency 
information.

The pkg-config file (openal.pc) had its CFLAGS updated so code can 
include "al.h", "alc.h", etc, without the AL/ prefix, for compatibility 
with Windows and CMake's FindOpenAL.cmake module.

The sample config file is now installed by default, and placed in the 
{prefix}/share/openal directory instead of /etc/openal (note this does 
not affect where it looks for the config files).

The binary package includes Win64 binaries this time around, too. The 
binaries were built with the MinGW-W64 cross-compiler, using GCC 4.7.2. 
Be aware, though, I haven't been able to personally test them.

[1]
  http://kcat.strangesoft.net/openal-extensions/SOFT_source_latency.txt


The current agenda for future updates is to (hopefully) finally get the 
listener matrix extension done up. Also a new extension to allow EFX 
effects to be chained together, though the library still needs a bit 
more work internally to generalize mixing input/outputs. Getting the 
other backends to report latency information is planned, as is adding 
proper device enumeration for backends that lack it (OSS, Solaris, 
SoundIO, and PortAudio).

A compressor, of sorts, to prevent samples from clipping has also been 
requested a few times recently, so that's something I'll be looking 
into. Maybe pair it up with being able to specify source priorities. 
That would also go well with allowing unlimited sources, as 
lower-priority sources could be skipped when too many are played at once.

No doubt some other things will get my interest to toy with. I've also 
probably forgotten something.


Thanks for looking! :) Comments and questions and such are welcome.
- Chris