live555的代碼理解

 

https://blog.csdn.net/li_wen01/article/details/51762040

live555爲流媒體提供解決方案的平臺的c++開源庫。

1.各個庫的介紹

         LIVE555下包含LiveMedia、UsageEnvironment、BasicUsageEnvironment、GroupSock庫,MediaServer簡單服務器程序以及其他多個測試demo。

1.1LiveMedia

包含一系列處理不同編碼格式和封裝格式的類,基類是Medium(live/liveMedia/include/Media.hh)。

 

1.2UsageEnvironment

         環境類,用於錯誤信息的輸出。LIVE555中多數類中均包含此類對象指針。其內部包含TaskSchedule抽象類的指針,該類用於任務調度,因此所有包含UsageEnvironment指針的類均可將自己加入到調度中。

 

1.3BasicUsageEnvironment

         包含具體環境類和具體TaskScheduler類。UsageEnvironment用於對錯誤信息的處理,BasicUsageEnvironment類用於以控制檯方式輸出錯誤信息。因此想要以其他方式輸出錯誤信息的類,可以從UsageEnvironment派生。BasicTaskSchedule類繼承自TaskScheduler抽象類,用以定義具體的調度策略。任何基於LIVE555的應用程序均需要定義自己的BasicEnvironment和TaskScheduler庫。如果創建窗口應用程序,在重定義TaskScheduler時,需要與圖形環境自己的事件處理框架集成。BasicTaskSheduler使用select模型實現事件的獲取和處理。如果想使用更高效的IOCP模型,可以定義自己的BasicTaskScheduler類。BasicTaskScheduler內部有一個循環,循環讀取隊列中的消息並處理。整個基於BasicTaskScheduler的程序只有一個線程驅動。

1.4GroupSock

         對各種socket操作的封裝,用於收發數據。主要面向組播,但也可以進行單播的收發數據,僅支持UDP,不支持TCP。

1.5 MediaServer 服務器程序

         該程序使用BasicUsageEnvironment庫實現,因此是一個控制檯程序。任務調度類是BasicTaskScheduler類,因此使用Select模型且僅有一個線程在循環處理各種事件。

 

 

         LIVE555中大量使用簡單工廠模式,每個子類均有一個CreateNew靜態成員。該子類的構造函數被設置爲Protected,因此在外部不能直接通過new來構造。同時,每個類的構造函數的參數中均有一個指向UsageEnvironment的指針,從而可以輸出錯誤信息和將自己加入調度。

 

MediaSouce是所有Souce的基類,MediaSink是所有Sink的基類。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章