Commit graph

53 commits

Author SHA1 Message Date
Robin Gareus
74c4ca3e52
Reduce reliance on boost - the hard part
the rest from `tools/convert_boost.sh`.

* replace boost::function, boost::bind with std::function and std::bind.

This required some manual fixes, notably std::placeholders,
some static_casts<>, and boost::function::clear -> = {}.
2024-10-19 03:47:21 +02:00
Robin Gareus
a76b2ed1bb
Rename JACK to "JACK/Pipewire" on Linux (1/2) 2024-07-31 04:38:01 +02:00
Robin Gareus
d6b14e761b
Remove unused backend channel count config API 2024-07-10 15:39:01 +02:00
Paul Davis
2fa6500ec5 NOOP: fix indentation 2023-09-13 10:23:58 -06:00
Paul Davis
3c857a78c6 JACK backend: serialize all jack server calls with a mutex
As was noted in 88ee3af3ea it is unsafe/undefined behavior if two threads
sleep on the JACK request file descriptor, since there is no way to control
which one will wake and process the request. Since each thread may have
sent a different request, this can lead to a thread misinterpreting the
response because it is reading the wrong response.

This may (or may not) solve some subtle problems with JACK, but was
revealed by having a control surface (LaunchPad Pro) that registers
three ports from the butler thread at about the same as the GUI
thread is registering the auditioner. One thread read the wrong
response, and because of some slightly weird code/design, it attempts
to rename the port from within the response handler, which in JACK1
leads to deadlock (and later, zombification).
2023-09-13 09:20:41 -06:00
Paul Davis
88ee3af3ea JACK backend: add a mutex to serialize per-thread port register requests to server
Without this, two threads can both sleep on the same communication channel, and the wake order
is non-determinate, so the wrong thread may process the response to the other thread's request.
2023-09-12 22:41:26 -06:00
Paul Davis
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Paul Davis
39ed528e25 std-ize: convert all boost shared/weak ptr includes to <memory>
Also fix stdint.h -> cstdint and alphabetically order std includes
2023-03-24 14:19:15 -06:00
Paul Davis
a67a475480 dramtically improve performance of ::get_port_by_name() for JACK backend 2021-06-11 10:41:41 -06:00
Robin Gareus
5957e14259
Remove unused #include<> (2/2)
PBD::stacktrace() is not used nor needed by default.
It should be used sparingly.
2021-05-05 17:57:16 +02:00
Robin Gareus
472ce90fab
JACK backend allows to calibrate latency
However, if jackd is running, we should test if jackd is using
a full-duplex device to establish if latency calibration is
possible -- fix 92f54b3e98.
2020-09-20 17:16:01 +02:00
Robin Gareus
92f54b3e98
Add API to query if systemic latency can be measured 2020-06-30 03:34:26 +02:00
Robin Gareus
8e482ef0fb
Con't work on ALSA nperiod selection (see also d3d120fa) 2020-04-28 17:56:17 +02:00
Paul Davis
70f13a3ff3 use RCU to manage JACK backend's container of ports 2020-04-08 19:56:33 -06:00
Paul Davis
d827f3fdae fix up shared_ptr<> use in JACK backend 2020-04-07 13:23:49 -06:00
Paul Davis
b9cb306e8b use shared_ptr to manage backend port lifetimes (Pulse,ALSA,Dummy,JACK)
JACK is not yet finished.

Changes also include minor reformatting and a spelling correction (latecies to latencies)
2020-04-07 13:23:49 -06:00
Robin Gareus
47a62b2850
Update backend GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus
076e9fddd4
Remove ambiguous API implementation
* PortEngine::available() implementation
* AudioEngine::connected() wrapper

Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
2018-11-28 15:32:40 +01:00
Paul Davis
e047b01aa2 add new API for retrieving port flags from backend 2018-10-17 14:11:37 -04:00
Robin Gareus
94e6164bc3 Add API to query backend realtime thread priority 2018-10-11 15:29:40 +02:00
Robin Gareus
94e2bce740 Add & implement PortEngine::externally_connected() API 2017-10-30 19:41:42 +01:00
Paul Davis
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Robin Gareus
2b7c585dba Update backend API: read-only MIDI input buffers 2017-08-05 15:36:36 +02:00
Robin Gareus
9840a11537 implement metadata-set for remaining backends 2016-04-18 00:35:51 +02:00
Robin Gareus
7ad8ad8823 JACK: expose --nperiods option 2015-12-05 13:56:18 +01:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Robin Gareus
20cd14cf36 add backend support for port properties (jack) 2015-03-08 19:02:31 +01:00
Paul Davis
582138f280 change Audio backend sample time methods to use a 64 bit timeline 2015-02-19 17:44:01 -05:00
Robin Gareus
f3ff1b9669 weak/runtime jack linking: load libjack dynamically at runtime 2014-10-23 16:53:13 +02:00
Paul Davis
68458cde69 fix all 4 backends' failure to include the main "backend" thread when computing ::in_process_thread() 2014-10-22 17:07:11 -04:00
Paul Davis
8d59afb048 copy over current Waves version of their backend, along with minor changes in libs/ardour and libs/backend/jack to fit with API changes 2014-09-30 21:00:34 -04:00
Robin Gareus
da912f7ed4 add AudioEngine API to configure individual MIDI devices 2014-06-13 11:47:51 +02:00
Paul Davis
66559cd795 Add AudioBackend::info() method to retrieve AudioBackendInfo object
Goal is to be able to call AudioBackendInfo::already_configured() from the right place.
2014-05-01 09:14:25 -04:00
Paul Davis
9dbdac2a19 remove unused and unimplementable audio engine sample format code 2014-02-24 14:46:19 -05:00
Paul Davis
ce7bfb489c change "cpu" in cpu load backend functions 2013-12-04 11:48:31 -05:00
Paul Davis
dc4a984cd6 move AudioBackend::_start() into protected, and expand a bit on documenting ::start() vs ::_start() 2013-11-27 14:27:27 -05:00
Paul Davis
7fec991077 fix thinko in declaration of ARDOUR::PortEngine::get_port_by_name() 2013-10-28 09:46:59 -04:00
Paul Davis
cfe42bc4ea fix issues with recording while synced to JACK (non-pure-virtual method added to AudioBackend) and remove pause() from AudioEngine/AudioBackend APIs 2013-10-21 16:24:24 -04:00
Paul Davis
589ef168c1 adapt JACK audiobackend to pay attention to new _start() API related to latency measurement 2013-10-12 10:03:15 -04:00
Paul Davis
c96108c2e1 add API to get current MIDI option from an audio/MIDI backend 2013-10-10 16:18:00 -04:00
Paul Davis
1bd04f8bf3 add JACK backend support for MIDI option discovery 2013-10-10 12:59:11 -04:00
Paul Davis
c98abed37f restore jack timebase master and jack session callback functionality (moved into the JACK backend) 2013-10-08 14:02:03 -04:00
Tim Mayberry
53ad2d187f Move processing thread list from ARDOUR::Graph into AudioBackend implementation 2013-10-04 18:53:37 +10:00
Tim Mayberry
df363a4fb3 Add AudioBackendThread class to support different thread type on windows 2013-10-04 18:51:47 +10:00
Paul Davis
f51537b71d substantive changes to allow the audio/MIDI setup dialog to change settings as intended
So far only tested with JACK backend, but expected to be more correct for other backends too
2013-09-17 21:09:13 -04:00
Paul Davis
83a826095d update JACK backend to use new inheritance structure for AudioBackend 2013-09-13 11:21:43 -04:00
Paul Davis
4df3666738 add AudioBackendNativeThread to serve the same role as jack_native_thread_t 2013-09-12 11:29:47 -04:00
Paul Davis
2a89234027 move control app launching back into audio backend to allow ASIO/CoreAudio model to work; push initial state of AMS dialog to backend
Issues remain with the basic model of the AMS dialog - when is
newly chosen state pushed into the backend (which can then
modify the control app button sensitivity. This is a special
problem for this button because APIs like ASIO and CoreAudio
probably don't allow us to launch a control app for an arbitrary
device, but only one actually in use. In this sense it is
different from properties like available buffer size etc, where
we can typically query without actually using the device.
2013-09-09 21:23:12 -04:00
Paul Davis
ecfeeda4b8 launching control app is now responsibility of ardour GUI, not audio backend; use ARDOUR_DEVICE_CONTROL_APP if set in the environment 2013-09-09 16:48:27 -04:00