Chris Robinson
8a0d1e5191
Store the QSA backend's ExtraData in the wrapper struct
2017-06-29 17:38:38 -07:00
Chris Robinson
e8ce8924d1
Use sqrtf for single-precision square roots
2017-06-29 10:28:37 -07:00
Chris Robinson
ec13cf6c9c
Add casts to silence MSVC
2017-06-29 10:28:22 -07:00
Chris Robinson
a69d608a1e
Define a backup log2f if the compiler doesn't have it
2017-06-29 10:11:31 -07:00
Chris Robinson
7cadbebe9f
Calculate the converter stepping value using floating point
2017-06-28 10:17:36 -07:00
Chris Robinson
e9a7218a06
Remove the fastf2u conversion function
2017-06-27 07:25:08 -07:00
Chris Robinson
8f2bbc434c
Use a macro to apply NFC filtered mixes instead of a loop
2017-06-26 11:19:27 -07:00
Chris Robinson
b13fead555
Round the converter's stepping value
2017-06-26 11:04:23 -07:00
Chris Robinson
2f2d941edb
Trace the message name in the message handler loop
2017-06-26 08:57:29 -07:00
Chris Robinson
740e7d979c
Convert all input samples in the loop
...
Instead of potentially leaving 1 sample that requires another loop iteration.
2017-06-26 08:55:22 -07:00
Chris Robinson
55c329b462
Clean up some messy rounding code
2017-06-26 06:54:45 -07:00
Chris Robinson
5d5eff7502
Ensure the mmdevapi capture buffer is at least 100ms
2017-06-26 06:14:11 -07:00
Chris Robinson
1deb8b6160
Clean up some loop variables
2017-06-25 05:42:35 -07:00
Chris Robinson
c465718ddd
Use the bsinc resampler for the converter
2017-06-25 04:07:06 -07:00
Chris Robinson
d1bb04d588
Improve traces for the mmdevapi capture conversions
2017-06-23 09:54:26 -07:00
Chris Robinson
d70a98fe03
Use the correct destination channel offset
2017-06-23 08:25:47 -07:00
Chris Robinson
9d01ac440d
Don't report any output samples for no input samples
2017-06-23 08:13:42 -07:00
Chris Robinson
44a940d8d6
Forward Sample_ALuint to Sample_ALint
2017-06-23 05:34:43 -07:00
Chris Robinson
d1077795de
Stop conversion when no more source samples are available
2017-06-22 15:07:24 -07:00
Chris Robinson
31b02e044f
Trace the capture converter formats for mmdevapi
2017-06-22 13:58:32 -07:00
Chris Robinson
552d3a85af
Workaround log2f missing on Android
2017-06-21 23:05:11 -07:00
Chris Robinson
6fcbb7c738
Remove an unnecessary variable
2017-06-21 11:34:26 -07:00
Chris Robinson
e09468cdca
Trace if dithering is enabled
2017-06-19 00:17:11 -07:00
Chris Robinson
0a361fa9e2
"Convert" the QSA backend to the new API
...
I say "convert" because it takes the lazy way and essentially just embeds the
wrappers into the backend. It's done this way because I lack the means to check
any changes, even syntactically. This also means the device's ExtraData field
is still needed.
However, this does mean all the backends are now using the new API. Code
related to the old interface can now be removed.
2017-06-18 03:07:02 -07:00
Chris Robinson
2b013fc54e
Make the dithering depth configurable
2017-06-17 23:09:51 -07:00
Chris Robinson
e3a825b37c
Apply dither separately from output
2017-06-17 02:42:01 -07:00
Chris Robinson
9fc01934c2
Use helpers to get data from byte streams
2017-06-16 22:58:13 -07:00
Chris Robinson
879b79740f
Round the B-Format HRTF response where the multiple is defined
2017-06-16 19:00:00 -07:00
Chris Robinson
d4f3490a88
Limit device buffer based on PulseAudio's tlength
...
Unfortunately PulseAudio has a habit of limiting tlength, and trying to
calculate the device's buffer length to write regardless of tlength could
result in some amount always being writable.
2017-06-15 21:39:09 -07:00
rdb
39e4756b37
Implement GetProcPath for FreeBSD
2017-06-09 15:19:03 +02:00
Chris Robinson
b4aea294c3
Calculate chorus and flanger mod delays separately from feedback
2017-06-07 12:42:54 -07:00
Chris Robinson
10ff6cba9c
Make the late lines' delay the delay average for modulation
...
Similar to the recent chorus and flanger changes, the modulation delay now
swings between -n to +n, where n is less than the delay length. This brings up
a slight issue with the linear interpolation, as modff doesn't produce the
correct fraction value for interpolation (it's inverted, with 0 being closer to
the next sample and 1 being closer to the base). So it's using nearest
interpolation for now.
2017-06-07 10:39:19 -07:00
Chris Robinson
e893211b65
Restrict ClampedDist to RefDistance for invalid distance attenuation
2017-05-30 05:13:54 -07:00
Chris Robinson
6d4adc6ad6
Use an RMS limit of -3dB for the output limiter
2017-05-29 03:38:27 -07:00
Chris Robinson
a79e8f3d95
Use peak limiting rather than RMS detection
2017-05-27 22:47:40 -07:00
Chris Robinson
e9505b164e
Fix source sends' initial HF absorption and decay calculation
...
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.
2017-05-27 22:33:40 -07:00
Chris Robinson
c51df897db
Use normal air absorption for the sends
...
Applies just for the normal air absorption which uses the air absorption
factor, not the automated decay applied when WetGainAuto is enabled.
2017-05-27 03:40:52 -07:00
Chris Robinson
c4ef7399f8
Add a new compressor/limiter
...
This is just for the output limiter right now, but in the future can be used
for the compressor EFX effect. The parameters are also hardcoded, but can be
made configurable after 1.18.
2017-05-27 03:36:34 -07:00
Chris Robinson
653f0a1405
Fix handling chorus and flanger LFO displacement offset
...
The phase offset is modulo-wrapped rather than masked, so it's best to avoid
negative offsets.
2017-05-26 09:09:35 -07:00
Chris Robinson
2b14c1d623
Properly handle the chorus and flanger LFOs
...
The effects' specified delay is the average delay time, meaning the delay
offset should move between -n and +n relative to the delay, where n <= delay.
2017-05-26 08:52:07 -07:00
Chris Robinson
db90dbe9f2
Finalize ALC_SOFT_output_limiter
2017-05-25 04:16:07 -07:00
Chris Robinson
9d4f601a8a
Apply distance compensation separately
2017-05-25 03:24:35 -07:00
Chris Robinson
2266fb76b9
Add a config option to specify custom ALSA devices
2017-05-23 18:12:45 -07:00
Chris Robinson
e6be113903
Add an option to dither 8- and 16-bit output
2017-05-23 00:35:22 -07:00
Chris Robinson
49e5c53591
Reduce the amount of variables that hold the same value
2017-05-21 03:47:52 -07:00
Chris Robinson
95ea3fdd05
Avoid calculating the filter coefficients multiple times
2017-05-21 03:38:19 -07:00
Chris Robinson
5691dceb38
Add a method to copy a filter's coefficients
2017-05-21 03:31:44 -07:00
Chris Robinson
edcdc1dae8
Avoid unnecessary doubles
2017-05-21 02:42:44 -07:00
Chris Robinson
0b2467ed54
Use a macro to specify the decay target gain
2017-05-21 00:01:39 -07:00
Chris Robinson
c234b25ac7
Use more correct doppler shift calculations
2017-05-20 03:28:40 -07:00