亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? siprtp.c

?? 基于sip協(xié)議的網(wǎng)絡(luò)電話源碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
	/* Bytes */	MIN_(min_stat.rx.bytes, audio->rtcp.stat.rx.bytes);	MAX_(max_stat.rx.bytes, audio->rtcp.stat.rx.bytes);	AVG_(avg_stat.rx.bytes, audio->rtcp.stat.rx.bytes);	/* Packet loss */	MIN_(min_stat.rx.loss, audio->rtcp.stat.rx.loss);	MAX_(max_stat.rx.loss, audio->rtcp.stat.rx.loss);	AVG_(avg_stat.rx.loss, audio->rtcp.stat.rx.loss);	/* Packet dup */	MIN_(min_stat.rx.dup, audio->rtcp.stat.rx.dup);	MAX_(max_stat.rx.dup, audio->rtcp.stat.rx.dup);	AVG_(avg_stat.rx.dup, audio->rtcp.stat.rx.dup);	/* Packet reorder */	MIN_(min_stat.rx.reorder, audio->rtcp.stat.rx.reorder);	MAX_(max_stat.rx.reorder, audio->rtcp.stat.rx.reorder);	AVG_(avg_stat.rx.reorder, audio->rtcp.stat.rx.reorder);	/* Jitter  */	MIN_(min_stat.rx.jitter.min, audio->rtcp.stat.rx.jitter.min);	MAX_(max_stat.rx.jitter.max, audio->rtcp.stat.rx.jitter.max);	AVG_(avg_stat.rx.jitter.avg, audio->rtcp.stat.rx.jitter.avg);	/* TX Statistisc: */	/* Packets */	MIN_(min_stat.tx.pkt, audio->rtcp.stat.tx.pkt);	MAX_(max_stat.tx.pkt, audio->rtcp.stat.tx.pkt);	AVG_(avg_stat.tx.pkt, audio->rtcp.stat.tx.pkt);	/* Bytes */	MIN_(min_stat.tx.bytes, audio->rtcp.stat.tx.bytes);	MAX_(max_stat.tx.bytes, audio->rtcp.stat.tx.bytes);	AVG_(avg_stat.tx.bytes, audio->rtcp.stat.tx.bytes);	/* Packet loss */	MIN_(min_stat.tx.loss, audio->rtcp.stat.tx.loss);	MAX_(max_stat.tx.loss, audio->rtcp.stat.tx.loss);	AVG_(avg_stat.tx.loss, audio->rtcp.stat.tx.loss);	/* Packet dup */	MIN_(min_stat.tx.dup, audio->rtcp.stat.tx.dup);	MAX_(max_stat.tx.dup, audio->rtcp.stat.tx.dup);	AVG_(avg_stat.tx.dup, audio->rtcp.stat.tx.dup);	/* Packet reorder */	MIN_(min_stat.tx.reorder, audio->rtcp.stat.tx.reorder);	MAX_(max_stat.tx.reorder, audio->rtcp.stat.tx.reorder);	AVG_(avg_stat.tx.reorder, audio->rtcp.stat.tx.reorder);	/* Jitter  */	MIN_(min_stat.tx.jitter.min, audio->rtcp.stat.tx.jitter.min);	MAX_(max_stat.tx.jitter.max, audio->rtcp.stat.tx.jitter.max);	AVG_(avg_stat.tx.jitter.avg, audio->rtcp.stat.tx.jitter.avg);	/* RTT */	MIN_(min_stat.rtt.min, audio->rtcp.stat.rtt.min);	MAX_(max_stat.rtt.max, audio->rtcp.stat.rtt.max);	AVG_(avg_stat.rtt.avg, audio->rtcp.stat.rtt.avg);	++count;    }    if (count == 0) {	puts("No active calls");	return;    }    printf("Total %d call(s) active.\n"	   "                    Average Statistics\n"	   "                    min     avg     max \n"	   "                -----------------------\n"	   " call duration: %7d %7d %7d %s\n"	   " connect delay: %7d %7d %7d %s\n"	   " RX stat:\n"	   "       packets: %7s %7s %7s %s\n"	   "       payload: %7s %7s %7s %s\n"	   "          loss: %7d %7d %7d %s\n"	   "  percent loss: %7.3f %7.3f %7.3f %s\n"	   "           dup: %7d %7d %7d %s\n"	   "       reorder: %7d %7d %7d %s\n"	   "        jitter: %7.3f %7.3f %7.3f %s\n"	   " TX stat:\n"	   "       packets: %7s %7s %7s %s\n"	   "       payload: %7s %7s %7s %s\n"	   "          loss: %7d %7d %7d %s\n"	   "  percent loss: %7.3f %7.3f %7.3f %s\n"	   "           dup: %7d %7d %7d %s\n"	   "       reorder: %7d %7d %7d %s\n"	   "        jitter: %7.3f %7.3f %7.3f %s\n"	   " RTT          : %7.3f %7.3f %7.3f %s\n"	   ,	   count,	   call_dur.min/1000, call_dur.avg/1000, call_dur.max/1000, 	   "seconds",	   call_pdd.min, call_pdd.avg, call_pdd.max, 	   "ms",	   /* rx */	   good_number(srx_min, min_stat.rx.pkt),	   good_number(srx_avg, avg_stat.rx.pkt),	   good_number(srx_max, max_stat.rx.pkt),	   "packets",	   good_number(brx_min, min_stat.rx.bytes),	   good_number(brx_avg, avg_stat.rx.bytes),	   good_number(brx_max, max_stat.rx.bytes),	   "bytes",	   min_stat.rx.loss, avg_stat.rx.loss, max_stat.rx.loss,	   "packets",	   	   min_stat.rx.loss*100.0/(min_stat.rx.pkt+min_stat.rx.loss),	   avg_stat.rx.loss*100.0/(avg_stat.rx.pkt+avg_stat.rx.loss),	   max_stat.rx.loss*100.0/(max_stat.rx.pkt+max_stat.rx.loss),	   "%",	   min_stat.rx.dup, avg_stat.rx.dup, max_stat.rx.dup,	   "packets",	   min_stat.rx.reorder, avg_stat.rx.reorder, max_stat.rx.reorder,	   "packets",	   min_stat.rx.jitter.min/1000.0, 	   avg_stat.rx.jitter.avg/1000.0, 	   max_stat.rx.jitter.max/1000.0,	   "ms",		   /* tx */	   good_number(stx_min, min_stat.tx.pkt),	   good_number(stx_avg, avg_stat.tx.pkt),	   good_number(stx_max, max_stat.tx.pkt),	   "packets",	   good_number(btx_min, min_stat.tx.bytes),	   good_number(btx_avg, avg_stat.tx.bytes),	   good_number(btx_max, max_stat.tx.bytes),	   "bytes",	   min_stat.tx.loss, avg_stat.tx.loss, max_stat.tx.loss,	   "packets",	   	   min_stat.tx.loss*100.0/(min_stat.tx.pkt+min_stat.tx.loss),	   avg_stat.tx.loss*100.0/(avg_stat.tx.pkt+avg_stat.tx.loss),	   max_stat.tx.loss*100.0/(max_stat.tx.pkt+max_stat.tx.loss),	   "%",	   min_stat.tx.dup, avg_stat.tx.dup, max_stat.tx.dup,	   "packets",	   min_stat.tx.reorder, avg_stat.tx.reorder, max_stat.tx.reorder,	   "packets",	   min_stat.tx.jitter.min/1000.0, 	   avg_stat.tx.jitter.avg/1000.0, 	   max_stat.tx.jitter.max/1000.0,	   "ms",	   /* rtt */	   min_stat.rtt.min/1000.0, 	   avg_stat.rtt.avg/1000.0, 	   max_stat.rtt.max/1000.0,	   "ms"	   );}#include "siprtp_report.c"static void list_calls(){    unsigned i;    puts("List all calls:");    for (i=0; i<app.max_calls; ++i) {	if (!app.call[i].inv)	    continue;	print_call(i);    }}static void hangup_call(unsigned index){    pjsip_tx_data *tdata;    pj_status_t status;    if (app.call[index].inv == NULL)	return;    status = pjsip_inv_end_session(app.call[index].inv, 603, NULL, &tdata);    if (status==PJ_SUCCESS && tdata!=NULL)	pjsip_inv_send_msg(app.call[index].inv, tdata);}static void hangup_all_calls(){    unsigned i;    for (i=0; i<app.max_calls; ++i) {	if (!app.call[i].inv)	    continue;	hangup_call(i);    }        /* Wait until all calls are terminated */    for (i=0; i<app.max_calls; ++i) {	while (app.call[i].inv)	    pj_thread_sleep(10);    }}static pj_bool_t simple_input(const char *title, char *buf, pj_size_t len){    char *p;    printf("%s (empty to cancel): ", title); fflush(stdout);    fgets(buf, len, stdin);    /* Remove trailing newlines. */    for (p=buf; ; ++p) {	if (*p=='\r' || *p=='\n') *p='\0';	else if (!*p) break;    }    if (!*buf)	return PJ_FALSE;        return PJ_TRUE;}static const char *MENU ="\n""Enter menu character:\n""  s    Summary\n""  l    List all calls\n""  h    Hangup a call\n""  H    Hangup all calls\n""  q    Quit\n""\n";/* Main screen menu */static void console_main(){    char input1[10];    unsigned i;    printf("%s", MENU);    for (;;) {	printf(">>> "); fflush(stdout);	fgets(input1, sizeof(input1), stdin);	switch (input1[0]) {	case 's':	    print_avg_stat();	    break;	case 'l':	    list_calls();	    break;	case 'h':	    if (!simple_input("Call number to hangup", input1, sizeof(input1)))		break;	    i = atoi(input1);	    hangup_call(i);	    break;	case 'H':	    hangup_all_calls();	    break;	case 'q':	    goto on_exit;	default:	    puts("Invalid command");	    printf("%s", MENU);	    break;	}	fflush(stdout);    }on_exit:    hangup_all_calls();}/***************************************************************************** * Below is a simple module to log all incoming and outgoing SIP messages *//* Notification on incoming messages */static pj_bool_t logger_on_rx_msg(pjsip_rx_data *rdata){    PJ_LOG(4,(THIS_FILE, "RX %d bytes %s from %s:%d:\n"			 "%s\n"			 "--end msg--",			 rdata->msg_info.len,			 pjsip_rx_data_get_info(rdata),			 rdata->pkt_info.src_name,			 rdata->pkt_info.src_port,			 rdata->msg_info.msg_buf));        /* Always return false, otherwise messages will not get processed! */    return PJ_FALSE;}/* Notification on outgoing messages */static pj_status_t logger_on_tx_msg(pjsip_tx_data *tdata){        /* Important note:     *	tp_info field is only valid after outgoing messages has passed     *	transport layer. So don't try to access tp_info when the module     *	has lower priority than transport layer.     */    PJ_LOG(4,(THIS_FILE, "TX %d bytes %s to %s:%d:\n"			 "%s\n"			 "--end msg--",			 (tdata->buf.cur - tdata->buf.start),			 pjsip_tx_data_get_info(tdata),			 tdata->tp_info.dst_name,			 tdata->tp_info.dst_port,			 tdata->buf.start));    /* Always return success, otherwise message will not get sent! */    return PJ_SUCCESS;}/* The module instance. */static pjsip_module msg_logger = {    NULL, NULL,				/* prev, next.		*/    { "mod-siprtp-log", 14 },		/* Name.		*/    -1,					/* Id			*/    PJSIP_MOD_PRIORITY_TRANSPORT_LAYER-1,/* Priority	        */    NULL,				/* load()		*/    NULL,				/* start()		*/    NULL,				/* stop()		*/    NULL,				/* unload()		*/    &logger_on_rx_msg,			/* on_rx_request()	*/    &logger_on_rx_msg,			/* on_rx_response()	*/    &logger_on_tx_msg,			/* on_tx_request.	*/    &logger_on_tx_msg,			/* on_tx_response()	*/    NULL,				/* on_tsx_state()	*/};/***************************************************************************** * Console application custom logging: */static FILE *log_file;static void app_log_writer(int level, const char *buffer, int len){    /* Write to both stdout and file. */    if (level <= app.app_log_level)	pj_log_write(level, buffer, len);    if (log_file) {	fwrite(buffer, len, 1, log_file);	fflush(log_file);    }}pj_status_t app_logging_init(void){    /* Redirect log function to ours */    pj_log_set_log_func( &app_log_writer );    /* If output log file is desired, create the file: */    if (app.log_filename) {	log_file = fopen(app.log_filename, "wt");	if (log_file == NULL) {	    PJ_LOG(1,(THIS_FILE, "Unable to open log file %s", 		      app.log_filename));   	    return -1;	}    }    return PJ_SUCCESS;}void app_logging_shutdown(void){    /* Close logging file, if any: */    if (log_file) {	fclose(log_file);	log_file = NULL;    }}/* * main() */int main(int argc, char *argv[]){    unsigned i;    pj_status_t status;    /* Must init PJLIB first */    status = pj_init();    if (status != PJ_SUCCESS)	return 1;    /* Get command line options */    status = init_options(argc, argv);    if (status != PJ_SUCCESS)	return 1;    /* Verify options: */    /* Auto-quit can not be specified for UAS */    if (app.auto_quit && app.uri_to_call.slen == 0) {	printf("Error: --auto-quit option only valid for outgoing "	       "mode (UAC) only\n");	return 1;    }    /* Init logging */    status = app_logging_init();    if (status != PJ_SUCCESS)	return 1;    /* Init SIP etc */    status = init_sip();    if (status != PJ_SUCCESS) {	app_perror(THIS_FILE, "Initialization has failed", status);	destroy_sip();	return 1;    }    /* Register module to log incoming/outgoing messages */    pjsip_endpt_register_module(app.sip_endpt, &msg_logger);    /* Init media */    status = init_media();    if (status != PJ_SUCCESS) {	app_perror(THIS_FILE, "Media initialization failed", status);	destroy_sip();	return 1;    }    /* Start worker threads */    for (i=0; i<app.thread_count; ++i) {	pj_thread_create( app.pool, "app", &sip_worker_thread, NULL,			  0, 0, &app.sip_thread[i]);    }    /* If URL is specified, then make call immediately */    if (app.uri_to_call.slen) {	unsigned i;	PJ_LOG(3,(THIS_FILE, "Making %d calls to %s..", app.max_calls,		  app.uri_to_call.ptr));	for (i=0; i<app.max_calls; ++i) {	    status = make_call(&app.uri_to_call);	    if (status != PJ_SUCCESS) {		app_perror(THIS_FILE, "Error making call", status);		break;	    }	}	if (app.auto_quit) {	    /* Wait for calls to complete */	    while (app.uac_calls < app.max_calls)		pj_thread_sleep(100);	    pj_thread_sleep(200);	} else {	    /* Start user interface loop */	    console_main();	}    } else {	PJ_LOG(3,(THIS_FILE, "Ready for incoming calls (max=%d)", 		  app.max_calls));	/* Start user interface loop */	console_main();    }        /* Shutting down... */    destroy_sip();    destroy_media();    if (app.pool) {	pj_pool_release(app.pool);	app.pool = NULL;	pj_caching_pool_destroy(&app.cp);    }    app_logging_shutdown();    /* Shutdown PJLIB */    pj_shutdown();    return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩在线一区二区三区视频| 亚洲午夜电影网| 国产呦精品一区二区三区网站| 欧美欧美午夜aⅴ在线观看| 极品少妇一区二区| 国产亚洲成年网址在线观看| proumb性欧美在线观看| 日韩伦理免费电影| 欧美天堂亚洲电影院在线播放| 午夜精品久久久久久久| 精品国产区一区| eeuss鲁一区二区三区| 亚洲国产一区二区在线播放| 在线电影一区二区三区| 国内精品免费**视频| 亚洲欧洲av在线| 欧美美女激情18p| 国内精品在线播放| 亚洲欧美电影一区二区| 欧美一区二区视频在线观看2022| 韩国v欧美v日本v亚洲v| 18成人在线观看| 欧美一区二区三区喷汁尤物| 国产成人免费9x9x人网站视频| 亚洲区小说区图片区qvod| 欧美一区二区视频在线观看2020| 国产精品18久久久久久久久| 亚洲精品视频在线观看网站| 日韩一区二区在线观看视频播放| 国产91露脸合集magnet| 亚洲线精品一区二区三区八戒| 日韩久久久久久| 黑人巨大精品欧美黑白配亚洲| k8久久久一区二区三区| 免费欧美在线视频| 自拍偷拍国产精品| 欧美精品一区二区不卡| 欧美午夜片在线观看| 东方欧美亚洲色图在线| 热久久国产精品| 亚洲精品一二三| 久久精品一级爱片| 在线综合视频播放| 91理论电影在线观看| 国产高清精品久久久久| 免费看日韩a级影片| 亚洲一级不卡视频| 国产精品国产三级国产有无不卡 | 一区二区三区四区亚洲| 国产亚洲女人久久久久毛片| 欧美狂野另类xxxxoooo| 一本大道综合伊人精品热热| 国产成人免费9x9x人网站视频| 免费欧美在线视频| 性做久久久久久免费观看| 国产精品三级av| 久久久www免费人成精品| 91精品国产免费| 欧美亚洲愉拍一区二区| 91视视频在线观看入口直接观看www | 欧美不卡在线视频| 欧美日韩一区二区不卡| 99国产一区二区三精品乱码| 风流少妇一区二区| 国产麻豆精品在线观看| 美女在线视频一区| 麻豆国产精品官网| 日韩精品乱码av一区二区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲人吸女人奶水| 亚洲男人的天堂在线观看| 偷拍与自拍一区| 亚洲综合色视频| 亚洲成av人片一区二区梦乃| 一区二区成人在线| 亚洲最大成人综合| 亚洲黄一区二区三区| 亚洲欧美日韩一区二区| 亚洲欧美电影院| 日韩伦理av电影| 亚洲国产岛国毛片在线| 中文一区在线播放| 国产精品美日韩| 国产精品国产三级国产普通话99| 日本一区二区视频在线观看| 国产精品污污网站在线观看| 国产精品麻豆99久久久久久| 中文字幕一区二区视频| 亚洲男人天堂一区| 亚洲成人自拍网| 麻豆精品一区二区av白丝在线| 久久精品国产第一区二区三区| 国产一区高清在线| 99国产精品久| 欧美三级韩国三级日本三斤| 69久久99精品久久久久婷婷| 久久综合一区二区| 亚洲视频1区2区| 亚洲高清一区二区三区| 久久成人免费电影| 成人av在线资源网站| 色欧美片视频在线观看 | 日本午夜精品视频在线观看| 毛片av一区二区| 成人av在线网| 欧美理论电影在线| 久久婷婷色综合| 亚洲乱码中文字幕| 青青草原综合久久大伊人精品| 国产白丝网站精品污在线入口| 成人av在线看| 日韩视频在线永久播放| 亚洲国产精品t66y| 婷婷开心久久网| 成人性生交大片免费看视频在线| 欧美色视频在线观看| 精品国产自在久精品国产| 日韩伦理av电影| 国产综合久久久久久鬼色| 91麻豆成人久久精品二区三区| 日韩精品中午字幕| 亚洲码国产岛国毛片在线| 日本成人中文字幕在线视频| 99国产精品久久久久久久久久久| 日韩一区二区电影| 中文字幕日韩一区二区| 极品少妇一区二区| 精品视频一区三区九区| 亚洲国产精品成人综合| 久久国产免费看| 久久久久久久久99精品| 香蕉av福利精品导航| k8久久久一区二区三区| www成人在线观看| 午夜精品久久久久久久久久久 | 欧洲av在线精品| 欧美韩国一区二区| 蜜桃精品视频在线观看| 欧美日韩视频专区在线播放| 国产精品情趣视频| 精品一区二区免费| 欧美日韩一级二级| 亚洲视频在线观看三级| 粉嫩aⅴ一区二区三区四区五区| 欧美一区二区福利视频| 亚洲午夜电影在线| 一本久久a久久精品亚洲| 久久精品夜色噜噜亚洲aⅴ| 理论电影国产精品| 欧美一区二区三区免费在线看 | 亚洲精品成a人| 成人免费高清视频在线观看| 日韩精品专区在线影院重磅| 日韩av电影天堂| 欧美日韩黄色影视| 一区二区三区四区亚洲| 91久久久免费一区二区| 国产精品福利av | 99精品国产一区二区三区不卡| 久久先锋影音av鲁色资源网| 日日摸夜夜添夜夜添精品视频| 欧美性xxxxxx少妇| 亚洲一区二区三区影院| 欧美在线一二三四区| 最新日韩av在线| 91丝袜国产在线播放| 亚洲狼人国产精品| 91亚洲国产成人精品一区二区三| 香蕉加勒比综合久久| 欧美日本一区二区| 日韩成人午夜电影| 在线播放中文一区| 免费看欧美美女黄的网站| 欧美xxxxxxxxx| 国产成人自拍高清视频在线免费播放| 精品免费日韩av| 国产成人小视频| 国产精品福利一区二区| 色综合色综合色综合 | 欧美一区二区三区在线观看视频| 日韩av电影一区| 久久久另类综合| 97精品国产露脸对白| 夜夜夜精品看看| 51久久夜色精品国产麻豆| 狠狠色狠狠色综合日日91app| 久久精子c满五个校花| 99久久亚洲一区二区三区青草| 一区二区三区视频在线看| 欧美一区二区三区四区在线观看| 久久99国产精品成人| 中文在线一区二区| 欧美日韩专区在线| 精品一区二区三区的国产在线播放| 日本一区二区成人在线| 欧美视频精品在线| 精品中文av资源站在线观看| 国产精品伦理在线| 7878成人国产在线观看| 国产盗摄一区二区三区|