return HB_WORK_OK;
}
+ int more = mux->rdy;
// all tracks have at least 'interleave' ticks of data. Output
// all that we can in 'interleave' size chunks.
- while ( ( mux->rdy & mux->allRdy ) == mux->allRdy )
+ while ( ( mux->rdy & mux->allRdy ) == mux->allRdy && more )
{
+ more = 0;
for ( i = 0; i < mux->ntracks; ++i )
{
track = mux->track[i];
{
mux->rdy &=~ ( 1 << i );
}
+ if ( track->mf.out != track->mf.in )
+ {
+ more |= ( 1 << i );
+ }
}
// if all the tracks are at eof we're just purging their