摘 要: 在嵌入式手機(jī)開發(fā)平臺(tái)上實(shí)現(xiàn)視頻解碼" title="視頻解碼">視頻解碼處理的方法,。首先介紹視頻解碼在嵌入式平臺(tái)上的處理流程,,然后具體分析視頻解碼算法中各個(gè)關(guān)鍵模塊的實(shí)現(xiàn)方法,,最后對(duì)該平臺(tái)上的處理性能進(jìn)行分析并給出結(jié)論,。
關(guān)鍵詞: 嵌入式平臺(tái) 視頻解碼 AVS-M
視頻業(yè)務(wù)作為下一代移動(dòng)通信的重要應(yīng)用,,已經(jīng)越來(lái)越受到重視,。目前,,很多高端移動(dòng)通信設(shè)備和智能手機(jī)都提供嵌入式操作系統(tǒng),,支持第三方的小應(yīng)用程序,。因此,在嵌入式手機(jī)平臺(tái)上開發(fā)視頻應(yīng)用具有很好的前景,。但是,,由于目前手機(jī)平臺(tái)資源有限,不能實(shí)現(xiàn)復(fù)雜性較高的實(shí)時(shí)視頻壓縮編碼,,所以首先要實(shí)現(xiàn)視頻的解碼處理,。下面介紹在嵌入式手機(jī)平臺(tái)上實(shí)現(xiàn)視頻解碼處理的方法及相應(yīng)結(jié)果,。
1 系統(tǒng)處理流程
在嵌入式平臺(tái)上實(shí)現(xiàn)的視頻解碼可以分為系統(tǒng)設(shè)置(包括操作系統(tǒng)初始化等)和視頻解碼處理兩部分。處理流程如圖1所示,。
1.1 系統(tǒng)設(shè)置
完成初始化系統(tǒng),,調(diào)用系統(tǒng)程序完成CPU初始化,配置寄存器以確保存儲(chǔ)器訪問(wèn)正確,。對(duì)嵌入式操作系統(tǒng)的內(nèi)核進(jìn)行初始化,,以μITRON操作系統(tǒng)為例,調(diào)用vsta_knl和ivsta_knl實(shí)現(xiàn)操作系統(tǒng)初始化,。初始化過(guò)程主要包括:
(1)設(shè)置終端寄存器和矢量寄存器(VBR)等關(guān)鍵寄存器,。
(2)初始化內(nèi)核工作區(qū)。
(3)創(chuàng)建初始化定義對(duì)象,。
(4)啟動(dòng)生成的系統(tǒng)初始化程序,,包括定時(shí)器(timer)、存儲(chǔ)管理單元(MMU)等,。
(5)轉(zhuǎn)向多任務(wù)進(jìn)程(MultiTasking),,并開始第一個(gè)任務(wù)。
由于視頻解碼算法采用C語(yǔ)言實(shí)現(xiàn),,因此還要完成任務(wù)的配置和初始化等工作以及C語(yǔ)言運(yùn)行環(huán)境配置等,。
在完成操作系統(tǒng)內(nèi)核初始化之后,程序進(jìn)入多任務(wù)狀態(tài),,其中視頻解碼處理部分作為主任務(wù)開始執(zhí)行,。
1.2 視頻解碼處理
視頻解碼處理部分是整個(gè)系統(tǒng)的主任務(wù),其第一步仍然是任務(wù)配置和初始化,。首先通過(guò)寄存器配置啟動(dòng)CACHE并初始化,,主要完成指令CACHE(IC)、操作數(shù)CACHE(OC)使能以及其他必需的模塊操作,。接下來(lái)初始化LCD顯示模塊,,包括設(shè)置LCD初始化參數(shù)、LCD驅(qū)動(dòng)參數(shù)及LCD繪圖參數(shù),。RGB轉(zhuǎn)換單元初始化用于使能視頻引擎單元及視頻色彩空間的轉(zhuǎn)換,。
在解碼開始前,先對(duì)解碼參數(shù)初始化,,包括分配存儲(chǔ)和倒換緩沖區(qū),、初始化查找表等。而后通過(guò)解析壓縮的標(biāo)準(zhǔn)視頻數(shù)據(jù)流獲取序列和圖像參數(shù)集及標(biāo)記信息,。若解析得到的信息顯示存在一幀圖像數(shù)據(jù),,則進(jìn)入主處理模塊進(jìn)行圖像解碼;否則釋放資源,,任務(wù)結(jié)束,。在每一幀圖像解碼完成后,,通常得到Y(jié)CbCr格式的數(shù)據(jù),通過(guò)RGB轉(zhuǎn)換單元變換成可在LCD顯示的RGB格式的數(shù)據(jù)(后處理),,送入相應(yīng)的緩沖區(qū),,實(shí)現(xiàn)LCD顯示。然后繼續(xù)解析碼流,,直到完成整個(gè)序列的解碼,、顯示。最后釋放資源,,任務(wù)結(jié)束,。
2 視頻解碼算法實(shí)現(xiàn)
目前,比較流行的視頻壓縮標(biāo)準(zhǔn)主要有MPEG4和H.264,。其中H.264的壓縮效率和圖像質(zhì)量在同等條件下要優(yōu)于MPEG4,,同時(shí)也更適合移動(dòng)應(yīng)用。擁有自主知識(shí)產(chǎn)權(quán)的移動(dòng)視頻標(biāo)準(zhǔn)AVS-M" title="AVS-M">AVS-M也在制定,。AVS-M與H.264 Baseline在標(biāo)準(zhǔn)框架上有很多相似之處,下面對(duì)這兩種標(biāo)準(zhǔn)中采用的關(guān)鍵處理模塊進(jìn)行分析,。
由于嵌入式移動(dòng)終端的主頻和存儲(chǔ)資源有限,,因此實(shí)現(xiàn)視頻解碼的關(guān)鍵在于如何優(yōu)化程序,提高執(zhí)行效率,,降低存儲(chǔ)需求,。針對(duì)嵌入式處理器的特點(diǎn),考慮到資源的有效利用,,在實(shí)現(xiàn)視頻解碼過(guò)程中應(yīng)采用下列策略:
(1)優(yōu)化數(shù)據(jù)結(jié)構(gòu),。例如采用合理的數(shù)據(jù)結(jié)構(gòu),提高指針和數(shù)組的尋址效率等,。
(2)改善數(shù)據(jù)處理流程,。例如將解碼過(guò)程中宏塊的預(yù)測(cè)模式、運(yùn)動(dòng)矢量的初始化在幀一級(jí)實(shí)現(xiàn),,通過(guò)模塊模糊化盡可能減少各個(gè)模塊之間數(shù)據(jù)緩存的倒換等,。
(3)充分利用硬件平臺(tái)特點(diǎn)。例如提高CACHE命中率,、有效利用片上存儲(chǔ)資源,、實(shí)現(xiàn)軟件流水等。
以AVS-M為例,,對(duì)標(biāo)準(zhǔn)視頻序列總線進(jìn)行測(cè)試,,得到如表1所示的視頻解碼算法中各部分的處理時(shí)間比例。
在解碼過(guò)程中,,反量化" title="反量化">反量化/反變換模塊,、運(yùn)動(dòng)補(bǔ)償模塊和重構(gòu)" title="重構(gòu)">重構(gòu)模塊占用了大部分處理資源,,因此這里主要考慮對(duì)這三個(gè)模塊的處理。
2.1 反量化/反變換
為降低運(yùn)算量,,H.264基線和AVS-M的變換采用整數(shù)離散余弦的4×4變換,,變換矩陣由全部是整數(shù)的核心矩陣和系數(shù)矩陣組成。系數(shù)矩陣與量化過(guò)程結(jié)合,,變換部分就成為可逆的整數(shù)變換,。視頻解碼過(guò)程中,從碼流解析出每個(gè)4×4塊的量化系數(shù)進(jìn)行反量化和反變換,,生成該4×4數(shù)據(jù)塊的參差矩陣,,與預(yù)測(cè)矩陣共同重構(gòu)出解碼圖像塊。實(shí)現(xiàn)此功能可采取以下策略:
(1)將4×4量化系數(shù)矩陣用一維數(shù)組來(lái)表示,,避免在每次取操作數(shù)時(shí)兩次尋址,,提高尋址效率。
(2)在同一個(gè)模塊實(shí)現(xiàn)反量化,、反變換和重構(gòu),。整個(gè)操作過(guò)程均針對(duì)存放16個(gè)量化系數(shù)的數(shù)組進(jìn)行,每完成一個(gè)運(yùn)算過(guò)程直接更新數(shù)組相應(yīng)的元素,,從而避免塊數(shù)據(jù)的倒換,。完成該操作后即得到解碼圖像塊。
(3)將重構(gòu)過(guò)程中的兩重4次循環(huán)的內(nèi)循環(huán)打開,,實(shí)現(xiàn)軟件流水,。也可以在整個(gè)宏塊的所有4×4塊均完成反量化和反變換后對(duì)兩重16次循環(huán)采用軟件流水,這樣可以提高速度,,但增加了存儲(chǔ)資源占用,。
(4)反量化過(guò)程采用查找表實(shí)現(xiàn),降低了運(yùn)算復(fù)雜性,。查找表存入CACHE,,可提高訪問(wèn)速度。
采用上述方法可大大提高處理速度,,同時(shí)節(jié)省存儲(chǔ)資源,。
2.2 運(yùn)動(dòng)補(bǔ)償
為降低碼率,H.264和AVS-M采用1/4像素精度的亮度插值" title="插值">插值預(yù)測(cè)和1/8像素精度的色度插值預(yù)測(cè),。插值過(guò)程占用了運(yùn)動(dòng)補(bǔ)償?shù)拇蟛糠謺r(shí)間,。因此,在處理運(yùn)動(dòng)補(bǔ)償時(shí),,應(yīng)采用如下策略:
(1)并行化處理,。視頻處理中,1/2像素插值通過(guò)水平FIR濾波器和垂直FIR濾波器實(shí)現(xiàn)。對(duì)于亮度插值,,每個(gè)像素點(diǎn)的取值范圍在[0,,255],濾波器抽頭系數(shù)在[-63,,64]之間,,每個(gè)插值計(jì)算的結(jié)果不會(huì)超出[-6630,22950],,因此可以用16位運(yùn)算器實(shí)現(xiàn),。而目前采用的嵌入式處理器至少是32位的,因此在每個(gè)指令周期可以并行完成至少兩個(gè)插值運(yùn)算,,進(jìn)而大大減少了插值運(yùn)算時(shí)間,。
(2)預(yù)擴(kuò)展參考圖像邊界。對(duì)于幀間預(yù)測(cè),,預(yù)測(cè)數(shù)據(jù)塊根據(jù)運(yùn)動(dòng)矢量在參考圖像中確定預(yù)測(cè)參考?jí)K(根據(jù)運(yùn)動(dòng)矢量的取值,,參考?jí)K數(shù)據(jù)可以是參考像素值,也可以是1/2像素或1/4像素插值結(jié)果),。當(dāng)運(yùn)動(dòng)矢量指向的參考樣本超出圖像參考邊界時(shí),,需要使用圖像內(nèi)距離該參考樣本最近的整數(shù)樣本代替。如果每次在參考樣本超出邊界時(shí)進(jìn)行判斷和賦值,,則會(huì)增加判斷次數(shù)并會(huì)導(dǎo)致軟件流水中斷,。為此,可以預(yù)先將參考圖像根據(jù)邊緣像素值做水平和垂直擴(kuò)展,。參考樣本全在參考圖像外面時(shí),不論運(yùn)動(dòng)矢量延伸多大,,所得到的預(yù)測(cè)塊像素值都是相同的,,可以將擴(kuò)展的寬度設(shè)定為宏塊的寬/高度以確保結(jié)果的正確性。這樣就不再需要判斷,,同時(shí)解決了軟件流水問(wèn)題,。
(3)提高CACHE命中率。由于CACHE的存儲(chǔ)空間有限,,不可能將參考圖像全部放入CACHE,,因此考慮根據(jù)運(yùn)動(dòng)矢量的統(tǒng)計(jì)特性將最有可能的參考樣本放入CACHE,用以提高命中率,。
2.3 圖像重構(gòu)
圖像重構(gòu)過(guò)程與反量化/反變換結(jié)合起來(lái)實(shí)現(xiàn),,具體實(shí)現(xiàn)參見2.1。
3 測(cè)試結(jié)果
利用上述方法,,可以實(shí)現(xiàn)嵌入式手機(jī)平臺(tái)上的視頻解碼,。表2給出了在手機(jī)開發(fā)平臺(tái)上的測(cè)試結(jié)果。其中CPU主頻為216MHz,操作系統(tǒng)為μITRON,,視頻標(biāo)準(zhǔn)為AVS-M,,圖像格式為QVGA,大小為320×240,。測(cè)試序列選擇具有代表性的標(biāo)準(zhǔn)序列,。
由表2可知,大多數(shù)測(cè)試序列基本可以達(dá)到實(shí)時(shí)解碼(15幀/秒),。目前市場(chǎng)上的主流智能手機(jī)的主頻在150MHz以上,,而視頻格式通常采用QCIF(大小為176×144)或近似大小的視頻格式,遠(yuǎn)小于未來(lái)的主流視頻格式——QVGA,。因此,,該嵌入式視頻處理系統(tǒng)可以直接應(yīng)用于移動(dòng)終端產(chǎn)品。
參考文獻(xiàn)
1 Renesas 32-bit RISC microcomputer SH mobile series SH73182 hardware manual,,REJ09B0118-0070Z.RENESAS Corp,2004
2 Renesas 32-bit RISC microcomputer superHTM RISC engine family SH4AL-DSP software manual.REJ09B0002-0150Z.RENESAS Corp,,2004
3 Renesas industrial realtime operating system HI7000 /4 series (HI7000/4,HI7700/4,,HI7750/4) user′s manual.RENESAS Corp,,2003
4 Wiegand T,Sullivan G J,,Bjontegaard G et al.Overview of the H.264/AVC video coding standard.IEEE Trans.CircuitsSystem Video Technol,,2003;13(7)
5 Draft ITU-T recommendation and final draft international standard of joint video specification(ITU-T Rec.H.264/ISO/IEC 14496-10 AVC.Joint Video Team(JVT) of ISO/IEC MPEG and ITU-T VCEG,,JVT-GO50,,2003
6 AVS工作組.音視頻編碼 第七部分:移動(dòng)視頻(草案).北京:AVS工作組,2004