diff options
author | Robin Gareus <robin@gareus.org> | 2014-06-21 13:51:46 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-06-21 13:51:46 +0200 |
commit | 6648074a130fed9b3cc2de0dbbfa900f5cfba0f7 (patch) | |
tree | acc7d5619054ae321437f72a45989a816a7751ec /libs/backends/alsa/alsa_sequencer.h | |
parent | 5e436fc8fc7c1ff2c521fa2cd2d90dc9ce955b89 (diff) |
virtual abstraction of Alsa Raw+Seq
Diffstat (limited to 'libs/backends/alsa/alsa_sequencer.h')
-rw-r--r-- | libs/backends/alsa/alsa_sequencer.h | 48 |
1 files changed, 4 insertions, 44 deletions
diff --git a/libs/backends/alsa/alsa_sequencer.h b/libs/backends/alsa/alsa_sequencer.h index c70870fd8a..bc00751acf 100644 --- a/libs/backends/alsa/alsa_sequencer.h +++ b/libs/backends/alsa/alsa_sequencer.h @@ -27,76 +27,36 @@ #include "pbd/ringbuffer.h" #include "ardour/types.h" +#include "alsa_midi.h" namespace ARDOUR { -class AlsaSeqMidiIO { +class AlsaSeqMidiIO : virtual public AlsaMidiIO { public: AlsaSeqMidiIO (const char *port_name, const bool input); virtual ~AlsaSeqMidiIO (); - int state (void) const { return _state; } - int start (); - int stop (); - - void setup_timing (const size_t samples_per_period, const float samplerate); - void sync_time(uint64_t); - - virtual void* main_process_thread () = 0; - protected: - pthread_t _main_thread; - pthread_mutex_t _notify_mutex; - pthread_cond_t _notify_ready; - - int _state; - bool _running; - snd_seq_t *_seq; - //snd_seq_addr_t _port; int _port; - int _npfds; - struct pollfd *_pfds; - - double _sample_length_us; - double _period_length_us; - size_t _samples_per_period; - uint64_t _clock_monotonic; - - struct MidiEventHeader { - uint64_t time; - size_t size; - MidiEventHeader(const uint64_t t, const size_t s) - : time(t) - , size(s) {} - }; - - RingBuffer<uint8_t>* _rb; - private: void init (const char *device_name, const bool input); }; -class AlsaSeqMidiOut : public AlsaSeqMidiIO +class AlsaSeqMidiOut : public AlsaSeqMidiIO, public AlsaMidiOut { public: AlsaSeqMidiOut (const char *port_name); - void* main_process_thread (); - int send_event (const pframes_t, const uint8_t *, const size_t); }; -class AlsaSeqMidiIn : public AlsaSeqMidiIO +class AlsaSeqMidiIn : public AlsaSeqMidiIO, public AlsaMidiIn { public: AlsaSeqMidiIn (const char *port_name); void* main_process_thread (); - size_t recv_event (pframes_t &, uint8_t *, size_t &); - -private: - int queue_event (const uint64_t, const uint8_t *, const size_t); }; } // namespace |