aboutsummaryrefslogtreecommitdiffstats
path: root/alc/alu.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Some more ALfloat->float cleanupChris Robinson2020-04-031-8/+8
|
* Use structs for the mixer and resampler tagsChris Robinson2020-04-031-0/+20
|
* Generate the bsinc tables using constexpr methodsChris Robinson2020-04-021-2/+2
| | | | | | | | All the methods used should be compliant with C++14 constexpr rules. However, the number of scales and phases cause GenerateBSincCoeffs to reach the allowed step limit, preventing full compile-time generation. It's not a terribly big deal, it'll generate them very quickly when loading, but it does prevent using shared read-only memory pages.
* Move the FrontStablizer definition to its own headerChris Robinson2020-03-301-0/+1
|
* Rename ALvoice and related structs to VoiceChris Robinson2020-03-281-33/+32
|
* Avoid AL[C]boolean for internal useChris Robinson2020-03-281-1/+1
|
* Move some setup to a more logical placeChris Robinson2020-03-251-32/+1
|
* Dynamically allocate voice channel dataChris Robinson2020-03-251-16/+15
| | | | | | | 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.
* Avoid assigning in a conditional expressionChris Robinson2020-03-221-1/+3
|
* Move the FPUCtl methods to its own sourceChris Robinson2020-03-201-1/+1
|
* 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-041-5/+6
|
* Use an intrusive_ptr for the device's HrtfStoreChris Robinson2020-03-011-2/+2
|
* 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-261-2/+2
|
* Simplify replaying a sourceChris Robinson2020-02-231-7/+28
|
* 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-211-13/+14
| | | | | | 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-201-0/+47
|
* Use a triplet struct array instead of separate arraysChris Robinson2020-02-091-22/+22
|
* Consistently use distant wavefronts for 0 distanceChris Robinson2020-02-081-6/+3
|
* Clear voice target gains earlierChris Robinson2020-02-081-11/+12
|
* Make sure stereo angles are kept in-range.Chris Robinson2020-01-311-3/+14
|
* Only sort active effect slots as neededChris Robinson2020-01-181-6/+18
|
* Simplify appending delayed samplesChris Robinson2020-01-141-6/+6
|
* Signal the event handler only once per updateChris Robinson2020-01-141-34/+40
|
* Make sure unassociated voices give back their update structsChris Robinson2020-01-081-25/+29
|
* Combine identical arraysChris Robinson2020-01-041-4/+1
|
* Handle downmixing for mono outputChris Robinson2019-12-291-2/+1
|
* Ignore direct channels for mono and B-Format buffersChris Robinson2019-12-291-1/+2
|
* Start a new extension for a new direct_channels stateChris Robinson2019-12-281-7/+9
| | | | | So existing behavior remains consistent for anything that needs it, and new behavior is opt-in.
* Use a span for the band-splitter inputChris Robinson2019-12-251-10/+9
|
* Fix a shadowed parameter warningChris Robinson2019-12-231-9/+10
|
* Avoid reading a struct field twiceChris Robinson2019-12-231-2/+2
|
* Handle padding between device sample framesChris Robinson2019-12-211-17/+17
| | | | | | | | The padding must be constant and sample type aligned (e.g. some fixed multiple of two bytes between the start of two consecutive frames for 16-bit output). The intent is to always have the ability for stereo output with WASAPI even if the device has some other unsupported configuration, as long as front-left and front-right exist.
* Use unique setters for biquad filter parametersChris Robinson2019-12-211-20/+13
| | | | One for whether a slope parameter is used, and one for bandwidth.
* Improve gain/hf/lf packing when processing voice updatesChris Robinson2019-12-211-96/+84
|
* Remix missing channels with direct channels enabledChris Robinson2019-12-191-1/+15
| | | | Instead of dropping them.
* Don't apply direct channels with mono outputChris Robinson2019-12-181-1/+1
|
* Don't process direct channel sources with attenuationChris Robinson2019-12-171-4/+4
|
* Update a comment since B-Format input isn't always FuMaChris Robinson2019-12-171-2/+2
|
* Correctly scale spatialized B-Format sourcesChris Robinson2019-12-171-2/+2
|
* Use normal panning for B-Format outputChris Robinson2019-12-171-1/+1
| | | | It can never work since it only uses auxiliary channel labels.
* Don't apply stereo panning with direct channels enabledChris Robinson2019-12-171-3/+6
|
* Handle the buffer's ambisonic propertiesChris Robinson2019-12-021-12/+24
|
* Make B-Format rotation more robustChris Robinson2019-12-011-34/+203
| | | | | This should now handle higher orders, and can be easily extended to non-FuMa layouts and scalings.
* Avoid static constexpr for arrays iterated over at run-timeChris Robinson2019-10-251-1/+1
|
* Use better types for some specific sizesChris Robinson2019-10-131-15/+15
|