if (!switch_test_flag(member, MFLAG_TALKING)) {
switch_event_t *event;
switch_set_flag_locked(member, MFLAG_TALKING);
- switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
switch_mutex_lock(member->conference->member_mutex);
if (!member->conference->floor_holder ||
!switch_test_flag(member->conference->floor_holder, MFLAG_TALKING) || member->score >
switch_assert(member->conference != NULL);
- flush_len = switch_bytes_per_frame(member->conference->rate, member->conference->interval) * 2;
+ flush_len = switch_bytes_per_frame(member->conference->rate, member->conference->interval) * 10;
if (switch_core_timer_init(&timer, member->conference->timer_name, interval, tsamples, NULL) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Timer Setup Failed. Conference Cannot Start\n");
/* forget the conference data we played file node data instead */
+ printf("set flush 2\n");
switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
}
}
if (mux_used < bytes) {
if (++low_count >= 5) {
/* partial frame sitting around this long is useless and builds delay */
+ printf("set flush 3\n");
switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
}
} else if (mux_used > flush_len) {
/* getting behind, clear the buffer */
+ printf("set flush 4 %d\n", flush_len);
switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
}
}
switch_mutex_unlock(member->audio_out_mutex);
} else {
+ printf("WTF\n");
if (switch_test_flag(member, MFLAG_WASTE_BANDWIDTH)) {
if (member->conference->comfort_noise_level) {
switch_generate_sln_silence(write_frame.data, samples, member->conference->comfort_noise_level);
if (switch_test_flag(member, MFLAG_FLUSH_BUFFER)) {
if (switch_buffer_inuse(member->mux_buffer)) {
+ printf("do flush\n");
switch_mutex_lock(member->audio_out_mutex);
switch_buffer_zero(member->mux_buffer);
switch_mutex_unlock(member->audio_out_mutex);