00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __NETJACK_H__
00022 #define __NETJACK_H__
00023
00024 #include <unistd.h>
00025
00026 #include <jack/types.h>
00027
00028 #include <jack/jack.h>
00029 #include <jack/transport.h>
00030
00031 #include "jack/jslist.h"
00032
00033
00034
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039
00040 typedef struct _netjack_driver_state netjack_driver_state_t;
00041
00042 struct _netjack_driver_state {
00043 jack_nframes_t net_period_up;
00044 jack_nframes_t net_period_down;
00045
00046 jack_nframes_t sample_rate;
00047 jack_nframes_t bitdepth;
00048 jack_nframes_t period_size;
00049 jack_time_t period_usecs;
00050 int dont_htonl_floats;
00051 int always_deadline;
00052
00053 jack_nframes_t codec_latency;
00054
00055 unsigned int listen_port;
00056
00057 unsigned int capture_channels;
00058 unsigned int playback_channels;
00059 unsigned int capture_channels_audio;
00060 unsigned int playback_channels_audio;
00061 unsigned int capture_channels_midi;
00062 unsigned int playback_channels_midi;
00063
00064 JSList *capture_ports;
00065 JSList *playback_ports;
00066 JSList *playback_srcs;
00067 JSList *capture_srcs;
00068
00069 jack_client_t *client;
00070
00071 #ifdef WIN32
00072 SOCKET sockfd;
00073 SOCKET outsockfd;
00074 #else
00075 int sockfd;
00076 int outsockfd;
00077 #endif
00078
00079 struct sockaddr_in syncsource_address;
00080
00081 int reply_port;
00082 int srcaddress_valid;
00083
00084 int sync_state;
00085 unsigned int handle_transport_sync;
00086
00087 unsigned int *rx_buf;
00088 unsigned int *pkt_buf;
00089 unsigned int rx_bufsize;
00090
00091 unsigned int mtu;
00092 unsigned int latency;
00093 unsigned int redundancy;
00094
00095 jack_nframes_t expected_framecnt;
00096 int expected_framecnt_valid;
00097 unsigned int num_lost_packets;
00098 jack_time_t next_deadline;
00099 jack_time_t deadline_offset;
00100 int next_deadline_valid;
00101 int packet_data_valid;
00102 int resync_threshold;
00103 int running_free;
00104 int deadline_goodness;
00105 jack_time_t time_to_deadline;
00106 unsigned int use_autoconfig;
00107 unsigned int resample_factor;
00108 unsigned int resample_factor_up;
00109 int jitter_val;
00110 };
00111
00112 int netjack_wait( netjack_driver_state_t *netj );
00113 void netjack_send_silence( netjack_driver_state_t *netj, int syncstate );
00114 void netjack_read( netjack_driver_state_t *netj, jack_nframes_t nframes ) ;
00115 void netjack_write( netjack_driver_state_t *netj, jack_nframes_t nframes, int syncstate );
00116 void netjack_attach( netjack_driver_state_t *netj );
00117 void netjack_detach( netjack_driver_state_t *netj );
00118
00119 netjack_driver_state_t *netjack_init (netjack_driver_state_t *netj,
00120 jack_client_t * client,
00121 const char *name,
00122 unsigned int capture_ports,
00123 unsigned int playback_ports,
00124 unsigned int capture_ports_midi,
00125 unsigned int playback_ports_midi,
00126 jack_nframes_t sample_rate,
00127 jack_nframes_t period_size,
00128 unsigned int listen_port,
00129 unsigned int transport_sync,
00130 unsigned int resample_factor,
00131 unsigned int resample_factor_up,
00132 unsigned int bitdepth,
00133 unsigned int use_autoconfig,
00134 unsigned int latency,
00135 unsigned int redundancy,
00136 int dont_htonl_floats,
00137 int always_deadline,
00138 int jitter_val );
00139
00140 void netjack_release( netjack_driver_state_t *netj );
00141 int netjack_startup( netjack_driver_state_t *netj );
00142
00143 #ifdef __cplusplus
00144 }
00145 #endif
00146
00147 #endif