FS-7502: set video flag on record session

This commit is contained in:
Anthony Minessale 2015-03-27 15:59:51 -05:00 committed by Michael Jerris
parent dc7608fb9e
commit 216850c1a0
4 changed files with 24 additions and 7 deletions

View File

@ -2680,7 +2680,7 @@ SWITCH_DECLARE(void) switch_core_session_video_reset(switch_core_session_t *sess
{
switch_channel_clear_flag(session->channel, CF_VIDEO_ECHO);
switch_channel_clear_flag(session->channel, CF_VIDEO_PASSIVE);
switch_channel_clear_flag(session->channel, CF_VIDEO_DECODED_READ);
//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_core_session_request_video_refresh(session);

View File

@ -1332,8 +1332,15 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
}
}
if (switch_core_file_has_video(rh->fh)) {
switch_core_media_set_video_file(session, NULL, SWITCH_RW_READ);
}
switch_core_file_close(rh->fh);
if (rh->fh->samples_out < rh->fh->samplerate * rh->min_sec) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Discarding short file %s\n", rh->file);
switch_channel_set_variable(channel, "RECORD_DISCARDED", "true");
@ -2269,6 +2276,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t
if ((ext = strrchr(file, '.'))) {
ext++;
if (switch_channel_test_flag(channel, CF_VIDEO)) {
file_flags |= SWITCH_FILE_FLAG_VIDEO;
}
if (switch_core_file_open(fh, file, channels, read_impl.actual_samples_per_second, file_flags, NULL) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error opening %s\n", file);
if (hangup_on_error) {
@ -2277,6 +2288,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t
}
return SWITCH_STATUS_GENERR;
}
if (switch_core_file_has_video(fh)) {
switch_core_media_set_video_file(session, fh, SWITCH_RW_READ);
}
} else {
int tflags = 0;

View File

@ -67,7 +67,8 @@ static void video_bridge_thread(switch_core_session_t *session, void *obj)
switch_codec_t *a_codec = switch_core_session_get_video_read_codec(vh->session_a);
switch_codec_t *b_codec = switch_core_session_get_video_write_codec(vh->session_b);
if (!b_codec || !a_codec || a_codec->implementation->impl_id == b_codec->implementation->impl_id) {
if ((!b_codec || !a_codec || a_codec->implementation->impl_id == b_codec->implementation->impl_id) &&
!switch_channel_test_flag(b_channel, CF_VIDEO_DECODED_READ)) {
switch_channel_clear_flag(channel, CF_VIDEO_DECODED_READ);
} else {
switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);

View File

@ -1262,7 +1262,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
if (switch_channel_test_flag(channel, CF_VIDEO)) {
flags |= SWITCH_FILE_FLAG_VIDEO;
switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
//switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
}
if (switch_core_file_open(fh,
@ -1357,7 +1357,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
switch_core_session_io_rwunlock(session);
if (switch_core_file_has_video(fh)) {
switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
//switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
switch_core_media_set_video_file(session, NULL, SWITCH_RW_WRITE);
}
@ -1383,7 +1383,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
switch_core_session_io_rwunlock(session);
if (switch_core_file_has_video(fh)) {
switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
//switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
switch_core_media_set_video_file(session, NULL, SWITCH_RW_WRITE);
}
switch_core_file_close(fh);
@ -1412,7 +1412,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
switch_channel_set_private(channel, "__fh", NULL);
switch_core_session_io_rwunlock(session);
if (switch_core_file_has_video(fh)) {
switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
//switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
switch_core_media_set_video_file(session, NULL, SWITCH_RW_WRITE);
}
switch_core_file_close(fh);
@ -1823,7 +1823,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
switch_core_session_io_rwunlock(session);
if (switch_core_file_has_video(fh)) {
switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
//switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
switch_core_media_set_video_file(session, NULL, SWITCH_RW_WRITE);
}
switch_core_file_close(fh);