一种基于HEVC的帧内预测解码方法及装置
技术领域
本发明涉及视频编解码领域,具体涉及一种基于HEVC(High Efficiency VideoCoding,高效率视频编码)的帧内预测解码方法及装置。
背景技术
日益扩展的视频业务需求、不断提高的高清视频的流行程度、超清视频(如4K和8K)的出现、移动端视频应用的爆发性增长、有限的带宽资源等因素都对视频的编码效率提出了更高的要求。在视频编解码领域,复杂度控制对视频编解码有重要的影响。复杂度控制指的是在降低编解码复杂度至指定的目标复杂度,而这种复杂度降低所导致的视频失真最小。
在视频编码的演进过程中,伴随着编码效率的不断提高,视频编码的复杂度也不断提高,降低和控制视频编解码的复杂度成为视频编解码的关键问题。随着当下智能终端的多样化发展,越来越多的智能终端如智能手机、平板电脑等进入人们的生活,成为人们生活中不可或缺的一部分。HEVC标准,也称为H.265,是由ISO/IEC和ITU-T联合成立的JCT-VC开发的继H.264标准之后的新一代视频编码标准。HEVC于2012年2月形成完整的委员会标准草案,并于2013年正式成为国际标准。H.265能够减少时空冗余以满足高清乃至超高清视频的压缩需求,具有灵活的图像分割方案,并行化编解码设定,相比较之前的H.264/AVC视频编码标准,HEVC可以在只消耗H.264一半码率的前提下获得几乎相同的视频压缩质量,但是这是以编码复杂度作为代价的,复杂度比AVC(Advanced Video Coding)复杂2到10倍。这种高昂的编码复杂度对HEVC的实时编码的应用造成了很大挑战。
基于HEVC的视频解码流程如图1所示,其中,帧内预测是利用当前解码块的上侧和左侧像素值对当前解码块进行预测的过程,HEVC(视频压缩标准)中一共有35种帧内预测模式,其中模式0为Planar模式,模式1为DC(直流)模式,其余模式对应不同的角度,但目前现有帧内预测解码流程存在较多分支,不利于利用CPU的流水线进行指令的预加载;同时现存方式往往一次只能处理一个像素,效率较低。
发明内容
本发明的主要目的在于提供一种基于HEVC的帧内预测解码方法及装置,用于解决现有技术中帧内预测解码方法处理流程分支较多,效率较低的问题。
根据本发明的第一个方面,提供了一种基于HEVC的帧内预测解码方法,该方法应用于直流DC帧内预测模式,该方法包括:根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;使用调用的帧内预测函数对多个像素进行帧内预测处理;使用调用的帧内预测函数对多个像素进行帧内预测处理,包括:使用并行指令计算预测块的参考像素平均值;使用并行存储指令,将参考像素平均值写入预测块的每一行;对于预测块尺寸小于32且颜色分量索引为0的预测块,使用并行指令计算并存储目标像素的向量值。
其中,使用并行指令计算预测块的参考像素平均值包括:构造预测块的参考像素向量;使用并行指令将参考像素向量进行相加;将相加后得到的结果向量的低半部分和高半部分分别存入新的参考向量中,重复将得到的新的参考向量相加,直至结果向量中只有一个元素。
其中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸。
其中,根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数,包括:在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用查找到的帧内预测函数。
进一步的,上述方法还包括:在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;将多个帧内预测函数存入函数组。
根据本发明的第二个方面,提供了一种基于HEVC的帧内预测解码装置,该装置应用于直流DC帧内预测模式,该装置包括:调用模块,用于根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;处理模块,用于使用调用的帧内预测函数对多个像素进行帧内预测处理;处理模块包括:第一计算单元,用于使用并行指令计算预测块的参考像素平均值;存储单元,用于使用并行存储指令,将参考像素平均值写入预测块的每一行;第二计算单元,用于对于预测块尺寸小于32且颜色分量索引为0的预测块,使用并行指令计算并存储目标像素的向量值。
其中,上述第一计算单元具体用于:构造预测块的参考像素向量;使用并行指令将参考像素向量进行相加;
将相加后得到的结果向量的低半部分和高半部分分别存入新的参考向量中,重复将得到的新的参考向量相加,直至结果向量中只有一个元素。
其中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸。
其中,调用模块,包括:
查找单元,用于在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;
调用单元,用于调用查找到的帧内预测函数。
进一步的,上述装置还包括:函数建立模块,用于在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;存储模块,用于将多个帧内预测函数存入函数组。
本发明实施例所提供的技术方案根据预设的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的函数的调用来进行帧内预测解码,并利用并行指令集对帧内预测环节进行计算,提高数据并行化程度,并减少代码分支,提高处理器流水线利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术中的基于HEVC的视频解码流程的示意图;
图2是本发明第一实施例提供的基于HEVC的帧内预测解码方法的流程图;
图3是本发明第三实施例提供的基于HEVC的帧内预测解码装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例
本是实例提供了一种基于HEVC的帧内预测解码方法,该方法应用于直流DC帧内预测模式,图2是该方法的流程图,如图2所示,该方法具体可以包括以下处理:
步骤201:根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;
步骤202:使用调用的帧内预测函数对多个像素进行帧内预测处理;
其中,使用调用的帧内预测函数对多个像素进行帧内预测处理,具体可以包括:
使用并行指令计算预测块的参考像素平均值;使用并行指令计算预测块的参考像素平均值具体可以包括:构造预测块的参考像素向量;使用并行指令将参考像素向量进行相加;将相加后得到的结果向量的低半部分和高半部分分别存入新的参考向量中,重复将得到的新的参考向量相加,直至结果向量中只有一个元素。使用并行存储指令,将参考像素平均值写入预测块的每一行;对于预测块尺寸小于32且颜色分量索引为0的预测块,使用并行指令计算并存储目标像素的向量值。
在本实施例中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息,比如c_idx(颜色分量索引)为0,mode(模式)为19,size(预测块尺寸)为8,则对应的帧内预测函数的名称为:intra_pred_0_19_3,基于此,在确定了根据颜色分量索引、帧内预测模式以及预测块的尺寸的信息后,可以基于这些信息按照帧内预测的函数的名称来查找指定的函数,具体地,根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数的步骤具体可以包括:在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用查找到的帧内预测函数。
需要说明的是,在本实施例中帧内预测函数具体可以是目前现存的多种已知函数,在本实施例中,可以在该多种已知的函数设置指定的参数值来满足本实施例中帧内预测函数的需求。
本实施例提供的方法还可以包括在进行帧内预测处理之前,预先建立帧内预测函数数组,建立函数数组中各函数与指定的颜色分量索引、帧内预测模式以及预测块的尺寸组合的对应关系的步骤,基于此,在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;将多个帧内预测函数存入函数组,在本实施例中,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸,这样可以减小内部处理的分支。
在本实施例中,为了提高处理效率,进行帧内预测解码处理时,采用并行指令,同时,在执行本实施例中上述步骤202之后,同样可以采用并行指令将处理后得到的目标向量存储至目标地址。
第二实施例
HEVC中一共有35种帧内预测模式,其中模式0为Planar模式,模式1为DC(mode=1)模式,其余模式对应不同的角度。
本实施例提供了一种基于HEVC的帧内预测解码方法,在本实施例中以DC模式为例对该解码方法进行说明,该方法包括如下处理:
1)使用并行指令计算参考像素平均值:
1.1、构造参考像素向量{p[x][-1]:x=0...size-1},{p[-1][y]:y=0...size-1};
1.2、使用并行指令将参考向量相加;
1.3、将1.2步结果向量的低半部分和高半部分分别存入新的参考向量中;
1.4、重复1.2步骤,直至结果向量中只有一个元素;
1.5、按照现有标准规定,计算平均值;
2)对每一行y=0...size-1,使用并行存储指令,将参考像素平均值向量{dc},写入每一行;
3)对于size小于32的亮度预测块:
按照标准规定,计算向量目标像素{predSamples[x][0]:x=0...size-1}的值;
使用并行存储指令,将上述向量存入指定位置;
对y=1...size-1,按照标准规定,计算并存储目标像素predSamples[0][y]的值。
具体处理过程如下:
1、首先加载参考像素向量:
v_left={left[0],left[1],left[2],left[3],left[4],left[5],left[6],left[7]},
v_top={top[0],top[1],top[2],top[3],top[4],top[5],top[6],top[7]};
使用并行加指令将v_left与v_top相加:
v_sum_0=v_left+v_top;
其中,+表示并行加法,即{a1,a2}+{b1,b2}={a1+b1,a2+b2};
3.将v_sum_0分为两个向量,即
v_sum_0={v_sum_0_lo,v_sum_0_hi}={v_left[0]+v_top[0],......,v_left[7]+v_top[7]};
其中,v_sum_0_lo={v_sum_0[0],v_sum_0[1],v_sum_0[2],v_sum_0[3]};
v_sum_0_hi={v_sum_0[4],v_sum_0[5],v_sum_0[6],v_sum_0[7]};
4.使用并行指令集将v_sum_0_lo和v_sum_0_hi相加:
v_sum_1=v_sum_0_lo+v_sum_0_hi
5.将v_sum_1分为两个向量,即
v_sum_1={v_sum_1_lo,v_sum_1_hi},
其中,v_sum_1_lo={v_sum_1[0],v_sum_1[1]};
v_sum_1_hi={v_sum_1[2],v_sum_1[3]};
6.使用并行指令集将v_sum_1_lo和v_sum_1_hi相加:
v_sum_2=v_sum_1_lo+v_sum_1_hi
7.将v_sum_2中的两个元素相加得到参考像素的和:
sum=v_sum_2[0]+v_sum_2[1];
8.将sum值右移4位得到平均值dc;
dc=sum>>49构造结果向量v_result={dc,dc,dc,dc,dc,dc,dc,dc};
10.使用并行存储指令依次将结果向量存入预测块的每一行;
11.对于c_idx为0并且size小于32的函数,进行如下处理:
构造向量v_result=({top[0],top[1],op[2],top[3],top[4],top[5],top[6],top[7]}+3*v_result+2)>>2并存入第一行;
12.更新第一列的值。
第三实施例
本实施例提供了一种基于HEVC的帧内预测解码装置,该装置应用于直流DC帧内预测模式,该装置用于实现上述第一实施例以及第二实施例提供的基于HEVC的帧内预测解码方法图3是该装置的结构框图,如图3所示,该装置30包括以下组成部分:
调用模块31,用于根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;
处理模块32,用于使用调用的帧内预测函数对多个像素进行帧内预测处理;处理模块包括:第一计算单元,用于使用并行指令计算预测块的参考像素平均值;存储单元,用于使用并行存储指令,将参考像素平均值写入预测块的每一行;第二计算单元,用于对于预测块尺寸小于32且颜色分量索引为0的预测块,使用并行指令计算并存储目标像素的向量值。
其中,上述第一计算单元具体用于:构造预测块的参考像素向量;使用并行指令将参考像素向量进行相加;将相加后得到的结果向量的低半部分和高半部分分别存入新的参考向量中,重复将得到的新的参考向量相加,直至结果向量中只有一个元素。
其中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸。
其中,上述调用模块31具体可以包括:查找单元,用于在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用单元,用于调用查找到的帧内预测函数。
进一步的,上述装置30还可以包括:函数建立模块,用于在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;存储模块,用于将多个帧内预测函数存入函数组。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。