国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于DSP和FPGA的視頻編碼器

發布時間:2015-1-15 15:15    發布者:designapp
關鍵詞: DSP , FPGA , 視頻編碼器
隨著寬帶Internet的快速發展和電子設備計算能力的迅速提高,在Internet上實時傳輸高清晰度視頻信息成為可能,以Internet為傳輸媒介的視頻會議、視頻監控、Internet電視臺等視頻應用方興未艾。這些應用的一個共同特點是,都需要一個高性能的實時視頻編碼器,特別是高分辨率的視頻應用給視頻編碼器的計算能力提出了很高的要求。例如,一幅720×576的4∶2∶2視頻格式的畫面,包含有3240個16×16的YUV宏塊(MacroBlock,即MB)。如果該視頻幀按照P幀或者B幀進行壓縮,那么每一個YUV宏塊都要進行運動估計、運動補償、DCT(Discrete Cosine Transform)/反DCT變換、量化/反量化和VLC(Variable Length Coding)等環節的運算。如果進行實時壓縮(每秒鐘壓縮25幀)的話,大致需要316~5GIPS(Instruction persecond)的計算能力。
目前,單一的CPU/DSP一般還不具備這樣的計算能力。為了解決高清晰畫面的實時視頻壓縮問題,本文提出了DSP和FPGA(Field Pro-grammable Gate Array)協同設計方案。使用FPGA完成視頻采集、YUV(視頻亮度Y、色度分量
UV)分離、數據I/O(Input/Output)等所有周邊功能,使用高性能的DSP進行視頻壓縮編碼,因而在視頻編碼器內DSP和FPGA能夠進行流水操作,有效地提高了編碼器的性能。
為了降低算法的計算復雜度,本文提出了基于宏塊空間復雜度的宏塊編碼類型判別算法(MTJBSC)。在標準MPEG24視頻運動估計算法中,判別宏塊的編碼類型是通過計算當前宏塊內像素值方差和參考宏塊與當前宏塊之間的方差來實現的,因此計算量很大。MTJBSC算法首先計算出當前宏塊的空間負責度(MBC),然后通過比較當前宏塊的MBC與SAD(Sum of Absolute Difference)值來判斷當前宏塊的編碼類型,大大降低了算法的計算復雜度。
        
1 硬件設計方案
基于TI公司的圖像開發工具包(Imaging Developer Kit,即IDK)[2]架構,設計了視頻編碼器的硬件平臺。從整體上來講,視頻編碼器的硬件實現由DSP和FPGA兩個模塊組成,其邏輯框圖如圖1所示。由于視頻壓縮編碼計算量很大,為了盡可能提高視頻壓縮幀率,由DSP專門負責視頻壓縮編碼,而視頻采集、YUV轉換和編碼器I/O接口等其它功能則交由FPGA模塊來實現。


   
如圖1所示,用戶控制命令(例如視頻壓縮模式)由FPGA模塊首先截獲,然后FPGA模塊向DSP模塊產生外部中斷,DSP在響應中斷時讀取存儲在FPGA中的用戶控制命令字,然后DSP解析命令字,并根據用戶要求的視頻格式、幀圖像分辨率和視頻壓縮碼流速率進行視頻壓縮編碼。
模擬視頻信號經視頻解碼器轉換為裸視頻數據流,該數據流(或從數字攝像機直接獲得的數據流)經FPGA預處理后送入幀存中。DSP讀取幀存中的數據進行壓縮編碼,壓縮后的視頻數據送入FIFO中,最后FIFO中的數據通過串口送給信道編碼器。
FPGA模塊的邏輯框圖見圖2。如圖2所示,視頻解碼器首先將模擬視頻信號量化為復合的YUV數據,然后經FPGA進行YUV分離(和濾波)后送到幀存(圖1中的SDRAM1)中,C6201使用DMA通道(異步方式)通過FPGA讀取幀存中的YUV數據進行壓縮編碼。幀存(SDRAM1)在刷新(refresh)或缺頁(pagemiss)時會引起DMA讀等待,為了平滑這種等待引起的DMA讀數據的抖動,設計時在FPGA的內部實現了一個高速FIFO。視頻幀存采用了乒乓結構,將8M字節SDRAM分為兩個4M字節的地址空間(每一個地址空間可以容納一幀YUV視頻數據(720×576×115字節)),一個地址空間用于存儲當前正在采集的視頻數據,另一個地址空間用于DSP的數據讀取。在壓縮CCIR601格式的視頻圖像(每秒25幀)時,由于DSP的處理速度(大約每秒10幀)慢于視頻采集的速度,所以FPGA模塊在采集完一幀數據進入等待狀態,直到DSP壓縮完上一幀視頻數據時,這2個地址空間才進行互換。



DSP模塊接收FPGA模塊送過來的YUV視頻數據,然后進行視頻壓縮編碼,最后將壓縮的碼流再轉交給FPGA模塊,由FPGA模數據發送出去。DSP模塊的存儲單元(圖1中的SDRAM2)用來存放參考幀數據和中間運算結構。MPEG-4壓縮編碼算法指令存放在PROM中,為縮短取指時間,編碼器在啟動時已將指令從PROM讀到片內存儲器中。MPEG壓縮碼流是變速碼流(VBR),而當該碼流在恒定速率(CBR)的信道上發送時,需要一個FIFO緩存來平滑編碼器輸出碼率的波動。
該設計的特點主要表現在以下2個方面:
①可擴展性好。FPGA模塊除了負責數據I/O功能外,還作為協處理器使用,可根據需要增加FPGA的門數來實現原來由DSP完成的功能,例如Huffman編碼、運動估計等;
②靈活的視頻壓縮編碼格式控制,編碼器能夠實時地根據用戶的要求進行壓縮編碼。
        
2 視頻壓縮算法優化
(1)MPEG-4數據流優化設計
實驗表明,如果代碼和代碼要訪問的數據在C6201片內存儲區(PRAM和DRAM),其代碼執行速度要比代碼和數據在片外同步SDRAM中平均快17倍(片內總線寬度為256位,數據訪問為1個CPU周期)。因此,將執行代碼和數據放到片內將大大提高程序的運行速度。
在MPEG-4算法中,由于沒有考慮存儲器的限制,算法每次讀入一幀YUV數據進行壓縮編碼。但對于C6201來說,片內只有64K字節DRAM,不可能一次將一幀數據讀到片內存儲器進行壓縮。如果將一幀數據一次讀到片外存儲器(SDRAM)中進行壓縮,又會大大降低代碼的執行速度,因此,我們對視頻壓縮算法進行了改進,一次對一個切片(slice)數據進行壓縮編碼,并將壓縮碼流數據直接送入到發送緩沖區中。
編碼器一次將一個切片的YUV數據(當前幀)讀入到片內存儲器中,然后根據計算決定切片宏塊的編碼類型(幀內/幀間編碼)。如果宏塊進行幀內編碼,則YUV數據被分成8×8的像素塊(一個宏塊包含4個Y分量像素塊和2個UV分量像素塊)進行DCT變化,以消除圖像空間冗余信息。DCT變化后的系數經過量化后進行游程編碼(RunLengthCoding即RLC)和變長編碼(VariableLengthCoding,即VLC),變長編碼的結果送入到視頻發送緩沖區中。與此同時,量化后的DCT系數經過反量化(結果放入內存B中)和反DCT過程形成重建幀,重建幀用作下一幀的參考幀。
如果宏塊進行幀間編碼,則以宏塊為單位進行運動估計,根據運動估計的結果建立預測幀。當前幀和預測幀的差值形成了殘差幀(residue frame),殘差幀的編碼過程與幀內編碼過程相同。
(2)宏塊編碼類型判別算法
在MPEG-4算法中采用了快速運動估計算法,但是在進行宏塊編碼類型判別時計算量仍然很大。為此,本文提出了基于宏塊空間復雜度的判別算法MTJBSC,進一步降低了運動估計過程中的計算量。
在編碼P幀宏塊的時候,首先要決定宏塊是進行幀內編碼還是幀間編碼。在標準MPEG-4算法中是通過以下方法決定的[5]:
設參考宏塊的像素值(Y分量值,以下同)用P(x,y)表示,當前宏塊的像素值用C(x,y)表示,x,y表示宏塊的縱、橫坐標,M,N表示宏塊的寬和高。當前宏塊像素值的方差用EVAR表示,其值為



參考宏塊和當前宏塊的方差用EVMC表示,其值為



EVMC值越小(比如EVMCEVARandEVMC≥9)then幀內編碼else幀間編碼
顯然,在MPEG-4算法中,為了判斷宏塊的編碼模式進行了大量的計算(對于每一個P幀宏塊都要進行上面的計算)。為了減少計算復雜度,本文提出了基于宏塊空間復雜度(EMBC)的宏塊類型判斷(MTJBSC)算法,用以判斷P幀宏塊的幀內/幀間編碼模式。
定義宏塊的空間復雜度為水平方向上相鄰像素差值的絕對值之和,即



在基于幀間差原理進行視頻壓縮的MPEG標準中,一般都是采用絕對差總合(ESAD)來進行運動估計的。在MPEG標準中,宏塊的ESAD值定義為



式中:m,n為該宏塊的運動向量。
根據上述定義,MTJBSC算法可簡單描述為:
如果宏塊的ESAD小于其EMBC,則該P幀宏塊進行幀間編碼;否則進行幀內編碼。實驗表明,在壓縮質量和壓縮輸出碼率均沒有大的變動的情況下,該算法有效降低了視頻編碼器的計算復雜度,編碼器的壓縮幀率(f/s)得到明顯提高。

        
3 測試結果
表1為編碼器進行裝載測試的測試結果(1幀的平均值)。裝載測試是首先將視頻測試序列裝載到編碼器的SDRAM中,然后進行壓縮編碼。使用的視頻序列為標準測試序列mother(CIF格式,彩色,YUV4∶2∶0,5幀),DSP主頻設置為200MHz。



表2為美國TI(TexasInstrument)公司基于DSK6711EVM板開發的H.263視頻編碼器的性能測試數據(裝載測試)[6],DSP主頻為150MHz。TI公司針對DSK6711對H.263做了全面優化,算法關鍵代碼采用了線性匯編語言編寫。H.263視頻編碼算法與MPEG視頻編碼算法的壓縮編碼原理、過程和計算復雜度大致相當,因此二者具有可比性。



從表1和表2可以看出,研制的視頻編碼器平均壓縮幀率為39.2f/s(CIF圖像),而TI公司開發的視頻編碼器平均壓縮幀率為20f/s(CIF圖像),絕對性能提高了96%,考慮到DSP主頻的因素,相對性能仍然提高了47%。
4 結論
采用DSP和FPGA協同技術設計實現了一個高性能的MPEG24視頻編碼器。使用FPGA完成編碼器I/O功能,使用DSP進行視頻壓縮編碼,二者能夠很好地并行工作,系統設計結構簡捷,硬件工作可靠。同時,針對DSPC6201片內資源特點優化了視頻壓縮的數據流模式,采用MTJBSC算法有效地降低了壓縮算法的計算復雜度。測試結果表明,采用MPEG24視頻標準該視頻編碼器每秒能夠每秒壓縮39.2幀CIF圖像。
本文地址:http://m.qingdxww.cn/thread-144686-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本老人oldmantv乱| 丝袜美腿亚洲一区二区图片| 亚洲国产成人精彩精品| 亚洲欧美日韩中文高清一| 午夜久久网| 亚洲精品丝袜在线一区波多野结衣| 中文字幕亚洲第一| 国产老师开裆丝袜喷水漫画| 婷婷射精AV这里只有精品| 日本a在线天堂| 亚洲欧美成人中文在线网站| 色88888久久久久久影院| 特黄特色大片免费| Chinesetube国产中文| 国产精品99精品无码视亚| 色噜噜狠狠一区二区三区| 婷婷成人综合| 日本免费高清在线观看播放| 色青青草原桃花久久综合| 6080yy 久久 亚洲 日本| 欧美午夜福利主线路| 性久久久久久久久| 手机看片自拍自拍| 亚洲国产精品丝袜国产自在线| 6 10young俄罗斯| 日韩av片无码一区二区不卡电影| 亚洲国产精品高清在线一区| 日本三级2020| 亚洲欧美一区二区三区不卡| 丝袜 欧美 视频 首页 在线| 在线欧美v日韩v国产精品v| 黄色软件视频app| 闲人综合网| 日韩尤物| 亚洲欧美久久久久久久久久爽网站| xiao77唯美清纯| 小草观看免费高清视频| 天堂网亚洲| 色噜噜视频| 亚洲一区二区在线视频| 99热国产这里只有精品6|