Chris Robinson
da3a916042
Replace macros with constexpr inline functions
2019-01-06 04:16:51 -08:00
Chris Robinson
98f3e6a162
Remove an unnecessary undef
2019-01-06 02:49:24 -08:00
Chris Robinson
e645d25b62
Use double-precision biquads for the HRTF shelf filters
2019-01-06 00:54:39 -08:00
Chris Robinson
607e778344
Make BiquadFilter a templated class
...
With explicit instantiations for float and double
2019-01-06 00:53:02 -08:00
Chris Robinson
03aeb7edf6
Use a shelf filter for the HRTF B-Format decoder HF scale
2019-01-06 00:23:15 -08:00
Chris Robinson
3b91010e21
Pass the normalized crossover frequency to the reset method
2019-01-05 22:31:13 -08:00
Chris Robinson
aa29bf5933
Remove unnecessary structs and buffers
2019-01-05 22:24:38 -08:00
Chris Robinson
3f35fcc4b5
Simplify MixParams and AmbiUpsampler
...
Since the dry buffer is always an ambisonic target now
2019-01-05 21:59:04 -08:00
Chris Robinson
cff20c2fe8
Use BFormatDec for custom and built-in ambisonic decoding
2019-01-05 19:21:25 -08:00
Chris Robinson
641bbf075d
Enable simplified upsampling for AmbiUpsampler
2019-01-05 00:23:06 -08:00
Chris Robinson
6d7e8cf8b0
Simplify the BFormatDec upsampler
...
Since the only difference applied is a scalar on the high-frequency response, a
B-Format-to-B-Format transcode can be accomplished with a high-shelf filter. A
similar thing can be done with AmbiUpsampler, but only when outputing to
periphonic B-Format.
2019-01-04 22:17:30 -08:00
Chris Robinson
0a6748156d
Make sure the OpenSL capture buffer queue has the correct size
...
The ring buffer size may round up and have more queueable elements than OpenSL
was allocated with, leading to errors when queueing those extra elements. Now
OpenSL allocates the same number of elements that can be written to the ring
buffer.
2019-01-03 18:16:46 -08:00
Chris Robinson
21a17620e3
Fix the ringbuffer write limit
...
Previously it just limited the returned write space, irrespective of how much
had already been written. The buffer could still be filled up by doing multiple
writes. Now the size is limited by adjusting the read pointer by the real vs
limited difference when calculating the writable space.
2019-01-03 15:54:18 -08:00
Chris Robinson
88c2f11dcf
Use DeviceRef and ContextRef when creating a new device and context
2019-01-01 22:44:46 -08:00
Chris Robinson
399dfca1e3
Rename ALCdevice_struct and ALCcontext_struct
...
A (possibly contentious?) change in the public headers. Those names were never
part of any specification, and I don't know why the struct names differed from
the actual type name. But with C++, which takes the original struct declaration
as the original name, it was affecting the type's internal symbols.
This shouldn't affect user code since ALCdevice_struct and ALCcontext_struct
were never part of the spec. If issues arise from this change, it should be
reported.
2019-01-01 18:13:33 -08:00
Chris Robinson
1630a33567
Use standard unique_lock and lock_guard for the backend lock
2019-01-01 16:42:54 -08:00
Chris Robinson
2f1566e0b4
Add and use a make_unique function
2019-01-01 14:33:01 -08:00
Chris Robinson
c36798fd07
Avoid unnecessary extra buffers for filter chains
2019-01-01 02:41:27 -08:00
Chris Robinson
e930c70eaa
Don't make BiquadFilter's src and dst restrict
...
There's no technical reason they can't be the same since IIR filters can't be
auto-vectorized anyway.
2019-01-01 00:04:46 -08:00
Chris Robinson
a9e71c2668
Handle all input channels in MixDirectHrtf
2018-12-31 23:33:04 -08:00
Chris Robinson
0452c9201d
Add a missing include
2018-12-31 20:51:51 -08:00
Chris Robinson
87143b6645
Remove some C-isms from makehrtf
...
Remove unnecessary typedefs, use C++11 stamndard types and values, avoid
explicit allocations.
2018-12-31 19:54:34 -08:00
Chris Robinson
4c4572ae8a
Compile makehrtf as C++
2018-12-31 18:23:30 -08:00
Chris Robinson
d8eecc89e0
Pass a reference to an array instead of a pointer
2018-12-31 18:07:00 -08:00
Chris Robinson
5a9a1c8d7d
Further improve HRTF methods to avoid masking in the inner loops
2018-12-31 04:12:20 -08:00
Chris Robinson
5e03941701
Use an atomic bool on things that only take true or false
2018-12-30 21:58:14 -08:00
Chris Robinson
9f5c9a2260
Rename BackendLock to StateLock
2018-12-30 21:38:42 -08:00
Chris Robinson
3df1d185f8
Don't make the backend's lock/unlock methods noexcept
2018-12-29 17:29:52 -08:00
Chris Robinson
24e763f2a1
Get rid of ALCdevice_Lock/Unlock
2018-12-29 14:00:34 -08:00
Chris Robinson
bdf7c16cfb
Clean up a member name
2018-12-29 13:21:47 -08:00
Chris Robinson
8a84e7b662
Use member functions for the sample and channel converters
2018-12-29 12:26:45 -08:00
Chris Robinson
9b0b722d72
Add missing includes for mem_fn
2018-12-29 03:11:06 -08:00
Chris Robinson
63fc74beaa
Don't bother with an explicit Loopback backend type
2018-12-29 02:21:53 -08:00
Chris Robinson
71a4d6db6f
Return a unique_ptr for the backend
2018-12-29 02:16:16 -08:00
Chris Robinson
3c637d5fd7
Make the backend type an enum class
2018-12-29 01:38:26 -08:00
Chris Robinson
8fd4477215
Get CoreAudio capture samples in one call
2018-12-28 23:19:49 -08:00
Chris Robinson
3d92e8c4df
Convert the backends to use proper inheritence
2018-12-28 22:56:20 -08:00
Chris Robinson
67b874328d
Use static_cast instead of reinterpret_cast where possible
2018-12-28 16:13:28 -08:00
Chris Robinson
01ed98c99b
Finish turning ancillary backend methods into member functions
2018-12-28 15:09:51 -08:00
Chris Robinson
b7f5166d59
Turn even more methods into member functions
2018-12-28 14:06:15 -08:00
Chris Robinson
200e267b81
Turn some more methods into member functions
2018-12-28 12:58:01 -08:00
Chris Robinson
983904bbdc
Add a method to prefix logged function names
2018-12-28 12:29:05 -08:00
Chris Robinson
aff58265cb
Make more methods into member functions
2018-12-27 23:37:24 -08:00
Chris Robinson
28308226e7
Turn more methods into member functions
2018-12-27 21:50:54 -08:00
Chris Robinson
885f68268f
Turn more methods into member functions
2018-12-27 20:24:35 -08:00
Chris Robinson
015a4b060b
Make some ancillary methods into member functions
2018-12-27 19:38:02 -08:00
Chris Robinson
0f36459028
Use vectors instead of malloc'd buffers
2018-12-27 18:33:49 -08:00
Chris Robinson
465ab11748
Finish renaming backend struct fields
2018-12-27 17:48:02 -08:00
Chris Robinson
e48b8c4cda
Rename some more struct members for consistency
2018-12-27 17:09:14 -08:00
Chris Robinson
515edc3dee
Fix ring buffer vector methods
2018-12-27 15:05:12 -08:00