<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è) > 消費電子 > 設計應用 > AVS-M與H.264(Baseline)視頻解碼器結構的分析

AVS-M與H.264(Baseline)視頻解碼器結構的分析

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

是JVT組織起草的一個(gè)覆蓋多種應用和面向多種傳輸環(huán)境的國際標準,它規定了三種檔次,基本檔次( profile)、主要檔次(Main profile)和擴展檔次(Extended profile),其中基本檔次利用I片和P片支持幀內和幀間編碼,支持利用基于上下文的自適應的變長(cháng)編碼進(jìn)行的熵編碼(CAVLC),主要用于會(huì )議電視、可視電話(huà)和無(wú)線(xiàn)通信等實(shí)時(shí)通信。


AVS(Audio video coding)標準是由我國自主制定,擁有自主知識產(chǎn)權的音編解碼技術(shù)標準。(Mobile video)是AVS系列標準中的第七部分――移動(dòng),應用于數字存儲媒體、寬帶視頻業(yè)務(wù)、遠程監控和可視電話(huà)等。


)視頻上十分相似,但又各有其核心思想,本文基于JM10.2和WM3.3源代碼對兩的關(guān)鍵技術(shù)作了詳細。程序中并未單獨有)的代碼,是筆者從JM10.2中抽取出來(lái)的,下文中H.264均表示從基本檔次上考慮。

兩種標準的


和H.264視頻解碼器都只需考慮I幀和P幀(為了兩標準視頻解碼器更好地比較,本文對H.264只考慮幀圖像,不考慮場(chǎng)圖像)的解碼,總體思想是從比特流中解出頭信息,產(chǎn)生預測塊,熵解碼得到的量化系數經(jīng)反量化、反變換得到殘差塊,預測塊和殘差塊相加后,經(jīng)過(guò)濾波器即可得到重建的圖像,其框圖如圖1所示。

圖1 解碼器總體框架

在實(shí)際應用當中,這兩種標準設計出來(lái)的解碼器應用領(lǐng)域有所不同,現就以下幾個(gè)方面兩種標準的差異。

1 比特流信息


①NALU(Network Abstract Layer Unit):兩標準中的比特流都是以NAL為單位,每個(gè)NAL單元包含一個(gè)RBSP,NALU的頭信息定義了RBSP所屬類(lèi)型。類(lèi)型一般包括序列參數集(SPS)、圖像參數集(PPS)、增強信息(SEI)、條帶(Slice)等,其中,SPS和PPS屬于參數集,兩標準采用參數集機制是為了將一些重要的序列、圖像參數(解碼圖像尺寸、片組數、參考幀數、量化和濾波參數標記等)與其他參數分離,通過(guò)解碼器先解碼出來(lái)。此外,為了增強圖像的清晰度,AVS-M增加了圖像頭(Picture head)信息。讀取NALU過(guò)程中,每個(gè)NALU前有一個(gè)起始碼0x000001,為防止內部0x000001序列競爭,H.264編碼器在最后一字節前插入一個(gè)新的字節――0x03,所以解碼器檢測到該序列時(shí),需將0x03刪掉,而AVS-M只需識別出起始碼0x000001。


②讀取宏塊類(lèi)型(mb type)和宏塊編碼模板(cbp):編解碼圖像以宏塊劃分,一個(gè)宏塊由一個(gè)16*16亮度塊和相應的一個(gè)8*8cb和一個(gè)8*8cr色度塊組成。


(a) 兩標準的幀內、幀間預測時(shí)宏塊的劃分是有區別的。H.264中,I_slice亮度塊有Intra_4*4和Intra_16*16兩種模式,色度塊只有8*8模式;P_slice宏塊分為16*16、16*8、8*16、8*8、8*4、4*8、4*4共7種模式。而AVS-M中,I_slice亮度塊有I_4*4和I_Direct兩模式,P_slice時(shí)宏塊的劃分和H.264中的劃分一致。


(b) 兩標準的宏塊cbp值計算也不相同。H.264中,Intra_16*16宏塊的亮度(色度)cbp直接通過(guò)讀mb type得到;非Intra_16*16宏塊的亮度cbp=coded_block_pattern%16,色度cbp=coded_block_pattern/16 。其中,亮度cbp最低4位有效,每位決定對應宏塊的殘差系數是否為0;色度cbp為0時(shí),對應殘差系數為0,cbp為1時(shí),DC殘差系數不為0,AC系數為0,cbp為2時(shí),DC、AC殘差系數都不為0。AVS-M中,當宏塊類(lèi)型不是P_skip時(shí),直接從碼流中得到cbp的索引值,并以此索引值查表得到codenum值,再以codenum查表分別得到幀內/幀間cbp。此cbp為6位,每位代表宏塊按8*8劃分時(shí)是否包含非零系數,當變換系數不為0時(shí),需進(jìn)一步讀cbp_4*4中每位值來(lái)判斷一個(gè)8*8塊中4個(gè)4*4塊的系數是否為0。

2 幀內預測


H.264中Intra_16*16亮度塊和8*8色度塊都有4種預測模式(垂直、水平、直流、平面),AVS-M中8*8色度塊只有3種(垂直、水平、直流),H.264中Intra_4*4和AVS-M中的4*4亮度塊都有9種預測模式,但排列順序不一樣。H.264中的Intra_4*4和AVS-M中的4*4亮度塊的模式可以通過(guò)鄰塊的幀內模式來(lái)預測,預測方法不同。H.264中,當前亮度塊的最可能模式由左塊(A)、上塊(B)中較小的決定,如果相鄰塊不存在,則A、B模塊的模式置為DC。而預測模式的選定要看碼流中標志信息prev_intra4*4_pred_mode,該標志為1時(shí),則用最可能模式,該標志不為0時(shí),還需看參數rem_intra4*4_pred_mode,如果它小于最可能模式,則預測模式即為rem_intra4*4_pred_mode,否則為rem_intra4*4_pred_mode+1。AVS-M中,左塊(A)、上塊(B)的預測模式(若不存在,置為-1)形成表格后,通過(guò)查表可獲得當前塊的最可能模式。對I_Direct,其預測模式即為最可能模式;對I_4*4,需看標志信息pred_mode_flag,該標志為0時(shí),預測模式即為最可能模式;該標志為1時(shí),當碼流中讀到的intra_luma_pred_mode小于最可能模式,則預測模式為最可能模式,否則,預測模式為intra_luma_pred_mode+1。另外, H.264中的Intra_16*16和色度預測模式從碼流中讀取,AVS-M的色度預測模式也從碼流中讀取。

3 幀間預測


兩標準下亮度塊的運動(dòng)矢量等于預測運動(dòng)矢量(MVPred)加上比特流中讀取到的運動(dòng)矢量差(MVD)。由于亮度MV精度為1/4像素,而色度精度為1/8像素,因此,色度塊的運動(dòng)矢量等于亮度塊的兩倍。AVS-M和H.264的當前亮度塊E和鄰塊A、B、C、D的空間位置分別如圖2、3所示。E的大小可以是16*16、16*8、8*16、8*8、8*4、4*8或4*4。顯然,AVS-M中,A是與E的左下角樣本緊鄰的塊,B、D與E的左上角樣本緊鄰的塊,C是與E的右上角樣本緊鄰的塊。H.264中,A是與E的左上角樣本緊鄰的塊,B、D與E的左上角樣本緊鄰的塊,C是與E的右上角樣本緊鄰的塊。

圖2 AVS-M預測塊鄰塊位置

圖3 H.264預測塊鄰塊位置

4 熵解碼


H.264中采用基于上下自適應的可變長(cháng)編碼(CAVLC),其原理: 4*4塊殘差數據經(jīng)整數變換、量化后非零系數主要集中在低頻部分,高頻系數大部分是零,且高頻位置上非零系數值大部分是+1和-1。AVS-M熵編碼也采用變長(cháng)編碼技術(shù),在A(yíng)VS-M熵編碼過(guò)程中,所有的語(yǔ)法元素和殘差數據都是以指數哥倫布碼的形式映射成二進(jìn)制比特流。

5 環(huán)路濾波


兩標準都是采用基于塊的殘差系數反變換、反量化,量化過(guò)程相對粗糙,反量化恢復的變換系數必定帶來(lái)誤差,另一方面,運動(dòng)補償塊可能來(lái)自不同幀位置的內插樣本塊,將導致邊界不連續,因此,需采用環(huán)路濾波來(lái)消除塊預測誤差造成的失真。H.264中根據相鄰塊模式、參考索引、運動(dòng)矢量和解碼塊確定濾波強度,濾波強度參數Bs值為0~4,對于Bs為1~3的采用4抽頭濾波器,對于Bs為4的采用6抽頭濾波器。H.264中濾波器能適應片級、邊界級和樣點(diǎn)級的需要。而在A(yíng)VS-M中根據當前宏塊是幀內(幀間)編碼宏塊來(lái)選擇幀內(幀間)濾波器,當滿(mǎn)足濾波條件后,采用4抽頭濾波器對邊界先垂直后水平濾波。AVS-M濾波器相對H.264而言,像素少,強度弱,但在消除方塊效應的同時(shí)能大大地減少濾波時(shí)間。


應用前景


直播衛星電視和高清電視是其中進(jìn)展最快的項目。與整機廠(chǎng)商互動(dòng),AVS標準組可從實(shí)際應用中得到反饋,對標準、實(shí)現算法、軟件、IP內核、專(zhuān)用芯片進(jìn)行及時(shí)的修改和改進(jìn),從而真正適應產(chǎn)業(yè)的需求。


上廣電主持的衛星電視實(shí)驗系統項目中的AVS編碼器則采用了“轉碼器+DSP”的實(shí)現方案。該系統高度兼容MPEG-2,這是由于MPEG-2的節目較多,所以AVS與它有一個(gè)融合-取代的過(guò)程。如加密、用戶(hù)管理、收費系統、編輯系統等其他配套系統不變。

總結


由上分析可知,兩種視頻解碼器結構有很多共同之處。目前,關(guān)于H.264視頻解碼器的優(yōu)化、硬件移植的方法及其應用很多,這些也可被AVS-M采納。本文根據優(yōu)化H.264的相關(guān)文獻中的一些方法對AVS-M作過(guò)軟件上的優(yōu)化。算法上的優(yōu)化主要包括插值、環(huán)路濾波和熵解碼的優(yōu)化。插值時(shí)可以將像素分為內部像素和邊界像素,避免重復的判斷。環(huán)路濾波時(shí)每個(gè)4*4塊中的每個(gè)點(diǎn)有相同的邊界門(mén)限,其相應的濾波操作也可以4次完成。熵解碼時(shí),可通過(guò)重新建表減少轉化程序。代碼上的優(yōu)化主要包括程序結構優(yōu)化、循環(huán)展開(kāi)、數據類(lèi)型選擇和數據的移動(dòng)等,例如,Decode_one_macroblock函數中,可根據宏塊類(lèi)型采用不同的函數來(lái)解碼,對臨時(shí)的緩存區可簡(jiǎn)化。此外,對插值運算(可轉化為矩陣運算)、反量化和反變換等涉及到矩陣運算的函數都可使用MMX/SSE指令集優(yōu)化。


H.264是國際通用標準,而AVS-M是我國自主制定的標準,因而,兩標準兼容的視頻解碼器的出現是種必然。本課題接下來(lái)的工作即是在對已有結構對比分析的基礎上結合兩套代碼,將兩解碼器結構相同部分進(jìn)行復用,不同部分通過(guò)開(kāi)關(guān)進(jìn)行選擇,實(shí)現對兩種不同格式的碼流進(jìn)行識別并實(shí)時(shí)解碼



評論


相關(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>