<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DSP平臺的快速H.264編碼算法的設計

基于DSP平臺的快速H.264編碼算法的設計

作者: 時(shí)間:2009-02-24 來(lái)源:網(wǎng)絡(luò ) 收藏

  標準H.264/AVC是由ISO/IEC和ITU-T組成的聯(lián)合視頻專(zhuān)家組(JVT)制定的,他引進(jìn)了一系列先進(jìn)的視頻編碼技術(shù),如4×4整數變換、空域內的幀內預測,多參考幀與多種大小塊的幀間預測技術(shù)等,標準一經(jīng)推出,就以其高效的壓縮性能和友好的網(wǎng)絡(luò )特性受到業(yè)界的廣泛推崇。特別是在2004年7月JVT組織做了重要的保真度范圍擴展的補充后,更加擴大了標準的應用范圍,但同時(shí)巨大的運算量卻成為其廣泛應用的瓶頸??紤]到H.264協(xié)議實(shí)現的復雜度,本文的思路是:一方面提高硬件處理速度和能力,采用TI公司最新的數字媒體處理器Davinci TMS320DM6446 芯片作為H.264實(shí)現的硬件平臺,另一方面提高算法效率。最后提出一個(gè)基于這個(gè)芯片的嵌入式H.264的設計方案。

  1 硬件平臺

  1.1 Davinci DM6446芯片介紹

  DM6446采用+的雙內核結構(內核圖見(jiàn)圖1),其中的芯片的CPU時(shí)鐘頻率可達594 MHz,的引入可以釋放DSP在控制方面的部分功能,使DSP專(zhuān)門(mén)進(jìn)行數據處理的工作。芯片采用增強型的哈佛結構總線(xiàn),其CPU內部有2個(gè)數據通道,8個(gè)32 b的功能單元,2個(gè)通用寄存器組(A和B),可同時(shí)執行8條32 b長(cháng)指令。如果能充分利用這8個(gè)功能單元,總字長(cháng)為256 b的指令包同時(shí)分配到8個(gè)并行處理單元,在完全流水的情況下,該芯片的指令吞吐量將達到594×8=4 752 MIPS。處理器具有雙16 b擴充功能,芯片能在一個(gè)周期內完成雙16 b的乘法、加減法、比較、移位等操作。該芯片內部支持兩級Cache,其中第一級32 kB的程序緩存器L1P,80 kB的數據緩存器L1D,而第二級的Cache大小是可配置的64 kB,芯片自動(dòng)完成這兩級Cache之間數據一致性的維護。有了這兩級Cache的支持將使CPU的執行速度大大加快。

  Davinci DM6446具有專(zhuān)用的視頻圖像處理子系統。視頻處理子系統包括1個(gè)視頻前端和1個(gè)視頻末端,視頻前端的輸入接口用于接受外部傳感器或視頻譯碼器輸出的BT.656等圖像輸入信息;視頻末端輸出接口輸出圖像,實(shí)現圖像本地重現。

  視頻前端輸入(VPFE)接口由1個(gè)CCD控制器(CCDC),1個(gè)預處理器,柱狀模塊,自動(dòng)曝光/白平衡/聚焦模塊(H3A)和寄存器組成。CCD控制器可以與視頻解碼器CMOS傳感器或電荷耦合裝置連接。預處理器是一個(gè)實(shí)時(shí)的圖形處理器。

  1.2 H.264硬件平臺

  本系統的平臺核心處理芯片為Davinci DM6446,如圖2所示,片外RAM選取兩片DDR并聯(lián)成32位的數據寬度,空間為256 MB。模擬視頻信號在“VIDEO IN”引入后經(jīng)過(guò)解碼芯片TVP5146變換為數字信號后輸入TMS320DM6446芯片中進(jìn)行處理,H.264編碼處理后的碼流可以通過(guò)視頻末端輸出保存在本地硬盤(pán)上,以方便調試檢查?;蛘呖梢酝ㄟ^(guò)10/100 M以太網(wǎng)物理層接口輸出,進(jìn)行網(wǎng)絡(luò )傳輸。同時(shí),本地的重構圖像可以通過(guò)TMS320DM6446芯片內部OSD模塊和編碼模塊D/A變換后直接顯示輸出。

  2 H.264編碼器結構與編碼流程

  2.1 H.264編碼器結構

  如圖3所示輸入的圖像以宏塊為單位進(jìn)入編碼器中,根據圖像變化的快慢選擇幀內或幀間預測編碼。如果選擇幀內預測編碼,首先判斷當前待編碼塊中是否包含很多的細節,再決定是否要把幀進(jìn)行再分割。接著(zhù)以重建幀μF′n中的塊為參考,結合當前塊周?chē)鷫K的預測模式,選擇當前塊的最佳預測模式。最后由重建幀μF′n中相應塊和當前塊選定的預測模式得到當前塊的預測值。按照上述方法,對圖像中的每一宏塊作出幀內預測,進(jìn)而得到一幀圖像的預測值P。如果選擇幀間預測編碼,當前輸入幀Fn和前一幀(參考幀)Fn-1被送到運動(dòng)估計器(ME),通過(guò)塊搜索,匹配可以得到當前幀中的各宏塊相對于參考幀中對應宏塊的偏移量,也就是常說(shuō)的運動(dòng)矢量。接著(zhù),參考幀Fn-1和剛得到的運動(dòng)矢量MV被送到運動(dòng)補償器(MC),通過(guò)計算得到幀間預測值P;當前幀Fn和幀預測值P相減,得到殘差Dn,經(jīng)過(guò)變換,量化后產(chǎn)生一組量化后的變換系數X,再經(jīng)過(guò)熵編碼,與解碼所需的一些邊信息(如預測模式量化參數,運動(dòng)矢量等)一起組成一個(gè)壓縮后的碼流,經(jīng)NAL(網(wǎng)絡(luò )自適應層)供傳輸和存儲。

2.2 編碼器編碼流程

  如圖4所示為H.264編碼器主流程。對輸入的一幀圖像首先進(jìn)行單元劃分:以宏塊為基本單元進(jìn)行劃分,再由若干宏塊在組合成Slice,由Slice再組合成Slice Group,這樣每個(gè)宏塊所屬的Slice和Slice Group也就確定了。再判斷輸入的一幀圖像是I-Frame還是P-Frame。在以上工作完成后,也就可以對每個(gè)宏塊進(jìn)行編碼了。在對每個(gè)宏塊都編碼完成后,還需要對重構圖像進(jìn)行1/4象素精度插值處理、參考幀緩沖區插入處理等工作。至此,編碼一幀的工作才算完成。

  3 運動(dòng)估計模式快速率失真決策

  為了減少圖像序列的時(shí)間冗余,達到更好壓縮效果的目的,H.264/AVC編碼方案采用運動(dòng)補償技術(shù)和預測。即由先前已編碼的一個(gè)或多個(gè)幀產(chǎn)生當前編碼幀的一種預測模式,然后再進(jìn)行預測編碼。且采用了一種可變塊尺寸的運動(dòng)預測模式,亮度塊尺寸的范圍從16×16變化到4×4,其中包含很多可選模式,形成了一種樹(shù)形結構的運動(dòng)預測。對于I幀(包含幀內4×4、幀內16×16),對P幀(包含幀內4×4、幀內16×16、SKIP模式、幀間16×16、幀間16×8、幀間8×16、幀間8×8、幀間8×4、幀間4×8)同時(shí)還為P幀和B幀提供了特殊的SKIP模式,總共11種模式。這些可選模式的存在使得編碼方式更加靈活,編碼精度相對于固定尺寸塊預測要高很多。然而,可選的幀問(wèn)預測模式增加了,必然會(huì )使得運算復雜度增加,因此有必要采用一種高效的決策方法來(lái)選取塊尺寸組合方式,使得編碼效率和編碼質(zhì)量均佳。

  3.1 拉各朗日代價(jià)函數

  引入拉各朗日代價(jià)函數如下:

  其中D表示重構恢復圖像相對于原始圖像間的失真;R(si,m)表示對宏塊編碼后數據及相關(guān)參數在碼流中所占用的比特數,一般由編碼統計得到,但對于SKIP模式,比特數默認為1比特;λ表示模式選擇時(shí)所使用的拉各朗日乘積因子。

  對于運動(dòng)估計,可使用拉各朗日代價(jià)函數作為選擇運動(dòng)矢量的判決標準。根據式(1)得到對一個(gè)采樣塊si進(jìn)行ME判決的代價(jià)函數為下:

  該式返回產(chǎn)生最小代價(jià)值的最佳匹配運動(dòng)矢量mi,其中M指各種可能編碼模式的集合,m為當前選定模式,式(2)中R(si,m)是運動(dòng)矢量(mx,my)所要傳輸(按熵編碼)的比特數。D(si,m)表示對圖像宏塊的預測誤差,對于該預測誤差的計算有兩種方案:當預測誤差選擇是絕對誤差時(shí)用(SAD)表示,如式(3);當預測誤差選擇是平方差時(shí),則用SSD表示,如式(4)中:

  其中A為當前編碼宏塊。在使用多參考幀進(jìn)行運動(dòng)估計時(shí),mi表示所選用的最佳參考幀。在進(jìn)行運動(dòng)搜索時(shí),對塊si先是進(jìn)行整象素精度的運動(dòng)搜索,以取式(1)最小值為匹配標準,得到整象素精度最佳匹配點(diǎn)后,以同樣的方法進(jìn)行1/2,1/4象素精度的匹配搜索。同時(shí)在多個(gè)參考幀內作同樣的操作,將所得的函數代價(jià)進(jìn)行比較得到最小值,也就找到了s,塊的最佳匹配的運動(dòng)矢量mi。

  3.2 快速預測模式判斷算法

  快速算法相對于拉各朗日代價(jià)函數算法,可分以下兩步實(shí)現:

  (1)以基于預測模式的方式計算代價(jià)函數J,但是這里采用簡(jiǎn)化的計算方法,對每一種采樣模式進(jìn)行分行交錯隔點(diǎn)采樣,如對8×8塊內象素進(jìn)行下采樣,采樣如圖5所示。

  然后對采樣點(diǎn)計算SAD,記做SADi。僅對采樣點(diǎn)計算的拉各朗日代價(jià)函數如下:

  J=[SAD(si,m)+λ?R(si,m)]

  先對上述各種模式分別計算代價(jià)函數J,然后選擇代價(jià)最小的3種模式構成候選模式集。

  (2)對步驟(1)所得到的候選模式集中每個(gè)模式,按照式(1),通過(guò)計算基于率失真的代價(jià)來(lái)實(shí)現基于RDO的模式選擇,也即C值最小的模式作為最終預測模式。

  4 測試結果與結論

  目前,基于DM6446平臺上設計的以上H.264編碼器系統己基本完成,我們選擇了幾個(gè)常見(jiàn)的視頻對該編碼器進(jìn)行了性能測試,測試數據如表1所示。數據表明本H.264編碼器能夠正常工作,且表現出較好的壓縮性能。當然該編碼器只實(shí)現了H.264協(xié)議的基本檔次的部分,而且尚未進(jìn)行更專(zhuān)門(mén)的優(yōu)化過(guò)程,而協(xié)議的其他部分,由于其復雜性,則需要進(jìn)行進(jìn)一步研究,沿著(zhù)這個(gè)方向,視頻還可以進(jìn)一步壓縮。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>