13
0
Commit Graph

837 Commits

Author SHA1 Message Date
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
09aa0a3d1a
Consolidate code using pthread_attr_setstacksize
This also adds some stack constraint to rt and fallback threads
that didn't have those before (ALSA MIDI for example)
2020-06-06 18:35:44 +02:00
ae3c8b19c6
Tweak PulseAudio re-initialization
This fixes an issue with pulse disconnecting after freewheeling,
and possibly also address #8193
2020-06-05 04:24:09 +02:00
b46a7d43c2
Dummy Backend: add a MIDI Clock generator 2020-05-27 23:40:06 +02:00
feaf87d200
Dummy Backend: remove hardcoded MTC sequence 2020-05-12 01:49:45 +02:00
7c15ad099f
Dummy Backend: add a MTC generator 2020-05-12 01:49:41 +02:00
88fc77b4c0
Double dummy MTC sequence duration 2020-05-11 21:35:22 +02:00
4ff6fbe6b8
ALSA: Use same period for in+out #8075
Since the input is never flushed, capture latency is still
only one cycle.
2020-05-10 22:28:40 +02:00
abe23b5885
ALSA backend: ignore idempotent latency settings 2020-05-09 01:22:18 +02:00
c75b2355c1
Fix potential malloc(0) issue 2020-05-05 17:13:18 +02:00
27f26f5cfd
Cont'd work on ALSA nperiods (amend 2326fb163) 2020-05-03 00:19:56 +02:00
2326fb1638
ALSA: only read/clear user-requested nperiods before snd_pcm_start
This should fix excessive latency with the RayDay that
has a fixed buffersize of 16384 samples.
2020-05-01 23:17:31 +02:00
8fa0049d28
ALSA: set start threshold to zero 2020-04-30 04:16:17 +02:00
11f68a02cd
Another step towards nperiod fixes for the RayDay 2020-04-30 02:05:14 +02:00
3a6a9cfa6c
Tweak ALSA nperiod setting, fallback to nearest
This is mainly for RME RayDAT that has a fixed buffersize of 16k:

  dev_name : hw:HDSPMxc2f6c5,0
  channels : 36
  min_rate : 32000
  max_rate : 192000
  min_bufz : 16384
  max_bufz : 16384
  min_nper : 4
  max_nper : 512

However nperiod configuration determines the effective latency
regardless.

This is similar to https://github.com/jackaudio/jack1/blob/master/drivers/alsa/alsa_driver.c#L476-L486
2020-04-29 23:56:24 +02:00
47bb331bfa
Allow to refresh ALSA device list - #8051 2020-04-29 02:19:38 +02:00
8e482ef0fb
Con't work on ALSA nperiod selection (see also d3d120fa) 2020-04-28 17:56:17 +02:00
d3d120fa28
Prepare to allow using ALSA backend with nperiods > 3
This will still need an update for Alsa_pcmi::set_hwpar() capture
channel (which is fixed at 2, unless FRAG_NEAR is used).
2020-04-28 03:28:34 +02:00