Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Improve some debug error handling | Chris Robinson | 2023-04-30 | 1 | -3/+6 |
| | |||||
* | Separate the internal debug enums from the API values | Chris Robinson | 2023-04-30 | 2 | -55/+66 |
| | |||||
* | Move debug functions to their own source | Chris Robinson | 2023-04-30 | 1 | -166/+0 |
| | |||||
* | Implement non-ID based debug message filtering | Chris Robinson | 2023-04-30 | 4 | -1/+179 |
| | |||||
* | Provide some more debug messages | Chris Robinson | 2023-04-29 | 1 | -8/+22 |
| | |||||
* | Add a missing include | Chris Robinson | 2023-04-29 | 1 | -0/+1 |
| | |||||
* | Start a debug API extension | Chris Robinson | 2023-04-29 | 4 | -1/+153 |
| | |||||
* | Unset sLocalContext when releasing it | Chris Robinson | 2023-04-28 | 1 | -1/+1 |
| | |||||
* | Handle signed int values holding FourCC codes | Chris Robinson | 2023-04-26 | 1 | -0/+1 |
| | |||||
* | Print CoreAudio errors as FourCC codes when possible | Chris Robinson | 2023-04-26 | 1 | -43/+58 |
| | |||||
* | Check the correct device property to detect headphones | Chris Robinson | 2023-04-25 | 1 | -3/+3 |
| | |||||
* | Try to detect headphones with CoreAudio | Chris Robinson | 2023-04-24 | 1 | -0/+18 |
| | |||||
* | Scale B-Format panning coefficients only when needed | Chris Robinson | 2023-04-06 | 1 | -7/+7 |
| | |||||
* | Simplify effect state buffer handling some | Chris Robinson | 2023-04-04 | 15 | -56/+49 |
| | |||||
* | Support the AL_EXT_STATIC_BUFFER extension | Chris Robinson | 2023-04-03 | 2 | -0/+3 |
| | |||||
* | Finalize AL_SOFT_source_start_delay | Chris Robinson | 2023-03-31 | 2 | -11/+1 |
| | |||||
* | Add a compat option to restore AL_SOFT_buffer_sub_data | Chris Robinson | 2023-03-17 | 3 | -18/+39 |
| | |||||
* | Rename some member functions and variables for consistency | Chris Robinson | 2023-03-16 | 2 | -118/+118 |
| | |||||
* | Commit deferred EAX properties in alcProcessContext | Chris Robinson | 2023-03-16 | 2 | -14/+11 |
| | |||||
* | Recognize I24 and I32 formats from Oboe | Chris Robinson | 2023-03-15 | 1 | -1/+15 |
| | |||||
* | Allow Oboe to resample when requesting a sample rate | Chris Robinson | 2023-03-15 | 1 | -0/+3 |
| | |||||
* | Don't change the context's EAX version on every set/get call | Chris Robinson | 2023-03-11 | 2 | -44/+9 |
| | |||||
* | Don't commit EAX updates in applyAllUpdates | Chris Robinson | 2023-03-11 | 1 | -8/+8 |
| | | | | | | | | | | 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). | ||||
* | Add queries for the buffer byte/sample/sec length | Chris Robinson | 2023-03-07 | 1 | -0/+1 |
| | | | | | | | | | | | | | 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. | ||||
* | Use macros for the likely/unlikely attributes | Chris Robinson | 2023-03-01 | 7 | -80/+81 |
| | | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places. | ||||
* | Add aLaw formats to AL_SOFT_UHJ_ex | Chris Robinson | 2023-02-27 | 1 | -0/+3 |
| | |||||
* | Add AL_SOFT_UHJ_ex to the extension list | Chris Robinson | 2023-02-26 | 3 | -10/+8 |
| | |||||
* | Add formats for UHJ with muLaw, and ADPCM for 2-channel UHJ | Chris Robinson | 2023-02-26 | 1 | -1/+11 |
| | | | | | | | | | | 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. | ||||
* | Support MSADPCM samples in the mixer | Chris Robinson | 2023-02-14 | 1 | -0/+1 |
| | |||||
* | Support IMA4 ADPCM as a mixing voice format | Chris Robinson | 2023-02-14 | 1 | -0/+4 |
| | |||||
* | Separate decoding and mixing from resampling | Chris Robinson | 2023-02-12 | 1 | -6/+0 |
| | |||||
* | Check a string for NULL before calling strtoull | Chris Robinson | 2023-02-11 | 1 | -8/+9 |
| | |||||
* | Use a span to hold the cubic table reference | Chris Robinson | 2023-02-10 | 1 | -1/+1 |
| | |||||
* | Use better panning positions for the frequency shifter effect | Chris Robinson | 2023-02-08 | 1 | -2/+7 |
| | |||||
* | Use better panning positions for the chorus effect | Chris Robinson | 2023-02-08 | 1 | -56/+61 |
| | | | | Also avoid putting larger buffers on the stack. | ||||
* | Make a table constexpr | Chris Robinson | 2023-02-07 | 1 | -6/+5 |
| | |||||
* | Rename the bsinc table variables | Chris Robinson | 2023-02-07 | 1 | -2/+2 |
| | |||||
* | Use an interpolated FIR filter for cubic resampling | Chris Robinson | 2023-02-06 | 1 | -0/+11 |
| | | | | | | Similar to how the bsinc filters work, but optimized for 4-point filtering. At least the SSE version is notably faster than calculating the coefficients in real time. | ||||
* | Avoid using auto for lambda parameters | Chris Robinson | 2023-02-06 | 2 | -2/+2 |
| | |||||
* | Improve performance calculating reverb panning | Chris Robinson | 2023-02-05 | 1 | -10/+11 |
| | |||||
* | Use a cubic resampler for the reverb modulator offset | Chris Robinson | 2023-02-05 | 1 | -17/+61 |
| | |||||
* | Don't set an EAX version by default for sources | Chris Robinson | 2023-02-05 | 1 | -9/+0 |
| | | | | | | | | | 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. | ||||
* | Distinguish a couple log messages | Chris Robinson | 2023-01-30 | 1 | -3/+3 |
| | | | | And downgrade an ERR to a WARN | ||||
* | Transpose the ambisonic rotation matrix and helper coefficients | Chris Robinson | 2023-01-26 | 1 | -39/+32 |
| | |||||
* | Transpose the ambisonic voice mixing matrix | Chris Robinson | 2023-01-25 | 1 | -34/+41 |
| | | | | | To more efficiently prepare the panning coefficients. Also avoid making a stack copy of the matrix to reuse as the target. | ||||
* | Use explicit arrays for the remix table target mixes | Chris Robinson | 2023-01-24 | 1 | -16/+53 |
| | | | | Seems inline initializer lists become garbage when stored in a span. | ||||
* | Use the object serial ID from PipeWire when available | Chris Robinson | 2023-01-24 | 1 | -21/+47 |
| | | | | | | | | | | | Using the node ID as a target is deprecated in newer versions of PipeWire. The serial ID is a monotonic 64-bit integer ID, incremeneted for every object created, so is guaranteed to always refer to the same target (until it wraps around, which I suppose isn't expected/allowed to happen), compared to the 32-bit node ID which I guess allows reuse. We could instead use the target node's name instead of the serial ID, but an integer is nicer to manage than a string. | ||||
* | Increase the pitch shifter oversample factor to 8 | Chris Robinson | 2023-01-19 | 1 | -38/+37 |
| | | | | | | And use 32-bit float processing. Float precision doesn't seem to be detrimental to the overall quality, while 8x oversampling seems to help against the harmonics. | ||||
* | Minor code refactor for the frequency shifter effect | Chris Robinson | 2023-01-19 | 1 | -47/+50 |
| | |||||
* | Improve the output scaling of the pitch shifter | Chris Robinson | 2023-01-19 | 1 | -1/+1 |
| | | | | | | For tones than land exactly on a frequency bin, which are subject to the least amount of error when not adjusted, this produces a level that more closely matches the original input. |