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