write_u32(buf + 14, g->bytes);
write_u8(buf + 18, fc->current_slice_num);
write_u32(buf + 14, g->bytes);
write_u8(buf + 18, fc->current_slice_num);
write_u8(buf + 22, g->first_chunk? 0 : 1);
write_u8(buf + 23, vsst->header_len? 1 : 0);
memset(buf + 24, 0, 7);
write_u8(buf + 22, g->first_chunk? 0 : 1);
write_u8(buf + 23, vsst->header_len? 1 : 0);
memset(buf + 24, 0, 7);
fc->extra_src_buf = para_realloc(fc->extra_src_buf, mps);
memset(fc->extra_src_buf, 0, mps);
fc->extra_src_buf = para_realloc(fc->extra_src_buf, mps);
memset(fc->extra_src_buf, 0, mps);
PARA_CRIT_LOG("slice_bytes: %d\n", slice_bytes);
k = fc->fcp->data_slices_per_group + fc->num_extra_slices;
n = fc->fcp->slices_per_group + fc->num_extra_slices;
PARA_CRIT_LOG("k: %d, n: %d\n", k, n);
if (need_audio_header(fc, vsst)) {
PARA_CRIT_LOG("slice_bytes: %d\n", slice_bytes);
k = fc->fcp->data_slices_per_group + fc->num_extra_slices;
n = fc->fcp->slices_per_group + fc->num_extra_slices;
PARA_CRIT_LOG("k: %d, n: %d\n", k, n);
if (need_audio_header(fc, vsst)) {
== fc->fcp->slices_per_group + fc->num_extra_slices) {
int ret = setup_next_fec_group(fc, vsst);
if (ret == 0)
== fc->fcp->slices_per_group + fc->num_extra_slices) {
int ret = setup_next_fec_group(fc, vsst);
if (ret == 0)
}
write_fec_header(fc, vsst);
fec_encode(fc->parms, fc->src_data, fc->enc_buf + FEC_HEADER_SIZE,
}
write_fec_header(fc, vsst);
fec_encode(fc->parms, fc->src_data, fc->enc_buf + FEC_HEADER_SIZE,
return 1;
tv_scale(fc->current_slice_num, &fc->group.slice_duration, &tmp);
tv_add(&tmp, &fc->group.start, &next);
return 1;
tv_scale(fc->current_slice_num, &fc->group.slice_duration, &tmp);
tv_add(&tmp, &fc->group.start, &next);
for (i = 0; senders[i].name; i++)
if (senders[i].shutdown_clients)
senders[i].shutdown_clients();
for (i = 0; senders[i].name; i++)
if (senders[i].shutdown_clients)
senders[i].shutdown_clients();
- list_for_each_entry_safe(fc, tmp, &fec_client_list, node) {
- fc->first_stream_chunk = -1;
+ list_for_each_entry_safe(fc, tmp, &fec_client_list, node)
&due, 1) < 0)
return;
list_for_each_entry_safe(fc, tmp_fc, &fec_client_list, node) {
&due, 1) < 0)
return;
list_for_each_entry_safe(fc, tmp_fc, &fec_client_list, node) {
if (compute_next_fec_slice(fc, vsst) <= 0)
continue;
PARA_DEBUG_LOG("sending %d:%d (%u bytes)\n", fc->group.num,
if (compute_next_fec_slice(fc, vsst) <= 0)
continue;
PARA_DEBUG_LOG("sending %d:%d (%u bytes)\n", fc->group.num,
- fc->current_slice_num, fc->fcp->max_slice_bytes);
- fc->fcp->send_fec(fc->sc, (char *)fc->enc_buf,
- fc->fcp->max_slice_bytes);
+ fc->current_slice_num, fc->mps);
+ fc->fcp->send_fec(fc->sc, (char *)fc->enc_buf, fc->mps);