AVS-M与H.264(Baseline)视频解码器结构的分析
H.264是JVT组织起草的一个覆盖多种应用和面向多种传输环境的国际标准,它规定了三种档次,基本档次(Baseline profile)、主要档次(Main profile)和扩展档次(Extended profile),其中基本档次利用I片和P片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC),主要用于会议电视、可视电话和无线通信等实时视频通信。
AVS(Audio video coding)标准是由我国自主制定,拥有自主知识产权的音视频编解码技术标准。AVS-M(Mobile video)是AVS系列标准中的第七部分--移动视频,应用于数字存储媒体、宽带视频业务、远程监控和可视电话等。
AVS-M和H.264(Baseline)视频解码器在结构上十分相似,但又各有其核心思想,本文基于JM10.2和WM3.3源代码对两解码器的关键技术作了详细分析。程序中并未单独有H.264(Baseline)的代码,是笔者从JM10.2中抽取出来分析的,下文中H.264均表示从基本档次上考虑。
两种标准的解码器结构
AVS-M和H.264视频解码器都只需考虑I帧和P帧(为了两标准视频解码器更好地比较,本文对H.264只考虑帧图像,不考虑场图像)的解码,总体思想是从比特流中解出头信息,产生预测块,熵解码得到的量化系数经反量化、反变换得到残差块,预测块和残差块相加后,经过滤波器即可得到重建的图像,其结构框图如图1所示。
图1 解码器总体框架
在实际应用当中,这两种标准设计出来的解码器应用领域有所不同,现就以下几个方面分析两种标准的差异。
1 比特流信息
①NALU(Network Abstract Layer Unit):两标准中的比特流都是以NAL为单位,每个NAL单元包含一个RBSP,NALU的头信息定义了RBSP所属类型。类型一般包括序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)、条带(Slice)等,其中,SPS和PPS属于参数集,两标准采用参数集机制是为了将一些重要的序列、图像参数(解码图像尺寸、片组数、参考帧数、量化和滤波参数标记等)与其他参数分离,通过解码器先解码出来。此外,为了增强图像的清晰度,AVS-M增加了图像头(Picture head)信息。读取NALU过程中,每个NALU前有一个起始码0x000001,为防止内部0x000001序列竞争,H.264编码器在最后一字节前插入一个新的字节--0x03,所以解码器检测到该序列时,需将0x03删掉,而AVS-M只需识别出起始码0x000001。
②读取宏块类型(mb type)和宏块编码模板(cbp):编解码图像以宏块划分,一个宏块由一个16*16亮度块和相应的一个8*8cb和一个8*8cr色度块组成。
(a) 两标准的帧内、帧间预测时宏块的划分是有区别的。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时宏块的划分和H.264中的划分一致。
(b) 两标准的宏块cbp值计算也不相同。H.264中,Intra_16*16宏块的亮度(色度)cbp直接通过读mb type得到;非Intra_16*16宏块的亮度cbp=coded_block_pattern%16,色度cbp=coded_block_pattern/16 。其中,亮度cbp最低4位有效,每位决定对应宏块的残差系数是否为0;色度cbp为0时,对应残差系数为0,cbp为1时,DC残差系数不为0,AC系数为0,cbp为2时,DC、AC残差系数都不为0。AVS-M中,当宏块类型不是P_skip时,直接从码流中得到cbp的索引值,并以此索引值查表得到codenum值,再以codenum查表分别得到帧内/帧间cbp。此cbp为6位,每位代表宏块按8*8划分时是否包含非零系数,当变换系数不为0时,需进一步读cbp_4*4中每位值来判断一个8*8块中4个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亮度块的模式可以通过邻块的帧内模式来预测,预测方法不同。H.264中,当前亮度块的最可能模式由左块(A)、上块(B)中较小的决定,如果相邻块不存在,则A、B模块的模式置为DC。而预测模式的选定要看码流中标志信息prev_intra4*4_pred_mode,该标志为1时,则用最可能模式,该标志不为0时,还需看参数rem_intra4*4_pred_mode,如果它小于最可能模式,则预测模式即为rem_intra4*4_pred_mode,否则为rem_intra4*4_pred_mode+1。AVS-M中,左块(A)、上块(B)的预测模式(若不存在,置为-1)形成表格后,通过查表可获得当前块的最可能模式。对I_Direct,其预测模式即为最可能模式;对I_4*4,需看标志信息pred_mode_flag,该标志为0时,预测模式即为最可能模式;该标志为1时,当码流中读到的intra_luma_pred_mode小于最可能模式,则预测模式为最可能模式,否则,预测模式为intra_luma_pred_mode+1。另外, H.264中的Intra_16*16和色度预测模式从码流中读取,AVS-M的色度预测模式也从码流中读取。
3 帧间预测
两标准下亮度块的运动矢量等于预测运动矢量(MVPred)加上比特流中读取到的运动矢量差(MVD)。由于亮度MV精度为1/4像素,而色度精度为1/8像素,因此,色度块的运动矢量等于亮度块的两倍。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的右上角样本紧邻的块。
- DVI与HDMI:视频传输的数字化革命(08-15)
- 大规模IPTV点播系统解决方案(08-18)
- 数字音视频编解码技术标准AVS(08-19)
- 嵌入式设备的静止图像编码(08-18)
- 基于Blackfin533的H.264编码(08-18)
- 全球手机电视三大技术标准对比分析(08-19)
- 妤傛ḿ楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閸忋劍鏌熸担宥咁劅娑旂姴鐨犳0鎴滅瑩娑撴氨鐓$拠鍡礉閹绘劕宕岄惍鏂垮絺瀹搞儰缍旈懗钘夊閿涘苯濮幃銊ユ彥闁喐鍨氶梹澶歌礋娴兼ḿ顫呴惃鍕殸妫版垵浼愮粙瀣瑎...
- 娑擃厾楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
缁箖鈧拷30婢舵岸妫亸鍕暥閸╃顔勭拠鍓р柤閿涘奔绗撶€硅埖宸跨拠鎾呯礉閸斺晛顒熼崨妯烘彥闁喕鎻崚棰佺娑擃亜鎮庨弽鐓庣殸妫版垵浼愮粙瀣瑎閻ㄥ嫯顩﹀Ч锟�...
- Agilent ADS 閺佹瑥顒熼崺纭咁唲鐠囧墽鈻兼總妤勵棅
娑撴挸顔嶉幒鍫n嚦閿涘苯鍙忛棃銏n唹鐟欘枃DS閸氬嫮顫掗崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱遍崝鈺傚亶閻€劍娓堕惌顓犳畱閺冨爼妫跨€涳缚绱癆DS...
- HFSS鐎涳缚绡勯崺纭咁唲鐠囧墽鈻兼總妤勵棅
鐠у嫭绻佹稉鎾愁啀閹哄牐顕抽敍灞藉弿闂堛垼顔夐幒鍦欶SS閻ㄥ嫬濮涢懗钘夋嫲鎼存梻鏁ら敍灞藉簻閸斺晜鍋嶉崗銊╂桨缁崵绮洪崷鏉款劅娑旂姵甯夐幓顡嶧SS...
- CST瀵邦喗灏濆銉ょ稊鐎广倕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閺夊孩妲戝ú瀣╁瘜鐠佽绱濋崗銊╂桨鐠佸弶宸緾ST閸氬嫰銆嶉崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱濋崝鈺傚亶韫囶偊鈧喕鍤滅€涳附甯夐幓顡塖T鐠佹崘顓告惔鏃傛暏...
- 鐏忓嫰顣堕崺铏诡攨閸╃顔勭拠鍓р柤
娑撳洣绗€妤傛ɑ銈奸獮鍐叉勾鐠у嚖绱濇潻娆庣昂鐠囧墽鈻兼稉杞扮稑閸︺劌鐨犳0鎴炲Η閺堫垶顣崺鐔枫亣鐏炴洘瀚甸懘姘剧礉閹垫挷绗呴崸姘杽閻ㄥ嫪绗撴稉姘唨绾偓...
- 瀵邦喗灏濈亸鍕暥濞村鍣洪幙宥勭稊閸╃顔勭拠鍓р柤閸氬牓娉�
鐠愵厺鎷遍崥鍫ユ肠閺囨潙鐤勯幆鐙呯礉缂冩垵鍨庨妴渚€顣剁拫鍙樺崕閵嗕胶銇氬▔銏犳珤閵嗕椒淇婇崣閿嬬爱閿涘本鍨滅憰浣圭壉閺嶉绨块柅锟�...