aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Move some ambisonic-related macros to a separate headerChris Robinson2018-12-156-47/+58
|
* Make the AmbDec speaker and matrix arrays dynamicChris Robinson2018-12-154-70/+76
|
* Avoid some explicit loop countsChris Robinson2018-12-152-43/+27
|
* Clean up panning.cpp a bitChris Robinson2018-12-151-64/+51
|
* Add macros for the ambisonic order masksChris Robinson2018-12-143-26/+41
|
* Cleanup bformatdec.cpp a bitChris Robinson2018-12-131-81/+30
|
* Add POPCNT32 and CTZ32 macrosChris Robinson2018-12-131-13/+41
|
* Add more casts for MSVCChris Robinson2018-12-125-12/+20
|
* Fix some MSVC conversion warningsChris Robinson2018-12-1214-58/+61
|
* Fix an MSVC warningChris Robinson2018-12-121-1/+1
|
* Remove an unused sourceChris Robinson2018-12-122-5/+0
|
* Use proper classes for Vector and Matrix typesChris Robinson2018-12-1210-190/+199
|
* Cleanup alu.cpp someChris Robinson2018-12-121-301/+237
|
* Use helpers to get the Ambisonic scales and layout mapsChris Robinson2018-12-102-14/+32
|
* A bit more cleanupChris Robinson2018-12-104-132/+113
|
* Clean up a few more loopsChris Robinson2018-12-102-85/+97
|
* 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-102-55/+42
|
* 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-092-4/+4
|
* Rename a couple global variablesChris Robinson2018-12-093-17/+17
| | | | Avoid clashing with an enum name
* Add default construction to HrtfEntryChris Robinson2018-12-091-3/+1
|
* Use a vector for LoadedHrtfsChris Robinson2018-12-091-67/+65
|
* Avoid static global initialization functionsChris Robinson2018-12-087-163/+53
|
* Add a cmake option to specify prebuilt native toolsChris Robinson2018-12-081-17/+25
| | | | | | This should only be used with automated build systems that guarantee the native tools' binaries are up-to-date. Otherwise it's best to leave it alone so it can automatically rebuild them as needed.
* Rename a member variable and inline a functionChris Robinson2018-12-082-9/+6
|
* Avoid several uses of memsetChris Robinson2018-12-0813-46/+38
|
* Add missing includeChris Robinson2018-12-081-0/+1
|
* Increase GAIN_MIX_MAXChris Robinson2018-12-081-1/+1
|
* A bit more cleanupChris Robinson2018-12-081-21/+15
|
* Use member functions for BFormatDec and AmbiUpsamplerChris Robinson2018-12-085-131/+124
|
* Clean up some more loopsChris Robinson2018-12-083-53/+55
|
* Inline a simple methodChris Robinson2018-12-082-8/+1
|
* Avoid using the deprecated mem_fun_ref methodChris Robinson2018-12-071-1/+1
|
* Add fourth-order methods to the NFC filterChris Robinson2018-12-072-118/+119
| | | | Unused, but it finishes out the currently possible implementations.
* Use a constructor instead of a macro to initialize AsyncEventChris Robinson2018-12-065-10/+12
|
* Remove some more explicit loopsChris Robinson2018-12-051-19/+21
|
* Use class methods for BandSplitter and SplitterAllpass filtersChris Robinson2018-12-056-65/+60
|
* Use class methods for the NFC filtersChris Robinson2018-12-056-142/+141
|
* Use class methods for the biquad filterChris Robinson2018-12-049-153/+146
|
* Avoid using AL types with the filtersChris Robinson2018-12-044-48/+48
|
* Avoid some more explicit loops in the filtersChris Robinson2018-12-043-61/+53
|
* Avoid more explicit loopsChris Robinson2018-12-041-20/+21
|
* Increase the async event queue sizeChris Robinson2018-12-041-1/+1
|
* Handle EventType_BufferCompleted uniquelyChris Robinson2018-12-043-18/+24
|
* Avoid a few more explicit loopsChris Robinson2018-12-041-19/+22
|