4073 Commits

Author SHA1 Message Date
Chris Robinson
7d821551ac Recognize ambix as an alias for acn+sn3d 2018-12-27 01:18:10 -08:00
Chris Robinson
d367093c06 Use std::array for appropriate source and listener properties 2018-12-26 22:27:34 -08:00
Chris Robinson
a4ac43b602 Avoid a lambda to find a not-null entry in an array 2018-12-26 21:55:39 -08:00
Chris Robinson
8a0295503d Clean up the ring buffer struct and use member functions 2018-12-26 21:22:17 -08:00
Chris Robinson
4f253a935a Handle HRTF coefficients and values by reference where possible 2018-12-26 15:35:05 -08:00
Chris Robinson
c5be03b51e Avoid masking in ApplyCoeffs's inner loop
This unfortunately does not apply to NEON, which would need a bit more
reworking of its method.
2018-12-26 14:59:21 -08:00
Chris Robinson
5c449de73f Improve UHJ2 encoding 2018-12-26 13:20:59 -08:00
Chris Robinson
3b9defa4af Improve some post-process handlers 2018-12-26 12:46:01 -08:00
Chris Robinson
5cc545f157 More aggressively try to decrement an effect's refcount in-place 2018-12-26 12:25:34 -08:00
Chris Robinson
38537a35cc Avoid using a local for a temporary 2018-12-25 22:32:30 -08:00
Chris Robinson
b2665a503f Do some pre-mixing fading checks once before preparing to mix 2018-12-25 19:54:14 -08:00
Chris Robinson
a7c58decfb Add a couple more ASSUMEs for number of channels and sends 2018-12-25 18:49:12 -08:00
Chris Robinson
6a8c791e3c Rework the pulseaudio backend to avoid an explicit mixer thread 2018-12-25 16:31:31 -08:00
Chris Robinson
0314370eb5 Cache the process binary path and name 2018-12-25 11:27:22 -08:00
Chris Robinson
208ea76922 Cleanup some includes 2018-12-25 11:09:41 -08:00
Chris Robinson
8336de6653 Rename a couple filter files for consistency 2018-12-25 10:28:02 -08:00
Chris Robinson
9e19acd9e1 Avoid making static local copies of constexpr values 2018-12-25 10:06:17 -08:00
Chris Robinson
63df7cd537 Construct AsyncEvent objects directly in the ringbuffer 2018-12-25 09:32:38 -08:00
Chris Robinson
3b7f668b28 Avoid an intermediate mixing buffer 2018-12-24 20:44:55 -08:00
Chris Robinson
fbae41020d Remove extraneous typedef, struct, and enum keywords 2018-12-24 19:29:01 -08:00
Chris Robinson
194e7ff815 Add an in-progress extension to set the effect slot target 2018-12-24 15:52:37 -08:00
Chris Robinson
bbf9e6931c Propagate an effectslot target property 2018-12-24 15:17:38 -08:00
Chris Robinson
ae86aef4db Provide effect target parameters through a common struct 2018-12-24 13:29:36 -08:00
Chris Robinson
cd213fe6b7 Avoid using select() 2018-12-24 09:58:48 -08:00
Chris Robinson
95631aa358 Make the Compressor more class-like 2018-12-24 09:17:00 -08:00
Chris Robinson
d49eeb576c Only check ambisonic attributes with B-Format output 2018-12-24 07:33:38 -08:00
Chris Robinson
68352d3188 Apply the limiter before distance compensation 2018-12-24 07:30:01 -08:00
Chris Robinson
ef10152361 Assume alignment for some buffers 2018-12-23 20:56:27 -08:00
Chris Robinson
1f966c11ef Add some more ASSUMEs 2018-12-23 17:56:01 -08:00
Chris Robinson
11d815cfd3 Repack some AmbiUpsampler fields for better access patterns 2018-12-23 15:55:12 -08:00
Chris Robinson
ba9aba699d Properly rebalance the HF scale with ambisonic upsampling 2018-12-23 10:37:07 -08:00
Chris Robinson
3fe38fed7c Mix effect slot output to the effect target if it's set 2018-12-23 08:51:28 -08:00
Chris Robinson
e218999b4f Dynamically sort the effect slots when mixing
This is to be able to support effects that output to other effects. When an
effect outputs to another effect, the former needs to process first, so the
former mixes to the latter's buffer before the latter is processed.

This sorting needs to happen in the mixer because the effect slot's "Target"
property changes asynchronously.
2018-12-22 22:31:26 -08:00
Chris Robinson
bfa98be48a Cleanup definitions and declarations in reverb.cpp 2018-12-22 19:31:12 -08:00
Chris Robinson
86caf2683e Constify a parameter 2018-12-22 18:43:34 -08:00
Chris Robinson
334b3a905a Clean up some math stuff 2018-12-22 16:01:14 -08:00
Chris Robinson
d4d98e2fe9 Fix for C++11 compatibility
std::array::operator[] isn't constexpr until C++14.
2018-12-22 11:41:03 -08:00
Chris Robinson
10ce121dbd Use a normal delete instead of ll_ringbuffer_free
And use RingBufferPtr in more places
2018-12-22 11:38:38 -08:00
Chris Robinson
b955c5cf5d A bit of cleanup for CalcPanningAndFilters 2018-12-22 10:00:06 -08:00
Chris Robinson
87724db6e3 Rename a couple HRTF structs 2018-12-22 09:20:50 -08:00
Chris Robinson
985d03d13d Try to help GetHrtfCoeffs vectorize 2018-12-21 21:07:42 -08:00
Chris Robinson
5e4378f30a Small cleanup for BuildBFormatHrtf 2018-12-21 18:17:59 -08:00
Chris Robinson
3553ce1f67 Don't convert the HRTF decoder virtual speaker positions to radians 2018-12-21 08:55:22 -08:00
Chris Robinson
b785d80526 Use a dodecahedron for the ambisonic HRTF decode
Also uses full second-order for "basic" HRTF rendering. Note that the supplied
matrix is full third-order, but only the first- and second-order coefficients
are used. The base matrices are the identical, only differing by the high-
frequency scalars.
2018-12-21 06:32:18 -08:00
Chris Robinson
7744e4ff72 Pass RealMixParams by reference instead of pointer 2018-12-20 13:26:39 -08:00
Chris Robinson
9fde260df9 Fix the type used for another subtraction 2018-12-20 12:29:46 -08:00
Chris Robinson
768ed3cfbb Silence some MSVC warnings 2018-12-20 12:04:34 -08:00
Chris Robinson
837881eb79 Fix the type used for subtraction 2018-12-20 12:03:32 -08:00
Chris Robinson
7dc553350b Clean up most of the compressor loops 2018-12-20 11:46:57 -08:00
Chris Robinson
10f87c5d26 Use std::accumulate to get the max composited buffer length loaded 2018-12-20 07:10:09 -08:00