typedef enum {
SWITCH_IO_FLAG_NONE = 0,
SWITCH_IO_FLAG_NOBLOCK = (1 << 0),
- SWITCH_IO_FLAG_SINGLE_READ = (1 << 1)
+ SWITCH_IO_FLAG_SINGLE_READ = (1 << 1),
+ SWITCH_IO_FLAG_FORCE = (1 << 2)
} switch_io_flag_enum_t;
typedef uint32_t switch_io_flag_t;
switch_mutex_unlock(mh->file_mutex);
} else if (switch_channel_test_flag(channel, CF_VIDEO_DECODED_READ)) {
fr.img = blank_img;
- switch_core_session_write_video_frame(session, &fr, SWITCH_IO_FLAG_NONE, 0);
+ switch_core_session_write_video_frame(session, &fr, SWITCH_IO_FLAG_NONE, SWITCH_IO_FLAG_FORCE);
}
if (read_frame && (switch_channel_test_flag(channel, CF_VIDEO_ECHO))) {
return SWITCH_STATUS_SUCCESS;
}
+ if (!(switch_channel_test_flag(session->channel, CF_VIDEO_READY) || (flags & SWITCH_IO_FLAG_FORCE))) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+
if (!smh->video_init && smh->mparams->video_key_first && (now - smh->video_last_key_time) > smh->mparams->video_key_first) {
switch_core_media_gen_key_frame(session);