999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于S3C2440的H.264軟編解碼器實現

2010-04-12 00:00:00王亞非
現代電子技術 2010年6期

摘 要:H.264編解碼器的軟件實現是嵌入式應用領域的熱門研究課題。在此介紹以S3C2440為硬件平臺,在Linux開發環境下實現基于H.264的x264編碼、ffmpeg解碼以及ffplay解碼播放的移植過程和方法。實驗結果表明,在qcif分辨率下,可以獲得近實時的解碼和播放。最后針對視頻流進行實時編解碼和播放的要求,提出對編解碼優化的方案。

關鍵詞:S3C2440;H.264;視頻流;編解碼;嵌入式開發

中圖分類號:TP311文獻標識碼:A

文章編號:1004-373X(2010)06-038-02

Implementation of H.264 Software Encoder/Decoder Based on S3C2440

HE Xun,ZHOU Ying,WANG Yafei

(School of Optoelectronic Information,University of Electronic Science and Technology of China,Chengdu,610054,China)

Abstract:Nowadays,the software realization of H.264 encoder /decoder is the hotspot of the embedded application research.Implementation of H.264 encoding and decoding in the Linux system baded on S3C2440 is introduced.The encoding code is based on x264,and the decoding code on ffmpeg codec,and play on ffplay codec.The experimental results show that at the resolution of qcif,the near real-time decoding and playing can be gained.Aimming at real-time video decoding and playing based on the video streaming,the optimization of codec options is given.

Keywords:S3C2440;H.264;video streaming;encoder/decoder;embedded development

0 引 言

由國際電信聯合會ITU視頻編碼專家組VCEG(Video Coding Expert Group)和國際化標準組織運動圖像專家組MPEG(Motion Picture Expert Group)共同組成的聯合視頻組JVT(Joint Video Team)聯合制定的H.264視頻壓縮標準,憑借相對其他標準較高的壓縮效率和優秀的圖像質量,已經成為目前最流行的視頻處理協議,具有廣闊的前景和巨大的應用價值。由于H.264采用分層設計、多模式運動估計、改進的幀內預測等技術,顯著提高了預測精度,從而獲得比其他標準好得多的壓縮性能[1]。然而H.264獲得優越性能的代價是大幅度增加計算復雜度。

目前,H.264的開源解碼器軟件主要有:德國HHI研究所負責開發的H.264官方測試軟件JM,由法國巴黎中心學校的中心研究所的學生發起的,網上自由組織聯合開發的兼容264標準碼流的編碼器x264,以及中國視頻編碼自由組織聯合開發T264等。對比之下,x264注重實用,在不明顯降低編碼性能的前提下,努力降低編碼的重復計算復雜度,摒棄了H.264標準中一些對編碼性能貢獻微小但計算復雜度極高的新特性如多參考幀。

隨著視頻壓縮技術的日益成熟,嵌入式視頻監控成為當今視頻監控的主流。采用S3C2440為硬件平臺,將Linux與H.264相結合,實現x264和ffmpeg的移植,對實際嵌入式視頻通信系統的設計開發,具有重要意義和實用價值[2]。

1 系統架構

采用S3C2440作為硬件平臺,穩定運行在400 MHz,64 MB片上SDRAM,可以滿足大型軟件內存需要,64 MB NAND FLASH,用于存儲文件系統鏡像,接口豐富,功能強大。以擁有免費性,高可靠性,攜帶源代碼,強大的網絡功能等特性的Linux作為嵌入式軟件開發平臺。

嵌入式Linux系統的開發基本流程:首先在宿主機上建立交叉編譯環境,然后移植Linux的引導程序到目標板,最后構建嵌入式Linux系統并移植到目標板。構建嵌入式Linux系統主要包括對內核進行裁剪和配置,根據實際的硬件系統進行內核和外設驅動程序的移植開發,以及構建Linux的根文件系統[3]。

2 x264的移植

由于普通PC機的X86體系結構和ARM的體系結構的差別,X86就是采用復雜指令架構計算機(Complex Instruction Set Computer,CISC)架構。在CISC處理器中,程序的各條指令是按順序串行執行的,每條指令中的各個操作也是按順序串行執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。arm結構采用的是精簡指令集計算機(Reduced Instruction Set Computer,RISC)架構,是一種執行較少類型計算機指令的微處理器。他們有以下區別:RISC對存儲器操作有限制,使控制簡單化;而CISC機器的存儲器操作指令多,操作直接。RISC機器在一條指令執行的適當地方可以響應中斷;而CISC機器是在一條指令執行結束后響應中斷。RISC匯編語言程序一般需要較大的內存空間,實現特殊功能時程序復雜,不易設計;而CISC匯編語言程序編程相對簡單,科學計算及復雜操作的程序設計相對容易,效率較高。

比如CISC結構的CPU,基本上所有的指令都能訪問內存,對內存的操作都可以通過一個指令直接完成。而RISC結構的CPU對內存的操作大都是通過Load/Stores來進行的,其對內存的算術操作不能在一個指令周期內完成。通常通過Load將內存中的操作數取出,送入寄存器,再修改寄存器的內容,最后再用Store將寄存器的數據送回內存。RISC結構的內存操作方式,決定了由CISC結構CPU上開發的軟件不能直接成功移植到RISC上面[4]。

為了能夠在PC機(CISC結構)上編譯得到能在ARM上(RISC結構)運行的二進制程序,要使用交叉編譯工具鏈來編譯程序,這里選用arm-Linux-gcc 3.4.1。

筆者移植所選版本為x264-snapshot 20070920-2245。將x264程序拷貝到PC機上的Linux系統,運行x264所在目錄下的configure腳本進行配置,輸入CC=arm-Linux-./configure。會在當前目錄生成config.mak文件,修改該腳本,設置編碼器和庫文件安裝路徑、目標系統類型(Linux或Windows)、指定編譯工具鏈和編譯選項等。比如把CC=gcc,AS=yasm修改為CC=arm-Linux-gcc,AS=arm-Linux-as等。

緊接著在shell腳本make,在make中會出現關于cpu_set_t的錯誤,關于CPU_set_t的以下那段代碼是計算CPU內核數目的,所以將np=1(計算機是單核)直接返回,而沒有用它的計算,還可能會出現變量未定義的情況,可以用extern來輔助定義和應用相關函數得到解決。

然后make install,就會得到目標平臺處理格式的二進制可執行文件x264,將其移植到開發板上,具體參數說明可以鍵入“./x264-help”進行查看。

3 ffmpeg和ffplay的移植

由于ffplay需要SDL庫的支持,SDL是一個跨平臺的多媒體庫,以用于直接控制底層的多媒體硬件的接口。首先交叉編譯SDL,這里采用的版本為SDL-1.2.13。

鍵入“./configure-help”根據需要設置參數,然后make和make install,看情況改變prefix目錄和各種選項。make install之后便在prefix目錄下生成所需的動態庫和include頭文件等。

然后交叉編譯ffmpeg,注意的是要把x264加進來,當Configure時要加入-enable-x264選項,具體參數說明可鍵入“./configure-help”查看。

Configure后會出現在SDL support NO之后,編輯腳本configure里面的sdl-check,找到:

SDL_CONFIG=“MYM{cross_prefix}sdl-config”,修改為自己安裝的目錄,如筆者為/usr/local/arm/3.4.1/bin/sdl-config,緊接著make進行編譯和make install進行安裝就能得到目標平臺處理器格式的二進制可執行文件ffplay和ffmpeg,將生成的ffplay和ffmpeg移植到開發板上,同時將生成的庫文件libSDL-1.2.so.0和libx264.so.56移植到ARM上Linux系統的根目錄lib下運行。

4 幾組實驗數據的對比

在S3C2440平臺下,采用Linux內核2.6,用成功移植的x264和ffmpeg以及ffplay,對標準序列做了以下測試,如表1所示。

表1 測試結果

測試參數

測試序列

suzie_qcifforeman_qcifforeman_cif

qp262626

編碼fps3.923.621.03

解碼fps15.2114.054.01

PSNR/dB

Y38.3737.2037.54

U44.6340.9741.27

V44.1941.7443.03

Avg39.6239.1838.59

Global39.5838.1038.44

從表1可以看出,在S3C2440平臺上編碼速度比較慢,解碼速度能接近實時,相信進過優化,能達到一般安全監控的要求。

ARM上測試序列標準序列suzie_qcif.yuv播放效果如圖1所示,測試電影中的1個片段播放效果如圖2所示。

圖1 ARM播放測試序列效果圖

圖2 ARM播放電影效果圖

5 優化方案

(1) 由于S3C2440這塊芯片不支持MMX (MultiMedia extensions多媒體擴展)指令。MMX CPU比普通CPU在運行含有MMX指令的程序時,處理多媒體的能力上提高了60%左右。如果采用Xscale系列的PXA270等芯片,編解碼速度能得到極大的提高。

(2) 少用循環特別是二重以上的循環。可通過展開循環體的辦法,來降低循環開銷。

(3) 對于特別耗時的關鍵模塊,可以考慮匯編級的優化。

(4) 充分利用寄存器和CACHE,減少存儲器訪問。ARM9采用的是“寄存器-CACHE-外部存儲器”三級存儲器結構。寄存器的速度最快,CACHE的訪問時間約為其兩倍,而外部存儲器還要慢。因此減少存儲器的訪問次數也是優化的一個關鍵。

參考文獻

[1]畢厚杰.新一代視頻壓縮編碼標準H.264/AVC[M].北京:人民郵電出版社,2005.

[2]劉恒洋,王森.基于ARM的視頻監控系統的設計與實現[J].微計算機信息,2007,23(2):125-127.

[3]鄭靈翔.嵌入式系統設計與應用開發[M].北京:北京航空航天大學出版社,2006.

[4]陳文智.嵌入式系統開發原理與實踐[M].北京:清華大學出版社,2005.

[5]余兆明,查日勇,黃磊,等.圖像編碼標準H.264技術[M].北京:人民郵電出版社,2006.

[6]黃燕平.μC/OS ARM移植要點詳解[M].北京:北京航空航天大學出版社,2005.

[7]Youngsoo Kim,William Edmonson.H.264 Video Decoder Design:Beyond RTL.Design Implementation[J].IEEEWorkshop on Signal Processing Systems,2006:107-112.

[8]吳明暉.基于ARM的嵌入式系統開發和應用[M].北京:人民郵電出版社,2005.

主站蜘蛛池模板: 人妻出轨无码中文一区二区| 青青草国产在线视频| 国产午夜精品一区二区三区软件| 欧洲极品无码一区二区三区| 亚洲国产中文精品va在线播放| 91在线国内在线播放老师| 国产老女人精品免费视频| 四虎在线高清无码| 中文字幕伦视频| 国产玖玖玖精品视频| 亚洲日韩精品欧美中文字幕| 特级毛片8级毛片免费观看| 免费播放毛片| 亚洲国产精品成人久久综合影院| 国产成人精品免费av| 无码人妻热线精品视频| 久久黄色小视频| 毛片免费在线视频| 欧美一区二区精品久久久| 亚洲日本www| 白浆免费视频国产精品视频 | 91色在线视频| 亚洲精品国产综合99| 一级做a爰片久久毛片毛片| 一级毛片无毒不卡直接观看 | 日韩精品无码一级毛片免费| 欧美色视频网站| 欧美激情视频二区| 欧美一区二区自偷自拍视频| 国产人成在线观看| 国产91麻豆视频| 免费中文字幕一级毛片| 福利片91| 国产青榴视频| 性做久久久久久久免费看| 欧美翘臀一区二区三区| 亚洲AV电影不卡在线观看| 亚洲一区无码在线| 亚洲AV电影不卡在线观看| 国产精品99一区不卡| 午夜小视频在线| 免费无遮挡AV| 制服丝袜一区| 在线精品自拍| 毛片最新网址| 青青青视频蜜桃一区二区| 精品色综合| 免费国产高清精品一区在线| 亚洲欧美成aⅴ人在线观看| 国产a网站| 谁有在线观看日韩亚洲最新视频| 国产精品成| 波多野结衣视频网站| 免费jizz在线播放| 亚洲国产精品一区二区高清无码久久| 熟女成人国产精品视频| a级毛片免费在线观看| 97国产成人无码精品久久久| 亚洲人成人无码www| 欧美中文字幕一区二区三区| 亚洲一级色| 伊人成人在线视频| 精品伊人久久久大香线蕉欧美| 国产欧美亚洲精品第3页在线| 欧美成人免费午夜全| 99re视频在线| 亚洲日韩在线满18点击进入| 精品在线免费播放| 自拍欧美亚洲| 国产亚洲精品自在久久不卡| 亚洲国产综合精品一区| 国产精品香蕉在线| 二级特黄绝大片免费视频大片| 亚洲精品桃花岛av在线| 国产一区二区色淫影院| 91免费国产高清观看| 国产91视频免费观看| 一本大道香蕉久中文在线播放| 亚洲高清在线播放| 亚洲无码高清免费视频亚洲 | 在线观看精品自拍视频| 91亚洲视频下载|