13
0
Commit Graph

854 Commits

Author SHA1 Message Date
95215ff405 JACK backend: avoid deadlock if a port is unregistered that is not known to Ardour 2021-06-13 07:59:14 -06:00
4c76ff503f measure backend process callback duration in ALSA backend 2021-06-12 15:00:46 -06:00
8afc994177 add some DSP stats to the JACK backend 2021-06-12 09:20:28 -06:00
1777cf8f69 add some initial timing points for dsp stats 2021-06-11 18:55:24 -06:00
a67a475480 dramtically improve performance of ::get_port_by_name() for JACK backend 2021-06-11 10:41:41 -06:00
2c8916310a
Consistent env variable naming (see also 6801c2cac2) 2021-06-10 03:17:49 +02:00
bc4ef3ff3d
Update weakjack, alternative macOS libjack paths
see also https://github.com/x42/weakjack/pull/13
2021-06-02 17:42:01 +02:00
8d471e6761 Remove extraneous parentheses (Wparentheses-equality) 2021-05-30 20:09:35 -04:00
df0571892f Coreaudio: fix duplicates in device list
This is an edge-case only, some devices may
dis and reconnect with different IDs.
2021-05-29 17:54:39 +02:00
14961e6bc7
ALSA backend: code cleanup and scoping and indent
This is combination of clang-format and manual edits.
The latter mainly to add braces and reduce scope of variables.
2021-05-16 00:49:06 +02:00
6801c2cac2
ALSA: add option to prefer interleaved access 2021-05-15 23:10:14 +02:00
e2bac27885
Remove unused API 2021-05-15 23:09:21 +02:00
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
438b1e5eab
Cont'd work to improve macOS rt priority 2021-05-02 20:24:10 +02:00
8661aa1809
ALSA: Fix swapped systemic latencies
This went unnoticed since measured systemic latency
is equally distributes between input and output.
2021-04-11 15:15:17 +02:00
cc7b8b1bc5
gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
John Emmas
a2b1482cad Fix a problem with ASIO buffer sizes on Windows
PortAudio uses what it calls 'default suggested latencies' but in callback streaming mode, they can result in wildly inaccurate buffer sizing (e.g. the user requests a buffer size of 128 but PortAudio actually instructs ASIO to use a much bigger size).

What we do now is to improve PortAudio's suggested latency calculation by basing it on the actual buffer size requested by the user.
2021-03-18 16:12:28 +00:00
291de1d277
Fix OSX and non GCC builds 2021-03-01 16:20:38 +01:00
7195ca20e0
Update weak_libjack - https://github.com/x42/weakjack/
This fixes an issue with recent MSVC causing a compile-error
due to __attribute__((constructor))
2021-02-28 16:27:22 +01:00
ace11bd243
Consistency: replace "x-run" with "xrun" (1/2) 2021-02-26 22:22:08 +01:00
John Emmas
d2cb383965 MSVC changes to support the new code modules (Tabbable API stuff) 2021-02-24 14:32:23 +00:00
3f4e2fa348
ALSA: retain port-connections of slave devices
When the engine is re-started, ports should only be reconnected
when all slave devices are running. Previously those connections
were lost.
2021-02-19 14:03:37 +01:00
634d325e5d
Prevent deadlock when disconnecting
The backend holds `_port_callback_mutex` while disconnecting ports.
In some cases disconnecting a port can drop the last reference
resulting in a port-deletion from the connection handler.
This in turn will eventually aquire the `_port_callback_mutex`
and deadlock.

This is now circumvented by using atomic operations instead of
taking a lock to set the `_port_change_flag`.

The flag is also used to trigger a latency update in some cases,
atomic is preferable to taking a lock to set this flag.

--

Full bt: https://paste.debian.net/1184056/
Short:

#1  in pthread_mutex_lock ()
#2  in ARDOUR::PortEngineSharedImpl::port_connect_add_remove_callback()
#3  in ARDOUR::BackendPort::~BackendPort()
#4  in ARDOUR::DummyPort::~DummyPort()
#6  in ARDOUR::DummyAudioPort::~DummyAudioPort()
#7  in boost::checked_delete<ARDOUR::BackendPort>(ARDOUR::BackendPort*)
#12 in boost::shared_ptr<ARDOUR::ProtoPort>::reset()
#13 in ARDOUR::Port::drop()
#14 in ARDOUR::Port::~Port()
#15 in ARDOUR::AudioPort::~AudioPort()
#17 in ARDOUR::AudioEngine::add_pending_port_deletion(ARDOUR::Port*)
#20 in boost::detail::sp_counted_base::release()
#37 in ARDOUR::PortManager::connect_callback() at libs/ardour/port_manager.cc:788
#38 in ARDOUR::DummyAudioBackend::main_process_thread() at libs/backends/dummy/dummy_audiobackend.cc:1018
2021-02-04 21:06:20 +01:00
f0a89c4f1d
ALSA: allow to select clock-source when using multiple devices 2021-01-24 18:23:37 +01:00
8426bb3aaf
ALSA: explicitly list millisecond buffer-sizes 2021-01-22 16:07:33 +01:00
0b97175d49
ALSA: fall back to nearest available buffer-size
The warning "samples per period does not match." never triggered.
Previously not being able to set the requested buffersize was a
fatal error.

This adds support for soundcards that only support msec.
e.g. recent HDA Intel via SOF (Sound Open Firmware)
2021-01-22 16:07:29 +01:00
cff58bd9da
ALSA: Fix slave device lookup 2021-01-22 16:07:24 +01:00
c5b986f420
ALSA: set pretty port names for audio I/O 2021-01-18 03:18:21 +01:00
21e66216be
Separate user-set pretty-names from hardware I/O names
This allow to restore original engine port-names as set
by the backend. ALSA MIDI, CoreAudio, CoreMIDI and PortAudio
drivers can provide human readable physical port names for
some devices.
2021-01-18 03:18:20 +01:00
0c81ba33d2
JACK latency compensation for newly created tracks #8472
Ardour native backends trigger a latency-callback when ports_changed.
This was lost for JACK when the shared port engine was implemented.
2021-01-14 03:22:25 +01:00
5e76d63c06
Resolve some Xcode12 C++11, sigc++ issues 2020-12-12 04:46:22 +01:00
60901d26b7
ALSA: improve debug output 2020-12-03 21:29:21 +01:00
80e3c191e4
Pulseaudio: allow steam being suspended during export
When exporting long sessions with freewheeling, pulseaudio
may meanwhile suspend the corked audio device. The "FAIL_ON_SUSPEND"
option then prevents ardour to uncork it after export, and the
audio-backend is halted.
2020-11-22 21:41:47 +01:00
81862f8c30
Allow to move pulse stream #8467
This potentially breaks various assumptions (e.g. no resampling,
fixed buffersize) when the stream is moved to a different device.
Then again it's pulseaudio, which is unsuitable for pro-audio to
begin with.
2020-11-11 15:59:26 +01:00
bb468ee4de
Update jackd.exe registry key
This ensures compatibility with upcoming jack > 1.9.16,
current jack 1.9.16, as well as older versions.
2020-11-09 20:06:49 +01:00
c87ef15e82
ALSA: configure capture settings before playback
This fixes an issue with some soundcards e.g. "AxeFx III".
Device configuration fails unless set_hwpar() is performed
for the capture device before configuring the playack
device (half duplex is fine, too).
2020-11-04 14:46:49 +01:00
cf0904f752
Handle vfork/exec failure
Don't call atexit, exit without cleanup.
2020-10-31 22:33:10 +01:00
a9bd7b2848
Remove unused compile-time option to not use vfork 2020-10-31 22:30:45 +01:00
7896c30508
Fix cmdline parameter escape 2020-10-31 13:42:14 +01:00
John Emmas
40ed19767a In a Windows build, support launching both older and newer versions of Jack (Stephane's + Filipe's) 2020-10-31 08:01:55 +00:00
John Emmas
5c06fdf1de In an MSVC build, modify our VC project to use weak Jack
(needed to support Jack v1.9.16)
2020-10-31 07:59:09 +00:00
f7cc5e1f38
Search for JACK on windows using the registry 2020-10-24 04:01:54 +02:00
17f0b87648
Fix Apple Carbon #define interference 2020-10-11 21:40:31 +02:00
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
216935f16e
Remove ALSA debug message in optimized builds 2020-09-18 15:40:44 +02:00
802ddf344a
Remove unused mutex (amend a80064981e) 2020-09-06 05:43:03 +02:00
a80064981e
NO-OP: Consolidate PortConnect code into shared parent class 2020-09-05 23:05:57 +02:00
481cf37052
RT-safe jack transport time-master
Prefer a try-lock, instead of locking the tempo-map.
2020-08-19 19:07:41 +02:00
Stefan Westerfeld
ad8eb4d05b
Set JACK transport bar_start_tick field. 2020-08-19 19:04:11 +02:00
92f54b3e98
Add API to query if systemic latency can be measured 2020-06-30 03:34:26 +02:00