FS-8053 fix some regressions from original merge, add auto mute-unmute when toggling video send/recv

This commit is contained in:
Anthony Minessale 2015-09-14 16:49:55 -05:00
parent 4abaa11b9d
commit 79f158911e
4 changed files with 29 additions and 12 deletions

View File

@ -675,7 +675,7 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
switch_mutex_lock(member->audio_out_mutex);
lock_member(member);
switch_mutex_lock(conference->member_mutex);
if (member->rec) {
conference->recording_members++;
}

View File

@ -288,13 +288,26 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
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++;
}

View File

@ -754,6 +754,7 @@ struct conference_member {
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;
};

View File

@ -3154,11 +3154,6 @@ static switch_status_t check_ice(switch_media_handle_t *smh, switch_media_type_t
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;
@ -3595,10 +3590,18 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
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);