一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

不同视频单元之间的自适应环路滤波的制作方法

2022-05-08 10:27:14 来源:中国专利 TAG:
不同视频单元之间的自适应环路滤波1.相关申请的交叉引用2.根据适用的专利法和/或巴黎公约的规定,提出本技术是为了及时要求于2019年9月27日提交的国际专利申请第pct/cn2019/108763号的优先权和权益。出于美国法律的所有目的,上述申请的全部公开内容通过引用并入作为本技术的公开内容的一部分。
技术领域
:3.本专利文档总体上针对视频编码和解码技术。
背景技术
::4.视频编解码标准主要是通过众所周知的itu-t和iso/iec标准的发展而得以演进。itu-t制作了h.261和h.263标准,iso/iec制作了mpeg-1和mpeg-4visual标准,并且两个组织联合制作了h.262/mpeg-2视频标准和h.264/mpeg-4高级视频编解码(advancedvideocoding,avc)标准和h.265/高性能视频编解码(highefficiencyvideocoding,hevc)标准。从h.262开始,视频编解码标准基于混合视频编解码结构,其中利用时域预测加变换编解码。为了探索hevc之外的未来视频编解码技术,由vceg和mpeg于2015年联合成立联合视频探索团队(jvet)。从那时起,jvet采用了许多新方法并将其纳入名为联合探索模型(jem)的参考软件。2018年4月,在vceg(q6/16)与iso/iecjtc1sc29/wg11(mpeg)之间的jvet创立,以致力于下一代通用视频编解码(vvc)标准,目标是与hevc相比降低50%比特率。技术实现要素:5.使用所公开的视频编码、转码或解码技术,视频编码器或解码器的实施例可以处理编解码树块的虚拟边界,以提供更好的压缩效率和编码或解码工具的更简单实现方式。6.在一个示例方面,公开一种视频处理的方法。方法包括,为视频的当前视频单元与视频的比特流表示之间的转换,独立于当前块的第二邻域区域的信息来确定当前块的第一邻域区域中的一个或多个样点对于转换的编解码过程的可用性。第二邻域区域与第一邻域区域相邻,并且一个或多个样点在确定为不可用的情况下被填充。编解码过程包括自适应环路滤波器(alf)工具,alf工具包括alf分类过程和/或alf滤波过程。方法还包括基于确定执行转换。7.在另一个示例方面,公开一种视频处理的方法。方法包括,为视频的当前视频单元与视频的比特流表示之间的转换,确定k个区域中的至少一个样点在以下情况中不可用于滤波操作:(1)k个区域中的k个代表性样点中的m个代表性样点是在与当前视频单元不同的视频单元中,以及(2)不允许滤波操作跨视频的多个视频单元访问样点,其中m和k是整数。方法还包括基于确定执行转换。8.在另一个示例方面,公开了一种视频处理的方法。方法包括,执行在视频与视频的比特流表示之间的转换,该视频包括视频图片,该视频图片包括视频单元。语法元素的第一集合被包括在比特流表示中以指示跨视频单元的边界的样点是否在适用于视频单元的边界的滤波过程中可访问,并且语法元素的第一集合包含在不同级别中。9.在另一个示例方面,公开一种视频处理的方法。方法包括,为视频的当前块与视频的比特流的表示之间的转换,做出关于当前块的邻域块中样点是否在与当前块相同的视频区域中的第一确定。邻域块位于(1)当前块左上方、(2)当前块右上方、(3)当前块右下方、(4)当前块右下方。方法还包括,使用第一确定来做出关于将当前块之外的样点用于当前块的转换的编解码工具的适用性的第二确定,以及根据第一确定和第二确定执行转换。10.在另一个示例方面,公开一种视频处理的方法。方法包括,执行在视频图片的视频块与视频块的比特流表示之间的转换。在此,使用编解码树块的逻辑分组来处理视频块,并且基于底部编解码树块的底边界是否在视频图片的底边界之外来处理编解码树块。11.在另一个示例方面,公开另一种视频处理方法。方法包括:基于当前视频块的编解码树块的条件,确定在环路滤波期间虚拟样点的使用状态;以及执行与虚拟样点的使用状态一致的在视频块与视频块的比特流表示之间的转换。12.在又一个示例方面,公开另一种视频处理方法。该方法包括:在逻辑上分组为一个或多个视频条带或视频砖的视频图片与视频图片的比特流表示之间的转换期间,确定禁止在自适应环路滤波过程中使用另一个条带或砖中的样点,以及执行与确定一致的转换。13.在又一个示例方面,公开另一种视频处理方法。方法包括:在视频图片的当前视频块与当前视频块的比特流表示之间的转换期间,确定当前视频块包括位于视频图片的视频单元的边界处的样点,以及基于确定执行转换,其中执行转换包括使用对于视频图片中的所有边界类型都相同的统一方法来生成用于环路滤波过程的虚拟样点。14.在又一个示例方面,公开另一种视频处理的方法。方法包括:在视频图片的当前视频块与当前视频块的比特流表示之间的转换期间,确定在转换期间应用可用于视频图片的多个自适应环路滤波器(alf)样点选择方法中的一个,以及通过应用多个alf样点选择方法中的一个来执行转换。15.在又一个示例方面,公开另一种视频处理的方法。方法包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间在视频图片的当前视频块的样点之上执行环路滤波操作;其中边界规则禁止使用跨视频图片的虚拟管线数据单元(vpdu)的样点,以及使用环路滤波操作的结果执行转换。16.在又一个示例方面,公开另一种视频处理的方法。方法包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间在视频图片的当前视频块的样点之上执行环路滤波操作;其中边界规则指定对于跨视频图片边界的当前视频块的位置使用在不使用填充情况下所生成的样点,以及使用环路滤波操作的结果执行转换。17.在又一个示例方面,公开另一种视频处理的方法。方法包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间在视频图片的当前视频块的样点之上执行环路滤波操作;其中边界规则指定对于环路滤波操作选择具有维度的滤波器使得在环路滤波期间所使用的当前视频块的样点不跨视频图片的视频单元的边界,以及使用环路滤波操作的结果执行转换。18.在又一个示例方面,公开另一种视频处理的方法。方法包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间在视频图片的当前视频块的样点之上执行环路滤波操作;其中边界规则指定对于环路滤波操作基于环路滤波是否需要填充样点来选择修剪参数或滤波器系数,以及使用环路滤波操作的结果执行转换。19.在又一个示例方面,公开另一种视频处理的方法。方法包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间在视频图片的当前视频块的样点之上执行环路滤波操作;其中边界规则取决于当前视频块的色彩分量标识,以及使用环路滤波操作的结果执行转换。20.在又一个示例方面,公开了配置为执行上述方法的视频编码设备。21.在又一个示例方面,公开了配置为执行上述方法的视频解码器。22.在又一个示例方面,公开一种计算机可读介质。介质存储代码,该代码在执行时使得处理器实现上述方法中的一个或多个。23.公开的技术的上述或其他方面和特征将在附图、说明书和权利要求书中更为详细地描述。附图说明24.图1示出了具有18乘12个亮度编解码树单元ctu的图片的示例,该图片被分割成12个片和3个栅格扫描条带。25.图2示出了具有18乘12个亮度ctu的图片的示例,该图片被分割成12个片和9个矩形条带。26.图3示出了被分割成4个片、11个砖和4个矩形条带的图片的示例。27.图4a示出了当k=m,l<n时的跨图片边界的编解码树块ctb的示例。28.图4b示出了当k<m,l=n时的跨图片边界的编解码树块ctb的示例。29.图4c示出了当k<m,l<n时的跨图片边界的编解码树块ctb的示例。30.图5示出了编码器块示意图的示例。31.图6是图片样点及8×8网格上的水平和垂直块边界、以及8×8样点的非重叠块,其可以并行地去块化。32.图7示出了滤波器开/关判定及强/弱滤波器选择中涉及的像素的示例。33.图8示出了四个一维定向图案。34.图9示出了几何自适应环路滤波(galf)滤波器形状的示例(左:5×5菱形,中间:7×7菱形,右:9×9菱形)。35.图10示出了5×5菱形滤波器支持相对坐标。36.图11示出了5×5菱形滤波器支持相对坐标的示例。37.图12a示出了子采样的拉普拉斯算符计算的示例布置。38.图12b示出了子采样的拉普拉斯算符计算的另一个示例布置。39.图12c示出了子采样的拉普拉斯算符计算的另一个示例布置。40.图12d示出了子采样的拉普拉斯算符计算的又一个示例布置。41.图13示出了vtm-4.0中亮度分量的环路滤波器线缓冲器需求的示例。42.图14示出了vtm-4.0中色度分量的环路滤波器线缓冲器需求的示例。43.图15a示出了当n=4时在虚拟边界处的alf块分类的示例。44.图15b示出了当n=4时在虚拟边界处的alf块分类的另一个示例。45.图16a图示了在虚拟边界处的修改的亮度alf滤波的示例。46.图16b图示了在虚拟边界处的修改的亮度alf滤波的另一个示例。47.图16c图示了虚拟边界处的修改的亮度alf滤波的又一个示例。48.图17a示出了虚拟边界处的修改的色度alf滤波的示例。49.图17b示出了虚拟边界处的修改的色度alf滤波的另一个示例。50.图18a示出了水平环绕运动补偿的示例。51.图18b示出了水平环绕运动补偿的另一个示例。52.图19图示了修改的自适应环路滤波器的示例。53.图20示出了在视频图片中处理ctu的示例。54.图21示出了修改的自适应环路滤波器边界的示例。55.图22是视频处理设备的示例的框图。56.图23是视频处理的示例方法的流程图。57.图24示出了3x2布局中hec的图像的示例。58.图25示出了用于两种类型边界的样点的填充线的数量的示例。59.图26示出了在图片中处理ctu的示例。60.图27示出了在图片中处理ctu的另一个示例。61.图28示出了当前样点和需要被访问的样点的另一个示例。62.图29示出了填充“不可用”邻域样点的另一个示例。63.图30示出了需要在alf分类过程中采用的样点的示例。64.图31是其中可实现所公开的技术的示例视频处理系统的框图。65.图32是根据本技术的用于视频处理的方法的流程表示。66.图33是根据本技术的用于视频处理的另一个方法的流程表示。67.图34是图示示例视频编解码系统的框图。68.图35是图示根据本公开的一些实施例的编码器的框图。69.图36是图示根据本公开的一些实施例的解码器的框图。具体实施方式70.本文档中使用章节标题以便于理解并且不将章节中公开的实施例仅限制于该章节。另外,尽管参考通用视频编解码或其他指定视频编解码器描述某些实施例,但是所公开的技术还适用于其他视频编解码技术。此外,尽管一些实施例详细描述视频编解码步骤,但是将理解还将由解码器实现解开编码的对应解码步骤。此外,术语“视频处理”涵盖视频编码或压缩、视频解码或解压缩和视频转码,其中视频像素从一个压缩格式表示成另一个压缩格式或者以不同压缩比特率表示。71.1.概述72.该文档涉及视频编解码技术。具体地,它涉及图片/条带/片/砖边界和虚拟边界编解码,特别是对于非线性自适应环路滤波器。可以应用于像hevc此类现有视频编解码标准或者待最终确定的标准(通用视频编解码)。也可以适用于未来的视频标准或视频编解码器。73.2.最初讨论74.视频编解码标准主要是通过众所周知的itu-t和iso/iec标准的发展而得以演进。itu-t制作了h.261和h.263标准,iso/iec制作了mpeg-1和mpeg-4visual标准,并且两个组织联合制作了h.262/mpeg-2视频标准和h.264/mpeg-4高级视频编解码(advancedvideocoding,avc)标准和h.265/hevc标准。从h.262开始,视频编解码标准基于混合视频编解码结构,其中利用时域预测加变换编解码。为了探索hevc之外的未来视频编解码技术,由vceg和mpeg于2015年联合成立联合视频探索团队(jvet)。从那时起,jvet采用了许多新方法并将其纳入名为联合探索模型(jem)的参考软件。2018年4月,在vceg(q6/16)与iso/iecjtc1sc29/wg11(mpeg)之间的jvet创立,以致力于vvc标准,目标是与hevc相比降低50%比特率。75.2.1色彩空间和色度子采样76.色彩空间——也称为色彩模型(或色彩系统)——是抽象的数学模型,其简单地将色彩的范围描述为数字的元组,通常为3或4个值或色彩分量(例如rgb)。基本上,色彩空间是坐标系和子空间的详细阐述。77.对于视频压缩,最频繁使用的色彩空间是ycbcr和rgb。78.ycbcr、y'cbcr或ypb/cbpr/cr——也称为ycbcr或y'cbcr——是一族色彩空间,用作视频和数字摄影系统中色彩图像管线的一部分。y'是亮度分量,并且cb和cr是蓝差和红差色度分量。y'(带撇号)与y(亮度)区分开,意味着基于伽玛校正的rgb原色来非线性编码光强度。79.色度子采样是一种通过对色度信息实现比对亮度信息更低的分辨率来编码图像的实践,利用了人类视觉系统对色差的敏锐度低于对亮度的敏锐度。80.2.1.1色彩格式4:4:481.三个y'cbcr分量中的每一个均具有相同的采样率,因此没有色度子采样。该方案有时用于高端胶片扫描仪和电影后期制作中。82.2.1.2色彩格式4:2:283.两个色度分量以亮度采样率的一半来采样:水平色度分辨率减半。这将未压缩的视频信号的带宽降低三分之一,而几乎没有视觉差84.2.1.3色彩格式4:2:085.在4:2:0中,水平采样是4:1:1的两倍,但是由于cb和cr通道仅在此方案中的每个交替线上采样,因此垂直分辨率减半。数据速率因此是相同的。cb和cr各自以2的因子水平地和垂直地子采样。4:2:0方案有三种变型,具有不同的水平和垂直选址。86.在mpeg-2中,cb和cr水平地共址。cb和cr在垂直方向上选址在像素之间(间隙地选址)。87.在jpeg/jfif、h.261和mpeg-1中,cb和cr间隙地、中途地选址在交替的亮度样点之间。88.在4:2:0dv中,cb和cr在水平方向上共址。在垂直方向上,它们共址于交替的线上。89.2.2各种视频单元90.图片被分成一个或多个片行和一个或多个片列。片是ctu的序列,其覆盖图片的矩形区域。91.片被分成一个或多个砖,每砖块由片内的许多ctu行构成。92.未被分割成多个砖的片也被称为砖。但是,作为片的真子集的砖不称为片。93.条带或是含有图片的若干片或是含有片的若干砖。94.支持两种条带模式,即栅格扫描条带模式和矩形条带模式。在栅格扫描条带模式中,条带含有图片的片栅格扫描中的片的序列。在矩形条带模式中,条带含有图片的若干砖,这些砖统一形成图片的矩形区域。矩形条带内的砖按条带的砖栅格扫描的顺序排列。95.图1示出了图片的栅格扫描条带分割的示例,其中图片被分成12个片和3个栅格扫描条带。96.图2示出了图片的矩形条带分割的示例,其中图片被分成24个片(6个片列和4个片行)和9个矩形条带。97.图3示出了被分割成片、砖和矩形条带的图片的示例,其中图片被分成4个片(2个片列和2个片行)、11个砖(左顶片含有1个砖,右顶片含有5个砖,左底片含有2个砖,并且右底片含有3个砖)和4个矩形条带。98.2.2.1ctu/ctb大小99.在vvc中,通过语法元素log2_ctu_size_minus2在sps中信令通知的ctu大小可以小到4x4。100.7.3.2.3序列参数集rbsp语法101.102.[0103][0104]log2_ctu_size_minus2加2指定每个ctu的亮度编解码树块大小。[0105]log2_min_luma_coding_block_size_minus2加2指定最小亮度编解码块大小。[0106]变量ctblog2sizey、ctbsizey、mincblog2sizey、mincbsizey、mintblog2sizey、maxtblog2sizey、mintbsizey、maxtbsizey、picwidthinctbsy、picheightinctbsy、picsizeinctbsy、picwidthinmincbsys导出如下:[0107]ctblog2sizey=log2_ctu_size_minus2 2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-9)[0108]ctbsizey=1《《ctblog2sizeyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-10)[0109]mincblog2sizey=log2_min_luma_coding_block_size_minus2 2ꢀꢀꢀꢀ(7-11)[0110]mincbsizey=1《《mincblog2sizeyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-12)[0111]mintblog2sizey=2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-13)[0112]maxtblog2sizey=6ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-14)[0113]mintbsizey=1《《mintblog2sizeyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-15)[0114]maxtbsizey=1《《maxtblog2sizeyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-16)[0115]picwidthinctbsy=ceil(pic_width_in_luma_samples÷ctbsizey)ꢀꢀꢀ(7-17)[0116]picheightinctbsy=ceil(pic_height_in_luma_samples÷ctbsizey)ꢀꢀ(7-18)[0117]picsizeinctbsy=picwidthinctbsy*picheightinctbsyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7-19)[0118]picwidthinmincbsy=pic_width_in_luma_samples/mincbsizeyꢀꢀꢀꢀꢀꢀ(7-20)[0119]picheightinmincbsy=pic_height_in_luma_samples/mincbsizeyꢀꢀꢀꢀꢀ(7-21)[0120]picsizeinmincbsy=picwidthinmincbsy*picheightinmincbsyꢀꢀꢀꢀꢀꢀꢀꢀ(7-22)[0121]picsizeinsamplesy=pic_width_in_luma_samples*pic_height_in_luma_samplesꢀꢀꢀꢀꢀꢀ(7-23)[0122]picwidthinsamplesc=pic_width_in_luma_samples/subwidthcꢀꢀꢀꢀꢀꢀ(7-24)[0123]picheightinsamplesc=pic_height_in_luma_samples/subheightcꢀꢀꢀ(7-25)[0124]2.2.2图片中的ctu[0125]假设ctb/lcu的大小由mxn表示(典型地,m等于n,如hevc/vvc中所定义),并且对于位于图片(或片或条带或其他类型,以图片边界为例)边界处的ctb,kxl个样点位于图片边界内,其中k《m或者l《n。对于图4a-4c中描绘的那些ctb,ctb的大小仍然等于m×n,然而ctb的底边界/右边界在图片之外。[0126]图4a示出了跨底图片边界的ctb。图4b示出了跨右图片边界的ctb。图4c示出了跨右下图片边界的ctb[0127]图4a-4c示出了跨图片边界的ctb的示例,(a)k=m,l《n;(b)k《m,l=n;(c)k《m,l《n[0128]2.3典型视频编解码器的编解码流程[0129]图5示出了vcc的编码器框图的示例,其含有三个环路滤波块:去块化滤波器(df)、样点自适应偏移(sao)和alf。不同于使用预定义滤波器的df,在编解码边信息信令通知偏移和滤波器系数的情况下,sao和alf分别通过添加该偏移和通过应用有限脉冲响应(fir)滤波器,利用当前图片的原始样点来降低原始样点与重构样点之间的均方差。alf被定位在每个图片的最后处理阶段并可以视为尝试捕捉和修复由先前阶段创建的伪影的工具。[0130]2.4去块化滤波器(db)[0131]db的输入是环路滤波器之前的重构样点。[0132]首先滤波图片中的垂直边缘。然后,将图片中的水平边缘通过由垂直边缘滤波过程所修改的样点作为输入来滤波。每个ctu的ctb中的垂直边缘和水平边缘均以编解码单位为基础来处理。从编解码块的左手侧的边缘开始以其几何顺序穿过边缘朝向编解码块的右手侧行进,来滤波编解码单元中编解码块的垂直边缘。从编解码块顶部的边缘开始以其几何顺序穿过边缘朝向编解码块的底部行进,来滤波编解码单元中编解码块的水平边缘。[0133]图6是图片样点及8×8网格上的水平和垂直块边界、以及8×8样点的非重叠块,其可以并行地去块化。[0134]2.4.1.边界决定[0135]将滤波应用于8x8的块边界。此外,它必须是变换块边界或编解码子块边界(例如,由于使用仿射运动预测atmvp)。对于没有此类边界的那些滤波器,禁用滤波器。[0136]2.4.1边界强度计算[0137]对于变换块边界/编解码子块边界,如果它位于8x8网格中,则可以对其滤波并且该边缘的bs[xdi][ydj](其中[xdi][ydj]表示坐标)的设置分别定义在表1和表2中。[0138]表1.边界强度(当禁用spsibc时)[0139][0140]表2.边界强度(当启用spsibc时)[0141][0142][0143]2.4.3亮度分量的去块化决定[0144]在本小节中描述了去块化决定过程。[0145]图7示出了滤波器开/关判定及强/弱滤波器选择中涉及的像素的示例。[0146]更宽更强的亮度滤波器是只有条件1、条件2和条件3都为真(true)时才使用的滤波器。[0147]条件1是“大块条件”。该条件检测p侧和q侧的样点是否属于大块,该大块分别由变量bsidepislargeblk和bsideqislargeblk表示。bsidepislargeblk和bsideqislargeblk定义如下。[0148]bsidepislargeblk=((边缘类型是垂直的且p0属于宽度》=32的cu)||(边缘类型是水平的且p0属于高度》=32的cu))?true:false[0149]bsideqislargeblk=((边缘类型是垂直的且q0属于宽度》=32的cu)||(边缘类型是水平的且q0属于高度》=32的cu))?true:false[0150]基于bsidepislargeblk和bsideqislargeblk,条件1定义如下。[0151]condition1=(bsidepislargeblk||bsidepislargeblk)?true:false[0152]接下来,如果条件1为真,则将进一步检验条件2。首先,导出以下变量:[0153]-如在hevc中首先导出dp0、dp3、dq0、dq3[0154]-如果(p侧大于或等于32)[0155]dp0=(dp0 abs(p50-2*p40 p30) 1)》》1[0156]dp3=(dp3 abs(p53-2*p43 p33) 1)》》1[0157]-如果(q侧大于或等于32)[0158]dq0=(dq0 abs(q50-2*q40 q30) 1)》》1[0159]dq3=(dq3 abs(q53-2*q43 q33) 1)》》1[0160]condition2=(d《β)?true:false[0161]其中d=dp0 dq0 dp3 dq3。[0162]如果条件1和条件2有效,则进一步检验任何块是否使用子块:[0163][0164]最后,如果条件1和条件2两者有效,则所提出的去块化方法将检验条件3(大块强滤波器条件),其定义如下。[0165]在条件3strongfiltercondition中,导出以下变量:[0166]dpq如在hevc中导出。[0167]sp3=abs(p3-p0),如在hevc中导出的[0168]-如果(p侧大于或等于32)[0169][0170]sq3=abs(q0-q3),如在hevc中导出的[0171]-如果(q侧大于或等于32)[0172][0173]如在hevc中,strongfiltercondition=(dpq小于(β》》2),sp3 sq3小于(3*β》》5),并且abs(p0-q0)小于(5*tc 1)》》1)?true:false。[0174]2.4.4用于亮度的更强的去块化滤波器(为更大的块设计)[0175]当边界的任一侧的样点属于大块时,使用双线性滤波器。属于大块的样点定义为:垂直边缘的宽度》=32时和水平边缘的高度》=32时。[0176]下面列出双线性滤波器。[0177]将块边界样点pi(其中i=0至sp-1)和qi(其中j=0至sq-1)(在上述hevc去块化中pi和qi是在用于滤波垂直边缘的行内第i个样点,或在用于滤波水平边缘的列内第i个的样点)然后替换为线性插值如下:[0178]pi′=(fi*middles,t (64-fi),ps 32)>>6),clippedtopi±tcpdi[0179]qj′=(gj*middles,t (64-gj)*qs 32)>>6),clippedtoqj±tcpdj[0180]其中tcpdi和tcpdj术语是第2.4.7节中描述的位置相关的裁剪,以及gj、fi、middles,t、ps和qs给定如下:[0181]2.4.5色度的去块化控制[0182]色度强的滤波器用于块边界的两侧。此处,当色度边缘的两侧都大于或等于8(色度位置)时,选择色度滤波器,并且满足具有三个条件的以下决定:第一条件用于决定边界强度以及大块。当在色度样点域中正交跨块边缘的块宽度或高度等于或大于8时,可以应用提出的滤波器。第二条件和第三条件基本上与hevc亮度去块化决定相同,分别是开/关决定和强滤波器决定。[0183]在第一决定中,修改边界强度(bs)以用于色度滤波,并且顺序地检验条件。如果满足条件,则将跳过优先级较低的剩余条件。[0184]当bs等于2时,执行色度去块化;或者当检测大块边界时,bs等于1。[0185]第二条件和第三条件基本上与hevc亮度强滤波器决定相同,如下。[0186]在第二条件中:[0187]然后如在hevc亮度去块化中导出d。[0188]当d小于β时,第二条件为true。[0189]在第三条件中,strongfiltercondition的导出如下:[0190]dpq如在hevc中导出。[0191]sp3=abs(p3-p0),如在hevc中导出的[0192]sq3=abs(q0-q3),如在hevc中导出的[0193]如在hevc设计中,strongfiltercondition=(dpq小于(β》》2),sp3 sq3小于(β》》3),并且abs(p0-q0)小于(5*tc 1)》》1)[0194]2.4.6用于色度的强去块化滤波器[0195]以下用于色度的强去块化滤波器定义为:[0196]p2′=(3*p3 2*p2 p1 p0 q0 4)》》3[0197]p1′=(2*p3 p2 2*p1 p0 q0 q1 4)》》3[0198]p0′=(p3 p2 p1 2*p0 q0 q1 q2 4)》》3[0199]提出的色度滤波器对4x4色度样点网格执行去块化。[0200]2.4.7位置相关的裁剪[0201]位置相关的裁剪tcpd应用于亮度滤波过程的输出样点,该过程涉及强和长滤波器,它们在边界处修改了7、5和3个样点。假设量化错误分布,提出为期望具有更高量化噪声的样点增加裁剪值,因此具有期望重构的样点值与真实样点值的较大偏离。[0202]对于用非对称滤波器滤波的每个p或q边界,根据第2.4.2节中做出决定的过程的结果,从两个表(例如,下面制表的tc7和tc3)中选择与位置相关的阈值表,其作为边信息提供给解码器:[0203]tc7={6,5,4,3,2,1,1};tc3={6,4,2};[0204]tcpd=(sp==3)?tc3:tc7;[0205]tcqd=(sq==3)?tc3:tc7;[0206]对于使用短对称滤波器滤波的p或q边界,应用较低幅度的位置相关阈值:[0207]tc3={3,2,1};[0208]以下定义阈值、滤波的p’i和q’i样点值根据tcp和tcq裁剪值来裁剪:[0209]p”i=clip3(p’i tcpi,p’i–tcpi,p’i);[0210]q”j=clip3(q’j tcqj,q’j–tcqj,q’j);[0211]其中p’i和q’i是滤波的样点值,p”i和q”j是裁剪后的输出样点值,并且tcpitcpi是被从vvctc参数及tcpd和tcqd导出的裁剪阈值。函数clip3是vvc中指定的裁剪函数。[0212]2.4.8子块去块化调整[0213]为了使用长滤波器和子块去块化两者来启用并行友好地去块化,长滤波器被限制为在使用子块去块化(affine或atmvp或dmvr)的一侧至多修改5个样点,如长滤波器的亮度控制所示。此外,调整子块去块化,使得在8x8网格上靠近cu或隐式tu边界的子块边界被限制为在每一侧至多修改两个样点。[0214]以下应用于与cu边界不对准的子块边界。[0215][0216]其中等于0的边缘对应于cu边界,等于2或等于orthogonallength-2的边缘对应于来自cu边界等的子块边界8个样点。如果使用tu的隐式划分,则隐式tu为真。[0217]2.5sao[0218]sao的输入是db之后的重构的样点。sao的构思在于:通过首先使用选择的分类器将区域样点分类成多个类别,为每个类别获取偏移,然后将偏移添加到类别的每个样点,来减少区域的平均样点失真,其中分类器索引和区域的偏移被编解码在比特流中。在hevc和vvc中,区域(用于sao参数信令通知的单元)定义为ctu。[0219]hevc中采用可以满足低复杂度需求的两个sao类型。这两个类型是边缘偏移(eo)和频带偏移(bo),下面将对其进一步详细地讨论。sao类型的索引被编解码(其范围为[0,2])。对于eo,样点分类基于在当前样点与邻域样点之间的比较,该比较根据一维定向图案:水平、垂直、135°对角和45°对角。[0220]图8示出了用于eo样点分类的四个一维定向图案:水平(eo类=0)、垂直(eo类=1)、135°对角(eo类=2)和45°对角(eo类=3)[0221]对于给定的eo类,ctb内的每个样点都分类为五类别中的一个。将标记为“c”的当前样点值与其沿选择的一维图案的两个邻域进行比较。表i总结了每个样点的分类规则。类别1和4分别与沿选择的一维图案的局部谷值和局部峰值相关联。类别2和3分别与沿选择的一维图案的凹拐角和凸拐角相关联。如果当前样点不属于eo类别1-4,则它是类别0,并且不应用sao。[0222]表3:边缘偏移的样点分类规则[0223][0224]2.6基于几何变换的自适应环路滤波器[0225]db的输入是在db和sao后的重构的样点。样点分类和滤波过程是基于db和sao后的重构的样点。[0226]在一些实施例中,应用具有基于块的滤波器适配的基于几何变换的自适应环路滤波器(galf)。对于亮度分量,基于局部梯度的方向和活动,为每个2×2块选择25个滤波器中的一个。[0227]2.6.1滤波器形状[0228]在一些实施例中,可以为亮度分量选择多达三个菱形滤波器形状(如图9所示)。索引以图片级信令通知,以指示用于亮度分量的滤波器形状。每个正方形表示样点,并且ci(i为(左),(中),(右))表示要应用于样点的系数。对于图片中的色度分量,始终使用5×5菱形形状。[0229]2.6.1.1块分类[0230]每个2×2块分类为25类中的一类。分类索引c是基于其方向性d和活动的量化值导出,如下:[0231][0232]为了计算d和首先使用一维拉普拉斯来计算水平、垂直和两个对角方向的梯度:[0233][0234][0235][0236][0237]索引i和j指代2×2块中左上样点的坐标,并且r(i,j)指示坐标(i,j)处的重构的样点。[0238]然后水平和垂直方向的梯度的d最大值和最小值设置为:[0239][0240]两个对角方向的梯度的最大值和最小值设置为:[0241][0242]为了导出方向性d的值,将这些值相互比较并且与两个阈值t1和t2比较:[0243]步骤1.如果和两者都为真,则d被设置为0。[0244]步骤2.如果则从步骤3继续;否则,则从步骤4继续。[0245]步骤3.如果d被设置为2;否则d被设置为1。[0246]步骤4.如果d被设置为4;否则d被设置为3。[0247]活动值a计算为:[0248][0249]a进一步量化到0至4的范围(含端值),并且量化值表示为[0250]对于图片中的两个色度分量,不应用分类方法,例如,对每个色度分量应用alf系数的单个集合。[0251]2.6.1.2滤波器系数的几何变换[0252]图10示出了5×5菱形滤波器支持的相对坐标:左:对角;中心:垂直翻转;右:旋转。[0253]在对每个2×2块进行滤波之前,几何变换(诸如旋转或对角和垂直翻转)取决于为该块计算的梯度值来应用于滤波器系数f(k,l),该系数与坐标(k,l)相关联。这等效于将这些变换应用于滤波器支持区域中的样点。想法是通过对准它们的方向性来使得应用alf的不同块更加相似。[0254]引入三个几何变换,包括对角、垂直翻转和旋转:[0255]对角:fd(k,l)=f(l,k),[0256]垂直翻转:fv(k,l)=f(k,k-l-1),ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(9)[0257]旋转:fr(k,l)=f(k-l-1,k)。[0258]其中k是滤波器的大小,0≤k,l≤k-1是系数坐标,使得位置(0,0)在左上角和位置(k-1,k-1)在右下角。取决于为该块计算的梯度值,变换应用于滤波器系数f(k,l)。表4总结了变换与四个方向的四个梯度之间的关系。图9示出了基于5×5菱形的每个位置的变换系数。[0259]表4:一个块所计算的梯度与变换的映射[0260]梯度值变换gd2《gd1和gh《gv没有变换gd2《gd1和gv《gh对角gd1《gd2和gh《gv垂直翻转gd1《gd2和gv《gh旋转[0261]2.6.1.3滤波器参数信令[0262]在一些实施例中,例如在条带头之后且在第一ctu的sao参数之前,为第一ctu信令通知galf滤波器参数。可以信令通知亮度滤波器系数的多达25个集合。为了减少比特开销,可以合并不同分类的滤波器系数。另外,参考图片的galf系数被存储且允许重用作为当前图片的galf系数。当前图片可以选择使用为参考图片所存储的galf系数,并且绕过galf系数信令。在这种情况下,仅信令通知对参考图片中的一个的索引,并且对于当前图片继承指示的参考图片的存储的galf系数。[0263]为了支持galf时域预测,维持galf滤波器集合的候选列表。在开始解码新序列时,候选列表为空。在解码一个图片之后,可以将滤波器的对应集合添加到候选列表。一旦候选列表的大小达到最大允许值(例如6),滤波器的新集合按解码顺序覆写最旧集合,就是说先进先出(fifo)规则应用于更新候选列表。为避免重复,仅当对应图片不使用galf时域预测时,才可以将集合添加到列表中。为了支持时域可缩放性,存在滤波器集合的多个候选列表,并且每个候选列表都与时域层相关联。更具体地,由时域层索引(tempidx)分配的每个数组可以组成具有等于较低的tempidx的先前解码图片的滤波器集合。例如,第k个数组分配为与等于k的tempidx相关联,并且它仅含有来自tempidx小于或等于k的图片的滤波器集合。在编解码某一图片之后,与图片相关联的滤波器集合将用于更新与相等或更高tempidx相关联的那些数组。[0264]galf系数的时域预测用于帧间编解码的帧以最小化信令开销。对于帧内帧,时域预测不可用,并且16个固定滤波器的集合分配给每个类。为了指示固定滤波器的用法,将信令通知每个类的标志,并如果需要的话则信令通知选择的固定滤波器的索引。即使当为给定的种类选择固定滤波器时,仍然可以为该类发送自适应滤波器的系数f(k,l),在这种情况下,将应用于重构的图像的滤波器的系数是系数的两个集合的和。[0265]亮度分量的滤波过程可以控制在cu级。信令通知标志,以指示galf是否应用于cu的亮度分量。对于色度分量,仅在图片级指示是否应用galf。[0266]2.6.1.4滤波过程[0267]在解码器侧,当为块启用galf时,块内的每个样点r(i,j)被滤波,导致样点值r′(i,j)如下所示,其中l表示滤波器长度,fm,n表示滤波器系数,并且f(k,l)表示解码的滤波器系数。[0268][0269]图11示出了用于5x5菱形滤波器支持的相对坐标的示例,假设当前样点的坐标(i,j)为(0,0)。不同坐标中以相同色彩填充的样点将乘以相同的滤波器系数。[0270]2.7基于几何变换的自适应环路滤波器(galf)[0271]2.7.1示例galf[0272]在一些实施例中,自适应环路滤波器的滤波过程执行如下:[0273]o(x,y)=∑(i,j)w(i,j).i(x i,y j),ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(11)[0274]其中样点i(x i,y j)是输入样点,o(x,y)是滤波的输出样点(例如滤波结果),并且w(i,j)表示滤波器系数。实际上,在vtm4.0中,它是使用[0275]vvc中galf的当前设计具有以下主要改变:[0276](1)移除自适应滤波器形状。7x7滤波器形状仅允许用于亮度分量,并且5x5滤波器形状仅允许用于色度分量。[0277](2)从条带/图片级到ctu级的alf参数的信令通知。[0278](3)类索引的计算以4x4级而不是2x2执行。此外,在一些实施例中,利用用于alf分类的子采样的拉普拉斯算符计算方法。更具体地,不需要为一个块内的每个样点计算水平/垂直/45对角/135度梯度。替代地,采用1:2子采样。[0279]图12a-12d示出了对于ce2.6.2的子采样的拉普拉斯算符。图12a图示了用于垂直梯度的子采样的位置,图12b图示了用于水平梯度的子采样位置,图12c图示了对角梯度的子采样的位置,以及图12d图示了对角梯度的子采样的位置。[0280]2.8非线性alf[0281]2.8.1滤波再形成[0282]等式(11)可以再形成为以下表达式,而不影响编解码效率:[0283]o(x,y)=i(x,y) ∑(i,j)≠(0,0)w(i,j).(i(x i,y j)-i(x,y)),ꢀꢀ(13)[0284]其中w(i,j)与等式(11)中的滤波器系数相同[除了w(0,0)在等式(13)中等于1而在等式(11)中等于1-∑(i,j)≠(0,0)w(i,j)]。[0285]使用该上述滤波器公式(13),通过使用简单的裁剪函数来降低邻域样点值(i(x i,y j))当它们与当前样点值(i(x,y))差异太大时被滤波的影响,vvc引入非线性以使alf更加有效。[0286]更具体地,alf滤波器修改如下:[0287]o′(x,y)=i(x,y) ∑(i,j)≠(0,0)w(i,j).k(i(x i,y j)-i(x,y),k(i,j)),ꢀꢀ(14)[0288]其中k(d,b)=min(b,max(-b,d))是裁剪函数,并且k(i,j)是裁剪参数,其取决于(i,j)滤波器系数。编码器执行优化以找到最佳的k(i,j)。[0289]在一些实施例中,为每个alf滤波器指定裁剪参数k(i,j),每滤波器系数信令通知一个裁剪值。这意味着在比特流中可以信令通知每亮度滤波器多达12个裁剪值、以及色度滤波器的多达6个裁剪值。[0290]为了限制信令成本和编码器复杂度,仅使用对于inter和intra条带相同的4个固定值。[0291]因为亮度的局部差异的方差通常比色度的局部差异的方差更高,所以应用对于亮度和色度滤波器的两个不同集合。还引入每个集合中的最大样点值(此处对于10比特的比特深度为1024),使得可以在不必要时禁用裁剪。[0292]表5中提供一些实施例中使用的裁剪值的集合。通过在对数域中将亮度的采样值的整个范围(编解码在10比特上)和色度的从4到1024的范围大致等同地划分,已经选择4个值。[0293]更确切地,裁剪值的亮度表已通过以下公式获得:[0294][0295]相似地,根据以下公式获得裁剪值的色度表:[0296][0297]表5:授权的裁剪值[0298][0299]通过使用与上表5中的裁剪值的索引对应的golomb编码方案,在“alf_data”语法元素中编解码选择的裁剪值。该编码方案与滤波器索引的编码方案相同。[0300]2.9虚拟边界[0301]在硬件和嵌入式软件中,基于图片的处理由于其高的图片缓冲器需求而实际上是不可接受的。使用片上图片缓冲器非常昂贵,而使用片外图片缓冲器会显著地增加外部存储器存取、功耗和数据访存取时延。因此,在实际产品中,df、sao和alf将从基于图片的解码改变为基于lcu的解码。当基于lcu的处理用于df、sao和alf时,整个解码过程可以通过用于多个lcu的并行处理的lcu管线方式在栅格扫描中由lcu完成lcu。在这种情况下,df、sao和alf需要线缓冲器,因为处理一个lcu行需要来自上述lcu行中的像素。如果使用片外线缓冲器(例如dram),则外部存储器带宽和功耗将增加;如果使用片上线缓冲器(例如sram),则芯片面积将增加。因此,尽管线缓冲器已经比图片缓冲器小得多,但是仍然希望减少线缓冲器。[0302]在一些实施例中,如图13所示,所需的线缓冲器的总数为亮度分量的11.25线。线缓冲器需求的说明如下:无法执行对与ctu边缘重叠的水平边缘的去块化,因为决定和滤波需要来自第一个ctu的线k、l、m、m和来自底部ctu的线o、p。因此,与ctu边界重叠的水平边缘的去块化被推迟直到下部ctu到来。因此,对于线k、l、m、n,重构的亮度样点必须存储在线缓冲器(4线)中。然后可以对线a到j执行sao滤波。因为去块化不会改变线k中的样点,所以线j可以被sao滤波。对于线k的sao滤波,边缘偏移分类决定仅存储在线缓冲器中(即0.25亮度线)。alf滤波可以仅对线a-f执行。如图13所示,对每个4×4块执行alf分类。每个4x4块分类都需要大小为8x8的活动窗口,其继而需要9x9窗口来计算一维拉普拉斯来确定梯度。[0303]因此,对于与线g、h、i、j重叠的4x4块的块分类,需要在虚拟边界下方的sao滤波的样点。此外,alf分类需要线d、e、f的sao滤波的样点。此外,线g的alf滤波需要来自以上行中的三个sao滤波的线d、e、f。因此,总的线缓冲器需求如下:[0304]-线k-n(水平df像素):4线[0305]-线d-j(sao滤波的像素):7线[0306]-线j与线k之间的sao边缘偏移分类器值:0.25线[0307]因此,所需的亮度线的总数为7 4 0.25=11.25。[0308]相似地,色度分量的线缓冲器要求在图14中图示。色度分量的线缓冲器需求评估为6.25线。[0309]为了消除sao和alf的线缓冲器需求,最新vvc中引入虚拟边界(vb)的构思。如图13所示,vb是向移位了n个像素的水平lcu边界。对于每个lcu,sao和alf可以在下部lcu出现之前处理vb上方的像素,但是不能处理vb下方的像素直到下部lcu出现,这是由df引起的。在考虑硬件实现成本的情况下,提出的vb与水平lcu边界之间的空间设置为用于亮度的四个像素(例如,图13中的n=4)以及用于色度的两个像素(例如,图9中的n=2)。[0310]2.9.1当vb大小n为4时修改的alf块分类[0311]图15a-15b描绘了当虚拟边界是在ctu边界上方的4线(n=4)时的情况的修改的块分类。如图15a所描绘,对于从线g开始的4x4块,块分类仅使用线e到j。然而,对于属于线j的样点的拉普拉斯算符梯度计算需要下方的再一个线(线k)。因此,用行j填充行k。[0312]相似地,如图15b所描绘,对于从线k开始的4x4块,块分类仅使用线k到p。然而,对于属于线k的样点的拉普拉斯算符梯度计算需要上方的再一个线(线j)。因此,用线k填充线j。[0313]2.9.2样点的两侧填充跨虚拟边界[0314]如图16a-16c所描绘的,滤波器的截断版本用于对属于靠近虚拟边界的线的亮度样点的滤波。采取图16a为例,当如图13中所示来滤波线m时,例如7x7菱形支持的中心样点在行m中,它需要访问vb上方的一个线(用粗线表示)。在这种情况下,从vb下方的右下样点被复制vb上方的样点,诸如实线中的p0样点被复制到上方虚线位置。对称地,即使该位置的样点可用,实线中的p3样点也被复制到右下虚线位置。复制的样点仅使用在亮度滤波过程中。[0315]用于alf虚拟边界的填充方法可以表示为“两侧填充”,其中如果位于(i,j)的一个样点(例如,图16b中带有虚线的poa)被填充,则即使样点是可用的,也将共享相同滤波器系数的位于(m,n)处的对应样点(例如,图16b中带有虚线的p3b)填充,如图16a-16c以及图17a-17b中描绘的。在图16a-16c,7x7菱形滤波器支持,中心是当前要滤波的样点。图16a示出了需要填充的vb上方/下方的一个需要的线。图16b示出了需要填充的vb上方/下方的2个需要的线。图16c示出了需要填充的vb上方/下方的3个需要的线。[0316]相似地,如图17a-17b中所描绘的,两侧填充方法也用于色度alf滤波。图17a-17b示出了在虚拟边界处的改进的色度alf滤波(5×5菱形滤波器支持,中心是要被滤波的当前样点)。图17a示出了需要填充的vb上方/下方的1个需要的线。图17b示出了需要填充的vb上方/下方的2个需要的线。[0317]2.9.3当禁用非线性alf时实现两侧填充的替代方法[0318]当为ctb禁用非线性alf时,例如,裁剪参数k(i,j)在等式(14)中等于(1《《bitdepth)时,可以通过修改滤波器系数(也称为基于修改系数的alf、malf)来替换填充过程。例如,当滤波线l/i中的样点时,将滤波器系数c5修改为c5',在这种情况下,不需要将亮度样点从实线p0a复制到虚线p0a,将实线p3b复制到虚线p3b,见图18a。在这种情况下,假设要滤波的当前样点位于(x,y),则两侧填充和malf将生成相同的结果。[0319]c5.k(i(x-1,y-1)-i(x,y),k(-1,-1)) c1.k(i(x-1,y-2)-i(x,y),k(-1,-2))=(c5 c1).k(i(x-1,y-1)-i(x,y),k(-1,-1))ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(17)[0320]因为k(d,b)=d,并且由于填充而i(x-1,y-1)=i(x-1,y-2)。[0321]但是,当启用非线性alf时,malf和两侧填充可能生成不同的滤波结果,因为非线性参数与每个系数相关联,诸如对于滤波器系数c5和c1,裁剪参数不同。因此,[0322]c5.k(i(x-1,y-1)-i(x,y),k(-1,-1)) c1.k(i(x-1,y-2)-i(x,y),k(-1,-2))!=(c5 c1).k(i(x-1,y-1)-i(x,y),k(-1,-1))ꢀꢀ(18)[0323]因为k(d,b)!=d,甚至由于填充而i(x-1,y-1)=i(x-1,y-2)。[0324]2.10alf滤波的规范[0325]新添加的部分以粗斜体带下划线的文本指示。删除的部分用[[]]指示。[0326]7.3.2.4图片参数集合rbsp语法[0327][0328][0329][0330][0331][0332]loop_filter_across_bricks_enabled_flag等于1指定了可以在指代pps的图片中跨砖边界执行环路滤波操作。loop_filter_across_bricks_enabled_flag等于0指定了在指代pps的图片中不跨砖边界执行环路滤波操作。环路滤波操作包括去块化滤波器、样点自适应偏移滤波器以及自适应环路滤波器操作。如果不存在,则loop_filter_across_bricks_enabled_flag的值被推断为等于1。[0333]loop_filter_across_slices_enabled_flag等于1指定了可以在指代pps的图片中跨条带边界执行环路滤波操作。loop_filter_across_slices_enabled_flag等于0指定了在指代pps的图片中不跨条带边界执行环路滤波操作。环路滤波操作包括去块化滤波器、样点自适应偏移滤波器以及自适应环路滤波器操作。如果不存在,则将loop_filter_across_slices_enabled_flag的值被推断为等于0。[0334]pps_loop_filter_across_virtual_boundaries_disabled_flag等于1指定了在指代pps的图片跨虚拟边界禁用环路滤波操作。pps_loop_filter_across_virtual_boundaries_disabled_flag等于0指定了在指代pps的图片中不应用环路滤波操作的此类禁用。环路滤波操作包括去块化滤波器、样点自适应偏移滤波器以及自适应环路滤波器操作。如果不存在,则pps_loop_filter_across_virtual_boundaries_disabled_flag的值被推断为等于0。[0335]pps_num_ver_virtual_boundaries指定了pps中存在的pps_virtual_boundaries_pos_x[i]语法元素的数量。如果pps_num_ver_virtual_boundaries不存在,则其被推断为等于0。[0336]8.8.5.2亮度样点的编解码树块滤波过程[0337]该过程的输入是:[0338]在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel,[0339]滤波重构的亮度图片样点数组alfpicturel,[0340]指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb)。[0341]该过程的输出是修改的滤波重构的亮度图片样点数组alfpicturel。[0342]使用以下调用章节8.8.5.3的滤波器索引的导出过程:位置(xctb,yctb)和重构的亮度图片样点数组recpicturel作为输入,而filtidx[x][y]和transposeidx[x][y],其中y=0..ctbsizey–1,作为输出。[0343]为了导出滤波重构的亮度样点alfpicturel[x][y],当前亮度编解码树块内的每个重构的亮度样点recpicturel[x][y]被滤波如下,其中x,y=0..ctbsizey-1:[0344]亮度滤波器系数f[j]的数组和与由filtidx[x][y]指定的滤波器对应的亮度裁剪值c[j]的数组导出如下,其中j=0..11:[0345]如果alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]小于16,则以下适用:[0346]i=alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]ꢀꢀ(8-1172)[0347]f[j]=alffixfiltcoeff[alfclasstofiltmap[i][filtidx]][j]ꢀꢀꢀꢀꢀ(8-1173)[0348]c[j]=2bitdepthyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1174)[0349]否则(alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]大于或等于16,则以下适用:[0350]i=slice_alf_aps_id_luma[alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]-16]ꢀꢀ(8-1175)[0351]f[j]=alfcoeffl[i][filtidx[x][y]][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1176)[0352]c[j]=alfclipl[i][filtidx[x][y]][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1177)[0353]取决于transposeidx[x][y]导出亮度滤波器系数和裁剪值索引idx,如下:[0354]如果transposeindex[x][y]等于1,则以下适用:[0355]idx[]={9,4,10,8,1,5,11,7,3,0,2,6}ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1178)[0356]否则,如果transposeindex[x][y]等于2,则以下适用:[0357]idx[]={0,3,2,1,8,7,6,5,4,9,10,11}ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1179)[0358]否则,如果transposeindex[x][y]等于3,则以下适用:[0359]idx[]={9,8,10,4,3,7,11,5,1,0,2,6}ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1180)[0360]否则,如下适用:[0361]idx[]={0,1,2,3,4,5,6,7,8,9,10,11}ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1181)[0362]亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-3...3,导出如下:[0363]如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0364]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)(8-1182)[0365]否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于4,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0366]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1183)[0367]否则,如下适用:[0368]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1184)[0369]如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0370]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)(8-1185)[0371]否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y大于0且小于4,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0372]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1186)[0373]否则,如下适用:[0374]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)ꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1187)[0375][0376]根据水平亮度样点的位置y和applyvirtualboundary,表8-22中指定重构的样点偏移r1、r2和r3。[0377]变量curr导出如下:[0378]curr=recpicturel[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1188)[0379]变量sum导出如下:[0380][0381]sum=curr ((sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1190)[0382]修改的滤波重构的亮度图像样点alfpicturel[xctb x][yctb y]导出如下:[0383]如果pcm_loop_filter_disabled_flag和pcm_flag[xctb x][yctb y]两者都等于1,则以下适用:[0384]alfpicturel[xctb x][yctb y]=recpicturel[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1191)[0385]否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[0386]alfpicturel[xctb x][yctb y]=clip3(0,(1《《bitdepthy)-1,sum)ꢀꢀ(8-1192)[0387]表8-22–根据水平亮度样点位置y和applyvirtualboundary的r1、r2和r3的规范[0388]条件r1r2r3(y==ctbsizey-5||y==ctbsizey-4)&&(applyvirtualboundary==1)000(y==ctbsizey-6||y==ctbsizey-3)&&(applyvirtualboundary==1)111(y==ctbsizey-7||y==ctbsizey-2)&&(applyvirtualboundary==1)122否则123[0389]8.8.5.4色度样点的编解码树块滤波过程[0390]该过程的输入是:[0391]在自适应环路滤波过程之前,重构的色度图片样点数组recpicture,[0392]滤波重构的色度图片样点数组alfpicture,[0393]指定当前色度编解码树块的左顶样点相对于当前图片的左顶样点的色度位置(xctbc,yctbc)。[0394]该过程的输出是经修改滤波重构的色度图片样点数组alfpicture。[0395]当前色度编解码树块的宽度ctbwidthc和高度ctbheightc导出如下:[0396]ctbwidthc=ctbsizey/subwidthcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1230)[0397]ctbheightc=ctbsizey/subheightcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1231)[0398]为了导出滤波重构的色度样点alfpicture[x][y],当前色度编解码树块recpicture[x][y]内的每个重构的色度样点被滤波如下,其中x=0..ctbwidthc-1,y=0..ctbheightc-1:[0399]色度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2..2,导出如下:[0400]如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xctbc x-ppsvirtualboundariesposx[n]/subwidthc大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0401][0402]否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]/subwidthc-xctbc-x大于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0403]hx i=clip3(0,ppsvirtualboundariesposx[n]/subwidthc-1,xctbc x i)ꢀꢀ(8-1233)[0404]否则,如下适用:[0405]hx i=clip3(0,pic_width_in_luma_samples/subwidthc-1,xctbc x i)ꢀꢀ(8-1234)[0406]如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yctbc y-ppsvirtualboundariesposy[n]/subheightc大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0407][0408]否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]/subheightc-yctbc-y大于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0409]vy j=clip3(0,ppsvirtualboundariesposy[n]/subheightc-1,yctbc y j)ꢀꢀ(8-1236)[0410]否则,如下适用:[0411]vy j=clip3(0,pic_height_in_luma_samples/subheightc-1,yctbc y j)ꢀꢀ(8-1237)[0412]变量applyvirtualboundary导出如下:[0413][0414]根据水平亮度样点的位置y和applyvirtualboundary,表8-22中指定重构的样点偏移r1和r2。[0415]变量curr导出如下:[0416]curr=recpicture[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1238)[0417]色度滤波器系数f[j]的数组和色度裁剪值c[j]的数组导出如下,其中j=0..5:[0418]f[j]=alfcoeffc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1239)[0419]c[j]=alfclipc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1240)[0420]变量sum导出如下:[0421][0422][0423]sum=curr (sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1242)[0424]经修改滤波重构的色度图片样点alfpicture[xctbc x][yctbc y]导出如下:[0425]如果pcm_loop_filter_disabled_flag和pcm_flag[(xctbc x)*subwidthc][(yctbc y)*subheightc]两者都等于1,则以下适用:[0426]alfpicture[xctbc x][yctbc y]=recpicturel[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1243)[0427]否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[0428]alfpicture[xctbc x][yctbc y]=clip3(0,(1《《bitdepthc)-1,sum)ꢀꢀ(8-1244)[0429]2.11ctu处理的示例[0430]根据当前vvc设计,如果一个ctb的底边界是条带/砖的底边界,则禁用alf虚拟边界处理方法。例如,如图19描绘,一个图片划分成多个ctu和2个条带。[0431]假设ctu大小为mxm(例如,m=64),则根据虚拟边界定义,在虚拟边界下方处理ctb内的最后4线。在硬件实现方式中,以下适用:[0432]-如果ctb的底边界是图片(例如,ctu-d)的底边界,则处理(m 4)×m块,包括来自ctu行上方的4线和当前ctu中的所有线。[0433]-否则,如果ctb的底边界是条带(或砖)(例如,ctu-c)的底边界,并且loop_filter_across_slice_enabled_flag(或loop_filter_across_bricks_enabled_flag)等于0,则处理(m 4)×m块,包括ctu行上方的4线和当前ctu中的所有线。[0434]-否则,如果条带/砖/片中的第一ctu行中的ctu/ctb(例如,ctu-a),则处理除最后4线以外的m×(m-4)块。[0435]-否则,如果ctu/ctb不在条带/砖/片的第一ctu行中(例如,ctu-b)且不在条带/砖/片的最后ctu行中,则处理m×m块,包括来自ctu行上方的4线且排除当前ctu中的最后4线。[0436]图19示出了图片中处理ctu的示例。[0437]2.12360度视频编解码[0438]vtm5中的水平环绕运动补偿是360专用的编解码工具,其设计为提高以等矩形(erp)投影格式重构的360度视频的视觉质量。在常规的运动补偿中,当运动矢量指代超出参考图片的图片边界的样点时,应用重复填充以通过从对应的图片边界上最近的邻域复制来导出边界外的样点的值。对于360度视频,这种重复填充的方法不适合,并且可能在重构的视口(viewport)视频中引起叫做“接缝伪影”的视觉伪影。因为360度视频是在球面上捕获的且固有地没有“边界”,所以始终可以从球面域中的邻域样点中获得投影的域中参考图片的边界外的参考样点。对于一般的投影格式,可能难以在球面域中导出对应的邻域样点,因为它涉及二维到三维和三维到二维的坐标转换,以及分数样点位置的样点插值。该问题对于erp投影格式的左边界和右边界要简单得多,因为可以从右图片边界内的样点获得左图片边界之外的球面邻域,并且反之亦然。[0439]图20示出了vvc中水平环绕运动补偿的示例。[0440]水平环绕运动补偿过程是如图20所描述。当参考块的一部分在投影的域中的参考图片的左(或右)边界之外时,代替重复填充,“边界外的”部分采取自属于朝向投影的域的右(或左)边界的参考图片的对应球面邻域。重复填充仅用于顶和底图片边界。如图21所描绘,水平环绕运动补偿可以与360度视频编解码中经常使用的非规范填充方法组合。在vvc中,这是通过信令通知高级别语法元素以指示环绕偏移来实现,该偏移应在填充之前设置为erp图片宽度;该语法用于相应地调整水平环绕的位置。该语法不受左图片边界和右图片边界上特定填充量影响,并且因此自然地支持erp图片的非对称填充,例如,当左填充和右填充不同时。当参考样点在参考图片的左边界和右边界之外时,水平环绕运动补偿为运动补偿提供了更加有意义的信息。[0441]对于由多个面构成的投影格式,无论使用哪种紧凑的帧封装布置,在帧封装的图片中两个或更多个相邻面之间出现不连续性。例如,考虑图24中描绘的3×2帧封装配置,上半部的三个面在三维几何体中是连续的,下半部的三个面在三维几何体中是连续的,但是帧封装的图片的上半部和下半部在三维几何体中不连续。如果跨该不连续性执行环路滤波操作,则在重构的视频中面接缝伪影可以变得可见。[0442]为缓解面接缝伪影,可以在帧封装的图片中跨不连续性禁用环路滤波操作。提出语法,以指示禁用环路滤波操作的垂直和/或水平虚拟边界。与使用两个片(一片用于连续面的每一集合)且与禁用跨片的环路滤波操作相比较,提出的信令方法更加灵活,因为它不需要面大小为ctu大小的倍数。[0443]2.13示例基于子图片的运动受限独立区域[0444]在一些实施例中,包括以下特征:[0445]1)图片可分成子图片。[0446]2)在sps中指示子图片的存在的指示,以及子图片的其他序列级信息。[0447]3)可以由比特流来控制在解码过程(排除环路滤波操作)中子图片是否被处理为图片。[0448]4)可以由每个子图片的比特流来控制是否禁用跨子图片边界的环路滤波。更新dbf、sao和alf过程以控制跨子图片边界的环路滤波操作。[0449]5)为简单起见,作为起点,以sps中的亮度样点为单位信令通知子图片的宽度、高度、水平偏移和垂直偏移。子图片边界被限制为条带边界。[0450]6)在解码过程(排除环路滤波操作)中将子图片处理为图片是通过略微更新coding_tree_unit()语法来指定的,并且更新至以下解码过程:[0451]ο(高级)时域亮度运动矢量预测的导出过程[0452]ο亮度样点双线性插值过程[0453]ο亮度样点8抽头插值滤波过程[0454]ο色度样点插值过程[0455]7)子图片id在sps中明确指定且被包括在片组头中,以启用子图片序列的提取而无需改变vclnal单元。[0456]提出了输出子图片集(osps),以指定子图片及其集合的规范提取和一致性点。[0457]3.本文档中提供的方案所解决的技术问题[0458]当前vvc设计具有以下问题:[0459]1.启用alf虚拟边界的当前设置取决于ctb的底边界是否是图片的底边界。如果为真,则禁用alf虚拟边界,诸如图19中的ctu-d。然而,ctb的底边界可以在图片的底边界之外,诸如256x240图片被划分为4个128x128ctu,在这种情况下,对于具有位于底图片边界之外的样点的最后2个ctu,alf虚拟边界将错误地设置为真。[0460]2.对于底图片边界和条带/片/砖边界,禁用用于处理alf虚拟边界的方法。沿条带/砖边界禁用vb可以创建管线气泡或需要每虚拟管线数据单元(vpdu,vvc中64x64)处理68线,假设lcu大小为64x64。例如:[0461]a.对于不知道前面的条带/砖/片边界的解码器(低延迟的应用),需要恢复alf线缓冲器。线缓冲器中的内容是否用于alf滤波取决于当前ctu是否也是条带/砖/片边界ctu,然而,该信息是未知的直到解码下一个条带/砖/片。[0462]b.对于知道前面的条带/砖/片边界,解码器需要接收管线气泡(非常不可能),或者始终以每64x64vdpu的68线的速度运行alf(超额配置(overprovision)),以避免使用alf线缓冲器。[0463]3.存在用于处理虚拟边界和视频单元边界的不同方式,例如,不同的填充方法。同时,当线在多个边界处时,对于该线可以执行多于一个填充方法。[0464]a.在一个示例中,如果块的底边界是360度虚拟边界,并且alf虚拟边界也被应用于该块,则在这种情况下,用于360度虚拟边界的填充方法可以首先应用为生成360度虚拟边界下方的虚拟样点。然后,位于360度虚拟边界下方的这些虚拟样点处理为可用。并且,根据图16a-c可以进一步应用alf2侧填充方法。在图25中描绘一个示例。[0465]4.用于处理虚拟边界的方法可以是次优的,因为采用填充的样点,这可能是低效的。[0466]5.当禁用非线性alf时,malf和两侧填充方法将能够生成相同的结果,以用于滤波需要访问跨虚拟边界的样点的样点。然而,当启用非线性alf时,两种方法将带来不同的结果。这有益于对准这两个情况。[0467]6.条带可以是矩形条带,也可以是非矩形条带,如图28所描绘。在这种情况下,对于ctu,它可以不与任何边界(例如,图片/条带/片/砖)重合。但是,可以需要访问当前条带之外的样点。如果跨条带边界的滤波(例如,loop_filter_across_slices_enabled_flag为假)被禁用,则如何执行alf分类和滤波过程是未知的。[0468]7.子图片是图片内一个或多个条带的矩形区域。子图片含有一个或多个条带,该条带共同覆盖图片的矩形区域。语法表修改如下(粗体、斜体和下划线),以包括子图片的构思。[0469]7.3.2.3序列参数集rbsp语法[0470][0471]注意到,为每个子图片控制启用跨子图片的滤波。然而,对启用跨条带/片/砖的滤波的控制是在图片级被控制,该图片级被信令通知一次以控制一个图片内的所有条带/片/砖。[0472]8.alf分类在4x4单位中执行,即,一个4x4单位内的所有样点共享相同的分类结果。但是,更准确地说,含有当前4x4块的8x8窗口中的样点需要计算它们的梯度。在这种情况下,如图30所描绘,需要访问10×10个样点。如果一些样点位在不同的视频单元中(例如,不同的条带/片/砖/子图片/上或左或右或底“360虚拟边界”/上或下“alf虚拟边界”),如何计算分类需要被定义。[0473]9.在vvc设计中,标识四个边界位置(例如,左垂直/右垂直/上水平/下水平)。如果样点位于四个边界位置内,则将其标记为可用。然而,在vvc中,条带可能会覆盖非矩形区域,如图28所示。通过检验这四个边界位置,可以标记错误的可用性结果。例如,对于图28中的蓝色位置(左顶点),如果loop_filter_across_slices_enabled_flag为假(例如,跨条带的样点不允许在alf中使用),它在与当前块(例如,覆盖红色位置(右下点)的块)不同的条带中并且应当标记为“不可用”。但是,仅通过检验当前块的左垂直/右垂直/上水平/下水平边界,蓝色位置将被错误地标记为“可用”。[0474]4.技术和实施例的示例[0475]下面列出的应作为示例考虑以解释总体构思。这些列出技术不应以窄义方法解释。此外,这些技术可以以任意方式进行组合。[0476]用于alf虚拟边界的填充方法可以表示为“两侧填充”,其中如果填充位于(i,j)处的一个样点,则即使样点可用也填充位于(m,n)处的共享相同滤波器系数的对应样点,如图12-13所描绘。[0477]用于图片边界/360度视频虚拟边界、普通边界(例如,顶边界和底边界)的填充方法可以表示为“一侧填充”,其中,如果要使用的一个样点在边界之外,则将该样点从图片中的可用图片复制。[0478]用于360度视频左边界和右边界的填充方法可以表示为“基于围绕的填充”,其中,如果要使用的一个样点在边界之外,则将该样点使用运动补偿结果复制。[0479]在以下讨论中,样点“在视频单元的边界处”可以意味着样点与视频单元的边界之间的距离小于或不大于阈值。“线”可以指在同一水平位置处的样点或在同一垂直位置处的样点。(例如,相同行中的样点和/或相同列中的样点)。函数abs(x)定义如下:[0480][0481]在以下讨论中,“虚拟样点”指代生成的样点,该样点可以不同于重构的样点(可以通过去块化和/或sao处理)。虚拟样点可以用于对另一个样点进行alf。可以通过填充来生成虚拟样点。[0482]“为一个块启用alf虚拟边界处理方法”可以表示规范中的applyvirtualboundary设置为真。“启用虚拟边界”可以指示当前块由虚拟边界划分成至少两个部分,并且位于一个部分中的样点在滤波过程中(例如,alf)不允许采用另一个部分中的样点。虚拟边界可以是一个块的底边界上方的k行。[0483]在以下描述中,邻域样点可以是滤波器分类和/或滤波过程所需的那些样点。[0484]在本公开中,如果邻域样点在当前图片、或当前子图片、或当前片、或当前条带、或当前砖、或当前ctu、或当前ctu或当前处理单元(诸如alf处理单元或窄alf处理单元)或任何其他当前视频单元之外,则邻域样点“不可用”。[0485]1.将“当前编解码树块的底边界是图片的底边界”的确定替换为“当前编解码树块的底边界是图片的底边界或在图片之外”。[0486]a.替代地,另外,在这种情况下,可以禁用alf虚拟边界处理方法。[0487]2.在环路滤波过程中是否启用虚拟样点的使用(例如,是否启用虚拟边界(例如,将applyvirtualboundary设置为真或假))可以取决于ctb大小。[0488]a.在一个示例中,对于给定的ctu/ctb大小,例如对于等于kxl(例如,k=l=4)的ctu/ctb大小,applyvirtualboundary始终设置为假。[0489]b.在一个示例中,对于不大于或小于kxl(例如,k=l=8)的某些ctu/ctb大小,applyvirtualboundary始终设置为假。[0490]c.替代地,对于某些ctu/ctb大小(诸如4x4、8x8)禁用alf。[0491]3.在环路滤波过程(例如,alf)中是否启用虚拟样点(例如,从重构的样点填充)的使用可以取决于块的底边界是视频单元的底边界或是虚拟边界,该视频单元是在与图片(例如,条带/片/砖)相比更细的粒度中。[0492]a.在一个示例中,如果ctb的底边界是视频单元的边界或虚拟边界,则可以针对编解码树块(ctb)启用alf虚拟边界处理方法(例如,applyvirtualboundary设置为真)。[0493]i.替代地,另外,如果底边界不是底图片边界,或者如果底边界在图片之外,则启用上述方法。[0494]b.当当前编解码树块的底边界是图片的底虚拟边界中的一个并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1时,仍可以启用alf虚拟边界处理方法(例如,applyvirtualboundary设置为真)。[0495]c.在一个示例中,是否为ctb启用alf虚拟边界处理方法(例如,applyvirtualboundary的值)可以仅取决于ctb的底边界与图片的底边界之间的关系。[0496]i.在一个示例中,只有ctb的底边界是含有ctb的图片的底边界或只有底边界在图片之外,才将applyvirtualboundary设置为假。[0497]ii.在一个示例中,当ctb的底边界“不”是含有ctb的图片的底边界时,applyvirtualboundary设置为true。[0498]d.在一个示例中,当解码图18a-18c中的ctu-c时,可以用来自ctu上方的k个线且排除虚拟边界下方的k个线来滤波m×m个样点。[0499]4.提出的是,即使当用于跨砖/条带边界的环路滤波器的信令通知的控制使用标志(例如,loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag)为真时,也要在滤波过程(例如,alf)中禁用跨砖/条带边界的样点的使用。[0500]a.替代地,另外,信令通知的loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag可以仅控制除alf以外的sao和去块化滤波器的滤波过程。[0501]b.在一个示例中,可以使用虚拟样点代替在对应位置处的重构的样点来对另一个样点进行alf。[0502]5.当一个块(例如,ctb)含有位于视频单元的边界(诸如条带/砖/片/360度视频虚拟或法线边界/图片边界)的样点时,如何为诸如alf的环路滤波在视频单元内部或外部生成虚拟样点(例如,填充方法)可以针对不同种类的边界被统一。[0503]a.替代地,另外,可以将虚拟边界的方法(例如,两侧填充方法)应用于块,来为环路滤波处理边界处的样点。[0504]b.替代地,另外,当块含有位于视频单元的底边界处的样点时,可以应用上述方法。[0505]c.在一个示例中,当解码一个块的k个线时,如果在块的虚拟边界下方的k个线(例如,图17a-17b的ctu-b中的最后k个线),并且块的底边界是视频单元的底边界,可以在alf分类/滤波过程中生成虚拟样点,以避免使用这些k个线之外的其他样点,例如,可以应用两侧填充方法。[0506]i.替代地,可以针对那些最后k个线禁用alf。[0507]d.在一个示例中,当一个块位于多个边界时,用于alf分类的像素/样点可以被限制为不跨这些多个边界中的任何一个。[0508]i.在一个示例中,对于样点,如果它的某一邻域样点是“不可用”的(例如,跨多个边界中的任何一个),则可以不会为该样点计算单独的或所有种类的梯度/方向性。[0509]1.在一个示例中,样点的梯度可以被视为零。[0510]2.在一个示例中,样点的梯度可以被视为“不可用”,并且可以不被添加到在alf分类过程中导出的活动(例如,第2.6.1.1节的等式(8)中定义的)。[0511]ii.在一个示例中,当只有在alf分类过程中使用的部分样点是“可用”的时(例如,没有跨这些边界中的任何一个),可以将在alf分类过程中导出的活动/方向性按比例缩放。[0512]iii.在一个示例中,对于边界块,假设在alf分类过程中需要计算n个样点的梯度/方向性,并且只能计算m个样点的梯度(例如,如果样点的某一邻域样点不是“可用”的,则不能计算它的梯度),然后可以将活动乘以n/m。[0513]1.替代地,它可以乘以与n/m相关的因子。例如,该数可以是mn(n是整数),例如m=2。[0514]e.在一个示例中,可以将m×n(例如,在当前设计中,m=n=8,m个列和n个行)窗口中的部分样点的梯度用于分类。[0515]i.例如,对于当前的n1*n2(当前设计中的n1=n2=4)块,m*n以n1*n2块为中心。[0516]ii.在一个示例中,可以使用不需要跨任何边界访问样点的样点的梯度。[0517]1.替代地,另外,当计算位于一个或多个边界处的样点的梯度时,如果当前样点的一些邻域样点是“不可用”的,则可以执行填充(例如,单侧填充)。[0518]2.替代地,另外,如果当前样点位于视频单元的顶边界(诸如条带/砖/片/360度视频虚拟边界或alf虚拟边界)处,则可以填充上方k(例如,k=1、2)个不可用线。[0519]3.替代地,另外,如果当前样点位于视频单元的左边界处,则可以填充左方k(例如,k=1、2)个不可用列。[0520]4.替代地,另外,如果当前样点位于视频单元的右边界处,则可以填充右方k(例如,k=1、2)个不可用列。[0521]5.替代地,另外,如果当前样点位于视频单元的底边界处,则可以填充底部k(例如,k=1、2)个不可用线。[0522]6.替代地,另外,如果当前样点位于视频单元的顶边界和左边界处,则可以首先填充上方k1(例如,k1=1、2)个不可用线以生成m*(n k1)窗口,然后可以填充左方k2(例如,k2=1、2)个不可用列以生成(m k2)*(n k1)窗口。[0523]a.替代地,可以首先填充左方k2(例如,k2=1、2)个不可用列以生成(m k2)*n窗口,然后可以填充上方k1(例如,k1=1、2)个不可用线以生成(m k2)*(n k1)窗口。[0524]7.替代地,另外,如果当前样点位于视频单元的顶边界和右边界处,则可以首先填充上方k1(例如,k1=1、2)个不可用线以生成m*(n k1)窗口,然后可以填充右方k2(例如,k2=1、2)个不可用列以生成(m k2)*(n k1)窗口。[0525]a.替代地,可以首先填充右方k2(例如,k2=1、2)个不可用列以生成(m k2)*n窗口,然后可以填充上方k1(例如,k1=1、2)个不可用线以生成(m k2)*(n k1)窗口。[0526]8.替代地,另外,如果当前样点位于视频单元的底边界和右边界,则可以首先填充底部k1(例如,k1=1、2)个不可用线以生成m*(n k1)窗口,然后可以填充右方k2(例如,k2=1、2)个不可用列以生成(m k2)*(n k1)窗口。[0527]a.替代地,可以首先填充右方k2(例如,k2=1、2)个不可用列以生成(m k2)*n窗口,然后可以填充底部k1(例如,k1=1、2)个不可用线以生成(m k2)*(n k1)窗口。[0528]9.替代地,另外,如果当前样点位于视频单元的底边界和左边界,则可以首先填充底部k1(例如,k1=1、2)个不可用线以生成m*(n k1)窗口,然后可以填充左方k2(例如,k2=1、2)个不可用列以生成(m k2)*(n k1)窗口。[0529]a.替代地,可以首先填充左方k2(例如,k2=1、2)个不可用列以生成(m k2)*n窗口,然后可以填充底部k1(例如,k1=1、2)个不可用线以生成(m k2)*(n k1)窗口。[0530]10.替代地,另外,填充样点可以用来计算梯度。[0531]iii.在一个示例中,对于视频单元顶/底边界处的块(诸如条带/砖/片/360度视频虚拟边界或alf虚拟边界),在m*(n–c1)窗口中的样点的梯度可以用于块的分类。[0532]1.替代地,另外,在分类中不使用m*n窗口的顶部/底部c1个线的梯度。[0533]iv.在一个示例中,对于视频单元的左/右边界处的块,在(m–c1)*n窗口中的样点的梯度可以用于块的分类。[0534]1.替代地,另外,在分类中不使用m*n窗口的左方/右方c1个列的梯度。[0535]v.在一个示例中,对于视频单元的顶边界和底边界处的块,在m*(n–c1–c2)窗口中的样点的梯度可以用于块的分类。[0536]1.替代地,另外,在分类中不使用m*n窗口中的顶部c1个线和底部c2个线的梯度。[0537]vi.在一个示例中,对于视频单元的顶边界/左边界处的块,在(m–c1)*(n–c2)窗口中的样点的梯度可以用于块的分类。[0538]1.替代地,另外,在分类中不使用m*n窗口中的顶部c1个线和左方c2个列的梯度。[0539]vii.在一个示例中,对于视频单元的顶边界和右边界处的块,在(m–c1)*(n–c2)窗口中的样点的梯度可以用于块的分类。[0540]1.替代地,另外,在分类中不使用m*n窗口的顶部c1个线和右方c2个列的梯度。[0541]viii.在一个示例中,对于视频单元的底边界和左边界处的块,在(m–c1)*(n–c2)窗口中的样点的梯度可以用于块的分类。[0542]1.替代地,另外,在分类中不使用m*n窗口中的底部c1个线和左方c2个列的梯度。[0543]ix.在一个示例中,对于视频单元的底边界和右边界处的块,在(m–c1)*(n–c2)窗口中的样点的梯度可以用于块的分类。[0544]1.替代地,另外,在分类中不使用m*n窗口中的底部c1个线和右方c2个列的梯度。[0545]x.在一个示例中,对于视频单元的左边界和右边界处的块,在(m–c1–c2)*n窗口中的样点的梯度可以用于块的分类。[0546]1.替代地,另外,在分类中不使用m*n窗口中的左方c1个线和右方c2个列的梯度。[0547]xi.在一个示例中,对于视频单元顶边界、底边界和左边界处的块,在(m–c3)*(n–c1–c2)窗口中的样点的梯度可以用于块的分类。[0548]1.替代地,另外,在分类中不使用m*n窗口中的顶部c1个线、底部c2个线和左方c3个列的梯度。[0549]xii.在一个示例中,对于视频单元的顶边界、底边界和右边界处的块,在(m–c3)*(n–c1–c2)窗口中的样点的梯度可以用于块的分类。[0550]1.替代地,另外,在分类中不使用m*n窗口中的顶部c1个线、底部c2个线和右方c3个列的梯度。[0551]xiii.在一个示例中,对于视频单元左边界、右边界和顶边界处的块,在(m–c1–c2)*(n–c3)窗口中的样点的梯度可以用于块的分类。[0552]1.替代地,另外,在分类中不使用m*n窗口中的左方c1个列、右方c2个列和顶部c3个线的梯度。[0553]xiv.在一个示例中,对于视频单元的左边界、右边界和底边界处的块,在(m–c1–c2)*(n–c3)窗口中的样点的梯度可以用于块的分类。[0554]1.替代地,另外,在分类中不使用m*n窗口中的左方c1个列、右方c2个列和底部c3个线的梯度。[0555]xv.在一个示例中,对于视频单元的左边界、右边界、顶边界和底边界处的块,在(m–c1–c2)*(n–c3–c4)窗口中的样点的梯度可以用于块的分类。[0556]1.替代地,另外,在分类中不使用m*n窗口中的左方c1个列、右方c2个列、顶部c3个线和底部c4个线的梯度。[0557]xvi.在一个示例中,c1、c2、c3和c4等于2。[0558]xvii.在一个示例中,可以使用不具有在梯度计算中所需的任何“不可用”邻域样点的样点的梯度。[0559]f.在一个示例中,当一个线位于多个边界处(例如,线与边界之间的距离小于阈值)时,无论该线可能属于多少个边界都仅执行一次填充过程。[0560]i.替代地,另外,应填充多少邻域线可以取决于当前线相对于所有边界的位置。[0561]ii.例如,诸如当当前线在两个边界内且两个边界在上方和下方时,可以由当前线与两个边界之间的距离来决定应填充多少邻域线。[0562]iii.例如,诸如当当前线在两个边界内且两个边界在上方和下方时,可以由当前线与最近边界之间的距离来决定应填充多少邻域线。[0563]iv.例如,可以为每个边界独立地计算应填充多少邻域线,并且选择最大值作为最终填充线数。[0564]v.在一个示例中,可以为该线的每一侧(例如,上侧和下侧)决定应填充多少邻域线。[0565]vi.在一个示例中,对于两侧填充方法,可以为两侧共同确定应填充多少邻域线。[0566]vii.替代地,另外,应用由alf使用的两侧填充方法。[0567]g.在一个示例中,当一个线处于多个边界处并且在线的每一侧(例如,上侧和下侧)中存在至少一个边界时,可以为其禁用alf。[0568]h.在一个示例中,当由当前线所需的填充的线的数目大于阈值时,可以为当前线禁用alf。[0569]i.在一个示例中,当任一侧中的填充的线的数目大于阈值时,可以为当前线禁用alf。[0570]ii.在一个示例中,当两侧中的填充的线的总数大于阈值时,可以为当前线禁用alf。[0571]i.替代地,另外,当块含有位于视频单元的底边界处的样点并且为块启用诸如alf的环路滤波时,可以应用上述方法。[0572]j.替代地,另外,可以在某些条件下应用上述方法,诸如当块含有位于视频单元的底边界处的样点并且不允许跨边界的滤波时(例如,pps_loop_filter_across_virtual_boundaries_disabled_flag/loop_filter_across_slices_enabled_flag/loop_filter_across_slices_enabled_flag为真)。[0573]k.提出的方法也可应用于位于垂直边界处的样点/块。[0574]6.当样点位于一个块的至少两个边界处(例如,上方当前线的至少一个边界是alf虚拟边界,并且下方是另一个边界)时,要填充多少个线并不仅仅由当前线相对于alf虚拟边界之间的距离决定。代替地,这是由当前线相对于两个边界之间的距离确定。[0575]a.在一个示例中,用于每侧填充的线数被设置为(m–min(d0,d1))。[0576]b.在一个示例中,用于每侧填充的线数被设置为(m–max(d0,d1))。[0577]c.对于上述示例,d0、d1表示当前线与上/下边界之间的距离。[0578]d.对于上述示例,m表示alf虚拟边界从一个ctu的底部开始的线数。[0579]7.可以定义在alf分类和/或alf线性或非线性滤波过程中选择样点的至少两种方式,其中一种方法是在应用任何环路滤波方法之前选择样点,并且另一种方法是在应用一个或多个环路滤波方法之后但在应用alf之前选择样点。[0580]a.在一个示例中,不同方式的选择可以取决于要滤波的样点的位置。[0581]b.在一个示例中,视频单元(诸如ctb)的底边界处的样点当其用在针对另一个样点的alf中时可以使用第一种方法来选择。否则(不在边界处),选择第二种方法。[0582]8.提出在滤波过程中禁用跨vpdu边界(例如,64x64区域)的样点的使用。[0583]a.在一个示例中,当alf分类过程所需的样点在vpdu边界之外或在虚拟边界下方时,它可以被替换为虚拟样点,或者该样点的分类结果可以从与其他样点相关联的分类结果复制,诸如从可用的样点填充。[0584]b.在一个示例中,当滤波过程所需的样点在vpdu边界之外或在虚拟边界下方时,它可以被替换为虚拟样点,诸如从可用样点填充。[0585]c.在一个示例中,如果块含有位于vpdu的边界处的样点,则可以为该块启用alf虚拟边界处理方法(例如,applyvirtualboundary设置为真)。[0586]d.替代地,可以在滤波过程中禁用跨水平vpdu边界的样点的使用。[0587]i.在一个示例中,当滤波过程所需的样点在水平vpdu边界下方或虚拟边界下方时,它可以由虚拟样点替换,诸如从可用样点填充。[0588]e.替代地,可以在滤波过程中禁用跨垂直vpdu边界的样点的使用。[0589]i.在一个示例中,当滤波过程所需的样点在垂直vpdu边界下方或虚拟边界下方时,它可以由虚拟样点替换,诸如从可用样点填充。[0590]9.代替在alf分类/滤波过程中使用填充的样点(例如,不可用的上方/下方虚拟边界、视频单元的上方/下方边界),提出使用所有环路滤波器之前重构的样点。[0591]a.替代地,另外,经由从所有环路滤波器之前重构的样点填充样点来应用两侧填充的构思。[0592]i.在一个示例中,如果滤波器支持中的样点来自所有环路滤波器之前重构的样点,则滤波器支持中的对称(例如,关于如当前样点的原点对称)样点也应使用所有环路滤波器之前重构的样点。[0593]1.假设要滤波的当前样点的坐标为(0,0)并且位于(i,j)处的样点是在所有环路滤波器之前重构的样点,则位于(-i,-j)的样点为在所有环路滤波器之前重构的样点。[0594]2.假设要滤波的当前样点的坐标为(x,y)并且位于(x i,y j)处的样点是在所有环路滤波器之前重构的样点,则位于(x-i,y-j)处的样点为在所有环路滤波器之前重构的样点。[0595]b.替代地,另外,当启用环路整形(又称lmcs)时,在所有环路滤波器之前重构的样点都是从整形域转换而来的原始域中的样点。[0596]10.代替在alf滤波过程中使用填充的样点(例如,不可用的上方/下方虚拟边界、视频单元的上方/下方边界),提出采用不同的alf滤波器支持。[0597]a.在一个示例中,假设需要以上述方法填充样点,与该样点相关联的滤波器系数被设置为零,以代替执行该填充。[0598]i.在这种情况下,可以通过排除需要填充的样点来修改滤波器支持。[0599]ii.替代地,此外,应用于除当前样点以外的其他样点的滤波器系数保持不变,但是,可以修改应用于当前样点的滤波器系数,诸如((1《《c_bd)–应用于不需要填充的样点的所有滤波器系数之和),其中c_bd指示滤波器系数的比特深度。[0600]1.以图18a-18b为例,当对线l和i进行滤波时,将应用于当前样点的滤波器系数c12修改为((1《《c_bd)–2*(c4 c5 c6 c7 c8 c9 c10 c11))。[0601]b.在一个示例中,假设从(x2,y2)以上述方法填充样点(x1,y1),无论启用还是禁用非线性滤波器,都将与(x1,y1)相关联的滤波器系数添加到位置(x2,y2)的滤波器系数,以代替执行该填充。[0602]i.替代地,另外,(x2,y2)的裁剪参数可以即时导出。[0603]1.在一个示例中,可以设置为等于用于(x2,y2)的解码的裁剪参数。[0604]2.替代地,可以设置为函数的返回值,其中(x1,y1)和(x2,y2)的解码的裁剪参数作为输入,诸如较大值或较小值。[0605]11.裁剪参数/滤波器系数/滤波器支持的选择可以取决于滤波样点是否需要访问填充的样点(例如,不可用的上方/下方虚拟边界、视频单元的上方/下方边界)。[0606]a.在一个示例中,对于具有相同类索引的样点可以采用不同的裁剪参数/滤波器系数/滤波器支持,但是对于样点中的一些需要访问填充的样点而其他不需要。[0607]b.在一个示例中,可以在ctu/区域/条带/片级别中信令通知用于对需要访问填充的样点的样点进行滤波的裁剪参数/滤波器系数/滤波器支持。[0608]c.在一个示例中,用于对需要访问填充的样点的样点进行滤波的裁剪参数/滤波器系数/滤波器支持可以从用于对不需要访问填充的样点的样点进行滤波的裁剪参数/滤波器系数/滤波器支持中导出。[0609]i.在一个示例中,可以应用项目符号9a或9b。[0610]12.如何为环路滤波(诸如alf)处理边界处的样点可能取决于色彩分量和/或色彩格式。[0611]a.例如,“边界处”的定义对于不同的色彩分量可以是不同的。在一个示例中,如果亮度样点与底边界之间的距离小于t1,则该亮度样点在底边界处;如果色度样点与底边界之间的距离小于t2,则该色度样点在底边界处。t1和t2可以不同。[0612]i.在一个示例中,当色彩格式不是4:4:4时,t1和t2可以不同。[0613]13.当一个ctu/vpdu的底/顶/左/右边界也是具有独立编解码的条带/片/砖/子区域的边界时,将应用多个填充过程的固定顺序。[0614]a.在一个示例中,在第一步骤中,首先应用条带/片/砖的填充方法(例如,单侧填充)。然后,在第二步骤期间进一步应用用于处理alf虚拟边界的填充方法(例如,两侧填充方法)。在这种情况下,第一步骤之后的填充的样点被标记为可用,并且可以用于决定在alf虚拟边界过程中要填充多少个线。采用相同规则(例如,图16a-16c)以用于处理不在那些边界处的ctu。[0615]14.提出的方法可以应用于两个子图片之间的一个或多个边界。[0616]a.应用提出的方法的边界可以是水平边界。[0617]b.应用提出的方法的边界可以是垂直边界。[0618]15.以上提出的方法可以应用于垂直边界处的样点/块。[0619]16.在“360虚拟边界”处是否应用或如何应用提出的方法可以取决于“360虚拟边界”的位置。[0620]a.在一个示例中,当“360虚拟边界”与ctu边界重合时,可以应用所提出的方法。例如,对于“360虚拟边界”处的样点,在alf中仅可以应用两侧填充。[0621]b.在一个示例中,当“360虚拟边界”与ctu边界不重合时,可以不应用所提出的方法。例如,对于“360虚拟边界”处的样点,可以在alf中仅应用1侧填充。[0622]c.在一个示例中,对于“360虚拟边界”处的样点,可以在alf中应用相同的填充方法,无论“360虚拟边界”的位置如何。[0623]i.例如,对于“360虚拟边界”处的样点,可以在alf中应用1侧填充。[0624]ii.例如,对于“360虚拟边界”处的样点,可以在alf中应用2侧填充。[0625]d.在一个示例中,对于其中至少一个边界是“360虚拟边界”并且“360虚拟边界”中的至少一个与ctu边界不重合的多个边界处的样点,可以不应用所提出的方法。[0626]i.例如,可以通过1侧填充来填充跨这些多个边界中的任何一个的样点。[0627]1.替代地,另外,如果存在“虚拟边界”,则可以在1侧填充之后在alf中应用2侧填充。[0628]e.在一个示例中,对于位于两种边界之间的样点,如果这其中一种边界是“360虚拟边界”,而另一种不是,则在alf过程中仅调用填充一次。[0629]i.在一个示例中,可以调用用于处理alf虚拟边界的填充方法(例如,2侧填充方法)。[0630]1.替代地,可以调用用于处理图片(或条带/片/砖/子图片)边界的填充方法(例如,1侧填充)。[0631]ii.替代地,可以依次应用两个或多个填充过程。[0632]1.在一个示例中,可以首先应用用于处理图片(或条带/片/砖/子图片)边界的填充方法(例如,1侧填充),然后,还可以调用用于处理alf虚拟边界的填充方法(例如,2侧填充方法)。[0633]a.替代地,另外,第一填充之后的填充样点被视为可用在第二填充过程中。[0634]iii.在一个示例中,对于位于两种或更多种边界(例如,条带边界/片边界/砖边界/“360虚拟边界”/“alf虚拟边界”/子图片边界)之间的样点,只要其中一个边界是“360虚拟边界”(如图24所示,例如,第一边界是“360虚拟边界”,并且第二边界是“alf虚拟边界”或条带/砖/片边界/子图片边界,或反之亦然),就可以应用所提出的方法。例如,对于这些样点,可以在alf中只应用2侧填充。[0635]1.替代地,如果这些多种边界是“360虚拟边界”或图片边界,则可以不应用所提出的方法。例如,对于这些样点,可以在alf中只应用1侧填充。[0636]f.在一个示例中,对于位于两种或更多种边界之间的样点,并且如果其中至少一个边界是“360虚拟边界”并且它与ctu边界不重合,则可以不应用所提出的方法。[0637]i.在这种情况下,这可以认为仅在“360虚拟边界”处而不在其他种类的边界处处理样点的现有技术。[0638]ii.在一个示例中,对于这些样点,可以在alf中只应用1侧填充。[0639]g.在一个示例中,对于位于两种或更多种边界之间的样点,并且如果其中至少一个边界是“360虚拟边界”,则可以不应用所提出的方法。[0640]i.在这种情况下,这可以认为仅在“360虚拟边界”处而不在其他种类的边界处处理样点的现有技术。[0641]ii.在一个示例中,对于这些样点,可以在alf中只应用1侧填充。[0642]17.当alf滤波过程中所需的参考样点(例如p0i,其中图16c中在滤波当前样点p0时i为a/b/c/d)、或/和alf分类过程“不可用”,例如,由于样点位于与当前样点不同的视频单元(例如,条带/砖/片/子图片)中并且不允许使用跨视频单元的样点(例如,条带/砖/片/子图片边界)进行滤波时,“不可用”的样点可以用“可用”样点(例如,与当前样点相同的条带/砖/片/子图片内的样点)进行填充。[0643]a.在一个示例中,可以首先将“不可用”参考样点裁剪到其最近的“可用”水平位置,然后,如果需要,则将“不可用”参考样点裁剪到其最近的“可用”垂直位置。[0644]b.在一个示例中,可以首先将“不可用”参考样点裁剪到其最近的“可用”垂直位置,然后,如果需要,则将“不可用”样点裁剪到其最近的“可用”水平位置。[0645]c.在一个示例中,“不可用”参考样点的坐标在水平方向上被裁剪到其最接近的“可用”样点(例如,最小距离)的坐标。[0646]i.在一个示例中,对于坐标为(x1,y1)和(x2,y2)的两个样点,它们之间的水平距离可以被计算为abs(x1–x2)。[0647]d.在一个示例中,“不可用”参考样点的坐标在垂直方向上被裁剪至其最近的“可用”样点(例如,最小距离)的坐标。[0648]i.在一个示例中,对于坐标为(x1,y1)和(x2,y2)的两个样点,它们之间的垂直距离可以被计算为abs(y1–y2)。[0649]e.在一个示例中,“不可用”样点被裁剪至其最近的“可用”样点(例如,最小距离)。[0650]i.在一个示例中,对于坐标为(x1,y1)和(x2,y2)的两个样点,它们之间的距离可以被计算为(x1–x2)*(x1–x2) (y1–y2)*(y1–y2)。[0651]ii.替代地,可以将两个像素之间的距离计算为abs(x1–x2) abs(y1–y2)。[0652]f.在一个示例中,可以以预定顺序填充“不可用”样点,直到找到“可用”样点为止。例如,如图31所示的示例,其中cur是当前块/cu/pu/ctu。[0653]i.例如,可以首先检验垂直的“可用”样点,然后可以检验水平的“可用”样点。[0654]ii.例如,可以首先检验水平“可用”样点,然后可以检验垂直“可用”样点。[0655]iii.例如,对于“不可用”的左上邻域样点(例如,区域“1”中),首先,检验当前块/cu/pu/ctu的左邻域样点(例如,区域“4”中),如果没有“可用”样点,则然后检验上邻域样点(例如,区域“2”中)。如果左邻域样点中或上邻域样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的左顶样点来填充“不可用”样点。[0656]1.替代地,对于“不可用”的左上邻域样点,检验当前块/cu/pu/ctu的上邻域样点,如果没有“可用”样点,则然后检验左邻域样点。如果上邻域样点和左邻域样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的左顶样点来填充“不可用”样点。[0657]iv.例如,对于“不可用”的右上邻域样点(例如,区域“3”中),首先,检验当前块/cu/pu/ctu的右邻域样点(例如,区域“5”中),如果没有“可用”样点,则然后检验上邻域样点(例如,区域“2”中)。如果右邻域样点或上邻域样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的右上样点来填充“不可用”样点。[0658]1.替代地,对于“不可用”的右上邻域样点,首先,检验当前块/cu/pu/ctu的上邻域样点,如果没有“可用”样点,则然后检验右邻域样点。如果在上邻域样点和右邻域样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的右顶样点来填充“不可用”样点。[0659]v.例如,对于“不可用”的左下邻域样点(例如,区域“6”中),首先,检验当前块/cu/pu/ctu的左邻域样点(例如,区域“4”中),如果没有“可用”样点,则然后检验下邻域样点(例如,区域“7”中)。如果左邻域样点或下邻域样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的左底样点来填充“不可用”样点。[0660]1.替代地,对于“不可用”的左下邻域样点,首先,检验当前块/cu/pu/ctu的下邻域样点,如果没有“可用”样点,则然后检验左邻域样点。如果下邻域样点和左邻域样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的左底样点来填充“不可用”样点。[0661]vi.例如,对于“不可用”的右下邻域样点,首先,检验当前块/cu/pu/ctu的右邻域样点(例如,区域“5”中),如果没有“可用”样点,则然后检验下邻域样点(例如,区域“7”中)。如果右邻域样点或下邻域样点都没有“可用”样点,则使用当前块/cu/pu/ctu的右底样点来填充“不可用”样点。[0662]1.例如,对于“不可用”的右下邻域样点,首先,检验当前块/cu/pu/ctu的下邻域样点,如果不存在“可用”样点,则然后检验右邻域样点。如果下邻域样点和右邻样点中都没有“可用”样点,则使用当前块/cu/pu/ctu的右底样点来填充“不可用”样点。[0663]vii.在一个示例中,对于每个邻域区域,可以依次检验一个或多个样点。替代地,可以只检验一个。[0664]viii.替代地,另外,如果没有检验能找到可用的样点,则代替地可以使用要滤波的当前样点的值。[0665]ix.在一个示例中,对于“不可用”的左上/右上/左下/右下邻域样点,它们总是可以用当前块/cu/pu/ctu内的样点进行填充。[0666]1.在一个示例中,对于“不可用”的左上邻域样点(例如,图31中的区域“1”中),使用当前块/cu/pu/ctu的左顶样点来填充“不可用”样点。[0667]2.在一个示例中,对于“不可用”的右上邻域样点(例如,图31中的区域“3”中),使用当前块/cu/pu/ctu的右顶样点来填充“不可用”样点。[0668]3.在一个示例中,对于“不可用”的左下邻域样点(例如,图31中的区域“6”中),使用当前块/cu/pu/ctu的左底样点来填充“不可用”样点。[0669]4.在一个示例中,对于“不可用”的右下邻域样点(例如,图31中的区域“8”中),使用当前块/cu/pu/ctu的右底样点来填充“不可用”样点。[0670]g.替代地,对于当前样点禁用滤波过程。[0671]h.替代地,可以不允许alf中的分类过程(例如,对于当前样点的梯度计算)使用不可用的参考样点。[0672]18.如何导出不可用参考样点的填充样点可以取决于ctu是否与任何边界重合。[0673]a.在一个示例中,当当前ctu与任何种类的边界都不重合,但是当前样点的滤波过程(例如,alf分类/alf滤波过程)需要访问不同视频单元(例如,条带)中的参考样点时,可以应用项目符号16中描述的方法。[0674]i.替代地,另外,当当前ctu与任何种类的边界都不重合,但是当前样点的滤波过程(例如,alf分类/alf滤波过程)需要访问不同视频单元(例如,条带)中的参考样点且不允许跨条带边界进行滤波时,可以应用项目符号16中描述的方法。[0675]ii.替代地,另外,当当前ctu与任何种类的边界都不重合,但是当前样点的滤波过程(例如,alf分类/alf滤波过程)需要访问不同视频单元(例如,条带)中的参考样点及同一视频单元中的参考样点且不允许跨条带边界进行滤波时,则可以应用项目符号16中描述的方法。[0676]b.在一个示例中,当当前ctu与至少一种边界重合时,可以应用统一的填充方法(例如2侧或1侧填充)。[0677]i.替代地,当当前ctu与多种边界重合且不允许跨那些边界进行滤波时,可以应用统一填充方法(例如,2侧或1侧填充)。[0678]c.在一个示例中,可以使用项目符号16中描述的方法来仅填充无法由2侧填充或/和1侧填充进行填充的“不可用”样点。[0679]19.滤波过程(例如,去块化、sao、alf、双边滤波、hadamard变换滤波等)是否可以访问跨视频单元的边界(例如,条带/砖/片/子图片边界)的样点可以以不同级进行控制,诸如由自身控制,而不是针对序列/图片中的所有视频单元进行控制。[0680]a.替代地,可以在pps/条带头中为条带信令通知一个语法元素,以指示滤波过程是否可以跨该条带的条带边界。[0681]b.替代地,可以在pps中为砖/片信令通知一个语法元素,以指示滤波过程是否可以跨砖/片的砖/片边界。[0682]c.在一个示例中,可以在sps/pps中信令通知语法元素以指示滤波过程是否可以跨视频/图片的砖边界或/和片边界或/和条带边界或/和“360度虚拟边界”。[0683]i.在一个示例中,可以为不同种类的边界信令通知分离的语法元素。[0684]ii.在一个示例中,可以为所有种类的边界信令通知一个语法元素。[0685]iii.在一个示例中,可以为几种边界信令通知一个语法元素。[0686]1.例如,可以为砖边界和片边界信令通知1个语法元素。[0687]d.在一个示例中,可以在sps中信令通知语法元素以指示是否存在关于滤波过程的pps/条带级别指示。[0688]i.在一个示例中,可以为不同种类的边界信令通知分离的语法元素。[0689]ii.在一个示例中,可以为所有种类的边界信令通知一个语法元素。[0690]iii.在一个示例中,可以为几种边界信令通知一个语法元素。[0691]1.例如,可以为砖边界和片边界信令通知1个语法元素。[0692]iv.仅当sps中的对应语法元素等于某个值时,才可以在pps/条带头中信令通知关于滤波过程是否可以跨条带/砖/片/子图片边界的指示。[0693]1.替代地,当sps中的对应语法元素等于某些值时,可以在pps/条带头中不信令通知关于滤波过程是否可以跨条带/砖/片/子图片边界的指示。[0694]a.在这种情况下,如果sps中的指示等于某个值,则可能不允许滤波过程跨条带/转/片/子图片边界。[0695]b.在这种情况下,如果sps中的指示等于某个值,则滤波过程可以跨条带/砖/片/子图片边界。[0696]20.提出检验位于当前块的左上/右上/左下/右下邻域区域的样点是否在与alf过程(例如,分类和/或滤波过程)中的当前块相同的视频单元(例如,条带/砖/片/子图片/360虚拟边界)中。由(x0,y0)表示当前亮度编解码树块的左顶样点相对于当前图片的左顶样点,分别将ctbxsize和ctbysize表示为ctu宽度和高度。[0697]a.在一个示例中,可以检验位于左上区域的代表性样点,诸如(x0–offsetx0,y0–offsety0)。[0698]i.在一个示例中,(offsetx0,offsety0)可以等于(1,1)、(2,1)或(1,2)。[0699]b.在一个示例中,可以检验位于右上区域的代表性样点,诸如(x0 offsetx1,y0-offsety1)。[0700]i.在一个示例中,(offsetx1,offsety1)可以等于(ctbxsize,1)、(ctbxsize 1,1)或(ctbxsize,2)。[0701]c.在一个示例中,可以检验位于左下区域的代表性样点,诸如(x0–offsetx2,y0 offsety2)。[0702]i.在一个示例中,(offsetx2,offsety2)可以等于(1,ctbysize)、(2,ctbysize)或(1,ctbysize 1)。[0703]d.在一个示例中,可以检验位于右下区域的代表性样点,诸如(x0 offsetx3,y0 offsety3)。[0704]i.在一个示例中,(offsetx2,offsety2)可以等于(ctbxsize,ctbysize)、(ctbxsize 1,ctbysize)或(ctbxsize,ctbysize 1)。[0705]e.在一个示例中,如果区域中的代表性样点在不同的视频单元中,并且不允许跨不同视频单元的滤波,则将该区域中要访问的样点标记为不可用。[0706]i.在一个示例中,如果区域中的代表性样点在不同的条带中,并且loop_filter_across_slices_enabled_flag等于0,则该区域中要访问的样点被标记为不可用。[0707]ii.在一个示例中,如果区域中的代表性样点位于不同的砖中,并且loop_filter_across_bricks_enabled_flag等于0,则该区域中要访问的样点被标记为不可用。[0708]iii.在一个示例中,如果区域中的代表性样点在不同的子图片中,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0,则该区域中要访问的样点被标记为不可用。在一个示例中,subpicidx是包括当前块的当前子图片的索引。[0709]f.在一个示例中,如果在k个区域中的k个代表性样点中的m个代表性样点处于与当前ctu不同的视频单元中,并且不允许跨不同视频单元的滤波,则该k个区域中要访问的样点都被标记为不可用。[0710]i.在一个示例中,m等于1且k等于2。[0711]1.例如,k个区域可以包括左上邻域区域和右上邻域区域。[0712]2.例如,k个区域可以包括左上邻域区域和左下邻域区域。[0713]3.例如,k个区域可以包括右上邻域区域和右下邻域区域。[0714]4.例如,k个区域可以包括左下邻域区域和右下邻域区域。[0715]5.替代地,m可以等于2。[0716]ii.在一个示例中,m等于1且k等于3。[0717]1.例如,k个区域可以包括左上、右上和左下邻域区域。[0718]2.例如,k个区域可以包括左上、右上和右下邻域区域。[0719]3.例如,k个区域可以包括右上、左下和右下邻域区域。[0720]4.例如,k个区域可以包括左上、左下和右下邻域区域。[0721]5.或者,m可以等于2或3。[0722]iii.在一个示例中,m等于1且k等于4。例如,k个区域可以包括左上、右上、左下和右下邻域区域。[0723]1.替代地,m可以等于1或2或3。[0724]iv.在一个示例中,检验k个代表性样点中的n个(m《=n《=k),以确定在不同于当前ctu的视频单元中是否存在n个代表性样点中的m个代表性样点。[0725]1.在一个示例中,n等于m,并且仅检验m个预定义的代表性样点。[0726]2.例如,当m等于1并且k等于2时,k个区域可以包括左上和右上邻域区域,仅检验左上邻域区域的代表性样点。[0727]a.替代地,仅检验右上邻域区域的代表性样点。[0728]3.例如,当m等于1并且k等于2时,k个区域可以包括左下和右下邻域区域,仅检验左下邻域区域的代表性样点。[0729]a.替代地,仅检验右下邻域区域的代表性样点。[0730]4.例如,当m等于1并且k等于2时,k个区域是左上和左下邻域区域,仅检验左上邻域区域的代表性样点。[0731]a.替代地,仅检验左下邻域区域的代表性样点。[0732]5.例如,当m等于1并且k等于2时,k个区域是右上和右下邻域区域,仅检验右上邻域区域的代表性样点。[0733]a.替代地,仅检验右下邻域区域的代表性样点。[0734]6.例如,当m等于1且k等于4时,k个区域是左上、右上、左下和右下邻域区域,仅检验左上邻域区域的代表性样点。[0735]a.替代地,仅检验右下邻域区域的代表性样点。[0736]b.替代地,仅检验左下邻域区域的代表性样点。[0737]c.替代地,仅检验右上邻域区域的代表性样点。[0738]v.在一个示例中,如果区域中的代表性样点在不同的条带中,并且loop_filter_across_slices_enabled_flag等于0,则该区域中要访问的样点被标记为不可用。[0739]vi.在一个示例中,如果区域中的代表性样点位于不同的砖中,并且loop_filter_across_bricks_enabled_flag等于0,则该区域中要访问的样点被标记为不可用。[0740]vii.在一个示例中,如果区域中的代表性样点在不同的子图片中,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0,则该区域中要访问的样点被标记为不可用。在一个示例中,subpicidx是包括当前块的当前子图片的索引。[0741]g.在上面的示例中,offsetxi/offsetyi(其中i为0…3)是整数。[0742]i.替代地,可以将offsetxi/offsetyi(其中i为0…3)设置为等于ctu宽度/高度。[0743]21.ctu的左上/右上/左下/右下邻域区域的“可用性”的确定可以独立于ctu的上/左/右/下邻域区域。[0744]a.在alf滤波或/和分类过程中,可以不同地确定是否对左上邻域区域执行填充和是否对上方邻域区域执行填充。[0745]i.在一个示例中,如果上方邻域区域被标记为“不可用”并且左上邻域区域被标记为“可用”,则对上方邻域区域执行填充,而不对左上邻域区域执行填充。[0746]ii.在一个示例中,如果左上邻域区域被标记为“不可用”并且上方邻域区域被标记为“可用”,则对左上邻域区域执行填充,而不对上方邻域区域执行填充。[0747]b.在alf滤波或/和分类过程中,可以不同地确定是否对右上邻域区域执行填充和是否对上方邻域区域执行填充。[0748]c.在alf滤波或/和分类过程中,可以不同地确定是否对左上邻域区域执行填充和是否对左方邻域区域执行填充。[0749]d.在alf滤波或/和分类过程中,可以不同地确定是否对左下邻域区域执行填充和是否对左方邻域区域执行填充。[0750]e.在alf滤波或/和分类过程中,可以不同地确定是否对右下邻域区域执行填充和是否对右方邻域区域执行填充。[0751]f.在alf滤波或/和分类过程中,可以不同地确定是否对右上邻域区域执行填充和是否对右方邻域区域执行填充。[0752]g.在alf滤波或/和分类过程中,可以不同地确定是否对右下邻域区域执行填充和是否对下方邻域区域执行填充。[0753]h.在alf滤波或/和分类过程中,可以不同地确定是否对左下邻域区域执行填充和是否对下方邻域区域执行填充。[0754]i.在一个示例中,当左上或/和右上邻域区域中的样点被确定为“不可用”时,上方邻域区域中的样点仍可以被确定为“可用”(例如,在其在与当前ctu相同的视频单元中的情况下)。例如,在alf滤波或/和分类过程中,对于上方邻域区域可以不执行样点填充。[0755]j.在一个示例中,当左下或/和右下邻域区域中的样点被确定为“不可用”时,下方邻域区域中的样点仍可以被确定为“可用”(例如,在其在与当前ctu相同的视频单元中的情况下)。例如,在alf滤波或/和分类过程中,对于下方邻域区域可以不执行样点填充。[0756]k.在一个示例中,当左上或/和左下邻域区域中的样点被确定为“不可用”时,左方邻域区域中的样点仍可以被确定为“可用”(例如,在其在与当前ctu相同的视频单元中的情况下)。例如,在alf滤波或/和分类过程中,对于左方邻域区域可以不执行样点填充。[0757]l.在一个示例中,当右上或/和右下邻域区域中的样点被确定为“不可用”时,右方邻域区域中的样点仍可以被确定为“可用”(例如,在其在与当前ctu相同的视频单元中的情况下)。例如,在alf滤波或/和分类过程中,对于右方邻域区域可以不执行样点填充。[0758]22.以上提出的方法不仅可以应用于alf,还可以应用于需要访问当前块之外的样点的其他种类的滤波方法。[0759]a.替代地,以上提出的方法可以应用于需要访问当前块之外的样点的其他编解码工具(非滤波方法)。[0760]23.是否和/或如何应用上述方法可以通过以下方式确定:[0761]a.在dps/sps/vps/pps/aps/图片头/片头/片组头/最大编解码单元(lcu)/编解码单元(cu)/lcu行/lcu的组/tu/pu块/视频编解码单元中信令通知的消息[0762]b.cu/pu/tu/块/视频编解码单元的位置[0763]c.当前块和/或其邻域块的块维度[0764]d.当前块和/或其邻域块的块形状[0765]e.当前块和/或其邻域块的编解码信息[0766]f.色彩格式指示(诸如4:2:0、4:4:4)[0767]g.编解码树结构[0768]h.条带/片组类型和/或图片类型[0769]i.色彩分量(例如,可能仅应用于色度分量或亮度分量)[0770]j.时域层id[0771]k.标准的配置文件/级别/层级[0772]5.实施例[0773]在下面的章节中,描述了如何修改vvc标准的当前版本以适应公开的技术的一些实施例的一些示例。新添加的部分以粗斜体带下划线的文本指示。删除的部分用[[]]指示。[0774]5.1实施例#1[0775]loop_filter_across_bricks_enabled_flag等于1指定了可以在指代pps的图片中跨砖边界执行环路滤波操作。loop_filter_across_bricks_enabled_flag等于0指定了在指代pps的图片中不跨砖边界执行环路滤波操作。环路滤波操作包括去块化滤波器、样点自适应偏移滤波器[[以及自适应环路滤波器]]操作。如果不存在,则loop_filter_across_bricks_enabled_flag的值被推断为等于1。[0776]loop_filter_across_slices_enabled_flag等于1指定了可以在指代pps的图片中跨条带边界执行环路滤波操作。loop_filter_across_slices_enabled_flag等于0指定了在指代pps的图片中不跨条带边界执行环路滤波操作。环路滤波操作包括去块化滤波器、样点自适应偏移滤波器[[以及自适应环路滤波器]]操作。如果不存在,则将loop_filter_across_slices_enabled_flag的值被推断为等于0。[0777]5.2实施例#2[0778]图21示出了在图片中处理ctu的示例。与图19比较的差异用虚线突出显示。[0779]5.3实施例#3[0780]8.8.5.2亮度样点的编解码树块滤波过程[0781]该过程的输入是:[0782]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel,[0783]–滤波的重构的亮度图片样点数组alfpicturel,[0784]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb)。[0785]该过程的输出是修改的滤波重构的亮度图片样点数组alfpicturel。[0786]使用以下调用章节8.8.5.3的滤波器索引的导出过程:位置(xctb,yctb)和重构的亮度图片样点数组recpicturel作为输入,而filtidx[x][y]和transposeidx[x][y],其中y=0..ctbsizey–1,作为输出。[0787]为了导出滤波重构的亮度样点alfpicturel[x][y],当前亮度编解码树块内的每个重构的亮度样点recpicturel[x][y]被滤波如下,其中x,y=0..ctbsizey-1:[0788]–亮度滤波器系数f[j]的数组和与由filtidx[x][y]指定的滤波器对应的亮度裁剪值c[j]的数组导出如下,其中j=0..11:[0789]–…[0790]–取决于transposeidx[x][y]导出亮度滤波器系数和裁剪值索引idx,如下:[0791]–…[0792]–亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-3...3,导出如下:[0793]–…[0794]变量applyvirtualboundary导出如下:[0795]–如果以下条件[[中的一个或多个]]为真,则applyvirtualboundary设置为等于0:[0796]–当前编解码树块的底边界是图片的底边界。[0797][[–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[0798]–当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[0799]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。]][0800]–否则,applyvirtualboundary设置为等于1。[0801]–根据水平亮度样点的位置y和applyvirtualboundary,表8-22中指定重构的样点偏移r1、r2和r3。[0802]–…[0803]8.8.5.4色度样点的编解码树块滤波过程1237)[0826]–变量applyvirtualboundary导出如下:[0827]––如果以下条件[[中的一个或多个]]为真,则applyvirtualboundary设置为等于0:[0828]–当前编解码树块的底边界是图片的底边界。[0829]–[[当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[0830]–当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[0831]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。]][0832]–否则,applyvirtualboundary设置为等于1。[0833]–根据水平亮度样点的位置y和applyvirtualboundary,表8-22中指定重构的样点偏移r1和r2。[0834]…[0835]替代地,条件“当前编解码树块的底边界是图片的底边界”可以替换为“当前编解码树块的底边界是图片的底边界或在图片的外部。”[0836]5.4实施例#4[0837]该实施例示出了在alf分类过程中不允许使用vpdu区域下方的样点的示例(对应于第4节中的项目符号7)。[0838]8.8.5.3亮度样点的滤波器索引和alf转置的导出过程[0839]该过程的输入是:[0840]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb),[0841]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel。[0842]该过程的输出是[0843]–分类滤波器索引数组filtidx[x][y],其中x,y=0..ctbsizey-1,[0844]–转置索引数组transposeidx[x][y],其中x,y=0..ctbsizey-1。[0845]亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2...5,导出如下:[0846]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0847]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)(8-1193)[0848]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于6,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0849]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀꢀꢀꢀꢀꢀ(8-1194)[0850]–否则,如下适用:[0851]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1195)[0852]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0853]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)(8-1196)[0854]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y大于0且小于6,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0855]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1197)[0856]–否则,以下适用:[0857]–如果yctb ctbsizey大于或等于pic_height_in_luma_samples,则以下适用:[0858]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1198)[0859]–否则,如果y小于ctbsizey-4,则以下适用:[0860]vy j=clip3(0,yctb ctbsizey-5,yctb y j)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1199)[0861]–否则,如下适用:[0862]vy j=clip3(yctb ctbsizey-4,pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1200)[0863]分类滤波器索引数组filtidx和转置索引数组transposeidx通过以下有序步骤导出:[0864]1.变量filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y],其中x,y=-2..ctbsizey 1,该变量导出如下:[0865]–如果x和y两者都是偶数或者x和y两者都不是偶数,则以下适用:[0866]filth[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx-1,vy]-recpicture[hx 1,vy])ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1201)[0867]filtv[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx,vy-1]-recpicture[hx,vy 1])ꢀꢀꢀꢀꢀꢀ(8-1202)[0868]filtd0[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx-1,vy-1]-recpicture[hx 1,vy 1])ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1203)[0869]filtd1[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx 1,vy-1]-recpicture[hx-1,vy 1])ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1204)[0870]–否则,filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y]被设置为等于0。[0871]2.变量miny、maxy和ac导出如下:[0872]–如果(y《《2)等于[[(ctbsizey-8)]]并且(yctb ctbsizey)小于pic_height_in_luma_samples–1,则miny设置为等于-2,maxy被设置为等于3,ac被设置为等于96。[0873]–否则,(y《《2)等于[[(ctbsizey-4)]]并且(yctb ctbsizey)小于pic_height_in_luma_samples–1,则miny设置为等于0,maxy被设置为等于5,将ac被设置为等于96。[0874]–否则,miny被设置为等于-2,maxy被设置为等于5,ac被设置为等于64。[0875]3.变量vartemph1[x][y]、vartempv1[x][y]、vartempd01[x][y]、vartempd11[x][y]和vartemp[x][y],其中x,y=0..(ctbsizey-1)》》2,该变量导出如下:[0876]sumh[x][y]=∑i∑jfilth[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxy(8-1205)[0877]sumv[x][y]=∑i∑jfiltv[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀꢀꢀ(8-1206)[0878]sumd0[x][y]=∑i∑jfiltd0[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀꢀ(8-1207)[0879]sumd1[x][y]=∑i∑jfiltd1[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀꢀ(8-1208)[0880]sumofhv[x][y]=sumh[x][y] sumv[x][y]ꢀꢀꢀ(8-1209)[0881]4.变量dir1[x][y]、dir2[x][y]和dirs[x][y],其中x,y=0..ctbsizey-1,该变量导出如下:[0882]–变量hv1、hv0和dirhv导出如下:[0883]…[0884]–变量d1、d0和dird导出如下:[0885]…[0886]5.变量avgvar[x][y],其中x,y=0..ctbsizey-1,导出如下:[0887]vartab[]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4}(8-1227)[0888]avgvar[x][y]=vartab[clip3(0,15,(sumofhv[x》》2][y》》2]*ac)》》(3 bitdepthy))](8-1228)[0889]6.分类滤波器索引数组filtidx[x][y]和转置索引数组transposeidx[x][y],其中x=y=0..ctbsizey-1,导出如下:[0890]transposetable[]={0,1,0,2,2,3,1,3}[0891]transposeidx[x][y]=transposetable[dir1[x][y]*2 (dir2[x][y]》》1)][0892]filtidx[x][y]=avgvar[x][y][0893]当dirs[x][y]不等于0时,filtidx[x][y]被修改为如下:[0894]filtidx[x][y] =(((dir1[x][y]&0x1)《《1) dirs[x][y])*5(8-1229)[0895]5.5实施例#5[0896]对于位于多种边界(例如,条带/砖边界、360度虚拟边界)的样点,仅调用一次填充过程。并且每一侧要填充多少线取决于当前样点相对于边界的位置。[0897]在一个示例中,应用alf2侧填充方法。替代地,另外,在对称2侧填充方法中,当样点位于两个边界处时,例如,上侧的一个边界和下侧的一个边界,如图27所示填充多少个样点由较近的边界决定。同时,当导出分类信息时,仅使用图27中的两个边界之间的4线。[0898]图26示出了在样点的4线属于两个边界的情况下的填充方法的示例。在一个示例中,图26中的第一边界可以是alf虚拟边界;图25中的第二边界可以是条带/片/砖边界或360度虚拟边界。[0899]5.6实施例#6[0900]8.8.5.2亮度样点的编解码树块滤波过程[0901]该过程的输入是:[0902]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel,[0903]–滤波重构的亮度图片样点数组alfpicturel,[0904]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb)。[0905]该过程的输出是修改的滤波重构的亮度图片样点数组alfpicturel。[0906]使用以下调用章节8.8.5.3的滤波器索引的导出过程:位置(xctb,yctb)和重构的亮度图片样点数组recpicturel作为输入,而filtidx[x][y]和transposeidx[x][y],其中y=0..ctbsizey–1,作为输出。[0907]–亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-3...3,导出如下:[0908]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0909]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1197)[0910]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且对于任何n=0..pps_num_ver_virtual_boundaries-1,ppsvirtualboundariesposx[n]-xctb-x大于0且小于4,则以下适用:[0911]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1198)[0912]–否则,如下适用:[0913]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1199)[0914]–[[如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0915]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1200)[0916]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y大于0且小于4,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0917]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1201)]][0918]–[否则]]以下适用:[0919]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1202)[0920]–[[变量applyvirtualboundary导出如下:[0921]–如果以下条件中的一个或多个为真,则applyvirtualboundary被设置为等于0:[0922]–当前编解码树块的底边界是图片的底边界。[0923]–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[0924]–当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[0925]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。[0926]–否则,applyvirtualboundary被设置为等于1。]][0927][0928]表8-24–根据水平亮度样点位置y和[[applyvirtualboundary]]对r1、r2和r3的规范[0929][0930]8.8.5.3亮度样点的滤波器索引和alf转置的导出过程[0931]该过程的输入是:[0932]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb),[0933]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel。[0934]该过程的输出是[0935]–分类滤波器索引数组filtidx[x][y],其中x,y=0..ctbsizey-1,[0936]–转置索引数组transposeidx[x][y],其中x,y=0..ctbsizey-1。[0937]亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2...5,导出如下:[0938]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0939]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1208)[0940]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于6,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0941]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1209)[0942]–否则,如下适用:[0943]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1210)[0944]–[[如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0945]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1211)[0946]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y大于0且小于6,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0947]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1212)[0948]–否则,以下适用:[0949]–如果yctb ctbsizey大于或等于pic_height_in_luma_samples,则以下适用:[0950]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1213)[0951]–否则,如果y小于ctbsizey-4,则以下适用:[0952]vy j=clip3(0,yctb ctbsizey-5,yctb y j)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1214)[0953]–否则,如下适用:[0954]vy j=clip3(yctb ctbsizey-4,pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1215)]][0955][0956]分类滤波器索引数组filtidx和转置索引数组transposeidx通过以下有序步骤导出:[0957]1.变量filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y],其中x,y=-2..ctbsizey 1,该变量导出如下:[0958]–如果x和y两者都是偶数或者x和y两者都不是偶数,则以下适用:[0959][0960][0961][0962][0963]–否则,filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y]被设置为等于0。[0964]2.变量miny、maxy和ac被导出如下:[0965]–如果(y《《2)等于(ctbsizey-8)并且(yctb ctbsizey)小于pic_height_in_luma_samples-1,则miny被设置为-2,maxy被设置为等于3,ac被设置为等于96。[0966]–否则,(y《《2)等于(ctbsizey-4)并且(yctb ctbsizey)小于pic_height_in_luma_samples–1,则miny设置为等于0,maxy被设置为等于5,将ac被设置为等于96。[0967][0968][0969]–[[否则,miny被设置为等于-2,且maxy被设置为等于5,且ac被设置为等于64。]][0970]3.变量sumh[x][y]、sumv[x][y]、sumd0[x][y]、sumd1[x][y]和sumofhv[x][y],其中x,y=0..(ctbsizey-1)》》2,该变量导出如下:[0971]sumh[x][y]=∑i∑jfilth[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀ(8-1220)[0972]sumv[x][y]=∑i∑jfiltv[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀ(8-1221)[0973]sumd0[x][y]=∑i∑jfiltd0[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀ(8-1222)[0974]sumd1[x][y]=∑i∑jfiltd1[h(x《《2) i-xctb][v(y《《2) j-yctb],其中i=-2..5,j=miny..maxyꢀꢀ(8-1223)[0975]sumofhv[x][y]=sumh[x][y] sumv[x][y]ꢀꢀ(8-1224)[0976]…[0977]8.8.5.4色度样点的编解码树块滤波过程[0978]该过程的输入是:[0979]–在自适应环路滤波过程之前,重构的色度图片样点数组recpicture,[0980]–滤波重构的色度图片样点数组alfpicture,[0981]–指定当前色度编解码树块的左顶样点相对于当前图片的左顶样点的色度位置(xctbc,yctbc)。[0982]该过程的输出是经修改滤波重构的色度图片样点数组alfpicture。[0983]当前色度编解码树块的宽度ctbwidthc和高度ctbheightc导出如下:[0984]ctbwidthc=ctbsizey/subwidthcꢀꢀꢀꢀꢀꢀꢀ(8-1245)[0985]ctbheightc=ctbsizey/subheightcꢀꢀꢀꢀꢀꢀ(8-1246)[0986]为了导出滤波重构的色度样点alfpicture[x][y],当前色度编解码树块recpicture[x][y]内的每个重构的色度样点被滤波如下,其中x=0..ctbwidthc-1,y=0..ctbheightc-1:[0987]–色度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2..2,导出如下:[0988]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且xctbc x-ppsvirtualboundariesposx[n]/subwidthc大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0989][0990]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]/subwidthc-xctbc-x大于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[0991]hx i=clip3(0,ppsvirtualboundariesposx[n]/subwidthc-1,xctbc x i)ꢀꢀ(8-1248)[0992]–否则,如下适用:[0993]hx i=clip3(0,pic_width_in_luma_samples/subwidthc-1,xctbc x i)ꢀꢀꢀꢀꢀ(8-1249)[0994]–[[[如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctbc y-ppsvirtualboundariesposy[n]/subheightc大于或等于2且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0995][0996]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]/subheightc-yctbc-y大于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[0997]vy j=clip3(0,ppsvirtualboundariesposy[n]/subheightc-1,yctbc y j)ꢀꢀ(8-1251)[0998]–否则,]]以下适用:[0999]vy j=clip3(0,pic_height_in_luma_samples/subheightc-1,yctbc y j)ꢀꢀ(8-1252)[1000]–[[变量applyvirtualboundary导出如下:[1001]–如果以下条件中的一个或多个为真,则applyvirtualboundary被设置为等于0:[1002]–当前编解码树块的底边界是图片的底边界。[1003]–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[1004]–当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[1005]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。[1006]–否则,applyvirtualboundary被设置为等于1。]][1007]–通过调用8.8.5.5中指定的亮度样点的垂直边界位置导出过程来导出变量boundarypos1和boundarypos2,其中yctb等于yctb且y等于y。[1008]–变量boundarypos1被设置为等于boundarypos1/subwidthc。[1009]–变量boundarypos2被设置为等于boundarypos2/subwidthc。[1010]–表8-24中根据水平亮度样点位置y和applyvirtualboundary,指定了重构的样点偏移r1和r2。[1011]–变量curr导出如下:[1012]curr=recpicture[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1253)[1013]–色度滤波器系数f[j]的数组和色度裁剪值c[j]的数组导出如下,其中j=0..5:[1014]f[j]=alfcoeffc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1254)[1015]c[j]=alfclipc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1255)[1016]–变量sum导出如下:[1017][1018][1019]sum=curr (sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1257)[1020]–经修改滤波重构的色度图片样点alfpicture[xctbc x][yctbc y]导出如下:[1021]–如果pcm_loop_filter_disabled_flag和pcm_flag[(xctbc x)*subwidthc][(yctbc y)*subheightc]两者都等于1,则以下适用:[1022]alfpicture[xctbc x][yctbc y]=recpicturel[hx,vy]ꢀꢀ(8-1258)[1023]–否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[1024]alfpicture[xctbc x][yctbc y]=clip3(0,(1《《bitdepthc)-1,sum)ꢀꢀ(8-1259)[1025][[表8-25–根据水平亮度样点位置y和applyvirtualboundary对r1和r2的规范]][1026][1027][1028][1029][1030][1031][1032][1033]5.7实施例#7[1034]对于ctu,它可以不与任何边界(例如,图片/条带/片/砖/子图片边界)重合。然而,可能需要访问当前单元之外的样点(例如,图片/条带/片/砖/子图片)。如果禁用了跨条带边界的滤波(例如loop_filter_across_slices_enabled_flag为假),则我们需要填充当前单位之外的样点。[1035]例如,对于图28中的样点2801(例如,亮度样点),可以如图29那样填充alf滤波过程中使用的样点。[1036]5.8实施例#8[1037]在该实施例中,应用了以下主要思想:[1038]在启用alf虚拟边界时:[1039]-对于不在图片的最后一个ctu行中的ctu(例如,ctu的底边界不是图片的底边界或超过图片的底边界),启用alf虚拟边界,即,一个ctu可以分为两个或更多个部分,并且一个部分中的样点不允许使用另一个部分中的样点。[1040]-对于位于图片中最后一个ctu行中的ctu(例如,ctu的底边界是图片的底边界或超过图片的底边界),启用alf虚拟边界,即,一个ctu可以分为两个或更多个部分,并且一个部分中的样点不允许使用另一个部分中的样点。[1041]在分类过程中填充边界(包括alf虚拟边界,条带/片/砖/子图片边界,“360虚拟边界”)时:[1042]对于一种(或多种)边界处的样点,当不允许使用跨边界的邻域样点时,执行1侧填充以填充此类邻域样点。[1043]在alf滤波过程中填充边界(包括alf虚拟边界,条带/片/砖/子图片边界,“360虚拟边界”)时:[1044]-对于与ctu边界重合的、作为图片边界或“360虚拟边界”的一种(或多种)边界处的样点,当不允许使用跨边界的邻域样点时,执行2侧填充以填充此类邻域样点。[1045]-对于不与ctu边界重合的、作为图片边界或“360虚拟边界”的一种(或多种)边界处的样点,当不允许使用跨边界的邻域样点时,执行1侧填充以填充此类邻域样点。[1046]8.8.5.2亮度样点的编解码树块滤波过程[1047]该过程的输入是:[1048]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel,[1049]–滤波重构的亮度图片样点数组alfpicturel,[1050]–指定当前亮度编码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb)。[1051]该过程的输出是修改的滤波重构的亮度图片样点数组alfpicturel。[1052]使用以下调用章节8.8.5.3的滤波器索引的导出过程:位置(xctb,yctb)和重构的亮度图片样点数组recpicturel作为输入,而filtidx[x][y]和transposeidx[x][y],其中y=0..ctbsizey–1,作为输出。[1053]为了导出滤波重构的亮度样点alfpicturel[x][y],当前亮度编码树块内的每个重构的亮度样点recpicturel[x][y]被滤波如下,其中x,y=0..ctbsizey-1:[1054]–亮度滤波器系数f[j]的数组和与由filtidx[x][y]指定的滤波器对应的亮度裁剪值c[j]的数组导出如下,其中j=0..11:[1055]–如果alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]小于16,则以下适用:[1056]i=alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]ꢀꢀ(8-1187)[1057]f[j]=alffixfiltcoeff[alfclasstofiltmap[i][filtidx[x][y]]][j]ꢀꢀ(8-1188)[1058]c[j]=2bitdepthyꢀꢀꢀꢀꢀꢀꢀ(8-1189)[1059]–否则(alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]大于或等于16,则以下适用:[1060]i=slice_alf_aps_id_luma[alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]-16]ꢀꢀ(8-1190)[1061]f[j]=alfcoeffl[i][filtidx[x][y]][j]ꢀꢀꢀꢀꢀꢀꢀ(8-1191)[1062]c[j]=alfclipl[i][filtidx[x][y]][j]ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1192)[1063]–取决于transposeidx[x][y]导出亮度滤波器系数和裁剪值索引idx,如下:[1064]–如果transposeindex[x][y]等于1,则以下适用:[1065]idx[]={9,4,10,8,1,5,11,7,3,0,2,6}ꢀꢀꢀꢀꢀꢀ(8-1193)[1066]–否则,如果transposeindex[x][y]等于2,则以下适用:[1067]idx[]={0,3,2,1,8,7,6,5,4,9,10,11}ꢀꢀꢀꢀꢀꢀ(8-1194)[1068]–否则,如果transposeindex[x][y]等于3,则以下适用:[1069]idx[]={9,8,10,4,3,7,11,5,1,0,2,6}ꢀꢀꢀꢀꢀꢀ(8-1195)[1070]–否则,如下适用:[1071]idx[]={0,1,2,3,4,5,6,7,8,9,10,11}ꢀꢀꢀꢀꢀꢀ(8-1196)[1072]–亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-3...3,导出如下:[1073]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1074]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1197)[1075]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于4,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1076]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1198)[1077]–否则,以下适用:[1078]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1199)[1079]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1080]hx i=clip3(subpicleftboundarypos,subpicrightboundarypos,hx i)ꢀꢀ(8-1184)]][1081]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1082]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples[1083]-1,yctb y j)(8-1200)[1084]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y是大于0且小于4,其中任何n=0..pps_num_hor_virtual_boundaries-1,以下适用:[1085]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1201)[1086]–否则,如下适用:[1087]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1202)[1088]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1089]vy j=clip3(subpictopboundarypos,subpicbotboundarypos,vy j)ꢀꢀ(8-1184)[1090]–变量applyvirtualboundary导出如下:[1091]–如果以下条件中的一个或多个为真,则applyvirtualboundary被设置为等于0:[1092]–当前编解码树块的底边界是图片的底边界。[1093]–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[1094]–当前编码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[1095]–当前编解码树块的底边界是子图片的底边界,并且在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0。[1096]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。[1097]–否则,applyvirtualboundary被设置为等于1。]][1098][1099]–表8-24中根据水平亮度样点位置y以及24中根据水平亮度样点位置y以及[[applyvirtualboundary]],指定了重构的样点偏移r1、r2和r3。[1100][1101]–变量curr导出如下:[1102]curr=recpicturel[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1203)[1103]–变量sum导出如下:[1104][1105]sum=curr ((sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1205)[1106]–修改的滤波重构的亮度图像样点alfpicturel[xctb x][yctb y]导出如下:[1107]–如果pcm_loop_filter_disabled_flag和pcm_flag[xctb x][yctb y]两者都等于1,则以下适用:[1108]alfpicturel[xctb x][yctb y]=recpicturel[hx,vy]ꢀꢀ(8-1206)[1109]–否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[1110]alfpicturel[xctb x][yctb y]=clip3(0,(1《《bitdepthy)-1,sum)ꢀꢀ(8-1207)[1111]表8-24–根据水平亮度样点位置y、[[和applyvirtualboundary]]对r1、r2和r3的规范[1112][1113][1114][1115][1116][1117]8.8.5.3亮度样点的滤波器索引和alf转置的导出过程[1118]该过程的输入是:[1119]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb),[1120]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel。[1121]该过程的输出是[1122]–分类滤波器索引数组filtidx[x][y],其中x,y=0..ctbsizey-1,[1123]–转置索引数组transposeidx[x][y],其中x,y=0..ctbsizey-1。[1124]亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2...5,导出如下:[1125]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,oss_virtual_boundaries_disabled_flag等于1,并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1126]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1208)[1127]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于6,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1128]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1209)[1129]–否则,如下适用:[1130]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1210)[1131]–[[当在位置(hx,vy)上含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1132]hx i=clip3(subpicleftboundarypos,subpicrightboundarypos,hx i)ꢀꢀ(8-1184)]][1133]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1134]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1211)[1135]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y是大于0且小于6,其中任何n=0..pps_num_hor_virtual_boundaries-1,以下适用:[1136]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1212)[1137]–否则,以下适用:[1138]–如果yctb ctbsizey大于或等于pic_height_in_luma_samples,则以下适用:[1139]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1213)[1140]–[[否则,如果y小于ctbsizey-4,则以下适用:[1141]vy j=clip3(0,yctb ctbsizey-5,yctb y j)ꢀꢀ(8-1214)[1142]–否则,如下适用:[1143]vy j=clip3(yctb ctbsizey-4,pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1215)[1144]–当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1145]vy j=clip3(subpictopboundarypos,subpicbotboundarypos,vy j)ꢀꢀ(8-1184)]][1146][1147][1148]分类滤波器索引数组filtidx和转置索引数组transposeidx通过以下有序步骤导出:[1149]1.变量filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y],其中x,y=-2..ctbsizey 1,该变量导出如下:[1150]–如果x和y两者都是偶数或者x和y两者都不是偶数,则以下适用:[1151][1152][1153][1154][1155]–否则,filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y]被设置为等于0。[1156]2.[[变量miny、maxy和ac导出如下:[1157]–如果(y《《2)等于(ctbsizey-8)并且(yctb ctbsizey)小于pic_height_in_luma_samples-1,则miny被设置为-2,maxy被设置为等于3,ac被设置为等于96。[1158]–否则,(y《《2)等于(ctbsizey-4)并且(yctb ctbsizey)小于pic_height_in_luma_samples–1,则miny设置为等于0,maxy被设置为等于5,将ac被设置为等于96。]][1159]3.变量sumh[x][y]、sumv[x][y]、sumd0[x][y]、sumd1[x][y]和sumofhv[x][y],其中x,y=0..(ctbsizey-1)》》2,该变量导出如下:[1160][1161][1162][1163][1164]sumh[x][y]=∑i∑jfilth[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1220)[1165]sumv[x][y]=∑i∑jfiltv[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1221)[1166]sumd0[x][y]=∑i∑jfiltd0[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1222)[1167]sumd1[x][y]=∑i∑jfiltd1[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1223)[1168]sumofhv[x][y]=sumh[x][y] sumv[x][y]ꢀꢀ(8-1224)[1169]4.变量dir1[x][y]、dir2[x][y]和dirs[x][y],其中x,y=0..ctbsizey-1,该变量导出如下:[1170]–变量hv1、hv0和dirhv导出如下:[1171]–如果sumv[x》》2][y》》2]大于sumh[x》》2][y》》2],则以下适用:[1172]hv1=sumv[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1225)[1173]hv0=sumh[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ8-1226)[1174]dirhv=1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1227)[1175]–否则,如下适用:[1176]hv1=sumh[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1228)[1177]hv0=sumv[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1229)[1178]dirhv=3ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1230)[1179]–变量d1、d0和dird导出如下:[1180]–如果sumd0[x》》2][y》》2]大于sumd1[x》》2][y》》2],则以下适用:[1181]d1=sumd0[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1231)[1182]d0=sumd1[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1232)[1183]dird=0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1233)[1184]–否则,如下适用:[1185]d1=sumd1[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1234)[1186]d0=sumd0[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1235)[1187]dird=2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1236)[1188]–变量hvd1、hvd0导出如下:[1189]hvd1=(d1*hv0》hv1*d0)?d1:hv1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1237)[1190]hvd0=(d1*hv0》hv1*d0)?d0。hv0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1238)[1191]–变量dirs[x][y]、dir1[x][y]和dir2[x][y]导出如下:[1192]dir1[x][y]=(d1*hv0》hv1*d0)?dird:dirhvꢀꢀꢀꢀꢀꢀꢀ(8-1239)[1193]dir2[x][y]=(d1*hv0》hv1*d0)?dirhv:dirdꢀꢀꢀꢀꢀꢀꢀ(8-1240)[1194]dirs[x][y]=(hvd1》2*hvd0)?1:((hvd1*2》9*hvd0)?2:0)ꢀꢀ(8-1241)[1195]5.变量avgvar[x][y],其中x,y=0..ctbsizey-1,导出如下:[1196]vartab[]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4}ꢀꢀꢀꢀꢀꢀ(8-1242)[1197]avgvar[x][y]=vartab[clip3(0,15,(sumofhv[x》》2][y》》2]*ac)》》(3 bitdepthy))]ꢀꢀ(8-1243)[1198]6.分类滤波器索引数组filtidx[x][y]和转置索引数组transposeidx[x][y],其中x=y=0..ctbsizey-1,导出如下:[1199]transposetable[]={0,1,0,2,2,3,1,3}[1200]transposeidx[x][y]=transposetable[dir1[x][y]*2 (dir2[x][y]》》1)][1201]filtidx[x][y]=avgvar[x][y][1202]当dirs[x][y]不等于0时,filtidx[x][y]被修改为如下:[1203]filtidx[x][y] =(((dir1[x][y]&0x1)《《1) dirs[x][y])*5ꢀꢀ(8-1244)[1204]8.8.5.4色度样点的编解码树块滤波过程[1205]该过程的输入是:[1206]–在自适应环路滤波过程之前,重构的色度图片样点数组recpicture,[1207]–滤波重构的色度图片样点数组alfpicture,[1208]–指定当前色度编码树块的左顶样点相对于当前图片的左顶样点的色度位置(xctbc,yctbc)。[1209]该过程的输出是经修改滤波重构的色度图片样点数组alfpicture。[1210]当前色度编码树块的宽度ctbwidthc和高度ctbheightc导出如下:[1211]ctbwidthc=ctbsizey/subwidthcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1245)[1212]ctbheightc=ctbsizey/subheightcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1246)[1213]为了导出滤波重构的色度样点alfpicture[x][y],当前色度编解码树块recpicture[x][y]内的每个重构的色度样点被滤波如下,其中x=0..ctbwidthc-1,y=0..ctbheightc-1:[1214]–色度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2..2,导出如下:[1215]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且xctbc x-ppsvirtualboundariesposx[n]/subwidthc大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1216][1217]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,和ppsvirtualboundariesposx[n]/subwidthc-xctbc-x大于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1218]hx i=clip3(0,ppsvirtualboundariesposx[n]/subwidthc-1,xctbc x i)ꢀꢀ(8-1248)[1219]–否则,如下适用:[1220]–hx i=clip3(0,pic_width_in_luma_samples/subwidthc-1,xctbc x i)ꢀꢀꢀ(8-1249)[1221]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1222]hx i=clip3(subpicleftboundarypos/subwidthc,subpicrightboundarypos/subwidthc,hx i)ꢀꢀ(8-1184)]][1223]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,_across_virtual_boundaries_disabled_flag等于1,并且yctbc y-ppsvirtualboundariesposy[n]/subheightc大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1224][1225]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,和ppsvirtualboundariesposy[n]/subheightc-yctbc-y大于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1226]vy j=clip3(0,ppsvirtualboundariesposy[n]/subheightc-1,yctbc y j)ꢀꢀ(8-1251)[1227]–否则,如下适用:[1228]vy j=clip3(0,pic_height_in_luma_samples/subheightc-1,yctbc y j)ꢀꢀꢀꢀꢀ(8-1252)[1229]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1230]vy j=clip3(subpictopboundarypos/subwidthc,subpicbotboundarypos/subwidthc,vy j)ꢀꢀꢀ(8-1184)[1231]–变量applyvirtualboundary导出如下:[1232]–如果以下条件中的一个或多个为真,则applyvirtualboundary被设置为等于0:[1233]–当前编解码树块的底边界是图片的底边界。[1234]–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[1235]–当前编码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[1236]–当前编码树块的底边界是子图片的底边界,并且在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0。[1237]–当前编码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。[1238]–否则,applyvirtualboundary被设置为等于1。]][1239][1240]–表8-27中根据水平亮度样点位置y27中根据水平亮度样点位置y[[applyvirtualboundary]],指定了重构的样点偏移r1和r2。[1241][1242]–变量curr导出如下:[1243]curr=recpicture[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1253)[1244]–色度滤波器系数f[j]的数组和色度裁剪值c[j]的数组导出如下,其中j=0..5:[1245]f[j]=alfcoeffc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1254)[1246]c[j]=alfclipc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1255)[1247]–变量sum导出如下:[1248][1249]sum=curr (sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1257)[1250]–经修改滤波重构的色度图片样点alfpicture[xctbc x][yctbc y]导出如下:[1251]–如果pcm_loop_filter_disabled_flag和pcm_flag[(xctbc x)*subwidthc][(yctbc y)*subheightc]两者都等于1,则以下适用:[1252]alfpicture[xctbc x][yctbc y]=recpicturel[hx,vy]ꢀꢀ(8-1258)[1253]–否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[1254]alfpicture[xctbc x][yctbc y]=clip3(0,(1《《bitdepthc)-1,sum)ꢀꢀ(8-1259)[1255]表8-27–根据水平亮度样点位置y、[[和applyvirtualboundary]]对r1和r2的规范[1256][1257][1258][1259][1260][1261][1262][1263]在以上实施例中使用的特定值-128可以用其他值代替,诸如-k,其中例如k大于或不小于从ctu底边界移位的线数(例如k=-5)。[1264]替代地,基于ppsvirtualboundariesposy[n]的范围在1到ceil(pic_height_in_luma_samples÷8)-1(含端值)内,可以进一步删除“ppsvirtualboundariesposy[n]不等于pic_height_in_luma_samples–1或0”的条件检验。[1265]替代地,如果每个样点位于视频单元边界,则可以使用一个标志来标记是否需要以不同的方式来处理每个样点。[1266]5.9实施例#9[1267]在该实施例中,应用了以下主要思想:[1268]启用alf虚拟边界时:[1269]-对于不在图片的最后一个ctu行中的ctu(例如,ctu的底边界不是图片的底边界或超过图片的底边界),启用alf虚拟边界,即,一个ctu可以分为两个或更多个部分,并且一个部分中的样点不允许使用另一个部分中的样点。[1270]-对于位于图片中最后一个ctu行中的ctu(例如,ctu的底边界是图片的底边界或超过图片的底边界),启用alf虚拟边界,即,一个ctu可以分为两个或更多个部分,并且一个部分中的样点不允许使用另一个部分中的样点。[1271]在分类过程中填充边界(包括alf虚拟边界,条带/片/砖/子图片边界,“360虚拟边界”)时:[1272]-对于一种(或多种)边界处的样点,当不允许使用跨边界的邻域样点时,将执行1侧填充以填充此类邻域样点。[1273]在alf滤波过程中填充边界(包括alf虚拟边界,条带/片/砖/子图片边界,“360虚拟边界”)时:[1274]-对于与ctu边界重合的、作为条带/片/砖/子图片边界或“360虚拟边界”的一种(或多种)边界处的样点,当不允许使用跨边界的邻域样点时,执行2侧填充以填充这样的邻域样点。[1275]-对于不与ctu边界重合的、作为图片边界或“360虚拟边界”的一种(或多种)边界处的样点,当不允许使用跨边界的邻域样点时,执行1侧填充以填充此类邻域样点。[1276]8.8.5.2亮度样点的编解码树块滤波过程[1277]该过程的输入是:[1278]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel,[1279]–滤波重构的亮度图片样点数组alfpicturel,[1280]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb)。[1281]该过程的输出是修改的滤波重构的亮度图片样点数组alfpicturel。[1282]使用以下调用章节8.8.5.3的滤波器索引的导出过程:位置(xctb,yctb)和重构的亮度图片样点数组recpicturel作为输入,而filtidx[x][y]和transposeidx[x][y],其中y=0..ctbsizey–1,作为输出。[1283]为了导出滤波重构的亮度样点alfpicturel[x][y],当前亮度编解码树块内的每个重构的亮度样点recpicturel[x][y]被滤波如下,其中x,y=0..ctbsizey-1:[1284]–亮度滤波器系数f[j]的数组和与由filtidx[x][y]指定的滤波器对应的亮度裁剪值c[j]的数组导出如下,其中j=0..11:[1285]–如果alfctbfiltsetidxy[xctb》》log2ctbsize][yctb》》log2ctbsize]小于16,则1184)]][1311]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1312]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1200)[1313]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y是大于0且小于4,其中任何n=0..pps_num_hor_virtual_boundaries-1,以下适用:[1314]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1201)[1315]–否则,如下适用:[1316]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1202)[1317]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1318]vy j=clip3(subpictopboundarypos,subpicbotboundarypos,vy j)ꢀꢀ(8-1184)[1319]–变量applyvirtualboundary导出如下:[1320]–如果以下条件中的一个或多个为真,则applyvirtualboundary被设置为等于0:[1321]–当前编解码树块的底边界是图片的底边界。[1322]–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[1323]–当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[1324]–当前编解码树块的底边界是子图片的底边界,并且在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0。[1325]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。[1326]–否则,applyvirtualboundary被设置为等于1。]][1327][1327][1328]–表8-24中根据[[水平]]亮度样点位置y、亮度样点位置y、[[applyvirtualboundary]],指定了重构的样点偏移r1、r2和r3。[1329][1330]–变量curr导出如下:[1331]curr=recpicturel[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1203)[1332]变量sum导出如下:[1333][1334]sum=curr ((sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1205)[1335]–修改的滤波重构的亮度图像样点alfpicturel[xctb x][yctb y]导出如下:[1336]–如果pcm_loop_filter_disabled_flag和pcm_flag[xctb x][yctb y]两者都等于1,则以下适用:[1337]alfpicturel[xctb x][yctb y]=recpicturel[hx,vy]ꢀꢀ(8-1206)[1338]–否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[1339]alfpicturel[xctb x][yctb y]=clip3(0,(1《《bitdepthy)-1,sum)ꢀꢀ(8-1207)[1340]表8-24–对r1、r2和r3的规范,其根据[[水平]]亮度样点位置y、[和applyvirtualboundary[1341][1342]]][1343][1344][1345][1346][1347]8.8.5.3亮度样点的滤波器索引和alf转置的导出过程[1348]该过程的输入是:[1349]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb),[1350]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel。[1351]该过程的输出是[1352]–分类滤波器索引数组filtidx[x][y],其中x,y=0..ctbsizey-1,[1353]–转置索引数组transposeidx[x][y],其中x,y=0..ctbsizey-1。[1354]亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2...5,导出如下:[1355]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1356]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1208)[1357]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于6,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1358]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1209)[1359]–否则,如下适用:[1360]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1210)[1361]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1362]hx i=clip3(subpicleftboundarypos,subpicrightboundarypos,hx i)ꢀꢀ(8-1184)]][1363]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1364]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)(8-1211)[1365]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]-yctb-y是大于0且小于6,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1366]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1212)[1367]–否则,以下适用:[1368]–[[如果yctb ctbsizey大于或等于pic_height_in_luma_samples,则以下适用:]][1369]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1213)[1370]–[[否则,如果y小于ctbsizey-4,则以下适用:[1371]vy j=clip3(0,yctb ctbsizey-5,yctb y j)ꢀꢀ(8-1214)[1372]–否则,如下适用:[1373]vy j=clip3(yctb ctbsizey-4,pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1215)[1374]–当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1375]vy j=clip3(subpictopboundarypos,subpicbotboundarypos,vy j)ꢀꢀ(8-1184)]][1376][1377][1378]分类滤波器索引数组filtidx和转置索引数组transposeidx通过以下有序步骤导出:[1379]1.变量filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y],其中x,y=-2..ctbsizey 1,该变量导出如下:[1380]–如果x和y两者都是偶数或者x和y两者都不是偶数,则以下适用:[1381]filth[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx-1,vy]‑ꢀꢀ(8-1216)[1382]recpicture[hx 1,vy])[1383]filtv[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx,vy-1]‑ꢀꢀ(8-1217)[1384]recpicture[hx,vy 1])[1385]filtd0[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx-1,vy-1]‑ꢀꢀ(8-1218)[1386]recpicture[hx 1,vy 1])[1387]filtd1[x][y]=abs((recpicture[hx,vy]《《1)-recpicture[hx 1,vy-1]‑ꢀꢀ(8-1219)[1388]recpicture[hx-1,vy 1])[1389]–否则,filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y]被设置为等于0。[1390]2.[[变量miny、maxy和ac导出如下:[1391]–如果(y《《2)等于(ctbsizey-8)并且(yctb ctbsizey)小于pic_height_in_luma_samples-1,则miny被设置为-2,maxy被设置为等于3,ac被设置为等于96。[1392]–否则,(y《《2)等于(ctbsizey-4)并且(yctb ctbsizey)小于pic_height_in_luma_samples–1,则miny设置为等于0,maxy被设置为等于5,将ac被设置为等于96。]][1393][1394]–否则,miny被设置为等于-2,maxy被设置为等于5[[并且ac被设置为等于64]]。[1395][1396][1397][1398][1399]–[[变量sumh[x][y]、sumv[x][y]、sumd0[x][y]、sumd1[x][y]和sumofhv[x][y],其中x,y=0..(ctbsizey-1)》》2,导出如下:]][1400]sumh[x][y]=∑i∑jfilth[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1220)[1401]sumv[x][y]=∑i∑jfiltv[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1221)[1402]sumd0[x][y]=∑i∑jfiltd0[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1222)[1403]sumd1[x][y]=∑i∑jfiltd1[h(x《《2) i-xctb][v(y《《2) j-yctb],其中[[-2..5]],j=miny..maxyꢀꢀ(8-1223)[1404]sumofhv[x][y]=sumh[x][y] sumv[x][y]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1224)[1405]4.变量dir1[x][y]、dir2[x][y]和dirs[x][y],其中x,y=0..ctbsizey-1,导出如下:[1406]–变量hv1、hv0和dirhv导出如下:[1407]–如果sumv[x》》2][y》》2]大于sumh[x》》2][y》》2],则以下适用:[1408]hv1=sumv[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1225)[1409]hv0=sumh[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1226)[1410]dirhv=1ꢀꢀꢀꢀ(8-1227)[1411]–否则,如下适用:[1412]hv1=sumh[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1228)[1413]hv0=sumv[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1229)[1414]dirhv=3ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1230)[1415]–变量d1、d0和dird导出如下:[1416]–如果sumd0[x》》2][y》》2]大于sumd1[x》》2][y》》2],则以下适用:[1417]d1=sumd0[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1231)[1418]d0=sumd1[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1232)[1419]dird=0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1233)[1420]–否则,如下适用:[1421]d1=sumd1[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1234)[1422]d0=sumd0[x》》2][y》》2]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1235)[1423]dird=2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1236)[1424]–变量hvd1、hvd0导出如下:[1425]hvd1=(d1*hv0》hv1*d0)?d1:hv1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1237)[1426]hvd0=(d1*hv0》hv1*d0)?d0:hv0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1238)[1427]–变量dirs[x][y]、dir1[x][y]和dir2[x][y]导出如下:[1428]dir1[x][y]=(d1*hv0》hv1*d0)?dird:dirhvꢀꢀꢀꢀꢀꢀꢀ(8-1239)[1429]dir2[x][y]=(d1*hv0》hv1*d0)?dirhv:dirdꢀꢀꢀꢀꢀꢀꢀꢀ(8-1240)[1430]dirs[x][y]=(hvd1》2*hvd0)?1:((hvd1*2》9*hvd0)?2:0)ꢀꢀ(8-1241)[1431]5.变量avgvar[x][y],其中x,y=0..ctbsizey-1,导出如下:[1432]vartab[]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4}ꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1242)[1433]avgvar[x][y]=vartab[clip3(0,15,(sumofhv[x》》2][y》》2]*ac)》》(3 bitdepthy))]ꢀꢀ(8-1243)[1434]6.分类滤波器索引数组filtidx[x][y]和转置索引数组transposeidx[x][y],其中x=y=0..ctbsizey-1,导出如下:[1435]transposetable[]={0,1,0,2,2,3,1,3}[1436]transposeidx[x][y]=transposetable[dir1[x][y]*2 (dir2[x][y]》》1)][1437]filtidx[x][y]=avgvar[x][y][1438]当dirs[x][y]不等于0时,filtidx[x][y]被修改为如下:[1439]filtidx[x][y] =(((dir1[x][y]&0x1)《《1) dirs[x][y])*5ꢀꢀ(8-1244)[1440]8.8.5.4色度样点的编解码树块滤波过程[1441]该过程的输入是:[1442]–在自适应环路滤波过程之前,重构的色度图片样点数组recpicture,[1443]–滤波重构的色度图片样点数组alfpicture,[1444]–指定当前色度编解码树块的左顶样点相对于当前图片的左顶样点的色度位置(xctbc,yctbc)。[1445]该过程的输出是经修改滤波重构的色度图片样点数组alfpicture。[1446]当前色度编解码树块的宽度ctbwidthc和高度ctbheightc导出如下:[1447]ctbwidthc=ctbsizey/subwidthcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1245)[1448]ctbheightc=ctbsizey/subheightcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1246)[1449]为了导出滤波重构的色度样点alfpicture[x][y],当前色度编解码树块recpicture[x][y]内的每个重构的色度样点被滤波如下,其中x=0..ctbwidthc-1,y=0..ctbheightc-1:[1450]–色度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2..2,导出如下:[1451]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且xctbc x-ppsvirtualboundariesposx[n]/subwidthc大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1452][1453]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,和ppsvirtualboundariesposx[n]/subwidthc-xctbc-x大于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1454]hx i=clip3(0,ppsvirtualboundariesposx[n]/subwidthc-1,xctbc x i)ꢀꢀ(8-1248)[1455]–否则,如下适用:[1456]hx i=clip3(0,pic_width_in_luma_samples/subwidthc-1,xctbc x i)ꢀꢀꢀꢀꢀ(8-1249)[1457]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1458]hx i=clip3(subpicleftboundarypos/subwidthc,subpicrightboundarypos/subwidthc,hx i)ꢀꢀ(8-1184)]][1459]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且yctbc y-ppsvirtualboundariesposy[n]/subheightc大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1460][1461][1462]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,和ppsvirtualboundariesposy[n]/subheightc-yctbc-y大于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1463]vy j=clip3(0,ppsvirtualboundariesposy[n]/subheightc-1,yctbc y j)ꢀꢀ(8-1251)[1464]–否则,如下适用:[1465]vy j=clip3(0,pic_height_in_luma_samples/subheightc-1,yctbc y j)ꢀꢀ(8-1252)[1466]–[[当在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0时,以下适用:[1467]vy j=clip3(subpictopboundarypos/subwidthc,subpicbotboundarypos/subwidthc,vy j)ꢀꢀꢀ(8-1184)[1468]–变量applyvirtualboundary导出如下:[1469]–如果以下条件中的一个或多个为真,则applyvirtualboundary被设置为等于0:[1470]–当前编解码树块的底边界是图片的底边界。[1471]–当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[1472]–当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[1473]–当前编解码树块的底边界是子图片的底边界,并且在位置(hx,vy)处含有亮度样点的子图片的loop_filter_across_sub_pic_enabled_flag[subpicidx]等于0。[1474]–当前编解码树块的底边界是图片的底虚拟边界中的一个,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。[1475]–否则,applyvirtualboundary被设置为等于1。]][1476][1477][1478]–表8-27中根据[[水平亮度]样点位置y、样点位置y、[[和applyvirtualboundary]指定了重构的样点偏移r1和r2。[1479][1480]–变量curr导出如下:[1481]curr=recpicture[hx,vy]ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1253)[1482]–色度滤波器系数f[j]的数组和色度裁剪值c[j]的数组导出如下,其中j=0..5:[1483]f[j]=alfcoeffc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀ(8-1254)[1484]c[j]=alfclipc[slice_alf_aps_id_chroma][j]ꢀꢀꢀꢀꢀꢀ(8-1255)[1485]–变量sum导出如下:[1486][1487]sum=curr (sum 64)》》7)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8-1257)[1488]–经修改滤波重构的色度图片样点alfpicture[xctbc x][yctbc y]导出如下:[1489]–如果pcm_loop_filter_disabled_flag和pcm_flag[(xctbc x)*subwidthc][(yctbc y)*subheightc]两者都等于1,则以下适用:[1490]alfpicture[xctbc x][yctbc y]=recpicturel[hx,vy]ꢀꢀ(8-1258)[1491]–否则(pcm_loop_filter_disabled_flag等于0或者pcm_flag[x][y]等于0),则以下适用:[1492]alfpicture[xctbc x][yctbc y]=clip3(0,(1《《bitdepthc)-1,sum)ꢀꢀ(8-1259)[1493]表8-27–对r1和r2的规范,其根据[[水平亮度]]样点位置y、[[和applyvirtualboundary[1494][1495]]][1496][1497][1498][1499][1500][1501][1502][1503]在以上实施例中使用的特定值-128可以用其他值代替,诸如-k,其中例如k大于或不小于从ctu底边界移位的线数(例如k=-5)。[1504]替代地,如果每个样点位于视频单元边界,则可以使用一个标志来标记是否需要以不同的方式来处理每个样点。[1505]5.10实施例#10[1506]8.8.5.2亮度样点的编解码树块滤波过程[1507]该过程的输入是:[1508]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel,[1509]–滤波重构的亮度图片样点数组alfpicturel,[1510]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb)。[1511]该过程的输出是修改的滤波重构的亮度图片样点数组alfpicturel。[1512]使用以下调用章节8.8.5.3的滤波器索引的导出过程:位置(xctb,yctb)和重构的亮度图片样点数组recpicturel作为输入,而filtidx[x][y]和transposeidx[x][y],其中y=0..ctbsizey-1,作为输出。[1513]为了导出滤波重构的亮度样点alfpicturel[x][y],当前亮度编解码树块内的每个重构的亮度样点recpicturel[x][y]被滤波如下,其中x,y=0..ctbsizey-1:[1514]…[1515]–亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-3...3,导出如下:[1516]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1517]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1229)[1518]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于4,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1519]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1230)[1520]–否则,如下适用:[1521]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1231)[1522]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1523]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)ꢀꢀꢀꢀꢀꢀ(8-1232)[1524]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yctb-y是大于0且小于4,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1525]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1233)[1526]–否则,如下适用:[1527]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1234)[1528]–变量clipleftpos、cliprightpos、cliptoppos、[[和]]clipbottompos、变量clipleftpos、cliprightpos、cliptoppos、[[和]]clipbottompos、是通过调用章节8.8.5.5中指定的alf边界位置导出过程来导出的,其中输出为(xctb,yctb)和(x,y)。[1529][1530]–表8-20中根据垂直亮度采样位置y、clipleftpos和cliprightpos,指定了垂直样点位置偏移y1、y2和y3。[1531]–表8-21中根据水平亮度样点位置x、clipleftpos和cliprightpos,指定了水平样点位置偏移x1、x2和x3。[1532]…[1533]8.8.5.3亮度样点的滤波器索引和alf转置的导出过程[1534]该过程的输入是:[1535]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb),[1536]–在自适应环路滤波过程之前,重构的亮度图片样点数组recpicturel。[1537]该过程的输出是[1538]–分类滤波器索引数组filtidx[x][y],其中x,y=0..ctbsizey-1,[1539]–转置索引数组transposeidx[x][y],其中x,y=0..ctbsizey-1。[1540]亮度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2...5,导出如下:[1541]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1542]hx i=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1239)[1543]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于6,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1544]hx i=clip3(0,ppsvirtualboundariesposx[n]-1,xctb x i)ꢀꢀ(8-1240)[1545]–否则,如下适用:[1546]hx i=clip3(0,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1241)[1547]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1548]vy j=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yctb y j)ꢀꢀꢀꢀꢀꢀ(8-1242)[1549]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yctb-y是大于0且小于6,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1550]vy j=clip3(0,ppsvirtualboundariesposy[n]-1,yctb y j)ꢀꢀ(8-1243)[1551]–否则,以下适用:[1552]vy j=clip3(0,pic_height_in_luma_samples-1,yctb y j)(8-1244)[1553]–变量clipleftpos、cliprightpos、cliptoppos、[[和]]clipbottompos、变量clipleftpos、cliprightpos、cliptoppos、[[和]]clipbottompos、是通过调用章节8.8.5.5中指定的alf边界位置导出过程来导出的,其中输出为(xctb,yctb)和(x,y)。[1554]–如果cliptoppos不等于-128,则以下适用:[1555]vy j=clip3(cliptoppos,pic_height_in_luma_samples-1,yctb y j)ꢀꢀ(8-1245)[1556]–如果clipbottompos等于-128,则以下适用:[1557]vy j=clip3(0,clipbottompos-1,yctb y j)ꢀꢀꢀ(8-1246)[1558]–如果clipleftpos不等于-128,则以下适用:[1559]hx i=clip3(clipleftpos,pic_width_in_luma_samples-1,xctb x i)ꢀꢀ(8-1247)[1560]–如果cliprightpos等于-128,则以下适用:[1561]hx i=clip3(0,cliprightpos-1,xctb x i)ꢀꢀꢀꢀꢀꢀ(8-1248)[1562][1563]分类滤波器索引数组filtidx和转置索引数组transposeidx通过以下有序步骤导出:[1564]1.变量filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y],其中x,y=-2..ctbsizey 1,该变量导出如下:[1565]–如果x和y两者都是偶数,或者x和y两者都不是偶数,则以下适用:[1566][1567][1568][1569][1570]–否则,filth[x][y]、filtv[x][y]、filtd0[x][y]和filtd1[x][y]被设置为等于0。[1571]…[1572]8.8.5.3色度样点的编解码树块滤波过程[1573]该过程的输入是:[1574]–在自适应环路滤波过程之前,重构的色度图片样点数组recpicture,[1575]–滤波重构的色度图片样点数组alfpicture,[1576]–指定当前色度编解码树块的左顶样点相对于当前图片的左顶样点的色度位置(xctbc,yctbc)。[1577]–替代色度滤波器索引altidx。[1578]该过程的输出是经修改滤波重构的色度图片样点数组alfpicture。[1579]当前色度编解码树块的宽度ctbwidthc和高度ctbheightc导出如下:[1580]ctbwidthc=ctbsizey/subwidthc(8-1278)[1581]ctbheightc=ctbsizey/subheightc(8-1279)[1582]为了导出滤波重构的色度样点alfpicture[x][y],当前色度编解码树块recpicture[x][y]内的每个重构的色度样点被滤波如下,其中x=0..ctbwidthc-1,y=0..ctbheightc-1:[1583]–色度样点的给定数组recpicture内的每个对应亮度样点(x,y)的位置(hx i,vy j),其中i,j=-2..2,导出如下:[1584]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey不等于0并且xctbc x-ppsvirtualboundariesposx[n]/subwidthc大于或等于0且小于2,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1585][1586]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]/subwidthc-xctbc-x大于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1587]hx i=clip3(0,ppsvirtualboundariesposx[n]/subwidthc-1,xctbc x i)ꢀꢀ(8-1281)[1588]–否则,如下适用:[1589]hx i=clip3(0,pic_width_in_luma_samples/subwidthc-1,xctbc x i)ꢀꢀꢀꢀꢀ(8-1282)[1590]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0并且yctbc y-ppsvirtualboundariesposy[n]/subheightc大于或等于0且小于2,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1591][1592]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]/subheightc-yctbc-y大于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1593]vy j=clip3(0,ppsvirtualboundariesposy[n]/subheightc-1,yctbc y j)ꢀꢀꢀꢀ(8-1284)[1594]–否则,如下适用:[1595]vy j=clip3(0,pic_height_in_luma_samples/subheightc-1,yctbc y j)ꢀꢀ(8-1285)[1596]–变量clipleftpos、cliprightpos、cliptoppos、[[和]]clipbottompos、变量clipleftpos、cliprightpos、cliptoppos、[[和]]clipbottompos、是通过调用章节8.8.5.5中指定的alf边界位置导出过程而导出,其中输入为(xctbc*subwidthc,yctbc*subheightc)和(x*subwidthc,y*subheightc)。[1597][1598]–变量clipleftpos被设置为等于clipleftpos/subwidthc。[1599]–变量cliprightpos被设置为等于cliprightpos/subwidthc。[1600]–变量cliptoppos被设置为等于cliptoppos/subheightc。[1601]–变量clipbottompos被设置为等于clipbottompos/subheightc。[1602]…[1603]8.5.5.5alf边界位置导出过程[1604]该过程的输入是:[1605]–指定当前亮度编解码树块的左顶样点相对于当前图片的左顶样点的亮度位置(xctb,yctb),[1606]–指定当前样点相对于当前亮度编解码树块的左顶样点的的亮度位置(x,y)。[1607]该过程的输出为:[1608]–左垂直边界位置clipleftpos,[1609]–右垂直边界位置cliprightpos,[1610]–上水平边界位置cliptoppos,[1611]–下水平边界位置clipbottompos。[1612][1613]变量clipleftpos、cliprightpos、cliptoppos和clipbottompos被设置为等于-128。[1614][1615]变量cliptoppos修改如下:[1616]–如果当前编解码树块的底边界不是图片的底边界,并且y–(ctbsizey–4)大于或等于0,则变量cliptoppos被设置为等于yctb ctbsizey–4。[1617]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposy[n]%ctbsizey等于0,并且yctb y-ppsvirtualboundariesposy[n]大于或等于0且小于3,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1618]cliptoppos=ppsvirtualboundariesposy[n]ꢀꢀꢀꢀꢀꢀꢀ(8-1292)[1619]–否则,如果y小于3,并且当前编解码树块的顶边界不是图片的顶边界,并且以下条件中的一个或多个为真,则变量cliptoppos被设置为等于yctb:[1620]–如果当前编解码树块的顶边界是砖的顶边界,并且loop_filter_across_bricks_enabled_flag等于0。[1621]–如果当前编解码树块的顶边界是条带的顶边界,并且loop_filter_across_slices_enabled_flag等于0。[1622]–如果当前编解码树块的顶边界是子图片的顶边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。[1623]变量clipbottompos修改如下:[1624]–如果当前编解码树块的底边界不是图片的底边界,并且ctbsizey–4–y大于0且小于4,则变量clipbottompos被设置为等于yctb ctbsizey–4。[1625]–否则,如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,则ppsvirtualboundariesposy[n]%ctbsizey等于0,ppsvirtualboundariesposy[n]不等于pic_height_in_luma_samples–1或0,并且ppsvirtualboundariespoy[n]-yctb-y大于0且小于4,其中任何n=0..pps_num_hor_virtual_boundaries-1,则以下适用:[1626]clipbottompos=ppsvirtualboundariesposy[n]ꢀꢀꢀꢀ(8-1293)[1627]–否则,如果ctbsizey–y小于4,且当前编解码树块的底边界不是图片的底边界,并且以下条件中的一个或多个是真,则变量clipbottompos被设置为等于yctb ctbsizey。[1628]–如果当前编解码树块的底边界是砖的底边界,并且loop_filter_across_bricks_enabled_flag等于0。[1629]–如果当前编解码树块的底边界是条带的底边界,并且loop_filter_across_slices_enabled_flag等于0。[1630]–如果当前编解码树块的底边界是子图片的底边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。[1631]变量clipleftpos修改如下:[1632]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey等于0,并且xctb x-ppsvirtualboundariesposx[n]大于或等于0且小于3,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1633]clipleftpos=ppsvirtualboundariesposx[n]ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1294)[1634]–否则,如果x小于3,当前编解码树块的左边界不是图片的左边界并且以下条件中的一个或多个为真,则变量clipleftpos被设置为等于xctb:[1635]–如果当前编解码树块的左边界是砖的左边界,并且loop_filter_across_bricks_enabled_flag等于0。[1636]–如果当前编解码树块的左边界是条带的左边界,并且loop_filter_across_slices_enabled_flag等于0。[1637]–如果当前编解码树块的底边界是子图片的底边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。[1638]变量cliprightpos修改如下:[1639]–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,且ppsvirtualboundariesposx[n]%ctbsizey等于0,并且ppsvirtualboundariesposx[n]-xctb-x大于0且小于4,其中任何n=0..pps_num_ver_virtual_boundaries-1,则以下适用:[1640]cliprightpos=ppsvirtualboundariesposx[n]ꢀꢀꢀꢀꢀꢀꢀꢀ(8-1295)[1641]–否则,如果ctbsizey–x小于4,并且当前编解码树块的右边界不是图片的右边界,并且以下条件中的一个或多个为真,则变量cliprightpos被设置为等于xctb ctbsizey:[1642]–如果当前编解码树块的右边界是砖的右边界,并且loop_filter_across_bricks_enabled_flag等于0。[1643]–如果当前编解码树块的右边界是条带的右边界,并且loop_filter_across_slices_enabled_flag等于0。[1644]–如果当前编解码树块的右边界是子图片的右边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。[1645][1646][1647][1648]图22是视频处理设备2200的框图。设备2200可以用于实现文中所述的方法中的一个或多个。设备2200可以实施为智能电话、平板计算机、物联网(iot)接收器等。设备2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。(一个或多个)处理器2202可以配置为实现本文档中所述的一个或多个方法。(一个或多个)存储器2204可以用于存储数据和代码,该代码用于实现本文所描述的方法和技术。视频处理硬件2206可以用于在硬件电路中实现本文档中所描述的一些技术。在一些实施例中,视频处理硬件2206可以在处理器2202(例如,图形处理器单元)的内部或部分地在其内部。[1649]在一些实施例中,视频编解码方法可以使用如关于图22所描述的硬件平台上实现的设备来实现。[1650]图23是视频处理的示例方法2300的流程图。该方法包括为在视频的当前视频块与当前视频块的比特流表示之间的转换,确定(2302)要在转换期间使用的一个或多个插值滤波器,其中一个或多个插值滤波器来自视频的多个插值滤波器,以及使用一个或多个插值滤波器执行(2304)转换。[1651]使用解决方案的列表进一步描述本文档中描述的各种解决方案和实施例。[1652]第4节第1项提供了以下解决方案的附加示例。[1653]1.一种视频处理的方法,包括:执行视频图片的视频块与其比特流表示之间的转换,其中,视频块使用编解码树块的逻辑分组来处理视频块,其中,基于底部编解码树块的底边界是否在视频图片的底边界之外来处理编解码树块。[1654]2.如解决方案1的方法,其中,处理编解码树块包括通过使用编解码树块内的样点,来对编解码树块的样点值执行自适应环路滤波。[1655]3.如解决方案1的方法,其中,处理编解码树块包括通过禁止将编解码树块根据虚拟边界分成两部分,来对编解码树块的样点值执行自适应环路滤波。[1656]第4节第2项提供了以下解决方案的附加示例。[1657]4.一种视频处理方法包括:基于当前视频块的编解码树块的条件,在环路滤波期间确定虚拟样点的使用状态;以及执行与虚拟样点的使用状态一致的在视频块与视频块的比特流表示之间的转换。[1658]5.如解决方案4的方法,其中,使用状态的逻辑真值指示当前视频块被虚拟边界划分成至少两个部分,并且对一个部分中的样点进行滤波不允许利用来自另一部分的信息。[1659]6.如解决方案4的方法,其中,使用状态的逻辑真值指示在环路滤波期间使用虚拟样点,并且其中,使用当前视频块的重构样点的修改值来执行环路滤波。[1660]7.如解决方案4的方法,其中,使用状态的逻辑假值指示对块中的样点进行滤波允许利用相同块中的信息。[1661]8.如解决方案4的方法,其中,使用状态的逻辑真值指示对当前视频块的重构样点执行环路滤波,而不会进一步修改重构样点。[1662]9.如解决方案4-8中的任何一项的方法,其中,由于编解码树块具有特定大小,所以条件指定将使用状态设置为逻辑假值。[1663]10.如解决方案4-8中的任何一项的方法,其中,由于编解码树块的大小大于特定大小,所以条件指定将使用状态设置为逻辑假值。[1664]11.如解决方案4-8中的任何一项的方法,编解码数块的大小小于特定大小。[1665]第4节第3项提供了以下解决方案的附加示例。[1666]12.如解决方案5的方法,其中,条件取决于当前视频块的底边界是小于视频图片的视频单元的底边界,还是当前视频块的底边界是虚拟边界。[1667]13.如解决方案12的方法,其中,条件取决于当前视频块的底边界是条带或片或砖边界的底边界。[1668]14.如解决方案12的方法,其中,当当前视频块的底边界是条带或片或砖边界的底边界时,条件指定将使用状态设置为逻辑真值。[1669]15.如解决方案4-12的方法,其中,当当前视频块的底边界是图片边界的底边界或在图片边界的底边界之外时,条件指定将使用状态设置为逻辑假值。[1670]第4节第4项提供了以下解决方案的附加示例。[1671]16.一种视频处理的方法,包括:在逻辑上分组为一个或多个视频条带或视频砖的视频图片与视频图片的比特流表示之间的转换期间,确定禁止在自适应环路滤波过程中使用另一个条带或砖中的样点,以及执行与确定一致的转换。[1672]第4节第5项提供了以下解决方案的附加示例。[1673]17.一种视频处理的方法,包括:在视频图片的当前视频块与当前视频块的比特流表示之间的转换期间,确定当前视频块包括位于视频图片的视频单元的边界处的样点;以及基于确定执行转换,其中执行转换包括使用对于视频图片中的所有边界类型都相同的统一方法来生成用于环路滤波过程的虚拟样点。[1674]18.如解决方案17的方法,其中,视频单元是条带或片或360度视频。[1675]19.如解决方案17的方法,其中,环路滤波包括自适应环路滤波。[1676]20.如解决方案17-19中任一项的方法,其中,统一方法是两侧填充方法。[1677]21.如解决方案17-20中任一项的方法,其中,统一方法是当不允许访问第一线下方的样点并且利用填充来为第一线下方的样点生成虚拟样点时,然后访问第二线上方的样点也设置为不允许,并且利用填充来生成第二线上方的虚拟样点。[1678]22.如解决方案17-20中的任一项的方法,其中,统一方法是当不允许访问第一线上方的样点并且利用填充来为第一线上方的样点生成虚拟样点时,然后访问第二线下方的样点也设置为不允许,并利用填充来为第二线下方的样点生成虚拟样点。[1679]23.如解决方案21-22中的任一项的方法,其中,在第一线与要滤波的当前样点所位于的当前线之间的距离以及在第二线与第一线之间的距离相等。[1680]第4节第6项提供了以下解决方案的附加示例。[1681]24.一种视频处理的方法,包括:在视频图片的当前视频块与当前视频块的比特流表示之间的转换期间,确定在转换期间应用可用于视频图片的多个自适应环路滤波器(alf)样点选择方法中的一个;并且通过应用多个alf样点选择方法中的一个来执行转换。[1682]25.如解决方案24的方法,其中,多个alf样点选择方法包括:第一方法,其中在转换期间将环路滤波器应用于当前视频块之前选择样点;以及第二方法,其中,在转换期间将环路滤波器应用于当前视频块之后选择样点。[1683]第4节第7项提供了以下解决方案的附加示例。[1684]26.一种视频处理的方法,包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间对视频图片的当前视频块的样点执行环路滤波操作;其中,边界规则禁止使用跨视频图片的虚拟管线数据单元(vpdu)的样点,以及使用环路滤波操作的结果执行转换。[1685]27.如解决方案26的方法,其中,vpdu对应于视频图片的具有固定大小的区域。[1686]28.如解决方案26-27中的任一项的方法,其中,边界规则还指定使用虚拟样点代替禁用样点来进行环路滤波。[1687]29.如解决方案28的方法,其中,通过填充生成虚拟样点。[1688]第4节第8项提供了以下解决方案的附加示例。[1689]30.一种视频处理的方法,包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间对视频图片的当前视频块的样点执行环路滤波操作;其中边界规则指定对于跨视频单元边界的当前视频块的位置使用在不使用填充情况下所生成的样点,以及使用环路滤波操作的结果执行转换。[1690]31.如解决方案30的方法,其中,使用两侧填充技术生成样点。[1691]32.如解决方案30的方法,其中,环路滤波操作包括在环路滤波操作期间对于对称定位的样点使用相同的虚拟样点生成技术。[1692]33.如解决方案30-32中的任一项的方法,其中,对当前视频块的样点进行环路滤波操作包括在应用环路滤波之前对当前视频块的样点执行重整形。[1693]第4节第9项提供了以下解决方案的附加示例。[1694]34.一种视频处理的方法,包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间对视频图片的当前视频块的样点执行环路滤波操作;其中,边界规则指定对于环路滤波操作,选择具有这样的维度的滤波器,使得在环路滤波期间所使用的当前视频块的样点不跨视频图片的视频单元的边界,以及使用环路滤波操作的结果执行转换。[1695]第4节第10项提供了以下解决方案的附加示例。[1696]35.一种视频处理的方法,包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间对视频图片的当前视频块的样点执行环路滤波操作;其中,边界规则指定对于环路滤波操作基于环路滤波是否需要填充的样点来选择修剪参数或滤波器系数,以及使用环路滤波操作的结果执行转换。[1697]36.如解决方案35的方法,其中,裁剪参数或滤波器系数包括在比特流表示中。[1698]第4节第11项提供了以下解决方案的附加示例。[1699]37.一种视频处理的方法,包括:基于边界规则,在当前视频块与当前视频块的比特流表示之间的转换期间对视频图片的当前视频块的样点执行环路滤波操作;其中,边界规则取决于当前视频块的色彩分量标识,以及使用环路滤波操作的结果执行转换。[1700]38.如解决方案37的方法,其中对于亮度和/或不同的色彩分量,边界规则是不同的。[1701]39.如解决方案1-38中的任一项的方法,其中,转换包括将当前视频块编码到比特流表示中。[1702]40.如解决方案1-38中的任一项的方法,其中,转换包括解码比特流表示以生成当前视频块的样点值。[1703]41.一种视频编码设备,包括被配置为实现如解决方案1-38中的任一项或多项所述的方法的处理器。[1704]42.一种视频解码设备,包括被配置为实现如解决方案1-38中的任一项或多项所述的方法的处理器。[1705]43.一种计算机可读介质,其上具有存储的代码,代码在由处理器执行时使得处理器实现如解决方案1-38中的任一项或多项所述的方法。[1706]图31是可实现的本文中所公开的各种技术的示例视频处理系统3100的框图。各种实现方式可以包括系统3100中的一些或全部组件。系统3100可以包括用于接收视频内容的输入3102。视频内容可以以原始或未压缩的格式(例如8或10比特多分量像素值)接收,或者可以以压缩或编码的格式接收。输入3102可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(pon)等)和无线接口(诸如wi-fi或蜂窝接口)。[1707]系统3100可以包括可以实现本文档中描述的各种编解码或编码方法的编解码组件3104。编解码组件3104可以减少从输入3102到编解码组件3104的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时称为视频压缩或视频转码技术。编解码组件3104的输出可以被存储或经由所连接的通信来发送,如组件3106所表示的。在输入3102处接收的视频的存储或通信的比特流(或编解码)表示可以由组件3108使用,以生成被发送到显示接口3110的像素值或可显示视频。从比特流表示中生成用户可见的视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但是应当理解,在编码器处使用编解码工具或操作,并且将由解码器执行反演编码结果的对应解码工具或操作。[1708]外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清晰度多媒体接口(hdmi)或displayport等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以实施在各种电子装置中,诸如移动电话、膝上型计算机、智能电话或其它能够执行数字数据处理和/或视频显示的装置。[1709]图32是根据本技术的用于视频处理的方法3200的流程表示。本方法3200包括,在操作3210,为视频的当前视频单元与视频的比特流表示之间的转换,独立于当前块的第二邻域区域的信息来确定当前块的第一邻域区域中的一个或多个样点对于转换的编解码过程的可用性。第二邻域区域与第一邻域区域相邻。一个或多个样点在确定为不可用的情况下被填充。编解码过程包括自适应环路滤波器(alf)工具,alf工具包括alf分类过程和/或alf滤波过程。方法3200还包括,在操作3220,基于确定执行转换。[1710]在一些实施例中,第一邻域区域包括当前块的左上区域,并且其中第二邻域区域包括当前块上方的区域或位于当前块的左方的区域。在一些实施例中,左上区域中的一个或多个样点由于不可用于编解码过程而被填充,并且当前块上方的区域中的样点被确定为可用于编解码过程。在一些实施例中,左上区域中的一个或多个样点可用于编解码过程,并且当前块上方的区域中的样点由于不可用于编解码过程而被填充。[1711]在一些实施例中,第一邻域区域包括当前块的右下区域,并且第二邻域区域包括当前块下方的区域或位于当前块的右方的区域。在一些实施例中,第一邻域区域包括当前块的右上区域,并且第二邻域区域包括当前视频单元上方的区域或位于当前块的右方的区域。在一些实施例中,第一邻域区域包括当前块的左下区域,并且第二邻域区域包括当前块下方的区域或位于当前块的左方的区域。[1712]在一些实施例中,确定第一邻域区域中的一个或多个样点不可用,并且在第二邻域区域和当前块在同一视频单元的情况下确定第二邻域区域中的一个或多个样点可用。在一些实施例中,第一邻域区域是当前块的左上或右上区域,并且第二邻域区域是当前块上方的区域。在一些实施例中,第一邻域区域是当前块的左下或右下区域,并且第二邻域区域是当前块下方的区域。在一些实施例中,第一邻域区域是当前块的左上或左下区域,并且第二邻域区域是当前块左方的区域。在一些实施例中,第一邻域区域是当前块的右上或右下区域,并且第二邻域区域是当前块右方的区域。在一些实施例中,当前块包括编解码树单元。[1713]图33是根据本技术的用于视频处理的方法3300的流程表示。方法3300包括,在操作3310,为视频的当前视频单元与视频的比特流表示之间的转换,确定k个区域中的至少一个样点在以下情况下不可用于滤波操作:(1)k个区域中的k个代表性样点中的m个代表性样点是在与当前视频单元不同的视频单元中,以及(2)不允许滤波操作跨视频的多个视频单元访问样点,其中m和k是整数。方法3300还包括,在操作3330,基于确定执行转换。[1714]在一些实施例中,m=1且k=2。在一些实施例中,k个邻域区域包括当前块的左上邻域区域和右上邻域区域。在一些实施例中,k个邻域区域包括当前块的左上邻域区域和左下邻域区域。在一些实施例中,k个邻域区域包括当前块的右上邻域区域和右下邻域区域。在一些实施例中,k个邻域区域包括当前块的左下邻域区域和右下邻域区域。[1715]在一些实施例中,m=1、2或3,并且其中k=3。在一些实施例中,k个邻域区域包括当前块的左上邻域区域、右上邻域区域和左下邻域区域。在一些实施例中,k个邻域区域包括当前块的左上邻域区域、右上邻域区域和右下邻域区域。在一些实施例中,k个邻域区域包括当前块的右上邻域区域、左下邻域区域和右下邻域区域。在一些实施例中,k个邻域区域包括当前块的左上邻域区域、左下邻域区域和右下邻域区域。[1716]在一些实施例中,m=1、2或3,并且其中k=4。在一些实施例中,k个邻域区域包括当前块的左上邻域区域、右上邻域区域、左下邻域区域和右下邻域区域。[1717]在一些实施例中,基于检查k个代表性样点中的n个代表性样点,并且其中m≤n≤k,确定m个代表性样点处于与当前视频单元不同的视频单元中。在一些实施例中,n=m,并且仅检查了k个代表性样点中的m个代表性样点。在一些实施例中,在m=1且k=2的情况下,k个区域包括当前视频单元的左上邻域区域和右上邻域区域。在一些实施例中,仅检查左上邻域区域中的样点。在一些实施例中,仅检查右上邻域区域中的样点。在一些实施例中,在m=1且k=2的情况下,k个区域包括当前视频单元的左下邻域区域和右下邻域区域。在一些实施例中,仅检查左下邻域区域中的样点。在一些实施例中,仅检查右下邻域区域中的样点。在一些实施例中,在m=1且k=2的情况下,k个区域包括当前视频单元的左上邻域区域和左下邻域区域。在一些实施例中,仅检查左上邻域区域中的样点。在一些实施例中,仅检查左下邻域区域中的样点。在一些实施例中,在m=1且k=2的情况下,k个区域包括当前视频单元的右上邻域区域和右下邻域区域。在一些实施例中,仅检查右上邻域区域中的样点。在一些实施例中,仅检查右下邻域区域中的样点。在一些实施例中,在m=1且k=4的情况下,k个区域包括当前视频单元的左上邻域区域、右上邻域区域、左下邻域区域和右下邻域区域。在一些实施例中,仅检查左上邻域区域中的样点。在一些实施例中,仅检查右上邻域区域中的样点。在一些实施例中,仅检查左下邻域区域中的样点。在一些实施例中,仅检查右下邻域区域中的样点。[1718]在一些实施例中,在区域位于与当前视频单元不同的条带中,并且语法元素指示不允许滤波操作跨不同的条带访问样点的情况下,该区域中的代表性样点被认为是不可用的。在一些实施例中,在区域位于与当前视频单元不同的砖中,并且语法元素指示不允许滤波操作跨不同的砖访问样点的情况下,该区域中的代表性样点被认为是不可用的。在一些实施例中,在区域位于与当前视频单元不同的子图片中,并且语法元素指示不允许滤波操作跨不同的子图片访问样点的情况下,该区域中的代表性样点被认为是不可用的。[1719]在一些实施例中,该转换包括将视频编码为比特流表示。在一些实施例中,该转换包括将比特流表示解码为视频。[1720]图34是图示可利用本公开的技术的示例视频编解码系统100的框图。[1721]如图34所示,视频编解码系统100可以包括源装置110和目的地装置120。源装置110生成编码的视频数据,其可以被称为视频编码装置。目的地装置120可以解码由源装置110生成的编码的视频数据,该目的地装置120可以被称为视频解码装置。[1722]源装置110可以包括视频源112、视频编码器114和输入/输出(i/o)接口116。[1723]视频源112可以包括诸如视频捕获装置的源、从视频内容提供者接收视频数据的接口、和/或生成视频数据的计算机图形系统,或这些源的组合。视频数据可以包括一个或多个图片。视频编码器114对来自视频源112的视频数据进行编码以生成比特流。比特流可以包括形成视频数据的编解码表示的比特序列。比特流可以包括编解码图片和相关联的数据。编解码图片是图片的编解码表示。相关联的数据可以包括序列参数集、图片参数集和其他语法元素。i/o接口116包括调制器/解调器(调制解调器)和/或发送器。可以将编码的视频数据经由i/o接口116通过网络130a直接发送到目的地装置120。还可以将编码的视频数据存储到存储介质/服务器130b上,用于由目的地装置120存取。[1724]目的地装置120可以包括i/o接口126、视频解码器124和显示装置122。[1725]i/o接口126可以包括接收器和/或调制解调器。i/o接口126可以从源装置110或存储介质/服务器130b获取编码的视频数据。视频解码器124可以对编码的视频数据进行解码。显示装置122可以向用户显示解码的视频数据。显示装置122可以与目的地装置120集成,或可以在配置为与外置显示装置相接的目的地装置120外部。[1726]视频编码器114和视频解码器124可以根据视频压缩标准(诸如,高效视频编解码(hevc)标准、通用视频编解码(vvc)标准和其他当前和/或其他标准)进行操作。[1727]图35是图示视频编码器200的示例的框图,该视频编码器200可以是图34中图示的系统100中的视频编码器114。[1728]视频编码器200可以被配置为执行本公开的任何或全部技术。在图35的示例中,视频编码器200包括多个功能组件。本公开所描述的技术可以在视频编码器200的各种组件之间共享。在一些示例中,处理器可以配置为执行本公开的任何或全部技术。[1729]视频编码器200的功能组件可以包括分割单元201、预测单元202(其可以包括模式选择单元203、运动估计单元204、运动补偿单元205和帧内预测单元206)、残差生成单元207、变换单元208、量化单元209、逆量化单元210、逆变换单元211、重构单元212、缓冲器213和熵编码单元214。[1730]在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在一个示例中,预测单元202可以包括帧内块复制(ibc)单元。ibc单元可以用ibc模式执行预测,其中至少一个参考图片是当前视频块所位于的图片。[1731]此外,诸如运动估计单元204和运动补偿单元205的一些组件可以被高度集成,但是出于解释的目的在图35的示例中分开表示。[1732]分割单元201可以将图片分割成一个或多个视频块。视频编码器200和视频解码器300可以支持各种视频块大小。[1733]模式选择单元203可以例如基于错误结果选择帧内或帧间的编解码模式中的一个,并且将得到的帧内或帧间编解码块提供到残差生成单元207来生成残差块数据而且提供到重构单元212来重构编码块以用作参考图片。在一些示例中,模式选择单元203可以选择帧内和帧间预测(ciip)模式的组合,其中预测是基于帧内预测信号和帧间预测信号。模式选择单元203还可以为帧间预测情况下的块选择运动矢量的分辨率(例如子像素或整个像素精度)。[1734]为了对当前视频块执行帧间预测,运动估计单元204可以通过将来自缓冲器213的一个或多个参考帧与当前视频块进行比较,生成当前视频块的运动信息。运动补偿单元205可以基于来自缓冲器213的图片(而不是与当前视频块相关联的图片)的运动信息和解码样点来为当前视频块确定预测的视频块。[1735]运动估计单元204和运动补偿单元205可以为当前视频块执行不同操作,例如执行不同操作取决于当前视频块是在i条带、p条带还是b条带中。[1736]在一些示例中,运动估计单元204可以执行当前视频块的单向预测,并且运动估计单元204可以在列表0或列表1的参考图片中搜索当前视频块的参考视频块。运动估计单元204然后可以生成指示列表0或列表1的参考图片中含有参考视频块的参考索引以及指示在当前视频块与参考视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引、预测方向指示符、和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。[1737]在其他示例中,运动估计单元204可以执行当前视频块的双向预测,运动估计单元204可以在列表0的参考图片中搜索当前视频块的参考视频块并且还可以在列表1的参考图片中搜索当前视频块的另一个参考视频块。运动估计单元204然后可以生成指示列表0或列表1的参考图片中含有参考视频块的参考索引以及指示在参考视频块与当前视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引和当前视频块的运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。[1738]在一些示例中,运动估计单元204可以输出运动信息的全部集合,用于解码器的解码处理。[1739]在一些示例中,运动估计单元204可以不输出当前视频的运动信息的全部集合。而是,运动估计单元204可以参考另一个视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与邻域视频块的运动信息足够相似。[1740]在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示:向视频解码器300指示当前视频块具有与另一个视频块相同的运动信息的值。[1741]在另一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中标识另一个视频块和运动矢量差(mvd)。运动矢量差指示当前视频块的运动矢量与指示视频块的运动矢量之间的差。视频解码器300可以使用指示视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。[1742]如上所讨论的,视频编码器200可以预测性地信令通知运动矢量。可以由视频编码器200实现的预测性的信令通知技术的两个示例包括高级运动矢量预测(amvp)和merge模式信令通知。[1743]帧内预测单元206可以对当前视频块执行帧内预测。当帧内预测单元206对当前视频块执行帧内预测时,帧内预测单元206可以基于相同图片中其他视频块的解码样点来生成当前视频块的预测数据。当前视频块的预测数据可以包括预测视频块和各种语法元素。[1744]残差生成单元207可以通过从当前视频块中减去(例如,由减号表示)当前视频块的(一个或多个)预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括对应于当前视频块中样点的不同样点分量的残差视频块。[1745]在其他示例中,例如在跳过模式下,对于当前视频块可能不存在当前视频块的残差数据,并且残差生成单元207可以不执行减去操作。[1746]变换处理单元208可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块来生成当前视频块的一个或多个变换系数视频块。[1747]在变换处理单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(qp)值来量化与当前视频块相关联的变换系数视频块。[1748]逆量化单元210和逆变换单元211可以将逆量化和逆变换分别应用于变换系数视频块,来从变换系数视频块重构残差视频块。重构单元212可以将重构的残差视频块添加到来自由预测单元202生成的一个或多个预测视频块的对应样点,以产生与当前块相关联的重构视频块用于存储在缓冲器213中。[1749]在重构单元212重构视频块之后,可以执行环路滤波操作以降低视频块中视频块化伪影。[1750]熵编码单元214可以从视频编码器200的其他功能组件接收数据。当熵编码单元214接收数据时,熵编码单元214可以执行一个或多个熵编码操作以生成熵编码数据并且输出包括熵编码数据的比特流。[1751]图36是图示视频解码器300的示例的框图,该视频解码器300可以是图34中图示的系统100中视频解码器114。[1752]视频解码器300可以被配置为执行本公开的任何或全部技术。在图36的示例中,视频解码器300包括多个功能组件。本公开所描述的技术可以在视频解码器300的各种组件之间共享。在一些示例中,处理器可以配置为执行本公开的任何或全部技术。[1753]在图36的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305以及重构单元306和缓冲器307。在一些示例中,视频解码器300可以执行与关于视频编码器200(例如,图35)所描述的编码过程总体反演的解码过程。[1754]熵解码单元301可以撷取编码比特流。编码比特流可以包括熵编解码视频数据(例如,视频数据的编码块)。熵解码单元301可以对熵编解码视频进行解码,并且根据熵解码视频数据,运动补偿单元302可以确定包括运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。运动补偿单元302例如可以通过执行amvp和merge模式确定此类信息。[1755]运动补偿单元302可以产生运动补偿块,可能地基于插值滤波器执行插值。要以子像素精度使用的插值滤波器的标识符可以包括在语法元素中。[1756]运动补偿单元302可以使用由视频编码器200在编码视频块的期间所使用的插值滤波器,来计算出参考块的子整数个像素的插值的值。运动补偿单元302可以根据接收的语法信息确定由视频编码器200所使用的插值滤波器并且使用插值滤波器来产生预测块。[1757]运动补偿单元302可以使用一些语法信息来确定:用于对编码视频序列的(多个)帧和/或(多个)条带进行编码的块的大小,描述编码视频序列的图片的每个宏块如何被分割的分割信息,指示如何编码每个分割的模式,每个帧间编码块的一个或多个参考帧(和参考帧列表),以及对编码视频序列进行解码的其他信息。[1758]帧内预测单元303可以使用例如在比特流中接收的帧内预测模式来从空域相邻块形成预测块。逆量化单元303逆量化(即去量化)在比特流中提供的且由熵解码单元301解码的量化的视频块系数。逆变换单元303应用逆变换。[1759]重构单元306可以用由运动补偿单元202或帧内预测单元303生成的对应预测块求和残差块,以形成解码块。如所期望的,去块化滤波器还可以应用于滤波解码块以便移除块化伪影。解码视频块然后存储在缓冲器307中,该缓冲器307提供用于随后的运动补偿/帧内预测的参考块而且产生解码视频以呈现在显示装置上。[1760]根据前述,将理解出于图示的目的已经描述本公开的技术的指定实施例,但是可以做出各种修改而不会偏离本发明的范围。相应地,本公开的技术不限于如所附权利要求所主张的。[1761]本公开的技术的一些实施例包括决定或确定启用视频处理工具或模式。在示例中,当启用视频处理工具或模式时,编码器将使用或实现在视频块的处理过程中的工具或模式,但是不必基于工具或模式的使用来修改得到的比特流。换言之,当基于决定或确定启用视频处理工具或模式时,从视频块到视频的比特流的转换将使用视频处理工具或模式。在另一个示例中,当启用视频处理工具或模式时,解码器将利用已经基于视频处理工具或模式修改比特流的知识来处理比特流。换言之,使用基于决定或确定启用的视频处理工具或模式,将执行从视频的比特流到视频块的转换。[1762]本公开的技术的一些实施例包括决定或确定禁用视频处理工具或模式。在示例中,当禁用视频处理工具或模式时,编码器在视频块到视频的比特流表示的转换中将不会使用工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将使用尚未基于决定或确定而启用的视频处理工具或模式来修改比特流的知识来处理比特流。[1763]本专利文档中所描述的主题的实现方式和功能性操作可以被实现在各种系统、数字电子电路中或者在计算机软件、固件或硬件中,含有本说明书中所公开的结构以及其结构的等同物,或者它们中的一个或多个的组合。本说明书中所描述的主题的实现方式可以被实现为有形且非易失性计算机可读介质上所编码的一个或多个计算机程序产品,例如一个或多个计算机程序指令模块,用于由数据处理设备执行或者控制数据处理设备的操作。该计算机可读介质可以是机器可读存储装置、机器可读存储基板、存储器装置、影响机器可读可传播信号的复合物,或其一个或多个的组合。术语“数据处理单元”或“数据处理设备”涵盖用于处理数据的所有设备、装置和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该设备还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。[1764]计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式来部署计算机程序,包括独立程序或适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序不必须对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的部分中(例如,在标记语言文档中存储的一个或多个脚本)、在专用于所讨论的程序的单个文件中、或在多个协同文件中(例如存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以部署为在一个计算机上或者在多个计算机上执行,该多个计算机位于一个站点处或者分布跨多个站点并由通信网络互连。[1765]可以由执行一个或多个计算机程序的一个或多个可编程处理器来进行在本说明书中所描述的过程和逻辑流,以通过在输入数据上操作并且生成输出来进行功能。也可以由专用逻辑电路(例如,现场可编程门阵列(fpga)或专用集成电路(asic))进行过程和逻辑流,并且设备可以实现为专用逻辑电路(例如fpga或asic)。[1766]适合于计算机程序的执行的处理器包括例如通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或者该两者接收指令和数据。计算机的基本元件是用于进行指令的处理器和用于存储指令和数据的一个或多个存储装置。通常,计算机还将包括用于存储数据的一个或多个海量存储装置(例如磁、磁光盘或光盘),或者可操作地耦合以从海量存储装置(例如磁、磁光盘或光盘)接收数据或者将数据传输到海量存储装置(例如磁、磁光盘或光盘),或者以上两者。但是,计算机不必具有此类装置。适用于存储计算机程序指令和数据的计算机可读介质含有所有形式的非易失性存储器、介质和存储装置,含有例如半导体存储器装置(例如eprom、eeprom和闪速存储器装置)。处理器和存储器可以由专用逻辑电路补充,或者合并在专用逻辑电路中。[1767]旨在说明书与附图一起仅被示例性地考虑,其中示例性意味着示例。如本文所使用的,除非上下文明确指示,否则“[1768]虽然本专利文档含有许多细节,但这些细节不应被解释为对任何发明或可要求保护的范围的限制,而是作为指定于特定发明的特定实施例的特征的描述。在本专利文档中,在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反地,在单个实施例的上下文中所描述的各种特征还可以分别在多个实施例中来实现或者以各种合适的子组合来实现。此外,尽管特征可以如上文描述为以某些组合起作用并且甚至最初同样地要求,但是在某些情况下来自所要求保护的组合的一个或多个特征可以从组合中去除,并且所要求保护的组合可以针对子组合或子组合的变化。[1769]类似地,尽管在附图中以特定顺序描绘了操作,但这不应当理解为要求按所示的特定次序或顺序次序进行此类操作或者进行所有示出的操作,以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分开不应被理解为在所有实施例中都要求这种分开。[1770]仅描述了几个实现方式和示例,并且可以基于本专利文档中描述和示出的内容来作出其它实现方式、增强和变型。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献