33 #ifndef __JACK_FREEBOB_DRIVER_H__    34 #define __JACK_FREEBOB_DRIVER_H__    39 #include <libfreebob/freebob.h>    40 #include <libfreebob/freebob_streaming.h>    48 #include <netinet/in.h>    52 #include <semaphore.h>    57 #ifdef FREEBOB_DRIVER_WITH_MIDI    58 #include <JackPosixThread.h>    59 #include <alsa/asoundlib.h>    63 #define DEBUG_LEVEL_BUFFERS             (1<<0)    64 #define DEBUG_LEVEL_HANDLERS                    (1<<1)    65 #define DEBUG_LEVEL_XRUN_RECOVERY       (1<<2)    66 #define DEBUG_LEVEL_WAIT                        (1<<3)    68 #define DEBUG_LEVEL_RUN_CYCLE           (1<<8)    70 #define DEBUG_LEVEL_PACKETCOUNTER               (1<<16)    71 #define DEBUG_LEVEL_STARTUP                             (1<<17)    72 #define DEBUG_LEVEL_THREADS                             (1<<18)    77 #define DEBUG_LEVEL (  DEBUG_LEVEL_RUN_CYCLE | \    78         (DEBUG_LEVEL_XRUN_RECOVERY)| DEBUG_LEVEL_STARTUP | DEBUG_LEVEL_WAIT | DEBUG_LEVEL_PACKETCOUNTER)    80 #warning Building debug build!    82 #define printMessage(format, args...) jack_error( "FreeBoB MSG: %s:%d (%s): " format,  __FILE__, __LINE__, __FUNCTION__, ##args )    83 #define printError(format, args...) jack_error( "FreeBoB ERR: %s:%d (%s): " format,  __FILE__, __LINE__, __FUNCTION__, ##args )    90 #define debugError(format, args...) jack_error( "FREEBOB ERR: %s:%d (%s): " format,  __FILE__, __LINE__, __FUNCTION__, ##args )    91 #define debugPrint(Level, format, args...) if(DEBUG_LEVEL & (Level))  jack_error("DEBUG %s:%d (%s) :"  format, __FILE__, __LINE__, __FUNCTION__, ##args );    92 #define debugPrintShort(Level, format, args...) if(DEBUG_LEVEL & (Level))  jack_error( format,##args );    93 #define debugPrintWithTimeStamp(Level, format, args...) if(DEBUG_LEVEL & (Level)) jack_error( "%16lu: "format, debugGetCurrentUTime(),##args );    94 #define SEGFAULT int *test=NULL;        *test=1;    98 #define printMessage(format, args...) if(g_verbose) \    99                                                  jack_error("FreeBoB MSG: " format, ##args )   100 #define printError(format, args...)   jack_error("FreeBoB ERR: " format, ##args )   105 #define debugError(format, args...)   106 #define debugPrint(Level, format, args...)   107 #define debugPrintShort(Level, format, args...)   108 #define debugPrintWithTimeStamp(Level, format, args...)   112 #define FREEBOB_RT_PRIORITY_PACKETIZER_RELATIVE 5   114 #ifdef FREEBOB_DRIVER_WITH_MIDI   116 #define ALSA_SEQ_BUFF_SIZE 1024   117 #define MIDI_TRANSMIT_BUFFER_SIZE 1024   118 #define MIDI_THREAD_SLEEP_TIME_USECS 100   123 #define FREEBOB_RT_PRIORITY_MIDI_RELATIVE       4   137     jack_nframes_t period_size;
   143     jack_nframes_t buffer_size;
   154     jack_nframes_t capture_frame_latency;
   155     jack_nframes_t playback_frame_latency;
   157     freebob_handle_t fb_handle;
   160 #ifdef FREEBOB_DRIVER_WITH_MIDI   166     snd_midi_event_t *parser;
   167     snd_seq_t *seq_handle;
   171 typedef struct _freebob_driver_midi_handle
   173     freebob_device_t *dev;
   176     snd_seq_t *seq_handle;
   178     pthread_t queue_thread;
   179     pthread_t dequeue_thread;
   180     int queue_thread_realtime;
   181     int queue_thread_priority;
   186     freebob_midi_port_t **input_ports;
   187     freebob_midi_port_t **output_ports;
   189     freebob_midi_port_t **input_stream_port_map;
   190     int *output_port_stream_map;
   192 freebob_driver_midi_handle_t;
   203     jack_nframes_t  sample_rate;
   204     jack_nframes_t  period_size;
   205     unsigned long   wait_time;
   207     jack_time_t wait_last;
   208     jack_time_t wait_next;
   211     jack_client_t  *client;
   222     freebob_device_t *dev;
   227     unsigned long  playback_nchannels;
   228     unsigned long  capture_nchannels;
   229     unsigned long  playback_nchannels_audio;
   230     unsigned long  capture_nchannels_audio;
   232     jack_nframes_t  playback_frame_latency;
   233     jack_nframes_t  capture_frame_latency;
   235     freebob_device_info_t device_info;
   236     freebob_options_t device_options;
   238 #ifdef FREEBOB_DRIVER_WITH_MIDI   239     freebob_driver_midi_handle_t *midi_handle;