Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Increase the default effect slot and send count | Chris Robinson | 2017-02-21 | 1 | -1/+2 |
| | | | | | | | | | | The default number of auxiliary effect slots is now 64. This can still be raised by the config file without a hard maximum, but incurs processing cost for each effect slot generated by the app. The default number of source sends is now actually 2, as per the EFX docs. However, it can be raised up to 16 via ALC_MAX_AUXILIARY_SENDS attribute requests, rather than the previous 4. | ||||
* | Dynamically allocate the ALsource Send[] array | Chris Robinson | 2017-02-21 | 1 | -1/+1 |
| | |||||
* | Make the voices' Send[] array dynamically sized | Chris Robinson | 2017-02-21 | 1 | -1/+1 |
| | | | | | The voices are still all allocated in one chunk to avoid memory fragmentation. But they're accessed as an array of pointers since the size isn't static. | ||||
* | Reorganize ALvoice members | Chris Robinson | 2017-02-15 | 1 | -7/+6 |
| | | | | | This places the Send[] array at the end of the struct, making it easier to handle dynamically. | ||||
* | Make ALsourceProps' Send array dynamically sized | Chris Robinson | 2017-02-14 | 1 | -4/+4 |
| | | | | | | ALsourceProps' Send[] array is placed at the end of the struct, and given an indeterminate size. Extra space is allocated at the end of each struct given the number of auxiliary sends set for the device. | ||||
* | Fix build with non-C11 atomics | Chris Robinson | 2017-02-13 | 1 | -1/+1 |
| | |||||
* | Make the source state atomic | Chris Robinson | 2017-02-13 | 1 | -1/+8 |
| | | | | | 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 |
| | |||||
* | Use ALsizei in more places | Chris Robinson | 2017-01-18 | 1 | -4/+4 |
| | |||||
* | Only send source updates for sources that have updated | Chris Robinson | 2016-11-23 | 1 | -0/+2 |
| | |||||
* | Clean up finding a source's voice | Chris Robinson | 2016-11-22 | 1 | -1/+1 |
| | |||||
* | Avoid resupplying unneeded source updates | Chris Robinson | 2016-08-23 | 1 | -34/+37 |
| | | | | | The source's voice holds a copy of the last properties it received, so listener updates can make sources recalculate internal properties from that stored copy. | ||||
* | Don't store the looping state in the voice | Chris Robinson | 2016-07-31 | 1 | -4/+2 |
| | | | | | 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. | ||||
* | Move the input channel array out of the DirectParams and SendParams | Chris Robinson | 2016-07-13 | 1 | -2/+4 |
| | |||||
* | Store the voice output buffers separate from the params | Chris Robinson | 2016-07-11 | 1 | -0/+10 |
| | |||||
* | Reorder some source fields | Chris Robinson | 2016-07-07 | 1 | -5/+5 |
| | |||||
* | Remove some unnecessary volatile keywords | Chris Robinson | 2016-06-03 | 1 | -31/+31 |
| | |||||
* | Make a function static | Chris Robinson | 2016-06-01 | 1 | -1/+0 |
| | |||||
* | Make the source position calues atomic | Chris Robinson | 2016-05-19 | 1 | -2/+2 |
| | |||||
* | Avoid redundantly storing distance model settings | Chris Robinson | 2016-05-17 | 1 | -1/+1 |
| | |||||
* | Don't store the source's update method with the voice | Chris Robinson | 2016-05-16 | 1 | -3/+0 |
| | |||||
* | Provide asynchronous property updates for sources | Chris Robinson | 2016-05-14 | 1 | -23/+81 |
| | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | Hold the source map lock while handling it | Chris Robinson | 2016-05-10 | 1 | -2/+11 |
| | |||||
* | Find a valid source buffer before updating the voice | Chris Robinson | 2016-05-09 | 1 | -1/+1 |
| | |||||
* | Implement AL_EXT_STEREO_ANGLES support | Chris Robinson | 2016-03-25 | 1 | -0/+5 |
| | |||||
* | Calculate channel gain stepping just before mixing | Chris Robinson | 2016-02-14 | 1 | -0/+3 |
| | |||||
* | Make the source's buffer queue a singly-linked list | Chris Robinson | 2016-01-31 | 1 | -1/+0 |
| | |||||
* | Implement a band-limited sinc resampler | Chris Robinson | 2015-11-05 | 1 | -0/+2 |
| | | | | | | | | 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. | ||||
* | Use a constant value for the post-position padding | Chris Robinson | 2015-10-15 | 1 | -1/+1 |
| | |||||
* | Store the source's previous samples with the voice | Chris Robinson | 2015-10-15 | 1 | -0/+2 |
| | | | | | | 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. | ||||
* | Move the resampler stuff to mixer.c where it's used | Chris Robinson | 2015-10-01 | 1 | -5/+0 |
| | |||||
* | Don't keep selecting the mixer to use | Chris Robinson | 2015-09-27 | 1 | -2/+0 |
| | |||||
* | Use aluVector in some more places | Chris Robinson | 2014-12-16 | 1 | -3/+3 |
| | |||||
* | Support B-Format source rotation with AL_ORIENTATION | Chris Robinson | 2014-10-31 | 1 | -0/+1 |
| | |||||
* | Rename the source's Orientation to Direction | Chris Robinson | 2014-10-31 | 1 | -1/+1 |
| | |||||
* | Rename activesource to voice | Chris Robinson | 2014-08-21 | 1 | -3/+3 |
| | |||||
* | Use a NULL source for inactive activesources | Chris Robinson | 2014-08-21 | 1 | -2/+5 |
| | | | | Also only access the activesource's source field once per update. | ||||
* | Make the source's buffer queue head and current queue item atomic | Chris Robinson | 2014-07-31 | 1 | -5/+5 |
| | |||||
* | Add macros for generic atomic functionality | Chris Robinson | 2014-07-22 | 1 | -1/+1 |
| | |||||
* | Add a source radius property that determines the directionality of a sound | Chris Robinson | 2014-07-11 | 1 | -0/+2 |
| | | | | | | | | | At 0 distance from the listener, the sound is omni-directional. As the source and listener become 'radius' units apart, the sound becomes more directional. With HRTF, an omni-directional sound is handled using 0-delay, pass-through filter coefficients, which is blended with the real delay and coefficients as needed to become more directional. | ||||
* | Get the mixer and resampler functions when needed | Chris Robinson | 2014-06-13 | 1 | -4/+1 |
| | |||||
* | Combine the direct and send mixers | Chris Robinson | 2014-06-13 | 1 | -5/+2 |
| | |||||
* | Combine some dry and wet path types | Chris Robinson | 2014-06-13 | 1 | -2/+2 |
| | |||||
* | Move the active source's offset out of the direct params | Chris Robinson | 2014-05-24 | 1 | -0/+2 |
| | |||||
* | Use different parameters for HRTF mixers | Chris Robinson | 2014-05-18 | 1 | -1/+5 |
| | |||||
* | Apply high-pass source filters as needed | Chris Robinson | 2014-05-17 | 1 | -0/+4 |
| | |||||
* | Store the filter reference frequency in the source | Chris Robinson | 2014-05-11 | 1 | -0/+2 |
| | |||||
* | Use a struct to store the source's direct gain/gainhf properties | Chris Robinson | 2014-05-11 | 1 | -3/+4 |
| | |||||
* | Mark the buffer queue pointers volatile | Chris Robinson | 2014-05-10 | 1 | -2/+2 |
| | |||||
* | Use a RWLock to help protect the source's buffer queue | Chris Robinson | 2014-05-10 | 1 | -0/+1 |
| | | | | | In some instances this allows to to remove the device/mixer lock, or reduce how long it's held. |