Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Move some functions to core | Chris Robinson | 2021-04-25 | 19 | -289/+242 |
| | | | | And clean up more includes | ||||
* | More include cleanup | Chris Robinson | 2021-04-24 | 4 | -9/+10 |
| | |||||
* | Move GetHFOrderScales to a more appropriate place | Chris Robinson | 2021-04-24 | 5 | -43/+4 |
| | |||||
* | Don't bother with al string types | Chris Robinson | 2021-04-24 | 1 | -3/+3 |
| | |||||
* | Update some includes | Chris Robinson | 2021-04-24 | 2 | -6/+10 |
| | |||||
* | Move the DeviceBase declaraction to core | Chris Robinson | 2021-04-24 | 2 | -251/+6 |
| | |||||
* | Use the DeviceBase for the backend | Chris Robinson | 2021-04-24 | 35 | -69/+69 |
| | |||||
* | Create a base the ALCdevice and ALCcontext structs | Chris Robinson | 2021-04-24 | 22 | -263/+298 |
| | | | | | A base that contains the API-agnostic data, with ALCdevice and ALCcontext being for AL-specific data. | ||||
* | Move some more sources to core | Chris Robinson | 2021-04-24 | 5 | -469/+2 |
| | |||||
* | Use the root mean square for the HRTF B-Format HF scale | Chris Robinson | 2021-04-24 | 1 | -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 core | Chris Robinson | 2021-04-22 | 7 | -1564/+5 |
| | |||||
* | Avoid using config methods in hrtf.cpp | Chris Robinson | 2021-04-22 | 5 | -40/+46 |
| | |||||
* | Move helpers.cpp to core | Chris Robinson | 2021-04-22 | 17 | -561/+15 |
| | |||||
* | Move declarations to a more appropriate header | Chris Robinson | 2021-04-22 | 10 | -14/+22 |
| | |||||
* | Print an error when starting the backend fails | Chris Robinson | 2021-04-20 | 1 | -0/+4 |
| | |||||
* | Lower RLIMIT_RTTIME to allow RTKit to give RT priority | Chris Robinson | 2021-04-20 | 3 | -12/+60 |
| | |||||
* | Fill the PulseAudio buffer before uncorking playback | Chris Robinson | 2021-04-19 | 1 | -14/+14 |
| | |||||
* | Optionally use RTKit/D-Bus to set elevated priority | Chris Robinson | 2021-04-18 | 1 | -17/+60 |
| | | | | If pthread_setschedparam fails or is unavailable. | ||||
* | Make an inverted atomic flag type and use it | Chris Robinson | 2021-04-15 | 2 | -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-HRTF | Chris Robinson | 2021-04-09 | 1 | -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 error | Chris Robinson | 2021-04-07 | 1 | -0/+1 |
| | |||||
* | Advertise the in-progress AL_SOFT_UHJ extension | Chris Robinson | 2021-04-01 | 1 | -1/+12 |
| | |||||
* | Rename Uhj2Encoder to UhjEncoder | Chris Robinson | 2021-04-01 | 4 | -7/+7 |
| | |||||
* | Avoid passing an array of pointers | Chris Robinson | 2021-04-01 | 1 | -7/+1 |
| | |||||
* | Add support for 4-channel UHJ | Chris Robinson | 2021-03-31 | 6 | -14/+27 |
| | | | | Also add the SOFT moniker to the new macros | ||||
* | Handle 3-channel UHJ audio buffers | Chris Robinson | 2021-03-31 | 6 | -7/+15 |
| | |||||
* | Decode UHJ buffers to B-Format for mixing | Chris Robinson | 2021-03-31 | 3 | -69/+103 |
| | | | | | 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 audio | Chris Robinson | 2021-03-31 | 5 | -1/+36 |
| | | | | Currently only 2-channel UHJ, which gets treated as stereo. | ||||
* | Combine some duplicate code | Chris Robinson | 2021-03-30 | 3 | -48/+52 |
| | |||||
* | Move the UHJ phase shifter to a common header | Chris Robinson | 2021-03-28 | 1 | -1/+1 |
| | |||||
* | Don't add the resampler prepadding to the source size to load | Chris Robinson | 2021-03-23 | 1 | -18/+17 |
| | |||||
* | Load/convert samples from all channels at once for mixing | Chris Robinson | 2021-03-19 | 4 | -116/+139 |
| | | | | | | | This uses a bit more memory (each voice needs to hold buffers for the deinterleaved samples of each channel, instead of just one buffer for the current channel being mixed on the device), but it will allow for handling formats that need or prefer their channels decoded together. | ||||
* | Don't force application name with pulseaudio | Ilya Fedin | 2021-03-18 | 1 | -8/+1 |
| | |||||
* | Don't activate the WASAPI device when initially opening it | Chris Robinson | 2021-03-17 | 1 | -17/+2 |
| | |||||
* | Avoid returning objects with a reference parameter | Chris Robinson | 2021-03-16 | 1 | -13/+13 |
| | |||||
* | Check that CoCreateInstance succeeds | Chris Robinson | 2021-03-16 | 1 | -13/+17 |
| | |||||
* | Workaround mingw complaining about the %z formatter | Chris Robinson | 2021-03-12 | 3 | -2/+16 |
| | |||||
* | Avoid shadowing variable names | Chris Robinson | 2021-03-11 | 1 | -6/+6 |
| | |||||
* | Declare the attribute counts closer to where they are | Chris Robinson | 2021-03-10 | 1 | -25/+30 |
| | |||||
* | Prevent querying the capture device name from a playback device | Chris Robinson | 2021-03-09 | 1 | -3/+16 |
| | | | | And vice-versa. | ||||
* | Don't verify and hold a device reference in alcRenderSamplesSOFT | Chris Robinson | 2021-03-09 | 1 | -5/+4 |
| | | | | | | | | | | | | NULL devices are still checked, but invalid non-NULL device handles will invoke undefined behavior, as will attempting to close the device while the function is being executed (modifying the device state while the function is being called was inadvertently already UB, and will now remain so). This change is solely so alcRenderSamplesSOFT can be used in a buffer callback, and other places that need functions to be real-time safe. The verification requires locking to access the device list, which isn't allowed in a real-time callback. | ||||
* | Add a function/extension to reopen a playback device | Chris Robinson | 2021-03-09 | 2 | -25/+112 |
| | |||||
* | Initialize the new audio unit before disposing the old one | Chris Robinson | 2021-03-09 | 1 | -6/+6 |
| | |||||
* | Move the ComPtr wrapper to a common header | Chris Robinson | 2021-03-08 | 2 | -126/+2 |
| | |||||
* | Allow calling BackendBase::open multiple times on playback devices | Chris Robinson | 2021-03-08 | 15 | -257/+360 |
| | | | | | | | | | | | It will not be called while the device is running. If the first call succeeds, a subsequent call that happens to fail must leave the existing device state as it was so it can be resumed. This is a rough first pass. It will fail when trying to re-open the same device which can only be opened once (for instance, with direct hardware access, on hardware that doesn't do its own mixing). Some backends won't guarantee the new device is usable until the reset() or start() call. | ||||
* | Avoid making BSincPointsMax public | Chris Robinson | 2021-03-01 | 1 | -1/+0 |
| | |||||
* | Avoid trying to get the app path when it fails on Windows too | Chris Robinson | 2021-02-27 | 1 | -9/+10 |
| | |||||
* | Avoid calling readlink on platforms that don't support it | Chris Robinson | 2021-02-27 | 1 | -11/+11 |
| | | | | Also don't keep trying to find the path+name if it fails the first time. | ||||
* | Avoiding cutting all bsinc resampler output at scale 0 | Chris Robinson | 2021-02-24 | 1 | -2/+2 |
| | | | | | | | | | | | | 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. | ||||
* | Clean up some formatting | Chris Robinson | 2021-02-16 | 1 | -81/+71 |
| |