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. | \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++; | i++; | ||||
strcpy ( desc->params[i].name, "input_ports" ); | strcpy ( desc->params[i].name, "input_ports" ); | ||||
desc->params[i].character = 'C'; | 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].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"); | strcpy ( desc->params[i].long_desc, "Number of audio input ports. If -1, audio physical input from the master"); | ||||
i++; | i++; | ||||
strcpy ( desc->params[i].name, "output_ports" ); | strcpy ( desc->params[i].name, "output_ports" ); | ||||
desc->params[i].character = 'P'; | 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].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"); | strcpy ( desc->params[i].long_desc, "Number of audio output ports. If -1, audio physical output from the master"); | ||||
i++; | i++; | ||||
strcpy ( desc->params[i].name, "midi_in_ports" ); | strcpy ( desc->params[i].name, "midi_in_ports" ); | ||||
desc->params[i].character = 'i'; | 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].short_desc, "Number of midi input ports" ); | ||||
strcpy ( desc->params[i].long_desc, desc->params[i].short_desc ); | strcpy ( desc->params[i].long_desc, desc->params[i].short_desc ); | ||||
i++; | i++; | ||||
strcpy ( desc->params[i].name, "midi_out_ports" ); | strcpy ( desc->params[i].name, "midi_out_ports" ); | ||||
desc->params[i].character = 'o'; | 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].short_desc, "Number of midi output ports" ); | ||||
strcpy ( desc->params[i].long_desc, desc->params[i].short_desc ); | strcpy ( desc->params[i].long_desc, desc->params[i].short_desc ); | ||||
@@ -36,15 +36,17 @@ namespace Jack | |||||
class JackNetDriver : public JackAudioDriver, public JackNetSlaveInterface | class JackNetDriver : public JackAudioDriver, public JackNetSlaveInterface | ||||
{ | { | ||||
private: | private: | ||||
//jack data | //jack data | ||||
jack_port_id_t* fMidiCapturePortList; | jack_port_id_t* fMidiCapturePortList; | ||||
jack_port_id_t* fMidiPlaybackPortList; | jack_port_id_t* fMidiPlaybackPortList; | ||||
//transport | //transport | ||||
int fLastTransportState; | int fLastTransportState; | ||||
int fLastTimebaseMaster; | int fLastTimebaseMaster; | ||||
//monitoring | //monitoring | ||||
#ifdef JACK_MONITOR | #ifdef JACK_MONITOR | ||||
JackGnuPlotMonitor<float>* fNetTimeMon; | JackGnuPlotMonitor<float>* fNetTimeMon; | ||||
@@ -53,7 +55,7 @@ namespace Jack | |||||
bool Initialize(); | bool Initialize(); | ||||
void FreeAll(); | void FreeAll(); | ||||
int AllocPorts(); | int AllocPorts(); | ||||
int FreePorts(); | int FreePorts(); | ||||
@@ -65,6 +67,7 @@ namespace Jack | |||||
JackMidiBuffer* GetMidiOutputBuffer ( int port_index ); | JackMidiBuffer* GetMidiOutputBuffer ( int port_index ); | ||||
public: | public: | ||||
JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, | 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, | 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 ); | char* net_name, uint transport_sync, char network_master_mode ); | ||||
@@ -31,7 +31,9 @@ namespace Jack | |||||
class SERVER_EXPORT JackNetInterface | class SERVER_EXPORT JackNetInterface | ||||
{ | { | ||||
protected: | protected: | ||||
session_params_t fParams; | session_params_t fParams; | ||||
JackNetSocket fSocket; | JackNetSocket fSocket; | ||||
char fMulticastIP[32]; | char fMulticastIP[32]; | ||||
@@ -40,7 +42,7 @@ namespace Jack | |||||
//headers | //headers | ||||
packet_header_t fTxHeader; | packet_header_t fTxHeader; | ||||
packet_header_t fRxHeader; | packet_header_t fRxHeader; | ||||
// transport | // transport | ||||
net_transport_data_t fSendTransportData; | net_transport_data_t fSendTransportData; | ||||
net_transport_data_t fReturnTransportData; | net_transport_data_t fReturnTransportData; | ||||
@@ -93,7 +95,9 @@ namespace Jack | |||||
JackNetInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ); | JackNetInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ); | ||||
public: | public: | ||||
virtual ~JackNetInterface(); | virtual ~JackNetInterface(); | ||||
}; | }; | ||||
/** | /** | ||||
@@ -102,32 +106,35 @@ namespace Jack | |||||
class SERVER_EXPORT JackNetMasterInterface : public JackNetInterface | class SERVER_EXPORT JackNetMasterInterface : public JackNetInterface | ||||
{ | { | ||||
protected: | protected: | ||||
bool fRunning; | bool fRunning; | ||||
int fCycleOffset; | int fCycleOffset; | ||||
bool Init(); | bool Init(); | ||||
int SetRxTimeout(); | int SetRxTimeout(); | ||||
void SetParams(); | void SetParams(); | ||||
void Exit(); | void Exit(); | ||||
int SyncRecv(); | int SyncRecv(); | ||||
int SyncSend(); | int SyncSend(); | ||||
int DataRecv(); | int DataRecv(); | ||||
int DataSend(); | int DataSend(); | ||||
//sync packet | //sync packet | ||||
void EncodeSyncPacket(); | void EncodeSyncPacket(); | ||||
void DecodeSyncPacket(); | void DecodeSyncPacket(); | ||||
int Send ( size_t size, int flags ); | int Send ( size_t size, int flags ); | ||||
int Recv ( size_t size, int flags ); | int Recv ( size_t size, int flags ); | ||||
bool IsSynched(); | bool IsSynched(); | ||||
public: | public: | ||||
JackNetMasterInterface() : JackNetInterface(), fRunning(false), fCycleOffset(0) | JackNetMasterInterface() : JackNetInterface(), fRunning(false), fCycleOffset(0) | ||||
{} | {} | ||||
JackNetMasterInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ) | JackNetMasterInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ) | ||||
@@ -143,25 +150,26 @@ namespace Jack | |||||
class SERVER_EXPORT JackNetSlaveInterface : public JackNetInterface | class SERVER_EXPORT JackNetSlaveInterface : public JackNetInterface | ||||
{ | { | ||||
protected: | protected: | ||||
static uint fSlaveCounter; | static uint fSlaveCounter; | ||||
bool Init(); | bool Init(); | ||||
bool InitConnection(); | bool InitConnection(); | ||||
bool InitRendering(); | bool InitRendering(); | ||||
net_status_t SendAvailableToMaster(); | net_status_t SendAvailableToMaster(); | ||||
net_status_t SendStartToMaster(); | net_status_t SendStartToMaster(); | ||||
void SetParams(); | void SetParams(); | ||||
int SyncRecv(); | int SyncRecv(); | ||||
int SyncSend(); | int SyncSend(); | ||||
int DataRecv(); | int DataRecv(); | ||||
int DataSend(); | int DataSend(); | ||||
//sync packet | //sync packet | ||||
void EncodeSyncPacket(); | void EncodeSyncPacket(); | ||||
void DecodeSyncPacket(); | void DecodeSyncPacket(); | ||||
@@ -170,6 +178,7 @@ namespace Jack | |||||
int Send ( size_t size, int flags ); | int Send ( size_t size, int flags ); | ||||
public: | public: | ||||
JackNetSlaveInterface() : JackNetInterface() | JackNetSlaveInterface() : JackNetInterface() | ||||
{ | { | ||||
//open Socket API with the first slave | //open Socket API with the first slave | ||||
@@ -182,6 +191,7 @@ namespace Jack | |||||
} | } | ||||
} | } | ||||
} | } | ||||
JackNetSlaveInterface ( const char* ip, int port ) : JackNetInterface ( ip, port ) | JackNetSlaveInterface ( const char* ip, int port ) : JackNetInterface ( ip, port ) | ||||
{ | { | ||||
//open Socket API with the first slave | //open Socket API with the first slave | ||||
@@ -194,6 +204,7 @@ namespace Jack | |||||
} | } | ||||
} | } | ||||
} | } | ||||
~JackNetSlaveInterface() | ~JackNetSlaveInterface() | ||||
{ | { | ||||
//close Socket API with the last slave | //close Socket API with the last slave | ||||
@@ -40,7 +40,6 @@ namespace Jack | |||||
private: | private: | ||||
private: | |||||
static int SetProcess ( jack_nframes_t nframes, void* arg ); | static int SetProcess ( jack_nframes_t nframes, void* arg ); | ||||
static int SetBufferSize (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 ); | 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(); | void ConnectPorts(); | ||||
public: | public: | ||||
JackNetMaster ( JackNetSocket& socket, session_params_t& params, const char* multicast_ip); | JackNetMaster ( JackNetSocket& socket, session_params_t& params, const char* multicast_ip); | ||||
~JackNetMaster (); | ~JackNetMaster (); | ||||
@@ -40,6 +40,7 @@ namespace Jack | |||||
class SERVER_EXPORT JackNetUnixSocket | class SERVER_EXPORT JackNetUnixSocket | ||||
{ | { | ||||
private: | private: | ||||
int fSockfd; | int fSockfd; | ||||
int fPort; | int fPort; | ||||
int fTimeOut; | int fTimeOut; | ||||
@@ -50,7 +51,9 @@ namespace Jack | |||||
int WaitRead(); | int WaitRead(); | ||||
int WaitWrite(); | int WaitWrite(); | ||||
#endif | #endif | ||||
public: | public: | ||||
JackNetUnixSocket(); | JackNetUnixSocket(); | ||||
JackNetUnixSocket ( const char* ip, int port ); | JackNetUnixSocket ( const char* ip, int port ); | ||||
JackNetUnixSocket ( const JackNetUnixSocket& ); | JackNetUnixSocket ( const JackNetUnixSocket& ); | ||||