aboutsummaryrefslogtreecommitdiffstats
path: root/core
Commit message (Collapse)AuthorAgeFilesLines
* Use the IIR filter for UHJ by defaultChris Robinson2022-10-301-1/+1
| | | | | | | Now that it doesn't cause the distortion like before, the IIR implementation provides a very wide pass-band with the lowest CPU requirements. If maintaining the original phase is important, fir256 and fir512 are still available, given whether lower CPU use or a wider pass-band is more important.
* Rename some variables to more clearly indicate their meaningChris Robinson2022-10-285-40/+40
|
* Rework the UHJ IIR filters to avoid applying an IIR in reverseChris Robinson2022-10-272-153/+128
|
* Switch back to the FIR256 filter by defaultChris Robinson2022-10-261-1/+1
| | | | | | There is a surprisingly noticeable amount of static caused by the IIR filter in particular circumstances. The 256-point filter is only slightly slower, but the frequency response should be good enough to use as a default for now.
* Use the correct input for the IIR UHJ encoderChris Robinson2022-10-261-7/+29
| | | | Also better detail the IIR implementation.
* Use the IIR all-pass filter by defaultChris Robinson2022-10-261-1/+1
|
* Fix up a commentChris Robinson2022-10-261-2/+2
|
* Add a comment about the filter delayChris Robinson2022-10-251-0/+3
|
* Fix some value orderingChris Robinson2022-10-251-2/+2
|
* Avoid a duplicate all-pass function that accumulatesChris Robinson2022-10-222-92/+113
|
* Rename some variables to be less ambiguousChris Robinson2022-10-213-20/+20
|
* Rename a couple functions to clarify their useChris Robinson2022-10-211-13/+13
|
* Add separate filter options for UHJ encoding and decodingChris Robinson2022-10-213-4/+6
|
* Add an IIR filter option for UHJ encoding/decodingChris Robinson2022-10-213-30/+384
| | | | | | This uses the reversed-allpass trick to maintain linear phase. with a 256- sample look-ahead/delay to minimize distortion. This should better preserve low frequencies while maintaining a proper phase response.
* Increase sub-sample precision to 16 bitsChris Robinson2022-10-161-1/+1
|
* Move some comments to a more appropriate placeChris Robinson2022-09-231-32/+32
|
* Remove an unused variableChris Robinson2022-09-201-10/+9
|
* Clear the buffer loop element when out of the loop rangeChris Robinson2022-09-181-2/+3
|
* Clear trailing whitespace from the loaded ambdec descriptionChris Robinson2022-09-151-0/+2
|
* Use the correct va_list for the second vsnprintfChris Robinson2022-09-141-1/+1
|
* Use ifstream's wchar_t constructors on WindowsChris Robinson2022-09-121-1/+1
| | | | MinGW seems to have added them a while ago, so that greatly simplifies things.
* Don't pack ambdec coefficientsChris Robinson2022-09-121-4/+3
| | | | | | | | | Tne coefficients are placed as for full 3D ACN handling. The ChanMask just indicates which have potentially useful values. This could be a bit more agressive and clear ChanMask bits for channels that don't contribute to output, so that a decoder the specifies height-related channel bits, but leaves their coefficients all 0, can be handled as 2D. I don't expect many ambdec files to be like that, though.
* Simplify ambdec loadingChris Robinson2022-09-121-236/+156
|
* Ensure coeff_scale is set for ambdec filesChris Robinson2022-09-112-6/+12
|
* Reject ambdec files with higher than third order and FuMa scalingChris Robinson2022-09-111-13/+15
|
* Track if doing 2D mixing onlyChris Robinson2022-09-042-2/+5
| | | | And use it to select the proper HF scales
* Allow different HF scales for 2D mixing/outputChris Robinson2022-09-043-5/+25
| | | | | Not actually used yet, the device needs to track whether it's using 2D or 3D mixing.
* Use the difference in HF scale for upsampling ambisonicsChris Robinson2022-09-033-32/+30
|
* Update the second-order upsampler HF scaleChris Robinson2022-09-021-1/+1
|
* Revert "Don't apply the HF scaling for "upsampling" ambisonics"Chris Robinson2022-09-023-12/+77
| | | | This reverts commit bf3f63fb4c5faa45784d7433d68b7013e29ee2c1.
* Use an icosahedron for 3D second-orderChris Robinson2022-09-013-34/+29
|
* Don't apply the HF scaling for "upsampling" ambisonicsChris Robinson2022-08-313-77/+12
| | | | | | | | | | | | Not sure if this is best, but it fixes the issue of upsampling lower orders to higher orders multiple times (mixing lower order to higher order, cutting back to lower order by dropping the extra channels, then upsampling again, applying the HF scale multiple times and messing up the high frequencies/energy vector), as well as having too-strong high frequencies of upsampled content in general. As it is, with the new upsampling method, the lower order signal contributes to some higher order channels, which helps offset the high frequency scaling difference (except first- to second-order, which adds nothing).
* Use predefined variables to handle 1/sqrt(3)Chris Robinson2022-08-301-44/+45
|
* Allow the remix tables to be variable lengthChris Robinson2022-08-281-1/+1
|
* Add a 2D fourth-order upsamplerChris Robinson2022-08-272-1/+53
| | | | This will be necessary for 2D fourth-order sources with 3D fourth-order output.
* Fix variable nameChris Robinson2022-08-262-3/+3
|
* Create and use 2D upsampling matricesChris Robinson2022-08-253-11/+156
|
* Create a proper third-order upsampler matrixChris Robinson2022-08-191-5/+63
| | | | | This is just an identity matrix for now, since with third-order mixing, it results in a matrix being multiplied with it's inverse.
* Inline and precompute some CalcDirectionCoeffs callsChris Robinson2022-08-181-0/+12
|
* Avoid duplicate codeChris Robinson2022-08-183-77/+56
|
* rtkit: match includes with code (#752)Rosen Penev2022-08-181-1/+2
| | | | | | | | | These headers are used for __gettid. Match the if with the code. Fixes compilation under MinGW. Signed-off-by: Rosen Penev <[email protected]> Signed-off-by: Rosen Penev <[email protected]>
* Inline a function and remove an unnecessary parameterChris Robinson2022-08-163-30/+21
|
* Use proper array sizes for more gainsChris Robinson2022-08-153-4/+4
|
* Use the proper type for a global definitionChris Robinson2022-08-151-9/+11
| | | | | Some compilers don't seem to like auto deduction for defining a declared variable.
* Use a decode-encode method for ambisonic upsamplingChris Robinson2022-08-152-16/+176
| | | | | | | | This should allow for clearer and less diffuse responses. While a cube is in the blindspots for second-order, resulting in an identify transform for first- to-second-order, they do start contributing to third-order channels, which should make for sharper virtual points. The fixed HF scales should also play nicer with larger order upmixes.
* Use the right array size for the mixing parametersChris Robinson2022-08-141-1/+1
|
* Update some arrays in preparation for fourth order supportChris Robinson2022-08-141-5/+8
|
* Move a member variable to the struct it's neededChris Robinson2022-08-091-2/+2
|
* Add an option for higher quality UHJ filtersChris Robinson2022-08-083-4/+25
|
* Parameterize the UHJ filter lengthChris Robinson2022-08-075-37/+98
|