Chris Robinson
d86f1ab476
Remove AL_SOFTX_filter_gain_ex
...
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.
2022-02-28 12:57:18 -08:00
Chris Robinson
357fb467fe
Define the CoreAudio default name only when needed
2022-02-23 02:26:25 -08:00
Chris Robinson
cadf0d1de5
Make some local constexpr variables static
2022-02-23 01:29:28 -08:00
Chris Robinson
d06ed618d3
Avoid using an if_constexpr macro
...
It doesn't actually use if constexpr, and compilers are smart enough to
optimize. Some functions can use templates instead.
2022-02-22 03:03:44 -08:00
Chris Robinson
1f9390f6f6
Use a simpler loop to enumerate sources
2022-02-21 21:46:38 -08:00
Boris I. Bendovsky
4ffba10d51
Implement EAX v1.0 ( #664 )
2022-02-21 19:39:06 -08:00
Chris Robinson
6c643e59e9
Make a couple more operator bools explicit
2022-02-20 22:04:19 -08:00
Chris Robinson
39708f9831
Avoid a variable limit on EAX filters
...
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.
2022-02-18 07:02:38 -08:00
Chris Robinson
a9974d3aa8
Trace the actual device form factor in pipewire
2022-02-16 00:04:11 -08:00
Chris Robinson
fba14feab7
Don't trace ignored pipewire stream nodes
2022-02-15 18:30:42 -08:00
Chris Robinson
ff54ed0fce
Reset mIs51Rear only when updating the channel config
2022-02-15 17:30:07 -08:00
Chris Robinson
0493085ea2
Log when a pipewire device is removed
2022-02-15 17:24:20 -08:00
Chris Robinson
30c5c43e56
Mark another operator bool as explicit
2022-02-15 06:27:27 -08:00
Chris Robinson
c6b301b72e
Access the proper FX slot index
2022-02-14 03:04:46 -08:00
Chris Robinson
ee946f57c3
Commit EAX context properties when a context stops deferring
2022-02-13 22:24:23 -08:00
Chris Robinson
1e687ebc8b
Force EAX calls to defer when the AL context is deferring
2022-02-13 21:13:13 -08:00
Chris Robinson
3e6d210767
Avoid more unnecessary atomics
2022-02-13 21:00:57 -08:00
Chris Robinson
ea7c6f3e4e
Don't make mPropsDirty atomic
...
It's only ever used under the ALCcontext::mPropLock mutex.
2022-02-13 19:37:45 -08:00
Chris Robinson
66f6cf121e
Commit source EAX properties when not deferring
...
And make sure they get committed when resuming processing.
2022-02-13 17:22:41 -08:00
Chris Robinson
ac42ac336e
Don't hide EAX functions behind a context
...
The standard says a function being returned doesn't necessarily mean it's
usable, and calling them will return failure if called when not usable. The
config option still prevents it from being returned, to better hide it when
disabled globally.
2022-02-10 17:54:27 -08:00
Chris Robinson
7896f6bae9
Inline some more simple getters
2022-02-08 22:50:06 -08:00
Chris Robinson
3c9a705210
Handle AirAbsorptionGainHF as a native context property
2022-02-08 22:41:44 -08:00
Chris Robinson
256ea81dbe
Combine listener and context updates
2022-02-08 20:43:05 -08:00
Chris Robinson
de87cc98d5
Apply updates for EAX context properties
2022-02-08 20:27:40 -08:00
Chris Robinson
46a836fa14
Actually defer EAXCONTEXT_ALLPARAMETERS properties
2022-02-08 16:49:37 -08:00
Chris Robinson
7864895ab6
Ensure sources update together from EAX commits
...
... when a listener property change forces a commit.
2022-02-08 16:36:40 -08:00
Chris Robinson
843cff0537
Hold mPropLock when deferring updates
2022-02-08 09:39:02 -08:00
Chris Robinson
370f862392
Inline ALCcontext::has_eax
2022-02-08 09:29:00 -08:00
Chris Robinson
98fc1cd97d
More accurately detect the EAX speaker config
2022-02-08 08:33:01 -08:00
Chris Robinson
be80e49f1b
DisabledEffects won't change so EAX can just check it once
2022-02-08 08:21:06 -08:00
Boris I. Bendovsky
d420776808
EAX various fixes ( #657 )
...
* [EAX] Fix effect GUID validation
Only NULL and REVERB was valid.
* [EAX] Fix default FX slot flags
EAX4 and EAX5 both sets to ENVIRONMENT.
* [EAX] Set default values for legacy FX slots in the initialization
* [EAX] Fix FX slot locking policy
Fail on attempt to load an effect or change a lock for EAX4 "set" call.
Unlock legacy FX slots on any EAX5 call.
* [EAX] Allow DEFER flag for "get" calls.
* [EAX] Make speaker configuration read-only
* [EAX] Initialize speaker configuration
* [EAX] Commit EAX source on a 3D source parameter call
Reference: EAX 4.0 Programmer's Guide
* [EAX] Commit EAX source on a 3D listener parameter call
Reference: EAX 4.0 Programmer's Guide
* [EAX] Commit source when it begins to play
Reference: EAX 4.0 Programmer's Guide
2022-02-08 08:20:46 -08:00
Chris Robinson
f23c7fe8ba
Avoid a proxy ALfilter object for EAX source properties
2022-02-07 13:53:57 -08:00
Chris Robinson
b09aab8426
Don't pass an ALeffect to ALeffectslot::initEffect
2022-02-07 08:47:55 -08:00
Chris Robinson
f63594d027
Avoid a magic number
2022-02-01 04:04:24 -08:00
Chris Robinson
1c9f791e4f
Rename Sqrt1_2 for consistency
2022-02-01 04:04:24 -08:00
Boris I. Bendovsky
195ae4b1d2
[EAX] Add primary extension name for EAX v2.0 ( #653 )
2022-02-01 04:03:33 -08:00
Chris Robinson
816bd8ab30
Move ALSOFT_EAX definition to config.h
...
And disable it by default for non-Windows targets
2022-01-30 05:42:44 -08:00
Boris I. Bendovsky
19ed994dc3
Add EAX extensions (EAX 2.0-5.0, X-RAM) ( #632 )
...
* Add EAX extensions (EAX 2.0-5.0, X-RAM)
* Comment out C++17 leftovers
* Remove everything related to patching
* Update alsoftrc.sample
* Rewrite integration
* Fix GCC compilation under Linux
* Always reset EAX effect properties when loading it into FX slot
2022-01-30 04:47:32 -08:00
Chris Robinson
619249371a
Remove math_defs.h
2022-01-27 04:04:41 -08:00
Chris Robinson
f8ac1ffe80
Get rid of MathDefs
2022-01-27 02:59:07 -08:00
Chris Robinson
1bbea9cd30
Start and use a standard-like numbers header
2022-01-27 01:38:39 -08:00
Chris Robinson
4c322e186e
Add some common wrapper methods to ThreadMainloop
2022-01-26 17:02:33 -08:00
Chris Robinson
0409180bb5
Default the PipeWire lock's operator= instead of using the base
2022-01-26 15:07:54 -08:00
Chris Robinson
537aa2f442
Handle 5.1 using rear channels with PulseAudio and PipeWire
2022-01-25 21:18:39 -08:00
Chris Robinson
4967c7f93c
Move some definitions to where they're used
2022-01-24 21:57:08 -08:00
Chris Robinson
3a02ba32e8
Avoid a messy while loop to remove from a vector
2022-01-22 23:18:19 -08:00
Chris Robinson
5d6a2d0433
Restructure the PipeWire backend code a bit
...
Make some functions into class member functions, and move related declarations
closer together.
2022-01-22 22:27:07 -08:00
Chris Robinson
c28ae87bb4
Avoid holding a pw_proxy, hold the type it represents
2022-01-22 20:08:59 -08:00
Chris Robinson
d48042adea
Handle duplex devices with PipeWire
2022-01-22 11:07:38 -08:00
Chris Robinson
561f50b3a3
Load the PipeWire real-time configuration
...
This is apparently needed to ensure RT threads get RT priority, separately from
requesting RT processing.
2022-01-17 17:16:58 -08:00