From 7d60e6e868914e8fba19aa229e209e0e71cfb67b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 14 Apr 2015 20:47:18 -0500 Subject: [PATCH] FS-7513: missing some logic for those with video to take layers from those with avatars --- .../applications/mod_conference/mod_conference.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index ad35052ed0..7f6f6af148 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1764,7 +1764,7 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread switch_frame_t write_frame = { 0 }; uint8_t *packet = NULL; switch_image_t *write_img = NULL, *file_img = NULL; - uint32_t timestamp = 0; + uint32_t timestamp = 0, avatar_layers = 0; video_layout_t *vlayout = get_layout(conference); if (!vlayout) { @@ -1915,8 +1915,18 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread imember->video_layer_id = -1; } } - - if (!layer && conference->canvas->layers_used < conference->canvas->total_layers && + + avatar_layers = 0; + for (i = 0; i < conference->canvas->total_layers; i++) { + mcu_layer_t *xlayer = &conference->canvas->layers[i]; + + if (xlayer->is_avatar && xlayer->member_id != conference->video_floor_holder) { + avatar_layers++; + } + } + + if (!layer && (conference->canvas->layers_used < conference->canvas->total_layers || + (avatar_layers && !imember->avatar_png_img)) && (imember->avatar_png_img || imember->video_flow != SWITCH_MEDIA_FLOW_SENDONLY)) { /* find an empty layer */ for (i = 0; i < conference->canvas->total_layers; i++) {