aboutsummaryrefslogtreecommitdiffstats
path: root/alc
Commit message (Collapse)AuthorAgeFilesLines
* Ensure some mixing buffers are aligned for SIMDChris Robinson2022-07-262-2/+2
|
* Use the reverb air absorption for the send pathsChris Robinson2022-07-191-9/+7
|
* Declare variables closer to where they're usedChris Robinson2022-07-181-4/+2
|
* [EAX_CONTEXT] Fix defaults for current propertiesBoris I. Bendovsky2022-07-172-6/+41
|
* [EAX_CONTEXT] Fix committing of a property valueBoris I. Bendovsky2022-07-171-1/+3
|
* [EAX_FX_SLOT] Mark sources as changed instead of commiting them to catch up ↵Boris I. Bendovsky2022-07-172-7/+1
| | | | with changes in FX slot
* Don't pass an EaxCall to initialize_fx_slotsChris Robinson2022-07-152-9/+8
|
* Don't store and manage wet buffers separatelyChris Robinson2022-07-154-54/+15
|
* Allocate EffectSlots in clustersChris Robinson2022-07-152-1/+20
|
* Dynamically allocate EffectSlot objectsChris Robinson2022-07-152-4/+4
|
* Don't track dirty flags per EAX versionChris Robinson2022-07-132-38/+25
| | | | | 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.
* Don't commit EAX properties when not initializedChris Robinson2022-07-131-1/+2
|
* [EAX] Add separate context state for each version (#731)Boris I. Bendovsky2022-07-132-688/+615
|
* [EAX] Use separate FX slot state for each version (#730)Boris I. Bendovsky2022-07-122-17/+4
| | | | | | | * [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
* Add a config compat option for NFC distance scalingChris Robinson2022-07-073-8/+12
| | | | | | | | | | | | 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.
* Add a speaker-dist config optionChris Robinson2022-07-071-7/+15
| | | | | | | 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.
* Remove an unused structChris Robinson2022-07-051-9/+1
| | | | And minor formatting cleanup
* Define PW_KEY_NODE_RATE when neededChris Robinson2022-06-241-0/+5
|
* Fix the PipeWire version checkChris Robinson2022-06-241-1/+2
| | | | | | 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.
* Remove an unused lambda captureChris Robinson2022-06-181-1/+1
|
* [EAX] Add separate source state for each version (#720)Boris I. Bendovsky2022-06-182-27/+8
|
* Don't apply effect auto send adjustments for non-reverb effectsChris Robinson2022-06-161-1/+1
|
* Match exactly 5.1 Rear in WASAPIChris Robinson2022-06-161-2/+2
| | | | | So 7.1 and other configurations like it aren't detected as 5.1 Rear despite having side channels.
* Handle a blank channel mask from WASAPIChris Robinson2022-06-141-10/+18
| | | | | | | 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).
* Use an inline function instead of a function-like macroChris Robinson2022-06-121-6/+7
|
* Disable EAX if the Chorus effect is disabledChris Robinson2022-06-101-2/+7
|
* Handle 5.1 Rear with DSound playbackChris Robinson2022-06-081-42/+44
|
* Check and handle 5.1 Rear with WASAPI captureChris Robinson2022-06-071-3/+23
|
* Trace the WASAPI device mix formatChris Robinson2022-06-071-0/+1
|
* Track 5.1 Rear with WASAPI playbackChris Robinson2022-06-071-3/+14
|
* Increase the priority of the ALSA backendChris Robinson2022-06-041-3/+3
| | | | | | | | | 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.
* Use a ringbuffer for Oboe captureChris Robinson2022-05-281-66/+23
|
* Fix requeueing logic for OpenSLCapture::captureSamplesChris Robinson2022-05-281-17/+29
| | | | | | | | | | | | | | 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.
* Ensure enough default sends for EAX with the config option setChris Robinson2022-05-271-10/+24
|
* Use a boolean check instead of a function pointerChris Robinson2022-05-241-7/+14
|
* Avoid dividing by a constantChris Robinson2022-05-241-4/+4
|
* [EAX] Add separate effect state for each version (#705)Boris I. Bendovsky2022-05-242-164/+118
| | | | | * [EAX] Add separate effect state for each version * [EAX] Don't use EAX call as data member
* Use the mix format if IsFormatSupported fails for WASAPI captureChris Robinson2022-05-171-1/+6
|
* Avoid a virtual function call to set the decoder widthChris Robinson2022-05-171-1/+1
|
* Move EAX files to their own sub-directoryChris Robinson2022-05-164-9/+9
|
* Use virtual functions for the decoderChris Robinson2022-05-141-1/+1
|
* Mark the template base as inlineChris Robinson2022-05-141-1/+1
| | | | | Apple LLVM doesn't like template specializatioms marked inline without the (deleted) base also being inline.
* Keep some variables local to where they're neededChris Robinson2022-05-131-26/+21
|
* Use pw_buffer::requested in newer PipeWire versionsChris Robinson2022-05-131-16/+26
|
* Remove a couple unnecessary castsChris Robinson2022-05-131-3/+3
|
* Fix the CoreAudio output element valueChris Robinson2022-05-101-1/+1
|
* More agressively hide PipeWire and SDL header warningsChris Robinson2022-05-092-2/+17
|
* Reject older versions of PipeWire than built againstChris Robinson2022-05-071-0/+24
| | | | | | | | | | | | | | | | | | | 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.
* Avoid a deprecated PipeWire functionChris Robinson2022-05-061-4/+17
| | | | | 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.
* Use an array of pointers for the UHJ encoder inputChris Robinson2022-05-061-1/+1
|