代码流程:

BaseChannel::OnRtpPacket(const webrtc::RtpPacketReceived& parsed_packet)->切换线程

WebRtcVideoChannel::OnPacketReceived(rtc::CopyOnWriteBuffer packet, int64_t packet_time_us)->

Call::DeliverPacket(MediaType media_type, rtc::CopyOnWriteBuffer packet, int64_t packet_time_us)->

Call::DeliverRtp(MediaType media_type, rtc::CopyOnWriteBuffer packet, int64_t packet_time_us)->

RtpStreamReceiverController::OnRtpPacket(const RtpPacketReceived& packet)->

RtpDemuxer::OnRtpPacket(const RtpPacketReceived& packet)->

RtpVideoStreamReceiver::OnRtpPacket(const RtpPacketReceived& packet)->

RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet)->

RtpVideoStreamReceiver::OnReceivedPayloadData(const uint8_t* payload_data, size_t payload_size, const RTPHeader& rtp_header, const RTPVideoHeader& video_header, const absl::optional<RtpGenericFrameDescriptor>& generic_descriptor, bool is_recovered)->

NackModule::OnReceivedPacket(uint16_t seq_num, bool is_keyframe, bool is_recovered) RTPpacket传至Nack模块

基于WebRTC m79的NackModule

相关文章: