当前位置:网站首页>WebRTC目录结构
WebRTC目录结构
2022-08-06 09:57:00 【caesar1228】
我们下载完WebRTC源码后想深入分析其源码的话,首先就需要了解WebRTC的目录结构。因为WebRTC的分层工作做的很好,其代码的目录结构也比较清晰,在了解这个结构后,就能根据想分析的功能去对应目录寻找需要的源码了。
WebRTC目录分类
WebRTC的源码目录主要可以分为4大类——接口层、业务处理层、音视频处理层和基础支持层。下面我们先简要认识下各层所包含的目录和主要功能。
- 接口层。包含api目录。WebRTC对外的所有接口都在该目录下,所以如果要新增接口,也应该放在这里。
- 业务处理层。包含pc、call、media目录。pc目录中包括PeerConnection座的媒体协商、收集Candidate、音视频数据传输等逻辑处理。call目录主要是“呼叫”相关的逻辑。media目录中包括媒体引擎相关逻辑处理。
- 音视频处理层。包含common_audio、common_video、audio、video目录。common_audio、common_video目录中分别是音频和视频算法相关代码。audio、video目录分别是音频和视频流相关代码。
- 基础支持层。其他目录都属于这层。主要都是一些基础模块代码以及编译工具等。
另外还有一个很重要的目录就是modules,这个目录中内容将在后文介绍。
WebRTC目录结构
下面这个表格就是WebRTC中包含的所有目录及其功能介绍。
ps:以下目录结构主要是基于Windows平台下的WebRTC的m84版本,其他平台下的其他版本会略有差别,总体大同小异。
| 目录 | 功能 |
|---|---|
| api | 接口层,提供对外接口。 |
| audio | 音频流相关。 |
| base | Chromium基础代码,包括线程,系统信息等。 |
| build | 编译脚本和BUILD.gn等文件,不同平台下会有不同。 |
| build_overrides | 提供一些可配置化的参数,可以定制化编译。 |
| buildtools | gn等编译工具,不同平台下载不同的gn。 |
| call | 数据流管理层,每一个call都代表同一个端的所有数据的流入流出。 |
| common_audio | 音频算法相关,包括环形队列、FIR滤波器等。 |
| common_video | 视频算法相关,包括libyuv、sps/pps分析器等。 |
| data | 测试数据。 |
| docs | 文档,包括faq等。 |
| examples | 示例代码,各种demo。 |
| logging | 日志。 |
| media | 媒体引擎层,包括音频、视频引擎等,主要用于音视频的控制。 |
| modules | WebRTC子模块,包括音视频采集、处理、编解码等。 |
| p2p | NAT穿透实现,turn、stun等。 |
| pc | Peer Connection连接相关的业务逻辑。 |
| resources | 测试数据和资源。 |
| rtc_base | WebRTC基础代码,包括线程、锁、网络等。 |
| rtc_tools | 网络监测、音视频分析等脚本 |
| sdk | 移动端音视频采集、渲染等代码,包含Android和iOS |
| stats | 数据统计相关。 |
| style-guide | 编码规范 |
| system_wrappers | 系统相关封装,包括cpu特性、读写锁、时钟等 |
| test | 单元测试 |
| testing | gmock、gtest等测试工具代码 |
| third_party | 第三方依赖库,不同平台下依赖库会有不同。 |
| tools | Chromium工具集合 |
| tools_webrtc | WebRTC工具集合 |
| video | 视频流相关。 |
modules目录
modules目录是WebRTC源码中最重要的一个目录。该目录中存放的都是一些功能比较独立的模块。包括音视频的采集,处理,编解码器,混音、回声消除、降噪等功能的实现。
下面这个表格就是modules目录包含的子目录及其功能介绍。
| 子目录 | 功能 |
|---|---|
| audio_coding | 音频编解码 |
| audio_device | 与设备有关的音频采集、播放等 |
| audio_mixer | 混音 |
| audio_processing | 音频前后处理 |
| congestion_controller | 拥塞控制,Transport-CC等 |
| desktop_capture | 桌面采集 |
| include | module头文件 |
| pacing | 码率探测和平滑处理 |
| remote_bitrate_estimator | 远端带宽评估 |
| rtp_rtcp | rtp/rtcp协议 |
| third_party | 第三方依赖,fft、g711等 |
| utility | 线程相关工具 |
| video_capture | 视频采集 |
| video_coding | 视频编解码 |
| video_processing | 视频前后处理 |
需要注意的是remote_bitrate_estimator中的Goog-REMB算法是接收端的拥塞控制算法,已经被淘汰了,只是为了兼容老版本还保留着。新的拥塞控制算法Transport-CC(GCC)是在发送端评估的,其表现要比接收端的评估算法更优秀。
边栏推荐
- The values in the array into another array, and capital
- [Mathematical Modeling] Integer Programming
- SPFA模板
- C语言实现扫雷
- 定时任务 出现 A component required a bean named ‘xxx‘ that could not be found
- 响应式建筑工程集团公司类网站织梦模板(自适应手机端)
- Free and open source web version of Xshell [Happy New Year to everyone]
- 【Untitled】
- Let's talk about the pits of mysql's unique index, why does it still generate duplicate data?
- Smart three-piece - nanny-level teaching.
猜你喜欢

grpc使用consul做服务注册与发现

【 machine learning bayesian classifier
![[Nanny-level tutorial] How does Tencent Cloud obtain secretId and secretKey, and enable face service](/img/8c/965e2942894299185724b315f6ca6c.jpg)
[Nanny-level tutorial] How does Tencent Cloud obtain secretId and secretKey, and enable face service

Xshell下载 破解,史上最简单易懂教程

【保姆级教程】腾讯云如何获取secretId和secretKey,以及开通人脸服务

常见的损失函数

智能三子棋——保姆级教学。

定时任务 出现 A component required a bean named ‘xxx‘ that could not be found

nuxt页面访问速度优化

【无标题】
随机推荐
智能三子棋——保姆级教学。
[Mathematical Modeling] Linear Programming
【OpenCV】 人脸识别
基于FPGA的AHT10传感器温湿度读取
《nlp入门+实战:第九章:循环神经网络》
DO280管理和监控OpenShift平台--OCP升级
【 machine learning bayesian classifier
Use font icons in nuxt to solve the problem that the icon can be loaded for the first time and the icon disappears after refreshing the page
nuxt中使用字体图标,解决第一次可以加载出来,刷新页面图标消失的问题
Usage of torch.utils.data in pytorch ---- Loading Data
分布式链路追踪opentracing-go jaeger小示例
定时任务 出现 A component required a bean named ‘xxx‘ that could not be found
View the Linux log on the web side, and view the Linux log on the web side
C语言实现扫雷
ArrayList 的扩容机制
Changsha College 2022 Summer Training Competition (1)
StoneDB社区与华为openGauss社区互签CLA协议,共建国产开源数据库大生态
【Pyqt5 弹出对话框】
Introduction to TensorFlow
网易云信音视频能力中台,聚焦银行业数字化转型