27 #ifndef __JACK_NET_PACKET_H__
28 #define __JACK_NET_PACKET_H__
35 #include <jack/jack.h>
36 #include <jack/types.h>
37 #include <jack/jslist.h>
38 #include <jack/midiport.h>
42 #define CELT_MODE 1000 // Magic bitdepth value that indicates CELT compression
43 #define OPUS_MODE 999 // Magic bitdepth value that indicates OPUS compression
44 #define MASTER_FREEWHEELS 0x80000000
50 jack_nframes_t capture_channels_audio;
51 jack_nframes_t playback_channels_audio;
52 jack_nframes_t capture_channels_midi;
53 jack_nframes_t playback_channels_midi;
54 jack_nframes_t period_size;
55 jack_nframes_t sample_rate;
58 jack_nframes_t sync_state;
59 jack_nframes_t transport_frame;
60 jack_nframes_t transport_state;
63 jack_nframes_t framecnt;
64 jack_nframes_t latency;
66 jack_nframes_t reply_port;
68 jack_nframes_t fragment_nr;
86 jack_time_t recv_timestamp;
87 jack_nframes_t framecnt;
88 char * fragment_array;
98 struct sockaddr_in master_address;
99 int master_address_valid;
100 jack_nframes_t last_framecnt_retreived;
101 int last_framecnt_retreived_valid;
106 packet_cache *packet_cache_new(
int num_packets,
int pkt_size,
int mtu);
114 void cache_packet_set_framecnt(
cache_packet *pack, jack_nframes_t framecnt);
115 void cache_packet_add_fragment(
cache_packet *pack,
char *packet_buf,
int rcv_len);
118 void packet_cache_drain_socket(
packet_cache *pcache,
int sockfd );
119 void packet_cache_reset_master_address(
packet_cache *pcache );
120 float packet_cache_get_fill(
packet_cache *pcache, jack_nframes_t expected_framecnt );
121 int packet_cache_retreive_packet_pointer(
packet_cache *pcache, jack_nframes_t framecnt,
char **packet_buf,
int pkt_size, jack_time_t *timestamp );
122 int packet_cache_release_packet(
packet_cache *pcache, jack_nframes_t framecnt );
123 int packet_cache_get_next_available_framecnt(
packet_cache *pcache, jack_nframes_t expected_framecnt, jack_nframes_t *framecnt );
124 int packet_cache_get_highest_available_framecnt(
packet_cache *pcache, jack_nframes_t *framecnt );
125 int packet_cache_find_latency(
packet_cache *pcache, jack_nframes_t expected_framecnt, jack_nframes_t *framecnt );
129 int netjack_poll_deadline (
int sockfd, jack_time_t deadline);
130 void netjack_sendto(
int sockfd,
char *packet_buf,
int pkt_size,
int flags,
struct sockaddr *addr,
int addr_size,
int mtu);
131 int get_sample_size(
int bitdepth);
134 void render_payload_to_jack_ports(
int bitdepth,
void *packet_payload, jack_nframes_t net_period_down,
JSList *capture_ports,
JSList *capture_srcs, jack_nframes_t nframes,
int dont_htonl_floats );
135 void render_jack_ports_to_payload(
int bitdepth,
JSList *playback_ports,
JSList *playback_srcs, jack_nframes_t nframes,
void *packet_payload, jack_nframes_t net_period_up,
int dont_htonl_floats );
139 int netjack_poll(
int sockfd,
int timeout);
141 void decode_midi_buffer (uint32_t *buffer_uint32,
unsigned int buffer_size_uint32, jack_default_audio_sample_t* buf);
142 void encode_midi_buffer (uint32_t *buffer_uint32,
unsigned int buffer_size_uint32, jack_default_audio_sample_t* buf);