基于AU 1 200的TS流處理設計
以Linux系統為平臺,利用其多線程處理的優勢,結合AU1200硬件組成的數字電視播放系統可以方便地實現數字電視TS流的播放。數字電視播放系統結構如圖2所示。本文引用地址:http://www.104case.com/article/166898.htm
3 數字電視播放軟件的設計
播放軟件采用模塊化設計,多線程并行處理。各模塊并通過MAI(Media Application Interface)Engine完成相互問的數據傳遞和同步。軟件要求在保持流暢播放MPEG(1,2,4),DivX,WMV和XviD等格式多媒體文件的同時增加播放數字電視的功能。
3.1 已有播放軟件結構
已有的媒體播放軟件結構:播放軟件內各模塊通過MAI Engine將相應模塊組裝起來,完成特定格式的媒體文件的播放或格式轉換。
模塊類型分為:File Reader模塊、Demux模塊、De-coder模塊、Render模塊和File Writer模塊。模塊是否需要載人、如何進行鏈接由MAI Engine根據播放的媒體格式而定。模塊裝載后以線程的形式獨立運行,模塊間通過數據緩沖區進行數據交換,并由MAI Engine負責協調,以確保模塊運行正常。
3.2 播放軟件內的TS流處理
在播放軟件內實現數字電視TS流的播放,需要在原有的播放系統上增加TS流的Reader、Demux和Decoder模塊。由于數字電視的音視頻編碼格式都是公開且確定的,因此需要相應的Decoder模塊進行處理。基于MAE的TS流處理模塊結構如圖3所示。
(1)TS-Reader模塊
TS-Reader模塊是讀取TS流的模塊。它從硬件設備獲取TS流數據,按照TS-Demux的數據緩沖區大小要求寫入該緩沖區。主要實現打開TS流數據接口、關閉接口和讀取TS流數據3個功能,分別對應3個主要函數一TSstreamopen()、_TSstreamclose()和 _TSstreamread()。由于數字電視不支持回放,因此不具備定位搜索(即Seek)的功能。
(2)TS-Demux模塊
TS-Demux模塊是進行TS流解析的模塊,它是處理數字電視TS流的關鍵。TS-Demux從緩沖區中取到數據后,需要對TS流進行解析,然后返回 MAI當前TS流的節目信息,供應用程序選擇。在確定節目流PID后,TS-Demux將根據音視頻PID分檢TS流,獲取Video和Audio數據,供相應的Decoder解碼。
評論