audio_backend: Merge is_realtime() into client_real_time_priority()

The description of is_realtime() did not match its actual use. And
client_real_time_priority() did not have any description. It was
hard to come up with good descriptions of what they actually did.

Most backends returned true from is_realtime(), but every one except
JACK used the default implementation of client_real_time_priority() that
returned 0 ... which is exactly the same as when is_realtime() returns
false. Just merge them and keep it simple.
This commit is contained in:
Mads Kiilerich 2024-10-17 23:20:15 +02:00
parent a3ac3c7201
commit 9c0c4f527b
14 changed files with 5 additions and 55 deletions

View file

@ -149,15 +149,10 @@ public:
*/ */
virtual std::string name () const = 0; virtual std::string name () const = 0;
/** Return true if the callback from the underlying mechanism/API /** Return true if the backend is JACK */
* (CoreAudio, JACK, ASIO etc.) occurs in a thread subject to realtime
* constraints. Return false otherwise.
*/
virtual bool is_realtime () const = 0;
/** Return true if the backed is JACK */
virtual bool is_jack () const { return false; } virtual bool is_jack () const { return false; }
/** Return the priority to be set with pbd_set_engine_rt_priority. */
virtual int client_real_time_priority () { return 0; } virtual int client_real_time_priority () { return 0; }
/* Discovering devices and parameters */ /* Discovering devices and parameters */

View file

@ -1067,11 +1067,7 @@ AudioEngine::start (bool for_latency)
return -1; return -1;
} }
if (_backend->is_realtime ()) {
pbd_set_engine_rt_priority (_backend->client_real_time_priority ()); pbd_set_engine_rt_priority (_backend->client_real_time_priority ());
} else {
pbd_set_engine_rt_priority (0);
}
_running = true; _running = true;

View file

@ -99,12 +99,6 @@ AlsaAudioBackend::name () const
return X_("ALSA"); return X_("ALSA");
} }
bool
AlsaAudioBackend::is_realtime () const
{
return true;
}
std::vector<AudioBackend::DeviceStatus> std::vector<AudioBackend::DeviceStatus>
AlsaAudioBackend::enumerate_devices () const AlsaAudioBackend::enumerate_devices () const
{ {

View file

@ -125,7 +125,6 @@ class AlsaAudioBackend : public AudioBackend, public PortEngineSharedImpl
/* AUDIOBACKEND API */ /* AUDIOBACKEND API */
std::string name () const; std::string name () const;
bool is_realtime () const;
bool use_separate_input_and_output_devices () const { return true; } bool use_separate_input_and_output_devices () const { return true; }
bool match_input_output_devices_or_none () const { return false; } bool match_input_output_devices_or_none () const { return false; }

View file

@ -149,12 +149,6 @@ CoreAudioBackend::name () const
return X_("CoreAudio"); return X_("CoreAudio");
} }
bool
CoreAudioBackend::is_realtime () const
{
return true;
}
std::vector<AudioBackend::DeviceStatus> std::vector<AudioBackend::DeviceStatus>
CoreAudioBackend::enumerate_devices () const CoreAudioBackend::enumerate_devices () const
{ {

View file

@ -160,7 +160,6 @@ class CoreAudioBackend : public AudioBackend, public PortEngineSharedImpl {
/* AUDIOBACKEND API */ /* AUDIOBACKEND API */
std::string name () const; std::string name () const;
bool is_realtime () const;
bool use_separate_input_and_output_devices () const { return true; } bool use_separate_input_and_output_devices () const { return true; }
std::vector<DeviceStatus> enumerate_devices () const; std::vector<DeviceStatus> enumerate_devices () const;

View file

@ -110,12 +110,6 @@ DummyAudioBackend::name () const
return X_("Dummy"); // internal name return X_("Dummy"); // internal name
} }
bool
DummyAudioBackend::is_realtime () const
{
return false;
}
std::vector<AudioBackend::DeviceStatus> std::vector<AudioBackend::DeviceStatus>
DummyAudioBackend::enumerate_devices () const DummyAudioBackend::enumerate_devices () const
{ {

View file

@ -194,7 +194,6 @@ class DummyAudioBackend : public AudioBackend, public PortEngineSharedImpl
/* AUDIOBACKEND API */ /* AUDIOBACKEND API */
std::string name () const; std::string name () const;
bool is_realtime () const;
bool requires_driver_selection() const { return true; } bool requires_driver_selection() const { return true; }
std::string driver_name () const; std::string driver_name () const;

View file

@ -105,13 +105,6 @@ JACKAudioBackend::available() const
return (private_handle() != 0); return (private_handle() != 0);
} }
bool
JACKAudioBackend::is_realtime () const
{
GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false);
return jack_is_realtime (_priv_jack);
}
bool bool
JACKAudioBackend::requires_driver_selection() const JACKAudioBackend::requires_driver_selection() const
{ {
@ -882,6 +875,8 @@ int
JACKAudioBackend::client_real_time_priority () JACKAudioBackend::client_real_time_priority ()
{ {
GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0);
if (!jack_is_realtime (_priv_jack))
return 0;
return jack_client_real_time_priority (_priv_jack); return jack_client_real_time_priority (_priv_jack);
} }

View file

@ -58,7 +58,6 @@ class JACKAudioBackend : public AudioBackend {
std::string name() const; std::string name() const;
void* private_handle() const; void* private_handle() const;
bool is_realtime () const;
bool is_jack () const { return true; } bool is_jack () const { return true; }

View file

@ -118,12 +118,6 @@ PortAudioBackend::name () const
return X_("PortAudio"); return X_("PortAudio");
} }
bool
PortAudioBackend::is_realtime () const
{
return true;
}
bool bool
PortAudioBackend::requires_driver_selection() const PortAudioBackend::requires_driver_selection() const
{ {

View file

@ -99,7 +99,6 @@ class PortAudioBackend : public AudioBackend, public PortEngineSharedImpl {
/* AUDIOBACKEND API */ /* AUDIOBACKEND API */
std::string name () const; std::string name () const;
bool is_realtime () const;
bool requires_driver_selection() const; bool requires_driver_selection() const;
std::string driver_name () const; std::string driver_name () const;

View file

@ -332,12 +332,6 @@ PulseAudioBackend::name () const
return X_("PulseAudio"); return X_("PulseAudio");
} }
bool
PulseAudioBackend::is_realtime () const
{
return true;
}
std::vector<AudioBackend::DeviceStatus> std::vector<AudioBackend::DeviceStatus>
PulseAudioBackend::enumerate_devices () const PulseAudioBackend::enumerate_devices () const
{ {

View file

@ -102,7 +102,6 @@ public:
/* AUDIOBACKEND API */ /* AUDIOBACKEND API */
std::string name () const; std::string name () const;
bool is_realtime () const;
std::vector<DeviceStatus> enumerate_devices () const; std::vector<DeviceStatus> enumerate_devices () const;
std::vector<float> available_sample_rates (const std::string& device) const; std::vector<float> available_sample_rates (const std::string& device) const;