Webrtc之源码结构
当把代码下载完,可以通过vs2017编译之后,特别兴奋,但是,当打开工程的时候,懵了。。。。。看下图
再看工程项目
此刻的心情,,,,,低落到无语。
这位大神介绍了一下源码结构
https://blog.csdn.net/garrylea/article/details/77899109
先决定从
rtc_base
存放了一些基础代码。如线程,事件,socket等相关的代码 这个文件夹开始研究和学习。
目录结构分析
api
WebRTC 接口层。包括 DataChannel, MediaStream, SDP相关的接口。各浏览器都是通过该接口层调用的 WebRTC。
call
存放的是 WebRTC “呼叫(Call)” 相关逻辑层的代码。
audio
存放音频网络逻辑层相关的代码。音频数据逻辑上的发送,接收等代码。
video
存放视频逻辑层及视频引擎层的相关的代码。视频数据逻辑上的发送,接收等代码。
视频引擎层就是指如何控制视频采集,处理和编解码操作的逻辑。
voice_engine
存放音频引擎代码。主要是控制音频的采集,处理,编解码的操作。
这个目录后面可能也会被拿掉。
sdk
存放了 Android 和 IOS 层代码。如视频的采集,渲染代码都在这里。
pc
存放一些业务逻辑层的代码。如 channel, session等。
common_audio
存放一些音频的基本算法。包括环形队列,博利叶算法,滤波器等。
common_video
存放了视频算法相关的常用工具,如libyuv, sps/pps分析器,I420缓冲器等。
modules
这个目录是 WebRTC 代码中最重要的一个目录。里面包括了音视频的采集,处理,编解码器,混音等。
视频的渲染部分已经从这里删除了。因为没有浏览器需要用到这里的渲染代码。如果使用Native API 做二次开发,需要自己写视频渲染相关的代码。
modules 目录下还包括以下几个子目录:
audio_coding : 音频编解码相关代码。
audio_conference_mixer : 会议混音相关代码。
audio_device : 音频采集与音频播放相关代码。
audio_mixer : 混音相关代码,这部分是后加的。
audio_processing : 音频前后处理的相关代码。
bitrate_controller : 码率控制相关代码。
congestion_controller : 流控相关的代码。
desktop_capture : 桌面采集相关的代码。
media_file : 播放媒体文件相关的代码。
pacing : 码率探测相关的代码。
remote_bitrate_estimator : 远端码率估算相关的代码。
rtp_rtcp : rtp/rtcp协议相关代码。
video_capture : 视频采集相关的代码。
video_coding : 视频编解码相关的代码。
video_processing : 视频前后处理相关的代码。
media
存放媒体相关的代码。
p2p
p2p相关的代码。
rtc_base
存放了一些基础代码。如线程,事件,socket等相关的代码。
rtc_tools
存放了一些工具代码。如视频帧比较,I420转RGB,视频帧分析。
stats
存放各种数据统计相关的类。
libjingle
网络库。
system_wrapper
与操作系统相关的代码,如 CPU特性,原子操作,读写锁,时钟等。
************************************20190618 晚**************
找到一个开源的C++项目介绍
https://abseil.io/about/
都是从谷歌的开源项目中提炼出来的,我准备把他翻译成中文,另外自己也可以学习一下。
github地址:
https://github.com/abseil/abseil-cpp
Webrtc之源码结构相关推荐
- Linux内核移植之一:内核源码结构与Makefile分析
内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.内核介绍 1.版本及其特点 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如下面几行它们构成了Linu ...
- 【Android 系统开发】Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- 技术宝典 | WebRTC ADM 源码流程分析
导读: 本文主要基于 WebRTC release-72 源码及云信音视频团队积累的相关经验而成,主要分析以下问题: ADM(Audio Device Manager)的架构如何?ADM(Audio ...
- 【华为云技术分享】Linux内核源码结构(1)
在上一期中,我们介绍了Linux内核发展的历史,也介绍了与其相关的UNIX和GNU的相关知识.从这一期开始,我们将介绍Linux内核的源码结构.我们将先根据Linux源码的目录结构进行分析,到本文章发 ...
- MyBatis源码解读之源码结构
2019独角兽企业重金招聘Python工程师标准>>> 目的 文章主要了解MyBatis源码结构,每个包的具体功能.如何去学习MyBatis源码. MyBatis源码结构导图 查看大 ...
- v18.02 鸿蒙内核源码分析(源码结构) | 内核文件各自含义 | 百篇博客分析HarmonyOS源码
子曰:"富而可求也,虽执鞭之士,吾亦为之.如不可求,从吾所好." <论语>:述而篇 百篇博客系列篇.本篇为: v18.xx 鸿蒙内核源码分析(源码结构篇) | 内核文件 ...
- WebRTC ADM 源码流程分析
导读: 本文主要基于 WebRTC release-72 源码及云信音视频团队积累的相关经验而成,主要分析以下问题: ADM(Audio Device Manager)的架构如何?ADM(Audio ...
- OpenSSL之EVP(一)——数据结构及源码结构介绍
EVP简介 Openssl EVP提供了丰富的密码学中的各种函数. Openssl 中实现了各种对称算法.摘要算法以及签名/验签算法. EVP 函数将这些具体的算法进行了封装. EVP 主要封装了如下 ...
- pnpm 源码结构及调试指南
前言 随着前段时间尤大在 vue3 以及 vite 仓库中切换包管理为 pnpm 的 pr 成功 merge,以及 vue 生态中的一些项目例如 VueUse 也切换使用 pnpm,宣告着 vue 生 ...
最新文章
- vex机器人比赛 一队人数_VEX世锦赛中国区总决赛在渝闭幕 重庆晚报记者带你了解VEX机器人的那些事...
- iview在vue-cli3如何按需加载
- mysql字符集说明
- [vue] 你知道style加scoped属性的用途和原理吗?
- 菲尔茨奖得主丘成桐在清华设立数学英才班,比肩清华姚班
- 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解
- Java教程:Java JDK下载与安装教程
- 集合类型及其操作(复习)
- 诡异的json包含bom头
- 2020-12-16子类对象指针强转成父类对象指针,父类对象指针调用子类函数问题(待整理)
- 云计算时代的数据库研究
- 真正的焦虑感来自对比
- javascript视频教程下载
- SpringCloud第一章 Euraka服务注册与发现组件
- 英尺英寸和厘米的换算_英尺米换算(英尺英寸与厘米换算器)
- [渝粤教育] 中国地质大学 计算机会计理论与实务 复习题
- 【Mongodb】常用的一些功能
- WinEdit 的algorithm2e包自定义一个带竖线的模块代码
- QGIS编译---QGIS3.22.4 + Qt5.15.3 + VS2019 ---64位版本
- 采样率与频率之间的关系
热门文章
- 2014年值得关注的10个开源项目(上)
- CentOS6.0升级内核为6.2
- 树莓派3代b型静态IP设置,和ssh的wlan配置
- 【机器学习】隐马尔可夫模型及其三个基本问题(四)状态序列预测算法及python实现
- nvl2可以套公式吗 oracle_包装设计也可以套公式?8个公式带你玩转包装创意表现形式...
- linux buffer cache 过高_工作中经常用的linux命令 free
- swift 笔记 (十三) —— 继承
- python数据类型、if判断语句
- Centos7安装netcat运算sparkStreaming进行单词统计
- pycharm 虚拟环境virtualenv迁移到别的机器 无法读取包的问题