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;