switch_mutex_lock(member->audio_out_mutex);
lock_member(member);
switch_mutex_lock(conference->member_mutex);
-
+
if (member->rec) {
conference->recording_members++;
}
if (conference_utils_member_test_flag(imember, MFLAG_RUNNING) && imember->session) {
switch_channel_t *channel = switch_core_session_get_channel(imember->session);
-
+ switch_media_flow_t video_media_flow;
+
if ((!floor_holder || (imember->score_iir > SCORE_IIR_SPEAKING_MAX && (floor_holder->score_iir < SCORE_IIR_SPEAKING_MIN)))) {// &&
//(!conference_utils_test_flag(conference, CFLAG_VID_FLOOR) || switch_channel_test_flag(channel, CF_VIDEO))) {
floor_holder = imember;
}
- if (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_VIDEO) && switch_core_session_media_flow(imember->session, SWITCH_MEDIA_TYPE_VIDEO) != SWITCH_MEDIA_FLOW_SENDONLY) {
+ video_media_flow = switch_core_session_media_flow(imember->session, SWITCH_MEDIA_TYPE_VIDEO);
+
+ if (video_media_flow != imember->video_media_flow) {
+ imember->video_media_flow = video_media_flow;
+
+ if (imember->video_media_flow == SWITCH_MEDIA_FLOW_SENDONLY) {
+ conference_utils_member_clear_flag(imember, MFLAG_CAN_BE_SEEN);
+ } else {
+ conference_utils_member_set_flag(imember, MFLAG_CAN_BE_SEEN);
+ }
+ }
+
+ if (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_VIDEO) && imember->video_media_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
members_with_video++;
}
int good_img;
int auto_avatar;
int avatar_patched;
+ switch_media_flow_t video_media_flow;
mcu_canvas_t *canvas;
switch_image_t *pcanvas_img;
};
return SWITCH_STATUS_SUCCESS;
}
- if (switch_channel_test_flag(smh->session->channel, CF_REINVITE) && !switch_channel_test_flag(smh->session->channel, CF_RECOVERING)) {
- engine->new_ice = 0;
- engine->new_dtls = 0;
- }
-
engine->ice_in.chosen[0] = 0;
engine->ice_in.chosen[1] = 0;
engine->ice_in.is_chosen[0] = 0;
switch_channel_clear_flag(smh->session->channel, CF_DTLS);
}
- a_engine->new_ice = 1;
- a_engine->new_dtls = 1;
- v_engine->new_ice = 1;
- v_engine->new_dtls = 1;
+ /* may have to test for a new dtls fingerprint here too and clear these flags */
+ if (switch_channel_test_flag(smh->session->channel, CF_REINVITE) && !switch_channel_test_flag(smh->session->channel, CF_RECOVERING)) {
+ a_engine->new_ice = 0;
+ a_engine->new_dtls = 0;
+ v_engine->new_ice = 0;
+ v_engine->new_dtls = 0;
+ } else {
+ a_engine->new_ice = 1;
+ a_engine->new_dtls = 1;
+ v_engine->new_ice = 1;
+ v_engine->new_dtls = 1;
+ }
//if (switch_channel_test_flag(session->channel, CF_REINVITE)) {
// switch_core_media_clear_ice(session);