PacketRouter

PacketRouter,继承PacedSender和TransportSequenceNumberAllocator;PacketRouter保持发送模块的小碎步发送。同时接收反馈消息,如果存在发送模块,则将反馈消息转发给发送模块,如果有发送模块处理则退出,如果没有发送模块处理则发送给接收模块处理。

TransportSequenceNumberAllocator只是一个产生传输序列号虚基类。

PacedSender用于小碎步的按照某码率发送数据,见PacedSender;


PacketRouter:函数解析:

void AddSendRtpModule(RtpRtcp* rtp_module):添加发送模块

void RemoveSendRtpModule(RtpRtcp* rtp_module):移除发送模块

void AddReceiveRtpModule(RtpRtcp* rtp_module):添加接收模块

void RemoveReceiveRtpModule(RtpRtcp* rtp_module):移除接收模块

bool TimeToSendPacket(uint32_t ssrc, uint16_t sequence_number,int64_t capture_timestamp,bool retransmission,const PacedPacketInfo& packet_info):调用PacedSender的方法,根据ssrc匹配发送模块,然后调用该发送模块的TimeToSendPacket方法,返回下一次需要发送的时间。

size_t PacketRouter::TimeToSendPadding(size_t bytes_to_send, PacedPacketInfo& pacing_info):按照名字,应该是下一次需要发送填充数据的时间

virtual bool SendFeedback(rtcp::TransportFeedback* packet):发送反馈信息到发送端

void SetTransportWideSequenceNumber(uint16_t sequence_number);设置一个SequenceNumber,一般是设置起始的。

  uint16_t AllocateSequenceNumber() override;TransportSequenceNumberAllocator虚基类的接口,在已存在的SequenceNumber+1产生一个新的SequenceNumber,

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容