WebRTC Native代碼相當的大(大約200Mb),開始的時候對這些代碼真的是一頭霧水,最後決定先從example中的peerconnection先看起。
peerconnection例子分爲client端和server端,多個client加入對話,server負責信令的處理,這裏主要討論與WebRTC較爲相關的client Demo。
代碼結構:
這個例子用Gtk圖形庫開發,其中核心的類是conductor類
我製作的類圖如下(根據2018年6月11日的WebRTC的源碼製作)請放大觀看:
Conductor類以public方式繼承了以下的類:
webrtc::PeerConnectionObserver,
webrtc::CreateSessionDescriptionObserver,
PeerConnectionClientObserver,
其中webrtc::PeerConnectionObserver與PeerConnection一起成爲一個觀察者模式,當PeerConnection狀態改變,就回調PeerConnectionObserver(Conductor)。
Conductor類使用webrtc::CreatePeerConnectionFactory方法創建PeerConnectionFactoryInterface的對象實現。
PeerConnectionFactory負責創建PeerConnection、VideoTrack、AudioTrack等重要對象,PeerConnection API有着衆多的WebRTC核心功能(見上圖的函數名稱)。