diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 0704076dff..29e7e9b9e6 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1595,7 +1595,6 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_ { conference_member_t *member = (conference_member_t *) obj; void *pop; - int loops = 0; while(switch_test_flag(member, MFLAG_RUNNING) || switch_queue_size(member->mux_out_queue)) { switch_frame_t *frame; @@ -1604,12 +1603,6 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_ if (switch_queue_pop(member->mux_out_queue, &pop) == SWITCH_STATUS_SUCCESS) { if (!pop) continue; - if (loops == 0 || loops == 50) { - switch_core_media_gen_key_frame(member->session); - switch_core_session_request_video_refresh(member->session); - } - loops++; - frame = (switch_frame_t *) pop; if (switch_test_flag(frame, SFF_ENCODED)) { switch_core_session_write_encoded_video_frame(member->session, frame, 0, 0); diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 25d3077be6..64aae8328d 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -4726,16 +4726,23 @@ static void *SWITCH_THREAD_FUNC video_helper_thread(switch_thread_t *thread, voi } if (read_frame->img) { - if (++vloops > 5) { + if (vloops > 5) { switch_channel_set_flag(channel, CF_VIDEO_READY); smh->vid_params.width = read_frame->img->d_w; smh->vid_params.height = read_frame->img->d_h; } - } else if (read_frame->datalen > 2 && !switch_channel_test_flag(channel, CF_VIDEO_DECODED_READ) && ++vloops > 20) { + } else if (read_frame->datalen > 2 && !switch_channel_test_flag(channel, CF_VIDEO_DECODED_READ) && vloops > 20) { switch_channel_set_flag(channel, CF_VIDEO_READY); } } + if (vloops < 300 && (vloops % 100) == 0) { + switch_core_media_gen_key_frame(session); + switch_core_session_request_video_refresh(session); + } + + vloops++; + if (!buf) { int buflen = SWITCH_RECOMMENDED_BUFFER_SIZE * 4; buf = switch_core_session_alloc(session, buflen);