/** Load MRCPv2 profile */ static apt_bool_t unimrcp_client_mrcpv2_profile_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id, const char *tag) { const apr_xml_elem *elem; mrcp_client_profile_t *profile; mrcp_sa_factory_t *sa_factory = NULL; mrcp_ca_factory_t *ca_factory = NULL; mpf_engine_factory_t *mpf_factory = NULL; mpf_termination_factory_t *rtp_factory = NULL; mpf_rtp_settings_t *rtp_settings = NULL; mrcp_sig_settings_t *sip_settings = NULL; apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv2 Profile <%s>",id); for(elem = root->first_child; elem; elem = elem->next) { apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); if(is_cdata_valid(elem) == FALSE) { continue; } if(strcasecmp(elem->name,"sip-uac") == 0) { sa_factory = unimrcp_client_sa_factory_create(loader,elem); } else if(strcasecmp(elem->name,"mrcpv2-uac") == 0) { ca_factory = unimrcp_client_ca_factory_create(loader,elem); } else if(strcasecmp(elem->name,"media-engine") == 0) { mpf_factory = unimrcp_client_mpf_factory_create(loader,elem); } else if(strcasecmp(elem->name,"rtp-factory") == 0) { rtp_factory = mrcp_client_rtp_factory_get(loader->client,cdata_text_get(elem)); } else if(strcasecmp(elem->name,"sip-settings") == 0) { sip_settings = mrcp_client_signaling_settings_get(loader->client,cdata_text_get(elem)); } else if(strcasecmp(elem->name,"rtp-settings") == 0) { rtp_settings = mrcp_client_rtp_settings_get(loader->client,cdata_text_get(elem)); } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); } } apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv2 Profile [%s]",id); profile = mrcp_client_profile_create_ex( MRCP_VERSION_2,NULL, sa_factory,ca_factory, mpf_factory,rtp_factory, rtp_settings,sip_settings, loader->pool); if(tag) { mrcp_client_profile_tag_set(profile,tag); } return mrcp_client_profile_register(loader->client,profile,id); }
/** Create MRCP profile */ MRCP_DECLARE(mrcp_profile_t*) mrcp_client_profile_create( mrcp_resource_factory_t *resource_factory, mrcp_sig_agent_t *signaling_agent, mrcp_connection_agent_t *connection_agent, mpf_engine_t *media_engine, mpf_termination_factory_t *rtp_factory, mpf_rtp_settings_t *rtp_settings, mrcp_sig_settings_t *signaling_settings, apr_pool_t *pool) { mrcp_sa_factory_t *sa_factory = NULL; mrcp_ca_factory_t *ca_factory = NULL; mpf_engine_factory_t *mpf_factory = NULL; mrcp_version_e mrcp_version = MRCP_VERSION_2; if(!connection_agent) mrcp_version = MRCP_VERSION_1; if(signaling_agent) { sa_factory = mrcp_sa_factory_create(pool); mrcp_sa_factory_agent_add(sa_factory,signaling_agent); } if(connection_agent) { ca_factory = mrcp_ca_factory_create(pool); mrcp_ca_factory_agent_add(ca_factory,connection_agent); } if(media_engine) { mpf_factory = mpf_engine_factory_create(pool); mpf_engine_factory_engine_add(mpf_factory,media_engine); } return mrcp_client_profile_create_ex( mrcp_version, resource_factory, sa_factory, ca_factory, mpf_factory, rtp_factory, rtp_settings, signaling_settings, pool); }