?

JPEG XR在S3C2410A上的實現與優化

2012-01-31 05:21陳自剛朱海華
電視技術 2012年13期
關鍵詞:編解碼碼流存儲器

陳自剛,朱海華

(1.南陽理工學院 計算機與信息工程學院,河南 南陽473004;2.南陽師范學院 計算機與信息技術學院,河南 南陽473061)

JPEG XR標準采用多種先進的圖像壓縮技術,例如采用雙正交重疊變換(Lapped Biorthogonal Transform,LBT)[1-3]代替離散余弦變換實現圖像無損表示,且編解碼處理過程所需要的存儲空間很小。JPEG XR采用的全整數運算大大降低了計算復雜度。另外,編解碼算法合二為一,既能處理無損轉換又能實現有損壓縮。上述特征使得JPEG XR易于在嵌入式平臺上實現[4-5]。

目前JPEG XR編解碼算法的版本為JPEG XR reference software 1.8(September 2009),將編解碼算法合二為一,根據參數不同實現編碼和解碼[6]。

1 硬件系統結構及流程

Samsung公司推出的ARM芯片S3C2410A內部結構復 雜、功 能 強 大[7]。S3C2410A芯 片 基 于16/32位ARM920T內核,采用五級流水線和哈佛結構,是高性能和低功耗的硬宏單元,具有獨立的16 kbyte指令緩存以及16 kbyte數據緩存。支持USB HOST模式,支持4通道DMA模式,支持TFT彩色顯示屏最大虛擬屏大小4 Mbyte,64 k色彩模式下最大的虛擬屏為2 048×1 024。存儲管理器(MMU)支持大/小端模式,有8個存儲器bank,每個bank支持尋址128 Mbyte,共計能尋址1 Gbyte。其硬件系統結構如圖1所示。

圖1 硬件系統結構

盡管S3C2410A具有8通道的多路復用10位的A/D轉換器,最大支持500 ksample/s(千采樣/秒)。但若結合CCD進行圖像的采集與轉換,還是稍顯遜色。另外,A/D轉換器連接在低速的APB BUS上,而且S3C2410A上的4通道的DMA不以ADC采集信息作為數據源,只能借助于處理器實現A/D后的信息到內存的傳送,整個系統的效率會降低。所以借助CMOS實現圖像采集并傳輸至USB接口,這方面技術很成熟。

系統加電時,以外部中斷方式向S3C2410A的中斷控制器發送“圖像采集”中斷請求,調用基于USB接口的圖像采集中斷服務程序,啟動CMOS進行圖像采集,同時啟動DMA傳輸,實現通過內部AHB總線將原圖像傳送至SRAM存儲器中的緩沖區的過程,DMA傳輸結束時向中斷控制器發送中斷請求(INT_DMA0)。ARM920T內核開始執行JPEG XR編碼器(以中斷服務程序的形式存放),對原圖進行編碼,生成基于空間模式的碼流并存放在SDRAM中。編碼結束后通過軟中斷(在JPEG XR編碼器代碼尾部)形式,調用解碼中斷服務程序,再通過軟中斷形式,調用顯示中斷服務程序,將圖像顯示在TFT屏幕上。

2 在S3C2410A上實現JPEG XR編解碼

2.1 S3C2410A上實現JPEG XR編解碼流程

確定JPEG XR實現平臺之后,接下來要做的就是編寫JPEG XR編解碼器的代碼并移植到S3C2410A平臺上。具體流程如圖2所示。

圖2 基于S3C2410A的JPEG XR編解碼流程

如果只是進行程序代碼移植,則最終的JPEG XR編解碼器的效率將會很低,因此必須根據JPEG XR編解碼器和S3C2410A特點進行優化。

首先分析JPEG XR編解碼器,根據在特定S3C2410A系統,進行編解碼代碼的調整。數據類型調整為32位有符號整數,根據前述實現外部的RGB24到內部的YUV 4∶4∶4的分量變換和比特深度變換,進行函數簡化,內存空間建立不同的多塊區域以存儲外部圖像緩沖信息和不同編解碼階段的緩沖信息進行相應的分配。從而使得JPEG XR編解碼器在移植過程中,減少誤差,滿足實際的JPEG XR編解碼要求。然后構建ARM-Linux交叉編譯工具(因為JPEG XR編解碼器使用Glib C庫,所以構建ARMLinux而非ARM-ELF交叉編譯工具),為了提高JPEG XR編解碼效率,構建目標機為S3C2410A的交叉編譯工具,編譯生成適合于S3C2410A工作在ARM狀態的32位字對齊的ARM指令,并進行相應的優化。最后移植到S3C2410A上并測試JPEG XR采集過程與顯示過程。

2.2 JPEG XR編解碼代碼簡化

為提高JPEGXR編解碼效率,需要對原C語言代碼進行簡化,去除不相關的函數和過程操作以減少代碼量,同時對C代碼進行優化。

下面介紹JPEGXR編碼過程[8],如圖3所示。

圖3 JPEG XR編碼過程

編碼過程首先對原始圖像進行Pre-scaling,為提高JPEG XR編解碼效率,采用32位定點整數數據類型。此處理步驟應用32 bit-signed integer(BD32S),其他的功能函數即可刪除。

盡管JPEG XR編解碼算法支持多種外部圖像格式,但其內部只定義了6種圖像格式:Y、YUV 4∶2∶0、YUV 4∶2∶2、YUV 4∶4∶4、n通道和YUVK[5]。設定來自于外部CMOS的圖像格式為RGB24,內部圖像格式為YUV 4∶4∶4,采用以下分量變換實現外部圖像格式RGB24到內部圖像格式YUV 4∶4∶4的轉換,該變換無損壓縮分量變換,其轉換關系[5]為

圖像還原時,可以由上述轉換關系的逆實現:YUV 4∶4∶4轉換為RGB24。

Color conversion過程,除了保留功能函數function FwdColorFmtConvert1()實現RGB到YUV 4∶4∶4格式轉換外,其他功能函數忽略。

Transform過程,編碼器采用兩級疊加轉換,這里選擇的是2×2 Hadamard transform:T2x2h(),其他轉換形式忽略。

FCT操作有2種形式FCT4x4 function和FCT2x2(),而FCT2x2()與T2x2h()完全一致,所以這個步驟可以忽略。

有4種可選功能函數確定在Transform過程中使用的overlap pre-filters情況,如前所述,構造轉換為T2x2h(),故選擇function T2x2hEnc()來實現。

根據如前所述的相關配置,其他過程也進行相應簡化,即盡量縮小編碼器體積。

碼流結構有2種基本模式:空間模式和頻率模式??梢圆捎每臻g模式,宏塊數據按照光柵掃描順序輸出,每個宏塊的碼流安排在一起,每個分割塊的碼流按照宏塊順序輸出,編碼過程中各階段處理的信息量很小,使用S3C2410A內的16 kbyte的數據Cache足以,也可以采用頻率模式。需要說明的是,空間模式和頻率模式的轉換不需要緩存整幅圖像然后再轉換,而是以分割塊為單位進行二者模式之間的轉換,故模式轉換需要的緩存很小。解碼過程只需要緩存幾排宏塊信息,在碼流形成過程中解碼時,使用數據Cache就能緩存這些宏塊信息,不需要緩存整個圖片碼流,即不需要將整個圖片碼流緩存到存儲器上。

JPEG XR解碼過程是圖3的逆過程,其代碼簡化過程類似。

2.3 數據塊定義與存儲器分配

S3C2410A的存儲控制器提供了訪問外部存儲器所需要的控制信號[9]。根據需要,數據類型定義為32位有符號定點整數,通過總線控制器OM[1:0]設定為(10)2,使得總線工作在32 bit的總線寬度,且工作在32位模式時對基本字長32位字按照小端(Little endian)的方式存儲。

存儲控制器共有8個bank,其中前6個bank是只讀存儲器(ROM)和靜態隨機存取存儲器(SRAM)的bank。剩余2個bank除支持ROM和SRAM外,還支持SDRAM。每個bank的尋址空間范圍128 Mbyte,8個bank總共的尋址空間范圍為1 Gbyte。所有的訪問周期都是可編程的,且可以通過插入wait時鐘周期來延長總線訪問周期。

用4片128 k×8的EPROM存儲器芯片,采用位擴展形式構造128 k×32的ROM存儲體。用2片128 k×16的SRAM存儲器芯片為1組采用位擴展形式構造128 k×32的SRAM存儲體,多組128 k×32的SRAM存儲體采用字擴展形式構造更大的32位SRAM存儲體。采用多體交叉存取技術,可以有效地提高總線利用率,有效提高存儲器的存取速度。

通過分析編解碼系統的特征發現,其任意階段產生的數據需要很少的緩存空間(在這里使用S3C240A內的16 kbyte的數據高速緩存),并且所有的操作都能SIMD指令化。數據塊定義和存儲器分配如表1所示。

3 優化與測試

3.1 代碼優化

在嵌入式系統中的程序代碼的優化,主要是根據嵌入式系統S3C2410A的硬件本身特點,對簡化后JPEG XR編解碼代碼進行匯編級別的優化。主要從3點進行基于S3C2410A的JPEG XR編解碼代碼優化。

表1 數據塊定義和存儲器分配

1)S3C2410A采用五級流水線結構,通過調整指令順序或者插入wait時鐘周期,避免相鄰指令對寄存器或者存儲器等結構相關的對象進行操作,避免數據相關或因循環或者轉移而產生的控制相關,從而提高流水線的性能。

2)S3C2410A擁有16 kbyte指令緩存和16 kbyte數據緩存,合理組織JPEG XR編解碼代碼在存儲器的存放位置,提高Cache命中率,從而提高編解碼效率。

3)S3C2410A擁有16個32位的寄存器,匯編過程中合理高效地利用這些寄存器,可以提高編解碼效率。

3.2 用time進行時間測試

time命令結果由3行組成:real,user,sys。real表示從程序開始到程序執行結束時所消耗的時間,包括CPU的用時。CPU用時被劃分為user和sys兩塊。user值表示程序本身,及其所調用的庫中的子例程使用的時間。sys值是由程序直接或間接調用的系統調用執行的時間。圖4a是對JPEG XR編解碼直接交叉編譯后生成的JPEGXR.exe簡單移植到S3C2410A上編碼1個500×500的RGB888圖像的時間;圖4b是基于S3C2410A定制并優化的JPEG XR編解碼交叉編譯后生成的JPEGXR.exe移植到S3C2410A上編碼1個500×500的RGB888圖像的時間。其定制和優化后的運行時間明顯降低。

圖4 time命令測試的運行時間

4 總結

雖然從技術上看,JPEG XR是一種很優秀的圖片格式??墒且呀浟餍械膱D片格式幾乎占據了數字圖像領域的各個角落。要想在數字設備上普遍應用,任重而道遠。本文構建了JPEG XR編解碼器的硬件系統,根據需要簡化了JPEG XR編解碼程序,并進行了基于S3C2410A的定制與優化,實現對采集的RGB格式圖像進行JPEG XR編碼和解碼過程。JPEG XR編解碼在S3C2410A上的實現,將有助于推動這一新圖像標準的推廣和應用。

[1]CHEN L Z,WANG H X.LBT based low complexity image compression method[C]//Proc.ICPR 2006.[S.l.]:IEEE Press,2006:941-944.

[2]CHENG Lizhi,CHEN Huowang.Integer lapped biorthogonal transform[C]//Proc.International Conference on Image Processing,2001.[S.l.]:IEEE Press,2001:471-474.

[3]TRAN T D,QUEIROZ R L,NGUYEN T Q.The variable-length generalized lapped biorthogonal transform[C]//Proc.International Conference on Image Processing,1998.[S.l.]:IEEE Press,1998:697-698.

[4]JTC 1/SC 29/WG 1.ISO/IEC CD 29199-2:2010,JPEG XR image coding system—Part 2:Image coding specification[S].2010.

[5]吳靜龍.JPEG XR碼流控制算法的研究[D].哈爾濱:哈爾濱工業大學,2010.

[6]JTC 1/SC 29/WG 1.ISO/IEC FCD 29199-5:2010,JPEG XR image coding system—Part 5:Reference software[S].2010.

[7]Samsung’s digital world[EB/OL].[2011-11-20].http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&partnum=S3C2410.2008-2-11.

[8]JTC 1/SC 29/WG 1.ISO/IEC CD 29199-3:2010,JPEG XR image coding system—Part 3:Motion JPEG XR[S].2010.

[9]李崢,黃俊,劉美玲.基于嵌入式的紅外電力監控系統的設計[J].電視技術,2011,35(5):100-102.

猜你喜歡
編解碼碼流存儲器
數字電視TS碼流協議簡要分析
靜態隨機存儲器在軌自檢算法
1553B總線控制器編解碼設計
為多重編解碼世界做好準備
大型民機試飛遙測視頻編解碼方法研究
一種比較ASN.1碼流差異的方法
存儲器——安格爾(墨西哥)▲
基于梯度的CCSDS壓縮碼流控制算法研究
基于Nand Flash的高速存儲器結構設計
2G/3G網絡IP化語音編解碼協商策略部署研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合