7 #ifndef HAS_LIVES_JACK_H
8 #define HAS_LIVES_JACK_H
15 #include <jack/jack.h>
16 #include <jack/transport.h>
17 #include <jack/control.h>
19 boolean lives_jack_init(
void);
20 boolean lives_jack_poll(
void);
21 void lives_jack_end(
void);
23 int lives_start_ready_callback(jack_transport_state_t state, jack_position_t *pos,
void *arg);
25 void jack_pb_start(
double pbtime);
26 void jack_pb_stop(
void);
34 #define JACK_DRIVER_NAME "alsa"
38 #define JACK_DRIVER_NAME "oss"
41 #define JACK_DRIVER_NAME "coreaudio"
45 #define JACK_MAX_OUTPUT_PORTS 10
46 #define JACK_MAX_INPUT_PORTS 10
48 #define ERR_PORT_NOT_FOUND 10
50 #define JACK_DEFAULT_SERVER_NAME "default"
52 typedef jack_nframes_t nframes_t;
57 #define JackTClosed 1024
58 #define JackTReset 1025
59 #define JackTStopped 1026
64 volatile int sample_in_rate;
65 uint64_t num_input_channels;
66 uint64_t num_output_channels;
67 uint64_t bytes_per_channel;
71 jack_port_t *output_port[JACK_MAX_OUTPUT_PORTS];
72 jack_port_t *input_port[JACK_MAX_INPUT_PORTS];
73 jack_client_t *client;
75 char **jack_port_name;
76 unsigned int jack_port_name_count;
77 uint64_t jack_port_flags;
81 jack_transport_state_t state;
83 float volume[JACK_MAX_OUTPUT_PORTS];
91 volatile off_t real_seek_pos;
94 boolean reverse_endian;
102 boolean play_when_stopped;
104 volatile jack_nframes_t nframes_start;
105 volatile uint64_t frames_written;
107 int out_chans_available;
108 int in_chans_available;
120 volatile float jack_pulse[1024];
123 volatile int read_abuf;
125 volatile int astream_fd;
127 volatile float abs_maxvol_heard;
130 #define JACK_MAX_OUTDEVICES 10
131 #define JACK_MAX_INDEVICES 10
135 jack_driver_t *jack_get_driver(
int dev_idx,
boolean is_output);
137 int jack_audio_init(
void);
138 int jack_audio_read_init(
void);
140 boolean jack_create_client_writer(jack_driver_t *);
141 boolean jack_create_client_reader(jack_driver_t *);
143 boolean jack_write_driver_activate(jack_driver_t *);
144 boolean jack_read_driver_activate(jack_driver_t *,
boolean autocon);
146 void jack_close_device(jack_driver_t *);
148 boolean jack_try_reconnect(
void);
150 void jack_aud_pb_ready(
int fileno);
151 void jack_pb_end(
void);
153 size_t jack_flush_read_data(
size_t rbytes,
void *data);
157 void jack_time_reset(jack_driver_t *, int64_t offset);
158 ticks_t lives_jack_get_time(jack_driver_t *);
159 boolean jack_audio_seek_frame(jack_driver_t *,
double frame);
160 int64_t jack_audio_seek_bytes(jack_driver_t *, int64_t bytes,
lives_clip_t *sfile);
161 size_t jack_get_buffsize(jack_driver_t *);
163 void jack_get_rec_avals(jack_driver_t *);
165 ticks_t jack_transport_get_current_ticks(
void);
167 double lives_jack_get_pos(jack_driver_t *);