aboutsummaryrefslogtreecommitdiffstats
path: root/core/device.h
Commit message (Collapse)AuthorAgeFilesLines
* Use an atomic unique_ptr for the device's context arrayChris Robinson2024-01-011-6/+1
|
* Avoid placement new for the output limiterChris Robinson2023-12-311-1/+1
|
* Ensure struct members are initializedChris Robinson2023-12-201-5/+5
|
* Remove DEF_NEWDELChris Robinson2023-12-161-2/+0
| | | | | C++17 provides alignment-aware allocators for us, so we don't need to use our own to make sure classes/structs are properly aligned.
* Remove unnecessary macro parameter listsChris Robinson2023-12-151-1/+1
|
* Track the device state for being properly configuredChris Robinson2023-12-121-2/+7
| | | | And don't allow resuming if the backend device isn't properly set up.
* Refactor FlexArrayChris Robinson2023-12-101-0/+1
| | | | | This avoids using an array of 1 as a flexible array member, and instead uses a span to reference the memory after itself.
* More clang-tidy fixesChris Robinson2023-12-091-1/+3
|
* Clean up some more clang-tidy warningsChris Robinson2023-12-081-17/+17
|
* Use RAII to handle writing under the mixer seqlockChris Robinson2023-12-041-2/+26
|
* Remove some unnecessary atomic wrappersChris Robinson2023-12-031-1/+1
|
* Make the device clock members atomicChris Robinson2023-12-031-2/+16
| | | | | | Even though they're protected by a SeqLock of sorts, it's still UB to read and write non-atomic vars from different threads. It's fine to do relaxed reads and writes given the lock though, to help alleviate the cost.
* fix printf format for MinGW (#942)Rosen Penev2023-12-031-2/+2
| | | | | | With gcc, mingw uses gnu_printf. With clang, printf is used as it does not support gnu_printf. Use the internal header to match this properly. Signed-off-by: Rosen Penev <[email protected]>
* Use a byte for the channel indexChris Robinson2023-10-221-9/+9
|
* Preliminary implementation of WASAPI spatial audio playbackChris Robinson2023-09-201-0/+5
|
* Clean up some more includesChris Robinson2023-05-121-3/+1
|
* Use more appropriate types for some enumsChris Robinson2023-05-061-3/+4
|
* Use macros for the likely/unlikely attributesChris Robinson2023-03-011-1/+1
| | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places.
* Separate decoding and mixing from resamplingChris Robinson2023-02-121-3/+2
|
* Transpose the ambisonic voice mixing matrixChris Robinson2023-01-251-0/+1
| | | | | To more efficiently prepare the panning coefficients. Also avoid making a stack copy of the matrix to reuse as the target.
* Change a couple macros to constexpr variablesChris Robinson2023-01-161-6/+6
|
* Update a commentChris Robinson2023-01-081-1/+1
|
* Simplify handling effect output for spatial effectsChris Robinson2023-01-041-3/+33
| | | | | | | | | | | | Effects are given a 3D ambisonic buffer of the same order as the device, for processing surround sound. Effects that pass input channels to matching output channels as it processes them don't need to mix each input channel to all output channels. At most, an input channel may mix to a different output channel, if the target buffer uses a different channel layout, and need a gain adjustment, if it uses a different scaling. With a 2D output buffer, a number of channels can be skipped altogether.
* Avoid using a macro to wrap standard attributesChris Robinson2022-12-061-1/+1
|
* Avoid some uses of the LIKELY/UNLIKELY macrosChris Robinson2022-12-051-1/+1
|
* Rename some variables to more clearly indicate their meaningChris Robinson2022-10-281-1/+1
|
* Track if doing 2D mixing onlyChris Robinson2022-09-041-0/+2
| | | | And use it to select the proper HF scales
* Allow the remix tables to be variable lengthChris Robinson2022-08-281-1/+1
|
* Use the right array size for the mixing parametersChris Robinson2022-08-141-1/+1
|
* Parameterize the UHJ filter lengthChris Robinson2022-08-071-2/+2
|
* Avoid putting a 1KB array on the stackChris Robinson2022-08-021-1/+4
|
* Change an inline function to a class methodChris Robinson2022-08-021-7/+7
|
* Use 48khz by default for playbackChris Robinson2022-07-051-2/+2
|
* Remove the reversed all-pass trick in MixDirectHrtfBaseChris Robinson2022-03-301-1/+1
| | | | Given the minimum phase HRTF, it's not going to stay linear phase anyway.
* Make and use a Default enum for StereoEncodingChris Robinson2022-03-291-2/+4
|
* Pass a span of pointers to the UHJ/SuperStereo decoderChris Robinson2022-01-011-1/+2
|
* Avoid initializing the NFC filter for every voice channelChris Robinson2021-12-111-2/+7
| | | | | | It can be initialized once with the device's speaker distance since it won't change in between resets, then copied into the voice where it can be adjusted as needed.
* Make the backend pointer part of ALCdevice instead of DeviceBaseChris Robinson2021-11-191-8/+0
|
* Use a tri-state optional for the stereo output modeChris Robinson2021-10-241-0/+6
|
* Use a flag to indicate headphone-like outputChris Robinson2021-10-231-1/+4
|
* Don't allocate full buffer lines in each voiceChris Robinson2021-06-211-0/+7
| | | | | | There's now effectively a 16-channel limit for buffers (as determined by the number of elements in DeviceBase::mSampleData). Any more than that are ignored when mixing.
* Add an option to mix directly in the JACK callbackChris Robinson2021-06-081-0/+4
|
* Move GetChannelIdxByName and clean up some more includesChris Robinson2021-04-261-0/+16
|
* Move the DeviceBase declaraction to coreChris Robinson2021-04-241-0/+274