一种基于HEVC的帧内预测解码方法及装置与流程

文档序号:12628378阅读:201来源:国知局
一种基于HEVC 的帧内预测解码方法及装置与流程

本发明涉及视频编解码领域,具体涉及一种基于HEVC(High Efficiency Video Coding,高效率视频编码)的帧内预测解码方法及装置。



背景技术:

日益扩展的视频业务需求、不断提高的高清视频的流行程度、超清视频(如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的帧内预测解码方法,该方法应用于Planar帧内预测模式,该方法包括:根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;使用调用的帧内预测函数对多个像素进行帧内预测处理;使用调用的帧内预测函数对多个像素进行帧内预测处理,包括:每次加载预测块中的多个像素;读取多个像素在参考像素中对应的插值点,并根据插值点生成插值系数向量;使用并行指令基于系数向量进行双线性插值计算,得到目标像素向量;使用并行存储指令将目标像素向量进行存储。

其中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息。

其中,根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数,包括:在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用查找到的帧内预测函数。

其中,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸。

进一步的,上述方法还包括:在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;将多个帧内预测函数存入函数组。

根据本发明的第二个方面,提供了一种基于HEVC的帧内预测解码装置,该装置应用于Planar帧内预测模式,该装置包括:函数调用模块,用于根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;处理模块,用于使用调用的帧内预测函数对多个像素进行帧内预测处理;处理模块包括:加载单元,用于每次加载预测块中的多个像素;读取单元,用于读取多个像素在参考像素中对应的插值点,并根据插值点生成插值系数向量;计算单元,用于使用并行指令基于系数向量进行双线性插值计算,得到目标像素向量;存储单元,用于使用并行存储指令将目标像素向量进行存储。

其中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息。

其中,上述函数调用模块,包括:查找单元,用于在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用单元,用于调用查找到的帧内预测函数。

其中,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸。

进一步的,上述装置还包括:建立模块,用于在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;存储模块,用于将多个帧内预测函数存入函数组。

本发明有益效果如下:

本发明实施例所提供的技术方案根据预设的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的函数的调用来进行帧内预测解码,并利用并行指令集对帧内预测环节进行计算,提高数据并行化程度,并减少代码分支,提高处理器流水线利用率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是相关技术中的基于HEVC的视频解码流程的示意图;

图2是本发明第一实施例提供的基于HEVC的帧内预测解码方法的流程图;

图3是本发明第三实施例提供的基于HEVC的帧内预测解码装置的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一实施例

本实施例提供了一种基于HEVC的帧内预测解码方法,图2是该方法的流程图,如图2所示,该方法包括如下步骤:

步骤201:根据颜色分量索引、帧内预测模式以及预测块(即当前解码块)的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;

步骤202:使用调用的所述帧内预测函数对所述多个像素进行帧内预测处理。

其中,使用调用的帧内预测函数对多个像素进行帧内预测处理具体可以包括:每次加载预测块中的多个像素;读取多个像素在参考像素中对应的插值点,并根据插值点生成插值系数向量;使用并行指令基于系数向量进行双线性插值计算,得到目标像素向量;使用并行存储指令将目标像素向量进行存储。

在本实施例中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息,比如c_idx(颜色分量索引)为0,mode(模式)为19,size(预测块尺寸)为8,则对应的帧内预测函数的名称为:intra_pred_0_19_3,基于此,在确定了根据颜色分量索引、帧内预测模式以及预测块的尺寸的信息后,可以基于这些信息按照帧内预测的函数的名称来查找指定的函数,具体地,根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数的步骤具体可以包括:在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用查找到的帧内预测函数。

需要说明的是,在本实施例中帧内预测函数具体可以是目前现存的多种已知函数,在本实施例中,可以在该多种已知的函数设置指定的参数值来满足本实施例中帧内预测函数的需求。

本实施例提供的方法还可以包括在进行帧内预测处理之前,预先建立帧内预测函数数组,建立函数数组中各函数与指定的颜色分量索引、帧内预测模式以及预测块的尺寸组合的对应关系的步骤,基于此,

在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;将多个帧内预测函数存入函数组,在本实施例中,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸,这样可以减小内部处理的分支。

需要说明的是,本实施例提供的帧内预测解码方法优选的可以应用Planar模式(即,mode=0),但本实施例并不限定仅针对这一固定模式进行使用,在对本实施例的方法进行使用的过程中,也可以将其应用于HEVC的其他帧内预测模式中。

在本实施例中,为了提高处理效率,进行帧内预测解码处理时,采用并行指令,同时,在执行本实施例中上述步骤202之后,同样可以采用并行指令将处理后得到的目标向量存储至目标地址。

第二实施例

HEVC中一共有35种帧内预测模式,其中模式0为Planar模式,模式1为DC(直流)模式,其余模式对应不同的角度。

本实施例提供了一种基于HEVC的帧内预测解码方法,在本实施例中以Planar模式为例对该解码方法进行说明,该方法包括如下处理:

Planar模式(mode=0):

对每一行,每次加载多个像素,通过并行的加法和乘法指令,同时对多个像素进行处理,并将计算结果存入指定内存地址。

帧内预测的具体处理过程如下:

1、计算加载参考向量:

v_top_x={p[x][-1]:x=0...size-1}={top[x]:x=0...size-1},

v_left_size={p[-1][size];size个元素}={left[size],...,left[size];size个元素},

v_top_size={p[size][-1];size个元素}={top[size],...,top[size];size个元素};

并且,对于每一行即y=0...size-1有:

v_left_y={p[-1][y]:size个元素}={left[y];size个元素}

以size=8为例:

v_top_x={top[0],top[1],top[2],top[3],top[4],top[5],top[6],top[7]},

v_left_8={left[8],left[8],left[8],left[8],left[8],left[8],left[8],left[8]}

v_top_8={top[8],top[8],top[8],top[8],top[8],top[8],top[8],top[8]}

对于第一行,即y=0有

v_left_0={left[0],left[0],left[0],left[0],left[0],left[0],left[0],left[0]}

对于第二行,即y=1有

v_left_1={left[1],left[1],left[1],left[1],left[1],left[1],left[1],left[1]}

以此类推...

2、计算系数向量:

v_c_h1={size-1-x:x=0...size-1},

v_c_h2={x+1:x=0...size-1},

对每一行y=0...size-1

v_c_v1_y={size-1-y;size个元素},

v_c_v2_y={y+1;size个元素},

仍然以size=8为例:

v_c_h1={7,6,5,4,3,2,1,0},

v_c_h2={1,2,3,4,5,6,7,8},

对于第一行即y=0有:

v_c_v1_0={7,7,7,7,7,7,7,7},

v_c_v2_0={1,1,1,1,1,1,1,1},

对于第二行即y=1有:

v_c_v1_1={6,6,6,6,6,6,6,6},

v_c_v2_1={2,2,2,2,2,2,2,2},

以此类推...

3、对每一行y=0...size-1,进行如下操作:

按标准规定使用并行指令计算双线性插值得到目标像素值向量v_pred_y={predSamples[x][y]:x=0...size-1},计算过程为:

v_pred_y=(v_left_y*v_c_h1+v_top_size*v_c_h2

+v_top_x*v_c_v1_y+v_left_size*v_c_v2_y)>>(log2(size)+1)

说明:*表示向量的并行乘法,即{a1,a2}*{b1,b2}={a1b1,a2b2}+表示向量的并行加法,即{a1,a2}+{b1,b2}={a1+b1,a2+b2}使用并行存储指令将目标向量写入目的地址;即将v_pred_y中的元素一次性写入指定的内存中;

以8x8的预测块为例,先处理第一行,即y=0

构造系数向量v_c_h1={7,6,5,4,3,2,1,0},v_c_h2={1,2,3,4,5,6,7,8},v_c_v1_0={7,7,7,7,7,7,7,7},v_c_v2_0={1,1,1,1,1,1,1,1}.

加载数据向量

v_left_0={left[0],left[0],left[0],left[0],left[0],left[0],left[0],left[0]},

v_top_8={top[8],top[8],top[8],top[8],top[8],top[8],top[8],top[8]},

v_top_x={top[0],top[1],top[2],top[3],top[4],top[5],top[6],top[7]},

v_left_8={left[8],left[8],left[8],left[8],left[8],left[8],left[8],left[8]}.

计算结果向量

v_pred_0=(v_c_h1*v_left_0+v_c_x2*v_top_8+v_c_v1_0*v_top_x+v_c_v2_0*v_left_8+8)>>4

用并行存储指令将结果向量v_pred_0存入目标内存地址.

令y=1,重复上述步骤,以此类推,直至将8行全部计算完成。

其中’o’表示未处理像素,’*’表示已处理像素。

y=0

y=1

y=2

......

y=7

本发明实施例所提供的技术方案利用并行指令集对解码单元的帧内预测环节进行计算,提高数据并行化程度,并减少代码分支,提高处理器流水线利用率。

第三实施例

本实施例提供了一种基于HEVC的帧内预测解码装置,该装置用于实现上述第一实施例以及第二实施例提供的方法,图3是该装置的结构框图,如图3所示,该装置30包括以下组成部分:

函数调用模块31,用于根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数;

处理模块32,用于每次加载预测块中的多个像素,使用帧内预测函数对多个像素进行处理,在对像素进行处理时,使用并行的加法和乘法指令同时对多个像素进行处理。

其中,处理模块32具体可以包括:加载单元,用于每次加载所述预测块中的多个像素;读取单元,用于读取所述多个像素在所述参考像素中对应的插值点,并根据所述插值点生成插值系数向量;计算单元,用于使用并行指令基于所述系数向量进行双线性插值计算,得到目标像素向量;存储单元,用于使用并行存储指令将所述目标像素向量进行存储。

在本实施例中,帧内预测函数的名称中携带有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息。

其中,上述函数调用模块31具体可以包括以下组成部分:查找单元,用于在预设的函数数组中查找函数的名称中包含有颜色分量索引的标识信息、帧内预测模式的标识信息以及预测块的尺寸的标识信息的帧内预测函数;调用单元,用于调用查找到的帧内预测函数。

在本实施例中,帧内预测函数的参数中包括具有固定数值的颜色分量索引、帧内预测模式以及预测块的尺寸。

进一步的,本实施例提供的装置30还可以包括以下组成部分:

建立模块,用于在根据颜色分量索引、帧内预测模式以及预测块的尺寸调用预先设置的与颜色分量索引、帧内预测模式以及预测块的尺寸对应的帧内预测函数之前,建立与不同的颜色分量索引、不同的帧内预测模式以及不同的预测块的尺寸的组合对应的多个帧内预测函数;存储模块,用于将多个帧内预测函数存入函数组。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1