]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11031: [mod_conference] refresh and keyframes sent too often in multi-canvas mode...
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 14 Mar 2018 18:40:08 +0000 (13:40 -0500)
committerMuteesa Fred <muteesafred@hotmail.com>
Tue, 24 Jul 2018 07:21:45 +0000 (07:21 +0000)
src/mod/applications/mod_conference/conference_video.c

index 494c2c3624cd9e8f615b5e12f2ed53e6ef019742..337ca82db99178afa5152a2b58191eeedfeaff6d 100644 (file)
@@ -2667,10 +2667,25 @@ switch_status_t conference_video_find_layer(conference_obj_t *conference, mcu_ca
 
 void conference_video_next_canvas(conference_member_t *imember)
 {
-       if (imember->canvas_id == (int)imember->conference->canvas_count - 1) {
-               imember->canvas_id = 0;
-       } else {
-               imember->canvas_id++;
+       int x = 0, y = 0;
+
+       if (imember->conference->canvas_count < 2) {
+               return;
+       }
+       
+       y = imember->canvas_id;
+
+       for (x = 0; x < imember->conference->canvas_count; x++) {
+               if (y == (int)imember->conference->canvas_count - 1) {
+                       y = 0;
+               } else {
+                       y++;
+               }
+
+               if (imember->conference->canvases[y]->video_count < imember->conference->canvases[y]->total_layers) {
+                       imember->canvas_id = y;
+                       break;
+               }
        }
 
        imember->layer_timeout = DEFAULT_LAYER_TIMEOUT;