aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add a type indicator to EaxEffectPropsChris Robinson2023-03-0912-55/+84
|
* Store the per-version EAX effect state in the base classChris Robinson2023-03-0914-471/+491
| | | | | | | | | | | | | | | | This is the start of the refactoring for holding separable per-version EAX effects. Currently the effect state is stored in the effect object, which is instantiated per-type. This makes it impossible for different effects to be assigned on different EAX versions for a given effect slot (e.g. if the app sets a Chorus effect on EAX4 Slot0, it would fail to get or set the EAX1/2/3 reverb properties since it's a Chorus effect object). Seperate per-version effects will allow for switching the OpenAL effect by switching versions. This will provide an extra benefit in being able to delay OpenAL effect initialization until some EAX version has been set, avoiding an extraneous reverb and/or chorus processor for apps that only query some EAX properties but don't set anything (or which only use Slot0, leaving Slot1 with a defaulted Chorus effect running).
* Support aLaw samples for UHJChris Robinson2023-03-071-1/+4
|
* Don't use "hardware" for automatic buffer storageChris Robinson2023-03-072-14/+37
|
* Make the resampler enum a byteChris Robinson2023-03-071-1/+1
|
* Avoid duplicate parameter validationChris Robinson2023-03-071-7/+6
|
* Add queries for the buffer byte/sample/sec lengthChris Robinson2023-03-073-0/+21
| | | | | | | | | | | | | 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.
* 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.
* Fix compiling examples with an older libsndfileChris Robinson2023-03-053-9/+18
| | | | Which lack the SF_FORMAT_MPEG_LAYER_* enums.
* Make sure the fmt chunk is large enoughChris Robinson2023-03-053-4/+4
|
* Remove a couple unused variablesChris Robinson2023-03-041-2/+2
|
* Use macros for the likely/unlikely attributesChris Robinson2023-03-0133-546/+558
| | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places.
* Remove another gratuitous [[likely]]Chris Robinson2023-02-281-1/+1
|
* Remove a [[likely]] that confuses some versions of GCCChris Robinson2023-02-281-1/+1
|
* Add aLaw formats to AL_SOFT_UHJ_exChris Robinson2023-02-272-4/+10
|
* Add AL_SOFT_UHJ_ex to the extension listChris Robinson2023-02-264-10/+17
|
* Add formats for UHJ with muLaw, and ADPCM for 2-channel UHJChris Robinson2023-02-262-5/+20
| | | | | | | | | | ADPCM doesn't seem to be well defined for more than two channels, even though there doesn't seem to be any issue with simply increasing the channel step over interleaved data (ffmpeg refuses to create IMA4 or MSADPCM files with more than two channels, and its decoder behaves oddly different when channels > 2). So IMA4 and MSADPCM can only safely handle 2-channel UHJ. There's no problem with muLaw supporting 2-, 3-, or 4-channel UHJ though.
* Set the C/C++ standard version properties manuallyChris Robinson2023-02-252-13/+34
| | | | | Setting it globally interferes with Oboe trying to use C++17 (when its built as a sub-project), which we don't require yet.
* Clamp the MS ADPCM block predictor to the correct sizeChris Robinson2023-02-241-4/+4
|
* Don't start with fading for negative offsetsChris Robinson2023-02-181-2/+4
|
* Track the callback buffer base separatelyChris Robinson2023-02-183-8/+7
| | | | | Instead of recalculating it all the time, even for sources that don't use callback buffers.
* Support float and ADPCM formats in alstreamChris Robinson2023-02-171-19/+210
|
* Cleanup the examples' loading functions slightlyChris Robinson2023-02-172-59/+59
|
* Handle Int16 and ADPCM formats in alstreamcbChris Robinson2023-02-161-25/+181
|
* Set the proper block align for callback buffersChris Robinson2023-02-161-1/+1
|
* Support loading as float or ADPCM in alplayChris Robinson2023-02-161-12/+164
|
* Decode IMA4 blocks with fewer loopsChris Robinson2023-02-161-35/+30
| | | | | Rather than decoding samples in chunks of 8, calculate the read offset from an incrementing index.
* Combine and simplify some loopsChris Robinson2023-02-151-24/+14
|
* Skip ADPCM samples in a separate loop before writingChris Robinson2023-02-151-59/+83
|
* Rename some variables for clarityChris Robinson2023-02-151-19/+19
|
* Remove unused decoder functionsChris Robinson2023-02-141-202/+2
|
* Add comments describing the MSADPCM decodeChris Robinson2023-02-141-0/+13
|
* Fix write offset for loading FmtIMA4 samplesChris Robinson2023-02-141-2/+2
|
* Don't convert MS ADPCM on loadChris Robinson2023-02-142-37/+7
|
* Support MSADPCM samples in the mixerChris Robinson2023-02-145-1/+113
|
* Don't convert IMA4 samples on loadChris Robinson2023-02-142-100/+98
|
* Support IMA4 ADPCM as a mixing voice formatChris Robinson2023-02-1412-65/+215
|
* Simplify copying the all-pass filter stateChris Robinson2023-02-132-15/+7
|
* Pass a boolean for the decoder to update its stateChris Robinson2023-02-133-51/+57
|
* Explicitly cast a constexpr value to passify MSVCChris Robinson2023-02-121-3/+3
|
* Use to_address to pass a pointer-like iterator as a real pointerChris Robinson2023-02-121-4/+5
|
* The decoders don't need space for resamplingChris Robinson2023-02-122-16/+13
|
* Separate decoding and mixing from resamplingChris Robinson2023-02-125-295/+314
|
* Check a string for NULL before calling strtoullChris Robinson2023-02-111-8/+9
|
* Explicitly cast a size_t to doubleChris Robinson2023-02-111-1/+1
|
* Always write samples to the destination when resamplingChris Robinson2023-02-118-72/+53
|
* Check for the voice being beyond the loop end point earlierChris Robinson2023-02-111-5/+11
|
* Don't require samplesToDo > forwardSamples for decodersChris Robinson2023-02-112-13/+13
|