7876 Commits

Author SHA1 Message Date
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
6fb908bc38 Commit deferred EAX settings earlier when playing
Before the property update is supplied to the voice in InitVoice.
2022-02-08 11:00:12 -08:00
Chris Robinson
b2e0c3e002 Be less agressive with source updates on EAX changes 2022-02-08 10:00:34 -08:00
Chris Robinson
e2cdbf864f Fix sign of ALeffectslot::eax_get_eax_default_lock's return type 2022-02-08 09:39:56 -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
1807e083c8 Avoid eax_al_source_i/f wrappers 2022-02-07 11:44:14 -08:00
Chris Robinson
0c507b5c62 Avoid using ALeffect to manage EaxEffect objects
Effect slots can just use its EaxEffect directly.
2022-02-07 10:17:13 -08:00
Chris Robinson
b09aab8426 Don't pass an ALeffect to ALeffectslot::initEffect 2022-02-07 08:47:55 -08:00
Chris Robinson
4f7799f1ae Avoid the need for EaxAlContextWrapper 2022-02-06 15:26:22 -08:00
Chris Robinson
4df658fe3b Update the effectslot props with a function instead of a macro 2022-02-06 14:52:23 -08:00
Chris Robinson
784929f36d Inherit the atomic_flag constructors in atomic_invflag 2022-02-06 11:08:34 -08:00
Chris Robinson
75d9044c39 Inline some simple getters 2022-02-05 19:57:46 -08:00
Chris Robinson
9ba489360c Add options to encode 3- and 4-channel UHJ to uhjencoder
The generated files won't play correctly if the player doesn't know they're 3-
and 4-channel UHJ (the third and fourth channels must be ignored, or decoded,
for playback). This is largely just for completion's sake, just in case someone
has a use for it.
2022-02-04 18:05:25 -08:00
Chris Robinson
97dbd9a191 Don't search for __android_log_print on non-Android targets
For some reason this check is passing on iOS, causing the build to later fail
because it can't find -llog. Need to investigate why it finds something that
doesn't exist, but this should fix the build error in the mean time.
2022-02-03 00:27:48 -08:00
Chris Robinson
a98a76c4e0 Avoid global pointers to string literals 2022-02-01 04:05:59 -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
Chris Robinson
071c9a6758 Output a message when EAX is enabled in CMake 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
Jan Niklas Hasse
7d2de711c8
Remove extra ';' after member function definition (#652)
Found using -Wextra-semi warning.
2022-01-31 16:02:10 -08:00
Boris I. Bendovsky
ef529a586e
[EAX] Fix alIsExtensionPresent (#651) 2022-01-31 16:01:56 -08:00
Chris Robinson
96366c1fc1 Output a message when EAX is enabled in CMake 2022-01-30 05:46:29 -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
Chris Robinson
c9d59ebc4a Simplify FFT complex arg handling a bit 2022-01-30 04:55:13 -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
423888b816 Use precalculated lookup tables to swap FFT elements
Rather than going through the whole array, calculating the bit-reversed index
of each element, and not doing anything for more than half of them.
2022-01-27 00:39:36 -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
fad5a23a91 Update changelog 2022-01-18 19:24:54 -08:00
Chris Robinson
388f10319b Handle _gettid on FreeBSD
And simplify handling D-Bus/RTKit interfaces
2022-01-18 15:55:51 -08:00
Chris Robinson
5306c9d424 Set niceness as a fallback only on Linux
If pthread_setschedparam and rtkit_make_realtime both fail, lowering niceness
can also work to boost priority. However, this only works on Linux and other
OSs that implement a per-thread niceness (POSIX standard has it per-process,
which isn't desirable behavior here).
2022-01-18 14:32:15 -08:00
Chris Robinson
4920167fa0 Avoid passing a function pointer to std::call_once 2022-01-18 11:45:08 -08:00