aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/alSource.c
Commit message (Collapse)AuthorAgeFilesLines
* Make the source's buffer queue a singly-linked listChris Robinson2016-01-311-30/+27
|
* Lock the source queue for writing when updating the playback offsetChris Robinson2015-10-241-8/+8
|
* Fix usage of modfChris Robinson2015-10-241-2/+2
|
* Include the fractional part with the source sample/sec offsetChris Robinson2015-10-161-17/+18
|
* Store the source's previous samples with the voiceChris Robinson2015-10-151-0/+12
| | | | | | This helps avoid different results when looping is toggled within a couple samples of the loop point, or when a processed buffer is removed while the source is only a couple samples into the next buffer.
* Properly limit the calculated source offset componentsChris Robinson2015-10-141-4/+8
|
* Shut GCC upChris Robinson2015-10-131-1/+1
|
* Properly apply fractional source offsets when a user offset is setChris Robinson2015-10-131-22/+22
|
* Move the resampler stuff to mixer.c where it's usedChris Robinson2015-10-011-15/+0
|
* Implement a 6-point sinc-lanczos filterChris Robinson2015-09-291-0/+2
|
* Replace the cubic resampler with a 4-point sinc/lanczos filterChris Robinson2015-09-271-2/+2
|
* Don't keep selecting the mixer to useChris Robinson2015-09-271-2/+0
|
* Use a single enum list for source propertiesChris Robinson2015-09-221-346/+416
|
* Handle up to 6 values with alSourcedvSOFT and alGetSourcefvChris Robinson2015-09-211-4/+4
|
* Get rid of ALCdevice_GetLatencyChris Robinson2015-09-211-2/+6
|
* Move HRTF params and state closer togetherChris Robinson2015-02-091-3/+3
|
* Use aluVector in some more placesChris Robinson2014-12-161-27/+15
|
* Partially revert "Use a different method for HRTF mixing"Chris Robinson2014-11-231-0/+11
| | | | | | | | | | | | The sound localization with virtual channel mixing was just too poor, so while it's more costly to do per-source HRTF mixing, it's unavoidable if you want good localization. This is only partially reverted because having the virtual channel is still beneficial, particularly with B-Format rendering and effect mixing which otherwise skip HRTF processing. As before, the number of virtual channels can potentially be customized, specifying more or less channels depending on the system's needs.
* Use a different method for HRTF mixingChris Robinson2014-11-221-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_ORIENTATIONChris Robinson2014-10-311-7/+99
|
* Rename the source's Orientation to DirectionChris Robinson2014-10-311-9/+9
|
* Rename activesource to voiceChris Robinson2014-08-211-34/+33
|
* Use an array of objects for active sources instead of pointersChris Robinson2014-08-211-43/+32
|
* Use a NULL source for inactive activesourcesChris Robinson2014-08-211-25/+29
| | | | Also only access the activesource's source field once per update.
* Update COPYING to the latest ↵François Cami2014-08-181-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 deadlocksChris Robinson2014-08-031-8/+8
|
* Use an ATOMIC_INIT macro instead of ATOMIC_LOAD_UNSAFEChris Robinson2014-08-031-3/+3
|
* Make the source's buffer queue head and current queue item atomicChris Robinson2014-07-311-55/+67
|
* Always set the active source's update methodChris Robinson2014-07-261-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 modifiedChris Robinson2014-07-261-27/+27
|
* Add macros for generic atomic functionalityChris Robinson2014-07-221-27/+27
|
* Add a source radius property that determines the directionality of a soundChris Robinson2014-07-111-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 arrayChris Robinson2014-07-051-4/+4
|
* Add an option to get the length of a source's full queueChris Robinson2014-05-251-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 sourceChris Robinson2014-05-221-1/+1
|
* Apply high-pass source filters as neededChris Robinson2014-05-171-0/+12
|
* Add a couple asserts to ensure a proper bufferChris Robinson2014-05-141-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 typeChris Robinson2014-05-141-3/+3
| | | | | It should only be accessed through the appropriate functions to ensure proper atomicity.
* Add HF Reference as a filter propertyChris Robinson2014-05-141-0/+4
|
* Make LOWPASSFREQREF a float valueChris Robinson2014-05-111-2/+2
|
* Store the filter reference frequency in the sourceChris Robinson2014-05-111-0/+2
|
* Avoid locking the mixer when unqueueing buffersChris Robinson2014-05-111-4/+16
|
* Avoid accessing the source's buffer queue head multiple timesChris Robinson2014-05-111-17/+16
|
* Use a struct to store the source's direct gain/gainhf propertiesChris Robinson2014-05-111-6/+6
|
* Avoid locking the mixer while queueing buffers onto a source.Chris Robinson2014-05-101-24/+34
|
* Add a missing pointer initChris Robinson2014-05-101-3/+3
|
* Explicit init the source queue and current_buffer pointersChris Robinson2014-05-101-0/+3
|
* Use a RWLock to help protect the source's buffer queueChris Robinson2014-05-101-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 BuffersInQueueChris Robinson2014-05-101-9/+14
|
* Store the current buffer queue item, rather than played buffer countChris Robinson2014-05-101-77/+63
|