implement pretty-name set-property for ALSA and Dummy
[ardour.git] / libs / backends / dummy / dummy_audiobackend.h
index 11597cfc31469da53f90460471b1d74f2676f6fa..95f079c4b95e8c0527b1caf52e92018f7997aaeb 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "ardour/types.h"
 #include "ardour/audio_backend.h"
+#include "ardour/dsp_load_calculator.h"
 
 namespace ARDOUR {
 
@@ -45,6 +46,7 @@ namespace DummyMidiData {
        } MIDISequence;
 };
 
+
 class DummyMidiEvent {
        public:
                DummyMidiEvent (const pframes_t timestamp, const uint8_t* data, size_t size);
@@ -70,9 +72,11 @@ class DummyPort {
                virtual ~DummyPort ();
 
                const std::string& name () const { return _name; }
+               const std::string& pretty_name () const { return _pretty_name; }
                PortFlags flags () const { return _flags; }
 
                int set_name (const std::string &name) { _name = name; return 0; }
+               int set_pretty_name (const std::string &name) { _pretty_name = name; return 0; }
 
                virtual DataType type () const = 0;
 
@@ -93,7 +97,7 @@ class DummyPort {
                virtual void* get_buffer (pframes_t nframes) = 0;
                void next_period () { _gen_cycle = false; }
 
-               const LatencyRange& latency_range (bool for_playback) const
+               const LatencyRange latency_range (bool for_playback) const
                {
                        return for_playback ? _playback_latency_range : _capture_latency_range;
                }
@@ -113,6 +117,7 @@ class DummyPort {
        private:
                DummyAudioBackend &_dummy_backend;
                std::string _name;
+               std::string _pretty_name;
                const PortFlags _flags;
                LatencyRange _capture_latency_range;
                LatencyRange _playback_latency_range;
@@ -226,6 +231,11 @@ class DummyAudioBackend : public AudioBackend {
                std::string name () const;
                bool is_realtime () const;
 
+               bool requires_driver_selection() const { return true; }
+               std::string driver_name () const;
+               std::vector<std::string> enumerate_drivers () const;
+               int set_driver (const std::string&);
+
                std::vector<DeviceStatus> enumerate_devices () const;
                std::vector<float> available_sample_rates (const std::string& device) const;
                std::vector<uint32_t> available_buffer_sizes (const std::string& device) const;
@@ -314,6 +324,9 @@ class DummyAudioBackend : public AudioBackend {
                std::string get_port_name (PortHandle) const;
                PortHandle  get_port_by_name (const std::string&) const;
 
+               int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const;
+               int set_port_property (PortHandle, const std::string& key, const std::string& value, const std::string& type);
+
                int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const;
 
                DataType port_data_type (PortHandle) const;
@@ -374,19 +387,28 @@ class DummyAudioBackend : public AudioBackend {
                        MidiToAudio,
                };
 
+               struct DriverSpeed {
+                       std::string name;
+                       float speedup;
+                       DriverSpeed (const std::string& n, float s) : name (n), speedup (s) {}
+               };
+
                std::string _instance_name;
                static std::vector<std::string> _midi_options;
                static std::vector<AudioBackend::DeviceStatus> _device_status;
+               static std::vector<DummyAudioBackend::DriverSpeed> _driver_speed;
 
                bool  _running;
                bool  _freewheel;
                bool  _freewheeling;
+               float _speedup;
 
                std::string _device;
 
                float  _samplerate;
                size_t _samples_per_period;
                float  _dsp_load;
+               DSPLoadCalculator _dsp_load_calc;
                static size_t _max_buffer_size;
 
                uint32_t _n_inputs;