webrtc 代码学习(十)Video rtcp 获取数据

Video rtcp 获取数据
作者:LanPZzzz
本章我们简单讲述下Video rtcp 获取数据

文章目录

          • 接收数据,从::recvfrom, video rctp packet

接收数据,从::recvfrom, video rctp packet

void AsyncUDPSocket::OnReadEvent(rtc_base\asyncudpsocket.cc 107 行)
-> PhysicalSocket::RecvFrom(rtc_base\physicalsocketserver.cc 397 行)
-> SignalReadPacket(rtc_base\asyncudpsocket.cc 126 行) 只有1个signal
-> AllocationSequence::OnReadPacket (p2p\client\basicportallocator.cc 1696 行)
-> UDPPort::HandleIncomingPacket (p2p\base\stunport.cc 296 行)
-> UDPPort::OnReadPacket(p2p\base\stunport.cc 339 行)
-> Connection::OnReadPacket (p2p\base\port.cc 1195 行) p2p => 1对1 连接时,只有1个connection
-> SignalReadPacket (p2p\base\port.cc 1207 行 ) 只有1个signal
-> P2PTransportChannel::OnReadPacket (p2p\base\p2ptransportchannel.cc 2216 行)
-> SignalReadPacket (p2p\base\p2ptransportchannel.cc 2227 行) 只有1个signal
-> DtlsTransport::OnReadPacket (p2p\base\dtlstransport.cc 536 行)
-> SignalReadPacket (p2p\base\dtlstransport.cc 610 行) 有2个, webrtc::dtlsSrtpTransport(子类对象,调用基类RtpTransport::OnReadPacket) + crickt::sctpTransport
-> RtpTransport::OnReadPacket (pc\rtptransport.cc 248 行)
-> rtc::CopyOnWriteBuffer packet(data, len); (pc\rtptransport.cc 265 行) 数据进行copy
-> SrtpTransport::OnRtcpPacketReceived (pc\srtptransport.cc 218 行)
-> SignalRtcpPacketReceived => BaseChannel::OnRtcpPacketReceived (pc\channel.cc 488 行) 这里有4个channel,2个audio + 2个video channel,因为我创建了4的track
-> BaseChannel::ProcessPacket (pc\channel.cc 524 行)
-> WebRtcVideoChannel::OnRtcpReceived (media\engine\webrtcvideoengine.cc 1488 行)
-> call_->Receiver()->DeliverPacket(media\engine\webrtcvideoengine.cc 1496 行) => Call::DeliverPacket (call\call.cc 1297 行)
-> Call::DeliverRtcp (call\call.cc 1169 行)
-> if (stream->DeliverRtcp(packet, length)) (video_receive_streams_) (call\call.cc 1185 行) => VideoReceiveStream::DeliverRtcp (video\video_receive_stream.cc 165 行)
-> RtpVideoStreamReceiver::DeliverRtcp (video\rtp_video_stream_receiver.cc 442 行)
-> ModuleRtpRtcpImpl::IncomingRtcpPacket (modules\rtp_rtcp\source\rtp_rtcp_impl.cc 274 行)
-> =========================== 标注 1 ================================
-> RTCPReceiver::IncomingPacket (modules\rtp_rtcp\source\rtcp_receiver.cc 159 行)
-> RTCPReceiver::ParseCompoundPacket (modules\rtp_rtcp\source\rtcp_receiver.cc 307 行)
-> for loop 进行下面的匹配
-> CommonHeader::Parse (modules\rtp_rtcp\source\rtcp_packet\common_header.cc 30 行) 解析头 rtcp_block.type()
-> 根据 rtcp_block.type(),进行解析相应的包,现在接受的是 rtcp::SenderReport::kPacketType => RTCPReceiver::HandleSenderReport (modules\rtp_rtcp\source\rtcp_receiver.cc 409 行)
-> SenderReport::Parse (modules\rtp_rtcp\source\rtcp_packet\sender_report.cc 56 行)
-> 还有其他的type 值
-> ReceiveStatisticsProxy::RtcpPacketTypesCounterUpdated (video\receive_statistics_proxy.cc 645 行)
->
-> RTCPReceiver::TriggerCallbacksFromRtcpPacket (modules\rtp_rtcp\source\rtcp_receiver.cc 949 行)
-> rtp_rtcp_->OnReceivedRtcpReportBlocks (modules\rtp_rtcp\source\rtcp_receiver.cc 1012 行) => ModuleRtpRtcpImpl::OnReceivedRtcpReportBlocks (modules\rtp_rtcp\source\rtp_rtcp_impl.cc 847 行)
-> rtp_sender_ = empty 没有发送
->
->
->
-> ===========================================================
->
-> ModuleRtpRtcpImpl::RTT (modules\rtp_rtcp\source\rtp_rtcp_impl.cc 519 行)
-> RTCPReceiver::RTT (modules\rtp_rtcp\source\rtcp_receiver.cc 195 行)
->
-> ModuleRtpRtcpImpl::RemoteNTP (modules\rtp_rtcp\source\rtp_rtcp_impl.cc 506 行)
-> RTCPReceiver::NTP (modules\rtp_rtcp\source\rtcp_receiver.cc 246 行)
->
-> ntp_estimator_.UpdateRtcpTimestamp => RemoteNtpTimeEstimator::UpdateRtcpTimestamp (modules\rtp_rtcp\source\remote_ntp_time_estimator.cc 34 行),因为调试关系,不能走到里面**
->
->
->
->if (stream->DeliverRtcp(packet, length)) (video_send_streams_) (call\call.cc 1199 行) => VideoSendStream::DeliverRtcp (video\video_send_stream.cc 208 行)
-> VideoSendStreamImpl::DeliverRtcp (video\video_send_stream_impl.cc 355 行)
-> PayloadRouter::DeliverRtcp (call\payload_router.cc 430 行)
-> ModuleRtpRtcpImpl::IncomingRtcpPacket (modules\rtp_rtcp\source\rtp_rtcp_impl.cc 247 行)
-> RTCPReceiver::IncomingPacket (modules\rtp_rtcp\source\rtcp_receiver.cc 159 行)
-> 重复上面 “标注 1“ 的内容
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->

你可能感兴趣的:(webrtc学习)