Merge pull request #1541 in FS/freeswitch from ~THEHUNMONKGROUP/freeswitch:bugfix/FS-11276-regression-dedicated-video-layers to master

* commit 'c83f7871fa8c5464c39a04b9b09938081c071155':
  FS-11276: dedicated video layers can no longer become audio floor holder
This commit is contained in:
Christopher Rienzo 2018-08-22 21:24:44 +00:00
commit 350225a446
5 changed files with 6 additions and 3 deletions

View File

@ -2316,7 +2316,7 @@ switch_status_t conference_api_sub_floor(conference_member_t *member, switch_str
if (member == NULL)
return SWITCH_STATUS_GENERR;
if (conference_utils_member_test_flag(member, MFLAG_DED_VID_LAYER)) {
if (conference_utils_member_test_flag(member, MFLAG_DED_VID_LAYER) && !conference_utils_test_flag(member->conference, CFLAG_DED_VID_LAYER_AUDIO_FLOOR)) {
if (stream != NULL) {
stream->write_function(stream, "-ERR cannot set floor on a member in an active video role\n");
}

View File

@ -1081,7 +1081,7 @@ void conference_member_set_floor_holder(conference_obj_t *conference, conference
member = lmember = conference_member_get(conference, id);
}
if (member && conference_utils_member_test_flag(member, MFLAG_DED_VID_LAYER)) {
if (member && conference_utils_member_test_flag(member, MFLAG_DED_VID_LAYER) && !conference_utils_test_flag(conference, CFLAG_DED_VID_LAYER_AUDIO_FLOOR)) {
goto end;
}

View File

@ -214,6 +214,8 @@ void conference_utils_set_cflags(const char *flags, conference_flag_t *f)
f[CFLAG_MANAGE_INBOUND_VIDEO_BITRATE] = 1;
} else if (!strcasecmp(argv[i], "video-muxing-personal-canvas")) {
f[CFLAG_PERSONAL_CANVAS] = 1;
} else if (!strcasecmp(argv[i], "ded-vid-layer-audio-floor")) {
f[CFLAG_DED_VID_LAYER_AUDIO_FLOOR] = 1;
}
}

View File

@ -312,7 +312,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
//(!conference_utils_test_flag(conference, CFLAG_VID_FLOOR) || switch_channel_test_flag(channel, CF_VIDEO))) {
if (!conference_utils_member_test_flag(imember, MFLAG_DED_VID_LAYER)) {
if (!conference_utils_member_test_flag(imember, MFLAG_DED_VID_LAYER) || conference_utils_test_flag(conference, CFLAG_DED_VID_LAYER_AUDIO_FLOOR)) {
conference_member_set_floor_holder(conference, imember, 0);
floor_holder = conference->floor_holder;
}

View File

@ -261,6 +261,7 @@ typedef enum {
CFLAG_REFRESH_LAYOUT,
CFLAG_VIDEO_MUTE_EXIT_CANVAS,
CFLAG_NO_MOH,
CFLAG_DED_VID_LAYER_AUDIO_FLOOR,
/////////////////////////////////
CFLAG_MAX
} conference_flag_t;