Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Use ALsizei and ALint for sizes and offsets with resamplers and filters | Chris Robinson | 2017-01-16 | 1 | -1/+2 |
| | |||||
* | Use ALsizei for sizes and offsets with the mixer | Chris Robinson | 2017-01-16 | 1 | -13/+13 |
| | | | | | | Unsigned 32-bit offsets actually have some potential overhead on 64-bit targets for pointer/array accesses due to rules on integer wrapping. No idea how much impact it has in practice, but it's nice to be correct about it. | ||||
* | Add some more 'restrict' keywords | Chris Robinson | 2016-10-06 | 1 | -1/+1 |
| | |||||
* | Remove an unused struct | Chris Robinson | 2016-10-05 | 1 | -6/+0 |
| | |||||
* | Pass current and target gains directly for mixing | Chris Robinson | 2016-10-05 | 1 | -2/+3 |
| | |||||
* | Make some pointer-to-array parameters const | Chris Robinson | 2016-10-04 | 1 | -2/+3 |
| | |||||
* | Mark a global variable declaration as extern | Chris Robinson | 2016-09-11 | 1 | -1/+1 |
| | |||||
* | Make the SelectMixer function sharable | Chris Robinson | 2016-09-06 | 1 | -0/+2 |
| | |||||
* | Use a predefined identity matrix | Chris Robinson | 2016-09-05 | 1 | -0/+1 |
| | |||||
* | Rename MatrixMixerFunc to RowMixerFunc | Chris Robinson | 2016-09-02 | 1 | -3/+3 |
| | |||||
* | Clamp the maximum mixing gain boost to 16 | Chris Robinson | 2016-08-27 | 1 | -0/+2 |
| | | | | | | The combined source and listener gains now can't exceed a multiplier of 16 (~24dB). This is to avoid mixes getting out of control with large volume boosts, which reduces the effective precision given by floating-point. | ||||
* | Use a more specialized mixer function for B-Format to HRTF | Chris Robinson | 2016-08-12 | 1 | -0/+4 |
| | |||||
* | Move the input channel array out of the DirectParams and SendParams | Chris Robinson | 2016-07-13 | 1 | -13/+9 |
| | |||||
* | Store the voice output buffers separate from the params | Chris Robinson | 2016-07-11 | 1 | -6/+0 |
| | |||||
* | Use SSE for applying the HQ B-Format decoder matrices | Chris Robinson | 2016-05-31 | 1 | -0/+3 |
| | |||||
* | Use floats for the listener transforms | Chris Robinson | 2016-05-16 | 1 | -25/+0 |
| | |||||
* | Don't store the source's update method with the voice | Chris Robinson | 2016-05-16 | 1 | -3/+0 |
| | |||||
* | Avoid separate updates to sources that should apply together | Chris Robinson | 2016-05-15 | 1 | -2/+0 |
| | |||||
* | Provide asynchronous property updates for sources | Chris Robinson | 2016-05-14 | 1 | -2/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | This necessitates a change in how source updates are handled. Rather than just being able to update sources when a dependent object state is changed (e.g. a listener gain change), now all source updates must be proactively provided. Consequently, apps that do not utilize any deferring (AL_SOFT_defer_updates or alcSuspendContext/alcProcessContext) may utilize more CPU since it'll be filling out more update containers for the mixer thread to use. The upside is that there's less blocking between the app's calling thread and the mixer thread, particularly for vectors and other multi-value properties (filters and sends). Deferring behavior when used is also improved, since updates that shouldn't be applied yet are simply not provided. And when they are provided, the mixer doesn't have to ignore them, meaning the actual deferring of a context doesn't have to synchrnously force an update -- the process call will send any pending updates, which the mixer will apply even if another deferral occurs before the mixer runs, because it'll still be there waiting on the next mixer invocation. There is one slight bug introduced by this commit. When a listener change is made, or changes to multiple sources while updates are being deferred, it is possible for the mixer to run while the sources are prepping their updates, causing some of the source updates to be seen before the other. This will be fixed in short order. | ||||
* | Find a valid source buffer before updating the voice | Chris Robinson | 2016-05-09 | 1 | -2/+3 |
| | |||||
* | Improve radius behavior with scaling of ambisonic coefficients | Chris Robinson | 2016-04-24 | 1 | -5/+6 |
| | |||||
* | More directly map coefficients for ambisonic mixing buffers | Chris Robinson | 2016-04-15 | 1 | -3/+22 |
| | | | | | | Instead of looping over all the coefficients for each channel with multiplies, when we know only one will have a non-0 factor for ambisonic mixing buffers, just index the one with a non-0 factor. | ||||
* | Update some comments | Chris Robinson | 2016-04-15 | 1 | -4/+5 |
| | |||||
* | Avoid mixing all coefficients together when only some are used | Chris Robinson | 2016-04-15 | 1 | -1/+1 |
| | |||||
* | Avoid unnecessary loops for setting up effect slot b-format buffer mixing | Chris Robinson | 2016-04-14 | 1 | -0/+2 |
| | |||||
* | Move the InitRenderer method to panning.c | Chris Robinson | 2016-04-14 | 1 | -3/+13 |
| | |||||
* | Split aluInitPanning into separate functions for HRTF or UHJ | Chris Robinson | 2016-04-14 | 1 | -0/+2 |
| | |||||
* | Add config options to enable the hq ambisonic decoder | Chris Robinson | 2016-03-16 | 1 | -2/+1 |
| | |||||
* | Add a dual-band ambisonic decoder | Chris Robinson | 2016-03-15 | 1 | -1/+2 |
| | | | | | | | | | | This uses a virtual B-Format buffer for mixing, and then uses a dual-band decoder for improved positional quality. This currently only works with first- order output since first-order input (from the AL_EXT_BFROMAT extension) would not sound correct when fed through a second- or third-order decoder. This also does not currently implement near-field compensation since near-field rendering effects are not implemented. | ||||
* | Use the real output's left and right channels with HRTF | Chris Robinson | 2016-03-11 | 1 | -2/+2 |
| | |||||
* | Calculate HRTF stepping params right before mixing | Chris Robinson | 2016-02-14 | 1 | -7/+11 |
| | | | | | This means we track the current params and the target params, rather than the target params and the stepping. This closer matches the non-HRTF mixers. | ||||
* | Calculate channel gain stepping just before mixing | Chris Robinson | 2016-02-14 | 1 | -9/+11 |
| | |||||
* | Rename ComputeBFormatGains to ComputeFirstOrderGains | Chris Robinson | 2016-01-31 | 1 | -5/+5 |
| | |||||
* | Mix to multichannel for effects | Chris Robinson | 2016-01-28 | 1 | -4/+6 |
| | | | | | | This mixes to a 4-channel first-order ambisonics buffer. With ACN ordering and N3D scaling, this makes it easy to remain compatible with effects that only care about mono input since channel 0 is an unattenuated mono signal. | ||||
* | Separate calculating ambisonic coefficients from the panning gains | Chris Robinson | 2016-01-25 | 1 | -14/+34 |
| | |||||
* | Use doubles for the constructed listener matrix | Chris Robinson | 2015-11-11 | 1 | -12/+37 |
| | | | | | | This helps the stability of transforms to local space for sources that are at or near the listener. With a single-precision matrix, even FLT_EPSILON might not be enough to detect matching positions. | ||||
* | Implement a band-limited sinc resampler | Chris Robinson | 2015-11-05 | 1 | -4/+30 |
| | | | | | | | | This is essentially a 12-point sinc resampler, unless it's resampling to a rate higher than the output, at which point it will vary between 12 and 24 points and do anti-aliasing to avoid/reduce frequencies going over nyquist. Code provided by Christopher Fitzgerald. | ||||
* | Pass in the Q parameter for setting the filter parameters | Chris Robinson | 2015-11-01 | 1 | -12/+1 |
| | | | | Also better handle the peaking filter gain. | ||||
* | Fix a comment | Chris Robinson | 2015-11-01 | 1 | -1/+1 |
| | |||||
* | Use one send gain per buffer channel | Chris Robinson | 2015-10-23 | 1 | -1/+1 |
| | |||||
* | Use a constant value for the post-position padding | Chris Robinson | 2015-10-15 | 1 | -2/+5 |
| | |||||
* | Store the source's previous samples with the voice | Chris Robinson | 2015-10-15 | 1 | -0/+3 |
| | | | | | | This helps avoid different results when looping is toggled within a couple samples of the loop point, or when a processed buffer is removed while the source is only a couple samples into the next buffer. | ||||
* | Replace the sinc6 resampler with sinc8, and make SSE versions | Chris Robinson | 2015-10-11 | 1 | -4/+5 |
| | |||||
* | Implement a 6-point sinc-lanczos filter | Chris Robinson | 2015-09-29 | 1 | -2/+11 |
| | |||||
* | Replace the cubic resampler with a 4-point sinc/lanczos filter | Chris Robinson | 2015-09-27 | 1 | -3/+3 |
| | |||||
* | Don't keep selecting the mixer to use | Chris Robinson | 2015-09-27 | 1 | -1/+1 |
| | |||||
* | Increase the max pitch to 255 | Chris Robinson | 2015-09-26 | 1 | -1/+1 |
| | | | | | | | Note that this is the multiple above the device sample rate, rather than the source property limit. It could theoretically be increased to 511 by testing against UINT_MAX instead of INT_MAX, since the increment and positions are using unsigned integers. I'm just being paranoid about overflows. | ||||
* | Fix updating listener params when forcing updates | Chris Robinson | 2015-09-18 | 1 | -0/+2 |
| | |||||
* | Rename F_2PI to F_TAU | Chris Robinson | 2015-09-13 | 1 | -1/+1 |
| | |||||
* | Move HRTF params and state closer together | Chris Robinson | 2015-02-09 | 1 | -3/+3 |
| |