CN104601988A - 视频编码器、方法和装置及其帧间模式选择方法和装置 - Google Patents

视频编码器、方法和装置及其帧间模式选择方法和装置 Download PDF

Info

Publication number
CN104601988A
CN104601988A CN201410256678.6A CN201410256678A CN104601988A CN 104601988 A CN104601988 A CN 104601988A CN 201410256678 A CN201410256678 A CN 201410256678A CN 104601988 A CN104601988 A CN 104601988A
Authority
CN
China
Prior art keywords
depth
unit
coding unit
pattern
encoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410256678.6A
Other languages
English (en)
Other versions
CN104601988B (zh
Inventor
谷沉沉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Beijing Co Ltd
Original Assignee
Tencent Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Beijing Co Ltd filed Critical Tencent Technology Beijing Co Ltd
Priority to CN201410256678.6A priority Critical patent/CN104601988B/zh
Publication of CN104601988A publication Critical patent/CN104601988A/zh
Application granted granted Critical
Publication of CN104601988B publication Critical patent/CN104601988B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种视频编码器、方法和装置及其帧间模式选择方法和装置。视频编码的帧间模式选择方法包括:在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过第一计算,并从第一编码开销中选择最小编码开销;以及在采用最小编码开销对应的模式对目标编码单元进行编码的目标参数满足预设条件的情况下,确定最小编码开销对应的模式为对目标编码单元进行编码所采用的模式。通过本发明,解决了现有技术中视频编码中进行模式选择的计算复杂度偏高的问题,进而达到了降低复杂度、提高编码速度的效果。

Description

视频编码器、方法和装置及其帧间模式选择方法和装置
技术领域
本发明涉及计算机技术与互联网领域,具体而言,涉及一种视频编码器、方法和装置及其帧间模式选择方法和装置。
背景技术
H.264/AVC视频编码标准从2003年5月发布草案以来,以其相对于以往的视频压缩标准在压缩效率以及网络适应性方面的明显优势,迅速成为视频应用领域的主流标准。然而,随着终端设备形式的多样化以及人们对多媒体体验要求的不断提高,高清晰度、高帧率、3D、移动平台已经成为视频应用的主流趋势,另一方面,传输带宽和存储空间一直是视频应用中最为关键的资源,如何在有限的空间和传输通路中获得最佳的视频体验一直是用户不懈追求的目标,现有的H.264/AVC编码标准的压缩效率仍然不能满足这些日益增长的需求,因此,在2010年1月,ITU-T VCEG(VideoCoding Experts Group)组织和ISO/IEC MPEG(Moving Picture ExpertsGroup)组织联合成立了JCT-VC(Joint Collaborative Team on VideoCoding),统一制定下一代编码标准HEVC(High Efficiency Video Coding),并于2013年1月正式发布了标准的最终版。HEVC沿用H.264/AVC的混合编码框架,同时又采用了大量的新技术,使得编码效率比现有的H.264/AVC提高一倍,即HEVC只用一半的码率就可达到与H.264/AVC相同的视频质量,因此HEVC在高清、超高清视频存储,流媒体和移动互联网视频等方面都具有极高的应用价值。
HEVC标准的其中一项最重要的新技术就是采用了更加灵活的四叉树编码结构,使用编码单元(Coding Unit,简称CU),预测单元(PredictionUnit,简称PU)和变换单元(Transform unit,简称TU))3个概念描述整个编码过程,以提高高清、超高清视频的压缩编码效率。
在HEVC中,一帧图像被分割成许多互不重叠的编码树单元(CodingTree Units,简称CTU),CTU类似于H.264/AVC中的宏块,CTU均为2Nx2N(N=2C,C为大于1的整数)的正方形像素块,CTU最大允许尺寸为64x64。每个CTU都可以按照四叉树结构递归划分为正方形的编码单元,CU是HEVC编码的基本单元,允许的最小尺寸为8x8,最大尺寸为CTU的尺寸,图1是一个64x64的CTU四叉树结构划分示例。记尺寸等于CTU的CU的深度(Depth)为0,若一个深度为n的CU可继续划分为深度等于n+1的4个子CU,每个子CU尺寸是上一深度CU的1/4。CU的预测编码类型有帧内(Intra)预测模式和帧间(Inter)预测模式两种。所有CU都是帧内预测模式的帧称为帧内预测帧(即,I帧),包含帧内预测模式和帧间预测模式的CU的帧称为帧间预测帧(即,GPB帧或B帧)。
PU是预测的基本单元,一个CU可包含一个或多个PU,PU最大尺寸是CU的尺寸,允许正方形或者长方形的分块。对于帧间预测编码的CU,有如图2a至图2h所示的8种PU划分方式,其中,图2a至图2d示出了4种对称的划分方式,依次为2Nx2N,2NxN,Nx2N,N×N,图2e至图2h示出了4种非对称的划分方式,依次为2NxnU,2NxnD,nLx2N,nRx2N。
对于帧间预测2Nx2N的PU划分方式,若残差系数和运动矢量差都为零,则称该CU是以跳过模式(即,Skip模式)编码。与H.264/AVC的跳过模式不同,HEVC的跳过模式的运动矢量获取采用了运动融合技术(Merge),即当前PU的运动信息(包括运动矢量、参考帧索引、参考帧列表)都可以通过相邻PU的运动信息构造出一个融合运动矢量候选列表,编码时只需要传送融合标记(Merge Flag)以及最佳融合运动矢量对应的索引(Merge Index),无需传送其他运动信息。若当前PU的运动矢量采用运动融合技术获取,但包含非零的残差系数,则称该PU是以融合(Merge)模式编码。
对于其余帧间预测的情况,HEVC采用的是自适应运动矢量预测技术(Adaptive Motion Vector Prediction,AMVP),即通过相邻PU的运动矢量信息构造出一个预测运动矢量候选列表,选择最佳的预测运动矢量,再通过运动估计选择最佳的运动矢量,编码时需要传输残差系数和包括运动矢量差在内的完整的运动信息。
对于帧内预测编码的CU,只有2Nx2N,NxN两种PU划分方式,且NxN的划分方式只用于对深度为允许的最大深度的CU进行。
TU是变换和量化的基本单元,一个CU可包含一个或多个TU,TU同样采用四叉树型的递归划分结构,其大小从4x4到32x32尺寸,可比PU大,但不超过CU的大小。图3为一个CU的TU划分方式的示意图。
在实际编码时,需要对每个CTU进行模式选择,选择最优的CU、PU、TU划分方式,以及预测编码类型,通常按照率失真最优的准则,对每种CU、PU划分方式,需要计算最多34个预测方向下采用不同TU划分方式的帧内预测编码开销,以及在每种运动矢量预测方式下进行运动估计选择最匹配的预测CU,再计算采用不同TU划分方式下的帧间预测编码开销,最后选择代价最小的CU、PU、TU划分方式,以及相应的预测编码类型作为当前CTU的最优编码模式。
HEVC标准采用了上述灵活CU、PU、TU划分方式,以及更多的帧内预测方向、帧间运动矢量预测方式,极大的提高了预测准确性,从而提高编码效率,但是由于在模式选择的运动估计和编码开销计算时涉及大量的绝对误差和(Sum of Absolute Difference,简称SAD)、经Hardmard变换后的绝对误差和(Sum of Absolute Transformed Difference,简称SATD)、差值的平方和(Sum of Squared Error,简称SSE)和码率估算等高复杂度的计算过程,HEVC这种更加灵活多样的划分方式和预测方式急剧增加了模式选择过程的计算复杂度。在目前HEVC参考软件实现中,模式选择的计算耗时占整个编码时间的90%以上,这种高复杂的模式选择直接导致HEVC的高编码复杂度,因此难以满足目前日益增多的视频实时通话(尤其是手持设备上的视频通话)、流媒体直播等高实时性要求的视频编码的应用,而对于点播视频的片源离线视频压缩,也需要投入大量的服务器计算资源和编码时间成本。又由于帧间预测帧的编码效率要远远高于帧内预测帧,因此在一般的视频编码中,为了保证传输的鲁棒性和码流的随机访问,通常只是1-2秒***一个I帧,即若视频的帧率为15fps,每隔15-30帧里面只有一个I帧,其余都是帧间预测帧,而在高清视频存储或流媒体点播等应用中,为了保证高压缩效率,I帧间隔会更大,最高可达100-200帧,因此帧间预测帧在视频码流中所占的比例通常很高,其中帧间模式选择也是整个视频编码耗时的瓶颈模块。
图4是现有技术中一种对一个CU进行编码时的完整(不开启任何快速模式选择算法)模式选择的流程图,如图4所示,在此种方法中,进行模式选择主要包括如下步骤S41至S45:
S41:对当前CU,判断其深度(Depth)是否超过允许的最大深度,如果超过,则流程结束,否则继续执行步骤S42。
S42:依次计算按融合2Nx2N、帧间2Nx2N、帧间NxN、帧间Nx2N、帧间2NxN、帧内2Nx2N、帧内NxN模式进行编码的代价。在允许非对称PU划分方式下,还要再依次计算按帧间2NxnU、帧间2NxnD、帧间nLx2N、帧间nRx2N四种模式进行编码的代价。其中帧间NxN和帧内NxN模式的计算只在当前CU的深度等于允许的最大深度时进行,且若帧间_4x4_enabled_flag标志为0,当CU大小为8x8时,也不计算帧间NxN模式的代价。
S43:选择步骤S42计算的模式中代价最小的编码模式作为当前CU的最优编码模式,并记录该最小代价作为当前CU的编码开销。
S44:将当前CU划分为深度为Depth+1的4个子CU,对每个子CU递归调用本流程。
S45:将4个深度为Depth+1的子CU(如图5所示)的编码开销相加,与当前CU的编码开销比较,若当前CU的编码开销较大,则当前CU的最优编码模式为划分子CU下的最优编码模式,否则当前CU的最优编码模式为不划分子CU下的最优编码模式。
上述进行模式选择的方法中,由于对每个CTU的模式选择过程,都要遍历计算按每种CU、PU、TU划分方式,以及帧内、帧间预测方式进行编码的代价,从中选择代价最小的编码模式作为当前CTU的最优编码模式,虽然这种模式选择方法得到的最优编码模式较为准确,但是计算复杂度很高。一般的离线视频压缩应用难以承受如此长时间的压缩和巨大的服务器计算资源开销,更是无法满足视频通话、流媒体直播等需要实时视频编码的应用。
图6是现有技术中另一种模式选择方法的流程图,如图6所示,在此种方法中,进行模式选择主要包括如下步骤S61至S68:
S61:对当前CU,判断其深度(Depth)是否超过允许的最大深度,如果超过,则流程结束,否则继续执行步骤S62。
S62:依次计算按帧间2Nx2N和融合2Nx2N模式进行编码的代价。
S63:判断按帧间2Nx2N和融合2Nx2N模式中代价最小的模式编码时残差系数和运动矢量差是否都为零,若是,则将当前CU编码模式预判为跳过模式,流程结束,否则继续执行步骤S64。
S64:依次计算按帧间NxN、帧间Nx2N、帧间2NxN、帧内2Nx2N、帧内NxN模式进行编码的代价。在允许非对称PU划分方式下,还要再依次计算按帧间2NxnU、帧间2NxnD、帧间nLx2N、帧间nRx2N四种模式进行编码的代价。其中帧间NxN和帧内NxN模式的计算只在当前CU的深度等于允许的最大深度时进行,且若帧间_4x4_enabled_flag标志为0,当CU大小为8x8时,也不计算帧间NxN模式的代价。
S65:选择步骤S64计算的模式中代价最小的编码模式作为当前CU的最优编码模式。
S66:若当前CU的最优编码模式为跳过模式,流程结束,否则继续执行步骤S67。
S67:将当前CU划分为深度等于Depth+1的4个子CU,对每个子CU递归调用本流程。
S68:将4个深度为Depth+1的子CU编码开销相加,与当前CU的编码开销比较,若当前CU的编码开销较大,则当前CU的最优编码模式为划分子CU下的最优编码模式,否则当前CU的最优编码模式为不划分子CU下的最优编码模式。
上述步骤S61至步骤S68所描述的选择方法,相比上述步骤S41至步骤S45所描述的选择方法而言,前者提出了一种提前决策CU划分方式的快速模式选择算法,若当前CU的最优编码模式为跳过模式,则不再对当前CU继续划分子CU,终止CU模式选择过程。并且还提出了一种提前检测跳过模式的快速模式选择算法,若按照帧间2Nx2N和融合2Nx2N模式进行编码选择出的代价最小模式,其残差系数和运动矢量差都为零,则可提前判定当前CU的最优编码模式为跳过模式,终止CU模式选择过程。
不过,这种提前检测跳过模式和对跳过模式的CU提前中止子CU划分的快速模式选择方法,对跳过模式的CU比例较大的画面较静止的视频场景,可以节省一定的计算复杂度,但对于画面有一定运动的一般视频场景,由于计算按帧间2Nx2N模式编码的代价时,要涉及复杂度很高的运动估计和编码开销计算过程,因此计算复杂度仍然很大,与实际应用的编码复杂度要求仍有很大的差距。
针对相关技术中视频编码中进行模式选择的计算复杂度偏高的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例的主要目的在于提供一种视频编码器、方法和装置及其帧间模式选择方法和装置,以解决现有技术中视频编码中进行模式选择的计算复杂度偏高的问题。
根据本发明实施例的一个方面,提供了一种视频编码的帧间模式选择方法。
根据本发明实施例的视频编码的帧间模式选择方法包括:在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过所述第一计算,并从第一编码开销中选择最小编码开销,其中,所述第一计算为按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算,所述第一编码开销为计算出的按照在先模式对所述目标编码单元进行编码所需的编码开销,所述在先模式为所述当前模式之前的模式;以及在采用所述最小编码开销对应的模式对所述目标编码单元进行编码的目标参数满足预设条件的情况下,确定所述最小编码开销对应的模式为对所述目标编码单元进行编码所采用的模式。
根据本发明实施例的又一个方面,提供了一种视频编码方法。
根据本发明实施例的视频编码方法包括:接收待编码的视频源数据;确定所述视频源数据中每一帧的编码帧类型,得到帧间预测帧和帧内预测帧;确定所述帧内预测帧的编码模式,并采用预设方法确定所述帧间预测帧的编码模式,其中,所述预设方法为本发明实施例上述内容所提供的任一种帧间模式选择方法;以及采用第一模式编码所述帧内预测帧,并采用第二模式编码所述帧间预测帧,其中,所述第一模式为确定出的所述帧内预测帧的编码模式,所述第二模式为采用所述预设方法确定出的所述帧间预测帧的编码模式。
根据本发明实施例的又一个方面,提供了一种视频编码的帧间模式选择装置。
根据本发明实施例的视频编码的帧间模式选择装置包括:选择单元,用于在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过所述第一计算,并从第一编码开销中选择最小编码开销,其中,所述第一计算为按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算,所述第一编码开销为计算出的按照在先模式对所述目标编码单元进行编码所需的编码开销,所述在先模式为所述当前模式之前的模式;以及第一确定单元,用于在采用所述最小编码开销对应的模式对所述目标编码单元进行编码的目标参数满足预设条件的情况下,确定所述最小编码开销对应的模式为对所述目标编码单元进行编码所采用的模式。
根据本发明实施例的又一个方面,提供了一种视频编码装置。
根据本发明实施例的视频编码装置包括:接收单元,接收待编码的视频源数据;帧类型选择单元,确定所述视频源数据中每一帧的编码帧类型,得到帧间预测帧和帧内预测帧;模式选择单元,确定所述帧内预测帧的编码模式,并采用预设方法确定所述帧间预测帧的编码模式,其中,所述预设方法为本发明实施例上述内容所提供的任一种帧间模式选择方法;以及编码单元,采用第一模式编码所述帧内预测帧,并采用第二模式编码所述帧间预测帧,其中,所述第一模式为确定出的所述帧内预测帧的编码模式,所述第二模式为采用所述预设方法确定出的所述帧间预测帧的编码模式。
根据本发明实施例的又一个方面,提供了一种视频编码器。
根据本发明实施例的视频编码器包括:本发明上述内容所提供的任一种视频编码的帧间模式选择装置。
在本发明实施例中,采用在按照当前模式对目标编码单元进行编码之前,先判断是否跳过计算按照当前模式对目标编码单元进行编码所需的编码开销的计算,并在判断出跳过的情况下,从计算出的编码开销中选择最小编码开销,初步确定该最小编码开销对应的模式作为目标编码单元的当前最优编码模式,进一步判断采用该最小编码开销对应的模式对目标编码单元进行编码的目标参数是否满足预设条件,若满足预设条件,则确定目标编码单元的最优编码模式为上述最小编码开销对应模式,此种采用跳过可能性较小的编码方式的模式选择方式,实现了有效降低模式选择过程的计算复杂度,提高编码速度,解决了现有技术中视频编码中进行模式选择的计算复杂度偏高的问题,进而达到了降低复杂度、提高编码速度的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的编码树单元的结构划分示例;
图2a至图2h是根据相关技术的对编码单元进行预测划分的划分方式示意图;
图3是根据相关技术的对编码单元进行变换划分的划分方式示意图;
图4是根据相关技术的一种编码单元进行模式选择的流程图;
图5是采用图4中的模式选择方法划分编码单元的示意图;
图6是根据相关技术的又一种编码单元进行模式选择的流程图;
图7是根据本发明实施例的视频编码的帧间模式选择方法的流程图;
图8a至8c是采用图7中的帧间模式选择方法获取到的相邻编码单元CU′的示意图;
图9是根据本发明优选实施例的视频编码的帧间模式选择方法的流程图;
图10是根据本发明实施例的视频编码方法的流程图;
图11是根据本发明实施例的视频编码的帧间模式选择装置的示意图;
图12是根据本发明实施例的视频编码装置的示意图;以及
图13是根据本发明实施例的视频编码器的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,可以提供了一种可以用于实施本申请装置实施例的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种视频编码的帧间模式选择方法,以下对本发明实施例所提供的视频编码的帧间模式选择方法做具体介绍:
图7是根据本发明实施例的视频编码的帧间模式选择方法的流程图,如图7所示,该方法包括如下的步骤S702和步骤S704:
S702:在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过第一计算,并从第一编码开销中选择最小编码开销,其中,第一计算为按照当前模式对目标编码单元进行编码所需的编码开销的计算,第一编码开销为计算出的按照在先模式对目标编码单元进行编码所需的编码开销,在先模式为当前模式之前的模式。
其中,在步骤S702之前,本发明实施例的视频编码的帧间模式选择方法还包括:判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算。对目标编码单元进行编码所采用的编码模式主要包括:融合2Nx2N模式(即,Merge2Nx2N模式)、帧间2Nx2N模式(即,Inter2Nx2N模式)、帧间非2Nx2N模式、和帧内模式。
具体地,帧间非2Nx2N模式主要包括帧间NxN模式(即,Inter NxN模式)、帧间Nx2N模式(即,Inter Nx2N模式)、帧间2NxN模式(即,Inter2NxN模式),在允许非对称预测单元PU划分方式下,帧间非2Nx2N模式还包括帧间nRx2N模式(即,Inter nRx2N模式)、帧间nLx2N模式(即,Inter nLx2N模式)、帧间2NxnD模式(即,Inter2NxnD模式)、帧间2NxnU模式(即,Inter2NxnU模式),对于按照帧间非2Nx2N模式对目标编码单元CU编码的编码开销的计算,则是依次计算按照帧间NxN模式、帧间Nx2N模式和帧间2NxN模式对目标编码单元CU编码的编码开销,并且在允许非对称预测单元PU划分方式下,依次计算按照帧间nRx2N模式、帧间nLx2N模式、帧间2NxnD模式、帧间2NxnU模式对目标编码单元CU编码的编码开销。
帧内模式包括帧内2Nx2N模式(即,Intra 2Nx2N模式)和帧内NxN模式(即,Intra NxN模式),对于按照帧内模式对目标编码单元CU编码的编码开销的计算,则是依次计算按照帧内2Nx2N模式和帧内NxN模式对目标编码单元CU编码的编码开销。
对于计算起始阶段,在计算出按照融合2Nx2N模式对目标编码单元CU编码的编码开销之后,判断是否跳过计算按照帧间2Nx2N模式对目标编码单元编码的编码开销,对于计算过程中,在计算出按照X模式对目标编码单元CU编码的编码开销之后,判断是否跳过计算按照X模式后的一种或几种模式对目标编码单元CU编码的编码开销。
如果在计算出按照融合2Nx2N模式对目标编码单元CU编码的编码开销之后,判断出跳过计算按照帧间2Nx2N模式对目标编码单元编码的编码开销,则最小编码开销为MAX,MAX=2a-1,a为编码开销数值类型的比特位数,比如,编码开销的数值类型为32位无符号整型,则MAX=232-1。
S704:在采用最小编码开销对应的模式对目标编码单元进行编码的目标参数满足预设条件的情况下,确定最小编码开销对应的模式为对目标编码单元进行编码所采用的模式。其中,在步骤S704之前,本发明实施例的帧间模式选择方法还包括:判断采用最小编码开销对应的模式对目标编码单元进行编码的目标参数是否满足预设条件,具体地,主要判断最小编码开销对应的模式是否为跳过模式(即,Skip模式),可以通过判断按照最小编码开销对应的模式对目标编码单元进行编码的残差系数和运动矢量差是否均为零,在二者均为零的情况下,即可确定是跳过模式,在判断出最小编码开销对应的模式不是跳过模式时,确定满足预设条件。
本发明实施例所提供的视频编码的帧间模式选择方法,采用在按照当前模式对目标编码单元进行编码之前,先判断是否跳过计算按照当前模式对目标编码单元进行编码所需的编码开销的计算,并在判断出跳过的情况下,从计算出的编码开销中选择最小编码开销,初步确定该最小编码开销对应的模式作为目标编码单元的当前最优编码模式,进一步判断采用该最小编码开销对应的模式对目标编码单元进行编码的目标参数是否满足预设条件,若满足预设条件,则确定目标编码单元的最优编码模式为上述最小编码开销对应模式,此种采用跳过可能性较小的编码方式的模式选择方式,实现了有效降低模式选择过程的计算复杂度,提高编码速度,解决了现有技术中视频编码中进行模式选择的计算复杂度偏高的问题,进而达到了降低复杂度、提高编码速度的效果。
以下具体说明判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的判断方式。
如果在先模式为融合2Nx2N模式,当前模式为帧间2Nx2N模式,可以采用以下方式一来判断是否跳过计算按照帧间2Nx2N模式对目标编码单元CU进行编码所需的编码开销。
方式一:
S101:获取对目标编码单元CU进行编码所采用的模式(以下称目标模式)、按照融合2Nx2N模式对目标编码单元CU编码的残差系数和运动矢量差,并获取编码单元CU′编码的编码开销,其中,编码单元CU′为在当前深度Depth的编码单元CUDepth之前编码并与编码单元CUDepth时域和/或空域相邻的编码单元,具体地,如图8a至8c所示,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
S102:根据目标模式、残差系数、运动矢量差和编码单元CU′编码的编码开销判断是否跳过计算按照当前模式对目标编码单元进行编码所需的编码开销。
具体地,根据目标模式、残差系数、运动矢量差和编码单元CU′编码的编码开销判断是否跳过计算按照当前模式对目标编码单元进行编码所需的编码开销主要包括如下步骤S1021至步骤S1024:
S1021:根据残差系数和运动矢量差计算第一变量的大小,具体地,首先,判断残差系数和运动矢量差是否均为零,然后,在判断出残差系数和运动矢量差均为零的情况下,确定第一变量bMergeDetectSkip=1,并确定Costx,Merge=MAX,或在判断出残差系数和运动矢量差不均为零的情况下,确定第一变量bMergeDetectSkip=0,并确定Costx,Merge为按照融合2Nx2N模式对编码单元CUDepth进行编码的编码开销,其中,MAX=2a-1,a为Costx,Merge数值类型的比特位数,比如,Costx,Merge的数值类型为32位无符号整型,则MAX=232-1。
S1022:根据目标模式计算第二变量和第三变量的大小,具体地,首先,判断目标模式是否预判为融合2Nx2N模式或帧内模式,然后,在判断出目标模式预判为融合2Nx2N模式的情况下,确定第二变量bFastDeciMerge=1,反之,确定第二变量bFastDeciMerge=0,或在判断出目标模式预判为帧内模式的情况下,确定第三变量bFastDeciIntra=1,反之,确定第三变量bFastDeciIntra=0。
S1023:根据按照融合2Nx2N模式对编码单元CUDepth进行编码的编码开销和编码单元CU′编码的编码开销计算第四变量的大小,具体地,首先,判断 min i ( Cost i , Merge ′ ′ ) ≠ MAX min i ( Cost i , Merge ′ ′ ) ≠ 0 时, Cost x , Merge > T 1 × min i ( Cost i , Merge ′ ′ ) 是否成立,或判断 min i ( Cost i , Merge ′ ′ ) = MAX min i ( Cost i , Merge ′ ′ ) = 0 时, Cost x , Merge > T 2 × min i ( Cost i ′ ′ ) 是否成立,其中,Costi,Merge为按照融合2Nx2N模式对编码单元CUi′编码的编码开销,Depthi为编码单元CUi′的深度,Costi为编码单元CUi′的编码开销,i∈[0,1,2,3,4,5],T1和T2均为预设倍数,并且T1≠T2,一般可取T1=1,T2=1.2,i=2,3,4,5,也可根据应用的计算复杂度需求,适当调整T2的取值。对于i的取值,也可在0~5中取任意多个来控制计算复杂度,复杂度越大,T值越大,反之,越小。其中,在判断出 min i ( Cost i , Merge ′ ′ ) ≠ MAX min i ( Cost i , Merge ′ ′ ) ≠ 0 时, Cost x , Merge > min i ( Cost i , Merge ′ ′ ) 成立的情况下,确定第四变量bCheckFurther=1,反之,确定第四变量bCheckFurther=0,或在判断出 min i ( Cost i , Merge ′ ′ ) = MAX min i ( Cost i , Merge ′ ′ ) = 0 时,成立的情况下,确定第四变量bCheckFurther=1,反之,确定第四变量bCheckFurther=0。
S1024:根据第一变量、第二变量、第三变量和第四变量的大小判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算,具体地,判断条件1和条件2是否成立,其中,条件1为bMergeDetectSkip=0且bFastDeciMerge=0且bFastDeciIntra=0,条件2为bMergeDetectSkip=1且bCheckFurther=1且bFastDeciIntra=0,在判断出条件1或条件2成立的情况下,确定跳过计算按照当前模式对目标编码单元进行编码所需的编码开销的计算。
其中,在判断出条件1或条件2成立的情况下,确定跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销,即,只要条件1和条件2中的任意一个条件成立,即可确定跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销。
进一步地,本发明实施例的视频编码的帧间模式选择方法还包括获取编码单元CU′的编码模式,其中,判断目标模式是否预判为融合2Nx2N模式或帧内模式包括:判断编码单元CU′中是否存在Nm个第二编码单元和NI个第三编码单元,其中,第二编码单元为按照融合2Nx2N模式进行编码的编码单元,第三编码单元为按照帧内模式编码的编码单元,Nm为第二预设参数,NI为第三预设参数;以及在判断出编码单元CU′中存在Nm个第二编码单元的情况下,确定目标编码单元的最优编码模式预判为融合2Nx2N模式,在判断出编码单元CU′中存在NI个第三编码单元的情况下,确定目标编码单元的最优编码模式预判为帧内模式。
具体地,本发明实施例的视频编码的帧间模式选择方法还包括获取编码单元CUDepth的深度和编码单元CU′的深度,其中:
判断编码单元CU′中是否存在Nm个第二编码单元和NI个第三编码单元包括:
判断M≥Nm Cost x , Merge < min j ( Cost j &prime; &prime; ) min j ( Cost j &prime; &prime; ) &NotEqual; MAX 是否成立,其中,在判断出M≥Nm Cost x , Merge < min j ( Cost j &prime; &prime; ) min j ( Cost j &prime; &prime; ) &NotEqual; MAX 成立的情况下,确定编码单元CU′中存在Nm个第二编码单元,即,M为集合[M0,M1,M2,M3,M4,M5]中任意n1(1≤n1≤6)个元素的和,如果编码单元CUi′的编码模式为融合2Nx2N模式,则Mi=1,如果编码单元CUi′的编码模式为非融合2Nx2N模式或编码单元CUi′不存在,则Mi=0,Depthj为编码单元CUj′的深度,Costj为编码单元CUj′的编码开销,j∈[0,1,2,3,4,5],Nm为第二预设参数,上述判断也即是判断与目标编码单元CU时域和/或空域相邻的编码单元CU′中,按照融合2Nx2N模式编码的编码单元CU′的数量是否达到Nm个,为平衡编码效率和编码速度,一般可取Nm=4,j=0,1,2,4。也可根据应用的计算复杂度需求,适当减小Nm的取值,并且在组成M的元素有较多个的情况下,Nm相应地增大,反之,Nm相应地减小。对于j的取值,也可在0~5中取任意多个来控制计算复杂度。
判断I≥NI是否成立,其中,在判断出I≥NI成立的情况下,确定编码单元CU′中存在NI个第三编码单元,即,I为集合[I0,I1,I2,I3,I4,I5]中任意n2(1≤n2≤6)个元素的和,如果编码单元CUi′的编码模式为帧内模式,则Ii=1,如果编码单元CUi′的编码模式为非帧内模式或编码单元CUi不存在,则Ii=0,NI为第三预设参数,即,判断与目标编码单元CU时域和/或空域相邻的编码单元CU′中,按照帧内模式编码的编码单元CU′的数量是否达到NI个,一般取NI=3,也可根据应用的计算复杂度需求,适当增大或减小NI的取值,并且在组成I的元素有较多个的情况下,NI相应地增大,反之,NI相应地减小。
如果在先模式为融合2Nx2N模式或帧间2Nx2N模式,可以采用以下方式二来判断是否跳过计算按照帧间非2Nx2N模式对目标编码单元CU编码的编码开销。
方式二:
首先,获取目标模式,其中,目标模式为对目标编码单元进行编码所采用的模式。
其次,根据目标模式计算第三变量的大小,具体地,通过判断目标模式是否预判为帧内模式,在判断出目标模式预判为帧内模式的情况下,确定第三变量bFastDeciIntra=1,反之,确定第三变量bFastDeciIntra=0,其中,判断目标模式是否预判为帧内模式的具体判断方式与上述相同,此处不再赘述。
然后,根据第三变量的大小判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算,具体地,判断bFastDeciIntra=1是否成立,其中,在判断出bFastDeciIntra=1成立的情况下,确定跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算。
进一步地,上述方式二可以进一步细化为如下步骤S301至步骤S304:
S301:获取在目标编码单元之前编码,并与目标编码单元时域和/或空域相邻的编码单元CU′、以及编码单元CU′的编码模式,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
S302:判断I≥NI是否成立,其中,即,I为集合[I0,I1,I2,I3,I4,I5]中任意n2(1≤n2≤6)个元素的和,如果编码单元CUi′的编码模式为帧内模式,则Ii=1,如果编码单元CUi′的编码模式为非帧内模式或编码单元CUi′不存在,则Ii=0,NI为第三预设参数,一般取NI=3,也可根据应用的计算复杂度需求,适当增大或减小NI的取值,并且在组成I的元素有较多个的情况下,NI相应地增大,反之,NI相应地减小;
S303:在判断出I≥NI成立的情况下,记录bFastDeciIntra=1,在判断出I≥NI不成立的情况下,记录bFastDeciIntra=0;以及
S304:判断bFastDeciIntra=1是否成立,
其中,在判断出bFastDeciIntra=1成立的情况下,确定跳过计算按照帧间非2Nx2N模式对目标编码单元编码的编码开销。
进一步地,还可以判断目标编码单元CU按照融合2Nx2N模式或帧间2Nx2N模式计算后的最小编码开销是否小于阈值T8,如果判断出目标编码单元CU按照融合2Nx2N模式和帧间2Nx2N模式计算后的最小编码开销小于阈值T8,则确定跳过计算按照帧间非2Nx2N模式对目标编码单元编码的编码开销。
如果在先模式为融合2Nx2N模式或帧间非2Nx2N模式或帧间非2Nx2N模式,可以采用以下方式三来判断是否跳过计算按照帧内模式对目标编码单元CU编码的编码开销。
方式三:
S401:获取在目标编码单元之前编码,并与目标编码单元时域和/或空域相邻的编码单元CU′、以及编码单元CU′的编码模式,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5;以及
S402:判断获取到的编码单元CU′的编码模式是否存在帧内模式,
其中,在判断出获取到的编码单元CU′的编码模式不存在帧内模式的情况下,确定跳过计算按照帧内模式对目标编码单元编码的编码开销。
进一步地,还可以判断目标编码单元CU按照融合2Nx2N模式、帧间2Nx2N模式和帧间非2Nx2N模式计算后的最小编码开销是否小于阈值T10,如果判断出目标编码单元CU按照融合2Nx2N模式、帧间2Nx2N模式和帧间非2Nx2N模式计算后的最小编码开销小于阈值T10,则确定跳过计算按照帧内模式编对目标编码单元码的编码开销。
图9是根据本发明实施例的视频编码的帧间模式选择方法的具体流程图,如图9所示,该实施例的视频编码的帧间模式选择方法主要包括如下步骤S801至步骤S817:
S801:判断目标编码单元CU的深度是否超过允许的最大深度,具体地,主要是获取到目标编码单元CU的深度,然后比较获取到的深度与允许的最大深度的大小,如果获取到的深度小于允许的最大深度,则确定目标编码单元CU的深度未超过允许的最大深度,继续执行步骤S802,反之,则流程结束。
S802:判断是否跳过处于当前深度(假设为Depth)的目标编码单元CUDepth进行编码所需的编码开销的计算,如果判断出跳过的话,则确定目标编码单元CU的最小编码开销为MAX,并跳转至步骤S816。
S803:计算按照融合2Nx2N模式对目标编码单元CU编码的编码开销。
S804:判断是否跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销,具体判断方式与上述相同,此处不再赘述。在判断出跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销的情况下,跳转至步骤S806,反之,执行步骤S805。
S805:计算目标编码单元CU按照帧间2Nx2N模式编码的编码开销。
S806:从计算出的编码开销中选择最小编码开销,并确定最小编码开销对应的模式作为目标编码单元CU的最优模式。
S807:判断最优模式是否为跳过模式,具体地,主要是判断按照最小编码开销对应的模式对目标编码单元CU编码后的残差系数和运动矢量差是否均为零,如果均为零的话,确定最优模式为跳过模式,流程结束,反之,则不是,需执行步骤S808,以进一步对目标编码单元的帧间模式做选择。
S808:判断是否终止处于当前深度的目标编码单元CU模式的计算,如果判断结果为是的话,则跳转至步骤S815,反之,继续执行步骤S809。
S809:判断是否跳过计算按照帧间非2Nx2N模式对目标编码单元CU编码的编码开销,具体判断方式与上述相同,此处不再赘述。如果判断结果为是的话,则跳转至步骤S811,反之,继续执行步骤S810。
S810:计算按照帧间非2Nx2N模式对目标编码单元CU编码的编码开销,具体地,依次计算按帧间NxN、帧间Nx2N、帧间2NxN模式对目标编码单元CU进行编码的代价。并且,在允许非对称PU划分方式下,还要再依次计算按帧间2NxnU,帧间2NxnD,帧间nLx2N,帧间nRx2N四种模式进行编码的代价。其中,帧间NxN模式的计算只在目标编码单元CU的深度等于允许的最大深度的情况下进行,且若帧间_4x4_enabled_flag标志为0,当目标编码单元CU大小为8x8时,也不计算帧间NxN模式的代价。
S811:判断是否跳过计算按照帧内模式对目标编码单元CU编码的编码开销,具体判断方式与上述相同,此处不再赘述。如果判断结果为是的话,则跳转至步骤S813,反之,继续执行步骤S812。
S812:计算按照帧内模式对目标编码单元CU编码的编码开销,具体地,依次计算按帧内2Nx2N、帧内NxN模式对目标编码单元CU进行编码的代价。其中帧内NxN模式的编码只在目标编码单元CU的深度等于允许的最大深度的情况下进行。
S813:从计算出的编码开销中选择最小编码开销,并确定最小编码开销对应的模式作为目标编码单元CU的最优模式。
S814:判断最优模式是否为跳过模式,具体地,主要是判断按照最小编码开销对应的模式对目标编码单元CU编码后的残差系数和运动矢量差是否均为零,如果均为零的话,确定最优模式为跳过模式,流程结束,反之,则不是,需执行步骤S815,以进一步对目标编码单元的帧间模式做选择。
S815:判断目标编码单元CU是否满足终止划分的条件,其中,如果判断结果为是的话,则结束流程确定步骤S813中确定出的最优模式为目标编码单元CU的最优模式,并且,目标编码单元CU按照当前深度编码;反之,执行步骤S816。
S816:将目标编码单元CU划分为4个深度为Depth+1的目标编码子单元,然后,递归调用上述流程,计算4个目标编码子单元的编码开销之和,并计算4个目标编码子单元的最优模式,即,如果判断出跳过对编码单元CUDepth进行编码所需的编码开销的计算,则将编码单元CUDepth划分为4个深度为Depth+1的编码单元CUDepth+1,并确定每个编码单元CUDepth+1均为目标编码单元递归调用上述流程,计算4个编码单元CUDepth+1的编码开销之和,并计算4个编码单元CUDepth+1的最优模式。
S817:比较步骤S814中确定的最小编码开销和4个目标编码子单元的编码开销之和的大小,在比较出最小编码开销大于编码开销之和的情况下,确定目标编码单元的最优模式为划分后的多个目标编码子单元的最优模式;在比较出最小编码开销小于编码开销之和的情况下,确定目标编码单元的最优模式为最小编码开销对应的模式。即,比较第一编码开销和第二编码开销的大小,其中,第一编码开销为编码单元CUDepth的最小编码开销,第二编码开销为多个编码单元CUDepth+1的最小编码开销之和,编码单元CUDepth的最小编码开销与深度Depth-1的目标编码单元的最小编码开销相同;以及在比较出第一编码开销小于第二编码开销的情况下,确定采用第一编码开销对应的模式对当前深度Depth的目标编码单元进行编码,或在比较出第一编码开销大于第二编码开销的情况下,确定采用第三编码开销对应的模式对每个深度Depth+1的目标编码单元进行编码,其中,第三编码开销为每个深度Depth+1的目标编码单元的最小编码开销。
具体地,步骤S815主要通过以下方式四来判断目标编码单元CU是否满足终止划分的条件。
方式四:
S901:获取目标编码单元的深度和按照融合2Nx2N模式对目标编码单元编码的编码开销;
S902:获取在目标编码单元之前编码,并与目标编码单元时域和/或空域相邻的编码单元CU′、编码单元CU′的编码开销、编码单元CU′的编码模式、以及编码单元CU′的深度,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
S903:判断S≥Ns Cost x , Merge < min j ( Cost j , Merge &prime; &prime; ) min j ( Cost j , Merge &prime; &prime; ) &NotEqual; MAX 是否成立,其中,Costx,Merge为按照融合2Nx2N模式对目标编码单元编码的编码开销,MAX=2a-1,a为Costx,Merge数值类型的比特位数,比如,Costx,Merge的数值类型为32位无符号整型,则MAX=232-1,即,S为集合[S0,S1,S2,S3,S4,S5]中任意n3(1≤n3≤6)个元素的和, Depth为目标编码单元的深度,Depthi为编码单元CUi′的深度,Depthj为编码单元CUj′的深度,Costj,Merge为按照融合2Nx2N模式对编码单元CUj′编码的编码开销,j∈[0,1,2,3,4,5],Ns为第四预设参数,一般地,取Ns=4,n3=4,j=0,1,2,3,4,5,也可根据应用的计算复杂度需求,适当增大或减小Ns的取值,并且在组成S的元素有较多个的情况下,Ns相应地增大,反之,Ns相应地减小;
S905:在判断出S≥Ns Cost x , Merge < min j ( Cost j , Merge &prime; &prime; ) min j ( Cost j , Merge &prime; &prime; ) &NotEqual; MAX 不成立的情况下,划分目标编码单元,得到多个目标编码子单元,反之,则终止划分目标编码单元CU。
步骤S808则主要通过判断bMergeDetectSkip=1或bFastDeciMerge=1是否成立,来判断是否终止处于当前深度的目标编码单元CU模式的计算,其中,在判断出bMergeDetectSkip=1或bFastDeciMerge=1成立的情况下,跳转至步骤S815,或在判断出bMergeDetectSkip=1或bFastDeciMerge=1不成立的情况下,执行步骤S809。
进一步地,还可以通过判断步骤S806中确定出的最小代价是否小于阈值T7,来判断是否终止处于当前深度的目标编码单元CU模式的计算,其中,如果判断出步骤S806中确定出的最小代价小于阈值T7,则跳转至步骤S815,反之,继续执行步骤S809。在本发明实施例中,T8>T7。
步骤S802中主要通过以下方式五,来判断是否跳过处于当前深度的目标编码单元CU模式的计算。
方式五:
S1001:获取目标编码单元的深度、在目标编码单元之前编码并与目标编码单元时域和/或空域相邻的编码单元CU′、以及编码单元CU′的深度,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5;以及
S1002:判断C≥Nc是否成立,其中,即,C为集合[C0,C1,C2,C3,C4,C5]中任意n4(1≤n4≤6)个元素的和,Nc为第一预设参数,也即是判断与目标编码单元CU时域和/或空域相邻的编码单元CU′中,深度大于目标编码单元CU深度的编码单元CU′的个数是否达到Nc个,一般取Nc=6,n4=6,也可根据应用的计算复杂度需求,适当增大或减小Nc的取值,并且在组成C的元素有较多个的情况下,Nc相应地增大,反之,Nc相应地减小,其中,在判断出C≥Nc成立的情况下,跳转至步骤S816,或在判断出C≥Nc不成立的情况下,执行步骤S803。
该实施例所提供的视频编码的帧间模式选择方法,通过利用编码模式和编码开销在时域和空域上的相关性,在实现跳过或提前终止可能性较小的编码模式编码和代价计算的基础上,还实现了跳过或提前终止编码单元划分方式的编码和代价计算,达到了进一步降低模式选择过程的计算复杂度,提高编码速度。在HEVC参考软件上的实验表明,对HEVC标准测试序列采用本发明实施例所提供的帧间模式选择方法,可使编码速度平均提高50%左右,编码效率损失控制在1%以内。
实施例2
本发明实施例还提供了一种视频编码方法,以下对本发明实施例所提供的视频编码方法做具体介绍:
图10是根据本发明实施例的视频编码方法的流程图,如图10所示,该视频编码方法主要包括如下步骤S1102至步骤S1108:
S1102:接收待编码的视频源数据。
S1104:确定视频源数据中每一帧的编码帧类型,即区分出帧间预测帧和帧内预测帧。
S1106:确定帧内预测帧的编码模式,并采用预设方法确定帧间预测帧的编码模式,其中,预设方法为本发明实施例上述内容所提供的任一种帧间模式选择方法。
S1108:采用第一模式编码帧内预测帧,并采用第二模式编码帧间预测帧,其中,第一模式为确定出的帧内预测帧的编码模式,第二模式为采用预设方法确定出的帧间预测帧的编码模式。
本发明实施例所提供的视频编码方法,通过采用本发明实施例上述内容所提供的帧间模式选择方法,实现了有效降低视频编码过程中对模式选择进行计算的计算复杂度,进而达到了提高编码速度的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述视频编码的帧间模式选择方法的视频编码的帧间模式选择装置,该帧间模式选择装置主要用于执行本发明实施例上述内容所提供的帧间模式选择方法,以下对本发明实施例所提供的视频编码的帧间模式选择装置做具体介绍:
图11是根据本发明实施例的视频编码的帧间模式选择装置的示意图,如图11所示,该帧间模式选择装置主要包括选择单元20和第一确定单元40,其中:
选择单元20用于在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过第一计算,并从第一编码开销中选择最小编码开销,其中,第一计算为按照当前模式对目标编码单元进行编码所需的编码开销的计算,第一编码开销为计算出的按照在先模式对目标编码单元进行编码所需的编码开销,在先模式为当前模式之前的模式。
其中,本发明实施例的视频编码的帧间模式选择装置还包括判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的单元。对目标编码单元进行编码所采用的编码模式主要包括:融合2Nx2N模式(即,Merge 2Nx2N模式)、帧间2Nx2N模式(即,Inter 2Nx2N模式)、帧间非2Nx2N模式、和帧内模式。
具体地,帧间非2Nx2N模式主要包括帧间NxN模式(即,Inter NxN模式)、帧间Nx2N模式(即,Inter Nx2N模式)、帧间2NxN模式(即,Inter 2NxN模式),在允许非对称预测单元PU划分方式下,帧间非2Nx2N模式还包括帧间nRx2N模式(即,Inter nRx2N模式)、帧间nLx2N模式(即,Inter nLx2N模式)、帧间2NxnD模式(即,Inter 2NxnD模式)、帧间2NxnU模式(即,Inter2NxnU模式),对于按照帧间非2Nx2N模式对目标编码单元CU编码的编码开销的计算,则是依次计算按照帧间NxN模式、帧间Nx2N模式和帧间2NxN模式对目标编码单元CU编码的编码开销,并且在允许非对称预测单元PU划分方式下,依次计算按照帧间nRx2N模式、帧间nLx2N模式、帧间2NxnD模式、帧间2NxnU模式对目标编码单元CU编码的编码开销。
帧内模式包括帧内2Nx2N模式(即,Intra 2Nx2N模式)和帧内NxN模式(即,Intra NxN模式),对于按照帧内模式对目标编码单元CU编码的编码开销的计算,则是依次计算按照帧内2Nx2N模式和帧内NxN模式对目标编码单元CU编码的编码开销。
对于计算起始阶段,在计算出按照融合2Nx2N模式对目标编码单元CU编码的编码开销之后,判断是否跳过计算按照帧间2Nx2N模式对目标编码单元编码的编码开销,对于计算过程中,在计算出按照X模式对目标编码单元CU编码的编码开销之后,判断是否跳过计算按照X模式后的一种或几种模式对目标编码单元CU编码的编码开销。
如果在计算出按照融合2Nx2N模式对目标编码单元CU编码的编码开销之后,判断出跳过计算按照帧间2Nx2N模式对目标编码单元编码的编码开销,则最小编码开销为MAX,MAX=2a-1,a为编码开销数值类型的比特位数,比如,编码开销的数值类型为32位无符号整型,则MAX=232-1。
第一确定单元40用于在采用最小编码开销对应的模式对目标编码单元进行编码的目标参数满足预设条件的情况下,确定最小编码开销对应的模式为对目标编码单元进行编码所采用的模式。其中,本发明实施例的帧间模式选择装置还包括判断采用最小编码开销对应的模式对目标编码单元进行编码的目标参数是否满足预设条件的单元,具体地,主要判断最小编码开销对应的模式是否为跳过模式(即,Skip模式),可以通过判断按照最小编码开销对应的模式对目标编码单元进行编码的残差系数和运动矢量差是否均为零,在二者均为零的情况下,即可确定是跳过模式,在判断出最小编码开销对应的模式不是跳过模式时,确定满足预设条件。
本发明实施例所提供的视频编码的帧间模式选择装置,采用在按照当前模式对目标编码单元进行编码之前,先判断是否跳过计算按照当前模式对目标编码单元进行编码所需的编码开销的计算,并在判断出跳过的情况下,从计算出的编码开销中选择最小编码开销,初步确定该最小编码开销对应的模式作为目标编码单元的当前最优编码模式,进一步判断采用该最小编码开销对应的模式对目标编码单元进行编码的目标参数是否满足预设条件,若满足预设条件,则确定目标编码单元的最优编码模式为上述最小编码开销对应模式,此种采用跳过可能性较小的编码方式的模式选择方式,实现了有效降低模式选择过程的计算复杂度,提高编码速度,解决了现有技术中视频编码中进行模式选择的计算复杂度偏高的问题,进而达到了降低复杂度、提高编码速度的效果。
以下具体说明帧间模式选择装置执行判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的结构组成。
如果在先模式为融合2Nx2N模式,当前模式为帧间2Nx2N模式,帧间模式选择装置可以采用以下结构一中的各个单元来判断是否跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销。
结构一:帧间模式选择装置主要包括第一获取单元和第二判断单元,具体地:
第二获取单元主要用于获取对目标编码单元CU进行编码所采用的模式(以下称目标模式)、按照融合2Nx2N模式对目标编码单元CU编码的残差系数和运动矢量差,并获取编码单元CU′编码的编码开销,其中,编码单元CU′为在当前深度Depth的编码单元CUDepth之前编码并与编码单元CUDepth时域和/或空域相邻的编码单元,具体地,如图8a至8c所示,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
第二判断单元主要用于根据目标模式、残差系数、运动矢量差和编码单元CU′编码的编码开销判断是否跳过计算按照当前模式对目标编码单元进行编码所需的编码开销。
进一步地,第二判断单元主要包括第一计算模块、第二计算模块、第三计算模块和第一判断模块,其中,
第一计算模块用于根据残差系数和运动矢量差计算第一变量的大小,具体地,第一计算模块主要包括第一判断子模块和第一确定子模块,其中,第一判断子模块用于判断残差系数和运动矢量差是否均为零,第一确定子模块用于在第一判断子模块判断出残差系数和运动矢量差均为零的情况下,确定第一变量bMergeDetectSkip=1,并确定Costx,Merge=MAX,或在判断出残差系数和运动矢量差不均为零的情况下,确定第一变量bMergeDetectSkip=0,并确定Costx,Merge为按照融合2Nx2N模式对编码单元CUDepth进行编码的编码开销,其中,MAX=2a-1,a为Costx,Merge数值类型的比特位数,比如,Costx,Merge的数值类型为32位无符号整型,则MAX=232-1。
第二计算模块用于根据目标模式计算第二变量和第三变量的大小,具体地,第二计算模块主要包括第二判断子模块和第二确定子模块,其中,第二判断子模块用于判断目标模式是否预判为融合2Nx2N模式或帧内模式,第二确定子模块用于在第二判断子模块判断出目标模式预判为融合2Nx2N模式的情况下,确定第二变量bFastDeciMerge=1,反之,确定第二变量bFastDeciMerge=0,或在判断出目标模式预判为帧内模式的情况下,确定第三变量bFastDeciIntra=1,反之,确定第三变量bFastDeciIntra=0。
第三计算模块用于根据按照融合2Nx2N模式对编码单元CUDepth进行编码的编码开销和编码单元CU′编码的编码开销计算第四变量的大小,具体地,第三计算模块主要包括第三判断子模块和第三确定子模块,其中,第三判断子模块用于判断 min i ( Cost i , Merge &prime; &prime; ) &NotEqual; MAX min i ( Cost i , Merge &prime; &prime; ) &NotEqual; 0 时, Cost x , Merge > T 1 &times; min i ( Cost i , Merge &prime; &prime; ) 是否成立,或判断 min i ( Cost i , Merge &prime; &prime; ) = MAX min i ( Cost i , Merge &prime; &prime; ) = 0 时, Cost x , Merge > T 2 &times; min i ( Cost i &prime; &prime; ) 是否成立,其中,Costi,Merge为按照融合2Nx2N模式对编码单元CUi′编码的编码开销,Depthi为编码单元CUi′的深度,Costi为编码单元CUi′的编码开销,i∈[0,1,2,3,4,5],T1和T2均为预设倍数,并且T1≠T2,一般可取T1=1,T2=1.2,i=2,3,4,5,也可根据应用的计算复杂度需求,适当调整T2的取值。对于i的取值,也可在0~5中取任意多个来控制计算复杂度,复杂度越大,T值越大,反之,越小。第三确定子模块用于在第三判断子模块判断出 min i ( Cost i , Merge &prime; &prime; ) &NotEqual; MAX min i ( Cost i , Merge &prime; &prime; ) &NotEqual; 0 时, Cost x , Merge > min i ( Cost i , Merge &prime; &prime; ) 成立的情况下,确定第四变量bCheckFurther=1,反之,确定第四变量bCheckFurther=0,或在判断出 min i ( Cost i , Merge &prime; &prime; ) = MAX min i ( Cost i , Merge &prime; &prime; ) = 0 时,成立的情况下,确定第四变量bCheckFurther=1,反之,确定第四变量bCheckFurther=0。
第一判断模块用于根据第一变量、第二变量、第三变量和第四变量的大小判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算,具体地,第一判断模块主要包括第四判断子模块和第四确定子模块,其中,第四判断子模块用于判断条件1和条件2是否成立,其中,条件1为bMergeDetectSkip=0且bFastDeciMerge=0且bFastDeciIntra=0,条件2为bMergeDetectSkip=1且bCheckFurther=1且bFastDeciIntra=0,第四确定子模块用于在第四判断子模块判断出条件1或条件2成立的情况下,确定跳过计算按照当前模式对目标编码单元进行编码所需的编码开销的计算。
其中,在判断出条件1或条件2成立的情况下,确定跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销,即,只要条件1和条件2中的任意一个条件成立,即可确定跳过计算按照帧间2Nx2N模式对目标编码单元CU编码的编码开销。
进一步地,本发明实施例的视频编码的帧间模式选择装置还包括获取编码单元CU′的编码模式的单元,其中,第二判断子模块主要包括一级判断子模块一和一级确定子模块一,该一级判断子模块一用于判断编码单元CU′中是否存在Nm个第二编码单元和NI个第三编码单元,其中,第二编码单元为按照融合2Nx2N模式进行编码的编码单元,第三编码单元为按照帧内模式编码的编码单元,Nm为第二预设参数,NI为第三预设参数;一级确定子模块一用于在一级判断子模块一判断出编码单元CU′中存在Nm个第二编码单元的情况下,确定目标编码单元的最优编码模式预判为融合2Nx2N模式,在一级判断子模块一判断出编码单元CU′中存在NI个第三编码单元的情况下,确定目标编码单元的最优编码模式预判为帧内模式。
具体地,本发明实施例的视频编码的帧间模式选择装置还包括用于获取编码单元CUDepth的深度和编码单元CU′的深度的单元,其中:
一级判断子模块一包括二级判断子模块一和二级判断子模块二,具体地:
二级判断子模块一用于判断M≥Nm Cost x , Merge < min j ( Cost j &prime; &prime; ) min j ( Cost j &prime; &prime; ) &NotEqual; MAX 是否成立,其中,在判断出M≥Nm Cost x , Merge < min j ( Cost j &prime; &prime; ) min j ( Cost j &prime; &prime; ) &NotEqual; MAX 成立的情况下,确定编码单元CU′中存在Nm个第二编码单元,即,M为集合[M0,M1,M2,M3,M4,M5]中任意n1(1≤n1≤6)个元素的和,如果编码单元CUi′的编码模式为融合2Nx2N模式,则Mi=1,如果编码单元CUi′的编码模式为非融合2Nx2N模式或编码单元CUi′不存在,则Mi=0,Depthj为编码单元CUj′的深度,Costj为编码单元CUj′的编码开销,j∈[0,1,2,3,4,5],Nm为第二预设参数,上述判断也即是判断与目标编码单元CU时域和/或空域相邻的编码单元CU′中,按照融合2Nx2N模式编码的编码单元CU′的数量是否达到Nm个,为平衡编码效率和编码速度,一般可取Nm=4,j=0,1,2,4。也可根据应用的计算复杂度需求,适当减小Nm的取值,并且在组成M的元素有较多个的情况下,Nm相应地增大,反之,Nm相应地减小。对于j的取值,也可在0~5中取任意多个来控制计算复杂度。
二级判断子模块二用于判断I≥NI是否成立,其中,在判断出I≥NI成立的情况下,确定编码单元CU′中存在NI个第三编码单元,即,I为集合[I0,I1,I2,I3,I4,I5]中任意n2(1≤n2≤6)个元素的和,如果编码单元CUi′的编码模式为帧内模式,则Ii=1,如果编码单元CUi′的编码模式为非帧内模式或编码单元CUi不存在,则Ii=0,NI为第三预设参数,即,判断与目标编码单元CU时域和/或空域相邻的编码单元CU′中,按照帧内模式编码的编码单元CU′的数量是否达到NI个,一般取NI=3,也可根据应用的计算复杂度需求,适当增大或减小NI的取值,并且在组成I的元素有较多个的情况下,NI相应地增大,反之,NI相应地减小。
如果在先模式为融合2Nx2N模式或帧间2Nx2N模式,帧间模式选择装置可以采用以下结构二中的各个单元来判断是否跳过计算按照帧间非2Nx2N模式对目标编码单元CU编码的编码开销。
结构二:帧间模式选择装置主要包括第二获取单元、计算单元和第二判断单元,具体地:
第二获取单元用于获取目标模式,其中,目标模式为对目标编码单元进行编码所采用的模式。
计算单元用于根据目标模式计算第三变量的大小,具体地,计算单元主要包括第二判断模块和确定模块,其中,第二判断模块用于判断目标模式是否预判为帧内模式,确定模块用于在第二判断模块判断出目标模式预判为帧内模式的情况下,确定第三变量bFastDeciIntra=1,反之,确定第三变量bFastDeciIntra=0。
第三判断单元用于根据第三变量的大小判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算,具体地,第三判断单元主要包括第三判断模块,该第三判断模块主要用于判断bFastDeciIntra=1是否成立,其中,在判断出bFastDeciIntra=1成立的情况下,确定跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算。
其中,主要通过以下步骤S301至步骤S304来判断目标模式是否预判为帧内模式:
S301:获取在目标编码单元之前编码,并与目标编码单元时域和/或空域相邻的编码单元CU′、以及编码单元CU′的编码模式,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
S302:判断I≥NI是否成立,其中,即,I为集合[I0,I1,I2,I3,I4,I5]中任意n2(1≤n2≤6)个元素的和,如果编码单元CUi′的编码模式为帧内模式,则Ii=1,如果编码单元CUi′的编码模式为非帧内模式或编码单元CUi′不存在,则Ii=0,NI为第三预设参数,一般取NI=3,也可根据应用的计算复杂度需求,适当增大或减小NI的取值,并且在组成I的元素有较多个的情况下,NI相应地增大,反之,NI相应地减小;
S303:在判断出I≥NI成立的情况下,确定目标模式预判为帧内模式,记录bFastDeciIntra=1,在判断出I≥NI不成立的情况下,确定目标模式不能预判为帧内模式,记录bFastDeciIntra=0。
进一步地,还可以判断目标编码单元CU按照融合2Nx2N模式或帧间2Nx2N模式计算后的最小编码开销是否小于阈值T8,如果判断出目标编码单元CU按照融合2Nx2N模式和帧间2Nx2N模式计算后的最小编码开销小于阈值T8,则确定跳过计算按照帧间非2Nx2N模式对目标编码单元编码的编码开销。
如果在先模式为融合2Nx2N模式或帧间非2Nx2N模式或帧间非2Nx2N模式,帧间模式选择装置可以采用以下结构三中的各个单元来判断是否跳过计算按照帧内模式对目标编码单元CU编码的编码开销。
结构三:帧间模式选择装置主要包括第三获取单元和第四判断单元,具体地:
第三获取单元用于获取在目标编码单元之前编码,并与目标编码单元时域和/或空域相邻的编码单元CU′、以及编码单元CU′的编码模式,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
第四判断单元用于判断获取到的编码单元CU′的编码模式是否存在帧内模式,
其中,在判断出获取到的编码单元CU′的编码模式不存在帧内模式的情况下,确定跳过计算按照帧内模式对目标编码单元编码的编码开销。
进一步地,还可以判断目标编码单元CU按照融合2Nx2N模式、帧间2Nx2N模式和帧间非2Nx2N模式计算后的最小编码开销是否小于阈值T10,如果判断出目标编码单元CU按照融合2Nx2N模式、帧间2Nx2N模式和帧间非2Nx2N模式计算后的最小编码开销小于阈值T10,则确定跳过计算按照帧内模式编对目标编码单元码的编码开销。
进一步地,本发明实施例的视频编码的帧间模式选择装置还包括被重复调用的第一判断单元和第二确定单元,在判断是否跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算之前,帧间模式选择装置重复调用第一判断单元和第二确定单元执行如下功能,直至所述目标编码单元的深度达到预设最大深度,其中,当前深度Depth的初始值为1:
第一判断单元判断是否跳过对当前深度Depth的编码单元CUDepth进行编码所需的编码开销的计算。具体地,第一判断单元主要包括第一获取子单元和第一判断子单元,该第一获取子单元用于获取目标编码单元的深度、在目标编码单元之前编码并与目标编码单元时域和/或空域相邻的编码单元CU′、以及编码单元CU′的深度,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5;第一判断子单元用于判断编码单元CU′中是否存在Nc个第一编码单元,第一编码单元的深度大于当前深度Depth,也即是判断与目标编码单元CU时域和/或空域相邻的编码单元CU′中,深度大于目标编码单元CU深度的编码单元CU′的个数是否达到Nc个,具体地,主要通过第一判断子单元包括包括的第一判断模块来判断C≥Nc是否成立,其中,即,C为集合[C0,C1,C2,C3,C4,C5]中任意n4(1≤n4≤6)个元素的和,Nc为第一预设参数,一般取Nc=6,n4=6,也可根据应用的计算复杂度需求,适当增大或减小Nc的取值,并且在组成C的元素有较多个的情况下,Nc相应地增大,反之,Nc相应地减小。在判断出C≥Nc成立的情况下,确定编码单元CU′中是否存在Nc个第一编码单元,即,确定跳过对深度为当前深度的编码单元CUDepth进行编码所需的编码开销的计算。
第二确定单元在第一判断单元判断出跳过第二计算的情况下,划分编码单元CUDepth为多个深度Depth+1的编码单元CUDepth+1,并确定每个编码单元CUDepth+1均为目标编码单元,或在判断出不跳过第二计算的情况下,确定编码单元CUDepth为目标编码单元,其中,第二计算为对编码单元CUDepth进行编码所需的编码开销的计算。
进一步地,视频编码的帧间模式选择装置还包括比较单元和第三确定单元,在判断出跳过上述第二计算,将编码单元CUDepth划分为多个深度Depth+1的编码单元CUDepth+1,并确定每个编码单元CUDepth+1均为目标编码单元的情况下,比较单元用于比较第一编码开销和第二编码开销的大小,其中,第一编码开销为编码单元CUDepth的最小编码开销,第二编码开销为多个编码单元CUDepth+1的最小编码开销之和,编码单元CUDepth的最小编码开销与深度Depth-1的目标编码单元的最小编码开销相同;第三确定单元用于在比较单元比较出第一编码开销小于第二编码开销的情况下,确定采用第一编码开销对应的模式对当前深度Depth的目标编码单元进行编码,或在比较单元比较出第一编码开销大于第二编码开销的情况下,确定采用第三编码开销对应的模式对每个深度Depth+1的目标编码单元进行编码,其中,第三编码开销为每个深度Depth+1的目标编码单元的最小编码开销。
本发明实施例所提供的视频编码的帧间模式选择装置还包括第五判断单元和第六判断单元,对于在先模式为融合2Nx2N模式,当前模式为帧间2Nx2N模式的情况,如果判断出目标参数不满足预设条件(即,残差系数和运动矢量差不均为零),第五判断单元判断是否终止对处于当前深度的目标编码单元CU进行编码所需的编码开销的计算,假设对当前深度Depth的目标编码单元进行编码所需的编码开销的计算为第三计算,则在第五判断单元判断出终止第三计算的情况下,第六判断单元判断是否终止划分编码单元CUDepth,其中,在判断出不终止第三计算的情况下,进一步判断是否跳过按照帧间非2Nx2N模式对目标编码单元进行编码所需的编码开销的计算。
具体地,第六判断单元主要通过以下结构四来判断是否终止划分编码单元CUDepth
结构四:第六判断单元主要包括第三获取子单元、第三判断子单元和第四判断子单元,其中:
第三获取子单元用于获取目标编码单元的深度和按照融合2Nx2N模式对目标编码单元编码的编码开销,并获取在目标编码单元之前编码,并与目标编码单元时域和/或空域相邻的编码单元CU′、编码单元CU′的编码开销、编码单元CU′的编码模式、以及编码单元CU′的深度,具体地,在目标编码单元CU之前编码的编码单元一般包括:与目标编码单元CU时域相邻的两个编码单元,分别记为编码单元CU′0和编码单元CU1′,与目标编码单元CU空域相邻并位于目标编码单元CU左边位置、左上位置、上边位置和右上位置处的四个编码单元,分别记为编码单元CU′2、编码单元CU′3、编码单元CU′4和编码单元CU′5
第三判断子单元用于判断编码单元CU′中是否存在Ns个第四编码单元,其中,第四编码单元的深度小于或等于编码单元CUDepth的深度;
第四判断子单元用于判断按照融合2Nx2N对编码单元CUDepth进行编码的编码开销是否小于按照融合2Nx2N对编码单元CU′进行编码的最小编码开销。
其中,在判断出编码单元CU′中存在Ns个第四编码单元,并且按照融合2Nx2N对编码单元CUDepth进行编码的编码开销小于按照融合2Nx2N对编码单元CU′进行编码的最小编码开销的情况下,确定终止划分编码单元CUDepth
进一步地,第三判断子单元和第四判断子单元主要包括用于判断S≥Ns Cost x , Merge < min j ( Cost j , Merge &prime; &prime; ) min j ( Cost j , Merge &prime; &prime; ) &NotEqual; MAX 是否成立的模块,其中,Costx,Merge为按照融合2Nx2N模式对目标编码单元编码的编码开销,MAX=2a-1,a为Costx,Merge数值类型的比特位数,比如,Costx,Merge的数值类型为32位无符号整型,则MAX=232-1,即,S为集合[S0,S1,S2,S3,S4,S5]中任意n3(1≤n3≤6)个元素的和, Depth为目标编码单元的深度,Depthi为编码单元CUi′的深度,Depthj为编码单元CUj′的深度,Costj,Merge为按照融合2Nx2N模式对编码单元CUj′编码的编码开销,j∈[0,1,2,3,4,5],Ns为第四预设参数,一般地,取Ns=4,n3=4,j=0,1,2,3,4,5,也可根据应用的计算复杂度需求,适当增大或减小Ns的取值,并且在组成S的元素有较多个的情况下,Ns相应地增大,反之,Ns相应地减小,在判断出S≥Ns Cost x , Merge < min j ( Cost j , Merge &prime; &prime; ) min j ( Cost j , Merge &prime; &prime; ) &NotEqual; MAX 不成立的情况下,划分目标编码单元,得到多个目标编码子单元,反之,则终止划分目标编码单元CU。
第五判断单元则主要通过以下结构五,来判断是否跳过处于当前深度的目标编码单元CU模式的计算。
结构五:第五判断单元包括第二获取子单元和第二判断子单元,其中:
第二获取子单元用于获取对目标编码单元CU进行编码所采用的模式(以下称目标模式)、按照融合2Nx2N模式对目标编码单元CU编码的残差系数和运动矢量差。
第二判断子单元则根据目标模式、残差系数和运动矢量差判断是否终止第三计算,其中,第二判断子单元主要包括用于根据残差系数和运动矢量差计算第一变量的大小的模块,根据目标模式计算第二变量的大小的模块,根据第一变量和第二变量判断是否终止第三计算的模块。
具体地,根据残差系数和运动矢量差计算第一变量的大小具体为:判断残差系数和运动矢量差是否均为零,在判断出残差系数和运动矢量差均为零的情况下,确定bMergeDetectSkip=1,或在判断出残差系数和运动矢量差不均为零的情况下,确定bMergeDetectSkip=0,其中,bMergeDetectSkip为第一变量。目标模式计算第二变量的大小具体为:判断目标模式是否预判为融合2Nx2N模式,在判断出目标模式预判为融合2Nx2N模式的情况下,确定bFastDeciMerge=1,反之,确定bFastDeciMerge=0,其中,bFastDeciMerge为第二变量。根据第一变量和第二变量判断是否终止第三计算具体为:判断bMergeDetectSkip=1或bFastDeciMerge=1是否成立,其中,在判断出bMergeDetectSkip=1或bFastDeciMerge=1成立的情况下,确定终止第三计算。
通过视频编码的帧间模式选择装置还包括的各个单元、子单元等,实现了利用编码模式和编码开销在时域和空域上的相关性,在实现跳过或提前终止可能性较小的编码模式编码和代价计算的基础上,还实现了跳过或提前终止编码单元划分方式的编码和代价计算,达到了进一步降低模式选择过程的计算复杂度,提高编码速度。在HEVC参考软件上的实验表明,对HEVC标准测试序列采用本发明实施例所提供的帧间模式选择方法,可使编码速度平均提高50%左右,编码效率损失控制在1%以内。
实施例4
本发明实施例还提供了一种视频编码装置,该视频编码装置主要用于执行本发明实施例上述内容所提供的视频编码方法,以下对本发明实施例所提供的视频编码装置做具体介绍:
图12是根据本发明实施例的视频编码装置的示意图,如图12所示,该视频编码方法主要包括如下接收单元100、帧类型选择单元200、模式选择单元300和编码单元400,其中:
接收单元100用于接收待编码的视频源数据。
帧类型选择单元200用于确定视频源数据中每一帧的编码帧类型,即区分出帧间预测帧和帧内预测帧。
模式选择单元300用于确定帧内预测帧的编码模式,并采用预设方法确定帧间预测帧的编码模式,其中,预设方法为本发明实施例上述内容所提供的任一种帧间模式选择方法。
编码单元400用于采用第一模式编码帧内预测帧,并采用第二模式编码帧间预测帧,其中,第一模式为确定出的帧内预测帧的编码模式,第二模式为采用预设方法确定出的帧间预测帧的编码模式。
本发明实施例所提供的视频编码装置,通过采用本发明实施例上述内容所提供的帧间模式选择方法,实现了有效降低视频编码过程中对模式选择进行计算的计算复杂度,进而达到了提高编码速度的效果。
实施例5
本发明实施例还提供了一种视频编码器,以下对本发明实施例所提供的视频编码方法做具体介绍:
图13是根据本发明实施例的视频编码器的示意图,如图13所示,该视频编码器主要包括帧类型选择部、帧间模式选择计算部、帧内模式选择计算部、码流组织部和帧间模式选择装置,其中:
输入的待编码视频源数据通过帧类型选择部,如果被确定为I帧,则视频编码器通过帧内模式选择计算部对I帧进行帧内模式选择计算,并记录最优编码模式和相应的编码后数据,再经码流组织部写入码流数据并输出;如果被确定为GPB帧或B帧,则帧间模式选择装置和帧间模式选择计算部共同作用,对GPB帧或B帧进行帧间模式选择计算,并记录最优编码模式和相应的编码后数据,再经码流组织部写入码流数据并输出,其中,进行帧间模式选择计算的具体方法,已在本发明实施例上述内容中做了介绍,此处不再赘述。
本发明实施例所提供的视频编码器,通过采用本发明实施例上述内容所提供的帧间模式选择装置,实现了有效降低视频编码过程中对模式选择进行计算的计算复杂度,进而达到了提高编码速度的效果
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (29)

1.一种视频编码的帧间模式选择方法,其特征在于,包括:
在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过第一计算,并从第一编码开销中选择最小编码开销,其中,所述第一计算为按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算,所述第一编码开销为计算出的按照在先模式对所述目标编码单元进行编码所需的编码开销,所述在先模式为所述当前模式之前的模式;以及
在采用所述最小编码开销对应的模式对所述目标编码单元进行编码的目标参数满足预设条件的情况下,确定所述最小编码开销对应的模式为对所述目标编码单元进行编码所采用的模式。
2.根据权利要求1所述的帧间模式选择方法,其特征在于,在所述跳过第一计算之前,所述帧间模式选择方法还包括重复执行以下步骤,直至所述目标编码单元的深度达到预设最大深度,其中,当前深度Depth的初始值为1:
判断是否跳过对当前深度Depth的编码单元CUDepth进行编码所需的编码开销的计算;以及
在判断出跳过第二计算的情况下,划分所述编码单元CUDepth为多个深度Depth+1的编码单元CUDepth+1,并确定每个所述编码单元CUDepth+1均为所述目标编码单元,或在判断出不跳过所述第二计算的情况下,确定所述编码单元CUDepth为所述目标编码单元,其中,所述第二计算为对所述编码单元CUDepth进行编码所需的编码开销的计算。
3.根据权利要求2所述的帧间模式选择方法,其特征在于,在判断出跳过所述第二计算,划分所述编码单元CUDepth为多个深度Depth+1的编码单元CUDepth+1,并确定每个所述编码单元CUDepth+1均为所述目标编码单元的情况下,所述帧间模式选择方法还包括:
比较第一编码开销和第二编码开销的大小,其中,所述第一编码开销为所述编码单元CUDepth的最小编码开销,所述第二编码开销为多个所述编码单元CUDepth+1的最小编码开销之和,所述编码单元CUDepth的最小编码开销与深度Depth-1的所述目标编码单元的最小编码开销相同;以及
在比较出所述第一编码开销小于所述第二编码开销的情况下,确定采用所述第一编码开销对应的模式对当前深度Depth的所述目标编码单元进行编码,或在比较出所述第一编码开销大于所述第二编码开销的情况下,确定采用第三编码开销对应的模式对每个深度Depth+1的所述目标编码单元进行编码,其中,所述第三编码开销为每个深度Depth+1的所述目标编码单元的最小编码开销。
4.根据权利要求2所述的帧间模式选择方法,其特征在于,判断是否跳过对当前深度Depth的编码单元CUDepth进行编码所需的编码开销的计算包括:
获取在所述编码单元CUDepth之前进行编码并与所述编码单元CUDepth时域和/或空域相邻的编码单元CU′、以及所述编码单元CU′的深度;以及
判断所述编码单元CU′中是否存在Nc个第一编码单元,其中,Nc为第一预设参数,所述第一编码单元的深度大于当前深度Depth,
其中,在判断出所述编码单元CU′中存在Nc个所述第一编码单元的情况下,确定跳过对所述编码单元CUDepth进行编码所需的编码开销的计算。
5.根据权利要求2至4中任一项所述的帧间模式选择方法,其特征在于,所述在先模式为融合2Nx2N模式,所述当前模式为帧间2Nx2N模式,所述帧间模式选择方法还包括采用以下方式判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算:
获取目标模式、按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的残差系数和运动矢量差,并获取编码单元CU′编码的编码开销,其中,所述编码单元CU′为在所述编码单元CUDepth之前编码并与所述编码单元CUDepth时域和/或空域相邻的编码单元,所述目标模式为对所述目标编码单元进行编码所采用的模式;以及
根据所述目标模式、所述残差系数、所述运动矢量差和所述编码单元CU′编码的编码开销判断是否跳过计算按照所述当前模式对所述目标编码单元进行编码所需的编码开销。
6.根据权利要求5所述的帧间模式选择方法,其特征在于,根据所述目标模式、所述残差系数、所述运动矢量差和所述编码单元CU′编码的编码开销判断是否跳过计算按照所述当前模式对所述目标编码单元进行编码所需的编码开销包括:
根据所述残差系数和所述运动矢量差计算第一变量的大小;
根据所述目标模式计算第二变量和第三变量的大小;
根据按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的编码开销和所述编码单元CU′编码的编码开销计算第四变量的大小;以及
根据所述第一变量、所述第二变量、所述第三变量和所述第四变量的大小判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
7.根据权利要求6所述的帧间模式选择方法,其特征在于:
根据所述残差系数和所述运动矢量差计算第一变量的大小包括:判断所述残差系数和所述运动矢量差是否均为零;以及在判断出所述残差系数和所述运动矢量差均为零的情况下,确定bMergeDetectSkip=1,并确定Costx,Merge=MAX,或在判断出所述残差系数和所述运动矢量差不均为零的情况下,确定bMergeDetectSkip=0,并确定Costx,Merge为按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的编码开销,其中,MAX=2a-1,a为Costx,Merge数值类型的比特位数,bMergeDetectSkip为所述第一变量,
根据所述目标模式计算第二变量和第三变量的大小包括:判断所述目标模式是否预判为所述融合2Nx2N模式或帧内模式;以及在判断出所述目标模式预判为所述融合2Nx2N模式的情况下,确定bFastDeciMerge=1,反之,确定bFastDeciMerge=0,或在判断出所述目标模式预判为所述帧内模式的情况下,确定bFastDeciIntra=1,反之,确定bFastDeciIntra=0,其中,bFastDeciMerge为所述第二变量,bFastDeciIntra为所述第三变量,
根据按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的编码开销和所述编码单元CU′编码的编码开销计算第四变量的大小包括:判断 min i ( Cost i , Merge &prime; &prime; ) &NotEqual; MAX min i ( Cost i , Merge &prime; &prime; ) &NotEqual; 0 时, Cost x , Merge > T 1 &times; min i ( Cost i , Merge &prime; &prime; ) 是否成立,或判断 min i ( Cost i , Merge &prime; &prime; ) = MAX min i ( Cost i , Merge &prime; &prime; ) = 0 时, Cost x , Merge > T 2 &times; min i ( Cost i &prime; &prime; ) 是否成立,其中,Costi,Merge为按照所述融合2Nx2N模式对编码单元CUi′编码的编码开销,Depthi为所述编码单元CUi′的深度,Costi为所述编码单元CUi′的编码开销,i∈[0,1,2,3,4,5],T1和T2均为预设倍数,并且T1≠T2,其中,在判断出 min i ( Cost i , Merge &prime; &prime; ) &NotEqual; MAX min i ( Cost i , Merge &prime; &prime; ) &NotEqual; 0 时, Cost x , Merge > min i ( Cost i , Merge &prime; &prime; ) 成立的情况下,确定bCheckFurther=1,反之,确定bCheckFurther=0,或在判断出 min i ( Cost i , Merge &prime; &prime; ) = MAX min i ( Cost i , Merge &prime; &prime; ) = 0 时,成立的情况下,确定bCheckFurther=1,反之,确定bCheckFurther=0,bCheckFurther为所述第四变量,
根据所述第一变量、所述第二变量、所述第三变量和所述第四变量的大小判断是否跳过计算按照第二模式对所述目标编码单元进行编码所需的编码开销包括:判断条件1和条件2是否成立,其中,所述条件1为bMergeDetectSkip=0且bFastDeciMerge=0且bFastDeciIntra=0,所述条件2为bMergeDetectSkip=1且bCheckFurther=1且bFastDeciIntra=0;以及在判断出所述条件1或所述条件2成立的情况下,确定跳过计算按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
8.根据权利要求2至4中任一项所述的帧间模式选择方法,其特征在于,所述当前模式为帧间非2Nx2N模式,所述帧间模式选择方法还包括采用以下方式判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算包括:
获取目标模式,其中,所述目标模式为对所述目标编码单元进行编码所采用的模式;
根据所述目标模式计算第三变量的大小;以及
根据所述第三变量的大小判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
9.根据权利要求8所述的帧间模式选择方法,其特征在于,
根据所述目标模式计算第三变量的大小包括:判断所述目标模式是否预判为帧内模式;以及在判断出所述目标模式预判为所述帧内模式的情况下,确定bFastDeciIntra=1,反之,确定bFastDeciIntra=0,其中,bFastDeciIntra为所述第三变量,
根据所述第三变量的大小判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算包括:判断bFastDeciIntra=1是否成立,其中,在判断出bFastDeciIntra=1成立的情况下,确定跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
10.根据权利要求2至4中任一项所述的帧间模式选择方法,其特征在于,所述当前模式为帧内模式,所述帧间模式选择方法还包括采用以下方式判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算包括:
获取在所述编码单元CUDepth之前编码,并与所述编码单元CUDepth时域和/或空域相邻的编码单元CU′、以及所述编码单元CU′的编码模式;以及
判断所述编码单元CU′的编码模式中是否存在帧内模式,
其中,在判断出所述编码单元CU′的编码模式中不存在所述帧内模式的情况下,确定跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
11.根据权利要求5所述的帧间模式选择方法,其特征在于,在判断出所述目标参数不满足所述预设条件的情况下,所述帧间模式选择方法还包括:
判断是否终止第三计算,其中,所述第三计算为对当前深度Depth的所述目标编码单元进行编码所需的编码开销的计算;以及
在判断出终止所述第三计算的情况下,判断是否终止划分所述编码单元CUDepth
其中,在判断出不终止所述第三计算的情况下,判断是否跳过按照所述帧间2Nx2N模式对所述目标编码单元进行编码所需的编码开销的计算。
12.根据权利要求11所述的帧间模式选择方法,其特征在于,判断是否终止第三计算包括:
获取所述目标模式、按照融合2Nx2N模式对当前深度Depth的所述目标编码单元进行编码的残差系数和运动矢量差;以及
根据所述目标模式、所述残差系数和所述运动矢量差判断是否终止所述第三计算。
13.根据权利要求11或12所述的帧间模式选择方法,其特征在于,判断是否终止划分所述编码单元CUDepth包括:
获取所述编码单元CUDepth的深度、按照融合2Nx2N对所述编码单元CUDepth进行编码的编码开销,并获取在所述编码单元CUDepth之前编码,并与所述编码单元CUDepth时域和/或空域相邻的编码单元CU′、所述编码单元CU′的编码模式和深度;
判断所述编码单元CU′中是否存在Ns个第四编码单元,其中,所述第四编码单元的深度小于或等于所述编码单元CUDepth的深度,Ns为第四预设参数;以及
判断按照融合2Nx2N对所述编码单元CUDepth进行编码的编码开销是否小于按照融合2Nx2N对所述编码单元CU′进行编码的最小编码开销,
其中,在判断出所述编码单元CU′中存在Ns个所述第四编码单元,并且按照融合2Nx2N对所述编码单元CUDepth进行编码的编码开销小于按照融合2Nx2N对所述编码单元CU′进行编码的最小编码开销的情况下,确定终止划分所述编码单元CUDepth
14.一种视频编码方法,其特征在于,包括:
接收待编码的视频源数据;
确定所述视频源数据中每一帧的编码帧类型,得到帧间预测帧和帧内预测帧;
确定所述帧内预测帧的编码模式,并采用预设方法确定所述帧间预测帧的编码模式,其中,所述预设方法为权利要求1至13中任一项所述的帧间模式选择方法;以及
采用第一模式编码所述帧内预测帧,并采用第二模式编码所述帧间预测帧,其中,所述第一模式为确定出的所述帧内预测帧的编码模式,所述第二模式为采用所述预设方法确定出的所述帧间预测帧的编码模式。
15.一种视频编码的帧间模式选择装置,其特征在于,包括:
选择单元,用于在跳过按照当前模式对目标编码单元进行编码所需的编码开销的计算的情况下,跳过第一计算,并从第一编码开销中选择最小编码开销,其中,所述第一计算为按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算,所述第一编码开销为计算出的按照在先模式对所述目标编码单元进行编码所需的编码开销,所述在先模式为所述当前模式之前的模式;以及
第一确定单元,用于在采用所述最小编码开销对应的模式对所述目标编码单元进行编码的目标参数满足预设条件的情况下,确定所述最小编码开销对应的模式为对所述目标编码单元进行编码所采用的模式。
16.根据权利要求15所述的帧间模式选择装置,其特征在于,所述帧间模式选择装置还包括如下被重复调用的单元,直至所述目标编码单元的深度达到预设最大深度,其中,当前深度Depth的初始值为1:
第一判断单元,用于判断是否跳过对当前深度Depth的编码单元CUDepth进行编码所需的编码开销的计算;以及
第二确定单元,用于在所述第一判断单元判断出跳过第二计算的情况下,划分所述编码单元CUDepth为多个深度Depth+1的编码单元CUDepth+1,并确定每个所述编码单元CUDepth+1均为所述目标编码单元,或在判断出不跳过所述第二计算的情况下,确定所述编码单元CUDepth为所述目标编码单元,其中,所述第二计算为对所述编码单元CUDepth进行编码所需的编码开销的计算。
17.根据权利要求16所述的帧间模式选择装置,其特征在于,所述帧间模式选择装置还包括:
比较单元,用于比较第一编码开销和第二编码开销的大小,其中,所述第一编码开销为所述编码单元CUDepth的最小编码开销,所述第二编码开销为多个所述编码单元CUDepth+1的最小编码开销之和,所述编码单元CUDepth的最小编码开销与深度Depth-1的所述目标编码单元的最小编码开销相同;以及
第三确定单元,用于在所述比较单元比较出所述第一编码开销小于所述第二编码开销的情况下,确定采用所述第一编码开销对应的模式对当前深度Depth的所述目标编码单元进行编码,或在比较出所述第一编码开销大于所述第二编码开销的情况下,确定采用第三编码开销对应的模式对每个深度Depth+1的所述目标编码单元进行编码,其中,所述第三编码开销为每个深度Depth+1的所述目标编码单元的最小编码开销。
18.根据权利要求16所述的帧间模式选择装置,其特征在于,所述第一判断单元包括:
第一获取子单元,用于获取在所述编码单元CUDepth之前进行编码并与所述编码单元CUDepth时域和/或空域相邻的编码单元CU′、以及所述编码单元CU′的深度;以及
第一判断子单元,用于判断所述编码单元CU′中是否存在Nc个第一编码单元,其中,Nc为第一预设参数,所述第一编码单元的深度大于当前深度Depth,
其中,在判断出所述编码单元CU′中存在Nc个所述第一编码单元的情况下,确定跳过对所述编码单元CUDepth进行编码所需的编码开销的计算。
19.根据权利要求16至18中任一项所述的帧间模式选择装置,其特征在于,所述在先模式为融合2Nx2N模式,所述当前模式为帧间2Nx2N模式,所述帧间模式选择装置还包括:
第一获取单元,用于获取目标模式、按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的残差系数和运动矢量差,并获取编码单元CU′编码的编码开销,其中,所述编码单元CU′为在所述编码单元CUDepth之前编码并与所述编码单元CUDepth时域和/或空域相邻的编码单元,所述目标模式为对所述目标编码单元进行编码所采用的模式;以及
第二判断单元,用于根据所述目标模式、所述残差系数、所述运动矢量差和所述编码单元CU′编码的编码开销判断是否跳过计算按照第二模式对所述目标编码单元进行编码所需的编码开销。
20.根据权利要求19所述的帧间模式选择装置,其特征在于,所述第二判断单元包括:
第一计算模块,用于根据所述残差系数和所述运动矢量差计算第一变量的大小;
第二计算模块,用于根据所述目标模式计算第二变量和第三变量的大小;
第三计算模块,用于根据按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的编码开销和所述编码单元CU′编码的编码开销计算第四变量的大小;以及
第一判断模块,用于根据所述第一变量、所述第二变量、所述第三变量和所述第四变量的大小判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
21.根据权利要求20所述的帧间模式选择装置,其特征在于:
所述第一计算模块包括:第一判断子模块,用于判断所述残差系数和所述运动矢量差是否均为零;以及第一确定子模块,用于在判断出所述残差系数和所述运动矢量差均为零的情况下,确定bMergeDetectSkip=1,并确定Costx,Merge=MAX,或在判断出所述残差系数和所述运动矢量差不均为零的情况下,确定bMergeDetectSkip=0,并确定Costx,Merge为按照所述融合2Nx2N模式对所述编码单元CUDepth进行编码的编码开销,其中,MAX=2a-1,a为Costx,Merge数值类型的比特位数,bMergeDetectSkip为所述第一变量,
所述第二计算模块包括:第二判断子模块,用于判断所述目标模式是否预判为所述融合2Nx2N模式或帧内模式;以及第二确定子模块,用于在判断出所述目标模式预判为所述融合2Nx2N模式的情况下,确定bFastDeciMerge=1,反之,确定bFastDeciMerge=0,或在判断出所述目标模式预判为所述帧内模式的情况下,确定bFastDeciIntra=1,反之,确定bFastDeciIntra=0,其中,bFastDeciMerge为所述第二变量,bFastDeciIntra为所述第三变量,
所述第三计算模块包括:第三判断子模块,用于判断 min i ( Cost i , Merge &prime; &prime; ) &NotEqual; MAX min i ( Cost i , Merge &prime; &prime; ) &NotEqual; 0 时, Cost x , Merge > T 1 &times; min i ( Cost i , Merge &prime; &prime; ) 是否成立,或判断 min i ( Cost i , Merge &prime; &prime; ) = MAX min i ( Cost i , Merge &prime; &prime; ) = 0 时, Cost x , Merge > T 2 &times; min i ( Cost i &prime; &prime; ) 是否成立,其中,Costi,Merge为按照所述融合2Nx2N模式对编码单元CUi′编码的编码开销,Depthi为所述编码单元CUi′的深度,Costi为所述编码单元CUi′的编码开销,i∈[0,1,2,3,4,5],T1和T2均为预设倍数,并且T1≠T2,其中,在判断出 min i ( Cost i , Merge &prime; &prime; ) &NotEqual; MAX min i ( Cost i , Merge &prime; &prime; ) &NotEqual; 0 时, Cost x , Merge > min i ( Cost i , Merge &prime; &prime; ) 成立的情况下,确定bCheckFurther=1,反之,确定bCheckFurther=0,或在判断出 min i ( Cost i , Merge &prime; &prime; ) = MAX min i ( Cost i , Merge &prime; &prime; ) = 0 时,成立的情况下,确定bCheckFurther=1,反之,确定bCheckFurther=0,bCheckFurther为所述第四变量,
所述第一判断模块包括:第四判断子模块,用于判断条件1和条件2是否成立,其中,所述条件1为bMergeDetectSkip=0且bFastDeciMerge=0且bFastDeciIntra=0,所述条件2为bMergeDetectSkip=1且bCheckFurther=1且bFastDeciIntra=0;以及第四确定子模块,用于在所述第四判断子模块判断出所述条件1或所述条件2成立的情况下,确定跳过计算按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
22.根据权利要求16至18中任一项所述的帧间模式选择装置,其特征在于,所述当前模式为帧间非2Nx2N模式,所述帧间模式选择装置还包括:
第二获取单元,用于获取目标模式,其中,所述目标模式为对所述目标编码单元进行编码所采用的模式;
计算单元,用于根据所述目标模式计算第三变量的大小;以及
第三判断单元,用于根据所述第三变量的大小判断是否跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
23.根据权利要求22所述的帧间模式选择装置,其特征在于,
所述计算单元包括:第二判断模块,用于判断所述目标模式是否预判为帧内模式;以及确定模块,用于在所述第二判断模块判断出所述目标模式预判为所述帧内模式的情况下,确定bFastDeciIntra=1,反之,确定bFastDeciIntra=0,其中,bFastDeciIntra为所述第三变量,
所述第三判断单元包括:第三判断模块,用于判断bFastDeciIntra=1是否成立,其中,在所述第三判断模块判断出bFastDeciIntra=1成立的情况下,确定跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
24.根据权利要求16至18中任一项所述的帧间模式选择装置,其特征在于,所述当前模式为帧内模式,所述帧间模式选择装置还包括:
第三获取单元,用于获取在所述编码单元CUDepth之前编码,并与所述编码单元CUDepth时域和/或空域相邻的编码单元CU′、以及所述编码单元CU′的编码模式;以及
第四判断单元,用于判断所述编码单元CU′的编码模式中是否存在帧内模式,
其中,在判断出所述编码单元CU′的编码模式中不存在所述帧内模式的情况下,确定跳过按照所述当前模式对所述目标编码单元进行编码所需的编码开销的计算。
25.根据权利要求19所述的帧间模式选择装置,其特征在于,所述帧间模式选择装置还包括:
第五判断单元,用于判断是否终止第三计算,其中,所述第三计算为对当前深度Depth的所述目标编码单元进行编码所需的编码开销的计算;以及
第六判断单元,用于在判断出终止所述第三计算的情况下,判断是否终止划分所述编码单元CUDepth
其中,在判断出不终止所述第三计算的情况下,判断是否跳过按照所述帧间2Nx2N模式对所述目标编码单元进行编码所需的编码开销的计算。
26.根据权利要求25所述的帧间模式选择装置,其特征在于,所述第五判断单元包括:
第二获取子单元,用于获取所述目标模式、按照融合2Nx2N模式对当前深度Depth的所述目标编码单元进行编码的残差系数和运动矢量差;以及
第二判断子单元,用于根据所述目标模式、所述残差系数和所述运动矢量差判断是否终止所述第三计算。
27.根据权利要求25或26所述的帧间模式选择装置,其特征在于,所述第六判断单元包括:
第三获取子单元,用于获取所述编码单元CUDepth的深度、按照融合2Nx2N对所述编码单元CUDepth进行编码的编码开销,并获取在所述编码单元CUDepth之前编码,并与所述编码单元CUDepth时域和/或空域相邻的编码单元CU′、所述编码单元CU′的编码模式和深度;
第三判断子单元,用于判断所述编码单元CU′中是否存在Ns个第四编码单元,其中,所述第四编码单元的深度小于或等于所述编码单元CUDepth的深度,Ns为第四预设参数;以及
第四判断子单元,用于判断按照融合2Nx2N对所述编码单元CUDepth进行编码的编码开销是否小于按照融合2Nx2N对所述编码单元CU′进行编码的最小编码开销,
其中,在判断出所述编码单元CU′中存在Ns个所述第四编码单元,并且按照融合2Nx2N对所述编码单元CUDepth进行编码的编码开销小于按照融合2Nx2N对所述编码单元CU′进行编码的最小编码开销的情况下,确定终止划分所述编码单元CUDepth
28.一种视频编码装置,其特征在于,包括:
接收单元,接收待编码的视频源数据;
帧类型选择单元,确定所述视频源数据中每一帧的编码帧类型,得到帧间预测帧和帧内预测帧;
模式选择单元,确定所述帧内预测帧的编码模式,并采用预设方法确定所述帧间预测帧的编码模式,其中,所述预设方法为权利要求1至13中任一项所述的帧间模式选择方法;以及
编码单元,采用第一模式编码所述帧内预测帧,并采用第二模式编码所述帧间预测帧,其中,所述第一模式为确定出的所述帧内预测帧的编码模式,所述第二模式为采用所述预设方法确定出的所述帧间预测帧的编码模式。
29.一种视频编码器,其特征在于,包括:权利要求15至27中任一项所述的视频编码的帧间模式选择装置。
CN201410256678.6A 2014-06-10 2014-06-10 视频编码器、方法和装置及其帧间模式选择方法和装置 Active CN104601988B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410256678.6A CN104601988B (zh) 2014-06-10 2014-06-10 视频编码器、方法和装置及其帧间模式选择方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410256678.6A CN104601988B (zh) 2014-06-10 2014-06-10 视频编码器、方法和装置及其帧间模式选择方法和装置

Publications (2)

Publication Number Publication Date
CN104601988A true CN104601988A (zh) 2015-05-06
CN104601988B CN104601988B (zh) 2018-02-02

Family

ID=53127444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410256678.6A Active CN104601988B (zh) 2014-06-10 2014-06-10 视频编码器、方法和装置及其帧间模式选择方法和装置

Country Status (1)

Country Link
CN (1) CN104601988B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107222742A (zh) * 2017-07-05 2017-09-29 中南大学 基于时空域相关性的视频编码Merge模式快速选择方法及装置
CN107396102A (zh) * 2017-08-30 2017-11-24 中南大学 一种基于Merge技术运动矢量的帧间模式快速选择方法及装置
CN108206954A (zh) * 2016-12-16 2018-06-26 北京金山云网络技术有限公司 一种视频编码方法及装置
WO2018192574A1 (en) * 2017-04-21 2018-10-25 Mediatek Inc. Sub-prediction unit temporal motion vector prediction (sub-pu tmvp) for video coding
CN110446052A (zh) * 2019-09-03 2019-11-12 南华大学 一种3d-hevc帧内深度图快速cu深度选择方法
WO2020007304A1 (zh) * 2018-07-02 2020-01-09 华为技术有限公司 一种运动矢量预测方法、装置与编解码器
CN113286140A (zh) * 2021-05-11 2021-08-20 北京飞讯数码科技有限公司 一种视频编解码测试方法、装置及存储介质
CN113596442A (zh) * 2021-07-07 2021-11-02 北京百度网讯科技有限公司 视频处理方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1589022A (zh) * 2004-08-26 2005-03-02 中芯联合(北京)微电子有限公司 多模式运动估计中由朝向树决定的宏块分割模式选择方法
US20060013299A1 (en) * 2004-07-07 2006-01-19 Sony Corporation Coding apparatus, coding method, coding method program, and recording medium recording the coding method program
CN101179728A (zh) * 2007-12-13 2008-05-14 北京中星微电子有限公司 帧间编码模式确定方法及装置
US20090016439A1 (en) * 2006-02-08 2009-01-15 Thomas Licensing Derivation of Frame/Field Encoding Mode for a Pair of Video Macroblocks
US20090110077A1 (en) * 2006-05-24 2009-04-30 Hiroshi Amano Image coding device, image coding method, and image coding integrated circuit
CN101668207A (zh) * 2009-09-25 2010-03-10 天津大学 Mpeg到avs视频编码转换***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060013299A1 (en) * 2004-07-07 2006-01-19 Sony Corporation Coding apparatus, coding method, coding method program, and recording medium recording the coding method program
CN1589022A (zh) * 2004-08-26 2005-03-02 中芯联合(北京)微电子有限公司 多模式运动估计中由朝向树决定的宏块分割模式选择方法
US20090016439A1 (en) * 2006-02-08 2009-01-15 Thomas Licensing Derivation of Frame/Field Encoding Mode for a Pair of Video Macroblocks
CN101379830A (zh) * 2006-02-08 2009-03-04 汤姆森许可贸易公司 用于视频宏块对的帧/场编码模式的推导
US20090110077A1 (en) * 2006-05-24 2009-04-30 Hiroshi Amano Image coding device, image coding method, and image coding integrated circuit
CN101179728A (zh) * 2007-12-13 2008-05-14 北京中星微电子有限公司 帧间编码模式确定方法及装置
CN101668207A (zh) * 2009-09-25 2010-03-10 天津大学 Mpeg到avs视频编码转换***

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108206954A (zh) * 2016-12-16 2018-06-26 北京金山云网络技术有限公司 一种视频编码方法及装置
WO2018192574A1 (en) * 2017-04-21 2018-10-25 Mediatek Inc. Sub-prediction unit temporal motion vector prediction (sub-pu tmvp) for video coding
CN107222742B (zh) * 2017-07-05 2019-07-26 中南大学 基于时空域相关性的视频编码Merge模式快速选择方法及装置
CN107222742A (zh) * 2017-07-05 2017-09-29 中南大学 基于时空域相关性的视频编码Merge模式快速选择方法及装置
CN107396102A (zh) * 2017-08-30 2017-11-24 中南大学 一种基于Merge技术运动矢量的帧间模式快速选择方法及装置
CN107396102B (zh) * 2017-08-30 2019-10-08 中南大学 一种基于Merge技术运动矢量的帧间模式快速选择方法及装置
WO2020007304A1 (zh) * 2018-07-02 2020-01-09 华为技术有限公司 一种运动矢量预测方法、装置与编解码器
CN110446052A (zh) * 2019-09-03 2019-11-12 南华大学 一种3d-hevc帧内深度图快速cu深度选择方法
CN110446052B (zh) * 2019-09-03 2021-02-12 南华大学 一种3d-hevc帧内深度图快速cu深度选择方法
CN113286140A (zh) * 2021-05-11 2021-08-20 北京飞讯数码科技有限公司 一种视频编解码测试方法、装置及存储介质
CN113286140B (zh) * 2021-05-11 2022-09-02 北京飞讯数码科技有限公司 一种视频编解码测试方法、装置及存储介质
CN113596442A (zh) * 2021-07-07 2021-11-02 北京百度网讯科技有限公司 视频处理方法、装置、电子设备及存储介质
CN113596442B (zh) * 2021-07-07 2022-10-04 北京百度网讯科技有限公司 视频处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN104601988B (zh) 2018-02-02

Similar Documents

Publication Publication Date Title
CN104602017A (zh) 视频编码器、方法和装置及其帧间模式选择方法和装置
CN104601988A (zh) 视频编码器、方法和装置及其帧间模式选择方法和装置
US11968398B2 (en) Method and device for processing video signal by using reduced secondary transform
CN104768011B (zh) 图像编解码方法和相关装置
CN106537915B (zh) 用于视频编码的运动向量导出的方法
US20230239496A1 (en) Method and apparatus for encoding/decoding image
JP2021528896A (ja) 部分的コスト計算
Zhang et al. Low complexity HEVC INTRA coding for high-quality mobile video communication
CN103907346A (zh) 用于三维视频编码与高效率视频编码的运动矢量及视差矢量导出方法及其装置
WO2019136220A1 (en) Multiple-model local illumination compensation
CN113454990B (zh) 帧间预测编解码方法及装置
CN104838658A (zh) 具有不对称空间分辨率的纹理和深度视图分量当中的内部视图运动预测
CN104125469A (zh) 一种用于hevc的快速编码方法
JP2013523010A5 (ja) ビデオ符号化およびビデオ復号化のための暗示的適応型動きベクトル予測子選択の方法および装置
CN105141954A (zh) 一种hevc帧间编码快速模式选择方法
CN104604232A (zh) 用于编码多视点图像的方法及装置,以及用于解码多视点图像的方法及装置
CN103348681A (zh) 用于确定参考单元的方法和装置
US11889080B2 (en) Method and apparatus for processing video signal by applying secondary transform to partitioned block
Tohidypour et al. Online-learning-based complexity reduction scheme for 3D-HEVC
CN102740071A (zh) 可分级视频编解码器的编码设备及其方法
CN111742553A (zh) 用于视频压缩的基于深度学习的图像分区
US11997284B2 (en) Method for deriving motion vector, and electronic device of current block in coding unit
WO2016031253A1 (ja) ブロックサイズ決定方法及びプログラム記録媒体
CN110149512B (zh) 帧间预测加速方法、装置、计算机存储介质及设备
CN104918047B (zh) 一种双向运动估计的排除方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant