用于帧间预测插值的参考尺寸

文档序号:1358577 发布日期:2020-07-24 浏览:16次 >En<

阅读说明:本技术 用于帧间预测插值的参考尺寸 (Reference size for inter-prediction interpolation ) 是由 张凯 张莉 刘鸿彬 许继征 王悦 于 2019-11-15 设计创作,主要内容包括:描述了用于实施视频处理技术的技术。在一个示例实施方式中,一种视频处理的方法包括对于尺寸为WxH的视频的当前块和该视频的比特流表示之间的转换,确定维度为(W+N-1)x(H+N-1)的第二块以用于该转换期间的运动补偿,其中第二块是基于维度为(W+N-1-PW)x(H+N-1-PH)的参考块而确定的。N表示滤波器尺寸,并且W、H、N、PW和PH是非负整数。PW和PH不都等于0。该方法还包括基于该确定执行该转换。(Techniques for implementing video processing techniques are described. In one example embodiment, a method of video processing includes, for a transition between a current block of video of size WxH and a bitstream representation of the video, determining a second block of dimension (W &#43; N-1) x (H &#43; N-1) for motion compensation during the transition, wherein the second block is determined based on a reference block of dimension (W &#43; N-1-PW) x (H &#43; N-1-PH). N denotes the filter size and W, H, N, PW and PH are non-negative integers. PW and PH are not both equal to 0. The method also includes performing the conversion based on the determination.)

用于帧间预测插值的参考尺寸

相关申请的交叉引用

根据适用的专利法和/或依据巴黎公约的规则,本申请旨在及时要求于2018年11月16日提交的国际专利申请No.PCT/CN2018/115840、2019年1月2日提交的国际专利申请No.PCT/CN2019/070060、2019年1月6日提交的国际专利申请No.PCT/CN2019/070549、2019年2月20日提交的国际专利申请No.PCT/CN2019/075546、2019年2月22日提交的国际专利申请No.PCT/CN2019/075858、2019年3月6日提交的国际专利申请No.PCT/CN2019/077179、2019年3月20日提交的国际专利申请No.PCT/CN2019/078939、以及2019年3月24日提交的国际专利申请No.PCT/CN2019/079397的优先权和利益。出于美国法律规定的所有目的,上述申请的全部公开内容通过引用并入作为本申请公开内容的一部分。

技术领域

本专利文档涉及图像和视频编码及解码。

背景技术

数字视频在互联网和其他数字通信网络中占据了最大的带宽使用。随着能够接收和显示视频的连接用户设备的数量增加,预计对数字视频使用的带宽需求将继续增长。

发明内容

本文档公开了可以由视频编码器和解码器在编码和解码操作期间使用的各种视频处理技术。

在一个示例方面,公开了一种视频处理的方法。该方法包括:为使用仿射编码工具在视频的当前块和视频的比特流表示之间的转换确定当前块的子块的第一运动矢量和作为当前块的代表性运动矢量的第二运动矢量符合尺寸约束。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:为视频的当前块和视频的比特流表示之间的转换确定包括六个参数的仿射模型。仿射模型从当前块的邻近块的仿射编码信息继承。该方法还包括基于仿射模型执行转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的块和视频的比特流表示之间的转换,基于宽度为W且高度为H的块的尺寸来确定双向预测编码技术是否适用于该块,其中W和H为正整数。该方法还包括根据该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的块和视频的比特流表示之间的转换,基于根据编码树划分过程而作为块的子编码单元的子块的尺寸,确定编码树划分过程是否适用于该块。子块的宽度为W且高度为H,其中W和H为正整数。该方法还包括根据该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,基于关于当前块的位置的规则来确定是否推导了编码单元级别权重双向预测(Bi-prediction with Coding unit level Weight,BCW)编码模式的索引。在BCW编码模式下,包括多个权重的权重集被用于生成当前块的双向预测值。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于使用组合帧间和帧内预测(Combined Inter and Intra Prediction,CIIP)编码技术编码的视频的当前块和该视频的比特流表示之间的转换,独立于邻近块的帧内预测模式来确定当前块的帧内预测模式。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于使用组合帧间和帧内预测(CIIP)编码技术编码的视频的当前块和该视频的比特流表示之间的转换,根据第一邻近块的第一帧内预测模式和第二邻近块的第二帧内预测模式来确定当前块的帧内预测模式。第一邻近块是使用帧内预测编码技术进行编码的,并且第二邻近块是使用CIIP编码技术进行编码的。第一帧内预测模式被赋予不同于第二帧内预测模式的优先级。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,基于当前块的尺寸来确定组合帧间和帧内预测(CIIP)过程是否适用于当前块的颜色分量。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,基于当前块的特性,确定是否将组合帧间和帧内预测(CIIP)编码技术应用于当前块。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,基于当前块是否是用组合帧间和帧内预测(CIIP)编码技术编码的,确定是否要对当前块禁用编码工具。编码工具包括以下中的至少一个:双向光流(Bi-Directional Optical Flow,BDOF)、重叠块运动补偿(Overlapped Block MotionCompensation,OBMC)或解码器侧运动矢量细化过程(decoder-side motion vectorrefinement process,DMVR)。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的块和视频的比特流表示之间的转换,确定用于空域运动预测的运动矢量的第一精度P1和用于时域运动预测的运动矢量的第二精度P2。P1和/或P2是分数,并且P1和P2都不在比特流表示中被信令通知。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的块和视频的比特流表示之间的转换,确定精度为(Px,Py)的运动矢量(MVx,MVy)。Px与MVx相关联,并且Py与MVy相关联。MVx和MVy存储为各自具有N比特的整数,并且MinX≤MVx≤MaxX且MinY≤MVy≤MaxY,其中MinX、MaxX、MinY和MaxY是实数。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,根据当前块的编码模式来确定共享Merge列表是否适用于当前块。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于尺寸为WxH的视频的当前块和该视频的比特流表示之间的转换,确定维度为(W+N-1)x(H+N-1)的第二块以用于该转换期间的运动补偿。第二块是基于维度为(W+N-1-PW)x(H+N-1-PH)的参考块而确定的。N表示滤波器尺寸,W、H、N、PW和PH是非负整数。PW和PH不都等于0。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于尺寸为WxH的视频的当前块和该视频的比特流表示之间的转换,确定维度为(W+N-1)x(H+N-1)的第二块以用于该转换期间的运动补偿。W、H是非负整数,并且N是非负整数并基于滤波器尺寸。在该转换期间,根据对原始运动矢量的运动矢量细化操作,基于多点搜索确定细化的运动矢量,并且通过重复一个或多个非边界像素确定参考块的像素长边界。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:对于使用组合帧间-帧内预测(CIIP)编码技术编码的视频的块和该视频的比特流表示的转换,基于块中一位置处的帧间预测值和帧内预测值的加权和来确定该位置处的预测值。加权和基于将偏移添加到基于帧间预测值和帧内预测值而获得的初始和,并且该偏移在执行以确定加权和的右移操作之前被添加。该方法还包括基于该确定执行该转换。

在另一示例方面,公开了一种视频处理的方法。该方法包括:确定被仿射编码的当前视频块的代表性运动矢量和该当前视频块的子块的运动矢量之间的尺寸限制,以及通过使用尺寸限制来执行当前视频块或子块的比特流表示和像素值之间的转换。

在另一示例方面,公开了另一种视频处理的方法。该方法包括:为被仿射编码的当前视频块确定该当前视频块的一个或多个子块,其中每个子块的尺寸为MxN个像素,其中M和N是2或4的倍数,使子块的运动矢量符合尺寸限制,以及通过使用尺寸限制,条件性地基于触发来执行当前视频块的比特流表示和像素值之间的转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:确定当前视频块满足尺寸条件,以及基于该确定,通过排除当前视频块的双向预测编码模式来执行当前视频块的比特流表示和像素值之间的转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:确定当前视频块满足尺寸条件,以及基于该确定来执行当前视频块的比特流表示和像素值之间的转换,其中帧间预测模式是根据尺寸条件在比特流表示中信令通知的。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:确定当前视频块满足尺寸条件,以及基于该确定来执行当前视频块的比特流表示和像素值之间的转换,其中在该转换期间Merge候选列表的生成取决于尺寸条件。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:确定当前视频块的子编码单元满足尺寸条件,以及基于该确定来执行当前视频块的比特流表示和像素值之间的转换,其中用于生成子编码单元的编码树划分过程取决于尺寸条件。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:基于当前视频块的位置来确定用于当前视频块的广义双向预测(Generalized Bi-prediction,GBi)过程的权重索引,以及使用权重索引执行当前视频块和其比特流表示之间的转换以实施GBi过程。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:确定当前视频块被编码为帧内-帧间预测(Intra-Inter Prediction,IIP)编码块,以及使用用于确定当前视频块的帧内预测模式或最可能模式(Most Probable Mode,MPM)的简化规则来执行当前视频块和其比特流表示之间的转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:确定当前视频块满足简化准则,以及通过禁止将帧间-帧内预测模式用于当前视频块和比特流表示之间的转换或者通过禁用用于该转换的附加编码工具来执行该转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:使用基于运动矢量的编码过程执行当前视频块和当前视频块的比特流表示之间的转换,其中(a)在转换过程期间,精度P1用于存储空域运动预测结果,并且精度P2用于存储时域运动预测结果,其中P1和P2是分数,或者(b)精度Px用于存储x运动矢量,并且精度Py用于存储y运动矢量,其中Px和Py是分数。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:通过提取(W2+N–1–PW)*(H2+N–1–PH)块、对提取的块进行像素填充、对像素填充的块执行边界像素重复、以及获得尺寸为W1xH1的小子块的像素值,在当前视频块的尺寸为W2xH2的大子块中内插该小子块,其中W1、W2、H1、H2以及PW和PH为整数,以及使用小子块的内插的像素值执行当前视频块和当前视频块的比特流表示之间的转换。

在另一示例方面,公开了另一种视频处理的方法。该方法包括:在维度为WxH的当前视频块和该当前视频块的比特流表示的转换期间,通过在运动补偿操作期间提取(W+N–1–PW)*(W+N–1–PH)个参考像素并且在提取的参考像素外部填充参考像素来执行运动补偿操作,以及使用运动补偿操作的结果执行当前视频块和当前视频块的比特流表示之间的转换,其中W、H、N、PW和PH为整数。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:基于当前视频块的尺寸来确定当前视频块的双向预测或单向预测不被允许,以及基于该确定,通过禁用双向预测或单向预测模式来执行当前视频块的比特流表示和像素值之间的转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:基于当前视频块的尺寸来确定当前视频块的双向预测或单向预测不被允许,以及基于该确定,通过禁用双向预测或单向预测模式来执行当前视频块的比特流表示和像素值之间的转换。

在又一示例方面,公开了一种视频编码器装置。视频编码器包括被配置为实施上述方法的处理器。

在又一示例方面,公开了一种视频编码器装置。视频编码器包括被配置为实施上述方法的处理器。

在又一示例方面,公开了一种其上存储有代码的计算机可读介质。该代码以处理器可执行代码的形式体现本文描述的方法之一。

这些以及其他特征贯穿本文档进行描述。

附图说明

图1示出了基于子块的预测的示例。

图2A示出了4参数仿射模型。

图2B示出了6参数仿射模型。

图3示出了每个子块的仿射运动矢量场的示例。

图4A示出了AF_MERGE候选的示例。

图4B示出了AF_MERGE候选的另一示例。

图5示出仿射Merge模式的候选位置。

图6示出了仿射模式的编码单元(Coding Unit,CU)的受约束的子块运动矢量的示例。

图7A示出了将CU划分为两个三角形预测单元的135度部分的示例。

图7B示出了将CU划分为两个三角形预测单元的45度划分模式的示例。

图8示出了邻近块的位置的示例。

图9示出了插值之前的参考块的重复边界像素的示例。

图10示出了编码树单元(Coding Tree Unit,CTU)和CTU(区域)线的示例。阴影CTU(区域)在一条CUT(区域)线上,未阴影CTU(区域)在另一条CUT(区域)线上。

图11是用于实施本文描述的视频解码器或视频编码器装置的硬件平台的示例的框图。

图12是视频处理的示例方法的流程图。

图13示出了在DMVR中在列表0和列表1之间镜像的运动矢量差MVD(0,1)的示例。

图14示出了可以在一次迭代中检查的示例MV。

图15示出了填充以用于计算的所需的参考样点和边界。

图16是其中可以实施所公开技术的示例视频处理系统的框图。

图17是根据本公开的一种用于视频处理的方法的流程图表示。

图18是根据本公开的另一种用于视频处理的方法的流程图表示。

图19是根据本公开的另一种用于视频处理的方法的流程图表示。

图20是根据本公开的另一种用于视频处理的方法的流程图表示。

图21是根据本公开的另一种用于视频处理的方法的流程图表示。

图22是根据本公开的另一种用于视频处理的方法的流程图表示。

图23是根据本公开的另一种用于视频处理的方法的流程图表示。

图24是根据本公开的另一种用于视频处理的方法的流程图表示。

图25是根据本公开的另一种用于视频处理的方法的流程图表示。

图26是根据本公开的另一种用于视频处理的方法的流程图表示。

图27是根据本公开的另一种用于视频处理的方法的流程图表示。

图28是根据本公开的另一种用于视频处理的方法的流程图表示。

图29是根据本公开的另一种用于视频处理的方法的流程图表示。

图30是根据本公开的另一种用于视频处理的方法的流程图表示。

图31是根据本公开的另一种用于视频处理的方法的流程图表示。

图32是根据本公开的又一种用于视频处理的方法的流程图表示。

具体实施方式

为了便于理解,在本文档中使用了章节标题,并且不将每个章节中公开的技术和实施例的适用性仅限制于该章节。

1.摘要

本专利文档涉及视频/图像编码技术。具体地,涉及减少视频/图像编码中几种编码工具的带宽和线缓冲器。它可以应用于现有的视频编码标准(如HEVC)或待最终确定的标准(多功能视频编码)。它也可以应用于未来的视频/图像编码标准或视频/图像编解码器。

2.背景

视频编码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而发展起来的。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4可视化,并且这两个组织联合制作了H.262/MPEG-2视频和H.264/MPEG-4高级视频编码(Advanced Video Coding,AVC)和H.265/HEVC标准。自H.262以来,视频编码标准基于混合视频编码结构,其中利用了时域预测加变换编码。为了探索HEVC以外的未来视频编码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(Joint Video Exploration Team,JVET)。自那以后,JVET采用了许多新方法,并将其放入命名为联合探索模型(Joint Exploration Model,JEM)的参考软件中。在2018年4月,VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家小组(Joint Video Expert Team,JVET)成立,以致力于VVC标准,目标是与HEVC相比比特率降低50%。

2.1HEVC/VVC的帧间预测

插值滤波器

在HEVC,亮度子样点由8抽头插值滤波器生成,并且色度子样点由4抽头插值滤波器生成。

滤波器在两个维度上是可分离的。样点先水平过滤,然后垂直过滤。

2.2基于子块的预测技术

基于子块的预测首先由HEVC附录I(3D-HEVC)引入视频编码标准。利用基于子块的预测,诸如编码单元(CU)或预测单元(Prediction Unit,PU)的块被分成几个非重叠子块。不同的子块可以被分配不同的运动信息,诸如参考索引或运动矢量(Motion Vector,MV),并且对每个子块单独执行运动补偿(Motion Compensation,MC)。图1展示了基于子块的预测的概念。

为了探索HEVC以外的未来视频编码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。自那以后,JVET采用了许多新方法,并将其放入命名为联合探索模型(JEM)的参考软件中。

在JEM中,基于子块的预测被用于多种编码工具,诸如仿射预测、可选时域运动矢量预测(Alternative Temporal Motion Vector Prediction,ATMVP)、空时运动矢量预测(Spatial-Temporal Motion Vector Prediction,STMVP)、双向光流(Bi-directionalOptical flow,BIO)和帧速率上转换(Frame-Rate Up Conversion,FRUC)。仿射预测也被采用进VVC。

2.3仿射预测

在HEVC中,只有平移运动模型被应用于运动补偿预测(Motion CompensationPrediction,MCP)。而在现实世界中,有许多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在VVC中,应用简化的仿射变换运动补偿预测。如图2A和图2B所示,块的仿射运动场由两个(在4参数仿射模型中)或三个(在6参数仿射模型中)控制点运动矢量来描述。

块的运动矢量场(MVF)分别用等式(1)中的4参数仿射模型(其中,4参数被定义为变量a、b、e和f)和等式(2)中的6参数仿射模型(其中,4参数被定义为变量a、b、c、d、e和f)由以下等式描述:

其中,(mvh 0,mvh 0)是左上角控制点(Control Point,CP)的运动矢量,(mvh 1,mvh 1)是右上角控制点的运动矢量,并且(mvh 2,mvh 2)是左下角控制点的运动矢量,所有这三个运动矢量都被称为控制点运动矢量(control point motion vector,CPMV),(x,y)表示代表性点相对于当前块内的左上方样点的坐标。CP运动矢量可以用信令通知(像在仿射AMVP模式中)或者即时推导(像在仿射Merge模式中)。w和h是当前块的宽度和高度。实际上,除法是通过右移和取整运算来实施的。在VTM中,代表性点被定义为子块的中心位置,例如,当子块的左上角相对于当前块内的左上方样点的坐标是(xs,ys)时,代表性点的坐标被定义为(xs+2,ys+2)。

在无除法设计中,等式(1)和(2)被实施为:

对于(1)中所示的4参数仿射模型:

对于(2)中所示的6参数仿射模型:

最终,

Off=1<<(S-1)

其中,S表示计算精度。例如,在VVC中,S=7。在VVC中,在MC中用于具有(xs,ys)处的左上方样点的子块的MV由等式(6)计算,其中x=xs+2,并且y=ys+2。

为了推导每个4×4子块的运动矢量,如图3所示,根据等式(1)或(2)计算每个子块的中心样点的运动矢量,并取整到1/16的分数精确度。然后,应用运动补偿插值滤波器以用推导的运动矢量生成每个子块的预测。

仿射模型可以从空域邻近仿射编码块(诸如左侧、上侧、右上侧、左下和左上侧邻近块)继承,如图4A所示。例如,如果在仿射模式下编码图4A中的邻域左下侧块A,如由图4B中的A0表示的,则提取包含块A的邻近CU/PU的左上角、右上角和左下角的控制点(CP)运动矢量mv0 N、mv1 N和mv2 N。并且基于mv0 N、mv1 N和mv2 N计算当前CU/PU上的左上角/右上侧/左下侧的运动矢量mv0 C、mv1 C和mv2 C(仅用于6参数仿射模型)。应当注意,在VTM-2.0中,如果当前块是仿射编码的,则子块(例如,VTM中的4×4块)LT存储mv0,RT存储mv1。如果当前块是用6参数仿射模型编码的,则LB存储mv2;否则(用4参数仿射模型),LB存储mv2’。其他子块存储用于MC的MV。

应当注意,当CU是用仿射Merge模式(例如,在AF_MERGE模式下)编码的时,它从有效邻域重构块得到用仿射模式编码的第一块。并且候选块的选择顺序是从左侧、上侧、右上侧、左下侧到左上侧,如图4A所示。

在仿射Merge模式下,可将当前块的推导的CP MV mv0 C、mv1 C和mv2 C用作CP MV。或者它们可以在VVC中用作仿射帧间模式的MVP。应当注意,对于Merge模式,如果当前块是用仿射模式编码的,则在推导当前块的CP MV之后,当前块可以被进一步划分为多个子块,并且每个块将基于当前块的推导的CP MV来推导其运动信息。

2.4JVET中的示例实施例

不同于其中仅一个仿射空域邻近块可以用于推导块的仿射运动的VTM。在一些实施例中,为AF_MERGE模式构建单独的仿射候选列表。

1)将继承的仿射候选插入到候选列表中

继承的仿射候选是指候选是从用仿射模式编码的有效邻域重构块中推导的。如图5所示,候选块的扫描顺序是A1、B1、B0、A0和B2。当选择一个块(例如A1)时,应用两步过程:

1.a首先,使用覆盖该块的CU的三个角运动矢量来推导当前块的两个/三个控制点。

1.b基于当前块的控制点来推导当前块内的每个子块的子块运动。

2)插入构建的仿射候选

如果仿射Merge候选列表中的候选数量小于MaxNumAffineCand,则将构建的仿射候选插入到候选列表中。

构建的仿射候选意味着候选是通过组合每个控制点的邻域运动信息而构建的。

控制点的运动信息首先从图5所示的指定的空域邻域和时域邻域中推导。CPk(k=1、2、3、4)表示第k个控制点。A0、A1、A2、B0、B1、B2和B3是用于预测CPk(k=1、2、3)的空域位置;T是用于预测CP4的时域位置。

CP1、CP2、CP3和CP4的坐标分别是(0,0)、(W,0)、(H,0)和(W,H),其中W和H是当前块的宽度和高度。

每个控制点的运动信息根据以下优先级顺序而获得:

2.a对于CP1,检查优先级为B2→B3→A2。如果B2可用,则使用B2。否则,如果B2可用,则使用B3。如果B2和B3都不可用,则使用A2。如果所有三个候选都不可用,就无法获得CP1的运动信息。

2.b对于CP2,检查优先级为B1→B0;

2.c对于CP3,检查优先级为A1→A0;

2.d对于CP4,使用T。

其次,使用控制点的组合来构建运动模型。

需要三个控制点的运动矢量来计算6参数仿射模型中的变换参数。三个控制点可以从以下四个组合之一选择({CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4})。例如,使用CP1、CP2和CP3控制点来构建6参数仿射运动模型,表示为Affine(CP1,CP2,CP3)。

需要两个控制点的运动矢量来计算4参数仿射模型中的变换参数。两个控制点可以从以下六个组合之一选择({CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}、{CP3,CP4})。例如,使用CP1和CP2控制点来构建4参数仿射运动模型,表示为Affine(CP1,CP2)。

构建的仿射候选的组合按以下顺序插入到候选列表中:{CP1,CP2,CP3}、{CP1,CP2,CP4}、{CP1,CP3,CP4}、{CP2,CP3,CP4}、{CP1,CP2}、{CP1,CP3}、{CP2,CP3}、{CP1,CP4}、{CP2,CP4}、{CP3,CP4}

3)插入零运动矢量

如果仿射Merge候选列表中的候选数量小于MaxNumAffineCand,则零运动矢量被插入到候选列表中,直到列表满为止。

2.5仿射Merge候选列表

2.5.1仿射Merge模式

在VTM-2.0.1的仿射Merge模式中,只有第一可用仿射邻域可以用于推导仿射Merge模式的运动信息。在JVET-L0366中,仿射Merge模式的候选列表通过搜索有效仿射邻域并组合每个控制点的邻域运动信息而构建。

仿射Merge候选列表如以下步骤而构建:

1)插入继承的仿射候选

继承的仿射候选意味着候选是从其有效邻域仿射编码块的仿射运动模型推导的。在公共基础中,如图5所示,候选位置的扫描顺序是:A1、B1、B0、A0和B2。

在推导候选之后,执行完整的修剪过程,以检查是否已将相同的候选插入到列表中。如果存在相同的候选,则推导的候选被丢弃。

2)插入构建的仿射候选

如果仿射Merge候选列表中的候选数量小于MaxNumAffineCand(在该贡献中设置为5),则将构建的仿射候选插入到候选列表中。构建的仿射候选意味着候选是通过组合每个控制点的邻域运动信息而构建的。

控制点的运动信息首先从指定的空域邻域和时域邻域推导。CPk(k=1、2、3、4)表示第k个控制点。A0、A1、A2、B0、B1、B2和B3是用于预测CPk(k=1、2、3)的空域位置;T是用于预测CP4的时域位置。

CP1、CP2、CP3和CP4的坐标分别是(0,0)、(W,0)、(H,0)和(W,H),其中W和H是当前块的宽度和高度。

每个控制点的运动信息根据以下优先级顺序而获得:

对于CP1,检查优先级为B2→B3→A2。如果B2可用,则使用B2。否则,如果B2可用,则使用B3。如果B2和B3都不可用,则使用A2。如果所有三个候选都不可用,就无法获得CP1的运动信息。

对于CP2,检查优先级为B1→B0;

对于CP3,检查优先级为A1→A0;

对于CP4,使用T。

其次,使用控制点的组合来构建仿射Merge候选。

需要三个控制点的运动信息来构建6参数仿射候选。三个控制点可以从以下四个组合之一选择({CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4})。组合{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4}将被转换为由左上方、右上方和左下方控制点表示的6参数运动模型。

需要两个控制点的运动信息来构建4参数仿射候选。两个控制点可以从以下六个组合之一选择({CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}、{CP3,CP4})。组合{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}、{CP3,CP4}将被转换为由左上方和右上方控制点表示的4参数运动模型。

构建的仿射候选的组合如以下顺序插入到候选列表中:

{CP1,CP2,CP3}、{CP1,CP2,CP4}、{CP1,CP3,CP4}、{CP2,CP3,CP4}、{CP1,CP2}、{CP1,CP3}、{CP2,CP3}、{CP1,CP4}、{CP2,CP4}、{CP3,CP4}

对于组合的参考列表X(X是0或1),控制点中具有最高使用率的参考索引被选择作为列表X的参考索引,并且指向不同参考图片的运动矢量将被缩放。

在推导候选之后,将执行完整的修剪过程,以检查是否已将相同的候选插入到列表中。如果存在相同的候选,则推导的候选被丢弃。

3)用零运动矢量填充

如果仿射Merge候选列表中的候选数量少于5,则具有零参考索引的零运动矢量被插入到候选列表中,直到列表满为止。

2.5.2示例仿射Merge模式

在一些实施例中,仿射Merge模式可以简化如下:

1)通过比较覆盖邻近位置的编码单元,而不是比较VTM-2.0.1中推导的仿射候选,简化了继承的仿射候选的修剪过程。多达2个继承的仿射候选被插入仿射Merge列表。构建的仿射候选的修剪过程被完全移除。

2)在构建的仿射候选中移除MV缩放操作。如果控制点的参考索引不同,则构建的运动模型被丢弃。

3)构建的仿射候选的数量从10个减少到6个。

4)在一些实施例中,利用诸如ATMVP的子块预测的其他Merge候选,也被放入仿射Merge候选列表中。在这种情况下,仿射Merge候选列表可以用诸如子块Merge候选列表的一些其他名称来重命名。

2.6示例仿射Merge模式的控制点MV偏移

基于第一仿射Merge候选的CPMV偏移生成新的仿射Merge候选。如果第一仿射Merge候选启用4参数仿射模型,则通过偏移第一仿射Merge候选的2个CPMV,为每个新的仿射Merge候选推导2个CPMV;否则(启用6参数仿射模型),则通过偏移第一个仿射Merge候选的3个CPMV,为每个新的仿射Merge候选推导3个CPMV。在单向预测中,CPMV偏移被应用于第一候选的CPMV。在具有相同方向上的列表0和列表1的双向预测中,CPMV偏移如下应用于第一候选:

MVnew(L0),i=MVold(L0)+MVoffset(i) 等式(8)

MVnew(L1),i=MVold(L1)+MVoffset(i) 等式(9)

在具有相反方向上的列表0和列表1的双向预测中,CPMV偏移如下应用于第一候选:

MVnew(L0),i=MVold(L0)+MVoffset(i) 等式(10)

MVnew(L1),i=MVold(L1)-MVoffset(i) 等式(11)

具有不同偏移幅度的各种偏移方向可以用于生成新的仿射Merge候选。

已经测试了两种实施方式:

(1)生成具有8个不同的偏移方向和2个不同的偏移幅度的16个新的仿射Merge候选,如以下偏移集所示:

偏移集={(4,0),(0,4),(-4,0),(0,-4),(-4,-4),(4,-4),(4,4),(-4,4),(8,0),(0,8),(-8,0),(0,-8),(-8,-8),(8,-8),(8,8),(-8,8)}。

对于该设计,仿射Merge列表增加到20。潜在仿射Merge候选的数量总共为31个。

(2)生成具有4个不同的偏移方向和1个偏移幅度的4个新的仿射Merge候选,如以下偏移集所示:

偏移集={(4,0),(0,4),(-4,0),(0,-4)}。

仿射Merge列表像VTM2.0.1一样保持为5。移除四个时域构建的仿射Merge候选,以保持潜在仿射Merge候选的数量不变,例如总共为15个。假设CPMV1、CPMV2、CPMV3和CPMV4的坐标是(0,0)、(W,0)、(H,0)和(W,H)。注意,CPMV4是从如图6所示的时域MV推导的。移除的候选是以下四个时域相关的构建的仿射Merge候选:{CP2,CP3,CP4}、{CP1,CP4}、{CP2,CP4}、{CP3,CP4}。

2.7仿射运动补偿的带宽问题

由于当前块被分成用于亮度分量的4×4子块和用于两个色度分量的2×2子块来进行运动补偿,因此总带宽要求远远高于非子块帧间预测。为了解决带宽问题,提出了几种方法。

2.7.1示例1

4x4块用作单向预测仿射编码的CU的子块尺寸,而8x4/4x8块用作双向预测仿射编码的CU的子块尺寸。

2.7.2示例2

对于仿射模式,仿射CU的子块运动矢量被约束在预定义的运动矢量场内。假设第一(左上方)子块的运动矢量是(v0x,v0y),并且第二子块是(vix,viy),vix和viy的值表现出以下约束:

vix∈[v0x-H,v0x+H] 等式(12)

viy∈[v0y-V,v0y+V] 等式(13)

如果任何子块的运动矢量超过预定义的运动矢量场,则运动矢量被剪裁。图6给出了受约束的子块运动矢量的思想的说明。

假设内存是按CU而不是按子块来检索的,则选择值H和V,这样在最坏的情况下,使得仿射CU的内存带宽不会超过8×8双向预测块的正常帧间MC的内存带宽。注意,H和V的值适应于CU的尺寸和单向预测或双向预测。

2.7.3示例3

为了减少仿射预测中的内存带宽要求,块内的每个8x8块被视为基本单元。8x8块内部的所有四个4x4子块的MV被约束,使得四个4x4子块MV的整数部分之间的最大差不超过1个像素。因此带宽为(8+7+1)*(8+7+1)/(8*8)=4样点/像素。

在一些情况下,在用仿射模型计算当前块内部的所有子块的MV之后,首先用对应的控制点MV替换包含控制点的子块的MV。这意味着,左上方、右上方和左下方子块的MV分别由左上方、右上方和左下方控制点MV替换。然后,对于当前块中的每个8x8块,所有四个4x4子块的MV被剪裁,以保证四个MV的整数部分之间的最大差不超过1个像素。这里应当注意的是,包含控制点的子块(左上方、右上方和左下方子块)使用对应的控制点MV来参与MV剪裁过程。在剪裁过程期间,右上方控制点的MV保持不变。

应用于每个8x8块的剪裁过程描述如下:

1.首先为每个8x8块确定MV分量的最大值和最小值MVminx、MVminy、MVmaxx、MVmaxy,如下所示:

a)获得四个4x4子块MV当中的最小MV分量

MVminx=min(MVx0,MVx1,MVx2,MVx3)

MVminy=min(MVy0,MVy1,MVy2,MVy3)

b)使用MVminx和MVminy的整数部分作为最小MV分量

MVminx=MVminx>>MV_precision<<MV_precision

MVminy=MVminy>>MV_precision<<MV_precision

c)最大MV分量计算如下:

MVmaxx=MVminx+(2<<MV_precision)–1

MVmaxy=MVminy+(2<<MV_precision)–1

d)如果右上方控制点在当前8x8块中

如果(MV1x>MVmaxx)

MVminx=(MV1x>>MV_precision<<MV_precision)–(1<<MV_precision)

MVmaxx=MVminx+(2<<MV_precision)–1

如果(MV1y>MVmaxy)

MVminy=(MV1y>>MV_precision<<MV_precision)–(1<<MV_precision)

MVmaxy=MVminy+(2<<MV_precision)–1

2.该8x8块内的每个4x4块的MV分量按如下方式剪裁:

MVxi=max(MVminx,min(MVmaxx,MVxi))

MVyi=max(MVminy,min(MVmaxy,MVyi))

其中(MVxi,MVyi)是一个8x8块内的第i子块的MV,其中i是0,1,2,3;(MV1x,MV1y)是右上方控制点的MV;MV_precision等于4,对应于1/16的运动矢量分数精确度。由于MVminx和MVmaxx(MVminy和MVmaxy)的整数部分之间的差是1个像素,所以四个4x4子块MV的整数部分之间的最大差不超过1个像素。

在一些实施例中,也可以使用类似的方法来处理平面模式。

2.7.4示例4

在一些实施例中,对于最坏情况带宽减少的仿射模式的限制。为了保证仿射块的最坏情况带宽不差于INTER_4x8/INTER_8x4块或者甚至INTER_9x9块,仿射控制点之间的运动矢量差被用来决定仿射块的子块尺寸是4x4还是8x8。

最坏情况带宽减少的一般仿射限制

仿射模式的内存带宽减少通过限制仿射控制点之间的运动矢量差(也称为控制点差)来控制。通常,如果控制点差满足以下限制,则仿射运动使用4x4子块(即4x4仿射模式)。否则,它将使用8x8子块(8x8仿射模式)。6参数和4参数模型的限制给定如下。

为了推导不同块尺寸(wxh)的约束,控制点的运动矢量差被归一化为:

Norm(v2x-v0x)=(v2x-v0x)*128/h 等式(14)

在4参数仿射模型中,(v2x-v0x)和(v2y-v0y)设置如下:

(v2x-v0x)=-(v1y-v0y)

(v2y-v0y)=-(v1x-v0x) 等式(15)

因此,(v2x-v0x)和(v2y-v0y)的规范给定如下:

Norm(v2x-v0x)=-Norm(v1y-v0y)

Norm(v2y-v0y)=Norm(v1x-v0x) 等式(16)

保证最坏情况带宽达到INTER_4x8或INTER_8x4的限制:

|Norm(v1x-v0x)+Norm(v2x-v0x)+128|+|Norm(v1y-v0y)+Norm(v2y-v0y)+128|+|Norm(v1x-v0x)-Norm(v2x-v0x)|+|Norm(v1y-v0y)-Norm(v2y-v0y)|<128*3.25 等式(17)

其中,等式(18)的左手侧表示子仿射块的收缩或跨度级别,而(3.25)表示3.25个像素移动。

保证最坏情况带宽达到INTER_9x9的限制

(4*Norm(v1x-v0x)>-4*pel&&+4*Norm(v1x-v0x)pel)&&

(4*Norm(v1y-v0y)>-pel&&4*Norm(v1y-v0y)<pel)&&

(4*Norm(v2x-v0x)>-pel&&4*Norm(v2x-v0x)pel)&&

(4*Norm(v2y-v0y)>-4*pel&&4*Norm(v2y-v0y)pel)&&

((4*Norm(v1x-v0x)+4*Norm(v2x-v0x)>-4*pel)&&

(4*Norm(v1x-v0x)+4*Norm(v2x-v0x)<pel))&&

((4*Norm(v1y-v0y)+4*Norm(v2y-v0y)>-4*pel)&&

(4*Norm(v1y-v0y)+4*Norm(v2y-v0y)<pel))等式(18)

其中,pel=128*16(128和16分别表示归一化因子和运动矢量精度)。

2.8广义双向预测改进

一些实施例改进了GBi的增益复杂度权衡,并被采用到BMS2.1中。GBi也称为具有CU级别权重的双向预测(BCW)。BMS2.1 GBi在双向预测模式下对来自L0和L1的预测值应用不相等的权重。在帧间预测模式中,基于速率失真优化(rate-distortion optimization,RDO)来评估包括相等权重对(1/2,1/2)的多个权重对,并将所选权重对的GBi索引信令通知给解码器。在Merge模式下,GBi索引是从邻近CU继承的。在BMS2.1 GBi中,双向预测模式下的预测值生成如等式(19)中所示。

PGBi=(w0*PL0+w1*PL1+RoundingOffsetGBi)>>shiftNumGBi,等式(19)

其中PGBi是GBi的最终预测值。w0和w1是所选的GBi权重对,并分别应用于列表0(L0)和列表1(L1)的预测值。RoundingOffsetGBi和shiftNumGBi用于归一化GBi中的最终预测值。支持的w1权重集为{-1/4,3/8,1/2,5/8,5/4},其中五个权重对应一个相等权重对和四个不相等权重对。混合增益,例如w1和w0之和,固定为1.0。因此,对应的w0权重集为{5/4,5/8,1/2,3/8,-1/4}。权重对选择在CU级别。

对于非低延迟图片,权重集尺寸从五减为三,其中w1权重集为{3/8,1/2,5/8},并且w0权重集为{5/8,1/2,3/8}。非低延迟图片的权重集尺寸减小适用于BMS2.1 GBi和本贡献中的所有GBi测试。

在一些实施例中,在BMS2.1中的现有GBi设计的基础上应用以下修改,以进一步改进GBi性能。

2.8.1GBi编码器错误修复

为了减少GBi编码时间,在当前编码器设计中,编码器将存储从GBi权重等于4/8估计的单向预测运动矢量,并将它们重新用于其他GBi权重的单向预测搜索。这种快速编码方法应用于平移运动模型和仿射运动模型两者。在VTM2.0中,采用了6参数仿射模型和4参数仿射模型。当GBi权重等于4/8时,BMS2.1编码器存储单向预测仿射MV时,不区分4参数仿射模型和6参数仿射模型。因此,在用GBi权重4/8编码后,4参数仿射MV可能被6参数仿射MV覆写。对于其他GBi权重,存储的6参数仿射MV可用于4参数仿射ME,或者存储的4参数仿射MV可用于6参数仿射ME。所提出的GBi编码器错误修复是分离4参数和6参数仿射MV存储。当GBi权重等于4/8时,编码器基于仿射模型类型存储那些仿射MV,并且对于其他GBi权重,基于仿射模型类型重新使用对应的仿射MV。

2.8.2GBi的CU尺寸约束

在该方法中,GBi对于小CU是禁用的。在帧间预测模式下,如果使用双向预测,并且CU面积小于128个亮度样点,则GBi被禁用而不需要任何信令通知。

2.8.3利用GBi的Merge模式

在Merge模式下,不信令通知GBi索引。相反,它是从它所合并到的邻近块继承的。当选择了TMVP候选时,则在该块中关闭GBi。

2.8.4利用GBi的仿射预测

当当前块用仿射预测编码时,可以使用GBi。对于仿射帧间模式,信令通知GBi索引。对于仿射Merge模式,GBi索引是从它所合并到的邻近块继承的。如果选择了构建的仿射模型,则在该块中关闭GBi。

2.9示例帧间-帧内预测模式(IIP)

利用帧间-帧内预测模式(也称为组合帧间和帧内预测(CIIP)),多假设预测组合了一个帧内预测和一个Merge索引的预测。这种块被视为特殊的帧间编码块。在Merge CU中,当标志为真时,一个标志被信令通知Merge模式,以从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表从包括DC模式、平面模式、水平模式和垂直模式的4种帧内预测模式中推导,并且取决于块的形状,帧内候选列表的尺寸可以是3或4。当CU宽度大于CU高度的两倍时,水平模式不包括帧内模式列表,当CU高度大于CU宽度的两倍时,垂直模式从帧内模式列表中移除。使用加权平均来组合由帧内模式索引选择的一个帧内预测模式和由Mege索引选择的一个Mege索引的预测。对于色度分量,总是应用DM而不需要附加的信令通知。

组合预测的权重描述如下。当选择DC模式或平面模式或者CB宽度或高度小于4时,应用相等的权重。对于CB宽度和高度大于或等于4的那些CB,当选择水平/垂直模式时,一个CB首先被垂直/水平划分为四个等面积区域。每个权重集(表示为(w_intrai,w_interi),其中i为1至4,并且(w_intra1,w_inter1)=(6,2),(w_intra2,w_inter2)=(5,3),(w_intra3,w_inter3)=(3,5),以及(w_intra4,w_inter4)=(2,6))将应用于对应的区域。(w_intra1,w_inter1)用于最接近参考样点的区域,而(w_intra4,w_inter4)用于最远离参考样点的区域。然后,可以通过将两个加权预测相加并右移3位来计算组合预测。此外,可以保存用于预测值的帧内假设的帧内预测模式,以供随后的邻近CU引用。

假设帧内和帧间预测值是PIntra和Pinter,并且加权因子分别是w_intra和w_inter。位置(x,y)处的预测值被计算为(PIntra(x,y)*w_intra(x,y)+PInter(x,y)*w_inter(x,y))>>N,其中w_intra(x,y)+w_iner(x,y)=2^N。

IIP编码块中帧内预测模式的信令通知

当使用帧间-帧内模式时,四种允许的帧内预测模式(DC模式、平面模式、水平模式和垂直模式)之一被选择并信令通知。三种最可能模式(MPM)由左侧和上方的邻近块构成。帧内编码邻近块或IIP编码邻近块的帧内预测模式被视为一个MPM。如果帧内预测模式不是四种允许的帧内预测模式中的一种,它将根据角度差取整到垂直模式或水平模式。邻近块必须在与当前块相同的CTU线上。

假设当前块的宽度和高度是宽和高。如果W>2*H或H>2*W,则在帧间-帧内模式中只能使用三种MPM中的一个。否则,所有四种有效的帧内预测模式都可以用于帧间-帧内模式。

应当注意,帧间-帧内模式中的帧内预测模式不能用于预测正常帧内编码块中的帧内预测模式。

帧间-帧内预测只能在W*H>=64时使用。

2.10示例三角形预测模式

三角形预测模式(triangular prediction mode,TPM)的概念是引入一种用于运动补偿预测的新的三角形分割。如图7A-7B所示,它在对角线方向或反对角线方向上将CU划分为两个三角形预测单元。使用从单向预测候选列表推导的其自己的单向预测运动矢量和参考帧索引,对CU中的每个三角形预测单元进行帧间预测。在预测三角形预测单元之后,对对角线边缘执行自适应加权处理。然后,将变换和量化过程应用于整个CU。请注意,该模式仅应用于跳过和Merge模式。

2.10.1TPM的单向预测候选列表

单向预测候选列表由五个单向预测运动矢量候选组成。如图8所示,它是从包括五个空域邻近块(1到5)和两个时域并置块(6到7)的七个邻近块推导的。按照单向预测运动矢量、双向预测运动矢量的L0运动矢量、双向预测运动矢量的L1运动矢量以及双向预测运动矢量的L0和L1运动矢量的平均运动矢量的顺序,收集七个邻近块的运动矢量并将其放入单向预测候选列表中。如果候选的数量少于五个,则零运动矢量被添加到列表中。添加到该列表中的候选运动被称为TPM候选运动。

更具体地,涉及以下步骤:

1)从A1、B1、B0、A0、B2、Col和Col2(对应于图8中的块1-7)获得运动候选,而无需任何修剪操作。

2)设置变量numCurrMergeCand=0。

3)对于从A1、B1、B0、A0、B2、Col和Col2推导的每个运动候选,如果运动候选是单向预测的(来自列表0或列表1),则将其添加到Merge列表中,其中numCurrMergeCand增加1。这种添加的候选运动被命名为“原始单向预测的候选”。应用完全修剪。

4)对于从A1、B1、B0、A0、B2、Col和Col2推导的每个运动候选,并且numCurrMergeCand小于5,如果运动候选是双向预测的,则来自列表0的运动信息被添加到Merge列表中(即,被修改为来自列表0的单向预测),并且numCurrMergeCand增加1。这种添加的候选运动被命名为“截断的列表0预测的候选”。应用完全修剪。

5)对于从A1、B1、B0、A0、B2、Col和Col2推导的每个运动候选,并且numCurrMergeCand小于5,如果运动候选是双向预测的,则来自列表1的运动信息被添加到Merge列表中(即,被修改为来自列表1的单向预测),并且numCurrMergeCand增加1。这种添加的候选运动被命名为“截断的列表1预测的候选”。应用完全修剪

6)对于从A1、B1、B0、A0、B2、Col和Col2推导的每个候选运动,并且numCurrMergeCand小于5,如果候选运动是双向预测的,

-如果列表0参考图片的条带量化参数(Quantization Parameter,QP)小于列表1参考图片的条带QP,则首先将列表1的运动信息缩放到列表0参考图片,并将两个MV(一个来自原始列表0,并且另一个是来自列表1的缩放后的MV)的平均添加到Merge列表中,即,来自列表0运动候选的平均单向预测并且numCurrMergeCand增加1。

-否则,首先将列表0的运动信息缩放到列表1参考图片,并将两个MV(一个来自原始列表1,另一个是来自列表0的缩放后的最大值)的平均添加到Merge列表中,即,来自列表1运动候选的平均单向预测并且numCurrMergeCand增加1。

应用完全修剪。

7)如果numCurrMergeCand小于5,则添加零运动矢量候选。

2.11VVC中的解码器侧运动矢量细化(DMVR)

对于VVC中的DMVR,如图13所示地假设列表0和列表1之间的MVD镜像,并且执行双边匹配来细化MV,例如,在几个MVD候选当中找到最佳MVD。用MVL0(L0X,L0Y)和MVL1(L1X,L1Y)表示两个参考图片列表的MV。列表0的由(MvdX,MvdY)表示的可以最小化成本函数(例如,SAD)的MVD被定义为最佳MVD。对于SAD函数,它被定义为用列表0参考图片中的运动矢量(L0X+MvdX,L0Y+MvdY)推导的列表0的参考块和用列表1参考图片中的运动矢量(L1X-MvdX,L1Y-MvdY)推导的列表1的参考块之间的SAD。

运动矢量细化过程可以迭代两次。在每次迭代中,最多可以在两步中检查6个MVD(以整数像素精度),如图14所示。在第一步中,检查MVD(0,0)、(-1,0)、(1,0)、(0,-1)、(0,1)。在第二步中,可以选择并进一步检查MVD(-1,-1)、(-1,1)、(1,-1)或(1,1)中的一个。假设函数Sad(x,y)返回MVD(x,y)的SAD值。在第二步中检查的MVD(用(MvdX,MvdY)表示)决定如下:

MvdX=-1;

MvdY=-1;

如果(Sad(1,0)<Sad(-1,0))

MvdX=1;

如果(Sad(0,1)<Sad(0,-1))

MvdY=1;

在第一次迭代中,起始点是信令通知的MV,并且在第二次迭代中,起始点是信令通知的MV加上在第一次迭代中选择的最佳MVD。DMVR仅在一幅参考图片是前一幅图像而另一幅参考图片是后一幅图像,并且这两幅参考图片与当前图片具有相同的图片顺序计数距离的时候应用。

为了进一步简化DMVR的过程,在一些实施例中可以实施以下主要特征:

1.当列表0和列表1之间的(0,0)位置SAD小于阈值时提前终止。

2.当某个位置的列表0和列表1之间的SAD为零时,提前终止。

3.DMVR的块尺寸:W*H>=64&&H>=8,其中W和H是块的宽度和高度。

4.对于CU尺寸>16*16的DMVR,将CU划分为16x16子块的倍数。如果只有CU的宽度或高度大于16,则它只在垂直或水平方向上划分。

5.参考块尺寸(W+7)*(H+7)(对于亮度)。

6.基于25点SAD的整数像素搜索(例如(+-)2细化搜索范围,单级)

7.基于双线性插值的DMVR。

8.基于“参数误差曲面方程”的子像素细化。只有在最后一次MV细化迭代中最小SAD成本不等于零且最佳MVD为(0,0)时,才执行该过程。

9.亮度/色度MC w/参考块填充(如果需要)。

10.细化的MV仅用于MC和TMVP。

2.11.1DMVR的使用

当以下条件都为真时,可以启用DMVR:

-SPS中的DMVR启用标志(例如,sps_dmvr_enabled_flag)等于1。

-TPM标志、帧间仿射标志和子块Merge标志(ATMVP或仿射Merge)、MMVD标志都等于0。

-Merge标志等于1。

-当前块是双向预测的,当前图片和列表1中的参考图片之间的图片顺序计数(Picture Order Count,POC)距离等于列表0中的参考图片和当前图片之间的POC距离。

-当前CU高度大于或等于8。

-亮度样点数(CU宽度*高度)大于或等于64。

2.11.2基于“参数误差曲面方程”的子像素细化

该方法总结如下:

1.仅当中心位置是给定迭代中的最佳成本位置时,才计算参数误差曲面拟合。

2.中心位置成本和距离中心(-1,0)、(0,-1)、(1,0)和(0,1)位置处的成本用于拟合以下形式的2-D抛物误差曲面方程

E(x,y)=A(x-x0)2+B(y-y0)2+C

其中(x0,y0)对应于成本最小的位置,并且C对应于最小成本值。通过求解5个未知数的5个方程,(x0,y0)计算如下:

x0=(E(-1,0)-E(1,0))/(2(E(-1,0)+E(1,0)-2E(0,0)))

y0=(E(0,-1)-E(0,1))/(2((E(0,-1)+E(0,1)-2E(0,0))

(x0,y0)可以通过调整执行除法的精度(例如计算商的位数)来计算到任何所需的子像素精度。对于1/16th像素精确度,仅需计算商的绝对值中的4位,这有助于每个CU所需的2个除法的基于快速移位减法的实施。

3.计算出的(x0,y0)被加到整数距离细化MV以获得子像素精确细化增量MV。

2.11.3DMVR中所需的参考样点

对于尺寸为W*H的块,假设最大允许MVD值为+/-偏移(例如在VVC中为2),并且滤波器尺寸为filteSize(例如在VVC中8个用于亮度,4个用于色度),则需要(W+2*offSet+filterSize–1)*(H+2*offSet+filterSize–1)个参考样点。为了减少内存带宽,只提取中心(W+filterSize–1)*(H+filterSize–1)参考样点,并且通过重复提取的样点的边界来生成其他像素。8*8块的示例如图15所示,提取15*15个参考样点,并且重复提取的样点的边界以生成17*17区域。

在运动矢量细化期间,使用这些参考样点执行双线性运动补偿。同时,也使用这些参考样点来执行最终运动补偿。

2.12不同块尺寸的带宽计算

基于当前的8抽头亮度插值滤波器和4抽头色度插值滤波器,每个块单元(4:2:0颜色格式,一个MxN亮度块具有两个M/2x N/2色度块)的内存带宽如下表1所示。

表1示例内存带宽

类似地,基于当前的8抽头亮度插值滤波器和4抽头色度插值滤波器,每个MxN亮度块单元的内存带宽如下表2所示。

表2示例内存带宽

因此,无论颜色格式如何,每个块尺寸的带宽要求按降序排列如下:

4*4Bi>4*8Bi>4*16Bi>4*4Uni>8*8Bi>4*32Bi>4*64Bi>4*128Bi>8*16Bi>4*8Uni>8*32Bi>…。

2.12VTM-3.0中的运动矢量精度问题

在VTM-3.0中,存储中的MV精度为1/16亮度像素。当MV信令通知时,最好的精度是1/4亮度像素。

3.由所公开的实施例解决的问题的示例

1.针对仿射预测的带宽控制方法不够清晰,并且应当更加灵活。

2.注意,在HEVC设计中,内存带宽要求的最坏情况是8x8双向预测,甚至编码单元(CU)可以以非对称预测模式而划分,诸如一个16x16划分为尺寸等于4x16和12x16的两个PU。在VVC中,由于新的QTBT分割结构,可以将一个CU设置为4x16,并且可以启用双向预测。与双向预测的8x8 CU相比,双向预测的4x16 CU需要甚至更高的内存带宽。如何处理需要更高带宽的块尺寸(诸如4×16或16×4)是未知的。

3.新的编码工具,诸如GBi,引入了更多的线缓冲器问题

4.帧间-帧内模式需要更多内存和逻辑来信令通知帧间编码块中使用的帧内预测模式。

5. 1/16亮度像素MV精度需要更高的内存存储。

6.为了在一个8x8块中内插四个4x4块,它需要提取(8+7+1)*(8+7+1)个参考像素,并且当与非仿射/非平面模式8x8块相比时,需要多大约14%的像素。

7.混合帧内和帧间预测中的平均操作应与例如加权预测、局部照明补偿、OBMC和三角形预测的其他编码工具对齐,其中偏移在移位之前被添加。

4.实施例的示例

本文公开的技术可以减少仿射预测和其他新的编码工具中所需的带宽和线缓冲器。

以下描述应被视为解释一般概念的示例,不应以狭隘的方式进行解释。此外,这些实施例可以以任何方式而组合。

在以下讨论中,仿射编码的当前CU的宽度和高度分别是w和h。假设(运动补偿中的)插值滤波器抽头是N(例如,8、6、4或2),并且当前块尺寸是WxH。

仿射预测的带宽控制

示例1:假设仿射编码块中的子块SB的运动矢量是MVSB(表示为(MVx,MVy)),MVSB可以在相对于代表性运动矢量MV’(MV’x,MV’y)的特定范围内。

在一些实施例中,MVx>=MV’x-DH0并且MVx<=MV’x+DH1并且MVy>=MV’y-DV0并且MVy<=MV’y+DV1,其中MV’=(MV’x,MV’y)。在一些实施例中,DH0可以等于或不等于DH1;DV0可以等于或不等于DV1。在一些实施例中,DH0可以等于或不等于DV0;DH1可以等于或不等于DV1。在一些实施例中,DH0可以不等于DH1;DV0可以不等于DV1。在一些实施例中,可以诸如在VPS/SPS/PPS/条带头/片组头/片/CTU/CU/PU中从编码器向解码器信令通知DH0、DH1、DV0和DV1。在一些实施例中,对于不同的标准简档(profile)/级别/层级,可以不同地指定DH0、DH1、DV0和DV1。在一些实施例中,DH0、DH1、DV0和DV1可以取决于当前块的宽度和高度。在一些实施例中,DH0、DH1、DV0和DV1可以取决于当前块是单向预测还是双向预测。在一些实施例中,DH0、DH1、DV0和DV1可以取决于子块SB的位置。在一些实施例中,DH0、DH1、DV0和DV1可以取决于如何得到MV’。

在一些实施例中,MV’可以是一个CPMV,诸如MV0、MV1或MV2。

在一些实施例中,MV’可以是用于角子块之一的MC中的MV,诸如图3中的MV0’、MV1’或MV2’。

在一些实施例中,MV’可以是用当前块的仿射模型针对当前块内部或外部的任何位置推导的MV。例如,它可以针对当前块的中心位置(例如,x=w/2且y=h/2)而推导。

在一些实施例中,MV’可以是用于当前块的任何子块(诸如中心子块之一(图3所示的C0、C1、C2或C3))的MC中的MV。

在一些实施例中,如果MVSB不满足约束,则MVSB应当被剪裁到有效范围。在一些实施例中,经剪裁的MVSB被存储到MV缓冲器中,其将用于预测随后的编码块的MV。在一些实施例中,被剪裁之前的MVSB被存储到MV缓冲器中。

在一些实施例中,如果MVSB不满足约束,则比特流被认为不符合标准(无效)。在一个示例中,可以在标准中指定MVSB必须或应当满足约束。任何符合的编码器都应遵循该约束,否则,编码器被视为不符合标准。

在一些实施例中,MVSB和MV’可以用信令通知的MV精度(诸如四分之一像素精度)而表示。在一些实施例中,MVSB和MV’可以用存储MV精度(诸如1/16精度)而表示。在一些实施例中,MVSB和MV’可以取整到不同于信令通知的或存储精度的精度(诸如整数精度)。

示例2:对于仿射编码块,块内的每个MxN(诸如8x4、4x8或8x8)块被视为基本单元。MxN内部的所有4x4子块的MV被约束,使得四个4x4子块MV的整数部分之间的最大差不超过K像素。

在一些实施例中,是否以及如何应用该约束取决于当前块是应用双向预测还是单向预测。例如,约束仅应用于双向预测,不应用于单向预测。作为另一示例,对于双向预测和单向预测,M、N和K是不同的。

在一些实施例中,M、N和K可以取决于当前块的宽度和高度。

在一些实施例中,可以诸如在VPS/SPS/PPS/条带头/片组头/片/CTU/CU/PU中从编码器向解码器信令通知是否应用约束。例如,信令通知一个开/关标志以指示是否应用约束。作为另一示例,M、N和K是信令通知的。

在一些实施例中,对于不同的标准简档/级别/层级,可以不同地指定M、N和K。

示例3:对于不同的仿射编码块,可以不同地计算子块的宽度和高度。

在一些实施例中,对于用单向预测和双向预测的仿射编码块,计算方法是不同的。在一个示例中,对于用单向预测的块,子块尺寸是固定的(诸如4x4、4x8或8x4)。在另一示例中,对于用双向预测的块,子块尺寸被计算。在这种情况下,对于两个不同的双向预测的仿射块,子块尺寸可以不同。

在一些实施例中,对于双向预测的仿射块,来自参考列表0的子块的宽度和/或高度以及来自参考列表1的子块的宽度和/或高度可以不同。在一个示例中,假设来自参考列表0的子块的宽度和高度分别被推导为Wsb0和Hsb0;来自参考列表1的子块的宽度和高度分别被推导为Wsb1和Hsb1。然后,参考列表0和参考列表1两者的子块的最终宽度和高度分别被计算为Max(Wsb0,Wsb1)和Max(Hsb0,HSb1)。

在一些实施例中,计算出的子块的宽度和高度仅应用于亮度分量。对于色度分量,它总是固定的,诸如4x4色度子块,其对应于具有4:2:0颜色格式的8x8亮度块。

在一些实施例中,计算MVx-MV’x和MVy-MV’y以决定子块的宽度和高度。(MVx,MVy)和(MV’x,MV’y)在示例1中被定义。

在一些实施例中,在计算中涉及的MV可以用信令通知的MV精度(诸如四分之一像素精度)而表示。在一个示例中,这些MV可以用存储MV精度(诸如1/16精度)而表示。作为另一示例,这些MV可以取整到不同于信令通知的或存储精度的精度(诸如整数精度)。

在一些实施例中,可以诸如在VPS/SPS/PPS/条带头/片组头/片/CTU/CU/PU中从编码器向解码器信令通知在计算中用于决定子块的宽度和高度的阈值。

在一些实施例中,对于不同的标准简档/级别/层级,在计算中用于决定子块的宽度和高度的阈值可以不同。

示例4:为了在一个W2xH2子块/块中内插W1xH1子块,首先提取(W2+N–1–PW)*(H2+N–1–PH)块,然后应用示例6中描述的像素填充方法(例如,边界像素重复方法)以生成更大的块,该更大的块然后用于内插W1xH1子块。例如,W2=H2=8,W1=H1=4,并且PW=PH=0。

在一些实施例中,任何W1xH1子块的MV的整数部分可以用于提取整个W2xH2子块/块,因此可能需要不同的边界像素重复方法。例如,如果所有W1xH1子块MV的整数部分之间的最大差不超过1个像素,则左上方W1xH1子块的MV的整数部分用于提取整个W2xH2子块/块。参考块的右边界和底部边界被重复一次。作为另一示例,如果所有W1xH1子块MV的整数部分之间的最大差不超过1个像素,则右下方W1xH1子块的MV的整数部分用于提取整个W2xH2子块/块。参考块的左边界和顶部边界被重复一次。

在一些实施例中,任何W1xH1子块的MV可以首先被修改,然后用于提取整个W2xH2子块/块,因此可能需要不同的边界像素重复方法。例如,如果所有W1xH1子块MV的整数部分之间的最大差不超过2个像素,则可以将左上方W1xH1子块的MV的整数部分加(1,1)(这里1意味着1个整数像素距离),然后将其用于提取整个W2xH2子块/块。在这种情况下,参考块的左、右、顶部和底部边界被重复一次。作为另一示例,如果所有W1xH1子块MV的整数部分之间的最大差不超过2个像素,则可以将右下方W1xH1子块的MV的整数部分加(-1,-1)(这里1意味着1个整数像素距离),然后将其用于提取整个W2xH2子块/块。在这种情况下,参考块的左、右、顶部和底部边界被重复一次。

特定块尺寸的带宽控制

示例5:如果当前块的w和h满足如下条件中的一个或多个,则双向预测不被允许。

A.w等于T1并且h等于T2,或者h等于T1并且w等于T2。在一个示例中,T1=4并且T2=16。

B.w等于T1并且h不大于T2,或者h等于T1并且w不大于T2。在一个示例中,T1=4并且T2=16。

C.w不大于T1并且h不大于T2,或者h不大于T1并且w不大于T2。在一个示例中,T1=8并且T2=8。在另一示例中,T1==8,T2==4。在又一示例中,T1==4,T2==4。

在一些实施例中,可以对4x8块禁用双向预测。在一些实施例中,可以对8x4块禁用双向预测。在一些实施例中,可以对4x16块禁用双向预测。在一些实施例中,可以对16x4块禁用双向预测。在一些实施例中,可以对4x8、8x4块禁用双向预测。在一些实施例中,可以对4x16、16x4块禁用双向预测。在一些实施例中,可以对4x8、16x4块禁用双向预测。在一些实施例中,可以对4x16、8x4块禁用双向预测。在一些实施例中,可以对4xN块禁用双向预测,例如,N<=16。在一些实施例中,可以对Nx4块禁用双向预测,例如,N<=16。在一些实施例中,可以对8xN块禁用双向预测,例如,N<=16。在一些实施例中,可以对Nx8块禁用双向预测,例如,N<=16。在一些实施例中,可以对4x8、8x4、4x16块禁用双向预测。在一些实施例中,可以对4x8、8x4、16x4块禁用双向预测。在一些实施例中,可以对8x4、4x16、16x4块禁用双向预测。在一些实施例中,可以对4x8、8x4、4x16、16x4块禁用双向预测。

在一些实施例中,本文档中公开的块尺寸可以指一种颜色分量,诸如亮度分量,并且关于是否禁用双向预测的决定可以应用于所有颜色分量。例如,如果根据块的亮度分量的块尺寸禁用双向预测,则也将对其他颜色分量的对应块禁用双向预测。在一些实施例中,本文档中公开的块尺寸可以指一种颜色分量,诸如亮度分量,并且关于是否禁用双向预测的决定只能应用于该颜色分量。

在一些实施例中,如果对块禁用了双向预测,并且所选的Merge候选是双向预测的,则来自Merge候选的参考列表0或参考列表1的仅一个MV被分配给该块。

在一些实施例中,如果对块禁用了双向预测,则针对该块不允许三角形预测模式(TPM)。

在一些实施例中,如何信令通知预测方向(来自列表0/1的单向预测,双向预测)可以取决于块维度。在一个示例中,当1)块宽度*块高度<64或者2)块宽度*块高度=64但宽度不等于高度时,可以信令通知来自列表0/1的单向预测的指示。作为另一示例,当1)块宽度*块高度>64或者2)n宽度*块高度=64并且宽度等于高度时,可以信令通知来自列表0/1的单向预测或者双向预测的指示。

在一些实施例中,可以对4x4块禁用单向预测和双向预测两者。在一些实施例中,它可以针对仿射编码块而禁用。可选地,它可以针对非仿射编码块而禁用。在一些实施例中,可以跳过8x8块的四叉树划分、8x4或4x8块的二叉树划分、4x16或16x4块的三叉树划分的指示。在一些实施例中,4x4块必须被编码为帧内块。在一些实施例中,4x4块的MV必须为整数精度。例如,4x4块的IMV标志必须为1。作为另一示例,4x4块的MV必须取整到整数精度。

在一些实施例中,双向预测被允许。然而,假设插值滤波器抽头是N,仅提取(W+N–1–PW)*(W+N–1–PH)个参考像素,而不是提取(W+N–1)*(H+N–1)个参考像素。同时,参考块边界(顶部、左、底部和右边界)处的像素被重复以生成如图9所示的(W+N–1)*(H+N–1)块,该块用于最终插值。在一些实施例中,PH为零,并且仅左边界或/和右边界被重复。在一些实施例中,PW为零,并且仅顶部边界或/和底部边界被重复。在一些实施例中,PW和PH两者都大于零,并且首先左边界或/和右边界被重复,然后顶部边界或/和底部边界被重复。在一些实施例中,PW和PH两者都大于零,并且首先顶部边界或/和底部边界被重复,然后左边界和右边界被重复。在一些实施例中,左边界被重复M1次,并且右边界被重复PW–M1次。在一些实施例中,顶部边界被重复M2次,并且底部边界被重复PH–M2次。在一些实施例中,这样的边界像素重复方法可以应用于一些或所有参考块。在一些实施例中,对于不同的颜色分量,诸如Y、Cb和Cr,PW和PH可以不同。

图9示出了插值之前的参考块的重复边界像素的示例。

示例6:在一些实施例中,(W+N–1–PW)*(W+N–1–PH)个参考像素(而不是(W+N–1)*(H+N–1)个参考像素)可以被提取以用于WxH块的运动补偿。在范围(W+N–1–PW)*(W+N–1–PH)之外但在范围(W+N–1)*(H+N–1)内部的样点被填充以进行插值过程。在一种填充方法中,参考块边界(顶部、左、底部和右边界)处的像素被重复以生成如图11所示的(W+N–1)*(H+N–1)块,该块用于最终插值。

在一些实施例中,PH为零,并且仅左边界或/和右边界被重复。

在一些实施例中,PW为零,并且仅顶部边界或/和底部边界被重复。

在一些实施例中,PW和PH两者都大于零,并且首先左边界或/和右边界被重复,然后顶部边界或/和底部边界被重复。

在一些实施例中,PW和PH两者都大于零,并且首先顶部边界或/和底部边界被重复,然后左边界和右边界被重复。

在一些实施例中,左边界被重复M1次,并且右边界被重复PW–M1次。

在一些实施例中,顶部边界被重复M2次,并且底部边界被重复PH–M2次。

在一些实施例中,这样的边界像素重复方法可以应用于一些或所有参考块。

在一些实施例中,对于不同的颜色分量,诸如Y、Cb和Cr,PW和PH可以不同。

在一些实施例中,对于不同的块尺寸或形状,PW和PH可以不同。

在一些实施例中,对于单向预测和双向预测,PW和PH可以不同。

在一些实施例中,填充可以不在仿射模式下执行。

在一些实施例中,在范围(W+N–1–PW)*(W+N–1–PH)之外但在范围(W+N–1)*(H+N–1)内部的样点被设置为单个值。在一些实施例中,单个值是1<<(BD-1),其中BD是样点的比特深度,诸如8或10。在一些实施例中,在VPS/SPS/PPS/条带头/片组头/片/CTU行/CTU/CU/PU中从编码器向解码器信令通知单个值。在一些实施例中,单个值是从范围(W+N–1–PW)*(W+N–1–PH)内部的样点推导的。

示例7:可以提取(W+filterSize–1–PW)*(H+filterSize–1–PH)个参考样点,而不是在DMVR中提取(W+filterSize–1)*(H+filterSize–1)个参考样点,并且可以通过重复提取的参考样点的边界来生成所有其他所需的样点,其中PW>=0,并且PH>=0。

在一些实施例中,在示例6中提出的方法可以用于填充非提取的样点。

在一些实施例中,在DMVR的最终运动补偿中,可以不再次执行填充。

在一些实施例中,是否应用以上方法可以取决于块维度。

示例8:inter_pred_idc的信令通知方法可以取决于w和h是否满足示例5中的条件。下表3示出了一个示例:

表3

下表4示出了另一示例:

表4

下表5示出了又一示例:

表5

示例9:Merge候选列表构建过程可以取决于w和h是否满足示例4中的条件。以下实施例描述了w和h满足条件时的情况。

在一些实施例中,如果一个Merge候选使用双向预测,则仅保留来自参考列表0的预测,并且Merge候选被视为参考参考列表0的单向预测。

在一些实施例中,如果一个Merge候选使用双向预测,则仅保留来自参考列表1的预测,并且Merge候选被视为参考参考列表1的单向预测。

在一些实施例中,如果一个Merge候选使用双向预测,则该候选被视为不可用。也就是说,这样的Merge候选从Merge列表中移除。

在一些实施例中,改为使用用于三角形预测模式的Merge候选列表构建过程。

示例10:编码树划分过程可以取决于划分后的子CU的宽度和高度是否满足示例5中的条件。

在一些实施例中,如果划分后的子CU的宽度和高度满足示例5中的条件,则不允许划分。在一些实施例中,编码树划分的信令通知可以取决于是否允许一种划分。在一个示例中,如果不允许一种划分,则省略表示划分的码字。

示例11:跳过标志或/和帧内块复制(Intra Block Copy,IBC)标志的信令通知可以取决于块的宽度和/或高度是否满足特定条件(例如,示例5中提到的条件)。

在一些实施例中,条件是亮度块包含不超过X个样点。例如,X=16;

在一些实施例中,条件是亮度块包含X个样点。例如,X=16。

在一些实施例中,条件是亮度块的宽度和高度都等于X。例如,X=4;

在一些实施例中,当以上条件中的一个或一些为真时,针对这样的块不允许帧间模式和/或IBC模式。

在一些实施例中,如果针对块不允许帧间模式,则可以不为其信令通知跳过标志。此外,可选地,跳过标志可以被推断为假。

在一些实施例中,如果针对块不允许帧间模式和IBC模式,则可以不为其信令通知跳过标志,并且该跳过标志可以被隐式地推导为假(例如,块被推导为在非跳过模式下而编码)。

在一些实施例中,如果针对块不允许帧间模式,但是针对该块允许IBC模式,则仍然可以信令通知跳过标志。在一些实施例中,如果块在跳过模式下而编码,则可以不信令通知IBC标志,并且IBC标志被隐式地推导为真(例如,块被推导为在IBC模式下而编码)。

示例12:预测模式的信令通知可以取决于块的宽度和/或高度是否满足特定条件(例如,示例5中提到的条件)。

在一些实施例中,条件是亮度块包含不超过1X6个样点,例如,X=16。

在一些实施例中,条件是亮度块包含X个样点,例如,X=16。

在一些实施例中,条件是亮度块的宽度和高度都等于X,例如,X=4。

在一些实施例中,当以上条件中的一个或一些为真时,针对这样的块不允许帧间模式和/或IBC模式。

在一些实施例中,可以跳过特定模式的指示的信令通知。

在一些实施例中,如果针对块不允许帧间模式和IBC模式,则跳过帧间模式和IBC模式的指示的信令通知,仍然可以信令通知剩余的允许的模式,诸如是帧内模式还是调色板(palette)模式。

在一些实施例中,如果针对块不允许帧间模式和IBC模式,则可以不信令通知预测模式。此外,可选地,预测模式可以被隐式地推导为帧内模式。

在一些实施例中,如果针对块不允许帧间模式,则跳过帧间模式的指示的信令通知,仍然可以信令通知剩余的允许的模式,诸如是帧内模式还是IBC模式。可选地,仍然可以信令通知剩余的允许的模式,诸如是帧内模式还是IBC模式还是调色板模式。

在一些实施例中,如果针对块不允许帧间模式,但针对其允许IBC模式和帧内模式,则可以信令通知IBC标志以指示块是否在IBC模式下被编码。此外,可选地,可以不信令通知预测模式。

示例13:三角形模式的信令通知可以取决于块的宽度和/或高度是否满足特定条件(例如,示例5中提到的条件)。

在一些实施例中,条件是亮度块尺寸是一些特定尺寸之一。例如,特定尺寸可以包括4x16或/和16x4。

在一些实施例中,当以上条件为真时,可以不允许三角形模式,并且指示当前块是否在三角形模式下被编码的标志可以不被信令通知并且可以被推导为假。

示例14:帧间预测方向的信令通知可以取决于块的宽度和/或高度是否满足特定条件(例如,示例5中提到的条件)。

在一些实施例中,条件是亮度块尺寸是一些特定尺寸之一。例如,特定尺寸可以包括8x4或/和4x8或/和4x16或/和16x4。

在一些实施例中,当以上条件为真时,该块可以仅是单向预测的,并且指示当前块是否是双向预测的标志可以不被信令通知并且可以被推导为假。

示例15:SMVD(对称MVD)标志的信令可以取决于块的宽度和/或高度是否满足特定条件(例如,示例5中提到的条件)。

在一些实施例中,条件是亮度块尺寸是一些特定尺寸之一。在一些实施例中,条件被定义为块尺寸是否具有不超过32个样点。在一些实施例中,条件被定义为块尺寸是4x8还是8x4。在一些实施例中,条件被定义为块尺寸是4x4、4x8还是8x4。在一些实施例中,特定尺寸可以包括8x4或/和4x8或/和4x16或/和16x4。

在一些实施例中,当特定条件为真时,SMVD的使用的指示(诸如SMVD标志)可以不被信令通知并且可以被推导为假。例如,该块可以设置为单向预测的。

在一些实施例中,当特定条件为真时,仍然可以信令通知SMVD的使用的指示(诸如SMVD标志),然而,在运动补偿过程中可以仅利用列表0或列表1运动信息。

示例16:运动矢量(类似于在常规Merge模式、ATMVP模式、MMVD Merge模式、MMVD跳过模式等中推导的运动矢量)或用于IBC的块矢量,可以根据块的宽度和/或高度是否满足特定条件而修改。

在一些实施例中,条件是亮度块尺寸是一些特定尺寸之一。例如,特定尺寸可以包括8x4或/和4x8或/和4x16或/和16x4。

在一些实施例中,当上述条件为真时,如果推导的运动信息是双向预测(例如,从具有一些偏移的邻近块继承的),则块的运动矢量或块矢量可以被改变为单向运动矢量。这样的过程称为转换过程,并且最终的单向运动矢量称为“转换后的单向”运动矢量。在一些实施例中,可以保持参考图片列表X(例如,X是0或1)的运动信息,并且可以丢弃该运动信息和列表Y(Y为1-X)的运动信息。在一些实施例中,参考图片列表X(例如,X是0或1)的运动信息和列表Y(Y为1-X)的运动信息可以被联合用于推导列表X的新运动候选点。在一个示例中,新运动候选的运动矢量可以是两个参考图片列表的平均运动矢量。作为另一示例,列表Y的运动信息可以首先被缩放到列表X。然后新运动候选的运动矢量可以是两个参考图片列表的平均运动矢量。在一些实施例中,可以不使用预测方向X上的运动矢量(例如,预测方向X上的运动矢量被改变为(0,0),并且预测方向X上的参考索引被改变为-1),并且预测方向可以被改变为1–X,X=0或1。在一些实施例中,转换后的单向运动矢量可以用于更新HMVP查找表。在一些实施例中,推导的双向运动信息,例如转换为单向MV之前的双向MV,可以用于更新HMVP查找表。在一些实施例中,转换后的单向运动矢量可以被存储并且可以用于随后的编码块的运动预测、TMVP、去方块(deblock)等。在一些实施例中,推导的双向运动信息,例如,转换为单向MV之前的双向MV,可以被存储并且可以用于随后的编码块的运动预测、TMVP、去方块等。在一些实施例中,转换后的单向运动矢量可以用于运动细化。在一些实施例中,推导的双向运动信息可以用于运动细化和/或样点细化,诸如利用光流方法。在一些实施例中,根据推导的双向运动信息生成的预测块可以首先被细化,之后,可以仅利用一个预测块来推导一个块的最终预测和/或重构块。

在一些实施例中,当特定条件为真时,(双向预测的)运动矢量可以在用作MMVD中的基本Merge候选之前被转换为单向运动矢量。

在一些实施例中,当特定条件为真时,(双向预测的)运动矢量可以在被插入到Merge列表中之前被转换为单向运动矢量。

在一些实施例中,转换后的单向运动矢量可以仅来自参考列表0。在一些实施例中,当当前条带/片组/图片是双向预测的时,转换后的单向运动矢量可以来自参考列表0或列表1。在一些实施例中,当当前条带/片组/图片是双向预测的时,来自参考列表0和列表1的转换后的单向运动矢量可以在Merge列表或/和MMVD基本Merge候选列表中交错(interleave)。

在一些实施例中,如何将运动信息转换为单向运动矢量可以取决于参考图片。在一些实施例中,如果在显示顺序上一个视频数据单元(诸如片/片组)的所有参考图片都是过去的图片,则可以利用列表1运动信息。在一些实施例中,如果在显示顺序上一个视频数据单元(诸如片/片组)的参考图片中的至少一个是过去的图片并且至少一个是未来的图片,则可以利用列表0运动信息。在一些实施例中,如何将运动信息转换为单向运动矢量可以取决于低延迟检查标志。

在一些实施例中,转换过程可以恰好在运动补偿过程之前被调用。在一些实施例中,转换过程可以恰好在运动候选列表(例如,Merge列表)构建过程之后被调用。在一些实施例中,转换过程可以在调用MMVD过程中的添加MVD过程之前被调用。也就是说,添加MVD过程遵循单向预测而不是双向预测的设计。在一些实施例中,转换过程可以在调用PROF过程中的样点细化过程之前被调用。也就是说,添加MVD过程遵循单向预测而不是双向预测的设计。在一些实施例中,转换过程可以在调用BIO(又名BDOF)过程之前被调用。也就是说,对于一些情况,BIO可以被禁用,因为它已经被转换为单向预测。在一些实施例中,转换过程可以在调用DMVR过程之前被调用。也就是说,对于一些情况,DMVR可以被禁用,因为它已经被转换为单向预测。

示例17:在一些实施例中,如何生成运动候选列表可以取决于块维度。

在一些实施例中,对于某些块维度,可以将从空域块和/或时域块和/或HMVP和/或其他类型的运动候选推导的所有运动候选限制为单向预测的。

在一些实施例中,对于某些块维度,如果从空域块和/或时域块和/或HMVP和/或其他类型的运动候选推导的一个运动候选是双向预测的,则它可以在被添加到候选列表之前首先被转换为单向预测的。

示例18:是否允许共享Merge列表可以取决于编码模式。

在一些实施例中,对于以常规Merge模式编码的块,可以不允许共享Merge列表,并且对于以IBC模式编码的块,可以允许共享Merge列表。

在一些实施例中,当从父共享节点划分的一个块以常规Merge模式而编码时,可以在编码/解码该块之后禁用HMVP表的更新。

示例19:在以上所公开的示例中,亮度块的块尺寸/宽度/高度也可以被改变为色度块(诸如Cb、Cr或G/B/R)的块尺寸/宽度/高度。

GBi模式的线缓冲器减少

示例20:GBi加权索引是否可以从邻近块继承或预测(包括CABAC上下文选择),取决于当前块的位置。

在一些实施例中,GBi加权索引不能从与当前块不在相同的编码树单元(CTU,又名最大编码单元LCU)中的邻近块继承或预测。

在一些实施例中,GBi加权索引不能从与当前块不在相同的CTU线或CTU行的邻近块继承或预测。

在一些实施例中,GBi加权索引不能从不在作为当前块的M×N区域中的邻近块继承或预测。例如,M=N=64。在这种情况下,片/条带/图片被划分为多个非重叠MxN区域。

在一些实施例中,GBi加权索引不能从与当前块不在相同的M×N区域线或M×N区域行中的邻近块继承或预测。例如,M=N=64。图10中描绘了CTU线/行和区域线/行。

在一些实施例中,假设当前块的左上角(或任何其他位置)是(x,y),邻近块的左上角(或任何其他位置)是(x’,y’),那么如果满足以下条件之一,则其不能从邻近块继承或预测。

(1)x/M!=x’/M。例如,M=128或64。

(2)y/N!=y’/N。例如,N=128或64。

(3)((x/M!=x’/M)&&(y/N!=y’/N))。例如,M=N=128或M=N=64。

(4)((x/M!=x’/M)||(y/N!=y’/N))。例如,M=N=128或M=N=64。

(5)x>>M!=x’>>M。例如,M=7或6。

(6)y>>N!=y’>>N。例如,N=7或6。

(7)((x>>M!=x’>>M)&&(y>>N!=y’>>N))。例如,M=N=7或M=N=6。

(8)((x>>M!=x’>>M)||(y>>N!=y’>>N))。例如,M=N=7或M=N=6。

在一些实施例中,在PPS或条带头或片组头或片中信令通知标志,以指示GBi是否可以应用于图片/条带/片组/片中。在一些实施例中,可以为图片/条带/片组/片推导是否使用GBi以及如何使用GBi(诸如多少候选权重和权重的值)。在一些实施例中,该推导可以取决于诸如QP、时域层、POC距离等的信息。

图10示出了CTU(区域)线的示例。阴影CTU(区域)在一条CUT(区域)线上,未阴影CTU(区域)在另一条CUT(区域)线上。

帧间-帧内预测(IIP)的简化

示例21:IIP编码块中的帧内预测模式的编码是独立于IIP编码的邻近块的帧内预测模式而编码的。

在一些实施例中,仅帧内编码块的帧内预测模式可以诸如在MPM列表构建过程期间用于IIP编码块的帧内预测模式的编码。

在一些实施例中,IIP编码块中的帧内预测模式在没有来自任何邻近块的模式预测的情况下被编码。

示例22:当IIP编码块的帧内预测模式和帧内编码块的帧内预测模式都用于编码新的IIP编码块的帧内预测模式时,IIP编码块的帧内预测模式的优先级可能低于帧内编码块的帧内预测模式的优先级。

在一些实施例中,当推导IIP编码块的MPM时,利用IIP编码块和帧内编码的邻近块两者的帧内预测模式。然而,来自帧内编码的邻近块的帧内预测模式可以在来自IIP编码的邻近块的帧内预测模式之前被插入到MPM列表中。

在一些实施例中,来自帧内编码的邻近块的帧内预测模式可以在来自IIP编码的邻近块的帧内预测模式之后被插入到MPM列表中。

示例23:IIP编码块中的帧内预测模式也可以用于预测帧内编码块的帧内预测模式。

在一些实施例中,IIP编码块中的帧内预测模式可以用于推导正常帧内编码块的MPM。在一些实施例中,当IIP编码块中的帧内预测模式和帧内编码块中的帧内预测模式用于推导正常帧内编码块的MPM时,IIP编码块中的帧内预测模式的优先级可能低于帧内编码块中的帧内预测模式的优先级。

在一些实施例中,仅当满足以下条件中的一个或多个时,IIP编码块中的帧内预测模式还可以用于预测正常帧内编码块或IIP编码块的帧内预测模式:

1.两个块在相同的CTU线中。

2.两个块在相同的CTU中。

3.两个块在相同的M×N区域中,诸如M=N=64。

4.两个块在相同的M×N区域线中,诸如M=N=64。

示例24:在一些实施例中,用于IIP编码块的MPM构建过程应当与用于正常帧内编码块的MPM构建过程相同。

在一些实施例中,六个MPM用于利用帧间-帧内预测的帧间编码块。

在一些实施例中,只有部分MPM用于IIP编码块。在一些实施例中,总是使用第一个。此外,可选地,也没有必要信令通知MPM标志和MPM索引。在一些实施例中,可以利用前四个MPM。此外,可选地,没有必要信令通知MPM标志,但需要信令通知MPM索引。

在一些实施例中,每个块可以根据被包括在MPM列表中的帧内预测模式从MPM列表中选择一个,诸如选择与给定模式(例如,平面)相比具有最小索引的模式。

在一些实施例中,每个块可以从MPM列表中选择模式的子集,并且信令通知该子集中的模式索引。

在一些实施例中,用于编码帧内MPM模式的上下文被重新用于编码IIP编码块中的帧内模式。在一些实施例中,用于编码帧内MPM模式的不同上下文被用于编码IIP编码块中的帧内模式。

示例25:在一些实施例中,对于不包括水平方向和垂直方向的角度帧内预测模式,针对为IIP编码块生成的帧内预测块和帧间预测块使用相等的权重。

示例26:在一些实施例中,对于特定位置,可以在IIP编码过程中应用零权重。

在一些实施例中,零权重可以应用于在IIP编码过程中使用的帧内预测块。

在一些实施例中,零权重可以应用于在IIP编码过程中使用的帧间预测块。

示例27:在一些实施例中,无论当前块的尺寸如何,IIP编码块的帧内预测模式都只能被选择作为MPM中的一个。

在一些实施例中,无论当前块的尺寸如何,都不会信令通知MPM标志并将其推断为1。

示例28:对于IIP编码块,亮度预测色度模式(Luma-predict-chroma mode,LM)模式代替推导的模式(Derived Mode,DM)用于进行色度分量的帧内预测。

在一些实施例中,可以允许DM和LM两者。

在一些实施例中,色度分量可以允许多种帧内预测模式。

在一些实施例中,是否允许色度分量的多种模式可以取决于颜色格式。在一个示例中,对于4:4:4颜色格式,允许的色度帧内预测模式可以与亮度分量的相同。

示例29:在如下一个或多个特定情况下,可以不允许帧间-帧内预测:

A.w==T1||h==T1,例如,T1=4

B.w>T1||h>T1,例如,T1=64

C.(w==T1&&h==T2)||(w==T2&&h==T1),例如,T1=4,T2=16。

示例30:对于利用双向预测的块,可以不允许帧间-帧内预测。

在一些实施例中,如果IIP编码块的所选的Merge候选使用双向预测,则其将被转换为单向预测Merge候选。在一些实施例中,仅保留来自参考列表0的预测,并且Merge候选被视为参考参考列表0的单向预测。在一些实施例中,仅保留来自参考列表1的预测,并且Merge候选被视为参考参考列表1的单向预测。

在一些实施例中,添加了一个限制,即所选的Merge候选应当是单向预测Merge候选。可选地,信令通知的IIP编码块的Mege索引指示单向预测Merge候选的索引(即,不对双向预测Merge候选进行计数)。

在一些实施例中,三角形预测模式中使用的Merge候选列表构建过程可以用于推导IIP编码块的运动候选列表。

示例31:当应用帧间-帧内预测时,可以不允许一些编码工具。

在一些实施例中,双向光流(BIO)不应用于双向预测。

在一些实施例中,不应用重叠块运动补偿(OBMC)。

在一些实施例中,不允许解码器侧运动矢量推导/细化过程。

示例32:帧间-帧内预测中使用的帧内预测过程可以不同于正常帧内编码块中使用的帧内预测过程。

在一些实施例中,可以以不同方式过滤邻近样点。在一些实施例中,在进行帧间-帧内预测中使用的帧内预测之前,不过滤邻近样点。

在一些实施例中,对于帧间-帧内预测中使用的帧内预测,不进行位置相关的(position-dependent)帧内预测样点过滤过程。在一些实施例中,在帧间-帧内预测中不允许多线(multiline)帧内预测。在一些实施例中,在帧间-帧内预测中不允许宽角度帧内预测。

示例33:假设混合帧内和帧间预测中的帧内和帧间预测值是PIntra和Pinter,并且加权因子分别是w_intra和w_inter。位置(x,y)处的预测值计算为(PIntra(x,y)*w_intra(x,y)+PInter(x,y)*w_inter(x,y)+offset(x,y))>>N,其中w_intra(x,y)+w_iner(x,y)=2^N,并且offset(x,y)=2^(N–1)。在一个示例中,N=3。

示例34:在一些实施例中,在正常帧内编码块和IIP编码块中信令通知的MPM标志应当共享相同的算术编码上下文。

示例35:在一些实施例中,不需要MPM来编码IIP编码块中的帧内预测模式。(假设块宽度和高度是w和h)。

在一些实施例中,四种模式{平面,DC,垂直,水平}被二值化为00、01、10和11(可以利用任何映射规则,诸如00-平面、01-DC、10-垂直、11-水平)。

在一些实施例中,四种模式{平面,DC,垂直,水平}被二值化为0、10、110和111(可以利用任何映射规则,诸如0-平面、10-DC、110-垂直、111-水平)。

在一些实施例中,四种模式{平面,DC,垂直,水平}被二值化为1、01、001和000(可以利用任何映射规则,诸如1-平面、01-DC、001-垂直、000-水平)。

在一些实施例中,当可以使用W>N*H(N是诸如2的整数)时,仅可以使用三种模式{平面,DC,垂直}。这三种模式被二值化为1,01,11(可以利用任何映射规则,诸如1-平面、01-DC、11-垂直)。

在一些实施例中,当可以使用W>N*H(N是诸如2的整数)时,仅可以使用三种模式{平面,DC,垂直}。这三种模式被二值化为0、10、00(可以利用任何映射规则,诸如0-平面、10-DC、00-垂直)。

在一些实施例中,当可以使用H>N*W(N是诸如2的整数)时,仅可以使用三种模式{平面,DC,水平}。这三种模式被二值化为1、01、11(可以利用任何映射规则,诸如1-平面、01-DC、11-水平)。

在一些实施例中,当可以使用H>N*W(N是诸如2的整数)时,仅可以使用三种模式{平面,DC,水平}。这三种模式被二值化为0、10、00(可以利用任何映射规则,诸如0-平面、10-DC、00-水平)。

示例36:在一些实施例中,在IIP编码块中仅使用DC模式和平面模式。在一些实施例中,信令通知一个标志以指示是使用DC还是平面。

实例37:在一些实施例中,对于不同的颜色分量,IIP被不同地进行。

在一些实施例中,不对色度分量(诸如Cb和Cr)进行帧间-帧内预测。

在一些实施例中,IIP编码块中色度分量的帧内预测模式不同于亮度分量的帧内预测模式。在一些实施例中,DC模式总是用于色度。在一些实施例中,平面模式总是用于色度。在一些实施例中,LM模式总是用于色度。

在一些实施例中,如何对不同颜色分量进行IIP可以取决于颜色格式(诸如4:2:0或4:4:4)。

在一些实施例中,如何对不同颜色分量进行IIP可以取决于块尺寸。例如,当当前块的宽度或高度等于或小于4时,不对色度分量(诸如Cb和Cr)进行帧间-帧内预测。

MV精度问题

在下面的讨论中,用于为空域运动预测存储的MV的精度表示为P1,并且用于为时域运动预测存储的MV的精度表示为P2。

示例38:P1和P2可以相同,也可以不同。

在一些实施例中,P1是1/16亮度像素,并且P2是1/4亮度像素。在一些实施例中,P1是1/16亮度像素,并且P2是1/8亮度像素。在一些实施例中,P1是1/8亮度像素,并且P2是1/4亮度像素。在一些实施例中,P1是1/8亮度像素,并且P2是1/8亮度像素。在一些实施例中,P2是1/16亮度像素,并且P1是1/4亮度像素。在一些实施例中,P2是1/16亮度像素,并且P1是1/8亮度像素。在一些实施例中,P2是1/8亮度像素,并且P1是1/4亮度像素。

示例39:P1和P2可以不被固定。在一些实施例中,对于不同的标准简档/级别/层级,P1/P2可以不同。在一些实施例中,对于不同时域层中的图片,P1/P2可以不同。在一些实施例中,对于具有不同宽度/高度的图片,P1/P2可以不同。在一些实施例中,可以在VPS/SPS/PPS/条带头/片组头/片/CTU/CU中从编码器向解码器信令通知P1/P2。

示例40:对于MV(MVx,MVy),MVx和MVy的精度可以不同,表示为Px和Py。

在一些实施例中,对于不同的标准简档/级别/层级,Px/Py可以不同。在一些实施例中,对于不同时域层中的图片,Px/Py可以不同。在一些实施例中,对于具有不同宽度的图片,Px可以不同。在一些实施例中,对于具有不同高度的图片,Py可以不同。在一些实施例中,可以在VPS/SPS/PPS/条带头/片组头/片/CTU/CU中从编码器向解码器信令通知Px/Py。

示例41:在将MV(MVx,MVy)放入用于时域运动预测的存储之前,应当将其改变为正确精度。

在一些实施例中,如果P1>=P2,则MVx=Shift(MVx,P1-P2),MVy=Shift(MVy,P1-P2)。在一些实施例中,如果P1>=P2,则MVx=SignShift(MVx,P1-P2),MVy=SignShift(MVy,P1-P2)。在一些实施例中,如果P1<P2,则MVx=MVx<<(P2-P1),MVy=MVy<<(P2-P1)。

示例42:假设MV(MVx,MVy)精度为Px和Py,并且MVx或MVy通过具有N比特的整数存储。MV(MVx,MVy)的范围是MinX<=MVx<=MaxX,并且MinY<=MVy<=MaxY。

在一些实施例中,MinX可以等于MinY,或者它可以不等于MinY。在一些实施例中,MaxX可以等于MaxY,或者它可以不等于MaxY。在一些实施例中,{MinX,MaxX}可以取决于Px。在一些实施例中,{MinY,MaxY}可以取决于Py。在一些实施例中,{MinX,MaxX,MinY,MaxY}可以取决于N。在一些实施例中,对于为空域运动预测存储的MV和为时域运动预测存储的MV,{MinX,MaxX,MinY,MaxY}可以不同。在一些实施例中,对于不同的标准简档/级别/层级,{MinX,MaxX,MinY,MaxY}可以不同。在一些实施例中,对于不同时域层中的图片,{MinX,MaxX,MinY,MaxY}可以不同。在一些实施例中,对于具有不同宽度/高度的图片,{MinX,MaxX,MinY,MaxY}可以不同。在一些实施例中,可以在VPS/SPS/PPS/条带头/片组头/片/CTU/CU中从编码器向解码器信令通知{MinX,MaxX,MinY,MaxY}。在一些实施例中,对于具有不同宽度的图片,{MinX,MaxX}可以不同。在一些实施例中,对于具有不同高度的图片,{MinY,MaxY}可以不同。在一些实施例中,MVx在被放入用于空域运动预测的存储之前被剪裁到[MinX,MaxX]。在一些实施例中,MVx在被放入用于时域运动预测的存储之前被剪裁到[MinX,MaxX]。在一些实施例中,MVy在被放入用于空域运动预测的存储之前被剪裁到[MinY,MaxY]。在一些实施例中,MVy在被放入用于时域运动预测的存储之前被剪裁到[MinY,MaxY]。

仿射Merge模式的线缓冲器减小

示例43:仿射Merge候选从邻近块继承的仿射模型(推导的CPMV或仿射参数)总是6参数仿射模型。

在一些实施例中,如果邻近块用4参数仿射模型编码,则仿射模型仍然被继承作为6参数仿射模型。

在一些实施例中,来自邻近块的4参数仿射模型是被继承作为6参数仿射模型还是4参数仿射模型可以取决于当前块的位置。在一些实施例中,如果邻近块与当前块不在相同的编码树单元(CTU,又名最大编码单元LCU)中,则来自邻近块的4参数仿射模型被继承作为6参数仿射模型。在一些实施例中,如果邻近块与当前块不在相同的CTU线或CTU行中,则来自邻近块的4参数仿射模型被继承作为6参数仿射模型。在一些实施例中,如果邻近块不在作为当前块的M×N区域中,则来自邻近块的4参数仿射模型被继承作为6参数仿射模型。例如,M=N=64。在这种情况下,片/条带/图片被划分为多个非重叠MxN区域。在一些实施例中,如果邻近块与当前块不在相同的M×N区域线或M×N区域行中,则来自邻近块的4参数仿射模型被继承作为6参数仿射模型。例如,M=N=64。图10中描绘了CTU线/行和区域线/行。

在一些实施例中,假设当前块的左上角(或任何其他位置)是(x,y),邻近块的左上角(或任何其他位置)是(x’,y’),那么如果邻近块满足以下条件中的一个或多个,则来自邻近块的4参数仿射模型被继承作为6参数仿射模型:

(a)x/M!=x’/M。例如,M=128或64。

(b)y/N!=y’/N。例如,N=128或64。

(c)((x/M!=x’/M)&&(y/N!=y’/N))。例如,M=N=128或M=N=64。

(d)((x/M!=x’/M)||(y/N!=y’/N))。例如,M=N=128或M=N=64。

(e)x>>M!=x’>>M。例如,M=7或6。

(f)y>>N!=y’>>N。例如,N=7或6。

(g)((x>>M!=x’>>M)&&(y>>N!=y’>>N))。例如,M=N=7或M=N=6。

(h)((x>>M!=x’>>M)||(y>>N!=y’>>N))。例如,M=N=7或M=N=6。

5.实施例

下面的描述示出了如何在当前VVC标准的语法结构内实施所公开技术的示例。新增加的部分用粗体表示,并且删除部分用斜体表示。

5.1实施例#1(禁用4x4帧间预测,并且对4x8、8x4、4x16和16x4块禁用双向预测)

7.3.6.6编码单元语法

7.4.7.6编码单元语义

pred_mode_flag等于0指定当前编码单元在帧间预测模式下被编码。pred_mode_flag等于1指定当前编码单元在帧内预测模式下被编码。对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight–1,变量CuPredMode[x][y]被推导如下:

-如果pred_mode_flag等于0,则CuPredMode[x][y]设置为等于MODE_INTER。

-否则(pred_mode_flag等于1),CuPredMode[x][y]设置为等于MODE_INTRA。

当pred_mode_flag不存在时,分别地,当解码I片组时或者当解码cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于1,并且当解码P片组或B片组时,其被推断为等于0。

pred_mode_ibc_flag等于1指定当前编码单元在IBC预测模式下被编码。pred_mode_ibc_flag等于0指定当前编码单元不在IBC预测模式下被编码。

当pred_mode_ibc_flag不存在时,分别地,当解码I片组时,或者当解码在跳过模式下编码并且cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于sps_ibc_enabled_flag的值,并且当解码P片组或B片组时,其被推断为等于0。

当pred_mode_ibc_flag等于1时,对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight-1,变量CuPredMode[x][y]设置为等于MODE_IBC。

inter_pred_idc[x0][y0]根据表7-9指定是将列表0、列表1还是双向预测用于当前编码单元。阵列索引x0、y0指定所考虑的编码块相对于图片的左上方亮度样点的左上方亮度样点的位置(x0,y0)。

表7-9–帧间预测模式的名称关联

当inter_pred_idc[x0][y0]不存在时,它被推断为等于PRED_L0。

8.5.2.1概述

该过程的输入是:

-当前亮度编码块相对于当前图片的左上方亮度样点的左上方样点的亮度位置(xCb,yCb),

-变量cbWidth,其以亮度样点为单位指定当前编码块的宽度,

-变量cbHeight,其以亮度样点为单位指定当前编码块的高度。

该过程的输出是:

-1/16分数样点精确度的亮度运动矢量mvL0[0][0]和mvL1[0][0],

-参考索引refIdxL0和refIdxL1,

-预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0],

-双向预测权重索引gbiIdx。

令变量LX为当前图片的RefPicList[X],其中X为0或1。

对于变量mvL0[0][0]和mvL1[0][0]、refIdxL0和refIdxL1、以及predFlagL0[0][0]和predFlagL1[0][0]的推导,以下适用:

-如果merge_flag[xCb][yCb]等于1,则调用条款8.5.2.2中指定的Merge模式的亮度运动矢量的推导过程,其中亮度位置(xCb,yCb)、变量cbWidth和cbHeight为输入,并且输出为亮度运动矢量mvL0[0][0]、mvL1[0][0]、参考索引refIdxL0、refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx。

-否则,以下适用:

-对于在变量predFlagLX[0][0]、mvLX[0][0]和refIdxLX中、在PRED_LX中、以及在语法元素ref_idx_lX和MvdLX中X由0或1替换,以下有序步骤适用:

1.变量refIdxLX和predFlagLX[0][0]推导如下:

-如果inter_pred_idc[xCb][yCb]等于PRED_LX或PRED_BI,

refIdxLX=ref_idx_lX[xCb][yCb] (8-266)

predFlagLX[0][0]=1 (8-267)

-否则,变量refIdxLX和predFlagLX[0][0]由以下指定:

refIdxLX=-1 (8-268)

predFlagLX[0][0]=0 (8-269)

2.变量mvdLX推导如下:

mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)

mvdLX[1]=MvdLX[xCb][yCb][1] (8-271)

3.当predFlagLX[0][0]等于1时,调用条款8.5.2.8中的亮度运动矢量预测的推导过程,其中亮度编码块位置(xCb,yCb)、编码块宽度cbWidth、编码块高度cbHeight和变量refIdxLX作为输入,并且输出为mvpLX。

4.当predFlagLX[0][0]等于1时,亮度运动矢量mvLX[0][0]推导如下:

uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)

mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)

uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)

mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)

注1–如上指定的mvLX[0][0][0]和mvLX[0][0][1]的结果值将始终在-217至217-1(包含-217和217-1)的范围中。

-双向预测权重索引gbiIdx设置为等于gbi_idx[xCb][yCb]。

当所有以下条件为真时,refIdxL1设置为等于-1,predFlagL1设置为等于0,并且gbiIdx设置为等于0:

-predFlagL0[0][0]等于1。

-predFlagL1[0][0]等于1。

-(cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)||(cbWidth+cbHeight==20)

=cbWidth等于4;cbHeight等于4。

条款8.5.2.16中指定的基于历史的运动矢量预测值列表的更新过程与亮度运动矢量mvL0[0][0]和mvL1[0][0]、参考索引refIdxL0和refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx一起被调用。

9.5.3.8inter_pred_idc的二值化过程

该过程的输入是对语法元素inter_pred_idc、当前亮度编码块宽度cbWidth和当前亮度编码块高度cbHeight的二值化的请求。

该过程的输出是语法元素的二值化。

语法元素inter_pred_idc的二值化在表9-9中指定。

表9-9–inter_pred_idc的二值化

9.5.4.2.1概述

表9-10–将ctxInc分配给具有上下文编码的二进制位(bin)的语法元素

5.2实施例#2(禁用4x4帧间预测)

7.3.6.6编码单元语法

7.4.7.6编码单元语义

pred_mode_flag等于0指定当前编码单元在帧间预测模式下被编码。pred_mode_flag等于1指定当前编码单元在帧内预测模式下被编码。对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight–1,变量CuPredMode[x][y]被推导如下:

-如果pred_mode_flag等于0,则CuPredMode[x][y]设置为等于MODE_INTER。

-否则(pred_mode_flag等于1),CuPredMode[x][y]设置为等于MODE_INTRA。

当pred_mode_flag不存在时,分别地,当解码I片组时或者当解码cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于1,并且当解码P片组或B片组时,其被推断为等于0。

pred_mode_ibc_flag等于1指定当前编码单元在IBC预测模式下被编码。pred_mode_ibc_flag等于0指定当前编码单元不在IBC预测模式下被编码。

当pred_mode_ibc_flag不存在时,分别地,当解码I片组时,或者当解码在跳过模式下编码并且cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于sps_ibc_enabled_flag的值,并且当解码P片组或B片组时,其被推断为等于0。

当pred_mode_ibc_flag等于1时,对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight-1,变量CuPredMode[x][y]设置为等于MODE_IBC。

5.3实施例#3(对4x8、8x4、4x16和16x4块禁用双向预测)

7.4.7.6编码单元语义

inter_pred_idc[x0][y0]根据表7-9指定是将列表0、列表1还是双向预测用于当前编码单元。阵列索引x0、y0指定所考虑的编码块相对于图片的左上方亮度样点的左上方亮度样点的位置(x0,y0)。

表7-9–帧间预测模式的名称关联

当inter_pred_idc[x0][y0]不存在时,它被推断为等于PRED_L0。

8.5.2.1概述

该过程的输入是:

-当前亮度编码块相对于当前图片的左上方亮度样点的左上方样点的亮度位置(xCb,yCb),

-变量cbWidth,其以亮度样点为单位指定当前编码块的宽度,

-变量cbHeight,其以亮度样点为单位指定当前编码块的高度。

该过程的输出是:

-1/16分数样点精确度的亮度运动矢量mvL0[0][0]和mvL1[0][0],

-参考索引refIdxL0和refIdxL1,

-预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0],

-双向预测权重索引gbiIdx。

令变量LX为当前图片的RefPicList[X],其中X为0或1。

对于变量mvL0[0][0]和mvL1[0][0]、refIdxL0和refIdxL1、以及predFlagL0[0][0]和predFlagL1[0][0]的推导,以下适用:

-如果merge_flag[xCb][yCb]等于1,则调用条款8.5.2.2中指定的Merge模式的亮度运动矢量的推导过程,其中亮度位置(xCb,yCb)、变量cbWidth和cbHeight为输入,并且输出为亮度运动矢量mvL0[0][0]、mvL1[0][0]、参考索引refIdxL0、refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx。

-否则,以下适用:

-对于在变量predFlagLX[0][0]、mvLX[0][0]和refIdxLX中、在PRED_LX中、以及在语法元素ref_idx_lX和MvdLX中X由0或1替换,以下有序步骤适用:

5.变量refIdxLX和predFlagLX[0][0]推导如下:

-如果inter_pred_idc[xCb][yCb]等于PRED_LX或PRED_BI,

refIdxLX=ref_idx_lX[xCb][yCb] (8-266)

predFlagLX[0][0]=1 (8-267)

-否则,变量refIdxLX和predFlagLX[0][0]由以下指定:

refIdxLX=-1 (8-268)

predFlagLX[0][0]=0 (8-269)

6.变量mvdLX推导如下:

mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)

mvdLX[1]=MvdLX[xCb][yCb][1] (8-271)

7.当predFlagLX[0][0]等于1时,调用条款8.5.2.8中的亮度运动矢量预测的推导过程,其中亮度编码块位置(xCb,yCb)、编码块宽度cbWidth、编码块高度cbHeight和变量refIdxLX作为输入,并且输出为mvpLX。

8.当predFlagLX[0][0]等于1时,亮度运动矢量mvLX[0][0]推导如下:

uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)

mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)

uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)

mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)

注1–如上指定的mvLX[0][0][0]和mvLX[0][0][1]的结果值将始终在-217至217-1(包含-217和217-1)的范围中。

-双向预测权重索引gbiIdx设置为等于gbi_idx[xCb][yCb]。

当所有以下条件为真时,refIdxL1设置为等于-1,predFlagL1设置为等于0,并且gbiIdx设置为等于0:

-predFlagL0[0][0]等于1。

-predFlagL1[0][0]等于1。

-(cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)||

(cbWidth+cbHeight==20)

-cbWidth等于4;cbHeight等于4。

条款8.5.2.16中指定的基于历史的运动矢量预测值列表的更新过程与亮度运动矢量mvL0[0][0]和mvL1[0][0]、参考索引refIdxL0和refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx一起被调用。

9.5.3.8inter_pred_idc的二值化过程

该过程的输入是对语法元素inter_pred_idc、当前亮度编码块宽度cbWidth和当前亮度编码块高度cbHeight的二值化的请求。

该过程的输出是语法元素的二值化。

语法元素inter_pred_idc的二值化在表9-9中指定。

表9-9–inter_pred_idc的二值化

9.5.4.2.1概述

表9-10–将ctxInc分配给具有上下文编码的二进制位的语法元素

实施例#4(禁用4x4帧间预测,并且对4x8、8x4块禁用双向预测)

7.3.6.6编码单元语法

7.4.7.6编码单元语义

pred_mode_flag等于0指定当前编码单元在帧间预测模式下被编码。pred_mode_flag等于1指定当前编码单元在帧内预测模式下被编码。对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight–1,变量CuPredMode[x][y]被推导如下:

-如果pred_mode_flag等于0,则CuPredMode[x][y]设置为等于MODE_INTER。

-否则(pred_mode_flag等于1),CuPredMode[x][y]设置为等于MODE_INTRA。

当pred_mode_flag不存在时,分别地,当解码I片组时或者当解码cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于1,并且当解码P片组或B片组时,其被推断为等于0。

pred_mode_ibc_flag等于1指定当前编码单元在IBC预测模式下被编码。pred_mode_ibc_flag等于0指定当前编码单元不在IBC预测模式下被编码。

当pred_mode_ibc_flag不存在时,分别地,当解码I片组时,或者当解码在跳过模式下编码并且cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于sps_ibc_enabled_flag的值,并且当解码P片组或B片组时,其被推断为等于0。

当pred_mode_ibc_flag等于1时,对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight-1,变量CuPredMode[x][y]设置为等于MODE_IBC。

inter_pred_idc[x0][y0]根据表7-9指定是将列表0、列表1还是双向预测用于当前编码单元。阵列索引x0、y0指定所考虑的编码块相对于图片的左上方亮度样点的左上方亮度样点的位置(x0,y0)。

表7-9–帧间预测模式的名称关联

当inter_pred_idc[x0][y0]不存在时,它被推断为等于PRED_L0。

8.5.2.1概述

该过程的输入是:

-当前亮度编码块相对于当前图片的左上方亮度样点的左上方样点的亮度位置(xCb,yCb),

-变量cbWidth,其以亮度样点为单位指定当前编码块的宽度,

-变量cbHeight,其以亮度样点为单位指定当前编码块的高度。

该过程的输出是:

-1/16分数样点精确度的亮度运动矢量mvL0[0][0]和mvL1[0][0],

-参考索引refIdxL0和refIdxL1,

-预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0],

-双向预测权重索引gbiIdx。

令变量LX为当前图片的RefPicList[X],其中X为0或1。

对于变量mvL0[0][0]和mvL1[0][0]、refIdxL0和refIdxL1、以及predFlagL0[0][0]和predFlagL1[0][0]的推导,以下适用:

-如果merge_flag[xCb][yCb]等于1,则调用条款8.5.2.2中指定的Merge模式的亮度运动矢量的推导过程,其中亮度位置(xCb,yCb)、变量cbWidth和cbHeight为输入,并且输出为亮度运动矢量mvL0[0][0]、mvL1[0][0]、参考索引refIdxL0、refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx。

-否则,以下适用:

-对于在变量predFlagLX[0][0]、mvLX[0][0]和refIdxLX中、在PRED_LX中、以及在语法元素ref_idx_lX和MvdLX中X由0或1替换,以下有序步骤适用:

1.变量refIdxLX和predFlagLX[0][0]推导如下:

-如果inter_pred_idc[xCb][yCb]等于PRED_LX或PRED_BI,

refIdxLX=ref_idx_lX[xCb][yCb] (8-266)

predFlagLX[0][0]=1 (8-267)

-否则,变量refIdxLX和predFlagLX[0][0]由以下指定:

refIdxLX=-1 (8-268)

predFlagLX[0][0]=0 (8-269)

2.变量mvdLX推导如下:

mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)

mvdLX[1]=MvdLX[xCb][yCb][1] (8-271)

3.当predFlagLX[0][0]等于1时,调用条款8.5.2.8中的亮度运动矢量预测的推导过程,其中亮度编码块位置(xCb,yCb)、编码块宽度cbWidth、编码块高度cbHeight和变量refIdxLX作为输入,并且输出为mvpLX。

4.当predFlagLX[0][0]等于1时,亮度运动矢量mvLX[0][0]推导如下:

uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)

mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)

uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)

mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)

注1–如上指定的mvLX[0][0][0]和mvLX[0][0][1]的结果值将始终在-217至217-1(包含-217和217-1)的范围中。

-双向预测权重索引gbiIdx设置为等于gbi_idx[xCb][yCb]。

当所有以下条件为真时,refIdxL1设置为等于-1,predFlagL1设置为等于0,并且gbiIdx设置为等于0:

-predFlagL0[0][0]等于1。

-predFlagL1[0][0]等于1。

-(cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)

-cbWidth等于4。

-cbHeight等于4。

条款8.5.2.16中指定的基于历史的运动矢量预测值列表的更新过程与亮度运动矢量mvL0[0][0]和mvL1[0][0]、参考索引refIdxL0和refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx一起被调用。

9.5.3.8inter_pred_idc的二值化过程

该过程的输入是对语法元素inter_pred_idc、当前亮度编码块宽度cbWidth和当前亮度编码块高度cbHeight的二值化的请求。

该过程的输出是语法元素的二值化。

语法元素inter_pred_idc的二值化在表9-9中指定。

表9-9–inter_pred_idc的二值化

9.5.4.2.1概述

表9-10–将ctxInc分配给具有上下文编码的二进制位的语法元素

实施例#5(禁用4x4帧间预测,并且对4x8、8x4块禁用双向预测,禁用常规Merge模式的共享Merge列表)

7.3.6.6编码单元语法

7.4.7.6编码单元语义

pred_mode_flag等于0指定当前编码单元在帧间预测模式下被编码。pred_mode_flag等于1指定当前编码单元在帧内预测模式下被编码。对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight–1,变量CuPredMode[x][y]被推导如下:

-如果pred_mode_flag等于0,则CuPredMode[x][y]设置为等于MODE_INTER。

-否则(pred_mode_flag等于1),CuPredMode[x][y]设置为等于MODE_INTRA。

当pred_mode_flag不存在时,分别地,当解码I片组时或者当解码cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于1,并且当解码P片组或B片组时,其被推断为等于0。

pred_mode_ibc_flag等于1指定当前编码单元在IBC预测模式下被编码。pred_mode_ibc_flag等于0指定当前编码单元不在IBC预测模式下被编码。

当pred_mode_ibc_flag不存在时,分别地,当解码I片组时,或者当解码在跳过模式下编码并且cbWidth等于4且cbHeight等于4的编码单元时,其被推断为等于sps_ibc_enabled_flag的值,并且当解码P片组或B片组时,其被推断为等于0。

当pred_mode_ibc_flag等于1时,对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight-1,变量CuPredMode[x][y]设置为等于MODE_IBC。

inter_pred_idc[x0][y0]根据表7-9指定是将列表0、列表1还是双向预测用于当前编码单元。阵列索引x0、y0指定所考虑的编码块相对于图片的左上方亮度样点的左上方亮度样点的位置(x0,y0)。

表7-9–帧间预测模式的名称关联

当inter_pred_idc[x0][y0]不存在时,它被推断为等于PRED_L0。

8.5.2.1概述

该过程的输入是:

-当前亮度编码块相对于当前图片的左上方亮度样点的左上方样点的亮度位置(xCb,yCb),

-变量cbWidth,其以亮度样点为单位指定当前编码块的宽度,

-变量cbHeight,其以亮度样点为单位指定当前编码块的高度。

该过程的输出是:

-1/16分数样点精确度的亮度运动矢量mvL0[0][0]和mvL1[0][0],

-参考索引refIdxL0和refIdxL1,

-预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0],

-双向预测权重索引gbiIdx。

令变量LX为当前图片的RefPicList[X],其中X为0或1。

对于变量mvL0[0][0]和mvL1[0][0]、refIdxL0和refIdxL1、以及predFlagL0[0][0]和predFlagL1[0][0]的推导,以下适用:

-如果merge_flag[xCb][yCb]等于1,则调用条款8.5.2.2中指定的Merge模式的亮度运动矢量的推导过程,其中亮度位置(xCb,yCb)、变量cbWidth和cbHeight为输入,并且输出为亮度运动矢量mvL0[0][0]、mvL1[0][0]、参考索引refIdxL0、refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx。

-否则,以下适用:

-对于在变量predFlagLX[0][0]、mvLX[0][0]和refIdxLX中、在PRED_LX中、以及在语法元素ref_idx_lX和MvdLX中X由0或1替换,以下有序步骤适用:

5.变量refIdxLX和predFlagLX[0][0]推导如下:

-如果inter_pred_idc[xCb][yCb]等于PRED_LX或PRED_BI,

refIdxLX=ref_idx_lX[xCb][yCb] (8-266)

predFlagLX[0][0]=1 (8-267)

-否则,变量refIdxLX和predFlagLX[0][0]由以下指定:

refIdxLX=-1 (8-268)

predFlagLX[0][0]=0 (8-269)

6.变量mvdLX推导如下:

mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)

mvdLX[1]=MvdLX[xCb][yCb][1] (8-271)

7.当predFlagLX[0][0]等于1时,调用条款8.5.2.8中的亮度运动矢量预测的推导过程,其中亮度编码块位置(xCb,yCb)、编码块宽度cbWidth、编码块高度cbHeight和变量refIdxLX作为输入,

并且输出为mvpLX。

8.当predFlagLX[0][0]等于1时,亮度运动矢量mvLX[0][0]推导如下:

uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)

mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)

uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)

mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)

注1–如上指定的mvLX[0][0][0]和mvLX[0][0][1]的结果值将始终在-217至217-1(包含-217和217-1)的范围中。

-双向预测权重索引gbiIdx设置为等于gbi_idx[xCb][yCb]。

当所有以下条件为真时,refIdxL1设置为等于-1,predFlagL1设置为等于0,并且gbiIdx设置为等于0:

-predFlagL0[0][0]等于1。

-predFlagL1[0][0]等于1。

-(cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)

-cbWidth等于4。

-cbHeight等于4。

条款8.5.2.16中指定的基于历史的运动矢量预测值列表的更新过程与亮度运动矢量mvL0[0][0]和mvL1[0][0]、参考索引refIdxL0和refIdxL1、预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]、以及双向预测权重索引gbiIdx一起被调用。

8.5.2.2Merge模式的亮度运动矢量的推导过程

只有当merge_flag[xCb][yPb]等于1时,才会调用该过程,其中(xCb,yCb)指定当前亮度编码块相对于当前图片的左上方亮度样点的左上方样点。

该过程的输入是:

-当前亮度编码块相对于当前图片的左上方亮度样点的左上方样点的亮度位置(xCb,yCb),

-变量cbWidth,其以亮度样点为单位指定当前编码块的宽度,

-变量cbHeight,其以亮度样点为单位指定当前编码块的高度。

该过程的输出是:

-1/16分数样点精确度的亮度运动矢量mvL0[0][0]和mvL1[0][0],

-参考索引refIdxL0和refIdxL1,

-预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0],

-双向预测权重索引gbiIdx。

双向预测权重索引gbiIdx设置为等于0。

变量xSmr、ySmr、smrWidth、smrHeight和smrNumHmvpCand推导如下:

xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-276)

ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-277)

smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth(8-278)

smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight(8-279)

smrNumHmvpCand=

IsInSmr[xCb][yCb]?NumHmvpSmrCand:NumHmvpCand(8-280)

8.5.2.6基于历史的Merge候选的推导过程

该过程的输入是:

-Merge候选列表mergeCandList,

-变量isInSmr,其指定当前编码单元是否在共享mergign候选区域内部,

-列表numCurrMergeCand中的可用Merge候选的数量。

该过程的输出是:

-修改后的Merge候选列表mergeCandList,

-列表numCurrMergeCand中的Merge候选的修改后的数量。

变量isPrunedA1和isPrunedB1都设置为等于FALSE(假)。

阵列smrHmvpCandList和变量smrNumHmvpCand推导如下:

smrHmvpCandList=isInSmr?HmvpSmrCandList:HmvpCandList(8-353)smrNumHmvpCand=isInSmr?NumHmvpSmrCand:NumHmvpCand(8-354)

对于具有索引hMvpIdx=1..smrNumHmvpCand的smrHmvpCandList[hMvpIdx]中的每个候选,重复以下有序步骤,直到numCurrMergeCand等于(MaxNumMergeCand-1):

1.变量sameMotion推导如下:

-如果所有以下条件对于任何Merge候选N都为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于TRUE(真):

-hMvpIdx小于或等于2。

-候选smrHmvpCandList[smrNumHmvpCand-hMvpIdx]等于Merge候选N。

-isPrunedN等于FALSE。

-否则,sameMotion设置为等于FALSE。

2.当sameMotion等于FFALSE时,候选smrHmvpCandList[smrNumHmvpCand-hMvpIdx]按如下方式添加到Merge候选列表:

mergeCandList[numCurrMergeCand++]=

smrHmvpCandList[smrNumHmvpCand-hMvpIdx] (8-355)

9.5.3.8inter_pred_idc的二值化过程

该过程的输入是对语法元素inter_pred_idc、当前亮度编码块宽度cbWidth和当前亮度编码块高度cbHeight的二值化的请求。

该过程的输出是语法元素的二值化。

语法元素inter_pred_idc的二值化在表9-9中指定。

表9-9–inter_pred_idc的二值化

9.5.4.2.1概述

表9-10–将ctxInc分配给具有上下文编码的二进制位的语法元素

图11是视频处理装置1100的框图。装置1100可以用于实施本文描述的一种或多种方法。装置1100可以体现在智能电话、平板电脑、计算机、物联网(Internet of Things,IoT)接收器等中。装置1100可以包括一个或多个处理器1102、一个或多个存储器1104和视频处理硬件1106。(多个)处理器1102可以被配置为实施本文档中描述的一种或多种方法。存储器(多个存储器)1104可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件1106可以用于以硬件电路实施本文档中描述的一些技术。

图12是视频处理的示例方法1200的流程图。方法1200包括确定(1202)被仿射编码的当前视频块的代表性运动矢量和该当前视频块的子块的运动矢量之间的尺寸限制,以及通过使用尺寸限制来执行(1204)当前视频块或子块的比特流表示和像素值之间的转换。

在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,可以在从视频的像素表示到对应的比特流表示的转换期间应用视频压缩算法,反之亦然。当前视频块的比特流表示可以例如对应于在比特流内并置或分布在不同位置的比特,如语法所定义的。例如,宏块可以根据变换和编码的误差残余值而编码,并且还可以使用比特流中的头和其他字段中的比特。

应当理解,所公开的技术对于实施其中视频处理的实施复杂性通过降低的内存要求或线缓冲器尺寸要求而降低的实施例是有用的。一些目前公开的技术可以使用以下基于条款的描述来描述。

1.一种视频处理的方法,包括:

确定被仿射编码的当前视频块的代表性运动矢量和该当前视频块的子块的运动矢量之间的尺寸限制;以及

通过使用尺寸限制来执行当前视频块或子块的比特流表示和像素值之间的转换。

2.根据条款1所述的方法,其中,执行该转换包括从像素值生成比特流表示。

3.根据条款1所述的方法,其中,执行该转换包括从比特流表示生成像素值。

4.根据条款1至3中任一项所述的方法,其中,尺寸限制包括根据以下来约束子块的运动矢量(MVx,MVy)的值:MVx>=MV’x-DH0并且MVx<=MV’x+DH1并且MVy>=MV’y-DV0并且MVy<=MV’y+DV1,其中MV’=(MV’x,MV’y);

其中MV’表示代表性运动矢量;并且其中DH0、DH1、DV0和DV1表示正数。

5.根据条款4所述的方法,其中,尺寸限制包括以下中的至少一个:

i.DH0等于DH1,或DV0等于DV1

ii.DH0等于DV0,或DH1等于DV1

iii.DH0和DH1不同,或者DV0和DV1不同

iv.DH0、DH1、DV0和DV1是在视频参数集级别或序列参数集级别或图片参数集级别或条带头级别或片组头级别或片级别或编码树单元级别或编码单元级别或预测单元级别的比特流表示中信令通知的

v.DH0、DH1、DV0和DV1是视频处理的模式的函数

vi.DH0、DH1、DV0和DV1取决于当前视频块的宽度和高度

vii.DH0、DH1、DV0和DV1取决于当前视频块是使用单向预测还是双向预测而编码的

viii.DH0、DH1、DV0和DV1取决于子块的位置。

6.根据条款1至5中任一项所述的方法,其中,代表性运动矢量对应于当前视频块的控制点运动矢量。

7.根据条款1至5中任一项所述的方法,其中,代表性运动矢量对应于当前视频块的角子块的运动矢量。

8.根据条款1至7中任一项所述的方法,其中,用于子块的运动矢量和代表性运动矢量的精度对应于比特流表示中的运动矢量信令通知精度。

9.根据条款1至7中任一项所述的方法,其中,用于子块的运动矢量和代表性运动矢量的精度对应于用于存储运动矢量的存储精度。

10.一种视频处理的方法,包括:

为被仿射编码的当前视频块确定该当前视频块的一个或多个子块,其中每个子块的尺寸为MxN个像素,其中M和N是2或4的倍数;

使子块的运动矢量符合尺寸限制;以及

通过使用尺寸限制,条件性地基于触发来执行当前视频块的比特流表示和像素值之间的转换。

11.根据条款10所述的方法,其中,执行该转换包括从像素值生成比特流表示。

12.根据条款10所述的方法,其中,执行该转换包括从比特流表示生成像素值。

13.根据条款10至12中任一项所述的方法,其中,尺寸限制将当前视频块的子块运动矢量的整数部分之间的最大差限制为小于或等于K像素,其中K为整数。

14.根据条款10-13中任一项所述的方法,其中,方法仅在当前视频块是使用双向预测而编码的情况下被应用。

15.根据条款10-13中任一项所述的方法,其中,方法仅在当前视频块是使用单向预测而编码的情况下被应用。

16.根据条款10-13中任一项所述的方法,其中,M、N或K的值是当前视频块的单向预测或双向预测模式的函数。

17.根据条款10-13中任一项所述的方法,其中,M、N或K的值是当前视频块的高度或宽度的函数。

18.根据条款10至17中任一项所述的方法,其中,该触发被包括在视频参数集级别或序列参数集级别或图片参数集级别或条带头级别或片组头级别或片级别或编码树单元级别或编码单元级别或预测单元级别的比特流表示中。

19.根据条款18所述的方法,其中,该触发信令通知M、N或K的值。

20.根据条款10至19中任一项所述的方法,其中,当前视频块的一个或多个子块是基于用于当前视频块的仿射编码的类型而计算的。

21.根据条款20所述的方法,其中,两种不同的方法被用于计算单向预测和双向预测仿射预测模式的子块。

22.根据条款21所述的方法,其中,如果当前视频块是双向预测的仿射块,则来自不同参考列表的子块的宽度或高度是不同的。

23.根据条款20-22中任一项所述的方法,其中,一个或多个子块对应于亮度分量。

24.根据条款10至23中任一项所述的方法,其中,一个或多个子块中的一个的宽度和高度是使用当前视频块的运动矢量值和一个或多个子块中的一个的运动矢量值之间的运动矢量差而确定的。

25.根据条款20至23中任一项所述的方法,其中,该计算基于在比特流表示中信令通知的像素精度。

26.一种视频处理的方法,包括:

确定当前视频块满足尺寸条件;以及

基于该确定,通过排除当前视频块的双向预测编码模式来执行当前视频块的比特流表示和像素值之间的转换。

27.一种视频处理的方法,包括:

确定当前视频块满足尺寸条件;以及

基于该确定来执行当前视频块的比特流表示和像素值之间的转换,其中帧间预测模式是根据尺寸条件在比特流表示中信令通知的。

28.一种视频处理的方法,包括:

确定当前视频块满足尺寸条件;以及

基于该确定来执行当前视频块的比特流表示和像素值之间的转换,其中在该转换期间Merge候选列表的生成取决于尺寸条件。

29.一种视频处理的方法,包括:

确定当前视频块的子编码单元满足尺寸条件;以及

基于该确定来执行当前视频块的比特流表示和像素值之间的转换,其中用于生成子编码单元的编码树划分过程取决于尺寸条件。

30.根据条款26至29中任一项所述的方法,其中,尺寸条件是以下中的一个,其中w是宽度,并且h是高度:

(a)w等于T1并且h等于T2,或者h等于T1并且w等于T2;

(b)w等于T1并且h不大于T2,或者h等于T1并且w不大于T2;

(c)w不大于T1并且h不大于T2,或者h不大于T1并且w不大于T2。

31.根据条款30所述的方法,其中,T1=8并且T2=8,或者T1=8、T2=4,或者T1=4并且T2=4,或者T1=4和T2=16。

32.根据条款26至29中任一项所述的方法,其中,该转换包括从当前视频块的像素值生成比特流表示或者从比特流表示生成当前视频块的像素值。

33.一种视频处理的方法,包括:

基于当前视频块的位置来确定用于当前视频块的广义双向预测(GBi)过程的权重索引;以及

使用权重索引执行当前视频块和其比特流表示之间的转换以实施GBi过程。

34.根据任何条款33所述的方法,其中,该转换包括从当前视频块的像素值生成比特流表示或者从比特流表示生成当前视频块的像素值。

35.根据条款33或34中任一项所述的方法,其中,该确定包括,对于在第一位置的当前视频块,继承或预测邻近块的另一权重索引,并且对于在第二位置的当前视频块,计算GBI而不从邻近块继承。

36.根据条款35所述的方法,其中,第二位置包括位于与邻近块不同的编码树单元中的当前视频块。

37.根据条款35所述的方法,其中,第二位置对应于处于与邻近块不同的编码树单元线或与邻近块不同的编码树单元行中的当前视频块。

38.一种视频处理的方法,包括:

确定当前视频块被编码为帧内-帧间预测(IIP)编码块;以及

使用用于确定当前视频块的帧内预测模式或最可能模式(MPM)的简化规则来执行当前视频块和其比特流表示之间的转换。

39.根据条款38所述的方法,其中,该转换包括从当前视频块的像素值生成比特流表示或者从比特流表示生成当前视频块的像素值。

40.根据条款38-39中任一项所述的方法,其中,简化规则指定确定被帧内-帧间预测(IIP)编码为独立于邻近视频块的另一帧内预测编码模式的当前视频块的帧内预测编码模式。

41.根据条款38至39中任一项所述的方法,其中,帧内预测编码模式是使用独立于邻近块的编码的编码在比特流表示中表示的。

42.根据条款38至40中任一项所述的方法,其中,简化规则指定优先相对于帧内预测编码块的编码模式而偏好帧内编码块的编码模式的选择。

43.根据条款38所述的方法,其中,简化规则指定通过在插入来自IIP编码的邻近块的帧内预测模式之前插入来自帧内编码的邻近块的帧内预测模式来确定MPM。

44.根据条款38所述的方法,其中,简化规则指定使用与用于另一正常帧内编码块的相同的构建过程用于确定MPM。

45.一种视频处理的方法,包括:

确定当前视频块满足简化准则;以及

通过禁止将帧间-帧内预测模式用于当前视频块和比特流表示之间的转换或者通过禁用用于该转换的附加编码工具来执行该转换。

46.根据条款45所述的方法,其中,该转换包括从当前视频块的像素值生成比特流表示或者从比特流表示生成当前视频块的像素值。

47.根据条款45-46中任一项所述的方法,其中,简化准则包括当前视频块的宽度或高度等于T1,其中T1为整数。

48.根据条款45-46中任一项所述的方法,其中,简化准则包括当前视频块的宽度或高度大于T1,其中T1为整数。

49.根据条款45-46中任一项所述的方法,其中,简化准则包括当前视频块的宽度等于T1,并且当前视频块的高度等于T2。

48.根据条款45-46中任一项所述的方法,其中,简化准则指定当前视频块使用双向预测模式。

49.根据条款45-46中任一项所述的方法,其中,附加编码工具包括双向光流(BIO)编码。

50.根据条款45-46中任一项所述的方法,其中,附加编码工具包括重叠块运动补偿模式。

51.一种视频处理的方法,包括:

使用基于运动矢量的编码过程执行当前视频块和当前视频块的比特流表示之间的转换,其中:

(a)在转换过程期间,精度P1用于存储空域运动预测结果,并且精度P2用于存储时域运动预测结果,其中P1和P2是分数,或者

(b)精度Px用于存储x运动矢量,并且精度Py用于存储y运动矢量,其中Px和Py是分数。

52.根据条款51所述的方法,其中,P1、P2、Px和Py是不同的数。

53.根据条款52所述的方法,其中:

P1是1/16亮度像素,并且P2是1/4亮度像素,或者

P1是1/16亮度像素,并且P2是1/8亮度像素,或者

P1是1/8亮度像素,并且P2是1/4亮度像素,或者

P1是1/8亮度像素,并且P2是1/8亮度像素,或者

P2是1/16亮度像素,并且P1是1/4亮度像素,或者

P2是1/16亮度像素,并且P1是1/8亮度像素,或者

P2是1/8亮度像素,并且P1是1/4亮度像素。

54.根据条款51-52所述的方法,其中,对于被包括在比特流表示中的不同时域层中的不同图片,P1和P2是不同的。

55.根据条款51-52所述的方法,其中,在存储作为时域运动预测之前,计算出的运动矢量通过精度校正过程而处理。

56.根据条款51-52所述的方法,其中,该存储包括将x运动矢量和y运动矢量存储为N比特整数,并且其中x运动矢量的值的范围是[MinX,MaxX],并且y运动矢量的值的范围是[MinY,MaxY],其中范围满足以下中的一个或多个:

a.MinX等于MinY,

b.MaxX等于MaxY,

c.{MinX,MaxX}取决于Px;

d.{MinY,MaxY}取决于Py;

e.{MinX,MaxX,MinY,MaxY}取决于N。

f.对于为空域运动预测存储的MV和为时域运动预测存储的另一MV,{MinX,MaxX,MinY,MaxY}是不同的。

g.对于不同时域层中的图片,{MinX,MaxX,MinY,MaxY}是不同的。

h.对于具有不同宽度或高度的图片,{MinX,MaxX,MinY,MaxY}是不同的。

i.对于具有不同宽度的图片,{MinX,MaxX}是不同的。

j.对于具有不同高度的图片,{MinY,MaxY}是不同的。

k.在存储用于空域运动预测之前,MVx被剪裁到[MinX,MaxX]。

l.在存储用于时域运动预测之前,MVx被剪裁到[MinX,MaxX]。

m.在存储用于空域运动预测之前,MVy被剪裁到[MinY,MaxY]。

n.在存储用于时域运动预测之前,MVy被剪裁到[MinY,MaxY]。

59.一种视频处理的方法,包括:通过提取(W2+N–1–PW)*(H2+N–1–PH)块、对提取的块进行像素填充、对像素填充的块执行边界像素重复、以及获得尺寸为W1xH1的小子块的像素值,在当前视频块的尺寸为W2xH2的大子块中内插该小子块,其中W1、W2、H1、H2以及PW和PH为整数;以及使用小子块的内插的像素值执行当前视频块和当前视频块的比特流表示之间的转换。

60.根据条款59所述的方法,其中,该转换包括从比特流表示生成当前视频块或者从当前子块生成比特流表示。

61.根据条款59-60中任一项所述的方法,其中,W2=H2=8,W1=H1=4,并且PW=PH=0。

62.一种视频处理的方法,包括:

在维度为WxH的当前视频块和该当前视频块的比特流表示的转换期间,通过在运动补偿操作期间提取(W+N–1–PW)*(W+N–1–PH)个参考像素并且在提取的参考像素外部填充参考像素来执行运动补偿操作;以及

使用运动补偿操作的结果执行当前视频块和当前视频块的比特流表示之间的转换,其中W、H、N、PW和PH为整数。

63.根据条款62所述的方法,其中,该转换包括从比特流表示生成当前视频块或者从当前子块生成比特流表示。

64.根据条款62-63中任一项所述的方法,其中,该填充包括重复提取的像素的左边界或右边界。

65.根据条款62-63中任一项所述的方法,其中,该填充包括重复提取的像素的顶部边界或底部边界。

66.根据条款62-63中任一项所述的方法,其中,该填充包括将像素值设置为常数。

67.根据条款38所述的方法,其中,规则指定在该转换期间使用与用于其他帧内编码块的相同的算术编码上下文。

68.根据条款38所述的方法,其中,当前视频块的该转换不包括使用MPM用于当前视频块。

69.根据条款38所述的方法,其中,简化规则指定仅使用DC和平面模式用于作为IIP编码块的当前视频块的比特流表示。

70.根据条款38所述的方法,其中,简化规则为亮度和色度分量指定不同的帧内预测模式。

71.根据条款44所述的方法,其中,MPM的子集用于被IIP编码的当前视频块。

72.根据条款38所述的方法,其中,简化规则指示MPM是基于被包括在MPM列表中的帧内预测模式而选择的。

73.根据条款38所述的方法,其中,简化规则指示要从MPM列表中选择MPM的子集,并且信令通知与该子集相关联的模式索引。

74.根据条款38所述的方法,其中,用于编码帧内MPM模式的上下文用于编码被IIP编码的当前视频块的帧内模式。

75.根据条款44所述的方法,其中,相等的权重用于为当前视频块生成的帧内预测块和帧间预测块,当前视频块是IIP编码块。

76.根据条款44所述的方法,其中,零权重用于当前视频块的IIP编码过程中的位置。

77.根据条款77所述的方法,其中,零权重被应用于在IIP编码过程中使用的帧内预测块。

78.根据条款77所述的方法,其中,零权重被应用于在IIP编码过程中使用的帧间预测块。

79.一种视频处理的方法,包括:

基于当前视频块的尺寸来确定当前视频块的双向预测或单向预测不被允许;以及

基于该确定,通过禁用双向预测或单向预测模式来执行当前视频块的比特流表示和像素值之间的转换。例如,不允许的模式不用于编码或解码当前视频块。转换操作可以表示视频编码或压缩、或者视频解码或解压缩。

80.根据条款79所述的方法,其中,当前视频块为4x8,并且确定包括确定双向预测不被允许。其他示例在示例5中给出。

81.根据条款79所述的方法,其中,当前视频块为4x8或8x4,并且确定包括确定双向预测不被允许。

82.根据条款79所述的方法,其中,当前视频块为4xN,其中N是<=16的整数,并且确定包括确定双向预测不被允许。

83.根据条款26-29或79-82中任一项所述的方法,其中,当前块的尺寸对应于当前块的颜色分量或亮度分量的尺寸。

84.根据条款83所述的方法,其中,禁用双向预测或单向预测被应用于当前视频块的所有三个分量。

85.根据条款83所述的方法,其中,禁用双向预测或单向预测仅被应用于其尺寸被用作当前块的尺寸的颜色分量。

86.根据条款79至85中任一项所述的方法,其中,该转换是通过禁用双向预测并进一步使用双向预测的Merge候选、然后将仅来自一个参考列表的仅一个运动矢量分配给当前视频块而执行的。

87.根据条款79所述的方法,其中,当前视频块为4x4,并且确定包括确定双向预测和单向预测都不被允许。

88.根据条款87所述的方法,其中,当前视频块被编码为帧内块。

89.根据条款87所述的方法,其中,当前视频块被限制为使用整数像素运动矢量。

条款78-89的附加示例和实施例在示例5中描述。

90.一种处理视频的方法,包括:

基于当前视频块的尺寸来确定当前视频块的视频编码条件;以及

基于视频编码条件来执行当前视频块和当前视频块的比特流表示之间的转换。

91.根据条款90所述的方法,其中,视频编码条件指定在比特流表示中选择性地信令通知跳过标志或帧内块编码标志。

92.根据条款90或91所述的方法,其中,视频编码条件指定选择性地信令通知当前视频块的预测模式。

93.根据条款90至92中任一项所述的方法,其中,视频编码条件指定选择性地信令通知当前视频块的三角形模式编码。

94.根据条款90至93中任一项所述的方法,其中,视频编码条件指定选择性地信令通知当前视频块的帧间预测方向。

95.根据条款90至94中任一项所述的方法,其中,视频编码条件指定选择性地修改用于当前视频块的帧内块复制的运动矢量或块矢量。

96.根据条款90-95中任一项所述的方法,其中,视频条件取决于当前视频块的像素高度。

97.根据条款90-96中任一项所述的方法,其中,视频条件取决于当前视频块的像素宽度。

98.根据条款90-95中任一项所述的方法,其中,视频条件取决于当前视频块是否为方形。

本文档第4节列出的第11至16项提供了条款90至98的附加示例。

99.一种视频编码器装置,包括处理器,其中该处理器被配置为执行条款1至98中的一项或多项所述的方法。

100.一种视频解码器装置,包括处理器,其中该处理器被配置为执行条款1至98中的一项或多项所述的方法。

101.一种其上存储有代码的计算机可读介质,该代码在由处理器执行时使得处理器实施条款1至98中任一项或多项所述的方法。

图16是示出可以在其中实施本文公开的各种技术的示例视频处理系统1600的框图。各种实施方式可以包括系统1600的一些或所有组件。系统1600可以包括用于接收视频内容的输入1602。视频内容可以以例如8或10比特多分量像素值的原始或未压缩格式而接收,或者可以是压缩或编码格式。输入1602可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(Passive Optical Network,PON)等的有线接口和诸如Wi-Fi或蜂窝接口的无线接口。

系统1600可以包括可以实施本文档中描述的各种编码方法的编码组件1604。编码组件1604可以将来自输入1602的视频的平均比特率减小到编码组件1604的输出,以产生视频的编码表示。编码技术因此有时被称为视频压缩或视频转码技术。编码组件1604的输出可以被存储,或者经由如由组件1606表示的通信连接而发送。在输入1602处接收的视频的存储或通信传送的比特流(或编码)表示可以由组件1608用于生成像素值或传送到显示接口1610的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编码”操作或工具,但是将理解,编码工具或操作在编码器处被使用,并且反转编码结果的对应的解码工具或操作将由解码器执行。

外围总线接口或显示接口的示例可以包括通用串行总线(Universal SerialBus,USB)、或高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)、或显示端口(Displayport)等。存储接口的示例包括SATA(Serial Advanced TechnologyAttachment,串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能电话、或能够执行数字数据处理和/或视频显示的其他设备。

图17是根据本公开的用于视频处理的方法1700的流程图表示。方法1700包括,在操作1702处,为使用仿射编码工具在视频的当前块和视频的比特流表示之间的转换确定当前块的子块的第一运动矢量和作为当前块的代表性运动矢量的第二运动矢量符合尺寸约束。方法1700还包括,在操作1704处,基于该确定执行该转换。

在一些实施例中,子块的第一运动矢量表示为(MVx,MVy),并且第二运动矢量表示为(MV’x,MV’y)。尺寸约束指示MVx>=MV’x-DH0,MVx<=MV’x+DH1,MVy>=MV’y-DV0以及MVy<=MV’y+DV1,其中DH0、DH1、DV0和DV1为正数。在一些实施例中,DH0=DH1。在一些实施例中,DH0≠DH1。在一些实施例中,DV0=DV1。在一些实施例中,DV0≠DV0。在一些实施例中,DH0=DV0。在一些实施例中,DH0≠DV0。在一些实施例中,DH1=DV1。在一些实施例中,DH1≠DV1。

在一些实施例中,DH0、DH1、DV0或DV1中的至少一个是在视频参数集级别、序列参数集级别、图片参数集级别、条带头、片组头、片级别、编码树单元级别、编码单元级别或预测单元级别的比特流表示中信令通知的。在一些实施例中,对于转换的不同简档、级别或层级,DH0、DH1、DV0和DV1是不同的。在一些实施例中,其中DH0、DH1、DV0和DV1基于当前块的权重或高度。在一些实施例中,DH0、DH1、DV0和DV1基于当前块的预测模式,预测模式是单向预测模式或双向预测模式。在一些实施例中,DH0、DH1、DV0和DV1基于当前块中子块的位置。

在一些实施例中,第二运动矢量包括当前块的控制点运动矢量。在一些实施例中,第二运动矢量包括当前块的第二子块的运动矢量。在一些实施例中,第二子块包括当前块的中心子块。在一些实施例中,第二子块包括当前块的角子块。在一些实施例中,第二运动矢量包括针对当前块内部或外部的位置推导的运动矢量,该位置使用与当前块相同的仿射模型而编码。在一些实施例中,该位置包括当前块的中心位置。

在一些实施例中,第一运动矢量被调整以满足尺寸约束。在一些实施例中,如果第一运动矢量不满足关于第二运动矢量的尺寸约束,则比特流无效。在一些实施例中,第一运动矢量和第二运动矢量根据比特流表示中的运动矢量信令通知精度而表示。在一些实施例中,第一运动矢量和第二运动矢量根据用于存储运动矢量的存储精度而表示。在一些实施例中,第一运动矢量和第二运动矢量根据不同于运动矢量信令通知精度或用于存储运动矢量的存储精度的精度而表示。

图18是根据本公开的用于视频处理的方法1800的流程图表示。方法1800包括,在操作1802处,为视频的当前块和视频的比特流表示之间的转换确定包括六个参数的仿射模型。仿射模型从当前块的邻近块的仿射编码信息继承。方法1800包括,在操作1804处,基于仿射模型执行转换。

在一些实施例中,邻近块是使用具有六个参数的第二仿射模型而编码的,仿射模型与第二仿射模型相同。在一些实施例中,邻近块是使用具有四个参数的第三仿射模型而编码的。在一些实施例中,仿射模型基于当前块的位置而确定。在一些实施例中,如果邻近块与当前块不在相同的编码树单元(CTU)中,则仿射模型根据第三仿射模型而确定。在一些实施例中,如果邻近块与当前块不在相同的CTU线或相同的CTU行中,则仿射模型根据第三仿射模型而确定。

在一些实施例中,片、条带或图片被划分为多个非重叠区域。在一些实施例中,如果邻近块与当前块不在相同的区域中,则仿射模型根据第三仿射模型而确定。在一些实施例中,如果邻近块与当前块不在相同的区域线或相同的区域行中,则仿射模型根据第三仿射模型而确定。在一些实施例中,每个区域的尺寸为64x64。在一些实施例中,当前块的左上角表示为(x,y),邻近块的左上角表示为(x’,y’),并且其中如果满足关于x、y、x’和y’的条件,则仿射模型根据第三仿射模型而确定。在一些实施例中,条件指示x/M≠x’/M,M为正整数。在一些实施例中,M是128或64。在一些实施例中,条件指示y/N≠y’/N,N为正整数。在一些实施例中,N是128或64。在一些实施例中,条件指示x/M≠x’/M并且y/N≠y’/N,M和N为正整数。在一些实施例中,M=N=128或M=N=64。在一些实施例中,条件指示x>>M≠x’>>M,M为正整数。在一些实施例中,M是6或7。在一些实施例中,条件指示y>>N≠y’>>N,N为正整数。在一些实施例中,N是6或7。在一些实施例中,条件指示x>>M≠x’>>M并且y>>N≠y’>>N,M和N为正整数。在一些实施例中,M=N=6或M=N=7。

图19是根据本公开的用于视频处理的方法1900的流程图表示。方法1900包括,在操作1902处,对于视频的块和视频的比特流表示之间的转换,基于宽度为W且高度为H的块的尺寸来确定双向预测编码技术是否适用于该块,其中W和H为正整数。方法1900包括,在操作1904处,根据该确定执行该转换。

在一些实施例中,如果W=T1并且H=T2,则双向预测编码技术不适用,其中T1和T2为正整数。在一些实施例中,如果W=T2并且H=T1,则双向预测编码技术不适用,其中T1和T2为正整数。在一些实施例中,如果W=T1并且H≤T2,则双向预测编码技术不适用,其中T1和T2为正整数。在一些实施例中,如果W≤T2并且H=T1,则双向预测编码技术不适用,其中T1和T2为正整数。在一些实施例中,T1=4并且T2=16。在一些实施例中,如果W≤T1并且H≤T2,则双向预测编码技术不适用,其中T1和T2为正整数。在一些实施例中,T1=T2=8。在一些实施例中,T1=8并且T2=4。在一些实施例中,T1=T2=4。在一些实施例中,T1=4并且T2=8。

在一些实施例中,如果双向预测编码技术适用,则指示关于双向预测编码技术的信息的指示符在比特流中被信令通知。在一些实施例中,如果双向预测编码技术不适用于块,则指示关于用于该块的双向预测编码技术的信息的指示符被排除在比特流之外。在一些实施例中,如果块的尺寸为4x8或8x4之一,则双向预测编码技术不适用。在一些实施例中,如果块的尺寸为4xN或Nx4,则双向预测编码技术不适用,其中N为正整数并且N≤16。在一些实施例中,块的尺寸对应于块的第一颜色分量,并且针对第一颜色分量和块的剩余颜色分量确定双向预测编码技术是否适用。在一些实施例中,块的尺寸对应于块的第一颜色分量,并且仅针对第一颜色分量确定双向预测编码技术是否适用。在一些实施例中,第一颜色分量包括亮度分量。

在一些实施例中,该方法还包括,如果双向预测编码技术不适用于当前块,则在确定所选的Merge候选是使用双向预测编码技术而编码的时,分配来自第一参考列表或第二参考列表的单个运动矢量。在一些实施例中,该方法还包括,如果双向预测编码技术不适用于当前块,则确定三角形预测模式不适用于该块。在一些实施例中,双向预测编码技术是否适用与预测方向相关联,预测方向还与单向预测编码技术相关联,并且其中预测方向是基于块的尺寸在比特流中信令通知的。在一些实施例中,如果(1)WxH<64或者(2)WxH=64,则关于单向预测编码技术的信息在比特流中被信令通知,其中W不等于H。在一些实施例中,如果(1)WxH>64或者(2)WxH=64,则关于单向预测编码技术或双向编码技术的信息在比特流中被信令通知,其中W等于H。

在一些实施例中,一个限制指示如果块的尺寸为4x4,则双向编码技术和单向技术都不适用于该块。在一些实施例中,如果块是仿射编码的,则该限制适用。在一些实施例中,如果块不是仿射编码的,则该限制适用。在一些实施例中,如果块是帧内编码的,则该限制适用。在一些实施例中,如果块的运动矢量具有整数精度,则该限制不适用。

在一些实施例中,对块基于父块的划分而生成的信令通知在比特流中跳过,(1)对于四叉树划分,父块的尺寸为8x8,(2)对于二叉树划分,父块的尺寸为8x4或4x8,(3)或者对于三叉树划分,父块的尺寸为4x16或16x4。在一些实施例中,指示运动矢量具有整数精度的指示符在比特流中被设置为1。在一些实施例中,块的运动矢量被取整到整数精度。

在一些实施例中,双向预测编码技术适用于块。参考块的尺寸为(W+N-1-PW)x(H+N-1-PH),并且参考块的边界像素被重复以生成尺寸为(W+N-1)x(H+N-1)的第二块用于插值操作,N表示插值滤波器抽头,N、PW和PH为整数。在一些实施例中,PH=0,并且至少左边界或右边界的像素被重复以生成第二块。在一些实施例中,PW=0,并且至少顶部边界或底部边界的像素被重复以生成第二块。在一些实施例中,PW>0并且PH>0,并且第二块通过重复至少左边界或右边界的像素、接着重复至少顶部边界或底部边界的像素而生成。在一些实施例中,PW>0并且PH>0,并且第二块通过重复至少顶部边界或底部边界的像素、接着重复至少左边界或右边界的像素而生成。在一些实施例中,左边界的像素被重复M1次,并且其中右边界的像素被重复(PW-M1)次。在一些实施例中,顶部边界的像素被重复M2次,并且其中底部边界的像素被重复(PH-M2)次。在一些实施例中,如何重复参考块的边界像素被应用于一些或所有参考块以用于该转换。在一些实施例中,对于块的不同分量,PW和PH是不同的。

在一些实施例中,Merge候选列表构建过程基于块的尺寸而执行。在一些实施例中,如果(1)Merge候选是使用双向预测编码技术而编码的,以及(2)双向预测根据块的尺寸而不适用于该块,则Merge候选被认为是参考单向预测编码技术中的第一参考列表的单向预测候选。在一些实施例中,第一参考列表包括单向预测编码技术的参考列表0或参考列表1。在一些实施例中,如果(1)Merge候选是使用双向预测编码技术而编码的,以及(2)双向预测根据块的尺寸而不适用于该块,则Merge候选被认为是不可用的。在一些实施例中,在Merge候选列表构建过程中,不可用的Merge候选从Merge候选列表中移除。在一些实施例中,如果双向预测根据块的尺寸而不适用于该块,则用于三角形预测模式的Merge候选列表构建过程被调用。

图20是根据本公开的用于视频处理的方法2000的流程图表示。方法2000包括,在操作2002处,对于视频的块和视频的比特流表示之间的转换,基于根据编码树划分过程而作为块的子编码单元的子块的尺寸,确定编码树划分过程是否适用于该块。子块的宽度为W且高度为H,其中W和H为正整数。方法2000还包括,在操作2004处,根据该确定执行该转换。

在一些实施例中,如果W=T1并且H=T2,则编码树划分过程不适用,其中T1和T2为正整数。在一些实施例中,如果W=T2并且H=T1,则编码树划分过程不适用,其中T1和T2为正整数。在一些实施例中,如果W=T1并且H≤T2,则编码树划分过程不适用,其中T1和T2为正整数。在一些实施例中,如果W≤T2并且H=T1,则编码树划分过程不适用,其中T1和T2为正整数。在一些实施例中,T1=4并且T2=16。在一些实施例中,如果W≤T1并且H≤T2,则编码树划分过程不适用,其中T1和T2为正整数。在一些实施例中,T1=T2=8。在一些实施例中,T1=8并且T2=4。在一些实施例中,T1=T2=4。在一些实施例中,T1=4。在一些实施例中,T2=4。在一些实施例中,如果编码树划分过程不适用于当前块,则编码树划分过程的信令通知从比特流中省略。

图21是根据本公开的用于视频处理的方法2100的流程图表示。方法2100包括,在操作2102处,对于视频的当前块和视频的比特流表示之间的转换,基于关于当前块的位置的规则来确定是否推导了编码单元级别权重双向预测(BCW)编码模式的索引。在BCW编码模式下,包括多个权重的权重集被用于生成当前块的双向预测值。方法2100还包括,在操作2104处,基于该确定执行该转换。

在一些实施例中,如果应用权重集中的至少一个权重,则当前块的双向预测值被生成为两个运动矢量的非平均加权和。在一些实施例中,规则指定如果当前块和邻近块位于不同编码树单元或最大编码单元中,则不根据邻近块推导索引。在一些实施例中,规则指定如果当前块和邻近块位于编码树单元中的不同线或行中,则不根据邻近块推导索引。在一些实施例中,规则指定如果当前块和邻近块位于视频的片、条带或图片的不同非重叠区域中,则不根据邻近块推导索引。在一些实施例中,规则指定如果当前块和邻近块位于视频的片、条带或图片的非重叠区域的不同行中,则不根据邻近块推导索引。在一些实施例中,每个区域的尺寸为64x64。

在一些实施例中,当前块的顶角表示为(x,y),并且邻近块的顶角表示为(x’,y’)。规则指定如果(x,y)和(x’,y’)满足条件,则不根据邻近块推导索引。在一些实施例中,条件指示x/M≠x’/M,M为正整数。在一些实施例中,M是128或64。在一些实施例中,条件指示y/N≠y’/N,N为正整数。在一些实施例中,N是128或64。在一些实施例中,条件指示(x/M≠x’/M)并且(y/N≠y’/N),M和N为正整数。在一些实施例中,M=N=128或M=N=64。在一些实施例中,条件指示x>>M≠x’>>M,M为正整数。在一些实施例中,M是6或7。在一些实施例中,条件指示y>>N≠y’>>N,N为正整数。在一些实施例中,其中N是6或7。在一些实施例中,条件指示(x>>M≠x’>>M)并且(y>>N≠y’>>N),M和N为正整数。在一些实施例中,M=N=6或M=N=7。

在一些实施例中,BCW编码模式是否适用于图片、条带、片组或片是分别在比特流中的图片参数集、条带头、片组头或片中信令通知的。在一些实施例中,BCW编码模式是否适用于图片、条带、片组或片是基于与图片、条带、片组或片相关联的信息而推导的。在一些实施例中,信息至少包括量化参数(Quantization Parameter,QP)、时域层或图片顺序计数距离。

图22是根据本公开的用于视频处理的方法2200的流程图表示。方法2200包括,在操作2202处,对于使用组合帧间和帧内预测(CIIP)编码技术编码的视频的当前块和该视频的比特流表示之间的转换,独立于邻近块的帧内预测模式来确定当前块的帧内预测模式。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。方法2200还包括,在操作2204处,基于该确定执行该转换。

在一些实施例中,当前块的帧内预测模式在没有参考任何邻近块的帧内预测预测模式的情况下被确定。在一些实施例中,邻近块是使用CIIP编码技术而编码的。在一些实施例中,当前块的帧内预测基于使用帧内预测编码技术编码的第二邻近块的帧内预测模式而确定。在一些实施例中,是否根据第二帧内预测模式来确定当前块的帧内预测模式基于是否满足条件,该条件指定作为第一块的当前块和作为第二块的第二邻近块之间的关系。在一些实施例中,该确定是推导最可能模式(MPM)模式列表的当前块的MPM构建过程的一部分。

图23是根据本公开的用于视频处理的方法2300的流程图表示。方法2300包括,在操作2302处,对于使用组合帧间和帧内预测(CIIP)编码技术编码的视频的当前块和该视频的比特流表示之间的转换,根据第一邻近块的第一帧内预测模式和第二邻近块的第二帧内预测模式来确定当前块的帧内预测模式。第一邻近块是使用帧内预测编码技术进行编码的,并且第二邻近块是使用CIIP编码技术进行编码的。第一帧内预测模式被赋予不同于第二帧内预测模式的优先级。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。方法2300还包括,在操作2304处,基于该确定执行该转换。

在一些实施例中,该确定是推导最可能模式(MPM)模式列表的当前块的MPM构建过程的一部分。在一些实施例中,在MPM候选列表中,第一帧内预测模式位于第二帧内预测模式之前。在一些实施例中,在MPM候选列表中,第一帧内预测模式位于第二帧内预测模式之后。在一些实施例中,帧内预测模式的编码绕过(bypass)当前块的最可能模式(MPM)构建过程。在一些实施例中,该方法还包括根据当前块的帧内预测模式来确定后续块的帧内预测模式,其中后续块是使用帧内预测编码技术而编码的,并且当前块是使用CIIP编码技术而编码的。在一些实施例中,该确定是后续块的最可能模式(MPM)构建过程的一部分。在一些实施例中,在后续块的MPM构建过程中,当前块的帧内预测模式被赋予比使用帧内预测编码技术编码的另一邻近块的帧内预测模式更低的优先级。在一些实施例中,是否根据当前块的帧内预测模式来确定后续块的帧内预测模式基于是否满足条件,该条件指定作为第一块的后续块和作为第二块的当前块之间的关系。在一些实施例中,该条件包括以下中的至少一个:(1)第一块和第二块位于编码树单元(CTU)的相同行中,(2)第一块和第二块位于相同CTU中,(3)第一块和第二块位于相同区域中,或者(4)第一块和第二块位于区域的相同行中。在一些实施例中,区域的宽度与区域的高度相同。在一些实施例中,区域的尺寸为64x64。

在一些实施例中,仅正常帧内编码技术的最可能模式(MPM)列表的子集用于当前块。在一些实施例中,子集包括正常帧内编码技术的MPM模式列表中的单个MPM模式。在一些实施例中,单个MPM模式是列表中的第一个MPM模式。在一些实施例中,指示单个MPM模式的索引在比特流中被省略。在一些实施例中,子集包括MPM模式列表中的前四个MPM模式。在一些实施例中,指示子集中的MPM模式的索引是在比特流中信令通知的。在一些实施例中,用于编码帧内编码块的编码上下文被重新用于编码当前块。在一些实施例中,用于帧内编码块的第一MPM标志和用于当前块的第二MPM标志共享比特流中的相同编码上下文。在一些实施例中,当前块的帧内预测模式是从MPM模式列表中选择的,而不管当前块的尺寸。在一些实施例中,MPM构建过程被默认为启用,并且其中指示MPM构建过程的标志在比特流中被省略。在一些实施例中,当前块不需要MPM列表构建过程。

在一些实施例中,亮度预测色度模式用于处理当前块的色度分量。在一些实施例中,推导的模式用于处理当前块的色度分量。在一些实施例中,多种帧内预测模式用于处理当前块的色度分量。在一些实施例中,多种帧内预测模式基于色度分量的颜色格式而使用。在一些实施例中,如果颜色格式为4:4:4,则多种帧内预测模式与当前块的亮度分量的帧内预测模式相同。在一些实施例中,四种帧内预测模式中的每一种是使用一个或多个比特而编码的,该四种帧内预测模式包括平面模式、DC模式、垂直模式和水平模式。在一些实施例中,四种帧内预测模式是使用00、01、10和11而编码的。在一些实施例中,四种帧内预测模式是使用0、10、110、111而编码的。在一些实施例中,四种帧内预测模式是使用1、01、001、000而编码的。在一些实施例中,如果当前块的宽度W和高度H满足条件,则仅四种帧内预测模式的子集可用。在一些实施例中,如果W>N×H,则子集包括平面模式、DC模式和垂直模式,其中N为整数。在一些实施例中,平面模式、DC模式和垂直模式是使用1、01和11而编码的。在一些实施例中,平面模式、DC模式和垂直模式是使用0、10和00而编码的。在一些实施例中,如果H>N×W,则子集包括平面模式、DC模式和水平模式,其中N为整数。在一些实施例中,平面模式、DC模式和水平模式是使用1、01和11而编码的。在一些实施例中,平面模式、DC模式和水平模式是使用0、10和00而编码的。在一些实施例中,N=2。在一些实施例中,仅DC模式和平面模式用于当前块。在一些实施例中,指示DC模式或平面模式的指示符是在比特流中信令通知的。

图24是根据本公开的用于视频处理的方法2400的流程图表示。方法2400包括,在操作2402处,对于视频的当前块和视频的比特流表示之间的转换,基于当前块的尺寸来确定组合帧间帧内预测(CIIP)过程是否适用于当前块的颜色分量。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。方法2400还包括,在操作2404处,基于该确定执行该转换。

在一些实施例中,颜色分量包括色度分量,并且其中如果当前块的宽度小于4,则不对色度分量执行CIIP过程。在一些实施例中,颜色分量包括色度分量,并且其中如果当前块的高度小于4,则不对色度分量执行CIIP过程。在一些实施例中,当前块的色度分量的帧内预测模式不同于当前块的亮度分量的帧内预测模式。在一些实施例中,色度分量使用以下中的一个:DC模式、平面模式或亮度预测色度模式。在一些实施例中,色度分量的帧内预测模式基于色度分量的颜色格式而确定。在一些实施例中,颜色格式包括4:2:0或4:4:4。

图25是根据本公开的用于视频处理的方法2500的流程图表示。方法2500包括,在操作2502处,对于视频的当前块和视频的比特流表示之间的转换,基于当前块的特性,确定是否将组合帧间和帧内预测(CIIP)编码技术应用于当前块。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。方法2500还包括,在操作2504处,基于该确定执行该转换。

在一些实施例中,特性包括宽度为W且高度为H的当前块的尺寸,W和H为整数,并且如果块的尺寸满足条件,则对当前块禁用帧间-帧内预测编码技术。在一些实施例中,条件指示W等于T1,T1为整数。在一些实施例中,条件指示H等于T1,T1为整数。在一些实施例中,T1=4。在一些实施例中,T1=2。在一些实施例中,条件指示W大于T1或H大于T1,T1为整数。在一些实施例中,T1=64或128。在一些实施例中,条件指示W等于T1并且H等于T2,T1和T2为整数。在一些实施例中,条件指示W等于T2并且H等于T1,T1和T2为整数。在一些实施例中,T1=4并且T2=16。

在一些实施例中,特性包括应用于当前块的编码技术,并且如果编码技术满足条件,则对当前块禁用CIIP编码技术。在一些实施例中,条件指示编码技术是双向预测编码技术。在一些实施例中,双向预测编码Merge候选被转换为单向预测编码Merge候选,以允许帧间-帧内预测编码技术被应用于当前块。在一些实施例中,转换后的Merge候选与单向预测编码技术的参考列表0相关联。在一些实施例中,转换后的Merge候选与单向预测编码技术的参考列表1相关联。在一些实施例中,仅块的单向预测编码Merge候选被选择以用于该转换。在一些实施例中,双向预测编码Merge候选被丢弃,用于确定比特流表示中指示Merge候选的Mege索引。在一些实施例中,帧间-帧内预测编码技术根据该确定被应用于当前块。在一些实施例中,用于三角形预测模式的Merge候选列表构建过程用于推导当前块的运动候选列表。

图26是根据本公开的用于视频处理的方法2600的流程图表示。方法2600包括,在操作2602处,对于视频的当前块和视频的比特流表示之间的转换,基于当前块是否是用组合帧间和帧内预测(CIIP)编码技术编码的,确定是否要对当前块禁用编码工具。CIIP编码技术使用中间帧间预测值和中间帧内预测值来推导当前块的最终预测值。编码工具包括以下中的至少一个:双向光流(BDOF)、重叠块运动补偿(OBMC)或解码器侧运动矢量细化过程(DMVR)。方法2500还包括,在操作2604处,基于该确定执行该转换。

在一些实施例中,用于当前块的帧内预测过程不同于用于使用帧内预测编码技术而编码的第二块的帧内预测过程。在一些实施例中,在用于当前块的帧内预测过程中,跳过对邻近样点的过滤。在一些实施例中,在用于当前块的帧内预测过程中,禁用位置相关的帧内预测样点过滤过程。在一些实施例中,在用于当前块的帧内预测过程中,禁用多线帧内预测过程。在一些实施例中,在用于当前块的帧内预测过程中,禁用宽角度帧内预测过程。

图27是根据本公开的用于视频处理的方法2700的流程图表示。方法2700包括,在操作2702处,对于视频的块和视频的比特流表示之间的转换,确定用于空域运动预测的运动矢量的第一精度P1和用于时域运动预测的运动矢量的第二精度P2。P1和/或P2是分数。P1和P2彼此不同。方法2600还包括,在操作2704处,基于该确定执行该转换。

在一些实施例中,第一精度是1/16亮度像素,并且第二精度是1/4亮度像素。在一些实施例中,第一精度是1/16亮度像素,并且第二精度是1/8亮度像素。在一些实施例中,第一精度是1/8亮度像素,并且第二精度是1/4亮度像素。在一些实施例中,第一精度是1/16亮度像素,并且第二精度是1/4亮度像素。在一些实施例中,第一精度是1/16亮度像素,并且第二精度是1/8亮度像素。在一些实施例中,第一精度是1/8亮度像素,并且第二精度是1/4亮度像素。在一些实施例中,第一精度或第二精度中的至少一个低于1/16亮度像素。

在一些实施例中,第一精度或第二精度中的至少一个是变量。在一些实施例中,第一精度或第二精度是根据视频的简档、级别或层级的变量。在一些实施例中,第一精度或第二精度是根据视频中的图片的时域层的变量。在一些实施例中,第一精度或第二精度是根据视频中的图片的尺寸的变量。

在一些实施例中,第一精度或第二精度中的至少一个是在比特流表示中的视频参数集、序列参数集、图片参数集、条带头、片组头、片、编码树单元或编码单元中信令通知的。在一些实施例中,运动矢量表示为(MVx,MVy),并且运动矢量的精度表示为(Px,Py),并且其中Px与MVx相关联,并且Py与MVy相关联。在一些实施例中,Px和Py是根据视频的简档、级别或层级的变量。在一些实施例中,Px和Py是根据视频中的图片的时域层的变量。在一些实施例中,Px和Py是根据视频中的图片的宽度的变量。在一些实施例中,Px和Py是在比特流表示中的视频参数集、序列参数集、图片参数集、条带头、片组头、片、编码树单元或编码单元中信令通知的。在一些实施例中,解码的运动矢量表示为(MVx,MVy),并且其中在运动矢量被存储为时域运动预测运动矢量之前,运动矢量根据第二精度而调整。在一些实施例中,时域运动预测运动矢量被调整为(Shift(MVx,P1-P2),Shift(MVy,P1-P2)),其中P1和P2为整数并且P1≥P2,Shift表示对无符号数的右移位操作。在一些实施例中,时域运动预测运动矢量被调整为(SignShift(MVx,P1-P2),SignShift(MVy,P1-P2)),其中P1和P2为整数并且P1≥P2,SignShift表示对有符号数的右移位操作。在一些实施例中,时域运动预测运动矢量被调整为(MVx<<(P1-P2)),MVy<<(P1-P2)),其中P1和P2为整数并且P1≥P2,<<表示对有符号数或无符号数的左移位操作。

图28是根据本公开的用于视频处理的方法2800的流程图表示。方法2800包括,在操作2802处,对于视频的块和视频的比特流表示之间的转换,确定精度为(Px,Py)的运动矢量(MVx,MVy)。Px与MVx相关联,并且Py与MVy相关联。MVx和MVy是使用N比特而表示的,并且MinX≤MVx≤MaxX且MinY≤MVy≤MaxY,其中MinX、MaxX、MinY和MaxY是实数。方法2700还包括,在操作2804处,基于该确定执行该转换。

在一些实施例中,MinX=MinY。在一些实施例中,MinX≠MinY。在一些实施例中,MaxX=MaxY。在一些实施例中,MaxX≠MaxY。

在一些实施例中,MinX或MaxX中的至少一个基于Px。在一些实施例中,运动矢量具有表示为(Px,Py)的精度,并且其中MinY或MaxY中的至少一个基于Py。在一些实施例中,MinX、MaxX、MinY或MaxY中的至少一个基于N。在一些实施例中,空域运动预测运动矢量的MinX、MaxX、MinY或MaxY中的至少一个不同于时域运动预测运动矢量的对应的MinX、MaxX、MinY或MaxY。在一些实施例中,MinX、MaxX、MinY或MaxY中的至少一个是根据视频的简档、级别或层级的变量。在一些实施例中,MinX、MaxX、MinY或MaxY中的至少一个是根据视频中的图片的时域层的变量。在一些实施例中,MinX、MaxX、MinY或MaxY中的至少一个是根据视频中的图片的尺寸的变量。在一些实施例中,MinX、MaxX、MinY或MaxY中的至少一个是在比特流表示中的视频参数集、序列参数集、图片参数集、条带头、片组头、片、编码树单元或编码单元中信令通知的。在一些实施例中,在用于空域运动预测或时域运动预测之前,MVx被剪裁到[MinX,MaxX]。在一些实施例中,在用于空域运动预测或时域运动预测之前,MVy被剪裁到[MinY,MaxY]。

图29是根据本公开的用于视频处理的方法2900的流程图表示。方法2900包括,在操作2902处,对于视频的当前块和视频的比特流表示之间的转换,根据当前块的编码模式来确定共享Merge列表是否适用于当前块。方法2800包括,在操作2904处,基于该确定执行该转换。

在一些实施例中,如果当前块是使用常规Merge模式而编码的,则共享Merge列表不适用。在一些实施例中,如果当前块是使用帧内块复制(IBC)模式而编码的,则共享Merge列表适用。在一些实施例中,该方法还包括:在执行该转换之前,基于视频和比特流表示的过去转换来维护运动候选表;以及如果当前块是共享Merge列表适用的父块的子块并且当前块是使用常规Merge模式而编码的,则在执行该转换之后禁用运动候选表的更新。

图30是根据本公开的用于视频处理的方法3000的流程图表示。方法3000包括,在操作3002处,对于尺寸为WxH的视频的当前块和该视频的比特流表示之间的转换,确定维度为(W+N-1)x(H+N-1)的第二块以用于该转换期间的运动补偿。第二块是基于维度为(W+N-1-PW)x(H+N-1-PH)的参考块而确定的。N表示滤波器尺寸,并且W、H、N、PW和PH是非负整数。PW和PH不都等于0。方法3000还包括,在操作3004处,基于该确定执行该转换。

在一些实施例中,第二块中位于参考块外部的像素通过重复参考块的一个或多个边界而确定。在一些实施例中,PH=0,并且参考块的至少左边界或右边界被重复以生成第二块。在一些实施例中,PW=0,并且参考块的至少顶部边界或底部边界被重复以生成第二块。在一些实施例中,PW>0并且PH>0,并且第二块通过重复参考块的至少左边界或右边界、并且随后重复参考块的至少顶部边界或底部边界而生成。在一些实施例中,PW>0并且PH>0,并且第二块通过重复参考块的至少顶部边界或底部边界、并且随后重复参考块的至少左边界或右边界而生成。

在一些实施例中,参考块的左边界被重复M1次,并且参考块的右边界被重复(PW-M1)次,M1为正整数。在一些实施例中,参考块的顶部边界被重复M2次,并且参考块的底部边界被重复(PH-M2)次,M2为正整数。在一些实施例中,对于当前块的不同颜色分量,PW或PH中的至少一个是不同的,颜色分量至少包括亮度分量或一个或多个色度分量。在一些实施例中,PW或PH中的至少一个是根据当前块的尺寸或形状的变量。在一些实施例中,PW或PH中的至少一个是根据当前块的编码特性的变量,该编码特性包括单向预测编码或双向预测编码。

在一些实施例中,第二块中位于参考块外部的像素被设置为单个值。在一些实施例中,单个值是1<<(BD-1),BD是参考块中的像素样点的比特深度。在一些实施例中,BD是8或10。在一些实施例中,单个值是基于参考块的像素样点而推导的。在一些实施例中,单个值是在视频参数集、序列参数集、图片参数集、条带头、片组头、片、编码树单元行、编码树单元、编码单元或预测单元中信令通知的。在一些实施例中,如果当前块是仿射编码的,则禁用第二块中位于参考块外部的像素的填充。

图31是根据本公开的用于视频处理的方法3000的流程图表示。方法3000包括,在操作3102处,对于尺寸为WxH的视频的当前块和该视频的比特流表示之间的转换,确定维度为(W+N-1)x(H+N-1)的第二块以用于该转换期间的运动补偿。W、H是非负整数,并且其中N是非负整数并且基于滤波器尺寸。在该转换期间,根据对原始运动矢量的运动矢量细化操作,基于多点搜索确定细化的运动矢量,并且其中通过重复一个或多个非边界像素确定参考块的像素长边界。方法3100还包括,在操作3104处,基于该确定执行该转换。

在一些实施例中,处理当前块包括在运动矢量细化操作中过滤当前块。在一些实施例中,参考块是否适用于当前块的处理是基于当前块的维度而确定的。在一些实施例中,内插当前块包括:基于第二块来内插当前块的多个子块。每个子块的尺寸为W1xH1,W1、H1是非负整数。在一些实施例中,W1=H1=4,W=H=8,并且PW=PH=0。在一些实施例中,第二块完全基于多个子块中的至少一个的运动矢量的整数部分而确定。在一些实施例中,如果所有多个子块的运动矢量的整数部分之间的最大差等于或小于1个像素,则参考块基于当前块的左上方子块的运动矢量的整数部分而确定,并且参考块的右边界和底部边界中的每一个被重复一次以获得第二块。在一些实施例中,如果所有多个子块的运动矢量的整数部分之间的最大差等于或小于1个像素,则参考块基于当前块的右下方子块的运动矢量的整数部分而确定,并且参考块的左边界和顶部边界中的每一个被重复一次以获得第二块。在一些实施例中,第二块完全基于多个子块中的一个的修改后的运动矢量而确定。

在一些实施例中,如果所有多个子块的运动矢量的整数部分之间的最大差等于或小于两个像素,则当前块的左上方子块的运动矢量通过向每个分量添加一个整数像素距离而修改,以获得修改后的运动矢量。参考块基于修改后的运动矢量而确定,并且参考块的左边界、右边界、顶部边界和底部边界中的每一个被重复一次,以获得第二块。

在一些实施例中,如果所有多个子块的运动矢量的整数部分之间的最大差等于或小于两个像素,则当前块的右下方子块的运动矢量通过从每个分量减去一个整数像素距离而修改,以获得修改后的运动矢量。参考块基于修改后的运动矢量而确定,并且参考块的左边界、右边界、顶部边界和底部边界中的每一个被重复一次,以获得第二块。

图32是根据本公开的用于视频处理的方法3200的流程图表示。方法3200包括,在操作3202处,对于使用组合帧间和帧内预测(CIIP)编码技术编码的视频的块和该视频的比特流表示的转换,基于块中一位置处的帧间预测值和帧内预测值的加权和来确定该位置处的预测值。加权和基于将偏移添加到基于帧间预测值和帧内预测值而获得的初始和,并且该偏移在执行以确定加权和的右移操作之前被添加。方法3200还包括,在操作3204处,基于该确定执行该转换。

在一些实施例中,块中的位置表示为(x,y),位置(x,y)处的帧间预测值表示为Pinter(x,y),位置(x,y)处的帧内预测值表示为Pintra(x,y),位置(x,y)处的帧间预测权重表示为w_inter(x,y),并且位置(x,y)处的帧内预测权重表示为w_intra(x,y)。位置(x,y)处的预测值被确定为(Pintra(x,y)×w_intra(x,y)+Pinter(x,y)×w_inter(x,y)+offset(x,y))>>N,其中w_intra(x,y)+w_inter(x,y)=2^N并且offset(x,y)=2^(N-1),N为正整数。在一些实施例中,N=2。

在一些实施例中,加权和是使用该位置处的帧间预测值和帧内预测值的相等权重而确定的。在一些实施例中,根据块中的位置使用零权重来确定加权和。在一些实施例中,零权重被应用于帧间预测值。在一些实施例中,零权重被应用于帧内预测值。

在一些实施例中,在以上方法中执行转换包括基于视频的当前块来生成比特流表示。在一些实施例中,在以上方法中执行转换包括从比特流表示生成视频的当前块。

本文档中描述的所公开的以及其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中、或者在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中被实施。所公开的以及其他实施例可以被实施为一个或多个计算机程序产品,例如在计算机可读介质上编码的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是被生成以对信息进行编码以用于发送到合适的接收器装置的人工生成的信号,例如机器生成的电信号、光学信号或电磁信号。

计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上运行。

本文档书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,FPGA(Field Programmable Gate Array,现场可编程门阵列)或ASIC(专用集成电路)。

适合于运行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可换式磁盘;磁光盘;以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

虽然本专利文档包含许多细节,但这些细节不应被解释为对任何主题或可能要求保护的范围的限制,而是作为特定于特定技术的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。

仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。

109页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于块形状的视频编码和解码的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类