CN100586188C - 一种基于avs的帧内预测计算的硬件实现方法 - Google Patents
一种基于avs的帧内预测计算的硬件实现方法 Download PDFInfo
- Publication number
- CN100586188C CN100586188C CN 200710030698 CN200710030698A CN100586188C CN 100586188 C CN100586188 C CN 100586188C CN 200710030698 CN200710030698 CN 200710030698 CN 200710030698 A CN200710030698 A CN 200710030698A CN 100586188 C CN100586188 C CN 100586188C
- Authority
- CN
- China
- Prior art keywords
- addr3221
- branch
- infra
- prediction
- mux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于AVS的帧内预测计算的硬件实现方法,采用8条分支并行执行的方式进行计算,构造了分支可重用单元和重用的加法运算单元ADDR3221,分支可重用单元在前端加上一组MUX进行预测模式的选择,在后端加一组MUX用于输出分支的选择,中间两个可重用的加法运算单元ADDR3221的结构为ADDR3221=((a+c)+(b+1)<<1)>>2,由3个加法器和2个移位器构成。本发明的优点在于速度快,面积小,功耗低,整个模块硬件实现的复杂度降低。
Description
技术领域
本发明为一种帧内预测计算的硬件实现方法,适用于AVS解码器的帧内预测模块。支持AVS标准的高清晰的实时视频解码器芯片可用于数字电视、手机视讯会议以及手机彩信业务、视频PDA、PSP视频游戏机和MP4等。
背景技术
AVS(Audio Video coding Standard)标准是基于我国自主创新技术和国际公开技术所构建的视音频编解码压缩标准。AVS解码器的解码过程如下:码流进入解码器之后会进行码流分割,根据码流的语法和语义分割出相关的信息,然后进行熵解码、反量化和反DCT变换,从而得出所需要的残差矩阵ResidueMatrix,码流分割出的其他码流进行帧内预测或者帧间预测,通过参考帧预测出预测矩阵PredMatrix,然后把预测矩阵和残差矩阵相加,得到解码的矩阵DecodeMatrix,经过滤波之后得到最终的解码宏块和解码帧。AVS视频图像解码框图如图1所示。
AVS中的亮度和色度帧内预测均采用以8X8大小的块为单位进行预测,有5种亮度预测模式(DC、水平、垂直、左下和右下)和4种色度预测模式(DC、水平、垂直和平板)。通过当前8X8宏块左边和上边的相邻像素块进行预测,在编码时只对参考的宏块与当前宏块的残差进行编码,由于残差值远远少于宏块实际的像素值,所以大大降低了传输所需要的码字,实现了对图像的压缩。在解码端,当前宏块利用已经重建的左边和上边的相邻宏块和不同的预测模式来预测像素值矩阵(PredMatrix),然后加上解码出的残差矩阵(ResidueMatrix)重建出当前宏块的像素矩阵(RecMatrix)。AVS的帧内预测以8X8块为单位,通过上方的16个参考样本点和左边的16个参考样本点和不同的帧内预测模式来预测出当前8X8块的像素值,示意图如图2所示。
在进行帧内预测模块的硬件设计时,帧内预测的数据流主要分为三部分进行处理,即预测模式以及参考样本的获取、读取RAM的地址计算和帧内预测亮度块和色度块的计算。并且有一个帧内预测模块专有的存储RAM来提供参考的样本值。帧内预测模块的简要工作过程为:首先是一个预测计算的预处理,包括预测模式IntraPredMode的选择和参考样本c[i],r[i](0...16)的获取,通过码流分割后的信息和读取RAM中存储的参考样本计算出当前8X8宏块帧内预测的模式IntraPredMode和计算PredMatrix所需要的参考样本点c[i],r[i](0...16),然后根据帧内预测的模式IntraPredMode和参考样本点c[i],r[i](0...16)在计算模块PredIntraCal中计算出PredMatrix,最后预测像素矩阵PredMatrix跟IDCT/IQ模块送过来的残差矩阵ResidueMatrix相加得出最终的矩阵RecMatrix,并保存到RAM中以供其它帧参考。计算模块中PredMatrix的计算采用8条分支并行的计算方式,每个时钟周期计算宏块的一行像素值,在8个时钟周期内完成对整个8X8宏块的预测计算。
AVS视频压缩标准采用的是基于8X8块的帧内预测模式,一共有5种亮度块预测模式和4种色度块预测模式。在AVS视频压缩标准中,对亮度块的5种帧内预测模式和色度块的4种帧内预测模式的计算方法分别进行了详细的描述。由上述的标准对各种预测模式的描述可知,帧内预测计算主要由加法,移位和乘法运算组成。由于时钟频率和乘法运算特性的限制,加法和移位都可以在一个时钟周期完成,而乘法需要由二个时钟才能完成。因此在设计时把所有的乘法全部由移位来代替,减少了运算的时间和计算单元。对于一个8X8的块,有64个像素点需要预测,如果采用顺序计算的方法,显然很难满足译码速率的要求,因此采用8条分支并行执行的方式进行计算。由于均采用加法和移位来完成运算,所以一个8X8宏块计算完成需要8个时钟周期。
帧内预测计算各个模块及其各个分支的主要单元就是ADDR3221加法运算单元,ADDR3221(a,b,c)=(a+2b+c+2)>>2。在一些参考文献中,对于此类加法主要有以下二种设计方式:
ADDR3221(a,b,c)=((a+b)+(b+c)+2)>>2 (1)
ADDR3221(a,b,c)=((a+b<<1)+(c+2))>>2 (2)
上述二种方法都是采用加法和移位计算来进行ADDR3221的计算,第一种是通过分拆2b为b+b来代替乘法运算,第二种是用移位来代替2b的乘法运算。硬件结构图如图3所示。
通过上面的硬件结构图中的不同的Critical Path可以估算二种ADDR3221加法运算单元结构的延迟和面积。第一种的延迟为3个8位的加法器加上一个移位2的移位器,面积为4个8位加法器和一个移位2的移位器;第二种的延迟为一个移位1的移位器、2个8位加法器加上一个移位2的移位器,面积为3个加法器和2个移位器。
总的来说,第二种的性能优于第一种的性能,但是第二种的结构从硬件设计平衡性的角度来说仍然不是很好,第二条Path明显多出一个移位器,使得结构的四条Path平衡性不够。
目前的技术是对各种模式及其各个模式的分支分别进行计算,这样的实现办法的运算时间长,计算单元多,占用的面积大,造成成本的增加。
发明内容
本发明针对现有技术的不足,提供了基于AVS的帧内预测计算的硬件实现方法,用来实现计算8X8块的帧内预测样本矩阵。本发明方法主要包括两个优化的过程,构造分支重用单元和优化核心运算单元ADDR3221。
实现本发明的技术方案为:
一种基于AVS的帧内预测计算的硬件实现方法,采用8条分支并行执行的方式进行计算,构造分支可重用单元和加法运算单元ADDR3221,分支可重用单元在前端加上一组MUX进行预测模式的选择,在后端加一组MUX用于输出分支的选择,中间包括两个加法运算单元ADDR3221,其结构为ADDR3221=((a+c)+(b+1)<<1)>>2,由3个加法器和2个移位器构成,加法运算单元ADDR3221用于计算所有的亮度块和色度块各种模式及其各个模式的分支。根据帧内预测预测模式获取和参考样本获取模块得出的帧内预测亮度块和色度块预测模式以及水平方向和垂直方向参考样本点,通过该结构计算出8X8块的帧内预测样本矩阵。
进一步的,所述前端的MUX用于选择不同的预测模式的方法如下:把选择亮度块或者色度块预测的标志(predIntraStyle)跟预测模式标示(predIntraPredMode)拼接,用一个MUX来进行亮度/色度块的选择和预测模式的选择。
进一步的,在构造分支可重用单元的方法中,对亮度块的5种预测模式中的DC模式、左下角模式和右下角模式,通过重用加法计算单元ADDR3221来进行优化,水平模式和垂直模式直接赋值。
进一步的,优化亮度块预测中的DC模式时:(1)如果r[i],c[i](0..9)都可用,
predMatrix[x,y]=((ADDR3221(r[x],r[x+1],r[x+2])+(ADDR3221(c[x],c[x+1],c[x+2]))>>
1(x,y=0..7);
(2)如果r[i](0..9)可用,
predMatrix[x,y]=ADDR3221(r[x],r[x+1],r[x+2])x,y=0..7);
(3)如果c[i](0..9)可用,
predMatrix[x,y]=ADDR3221(c[x],c[x+1],c[x+2])(x,y=0..7);
(4)如果都不可用,
predMatrix[x,y]=128(x,y=0..7)。
进一步的,优化亮度块预测中的左下角模式时,当r[i],c[i](i=1..16)可用时,该模式才可以被采用,
predMatrix[x,y]=(ADDR3221(r[x+y+1],r[x+y+2],r[x+y+3])+ADDR(c[x+y+1],c[x+y+2],c[x+y+3]))>>1(x,y=0..7)。
进一步的,优化亮度块预测中的右下角模式时,
当r[i],c[i](i=0..16)可用时,该模式才可以被采用,
(1)如果x等于y,
predMatrix[x,y]=ADDR3221(c[1],r[0],r[1])(x,y=0..7);
(2)如果x大于y,
predMatrix[x,y]=ADDR3221(r[x-y+1],r[x-y],r[x-y-1])(x,y=0..7);
(3)如果y大于x,
predMatrix[x,y]=ADDR3221(c[y-x+1],c[y-x],c[y-x-1])(x,y=0..7)。
进一步的,在构造分支可重用单元的方法中,对色度块帧内预测中的平板(Plane)模式,不通过重用加法运算单元ADDR3221来进行计算,而进行单独的运算处理。
本发明的分支重用单元利用各种模式及其各个模式的分支的运算过程具有一定相似性的特性。除了加法之外,各个运算均包含类似于(a+2b+c+2)>>2的运算单元,也就是(a+b<<1+c+2)>>2,而对于一个确定的宏块,其预测模式以及选择的分支都是确定的。也就是说,虽然存在很多的预测模式和不同分支,但是对当前处理的宏块,只有一个确定的模式和分支。那么在硬件设计时就不需要设计出每个模式以及每条分支的运算单元以供不同的宏块通过预测模式来选择,而是用同一个运算单元来计算所有的模式及分支。
在计算单元的前端和后端分别加上用于预测模式和输出分支的MUX就构成了帧内预测的计算单元,如图4所示。具体的设计思路如下:在前端加上一组MUX进行预测模式的选择,在后端加一组MUX用于输出分支的选择。另外,因为帧内预测分为亮度块预测和色度块预测,需要在最开始的时候选择是进行亮度块的预测还是色度块的预测。为了减少MUX的级数,在设计中把选择亮度块或者色度块预测的标志(predIntraStyle)跟预测模式标示(predIntraPredMode)拼接,用一个MUX来进行亮度/色度块的选择和预测模式的选择,这样可以减少MUX的级数和使用Verilog编写代码时的分支条数。
需要注意的是在色度预测中,色度块帧内预测中的平板(Plane)模式不通过重用ADDR3221加法运算单元来进行计算,而进行单独的运算处理。
表1
结构 | ADDR3221 | ADDR | MUX | SHIFT |
AVS标准结构 | 9+4=13 | 3 | 3 | 3 |
优化后的结构 | 2 | 1 | 4 | 1 |
对按照标准的结构和经过优化的结构进行比较如表1所示,表中结构比较没有包括Plane模式的计算,并且优化后的MUX的结构比优化前的MUX结构复杂。经过优化之后的结构比AVS标准结构节约了4倍左右的面积。重用加法运算单元ADDR3221使得运算几乎在二个ADDR3221加法运算单元完成,同时由于运算单元活动性增加,功耗也主要集中在这二个ADDR3221单元。因此,本发明对重用的ADDR3221加法运算结构也进行了改进。本发明中ADDR3221加法运算单元的结构为ADDR3221=((a+c)+(b+1)<<1)>>2。这种结构延迟仅仅只有2个8位加法器延迟,面积为3个加法器加上2个移位器,改进后的加法运算单元ADDR3221的硬件结构图如下图5所示,与其他文献提出的ADDR3221单元的结构对比如表2。
表2
硬件结构 | Cell面积(um2) | Critical Path | 最大延迟(ns) |
第一种 | 2135.55 | Path1/Path2 | 2.14 |
第二种 | 1486.90 | Path2 | 1.68 |
优化结构 | 1373.82 | Path2 | 1.54 |
通过重用和优化加法运算单元ADDR3221构成的帧内预测计算单元在HJTC 0.18工艺库,使用Design Compiler下的逻辑综合结果如图6所示。
与现有技术相比,本发明的优点在于速度快,面积小,功耗低,整个模块硬件实现的复杂度降低。
附图说明
通过下面结合示例性地示出一例的表格和附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1为AVS解码器基本框图;
图2为宏块帧内预测示意图;
图3为典型的加法运算单元ADDR3221结构图;
图4为分支可重用单元的预测单元结构图;
图5为改进的加法运算单元ADDR3221结构图;
图6为改进的加法运算单元ADDR3221综合结果图;
图7为按照标准的亮度块DC模式帧内预测单元结构图;
图8为重用运算单元的亮度块DC模式帧内预测单元结构图;
图9为优化重用运算单元的亮度块DC模式帧内预测单元结构图。
具体实施方式
本发明提供一种帧内预测计算的硬件实现方法,用来实现计算8X8块的帧内预测样本矩阵。下面以亮度块预测中的DC模式为实施例来描述通过构造重用的加法运算单元ADDR3221(a,b,c)=((a+c)+(b+1)<<1)>>2来实现DC模式下不同分支的预测计算的过程。
在亮度块预测的DC模式中,前三条分支计算公式如下:
1>如果r[i],c[i](0..9)都可用。
PredMatrix[x,y]=((r[x]+2*r[x+1]+r[x+2]+2)>>2+(c[y]+2*c[y+1]+c[y+2]+2)>>2)>>1(x,y=0..7)
2>如果r[i](0..9)可用。
PredMatrix[x,y]=(r[x]+2*r[x+1]+r[x+2]+2)>>2
(x,y=0..7)
3>如果c[i](0..9)可用。
PredMatrix[x,y]=(c[y]+2*c[y+1]+c[y+2]+2)>>2(x,y=0..7)
在设计中,构造核心运算单元ADDR3221(a,b,c)=((a+c)+(b+1)<<1)>>2。那么上述三个计算公式变为:
1>如果r[i],c[i](0..9)都可用。
PredMatrix[x,y]=((ADDR3221(r[x],r[x+1],r[x+2])+(ADDR3221(c[x],c[x+1],c[x+2]))>>
1(x,y=0..7)
2>如果r[i](0..9)可用。
PredMatrix[x,y]=ADDR3221(r[x],r[x+1],r[x+2])(x,y=0..7)
3>如果c[i](0..9)可用。
PredMatrix[x,y]=ADDR3221(c[x],c[x+1],c[x+2])(x,y=0..7)
上述二组计算公式的硬件实现图示图下,其中第一组计算公式得实现如图7所示,第二组计算公式得硬件实现如图8所示。
通过图中的结构可以发现,在DC模式中,可以用二个ADDR3221计算单元通过重用来计算DC模式的4个分支。比直接按照标准的结构图节约了1倍的面积。这样在预测的时候,可以通过前端的MUX来选择好DC模式下所需要的参考样本,并输入到计算单元中,然后通过后端由不同分支控制的MUX来选择针对不同分支的结果。这样的计算结构极大的提高了资源的利用率,而在标准的结构下,对于每条分支的预测计算过程都至少有2个计算单元处于空闲的状态。
将其中的二个ADDR3221计算单元使用优化的ADDR3221加法运算单元,如图9所示,这样使得整个帧内预测模块的功耗都大幅下降。
Claims (3)
1、一种基于AVS的帧内预测计算的硬件实现方法,其特征在于:采用8条分支并行执行的方式进行计算,构造分支可重用单元和加法运算单元ADDR3221,分支可重用单元在前端加上一组MUX进行预测模式的选择,在后端加一组MUX用于输出分支的选择,中间包括两个加法运算单元ADDR3221,其结构为ADDR3221=((a+c)+(b+1)<<1)>>2,由3个加法器和2个移位器构成,加法运算单元ADDR3221用于计算所有的亮度块和色度块各种模式及其各个模式的分支。
2、根据权利要求1所述的硬件实现方法,其特征在于所述前端的MUX用于选择不同的预测模式的方法如下:把选择亮度块或者色度块预测的标志跟预测模式标示拼接,用一个MUX来进行亮度/色度块的选择和预测模式的选择。
3、根据权利要求1所述的硬件实现方法,其特征在于,在构造分支可重用单元的方法中,对色度块帧内预测中的平板模式,不通过重用加法运算单元ADDR3221来进行计算,而进行单独的运算处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710030698 CN100586188C (zh) | 2007-09-30 | 2007-09-30 | 一种基于avs的帧内预测计算的硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710030698 CN100586188C (zh) | 2007-09-30 | 2007-09-30 | 一种基于avs的帧内预测计算的硬件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101141646A CN101141646A (zh) | 2008-03-12 |
CN100586188C true CN100586188C (zh) | 2010-01-27 |
Family
ID=39193341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710030698 Expired - Fee Related CN100586188C (zh) | 2007-09-30 | 2007-09-30 | 一种基于avs的帧内预测计算的硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100586188C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854540B (zh) * | 2009-04-01 | 2014-07-02 | 辉达公司 | 用于应用h.264视频编码标准的帧内预测方法及装置 |
KR20130049526A (ko) * | 2011-11-04 | 2013-05-14 | 오수미 | 복원 블록 생성 방법 |
CN105828086B (zh) * | 2016-03-24 | 2018-09-14 | 福州瑞芯微电子股份有限公司 | 一种帧内预测装置 |
-
2007
- 2007-09-30 CN CN 200710030698 patent/CN100586188C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101141646A (zh) | 2008-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101908035B (zh) | 视频编解码方法、gpu及其与cpu的交互方法及*** | |
CN101252694B (zh) | 基于块的视频解码的帧存储压缩和地址映射*** | |
CN102055981B (zh) | 用于视频编码器的去块滤波器及其实现方法 | |
CN103369315B (zh) | 色度分量的帧内预测模式的编码、解码方法、设备及*** | |
CN101166277B (zh) | 在用于处理运动图像的设备中访问存储器的方法 | |
CN102625108B (zh) | 一种基于多核处理器实现的h.264解码方法 | |
CN101656885B (zh) | 多核处理器中并行解码的方法和装置 | |
CN102148990B (zh) | 一种运动矢量预测装置和方法 | |
CN100551072C (zh) | 一种编码中量化矩阵选择方法、装置及编解码方法及*** | |
CN100586188C (zh) | 一种基于avs的帧内预测计算的硬件实现方法 | |
CN101350928A (zh) | 一种运动估计方法及装置 | |
Kim et al. | Reconfigurable low energy multiplier for multimedia system design | |
CN101909212A (zh) | 可重构多媒体SoC的多标准宏块预测*** | |
Guo et al. | Accelerating transform algorithm implementation for efficient intra coding of 8K UHD videos | |
CN1703094A (zh) | 1/4像素插值应用于1/2像素插值结果的图象插值装置和方法 | |
KR101316503B1 (ko) | 듀얼 스테이지 인트라-예측 비디오 인코딩 시스템 및 방법 | |
CN105100799A (zh) | 一种减少hevc编码器中帧内编码时延的方法 | |
CN104038766A (zh) | 用于以图像帧为基础执行并行视频编码的装置及其方法 | |
Jiang et al. | Highly paralleled low-cost embedded HEVC video encoder on TI KeyStone multicore DSP | |
CN102143365B (zh) | 一种运动估计方法 | |
KR101138920B1 (ko) | 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법 | |
CN101304520A (zh) | 影像解码***及其运动补偿的自适性快取方法 | |
CN101605258B (zh) | 一种加速视频解码的方法 | |
Yan et al. | Parallel deblocking filter for H. 264/AVC implemented on Tile64 platform | |
CN101516030B (zh) | 具有多格式影像编解码功能的数据处理电路及处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100127 Termination date: 20130930 |