Avs标准中基于并行处理来优化dct快速算法的方法

文档序号:7888884阅读:232来源:国知局

专利名称::Avs标准中基于并行处理来优化dct快速算法的方法
技术领域
:本发明涉及信号处理中的音视频编解码
技术领域
,尤其涉及一种视频编码的AVS标准中基于并行处理来优化DCT快速算法的方法。
背景技术
:近年出现的一批数字音视频编解码标准,具有代表性的有国际标准H.264/MPEG-4AVC,我国自主制定的标准AVS等。AVS标准采用了一系列技术来达到高效率的视频编码,包括帧内预测、帧间预测、DCT(离散余弦变换DiscreteCosineTransform)变换、量化和熵编码等。帧间预测使用基于块的运动矢量来消除图像间的冗余,帧内预测使用空间预测模式来消除图像内的冗余,再通过对预测残差进行变换和量化消除图像内的视觉冗余,最后,运动矢量、预测模式、量化参数和变换系数用熵编码进行压缩。但是通过Intel的Vtune(TM)PerformanceAnalyzer性能分析工具可以得到在AVS编码算法中,DCT模块占用了较多的运算时间。AVS标准中采用的视频基本处理单元是宏块。一个宏块包括一个16x16的亮度样值块和对应的色度样值块。宏块可进一步划分到最小8x8的样本块来进行预测,所以DCT变换的单元是8x8的残差样值矩阵。如下所示的8x8的残差样值矩阵H,经过变换变成系数矩阵CoeffMatrix,变换公式如下CoeffMatrix=T8xHxT8TL是变换矩阵,Tj是Ts的转置矩阵,变换矩阵是AVS标准规定的。<formula>formulaseeoriginaldocumentpage5</formula>DCT变换就是为了实现上述过程。通常DCT变换的快速算法一般可以是从以下几个方面考虑寻找(a)利用FFT(快速傅里叶变换FastFourierTransform)算法,对FFT取实部即是DCT结果;(b)利用代数分解寻找类似FFT中的蝶形关系;(c)利用矩阵分解将变换矩阵分解为稀疏矩阵的积,减少运算次数。在AVS编码器中实现DCT变换的算法采用了蝶形算法,将二维DCT变换变为行列变换的分开操作,对每个8x8块的每行进行变换,然后每列进行变换,从而得到的是一个8x8的变换系数矩阵CoeffMatrix。其中w。。位置的元素就是直流分量,CoeffMatrix矩阵中的其他元素根据其位置表示不同频率的交流分量,这样的变化使得矩阵的相乘转化为相加减和移位操作,减少了^70w75运算量,但是运算速度仍然有待提高,从而使得编码器能够实时编码图像。
发明内容本发明提供的一种AVS标准中基于并行处理来优化DCT快速算法的方法,是在DCT蝶形快速算法的基础上进行并行优化,从而进一步提高运算速度,减少占用CPU的时间,使得编码器能够实时编码图像。为了达到上述目的,本发明根据CPU支持的指令集的不同,针对MMX(MultiMediaExtension,多媒体扩展指令集)、SSE(StreamingS藤Extensions,单指令多数据流扩展指令集)、SSE2(StreamingSIMDExtensions2,单指令多数据流扩展指令集2)、SSE3指令集(StreamingS腦Extensions3,单指令多数据流扩展指令集3),提供了一种AVS标准中基于并行处理来优化DCT快速算法的方法,包含以下步骤步骤l、数据对齐步骤1.1、在一个周期中将数据对齐成整字节的'位置,对于1"位寄存器需要16字节对齐;步骤1.2、将8x8的数据块中对齐后的数据逐一取入对应指令的寄存器中,比如應X寄存器(64位寄存器)、SSE卩寄存器(U8位寄存器);步骤2、寄存器组被占满的情况下还需要寄存器时的临时数据存储步骤2.1、划分一块临时数据存储空间;步骤2.2、将寄存器中的数据存储到临时内存空间中;步骤2.3、再从临时数据存储空间中将数据取出;步骤3、指令配对CPU在一个时钟周期内能够完成两个不同的指令,符合指令配对原则,该原则是通用配对规则、整数配对规则和画X指令与整数指令配对规则。在Intel/>司的文档OptimizationsforIntel's32—BitProcessors中有详细规则。只要没有寄存器冲突和指令冲突,就能够同时在同一个时钟周期内完成两条操作;步骤4、预取数据在运算前将内存中需要的数据预先取入到Cache緩存(高速緩冲存储器)中,这样能够加快访问速度;步骤5、it据扩充或者缩减步骤5.1、在运算过程中,采用指令将取入的原本16位short(16位双字节有符号整数)的数据的高16位和低16位进行扩充,变为32位int(四字节有符号整数)的数据;步骤5.2、运算结束的时候,将32位int的数据合并成16位short的数据存储到内存地址中,采用指令将两个32位数据进行合并为一个包含高16位和低16位的32位^t据;步骤6、系数合并相乘,同时得到不同系数相乘相加的结果步骤6.1、将四个常数系数合并存到一个64位的数中;步骤6.2、将步骤6.2中得到的64位的数放入一个寄存器中;步骤6.3、用一条乘加指令在一个周期内得到两个结果;步骤7、并行处理固X寄存器64位可以存储4个16位数据,SSE2寄存器128位可以存储8个16位数据,这样可以同时对8x8的一行或者一列数据进行处理,加快运算速度,提高效率。本发明提供的一种AVS标准中基于并行处理来优化DCT快速算法的方法,是在DCT蝶形快速算法的基础上进行并行优化,从而进一步提高运算速度,減少占用CPU的时间,使得编码器能够实时编码图像。具体实施例方式以下分别针对應X和SSE2指令集,具体说明本发明的较佳实施方式本发明提供了一种AVS标准中基于并行处理来优化DCT快速算法的方法,包含以下步骤步骤l、数据对齐步骤1.1、在一个周期中将数据对齐成整字节的位置,对于128位寄存器需要16字节对齐;步骤1.2、将8x8的数据块中对齐后的数据逐一取入对应指令的寄存器中,比如匿X寄存器(64位寄存器)、SSE2寄存器(128位寄存器);步骤2、寄存器组被占满的情况下还需要寄存器时的临时数据存储步骤2.1、划分一块临时数据存储空间;步骤2.2、将寄存器中的数据存储到临时内存空间中;步骤2.3、再从临时数据存储空间中将数据取出;步骤3、指令配对同一个周期内完成两条没有冲突的不同指令搮:作;步骤4、预取数据在运算前将内存中需要的数据预先取入到Cache緩存中,这样能够加快访问速度;步骤5、数据扩充或者缩减步骤5.1、在运算过程中,采用指令将取入的原本16位short的凄t据的高16位和低16位进行扩充,变为32位int的数据;步骤5.2、运算结束的时候,将32位int的数据合并成16位short的数据存储到内存地址中,采用指令将两个32位数据进行合并为一个包含高16位和低16位的32位数据;步骤6、系数合并相乘,同时得到不同系数相乘相加的结果根据AVS参考软件中DCT的C代码的蝶形变换,行变换需要得到如下形式的结果10*tmpl+9*tmp2+6*tmp3+2*tmp4;9*tmpl_2*tmp2-10*tmp3-6*tmp4;6*tmpl_10*tmp2-2*tmp3+9*tmp4;2*tmpl-6*tmp2+9*tmp3-10*tmp4。步骤6.1、将四个常数[10,9]和[9,-2]系数合并为一个数0x000a00090009fffe;步骤6.2、将步骤6.2中得到的64位的数i文入一个寄存器中;步骤6.3、将寄存器中的64位的数乘以[tmpl,tmp2]同时得到两个相乘相加的结果10*tmpl+9*ttnp2,9*tmpl-2*tmp2;其他的计算相类似,包括列变换需要类似形式的结果;步骤7、并行处理画X寄存器64位可以存储4个16位数据,SSE2寄存器I"位可以存储8个16位数据,这样可以同时对8x8的一行或者一列数据进行处理,加快运算速度,提高效率。下表为在Pentium4(英特尔奔腾4)2.4GHz(支持画X、SSE、SSE2),512M内存的台式PC平台中,对编码Foreman,cif图像采用本发明的并行处理方法做实验得到的数据,(编码88帧图像,GOP(GroupOfPictures,画面组)才各式为IPBBPBB)。<table>tableseeoriginaldocumentpage9</column></row><table>从实验数据看出,本发明提供的一种AVS标准中基于并行处理来优化DCT快速算法的方法,大幅度提高了运算速度,减少占用CPU的时间,使得编码器能够实时编码图像。权利要求1.一种AVS标准中基于并行处理来优化DCT快速算法的方法,其特征在于,包含以下步骤步骤1、数据对齐;步骤2、寄存器组被占满的情况下还需要寄存器时的临时数据存储;步骤3、指令配对同一个周期内完成两条没有冲突的不同指令操作;步骤4、预取数据在运算前将内存中需要的数据预先取入到高速缓存储器中;步骤5、数据扩充或者缩减;步骤6、系数合并相乘,同时得到不同系数相乘相加的结果;步骤7、并行处理,同时对8×8数据块的一行或者一列数据进行处理。2.如权利要求1所述的AVS标准中基于并行处理来优化DCT快速算法的方法,其特征在于,所述的步骤1包含以下步骤步骤l.l、在一个周期中将数据对齐成整字节的位置,对于128位寄存器需要16字节对齐;步骤1.2、将8x8的数据块中对齐后的数据逐一取入对应指令的寄存器中。3.如权利要求1所述的AVS标准中基于并行处理来优化DCT快速算法的方法,其特征在于,所述的步骤2包含以下步骤步骤2.1、划分一块临时数据存储空间;步骤2.2、将寄存器中的数据存储到临时内存空间中;步骤2.3、再从临时数据存储空间中将数据取出。4.如权利要求1所述的AVS标准中基于并行处理来优化DCT快速算法的方法,其特征在于,所述的步骤5包含以下步骤步骤5.1、在运算过程中,采用指令将取入的原本16位双字节有符号整数数据的高16位和低16位进行扩充,变为32位四字节有符号整数数据;步骤5.2、运算结束的时候,将32位四字节有符号整数数据合并成16位双字节有符号整数数据存储到内存地址中,釆用指令将两个32位数据进行合并为一个包含高16位和低16位的32位数据。5.如权利要求1所述的AVS标准中基于并行处理来优化DCT快速算法的方法,其特征在于,所述的步骤6包含以下步骤步骤6.1、将四个常数系数合并存到一个64位的数中;步骤6.2、将步骤6.2中得到的64位的数放入一个寄存器中;步骤6.3、用一条乘加指令在一个周期内得到两个结果。全文摘要本发明提供了一种AVS标准中基于并行处理来优化DCT快速算法的方法,是在DCT蝶形快速算法的基础上进行并行优化,通过采用数据对齐,临时数据存储,指令配对,预取数据,对数据进行扩充或者缩减,并且对系数合并相乘等方法步骤,从而进一步提高运算速度,减少占用CPU的时间,使得编码器能够实时编码图像。文档编号H04N7/26GK101188761SQ200710171618公开日2008年5月28日申请日期2007年11月30日优先权日2007年11月30日发明者李国平,勇陈申请人:上海广电(集团)有限公司中央研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1