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

AVS視頻解碼器的PC實(shí)現(xiàn)

2013-09-17 10:25:12關(guān)艷華
電視技術(shù) 2013年3期

關(guān)艷華,張 剛

(太原理工大學(xué)信息工程學(xué)院,山西太原 030024)

AVS視頻解碼器的PC實(shí)現(xiàn)

關(guān)艷華,張 剛

(太原理工大學(xué)信息工程學(xué)院,山西太原 030024)

介紹了AVS的解碼原理,分析了AVS開源代碼RM52J_r1的不足之處。針對該開源代碼解碼效率相對低的問題,根據(jù)該開源代碼設(shè)計(jì)了新的AVS解碼器。實(shí)驗(yàn)結(jié)果表明,在保證解碼質(zhì)量的前提下,解碼速度有了很大的提高,基本上達(dá)到了實(shí)時(shí)解碼的要求。

AVS;解碼器;實(shí)時(shí)解碼

AVS是我國擁有自主知識(shí)產(chǎn)權(quán)的視頻編解碼標(biāo)準(zhǔn)。AVS視頻編解碼性能比MPEG-2高2~3倍[1],與H.264相當(dāng),但實(shí)現(xiàn)復(fù)雜度低于H.264。RM52J_r1是AVS標(biāo)準(zhǔn)的參考軟件,實(shí)現(xiàn)了AVS標(biāo)準(zhǔn)中的規(guī)定以及擴(kuò)展的功能,利于學(xué)習(xí),然而其解碼速度卻相對低下,故本文針對該參考軟件設(shè)計(jì)了新的AVS解碼器。

1 AVS視頻解碼的原理

AVS的解碼流程如圖1所示。

圖1 AVS解碼流程

解碼過程為:壓縮編碼后的比特流輸入到解碼器的輸入端,解碼器對該比特流進(jìn)行熵解碼和反掃描得到一系列量化系數(shù),接著對這些量化系數(shù)進(jìn)行反量化和反變化得到殘差系數(shù),通過幀內(nèi)預(yù)測或幀間預(yù)測得到預(yù)測值,將殘差系數(shù)與預(yù)測值相加得到重構(gòu)值,最后再對重構(gòu)值進(jìn)行環(huán)路濾波。

2 AVS新解碼器的設(shè)計(jì)

官方發(fā)布的解碼軟件RM52J_r1雖然實(shí)現(xiàn)了AVS標(biāo)準(zhǔn)中的規(guī)定,也在算法上進(jìn)行了一些改進(jìn),但是代碼的執(zhí)行效率依然很低。分析其原因是[2]:代碼的結(jié)構(gòu)較為復(fù)雜,使用了大量的條件判斷和跳轉(zhuǎn);使用了大量的多重循環(huán);函數(shù)之間多級調(diào)用;定義了過多的變量;重復(fù)地使用動(dòng)態(tài)內(nèi)存分配,大大的消耗了CPU資源,造成內(nèi)存效率低下。故本文以RM52J_r1為參考,重新設(shè)計(jì)了新的AVS解碼器。

1)新解碼器的流程設(shè)計(jì)

新解碼器的設(shè)計(jì)流程如圖2所示。首先對解碼器進(jìn)行初始化,接著查找起始碼,根據(jù)起始碼值的不同進(jìn)入相應(yīng)的函數(shù)。當(dāng)解析出I圖像頭或PB圖像頭后,就根據(jù)圖像頭信息進(jìn)行相應(yīng)的I條帶解碼,P條帶解碼或B條帶解碼。

2)各模塊算法的設(shè)計(jì)及優(yōu)化

AVS視頻編解碼標(biāo)準(zhǔn)采用基于塊的混合編碼框架,其核心技術(shù)包括[3]:熵解碼、反量化反變換、幀內(nèi)預(yù)測、幀間預(yù)測、環(huán)路濾波。

圖2 解碼器流程

(1)熵解碼

熵解碼[4-5]的過程為:首先判斷當(dāng)前8×8塊是否存在編碼數(shù)據(jù),若存在則初始化映射表和跳轉(zhuǎn)門限,否則退出。接著解析 trans_coefficient,若 trans_coefficient<59,可通過查找表CurrentVLCTable得到量化系數(shù)Level和游程Run;若trans_coefficient≥59,需先解析出 escape_level_diff,通過escape_level_diff計(jì)算出 Level和 Run;若 trans_coefficient=EOB,該塊的熵解碼結(jié)束。最后根據(jù)absLevel值更新下一個(gè)碼表的序號。

從上述熵解碼的過程可以看出,當(dāng)trans_coefficient<59時(shí),只用到CurrentVLCTable中的Level和Run兩個(gè)元素,沒用到escape_level_diff元素;當(dāng)trans_coefficient≥59時(shí),只用到元素escape_level_diff,沒用Level和Run。而大部分的熵解碼都是trans_coefficient<59的情況,故CurrentVLCTable中的escape_level_diff元素在大多數(shù)的情況下就顯得很多余。因而新解碼器在碼表設(shè)計(jì)時(shí)重新定義了兩個(gè)新的結(jié)構(gòu)體,其中一個(gè)只包含Level和Run,用于解碼trans_coefficient<59的情況,另一個(gè)只包含escape_level_diff,用于解碼trans_coefficient≥59的情況。

在根據(jù)absLevel值更新下一個(gè)碼表的序號時(shí),RM52J_r1采用一系列的判斷語句來實(shí)現(xiàn),影響了程序的速度。故新解碼器采用查表的方法來代替參考軟件中的條件判斷部分。具體的碼表切換規(guī)則如表1~表3所示。

表1 熵解碼幀內(nèi)亮度塊碼表切換規(guī)則

表2 熵解碼幀間亮度塊碼表切換規(guī)則

表3 熵解碼色度塊碼表切換規(guī)則

(2)反量化反變換

AVS采用的是二維8×8整數(shù)反量化與反變換,又可把二維整數(shù)反變換分解為水平和垂直方向上的一維整數(shù)反變換。本設(shè)計(jì)的實(shí)現(xiàn)過程與參考軟件基本一致。但在進(jìn)行反變換之前增加了對全零塊的判斷。若當(dāng)前8×8子宏塊為全零塊,由于反變換之后依然為全零塊,則不對其進(jìn)行反變換。

(3)幀內(nèi)預(yù)測

幀內(nèi)預(yù)測分為3個(gè)部分:宏塊中每個(gè)8×8子宏塊預(yù)測模式的確定,參考樣本值的獲得,預(yù)測值的計(jì)算。

該模塊的流程設(shè)計(jì)與RM52J_r1有所不同。在RM52J_r1中,先得到參考像素值并保存,之后再確定預(yù)測模式,接著計(jì)算預(yù)測值。本文在設(shè)計(jì)該模塊時(shí),首先確定每個(gè)8×8子宏塊的預(yù)測模式,接著根據(jù)該模式進(jìn)行相應(yīng)像素值的讀取,最后計(jì)算預(yù)測值,這樣就避免許多不必要的參考像素值的讀取。

(4)幀間預(yù)測

P幀或B幀最多可有2個(gè)參考幀。P幀可參考前向最近解碼的I幀或P幀,B幀可參考一前一后最近解碼的I幀或P幀。P/B幀宏塊的解碼與I幀大致類似,也是根據(jù)宏塊的類型進(jìn)行相應(yīng)的解碼。首先獲取相應(yīng)8×8子宏塊的參考索引,然后從碼流中獲得運(yùn)動(dòng)矢量殘差,根據(jù)相鄰塊的運(yùn)動(dòng)矢量得出當(dāng)前塊的預(yù)測運(yùn)動(dòng)矢量,運(yùn)動(dòng)矢量殘差與預(yù)測運(yùn)動(dòng)矢量重構(gòu)得到當(dāng)前塊的運(yùn)動(dòng)矢量。根據(jù)運(yùn)動(dòng)矢量和參考索引得到相應(yīng)的參考樣本,從而得到預(yù)測值。若該運(yùn)動(dòng)矢量指向的參考樣本不是整像素,則應(yīng)通過1/2或1/4插值來得到預(yù)測值。

幀間預(yù)測模塊在設(shè)計(jì)時(shí)采取了一些與RM52J_r1不同的設(shè)計(jì)思路。首先,在RM52J_r1中,每解一幀圖像就調(diào)用calloc函數(shù)進(jìn)行一次動(dòng)態(tài)內(nèi)存的分配,之后解碼完一幀圖像后又釋放一次,造成了內(nèi)存效率的低下,故新解碼器把參考幀的動(dòng)態(tài)內(nèi)存分配放到了解碼整個(gè)視頻序列之前,解碼完整個(gè)視頻序列后再釋放該內(nèi)存數(shù)據(jù)段。其次,在每一幀解碼的過程中,圖像的殘差數(shù)據(jù)、預(yù)測值、重構(gòu)值都采用一維數(shù)組來存儲(chǔ),降低了數(shù)組的維數(shù)。再次,由于P幀或B幀最多可有2個(gè)參考幀,故分配了3個(gè)幀緩沖來存儲(chǔ)當(dāng)前解碼幀信息以及2個(gè)參考幀信息,并對幀緩沖空間進(jìn)行了邊界擴(kuò)展,這樣有利于后續(xù)插值的優(yōu)化。

在解碼的過程中運(yùn)動(dòng)矢量可能會(huì)指向參考圖像外的樣本,因此在插值時(shí)需判斷參考像素點(diǎn)是否超出了參考圖像邊界,參考軟件中是通過max和min函數(shù)來實(shí)現(xiàn)的,對于每一個(gè)8×8子宏塊至少需判斷64次參考像素點(diǎn)的位置,大大降低了程序的執(zhí)行效率。故新解碼器對幀緩沖空間進(jìn)行了邊界擴(kuò)展,超出圖像邊界的像素點(diǎn)用最近圖像邊界的像素值來代替,這樣在插值時(shí)就不需要判斷參考像素點(diǎn)是否超出參考圖像邊界。

(5)環(huán)路濾波

AVS有3種濾波模式:強(qiáng)濾波(BS=2),標(biāo)準(zhǔn)濾波(BS=1),不濾波(BS=0)。本文的設(shè)計(jì)思想是:在解碼完一幀圖像后,按光柵掃描方式循環(huán)對一幀內(nèi)的所有宏塊進(jìn)行濾波。濾波過程為先求每一8×8子宏塊的濾波強(qiáng)度BS,然后再對亮度和色度邊界進(jìn)行濾波。若當(dāng)前解碼圖像為I幀,可直接判定BS=2,省去了計(jì)算濾波強(qiáng)度的函數(shù)。對于P,B幀來說,需計(jì)算濾波強(qiáng)度,而對于16×16和16×8的宏塊模式,不需要對宏塊內(nèi)的垂直邊界濾波,對于16×16和8×16的宏塊模式,不需要對宏塊內(nèi)的水平邊界濾波,滿足這些條件時(shí)就不需要計(jì)算相應(yīng)邊界的濾波強(qiáng)度,同時(shí)也不需要判斷是否應(yīng)對相應(yīng)的色度塊進(jìn)行濾波。同時(shí),把亮度濾波函數(shù)和色度濾波函數(shù)分開來寫,因?yàn)樯葔K比亮度塊需濾波的像素點(diǎn)要少。經(jīng)過這樣優(yōu)化后環(huán)路濾波模塊就省去了大量的計(jì)算,提高了解碼的速度。

3 實(shí)驗(yàn)結(jié)果

測試所用的PC機(jī)操作系統(tǒng)為Windows7,CPU為Pentium雙核處理器,主頻為1.8 GHz,在Visual Studio 2008環(huán)境下進(jìn)行編譯調(diào)試。分別測試了幀數(shù)為300幀的QCIF(176×144),CIF(352×288)和D1(720×576)格式的AVS測試序列,所有測試序列的幀順序都為IBBPBBP,并與參考解碼器進(jìn)行了對比。幀率的測試結(jié)果如表4所示。PSNR的測試結(jié)果如表5所示。由表4和表5可得,新解碼器與RM52J_r1的解碼信噪比一致,并且解碼速度大大提高。QCIF,CIF和D1三種視頻格式的解碼速度分別是參考軟件的4.71倍、4.52倍和4.25倍。

表4 新解碼器與參考解碼器幀率測試結(jié)果對比

表5 新解碼器與參考解碼器PSNR測試結(jié)果對比 dB

4 小結(jié)

本文在學(xué)習(xí)了參考解碼軟件RM52J_r1的基礎(chǔ)上,根據(jù)參考軟件設(shè)計(jì)并實(shí)現(xiàn)了新的AVS解碼器,解碼速度較之參考軟件有了很大的提高,并且保持了原有圖像的質(zhì)量。接下來的工作可進(jìn)一步對新解碼器進(jìn)行結(jié)構(gòu)優(yōu)化以及采用多媒體指令集對其中運(yùn)算量大的程序進(jìn)行優(yōu)化。

:

[1]黃鐵軍,高文.AVS標(biāo)準(zhǔn)制定背景與知識(shí)產(chǎn)權(quán)狀況[J].電視技術(shù),2005,29(7):4-7.

[2]弓曉霞,劉興旺.AVS全I(xiàn)幀實(shí)時(shí)解碼器的PC實(shí)現(xiàn)[EB/OL].[2009-11-05].http://www.paper.edu.cn/index.php/default/releasepaper/content/200911-162.

[3]李艷,劉秀蘭.AVS軟件解碼器瓶頸分析與優(yōu)化[J].電子測量技術(shù),2010,33(4):128-130.

[4]GB/T20090.2—2006,信息技術(shù)先進(jìn)音視頻編碼 第2部分:視頻[S].2006.

[5]陳光法,姚立敏,虞露.AVS熵解碼與DSP實(shí)現(xiàn)[J].電視技術(shù),2004,28(10):43-46.

Implementation of AVS Video Decoder on PC Platform

GUAN Yanhua,ZHANG Gang

(College of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China)

The key technology of AVS video decoder and decoding principle are introduced in this paper.The decoding efficiency of AVS Video open source code RM52J_r1 is relatively low,so a new AVS decoder is designed according to the source code.The result of experiment shows that the efficiency of the new decoder is significantly improved on the basis of good decoding quality.The new AVS decoder can meet the requirement of real-time decode.

AVS;decoder;real-time decoding

TN919.8

A

【本文獻(xiàn)信息】關(guān)艷華,張剛.AVS視頻解碼器的PC實(shí)現(xiàn)[J].電視技術(shù),2013,37(3).

國家自然科學(xué)基金項(xiàng)目(60772101)

關(guān)艷華(1988— ),女,碩士生,主研視頻編解碼;

張 剛(1953— ),博士生導(dǎo)師,主研音視頻編解碼和計(jì)算機(jī)通信等。

責(zé)任編輯:魏雨博

2012-06-18

主站蜘蛛池模板: 欧美视频在线播放观看免费福利资源| 亚洲日韩Av中文字幕无码| 无码粉嫩虎白一线天在线观看| 日韩成人免费网站| 中文字幕一区二区人妻电影| 香蕉视频在线观看www| 情侣午夜国产在线一区无码| 日韩性网站| 日韩精品欧美国产在线| 99一级毛片| 在线免费a视频| 天天做天天爱夜夜爽毛片毛片| 欧美性爱精品一区二区三区| 亚洲天堂成人在线观看| 国产网站一区二区三区| 久久久久久久久亚洲精品| 看你懂的巨臀中文字幕一区二区| 四虎亚洲精品| 国产jizz| 亚洲av无码专区久久蜜芽| 国产成人调教在线视频| 亚洲精品无码人妻无码| 久久亚洲美女精品国产精品| 亚洲系列中文字幕一区二区| 国外欧美一区另类中文字幕| 91精品网站| 成年人国产视频| 在线免费观看a视频| 亚洲视频二| 亚洲免费毛片| 欧美在线三级| 99国产精品免费观看视频| 波多野结衣二区| 久久精品电影| 亚洲精品无码抽插日韩| 国产在线专区| 久久夜夜视频| 成人a免费α片在线视频网站| 日韩毛片基地| 亚洲成人网在线观看| 毛片手机在线看| 一区二区午夜| 国产在线精品人成导航| 伊人五月丁香综合AⅤ| av午夜福利一片免费看| 毛片一级在线| 国产理论最新国产精品视频| 亚洲日韩国产精品综合在线观看| 无遮挡一级毛片呦女视频| 国产在线视频导航| 无码专区第一页| 丁香婷婷综合激情| 亚洲天堂精品视频| 久久这里只有精品2| 亚洲中文在线看视频一区| 色悠久久综合| 日韩人妻无码制服丝袜视频| 国产成人a在线观看视频| 特级欧美视频aaaaaa| 成人中文在线| 高清视频一区| a在线观看免费| av一区二区无码在线| 国产精品一区二区久久精品无码| 亚洲国产清纯| 久久国产黑丝袜视频| 一级做a爰片久久毛片毛片| 国产高清又黄又嫩的免费视频网站| 一级一毛片a级毛片| 一区二区午夜| 国产成人AV综合久久| 2021国产精品自产拍在线| 国产导航在线| 久久久久亚洲AV成人人电影软件| 日本日韩欧美| 又爽又大又黄a级毛片在线视频| 国内精品视频| 在线观看91精品国产剧情免费| 亚洲欧美不卡中文字幕| 青青操视频在线| 精品视频一区二区三区在线播| 精品人妻系列无码专区久久|