aboutsummaryrefslogtreecommitdiffstats
path: root/alc/alu.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Use doubles to calculate the listener matrix translationChris Robinson2020-11-131-42/+17
| | | | | To help stablize sources near the listener, when away from origin. Also clean up some related methods and move them to more appropriate places.
* Avoid testing a bool against AL_FALSEChris Robinson2020-11-121-1/+1
|
* Use a separate structure for the active effect slot propertiesChris Robinson2020-11-071-59/+55
|
* Use more efficient sorting for effect slotsChris Robinson2020-11-051-37/+47
|
* Store the wet buffers in the contextChris Robinson2020-11-021-1/+1
| | | | | | This is rather ugly, but we need the wet buffers to remain allocated after its effect slot is deleted, because a voice can still use it for its final fade-out mix.
* Replace the mixer fraction macros with constexpr variablesChris Robinson2020-10-211-7/+7
|
* Replace some more macros with constexpr variablesChris Robinson2020-10-211-12/+12
|
* Change some more macros into constexpr variablesChris Robinson2020-10-211-5/+5
|
* Use constexpr variables in place of some macrosChris Robinson2020-10-191-4/+4
|
* Rework effect slot buffer settingChris Robinson2020-09-051-18/+0
| | | | | | | | Rather than creating an effect-specific buffer that gets passed along as a property, the buffer is set the effect state when the effect state is created, the device is updated, or the buffer is changed. The buffer can only be set while the effect slot isn't playing, so it won't be changed or updated while the mixer is processing the effect state.
* Use enum class for a couple enumsChris Robinson2020-09-011-4/+4
|
* Use a separate structure for buffer storageChris Robinson2020-08-281-3/+3
|
* Blend panned B-Format source directivity given its radiusChris Robinson2020-08-271-52/+54
|
* Store a reference to the effect buffer as an active propertyChris Robinson2020-08-241-0/+18
|
* Use an intrusive_ptr for ALeffectslotProps::StateChris Robinson2020-08-241-3/+2
|
* Change a couple functions into member functionsChris Robinson2020-08-071-30/+25
|
* Handle the front stablizer with the B-Format decoderChris Robinson2020-06-151-105/+11
|
* Use a range-for loop instead of for_eachChris Robinson2020-06-091-5/+4
|
* Use better types for array lengthsChris Robinson2020-06-091-17/+15
|
* Simplify handling the stablizer side channel delayChris Robinson2020-05-211-25/+25
|
* Avoid a log10 constant callChris Robinson2020-05-211-2/+2
|
* Use an enum class for SpatializeModeChris Robinson2020-05-211-2/+2
|
* Clear the whole bufferChris Robinson2020-05-121-4/+2
|
* Improve the front stablizerChris Robinson2020-05-051-41/+44
| | | | | Apply the all-pass+band-split only once, after generating the mid and side signals separately.
* Move some sin/cos constants out of a loopChris Robinson2020-05-041-10/+11
|
* Use global placement new for AsyncEventChris Robinson2020-04-241-3/+3
|
* Avoid an unnecessary out parameterChris Robinson2020-04-211-36/+31
|
* Move a type to where it's usedChris Robinson2020-04-161-0/+4
|
* Avoid ALfloat in some placesChris Robinson2020-04-081-50/+50
|
* 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
|