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