]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8354: #resolve [revert back ported patch for rate change detection it introducted...
authorBrian West <brian@freeswitch.org>
Fri, 16 Oct 2015 20:47:56 +0000 (15:47 -0500)
committerBrian West <brian@freeswitch.org>
Fri, 16 Oct 2015 20:47:56 +0000 (15:47 -0500)
src/mod/applications/mod_conference/mod_conference.c

index d0f10b97dd9c43ea1ec5e00d8ba9866afeac4f70..cba36648b4a0cb112326c69c225801eb1b6d5f72 100644 (file)
@@ -4267,7 +4267,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v
        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) {
@@ -4531,16 +4531,20 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v
                        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 */
@@ -4873,11 +4877,6 @@ static void conference_loop_output(conference_member_t *member)
                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);