aboutsummaryrefslogtreecommitdiffstats
path: root/al/source.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't allow queueing a buffer with no formatChris Robinson2023-03-121-10/+18
|
* Don't commit EAX updates in applyAllUpdatesChris Robinson2023-03-111-32/+9
| | | | | | | | | | To avoid alcProcessContext causing deferred EAX properties to be committed. This simplifies updates when EAX has been initialized, but never or rarely used. Committing now always occurs in EAXSet when the property is non-deferred, updating the OpenAL object(s) with it (with OpenAL's updates then being applied based on the context's defer state).
* Don't assume the max property size unchecked for user pointersChris Robinson2023-03-061-56/+193
|
* Don't get the front element of an empty queueChris Robinson2023-03-051-1/+4
|
* Report the current buffer ID of a streaming sourceChris Robinson2023-03-051-2/+13
| | | | | | The AL_BUFFER query should only return the buffer that was set on a static source, but some apps used it to detect when a current buffer of a streaming source changed instead of AL_BUFFERS_PROCESSED.
* Use macros for the likely/unlikely attributesChris Robinson2023-03-011-136/+136
| | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places.
* Don't start with fading for negative offsetsChris Robinson2023-02-181-2/+4
|
* Track the callback buffer base separatelyChris Robinson2023-02-181-0/+1
| | | | | Instead of recalculating it all the time, even for sources that don't use callback buffers.
* Support IMA4 ADPCM as a mixing voice formatChris Robinson2023-02-141-12/+15
|
* Don't set an EAX version by default for sourcesChris Robinson2023-02-051-26/+8
| | | | | | | | | 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.
* Don't force an update if there is no aux slot being replacedChris Robinson2023-01-201-4/+7
| | | | | A null effect slot can't be deleted, so we don't need to make sure it's set to change before returning.
* Avoid unnecessary uses of make_optionalChris Robinson2023-01-131-15/+15
|
* Avoid some explicit casts and referencesChris Robinson2023-01-011-3/+3
|
* Avoid a manual loop to find a buffer queue entryChris Robinson2022-12-241-6/+3
|
* Constify some parametersChris Robinson2022-12-241-16/+16
|
* Avoid using a macro to set a context error and returnChris Robinson2022-12-241-34/+32
|
* Avoid some macros for checking property sizes and valuesChris Robinson2022-12-241-169/+228
|
* Avoid using a macro to wrap standard attributesChris Robinson2022-12-061-135/+135
|
* Avoid LIKELY/UNLIKELY macrosChris Robinson2022-12-051-119/+119
|
* Use standard likely/unlikely attributes when availableChris Robinson2022-12-051-18/+18
|
* Add functions to start sources at a particular device timeChris Robinson2022-11-031-161/+234
| | | | | | | | 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.
* Add the ability to start a voice at a particular timeChris Robinson2022-11-031-0/+2
|
* int64_t max can't fit into a double without narrowingChris Robinson2022-11-021-6/+0
|
* Handle negative voice positionsChris Robinson2022-11-021-36/+66
| | | | | | This allows a voice/source to start with a delay, more accurately than simply waiting to call alSourcePlay. The delay is affected by pitch and velocity, making it useful to simulate distant sounds that take time to be heard.
* Remove a redundant checkChris Robinson2022-07-171-3/+0
| | | | | | 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.
* Fix parameter signednessChris Robinson2022-07-171-1/+1
|
* [EAX_SOURCE] Fix source's occlusion and exclusion contributionBoris I. Bendovsky2022-07-171-17/+44
| | | | 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").
* [EAX_SOURCE] Skip occlusion calculation if occlusion property is zeroBoris I. Bendovsky2022-07-171-3/+7
|
* [EAX_SOURCE] Fix Room and RoomHF contributionBoris I. Bendovsky2022-07-171-2/+3
| | | | Those properties should be taken into account only for environmental effect slot (see pp. 60-61 of "EAX® 4.0 Programmer’s Guide").
* [EAX_SOURCE] Fix getting active FX slot IDsBoris I. Bendovsky2022-07-171-2/+11
|
* [EAX_FX_SLOT] Fix slot's occlusion contributionBoris I. Bendovsky2022-07-171-1/+3
|
* Dynamically allocate EffectSlot objectsChris Robinson2022-07-151-2/+2
|
* Don't always activate the EAX primary effect slot for sourcesChris Robinson2022-07-061-14/+22
| | | | | The context's primary effect slot should only be considered when the source's active slot IDs include the primary effect slot.
* Combine multiple individual flagsChris Robinson2022-06-191-48/+32
|
* Track EAX1 source changesChris Robinson2022-06-191-9/+6
| | | | | | 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.
* Avoid changing the EAX version on failureChris Robinson2022-06-181-3/+2
|
* Fix inverted checksChris Robinson2022-06-181-4/+4
|
* Don't mark the EAX version changed when getting propertiesChris Robinson2022-06-181-4/+5
|
* Avoid a full struct compare to check for changesChris Robinson2022-06-181-10/+15
|
* Fix checking if the primary effect slot changedChris Robinson2022-06-181-6/+1
|
* [EAX] Add separate source state for each version (#720)Boris I. Bendovsky2022-06-181-1959/+823
|
* [EAX] Add separate effect state for each version (#705)Boris I. Bendovsky2022-05-241-166/+197
| | | | | * [EAX] Add separate effect state for each version * [EAX] Don't use EAX call as data member
* Move EAX files to their own sub-directoryChris Robinson2022-05-161-1/+1
|
* Avoid some explicit extern "C"s on function definitionsChris Robinson2022-03-311-1/+1
|
* Replace a few asserts with actual checks or ASSUME()Chris Robinson2022-03-301-6/+6
|
* Inline a couple dispatch callsChris Robinson2022-03-261-13/+0
|
* Make sure FX slots that aren't made active are disabledChris Robinson2022-03-131-9/+6
|
* Fix EAXSOURCE_ROLLOFFFACTORChris Robinson2022-03-051-2/+6
| | | | It should be added to AL_ROLLOFF_FACTOR.
* Set the MacroFXFactor defaultChris Robinson2022-03-051-0/+1
|
* Simplify committing EAX propertiesChris Robinson2022-03-051-6/+0
| | | | | | 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.