| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
with changes in FX slot
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Only the current version's flags are used, and they're all reset when changing
versions, making it unnecessary to track non-current version flags.
|
| |
|
| |
|
|
|
|
|
|
|
| |
* [EAX] Use separate FX slot state for each version
[EAX] Don't defer FX slot properties
* [EAX_FXSLOT] Use mPropsDirty to defer update
[EAX_CONTEXT] Commit all updates on first initialization
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently there's no way for an application to specify the "real world" scale
for in-game units. If the game doesn't use one unit to represent what should be
perceived as one meter to the user, the NFC filter's effect will be too near or
too far sounding. This allows adjusting the unit scale as applied to the NFC
filters only, correcting the misalignment.
This also removes the influence of EFX's MetersPerUnit from the NFC filters,
since many games don't use it, and those that do won't know it also influences
the perceived wave curvature along with the air absorption strength.
|
|
|
|
|
|
|
| |
This can be used to specify an average speaker distance without having the
modify the decoder config files. This also sets a default value of 1, letting
near-field effects work (if imprecisely) without an explicitly-configured
distance.
|
|
|
|
| |
And minor formatting cleanup
|
| |
|
|
|
|
|
|
| |
PW_CHECK_VERSION checks if the header version is equal to or newer than the
values specified, it can't be used to check if the library version is equal to
or newer than the header version.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
So 7.1 and other configurations like it aren't detected as 5.1 Rear despite
having side channels.
|
|
|
|
|
|
|
| |
Without a channel mask, the channels are treated as "raw" or unknown. Auto-
detection will only go up to stereo (assuming the first two channels are front-
left and front-right), while explicit requests will work as long as there are
enough channels (the user is responsible for ensuring a correct setup).
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
So that it's tried before sndio. Many Linux systems seem to have libsndio
installed as a hard dependency from SDL2, but not the server component to
actually make it work. And because there's no way to test if it's usable
without opening a device, the backend would get selected over ALSA and
subsequently fail to work. As a result, Linux users that don't use PipeWire or
PulseAudio would have to explicitly configure for ALSA.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The write vector represents the chunks queued for OpenSL, and the write pointer
only increments when OpenSL fills in more samples. So requeueing from the start
of the write vector is requeueing chunks that are already queued, which is
obviously wrong. It instead needs to queue chunks that become available as
they're read.
Because the ring buffer holds more elements than can be written to at a givem
time, the read vector does not represent the next writable chunks to queue.
Advancing the read pointer increases the number of writable elements, so
instead of queueing from the read vector or the start of the write vector,
queue from the end of the write vector given the number of chunks read.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* [EAX] Add separate effect state for each version
* [EAX] Don't use EAX call as data member
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Apple LLVM doesn't like template specializatioms marked inline without the
(deleted) base also being inline.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Newer versions of PipeWire may add things to public structures. For example,
pw_buffer::requested added in 0.3.49. Building against 0.3.49 or newer, but
then running with 0.3.48 could result in invalid accesses since the returned
pw_buffer objects are shorter than the definition says to expect, creating
undefined behavior. Even if explicit access to the additional fields is
protected by a runtime check, the language allows the compiler to assume a
pointer to a pw_buffer object contains a complete pw_buffer, allowing the
optimizer to access the field earlier than the check (with the check only
controlling if the value gets used).
Another example is pw_time, which had a few fields added in 0.3.50 along with a
function, pw_stream_get_time_n, that provides the size of the pw_time struct
the application is using (so the library knows what version of the struct it
has to fill in). If a later version adds a new field, running it with an older
version will either fail (due to the library getting a size larger than it
knows about) or silently leave the newer fields as garbage.
|
|
|
|
|
| |
Building against 0.3.50 or newer will require that version or newer at runtime.
Building against a version before 0.3.50 will work with newer versions.
|
| |
|