通過一段時間對linphone的學習和研究,將自己的學習記錄下來,一是爲了避免自己對知識的忘記,二是希望對linphone的熱愛者有所幫助!
整個linphone源碼體系包含兩大部分內容:
1.UI設計,包括兩種 gtk+ 和 命令行
包括客戶端的gtk+/glade接口和命令行的console接口
2.核心功能實現 liblinphone
liblinphone:這個庫用於實現linphone的所有功能
然而,它依賴下面的包:
eXosip2:這是SIP的用戶代理庫,它又依賴於庫libosip2
mediastreamer2:這是一個非常強大的庫,包括對audio/video的傳輸和處理
ortp:這是一個RTP實時傳輸協議庫
這段時間主要研究了osip,eXosip,ortp,mediastreamer2,linphone這幾個庫的接口和例程。
osip是一個底層的sip協議庫,主要包括對sip協議字段的解析、封裝、sdp協議的封裝解析和四個狀態機的實現,不包括對網絡通信的支持。通過回調函數的方式通知事件的發生。
eXosip是對osip接口的進一步封裝實現,主要包括對網絡通信的封裝,回調函數的實現,調度模式的實現,使得操作接口更加簡便。
ortp是一個對rtp,rtcp協議的封裝解析庫,包括完整的rtp會話的建立,數據接收,抖動補償等實現。
mediastream2是一個利用底層ortp庫,實現音視頻的捕獲,編碼,網絡傳輸,解碼,回放。利用一個輕量級鏈式架構,每一個處理實體都被包含在一個MSFiter內,MSFilter通過輸入輸出接口能夠和其他MSFilter連接。