aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't expose EAX reverb preset duplicatesChris Robinson2022-03-242-113/+62
| | | | | The presets are already in their respective arrays, which makes the individual globals redundant.
* Simplify a couple offsetof statementsChris Robinson2022-03-241-10/+4
|
* Revert "Set the proper reverb effect defaults for EAX"Chris Robinson2022-03-241-25/+0
| | | | This reverts commit 964a11ef629fa3a89e827516a47949c858ce864c.
* Be more careful about checking compiler flagsChris Robinson2022-03-231-15/+15
| | | | | Certain combinations of MSVC and CMake seem to allow all compiler flag checks to pass, which was causing certain GCC attributes to be used on MSVC.
* Handle more modes with the ALC_OUTPUT_MODE_SOFT attributeChris Robinson2022-03-234-184/+254
|
* Set the proper reverb effect defaults for EAXChris Robinson2022-03-231-0/+25
|
* Better ensure attributes are properly tracedChris Robinson2022-03-171-28/+15
|
* Fix tracing the ALC_OUTPUT_MODE_SOFT attributeChris Robinson2022-03-171-1/+1
|
* Ensure the EAX functions are suitably aligned on 32-bitChris Robinson2022-03-162-4/+4
|
* Make sure FX slots that aren't made active are disabledChris Robinson2022-03-131-9/+6
|
* Add options to reverse local X and Y coordinatesChris Robinson2022-03-105-11/+36
| | | | | To go along with reverse-z on the other axii. This is only for games that have position/orientation errors causing top-bottom (or left-right) inversion.
* Update comments about where to put config filesChris Robinson2022-03-101-6/+10
|
* Fix for some missing macrosChris Robinson2022-03-101-0/+5
|
* Add a config option for reverse-zChris Robinson2022-03-104-25/+41
| | | | | | The same as the __ALSOFT_REVERSE_Z env var, but in the config file. Should only be used for per-game config files (either along side the executable, or setting the ALSOFT_CONF env var when launching the app).
* Use proper macros instead of magic numbersChris Robinson2022-03-091-3/+3
|
* Avoid a divide-by-zero in UhjDecoder::decodeStereoChris Robinson2022-03-071-4/+4
|
* Fix X-RAM trackingChris Robinson2022-03-064-185/+117
|
* Avoid a stateful unique_ptr deleterChris Robinson2022-03-052-28/+10
|
* Fix EAXSOURCE_ROLLOFFFACTORChris Robinson2022-03-052-2/+11
| | | | It should be added to AL_ROLLOFF_FACTOR.
* Set the MacroFXFactor defaultChris Robinson2022-03-051-0/+1
|
* Simplify committing EAX propertiesChris Robinson2022-03-0518-1072/+328
| | | | | | Based on DirectSound's EAX behavior, committing any EAX property commits *all* deferred property changes, not just the object being changed. So applying EAX changes can be handled in one place.
* Handle deferring for EAX 1 reverbChris Robinson2022-03-041-351/+212
| | | | | I don't know if EAX 1 actually handles deferring updates, but it will simplify future changes.
* Ensure deferred EAX effect properties are committedChris Robinson2022-03-0417-57/+86
|
* Fix the UHJ decoder parameters in uhjdecoderChris Robinson2022-03-021-5/+5
|
* Fix applying the EAX context AirAbsorptionHF propertyChris Robinson2022-03-021-1/+1
|
* Fix applying air absorptionChris Robinson2022-03-021-20/+20
|
* Move some temp variables closer to where they're usedChris Robinson2022-03-021-69/+67
|
* Rework source send distance attenuation handlingChris Robinson2022-03-021-61/+77
| | | | | | | | Specifically, AL_[EAX]REVERB_ROOM_ROLLOFF_FACTOR always applies to an inverse distance rolloff model, where the source's AL_ROOM_ROLLOFF_FACTOR applies to the selected distance model. Consequently, the normal distance and cone attenuation only needs to be calculated once for all sends, with the effect's room rolloff calculated and applied separately.
* Rework the initial reverb decayChris Robinson2022-03-011-41/+32
| | | | | | | | | | | | | | | | | | The idea here is that the initial reverb decay can't become less than the dry path distance attenuation, as the dry attenuation represents the audio that has not yet had a chance to start reflecting in the environment. As well, the reference distance indicates where there is no distance attenuation, with any initial attenuation set by the environment itself. So what we do is use the dry path attenuation as the baseline for what's mixed to the reverb, with the decay rate indicating how much of the remaining room (non-direct) energy attenuates with distance. This may be over-complicating it. Other sources hint at a more typical XdB per doubling of distance, with X varying depending on environment properties (room size, absorbancy, etc). This could be handled by applying a normal inverse distance attenuation model, with a rolloff factor generated from the reverb properties (density, decay rate, etc). Will need more testing and research.
* Remove AL_SOFTX_filter_gain_exChris Robinson2022-02-282-6/+3
| | | | | | It was only added to try to help DSOAL, and it's not clear if it's even necessary. But with native EAX API support, it certainly isn't necessary anymore.
* Forward the DriverIface constructor's nameChris Robinson2022-02-261-4/+6
|
* Don't handle EFX functions in the routerChris Robinson2022-02-264-140/+3
| | | | | | Creative's wrapper driver doesn't handle them through alcGetProcAddress, at least with a null device. For this to work properly, they'd have to be loaded per-context instead of per-driver.
* Use a more C99-compliant function castChris Robinson2022-02-264-4/+48
|
* Use a more compatible method to check for EFX effectsChris Robinson2022-02-261-41/+68
| | | | | | Creative's wrapper driver doesn't seem to handle EFX enums for alGetEnumValue, let alone return values only for what's supported. The only way to check which filter and effect types it supports is try to set them and check for errors.
* Forward the (un)likely expression being cast to boolChris Robinson2022-02-241-4/+7
|
* Make some structs nestedChris Robinson2022-02-232-13/+13
|
* Remove unused atomic_invflagChris Robinson2022-02-231-19/+0
|
* Use function overloading to handle pthread_setname_np differencesChris Robinson2022-02-233-59/+26
|
* Default initialize a unionChris Robinson2022-02-231-2/+2
| | | | To silence an errant GCC warning
* Fix an unused parameter warningChris Robinson2022-02-231-1/+6
| | | | ... when either pthread_setschedparam or RTKit aren't available.
* Define the CoreAudio default name only when neededChris Robinson2022-02-231-2/+4
|
* Make some local constexpr variables staticChris Robinson2022-02-237-39/+33
|
* Avoid an implicit char-to-bool conversionChris Robinson2022-02-231-5/+5
|
* Explicitly define AmbDecConf's destructorChris Robinson2022-02-222-0/+5
| | | | | | GCC complains it can't inline the destructor because it's "unlikely" to be called and would bloat code size, despite being implicitly defined. Technically accurate, but rather annoying since it's not explicitly called or defined.
* Add a OpenAL::OpenAL cmake target aliasChris Robinson2022-02-221-0/+3
| | | | For when built as a sub-project, to clarify it's a target instead of a library.
* Clean up some cmake output formattingChris Robinson2022-02-221-13/+13
|
* Avoid using an if_constexpr macroChris Robinson2022-02-225-53/+54
| | | | | It doesn't actually use if constexpr, and compilers are smart enough to optimize. Some functions can use templates instead.
* Rename some variables to show the relevant bit patternChris Robinson2022-02-221-9/+9
|
* Revert "Use std::exchange instead of two swaps"Chris Robinson2022-02-221-1/+2
| | | | This reverts commit aa19223c65d8693dbaa8d8c9fa0c129d77eed4de.
* Use a simpler loop to enumerate sourcesChris Robinson2022-02-212-222/+17
|