aboutsummaryrefslogtreecommitdiffstats
path: root/alc/panning.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Replace al::optional with std::optionalChris Robinson2023-05-041-2/+2
|
* Change a couple macros to constexpr variablesChris Robinson2023-01-161-8/+8
|
* clang-tidy cleanups (#800)Rosen Penev2023-01-151-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * clang-tidy: use bool literals Found with modernize-use-bool-literals Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: replace std::bind with lambdas Found with modernize-avoid-bind Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: use data() instead of pointer stuff Found with readability-container-data-pointe Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: use empty() Found with readability-container-size-empty Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: remove static in anon namespace Found with readability-static-definition-in-anonymous-namespace Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: remove const return Found with readability-const-return-type Signed-off-by: Rosen Penev <[email protected]> Signed-off-by: Rosen Penev <[email protected]>
* Use a span instead of a count+pointerChris Robinson2023-01-111-1/+1
|
* Rename some struct membersChris Robinson2023-01-101-2/+2
| | | | And make a related function a member function
* Avoid using a reversed all-pass for the front stablizerChris Robinson2023-01-061-2/+2
| | | | | | While a neat trick, it's been shown to be too volatile and add noise as the signal gets louder. It's better to just accept the phase shift and ensure everything stays aligned.
* Add preliminary support for 7.1.4 output modesChris Robinson2022-11-031-0/+31
| | | | | | | | I don't know how different sound APIs handle 7.1.4 ("Atmos" or "Auro3D") output, but currently it simply specifies the additional channels with the height channel labels. This isn't likely how it works for a virtualized channel bed, for playing over other with-height configurations (7.1.2, 5.1.4, etc), but this should be an okay start.
* Add missing headerChris Robinson2022-10-221-0/+1
|
* Rename some variables to be less ambiguousChris Robinson2022-10-211-2/+2
|
* Add separate filter options for UHJ encoding and decodingChris Robinson2022-10-211-3/+13
|
* Add an IIR filter option for UHJ encoding/decodingChris Robinson2022-10-211-1/+1
| | | | | | This uses the reversed-allpass trick to maintain linear phase. with a 256- sample look-ahead/delay to minimize distortion. This should better preserve low frequencies while maintaining a proper phase response.
* Correctly check if a multi-channel decoder is setChris Robinson2022-09-161-1/+1
|
* Update the built-in quad and 7.1 decodersChris Robinson2022-09-161-26/+26
| | | | | Make them first- and second-order respectively. They don't have enough speakers to really be suitable for higher orders than that.
* Don't pack ambdec coefficientsChris Robinson2022-09-121-64/+22
| | | | | | | | | Tne coefficients are placed as for full 3D ACN handling. The ChanMask just indicates which have potentially useful values. This could be a bit more agressive and clear ChanMask bits for channels that don't contribute to output, so that a decoder the specifies height-related channel bits, but leaves their coefficients all 0, can be handled as 2D. I don't expect many ambdec files to be like that, though.
* Ensure coeff_scale is set for ambdec filesChris Robinson2022-09-111-0/+1
|
* Track if doing 2D mixing onlyChris Robinson2022-09-041-1/+6
| | | | And use it to select the proper HF scales
* Use an icosahedron for 3D second-orderChris Robinson2022-09-011-32/+33
|
* Use a more precise 3D7.1 decoderChris Robinson2022-08-301-12/+12
|
* Use amplitude-matching HF scaling for non-FOA HRTF outputChris Robinson2022-08-151-4/+4
|
* Update in incorrect commentChris Robinson2022-08-151-1/+1
|
* Update some arrays in preparation for fourth order supportChris Robinson2022-08-141-1/+3
|
* Add an option for higher quality UHJ filtersChris Robinson2022-08-081-1/+4
|
* Parameterize the UHJ filter lengthChris Robinson2022-08-071-1/+1
|
* Change an inline function to a class methodChris Robinson2022-08-021-1/+1
|
* Check the channel count for a valid DecoderViewChris Robinson2022-08-021-1/+1
| | | | | Ambisonic decoders can be zeroth order, but they need at least one output channel.
* Don't store and manage wet buffers separatelyChris Robinson2022-07-151-39/+2
|
* Add a speaker-dist config optionChris Robinson2022-07-071-7/+15
| | | | | | | This can be used to specify an average speaker distance without having the modify the decoder config files. This also sets a default value of 1, letting near-field effects work (if imprecisely) without an explicitly-configured distance.
* Handle 3D7.1 as a separate channel configurationChris Robinson2022-04-261-4/+54
| | | | | | | It's treated as 5.1 + 2 aux channels. This allows AL_DIRECT_CHANNELS_SOFT to behave better, not forwarding rear left/right channel inputs to lower front and upper rear, and allows reporting a more appropriate output mode to the app instead of 7.1.
* Make and use a Default enum for StereoEncodingChris Robinson2022-03-291-5/+5
|
* Get rid of MathDefsChris Robinson2022-01-271-2/+2
|
* Add a third-order ambisonic decoder for HRTFChris Robinson2022-01-051-2/+59
| | | | | Using the 20-channel dodecahedron, seems to be good enough to handle 16-channel third-order ambisonics.
* Update the HRTF second-order ambisonic decoderChris Robinson2022-01-041-42/+27
| | | | This only needs 14 virtual channels instead of 20.
* Avoid initializing the NFC filter for every voice channelChris Robinson2021-12-111-0/+4
| | | | | | 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.
* Adjust the crossover frequency for HRTF ambisonic decodingChris Robinson2021-12-081-0/+13
|
* Use a tri-state optional for the stereo output modeChris Robinson2021-10-241-4/+5
|
* Pass a parameter to aluInitRenderer to specify UHJ outputChris Robinson2021-10-231-21/+13
|
* Use a flag to indicate headphone-like outputChris Robinson2021-10-231-15/+1
|
* Don't reset the ambisonic layout and scale with stereo outputChris Robinson2021-10-231-5/+1
|
* Don't pass the whole decoder to InitDistanceCompChris Robinson2021-10-231-4/+4
|
* Fix the ambisonic scaling used by custom decodersChris Robinson2021-10-231-0/+1
|
* Remove some lingering mentions of surround51rearChris Robinson2021-10-211-4/+2
|
* Use an optional bool instead of two tri-state enumsChris Robinson2021-07-311-56/+37
|
* Avoid 5.1Rear as its own channel configurationChris Robinson2021-07-301-25/+3
| | | | | | It messes with 5.1 sources using direct channels, and the surround channels are supposed to map to the side labels. Individual backends can deal with the channel order/label differences, as they already do to a degree.
* Remove an unused variableChris Robinson2021-07-301-5/+3
|
* Add a UHJ-specific coefficient scaling arrayChris Robinson2021-07-131-1/+1
|
* Update the 5.1+center decoder and use it by defaultChris Robinson2021-06-301-24/+39
| | | | | | | The itu5.1-nocenter preset is the same as the previous default, so it can still be used for people that prefer it. But this new one purportedly has better panning and positioning responses in listening tests, which initial impressions concur with.
* Allow decoders to specify the coefficient scalingChris Robinson2021-06-251-6/+24
|
* MSVC doesn't like the decltypeChris Robinson2021-06-231-3/+3
|
* Add wrapper methods for getting device config valuesChris Robinson2021-06-231-16/+11
|
* Convert AmbDecConf to DecoderConfig for loadingChris Robinson2021-06-231-311/+312
| | | | | This keeps AmbDecConf uses confined to multi-channel panning initialization, and avoids spreading conversions and maps all over.