/* setup group timing */
tv_scale(g->first_chunk - fc->first_stream_chunk, chunk_tv, &tmp);
tv_add(&fc->stream_start, &tmp, &g->start);
- if (g->num) /* quick hack to avoid buffer underruns */
- g->start.tv_sec--;
tv_scale(g->num_chunks, chunk_tv, &tmp); /* group duration */
tv_divide(fc->fcp->slices_per_group + fc->num_extra_slices,
&tmp, &g->slice_duration);
*/
static void vss_send(struct vss_task *vsst)
{
- int i, sent_something = 0;
+ int i, fec_active = 0;
struct timeval due;
struct fec_client *fc, *tmp_fc;
list_for_each_entry_safe(fc, tmp_fc, &fec_client_list, node) {
if (fc->error < 0)
continue;
- if (!next_slice_is_due(fc, NULL))
+ if (!next_slice_is_due(fc, NULL)) {
+ fec_active = 1;
continue;
+ }
if (compute_next_fec_slice(fc, vsst) <= 0)
continue;
PARA_DEBUG_LOG("sending %d:%d (%u bytes)\n", fc->group.num,
fc->fcp->max_slice_bytes,
fc->fcp->private_data);
fc->current_slice_num++;
- sent_something = 1;
+ fec_active = 1;
}
if (mmd->current_chunk >= mmd->afd.afhi.chunks_total) { /* eof */
- if (!sent_something)
+ if (!fec_active)
mmd->new_vss_status_flags |= VSS_NEXT;
return;
}