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,

你可能感兴趣的:(PacketRouter)