Browse Source

report xruns on slave

tags/v1.9.4
Torben Hohn 16 years ago
parent
commit
e21b452a46
3 changed files with 11 additions and 5 deletions
  1. +2
    -1
      common/JackNetOneDriver.cpp
  2. +8
    -3
      common/netjack.c
  3. +1
    -1
      common/netjack.h

+ 2
- 1
common/JackNetOneDriver.cpp View File

@@ -288,7 +288,8 @@ namespace Jack
//driver processes-------------------------------------------------------------------- //driver processes--------------------------------------------------------------------
int JackNetOneDriver::Read() int JackNetOneDriver::Read()
{ {
netjack_wait( &netj );
if( netjack_wait( &netj ) )
NotifyXRun(fBeginDateUst, fDelayedUsecs);


if( (netj.num_lost_packets * netj.period_size / netj.sample_rate) > 10 ) if( (netj.num_lost_packets * netj.period_size / netj.sample_rate) > 10 )
throw JackNetException(); throw JackNetException();


+ 8
- 3
common/netjack.c View File

@@ -83,7 +83,7 @@ net_driver_sync_cb(jack_transport_state_t state, jack_position_t *pos, void *dat
return retval; return retval;
} }


void netjack_wait( netjack_driver_state_t *netj )
int netjack_wait( netjack_driver_state_t *netj )
{ {
int we_have_the_expected_frame = 0; int we_have_the_expected_frame = 0;
jack_nframes_t next_frame_avail; jack_nframes_t next_frame_avail;
@@ -132,8 +132,8 @@ void netjack_wait( netjack_driver_state_t *netj )
// it works... so... // it works... so...
netj->running_free = 0; netj->running_free = 0;


if( !we_have_the_expected_frame )
jack_error( "netxrun... %d", netj->expected_framecnt );
//if( !we_have_the_expected_frame )
// jack_error( "netxrun... %d", netj->expected_framecnt );


if( we_have_the_expected_frame ) { if( we_have_the_expected_frame ) {
netj->time_to_deadline = netj->next_deadline - jack_get_time() - netj->period_usecs; netj->time_to_deadline = netj->next_deadline - jack_get_time() - netj->period_usecs;
@@ -279,6 +279,11 @@ void netjack_wait( netjack_driver_state_t *netj )
else { else {
netj->num_lost_packets = 0; netj->num_lost_packets = 0;
} }

if( !netj->packet_data_valid && !netj->running_free )
return 1;

return 0;
} }


void netjack_send_silence( netjack_driver_state_t *netj, int syncstate ) void netjack_send_silence( netjack_driver_state_t *netj, int syncstate )


+ 1
- 1
common/netjack.h View File

@@ -108,7 +108,7 @@ struct _netjack_driver_state {
unsigned int resample_factor_up; unsigned int resample_factor_up;
}; };


void netjack_wait( netjack_driver_state_t *netj );
int netjack_wait( netjack_driver_state_t *netj );
void netjack_send_silence( netjack_driver_state_t *netj, int syncstate ); void netjack_send_silence( netjack_driver_state_t *netj, int syncstate );
void netjack_read( netjack_driver_state_t *netj, jack_nframes_t nframes ) ; void netjack_read( netjack_driver_state_t *netj, jack_nframes_t nframes ) ;
void netjack_write( netjack_driver_state_t *netj, jack_nframes_t nframes, int syncstate ); void netjack_write( netjack_driver_state_t *netj, jack_nframes_t nframes, int syncstate );


Loading…
Cancel
Save