Chris Robinson
034935b2e1
Modify how VCALL is handled
...
Now instead of specifying the arguments as a third argument to the macro, like
VCALL(object,function,(arg1, arg2));
they are specified separately after the macro, like
VCALL(object,function)(arg1, arg2);
Also, VCALL_NOARGS has been removed in favor of VCALL0, which behaves like
above but expects an empty argument list (a separate macro is needed to work
around preprocessor limitations).
2013-10-28 11:06:04 -07:00
Chris Robinson
11365b42c7
Use helper macros to convert between degrees and radians
2013-10-08 12:39:22 -07:00
Chris Robinson
6425480d40
Don't store the effect slot in SendParams
...
This makes it much more like DirectParams.
2013-10-06 10:11:01 -07:00
Chris Robinson
8448b94c0b
Rename Filter param member to LpFilter
2013-10-06 09:33:02 -07:00
Chris Robinson
94884ed04b
Use a separate value for the maximum buffer channels
...
Unlike the device, input buffers are accessed based on channel numbers
instead of enums. This means the maximum number of channels they hold
depends on the number of channels any one format can have, rather than
the total number of recognized channels. Currently, this is 8 for 7.1.
2013-07-23 00:13:15 -07:00
Chris Robinson
d85f0c0bb2
Improve the source's low-pass filter response
2013-07-20 22:18:44 -07:00
Chris Robinson
52096234e1
Limit the source step to 10
...
This means the combination of the buffer frequency, source pitch, and
doppler shift can't exceed 10x the device playback frequency.
This is needed to keep the mixer from starving with a really high
increment, causing small DstBufferSize values that require a lot of
iterations.
2013-07-02 06:57:27 -07:00
Chris Robinson
764e3aa496
Fix up the naming convention of effect methods
2013-05-29 11:17:45 -07:00
Chris Robinson
e96cc656e9
Use C99's inline instead of __inline
2013-05-28 22:27:07 -07:00
Chris Robinson
48aa1e10d6
Use the high-shelf filter in place of low-pass
...
They effectively both work to lower (or raise) high frequencies. However, the
high-shelf performs better when gain=1.
2013-05-28 10:57:38 -07:00
Chris Robinson
6556626055
Simplify and fix some filter gain calculations
2013-05-27 21:57:22 -07:00
Chris Robinson
feeec34333
Use ALfilterState for the source direct and send filters
2013-05-27 19:14:02 -07:00
Chris Robinson
9e84f38a46
Use generic VCALL[_NOARGS] macros instead of type-specific wrappers
2013-05-27 11:48:29 -07:00
Chris Robinson
d1c5599c8e
Use an ALeffectProps union to store the effect properties
2013-05-25 22:07:31 -07:00
Chris Robinson
52efb8d7f4
Use restrict instead of RESTRICT
2013-05-22 15:11:39 -07:00
Chris Robinson
e4186f4903
Use a properly-defined history for the FILTER struct
2013-05-21 07:10:24 -07:00
Chris Robinson
563f16dc2a
Fix overflow issues when converting float to int
...
32-bit floats can only reach between -16777215...+16777215 (25 bits) before it
starts losing whole-number accuracy. Some compiler optimizations may break
trying to multiply a float by 2147483647.0 when the result is given right to a
float parameter, causing it instead to multiply by the nearest representable
float value, 2147483648.0.
2013-04-22 00:52:50 -07:00
Chris Robinson
b313c881c0
Add a missing cast to silence MSVC
2013-03-22 11:21:21 -07:00
Chris Robinson
bf54de4984
Use less math to clamp floats to -1...+1
...
The previous code could have issues as precision lowers. This should hopefully
work better while only using one if check instead of two.
2013-03-17 09:07:55 -07:00
Chris Robinson
893a1bedbc
Use +/-90 degrees for stereo sources with non-HRTF stereo output.
2012-12-04 05:30:06 -08:00
Chris Robinson
1fb9311d82
Lock the device before calling aluHandleDisconnect
...
PulseAudio causes an assert if being relocked inside a callback on the worker
thread, where aluHandleDisconnect is called. We can assume it's already locked
there, so just make sure the device is locked before being calling it.
2012-12-02 11:30:23 -08:00
Chris Robinson
e2368eb960
Use an array to specify the offset for each channel of the device buffer
...
This effectively inverts the DevChannels array
2012-11-04 04:41:11 -08:00
Chris Robinson
e868dad61c
Make a decimal value a float type
2012-10-31 06:58:16 -07:00
Chris Robinson
3c3e3b123b
Add a couple comments to the code
2012-10-26 20:11:59 -07:00
Chris Robinson
f02a9935c6
Avoid branching when clamping and converting float samples to integer
2012-10-26 15:31:14 -07:00
Chris Robinson
e2e502970c
Move some math functions to where they're used
2012-10-25 17:24:22 -07:00
Chris Robinson
4f5aafe59f
Put the HRTF DirectParams into an anonymous struct
2012-10-15 01:37:37 -07:00
Chris Robinson
a852669dce
Store the output buffers in the DirectParams struct
2012-10-14 11:21:52 -07:00
Chris Robinson
0b679167c9
Store some more HRTF info in the DirectParams struct
2012-10-14 10:57:11 -07:00
Chris Robinson
5c70e6b9ab
Don't add the dry gain to the mixing matrix
2012-10-13 11:10:58 -07:00
Chris Robinson
9bd3b88a58
Silence an implicit int-to-float conversion warning on MSVC
2012-10-13 11:00:43 -07:00
Chris Robinson
73105b2d4b
Fix copying the listener Up vector
2012-10-12 23:35:00 -07:00
Chris Robinson
815b03855b
Apply the listener matrix to the listener velocity once
2012-10-12 07:56:37 -07:00
Chris Robinson
6750bbb1d7
Avoid needlessly copying the listener matrix
2012-10-12 07:45:20 -07:00
Chris Robinson
43c8c4fa29
Apply the listener position to the transformation matrix
2012-10-12 07:38:29 -07:00
Chris Robinson
25b8a95987
Check the distance against epsilon to determine if it matches
2012-10-12 07:10:51 -07:00
Chris Robinson
99fcd6f816
Properly scale wide-stereo sources
2012-10-10 04:08:35 -07:00
Chris Robinson
1b7f01b7cc
The max step is no longer dependent on the channel count
2012-10-10 03:40:01 -07:00
Chris Robinson
a4f21aaa64
Set Hrtf.Moving after setting the source params instead of after mixing
2012-10-09 06:54:21 -07:00
Chris Robinson
39bc2ba65c
Build the listener matrix separately
2012-10-09 06:19:36 -07:00
Chris Robinson
c22408cb2a
Store a pointer to the listener in the context
2012-10-09 04:44:27 -07:00
Chris Robinson
a6287fd407
Add a special resampler for matching sample rates
2012-10-05 06:03:19 -07:00
Chris Robinson
f138774d78
Avoid void* arithmetic
2012-10-04 06:16:16 -07:00
Chris Robinson
068da3fe83
Make sure the output buffer pointer is updated in case multiple iterations are needed
2012-10-03 02:35:43 -07:00
Chris Robinson
12327da4fe
Remove SSE resamplers. They aren't gaining us much this way.
2012-09-24 14:47:06 -07:00
Chris Robinson
4a86983a6f
Avoid correcting for more non-existing clicks
2012-09-16 09:04:37 -07:00
Chris Robinson
c19d9d3452
Don't try to correct for non-existing clicks.
2012-09-16 08:42:36 -07:00
Chris Robinson
79b6d89b3f
Explicitly give the wet buffer 1 channel
2012-09-16 08:27:50 -07:00
Chris Robinson
a240abb6c8
Avoid building redundant mixers
2012-09-16 08:14:26 -07:00
Chris Robinson
657ee85136
Use a struct to store the FPU mode
2012-09-16 01:35:16 -07:00