| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
These used to exist with the now-defunct AL_SOFT_buffer_samples extension, this
just restores those queries without extra baggage.
The sample length query are necessary when handling ADPCM buffers, since the
size/channels*8/bits calculation is incorrect with ADPCM. 'Bits' is usually
reported as 4 since most samples in a block are stored as nibbles, but that's
only approximate and doesn't account for the block header. The average number
of bits per sample in an ADPCM block can't be represented as an integer, so the
more blocks there are stored in the buffer, the more inaccurate the calculation
becomes.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Presuming sources start in a neutral state for EAX effects, that is they're not
affected by EAX by default, there's no need to set an active EAX state for one
until the app sets an EAX property on it. Since the deferred and immediate
properties are stored independently per-version, they can always be set to
defaults, and simply not have a particular version committed as active until
the app sets an EAX property, which will inherently set the active version.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* clang-tidy: use bool literals
Found with modernize-use-bool-literals
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: replace std::bind with lambdas
Found with modernize-avoid-bind
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: use data() instead of pointer stuff
Found with readability-container-data-pointe
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: use empty()
Found with readability-container-size-empty
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: remove static in anon namespace
Found with readability-static-definition-in-anonymous-namespace
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: remove const return
Found with readability-const-return-type
Signed-off-by: Rosen Penev <[email protected]>
Signed-off-by: Rosen Penev <[email protected]>
|
|
|
|
|
| |
This will be much for efficient than a recursive mutex, given the amount of
contention will be very low.
|
| |
|
|
|
|
|
|
|
|
| |
I don't know how different sound APIs handle 7.1.4 ("Atmos" or "Auro3D")
output, but currently it simply specifies the additional channels with the
height channel labels. This isn't likely how it works for a virtualized channel
bed, for playing over other with-height configurations (7.1.2, 5.1.4, etc), but
this should be an okay start.
|
|
|
|
|
|
|
|
| |
This starts a source at a particular device clock time, rounded to the nearest
sample (really, 4th sample for SIMD reasons), allowing to start a sound at a
particular point in the output instead of the next update.
Unlike using negative offsets, this is not affected by pitch/velocity.
|
| |
|
|
|
|
| |
with changes in FX slot
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
* [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
|
| |
|
| |
|
|
|
|
|
| |
* [EAX] Add separate effect state for each version
* [EAX] Don't use EAX call as data member
|
| |
|
|
|
|
|
|
|
| |
It's treated as 5.1 + 2 aux channels. This allows AL_DIRECT_CHANNELS_SOFT to
behave better, not forwarding rear left/right channel inputs to lower front and
upper rear, and allows reporting a more appropriate output mode to the app
instead of 7.1.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
And make sure they get committed when resuming processing.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
... when a listener property change forces a commit.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* [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
|
| |
|