aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/alAuxEffectSlot.c
Commit message (Collapse)AuthorAgeFilesLines
* Simplify some statementsFilip Gawin2018-10-291-2/+2
|
* Use an internal event to more timely release old effect statesChris Robinson2018-09-211-0/+3
|
* Check the effect slot list size only when there's no free entriesChris Robinson2018-09-141-6/+7
| | | | | The list can contain (reuable) NULL entries, so the max - current_size doesn't indicate how many can be allocated.
* 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 adding to and removing from the active effect slotsChris Robinson2018-03-081-21/+35
| | | | | It wasn't properly removing all duplicates on insertion, and didn't remove the first effect slot when removing them.
* Properly limit the max number of effect slots to 2^31 - 1Chris Robinson2018-03-081-9/+1
|
* Use a plain mutex for the property lockChris Robinson2018-03-031-4/+4
|
* Avoid AL prefix on internal effect state factory typesChris Robinson2018-02-281-19/+19
| | | | Also avoid using the generic V/V0 macros for them
* Use separate functions to add and remove active effect slotsChris Robinson2018-02-231-56/+83
|
* Remove the unused thunk codeChris Robinson2018-02-021-1/+0
|
* Fix the effect slot limit checkChris Robinson2018-01-281-1/+1
|
* Use a fixed array for the effect state factory listChris Robinson2018-01-281-28/+24
|
* Don't allocate more effect slots than allowedChris Robinson2018-01-271-0/+8
|
* Move some inline functions into a header instead of copying themChris Robinson2018-01-271-8/+6
| | | | | Unfortunately does not include the Lookup* functions, which need the full type declaration to offset the pointer.
* Store effects in an array of listsChris Robinson2018-01-271-3/+17
|
* Use a vector to store the effect slot pointersChris Robinson2018-01-271-61/+82
| | | | And make the ID a simple index into it (1-base, to avoid ID 0).
* Construct error messages using parameterized valuesChris Robinson2018-01-251-36/+35
|
* Provide messages for the remaining AL errorsChris Robinson2018-01-241-26/+36
|
* Move the FPU mode declarations to a separate headerChris Robinson2018-01-111-0/+1
| | | | Also don't use inheritance with FPUCtl.
* Re-update effect slots when context properties changeChris Robinson2017-09-271-23/+11
| | | | | Also keep all free property update structs together in the context instead of per-object.
* Use macros to set and restore the mixer FPU modeChris Robinson2017-07-131-4/+3
|
* 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.
* Use a different way to get the size of structs with flexible array membersChris Robinson2017-04-181-6/+2
|
* Allow increasing the maximum source limitChris Robinson2017-04-141-1/+1
| | | | | | | | If the requested number of mono and stereo sources exceeds 256, the source limit will be expanded. Any config file setting overrides this. If the device is reset to have fewer sources than are currently allocated, excess sources will remain and be usable as normal, but no more can be generated until enough are delated to go back below the limit.
* Use separate atomic macros for pointersChris Robinson2017-04-141-11/+7
|
* Use an array of pointers for effects instead of a linked listChris Robinson2017-03-271-43/+70
|
* Fix handling of the PropsClean flagsChris Robinson2017-03-231-1/+1
|
* Use an atomic flag to mark auxiliary effect slot updatesChris Robinson2017-03-231-4/+3
|
* Remove unnecessary atomic membersChris Robinson2017-03-081-14/+11
|
* Avoid duplicating code using a macroChris Robinson2016-12-211-5/+1
|
* Use separate macros for atomics that don't take a memory orderChris Robinson2016-12-201-11/+11
|
* Stop using almemory_order_consumeChris Robinson2016-11-171-1/+1
|
* Remove unnecessary constsChris Robinson2016-08-311-4/+4
| | | | They were causing GCC's built-in atomic cmpxchg to complain.
* Avoid directly replacing the effect slot Update pointerChris Robinson2016-08-251-14/+10
|
* Properly defer effect slot changesChris Robinson2016-08-251-11/+28
| | | | | | | | 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.
* Track all references for effect statesChris Robinson2016-08-251-21/+47
| | | | | | | | This allows us to not have to play around with trying to avoid duplicate state pointers, since the reference count will ensure they're deleted as appropriate. The only caveat is that the mixer is not allowed to decrement references, since that can cause the object to be freed (which the mixer code is not allowed to do).
* Add a ref count to ALeffectStateChris Robinson2016-08-251-0/+8
| | | | | This is mostly just reorganizing the effects to call the Construct method which initializes the ref count.
* Avoid resupplying unneeded source updatesChris Robinson2016-08-231-1/+1
| | | | | The source's voice holds a copy of the last properties it received, so listener updates can make sources recalculate internal properties from that stored copy.
* Avoid a NULL deref when creating 0 auxiliary effect slotsChris Robinson2016-07-261-12/+9
|
* 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.
* Avoid using memcpy to copy a single structChris Robinson2016-07-061-3/+3
|
* Use separate arrays for UIntMap keys and valuesChris Robinson2016-07-041-2/+2
|
* Hold the effectslot map lock while handling itChris Robinson2016-05-291-0/+24
|
* Use a linked list for active effect slotsChris Robinson2016-05-291-36/+31
|
* Use the backend lock for the effectstate's deviceUpdate callChris Robinson2016-05-271-8/+4
|
* Avoid duplicate effect state objects in the freelistChris Robinson2016-05-151-12/+25
| | | | | | | If an unapplied update was superceded, it would be placed in the freelist with its effect state object intact. This would cause another update with the same effect state object to be placed into the freelist as well, or worse, cause it to get deleted while in use when the container had its effect state cleared.