嵌入式MPEG-4解碼系統(tǒng)的設計與實現(xiàn)
音頻數(shù)模轉(zhuǎn)換芯片選用Philips公司的UDAl342TS音頻編解碼芯片,將I2S總線輸出的解碼后的數(shù)字音頻信號轉(zhuǎn)換成左右聲道音頻模擬信號輸出。視頻數(shù)模轉(zhuǎn)換芯片選用Philips公司的SAA7129AH數(shù)字視頻編碼器,解碼前要通過VW2010的I2C控制函數(shù)配置其寄存器。 SAA7129AH將VW2010解碼輸出單元輸出的8位數(shù)字Y、C-B、C-R視頻數(shù)據(jù)變成PAL(NTSC)制式的混合電視廣播信號(CVBS)、適用S端子的Y、C信號或者R、G.、B三原色信號輸出以適應不同場合需要。
本文引用地址:http://2s4d.com/article/264095.htm3 系統(tǒng)軟件設計
本系統(tǒng)軟件設計主要分為嵌入式Linux操作系統(tǒng)內(nèi)核移植、VW2010、PCI橋芯片及網(wǎng)口等系統(tǒng)驅(qū)動程序編寫和解碼應用程序的編寫,其體系結(jié)構(gòu)及與硬件的關(guān)系如圖4所示。
嵌入式Linux操作系統(tǒng)是用戶控制系統(tǒng)的硬件平臺,系統(tǒng)驅(qū)動程序采用模塊化形式,向上為用戶層的解碼應用程序提供API函數(shù),向下通過系統(tǒng)硬件API函數(shù)控制系統(tǒng)硬件。VW2010驅(qū)動模塊采用實時加載方式,其他如網(wǎng)口、I2C和PCI/IDE接口等驅(qū)動通用性強,直接編譯入內(nèi)核。解碼應用程序則實現(xiàn)系統(tǒng)MPEG-4數(shù)據(jù)流的傳輸和解碼。
Linux下的驅(qū)動開發(fā)技術(shù)已經(jīng)發(fā)展成熟,嵌入式Linux內(nèi)核的定制和移植也很普遍,本文不作詳細的闡述,主要介紹解碼應用程序。
以IDE硬盤文件解碼為例,解碼程序主要由兩部分組成:主程序和解碼線程程序。解碼線程程序主要控制MPEG-4數(shù)據(jù)流的傳輸,先從數(shù)據(jù)源 (IDE接口硬盤)獲取MPEG-4數(shù)據(jù)流文件,再以塊的方式將數(shù)據(jù)傳送至W2010進行數(shù)據(jù)流的解碼,然后在檢測外部中斷信號同時不斷地把文件中的數(shù)據(jù)以塊的方式寫入VW2010,直到文件終止或者外部信號中斷解碼過程。解碼過程相對獨立。為便于其后臺用使用線程的方式實現(xiàn),線程的級別要設為最高 [5]。主程序主要進行系統(tǒng)初始化工作,內(nèi)容包括讀取解碼參數(shù),配置SAA7129的寄存器,啟動并檢查MIPS,開啟VW2010并加載配置文件等。
如果數(shù)據(jù)源是從以太網(wǎng)端口輸入,修改相應的配置選項,把對硬盤文件的操作換成對IP數(shù)據(jù)包的操作,把數(shù)據(jù)包解成MPEG-4數(shù)據(jù)流文件,再寫入VW2010。
VW2010提供了十分齊全的API函數(shù)供使用,包括I2C配置、輸入輸出控制、解復用和解碼控制等,在VW2010的驅(qū)動模塊加載后可以在C++語言里直接調(diào)用,極大方便了軟件程序的編寫。主程序流程圖如圖5所示。
本文介紹了一種嵌入式MPEG-4視頻流解碼系統(tǒng),該系統(tǒng)采用硬解碼方式實現(xiàn)IDE接口設備或網(wǎng)絡端口輸入的MPEG-4碼流(ES、PS和 TS)轉(zhuǎn)換成PAL/NTSC制式的電視信號輸出。系統(tǒng)采用64位MIPS芯片TM-PR4925XB-200作為主控制器,以VW2010作為 MPEG-4解碼芯片;采用嵌入式Linux作為操作系統(tǒng)和模塊化的VW2010驅(qū)動程序,解碼應用程序簡單實用,可擴展性強。實驗證明此系統(tǒng)可穩(wěn)定地對比特率1Mbps~16Mbps的MPEG-4碼流進行解碼,在碼流比特率為2Mbps時,圖像的質(zhì)量仍與普通DVD效果相似??蓮V泛用于IP電視、衛(wèi)星電視、基于MPEG-4標準的數(shù)字電視廣播系統(tǒng)中,應用前景十分廣闊。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論