1 创建
在RTPUDPv4Transmitter::Create(里有rtcpsock = socket(PF_INET,SOCK_DGRAM,0);rtcpsock即为首发rtcp包的SOCKET。
2 发包
在RTPUDPv4Transmitter有pollthread = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPPOLLTHREAD) RTPPollThread(*this,rtcpsched);这是为了创建线程实例pollthread,pollthread->Start(rtptrans)即为启动线程。发送的函数为:
int RTPSession::ProcessPolledData()
{
rtcpbuilder.BuildNextPacket......// 发送端会创建SR包,打RTCP包
{
......
RTPNew RTCPCompoundPacketBuilder //创建RTCP复合包
RTPNew RTCPSRPacket //创建RTCP的SR包
......
}
rtptrans->SendRTCPData...... //调用sendto发送数据。
......
}