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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mediastream.c

?? 基于osip、eXosip、speex、ffmpeg的VoIP源代碼
?? C
字號:
/*mediastreamer2 library - modular sound and video processing and streamingCopyright (C) 2006  Simon MORLAT (simon.morlat@linphone.org)This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/#ifdef HAVE_CONFIG_H#include "mediastreamer-config.h"#endif#include "mediastreamer2/mediastream.h"#ifdef VIDEO_ENABLED#include "mediastreamer2/msv4l.h"#endif#include <signal.h>#include <sys/types.h>#ifndef WIN32#include <unistd.h>#endif#include <stdio.h>#include <stdlib.h>#include <string.h>static int cond=1;static void stop_handler(int signum){	cond--;	if (cond<0) exit(-1);}static bool_t parse_addr(const char *addr, char *ip, int len, int *port){	const char *semicolon=NULL;	int iplen;	int slen;	const char *p;	*port=0;	semicolon=strchr(addr,':');	for (p=addr+strlen(addr)-1;p>addr;p--){		if (*p==':') {			semicolon=p;			break;		}	}	if (semicolon==NULL) return FALSE;	iplen=semicolon-addr;	slen=MIN(iplen,len-1);	strncpy(ip,addr,slen);	ip[slen]='\0';	*port=atoi(semicolon+1);	return TRUE;}static void display_items(void *user_data, uint32_t csrc, rtcp_sdes_type_t t, const char *content, uint8_t content_len){	char str[256];	int len=MIN(sizeof(str)-1,content_len);	strncpy(str,content,len);	str[len]='\0';	switch(t){		case RTCP_SDES_CNAME:			ms_message("Found CNAME=%s",str);		break;		case RTCP_SDES_TOOL:			ms_message("Found TOOL=%s",str);		break;		case RTCP_SDES_NOTE:			ms_message("Found NOTE=%s",str);		break;		default:			ms_message("Unhandled SDES item (%s)",str);	}}static void parse_rtcp(mblk_t *m){	do{		if (rtcp_is_RR(m)){			ms_message("Receiving RTCP RR");		}else if (rtcp_is_SR(m)){			ms_message("Receiving RTCP SR");		}else if (rtcp_is_SDES(m)){			ms_message("Receiving RTCP SDES");			rtcp_sdes_parse(m,display_items,NULL);		}else {			ms_message("Receiving unhandled RTCP message");		}	}while(rtcp_next_packet(m));}static void parse_events(OrtpEvQueue *q){	OrtpEvent *ev;	while((ev=ortp_ev_queue_get(q))!=NULL){		OrtpEventData *d=ortp_event_get_data(ev);		switch(ortp_event_get_type(ev)){			case ORTP_EVENT_RTCP_PACKET_RECEIVED:				parse_rtcp(d->packet);			break;			default:				ms_warning("Unhandled ortp event.");		}		ortp_event_destroy(ev);	}}const char *usage="mediastream --local <port> --remote <ip:port> --payload <payload type number>\n"								"[ --fmtp <fmtpline>]\n"								"[ --jitter <miliseconds>]\n";static void run_media_streams(int localport, const char *remote_ip, int remoteport, int payload, const char *fmtp, int jitter, bool_t ec, int bitrate);int main(int argc, char * argv[]){	int i;	int localport=0,remoteport=0,payload=0;	char ip[50];	const char *fmtp=NULL;	int jitter=50;	int bitrate=0;	bool_t ec=FALSE;	/*create the rtp session */	ortp_init();	ortp_set_log_level_mask(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL);	rtp_profile_set_payload(&av_profile,115,&payload_type_lpc1015);	rtp_profile_set_payload(&av_profile,110,&payload_type_speex_nb);	rtp_profile_set_payload(&av_profile,111,&payload_type_speex_wb);	rtp_profile_set_payload(&av_profile,112,&payload_type_ilbc);#ifdef VIDEO_ENABLED	rtp_profile_set_payload(&av_profile,98,&payload_type_h263_1998);	rtp_profile_set_payload(&av_profile,97,&payload_type_theora);	rtp_profile_set_payload(&av_profile,99,&payload_type_mp4v);	rtp_profile_set_payload(&av_profile,100,&payload_type_x_snow);	rtp_profile_set_payload(&av_profile,102,&payload_type_h264);#endif	if (argc<4) {		printf(usage);		return -1;	}	for (i=1;i<argc;i++){		if (strcmp(argv[i],"--local")==0){			i++;			localport=atoi(argv[i]);		}else if (strcmp(argv[i],"--remote")==0){			i++;			if (!parse_addr(argv[i],ip,sizeof(ip),&remoteport)) {				printf(usage);				return -1;			}			printf("Remote addr: ip=%s port=%i\n",ip,remoteport);		}else if (strcmp(argv[i],"--payload")==0){			i++;			payload=atoi(argv[i]);		}else if (strcmp(argv[i],"--fmtp")==0){			i++;			fmtp=argv[i];		}else if (strcmp(argv[i],"--jitter")==0){			i++;			jitter=atoi(argv[i]);		}else if (strcmp(argv[i],"--bitrate")==0){			i++;			bitrate=atoi(argv[i]);		}else if (strcmp(argv[i],"--ec")==0){			ec=TRUE;		}					}	run_media_streams(localport,ip,remoteport,payload,fmtp,jitter,ec,bitrate);	return 0;}void run_media_streams(int localport,  const char *remote_ip, int remoteport, int payload, const char *fmtp, int jitter, bool_t ec, int bitrate){	AudioStream *audio=NULL;#ifdef VIDEO_ENABLED	VideoStream *video=NULL;#endif	RtpSession *session=NULL;	PayloadType *pt;	RtpProfile *profile=rtp_profile_clone_full(&av_profile);	OrtpEvQueue *q=ortp_ev_queue_new();		ms_init();	signal(SIGINT,stop_handler);	pt=rtp_profile_get_payload(profile,payload);	if (pt==NULL){		printf("Error: no payload defined with number %i.",payload);		exit(-1);	}	if (fmtp!=NULL) payload_type_set_send_fmtp(pt,fmtp);	if (bitrate>0) pt->normal_bitrate=bitrate;	if (pt->type!=PAYLOAD_VIDEO){		printf("Starting audio stream.\n");		audio=audio_stream_start(profile,localport,remote_ip,remoteport,payload,jitter, ec);		if (audio) session=audio->session;	}else{#ifdef VIDEO_ENABLED		printf("Starting video stream.\n");		video=video_stream_new(localport, ms_is_ipv6(remote_ip));		video_stream_start(video,profile,					remote_ip,					remoteport,remoteport+1,					payload,					jitter,					ms_web_cam_manager_get_default_cam(ms_web_cam_manager_get()));		session=video->session;#else		printf("Error: video support not compiled.\n");#endif	}	rtp_session_register_event_queue(session,q);	while(cond)	{		int n;        	for(n=0;n<100;++n){#ifdef WIN32			MSG msg;			Sleep(10);			while (PeekMessage(&msg, NULL, 0, 0,1)){        			TranslateMessage(&msg);        			DispatchMessage(&msg);			}#else			struct timespec ts;			ts.tv_sec=0;			ts.tv_nsec=10000000;			nanosleep(&ts,NULL);#endif#if defined(VIDEO_ENABLED)			if (video) video_stream_iterate(video);#endif		}		ortp_global_stats_display();		if (session){			printf("Bandwidth usage: download=%f kbits/sec, upload=%f kbits/sec\n",				rtp_session_compute_recv_bandwidth(session)*1e-3,				rtp_session_compute_send_bandwidth(session)*1e-3);			parse_events(q);		}	}		printf("stoping all...\n");		if (audio) audio_stream_stop(audio);#ifdef VIDEO_ENABLED	if (video) video_stream_stop(video);#endif	ortp_ev_queue_destroy(q);	rtp_profile_destroy(profile);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性高清videossexo| 日韩电影在线免费观看| 国产传媒欧美日韩成人| 久久久久久久久免费| 精品粉嫩超白一线天av| 欧美精品乱人伦久久久久久| 日韩在线a电影| 极品少妇xxxx精品少妇| 麻豆精品精品国产自在97香蕉| 男女男精品视频| 高清av一区二区| 在线一区二区三区| 精品电影一区二区| 紧缚奴在线一区二区三区| 久久综合九色综合97婷婷| 亚洲免费观看高清完整版在线观看| 久久精品网站免费观看| 国产精品久久久久影院亚瑟| 亚洲激情自拍视频| 国产激情91久久精品导航| 久久久久久毛片| 国产成人啪免费观看软件| 国产精品午夜电影| 日本vs亚洲vs韩国一区三区| 久久精品这里都是精品| 色婷婷久久久亚洲一区二区三区| aaa欧美日韩| 日韩美女在线视频| 亚洲欧美另类图片小说| 678五月天丁香亚洲综合网| 国产精品夫妻自拍| 精品噜噜噜噜久久久久久久久试看| 亚洲激情综合网| 欧美精品一区二区三区高清aⅴ| 一区二区三区av电影| 激情深爱一区二区| 欧美一级黄色录像| 久久精品国产一区二区| 久久五月婷婷丁香社区| 一本大道久久精品懂色aⅴ| 国产激情一区二区三区四区 | 国产精品激情偷乱一区二区∴| 欧美另类videos死尸| 国产精品女主播av| 91黄色免费看| 日本电影亚洲天堂一区| 色综合久久久久综合体桃花网| 狠狠色伊人亚洲综合成人| 青青草97国产精品免费观看无弹窗版 | 色先锋aa成人| 91精品国产色综合久久不卡蜜臀| 2020国产精品自拍| 中文字幕日韩一区二区| 精品国产91乱码一区二区三区 | 成人免费av在线| 亚洲国产成人av好男人在线观看| 欧美日韩精品一区二区三区四区| 久久精品99国产精品| 亚洲成av人影院| 亚洲欧洲另类国产综合| 国产suv精品一区二区三区| 成人高清免费在线播放| 久久99国产精品久久99| 精品一区二区三区在线观看 | 亚洲一区二区三区四区的| 国产乱码一区二区三区| 日韩理论片在线| 色久优优欧美色久优优| 91免费观看在线| 蜜桃精品视频在线| 日本高清不卡视频| 欧美日韩国产高清一区二区三区 | 蜜桃精品视频在线| 国产盗摄一区二区| 91丨porny丨中文| 91精品国产综合久久久久久漫画| 久久这里只有精品6| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩国产色站一区二区三区| 日韩午夜在线影院| 久久精品国产色蜜蜜麻豆| 宅男在线国产精品| 免费一级片91| 国产一区二区三区在线看麻豆| 精品人在线二区三区| 一区二区欧美视频| 91视频免费播放| 国产日本欧洲亚洲| 亚洲精品一区二区三区福利| 伊人婷婷欧美激情| 成人国产精品免费观看视频| 欧美精品vⅰdeose4hd| 亚洲精品一卡二卡| 色婷婷综合在线| 久久精品国产**网站演员| 欧美亚洲国产一区二区三区| 一区二区三区高清在线| 日韩免费电影一区| 91丨porny丨国产| 午夜精品久久久久久不卡8050| 国产另类ts人妖一区二区| 一区二区三区丝袜| ww亚洲ww在线观看国产| 日本高清成人免费播放| 狠狠网亚洲精品| 一区二区激情小说| 久久久综合精品| 欧美日韩视频专区在线播放| 国产精品国产三级国产普通话三级 | 久久电影网电视剧免费观看| 精品奇米国产一区二区三区| 激情深爱一区二区| 国产精品美女视频| 欧美久久一二三四区| 国产在线乱码一区二区三区| 欧美国产精品中文字幕| 天天影视涩香欲综合网| 久久久亚洲午夜电影| 精品一区二区三区免费| 欧美精品在线观看播放| 欧美在线免费观看视频| 亚洲男人的天堂av| 国产精品色哟哟| 精品国产乱码久久久久久久| 中文字幕在线不卡一区| 欧美色大人视频| 成人在线视频一区二区| 亚洲美女淫视频| 欧美精品一区二区在线播放| 在线看国产一区二区| 青椒成人免费视频| 自拍视频在线观看一区二区| 日韩亚洲欧美综合| 欧美性猛交xxxx乱大交退制版| 色爱区综合激月婷婷| 蜜臀91精品一区二区三区| 亚洲人成网站在线| 国产天堂亚洲国产碰碰| 91精品国产欧美一区二区成人| 91在线小视频| 亚洲精品一卡二卡| 欧美激情综合在线| 精品国产一区a| 9191成人精品久久| 欧美日韩精品免费| 日本高清不卡一区| 在线这里只有精品| 欧美午夜精品久久久久久超碰 | jlzzjlzz亚洲日本少妇| 国产a视频精品免费观看| 国产乱人伦偷精品视频免下载| 蜜桃一区二区三区在线| 日本午夜精品一区二区三区电影| 午夜精品一区二区三区免费视频| 一区二区在线观看视频在线观看| 亚洲精品高清在线| 亚洲一区二区三区四区中文字幕 | 久久久久久黄色| 国产精品久久久久久久久免费相片| 久久久一区二区| 国产精品色哟哟网站| 亚洲一级在线观看| 久久精品国产成人一区二区三区| 久久国产夜色精品鲁鲁99| 国内精品自线一区二区三区视频| 国产精品中文字幕欧美| 成人一级视频在线观看| 在线免费视频一区二区| 欧美电视剧免费全集观看| 久久久国产一区二区三区四区小说 | 色综合久久中文综合久久97| 欧洲精品在线观看| 正在播放亚洲一区| 国产欧美一区二区三区网站| 一区二区三区在线影院| 国产在线国偷精品免费看| 99久久国产综合精品女不卡| 欧美精品日韩综合在线| 国产精品久久久久久一区二区三区 | 亚洲精品一区二区三区蜜桃下载| 亚洲丝袜美腿综合| 国产成人精品一区二区三区四区| 在线欧美日韩国产| 26uuu欧美| 久久99久久99精品免视看婷婷 | 日本精品视频一区二区| wwww国产精品欧美| 日韩电影在线观看电影| 色婷婷综合久色| 7777精品伊人久久久大香线蕉的 | 一区二区成人在线观看| 一区二区三区日韩精品| 国产一区视频导航| 欧美三级视频在线观看| 91精品国产乱| 国产精品日产欧美久久久久| 亚州成人在线电影| 91行情网站电视在线观看高清版| 精品欧美一区二区久久| 日韩一区精品视频|