git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4255 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.8
@@ -30,44 +30,48 @@ namespace Jack | |||
\brief Net adapter. | |||
*/ | |||
class JackNetAdapter : public JackAudioAdapterInterface, public JackNetSlaveInterface, public JackRunnableInterface | |||
class JackNetAdapter : public JackAudioAdapterInterface, | |||
public JackNetSlaveInterface, | |||
public JackRunnableInterface | |||
{ | |||
private: | |||
//jack data | |||
jack_client_t* fJackClient; | |||
//transport data | |||
int fLastTransportState; | |||
int fLastTimebaseMaster; | |||
//sample buffers | |||
sample_t** fSoftCaptureBuffer; | |||
sample_t** fSoftPlaybackBuffer; | |||
private: | |||
//adapter thread | |||
JackThread fThread; | |||
//jack data | |||
jack_client_t* fJackClient; | |||
//transport | |||
void EncodeTransportData(); | |||
void DecodeTransportData(); | |||
//transport data | |||
int fLastTransportState; | |||
int fLastTimebaseMaster; | |||
public: | |||
//sample buffers | |||
sample_t** fSoftCaptureBuffer; | |||
sample_t** fSoftPlaybackBuffer; | |||
JackNetAdapter ( jack_client_t* jack_client, jack_nframes_t buffer_size, jack_nframes_t sample_rate, const JSList* params ); | |||
~JackNetAdapter(); | |||
//adapter thread | |||
JackThread fThread; | |||
int Open(); | |||
int Close(); | |||
//transport | |||
void EncodeTransportData(); | |||
void DecodeTransportData(); | |||
int SetBufferSize ( jack_nframes_t buffer_size ); | |||
public: | |||
bool Init(); | |||
bool Execute(); | |||
JackNetAdapter(jack_client_t* jack_client, jack_nframes_t buffer_size, jack_nframes_t sample_rate, const JSList* params); | |||
~JackNetAdapter(); | |||
int Read(); | |||
int Write(); | |||
int Open(); | |||
int Close(); | |||
int Process(); | |||
int SetBufferSize(jack_nframes_t buffer_size); | |||
bool Init(); | |||
bool Execute(); | |||
int Read(); | |||
int Write(); | |||
int Process(); | |||
}; | |||
} | |||
@@ -622,32 +622,32 @@ namespace Jack | |||
i++; | |||
strcpy ( desc->params[i].name, "input_ports" ); | |||
desc->params[i].character = 'C'; | |||
desc->params[i].type = JackDriverParamUInt; | |||
desc->params[i].value.ui = 2; | |||
desc->params[i].type = JackDriverParamInt; | |||
desc->params[i].value.i = -1; | |||
strcpy ( desc->params[i].short_desc, "Number of audio input ports" ); | |||
strcpy ( desc->params[i].long_desc, "Number of audio input ports. If -1, audio physical input from the master"); | |||
i++; | |||
strcpy ( desc->params[i].name, "output_ports" ); | |||
desc->params[i].character = 'P'; | |||
desc->params[i].type = JackDriverParamUInt; | |||
desc->params[i].value.ui = 2; | |||
desc->params[i].type = JackDriverParamInt; | |||
desc->params[i].value.i = -1; | |||
strcpy ( desc->params[i].short_desc, "Number of audio output ports" ); | |||
strcpy ( desc->params[i].long_desc, "Number of audio output ports. If -1, audio physical output from the master"); | |||
i++; | |||
strcpy ( desc->params[i].name, "midi_in_ports" ); | |||
desc->params[i].character = 'i'; | |||
desc->params[i].type = JackDriverParamUInt; | |||
desc->params[i].value.ui = 0; | |||
desc->params[i].type = JackDriverParamInt; | |||
desc->params[i].value.i = 0; | |||
strcpy ( desc->params[i].short_desc, "Number of midi input ports" ); | |||
strcpy ( desc->params[i].long_desc, desc->params[i].short_desc ); | |||
i++; | |||
strcpy ( desc->params[i].name, "midi_out_ports" ); | |||
desc->params[i].character = 'o'; | |||
desc->params[i].type = JackDriverParamUInt; | |||
desc->params[i].value.ui = 0; | |||
desc->params[i].type = JackDriverParamInt; | |||
desc->params[i].value.i = 0; | |||
strcpy ( desc->params[i].short_desc, "Number of midi output ports" ); | |||
strcpy ( desc->params[i].long_desc, desc->params[i].short_desc ); | |||
@@ -36,15 +36,17 @@ namespace Jack | |||
class JackNetDriver : public JackAudioDriver, public JackNetSlaveInterface | |||
{ | |||
private: | |||
//jack data | |||
jack_port_id_t* fMidiCapturePortList; | |||
jack_port_id_t* fMidiPlaybackPortList; | |||
//transport | |||
int fLastTransportState; | |||
int fLastTimebaseMaster; | |||
//monitoring | |||
#ifdef JACK_MONITOR | |||
JackGnuPlotMonitor<float>* fNetTimeMon; | |||
@@ -53,7 +55,7 @@ namespace Jack | |||
bool Initialize(); | |||
void FreeAll(); | |||
int AllocPorts(); | |||
int FreePorts(); | |||
@@ -65,6 +67,7 @@ namespace Jack | |||
JackMidiBuffer* GetMidiOutputBuffer ( int port_index ); | |||
public: | |||
JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, | |||
const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports, | |||
char* net_name, uint transport_sync, char network_master_mode ); | |||
@@ -31,7 +31,9 @@ namespace Jack | |||
class SERVER_EXPORT JackNetInterface | |||
{ | |||
protected: | |||
session_params_t fParams; | |||
JackNetSocket fSocket; | |||
char fMulticastIP[32]; | |||
@@ -40,7 +42,7 @@ namespace Jack | |||
//headers | |||
packet_header_t fTxHeader; | |||
packet_header_t fRxHeader; | |||
// transport | |||
net_transport_data_t fSendTransportData; | |||
net_transport_data_t fReturnTransportData; | |||
@@ -93,7 +95,9 @@ namespace Jack | |||
JackNetInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ); | |||
public: | |||
virtual ~JackNetInterface(); | |||
}; | |||
/** | |||
@@ -102,32 +106,35 @@ namespace Jack | |||
class SERVER_EXPORT JackNetMasterInterface : public JackNetInterface | |||
{ | |||
protected: | |||
bool fRunning; | |||
int fCycleOffset; | |||
bool Init(); | |||
int SetRxTimeout(); | |||
void SetParams(); | |||
void Exit(); | |||
int SyncRecv(); | |||
int SyncSend(); | |||
int DataRecv(); | |||
int DataSend(); | |||
//sync packet | |||
void EncodeSyncPacket(); | |||
void DecodeSyncPacket(); | |||
int Send ( size_t size, int flags ); | |||
int Recv ( size_t size, int flags ); | |||
bool IsSynched(); | |||
public: | |||
JackNetMasterInterface() : JackNetInterface(), fRunning(false), fCycleOffset(0) | |||
{} | |||
JackNetMasterInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ) | |||
@@ -143,25 +150,26 @@ namespace Jack | |||
class SERVER_EXPORT JackNetSlaveInterface : public JackNetInterface | |||
{ | |||
protected: | |||
static uint fSlaveCounter; | |||
bool Init(); | |||
bool InitConnection(); | |||
bool InitRendering(); | |||
net_status_t SendAvailableToMaster(); | |||
net_status_t SendStartToMaster(); | |||
void SetParams(); | |||
int SyncRecv(); | |||
int SyncSend(); | |||
int DataRecv(); | |||
int DataSend(); | |||
//sync packet | |||
void EncodeSyncPacket(); | |||
void DecodeSyncPacket(); | |||
@@ -170,6 +178,7 @@ namespace Jack | |||
int Send ( size_t size, int flags ); | |||
public: | |||
JackNetSlaveInterface() : JackNetInterface() | |||
{ | |||
//open Socket API with the first slave | |||
@@ -182,6 +191,7 @@ namespace Jack | |||
} | |||
} | |||
} | |||
JackNetSlaveInterface ( const char* ip, int port ) : JackNetInterface ( ip, port ) | |||
{ | |||
//open Socket API with the first slave | |||
@@ -194,6 +204,7 @@ namespace Jack | |||
} | |||
} | |||
} | |||
~JackNetSlaveInterface() | |||
{ | |||
//close Socket API with the last slave | |||
@@ -40,7 +40,6 @@ namespace Jack | |||
private: | |||
private: | |||
static int SetProcess ( jack_nframes_t nframes, void* arg ); | |||
static int SetBufferSize (jack_nframes_t nframes, void* arg); | |||
static void SetTimebaseCallback ( jack_transport_state_t state, jack_nframes_t nframes, jack_position_t* pos, int new_pos, void* arg ); | |||
@@ -77,6 +76,7 @@ namespace Jack | |||
void ConnectPorts(); | |||
public: | |||
JackNetMaster ( JackNetSocket& socket, session_params_t& params, const char* multicast_ip); | |||
~JackNetMaster (); | |||
@@ -40,6 +40,7 @@ namespace Jack | |||
class SERVER_EXPORT JackNetUnixSocket | |||
{ | |||
private: | |||
int fSockfd; | |||
int fPort; | |||
int fTimeOut; | |||
@@ -50,7 +51,9 @@ namespace Jack | |||
int WaitRead(); | |||
int WaitWrite(); | |||
#endif | |||
public: | |||
JackNetUnixSocket(); | |||
JackNetUnixSocket ( const char* ip, int port ); | |||
JackNetUnixSocket ( const JackNetUnixSocket& ); | |||