Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Cleanup some helper code | Chris Robinson | 2020-03-20 | 1 | -31/+36 |
| | |||||
* | Move CPUCapFlags and FillCPUCaps to their own source | Chris Robinson | 2020-03-20 | 3 | -133/+148 |
| | |||||
* | Move the FPUCtl methods to its own source | Chris Robinson | 2020-03-20 | 8 | -53/+63 |
| | |||||
* | Avoid a function call to get the channel count | Chris Robinson | 2020-03-18 | 1 | -1/+1 |
| | |||||
* | Rename a method to be clearer | Chris Robinson | 2020-03-18 | 1 | -15/+13 |
| | |||||
* | Make the pulseaudio enumeration functions class methods | Chris Robinson | 2020-03-18 | 1 | -112/+113 |
| | |||||
* | Remove a couple unused methods | Chris Robinson | 2020-03-18 | 1 | -2/+0 |
| | |||||
* | Use a busy-wait when synchronizing against the mixer | Chris Robinson | 2020-03-16 | 1 | -2/+2 |
| | | | | | | | | The mixer should have higher priority than any thread that can make AL calls, so even on single-core systems, it shouldn't stall the mix. It will, however, return back to the caller as soon as it can, while yielding will give up the timeslice if there's any other thread waiting to process even if the mix is almost done. | ||||
* | Fix voices being forced to update without valid properties | Chris Robinson | 2020-03-04 | 2 | -16/+10 |
| | | | | | | | | | | | | | | | | When starting a voice, the source ID was set before its first update struct was provided, creating a small window where a listener or effect slot update could force a voice to update without it having any valid properties to update with. Supplying the update struct first would create a different race, where the mixer could see a voice without a source but with an update struct, causing the update struct to be 'freed' without being applied. The fix here is to provide the update struct before setting the source ID, and change the mixer to ignore update structs for voices without a source ID. This can pseudo-orphan the updates that get set on a voice just as it stops, leaving the struct unusable until the voice is used again, or the voice gets deleted which will clear it. But it allows the update struct to stay in place and get applied once the voice gets a source ID. | ||||
* | Avoid redundantly setting voice members | Chris Robinson | 2020-03-04 | 1 | -26/+24 |
| | |||||
* | Don't change flags after InitVoice | Chris Robinson | 2020-03-04 | 1 | -11/+9 |
| | |||||
* | Use a new voice state to indicate a pending source offset change | Chris Robinson | 2020-03-04 | 3 | -14/+17 |
| | |||||
* | Avoid unnecessarily reclearing some variables | Chris Robinson | 2020-03-03 | 1 | -51/+36 |
| | |||||
* | Add a helper to wait for the device mix | Chris Robinson | 2020-03-03 | 5 | -36/+28 |
| | |||||
* | Use an intrusive_ptr for the device's HrtfStore | Chris Robinson | 2020-03-01 | 6 | -30/+23 |
| | |||||
* | Simplify getting a voice for a new source offset | Chris Robinson | 2020-02-28 | 1 | -17/+21 |
| | |||||
* | Use real-time priority by default | Chris Robinson | 2020-02-26 | 2 | -11/+6 |
| | |||||
* | Remove unnecessary locks now that the mixer doesn't require one | Chris Robinson | 2020-02-26 | 18 | -64/+17 |
| | |||||
* | Use a VoiceChange object to change the offset of a playing source | Chris Robinson | 2020-02-26 | 2 | -61/+164 |
| | |||||
* | Rename the voice's PendingStop to PendingChange | Chris Robinson | 2020-02-26 | 3 | -9/+9 |
| | |||||
* | Move voice initialization to a separate function | Chris Robinson | 2020-02-26 | 1 | -97/+103 |
| | |||||
* | Avoid storing the source offset when it's just read and reset | Chris Robinson | 2020-02-26 | 1 | -27/+27 |
| | |||||
* | Make the source's send array static instead of dynamic | Chris Robinson | 2020-02-25 | 3 | -35/+22 |
| | |||||
* | Update an comment about the default HRTF filters | Chris Robinson | 2020-02-25 | 1 | -2/+1 |
| | |||||
* | Reduce the maximum number of source sends to 6 | Chris Robinson | 2020-02-25 | 2 | -2/+2 |
| | |||||
* | Handle playing voices after disconnection | Chris Robinson | 2020-02-24 | 1 | -5/+11 |
| | |||||
* | Improve searching for the next voice when playing multiple sources | Chris Robinson | 2020-02-24 | 1 | -4/+5 |
| | | | | | Instead of searching from the beginning of the voice list for each source, just continue searching from the last source's voice. | ||||
* | Ignore VoiceChange objects while disconnected | Chris Robinson | 2020-02-24 | 2 | -1/+34 |
| | | | | | And try to improve ALvoice/VoiceChange handling when attempting to recover a lost device. | ||||
* | Simplify replaying a source | Chris Robinson | 2020-02-23 | 3 | -13/+32 |
| | |||||
* | Remove AL_SOFT_map_buffer from alffplay and add AL_SOFT_callback_buffer | Chris Robinson | 2020-02-23 | 1 | -153/+365 |
| | | | | | | | The former doesn't really help too much since buffers still need to be (re)filled and (de)queued individually. A callback buffer, on the other hand, allows for greater efficiency since it just needs to write into a ring buffer that the mixer will directly read from. | ||||
* | Fix voice allocation increase amount | Chris Robinson | 2020-02-22 | 1 | -1/+1 |
| | |||||
* | Remove a couple unnecessary type aliases | Chris Robinson | 2020-02-22 | 3 | -5/+3 |
| | |||||
* | Avoid a single function call in a loop | Chris Robinson | 2020-02-21 | 1 | -68/+66 |
| | |||||
* | Use an array of ALvoice pointers for the active voices | Chris Robinson | 2020-02-21 | 5 | -112/+130 |
| | | | | | | This allows growing the array atomically with the mixer since the ALvoice objects themselves don't move, and a new larger array of them can be swapped in without blocking the mixer. | ||||
* | Set the voice's property update after the source ID | Chris Robinson | 2020-02-21 | 1 | -3/+3 |
| | | | | Otherwise the mixer has a chance to throw it out before realizing it's needed. | ||||
* | Handle playing and pausing with VoiceChanges | Chris Robinson | 2020-02-21 | 2 | -71/+84 |
| | |||||
* | Prepare VoiceChange objects one at a time | Chris Robinson | 2020-02-21 | 1 | -62/+35 |
| | |||||
* | Don't unnecessarily count all voices when playing sources | Chris Robinson | 2020-02-21 | 1 | -9/+8 |
| | |||||
* | Asynchronously stop and rewind voices | Chris Robinson | 2020-02-20 | 2 | -39/+46 |
| | |||||
* | Asynchronously stop voices if its source is being deleted | Chris Robinson | 2020-02-20 | 4 | -12/+154 |
| | |||||
* | Add a voice flag to indicate a voice has a pending stop | Chris Robinson | 2020-02-20 | 2 | -6/+11 |
| | | | | Pending/asynchronous stops to be implemented soon. | ||||
* | Add a streaming example using a callback buffer | Chris Robinson | 2020-02-20 | 2 | -0/+442 |
| | |||||
* | Add AL_SOFTX_callback_buffer to the extension list | Chris Robinson | 2020-02-19 | 1 | -0/+4 |
| | |||||
* | Workaround a 32-bit GCC/MinGW TLS bug | Chris Robinson | 2020-02-18 | 1 | -16/+22 |
| | |||||
* | Flag the voice as callback-based when given a callback buffer | Chris Robinson | 2020-02-17 | 1 | -1/+7 |
| | |||||
* | Don't bother looping the calculated source offset | Chris Robinson | 2020-02-17 | 1 | -14/+6 |
| | | | | | The offset shouldn't be in a non-wrapped state when playing, and when not playing it's always 0 anyway. | ||||
* | Don't allow setting a source offset for a callback | Chris Robinson | 2020-02-17 | 1 | -0/+6 |
| | |||||
* | Handle running the buffer callback in the voice | Chris Robinson | 2020-02-17 | 5 | -25/+83 |
| | |||||
* | Add a callback flag for voices | Chris Robinson | 2020-02-17 | 2 | -6/+17 |
| | |||||
* | Prevent queueing a callback buffer | Chris Robinson | 2020-02-17 | 1 | -3/+10 |
| | | | | Also prevent setting it on multiple sources |