]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10891: [mod_conference] Refactor mux video to be smoother #resolve
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 28 Nov 2017 23:44:27 +0000 (17:44 -0600)
committerMuteesa Fred <muteesafred@hotmail.com>
Tue, 24 Jul 2018 07:21:37 +0000 (07:21 +0000)
src/mod/applications/mod_conference/conference_video.c

index 50da2bc350dc033d9fb41d3be66f923214439b1b..d94847d0982026f0b2002a7a3f9f87929c396fb3 100644 (file)
@@ -2625,11 +2625,15 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t
        switch_image_t *img = *imgP;
        int size = 0;
        void *pop;
-
+       int half;
        //if (member->avatar_png_img && switch_channel_test_flag(member->channel, CF_VIDEO_READY) && conference_utils_member_test_flag(member, MFLAG_ACK_VIDEO)) {
        //      switch_img_free(&member->avatar_png_img);
        //}
 
+       if ((half = switch_queue_size(member->video_queue) / 2) < 1) {
+               half = 1;
+       }
+       
        if (switch_channel_test_flag(member->channel, CF_VIDEO_READY)) {
                do {
                        pop = NULL;
@@ -2641,7 +2645,7 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t
                                break;
                        }
                        size = switch_queue_size(member->video_queue);
-               } while(size > 0);
+               } while(size > half);
 
                if (conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) &&
                        member->video_layer_id > -1 &&
@@ -3849,7 +3853,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
 
                                switch_core_timer_next(&canvas->timer);
                                wait_for_canvas(canvas);
-
+                               
                                for (i = 0; i < canvas->total_layers; i++) {
                                        mcu_layer_t *layer = &canvas->layers[i];
                                        
@@ -4809,7 +4813,7 @@ switch_status_t conference_video_thread_callback(switch_core_session_t *session,
 
                if (frame->img && (((member->video_layer_id > -1) && canvas_id > -1) || member->canvas) &&
                        conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) &&
-                       switch_queue_size(member->video_queue) < 2 && //member->conference->video_fps.fps * 2 &&
+                       switch_queue_size(member->video_queue) < member->conference->video_fps.fps &&
                        !member->conference->canvases[canvas_id]->playing_video_file) {
 
                        if (conference_utils_member_test_flag(member, MFLAG_FLIP_VIDEO) || conference_utils_member_test_flag(member, MFLAG_ROTATE_VIDEO)) {