目录结构
# 结构概览
// tree -L 2 -d
.
├── api
│ ├── adaptation
│ ├── audio
│ ├── audio_codecs
│ ├── call
│ ├── crypto
│ ├── g3doc
│ ├── metronome
│ ├── neteq
│ ├── numerics
│ ├── rtc_event_log
│ ├── stats
│ ├── task_queue
│ ├── test
│ ├── transport
│ ├── units
│ ├── video
│ ├── video_codecs
│ └── voip
├── audio
│ ├── test
│ ├── utility
│ └── voip
├── build_overrides
├── call
│ ├── adaptation
│ └── test
├── common_audio
│ ├── include
│ ├── mocks
│ ├── resampler
│ ├── signal_processing
│ ├── third_party
│ └── vad
├── common_video
│ ├── generic_frame_descriptor
│ ├── h264
│ ├── include
│ ├── libyuv
│ └── test
├── data
│ ├── audio_processing
│ └── voice_engine
├── docs
│ └── native-code
├── examples
│ ├── aarproject
│ ├── androidapp
│ ├── androidjunit
│ ├── androidnativeapi
│ ├── androidtests
│ ├── androidvoip
│ ├── objc
│ ├── objcnativeapi
│ ├── peerconnection
│ ├── stunprober
│ ├── stunserver
│ ├── turnserver
│ └── unityplugin
├── g3doc
│ └── style-guide
├── infra
│ ├── config
│ └── specs
├── logging
│ ├── g3doc
│ └── rtc_event_log
├── media
│ ├── base
│ ├── engine
│ └── sctp
├── modules
│ ├── async_audio_processing
│ ├── audio_coding
│ ├── audio_device
│ ├── audio_mixer
│ ├── audio_processing
│ ├── congestion_controller
│ ├── desktop_capture
│ ├── include
│ ├── pacing
│ ├── remote_bitrate_estimator
│ ├── rtp_rtcp
│ ├── third_party
│ ├── utility
│ ├── video_capture
│ ├── video_coding
│ └── video_processing
├── net
│ └── dcsctp
├── p2p
│ ├── base
│ ├── client
│ ├── g3doc
│ └── stunprober
├── pc
│ ├── g3doc
│ ├── scenario_tests
│ └── test
├── resources
│ ├── audio_coding
│ ├── audio_device
│ ├── audio_processing
│ ├── images
│ ├── media
│ ├── network_tester
│ ├── remote_bitrate_estimator
│ ├── rtp_rtcp
│ ├── utility
│ ├── video_coding
│ ├── video_engine
│ └── voice_engine
├── rtc_base
│ ├── containers
│ ├── deprecated
│ ├── experiments
│ ├── internal
│ ├── java
│ ├── memory
│ ├── network
│ ├── numerics
│ ├── strings
│ ├── synchronization
│ ├── system
│ ├── task_utils
│ ├── third_party
│ ├── time
│ ├── units
│ └── win
├── rtc_tools
│ ├── audioproc_f
│ ├── converter
│ ├── data_channel_benchmark
│ ├── frame_analyzer
│ ├── network_tester
│ ├── psnr_ssim_analyzer
│ ├── py_event_log_analyzer
│ ├── rtc_event_log_visualizer
│ ├── rtp_generator
│ ├── testing
│ └── unpack_aecdump
├── sdk
│ ├── android
│ └── objc
├── stats
│ └── test
├── system_wrappers
│ ├── include
│ └── source
├── test
│ ├── android
│ ├── fuzzers
│ ├── gl
│ ├── ios
│ ├── linux
│ ├── logging
│ ├── mac
│ ├── network
│ ├── pc
│ ├── peer_scenario
│ ├── scenario
│ ├── testsupport
│ ├── time_controller
│ └── win
├── tools_webrtc
│ ├── android
│ ├── apple
│ ├── audio_quality
│ ├── autoroller
│ ├── coverage
│ ├── cpu
│ ├── ios
│ ├── iwyu
│ ├── libs
│ ├── matlab
│ ├── mb
│ ├── msan
│ ├── network_emulator
│ ├── perf
│ ├── presubmit_checks_lib
│ ├── sanitizers
│ ├── sslroots
│ ├── ubsan
│ ├── version_updater
│ ├── video_quality_toolchain
│ └── vim
└── video
├── adaptation
├── end_to_end_tests
├── g3doc
└── test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# 根目录
目录 | 功能 | 备注 |
---|---|---|
api | WebRTC接口层,浏览器都是通过该接口调用WebRTC,包括 DataChannel, MediaStream, SDP相关的接口 | |
call | 数据流的管理层,Call代表同一个点的所有数据的流入流出,存放的是 WebRTC “呼叫(Call)” 相关逻辑层的代码。 | |
video | 与视频相关的逻辑,视频逻辑层及视频引擎层的相关的代码。视频数据逻辑上的发送,接收等代码。 | |
common_video | 视频算法相关,存放了视频算法相关的常用工具,如libyuv, sps/pps分析器,I420缓冲器等。 | |
audio | 与音频相关的逻辑,音频数据逻辑上的发送,接收等代码。 | |
common_audio | 音频算法相关,存放一些音频的基本算法。包括环形队列,博利叶算法,滤波器等。 | |
media | 与多媒体相关的逻辑处理,如编解码的逻辑处理 | |
logging | 日志相关 | |
modules | 最重要的目录,子模块 | |
pc | Peer Connection连接相关的逻辑,存放一些业务逻辑层的代码。如 channel, session等 | |
p2p | 端对端相关代码,stun, turn | |
rtc_base | 基础代码,如线程,锁相关的统一接口代码 | |
rtc_tools | 音视频分析相关的工具代码 | |
tools_webrtc | WebRTC测试相关的工具代码,如网络模拟器 | |
system_wrappers | 与具体操作系统相关的代码。如CPU特性,原子操作等 | |
stats | 存放各种数据统计相关的类 | |
sdk | 存放Android和IOS层代码。如视频的采集,渲染等 |
# modules目录
目录 | 功能 | 备注 |
---|---|---|
audio_coding | 音频编解码相关代码 | audio_coding,是和编解码逻辑相关的,会用编解码,这里的audio_coding它是编解码器,都是放在audio_coding这个目录下。 |
audio_device | 视频采集与音频播放相关代码 | audio_device它是和设备相关的,它做了一个区分,安卓和IOS放在sdk下面了,它相应的一些代码移到sdk里面了,在以前的webrtc版本 ,所有的设备都是 放在audio_device里面 ,包括我们的windows和MAC下的以及Linux下的,都是在audio_device这个目录下。 |
audio_mixer | 混音相关代码 | audio_mixer,就是混音相关的,混音就好比开会时多人实时互动,比如四个人同时在说话,就要给它混在一起,这样在传输的时候就比较方便,这个减少了音频流,所以这个混音相关的就放在audio_mixer里面。 |
audio_processing | 音频前后处理相关代码 | audio_processing就是音频的前处理后处理,音频的前处理后处理就好比回音消除、降噪、增益等,都是放在audio_processing里面。这个目录里面又分了很多子目录,在后面你就 大体的知道这个相关的在这个目录下。以及在这个目录下再找子目录 |
bitrate_controller | 码率控制相关代码 | bitrate_controller,这个是码流控制的,比如说控制这个码流,视频的码流是500k还是1M。这个码流的控制。如果想知道相关的码流他是怎么控制的 ,那么可以到这里去看。 |
congestion_controller | 流控制相关代码 | -congestion_controller,就是流量控制,当我能检测到网络流量比较高的时候,我们要做一些流量控制,防止这个网络包将带宽打死,具体怎么控制就是在这里做的相关的逻辑。所以如果我要 了解流量控制相关的,就到这个目录下面去找。 |
desktop_capture | 桌面采集相关代码 | -- |
pacing | 码率探测及平滑处理相关代码 | pacing的作用是码率的侦测和平滑处理,我首先要检测到音频视频的码率是怎样的,做到之后我们要做到一个平滑的处理,我们不能让他一下子就发送出去,应该对他做一下平滑,比如有时候是10k有时候是500k,我们让他平均一下。 |
remote_bitrate_estimator | 远端码率估算相关的代码 | emote_bitrate_estimator的作用是远程码率评估,我远端能接收的带宽是多少,一个是我本地的带宽,一个是远端的带宽,不光我能发多少还有对方能收多少,所以要有一个远端的码率的评估,这是放在remote_bitrate_estimator目录下 |
rtc_rtcp | rtp/rtcp协议相关代码 | -- |
video_capture | 视频采集相关代码 | video_capture我捕获视频的相关的代码,放在video_capture里面 |
video_coding | 视频编解码相关代码 | 视频的编码,如H264,VP 8,VP 9,等,这个编码器都是放在video_coding里面。 |
video_processing | 视频前后处理相关的代码 | video_processing,就是视频的前处理和后处理,如视频帧的增强,检测,如果我们增加人脸识别可以放到video_processing这个目录下。 |
编辑 (opens new window)
上次更新: 2022/07/21, 16:40:55