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