对基于解码器侧运动矢量推导的MVP推导的限制的制作方法

文档序号:23068572发布日期:2020-11-25 17:56阅读:168来源:国知局
对基于解码器侧运动矢量推导的MVP推导的限制的制作方法
本申请要求于2019年4月15日提交的美国专利申请no.16/384,044的优先权,该美国专利申请要求于2018年4月17日提交的美国临时专利申请62/659,046的权益,上述申请的全部内容通过引用的方式并入本文。本公开内容涉及视频编码和视频解码。
背景技术
:可以将数字视频能力并入广泛多样的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型或台式计算机、平板计算机、电子书阅读器、数字相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电话、所谓的“智能电话”、视频电话会议设备、视频流式传输设备等等。数字视频设备实现视频压缩技术,例如在由mpeg-2、mpeg-4、itu-th.263、itu-th.264/mpeg-4第10部分、高级视频编码(vac)、最近确定的高效率视频编码(hevc)标准、以及此类标准的扩展定义的标准中所描述的那些视频压缩技术。视频设备可以通过实现此类视频压缩技术来更高效地发送、接收、编码、解码和/或存储数字视频信息。视频压缩技术执行空间(图片内)预测和/或时间(图片间)预测以降低或移除视频序列中固有的冗余度。对于基于块的视频编码,可以将视频切片(即,视频帧或视频帧的一部分)划分成视频块,视频块还可以被称为树块、编码单元(cu)和/或编码节点。图片的帧内编码(i)切片中的视频块是使用针对相同图片中的相邻块中的参考样本的空间预测来进行编码的。图片的帧间编码(p或b)切片中的视频块可以使用针对相同图片中的相邻块中的参考样本的空间预测或针对其它参考图片中的参考样本的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。空间或时间预测得到针对要被编码的块的预测块。残差数据表示待编码的原始块与预测块之间的像素差。经帧间编码的块是根据指向形成预测块的参考样本的块的运动矢量来编码的,并且残差数据指示经编码块与预测块之间的差。经帧内编码的块是根据帧内编码模式和残差数据来编码的。为了进一步压缩,可以将残差数据从像素域变换到变换域,从而得到残差变换系数,随后可对残差变换系数进行量化。可以扫描经量化变换系数(初始地以二维阵列的形式排列)以便产生变换系数的一维矢量,并且可以应用熵编码以实现甚至更多压缩。技术实现要素:本公开内容描述了涉及解码器侧运动矢量推导(dmvd)的技术。本公开内容的技术可以与现有的视频编解码器(例如,高效率视频编码(hevc)标准)结合使用,或者可以用作任何将来视频编码标准中的高效编码工具。根据一个示例,一种对视频数据进行解码的方法包括:确定视频数据的第一块是在帧间预测模式中编码的;确定用于视频数据的所述第一块的第一运动矢量;对用于所述第一块的所述第一运动矢量执行运动矢量修正(refinement),以确定用于视频数据的所述第一块的经修正运动矢量;使用所述经修正运动矢量来在第一参考图片中定位第一参考块;基于所述第一参考块来生成针对视频数据的所述第一块的第一预测块;确定视频数据的第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项(predictor)的模式中编码的;响应于确定视频数据的所述第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式中编码的并且响应于对用于所述第一块的所述第一运动矢量执行所述运动矢量修正,使用与所述第一经修正运动矢量不同的运动矢量作为与所述第一块相关联的所述运动矢量预测项;基于所述不同的运动矢量,确定用于所述第二块的第二运动矢量;使用所述第二运动矢量来在第二参考图片中定位第二参考块;以及基于所述第一参考块和所述第二参考块来对视频数据的图片进行解码。根据另一示例,一种用于对视频数据进行解码的设备包括:存储器,所述存储器被配置为存储视频数据;以及一个或多个处理器,所述一个或多个处理器被配置为:确定视频数据的第一块是在帧间预测模式中编码的;确定用于所述视频数据的所述第一块的第一运动矢量;对用于所述第一块的所述第一运动矢量执行运动矢量修正,以确定用于所述视频数据的所述第一块的经修正运动矢量;使用所述经修正运动矢量来在第一参考图片中定位第一参考块;基于所述第一参考块来生成针对所述视频数据的所述第一块的第一预测块;确定所述视频数据的第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式中编码的;响应于确定所述视频数据的所述第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式来编码的并且响应于对用于所述第一块的所述第一运动矢量执行所述运动矢量修正,使用与所述第一经修正运动矢量不同的运动矢量作为与所述第一块相关联的所述运动矢量预测项;基于所述不同的运动矢量,确定用于所述第二块的第二运动矢量;使用所述第二运动矢量来在第二参考图片中定位第二参考块;以及基于所述第一参考块和所述第二参考块来对所述视频数据的图片进行解码。根据另一示例,一种计算机可读存储介质存储指令,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:确定视频数据的第一块是在帧间预测模式中编码的;确定用于视频数据的所述第一块的第一运动矢量;对用于所述第一块的所述第一运动矢量执行运动矢量修正,以确定用于视频数据的所述第一块的经修正运动矢量;使用所述经修正运动矢量来在第一参考图片中定位第一参考块;基于所述第一参考块来生成针对视频数据的所述第一块的第一预测块;确定视频数据的第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式中编码的;响应于确定视频数据的所述第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式中编码的并且响应于对用于所述第一块的所述第一运动矢量执行所述运动矢量修正,使用与所述第一经修正运动矢量不同的运动矢量作为与所述第一块相关联的所述运动矢量预测项;基于所述不同的运动矢量,确定用于所述第二块的第二运动矢量;使用所述第二运动矢量来在第二参考图片中定位第二参考块;以及基于所述第一参考块和所述第二参考块来对视频数据的图片进行解码。根据另一示例,一种用于对视频数据进行解码的装置包括:用于确定视频数据的第一块是在帧间预测模式中编码的单元;用于确定用于视频数据的所述第一块的第一运动矢量的单元;用于对用于所述第一块的所述第一运动矢量执行运动矢量修正,以确定用于视频数据的所述第一块的经修正运动矢量的单元;用于使用所述经修正运动矢量来在第一参考图片中定位第一参考块的单元;用于基于所述第一参考块来生成针对视频数据的所述第一块的第一预测块的单元;用于确定视频数据的第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式中编码的单元;用于响应于确定视频数据的所述第二块是在利用与所述第一块相关联的运动矢量作为运动矢量预测项的模式中编码的并且响应于对用于所述第一块的所述第一运动矢量执行所述运动矢量修正,使用与所述第一经修正运动矢量不同的运动矢量作为与所述第一块相关联的所述运动矢量预测项的单元;用于基于所述不同的运动矢量来确定用于所述第二块的第二运动矢量的单元;用于使用所述第二运动矢量来在第二参考图片中定位第二参考块的单元;以及用于基于所述第一参考块和所述第二参考块来对视频数据的图片进行解码的单元。在附图和以下描述中阐述了一个或多个示例的细节。其它特征、目标和优势通过本描述、附图和权利要求将是显而易见的。附图说明图1是示出了可以利用本公开内容的技术来支持解码器侧运动矢量推导的示例性视频编码和解码系统的框图。图2a是示出了用于合并模式的空间相邻运动矢量候选的示例的概念图。图2b是示出了用于高级运动矢量预测模式的空间相邻运动矢量候选的示例的概念图。图3a是示出了时间运动矢量预测项候选的示例的概念图。图3b是示出了运动矢量缩放的示例的概念时序图。图4是示出了双边匹配的示例的概念图。图5是示出了模板匹配的示例的概念图。图6a和图6b是示出了对帧率提升(upconversion)模板匹配模式的示例性提出的修改的流程图。图7是示出了光流轨迹的示例的概念图。图8是示出用于8×4块的双向光流的示例的概念图。图9是示出了所提出的基于双边模板匹配的解码器侧运动矢量推导的示例的概念图。图10a和图10b是示出了其中可应用重叠块运动补偿的子块的示例性说明的概念图。图11a-图11d是示出了重叠的块运动补偿加权的示例的概念图。图12是示出了可以实现支持解码器侧运动矢量推导的技术的视频编码器的示例的框图。图13是示出了视频解码器的示例的框图,该视频解码器对经编码视频序列进行解码并执行解码器侧运动矢量推导。图14是示出了本公开内容中所描述的示例性视频解码技术的流程图。具体实施方式本公开内容描述了涉及解码器侧运动矢量推导(dmvd)的技术。本公开内容的技术可以与现的视频编解码器(例如高效率视频编码(hevc)标准)结合使用,或者可以用作任何将来视频编码标准中的高效编码工具。可以参考视频编码器来描述本公开内容中的各种技术,该视频编码器旨在是可以指代视频编码器或视频解码器的通用术语。除非另外明确声明,否则不应该假定针对视频编码器或视频解码器所描述的技术不能由视频编码器或视频解码器中的另一者执行。例如,在许多实例中,视频解码器与视频编码器执行相同或者有时互逆的编码技术,以便对经编码视频数据进行解码。在许多实例中,视频编码器还包括视频解码环路,并且因此视频编码器作为对视频数据进行编码的一部分来执行视频解码。因此,除非另外声明,否则本公开内容中针对视频解码器所描述的技术也可以由视频编码器执行,反之亦然。本公开内容还可以使用诸如当前层、当前块、当前图片、当前切片等术语。在本公开内容的上下文中,术语当前旨在标识当前正在进行编码的层、块、图片、切片等等,例如与先前编码的层、块、图片和切片或者尚未进行编码的块、图片和切片相对。图1是示出了可以利用本公开内容中所描述的技术的示例性视频编码和解码系统10的框图。如图1中所示,系统10包括源设备12,该源设备12生成经编码视频数据以在稍后时间由目的地设备14解码。源设备12和目的地设备14可以包括广泛多样的设备中的任何设备,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手持设备(例如所谓的“智能”电话、所谓的“智能”平板)、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等等。在一些情况下,源设备12和目的地设备14可以装备用于无线通信。目的地设备14可以经由链路16来接收经编码视频数据以进行解码。链路16可以包括能够将经编码视频数据从源设备12移至目的地设备14的任何类型的介质或设备。在一个示例中,链路16可以包括通信介质以使得源设备12能够实时地将经编码视频数据直接发送给目的地设备14。可以根据通信标准(例如无线通信协议)来调制经编码视频数据并将其发送给目的地设备14。通信介质可以包括任何无线或有线通信介质,例如射频(rf)频谱或一个或多个物理传输线。通信介质可以形成基于分组的网络的一部分,例如局域网、广域网、或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备12到目的地设备14的通信的任何其它设备。在另一示例中,经编码数据可以从输出接口22输出到存储设备26。类似地,可以通过输入接口从存储设备26访问经编码数据。存储设备26可以包括各种分布式或本地访问的数据存储介质中的任何数据存储介质,例如硬盘驱动器、蓝光盘、dvd、cd-rom、闪存、易失性或非易失性存储器、或用于存储经编码视频数据的任何其它适当的数字存储介质。在又一示例中,存储设备26可以对应于文件服务器或可以保持由源设备12生成的经编码视频的另一中间存储设备。目的地设备14可以经由流式传输或下载来从存储设备访问所存储视频数据。文件服务器可以是能够存储经编码视频数据并将该经编码视频数据发送给目的地设备14的任何类型的服务器。示例性文件服务器包括web服务器(例如,用于网站)、ftp服务器、网络附连存储(nas)设备、或本地硬盘驱动器。目的地设备14可以通过任何标准数据连接(包括互联网连接)来访问经编码视频数据。这可以包括适合于访问存储在文件服务器上的经编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、有线调制解调器等等)、或两者的组合。经编码视频数据从存储设备26的传输可以是流式传输、下载传输、或两者的组合。本公开内容的技术不一定限于无线应用或设置。各技术可以应用于视频编码以支持各种多媒体应用中的任何多媒体应用,例如空中电视广播、有线电视传输、卫星电视传输、流式传输视频传输(例如,经由互联网)、对数字视频进行编码以供存储在数据存储介质上、对存储在数据存储介质上的数字视频进行解码,或其它应用。在一些示例中,系统10可以被配置为支持单向或双向视频传输以支持诸如视频流式传输、视频回放、视频广播和/或视频电话之类的应用。在图1的示例中,源设备12包括视频源18、视频编码器20和输出接口22。在一些情况下,输出接口22可以包括调制器/解调器(调制解调器)和/或发射机。在源设备12中,视频源18可以包括诸如视频捕获设备之类的源,例如,视频相机、包含先前捕获的视频的视频存档、用于从视频内容提供方接收视频的视频馈送接口、和/或用于生成计算机图形数据作为源视频的计算机图形系统、或此类源的组合。举一个示例,如果视频源18是视频相机,则源设备12和目的地设备14可以形成所谓的相机电话或视频电话。然而,本公开内容中所描述的技术通常可以适用于视频编码,并且可以应用于无线和/或有线应用。捕获的、预先捕获的、或计算机生成的视频可以由视频编码器20进行编码。经编码视频数据可以经由源设备12的输出接口22直接发送给目的地设备14。经编码视频数据还可以(或者替代地)存储到存储设备26上以供目的地设备14或其它设备稍后访问以用于解码和/或回放。目的地设备14包括输入接口28、视频解码器30和显示设备32。在一些情况下,输入接口28可以包括接收机和/或调制解调器。目的地设备14的输入接口28在链路16上接收经编码视频数据。在链路16上传送或在存储设备26上提供的经编码视频数据可以包括由视频编码器20生成的各种语法元素以供视频解码器(例如视频解码器30)在对视频数据进行解码时使用。这种语法元素可以与在通信介质上发送的经编码视频数据包括在一起,存储在存储介质上,或存储在文件服务器。显示设备32可以与目的地设备14集成或在目的地设备14的外部。在一些示例中,目的地设备14可以包括集成显示设备,并且还被配置为与外部显示设备对接。在其它示例中,目的地设备14可以是显示设备。通常,显示设备32向用户显示经解码视频数据,并且可以包括各种显示设置中的任何显示设备,例如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器、或另一类型的显示设备。视频编码器20和视频解码器30可以根据视频压缩标准(例如hevc标准)来操作,并且可以符合hevc测试模型(hm)。视频编码器20和视频解码器30可以另外根据hevc扩展(例如,范围扩展、多视图扩展(mv-hevc)或可缩放扩展(shvc))来操作,hevc扩展已由视频编码联合协作小组(jct-vc)以及itu-t视频编码专家组(vceg)和iso/iec运动图像专家组(mpeg)的3d视频编码扩展开发联合合作团队(jct-3v)开发。视频编码器20和视频解码器30也可以根据其它专有或行业标准来操作,例如itu-th.264标准(替代地被称为iso/iecmpeg4第10部分)、高级视频编码(avc)或此类标准的扩展,例如可缩放视频编码(svc)和多视图视频编码(mvc)扩展。然而,本公开内容的技术不限于任何特定的编码标准。视频压缩标准的其它示例包括itu-th.261、iso/iecmpeg-1视觉、itu-th.262或iso/iecmpeg-2视觉、itu-th.263、以及iso/iecmpeg-4视觉。itu-tvceg(q6/16)和iso/iecmpeg(jtc1/sc29/wg11)现在正在研究对未来视频编码技术的标准化的潜在需求,该未来视频编码技术具有显著超过当前hevc标准(包括针对屏幕内容编码和高动态范围编码的当前扩展和近期扩展)的压缩能力的压缩能力。专家组正在通过联合协作努力(被称为联合视频勘探小组(jvet))共同进行该勘探活动,以评估由该领域的专家提出的压缩技术设计。jvet于2015年10月19日至21日期间首次会面。并且最新版本的参考软件(即联合勘探模型5(jem5)可以从https://jvet.hhi.fraunhofer.de/svn/svn_hmjemsoftware/tags/hm-16.6-jem-5.0/下载。联合勘探测试模型5(jem5)的算法描述可以被称为jvet-e1001。附加地或替代地,视频编码器20和视频解码器30可以根据其它专有或工业标准来操作,例如联合勘探测试模型(jem)或itu-th.266(也被称为多功能视频编码(vvc))。bross等人在itu-tsg16wp3和iso/iecjtc1/sc29/wg11的联合视频专家组(jvet)第13次会议(马萨诸塞州马拉喀什,2019年1月9日至18日,jvet-m1001-v5(以下简称“vvc草案4”))在“多功能视频编码(草案4)”中描述了vvc标准的最新草案。然而,本公开内容的技术不限于任何特定的编码标准。为了解释简单起见,本公开内容的技术可以利用hevc术语。然而,不应假定本公开内容的技术限于hevc,并且实际上,明确地构想了可以在hevc的后续标准及其扩展中实现本公开内容的技术。视频编码器20和视频解码器30可以根据多种标准来对视频数据进行编码和解码。尽管在图1中未示出,但在一些方面中,视频编码器20和视频解码器30可以均与音频编码器和解码器集成,并且可以包括适当的mux-demux(复用-解复用)单元或其它硬件和软件,以处理对共同数据流或单独数据流中的音频和视频两者进行编码。如果适用的话,在一些示例中,mux-demux单元可以符合ituh.223复用器协议或其它协议,例如用户数据报协议(udp)。视频编码器20和视频解码器30均可以实现为各种合适的编码器电路或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、分立逻辑单元、软件、硬件、固件或其任何组合。当部分地在软件中实现技术时,设备可以将用于软件的指令存储在合适的非暂时性计算机可读介质中,并使用一个或多个处理器来执行硬件中的指令以执行本公开内容的技术。视频编码器20和视频解码器30中的每一个可以被包括在一个或多个编码器或解码器中,这两个编码器或解码器中的任一个可以被集成为相应设备中的经组合编码器/解码器(codec)的一部分。在hevc和其它视频编码规范中,视频序列通常包括一系列图片。图片也可以被称为“帧”。在一种示例性方法中,图片可以包括三个样本阵列,标示为sl、scb和scr。在该示例性方法中,sl是亮度样本的二维阵列(即,块)。scb是cb色度样本的二维阵列。scr是cr色度样本的二维阵列。色度样本在本文中也可以称为“chroma(色度)”样本。在其它实例中,图片可以是单色的,并且可以仅包括亮度样本的阵列。为了生成图片的经编码表示,视频编码器20可以生成一组编码树单元(ctu)。每个ctu可以包括亮度样本的编码树块、色度样本的两个相应的编码树块、以及用于对编码树块的样本进行编码的语法结构。在单色图片或具有三个单独的色彩平面的图片中,ctu可以包括单个编码树块和用于对编码树块的样本进行编码的语法结构。编码树块可以是样本的n×n块。ctu也可以被称为“树块”或“最大编码单元”(lcu)。hevc的ctu可以大致类似于其它标准(例如h.264/avc)的宏块。然而,ctu不必限于特定大小,并且可以包括一个或多个编码单元(cu)。切片可包括以光栅扫描顺序连续排序的整数数目个ctu。为了生成经编码ctu,视频编码器20可以对ctu的编码树块递归地执行四叉树分割,以将编码树块划分成编码块,因此被称为“编码树单元”。编码块可以是样本的n×n块。cu可以包括图片的亮度样本的编码块和色度样本的两个对应编码块,该图片具有亮度样本阵列、cb样本阵列、cr样本阵列、以及用于对编码块的样本进行编码的语法结构。在单色图片或具有三个单独的色彩平面的图片中,cu可以包括单个编码块和用于对编码块的样本进行编码的语法结构。视频编码器20可以将cu的编码块分割成一个或多个预测块。预测块是在其上应用相同预测的样本的矩形(即,正方形或非正方形)块。cu的预测单元(pu)可以包括亮度样本的预测块、色度样本的两个对应的预测块、以及用于对预测块进行预测的语法结构。在单色图片或具有三个单独的色彩平面的图片中,pu可以包括单个预测块和用于对预测块进行预测的语法结构。视频编码器20可以生成预测亮度,用于亮度的cb和cr块、以及用于cu的每个pu的cb和cr预测块。视频编码器20可以使用帧内预测或帧间预测来生成pu的预测块。如果视频编码器20使用帧内预测来生成pu的预测块,则视频编码器20可以基于与pu相关联的图片的解码样本来生成pu的预测块。如果视频编码器20使用帧间预测来生成pu的预测块,则视频编码器20可以基于除了与pu相关联的图片以外的一个或多个图片的解码样本来生成pu的预测块。在视频编码器20生成预测亮度、用于cu的一个或多个pu的cb和cr块之后,视频编码器20可以生成cu的亮度残差块。cu的亮度残差块中的每个样本指示cu的预测亮度块中的一个预测亮度块中的亮度样本与cu的原始亮度编码块中的相应样本之间的差。另外,视频编码器20可以生成cu的cb残差块。cu的cb残差块中的每个样本可以指示cu的预测cb块中的一个预测cb块中的cb样本与cu的原始cb编码块中的相应样本之间的差。视频编码器20还可以生成cu的cr残差块。cu的cr残差块中的每个样本可以指示cu的预测cr块中的一个预测cr块中的cr样本与cu的原始cr编码块中的相应样本之间的差。此外,视频编码器20可以使用四叉树分割来将cu的亮度、cb和cr残差块分解成一个或多个亮度、cb和cr变换块。变换块是在其上应用相同变换的矩形(例如,正方形或非正方形)样本块。cu的变换单元(tu)可以包括亮度样本的变换块、色度样本的两个对应的变换块、以及用于对变换块样本进行变换的语法结构。因此,cu的每个tu可以与亮度变换块、cb变换块和cr变换块相关联。与tu关联的亮度变换块可以是cu的亮度残差块的子块。cb变换块可以是cu的cb残差块的子块。cr变换块可以是cu的cr残差块的子块。在单色图片或具有三个单独的色彩平面的图片中,tu可以包括单个变换块和用于对变换块样本进行变换的语法结构。视频编码器20可以将一个或多个变换应用于tu的亮度变换块以生成tu的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可以将一个或多个变换应用于tu的cb变换块以生成tu的cb系数块。视频编码器20可以将一个或多个变换应用于tu的cr变换块以生成tu的cr系数块。在生成系数块(例如,亮度系数块、cb系数块或cr系数块)之后,视频编码器20可以对系数块进行量化。量化通常是指对变换系数进行量化以便可能的减少用于表示变换系数的数据量、从而提供进一步压缩的过程。在视频编码器20对系数块进行量化之后,视频编码器20可以对指示经量化变换系数的语法元素进行熵编码。例如,视频编码器20可以对指示经量化变换系数的语法元素执行上下文自适应二进制算术编码(cabac)。视频编码器20可以输出比特流,该比特流包括形成经编码图片和相关联数据的表示的比特序列。比特流可以包括网络抽象层(nal)单元的序列。nal单元是一种语法结构,该语法结构包含对nal单元中数据类型的指示以及包含该数据的字节,这些字节以原始字节序列有效载荷(rbsp)的形式在必要时与仿真防止比特一起散布。每个nal单元包括nal单元报头,并且封装rbsp。nal单元报头可以包括指示nal单元类型代码的语法元素。由nal单元的nal单元报头指定的nal单元类型代码指示nal单元的类型。rbsp可以是包含封装在nal单元内的整数个字节的语法结构。在一些实例中,rbsp包括零个比特。不同类型的nal单元可以封装不同类型的rbsp。例如,第一类型的nal单元可以封装用于pps的rbsp,第二类型的nal单元可以封装用于经编码切片的rbsp,第三类型的nal单元可以封装用于sei消息的rbsp等等。封装用于视频编码数据的rbsp(与用于参数集和sei消息的rbsp相反)的nal单元可以被称为vclnal单元。视频解码器30可以接收由视频编码器20生成的比特流。另外,视频解码器30可以解析比特流以从该比特流获得语法元素。视频解码器30可以至少部分地基于从比特流获得的语法元素来重构视频数据的图片。重构视频数据的过程通常可以与由视频编码器20执行的过程互逆。另外,视频解码器30可以对与当前cu的tu相关联的系数块进行逆量化。视频解码器30可以对系数块执行逆变换以重构与当前cu的tu相关联的变换块。视频解码器30可通过将针对当前cu的pu的预测块的样本添加到当前cu的tu的变换块的对应样本来重构当前cu的编码块。通过重构图片的每个cu的编码块,视频解码器30可以重构图片。在hevc中,切片中的最大编码单元被称为编码树块(ctb)或编码树单元(ctu)。ctb包含四叉树,该四叉树的节点是编码单元。在hevc主轮廓中,ctb的大小范围可以从16×16到64×64(尽管在技术上可以支持8×8ctb大小)。cu可以与ctb一样大,或与8×8一样小,或者介于两者之间。通常使用一种编码模式来编码每个cu。当cu被帧间编码时,经帧间编码的cu可以被进一步分割为2个或4个pu或者在未应用进一步分割的情况下仅具有一个pu。当一个cu中存在两个pu时,这两个pu可以是一半大小的矩形,或者大小是cu大小的1/4或3/4的两个矩形。当cu被帧间编码时,针对每个pu存在一组运动信息。另外,使用唯一帧间预测模式来编码每个pu以推导该组运动信息。为了降低发送运动信息(例如,运动矢量、参考索引和/或运动矢量精度)所需要的比特率,视频编码标准通常使用不同类型的运动矢量预测。在hevc标准中,例如,存在两种帧间预测模式,对于pu分别被称为合并模式(其中跳过模式被认为是合并模式的特殊情况)和高级运动矢量预测(amvp)模式。在amvp或合并模式中,视频解码器30保持用于多个运动矢量预测项的运动矢量(mv)候选列表。视频解码器30通过从mv候选列表中获取一个候选来生成当前pu的运动矢量以及在合并模式中的参考索引。视频编码器20和视频解码器30生成相同的候选列表。本公开内容将从视频解码器30的角度来描述运动矢量预测,但是应该理解,视频编码器20通常实现相同的技术。在基本hevc标准中,对于合并模式,mv候选列表包含最多达五个候选,并且对于amvp模式仅包含两个候选,尽管其它标准可以使用不同数量的候选。合并候选可以包含一组运动信息,例如,与一个或两个参考图片列表(列表0(list0)和列表1(list1))相对应的运动矢量以及参考索引。如果由合并索引来标识合并候选,则视频解码器30使用所标识的合并候选的运动矢量和参考图片索引来进行当前块的预测。然而,在amvp模式下,对于来自列表0或列表1的每个潜在预测方向,由于amvp候选仅包含运动矢量,因此需要将参考索引连同mv预测项(mvp)索引明确发送给mv候选列表。在amvp模式中,可以进一步修正经预测的运动矢量。如上文可见,合并候选对应于完整的一组运动信息,而amvp候选仅包含用于特定预测方向和参考索引的一个运动矢量。这两种模式的候选可以类似地从相同的空间和时间相邻块推导。图2a是示出了用于合并模式的空间相邻运动矢量候选的示例的概念图。视频解码器30可以通过将空间相邻候选的运动信息添加到候选列表来生成候选列表。对于特定的pu(pu0),空间mv候选是从图2a和图2b中所示的相邻块中推导出的,尽管用于从块生成候选的方法对于合并和amvp模式不同。在合并模式中,对于具有图2a中所示的顺序的块200(pu0),可以推导出最多达四个空间mv候选。顺序如下:左(0,a1),上(1,b1),右上(2,b0),左下(3,a0),以及左上(4,b2),如图2a中所示。图2b是示出了用于高级运动矢量预测模式的空间相邻运动矢量候选的示例的概念图。在avmp模式中,将块202(pu0)的相邻块划分为两组:包括块0和1的左侧组,以及包括块2、3和4的上方组,如图2b中所示。对于每个组,相邻块中指向与用信号发送的参考索引所指示的参考图片相同的参考图片的潜在候选具有最高优先级以被选择为形成该组的最终候选。有可能所有相邻块都不包含指向相同参考图片的运动矢量。因此,如果找不到这种候选,则可以缩放第一可用候选以形成最终候选,从而可以补偿时间距离差。视频编码器20和视频解码器30可以如在hevc标准中一样执行时间运动矢量预测(tmvp)。视频解码器30可以将tmvp候选(如果启用且可用的话)在空间运动矢量候选之后添加到mv候选列表中。tmvp候选的运动矢量推导过程对于合并和amvp模式是相同的;然而,在hevc中,合并模式中的tmvp候选的目标参考索引始终被设置为0。图3a是示出了用于块204(pu0)的时间运动矢量预测项候选的示例的概念图。用于tmvp候选推导的主要块位置是在共置pu外部的右下块(如图3a中被示为块“t”),以补偿用于生成空间相邻候选的上方和左侧块的偏差。然而,如果该块位于当前ctb行的外部,或者运动信息不可用,则将该块替换为pu的中心块。视频解码器30可以从在切片级指示的共置图片的共置pu中推导出用于tmvp候选的运动矢量。用于共置pu的运动矢量被称为共置mv。如果参考图片中的块和当前块均包括与参考图片和当前图片中的相同相对位置相对应的至少一个像素,则参考图片中的块例如可以被认为与当前图片中的块共置。图3b是示出了运动矢量缩放过程206的实例的概念性时序图。类似于avc中的时间直接模式,为了推导出tmvp候选运动矢量,视频解码器30可以对共置mv进行缩放以补偿时间距离差,如图3b中所示。在运动矢量缩放的情况下,通常假定运动矢量的值与呈现时间中图片的距离成比例。运动矢量将两个图片(参考图片和包含运动矢量的图片(即包含图片))进行关联。当利用一运动矢量来预测另一运动矢量时,基于图片顺序计数(poc)值来计算包含图片和参考图片的距离。当预测运动矢量时,其参考图片和运动矢量预测项的参考图片可以不同。因此,计算新距离(基于poc)。并且基于这两个poc距离来对运动矢量进行缩放。在hevc中,运动矢量缩放适用于空间和时间相邻候选的tmvp和amvp两者。关于人工运动矢量候选生成,如果运动矢量候选列表不完整,则视频解码器30可以生成人工运动矢量候选,将该人工运动矢量候选插入到列表的末尾,直到列表已满或直到针对人工候选的选项用尽为止。在合并模式中,存在两种类型的人工mv候选:仅针对b切片推导出的经组合候选以及仅在第一种类型未提供足够的人工候选时才使用的零候选。对于已经在候选列表中并且具有必要运动信息的每一对候选,视频解码器30可以通过将指向列表0中的图片的第一候选的运动矢量与指向列表1中的图片的第二候选的运动矢量进行组合来推导出双向经组合运动矢量候选。关于用于候选插入的修剪(pruning)过程,来自不同块的候选可能恰好相同,这会由于列表中的候选重复而降低合并/amvp候选列表的效率。为了帮助减少这种低效率,视频解码器30可以应用修剪过程。作为修剪过程的一部分,视频解码器30将一个候选与当前候选列表中的其它候选进行比较,以在一定程度上避免插入相同候选。为了降低复杂度,可以仅应用有限数量的修剪过程,而不是将每个潜在候选与所有其它现有候选进行比较。jem参考软件包括利用dmvd来推导或修正当前块的运动矢量的几个帧间编码工具。一个这种dmvd工具是模式匹配运动矢量推导(pmmvd)模式,这是基于帧率提升(fruc)技术的特殊合并模式。当实现jem参考软件时,在pmmvd模式中,视频解码器30可以推导块的运动信息,而不是接收显式信令。当用于cu的合并标志为真时,视频解码器30可以接收用于该cu的fruc标志。当fruc标志为假时,则视频解码器30可以接收合并索引并使用常规合并模式。当fruc标志为真时,视频解码器30可以接收另外的fruc模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导块的运动信息。用于对fruc的标志进行编码的语法表如下:在运动推导过程期间,视频解码器30可以首先基于双边匹配或模板匹配来推导整个cu的初始运动矢量。首先,检查cu的合并列表(或被称为pmmvd种子),并选择引起最小匹配成本的候选作为起点。随后执行基于在起点附近的双边匹配或模板匹配的局部搜索,并且将引起最小匹配成本的mv作为整个cu的mv。随后,以推导出的cu运动矢量作为起点,在子块级进一步修正运动信息。图4是示出了双边匹配的示例的概念图。如图4a中所示,使用双边匹配以通过沿当前块在两个不同参考图片(ref0(参考0)和ref1(参考1))中的运动轨迹找到两个参考块(r0和r1)之间的最佳匹配来推导当前块(cur)的运动信息。当将图像序列(例如,参考帧和当前帧)视为3维连续时空场时,运动轨迹可以包括块中的像素沿空间和时间遵循的路径。在连续运动轨迹的假设下,指向两个参考块(r0和r1)的运动矢量mv0和mv1与当前图片(cur)和这两个参考图片(ref0和ref1)之间的时间距离成比例。推导出的mv是使用双边匹配推导的,并且分别指向参考块r'0和r'1。如图4中所示,视频解码器30通过沿当前块在两个不同参考图片(例如,参考图片212(ref0)和214(ref1))中的运动轨迹找到两个参考块之间的最佳匹配,来使用双边匹配推导出图片210中的当前块208的运动信息。在图4中,视频解码器30找到参考块216(r0)和参考块218(r1)作为沿运动矢量mv0的最佳匹配。同样地,视频解码器30找到参考块220(r'0)和参考块222(r'1)作为沿运动矢量mv1的最佳匹配。在连续运动轨迹的假设下,指向这两个参考块的运动矢量mv0和mv1应该与当前图片和这两个参考图片之间的时间距离成比例。作为特殊情况,当当前图片在时间上在这两个参考图片之间并且从当前图片到这两个参考图片的时间距离相同时,双边匹配变为基于镜像的双向mv。图5是示出了模板匹配的示例的概念图。如图5中所示,使用模板匹配以通过找到当前图片中的模板(当前块的顶部和/或左侧相邻块)与参考图片(ref0和ref1)中的块(与模板大小相同)之间的最佳匹配来推导当前块(cur)的运动信息。模板可以包括块的相邻像素,该块用于通过搜索r0和r1的相邻块来将感兴趣块(cur)与候选参考(具有mv0的r0和具有mv1的r1)或推导出的参考(具有mv的r'0和具有mv的r'1)进行比较。随后将最相似的参考用作为预测。如图5中所示,使用模板匹配以通过找到当前图片226中的模板(当前块224的顶部相邻块228和/或左侧相邻块230)和参考图片(例如,参考图片232(ref0)或434(ref1))中的块(与模板大小相同)之间的最佳匹配来推导图片226中的当前块224的运动信息。在图5中,作为最佳匹配可能性的参考块被示为参考块236(r1)、参考块238(r’1)、参考块240(r0)和参考块242(r’0)。在视频编码器20处,关于是否对cu使用fruc合并模式的决定基于如对正常合并候选所做出的rd成本选择。即,通过使用rd成本选择来针对cu检查这两种匹配模式(双边匹配和模板匹配)。引起最小成本的匹配模式进一步与其它cu模式进行比较。如果fruc匹配模式是最高效的一种匹配模式,则fruc标志针对cu被设置为真,并使用相关的匹配模式。在第五届jvet会议上,提出了可从http://phenix.it-sudparis.eu/jvet/获得的jvet-e0035“fruc模式中的增强型模板匹配”,以进一步改善fruc模板匹配。图6a中示出了示例性fruc模板匹配模式的流程图。在第一步骤中,找到模板t0(及其对应的运动信息mv0)以匹配来自列表0参考图片的当前块的当前模板tc。在第二步骤中,从列表1参考图片中找到模板t1(及其对应的运动信息mv1)。所获得的运动信息mv0和mv1用于执行双向预测以生成当前块的预测项。图6a和图6b是示出了对帧率提升模板匹配模式的示例性提出的修改的流程图。fruc模板匹配模式可以通过引入双向模板匹配以及在单向预测与双向预测之间进行自适应选择来增强。图6b中用下划线标出相对于图6a的示例性修改。双向模板匹配可以基于单向模板匹配来实现。如图6a中所示,在模板匹配的第一步骤中,首先从列表0参考图片中找到匹配的模板t0(240)。注意,此处列表0仅作为示例。实际上,第一步骤中使用无论列表0还是列表都自适应于相应参考图片中的当前模板与初始模板之间的初始失真成本。可以利用在执行第一模板匹配之前可用的当前块的初始运动信息来确定初始模板。在模板匹配的第一步骤中将使用与最小初始模板失真成本相对应的参考图片列表。例如,如果与列表0相对应的初始模板失真成本不大于与列表相对应的成本,则在模板匹配的第一步骤中使用列表0,并且在第二步骤中使用列表1,随后,对当前块的当前模板tc更新如下:t’c=2*tc–t0经更新的当前模板t’c(而不是当前模板tc)用于从第二模板匹配中的里诶包1参考图片中找到另一匹配的模板t1(242)。因此,通过联合地使用列表0和列表1参考图片来找到匹配的模板t1(244)。该匹配过程被称为双向模板匹配。针对运动补偿预测(mcp)在单向预测与双向预测之间的选择可以基于模板匹配失真。如图6b中所示,在模板匹配期间,可以将模板t0与tc(当前模板)之间的失真计算为成本0(250),可以对当前模板进行更新(252),并且可以将模板t1与t'c(经更新的当前模板)之间的失真计算为成本1(254)。如果成本0小于0.5*成本1(256),则基于mv0的单向预测可以应用于fruc模板匹配模式(258);否则,应用基于mv0和mv1的双向预测(260)。注意,由于成本1指示模板t1与t'c(经更新的当前模板)之差,这是tc(当前模板)与其预测0.5*(t0+t1)之差的2倍,因此将成本0与0.5*成本1进行比较。注意,mcp可以应用于pu级运动修正。子pu级的运动修正可以保持不变。图7示出了用于bio的光流轨迹的示例。在图7的示例中,b图片270是使用参考图片272(ref0)和参考图片274(ref1)进行预测的双向帧间预测图片。在双向预测的情况下,bio利用在逐块运动补偿上执行的逐像素运动修正。由于bio补偿了块内的精细运动,因此启用bio潜在地引起扩大用于运动补偿的块尺寸。样本级运动修正不需要通过使用显式公式为每个样本提供精细运动矢量来进行详尽搜索或用信号发送。i(k)表示在针对双向预测块执行运动补偿之后来自参考k(k=0,1)的亮度值。和分别是i(k)梯度的水平和垂直分量。假定光流是有效的,则运动矢量场(vx,vy)由下式给出:通过将光流公式与每个样本的运动轨迹的hermite插值进行组合,得到最后与函数值i(k)和导数两者都匹配的唯一三阶多项式。该多项式在t=0时的值是bio预测:在式(2)中,τ0和τ1对应于如图7中所示的参考帧。距离τ0和τ1是基于ref0和ref1的poc值来计算的:τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前)。如果这两个预测都来自同一时间方向(两者都来自过去或两者都来自将来),则符号不同τ0·τ1<0。在该情况下,仅当预测不是来自同一时刻(τ0≠τ1)、两个参考区域具有非零运动(mvx0,mvy0,mvx1,mvy1≠0)并且块运动矢量与时间距离成比例(mvx0/mvx1=mvy0/mvy1=-τ0/τ1)时,才可以应用bio。运动矢量场(vx,vy)是通过使点a和b处的值之间的差δ最小化来确定的,其对应于图7中的运动轨迹与参考帧平面之间的交点。该交点被示为图7中的点276。一个模型仅使用δ的局部泰勒展开的第一线性项:式(1)中的所有值取决于样本位置(i′,j′),该样本位置目前为止被省略。假定运动在局部环境中是恒定的,则在居中于当前预测点(i,j)的(2m+1)×(2m+1)方形窗口ω内部的δ可以被最小化:对于该优化问题,可以使用首先使得在垂直方向上最小化并且随后在水平方向上最小化的简化解,其得到:m=700·4d-8(9)此处d是输入视频的内部比特深度。在一些情况下,bio的mv修正由于噪声或不规则运动而可能不可靠。因此,在bio中,mv方案的幅度被限制为某个阈值thbio。该阈值是基于当前图片的所有参考图片是否都来自一个方向来确定的。如果当前图片的所有参考图片都来自一个方向,则阈值被设置为12×214-d,否则,阈值被设置为12×213-d。可以使用与hevc运动补偿过程一致的操作在与运动补偿内插相同的时间计算bio的梯度(2d可分离fir)。该2d可分离fir的输入可以是与运动补偿过程和根据块运动矢量的分数部分的分数位置(fracx,fracy)相同的参考帧样本。对于水平梯度首先使用与分数位置fracy相对应的、具有解缩放(de-scaling)移位d-8的biofilters来垂直地内插信号,并且随后在水平方向上应用与分数位置fracx相对应的、具有解缩放移位18-d的梯度滤波器biofilterg。对于垂直梯度首先使用与分数位置fracy相对应的、具有解缩放移位d-8的biofilterg垂直地应用梯度滤波器,并且随后在水平方向上使用与分数位置fracx相对应的、具有解缩放移位18-d的梯度滤波器biofilters来执行信号位移。用于梯度计算的内插滤波器biofilterg和信号位移的内插滤波器biofilterf的长度可以较短(6-抽头)以便维持合理的复杂性。表1示出了可以用于bio中块运动矢量的不同分数位置的梯度计算的滤波器。表2示出了可以用于bio中的预测信号生成的内插滤波器。图8示出了用于8×4块(被视为图8中的当前块280)的梯度计算的示例。对于8×4块,视频编码器获取经运动补偿的预测项(也被称为mc预测项),并计算当前块280内的像素以及外面两行像素的hor/ver梯度,这是因为求解每个像素的vx和vy使用居中于每个像素的窗口ω内的像素的hor/ver梯度值和经运动补偿预测项,如式(4)中所示。例如,在jem中,该窗口的大小被设置为5×5,从而表示适配编码器获取经运动补偿的预测项并计算外面两行像素的梯度。窗口282表示5×5窗口居中于像素a,并且窗口284表示5×5窗口居中于像素b。表1:用于bio中的梯度计算的滤波器分数像素位置用于梯度的内插滤波器(biofilterg)0{8,-39,-3,46,-17,5}1/16{8,-32,-13,50,-18,5}1/8{7,-27,-20,54,-19,5}3/16{6,-21,-29,57,-18,5}1/4{4,-17,-36,60,-15,4}5/16{3,-9,-44,61,-15,4}3/8{1,-4,-48,61,-13,3}7/16{0,1,-54,60,-9,2}1/2{1,4,-57,57,-4,1}表2:用于bio中的预测信号生成的内插滤波器在jem中,当两个预测来自不同的参考图片时,bio应用与所有双向预测块。当lic针对cu被启用时,bio被禁用。图9是示出了基于双边模板匹配的所提出的解码器侧运动矢量推导的示例的概念图。jem还包括被称为模板匹配的编码工具。视频解码器30分别从列表0的初始mv0和列表1的mv1生成双边模板作为这两个预测块的加权组合,如图9中所示。模板匹配操作包括计算所生成的模板与参考图片中的样本区域(初始预测块周围)之间的成本测量。对于这两个参考图片中的每个图片,将产生最小模板成本的mv视为该列表的经更新mv,以替换原始图片。最后,这两个新的mv(即mv0’和mv1’,如图8中所示)被用于常规双向预测。由于它通常用于块匹配运动估计中,因此将绝对差之和(sad)用作成本测量。所提出的dmvd技术被应用于双向预测的合并模式,其中一个预测来自过去的参考图片并且另一预测来自未来的参考图片,而无需传输另外的语法元素。在jem4.0中,在为一个cu选择lic、仿射、子cu合并候选或fruc时,不应用dmvd。图10a和图10b是示出了其中可以应用重叠块运动补偿(obmc)(例如jem中所包括的obmc)的子块的示例说明的概念图。图10a示出了帧间cu300,其包括4×4子块。对于当前子块302,在对当前子块302执行obmc时使用左侧相邻子块304和上方相邻子块306的mv。图10b示出了帧间cu310,其包括4×4子块。对于当前子块312,在对当前子块312执行obmc时使用左侧相邻子块314、上方相邻子块316、下方相邻子块318和右侧相邻子块320的mv。obmc已用于早期的视频标准,例如h.263中。在jem中,将针对除cu的右侧边界和底部边界之外的所有运动补偿(mc)块边界执行obmc。此外,obmc被应用于亮度和色度分量两者。在jem中,mc块对应于编码块。当cu用子cu模式(包括子cu合并、仿射和fruc模式,如kaiminghe、jiansun和xiaooutang在“guidedimagedfiltering”(patternanalysisandmachineintelligence,ieeetransactions,第35卷第6期,第1397-1409页,2013年)中描述的)来编码时,cu的每个子块是mc块。为了以统一的方式处理cu边界,在所有mc块边界的子块级执行obmc,其中子块大小被设置为等于4×4,如图10a和10b中所示出的。当obmc应用于当前子块时,除了当前运动矢量之外,还使用四个相连的相邻子块的运动矢量(如果可用并且与当前运动矢量不同)来推导当前子块的预测块。基于多个运动矢量的这些多个预测块被组合以生成当前子块的最终预测信号。图11a-图11d示出了用于确定当前子块312的预测块的过程。在图11a中,当前子块312的obmc预测等于使用上方相邻块324的mv确定的预测子块和使用当前子块的mv为当前子块确定的预测子块的加权平均。在图11b的示例中,当前子块312的obmc预测等于使用左侧相邻块326的mv确定的预测子块和使用当前子块的mv为当前子块确定的预测子块的加权平均。在图11c的示例中,当前子块312的obmc预测等于使用下方相邻块328的mv确定的预测子块和使用当前子块的mv为当前子块确定的预测子块的加权平均。在图11d的示例中,当前子块312的obmc预测等于使用右侧相邻块330的mv确定的预测子块和使用当前子块的mv为当前子块确定的预测子块的加权平均。在jem中,对于大小小于或等于256个亮度样本的cu,用信号发送cu级标志,以指示是否针对当前cu应用obmc。对于大小大于256个亮度样本或未使用amvp模式编码的cu,默认情况下应用obmc。在编码器处,在针对cu应用obmc时,在运动估计阶段会考虑其影响。使用通过使用顶部相邻块和左侧相邻块的运动信息的预测信号来补偿当前cu的原始信号的顶部和左侧边界,并且随后应用正常运动估计过程。本公开内容的技术可以解上文引入的一些或全部问题。本文所描述的所有与dmvd相关的技术(例如,fruc双边匹配、fruc模板匹配、双边模板匹配等等)都潜在地提供显著的比特率降低。然而,通过dmvd方法修正的mv可以用作后续块的mvp,并且对硬件实现方式不友好(例如,硬件实现方式可能会不期望的复杂)。例如,fruc双边匹配或模板匹配要求解码器执行解码器侧运动搜索来确定运动矢量,由于运动矢量的重构取决于解码器侧的像素域处理,这可能引起严重的依赖性问题。通常的实践是在视频编解码器的实际硬件设计中采用异步架构,以使得符号和像素吞吐量可以最大化。此外,参考样本的预先获取也很重要,因为当获取用于内插的参考样本时,高速缓存未命中会大大降低像素吞吐量。为了有效的硬件设计,潜在地期望知晓在解析阶段运动矢量的确切值。可惜的是,由于不能预先确定运动矢量的确切值(例如,在解析阶段中),因此解码器侧运动修正/搜索禁止使用前述技术。本公开内容描述了与对mvp的限制有关的技术。本公开内容的技术包括与不允许将由解码器侧mv修正方法推导出或修正的mv用作后续编码块的mvp有关的技术。推导出或修正的mv仅用于推导当前块的预测项。可以为当前块存储替代mv,并且取而代之地将其用作后续块的mvp。例如,替代mv可以是在dmvd修正之前的用信号发送的mv或根据预先定义的推导顺序的第一可用空间mv,或者是在没有解码器侧mv搜索的情况下以任何方式确定的mv。解码器侧mv修正方法包括jem中使用的fruc模板匹配、fruc双边匹配和双边模板匹配。根据一个示例,如果块被编码为合并模式并且接收到合并索引以指示使用哪个相邻mv。假定通过双边模板匹配来修正用信号发送的合并mv,则不将经修正的mv存储为后续块的mvp。取而代之的是,将修正之前的mv存储为后续块的mvp。根据另一示例,如果如jem中一样将块编码为fruc模板匹配合并模式。不将通过模板匹配推导出的最终mv存储为后续块的mvp。取而代之的是,将预先定义的mv存储为后续块的mvp。预先定义的mv可以是第一可用的初始mv播种(seeding),根据预定义的推导顺序的第一可用空间mv,或者是在没有解码器侧mv搜索情况下确定mv的任何方式。根据另一示例,如果块被编码为帧间模式,并且所选择的mvp通过如jem的模板匹配被推导出。(mvd+经修正的mvp)用于获取当前块的预测项。但是不将(mvd+经修正的mvp)存储为后续块的mvp。取而代之的是,将(mvd+原始用信号发送的mvp)存储为后续块的mvp。在其它示例中,也可以使用位于非紧邻位置的非相邻运动矢量来推导或外插当前块的mvp值,而不是在修正之前使用初始播种或原始用信号发送的mvp来进行mvp推导。例如,可以使用拟合(x-1,y)和(x-n,y)的线性模型来估计当前块的x方向mvp值。类似地,可以使用拟合(x,y-1)和(x,y-n)的线性模式来估计当前块的y方向mvp值。这是为了在运动搜索在解码器侧不可用时提高mvp的质量。本公开内容还描述了对mvp的其它潜在限制。在一些示例中,该限制仅适用于使用利用了重构像素的dmvd方法(例如jem中的模板匹配方法)的块。在一些示例中,通过dmvd方法推导出的mv不用作相同图片内后续块的mvp。换言之,通过dmvd方法推导出的mv可以用作后续图片中各块的mvp。在一些示例中,通过dmvd方法推导出的mv不用作后续块的mvp,但可以用作在后续块中执行obmc的mv。图12是示出了可以实现本公开内容中所描述的技术的示例性视频编码器20的框图。视频编码器20可执行对视频切片内的视频块的帧内和帧间编码。帧内编码依赖于空间预测来减少或移除给定视频帧或图片内视频中的空间冗余。帧间编码依赖于时间预测以减少或移除视频序列的相邻帧或图片内视频中的时间冗余。帧内模式(i模式)可以指几种基于空间的压缩模式中的任何一种。证件模式(例如单向预测(p模式)或双向预测(b模式)可以指几种基于时间的压缩模式中的任何一种。在图12的示例中,视频编码器20包括视频数据存储器33、分割单元35、预测处理单元41、求和器50、变换处理单元52、量化单元54、熵编码单元56。预测处理单元41包括运动估计单元(meu)42、运动补偿单元(mcu)44和帧内预测单元46。对于视频块重构,视频编码器20还包括逆量化单元58、逆变换处理单元60、求和器62、滤波器单元64和解码图片缓冲器(dpb)66。如图12中所示,视频编码器20接收视频数据并将接收到的视频数据存储在视频数据存储器33中。视频数据存储器33可以存储将由视频编码器20的组件编码的视频数据。存储在视频数据存储器33中的视频数据可以例如从视频源18获得。dpb66可以是参考图片存储器,其存储参考视频数据以用于由视频编码器20例如在帧内或帧间编码模式中对视频数据进行编码。视频数据存储器33和dpb66可以由多种存储设备中的任何一种形成,例如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻式ram(mram)、电阻式ram(rram)或其它类型的存储设备。视频数据存储器33和dpb66可以由相同的存储器设备或单独的存储设备提供。在各种示例中,视频数据存储器33可以与视频编码器20的其它组件一起在芯片上,或者相对于那些组件在芯片外。分割单元35从视频数据存储器33取回视频数据,并将视频数据分割为视频块。该分割还可以包括分割为切片、瓦片或其它较大的单元,以及例如根据lcu和cu的四叉树结构的视频块分割。视频编码器20通常示出了对将被编码的视频切片内的视频块进行编码的组件。切片可以被划分为多个视频块(并且可能被划分为被称为瓦片的视频块集合)。预测处理单元41可以基于误差结果(例如,编码率和失真水平)来为当前视频块选择多个可能编码模式中的一个编码模式,例如多个帧内编码模式中的一个或多个帧间编码模式中的一个。预测处理单元41可以将所得到的帧内或帧间编码块提供给求和器50以生成残差块数据,并提供给求和器62以重构编码块以用作参考图片。预测处理单元41内的帧内预测单元46可以相对于与要编码的当前块在相同帧或切片中的一个或多个相邻块执行当前视频块的帧内预测编码,以提供空间压缩。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一个或多个参考图片中的一个或多个预测块执行当前视频块的帧间预测编码,以提供时间压缩。运动估计单元42和运动补偿单元44可以被配置为根据本公开内容中所描述的技术来执行dmvd。运动估计单元42可以被配置为根据视频序列的预先确定的模式来确定视频切片的帧间预测模式。预先确定的模式可以将序列中的视频切片指定为p切片或b切片。运动估计单元42和运动补偿单元44可以是高度集成的,但是出于概念性目的而分开地示出。由运动估计单元42执行的运动估计是生成运动矢量的过程,该运动矢量估计视频块的运动。例如,运动矢量可以指示当前视频帧或图片内的视频块的pu相对于参考图片内的预测块的位移。预测块是发现为与要编码的视频块的pu在像素差方面紧密匹配的块,该像素差可以由绝对差之和(sad)、平方差之和(ssd)或其它差异度量来确定。在一些示例中,视频编码器20可以计算存储在dpb66中的参考图片的子整数像素位置的值。例如,视频编码器20可以内插参考图片的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可以相对于全部像素位置和分数像素位置执行运动搜索,并且以分数像素精度输出运动矢量。运动估计单元42通过将pu的位置与参考图片的预测块的位置进行比较来计算帧间编码切片中的视频块的pu的运动矢量。可以从第一参考图片列表(列表0)或第二参考图片列表(列表1)中选择参考图片,其中每个参考图片列表标识存储在dpb66中的一个或多个参考图片。运动估计单元42将所计算的运动矢量发送给熵编码单元56和运动补偿单元44。由运动补偿单元44执行的运动补偿可以涉及基于通过运动估计(可能执行至子像素精度的内插)确定的运动矢量来获取或生成预测块。在接收到当前视频块的pu的运动矢量后,运动补偿单元44可以在参考图片列表中的一个参考图片列表中定位运动矢量指向的预测块。视频编码器20通过从正被编码的当前视频块的像素值中减去预测块的像素值来形成残差视频块,从而形成像素差值。像素差值形成该块的残差数据,并且可以包括亮度差和色度差分量。求和器50表示执行该减法运算的一个或多个组件。运动补偿单元44还可以生成与视频块和视频切片相关联的语法元素,以供视频解码器30在对视频切片的视频块进行解码时使用。在预测处理单元41经由帧内预测或帧间预测生成针对当前视频块的预测块之后,视频编码器20通过从当前视频块减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个tu中,并且被应用于变换处理单元52。变换处理单元52使用变换(例如离散余弦变换(dct)或概念是类似的变换)将残差视频数据变换成残差变换系数。变换处理单元52可以将残差视频数据从像素域转换到变换域,例如频域。变换处理单元52可以将所得到的变换系数发送给量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程可以减小与一些或所有系数相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54随后可以执行对包括经量化变换系数的矩阵的扫描。在另一示例中,熵编码单元56可以执行扫描。在量化之后,熵编码单元56对经量化变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区间划分熵(pipe)编码或另一熵编码方法或技术。在由熵编码单元56进行熵编码之后,可以将经编码比特流发送到视频解码器30,或者将其存档以供稍后传输或由视频解码器30取回。熵编码单元56还可以对当前正在编码的视频切片的运动矢量和其它语法元素进行熵编码。逆量化单元58和逆变换处理单元60分别应用逆量化和逆变换,以重构像素域中的残差块,以供稍后用作参考图片的参考块。运动补偿单元44可以通过将残差块添加到参考图片列表中的一个参考图片列表内的参考图片中的一个参考图片的预测块来计算参考块。运动补偿单元44还可以将一个或多个内插滤波器应用于重构残差块以计算用于运动估计的子整数像素值。求和器62将重构残差块添加到由运动补偿单元44产生的运动补偿的预测块以产生重构块。滤波器单元64对重构块(例如,求和器62的输出)进行滤波,并将经滤波的重构块存储在dpb66中以用作参考块。该参考块可以由运动估计单元42和运动补偿单元44用作参考块,以对在后续视频帧或图片中的块进行帧间预测。滤波器单元64旨在表示解块(deblock)滤波器、样本自适应偏移(sao)滤波器、和自适应环路滤波器(alf)或任何其它类型的环路滤波器中的任何一种或任何组合。例如,解块滤波器可以应用解块滤波来对块边界进行滤波以从重构视频中去除块状伪影。sao滤波器可以将偏移应用于重构像素值以便改善整体编码质量。也可以使用其它环路滤波器(环路内或环路后)。图13是示出了可以实现本公开内容中所描述的技术的示例性视频解码器30的框图。例如,图13的视频解码器30可以被配置为:接收上面针对图12的视频编码器20所描述的信令。在图13的示例中,视频解码器30包括视频数据存储器78、熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、求和器90、滤波器单元92和dpb94。预测处理单元81包括运动补偿单元82和帧内预测单元84。在一些示例中,视频解码器30可以执行与针对图12的视频编码器20所描述的编码轮次大体上互逆的解码轮次。在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频切片的视频块和相关联语法元素的经编码视频比特流。视频解码器20将接收到的经编码视频比特流存储在视频数据存储器78中。视频数据存储器78可以存储将由视频解码器30的组件解码的视频数据,例如经编码视频比特流。可以例如经由链路16从存储设备26、或从本地视频源(例如相机)、或通过访问物理数据存储介质来获得存储在视频数据存储器78中的视频数据。视频数据存储器78可以形成编码图片缓冲器(cpb),其存储来自经编码视频比特流的经编码视频数据。dpb94可以是参考图片存储器,其存储由视频解码器30例如在帧内或帧间编码模式中对视频数据进行解码时使用的参考视频数据。视频数据存储器78和dpb94可以由各种存储器设备(例如dram、sdram、mram、rram或其它类型的存储器设备)中的任何一种形成。视频数据存储器78和dpb94可以由相同的存储器设备或单独的存储设备提供。在各种示例中,视频数据存储器78可以与视频解码器30的其它组件一起在芯片上,或者相对于那些组件在芯片外。视频解码器30的熵解码单元80对存储在视频数据存储器78中的视频数据进行熵解码,以生成经量化系数、运动矢量和其它语法元素。熵解码单元80将运动矢量和其它语法元素转发给预测处理单元81。视频解码器30可以在视频切片级和/或视频块级接收语法元素。当视频切片被编码为帧内编码(i)切片时,预测处理单元81的帧内预测单元84可以基于用信号发送的帧内预测模式和来自当前帧或图片的先前解码块的数据来生成针对当前视频切片的视频块的预测数据。当视频帧被编码为帧间编码切片(例如,b切片或p切片)时,预测处理单元81的运动补偿单元82基于运动矢量和从熵解码单元80接收的其它语法元素来产生针对当前视频切片的视频块的预测块。可以从参考图片列表中的一个参考图片列表内的参考图片中的一个参考图片产生预测块。视频解码器30可基于存储在dpb94中的参考图片使用默认构造技术来构造参考帧列表(列表0和列表1)。结合视频解码器30的其它部分,运动补偿单元82可以被配置为根据本公开内容中所描述的技术来执行dmvd。运动补偿单元82通过解析运动矢量和其它语法元素来确定针对当前视频切片的视频块的预测信息,并且使用该预测信息来产生针对正被解码的当前视频块的预测块。例如,运动补偿单元82使用一些所接收到的语法元素来确定用于对视频切片的视频块进行编码的预测模式(例如,帧内或帧间预测),帧间预测切片类型(例如,b切片或p切片),切片的一个或多个参考图片列表的构造信息,切片的每个帧间编码视频块的运动矢量,切片的每个帧间编码视频块的帧间预测状态、以及用于对当前视频切片中的视频块进行解码的其它信息。运动补偿单元82还可基于内插滤波器来执行内插。运动补偿单元82可如由视频编码器20在对视频块的编码期间使用的那样使用内插滤波器,以计算参考块的子整数像素的内插值。在这种情况下,运动补偿单元82可以从接收到的语法元素来确定由视频编码器20使用的内插滤波器,并且使用该内插滤波器来产生预测块。逆量化单元86对在比特流中提供并由熵解码单元80解码的经量化变换系数进行逆量化,即,解量化。逆量化过程可以包括使用由视频编码器20针对视频切片中的每个视频计算的量化参数来确定量化程度,并且同样地确定应该应用的逆量化程度。逆变换处理单元88将逆变换(例如,逆dct、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便产生像素域中的残差块。在预测处理单元使用例如帧内或帧间预测来生成针对当前视频块的预测块之后,视频解码器30通过将来自逆变换处理单元88的残差块与由运动补偿单元82生成的相应预测块进行求和来形成重构视频块。求和器90表示执行该求和运算的一个或多个组件。滤波器单元92表示解块滤波器、sao滤波器、和alf、或任何其它类型的环路滤波器(在编码环路中或在编码环路之后)中的任何滤波器或任何组合。随后将给定帧或图片中的经解码视频块存储在dpb94中,该dpb94存储用于后续运动补偿的参考图片。dpb94可以是另外存储器的一部分或与该另外存储器分开,该另外存储器存储经解码视频以供稍后在显示设备(例如图1的显示设备32)上呈现。视频解码器30表示被配置为进行以下操作的视频解码器的示例:确定视频数据的块是在帧间预测模式中编码的;根据本公开内容中所描述的各种技术或技术组合中的任何技术来确定视频数据块的运动信息;使用该运动信息来在参考图片中定位参考块;以及基于参考块来生成针对视频数据块的预测块。运动信息可以包括运动矢量、运动矢量精度和参考图片索引中的一些或全部。视频解码器30可以被配置为:确定针对视频数据块启用了dmvd模式,并且根据dmvd模式来处理参考块。dmvd模式可以是fruc模板匹配、fruc双边匹配和双边模板匹配中的任何一种。视频解码器30还可以被配置为:将残差数据添加到预测块以生成视频数据的重构块;处理视频数据的重构块以生成视频数据的解码块;以及输出视频数据的解码块。为了输出视频数据的解码块,视频解码器可以将包括视频数据的解码块的图片存储在解码图片缓冲器中以用作对视频数据的后续图片进行解码时的参考图片和/或将包括视频数据的解码块的图片输出到显示设备。视频解码器30还表示被配置为进行以下操作的视频解码器的示例:确定视频数据的第一块是在帧间预测模式中编码的;确定针对视频数据的第一块启用了解码器侧运动矢量推导(dmvd)模式;确定视频数据的第一块的运动矢量;根据dmvd模式来修正运动矢量以确定经修正运动矢量;使用经修正运动矢量,生成针对第一块的预测块;以及将视频数据的第一块的运动矢量用作第二块的mvp。例如,运动矢量可以具有第一精度,并且经修正运动矢量具有与第一精度不同的第二精度,并且其中,将视频数据的第一块的运动矢量用作mvp包括:使用具有第一精度的运动矢量。视频解码器30还表示被配置为进行以下操作的视频解码器的示例:确定视频数据的第一块是在帧间预测模式中编码的;确定针对视频数据的第一块启用了解码器侧运动矢量推导(dmvd)模式;确定视频数据的第一块的运动矢量;根据dmvd模式来修正运动矢量以确定经修正运动矢量;使用经修正运动矢量,生成针对第一块的预测块;以及使用预先定义的运动矢量作为第二块的运动矢量预测项(mvp)。视频解码器30还表示被配置为进行以下操作的视频解码器的示例:确定视频数据的第一块是在帧间预测模式中编码的;确定针对视频数据的第一块启用了dmvd模式;确定视频数据的第一块的运动矢量;根据dmvd模式来修正运动矢量以确定经修正运动矢量;使用经修正运动矢量,生成针对第一块的预测块;以及使用线性模型基于第一块的运动矢量来确定第二块的运动矢量预测项(mvp)。图14是示出了本公开内容中所描述的示例性视频解码技术的流程图。图1的技术。将参考通用视频解码器(例如但不限于视频解码器30)来描述图14的技术。在一些实例中,可以由视频编码器(例如视频编码器20)来执行图14的技术,在这种情况下,通用视频解码器对应于视频编码器的解码环路或其它解码功能。在图14的示例中,视频解码器确定视频数据的第一块是在帧间预测模式中编码的(350)。视频解码器确定用于视频数据的第一块的第一运动矢量(352)。视频解码器对用于第一块的第一运动矢量执行运动矢量修正,以确定用于视频数据的第一块的经修正运动矢量(354)。为了对第一块的第一运动矢量执行运动矢量修正,视频解码器可以确定针对视频数据的第一块启用了dmvd模式,并根据dmvd模式来对第一块的第一运动矢量执行运动矢量修正。例如,dmvd模式可以是fruc模板匹配、fruc双边匹配或双边模板匹配之一。视频解码器使用经修正运动矢量来在第一参考图片中定位第一参考块(356)。视频解码器基于第一参考块来生成针对视频数据的第一块的第一预测块(358)。响应于确定视频数据的第二块是在利用与第一块相关联的运动矢量作为运动矢量预测项的模式中编码的,并且响应于对用于第一块的第一运动矢量执行运动矢量修正,视频解码器使用不同的运动矢量作为与第一块相关联的运动矢量预测项(360)。例如,如果第二块是在合并模式中编码的,则可以使用空间或时间相邻块的运动矢量来生成第二块的候选列表。然而,如果第二块的那些相邻块中的一个相邻块是使用经修正运动矢量来编码的,则替代地可以将不同的运动矢量添加到候选列表,而不是将经修正运动矢量添加到候选列表。利用与第一块相关联的运动矢量作为运动矢量预测项的模式可以是例如合并模式,其中使用先前编码的块的运动矢量来生成当前块的运动信息的候选列表,或者可以是amvp模式,其中先前编码的块的运动矢量用作当前块的运动矢量的运动矢量预测项。例如,不同的运动矢量可以是第一块的第一运动矢量或者可以是默认运动矢量。在一些示例中,视频解码器可以通过确定第一运动矢量预测和第一运动矢量差来确定视频数据的第一块的第一运动矢量,并通过修正第一运动矢量预测项来对第一块的第一运动矢量执行运动矢量修正,以确定第一经修正运动矢量预测项。视频解码器可以将视频数据的第一块的经修正运动矢量设置为等于第一经修正运动矢量预测项加上第一运动矢量差,并将运动矢量预测项设置为等于第一运动矢量预测项加上第一运动矢量差。基于第一运动矢量,视频解码器确定用于第二块的第二运动矢量(362)。例如,视频解码器可以确定第二块是在合并模式或amvp模式中编码的,并生成第二块的候选列表。为了生成第二块的候选列表,视频解码器可以将第一运动矢量或默认运动矢量添加到候选列表。因此,视频解码器可以确定视频数据的第二块的运动矢量候选列表,其包括不是第一经修正运动矢量的、与第一块相关联的候选运动矢量。视频解码器使用该第二运动矢量来在第二参考图片中定位第二参考块(364)。视频解码器可以将第一残差数据添加到第一预测块以生成视频数据的第一重构块,并处理视频数据的第一重构块以生成视频数据的第一解码块。使用第二运动矢量,视频解码器可以在第二参考图片中定位第二参考块,并基于第二参考块来生成针对视频数据的第二块的第二预测块。视频解码器可以将第二残差数据添加到第二预测块以生成视频数据的第二重构块,并处理视频数据的第二重构块以生成视频数据的第二解码块。为了处理第一重构块和第二重构块,视频解码器可以例如执行滤波或其它类型的处理。视频解码器可以输出包括视频数据的第一解码块和视频数据的第二解码块的图片。为了输出图片,视频解码器可以将图片的副本存储在解码图片缓冲器中,以用作对视频数据的后续图片进行编码或解码时的参考图片。视频解码器可以另外将图片输出到显示设备。在一个或多个示例中,可以在硬件、软件、固件、或者其任何组合中实现所描述的功能。如果在软件中实现,则各功能可以作为一条或多条指令或代码存储在计算机可读介质上或通过计算机可读介质来发送,并由基于硬件的处理单元来执行。计算机可读介质可以包括计算机可读存储介质(其对应于有形介质,例如数据存储介质)或通信介质,通信介质包括促进例如根据通信协议将计算机程序从一地转移到另一地的任何介质。以此方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或(2)通信介质,例如信号或载波。数据存储介质可以是能被一个或多个计算机或一个或多个处理器访问以取回用于实现本公开内容中所描述技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。举例而言而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、闪存、或可以用于存储具有指令或数据结构形式并且可以由计算机访问的期望程序代码的任何其它介质。此外,任何连接可以适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字用户线(dsl)或诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其它远程源传输指令,则同轴电缆、光纤光缆、双绞线、dsl或诸如红外线、无线电和微波之类的无线技术包括在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬态介质,而是替代地指向非瞬态、有形存储介质。如本文所使用的,磁盘(disk)和光盘(disc)包括压缩光盘(cd)、激光光盘、光盘、数字多功能光盘(dvd)、软盘和光盘,其中磁盘通常磁性地复制数据,而光盘利用激光来光学地复制数据。上面各项的组合也应该包括在计算机可读介质的范围内。指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)、或其它等效集成或分立逻辑电路。相应地,如本文中使用的术语“处理器”可以指任何前述结构或适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供、或被并入经组合的编解码器中。此外,各技术可以完全在一个或多个电路或逻辑元件中实现。本公开内容的技术可以在广泛多样的设备或装置中实现,包括无线手持设备、集成电路(ic)或一组ic(例如,芯片组)。在本公开内容中描述了各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定要求由不同硬件单元实现。相反,如上所述,各个单元可以被组合在编解码器硬件单元中或由可互操作的硬件单元(包括如上所述的一个或多个处理器)结合适当软件和/或固件的集合来提供。已经描述了各个示例。这些和其它示例落入所附权利要求的范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1