一种基于AVS2的并行帧内预测解码方法技术

技术编号:21039352 阅读:41 留言:0更新日期:2019-05-04 08:19
本发明专利技术公开了一种基于AVS2的并行帧内预测解码方法。它包括亮度双线性预测模式的并行预测运算方法和亮度角度模式3的并行预测运算方法,将PU中像素的帧内预测并行起来,利用处理器的SIMD指令,可以有效地加速帧内预测过程,一个PU内的整行像素可以一起计算或多行像素一起做帧内预测。本发明专利技术的有益效果是:有效地加速帧内预测过程,可以显著加速帧内预测解码过程,进而提升AVS2解码器的整体性能。

【技术实现步骤摘要】
一种基于AVS2的并行帧内预测解码方法
本专利技术涉及数字视频解码相关
,尤其是指一种基于AVS2的并行帧内预测解码方法。
技术介绍
随着2018年10月1日中央广播电视总台正式开播首个采用AVS2国家标准的4K超高清频道,AVS2的应用正式拉开大幕。AVS2采用相比于AVS更复杂的编码工具来达到更高的编码效率。因而对于4K50fps,要在服务器和嵌入式设备中实时解码AVS2码流,必须对解码器进行高效的程序优化,才能达到实时解码的目标,保证播放画面的流畅。AVS2中的帧内预测有DC模式、Plane模式、双线性模式、垂直模式、水平模式和28种角度模式。AVS2中的亮度分量帧内预测共有33种模式。除水平预测、垂直预测计算量较小外,其余的帧内预测模式计算量都不小,再加上存储耗时,帧内预测部分所占的计算资源不容小觑。下面以双线性模式和角度模式为例说明现有技术的不足之外。双线性模式预测值的计算公式为:predMatrix[x][y]=Clip1(((((ia-c[y+1])×(x+1))<<Log(N))+(((ib-r[x+1])×(y+1))<&lt;Log(M))本文档来自技高网...

【技术保护点】
1.一种基于AVS2的并行帧内预测解码方法,其特征是,包括亮度双线性预测模式的并行预测运算方法和亮度角度模式3的并行预测运算方法,亮度双线性预测模式下每个像素的预测值计算公式为:predMatrix[x][y]=Clip1(((((ia‑c[y+1])×(x+1))<<Log(N))+(((ib‑r[x+1])×(y+1))<<Log(M))+((r[x+1]+c[y+1])<<(Log(M)+Log(N)))+((ic<<1)‑ia‑ib)×x×y+(1<<(Log(M)+Log(N))))>>(Log(M)+Log(N...

【技术特征摘要】
1.一种基于AVS2的并行帧内预测解码方法,其特征是,包括亮度双线性预测模式的并行预测运算方法和亮度角度模式3的并行预测运算方法,亮度双线性预测模式下每个像素的预测值计算公式为:predMatrix[x][y]=Clip1(((((ia-c[y+1])×(x+1))<<Log(N))+(((ib-r[x+1])×(y+1))<<Log(M))+((r[x+1]+c[y+1])<<(Log(M)+Log(N)))+((ic<<1)-ia-ib)×x×y+(1<<(Log(M)+Log(N))))>>(Log(M)+Log(N)+1)),其中:M、N表示亮度预测块的列数和行数,公式中的x和y表示待预测像素在亮度预测块中的坐标,x=0~M-1,y=0~N-1;预测单元PU大小为16x16时,Log(M)=Log(N)=4,ia=r[16],ib=c[16],ic=(ia+ib+1)>>1,对于亮度块,当前块上边的参考样本记为r[i],左边的参考样本记为c[j],其中r[0]=c[0],如果i大于2M,则r[i]=r[2M],如果j大于2N,则c[j]=c[2N],则以上计算公式可简化为:predMatrix[x][y]=Clip1(((((r[16]-c[y+1])×(x+1))<<4)+(((c[16]-r[x+1])×(y+1))<<4)+((r[x+1]+c[y+1])<<8)+((((r[16]+c[16]+1)>>1)<<1)-r[16]-c[16])×x×y+256)>>9);亮度双线性预测模式的并行预测运算步骤如下:步骤A:初始化,将c[16]值并行送入128位寄存器IB_128,将r[1]~r[8],r[9]~r[16]并行送入T2_L_128_C和T2_H_128_C两个128位寄存器,用并行减法指令操作IB_128、T2_L_128_C、T2_H_128_C得到c[16]-r[x+1]保存在T1_L_128_C和T1_H_128_C两个128位寄存器,将常量256并行送入256位寄存器SHIFT_256,并将序号1~8、9~16并行送入两个128位寄存器INDEX_1和INDEX_2中,计算ic=(r[16]+c[16]+1)>>1;步骤B:对于每个像素行,分别计算各个单项式的值,包括乘法操作和移位操作,由于(ic<<1)-ia-ib的值有且仅有两种可能,非0即1,那么如果为0,则((ic<<1)-ia-ib)×x×y这个单项式则不计算;步骤C:各个单项式的值是用32bit保存,一个256位寄存器保存8个像素值,对单项式用vpaddd指令可同时对8个像素进行求和,用vpsrad指令做右移操作,用vpminsd指令和vpmaxsd指令完成Clip1操作;步骤D:将保存一行中0~7像素,与保存8~15像素的两个256寄存器用vpackusdw指令压缩到一个256位寄存器中,并用vpermq指令调整好顺序,保存到指定的内存中,由此一个像素行的帧内预测即完成了;步骤E:重复执行16次步骤B、步骤C、步骤D,依次获得16行的帧内预测结果,最终得到整个PU的帧内预测结果;亮度角度模式3的预测公式为:predMatrix[x][y]=(r[iXnN1+1]×(32-offset)+r[iX+1]×(64-offset)+r[iXn+1]×(32+offset)+r[iXnP2+1]×offset+64)>>7,其中:M、N表示亮度预测块的列数和行数,公式中的x和y表示待预测像素在亮度预测块中的坐标,x=0~M-1,y=0~N-1,iX=x+(((y+1)×11)>>2),offset=(((y+1)×11×32)>>2)-iX×32;iXn=iX+1,iXnP2=iX+2,iXnN1=iX-1;亮度角度模式3的并行预测运算步骤如下:步骤a:初始化,预测单元PU大小为16x16时,当x=15且y=15时,iX取得极大值15+((15+1)×11)>>2)=59,公式中引用到r[iXnP2+1],即r[iX+3],因而当计算predMatrix[15][15]时,r[59+3]的值会被用到,因而需先扩展r[62],令r[x]=r[32],其中32<x<63,用vmovdqu指令一次处理16个像素值,Offset值与y值相关,Offset的取值只有4种情况,分别是24、16、8、0,因而滤波器的系数就可提前计算出来,将滤波器系数(32-offset,64-offset,32+offset,offset)并行送入一个256位寄存器中,同时容纳4组滤波系数;步骤b:对于每个像素行,算法是对相邻的4个像素值进行滤波,分别读取r[iX]、r[iX+1]、r[iX+2]和r[iX+3]为起始地址的16个参考像素的像素值,然后用vpunpcklwd和vpunpckhwd指令做数据交错;令R[i]=r[iX+i],则在第一个256位寄存器中存放R[0]...

【专利技术属性】
技术研发人员:车蓉孙伟涛孙彦龙
申请(专利权)人:杭州当虹科技股份有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1