提交 4bda9bf1 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-10019: [mod_conference] Crash when playing mp4 in personal-canvas mode #resolve

上级 97438725
...@@ -2324,6 +2324,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -2324,6 +2324,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
video_count = 0; video_count = 0;
switch_mutex_lock(conference->mutex);
if (conference->async_fnode && switch_core_file_has_video(&conference->async_fnode->fh, SWITCH_TRUE)) { if (conference->async_fnode && switch_core_file_has_video(&conference->async_fnode->fh, SWITCH_TRUE)) {
check_async_file = 1; check_async_file = 1;
file_count++; file_count++;
...@@ -2337,7 +2338,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -2337,7 +2338,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
video_count++; video_count++;
files_playing = 1; files_playing = 1;
} }
switch_mutex_unlock(conference->mutex);
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) {
...@@ -2769,8 +2770,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -2769,8 +2770,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
conference->new_personal_vlayout = NULL; conference->new_personal_vlayout = NULL;
layout_applied = 0; layout_applied = 0;
} }
switch_mutex_lock(conference->mutex);
if (check_async_file) { if (check_async_file && conference->async_fnode) {
switch_status_t st = switch_core_file_read_video(&conference->async_fnode->fh, &file_frame, SVR_FLUSH); switch_status_t st = switch_core_file_read_video(&conference->async_fnode->fh, &file_frame, SVR_FLUSH);
if (st == SWITCH_STATUS_SUCCESS) { if (st == SWITCH_STATUS_SUCCESS) {
...@@ -2783,7 +2786,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -2783,7 +2786,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
} }
} }
if (check_file) { if (check_file && conference->fnode) {
switch_status_t st = switch_core_file_read_video(&conference->fnode->fh, &file_frame, SVR_FLUSH); switch_status_t st = switch_core_file_read_video(&conference->fnode->fh, &file_frame, SVR_FLUSH);
if (st == SWITCH_STATUS_SUCCESS) { if (st == SWITCH_STATUS_SUCCESS) {
...@@ -2795,6 +2798,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr ...@@ -2795,6 +2798,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
j++; j++;
} }
} }
switch_mutex_unlock(conference->mutex);
for (imember = conference->members; imember; imember = imember->next) { for (imember = conference->members; imember; imember = imember->next) {
int i = 0; int i = 0;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论