提交 2db6c8d9 authored 作者: Anthony Minessale's avatar Anthony Minessale 提交者: Brian West

FS-11057: [mod_conference] CPU race on personal canvas #resolve

上级 14e4a87f
...@@ -2696,15 +2696,11 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t ...@@ -2696,15 +2696,11 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t
switch_image_t *img = *imgP; switch_image_t *img = *imgP;
int size = 0; int size = 0;
void *pop; void *pop;
int half;
//if (member->avatar_png_img && switch_channel_test_flag(member->channel, CF_VIDEO_READY) && conference_utils_member_test_flag(member, MFLAG_ACK_VIDEO)) { //if (member->avatar_png_img && switch_channel_test_flag(member->channel, CF_VIDEO_READY) && conference_utils_member_test_flag(member, MFLAG_ACK_VIDEO)) {
// switch_img_free(&member->avatar_png_img); // switch_img_free(&member->avatar_png_img);
//} //}
if ((half = switch_queue_size(member->video_queue) / 2) < 1) {
half = 1;
}
if (switch_channel_test_flag(member->channel, CF_VIDEO_READY)) { if (switch_channel_test_flag(member->channel, CF_VIDEO_READY)) {
do { do {
pop = NULL; pop = NULL;
...@@ -2716,7 +2712,7 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t ...@@ -2716,7 +2712,7 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t
break; break;
} }
size = switch_queue_size(member->video_queue); size = switch_queue_size(member->video_queue);
} while(size > half); } while(size > 1);
if (conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) && if (conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) &&
member->video_layer_id > -1 && member->video_layer_id > -1 &&
...@@ -3547,12 +3543,14 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -3547,12 +3543,14 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
layout_group_t *lg = NULL; layout_group_t *lg = NULL;
video_layout_t *vlayout = NULL; video_layout_t *vlayout = NULL;
conference_member_t *omember; conference_member_t *omember;
if (video_key_freq && (now - last_key_time) > video_key_freq) { if (video_key_freq && (now - last_key_time) > video_key_freq) {
send_keyframe = SWITCH_TRUE; send_keyframe = SWITCH_TRUE;
last_key_time = now; last_key_time = now;
} }
switch_core_timer_next(&canvas->timer);
switch_mutex_lock(conference->member_mutex); switch_mutex_lock(conference->member_mutex);
for (imember = conference->members; imember; imember = imember->next) { for (imember = conference->members; imember; imember = imember->next) {
...@@ -3697,9 +3695,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -3697,9 +3695,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
switch_thread_rwlock_unlock(omember->rwlock); switch_thread_rwlock_unlock(omember->rwlock);
} }
} }
switch_core_timer_next(&canvas->timer);
for (omember = conference->members; omember; omember = omember->next) { for (omember = conference->members; omember; omember = omember->next) {
mcu_layer_t *layer = NULL; mcu_layer_t *layer = NULL;
switch_image_t *use_img = NULL; switch_image_t *use_img = NULL;
......
...@@ -12376,6 +12376,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_receive_message(switch_core_se ...@@ -12376,6 +12376,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_receive_message(switch_core_se
case SWITCH_MESSAGE_INDICATE_HARD_MUTE: case SWITCH_MESSAGE_INDICATE_HARD_MUTE:
if (a_engine->rtp_session) { if (a_engine->rtp_session) {
a_engine->last_seq = 0;
if (session->bugs && msg->numeric_arg) { if (session->bugs && msg->numeric_arg) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING,
"%s has a media bug, hard mute not allowed.\n", switch_channel_get_name(session->channel)); "%s has a media bug, hard mute not allowed.\n", switch_channel_get_name(session->channel));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论