用于视频编解码中的帧内块复制的基于方向的预测的制作方法

文档序号:26949616发布日期:2021-10-16 00:41阅读:69来源:国知局
用于视频编解码中的帧内块复制的基于方向的预测1.相关申请的交叉引用2.根据适用的专利法和/或依据巴黎公约的规则,本技术旨在及时要求2019年3月1日提交的第pct/cn2019/076695号国际专利申请、2019年3月4日提交的第pct/cn2019/076848号国际专利申请、2019年3月11日提交的第pct/cn2019/077725号国际专利申请、2019年3月21日提交的第pct/cn2019/079151号国际专利申请、2019年5月7日提交的第pct/cn2019/085862号国际专利申请、2019年5月23日提交的第pct/cn2019/088129号国际专利申请、2019年6月18日提交的第pct/cn2019/091691号国际专利申请、2019年6月28日提交的第pct/cn2019/093552号国际专利申请、2019年7月6日提交的第pct/cn2019/094957号国际专利申请、2019年7月9日提交的第pct/cn2019/095297号国际专利申请、2019年7月10日提交的第pct/cn2019/095504号国际专利申请、2019年7月11日提交的第pct/cn2019/095656号国际专利申请、2019年7月13日提交的第pct/cn2019/095913号国际专利申请、2019年7月15日提交的第pct/cn2019/096048号国际专利申请的优先权和利益,出于根据法律的所有目的,前述申请的全部公开通过引用而并入作为本技术的公开的一部分。
技术领域
:3.本专利文档涉及视频编解码和解码技术、设备以及系统。
背景技术
::4.尽管视频压缩有所进步,但数字视频仍占互联网和其它数字通信网络上的最大带宽使用。随着能够接收和显示视频的连接用户设备的数量增加,预计对数字视频使用的带宽需求将继续增长。技术实现要素:5.本文档描述了用于对视频或图像进行解码或编码的帧内块复制模式的缓冲区管理和块矢量编解码的各种实施例和技术。6.在一个示例方面,公开了一种视频或图像(可视数据)处理的方法。该方法包括:对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;对于在空域上位于当前视频块相对于包括当前视频块的编解码树单元的左上角位置的位置(x0,y0)处并具有块矢量(bvx,bvy)的样点,计算缓冲区中在参考位置(p,q)处的对应参考,其中,参考位置(p,q)是使用块矢量(bvx,bvy)和位置(x0,y0)而确定的;以及当确定参考位置(p,q)位于缓冲区之外时,至少部分基于当前视频块相对于包括当前视频块的编解码树单元的位置来重新计算参考位置。7.在另一示例方面,公开了另一种可视数据处理的方法。该方法包括:对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;对于在空域上位于当前视频块相对于包括当前视频块的图片的左上角位置的位置(x,y)处并具有块矢量(bvx,bvy)的样点,至少部分基于满足与以下中的至少一个相关联的一个或多个条件来将块矢量(bvx,bvy)指定为有效:当前视频块的位置(x,y)、当前视频块的大小、图片的大小、包括当前视频块的编解码树单元的大小、或缓冲区的大小;执行检查以确定块矢量(bvx,bvy)有效;以及当识别出块矢量(bvx,bvy)有效时,计算缓冲区中在参考位置(p,q)处的对应参考,其中,参考位置(p,q)是使用块矢量(bvx,bvy)、位置(x,y)以及缓冲区的大小而确定的。8.在又一示例方面,公开了另一种可视数据处理的方法。该方法包括:对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定当前视频块的块矢量(bvx,bvy)或块矢量差(bvdx,bvdy),其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;以及将块矢量(bvx,bvy)的至少一个分量或块矢量差(bvdx,bvdy)的至少一个分量归一化为位于一范围内。9.在又一示例方面,公开了另一种视频处理的方法。该方法包括:对于当前视频块和当前视频块的比特流表示之间的转换,确定用于存储用于帧内块复制模式下的预测的重构样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;以及根据顺序来更新存储在缓冲区中的重构样点。10.在另一示例方面,公开了另一种视频处理的方法。该方法包括:执行当前视频块和当前视频块的比特流表示之间的转换,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,用于预测计算的第一精确度低于用于重构计算的第二精确度。11.在又一示例方面,公开了另一种视频处理的方法。该方法包括:使用帧内块复制模式来执行当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×nm的参考区域被使用,其中n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×n个最近的可用编解码树单元的样点。12.在又一示例方面,公开了另一种视频处理的方法。该方法包括:使用帧内块复制模式来执行当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×pm的参考区域被使用,其中n、p和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×p‑1个最近的可用编解码树单元的样点。13.在又一示例方面,公开了另一种视频处理的方法。该方法包括:使用帧内块复制模式来执行视频区域的虚拟管道数据单元(vpdu)的当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×nm的参考区域被使用,vpdu的尺寸为km×km,其中k、n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×n‑k个最近的可用编解码树单元的样点。14.在又一示例方面,公开了另一种视频处理的方法。该方法包括:对于可视媒体数据的尺寸为w×h的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;对于在空域上位于当前视频块相对于包括当前视频块的尺寸为m×m的编解码树单元(ctu)的左上角位置的位置(x0,y0)处并具有块矢量(bvx,bvy)的样点,计算在缓冲区中的参考位置(p,q)处开始的对应参考区域,其中,参考位置(p,q)是使用块矢量(bvx,bvy)和/或位置(x0,y0)而确定的;以及将一个或多个基于规则的约束应用于参考区域和/或参考位置(p,q),以限制参考区域与视频区域的重叠。15.在又一示例方面,公开了另一种视频处理的方法。该方法包括:对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;对于在空域上位于当前视频块相对于包括当前视频块的编解码单元(cu)的位置(x0,y0)处的样点,计算在缓冲区中的参考位置处开始的对应参考区域;以及调整参考区域和参考位置以确定先前处理的块中的哪些被用于预测。16.在又一示例方面,公开了另一种视频处理的方法。该方法包括:对于视频的当前视频块和当前视频块的比特流表示之间的转换,使用视频的分量x来确定与视频的分量c的当前视频块相对应的块矢量的有效性,其中,分量x不同于视频的亮度分量;以及当确定块矢量对于当前视频块有效时,使用块矢量来执行该转换,其中,该转换在帧内块复制(ibc)模式下被执行,其中该帧内块复制(ibc)模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。17.在又一示例方面,公开了一种视频编码器或解码器装置,包括被配置为实施上述方法的处理器。18.在另一示例方面,公开了一种计算机可读程序介质。该介质存储体现用于实施所公开的方法中的一种的处理器可执行指令的代码。19.在本文档中更详细地描述了这些和其它方面。附图说明20.图1示出了当前图片参考或帧内块复制视频或图像编解码技术的示例。21.图2示出了动态参考区域的示例。22.图3示出了对从(x,y)开始的块的编解码的示例。23.图4示出了选择先前编解码的64×64块的可能的替代方式的示例。24.图5示出了改变64×64块的编解码/解码顺序的可能的替代方式的示例。25.图6是视频或图像处理的示例方法的流程图。26.图7是用于视频或图像编解码或解码的硬件平台的框图。27.图8示出了在64×64块的解码顺序是从顶部到底部、从左到右时选择先前编解码的64×64块的另一种可能的替代方式。28.图9示出了选择先前编解码的64×64块的另一种可能的替代方式。29.图10示出了具有整形的解码过程的示例流程图。30.图11示出了在64×64块的解码顺序是从左到右、从顶部到底部时选择先前编解码的64×64块的另一种可能的替代方式。31.图12是ibc参考缓冲区状态的图示,其中块表示64×64ctu。32.图13示出了用于ibc的参考区域的一种布置。33.图14示出了用于ibc的参考区域的另一种布置。34.图15示出了当当前虚拟管道数据单元(virtualpipelinedataunit,vpdu)在图片边界的右侧时的用于ibc的参考区域的另一种布置。35.图16示出了当ctu行中的vpdu被顺序地解码时的虚拟缓冲区的状态的示例。36.图17是可以在其中实施所公开的技术的示例视频处理系统的框图。37.图18是可视数据处理的示例方法的流程图。38.图19是可视数据处理的示例方法的流程图。39.图20是可视数据处理的示例方法的流程图。40.图21是可视数据处理的示例方法的流程图。41.图22是可视数据处理的示例方法的流程图。42.图23是可视数据处理的示例方法的流程图。43.图24是可视数据处理的示例方法的流程图。44.图25是可视数据处理的示例方法的流程图。45.图26是可视数据处理的示例方法的流程图。46.图27是可视数据处理的示例方法的流程图。47.图28是可视数据处理的示例方法的流程图。具体实施方式48.为了便于理解,在本文档中使用了章节标题,并且不将每个章节中所公开的实施例的范围仅限制于该章节。本文档描述了用于对视频或图像进行解码或编码的帧内块复制模式的缓冲区管理和块矢量编解码的各种实施例和技术。49.1.概要50.本专利文档涉及视频编解码技术。具体地,它涉及视频编解码中的帧内块复制。它可以被应用于正在开发的标准,例如,多功能视频编解码。它也可以适用于未来的视频编解码标准或视频编解码器。51.2.简短讨论52.视频编解码标准主要是通过众所周知的itu‑t和iso/iec标准的发展而演变的。itu‑t产生了h.261和h.263,iso/iec产生了mpeg‑1和mpeg‑4visual,并且这两个组织联合产生了h.262/mpeg‑2视频和264/mpeg‑4高级视频编解码(advancedvideocoding,avc)标准和h.265/hevc标准。自h.262以来,视频编解码标准基于混合视频编解码结构,其中利用了时域预测加变换编解码。为了探索hevc以外的未来的视频编解码技术,vceg和mpeg于2015年联合成立了联合视频探索小组(jointvideoexplorationteam,jvet)。此后,jvet采用了许多新方法,并将其放入到命名为联合探索模型(jointexplorationmodel,jem)的参考软件中。2018年4月,建立了vceg(q6/16)和iso/iecjtc1sc29/wg11(mpeg)之间的联合视频专家小组(jointvideoexpertteam,jvet)以致力于vvc标准,目标是与hevc相比的50%比特率降低。53.2.1hevc/h.265中的帧间预测54.每个帧间预测pu具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。也可以使用inter_pred_idc来信令通知对两个参考图片列表之一的使用。运动矢量可以被显式地编解码为相对于预测值的增量(delta)。55.当以跳过模式对cu进行编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编解码的运动矢量增量或参考图片索引。指定了merge模式,由此从包括空域和时域候选的邻近pu获得当前pu的运动参数。merge模式可以被应用于任何帧间预测pu,而不仅是针对跳过模式。merge模式的替代方案是运动参数的显式传输,其中,运动矢量(更确切地说,与运动矢量预测值相比的运动矢量差(motionvectordifference,mvd))、每个参考图片列表的对应参考图片索引和参考图片列表使用按每pu被显式地信令通知。这样的模式在本公开中被称为高级运动矢量预测(advancedmotionvectorprediction,amvp)。56.当信令指示将使用两个参考图片列表之一时,从一个样点块产生pu。这被称为“单向预测”。单向预测适用于p条带和b条带两者。57.当信令指示要使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测”。双向预测仅适用于b条带。58.下文提供了关于在hevc中指定的帧间预测模式的细节。描述将以merge模式开始。59.2.2当前图片参考60.已经在hevc屏幕内容编解码扩展(hevcscreencontentcodingextension,hevc‑scc)和当前的vvc测试模型中采用了当前图片参考(currentpicturereferencing,cpr),或一度命名为帧内块复制(intrablockcopy,ibc)。ibc将运动补偿的概念从帧间编解码扩展到帧内编解码。如图1所示,当应用cpr时,当前块通过相同图片中的参考块进行预测。在对当前块进行编解码或解码之前,参考块中的样点必须已经被重构。尽管cpr对大多数相机捕捉的序列来说效率不高,但它示出了对屏幕内容的显著编解码增益。原因是屏幕内容图片中有许多重复图案,诸如图标和文本字符。cpr可以有效地移除这些重复图案之间的冗余。在hevc‑scc中,如果帧间编解码的编解码单元(codingunit,cu)选择当前图片作为其参考图片,则它可以应用cpr。在这种情况下,mv被重命名为块矢量(blockvector,bv),并且bv总是具有整数像素精确度。为了与主要简表(profile)hevc兼容,当前图片在解码图片缓冲区(decodedpicturebuffer,dpb)中被标记为“长期”参考图片。应当注意,类似地,在多视图/3d视频编解码标准中,视图间参考图片也被标记为“长期”参考图片。61.在bv找到其参考块之后,可以通过复制参考块来生成预测。残差可以通过从原始信令中减去参考像素而得到。那么变换和量化可以如在其它编解码模式中被应用。62.图1是当前图片参考的示例图示。63.然而,当参考块在图片之外、或与当前块重叠、或在重构区域之外、或在受某些约束限制的有效区域之外时,部分或全部像素值未被定义。基本上,有两种解决方案解决这样的问题。一种是不允许这种情况,例如,在比特流一致性中。另一种是对那些未定义的像素值应用填充。以下子段详细描述了解决方案。64.2.3hevc屏幕内容编解码扩展中的cpr65.在hevc的屏幕内容编解码扩展中,当块使用当前图片作为参考时,它应该保证整个参考块在可用的重构区域内,如在下规格文本所指示的:66.变量offsetx和offsety被推导如下:67.offsetx=(chromaarraytype==0)?0:(mvclx[0]&0x7?2:0)ꢀꢀꢀ(8‑104)[0068]offsety=(chromaarraytype==0)?0:(mvclx[1]&0x7?2:0)ꢀꢀ(8‑105)[0069]比特流一致性的一个要求是,当参考图片是当前图片时,亮度运动矢量mvlx应当遵守以下约束:[0070]‑当以设置为等于(xcb,ycb)的(xcurr,ycurr)和设置为等于(xpb+(mvlx[0]>>2)‑offsetx,ypb+(mvlx[1]>>2)‑offsety)的邻近亮度位置(xnby,ynby)作为输入来调用如在条款6.4.1中指定的z扫描顺序块可用性的推导过程时,输出应当等于true(真)。[0071]‑当以设置为等于(xcb,ycb)的(xcurr,ycurr)和设置为等于(xpb+(mvlx[0]>>2)+npbw‑1+offsetx,ypb+(mvlx[1]>>2)+npbh‑1+offsety)的邻近亮度位置(xnby,ynby)作为输入来调用如在条款6.4.1中指定的z扫描顺序块可用性的推导过程时,输出应当等于true。[0072]‑以下条件中的一个或两个应当为真:[0073]‑(mvlx[0]>>2)+npbw+xb1+offsetx的值小于或等于0。[0074]–(mvlx[1]>>2)+npbh+yb1+offsety的值小于或等于0。[0075]–以下条件应当为真:[0076](xpb+(mvlx[0]>>2)+npbsw–1+offsetx)/ctbsizey–xcb/ctbsizey<=ycb/ctbsizey–(ypb+(mvlx[1]>>2)+npbsh–1+offsety)/ctbsizeyꢀꢀꢀ(8‑106)[0077]因此,不会发生参考块与当前块重叠或者参考块在图片之外的情况。不需要填充参考或预测块。[0078]2.4cpr/ibc的示例[0079]在vvc测试模型中,整个参考块应该具有当前编解码树单元(codingtreeunit,ctu),并且不与当前块重叠。因此,不需要填充参考或预测块。[0080]当启用双树(dualtree)时,从亮度ctu到色度ctu,分割结构可以不同。因此,对于4:2:0颜色格式,一个色度块(例如,cu)可以对应于已经被划分为多个亮度cu的一个并置亮度区域。[0081]当以下条件应当为真时,色度块只能以cpr模式进行编解码:[0082]1)并置亮度块内的每个亮度cu都应当以cpr模式进行编解码[0083]2)亮度4×4块的bv中的每一个首先被转换为色度块的bv,并且色度块的bv是有效bv。[0084]如果两个条件中的任何一个为假(false),色度块不应以cpr模式进行编解码。[0085]注意,“有效bv”的定义具有以下约束:[0086]1)由bv标识的参考块内的所有样点应当在受限的搜索范围内(例如,在当前vvc设计中,应当在相同ctu内)。[0087]2)由bv标识的参考块内的所有样点都已经被重构。[0088]2.5cpr/ibc的示例[0089]在一些示例中,用于cpr/ibc的参考区域被限制到当前ctu,其多达128×128。参考区域被动态地改变以重用内存来存储用于cpr/ibc的参考样点,使得cpr/ibc块可以具有更多的参考候选,而用于cpr/ibc的参考缓冲区可以保持或从一个ctu减少。[0090]图2示出了一种方法,其中块为64×64,并且ctu包含4个64×64块。当对64×64块进行编解码时,先前的3个64×64块可以被用作参考。通过这样做,解码器只需要存储4个64×64块来支持cpr/ibc。[0091]假设当前亮度cu相对于图片的左上角的位置为(x,y),并且块矢量为(bvx,bvy)。在当前设计中,bv是否有效可以通过亮度位置((x+bvx)>>6<<6+(1<<7),(y+bvy)>>6<<6)还未被重构并且((x+bvx)>>6<<6+(1<<7),(y+bvy)>>6<<6)不等于(x>>6<<6,y>>6<<6)进行判断。[0092]2.6环路整形(in‑loopreshaping,ilr)[0093]环路整形(ilr)的基本思想是将原始(在第一域)信号(预测/重构信号)转换到第二域(整形域)。[0094]环路亮度整形器被实施为一对查找表(look‑uptable,lut),但是两个lut中只有一个需要被信令通知,因为另一个lut可以从信令通知的lut计算。每个lut都是一维的、10比特的、1024条目的映射表(1d‑lut)。一个lut是正向lut,fwdlut,其将输入亮度码值yi映射到变更值yr:yr=fwdlut[yi]。另一个lut是逆向lut,invlut,其将变更码值yr映射到映射到(表示yi的重构值)。[0095]2.6.1pwl模型[0096]概念性地,分段线性(piece‑wiselinear,pwl)以以下方式被实施:[0097]假定x1、x2为两个输入枢轴点,并且y1、y2为它们对于一个段(piece)的对应的输出枢轴点。x1和x2之间的任何输入值x的输出值y可以通过以下等式进行插值:[0098]y=((y2‑y1)/(x2‑x1))*(x‑x1)+y1[0099]在定点实施方式中,等式可以改写为:[0100]y=((m*x+2fp_prec‑1)>>fp_prec)+c[0101]其中m是标量,c是偏移量,fp_prec是指定精确度的恒定值。[0102]在一些示例中,pwl模型用于预先计算1024条目的fwdlut和invlut映射表;但是pwl模型也允许在不预先计算lut的情况下即时计算相同的映射值的实施方式。[0103]2.6.2.1亮度整形[0104]一种环路亮度整形的方法提供了更低复杂度的管道,该管道还消除了帧间条带重构中逐块帧内预测的解码时延。帧内预测在帧间和帧内条带两者的整形域中执行。[0105]无论条带类型如何,帧内预测总是在整形域中执行。在这种布置下,帧内预测可以在先前的tu重构完成之后立即开始。这样的布置还可以为帧内模式提供统一的过程,而不是依赖于条带。图10示出了基于模式的ce12‑2解码过程的框图。[0106]针对亮度和色度残差缩放测试了16段分段线性(pwl)模型,而不是32段pwl模型。[0107]利用环路亮度整形器的帧间条带重构(浅绿色阴影块指示整形域中的信令:亮度残差;帧内亮度预测的;和帧内亮度重构的)。[0108]2.6.2.2依赖于亮度的色度残差缩放[0109]依赖于亮度的色度残差缩放是一个用定点整数运算实施的乘法过程。色度残差缩放补偿亮度信号与色度信号的相互作用。色度残差缩放被应用于tu级别。更具体地,以下适用:[0110]–对于帧内,对重构亮度进行平均。[0111]–对于帧间,对预测亮度进行平均。[0112]平均用于标识pwl模型中的索引。该索引标识缩放因子cscaleinv。色度残差乘以该数。[0113]注意,色度缩放因子是根据正向映射的预测亮度值而不是重构亮度值来计算的。[0114]2.6.2.3ilr边信息的信令通知[0115]参数(当前)在片组头中传送(类似于alf)。这些据称需要40‑100比特。[0116]在一些示例中,添加的语法以斜体进行突出显示。[0117]7.3.2.1中序列参数集rbsp语法[0118][0119][0120]7.3.3.1中通用片组头语法[0121][0122]添加新的语法表片组整形器模型:[0123][0124]在通用序列参数集rbsp语义中,添加以下语义:[0125]sps_reshaper_enabled_flag等于1指定在编解码视频序列(codedvideosequence,cvs)中使用整形器。sps_reshaper_enabled_flag等于0指定在cvs中不使用整形器。[0126]在片组头语法中,添加以下语义[0127]tile_group_reshaper_model_present_flag等于1指定tile_group_reshaper_model()存在于片组头中。tile_group_reshaper_model_present_flag等于0指定tile_group_reshaper_model()不存在于片组头中。当tile_group_reshaper_model_present_flag不存在时,它被推断为等于0。[0128]tile_group_reshaper_enabled_flag等于1指定对当前片组启用整形器。tile_group_reshaper_enabled_flag等于0指定不对当前片组启用整形器。当tile_group_reshaper_enable_flag不存在时,它被推断为等于0。[0129]tile_group_reshaper_chroma_residual_scale_flag等于指定对当前片组启用色度残差缩放。tile_group_reshaper_chroma_residual_scale_flag等于0指定不对当前片组启用色度残差缩放。当tile_group_reshaper_chroma_residual_scale_flag不存在时,它被推断为等于0。添加tile_group_reshaper_model()语法[0130]reshape_model_min_bin_idx指定要在整形器构建过程中使用的最小二进制位(或段)索引。reshape_model_min_bin_idx的值应在0至maxbinidx的范围内,包括0和maxbinidx。maxbinidx的值应当等于15。[0131]reshape_model_delta_max_bin_idx指定最大允许的二进制位(或段)索引maxbinidx减去要在整形器构建过程中使用的最大二进制位索引。reshape_model_max_bin_idx的值被设置为等于maxbinidxꢀ–reshape_model_delta_max_bin_idx。[0132]reshaper_model_bin_delta_abs_cw_prec_minus1加1指定用于表示语法reshape_model_bin_delta_abs_cw[i]的比特数。[0133]reshape_model_bin_delta_abs_cw[i]指定第i个二进制位的绝对增量码字值。[0134]reshaper_model_bin_delta_sign_cw_flag[i]指定reshape_model_bin_delta_abs_cw[i]的符号,如下所示:[0135]–如果reshape_model_bin_delta_sign_cw_flag[i]等于0,则对应的变量rspdeltacw[i]为正值。[0136]–否则(reshape_model_bin_delta_sign_cw_flag[i]不等于0),对应的变量rspdeltacw[i]为负值。[0137]当reshape_model_bin_delta_sign_cw_flag[i]不存在时,它被推断为等于0。变量rspdeltacw[i]=(12*reshape_model_bin_delta_sign_cw[i])*reshape_model_bin_delta_abs_cw[i];[0138]变量rspcw[i]如以下步骤而推导:[0139]变量orgcw被设置为等于(1<<bitdepthy)/(maxbinidx+1)。[0140]–如果reshaper_model_min_bin_idx<=i<=reshaper_model_max_bin_idxrspcw[i]=orgcw+rspdeltacw[i]。[0141]–否则,rspcw[i]=0。[0142]如果bitdepthy的值等于10,则rspcw[i]的值应当在32至2*orgcw‑1的范围内。[0143]变量inputpivot[i](i在0至maxbinidx+1的范围内,包括0和maxbinidx+1)被推导如下[0144]inputpivot[i]=i*orgcw[0145]变量reshapepivot[i](i在0至maxbinidx+1的范围内,包括0和maxbinidx+1)、变量scalecoef[i]和invscalecoeff[i](i在0至maxbinidx的范围内,包括0和maxbinidx)被推导如下:[0146][0147]变量chromascalecoef[i](i在0至maxbinidx的范围内,包括0和maxbinidx)被推导如下:[0148]chromaresidualscalelut[64]={16384,16384,16384,16384,16384,16384,16384,8192,8192,8192,8192,5461,5461,5461,5461,4096,4096,4096,4096,3277,3277,3277,3277,2731,2731,2731,2731,2341,2341,2341,2048,2048,2048,1820,1820,1820,1638,1638,1638,1638,1489,1489,1489,1489,1365,1365,1365,1365,1260,1260,1260,1260,1170,1170,1170,1170,1092,1092,1092,1092,1024,1024,1024,1024};[0149]shiftc=11[0150]–如果(rspcw[i]==0)[0151]chromascalecoef[i]=(1<<shiftc)[0152]–否则(rspcw[i]!=0),chromascalecoef[i]=chromaresidualscalelut[rspcw[i]>>1][0153]2.6.2.4ilr的使用[0154]在编码器侧,每个图片(或片组)首先被转换到整形域。并且所有的编解码过程都是在整形域中执行的。对于帧内预测,邻近块在整形域中;对于帧间预测,(从来自解码图片缓冲区的原始域生成的)参考块首先被转换到整形域。然后残差被生成并被编解码成比特流。[0155]在整个图片(或片组)完成编码/解码之后,整形域中的样点被转换到原始域,然后应用去方块滤波器和其它滤波器。[0156]对于以下情况,禁用对预测信号进行正向整形:[0157]当前块是帧内编解码的[0158]当前块被编解码为cpr(当前图片参考,也被称为帧内块复制,ibc)[0159]当前块被编解码为组合的帧间帧内模式(combinedinter‑intramode,ciip),并且对帧内预测块禁用正向整形。[0160]3.由各种实施例解决的问题的示例[0161]在cpr/ibc的当前设计中,存在一些问题。[0162]1)参考区域动态改变,这使得编码器/解码器处理复杂。[0163]2)容易生成无效块矢量并且难以检查,这使得编码器和解码器都复杂。[0164]3)不规则的参考区域导致块矢量的低效编解码。[0165]4)如何处理小于128×128的ctu尺寸不清楚。[0166]5)在bv是有效还是无效的确定过程中,对于色度块,判决基于亮度样点的可用性,这可能导致由于双树分割结构的错误判决。[0167]4.示例实施例[0168]在一些实施例中,常规缓冲区可以用于cpr/ibc块以得到参考。[0169]函数isrec(x,y)被定义为指示像素(x,y)是否已经被重构并由ibc模式参考。当(x,y)在图片外、在不同的条带/片/区块(brick)外时,isrec(x,y)返回假(false);当(x,y)未被重构时,isrec(x,y)返回假。在另一示例中,当样点(x,y)已经被重构但满足一些其它条件时,它也可以被标记为不可用,诸如在参考区域外/在不同的vpdu中,并且isrec(x,y)返回假。[0170]函数isrec(c,x,y)被定义为指示分量c的样点(x,y)是否可用。例如,如果样点(x,y)还未被重构,则它被标记为不可用。在另一示例中,当样点(x,y)已经被重构但满足一些其它条件时,它也可以被标记为不可用,诸如在图片外/在不同的条带/片/区块中/在不同的vpdu中、在允许的参考区域外。当样点(x,y)不可用时,isrec(c,x,y)返回假,否则返回真(true)。[0171]在下面的讨论中,参考样点可以是重构样点。注意,“像素缓冲区”可以响应于“一个颜色分量的缓冲区”或“多个颜色分量的缓冲区”。[0172]用于cpr/ibc的参考缓冲区[0173]1.提出使用m×n像素缓冲区来存储用于cpr/ibc的亮度参考样点。[0174]a.在一个示例中,缓冲区尺寸为64×64。[0175]b.在一个示例中,缓冲区尺寸为128×128。[0176]c.在一个示例中,缓冲区尺寸为64×128。[0177]d.在一个示例中,缓冲区尺寸为128×64。[0178]e.在一个示例中,n等于ctu的高度。[0179]f.在一个示例中,n=nh,其中h是ctu的高度,n是正整数。[0180]g.在一个示例中,m等于ctu的宽度。[0181]h.在一个示例中,m=mw,其中w是ctu的宽度,m是正整数。[0182]i.在一个示例中,缓冲区尺寸不等于ctu尺寸,诸如96×128或128×96。[0183]j.在一个示例中,缓冲区尺寸等于ctu尺寸。[0184]k.在一个示例中,m=mw并且n=h,其中w和h是ctu的宽度和高度,m是正整数。[0185]l.在一个示例中,m=w并且n=nh,其中w和h是ctu的宽度和高度,n是正整数。[0186]m.在一个示例中,m=mw并且n=nh,其中w和h是ctu的宽度和高度,m和n是正整数。[0187]n.在以上示例中,m和n可以取决于ctu尺寸。[0188]i.在一个示例中,当ctu尺寸为128×128时,m=1并且n=1。[0189]ii.在一个示例中,当ctu尺寸为64×64时,m=4并且n=1。[0190]iii.在一个示例中,当ctu尺寸为32×32时,m=16并且n=1。[0191]iv.在一个示例中,当ctu尺寸为16×16时,m=64并且n=1。[0192]o.可替代地,缓冲区尺寸对应于ctu尺寸。[0193]p.可替代地,缓冲区尺寸对应于虚拟管道数据单元(vpdu)尺寸。[0194]q.可以从编码器向解码器信令通知m和/或n,诸如在vps/sps/pps/图片头/条带头/片组头中。[0195]2.在标准中定义的不同简表/级别/层级中,m和/或n可以不同。提出使用另一个mc×nc像素缓冲区来存储用于cpr/ibc的色度参考样点。[0196]a.在一个示例中,对于4:2:0视频,mc=m/2并且nc=n/2[0197]b.在一个示例中,对于4:4:4视频,mc=m并且nc=n[0198]c.在一个示例中,对于4:2:2视频,mc=m并且nc=n/2[0199]d.可替代地,mc和nc可以独立于m和n。[0200]e.在一个示例中,色度缓冲区包括两个通道,对应于cb和cr。[0201]f.在一个示例中,mc=m并且nc=n。[0202]3.提出使用m×n样点缓冲区来存储用于cpr/ibc的rgb参考样点。[0203]a.在一个示例中,缓冲区尺寸为64×64。[0204]b.在一个示例中,缓冲区尺寸为128×128。[0205]c.在一个示例中,缓冲区尺寸为64×128。[0206]d.在一个示例中,缓冲区尺寸为128×64。[0207]e.可替代地,缓冲区尺寸对应于ctu尺寸。[0208]f.可替代地,缓冲区尺寸对应于虚拟管道数据单元(vpdu)尺寸。[0209]4.提出缓冲区可以存储环路滤波之前的重构像素。环路滤波可以指去方块滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、样点自适应偏移(sampleadaptiveoffset,sao)、跨分量alf或任何其它滤波器。[0210]a.在一个示例中,缓冲区可以存储当前ctu中的样点。[0211]b.在一个示例中,缓冲区可以存储当前ctu之外的样点。[0212]c.在一个示例中,缓冲区可以存储来自当前图片的任何部分的样点。[0213]d.在一个示例中,缓冲区可以存储来自其它图片的样点。[0214]5.提出缓冲区可以存储环路滤波之后的重构像素。环路滤波可以指去方块滤波器、自适应环路滤波器(alf)、样点自适应偏移(sao)、跨分量alf或任何其它滤波器。[0215]a.在一个示例中,缓冲区可以存储当前ctu中的样点。[0216]b.在一个示例中,缓冲区可以存储当前ctu之外的样点。[0217]c.在一个示例中,缓冲区可以存储来自当前图片的任何部分的样点。[0218]d.在一个示例中,缓冲区可以存储来自其它图片的样点。[0219]6.提出缓冲区可以存储环路滤波之前的重构样点和环路滤波之后的重构样点两者。环路滤波可以指去方块滤波器、自适应环路滤波器(alf)、样点自适应偏移(sao)、跨分量alf或任何其它滤波器。[0220]a.在一个示例中,缓冲区可以存储来自当前图片的样点和来自其它图片的样点两者,取决于这些样点的可用性。[0221]b.在一个示例中,来自其它图片的参考样点来自环路滤波之后的重构样点。[0222]c.在一个示例中,来自其它图片的参考样点来自环路滤波之前的重构样点。[0223]7.提出缓冲区存储具有给定的比特深度(bit‑depth)的样点,其中该给定的比特深度可以不同于编解码视频数据的比特深度。[0224]a.在一个示例中,重构缓冲区/编解码视频数据的比特深度大于存储在缓冲区中的ibc参考样点的比特深度。[0225]b.在一个示例中,即使当内部比特深度不同于视频序列的输入比特深度时,诸如(10比特vs8比特),ibc参考样点也被存储为与输入比特深度对齐。[0226]c.在一个示例中,比特深度与重构缓冲区的比特深度相同。[0227]d.在一个示例中,比特深度与输入图像/视频的比特深度相同。[0228]e.在一个示例中,比特深度与预定义数字相同。[0229]f.在一个示例中,比特深度取决于标准的简表。[0230]g.在一个示例中,比特深度或与输出比特深度/输入比特深度/内部比特深度相比的比特深度差可以在sps/pps/序列头/图片头/条带头/片组头/片头或其它种类的视频数据单元中被信令通知。[0231]h.提出的方法可以与在其它项目符合中提到的提出的缓冲区定义一起被应用,可替代地,它们也可以适用于ibc的现有设计。[0232]i.缓冲区的每个颜色分量的比特深度可以不同。[0233]缓冲区初始化[0234]8.提出用给定值初始化缓冲区[0235]a.在一个示例中,缓冲区用给定值进行初始化。[0236]i.在一个示例中,给定值可以取决于输入比特深度和/或内部比特深度。[0237]ii.在一个示例中,缓冲区用中间灰度(mid‑grey)值(例如,8比特信号为128,或者10比特信号为512)进行初始化。[0238]iii.在一个示例中,当ilr被使用时,缓冲区用forwardlut(m)进行初始化。例如m=1<<(bitdepth‑1)。[0239]b.可替代地,缓冲区用在sps/vps/aps/pps/序列头/片组头/图片头/片/ctu/编解码单元/vpdu/区域中信令通知的值进行初始化。[0240]c.在一个示例中,可以从先前解码的图片或条带或ctu行或ctu或cu的样点推导给定值。[0241]d.对于不同的颜色分量,给定值可以不同。[0242]9.可替代地,提出用来自先前编解码的块的解码像素初始化缓冲区。[0243]a.在一个示例中,解码像素是环路滤波之前的那些解码像素。[0244]b.在一个示例中,当缓冲区尺寸为ctu时,如果可用,则缓冲区用先前解码的ctu的解码像素进行初始化。[0245]c.在一个示例中,当缓冲区尺寸为64×64时,如果可用,则其缓冲区尺寸用先前解码的64×64块的解码像素进行初始化。[0246]d.此外,可替代地,如果没有先前编解码的块可用,则可以应用项目符号8中的方法。[0247]对缓冲区的参考[0248]10.对于使用缓冲区中的像素作为参考的块,它可以使用缓冲区内的位置(x,y)来指示在哪里得到参考,其中,x=0,1,2,…,m‑1;y=0,1,2,…,n‑1。[0249]11.可替代地,参考位置可以被表示为l=y*m+x,l=0,1,…,m*n‑1。[0250]12.将与当前ctu相关的块的左上角位置表示为(x0,y0),可以将块矢量(bvx,bvy)=(x‑x0,y‑y0)传送到解码器,以指示在缓冲区中在哪里得到参考。[0251]13.可替代地,块矢量(bvx,bvy)可以被定义为(x‑x0+tx,y‑y0+ty),其中tx和ty是预定义的偏移。[0252]14.对于任何像素(x0,y0)和(bvx,bvy),其在缓冲区中的参考可以在(x0+bvx,y0+bvy)处被找到。[0253]a.在一个示例中,当(x0+bvx,y0+bvy)在缓冲区之外时,它将被裁剪(clip)到边界。[0254]b.可替代地,当(x0+bvx,y0+bvy)在缓冲区之外时,其参考值被预定义为给定值,例如中间灰度。[0255]c.可替代地,参考位置被定义为((x0+bvx)modm,(y0+bvy)modn),使得它总是在缓冲区内。[0256]15.对于任何像素(x0,y0)和(bvx,bvy),当(x0+bvx,y0+bvy)在缓冲区之外时,可以从缓冲区中的值推导其参考值。[0257]a.在一个示例中,该值是从缓冲区中的样点((x0+bvx)modm,(y0+bvy)modn)推导的。[0258]b.在一个示例中,该值是从缓冲区中的样点((x0+bvx)modm,clip(y0+bvy,0,n‑1))推导的。[0259]c.在一个示例中,该值是从缓冲区中的样点(clip(x0+bvx,0,m‑1),(y0+bvy)modn)推导的。[0260]d.在一个示例中,该值是从缓冲区中的样点(clip(x0+bvx,0,m‑1),clip(y0+bvy,0,n‑1))推导的。[0261]16.它可能不允许缓冲区范围之外的特定坐标。[0262]a.在一个示例中,对于相对于ctu的左上角的任何像素(x0,y0)和块矢量(bvx,bvy),比特流约束是y0+bvy应该在范围[0,…,n‑1]中。[0263]b.在一个示例中,对于相对于ctu的左上角的任何像素(x0,y0)和块矢量(bvx,bvy),比特流约束是x0+bvx应该在范围[0,…,m‑1]中。[0264]c.在一个示例中,对于相对于ctu的左上角的任何像素(x0,y0)和块矢量(bvx,bvy),比特流约束是y0+bvy应该在范围[0,…,n‑1]中,并且x0+bvx应该在范围[0,…,m‑1]中。[0265]17.当一个块的信令通知的或推导的块矢量指向缓冲区之外的某处时,可以根据缓冲区来应用填充。[0266]a.在一个示例中,缓冲区之外的任何样点的值用预定义值进行定义。[0267]i.在一个示例中,该值可以是1<<(bitdepth‑1),例如,8比特信号为128,并且10比特信号为512。[0268]ii.在一个示例中,当ilr被使用时,该值可以是forwardlut(m)。例如m=1<<(bitdepth‑1)。[0269]iii.可替代地,预定义值的指示可以在sps/pps/序列头/图片头/条带头/片组/片/ctu/cu级别被信令通知或指示。[0270]b.在一个示例中,缓冲区之外的任何样点被定义为缓冲区中的最近样点的值。[0271]18.处理缓冲区外参考的方法可以在水平和垂直方向上不同,或者可以根据当前块的位置(例如,是否更靠近图片边界)而不同。[0272]a.在一个示例中,当y0+bvy在[0,n‑1]之外时,(x0+bvx,y0+bvy)的样点值被指定为预定义值。[0273]b.在一个示例中,当x0+bvx在[0,m‑1]之外时,(x0+bvx,y0+bvy)的样点值被指定为预定义值。[0274]c.可替代地,(x0+bvx,y0+bvy)的样点值被指定为((x0+bvx)modm,y0+bvy)的样点值,如果((x0+bvx)modm,y0+bvy)仍然在缓冲区之外,则其可以调用其它方法来进一步推导该值。[0275]d.可替代地,(x0+bvx,y0+bvy)的样点值被指定为(x0+bvx,(y0+bvy)modn)的样点值,如果(x0+bvx,(y0+bvy)modn)仍然在缓冲区之外,则其可以调用其它方法来进一步推导该值。[0276]块矢量表示[0277]19.块矢量(bvx,bvy)的每个分量或分量中的一个可以被归一化到特定范围。[0278]a.在一个示例中,bvx可以由(bvxmodm)替换。[0279]b.可替代地,bvx可以由((bvx+x)modm)‑x替换,其中x是预定义值。[0280]i.在一个示例中,x是64。[0281]ii.在一个示例中,x是m/2;[0282]iii.在一个示例中,x是块相对于当前ctu的水平坐标。[0283]c.在一个示例中,bvy可以由(bvymodn)替换。[0284]d.可替代地,bvy可以由((bvy+y)modn)‑y替换,其中y是预定义值。[0285]i.在一个示例中,y是64。[0286]ii.在一个示例中,y是n/2;[0287]iii.在一个示例中,y是块相对于当前ctu的垂直坐标。[0288]20.bvx和bvy可以具有不同的归一化范围。[0289]21.块矢量差(bvdx,bvdy)可以被归一化到特定范围。[0290]a.在一个示例中,bvdx可以由(bvdxmodm)替换,其中函数mod返回余数。[0291]b.可替代地,bvdx可以由((bvdx+x)modm)‑x替换,其中x是预定义值。[0292]i.在一个示例中,x是64。[0293]ii.在一个示例中,x是m/2;[0294]c.在一个示例中,bvy可以由(bvdymodn)替换。[0295]d.可替代地,bvy可以由((bvdy+y)modn)‑y替换,其中y是预定义值。[0296]i.在一个示例中,y是64。[0297]ii.在一个示例中,y是n/2;[0298]22.bvdx和bvdy可以具有不同的归一化范围。[0299]块矢量的有效性检查[0300]将ibc缓冲区的宽度和高度表示为wbuf和hbuf。对于从相对于图片的左上角的(x,y)开始的w×h块(可以是亮度块、色度块、cu、tu、4×4、2×2或其它子块),以下可以适用于判断块矢量(bvx,bvy)是否有效。假定wpic和hpic为图片的宽度和高度;并且wctu和hctu是ctu的宽度和高度。函数floor(x)返回不大于x的最大整数。函数isrec(x,y)返回样点(x,y)是否已经被重构。[0301]23.即使任何参考位置在图片边界之外,块矢量(bvx,bvy)也可以被设置为有效。[0302]a.在一个示例中,即使x+bvx<0,块矢量也可以被设置为有效。[0303]b.在一个示例中,即使x+w+bvx>wpic,块矢量也可以被设置为有效。[0304]c.在一个示例中,即使y+bvy<0,块矢量也可以被设置为有效。[0305]d.在一个示例中,即使y+h+bvy>hpic,块矢量也可以被设置为有效。[0306]24.即使任何参考位置在当前ctu行之外,块矢量(bvx,bvy)也可以被设置为有效。[0307]a.在一个示例中,即使y+bvy<floor(y/hctu)*hctu,块矢量也可以被设置为有效。[0308]b.在一个示例中,即使y+h+bvy>=floor(y/hctu)*hctu+hctu,块矢量也可以被设置为有效。[0309]25.即使任何参考位置在当前ctu和左侧(n‑1)个ctu之外,块矢量(bvx,bvy)也可以被设置为有效,其中n是可以被用作用于ibc的参考区域的ctu(包括或不包括当前ctu)的数量。[0310]a.在一个示例中,即使x+bvx<floor(x/wctu)*wctu‑(n‑1)*wctu,块矢量也可以被设置为有效。[0311]b.在一个示例中,即使x+w+bvx>floor(x/wctu)*wctu+wctu,块矢量也可以被设置为有效。[0312]26.即使特定样点还未被重构,块矢量(bvx,bvy)也可以被设置为有效。[0313]a.在一个示例中,即使isrec(x+bvx,y+bvy)为假,块矢量也可以被设置为有效。[0314]b.在一个示例中,即使isrec(x+bvx+w‑1,y+bvy)为假,块矢量也可以被设置为有效。[0315]c.在一个示例中,即使isrec(x+bvx,y+bvy+h‑1)为假,块矢量也可以被设置为有效。[0316]d.在一个示例中,即使isrec(x+bvx+w‑1,y+bvy+h‑1)为假,块矢量也可以被设置为有效。[0317]27.当块不是ctu行中的第一个ctu时,块矢量(bvx,bvy)可以总是被设置为有效。[0318]a.可替代地,块矢量可以总是被设置为有效。[0319]28.当满足所有以下3个条件时,块矢量(bvx,bvy)可以总是被设置为有效[0320]·x+bvx>=0[0321]·y+bvy>=floor(y/hctu)[0322]·isrec(x+bvx+w‑1,y+bvy+h‑1)==真[0323]a.可替代地,当针对ctu行中的第一个ctu的块满足所有三个条件时,块矢量可以总是被设置为有效。[0324]29.当块矢量(bvx,bvy)有效时,块的样点复制可以基于块矢量。[0325]a.在一个示例中,样点(x,y)的预测可以根据((x+bvx)%wbuf,(y+bvy)%hbuf)。[0326]缓冲区更新[0327]30.当编解码新图片或片时,缓冲区可以被重置。[0328]a.术语“重置”可以指缓冲区被初始化。[0329]b.术语“重置”可以指缓冲区中的所有样点/像素被设置为给定值(例如,0或‑1)。[0330]31.当完成vpdu的编解码时,可以用vpdu的重构值更新缓冲区。[0331]32.当完成ctu的编解码时,可以用ctu的重构值更新缓冲区。[0332]a.在一个示例中,当缓冲区未满时,可以顺序地ctu接ctu地更新缓冲区。[0333]b.在一个示例中,当缓冲区已满时,对应于最老(oldest)的ctu的缓冲区域将被更新。[0334]c.在一个示例中,当m=mw且n=h(w和h是ctu尺寸;m和n是缓冲区尺寸)并且先前更新的区域从(kw,0)开始时,要更新的下一个起始位置将是((k+1)wmodm,0)。[0335]33.缓冲区可以在每个ctu行的开始处被重置。[0336]a.可替代地,缓冲区可以在开始解码每个ctu时被重置。[0337]b.可替代地,缓冲区可以在开始解码一个片时被重置。[0338]c.可替代地,缓冲区可以在开始解码一个片组/图片时被重置。[0339]34.当完成对从(x,y)开始的块进行编解码时,将用根据块的重构更新从(x,y)开始的缓冲区的对应区域。[0340]a.在一个示例中,(x,y)是相对于ctu的左上角的位置。[0341]35.当完成对相对于图片的块进行编解码时,将用根据块的重构更新缓冲区的对应区域。[0342]a.在一个示例中,可以用相对于图片的左上角的位置(x,y)的重构像素值更新缓冲区中的位置(xmodm,ymodn)处的值。[0343]b.在一个示例中,可以用相对于当前片的左上角的位置(x,y)的重构像素值更新缓冲区中的位置(xmodm,ymodn)处的值。[0344]c.在一个示例中,可以用相对于当前ctu行的左上角的位置(x,y)的重构像素值更新缓冲区中的位置(xmodm,ymodn)处的值。[0345]d.在一个示例中,可以用比特深度对齐之后的重构像素值更新缓冲区中的值。[0346]36.当完成对从(x,y)开始的块进行编解码时,将用根据块的重构更新从(xb,yb)开始的缓冲区的对应区域,其中(xb,yb)和(x,y)是两个不同坐标。[0347]a.在一个示例中,(x,y)是与ctu的左上角相关的位置,并且(xb,yb)是(x+update_x,y+update_y),其中update_x和update_y指向缓冲区中的可更新位置。[0348]37.对于以上示例,块的重构值可以指示应用滤波器(例如,去方块滤波器)之前的重构值。[0349]a.可替代地,块的重构值可以指示应用滤波器(例如,去方块滤波器)之后的重构值。[0350]38.当缓冲区根据重构样点而更新时,重构样点可以在被存储之前首先被修改,诸如样点比特深度可以被改变。[0351]a.在一个示例中,缓冲区用与缓冲区的比特深度进行比特深度对齐之后的重构样点值进行更新。[0352]b.在一个示例中,缓冲区值根据值{p+[1<<(b‑1)]}>>b而更新,其中p是重构样点值,b是预定义的比特移位值。[0353]c.在一个示例中,缓冲区值根据值clip({p+[1<<(b‑1)]}>>b,0,(1<<bitdepth)‑1)而更新,其中p是重构样点值,b是预定义的比特移位值,bitdepth是缓冲区比特深度。[0354]d.在一个示例中,缓冲区值根据值{p+[1<<(b‑1)‑1]}>>b而更新,其中p是重构样点值,b是预定义的比特移位值。[0355]e.在一个示例中,缓冲区值根据值clip({p+[1<<(b‑1)‑1]}>>b,0,(1<<bitdepth)‑1)而更新,其中p是重构样点值,b是预定义的比特移位值,bitdepth是缓冲区比特深度。[0356]f.在一个示例中,缓冲区值根据值p>>b而更新。[0357]g.在一个示例中,缓冲区值根据值clip(p>>b,0,(1<<bitdepth)‑1)而更新,其中bitdepth是缓冲区比特深度。[0358]h.在以上示例中,b可以是重构比特深度减去输入样点比特深度。39.当使用缓冲区样点来形成预测时,可以应用预处理。[0359]a.在一个示例中,预测值是p<<b,其中p是缓冲区中的样点值,b是预定义值。[0360]b.在一个示例中,预测值是clip(p<<b,0,1<<bitdepth),其中bitdepth是重构样点的比特深度。[0361]c.在一个示例中,预测值是(p<<b)+(1<<(bitdepth‑1)),其中p是缓冲区中的样点值,并且b是预定义值,bitdepth是重构样点的比特深度。[0362]d.在以上示例中,b可以是重构比特深度减去输入样点比特深度。[0363]40.缓冲区可以以给定的顺序被更新。[0364]a.在一个示例中,可以顺序地更新缓冲区。[0365]b.在一个示例中,可以根据重构的块的顺序来更新缓冲区。[0366]41.当缓冲区已满时,可以用最新的重构样点替换缓冲区中的样点。[0367]a.在一个示例中,样点可以以先进先出的方式被更新。[0368]b.在一个示例中,最老的样点将被替换。[0369]c.在一个示例中,样点可以被指定优先级并根据优先级而替换。[0370]d.在一个示例中,样点可以被标记为“长期”,使得其它样点将首先被替换。[0371]e.在一个示例中,可以与块一起传送标志,以指示高优先级。[0372]f.在一个示例中,可以与块一起传送数字,以指示优先级。[0373]g.在一个示例中,来自具有特定特性的重构块的样点将被指定更高的优先级,使得其它样点将首先被替换。[0374]i.在一个示例中,当在ibc模式下编解码的样点的百分比大于阈值时,块的所有样点可以被指定高优先级。[0375]ii.在一个示例中,当在调色板(palette)模式下编解码的样点的百分比大于阈值时,块的所有样点可以被指定高优先级。[0376]iii.在一个示例中,当在ibc或调色板模式下编解码的样点的百分比大于阈值时,块的所有样点可以被指定高优先级。[0377]iv.在一个示例中,当在变换跳过模式下编解码的样点的百分比大于阈值时,块的所有样点可以被指定高优先级。[0378]v.阈值可以根据块尺寸、颜色分量、ctu尺寸而不同。[0379]vi.阈值可以在sps/pps/序列头/条带头/片组/片级别/区域中被信令通知。[0380]h.在一个示例中,缓冲区已满可能意味着缓冲区中的可用样点的数量等于或大于给定阈值。[0381]i.在一个示例中,当缓冲区中的可用样点的数量等于或大于64×64×3个亮度样点时,缓冲区可以被确定为已满。[0382]可选缓冲区组合[0383]42.代替总是使用先前编解码的三个64×64块作为参考区域,提出基于当前块(或vpdu)的位置来自适应地改变它。[0384]a.在一个示例中,当对64×64块进行编解码/解码时,先前3个64×64块可以被用作参考。与图2相比,可以应用先前64×64块的更多种类的组合。图2示出了先前64×64块的不同组合的示例。[0385]43.代替使用z扫描顺序,反而可以利用垂直扫描顺序。[0386]a.在一个示例中,当一个块以z扫描顺序被划分为具有索引0…3的4个vpdu时,编码/解码顺序是0、2、1、3。[0387]b.在一个示例中,当对64×64块进行编解码/解码时,先前3个64×64块可以被用作参考。与图2相比,可以应用64×64块的更多种类的编解码/解码顺序。图4示出了64×64块的不同编解码/解码顺序的示例。[0388]c.可替代地,以上方法可以仅被应用于屏幕内容编解码。[0389]d.可替代地,仅当对一个片/片组/图片启用cpr时,才可以应用以上方法。[0390]e.可替代地,仅当对一个ctu或一个ctu行启用cpr时,才可以应用以上方法。[0391]虚拟ibc缓冲区[0392]下面,vpdu的宽度和高度在亮度样点中分别被表示为wvpdu(例如,64)和hvpdu(例如,64)。可替代地,wvpdu和/或hvpdu可以表示其它视频单元(例如,ctu)的宽度和/或高度。[0393]44.可以维护虚拟缓冲区以保持跟踪ibc参考区域状态。[0394]a.在一个示例中,虚拟缓冲区的尺寸为mwvpdu×nhvpdu。[0395]i.在一个示例中,m等于3并且n等于2。[0396]ii.在一个示例中,m和/或n可以取决于图片分辨率、ctu尺寸。[0397]iii.在一个示例中,m和/或n可以被信令通知或预定义。[0398]b.在一个示例中,在以上项目符号和子项目符号中描述的方法可以被应用于虚拟缓冲区。[0399]c.在一个示例中,相对于图片/条带/片/区块的左上角的样点(x,y)可以被映射到(x%(mwvpdu),y%(nhvpdu))。[0400]45.阵列可以用于跟踪与虚拟缓冲区相关联的每个样点的可用性。[0401]a.在一个示例中,标志可以与虚拟缓冲区中的样点相关联,以指定缓冲区中的样点是否可以被用作ibc参考。[0402]b.在一个示例中,包含亮度样点和色度样点的每个4×4块可以共享标志,以指示与该块相关联的任何样点是否可以被用作ibc参考。[0403]c.在一个示例中,与3×2vpdu相对应的阵列(例如,每个4×4块可以共享相同的可用性标志)被维护,以跟踪ibc参考样点的可用性。[0404]d.在一个示例中,与4×2vpdu相对应的阵列(例如,每个4×4块可以共享相同的可用性标志)被维护,以跟踪ibc参考样点的可用性。[0405]46.在完成对vpdu或视频单元进行解码之后,与虚拟缓冲区相关联的特定样点可以被标记为不可用于ibc参考。[0406]a.在一个示例中,哪些样点可以被标记为不可用取决于最近解码的vpdu的位置。[0407]b.当一个样点被标记为不可用时,根据该样点的预测不被允许。[0408]i.可替代地,可以进一步应用其它方式(例如,使用默认值)来推导预测值以替换不可用的样点。[0409]47.可以记录最近解码的vpdu的位置,以帮助标识与虚拟缓冲区相关联的哪些样点可以被标记为不可用。[0410]a.在一个示例中,在开始解码vpdu时,与虚拟缓冲区相关联的特定样点可以根据最近解码的vpdu的位置而标记为不可用。[0411]i.在一个示例中,将(xprevvpdu,yprevvpdu)表示为相对于最近解码的vpdu的图片/条带/片/区块/其它视频处理单元的左上角的左上角位置,如果yprevvpdu%(nhvpdu)等于0,则特定位置(x,y)可以被标记为不可用。[0412]1.在一个示例中,x可以在一范围内,诸如[xprevvpdu‑2wvpdu+2mwvpdu)%mwvpdu,((xprevvpdu‑2wvpdu+2mwvpdu)%mwvpdu)‑1+wvpdu];[0413]2.在一个示例中,y可以在一范围内,诸如[yprevvpdu%(nhvpdu),(yprevvpdu%(nhvpdu))‑1+hvpdu];[0414]3.在一个示例中,x可以在一范围内,诸如[xprevvpdu‑2wvpdu+2mwvpdu)%mwvpdu,((xprevvpdu‑2wvpdu+2mwvpdu)%mwvpdu)‑1+wvpdu],并且y可以在一范围内,诸如[yprevvpdu%(nhvpdu),(yprevvpdu%(nhvpdu))‑1+hvpdu]。[0415]ii.在一个示例中,将(xprevvpdu,yprevvpdu)表示为相对于最近解码的vpdu的图片/条带/片/区块/其它视频处理单元的左上角的左上角位置,如果yprevvpdu%(nhvpdu)不等于0,则特定位置(x,y)可以被标记为不可用。[0416]1.在一个示例中,x可以在一范围内,诸如[xprevvpdu‑wvpdu+2mwvpdu)%mwvpdu,((xprevvpdu‑wvpdu+2mwvpdu)%mwvpdu)‑1+wvpdu];[0417]2.在一个示例中,y可以在一范围内,诸如[yprevvpdu%(nhvpdu),(yprevvpdu%(nhvpdu))‑1+hvpdu];[0418]3.在一个示例中,x可以在一范围内,诸如[xprevvpdu‑wvpdu+2mwvpdu)%mwvpdu,((xprevvpdu‑wvpdu+2mwvpdu)%mwvpdu)‑1+wvpdu],并且y可以在一范围内,诸如[yprevvpdu%(nhvpdu),(yprevvpdu%(nhvpdu))‑1+hvpdu]。[0419]48.当cu包含多个vpdu时,代替根据vpdu来应用ibc参考可用性标记过程,ibc参考可用性标记过程可以根据cu。[0420]a.在一个示例中,在开始解码包含多个vpdu的cu时,在cu内的vpdu被解码之前,ibc参考可用性标记过程可以被应用于每个vpdu。[0421]b.在这种情况下,128×64和64×128ibc块可能不被允许。[0422]i.在一个示例中,128×64和64×128cu的pred_mode_ibc_flag可能不被传送,并且可以被推断为等于0。[0423]49.对于参考块或子块,可能不需要检查右上角的参考可用性状态来判断与参考块相关联的块矢量是否有效。[0424]a.在一个示例中,将仅检查块/子块的左上角、左下角和右下角,以判断块矢量是否有效。[0425]50.ibc缓冲区尺寸可以取决于vpdu尺寸(其中,宽度/高度由vsize表示)和/或ctb/ctu尺寸(其中,宽度/高度由ctbsize表示)。[0426]a.在一个示例中,缓冲区的高度可以等于ctbsize。[0427]b.在一个示例中,缓冲区的宽度可以取决于min(ctbsize,64)。[0428]i.在一个示例中,缓冲区的宽度可以为(128*128/vsize,min(ctbsize,64))。[0429]51.ibc缓冲区可以包含像素范围之外的值,这指示该位置可能不可用于ibc参考,例如,不用于预测其它样点。[0430]a.样点值可以被设置为指示样点不可用的值。[0431]b.在一个示例中,该值可以是‑1。[0432]c.在一个示例中,该值可以是[0,1<<(internal_bit_depth)‑1]之外的任何值,其中internal_bit_depth是正整数值。例如,internal_bit_depth是用于对颜色分量的样点进行编码/解码的内部比特深度。[0433]d.在一个示例中,该值可以是[0,1<<(input_bit_depth)‑1]之外的任何值,其中input_bit_depth是正整数值。例如,input_bit_depth是用于对颜色分量的样点进行编码/解码的输入比特深度。[0434]52.用于ibc缓冲区中的样点的可用性标记可以取决于当前块的位置、当前块的尺寸、ctu/ctb尺寸和vpdu尺寸。在一个示例中,假定(xcb,ycb)表示块相对于图片的左上角的位置;ctbsize是ctu/ctb的尺寸(即,宽度和/或高度);vsize=min(ctbsize,64);wibcbuf和hibcbuf是ibc缓冲区宽度和高度。[0435]a.在一个示例中,如果(xcb%vsize)等于0并且(ycb%vsize)等于0,则ibc缓冲区中的特定的位置集合可以被标记为不可用。[0436]b.在一个示例中,当当前块尺寸小于vpdu尺寸,即min(ctbsize,64)时,标记为不可用的区域可以根据vpdu尺寸。[0437]c.在一个示例中,当当前块尺寸大于vpdu尺寸,即min(ctbsize,64)时,标记为不可用的区域可以根据cu尺寸。[0438]53.在开始解码相对于图片的左上角位置的视频单元(例如,vpdu(xv,yv))时,ibc缓冲区中的对应位置可以被设置为像素范围之外的值。[0439]a.在一个示例中,缓冲区中位置为(x%wibcbuf,y%hibcbuf)的缓冲区样点将被设置为值‑1,其中x=xv,…,xv+ctbsize‑1并且y=yv,…,yv+ctbsize‑1。其中,wibcbuf和hibcbuf是ibc缓冲区宽度和高度,ctbsize是ctu/ctb的宽度。[0440]i.在一个示例中,hibcbuf可以等于ctbsize。[0441]54.比特流一致性约束可以根据ibc缓冲区中的样点的值。[0442]a.在一个示例中,如果与ibc缓冲区中的块矢量相关联的参考块包含像素范围之外的值,则比特流可能是不合法的。[0443]55.可以根据ibc缓冲区中的可用性指示来设置比特流一致性约束。[0444]a.在一个示例中,如果映射在ibc缓冲区中的任何参考样点被标记为不可用于对块进行编码/解码,则比特流可能是不合法的。[0445]b.在一个示例中,当使用单树(singletree)时,如果映射在ibc缓冲区中用于对块进行编码/解码的任何亮度参考样点被标记为不可用,则比特流可能是不合法的。[0446]c.一致性比特流可以满足对于ibc编解码块,相关联的块矢量可以指向映射在ibc缓冲区中的参考块,并且位于ibc缓冲区中用于对块进行编码/解码的每个亮度参考样点应当被标记为可用(例如,样点的值在范围[k0,k1]内,其中例如,k0被设置为0,并且k1被设置为(1<<bitdepth‑1),其中bitdepth是内部比特深度或输入比特深度)。[0447]56.比特流一致性约束可以取决于分割树类型和当前cu的编解码treetype(树类型)。[0448]a.在一个示例中,如果在高级别(例如,条带/图片/区块/片)中允许双树(dualtree)并且当前视频块(例如,cu/pu/cb/pb)用单树进行编解码,则比特流约束可能需要检查映射在ibc缓冲区中的所有分量的位置是否被标记为不可用。[0449]b.在一个示例中,如果在高级别(例如,条带/图片/区块/片)中允许双树并且当前亮度视频块(例如,cu/pu/cb/pb)用双树进行编解码,则比特流约束可以忽略映射在ibc缓冲区中的色度分量的位置是否被标记为不可用。[0450]i.可替代地,在这种情况下,比特流约束仍然可以检查映射在ibc缓冲区中的所有分量的位置是否被标记为不可用。[0451]c.在一个示例中,如果使用单树,则比特流约束可以忽略映射在ibc缓冲区中的色度分量的位置是否被标记为不可用。[0452]对当前vtm设计的改进[0453]57.用于ibc的预测可能具有比重构更低的精确度。[0454]a.在一个示例中,预测值根据值clip{{p+[1<<(b‑1)]}>>b,0,(1<<bitdepth)‑1}<<b,其中p是重构样点值,b是预定义的比特移位值,bitdepth是预测样点比特比特深度。[0455]b.在一个示例中,预测值根据值clip{{p+[1<<(b‑1)‑1]}>>b,0,(1<<bitdepth)‑1}<<b,其中p是重构样点值,b是预定义的比特移位值。[0456]c.在一个示例中,预测值根据值((p>>b)+(1<<(bitdepth‑1)))<<b,其中bitdepth是预测样点比特比特深度。[0457]d.在一个示例中,预测值根据值(clip((p>>b),0,(1<<(bitdepth‑b)))+(1<<(bitdepth‑1)))<<b,其中bitdepth是预测样点比特比特深度。[0458]e.在一个示例中,取决于ilr是否被应用,预测值以不同的方式被裁剪。[0459]f.在以上示例中,b可以是重构比特深度减去输入样点比特深度。[0460]g.在一个示例中,比特深度或与输出比特深度/输入比特深度/内部比特深度相比的比特深度差可以在sps/pps/序列头/图片头/条带头/片组头/片头或其它种类的视频数据单元中被信令通知。[0461]58.ibc的预测的一部分可能具有更低的精确度,并且另一部分具有与重构相同的精确度。[0462]a.在一个示例中,允许的参考区域可以包含具有不同精确度(例如,比特深度)的样点。[0463]b.在一个示例中,来自除正在被解码的当前64×64块之外的其它64×64块的参考具有低精确度,并且来自当前64×64块的参考具有与重构相同的精确度。[0464]c.在一个示例中,来自除正在被解码的当前ctu之外的其它ctu的参考具有低精确度,并且来自当前ctu的参考具有与重构相同的精确度。[0465]d.在一个示例中,来自特定的颜色分量集合的参考具有低精确度,并且来自其它颜色分量的参考具有与重构相同的精确度。[0466]59.当ctu尺寸为m×m并且参考区域尺寸为nm×nm时,参考区域是ctu行中最近的可用的n×nctu。[0467]a.在一个示例中,当参考区域尺寸为128×128并且ctu尺寸为64×64时,ctu行中最近的可用的4个ctu可以用于ibc参考。[0468]b.在一个示例中,当参考区域尺寸为128×128并且ctu尺寸为32×32时,ctu行中最近的可用的16个ctu可以用于ibc参考。[0469]60.当ctu尺寸为m并且参考区域尺寸为nm时,参考区域是ctu行/片中最近的可用的n‑1个ctu。[0470]a.在一个示例中,当参考区域尺寸为128×128或256×64并且ctu尺寸为64×64时,ctu行中最近的可用的3个ctu可以用于ibc参考。[0471]b.在一个示例中,当参考区域尺寸为128×128或512×32并且ctu尺寸为32×32时,ctu行中最近的可用的15个ctu可以用于ibc参考。[0472]61.当ctu尺寸为m,vpdu尺寸为km,并且参考区域尺寸为nm时,参考区域是ctu行/片中最近的可用的n‑k个ctu。[0473]a.在一个示例中,ctu尺寸为64×64,vpdu尺寸也为64×64,参考区域尺寸为128×128,ctu行中最近的3个ctu可以用于ibc参考值。[0474]b.在一个示例中,ctu尺寸为32×32,vpdu尺寸也为64×64,参考区域尺寸为128×128,ctu行中最近的(16‑4)=12个ctu可以用于ibc参考。[0475]62.对于使用ibc的左上角为(x,y)的w×h块,存在使参考块远离特定区域以用于内存重用的约束,其中w和h是当前块的宽度和高度。[0476]a.在一个示例中,当ctu尺寸为128×128并且(x,y)=(m×64,n×64)时,参考块不能与从((m‑2)×64,n×64)开始的64×64区域重叠。[0477]b.在一个示例中,当ctu尺寸为128×128时,参考块不能与左上角为(x‑128,y)的w×h块重叠。[0478]c.在一个示例中,当ctu尺寸为128×128时,(x+bvx,y+bvy)不能在左上角为(x‑128,y)的w*h块内,其中bvx和bvy表示当前块的块矢量。[0479]d.在一个示例中,当ctu尺寸为m×m并且ibc缓冲区尺寸为k×m×m时,参考块不能与左上角为(x‑k×m,y)的w×h块重叠,其中bvx和bvy表示当前块的块矢量。[0480]e.在一个示例中,当ctu尺寸为m×m并且ibc缓冲区尺寸为k×m×m时,(x+bvx,y+bvy)不能在左上角为(x‑k×m,y)的w×h块内,其中bvx和bvy表示当前块的块矢量。[0481]63.当ctu尺寸不为m×m并且参考区域尺寸为nm×nm时,参考区域是ctu行中最近的可用的n×n‑1ctu。[0482]a.在一个示例中,当参考区域尺寸为128×128并且ctu尺寸为64×64时,ctu行中最近的可用的3个ctu可以用于ibc参考。[0483]b.在一个示例中,当参考区域尺寸为128×128并且ctu尺寸为32×32时,ctu行中最近的可用的15个ctu可以用于ibc参考。[0484]64.对于从(2m*64,2n*64)开始的64×64块(即,128×128ctu中的左上角64×64块)内的cu,其ibc预测可以根据从((2m‑2)*64,2n*64)开始的64×64块、从((2m‑1)*64,2n*64)开始的64×64块、从((2m‑1)*64,(2n+1)*64)开始的64×64块和当前64×64块中的重构样点。[0485]65.对于从((2m+1)*64,(2n+1)*64)开始的64×64块(即,128×128ctu中的右下角64×64块)内的cu,其ibc预测可以根据当前128×128ctu。[0486]66.对于从((2m+1)*64,2n*64)开始的64×64块(即,128×128ctu中的右上角64×64块)内的cu,其ibc预测可以根据从((2m‑1)*64,2n*64)开始的64×64块、从((2m‑1)*64,(2n+1)*64)开始的64×64块、从(2m*64,2n*64)开始的64×64块和当前64×64块中的重构样点。[0487]a.可替代地,如果从(2m*64,(2n+1)*64)开始的64×64块已经被重构,则ibc预测可以根据从((2m‑1)*64,2n*64)开始的64×64块、从(2m*64,2n*64)开始的64×64块、从(2m*64,(2n+1)*64)开始的64×64块和当前64×64块中的重构样点。[0488]67.对于从(2m*64,(2n+1)*64)开始的64×64块(即,128×128ctu中的左下角64×64块)内的cu,其ibc预测可以根据从((2m‑1)*64,(2n+1)*64)开始的64×64块、从(2m*64,2n*64)开始的64×64块、从((2m+1)*64,2n*64)开始的64×64块和当前64×64块中的重构样点。[0489]a.可替代地,如果从((2m+1)*64,2n*64)开始的64×64块还未被重构,则ibc预测可以根据从((2m‑1)*64,2n*64)开始的64×64块、从((2m‑1)*64,(2n+1)*64)开始的64×64块、从(2m*64,2n*64)开始的64×64块和当前64×64块中的重构样点。[0490]68.提出基于当前cu属于哪些64×64块来调整参考区域。[0491]a.在一个示例中,对于从(x,y)开始的cu,当(y>>6)&1==0时,从((x>>6<<6)‑128,y>>6<<6)和((x>>6<<6)‑64,y>>6<<6)开始的两个或多达两个先前的64×64块可以由ibc模式参考。[0492]b.在一个示例中,对于从(x,y)开始的cu,当(y>>6)&1==1时,从((x>>6<<6)‑64,y>>6<<6)开始的一个先前的64×64块可以由ibc模式参考。[0493]69.对于从(x,y)开始并具有块矢量(bvx,bvy)的块,如果isrec(((x+bvx)>>6<<6)+128‑(((y+bvy)>>6)&1)*64+(x%64),((y+bvy)>>6<<6)+(y%64))为真,则块矢量无效。[0494]a.在一个示例中,该块是亮度块。[0495]b.在一个示例中,该块是4:4:4格式的色度块。[0496]c.在一个示例中,该块包含亮度分量和色度分量两者。[0497]70.对于从(x,y)开始并具有块矢量(bvx,bvy)的4:2:0格式的色度块,如果isrec(((x+bvx)>>5<<5)+64‑(((y+bvy)>>5)&1)*32+(x%32),((y+bvy)>>5<<5)+(y%32))为真,则块矢量无效。[0498]71.bv对于分量c的块是否无效的确定可以依赖于分量x的样点的可用性,而不是仅检查亮度样点。[0499]a.对于分量c从(x,y)开始并具有块矢量(bvx,bvy)的块,如果isrec(c,((x+bvx)>>6<<6)+128‑(((y+bvy)>>6)&1)*64+(x%64),((y+bvy)>>6<<6)+(y%64))为真,则块矢量可以被视为无效。[0500]i.在一个示例中,该块是亮度块(例如,c是亮度分量,或对于rgb编解码是g分量)。[0501]ii.在一个示例中,该块是4:4:4格式的色度块(例如,c是cb或cr分量,或对于rgb编解码是b/r分量)。[0502]iii.在一个示例中,可以检查亮度分量和色度分量两者的样点的可用性,例如,该块包含亮度分量和色度分量两者。[0503]b.对于从分量c的(x,y)开始并具有块矢量(bvx,bvy)的4:2:0格式的色度块,如果isrec(c,((x+bvx)>>5<<5)+64‑(((y+bvy)>>5)&1)*32+(x%32),((y+bvy)>>5<<5)+(y%32))为真,则块矢量可以被视为无效。[0504]c.对于从分量c的(x,y)开始并具有块矢量(bvx,bvy)的色度块或子块,如果色度分量的isrec(c,x+bvx+chroma_ctu_size,y)为真,则块矢量可以被视为无效,其中chroma_ctu_size是色度分量的ctu尺寸。[0505]i.在一个示例中,对于4:2:0格式,chroma_ctu_size可以为64。[0506]ii.在一个示例中,色度子块可以是4:2:0格式的2×2块。[0507]iii.在一个示例中,色度子块可以是4:4:4格式的4×4块。[0508]iv.在一个示例中,色度子块可以对应于亮度分量中的最小cu尺寸。[0509]1.可替代地,色度子块可以对应于色度分量的最小cu尺寸。[0510]72.对于以上提到的所有项目符号,假设参考缓冲区包含多个m×m块(m=64)。然而,它可以扩展到其它情况,诸如参考缓冲区包含多个n×m块(例如,n=128,m=64)。[0511]73.对于以上提到的所有项目符号,可以应用进一步的限制,即参考缓冲区应该在与当前块相同的区块/片/片组/条带内。[0512]a.在一个示例中,如果参考缓冲区的一部分在当前区块/片/片组/条带之外,则可以禁用对ibc的使用。可以跳过对ibc相关的语法元素的信令通知。[0513]b.可替代地,如果参考缓冲区的一部分在当前区块/片/片组/条带之外,则可以仍然对一个块启用ibc,然而,与一个块相关联的块矢量可以仅指向剩余的参考缓冲区。[0514]74.提出将ctu/ctb行的第一个vpdu行中的k1个最近编解码的vpdu(如果可用)和ctu/ctb行的第二个vpdu行中的k2个最近编解码的vpdu(如果可用)作为用于ibc的参考区域,不包括当前vpdu。[0515]a.在一个示例中,k1等于2并且k2等于1。[0516]b.在一个示例中,当ctu/ctb尺寸为128×128并且vpdu尺寸为64×64时,可以应用以上方法。[0517]c.在一个示例中,当ctu/ctb尺寸为64×64并且vpdu尺寸为64×64和/或32×32时,可以应用以上方法。[0518]d.在一个示例中,当ctu/ctb尺寸为32×32并且vpdu尺寸为32×32或更小时,可以应用以上方法。[0519]75.以上方法可以被应用于不同阶段。[0520]a.在一个示例中,块矢量(bv)的模运算(例如,amodb)可以在bv的可用性检查过程中被调用,以决定bv是否有效。[0521]b.在一个示例中,块矢量(bv)的模运算(例如,amodb)可以被调用,以(例如,根据当前样点的位置和bv的求模结果)标识ibc虚拟缓冲区或重构图片缓冲区中参考样点的位置(例如,在环路滤波过程之前)。[0522]5.实施例[0523]5.1实施例#1[0524]用于ibc的缓冲区的实施方式描述如下:[0525]缓冲区尺寸为128×128。ctu尺寸也为128×128。对于ctu行中的第一个ctu的编解码,缓冲区用128(对于8比特视频信令)进行初始化。对于ctu行中的第k个ctu的编解码,缓冲区用对第(k‑1)个ctu的环路滤波之前的重构进行初始化。[0526]图3示出了对从(x,y)开始的块的编解码的示例。[0527]当对从与当前ctu相关的(x,y)开始的块进行编解码时,块矢量(bvx,bvy)=(x‑x0,y‑y0)被传送到解码器,以指示参考块来自ibc缓冲区中的(x0,y0)。假设块的宽度和高度分别是w和h。当完成对块的编解码时,从ibc缓冲区中的(x,y)开始的w×h区域将用块在环路滤波之前的重构进行更新。[0528]5.2实施例#2[0529]图4示出了选择先前编解码的64×64块的可能的替代方式的示例。[0530]5.3实施例#3[0531]图5示出了改变64×64块的编解码/解码顺序的可能的替代方式的示例。[0532]5.4实施例#4[0533]图8示出了在64×64块的解码顺序是从顶部到底部、从左到右时选择先前编解码的64×64块的另一种可能的替代方式。[0534]5.5实施例#5[0535]图9示出了选择先前编解码的64×64块的另一种可能的替代方式。[0536]5.6实施例#6[0537]图11示出了在64×64块的解码顺序是从左到右、从顶部到底部时选择先前编解码的64×64块的另一种可能的替代方式。[0538]5.7实施例#7[0539]假设ctu尺寸为w×w,解码器处的尺寸为mm×w并且比特深度为b的ibc缓冲区的实施方式如下。[0540]在开始解码ctu行时,用值(1<<(b‑1))初始化缓冲区,并且将要更新的起始点(xb,yb)设置为(0,0)。[0541]当从与ctu左上角相关的(x,y)开始并且尺寸为w×h的cu被解码时,从(xb+x,yb+y)开始并且尺寸为w×h的区域将用cu在比特深度与b比特对齐之后的重构像素值进行更新。[0542]在ctu被解码之后,要更新的起点(xb,yb)将被设置为((xb+w)modmw,0)。[0543]当解码具有块矢量(bvx,bvy)的ibccu时,对于与ctu左上角相关的任何像素(x,y),在与预测信号的比特深度进行比特深度对齐之后,在位置((x+bvx)modmw,(y+bvy)modw)处从缓冲区提取其预测。[0544]在一个示例中,b被设置为7或8,而块的输出/输入比特深度可以等于10。[0545]5.8实施例#8[0546]对于从与图片的左上角相关的(x,y)开始的亮度cu或联合亮度/色度cu以及块矢量(bvx,bvy),当isrec(((x+bvx)>>6<<6)+128‑(((y+bvy)>>6)&1)*64+(x%64),((y+bvy)>>6<<6)+(y%64))为真时,块矢量无效。[0547]对于从与图片的左上角相关的(x,y)开始的色度cu以及块矢量(bvx,bvy),当isrec(((x+bvx)>>5<<5)+64‑(((y+bvy)>>5)&1)*32+(x%32),((y+bvy)>>5<<5)+(y%32))为真时,块矢量无效。[0548]5.9实施例9[0549]对于从与图片的左上角相关的4:2:0格式的(x,y)开始的色度块或子块以及块矢量(bvx,bvy),当isrec(c,(x+bvx+64,y+bvy)为真时,块矢量无效,其中c是色度分量。[0550]对于从与图片的左上角相关的4:4:4格式的(x,y)开始的色度块或子块以及块矢量(bvx,bvy),当isrec(c,(x+bvx+128,y+bvy)为真时,块矢量无效,其中c是色度分量。[0551]5.10实施例#10[0552]对于从与图片的左上角相关的(x,y)开始的亮度cu或联合亮度/色度cu以及块矢量(bvx,bvy),当isrec(((x+bvx)>>6<<6)+128‑(((y+bvy)>>6)&1)*64+(x%64),((y+bvy)>>6<<6)+(y%64))为真时,块矢量无效。[0553]对于从与图片的左上角相关的4:2:0格式的(x,y)开始的色度块或子块以及块矢量(bvx,bvy),当isrec(c,((x+bvx)>>5<<5)+64‑(((y+bvy)>>5)&1)*32+(x%32),((y+bvy)>>5<<5)+(y%32))为真时,块矢量无效,其中c是色度分量。[0554]5.11实施例#11[0555]该实施例突出了保持ctu/ctb行的第一个vpdu行中的两个最近编解码的vpdu和第二个vpdu行中的一个最近编解码的vpdu的实施方式,不包括当前vpdu。[0556]当vpdu编解码顺序是从顶部到底部和从左到右时,参考区域如图13所示。[0557]当vpdu编解码顺序是从左到右和从顶部到底部,并且当前vpdu不在图片边界的右侧时,参考区域如图14所示。[0558]当vpdu编解码顺序是从左到右和从顶部到底部,并且当前vpdu在图片边界的右侧时,参考区域可以如图15所示。[0559]给定尺寸为w×h的亮度块(x,y),块矢量(bvx,bvy)是否有效可以通过检查以下条件进行判断:[0560]isrec(((x+bvx+128)>>6<<6)–(refy&0x40)+(x%64),((y+bvy)>>6<<6)+(refy>>6==y>>6)?(y%64):0),其中refy=(y&0x40)?(y+bvy):(y+bvy+w‑1)。[0561]如果以上函数返回真,则块矢量(bvx,bvy)无效,否则块矢量可能有效。[0562]5.12实施例#12[0563]如果ctu尺寸为192×128,则维护尺寸为192×128的虚拟缓冲区以跟踪用于ibc的参考样点。[0564]相对于图片的左上角的样点(x,y)与相对于缓冲区的左上角的位置(x%192,y%128)相关联。以下步骤示出了如何标记与用于ibc参考的虚拟缓冲区相关联的样点的可用性。[0565]相对于图片的左上角的位置(xprevvpdu,yprevvpdu)被记录,以代表最近解码的vpdu的左上角样点。[0566]1)在开始解码vpdu行时,缓冲区的所有位置都被标记为不可用。(xprevvpdu,yprevvpdu)被设置为(0,0)。[0567]2)在开始解码vpdu的第一个cu时,位置(x,y)(其中,x=(xprevvpdu‑2wvpdu+2mwvpdu)%(mwvpdu),..,((xprevvpdu‑2wvpdu+2mwvpdu)%(mwvpdu))‑1+wvpdu;并且y=yprevvpdu%(nhvpdu),..,(yprevvpdu%(nhvpdu))‑1+hvpdu)可以被标记为不可用。然后(xprevvpdu,yprevvpdu)被设置为(xcu,ycu),即cu相对于图片的左上角位置。[0568]3)在对cu进行解码之后,位置(x,y)(其中,x=xcu%(mwvpdu),...,(xcu+cu_width‑1)%(mwvpdu)并且y=ycu%(nhvpdu),…,(ycu+cu_height‑1)%(nhvpdu))被标记为可用。[0569]4)对于具有块矢量(xbv,ybv)的ibccu,如果任何位置(x,y)(其中,x=(xcu+xbv)%(mwvpdu),...,(xcu+xbv+cu_width‑1)%(mwvpdu)并且y=(ycu+ybv)%(nhvpdu),…,(ycu+ybv+cu_height‑1)%(nhvpdu))被标记为不可用,则块矢量被认为是无效的。[0570]图16示出了缓冲区状态以及图片中的vpdu解码状态。[0571]5.13实施例#13[0572]如果ctu尺寸为128×128或者ctu尺寸大于vpdu尺寸(例如,在当前设计中为64×64)或者ctu尺寸大于vpdu尺寸(例如,在当前设计中为64×64),则维护尺寸为192×128的虚拟缓冲区以跟踪用于ibc的参考样点。下面,当a<0时,(a%b)被定义为floor(a/b)*b,其中返回不大于c的最大整数。[0573]相对于图片的左上角的样点(x,y)与相对于缓冲区的左上角的位置(x%192,y%128)相关联。以下步骤示出了如何标记与用于ibc参考的虚拟缓冲区相关联的样点的可用性。[0574]相对于图片的左上角的位置(xprevvpdu,yprevvpdu)被记录,以代表最近解码的vpdu的左上角样点。[0575]1)在开始解码vpdu行时,缓冲区的所有位置都被标记为不可用。(xprevvpdu,yprevvpdu)被设置为(0,0)。[0576]2)在开始解码vpdu的第一个cu时,[0577]a.如果yprevvpdu%64等于0,位置(x,y)(其中,x=(xprevvpdu–128)%192,..,((xprevvpdu–128)%192)+63;并且y=yprevvpdu%128,..,(yprevvpdu%128)+63)被标记为不可用。然后(xprevvpdu,yprevvpdu)被设置为(xcu,ycu),即cu相对于图片的左上角位置。[0578]b.否则,位置(x,y)(其中,x=(xprevvpdu–64)%192,..,((xprevvpdu–64)%192)+63;并且y=yprevvpdu%128,..,(yprevvpdu%128)+63)被标记为不可用。然后(xprevvpdu,yprevvpdu)被设置为(xcu,ycu),即cu相对于图片的左上角位置。[0579]3)在对cu进行解码之后,位置(x,y)(其中,x=xcu%192,...,(xcu+cu_width‑1)%192并且y=ycu%128,…,(ycu+cu_height‑1)%128)被标记为可用。[0580]4)对于具有块矢量(xbv,ybv)的ibccu,如果任何位置(x,y)(其中,x=(xcu+xbv)%192,...,(xcu+xbv+cu_width‑1)%192并且y=(ycu+ybv)%128,…,(ycu+ybv+cu_height‑1)%128)被标记为不可用,块矢量被认为是无效的。[0581]如果ctu尺寸为s×s,s不等于128,则假定wbuf等于128*128/s。维护尺寸为wbuf×s的虚拟缓冲区以跟踪用于ibc的参考样点。在这种情况下,vpdu尺寸等于ctu尺寸。[0582]相对于图片的左上角的位置(xprevvpdu,yprevvpdu)被记录,以代表最近解码的vpdu的左上角样点。[0583]1)在开始解码vpdu行时,缓冲区的所有位置都被标记为不可用。(xprevvpdu,yprevvpdu)被设置为(0,0)。[0584]2)在开始解码vpdu的第一个cu时,位置(x,y)(其中,x=(xprevvpdu–wbuf*s)%s,..,((xprevvpdu–wbuf*s)%s)+s‑1;并且y=yprevvpdu%s,..,(yprevvpdu%s)+s‑1)被标记为不可用。然后(xprevvpdu,yprevvpdu)被设置为(xcu,ycu),即cu相对于图片的左上角位置。[0585]3)在对cu进行解码之后,位置(x,y)(其中,x=xcu%(wbuf),...,(xcu+cu_width‑1)%(wbuf)并且y=ycu%s,…,(ycu+cu_height‑1)%s)被标记为可用。[0586]4)对于具有块矢量(xbv,ybv)的ibccu,如果任何位置(x,y)(其中,x=(xcu+xbv)%(wbuf),...,(xcu+xbv+cu_width‑1)%(wbuf)并且y=(ycu+ybv)%s,…,(ycu+ybv+cu_height‑1)%s)被标记为不可用,则块矢量被认为是无效的。[0587]5.14实施例#14如果ctu尺寸为128×128或者ctu尺寸大于vpdu尺寸(例如,在当前设计中为64×64)或者ctu尺寸大于vpdu尺寸(例如,在当前设计中为64×64),则维护尺寸为256×128的虚拟缓冲区以跟踪用于ibc的参考样点。下面,当a<0时,(a%b)被定义为floor(a/b)*b,其中返回不大于c的最大整数。[0588]相对于图片的左上角的样点(x,y)与相对于缓冲区的左上角的位置(x%256,y%128)相关联。以下步骤示出了如何标记与用于ibc参考的虚拟缓冲区相关联的样点的可用性。[0589]相对于图片的左上角的位置(xprevvpdu,yprevvpdu)被记录,以代表最近解码的vpdu的左上角样点。[0590]1)在开始解码vpdu行时,缓冲区的所有位置都被标记为不可用。(xprevvpdu,yprevvpdu)被设置为(0,0)。[0591]2)在开始解码vpdu的第一个cu时,[0592]a.如果yprevvpdu%64等于0,则位置(x,y)(其中,x=(xprevvpdu–128)%256,..,((xprevvpdu–128)%256)+63;并且y=yprevvpdu%128,..,(yprevvpdu%128)+63)被标记为不可用。然后(xprevvpdu,yprevvpdu)被设置为(xcu,ycu),即cu相对于图片的左上角位置。[0593]b.否则,位置(x,y)(其中,x=(xprevvpdu–64)%256,..,((xprevvpdu–64)%256)+63;并且y=yprevvpdu%128,..,(yprevvpdu%128)+63)被标记为不可用。然后(xprevvpdu,yprevvpdu)被设置为(xcu,ycu),即cu相对于图片的左上角位置。[0594]3)在对cu进行解码之后,位置(x,y)(其中,x=xcu%256,...,(xcu+cu_width‑1)%256并且y=ycu%128,…,(ycu+cu_height‑1)%128)被标记为可用。[0595]4)对于具有块矢量(xbv,ybv)的ibccu,如果任何位置(x,y)(其中,x=(xcu+xbv)%256,...,(xcu+xbv+cu_width‑1)%256并且y=(ycu+ybv)%128,…,(ycu+ybv+cu_height‑1)%128)被标记为不可用,则块矢量被认为是无效的。[0596]当ctu尺寸不为128×128或小于64×64或小于64×64时,与先前实施例(即,实施例#14)中相同的过程适用。[0597]5.15实施例#15[0598]ibc参考可用性标记过程描述如下。在本文档中,改变以粗体、下划线和斜体本文进行指示。[0599]7.3.7.1通用条带数据语法[0600][0601][0602][0603]bufwidth等于(ctbsizey==128)?256:(128*128/ctbsizey)并且bufheight等于ctbsizey。[0604]7.3.7.5编解码单元语法[0605][0606][0607]8.6.2ibc块的运动矢量分量的推导过程[0608]8.6.2.1总体[0609]…[0610]比特流一致性的要求是,当用块矢量mvl调用条款8.6.3.2中的块矢量有效性检查过程时,isbvvalid应当为真。[0611]…[0612]8.6.3ibc块的解码过程[0613]8.6.3.1总体[0614]当对在ibc预测模式下编解码的编解码单元进行解码时,该过程被调用。该过程的输入是:[0615]–亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上角亮度样点的左上角样点,[0616]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0617]–变量cbheight,指定亮度样点中的当前编解码块的高度,[0618]–变量numsbx和numsby,指定水平和垂直方向上亮度编解码子块的数量,[0619]–运动矢量mv[xsbidx][ysbidx],其中,xsbidx=0..numsbx–1,并且ysbidx=0..numsby–1,[0620]–变量cidx,指定当前块的颜色分量索引。[0621]–(nibcbufw)×(ctbsize)阵列ibcbuf[0622]…[0623]对于子块索引(xsbidx,ysbidx)(其中,xsbidx=0..numsbx–1,并且ysbidx=0..numsby–1)处的每个编解码子块,以下适用:[0624]–指定当前编解码子块相对于当前图片的左上角亮度样点的左上角样点的亮度位置(xsb,ysb)被推导如下:[0625](xsb,ysb)=(xcb+xsbidx*sbwidth,ycb+ysbidx*sbheight)(8‑913)[0626]如果cidx等于0,则nibcbufw被设置为ibcbufferwidth,否则nibcbufw被设置为(ibcbufferwidth/subwidthc)。以下适用:[0627]predsamples[xsb+x][ysb+y]=ibcbuf[(xsb+x+(mv[xsb][ysb][0]>>4))%nibcrefw][ysb+y+(mv[xsb][ysb][1]>>4)][0628]其中x=0..sbwidth–1并且y=0..sbheight–1。[0629]…[0630]8.6.3.2块矢量有效性检查过程[0631]该过程的输入是:[0632]–亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上角亮度样点的左上角样点,[0633]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0634]–变量cbheight,指定亮度样点中的当前编解码块的高度,[0635]–变量numsbx和numsby,指定水平和垂直方向上亮度编解码子块的数量,[0636]–块矢量mv[xsbidx][ysbidx],其中,xsbidx=0..numsbx‑1,并且ysbidx=0..numsby‑1,[0637]–变量cidx,指定当前块的颜色分量索引。[0638]–(nibcbufw)×(ctbsize)阵列ibcbuf[0639]该过程的输出是用以指示块矢量是否有效的标志isbvvalid。[0640]以下适用[0641]1.isbvvalid被设置为等于真。[0642]2.如果((ycb&(ctbsize‑1))+mv[0][0][1]+cbhheight)>etbsize,则isbvvalid被设置为等于假。[0643]3.否则,对于每个子块索引xsbidx、ysbidx(其中,xsbidx=0..numsbx‑1,并且ysbidx=0..numsby‑1),其相对于ibcbuf的左上角亮度样点的位置被推导为:[0644]xtl=(xcb+xsbidx*sbwidth+mv[xsbidx][ysbidx][0])&(nibcbufw‑1)[0645]ytl=(ycb&(etbsize‑1))+ysbidx*sbheight+mv[xsbidx][ysbidx][1][0646]xbr=(xcb+xsbidx*sbwidth+sbwidth‑1+mv[xsbidx][ysbidx][0])&(nibcbufw‑1)[0647]ybr=(ycb&(ctbsize‑1))+ysbidx*sbheight+sbhheight‑1+mv[xsbidx][ysbidx][1][0648]如果(isdecoded[xtl>>2][ytl>>2]==0)或(isdecoded[xbr>>2][ytl>>2]==0)或(isdecoded[xbr>>2][ybr>>2]==0),则isbvvalid被设置为等于假。[0649]8.7.5图片重构过程[0650]8.7.5.1总体[0651]该过程的输入是:[0652]‑位置(xcurr,ycurr),指定当前块相对于当前图片分量的左上角样点的左上角样点,[0653]‑变量ncurrsw和ncurrsh,分别指定当前块的宽度和高度,[0654]‑变量cidx,指定当前块的颜色分量,[0655]‑(ncurrsw)x(ncurrsh)阵列predsamples,指定当前块的预测样点,[0656]‑(ncurrsw)x(ncurrsh)阵列ressamples,指定当前块的残差样点。[0657]该过程的输出是[0658]‑重构图片样点阵列recsamples。[0659]‑ibc参考阵列ibcbuf。[0660]...[0661]用nibcbufw表示ibcbuf的宽度,以下适用:[0662]ibcbuf[(xcurr+i)&(nibcbufw‑1)][(ycurr+j)&(ctbsize‑1)]=recsamples[xcurr+i][ycurr+i][0663]其中i=0..ncurrsw–1,j=0..ncurrsh–1。[0664]5.16实施例#16[0665]除了以下改变以外,与先前的实施例相同。[0666][0667][0668]bufwidth等于(ctbsizey==128)?192:(128*128/ctbsizey)并且bufheight等于ctbsizey。[0669]5.17实施例#17[0670]在本文档中,一些示例中的改变以粗体、下划线文本进行指示。[0671]7.3.7条带数据语法[0672]7.3.7.1通用条带数据语法[0673][0674]7.4.8.5编解码单元语义[0675]当所有以下条件都为真时,通过将numhmvpsmribccand设置为等于numhmvpibccand,并且将hmvpsmribccandlist[i]设置为等于hmvpibccandlist[i](对于i=0..numhmvpibccand–1)来更新共享merge候选列表区域的基于历史的运动矢量预测值列表:[0676]–isinsmr[x0][y0]等于true(真)。[0677]–smrx[x0][y0]等于x0。[0678]–smry[x0][y0]等于y0。[0679]对于x=x0..x0+cbwidth–1和y=y0..y0+cbheight‑1,进行以下指定:[0680]cbposx[x][y]=x0ꢀꢀꢀ(7‑135)[0681]cbposy[x][y]=y0ꢀꢀꢀ(7‑136)[0682]cbwidth[x][y]=cbwidthꢀꢀꢀ(7‑137)[0683]cbheight[x][y]=cbheightꢀꢀꢀ(7‑138)[0684]将vsize设置为min(ctbsize,64),并且将wibcbuf设置为(128*128/ctbsize)。[0685]ibcbuf的宽度和高度相应地为wibcbuf和ctbsize。[0686]如果refreshibcbuf等于1,则以下适用:[0687]–对于x=x0..x0+wibcbuf–1和y=y0..y0+ctbsize–1,ibcbuf[x%wibcbuf][y%ctbsize]=‑1[0688]–resetibcbuf=0[0689]当对于x=x0..x0+vsize–1和y=y0..y0+vsize–1,(x0%vsize)等于0并且(y0%vsize)等于0时,以下适用:[0690]ibcbuf[x%wibcbuf][y%ctbsize]=‑1[0691]8.6.2ibc块的运动矢量分量的推导过程[0692]8.6.2.1总体[0693]该过程的输入是:[0694]–当前亮度编解码块相对于当前图片的左上角亮度样点的左上角样点的亮度位置(xcb,ycb),[0695]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0696]–变量cbheight,指定亮度样点中的当前编解码块的高度。[0697]该过程的输出是:[0698]–1/16分数样点精度的亮度运动矢量mvl。[0699]亮度运动矢量mvl被推导如下:[0700]–以亮度位置(xcb,ycb)、变量cbwidth和cbheight作为输入来调用如在条款8.6.2.2中指定的ibc亮度运动矢量预测的推导过程,并且输出是亮度运动矢量mvl。[0701]–当general_merge_flag[xcb][ycb]等于0时,以下适用:[0702]1.变量mvd被推导如下:[0703]mvd[0]=mvdl0[xcb][ycb]0.ꢀꢀꢀ(8‑883)[0704]mvd[1]=mvdl0[xcb][ycb][1]ꢀꢀꢀ(8‑884)[0705]2.以设置为等于mvl的mvx、设置为等于mvshift+2的rightshift和设置为等于mvshift+2的leftshift作为输入并且以取整后的mvl作为输出来调用如在条款8.5.2.14中指定的运动矢量的取整过程。[0706]3.亮度运动矢量mvl被修改如下:[0707]u[0]=(mvl[0]+mvd[0]+218)%218ꢀꢀꢀ(8‑885)[0708]mvl[0]=(u[0]>=217)?(u0.‑218):u0.ꢀꢀꢀ(8‑886)[0709]u[1]=(mvl[1]+mvd[1]+218)%218ꢀꢀꢀ(8‑887)[0710]mvl[1]=(u[1]>=217)?(u[1]‑218):u[1]ꢀꢀꢀ(8‑888)[0711]注1‑如上指定的mvl[0]和mvl[1]的结果值总是在范围‑217至217–1(包括‑217和217‑1)中。[0712]用亮度运动矢量mvl调用如在条款8.6.2.6中指定的基于历史的运动矢量预测值列表的更新过程。[0713]比特流一致性的要求是,亮度块矢量mvl应当遵守以下约束:[0714]–((ycb+(mvl[1]>>4))%wibcbuf)+cbheight小于或等于ctbsize[0715]–对于x=xcb..xcb+cbwidth–1和y=ycb..ycb+cbheight–1,ibcbuf[(x+(mvl0.>>4))%wibcbuf][(y+(mvl[1]>>4))%ctbsize]不应等于‑1。[0716]8.7.5图片重构过程[0717]8.7.5.1总体[0718]该过程的输入是:[0719]–位置(xcurr,ycurr),指定当前块相对于当前图片分量的左上角样点的左上角样点,[0720]–变量ncurrsw和ncurrsh,分别指定当前块的宽度和高度,[0721]–变量cidx,指定当前块的颜色分量,[0722]–(ncurrsw)x(ncurrsh)阵列predsamples,指定当前块的预测样点,[0723]–(ncurrsw)x(ncurrsh)阵列ressamples,指定当前块的残差样点。[0724]该过程的输出是重构图片样点阵列ressamples和ibc缓冲区阵列ibcbuf。[0725]取决于颜色分量cidx的值,进行以下指定:[0726]–如果cidx等于0,则recsamples对应于重构图片样点阵列sl,并且函数clipcidx1对应于clip1y。[0727]–否则,如果cidx等于1,则tucbfchroma被设置为等于tu_cbf_cb[xcurr][ycurr],recsamples对应于重构色度样点阵列scb,并且函数clipcidx1对应于clip1c。[0728]–否则(cidx等于2),tucbfchroma被设置为等于tu_cbf_cr[xcurr][ycurr],recsamples对应于重构色度样点阵列scr,并且函数clipcidx1对应于clip1c。[0729]取决于slice_lmcs_enabled_flag的值,以下适用:[0730]–如果slice_lmcs_enabled_flag等于0,则对于i=0..ncurrsw–1,j=0..ncurrsh‑1,位置(xcurr,ycurr)处的重构样点recsamples的(ncurrsw)x(ncurrsh)块被推导如下:[0731]recsamples[xcurr+i][ycurr+j]=clipcidx1(predsamples[i][j]+ressamples[i][j])ꢀꢀꢀ(8‑992)[0732]–否则(slice_lmcs_enabled_flag等于1),以下适用:[0733]–如果cidx等于0,则以下适用:[0734]–以亮度位置(xcurr,ycurr)、块宽度ncurrsw和高度ncurrsh、预测亮度样点阵列predsamples以及残差亮度样点阵列ressamples作为输入来调用如在条款8.7.5.2中指定的亮度样点的图片重构与映射过程,并且输出是重构亮度样点阵列recsamples。[0735]–否则(cidx大于0),以色度位置(xcurr,ycurr)、变换块宽度ncurrsw和高度ncurrsh、当前色度变换块的编解码块标志tucbfchroma、预测色度样点阵列predsamples以及残差色度样点阵列ressamples作为输入来调用如在条款8.7.5.3中指定的色度样点的图片重构与依赖于亮度的色度残差缩放过程,并且输出是重构色度样点阵列recsamples。[0736]在对当前编解码单元进行解码之后,以下适用:[0737]对于i=0..ncurrsw–1,j=0..ncurrsh–1[0738]ibcbuf[(xcurr+i)%wibcbuf][(ycurr+j)%ctbsize]=recsamples[xcurr+i][ycurr+j]。[0739]5.18实施例#18[0740]在本文档中,一些示例中的改变以粗体、下划线和斜体文本进行指示。[0741]7.3.7条带数据语法[0742]7.3.7.1通用条带数据语法[0743][0744]7.4.8.5编解码单元语义[0745]当所有以下条件都为真时,通过将numhmvpsmribccand设置为等于numhmvpibccand,并且将hmvpsmribccandlist[i]设置为等于hmvpibccandlist[i](对于i=0..numhmvpibccand–1)来更新共享merge候选列表区域的基于历史的运动矢量预测值列表:[0746]–isinsmr[x0][y0]等于true(真)。[0747]–smrx[x0][y0]等于x0。[0748]–smry[x0][y0]等于y0。[0749]对于x=x0..x0+cbwidth–1和y=y0..y0+cbheight‑1,进行以下指定:[0750]cbposx[x][y]=x0ꢀꢀꢀ(7‑135)[0751]cbposy[x][y]=y0ꢀꢀꢀ(7‑136)[0752]cbwidth[x][y]=cbwidthꢀꢀꢀ(7‑137)[0753]cbheight[x][y]=cbheightꢀꢀꢀ(7‑138)[0754]将vsize设置为min(ctbsize,64),并且将wibcbufy设置为(128*128/ctbsizey)。[0755]ibcbufl是宽度为wibcbufy并且高度为ctbsizey的阵列。[0756]ibcbufcb和ibcbufcr是宽度为wibcbufc=(wibcbufy/subwidthc)并且高度为(ctbsizey/subheightc)(即,ctbsizec)的阵列。[0757]如果resetibcbuf等于1,则以下适用[0758]–对于x=x0..x0+wibcbufy–1和y=y0..y0+ctbsizey–1,ibcbufl[x%wibcbufy][y%ctbsizey]=‑1[0759]–对于x=x0..x0+wibcbufc–1和y=y0..y0+ctbsizec–1,ibcbufcb[x%wibcbufc][y%ctbsizec]=‑1[0760]–对于x=x0..x0+wibcbufc–1和y=y0..y0+ctbsizec–1,ibcbufcr[x%wibcbufc][y%ctbsizec]=‑1[0761]–resetibcbuf=0[0762]当(x0%vsizey)等于0并且(y0%vsizey)等于0时,以下适用[0763]–对于x=x0..x0+vsize–1和y=y0..y0+vsize–1,ibcbufl[x%wibcbufy][y%ctbsizey]=‑1[0764]–对于x=x0/subwidthc..x0/subwidthc+vsize/subwidthc–1和y=y0/subheightc..y0/subheightc+vsize/subheightc–1,ibcbufcb[x%wibcbufc][y%ctbsizec]=‑1[0765]–对于x=x0/subwidthc..x0/subwidthc+vsize/subwidthc–1和y=y0/subheightc..y0/subheightc+vsize/subheightc–1,ibcbufcr[x%wibcbufc][y%ctbsizec]=‑1[0766]8.6.2ibc块的运动矢量分量的推导过程[0767]8.6.2.1总体[0768]该过程的输入是:[0769]–当前亮度编解码块相对于当前图片的左上角亮度样点的左上角样点的亮度位置(xcb,ycb),[0770]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0771]–变量cbheight,指定亮度样点中的当前编解码块的高度。[0772]该过程的输出是:[0773]–1/16分数样点精度的亮度运动矢量mvl。[0774]亮度运动矢量mvl被推导如下:[0775]–以亮度位置(xcb,ycb)、变量cbwidth和cbheight作为输入来调用如在条款8.6.2.2中指定的ibc亮度运动矢量预测的推导过程,并且输出是亮度运动矢量mvl。[0776]–当general_merge_flag[xcb][ycb]等于0时,以下适用:[0777]4.变量mvd被推导如下:[0778]mvd[0]=mvdl0[xcb][ycb]0.ꢀꢀꢀ(8‑883)[0779]mvd[1]=mvdl0[xcb][ycb][1]ꢀꢀꢀ(8‑884)[0780]5.以设置为等于mvl的mvx、设置为等于mvshift+2的rightshift和设置为等于mvshift+2的leftshift作为输入并且以取整后的mvl作为输出来调用如在条款8.5.2.14中指定的运动矢量的取整过程。[0781]6.亮度运动矢量mvl被修改如下:[0782]u[0]=(mvl[0]+mvd[0]+218)%218ꢀꢀꢀ(8‑885)[0783]mvl[0]=(u[0]>=217)?(u0.‑218):u0.ꢀꢀꢀ(8‑886)[0784]u[1]=(mvl[1]+mvd[1]+218)%218ꢀꢀꢀ(8‑887)[0785]mvl[1]=(u[1]>=217)?(u[1]‑218):u[1]ꢀꢀꢀ(8‑888)[0786]注1‑如上指定的mvl[0]和mvl[1]的结果值总是在范围‑217至217–1(包括‑217和217‑1)中。[0787]用亮度运动矢量mvl调用如在条款8.6.2.6中指定的基于历史的运动矢量预测值列表的更新过程。[0788]以mvl作为输入并且以mvc作为输出来调用条款8.6.2.5。[0789]比特流一致性的要求是,亮度块矢量mvl应当遵守以下约束:[0790]–((ycb+(mvl[1]>>4))%ctbsizey)+cbheight小于或等于ctbsizey[0791]–对于x=xcb..xcb+cbwidth–1和y=ycb..ycb+cbheight–1,ibcbufl[(x+(mvl[0]>>4))%wibcbufy][(y+(mvl[1]>>4))%ctbsizey]不应等于‑1。[0792]–如果treetype等于single_tree,则对于x=xcb..xcb+cbwidth–1和y=ycb..ycb+cbheight–1,ibcbufcb[(x+(mvc[0]>>5))%wibcbufc][(y+(mvc[1]>>5))%ctbsizec]]不应等于‑1。[0793]8.6.3ibc块的解码过程[0794]8.6.3.1总体[0795]当对在ibc预测模式下编解码的编解码单元进行解码时,该过程被调用。[0796]该过程的输入是:[0797]–亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上角亮度样点的左上角样点,[0798]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0799]–变量cbheight,指定亮度样点中的当前编解码块的高度,[0800]–当前块的颜色分量索引。[0801]–运动矢量mv,[0802]–(wibcbufy)×(ctbsizey)阵列ibcbufl,(wibcbufc)×(ctbsizec)阵列ibcbufcb,(wibcbufc)×(ctbsizec)阵列ibcbufcr。[0803]该过程的输出是:[0804]–预测样点的阵列predsamples。[0805]对于x=xcb..xcb+width–1和y=ycb..ycb+height‑1,以下适用[0806]如果cidx等于0[0807]predsamples[x][y]=ibcbufl[(x+mv[0]>>4))%wibcbufy][(y+(mv[1]>>4))%ctbsizey][0808]如果cidx等于1[0809]predsamples[x][y]=ibcbufcb[(x+mv[0]>>5))%wibcbufc][(y+(mv[1]>>5))%ctbsizec][0810]如果cidx等于2[0811]predsamples[x][y]=ibcbufcr[(x+mv[0]>>5))%wibcbufc][(y+(mv[1]>>5))%ctbsizec][0812]8.7.5图片重构过程[0813]8.7.5.1总体[0814]该过程的输入是:[0815]–位置(xcurr,ycurr),指定当前块相对于当前图片分量的左上角样点的左上角样点,[0816]–变量ncurrsw和ncurrsh,分别指定当前块的宽度和高度,[0817]–变量cidx,指定当前块的颜色分量,[0818]–(ncurrsw)x(ncurrsh)阵列predsamples,指定当前块的预测样点,[0819]–(ncurrsw)x(ncurrsh)阵列ressamples,指定当前块的残差样点。[0820]该过程的输出是重构图片样点阵列recsamples和ibc缓冲区阵列ibcbufl、ibcbufcb、ibcbufcr。[0821]取决于颜色分量cidx的值,进行以下指定:[0822]–如果cidx等于0,则recsamples对应于重构图片样点阵列sl,并且函数clipcidx1对应于clip1y。[0823]–否则,如果cidx等于1,则tucbfchroma被设置为等于tu_cbf_cb[xcurr][ycurr],recsamples对应于重构色度样点阵列scb,并且函数clipcidx1对应于clip1c。[0824]–否则(cidx等于2),tucbfchroma被设置为等于tu_cbf_cr[xcurr][ycurr],recsamples对应于重构色度样点阵列scr,并且函数clipcidx1对应于clip1c。[0825]取决于slice_lmcs_enabled_flag的值,以下适用:[0826]–如果slice_lmcs_enabled_flag等于0,则对于i=0..ncurrsw–1,j=0..ncurrsh‑1,位置(xcurr,ycurr)处的重构样点recsamples的(ncurrsw)x(ncurrsh)块被推导如下:[0827]recsamples[xcurr+i][ycurr+j]=clipcidx1(predsamples[i][j]+ressamples[i][j])ꢀꢀꢀ(8‑992)[0828]–否则(slice_lmcs_enabled_flag等于1),以下适用:[0829]–如果cidx等于0,则以下适用:[0830]–以亮度位置(xcurr,ycurr)、块宽度ncurrsw和高度ncurrsh、预测亮度样点阵列predsamples以及残差亮度样点阵列ressamples作为输入来调用如在条款8.7.5.2中指定的亮度样点的图片重构与映射过程,并且输出是重构亮度样点阵列recsamples。[0831]–否则(cidx大于0),以色度位置(xcurr,ycurr)、变换块宽度ncurrsw和高度ncurrsh、当前色度变换块的编解码块标志tucbfchroma、预测色度样点阵列predsamples以及残差色度样点阵列ressamples作为输入来调用如在条款8.7.5.3中指定的色度样点的图片重构与依赖于亮度的色度残差缩放过程,并且输出是重构色度样点阵列recsamples。[0832]在对当前编解码单元进行解码之后,以下可以适用:[0833]如果cidx等于0,并且如果treetype等于single_tree或dual_tree_luma,则以下适用[0834]对于i=0..ncurrsw‑1,j=0..ncurrsh‑1[0835]ibcbufl[(xcurr+i)%wibcbufy][(ycurr+j)%ctbsizey]=recsamples[xcurr+i][ycurr+j]。[0836]如果cidx等于1,并且如果treetype等于single_tree或dual_tree_chroma,则以下适用[0837]对于i=0..ncurrsw‑1,j=0..ncurrsh‑1[0838]ibcbufcb[(xcurr+i)%wibcbufc][(ycurr+j)%ctbsizec]=recsamples[xcurr+i][ycurr+j]。[0839]如果cidx等于2,并且如果treetype等于singletree或dual_treechroma,则以下适用[0840]对于i=0..ncurrsw‑1,j=0..ncurrsh‑1[0841]ibcbufcr[(xcurr+i)%wibcbufc][(ycurr+j)%ctbsizec]=recsamples[xcurr+i][ycurr+j]。[0842]5.19实施例#19[0843]在本文档中,一些示例中的改变以粗体、下划线文本进行指示。[0844]7.3.7条带数据语法[0845]7.3.7.1通用条带数据语法[0846][0864]‑对于x=x0..x0+wibcbufc‑1和y=y0..y0+ctbsizec‑1,ibcbufcr[x%wibcbufc][y%ctbsizec]=‑1[0865]‑resetibcbuf=0[0866]当(x0%vsizey)等于0并且(y0%vsizey)等于0时,以下适用[0867]‑对于x=x0..x0+min(vsize,cbwidth)‑1和y=y0..y0+min(vsize,cbheight)‑1,ibcbufl[x%wibcbufy][y%ctbsizey]‑1[0868]‑对于x=x0/subwidthc..x0/subwidthc+min(vsize/subwidthc,cbwidth)‑1和y=y0/subheightc..y0/subheightc+min(vsize/subheightc,cbheight)‑1,ibcbufcb[x%wibcbufc][y%ctbsizec]=‑1[0869]‑对于x=x0/subwidthc..x0/subwidthc+min(vsize/subwidthc,cbwidth)‑1和y=y0/subheightc..y0/subheightc+min(vsize/subheightc,cbheight)‑1,ibcbufcr[x%wibcbufc][y%ctbsizec]=‑1[0870]8.6.2ibc块的运动矢量分量的推导过程[0871]8.6.2.1总体[0872]该过程的输入是:[0873]‑当前亮度编解码块相对于当前图片的左上角亮度样点的左上角样点的亮度位置(xcb,ycb),[0874]‑变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0875]‑变量cbheight,指定亮度样点中的当前编解码块的高度。该过程的输出是:[0876]‑1/16分数样点精度的亮度运动矢量mvl。亮度运动矢量mvl被推导如下:[0877]‑以亮度位置(xcb,ycb)、变量cbwidth和cbheight作为输入来调用如在条款8.6.2.2中指定的ibc亮度运动矢量预测的推导过程,并且输出是亮度运动矢量mvl。[0878]–当general_merge_flag[xcb][ycb]等于0时,以下适用:[0879]7.变量mvd被推导如下:[0880]mvd[0]=mvdl0[xcb][ycb]0.ꢀꢀꢀ(8‑883)[0881]mvd[1]=mvdl0[xcb][ycb][1]ꢀꢀꢀ(8‑884)[0882]8.以设置为等于mvl的mvx、设置为等于mvshift+2的rightshift和设置为等于mvshift+2的leftshift作为输入并且以取整后的mvl作为输出来调用如在条款8.5.2.14中指定的运动矢量的取整过程。[0883]9.亮度运动矢量mvl被修改如下:[0884]u[0]=(mvl[0]+mvd[0]+218)%218ꢀꢀꢀ(8‑885)[0885]mvl[0]=(u[0]>=217)?(u0.‑218):u0.ꢀꢀꢀ(8‑886)[0886]u[1]=(mvl[1]+mvd[1]+218)%218ꢀꢀꢀ(8‑887)[0887]mvl[1]=(u[1]>=217)?(u[1]‑218):u[1]ꢀꢀꢀ(8‑888)[0888]注1‑如上指定的mvl[0]和mvl[1]的结果值总是在范围‑217至217–1(包括‑217和217‑1)中。[0889]用亮度运动矢量mvl调用如在条款8.6.2.6中指定的基于历史的运动矢量预测值列表的更新过程。[0890]以mvl作为输入并且以mvc作为输出来调用条款8.6.2.5。[0891]比特流一致性的要求是,亮度块矢量mvl应当遵守以下约束:[0892]–((ycb+(mvl[1]>>4))%ctbsizey)+cbheight小于或等于ctbsizey[0893]–对于x=xcb..xcb+cbwidth–1和y=ycb..ycb+cbheight–1,ibcbufl[(x+(mvl[0]>>4))%wibcbufy][(y+(mvl[1]>>4))%ctbsizey]不应等于‑1。[0894]–如果treetype等于single_tree,则对于x=xcb..xcb+cbwidth–1和y=ycb..ycb+cbheight–1,ibcbufcb[(x+(mvc[0]>>5))%wibcbufc][(y+(mvc[1]>>5))%ctbsizec]]不应等于‑1。[0895]8.6.3ibc块的解码过程[0896]8.6.3.1总体[0897]当对在ibc预测模式下编解码的编解码单元进行解码时,该过程被调用。该过程的输入是:[0898]–亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上角亮度样点的左上角样点,[0899]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0900]–变量cbheight,指定亮度样点中的当前编解码块的高度,[0901]–变量cidx,指定当前块的颜色分量索引。[0902]–运动矢量mv,[0903]–(wibcbufy)×(ctbsizey)阵列ibcbufl,(wibcbufc)×(ctbsizec)阵列ibcbufcb,(wibcbufc)×(ctbsizec)阵列ibcbufcr。[0904]该过程的输出是:[0905]–预测样点的阵列predsamples。[0906]对于x=xcb..xcb+width–1和y=ycb..ycb+height‑1,以下适用[0907]如果cidx等于0[0908]predsamples[x][y]=ibcbufl[(x+mv[0]>>4))%wibcbufy][(y+(mv[1]>>4))%ctbsizey][0909]如果cidx等于1[0910]predsamples[x][y]=ibcbufcb[(x+mv[0]>>5))%wibcbufc][(y+(mv[1]>>5))%ctbsizec][0911]如果cidx等于2[0912]predsamples[x][y]=ibcbufcr[(x+mv[0]>>5))%wibcbufc][(y+(mv[1]>>5))%ctbsizec][0913]8.7.5图片重构过程[0914]8.7.5.1总体[0915]该过程的输入是:[0916]–位置(xcurr,ycurr),指定当前块相对于当前图片分量的左上角样点的左上角样点,[0917]–变量ncurrsw和ncurrsh,分别指定当前块的宽度和高度,[0918]–变量cidx,指定当前块的颜色分量,[0919]–(ncurrsw)x(ncurrsh)阵列predsamples,指定当前块的预测样点,[0942]ibcbufcr[(xcurr+i)%wibcbufc][(ycurr+j)%ctbsizec]=recsamples[xcurr+i][ycurr+j]。[0943]5.20实施例#20[0944]在本文档中,一些示例中的改变以粗体、下划线和斜体文本进行指示。[0945]7.3.7条带数据语法[0946]7.3.7.1通用条带数据语法[0947][0948][0949]7.4.8.5编解码单元语义[0950]当所有以下条件都为真时,通过将numhmvpsmribccand设置为等于numhmvpibccand,并且将hmvpsmribccandlist[i]设置为等于hmvpibccandlist[i](对于i=0..numhmvpibccand–1)来更新共享merge候选列表区域的基于历史的运动矢量预测值列表:[0951]–isinsmr[x0][y0]等于true(真)。[0952]–smrx[x0][y0]等于x0。[0953]–smry[x0][y0]等于y0。[0954]对于x=x0..x0+cbwidth–1和y=y0..y0+cbheight‑1,进行以下指定:[0955]cbposx[x][y]=x0ꢀꢀꢀ(7‑135)[0956]cbposy[x][y]=y0ꢀꢀꢀ(7‑136)[0957]cbwidth[x][y]=cbwidthꢀꢀꢀ(7‑137)[0958]cbheight[x][y]=cbheightꢀꢀꢀ(7‑138)[0959]将vsize设置为min(ctbsize,64),并且将wibcbufy设置为(128*128/ctbsizey)。[0960]ibcbufl是宽度为wibcbufy并且高度为ctbsizey的阵列。[0961]ibcbufcb和ibcbufcr是宽度为wibcbufc=(wibcbufy/subwidthc)并且高度为(ctbsizey/subheightc)(即,ctbsizec)的阵列。[0962]如果resetibcbuf等于1,则以下适用[0963]–对于x=x0..x0+wibcbufy–1和y=y0..y0+ctbsizey–1,ibcbufl[x%wibcbufy][y%ctbsizey]=‑1[0964]–对于x=x0..x0+wibcbufc–1和y=y0..y0+ctbsizec–1,ibcbufcb[x%wibcbufc][y%ctbsizec]=‑1[0965]–对于x=x0..x0+wibcbufc–1和y=y0..y0+ctbsizec–1,ibcbufcr[x%wibcbufc][y%ctbsizec]=‑1[0966]–resetibcbuf=0[0967]当(x0%vsizey)等于0并且(y0%vsizey)等于0时,以下适用[0968]–对于x=x0..x0+max(vsize,cbwidth)–1和y=y0..y0+max(vsize,cbheight)–1,ibcbufl[x%wibcbufy][y%ctbsizey]=‑1[0969]–对于x=x0/subwidthc..x0/subwidthc+max(vsize/subwidthc,cbwidth)‑1和y=y0/subheightc..y0/subheightc+max(vsize/subheightc,cbheight)–1,ibcbufcb[x%wibcbufc][y%ctbsizec]=‑1[0970]–对于x=x0/subwidthc..x0/subwidthc+max(vsize/subwidthc,cbwidth)–1和y=y0/subheightc..y0/subheightc+max(vsize/subheightc,cbheight)–1,ibcbufcr[x%wibcbufc][y%ctbsizec]=‑1[0971]8.6.2ibc块的运动矢量分量的推导过程[0972]8.6.2.1总体[0973]该过程的输入是:[0974]–当前亮度编解码块相对于当前图片的左上角亮度样点的左上角样点的亮度位置(xcb,ycb),[0975]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[0976]–变量cbheight,指定亮度样点中的当前编解码块的高度。该过程的输出是:[0977]–1/16分数样点精度的亮度运动矢量mvl。亮度运动矢量mvl被推导如下:[0978]–以亮度位置(xcb,ycb)、变量cbwidth和cbheight作为输入来调用如在条款8.6.2.2中指定的ibc亮度运动矢量预测的推导过程,并且输出是亮度运动矢量mvl。[0979]–当general_merge_flag[xcb][ycb]等于0时,以下适用:[0980]10.变量mvd被推导如下:[0981]mvd[0]=mvdl0[xcb][ycb]0.ꢀꢀꢀ(8‑883)[0982]mvd[1]=mvdl0[xcb][ycb][1]ꢀꢀꢀ(8‑884)[0983]11.以设置为等于mvl的mvx、设置为等于mvshift+2的rightshift和设置为等于mvshift+2的leftshift作为输入并且以取整后的mvl作为输出来调用如在条款8.5.2.14中指定的运动矢量的取整过程。[0984]12.亮度运动矢量mvl被修改如下:[0985]u[0]=(mvl[0]+mvd[0]+218)%218ꢀꢀꢀ(8‑885)[0986]mvl[0]=(u[0]>=217)?(u0.‑218):u0.ꢀꢀꢀ(8‑886)[0987]u[1]=(mvl[1]+mvd[1]+218)%218ꢀꢀꢀ(8‑887)[0988]mvl[1]=(u[1]>=217)?(u[1]‑218):u[1]ꢀꢀꢀ(8‑888)[0989]注1‑如上指定的mvl[0]和mvl[1]的结果值总是在范围‑217至217–1(包括‑217和217‑1)中。[0990]用亮度运动矢量mvl调用如在条款8.6.2.6中指定的基于历史的运动矢量预测值列表的更新过程。[0991]以mvl作为输入并且以mvc作为输出来调用条款8.6.2.5。[0992]比特流一致性的要求是,亮度块矢量mvl应当遵守以下约束:[0993]–((ycb+(mvl[1]>>4))%ctbsizey)+cbheight小于或等于ctbsizey[0994]–对于x=xcb..xcb+cbwidth–1和y=ycb..ycb+cbheight–1,ibcbufl[(x+(mvl[0]>>4))%wibcbufy][(y+(mvl[1]>>4))%ctbsizey]不应等于‑1。[0995]8.6.3ibc块的解码过程[0996]8.6.3.1总体[0997]当对在ibc预测模式下编解码的编解码单元进行解码时,该过程被调用。[0998]该过程的输入是:[0999]–亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上角亮度样点的左上角样点,[1000]–变量cbwidth,指定亮度样点中的当前编解码块的宽度,[1001]–变量cbheight,指定亮度样点中的当前编解码块的高度,[1002]–变量cidx,指定当前块的颜色分量索引。[1003]–运动矢量mv,[1004]–(wibcbufy)×(ctbsizey)阵列ibcbufl,(wibcbufc)×(ctbsizec)阵列ibcbufcb,(wibcbufc)×(ctbsizec)阵列ibcbufcr。[1005]该过程的输出是:[1006]–预测样点的阵列predsamples。[1007]对于x=xcb..xcb+width–1和y=ycb..ycb+height‑1,以下适用[1008]如果cidx等于0[1009]predsamples[x][y]=ibcbufl[(x+mv[0]>>4))%wibcbufy][(y+(mv[1]>>4))%ctbsizey][1010]如果cidx等于1[1011]predsamples[x][y]=ibcbufcb[(x+mv[0]>>5))%wibcbufc][(y+(mv[1]>>5))%ctbsizec][1012]如果cidx等于2[1013]predsamples[x][y]=ibcbufcr[(x+mv[0]>>5))%wibcbufc][(y+(mv[1]>>5))%ctbsizec][1014]8.7.5图片重构过程[1015]8.7.5.1总体[1016]该过程的输入是:[1017]–位置(xcurr,ycurr),指定当前块相对于当前图片分量的左上角样点的左上角样点,[1018]–变量ncurrsw和ncurrsh,分别指定当前块的宽度和高度,[1019]–变量cidx,指定当前块的颜色分量,[1020]–(ncurrsw)x(ncurrsh)阵列predsamples,指定当前块的预测样点,[1021]–(ncurrsw)x(ncurrsh)阵列ressamples,指定当前块的残差样点。[1022]该过程的输出是重构图片样点阵列recsamples和ibc缓冲区阵列ibcbufl、ibcbufcb、ibcbufcr。[1023]取决于颜色分量cidx的值,进行以下指定:[1024]–如果cidx等于0,则recsamples对应于重构图片样点阵列sl,并且函数clipcidx1对应于clip1y。[1025]–否则,如果cidx等于1,则tucbfchroma被设置为等于tu_cbf_cb[xcurr][ycurr],recsamples对应于重构色度样点阵列scb,并且函数clipcidx1对应于clip1c。[1026]–否则(cidx等于2),tucbfchroma被设置为等于tu_cbf_cr[xcurr][ycurr],recsamples对应于重构色度样点阵列scr,并且函数clipcidx1对应于clip1c。[1027]取决于slice_lmcs_enabled_flag的值,以下适用:[1028]–如果slice_lmcs_enabled_flag等于0,则对于i=0..ncurrsw–1,j=0..ncurrsh‑1,位置(xcurr,ycurr)处的重构样点recsamples的(ncurrsw)x(ncurrsh)块被推导如下:[1029]recsamples[xcurr+i][ycurr+j]=clipcidx1(predsamples[i][j]+ressamples[i][j])(8‑992)[1030]–否则(slice_lmcs_enabled_flag等于1),以下适用:[1031]–如果cidx等于0,则以下适用:[1032]–以亮度位置(xcurr,ycurr)、块宽度ncurrsw和高度ncurrsh、预测亮度样点阵列predsamples以及残差亮度样点阵列ressamples作为输入来调用如在条款8.7.5.2中指定的亮度样点的图片重构与映射过程,并且输出是重构亮度样点阵列recsamples。[1033]–否则(cidx大于0),以色度位置(xcurr,ycurr)、变换块宽度ncurrsw和高度ncurrsh、当前色度变换块的编解码块标志tucbfchroma、预测色度样点阵列predsamples以及残差色度样点阵列ressamples作为输入来调用如在条款8.7.5.3中指定的色度样点的图片重构与依赖于亮度的色度残差缩放过程,并且输出是重构色度样点阵列recsamples。[1034]在对当前编解码单元进行解码之后,以下可以适用:[1035]如果cidx等于0,并且如果treetype等于single_tree或dual_tree_luma,则以下适用[1036]对于i=0..ncurrsw–1,j=0..ncurrsh–1[1037]ibcbufl[(xcurr+i)%wibcbufy][(ycurr+j)%ctbsizey]=recsamples[xcurr+i][ycurr+j]。[1038]如果cidx等于1,并且如果treetype等于single_tree或dual_tree_chroma,则以下适用[1039]对于i=0..ncurrsw–1,j=0..ncurrsh–1[1040]ibcbufcb[(xcurr+i)%wibcbufc][(ycurr+j)%ctbsizec]=recsamples[xcurr+i][ycurr+j]。[1041]如果cidx等于2,并且如果treetype等于single_tree或dual_tree_chroma,则以下适用[1042]对于i=0..ncurrsw–1,j=0..ncurrsh–1[1043]ibcbufcr[(xcurr+i)%wibcbufc][(ycurr+j)%ctbsizec]=recsamples[xcurr+i][ycurr+j]。[1044]图6是可视媒体(视频或图像)处理的示例方法600的流程图。方法600包括:对于当前视频块和当前视频块的比特流表示之间的转换,确定(602)缓冲区的尺寸以存储使用帧内块复制编解码模式的当前视频块的参考样点;以及使用存储在缓冲区中的参考样点来执行(604)该转换。[1045]以下条款描述了由方法600和其它方法的实施例实施的一些示例优选特征。在本文档的第4章节中提供了附加示例。[1046]1.一种视频处理的方法,包括:对于当前视频块和当前视频块的比特流表示之间的转换,确定缓冲区的尺寸以存储使用帧内块复制编解码模式的当前视频块的参考样点;以及使用存储在缓冲区中的参考样点来执行该转换。[1047]2.根据条款1所述的方法,其中,缓冲区的尺寸为预定常数。[1048]3.根据条款1‑2中任一项所述的方法,其中,尺寸为m×n,其中m和n为整数。[1049]4.根据条款3所述的方法,其中,m×n等于64×64或128×128或64×128。[1050]5.根据条款1所述的方法,其中,缓冲区的尺寸等于当前视频块的编解码树单元的尺寸。[1051]6.根据条款1所述的方法,其中,缓冲区的尺寸等于在该转换期间使用的虚拟管道数据单元的尺寸。[1052]7.根据条款1所述的方法,其中,缓冲区的尺寸对应于比特流表示中的字段。[1053]8.根据条款7所述的方法,其中,该字段被包括在视频参数集或序列参数集或图片参数集或图片头或条带头或片组头级别的比特流表示中。[1054]9.根据条款1‑8中任一项所述的方法,其中,对于亮度分量的参考样点和色度分量的参考样点,缓冲区的尺寸不同。[1055]10.根据条款1‑8中任一项所述的方法,其中,缓冲区的尺寸取决于当前视频块的色度子采样格式。[1056]11.根据条款1‑8中任一项所述的方法,其中,参考样点以rgb格式被存储。[1057]12.根据条款1‑11中任一项所述的方法,其中,缓冲区用于存储环路滤波之前的重构样点和环路滤波之后的重构样点。[1058]13.根据条款12所述的方法,其中,环路滤波包括去方块滤波或自适应环路滤波(alf)或样点自适应偏移(sao)滤波。[1059]14.一种视频处理的方法,包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用参考样点的初始值来初始化缓冲区,以存储使用帧内块复制编解码模式的当前视频块的参考样点;以及使用存储在缓冲区中的参考样点来执行该转换。[1060]15.根据条款14所述的方法,其中,初始值对应于常数。[1061]16.根据条款14‑15中任一项所述的方法,其中,初始值是当前视频块的比特深度的函数。[1062]17.根据条款15所述的方法,其中,常数对应于中间灰度值。[1063]18.根据条款14所述的方法,其中,初始值对应于先前解码的视频块的像素值。[1064]19.根据条款18所述的方法,其中,先前解码的视频块对应于环路滤波之前的解码块。[1065]20.根据条款14‑19中任一项所述的方法,其中,缓冲区的尺寸如条款1‑13中的一项所述。[1066]21.根据条款1‑20中任一项所述的方法,其中,缓冲区内的像素位置使用x数字和y数字进行寻址。[1067]22.根据条款1‑20中任一项所述的方法,其中,缓冲区内的像素位置使用从0扩展到m*n‑1的单个数字进行寻址,其中m和n是缓冲区的像素宽度和像素高度。[1068]23.根据条款1‑20中任一项所述的方法,其中,当前比特流表示包括用于该转换的块矢量,其中,表示为(bvx,bvy)的块矢量等于(x‑x0,y‑y0),其中(x0,y0)对应于当前视频块的编解码树单元的左上角位置。[1069]24.根据条款1‑20中任一项所述的方法,其中,当前比特流表示包括用于该转换的块矢量,其中,表示为(bvx,bvy)的块矢量等于(x‑x0+tx,y‑y0+ty),其中(x0,y0)对应于当前视频块的编解码树单元的左上角位置,并且其中,tx和ty是偏移值。[1070]25.根据条款24所述的方法,其中,tx和ty是预定义的偏移值。[1071]26.根据条款1‑20中任一项所述的方法,其中,在该转换期间,对于在位置(x0,y0)处并具有块矢量(bvx,bvy)的像素,缓冲区中的对应参考在参考位置(x0+bvx,y0+bvy)处被找到。[1072]27.根据条款26所述的方法,其中,在参考位置在缓冲区之外的情况下,缓冲区中的参考通过在缓冲区的边界处进行裁剪而确定。[1073]28.根据条款26所述的方法,其中,在参考位置在缓冲区之外的情况下,缓冲区中的参考被确定为具有预定值。[1074]29.根据条款1‑20中任一项所述的方法,其中,在该转换期间,对于在位置(x0,y0)处并具有块矢量(bvx,bvy)的像素,缓冲区中的对应参考在参考位置((x0+bvx)modm,(y0+bvy)modn)处被找到,其中“mod”是模运算,并且m和n是表示缓冲区的x维度和y维度的整数。[1075]30.一种视频处理的方法,包括:在视频和当前视频块的比特流表示之间的转换期间,重置存储用于视频边界处的帧内块复制编解码的参考样点的缓冲区;以及使用存储在缓冲区中的参考样点来执行该转换。[1076]31.根据条款30所述的方法,其中,视频边界对应于新图片或新片。[1077]32.根据条款30所述的方法,其中,该转换通过在重置之后用虚拟管道数据单元(vpdu)的重构值更新缓冲区而执行。[1078]33.根据条款30所述的方法,其中,该转换通过在重置之后用编解码树单元的重构值更新缓冲区而执行。[1079]34.根据条款30所述的方法,其中,重置在每个编解码树单元行的开始处被执行。[1080]35.根据条款1所述的方法,其中,缓冲区的尺寸对应于l个64×64的先前解码的块,其中l为整数。[1081]36.根据条款1‑35中任一项所述的方法,其中,垂直扫描顺序用于在该转换期间读取缓冲区中的样点或将样点存储在缓冲区中。[1082]37.一种视频处理的方法,包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用缓冲区来存储使用帧内块复制编解码模式的当前视频块的参考样点,其中,缓冲区的第一比特深度不同于编解码数据的第二比特深度;以及使用存储在缓冲区中的参考样点来执行该转换。[1083]38.根据条款37所述的方法,其中,第一比特深度大于第二比特深度。[1084]39.根据条款37‑38中任一项所述的方法,其中,第一比特深度与在该转换期间使用的重构缓冲区的比特深度相同。[1085]40.根据条款37‑39中任一项所述的方法,其中,第一比特深度作为值或差值在比特流表示中被信令通知。[1086]41.根据条款37‑40中任一项所述的方法,其中,对于色度分量和亮度分量,该转换使用不同的比特深度。[1087]在第4章节的第7项中描述了条款37至41的附加实施例和示例。[1088]42.一种视频处理的方法,包括:执行使用帧内块复制模式的当前视频块和当前视频块的比特流表示之间的转换,其中在该帧内块复制模式下,在该转换期间用于预测计算的第一精确度低于在该转换期间用于重构计算的第二精确度。[1089]43.根据条款43所述的方法,其中,预测计算包括使用clip{{p+[1<<(b‑1)]}>>b,0,(1<<bitdepth)‑1}<<b从重构样点值确定预测样点值,其中p是重构样点值,b是预定义的比特移位值,并且bitdepth是预测样点精确度。[1090]在第4章节的第28至31项和第34项中描述了条款42至43的附加实施例和示例。[1091]44.一种视频处理的方法,包括:执行使用帧内块复制模式的当前视频块和当前视频块的比特流表示之间的转换,其中在该帧内块复制模式下,尺寸为nm×nm的参考区域用于尺寸为m×m的编解码树单元,其中n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域是对应于当前视频块的编解码树单元行中的最近的可用的n×n编解码树单元。[1092]在第4章节的第35项中描述了条款4的附加实施例和示例。[1093]45.一种视频处理的方法,包括:执行使用帧内块复制模式的当前视频块和当前视频块的比特流表示之间的转换,其中在该帧内块复制模式下,尺寸为nm×nm的参考区域用于尺寸为除m×m之外的编解码树单元,其中n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域是对应于当前视频块的编解码树单元行中的最近的可用的n×n‑1编解码树单元。[1094]在第4章节的第36项中描述了条款4的附加实施例和示例。图8和图9示出了附加的示例实施例。[1095]46.根据权利要求3所述的方法,其中,m=mw并且n=h,其中w和h是当前视频块的编解码树单元(ctu)的宽度和高度,并且m是正整数。[1096]47.根据权利要求3所述的方法,其中,m=w并且n=nh,其中w和h是编解码树单元(ctu)的宽度和高度,并且n是正整数。[1097]48.根据权利要求3所述的方法,其中,m=mw并且n=nh,其中w和h是编解码树单元(ctu)的宽度和高度,m和n是正整数。[1098]49.根据权利要求46‑48中任一项所述的方法,其中,n和m取决于ctu的尺寸。[1099]50.一种视频处理的方法,包括:对于视频的当前视频块和当前视频块的比特流表示之间的转换,使用视频的分量x来确定与视频的分量c的当前视频块相对应的块矢量的有效性,其中,分量x不同于视频的亮度分量;以及当确定块矢量对于当前视频块有效时,使用块矢量来执行该转换。这里,表示为(bvx,bvy)的块矢量等于(x‑x0,y‑y0),其中(x0,y0)对应于当前视频块的编解码树单元的左上角位置。[1100]51.根据条款50所述的方法,其中,分量c对应于视频的亮度分量。[1101]52.根据条款50所述的方法,其中,当前视频块是色度块,并且视频为4:4:4格式。[1102]53.根据条款50所述的方法,其中,视频为4:2:0格式,并且其中,当前视频块是在位置(x,y)处开始的色度块,并且其中,该确定包括将块矢量确定为对于其中isrec(c,((x+bvx)>>5<<5)+64‑(((y+bvy)>>5)&1)*32+(x%32),((y+bvy)>>5<<5)+(y%32))为真的情况无效。[1103]54.根据条款50所述的方法,其中,视频为4:2:0格式,并且其中,当前视频块是在位置(x,y)处开始的色度块,并且其中,该确定包括将块矢量确定为对于如果isrec(c,x+bvx+chroma_ctu_size,y)为真的情况无效。[1104]55.一种视频处理的方法,包括:对于视频区域的当前虚拟管道数据单元(vpdu)的当前视频块和当前视频块的比特流表示之间的转换,选择性地确定使用来自视频区域的第一行的k1个先前处理的vpdu和来自视频区域的第二行的k2个先前处理的vpdu;以及执行该转换,其中,该转换不包括使用当前vpdu的剩余部分。[1105]56.根据条款55所述的方法,其中,k1=1并且k2=2。[1106]57.根据条款55‑56中任一项所述的方法,其中,当前视频块基于视频区域的大小或当前vpdu的大小而选择性地处理。[1107]58.一种视频处理的方法,包括:为当前视频块和当前视频块的比特流表示之间的转换执行块矢量的有效性检查,其中,块矢量用于帧内块复制模式;以及在该转换期间使用有效性检查的结果来选择性地使用块矢量。[1108]59.根据条款58所述的方法,其中,帧内块复制(ibc)缓冲区在该转换期间被使用,其中,ibc缓冲区的宽度和高度为wbuf和hbuf,当前视频块的大小为w×h,并且其中,块矢量被表示为(bvx,bvy),并且其中,当前视频块在具有大小wpic和hpic的当前图片以及具有wctu和hctu作为宽度和高度的编解码树单元中,并且其中,有效性检查使用预定规则。[1109]60.根据条款58‑59中任一项所述的方法,其中,当前视频块是从像素坐标(x,y)开始的亮度块、色度块、编解码单元cu、变换单元tu、4×4块、2×2块或父块的子块。[1110]61.根据条款58‑60中任一项所述的方法,其中,有效性检查将落在当前图片的边界之外的块矢量视为有效。[1111]62.根据条款58‑60中任一项所述的方法,其中,有效性检查将落在编解码树单元的边界之外的块矢量视为有效。[1112]先前章节中的第23‑30项提供了以上条款58‑62的附加示例和变型。[1113]63.根据条款1‑62中任一项所述的方法,其中,该转换包括从当前视频块生成比特流表示。[1114]64.根据条款1‑62中任一项所述的方法,其中,该转换包括从比特流表示生成当前视频块的像素值。[1115]65.一种视频编码器装置,包括被配置为实施根据条款1‑62中任一项或多项所述的方法的处理器。[1116]66.一种视频解码器装置,包括被配置为实施根据条款1‑62中任一项或多项所述的方法的处理器。[1117]67.一种其上存储有代码的计算机可读介质,该代码体现用于实施根据条款1‑62中任一项或多项所述的方法的处理器可执行指令。[1118]图7是视频/图像处理装置700的硬件平台的框图。装置700可以用于实施本文描述的方法中的一种或多种。装置700可以体现在智能电话、平板电脑、计算机、物联网(internetofthings,iot)接收器等中。装置700可以包括一个或多个处理器702、一个或多个存储器704、以及视频处理硬件706。(多个)处理器702可以被配置为实施本文档中描述的一种或多种方法(包括但不限于方法600)。存储器(多个存储器)704可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件706可以用于以硬件电路实施本文档中描述的一些技术。[1119]对应于当前视频块的比特流表示不需要是连续的比特集合,并且可以跨头、参数集和网络抽象层(networkabstractionlayer,nal)分组而分布。[1120]章节a:另一附加示例实施例[1121]在章节a中,我们呈现了另一示例实施例,其中可以修改vvc标准的当前版本,以实施在本文档中描述的技术中的一些。[1122]本章节分析当前ibc参考缓冲区设计中的几个问题,并呈现不同的设计来解决问题。代替与解码内存混合,提出了一种独立的ibc参考缓冲区来。与当前锚(anchor)相比,所提出的方案示出了类f的‑0.99%/‑0.71%/‑0.79%的ai/ra/ld‑b亮度bd率和4:2:0tgm的‑2.57%/‑1.81%/‑1.36%的ai/ra/ld‑b亮度bd率,其中6.7%的内存减少;或类f的‑1.31%/‑1.01%/‑0.81%的ai/ra/ld‑b亮度bd率和4:2:0tgm的‑3.23%/‑2.33%/‑1.71%的ai/ra/ld‑b亮度bd率,其中6.7%的内存增加。[1123]a1.介绍[1124]采用帧内块复制,即ibc(或当前图片参考,即先前的cpr)编解码模式。已经意识到,ibc参考样点应该被存储在片上内存中,因此定义了一个ctu的有限参考区域。为了限制用于缓冲区的额外片上内存,当前设计重用64×64内存以用于对当前vpdu进行解码,使得仅需要3个附加的64×64块的内存来支持ibc。当ctu尺寸为128×128时,参考区域当前在图2中被示出。[1125]在当前草案(vvc草案4)中,区域被定义为:[1126][1127][1128]因此,总的参考尺寸为ctu。[1129]a2.当前设计的潜在问题[1130]当前设计假设重用64×64内存以用于对当前vpdu进行解码,并且相应地将ibc参考与vpdu内存重用对齐。这样的设计将vpdu解码内存与ibc缓冲区捆绑在一起。可能存在几个问题:[1131]1.处理更小的ctu可能是个问题。假设ctu尺寸为32×32,不清楚用于对当前vpdu进行解码的当前64×64内存是否可以在不同的架构中有效地支持32×32级别内存重用。[1132]2.参考区域显著变化。因此,引入了过多的比特流一致性约束。它给编码器有效地利用参考区域并避免生成合法的比特流增加了额外的负担。这也增加了在不同模块(例如,merge列表)中具有无效bv的可能性。为了处理那些无效bv,可能会引入额外的逻辑或额外的一致性约束。它不仅会给编码器或解码器引入负担,还可能会造成bv编解码和mv编解码之间的差异。[1133]3.该设计不能很好地扩展。由于vpdu解码与ibc缓冲区混合,相对于当前的一个128×128ctu的设计增加或减少参考区域并不容易。这可能会限制在以后的开发(例如,更低或更高的简表)中利用更好的编解码效率对片上内存的折衷的灵活性。[1134]4.ibc参考缓冲区的比特深度与解码缓冲区相关联。即使屏幕内容通常具有比内部解码比特深度更低的比特深度,缓冲区仍然需要花费内存来存储主要表示取整或量化噪声的比特。当考虑更高的解码比特深度配置时,这个问题变得更加严重。[1135]a3.清晰的ibc缓冲区设计[1136]为了解决以上小节中列出的问题,我们提出利用专用ibc缓冲区,它不与解码内存混合。[1137]对于128×128ctu,缓冲区被定义为具有8比特样点的128×128,当尺寸为w×h的cu(x,y)已经被解码时,其在环路滤波之前的重构被转换为8比特,并被写入从位置(x%128,y%128)开始的w×h块区域。这里,模运算符%总是返回正数,即对于x<0,例如‑3%128=125。[1138]假设用bv=(bvx,bvy)在ibc模式下对像素(x,y)进行编解码,它在ibc参考缓冲区中的预测样点位于((x+bvx)%128,(y+bvy)%128)处,并且像素值将在预测之前被转换为10比特。[1139]当缓冲区被认为是(w,h)时,在对从(x,y)开始的ctu或cu进行解码之后,环路滤波之前的重构像素将被存储在从(x%w,y%h)开始的缓冲区中。因此,在对ctu进行解码之后,对应的ibc参考缓冲区将被相应地更新。当ctu尺寸不为128×128时,这样的设置可能会发生。例如,对于64×64ctu,在当前缓冲区尺寸的情况下,它可以被认为是256×64缓冲区。对于64×64ctu,图2示出了缓冲区状态。[1140]图12是ibc参考缓冲区状态的图示,其中块表示64×64ctu。[1141]在这样的设计中,因为ibc缓冲区不同于vpdu解码内存,所以所有的ibc参考缓冲区都可以被用作参考。[1142]当ibc缓冲区的比特深度为8比特时,与需要3个附加的10比特64×64缓冲区的当前设计相比,片上内存增加为(8*4)/(10*3)‑100%=6.7%。[1143]如果我们进一步降低比特深度。可以进一步降低内存需求。例如,对于7比特缓冲区,片上内存节省为100%‑(7*4)/(10*3)=6.7%。[1144]在该设计的情况下,唯一的比特流一致性约束是参考块应当在当前片的当前ctu行中的重构区域内。[1145]当在每个ctu行的开始处允许初始化到512时,可以移除所有比特流一致性约束。[1146]a4.实验结果[1147]在一些实施例中,所公开的方法可以使用vtm‑4.0软件而实施。[1148]对于10比特缓冲区实施方式和ctc,解码器与当前的vtm4.0编码器完全兼容,这意味着所提出的解码器可以正确地解码vtm‑4.0ctc比特流。[1149]对于7比特缓冲区实施方式,结果如表i所示[1150]对于8比特缓冲区实施方式,结果如表ii所示。[1151]表i.7比特缓冲区的性能。锚是vtm‑4.0,其中ibc对所有序列开启。[1152][1153][1154][1155]表ii.8比特缓冲区的性能。锚是vtm‑4.0,其中ibc对所有序列开启。[1156][1157][1158][1159]图17是示出可以在其中实施本文公开的各种技术的示例视频处理系统1700的框图。各种实施方式可以包括系统1700的一些或所有组件。系统1700可以包括用于接收视频内容的输入1702。视频内容可以以例如8或10比特多分量像素值的原始或未压缩格式而接收,或者可以是压缩或编码格式。输入1702可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(passiveopticalnetwork,pon)等的有线接口和诸如wi‑fi或蜂窝接口的无线接口。[1160]系统1700可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件1704。编解码组件1704可以将来自输入1702的视频的平均比特率减小到编解码组件1704的输出,以产生视频的编解码表示。编解码技术因此有时被称为视频压缩或视频转码技术。编解码组件1704的输出可以被存储,或者经由如由组件1706表示的通信连接而发送。在输入1702处接收的视频的存储或通信传送的比特流(或编解码)表示可以由组件1708用于生成像素值或传送到显示接口1710的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是将理解,编解码工具或操作在编码器处被使用,并且反转编解码结果的对应的解码工具或操作将由解码器执行。[1161]外围总线接口或显示接口的示例可以包括通用串行总线(universalserialbus,usb)、或高清晰度多媒体接口(highdefinitionmultimediainterface,hdmi)、或显示端口(displayport)等。存储接口的示例包括sata(serialadvancedtechnologyattachment,串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能电话、或能够执行数字数据处理和/或视频显示的其他设备。[1162]图18是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例18进行讨论。在步骤1802处,该过程对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。在步骤1804处,对于在空域上位于当前视频块相对于包括当前视频块的编解码树单元的左上角位置的位置(x0,y0)处并具有块矢量(bvx,bvy)的样点,该过程计算缓冲区中在参考位置(p,q)处的对应参考,其中,参考位置(p,q)是使用块矢量(bvx,bvy)和位置(x0,y0)而确定的。当确定参考位置(p,q)位于缓冲区之外时,在步骤1805处,该过程至少部分基于当前视频块相对于包括当前视频块的编解码树单元的位置来重新计算参考位置。[1163]图19是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例29进行讨论。在步骤1902处,该过程对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。在步骤1904处,对于在空域上位于当前视频块相对于包括当前视频块的图片的左上角位置的位置(x,y)处并具有块矢量(bvx,bvy)的样点,该过程至少部分基于满足与以下中的至少一个相关联的一个或多个条件来将块矢量(bvx,bvy)指定为有效:当前视频块的位置(x,y)、当前视频块的大小、图片的大小、包括当前视频块的编解码树单元的大小、或缓冲区的大小。在步骤1906处,该过程执行检查以确定块矢量(bvx,bvy)有效。在步骤1908处,当识别出块矢量(bvx,bvy)有效时,该过程计算缓冲区中在参考位置(p,q)处的对应参考,其中,参考位置(p,q)是使用块矢量(bvx,bvy)、位置(x,y)以及缓冲区的大小而确定的。[1164]图20是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例19进行讨论。在步骤2002处,该过程对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定当前视频块的块矢量(bvx,bvy)或块矢量差(bvdx,bvdy),其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。在步骤2004处,该过程将块矢量(bvx,bvy)的至少一个分量或块矢量差(bvdx,bvdy)的至少一个分量归一化为位于一范围内。[1165]图21是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例40进行讨论。在步骤2102处,该过程对于当前视频块和当前视频块的比特流表示之间的转换,确定用于存储用于帧内块复制模式下的预测的重构样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。在步骤2104处,该过程根据顺序来更新存储在缓冲区中的重构样点。[1166]图22是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例57进行讨论。在步骤2202处,该过程执行当前视频块和当前视频块的比特流表示之间的转换,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,用于预测计算的第一精确度低于用于重构计算的第二精确度。[1167]图23是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例59进行讨论。在步骤2302处,该过程使用帧内块复制模式来执行当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×nm的参考区域被使用,其中n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×n个最近的可用编解码树单元的样点。[1168]图24是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例60进行讨论。在步骤2402处,该过程使用帧内块复制模式来执行当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×pm的参考区域被使用,其中n、p和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×p‑1个最近的可用编解码树单元的样点。[1169]图25是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例61进行讨论。在步骤2502处,该过程使用帧内块复制模式来执行视频区域的虚拟管道数据单元(vpdu)的当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×nm的参考区域被使用,vpdu的尺寸为km×km,其中k、n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×n‑k个最近的可用编解码树单元的样点。[1170]图26是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例62‑66进行讨论。在步骤2602处,该过程对于可视媒体数据的尺寸为w×h的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。在步骤2604处,对于在空域上位于当前视频块相对于包括当前视频块的尺寸为m×m的编解码树单元(ctu)的左上角位置的位置(x0,y0)处并具有块矢量(bvx,bvy)的样点,该过程计算在缓冲区中的参考位置(p,q)处开始的对应参考区域,其中,参考位置(p,q)是使用块矢量(bvx,bvy)和/或位置(x0,y0)而确定的。在步骤2606处,该过程将一个或多个基于规则的约束应用于参考区域和/或参考位置(p,q),以限制参考区域与视频区域的重叠。[1171]图27是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例68进行讨论。在步骤2702处,该过程对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。在步骤2704处,对于在空域上位于当前视频块相对于包括当前视频块的编解码单元(cu)的位置(x0,y0)处的样点,该过程计算在缓冲区中的参考位置处开始的对应参考区域。在步骤2706处,该过程调整参考区域和参考位置以确定先前处理的块中的哪些被用于预测。[1172]图28是可视数据处理的示例方法的流程图。该流程图的步骤结合在本文档的第4章节中讨论的示例69‑75进行讨论。在步骤2802处,该过程对于视频的当前视频块和当前视频块的比特流表示之间的转换,使用视频的分量x来确定与视频的分量c的当前视频块相对应的块矢量的有效性,其中,分量x不同于视频的亮度分量。在步骤2804处,该过程当确定块矢量对于当前视频块有效时,使用块矢量来执行该转换,其中,该转换在帧内块复制(ibc)模式下被执行,其中该帧内块复制(ibc)模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。[1173]本文档的一些实施例现在以基于条款的格式呈现。[1174]a1.一种可视媒体处理的方法,包括:[1175]对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;[1176]对于在空域上位于当前视频块相对于包括当前视频块的编解码树单元的左上角位置的位置(x0,y0)处并具有块矢量(bvx,bvy)的样点,计算缓冲区中在参考位置(p,q)处的对应参考,其中,参考位置(p,q)是使用块矢量(bvx,bvy)和位置(x0,y0)而确定的;以及[1177]当确定参考位置(p,q)位于缓冲区之外时,至少部分基于当前视频块相对于包括当前视频块的编解码树单元的位置来重新计算参考位置。[1178]a2.根据条款a1所述的方法,其中,参考位置(p,q)被确定为p=x0+bvx并且q=y0+bvy。[1179]a3.根据条款1所述的方法,其中,重新计算包括:[1180]至少部分基于当前视频块是位于相对于编解码树单元的水平方向还是位于相对于编解码树单元的垂直方向来重新计算参考位置(p,q)。[1181]a4.根据条款a1‑a3中任一项或多项所述的方法,其中,当前视频块位于相对于编解码树单元的水平方向。[1182]a5.根据条款a1‑a3中任一项或多项所述的方法,其中,当前视频块位于相对于编解码树单元的垂直方向。[1183]a6.根据条款1所述的方法,其中,重新计算包括:[1184]至少部分基于当前视频块是否位于距可视媒体数据的边界的预定义距离内来重新计算参考位置(p,q)。[1185]a7.根据条款a1‑a2和a6中任一项或多项所述的方法,其中,当前视频块位于距可视媒体数据的边界的预定义距离内。[1186]a8.根据条款a1‑a2中任一项或多项所述的方法,其中,响应于确定(y0+bvy)位于范围[0,…,n‑1]之外,参考位置(p,q)被指定预定义值,其中n是表示缓冲区的y维度的整数。[1187]a9.根据条款a1‑a2中任一项或多项所述的方法,其中,响应于确定(x0+bvx)位于范围[0,…,m‑1]之外,参考位置(p,q)被指定预定义值,其中m是表示缓冲区的x维度的整数。[1188]a10.根据条款a1‑a2中任一项或多项所述的方法,其中,参考位置(p,q)被指定为((x0+bvx)modm,y0+bvy),其中“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数,并且m是表示缓冲区的x维度的整数。[1189]a11.根据条款a1‑a2中任一项或多项所述的方法,其中,参考位置(p,q)被指定为(x0+bvx,(y0+bvy)modn)),其中“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数,并且n是表示缓冲区的y维度的整数。[1190]a12.根据条款a10所述的方法,其中,响应于确定((x0+bvx)modm,y0+bvy)位于缓冲区之外,附加处理被执行。[1191]a13.根据条款a12所述的方法,其中,响应于确定(x0+bvx,(y0+bvy)modn))位于缓冲区之外,附加处理被执行。[1192]b1.一种可视媒体处理的方法,包括:[1193]对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;[1194]对于在空域上位于当前视频块相对于包括当前视频块的图片的左上角位置的位置(x,y)处并具有块矢量(bvx,bvy)的样点,至少部分基于满足与以下中的至少一个相关联的一个或多个条件来将块矢量(bvx,bvy)指定为有效:当前视频块的位置(x,y)、当前视频块的大小、图片的大小、包括当前视频块的编解码树单元的大小、或缓冲区的大小;[1195]执行检查以确定块矢量(bvx,bvy)有效;以及[1196]当识别出块矢量(bvx,bvy)有效时,计算缓冲区中在参考位置(p,q)处的对应参考,其中,参考位置(p,q)是使用块矢量(bvx,bvy)、位置(x,y)以及缓冲区的大小而确定的。[1197]b2.根据条款b1所述的方法,其中,参考位置(p,q)被确定为((x+bvx)%wbuf,(x+bvy)%hbuf),其中,wbuf×hbuf表示缓冲区的大小,其中,“%”表示模运算,并且“x%y”在x<0时被定义为x–y*floor(x/y),其中floor(a)是不大于a的最大整数。[1198]c1.一种可视媒体处理的方法,包括:[1199]对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定当前视频块的块矢量(bvx,bvy)或块矢量差(bvdx,bvdy),其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;以及[1200]将块矢量(bvx,bvy)的至少一个分量或块矢量差(bvdx,bvdy)的至少一个分量归一化为位于一范围内。[1201]c2.根据条款c1所述的方法,其中,归一化包括:[1202]基于缓冲区的大小来将块矢量(bvx,bvy)的至少一个分量或块矢量差(bvdx,bvdy)的至少一个分量归一化为位于该范围内,其中,缓冲区存储用于帧内块复制模式下的预测的参考样点。[1203]c3.根据条款c2所述的方法,其中,分量bvx被归一化为(bvxmodm),其中m是表示缓冲区的x维度的整数,并且“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数。[1204]c4.根据条款c2所述的方法,其中,分量bvx被归一化为((bvx+x0)modm)‑v,其中m是表示缓冲区的x维度的整数,“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数,并且v是预定义值。[1205]c5.根据条款c4所述的方法,其中,v是64。[1206]c6.根据条款c4所述的方法,其中,v是m/2。[1207]c7.根据条款c4所述的方法,其中,v是x0。[1208]c8.根据条款c2所述的方法,其中,分量bvy被归一化为(bvymodn),其中n是表示缓冲区的y维度的整数,并且“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数。[1209]c9.根据条款c2所述的方法,其中,分量bvy被归一化为((bvy+y0)modn)‑v,其中n是表示缓冲区的y维度的整数,“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数,并且v是预定义值。[1210]c10.根据条款c9所述的方法,其中,v是64。[1211]c11.根据条款c9所述的方法,其中,v是n/2。[1212]c12.根据条款c9所述的方法,其中,v是y0。[1213]c13.根据条款c1所述的方法,其中,分量bvx和bvy被归一化为位于不同的范围内。[1214]c14.根据条款c2所述的方法,其中,分量bvdx被归一化为(bvdxmodm),其中m是表示缓冲区的x维度的整数,并且“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数。[1215]c15.根据条款c2所述的方法,其中,分量bvdx被归一化为((bvdx+x0)modm)‑v,其中m是表示缓冲区的x维度的整数,“mod”是定义为xmody=x–y*floor(x/y)的模运算,其中floor(a)是不大于a的最大整数,并且v是预定义值。[1216]c16.根据条款c15所述的方法,其中,v是64。[1217]c17.根据条款c15所述的方法,其中,v是m/2。[1218]c18.根据条款c15所述的方法,其中,v是x0。[1219]c19.根据条款c2所述的方法,其中,分量bvdy被归一化为(bvdymodn),其中n是表示缓冲区的y维度的整数,并且“mod”是模运算。[1220]c20.根据条款c2所述的方法,其中,分量bvdy被归一化为((bvdy+y0)modn)‑v,其中n是表示缓冲区的y维度的整数,“mod”是模运算,并且v是预定义值。[1221]c21.根据条款c20所述的方法,其中,v是64。[1222]c22.根据条款c20所述的方法,其中,v是n/2。[1223]c23.根据条款c20所述的方法,其中,v是y0。[1224]c24.根据条款c1所述的方法,其中,分量bvdx和bvdy被归一化为位于不同的范围内。[1225]d1.一种可视媒体处理的方法,包括:[1226]对于当前视频块和当前视频块的比特流表示之间的转换,确定用于存储用于帧内块复制模式下的预测的重构样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;以及[1227]根据顺序来更新存储在缓冲区中的重构样点。[1228]d2.根据条款d1所述的方法,其中,缓冲区根据先后顺序而更新。[1229]d3.根据条款d1所述的方法,其中,缓冲区根据重构块的顺序而更新。[1230]d4.根据条款d1所述的方法,还包括:[1231]当确定缓冲区已满时,用最近重构的样点替换存储在缓冲区中的重构样点。[1232]d5.根据条款d1所述的方法,其中,存储在缓冲区中的重构样点以先进先出的顺序被替换。[1233]d6.根据条款d1所述的方法,其中,存储在缓冲区中的重构样点的最老集合被替换。[1234]d7.根据条款d1所述的方法,其中,存储在缓冲区中的重构样点被指定优先级值,并且其中,存储在缓冲区中的重构样点根据优先级值被替换。[1235]d8.根据条款d1所述的方法,其中,存储在缓冲区中的重构样点的子集被标记以用于未来的替换,并且其中,不包括在该子集中的样点最初被替换。[1236]d9.根据条款d7所述的方法,其中,被包括在比特流表示中的标志指示满足一个或多个条件的优先级值。[1237]d10.根据条款d7所述的方法,其中,优先级值是基于当前视频块的特性而指定的。[1238]d11.根据条款d9所述的方法,其中,一个或多个条件与使用调色板模式和/或帧内块编解码(ibc)模式和/或变换跳过模式编解码的重构样点的百分比相关。[1239]d12.根据条款d11所述的方法,其中,响应于确定使用调色板模式和/或帧内块编解码(ibc)模式和/或变换跳过模式编解码的重构样点的百分比超过阈值,将当前视频块中的所有样点指定为高优先级。[1240]d13.根据条款d12所述的方法,其中,阈值基于当前视频块的尺寸和/或当前视频块的颜色分量和/或包括当前视频块的编解码树单元(ctu)的尺寸。[1241]d14.根据条款d13所述的方法,其中,阈值作为字段被包括在比特流表示中。[1242]d15.根据条款d14所述的方法,其中,字段被包括在序列参数集(sps)、图片参数集(pps)、序列头、条带头、片组、片级别或视频区域中。[1243]d16.根据条款d4所述的方法,其中,确定缓冲区中的可用样点的数量等于或大于阈值指示缓冲区已满。[1244]d17.根据条款d16所述的方法,其中,阈值是64×64×3个亮度样点。[1245]e1.一种可视媒体处理的方法,包括:[1246]执行当前视频块和当前视频块的比特流表示之间的转换,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,用于预测计算的第一精确度低于用于重构计算的第二精确度。[1247]e2.根据条款e1所述的方法,其中,预测计算包括使用clip{{p+[1<<(b‑1)]}>>b,0,(1<<bitdepth)‑1}<<b从重构样点值确定预测样点值,其中p是重构样点值,b是预定义的比特移位值,bitdepth是预测样点精确度,并且“clip”是定义为clip(x,y,z)=(x<y)?y:(x>z?z:x)的裁剪操作。[1248]e3.根据条款e1所述的方法,其中,预测计算包括使用clip{{p+[1<<(b‑1)‑1]}>>b,0,(1<<bitdepth)‑1}<<b从重构样点值确定预测样点值,其中p是重构样点值,b是预定义的比特移位值,bitdepth是预测样点精确度,并且“clip”是定义为clip(x,y,z)=(x<y)?y:(x>z?z:x)的裁剪操作。[1249]e4.根据条款e1所述的方法,其中,预测计算包括使用((p>>b)+(1<<(bitdepth‑1)))<<b从重构样点值确定预测样点值,其中p是重构样点值,b是预定义的比特移位值,并且bitdepth是预测样点精确度。[1250]e5.根据条款e1所述的方法,其中,预测计算包括使用(clip((p>>b),0,(1<<(bitdepth‑b)))+(1<<(bitdepth‑1)))<<b从重构样点值确定预测样点值,其中p是重构样点值,b是预定义的比特移位值,bitdepth是预测样点精确度,并且“clip”是定义为clip(x,y,z)=(x<y)?y:(x>z?z:x)的裁剪操作。[1251]e6.根据条款e1所述的方法,其中,预测计算包括基于是否应用了环路整形(ilr)步骤,使用裁剪操作从重构样点值确定预测样点值。[1252]e7.根据条款e1‑e5中任一项或多项所述的方法,其中,b是重构样点和当前视频块的比特深度的差。[1253]e8.根据条款e1所述的方法,其中,第一精确度和/或第二精确度和/或第一精确度和第二精确度之间的差作为字段在比特流表示中被信令通知。[1254]e9.根据条款e1所述的方法,其中,预测计算包括从重构样点值确定预测样点值,其中,预测样点值的第一部分具有第一精确度,并且预测样点值的第二部分具有第二精确度。[1255]e10.根据条款e9所述的方法,其中,当前视频块位于包括具有不同精确度的样点的编解码树单元之内。[1256]e11.根据条款e10所述的方法,其中,具有不同精确度的样点被包括在针对当前视频块允许的参考区域中。[1257]e12.根据条款e9所述的方法,其中,与包括另一视频块的编解码树单元相关联的第一参考区域使用第一精确度,并且与包括当前视频块的编解码树单元相关联的第二参考区域使用第二精确度。[1258]e13.根据条款e12所述的方法,其中,第一参考区域对应于第一颜色分量,并且第二参考区域对应于第二颜色分量。[1259]f1.一种可视媒体处理的方法,包括:[1260]使用帧内块复制模式来执行当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×nm的参考区域被使用,其中n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×n个最近的可用编解码树单元的样点。[1261]f2.根据条款f1所述的方法,其中,参考区域的尺寸为128×128个样点,编解码树单元尺寸为64×64,并且缓冲区包括在包括当前视频块的相同编解码树单元行中的四个最近的可用编解码树单元。[1262]f3.根据条款f1所述的方法,其中,参考区域的尺寸为128×128个样点,编解码树单元尺寸为32×32,并且缓冲区包括在包括当前视频块的相同编解码树单元行中的十六个最近的可用编解码树单元。[1263]g1.一种可视媒体处理的方法,包括:[1264]使用帧内块复制模式来执行当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×pm的参考区域被使用,其中n、p和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×p‑1个最近的可用编解码树单元的样点。[1265]g2.根据条款g1所述的方法,其中,参考区域的尺寸为128×128个样点或256×64个样点,编解码树单元尺寸为64×64,并且缓冲区包括在包括当前视频块的相同编解码树单元行中的三个最近的可用编解码树单元。[1266]g3.根据条款g1所述的方法,其中,参考区域的尺寸为128×128个样点或512×32个样点,编解码树单元尺寸为32×32,并且缓冲区包括在包括当前视频块的相同编解码树单元行中的十五个最近的可用编解码树单元。[1267]g4.根据条款g1所述的方法,其中,编解码树单元的尺寸为m×m。[1268]g5.根据条款g1至g4中任一项所述的方法,其中,缓冲区之外的样点在该转换期间不被允许使用。[1269]h1.一种可视媒体处理的方法,包括:[1270]使用帧内块复制模式来执行视频区域的虚拟管道数据单元(vpdu)的当前视频块和当前视频块的比特流表示之间的转换,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息,其中,在该转换期间,尺寸为nm×nm的参考区域被使用,vpdu的尺寸为km×km,其中k、n和m为整数,并且其中,当前视频块位于编解码树单元中,并且其中,参考区域包括来自对应于当前视频块的编解码树单元行中的n×n‑k个最近的可用编解码树单元的样点。[1271]h2.根据条款h1所述的方法,其中,参考区域的尺寸为128×128个样点,编解码树单元尺寸为64×64,vpdu的尺寸为64×64,并且缓冲区包括在包括当前视频块的相同编解码树单元行中的三个最近的可用编解码树单元。[1272]h3.根据条款h1所述的方法,其中,参考区域的尺寸为128×128个样点,编解码树单元尺寸为32×32,vpdu的尺寸为64×64,并且缓冲区包括在包括当前视频块的相同编解码树单元行中的十二个最近的可用编解码树单元。[1273]i1.一种可视媒体处理的方法,包括:[1274]对于可视媒体数据的尺寸为w×h的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;[1275]对于在空域上位于当前视频块相对于包括当前视频块的尺寸为m×m的编解码树单元(ctu)的左上角位置的位置(x0,y0)处并具有块矢量(bvx,bvy)的样点,计算在缓冲区中的参考位置(p,q)处开始的对应参考区域,其中,参考位置(p,q)是使用块矢量(bvx,bvy)和/或位置(x0,y0)而确定的;以及[1276]将一个或多个基于规则的约束应用于参考区域和/或参考位置(p,q),以限制参考区域与视频区域的重叠。[1277]i2.根据条款i1所述的方法,其中,当ctu的尺寸为128×128、(x0,y0)被表示为(m×64,n×64)时,参考区域被限制与左上角被表示为((m‑2)×64,n×64)的尺寸为64×64的视频区域重叠,其中m和n为整数。[1278]i3.根据条款i1所述的方法,其中,当ctu的尺寸为128×128、(x0,y0)被表示为(m×64,n×64)时,参考区域被限制与左上角被表示为(x0‑128,y0)的尺寸为w×h的视频区域重叠,其中m和n为整数。[1279]i4.根据条款i1所述的方法,其中,当缓冲区的尺寸为km×m时,参考区域被限制与左上角被表示为(x0‑kmy0)的尺寸为w×h的视频区域重叠。[1280]i5.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,2n*64)时,重构块的左上角位置被表示为((2m‑2)*64,2n*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1281]i6.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,2n*64)时,重构块的左上角位置被表示为((2m‑1)*64,2n*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1282]i7.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,2n*64)时,重构块的左上角位置被表示为((2m‑1)*64,(2n+1)*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1283]i8.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,2n*64)时,重构块的左上角位置位于当前视频块的左上角位置处,其中m和n为整数,并且当前视频块的尺寸为64×64。[1284]i9.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为((2m+1)*64,(2n+1)*64)时,重构块的左上角位置位于当前视频块的左上角位置处,其中m和n为整数,并且当前视频块的尺寸为64×64。[1285]i10.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为((2m+1)*64,2n*64)时,重构块的左上角位置被表示为((2m‑1)*64,2n*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1286]i11.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为((2m+1)*64,2n*64)时,重构块的左上角位置被表示为((2m‑1)*64,(2n+1)*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1287]i12.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为((2m+1)*64,2n*64)时,重构块的左上角位置被表示为(2m*64,2n*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1288]i13.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为((2m+1)*64,2n*64)时,重构块的左上角位置位于当前视频块的左上角位置处,其中m和n为整数,并且当前视频块的尺寸为64×64。[1289]i14.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,(2n+1)*64)时,重构块的左上角位置被表示为((2m‑1)*64,(2n+1)*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1290]i15.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,(2n+1)*64)时,重构块的左上角位置被表示为(2m*64,2n*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1291]i16.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,(2n+1)*64)时,重构块的左上角位置被表示为((2m+1)*64,2n*64),其中m和n为整数,并且当前视频块的尺寸为64×64。[1292]i17.根据条款i1所述的方法,其中,当当前视频块的左上角位置被表示为(2m*64,(2n+1)*64)时,重构块的左上角位置位于当前视频块的左上角位置处,其中m和n为整数,并且当前视频块的尺寸为64×64。[1293]j1.一种可视媒体处理的方法,包括:[1294]对于可视媒体数据的当前视频块和当前视频块的比特流表示之间的转换,确定存储用于帧内块复制模式下的预测的参考样点的缓冲区,其中,该转换在帧内块复制模式下被执行,其中该帧内块复制模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息;[1295]对于在空域上位于当前视频块相对于包括当前视频块的编解码单元(cu)的位置(x0,y0)处的样点,计算在缓冲区中的参考位置处开始的对应参考区域;以及[1296]调整参考区域和参考位置以确定先前处理的块中的哪些被用于预测。[1297]j2.根据条款j1所述的方法,其中,当(y0>>6)&1==0时,多达两个先前处理的块用于预测,其中,两个先前处理的块的左上角位置被表示为((x>>6<<6)‑128,y>>6<<6)和((x>>6<<6)‑64,y>>6<<6)。[1298]j3.根据条款j1所述的方法,其中,当(y0>>6)&1==1时,左上角位置被表示为((x>>6<<6)‑64,y>>6<<6)的一个先前处理的块用于预测。[1299]k1.一种视频处理的方法,包括:[1300]对于视频的当前视频块和当前视频块的比特流表示之间的转换,使用视频的分量x来确定与视频的分量c的当前视频块相对应的块矢量的有效性,其中,分量x不同于视频的亮度分量;以及[1301]当确定块矢量对于当前视频块有效时,使用块矢量来执行该转换,其中,该转换在帧内块复制(ibc)模式下被执行,其中该帧内块复制(ibc)模式基于与和当前视频块位于相同视频区域中的重构块相关的运动信息。[1302]k2.根据条款k1所述的方法,其中,当前视频块在位置(x,y)处开始,并且其中,该确定包括确定块矢量对于其中isrec(((x+bvx)>>6<<6)+128‑(((y+bvy)>>6)&1)*64+(x%64),((y+bvy)>>6<<6)+(y%64))为真的情况无效,其中如果样点(x,y)通过ibc模式进行重构,则isrec(x,y)为真,并且块矢量被表示为(bvx,bvy))。[1303]k3.根据条款k1所述的方法,其中,分量c对应于视频的亮度分量。[1304]k4.根据条款k1所述的方法,其中,当前视频块是色度块,并且视频为4:4:4格式。[1305]k5.根据条款k1所述的方法,其中,当前视频块包括亮度分量和色度分量。[1306]k6.根据条款k1所述的方法,其中,视频为4:2:0格式,并且其中,当前视频块是在位置(x,y)处开始的色度块,并且其中,该确定包括确定块矢量对于其中isrec(c,((x+bvx)>>5<<5)+64‑(((y+bvy)>>5)&1)*32+(x%32),((y+bvy)>>5<<5)+(y%32))为真的情况无效,其中如果样点(x,y)通过ibc模式进行重构,则isrec(x,y)为真。[1307]k7.根据条款k1所述的方法,其中,该确定至少部分基于视频的分量x的样点的可用性。[1308]k8.根据条款k7所述的方法,其中,当前视频块在位置(x,y)处开始,并且其中,该确定包括确定块矢量对于其中isrec(c,((x+bvx)>>6<<6)+128‑(((y+bvy)>>6)&1)*64+(x%64),((y+bvy)>>6<<6)+(y%64))为真的情况无效,其中如果分量c的样点(x,y)可用并通过ibc模式进行重构,则isrec(c,x,y)为真,并且块矢量被表示为(bvx,bvy)。[1309]k9.根据条款k8所述的方法,其中,当前视频块是亮度块。[1310]k10.根据条款k8所述的方法,其中,当前视频块是色度块,并且视频为4:4:4格式。[1311]k11.根据条款k7所述的方法,其中,该确定包括确定视频的分量x的样点的可用性。[1312]k12.根据条款k7所述的方法,其中,当前视频块在位置(x,y)处开始,并且其中,该确定包括确定块矢量对于其中isrec(c,x+bvx+chroma_ctu_size,y)的情况无效,其中如果分量c的样点(x,y)可用并通过ibc模式进行重构,则isrec(c,x,y)为真,并且块矢量被表示为(bvx,bvy))并且chroma_ctu_size表示色度分量的编解码树单元的尺寸。[1313]k13.根据条款k12所述的方法,其中,色度分量的编解码树单元的尺寸为64。[1314]k14.根据条款k1所述的方法,还包括:[1315]确定存储用于帧内块复制模式下的预测的参考样点的缓冲区;以及[1316]对于在空域上位于当前视频块相对于包括当前视频块的编解码树单元(ctu)的左上角位置的位置(x0,y0)处的样点,计算在缓冲区中的参考位置(p,q)处开始的对应参考区域。[1317]k15.根据条款k14所述的方法,其中,缓冲区存储尺寸为m×m的块。[1318]k16.根据条款k14所述的方法,其中,缓冲区存储尺寸为n×m的块,其中m和n不相等。[1319]k17.根据条款k14所述的方法,其中,当满足一个或多个条件时,缓冲区被限制使用。[1320]k18.根据条款k14所述的方法,其中,当缓冲区与当前视频块在相同的区块/片/片组/条带内时,缓冲区被限制使用。[1321]l1.根据条款a1‑k18中任一项所述的方法,其中,该转换包括从当前视频块生成比特流表示。[1322]l2.根据条款a1‑k18中任一项所述的方法,其中,该转换包括从比特流表示生成当前视频块的像素值。[1323]l3.一种视频编码器装置,包括被配置为实施根据条款a1‑k18中任一项或多项所述的方法的处理器。[1324]l4.一种视频解码器装置,包括被配置为实施根据条款a1‑k18中任一项或多项所述的方法的处理器。[1325]l5.一种其上存储有代码的计算机可读介质,该代码体现用于实施根据条款a1‑k18中任一项或多项所述的方法的处理器可执行指令。[1326]在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到对应的比特流表示的转换期间被应用,反之亦然。当前视频块的比特流表示可以例如对应于比特流内并置的或分散在不同地方的比特,如通过语法定义的。例如,宏块可以根据变换和编解码误差残差值而编码,并且也可以使用比特流中的头和其它字段中的比特进行编码。[1327]从前面可以理解,为了说明的目的,本文已经描述了当前公开的技术的特定实施例,但是在不脱离本发明的范围的情况下,可以进行各种修改。因此,当前公开的技术不受除了所附权利要求之外的限制。[1328]本专利文档中描述的主题和功能操作的实施方式可以在各种系统、数字电子电路中被实施,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中被实施,或者在它们中的一个或多个的组合中被实施。本说明书中描述的主题的实施方式可以被实施为一个或多个计算机程序产品,即编码在有形和非暂时性计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。[1329]计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上执行。[1330]本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,fpga(fieldprogrammablegatearray,现场可编程门阵列)或asic(applicationspecificintegratedcircuit,专用集成电路)。[1331]适合于执行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。[1332]本说明书以及附图旨在被认为仅是示例性的,其中示例性意味着示例。如本文所使用的,“或”的使用旨在包括“和/或”,除非上下文另外清楚地指示。[1333]虽然本专利文档包含许多细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。[1334]类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。[1335]仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1