aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include/alAuxEffectSlot.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove unused headers and checksChris Robinson2018-11-171-1/+0
|
* Avoid using ATOMIC_FLAGChris Robinson2018-11-131-1/+1
| | | | | Although it cant potentially be better than a regular atomic, it presents compatibility issues when non-C11 atomics are mixed with C++
* Replace restrict with RESTRICTChris Robinson2018-10-291-2/+2
|
* Remove another duplicate functionChris Robinson2018-09-191-2/+2
|
* EFX: Autowah implementationRaulshc2018-07-251-0/+1
| | | Add autowah effect using biquad peaking filter and envelope follower
* EFX: Frequency Shifter implementationRaulshc2018-05-201-0/+1
| | | Add frequency shifter effect using discrete Hilbert transform. Only mono signal processing by now (LEFT_DIRECTION).
* EFX:Pitch Shifter implementationRaulshc2018-03-181-0/+1
| | | Add pitch shifter effect using standard phase vocoder, based on work of Stephan Bernsee. Only mono signal processing by now.
* Apply a distance decay on the source send for the reverb's DecayLFRatioChris Robinson2018-03-111-0/+1
|
* Fix struct forward declaration typoChris Robinson2018-03-081-1/+1
|
* Fix a comment regarding the effect slot channel scalingChris Robinson2018-02-281-3/+3
|
* Avoid AL prefix on internal effect state factory typesChris Robinson2018-02-281-20/+21
| | | | Also avoid using the generic V/V0 macros for them
* Use a fixed array for the effect state factory listChris Robinson2018-01-281-3/+0
|
* Use a vector to store the effect slot pointersChris Robinson2018-01-271-14/+0
| | | | And make the ID a simple index into it (1-base, to avoid ID 0).
* Avoid unnecessarily using type aliasesChris Robinson2018-01-141-0/+5
|
* 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
|