aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/panning.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Use member functions for BFormatDec and AmbiUpsamplerChris Robinson2018-12-081-4/+4
|
* Clean up some more loopsChris Robinson2018-12-081-4/+4
|
* Remove some more explicit loopsChris Robinson2018-12-051-19/+21
|
* Use class methods for BandSplitter and SplitterAllpass filtersChris Robinson2018-12-051-2/+2
|
* Avoid a couple explicit loopsChris Robinson2018-11-221-19/+18
|
* Use unique_ptr for DirectHrtfStateChris Robinson2018-11-221-5/+4
|
* Clean up some unnecessary specifiersChris Robinson2018-11-221-4/+4
|
* Use unique_ptr for bs2bChris Robinson2018-11-221-3/+3
|
* Use unique_ptr for BFormatDec and AmbiUpsamplerChris Robinson2018-11-221-16/+13
|
* Use a unique_ptr for the FrontStablizerChris Robinson2018-11-221-7/+5
|
* Use a unique_ptr for Uhj2EncoderChris Robinson2018-11-211-1/+1
|
* Use a normal vector for the distance buffer storageChris Robinson2018-11-211-8/+3
|
* Use an enum class for AmbiLayout/Norm settingsChris Robinson2018-11-201-4/+4
|
* Use a standard string for the device's HRTF nameChris Robinson2018-11-181-5/+4
|
* Use a regular vector for the enumerated HRTF listChris Robinson2018-11-181-12/+9
|
* Use a std::string for the device nameChris Robinson2018-11-181-9/+9
|
* Avoid more cases of an enum variable and type name clashChris Robinson2018-11-181-14/+14
|
* Remove unused headers and checksChris Robinson2018-11-171-1/+0
|
* Use a regular char* for the device's nameChris Robinson2018-11-151-17/+9
|
* Pass a normal const char* to EnumerateHrtfChris Robinson2018-11-151-1/+1
|
* Make the enumerated HRTF entry name a char*Chris Robinson2018-11-121-3/+3
| | | | | Would ideally be a std::string with the HRTF name itself, but they're still seen in C code.