天天看点

第十一章:ortp库rtpsend函数解读1、主线图

1、主线图

ortp_init();//ortp的初始化
av_profile_init(&av_profile);	//初始化profile,使得ortp能够支持不同格式音视频的传输
ortp_global_stats_reset();	//初始化全局变量(置零)
init_random_number_generator();//产生随机数
ortp_scheduler_init();	//初始化调度器(里面是一个定时器),决定资源分配,调度任务里面的多个会话,一个会话就是一个通信。
//通过会话来管理数据发送和接收,
ortp_set_log_level_mask	//记录log信息
rtp_session_new		//创建一个会话,本质是一个结构体,管理很多信息


//设置会话属性
rtp_session_set_scheduling_mode(session,1);
rtp_session_set_blocking_mode(session,1);
rtp_session_set_connected_mode(session,TRUE);
rtp_session_set_remote_addr(session,argv[2],atoi(argv[3]));
rtp_session_set_payload_type(session,0);


ssrc=getenv("SSRC");			//同步源标志 SSRC表示会话里面的参与方,通过SSRC来匹配这个数据包属于谁的,
if (ssrc!=NULL) {
		printf("using SSRC=%i.\n",atoi(ssrc));
		rtp_session_set_ssrc(session,atoi(ssrc));
	}


rtp_session_send_with_ts(session,buffer,i,user_ts); //发送数据
rtp_session_create_packet_with_data(session,(uint8_t*)buffer,len,NULL);//准备包,给数据添加包头
rtp_session_sendm_with_ts(session,m,userts);	//发送数据
           

继续阅读