Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Handle the source offset fraction as an ALsizei | Chris Robinson | 2017-04-08 | 1 | -7/+9 |
| | |||||
* | Make sure the mix is done after setting the looping property | Chris Robinson | 2017-04-02 | 1 | -0/+9 |
| | |||||
* | Fix handling of the PropsClean flags | Chris Robinson | 2017-03-23 | 1 | -1/+1 |
| | |||||
* | Add some comments for ALsource functions | Chris Robinson | 2017-03-23 | 1 | -1/+13 |
| | |||||
* | Use an atomic flag to test if a source needs to update | Chris Robinson | 2017-03-20 | 1 | -7/+7 |
| | |||||
* | Break up a function and move the code to where it's called | Chris Robinson | 2017-03-19 | 1 | -176/+169 |
| | |||||
* | Don't defer source state or offset changes | Chris Robinson | 2017-03-19 | 1 | -36/+12 |
| | |||||
* | Avoid doing sequential load for the source state | Chris Robinson | 2017-03-12 | 1 | -10/+8 |
| | |||||
* | Make the voice's 'moving' state a bitflag | Chris Robinson | 2017-03-11 | 1 | -2/+1 |
| | |||||
* | Implement NFC filters for Ambisonic rendering | Chris Robinson | 2017-03-10 | 1 | -0/+12 |
| | | | | | | | | | | | | | | NFC filters currently only work when rendering to ambisonic buffers, which includes HQ rendering and ambisonic output. There are two new config options: 'decoder/nfc' (default on) enables or disables use of NFC filters globally, and 'decoder/nfc-ref-delay' (default 0) specifies the reference delay parameter for NFC-HOA rendering with ambisonic output (a value of 0 disables NFC). Currently, NFC filters rely on having an appropriate value set for AL_METERS_PER_UNIT to get the correct scaling. HQ rendering uses the averaged speaker distances as a control/reference, and currently doesn't correct for individual speaker distances (if the speakers are all equidistant, this is fine, otherwise per-speaker correction should be done as well). | ||||
* | Remove unnecessary atomic members | Chris Robinson | 2017-03-08 | 1 | -41/+38 |
| | |||||
* | Remove an unnecessary variable | Chris Robinson | 2017-03-07 | 1 | -3/+2 |
| | |||||
* | Check that a source is actually playing before setting paused | Chris Robinson | 2017-03-07 | 1 | -28/+35 |
| | | | | | Also slightly refactor setting playing state when the device is disconnected or there's no buffers to play. | ||||
* | Store the channel count and sample size in the voice | Chris Robinson | 2017-03-07 | 1 | -11/+4 |
| | |||||
* | Don't modify the source state in the mixer | Chris Robinson | 2017-03-07 | 1 | -7/+25 |
| | |||||
* | Remove an unused function | Chris Robinson | 2017-03-07 | 1 | -1/+0 |
| | |||||
* | Make the voice's source pointer atomic | Chris Robinson | 2017-03-05 | 1 | -7/+9 |
| | |||||
* | Add a boolean to specify if a voice should be playing | Chris Robinson | 2017-03-02 | 1 | -15/+39 |
| | |||||
* | Avoid standard malloc for buffer queue entries | Chris Robinson | 2017-02-27 | 1 | -7/+7 |
| | |||||
* | Move the current buffer queue entry and play position to the voice | Chris Robinson | 2017-02-27 | 1 | -91/+100 |
| | | | | | | | | | | | | | | This has a couple behavioral changes. First and biggest is that querying AL_BUFFERS_PROCESSED from a source will always return all buffers processed when in an AL_STOPPED state. Previously all buffers would be set as processed when first becoming stopped, but newly queued buffers would *not* be indicated as processed. That old behavior was not compliant with the spec, which unequivocally states "On a source in the AL_STOPPED state, all buffers are processed." Secondly, querying AL_BUFFER on an AL_STREAMING source will now always return 0. Previously it would return the current "active" buffer in the queue, but there's no basis for that in the spec. | ||||
* | Ensure a non-playing or -paused source does not use a mixing voice | Chris Robinson | 2017-02-25 | 1 | -43/+55 |
| | |||||
* | Improve handling of source state reads | Chris Robinson | 2017-02-24 | 1 | -71/+88 |
| | | | | | | | This avoids using seq_cst for loading the source state when either inside the mixer, or otherwise protected from inconsistencies with async updates. It also fixes potential race conditions with getting the source offset just as a source stops. | ||||
* | Dynamically allocate the ALsource Send[] array | Chris Robinson | 2017-02-21 | 1 | -22/+33 |
| | |||||
* | Make the voices' Send[] array dynamically sized | Chris Robinson | 2017-02-21 | 1 | -8/+8 |
| | | | | | 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 | -3/+3 |
| | | | | | 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 | -15/+6 |
| | | | | | | 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 | -2/+2 |
| | |||||
* | Make the source state atomic | Chris Robinson | 2017-02-13 | 1 | -26/+20 |
| | | | | | Since it's modified by the mixer when playback is ended, a plain struct member isn't safe. | ||||
* | Remove a couple context lock wrapper functions | Chris Robinson | 2017-02-07 | 1 | -17/+17 |
| | |||||
* | Avoid duplicating code using a macro | Chris Robinson | 2016-12-21 | 1 | -6/+1 |
| | |||||
* | Use separate macros for atomics that don't take a memory order | Chris Robinson | 2016-12-20 | 1 | -29/+32 |
| | |||||
* | Fix an infinite loop | Chris Robinson | 2016-11-23 | 1 | -0/+1 |
| | |||||
* | Only send source updates for sources that have updated | Chris Robinson | 2016-11-23 | 1 | -1/+10 |
| | |||||
* | Clean up finding a source's voice | Chris Robinson | 2016-11-22 | 1 | -26/+29 |
| | |||||
* | Improve seqlock behavior | Chris Robinson | 2016-11-21 | 1 | -24/+32 |
| | |||||
* | Stop using almemory_order_consume | Chris Robinson | 2016-11-17 | 1 | -1/+1 |
| | |||||
* | Remove the upper limit from AL_MIN_GAIN and AL_MAX_GAIN | Chris Robinson | 2016-08-29 | 1 | -2/+2 |
| | | | | As per the current AL_SOFT_gain_clamp_ex proposal. | ||||
* | Allow sources to play while alcSuspendContext is in effect | Chris Robinson | 2016-08-26 | 1 | -1/+1 |
| | | | | | | | | | | | | | | This appears to be how Creative's Windows drivers handle it, and is necessary for at least the Windows version of UT2k4 (otherwise it tries to play a source while suspended, checks and sees it's stopped, then kills it before it's given a chance to start playing). Consequently, the internal properties it gets mixed with are determined by what the source properties are at the time of the play call, and the listener properties at the time of the suspend call. This does not change alDeferUpdatesSOFT, which will still hold the play state change until alProcessUpdatesSOFT. | ||||
* | Make a function definition static | Chris Robinson | 2016-08-23 | 1 | -1/+1 |
| | |||||
* | Hold updates for both listener and source updates | Chris Robinson | 2016-08-23 | 1 | -11/+0 |
| | |||||
* | Don't pass the context's distance model as the source's | Chris Robinson | 2016-08-23 | 1 | -10/+7 |
| | |||||
* | Avoid checking DeferUpdates for each source state change | Chris Robinson | 2016-08-08 | 1 | -8/+24 |
| | |||||
* | Don't store the looping state in the voice | Chris Robinson | 2016-07-31 | 1 | -9/+20 |
| | | | | | 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 | -3/+3 |
| | |||||
* | Reorder some source fields | Chris Robinson | 2016-07-07 | 1 | -19/+22 |
| | |||||
* | Use separate arrays for UIntMap keys and values | Chris Robinson | 2016-07-04 | 1 | -2/+2 |
| | |||||
* | Ensure voices has been updated once before mixing them | Chris Robinson | 2016-06-16 | 1 | -1/+8 |
| | | | | | | | | Sometimes the mixer is temporarily prevented from applying updates, when multiple sources need to be updated simultaneously for example, but does not prevent mixing. If the mixer runs during that time and a voice was just started, it would've mixed the voice without any internal properties being set for it. | ||||
* | Make a function static | Chris Robinson | 2016-06-01 | 1 | -6/+7 |
| | |||||
* | Hold the effectslot map lock while handling it | Chris Robinson | 2016-05-29 | 1 | -0/+3 |
| | |||||
* | Avoid the mixer lock when getting the plain source offset | Chris Robinson | 2016-05-28 | 1 | -11/+15 |
| | | | | i.e. without the latency |