git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2846 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
@@ -28,9 +28,6 @@ namespace Jack | |||||
{ | { | ||||
jack_log ( "JackNetAdapter::JackNetAdapter" ); | jack_log ( "JackNetAdapter::JackNetAdapter" ); | ||||
if ( SocketAPIInit() < 0 ) | |||||
jack_error ( "Can't init Socket API, exiting..." ); | |||||
//global parametering | //global parametering | ||||
//we can't call JackNetSlaveInterface constructor with some parameters before | //we can't call JackNetSlaveInterface constructor with some parameters before | ||||
//because we don't have full parametering right now | //because we don't have full parametering right now | ||||
@@ -165,6 +162,7 @@ namespace Jack | |||||
} | } | ||||
break; | break; | ||||
// Stop when the thread cycle is finished | // Stop when the thread cycle is finished | ||||
case JackThread::kRunning: | case JackThread::kRunning: | ||||
if ( fThread.Stop() < 0 ) | if ( fThread.Stop() < 0 ) | ||||
{ | { | ||||
@@ -172,6 +170,7 @@ namespace Jack | |||||
return -1; | return -1; | ||||
} | } | ||||
break; | break; | ||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -268,11 +267,13 @@ namespace Jack | |||||
jack_transport_stop ( fJackClient ); | jack_transport_stop ( fJackClient ); | ||||
jack_info ( "NetMaster : transport stops." ); | jack_info ( "NetMaster : transport stops." ); | ||||
break; | break; | ||||
case JackTransportStarting : | case JackTransportStarting : | ||||
jack_transport_reposition ( fJackClient, &fSendTransportData.fPosition ); | jack_transport_reposition ( fJackClient, &fSendTransportData.fPosition ); | ||||
jack_transport_start ( fJackClient ); | jack_transport_start ( fJackClient ); | ||||
jack_info ( "NetMaster : transport starts." ); | jack_info ( "NetMaster : transport starts." ); | ||||
break; | break; | ||||
case JackTransportRolling : | case JackTransportRolling : | ||||
//TODO , we need to : | //TODO , we need to : | ||||
// - find a way to call TransportEngine->SetNetworkSync() | // - find a way to call TransportEngine->SetNetworkSync() | ||||
@@ -405,6 +406,7 @@ namespace Jack | |||||
if ( fCaptureRingBuffer[port_index]->WriteResample ( fSoftCaptureBuffer[port_index], fAdaptedBufferSize ) < fAdaptedBufferSize ) | if ( fCaptureRingBuffer[port_index]->WriteResample ( fSoftCaptureBuffer[port_index], fAdaptedBufferSize ) < fAdaptedBufferSize ) | ||||
failure = true; | failure = true; | ||||
} | } | ||||
//and output data, | //and output data, | ||||
for ( port_index = 0; port_index < fPlaybackChannels; port_index++ ) | for ( port_index = 0; port_index < fPlaybackChannels; port_index++ ) | ||||
{ | { | ||||
@@ -529,15 +531,21 @@ extern "C" | |||||
Jack::JackAudioAdapter* adapter; | Jack::JackAudioAdapter* adapter; | ||||
jack_nframes_t buffer_size = jack_get_buffer_size ( jack_client ); | jack_nframes_t buffer_size = jack_get_buffer_size ( jack_client ); | ||||
jack_nframes_t sample_rate = jack_get_sample_rate ( jack_client ); | jack_nframes_t sample_rate = jack_get_sample_rate ( jack_client ); | ||||
try { | |||||
adapter = new Jack::JackAudioAdapter ( jack_client, new Jack::JackNetAdapter ( jack_client, buffer_size, sample_rate, params ) ); | |||||
assert ( adapter ); | |||||
adapter = new Jack::JackAudioAdapter ( jack_client, new Jack::JackNetAdapter ( jack_client, buffer_size, sample_rate, params ) ); | |||||
assert ( adapter ); | |||||
if ( adapter->Open() == 0 ) | |||||
return 0; | |||||
else | |||||
{ | |||||
delete adapter; | |||||
if ( adapter->Open() == 0 ) | |||||
return 0; | |||||
else | |||||
{ | |||||
delete adapter; | |||||
return 1; | |||||
} | |||||
} catch (...) { | |||||
return 1; | return 1; | ||||
} | } | ||||
} | } | ||||
@@ -152,9 +152,11 @@ namespace Jack | |||||
case 's' : | case 's' : | ||||
plot_name += string ( "_slow" ); | plot_name += string ( "_slow" ); | ||||
break; | break; | ||||
case 'n' : | case 'n' : | ||||
plot_name += string ( "_normal" ); | plot_name += string ( "_normal" ); | ||||
break; | break; | ||||
case 'f' : | case 'f' : | ||||
plot_name += string ( "_fast" ); | plot_name += string ( "_fast" ); | ||||
break; | break; | ||||
@@ -372,11 +374,13 @@ namespace Jack | |||||
fEngineControl->fTransport.SetCommand ( TransportCommandStop ); | fEngineControl->fTransport.SetCommand ( TransportCommandStop ); | ||||
jack_info ( "Master stops transport." ); | jack_info ( "Master stops transport." ); | ||||
break; | break; | ||||
case JackTransportStarting : | case JackTransportStarting : | ||||
fEngineControl->fTransport.RequestNewPos ( &fSendTransportData.fPosition ); | fEngineControl->fTransport.RequestNewPos ( &fSendTransportData.fPosition ); | ||||
fEngineControl->fTransport.SetCommand ( TransportCommandStart ); | fEngineControl->fTransport.SetCommand ( TransportCommandStart ); | ||||
jack_info ( "Master starts transport." ); | jack_info ( "Master starts transport." ); | ||||
break; | break; | ||||
case JackTransportRolling : | case JackTransportRolling : | ||||
fEngineControl->fTransport.SetState ( JackTransportRolling ); | fEngineControl->fTransport.SetState ( JackTransportRolling ); | ||||
jack_info ( "Master is rolling." ); | jack_info ( "Master is rolling." ); | ||||
@@ -638,11 +642,6 @@ namespace Jack | |||||
EXPORT Jack::JackDriverClientInterface* driver_initialize ( Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params ) | EXPORT Jack::JackDriverClientInterface* driver_initialize ( Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params ) | ||||
{ | { | ||||
if ( SocketAPIInit() < 0 ) | |||||
{ | |||||
jack_error ( "Can't init Socket API, exiting..." ); | |||||
return NULL; | |||||
} | |||||
char multicast_ip[16]; | char multicast_ip[16]; | ||||
strcpy ( multicast_ip, DEFAULT_MULTICAST_IP ); | strcpy ( multicast_ip, DEFAULT_MULTICAST_IP ); | ||||
char name[JACK_CLIENT_NAME_SIZE]; | char name[JACK_CLIENT_NAME_SIZE]; | ||||
@@ -706,15 +705,23 @@ namespace Jack | |||||
} | } | ||||
} | } | ||||
Jack::JackDriverClientInterface* driver = new Jack::JackWaitThreadedDriver ( | |||||
new Jack::JackNetDriver ( "system", "net_pcm", engine, table, multicast_ip, udp_port, mtu, | |||||
midi_input_ports, midi_output_ports, name, transport_sync, network_mode ) ); | |||||
if ( driver->Open ( period_size, sample_rate, 1, 1, audio_capture_ports, audio_playback_ports, | |||||
monitor, "from_master_", "to_master_", 0, 0 ) == 0 ) | |||||
return driver; | |||||
delete driver; | |||||
return NULL; | |||||
try { | |||||
Jack::JackDriverClientInterface* driver = | |||||
new Jack::JackWaitThreadedDriver( | |||||
new Jack::JackNetDriver("system", "net_pcm", engine, table, multicast_ip, udp_port, mtu, | |||||
midi_input_ports, midi_output_ports, name, transport_sync, network_mode)); | |||||
if (driver->Open (period_size, sample_rate, 1, 1, audio_capture_ports, audio_playback_ports, | |||||
monitor, "from_master_", "to_master_", 0, 0) == 0) { | |||||
return driver; | |||||
} else { | |||||
delete driver; | |||||
return NULL; | |||||
} | |||||
} catch (...) { | |||||
return NULL; | |||||
} | |||||
} | } | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -719,7 +719,7 @@ namespace Jack | |||||
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; | fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; | ||||
fNetAudioCaptureBuffer->RenderToJackPorts ( rx_head->fSubCycle ); | fNetAudioCaptureBuffer->RenderToJackPorts ( rx_head->fSubCycle ); | ||||
break; | break; | ||||
case 's': //sync | case 's': //sync | ||||
jack_info ( "NetSlave : overloaded, skipping receive." ); | jack_info ( "NetSlave : overloaded, skipping receive." ); | ||||
return 0; | return 0; | ||||
@@ -147,11 +147,23 @@ namespace Jack | |||||
public: | public: | ||||
JackNetSlaveInterface() : JackNetInterface() | JackNetSlaveInterface() : JackNetInterface() | ||||
{ | { | ||||
fSlaveCounter++; | |||||
//open Socket API with the first slave | |||||
if (fSlaveCounter++ == 0) { | |||||
if (SocketAPIInit() < 0) { | |||||
jack_error ( "Can't init Socket API, exiting..." ); | |||||
throw -1; | |||||
} | |||||
} | |||||
} | } | ||||
JackNetSlaveInterface ( const char* ip, int port ) : JackNetInterface ( ip, port ) | JackNetSlaveInterface ( const char* ip, int port ) : JackNetInterface ( ip, port ) | ||||
{ | { | ||||
fSlaveCounter++; | |||||
//open Socket API with the first slave | |||||
if (fSlaveCounter++ == 0) { | |||||
if (SocketAPIInit() < 0) { | |||||
jack_error ( "Can't init Socket API, exiting..." ); | |||||
throw -1; | |||||
} | |||||
} | |||||
} | } | ||||
~JackNetSlaveInterface() | ~JackNetSlaveInterface() | ||||
{ | { | ||||
@@ -164,7 +176,9 @@ namespace Jack | |||||
#define DEFAULT_MULTICAST_IP "225.3.19.154" | #define DEFAULT_MULTICAST_IP "225.3.19.154" | ||||
#define DEFAULT_PORT 19000 | #define DEFAULT_PORT 19000 | ||||
#define SLAVE_SETUP_RETRY 5 | #define SLAVE_SETUP_RETRY 5 | ||||
#define MASTER_INIT_TIMEOUT 1000000 // in usec | #define MASTER_INIT_TIMEOUT 1000000 // in usec | ||||
#define SLAVE_INIT_TIMEOUT 2000000 // in usec | #define SLAVE_INIT_TIMEOUT 2000000 // in usec | ||||