视频编码器、方法和装置及其帧间模式选择方法和装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术与互联网领域,具体而言,涉及一种视频编码器、方法和装 置及其帧间模式选择方法和装置。
【背景技术】
[0002] H. 264/AVC视频编码标准从2003年5月发布草案以来,以其相对于以往的视频压 缩标准在压缩效率以及网络适应性方面的明显优势,迅速成为视频应用领域的主流标准。 然而,随着终端设备形式的多样化以及人们对多媒体体验要求的不断提高,高清晰度、高帧 率、3D、移动平台已经成为视频应用的主流趋势,另一方面,传输带宽和存储空间一直是视 频应用中最为关键的资源,如何在有限的空间和传输通路中获得最佳的视频体验一直是用 户不懈追求的目标,现有的a264/AVC编码标准的压缩效率仍然不能满足这些日益增长 的需求,因此,在 2010 年 1 月,ITU-TVCEG(VideoCodingExpertsGroup)组织和IS0/IEC MPEG(MovingPictureExpertsGroup)组织联合成立了JCT-VC(JointCollaborativeTeam onVideoCoding),统一制定下一代编码标准HEVC(HighEfficiencyVideoCoding),并于 2013年I月正式发布了标准的最终版。HEVC沿用H. 264/AVC的混合编码框架,同时又采用 了大量的新技术,使得编码效率比现有的H. 264/AVC提高一倍,即HEVC只用一半的码率就 可达到与H. 264/AVC相同的视频质量,因此HEVC在高清、超高清视频存储,流媒体和移动互 联网视频等方面都具有极高的应用价值。
[0003]HEVC标准的其中一项最重要的新技术就是采用了更加灵活的四叉树编码结构, 使用编码单元(CodingUnit,简称⑶),预测单元(PredictionUnit,简称PU)和变换单元 (Transformunit,简称TU)) 3个概念描述整个编码过程,以提高高清、超高清视频的压缩编 码效率。
[0004] 在HEVC中,一帧图像被分割成许多互不重叠的编码树单元(CodingTreeUnits, 简称CTU),CTU类似于H. 264/AVC中的宏块,CTU均为2Nx2N(N= 2G,C为大于1的整数)的 正方形像素块,CTU最大允许尺寸为64x64。每个CTU都可以按照四叉树结构递归划分为正 方形的编码单元,CU是HEVC编码的基本单元,允许的最小尺寸为8x8,最大尺寸为CTU的尺 寸,图1是一个64x64的CTU四叉树结构划分示例。记尺寸等于CTU的⑶的深度(D^th) 为〇,若一个深度为n的⑶可继续划分为深度等于n+1的4个子⑶,每个子⑶尺寸是上一 深度CU的1/4。CU的预测编码类型有帧内(Intra)预测模式和帧间(Inter)预测模式两 种。所有CU都是帧内预测模式的帧称为帧内预测帧(即,I帧),包含帧内预测模式和帧间 预测模式的CU的帧称为帧间预测帧(S卩,GPB帧或B帧)。
[0005]I3U是预测的基本单元,一个⑶可包含一个或多个PU,PU最大尺寸是⑶的尺寸,允 许正方形或者长方形的分块。对于帧间预测编码的CU,有如图2a至图2h所示的8种PU划 分方式,其中,图2a至图2d示出了 4种对称的划分方式,依次为2Nx2N,2NxN,Nx2N,NXN, 图2e至图2h示出了 4种非对称的划分方式,依次为2NxnU,2NxnD,nLx2N,nRx2N。
[0006] 对于帧间预测2Nx2N的PU划分方式,若残差系数和运动矢量差都为零,则称该⑶ 是以跳过模式(即,Skip模式)编码。与H. 264/AVC的跳过模式不同,HEVC的跳过模式的运 动矢量获取采用了运动融合技术(Merge),即当前的运动信息(包括运动矢量、参考帧索 弓丨、参考帧列表)都可以通过相邻PU的运动信息构造出一个融合运动矢量候选列表,编码 时只需要传送融合标记(MergeFlag)以及最佳融合运动矢量对应的索引(MergeIndex), 无需传送其他运动信息。若当前PU的运动矢量采用运动融合技术获取,但包含非零的残差 系数,则称该PU是以融合(Merge)模式编码。
[0007] 对于其余巾贞间预测的情况,HEVC采用的是自适应运动矢量预测技术(Adaptive MotionVectorPrediction,AMVP),即通过相邻PU的运动矢量信息构造出一个预测运动矢 量候选列表,选择最佳的预测运动矢量,再通过运动估计选择最佳的运动矢量,编码时需要 传输残差系数和包括运动矢量差在内的完整的运动信息。
[0008] 对于帧内预测编码的⑶,只有2Nx2N,NxN两种PU划分方式,且NxN的划分方式只 用于对深度为允许的最大深度的CU进行。
[0009]TU是变换和量化的基本单元,一个⑶可包含一个或多个TU,TU同样采用四叉树 型的递归划分结构,其大小从4x4到32x32尺寸,可比PU大,但不超过⑶的大小。图3为 一个⑶的TU划分方式的不意图。
[0010] 在实际编码时,需要对每个CTU进行模式选择,选择最优的CU、PU、TU划分方式,以 及预测编码类型,通常按照率失真最优的准则,对每种CU、PU划分方式,需要计算最多34个 预测方向下采用不同TU划分方式的帧内预测编码开销,以及在每种运动矢量预测方式下 进行运动估计选择最匹配的预测CU,再计算采用不同TU划分方式下的帧间预测编码开销, 最后选择代价最小的CU、PU、TU划分方式,以及相应的预测编码类型作为当前CTU的最优编 码模式。
[0011]HEVC标准采用了上述灵活⑶、PU、TU划分方式,以及更多的帧内预测方向、帧间 运动矢量预测方式,极大的提高了预测准确性,从而提高编码效率,但是由于在模式选择的 运动估计和编码开销计算时涉及大量的绝对误差和(SumofAbsoluteDifference,简称 SAD)、经Hardmard变换后的绝对误差和(SumofAbsoluteTransformedDifference,简称 SATD)、差值的平方和(SumofSquaredError,简称SSE)和码率估算等高复杂度的计算过 程,HEVC这种更加灵活多样的划分方式和预测方式急剧增加了模式选择过程的计算复杂 度。在目前JEVC参考软件实现中,模式选择的计算耗时占整个编码时间的90 %以上,这 种高复杂的模式选择直接导致JEVC的高编码复杂度,因此难以满足目前日益增多的视频 实时通话(尤其是手持设备上的视频通话)、流媒体直播等高实时性要求的视频编码的应 用,而对于点播视频的片源离线视频压缩,也需要投入大量的服务器计算资源和编码时间 成本。又由于帧间预测帧的编码效率要远远高于帧内预测帧,因此在一般的视频编码中,为 了保证传输的鲁棒性和码流的随机访问,通常只是1-2秒插入一个I帧,即若视频的帧率为 15fps,每隔15-30帧里面只有一个I帧,其余都是帧间预测帧,而在高清视频存储或流媒体 点播等应用中,为了保证高压缩效率,I帧间隔会更大,最高可达100-200帧,因此帧间预测 帧在视频码流中所占的比例通常很高,其中帧间模式选择也是整个视频编码耗时的瓶颈模 块。
[0012] 图4是现有技术中一种对一个CU进行编码时的完整(不开启任何快速模式选择 算法)模式选择的流程图,如图4所示,在此种方法中,进行模式选择主要包括如下步骤S41 至S45:
[0013]S41:对当前CU,判断其深度(Depth)是否超过允许的最大深度,如果超过,则流程 结束,否则继续执行步骤S42。
[0014]S42:依次计算按融合2Nx2N、帧间2Nx2N、帧间NxN、帧间Nx2N、帧间2NxN、帧内 2Nx2N、帧内NxN模式进行编码的代价。在允许非对称PU划分方式下,还要再依次计算按 帧间2NxnU、帧间2NxnD、帧间nLx2N、帧间nRx2N四种模式进行编码的代价。其中帧间NxN 和帧内NxN模式的计算只在当前CU的深度等于允许的最大深度时进行,且若帧间_4x4_ enabled_flag标志为0,当⑶大小为8x8时,也不计算巾贞间NxN模式的代价。
[0015]S43:选择步骤S42计算的模式中代价最小的编码模式作为当前CU的最优编码模 式,并记录该最小代价作为当前CU的编码开销。
[0016]S44:将当前⑶划分为深度为Depth+1的4个子CU,对每个子⑶递归调用本流程。
[0017]S45:将4个深度为D印th+1的子⑶(如图5所示)的编码开销相加,与当前⑶的 编码开销比较,若当前CU的编码开销较大,则当前CU的最优编码模式为划分子CU下的最 优编码模式,否则当前CU的最优编码模式为不划分子CU下的最优编码模式。
[0018] 上述进行模式选择的方法中,由于对每个CTU的模式选择过程,都要遍历计算按 每种CU、PU、TU划分方式,以及帧内、帧间预测方式进行编码的代价,从中选择代价最小的 编码模式作为当前CTU的最优编码模式,虽然这种模式选择方法得到的最优编码模式较为 准确,但是计算复杂度很高。一般的离线视频压缩应用难以承受如此长时间的压缩和巨大 的服务器计算资源开销,更是无法满足视频通话、流媒体直播等需要实时视频编码的应用。
[0019] 图6是现有技术中另一种模式选择方法的流程图,如图6所示,在此种方法中,进 行模式选择主要包括如下步骤S61至S68 :
[0020] S61 :对当前⑶,判断其深度(Depth)是否超过允许的最大深度,如果超过,则流程 结束,否则继续执行步骤S62。
[0021] S62 :依次计算按帧间2NX2N和融合2NX2N模式进行编码的代价。
[0022] S63 :判断按帧间2Nx2N和融合2Nx2N模式中代价最小的模式编码时残差系数和运 动矢量差是否都为零,若是,则将当前CU编码模式预判为跳过模式,流程结束,否则继续执 行步骤S64。
[0023]S64:依次计算按帧间NxN、帧间Nx2N、帧间2NxN、帧内2Nx2N、帧内NxN模式进行编 码的代价。在允许非对称PU划分方式下,还要再依次计算按帧间2NxnU、帧间2NxnD、帧间 nLx2N、帧间nRx2N四种模式进行编码的代价。其中帧间NxN和帧内NxN模式的计算只在当 前⑶的深度等于允许的最大深度时进行,且若帧间_4X4_enabled_flag标志为0,当⑶大 小为8x8时,也不计算巾贞间NxN模式的代价。
[0024]S65:选择步骤S64计算的模式中代价最小的编码模式作为当前CU的最优编码模 式。
[0025] S66 :若当前⑶的最优编码模式为跳过模式,流程结