aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* More include cleanupChris Robinson2021-04-244-9/+10
|
* Move GetHFOrderScales to a more appropriate placeChris Robinson2021-04-248-43/+53
|
* Update some more includesChris Robinson2021-04-242-3/+2
|
* Don't bother with al string typesChris Robinson2021-04-242-16/+3
|
* Update some includesChris Robinson2021-04-242-6/+10
|
* Move the DeviceBase declaraction to coreChris Robinson2021-04-245-251/+289
|
* Use the DeviceBase for the backendChris Robinson2021-04-2435-69/+69
|
* Create a base the ALCdevice and ALCcontext structsChris Robinson2021-04-2427-324/+359
| | | | | A base that contains the API-agnostic data, with ALCdevice and ALCcontext being for AL-specific data.
* Move some more sources to coreChris Robinson2021-04-246-12/+12
|
* Use the root mean square for the HRTF B-Format HF scaleChris Robinson2021-04-241-1/+3
| | | | | | | | For the second-order decoder. Since the delays are adjusted to avoid most high frequency phase cancelation, the energy-based scaling with the number of channels used creates a significant HF increase. Using the RMS-based scaling seems to create a more level response, though it's not perfect either. More testing and measurements may be needed.
* Move hrtf.cpp/h to coreChris Robinson2021-04-228-39/+18
|
* Avoid using config methods in hrtf.cppChris Robinson2021-04-225-40/+46
|
* Avoid over-long linesChris Robinson2021-04-221-2/+5
|
* Move helpers.cpp to coreChris Robinson2021-04-2218-41/+23
|
* Move declarations to a more appropriate headerChris Robinson2021-04-2210-14/+22
|
* Print an error when starting the backend failsChris Robinson2021-04-201-0/+4
|
* Lower RLIMIT_RTTIME to allow RTKit to give RT priorityChris Robinson2021-04-204-12/+65
|
* Force an effect slot update when implicitly startingChris Robinson2021-04-191-0/+4
|
* Don't flag the auxslot dirty when setting the current valueChris Robinson2021-04-191-0/+14
|
* Fill the PulseAudio buffer before uncorking playbackChris Robinson2021-04-191-14/+14
|
* Fix dirty flag checkChris Robinson2021-04-181-1/+1
|
* Don't require RTKit for Xenial CIChris Robinson2021-04-181-1/+0
| | | | It apparently doesn't have DBus1Config.cmake in its libdbus-1-dev package.
* Require RTKit for Linux CIChris Robinson2021-04-182-3/+7
|
* Optionally use RTKit/D-Bus to set elevated priorityChris Robinson2021-04-187-18/+528
| | | | If pthread_setschedparam fails or is unavailable.
* Restore missing AL_SOFT_source_length queriesChris Robinson2021-04-151-0/+93
|
* Make an inverted atomic flag type and use itChris Robinson2021-04-1510-23/+46
| | | | | | | | The inverted atomic flag replaces test_and_set+clear with test_and_clear+set, essentially inverting the flag status. This makes more logical sense for flagging dirty state, which is less confusing than flagging clean state. The one caveat is ATOMIC_FLAG_INIT (or default construction in C++20) initializes the state to true rather than false.
* Fix inverted check for updating deferred effectslot propertiesChris Robinson2021-04-131-1/+1
|
* 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-113-17/+37
| | | | | | | | | | | 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.
* Use per-HRIR delay alignment for B-Format-to-HRTFChris Robinson2021-04-091-6/+11
| | | | | | | | | | | | | For HOA signals, the number of responses used with slightly varying delays causes noticeable attenuation in the higher frequencies because of destructive phase interference. This is not a result of minimum phase alignment (attempts to compensate for minimum phase had negligible results), nor does it affect first-order signals (which only has 4 unique responses on each side). This alternate alignment is only used when doing second-order rendering for HRTF output, which is not the default with HRTF. It's likely not very ideal, but it's necessary to prevent second-order rendering with HRTF from sounding muffled.
* Log the reset exception errorChris Robinson2021-04-071-0/+1
|
* Add RESTRICT to some pointersChris Robinson2021-04-041-11/+9
| | | | And update some comments
* Add an option to decode stereo as UHJ in alffplayChris Robinson2021-04-021-76/+137
|
* Advertise the in-progress AL_SOFT_UHJ extensionChris Robinson2021-04-011-1/+12
|
* Rename Uhj2Encoder to UhjEncoderChris Robinson2021-04-016-12/+12
|
* Avoid passing an array of pointersChris Robinson2021-04-013-33/+31
|
* Add support for 4-channel UHJChris Robinson2021-03-3111-35/+64
| | | | Also add the SOFT moniker to the new macros
* Handle 3-channel UHJ audio buffersChris Robinson2021-03-319-12/+30
|
* Decode UHJ buffers to B-Format for mixingChris Robinson2021-03-3110-82/+214
| | | | | This should also have an adjustment for the shelf filter. Although it's not clear what the appropriate adjustments should be.
* Start an interface for providing UHJ audioChris Robinson2021-03-317-2/+45
| | | | Currently only 2-channel UHJ, which gets treated as stereo.
* Combine some duplicate codeChris Robinson2021-03-304-90/+53
|
* Rename a couple class membersChris Robinson2021-03-282-12/+12
|
* Remove some unnecessary includesChris Robinson2021-03-282-12/+0
|
* Move the UHJ phase shifter to a common headerChris Robinson2021-03-286-400/+394
|
* Add the export definitions to the library projectsChris Robinson2021-03-282-6/+4
| | | | Instead of the config.h header.
* Add an option to change the UHJ decoder methodChris Robinson2021-03-261-27/+50
| | | | | | | | | | | | For 2-channel UHJ, two decoding equations are provided in the original paper. The alternative one is most often referenced for 2-channel UHJ decoding, but the original/general one can also be used by assuming T is fully attenuated (which the format allows for, as T can be variably attenuated by a factor between 0 and 1 to deal with an imperfect transmission medium). Neither method can be perfect for 2-channel UHJ, it's irrevocably lossy to the original source, but my subjective testing indicates the general equation produces less audibly errant results.
* Fix a comment typoChris Robinson2021-03-241-2/+2
|
* Update the UHJ decoding coefficientsChris Robinson2021-03-242-62/+71
|
* Don't add the resampler prepadding to the source size to loadChris Robinson2021-03-231-18/+17
|