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

自适应环路滤波中不可用样点位置处的填充处理的制作方法

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

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

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

相关文献