]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8595 contd
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 17 Dec 2015 22:00:20 +0000 (16:00 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 17 Dec 2015 22:00:20 +0000 (16:00 -0600)
src/mod/applications/mod_conference/conference_video.c

index d5a3b5e6226bec205eca7986afbcd26f6b7c3623..e3a96007e78f3c1923a1f9651c20ec01d03f5ebc 100644 (file)
@@ -1945,9 +1945,8 @@ void conference_video_check_auto_bitrate(conference_member_t *member, mcu_layer_
        switch_vid_params_t vid_params = { 0 };
        int kps = 0;
        int max = 0;
-       int min = 0;
-       int w, h;
-
+       int min_in = 0, min_layer = 0, min = 0;
+       
        if (!conference_utils_test_flag(member->conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE) || 
                switch_channel_test_flag(member->channel, CF_VIDEO_BITRATE_UNMANAGABLE)) {
                return;
@@ -1972,6 +1971,7 @@ void conference_video_check_auto_bitrate(conference_member_t *member, mcu_layer_
        }
        
        if (vid_params.width != member->vid_params.width || vid_params.height != member->vid_params.height) {
+               switch_core_session_request_video_refresh(member->session);
                conference_video_clear_managed_kps(member);
        }
 
@@ -1981,17 +1981,14 @@ void conference_video_check_auto_bitrate(conference_member_t *member, mcu_layer_
                return;
        }
 
-       if (!layer || (vid_params.width * vid_params.height) < (layer->screen_w * layer->screen_h)) {
-               w = vid_params.width;
-               h = vid_params.height;
-       } else {
-               w = layer->screen_w;
-               h = layer->screen_h;
-       }
+       kps = switch_calc_bitrate(layer->screen_w, layer->screen_h, member->conference->video_quality, (int)(member->conference->video_fps.fps));
+       min_layer = kps / 2;
+       min = min_in = switch_calc_bitrate(vid_params.width, vid_params.height, member->conference->video_quality, (int)(member->conference->video_fps.fps)) / 2;
 
-       kps = switch_calc_bitrate(w, h, member->conference->video_quality, (int)(member->conference->video_fps.fps));
-       min = switch_calc_bitrate(vid_params.width, vid_params.height, member->conference->video_quality, (int)(member->conference->video_fps.fps)) / 2;
-               
+       
+       if (min_layer > min) min = min_layer;
+       
+       
        if (member->conference->max_bw_in) {
                max = member->conference->max_bw_in;
        } else {