aboutsummaryrefslogtreecommitdiffstats
path: root/alc/mixer
Commit message (Collapse)AuthorAgeFilesLines
* Use a more appropriate size value for copyingChris Robinson2020-06-071-1/+1
|
* Avoid convolving an always-0 sampleChris Robinson2020-05-301-4/+4
|
* Only apply non-silent inputs for blended HRIRChris Robinson2020-05-251-17/+24
|
* Simplify the HRTF blending fade out gain scalingChris Robinson2020-05-251-22/+18
|
* Clarify a comment about the band-splitterChris Robinson2020-05-201-4/+5
|
* Improve HRTF delay handlingChris Robinson2020-05-201-28/+14
| | | | | Ensures source-level HRTF, the dry mix, and direct output all align properly, and simplifies adding the delay in the direct mix output.
* Fix some commentsChris Robinson2020-05-191-4/+4
|
* Rename applyHfScale to processHfScaleChris Robinson2020-05-191-1/+1
|
* Apply the ambisonic HF scaling in real-time with HRTFChris Robinson2020-05-191-3/+61
| | | | | | | | | Rather than applying the HF scale to the IRs necessitating them to be truncated along with increasing the IR size, it can be applied to the input signal for the same results. Consequently, the IR size can be notably shortened while avoiding the extra truncation. In its place, the delayed reversed all-pass technique can still be used on the input for maintaining phase when applying the bandsplit/hfscalar filter to the input signal.
* Properly count the last number of samples to mixChris Robinson2020-05-122-2/+4
|
* Simplify SIMD linear resampler loop countChris Robinson2020-05-023-12/+9
|
* Use a matching type given the initializerChris Robinson2020-05-022-6/+6
|
* Improve the leftover and realignment mixing loopsChris Robinson2020-05-022-8/+8
| | | | | | | | Using a mask helps the compiler recognize that the leftover (any remaining non- multiple-of-4) and realignment loops will only have 3 iterations at most, which it can unroll or otherwise make more meaningful optimizations for. Previously it would try to vectorize and partially unroll the loops, which is wasteful when there would never be enough to vectorize.
* Avoid iterators for the main mixerChris Robinson2020-05-013-61/+53
|
* Make BuildBFormatHrtf a member of DirectHrtfStateChris Robinson2020-05-011-2/+2
|
* Don't truncate odd IR sizes with SSEChris Robinson2020-04-301-1/+1
|
* Use a more efficient type for holding the IrSizeChris Robinson2020-04-304-12/+12
|
* Get rid of the specialized MixRow_ methodsChris Robinson2020-04-164-89/+0
|
* Use structs for the mixer and resampler tagsChris Robinson2020-04-036-24/+29
|
* Avoid using ALfloat in the mixer functionsChris Robinson2020-04-036-48/+48
|
* Another small cleanupChris Robinson2020-04-032-8/+7
|
* Jump to the target gain if the fade amount is smallChris Robinson2020-04-033-6/+12
|
* Avoid unnecessary duplication in the resamplersChris Robinson2020-04-033-47/+34
|
* Generate the bsinc tables using constexpr methodsChris Robinson2020-04-023-1/+3
| | | | | | | | All the methods used should be compliant with C++14 constexpr rules. However, the number of scales and phases cause GenerateBSincCoeffs to reach the allowed step limit, preventing full compile-time generation. It's not a terribly big deal, it'll generate them very quickly when loading, but it does prevent using shared read-only memory pages.
* Simplify post-mix HRTF gain storageChris Robinson2020-01-055-14/+10
|
* Use size_t for array indicesChris Robinson2019-12-111-6/+7
|
* Don't force the HRIR length to a rounded valueChris Robinson2019-12-113-3/+3
| | | | | The coefficient and accumulation buffers are guaranteed large enough for the full size, and the SIMD handlers will behave the same either way.
* Use unsigned for array indicesChris Robinson2019-11-291-5/+2
|
* Avoid holding HRTF accumulation samples per-sourceChris Robinson2019-11-035-55/+27
| | | | | | It notably simplifies things to mix HRTF sources into an accumulation buffer together, which the Dry buffer's Ambisonic-to-HRTF decode is then added to, before being mixed to the Real output.
* Avoid direct function template and alias typesChris Robinson2019-10-031-2/+2
| | | | | | | It's somewhat ambiguous what they mean. Sometimes acting as a pointer, other times having weird behavior. Pointer-to-function types are explicitly defined as such, whereas uses of these tend to be as references (never null and not changeable).
* Remove the Offset parameter from ApplyCoeffsChris Robinson2019-10-024-88/+97
|
* Clean up some ALfloat -> floatChris Robinson2019-10-025-68/+62
|
* Move ALvoice from alu.h to a separate headerChris Robinson2019-10-022-4/+13
|
* Repack the bsinc resamplers coefficientsChris Robinson2019-09-293-12/+12
| | | | | | This puts the base coefficients and the phase deltas next to each other. This improves caching, as the base and phase deltas are always used together while the scales are only used for the non-fast versions.
* Implement a "fast" bsinc pathChris Robinson2019-09-264-1/+118
| | | | | | | | | | This takes advantage of the fact than when increment <= 1 (when not down- sampling), the scale factor is always 0. As a result, the scale and scale-phase deltas never contribute to the filtered output. Removing those multiply+add operations cuts half of the work done by the inner loop. Sounds that do need to down-sample (when played with a high pitch, or is 48khz on 44.1khz output, for example), still go through the normal bsinc process.
* Make the bsinc l and m coefficients unsignedChris Robinson2019-09-173-17/+12
|
* Fix typoChris Robinson2019-09-161-3/+3
|
* Clean up some more shadowing warningsChris Robinson2019-09-163-13/+18
|
* Fix a few more GCC warningsChris Robinson2019-09-141-1/+1
|
* Fix some more implicit conversions noted by GCCChris Robinson2019-09-145-15/+18
|
* Pass IrSize to the HRTF mixers as unsignedChris Robinson2019-09-135-19/+19
|
* Make IrSize unsignedChris Robinson2019-09-131-1/+1
|
* Make the resampler increment unsignedChris Robinson2019-09-136-78/+74
|
* Fix a few more C-style castsChris Robinson2019-09-111-3/+3
|
* Only ASSUME values where a variable is usedChris Robinson2019-09-044-6/+3
|
* Only use one accumulation buffer for B-Format HRTF mixingChris Robinson2019-09-031-15/+11
| | | | | It's all getting added together anyway and all channels are continuous inputs, so this is fewer passes over various buffers.
* Store the voice fraction offset as unsignedChris Robinson2019-08-316-49/+43
|
* Fix a variable declarationChris Robinson2019-08-221-3/+2
|
* Avoid reading from pointers to __m128 valuesChris Robinson2019-08-212-40/+31
|
* Fix NEON store callChris Robinson2019-08-201-1/+1
|