Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Fix EAXSOURCE_ROLLOFFFACTOR | Chris Robinson | 2022-03-05 | 2 | -2/+11 |
| | | | | It should be added to AL_ROLLOFF_FACTOR. | ||||
* | Set the MacroFXFactor default | Chris Robinson | 2022-03-05 | 1 | -0/+1 |
| | |||||
* | Simplify committing EAX properties | Chris Robinson | 2022-03-05 | 18 | -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 reverb | Chris Robinson | 2022-03-04 | 1 | -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 committed | Chris Robinson | 2022-03-04 | 17 | -57/+86 |
| | |||||
* | Fix the UHJ decoder parameters in uhjdecoder | Chris Robinson | 2022-03-02 | 1 | -5/+5 |
| | |||||
* | Fix applying the EAX context AirAbsorptionHF property | Chris Robinson | 2022-03-02 | 1 | -1/+1 |
| | |||||
* | Fix applying air absorption | Chris Robinson | 2022-03-02 | 1 | -20/+20 |
| | |||||
* | Move some temp variables closer to where they're used | Chris Robinson | 2022-03-02 | 1 | -69/+67 |
| | |||||
* | Rework source send distance attenuation handling | Chris Robinson | 2022-03-02 | 1 | -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 decay | Chris Robinson | 2022-03-01 | 1 | -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_ex | Chris Robinson | 2022-02-28 | 2 | -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 name | Chris Robinson | 2022-02-26 | 1 | -4/+6 |
| | |||||
* | Don't handle EFX functions in the router | Chris Robinson | 2022-02-26 | 4 | -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 cast | Chris Robinson | 2022-02-26 | 4 | -4/+48 |
| | |||||
* | Use a more compatible method to check for EFX effects | Chris Robinson | 2022-02-26 | 1 | -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 bool | Chris Robinson | 2022-02-24 | 1 | -4/+7 |
| | |||||
* | Make some structs nested | Chris Robinson | 2022-02-23 | 2 | -13/+13 |
| | |||||
* | Remove unused atomic_invflag | Chris Robinson | 2022-02-23 | 1 | -19/+0 |
| | |||||
* | Use function overloading to handle pthread_setname_np differences | Chris Robinson | 2022-02-23 | 3 | -59/+26 |
| | |||||
* | Default initialize a union | Chris Robinson | 2022-02-23 | 1 | -2/+2 |
| | | | | To silence an errant GCC warning | ||||
* | Fix an unused parameter warning | Chris Robinson | 2022-02-23 | 1 | -1/+6 |
| | | | | ... when either pthread_setschedparam or RTKit aren't available. | ||||
* | Define the CoreAudio default name only when needed | Chris Robinson | 2022-02-23 | 1 | -2/+4 |
| | |||||
* | Make some local constexpr variables static | Chris Robinson | 2022-02-23 | 7 | -39/+33 |
| | |||||
* | Avoid an implicit char-to-bool conversion | Chris Robinson | 2022-02-23 | 1 | -5/+5 |
| | |||||
* | Explicitly define AmbDecConf's destructor | Chris Robinson | 2022-02-22 | 2 | -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 alias | Chris Robinson | 2022-02-22 | 1 | -0/+3 |
| | | | | For when built as a sub-project, to clarify it's a target instead of a library. | ||||
* | Clean up some cmake output formatting | Chris Robinson | 2022-02-22 | 1 | -13/+13 |
| | |||||
* | Avoid using an if_constexpr macro | Chris Robinson | 2022-02-22 | 5 | -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 pattern | Chris Robinson | 2022-02-22 | 1 | -9/+9 |
| | |||||
* | Revert "Use std::exchange instead of two swaps" | Chris Robinson | 2022-02-22 | 1 | -1/+2 |
| | | | | This reverts commit aa19223c65d8693dbaa8d8c9fa0c129d77eed4de. | ||||
* | Use a simpler loop to enumerate sources | Chris Robinson | 2022-02-21 | 2 | -222/+17 |
| | |||||
* | Remove unused dirty flags | Chris Robinson | 2022-02-21 | 1 | -13/+0 |
| | |||||
* | Remove a couple extraneous externs | Chris Robinson | 2022-02-21 | 1 | -2/+2 |
| | |||||
* | Implement EAX v1.0 (#664) | Boris I. Bendovsky | 2022-02-21 | 9 | -69/+576 |
| | |||||
* | Make a couple more operator bools explicit | Chris Robinson | 2022-02-20 | 4 | -7/+13 |
| | |||||
* | Inline a couple more equality operators | Chris Robinson | 2022-02-20 | 4 | -48/+15 |
| | |||||
* | Fix gain_to_level_mb | Chris Robinson | 2022-02-20 | 1 | -1/+1 |
| | |||||
* | Constify the AVCodec* returned by avcodec_find_decoder | Chris Robinson | 2022-02-19 | 1 | -1/+1 |
| | |||||
* | Avoid a variable limit on EAX filters | Chris Robinson | 2022-02-18 | 3 | -19/+4 |
| | | | | | | I'll assume for now that the limits for the EAX properties will keep the filter gain from getting out of hand. The filter's gainhf is relative to the gain and is limited to 0dB max. | ||||
* | Trace the actual device form factor in pipewire | Chris Robinson | 2022-02-16 | 1 | -11/+5 |
| | |||||
* | Use std::exchange instead of two swaps | Chris Robinson | 2022-02-15 | 1 | -2/+1 |
| | |||||
* | Don't trace ignored pipewire stream nodes | Chris Robinson | 2022-02-15 | 1 | -1/+3 |
| | |||||
* | Reset mIs51Rear only when updating the channel config | Chris Robinson | 2022-02-15 | 1 | -4/+4 |
| | |||||
* | Log when a pipewire device is removed | Chris Robinson | 2022-02-15 | 1 | -1/+6 |
| | |||||
* | Mark another operator bool as explicit | Chris Robinson | 2022-02-15 | 1 | -1/+1 |
| | |||||
* | Rename deprecated -> legacy | Chris Robinson | 2022-02-14 | 1 | -7/+2 |
| | |||||
* | Don't use a generator expression in a CMake option | Chris Robinson | 2022-02-14 | 1 | -1/+1 |
| | |||||
* | Add missing closing brace | Chris Robinson | 2022-02-14 | 1 | -1/+1 |
| | |||||
* | Don't access a playing voice's mFlags outside of the mixer thread | Chris Robinson | 2022-02-14 | 1 | -8/+2 |
| | | | | | It's updated asynchronously, and it's non-atomic, so it's unsafe to even read since the mixer thread may be modifying it. |