webrtc 原始碼結構
api
WebRTC 介面層。包括 DataChannel, MediaStream, SDP相關的介面。各瀏覽器都是通過該介面層呼叫的 WebRTC。
call
存放的是 WebRTC “呼叫(Call)” 相關邏輯層的程式碼。
audio
存放音訊網路邏輯層相關的程式碼。音訊資料邏輯上的傳送,接收等程式碼。
video
存放視訊邏輯層及視訊引擎層的相關的程式碼。視訊資料邏輯上的傳送,接收等程式碼。
視訊引擎層就是指如何控制視訊採集,處理和編解碼操作的邏輯。
sdk
存放了 Android 和 IOS 層程式碼。如視訊的採集,渲染程式碼都在這裡。
pc
存放一些業務邏輯層的程式碼。如 channel, session等。
common_audio
存放一些音訊的基本演算法。包括環形佇列,博利葉演算法,濾波器等。
common_video
存放了視訊演算法相關的常用工具,如libyuv, sps/pps分析器,I420緩衝器等。
modules
這個目錄是 WebRTC 程式碼中最重要的一個目錄。裡面包括了音視訊的採集,處理,編解碼器,混音等。
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特性,原子操作,讀寫鎖,時鐘等。