161 lines
5.1 KiB
C
161 lines
5.1 KiB
C
|
|
/*
|
|
Copyright (C) 2003 Robert Ham <rah@bash.sh>
|
|
Copyright (C) 2005 Torben Hohn <torbenh@gmx.de>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#ifndef __NETJACK_H__
|
|
#define __NETJACK_H__
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <jack/types.h>
|
|
#include <jack/jack.h>
|
|
#include <jack/transport.h>
|
|
#include "jack/jslist.h"
|
|
|
|
#if HAVE_CELT
|
|
#include <celt/celt.h>
|
|
#endif
|
|
|
|
#if HAVE_OPUS
|
|
#include <opus/opus.h>
|
|
#include <opus/opus_custom.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
struct _packet_cache;
|
|
|
|
typedef struct _netjack_driver_state netjack_driver_state_t;
|
|
|
|
struct _netjack_driver_state {
|
|
jack_nframes_t net_period_up;
|
|
jack_nframes_t net_period_down;
|
|
|
|
jack_nframes_t sample_rate;
|
|
jack_nframes_t bitdepth;
|
|
jack_nframes_t period_size;
|
|
jack_time_t period_usecs;
|
|
int dont_htonl_floats;
|
|
int always_deadline;
|
|
|
|
jack_nframes_t codec_latency;
|
|
|
|
unsigned int listen_port;
|
|
|
|
unsigned int capture_channels;
|
|
unsigned int playback_channels;
|
|
unsigned int capture_channels_audio;
|
|
unsigned int playback_channels_audio;
|
|
unsigned int capture_channels_midi;
|
|
unsigned int playback_channels_midi;
|
|
|
|
JSList *capture_ports;
|
|
JSList *playback_ports;
|
|
JSList *playback_srcs;
|
|
JSList *capture_srcs;
|
|
|
|
jack_client_t *client;
|
|
|
|
#ifdef WIN32
|
|
SOCKET sockfd;
|
|
SOCKET outsockfd;
|
|
#else
|
|
int sockfd;
|
|
int outsockfd;
|
|
#endif
|
|
|
|
struct sockaddr_in syncsource_address;
|
|
|
|
int reply_port;
|
|
int srcaddress_valid;
|
|
|
|
int sync_state;
|
|
unsigned int handle_transport_sync;
|
|
|
|
unsigned int *rx_buf;
|
|
unsigned int rx_bufsize;
|
|
//unsigned int tx_bufsize;
|
|
unsigned int mtu;
|
|
unsigned int latency;
|
|
unsigned int redundancy;
|
|
|
|
jack_nframes_t expected_framecnt;
|
|
int expected_framecnt_valid;
|
|
unsigned int num_lost_packets;
|
|
jack_time_t next_deadline;
|
|
jack_time_t deadline_offset;
|
|
int next_deadline_valid;
|
|
int packet_data_valid;
|
|
int resync_threshold;
|
|
int running_free;
|
|
int deadline_goodness;
|
|
jack_time_t time_to_deadline;
|
|
unsigned int use_autoconfig;
|
|
unsigned int resample_factor;
|
|
unsigned int resample_factor_up;
|
|
int jitter_val;
|
|
struct _packet_cache * packcache;
|
|
#if HAVE_CELT
|
|
CELTMode *celt_mode;
|
|
#endif
|
|
#if HAVE_OPUS
|
|
OpusCustomMode* opus_mode;
|
|
#endif
|
|
};
|
|
|
|
int netjack_wait( netjack_driver_state_t *netj );
|
|
void netjack_send_silence( netjack_driver_state_t *netj, int syncstate );
|
|
void netjack_read( netjack_driver_state_t *netj, jack_nframes_t nframes ) ;
|
|
void netjack_write( netjack_driver_state_t *netj, jack_nframes_t nframes, int syncstate );
|
|
void netjack_attach( netjack_driver_state_t *netj );
|
|
void netjack_detach( netjack_driver_state_t *netj );
|
|
|
|
netjack_driver_state_t *netjack_init (netjack_driver_state_t *netj,
|
|
jack_client_t * client,
|
|
const char *name,
|
|
unsigned int capture_ports,
|
|
unsigned int playback_ports,
|
|
unsigned int capture_ports_midi,
|
|
unsigned int playback_ports_midi,
|
|
jack_nframes_t sample_rate,
|
|
jack_nframes_t period_size,
|
|
unsigned int listen_port,
|
|
unsigned int transport_sync,
|
|
unsigned int resample_factor,
|
|
unsigned int resample_factor_up,
|
|
unsigned int bitdepth,
|
|
unsigned int use_autoconfig,
|
|
unsigned int latency,
|
|
unsigned int redundancy,
|
|
int dont_htonl_floats,
|
|
int always_deadline,
|
|
int jitter_val );
|
|
|
|
void netjack_release( netjack_driver_state_t *netj );
|
|
int netjack_startup( netjack_driver_state_t *netj );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|