自适应运动矢量分辨率的多个语法元素的制作方法

文档序号:26719765发布日期:2021-09-22 20:26阅读:57来源:国知局
自适应运动矢量分辨率的多个语法元素1.相关申请的交叉引用2.根据适用的《专利法》和/或《巴黎公约》的规定,本技术是为了及时要求2019年2月1日提交的国际专利申请pct/cn2019/074433的优先权和权益。出于法律上的所有目的,以引用方式将上述申请的全部公开并入,作为本技术的公开的一部分。
技术领域
:3.该专利文件涉及视频编码和解码技术、设备和系统。
背景技术
::4.尽管视频压缩有所进步,数字视频在互联网和其他数字通信网络上仍占最大的带宽使用量。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用所需的带宽将继续增长。技术实现要素:5.所公开的技术涉及视频编码技术。具体而言,涉及重构后滤波器,例如图像/视频编码中的双边滤波器。它可以应用于现有的视频编码标准(例如hevc)或待定的标准(多功能视频编码)。它也可能适用于未来的视频编码标准或视频编解码器。6.在一个代表性的方面,所公开的技术可以用于提供一种用于视觉媒体处理的方法。该方法包括:对于当前视频块和所述当前视频块的比特流表示之间的转换,做出使用一个或多个精度来表示运动信息的确定,所述运动信息包括在使用自适应运动矢量分辨率(amvr)的仿射帧间模式或正常帧间模式中的转换期间使用的运动矢量和/或运动矢量预测器和/或运动矢量差;以及基于对所述一个或多个精度的确定来执行所述转换,其中,在所述比特流表示中使用多个语法元素来用信令通知所述一个或多个精度。7.在一个代表性的方面,所公开的技术可以用于提供一种用于视觉媒体处理的方法。该方法包括:对于当前视频块和所述当前视频块的比特流表示之间的转换,做出使用一个或多个精度来表示运动信息的确定,所述运动信息包括在使用自适应运动矢量分辨率(amvr)的帧内块复制(ibc)模式中的转换期间使用的运动矢量和/或运动矢量预测器和/或运动矢量差;基于所述一个或多个精度的确定来执行所述转换,其中,在所述比特流表示中使用多个语法元素来用信令通知所述一个或多个精度;其中,基于在ibc模式中从所述当前视频块的图片推导的块矢量来执行所述转换。8.在另一个代表性方面,上述方法以处理器可执行代码的形式体现并存储在计算机可读程序介质中。9.在又一个代表性方面,公开了一种被配置为或可操作为执行上述方法的设备。该设备可以包括被编程为实现该方法的处理器。10.在又一个代表性方面,视频解码器装置可以实现本文所述的一种或多种方法。11.在再一个代表性方面,视频编码器装置可以实现本文所述的一种或多种方法。12.在附图、说明书和权利要求书中更详细地描述了所公开技术的上述和其他方面以及特征。附图说明13.图1示出了构造merge候选列表的示例。14.图2示出了空域候选的位置的示例。15.图3示出了经受空域merge候选的冗余检查的候选对的示例。16.图4a和4b示出了基于当前块的尺寸和形状的第二预测单元(pu)的位置的示例。17.图5示出了用于时域merge候选的运动矢量缩放的示例。18.图6示出了时域merge候选的候选位置的示例。19.图7示出了生成组合的双向预测merge候选的示例。20.图8示出了构造运动矢量预测候选的示例。21.图9示出了用于空域运动矢量候选的运动矢量缩放的示例。22.图10示出了将可选时域运动矢量预测(atmvp)算法用于编码单元(cu)的运动预测的示例。23.图11示出了由空域‑时域运动矢量预测(stmvp)算法使用的具有子块和临近块的编码单元(cu)的示例。24.图12a和12b示出了当使用重叠块运动补偿(obmc)算法时子块的示例快照。25.图13示出了用于推导局部照明补偿(lic)算法的参数的临近样点的示例。26.图14示出了简化的仿射运动模型的示例。27.图15示出了每个子块的仿射运动矢量场(mvf)的示例。28.图16示出了af_inter仿射运动模式的运动矢量预测(mvp)的示例。29.图17a和17b分别示出了4参数和6参数仿射模型的示例。30.图18a和18b示出了af_merge仿射运动模式的示例候选。31.图19示出了模式匹配运动矢量推导(pmmvd)模式中的双边匹配的示例,其是基于帧速率上转换(fruc)算法的特殊merge模式。32.图20示出了fruc算法中的模板匹配的示例。33.图21示出了fruc算法中的单边运动估计的示例。34.图22示出了由双向光流(bdof)算法使用的光流轨迹的示例。35.图23a和23b示出了使用没有块扩展的双向光流(bdof)算法的示例快照。36.图24示出了基于双边模板匹配的解码器侧运动矢量细化(dmvr)算法的示例。37.图25示出了用于视频编码的示例方法的流程图。38.图26是用于实现本文中描述的视觉媒体解码或视觉媒体编码技术的硬件平台的示例的框图。39.图27示出了对称模式的示例。40.图28是其中可以实现所公开的技术的示例视频处理系统的框图。41.图29示出了用于视频处理的示例方法的流程图。42.图30示出了用于视频处理的示例方法的流程图。具体实施方式43.由于对更高分辨率视频的需求的增加,在现代技术中普遍存在视频编码方法和技术。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断改进以提供更高的编码效率。视频编解码器将未压缩视频转换为压缩格式,反之亦然。视频质量、用于表示视频的数据量(由比特率确定)、编码和解码算法的复杂度、对数据丢失和错误的敏感性、编辑的简易性、随机访问和端到端时延(延迟)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也称为h.265或mpeg‑h第2部分)、要完成的通用视频编码标准、或其他当前和/或未来的视频编码标准。44.所公开的技术的实施例可以应用于现有视频编码标准(例如,hevc、h.265)和未来标准以改进压缩性能。在本文档中使用章节标题以提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)限制于仅相应的部分。45.1.hevc/h.265中的帧间预测的示例46.多年来,视频编码标准已经显著改进,并且现在部分地提供高编码效率和对更高分辨率的支持。诸如hevc和h.265的最新标准基于混合视频编码结构,其中利用时域预测加变换编码。47.1.1.预测模式的示例48.每个帧间预测的pu(预测单元)具有用于一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其他实施例中,也可以使用inter_pred_idc来信令通知两个参考图片列表中的一个的使用。在又一其他实施例中,可以将运动矢量明确地编码为相对于预测器的增量。49.当用跳过模式对cu进行编码时,一个pu与cu相关联,并且不存在显著的残差系数、没有编码的运动矢量增量或参考图片索引。指定merge模式,从而从临近pu获得当前pu的运动参数,包括空域和时域候选。merge模式可以应用于任何帧间预测的pu,而不仅应用于跳过模式。merge模式的替代是运动参数的显式传输,其中,对于每个pu,明确地用信令通知运动矢量、每个参考图片列表的对应参考图片索引和参考图片列表使用。50.当信令指示将使用两个参考图片列表中的一个时,从一个样点块产生pu。这被称为“单向预测(uni‑prediction)”。单向预测可用于p条带和b条带两者。51.当信令指示将使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测(bi‑prediction)”。双向预测仅适用于b条带。52.1.1.1.1构造用于merge模式的候选的实施例53.当使用merge模式预测pu时,从比特流解析指向merge候选列表中的条目的索引并将其用于检索运动信息。该列表的构造(construction)可以根据以下步骤顺序进行总结:54.·步骤1:原始候选推导55.·步骤1.1:空域候选推导56.·步骤1.2:空域候选的冗余检查57.·步骤1.3:时域候选推导58.·步骤2:插入额外的候选59.·步骤2.1:创建双向预测候选60.·步骤2.2:插入零运动候选61.图1示出了基于上面总结的步骤序列构造merge候选列表的示例。对于空域merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设恒定数量的候选用于每个pu,因此当候选的数量未达到在条带标头中用信令通知的最大merge候选数量(maxnummergecand)时,生成额外的候选。由于候选的数量是恒定的,因此使用截断的一元二值化(truncatedunarybinarization,tu)来编码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,其与2n×2n预测单元的merge候选列表相同。62.1.1.2构造空域merge候选63.在空域merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或区块)或者是帧内编码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,使得编码效率提高。64.为了降低计算复杂度,在所提到的冗余检查中并未考虑所有可能的候选对。相反,仅考虑图3中用箭头连接的对,并且仅在用于冗余检查的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2n×2n的分割相关联的“第二pu”。作为示例,图4a和4b描绘了分别针对n×2n和2n×n的情况的第二pu。当当前pu被分割为n×2n时,位置a1处的候选不被考虑用于列表构造。在一些实施例中,通过添加该候选可能导致具有相同运动信息的两个预测单元,这对于在编码单元中仅具有一个pu是多余的。类似地,当当前pu被分割为2n×n时,不考虑位置b1。65.1.1.3构造时域merge候选66.在该步骤中,只有一个候选被添加到列表中。具体地,在该时域merge候选的推导中,基于共同定位的pu来推导缩放的运动矢量,该共同定位的pu属于给定参考图片列表内与当前图片具有最小poc差的图片。在条带标头中明确地用信令通知要用于推导共同定位的pu的参考图片列表。67.图5示出了针对时域merge候选(如虚线)的缩放运动矢量的推导的示例,其是使用poc距离tb和td从共同定位的pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,td被定义为是共同定位的图片的参考图片与共同定位的图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一用于参考图片列表1,并且结合该两个运动矢量以获得双向预测merge候选。68.在属于参考帧的共同定位的pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所示。如果位置c0处的pu不可用、是帧内编码的、或者在当前ctu之外,则使用位置c1。否则,位置c0用于时域merge候选的推导。69.1.1.4构造merge候选的额外类型70.除了空时merge候选之外,还存在两种额外类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空时merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将原始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。71.图7示出了该过程的示例,其中原始列表中的两个候选(左侧的710)中具有mvl0和refidxl0或mvl1和refidxl1,其被用于创建添加到最终列表(右侧)的组合的双向预测merge候选的情况。72.插入零运动候选以填充merge候选列表中的剩余条目,从而达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时增加。这些候选使用的参考帧的数量是1和2,分别用于单向和双向预测。在一些实施例中,不对这些候选执行冗余检查。73.1.1.5用于并行处理的运动估计区域的示例74.为了加速编码处理,可以并行执行运动估计,从而同时推导给定区域内的所有预测单元的运动矢量。从空域邻域推导merge候选可能干扰并行处理,因为一个预测单元直到其相关联的运动估计完成时才能从临近pu推导运动参数。为了减轻编码效率和处理等待时域之间的折衷,可以定义运动估计区域(motionestimationregion,mer),mer的尺寸在图片参数集(pps)中使用“log2_parallel_merge_level_minus2”语法元素信令通知。当定义mer时,落入同一区域的merge候选被标记为不可用,因此在列表构造中不予考虑。75.1.2高级运动矢量预测(amvp)的实施例76.amvp利用运动矢量与临近pu的时空相关性,其用于运动参数的显式传输。其通过首先检查在时域上临近的pu位置的上方,左侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来构造运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测器,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断的一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下部分中,提供了关于运动矢量预测候选的推导过程的细节。77.1.2.1构造运动矢量预测候选的示例78.图8总结了运动矢量预测候选的推导过程,并且可以针对每个参考图片列表以索引作为输入来实现。79.在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,最终基于位于先前在图2中所示的五个不同位置的每个pu的运动矢量推导两个运动矢量候选。80.对于时域运动矢量候选推导,从两个候选中选择一个运动矢量候选,其是基于两个不同的共同定位的位置推导的。在产生时空候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于2,则将额外的零运动矢量候选添加到列表中。81.1.2.2构造空域运动矢量候选82.在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,其从位于如先前在图2中所示的位置的pu中推导,那些位置与运动merge的位置相同。将当前pu的左侧的推导顺序定义为a0、a1,以及缩放的a0、缩放的a1。将当前pu的上侧的推导顺序定义为b0、b1、b2,缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空域缩放,两种情况使用空域缩放。四种不同的情况总结如下:83.没有空域缩放84.(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)85.(2)不同的参考图片列表,但相同的参考图片(相同的poc)86.空域缩放87.(3)相同的参考图片列表,但不同的参考图片(不同的poc)88.(4)不同的参考图片列表,以及不同的参考图片(不同的poc)89.首先检查无空域缩放的情况,然后检查空域缩放。当poc在临近pu的参考图片与当前pu的参考图片之间不同而不管参考图片列表时,考虑空域缩放。如果左候选的所有pu都不可用或者是帧内编码的,则允许对上述运动矢量进行缩放以帮助左和上mv候选的并行推导。否则,不允许对上述运动矢量进行空域缩放。90.如图9的示例所示,对于空域缩放的情况,以与时域缩放类似的方式缩放临近pu的运动矢量。一个区别是将参考图片列表和当前pu的索引作为输入给出;实际缩放过程与时域缩放过程相同。91.1.2.3构造时域运动矢量候选92.除了参考图片索引推导之外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(如图6的示例所示)。在一些实施例中,将参考图片索引用信令通知给解码器。93.2.联合探索模型(jem)中的帧间预测方法的示例94.在一些实施例中,使用称为联合探索模式(jem)的参考软件来探索未来的视频编码技术。在jem中,在若干编码工具中采用基于子块的预测,诸如仿射预测、可选时域运动矢量预测(atmvp)、空时运动矢量预测(stmvp)、双向光流(bdof或bio)、帧速率上转换(fruc、局部自适应运动矢量分辨率(lamvr)、重叠块运动补偿(obmc)、局部照明补偿(lic)和解码器侧运动矢量细化(dmvr)。95.2.1基于子cu的运动矢量预测的示例96.在具有四叉树加二叉树(qtbt)的jem中,每个cu可以针对每个预测方向具有至多一组运动参数。在一些实施例中,通过将大cu划分成子cu并且推导大cu的所有子cu的运动信息,在编码器中考虑两个子cu级运动矢量预测方法。可选时域运动矢量预测(alternativetemporalmotionvectorprediction,atmvp)方法允许每个cu从比并置参考图片中的当前cu小的多个块中提取多组运动信息。在空时运动矢量预测(spatial‑temporalmotionvectorprediction,stmvp)方法中,通过使用时域运动矢量预测值和空域临近运动矢量来递归地推导子cu的运动矢量。在一些实施例中,为了保留用于子cu运动预测的更准确的运动场,可能禁用参考帧的运动压缩。97.2.1.1可选时域运动矢量预测(atmvp)的示例98.在atmvp方法中,通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考索引)来修改时域运动矢量预测(tmvp)方法。99.图10示出了cu1000的atmvp运动预测过程的示例。该atmvp1000方法以两个步骤预测cu1000内的子cu1001的运动矢量。第一步是利用时域矢量识别参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步是将当前cu1000划分成子cu1001,并从对应于每个子cu的块中获得运动矢量以及每个子cu的参考索引。100.在第一步骤中,由当前cu1000的空域临近块的运动信息确定参考图片1050和对应块。为了避免临近块的重复扫描过程,使用当前cu1000的merge候选列表中的第一merge候选。第一可用运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,与tmvp相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是相对于当前cu位于右下或中心位置。101.在第二步骤中,通过向当前cu的坐标添加时域矢量,通过运动源图片1050中的时域矢量来识别子cu1051的对应块。对于每个子cu,其对应块(例如,覆盖中心样点的最小运动网格)的运动信息用于推导子cu的运动信息。在识别出对应的n×n块的运动信息之后,以与hevc的tmvp相同的方式将其转换为当前子cu的参考索引和运动矢量,其中运动缩放和其他过程也适用。例如,解码器检查是否满足低时延条件(例如,当前图片的所有参考图片的poc小于当前图片的poc)并且可能使用运动矢量mvx(例如,对应于参考图片列表x的运动矢量)来预测每个子cu的运动矢量mvy(例如,其中x等于0或1并且y等于1‑x)。102.2.1.2空时运动矢量预测(stmvp)的示例103.在stmvp方法中,按照光栅扫描顺序递归地推导子cu的运动矢量。图11示出了具有四个子块和临近块的一个cu的示例。考虑包含四个4×4子cua(1101),b(1102),c(1103)和d(1104)的8×8cu1100。当前帧中的临近4×4块被标记为a(1111),b(1112),c(1113)和d(1114)。104.子cua的运动推导通过识别其两个空域邻居开始。第一邻居是子cua1101上方的n×n块(块c1103)。如果该块c(1113)不可用或者是帧内编码,则(从块c1113开始,从左到右)检查子cua(1101)上方的其他n×n个块。第二邻居是子cua1101左侧的块(块b1112)。如果块b(1112)不可用或者是帧内编码,则(从块b1112开始,从上到下)检查子cua1101左侧的其他块。从每个列表的临近块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与hevc中指定的tmvp推导相同的过程来推导子块a1101的时域运动矢量预测(temporalmotionvectorpredictor,tmvp)。提取d1104处的并置块的运动信息并对应地缩放。最后,在检索和缩放运动信息之后,对于每个参考列表,所有可用的运动矢量被分别平均。平均运动矢量被指定为当前子cu的运动矢量。105.2.1.3子cu运动预测模式信令的示例106.在一些实施例中,子cu模式被启用为额外的merge候选,并且不需要额外的语法元素来信令通知该模式。将两个额外的merge候选添加到每个cu的merge候选列表以表示atmvp模式和stmvp模式。在一些实施例中,如果序列参数集指示启用了atmvp和stmvp,则可以最多使用七个merge候选。额外的merge候选的编码逻辑与hm中的merge候选相同,这意味着,对于p或b条带中的每个cu,两个额外的merge候选可能需要另外两个rd检查。在一些实施例中,例如,在jem中,所有merge索引的二进制位(bin)都由cabac(基于上下文的自适应二进制算术编码)进行上下文编码。在其他实施例中,例如,在hevc中,仅第一个二进制位是上下文编码的,而剩余的二进制位是上下文旁路编码的。107.2.2自适应运动矢量差分辨率108.在一些实施例中,当条带标头中的use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(pu的运动矢量和预测运动矢量之间的)运动矢量差(motionvectordifference,mvd)。在jem中,引入了局部自适应运动矢量分辨率(locallyadaptivemotionvectorresolution,lamvr)。在jem中,mvd可以以四分之一亮度样点、整数亮度样点或四亮度样点为单位进行编码。在编码单元(cu)级控制mvd分辨率,并且对于具有至少一个非零mvd分量的每个cu有条件地信令通知mvd分辨率标志。109.对于具有至少一个非零mvd分量的cu,信令通知第一标记以指示在cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示不使用四分之一亮度样点mv精度时,信令通知另一标志以指示是使用整数亮度样点mv精度还是四亮度样点mv精度。110.当cu的第一mvd分辨率标志为零或未针对cu编码(意味着cu中的所有mvd均为零)时,对于cu使用四分之一亮度样点mv分辨率。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,cu的amvp候选列表中的mvp被取整到对应的精度。111.在编码器中,cu级rd检查用于确定将哪个mvd分辨率用于cu。即,对于每个mvd分辨率,执行三次cu级rd检查。为了加快编码器速度,在jem中应用以下编码方案。112.‑‑在具有正常四分之一亮度样点mvd分辨率的cu的rd检查期间,存储当前cu的运动信息(整数亮度样点精度)。存储的运动信息(在取整之后)被用作在rd检查期间针对具有整数亮度样点和4亮度样点mvd分辨率的相同cu的进一步小范围运动矢量细化的起点,使得耗时的运动估计过程不重复三次。113.‑‑有条件地调用具有4亮度样点mvd分辨率的cu的rd检查。对于cu,当rd成本整数亮度样点mvd分辨率远大于四分之一亮度样点mvd分辨率时,跳过针对cu的4亮度样点mvd分辨率的rd检查。114.2.3更高的运动矢量存储精度的示例115.在hevc中,运动矢量精度是四分之一像素(4:2:0视频的四分之一亮度样点和八分之一色度样点)。在jem中,内部运动矢量存储和merge候选的精度增加到1/16像素。更高的运动矢量精度(1/16像素)用于以跳过/merge模式编码的cu的运动补偿帧间预测。对于使用正常amvp模式编码的cu,使用整数像素或四分之一像素运动。116.具有与hevc运动补偿插值滤波器相同的滤波器长度和归一化因子的shvc上样点插值滤波器被用作额外的分数像素位置的运动补偿插值滤波器。在jem中色度分量运动矢量精度是1/32样点,通过使用两个临近的1/16像素分数位置的滤波器的平均来推导1/32像素分数位置的额外的插值滤波器。117.2.4重叠块运动补偿obmc的示例118.在jem中,可以使用cu级的语法来打开和关闭obmc。当在jem中使用obmc时,除了cu的右边界和下边界之外,对所有运动补偿(motioncompensation,mc)块边界执行obmc。此外,它还应用于亮度和色度分量。在jem中,mc块对应于编码块。当用子cu模式(包括子cumerge、仿射和fruc模式)编码cu时,cu的每个子块是mc块。为了以统一的方式处理cu边界,针对所有mc块边界以子块级执行obmc,其中子块尺寸被设置为等于4×4,如图12a和12b所示。119.图12a示出了cu/pu边界处的子块,阴影子块是obmc应用的位置。类似地,图12b示出了atmvp模式中的子块。120.当obmc应用于当前子块时,除了当前运动矢量之外,四个连接的临近子块的运动矢量(如果可用且与当前运动矢量不同)也用于推导当前子块的预测块。组合基于多个运动矢量的这些多个预测块以生成当前子块的最终预测信号。121.将基于临近子块的运动矢量的预测块表示为pn,其中n指示临近的上、下、左和右子块的索引,并且将基于当前子块的运动矢量的预测块表示为pc。当pn是基于包含与当前子块相同的运动信息的临近子块的运动信息时,不从pn执行obmc。否则,将每个pn样点添加到pc中的相同样点中,即将pn的四行/列添加到pc。将加权因子{1/4,1/8,1/16,1/32}用于pn,并且将加权因子{3/4,7/8,15/16,31/32}用于pc。例外是小mc块(即,当编码块的高度或宽度等于4或用子cu模式编码cu时),对其仅将pn的两行/列添加到pc。在这种情况下,将加权因子{1/4,1/8}用于pn,并且将加权因子{3/4,7/8}用于pc。对于基于垂直(水平)临近子块的运动矢量生成的pn,将pn的相同行(列)中的样点添加到具有相同加权因子的pc。122.在jem中,对于尺寸小于或等于256个亮度样点的cu,信令通知cu级标志以指示是否对当前cu应用obmc。对于尺寸超过256个亮度样点或未使用amvp模式进行编码的cu,默认应用obmc。在编码器处,当将obmc应用于cu时,在运动估计阶段期间考虑其影响。由obmc使用上侧临近块和左侧临近块的运动信息形成的预测信号用于补偿当前cu的原始信号的上边界和左边界,然后应用正常运动估计处理。123.2.5局部照明补偿(lic)的示例124.照明补偿lic是基于用于光照变化的线性模式,使用缩放因子a和偏移b。并且针对每个帧间模式编码的编码单元(cu)自适应地启用或禁用它。125.当lic应用于cu时,采用最小平方误差方法来通过使用当前cu的临近样点及其对应的参考样点来推导参数a和b。图13示出了用于推导ic算法的参数的临近样点的示例。更具体地,如图13所示,使用cu的子采样(2:1子采样)的临近样点和参考图片中的(由当前cu或子cu的运动信息识别的)对应样点。推导ic参数并将其分别应用于每个预测方向。126.当用merge模式编码cu时,以类似于merge模式中的运动信息复制的方式从临近块复制lic标志;否则,向cu信令通知lic标志以指示是否应用lic。127.当针对图片启用lic时,需要额外的cu级rd检查以确定是否将lic应用于cu。当为cu启用lic时,分别针对整数像素运动搜索和分数像素运动搜索,使用去均值绝对差之和(mean‑removedsumofabsolutedifference,mr‑sad)和去均值绝对哈达玛变换差之和(mean‑removedsumofabsolutehadamard‑transformeddifference,mr‑satd),而不是sad和satd。128.为了降低编码复杂度,在jem中应用以下编码方案。129.当当前图片与其参考图片之间没有明显的光照变化时,对于整个图片禁用lic。为了识别这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片与当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用lic;否则,对当前图片启用lic。130.2.6仿射运动补偿预测的示例131.在hevc中,仅将平移运动模式应用于运动补偿预测(motioncompensationprediction,mcp)。然而,相机和对象可能存在多种运动,例如放大/缩小、旋转、透视运动和/或其他不规则运动。另一方面,在jem中,应用简化的仿射变换运动补偿预测。图14示出了块1400的仿射运动场由两个控制点运动矢量v0和v1描述的示例。块1400的运动矢量场(motionvectorfield,mvf)由以下等式描述:[0132][0133]如图14所示,(v0x,v0y)是左上角控制点的运动矢量,(v1x,v1y)是右上角控制点的运动矢量。为了进一步简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸m×n如以下推导:[0134][0135]这里,mvpre是运动矢量分数精度(例如,在jem中是1/16),(v2x,v2y)是根据等式1计算的左下控制点的运动矢量。如果需要,可以向下调整m和n,以使其分别为w和h的除数。[0136]图15示出了块1500的每个子块的仿射mvf的示例。为了推导每个m×n子块的运动矢量,根据等式1计算每个子块的中心样点的运动矢量,并取整到运动矢量分数精度(例如,jem中的1/16)。然后,应用运动补偿插值滤波器,以利用所推导的运动矢量生成每个子块的预测。在mcp之后,对每个子块的高精度运动矢量进行取整,并将其以与正常运动矢量相同的精度保存。[0137]2.6.1af_inter模式的实施例[0138]在jem中,存在两种仿射运动模式:af_inter模式和af_merge模式。对于宽度和高度都大于8的cu,可以应用af_inter模式。在比特流中用信令通知cu级的仿射标志以指示是否使用af_inter模式。在af_inter模式中,使用临近块构造具有运动矢量对{(v0,v1)|v0={va,vb,vc},v1={vd,ve}}的候选列表。[0139]图16示出了af_inter模式中的块1600的运动矢量预测(mvp)的示例。如图16所示,从子块a、b或c的运动矢量中选择v0。可以根据参考列表来缩放来自临近块的运动矢量。还可以根据用于临近块的参考的图片顺序计数(poc)、用于当前cu的参考的poc和当前cu的poc之间的关系来缩放来自临近块的运动矢量。从临近子块d和e中选择v1的方法是类似的。如果候选列表的数量小于2,则可以由通过复制每个amvp候选而组成的运动矢量对来填充列表。当候选列表大于2时,可以首先根据临近运动矢量(例如,基于候选对中的两个运动矢量的相似性)对候选进行排序。在一些实施例中,保留前两个候选。在一些实施例中,用速率失真(rd)成本检查来确定将哪个运动矢量对候选选择为当前cu的控制点运动矢量预测(controlpointmotionvectorprediction,cpmvp)。在比特流中可以用信令通知指示候选列表中的cpmvp的位置的索引。在确定当前仿射cu的cpmvp之后,应用仿射运动估计并找到控制点运动矢量(controlpointmotionvector,cpmv)。然后在比特流中用信令通知cpmv和cpmvp的差。[0140]在af_inter模式下,当使用4/6参数仿射模式时,需要2/3个控制点,因此,需要为这些控制点编码2/3mvd,如图17所示。在现有实现中,mv的推导如下所示,例如,从mvd0预测mvd1和mvd2。[0141][0142][0143][0144]这里,mvdi和mvi分别是左上像素(i=0)、右上像素(i=1)或左下像素(i=2)的预测运动矢量、运动矢量差和运动矢量,如图18b所示。在一些实施例中,两个运动矢量(例如mva(xa,ya)和mvb(xb,yb))的加和分别等于两个分量的总和。例如,newmv=mva+mvb暗示newmv的两个分量分别被设置为(xa+xb)和(ya+yb)。[0145]2.6.2.af_inter模式下的快速仿射me算法的示例[0146]在仿射模式的一些实施例中,需要联合确定2个或3个控制点的mv。联合直接搜索多个mv在计算上很复杂。例如,提出了快速仿射me算法,并将其应用于vtm/bms中。[0147]例如,针对4参数仿射模型描述了快速仿射me算法,该思想可以扩展到6参数仿射模型。[0148][0149][0150]将(a1)替换为a’,使得运动矢量重写为:[0151][0152]假设两个控制点(0,0)和(0,w)的运动矢量是已知的,则从等式(5)可以得出仿射参数如下:[0153][0154]运动矢量可以矢量形式重写为:[0155][0156]这里,p=(x,y)是像素位置,[0157][0158][0159]在一些实施例中,在编码器上,af_inter的mvd可以迭代得出。将mvi(p)表示为在第i次迭代中针对位置p导出的mv,dmvci表示为在第i次迭代中为mvc更新的增量。然后在第(i+1)次迭代中,[0160][0161]将picref表示为参考图片,将piccur表示为当前图片,并表示q=p+mvi(p)。如果将mse用作匹配标准,那么可以将需要最小化的函数写成:[0162][0163][0164]如果假设足够小,则可以基于一阶泰勒展开(taylorexpansion)近似地重写成:[0165][0166]这里,如果采用表示ei+1(p)=piccur(p)‑picref(q),则[0167][0168]可以通过将误差函数的导数设置为零来导出项然后可以根据计算控制点(0,0)和(0,w)的增量(delta)mv值,[0169][0170][0171][0172][0173]在一些实施例中,可以将mvd导出过程进行n次迭代,且最终mvd的计算可以如下所示:[0174][0175][0176][0177][0178]在前述实施方式中,从由mvd0表示的控制点(0,0)的增量mv中预测由mvd1表示的控制点(0,w)的增量mv仅导致制点(0,w)的增量mv仅导致被编码为mvd1。[0179]2.6.3af_merge模式的实施例[0180]当在af_merge模式中应用cu时,它从有效的临近重建块获得用仿射模式编码的第一个块。图18a示出了当前cu1800的候选块的选择顺序的示例。如图18a所示,选择顺序可以是从当前cu1800的左(1801)、上(1802)、右上(1803)、左下(1804)到左上(1805)。图18b示出了af_merge模式中的当前cu1800的候选块的另一示例。如果临近左下块1801以仿射模式进行编码,如图18b所示,推导包含块a的cu的左上角、右上角和左下角的运动矢量v2、v3和v4。并且根据v2、v3和v4计算当前cu1800左上角的运动矢量v0。可以相应地计算当前cu的右上方的运动矢量v1。[0181]在根据等式(1)中的仿射运动模式计算当前cu的cpmvv0和v1之后,可以生成当前cu的mvf。为了识别当前cu是否以af_merge模式进行编码,当至少有一个临近块以仿射模式进行编码时,可以在比特流中用信令通知仿射标志。[0182]2.7模式匹配的运动矢量推导(pmmvd)的示例[0183]pmmvd模式是基于帧速率上转换(frame‑rateupconversion,fruc)方法的特殊merge模式。利用该模式,在解码器侧推导块的运动信息,而不是发信令通知块的运动信息。[0184]当cu的merge标志为真时,可以向cu信令通知fruc标志。当fruc标志为假时,可以信令通知merge索引并使用常规merge模式。当fruc标志为真时,可以信令通知额外的fruc模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导该块的运动信息。[0185]在编码器侧,关于是否对cu使用frucmerge模式的决定是基于对正常merge候选所做的rd成本选择。例如,通过使用rd成本选择来检查cu的多种匹配模式(例如,双边匹配和模板匹配)。引起最小成本的匹配模式与其他cu模式进一步比较。如果fruc匹配模式是最有效的模式,则对于cu将fruc标志设置为真,并且使用相关的匹配模式。[0186]典型地,frucmerge模式中的运动推导过程具有两个步骤:首先执行cu级运动搜索,然后进行子cu级运动细化。在cu级,基于双边匹配或模板匹配,推导整个cu的原始运动矢量。首先,生成mv候选列表,并且选择引起最小匹配成本的候选作为进一步cu级细化的起点。然后,在起点附近执行基于的双边匹配或模板匹配的局部搜索。将最小匹配成本的mv结果作为整个cu的mv。随后,以推导的cu运动矢量作为起点,进一步在子cu级细化运动信息。[0187]例如,对于w×hcu运动信息推导执行以下推导过程。在第一阶段,推导整个w×hcu的mv。在第二阶段,该cu进一步被划分成m×m个子cu。m的值的计算方法如(16)所示,d是预定义的划分深度,在jem中默认设置为3。然后推导每个子cu的mv。[0188][0189]图19示出了在帧速率上转换(fruc)方法中使用的双边匹配的示例。,通过在两个不同参考图片(1910,1911)中沿当前cu(1900)的运动轨迹找到两个块之间的最接近匹配,使用双边匹配来推导当前cu的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量mv0(1901)和mv1(1902)与当前图片和两个参考图片之间的时域距离(例如,td0(1903)和td1(1904))成比例。在一些实施例中,当当前图片1900在时域上在两个参考图片(1910,1911)之间并且从当前图片到两个参考图片的时域距离相同时,双边匹配成为基于镜像的双向mv。[0190]图20示出了在帧速率上转换(fruc)方法中使用的模板匹配的示例。模板匹配用于通过找到当前图片中的模板(当前cu的顶部和/或左侧临近块)与参考图片2010中的块(例如,与模板的尺寸相同)之间的最接近匹配来推导当前cu2000的运动信息。除了上述frucmerge模式之外,模板匹配也可以应用于amvp模式。在jem和hevc两者中所做的那样,amvp有两个候选。通过模板匹配方法,推导新的候选。如果由模板匹配新推导的候选与第一现有amvp候选不同,则将其插入amvp候选列表的最开始处,然后将列表尺寸设置为2(例如,通过移除第二现有amvp候选)。当应用于amvp模式时,仅应用cu级搜索。[0191]在cu级处设置的mv候选可以包括以下:(1)如果当前cu处于amvp模式,则为原始amvp候选,(2)所有merge候选,(3)插值mv场中的几个mv(稍后描述),以及顶部和左侧临近运动矢量。[0192]当使用双边匹配时,可以将merge候选的每个有效mv用作输入,以生成假设双边匹配的情况下的mv对。例如,在参考列表a中,merge候选的一个有效mv是(mva,refa)。然后,在其他参考列表b中找到其配对的双边mv的参考图片refb,使得refa和refb在时域上位于当前图片的不同侧。如果这样的refb在参考列表b中不可用,则refb被确定为与refa不同的参考,并且其到当前图片的时域距离是列表b中的最小值。在确定refb之后,通过基于当前图片refa和refb之间的时域距离来缩放mva来推导mvb。[0193]在一些实施例中,来自插值mv场的四个mv也可以被添加到cu级候选列表。更具体地,添加当前cu的位置(0,0)、(w/2,0)、(0,h/2)和(w/2,h/2)处的插值mv。当fruc应用于amvp模式时,原始amvp候选也被添加到cu级mv候选集。在一些实施例中,在cu级,对于amvpcu,将15个mv添加到候选列表,对于mergecu,将13个mv添加到候选列表。[0194]在子cu级处设置的mv候选包括:(1)从cu级搜索确定的mv,(2)顶部、左侧、左上角和右上角的临近mv,(3)来自参考图片的并置mv的缩放版本,(4)一个或多个4个atmvp候选(最多4个),(5)一个或多个stmvp候选(例如,最多4个)。来自参考图片的缩放mv如下推导。遍历两个列表中的参考图片。参考图片中的子cu的并置位置处的mv被缩放到起始cu级mv的参考。atmvp和stmvp候选可以仅限于前四个。在子cu级,一个或多个mv(例如,最多17个)被添加到候选列表中。[0195]插值mv场的生成。在对帧进行编码之前,基于单边me为整个图片生成插值运动场。然后,运动场可以稍后用作cu级或子cu级mv候选。[0196]在一些实施例中,两个参考列表中的每个参考图片的运动场以4×4块级遍历。图21示出了fruc方法中的单边运动估计(me)2100的示例。对于每个4×4块,如果与块相关联的运动通过当前图片中的4×4块并且块未被分配任何插值运动,则参考块的运动根据时域距离td0和td1(以与hevc中的tmvp的mv缩放的方式相同的方式)被缩放到当前图片,并且将缩放的运动分配给当前帧中的块。如果没有缩放的mv被分配给4×4块,则在插值运动场中将块的运动标记为不可用。[0197]插值和匹配成本。当运动矢量指向分数样点位置时,需要运动补偿插值。为了降低复杂度,替代常规8抽头hevc插值,可以将双线性插值用于双边匹配和模板匹配。[0198]匹配成本的计算在不同步骤处有点不同。当从cu级的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和之差(absolutesumdifference,sad)。在确定起始mv之后,子cu级搜索的双边匹配的匹配成本c计算如下:[0199][0200]这里,w是加权因子。在一些实施例中,w可以设置为4。mv和mvs分别指示当前mv和起始mv。sad仍可以用作子cu级搜索的模板匹配的匹配成本。[0201]在fruc模式中,仅通过使用亮度样点来推导mv。推导的运动将用于mc帧间预测的亮度和色度两者。在确定mv之后,使用用于亮度的8抽头插值滤波器和用于色度的4抽头插值滤波器来执行最终mc。[0202]mv细化是基于模式的mv搜索,以双边匹配成本或模板匹配成本为标准。在jem中,支持两种搜索模式—无限制中心偏置菱形搜索(unrestrictedcenter‑biaseddiamondsearch,ucbds)和自适应交叉搜索,分别在cu级和子cu级进行mv细化。对于cu和子cu级mv细化两者,以四分之一亮度样点mv精度直接搜索mv,并且接着是八分之一亮度样点mv细化。将用于cu和子cu步骤的mv细化的搜索范围设置为等于8个亮度样点。[0203]在双边匹配merge模式中,应用双向预测,因为cu的运动信息是基于在两个不同的参考图片中沿当前cu的运动轨迹的两个块之间的最近匹配推导的。在模板匹配merge模式中,编码器可以从列表0中的单向预测、列表1中的单向预测或双向预测当中为cu选择。可以选择基于如下的模板匹配成本:[0204]如果costbi<=factor*min(cost0,cost1)[0205]则使用双向预测;[0206]否则,如果cost0<=cost1[0207]则使用列表0中的单向预测;[0208]否则,[0209]使用列表1中的单向预测;[0210]这里,cost0是列表0模板匹配的sad,cost1是列表1模板匹配的sad,costbi是双向预测模板匹配的sad。例如,当factor的值等于1.25时,这意味着选择过程偏向于双向预测。帧间预测方向选择可以应用于cu级模板匹配过程。[0211]2.8双向光流(bi‑directionalopticalflow,bio)的示例[0212]双向光流(bio)方法是样点方式的运动细化,其在用于双向预测的逐块运动补偿之上执行。在一些实施例中,样点级运动细化不使用信令。[0213]设i(k)为块运动补偿之后参考k(k=0,1)的亮度值,并且分别为i(k)梯度的水平分量和垂直分量。假设光流是有效的,则运动矢量场(vx,vy)由下式给出:[0214][0215]将此光流等式与每个样点运动轨迹的埃尔米特插值相结合,得到唯一的三阶多项式,该三阶多项式最后匹配函数值i(k)和其导数两者。该三阶多项式在t=0时的值是bio预测:[0216][0217]图22示出了双向光流(bio)方法中的示例光流轨迹。这里,τ0和τ1表示到参考帧的距离,如图21所示。基于ref0和ref1的poc计算距离t0和τ1:τ0=poc(当前)‑poc(ref0),τ1=poc(ref1)‑poc(当前)。如果两个预测都来自相同的时域方向(两者都来自过去或都来自未来),则sign是不同的即,τ0·τ1<0。在这种情况下,仅当预测不是来自相同的时刻(即,τ0≠τ1)时才应用bio,两个参考区域都具有非零运动(mvx0,mvy0,mvx1,mvy1≠0)并且块运动矢量与时域距离成比例(mvx0/mvx1=mvy0/mvy1=‑τ0/τ1)。[0218]通过最小化点a和b中的值之间的差δ来确定运动矢量场(vx,vy)。图9示出了运动轨迹和参考帧平面的交叉的示例。模式仅使用δ的局部泰勒展开的第一线性项:[0219][0220]上述等式中的所有值都取决于样点位置,表示为(i′,j′)。假设运动在局部周围区域是一致的,在以当前预测点为中心的(2m+1)×(2m+1)的方形窗口ω内最小化δ,其中m等于2:[0221][0222]对于该优化问题,jem使用简化方法,首先在垂直方向上进行最小化,然后在水平方向上进行最小化。由此产生以下:[0223][0224][0225]其中,[0226][0227]为了避免除以零或非常小的值,在等式28和29中可以引入正则化参数r和m。[0228]r=500·4d‑8ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(31)[0229]m=700·4d‑8ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(32)[0230]这里d是视频样点的比特深度。[0231]为了使bio的存储器访问与常规双向预测运动补偿保持相同,仅针对当前块内的位置计算所有预测和梯度值i(k),图23a示出了块2300外部的访问位置的示例。如图23a所示,在等式(30)中,以在预测块的边界上的当前预测点为中心的(2m+1)×(2m+1)方形窗口ω需要访问块外部的位置。在jem中,将块外部的i(k),的值设置为等于块内最近的可用值。例如,这可以实施为填充区域2301,如图23b所示。[0232]利用bio,可以针对每个样点细化运动场。为了降低计算复杂度,在jem中使用基于块的bio设计。可以基于4×4的块计算运动细化。在基于块的bio中,可以聚合4×4的块中的所有样点的等式30中的sn的值,然后将sn的聚合值用于推导4×4块的bio运动矢量偏移。更具体地,以下公式可以用于基于块的bio推导:[0233][0234]这里,bk表示属于预测块的第k个4×4块的样点集。将等式28和29中的sn替换为((sn,bk)>>4),以推导相关联的运动矢量偏移。[0235]在一些情景下,由于噪声或不规则运动,bdof的mv团(mvregiment)可能不可靠。因此,在bio中,mv团的尺寸被阈值裁剪。基于当前图片的参考图片是否都来自一个方向来确定阈值。例如,如果当前图片的所有参考图片都来自一个方向,则将阈值的值设置为12×214‑d;否则,将其设置为12×213‑d。[0236]可以利用使用与hevc运动补偿过程(例如,2d可分离有限脉冲响应(fir))一致的操作的运动补偿插值来同时计算bio的梯度。在一些实施例中,根据块运动矢量的分数部分,该2d可分离fir的输入是与运动补偿过程和分数位置(fracx,fracy)相同的参考帧样点。对于水平梯度首先使用与具有去缩放偏移d‑8的分数位置fracy相对应的biofilters垂直插值信号。然后在水平方向上应用梯度滤波器biofilterg,该biofilterg与具有去缩放偏移18‑d的分数位置fracx相对应。对于垂直梯度首先使用与具有去缩放偏移d‑8的分数位置fracy相对应的biofilterg垂直应用梯度滤波器。然后在水平方向上使用biofilters执行信号位移,该biofilters与具有去缩放偏移18‑d的分数位置fracx相对应。用于梯度计算的插值滤波器biofilterg和用于信号位移的插值滤波器biofilters的长度可以较短(例如,6抽头),以保持合理的复杂度。表1示出了可以用于bio中块运动矢量的不同分数位置的梯度计算的滤波器的示例。表2示出了可以用于bio中预测信号生成的插值滤波器的示例。[0237]表1:用于bio中梯度计算的示例性滤波器[0238]分数像素位置梯度的插值滤波器(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}[0239]表2:用于bio中预测信号生成的示例性插值滤波器[0240]分数像素位置预测信号的插值滤波器(biofilters)0{0,0,64,0,0,0}1/16{1,‑3,64,4,‑2,0}1/8{1,‑6,62,9,‑3,1}3/16{2,‑8,60,14,‑5,1}1/4{2,‑9,57,19,‑7,2}5/16{3,‑10,53,24,‑8,2}3/8{3,‑11,50,29,‑9,2}7/16{3,‑11,44,35,‑10,3}1/2{3,‑10,35,44,‑11,3}[0241]在jem中,当两个预测来自不同的参考图片时,bio可以应用于所有双预测块。当为cu启用局部照明补偿(lic)时,可以禁用bio。[0242]在一些实施例中,obmc在正常mc过程之后应用于块。为了降低计算复杂度,在obmc过程中可以不应用bio。这意味着bio仅在使用其自身的mv时才应用于块的mc过程,并且在obmc过程中使用临近块的mv时不应用于mc过程。[0243]2.9解码器侧运动矢量细化(dmvr)的示例[0244]在双向预测操作中,对于一个块区域的预测,将分别使用list0的运动矢量(mv)和list1的mv形成的两个预测块进行组合以形成单个预测信号。在解码器侧运动矢量细化(decoder‑sidemotionvectorrefinement,dmvr)方法中,通过双边模板匹配过程进一步细化双向预测的两个运动矢量。双边模板匹配应用在解码器中,以在双边模板和参考图片中的重建样点之间执行基于失真的搜索,以便获得细化的mv而无需传输附加的运动信息。[0245]在dmvr中,分别从列表0的原始mv0和列表1的mv1,将双边模板生成为两个预测块的加权组合(即平均),如图24所示。模板匹配操作包括计算所生成的模板与参考图片中的(在原始预测块周围的)样点区域之间的成本度量。对于两个参考图片中的每个,将产生最小模板成本的mv考虑为该列表的更新mv以替换原始mv。在jem中,对每个列表搜索九个mv候选。该九个mv候选包括原始mv和8个与原始mv在水平或垂直方向上或两个方向上具有一个亮度样点偏移的环绕的mv。最后,将两个新的mv,即如图24中所示的mv0'和mv1',用于生成最终的双向预测结果。将绝对差之和(sad)用作成本度量。[0246]将dmvr应用于双向预测的merge模式,其中一个mv来自过去的参考图片,另一mv来自未来的参考图片,而无需传输额外的语法元素。在jem中,当对cu启用lic、仿射运动、fruc或子cumerge候选时,不应用dmvr。[0247]2.10对称运动矢量差的示例[0248]对称运动矢量差(smvd)可以用于更有效地对mvd进行编码。[0249]首先,在条带级别上,变量bidirpredflag、refidxsyml0和refidxsyml1推导如下:[0250]·搜索参考图片列表0中最接近当前图片的前向参考图片。如果找到,则将refidxsyml0设置为等于前向图片的参考索引。[0251]·搜索参考图片列表1中最接近当前图片的后向参考图片。如果找到,则将refidxsyml1设置为等于后向图片的参考索引。[0252]·如果找到前向和后向图片二者,则将bidirpredflag设置为等于1。[0253]·否则,适用以下内容:[0254]·搜索参考图片列表0中最接近当前图片的后向参考图片。如果找到,则将refidxsyml0设置为等于后向图片的参考索引。[0255]·搜索参考图片列表1中最接近当前图片的前向参考图片。如果找到,则将refidxsyml1设置为等于前向图片的参考索引。[0256]·如果找到后向和前向图片二者,则将bidirpredflag设置为等于1。否则,将bidirpredflag设置为等于0。[0257]其次,在cu级别上,如果cu的预测方向为双向预测且bidirpredflag等于1,则显式地用信令通知指示是否使用对称模式的对称模式标志。[0258]当该标志为真时,仅显式地用信令通知mvp_l0_flag、mvp_l1_flag和mvd0。对于列表0和列表1,将参考索引分别设置为等于refidxsyml0、refidxsyml1。仅将mvd1设置等于–mvd0。将最终运动矢量示出以下公式中。[0259][0260]图27示出了对称模式的示例。[0261]表3中以粗体和/或斜体示出了编码单元语法中的修改。[0262]表3:编码单元语法中的修改[0263][0264][0265]3.上下文自适应二进制算术编码(cabac)[0266]3.1hevc中的cabac设计[0267]3.1.1hevc中的上下文表示和初始化过程[0268]在hevc中,对于每个上下文变量,初始化两个变量pstateidx和valmps。[0269]从8比特表条目initvalue中,将两个4比特变量slopeidx和offsetidx推导如下:[0270]slopeidx=initvalue>>4[0271]offsetidx=initvalue&15ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(5)[0272]在上下文变量的初始化中使用的变量m和n从lopedidx和offsetidx中推导如下:[0273]m=slopeidx*5‑45[0274]n=(offsetidx<<3)‑16ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(6)[0275]赋值给pstateidx和valmps进行初始化的两个值是从表示为sliceqpy的条带的亮度量化参数中推导的。给定变量m和n,初始化指定如下:[0276]prectxstate=clip3(1,126,((m*clip3(0,51,sliceqpy))>>4)+n)[0277]valmps=(prectxstate<=63)?0:1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7)[0278]pstateidx=valmps?(prectxstate‑64):(63‑prectxstate)[0279]3.1.2hevc中的状态转换过程[0280]该过程的输入是当前pstateidx,与ctxtable和ctxidx相关联的上下文变量的解码值binval和valmps值。[0281]该过程的输出是与ctxidx相关联的上下文变量的更新的pstateidx和valmps。[0282]取决于解码值binval,与ctxidx相关联的两个变量pstateidx和valmps的更新在(37)推导如下:[0283][0284]3.2vvc中的cabac设计[0285]vvc中的上下文自适应二进制算术编码器(bac)已在vvc中进行了更改,这在上下文更新过程和算术编码器方面均不同于hevc。[0286]这是最近采用的提案(jvet‑m0473,ce测试5.1.13)的摘要。[0287]表4:vcc中cabac修改的摘要[0288][0289][0290]3.2.1vvc中的上下文初始化过程[0291]在vvc中,从sliceqpy推导用于初始化的赋值给pstateidx0和pstateidx1的两个值。给定变量m和n,初始化指定如下:[0292]prectxstate=clip3(0,127,((m*clip3(0,51,sliceqpy))>>4)+n)pstateidx0=initstateidxtostate[prectxstate]>>4[0293]pstateidx1=initstateidxtostate[prectxstate]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(9)[0294]3.2.2vvc中的状态转换过程[0295]该过程的输入是当前的pstateidx0和pstateidx1,以及解码值binval。[0296]该过程的输出是与ctxidx相关联的上下文变量的更新的pstateidx0和pstateidx1。[0297]从与ctxtable和ctxinc相关联的shiftidx值推导变量shift0(对应于vvc表4中cabac修改的摘要中的变量a)和shift1(对应于vvc表4e中cabac修改的摘要中的变量b)。[0298]shift0=(shiftidx>>2)+2[0299]shift1=(shiftidx&3)+3+shift0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(10)[0300]取决于解码值binval,与ctxidx相关联的两个变量pstateidx0和pstateidx1的更新推导如下:[0301]pstateidx0=pstateidx0‑(pstateidx0>>shift0)+(1023*binval>>shift0)[0302]pstateidx1=pstateidx1‑(pstateidx1>>shift1)+(16383*binval>>shift1)(11)[0303]4.现有实施方式的缺点[0304]在一些现有实施方式中,当可以从仿射编码块的多个mv/mvd精度的集合中选择mv/mv差(mvd)时,仍然不确定如何获得更准确的运动矢量。[0305]在其他现有实施方式中,mv/mvd精度信息在确定应用于仿射模式的amvr的整体编码增益方面也起着重要作用,但是实现这一目标仍然不确定。[0306]5.使用amvr的仿射模式的mv预测器的示例方法[0307]当前公开的技术的实施例克服了现有实施方式的缺点,从而提供了具有更高的编码效率的视频编码。基于所公开的技术,在以下对各种实施方式所描述的示例中阐述了可以增强现有和未来的视频编码标准的使用自适应运动矢量分辨率(amvr)的仿射模式的运动矢量预测器的推导和信令。下面提供的所公开的技术的示例解释了一般概念,并不意为被解释为限制性的。在一个示例中,除非明确指出相反,否则可以对这些示例中描述的各种特征进行组合。[0308]在一些实施例中,当应用amvr时,可以将以下示例应用于仿射模式或正常模式。这些示例假定精度prec(即mv具有1/(2^prec)精度)用于在af_inter模式中对mvd进行编码或在正常帧间模式中对mvd进行编码。运动矢量预测器(例如,从临近块mv继承的)及其精度分别由mvpred(mvpredx,mvpredy)和predprec表示。[0309]支持amvr的仿射模式的改进[0310]1.允许的mvd精度集可能因图片而异,因条带而异或因块而异。[0311]a.在一个示例中,允许的mvd精度集可以取决于编码信息,诸如块尺寸、块形状等。[0312]b.可以预先定义允许的mv精度集,诸如{1/16,1/4,1}。[0313]c.可以在sps/pps/vps/序列标头/图片标头/条带标头/ctu组等中用信令通知允许的mv精度的指示。[0314]d.从允许的mv精度集中选择的mv精度的信令还取决于针对块所允许的mv精度的数量。[0315]2.将语法元素用信令通知到解码器以指示仿射帧间模式中所使用的mvd精度。[0316]a.在一个示例中,仅一个单一语法元素用于指示应用于仿射模式和amvr模式的mvd精度。[0317]i.在一个示例中,使用相同的语义,即对于amvr和仿射模式,将相同的语法元素值映射到相同的mvd精度。[0318]ii.可替代地,对于amvr模式和仿射模式,单一语法元素的语义不同。也就是说,对于amvr和仿射模式,可以将语法元素的相同值映射到不同的mvd精度。[0319]b.在一个示例中,当仿射模式使用与amvr相同的mvd精度集(例如mvd精度集为{1,1/4,4}像素)时,在仿射模式中重用amvr中的mvd精度语法元素,即仅使用一个单一语法元素。[0320]i.可替代地,此外,当在cabac编码器/解码器中对该语法元素进行编码/解码时,可以将相同或不同的上下文模型用于amvr和仿射模式。[0321]ii.可替代地,此外,该语法元素在amvr和仿射模式中可以具有不同的语义。例如,等于0、1和2的语法元素分别指示amvr中的1/4像素、1像素和4像素mv精度,而在仿射模式中,等于0、1和2的语法元素指示1/4像素、1/16像素和1像素mv精度。[0322]c.在一个示例中,当仿射模式使用与amvr相同数量的mvd精度,但使用不同的mvd精度集时(例如,amvr的mvd精度集为{1,1/4,4}像素,而仿射模式的mvd精度集为{1/16、1/4、1}像素),则在仿射模式中重用amvr中的mvd精度语法元素,即,仅使用一个单一语法元素。[0323]i.可替代地,此外,当在cabac编码器/解码器中对该语法元素进行编码/解码时,可以将相同或不同的上下文模用于amvr和仿射模式。[0324]ii.可替代地,此外,该语法元素在amvr和仿射模式中可以具有不同的语义。[0325]d.在一个示例中,仿射模式比amvr使用更少的mvd精度,在仿射模式中重用amvr中的mvd精度语法元素。然而,仅语法元素值的子集对仿射模式有效。[0326]i.可替代地,此外,当在cabac编码器/解码器中对该语法元素进行编码/解码时,可以将相同或不同的上下文模型用于amvr和仿射模式。[0327]ii.可替代地,此外,该语法元素在amvr和仿射模式中可以具有不同的语义。[0328]e.在一个示例中,仿射模式比amvr使用更多的mvd精度,在仿射模式中重用amvr中的mvd精度语法元素。然而,这样的类语法元素被扩展,以在仿射模式中允许更多值。[0329]i.可替代地,此外,当在cabac编码器/解码器中对该语法元素进行编码/解码时,可以将相同或不同的上下文模型用于amvr和仿射模式。[0330]ii.可替代地,此外,该语法元素在amvr和仿射模式中可以具有不同的语义。[0331]f.在一个示例中,将新的语法元素用于对仿射模式的mvd精度进行编码,即,使用两个不同的语法元素对amvr和仿射模式的mvd精度进行编码。[0332]g.在以下一个或所有条件为真的情况下,可以用信令通知仿射模式的mvd精度的指示的语法:[0333]i.所有控制点的mvd都不为零。[0334]ii.至少一个控制点的mvd不为零。[0335]iii.一个控制点(例如第一cpmv)的mvd不为零[0336]在这种情况下,当上述条件中的一个或所有条件均不满足时,无需用信令通知mvd精度。[0337]h.可以用上下文对用于仿射模式或amvr模式的mvd精度的指示的语法元素进行编码,并且上下文取决于编码信息。[0338]i.在一个示例中,当仅存在一个单一语法元素时,上下文可以取决于当前块是否以仿射模式进行编码。[0339]i.在一个示例中,上下文可以取决于临近块的块尺寸/块形状/mvd精度/时域层索引/预测方向等。[0340]j.可以在sps/pps/vps/序列标头/图片标头/条带标头/ctu组等中用信令通知是否为仿射模式启用多个mvd精度。[0341]i.在一个示例中,是否用信令通知对仿射模式启用或禁用多个mvd精度的信息可以取决于其他语法元素。例如,当启用仿射模式时,用信令通知对仿射模式启用或禁用多个mv和/或mvp和/或mvd精度的信息;并且当禁用仿射模式时,不用信令通知该信息并将其推断为0。[0342]k.可替代地,可以在仿射帧间模式中用信令通知多个语法元素以指示所使用的mv和/或mvp和/或mvd精度(在以下讨论中,它们统称为“mvd精度”)。[0343]i.在一示例中,用于指示仿射帧间模式和正常帧间模式中所使用的mvd精度的语法元素可以不同。[0344]1.指示仿射帧间模式和普通帧间模式中所使用的mvd精度的语法元素的数量可以不同。[0345]2.指示仿射帧间模式和正常帧间模式中所使用的mvd精度的语法元素的语义可以不同。[0346]3.对指示仿射帧间模式和正常帧间模式中所使用的mvd精度的一个语法元素进行编码的算术编码中的上下文模型可以不同。[0347]4.对指示仿射帧间模式和正常帧间模式中所使用的mvd精度的一个语法元素进行编码的算术编码中的上下文模型进行推导的方法可以不同。[0348]ii.在一个示例中,可以用信令通知第一语法元素(例如amvr_flag)以指示是否在仿射编码块中应用amvr。[0349]1.有条件地用信令通知第一语法元素。[0350]a.在一个示例中,当以某种模式(例如,cpr/ibc模式)对当前块进行编码时,跳过第一语法元素(amvr_flag)的信令。[0351]b.在一个示例中,当所有cpmv的mvd(包括水平分量和垂直分量)都为零时,跳过第一语法元素(amvr_flag)的信令。[0352]c.在一个示例中,当一个选定的cpmv的mvd(包括水平分量和垂直分量)都为零时,跳过第一语法元素(amvr_flag)的信令。[0353]i.在一个示例中,所选择的cpmv的mvd是要被编码/解码的第一cpmv的mvd。[0354]d.在一个示例中,当对仿射编码块启用多个mvd精度的使用为假时,跳过第一语法元素(amvr_flag)的信令。[0355]e.在一个示例中,可以在以下条件下用信令通知第一语法元素:[0356]i.对仿射编码块启用多个mvd精度的使用为真,并且当前块以仿射模式进行编码;[0357]ii.可替代地,对仿射编码块启用多个mvd精度的使用为真,当前块以仿射模式进行编码,并且cpmv的mvd的至少一个分量不等于0。[0358]iii.可替代地,对仿射编码块启用多个mvd精度的使用为真,当前块以仿射模式进行编码,并且所选cpmv的mvd的至少一个分量不等于0。[0359]1.在一个示例中,所选择的cpmv的mvd是要被编码/解码的第一cpmv的mvd。[0360]2.当amvr不应用于仿射编码块或第一语法元素不存在时,使用默认mv和/或mvd精度。[0361]a.在一个示例中,默认精度为1/4像素。[0362]b.可替代地,,将默认精度设置为仿射编码块的运动补偿中使用的精度。[0363]3.例如,如果amvr_flag等于0,则仿射模式的mvd精度为1/4像素;否则,仿射模式的mvd精度可以是其他值。[0364]a.可替代地,此外,还可以经由第二语法元素用信令通知其他的mvd精度。[0365]iii.在一个示例中,可以用信令通知第二语法元素(诸如amvr_coarse_precision_flag)以指示仿射模式的mvd精度。[0366]1.在一个示例中,是否用信令通知第二语法元素可以取决于第一语法元素。例如,仅当第一语法元素为1时才用信令通知第二语法元素。[0367]2.在一个示例中,如果第二语法元素为0,则仿射模式的mvd精度为1像素;否则,仿射模式的mvd精度为1/16像素。[0368]3.在一个示例中,如果第二语法元素为0,则仿射模式的mvd精度为1/16像素;否则,仿射模式的mvd精度为全像素。[0369]iv.在一个示例中,用于指示在仿射帧间模式中所使用的mvd精度的语法元素与具有相同名称但用于指示在正常帧间模式中所使用的mvd精度的语法元素共享相同的上下文模型。[0370]1.可替代地,用于指示在仿射帧间模式中所使用的mvd精度的语法元素与具有相同名称但用于指示在正常帧间模式中所使用的mvd精度的语法元素使用不同的上下文模型。[0371]3.是否在仿射编码块上应用或如何在仿射编码块上应用amvr可以取决于当前块的参考图片。[0372]a.在一个示例中,如果参考图片是当前图片,则不应用amvr,即,在当前块中应用帧内块复制。[0373]仿射模式中编码器的avmr快速算法[0374]对于imv=i,将仿射模式和amvp模式的rd成本(实际rd成本,或satd/sse/sad成本加上粗略的比特成本)表示为affinecosti和amvpcosti,其中i=0、1或2。这里,imv=0表示1/4像素mv,并且对于amvp模式,imv=1表示整数mv,对于仿射模式,imv=1表示1/16像素,并且对于amvp模式,imv=2表示4像素mv,对于仿射模式,imv=2表示整数mv。将merge模式的rd成本表示为mergecost。[0375]4.建议如果当前cu的母(parent)cu的最佳模式不是af_inter模式或af_merge模式,则对当前cu的仿射模式禁用amvr。[0376]a.可替代地,如果当前cu的母cu的最佳模式不是af_inter模式,则对当前cu的仿射模式禁用amvr。[0377]5.建议如果affinecost0>th1*amvpcost0,则对仿射模式禁用amvr,其中th1为正阈值。[0378]a.可替代地,另外,如果min(affinecost0,amvpcost0)>th2*mergecost,则对仿射模式禁用amvr,其中th2为正阈值。[0379]b.可替代地,另外,如果affinecost0>th3*affinecost1,则对仿射模式禁用整数mv,其中th3为正阈值。[0380]6.建议如果amvpcost0>th4*affinecost0,则对amvp模式禁用amvr,其中th4为正阈值。[0381]a.可替代地,如果min(affinecost0,amvpcost0)>th5*mergecost,则对amvp模式禁用amvr,其中th5是正阈值。[0382]7.建议在一个mv精度中获得的4/6参数仿射模型可以用作其他mv精度的候选起始搜索点。[0383]a.在一个示例中,在1/16mv中获得的4/6参数仿射模型可以用作其他mv精度的候选起始搜索点。[0384]b.在一个示例中,在1/4mv中获得的4/6参数仿射模型可以用作其他mv精度的候选起始搜索点。[0385]8.如果当前块的母块未选择仿射模式,则在当前块的编码器处不检查仿射模式的amvr。[0386]9.可以利用先前编码的帧/条带/片/ctu行中仿射编码块的不同mv精度的使用的统计信息来提前终止当前条带/片/ctu行中仿射编码块的mv精度的率失真计算。[0387]a.在一个示例中,记录具有一定mv精度的仿射编码块的百分比。如果百分比太低,则跳过对对应mv精度的检查。[0388]b.在一个示例中,利用具有相同时域层的先前编码的帧来决定是否跳过某个mv精度。[0389]对仿射amvr进行编码的上下文[0390]10.对用于对仿射amvr码进行编码的每个上下文,建议设置变量(由shiftidx表示)以控制与该上下文相关联的两个概率更新速度。[0391]a.在一个示例中,较快的更新速度由(shiftidx>>2)+2定义。[0392]b.在一个示例中,较慢的更新速度由(shiftidx&3)+3+shift0定义[0393]c.在一个示例中,一致性比特流应遵循推导的较快的更新速度应在[2,5]范围内的规则。[0394]d.在一个示例中,一致性比特流应遵循推导的较快的更新速度应在[3,6]范围内的规则。[0395]11.建议当对一个块的amvr模式进行编码时,对上下文建模不允许临近块的仿射amvr模式信息。[0396]a.在一个示例中,可利用临近块的amvr模式索引,并且排除临近块的仿射amvr模式信息。表5(包括表5‑1和5‑2)中示出了一个示例,其中(xnbl,ynbl)和(xnba,ynba)表示左侧和上方临近块。在一个示例中,上下文索引偏移ctxinc=(condl&&availablel)+(conda&&availablea)+ctxsetidx*3。[0397]表5‑1–使用左侧和上方语法元素的ctxinc规范[0398][0399]表5‑2–使用左侧和上方语法元素的ctxinc规范[0400][0401]b.可替代地,还可以利用临近块的仿射amvr模式信息,但是是与函数一起使用,而不是直接使用。在一个示例中,当仿射编码的临近块的amvr_mode[xnbl][ynbl]指示某个mv精度(诸如1/4像素mv精度)时,如表6‑1中所述的函数func可以返回真。在一个示例中,当仿射编码的临近块的amvr_flag[xnbl][ynbl]指示某个mv精度(诸如1/4像素mv精度)时,如表6‑2中所述的函数func可以返回真。[0402]表6‑1–使用左侧和上方语法元素的ctxinc规范[0403][0404][0405]表6‑2–使用左侧上方语法元素的ctxinc规范[0406][0407]c.可替代地,还可以利用临近块的仿射amvr模式信息来对amvr模式(应用于正常帧间模式)的第一语法元素(例如,amvr_flag)进行编码。表6‑3和6‑4给出了一些示例。[0408]表6‑3–使用左侧和上方语法元素的ctxinc规范[0409][0410]表6‑4–使用左侧和上方语法元素的ctxinc规范[0411][0412]d.当amvr模式信息由多个语法元素(例如,表示为amvr_flag、amvr_coarse_precision_flag的第一和第二语法元素)表示时,上述语法amvr_mode可以由多个语法元素中的任何一个替换,并且仍然可以应用上述方法。[0413]12.建议当对仿射amvr模式进行编码时,可以利用临近块的amvr模式信息进行上下文编码。[0414]a.在一个示例中,直接使用临近块的amvr模式信息。表7中示出了一个示例。可替代地,此外,上下文索引偏移ctxinc=(condl&&[0415]availablel)+(conda&&availablea)+ctxsetidx*3。[0416]表7–使用左侧和上方语法元素的ctxinc规范[0417][0418]b.可替代地,不允许将临近块的amvr模式信息用于上下文建模。[0419]表8中示出了一个示例。[0420]表8–使用左侧和上方语法元素的ctxinc规范[0421][0422]c.可替代地,还可以利用临近块的amvr模式信息,但是是与函数一起使用,而不是直接使用。在一个示例中,当非仿射编码的临近块的amvr_mode[xnbl][ynbl]指示某个mv精度(诸如1/4像素mv精度)时,如表9中所述的函数func可以返回真。[0423]表9–使用左侧和上方语法元素的ctxinc规范[0424][0425][0426]d.当仿射amvr模式信息由多个语法元素(例如,表示为amvr_flag,amvr_coarse_precision_flag的第一和第二语法元素)表示时,上述语法amvr_mode可以由多个语法元素中的任何一个替换,并且仍然可以应用上述方法。[0427]smvd和仿射smvd的快速算法[0428]当检查smvd模式时,假设当前所选择的最佳模式为curbestmode,并且amvr中amvrmvd精度为mvdprec或者仿射amvr的mvd精度为mvdprecaff。[0429]13.取决于当前所选择的最佳模式(即curbestmode)、amvr中的mvd精度,可以跳过smvd模式。[0430]a.在一个示例中,如果curbestmode是merge模式或/和umve模式,则可以不检查smvd模式。[0431]b.在一个示例中,如果未使用smvd模式对curbestmode进行编码,则可以不检查smvd模式。[0432]c.在一个示例中,如果curbestmode是仿射模式,则可以不检查smvd模式。[0433]d.在一个示例中,如果curbestmode是子块merge模式,则可以不检查smvd模式。[0434]e.在一个示例中,如果curbestmode是仿射smvd模式,则可以不检查smvd模式。[0435]f.在一个示例中,如果curbestmode是仿射merge模式,则可以不检查smvd模式。[0436]g.在一个示例中,以上快速方法(即项目符号13.a‑13.f)可以仅应用于某些mvd精度。[0437]i.在一个示例中,仅当mvd精度大于或等于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0438]ii.在一个示例中,仅当mvd精度大于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0439]iii.在一个示例中,仅当mvd精度小于或等于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0440]iv.在一个示例中,仅当mvd精度小于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0441]14.取决于当前所选择的最佳模式(即curbestmode)、仿射amvr中的mvd精度,可以跳过仿射smvd模式。[0442]a.在一个示例中,如果curbestmode是merge模式或/和umve模式,则可以不检查仿射smvd模式。[0443]b.在一个示例中,如果未使用仿射smvd模式对curbestmode进行编码,则可以不检查仿射smvd模式。[0444]c.在一个示例中,如果curbestmode是子块merge模式,则可以不检查仿射smvd模式。[0445]d.在一个示例中,如果curbestmode是smvd模式,则可以不检查仿射smvd模式。[0446]e.在一个示例中,如果curbestmode是仿射merge模式,则可以不检查仿射smvd模式。[0447]f.在一个示例中,上述快速方法(即项目符号14.a‑14.e)可以仅应用于某些mvd精度。[0448]i.在一个示例中,仅当仿射mvd精度大于或等于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0449]ii.在一个示例中,仅当仿射mvd精度大于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0450]iii.在一个示例中,仅当仿射mvd精度小于或等于精度(例如,整数像素精度)时,才可以应用以上快速方法。[0451]iv.在一个示例中,仅当仿射mvd精度小于精度(例如,整数像素精度)时,才可以应用上述快速方法。[0452]15.上述提出的方法可以在某些条件下应用,诸如块尺寸、条带/图片/片类型或运动信息。[0453]a.在一个示例中,当块尺寸包含小于m*h个样点,例如16或32或64个亮度样点时,不允许所提出的方法。[0454]b.可替代地,当块的宽度或/和高度的最小尺寸小于或不大于x时,不允许所提出的方法。在一个示例中,将x设置为8。[0455]c.可替代地,当块的宽度或/和高度的最小尺寸不小于x时,不允许所提出的方法。在一个示例中,将x设置为8。[0456]d.可替代地,当块的宽度>th1或>=th1和/或块的高度>th2或>=th2时,不允许所提出的方法。在一个示例中,将th1和/或th2设置为8。[0457]e.可替代地,当块的宽度<th1或<=th1和/或块的高度<th2或<=th2时,不允许所提出的方法。在一个示例中,将th1和/或th2设置为8。[0458]f.可替代地,是启用还是禁用上述方法和/或应用哪种方法可以取决于块尺寸、视频处理数据单元(vpdu)、图片类型、低延迟检查标志、当前块或先前编码块的编码信息(诸如例如参考图片、单向或双向预测)。[0459]16.当是否应用帧内块复制(ibc,又称为当前图片参考(cpr))时,可以以不同的方式执行仿射模式的amvr方法。[0460]a.在一个示例中,如果块是由ibc编码的,则不能使用仿射模式的amvr。[0461]b.在一个示例中,如果块是由ibc编码的,则可以使用仿射模式的amvr,但是候选mv/mvd/mvp精度可以与用于非ibc编码的仿射编码块的候选mv/mvd/mvp精度不同。[0462]17.本文中的所有术语“条带”都可以替换为“片组”或“片”。[0463]18.在vps/sps/pps/条带标头/片组标头中,等于1的语法元素(例如no_amvr_constraint_flag)指定指示是否启用amvr的语法元素(例如sps_amvr_enabled_flag)以及指示是否启用仿射amvr的语法元素(例如sps_affine_avmr_enabled_flag)二者均应等于0是比特流一致性的要求。等于0的语法元素(例如no_amvr_constraint_flag)不施加约束。[0464]19.在vps/sps/pps/条带标头/片组标头或其他视频数据单元中,可以用信令通知语法元素(例如,no_affine_amvr_constraint_flag)。[0465]a.在一个示例中,no_affine_amvr_constraint_flag等于1指定指示是否启用仿射amvr的语法元素(例如sps_affine_avmr_enabled_flag)应等于0是比特流一致性的要求。等于0的语法元素(例如no_affine_avvr_constraint_flag)不施加约束。[0466]6.实施例[0467]下面的粗体、斜体部分示出了修改后的规范。[0468]6.1实施例1:对仿射amvr模式的使用的指示[0469]可以在sps/pps/vps/aps/序列标头/图片头/片组标头等中用信令通知。本节介绍sps中的信令。[0470]6.1.1sps语法表[0471][0472]将替代sps语法表给出如下:[0473][0474][0475]语义[0476]sps_affine_amvr_enabled_flag等于1指定将自适应运动矢量差分辨率用于仿射帧间模式的运动矢量编码。amvr_enabled_flag等于0指定自适应运动矢量差分辨率不用于仿射帧间模式的运动矢量编码。[0477]6.2仿射amvr模式信息的解析过程[0478]仿射amvr模式信息的语法可以重用amvr模式信息的语法(应用于正常帧间模式)。可替代地,可以利用不同的语法元素。[0479]可以有条件地用信令通知仿射amvr模式信息。下面的不同实施例示出了条件的一些示例。[0480]6.2.1实施例#1:cu语法表[0481][0482][0483][0484][0485]6.2.2实施例2:可替代的cu语法表设计[0486][0487][0488][0489]6.2.3实施例3:第三cu语法表设计[0490][0491][0492][0493][0494]6.2.4实施例4:用amvr和仿射模式的不同语法的语法表设计[0495][0496][0497][0498]在一个示例中,conditionsa定义如下:[0499](sps_affine_amvr_enabled_flag&&inter_affine_flag==1&&[0500](mvdcpl0[x0][y0][0][0]!=0||mvdcpl0[x0][y0][0][1]!=0||[0501]mvdcpl1[x0][y0][0][0]!=0||mvdcpl1[x0][y0][0][1]!=0||[0502]mvdcpl0[x0][y0][1][0]!=0||mvdcpl0[x0][y0][1][1]!=0||[0503]mvdcpl1[x0][y0][1][0]!=0||mvdcpl1[x0][y0][1][1]!=0||[0504]mvdcpl0[x0][y0][2][0]!=0||mvdcpl0[x0][y0][2][1]!=0||[0505]mvdcpl1[x0][y0][2][0]!=0||mvdcpl1[x0][y0][2][1]!=0))[0506]可替代地,conditionsa定义如下:[0507](sps_affine_amvr_enabled_flag&&inter_affine_flag==1&&[0508](mvdcpl0[x0][y0][0][0]!=0||mvdcpl0[x0][y0][0][1]!=0||[0509]mvdcpl1[x0][y0][0][0]!=0||mvdcpl1[x0][y0][0][1]!=0||)[0510]可替代地,conditionsa定义如下:[0511](sps_affine_amvr_enabled_flag&&inter_affine_flag==1&&[0512](mvdcplx[x0][y0][0][0]!=0||mvdcplx[x0][y0][0][1]!=0)[0513]其中,x为0或1。[0514]可替代地,conditionsa定义如下:[0515](sps_affine_amvr_enabled_flag&&inter_affine_flag==1)[0516]在一个示例中,conditionsb定义如下:[0517]!sps_cpr_enabled_flag||!(inter_pred_idc[x0][y0]==pred_l0&&ref_idx_l0[x0][y0]==num_ref_idx_l0_active_minus1)[0518]可替代地,conditionsb定义如下:[0519]!sps_cpr_enabled_flag||!(pred_mode[x0][y0]==cpr)[0520]可替代地,conditionsb定义如下:[0521]!sps_ibc_enabled_flag||!(pred_mode[x0][y0]==ibc)[0522]当利用不同的语法元素对amvr或仿射amvr进行编码时,可以相应地应用应用于仿射amvr的用于6.5中的实施例的上下文建模和/或上下文。[0523]6.2.5语义[0524]amvr_flag[x0][y0]指定运动矢量差的分辨率。阵列索引x0、y0指定所考虑的编码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。amvr_flag[x0][y0]等于0指定运动矢量差的分辨率为亮度样点的1/4。amvr_flag[x0][y0]等于1指定运动矢量差的分辨率还由amvr_coarse_precisoin_flag[x0][y0]指定。[0525]当不存在amvr_flag[x0][y0]时,可以如下推断:[0526]–如果sps_cpr_enabled_flag等于1,则推断amvr_flag[x0][y0]等于1。[0527]–否则(sps_cpr_enabled_flag等于0),推断amvr_flag[x0][y0]等于0。[0528]amvr_coarse_precisoin_flag[x0][y0]等于1指定当inter_affine_flag等于0时,运动矢量差的分辨率为四亮度样点,而当inter_affine_flag等于1时,为1亮度样点。阵列索引x0、y0指定所考虑的编码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。[0529]当amvr_coarse_precisoin_flag[x0][y0]不存在时,将其推断为等于0。[0530]如果inter_affine_flag[x0][y0]等于0,则将变量mvshift设置为等于(amvr_flag[x0][y0]+amvr_coarse_precisoin_flag[x0][y0])<<1,并且将变量mvdl0[x0][y0][0]、mvdl0[x0][y0][1]、mvdl1[x0][y0][0]、mvdl1[x0][y0][1]修改如下:[0531]mvdl0[x0][y0][0]=mvdl0[x0][y0][0]<<(mvshift+2)ꢀꢀ(7‑70)[0532]mvdl0[x0][y0][1]=mvdl0[x0][y0][1]<<(mvshift+2)(7‑71)[0533]mvdl1[x0][y0][0]=mvdl1[x0][y0][0]<<(mvshift+2)ꢀꢀꢀ(7‑72)[0534]mvdl1[x0][y0][1]=mvdl1[x0][y0][1]<<(mvshift+2)ꢀꢀ(7‑73)[0535]如果inter_affine_flag[x0][y0]等于1,则将变量mvshift设置为等于(amvr_coarse_precisoin_flag?(amvr_coarse_precisoin_flag<<1):(‑(amvr_flag<<1))),并且将变量mvdcpl0[x0][y][0][0]、mvdcpl0[x0][y0][0][1]、mvdcpl0[x0][y0][1][0]、mvdcpl0[x0][y0][1][1]、mvdcpl0[x0][y0][2][0]、mvdcpl0[x0][y0][2][1]修改如下:[0536]mvdcpl0[x0][y0][0][0]=mvdcpl0[x0][y0][0][0]<<(mvshift+2)[0537](7‑73)[0538]mvdcpl1[x0][y0][0][1]=mvdcpl1[x0][y0][0][1]<<(mvshift+2)[0539](7‑67)[0540]mvdcpl0[x0][y0][1][0]=mvdcpl0[x0][y0][1][0]<<(mvshift+2)[0541](7‑66)[0542]mvdcpl1[x0][y0][1][1]=mvdcpl1[x0][y0][1][1]<<(mvshift+2)[0543](7‑67)[0544]mvdcpl0[x0][y0][2][0]=mvdcpl0[x0][y0][2][0]<<(mvshift+2)[0545](7‑66)[0546]mvdcpl1[x0][y0][2][1]=mvdcpl1[x0][y0][2][1]<<(mvshift+2)[0547](7‑67)[0548]可替代地,如果inter_affine_flag[x0][y0]等于1,则将变量mvshift设置为等于(affine_amvr_coarse_precisoin_flag?(affine_amvr_coarse_precisoin_flag<<1):(‑(affine_amvr_flag<<1)))。[0549]6.3运动矢量的取整过程[0550]修改取整过程,使得当给定的rightshift值等于0(发生于1/16像素精度)时,将取整偏移设置为0而不是(1<<(rightshift‑1))。[0551]例如,将mv的取整过程的子条款修改如下:[0552]该过程的输入是:[0553]–运动矢量mvx,[0554]–用于取整的右移参数rightshift,[0555]–用于提高分辨率的左移参数leftshift。[0556]该过程的输出是取整运动矢量mvx。[0557]对于mvx的取整,适用以下内容:[0558]offset=(rightshift==0)?0:(1<<(rightshift‑1))ꢀꢀꢀꢀꢀ(8‑371)[0559]mvx[0]=(mvx[0]>=0?(mvx[0]+offset)>>rightshift:‑((‑mvx[0]+offset)>>rightshift))<<leftshiftꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8‑372)[0560]mvx[1]=(mvx[1]>=0?(mvx[1]+offset)>>rightshift:‑((‑mvx[1]+offset)>>rightshift))<<leftshiftꢀꢀ(8‑373)[0561]6.4解码过程[0562]仿射运动矢量推导过程中调用的取整过程是用(mvshift+2)的输入执行的,而不是将输入固定为2。[0563]亮度仿射控制点运动矢量预测器的推导过程[0564]该过程的输入是:[0565]–当前亮度编码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xcb,ycb),[0566]–两个变量cbwidth和cbheight,指定当前亮度编码块的宽度和高度,[0567]–当前编码单元refidxlx的参考索引,x为0或1,[0568]–控制点运动矢量的数量numcpmv。[0569]该过程的输出是亮度仿射控制点运动矢量预测器mvpcplx[cpidx],x为0或1,并且cpidx=0..numcpmv‑1。[0570]为了推导控制点运动矢量预测器候选列表cpmvplistlx,x为0或1,适用以下有序步骤:[0571]将列表numcpmvpcandlx中的控制点运动矢量预测器候选的数目设置为等于0。[0572]将变量availableflaga和availableflagb都设置为等于false。[0573]…[0574]将设置为等于cpmvplx[cpidx]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的cpmvplx[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0575]…[0576]将变量availableflaga设置为true。[0577]将亮度编码块位置(xcb,ycb)、亮度编码块的宽度和高度(cbwidth,cbheight)、临近亮度编码块位置(xnb,ynb)、临近亮度编码块的宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,将控制点运动矢量预测器候选cpmvply[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.4.5节中指定的对来自临近块的亮度仿射控制点运动矢量的推导过程。[0578]将设置为等于cpmvply[cpidx]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的cpmvply[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0579]…[0580]将亮度编码块位置(xcb,ycb)、亮度编码块的宽度和高度(cbwidth,cbheight)、临近块亮度编码块位置(xnb,ynb)、临近亮度编码块的宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,将控制点运动矢量预测器候选cpmvplx[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.4.5节中指定的对来自临近块的亮度仿射控制点运动矢量的推导过程。[0581]将设置为等于cpmvplx[cpidx]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的cpmvplx[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0582]进行以下赋值:[0583]cpmvplistlx[numcpmvpcandlx][0]=cpmvplx[0]ꢀꢀꢀ(8‑618)[0584]cpmvplistlx[numcpmvpcandlx][1]=cpmvplx[1]ꢀꢀꢀ(8‑619)[0585]cpmvplistlx[numcpmvpcandlx][2]=cpmvplx[2]ꢀꢀꢀ(8‑620)[0586]numcpmvpcandlx=numcpmvpcandlx+1(8‑621)[0587]否则,如果predflagly[xnbbk][ynbbk](y=!x)等于1并且diffpicordercnt(refpiclisty[refidxly[xnbbk][ynbbk]],refpiclistx[refidxlx])等于0,则适用以下内容:[0588]将变量availableflagb设置为true。[0589]将亮度编码块位置(xcb,ycb)、亮度编码块的宽度和高度(cbwidth,cbheight)、临近块亮度编码块位置(xnb,ynb)、临近亮度编码块的宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,并将控制点运动矢量预测器候选cpmvply[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.4.5节指定的对来自临近块的亮度仿射控制点运动矢量的推导过程。[0590]将设置为等于cpmvply[cpidx]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的cpmvply[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0591]进行以下赋值:[0592]cpmvplistlx[numcpmvpcandlx][0]=cpmvply[0]ꢀꢀꢀ(8‑622)[0593]cpmvplistlx[numcpmvpcandlx][1]=cpmvply[1]ꢀꢀꢀ(8‑623)[0594]cpmvplistlx[numcpmvpcandlx][2]=cpmvply[2]ꢀꢀꢀ(8‑624)[0595]numcpmvpcandlx=numcpmvpcandlx+1(8‑625)[0596]当numcpmvpcandlx小于2时,适用以下内容:[0597]将亮度编码块位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight以及当前编码单元refidxlx的参考索引作为输入,并将可用性标志availableconsflaglx、可用性标志availableflaglx[cpidx]和cpmvplx[cpidx](cpidx=0..numcpmv‑1)作为输出来调用第8.4.4.8节中指定的构造仿射控制点运动矢量预测候选的推导过程。[0598]当availableconsflaglx等于1,并且numcpmvpcandlx等于0时,进行以下赋值:[0599]cpmvplistlx[numcpmvpcandlx][0]=cpmvplx[0]ꢀꢀꢀ(8‑626)[0600]cpmvplistlx[numcpmvpcandlx][1]=cpmvplx[1]ꢀꢀꢀ(8‑627)[0601]cpmvplistlx[numcpmvpcandlx][2]=cpmvplx[2]ꢀꢀꢀ(8‑628)[0602]numcpmvpcandlx=numcpmvpcandlx+1ꢀꢀꢀ(8‑629)[0603]以下适用于cpidx=0..numcpmv‑1:[0604]当numcpmvpcandlx小于2并且availableflaglx[cpidx]等于1时,进行以下赋值:[0605]cpmvplistlx[numcpmvpcandlx][0]=cpmvplx[cpidx]ꢀꢀꢀ(8‑630)[0606]cpmvplistlx[numcpmvpcandlx][1]=cpmvplx[cpidx]ꢀꢀꢀ(8‑631)[0607]cpmvplistlx[numcpmvpcandlx][2]=cpmvplx[cpidx]ꢀꢀꢀ(8‑632)[0608]numcpmvpcandlx=numcpmvpcandlx+1ꢀꢀꢀ(8‑633)[0609]当numcpmvpcandlx小于2时,适用以下内容:[0610]将亮度编码块位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight以及refidxlx作为输入,并且将可用性标志availableflaglxcol和时域运动矢量预测器mvlxcol作为输出来进行第8.4.2.11节中指定的时域亮度运动矢量预测的推导过程。[0611]当availableflaglxcol等于1时,适用以下内容:[0612]将设置为等于mvlxcol的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的mvlxcol作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0613]进行以下赋值:[0614]cpmvplistlx[numcpmvpcandlx][0]=mvlxcol(8‑634)[0615]cpmvplistlx[numcpmvpcandlx][1]=mvlxcol(8‑635)[0616]cpmvplistlx[numcpmvpcandlx][2]=mvlxcol(8‑636)[0617]numcpmvpcandlx=numcpmvpcandlx+1ꢀꢀꢀ(8‑637)[0618]当numcpmvpcandlx小于2时,重复以下内容,直到numcpmvpcandlx等于2,其中mvzero[0]和mvzero[1]都等于0:[0619]cpmvplistlx[numcpmvpcandlx][0]=mvzeroꢀꢀꢀ(8‑638)[0620]cpmvplistlx[numcpmvpcandlx][1]=mvzeroꢀꢀꢀ(8‑639)[0621]cpmvplistlx[numcpmvpcandlx][2]=mvzeroꢀꢀꢀ(8‑640)[0622]numcpmvpcandlx=numcpmvpcandlx+1ꢀꢀꢀ(8‑641)[0623]将仿射控制点运动矢量预测器cpmvplx(x为0或1)推导如下:[0624]cpmvplx=cpmvplistlx[mvp_lx_flag[xcb][ycb]]ꢀꢀ(8‑642)[0625]构造的仿射控制点运动矢量预测候选的推导过程[0626]该过程的输入是:[0627]–亮度位置(xcb,ycb),指定相对于当前图片的左上亮度样点的当前亮度编码块的左上样点,[0628]–两个变量cbwidth和cbheight,指定当前亮度编码块的宽度和高度,[0629]–当前预测单元分割refidxlx的参考索引,x为0或1,[0630]该过程的输出是:[0631]–构造的仿射控制点运动矢量预测候选的可用性标志availableconsflaglx,x为0或1[0632]–可用性标志availableflaglx[cpidx],cpidx=0..2并且x为0或1,[0633]–构造的仿射控制点运动矢量预测候选cpmvlx[cpidx],cpidx=0..numcpmv‑1且x为0或1。[0634]在以下有序步骤中推导第一(左上)控制点运动矢量cpmvlx[0]和可用性标志availableflaglx[0]:[0635]将样点位置(xnbb2,ynbb2)、(xnbb3,ynbb3)和(xnba2,ynba2)分别设置为等于(xcb‑1,ycb‑1)、(xcb,ycb‑1)和(xcb‑1,ycb)。[0636]将可用性标志availableflaglx[0]设置为等于0,并且将cpmvlx[0]的两个分量都设置为等于0。[0637]对于(xnbtl,ynbtl)(tl由b2、b3和a2替代),适用以下内容:[0638]将亮度编码块位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight、设置为等于(xnbtl,ynbtl)的亮度位置(xnby,ynby)作为输入,并将输出赋值给编码块可用性标志availabletl来调用节中指定的编码块的可用性推导过程。[0639]当availabletl等于true并且availableflaglx[0]等于0时,适用以下内容:[0640]如果predflaglx[xnbtl][ynbtl]等于1,并且diffpicordercnt(refpiclistx[refidxlx[xnbtl][ynbtl]],refpiclistx[refidxlx])等于0,并且应于refidxltl[xnbtl][ynbtl]的参考图片不是当前图片,则将availableflaglx[0]设置为等于1并进行以下赋值:[0641]cpmvlx[0]=mvlx[xnbtl][ynbtl](8‑643)[0642]否则,当predflagly[xnbtl][ynbtl](y=!x)等于1并且diffpicordercnt(refpiclisty[refidxly[xnbtl][ynbtl]]时,refpiclistx[refidxlx])等于0,并且对应到refidxly[xnbtl][ynbtl]的参考图片不是当前图片,则将availableflaglx[0]设置为等于1并进行以下赋值:[0643]cpmvlx[0]=mvly[xnbtl][ynbtl](8‑644)[0644]当availableflaglx[0]等于1时,将设置为等于cpmvlx[0]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,将取整的cpmvlx[0]作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0645]在以下有序步骤中推导第二(右上)控制点运动矢量cpmvlx[1]和可用性标志availableflaglx[1]:[0646]将样点位置(xnbb1,ynbb1)和(xnbb0,ynbb0)分别设置等于为(xcb+cbwidth‑1,ycb‑1)和(xcb+cbwidth,ycb‑1)。[0647]将可用性标志availableflaglx[1]设置为等于0,并且将cpmvlx[1]的两个分量都设置为等于0。[0648]对于(xnbtr,ynbtr)(tr由b1和b0替代),适用以下内容:[0649]将亮度编码块位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight、设置为等于(xnbtr,ynbtr)的亮度位置(xnby,ynby)作为输入,并将输出赋值给编码块可用性标志availabletr来调用第6.4.x节中指定的编码块的可用性推导过程。[0650]当availabletr等于true并且availableflaglx[1]等于0时,适用以下内容:[0651]如果predflaglx[xnbtr][ynbtr]等于1,并且diffpicordercnt(refpiclistx[refidxlx[xnbtr][ynbtr]],refpiclistx[refidxlx])等于0,并且对应于refidxlx[xnbtr][ynbtr]的参考图片不是当前图片,则将availableflaglx[1]设置为等于1并进行以下赋值:[0652]cpmvlx[1]=mvlx[xnbtr][ynbtr]ꢀꢀꢀ(8‑645)[0653]否则,当predflagly[xnbtr][ynbtr](y=!x)等于1并且diffpicordercnt(refpiclisty[refidxly[xnbtr][ynbtr]],refpiclistx[refidxlx])等于0,并且对应于refidxly[xnbtr][ynbtr]的参考图片不是当前图片时,将availableflaglx[1]设置为等于1并进行以下赋值:[0654]cpmvlx[1]=mvly[xnbtr][ynbtr]ꢀꢀꢀ(8‑646)[0655]当availableflaglx[1]等于1时,将置为等于cpmvlx[1]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的cpmvlx[1]作为输出来调用第8.4.2.14节中指定的运动矢量取整过程。[0656]在以下有序步骤中推导第三(左下)控制点运动矢量cpmvlx[2]和可用性标志availableflaglx[2]:[0657]将样点位置(xnba1,ynba1)和(xnba0,ynba0)分别设置为等于(xcb‑1,ycb+cbheight‑1)和(xcb‑1,ycb+cbheight)。[0658]将可用性标志availableflaglx[2]设置为等于0,并且将cpmvlx[2]的两个分量都设置为等于0。[0659]对于(xnbbl,ynbbl)(bl由a1和a0替代),适用以下内容:[0660]将亮度编码块位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight、设置等于(xnbbl,ynbbl)的亮度位置(xnby,ynby)作为输入,并将输出赋值给编码块可用性标志availablebl来调用的第6.4.x节中指定的编码块的可用性推导过程。[0661]当availablebl等于true并且availableflaglx[2]等于0时,适用以下条件:[0662]如果predflaglx[xnbbl][ynbbl]等于1,并且diffpicordercnt(refpiclistx[refidxlx[xnbbl][ynbbl]],refpiclistx[refidxlx])等于0,并且对应于refidxly[xnbbl]的参考图片不是当前图片,则将availableflaglx[2]设置为等于1并进行以下赋值:[0663]cpmvlx[2]=mvlx[xnbbl][ynbbl]ꢀꢀꢀ(8‑647)[0664]否则,当predflagly[xnbbl][ynbbl](y=!x)等于1并且diffpicordercnt(refpiclisty[refidxly[xnbbl][ynbbl]]refpiclistx[refidxlx])等于0,并且对应于refidxly[xnbbl][ynbbl]的参考图片不是当前图片时,将availableflaglx[2]设置为等于1并进行以下赋值:[0665]cpmvlx[2]=mvly[xnbbl][ynbbl]ꢀꢀꢀ(8‑648)[0666]当availableflaglx[2]等于1时,将设置为等于cpmvlx[2]的mvx、设置为等于(mvshift+2)的rightshift、设置为等于(mvshift+2)的leftshift作为输入,并将取整的cpmvlx[2]作为输出来调用第8.4.2.14中指定的运动矢量取整过程。[0667]6.5上下文建模[0668]用上下文编码二进制位将ctxinc赋值给语法元素:[0669][0670]使用左侧和上方语法元素的ctxinc规范[0671]在一个示例中,上下文增加偏移ctxinc=(condl&&availablel)+(conda&&availablea)+ctxsetidx*3。[0672]可替代地,ctxinc=((condl&&availablel)||(conda&&availablea))+ctxsetidx*3。[0673]ctxinc=(condl&&availablel)+m*(conda&&availablea)+ctxsetidx*3(例如m=2)[0674]ctxinc=m*(condl&&availablel)+(conda&&availablea)+ctxsetidx*3。(例如,m=2)。[0675][0676]用于mvr_flag的ctxidx的initvalue值:[0677]当当前块为仿射或非仿射时,使用不同的上下文。[0678][0679]用于amvr_coarse_precisoin_flag的ctxidx的initvalue值:[0680]当当前块为仿射或非仿射时,使用不同的上下文。[0681][0682]可以在下面描述的方法(例如方法2500)的上下文中并入上述示例,该方法可以在视频解码器或视频编码器处实现。[0683]图25示出了用于视频解码的示例性方法的流程图。方法2500包括,在步骤2510,为当前视频块的仿射编码,做出使用(a)多个运动矢量差(mvd)精度或(b)自适应运动矢量差分辨率(amvr)的确定,以及,在步骤2520,基于确定,执行当前视频块和当前视频块的比特流表示之间的转换。[0684]方法2500包括,在步骤2520处,基于最终运动矢量执行比特流表示与当前块之间的转换,所述当前块使用支持自适应运动矢量分辨率(amvr)过程的仿射帧间模式或正常帧间模式编码。在一些实施例中,该转换从比特流表示生成当前块(例如,可以在视频解码器中实现)。在其他实施例中,该转换从当前块生成比特流表示(例如,可以在视频编码器中实现)。[0685]在一些实施例中,并且在示例1的上下文中,最终运动矢量的精度与当前块的存储的运动矢量的精度相同。在一个示例中,最终运动矢量的精度为1/16像素。在另一个示例中,最终运动矢量的精度为1/8像素。[0686]在一些实施例中,并且在示例2的上下文中,方法2500还包括:在确定mvd的精度为分数(例如,大于1像素的精度)时,旁路mvp的缩放操作的步骤。在其他实施例中,方法2500还包括:在确定mvd的精度小于或等于1像素时缩放mvp的步骤。[0687]在一些实施例中,并且在示例5的上下文中,使用仿射帧间模式对当前块进行编码,并且用信令通知的语法元素指示运动矢量的精度或运动矢量差的精度。在一个示例中,用信令通知的语法元素的值为0、1或2分别对应于运动矢量的精度为1/4像素、1/16像素和1像素。在另一个示例中,用信令通知的语法元素的值为0、1或2分别对应于运动矢量的精度为1/4像素、1像素和1/16像素。在又一示例中,用信令通知的语法元素的值为0、1或2分别对应于运动矢量的精度为1/16像素、1/4像素和1像素。[0688]在一些实施例中,并且在示例6的上下文中,基于序列参数集(sps)、图片参数集(pps)、视频参数集(vps)、条带标头、片标头、编码树单元(ctu)组、编码单元(cu)、预测单元(pu)或变换单元(tu)中的信令来启用amvr过程。[0689]在一些实施例中,并且在示例7的上下文中,在序列参数集(sps)、图片参数集(pps)、视频参数集(vps)、条带标头、片标头、编码树单元(ctu)组、编码单元(cu)、预测单元(pu)或变换单元(tu)中用信令通知运动矢量差的精度或运动矢量的精度的允许值的集合。在一个示例中,针对当前块的每个编码树单元(ctu)用信令通知允许值的集合。在另一示例中,允许值的集合基于当前块的编解码模式或尺寸。在又一示例中,该组允许值基于条带类型、时域层索引或低延迟检查标志。在又一示例中,允许值的集合基于存储在解码图片缓冲器中的运动矢量的精度。[0690]在上述实施例的一些实现中,mvp可以基于当前块的在空域或时域上临近的块。在上述实施例的其他实现中,mvp可以是默认的mvp。[0691]6.公开技术的示例实现[0692]图26是视频处理装置2600的框图。装置2600可用于实现这里描述的一个或多个方法。装置2600可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置2600可以包括一个或多个处理器2602、一个或多个存储器3704和视频处理硬件2606。处理器2602可以被配置为实现在本文中描述的一种或多种方法(包括但不限于方法2800)。尽管一些实施例可以在没有存储器的情况下操作,但是可以将(一个或多个)存储器2604用于存储用于实现这里描述的方法和技术的数据和代码。视频处理硬件2606可用于在硬件电路中实现本文档中描述的一些技术。[0693]在一些实施例中,视频编码方法可以使用如关于图26所描述的在硬件平台上实现的装置来实现。[0694]可以使用以下基于条款的格式来描述各种技术和实施例。[0695]1.一种用于视频编码的方法,包括:[0696]为当前视频块的仿射编码,做出使用(a)多个运动矢量差(mvd)精度或(b)自适应运动矢量差分辨率(amvr)的确定,以及[0697]基于确定,执行当前视频块和当前视频块的比特流表示之间的转换。[0698]2.根据条款1的方法,其中,基于比特流表示中的一个或多个语法元素来做出确定。[0699]3.根据条款2的方法,其中,基于对当前视频块启用仿射编码,将一个或多个语法元素选择性地包括在比特流表示中。[0700]4.根据条款1‑3中任一项的方法,其中,用于仿射帧间模式的mvd精度不同于用于正常帧间模式编码的mvd精度。[0701]5.根据条款2‑4中任一项的方法,其中,使用基于上下文的编码来对一个或多个语法元素进行编码。[0702]6.根据条款5的方法,其中,将不同的上下文模型用于当前视频块的仿射帧间编码和正常帧间模式编码。[0703]7.根据条款1的方法,其中,基于第一语法元素做出确定,第一语法元素包括在比特流表示中以指示amvr对仿射编码的当前视频块的适用性。[0704]8.根据条款1的方法,其中,确定是在当前视频块的转换期间禁用amvr,或者其中,确定是比特流表示中不存在第一语法元素,并且其中,转换使用默认运动矢量或默认运动矢量差精度。[0705]9.根据条款8的方法,其中,默认精度是第1/4像素。[0706]10.根据条款7的方法,其中,基于指示运动矢量差分的精度的第二语法元素做出确定。[0707]11.根据条款7的方法,其中,在当前视频块的控制点运动矢量为零的情况下,从比特流表示中排除第一语法元素。[0708]12.根据条款1至11中任一项的方法,其中,在转换期间使用帧内块复制的情况下,amvr包括第一amvr方案,并且在转换期间不使用帧内块复制模式的情况下,amvr包括不同的第二amvr方案。[0709]13.根据条款2至12中任一项的方法,其中,在条带级别或图片级别或序列级别包括语法元素。[0710]14.根据条款1至13中任一项的方法,其中,转换包括从比特流表示生成当前视频块的像素值,或者从当前视频块生成比特流表示。[0711]15.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现条款1至14中任一项的方法。[0712]16.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于执行条款1至14中任一项的方法的程序代码。[0713]图27示出了对称模式的示例。[0714]图28是示出其中可实现本文中所公开的各种技术的示例视频处理系统2800的框图。各种实施方式可以包括系统2800的一些或全部组件。系统2800可以包括用于接收视频内容的输入2802。视频内容可以以原始或未压缩的格式(例如8或10位多分量像素值)接收,或者可以以压缩或编码的格式接收。输入2802可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(pon)等)和无线接口(诸如wi‑fi或蜂窝接口)。[0715]系统2800可以包括可以实现本文中描述的各种编码或编码方法的编码组件2804。编码组件2804可以减少从编码组件2804的输入2802到输出的视频的平均比特率,以产生视频的编码表示。因此,编码技术有时称为视频压缩或视频转码技术。如组件2806所表示的,编码组件2804的输出可以被存储或经由所连接的通信来发送。在输入2802处接收的视频的存储或传送的比特流(或编码)表示可以被组件2808使用,以生成被发送到显示接口2810的像素值或可显示视频。从比特流表示中生成用户可见视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编码”操作或工具,但是应当理解,在编码器处使用编码工具或操作,并且将由编码器执行反向编码结果的相应解码工具或操作。[0716]外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清多媒体接口(hdmi)或displayport等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其他能够执行数字数据处理和/或视频显示的设备。[0717]图29示出了用于视觉媒体处理的示例方法的流程图。该流程图的步骤示出了在本文档的第4部分中的示例2k中讨论的示例实施例的实现。在步骤2910,该过程对于当前视频块和所述当前视频块的比特流表示之间的转换,做出使用一个或多个精度来表示运动信息的确定,所述运动信息包括在使用自适应运动矢量分辨率(amvr)的仿射帧间模式或正常帧间模式中的转换期间使用的运动矢量和/或运动矢量预测器和/或运动矢量差。在步骤2920,该过程基于对所述一个或多个精度的确定来执行所述转换,其中,在所述比特流表示中使用多个语法元素来用信令通知所述一个或多个精度。[0718]图30示出了用于视觉媒体处理的示例方法的流程图。该流程图的步骤示出了在本文档的第4部分中的示例2kii1中讨论的示例实施例的实现。在步骤3010,该过程对于当前视频块和所述当前视频块的比特流表示之间的转换,做出使用一个或多个精度来表示运动信息的确定,所述运动信息包括在使用自适应运动矢量分辨率(amvr)的帧内块复制(ibc)模式中的转换期间使用的运动矢量和/或运动矢量预测器和/或运动矢量差。在步骤3020,该过程基于对所述一个或多个精度的确定来执行所述转换,其中,在所述比特流表示中使用多个语法元素来用信令通知所述一个或多个精度,其中,基于在ibc模式中从所述当前视频块的图片推导的块矢量来执行所述转换。[0719]现在以基于条款的格式呈现一些实施例。[0720]1.一种视觉媒体处理的方法,包括:[0721]对于当前视频块和当前视频块的比特流表示之间的转换,做出使用一个或多个精度来表示运动信息的确定,运动信息包括在使用自适应运动矢量分辨率(amvr)的仿射帧间模式或正常帧间模式中的转换期间使用的运动矢量和/或运动矢量预测器和/或运动矢量差;以及[0722]基于对一个或多个精度的确定来执行转换,其中,在比特流表示中使用多个语法元素来用信令通知一个或多个精度。[0723]2.根据条款1的方法,还包括:[0724]在比特流表示中选择性地用信令通知对应于多个精度的多个语法元素。[0725]3.根据条款1‑2中任一项或多项的方法,其中,多个语法元素包括至少第一语法元素,以指示是否应用默认运动精度。[0726]4.根据条款1‑3中任一项或多项的方法,其中,第一语法元素是amvr标志或运动信息精度标志。[0727]5.根据条款1‑4中任一项或多项的方法,其中,用于仿射帧间模式的至少运动信息精度不同于用于正常帧间模式的运动信息精度。[0728]6.根据条款1‑5中任一项或多项的方法,其中,多个语法元素中的至少一个使用基于上下文的编码进行编码,基于上下文的编码包括对至少一个上下文模型的使用。[0729]7.根据条款6的方法,其中,用于仿射帧间编解码模式的上下文模型不同于用于正常帧间模式的上下文模型。[0730]8.根据条款1‑2中任一项或多项的方法,其中,确定是基于包括在比特流表示中以指示amvr对当前视频块的适用性的第一语法元素做出的。[0731]9.根据条款1‑2中任一项或多项的方法,其中,:在确定比特流表示中不存在第一语法元素时,确定在当前视频块的转换期间禁用amvr,并且其中,转换使用默认运动信息或默认运动信息精度。[0732]10.根据条款1‑2中任一项或多项的方法,其中,在确定比特流表示中不存在第一语法元素时,确定禁止使用多个精度来表示运动信息。[0733]11.根据条款8的方法,其中,在当前视频块的所有控制点的运动矢量差(mvd)都为零的情况下,从比特流表示中排除第一语法元素。[0734]12.根据条款8的方法,其中,在当前视频块的一个选定控制点的运动矢量差(mvd)为零的情况下,从比特流表示中排除第一语法元素。[0735]13.根据条款8的方法,其中在对仿射帧间模式禁用amvr的情况下,从比特流表示中排除第一语法元素。[0736]14.根据条款11至13中任一项或多项的方法,其中,将仿射帧间模式用于当前视频块。[0737]15.根据条款8的方法,其中,在对正常帧间模式禁用amvr并且将正常帧间模式用于当前视频块的情况下,从比特流表示中排除第一语法元素。[0738]16.根据条款8的方法,其中,默认运动信息精度是1/4亮度样点或1亮度样点或1/16亮度样点。[0739]17.根据条款8的方法,其中,将默认运动信息精度设置为在运动补偿步骤期间使用的值。[0740]18.根据条款1‑2中任一项或多项的方法,其中,在确定比特流表示中不存在第一语法元素时,确定在当前视频块的转换期间启用amvr。[0741]19.一种视觉媒体处理的方法,包括:[0742]对于当前视频块和当前视频块的比特流表示之间的转换,做出使用一个或多个精度来表示运动信息的确定,运动信息包括在使用自适应运动矢量分辨率(amvr)的帧内块复制(ibc)模式中的转换期间使用的运动矢量和/或运动矢量预测器和/或运动矢量差;以及[0743]基于对一个或多个精度的确定来执行转换,其中,在比特流表示中使用多个语法元素来用信令通知一个或多个精度;[0744]其中,基于在ibc模式中从当前视频块的图片推导的块矢量来执行转换。[0745]20.如条款19的方法,其中,确定是基于包括在比特流表示中以指示amvr对当前视频块的适用性的第一语法元素做出的。[0746]21.根据条款8或20中任一项或多项的方法,其中,确定基于指示用于表示运动信息的一个或多个精度的第二语法元素来进行。[0747]22.根据条款21的方法,其中,当第二语法元素等于零时,运动信息精度取整数值,否则其中运动信息精度为4亮度样点。[0748]23.根据条款21的方法,其中,当第二语法元素等于零时,运动信息精度为4亮度样点,否则其中运动信息精度取整数值。[0749]24.根据条款21的方法,其中,第二语法元素的信令基于第一语法元素的值或者比特流表示中是否缺失第一语法元素。[0750]25.根据条款21的方法,其中,当第二语法元素等于零时,运动信息精度取整数值,否则其中运动信息精度为1/16亮度样点。[0751]26.根据条款21的方法,其中,当第二语法元素等于零时,运动信息精度为1/16亮度样点,否则其中运动信息精度取整数值。[0752]27.根据条款6的方法,其中,将相同的上下文模型用于仿射帧间模式和正常帧间模式。[0753]28.根据条款7或27中任一项或多项的方法,其中,将相同的语法元素用于仿射帧间编解码模式和正常帧间模式。[0754]29.根据条款1至28中任一项或多项的方法,其中,在转换期间使用帧内块复制模式的情况下,amvr包括第一amvr方案,并且在转换期间不使用帧内块复制模式的情况下,amvr包括不同的第二amvr方案。[0755]30.根据条款1至29中任一项或多项的方法,其中,在条带级别或图片级别或序列级别包括多个语法元素。[0756]31.根据条款1至30中的任一项或多项的方法,其中,转换包括从比特流表示生成当前视频块的像素值,或者从当前视频块生成比特流表示。[0757]32.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现根据条款1至31中任一项的方法。[0758]33.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于执行根据条款1至31中任一项的方法的程序代码。[0759]34.一种视频编码器装置,包括处理器,处理器配置为实现条款1‑31中的任一项或多项的方法。[0760]35.一种视频解码器装置,包括处理器,处理器配置为实现条款1‑31中的任一项或多项的方法。[0761]从前述内容可以理解,本文已经出于说明的目的描述了当前所公开的技术的具体实施例,但是在不脱离本发明的范围的情况下可以做出各种修改。因此,除了所附权利要求之外,当前所公开的技术不受限制。[0762]本专利文档中描述的主题的实现方式和功能性操作可以在各种系统、数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等同物,或者以他们的一个或多个的组合实施。本说明书中描述的主题的视线方式可以被实施为一个或多个计算机程序产品,即,在计算机可读介质上编码的一个或多个暂时性和非暂时性计算机程序指令模块,用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的合成、或者它们中的一个或多个的组合。术语“数据处理单元”和“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,装置可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统及其一个或多个的组合的代码。[0763]计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨论的程序的单一文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点或分布在多个站点并通过通信网络互连。[0764]本说明书中描述的处理和逻辑流可以由一个或多个可编程处理器执行,该一个或多个处理器运行一个或多个计算机程序,通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流也可以由专用逻辑电路来执行,并且装置也可以实施为专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。[0765]例如,适用于运行计算机程序的处理器包括通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或可操作地耦合到一个或多个大容量存储设备,以从其接收数据或向其传送数据,或两者兼有。然而,计算机不一定需要具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。[0766]旨在将说明书与附图一起仅视为示例性的,其中示例性意味着示例。如这里所使用的,除非上下文另有明确说明,否则“或”的使用旨在包括“和/或”。[0767]虽然本专利文档包含许多细节,但不应将其解释为对任何发明或要求保护的范围的限制,而应解释为特定于特定发明的特定实施例的特征的描述。本专利文档在分离的实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独地实施,或在任何合适的子组合中实施。此外,虽然特征可以被描述为在某些组合中起作用,甚至最初这样要求保护,但在某些情况下,可以从要求保护的组合中删除组合中的一个或多个特征,并且要求保护的组合可以指向子组合或子组合的变体。[0768]同样,尽管在附图中以特定顺序描述了操作,但这不应理解为要获得期望的结果必须按照所示的特定顺序或次序顺序来执行这些操作,或执行所有示出的操作。此外,本专利文档所述实施例中的各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。[0769]仅描述了一些实施方式和示例,其他实施方式、增强和变体可以基于本专利文档中描述和说明的内容做出。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1