24 #include "JackMidiRawInputWriteQueue.h"    25 #include "JackError.h"    29 JackMidiRawInputWriteQueue::
    31                            size_t max_packet_data, 
size_t max_packets)
    34     std::auto_ptr<JackMidiAsyncQueue> packet_queue_ptr(packet_queue);
    35     input_buffer = 
new jack_midi_data_t[max_packet_data];
    38     event_pending = 
false;
    39     input_buffer_size = max_packet_data;
    42     this->write_queue = write_queue;
    43     packet_queue_ptr.release();
    46 JackMidiRawInputWriteQueue::~JackMidiRawInputWriteQueue()
    48     delete[] input_buffer;
    53 JackMidiRawInputWriteQueue::Clear()
    59 Jack::JackMidiWriteQueue::EnqueueResult
    61                                          jack_midi_data_t *buffer)
    76     jack_error(
"JackMidiRawInputWriteQueue::HandleBufferFailure - %d MIDI "    77                "byte(s) of a %d byte message could not be buffered.  The "    78                "message has been dropped.", unbuffered_bytes, total_bytes);
    84     jack_error(
"JackMidiRawInputWriteQueue::HandleEventLoss - A %d byte MIDI "    85                "event scheduled for frame '%d' could not be processed because "    86                "the write queue cannot accomodate an event of that size.  The "    87                "event has been discarded.", event->
size, event->
time);
    93     jack_error(
"JackMidiRawInputWriteQueue::HandleIncompleteMessage - "    94                "Discarding %d MIDI byte(s) of an incomplete message.  The "    95                "MIDI cable may have been unplugged.", total_bytes);
   101     jack_error(
"JackMidiRawInputWriteQueue::HandleInvalidStatusByte - "   102                "Dropping invalid MIDI status byte '%x'.", (
unsigned int) byte);
   108     jack_error(
"JackMidiRawInputWriteQueue::HandleUnexpectedSysexEnd - "   109                "Received a sysex end byte without first receiving a sysex "   110                "start byte.  Discarding %d MIDI byte(s).  The cable may have "   111                "been unplugged.", total_bytes);
   115 JackMidiRawInputWriteQueue::PrepareBufferedEvent(jack_nframes_t time)
   117     bool result = ! unbuffered_bytes;
   121         PrepareEvent(time, total_bytes, input_buffer);
   124     if (status_byte >= 0xf0) {
   132 JackMidiRawInputWriteQueue::PrepareByteEvent(jack_nframes_t time,
   133                                              jack_midi_data_t byte)
   136     PrepareEvent(time, 1, &event_byte);
   141 JackMidiRawInputWriteQueue::PrepareEvent(jack_nframes_t time, 
size_t size,
   142                                          jack_midi_data_t *buffer)
   144     event.buffer = buffer;
   147     event_pending = 
true;
   154         if (! WriteEvent(boundary_frame)) {
   163             if (ProcessByte(packet->
time, *(packet->
buffer))) {
   164                 if (! WriteEvent(boundary_frame)) {
   176 JackMidiRawInputWriteQueue::ProcessByte(jack_nframes_t time,
   177                                         jack_midi_data_t byte)
   185         return PrepareByteEvent(time, byte);
   189         if (status_byte == 0xf0) {
   191             return PrepareBufferedEvent(time);
   206         switch (byte & 0xf0) {
   244                 bool result = PrepareByteEvent(time, byte);
   264         RecordByte(status_byte);
   267     return (total_bytes == expected_bytes) ? PrepareBufferedEvent(time) :
   272 JackMidiRawInputWriteQueue::RecordByte(jack_midi_data_t byte)
   274     if (total_bytes < input_buffer_size) {
   275         input_buffer[total_bytes] = byte;
   283 JackMidiRawInputWriteQueue::WriteEvent(jack_nframes_t boundary_frame)
   285     if ((! boundary_frame) || (event.
time < boundary_frame)) {
   287         case BUFFER_TOO_SMALL:
   291             event_pending = 
false;
 jack_midi_data_t * buffer
SERVER_EXPORT void jack_error(const char *fmt,...)
size_t GetAvailableSpace()
virtual EnqueueResult EnqueueEvent(jack_nframes_t time, size_t size, jack_midi_data_t *buffer)=0
virtual jack_midi_event_t * DequeueEvent()
virtual EnqueueResult EnqueueEvent(jack_nframes_t time, size_t size, jack_midi_data_t *buffer)