WebRTC M64 源码目录结构分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liwenlong_only/article/details/80166159

WebRTC M64 源码目录结构分析

WebRTC框架图

这里写图片描述

目录结构分析

api

WebRTC 接口层。包括 DataChannel, MediaStream, SDP相关的接口。各浏览器都是通过该接口层调用的 WebRTC

audio

存放音频网络逻辑层相关的代码。音频数据逻辑上的发送,接收等代码。

build_overrides

这个目录用于允许我们自定义不同的编译变量,这些变量之间的差异是独立的。

call

存放的是 WebRTC “呼叫(Call)” 相关逻辑层的代码,

Call主要负责管理数据流。

VideoSendStream:负责产生本地视频数据
VideoReceiveStream:负责处理远端某一个端的视频数据
AudioSendStream:负责产生本地音频数据
AudioReceiveStream:负责接收远端某一个端的语音数据

common_audio

存放一些音频的基本算法。包括环形队列,博利叶算法,滤波器等。

common_video

存放了视频算法相关的常用工具,如libyuv, sps/pps分析器,I420缓冲器等。

examples

存放各个平台使用的demo。

logging

存放log日志相关代码。

media

存放媒体相关的代码,MediaEngine相关代码放在这个目录。

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 : 视频前后处理相关的代码。

ortc

一个WebRTC就已经搞得我们晕头转向的,现在又弄出个ORTC(去年已经提出这个概念了),他们之间有什么关系和差别呢?

直白一点说就是:一些浏览器厂商刚开始不太愿意配合搞HTML5中的RTC规范(比如微软,因为动了他的奶酪),google和firefox就只能自己先搞了,

搞了两年其他人看到这个东西是个趋势,也有点想参与了,但不好意思说出来,所以就开始挑WebRTC的问题,比如:

1,sdp格式晦涩难懂——这是事实,我每次都要对着文档去查。

2,太多高层次的API,以及没有严格的标准规范,火狐和chome一些写法还搞得不一样。

3,无法真正解决历史遗留系统得兼容性问题。

4,要求没有得到应答。

5,等等等等。

正因为存在这么多问题,所以之前那些不怎么积极的厂商就可以名正言顺的插进来一起搞了,各家都派个代表进来,成立个标准组织,制订些新的标准,就这样ORTC就诞生了,其实也可以称作是WebRTC2.0或WebRTC3.0,只不过进来的门派多了,规格要提高,干脆改个全新的名字,这样ORTC就诞生了.

p2p

p2p相关的代码。

pc

存放一些业务逻辑层的代码。如peerconnection, channel, session等。

resources

存放一些测试用的资源文件,如yuv,pcm文件。

rtc_base

存放了一些基础代码。如线程,事件,socket等相关的代码。

rtc_tools

存放了一些工具代码。如视频帧比较,I420转RGB,视频帧分析。

sdk

存放了 Android 和 IOS 层代码。如视频的采集,渲染代码都在这里。

stats

存放各种数据统计相关的类。

system_wrapper

与操作系统相关的代码,如 CPU特性,原子操作,读写锁,时钟等。

test

存放单元测试模块代码。

third_party

存放使用的第三方库。

video

存放视频逻辑层及视频引擎层的相关的代码。视频数据逻辑上的发送,接收等代码。

视频引擎层就是指如何控制视频采集,处理和编解码操作的逻辑。

voice_engine

存放音频引擎代码。主要是控制音频的采集,处理,编解码的操作。

猜你喜欢

转载自blog.csdn.net/liwenlong_only/article/details/80166159