WebRTC源码分析之peerconnection

FEC调用关系

TaskQueueLibevent::ThreadMain
TaskQueueLibevent::OnWakeup
webrtc_new_closure_impl::ClosureTask<webrtc::VideoStreamEncoder::OnFrame
VideoStreamEncoder::OnFrame
VideoStreamEncoder::MaybeEncodeVideoFram
VideoStreamEncoder::EncodeVideoFrame
EncoderSimulcastProxy::Encode
LibvpxVp8Encoder::Encode
LibvpxVp8Encoder::GetEncodedPartitions
LibvpxVp8Encoder::GetEncodedPartitions
VideoStreamEncoder::OnEncodedImage
VideoSendStreamImpl::OnEncodedImage
RtpVideoSender::OnEncodedImage
RTPSenderVideo SendEncodedImage ()
RTPSenderVideo::SendVideo()
UlpfecGenerator::AddPacketAndGenerateFec
ForwardErrorCorrection::EncodeFec()

NACK调用关系

Thread::Start()
Thread::PreRun()
Thread::Run()
Thread::ProcessMessages()
Thread::Dispatch()
AsyncInvoker::OnMessage()
BaseChannel::OnRtpPacket()
WebRtcVideoChannel::OnPacketReceived()
internal::Call::DeliverPacket()
internal::Call::DeliverRtp()
RtpStreamReceiverController::OnRtpPacket()
RtpDemuxer::OnRtpPacket()
RtpVideoStreamReceiver::OnRtpPacket()
RtpVideoStreamReceiver::ReceivePacker()
RtpVideoStreamReceiver::ParseAndHandleEncapsulatingHeader()
UlpfecReceiverImpl::ProcessReceivedFec()
RtpVideoStreamReceiver::OnRecoveredPacket()
RtpVideoStreamReceiver::ReceivePacket()
RtpVideoStreamReceiver::OnReceivedPayloadData()
NackModule::OnReceivedPacket()
NackModule::AddPacketsToNack() 

 Video 编码传输调用过程

VideoChannel::SetLocalContent_w()
BaseChannel::UpdateLocalStreams_w()
WebRtcVideoChannel::AddSendStream()
WebRtcVideoSendStream::WebRtcVideoSendStream()
WebRtcVideoSendStream::SetCodec()
WebRtcVideoSendStream::RecreateWebRtcStream() 
Call::CreateVideoSendStream()
VideoSendStream::VideoSendStream()
VideoSendStreamImpl::VideoSendStreamImpl()
RtpTransportControllerSend::CreateRtpVideoSender() 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTC(Web Real-Time Communication)是一个开源项目,它提供了在浏览器中实现实时音视频通信的技术。下面是对WebRTC源码的简要分析WebRTC源码主要分为以下几个模块: 1. 信令(Signaling)模块:负责建立和维护通信的连接。它使用WebSocket或者其他协议进行通信,包括传输SDP(Session Description Protocol)和ICE(Interactive Connectivity Establishment)信息。 2. 媒体(Media)模块:处理音视频数据的采集、编码、解码和传输。媒体模块使用WebRTC提供的API,通过WebRTCPeerConnection建立点对点的媒体通信。 3. 网络(Networking)模块:处理网络传输相关的功能,例如NAT穿越、ICE候选地址的收集和选择、STUN和TURN服务器的使用等。 4. 安全(Security)模块:处理加密和身份验证相关的功能,确保通信过程的安全性和隐私性。 5. SDP解析(SDP Parsing)模块:解析和生成SDP信息,SDP包含了关于媒体会话的描述和参数。 6. ICE代理(ICE Agent)模块:负责管理ICE协议的运行,处理候选地址的收集和选择,以及NAT穿越等功能。 7. RTP/RTCP模块:处理音视频的实时传输协议(RTP)和实时传输控制协议(RTCP),包括数据包的发送和接收、丢包恢复、拥塞控制等。 8. 编解码器(Codec)模块:负责音视频数据的编码和解码,WebRTC支持一系列开源编解码器,如VP8、VP9、H.264等。 这些模块之间相互协作,实现了基于浏览器的实时音视频通信。WebRTC源码使用C++语言编写,涉及到了底层的网络和媒体处理,同时也提供了一系列的API供开发者使用。 请注意,由于WebRTC源码较为庞大,这里只是简要地介绍了主要模块,实际的源码分析需要深入研究和阅读源码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值