aboutsummaryrefslogtreecommitdiffstats
path: root/alc
Commit message (Collapse)AuthorAgeFilesLines
* Use a unique_ptr to hold raw byte memoryChris Robinson2021-06-211-2/+4
|
* Fix getting of device channel count in CoreAudio backendalexey.lysiuk2021-06-211-3/+1
| | | | | | | AudioBufferList contains a variable length array of mNumberBuffers elements, so it should not be created with the default constructor like usual class instances. Unfortunately, Apple developer site documentation is literally empty for this API. There is a bunch of comments in framework's header files. Here is the correct usage of AudioBufferList pointer from Chromium: https://chromium.googlesource.com/chromium/src/media/+/008a1abc573e1f8bcf513b50ce48a923b30ef130/audio/mac/audio_manager_mac.cc#266 There were occasional crashes because of memory corruption which was confirmed by address sanitizer
* Fix some size typesChris Robinson2021-06-181-2/+2
|
* Initial attempt at CoreAudio playback enumerationChris Robinson2021-06-181-14/+253
|
* Use a unique_ptr to auto-free the jack ports listChris Robinson2021-06-121-20/+24
|
* Set the JACK output ports as terminalChris Robinson2021-06-121-1/+1
| | | | Since there are no input ports associated with the output.
* Give a name to a lambdaChris Robinson2021-06-111-7/+7
|
* Improve name duplication handling with JACKChris Robinson2021-06-101-26/+63
| | | | | If a custom device pattern matches an existing one, its name will be replaced. A separate loop is used to check and handle duplicate display names.
* Add an option to mix directly in the JACK callbackChris Robinson2021-06-082-69/+144
|
* Handle the listener position separate from the rotation matrixChris Robinson2021-05-252-12/+10
| | | | | | It's too unstable with larger vectors. Even when the source and listener positions are the same, floating point precision can cause noticeable rounding errors.
* Fix setting the channel distance compensation buffersChris Robinson2021-05-201-3/+3
|
* Handle tvOS caseHALX992021-05-131-3/+3
|
* Add back a missing includeChris Robinson2021-04-271-0/+1
|
* Rename alcontext.h and move some functions to context.cppChris Robinson2021-04-275-452/+470
|
* Move some functions to a more appropriate placeChris Robinson2021-04-272-49/+72
|
* Rename alcmain.h to device.hChris Robinson2021-04-278-31/+16
|
* Update include headersChris Robinson2021-04-2745-101/+97
| | | | Don't add alc/ to the include paths.
* Update some license noticesChris Robinson2021-04-272-28/+52
| | | | Permission to relicense was granted via email.
* Update includesChris Robinson2021-04-2711-15/+18
|
* Move BufferStorage and Voice to coreChris Robinson2021-04-277-1260/+4
|
* Move ContextBase and VoiceChange to coreChris Robinson2021-04-277-190/+16
|
* Partially implement an extension to hold sources on disconnectChris Robinson2021-04-265-1/+22
| | | | | | | | Rather than stopping voices/sources when the device becomes disconnected, the context can be set to leave them alone. As a consequence, their state will remain as playing and they'll keep their last known sample offset indefinately. For applications mindful of this behavior, it will allow resetting or reopening the device to reconnect and automatically resume where it left off.
* Move GetChannelIdxByName and clean up some more includesChris Robinson2021-04-269-54/+47
|
* Move bformatdec to coreChris Robinson2021-04-256-376/+6
|
* Move async_event.h to coreChris Robinson2021-04-254-54/+22
|
* Move some functions to coreChris Robinson2021-04-2519-289/+242
| | | | And clean up more includes
* More include cleanupChris Robinson2021-04-244-9/+10
|
* Move GetHFOrderScales to a more appropriate placeChris Robinson2021-04-245-43/+4
|
* Don't bother with al string typesChris Robinson2021-04-241-3/+3
|
* Update some includesChris Robinson2021-04-242-6/+10
|
* Move the DeviceBase declaraction to coreChris Robinson2021-04-242-251/+6
|
* Use the DeviceBase for the backendChris Robinson2021-04-2435-69/+69
|
* Create a base the ALCdevice and ALCcontext structsChris Robinson2021-04-2422-263/+298
| | | | | 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-245-469/+2
|
* 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-227-1564/+5
|
* Avoid using config methods in hrtf.cppChris Robinson2021-04-225-40/+46
|
* Move helpers.cpp to coreChris Robinson2021-04-2217-561/+15
|
* 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-203-12/+60
|
* Fill the PulseAudio buffer before uncorking playbackChris Robinson2021-04-191-14/+14
|
* Optionally use RTKit/D-Bus to set elevated priorityChris Robinson2021-04-181-17/+60
| | | | If pthread_setschedparam fails or is unavailable.
* Make an inverted atomic flag type and use itChris Robinson2021-04-152-7/+7
| | | | | | | | 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.
* 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
|
* Advertise the in-progress AL_SOFT_UHJ extensionChris Robinson2021-04-011-1/+12
|
* Rename Uhj2Encoder to UhjEncoderChris Robinson2021-04-014-7/+7
|
* Avoid passing an array of pointersChris Robinson2021-04-011-7/+1
|
* Add support for 4-channel UHJChris Robinson2021-03-316-14/+27
| | | | Also add the SOFT moniker to the new macros