Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Use a different method for HRTF mixing | Chris Robinson | 2014-11-22 | 1 | -13/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | This new method mixes sources normally into a 14-channel buffer with the channels placed all around the listener. HRTF is then applied to the channels given their positions and written to a 2-channel buffer, which gets written out to the device. This method has the benefit that HRTF processing becomes more scalable. The costly HRTF filters are applied to the 14-channel buffer after the mix is done, turning it into a post-process with a fixed overhead. Mixing sources is done with normal non-HRTF methods, so increasing the number of playing sources only incurs normal mixing costs. Another benefit is that it improves B-Format playback since the soundfield gets mixed into speakers covering all three dimensions, which then get filtered based on their locations. The main downside to this is that the spatial resolution of the HRTF dataset does not play a big role anymore. However, the hope is that with ambisonics- based panning, the perceptual position of panned sounds will still be good. It is also an option to increase the number of virtual channels for systems that can handle it, or maybe even decrease it for weaker systems. | ||||
* | Support B-Format source rotation with AL_ORIENTATION | Chris Robinson | 2014-10-31 | 1 | -7/+99 |
| | |||||
* | Rename the source's Orientation to Direction | Chris Robinson | 2014-10-31 | 1 | -9/+9 |
| | |||||
* | Rename activesource to voice | Chris Robinson | 2014-08-21 | 1 | -34/+33 |
| | |||||
* | Use an array of objects for active sources instead of pointers | Chris Robinson | 2014-08-21 | 1 | -43/+32 |
| | |||||
* | Use a NULL source for inactive activesources | Chris Robinson | 2014-08-21 | 1 | -25/+29 |
| | | | | Also only access the activesource's source field once per update. | ||||
* | Update COPYING to the latest ↵ | François Cami | 2014-08-18 | 1 | -2/+2 |
| | | | | https://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt to fix the FSF' address Fix the FSF' address in the source | ||||
* | Fix some lock ordering to avoid potential deadlocks | Chris Robinson | 2014-08-03 | 1 | -8/+8 |
| | |||||
* | Use an ATOMIC_INIT macro instead of ATOMIC_LOAD_UNSAFE | Chris Robinson | 2014-08-03 | 1 | -3/+3 |
| | |||||
* | Make the source's buffer queue head and current queue item atomic | Chris Robinson | 2014-07-31 | 1 | -55/+67 |
| | |||||
* | Always set the active source's update method | Chris Robinson | 2014-07-26 | 1 | -5/+7 |
| | | | | | | | If the source is stopped, changes its buffer, then played again quickly, the source will never be removed from the active source list causing the update method to remain as it was. If the buffer was changed between mono and multi- channel, this causes it to use the wrong method. | ||||
* | Explicitly pass the address of atomics and parameters that can be modified | Chris Robinson | 2014-07-26 | 1 | -27/+27 |
| | |||||
* | Add macros for generic atomic functionality | Chris Robinson | 2014-07-22 | 1 | -27/+27 |
| | |||||
* | Add a source radius property that determines the directionality of a sound | Chris Robinson | 2014-07-11 | 1 | -0/+2 |
| | | | | | | | | | At 0 distance from the listener, the sound is omni-directional. As the source and listener become 'radius' units apart, the sound becomes more directional. With HRTF, an omni-directional sound is handled using 0-delay, pass-through filter coefficients, which is blended with the real delay and coefficients as needed to become more directional. | ||||
* | Avoid aliasing an int array | Chris Robinson | 2014-07-05 | 1 | -4/+4 |
| | |||||
* | Add an option to get the length of a source's full queue | Chris Robinson | 2014-05-25 | 1 | -0/+95 |
| | | | | | This simplifies keeping track how much a source has buffered in its queue, which reduces a bunch of unnecessary book keeping the app would have to do. | ||||
* | Use the first non-0-length buffer when starting a source | Chris Robinson | 2014-05-22 | 1 | -1/+1 |
| | |||||
* | Apply high-pass source filters as needed | Chris Robinson | 2014-05-17 | 1 | -0/+12 |
| | |||||
* | Add a couple asserts to ensure a proper buffer | Chris Robinson | 2014-05-14 | 1 | -0/+3 |
| | | | | | | It should not be possible for a playing or paused source to not have a valid buffer, but Clang's static analyzer doesn't know that. Hopefully an assert will convince it. | ||||
* | Make RefCount a non-integer type | Chris Robinson | 2014-05-14 | 1 | -3/+3 |
| | | | | | It should only be accessed through the appropriate functions to ensure proper atomicity. | ||||
* | Add HF Reference as a filter property | Chris Robinson | 2014-05-14 | 1 | -0/+4 |
| | |||||
* | Make LOWPASSFREQREF a float value | Chris Robinson | 2014-05-11 | 1 | -2/+2 |
| | |||||
* | Store the filter reference frequency in the source | Chris Robinson | 2014-05-11 | 1 | -0/+2 |
| | |||||
* | Avoid locking the mixer when unqueueing buffers | Chris Robinson | 2014-05-11 | 1 | -4/+16 |
| | |||||
* | Avoid accessing the source's buffer queue head multiple times | Chris Robinson | 2014-05-11 | 1 | -17/+16 |
| | |||||
* | Use a struct to store the source's direct gain/gainhf properties | Chris Robinson | 2014-05-11 | 1 | -6/+6 |
| | |||||
* | Avoid locking the mixer while queueing buffers onto a source. | Chris Robinson | 2014-05-10 | 1 | -24/+34 |
| | |||||
* | Add a missing pointer init | Chris Robinson | 2014-05-10 | 1 | -3/+3 |
| | |||||
* | Explicit init the source queue and current_buffer pointers | Chris Robinson | 2014-05-10 | 1 | -0/+3 |
| | |||||
* | Use a RWLock to help protect the source's buffer queue | Chris Robinson | 2014-05-10 | 1 | -35/+56 |
| | | | | | In some instances this allows to to remove the device/mixer lock, or reduce how long it's held. | ||||
* | Don't explicitly store the BuffersInQueue | Chris Robinson | 2014-05-10 | 1 | -9/+14 |
| | |||||
* | Store the current buffer queue item, rather than played buffer count | Chris Robinson | 2014-05-10 | 1 | -77/+63 |
| | |||||
* | Better pack HRTF mixing properties | Chris Robinson | 2014-05-03 | 1 | -3/+3 |
| | |||||
* | Add gain stepping to the send mixers | Chris Robinson | 2014-03-23 | 1 | -1/+9 |
| | |||||
* | Move the step counter and moving flag to DirectParams | Chris Robinson | 2014-03-23 | 1 | -2/+2 |
| | |||||
* | Store the HrtfState directly in the DirectParams | Chris Robinson | 2014-03-23 | 1 | -25/+15 |
| | |||||
* | Store some source mixing parameters in the active source struct | Chris Robinson | 2014-03-19 | 1 | -16/+19 |
| | |||||
* | Use a separate struct for tracking active sources | Chris Robinson | 2014-03-18 | 1 | -8/+18 |
| | |||||
* | Add an extension to support MSADPCM buffer formats | Chris Robinson | 2014-03-04 | 1 | -0/+23 |
| | |||||
* | Store the original frame size alignment in the buffer | Chris Robinson | 2014-03-03 | 1 | -4/+6 |
| | |||||
* | Fix retrieving source properties | Chris Robinson | 2013-12-09 | 1 | -6/+6 |
| | |||||
* | Use C99 inline in more places | Chris Robinson | 2013-11-04 | 1 | -0/+3 |
| | |||||
* | Rename alcGetLatency to ALCdevice_GetLatency | Chris Robinson | 2013-11-02 | 1 | -2/+2 |
| | |||||
* | Use an ALCbackend object to access playback backends | Chris Robinson | 2013-10-27 | 1 | -2/+2 |
| | | | | | | | This is the start of a backend redesign. Currently, a wrapper object is used to avoid having to redo all the backends at once, but they should slowly be converted to derive from ALCbackend instead. The ALCbackend interface can change as needed. | ||||
* | Return only true or false from the source getters and setters | Chris Robinson | 2013-10-07 | 1 | -112/+105 |
| | |||||
* | Remove al_try from alSource.c | Chris Robinson | 2013-10-07 | 1 | -325/+304 |
| | |||||
* | Use a simpler U64 macro to make 64-bit constants | Chris Robinson | 2013-10-06 | 1 | -1/+1 |
| | |||||
* | Use a separate value for the maximum buffer channels | Chris Robinson | 2013-07-23 | 1 | -1/+1 |
| | | | | | | | Unlike the device, input buffers are accessed based on channel numbers instead of enums. This means the maximum number of channels they hold depends on the number of channels any one format can have, rather than the total number of recognized channels. Currently, this is 8 for 7.1. | ||||
* | Silence some clang warnings | Chris Robinson | 2013-06-05 | 1 | -2/+2 |
| | |||||
* | Simplify al_try code | Chris Robinson | 2013-03-24 | 1 | -15/+13 |
| |