switch_frame_t *read_frame = NULL;
uint32_t hangover = 40, hangunder = 5, hangover_hits = 0, hangunder_hits = 0, diff_level = 400;
switch_core_session_t *session = member->session;
- uint32_t flush_len;
+ uint32_t flush_len, loops = 0;
switch_frame_t tmp_frame = { 0 };
if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
member->last_score = member->score;
}
+ loops++;
+
if (switch_channel_test_flag(member->channel, CF_CONFERENCE_RESET_MEDIA)) {
switch_channel_clear_flag(member->channel, CF_CONFERENCE_RESET_MEDIA);
- member->loop_loop = 1;
+ if (loops > 500) {
+ member->loop_loop = 1;
- if (setup_media(member, member->conference)) {
- switch_mutex_unlock(member->read_mutex);
- break;
+ if (setup_media(member, member->conference)) {
+ switch_mutex_unlock(member->read_mutex);
+ break;
+ }
}
- goto do_continue;
+
}
/* skip frames that are not actual media or when we are muted or silent */
switch_buffer_t *use_buffer = NULL;
uint32_t mux_used = 0;
- if (switch_channel_test_flag(member->channel, CF_CONFERENCE_RESET_MEDIA)) {
- switch_cond_next();
- continue;
- }
-
switch_mutex_lock(member->write_mutex);