Implement MIDI device enumeration and latency offset/calibration in portaudio backend
[ardour.git] / libs / backends / portaudio / portaudio_backend.h
index f0ef5fa9932df2a22b0d659176e3aba0e8d374e2..b028dc212bd5265fa8cfd782eff2fa7ad9502292 100644 (file)
@@ -197,8 +197,8 @@ class PortAudioBackend : public AudioBackend {
                int set_output_channels (uint32_t);
                int set_systemic_input_latency (uint32_t);
                int set_systemic_output_latency (uint32_t);
-               int set_systemic_midi_input_latency (std::string const, uint32_t) { return 0; }
-               int set_systemic_midi_output_latency (std::string const, uint32_t) { return 0; }
+               int set_systemic_midi_input_latency (std::string const, uint32_t);
+               int set_systemic_midi_output_latency (std::string const, uint32_t);
 
                int reset_device () { return 0; };
 
@@ -213,10 +213,10 @@ class PortAudioBackend : public AudioBackend {
                uint32_t     output_channels () const;
                uint32_t     systemic_input_latency () const;
                uint32_t     systemic_output_latency () const;
-               uint32_t     systemic_midi_input_latency (std::string const) const { return 0; }
-               uint32_t     systemic_midi_output_latency (std::string const) const { return 0; }
+               uint32_t     systemic_midi_input_latency (std::string const) const;
+               uint32_t     systemic_midi_output_latency (std::string const) const;
 
-               bool can_set_systemic_midi_latencies () const { return false; }
+               bool can_set_systemic_midi_latencies () const { return true; }
 
                /* External control app */
                std::string control_app_name () const;
@@ -227,15 +227,9 @@ class PortAudioBackend : public AudioBackend {
                int set_midi_option (const std::string&);
                std::string midi_option () const;
 
-               std::vector<DeviceStatus> enumerate_midi_devices () const {
-                       return std::vector<AudioBackend::DeviceStatus> ();
-               }
-               int set_midi_device_enabled (std::string const, bool) {
-                       return 0;
-               }
-               bool midi_device_enabled (std::string const) const {
-                       return true;
-               }
+               std::vector<DeviceStatus> enumerate_midi_devices () const;
+               int set_midi_device_enabled (std::string const, bool);
+               bool midi_device_enabled (std::string const) const;
 
        protected:
                /* State Control */
@@ -402,6 +396,8 @@ class PortAudioBackend : public AudioBackend {
                uint32_t _systemic_audio_input_latency;
                uint32_t _systemic_audio_output_latency;
 
+               MidiDeviceInfo* midi_device_info(const std::string&) const;
+
                /* portaudio specific  */
                int name_to_id(std::string) const;