22 #include "JackFFADOMidiInputPort.h"
23 #include "JackMidiUtil.h"
24 #include "JackError.h"
28 JackFFADOMidiInputPort::JackFFADOMidiInputPort(
size_t max_bytes)
31 receive_queue =
new JackFFADOMidiReceiveQueue();
32 std::auto_ptr<JackFFADOMidiReceiveQueue> receive_queue_ptr(receive_queue);
33 write_queue =
new JackMidiBufferWriteQueue();
34 std::auto_ptr<JackMidiBufferWriteQueue> write_queue_ptr(write_queue);
35 raw_queue =
new JackMidiRawInputWriteQueue(write_queue, max_bytes,
37 write_queue_ptr.release();
38 receive_queue_ptr.release();
41 JackFFADOMidiInputPort::~JackFFADOMidiInputPort()
49 JackFFADOMidiInputPort::Process(JackMidiBuffer *port_buffer,
50 uint32_t *input_buffer, jack_nframes_t frames)
52 receive_queue->ResetInputBuffer(input_buffer, frames);
54 jack_nframes_t boundary_frame = GetLastFrame() + frames;
60 case JackMidiWriteQueue::BUFFER_FULL:
65 raw_queue->
Process(boundary_frame);
67 case JackMidiWriteQueue::BUFFER_TOO_SMALL:
70 jack_error(
"JackFFADOMidiInputPort::Process - **BUG** "
71 "JackMidiRawInputWriteQueue::EnqueueEvent returned "
72 "`BUFFER_FULL`, and then returned "
73 "`BUFFER_TOO_SMALL` after a `Process()` call.");
75 case JackMidiWriteQueue::OK:
80 case JackMidiWriteQueue::BUFFER_TOO_SMALL:
81 jack_error(
"JackFFADOMidiInputPort::Process - The write queue "
82 "couldn't enqueue a %d-byte event. Dropping event.",
85 case JackMidiWriteQueue::OK:
94 raw_queue->
Process(boundary_frame);
SERVER_EXPORT void jack_error(const char *fmt,...)
void ResetMidiBuffer(JackMidiBuffer *buffer, jack_nframes_t frames)
jack_midi_event_t * DequeueEvent()