1. 程式人生 > >webrtc 原始碼結構

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特性,原子操作,讀寫鎖,時鐘等。