aboutsummaryrefslogtreecommitdiffstats
path: root/alc
Commit message (Collapse)AuthorAgeFilesLines
* Make sure prebuf is filled when starting pulseaudio playbackChris Robinson2020-03-271-1/+25
|
* Use "zero-copy" writes with pulseaudio playbackChris Robinson2020-03-261-6/+20
|
* Move some setup to a more logical placeChris Robinson2020-03-252-34/+34
|
* Dynamically allocate voice channel dataChris Robinson2020-03-254-58/+48
| | | | | | | Rather than allocating for a full 8 channels for each voice, when the vast majority will only need 1 or 2. The voice channel data is relatively big since it needs to hold HRTF coefficients and history, and this will allow increasing the maximum number of buffer channels without an obscene memory increase.
* Clear the WASAPI device list when enumeratingChris Robinson2020-03-241-15/+12
|
* Don't send close messages for unopened WASAPI devicesChris Robinson2020-03-241-2/+10
|
* Simplify clamping the voice mix sizeChris Robinson2020-03-231-8/+9
|
* More cleanup for the pitch shifterChris Robinson2020-03-221-102/+70
|
* Use make_unique instead of new'ing into a unique_ptrChris Robinson2020-03-221-2/+2
|
* Avoid assigning in a conditional expressionChris Robinson2020-03-221-1/+3
|
* Properly allocate voicesChris Robinson2020-03-221-0/+3
|
* Use the correct include for al::fstreamChris Robinson2020-03-221-1/+1
|
* Silence a potential type truncation warningChris Robinson2020-03-221-1/+2
|
* Some type cleanupChris Robinson2020-03-222-42/+39
|
* Clean up the pitch and frequency shifter someChris Robinson2020-03-222-65/+56
|
* Fix the frequency shifter channel panningChris Robinson2020-03-221-2/+2
|
* Avoid some pre-C++14 workaroundsChris Robinson2020-03-226-23/+20
|
* Add missing semicolonChris Robinson2020-03-221-1/+1
|
* Remove the check for stat()Chris Robinson2020-03-212-4/+0
| | | | It's POSIX-2001 standard
* Cleanup some helper codeChris Robinson2020-03-201-31/+36
|
* Move CPUCapFlags and FillCPUCaps to their own sourceChris Robinson2020-03-202-133/+147
|
* Move the FPUCtl methods to its own sourceChris Robinson2020-03-206-51/+60
|
* Avoid a function call to get the channel countChris Robinson2020-03-181-1/+1
|
* Rename a method to be clearerChris Robinson2020-03-181-15/+13
|
* Make the pulseaudio enumeration functions class methodsChris Robinson2020-03-181-112/+113
|
* Remove a couple unused methodsChris Robinson2020-03-181-2/+0
|
* Use a busy-wait when synchronizing against the mixerChris Robinson2020-03-161-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 propertiesChris Robinson2020-03-041-14/+7
| | | | | | | | | | | | | | | | 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.
* Use a new voice state to indicate a pending source offset changeChris Robinson2020-03-042-8/+10
|
* Add a helper to wait for the device mixChris Robinson2020-03-033-14/+15
|
* Use an intrusive_ptr for the device's HrtfStoreChris Robinson2020-03-016-30/+23
|
* Use real-time priority by defaultChris Robinson2020-02-261-8/+3
|
* Remove unnecessary locks now that the mixer doesn't require oneChris Robinson2020-02-2618-64/+17
|
* Use a VoiceChange object to change the offset of a playing sourceChris Robinson2020-02-261-0/+26
|
* Rename the voice's PendingStop to PendingChangeChris Robinson2020-02-262-3/+3
|
* Make the source's send array static instead of dynamicChris Robinson2020-02-251-18/+12
|
* Reduce the maximum number of source sends to 6Chris Robinson2020-02-251-1/+1
|
* Ignore VoiceChange objects while disconnectedChris Robinson2020-02-241-1/+25
| | | | | And try to improve ALvoice/VoiceChange handling when attempting to recover a lost device.
* Simplify replaying a sourceChris Robinson2020-02-232-7/+29
|
* Remove a couple unnecessary type aliasesChris Robinson2020-02-222-3/+1
|
* Avoid a single function call in a loopChris Robinson2020-02-211-68/+66
|
* Use an array of ALvoice pointers for the active voicesChris Robinson2020-02-214-87/+96
| | | | | | 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.
* Handle playing and pausing with VoiceChangesChris Robinson2020-02-211-0/+13
|
* Asynchronously stop and rewind voicesChris Robinson2020-02-201-3/+2
|
* Asynchronously stop voices if its source is being deletedChris Robinson2020-02-203-0/+102
|
* Add a voice flag to indicate a voice has a pending stopChris Robinson2020-02-201-4/+7
| | | | Pending/asynchronous stops to be implemented soon.
* Add AL_SOFTX_callback_buffer to the extension listChris Robinson2020-02-191-0/+4
|
* Workaround a 32-bit GCC/MinGW TLS bugChris Robinson2020-02-181-16/+22
|
* Handle running the buffer callback in the voiceChris Robinson2020-02-172-18/+77
|
* Add a callback flag for voicesChris Robinson2020-02-172-6/+17
|