Browse Source

Add 'transport_sync' option to jacknetdriver (not active yet)

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2699 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
moret 17 years ago
parent
commit
068e599fcd
3 changed files with 25 additions and 8 deletions
  1. +19
    -3
      common/JackNetDriver.cpp
  2. +2
    -1
      common/JackNetDriver.h
  3. +4
    -4
      common/JackNetManager.cpp

+ 19
- 3
common/JackNetDriver.cpp View File

@@ -33,7 +33,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
namespace Jack
{
JackNetDriver::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* net_name )
const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports, const char* net_name, uint transport_sync )
: JackAudioDriver ( name, alias, engine, table ), fSocket ( ip, port )
{
fMulticastIP = new char[strlen ( ip ) + 1];
@@ -43,6 +43,7 @@ namespace Jack
fParams.fReturnMidiChannels = midi_output_ports;
strcpy ( fParams.fName, net_name );
fSocket.GetName ( fParams.fSlaveNetName );
fTransportSync = transport_sync;
}

JackNetDriver::~JackNetDriver()
@@ -100,6 +101,10 @@ namespace Jack
fParams.fSendAudioChannels = fCaptureChannels;
fParams.fReturnAudioChannels = fPlaybackChannels;

//is transport sync ?
if ( fTransportSync )
jack_info ( "NetDriver started with Master's Transport Sync." );

//init loop : get a master and start, do it until connection is ok
net_status_t status;
do
@@ -566,7 +571,7 @@ namespace Jack
{
jack_driver_desc_t* desc = ( jack_driver_desc_t* ) calloc ( 1, sizeof ( jack_driver_desc_t ) );
strcpy ( desc->name, "net" );
desc->nparams = 8;
desc->nparams = 9;
desc->params = ( jack_driver_param_desc_t* ) calloc ( desc->nparams, sizeof ( jack_driver_param_desc_t ) );

int i = 0;
@@ -633,6 +638,14 @@ namespace Jack
strcpy ( desc->params[i].short_desc, "Name of the jack client" );
strcpy ( desc->params[i].long_desc, desc->params[i].short_desc );

i++;
strcpy ( desc->params[i].name, "transport_sync" );
desc->params[i].character = 't';
desc->params[i].type = JackDriverParamUInt;
desc->params[i].value.ui = 1U;
strcpy ( desc->params[i].short_desc, "Sync transport with master's" );
strcpy ( desc->params[i].long_desc, desc->params[i].short_desc );

return desc;
}

@@ -648,6 +661,7 @@ namespace Jack
GetHostName ( name, JACK_CLIENT_NAME_SIZE );
int udp_port = DEFAULT_PORT;
int mtu = 1500;
uint transport_sync = 1;
jack_nframes_t period_size = 128;
jack_nframes_t sample_rate = 48000;
int audio_capture_ports = 2;
@@ -686,12 +700,14 @@ namespace Jack
break;
case 'n' :
strncpy ( name, param->value.str, JACK_CLIENT_NAME_SIZE );
case 't' :
transport_sync = param->value.ui;
}
}

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 ) );
midi_input_ports, midi_output_ports, name, transport_sync ) );
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;


+ 2
- 1
common/JackNetDriver.h View File

@@ -34,6 +34,7 @@ namespace Jack
char* fMulticastIP;
JackNetSocket fSocket;
uint fNSubProcess;
uint fTransportSync;

jack_port_id_t* fMidiCapturePortList;
jack_port_id_t* fMidiPlaybackPortList;
@@ -70,7 +71,7 @@ namespace Jack

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, const char* master_name );
const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports, const char* master_name, uint transport_sync );
~JackNetDriver();

int Open ( jack_nframes_t frames_per_cycle, jack_nframes_t rate, bool capturing, bool playing,


+ 4
- 4
common/JackNetManager.cpp View File

@@ -191,7 +191,7 @@ namespace Jack
jack_nframes_t port_latency = jack_get_buffer_size ( fJackClient );
unsigned long port_flags;
//audio
port_flags = JackPortIsInput | JackPortIsTerminal;
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;
for ( i = 0; i < fParams.fSendAudioChannels; i++ )
{
sprintf ( name, "to_slave_%d", i+1 );
@@ -199,7 +199,7 @@ namespace Jack
goto fail;
jack_port_set_latency ( fAudioCapturePorts[i], port_latency );
}
port_flags = JackPortIsOutput | JackPortIsTerminal;
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;
for ( i = 0; i < fParams.fReturnAudioChannels; i++ )
{
sprintf ( name, "from_slave_%d", i+1 );
@@ -208,7 +208,7 @@ namespace Jack
jack_port_set_latency ( fAudioPlaybackPorts[i], port_latency );
}
//midi
port_flags = JackPortIsInput | JackPortIsTerminal;
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;
for ( i = 0; i < fParams.fSendMidiChannels; i++ )
{
sprintf ( name, "midi_to_slave_%d", i+1 );
@@ -216,7 +216,7 @@ namespace Jack
goto fail;
jack_port_set_latency ( fMidiCapturePorts[i], port_latency );
}
port_flags = JackPortIsOutput | JackPortIsTerminal;
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;
for ( i = 0; i < fParams.fReturnMidiChannels; i++ )
{
sprintf ( name, "midi_from_slave_%d", i+1 );


Loading…
Cancel
Save