Browse Source

[netjack] Compensate transport also for codec latency. should be sample accurate over internet now.

git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3197 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.116.2
torben 17 years ago
parent
commit
eb44cb0f65
2 changed files with 12 additions and 3 deletions
  1. +10
    -3
      drivers/netjack/net_driver.c
  2. +2
    -0
      drivers/netjack/net_driver.h

+ 10
- 3
drivers/netjack/net_driver.c View File

@@ -413,6 +413,7 @@ net_driver_read (net_driver_t* driver, jack_nframes_t nframes)

// check whether, we should handle the transport sync stuff, or leave trnasports untouched.
if (driver->handle_transport_sync) {
int compensated_tranport_pos = (pkthdr->transport_frame + (pkthdr->latency * nframes) + driver->codec_latency);

// read local transport info....
local_trans_state = jack_transport_query(driver->client, &local_trans_pos);
@@ -428,11 +429,12 @@ net_driver_read (net_driver_t* driver, jack_nframes_t nframes)
jack_info("locally stopped... starting...");
}

if (local_trans_pos.frame != (pkthdr->transport_frame + (pkthdr->latency) * nframes)) {
jack_transport_locate(driver->client, (pkthdr->transport_frame + (pkthdr->latency) * nframes));
if (local_trans_pos.frame != compensated_tranport_pos)
{
jack_transport_locate(driver->client, compensated_tranport_pos);
last_transport_state = JackTransportRolling;
sync_state = FALSE;
jack_info("starting locate to %d", pkthdr->transport_frame + (pkthdr->latency)*nframes);
jack_info("starting locate to %d", compensated_tranport_pos );
}
break;
case JackTransportStopped:
@@ -546,8 +548,12 @@ net_driver_attach (net_driver_t *driver)

if( driver->bitdepth == 1000 ) {
#if HAVE_CELT
celt_int32_t lookahead;
// XXX: memory leak
CELTMode *celt_mode = celt_mode_create( driver->sample_rate, 1, driver->period_size, NULL );
celt_mode_info( celt_mode, CELT_GET_LOOKAHEAD, &lookahead );
driver->codec_latency = 2*lookahead;

driver->capture_srcs = jack_slist_append(driver->capture_srcs, celt_decoder_create( celt_mode ) );
#endif
} else {
@@ -708,6 +714,7 @@ net_driver_new (jack_client_t * client,
driver->playback_channels_audio = playback_ports;
driver->playback_channels_midi = playback_ports_midi;
driver->playback_ports = NULL;
driver->codec_latency = 0;

driver->handle_transport_sync = transport_sync;
driver->mtu = 1400;


+ 2
- 0
drivers/netjack/net_driver.h View File

@@ -42,6 +42,8 @@ struct _net_driver
jack_nframes_t bitdepth;
jack_nframes_t period_size;

jack_nframes_t codec_latency;

unsigned int listen_port;

unsigned int capture_channels;


Loading…
Cancel
Save