From 90818f137ed30cb29df0348110747cbc2e3c4a14 Mon Sep 17 00:00:00 2001 From: liyang Date: Thu, 13 Feb 2014 14:56:07 +0800 Subject: [PATCH] FS-7500: allow using the video thread externally - e.g. non rtp based video --- src/include/switch_core_media.h | 6 ++++++ src/switch_core_media.c | 15 +++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/include/switch_core_media.h b/src/include/switch_core_media.h index 808e22fc10..6e9f3b282a 100644 --- a/src/include/switch_core_media.h +++ b/src/include/switch_core_media.h @@ -146,6 +146,7 @@ typedef struct switch_core_media_params_s { switch_core_media_dtmf_t dtmf_type; switch_payload_t cng_pt; + /* a core_video_thread will be started automatically when uses rtp based media, external_video_source should be set to SWITCH_TRUE and @@ -153,6 +154,7 @@ typedef struct switch_core_media_params_s { should be explicitly called to start the video thread if uses the media handle for non-rtp based media */ + switch_bool_t external_video_source; } switch_core_media_params_t; @@ -261,7 +263,11 @@ SWITCH_DECLARE(void) switch_core_media_deinit(void); SWITCH_DECLARE(void) switch_core_media_set_stats(switch_core_session_t *session); SWITCH_DECLARE(void) switch_core_session_wake_video_thread(switch_core_session_t *session); SWITCH_DECLARE(void) switch_core_session_clear_crypto(switch_core_session_t *session); +<<<<<<< HEAD SWITCH_DECLARE(switch_status_t) switch_core_media_start_video_thread(switch_core_session_t *session); +======= +SWITCH_DECLARE(switch_status_t) start_core_video_thread(switch_core_session_t *session); +>>>>>>> allow using the video thread externally - e.g. non rtp based video SWITCH_DECLARE(switch_status_t) switch_core_session_get_payload_code(switch_core_session_t *session, switch_media_type_t type, diff --git a/src/switch_core_media.c b/src/switch_core_media.c index de57966395..d4e46673be 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -4541,7 +4541,7 @@ static void *SWITCH_THREAD_FUNC video_helper_thread(switch_thread_t *thread, voi } -static switch_status_t start_video_thread(switch_core_session_t *session) +SWITCH_DECLARE(switch_status_t) switch_core_media_start_video_thread(switch_core_session_t *session) { switch_threadattr_t *thd_attr = NULL; switch_memory_pool_t *pool = switch_core_session_get_pool(session); @@ -4576,11 +4576,6 @@ static switch_status_t start_video_thread(switch_core_session_t *session) return SWITCH_STATUS_SUCCESS; } -SWITCH_DECLARE(switch_status_t) switch_core_media_start_video_thread(switch_core_session_t *session) -{ - return start_video_thread(session); -} - //? #define RA_PTR_LEN 512 SWITCH_DECLARE(switch_status_t) switch_core_media_proxy_remote_addr(switch_core_session_t *session, const char *sdp_str) @@ -4712,7 +4707,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_proxy_remote_addr(switch_core_ !switch_channel_test_flag(session->channel, CF_WEBRTC)) { /* Reactivate the NAT buster flag. */ switch_rtp_set_flag(v_engine->rtp_session, SWITCH_RTP_FLAG_AUTOADJ); - start_video_thread(session); + switch_core_media_start_video_thread(session); } if (switch_media_handle_test_media_flag(smh, SCMF_AUTOFIX_TIMING)) { @@ -5686,7 +5681,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi v_engine->cur_payload_map->remote_sdp_port, v_engine->cur_payload_map->agreed_pt); - start_video_thread(session); + switch_core_media_start_video_thread(session); switch_rtp_set_default_payload(v_engine->rtp_session, v_engine->cur_payload_map->agreed_pt); } } @@ -5719,7 +5714,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi !((val = switch_channel_get_variable(session->channel, "disable_rtp_auto_adjust")) && switch_true(val))) { /* Reactivate the NAT buster flag. */ switch_rtp_set_flag(v_engine->rtp_session, SWITCH_RTP_FLAG_AUTOADJ); - start_video_thread(session); + switch_core_media_start_video_thread(session); } } @@ -5819,7 +5814,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi switch_rtp_set_payload_map(v_engine->rtp_session, &v_engine->payload_map); - start_video_thread(session); + switch_core_media_start_video_thread(session); switch_channel_set_flag(session->channel, CF_VIDEO); if ((ssrc = switch_channel_get_variable(session->channel, "rtp_use_video_ssrc"))) {