mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-06-02 19:40:08 +00:00
FS-10031: [mod_conference] Personal canvas mode doesn't switch layouts properly when a group is specified #resolve
This commit is contained in:
parent
c9befbeae6
commit
0465a6dcdd
@ -1419,6 +1419,8 @@ video_layout_t *conference_video_find_best_layout(conference_obj_t *conference,
|
|||||||
{
|
{
|
||||||
video_layout_node_t *vlnode = NULL, *last = NULL;
|
video_layout_node_t *vlnode = NULL, *last = NULL;
|
||||||
|
|
||||||
|
if (count == 1 && file_count == 1) file_count = 0;
|
||||||
|
|
||||||
if (!count) {
|
if (!count) {
|
||||||
count = conference->members_with_video;
|
count = conference->members_with_video;
|
||||||
file_count = 0;
|
file_count = 0;
|
||||||
@ -1440,7 +1442,7 @@ video_layout_t *conference_video_find_best_layout(conference_obj_t *conference,
|
|||||||
file_layers++;
|
file_layers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((vlnode->vlayout->layers - file_layers >= member_count && file_layers >= file_count) || vlnode->vlayout->layers - file_layers > (int)count) {
|
if ((vlnode->vlayout->layers - file_layers >= member_count && file_layers >= file_count) || vlnode->vlayout->layers - file_layers > (int)count) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2826,14 +2828,14 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
|
|||||||
if (conference->members_with_video == 1 && file_count) {
|
if (conference->members_with_video == 1 && file_count) {
|
||||||
total = 0;
|
total = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canvas->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, canvas->video_layout_group))) {
|
if (conference->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, conference->video_layout_group))) {
|
||||||
if ((vlayout = conference_video_find_best_layout(conference, lg, total + file_count, file_count))) {
|
if ((vlayout = conference_video_find_best_layout(conference, lg, total + file_count, file_count))) {
|
||||||
conference_video_init_canvas_layers(conference, imember->canvas, vlayout);
|
conference_video_init_canvas_layers(conference, imember->canvas, vlayout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imember->channel && !switch_channel_test_flag(imember->channel, CF_VIDEO_BITRATE_UNMANAGABLE) &&
|
if (imember->channel && !switch_channel_test_flag(imember->channel, CF_VIDEO_BITRATE_UNMANAGABLE) &&
|
||||||
conference_utils_test_flag(conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE)) {
|
conference_utils_test_flag(conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE)) {
|
||||||
switch_core_media_get_vid_params(imember->session, &vid_params);
|
switch_core_media_get_vid_params(imember->session, &vid_params);
|
||||||
kps = switch_calc_bitrate(vid_params.width, vid_params.height, conference->video_quality, (int)(imember->conference->video_fps.fps));
|
kps = switch_calc_bitrate(vid_params.width, vid_params.height, conference->video_quality, (int)(imember->conference->video_fps.fps));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user