Go to file
Chris Robinson 168149ce9d Keep track of the mix count
The purpose of this is to provide a safe way to be able to "swap" resources
used by the mixer from other threads without the need to block the mixer, as
well as a way to track when mixes have occurred. The idea is two-fold:

It provides a way to safely swap resources. If the mixer were to (atomically)
get a reference to an object to access it from, another thread would be able
allocate and prepare a new object then swap the reference to it with the stored
one. The other thread would then be able to wait until (count&1) is clear,
indicating the mixer is not running, before safely freeing the old object for
the mixer to use the new one.

It also provides a way to tell if the mixer has run. With this, a thread would
be able to read multiple values, which could be altered by the mixer, without
requiring a mixer lock. Comparing the before and after counts for inequality
would signify if the mixer has (started to) run, indicating the values may be
out of sync and should try getting them again. Of course, it will still need
something like a RWLock to ensure another (non-mixer) thread doesn't try to
write to the values at the same time.

Note that because of the possibility of overflow, the counter is not reliable
as an absolute count.
2014-03-19 19:00:54 -07:00
Alc Keep track of the mix count 2014-03-19 19:00:54 -07:00
build Move the default out-of-tree build dir to build 2009-09-12 17:54:27 -07:00
cmake Add an option for FLuidSynth to handle MIDI 2013-11-28 03:08:28 -08:00
examples Handle non-native endian formats with SDL_sound 2013-06-19 22:47:17 -07:00
hrtf Move the default hrtf table to an external file 2014-02-23 21:02:11 -08:00
include/AL Finalize AL_SOFT_deferred_updates 2013-10-05 06:14:04 -07:00
OpenAL32 Keep track of the mix count 2014-03-19 19:00:54 -07:00
utils Add an option to make HRTFs with a custom head radius 2014-01-11 02:24:20 -08:00
.gitignore Add another directory to .gitignore 2014-03-17 15:20:32 -07:00
alsoftrc.sample Update config file comments 2014-03-09 00:32:57 -08:00
CMakeLists.txt Move the sample conversion routines to a separate file 2014-03-05 16:38:02 -08:00
config.h.in Use alloca for temp space decoding/encoding IMA4 blocks 2014-03-03 20:02:15 -08:00
COPYING Initial import 2007-11-13 18:02:18 -08:00
env-vars.txt Add a text file describing the available environment variables 2012-02-19 23:03:04 -08:00
hrtf.txt Move the default hrtf table to an external file 2014-02-23 21:02:11 -08:00
openal.pc.in Add the AL subdir to the list of include flags in the pkg-config file 2012-10-26 00:02:39 -07:00
README Add a bit more information to the README 2010-08-15 16:55:11 -07:00
XCompile.txt Fix CMAKE_FIND_ROOT_PATH in XCompile.txt 2011-07-13 01:31:17 -07:00

Source Install
==============

To install OpenAL Soft, use your favorite shell to go into the build/
directory, and run:

cmake ..

Assuming configuration went well, you can then build it, typically using GNU
Make (KDevelop, MSVC, and others are possible depending on your system setup
and CMake configuration).

Please Note: Double check that the appropriate backends were detected. Often,
complaints of no sound, crashing, and missing devices can be solved by making
sure the correct backends are being used. CMake's output will identify which
backends were enabled.

For most systems, you will likely want to make sure ALSA, OSS, and PulseAudio
were detected (if your target system uses them). For Windows, make sure
DirectSound was detected.


Utilities
=========

The source package comes with an informational utility, openal-info, and is
built by default. It prints out information provided by the ALC and AL sub-
systems, including discovered devices, version information, and extensions.


Configuration
=============

OpenAL Soft can be configured on a per-user and per-system basis. This allows
users and sysadmins to control information provided to applications, as well
as application-agnostic behavior of the library. See alsoftrc.sample for
available settings.


Acknowledgements
================

Special thanks go to:

Creative Labs for the original source code this is based off of.

Christopher Fitzgerald for the current reverb effect implementation, and
helping with the low-pass filter.

Christian Borss for the 3D panning code the current implementation is heavilly
based on.

Ben Davis for the idea behind the current click-removal code.