aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include/alSource.h
Commit message (Collapse)AuthorAgeFilesLines
* Provide asynchronous property updates for sourcesChris Robinson2016-05-141-23/+81
| | | | | | | | | | | | | | | | | | | | | | | | | This necessitates a change in how source updates are handled. Rather than just being able to update sources when a dependent object state is changed (e.g. a listener gain change), now all source updates must be proactively provided. Consequently, apps that do not utilize any deferring (AL_SOFT_defer_updates or alcSuspendContext/alcProcessContext) may utilize more CPU since it'll be filling out more update containers for the mixer thread to use. The upside is that there's less blocking between the app's calling thread and the mixer thread, particularly for vectors and other multi-value properties (filters and sends). Deferring behavior when used is also improved, since updates that shouldn't be applied yet are simply not provided. And when they are provided, the mixer doesn't have to ignore them, meaning the actual deferring of a context doesn't have to synchrnously force an update -- the process call will send any pending updates, which the mixer will apply even if another deferral occurs before the mixer runs, because it'll still be there waiting on the next mixer invocation. There is one slight bug introduced by this commit. When a listener change is made, or changes to multiple sources while updates are being deferred, it is possible for the mixer to run while the sources are prepping their updates, causing some of the source updates to be seen before the other. This will be fixed in short order.
* Hold the source map lock while handling itChris Robinson2016-05-101-2/+11
|
* Find a valid source buffer before updating the voiceChris Robinson2016-05-091-1/+1
|
* Implement AL_EXT_STEREO_ANGLES supportChris Robinson2016-03-251-0/+5
|
* Calculate channel gain stepping just before mixingChris Robinson2016-02-141-0/+3
|
* Make the source's buffer queue a singly-linked listChris Robinson2016-01-311-1/+0
|
* Implement a band-limited sinc resamplerChris Robinson2015-11-051-0/+2
| | | | | | | | This is essentially a 12-point sinc resampler, unless it's resampling to a rate higher than the output, at which point it will vary between 12 and 24 points and do anti-aliasing to avoid/reduce frequencies going over nyquist. Code provided by Christopher Fitzgerald.
* Use a constant value for the post-position paddingChris Robinson2015-10-151-1/+1
|
* Store the source's previous samples with the voiceChris Robinson2015-10-151-0/+2
| | | | | | 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.
* Move the resampler stuff to mixer.c where it's usedChris Robinson2015-10-011-5/+0
|
* Don't keep selecting the mixer to useChris Robinson2015-09-271-2/+0
|
* Use aluVector in some more placesChris Robinson2014-12-161-3/+3
|
* Support B-Format source rotation with AL_ORIENTATIONChris Robinson2014-10-311-0/+1
|
* Rename the source's Orientation to DirectionChris Robinson2014-10-311-1/+1
|
* Rename activesource to voiceChris Robinson2014-08-211-3/+3
|
* Use a NULL source for inactive activesourcesChris Robinson2014-08-211-2/+5
| | | | Also only access the activesource's source field once per update.
* Make the source's buffer queue head and current queue item atomicChris Robinson2014-07-311-5/+5
|
* Add macros for generic atomic functionalityChris Robinson2014-07-221-1/+1
|
* 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.
* Get the mixer and resampler functions when neededChris Robinson2014-06-131-4/+1
|
* Combine the direct and send mixersChris Robinson2014-06-131-5/+2
|
* Combine some dry and wet path typesChris Robinson2014-06-131-2/+2
|
* Move the active source's offset out of the direct paramsChris Robinson2014-05-241-0/+2
|
* Use different parameters for HRTF mixersChris Robinson2014-05-181-1/+5
|
* Apply high-pass source filters as neededChris Robinson2014-05-171-0/+4
|
* Store the filter reference frequency in the sourceChris Robinson2014-05-111-0/+2
|
* Use a struct to store the source's direct gain/gainhf propertiesChris Robinson2014-05-111-3/+4
|
* Mark the buffer queue pointers volatileChris Robinson2014-05-101-2/+2
|
* Use a RWLock to help protect the source's buffer queueChris Robinson2014-05-101-0/+1
| | | | | 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-1/+0
|
* Store the current buffer queue item, rather than played buffer countChris Robinson2014-05-101-1/+1
|
* Store the HrtfState directly in the DirectParamsChris Robinson2014-03-231-3/+0
|
* Move some HRTF and mixer structs to alu.hChris Robinson2014-03-221-57/+0
|
* Use a union to combine HRTF and non-HRTF mixer paramsChris Robinson2014-03-191-9/+11
|
* Store some source mixing parameters in the active source structChris Robinson2014-03-191-21/+18
|
* Use a separate struct for tracking active sourcesChris Robinson2014-03-181-2/+7
|
* Move HRTF macros and function declarations to a separate headerChris Robinson2014-02-231-0/+1
|
* Move some inline methods to their appropriate headersChris Robinson2013-11-041-0/+5
|
* Fix effect slot struct declarations so KDevelop doesn't barf on themChris Robinson2013-10-071-2/+1
|
* Don't store the effect slot in SendParamsChris Robinson2013-10-061-1/+3
| | | | This makes it much more like DirectParams.
* Rename Filter param member to LpFilterChris Robinson2013-10-061-2/+2
|
* Use a separate value for the maximum buffer channelsChris Robinson2013-07-231-7/+8
| | | | | | | 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.
* Use ALfilterState for the source direct and send filtersChris Robinson2013-05-271-4/+2
|
* Use a properly-defined history for the FILTER structChris Robinson2013-05-211-4/+2
|
* Put the HRTF DirectParams into an anonymous structChris Robinson2012-10-151-2/+4
|
* Store the output buffers in the DirectParams structChris Robinson2012-10-141-0/+4
|
* Store some more HRTF info in the DirectParams structChris Robinson2012-10-141-0/+2
|
* Use a source param for the resampler and move them to the mixer sourceChris Robinson2012-09-141-0/+1
|
* Fix up some more header includesChris Robinson2012-09-141-2/+2
|
* Move the target effect slot to the SendParams structChris Robinson2012-09-081-1/+2
|