微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > H.264/AVC解码器运动矢量预测模块设计与应用

H.264/AVC解码器运动矢量预测模块设计与应用

时间:12-09 来源:互联网 点击:

mbAddrN相应宏块分割的参考索引值:

MVLXN=MvLX[mbPartIdxN][subMbPartIdxN]

refIdxLXN=RefIdxLX[mbPartIdxN]

(3)在MBAFF模式时,需要对MVLXN和refIdxLXN再做1次计算:

①如果当前宏块为场宏块,而mbAddrN为帧宏块,则:

MVLXN[1]=MVLXN[1]/2

refIdxLXN=refIdxLXN×2

②如果当前宏块为帧宏块,而mbAddrN为场宏块,则:

MVLXN[1]=MVLXN[1]×2

refIdxLXN=refIdxLXN/2

1.3 空间相邻参考宏块分割的选择

在非MBAFF模式时,当前宏块的空间相邻宏块地址A、B、C、D的位置如图3所示。空间参考宏块mbAddrN可以是MbAddrA、MbAddrB、MbAddrC、MbAddrD或者CurrMbAddr。

在MBAFF模式时,当前宏块的空间相邻宏块地址A、B、C、D的位置如图4所示。此时会根据当前宏块是帧宏块或者场宏块currMbFrameFlag以及当前宏块是顶宏块或者底宏块mbIsTopMbFlag来计算1个中间值mbAddrX,并根据mbAddrX的帧场信息mbAddrXFrameFlag来得到最终的参考宏块MbAddrN。参考宏块mbAddrN可以是MbAddrA、MbAddrA+1、MbAddrB、MbAddrB+1、MbAddrC、MbAddrC+1、MbAddrD、MbAddrD+1、CurrMbAddr或者CurrMbAddr-1。

1.4 运动矢量预测所需数据的组织

运动矢量的预测需要当前分割的左边、上边、左上和右上相应分割的MVLXN和refIdxLXN信息来计算得到当前分割的MVLX。1个宏块需要存储16个block的运动矢量MVLX和参考索引refIdxLX,当采用其他分割类型时,每个分割内所有block的运动矢量和参考索引为相同值。

帧间预测按照block存储和使用数据。当前宏块分割的运动矢量和参考索引需要按照block来存储以用于后面宏块的预测。每个分割内所有block的运动矢量和参考索引为相同值,所以参考分割的MVLXN和refIdxLXN的引用也可以按照block来进行。

因为同一分割内所有block的运动矢量和参考索引为相同值,因此,参考分割的MVLXN和refIdx-LXN也就是参考宏块相应的block的MVLX和refIdx-LX。图5(a)~(d)分别表明了当前宏块采用不同划分时A、B、C、D 4个参考块的取值情况。在预测时一般选取A、B、C块对当前的运动矢量进行预测,当C不可用时则选用A、B、D进行预测。在MBAFF模式时,由于参考宏块的位置不同会作相应变化。H.264为了提高码率控制的能力,量化步长的变化的幅度控制在12.5%左右,而不是以不变的增幅变化。变换系数幅度的归一化被放在反量化过程中处理以减少计算的复杂性。为了强调彩色的逼真性,对色度系数采用了较小量化步长。2 直接预测模式和硬件设计

H.264/AVC对运动矢量的重建引入了直接预测模式,在该模式下运动矢量残差没有被传送,只有宏块的预测模式会被传送。解码器根据预测模式以及其余宏块的信息对当前的运动矢量进行恢复。运动矢量的重建流程如图6所示。在直接预测模式下,H.264分别采用3种不同的方式对运动矢量进行重建。

在先前的H.26x系列和MPEG-x系列标准中,都是采用的帧间预测的方式。在H.264中,当编码Intra图像时可用帧内预测。对于每个4×4块(除了边缘块特别处置以外),每个像素都可用17个最接近的先前已编码的像素的不同加权和(有的权值可为0)来预测,即此像素所在块的左上角的17个像素。显然,这种帧内预测不是在时间上,而是在空间域上进行的预测编码算法,可以除去相邻块之间的空间冗余度,取得更为有效的压缩。

(1)复制模式。在P类型的宏块中,利用空间上相邻分割的运动矢量对当前的运动矢量进行预测。

(2)空间模式。在B类型的宏块中,利用空间上相邻分割的运动矢量对当前的运动矢量进行预测。

(3)时间模式。在B类型的宏块中,通过将时间上相邻而且在空间上位置相同的8×8分割的运动矢量进行重量化来预测出当前的运动矢量。

其中复制模式和空间模式在算法上具有一定的相似性,差别在于复制模式只需要重建1个方向的运动矢量,而空间模式需要重建双向的运动矢量。

2.1 空间模式及复制模式重建算法和硬件设计

在这2种模式下:(1)宏块只能划分成1个16×16分割或者4个8×8分割。在划分成4个8×8时,每1个8×8分割可以独立地被设置成直接模式或者ReadMV模式;(2)计算当前的运动矢量需要借助在空间上相邻分割的运动矢量来对当前分割的运动矢量进行重建。此时运动矢量的预测算法与前面介绍的预测运动矢量的算法基本相同,所不同的是此时宏块中的任意1个分割预测时所使用的相邻块信息均由图7所示的A、B、C、D 4个块预测。

Direct 8×8用A、B、C、D 4个块进行预测。预测的基本算法流程如图8所示。由图可见,在预测时首先检测参考块C是否可用,如不可用,则C块的参数用D块的参数代替;而后利用A、B

、C块的参考索引RefIdxA[f/b]、Re

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top