Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Handle 5.1 Rear with DSound playback | Chris Robinson | 2022-06-08 | 1 | -42/+44 | |
| | ||||||
* | Check and handle 5.1 Rear with WASAPI capture | Chris Robinson | 2022-06-07 | 1 | -3/+23 | |
| | ||||||
* | Trace the WASAPI device mix format | Chris Robinson | 2022-06-07 | 1 | -0/+1 | |
| | ||||||
* | Track 5.1 Rear with WASAPI playback | Chris Robinson | 2022-06-07 | 1 | -3/+14 | |
| | ||||||
* | Use a ringbuffer for Oboe capture | Chris Robinson | 2022-05-28 | 1 | -66/+23 | |
| | ||||||
* | Fix requeueing logic for OpenSLCapture::captureSamples | Chris Robinson | 2022-05-28 | 1 | -17/+29 | |
| | | | | | | | | | | | | | | The write vector represents the chunks queued for OpenSL, and the write pointer only increments when OpenSL fills in more samples. So requeueing from the start of the write vector is requeueing chunks that are already queued, which is obviously wrong. It instead needs to queue chunks that become available as they're read. Because the ring buffer holds more elements than can be written to at a givem time, the read vector does not represent the next writable chunks to queue. Advancing the read pointer increases the number of writable elements, so instead of queueing from the read vector or the start of the write vector, queue from the end of the write vector given the number of chunks read. | |||||
* | Use the mix format if IsFormatSupported fails for WASAPI capture | Chris Robinson | 2022-05-17 | 1 | -1/+6 | |
| | ||||||
* | Keep some variables local to where they're needed | Chris Robinson | 2022-05-13 | 1 | -26/+21 | |
| | ||||||
* | Use pw_buffer::requested in newer PipeWire versions | Chris Robinson | 2022-05-13 | 1 | -16/+26 | |
| | ||||||
* | Remove a couple unnecessary casts | Chris Robinson | 2022-05-13 | 1 | -3/+3 | |
| | ||||||
* | Fix the CoreAudio output element value | Chris Robinson | 2022-05-10 | 1 | -1/+1 | |
| | ||||||
* | More agressively hide PipeWire and SDL header warnings | Chris Robinson | 2022-05-09 | 2 | -2/+17 | |
| | ||||||
* | Reject older versions of PipeWire than built against | Chris Robinson | 2022-05-07 | 1 | -0/+24 | |
| | | | | | | | | | | | | | | | | | | | Newer versions of PipeWire may add things to public structures. For example, pw_buffer::requested added in 0.3.49. Building against 0.3.49 or newer, but then running with 0.3.48 could result in invalid accesses since the returned pw_buffer objects are shorter than the definition says to expect, creating undefined behavior. Even if explicit access to the additional fields is protected by a runtime check, the language allows the compiler to assume a pointer to a pw_buffer object contains a complete pw_buffer, allowing the optimizer to access the field earlier than the check (with the check only controlling if the value gets used). Another example is pw_time, which had a few fields added in 0.3.50 along with a function, pw_stream_get_time_n, that provides the size of the pw_time struct the application is using (so the library knows what version of the struct it has to fill in). If a later version adds a new field, running it with an older version will either fail (due to the library getting a size larger than it knows about) or silently leave the newer fields as garbage. | |||||
* | Avoid a deprecated PipeWire function | Chris Robinson | 2022-05-06 | 1 | -4/+17 | |
| | | | | | Building against 0.3.50 or newer will require that version or newer at runtime. Building against a version before 0.3.50 will work with newer versions. | |||||
* | Fix CoreAudio audio unit element values for capture | Chris Robinson | 2022-05-02 | 1 | -19/+21 | |
| | ||||||
* | Reset the ringbuffer when stopping OpenSL playback | Chris Robinson | 2022-04-26 | 1 | -0/+2 | |
| | ||||||
* | Handle 3D7.1 as a separate channel configuration | Chris Robinson | 2022-04-26 | 11 | -71/+40 | |
| | | | | | | | It's treated as 5.1 + 2 aux channels. This allows AL_DIRECT_CHANNELS_SOFT to behave better, not forwarding rear left/right channel inputs to lower front and upper rear, and allows reporting a more appropriate output mode to the app instead of 7.1. | |||||
* | Clear capture buffers before enqueueing them with OpenSL | Chris Robinson | 2022-04-08 | 1 | -3/+12 | |
| | ||||||
* | Keep track of uncaptured samples with the Oboe backend | Chris Robinson | 2022-04-06 | 1 | -8/+41 | |
| | | | | | Stopping Oboe capture drops uncaptured samples, whereas OpenAL keeps them. Also make sure the reported available count doesn't go backwards without reading. | |||||
* | Avoid a shadow declaration warning | Chris Robinson | 2022-03-30 | 1 | -7/+7 | |
| | ||||||
* | Define the CoreAudio default name only when needed | Chris Robinson | 2022-02-23 | 1 | -2/+4 | |
| | ||||||
* | Make some local constexpr variables static | Chris Robinson | 2022-02-23 | 1 | -2/+2 | |
| | ||||||
* | Avoid using an if_constexpr macro | Chris Robinson | 2022-02-22 | 2 | -15/+9 | |
| | | | | | It doesn't actually use if constexpr, and compilers are smart enough to optimize. Some functions can use templates instead. | |||||
* | Make a couple more operator bools explicit | Chris Robinson | 2022-02-20 | 1 | -1/+1 | |
| | ||||||
* | Trace the actual device form factor in pipewire | Chris Robinson | 2022-02-16 | 1 | -11/+5 | |
| | ||||||
* | Don't trace ignored pipewire stream nodes | Chris Robinson | 2022-02-15 | 1 | -1/+3 | |
| | ||||||
* | Reset mIs51Rear only when updating the channel config | Chris Robinson | 2022-02-15 | 1 | -4/+4 | |
| | ||||||
* | Log when a pipewire device is removed | Chris Robinson | 2022-02-15 | 1 | -1/+6 | |
| | ||||||
* | Mark another operator bool as explicit | Chris Robinson | 2022-02-15 | 1 | -1/+1 | |
| | ||||||
* | Add some common wrapper methods to ThreadMainloop | Chris Robinson | 2022-01-26 | 1 | -42/+46 | |
| | ||||||
* | Default the PipeWire lock's operator= instead of using the base | Chris Robinson | 2022-01-26 | 1 | -1/+1 | |
| | ||||||
* | Handle 5.1 using rear channels with PulseAudio and PipeWire | Chris Robinson | 2022-01-25 | 2 | -105/+60 | |
| | ||||||
* | Move some definitions to where they're used | Chris Robinson | 2022-01-24 | 1 | -2/+2 | |
| | ||||||
* | Avoid a messy while loop to remove from a vector | Chris Robinson | 2022-01-22 | 1 | -11/+8 | |
| | ||||||
* | Restructure the PipeWire backend code a bit | Chris Robinson | 2022-01-22 | 1 | -219/+235 | |
| | | | | | Make some functions into class member functions, and move related declarations closer together. | |||||
* | Avoid holding a pw_proxy, hold the type it represents | Chris Robinson | 2022-01-22 | 1 | -36/+70 | |
| | ||||||
* | Handle duplex devices with PipeWire | Chris Robinson | 2022-01-22 | 1 | -22/+43 | |
| | ||||||
* | Load the PipeWire real-time configuration | Chris Robinson | 2022-01-17 | 1 | -18/+57 | |
| | | | | | This is apparently needed to ensure RT threads get RT priority, separately from requesting RT processing. | |||||
* | Avoid a static-sized char array on the stack | Chris Robinson | 2021-12-31 | 1 | -16/+22 | |
| | ||||||
* | Avoid some unnecessary copying | Chris Robinson | 2021-12-31 | 1 | -10/+9 | |
| | ||||||
* | Some more restructuring of the PipeWire backend | Chris Robinson | 2021-12-30 | 1 | -73/+58 | |
| | ||||||
* | Set the node rate for the pipewire capture stream too | Chris Robinson | 2021-12-29 | 1 | -0/+1 | |
| | ||||||
* | Move some constexpr variables to where they're used | Chris Robinson | 2021-12-28 | 1 | -50/+47 | |
| | ||||||
* | C++-ize the PipeWire backend some more | Chris Robinson | 2021-12-28 | 1 | -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. | |||||
* | Check for audio devices when initializing PipeWire | Chris Robinson | 2021-12-25 | 1 | -3/+64 | |
| | | | | | | | | | | | 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. | |||||
* | Set the PipeWire stream rate | Chris Robinson | 2021-12-16 | 1 | -0/+1 | |
| | | | | | When requesting a non-default rate, this may allow the hardware to run at the requested rate. | |||||
* | Downgrade some ERRs to WARNs | Chris Robinson | 2021-11-21 | 1 | -2/+2 | |
| | ||||||
* | Make the backend pointer part of ALCdevice instead of DeviceBase | Chris Robinson | 2021-11-19 | 1 | -2/+1 | |
| | ||||||
* | Handle SPA_CHOICE_None for sample rates from PipeWire | Chris Robinson | 2021-11-14 | 1 | -52/+59 | |
| | ||||||
* | Report unexpected types for the sample rate from PipeWire | Chris Robinson | 2021-11-14 | 1 | -42/+44 | |
| |