Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Dynamically allocate the ALsource Send[] array | Chris Robinson | 2017-02-21 | 1 | -1/+1 |
| | |||||
* | Remove the sinc8 resampler option | Chris Robinson | 2017-02-19 | 1 | -45/+14 |
| | | | | | Perf shows less than 1 percent CPU difference from the higher quality bsinc resampler, but uses almost twice as much memory (a 128KB lookup table). | ||||
* | Reorganize ALvoice members | Chris Robinson | 2017-02-15 | 1 | -7/+8 |
| | | | | | This places the Send[] array at the end of the struct, making it easier to handle dynamically. | ||||
* | Make the source state atomic | Chris Robinson | 2017-02-13 | 1 | -1/+1 |
| | | | | | Since it's modified by the mixer when playback is ended, a plain struct member isn't safe. | ||||
* | Put BsincState in a generic union | Chris Robinson | 2017-02-13 | 1 | -1/+1 |
| | |||||
* | Add NEON-enhanced resamplers | Chris Robinson | 2017-02-12 | 1 | -0/+16 |
| | |||||
* | Replace some ALvoid with void | Chris Robinson | 2017-01-18 | 1 | -1/+1 |
| | |||||
* | Use ALsizei in more places | Chris Robinson | 2017-01-18 | 1 | -33/+33 |
| | |||||
* | Pass the left and right buffers to the hrtf mixers directly | Chris Robinson | 2017-01-17 | 1 | -4/+6 |
| | |||||
* | Use ALsizei and ALint for sizes and offsets with resamplers and filters | Chris Robinson | 2017-01-16 | 1 | -1/+1 |
| | |||||
* | Use ALsizei for sizes and offsets with the mixer | Chris Robinson | 2017-01-16 | 1 | -3/+3 |
| | | | | | | 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. | ||||
* | Use separate macros for atomics that don't take a memory order | Chris Robinson | 2016-12-20 | 1 | -2/+2 |
| | |||||
* | Update some atomic memory ordering | Chris Robinson | 2016-11-21 | 1 | -2/+2 |
| | |||||
* | Remove an unnecessary intermediate variable | Chris Robinson | 2016-11-02 | 1 | -7/+5 |
| | |||||
* | Add some more 'restrict' keywords | Chris Robinson | 2016-10-06 | 1 | -1/+1 |
| | |||||
* | Pass current and target gains directly for mixing | Chris Robinson | 2016-10-05 | 1 | -86/+16 |
| | |||||
* | Make some pointer-to-array parameters const | Chris Robinson | 2016-10-04 | 1 | -0/+13 |
| | |||||
* | Make the SelectMixer function sharable | Chris Robinson | 2016-09-06 | 1 | -9/+9 |
| | |||||
* | Combine related members into a struct | Chris Robinson | 2016-08-24 | 1 | -1/+1 |
| | |||||
* | Don't store the looping state in the voice | Chris Robinson | 2016-07-31 | 1 | -1/+1 |
| | | | | | Certain operations on the buffer queue depend on the loop state to behave properly, so it should not be deferred until the async voice update occurs. | ||||
* | Fix use of a loop var | Chris Robinson | 2016-07-25 | 1 | -9/+11 |
| | |||||
* | Move the input channel array out of the DirectParams and SendParams | Chris Robinson | 2016-07-13 | 1 | -20/+18 |
| | |||||
* | Store the voice output buffers separate from the params | Chris Robinson | 2016-07-11 | 1 | -14/+14 |
| | |||||
* | Avoid function calls to get the HRTF sample rate and IR size | Chris Robinson | 2016-07-07 | 1 | -1/+1 |
| | |||||
* | Make the source position calues atomic | Chris Robinson | 2016-05-19 | 1 | -7/+7 |
| | |||||
* | Provide asynchronous property updates for sources | Chris Robinson | 2016-05-14 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | Use the real output's left and right channels with HRTF | Chris Robinson | 2016-03-11 | 1 | -1/+7 |
| | |||||
* | Only calculate steps for the used coefficients | Chris Robinson | 2016-02-14 | 1 | -1/+1 |
| | |||||
* | Calculate HRTF stepping params right before mixing | Chris Robinson | 2016-02-14 | 1 | -4/+36 |
| | | | | | 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 | -8/+91 |
| | |||||
* | Mix to multichannel for effects | Chris Robinson | 2016-01-28 | 1 | -1/+1 |
| | | | | | | 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. | ||||
* | Move the bsincTable to a separate file | Chris Robinson | 2015-11-10 | 1 | -988/+0 |
| | |||||
* | Update the bsinc table | Chris Robinson | 2015-11-10 | 1 | -966/+967 |
| | | | | Precision is increased to cover the full 32-bit float range. | ||||
* | Cast a double->float return to silence MSVC | Chris Robinson | 2015-11-06 | 1 | -1/+1 |
| | |||||
* | Implement a band-limited sinc resampler | Chris Robinson | 2015-11-05 | 1 | -1/+997 |
| | | | | | | | | 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. | ||||
* | Change the Kaiser rippling limit to -60dB | Chris Robinson | 2015-11-04 | 1 | -2/+2 |
| | | | | | This improves the transition cutoff, shortening its width and reducing the amount of error. | ||||
* | Replace the Lanczos window with Kaiser for the sinc resampler | Chris Robinson | 2015-11-04 | 1 | -17/+87 |
| | |||||
* | Update filter histories even when they're not used | Chris Robinson | 2015-10-24 | 1 | -0/+4 |
| | | | | | | If the filter properties are continually updated, and the HF or LF gain goes from <1, to 1, and later back to <1, the history shouldn't hold stale values from before it was at 1. | ||||
* | Set XYZ channel gains for source sends to 0 | Chris Robinson | 2015-10-23 | 1 | -18/+0 |
| | | | | | It's cleaner to just set the gains to 0 rather than to special-case B-Format in the mixer. | ||||
* | 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 | -33/+20 |
| | |||||
* | Store the source's previous samples with the voice | Chris Robinson | 2015-10-15 | 1 | -92/+32 |
| | | | | | | 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 | -13/+23 |
| | |||||
* | Move the FIR4 from SSE2 to SSE3 | Chris Robinson | 2015-10-11 | 1 | -3/+3 |
| | | | | | SSE3 can avoid the slow _MM_TRANSPOSE_PS4 call thanks to the inclusion of horizontal adds. | ||||
* | Use doubles to calculate the Lanczos coefficients | Chris Robinson | 2015-10-09 | 1 | -20/+20 |
| | |||||
* | Combine two arrays | Chris Robinson | 2015-10-01 | 1 | -13/+11 |
| | |||||
* | Move the resampler stuff to mixer.c where it's used | Chris Robinson | 2015-10-01 | 1 | -0/+53 |
| | |||||
* | Implement a 6-point sinc-lanczos filter | Chris Robinson | 2015-09-29 | 1 | -12/+26 |
| | |||||
* | Replace the cubic resampler with a 4-point sinc/lanczos filter | Chris Robinson | 2015-09-27 | 1 | -10/+19 |
| | |||||
* | Don't keep selecting the mixer to use | Chris Robinson | 2015-09-27 | 1 | -30/+32 |
| |