mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
Fix reduced channelcount when restarting engine with different device
1. Start engine with a stereo soundcard (n_inputs was set to 2) 2. Restart engine with multi-channel soundcard, n_inputs remained a 2)
This commit is contained in:
parent
d6b14e761b
commit
ab0d2dce6f
6 changed files with 6 additions and 66 deletions
|
|
@ -71,8 +71,6 @@ AlsaAudioBackend::AlsaAudioBackend (AudioEngine& e, AudioBackendInfo& info)
|
|||
, _samplerate (48000)
|
||||
, _samples_per_period (1024)
|
||||
, _periods_per_cycle (2)
|
||||
, _n_inputs (0)
|
||||
, _n_outputs (0)
|
||||
, _systemic_audio_input_latency (0)
|
||||
, _systemic_audio_output_latency (0)
|
||||
, _midi_device_thread_active (false)
|
||||
|
|
@ -919,24 +917,6 @@ AlsaAudioBackend::_start (bool for_latency_measurement)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (_n_outputs != _pcmi->nplay ()) {
|
||||
if (_n_outputs == 0) {
|
||||
_n_outputs = _pcmi->nplay ();
|
||||
} else {
|
||||
_n_outputs = std::min (_n_outputs, _pcmi->nplay ());
|
||||
}
|
||||
PBD::info << _("AlsaAudioBackend: adjusted output channel count to match device.") << endmsg;
|
||||
}
|
||||
|
||||
if (_n_inputs != _pcmi->ncapt ()) {
|
||||
if (_n_inputs == 0) {
|
||||
_n_inputs = _pcmi->ncapt ();
|
||||
} else {
|
||||
_n_inputs = std::min (_n_inputs, _pcmi->ncapt ());
|
||||
}
|
||||
PBD::info << _("AlsaAudioBackend: adjusted input channel count to match device.") << endmsg;
|
||||
}
|
||||
|
||||
if (_pcmi->fsize () != _samples_per_period) {
|
||||
_samples_per_period = _pcmi->fsize ();
|
||||
PBD::warning << string_compose (_("AlsaAudioBackend: samples per period does not match, using %1."), _samples_per_period) << endmsg;
|
||||
|
|
@ -1246,8 +1226,8 @@ AlsaAudioBackend::register_system_audio_ports ()
|
|||
{
|
||||
LatencyRange lr;
|
||||
|
||||
const int a_ins = _n_inputs;
|
||||
const int a_out = _n_outputs;
|
||||
const int a_ins = _pcmi->ncapt ();
|
||||
const int a_out = _pcmi->nplay ();
|
||||
|
||||
const uint32_t lcpp = (_periods_per_cycle - 2) * _samples_per_period;
|
||||
|
||||
|
|
|
|||
|
|
@ -302,9 +302,6 @@ class AlsaAudioBackend : public AudioBackend, public PortEngineSharedImpl
|
|||
size_t _periods_per_cycle;
|
||||
static size_t _max_buffer_size;
|
||||
|
||||
uint32_t _n_inputs;
|
||||
uint32_t _n_outputs;
|
||||
|
||||
uint32_t _systemic_audio_input_latency;
|
||||
uint32_t _systemic_audio_output_latency;
|
||||
|
||||
|
|
|
|||
|
|
@ -108,8 +108,6 @@ CoreAudioBackend::CoreAudioBackend (AudioEngine& e, AudioBackendInfo& info)
|
|||
, _midi_driver_option(_("CoreMidi"))
|
||||
, _samplerate (48000)
|
||||
, _samples_per_period (1024)
|
||||
, _n_inputs (0)
|
||||
, _n_outputs (0)
|
||||
, _systemic_audio_input_latency (0)
|
||||
, _systemic_audio_output_latency (0)
|
||||
, _hw_audio_input_latency (0)
|
||||
|
|
@ -564,24 +562,6 @@ CoreAudioBackend::_start (bool for_latency_measurement)
|
|||
return error_code;
|
||||
}
|
||||
|
||||
if (_n_outputs != _pcmio->n_playback_channels ()) {
|
||||
if (_n_outputs == 0) {
|
||||
_n_outputs = _pcmio->n_playback_channels ();
|
||||
} else {
|
||||
_n_outputs = std::min (_n_outputs, _pcmio->n_playback_channels ());
|
||||
}
|
||||
PBD::info << _("CoreAudioBackend: adjusted output channel count to match device.") << endmsg;
|
||||
}
|
||||
|
||||
if (_n_inputs != _pcmio->n_capture_channels ()) {
|
||||
if (_n_inputs == 0) {
|
||||
_n_inputs = _pcmio->n_capture_channels ();
|
||||
} else {
|
||||
_n_inputs = std::min (_n_inputs, _pcmio->n_capture_channels ());
|
||||
}
|
||||
PBD::info << _("CoreAudioBackend: adjusted input channel count to match device.") << endmsg;
|
||||
}
|
||||
|
||||
if (_pcmio->sample_rate() != _samplerate) {
|
||||
_samplerate = _pcmio->sample_rate();
|
||||
engine.sample_rate_change (_samplerate);
|
||||
|
|
@ -927,8 +907,8 @@ CoreAudioBackend::register_system_audio_ports()
|
|||
{
|
||||
LatencyRange lr;
|
||||
|
||||
const uint32_t a_ins = _n_inputs;
|
||||
const uint32_t a_out = _n_outputs;
|
||||
const uint32_t a_ins = _pcmio->n_capture_channels ();
|
||||
const uint32_t a_out = _pcmio->n_playback_channels ();
|
||||
|
||||
const uint32_t coreaudio_reported_input_latency = _pcmio->get_latency(name_to_id(_input_audio_device, Input), true);
|
||||
const uint32_t coreaudio_reported_output_latency = _pcmio->get_latency(name_to_id(_output_audio_device, Output), false);
|
||||
|
|
|
|||
|
|
@ -353,9 +353,6 @@ class CoreAudioBackend : public AudioBackend, public PortEngineSharedImpl {
|
|||
size_t _samples_per_period;
|
||||
static size_t _max_buffer_size;
|
||||
|
||||
uint32_t _n_inputs;
|
||||
uint32_t _n_outputs;
|
||||
|
||||
uint32_t _systemic_audio_input_latency;
|
||||
uint32_t _systemic_audio_output_latency;
|
||||
|
||||
|
|
|
|||
|
|
@ -84,8 +84,6 @@ PortAudioBackend::PortAudioBackend (AudioEngine& e, AudioBackendInfo& info)
|
|||
, _midi_driver_option(winmme_driver_name)
|
||||
, _samplerate (48000)
|
||||
, _samples_per_period (1024)
|
||||
, _n_inputs (0)
|
||||
, _n_outputs (0)
|
||||
, _systemic_audio_input_latency (0)
|
||||
, _systemic_audio_output_latency (0)
|
||||
, _dsp_load (0)
|
||||
|
|
@ -612,15 +610,6 @@ PortAudioBackend::_start (bool for_latency_measurement)
|
|||
return AudioDeviceOpenError;
|
||||
}
|
||||
|
||||
if (_n_outputs != _pcmio->n_playback_channels ()) {
|
||||
_n_outputs = _pcmio->n_playback_channels ();
|
||||
PBD::info << get_error_string(OutputChannelCountNotSupportedError) << endmsg;
|
||||
}
|
||||
|
||||
if (_n_inputs != _pcmio->n_capture_channels ()) {
|
||||
_n_inputs = _pcmio->n_capture_channels ();
|
||||
PBD::info << get_error_string(InputChannelCountNotSupportedError) << endmsg;
|
||||
}
|
||||
#if 0
|
||||
if (_pcmio->samples_per_period() != _samples_per_period) {
|
||||
_samples_per_period = _pcmio->samples_per_period();
|
||||
|
|
@ -1196,8 +1185,8 @@ PortAudioBackend::register_system_audio_ports()
|
|||
{
|
||||
LatencyRange lr;
|
||||
|
||||
const uint32_t a_ins = _n_inputs;
|
||||
const uint32_t a_out = _n_outputs;
|
||||
const uint32_t a_ins = _pcmio->n_capture_channels ();
|
||||
const uint32_t a_out = _pcmio->n_playback_channels ();
|
||||
|
||||
/* audio ports */
|
||||
lr.min = lr.max = (_measure_latency ? 0 : _systemic_audio_input_latency);
|
||||
|
|
|
|||
|
|
@ -322,9 +322,6 @@ class PortAudioBackend : public AudioBackend, public PortEngineSharedImpl {
|
|||
size_t _samples_per_period;
|
||||
static size_t _max_buffer_size;
|
||||
|
||||
uint32_t _n_inputs;
|
||||
uint32_t _n_outputs;
|
||||
|
||||
uint32_t _systemic_audio_input_latency;
|
||||
uint32_t _systemic_audio_output_latency;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue