mediasoup源码分析(六)数据分发 Transport 到 Router 、Consumer

一、Tansport 转发到Producer

Transport收到数据packet后,会解析出packet中所带的ssrc字段,然后基于ssrc找到该数据的Producer。

Transport::ReceiveRtpPacket
{
	// Get the associated Producer.
	RTC::Producer* producer = this->rtpListener.GetProducer(packet);//基于包中的ssrc选出Producer
}

Produer也是基于ssrc找到RtpStreamRecv

//生产者接收到rtp包,数据发送者类
Producer::ReceiveRtpPacketResult Producer::ReceiveRtpPacket(RTC::RtpPacket* packet)
{
	// Count number of RTP streams.  基于ssrc获取与该包相关的流管理类RTC::RtpStreamRecv
		auto numRtpStreamsBefore = this->mapSsrcRtpStream.size();

		auto* rtpStream = GetRtpStream(packet);
		// Media packet. 判断接收包和与之关联的流的SSRC是否相等,即得保证该包属于该流
		if (packet->GetSsrc() == rtpStream->GetSsrc())
		{
			result = ReceiveRtpPacketResult::MEDIA;

			// Process the packet.
			if (!rtpStream->ReceivePacket(packet))
			{

			}
		}
	this->listener->OnProducerRtpPacketRec

猜你喜欢

转载自blog.csdn.net/lcalqf/article/details/107973335