return false;
if (vsst->header_len == 0)
return false;
- if (fc->group.num && tv_diff(&fc->next_header_time, now, NULL) > 0)
- return false;
+ if (fc->group.num > 0) {
+ if (!fc->fcp->need_periodic_header)
+ return false;
+ if (tv_diff(&fc->next_header_time, now, NULL) > 0)
+ return false;
+ }
tv_add(now, &vsst->header_interval, &fc->next_header_time);
return true;
}
rs = fc->fcp->slices_per_group - fc->fcp->data_slices_per_group;
ret = num_slices(vsst->header_len, fc->mps - FEC_HEADER_SIZE, rs);
if (ret < 0)
- goto err;
+ return ret;
hs = ret;
ret = num_slices(mmd->afd.max_chunk_size, fc->mps - FEC_HEADER_SIZE, rs);
if (ret < 0)
- goto err;
+ return ret;
ds = ret;
k = hs + ds;
if (k < fc->fcp->data_slices_per_group)
fc->stream_start = *now;
fc->first_stream_chunk = mmd->current_chunk;
return 1;
-err:
- fec_free(fc->parms);
- return ret;
}
static void compute_group_size(struct vss_task *vsst, struct fec_group *g,