8181 Commits

Author SHA1 Message Date
Chris Robinson
650a6d49e9 Declare variables closer to where they're used 2022-07-18 11:10:27 -07:00
Chris Robinson
0650d4ee70 Remove a redundant check
If src_occlusion_mb is 0, it'll be multiplied with whatever the ratio ends up
being, which will result in 0 anyway. A number of uses also already check the
occlusion value before calling the method.
2022-07-17 20:02:54 -07:00
Chris Robinson
0d2eeda9c1 Fix parameter signedness 2022-07-17 18:12:21 -07:00
Chris Robinson
263e9aab11 Update some outdated docs 2022-07-17 18:12:21 -07:00
Chris Robinson
4cbb271819 Avoid duplicate initializations for multiple filters
Just initialize the first and copy it to the others.
2022-07-17 18:12:21 -07:00
Edoardo Lolletti
e28a49363e
Fix possible C2084 compiler error ()
* Fix possible C2084 compiler error

Guiddef.h uses a separate header guard to define the GUID operators, in the current codebase this won't cause any issue, but i got such error while fiddling a bit with the program and including something that ended up including all the various windows headers, that ended up including Guiddef.h, causing the error as by not finding the macro declared, it ended up declaring the inline operators as well.

* Update api.h
2022-07-17 18:11:32 -07:00
kcat
c6064a2034
Merge pull request from bibendovsky/wip_20220714
[EAX] Various fixes
2022-07-17 13:28:47 -07:00
Boris I. Bendovsky
7e9c0285b4
[EAX_SOURCE] Fix source's occlusion and exclusion contribution
Source's oclussion and exclusion properties should be taken into account only for listener's environment (see p. 16, p. 56, pp. 62-63 and p. 64 of "EAX® 4.0 Programmer’s Guide").
2022-07-17 21:06:41 +03:00
Boris I. Bendovsky
6f3500f458
[EAX_FX_SLOT] Fix setting EAX5 flags 2022-07-17 20:59:07 +03:00
Boris I. Bendovsky
51a48e32ba
[EAX_CONTEXT] Fix defaults for current properties 2022-07-17 20:59:07 +03:00
Boris I. Bendovsky
e24f124a89
[EAX_FX_SLOT] Fix defaults for current properties 2022-07-17 20:59:06 +03:00
Boris I. Bendovsky
71ac63e5a8
[EAX_SOURCE] Skip occlusion calculation if occlusion property is zero 2022-07-17 20:59:06 +03:00
Boris I. Bendovsky
1f238a602f
[EAX_SOURCE] Fix Room and RoomHF contribution
Those properties should be taken into account only for environmental effect slot (see pp. 60-61 of "EAX® 4.0 Programmer’s Guide").
2022-07-17 20:59:06 +03:00
Boris I. Bendovsky
f7b4dd002f
[EAX_CONTEXT] Fix committing of a property value 2022-07-17 20:59:05 +03:00
Boris I. Bendovsky
1a2f659d89
[EAX_SOURCE] Fix getting active FX slot IDs 2022-07-17 20:59:05 +03:00
Boris I. Bendovsky
74c923edce
[EAX_FX_SLOT] Fix slot's occlusion contribution 2022-07-17 20:59:05 +03:00
Boris I. Bendovsky
8de2a56068
[EAX_CALL] Clear defer flag for immediate-only properties
EAX allow to set "defer" flag on immediate-only properties. If we don't clear our flag then "applyAllUpdates" in EAX context won't be called.
2022-07-17 20:59:04 +03:00
Boris I. Bendovsky
c88c5e6189
[EAX_FX_SLOT] Mark sources as changed instead of commiting them to catch up with changes in FX slot 2022-07-17 20:59:04 +03:00
Boris I. Bendovsky
e9bb078806
[EAX_FX_SLOT] Fix EAXGet for EAX5 2022-07-17 20:58:55 +03:00
Chris Robinson
7b0776e33f Don't pass an EaxCall to initialize_fx_slots 2022-07-15 11:54:54 -07:00
Chris Robinson
af5d4fb77d Don't store and manage wet buffers separately 2022-07-15 06:58:15 -07:00
Chris Robinson
0f4679981b Allocate EffectSlots in clusters 2022-07-15 06:14:25 -07:00
Chris Robinson
0b9fc03545 Dynamically allocate EffectSlot objects 2022-07-15 04:28:13 -07:00
Chris Robinson
07c2e786f5 Make a member function static 2022-07-13 05:28:42 -07:00
Chris Robinson
c843efd322 Don't track dirty flags per EAX version
Only the current version's flags are used, and they're all reset when changing
versions, making it unnecessary to track non-current version flags.
2022-07-13 05:19:51 -07:00
Chris Robinson
86094e87a5 Don't commit EAX properties when not initialized 2022-07-13 04:49:39 -07:00
Boris I. Bendovsky
10c22f6f82
[EAX] Add separate context state for each version () 2022-07-13 04:45:25 -07:00
Boris I. Bendovsky
6fb5cb553f
[EAX] Use separate FX slot state for each version ()
* [EAX] Use separate FX slot state for each version
[EAX] Don't defer FX slot properties

* [EAX_FXSLOT] Use mPropsDirty to defer update
[EAX_CONTEXT] Commit all updates on first initialization
2022-07-12 02:46:51 -07:00
Chris Robinson
fa51c89549 Fix building on some MinGW systems
Some systems don't like having a space in the export declaration, with windres
interpreting the extra attributes as input files. GCC seems to accept the
attributes being "packed" together, which avoids the problem with windres.
2022-07-08 17:28:48 -07:00
Chris Robinson
1ad553b5a9 Add a config compat option for NFC distance scaling
Currently there's no way for an application to specify the "real world" scale
for in-game units. If the game doesn't use one unit to represent what should be
perceived as one meter to the user, the NFC filter's effect will be too near or
too far sounding. This allows adjusting the unit scale as applied to the NFC
filters only, correcting the misalignment.

This also removes the influence of EFX's MetersPerUnit from the NFC filters,
since many games don't use it, and those that do won't know it also influences
the perceived wave curvature along with the air absorption strength.
2022-07-07 22:11:38 -07:00
Chris Robinson
edadd221ea Add a speaker-dist config option
This can be used to specify an average speaker distance without having the
modify the decoder config files. This also sets a default value of 1, letting
near-field effects work (if imprecisely) without an explicitly-configured
distance.
2022-07-07 14:58:09 -07:00
Chris Robinson
43b0afdab4 Properly update the Super Stereo width
Previously it would just keep using the set target, instead of tracking and
interpolating changes.
2022-07-07 02:01:20 -07:00
Chris Robinson
e2f5ceba7b Don't always activate the EAX primary effect slot for sources
The context's primary effect slot should only be considered when the source's
active slot IDs include the primary effect slot.
2022-07-06 23:44:35 -07:00
Chris Robinson
74b2e3b349 Remove an unused struct
And minor formatting cleanup
2022-07-05 09:27:44 -07:00
Chris Robinson
3ac78307ec Avoid separate lines for logging exceptions 2022-07-05 09:27:44 -07:00
Chris Robinson
221d33f3ea Use 48khz by default for playback 2022-07-05 09:27:44 -07:00
Chris Robinson
6dd7edd2e0 Make some Vector and Matrix methods constexpr 2022-07-05 09:27:44 -07:00
Hongtae Kim
0474a3678e
Added missing header file for std::assume_aligned. (C++20) () 2022-07-05 09:08:37 -07:00
Chris Robinson
dc83d99c95 Release 1.22.2 2022-06-27 01:33:53 -07:00
Chris Robinson
9cce3ba522 Update changelog 2022-06-27 01:11:09 -07:00
Chris Robinson
abff69e276 Define PW_KEY_NODE_RATE when needed 2022-06-24 13:22:09 -07:00
Chris Robinson
7494fe5736 Fix the PipeWire version check
PW_CHECK_VERSION checks if the header version is equal to or newer than the
values specified, it can't be used to check if the library version is equal to
or newer than the header version.
2022-06-24 13:00:08 -07:00
Chris Robinson
05f5faf265 Release 1.22.1 2022-06-20 18:16:18 -07:00
Chris Robinson
79d7aebb21 Update changelog 2022-06-19 12:13:20 -07:00
Chris Robinson
d2a32e4375 Don't change the EAX version when getting a reverb property 2022-06-19 08:06:16 -07:00
Chris Robinson
af690871b1 Combine multiple individual flags 2022-06-19 08:04:30 -07:00
Chris Robinson
a6c099c63e Track EAX1 source changes
Even though it's only a single value, this allows for not having to explicitly
track version changes, since the version being changed to will always have a
property change, implicitly marking an EAX update/commit for the source.
2022-06-19 07:44:01 -07:00
Chris Robinson
3f05208c50 Remove some unnecessary comparison operators 2022-06-18 20:05:12 -07:00
Chris Robinson
ef8c7379ea Avoid changing the EAX version on failure 2022-06-18 15:58:21 -07:00
Chris Robinson
dbce626905 Avoid more struct compared for reverb EAX updates 2022-06-18 15:55:53 -07:00