/** Create UniRTSP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(rtsp_server_config_t *config, apr_pool_t *pool) { apt_task_vtable_t vtable; apt_task_msg_pool_t *msg_pool; apt_consumer_task_t *consumer_task; mrcp_unirtsp_agent_t *agent; agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); agent->sig_agent = mrcp_signaling_agent_create(agent,MRCP_VERSION_1,pool); agent->config = config; if(rtsp_config_validate(agent,config,pool) == FALSE) { return NULL; } agent->rtsp_server = rtsp_server_create(config->local_ip,config->local_port,config->max_connection_count, agent,&session_request_vtable,pool); if(!agent->rtsp_server) { return NULL; } msg_pool = apt_task_msg_pool_create_dynamic(0,pool); apt_task_vtable_reset(&vtable); vtable.destroy = server_destroy; vtable.on_start_complete = server_on_start_complete; vtable.on_terminate_complete = server_on_terminate_complete; consumer_task = apt_consumer_task_create(agent,&vtable,msg_pool,pool); agent->sig_agent->task = apt_consumer_task_base_get(consumer_task); apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create UniRTSP Agent %s:%hu [%d]", config->local_ip, config->local_port, config->max_connection_count); return agent->sig_agent; }
/** Create UniRTSP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(const char *id, rtsp_server_config_t *config, apr_pool_t *pool) { apt_task_t *task; mrcp_unirtsp_agent_t *agent; agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); agent->sig_agent = mrcp_signaling_agent_create(id,agent,MRCP_VERSION_1,pool); agent->config = config; if(rtsp_config_validate(agent,config,pool) == FALSE) { return NULL; } agent->rtsp_server = rtsp_server_create( config->local_ip, config->local_port, config->max_connection_count, agent, &session_request_vtable, pool); if(!agent->rtsp_server) { return NULL; } task = rtsp_server_task_get(agent->rtsp_server); apt_task_name_set(task,id); agent->sig_agent->task = task; apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create UniRTSP Agent [%s] %s:%hu [%"APR_SIZE_T_FMT"]", id, config->local_ip, config->local_port, config->max_connection_count); return agent->sig_agent; }
/** Create UniRTSP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(const char *id, rtsp_server_config_t *config, apr_pool_t *pool) { apt_task_t *task; mrcp_unirtsp_agent_t *agent; agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); agent->sig_agent = mrcp_signaling_agent_create(id,agent,pool); agent->config = config; if(rtsp_config_validate(agent,config,pool) == FALSE) { return NULL; } agent->rtsp_server = rtsp_server_create( id, config->local_ip, config->local_port, config->max_connection_count, agent, &session_request_vtable, pool); if(!agent->rtsp_server) { return NULL; } task = rtsp_server_task_get(agent->rtsp_server); agent->sig_agent->task = task; return agent->sig_agent; }