代码流程:
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模块