module-jack: add midi support.

Move streams in separate struct, refactor and reuse some code.

Add midi ports and convert to/from pw and jack midi.
This commit is contained in:
Wim Taymans 2023-05-08 17:06:17 +02:00
parent 318d82e14f
commit 67df9d2251
2 changed files with 398 additions and 378 deletions

File diff suppressed because it is too large Load diff

View file

@ -15,6 +15,7 @@ extern "C" {
#include <jack/jack.h> #include <jack/jack.h>
#include <jack/transport.h> #include <jack/transport.h>
#include <jack/midiport.h>
struct weakjack { struct weakjack {
jack_nframes_t (*cycle_wait) (jack_client_t* client); jack_nframes_t (*cycle_wait) (jack_client_t* client);
@ -80,6 +81,16 @@ struct weakjack {
JackInfoShutdownCallback shutdown_callback, void *arg); JackInfoShutdownCallback shutdown_callback, void *arg);
int (*set_latency_callback) (jack_client_t *client, int (*set_latency_callback) (jack_client_t *client,
JackLatencyCallback latency_callback, void *arg); JackLatencyCallback latency_callback, void *arg);
void (*midi_clear_buffer) (void *port_buffer);
int (*midi_event_write) (void *port_buffer,
jack_nframes_t time,
const jack_midi_data_t *data,
size_t data_size);
uint32_t (*midi_get_event_count) (void* port_buffer);
int (*midi_event_get) (jack_midi_event_t *event, void *port_buffer,
uint32_t event_index);
}; };
@ -132,6 +143,11 @@ static inline int weakjack_load_by_path(struct weakjack *jack, const char *path)
LOAD_SYM(set_xrun_callback); LOAD_SYM(set_xrun_callback);
LOAD_SYM(on_info_shutdown); LOAD_SYM(on_info_shutdown);
LOAD_SYM(set_latency_callback); LOAD_SYM(set_latency_callback);
LOAD_SYM(midi_clear_buffer);
LOAD_SYM(midi_event_write);
LOAD_SYM(midi_get_event_count);
LOAD_SYM(midi_event_get);
#undef LOAD_SYM #undef LOAD_SYM
return 0; return 0;