Browse Source

Correct NetJack2 port latency setting

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

+ 29
- 3
common/JackNetDriver.cpp View File

@@ -238,6 +238,7 @@ namespace Jack
}
port = fGraphManager->GetPort ( port_id );
port->SetAlias ( alias );
//port latency
port->SetLatency ( fEngineControl->fBufferSize );
fCapturePortList[audio_port_index] = port_id;
jack_log ( "JackNetDriver::AllocPorts() fCapturePortList[%d] audio_port_index = %ld fPortLatency = %ld", audio_port_index, port_id, port->GetLatency() );
@@ -255,7 +256,19 @@ namespace Jack
}
port = fGraphManager->GetPort ( port_id );
port->SetAlias ( alias );
port->SetLatency ( ( fParams.fNetworkMode == 'f' ) ? 0 : fEngineControl->fBufferSize + ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) );
//port latency
switch ( fParams.fNetworkMode )
{
case 'f' :
port->SetLatency ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize );
break;
case 'n' :
port->SetLatency ( fEngineControl->fBufferSize + ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize );
break;
case 's' :
port->SetLatency ( 2 * fEngineControl->fBufferSize + ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize );
break;
}
fPlaybackPortList[audio_port_index] = port_id;
jack_log ( "JackNetDriver::AllocPorts() fPlaybackPortList[%d] audio_port_index = %ld fPortLatency = %ld", audio_port_index, port_id, port->GetLatency() );
}
@@ -272,6 +285,7 @@ namespace Jack
return -1;
}
port = fGraphManager->GetPort ( port_id );
//port latency
port->SetLatency ( fEngineControl->fBufferSize );
fMidiCapturePortList[midi_port_index] = port_id;
jack_log ( "JackNetDriver::AllocPorts() fMidiCapturePortList[%d] midi_port_index = %ld fPortLatency = %ld", midi_port_index, port_id, port->GetLatency() );
@@ -289,7 +303,19 @@ namespace Jack
return -1;
}
port = fGraphManager->GetPort ( port_id );
port->SetLatency ( ( fParams.fNetworkMode == 'f' ) ? 0 : fEngineControl->fBufferSize + ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) );
//port latency
switch ( fParams.fNetworkMode )
{
case 'f' :
port->SetLatency ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize );
break;
case 'n' :
port->SetLatency ( fEngineControl->fBufferSize + ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) ;
break;
case 's' :
port->SetLatency ( 2 * fEngineControl->fBufferSize + ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize );
break;
}
fMidiPlaybackPortList[midi_port_index] = port_id;
jack_log ( "JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] midi_port_index = %ld fPortLatency = %ld", midi_port_index, port_id, port->GetLatency() );
}
@@ -395,7 +421,7 @@ namespace Jack

//is it a new state (that the master need to know...) ?
fReturnTransportData.fNewState = ( ( fReturnTransportData.fState != fLastTransportState ) &&
( fReturnTransportData.fState != fSendTransportData.fState ) );
( fReturnTransportData.fState != fSendTransportData.fState ) );
if ( fReturnTransportData.fNewState )
jack_info ( "Sending '%s'.", GetTransportState ( fReturnTransportData.fState ) );
fLastTransportState = fReturnTransportData.fState;


+ 29
- 3
common/JackNetManager.cpp View File

@@ -175,6 +175,7 @@ namespace Jack
sprintf ( name, "to_slave_%d", i+1 );
if ( ( fAudioCapturePorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_AUDIO_TYPE, port_flags, 0 ) ) == NULL )
return -1;
//port latency
jack_port_set_latency ( fAudioCapturePorts[i], 0 );
}
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;
@@ -183,7 +184,19 @@ namespace Jack
sprintf ( name, "from_slave_%d", i+1 );
if ( ( fAudioPlaybackPorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_AUDIO_TYPE, port_flags, 0 ) ) == NULL )
return -1;
jack_port_set_latency ( fAudioPlaybackPorts[i], ( fParams.fNetworkMode == 'f' ) ? 0 : port_latency + ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
//port latency
switch ( fParams.fNetworkMode )
{
case 'f' :
jack_port_set_latency ( fAudioPlaybackPorts[i], ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
break;
case 'n' :
jack_port_set_latency ( fAudioPlaybackPorts[i], port_latency + ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
break;
case 's' :
jack_port_set_latency ( fAudioPlaybackPorts[i], 2 * port_latency + ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
break;
}
}
//midi
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;
@@ -192,6 +205,7 @@ namespace Jack
sprintf ( name, "midi_to_slave_%d", i+1 );
if ( ( fMidiCapturePorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_MIDI_TYPE, port_flags, 0 ) ) == NULL )
return -1;
//port latency
jack_port_set_latency ( fMidiCapturePorts[i], 0 );
}
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;
@@ -200,7 +214,19 @@ namespace Jack
sprintf ( name, "midi_from_slave_%d", i+1 );
if ( ( fMidiPlaybackPorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_MIDI_TYPE, port_flags, 0 ) ) == NULL )
return -1;
jack_port_set_latency ( fMidiPlaybackPorts[i], ( fParams.fNetworkMode == 'f' ) ? 0 : port_latency + ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
//port latency
switch ( fParams.fNetworkMode )
{
case 'f' :
jack_port_set_latency ( fMidiPlaybackPorts[i], ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
break;
case 'n' :
jack_port_set_latency ( fMidiPlaybackPorts[i], port_latency + ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
break;
case 's' :
jack_port_set_latency ( fMidiPlaybackPorts[i], 2 * port_latency + ( fParams.fSlaveSyncMode ) ? 0 : port_latency );
break;
}
}
return 0;
}
@@ -236,7 +262,7 @@ namespace Jack

//is it a new state ?
fSendTransportData.fNewState = ( ( fSendTransportData.fState != fLastTransportState ) &&
( fSendTransportData.fState != fReturnTransportData.fState ) );
( fSendTransportData.fState != fReturnTransportData.fState ) );
if ( fSendTransportData.fNewState )
jack_info ( "Sending '%s' to '%s'.", GetTransportState ( fSendTransportData.fState ), fParams.fName );
fLastTransportState = fSendTransportData.fState;


+ 1
- 2
common/JackTools.cpp View File

@@ -340,8 +340,7 @@ namespace Jack {
//valid option
if ( ( param_id = options_list.find_first_of ( fArgv[param].at(1) ) ) != string::npos )
{
//TODO : find if (and where) it's correctly deleted...
intclient_param = new jack_driver_param_t;
intclient_param = static_cast<jack_driver_param_t*> ( calloc ( 1, sizeof ( jack_driver_param_t) ) );
intclient_param->character = desc->params[param_id].character;

switch ( desc->params[param_id].type )


Loading…
Cancel
Save