Browse Source

Correct netjack2 latency code.

tags/v1.9.10
Stephane Letz 12 years ago
parent
commit
7de15e7a53
3 changed files with 28 additions and 11 deletions
  1. +8
    -4
      common/JackNetDriver.cpp
  2. +19
    -6
      common/JackNetManager.cpp
  3. +1
    -1
      common/JackNetOneDriver.cpp

+ 8
- 4
common/JackNetDriver.cpp View File

@@ -214,7 +214,7 @@ namespace Jack
plot_name = string(fParams.fName);
plot_name += string("_slave");
plot_name += (fEngineControl->fSyncMode) ? string("_sync") : string("_async");
plot_name += string("_latency");
plot_name += string("_latency");
fNetTimeMon = new JackGnuPlotMonitor<float>(128, 5, plot_name);
string net_time_mon_fields[] =
{
@@ -280,14 +280,17 @@ namespace Jack
jack_latency_range_t input_range;
jack_latency_range_t output_range;
jack_latency_range_t monitor_range;
for (int i = 0; i < fCaptureChannels; i++) {
input_range.max = input_range.min = 0;
input_range.max = input_range.min = float(fParams.fNetworkLatency * fEngineControl->fBufferSize) / 2.f;
fGraphManager->GetPort(fCapturePortList[i])->SetLatencyRange(JackCaptureLatency, &input_range);
}

for (int i = 0; i < fPlaybackChannels; i++) {
output_range.max = output_range.min = 0;
output_range.max = output_range.min = float(fParams.fNetworkLatency * fEngineControl->fBufferSize) / 2.f;
if (!fEngineControl->fSyncMode) {
output_range.max = output_range.min += fEngineControl->fBufferSize;
}
fGraphManager->GetPort(fPlaybackPortList[i])->SetLatencyRange(JackPlaybackLatency, &output_range);
if (fWithMonitorPorts) {
monitor_range.min = monitor_range.max = 0;
@@ -377,6 +380,7 @@ namespace Jack
jack_log("JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] midi_port_index = %ld fPortLatency = %ld", midi_port_index, port_index, port->GetLatency());
}

UpdateLatencies();
return 0;
}



+ 19
- 6
common/JackNetManager.cpp View File

@@ -395,17 +395,30 @@ namespace Jack
JackNetMaster* obj = static_cast<JackNetMaster*>(arg);
jack_nframes_t port_latency = jack_get_buffer_size(obj->fClient);
jack_latency_range_t range;
int i;
//audio
for (i = 0; i < obj->fParams.fReturnAudioChannels; i++) {
for (int i = 0; i < obj->fParams.fSendAudioChannels; i++) {
//port latency
range.min = range.max = obj->fParams.fNetworkLatency * port_latency + ((obj->fParams.fSlaveSyncMode) ? 0 : port_latency);
range.min = range.max = float(obj->fParams.fNetworkLatency * port_latency) / 2.f;
jack_port_set_latency_range(obj->fAudioCapturePorts[i], JackCaptureLatency, &range);
}
//audio
for (int i = 0; i < obj->fParams.fReturnAudioChannels; i++) {
//port latency
range.min = range.max = float(obj->fParams.fNetworkLatency * port_latency) / 2.f + ((obj->fParams.fSlaveSyncMode) ? 0 : port_latency);
jack_port_set_latency_range(obj->fAudioPlaybackPorts[i], JackPlaybackLatency, &range);
}

//midi
for (int i = 0; i < obj->fParams.fSendMidiChannels; i++) {
//port latency
range.min = range.max = float(obj->fParams.fNetworkLatency * port_latency) / 2.f;
jack_port_set_latency_range(obj->fMidiCapturePorts[i], JackCaptureLatency, &range);
}
//midi
for (i = 0; i < obj->fParams.fReturnMidiChannels; i++) {
for (int i = 0; i < obj->fParams.fReturnMidiChannels; i++) {
//port latency
range.min = range.max = obj->fParams.fNetworkLatency * port_latency + ((obj->fParams.fSlaveSyncMode) ? 0 : port_latency);
jack_port_set_latency_range(obj->fMidiPlaybackPorts[i], JackPlaybackLatency, &range);


+ 1
- 1
common/JackNetOneDriver.cpp View File

@@ -1108,7 +1108,7 @@ extern "C"
dont_htonl_floats, always_deadline, jitter_val));

if (driver->Open(period_size, sample_rate, 1, 1, capture_ports, playback_ports,
0, "from_master_", "to_master_", 0, 0) == 0) {
0, "from_master", "to_master", 0, 0) == 0) {
return driver;
} else {
delete driver;


Loading…
Cancel
Save