add external_video_source to media handle and expose switch_core_media_start_video_thread() to start the core video thread for non-rtp based media
This commit is contained in:
parent
fada4b893a
commit
dd629c1516
|
@ -146,6 +146,15 @@ 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
|
||||
switch_core_media_start_video_thread()
|
||||
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;
|
||||
|
||||
static inline const char *switch_media_type2str(switch_media_type_t type)
|
||||
|
@ -252,6 +261,7 @@ 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);
|
||||
SWITCH_DECLARE(switch_status_t) switch_core_media_start_video_thread(switch_core_session_t *session);
|
||||
|
||||
SWITCH_DECLARE(switch_status_t) switch_core_session_get_payload_code(switch_core_session_t *session,
|
||||
switch_media_type_t type,
|
||||
|
|
|
@ -4375,7 +4375,10 @@ static switch_status_t start_video_thread(switch_core_session_t *session)
|
|||
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "%s Starting Video thread\n", switch_core_session_get_name(session));
|
||||
|
||||
switch_rtp_set_default_payload(v_engine->rtp_session, v_engine->cur_payload_map->agreed_pt);
|
||||
if (v_engine->rtp_session) {
|
||||
switch_rtp_set_default_payload(v_engine->rtp_session, v_engine->cur_payload_map->agreed_pt);
|
||||
}
|
||||
|
||||
v_engine->mh.session = session;
|
||||
switch_threadattr_create(&thd_attr, pool);
|
||||
switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
|
||||
|
@ -4388,7 +4391,10 @@ 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
|
||||
|
@ -4940,7 +4946,13 @@ SWITCH_DECLARE(void) switch_core_session_wake_video_thread(switch_core_session_t
|
|||
|
||||
v_engine = &smh->engines[SWITCH_MEDIA_TYPE_VIDEO];
|
||||
|
||||
if (!v_engine->rtp_session) {
|
||||
if ((!smh->mparams->external_video_source) && (!v_engine->rtp_session)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!v_engine->mh.cond_mutex) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Channel %s has no cond?\n",
|
||||
switch_channel_get_name(session->channel));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue