00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackALSARawMidiOutputPort__
00021 #define __JackALSARawMidiOutputPort__
00022
00023 #include "JackALSARawMidiPort.h"
00024 #include "JackALSARawMidiSendQueue.h"
00025 #include "JackMidiAsyncQueue.h"
00026 #include "JackMidiBufferReadQueue.h"
00027 #include "JackMidiRawOutputWriteQueue.h"
00028
00029 namespace Jack {
00030
00031 class JackALSARawMidiOutputPort: public JackALSARawMidiPort {
00032
00033 private:
00034
00035 jack_midi_event_t *alsa_event;
00036 JackMidiRawOutputWriteQueue *raw_queue;
00037 JackMidiBufferReadQueue *read_queue;
00038 JackALSARawMidiSendQueue *send_queue;
00039 JackMidiAsyncQueue *thread_queue;
00040
00041 public:
00042
00043 JackALSARawMidiOutputPort(snd_rawmidi_info_t *info, size_t index,
00044 size_t max_bytes_per_poll=3,
00045 size_t max_bytes=4096,
00046 size_t max_messages=1024);
00047
00048 ~JackALSARawMidiOutputPort();
00049
00050 bool
00051 ProcessJack(JackMidiBuffer *port_buffer, jack_nframes_t frames);
00052
00053 bool
00054 ProcessPollEvents(bool handle_output, bool timeout,
00055 jack_nframes_t *frame);
00056
00057 };
00058
00059 }
00060
00061 #endif