git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4255 0c269be4-1314-0410-8aa9-9f06e86f4224
This commit is contained in:
sletz 2011-04-02 11:10:07 +00:00
parent 010947119f
commit 47cc588e41
6 changed files with 73 additions and 52 deletions

View File

@ -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();
};
}

View File

@ -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 );

View File

@ -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 );

View File

@ -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

View File

@ -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 ();

View File

@ -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& );