//if (!smh->video_write_fh || !switch_channel_test_flag(channel, CF_VIDEO_READY)) {
status = switch_core_session_read_video_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
-
+
if (!SWITCH_READ_ACCEPTABLE(status)) {
switch_cond_next();
continue;
} else if (switch_channel_test_flag(channel, CF_VIDEO_DECODED_READ)) {
send_blank = 1;
}
-
+ send_blank = 1;
if ((send_blank || switch_channel_test_flag(channel, CF_VIDEO_BLANK)) &&
!session->video_read_callback && !switch_channel_test_flag(session->channel, CF_BRIDGED)) {
fr.img = blank_img;
//switch_channel_clear_flag(session->channel, CF_VIDEO_DECODED_READ);
switch_channel_clear_flag(session->channel, CF_VIDEO_DEBUG_READ);
switch_channel_clear_flag(session->channel, CF_VIDEO_DEBUG_WRITE);
+ switch_channel_clear_flag(session->channel, CF_VIDEO_BLANK);
switch_core_session_request_video_refresh(session);
}
vh.session_a = session_a;
vh.session_b = session_b;
launch_video(&vh);
+ } else {
+ if (switch_channel_test_flag(chan_a, CF_VIDEO)) {
+ switch_channel_set_flag(chan_a, CF_VIDEO_BLANK);
+ }
+ if (switch_channel_test_flag(chan_b, CF_VIDEO)) {
+ switch_channel_set_flag(chan_b, CF_VIDEO_BLANK);
+ }
}
#endif
switch_channel_set_flag(chan_b, CF_INTERCEPT);
}
+ switch_channel_clear_flag(chan_a, CF_VIDEO_BLANK);
+ switch_channel_clear_flag(chan_b, CF_VIDEO_BLANK);
switch_core_session_kill_channel(session_b, SWITCH_SIG_BREAK);
data->done = 1;
if (switch_core_file_has_video(fh)) {
switch_channel_set_flag(channel, CF_VIDEO_ECHO);
switch_core_media_set_video_file(session, fh, SWITCH_RW_READ);
+ } else if (switch_channel_test_flag(channel, CF_VIDEO)) {
+ switch_channel_set_flag(channel, CF_VIDEO_BLANK);
}
if (sample_start > 0) {
switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
switch_core_media_set_video_file(session, NULL, SWITCH_RW_READ);
}
+ switch_channel_clear_flag(channel, CF_VIDEO_BLANK);
switch_core_file_close(fh);
switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
switch_core_media_set_video_file(session, NULL, SWITCH_RW_READ);
}
+ switch_channel_clear_flag(channel, CF_VIDEO_BLANK);
switch_core_file_close(fh);