| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The device playback is stopped so the function doesn't technically fail. This
primarily just allows the device state to be flagged as paused for a subsequent
reset or reopen, which covers a potential issue where a device is disconnected,
the app pauses it due to something like an incoming call or being put into the
background, then successfully resets or reopens the device before playback
should resume. Without this, the device will (try to) start immediately upon
being reset or reopened, which would either fail (and disconnect again) or
start playing again prematurely before it can be stopped.
|
| |
|
|
|
|
| |
And don't allow resuming if the backend device isn't properly set up.
|
|
|
|
| |
Also convert some functions to trailing return types and remove (void) casts.
|
|
|
|
| |
Except CoreAudio and Solaris backends
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This avoids using an array of 1 as a flexible array member, and instead uses a
span to reference the memory after itself.
|
|
|
|
| |
And suppress some warnings
|
|
|
|
|
| |
Remove a 1-element array for an over-allocated struct array. Also add a wrapper
struct for C++.
|
| |
|
| |
|
|
|
|
| |
It's unlikely to ever get fixed/revived now with Oboe
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Testing with Generic Software shows that the reverb room rolloff factor applies
to the currently selected distance model, not necessarily an inverse distance
model as described in the EFX docs. Though it should be noted, Generic Software
completely ignores AL_EFFECTSLOT_AUXILIARY_SEND_AUTO, never applies the cones
to the wet gain, and doesn't clamp to AL_MIX_GAIN and AL_MAX_GAIN for the wet
gains. It's unclear if the reverb or source room rolloff factors, or the
initial decay, should be imfluenced by the min or max gain properties.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Even though they're protected by a SeqLock of sorts, it's still UB to read and
write non-atomic vars from different threads. It's fine to do relaxed reads and
writes given the lock though, to help alleviate the cost.
|
|
|
|
|
|
| |
With gcc, mingw uses gnu_printf. With clang, printf is used as it does
not support gnu_printf. Use the internal header to match this properly.
Signed-off-by: Rosen Penev <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reduces the delay to provide a direct (no delay) line from the early
reflections to the late reverb delay buffer.
This also reduces the early reflection output gain by half. The reasoning here
is that EFX seems to expect only one set of initial reflections, while we use
two. And being close enough in time, nearly doubles the amount of output
energy.
This does seem to improve the "harshness" of certain reverbs, smoothing the
difference between reverbs, and makes it more like other implementations (still
some work to do on late reverb, though).
|
| |
|
| |
|
|
|
|
|
|
|
| |
* feat(openal-info): Add values related to sources inside openal-info.c
* fix(openal-info): Update display of nb of sources
CF following comment : https://github.com/kcat/openal-soft/pull/940#discussion_r1409659608
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* feat(ALC_SOFT_system_events): Add alcEventIsSupportedSOFT method in ALC_SOFT_system_events unreleased extension
The purpose of this addition (to my collection) are allow to retrieve which events are supported and if events are fully supported or if some case isn't managed for some reason
For exemple only some backends provide system events:
* pipewire -> Full support of extension
* wasapi -> Full support of extension
* pulseaudio -> Support of add and remove devices events only
* coreaudio -> Support of default device change only
* feat(ALC_SOFT_system_events): Fix typo in alext.h
Cf following review : https://github.com/kcat/openal-soft/pull/938#discussion_r1404509828
* feat(ALC_SOFT_system_events): Remove ALC_EVENT_NOT_SUPPORTED_SOFT token
Cf following discussions between this comment : https://github.com/kcat/openal-soft/pull/938#issuecomment-1825876452 to this comment : https://github.com/kcat/openal-soft/pull/938#issuecomment-1826419406
|
|
|
|
|
|
| |
Instead of "bouncing" the lines by indexing backwards for a not-quite-spatial-
opposite, do a proper mix that moves each line response to its true spatial
opposite position.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It doesn't make much sense to include both early reflections to feed the late
reverb, since it increases the total energy in the reverb decay. This better
fits with the design described in papers for this type of reverb, and seems to
better match volume levels of hardware EAX/EFX reverb (though there are still
some apparent differences).
Note that this adds a bit more delay to the late reverb, specifically
EARLY_LINE_LENGTHS[0] * density_mult. This can be compensated for somewhat by
reducing the late reverb delay by that amount (clamping to a minimum of 0).
Alternatively, adjust the delay lines for the second early tap to have a zero-
delay pass-through line with 3 delay lines (as opposed to the current 4 delay
lines), as suggested by the paper "ADAPTING ARTIFICIAL REVERBERATION
ARCHITECTURES FOR B-FORMAT SIGNAL PROCESSING". Although doing so may require
additional adjustments to the delay lengths and gains to avoid the 0-length
lines accumulating unattenuated copies of the signal for the early reflection
output.
|
| |
|