FS-8053 fix some regressions from original merge, add auto mute-unmute when toggling video send/recv
This commit is contained in:
parent
4abaa11b9d
commit
79f158911e
|
@ -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++;
|
||||
}
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue