我是靠谱客的博主 昏睡红牛,最近开发中收集的这篇文章主要介绍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
最后
以上就是昏睡红牛为你收集整理的mediasoup源码分析(六)数据分发 Transport 到 Router 、Consumer的全部内容,希望文章能够帮你解决mediasoup源码分析(六)数据分发 Transport 到 Router 、Consumer所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复