22 #include "JackFFADOMidiInputPort.h"
23 #include "JackMidiUtil.h"
27 JackFFADOMidiInputPort::JackFFADOMidiInputPort(
size_t max_bytes)
30 receive_queue =
new JackFFADOMidiReceiveQueue();
31 std::auto_ptr<JackFFADOMidiReceiveQueue> receive_queue_ptr(receive_queue);
32 write_queue =
new JackMidiBufferWriteQueue();
33 std::auto_ptr<JackMidiBufferWriteQueue> write_queue_ptr(write_queue);
34 raw_queue =
new JackMidiRawInputWriteQueue(write_queue, max_bytes,
36 write_queue_ptr.release();
37 receive_queue_ptr.release();
40 JackFFADOMidiInputPort::~JackFFADOMidiInputPort()
48 JackFFADOMidiInputPort::Process(JackMidiBuffer *port_buffer,
49 uint32_t *input_buffer, jack_nframes_t frames)
51 receive_queue->ResetInputBuffer(input_buffer, frames);
53 jack_nframes_t boundary_frame = GetLastFrame() + frames;
59 case JackMidiWriteQueue::BUFFER_FULL:
64 raw_queue->
Process(boundary_frame);
66 case JackMidiWriteQueue::BUFFER_TOO_SMALL:
69 jack_error(
"JackFFADOMidiInputPort::Process - **BUG** "
70 "JackMidiRawInputWriteQueue::EnqueueEvent returned "
71 "`BUFFER_FULL`, and then returned "
72 "`BUFFER_TOO_SMALL` after a `Process()` call.");
74 case JackMidiWriteQueue::OK:
79 case JackMidiWriteQueue::BUFFER_TOO_SMALL:
80 jack_error(
"JackFFADOMidiInputPort::Process - The write queue "
81 "couldn't enqueue a %d-byte event. Dropping event.",
84 case JackMidiWriteQueue::OK:
93 raw_queue->
Process(boundary_frame);