接下来分析pjsua_app 的app_init(),里面代码有很多,所以分了类,一条一条分析
static pj_status_t app_init(){
/** Create pjsua **/
/* Create pool for application */
/* Init CLI & its FE settings */
/** Parse args **/
/* Initialize application callbacks */
/* Set sound device latency */
/* Initialize pjsua */
/* Initialize our module to handle otherwise unhandled request */
/* Initialize calls data */
/* Optionally registers WAV file */
/* Optionally registers tone players */
/* Optionally create recorder file, if any. */
/* Create ringback tones */
/* Create AVI player virtual devices */
/* Add UDP transport unless it's disabled. */
/* Add UDP IPv6 transport unless it's disabled. */
/* Add TCP transport unless it's disabled */
/* Add local account */
/* Adjust local account config based on pjsua app config */
/* Add TCP IPv6 transport unless it's disabled. */
/* Add accounts */
/* Add buddies */
/* Optionally disable some codec */
/* Optionally set codec orders */
/* Use null sound device? */
/* Init call setting */
on_error:
pj_pool_release(tmp_pool);
app_destroy();
return status;
}
第一个是Create pjsua 调用pjsua_lib 的 pjsua_core
status = pjsua_create();
//Instantiate pjsua application.
PJ_DEF(pj_status_t) pjsua_create(void){
/* Init pjsua data */
init_data();
/* Set default logging settings */
pjsua_logging_config_default(&pjsua_var.log_cfg);
/* Init PJLIB: */
status = pj_init();
pj_log_push_indent();
/* Init random seed */
init_random_seed();
/* Init PJLIB-UTIL: */
status = pjlib_util_init();
/* Init PJNATH */
status = pjnath_init();
/* Set default sound device ID */
pjsua_var.cap_dev = PJMEDIA_AUD_DEFAULT_CAPTURE_DEV;
pjsua_var.play_dev = PJMEDIA_AUD_DEFAULT_PLAYBACK_DEV;
/* Set default video device ID */
pjsua_var.vcap_dev = PJMEDIA_VID_DEFAULT_CAPTURE_DEV;
pjsua_var.vrdr_dev = PJMEDIA_VID_DEFAULT_RENDER_DEV;
/* Init caching pool. */
pj_caching_pool_init(&pjsua_var.cp, NULL, 0);
/* Create memory pool for application. */
pjsua_var.pool = pjsua_pool_create("pjsua", 1000, 1000);
/* Create mutex */
status = pj_mutex_create_recursive(pjsua_var.pool, "pjsua", &pjsua_var.mutex);
/* Must create SIP endpoint to initialize SIP parser. The parser
* is needed for example when application needs to call pjsua_verify_url().
*/
status = pjsip_endpt_create(&pjsua_var.cp.factory, pj_gethostname()->ptr, &pjsua_var.endpt);
/* Init timer entry list */
pj_list_init(&pjsua_var.timer_list);
/* Create timer mutex */
status = pj_mutex_create_recursive(pjsua_var.pool, "pjsua_timer", &pjsua_var.timer_mutex);
pjsua_set_state(PJSUA_STATE_CREATED);
pj_log_pop_indent();
return PJ_SUCCESS;
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-67841-2.html
限制条件可放宽
这样算