]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7502: set video flag on record session
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 27 Mar 2015 20:59:51 +0000 (15:59 -0500)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:47:14 +0000 (12:47 -0500)
src/switch_core_session.c
src/switch_ivr_async.c
src/switch_ivr_bridge.c
src/switch_ivr_play_say.c

index a3cfacd82e8a127f3dd83f6975342208f4322fa8..73cae256b2382d8c74faf70747f0d88a08a75ddc 100644 (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);
index 76a9be6dd81aaef98713ff0dd9ce77b60f0a2682..ccc3c506d0b4b2ab7a21b675e7069c1f5be6a809 100644 (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;
 
index 68b1efd300531c4c569c64ce49efb3561240b14e..a39de8d31ea91568a24533774e8bccf464404c70 100644 (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);
index a691583a003a7a77cb83248b1fce53e3e1c11f73..d056399c3f796306b08c7abe459cdcc647e22fdd 100644 (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);