Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 | 4 | -126/+73 |
| | |||||
* | 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. | ||||
* | Use a fast native type for the backup popcount | Chris Robinson | 2021-03-02 | 1 | -7/+20 |
| | |||||
* | Use the correct lock when allocating filters | Chris Robinson | 2021-03-02 | 1 | -1/+1 |
| | |||||
* | Avoid making BSincPointsMax public | Chris Robinson | 2021-03-01 | 3 | -19/+30 |
| | |||||
* | Avoid cutting off the last bsinc filter coefficient | Chris Robinson | 2021-03-01 | 1 | -3/+3 |
| | |||||
* | 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 | 2 | -9/+8 |
| | | | | | | | | | | | | 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. | ||||
* | Use a more appropriate epsilon for Sinc() | Chris Robinson | 2021-02-24 | 1 | -1/+2 |
| | |||||
* | Avoid an unnecessary loop iteration | Chris Robinson | 2021-02-23 | 1 | -2/+3 |
| | |||||
* | Adjust the bsinc filter table packing | Chris Robinson | 2021-02-23 | 4 | -41/+29 |
| | | | | | | | | Now each scale's filter and phase delta are interleaved for each phase index, followed by the scale and scale+phase delta for each phase index. This ensures no holes in the filter coefficients for the fast bsinc resampler for a given run, while keeping the scale deltas in the same vicinity for the non-fast bsinc resampler. | ||||
* | Remove unnecessary use of SSE2 intrinsics | Chris Robinson | 2021-02-21 | 1 | -2/+1 |
| | | | | | The compiler is producing the same results either way, since the upper bit results are never used. | ||||
* | Store the all-pass FIR results more efficiently | Chris Robinson | 2021-02-18 | 1 | -14/+23 |
| | |||||
* | Use shifts instead of shuffles with SSE where possible | Chris Robinson | 2021-02-18 | 1 | -4/+4 |
| | |||||
* | Add some optimization hints | Chris Robinson | 2021-02-16 | 3 | -18/+24 |
| | |||||
* | Clean up some formatting | Chris Robinson | 2021-02-16 | 1 | -81/+71 |
| | |||||
* | Add missing include | Chris Robinson | 2021-02-16 | 1 | -0/+1 |
| | |||||
* | Add enumeration to the JACK backend | Chris Robinson | 2021-02-13 | 1 | -35/+84 |
| | | | | | | | | Port names seem to be structured as <device_name:channel_name> or <app_name:channel_name>. I'm not sure if this is always the case, but it seems some other apps expect something like this. Also fix the port selection to exclude MIDI ports and allow non-physical ports. | ||||
* | Add the all-pass filter results to the output with NEON | Chris Robinson | 2021-02-08 | 1 | -3/+3 |
| | |||||
* | Use spans instead of references to arrays | Chris Robinson | 2021-02-06 | 12 | -31/+38 |
| | |||||
* | Add a alSourceQueueBufferLayersSOFT stub | Chris Robinson | 2021-02-04 | 1 | -0/+11 |
| | | | | For compatiblity with apps that may have directly linked to it on accident. | ||||
* | Release 1.21.1 | Chris Robinson | 2021-02-04 | 2 | -2/+2 |
| | |||||
* | Update changelog | Chris Robinson | 2021-02-02 | 1 | -0/+2 |
| | |||||
* | Stop the Oboe recording stream when recording is stopped | Chris Robinson | 2021-02-02 | 1 | -2/+2 |
| | | | | Hopefully Oboe will retain any unread samples and let them be read. | ||||
* | Implement Oboe capture | Chris Robinson | 2021-01-31 | 1 | -4/+135 |
| | |||||
* | Set the oboe stream buffer size | Chris Robinson | 2021-01-31 | 1 | -0/+2 |
| | |||||
* | Add a comment about using lld on Android | Chris Robinson | 2021-01-31 | 1 | -0/+5 |
| | |||||
* | Avoid copying buffers for aligning overlapped windows | Chris Robinson | 2021-01-30 | 2 | -33/+42 |
| | |||||
* | Update changelog | Chris Robinson | 2021-01-29 | 1 | -0/+2 |
| | |||||
* | Calculate the square root after checking the limit | Chris Robinson | 2021-01-29 | 1 | -4/+5 |
| | |||||
* | Allow the sample type to get changed on Solaris | Chris Robinson | 2021-01-29 | 1 | -6/+10 |
| | |||||
* | Merge pull request #524 from Cacodemon345/patch-1 | kcat | 2021-01-29 | 1 | -0/+1 |
|\ | | | | | Fix compilation on Solaris backend | ||||
| * | Fix compilation on Solaris backend | Cacodemon345 | 2021-01-29 | 1 | -0/+1 |
|/ | |||||
* | Add a panning "deadzone" for spatialized sources | Chris Robinson | 2021-01-28 | 2 | -3/+4 |
| | | | | It is now the greater of 'epsilon' (1 / 2**23) or ref_distance/1024. | ||||
* | Export EFX functions from the router | Chris Robinson | 2021-01-27 | 5 | -1/+152 |
| | |||||
* | Ignore SI-style configuration strings for device names | Chris Robinson | 2021-01-27 | 1 | -0/+5 |
| | |||||
* | Rework fading of stopped sounds | Chris Robinson | 2021-01-27 | 1 | -22/+13 |
| | | | | | | | Voices that stop and have no more accessible samples now fade out over 64 samples max. The extra loaded samples are also prevented from moving away from 0 amplitude. Paused voices that still have samples will still fade out over the whole mix. | ||||
* | Make sure InitVoice is given a valid buffer queue item | Chris Robinson | 2021-01-26 | 1 | -2/+2 |
| | |||||
* | Move al::deque to a common header | Chris Robinson | 2021-01-25 | 3 | -7/+18 |
| | |||||
* | Use an AL-specific buffer queue item struct for sources | Chris Robinson | 2021-01-25 | 5 | -79/+68 |
| | |||||
* | Use a deque for the source buffer queue | Chris Robinson | 2021-01-25 | 2 | -149/+121 |
| | | | | | | This mainly avoids having to allocate ~64-byte structures individually. The mixing voice still holds the queue as a linked list so as to be container- agnostic. | ||||
* | Store the callback in the buffer list item | Chris Robinson | 2021-01-24 | 4 | -61/+64 |
| | |||||
* | Store buffer info in the queue entry | Chris Robinson | 2021-01-24 | 21 | -78/+103 |
| | |||||
* | Remove some unnecessary function attributes | Chris Robinson | 2021-01-23 | 1 | -4/+4 |
| | | | | | | | | The alloc_size was wrong anyway since the function parameter takes the number of objects to be allocated and the attribute declares which is the number of bytes. The assume_aligned is unnecessary since the function is inlined and al_malloc/al_calloc already have appropriate attributes for the compiler to see. | ||||
* | Set the correct default buffer bits/format | Chris Robinson | 2021-01-22 | 2 | -3/+3 |
| | |||||
* | Don't bother checking for std::aligned_alloc | Chris Robinson | 2021-01-22 | 3 | -25/+2 |
| |