【技术实现步骤摘要】
基于AVS的并行变换和反变换方法
本专利技术涉及数字视频编解码
,具体涉及基于AVS(AudioVideocodingStandard)标准中,使用SIMD(SingleInstructionMultipleData)指令优化变换和反变换的方法。
技术介绍
随着AVS标准在广播电视、互联网、机顶盒、监控等大规模产业化,在PC和嵌入式设备上播放和录制AVS文件要求越来越多,且都希望实时,由于AVS采用高复杂度算法获得高编码效率,因此,需要对编解码器进行有效的程序优化,才可能达到实时,画面流畅,播放和录制达到25fps,甚至30fps。对编解码AVS码流分析,QUANT/DEQUANT耗时占很大比重,特别的,如果量化后的数据都为0,将可以不需要进行许多运算,优化好它们就能有效的提高编解码效率。现在的PC和嵌入式处理器芯片有SIMD指令,如:intel的mmx、sse和AMD的3DNow!,ARM的NEON,使用好这些SIMD指令,能有效地提高编解码速度。DCT即为变换,是将当前像素与预测像素相减,以8x8变换为例,得到8x8的残差系数矩阵,然后进行8x8整数正离散余弦变换,步骤如下:1.将样本点精度为8位的无符号的当前像素值与预测像素值进行相减,得到精度为16位的有符号的残差值,形成8x8的残差矩阵。2.对残差矩阵进行水平变换:H’=ResidualMatrix*T8,ResidualMatrix为残差矩阵,T8是AVS标准规定的变换矩阵,H’表示水平变换后的中间结果矩阵。3.对H’进行垂直变换:H”=T8T*H’,其中,T8T为T8的转置矩阵,H”为垂 ...
【技术保护点】
基于AVS的并行变换方法,其特征在于,包括以下步骤:步骤A:利用两个寄存器分别并行读入八个当前像素值和八个预测像素值,利用低位交叉指令使当前像素值与预测像素值进行交叉得到第一交叉结果,以及使预测像素值与自身进行交叉得到第二交叉结果,将第一交叉结果减去第二交叉结果得到八个残差值并送进一个寄存器中,其中,当前像素值与预测像素值为8位数据,残差值为16位数据;步骤B:重复执行七次步骤A,得到64个残差值,组成8*8的残差矩阵,其中,每执行一次步骤A所得到的八个残差值为残差矩阵中的其中一行数据,八行数据分别保存于八个寄存器中;步骤C:结合低位交叉指令和高位交叉指令对残差矩阵进行转置得到转置残差矩阵,所述八个寄存器中的数据分别替换为转置残差矩阵中的八行数据;步骤D:针对转置残差矩阵中的数据进行水平变换部分的蝶形算法的运算,得到水平变换运算矩阵,所述八个寄存器中的数据分别替换为水平变换运算矩阵中的八行数据;步骤E:结合低位交叉指令和高位交叉指令对水平变换运算矩阵进行转置得到转置水平变换运算矩阵,所述八个寄存器中的数据分别替换为转置水平变换运算矩阵中的八行数据;步骤F:针对转置水平变换运算矩阵中的数 ...
【技术特征摘要】
1.基于AVS的并行变换方法,其特征在于,包括以下步骤:步骤A:利用两个寄存器分别并行读入八个当前像素值和八个预测像素值,利用低位交叉指令使当前像素值与预测像素值进行交叉得到第一交叉结果,以及使预测像素值与自身进行交叉得到第二交叉结果,将第一交叉结果减去第二交叉结果得到八个残差值并送进一个寄存器中,其中,当前像素值与预测像素值为8位数据,残差值为16位数据;步骤B:重复执行七次步骤A,得到64个残差值,组成8*8的残差矩阵,其中,每执行一次步骤A所得到的八个残差值为残差矩阵中的其中一行数据,八行数据分别保存于八个寄存器中;步骤C:结合低位交叉指令和高位交叉指令对残差矩阵进行转置得到转置残差矩阵,所述八个寄存器中的数据分别替换为转置残差矩阵中的八行数据;步骤D:针对转置残差矩阵中的数据进行水平变换部分的蝶形算法的运算,得到水平变换运算矩阵,所述八个寄存器中的数据分别替换为水平变换运算矩阵中的八行数据;步骤E:结合低位交叉指令和高位交叉指令对水平变换运算矩阵进行转置得到转置水平变换运算矩阵,所述八个寄存器中的数据分别替换为转置水平变换运算矩阵中的八行数据;步骤F:针对转置水平变换运算矩阵中的数据进行垂直变换部分的蝶形算法的运算,得到垂直变换运算矩阵,所述八个寄存器中的数据分别替换为垂直变换运算矩阵中的八行数据;步骤G:针对垂直变换运算矩阵进行如下运算:rij=(hij+24)>>5,得到变换结果矩阵,其中,hij为垂直变换运算矩阵中的数据,rij为变换结果矩阵中的数据,i和j的取值范围为0-7;在步骤F中包括如下子步骤:步骤F0:将转置水平变换运算矩阵中的数据由16位转为32位,将转置水平变换运算矩阵中的每一行数据的前四个数据分别送入对应的寄存器中,转置水平变换运算矩阵中的每一行数据的后四个数据暂存于内存中;步骤F1:针对已经保存至八个寄存器中的数据进行垂直变换部分的蝶形算法的运算,得到垂直变换运算矩阵中的左半部分数据,然后将垂直变换运算矩阵中的左半部分数据暂存于内存中;步骤F2:将转置水平变换运算矩阵中的暂存于内存中的数据分别从内存中送进所述八个寄存器中;步骤F3:针对已经保存至八个寄存器中的数据进行垂直变换部分的蝶形算法的运算,得到垂直变换运算矩阵中的右半部分数据,将垂直变换运算矩阵中的左半部分数据和右半部分数据组合得到垂直变换运算矩阵。2.根据权利要求1所述的基于AVS的并行变换方法,其特征在于,在水平变换部分的蝶形算法的运算和垂直变换部分的蝶形算法的运算中,针对需要分别进行相加和进行相减的两组保存于各自寄存器中的数据,执行如下运算步骤:将两个寄存器分别记为xmm0和xmm7,将xmm0中的数据记为x0,将xmm7中的数据记为x7,首先将xmm0与xmm7相加保存于xmm0中,然后将xmm0与xmm0相加保存于xmm7中,最后将xmm7减去xmm0保存于xmm7中;经过运算步骤后,x0+x7的结果保存于xmm0中,x0-x7的结果保存于xmm7中。3.根据权利要求1所述的基于AVS的并行变换方法,其特征在于,在水平变换部分的蝶形算法的运算和垂直变换部分的蝶形算法的运算中,将需要与10相乘的保存于寄存器中的数据记为y,则针对y*10这一乘法运算执行如下运算步骤:将保存有数据y的寄存器记为xmm1,首先将数据y复制至另一寄存器中,将另一寄存器记为xmm2,然后将xmm2中的数据左移两位后与xmm1中的数据相加,相加结果保存于xmm1中,再将xmm1与自身相加;经过该运算步骤,使y*10的结果保存于xmm1中。4.基于AVS的并行反变换方法,其特征在于,包括以下步骤:步骤a:利用八个寄存器分别保存反量化矩阵中的八行数据,反量化矩阵中的数据为16位数据;步骤b:结合低位交叉指令和高位交叉指令对反量化矩阵进行转置得到...
【专利技术属性】
技术研发人员:叶广明,
申请(专利权)人:广州柯维新数码科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。