aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/alc.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Scale the update size with sample rate changesChris Robinson2019-04-261-5/+3
|
* Specify the buffer size as itself instead of the period countChris Robinson2019-04-261-22/+25
| | | | | | | Certain backends don't need a buffer size to be a strict multiple of the period count, which allows a little more flexibility. The period/update size simply acts as the minimum request, which helps control CPU load by determining how often parameter and other pre-mixing updates are processed.
* Open the playback device earlierChris Robinson2019-04-201-18/+20
| | | | | | | | | | So we actually have a device name to get the initial settings for. Be aware that some backends set a format when opening instead of on reset, so such devices will only set the default format (it can't get a desired format without the device name, but the format will already be set once that's known). The affected backends are WinMM, SDL2, and PortAudio (none of which are generally used). This could be fixed by reopening the device during reset, but it would need to be done carefully.
* Remove the SZFMT macroChris Robinson2019-04-111-12/+12
| | | | C++11 mandates the %zu/d formatter
* Simplify sorting and initializing the backendsChris Robinson2019-04-111-58/+42
|
* Add macros to stop exceptions from leaving API functionsChris Robinson2019-04-091-6/+62
| | | | | | | | Effectively makes the functions act as noexcept, since there's no meaningful reason to propogate exceptions from "C" functions. Currently only applied to ALC functions, but can incrementally be applied to AL functions too. In the future, this could also handle ALC and AL errors with unique exception types (functions that utilize this behavior would need to ensure proper cleanup).
* Change RealMixParams::ChannelName to better reflect its useChris Robinson2019-04-021-68/+66
|
* Spread out the ALC extensions like the AL extensionsChris Robinson2019-04-011-6/+17
|
* Avoid multiple using statements for the same thingsChris Robinson2019-04-011-9/+3
|
* Copy the voice's ambisonic upsampler state when reallocatingChris Robinson2019-04-011-0/+8
|
* Remove a couple unused member variablesChris Robinson2019-03-301-2/+0
|
* Don't stop the backend if it's not runningChris Robinson2019-03-301-1/+1
|
* Remove a couple unnecessary duration_castsChris Robinson2019-03-261-9/+8
|
* Mark the device and context deletes as unlikelyChris Robinson2019-03-241-2/+2
|
* Use a sorted vector for looking up contextsChris Robinson2019-03-191-38/+52
| | | | | Note that the device still holds and uses a linked list of its contexts. The sorted vector is used to verify handles given by callers.
* Use a sorted vector for devices instead of a linked listChris Robinson2019-03-191-62/+35
|
* Rename DevProbe enum namesChris Robinson2019-03-191-2/+2
|
* Rename ALvoice fields for consistencyChris Robinson2019-03-101-31/+30
|
* Don't directly use a buffer for updating source parametersChris Robinson2019-03-101-0/+2
|
* Add a Stopping state for voicesChris Robinson2019-03-091-3/+7
| | | | | | This currently doesn't do much, except have the mixer progress it to Stopped. It's valid to have without a source or buffers, and in the future will allow fading out when a source is paused or stopped.
* Remove the FOAOut mixing buffer and associated post-processesChris Robinson2019-02-221-16/+4
|
* Allow processing some effects in higher order ambisonicsChris Robinson2019-02-211-3/+3
| | | | | | Reverb notably is still only first-order (any higher order channels are dropped, and it writes to FOAOut). But others, like the equalizer, work on all available channels.
* Store effect slots in groups of 64Chris Robinson2019-02-201-13/+24
| | | | | Now that their wet buffers are allocated dynamically, the ALeffectslot object itself is rather small.
* Allocate the effect slot wet buffer dynamicallyChris Robinson2019-02-201-2/+5
|
* Use relaxed memory ordering for initializing atomic_flagsChris Robinson2019-02-041-1/+1
|
* Fix compiling problems on VS2019 with vc142 toolsetMinmin Gong2019-02-041-0/+1
| | | | Msvc142 in VS2019 preview 2 doesn't allow std::atomic_flag to be initialized by a bool. Call test_and_set in the constructors instead.
* Don't try to clean up the async ringbuffer if it isn't allocatedChris Robinson2019-01-261-16/+19
|
* Make IncRef and DecRef member functionsChris Robinson2019-01-241-3/+3
|
* Clean up the NFC filters a bitChris Robinson2019-01-231-1/+1
|
* Use a flexible array for DirectHrtfState and ALvoiceChris Robinson2019-01-121-6/+6
|
* Use a flexible array for the active effect slotsChris Robinson2019-01-111-7/+3
|
* Use a vector for ALeffectslotArrayChris Robinson2019-01-091-13/+7
|
* Change a true/false ALenum atomic into a boolChris Robinson2019-01-091-2/+2
|
* Avoid using old style castsFilip Gawin2019-01-081-11/+11
| | | | | | To think about: examples/alffplay.cpp:600 OpenAL32/Include/alMain.h:295
* Use user-defined literals for 64-bit literalsChris Robinson2019-01-071-1/+1
|
* Use DeviceRef and ContextRef when creating a new device and contextChris Robinson2019-01-011-29/+22
|
* Rename ALCdevice_struct and ALCcontext_structChris Robinson2019-01-011-8/+6
| | | | | | | | | | | A (possibly contentious?) change in the public headers. Those names were never part of any specification, and I don't know why the struct names differed from the actual type name. But with C++, which takes the original struct declaration as the original name, it was affecting the type's internal symbols. This shouldn't affect user code since ALCdevice_struct and ALCcontext_struct were never part of the spec. If issues arise from this change, it should be reported.
* Use standard unique_lock and lock_guard for the backend lockChris Robinson2019-01-011-22/+19
|
* Add and use a make_unique functionChris Robinson2019-01-011-4/+4
|
* Use an atomic bool on things that only take true or falseChris Robinson2018-12-301-1/+1
|
* Rename BackendLock to StateLockChris Robinson2018-12-301-37/+27
|
* Don't bother with an explicit Loopback backend typeChris Robinson2018-12-291-1/+1
|
* Return a unique_ptr for the backendChris Robinson2018-12-291-2/+1
|
* Make the backend type an enum classChris Robinson2018-12-291-7/+8
|
* Convert the backends to use proper inheritenceChris Robinson2018-12-281-30/+31
|
* Return unique_ptrs instead of raw pointersChris Robinson2018-12-271-1/+1
| | | | For the ring buffer, channel converter, and sample converter.
* Use a unique_ptr for the AsyncEvents ringbufferChris Robinson2018-12-271-4/+1
|
* Recognize ambix as an alias for acn+sn3dChris Robinson2018-12-271-1/+1
|
* Clean up the ring buffer struct and use member functionsChris Robinson2018-12-261-1/+1
|
* Construct AsyncEvent objects directly in the ringbufferChris Robinson2018-12-251-0/+19
|