aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include/alAuxEffectSlot.h
Commit message (Collapse)AuthorAgeFilesLines
* Re-update effect slots when context properties changeChris Robinson2017-09-271-3/+5
| | | | | Also keep all free property update structs together in the context instead of per-object.
* Pass the context to the auxiliary effect update methodChris Robinson2017-09-211-2/+2
|
* Fix source sends' initial HF absorption and decay calculationChris Robinson2017-05-271-1/+1
| | | | | | | | The HF absorption is applied given the source distance, as relative to the source's immediate environment, with additional absorption being applied given the room/reverb environment. This does double up the amount of absorption compared to the dry path, but it can be assumed the initial reflections travel a longer distance.
* Apply more proper air absorption to the wet pathChris Robinson2017-05-191-0/+2
| | | | | | | | This properly accounts for the room rolloff factor for normal air absorption (which makes it none by default, like distance attenuation), and uses the reverb's decay time, decay hf ratio, decay hf limit, and room air absorption properties to calculate an initial hf decay with the WetGainAuto flag. This mirrors the behavior of the initial distance decay.
* Change some ALuint parameters to ALsizeiChris Robinson2017-05-021-2/+2
|
* Use an array of pointers for effects instead of a linked listChris Robinson2017-03-271-2/+6
|
* Use an atomic flag to mark auxiliary effect slot updatesChris Robinson2017-03-231-2/+3
|
* Remove unnecessary atomic membersChris Robinson2017-03-081-4/+4
|
* Use ALsizei in more placesChris Robinson2017-01-181-2/+2
|
* Properly defer effect slot changesChris Robinson2016-08-251-0/+3
| | | | | | | | Note that this now also causes all playing sources to update when an effect slot is updated. This is a bit wasteful, as it should only need to re-update sources that are using the effect slot (and only when a relevant property is changed), but it's good enough. Especially with deferring since all playing sources are going to get updated on the process call anyway.
* Add a ref count to ALeffectStateChris Robinson2016-08-251-0/+2
| | | | | This is mostly just reorganizing the effects to call the Construct method which initializes the ref count.
* Remove broken autowah effect codeChris Robinson2016-07-261-1/+0
| | | | | It's been disabled forever, and I have no idea how to make it work properly. Better to just redo it when making something that works.
* Remove some unnecessary volatile keywordsChris Robinson2016-06-031-2/+2
|
* Hold the effectslot map lock while handling itChris Robinson2016-05-291-2/+11
|
* Use a linked list for active effect slotsChris Robinson2016-05-291-0/+2
|
* Avoid using a flag to specify if the effect state needs to be updatedChris Robinson2016-05-151-3/+1
| | | | | This fixes a potential missed state change if an update with a new state got replaced with one that doesn't.
* Get rid of an unnecessary copy of ALeffectPropsChris Robinson2016-05-131-3/+2
|
* Avoid updating the effect state object if it's not changedChris Robinson2016-05-121-1/+3
|
* Provide (mostly) lockless updates for effect slotsChris Robinson2016-05-121-5/+39
| | | | | | | | | | | | | | | | | Similar to the listener, separate containers are provided atomically for the mixer thread to apply updates without needing to block, and a free-list is used to reuse container objects. A couple things to note. First, the lock is still used when the effect state's deviceUpdate method is called to prevent asynchronous calls to reset the device from interfering. This can be fixed by using the list lock in ALc.c instead. Secondly, old effect states aren't immediately deleted when the effect type changes (the actual type, not just its properties). This is because the mixer thread is intended to be real-time safe, and so can't be freeing anything. They are cleared away when updates reuse the container they were kept in, and they don't incur any extra processing cost, but there may be cases where the memory is kept around until the effect slot is deleted.
* Update a commentChris Robinson2016-04-151-2/+2
|
* Avoid unnecessary loops for setting up effect slot b-format buffer mixingChris Robinson2016-04-141-1/+1
|
* Store the effect's output buffer in the effect stateChris Robinson2016-03-171-0/+3
|
* Mix to multichannel for effectsChris Robinson2016-01-281-2/+17
| | | | | | This mixes to a 4-channel first-order ambisonics buffer. With ACN ordering and N3D scaling, this makes it easy to remain compatible with effects that only care about mono input since channel 0 is an unattenuated mono signal.
* Pass a pointer to the input samples array for effect processingChris Robinson2016-01-271-2/+2
|
* Separate calculating ambisonic coefficients from the panning gainsChris Robinson2016-01-251-2/+2
|
* Pas the output device channel count to ALeffectState::processChris Robinson2014-11-071-2/+2
|
* Use generic atomics in more placesChris Robinson2014-07-221-1/+1
|
* Add a GCC-specific STATIC_UPCAST macro that checks the object typeChris Robinson2014-04-191-1/+1
| | | | | The check is compile time, and is functionally identical to the old/alternate version.
* Use C11 alignas when availableChris Robinson2014-04-191-1/+3
|
* Remove the click removal buffers for auxiliary effect slotsChris Robinson2014-03-231-3/+0
|
* Use a void* for the effect state Delete method paramChris Robinson2014-03-211-2/+3
|
* Move ALfloatBUFFERSIZE to a common locationChris Robinson2013-11-271-4/+0
|
* Move some inline methods to their appropriate headersChris Robinson2013-11-041-0/+4
|
* Use a helper macro for making vtable thunksChris Robinson2013-10-291-15/+13
|
* Fix effect slot struct declarations so KDevelop doesn't barf on themChris Robinson2013-10-071-16/+15
|
* Implement the Compressor effectChris Robinson2013-10-031-0/+1
|
* Implement the Autowah effect.Chris Robinson2013-10-031-0/+1
|
* Fix up the naming convention of effect methodsChris Robinson2013-05-291-12/+15
|
* Cleanup the ALeffectStateFactory_create methodsChris Robinson2013-05-271-5/+3
| | | | | Get rid of the ALeffectStateFactory_create macro, and use the VCALL_NOARGS helper (requires adding the 'this' factory parameter).
* Use generic VCALL[_NOARGS] macros instead of type-specific wrappersChris Robinson2013-05-271-5/+0
|
* Use an ALeffectProps union to store the effect propertiesChris Robinson2013-05-251-1/+2
|
* Use a Delete method for deletable objectsChris Robinson2013-05-251-10/+5
|
* Move the AL_EFFECT_NULL state into a separate fileChris Robinson2013-05-231-0/+1
|
* Use restrict instead of RESTRICTChris Robinson2013-05-221-2/+2
|
* Rename the effect state's Destroy method to DestructChris Robinson2013-05-211-5/+5
|
* Use factories to create and destroy effect statesChris Robinson2013-05-211-16/+49
|
* Remove some unused codeChris Robinson2013-05-211-5/+2
|
* Auto-generate wrappers to upcast objects before calling user methodsChris Robinson2013-05-211-8/+17
|
* Use macros to help define vtables for effect statesChris Robinson2013-05-211-12/+33
|
* Implement distortion and equalizer effectsChris Robinson2013-05-181-0/+2
| | | | Code provided by Mike Gorchak