Chris Robinson
14a0df03e8
Do more samples at once with the distortion effect
2018-01-16 08:49:15 -08:00
Chris Robinson
f55583330b
Apply the distortion gain to the mixing gains
2018-01-11 04:34:51 -08:00
Chris Robinson
15f9d15ba0
Avoid using macros to access anonymous structures
2018-01-11 03:45:23 -08:00
Chris Robinson
90cedbea49
Pass the context to the auxiliary effect update method
2017-09-21 05:42:35 -07:00
Chris Robinson
53c3d48fe0
Change some ALuint parameters to ALsizei
2017-05-02 04:54:59 -07:00
Chris Robinson
fcdf1cea70
Avoid writing to the same buffer that's read from
...
Also clean up comment formatting a bit.
2016-12-23 12:37:48 -08:00
Chris Robinson
0fbf34fb45
Add a ref count to ALeffectState
...
This is mostly just reorganizing the effects to call the Construct method which
initializes the ref count.
2016-08-25 03:49:57 -07:00
Chris Robinson
e4bbbe06fa
Avoid manual loops for ALfilterState processing
2016-07-25 19:04:54 -07:00
Chris Robinson
93a94d177c
Get rid of an unnecessary copy of ALeffectProps
2016-05-13 18:28:01 -07:00
Chris Robinson
ef0d4f8210
Provide (mostly) lockless updates for effect slots
...
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.
2016-05-12 18:41:33 -07:00
Chris Robinson
a6c70992b0
More directly map coefficients for ambisonic mixing buffers
...
Instead of looping over all the coefficients for each channel with multiplies,
when we know only one will have a non-0 factor for ambisonic mixing buffers,
just index the one with a non-0 factor.
2016-04-15 22:05:47 -07:00
Chris Robinson
a457157516
Organize the dry buffer properties into a struct
2016-03-09 23:43:57 -08:00
Chris Robinson
2fa3ae85c9
Pass a pointer to the input samples array for effect processing
2016-01-27 08:16:47 -08:00
Chris Robinson
f547ef6d39
Separate calculating ambisonic coefficients from the panning gains
2016-01-25 06:11:51 -08:00
Chris Robinson
c57f571920
Pass in the Q parameter for setting the filter parameters
...
Also better handle the peaking filter gain.
2015-11-01 05:41:06 -08:00
Chris Robinson
c3a36d9b19
Do up to 256 samples at a time with multi-step loops
2014-12-18 09:23:55 -08:00
Chris Robinson
3f7cb8392e
Pas the output device channel count to ALeffectState::process
2014-11-07 03:43:33 -08:00
Chris Robinson
4c3f27193f
Use a separate macro for the max output channel count
2014-11-07 02:18:24 -08:00
Chris Robinson
6083a684d1
Use a method to set omni-directional channel gains
2014-11-04 03:33:35 -08:00
Chris Robinson
a77387b549
Avoid taking the square-root of the ambient gain
...
Although it is more correct for preserving the apparent volume, the ambisonics-
based panning does not work on the same power scale, making it louder by
comparison.
2014-10-11 09:35:32 -07:00
Chris Robinson
4e66224d6c
Combine some fields into a struct
2014-09-10 17:53:01 -07:00
François Cami
3c13e1e333
Update COPYING to the latest https://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt to fix the FSF' address Fix the FSF' address in the source
2014-08-18 11:34:29 -07:00
Chris Robinson
0a030c2bd9
Use a void* for the effect state Delete method param
2014-03-21 23:56:18 -07:00
Chris Robinson
a421e515be
Use a helper macro for pi*2
2013-10-08 16:31:23 -07:00
Chris Robinson
b42fcce014
Use inline initialization for effect state factory vtables
2013-10-07 14:49:36 -07:00
Chris Robinson
fc31a41473
Constify the effect parameter of effect getters
2013-10-07 12:56:41 -07:00
Chris Robinson
997f6228de
Use the UNUSED macro in the effects
2013-10-07 08:34:54 -07:00
Chris Robinson
79edd2cf3b
Use a macro for the silence threshold
2013-10-06 17:25:47 -07:00
Chris Robinson
764ea95781
Use helpers to set channel gain arrays
...
Also avoid unnecessary clearing.
2013-10-03 05:02:16 -07:00
Chris Robinson
2f676832bc
Avoid a divide-by-0 when distortion edge is 1
2013-09-04 15:46:05 -07:00
Chris Robinson
647398d7c6
Use ALfilterState for the distortion effect filters
2013-06-06 03:24:44 -07:00
Chris Robinson
764e3aa496
Fix up the naming convention of effect methods
2013-05-29 11:17:45 -07:00
Chris Robinson
334a7c1d59
Cleanup the ALeffectStateFactory_create methods
...
Get rid of the ALeffectStateFactory_create macro, and use the VCALL_NOARGS
helper (requires adding the 'this' factory parameter).
2013-05-27 13:16:17 -07:00
Chris Robinson
8808159d55
Add helper macros to set an error and return, and use it in a few places
2013-05-26 00:01:07 -07:00
Chris Robinson
d1c5599c8e
Use an ALeffectProps union to store the effect properties
2013-05-25 22:07:31 -07:00
Chris Robinson
6571d80540
Use a Delete method for deletable objects
2013-05-25 21:04:00 -07:00
Chris Robinson
e157238ce7
Use vtables for setting effect properties
2013-05-24 23:26:59 -07:00
Chris Robinson
357cf72ab3
Move remaining effects to the effects subdir
2013-05-23 21:33:16 -07:00