aboutsummaryrefslogtreecommitdiffstats
path: root/core
Commit message (Collapse)AuthorAgeFilesLines
* Optionally use RTKit/D-Bus to set elevated priorityChris Robinson2021-04-184-0/+441
| | | | If pthread_setschedparam fails or is unavailable.
* Don't reference non-static local variables in lambdasChris Robinson2021-04-111-2/+2
| | | | GCC and Clang seem to allow it for local constexpr variables, but MSVC doesn't.
* Update a commentChris Robinson2021-04-111-1/+1
|
* Fix UHJ encoding/decoding factorsChris Robinson2021-04-112-16/+34
| | | | | | | | | | | Classic B-Format uses scaling factors W=1, X=sqrt(2), Y=sqrt(2), and Z=sqrt(2), which is +3dB louder than FuMa. The base factors are designed assuming classic scaling, so encoding a 0dBFS FuMa signal without accounting for this would result in the UHJ signal peaking at about -3dBFS. Similarly, decoding UHJ to FuMa B-Format would be +3dB louder than intended. So encoding needs to implicitly boost the signal by +3dB, and decoding needs to attenuate by -3dB.
* Add RESTRICT to some pointersChris Robinson2021-04-041-11/+9
| | | | And update some comments
* Rename Uhj2Encoder to UhjEncoderChris Robinson2021-04-012-5/+5
|
* Avoid passing an array of pointersChris Robinson2021-04-012-26/+30
|
* Add support for 4-channel UHJChris Robinson2021-03-312-8/+12
| | | | Also add the SOFT moniker to the new macros
* Decode UHJ buffers to B-Format for mixingChris Robinson2021-03-314-6/+100
| | | | | This should also have an adjustment for the shelf filter. Although it's not clear what the appropriate adjustments should be.
* Rename a couple class membersChris Robinson2021-03-282-12/+12
|
* Remove some unnecessary includesChris Robinson2021-03-281-6/+0
|
* Move the UHJ phase shifter to a common headerChris Robinson2021-03-282-203/+14
|
* Update the UHJ decoding coefficientsChris Robinson2021-03-241-2/+5
|
* Fix the UHJ all-pass delayChris Robinson2021-03-202-11/+8
| | | | | | | | | For real this time. The non-all-passed signal needs a one-sample delay over the all-passed signal. Because of the way the all-pass FIR filter is structured, it wouldn't otherwise use the last buffered sample, allowing it to be shifted forward in time by one sample. Also, remove a couple unnecessary buffers.
* Fix UHJ FIR filter alignmentChris Robinson2021-03-151-1/+1
|
* Workaround mingw complaining about the %z formatterChris Robinson2021-03-121-1/+6
|
* Avoid making BSincPointsMax publicChris Robinson2021-03-012-18/+30
|
* Avoid cutting off the last bsinc filter coefficientChris Robinson2021-03-011-3/+3
|
* Avoiding cutting all bsinc resampler output at scale 0Chris Robinson2021-02-241-7/+6
| | | | | | | | | | | | This is mostly for the SampleConverter, used by some capture backends. When recording at really low rates, like 5512hz, with a device capturing at a higher rate like 44100hz or 48000hz, it hits the filter's downscaling limit and produces pure silence. In such cases, it's better to just accept some aliasing noise so that the app will still get some recognizable audio. The alternative would be to scale the desired rate by 2x, 3x, etc until it's above the bsinc limit, then take every 2nd, 3rd, etc sample of the result as if by an extra simpler resampler pass.
* Use a more appropriate epsilon for Sinc()Chris Robinson2021-02-241-1/+2
|
* Avoid an unnecessary loop iterationChris Robinson2021-02-231-2/+3
|
* Adjust the bsinc filter table packingChris Robinson2021-02-234-41/+29
| | | | | | | | Now each scale's filter and phase delta are interleaved for each phase index, followed by the scale and scale+phase delta for each phase index. This ensures no holes in the filter coefficients for the fast bsinc resampler for a given run, while keeping the scale deltas in the same vicinity for the non-fast bsinc resampler.
* Remove unnecessary use of SSE2 intrinsicsChris Robinson2021-02-211-2/+1
| | | | | The compiler is producing the same results either way, since the upper bit results are never used.
* Store the all-pass FIR results more efficientlyChris Robinson2021-02-181-14/+23
|
* Use shifts instead of shuffles with SSE where possibleChris Robinson2021-02-181-4/+4
|
* Add some optimization hintsChris Robinson2021-02-163-18/+24
|
* Add the all-pass filter results to the output with NEONChris Robinson2021-02-081-3/+3
|
* Use spans instead of references to arraysChris Robinson2021-02-069-16/+22
|
* Avoid global constexpr arraysChris Robinson2021-01-212-95/+116
|
* Avoid dereferencing the end iteratorChris Robinson2021-01-081-4/+4
|
* Return non-const from the resampler functionChris Robinson2021-01-026-37/+36
|
* Make FPUCtl methods noexceptChris Robinson2020-12-312-12/+10
|
* Move cpu_caps and fpu_ctrl to coreChris Robinson2020-12-314-0/+247
|
* Add NEON-enhanced FIR loops for convolution and UHJChris Robinson2020-12-311-0/+68
|
* Use smaller types for enumsChris Robinson2020-12-271-1/+1
|
* Use more constexpr variables instead of macrosChris Robinson2020-12-255-30/+31
|
* Increase direct HRTF delay to 256Chris Robinson2020-12-251-1/+1
| | | | This should improve the error from the all-pass on the partial input.
* Return an optional for an errorChris Robinson2020-12-252-192/+81
|
* Avoid dynamic vectors in AmbDecConfChris Robinson2020-12-252-19/+75
| | | | Also add a bit more sanity checking
* Rename From2D to FromACN2DChris Robinson2020-12-252-2/+2
|
* Move the ambdec loader to coreChris Robinson2020-12-252-0/+482
|
* Move alexcpt to coreChris Robinson2020-12-242-0/+62
|
* Move logging to coreChris Robinson2020-12-172-0/+142
|
* Move fmt_traits to coreChris Robinson2020-12-132-0/+160
|
* Avoid compiling different sources for different targetsChris Robinson2020-12-134-0/+17
| | | | | | | | Simplifies configuration and fixes a potential problem with inline functions. Inline functions that fail to inline will have a callable body generated. If such a body is generated with the SSE4 source, for example, it can generate SSE4 instructions. Calls for that function in other sources can then end up calling the SSE4-generated body outside of any CPU capability check.
* Be more consistent with size_tChris Robinson2020-12-124-10/+10
|
* Move the mixer functions to coreChris Robinson2020-12-129-0/+1253
|
* Move ambidefs.h to coreChris Robinson2020-12-122-0/+150
|
* Avoid returning an array for initializationChris Robinson2020-12-051-37/+38
|
* Use an alias for the DevFmtType typeChris Robinson2020-12-051-0/+3
|