Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Some more ALfloat->float cleanup | Chris Robinson | 2020-04-03 | 1 | -8/+8 |
| | |||||
* | Use structs for the mixer and resampler tags | Chris Robinson | 2020-04-03 | 1 | -0/+20 |
| | |||||
* | Generate the bsinc tables using constexpr methods | Chris Robinson | 2020-04-02 | 1 | -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 header | Chris Robinson | 2020-03-30 | 1 | -0/+1 |
| | |||||
* | Rename ALvoice and related structs to Voice | Chris Robinson | 2020-03-28 | 1 | -33/+32 |
| | |||||
* | Avoid AL[C]boolean for internal use | Chris Robinson | 2020-03-28 | 1 | -1/+1 |
| | |||||
* | Move some setup to a more logical place | Chris Robinson | 2020-03-25 | 1 | -32/+1 |
| | |||||
* | Dynamically allocate voice channel data | Chris Robinson | 2020-03-25 | 1 | -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 expression | Chris Robinson | 2020-03-22 | 1 | -1/+3 |
| | |||||
* | Move the FPUCtl methods to its own source | Chris Robinson | 2020-03-20 | 1 | -1/+1 |
| | |||||
* | Fix voices being forced to update without valid properties | Chris Robinson | 2020-03-04 | 1 | -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 change | Chris Robinson | 2020-03-04 | 1 | -5/+6 |
| | |||||
* | Use an intrusive_ptr for the device's HrtfStore | Chris Robinson | 2020-03-01 | 1 | -2/+2 |
| | |||||
* | Use a VoiceChange object to change the offset of a playing source | Chris Robinson | 2020-02-26 | 1 | -0/+26 |
| | |||||
* | Rename the voice's PendingStop to PendingChange | Chris Robinson | 2020-02-26 | 1 | -2/+2 |
| | |||||
* | Simplify replaying a source | Chris Robinson | 2020-02-23 | 1 | -7/+28 |
| | |||||
* | 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 | 1 | -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 VoiceChanges | Chris Robinson | 2020-02-21 | 1 | -0/+13 |
| | |||||
* | Asynchronously stop and rewind voices | Chris Robinson | 2020-02-20 | 1 | -3/+2 |
| | |||||
* | Asynchronously stop voices if its source is being deleted | Chris Robinson | 2020-02-20 | 1 | -0/+47 |
| | |||||
* | Use a triplet struct array instead of separate arrays | Chris Robinson | 2020-02-09 | 1 | -22/+22 |
| | |||||
* | Consistently use distant wavefronts for 0 distance | Chris Robinson | 2020-02-08 | 1 | -6/+3 |
| | |||||
* | Clear voice target gains earlier | Chris Robinson | 2020-02-08 | 1 | -11/+12 |
| | |||||
* | Make sure stereo angles are kept in-range. | Chris Robinson | 2020-01-31 | 1 | -3/+14 |
| | |||||
* | Only sort active effect slots as needed | Chris Robinson | 2020-01-18 | 1 | -6/+18 |
| | |||||
* | Simplify appending delayed samples | Chris Robinson | 2020-01-14 | 1 | -6/+6 |
| | |||||
* | Signal the event handler only once per update | Chris Robinson | 2020-01-14 | 1 | -34/+40 |
| | |||||
* | Make sure unassociated voices give back their update structs | Chris Robinson | 2020-01-08 | 1 | -25/+29 |
| | |||||
* | Combine identical arrays | Chris Robinson | 2020-01-04 | 1 | -4/+1 |
| | |||||
* | Handle downmixing for mono output | Chris Robinson | 2019-12-29 | 1 | -2/+1 |
| | |||||
* | Ignore direct channels for mono and B-Format buffers | Chris Robinson | 2019-12-29 | 1 | -1/+2 |
| | |||||
* | Start a new extension for a new direct_channels state | Chris Robinson | 2019-12-28 | 1 | -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 input | Chris Robinson | 2019-12-25 | 1 | -10/+9 |
| | |||||
* | Fix a shadowed parameter warning | Chris Robinson | 2019-12-23 | 1 | -9/+10 |
| | |||||
* | Avoid reading a struct field twice | Chris Robinson | 2019-12-23 | 1 | -2/+2 |
| | |||||
* | Handle padding between device sample frames | Chris Robinson | 2019-12-21 | 1 | -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 parameters | Chris Robinson | 2019-12-21 | 1 | -20/+13 |
| | | | | One for whether a slope parameter is used, and one for bandwidth. | ||||
* | Improve gain/hf/lf packing when processing voice updates | Chris Robinson | 2019-12-21 | 1 | -96/+84 |
| | |||||
* | Remix missing channels with direct channels enabled | Chris Robinson | 2019-12-19 | 1 | -1/+15 |
| | | | | Instead of dropping them. | ||||
* | Don't apply direct channels with mono output | Chris Robinson | 2019-12-18 | 1 | -1/+1 |
| | |||||
* | Don't process direct channel sources with attenuation | Chris Robinson | 2019-12-17 | 1 | -4/+4 |
| | |||||
* | Update a comment since B-Format input isn't always FuMa | Chris Robinson | 2019-12-17 | 1 | -2/+2 |
| | |||||
* | Correctly scale spatialized B-Format sources | Chris Robinson | 2019-12-17 | 1 | -2/+2 |
| | |||||
* | Use normal panning for B-Format output | Chris Robinson | 2019-12-17 | 1 | -1/+1 |
| | | | | It can never work since it only uses auxiliary channel labels. | ||||
* | Don't apply stereo panning with direct channels enabled | Chris Robinson | 2019-12-17 | 1 | -3/+6 |
| | |||||
* | Handle the buffer's ambisonic properties | Chris Robinson | 2019-12-02 | 1 | -12/+24 |
| | |||||
* | Make B-Format rotation more robust | Chris Robinson | 2019-12-01 | 1 | -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-time | Chris Robinson | 2019-10-25 | 1 | -1/+1 |
| | |||||
* | Use better types for some specific sizes | Chris Robinson | 2019-10-13 | 1 | -15/+15 |
| |