aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't verify and hold a device reference in alcRenderSamplesSOFTChris Robinson2021-03-091-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 deviceChris Robinson2021-03-092-25/+112
|
* Initialize the new audio unit before disposing the old oneChris Robinson2021-03-091-6/+6
|
* Move the ComPtr wrapper to a common headerChris Robinson2021-03-084-126/+73
|
* Allow calling BackendBase::open multiple times on playback devicesChris Robinson2021-03-0815-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 popcountChris Robinson2021-03-021-7/+20
|
* Use the correct lock when allocating filtersChris Robinson2021-03-021-1/+1
|
* Avoid making BSincPointsMax publicChris Robinson2021-03-013-19/+30
|
* Avoid cutting off the last bsinc filter coefficientChris Robinson2021-03-011-3/+3
|
* Avoid trying to get the app path when it fails on Windows tooChris Robinson2021-02-271-9/+10
|
* Avoid calling readlink on platforms that don't support itChris Robinson2021-02-271-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 0Chris Robinson2021-02-242-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 Robinson2021-02-241-1/+2
|
* Avoid an unnecessary loop iterationChris Robinson2021-02-231-2/+3
|
* Adjust the bsinc filter table packingChris Robinson2021-02-234-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 intrinsicsChris Robinson2021-02-211-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 efficientlyChris Robinson2021-02-181-14/+23
|
* Use shifts instead of shuffles with SSE where possibleChris Robinson2021-02-181-4/+4
|
* Add some optimization hintsChris Robinson2021-02-163-18/+24
|
* Clean up some formattingChris Robinson2021-02-161-81/+71
|
* Add missing includeChris Robinson2021-02-161-0/+1
|
* Add enumeration to the JACK backendChris Robinson2021-02-131-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 NEONChris Robinson2021-02-081-3/+3
|
* Use spans instead of references to arraysChris Robinson2021-02-0612-31/+38
|
* Add a alSourceQueueBufferLayersSOFT stubChris Robinson2021-02-041-0/+11
| | | | For compatiblity with apps that may have directly linked to it on accident.
* Release 1.21.1Chris Robinson2021-02-042-2/+2
|
* Update changelogChris Robinson2021-02-021-0/+2
|
* Stop the Oboe recording stream when recording is stoppedChris Robinson2021-02-021-2/+2
| | | | Hopefully Oboe will retain any unread samples and let them be read.
* Implement Oboe captureChris Robinson2021-01-311-4/+135
|
* Set the oboe stream buffer sizeChris Robinson2021-01-311-0/+2
|
* Add a comment about using lld on AndroidChris Robinson2021-01-311-0/+5
|
* Avoid copying buffers for aligning overlapped windowsChris Robinson2021-01-302-33/+42
|
* Update changelogChris Robinson2021-01-291-0/+2
|
* Calculate the square root after checking the limitChris Robinson2021-01-291-4/+5
|
* Allow the sample type to get changed on SolarisChris Robinson2021-01-291-6/+10
|
* Merge pull request #524 from Cacodemon345/patch-1kcat2021-01-291-0/+1
|\ | | | | Fix compilation on Solaris backend
| * Fix compilation on Solaris backendCacodemon3452021-01-291-0/+1
|/
* Add a panning "deadzone" for spatialized sourcesChris Robinson2021-01-282-3/+4
| | | | It is now the greater of 'epsilon' (1 / 2**23) or ref_distance/1024.
* Export EFX functions from the routerChris Robinson2021-01-275-1/+152
|
* Ignore SI-style configuration strings for device namesChris Robinson2021-01-271-0/+5
|
* Rework fading of stopped soundsChris Robinson2021-01-271-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 itemChris Robinson2021-01-261-2/+2
|
* Move al::deque to a common headerChris Robinson2021-01-253-7/+18
|
* Use an AL-specific buffer queue item struct for sourcesChris Robinson2021-01-255-79/+68
|
* Use a deque for the source buffer queueChris Robinson2021-01-252-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 itemChris Robinson2021-01-244-61/+64
|
* Store buffer info in the queue entryChris Robinson2021-01-2421-78/+103
|
* Remove some unnecessary function attributesChris Robinson2021-01-231-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/formatChris Robinson2021-01-222-3/+3
|
* Don't bother checking for std::aligned_allocChris Robinson2021-01-223-25/+2
|