aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add an ambi-format option for ACN ordering and FuMa scalingChris Robinson2022-01-123-2/+19
|
* Use a different output matrix for late reverbChris Robinson2022-01-111-14/+22
| | | | | | | | | | This is a slightly reoriented tetrahedron, with responses on the front-left and front-right, along with upper-back and lower-back. This is a alternative matrix suggested for converting the A-Format late reverb lines back to B-Format. Also alter the matrix scaling to be less destructive. x0.5 is just reducing the floating-point exponent by 1, whereas the previous values would be more likely to introduce rounding errors just from scaling.
* Explicitly default the band splitter's copy assignmentChris Robinson2022-01-111-0/+1
|
* Slightly improve handling of stopping voicesChris Robinson2022-01-081-19/+27
|
* Use the deprecated enum for older Qt versionsChris Robinson2022-01-061-0/+4
|
* Avoid a deprecated QString enumChris Robinson2022-01-051-1/+1
|
* Add a third-order ambisonic decoder for HRTFChris Robinson2022-01-052-7/+63
| | | | | Using the 20-channel dodecahedron, seems to be good enough to handle 16-channel third-order ambisonics.
* Update the 3D7.1 configurationChris Robinson2022-01-041-24/+42
| | | | | | This one is a regular layout first-order dual-band decoder, which excludes the front-center (to maintain regularity). The previous was a second-order single- band decoder, which included front-center.
* Update the HRTF second-order ambisonic decoderChris Robinson2022-01-041-42/+27
| | | | This only needs 14 virtual channels instead of 20.
* Remove a couple unnecessary overloadsChris Robinson2022-01-041-9/+1
|
* Avoid duplicate definitions of the same wrapper functionsChris Robinson2022-01-041-74/+41
|
* Remove extra ';' after member function definition (#634)Jan Niklas Hasse2022-01-041-1/+1
| | | Found using -Wextra-semi warning.
* Don't mix higher orders of B-Format than the device is doingChris Robinson2022-01-021-2/+2
|
* Use an span of pointers instead of arrays for mixingChris Robinson2022-01-011-93/+94
|
* Pass a span of pointers to the UHJ/SuperStereo decoderChris Robinson2022-01-014-23/+29
|
* Avoid a static-sized char array on the stackChris Robinson2021-12-311-16/+22
|
* Add a couple more methods to al::optionalChris Robinson2021-12-311-0/+16
|
* Avoid some unnecessary copyingChris Robinson2021-12-311-10/+9
|
* Some more restructuring of the PipeWire backendChris Robinson2021-12-301-73/+58
|
* Set the node rate for the pipewire capture stream tooChris Robinson2021-12-291-0/+1
|
* Move some constexpr variables to where they're usedChris Robinson2021-12-281-50/+47
|
* C++-ize the PipeWire backend some moreChris Robinson2021-12-281-61/+94
| | | | | | | | | Use unique_ptrs for a few more types to avoid explicit free calls. Move ThreadMainloop::wait to the unique_lock wrapper that's holding the lock. Since the mainloop acts as both a lock and condition_variable, passing the lock to the wait method makes no sense. Also have it optionally take a predicate functor to dictate when to stop waiting.
* Make sure alffplay properly stops when quitingChris Robinson2021-12-271-10/+13
| | | | | | The parser thread could be waiting on the threads to join after queueing all packets, so it wouldn't see mQuit to flush the queue. So make a stop method that forces a flush when setting mQuit.
* Trace the device format after starting playbackChris Robinson2021-12-271-0/+7
| | | | | Some devices can change it when starting, so it's useful to know what the device configuration is when that happens.
* Heavily update alffplay packet handlingChris Robinson2021-12-261-157/+209
| | | | | Avoid deprecated use of raw AVPacket objects, and use a separate thread to send packets than receives the decoded frames.
* Add the PipeWire config option to alsoft-configChris Robinson2021-12-252-0/+33
|
* Increase the priority of the PipeWire backendChris Robinson2021-12-251-6/+6
|
* Check for audio devices when initializing PipeWireChris Robinson2021-12-252-3/+79
| | | | | | | | | | | This isn't great since it can fail when PipeWire is handling audio but no devices are available at initialization, causing the Pulseaudio or ALSA backend to be selected instead. Future versions of PipeWire are expected to have a better way to detect if it's handling audio, but for now this is better than nothing. A config option is available for users to have the PipeWire backend be usable even with no devices at initialization, just in case.
* Fix non-runtime linking with pipewireChris Robinson2021-12-251-1/+2
|
* Remove unnecessary ifdefs from alffplayChris Robinson2021-12-241-32/+9
| | | | We already assume OpenAL Soft's alext.h, which these are part of now.
* Use the audio clock as the default in alffplayChris Robinson2021-12-241-49/+59
|
* Use a bitset instead of a plain uint for flagsChris Robinson2021-12-234-37/+42
|
* Don't do direct channels with UHJ outputChris Robinson2021-12-212-21/+17
| | | | | | | | | | Directly mixing a non-UHJ stereo signal into a UHJ stereo signal results in a non-UHJ stereo signal. Such a mix can't be properly decoded anymore. An option can probably be added for users that intend to listen to UHJ output undecoded and let a stereo sound come through as-is on their speakers, but it probably shouldn't be the default for cases where the output may be decoded back.
* Work around a MinGW thread_local bugChris Robinson2021-12-207-22/+60
| | | | | | | | | | MinGW-w64 generates bad code when accessing extern thread_local objects. Wrapper functions are used to ensure it only accesses them from the same place they're defined. This unfortunately adds a bit of overhead for what should be a relatively simple thing. These functions are inlined for non-MinGW targets, avoiding the overhead on non-affected targets.
* Simplify and combine a couple macrosChris Robinson2021-12-181-8/+8
|
* Don't swallow up buffer callback samples when pausingChris Robinson2021-12-181-11/+17
|
* Don't update voice sample histories when stopping/pausingChris Robinson2021-12-181-24/+25
| | | | | Since a voice pausing is on a fade-out, and will replay the same samples again when restarting and fading in.
* Set the voice's ambisonic order for playing super stereoChris Robinson2021-12-171-1/+1
|
* Move some more context functions to the proper sourceChris Robinson2021-12-173-77/+80
|
* Move the effects base and effectslot to coreChris Robinson2021-12-1722-225/+232
|
* Move some ContextBase function definitions to the right placeChris Robinson2021-12-172-64/+70
|
* Remove an unnecessary parameterChris Robinson2021-12-173-16/+12
|
* Allocate voice properties in clustersChris Robinson2021-12-175-31/+39
|
* Set the PipeWire stream rateChris Robinson2021-12-161-0/+1
| | | | | When requesting a non-default rate, this may allow the hardware to run at the requested rate.
* Rename Voice::mNumChannels for clarityChris Robinson2021-12-153-7/+7
|
* Add an option to use Super Stereo in alffplayChris Robinson2021-12-151-0/+23
|
* Add source properties for Super StereoChris Robinson2021-12-158-30/+116
| | | | | When playing a stereo format, enabling Super Stereo causes the source to behave as a B-Format source, with a variable width control.
* Minor UHJ coefficient scaling precision improvementChris Robinson2021-12-131-3/+3
|
* Make an inline function to check for 2D ambisonic formatsChris Robinson2021-12-124-11/+11
|
* Avoid initializing the NFC filter for every voice channelChris Robinson2021-12-115-72/+61
| | | | | | It can be initialized once with the device's speaker distance since it won't change in between resets, then copied into the voice where it can be adjusted as needed.