aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/jack.c
Commit message (Collapse)AuthorAgeFilesLines
* Make the Connected state atomicChris Robinson2018-02-041-1/+2
| | | | Also don't send the Disconnected event more than once.
* Provide more descriptive messages to disconnection eventsChris Robinson2018-02-031-1/+1
|
* Use an atomic instead of volatile to tell a thread to quitChris Robinson2018-02-011-6/+5
|
* Use semaphores to signal for more samples with JACK and OpenSLChris Robinson2018-02-011-26/+8
|
* Don't bother with an explicit stop backend methodChris Robinson2018-01-291-15/+0
|
* Move the ringbuffer declarations to a separate headerChris Robinson2018-01-111-0/+1
| | | | And rename alcRing.c to ringbuffer.c for consistency.
* Move the config function declarations to their own headerChris Robinson2018-01-111-0/+1
| | | | And rename alcConfig.c to alconfig.c for consistency.
* Restore the original JACK message callback when possibleChris Robinson2017-09-231-1/+9
|
* Remove unnecessary functions in the JACK backendChris Robinson2017-04-171-19/+8
|
* Store the ambisonic order separate from the channel enumChris Robinson2017-04-121-3/+7
|
* Rename al_string_* functions to alstr_*Chris Robinson2017-04-041-6/+6
|
* Print warnings about missing libraries and functionsChris Robinson2017-02-211-1/+8
|
* Include the full JACK ringbuffer size for the device period countChris Robinson2016-11-031-3/+8
|
* Set a JACK error message handler when initializing the backendChris Robinson2016-08-111-0/+10
| | | | | | | | | | | | | | JACK2 will print error messages to stderr if it fails to connect to a server. Users who don't normally use JACK but have the client lib installed will get those messages even though OpenAL Soft will continue on to find a working backend without trouble. So to avoid it, set an error message handler that'll log them as warnings. This isn't that great because there's no way to tell whether the error messages are due to the server not running, or some other problem. And it resets the callback to the default afterward even if it may have been set to something else before. JACK2, which is what needs this workaround in the first place, doesn't export the jack_error_callback pointer to properly save and restore it.
* Look for the correct DLL for JACK on WindowsChris Robinson2016-08-031-1/+6
|
* Change the backend getLatency method to return the clock time tooChris Robinson2016-05-281-5/+7
| | | | | | This will also allow backends to better synchronize the tracked clock time with the device output latency, without necessarily needing to lock if the backend API can allow for it.
* Allow for device-specific config valuesChris Robinson2015-08-281-3/+3
|
* Add a macro to simplify allocating and constructing an objectChris Robinson2015-05-181-6/+1
|
* Add a note to the JACK backend about a (minor) race conditionChris Robinson2015-02-071-0/+14
|
* Signal the mixer thread outside of the mutex lockChris Robinson2015-02-031-1/+5
|
* Don't try to spawn a JACK server by defaultChris Robinson2015-02-031-6/+6
| | | | And don't print an error if one couldn't be started when not requested.
* Always use the JACK server buffer size as the update sizeChris Robinson2015-02-031-12/+15
| | | | | The buffer-size config option now only specifies an additional mix ahead to keep ready for audio requests, rather than a pretend period size.
* Update a commentChris Robinson2014-12-241-2/+2
|
* Don't update the channel format if all JACK ports were allocatedChris Robinson2014-12-231-9/+11
|
* Try the device-specified channel configuration firstChris Robinson2014-12-231-3/+15
| | | | | This does basically no checking that the channel config is correct, but should be good enough for when non-stereo modes are requested.
* Use the custom ringbuffer instead of JACK'sChris Robinson2014-12-231-41/+20
|
* Don't set unused pointers to NULL, don't try to write 0 samplesChris Robinson2014-12-231-7/+8
|
* At least measure the ringbuffer size for JACK's latencyChris Robinson2014-12-231-1/+17
| | | | | | We should also add the port latency, but there's currently no way to ensure it's synchronized with the ringbuffer (the ringbuffer will update before the port latency gets updated).
* Add an option to prevent spawning a JACK serverChris Robinson2014-12-221-2/+6
|
* Add an option for an increased ringbuffer size with JACKChris Robinson2014-12-221-2/+10
|
* Fill out the JACK playback backendChris Robinson2014-12-221-15/+326
| | | | | | | | | | | | | | | | | | | | | | | | A few notes about it: The OpenAL device's requested buffer metrics are ignored, and instead the device will keep one JACK-sized buffer's worth of audio prepared for JACK's next process request. Output is restricted to 32-bit float stereo. Part of this is because JACK requires a buffer size that's a power of 2 (measured in samples), and the ringbuffer requires a buffer size that's a power of 2 (measured in bytes). A channel count of 6 (5.1) or 7 (6.1) will not work without causing a sample to split over the edge of the ringbuffer. Additioanlly, JACK doesn't provide information about what channel configuration a device or set of ports has, so there's no way to know what ports 3 and up map to (even the first two ports are unknown, but assuming stereo seems to work well enough). There is no device latency measurement (for AL_SOFT_source_latency) due to the non-atomicity between the ringbuffer's read size and port latency. A method is needed to ensure the ringbuffer's read size and port latency can both be measured between the end of a JACK update cycle (when the port latency has been updated with the newly-retrieved audio) and the following ringbuffer read update.
* Add a skeleton backend for JACKChris Robinson2014-12-211-0/+261