aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/panning.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Reverse the HRTF field arrayChris Robinson2019-02-271-2/+1
| | | | | | Most often a sound's distance will be beyond the farthest field measurement, so It's more efficient to have the farthest field first and avoid looping through the whole field array for them.
* Remove a duplicate index arrayChris Robinson2019-02-241-2/+2
|
* Remove the FOAOut mixing buffer and associated post-processesChris Robinson2019-02-221-121/+1
|
* Allow processing some effects in higher order ambisonicsChris Robinson2019-02-211-2/+2
| | | | | | Reverb notably is still only first-order (any higher order channels are dropped, and it writes to FOAOut). But others, like the equalizer, work on all available channels.
* Add helpers to get the channel count from an ambisonic orderChris Robinson2019-02-211-7/+7
|
* Ensure the device's mAmbiOrder is always set appropriatelyChris Robinson2019-02-211-8/+23
| | | | The Dry target is always ambisonic, so set its order correctly.
* Allocate the effect slot wet buffer dynamicallyChris Robinson2019-02-201-6/+8
|
* Rename MAX_AMBI_COEFFS and MAX_AMBI2D_COEFFSChris Robinson2019-02-191-15/+15
|
* Clean up some AmbiUpsampler initializationChris Robinson2019-02-191-17/+19
|
* Collect HRTF field info into a structChris Robinson2019-01-281-2/+3
|
* Make IncRef and DecRef member functionsChris Robinson2019-01-241-5/+5
|
* Use c++ headersFilip Gawin2019-01-091-5/+5
|
* Make Create methods for structs with flexible array members ...Chris Robinson2019-01-081-2/+1
| | | | ... that are used with unique_ptr.
* Avoid calling unique_ptr::reset with a raw pointerChris Robinson2019-01-081-7/+7
|
* Avoid using old style castsFilip Gawin2019-01-081-4/+4
| | | | | | To think about: examples/alffplay.cpp:600 OpenAL32/Include/alMain.h:295
* Don't use the dual-band upsampler for basic ambisonic decodingChris Robinson2019-01-061-22/+28
|
* Replace macros with constexpr inline functionsChris Robinson2019-01-061-4/+4
|
* Pass the normalized crossover frequency to the reset methodChris Robinson2019-01-051-1/+2
|
* Simplify MixParams and AmbiUpsamplerChris Robinson2019-01-051-62/+30
| | | | Since the dry buffer is always an ambisonic target now
* Use BFormatDec for custom and built-in ambisonic decodingChris Robinson2019-01-051-96/+111
|
* Add and use a make_unique functionChris Robinson2019-01-011-3/+3
|
* Remove extraneous typedef, struct, and enum keywordsChris Robinson2018-12-241-9/+9
|
* Mix effect slot output to the effect target if it's setChris Robinson2018-12-231-0/+3
|
* Rename a couple HRTF structsChris Robinson2018-12-221-10/+10
|
* Don't convert the HRTF decoder virtual speaker positions to radiansChris Robinson2018-12-211-21/+21
|
* Use a dodecahedron for the ambisonic HRTF decodeChris Robinson2018-12-211-68/+51
| | | | | | | Also uses full second-order for "basic" HRTF rendering. Note that the supplied matrix is full third-order, but only the first- and second-order coefficients are used. The base matrices are the identical, only differing by the high- frequency scalars.
* Pass RealMixParams by reference instead of pointerChris Robinson2018-12-201-1/+1
|
* Add index maps from 2D and 3DChris Robinson2018-12-201-17/+16
|
* Use std::array in place of some C-style arraysChris Robinson2018-12-201-19/+18
|
* Rename some conversion arraysChris Robinson2018-12-201-22/+22
|
* Use inline methods for the device format sizesChris Robinson2018-12-191-3/+3
|
* Use the AmbiUpsampler with higher order basic and custom panningChris Robinson2018-12-171-79/+47
| | | | Also allocate the BFormatDec and AmbiUpsampler where they're (re)set.
* Always use the transcode method with the AmbiUpsamplerChris Robinson2018-12-161-14/+2
|
* Put the ACN index map in a headerChris Robinson2018-12-151-30/+16
| | | | Also put it and the Ambisonic scales in a more appropriate header.
* Reorder some math terms to help optimizationsChris Robinson2018-12-151-6/+6
| | | | | | | | | | | | | | | | | | | | | | | Because floating-point math is not associative ((a*b)*c does not necessarily give the same result as a*(b*c)), the ordering of terms can inhibit reuse of temporary values. For example, both coeffs[9] = 2.091650066f * y * (3.0f*x*x - y*y); and coeffs[15] = 2.091650066f * x * (x*x - 3.0f*y*y); contain x*x and y*y terms that could be calculated once, stored in temporary registers, and reused to multiply with 3. But since 3.0f*(x*x) would produce different results, the compiler is not allowed to make that optimization. If, however, the multiply with 3 is moved to the right side: coeffs[9] = 2.091650066f * y * (x*x*3.0f - y*y); and coeffs[15] = 2.091650066f * x * (x*x - y*y*3.0f); in both cases x*x and y*y are calculated first in their respective groups, guaranteeing the same results for both instances prior to the multiply with 3 and allowing the compiler to reuse those intermediate values.
* Add encoding calculations for fourth-order ambisonicsChris Robinson2018-12-151-1/+11
|
* Make the AmbDec speaker and matrix arrays dynamicChris Robinson2018-12-151-11/+12
|
* Clean up panning.cpp a bitChris Robinson2018-12-151-64/+51
|
* Add macros for the ambisonic order masksChris Robinson2018-12-141-15/+18
|
* Fix some MSVC conversion warningsChris Robinson2018-12-121-9/+9
|
* Use helpers to get the Ambisonic scales and layout mapsChris Robinson2018-12-101-10/+24
|
* A bit more cleanupChris Robinson2018-12-101-44/+35
|
* Clean up a few more loopsChris Robinson2018-12-101-83/+84
|
* Add missing headerChris Robinson2018-12-101-0/+1
|
* Put static methods into an anonymous namespaceChris Robinson2018-12-101-131/+128
|
* Avoid some more explicit loopsChris Robinson2018-12-101-54/+41
|
* Use std::accumulate to find the max channel countChris Robinson2018-12-091-15/+12
|
* Avoid some more explicit loopsChris Robinson2018-12-091-13/+21
|
* Pass a reference to an array for a function parameterChris Robinson2018-12-091-1/+1
|
* Avoid several uses of memsetChris Robinson2018-12-081-23/+17
|