Chris Robinson
fea74124c8
Add an all-pass filter that replicates the band splitter's phase shift
2017-07-19 02:48:01 -07:00
Chris Robinson
6f2a30dea2
Remove an unneeded function
2017-02-28 19:48:44 -08:00
Chris Robinson
652ef2b7fd
Remove an unused function
2017-02-23 20:40:16 -08:00
Chris Robinson
bb4726d520
Avoid duplicating device buffer layout logic
2017-02-20 16:57:25 -08:00
Chris Robinson
3761336e6c
Apply distance compensation when writing to the output
2017-02-19 22:47:59 -08:00
Chris Robinson
9da152a9c8
Don't use periphonic FOA when the HOA decoder is not periphonic
2017-02-19 17:45:27 -08:00
Chris Robinson
071b83ba52
Replace more ALuint with ALsizei
2017-01-29 16:42:02 -08:00
Chris Robinson
1ebfce4cac
Improve the ambisonic upscaling methods
...
This now takes advantage of the differences seen in generated decoder matrices
for first-order compared to second- and third-order, such that with the
appropriate frequency-dependent scaling applied to first-order content, the
result is identical with a higher-order decoder matrix compared to a first-
order matrix for the same layout.
2017-01-24 19:03:51 -08:00
Chris Robinson
bfb7a6e4c8
Small update for the "virtual" Ambi2DDecoder coefficients
2017-01-17 11:35:19 -08:00
Chris Robinson
e9009968fb
More ALsizei, with the B-Format decoder
2017-01-16 09:37:55 -08:00
Chris Robinson
959812ee13
Use ALsizei in a few more places
2017-01-16 08:59:08 -08:00
Chris Robinson
ea82a6d19e
Use a function to generate the up-sampler transcode matrix
2016-11-24 21:29:53 -08:00
Chris Robinson
9349ee9002
Make some pointer-to-array parameters const
2016-10-04 16:25:43 -07:00
Chris Robinson
1d9d1958db
Make the SelectMixer function sharable
2016-09-06 13:21:11 -07:00
Chris Robinson
b1f70b5b78
Rename some variables for clarity
2016-09-06 03:10:38 -07:00
Chris Robinson
564030ffa4
Use more correct cube decoder matrices
2016-09-05 10:33:52 -07:00
Chris Robinson
cf0ef500ec
Rename MatrixMixerFunc to RowMixerFunc
2016-09-02 00:29:46 -07:00
Chris Robinson
7428636071
Use MixMatrixRow to upsample the split frequency bands to the output
2016-09-01 07:08:52 -07:00
Chris Robinson
8d3a286577
Simplify the ambisonic up-sampler
...
It still behaves the same, although now combines the separate decode+encode
matrices into a transcode matrix (one per frequency band).
2016-08-30 04:21:57 -07:00
Chris Robinson
846cdd472d
Band-split the HRIRs when building the ambisonic decoder filters
...
This allows each HRIR to contribute a frequency-dependent response, essentially
acting like a dual-band decoder playing over the cube speaker array.
2016-08-21 03:05:42 -07:00
Chris Robinson
33a84f17ac
Add a stand-alone upsampler for higher-order ambisonic oputput
2016-07-30 09:29:21 -07:00
Chris Robinson
84ca38ba95
Make a MAX_AMBI2D_COEFFS macro instead of a magic number
2016-07-17 00:46:18 -07:00
Chris Robinson
35cbecabf9
Repack the ambisonic dual-band decoder matrices
...
The decoders use a row of the HF decoder matrix followed by a row of the LF
decoder matrix, for each given output channel in turn. Packing the two matrices
accordingly results in less memory hopping.
2016-07-17 00:29:43 -07:00
Chris Robinson
b7da69510c
Implement a Neon-enhanced MixRow
2016-06-01 23:39:13 -07:00
Chris Robinson
c63d468d4c
Use a macro to specify the ambisonic periphonic channel mask
2016-06-01 05:30:06 -07:00
Chris Robinson
5e64882be9
Use SSE for applying the HQ B-Format decoder matrices
2016-05-31 10:18:34 -07:00
Chris Robinson
72d2febccb
Don't access the band splitter fields in the processing loops
...
perf shows a 5% drop in relative execution time on the alffplay example with an
audio-only file (20% to 15%). Kinda figured the optimizer would handle it
better, but I guess not.
2016-05-31 07:50:23 -07:00
Chris Robinson
f0871c8cfc
Improve radius behavior with scaling of ambisonic coefficients
2016-04-24 21:42:59 -07:00
Chris Robinson
7bdd68ddbe
Use frequency-dependent processing for the ambisonic up-sampler
2016-04-09 13:10:52 -07:00
Chris Robinson
2ccc1d1d8a
Move the aligned malloc functions to the common lib
2016-03-29 00:44:58 -07:00
Chris Robinson
34539bc973
Skip unused output channels for the HQ decode
2016-03-28 14:50:18 -07:00
Chris Robinson
33cd3834ac
Align the ChannelMix buffer and use it for up-sampling
2016-03-27 13:23:37 -07:00
Chris Robinson
b4a1ba9d3f
Include the distance gain compensation in the decoder matrix
2016-03-26 18:06:36 -07:00
Chris Robinson
1dcb04157c
Add a config option for distance compensation
2016-03-26 17:52:42 -07:00
Chris Robinson
67db77452f
Add distance compensation to the HQ decoder
...
This only compensates for timing and gain differences caused by differences in
the physical speaker distances. It's not near-field compensation. This also
relies on having proper distance values defined in the ambdec definition file.
2016-03-26 17:33:49 -07:00
Chris Robinson
e23da7a1de
Skip height-related ambisonic channels for 2D rendering
2016-03-25 19:57:25 -07:00
Chris Robinson
147274f165
Up-sample first-order content when using a higher order HQ decoder
2016-03-23 15:10:59 -07:00
Chris Robinson
713ac9e679
Add a specific output for first-order sources
2016-03-22 17:52:20 -07:00
Chris Robinson
0a03596af1
Simplify setting the matrix coeffs
2016-03-22 14:42:53 -07:00
Chris Robinson
8ff4a54356
Properly handle negative matrix values and fix decoder initialization
2016-03-15 09:07:03 -07:00
Chris Robinson
53fadf5497
Add a dual-band ambisonic decoder
...
This uses a virtual B-Format buffer for mixing, and then uses a dual-band
decoder for improved positional quality. This currently only works with first-
order output since first-order input (from the AL_EXT_BFROMAT extension) would
not sound correct when fed through a second- or third-order decoder.
This also does not currently implement near-field compensation since near-field
rendering effects are not implemented.
2016-03-15 05:08:05 -07:00