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