Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Don't rely on mRateMatch while waiting for PipeWire timing info | Chris Robinson | 2023-01-09 | 1 | -5/+2 |
| | |||||
* | Add an option to mix on PipeWire's non-RT thread | Chris Robinson | 2023-01-08 | 1 | -14/+14 |
| | |||||
* | Avoid some explicit casts and references | Chris Robinson | 2023-01-01 | 2 | -13/+15 |
| | |||||
* | Avoid inlining certain exception functions | Chris Robinson | 2022-12-16 | 2 | -7/+17 |
| | |||||
* | Avoid extraneous temporaries when filling vectors | Chris Robinson | 2022-12-15 | 2 | -8/+18 |
| | |||||
* | Avoid setting PipeWire stream properties with separate calls | Chris Robinson | 2022-12-06 | 1 | -12/+11 |
| | |||||
* | Avoid using a macro to wrap standard attributes | Chris Robinson | 2022-12-06 | 4 | -27/+27 |
| | |||||
* | Avoid LIKELY/UNLIKELY macros | Chris Robinson | 2022-12-05 | 3 | -16/+16 |
| | |||||
* | Use standard likely/unlikely attributes when available | Chris Robinson | 2022-12-05 | 2 | -11/+11 |
| | |||||
* | Use the correct variable for reading the WASAPI playback rate | Chris Robinson | 2022-12-05 | 1 | -2/+2 |
| | |||||
* | Fix building with PipeWire 0.3.49 and earlier | Chris Robinson | 2022-12-02 | 1 | -0/+19 |
| | |||||
* | Don't prematurely change ALCdevice::BufferSize | Chris Robinson | 2022-11-22 | 1 | -7/+11 |
| | |||||
* | Fix WASAPI capture handling the background COM thread | Chris Robinson | 2022-11-19 | 1 | -18/+30 |
| | |||||
* | Avoid a use-after-free in the ALSA backend | Chris Robinson | 2022-11-16 | 1 | -12/+12 |
| | |||||
* | Use the correct frame size for WASAPI resampling | Chris Robinson | 2022-11-13 | 1 | -2/+2 |
| | |||||
* | Change a function to a static method | Chris Robinson | 2022-11-13 | 2 | -4/+5 |
| | |||||
* | Add a config option to prevent WASAPI from using a resampler | Chris Robinson | 2022-11-12 | 1 | -1/+5 |
| | |||||
* | Add a resampler to WASAPI output | Chris Robinson | 2022-11-12 | 1 | -10/+75 |
| | | | | | | | This allows mixing at various samples rates that WASAPI doesn't otherwise support. This is mostly helpful for users that have unnecessarily high device rates (96 or 192khz), and lets the ALC_FREQUENCY attribute or frequency config option set a lower mixing rate for more efficient processing. | ||||
* | Dynamically start/stop the WASAPI message thread | Chris Robinson | 2022-11-12 | 1 | -86/+117 |
| | |||||
* | Try to detect the update and buffer size from PipeWire | Chris Robinson | 2022-11-08 | 1 | -4/+45 |
| | |||||
* | Make sure sio_write and sio_read return valid values | Chris Robinson | 2022-11-07 | 1 | -5/+12 |
| | |||||
* | Add preliminary support for 7.1.4 output modes | Chris Robinson | 2022-11-03 | 10 | -4/+88 |
| | | | | | | | | I don't know how different sound APIs handle 7.1.4 ("Atmos" or "Auro3D") output, but currently it simply specifies the additional channels with the height channel labels. This isn't likely how it works for a virtualized channel bed, for playing over other with-height configurations (7.1.2, 5.1.4, etc), but this should be an okay start. | ||||
* | Remove unnecessary includes and forward declarations | Chris Robinson | 2022-09-23 | 1 | -7/+0 |
| | |||||
* | Remove an unnecessary include | Chris Robinson | 2022-09-22 | 1 | -1/+0 |
| | |||||
* | Use PulseAudio's threaded mainloop instead of a custom one | Chris Robinson | 2022-09-22 | 1 | -141/+160 |
| | |||||
* | Fix the ringbuffer write size | Chris Robinson | 2022-08-18 | 1 | -1/+1 |
| | |||||
* | Use an intermediate buffer for writing to the ringbuffer | Chris Robinson | 2022-08-18 | 1 | -26/+11 |
| | | | | | It doesn't seem as though AudioUnitRender likes being given two buffers to render/capture samples into segmented memory. | ||||
* | Pass the action flags to AudioUnitRender from the callback | Chris Robinson | 2022-08-17 | 1 | -3/+2 |
| | |||||
* | Pass the bus number to AudioUnitRender from the callback | Chris Robinson | 2022-08-16 | 1 | -2/+2 |
| | |||||
* | Add media class for Audio/Source/Virtual as a valid node (#747) | Eir W | 2022-08-02 | 1 | -1/+6 |
| | |||||
* | Declare variables closer to where they're used | Chris Robinson | 2022-07-18 | 1 | -4/+2 |
| | |||||
* | Define PW_KEY_NODE_RATE when needed | Chris Robinson | 2022-06-24 | 1 | -0/+5 |
| | |||||
* | Fix the PipeWire version check | Chris Robinson | 2022-06-24 | 1 | -1/+2 |
| | | | | | | PW_CHECK_VERSION checks if the header version is equal to or newer than the values specified, it can't be used to check if the library version is equal to or newer than the header version. | ||||
* | Match exactly 5.1 Rear in WASAPI | Chris Robinson | 2022-06-16 | 1 | -2/+2 |
| | | | | | So 7.1 and other configurations like it aren't detected as 5.1 Rear despite having side channels. | ||||
* | Handle a blank channel mask from WASAPI | Chris Robinson | 2022-06-14 | 1 | -10/+18 |
| | | | | | | | Without a channel mask, the channels are treated as "raw" or unknown. Auto- detection will only go up to stereo (assuming the first two channels are front- left and front-right), while explicit requests will work as long as there are enough channels (the user is responsible for ensuring a correct setup). | ||||
* | 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 |
| |