Resample when engine and session sample-rates mismatch
This commit is contained in:
parent
65317ef0e0
commit
79033d8ee5
|
@ -195,10 +195,11 @@ AudioEngine::sample_rate_change (pframes_t nframes)
|
||||||
|
|
||||||
if (_session) {
|
if (_session) {
|
||||||
_session->set_sample_rate (nframes);
|
_session->set_sample_rate (nframes);
|
||||||
|
} else {
|
||||||
|
Temporal::set_sample_rate (nframes);
|
||||||
}
|
}
|
||||||
|
|
||||||
SampleRateChanged (nframes); /* EMIT SIGNAL */
|
SampleRateChanged (nframes); /* EMIT SIGNAL */
|
||||||
Temporal::set_sample_rate (nframes);
|
|
||||||
|
|
||||||
#ifdef SILENCE_AFTER_SECONDS
|
#ifdef SILENCE_AFTER_SECONDS
|
||||||
_silence_countdown = nframes * SILENCE_AFTER_SECONDS;
|
_silence_countdown = nframes * SILENCE_AFTER_SECONDS;
|
||||||
|
|
|
@ -2121,10 +2121,11 @@ Session::set_sample_rate (samplecnt_t frames_per_second)
|
||||||
if (_base_sample_rate == 0) {
|
if (_base_sample_rate == 0) {
|
||||||
_base_sample_rate = frames_per_second;
|
_base_sample_rate = frames_per_second;
|
||||||
}
|
}
|
||||||
else if (_base_sample_rate != frames_per_second && frames_per_second != _nominal_sample_rate) {
|
else if (_base_sample_rate != frames_per_second && frames_per_second != _nominal_sample_rate && _engine.running ()) {
|
||||||
NotifyAboutSampleRateMismatch (_base_sample_rate, frames_per_second);
|
NotifyAboutSampleRateMismatch (_base_sample_rate, frames_per_second);
|
||||||
}
|
}
|
||||||
_nominal_sample_rate = frames_per_second;
|
_nominal_sample_rate = _base_sample_rate;
|
||||||
|
Temporal::set_sample_rate (_nominal_sample_rate);
|
||||||
|
|
||||||
sync_time_vars();
|
sync_time_vars();
|
||||||
|
|
||||||
|
@ -6731,6 +6732,7 @@ void
|
||||||
Session::initialize_latencies ()
|
Session::initialize_latencies ()
|
||||||
{
|
{
|
||||||
block_processing ();
|
block_processing ();
|
||||||
|
Port::set_engine_ratio (_base_sample_rate, AudioEngine::instance()->sample_rate ());
|
||||||
update_latency (false);
|
update_latency (false);
|
||||||
update_latency (true);
|
update_latency (true);
|
||||||
unblock_processing ();
|
unblock_processing ();
|
||||||
|
|
|
@ -1691,6 +1691,7 @@ Session::set_state (const XMLNode& node, int version)
|
||||||
if (node.get_property (X_("sample-rate"), _base_sample_rate)) {
|
if (node.get_property (X_("sample-rate"), _base_sample_rate)) {
|
||||||
|
|
||||||
_nominal_sample_rate = _base_sample_rate;
|
_nominal_sample_rate = _base_sample_rate;
|
||||||
|
Temporal::set_sample_rate (_nominal_sample_rate);
|
||||||
|
|
||||||
while (!AudioEngine::instance()->running () || _base_sample_rate != AudioEngine::instance()->sample_rate ()) {
|
while (!AudioEngine::instance()->running () || _base_sample_rate != AudioEngine::instance()->sample_rate ()) {
|
||||||
boost::optional<int> r = AskAboutSampleRateMismatch (_base_sample_rate, _current_sample_rate);
|
boost::optional<int> r = AskAboutSampleRateMismatch (_base_sample_rate, _current_sample_rate);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user