整体理解

在 WebRTC 中,Call 是peer connection 的。

为 WebRTC Call 注入的 AudioState 来自于全局的 MediaEngine 的 VoiceEngine。

AudioState 是全局的,而 Call 则是 connection 内部的。

创建接受者 WebRtcAudioReceiveStream

WebRTC 应用需要起一个专门的专门的连接,用于接收媒体协商信息。在收到媒体协商信息之后,则将媒体协商信息进行层层传递及处理.

BaseChannel::SetRemoteContent   // 设置远端内容
WebRtcVoiceMediaChannel::AddRecvStream() //最终执行的
Call:: CreateAudioReceiveStream //Call 创建

网络包到播放前

  • 从网络收到 UDP 包, PhysicalSocketServer::Wait() BaseChannel::OnPacketReceived
  • BaseChannel::ProcessPacket 到媒体引擎

根据 RTP 包的 ssrc 派发进不同的 channel,ACM receiver 的处理,一直到最终插入 NetEq 的缓冲区。在 NetEq 中将会完成数据包的重排序,网络对抗,音频的解码等处理操作。

创建发送者 AudioSendStream

  • BaseChannel::SetLocalContent
  • webrtc_voice_engine:: WebRtcAudioSendStream
  • Call::CreateAudioSendStream

网络包发送

  • 编码线程
  • ChannelSend::ProcessAndEncodeAudio
  • PacedSender:: InsertPacket // PacedSender有生产消费模型, 定时器消费插入的数据
  • BaseChannel::SendPacket

最新文章

  1. python头部注释 vim添加头部注释
  2. POJ 1244 Slots of Fun(计算几何)
  3. 利用smarty call函数实现无限极分类
  4. 由浅入深了解Thrift之客户端连接池化
  5. 内网能PING通TELNET通不能访问解决
  6. 使用Yeoman搭建 AngularJS 应用 (1) —— 介绍
  7. 基于Jquery+Ajax+Json实现分页显示
  8. Selenium webdriver 操作chrome 浏览器
  9. xcode4.5.1、iphone5、ios6 使用记录
  10. 利用try-catch判断变量是已声明未声明还是未赋值
  11. Open ID Connect(OIDC)在 ASP.NET Core中的应用
  12. Python高级笔记(二) -- 深拷贝和浅拷贝
  13. hibernate查询出的实体,set值后,自动更新到数据
  14. 初尝Spring Cloud Config
  15. mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
  16. winfrom里面打印类似小票
  17. extern 用法,全局变量与头文件(重复定义)
  18. POJ2125 Destroying The Graph
  19. MySQL中INSERT的一般用法
  20. Servlet容器请求处理

热门文章

  1. Postgresql invalid command \N数据恢复处理
  2. ChatGpt聊天API使用
  3. kubebuilder简明教程
  4. AttributeError: module 'openai' has no attribute 'ChatCompletion'的解决办法
  5. shiyansi
  6. Python爬取亚马逊商品页面
  7. layui富文本编辑器提交时无法获取到值
  8. Centos操作系统在虚拟机VMware上的安装(二)
  9. java ArrayList 原理
  10. react toolkit 异步请求之后调取其他函数