基于S3C2440A T-DMB的手機(jī)電視軟硬件設(shè)計(jì)
CPU的功能是通過SPI接口接收TS數(shù)據(jù),完成音頻和視頻的解碼后顯示。數(shù)據(jù)可以通過DMA進(jìn)行緩存,然后就可以從DMA中讀取數(shù)據(jù)進(jìn)行解復(fù)用。DMA方式為一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲(chǔ)器之間直接讀寫數(shù)據(jù),既不通過CPU,也不需要CPU干預(yù)。整個(gè)數(shù)據(jù)傳輸操作在DMA控制器的控制下進(jìn)行。CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時(shí)做一點(diǎn)處理外,在傳輸過程中,CPU可以進(jìn)行其它工作。這樣,在大部分時(shí)間里,CPU和輸入/輸出都處于并行操作狀態(tài)。因此,可以大大提高整個(gè)系統(tǒng)的效率。在WinCE平臺(tái)下,對DMA的操作相當(dāng)方便,驅(qū)動(dòng)開發(fā)難度不大,讀取數(shù)據(jù)就像操作普通文件一樣。只有一點(diǎn)區(qū)別,就是要防止DMA溢出。因?yàn)槠胀ㄎ募淖x取完全可控,而這里處理的是一種“實(shí)時(shí)”流,有可能發(fā)生溢出。溢出包括上溢(數(shù)據(jù)讀取過慢)和下溢(讀取過快)。和MPEG的解碼器接收端防止數(shù)據(jù)溢出的原理是一樣的,主要是由于圖像編碼的格式不一樣,發(fā)送的解碼器前端的數(shù)據(jù)速率并不是恒定的。MPEG采用流速反饋控制來控制數(shù)據(jù)溢出,使得到達(dá)音視頻解碼器的數(shù)據(jù)速率趨于恒定。對DMA的控制就簡單些,用專用的一個(gè)線程讀取數(shù)據(jù),解復(fù)用線程依據(jù)數(shù)據(jù)的多少,可以丟棄某些幀或者放慢解碼速度。不過一般還是丟幀的情況多。
硬件設(shè)計(jì)注意事項(xiàng)
設(shè)計(jì)硬件電路時(shí)的主要問題就是高頻和電磁兼容,一般的方法是加屏蔽罩,可以把APOLLO FS1110加屏蔽罩,以減少模塊的空間干擾。當(dāng)然也可以把APOLLO FS1110、KINO2EFS1026做成外置式模塊。還可以通過優(yōu)化原理圖的設(shè)計(jì)來減少高頻的影響。因?yàn)樵韴D的好壞直接影響布局、布線的難度,以及以后板子性能的好壞。為了布局布線時(shí)能清晰地進(jìn)行分區(qū)設(shè)計(jì),以減少各個(gè)功能模塊之間的影響,設(shè)計(jì)原理圖時(shí)應(yīng)把數(shù)字、模擬和RF電路分開。但是,由于手持設(shè)備體積較小,屏蔽罩一般是必不可少的。
軟件設(shè)計(jì)
T-DMB標(biāo)準(zhǔn)概述
T-DMB采用H.264 視頻壓縮標(biāo)準(zhǔn),音頻采用專利費(fèi)較低的MPEG-4 比特分片算術(shù)編碼BSAC(Bit-Sliced Arithmetic Coding)或者AAC+(歐洲T-DMB采用),圖像格式為CIF(Common Intermediate Format)(352×288),把這些音頻和視頻碼流加上一些用戶數(shù)據(jù),經(jīng)過MPEG-4 SL(Sync Layer)同步層打包和MPEG-2 TS(Transport Stream)復(fù)用后,交給調(diào)制器調(diào)制為適宜在信道上傳播的信號(hào)發(fā)射出去。各種標(biāo)準(zhǔn)的接收端除信道解碼有較大差別,信源的解碼很相近。T-DMB系統(tǒng)發(fā)送端編碼器結(jié)構(gòu)如圖2所示。
圖2 T-DMB發(fā)送端編碼框圖
其中的MPEG-4 OD/BINFS發(fā)生器產(chǎn)生視聽對象、場景時(shí)空關(guān)系信息和視聽對象的描述符信息。IOD發(fā)生器產(chǎn)生視聽對象的初始信息:場景描述和對象描述信息。分段發(fā)生器主要收集SLP和IOD數(shù)據(jù)信息,用于產(chǎn)生和節(jié)目解復(fù)用相關(guān)的參考信息PSI(Program Specific Information)。在T-DMB的數(shù)據(jù)流中,可以通過解析PMT中的描述字段得到IOD_descriptor ,由IOD_descriptor可以得到場景、對象描述信息。由對象描述可以得到ES_ descriptor等信息。SL同步打包器主要負(fù)責(zé)視聽對象和輔助數(shù)據(jù)的同步。SL包經(jīng)PES打包之后,再把PES包打?yàn)門S包發(fā)送給調(diào)制器。
軟件的功能描述
軟件的主要任務(wù)是TS流的解復(fù)用、H.264和AAC+的解碼,采用微軟的Direct Show技術(shù)開發(fā),可以降低開發(fā)難度和開發(fā)周期。Direct Show技術(shù)是微軟提供的Windows平臺(tái)多媒體開發(fā)包,以COM為基礎(chǔ)。Direct Show使用Filter Graph的模型來管理整個(gè)數(shù)據(jù)流的處理過程。參與處理的各個(gè)功能模塊叫Filter,按功能分3類:Source、Transform、Rendering Filter 。Source Filter主要負(fù)責(zé)獲取數(shù)據(jù)和前期的處理;Transform Filter負(fù)責(zé)數(shù)據(jù)格式的轉(zhuǎn)換和傳輸,主要是負(fù)責(zé)解碼;Render Filter負(fù)責(zé)顯示。各個(gè)Filter和應(yīng)用程序的交互靠事件通知機(jī)制來完成:Filter狀態(tài)改變時(shí)發(fā)出一個(gè)事件,由Filter Graph Manager處理或發(fā)給應(yīng)用程序。整個(gè)軟件可以分為5大功能模塊,如圖3所示。TS解復(fù)用器模塊屬于Source Filter,作用是從DMA緩沖中獲取數(shù)據(jù),然后從TS流中解析PAT(Program Association Table)和PMT(Program Map Table),得到相關(guān)節(jié)目的音頻和視頻數(shù)據(jù)TS包的PID(Packet Identifier)之后,就可以組合PES(Packetized Elementary Stream)包,同時(shí)還可以得到和音視頻同步相關(guān)的參數(shù):PCR(Program Clock Reference)、CTS(Presentation Time Stamp)、DTS(Decoding Time Stamp),最后把PES包去包頭后的ES(Elementary Stream)數(shù)據(jù)發(fā)給下游的解碼Filter。H.264和AAC+解碼模塊屬于Transform Filter,主要功能是把從上游獲取的音頻和視頻數(shù)據(jù)進(jìn)行解碼,把解碼得到的PU(Presentation Unit)重新排序(只有用到雙向預(yù)測時(shí)需排序),送給下游的生成器。視頻生成器和音頻生成器模塊屬于Rendering Filter,主要完成顯示功能。如果數(shù)據(jù)格式需要轉(zhuǎn)換,可以在解碼器和生成器之間加一個(gè)具有轉(zhuǎn)化功能的Transform Filter。
評論