发明内容
基于此,有必要针对上述技术问题,提供一种能够解决帧内预测效率低的帧内预测装置和方法。
一种帧内预测装置,所述装置包括:
控制单元和计算单元;
所述控制单元用于将帧内宏块划分为多种编码块类型,其中,每种编码块类型包括一个以上的待编码块;并行读取各编码块类型当前的待编码块;获取所述待编码块的参考像素;根据所述参考像素,获取所述待编码块的可能预测模式;
所述计算单元接收控制单元发送的计算任务信息;所述计算任务信息包括待编码块的编码块类型、待编码块的参考像素以及待编码块的可能预测模式;根据所述计算任务信息,得到待编码块在每种可能预测模式下的预测值,根据编码块类型中每个待编码块的预测值,得到各编码块类型对所述帧内宏块进行编码的最优代价总和;根据所述各编码块类型的最优代价总和,得到编码器对当前帧内宏块编码的编码类型。
上述帧内预测装置,通过控制单元将一个帧内的宏块划分为多种编码块类型,每中编码块类型又包括一个以上的待编码块,对于一个编码块类型而言,其包括的所有的待编码块组成一个完整的帧内宏块。通过并行读取各编码块类型的待编码块,并根据待编码块的参考像素,选择待编码块的可能预测模式,在计算单元中,各编码块类型的计算任务也是同时进行的,即同时进行计算,得到各编码块类型的最优代价总和,然后根据最优代价总和之间的比较,得到编码器对当前帧内宏块编码的编码类型,从而突破帧内预测并行性的限制,提高编码器帧内预测的效率。
在其中一个实施例中,所述控制单元包括模式划分模块;所述模式划分模块用于根据帧内宏块的预先设置的划分规则,将帧内宏块划分为多种编码块类型。
在其中一个实施例中,所述控制单元还包括参考像素处理模块;所述参考像素处理模块接收所述模式划分模块发送的编码块类型,用于并行读取各编码块类型当前的待编码块,并获取所述待编码块的参考像素。
在其中一个实施例中,所述控制单元还包括:预选模式模块;所述预选模式模块接收所述参考像素处理模块发送的所述参考像素,用于根据待编码块在H.264视频编码标准中的预测模式,以及位于所述待编码块上方、左边、左上和/或右上的参考像素,从所述预测模式中选择所述待编码块的可能预测模式。
在其中一个实施例中,所述计算单元包括:预测模块;所述预测模块用于根据所述待编码块的编码块类型,将所述待编码块划分为若干个最小处理单元,根据所述待编码块的参考像素以及所述可能预测模式,对所述各个最小处理单元进行预测值的计算,得到待编码块针对每种所述可能预测模式的预测值,根据所述预测值计算得到残差,根据所述残差得到每种可能预测模式进行编码时的SATD值。
在其中一个实施例中,所述计算单元还包括:块模式判断模块;所述块模式判断模块根据所述预测模块发送的待编码块的SATD值,选择所述SATD值中的最小值作为待编码块的最优代价值,并根据所述最优代价值确定所述各编码块类型的待编码块的所述最优代价总和,选择所述最优代价总和最小对应编码块类型以及所述最优代价总和最小对应的所述可能预测模式作为当前帧内宏块的编码模式。
在其中一个实施例中,所述计算单元还包括:残差计算模块;所述残差计算模块根据所述待编码块的所述最优代价值对应的所述残差依次进行离散余弦变化、量化、反量化以及反离散余弦变化得到重建回路值,将所述重建回路值与所述最优代价值对应的预测值进行和运算,得到一像素值;将所述像素值发送至控制单元,作为下一待编码块的参考像素。
在其中一个实施例中,所述编码块类型包括:4×4编码块、8×8编码块以及16×16编码块。
一种帧内预测方法,所述方法包括:
将帧内宏块划分为多种编码块类型,其中,每种编码块类型包括一个以上的待编码块;
并行读取各编码块类型当前的待编码块;获取所述待编码块的参考像素,根据所述参考像素,获取所述待编码块的可能预测模式;
根据所述参考像素以及所述可能预测模式,得到待编码块在每种可能预测模式下的预测值,根据编码块类型中每个待编码块的预测值,得到各编码块类型对所述帧内宏块进行编码的最优代价总和;
根据所述各编码块类型的最优代价总和,得到编码器对当前帧内宏块编码的编码类型。
上述帧内预测方法,通过将一个帧内的宏块划分为多种编码块类型,每中编码块类型又包括一个以上的待编码块,对于一个编码块类型而言,其包括的所有的待编码块组成一个完整的帧内宏块。通过并行读取各编码块类型的待编码块,并根据待编码块的参考像素,选择待编码块的可能预测模式,各编码块类型的计算任务也是同时进行的,即同时进行计算,得到各编码块类型的最优代价总和,然后根据最优代价总和之前的比较,得到编码器对当前帧内宏块编码的编码类型,从而突破帧内预测并行性的限制,提高编码器帧内预测的效率。
在其中一个实施例中,还可以通过以下方式读取各编码块类型当前的待编码块:获取当前已读取的待编码块,根据所述已读取的待编码块判断可进行读取的编码块,将所述可进行读取的编码块作为待编码块。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种帧内预测装置,该装置包括:
控制单元102和计算单元104;
所述控制单元102用于将帧内宏块划分为多种编码块类型,其中,每种编码块类型包括一个以上的待编码块;并行读取各编码块类型当前的待编码块;获取所述待编码块的参考像素;根据所述参考像素,获取所述待编码块的可能预测模式;
所述计算单元104接收控制单元发送的计算任务信息;所述计算任务信息包括待编码块的编码块类型、待编码块的参考像素以及待编码块的可能预测模式;根据所述计算任务信息,得到待编码块在每种可能预测模式下的预测值,根据编码块类型中每个待编码块的预测值,得到各编码块类型对所述帧内宏块进行编码的最优代价总和;根据所述各编码块类型的最优代价总和,得到编码器对当前帧内宏块编码的编码类型。
上述帧内预测装置中,通过控制单元将一个帧内的宏块划分为多种编码块类型,每中编码块类型又包括一个以上的待编码块,对于一个编码块类型而言,其包括的所有的待编码块组成一个完整的帧内宏块。通过并行读取各编码块类型的待编码块,并根据待编码块的参考像素,选择待编码块的可能预测模式,在计算单元中,各编码块类型的计算任务也是同时进行的,即同时进行计算,得到各编码块类型的最优代价总和,然后根据最优代价总和之前的比较,得到编码器对当前帧内宏块编码的编码类型,从而突破帧内预测并行性的限制,提高编码器帧内预测的效率。
在一实施例中,控制单元包括模式划分模块,模式划分模块用于根据帧内宏块的预先设置的划分规则,将帧内宏块划分为多种编码块类型。
在本实施例中,划分规则是基于H.264协议,也就是,在进行帧内预测时,包括有4×4编码块和16×16编码块的预测,本实施例中,可以将帧内宏块划分为16个4×4编码块和1个16×16编码块,值得说明的是,这里对帧内宏块的划分并不是将帧内宏块的进行实际的划分,例如:帧内宏块为256个待预测的像素点,在进行本实施例的帧内预测时,模式划分模块将256个待预测的像素划分为16个4×4编码块或者1个16×16编码块,这两种编码块是同时存在的,因此在进行编码块的预测时,可以并行读取到各编码块类型的待编码块。
在一实施例中,编码块类型还包括8×8编码块,因此,上述模式划分模块在进行模式划分时,将帧内宏块划分为3中编码块类型,分别为4×4编码块、8×8编码块以及16×16编码块。在进行帧内预测时,若是从宏块的左上开始进行编码块的重建,那么控制单元同时读取4×4编码块左上的第一个4×4待编码块、8×8编码块左上的第一个8×8待编码块和16×16编码块。从而实现数据的并行处理。
在一实施例中,所述控制单元还包括参考像素处理模块;所述参考像素处理模块接收所述模式划分模块发送的编码块类型,用于并行读取各编码块类型当前的待编码块,并获取所述待编码块的参考像素。在H.264视频编码标准中,进行编码块像素的重建,需要用到邻块(当前编码块周围已重建的编码块),邻块包括top(上方)、left(左边)、topleft(左上)和topright(右上),获取邻块的像素作为参考像素。通过参考像素处理模块,可以根据当前待编码块在帧内宏块中的位置,获取重建所需要的参考像素。
在一实施例中,所述控制单元还包括:预选模式模块;所述预选模式模块接收所述参考像素处理模块发送的所述参考像素,用于根据待编码块在H.264视频编码标准中的预测模式,以及位于所述待编码块上方、左边、左上和/或右上的参考像素,从所述预测模式中选择所述待编码块的可能预测模式。
在本实施例中,在H.264视频编码标准中,4×4编码块和8×8编码块均有9中预测模式,16×16编码块有4种预测模式,但是由于待编码块在帧内宏块的位置不同,并不是所有待编码块都具有进行所有预测模式预测的参考像素,因此,可以根据待编码块在帧内宏块的位置,筛选出当前待编码块的可能预测模式,以图2 4×4编码块为例,图中,序号表示待编码块在帧内宏块中的位置,在进行待编码块2的预测时,由于只有上方和右上方的参考像素,因此待编码块2最多3种预测模式,因此在进行待编码块2的预测时,只需用3中预测模式对待编码块2进行预测;在进行待编码块3的预测时,由于待编码块3的参考像素均存在,因此待编码块3需要进行9种预测模式的预测。
在一实施例中,如图3所示,提供一种控制单元的示意性结构图,控制单元包括模式划分模块202、参考像素处理模块204和预选模式模块206,模式划分模块202将划分的多种编码块类型发送至参考像素处理模块204,参考像素处理模块204根据编码块类型,并行读取各编码块类型当前的待编码块,并获取待编码块的参考像素,预选模式模块206接收参考像素处理模块204发送的参考像素,然后根据待编码块的位置和参考像素,可以从预测模式中选择可能预测模式。
在一实施例中,计算单元包括:预测模块;所述预测模块用于根据所述待编码块的编码块类型,将所述待编码块划分为若干个最小处理单元,根据所述待编码块的参考像素以及所述可能预测模式,对所述各个最小处理单元进行预测值的计算,得到待编码块针对每种所述可能预测模式的预测值,根据所述预测值计算得到残差,根据所述残差得到每种可能预测模式进行编码时的SATD(Sum of Absolute Transformed Difference,变换后绝对值求和)值。
在本实施例中,将待编码块分为最小处理单元,因此不同类型的待编码块均是分为同样的最小处理单元,在进行预测值计算时,预测模块只需要接收预测模式“mode”信号和参考像素“nbr”信号,从而大幅度的提升编码器的处理能力。另外,对最小处理单元进行计算,可以得到待编码块的针对每种可能预测模式的预测值,即对每种可能预测模式均要进行预测,并求得一个预测值,通过对预测值进行计算,可以得到待编码块的残差,根据残差可以求得对应预测值的SATD值。将残差转换为SATD值,可以看做简单的时频变换。
在一实施例中,所述计算单元还包括:块模式判断模块;所述块模式判断模块根据所述预测模块发送的待编码块的SATD值,选择所述SATD值中的最小值作为待编码块的最优代价值,并根据所述最优代价值确定所述各编码块类型的待编码块的所述最优代价总和,选择所述最优代价总和最小对应编码块类型以及所述最优代价总和最小对应的所述可能预测模式作为当前帧内宏块的编码模式。
在本实施例中,由于SATD值是用来衡量视频残差信号大小,因此SATD值一定程度上可以反映生成码流的大小。因此,可以选择待编码块中最小的SATD值为最优代价值,以此可以计算得到以可能预测模式以及编码块类型进行编码的最优代价总和,选取最小的最优代价总和,以确定当前帧内宏块的编码模式,实质上,编码模式分为两个部分,其一是选择合适的编码块类型,其二是确定编码块类型中各个待编码块最优的预测模式,通过块模式判断模块可以进行这两个部分的判断。
值得说明的是,若是并行进行帧内预测,理论上是同时得到各编码块类型对应的最优代价总和。因此,对于帧图像来说,在进行并行预测时,也是同时完成一帧图像的预测的。
在一实施例中,所述计算单元还包括:残差计算模块;所述残差计算模块根据所述待编码块的所述最优代价值对应的所述残差依次进行离散余弦变化、量化、反量化以及反离散余弦变化得到重建回路值,将所述重建回路值与所述最优代价值对应的预测值进行和运算,得到一像素值;将所述像素值发送至控制单元,作为下一待编码块的参考像素。
在本实施例中,在完成当前待编码块的重建时,当前待编码块的像素可能会作为下一待编码块的参考像素,因此需要将当前待编码块的像素传回控制单元,以实现对下一待编码块的预测。
在一实施例中,如图4所示,提供一种计算单元的进行计算的示意性结构图,具体处理过程如下:
预测模块302接收控制单元发送过来的待编码块的编码块类型、待编码块的参考像素以及待编码块的可能预测模式,并开始进行待编码块针对各种可能预测模式进行预测,并计算对应的预测值和SATD值,在块模式判断模块304中选择最小的SATD值作为最优代价值,在编码块类型中所有待编码块都预测完成后,在块模式判断模块304进行还进行SATD值的累加,例如将16个4×4编码块的最优代价值进行累加,得到各编码块类型对应的最优代价总和,由于是并行处理的,同时得到3中编码块类型对应的最优代价总和,在编码块类型中有待编码块未预测完成时,残差计算模块306还需要根据待编码块的残差,依次经过DCT(Discrete Cosine Transform,离散余弦变化)、量化、反量化、IDCT(inverse DiscreteCosine Transformation,反离散余弦变化)得到的值与残差对应的预测值进行和运算,得到下一待编码块的参考像素,以便下一待编码块的完成编码,同时提高编码器的编码效率,最后块模式判断模块304还根据最优代价总和判定帧内宏块的编码模式,从而实现帧内预测。
在一实施例中,如图5所示,提供一种帧内预测装置的示意性结构图,该装置包括:
控制单元和计算单元;
控制单元包括模式划分模块401、参考像素处理单元402和预选模式模块403;计算单元包括预测模块404、块模式判断模块405和残差计算模块406。
以下以一帧内宏块为例,对本发明实施例的技术方案进行清楚的说明。
帧内宏块为16×16个像素点构成,每个像素点均需要进行帧内预测,在进行帧内预测时,模式划分模块401将16×16个像素点划分为16个4×4编码块、4个8×8编码块和1个16×16编码块三种编码块类型,参考像素处理模块402读取三种编码块形式中的待编码块,这个过程是并行处理的,以下以16个4×4编码块的预测为例进行说明,参考像素处理模块402读取图2中的编码块1,获取编码块0的像素作为编码块1的参考像素,因此只存在一种预测模式,根据该预测模式404进行预测值的计算,并进一步得到编码块1的残差和SATD值,根据该残差和预测值可以计算得到用于预测编码块2和编码块4的参考像素,对于编码块2,根据编码块0和编码块1,可以得到编码块2的参考像素,预选模式模块403读取编码块2,判断并选择编码块2对应的3种可能预测模式,预测模块404根据每种可能预测模式分别计算出编码块2的3种预测值,并进一步计算出3种预测值对应的3个残差和3个SATD值,块模式判断模块405选择3种SATD值中的最小值作为编码块2的最优代价值,残差计算模块406根据最优代价值对应的残差和预测值计算得到用于编码块3、8和9的参考像素,在完成16个待编码块的预测时,块模式判断模块405根据16个待编码块的最优代价值,进行累加得到4×4编码块的最优代价总和,由于本装置的并行性,同时也得到了8×8编码块和16×16编码块的最优代价总和,块模式判断模块405还根据4×4编码块、8×8编码块和16×16编码块的最优代价总和的大小,选择最优代价总和最小得到该帧内宏块编码模式的最优匹配结果。
在一实施例中,如图6所示,提供帧内预测装置并行处理时的示意性流程图,以下做简单说明:
控制单元对4×4编码块和8×8编码块筛选出可能预测模式,而16×16编码块不需要进行预测模式的筛选,然后计算单元进行对应预测模式的计算并选择出最优代价值对应的预测模式。
在一个实施例中,如图7所示,提供了一种帧内预测方法,该方法包括:
步骤502,将帧内宏块划分为多种编码块类型,其中,每种编码块类型包括一个以上的待编码块。
步骤504,并行读取各编码块类型当前的待编码块;获取所述待编码块的参考像素,根据所述参考像素,获取所述待编码块的可能预测模式。
步骤506,根据所述参考像素以及所述可能预测模式,得到待编码块在每种可能预测模式下的预测值,根据编码块类型中每个待编码块的预测值,得到各编码块类型对所述帧内宏块进行编码的最优代价总和。
步骤508,根据所述各编码块类型的最优代价总和,得到编码器对当前帧内宏块编码的编码类型。
上述帧内预测方法,通过将一个帧内的宏块划分为多种编码块类型,每中编码块类型又包括一个以上的待编码块,对于一个编码块类型而言,其包括的所有的待编码块组成一个完整的帧内宏块。通过并行读取各编码块类型的待编码块,并根据待编码块的参考像素,选择待编码块的可能预测模式,各编码块类型的计算任务也是同时进行的,即同时进行计算,得到各编码块类型的最优代价总和,然后根据最优代价总和之前的比较,得到编码器对当前帧内宏块编码的编码类型,从而突破帧内预测并行性的限制,提高编码器帧内预测的效率。
在一实施例中,对于步骤502,可以通过预先设置的划分规则,将帧内宏块划分为多种编码块类型,对于H.264视频编码标准,可以将帧内宏块分为4×4编码块、8×8编码块以及16×16编码块三种编码块类型。
在一实施例中,对于步骤504,可以根据待编码块在H.264视频编码标准中的预测模式,以及位于所述待编码块上方、左边、左上和/或右上的参考像素,从所述预测模式中选择所述待编码块的可能预测模式。
在一实施例中,对于步骤506,可以根据所述待编码块的编码块类型,将所述待编码块划分为若干个最小处理单元,根据所述待编码块的参考像素以及所述可能预测模式,对所述各个最小处理单元进行预测值的计算,得到待编码块针对每种所述可能预测模式的预测值,根据所述预测值计算得到残差,根据所述残差得到每种可能预测模式进行编码时的SATD值。选择所述SATD值中的最小值作为待编码块的最优代价值,并根据所述最优代价值确定所述各编码块类型的待编码块的所述最优代价总和。
在一实施例中,对于步骤508,可以选择所述最优代价总和最小对应编码块类型以及所述最优代价总和最小对应的所述可能预测模式作为当前帧内宏块的编码模式。
在一实施例中,上述方法还可以包括:根据所述待编码块的所述最优代价值对应的所述残差依次进行离散余弦变化、量化、反量化以及反离散余弦变化得到重建回路值,将所述重建回路值与所述最优代价值对应的预测值进行和运算得到一像素值;将所述像素值发送至控制单元,作为下一待编码块的参考像素。
在一实施例中,如图8所示,可以通过以下方式读取各编码块类型当前的待编码块:获取当前已读取的待编码块,根据所述已读取的待编码块判断可进行读取的编码块,将所述可进行读取的编码块作为待编码块。以图2中的帧内宏块为例,读取编码块0和编码块1后,可以同时开始读取编码块2和编码块4,预测完编码块2和编码块4,可以同时开始编码块3和编码块5的读取,依次读取完帧内所有的编码块,实质上,本实施例提供了一种多流水线读取编码块的技术方案,从而提高帧内预测的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。