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

用于基于交叉分量相关性来减小视频编码中的重构误差的系统和方法与流程

2022-04-25 05:07:34 来源:中国专利 TAG:


1.本公开涉及视频编码,并且更具体地涉及用于减小重构误差的技术。


背景技术:

2.数字视频功能可以结合到各种设备中,包括数字电视、笔记本电脑或台式电脑、平板电脑、数字录音设备、数字媒体播放器、视频游戏设备、蜂窝电话(包括所谓的智能电话)、医学成像设备等。可以根据视频编码标准对数字视频进行编码。视频编码标准定义了封装编码视频数据的兼容比特流的格式。兼容比特流是可以由视频解码设备接收和解码以生成重构视频数据的数据结构。视频编码标准可以结合视频压缩技术。视频编码标准的示例包括iso/iec mpeg-4 visual和itu-t h.264(也被称为iso/iec mpeg-4 avc)和高效视频编码(hevc)。hevc在2016年12月的itu-t h.265建议书的高效视频编码(hevc)中有所描述,该文献以引用方式并入本文,并且在本文中被称为itu-t h.265。目前正在考虑对itu-t h.265进行扩展和改进以开发下一代视频编码标准。例如,itu-t视频编码专家组(vceg)和iso/iec活动图像专家组(mpeg)(被统称为联合视频研究组(jvet))正在致力于标准化压缩能力显著超过当前hevc标准的视频编码技术。以引用方式并入本文的联合探索模型7(jem 7)、联合探索测试模型7(jem 7)的算法描述、iso/iec jtc1/sc29/wg11文档:jvet-g1001(2017年7月,意大利,都灵)描述了由jvet在联合测试模型研究下的编码特征,该技术是超越itu-t h.265功能的潜在增强视频编码技术。应当指出的是,jem 7的编码特征在jem参考软件中实现。如本文所用,术语jem可统称包括在jem 7中的算法以及jem参考软件的具体实施。此外,响应于由vceg和mpeg联合发布的“joint call for proposals on video compression with capabilities beyond hevc”,在2018年4月16日至20日于加利福尼亚州圣地亚哥(san diego,ca)举行的iso/iec jtc1/sc29/wg11第10次会议上,各个小组提出了对视频编码工具的多种描述。根据对视频编码工具的多种描述,视频编码规范的最终初始草案文本在2018年4月16日至20日于加利福尼亚州圣地亚哥举行的iso/iec jtc1/sc29/wg11第10次会议中的“versatile video coding(draft 1)”即文档jvet-j1001-v2中有所描述,该文档以引用方式并入本文并且被称为jvet-j1001。jvet和mpeg的下一代视频编码标准的当前开发被称为通用视频编码(vvc)项目。2019年3月19日至27日在瑞士日内瓦举行的iso/iec jtc1/sc29/wg11第14次会议中的“versatile video coding(draft 5)”(文档jvet-n1001-v8,其以引用方式并入本文,并且称为jvet-n1001)表示对应于vvc项目的视频编码规范的草稿文本的新版本。2019年7月3日至12日在瑞典哥德堡举行的iso/iec jtc1/sc29/wg11第15次会议中的“versatile video coding(draft 6)”(文档jvet-o2001-ve,其以引用方式并入本文,并且称为jvet-o2001)表示对应于vvc项目的视频编码规范的草稿文本的当前版本。
3.视频压缩技术能够减少存储和传输视频数据的数据需求。视频压缩技术可以通过利用视频序列中固有的冗余来减少数据需求。视频压缩技术可将视频序列再分成连续较小
的部分(即,视频序列内的一组图片、一组图片内的图片、图片内的区域、区域内的子区域等)。可以使用帧内预测编码技术(例如,图片内的空间预测技术)和帧间预测技术(即图片间的技术(时间))来生成待编码的单位视频数据与视频数据的参考单元之间的差值。该差值可以被称为残差数据。残差数据可以被编码为量化变换系数。语法元素可以涉及残差数据和参考编码单元(例如,帧内预测模式索引和运动信息)。可以对残差数据和语法元素进行熵编码。熵编码的残差数据和语法元素可以包括在形成兼容比特流的数据结构中。


技术实现要素:

4.在一个示例中,一种对重构视频数据进行滤波的方法,该方法包括:
5.输入重构亮度图片样本阵列;将对应于当前色度样本的亮度位置设定为由色度样本中的水平位置乘以子宽度值和色度样本中的垂直位置乘以子高度值限定的位置;通过使用该亮度位置来导出该重构亮度图片样本阵列内部的亮度样本位置;以及通过使用交叉分量滤波器系数和由这些亮度样本位置中的至少一者限定的重构亮度图片样本阵列来导出变量,其中通过使用当前的样本色度块来修改该变量。
6.在一个示例中,提供了一种对编码数据进行解码的解码器,该解码器包括:处理器,和与该处理器相关联的存储器;其中该处理器被配置为执行以下步骤:输入重构亮度图片样本阵列;将对应于当前色度样本的亮度位置设定为由色度样本中的水平位置乘以子宽度值和色度样本中的垂直位置乘以子高度值限定的位置;通过使用该亮度位置来导出该重构亮度图片样本阵列内部的亮度样本位置;以及通过使用交叉分量滤波器系数和由这些亮度样本位置中的至少一者限定的重构亮度图片样本阵列来导出变量,其中通过使用当前的样本色度块来修改该变量。
7.在一个示例中,提供了一种对视频数据进行编码的编码器,该编码器包括:处理器,和与该处理器相关联的存储器;其中该处理器被配置为执行以下步骤:输入重构亮度图片样本阵列;将对应于当前色度样本的亮度位置设定为由色度样本中的水平位置乘以子宽度值和色度样本中的垂直位置乘以子高度值限定的位置;通过使用该亮度位置来导出该重构亮度图片样本阵列内部的亮度样本位置;以及通过使用交叉分量滤波器系数和由这些亮度样本位置中的至少一者限定的重构亮度图片样本阵列来导出变量,其中通过使用当前的样本色度块来修改该变量。
附图说明
8.[图1]图1是示出根据本公开的一种或多种技术的根据四叉树多叉树划分进行编码的一组图片的示例的概念图。
[0009]
[图2a]图2a是示出根据本公开的一种或多种技术的对视频数据块进行编码的示例的概念图。
[0010]
[图2b]图2b是示出根据本公开的一种或多种技术的对视频数据块进行编码的示例的概念图。
[0011]
[图3]图3是示出根据本公开的一种或多种技术的可使用的视频分量采样格式的示例的概念图。
[0012]
[图4a]图4a是示出根据本公开的一种或多种技术的可使用的视频分量采样格式
的位置类型示例的概念图。
[0013]
[图4b]图4b是示出根据本公开的一种或多种技术的可使用的视频分量采样格式的位置类型示例的概念图。
[0014]
[图4c]图4c是示出根据本公开的一种或多种技术的可使用的视频分量采样格式的位置类型示例的概念图。
[0015]
[图4d]图4d是示出根据本公开的一种或多种技术的可使用的视频分量采样格式的位置类型示例的概念图。
[0016]
[图4e]图4e是示出根据本公开的一种或多种技术的可使用的视频分量采样格式的位置类型示例的概念图。
[0017]
[图4f]图4f是示出根据本公开的一种或多种技术的可使用的视频分量采样格式的位置类型示例的概念图。
[0018]
[图5]图5是示出根据本公开的一种或多种技术的可被配置为对视频数据进行编码和解码的系统的示例的框图。
[0019]
[图6]图6是示出根据本公开的一种或多种技术的可被配置为对视频数据进行编码的视频编码器的示例的框图。
[0020]
[图7]图7是示出根据本公开的一种或多种技术的可被配置为对视频数据进行编码的交叉分量滤波器单元的示例的框图。
[0021]
[图8]图8是示出根据本公开的一种或多种技术的用于视频数据的多个分量的重构误差示例的概念图。
[0022]
[图9a]图9a是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0023]
[图9b]图9b是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0024]
[图9c]图9c是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0025]
[图9d]图9d是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0026]
[图9e]图9e是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0027]
[图9f]图9f是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0028]
[图10]图10是示出根据本公开的一种或多种技术的使用交叉分量滤波来减小重构误差的示例的概念图。
[0029]
[图11a]图11a是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0030]
[图11b]图11b是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0031]
[图11c]图11c是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0032]
[图11d]图11d是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0033]
[图12a]图12a是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0034]
[图12b]图12b是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0035]
[图13a]图13a是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0036]
[图13b]图13b是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0037]
[图13c]图13c是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0038]
[图14a]图14a是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0039]
[图14b]图14b是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0040]
[图14c]图14c是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0041]
[图14d]图14d是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0042]
[图14e]图14e是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0043]
[图14f]图14f是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0044]
[图15a]图15a是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0045]
[图15b]图15b是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0046]
[图15c]图15c是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0047]
[图15d]图15d是示出根据本公开的一种或多种技术的可用于交叉分量滤波的滤波器系数位置的示例的概念图。
[0048]
[图16a]图16a是示出根据本公开的一种或多种技术的可用于交叉分量滤波的虚拟线缓冲器的示例的概念图。
[0049]
[图16b]图16b是示出根据本公开的一种或多种技术的可用于交叉分量滤波的虚拟线缓冲器的示例的概念图。
[0050]
[图16c]图16c是示出根据本公开的一种或多种技术的可用于交叉分量滤波的虚拟线缓冲器的示例的概念图。
[0051]
[图16d]图16d是示出根据本公开的一种或多种技术的可用于交叉分量滤波的虚
拟线缓冲器的示例的概念图。
[0052]
[图17]图17是示出根据本公开的一种或多种技术的可被配置为对视频数据进行解码的视频解码器的示例的框图。
[0053]
[图18]图18是示出根据本公开的一种或多种技术的可被配置为对视频数据进行编码的交叉分量滤波器单元的示例的框图。
[0054]
[图19a]图19a是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0055]
[图19b]图19b是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0056]
[图19c]图19c是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。
[0057]
[图20a]图20a是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
[0058]
[图20b]图20b是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。
具体实施方式
[0059]
一般来讲,本公开描述了用于对视频数据进行编码的各种技术。具体地,本公开描述了用于减小重构误差的技术。应当指出的是,尽管本公开的技术是关于itu-t h.264、itu-t h.265、jem、jvet-n1001和jvet-o2001描述的,但本公开的技术可普遍应用于视频编码。例如,除了包括在itu-t h.265、jem、jvet-n1001和jvet-o2001中的那些技术,本文所述的编码技术可并入视频编码系统(包括基于未来视频编码标准的视频编码系统),包括视频块结构、帧内预测技术、帧间预测技术、变换技术、滤波技术和/或其他熵编码技术。因此,对itu-t h.264、itu-t h.265、jem、jvet-n1001和jvet-o2001的参考是出于描述性目的,并且不应被解释为限制本文所述技术的范围。此外,应当指出的是,将文献以引用方式并入本文是出于描述性目的,并且不应被解释为限制或产生关于本文所用术语的歧义。例如,在某个并入的参考文献中提供的对某个术语的定义不同于另一个并入的参考文献和/或如本文所用的该术语的情况下,则该术语应以广泛地包括每个相应定义的方式和/或以包括替代方案中每个特定定义的方式来解释。
[0060]
在一个示例中,一种方法包括:接收用于视频数据的当前分量的重构样本数据,接收用于视频数据的一个或多个附加分量的重构样本数据,基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器,以及基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据将滤波器应用于用于视频数据的当前分量的重构样本数据。
[0061]
在一个示例中,一种设备包括配置为执行以下操作的一个或多个处理器:接收用于视频数据的当前分量的重构样本数据,接收用于视频数据的一个或多个附加分量的重构样本数据,基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器,以及基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据将滤波器应用于用于视频数据的当前分量的重构样本数据。
[0062]
在一个示例中,一种非暂态计算机可读存储介质包括存储在其上的指令,该指令在被执行时使得设备的一个或多个处理器:接收用于视频数据的当前分量的重构样本数据,接收用于视频数据的一个或多个附加分量的重构样本数据,基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器,以及基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据将滤波器应用于用于视频数据的当前分量的重构样本数据。
[0063]
在一个示例中,一种装置包括:用于接收用于视频数据的一个或多个附加分量的重构样本数据的装置,用于基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器的装置,以及用于基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据,将滤波器应用于用于视频数据的当前分量的重构样本数据的装置。
[0064]
在以下附图和描述中阐述了一个或多个示例的细节。根据描述和附图以及权利要求书,其他特征、对象和优点将显而易见。
[0065]
视频内容包括由一系列帧(或图片)组成的视频序列。一系列帧也可以被称为一组图片(gop)。每个视频帧或图片可被分成一个或多个区域。可根据基础单元(例如,视频块)和定义区域的规则集来定义区域。例如,定义区域的规则可以是:区域必须是布置成矩形的整数个视频块。此外,区域中的视频块可以根据扫描模式(例如,光栅扫描)来排序。如本文所用,术语“视频块”通常可以指图片的区域,或者可以更具体地指可以被预测性地编码的样本值的最大阵列、其子分区和/或对应结构。此外,术语“当前视频块”可以指图片的正被编码或解码的区域。视频块可被定义为样本值的阵列。应当指出的是,在一些情况下,像素值可被描述为包括视频数据的相应分量的样本值,其也可被称为颜色分量(例如,亮度(y)和色度(cb和cr)分量或红色、绿色和蓝色分量)。应当指出的是,在一些情况下,术语“像素值”和“样本值”可互换使用。此外,在一些情况下,像素或样本可被称为pel。视频采样格式(也可以被称为色度格式)可以相对于视频块中包括的亮度样本的数量来定义视频块中包括的色度样本的数量。例如,对于4:2:0采样格式,亮度分量的采样率是水平和垂直两个方向的色度分量的采样率的两倍。
[0066]
视频编码器可对视频块和其子分区执行预测编码。视频块和其子分区可以被称为节点。itu-t h.264指定包括16
×
16亮度样本的宏块。也就是说,在itu-t h.264中,图片被分段成宏块。itu-t h.265指定了类似的编码树单元(ctu)结构(其可被称为最大编码单元(lcu))。在itu-t h.265中,图片被分段成ctu。在itu-t h.265中,对于图片,ctu大小可被设定为包括16
×
16、32
×
32或64
×
64亮度样本。在itu-t h.265中,ctu由视频数据的每个分量(例如,亮度(y)和色度(cb和cr))的相应编码树块(ctb)构成。应当指出的是,具有一个亮度分量和两个对应色度分量的视频可被描述为具有两个通道,即,亮度通道和色度通道。此外,在itu-t h.265中,可根据四叉树(qt)划分结构来划分ctu,这使得ctu的ctb被划分为编码块(cb)。也就是说,在itu-t h.265中,ctu可被划分为四叉树叶节点。根据itu-t h.265,一个亮度cb连同两个对应的色度cb和相关联语法元素被称为编码单元(cu)。在itu-t h.265中,可以发信号通知cb的最小允许大小。在itu-t h.265中,亮度cb的最小允许最小大小是8
×
8亮度样本。在itu-t h.265中,使用帧内预测或帧间预测对图片区域进行编码的决定在cu位阶处进行。
[0067]
在itu-t h.265中,cu与在cu处具有其根的预测单元(pu)结构相关联。在itu-t h.265中,pu结构允许分割亮度cb和色度cb以生成对应的参考样本。即,在itu-t h.265中,可将亮度cb和色度cb分割成相应的亮度预测块和色度预测块(pb),其中pb包括对其应用相同预测的样本值的块。在itu-t h.265中,可将cb划分为1个、2个或4个pb。itu-t h.265支持从64
×
64样本向下至4
×
4样本的pb大小。在itu-t h.265中,正方形pb被支持用于帧内预测,其中cb可以形成pb或者cb可以被分割成四个正方形pb。在itu-t h.265中,除了正方形pb之外,还支持矩形pb来进行帧间预测,其中cb可垂直地或水平地减半以形成pb。此外,应当指出的是,在itu-t h.265中,对于帧间预测,支持四个非对称pb划分,其中cb在cb的高度(顶部或底部)或宽度(左侧或右侧)的四分之一处被划分为两个pb。对应于pb的帧内预测数据(例如,帧内预测模式语法元素)或帧间预测数据(例如,运动数据语法元素)用于生成pb的参考和/或预测样本值。
[0068]
jem指定具有最大大小的256
×
256亮度样本的ctu。jem指定四叉树加二叉树(qtbt)块结构。在jem中,qtbt结构允许由二叉树(bt)结构进一步划分四叉树叶节点。也就是说,在jem中,二叉树结构允许将四叉树叶节点垂直或水平递归划分。在jvet-n1001和jvet-o2001中,ctu根据四叉树加多类型树(qtmt或qt mtt)结构来分区。jvet-n1001和jvet-o2001中的qtmt类似于jem中的qtbt。然而,在jvet-n1001和jvet-o2001中,除了指示二进制分割之外,多类型树还可以指示所谓的三元(或三叉树(tt))分割。三元分割将一个块垂直地或水平地分成三个块。在垂直tt分割的情况下,块从左边缘起在其宽度的四分之一处以及从右边缘起在其宽度的四分之一处分割,并且在水平tt分割的情况下,块从顶部边缘起在其高度的四分之一处以及从底部边缘起在其高度的四分之一处分割。再次参考图1,图1示出了ctu被划分为四叉树叶节点并且四叉树叶节点根据bt分割或tt分割被进一步划分的示例。即,在图1中,虚线指示四叉树中的附加二元和三元分割。
[0069]
如上所述,每个视频帧或图片可被分成一个或多个区域。例如,根据itu-t h.265,每个视频帧或图片可被划分为包括一个或多个切片,并且进一步被划分为包括一个或多个图块,其中每个切片包括ctu序列(例如,以光栅扫描顺序排列),并且其中图块是对应于图片的矩形区域的ctu序列。应当指出的是,在itu-t h.265中,切片是从独立切片片段开始并且包含在下一个独立切片片段(如果有的话)之前的所有后续从属切片片段(如果有的话)的一个或多个切片片段的序列。切片片段(如切片)是ctu序列。因此,在一些情况下,术语“切片”和“切片片段”可互换使用以指示以光栅扫描顺序排列布置的ctu序列。此外,应当指出的是,在itu-t h.265中,图块可由包含在多于一个切片中的ctu组成,并且切片可由包含在多于一个图块中的ctu组成。然而,itu-t h.265规定了应满足以下一个或两个条件:(1)片段中的所有ctu属于同一个图块;以及(2)图块中的所有ctu属于同一个切片。
[0070]
关于jvet-n1001和jvet-o2001,切片需要由整数个砖块组成,而不是仅需要由整数个ctu组成。在jvet-n1001和jvet-o2001中,砖块是图片中特定图块内的矩形ctu行区域。此外,在jvet-n1001和jvet-o2001中,图块可被划分成多个砖块,每个砖块由图块内的一个或多个ctu行组成。未被划分成多个砖块的图块也被称为砖块。然而,作为图块的真子集的砖块不被称为图块。因此,在一些视频编码技术中,可支持或可不支持包括不形成图片的矩形区域的一组ctu的切片。此外,应当指出的是,在一些情况下,切片可能需要由整数个完整图块组成,并且在这种情况下,切片被称为图块组。本文所述的技术可适用于砖块、切片、图
块和/或图块组。图1是示出包括切片的图片组的示例的概念图。在图1所示的示例中,pic3被示出为包括两个切片(即,切片0和切片1)。在图1所示的示例中,切片0包括一个砖块,即砖块0,并且切片1包括两个砖块,即砖块1和砖块2。应当指出的是,在一些情况下,切片0和切片1可满足图块和/或图块组的要求并被分类为图块和/或图块组。
[0071]
对于帧内预测编码,帧内预测模式可指定图片内的参考样本的位置。在itu-t h.265中,已定义的可能的帧内预测模式包括平面(即,表面拟合)预测模式、dc(即平坦的整体平均)预测模式,以及33个角度预测模式(predmode:2-34)。在jem中,已定义的可能的帧内预测模式包括平面预测模式、dc预测模式,以及65个角度预测模式。应当指出的是,平面预测模式和dc预测模式可以被称为无方向预测模式,并且角度预测模式可以被称为方向预测模式。应当指出的是,无论已定义的可能预测模式的数量如何,本文描述的技术可以是普遍适用的。
[0072]
对于帧间预测编码,确定参考图片,并且运动矢量(mv)识别该参考图片中用于生成对当前视频块的预测的样本。例如,可使用位于一个或多个先前编码的图片中的参考样本值来预测当前视频块,并且运动矢量用于指示参考块相对于当前视频块的位置。运动矢量可描述例如运动矢量的水平位移分量(即mv
x
)、运动矢量的垂直位移分量(即mvy)和运动矢量的分辨率(例如,四分之一像素精度、二分之一像素精度、一像素精度、二像素精度、四像素精度)。先前解码的图片(其可包括在当前图片之前或之后输出的图片)可被组织成一个或多个参考图片列表,并且使用参考图片索引值来标识。此外,在帧间预测编码中,单预测是指使用来自单个参考图片的样本值生成预测,双预测是指使用来自两个参考图片的相应样本值生成预测。也就是说,在单预测中,单个参考图片和对应的运动矢量用于生成对当前视频块的预测,而在双预测中,第一参考图片和对应的第一运动矢量以及第二参考图片和对应的第二运动矢量用于生成对当前视频块的预测。在双预测中,将相应的样本值组合(例如,相加、舍入和削波,或根据权重进行平均)以生成预测。图片及其区域可基于哪些类型的预测模式可用于对其视频块进行编码而被分类。也就是说,对于具有b类型的区域(例如,b切片),可利用双预测、单预测和帧内预测模式,对于具有p类型的区域(例如,p切片),可利用单预测和帧内预测模式,对于具有i类型的区域(例如,i切片),只能利用帧内预测模式。如上所述,通过参考索引来识别参考图片。例如,对于p切片,可以存在单个参考图片列表refpiclist0,并且对于b切片,除了refpiclist0之外,可以存在第二独立参考图片列表refpiclist1。应当指出的是,对于b切片中的单预测,可使用refpiclist0或refpiclist1中的一者来生成预测。此外,应当指出的是,在解码过程期间,在开始对图片进行解码时,从存储在解码图片缓冲器(dpb)中的先前解码的图片生成参考图片列表。
[0073]
此外,编码标准可支持各种运动矢量预测模式。运动矢量预测使能够基于另一运动矢量来导出用于当前视频块的运动矢量的值。例如,可以从当前视频块的空间相邻块和时间相邻块导出具有相关联的运动信息的一组候选块。此外,所生成的(或默认的)运动信息可用于运动矢量预测。运动矢量预测的示例包括高级运动矢量预测(amvp)、时间运动矢量预测(tmvp)、所谓的“合并”模式,以及“跳过”和“直接”运动推理。此外,运动矢量预测的其他示例包括高级时间运动矢量预测(atmvp)和空间-时间运动矢量预测(stmvp)。对于运动矢量预测,视频编码器和视频解码器两者执行相同的过程以导出一组候选。因此,对于当前视频块,在编码和解码期间生成相同的一组候选。
[0074]
如上所述,对于帧间预测编码,先前编码的图片中的参考样本用于对当前图片中的视频块进行编码。在对当前图片进行编码时可用作参考的先前编码的图片被称为参考图片。应当指出的是,解码顺序不一定对应于图片输出顺序,即视频序列中图片的时间顺序。在itu-t h.265中,当图片被解码时,其被存储到解码图片缓冲器(dpb)(其可被称为帧缓冲器、参考缓冲器、参考图片缓冲器等)。在itu-t h.265中,存储到dpb的图片在被输出时从dpb中移除,并且不再需要用于编码后续图片。在itu-t h.265中,在对切片标头进行解码之后,即,在对图片进行解码开始时,每个图片调用一次是否应从dpb中移除图片的确定。例如,参考图1,pic3被示出为参考pic2。类似地,pic4被示出为参考pic1。关于图1,假设图片数量对应于解码顺序,dpb将填充如下:在解码pic1之后,dpb将包括{pic1};在解码pic2开始时,dpb将包括{pic1};在解码pic2之后,dpb将包括{pic1,pic2};在解码pic3开始时,dpb将包括{pic1,pic2}。然后,将参考pic2解码pic3,并且在解码pic3之后,dpb将包括{pic1,pic2,pic3}。在解码pic4开始时,图片pic2和pic3将被标记以从dpb中移除,因为它们不是解码pic4(或任何后续图片,未示出)所需的,并且假设pic2和pic3已被输出,则dpb将被更新以包括{pic1}。然后将参考pic1对pic4进行解码。标记图片以将其从dpb中移除的过程可以称为参考图片集(rps)管理。
[0075]
如上所述,帧内预测数据或帧间预测数据用于产生样本值的块的参考样本值。包括在当前pb或另一类型的图片区域结构和相关联的参考样本(例如,使用预测生成的那些)中的样本值之间的差可以被称为残差数据。残差数据可以包括对应于视频数据的每个分量的相应差值阵列。残差数据可能在像素域中。可对差值阵列应用变换诸如离散余弦变换(dct)、离散正弦变换(dst)、整数变换、小波变换或概念上类似的变换,以生成变换系数。应当指出的是,在itu-t h.265、jvet-n1001和jvet-o2001中,cu与在cu级具有其根的变换单元(tu)结构相关联。即,为了生成变换系数,可以对差值的阵列进行划分(例如,可以将四个8
×
8变换应用于16
×
16残差值阵列)。对于视频数据的每个分量,差值的此类再分可被称为变换块(tb)。应当指出的是,在一些情况下,可以(在视频编码器中)应用核心变换和后续二次变换来生成变换系数。对于视频解码器,变换的顺序是相反的。
[0076]
可以直接对变换系数或残差样本值执行量化过程(例如,就调色板编码量化而言)。量化通过限制为一组指定值的振幅来近似变换系数。量化实质上对变换系数进行缩放以便改变表示一组变换系数所需的数据量。量化可以包括将变换系数(或将偏移值添加到变换系数得到的值)除以量化缩放因子和任何相关联的取整函数(例如,取整为最接近的整数)。量化的变换系数可以被称为系数位阶值。逆量化(或“去量化”)可以包括将系数位阶值与量化缩放因子相乘,以及任何倒数取整或偏移加法运算。应当指出的是,如本文所用,术语量化过程在一些情况下可指除以缩放因子以生成位阶值,并且在一些情况下可指乘以缩放因子以恢复变换系数。也就是说,量化过程在一些情况下可以指量化,而在一些情况下可以指逆量化。此外,应当指出的是,虽然在下面的示例中的一些示例中关于与十进制记数法相关的算术运算描述了量化过程,但是这样的描述是为了说明的目的,并且不应该被解释为进行限制。例如,本文描述的技术可以在使用二进制运算等的设备中实现。例如,本文描述的乘法和除法运算可以使用移位运算等来实现。
[0077]
可根据熵编码技术对量化的变换系数和语法元素(例如,指示视频块的编码结构的语法元素)进行熵编码。熵编码过程包括使用无损数据压缩算法对语法元素值进行编码。
熵编码技术的示例包括内容自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、概率区间划分熵编码(pipe)等。熵编码的量化变换系数和对应的熵编码的语法元素可形成可用于在视频解码器处再现视频数据的兼容比特流。熵编码过程,例如cabac,可以包括对语法元素进行二值化。二值化是指将语法元素的值转换为一个或多个位的序列的过程。这些位可以被称为“bin”。二值化可以包括以下编码技术中的一种或组合:固定长度编码、一元编码、截断一元编码、截断rice编码、golomb编码、k阶指数golomb编码和golomb-rice编码。例如,二值化可以包括使用8位固定长度二值化技术将语法元素的整数值5表示为00000101,或者使用一元编码二值化技术将整数值5表示为11110。如本文所用,术语固定长度编码、一元编码、截断一元编码、截断rice编码、golomb编码、k阶指数golomb编码和golomb-rice编码中的每一个可以指这些技术的一般实现和/或这些编码技术的更具体实现。例如,可以根据视频编码标准具体地定义golomb-rice编码实现。在cabac的示例中,对于特定bin,上下文提供bin的最大概率状态(mps)值(即,bin的mps为0或1中的一者),以及bin是mps或最小概率状态(lps)的概率值。例如,上下文可以指示bin的mps为0,并且bin为1的概率为0.3。应当指出的是,可以基于包括当前语法元素和/或先前编码的语法元素中的bin的先前编码的bin的值来确定上下文。例如,与相邻视频块相关联的语法元素的值可以用于确定当前bin的上下文。
[0078]
图2a至图2b是示出对视频数据块进行编码的示例的概念图。如图2a所示,通过从当前视频数据块中减去一组预测值生成残差、对残差执行变换并且将变换系数量化来生成位阶值,对视频数据的当前块(例如,对应于视频分量的cb)进行编码。如图2b中所示,通过对位阶值执行逆量化,执行逆变换,并且将一组预测值加上所得残差来对当前视频数据块进行解码。应当指出的是,在图2a至图2b的示例中,重构块的样本值不同于被编码的当前视频块的样本值。具体地讲,图2b示出了重构误差,它是当前块与重构块之间的差值。这样,编码可被认为是有损的。然而,样本值的差值可被认为是重构视频的观看者可接受的或不可察觉的。
[0079]
此外,如图2a至图2b所示,使用缩放因子阵列生成系数位阶值。在itu-t h.265中,通过选择缩放矩阵并将缩放矩阵中的每个条目乘以量化缩放因子来生成缩放因子阵列。在itu-t h.265中,部分地基于预测模式和颜色分量来选择缩放矩阵,其中定义了以下大小的缩放矩阵:4
×
4、8
×
8、16
×
16和32
×
32。应当指出的是,在一些示例中,缩放矩阵可以为每个条目提供相同的值(即,根据单个值缩放所有系数)。在itu-t h.265中,可以由量化参数qp确定量化缩放因子的值。在itu-t h.265中,对于8位的位深度,qp可以取0至51的52个值,qp变化1通常对应于量化缩放因子的值变化约12%。此外,在itu-t h.265中,可以使用预测量化参数值(可以被称为预测qp值或qp预测值)和可选地发信号通知的量化参数增量值(可以被称为qp增量值或增量qp值)来导出一组变换系数的qp值。在itu-t h.265中,可以针对每个cu更新量化参数,并且可以针对亮度和色度通道中的每一个导出相应量化参数。
[0080]
如上所述,相对于图2a至图2b所示的示例,重构块的样本值可不同于所编码的当前视频块的样本值。此外,应当指出的是,在一些情况下,逐块地对视频数据进行编码可能导致伪像(例如,所谓的块伪像、带伪像等)。例如,块伪像可能导致重构视频数据的编码块边界可被用户在视觉上感知到。这样,可修改重构的样本值,以使所编码的当前视频块和重构块的样本值之间的差异最小化和/或尽量减少由视频编码过程引入的伪像。此类修改一
般可称为滤波。应当指出的是,滤波可作为循环中滤波过程或循环后滤波过程的一部分发生。对于循环中滤波过程,滤波过程的所得样本值可用于预测视频块(例如,存储到参考帧缓冲器以用于在视频编码器处的后续编码以及在视频解码器处的后续解码)。对于循环后滤波过程,滤波过程的所得样本值仅作为解码过程的一部分输出(例如,不用于后续编码)。例如,就视频解码器而言,对于循环中滤波过程,滤波重构块所产生的样本值将用于后续解码(例如,存储到参考缓冲器)并且将被输出(例如,输出到显示器)。对于循环后滤波过程,重构块将用于后续解码,并且滤波重构块所产生的样本值将被输出。
[0081]
解块(或去块)、解块滤波或应用解块滤波器是指平滑化相邻重构视频块的边界(即,使得观察者不易察觉到边界)的过程。平滑化相邻重构视频块的边界可以包括修改被包括在邻近边界的行或列中的样本值。itu-t h.265提供了作为循环中滤波过程的一部分将解块滤波器应用于重构样本值的场景。itu-t h.265包括可以用于修改亮度样本的两种类型的解块滤波器:strong filter(强滤波器),其修改与边界相邻的三行或列中的样本值;weak filter(弱滤波器),其修改与边界紧密相邻的行或列中的样本值并且有条件地修改从边界开始的第二行或列中的样本值。此外,itu-t h.265包括一种类型的可用于修改色度样本的滤波器:普通滤波器。
[0082]
除了作为循环中滤波过程的一部分应用解块滤波器之外,itu-t h.265还提供了可在循环中滤波过程中应用样本自适应偏移(sao)滤波的场景。在itu-t h.265中,sao是通过有条件地添加偏移值来修改区域中的解块样本值的过程。itu-t h.265提供了可应用于ctb的两种类型的sao滤波器:带偏移或边缘偏移。对于带偏移和边缘偏移中的每一者,比特流中包括四个偏移值。对于带偏移,所应用的偏移取决于样本值的振幅(例如,振幅被映射到带,这些带被映射到四个已用信号发送的偏移)。对于边缘偏移,所应用的偏移取决于具有水平、垂直、第一对角线或第二对角线边缘分类中的一者的ctb(例如,分类被映射到四个已用信号发送的偏移)。
[0083]
另一种类型的滤波过程包括所谓的自适应环路滤波器(alf)。在jem中指定了使用基于块的适应的alf。在jem中,在sao滤波器之后应用alf。应当指出的是,可以独立于其他滤波技术将alf应用于重构的样本。在视频编码器处应用在jem中指定的alf的过程可总结如下:(1)用于重构图像的亮度分量的每个2
×
2块根据分类索引进行分类;(2)导出每个分类索引的滤波器系数组;(3)针对亮度分量确定滤波决策;(4)针对色度分量确定滤波决策;以及(5)用信号发送滤波器参数(例如系数和决策)。
[0084]
根据jem中指定的alf,根据分类索引c对每个2
×
2块进行分类,其中c为0至24的包括端值在内的范围内的整数。根据以下公式,c基于其方向性d以及活动性的量化值来导出:
[0085][0086]
其中d和水平方向、垂直方向和两个对角线方向的梯度使用1-d拉普拉斯计算,如下所示:
[0087]
[0088][0089][0090][0091]
其中,索引i和j是指在2
×
2块中的左上角样本的坐标,并且r(i,j)指示坐标为(i,j)的重构样本。
[0092]
水平方向和垂直方向的梯度的最大值和最小值可设定为:
[0093][0094][0095]
并且两个对角线方向的梯度的最大值和最小值可设定为:
[0096][0097][0098]
在jem中,为了导出方向性d的值,将最大值和最小值彼此进行比较并且与两个阈值t1和t2进行比较:
[0099]
步骤1.如果并且两者为真,则将d设定为0。
[0100]
步骤2.如果则从步骤3继续;否则,从步骤4继续。
[0101]
步骤3.如果则将d设定为2;否则,将d设定为1。
[0102]
步骤4.如果则将d设定为4;否则,将d设定为3。
[0103]
在jem中,如下计算活动性值a:
[0104][0105]
其中,a被进一步量化为0至4的包括端值在内的范围,并且量化值表示为
[0106]
如上所述,在视频编码器处应用在jem中指定的alf包括为每个分类索引导出滤波器系数组并确定滤波决策。应当指出的是,滤波器系数组的导出和滤波决策的确定可以是迭代过程。即,可基于滤波决策来更新滤波器系数组,并且可基于更新的滤波器系数组来更新滤波决策,并且这可重复多次。此外,视频编码器可实现各种专用算法以确定滤波器系数组和/或确定滤波决策。无论怎样为每个分类索引导出滤波器系数组以及如何确定滤波决策,本文所述的技术通常都适用。
[0107]
根据一个示例,通过初始为每个分类索引导出一组最佳滤波器系数,来导出滤波器系数组。通过在应用滤波之后将所需的样本值(即,源视频中的样本值)与重构样本值进行比较,并且通过在执行滤波之后将所需的样本值与重构样本值之间的误差平方和(sse)
最小化来导出最佳滤波器系数。然后以将为每个组导出的最佳系数用于对重构样本执行基本滤波,以便分析alf的效果。即,可将所需的样本值、应用alf之前的重构样本值,以及执行alf之后的重构样本值进行比较以确定使用最佳系数应用alf的效果。
[0108]
根据jem中的指定alf,通过根据以下公式确定所得的样本值r'(i,j)来对每个重构的样本r(i,j)滤波,其中在以下公式中,l表示滤波器长度,并且f(k,l)表示经解码的滤波器系数。
[0109][0110]
应当指出的是,jem定义了三种滤波器形状(5
×
5菱形、7
×
7菱形和9
×
9菱形)。应当指出的是,在jem中,几何变换应用于滤波器系数f(k,l),具体取决于梯度值:gv、gh、g
d1
、g
d2
如表1中提供。
[0111]
梯度值变换g
d2
《g
d1
并且gh《gv不变换g
d2
《g
d1
并且gv《gh对角线g
d1
《g
d2
并且gh《gv垂直翻转g
d1
《g
d2
并且gv《gh旋转
[0112]
表1
[0113]
其中对角线、垂直翻转和旋转定义如下:
[0114]
对角线:fd(k,l)=f(l,k),
[0115]
垂直翻转:fv(k,l)=f(k,k-l-1)
[0116]
旋转:fr(k,l)=f(k-l-1,k)
[0117]
其中k为滤波器的大小,并且0≤k,1≤k-1为系数坐标,使得位置(0,0)位于左上角,并且位置(k-1,k-1)位于右下角。
[0118]
jem提供最多可用信号发送25组亮度滤波器系数(即,每个可能的分类索引一个)的场景。因此,可针对在对应图像区域中出现的每个分类索引来用信号发送最佳系数。然而,为了优化用信号发送滤波器系数组与滤波器效果之间的关系所需的数据量,可执行率失真(rd)优化。例如,jem提供了可以使用将一组滤波器系数映射到每个分类索引的阵列将相邻分类组的滤波器系数组合并用信号发送的场景。此外,jem还提供了时间系数预测可用于用信号发送系数的场景。即,jem提供了通过继承用于参考图片的一组滤波器系数来基于参考图片的滤波器系数组预测当前图片的滤波器系数组的场景。jem还提供了对于帧内预测图片,可将一组16个固定滤波器用于预测滤波器系数组的场景。如上所述,滤波器系数组的导出和滤波决策的确定可以是迭代过程。即,例如,可以基于用信号发送了多少组滤波器系数来确定alf的形状,并且类似地,alf是否被应用于图像的区域可基于用信号发送的滤波器系数组和/或滤波器的形状。应当指出的是,对于alf滤波器,每个分量使用来自相应分量的一组样本值作为输入并导出输出样本值。即,alf滤波器独立于另一个分量中的数据应用于每个分量。此外,应当指出的是,jvet-n1001和jvet-o2001指定解块滤波器、sao滤波器和alf滤波器,这些滤波器可被描述为通常基于itu-t h.265和jem中提供的解块滤波器、sao滤波器和alf滤波器。
[0119]
视频采样格式(也可以被称为色度格式)可以相对于cu中包括的亮度样本的数量来定义cu中包括的色度样本的数量。例如,对于4:2:0采样格式,亮度分量的采样率是水平和垂直两个方向的色度分量的采样率的两倍。因此,对于根据4:2:0格式格式化的cu,用于亮度分量的样本阵列的宽度和高度是用于色度分量的每个样本阵列的宽度和高度的两倍。图3是示出根据4:2:0样本格式格式化的编码单元的示例的概念图。图3示出了色度样本相对于cu内的亮度样本的相对位置。如上所述,通常根据水平和垂直亮度样本的数量来定义cu。因此,如图3所示,根据4:2:0样本格式格式化的16
×
16 cu包括亮度分量的16
×
16样本和用于每个色度分量的8
×
8样本。此外,在图3所示的示例中,示出了16
×
16 cu的相邻视频块的色度样本相对于亮度样本的相对位置。对于根据4:2:2格式格式化的cu,亮度分量的样本阵列的宽度是每个色度分量的样本阵列的宽度的两倍,但是亮度分量的样本阵列的高度等于每个色度分量的样本阵列的高度。此外,对于根据4:4:4格式格式化的cu,亮度分量的样本阵列具有与每个色度分量的样本阵列相同的宽度和高度。参考图3,对于亮度样本,紧邻视频块上方的样本线可以被称为参考线0(rl0),并且后续的上述样本线可以分别被称为参考线1(rl1)、参考线2(rl2)和参考线3(rl3)。类似地,可以类似的方式将当前视频块左侧的样本列分类为参考线(即,可以将紧邻视频块左侧的样本线称为参考线0(rl0)。
[0120]
应当指出的是,对于采样格式,例如4:2:0样本格式,可以指定色度位置类型。也就是说,例如对于4:2:0样本格式,可以相对于亮度样本为色度样本指定指示相对空间定位的水平偏移值和垂直偏移值。表2提供了针对jvet-n1001和jvet-o2001中提供的5种色度位置类型的horizontaloffsetc和verticaloffsetc的定义。此外,图4a至图4f示出了jvet-n1001和jvet-o2001中为4:2:0样本格式指定的色度位置类型。
[0121]
chromaloctypehorizontaloffsetcverticaloffsetc000.510.50.520030.5040150.51
[0122]
表2
[0123]
关于本文所用的公式,可以使用以下算术运算符:
[0124]
加法
[0125]
‑ꢀ
减法
[0126]
* 乘法,包括矩阵乘法
[0127]
x
y 求幂。将x指定为y的幂。在其他上下文中,此类符号用于上标而非旨在用于解释为求幂。
[0128]
/ 将结果向着零截断的整数除法。例如,将7/4和-7/-4截断为1,并且将-7/4和7/-4截断为-1。
[0129]
÷ꢀ
在不旨在进行截断或舍入情况下用于表示数学公式中的除法。
[0130] 在不旨在进行截断或舍入情况下用于表示数学公式中的除法。
[0131]
x%y 模量。x除以y的余数,仅针对x≥0且y》0的整数x和y定义。
[0132]
此外,可以使用以下逻辑运算符:
[0133]
x&&y x和y的布尔逻辑“和”[0134]
x||y x和y的布尔逻辑“或”[0135]
!布尔逻辑“否”[0136]
x?y:z如果x为true或不等于0,则求值为y;否则,求值为z。
[0137]
此外,可以使用以下关系运算符:
[0138]
》 大于
[0139]
≥ 大于或等于
[0140]
《 小于
[0141]
≤ 小于或等于
[0142]
== 等于
[0143]
!= 不等于
[0144]
此外,可以使用以下逐位运算符:
[0145]
& 逐位“与”。当对整型变量进行运算时,对整数值的二进制补码表示进行运算。当对包含比另一变量更少位的二进制变量进行运算时,通过添加等于0的更多有效位来扩展较短变量。
[0146]
| 逐位“或”。当对整型变量进行运算时,对整数值的二进制补码表示进行运算。当对包含比另一变量更少位的二进制变量进行运算时,通过添加等于0的更多有效位来扩展较短变量。
[0147]
^ 逐位“异或”。当对整型变量进行运算时,对整数值的二进制补码表示进行运算。当对包含比另一变量更少位的二进制变量进行运算时,通过添加等于0的更多有效位来扩展较短变量。
[0148]
x》》y x乘y二进制数字的二进制补码整数表示的算术右移。该函数仅针对y的非负整数值来定义。由于右移而移位到最高有效位(msb)中的位具有等于移位操作之前的x的msb的值。
[0149]
x《《y x乘y二进制数字的二进制补码整数表示的算术左移。该函数仅针对y的非负整数值来定义。由于左移而移位到最低有效位(lsb)中的位具有等于0的值。
[0150]
此外,可以使用以下赋值运算符:
[0151]
b 赋值运算符
[0152]
递增,即,x 等同于x=x 1;当在阵列索引中使用时,在递增操作之前评估变量的值。
[0153]
‑‑ꢀ
递减,即,x
‑‑
等同于x=x-1;当在阵列索引中使用时,在递减操作之前评估变量的值。
[0154]
= 按指定量递增,即x =3等同于x=x 3,并且x =(-3)等同于x=x (-3)。
[0155]-= 按指定量递减,即x-=3等同于x=x-3,并且x-=(-3)等同于x=x-(-3)。
[0156]
此外,可使用以下定义的数学函数:
[0157]
[0158]
floor(x),小于或等于x的最大整数。
[0159]
log2(x),x的以2为底的对数。
[0160][0161][0162][0163]
图5是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行编码(例如,编码和/或解码)的系统的示例的框图。系统100表示可以根据本公开的一种或多种技术使用所述划分技术执行视频编码的系统的示例。如图5所示,系统100包括源设备102、通信介质110和目标设备120。在图5所示的示例中,源设备102可以包括被配置为对视频数据进行编码并将编码的视频数据传输到通信介质110的任何设备。目标设备120可以包括被配置为经由通信介质110接收编码视频数据并且对编码视频数据进行解码的任何设备。源设备102和/或目标设备120可以包括配备用于进行有线和/或无线通信的计算设备,并且可以包括机顶盒、数字视频录像机、电视机、台式电脑、膝上型电脑或平板电脑、游戏控制台、移动设备包括例如“智能”电话、蜂窝电话、个人游戏设备和医学成像设备。
[0164]
通信介质110可以包括无线和有线通信介质和/或存储设备的任意组合。通信介质110可以包括同轴电缆、光纤电缆、双绞线电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种设备和站点之间的通信的任何其他设备。通信介质110可以包括一个或多个网络。例如,通信介质110可以包括被配置为允许访问万维网例如互联网的网络。网络可以根据一个或多个电信协议的组合操作。电信协议可以包括专有方面并且/或者可以包括标准化电信协议。标准化电信协议的示例包括数字视频广播(dvb)标准、高级电视系统委员会(atsc)标准、综合服务数字广播(isdb)标准、有线数据业务接口规范(docsis)标准、全球移动通信系统(gsm)标准、码分多址(cdma)标准、第3代合作伙伴计划(3gpp)标准、欧洲电信标准协会(etsi)标准、互联网协议(ip)标准、无线应用协议(wap)标准以及电气与电子工程师协会(ieee)标准。
[0165]
存储设备可以包括能够存储数据的任何类型的设备或存储介质。存储介质可以包括有形或非暂态计算机可读介质。计算机可读介质可以包括光盘、闪存存储器、磁存储器或任何其他合适的数字存储介质。在一些示例中,存储器设备或其部分可以被描述为非易失性存储器,并且在其他示例中,存储器设备的部分可以被描述为易失性存储器。易失性存储器的示例可以包括随机存取存储器(ram)、动态随机存取存储器(dram)和静态随机存取存储器(sram)。非易失性存储器的示例可以包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(eprom)或电可擦除和可编程(eeprom)存储器的形式。存储设备可以包括存储卡(例如,安全数字(sd)存储卡)、内部/外部硬盘驱动器和/或内部/外部固态驱动器。数据可以根据定义的文件格式存储在存储设备上。
[0166]
再次参考图5,源设备102包括视频源104、视频编码器106和接口108。视频源104可以包括被配置为捕获和/或存储视频数据的任何设备。例如,视频源104可以包括摄像机和
可操作地与其耦接的存储设备。视频编码器106可以包括被配置为接收视频数据并生成表示视频数据的兼容比特流的任何设备。兼容比特流可以指视频解码器可以从其接收和再现视频数据的比特流。兼容比特流的各方面可根据视频编码标准来定义。当生成兼容比特流时,视频编码器106可以压缩视频数据。压缩可能是有损的(可觉察的或不可觉察的)或无损的。接口108可以包括被配置为接收兼容视频比特流并且将该兼容视频比特流传输和/或存储到通信介质的任何设备。接口108可以包括网络接口卡诸如以太网卡,并且可以包括光收发器、射频收发器或者可以发送和/或接收信息的任何其他类型的设备。此外,接口108可以包括计算机系统接口,该计算机系统接口可以允许兼容视频比特流存储在存储设备上。例如,接口108可以包括支持外围部件互连(pci)和高速外围部件互连(pcie)总线协议、专用总线协议、通用串行总线(usb)协议、i2c的芯片组、或可用于互连对等设备的任何其他逻辑和物理结构。
[0167]
再次参考图5,目标设备120包括接口122、视频解码器124和显示器126。接口122可以包括被配置为从通信介质接收兼容视频比特流的任何设备。接口108可以包括网络接口卡诸如以太网卡,并且可以包括光收发器、射频收发器或者可以接收和/或发送信息的任何其他类型的设备。此外,接口122可以包括允许从存储设备检索兼容视频比特流的计算机系统接口。例如,接口122可以包括支持pci和pcie总线协议、专用总线协议、usb协议、i2c的芯片组,或者可用于互连对等设备的任何其他逻辑和物理结构。视频解码器124可以包括被配置为接收兼容比特流和/或其可接受变体,并且从其再现视频数据的任何设备。显示器126可以包括被配置为显示视频数据的任何设备。显示器126可以包括各种显示设备诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另外的类型的显示器中的一种。显示器126可以包括高清显示器或超高清显示器。应当指出的是,虽然在图5所示的示例中,视频解码器124被描述为将数据输出到显示器126,但视频解码器124可被配置为将视频数据输出到各种类型的设备和/或其子部件。例如,视频解码器124可被配置为将视频数据输出到任何通信介质,如本文所述。
[0168]
图6是示出可实现本文所述的用于对视频数据进行编码的技术的视频编码器200的示例的框图。应当指出的是,尽管示例性视频编码器200被示出为具有不同的功能块,但此类图示旨在用于描述目的,并且不将视频编码器200和/或其子部件限制为特定的硬件或软件架构。可使用硬件、固件和/或软件具体实施的任何组合来实现视频编码器200的功能。在一个示例中,视频编码器200可被配置为根据本文描述的技术对视频数据进行编码。视频编码器200可执行图片区域的帧内预测编码和帧间预测编码,并且因此可被称为混合视频编码器。在图6所示的示例中,视频编码器200接收源视频块。在一些示例中,源视频块可以包括已经根据编码结构划分的图片区域。例如,源视频数据可以包括宏块、ctu、cb、其子分区和/或另外的等效编码单元。在一些示例中,视频编码器200可被配置为执行源视频块的附加细分。应当指出的是,无论在编码之前和/或期间如何划分源视频数据,本文所述的一些技术都可普遍适用于视频编码。在图6所示的示例中,视频编码器200包括求和器202、变换系数生成器204、系数量化单元206、逆量化/变换处理单元208、求和器210、帧内预测处理单元212、帧间预测处理单元214、滤波器单元216和熵编码单元218。
[0169]
如图6所示,视频编码器200接收源视频块并输出比特流。视频编码器200可通过从源视频块中减去预测视频块来生成残差数据。求和器202表示被配置为执行该减法运算的
部件。在一个示例中,视频块的减法发生在像素域中。变换系数生成器204将变换,诸如离散余弦变换(discrete cosine transform,dct)、离散正弦变换(discrete sine transform,dst)或概念上类似的变换,应用到其残差块或子分区(例如,可以将四个8
×
8变换应用于16
×
16残差值阵列)以生成一组残差变换系数。变换系数生成器204可被配置为执行离散三角变换系列中包括的变换的任意和全部组合。如上所述,在itu-t h.265中,tb被限制为以下大小4
×
4、8
×
8、16
×
16和32
×
32。在一个示例中,变换系数生成器204可被配置为根据大小为4
×
4、8
×
8、16
×
16和32
×
32的阵列执行变换。在一个示例中,变换系数生成器204可进一步被配置为根据其他尺寸的阵列执行变换。具体地,在一些情况下,对不同值组成的矩形阵列执行变换可能是有用的。在一个示例中,变换系数生成器204可被配置为根据以下阵列大小来执行变换:2
×
2、2
×
4n、4m
×
2和/或4m
×
4n。在一个示例中,二维(2d)m
×
n逆变换可实现为一维(1d)m点逆变换后再进行1d n点逆变换。在一个示例中,2d逆变换可实现为1d n点垂直变换后再进行1d n点水平变换。在一个示例中,2d逆变换可实现为1d n点水平变换后再进行1d n点垂直变换。变换系数生成器204可将变换系数输出到系数量化单元206。
[0170]
系数量化单元206可被配置为执行变换系数的量化。如上所述,可以通过调整量化参数来修改量化程度。系数量化单元206可以进一步被配置为确定量化参数并且输出qp数据(例如,用于确定量化组大小和/或增量qp值的数据),视频解码器可以使用该qp数据来重构量化参数以在视频解码期间执行逆量化。应当指出的是,在其他示例中,可以使用一个或多个附加或另选的参数来确定量化位阶(例如,缩放因子)。本文所述的技术通常可应用于基于对应于视频数据的某一分量的变换系数的量化位阶,确定对应于视频数据的另一分量的变换系数的量化位阶。
[0171]
再次参见图6,量化的变换系数被输出到逆量化/变换处理单元208。逆量化/变换处理单元208可被配置为应用逆量化和逆变换来生成重构残差数据。如图6所示,在求和器210处,重构残差数据可以被添加到预测视频块。这样,可以重构编码的视频块,并且可以使用所得重构视频块来评估给定的预测、变换和/或量化的编码质量。视频编码器200可被配置为执行多个编码回合(例如,在改变预测、变换参数和量化参数中的一者或多者的同时执行编码)。比特流的率失真或其他系统参数可以基于重构视频块的评估来优化。此外,重构视频块可被存储并用作预测后续块的参考。
[0172]
如上所述,可以使用帧内预测来编码视频块。帧内预测处理单元212可被配置为针对待编码视频块选择帧内预测模式。帧内预测处理单元212可被配置为评估帧和/或其区域并且确定用以对当前块进行编码的帧内预测模式。如图6所示,帧内预测处理单元212将帧内预测数据(例如,语法元素)输出到熵编码单元218和变换系数生成器204。如上所述,对残差数据执行的变换可以取决于模式。如上所述,可能的帧内预测模式可以包括平面预测模式、dc预测模式和角度预测模式。此外,在一些示例中,可以从用于亮度预测模式的帧内预测推断出对色度分量的预测。帧间预测处理单元214可被配置为针对当前视频块执行帧间预测编码。帧间预测处理单元214可被配置为接收源视频块并且计算视频块的pu的运动矢量。运动矢量可以指示当前视频帧内的视频块的pu(或类似的编码结构)相对于参考帧内的预测块的位移。帧间预测编码可以使用一个或多个参考图片。此外,运动预测可以是单向预测(使用一个运动矢量)或双向预测(使用两个运动矢量)。帧间预测处理单元214可被配置为通过计算由例如绝对差之和(sad)、平方差之和(ssd)或其他差值度量确定的像素差来选
择预测块。如上所述,可以根据运动矢量预测来确定和指定运动矢量。如上所述,帧间预测处理单元214可被配置为执行运动矢量预测。帧间预测处理单元214可被配置为使用运动预测数据生成预测块。例如,帧间预测处理单元214可定位帧缓冲器内的预测视频块(图6中未示出)。应当指出的是,帧间预测处理单元214可以进一步被配置为将一个或多个内插滤波器应用于重构残差块,以计算用于运动估计的子整数像素值。帧间预测处理单元214可将所计算的运动矢量的运动预测数据输出到熵编码单元218。如图6所示,帧间预测处理单元214可经由滤波器单元216接收重构的视频块。熵编码单元218接收量化的变换系数和预测语法数据(即帧内预测数据、运动预测数据和qp数据等)。应当指出的是,在一些示例中,系数量化单元206可以在将系数输出到熵编码单元218之前执行对包括量化变换系数的矩阵的扫描。在其他示例中,熵编码单元218可执行扫描。熵编码单元218可以被配置为根据本文所述的技术中的一种或多种技术执行熵编码。熵编码单元218可被配置为输出兼容比特流(即视频解码器可从其接收和再现视频数据的比特流)。
[0173]
再次参考图6,滤波器单元216可被配置为执行如上所述的解块滤波、样本自适应偏移(sao)滤波和/或alf滤波。此外,滤波器单元216可被配置为执行本文所述的用于根据交叉分量相关性来减小重构误差的一种或多种技术。如上所述,对于jem中的alf滤波器,每个分量使用来自相应分量的一组样本值作为输入,并且以独立于其他分量的方式导出输出样本值。按分量来独立第进行滤波可能不太理想,因为视频数据的分量和/或通道之间可能存在可用于使重构误差最小化的相关性。例如,参考图8,图8示出了8
×
8亮度源块和对应的4
×
4色度源块(即,根据4:2:0采样格式)以及对应的重构块和重构误差的示例。如图8所示,这两个源块包括围绕对角线的边缘,这在纹理、形状边缘等的情况下将是典型的。然而,对于重构色度分量,与亮度分量相比,保真性丢失(例如,由于高水平的量化等),并且边缘不会恢复。
[0174]
根据本文的技术,滤波器单元可被配置为从第二颜色通道和/或分量中的信息预测和/或细化第一颜色通道和/或分量中的信息,这可提供第一颜色通道和/或分量的改善的编码效率,因为颜色通道和/或分量的保真性以少量位增加。图7示出了根据本公开的一种或多种技术的可被配置为对视频数据进行编码的交叉分量滤波器单元的示例。如图7所示,交叉分量滤波器单元300包括滤波器确定单元302和样本修改单元304。应当指出的是,交叉分量滤波器单元300示出了可存在于视频编码器中的交叉分量滤波器单元的示例。下文更详细地描述可存在于视频解码器中的对应交叉分量滤波器单元的示例。如图7所示,滤波器确定单元302和样本修改单元304可接收在当前块被编码/解码时可用的编码参数信息(例如,帧内预测模式),并且如图7所示,在视频编码器处的视频块数据可包括:交叉分量源块;交叉分量重构块;交叉分量重构误差;当前分量源块;当前分量重构块;和当前分量重构误差。也就是说,参考图8所示的示例,当要对色度重构块进行滤波时,图8中的所有信息可在交叉分量滤波器单元300处可用。因此,滤波器确定单元302可基于视频数据导出要在色度重构块上使用的滤波器,并且样本修改单元304可根据所导出的滤波器来执行滤波。如图7所示,样本修改单元304可将经修改的重构块输出到参考图片缓冲器(即,作为环路滤波器),并且将经修改的重构块输出到输出端(例如,显示器)。此外,如图7所示,滤波器确定单元302可输出滤波器数据。即,指定所导出的滤波器的滤波器数据可被发信号通知视频解码器。这种信令的示例在下文中进一步详细描述。应当指出的是,相对于图8,可以存在若干种
减少视频编码器处的重构误差的方式,例如,减少量化和/或执行改进的预测技术。此外,在一些情况下,视频编码器可以直接发信号通知重构误差。然而,根据本文技术的交叉分量滤波提供了在减小重构误差的同时发信号通知相对少量的信息的方式。也就是说,例如,本文所述的交叉分量滤波技术可以提供一种方式来减小视频解码器处的重构误差,同时比用于减小重构误差的其他技术更有效。例如,与发信号通知分量的更高保真残差信息相比,发信号通知滤波器数据可能花费更少的位。
[0175]
因此,交叉分量滤波器单元300可通过采用第一颜色分量和一种或多种第二颜色分量作为输入来操作,并且提供增强的第一颜色分量作为输出。应当指出的是,尽管相对于亮度分量、cb分量和cr分量描述了本文的示例,但是本文描述的技术通常适用于其他视频格式(例如,rgb)和其他类型的视频信息,诸如红外、深度、视差或其他特征。
[0176]
以下公式提供了滤波器的模型的示例,该滤波器采用来自多个分量的样本值作为输入并且输出经滤波的样本值fi(x,y),并且因此,在一个示例中,交叉分量滤波器单元300可以基于该公式来实现滤波过程。
[0177][0178]
其中,
[0179]fi
(x,y):
[0180]
是样本位置(x,y)处的分量i的输出;
[0181]si,0
;s
i,1
;和s
i,2
:定义相对于相应分0、1、2中的原点的一组样本值位置;
[0182]
g(x,y,i,0)和h(x,y,i,0),g(x,y,i,1)和h(x,y,i,1),以及g(x,y,i,2)和h(x,y,i,2):基于x、y、i和输入分量确定支持的原点。函数g()、h()还可取决于色度格式、色度位置类型、色域、滤波器形状;
[0183]
c0(x0,y0)、c1(x0,y0)和c2(x0,y0):是每个分量的支持区域的滤波器系数值;
[0184]
i0;i1和i2:是来自每个分量的输入样本值;并且
[0185]ii
(x,y):是在样本位置(x,y)处的分量i在滤波之前的样本值。
[0186]
因此,根据本文的技术,交叉分量滤波器单元300可以被配置为通过基于将其他分量的重构样本值作为输入的导出的滤波函数向当前分量的重构样本值添加细化,来减小当前分量的重构误差。在一个示例中,用作输入的其他分量的重构样本值可被称为滤波器支持。图9a至图9f是示出根据本公开的一种或多种技术的可用于交叉分量滤波的支持样本示例的概念图。在图9a至图9f所示的示例中,对于jvet-n1001和jvet-o2001中提供的4:2:0样本格式色度位置类型中的每一个类型,示出了用于要滤波的色度样本的亮度支持样本。即,可使用5
×
5、5
×
6、6
×
5和/或6
×
6支持样本。应当指出的是,在图9a至图9f的示例中,亮度支持被定义为关于色度样本值对称。应当指出的是,在其他示例中,亮度支持可以在被输入到不依赖于色度位置类型的滤波级之前经历相移,该相移具体取决于色度位置类型。如下面进一步详细描述的,对于每个支持样本,可以确定和发信号通知滤波器系数。在一个示例
中,根据本文的技术,对于视频块中包括的色度样本,用于每个样本的支持的相对位置可以基于样本格式。例如,在一个示例中,根据本文的技术,对于4:2:0样本格式,当视频块中色度位置(xc,yc)处的色度样本对应于原点在亮度位置(x
l
,y
l
)处的支持时,用于该视频块中色度位置(xc m,yc n)处的色度样本的支持的原点可以在亮度位置(xc 2m,yc 2n)处;对于4:2:2样本格式,当视频块中色度位置(xc,yc)处的色度样本对应于原点在亮度位置(x
l
,y
l
)处的支持时,用于该视频块中色度位置(xc m,yc n)处的色度样本的支持的原点可以在亮度位置(xc 2m,yc n)处;并且对于4:4:4样本格式,当视频块中色度位置(xc,yc)处的色度样本对应于原点在亮度位置(x
l
,y
l
)处的支持时,用于该视频块中色度位置(xc m,yc n)处的色度样本的支持的原点可以在亮度位置(xc m,yc n)处。应当指出的是,在该示例中,色度样本位置的偏移对应于支持的原点的亮度位置的偏移,其中这两个偏移之间的比率基于色度格式。
[0187]
在一个示例中,根据本文的技术,交叉分量滤波的应用可以基于包括在滤波器支持区域中的样本的属性。例如,在一个示例中,可以分析支持区域中的亮度样本值,并且可以基于该分析来确定是否应用交叉分量滤波。例如,在一个示例中,可以计算支持区域中样本的方差和/或偏差,并且如果该方差和/或偏差具有某些特征,例如,该区域是平滑的(即,方差小于阈值),则可以不对该区域应用交叉分量滤波。在一个示例中,交叉分量滤波器选择(包括是否应用滤波器以及何时应用滤波器,应用哪种滤波器)可以基于与所评估的色度样本对应的亮度样本的亮度分类滤波器索引。在一个示例中,可以如jvet-o2001中所述导出用于亮度样本的分类滤波器索引。在一个示例中,当确定亮度分类滤波器索引在亮度分类滤波器索引的子集中时,可以不应用交叉分量滤波。如下文进一步详细描述的,局部区域控制标记和/或语法元素的值可用于指示/确定是否针对区域应用交叉分量滤波,以及如果要针对区域应用交叉分量滤波,则应用哪种交叉分量滤波器。在一个示例中,交叉分量滤波的应用可以基于滤波器支持区域中包括的样本的属性和/或局部区域控制标记和/或语法元素的值。也就是说,例如,如何分析亮度支持样本可以基于局部区域控制标记和/或语法元素(例如,如果标记==0,则计算/评估方差,否则计算/评估亮度分类滤波器索引)。此外,在一个示例中,滤波器选择基于语法元素的值和亮度支持样本的属性。例如,语法元素的值为0可以指示未对区域应用交叉分量滤波,语法元素的值为1并且亮度支持的方差大于阈值可以指示应用具有第一滤波器系数组的滤波器,语法元素的值为1并且亮度支持的方差不大于阈值可以指示应用具有第二滤波器系数组的滤波器,语法元素的值为2并且亮度支持的方差大于阈值可以指示应用具有第三滤波器系数组的滤波器,语法元素的值为2并且亮度支持的方差不大于阈值可以指示应用具有第四滤波器系数组的滤波器,等等。
[0188]
2019年6月24日提交的共同转让的美国临时专利申请62/865,933的附录提供了与本文所述的交叉分量滤波器的实现对应的数据集的示例,该专利申请通过引用方式并入本文。也就是说,在附录中,数据集orgblock表示原始32
×
32u分量块的样本值;数据集prefilteringblock表示重构的32
×
32u分量块的样本值;数据集orgerror表示原始32
×
32u分量块与重构的32
×
32u分量块之间的重构误差;数据集bestsupporty表示67
×
68y分量块的样本值,该分量块为滤波重构的32
×
32u分量块提供滤波器支持;数据集bestsupportu表示36
×
36u分量块的样本值,该分量块为滤波重构的32
×
32u分量块提供支持;数据集bestsupportv表示36
×
36uv量块的样本值,该分量块为滤波重构的32
×
32u分量
块提供支持;数据集coeffy表示用于67
×
68y分量支持块的样本值的5
×
6滤波器中的滤波器系数;数据集coeffu表示用于36
×
36u分量支持块的样本值的5
×
5滤波器中的滤波器系数;数据集coeffu表示用于36
×
36v分量支持块的样本值的5
×
5滤波器中的滤波器系数;数据集bestoutput表示经滤波的重构32
×
32u分量块的样本值;数据集besterror表示原始32
×
32u分量块与经滤波的重构32
×
32u分量块之间的误差;数据集signedimprovement等于abs(orgerror)-abs(besterror),并且表示由滤波产生的重构误差的变化;并且数据集positive improve表示重构误差由于滤波而减小的重构样本值。因此,根据本文的技术,可通过应用交叉分量滤波器来减小一个或多个或大部分样本的重构误差。应当指出的是,对于特定类型的视频内容,根据数学关系改善的重构误差的量可具有基于如何改善视频的感知视觉质量的不同结果。即,例如,相对小的signedimprovement值可导致视觉质量的相对显著的改善。
[0189]
如上所述,交叉分量滤波器单元300通常可通过采用第一颜色分量和一种或多种第二颜色分量作为输入来操作,并且提供增强的第一颜色分量作为输出。也就是说,由交叉分量滤波器单元300执行的滤波过程可以采用输入亮度样本值作为输入亮度样本值,该输入亮度样本值可以用于预测原始相应色度样本值之间的差值和基于该预测来输出细化的色度样本值。再次参考图8所示的示例,图10是示出根据本公开的一种或多种技术的使用交叉分量滤波来减小重构误差的示例的概念图。图10提供了一个示例,其中通过以下操作来减小重构误差:采用支持样本的平均值,并且如果该平均值大于90,则将平均值除以10加到重构样本;并且如果该平均值不大于90,则从重构样本减去平均值除以10。也就是说,在该示例中,预测滤波器通常被描述为:如果支持平均值大于threshold1,则将加上weight1乘以支持平均值;否则,加上weight2乘以支持平均值。如图10所示的示例所示,后滤波色度重构误差提供重构误差减小。因此,根据本文的技术,交叉分量滤波可以根据按照逻辑函数、阈值、权重等定义的交叉分量滤波器来减小重构误差。
[0190]
如上所述,jvet-n1001和jvet-o2001包括解块滤波器、sao滤波器和alf滤波器,本文所述的交叉分量滤波器技术可以作为滤波器链中的各个点来执行。即,例如,在环路滤波的各个级执行。图11a至图11d是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。在图11a至图11d中,亮度sao滤波器单元402表示被配置为对亮度样本值y执行sao滤波(例如,jvet-n1001或jvet-o2001中提供的sao滤波)的滤波单元;cb sao滤波器单元404表示被配置为对色度cb样本值执行sao滤波(例如,jvet-n1001或jvet-o2001中提供的sao滤波)的滤波单元;cb sao滤波器单元406表示被配置为对cb样本值执行sao滤波(例如,jvet-n1001或jvet-o2001中提供的sao滤波)的滤波单元;亮度alf滤波器单元408表示被配置为对亮度样本值y执行alf滤波(例如,jvet-n1001或jvet-o2001中提供的alf滤波)的滤波单元;色度alf滤波器单元410表示被配置为对色度样本值执行alf滤波(例如,jvet-n1001或jvet-o2001中提供的alf滤波)的滤波单元;亮度解块滤波器单元416表示被配置为对亮度样本值y执行解块滤波(例如,jvet-n1001或jvet-o2001中提供的解块滤波)的滤波单元;cb解块滤波器单元418表示被配置为对cb样本值执行解块滤波(例如,jvet-n1001或jvet-o2001中提供的解块滤波)的滤波单元;并且cr解块滤波器单元420表示被配置为对cr样本值执行解块滤波(例如,jvet-n1001或jvet-o2001中提供的解块滤波)的滤波单元。此外,在图11a至图11d中,cb交叉分量滤波器单元412表示被
配置为根据本文所述的技术中的一种或多种生成cb细化δcb的交叉分量滤波器的示例;并且cr交叉分量滤波器单元414表示被配置为根据本文所述的技术中的一种或多种生成cr细化δcr的交叉分量滤波器的示例。因此,如图11a至图11d所示,根据本文的技术的交叉分量滤波可以应用为滤波链中的各个点。即,可在滤波链中的各个点处接收交叉分量滤波输入,并且可在滤波链中的各个点处输出交叉分量滤波细化。应当指出的是,在图11b所示的示例中,亮度解块的输入用作滤波的输入,这可具有降低线缓冲器要求的优点。应当指出的是,在图11c所示的示例中,亮度解块的输出用作滤波的输入,这可具有降低线缓冲器要求、同时略微提高编码效率的优点。应当指出的是,在图11d所示的示例中,alf亮度的输出用作滤波的输入,这可具有改善的编码效率的优点。
[0191]
此外,本文所述的交叉分量滤波器技术还可包括在滤波器链中的各个点处执行削波操作。即,例如,在环路滤波器的各个级执行。图12a至图12b是示出根据本公开的一种或多种技术的可被配置为减小重构误差的交叉分量滤波器单元示例的框图。在图12a至图12b中,共同编号的元件在上文中相对于图11a至图11b描述过,并且削波单元422a至422d可被配置为执行基于相应分量的输出位深度的削波函数,例如clip3(0,2
bitdepthc-1,*)。应当指出的是,可基于是否执行特定类型的滤波来选择性地启用削波单元422a至422d。
[0192]
图13a至图13b是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。图13a至图13b进一步示出了根据本文技术的交叉分量滤波可以应用于滤波链中的各个点。在图13a至图13c中,共同编号的元件如上所述。
[0193]
此外,应当指出的是,在一些情况下,可能存在超过3个视频数据分量,例如,yuv 深度。本文所述的交叉分量滤波技术通常可适用于这些情况。在一些情况下,可在滤波操作之前执行对来自每个分量的输入样本值的预处理。例如,可以对输入样本值进行削波。此外,在一个示例中,削波范围可以针对每个系数而变化,并且可以在比特流中发信号通知。应当指出的是,在一些示例中,以下公式提供了用于预处理输入样本值的选项:
[0194]
ij(g(x,y,ij) xj,h(x,y,i,f) yj)
[0195]
=min(a,max(b,i'j(g(x,y,i,j) xj,h(x,y,i,j) yj)-derivedvalue))
[0196]
此外,用于预处理输入样本值的另一选项可以如下:
[0197]
ij(g(x,y,i,j) xj,h(x,y,i,j) yj)
[0198]
=derivedvalue min(a,max(b,i’j
(g(x,y,i,j) xj,h(x,y,i,j) yj)-derlvedvalue))
[0199]
其中,
[0200]
i’j
(u,v):处理之前位置(u,v)处的样本值
[0201]
derivedvalue:是从i’j
(*,*)中的值的子集导出的值,例如原点处为(a)ij(g(x,y,i,j) 0,h(x,y,i,j) 0),原点周围为(b)
[0202]
a:是在比特流中接收的值/从在比特流中接收的数据推断的值/从i’j
(*,*)中的值的子集导出的值;并且
[0203]
b:是在比特流中接收的值/从在比特流中接收的数据推断的值/从i’j
(*,*)中的值的子集导出的值
[0204]
在一个示例中,b可从a导出(例如,b=-a),以减少所需的信令量。
[0205]
此外,在一个示例中,在交叉分量滤波器操作中使用的输入的一般化可以如下:
[0206][0207]
其中,
[0208]gn
()是用于组合来自分量的样本值并获得对应于具有索引(x
cj
,y
cj
)的每个系数值的推导值的函数。函数gi()可取决于色度格式、色度位置类型、色域、滤波器形状
[0209]
在一个示例中,可以根据以下各项来执行交叉分量滤波:定义亮度的支持区域;对于4:2:0,以2x色度分量进行上采样以用作输入;从用于对应的色度分量的支持中减去导出的值(例如,对于10位色度为512,或局部平均值);然后取对应于所定义的支持区域的亮度样本值和色度样本值的采样乘积;以及使用该乘积作为滤波操作的输入之一。
[0210]
此外,应当指出的是,在一些示例中,本文描述的交叉分量滤波技术可以对预测或残差执行。在一个示例中,如果使用域编码而不是渐进式编码,则对于亮度支持样本:在一个示例中,可以使用来自对应的亮度域中的一个的样本值,并且在另一个示例中,可以使用来自两个亮度域的样本值。
[0211]
如上所述,对于每个支持样本,可确定滤波器系数并发信号通知该滤波器系数。也就是说,例如,可以发信号通知5
×
5、5
×
6、6
×
6和/或6
×
6滤波器系数。图14a至图14c示出了发信号通知用于5
×
5滤波器的滤波器系数的示例。图14d至图14f示出了发信号通知用于5
×
6(并且类似地,6
×
5)滤波器的滤波器系数的示例。图15a至图15d示出了发信号通知用于6
×
6滤波器的滤波器系数的示例。在图14a至图15d的每个图中,滤波器的相应滤波器系数由cn指示。因此,在向相同cn值提供相同滤波器的多个位置的情况下,滤波器系数是相同的,即共享的。这样,减少了为滤波器发信号通知的滤波器系数的数量。例如,在图14d中,针对18个支持位置发信号通知14个滤波器系数。
[0212]
在一个示例中,可能期望限制逐ctu处理样本的架构内的线缓冲器的数量。也就是说,例如,虚拟线边界为每个ctu提供了在较低ctu进入之前可处理水平vb上方的样本的位置,但是在较低ctu变得可用之前,水平vb下方的样本无法处理。jvet-n1001和jvet-o2001为亮度alf和亮度sao定义了水平虚拟线边界(vb)。根据本文的技术,该vb可重复用于本文
定义的亮度输入-色度输出滤波器。此外,度直vb可重复用于本文定义的垂亮输入-色度输出滤波器,并且/或者vb的子集可重复用于本文定义的亮度输入-色度输出滤波器。此外,存在定义的两种情况,可针对这两种情况导出/修改亮度分量中的支持样本:当预先确定的亮度样本(对应于例如基于色度位置类型解码的色度样本)高于vb并且支持跨越vb时;以及当预先确定的亮度样本(对应于例如基于色度位置类型解码的色度样本)低于vb并且支持跨越vb时。在一个示例中,预先确定的样本是在对应于图14d所示的5
×
6亮度支持的系数c6的位置处的样本。图16a至图16d是示出根据本公开的一种或多种技术的可用于交叉分量滤波的虚拟线缓冲器示例的概念图。在图16a中,通过在虚拟线边界上方且最靠近虚拟线边界而且在同一列中复制样本来获得水平vb下方的样本。在图16b中,通过在虚拟线边界下方且最靠近虚拟线边界而且在同一列中复制样本来获得水平vb下方的样本。在一个示例中,亮度vb是来自水平ctu边界的四个样本。在一个示例中,每个ctu、sao和alf可以在右ctu进入之前在垂直vb的左侧处理样本,但是不能在右ctu可用之前在垂直vb的右侧处理样本。当支持跨越垂直虚拟边界(vb)时的示例性修改在图16c至图16d中示出。在图16c中,通过将样本向左且最靠近虚拟线边界且在同一行中复制来获得垂直vb右侧的样本。在图16d中,通过将样本向右且最靠近虚拟线边界且在同一行中复制来获得垂直vb左侧的样本。在一个示例中,亮度vb是来自垂直ctu边界的四个样本。在一个示例中,根据本文的技术,相对于生成用于水平vb的样本,可以考虑穿过支持区域的中心的垂直轴线和水平轴线。可通过将与垂直轴线相距相同距离但在垂直轴线的相对侧上的样本复制在一列中来获得所复制的样本。在一个示例中,所复制的样本可从与水平轴线相距相同距离但在相对侧上的行复制。在一个示例中,根据本文的技术,相对于生成用于垂直vb的样本,可以考虑穿过支持区域的中心的垂直轴线和水平轴线。可通过将与垂直轴线相距相同距离但在水平轴线的相对侧上的样本复制在一行中来获得所复制的样本。在一个示例中,所复制的样本可从与垂直轴线相距相同距离但在相对侧上的列复制。在一个示例中,根据本文的技术,相对于生成用于vb的样本,可以通过对称填充来获得样本。也就是说,相对于水平vb,可以从同一列以距vb相同的样本距离并相对于垂直vb复制样本,可以从同一行以距vb相同的样本距离复制样本。即,样本值关于vb镜像。应当指出的是,jvet-o2001的第8.8.5.2节“用于亮度样本的编码树块滤波过程”提供了用于跨虚拟边界的亮度样本的填充方案,以用于相对于alf过程使用。在一个示例中,根据本文的技术,对于交叉分量滤波,可以使用类似的填充方案。在一个示例中,根据本文的技术,当一个或多个支持样本不可用时,例如由于vb,可以禁用交叉分量滤波。
[0213]
在一个示例中,根据本文的技术,交叉分量滤波包括在将输出添加到对应的色度alf输出之前缩放交叉分量滤波的输出。即,缩放操作可用于将滤波器系数转换为整数,例如如下:
[0214]
[0215]
其中,在一个示例中,factor=2
bitdepthc
,在另一个示例中,factor=2
(bitdepthc-1)
),在另一个示例中,factor=2
(8-1)
[0216]
在一个示例中,缩放因子可用于如下调整交叉分量滤波的输出:
[0217][0218]
应当指出的是,如果factor=2
x
,则这对应于右移位整数舍入(fi(x,y) 2
(x-1)
)》》x
[0219]
如上所述,指定所导出的滤波器的滤波器数据可被发信号通知视频解码器。在一个示例中,发信号通知滤波器数据可存在三个主要方面:打开/关闭滤波器;工具的局部控制,例如,在一些空间区域中而不是在其他空间区域中启用工具;以及特定滤波器的信令。在一个示例中,参数集(例如序列参数集)可有条件地包括启用/禁用滤波器的标记。在一个示例中,该标记可指示是否启用了一个或多个滤波器,例如alf滤波器和交叉分量滤波器。
[0220]
在一个示例中,可以使用滤波器系数的切片级信令。表3至表5示出了可包括在用于发信号通知滤波器系数的切片标头中的语法的示例。应当指出的是,在表3中,对于语法元素lice_cross_component_alf_cb_log2_control_size_minus4和slice_cross_component_alf_cr_log2_control_size_minus4,在一个示例中,可以使用截断的一元编码来代替ue(v),其中截断的一元的最大值基于有效范围。
[0221][0222]
表3
[0223][0224]
表4
[0225][0226]
表5
[0227]
对于表3至表5,在一个示例中,语义可以基于以下内容:
[0228]
slice_cross_component_alf_cb_enabled_flag等于0指定不将交叉分量自适应环路滤波器应用于cb颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量自适应环路滤波器应用于cb颜色分量。
[0229]
slice_cross_component_alf_cr_enabled_flag等于0指定不将交叉分量自适应环路滤波器应用于cr颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量自适应环路滤波器应用于cr颜色分量。
[0230]
slice_cross_component_alf_cb_log2_control_size_minus4如下指定以样本数量为单位的正方形块大小的值:
[0231]
alfccsamplescbw=alfccsamplescbh=2
(slice_cross_component_alf_cb_log2_control_size_minus4 4)
slice_cross_component_alf_cb_log2_control_size_minus4应在0至3的范围内(包括端值)。
[0232]
slice_cross_component_alf_cr_log2_coiitrol_size_minus4如下指定以样本
数量为单位的正方形块大小的值:
[0233]
alfccsamplescrw=alfccsamplescrh=2
(slice_cross_component_alf_cr_log2_control_size_minus4 4)
slice_cross_component_alf_cr_log2_control_size_minus4应在0至3的范围内(包括端值)。
[0234]
应当指出的是,在一个示例中,slice_cross_component_alf_cb_log2_control_size_minus4和/或slice_cross_component_alf_cr_log2_control_size_minus4的方位可在参数集例如sps中定义。在一个示例中,minusx编码取决于为有效范围定义的最小值,例如,如果有效范围为2至5,则x=2。
[0235]
在一个示例中,可在sps中发信号通知或从ctu大小导出(例如,与色度样本中的ctu大小相同)slice_cross_component_alf_cb_log2_control_size_minus4和/或slice_cross_component_alf_cr_log2_control_size_minus4。
[0236]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量cb滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器组。
[0237]
alf_cross_component_cb_min_eg_order_minus1加1指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1的值应在0至9的范围内(包括端值)。应当指出的是,在一些示例中,该范围可改变。
[0238]
alf_cross_component_cb_eg_order_increase_flag[i]等于1指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数递增1。alf_cross_component_cb_eg_order_increase_flag[i]等于0指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数不递增1。
[0239]
用于解码alf_cross_component_cb_coeff_delta_abs[j]的值的指数golomb代码的阶数expgoordercb[i]如下导出:
[0240]
expgoordercb[i]=(i==0?alf_cross_component_cb_min_eg_order_minus1 1:expgoordercb[i-1]) air_cross_component_cb_eg_order_increase_flag[i]
[0241]
alf_cross_component_cb_coeff_delta_abs[j]指定发信号通知的交叉分量cb滤波器的第j个系数delta的绝对值。当alf_luma_cross_component_cb_coeff_delta_abs[j]不存在时,推断其等于0。
[0242]
指数golomb二值化uek(v)的阶数k如下导出:
[0243]
golomborderidxcb[]={0,2,2,2,1,2,2,2,2,2,2,1,2,1}
[0244]
k=expgoordercb[golomborderidxcb[j]]
[0245]
alf_cross_component_cb_coeff_sign[j]如下指定第j个交叉分量cb滤波器系数的符号:
[0246]-如果alf_cross_component_cb_coeff sign[j]等于0,则对应的色度滤波器系数具有正值。
[0247]-否则(alf_cross_component_cb_coeff_sign[j]等于1),对应的色度滤波器系数具有负值。
[0248]
当alf_cross_component_cb_coeff_sign[j]不存在时,推断其等于0。
[0249]
具有元素alfcccoeff
cb
[j],j=0..13的交叉分量cb滤波器系数alfcccoeff
cb
如下
导出:
[0250]
alfcccoeff
cb
[j]=alf_cross_component_cb_coeff_abs[j]*
[0251]
(1-2*alf_cross_component_cb_coeff_sign[j])
[0252]
比特流符合性要求alfcccoeff
cb
[j],j=0..13的值应在-2
10-1至2
10-1的范围内(包括端值)。应当指出的是,在一些示例中,该范围可以取决于亮度/色度或其子集的位深度。
[0253]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量cr滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cr滤波器组。
[0254]
alf_cross_component_cr_min_eg_order_minus1加1指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1的值应在0至9的范围内(包括端值)。应当指出的是,在一些示例中,该范围可改变。
[0255]
alf_cross_component_cr_eg_order_increase_flag[i]等于1指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数递增1。alf_cross_component_cr_eg_order_increase_flag[i]等于0指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数不递增1。
[0256]
用于解码alf_cross_component_cb_coeff_delta_abs[j]的值的指数golomb代码的阶数expgoordercr[i]如下导出:
[0257]
expgoordercr[i]=(i==0?alf_cross_component_cr_mm_eg_order_minus1 1:expgoordercr[i-1]) alf_cross_component_cr_eg_order_increase_flag[i]
[0258]
alf_cross_component_cr_coeff_delta_abs[j]指定发信号通知的交叉分量cr滤波器的第j个系数delta的绝对值。当alf_luma_cross_component_cr_coeff_delta_abs[j]不存在时,推断其等于0。
[0259]
指数golomb二值化uek(v)的阶数k如下导出:
[0260]
golomborderidxcr[]={0,1,2,1,0,1,2,2,2,2,2,1,2,1}
[0261]
k=expgoordercr[golomborderidxcr[j]]
[0262]
alf_cross_component_cr_coeff_sign[j]如下指定第j个交叉分量cr滤波器系数的符号:
[0263]-如果alf_cross_component_cr_coeff_sign[j]等于0,则对应的色度滤波器系数具有正值。
[0264]-否则(alf_cross_component_cr_coeff_sign[j]等于1),对应的色度滤波器系数具有负值。
[0265]
当alf_cross_component_cr_coeff_sign[j]不存在时,推断其等于0。
[0266]
具有元素alfcccoeff
cr
[j],j=0..13的交叉分量cr滤波器系数alfcccoeff
cr
如下导出:
[0267]
alfcccoeff
cr
[j]=alf_cross_component_cr_coeff_abs[j]*
[0268]
(1-2*alf_cross_component_cr_coeff_sign[j])
[0269]
比特流符合性要求alfcccoeff
cr
[j],j=0..13的值应在-2
10-1至2
10-1的范围内(包括端值)。应当指出的是,在一些示例中,该范围可以取决于亮度/色度或其子集的位深
度。
[0270]
在另一个示例中,可在切片标头中发送指向包含对应的滤波器系数数据的aps的一个或多个指针。表6至表7示出了根据该示例的可包括在用于发信号通知滤波器系数的切片标头中的语法示例。
[0271][0272]
表6
[0273]
[0274][0275]
表7
[0276]
对于表6至表7,在一个示例中,语义可以基于以下内容:
[0277]
slice_cross_component_alf_cb_enabled_flag等于0指定不将交叉分量cb滤波器应用于cb颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量自适应环路滤波器应用于cb颜色分量。
[0278]
slice_cross_component_alf_cr_enabled_flag等于0指定不将交叉分量cr滤波器应用于cr颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量自适应环路滤波器应用于cr颜色分量。
[0279]
slice_cross_component_alf_cb_aps_id指定切片的cb颜色分量所标引的adaptation_parameter_set_id。当slice_cross_component_alf_cb_aps_id不存在时,推断其等于slice_alf_aps_id_luma[0]。具有等于slice_cross_component_alf_cb_aps_id的adaptation_parameter_set_id的alf aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0280]
slice_cross_component_alf_cr_aps_id指定切片的cr颜色分量所标引的adaptation_parameter_set_id。当slice_cros_component_alf_cr_aps_id不存在时,推断其等于slice_alf_aps_id_luma[0]。具有等于slice_cross_component_alf_cr_aps_id的alf aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0281]
slice_cross_component_alf_cb_log2_control_size_minus4如下指定以样本数量为单位的正方形块大小的值:
[0282]
alfccsamplescbw=alfccsamplescbh=2
(slice_cross_component_alf_cb_log2_control_size_minus4 4)
[0283]
slice_cross_component_alf_cb_log2_control_size_minus4应在0至3的范围内(包括端值)。
[0284]
slice_cross_component_alf_cr_log2_control_size_minus4如下指定以样本数量为单位的正方形块大小的值:
[0285]
alfccsamplescrw=alfccsamplescrh=2
(slice_cross_component_alf_cr_log2_control_size_minus4 4)
slice_cross_component_alf_cr_log2_control_
size_minus4应在0至3的范围内(包括端值)。
[0286]
alf_luma_filter_signal_flag等于1指定发信号通知亮度滤波器组。alf_luma_filter_signal_flag等于0指定不发信号通知亮度滤波器组。当alf_luma_filter_signal_flag不存在时,推断其等于0。
[0287]
alf_chroma_filter_signal_flag等于1指定发信号通知色度滤波器。alf_chroma_filter_signal_flag等于0指定不发信号通知色度滤波器。当alf_chroma_filter_signal_flag不存在时,推断其等于0。
[0288]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量交叉分量cb滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器组。当alf_cross_component_cb_filter_signal_flag不存在时,推断其等于0。
[0289]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量交叉分量cr滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cr滤波器组。当alf_cross_component_cr_filter_signal_flag不存在时,推断其等于0。
[0290]
alf_cross_component_cb_min_eg_order_minus1加1指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1的值应在0至9的范围内(包括端值)。应当指出的是,在一些示例中,该范围可改变。
[0291]
alf_cross_component_cr_min_eg_order_minus1加1指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1的值应在0至9的范围内(包括端值)。应当指出的是,在一些示例中,该范围可改变。
[0292]
alf_cross_component_cb_eg_order_increase_flag[i]等于1指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数递增1。alf_cross_component_cb_eg_order_increase_flag[i]等于0指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数不递增1。
[0293]
用于解码alf_cross_component_cb_coeff_delta_abs[j]的值的指数golomb代码的阶数expgoordercb[i]如下导出:
[0294]
expgoordercb[i]=(i==0?alf_cross_component_cb_min_eg_order_minus1 1:
[0295]
expgoordercb[i-1]) alf_cross_component_cb_eg_order_increase_flag[i]
[0296]
alf_cross_component_cr_eg_order_increase_flag[i]等于1指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数递增1。alf_cross_component_cr_eg_order_increase_flag[i]等于0指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数不递增1。
[0297]
用于解码alf_cross_component_cb_coeff_delta_abs[j]的值的指数golomb代码的阶数expgoordercr[i]如下导出:
[0298]
expgoordercr[i]=(i==0?alf_cross_component_cr_min_eg_order_minus1 1:
[0299]
expgoordercr[i-1]) alf_cross_component_cr_eg_order_increase_flag[i]
[0300]
alf_cross_component_cb_coeff_delta_abs[j]指定发信号通知的交叉分量cb滤波器的第j个系数delta的绝对值。当alf_luma_cross_component_cb_coeff_delta_abs[j]不存在时,推断其等于0。
[0301]
指数golomb二值化uek(v)的阶数k如下导出:
[0302]
golomborderidxcb[]={0,2,2,2,1,2,2,2,2,2,2,1,2,1}[这些可以将系数分类为3个类别,每个类别使用相同的k阶指数golomb代码]
[0303]
k=expgoordercb[golomborderidxcb[j]]
[0304]
alf_cross_component_cr_coeff_delta_abs[j]指定发信号通知的交叉分量cr滤波器的第j个系数delta的绝对值。当alf_luma_cross_component_cr_coeff_delta_abs[j]不存在时,推断其等于0。
[0305]
指数golomb二值化uek(v)的阶数k如下导出:
[0306]
golomborderidxcr[]={0,1,2,1,0,1,2,2,2,2,2,1,2,1}[这些可以将系数分类为3个类别,每个类别使用相同的k阶指数golomb代码]
[0307]
k=expgoordercr[golomborderidxcr[j]]
[0308]
alf_cross_component_cb_coeff_sign[j]如下指定第j个交叉分量cb滤波器系数的符号:
[0309]-如果alf_cross_component_cb_coeff_sign[j]等于0,则对应的交叉分量cb滤波器系数具有正值。
[0310]-否则(alf_cross_component_cb_coeff_sign[j]等于1),对应的交叉分量cb滤波器系数具有负值。
[0311]
当alf_cross_component_cb_coeff_sign[j]不存在时,推断其等于0。
[0312]
具有元素alfcccoeff
cb
[adaptation_parameter_set_id][j],j=0..13的交叉分量cb滤波器系数alfcccoeff
cb
[adaptation_parameter_set_id]如下导出:
[0313]
alfcccoeff
cb
[adaptation_parameter_set_id][j]=alf_cross_component_cb_coeff_abs[j]*(1-2*alf_cross_component_cb_coeff_sign[j])
[0314]
比特流符合性要求alfcccoeff
cb
[adaptation_parameter_set_id][j]with j=0..13的值应在-2
10-1至2
10-1的范围内(包括端值)。
[0315]
alf_cross_component_cr_coeff_sign[j]如下指定第j个交叉分量cr滤波器系数的符号:
[0316]-如果alf_cross_component_cr_coeff_sign[j]等于0,则对应的交叉分量cr滤波器系数具有正值。
[0317]-否则(alf_cross_component_cr_coeff_sign[j]等于1),对应的交叉分量cr滤波器系数具有负值。
[0318]
当alf_cross_component_cr_coeff_sign[j]不存在时,推断其等于0。
[0319]
具有元素alfcccoeff
cr
[adaptation_parameter_set_id][j],j=0..13的交叉分量cr滤波器系数alfcccoeff
cr
[adaptation_parameter_set_id]如下导出:
[0320]
alfcccoeff
cr
[adaptation_parameter_set_id][j]=alf_cross_component_cr_coeff_abs[j]*
[0321]
(1-2*alf_cross_component_cr_coeff_sign[j])
[0322]
比特流符合性要求alfcccoeff
cr
[adaptation_parameter_set_id][j],j=0..13的值应在-2
10-1至2
10-1的范围内(包括端值)。
[0323]
应当指出的是,-2
10-1至2
10-1的范围可改变。应当指出的是,在一些示例中,该范围可以取决于亮度/色度或其子集的位深度。
[0324]
对于表6,在一个示例中,可以使用表8a中提供的alf_data()语法结构。
[0325]
[0326][0327]
表8a
[0328]
对于表8a,在一个示例中,语义可以基于以下内容:
[0329]
alf_luma_filter_signal_flag等于1指定发信号通知亮度滤波器组。alf_luma_filter_signal_flag等于0指定不发信号通知亮度滤波器组。当alf_luma_filter_signal_flag不存在时,推断其等于0。
[0330]
alf_chroma_filter_signal_flag等于1指定发信号通知色度滤波器。alf_chroma_filter_signal_flag等于0指定不发信号通知色度滤波器。当alf_chroma_filter_signal_flag不存在时,推断其等于0。
[0331]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量cb滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器组。当alf_cross_component_cb_filter_signal_flag不存在时,推断其等于0。
[0332]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量cr滤波器组。alf_cross_component_cr_filter_signal_flag等于0指定不发信号通知交叉分量cr滤波器组。当alf_cross_component_cr_filter_signal_flag不存在时,推断其等于0。
[0333]
alf_cross_component_cb_min_eg_order_minus1加1指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1的值应在0至9的范围内(包括端值)。应当指出的是,在一些示例中,该范围可改变。
[0334]
alf_cross_component_cr_min_eg_order_minus1加1指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1的值应在0至9的范围内(包括端值)。应当指出的是,在一些示例中,该范围可改变。
[0335]
alf_cross_component_cb_eg_order_increase_flag[i]等于1指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数递增1。alf_cross_component_cb_eg_order_increase_flag[i]等于0指定用于交叉分量cb滤波器系数信令的指数golomb代码的最小阶数不递增1。
[0336]
用于解码alf_cross_component_cb_coeff_abs[j]的值的指数golomb代码的阶数expgoordercb[i]如下导出:
[0337]
expgoordercb[i]=(i==0?alf_cross_component_cb_min_eg_order_minus1 1:
[0338]
expgoordercb[i-1]) alf_cross_component_cb_eg_order_increase_flag|i]
[0339]
在一个示例中,可以使用对应于用于交叉分量cb滤波器系数信令的指数golomb代
码的最小阶数的预先确定的值。
[0340]
在一个示例中,可以在比特流中发信号通知对应于用于所有cb滤波器系数的交叉分量的指数golomb代码的最小阶数的单个值。
[0341]
alf_cross_component_cr_eg_order_increase_flag[i]等于1指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数递增1。alf_cross_component_cr_eg_order_increase_flag[i]等于0指定用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数不递增1。
[0342]
用于解码alf_cross_component_cb_coeff_abs[j]的值的指数golomb代码的阶数expgoordercr[i]如下导出:
[0343]
expgoordercr[i]=(i==0?alf_cross_component_cr_min_eg_order_minus1 1:
[0344]
expgoordercr[i-1]) alf_cross_component_cr_eg_order_increase_flag[i]
[0345]
在一个示例中,使用对应于用于交叉分量cr滤波器系数信令的指数golomb代码的最小阶数的预先确定的值。
[0346]
在一个示例中,在比特流中发信号通知对应于用于所有cr滤波器系数的交叉分量的指数golomb代码的最小阶数的单个值。
[0347]
alf_cross_component_cb_coeff_abs[j]指定发信号通知的交叉分量cb滤波器的第j个系数的绝对值。当alf_cross_component_cb_coeff_abs[j]不存在时,推断其等于0。
[0348]
指数golomb二值化uek(v)的阶数k如下导出:
[0349]
golomborderidxcb[]={0,2,2,2,1,2,2,2,2,2,2,1,2,1}[这些可以将系数分类为3个类别,每个类别使用相同的k阶指数golomb代码]
[0350]
k=expgoordercb[golomborderidxcb[j]]
[0351]
在一个示例中,ue(v)编码可用于发信号通知语法元素alf_cross_component_cb_coeff_abs[j]的值。
[0352]
alf_cross_component_cr_coeff_abs[j]指定发信号通知的交叉分量cr滤波器的第j个系数的绝对值。当alf_cross_component_cr_coeff_abs[j]不存在时,推断其等于0。
[0353]
指数golomb二值化uek(v)的阶数k如下导出:
[0354]
golomborderidxcr[]={0,1,2,1,0,1,2,2,2,2,2,1,2,1}[这些可以将系数分类为3个类别,每个类别使用相同的k阶指数golomb代码]
[0355]
k=expgoordercr[golomborderidxcr[j]]
[0356]
在一个示例中,ue(v)编码用于发信号通知语法元素alf_cross_component_cr_coeff_abs[j]的值。
[0357]
alf_cross_component_cb_coeff_sign[j]如下指定第j个交叉分量cb滤波器系数的符号:
[0358]-如果alf_cross_component_cb_coeff_sign[j]等于0,则对应的交叉分量cb滤波器系数具有正值。
[0359]-否则(alf_cross_component_cb_coeff_sign[j]等于1),对应的交叉分量cb滤波器系数具有负值。
[0360]
当alf_cross_component_cb_coeff_sign[j]不存在时,推断其等于0。
[0361]
具有元素alfcccoeff
cb
[adaptation_parameter_set_id][j],j=0..13的交叉分量cb滤波器系数alfcccoeff
cb
[adaptation_parameter_set_id]如下导出:
[0362]
alfcccoeff
cb
[adaptation_parameter_set_id][j]=alf_cross_component_cb_coeff_abs[j]*(1-2*alf_cross_component_cb_coeff_sign[j])
[0363]
比特流符合性要求alfcccoeff
cb
[adaptation_parameter_set_id][j],j=0..13的值应在-2
10-1至2
10-1的范围内(包括端值)。
[0364]
alf_cross_component_cr_coeff_sign[j]如下指定第j个交叉分量cr滤波器系数的符号:
[0365]-如果alf_cross_component_cr_coeff_sign[j]等于0,则对应的交叉分量cr滤波器系数具有正值。
[0366]-否则(alf_cross_component_cr_coeff_sign[j]等于1),对应的交叉分量cr滤波器系数具有负值。
[0367]
当alf_cross_component_cr_coeff_sign[j]不存在时,推断其等于0。
[0368]
具有元素alfcccoeff
cr
[adaptation_parameter_set_id][j],j=0..13的交叉分量cr滤波器系数alfcccoeff
cr
[adaptation_parameter_set_id]如下导出:
[0369]
alfcccoeff
cr
[adaptation_parameter_set_id][j]=alf_cross_component_cr_coeff_abs[j]*(1-2*alf_cross_component_cr_coeff_sign[j])
[0370]
比特流符合性要求alfcccoeff
cr
[adaptation parameter_set_id][j],j=0..13的值应在-2
10-1至2
10-1的范围内(包括端值)。
[0371]
在一个示例中,可以使用表8b中提供的alf_data()语法结构。应当指出的是,在表8b中,当在aps中发信号通知系数时,使用minus1编码发信号通知滤波器的数量。
[0372]
[0373][0374]
表8b
[0375]
对于表8b,在一个示例中,语义可以基于以下内容:
[0376]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量cb滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器组。当alf_cross_component_cb_filter_signal_flag不存在时,推断其等于0。
[0377]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量cr滤波器组。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cr滤波器组。当alf_cross_component_cr_filter_signal_flag不存在时,推断其等于0。
[0378]
alf_cross_component_cb_filters_signalled_minus1加1指定发信号通知其系数的交叉分量cb滤波器组的数量。alf_cross_component_cb_filters_signalled_minus1的值应在0至numccalfcbfilters-1的范围内(包括端值)。
[0379]
numccalfcbfilters表示视频序列中允许的交叉分量cb滤波器组的最大数量。在一个示例中,numccalfcbfilters可被设定为预先确定的非负整数值。在一个示例中,在例如sps、pps的参数集中发信号通知numccalfcbfilters。
[0380]
alf_cross_component_cb_min_eg_order_minus1[k]加1指定用于第k个交叉分量cb滤波器系数组信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1[k]的值应在0至9的范围内(包括端值)。
[0381]
alf_cross_component_cb_eg_order_increase_flag[k][i]等于1指定用于第k个交叉分量cb滤波器系数组信令的指数golomb代码的最小阶数递增1。alf_cross_component_cb_eg_order_increase_flag[k][i]等于0指定用于第k个交叉分量cb滤波器系数组信令的指数golomb代码的最小阶数不递增1。
[0382]
用于解码alf_cross_component_cb_coeff_abs[k][j]的值的指数golomb代码的阶数expgoordercb[k][i]如下导出:
[0383]
expgoordercb[k][i]=(i==0?alf_cross_component_cb_min_eg_order_minus1[k] 1:
[0384]
expgoordercb[k][i-1]) alf_cross_component_cb_eg_order_increase_flag[k][i]
[0385]
alf_cross_component_cb_coeff_abs[k][j]指定发信号通知的第k个交叉分量cb滤波器组的第j个系数的绝对值。当alf_cross_component_cb_coeff_abs[k][j]不存在时,推断其等于0。
[0386]
指数golomb二值化uek(v)的阶数k如下导出:
[0387]
golomborderidxcb[]={0,2,2,2,1,2,2,2,2,2,2,1,2,1}[注意,这些可以将系数分类为3个类别,每个类别使用相同的阶数1指数golomb代码]
[0388]
k=expgoordercbf golomborderidxcb[j]]
[0389]
alf_cross_component_cb_coeff_sign[k][j]如下指定第k个交叉分量cb滤波器系数组的第j个系数的符号:
[0390]-如果alf_cross_component_cb_coeff_sign[k][j]等于0,则对应的交叉分量cb滤波器系数具有正值。
[0391]-否则(alf_cross_component_cb_coeff_sign[k][j]等于1),对应的交叉分量cb滤波器系数具有负值。
[0392]
当alf_cross component_cb_coeff sign[k][j]不存在时,推断其等于0。
[0393]
具有元素alfcccoeff
cb
[adaptation_parameter_set_id][k][j],j=0..13的交叉分量cb滤波器系数alfcccoeff
cb
[adaptation_parameter_set_id][k]如下导出:
[0394]
alfcccoeff
cb
[adaptation_parameter_set_id][k][j]=alf_cross_component_cb_coeff abs[k][j]*(1-2*alf_cross_component_cb_coeff_sign[k][j])
[0395]
比特流符合性要求alfcccoeff
cb
[adaptation_parameter_set_id][k][j],j=0..13的值应在-27至2
7-1的范围内(包括端值)。
[0396]
alf_cross_component_cr_filters_signalled_minus1加1指定发信号通知其系数的交叉分量cr滤波器组的数量。alf_cross_component_cr_filters_signalled_minus1的值应在0至numccalfcrfilters-1的范围内(包括端值)。
[0397]
numccalfcrfilters表示视频序列中允许的交叉分量cr滤波器组的最大数量。在一个示例中,可将numccalfcrfilters设定为预先确定的非负整数值。在一个示例中,在例如sps、pps的参数集中发信号通知numccalfcrfilters。
[0398]
alf_cross_component_cr_min_eg_order_minus1[k]加1指定用于第k个交叉分量cr滤波器系数组信令的指数golomb代码的最小阶数。alf_cross_component_cb_min_eg_order_minus1[k]的值应在0至9的范围内(包括端值)。
[0399]
alf_cross_component_cr_eg_order_increase_flag[k][i]等于1指定用于第k个交叉分量cr滤波器系数组信令的指数golomb代码的最小阶数递增1。alf_cross_component_cr_eg_order_increase_flag[k][i]等于0指定用于第k个交叉分量cr滤波器系数组信令的指数golomb代码的最小阶数不递增1。
[0400]
用于解码alf_cross_component_cb_coeff_abs[k][j]的值的指数golomb代码的阶数expgoordercr[k][i]如下导出:
[0401]
expgoordercr[k][i]=(i==0?alf_cross_component_cr_min_eg_order_minus1[k] 1:
[0402]
expgoordercr[k][i-1]) alf_cross_component_cr_eg_order_incrcase_flag[k][i]
[0403]
alf_cross_component_cr_coeff_abs[k][j]指定发信号通知的第k个交叉分量cr滤波器组的第j个系数的绝对值。当alf_cross_component_cr_coeff_abs[k][j]不存在时,推断其等于0。
[0404]
指数golomb二值化uek(v)的阶数k如下导出:
[0405]
golomborderidxcr[]={0,1,2,1,0,1,2,2,2,2,2,1,2,1}[注意,这些可以将系数分类为3个类别,每个类别使用相同的k阶指数golomb代码]
[0406]
k=expgoordercr[golomborderidxcr[j]]
[0407]
alf_cross_component_cr_coeff_sign[k][i]如下指定第k个交叉分量cr滤波器系数组的第j个系数的符号:
[0408]-如果alf_cross_component_cr_coeff_sign[k][j]等于0,则对应的交叉分量cr滤波器系数具有正值。
[0409]-否则(alf_cross_component_cr_coeff_sign[k][j]等于1),对应的交叉分量cr滤波器系数具有负值。
[0410]
当alf_cross_component_cr_coeff_sign[k][j]不存在时,推断其等于0。
[0411]
具有元素alfcccoeff
cr
[adaptation_parameter_set_id][k][j],j=0..13的交叉分量cr滤波器系数alfcccoeffcr[adaptation_parameter_set_id][k]如下导出:
[0412]
alfcccoeff
cr
[adaptation_parameter_set_id][k][j]=alf_cross_component_cr_coeff_abs[k][j]*(1-2*alf_cross_component_cr_coeff_sign[k][j])
[0413]
比特流符合性要求alfcccoeff
cr
[adaptation_parameter_set_id][k][j],j=0..13的值应在-27至2
7-1的范围内(包括端值)。
[0414]
对于表8b,在一个示例中,对于语法元素alf_cross_component_cb_coeff_abs[k][i]和alf_cross_component_cr_coeff_abs[k][i],表示k阶指数golomb编码的uek(v)的k可以对应于预先确定的值。因此,不必在比特流中发信号通知“k”。在一个示例中,在这种情况下,可以使用表8c中提供的alf_data()语法结构。
[0415][0416][0417]
表8c
[0418]
对于表8c,在一个示例中,语义可基于上面相对于表8b提供的语义。对于语法元素alf_cross_component_cb_coeff_abs[k][i]和alf_cross_component_cr_coeff_abs[k][i],在一个示例中,语义可以基于以下内容:
[0419]
alf_cross_component_cb_coeff_abs[k][j]指定发信号通知的第k个交叉分量cb滤波器组的第j个系数的绝对值。当alf_cross_component_cb_coeff_abs[k][j]不存在时,推断其等于0。
[0420]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[0421]
alf_cross_component_cr_coeff_abs[k][j]指定发信号通知的第k个交叉分量cr滤波器组的第j个系数的绝对值。当alf_cross_component_cr_coeff_abs[k][j]不存在时,推断其等于0。
[0422]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[0423]
此外,对于表8a至表8c,在一个示例中,可以使用表8d中提供的slice_header()语法结构。应当指出的是,在表8d中,语法元素slice_cross_component_alf_cb_aps_id指定切片的cb颜色分量标引的adaptation_parameter_set_id(在一个示例中是aps id(例如,对于交叉分量滤波器,亮度滤波器、色度滤波器))未被接收,和例如针对一组切片类型(例如,i切片)、针对具有一组nalu类型(例如,对应于irap)的图片推断的值。
[0424][0425]
表8d
[0426]
对于表8d,在一个示例中,语义可以基于以下内容:
[0427]
slice_cross_component_alf_cb_enabled_flag等于0指定不将交叉分量cb滤波器应用于cb颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量cb滤波器应用于cb颜色分量。
[0428]
slice_cross_component_alf_cr_enabled_flag等于0指定不将交叉分量cr滤波器应用于cr颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量cr滤波器应用于cr颜色分量。
[0429]
对于表8a:
[0430]
slice_cross_component_alf_cb_reuse_temporal_layer_filter等于1指定交叉分量cb滤波器系数(其中j=0..13,包括端值)被设定为等于alfcctemporalcoeff
cb
[temporalid][j]。slice_cross_component_alf_cb_reuse_temporal_layer_filter等于0并且slice_cross_component_alf_cb_enabled_flag等于1指定语法元素slice_cross_component_alf_cb_aps_id存在于切片标头中。
[0431]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter等于0时,如下导出alfcctemporalcoeff
cb
[temporalid][j],j=0..13的元素:
[0432]
alfcctemporalcoeff
cb
[temporalid][j]=ajfcccoeff
cb
[slice_cross_component_alf_cb_aps_id][j]
[0433]
在一个示例中,交叉分量cb系数(其中j=0..13)可被设定为在对应的aps alfcccoeff
cb
[slice_cross_component_alf_cb_aps_id][j]中接收的系数。
[0434]
slice_cross_component_alf_cr_reuse_temporal_layer_filter等于1指定交叉分量cr滤波器系数(其中j=0..13,包括端值)被设定为等于alfcctemporalcoeff
cr
[temporalid][j]。slice_cross_component_alf_cr_reuse_temporal_layer_filter等于0并且slice_cross_component_alf_cr_enabled_flag等于1指定语法元素slice_cross_component_alf_cr_aps_id存在于切片标头中。
[0435]
当slice_cross_component_alf_cr_enabled_flag等于1并且slice_cross_component_alf_cr_reuse_temporal_layer_filter等于0时,如下导出alfcctemporalcoeff
cr
[temporalid][j],j=0..13的元素:
[0436]
alfcctemporalcoeff
cr
[temporalid][j]=alfcccoeff
cr
[slice_cross_component_alf_cr_aps_id][j]
[0437]
在一个示例中,交叉分量cr系数(其中j=0..13)可被设定为在对应的aps alfcccoeff
cr
[slice_cross_component_alf_cr_aps_id][j]中接收的系数。
[0438]
对于表7b和表7c:
[0439]
slice_cross_component_alf_cb_reuse_temporal_layer_filter等于1指定交叉分量cb滤波器系数(其中j=0..13,k=0..(numccalfcbfilters-1),包括端值)被设定为等于alfcctemporalcoeff
cb
[temporalid][k][j]。slice_cross_component_alf_cb_reuse_temporal_layer_filter等于0并且slice_cross_component_alf_cb_enabled_flag等于1指定语法元素slice_cross_component_alf_cb_aps_id存在于切片标头中。
[0440]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_
component_alf_cb_reuse_temporal_layer_filter等于0时,如下导出alfcctemporalcoeff
cb
[temporalid][k][j],j=0..13,k=0..(numccalfcbfilters-1)的元素:
[0441]
alfcctemporalcoeff
cb
[temporalid][k][j]=alfcccoeff
cb
[slice_cross_component_alf_cb_aps_id][k][j]
[0442]
slice_cross_component_alf_cr_reuse_temporal_layer_filter等于1指定交叉分量cr滤波器系数(其中j=0..13,k=0..(numccalfcrfilters-1),包括端值)被设定为等于alfcctemporalcoeff
cr
[temporalid][k][j]。slice_cross_component_alf_cr_reuse_temporal_layer_filter等于0并且slice_cross_component_alf_cr_enabled_flag等于1指定语法元素slice_cross_component_alf_cr_aps_id存在于切片标头中。
[0443]
当slice_cross_component_alf_cr_enabled_flag等于1并且slice_cross_component_alf_cr_reuse_temporal_layer_filter等于0时,如下导出alfcctemporalcoeffcr[temporalid][k][j],j=0..13,k=0..(numccalfcrfilters-1)的元素:
[0444]
alfcctemporalcoeff
cr
[temporalid][k][j]=alfcccoeff
cr
[slice_cross_component_alf_cr_aps_id][k][j]
[0445]
应当指出的是,当使用来自aps的滤波器系数组时,则使用来自aps的滤波器系数组来填充对应的时间滤波器系数组缓冲器。
[0446]
slice_cross_component_alf_cb_aps_id指定切片的cb颜色分量针对交叉分量cb滤波器而标引的adaptation_parameter_set_id。当slice_cross_component_alf_cb_aps_id不存在时,推断其等于slice_alf_aps_id_luma[0]。具有等于slice_cross_component_alf_cb_aps_id的adaptation_parameter_set_id的alf aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0447]
在一个示例中,可例如对于nalu类型的集(例如,对应于随机访问点诸如irap)、对于切片类型集(例如,i切片)来重置aps。对于此类图片/切片,不发信号通知lice_cross_component_alf_cb_aps_id。在一个示例中,可将其推断为预先确定的值。在一个示例中,可将其推断为导出的值(例如,基于切片类型、temporalid、nalu类型、qp)。
[0448]
在一个示例中,未接收到slice_cross_component_alf_cb_aps_id,并且可针对具有一组nalu类型(例如,对应于irap)的图片的一组切片(例如,第一切片)推断值。
[0449]
slice_cross_component_alf_cr_aps_id指定切片的cr颜色分量针对交叉分量cb滤波器而标引的adaptation_parameter_set_id。当slice_cross_component_alf_cr_aps_id不存在时,推断其等于slice_alf_aps_id_luma[0]。具有等于slice_cross_component_alf_cr_aps_id的alf aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0450]
在一个示例中,可例如对于nalu类型的集(例如,对应于随机访问点诸如irap)、对于切片类型集(例如,i切片)来重置aps。对于这样的图片/切片,不发信号通知和推断slice_cross_component_alf_cr_aps_id,而是将其推断为预先确定的值。在一个示例中,可将其推断为预先确定的值。在一个示例中,可将其推断为导出的值(例如,基于切片类型、temporalid、nalu类型、qp)。
[0451]
在一个示例中,未接收到slice_cross_component_alf_cr_aps_id,并且针对具有一组nalu类型(例如,对应于irap)的图片的一组切片(例如,第一切片)推断值。
[0452]
在一个示例中,aps重置操作可暗示在访问单元之前编码的aps(满足预先确定的一组条件,例如nalu类型指示irap,切片类型等于i切片)可能不可用于该访问单元和随后编码的访问单元。
[0453]
slice_cross_component_alf_cb_log2_control_size_minus4如下指定以样本数量为单位的正方形块大小的值:
[0454]
alfccsamplescbw=alfccsamplescbh =2
(slice_cross_component_alf_cb_log2_control_size_minus4 4)
slice_cross_component_alf_cb_log2_control_size_minus4应在0至3的范围内(包括端值)。
[0455]
slice_cross_component_alf_cr_log2_control_size_minus4如下指定以样本数量为单位的正方形块大小的值:
[0456]
alfccsamplescrw=alfccsamplescrh=2
(slice_cross_component_alf_cr_log2_control_size_minus4 4)
slice_cross_component_alf_cr_log2_control_size_minus4应在0至3的范围内(包括端值)。
[0457]
temporalid是当前nal单元的时间标识符。
[0458]
应当指出的是,在上述示例中,使用指示系数的符号的语法元素(例如,alf_cross_component_cr_coeff_sign)和指示系数的绝对值的语法元素(例如,alf_cross_component_cr_coeff_abs)来指示系数值。在一个示例中,根据本文的技术,可以使用指示系数的绝对值是否大于特定值(例如,大于1、大于2标记等)的一个或多个标记以及基于该一个或多个标记的值指示系数的绝对值的语法元素来指示系数的绝对值。例如,在一个示例中,特定系数值的编码可以基于以下语义:
[0459]
alf_cross_component_coeff_abs_greater_than_n_flag[k][j]指定发信号通知的第k个交叉分量滤波器组的第j个系数的绝对值是否大于n。在一个示例中,系数应该在-27至2
7-1
的范围内(包括端值),并且n可以是64。
[0460]
alf_cross_component_coeff_abs[k][j]指定发信号通知的第k个交叉分量滤波器组的第j个系数的绝对值。当alf_cross_component_coeff_abs[k][j]不存在时,推断其等于0。
[0461]
alf_cross_component_coeff_sign[k][i]如下指定第k个交叉分量滤波器系数组的第j个系数的符号:
[0462]-如果alf_cross_component_coeff_sign[k][j]等于0,则对应的交叉分量滤波器系数具有正值。
[0463]-否则(alf_cross_component_coeff_sign[k][j]等于1),对应的交叉分量滤波器系数具有负值。
[0464]
当alf_cross_component_coeff_sign[k][j]不存在时,推断其等于0。
[0465]
具有元素alfcccoeff[adaptation_parameter_set_id][k][j]的交叉分量滤波器系数alfcccoeff[adaptation_parameter_set_id][k]如下导出:
[0466]
alfcccoeff[adaptation_parameter_set_id][k][j]=(n*alf_cross_component_coeff_abs_greater_than_n_flag[k][j] alf_cross_component_coeff_abs
[k][j])*(1-2*alf_cross_component_coeff_sign[k][j])
[0467]
在一个示例中,可以针对交叉分量颜色(cb和/或cr)滤波器发信号通知一组交叉分量滤波器系数。每组交叉分量滤波器系数可以被分配有交叉分量滤波器索引。在一个示例中,可以在aps中发信号通知该组交叉分量滤波器系数。在一个示例中,可以对样本值进行分区(例如,使用与控制标记信令所使用的分区类似的技术或任何合适的替代方案来确定)。可针对样本值的每个分区发信号通知滤波器索引,其中滤波器索引标识要应用于分区中的样本的交叉分量滤波器。分区可以通过使用参数诸如块大小(其可以与控制块大小参数相同,或者可以是独立的)来传送。分区区域可使用参数值、图片/切片/图块组/mcts大小来导出。在一个示例中,可以在aps中为每个颜色分量发信号通知该组仅一个交叉分量滤波器系数。可针对标识要应用于分区中的样本的交叉分量滤波器的每个样本值分区发信号通知aps标识符。
[0468]
在一个示例中,可例如对于一组nalu类型(例如,对应于随机访问点诸如irap)、对于一组切片类型(例如,i切片)来重置用于时间层的子集或所有时间层的缓冲器。在一个示例中,重置可暗示清空操作。在一个示例中,重置可暗示将缓冲器设定为预先确定的一组值(例如,0,用于每个temporalid的一组固定值)。缓冲器重置操作可暗示在访问单元之前存储在缓冲器中的值(满足预先确定的一组条件,例如nalu类型指示irap,切片类型等于i切片)可能不可用于该接入单元和随后编码的访问单元。在一个示例中,当缓冲器不包含任何系数时,则指示来自缓冲器的滤波器系数是否将被使用的语法元素可以不被发信号通知而是推断其值。例如,当清空缓冲区用于irap图片时,irap图片中的第一个切片不需要发信号通知slice_cross_component_alf_cb_reuse_temporal_layer_filter和/或slice_cross_component_alf_cr_reuse_temporal_layer_filter。在一个示例中,当缓冲器不包含任何系数时,则指示来自缓冲器的滤波器系数是否将被使用的语法元素可被发信号通知为限制于预先确定的值。例如,当清空缓冲区用于irap图片时,irap图片中的第一个切片中的语法元素slice_cross_component_alf_cb_reuse_temporal_layer_filter和/或slice_cross_component_alf_cr_reuse_temporal_layer_filter需要为0。
[0469]
此外,在一个示例中,发信号通知用于前导图片的滤波器不应被相关联的irap图片的拖尾图片使用。这是因为在比特流的随机访问操作期间,可以从比特流中丢弃前导图片。如上所述,根据本文的技术,可以使用以下操作来发信号通知交叉分量滤波器:重新使用对应的时间子层缓冲器中的滤波器和/或aps中的滤波器。应当指出的是,在一些情况下,可以带外发信号通知aps,因此在一些情况下,比特流符合性可能只需要所标引的aps应可用。因此,在一个示例中,比特流符合性要求可使用语法元素slice_cross_component_alf_cb_reuse_temporal_layer_fllter和slice_cross_component_alf_cr_reuse_temporal_layer_filter来实现。在一个示例中,语法元素slice_cross_component_alf_cb_reuse_temporal_layer_filter和slice_cross_component_alf_cr_reuse_temporal_layer_filter可具有如下约束:
[0470]
当导出具有时间标识符temporalid的时间子层缓冲器alfcctemporalcoeffcb[temporalid][k][j]中的滤波器系数用于相关联的irap图片的前导图片时,比特流符合要求对于具有时间标识符temporalid的相关联irap图片的拖尾图片,语法元素slice_cross_component_alf_cb_reuse_temporal_layer_filter的值应为0。
[0471]
当导出具有时间标识符temporalid的时间子层缓冲器alfcctemporalcoeffcr[temporalid][k][j]中的滤波器系数用于相关联的irap图片的前导图片时,比特流符合要求对于具有时间标识符temporalid的相关联irap图片的拖尾图片,语法元素slice_cross_component_alf_cr_reuse_temporal_layer_filter的值应为0。
[0472]
如上相对于图9a至图9f所述,可基于色度位置类型确定滤波器形状。应当指出的是,滤波器形状可包括用于各种类型的滤波器的滤波器形状。此外,滤波器形状通常可被描述为表示支持和相对于所滤波的样本的原点。在一个示例中,可针对参数集中的每个交叉分量滤波器发信号通知滤波器形状:例如sps、pps、vui。在一个示例中,例如当滤波器形状影响被编码的滤波器系数的数量时,还可以在aps或切片标头中发信号通知滤波器形状。在一个示例中,滤波器形状可用于确定滤波器系数的数量。在一个示例中,可以重复使用滤波器系数。也就是说,在一个示例中,可针对每个时间层为每个分量cb/cr保持先进先出(fifo)缓冲器。在一个示例中,fifo缓冲器的大小对于每个分量、每个时间层为1。在这样的示例中,可发信号通知标记以指示是要使用对应的(时间层)fifo缓冲器中的滤波器系数还是要接收新的一组系数。当接收到新的一组滤波器系数时,它们替换对应的(时间层)fifo缓冲器的内容。在一个示例中,fifo缓冲器的大小对于每个分量、每个时间层为1。在这样的示例中,fifo缓冲器中属于相同时间层或较低时间层的滤波器系数可被重复使用。接收语法元素(例如,标记)以指示fifo缓冲器之一中的滤波器系数是否被重复使用,并且如果它被重复使用(例如,标记值为1),则接收要重复使用的系数的fifo缓冲器的索引。基于当前时间层id来确定该索引的有效值的范围(例如,0到当前时间层id)。可使用ue(v)编码来发信号通知诸如-(fifo缓冲器的时间层-当前时间层)的值。在另一个示例中,可以使用截断的一元(具有基于当前时间层id的tu最大值)。
[0473]
在一个示例中,交叉分量滤波器的局部控制的信令可包括在切片的第一个ctu中为切片发送所有交叉分量cb和cr块级控制标记。在一个示例中,当控制块大小大于ctu大小时,可以在控制块的第一个编码的ctu中发送控制标记。控制块中的剩余ctu可推断与控制块的第一个编码ctu中相同的值。当控制块中的第一个编码ctu确实接收到控制标记时,则可推断控制标记的值为0。在一个示例中,为每个ctu发送控制标记。在一个示例中,可以在切片/图块组的第一个ctu中发信号通知控制标记。此外,在一个示例中,可以针对图块组/切片的每个ctu发信号通知四个控制标记。在一个示例中,当ctu内存在四个控制块时,与完整ctu相比,部分ctu(例如,在边界处)可存在不同数量的控制块标记。在一个示例中,可以针对图块组/切片的每个ctu发信号通知一个控制标记。在一个示例中,可以针对一组ctu中的第一ctu发信号通知控制标记,并且可以针对该组中的剩余ctu推断相同的标记值。
[0474]
表9示出了用于在控制块的第一个ctu中发信号通知的coding_tree_unit()语法结构中的语法,和在控制块小于ctu时的多个标记的示例。应当指出的是,在表9中,当通过的cb色度位置表示正被编码的切片内的cb样本时,函数isinslicecb()返回true,否则返回false,并且当通过的cr色度位置表示正被编码的切片内的cr样本时,函数isinslicecr()返回true,否则返回false。
[0475][0476]
表9
[0477]
表10示出了用于在控制块的第一个ctu中发信号通知的coding_tree_unit()语法结构中的语法,和在控制块小于ctu时的多个标记的示例。
[0478][0479]
表10
[0480]
对于表9至表10,在一个示例中,语义可以基于以下内容:cross_component_alf_cb_control_flag[x][y]等于1指定将交叉分量cb滤波器应用于颜色分量cb的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的块。
[0481]
cross_component_alf_cb_flag[x][y]等于0指定不将交叉分量cb自适应环路滤波器应用于颜色分量cb的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的块。
[0482]
当cross_component_alf_cb_flag[x][y]不存在时,推断其等于0。
[0483]
cross_component_alf_cr_control_flag[x][y]等于1指定将交叉分量cr滤波器应用于颜色分量cr的位于色度位置(xctb/subwidthc x*alfccsamplescrw,yctb/subheightc y*alfccsamplescrh)的块。
[0484]
cross_component_alf_cr_flag[x][y]等于0指定不将交叉分量cr自适应环路滤波器应用于颜色分量cr的位于色度位置(xctb/subwidthc x*alfccsamplescrw,yctb/subheightc y*alfccsamplescrh)的块。
[0485]
当cross_component_alf_cr_flag[x][y]不存在时,推断其等于0。
[0486]
在一个示例中,根据本文的技术,在空间上相邻的标记的值用于选择用于对控制标记进行编码的上下文。在一个示例中,cross_component_alf_cb_control_flag和cross_component_alf_cr_control_flag存在总共3个上下文,其可以如下确定:
[0487][0488][0489]
在一个示例中,用于交叉分量滤波器的交叉分量滤波器系数携带其自己的独立参数集,例如aps。在一个示例中,交叉分量滤波器系数携带在不同于非交叉分量滤波器的参数集例如aps中(例如,jvet-n1001-v8中的alf)。在一个示例中,代替5
×
6滤波器,一个实施
方案可以使用jvet-n1001-v8中关于“用于亮度样本的编码树块滤波过程”的款项描述的7
×
7alf滤波过程。这将进一步减少需要发信号通知的系数的数量。在以上描述中,应用滤波操作来细化颜色分量和/或通道中的样本,并且提供可逐帧和逐位置地启用/禁用操作的信令。在一个示例中,还可实施滤波操作,使得在每个帧和/或位置处,有多个滤波操作可用,并且所述信令可用于传输该多个滤波器和在可用滤波器中进行选择。在一个示例中,实施方案可以使用3
×
4菱形滤波器。应当指出的是,在其他示例中,可以使用其他滤波器尺寸和形状(例如,3
×
3、4
×
3、4
×
4等)。在一个示例中,当使用3
×
4菱形滤波器时,可以使用八个唯一系数。应当指出的是,在其他示例中,对于本文所述的每个滤波器大小和形状,使用和/或发信号通知的唯一系数数量可以变化以便优化信令开销。在一个示例中,当使用3
×
4菱形滤波器时,可以为每个分量指定最多四个唯一滤波器(例如,在序列、图片、图块或切片级别上),并且当应用滤波时,可以选择四个中的一者。
[0490]
在一个示例中,根据本文的技术,可以在不同的色度通道之间共享局部区域控制标记。也就是说,例如,语法元素cross_component_alf_cb_control_flag和cross_component_alf_cr_control_flag可以用语法元素cross_component_chroma_alf_control_flag替换,其中,在一个示例中,cross_component_chroma_alf_control_flag的语义基于以下内容:
[0491]
cross_component_chroma_alf_control_flag[x][y]等于1并且slice_cross_component_alf_cb_enabled_flag等于1指定将交叉分量cb自适应环路滤波器应用于颜色分量cb的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的块内的样本。
[0492]
cross_component_chroma_alf_flag[x][y]等于1并且slice_cross_component_alf_cr_enabled_flag等于1指定将交叉分量cr自适应环路滤波器应用于颜色分量cr的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的块内的样本。
[0493]
cross_component_chroma_alf_flag[x][y]等于0指定不将交叉分量色度自适应环路滤波器应用于颜色分量cb和cr的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的样本块。
[0494]
当cross_component_chroma_alf_flag[x][y]不存在时,推断其等于0。
[0495]
此外,在一个示例中,语法元素slice_cross_component_alf_cb_enabled_flag和slice_cross_component_alf_cr_enabled_flag可以用语法元素slice_cross_component_chroma_alf_enabled_flag替换,语法元素cross_component_alf_cb_control_flag和cross_component_alf_cr_control_flag可以用语法元素cross_component_chroma_alf_control_flag替换,其中,在一个示例中,slice_cross_component_chroma_alf_enabled_flag和cross_component_chroma_alf_control_flag的语义基于以下内容:
[0496]
cross_component_chroma_alf_control_flag[x][y]等于1并且slice_cross_component_alf_chroma_enabled_flag等于1指定将交叉分量cb自适应环路滤波器应用于颜色分量cb的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的块内的样本。
[0497]
cross_component_chroma_alf_flag[x][y]等于1并且slice_cross_component_
alf_chroma_enabled_flag等于1指定将交叉分量cr自适应环路滤波器应用于颜色分量cr的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的块内的样本。
[0498]
cross_component_chroma_alf_flag[x][y]等于0指定不将交叉分量色度自适应环路滤波器应用于颜色分量cb和cr的位于色度位置(xctb/subwidthc x*alfccsamplescbw,yctb/subheightc y*alfccsamplescbh)的样本块。
[0499]
当cross_component_chroma_alf_flag[x][y]不存在时,推断其等于0。
[0500]
对于这些示例,表11示出了包括在用于切片的第一个ctu的coding_tree_unit()语法结构中的语法的示例,表12示出了包括在用于相应ctu的coding_tree_unit()语法结构中的语法的示例。
[0501][0502]
表11
[0503][0504]
表12
[0505]
如上所述,交叉分量滤波的应用可以基于滤波器支持区域中包括的样本的属性(例如,方差和/或偏差)。在一个示例中,共享的控制标记(例如,cross_component_chroma_alf_control_flag)和包括在滤波器支持区域中的样本的属性可以用于确定是否为色度通道中的一个或两个应用交叉分量滤波。例如,在一个示例中,对于cb,cross_component_chroma_alf_control_flag的值可以确定是否应用了交叉分量滤波,并且对于cr,cross_component_chroma_alf_control_flag的值可以另外确定是否应用了交叉分量滤波。如上所述,在一个示例中,当一个或多个支持样本不可用时,例如由于vb,可以禁用交叉分量滤波。因此,包括在用于确定是否应用交叉分量滤波的滤波器支持区域中的样本属性可以包括可用性。在一个示例中,根据本文的技术,是否应用交叉分量滤波可以基于支持样本的阈值数量是否可用(例如,是否50%或更多的支持样本可用)。类似地,当一个或多个支持样本不可用时,是否应用交叉分量滤波可以基于限定的填充过程是否可以为不可用的支持样本中的每一者生成值。也就是说,在限定的填充过程不提供用于生成用于不可用样本的值的机制的情况下,可以禁用交叉分量滤波。此外,如果根据指定的支持样本(例如,菱形支持件的中心样本)的滤波器支持区域的位置处于vb的指定范围内,则可以禁用交叉分量滤波。例如,在一个示例中,如果菱形滤波器支持区域的中心样本低于并且在水平vb的2个样本内,则可以禁用交叉分量滤波。
[0506]
如上所述,在jvet-n1001和jvet-o2001中,ctu根据四叉树加多类型树(qtmt或qt mtt)结构来分区。在jvet-n1001和jvet-o2001中,对于i切片,可以使用隐式四叉树分割将每个ctu分割成具有64
×
64亮度样本的编码单元,并且这些编码单元可以是两个单独的编码树语法结构的根,即,一个用于亮度信道,一个用于色度信道。在任一种情况下,可以在分区树信令的语法内发信号通知/确定局部区域控制标记值。即,例如,用于将色度通道划分
成cu的语法和语义(即,色度编码树)可包括指示局部区域控制标记值的信令(隐式和/或显式)。例如,jvet-n1001和jvet-o2001定义变量cbsubdiv=2*cqtdepth,cqtdepth是当前编码四叉树深度,并且ctu处的深度是0。在一个示例中,根据本文的技术,cbsubdiv小于或等于给定阈值的最小树节点可以表示父节点控制标记信令组,其中由进一步分割产生的所有块属于相同的控制标记信令组。也就是说,父cu处的局部区域控制标记可以用于推断任何所得的子cu处的局部区域控制标记的值。表13和表14示出了用于确定局部区域控制标记值的语法和变量分配的示例。也就是说,在表13中,cbsubdiv小于或等于给定阈值的最小树节点可以表示父节点控制标记信令组。表14提供了对应的编码单元语法。
[0507][0508]
表13
[0509][0510]
表14
[0511]
在表13所示的示例中,用于切片的cc alf控制信令深度表示阈值。在一个示例中,可以针对切片、序列或图片发信号通知该阈值。对于表13,亮度位置((xctrlblk,yctrlblk)指定当前色度控制块相对于当前图片左上亮度样本的左上亮度样本。将水平位置xctrlblk和垂直位置yctrlblk分别设定为等于cuccalftopleftx和cuccalftoplefty。此外,当前色度控制块是编码树块内共享相同cc alf控制标记值(对于色度分量共享或独立)的矩形区域。其宽度和高度等于编码树节点的宽度和高度,该编码树节点的左上亮度样本位置被分配给变量cuccalftopleftx和cualfcctoplefty。应当指出的是,在一个示例中,每个色度分量可存在独立的一组变量。
[0512]
对于表14,在一个示例中,当cross_component_chroma_alf_control_flag(共享或独立)不存在时,推断其等于0,并且当cross_component_chroma_alf_control_flag(共享或独立)存在时,将变量iscuccalfcontrolflagcoded设定为1。此外,将cu cc alf控制标记val设定为cross_component_chroma_alf_control_flag。因此,在该示例中,只要用于开始新控制标记信令组的条件为真(即,为切片启用了cc alf并且cusubdiv不高于限值),内
部标记“iscuccalfcontrolflagcoded”就被设定为0,并且当前树节点原点被保存为cuccalftopleftx、cuccalffoplefty变量中的控制标记信令组原点。稍后,在编码单元语法中,如果“iscuccalfcontrolflagcoded”为零,则控制信令组标记被编码,并且“iscuccalfcontrolflagcoded”标记被设定为1,从而防止其他控制块标记被编码,直到找到新的控制标记信令组为止。编码单元可从最后一个编码树节点原点继承其控制标记值,直到找到新的控制标记信令组为止。在一个示例中,当局部控制区域语法元素存在于编码单元中时,则iscuccalfcontrolflagcoded被设定为等于1。应当指出的是,jvet-n1001和jvet-o2001提供指示发信号通知qp值的最低深度的量化参数组。在一个示例中,cc alf控制信令可以是对准的量化参数组。也就是说,量化参数组内的子节点共享qp值和cc alf控制值。此外,在一种情况下,cc alf控制值的值可以基于qp值或完全从qp值导出(例如,如果qp值小于阈值,则不向组发信号通知cc alf控制标记而是将其推断为0)。
[0513]
如上所述,交叉分量滤波的信令可包括特定滤波器(例如,滤波器形状和/或滤波器系数)的信令。在一个示例中,根据本文的技术,语法元素的值可以指示是否针对某个区域应用交叉分量滤波,并且当针对某个区域应用交叉分量滤波时指示用于该区域的特定滤波器。例如,值0可指示未针对某个区域应用交叉分量滤波,值1可指示应用具有第一滤波器系数组的滤波器,值2可指示应用具有第二滤波器系数组的滤波器,等等。在一个示例中,该区域可为ctu。表15示出了根据本文技术的包括在coding_tree_unit()语法结构中的语法的示例。也就是说,在表15所示的示例中,语法元素alf_cross_component_cb_idc和alf_cross_component_cr_idc指示是否应用交叉分量滤波,并且当应用交叉分量滤波时指示滤波器。
[0514]
[0515][0516][0517]
表15
[0518]
对于表15,在一个示例中,语义可以基于以下内容:
[0519]
picwidthinchromasamples=pic_width_in_luma_samples/subwidthc
[0520]
picheightinchromasamples=pic_height_in_luma_samples/subheightc
[0521]
alfccsamplescblog2w=alfccsamplescblog2h=
[0522]
slice_cross_component_alf_cb_log2_control_size_minus4 4
[0523]
alfccsamplescrlog2w=alfccsamplescrlog2h=
[0524]
slice_cross_component_alf_cr_log2_control_size_minus4 4
[0525]
此外,应当指出的是:
[0526]
在一个示例中,xstartc对应于ctu的顶部边缘。在一个示例中,ystartc对应于ctu的左侧边缘。
[0527]
当局部控制区域不跨越ctu时,可以省略检查(xctbc==xstartc&&yctbc==ystartc)。
[0528]
在一个示例中,(xendc》=picwidthinchromasamples)和(yendc》=picheightinchromasamples),由picwidthinchromasamples和picheightinchromasample提供的上限可替代地分别对应于右侧和底部切片/图块/砖块/ctu边界。
[0529]
alf_cross_component_cb_idc[xc》》alfccsamplescblog2w][yc》》alfccsamplescblog2h]等于0指示不将交叉分量cb滤波器应用于具有左上色度位置(xc,yc)的cb色度样本的块。alf_cross_component_cb_idc[xc》》alfccsamplescblog2w][yc》》alfccsamplescblog2h]等于m,其中m大于0指示将第k=(m-1)个交叉分量cb滤波器组应用于具有左上色度位置(xc,yc)的cb色度样本的块
[0530]
alf_cross_component_cr_idc[xc》》alfccsamplescrlog2w][yc》》alfccsamplescrlog2h]等于0指示不将交叉分量cr滤波器应用于具有左上色度位置(xc,yc)的cr色度样本的块。alf_cross_component_cr_idc[xc》》alfccsamplescrlog2w][yc》》alfccsamplescrlog2h]等于m,其中m大于0指示将第k=(m-1)个交叉分量cr滤波器组应用于具有左上色度位置(xc,yc)的cr色度样本的块
[0531]
当对应于色度样本位置(xc,yc)的alf_cross_component_cb_idc[xc》》alfccsamplescblog2w][yc》》alfccsamplescblog2h]不可用时,例如当(xc,yc)与当前ctu相比位于不同的切片/图块时,函数unavailablecb(xc,yc)返回true,否则返回false
[0532]
当对应于色度样本位置(xc,yc)的alf_cross_component_cr_idc[xc》》alfccsamplescrlog2w][yc》》alfccsamplescrlog2h]不可用时,例如当(xc,yc)与当前ctu相比位于不同的切片/图块时,函数unavailablecr(xc,yc)返回true,否则返回false。
[0533]
在一个示例中,根据本文的技术,alf_cross_component_cb_idc和/或alf_cross_component_cr_idc的二值化可以是具有最大值cmax(根据发信号通知的滤波器系数组的数量)的截断rice(tr)二值化,并且criceparam等于0。表16示出了alf_cross_component_cb_idc和/或alf_cross_component_cr_idc的截断rice二值化的示例。
[0534]
指示值tr二值化(criceparam等于0)001102110
31110
……
cmax-11....10包含(cmax-1)个lcmax1....11包含cmax个l
[0535]
表16
[0536]
其中,
[0537]
对于cc alf cb,cmax被设定为对应的(alf_cross_component_cb_filters_signalled_minus1加1)
[0538]
对于cc alf cr,cmax被设定为对应的(alf_cross_component_cr_filters_signalled_minus1加1)
[0539]
在一个示例中,对于alf_cross_component_cb_idc和/或alf_cross_component_cr_idc,可以仅对第一个bin进行上下文编码(即,可以对其他bin进行旁路编码)。在一个示例中,第一个bin的上下文的导出可以如下:
[0540]
该过程的输入是指定当前亮度块相对于当前图片左上样本的左上亮度样本的亮度位置(x0,y0)、颜色分量cidx、当前编码四叉树深度cqtdepth、双树信道类型chtype、亮度样本中的当前编码块的宽度和高度cbwidth和cbheight,以及在编码树语义中导出的变量allowsplitbtver、allowsplitbthor、allowsplitttver、allowsplittthor和allowsplitqt。
[0541]
该过程的输出为ctxinc。
[0542]
位置(xnbl,ynbl)被设定为等于(x0-1,y0),并且调用针对指定的相邻块可用性的导出过程,其中位置(xcurr,ycurr)被设定为等于(x0,y0),相邻位置(xnby,ynby)被设定为等于(xnbl,ynbl),checkpredmodey被设定为等于false,并且cidx作为输入,输出被分配给availablel。
[0543]
位置(xnba,ynba)被设定为等于(x0,y0-1),并且调用针对指定的相邻块可用性的导出过程,其中位置(xcurr,ycurr)被设定为等于(x0,y0),相邻位置(xnby,ynby)被设定为等于(xnba,ynba),checkpredmodey被设定为等于false,并且cidx作为输入,输出被分配给availablea。
[0544]
ctxinc的分配如下指定,其中condl和conda在表17中指定:
[0545]
对于语法元素alf_cross_component_cb_idc[x0][y0]和alf_cross_component_cr_idc[x0][y0]:ctxinc=(condl&&availablel) (conda&&availablea) ctxsetidx*3
[0546][0547]
表17
[0548]
对于表17,在一个示例中,“==0”测试中的每一者可以用“!=0”替换。
[0549]
在一个示例中,对于alf_cross_component_cb_idc和/或alf_cross_component_
cr_idc,可以对所有bin进行上下文编码,并且每个bin可以使用如表18所示的单独的上下文集。
[0550][0551]
表18
[0552]
对于表18,在一个示例中,上下文的导出可以如下:
[0553]
该过程的输入是指定当前亮度块相对于当前图片左上样本的左上亮度样本的亮度位置(x0,y0)、颜色分量cidx、当前编码四叉树深度cqtdepth、双树信道类型chtype、亮度样本中的当前编码块的宽度和高度cbwidth和cbheight,以及在编码树语义中导出的变量allowsplitbtver、allowsplitbthor、allowsplitttver、allowsplittthor和allowsplitqt。
[0554]
该过程的输出为ctxinc。
[0555]
位置(xnbl,ynbl)被设定为等于(x0-1,y0),并且调用针对指定的相邻块可用性的导出过程,其中位置(xcurr,ycurr)被设定为等于(x0,y0),相邻位置(xnby,ynby)被设定为等于(xnbl,ynbl),checkpredmodey被设定为等于false,并且cidx作为输入,输出被分配给availablel。
[0556]
位置(xnba,ynba)被设定为等于(x0,y0-1),并且调用针对指定的相邻块可用性的导出过程,其中位置(xcurr,ycurr)被设定为等于(x0,y0),相邻位置(xnby,ynby)被设定为等于(xnba,ynba),checkpredmodey被设定为等于false,并且cidx作为输入,输出被分配给availablea。
[0557]
ctxinc的分配如下指定,其中condl和conda在表19中指定:
[0558]
对于语法元素alf_cross_component_cb_idc[x0][y0]和alf_cross_component_cr_idc[x0][y0]:ctxinc=(condl&&availablel) (conda&&availablea) ctxsetidx*3
[0559][0560][0561]
表19
[0562]
在一个示例中,对于alf_cross_component_cb_idc和/或alf_cross_component_cr_idc,可以对所有bin进行上下文编码,并且所有bin使用相同的上下文,即,每个binidx使用相同的上下文。在一些情况下,binidx的子集不适用,例如,numccalfcbfilters为3,binidx》3不适用于alf_cross_component_cb_idc[][],numccalfcrfilters为3,binidx》3不适用于alf_cross_component_cr_idc[][]。
[0563]
在一个示例中,对于alf_cross_component_cb_idc和/或alf_cross_component_
er_idc,可以对所有bin进行上下文编码,并且每个bin可以使用如表20所示的相同的上下文集。对于表20,应当指出的是,在一些情况下,binidx的子集不适用,例如,numccalfcbfilters为3,binidx》3不适用于alf_cross_component_cb_idc[][],numccalfcrfilters为3,binidx》3不适用于alf_cross_component_cr_idc[][]。
[0564][0565]
表20
[0566]
对于表20,在一个示例中,上下文的导出可以如下:
[0567]
该过程的输入是指定当前亮度块相对于当前图片左上样本的左上亮度样本的亮度位置(x0,y0)、颜色分量cidx、当前编码四叉树深度cqtdepth、双树信道类型chtype、亮度样本中的当前编码块的宽度和高度cbwidth和cbheight,以及在编码树语义中导出的变量allowsplitbtver、allowsplitbthor、allowsplitttver、allowsplittthor和allowsplitqt。
[0568]
该过程的输出为ctxinc。
[0569]
位置(xnbl,ynbl)被设定为等于(x0-1,y0),并且调用针对指定的相邻块可用性的导出过程,其中位置(xcurr,ycurr)被设定为等于(x0,y0),相邻位置(xnby,ynby)被设定为等于(xnbl,ynbl),checkpredmodey被设定为等于false,并且cidx作为输入,输出被分配给availablel。
[0570]
位置(xnba,ynba)被设定为等于(x0,y0-1),并且调用针对指定的相邻块可用性的导出过程,其中位置(xcurr,ycurr)被设定为等于(x0,y0),相邻位置(xnby,ynby)被设定为等于(xnba,ynba),checkpredmodey被设定为等于false,并且cidx作为输入,输出被分配给availablea。
[0571]
ctxinc的分配如下指定,其中condl和conda在表21中指定:
[0572]
对于语法元素alf_cross_component_cb_idc[x0][y0]和alf_cross_component_cr_idc[x0][y0]:ctxinc=(condl&&availablel) (conda&&availablea) ctxsetidx*3
[0573][0574]
表21
[0575]
如上所提供,关于对应于表15和表16的示例,在coding_tree_unit()中发信号通知语法元素alf_cross_component_cb_idc[][]和alf_cross_component_cr_idc[][],并且alf_cross_component_cb_idc[][]和alf_cross_component_cr_idc[][]的二值化取决于语法元素alf_cross_component_cb_filters_signalled_minus1和alf_cross_
component_cr_filters_signalled_minus1的相应值。如果alf_cross_component_cb_filters_signalled_minus1和alf_cross_component_cr_filters_signalled_minus1包括在aps中,则丢失包含对应alf_cross_component_cb_filters_signalled_minus1和alf_cross_component_cr_filters_signalled_minus1的aps将意味着无法解析语法元素alf_cross_component_cb_idc[][]和alf_cross_component_cr_idc[][]。在一个示例中,为了减轻/防止潜在的不可解析的语法元素,可以在另一个语法结构中发信号通知指定交叉分量cb/cr滤波器组的数量的语法元素,其系数和/或其提供alf_cross_component_cb_idc[][]和alf_cross_component_cr_idc[][]的二值化。例如,在一个示例中,可以在切片标头中发信号通知基于以下语义的语法元素slice_alf_cross_component_cb_filters_signalled_minus 1和slice_alf_cross_component_cr_filters_signalled_minus1,并且它们的使用值可以用于alf_cross_component_cb_idc[][]和alf_cross_component_cr_idc[][]的二值化。也就是说,在tr二值化中,对于alf_cross_component_cb_idc[][],cmax等于slice_alf_cross_component_cb_filters_signalled_minus1 1,并且对于alf_cross_component_cr_idc[][],cmax等于slice_alf_cross_component_cr_filters_signalled_minus1 1。应当指出的是,在一个示例中,slice_alf_cross_component_cb_filters_signalled_minus1可以包括在紧跟在slice_cross_component_alf_cb_log2_control_size_minus4之后的切片标头语法结构中,并且可以将slice_alf_cross_component_cr_filters_signalled_minus1包括在紧跟在slice_cross_component_alf_cr_log2_control_size_minus4之后的切片标头语法结构中。
[0576]
slice_cross_component_alf_cb_signalled_minus1加1指定语法元素alf_cross_component_cb_idc[][]的最大值。
[0577]
比特流符合性要求当slice_cross_component_alf_cb_reuse_temporal_layer_filter等于1时,slice_cross_component_alf_cb_signalled_minus1应在0至3的范围内(包括端值)。{当允许的交叉分量cb滤波器的最大数量为4时}
[0578]
比特流符合性要求当slice_cross_component_alf_cb_reuse_temporal_layer_filter等于0时,slice_cross_component_alf_cb_signalled_minus1应在slice_cross_component_alf_cb_aps_id引用的alf aps的0至alf_cross_component_cb-filters_signalled_minus1的范围内(包括端值)。
[0579]
slice_cross_component_alf_cr_signalled_minus1加1指定语法元素alf_cross_component_cr_idc[][]的最大值。
[0580]
比特流符合性要求当slice_cross_component_alf_cr_reuse_temporal_layer_filter等于1时,slice_cross_component_alf_cr_signalled_minus1应在0至3的范围内(包括端值)。{当允许的交叉分量cr滤波器的最大数量为4时}
[0581]
比特流符合性要求当slice_cross_component_alf_cr_reuse_temporal_layer_filter等于0时,slice_cross_component_alf_cr_signalled_minus1应在slice_cross_component_alf_cr_aps_id引用的alf aps的0至alf_cross_component_cr_filters_signalled_minus1的范围内(包括端值)。
[0582]
在示例中,不使用时间交叉分量cb滤波器系数缓冲器,因此不发信号通知slice_cross_component_alf_cb_reuse_temporal_layer_filter并且使用对应于等于0的slice_
cross_component_alf_cb_reuse_temporal_layer_filter的语法。然后比特流符合性约束是:
[0583]
比特流符合性要求slice_cross_component_alf_cb_signalled_minus1应在slice_cross_component_alf_cb_aps_id引用的alf aps的0至alf_cross_component_cb_filters_signalled_minus1的范围内(包括端值)。
[0584]
在示例中,不使用时间交叉分量cr滤波器系数缓冲器,因此不发信号通知slice_cross_component_alf_cr_reuse_temporal_layer_filter并且使用对应于等于0的slice_cross_component_alf_cr_reuse_temporal_layer_filter的语法。然后比特流符合性约束是:
[0585]
比特流符合性要求slice_cross_component_alf_cr_signalled_minus1应在slice_cross_component_alf_cr_aps_id引用的alf aps的0至alf_cross_component_cr_filters_signalled_minus1的范围内(包括端值)。
[0586]
应当指出的是,尽管发信号通知切片标头中的滤波器数量移除了解析依赖性,但是可能有益的是对包括在切片标头中的滤波器语法元素数量的限制。在一个示例中,可能要求切片标头中的滤波器语法元素的数量与aps中发信号通知的滤波器的数量相同。此外,在一个示例中,可能不需要切片标头中的滤波器语法元素的数量与aps中的滤波器的数量相同。
[0587]
当不要求切片标头中的滤波器语法元素的数量与aps中的滤波器的数量相同时,存在(1)在切片标头中发信号通知的滤波器的数量小于或等于aps中的发信号通知的滤波器的数量的情况以及(2)在切片标头中发信号通知的滤波器的数量大于aps中发信号通知的滤波器的数量的情况。当切片标头中发信号通知的滤波器的数量大于aps中发信号通知的滤波器的数量时,必须为超过aps中滤波器数量的滤波器索引限定滤波器。例如,如果在aps中存在两个发信号通知的滤波,但切片标头中的信令指示四个滤波器可用,则视频解码器在接收到滤波器索引3或4时必须具有限定的动作。在一个示例中,解码器可以在滤波器索引3或4的区域中禁用cc-alf处理(其可以包括使用具有所有零抽头值的滤波器)。在另一个示例中,视频解码器可以使用已经存在于aps中的滤波器。例如,如果接收到滤波器索引3或4,则可以使用具有索引2的滤波器。在另一个示例中,如果接收到滤波器索引3,则可以使用具有索引1的滤波器,并且如果接收到滤波器索引4,则可以使用具有索引2的滤波器。在另一个示例中,当接收到滤波器索引3和滤波器索引4时,可以使用在编码器和解码器处已知的固定滤波器。在切片标头中发信号通知的滤波器的数量小于或等于aps中发信号通知的滤波器的数量的情况下,必须不限定额外的视频解码器动作。然而,断言允许此条件可以具有编码效率益处。例如,第一切片可以参考第一aps并且使用来自aps的所有m个滤波器,并且第二切片也可以参考第一aps,但仅使用aps中的前n个滤波器。这提高了编码效率,因为(i)不必针对第二切片发送第二aps,并且(ii)由于滤波器数量较少,在第二切片中发信号通知滤波器索引所需的位较小。
[0588]
在一个示例中,根据本文的技术,交叉分量滤波的实施方式可以基于以下语法和语义。对于以下语法和语义,在表22中,将语法元素alf_cross_component_cb_filter_signal_flag、alf_cross_component_cr_filter_signal_flag,alf_cross_component_cb_coeff_abs、alf_cross_component_cb_coeff_sign,alf_cross_component_cr_coeff_abs、
和alf_cross_component_cr_coeff_sign添加到jvet-o2001中提供的alf_data()语法结构中。应当指出的是,在jvet-o2001中提供的alf_data()语法结构是在适配参数集语法结构中提供的。在表23中,将语法元素slice_cross_component_alf_cb_enabled_flag、slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag、slice_cross_component_alf_cb_aps_id、slice_cross_component_alf_cb_log2_control_size_minus4、slice_cross_component_alf_cr_enabled_flag、slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag,slice_cross_component_alf_cr_aps_id和slice_cross_component_alf_cb_log2_control_size_minus4添加到jvet-o2001中提供的slice_header()语法结构中。在表24中,将语法元素alf_cross_component_cb_flag和alf_cross_component_cr_flag添加到jvet-o2001中提供的coding_tree_unit()语法结构中。
[0589]
[0590][0591][0592]
表22
[0593]
[0594][0595]
[0596]
表23
[0597]
[0598][0599]
表24
[0600]
对于表22,在一个示例中,语义可以基于以下内容:
[0601]
alf_luma_filter_signal_flag等于1指定发信号通知亮度滤波器组。alf_luma_filter_signal_flag等于0指定不发信号通知亮度滤波器组。
[0602]
alf_chroma_filter_signal_flag等于1指定发信号通知色度滤波器。alf_chroma_filter_signal_flag等于0指定不发信号通知色度滤波器。当chromaarraytype等于0时,alf_chroma_filter_signal_flag应等于0。
[0603]
将指定不同自适应环路滤波器的数量的变量numalffilters设定为等于25。
[0604]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量cb滤波器组,alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器组。当chromaarraytype等于0时,alf_cross_component_cb_filter_signal_flag应等于0。
[0605]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量cr滤波器组,alf_cross_component_cr_filter_signal_flag等于0指定不发信号通知交叉
分量cr滤波器组。当chromaarraytype等于0时,alf_cross_component_cr_filter_signal_flag应等于0。
[0606]
alf_luma_clip_flag等于0指定在亮度分量上应用线性自适应环路滤波。alf_luma_clip_flag等于1指定可以在亮度分量上应用非线性自适应环路滤波。
[0607]
alf_luma_num_filter_signalled_minus1加1指定可以发信号通知其亮度系数的自适应环路滤波器类别的数量。alf_luma_num_filters_signalled_minus1的值应在0至numalffilters-1的范围内(包括端值)。
[0608]
alf_luma_coeff_delta_idx[filtidx]为filtidx指示的滤波器类别指定发信号通知的自适应环路滤波器亮度系数增量的索引,范围从0至numalffilters-1。当alf_luma_coeff_delta_idx[filtidx]不存在时,推断其等于0。alf_luma_coeff_delta_idx[filtidx]的长度是ceil(log2(alf_luma_num_filters_signalled_minus1 1))位。
[0609]
alf_luma_coeff_signalled_flag等于1指示发信号通知alf_luma_coeff_flag[sfidx],alf_luma_coeff_signalled_flag等于0指示未发信号通知alf_luma_coeff_flag[sfidx]。
[0610]
alf_luma_coeff_flag[sfidx]等于1指定发信号通知由sfidx指示的亮度滤波器的系数。alf_luma_coeff_flag[sfidx]等于0指定将由sfidx指示的亮度滤波器的所有滤波器系数设定为等于0。当不存在时,将alf_luma_coeff_flag[sfidx]设定为等于1。
[0611]
alf_luma_coeff_abs[sfidx][j]指定由sfidx指示的发信号通知的亮度滤波器的第j个系数的绝对值。当alf_luma_coeff_abs[sfidx][j]不存在时,推断其等于0。
[0612]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[0613]
alf_luma_coeff_sign[sfidx][j]指定如下由sfidx指示的滤波器的第j个亮度系数的符号:
[0614]-如果alf_luma_coeff_sign[sfidx][j]等于0,则对应的亮度滤波器系数具有正值。
[0615]-否则(alf_luma_coeff_sign[sfidx][j]等于1),则对应的亮度滤波器系数具有负值。
[0616]
当alf_luma_coeff_sign[sfidx][j]不存在时,推断其等于0。
[0617]
具有sfidx=0..alf_luma_num_filters_signalled_minus1,j=0..11的变量filtcoeff[sfidx][j]如下初始化:
[0618]
filtcoeff[sfidx][j]=alf_luma_coeff_abs[sfidx][j]*
[0619]
(1-2*alf_luma_coeff_sign[sfidx][j])
[0620]
具有元素alfcoeff
l
[adaptation_parameter_set_id][filtidx][j],filtidx=0..numalffilters-1和j=0..11的亮度滤波器系数alfcoeff
l
[adaptation_parameter_set_id]如下导出:
[0621]
alfcoeff
l
[adaptation_parameter_set_id][filtidx][j]=filtcoeff[alf_luma_coeff_delta_idx[filtidx]][j]
[0622]
固定滤波器系数alffixfiltcoeff[i][j],i=0..64,j=0..11以及类别到滤波器映射alfclasstofiltmap[m][n],m=0..15和n=0..24如下导出:
[0623]
alffixfiltcoeff=
[0624]
{
[0625]
{0,0,2,-3,1,-4,1,7,-1,1,-1,5}
[0626]
{0,0,0,0,0,-1,0,1,0,0,-1,2}
[0627]
{0,0,0,0,0,0,0,1,0,0,0,0}
[0628]
{0,0,0,0,0,0,0,0,0,0,-1,1}
[0629]
{2,2,-7,-3,0,-5,13,22,12,-3,-3,17}
[0630]
{-1,0,6,-8,1,-5,1,23,0,2,-5,10}
[0631]
{0,0,-1,-1,0,-1,2,1,0,0,-1,4}
[0632]
{0,0,3,-11,1,0,-1,35,5,2,-9,9}
[0633]
{0,0,8,-8,-2,-7,4,4,2,1,-1,25}
[0634]
{0,0,1,-1,0,-3,1,3,-1,1,-1,3}
[0635]
{0,0,3,-3,0,-6,5,-1,2,1,-4,21}
[0636]
{-7,1,5,4,-3,5,11,13,12,-8,11,12}
[0637]
{-5,-3,6,-2,-3,8,14,15,2,-7,11,16}
[0638]
{2,-1,-6,-5,-2,-2,20,14,-4,0,-3,25}
[0639]
{3,1,-8,-4,0,-8,22,5,-3,2,-10,29}
[0640]
{2,1,-7,-1,2,-11,23,-5,0,2,-10,29}
[0641]
{-6,-3,8,9,-4,8,9,7,14,-2,8,9}
[0642]
{2,1,-4,-7,0,-8,17,22,1,-1,-4,23}
[0643]
{3,0,-5,-7,0,-7,15,18,-5,0,-5,27}
[0644]
{2,0,0,-7,1,-10,13,13,-4,2,-7,24}
[0645]
{3,3,-13,4,-2,-5,9,21,25,-2,-3,12}
[0646]
{-5,-2,7,-3,-7,9,8,9,16,-2,15,12}
[0647]
{0,-1,0,-7,-5,4,11,11,8,-6,12,21}
[0648]
{3,-2,-3,-8,-4,-1,16,15,-2,-3,3,26}
[0649]
{2,1,-5,-4,-1,-8,16,4,-2,1,-7,33}
[0650]
{2,1,-4,-2,1,-10,17,-2,0,2,-11,33}
[0651]
{1,-2,7,-15,-16,10,8,8,20,11,14,11}
[0652]
{2,2,3,-13,-13,4,8,12,2,-3,16,24}
[0653]
{1,4,0,-7,-8,-4,9,9,-2,-2,8,29}
[0654]
{1,1,2,-4,-1,-6,6,3,-1,-1,-3,30}
[0655]
{-7,3,2,10,-2,3,7,11,19,-7,8,10}
[0656]
{0,-2,-5,-3,-2,4,20,15,-1,-3,-1,22}
[0657]
{3,-1,-8,-4,-1,-4,22,8,-4,2,-8,28}
[0658]
{0,3,-14,3,0,1,19,17,8,-3,-7,20}
[0659]
{0,2,-1,-8,3,-6,5,21,1,1,-9,13}
[0660]
{-4,-2,8,20,-2,2,3,5,21,4,6,1}
[0661]
{2,-2,-3,-9,-4,2,14,16,3,-6,8,24}
[0662]
{2,1,5,-16,-7,2,3,11,15,-3,11,22}
[0663]
{1,2,3,-11,-2,-5,4,8,9,-3,-2,26}
[0664]
{0,-1,10,-9,-1,-8,2,3,4,0,0,29}
[0665]
{1,2,0,-5,1,-9,9,3,0,1,-7,20}
[0666]
{-2,8,-6,-4,3,-9,-8,45,14,2,-13,7}
[0667]
{1,-1,16,-19,-8,-4,-3,2,19,0,4,30}
[0668]
{1,1,-3,0,2,-11,15,-5,1,2,-9,24}
[0669]
{0,1,-2,0,1,-4,4,0,0,1,-4,7}
[0670]
{0,1,2,-5,1,-6,4,10,-2,1,-4,10}
[0671]
{3,0,-3,-6,-2,-6,14,8,-1,-1,-3,31}
[0672]
{0,1,0,-2,1,-6,5,1,0,1,-5,13}
[0673]
{3,1,9,-19,-21,9,7,6,13,5,15,21}
[0674]
{2,4,3,-12,-13,1,7,8,3,0,12,26}
[0675]
{3,1,-8,-2,0,-6,18,2,-2,3,-10,23}
[0676]
{1,1,-4,-1,1,-5,8,1,-1,2,-5,10}
[0677]
{0,1,-1,0,0,-2,2,0,0,1,-2,3}
[0678]
{1,1,-2,-7,1,-7,14,18,0,0,-7,21}
[0679]
{0,1,0,-2,0,-7,8,1,-2,0,-3,24}
[0680]
{0,1,1,-2,2,-10,10,0,-2,1,-7,23}
[0681]
{0,2,2,-11,2,-4,-3,39,7,1,-10,9}
[0682]
{1,0,13,-16,-5,-6,-1,8,6,0,6,29}
[0683]
{1,3,1,-6,-4,-7,9,6,-3,-2,3,33}
[0684]
{4,0,-17,-1,-1,5,26,8,-2,3,-15,30}
[0685]
{0,1,-2,0,2,-8,12,-6,1,1,-6,16}
[0686]
{0,0,0,-1,1,-4,4,0,0,0,-3,11}
[0687]
{0,1,2,-8,2,-6,5,15,0,2,-7,9}
[0688]
{1,-1,12,-15,-7,-2,3,6,6,-1,7,30}
[0689]
},
[0690]
alfclasstofiltmap=
[0691]
{
[0692]
{8,2,2,2,3,4,53,9,9,52,4,4,5,9,2,8,10,9,1,3,39,39,10,9,52}
[0693]
{11,12,13,14,15,30,11,17,18,19,16,20,20,4,53,21,22,23,14,25,26,26,27,28,10}
[0694]
{16,12,31,32,14,16,30,33,53,34,35,16,20,4,7,16,21,36,18,19,21,26,37,38,39}
[0695]
{35,11,13,14,43,35,16,4,34,62,35,35,30,56,7,35,21,38,24,40,16,21,48,57,39}
[0696]
{11,31,32,43,44,16,4,17,34,45,30,20,20,7,5,21,22,46,40,47,26,48,63,58,10}
[0697]
{12,13,50,51,52,11,17,53,45,9,30,4,53,19,0,22,23,25,43,44,37,27,28,
10,55}
[0698]
{30,33,62,51,44,20,41,56,34,45,20,41,41,56,5,30,56,38,40,47,11,37,42,57,8}
[0699]
{35,11,23,32,14,35,20,4,17,18,21,20,20,20,4,16,21,36,46,25,41,26,48,49,58}
[0700]
{12,31,59,59,3,33,33,59,59,52,4,33,17,59,55,22,36,59,59,60,22,36,59,25,55}
[0701]
{31,25,15,60,60,22,17,19,55,55,20,20,53,19,55,22,46,25,43,60,37,28,10,55,52}
[0702]
{12,31,32,50,51,11,33,53,19,45,16,4,4,53,5,22,36,18,25,43,26,27,27,28,10}
[0703]
{5,2,44,52,3,4,53,45,9,3,4,56,5,0,2,5,10,47,52,3,63,39,10,9,52}
[0704]
{12,34,44,44,3,56,56,62,45,9,56,56,7,5,0,22,38,40,47,52,48,57,39,10,9}
[0705]
{35,11,23,14,51,35,20,41,56,62,16,20,41,56,7,16,21,38,24,40,26,26,42,57,39}
[0706]
{33,34,51,51,52,41,41,34,62,0,41,41,56,7,5,56,38,38,40,44,37,42,57,39,10}
[0707]
{16,31,32,15,60,30,4,17,19,25,22,20,4,53,19,21,22,46,25,55,26,48,63,58,55}
[0708]
},
[0709]
比特流符合性要求alfcoeff
l
[adaptation_parameter_set_id][filtidx][j],filtidx=0..numalffilters-1,j=0..11的值应在-27至2
7-1的范围内(包括端值)。
[0710]
alf_luma_clip_idx[sfidx][j]指定在乘以由sfidx指示的发信号通知的亮度滤波器的第j个系数之前使用的削波值的削波指数。比特流符合性要求alf_luma_clip_idx[sfidx][j],sfidx=0..alf_luma_num_filters_signalled_minus1并且j=0..11的值应在0至3的范围内(包括端值)。
[0711]
具有元素alfclip
l
[adaptation_parameter_set_id][filtidx][j],filtidx=0..numalffilters-1并且j=0..11的亮度滤波器削波值alfclip
l
[adaptation_parameter_set_id]是按照表25中指定导出的,取决于bitdepth设定为等于bitdepthy并且clipidx设定为等于alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtidx]][j]。
[0712]
alf_chroma_num_alt_filter_minus1加1指定色度分量的另选滤波器的数量。
[0713]
alf_chroma_clip_flag[altidx]等于0指定当使用具有索引altidx的色度滤波器时对色度分量应用线性自适应环路滤波;alf_chroma_clip_flag[altidx]等于1指定当使用具有索引altidx的色度滤波器时对色度分量应用非线性自适应环路滤波。当不存在时,推断alf_chroma_clip_flag[altidx]等于0。
[0714]
alf_chroma_coeff_abs[altidx][j]为具有索引altidx的另选色度滤波器指定第j个色度滤波器系数的绝对值。当alf_chroma_coeff_abs[altidx][j]不存在时,推断其等于0。比特流符合性要求alf_chroma_coeff_abs[altidx][j]的值应在0至2
7-1的范围内(包
括端值)。
[0715]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[0716]
alf_chroma_coeff_sign[altidx][j]为具有索引altidx的另选色度滤波器如下指定第j个色度滤波器系数的符号:
[0717]-如果alf_chroma_coeff_sign[altidx][j]等于0,则对应的色度滤波器系数具有正值。
[0718]-否则(alf_chroma_coeff_sign[altidx][j]等于1),则对应的色度滤波器系数具有负值。
[0719]
当alf_chroma_coeff_sign[altidx][j]不存在时,推断其等于0。
[0720]
具有元素alfcoeffc[adaptation_parameter_set_id][altidx][j],altidx=0..alf_chroma_num_alt_filters_minus1,j=0..5的色度滤波器系数alfcoeffc[adaptation_parameter_set_id][altidx]如下导出:
[0721]
alfcoeffc[adaptation_parameter_set_id][altidx][j]=alf_chroma_coeff_abs[altidx][j]*(1-2*alf_chroma_coeff_sign[altidx][j])
[0722]
比特流符合性要求alfcoeffc[adaptation_parameter_set_id][altidx][j],altidx=0..alf_chroma_num_alt_filters_minus1,j=0..5的值应在-2
7-1至2
7-1的范围内(包括端值)。
[0723]
alf_cross_component_cb_coeff_abs[j]指定第j个交叉分量cb滤波器系数的绝对值。当alf_cross_component_cb_coeff_abs[j]不存在时,推断其等于0。
[0724]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[0725]
alf_cross_component_cb_coeff_sign[j]如下指定第j个交叉分量cb滤波器系数的符号:
[0726]-如果alf_cross_component_cb_coeff_sign[j]等于0,则对应的交叉分量cb滤波器系数具有正值。
[0727]-否则(alf_cross_component_cb_sign[j]等于1),对应的交叉分量cb滤波器系数具有负值。
[0728]
当alf_cross_component_cb_coeff_sign[j]不存在时,推断其等于0。
[0729]
具有元素ccalfapscoeff
cb
[adaptation_parameter_set_id][j],j=0..13的交叉分量cb滤波器系数ccalfapscoeff
cb
[adaptation_parameter_set_id]如下导出:
[0730]
ccalfapscoeff
cb
[adaptation_parameter_set_id][j]=alf_cross_component_cb_coeff_abs[j]*(1-2*alf_cross_component_cb_coeff_sign[j])
[0731]
比特流符合性要求ccalfapscoeff
cb
[adaptation_parameter_set_id][j],j=0..13的值应在-27至2
7-1的范围内(包括端值)。
[0732]
alf_cross_component_cr_coeff_abs[j]指定第j个交叉分量cr滤波器系数的绝对值。当alf_cross_component_cr_coeff_abs[j]不存在时,推断其等于0。将指数golomb二值化uek(v)的阶数k设定为等于3。
[0733]
alf_cross_component_cr_coeff_sign[j]如下指定第j个交叉分量cr滤波器系数的符号:
[0734]-如果alf_cross_component_cr_coeff_sign[j]等于0,则对应的交叉分量cr滤波
器系数具有正值。
[0735]-否则(alf_cross_component_cr_sign[j]等于1),对应的cross_component_cr滤波器系数具有负值。
[0736]
当alf_cross_component_cr_coeff_sign[j]不存在时,推断其等于0。
[0737]
具有元素ccalfapscoeff
cr
[adaptation_parameter_set_id][j],j=0..13的交叉分量cr滤波器系数ccalfapscoeff
cr
[adaptation_parameter_set_id]如下导出:
[0738]
ccalfapscoeff
cr
[adaptation_parameter_set_id][j]=alf_cross_component_cr_coeff_abs[j]*((1-2*alf_cross_component_cr_coeff_sign[j])
[0739]
比特流符合性要求ccalfapscoeff
cr
[adaptation_parameter_set_id][j],j=0..13的值应在-27至2
7-1的范围内(包括端值)。
[0740]
alf_chroma_clip_idx[altidx][j]指定在乘以具有索引altidx的另选色度滤波器的第j个系数之前使用的削波值的削波指数。比特流符合性要求chroma_clip_idx[altidx][j],altidx=0..alf_chroma_num_alt_filters_minus1,j=0..5的值应在0至3的范围内(包括端值)。
[0741]
具有元素alfclipc[adaptation_parameter_set_id][altidx][j],altidx=0..alf_chroma_num_alt_filters_minus1,j=0..5的色度滤波器削波值alfclipc[adaptation_parameter_set_id][altidx]是按照表25中指定导出的,取决于bitdepth设定为等于bitdepthc并且clipidx设定为等于alf_chroma_clip_idx[altidx][j]。
[0742][0743][0744]
表25
[0745]
此外,对于表22,应当指出的是,jvet-2001为adaptation_parameter_set语法结构提供以下语法和语义:
[0746][0747]
表26
[0748]
每个aps rbsp在被引用之前应可用于解码过程,包括在其中temporalid小于或等于引用它或通过外部方式提供的编码切片nal单元的temporalid的至少一个访问单元中。
[0749]
令asplayerid为aps nal单元的nuh_layer_id。如果其中nuh_layer_id等于asplayerid的层是独立层(即,vps_independent_layer_flag[generallayeridx[asplayerid]]等于1),则含有aps rbsp的aps nal单元的nuh_layer_id应等于引用它的编码切片nal单元的nuh_layer_id。否则,含有aps rbsp的aps nal单元的nuh_layer_id应等于引用它的编码切片nal单元的nuh_layer_id,或者等于含有引用它的编码切片nal单元的层的直接依赖层的nuh_layer_id.。
[0750]
在访问单元内具有adaptation_parameter_set_id的特定值和aps_params_type的特定值的所有aps nal单元应具有相同的内容。
[0751]
adaptation_parameter_set_id提供aps的标识符以供其他语法元素引用。当aps_params_type等于alf_aps或scaling_aps时,adaptation_parameter_set_id的值应在0至7的范围内(包括端值)。
[0752]
当aps_params_type等于lmcs_aps时,adaptation_parameter_set_id的值应在0至3的范围内(包括端值)。
[0753]
aps_params_type指定如表27中指定的aps中携带的aps参数的类型。当aps_params_type等于1(lmcs_aps)时,adaptation_parameter_set_id的值应在0至3的范围内(包括端值)。
[0754]
apsjparams_typeaps_params_type的名称aps参数的类型0alf_apsalf参数1lmcs_apslmcs参数
2scaling_aps缩放列表参数3..7预留预留
[0755]
表27
[0756]
注意—每个类型的aps使用用于adaptation_parameter_set_id的单独值空间。
[0757]
注意—aps nal单元(具有adaptation_parameter_set_id的特定值和aps_params_type的特定值)可以跨图片共享,并且图片内的不同切片可以指不同的alf aps。
[0758]
aps_extension_flag等于0指定在aps rbsp语法结构中不存在aps_extension_data_flag语法元素。aps_extension_flag等于1指定在aps rbsp语法结构中存在aps_extension_data_flag语法元素。
[0759]
aps_extension_data_flag可以具有任何值。其存在和值不影响解码器符合本说明书的此版本中指定的配置文件。符合本说明书的此版本的解码器应忽略所有aps_extension_data_flag语法元素
[0760]
对于表22,在一个示例中,语法元素alf_chroma_filter_signal_flag、alf_cross_component_cb_filter_signal_flag和/或alf_cross_component_cr_filter_signal_flag只有当chormaarraytype不等于0才可以有条件地发信号通知,并且当不存在时推荐它们的值。条件信令节省位。也就是说,在一个示例中,表22可以如下进行修改:
[0761][0762]
语义如下:
[0763]
alf_chroma_filter_signal_flag等于1指定发信号通知色度滤波器。alf_chroma_filter_signal_flag等于0指定不发信号通知色度滤波器。当不存在时,推断alf_chroma_filter_signal_flag等于0。
[0764]
将指定不同自适应环路滤波器的数量的变量numalffilters设定为等于25。
[0765]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量cb滤波器。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器。当不存在时,推断alf_cross_component_cb_filter_signal_flag等于0。
[0766]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量cr滤波器。alf_cross_component_cr_filter_signal_flag等于0指定不发信号通知交叉分量cr滤波器。当不存在时,推断alf_cross_component_cr_filter_signal_flag等于0。
[0767]
对于表23,在一个示例中,语义可以基于以下内容:
[0768]
slice_pic_parameter_set_id指定使用中的pps的pps_pic_parameter_set_id的值。slice_pic_parameter_set_id的值应在0至63的范围内(包括端值)。
[0769]
比特流符合性要求当前图片的temporalid的值应大于或等于pps的temporalid的值,该pps具有等于slice_pic_parameter_set_id的pps_pic_parameter_set_id。
[0770]
cabac_init_flag指定确定在用于上下文变量的初始化过程中使用的初始化表的方法。当cabac_init_flag不存在时,推断其等于0。
[0771]
slice_qp_delta指定要用于切片中的编码块的qpy的初始值,直到由编码单元层中的cuqpdeltaval的值修改。切片的qpy量化参数的初始值sliceqpy如下导出:
[0772]
sliceqpy=26 init_qp_minus26 slice_qp_delta
[0773]
sliceqpy的值应在-qpbdoffsety至 63的范围内(包括端值)。
[0774]
其中,
[0775]
init_qp_minus26加26指定引用pps的每个切片的sliceqpy的初始值。当slice_qp_delta被解码为非零值时,在切片层修改sliceqpy的初始值。init_qp_minus26的值应在-(26 qpbdoffsety)至 37的范围内(包括端值)。
[0776]
slice_sao_luma_flag等于1指定为当前切片中的亮度分量启用sao;slice_sao_luma_flag等于0指定为当前切片中的亮度分量禁用sao;当slice_sao_luma_flag不存在时,推断其等于0。
[0777]
slice_sao_chroma_flag等于1指定为当前切片中的色度分量启用sao;slice_sao_chroma_flag等于0指定为当前切片中的色度分量禁用sao;当slice_sao_chroma_flag不存在时,推断其等于0。
[0778]
slice_alf_enabled_flag等于1指定在切片中自适应回路滤波器被启用并且可以应用于y、cb或cr颜色分量。slice_alf_enabled_flag等于0指定在切片中对于所有颜色分量禁用自适应回路滤波器。
[0779]
slice_num_alf_aps_ids_luma指定切片引用的alf aps的数量。slice_num_alf_aps_ids_luma的值应在0至7的范围内(包括端值)。
[0780]
slice_alf_aps_id_luma[i]指定切片的亮度分量引用的第i个alf aps的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_alf_aps_id_luma[i]的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0781]
对于帧内切片和irap图片中的切片,slice_alf_aps_id_luma[i]不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[0782]
slice_alf_chroma_idc等于0指定自适应回路滤波器不适用于cb和cr颜色分量。slice_alf_chroma_idc等于1指示自适应回路滤波器适用于cb颜色分量。slice_alf_chroma_idc等于2指示自适应回路滤波器适用于cr颜色分量。slice_alf_chroma_idc等于3指示自适应回路滤波器适用于cb和cr颜色分量。当slice_alf_chroma_idc不存在时,推断其等于0。
[0783]
slice_alf_aps_id_chroma指定切片的色度分量引用的alf aps的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_alf_aps_id_chroma的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码
切片nal单元的temporalid。
[0784]
对于帧内切片和irap图片中的切片,slice_alf_aps_id_chroma不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[0785]
slice_cross_component_alf_cb_enabled_flag等于0指定不将交叉分量cb滤波器应用于cb颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量cb滤波器应用于cb颜色分量。当slice_cross_component_alf_cb_enabled_flag不存在时,推断其等于0。
[0786]
slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于1指定交叉分量cb滤波器系数(其中j=0..13,包括端值)被设定为等于ccalftemporalcoeff
cb
[temporalid][j]。
[0787]
slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于0并且slice_cross_component_alf_cb_enabled_flag等于1指定语法元素slice_cross_component_alf_cb_aps_id存在于当前切片标头中。
[0788]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于0时,如下导出ccalftemporalcoeff
cb
[temporalid][j]和ccalfcoeff
cb
[j],j=0..13的元素:
[0789]
ccalftemporalcoeff
cb
[temporalid][j]=ccalfapscoeff
cb
[slice_cross_component_alf_cb_aps_id][j]
[0790]
ccalfcoeff
cb
[j]=ccalfapscoeff
cb
[slice_cross_component_alf_cb_aps_id][j]
[0791]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于1时,如下导出ccalfcoeff
cb
[j],j=0..13的元素:
[0792]
ccalfcoeff
cb
[j]=ccalftemporalcoeff
cb
[temporalid][j]
[0793]
应当指出的是,在一些示例中,slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag可以通过if(slice_type!=i)和/或nal单元类型为非irap和非gdr有条件地发信号通知,并且当不存在时推断等于0。
[0794]
nal单元类型是非irap和非gdr可以由以下条件语句表达:
[0795]
if(nal_unit_type!=idr_w_radl&&nal_unit_type!=idr_n_lp&&nal_unit_type!=cra_nut&&nal_unit_type!=gdr_nut)
[0796]
nal单元类型是非irap和非gdr并且if(slice_type!=i)可以由以下条件语句表达:
[0797]
if(nal_unit_type!=idr_w_radl&&nal_unit_type!=idr_n_lp&&nal_unit_type!=cra_nut&&nal_unit_type!=gdr_nut&&slice_type!=i)
[0798]
slice_cross_component_alf_cb_aps_id指定切片的cb颜色分量所标引的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_cross_component_alf_cb_aps_id的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0799]
对于帧内切片和irap图片中的切片,slice_cross_component_alf_cb_aps_id不
应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[0800]
当slice_cross_component_alf_cb_enabled_flag等于1时,比特流符合性要求对于当前图片的所有切片,由slice_cross_component_alf_cb_aps_id引用的alf aps应相同。
[0801]
slice_cross_component_alf_cb_log2_control_size_minus4指定以色度样本的数量为单位的cb颜色分量的控制块大小。slice_cross_component_alf_cb_log2_control_size_minus4应在0至min(log2(ctbwidthc),log2(ctbheightc))-4的范围内(包括端值)。
[0802]
变量ccalfwidthcbl和ccalfheightcbl如下导出:
[0803]
ccalfwidthcbl=(1《《(slice_cross_component_alf_cb_log2_control_size_minus4 4))*subwidthc
[0804]
ccalfheightcbl=(1《《(slice_cross_component_alf_cb_log2_control_size_minus4 4))*subheightc
[0805]
slice_cross_component_alf_cr_enabled_flag等于0指定不将交叉分量cr滤波器应用于cr颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量自适应环路滤波器应用于cr颜色分量。当slice_cross_component_alf_cr_enabled_flag不存在时,推断其等于0。
[0806]
对于表23,在一个示例语法元素中slice_cross_component_alf_cb_enabled_flag和slice_cross_component_alf_cr_enabled_flag可被分组为单个if(chromaarraytype!=0){}语句。
[0807]
slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于1指定交叉分量cr滤波器系数(其中j=0..13,包括端值)被设定为等于ccalftemporalcoeff
cr
[temporalid][j]。
[0808]
slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于0并且slice_cross_component_alf_cr_enabled_flag等于1指定语法元素slice_cross_component_alf_cr_aps_id存在于当前切片标头中。
[0809]
当slice_cross_component_alf_cr_enabled_flag等于1并且slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于0时,如下导出ccalftemporalcoeff
cr
[temporalid][j]和ccalfcoeff
cr
[j],j=0..13的元素:
[0810]
ccaiftemporalcoeff
cr
[temporalid][j]=ccalfapscoeff
cr
[slice_cross_component_alf_cr_aps_id][j]
[0811]
ccalfcoeff
cr
[j]=ccalfapscoeff
cr
[slicc_cross_component_alf_cr_aps_id][j]
[0812]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于1时,如下导出ccalfcoeff
cr
[j],j=0..13的元素:
[0813]
ccalfcoeff
cr
[j]=ccalftemporalcoeff
cr
[temporalid][j]
[0814]
应当指出的是,在一些示例中,slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag可以通过if(slice_type!=i)和/或nal单元类型为非irap和非gdr有条件地发信号通知,并且当不存在时推断等于0。
[0815]
slice_cross_component_alf_cr_aps_id指定切片的cr颜色分量所标引的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_cross_component_alf_cr_aps_id的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0816]
对于帧内切片和irap图片中的切片,slice_cross_component_alf_cr_aps_id不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[0817]
当slice_cross_component_alf_cr_enabled_flag等于1时,比特流符合性要求对于当前图片的所有切片,由slice_cross_component_alf_cr_aps_id引用的alf aps应相同。
[0818]
slice_cross_component_alf_cr_log2_control_size_minus4指定以色度样本的数量为单位的cr颜色分量的控制块大小,slice_cross_component_alf_cb_log2_control_size_minus4应在0至min(log2(ctbwidthc),log2(ctbheightc))-4的范围内(包括端值)。
[0819]
变量ccalfwidthcrl和ccalfheightcrl如下导出:
[0820]
ccalfwidthcrl=(1《《(slice_cross_component_alf_cr_log2_control_size_minus4 4))*subwidth
[0821]
cccalfheightcrl=(1《《(slicc_cross_component_alf_cr_log2_control_size_minus4 4))*subheightc
[0822]
deblocking_filter_override_flag等于1指定切片标头中存在解块参数。deblocking_filter_override_flag等于0指定切片标头中不存在解块参数。当不存在时,推断deblocking_filter_override_flag的值等于0。
[0823]
slice_deblocking_filter_disabled_flag等于1指定解块滤波器的操作不应用于当前切片。slice_deblocking_filter_disabled_flag等于0指定解块滤波器的操作应用于当前切片。当slice_deblocking_filter_disabled_flag不存在时,推断其等于pps_deblocking_filter_disabled_flag。
[0824]
slice_beta_offset_div2和slice_tc_offset_div2指定当前切片的β和tc的解块参数偏移(除以2)。slice_beta_offset_div2和slice_tc_offset_div2的值应均在-6至6(包括端值)的范围内。当不存在时,推断slice_beta_offset_div2和slice_tc_offset_div2的值分别等于pps_beta_offset_div2和pps_tc_offset_div2。
[0825]
slice_lmcs_enabled_flag等于1指定对于当前切片启用具有色度缩放的亮度映射。slice_lmcs_enabled_flag等于0指定对于当前切片禁用具有色度缩放的亮度映射。当slice_lmcs_enabled_flag不存在时,推断其等于0。
[0826]
slice_lmcs_aps_id指定切片引用的lmcs aps的adaptation_parameter_set_id。具有等于lmcs_aps的aps_params_type和等于slice_lmcs_aps_id的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0827]
当存在时,对于图片的所有切片,slice_lmcs_aps_id的值应相同。
[0828]
slice_chroma_residual_scale_flag等于1指定对于当前切片启用色度残差缩放。slice_chroma_residual_scale_flag等于0指定对于当前切片不启用色度残差缩放。当slice_chroma_residual_scale_flag不存在时,推断其等于0。
[0829]
如上所提供,slice_cross_component_alf_cb_log2_control_size_minus4和slice_cross_component_alf_cr_log2_control_size_minus4限制局部控制滤波器指示的最大块大小(即,到min(log2(ctbwidthc),log2(ctbheightc)))。在一个示例中,局部控制滤波器指示的最大块大小可以限于min(floor(log2(ctbwidthc)),floor(log2(ctbheightc)))。此外,在一个示例中,可以限制局部控制指示的最大块大小,使得控制块不能跨多于一个ctu。这可以使跨图块/切片边界的处理更简单,因为图块/切片是以ctu为单位描述的。在一个示例中,基于最大ctu大小(块和/或宽度)和/或色度格式来导出最大块大小限制。
[0830]
对于表23,在一个示例中,根据本文的技术,以下约束可以添加到语法元素slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag和slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag的相应语义中:
[0831]
比特流符合性要求slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag对于temporalid值在0至6的范围内(包括端值)的cvs中的每个第一张图片应等于0。
[0832]
比特流符合性要求slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag对于temporalid值在0至6的范围内(包括端值)的cvs中的每个第一张图片应等于0。
[0833]
在一个示例中,根据本文的技术,语法元素slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag和slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag的语义可以基于以下步骤,其中基于temporalid的导出仅用于非参考图片:
[0834]
slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于1指定交叉分量cb滤波器系数(其中j=0..13,包括端值)被设定为等于ccalftemporalcoeff
cb
[temporalid][j]。
[0835]
slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于0并且slice_cross_component_alf_cb_enabled_flag等于1指定语法元素slice_cross_component_alf_cb_aps_id存在于当前切片标头中。
[0836]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于0时,如下导出ccalftemporalcoeff
cb
[temporalid][j]和ccalfcoeff
cb
[j],j=0..13的元素:
[0837]
if(!non_reference_picture_flag)
[0838]
ccalftemporalcoeff
cb
[temporalid][j]=ccalfapscoeff
cb
[slice_cross_component_alf_cb_aps_id][j]
[0839]
ccalfcoeff
cb
[j]=ccalfapscoeff
cb
[slice_cross_component_alf_cb_aps_id][j]。
[0840]
slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于1指定交叉分量cr滤波器系数(其中j=0..13,包括端值)被设定为等于ccalftemporalcoeff
cr
[temporalid][j]。
[0841]
slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于0并
且slice_cross_component_alf_cr_enabled_flag等于1指定语法元素slice_cross_component_alf_cr_aps_id存在于当前切片标头中。
[0842]
当slice_cross_component_alf_cr_enabled_flag等于1并且slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于0时,如下导出ccalftemporalcoeff
cr
[temporalid][j]和ccalfcoeff
cr
[j],j=0..13的元素:
[0843]
if(!non_reference_picture_flag)
[0844]
ccalftemporalcoeff
cr
[temporalid][j]=ccalfapscoeff
cr
[slice_cross_component_alf_cr_aps_id][j]
[0845]
ccalfcoeff
cr
[j]=ccalfapscoeff
cr
[slice_cross_component_alf_cr_aps_id][j]
[0846]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于1时,如下导出ccalfcoeff
cr
[j],j=0..13的元素:
[0847]
ccalfcoeff
cr
[j]=ccalftemporalcoeff
cr
[temporalid][j]
[0848]
应当指出的是,jvet-o2001为语法元素non_reference_picture_flag提供了以下语法和语义:
[0849][0850]
non_reference_picture_flag等于1指定包含切片的图片决不能用作参考图片。non_reference_picture_flag等于0指定包含切片的图片可以或者不可以用作参考图片。
[0851]
对于表23,在一个示例中,根据本文的技术,以下约束可以添加到语法元素slice_cross_component_alf_cb_aps_id和slice_cross_componeiit_alf_cr_aps_id的相应语义中:
[0852]
当slice_cross_component_alf_cb_enabled_flag等于1并且slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag等于0时,比特流符合性要求对于具有adaptation_parameter_set_id等于slice_cross_component_alf_cb_aps_id的alf aps,alf_cross_component_cb_filter_signal_flag等于1。
[0853]
当slice_cross_component_alf_cr_enabled_flag等于1并且slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag等于0时,比特流符合性要求对于
具有adaptation_parameter_set_id等于slice_cross_component_alf_cr_aps_id的alf aps,alf_cross_component_cr_filter_signal_flag等于1。
[0854]
在一个示例中,根据本文的技术,语法元素slice_cross_component_alf_cb_reuse_temporal_layer_filter_flag和slice_cross_component_alf_cr_reuse_temporal_layer_filter_flag的语义可以基于以下步骤,slice_alf_aps_id_luma[i]指定切片的亮度分量引用的第i个alf aps的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_alf_aps_id_luma[i]的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0855]
对于帧内切片和irap图片中的切片,slice_alf_aps_id_luma[i]不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[0856]
对于在0至slice_num_alf_aps_ids_luma的范围内(包括端值)的i,比特流符合性要求具有adaptation_parameter_set_id等于slice_alf_aps_id_luma[i]的alf aps,alf_luma_filter_signal_flag等于1。
[0857]
slice_alf_chroma_idc等于0指定自适应环路滤波器不适用于cb和cr颜色分量。slice_alf_chroma_idc等于1指示自适应环路滤波器适用于cb颜色分量。slice_alf_chroma_idc等于2指示自适应环路滤波器适用于cr颜色分量,slice_alf_chroma_idc等于3指示自适应环路滤波器适用于cb和cr颜色分量。当slice_alf_chroma_idc不存在时,推断其等于0。
[0858]
slice_alf_aps_id_chroma指定切片的色度分量引用的alf aps的adaptation_parameter_set_id。具有等于alf aps的aps_params_type和等于slice_alf_aps_id_chroma的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[0859]
对于帧内切片和irap图片中的切片,slice_alf_aps_id_chroma不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[0860]
比特流符合性要求对于adaptation_parameter_set_id等于slice_alf_aps_id_chroma的alf aps,alf_chroma_filter_signal_flag等于1。
[0861]
此外,jvet-o2001包括序列参数集语法结构中的以下语法元素:
[0862]
sps_sao_enabled_flag等于1指定在解块滤波过程之后对重构图片应用样本自适应偏移过程。sps_sao_enabled_flag等于0指定在解块滤波器过程之后不对重构图片应用样本自适应偏移过程。
[0863]
sps_alf_enabled_flag等于0指定禁用自适应环路滤波器。sps_alf_cnablcd_flag等于1指定启用自适应环路滤波器。
[0864]
sps_lmcs_enabled_flag等于1指定在cvs中使用具有色度缩放的亮度映射。sps_lmcs_enabled_flag等于0指定在cvs中不使用具有色度缩放的亮度映射。
[0865]
loop_filter_across_subpic_enabled_flag[i]等于1指定可跨cvs中的每个编码图片的第i个子图片的边界执行循环中滤波操作。在loop_filter_across_subpic_enabled_flag[i]等于0指定不跨cvs中的每个编码图片的第i个子图片的边界执行循环中滤波操作。当不存在时,推断loop_filter_across_subpic_enabled_pic_flag[i]的值等于1。
[0866]
并且图片参数集语法结构中的以下语法元素:
[0867]
cabac_init_present_flag等于1指定引用pps的切片标头中存在cabac_init_flag。cabac_init_present_flag等于0指定引用pps的切片标头中不存在cabac_init_flag。
[0868]
deblocking_filter_override_enabled_flag等于1指定引用pps的图片的切片标头中存在deblocking_filter_override_flag。deblocking_filter_override_enabled_flag等于0指定引用pps的图片的切片标头中不存在deblocking_filter_override_flag。当不存在时,推断deblocking_filter_override_enabled_flag的值等于0。
[0869]
loop_filter_across_bricks_enabled_flag等于1指定可跨参考pps的图片中的砖块边界执行循环中滤波操作。loop_filter_across_bricks_enabled_flag等于0指定不跨参考pps的图片中的砖块边界执行循环中滤波操作。循环中滤波操作包括解块滤波器、样本自适应偏移滤波器和自适应环路滤波器操作。当不存在时,推断loop_filter_across_bricks_enabled_flag的值等于1。
[0870]
loop_filter_across_slices_enabled_flag等于1指定可跨参考pps的图片中的切片边界执行循环中滤波操作。loop_filter_across_slice_enabled_flag等于0指定不跨参考pps的图片中的切片边界执行循环中滤波操作。循环中滤波操作包括解块滤波器、样本自适应偏移滤波器和自适应环路滤波器操作。当不存在时,推断loop_filter_across_slices_enabled_flag的值等于0。
[0871]
此外,对于表23,变量chromaarraytype、subwidthc和subheightc可以如表28中所提供导出:
[0872][0873]
表28
[0874]
此外,对于表23,jvet-o2001包括序列参数集语法结构中的以下语法元素:
[0875]
log2_ctu_size_minus5加5指定每个ctu的亮度编码树块大小。比特流符合性要求log2_ctu_size_minus5的值小于或等于2。
[0876]
log2_min_luma_coding_block_size_minus2加2指定最小亮度编码块大小。
[0877]
变量ctblog2sizey、ctbsizey、mincblog2sizey、mincbsizey、ibcbufwidthy、ibcbufwidthc和vsize如下导出:
[0878]
ctblog2sizey=log2_ctu_size_minus5 5
[0879]
ctbsizey=1《《ctblog2sizey
[0880]
mincblog2sizey=log2_min_luma_coding_block_size_minus2 2
[0881]
mincbsizey=1《《mincblog2sizey
[0882]
ibcbufwidthy=128*128/ctbsizey
[0883]
ibcbufwidthc=ibcbufwidthy/subwidthc
[0884]
vsize=min(64,ctbsizey)
[0885]
变量ctbwidthc和ctbheightc分别指定每个色度ctb的阵列的宽度和高度,这两个变量可如下导出:
[0886]-如果chroma_format_idc等于0(单色)或separate_colour_plane_flag等于1,则ctbwidthc和ctbheightc均等于0。
[0887]-否则,ctbwidthc和ctbheightc如下导出:
[0888]
ctbwidthc=ctbsizey/subwidthc
[0889]
ctbheightc=ctbsizey/subheightc
[0890]
对于表24,在一个示例中,语义可以基于以下内容:
[0891]
ctu是编码树结构的根节点。
[0892]
阵列isavailable[cidx][x][y]指定(x,y)处的样本是否可用于指定的相邻块可用性的导出过程,对于cidx=0..2,x=0..ctbsizey-1并且y=o..ctbsizey-1如下初始化:
[0893]
isavailable[cidx][x][y]=false
[0894]
阵列isinsmr[x][y]指定(x,y)处的样本是否位于共享合并候选列表区域内,对于x=0..ctbsizey-1并且y=0..ctbsizey-1如下初始化:
[0895]
isinsmr[x][y]=false
[0896]
alf_ctb_flag[cidx][xctb》》ctblog2sizey][yctb》》ctblog2sizey]等于1指定将自适应环路滤波器应用于亮度位置(xctb,yctb)的编码树单元的cidx指示的颜色分量的编码树块。alf_ctb_flag[cidx][xctb》》ctblog2sizey][yctb》》ctblog2sizey]等于0指定不将自适应环路滤波器应用于亮度位置(xctb,yctb)的编码树单元的cidx指示的颜色分量的编码树块。
[0897]
当alf_ctb_flag[cidx][xctb》》ctblog2sizey][yctb》》ctblog2sizey]不存在时,推断其等于0。
[0898]
alf_ctb_use_first_aps_flag等于1指定使用adaptive_parameter_set_id等于slice_alf_aps_id_luma[0]的aps中的滤波器信息。alf_ctb_use_first_aps_flag等于0指定亮度ctb不使用adaptive_parameter_set_id等于slice_alf_aps_id_luma[0]的aps中的滤波器信息。当alf_ctb_use_first_aps_flag不存在时,推断其等于0。
[0899]
alf_use_aps_flag等于0指定将固定滤波器组中的一者应用于亮度ctb。alf_use_aps_flag等于1指定将来自aps的滤波器组应用于亮度ctb。当alf_use_aps_flag不存在时,推断其等于0。
[0900]
alf_luma_prev_filter_idx_minus1加1指定应用于亮度ctb的先前滤波器。alf_luma_prev_filter_idx_minus1的值应在0至slice_num_alf_aps_ids_luma-2的范围内(包括端值)。当alf_luma_prev_filter_idx_minus1不存在时,推断其等于0。
[0901]
指定位置(xctb,yctb)的亮度ctb的滤波器组索引的变量alfctbfiltsetidxy[xctb》》ctblog2sizey][yctb》》ctblog2sizey]如下导出:
[0902]-如果alf_ctb_use_first_aps_nag等于1,则将alfctbfiltsetidxy[xctb》》ctblog2sizey][yctb》》ctblog2sizey]设定为等于16。
[0903]-否则,如果alf_use_aps_flag等于0,则将alfctbfiltsetidxy[xctb》》
ctblog2sizey][yctb》》ctblog2sizey]设定为等于alf_luma_fixed_filter_idx。
[0904]-否则,将alfctbfiltsetidxy[xctb》》ctblog2sizey][yctb》》ctblog2sizey]设定为等于17 alf_luma_prev_filter_idx_minus1。
[0905]
alf_luma_fixed_filter_idx指定应用于亮度ctb的固定滤波器。alf_luma_fixed_filter_idx的值应在0至15的范围内(包括端值)。
[0906]
alf_ctb_filter_alt_idx[chromaidx][xctb》》ctblog2sizey][yctb》》ctblog2sizey]指定在亮度位置(xctb,yctb)的编码树单元中应用于色度分量的编码树块的另选色度滤波器的索引,其中对于cb,chromaidx等于0,对于cr,chromaidx等于1。当alf_ctb_filter_alt_idx[chromaidx][xctb》》ctblog2sizey][yctb》》ctblog2sizey]不存在时,推断其等于零。
[0907]
alf_cross_component_cb_flag[xl/ccalfwidthcbl][yl/ccalfheightcbl]等于0指示不将交叉分量cb滤波器应用于亮度位置(xl,yl)处的cb颜色分量样本块。alf_cross_component_cb_flag[xl/ccalfwidthcbl][yl/ccalfheightcbl]等于1指示将交叉分量cb滤波器应用于亮度位置(xl,yl)处的cb颜色分量样本块。
[0908]
alf_cross_component_cr_flag[xl/ccalfwidthcbl][yl/ccalfheightcbl]等于0指示不将交叉分量cr滤波器应用于亮度位置(xl,yl)处的cr颜色分量样本块。alf_cross_component_cr_flag[xl/ccalfwidthcbl][yl/ccalfheightcbl]等于1指示将交叉分量cr滤波器应用于亮度位置(xl,yl)处的cr颜色分量样本块。
[0909]
应当指出的是,在一个示例中,[xl/ccalfwidthcbl][yl/ccalfheightcbl]可以使用移位运算而不是/来表示。
[0910]
此外,对于表24,jvet-o2001包括图片参数集语法结构中的以下语法元素:
[0911]
pic_width_in_luma_samples指定引用pps的每个解码图片的宽度,单位为亮度样本。pic_width_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_width_max_in_luma_samples。
[0912]
当subpics_present_flag等于1时,pic_width_in_luma_samples的值应等于pic_width_max_in_luma_samples。
[0913]
pic_height_in_luma_samples指定引用pps的每个解码图片的高度,单位为亮度样本。pic_height_in_luma_samples应不等于0并且应为max(8,mincbsizey)的整数倍,并且应为大于或等于pic_height_max_in_luma_samples。
[0914]
当subpics_present_flag等于1时,pic_height_in_luma_samples的值应等于pic_height_max_in_luma_samples。
[0915]
让refpicwidthinlumasamples和refpicheightinlumasamples分别是引用该pps的当前图片的参考图片的pic_width_in_luma_samples和pic_height_in_luma_samples。比特流符合性要求满足所有以下条件:
[0916]-pic_width_in_luma_samples*2应大于或等于refpicwidthinlumasamples。
[0917]-pic_height_in_luma_samples*2应大于或等于refpicheightinlumasamples。
[0918]-pic_width_in_luma_samples应大于或等于refpicwidthinlumasamples*8。
[0919]-pic_height_in_luma_samples应大于或等于refpicheightinlumasamples*8。
[0920]
变量picwidthinctbsy、picheightinctbsy、picsizeinctbsy、
picwidthinmincbsy、picheightinmincbsy、picsizeinmincbsy、picsizeinsamplesy、picwidthinsamplesc和picheightinsamplesc如下导出:
[0921]
picwidthinctbsy=ceil(pic_width_in_luma_samples
÷
ctbsizey)
[0922]
picheightinctbsy=ceil(pic_height_in_luma_samples
÷
ctbsizey)
[0923]
picsizeinctbsy=picwidthinctbsy*picheightinctbsy
[0924]
picwidthinmincbsy=pic_width_in_luma_samples/mincbsizey
[0925]
picheightinmincbsy=pic_height_in_luma_samples/mincbsizey
[0926]
picsizeinmincbsy=picwidthinmincbsy*picheightinmincbsy
[0927]
picsizeinsamplesy=pic_width_in_luma_samples*pic_height_in_luma_samples
[0928]
picwidthinsamplesc=pic_width_in_luma_samples/subwidthc
[0929]
picheightinsamplesc=pic_height_in_luma_samples/subheightc
[0930]
此外,jvet-o2001包括图片参数集语法结构中的以下语法元素:
[0931]
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。
[0932]
pps_num_ver_virtual_boundaries指定pps中存在的pps_virtual_boundaries_pos_x[i]语法元素的数量。当pps_virtualboundariespos_x[i]不存在时,推断其等于0。
[0933]
pps_virtual_boundaries_pos_x[i]用于计算ppsvirtualboundariesposx[i]的值,其指定第i个竖直虚拟边界的位置,单位为亮度样本。pps_virtual_boundaries_pos_x[i]应在1至ceil(pic_width_in_luma_samples
÷
a 8)-1的范围内(包括端值)。
[0934]
垂直虚拟边界的位置ppsvirtualboundariesposx[i]如下导出:
[0935]
ppsvirtualboundariesposx[i]=pps_virtual_boundaries_pos_x[i]*8
[0936]
任何两个竖直虚拟边界之间的距离应大于或等于ctbsizey个亮度样本。
[0937]
pps_num_hor_virtual_boundaries指定pps中存在的pps_virtual_boundaries_pos_y[i]语法元素的数量。当pps_num_hor_virtual_boundaries不存在时,推断其等于0。
[0938]
pps_virtual_boundaries_pos_y[i]用于计算ppsvirtualboundariesposy[i]的值,其指定第i个水平虚拟边界的位置,单位为亮度样本。pps_virtual_boundaries_pos_y[i]应在1至ceil(pic_height_in_luma_samples
÷
8)-1的范围内(包括端值)。
[0939]
水平虚拟边界的位置ppsvirtualboundariesposy[i]如下导出:
[0940]
ppsvirtualboundariesposy[i]=pps_virtual boundaries_pos_y[i]*8
[0941]
任何两个水平虚拟边界之间的距离应大于或等于ctbsizey个亮度样本。
[0942]
如上所提供,例如,对于表8c和表22,可以发信号通知一个或多个滤波器语法元素交叉分量cb和cr滤波器组(例如,在alf_data()中)。在一个示例中,根据本文的技术,可以针对解码器(例如,存储在解码器存储器中)限定一个或多个交叉分量滤波器组。也就是说,可以限定默认交叉分量滤波器组。此外,在一个示例中,可以对交叉分量滤波器组进行索
引,并且可以发信号通知索引值以指示要应用的交叉分量滤波器组。此外,默认交叉分量滤波器组可以与发信号通知的交叉分量滤波器组组合使用。也就是说,例如,在一个示例中,可以发信号通知标记,从而指示索引是否用于指示要应用的交叉分量滤波器组或者是否发信号通知交叉分量滤波器组。表29示出了根据本文的技术的alf_data()语法结构中的相关语法的示例,其中发信号通知标记,从而指示索引是否用于指示要应用的交叉分量滤波器组或者是否发信号通知交叉分量滤波器组。
[0943]
[0944][0945]
表29
[0946]
对于表29,语义可以基于如上提供的语义以及以下语义:
[0947]
alf_cross_component_cb_fixed_filter_idx_flag[k]等于1指定存在第k个交叉分量cb滤波器语法元素alf_cross_component_cb_fixed_filter_idx[k]。alf_cross_component_cb_fixed_filter_idx_flag[k]等于0指定不存在第k个交叉分量cb滤波器语法元素alf_cross_component_cb_fixed_filter_idx[k]。当alf_cross_component_cb_fixed_filter_idx_flag[k]不存在时,推断其等于0。
[0948]
alf_cross_component_cb_fixed_filter_idx[k]指定用于第k个交叉分量cb滤波器组的固定滤波器组的索引。
[0949]
当alf_cross_component_cb_fixed_filter_idx_flag[k]等于1时,ccalfcoeffcb[j],j=0..7的元素如下导出:
[0950]
ccalfcoeffcb[j]=ccalffixedcoeff[alf_cross_component_cb_fixed_filter_idx[k]][j]
[0951]
alf_cross_component_cr_fixed_filter_idx_flag[k]等于1指定存在交叉分量cr滤波器语法元素alf_cross_component_cr_fixed_filter_idx[k]。alf_cross_component_cr_fixed_filter_idx_flag[k]等于0指定不存在交叉分量cr滤波器语法元素alf_cross_component_cr_fixed_filter_idx[k]。当alf_cross_component_cr_fixed_filter_idx_flag[k]不存在时,推断其等于0。
[0952]
alf_cross_component_cr_fixed_filter_idx[k]指定用于第k个交叉分量cr滤波器组的固定滤波器组的索引。
[0953]
当alf_cross_component_cr_fixed_filter_idx_flag[k]等于1时,ccalfcoeffcr[j],j=0..7的元素如下导出:
[0954]
ccalfcoeffcr[j]=ccalffixedcoeff[alf_cross_component_cr_fixed_filter idx[k]][j]
[0955]
固定滤波器系数ccalffixedcoeff[i][j],i=0..7,j=0..7并且如下导出:
[0956][0957]
应当指出的是,在以上对于表29提供的示例中,为cb和cr提供了相同的默认滤波器组,即从ccalffixedcoeff导出的滤波器。在其他示例中,可以限定另外的默认滤波器组。例如,可以分别针对cb和cr限定不同的默认滤波器组。此外,对于表29,应当指出的是,固定滤波器组包括与发信号通知的系数相同数量的系数(即,两种情况下为8)。因此,例如,根据以下提供的示例滤波过程,具有相同的形状。应当指出的是,在一些示例中,固定滤波器组和发信号通知的系数滤波器可以具有不同的大小和/或形状。在此类示例中,滤波过程可以描述对具有特定形状/大小的每个滤波器的滤波。
[0958]
在一个示例中,根据本文的技术,例如,对于上文对于表22至表29提供的语法和语义,可以基于以下执行自适应环路滤波器过程:
[0959]
该过程的输入是在自适应环路滤波器recpicture
l
之前的重构图片样本阵列并且当chromaarraytype不等于0时,是阵列recpicture
cb
和recpicture
cr

[0960]
该过程的输出是在自适应环路滤波器alfpicture
l
之后的修改的重构图片样本阵列并且当chromaarraytype不等于0时,是阵列ccalfpicture
cb
和ccalfpicture
cr

[0961]
自适应环路滤波器alfpicture
l
之后的修改的重构图像样本阵列中的样本值,并且当chromaarraytype不等于0时,阵列alfpicture
cb
和alfpicture
cr
最初被设定为等于自适应环路滤波器recpicture
l
之前的重构图像样本阵列中的样本值,并且当chromaarraytype不等于0时,分别是阵列recpicture
cb
和recpicture
cr

[0962]
应用以下有序步骤:
[0963]-对于具有亮度编码树块位置(rx,ry)的每个编码树单元,其中rx=0..picwidthinctbsy-1并且ry=0..picheightinctbsy-1,以下适用:
[0964]-当alf_ctb_flag[0][rx][ry]等于1时,调用针对指定的亮度样本的编码树块滤波过程,其中recpicture
l
、alfpicture
l
和设定为等于(rx《《ctblog2sizey,ry《《ctblog2sizey)的亮度编码树块位置(xctb,yctb)作为输入,并且输出为修改的滤波图片alfpicture
l

[0965]-当chromaarraytype不等于0并且alf_ctb_flag[1][rx][ry]等于1时,调用针对指定的色度样本的编码树块滤波过程,其中recpicture被设定为等于recpicture
cb
,alfpicture被设定为等于alfpicture
cb
,色度编码树块位置(xctbc,yctbc)被设定为等于
[0966]-((rx《《ctblog2sizey)/subwidthc,(ry《《ctblog2sizey)/subheightc),并且另选色度滤波器索引altidx被设定为等于alf_ctb_filter_alt_idx[0][rx][ry]作为输入,并且输出为修改的滤波图片alfpicture
cb

[0967]-当chromaarraytype不等于0并且alf_ctb_flag[2][rx][ry]等于1时,调用针对指定的色度样本的编码树块滤波过程,其中recpicture被设定为等于recpicture
cr
,alfpicture被设定为等于alfpicture
cr
,色度编码树块位置(xctbc,yctbc)被设定为等于((rx《《ctblog2sizey)/subwidthc,(ry《《ctblog2sizey)/subheightc),并且另选色度滤波器索引altidx被设定为等于alf_ctb_filter_alt_idx[0][rx][ry]作为输入,并且输出为修改的滤波图片alfpicture
cr

[0968]-对于每个亮度位置(rx,ry),其中rx=0..pic_width_in_luma_samples/ccalfwidthcbl-1并且ry=0..pic_height_in_luma_samples/ccalfheightcbl-1,以下适用:
[0969]-当chromaarraytype不等于0并且alf_cross_component_cb_flag[rx][ry]等于1时,调用以下针对指定的色度样本块的交叉分量滤波过程,其中recpicture
l
被设定为等于recpicture
l
,alfpicturec被设定为等于alfpicture
cb
,色度样本块位置(xc,yc)被设定为等于(rx*ccalfwidthcbl/subwidthc,ry*ccalfheightcbl/subheightc),ccalfwidth被设定为等于ccalfwidthcbl/subwidthc,ccalfheight被设定为等于ccalfheightcbl/subheightc,并且交叉分量滤波器系数ccalfcoeff[j]被设定为等于ccalfcoeff
cb
[j],j=0..13作为输入,并且输出为修改的滤波图片ccalfpicture
cb

[0970]-对于每个亮度位置(rx,ry),其中rx=0..pic_width_in_luma_samples/ccalfwidthcrl-1并且ry=0..pic_height_in_luma_samples/ccalfheightcrl-1,以下适用:
[0971]-当chromaarraytype不等于0并且alf_cross_component_cr_flag[rx][ry]等于1时,调用以下针对指定的色度样本块的交叉分量滤波过程,其中recpicture
l
被设定为等于recpicture
l
,alfpicturec被设定为等于alfpicture
cr
,色度样本块位置(xc,yc)被设定为等于(rx*ccalfwidthcrl/subwidthc,ry*ccalfheightcrl/subheightc),ccalfwidth被设定为等于ccalfwidthcrl/subwidthc,ccalfheight被设定为等于ccalfheightcrl/subheightc,并且交叉分量滤波器系数ccalfcoeff[j]被设定为等于ccalfcoeffcr[j],j=0..13作为输入,并且输出为修改的滤波图片ccalfpicture
cr

[0972]
用于色度样本块的交叉分量滤波过程
[0973]
该过程的输入为:
[0974]-在亮度自适应环路滤波过程之前重构的亮度图片样本阵列recpicture
l

[0975]-滤波后的重构的色度图像样本阵列alfpicturec,
[0976]-色度位置(xc,yc),其指定当前色度样本块相对于当前图片左上样本的左上样本,
[0977]-色度样本块的宽度ccalfwidth
[0978]-色度样本块的高度ccalfheight
[0979]-交叉分量滤波器系数ccalfcoeff[j],j=0..13
[0980]
该过程的输出是修改的滤波的重构的色度图片样本阵列ccalfpicture。编码树块亮度位置(xctb,yctb)如下导出:
[0981]
xctb=(((xc*subwidthc)》》ctblog2sizey)《《ctblog2sizey
[0982]
yctb=(((yc*subheightc)》》ctblog2sizey)《《ctblog2sizey
[0983]
对于滤波后的重构的色度样本ccalfpicture[xc x][yc y]的导出,样本的当前色度块内的每个重构的色度样本alfpicturec[xc x][yc y],x=0..ccalfwidth-1,y=0..ccalfheight-1如下滤波:
[0984]-将在色度位置(xc x,yc y)处与当前色度样本对应的亮度位置(xl,yl)设定为等于((xc x)*subwidthc,(yc y)*subheightc)
[0985]-阵列recpicture
l
内部的亮度位置(h
xl i
,v
yl j
),i=-2..2,j=-2..3如下导出:
[0986]-如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xl-ppsvirtualboundariesposx[n]大于或等于0且小于3,则以下适用:
[0987]hxl i
=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xl i)
[0988]-否则,如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xl大于或等于0且小于4,则以下适用:
[0989]hx i
=clip3(0,ppsvirtualboundariesposxf n]-1,xl i)
[0990]-否则,以下适用:
[0991]hx i
=clip3(0,pic_width_in_luma_samples-1,xl i)
[0992]-如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yl-ppsvirtuaiboundariesposy[n]大于或等于0且小于3,则以下适用:
[0993]vy j
=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yl j)
[0994]-否则,如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yl大于0且小于4,则以下适用:
[0995]vy j
=clip3(0,ppsvirtualboundariesposy[n]-1,yl j)
[0996]-否则,以下适用:
[0997]vy j
=clip3(0,pic_height_in_luma_samples-1,yl j)
[0998]-变量clipleftpos、cliprightpos、cliptoppos和clipbottompos通过用(xctb,
yctb)和(xl-xctb,yl-yctb)作为输入调用如下指定的alf边界位置导出过程来导出。
[0999]-根据垂直亮度样本位置yl、clipleftpos和cliprightpos在表30中指定垂直样本位置偏移ym2、ym1、yp1、yp2和yp3。
[1000]-根据水平亮度样本位置xl、clipleftpos和cliprightpos在表31中指定水平样本位置偏移xm1、xm2、xp1和xp2。
[1001]-变量curr如下导出:
[1002]
curr=alfpicturec[xc x,yc y]
[1003]-交叉分量滤波器系数f[j]的阵列如下导出,其中j=0..13:
[1004]
f[j]=ccalfcoeff[j]
[1005]-变量sum如下导出:
[1006]
sum=f[0]*recpicture
l
[h
x
,v
y-ym2
]
[1007]
f[1]*recpicture
l
[h
x xm1
,v
y ym1
]
[1008]
f[2]*recpicture
l
[h
x
,v
y-ym1
]
[1009]
f[3]*recpicture
l
[h
x xp1
,v
y ym1
]
[1010]
fl 4]*recpicture
l
[h
x xm2
,vy]
[1011]
f[5]*recpicture
l
[h
x xm1
,vy]
[1012]
f[6]*recpicture
l
[h
x
,vy]
[1013]
f[7]*recpicture
l
[h
x xp1
,vy]
[1014]
f[4]*recpicture
l
[h
x xp2
,vy]
[1015]
f[4]*recpicture
l
[h
x xm2
,vy
yp1
]
[1016]
f[8]*recpicture
l
[h
x xm1
,vy
yp1
]
[1017]
f[9]*recpicture
l
[h
x
,v
y yp1
]
[1018]
f[10]*recpicture
l
[h
x xp1
,v
y yp1
]
[1019]
f[4]*recpicture
l
[h
x xp2
,v
y yp1
]
[1020]
f[11]*recpicture
l
[h
x xm1
,v
y yp2
]
[1021]
f[12]*recpicture
l
[h
x
,v
y yp2
]
[1022]
f[13]*recpicture
l
[h
x xp1
,v
y yp2
]
[1023]
f[0]*recpicture
l
[h
x
,v
y yp3
]
[1024]
sum=curr (sum 64)》》7)
[1025]-修饰的滤波的重构的色度图片样本阵列ccalfpicture[xc x][yc y]如下导出:
[1026]
ccalfpicture[xc x][yc y]=clip3(0,(1《《bitdepthc)-1,sum)
[1027]
条件ym2ym1yp1yp2yp3yl==cliptoppos 1-1-1123yl==cliptoppos00123yl==clipbottompos-1-2-1000yl==clipbottompos-2-2-1111yl==clipbottompos-3-2-1122其他情况-2-1123
[1028]
表30
[1029][1030][1031]
表31
[1032]
alf边界位置导出
[1033]
该过程的输入为:
[1034]-亮度位置(xcb,ycb),其指定当前亮度编码树块相对于当前图片左上样本的左上样本,
[1035]-亮度位置(x,y),其指定当前样本相对于当前亮度编码树块的左上样本。
[1036]
该过程的输出为:
[1037]-左垂直边界位置clipleftpos,
[1038]-右垂直边界位置cliprightpos,
[1039]-上水平边界位置cliptoppos,
[1040]-下水平边界位置clipbottompos。
[1041]
将变量clipleftpos、cliprightpos、cliptoppos和clipbottompos设定为等于-128。
[1042]
变量cliptoppos如下修改:
[1043]-如果当前编码树块的底部边界不是图片的底部边界并且y-(ctbsizey-4)大于或等于0,则将变量cliptoppos设定为等于yctb ctbsizey-4。
[1044]-否则,如果对于任何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,则以下适用:
[1045]
cliptoppos=ppsvirtualboundariesposy[n]
[1046]-否则,如果y小于3,并且当前编码树块的顶部边界不是图片的顶部边界,并且以下条件中的一个或多个为真,则将变量cliptoppos设定为等于yctb:
[1047]-如果当前编码树块的顶部边界是砖块的顶部边界,并且loop_filter_across_bricks_enabled_flag等于0。
[1048]-如果当前编码树块的顶部边界是切片的顶部边界,并且loop_filter_across_slices_enabled_flag等于0。
[1049]-如果当前编码树块的顶部边界是子图片的顶部边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。
[1050]
变量clipbottompos如下修改:
[1051]-如果当前编码树块的底部边界不是图片的底部边界并且ctbsizey-4-y大于0且
小于4,则将变量clipbottompos设定为等于yctb ctbsizey-4。
[1052]-否则,如果对于任何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,则以下适用:
[1053]
clipbottompos=ppsvirtualboundariesposy[n]
[1054]-否则,如果ctbsizey-y小于4,并且当前编码树块的底部边界不是图片的底部边界,并且以下条件中的一个或多个为真,则将变量clipbottompos设定为等于yctb ctbsizey:
[1055]-如果当前编码树块的底部边界是砖块的底部边界,并且loop_filter_across_bricks_enabled_flag等于0。
[1056]-如果当前编码树块的底部边界是切片的底部边界,并且loop_filter_across_slices_enabled_flag等于0。
[1057]-如果当前编码树块的底部边界是子图片的底部边界,并且loop_filter_across_subpic_enabled_flag[subpiddx]等于0。
[1058]
变量clipleftpos如下修改:
[1059]-如果对于任何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,则以下适用:
[1060]
clipleftpos=ppsvirtualboundariesposx[n]
[1061]-否则,如果x小于3,当前编码树块的左部边界不是图片的左部边界,并且以下条件中的一个或多个为真,则将变量clipleftpos设定为等于xctb:
[1062]-如果当前编码树块的左部边界是砖块的左部边界,并且loop_filter_across_bricks_enabled_flag等于0。
[1063]-如果当前编码树块的左部边界是切片的左部边界,并且loop_filter_across_slices_enabled_flag等于0。
[1064]-如果当前编码树块的左部边界是子图片的左部边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。
[1065]
变量cliprightpos如下修改:
[1066]-如果对于任何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,则以下适用:
[1067]
cliprightpos=ppsvirtualboundariesposx[n]
[1068]-否则,如果ctbsizey-x小于4,并且当前编码树块的右部边界不是图片的右部边界,并且以下条件中的一个或多个为真,则将变量cliprightpos设定为等于xctb ctbsizey:
[1069]-如果当前编码树块的右部边界是砖块的右部边界,并且loop_filter_across_
bricks_enabled_flag等于0。
[1070]-如果当前编码树块的右部边界是切片的右部边界,并且loop_filter_across_slices_enabled_flag等于0。
[1071]-如果当前编码树块的右部边界是子图片的右部边界,并且loop_filter_across_subpic_enabled_flag[subpicidx]等于0。
[1072]
如上所述,可以根据cabac等对语法元素进行熵编码。在一个示例中,根据本文的技术,alf_cross_component_cb_flag和/或alf_cross_component_cr_flag的二值化可以是具有最大值cmax=1的固定长度fl二值化。此外,在一个示例中,根据本文的技术,对于alf_cross_component_cb_flag和/或alf_cross_component_cr_flag,对应于cabac编码的概率状态索引的两个变量pstateidx0和pstateidx1可以如下初始化:
[1073]
表32和表33包含在分配给语法元素alf_cross_component_cb_flag和alf_cross_component_cr_flag的上下文变量的初始化中使用的6位变量initvalue的值。在表32和表33中,变量ctxidx的值被映射到initvalue和shiftidx。应当注意的是,在表32和表33中,shiftidx值是用于导出状态转变过程的移位值。此外,值ep指示等效并且对应于jvet-o2001中的值35。
[1074][1075]
表32
[1076][1077]
表33
[1078]
根据6位表条目initvalue,两个3位变量slopeidx和offsetidx如下导出:
[1079]
slopeidx=initvalue》》3
[1080]
offsetidx=initvalue&7
[1081]
在上下文变量的初始化中使用的变量m和n是从slopeidx和offsetidx导出的,如下所示:
[1082]
m=slopeidx-4
[1083]
n=(offsetidx*18) 1
[1084]
为初始化分配给pstateidx0和pstateidx1的两个值是从sliceqpy导出的,其是如上提供的那样导出的:
[1085]
鉴于变量m和n,初始化如下指定:
[1086]
prectxstate=clip3(1,127,((m*(clip3(0,51,sliceqpy)-16))》》1) n)
[1087]
为初始化分配给pstateidx0和pstateidx1的两个值如下导出:pstateidx0=
prectxstate《《3
[1088]
pstateidx1=prectxstate《《7
[1089]
由变量inittype指定的三种初始化类型中的每一者都需要初始化的ctxidx列在表34中。对于p和b切片类型,inittype的导出取决于cabac_init_flag语法元素的值。变量inittype如下导出:
[1090][1091][1092]
表34
[1093]
根据表34,变量ctxidxoffset被设定为等于inittype。变量ctxidx被设定为等于ctxinc和ctxidxoffset的总和。
[1094]
在一个示例中,ctxinc的分配如下指定,其中condl和conda在表35中指定:
[1095]-对于语法元素alf_cross_component_cb_flag[x0/ccalfwidthcbl][y0/ccalfheightcbl]和alf_cross_component_cr_flag[x0/ccalfwidthcrl][y0/ccalfheightcrl]:
[1096]
ctxinc=(condl&&availablel) (conda&&availablea) ctxsetidx*3
[1097][1098]
表35
[1099]
对于表35,在一个示例中,可以将condl和/或conda中的语法元素中的每一者与0进行比较,例如,可以添加“==0”测试。
[1100]
在一个示例中,根据本文的技术,交叉分量滤波可以包括使用具有零增益的滤波器。在一个示例中,零增益滤波器的系数总和为零。应当指出的是,系数总和为零的零增益滤波器可以为被发信号通知的多个系数提供更好的编码效率,因为可以确定和使用未发信号通知的滤波器系数。也就是说,当零增益滤波器的系数总和为零时,如果剩余的滤波器系
数的值已知,则可以导出该滤波器的系数的值,并且因此不需要明确地发信号通知这些系数中的一者,从而导致位率节省。此外,应当指出的是,在其他示例中,滤波器可以被分成两个或更多个系数子集,并且每个子集中的系数值可能需要求和为特定值(例如,不一定为0的值)。例如,在一个示例中,滤波器可以被分成(例如,水平、垂直或约对角线)成大小相等的两半。第一半部中的系数可以被限制为总和为预先确定的值(例如,0.5的固定点表示),并且第二半部中的系数可以被限制为总和减去该预先确定的值。该预先确定的值也可以是零。
[1101]
图20a至图20b示出了零增益滤波器的示例,其中系数的总和为零。也就是说,如图20a至图20b所示,对于滤波器支持样本的数量,发信号通知n、n-1个系数并导出一个系数。应当指出的是,使用零增益滤波器,其中系数的总和为零可以应用于本文所述的任何滤波器大小和形状。
[1102]
对于图20a,在一个示例中,对应的滤波过程可以基于以下内容:
[1103]
用于色度样本块的交叉分量滤波过程
[1104]
该过程的输入为:
[1105]-在亮度自适应环路滤波过程之前重构的亮度图片样本阵列recpicture
l

[1106]-滤波后的重构的色度图像样本阵列alfpicturec,
[1107]-色度位置(xc,yc),其指定当前色度样本块相对于当前图片左上样本的左上样本,
[1108]-色度样本块的宽度ccalfwidth
[1109]-色度样本块的高度ccalfheight
[1110]-交叉分量滤波器系数ccalfcoeff[j],j=0..7
[1111]
该过程的输出是修改的滤波的重构的色度图片样本阵列ccalfpicture。
[1112]
编码树块亮度位置(xctb,yctb)如下导出:
[1113]
xctb=(((xc*subwidthc)》》ctblog2sizey)《《ctblog2sizey
[1114]
yctb=(((yc*subheightc)》》ctblog2sizey)《《ctblog2sizey
[1115]
对于滤波后的重构的色度样本ccalfpicture[xc x][yc y]的导出,样本的当前色度块内的每个重构的色度样本alfpicturec[xc x][yc y],x=0..ccalfwidth-1,y=0..ccalfheight-1如下滤波:
[1116]-将在色度位置(xc x,yc y)处与当前色度样本对应的亮度位置(xl,yl)设定为等于((xc x)*subwidthc,(yc y)*subheightc)
[1117]-阵列recpicture
l
内部的亮度位置(h
xl i
,v
yl j
),i=-1..1,j=-1..2如下导出:
[1118]-如果对于任何n=0..pps num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xl-ppsvirtualboundariesposx[n]大于或等于0且小于3,则以下适用:
[1119]hxl i
=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xl i)
[1120]-否则,如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且
ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xl大于0且小于4,则以下适用:
[1121]hx i
=clip3(0,ppsvirtualboundariesposx[n]-1,xl i)
[1122]-否则,以下适用:
[1123]hx i
=clip3(0,pic_width_in_luma_samples-1,xl i)
[1124]-如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_fbter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yl-ppsvirtualboundariesposy[n]大于或等于0且小于3,则以下适用:
[1125]vy j
=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yl j)
[1126]-否则,如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yl大于0且小于4,则以下适用:
[1127]vy j
=clip3(0,ppsvirtualboundariesposy[n]-1,yl j)
[1128]-否则,以下适用:
[1129]vy j
=clip3(0,pic_height_in_luma_samples-1,yl j)
[1130]-变量clipleftpos、cliprightpos、cliptoppos和clipbottompos通过用(xctb,yctb)和(xl-xctb,yl-yctb)作为输入调用如下指定的alf边界位置导出过程来导出。
[1131]-根据垂直亮度样本位置yl、clipleftpos和cliprightpos在表30中指定垂直样本位置偏移ym2、ym1、yp1、yp2和yp3。
[1132]-根据水平亮度样本位置xl、clipleftpos和cliprightpos在表31中指定水平样本位置偏移xm1、xm2、yp1和xp2。
[1133]-变量curr如下导出:
[1134]
curr=alfpicturec[xc x,yc y]
[1135]-交叉分量滤波器系数f[j]的阵列如下导出,其中j=0..7:
[1136]
f[j]=ccalfcoeff[j]
[1137]
变量centervalue和总和如下导出:
[1138]
centervalue=recpicture
l
[h
x
,vy]
[1139]
sum=f[0]*(recpicture
l
[h
x
,v
y ym1
]-centervalue)
[1140]
f[1]*(recpicture
l
[h
x xm1
,vy]-centervalue)
[1141]
f[2]*(recpicture
l
[h
x xp1
,v
y ym1
]-centervalue)
[1142]
f[3]*(recpicture
l
[h
x xp1
,vy]-centervalue)
[1143]
f[4]*(recpicture
l
[h
x xm1
i,v
y yp1
]-centervalue)
[1144]
f[5]*(recpicture
l
[h
x
,v
y yp1
]-centervalue)
[1145]
f[6]*(recpicture
l
[h
x xp1
,v
y yp1
]-centervalue)
[1146]
f[7]*(recpicture
l
[h
x
,v
y yp2
]-centervalue)
[1147]
sum=curr (sum 64)》》7)
[1148]
修饰的滤波的重构的色度图片样本阵列ccalfpicture[xc x][yc y]如下导出:
[1149]
ccalfpicture[xc x][yc y]=clip3(0,(1《《bitdepthc)-1,sum)
[1150]
对于图20b,在一个示例中,对应的滤波过程可以基于以下内容:
[1151]
用于色度样本块的交叉分量滤波过程
[1152]
该过程的输入为:
[1153]-在亮度自适应环路滤波过程之前重构的亮度图片样本阵列recpicture
l

[1154]-滤波后的重构的色度图像样本阵列alfpicturec,
[1155]-色度位置(xc,yc),其指定当前色度样本块相对于当前图片左上样本的左上样本,
[1156]-色度样本块的宽度ccalfwidth
[1157]-色度样本块的高度ccalfheight
[1158]-交叉分量滤波器系数ccalfcoeff[j],j=0..5
[1159]
该过程的输出是修改的滤波的重构的色度图片样本阵列ccalfpicture。
[1160]
编码树块亮度位置(xctb,yctb)如下导出:
[1161]
xctb=(((xc*subwidthc)》》ctblog2sizey)《《ctblog2sizey
[1162]
yctb=(((yc*subheightc)》》ctblog2sizey)《《ctblog2sizey
[1163]
对于滤波后的重构的色度样本ccalfpicture[xc x][yc y]的导出,样本的当前色度块内的每个重构的色度样本alfpicturec[xc x][yc y],x=0..ccalfwidth-1,y=0..ccalfheight-1如下滤波:
[1164]-将在色度位置(xc x,yc y)处与当前色度样本对应的亮度位置(xl,yl)设定为等于((xc x)*subwidthc,(yc y)*subheightc)
[1165]-阵列recpicture
l
内部的亮度位置(h
xl i
,v
yl j
),i=-1..1,j=-1..1如下导出:
[1166]-如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xl-ppsvirtualboundariesposx[n]大于或等于0且小于3,则以下适用:
[1167]hsl i
=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xl i)
[1168]-否则,如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xl大于0且小于4,则以下适用:
[1169]hx i
=clip3(0,ppsvirtualboundariesposx[n]-1,xl i)
[1170]-否则,以下适用:
[1171]hx i
=clip3(0,pic_width_in_luma_samples-1,xl i)
[1172]-如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yl-ppsvirtualboundariesposy[n]大于或等于0且小于3,则以下适用:
[1173]vy j
=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yl j)
[1174]-否则,如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yl大于0且小于4,则以下适用:
[1175]vy j
=clip3(0,ppsvirtualboundariesposy[n]-1,yl j)
[1176]-否则,以下适用:
[1177]vy
j=clip3(0,pic_height_in_luma_samples-1,yl j)
[1178]-变量clipleftpos、cliprightpos、cliptoppos和clipbottompos通过用(xctb,yctb)和(xl-xctb,yl-yctb)作为输入调用如下指定的alf边界位置导出过程来导出。
[1179]-根据垂直亮度样本位置yl、clipleftpos和cliprightpos在表30中指定垂直样本位置偏移ym2、ym1、yp1、yp2和yp3。
[1180]-根据水平亮度样本位置xl、clipleftpos和cliprightpos在表31中指定水平样本位置偏移xm1、xm2、xp1和xp2。
[1181]-变量curr如下导出:
[1182]
curt=alfpicturec[xc x,yc y]
[1183]-交叉分量滤波器系数f[j]的阵列如下导出,其中j=0..5:f[j]=ccalfcoeff[j]
[1184]
变量centervalue和总和如下导出:
[1185]
centervalue=recpicture
l
[h
x
,vy]
[1186]
sum=f[0]*(recpicture
l
[h
x
,v
y ym1
]-centervalue)
[1187]
f[1]*(recpicture
l
[h
x xm1
,vy]-centervalue)
[1188]
f[2]*(recpicture
l
[h
x xp1
,vy]-centervalue)
[1189]
f[3]*(recpicture
l
[h
x xm1
,v
y yp1
]-centervalue)
[1190]
f[4]*(recpicture
l
[h
x
,v
y yp1
]-centervalue)
[1191]
f[5]*(recpicture
l
[h
x xp1
,v
y yp1
]-centervalue)
[1192]
sum=curr (sum 64)》》7)
[1193]
修饰的滤波的重构的色度图片样本阵列ccalfpicture[xc x][yc y]如下导出:
[1194]
ccalfpicture[xc x][yc y]=clip3(0,(1《《bitdepthc)-1,sum)
[1195]
在一个示例中,根据本文的技术,交叉分量滤波的实施方式可以基于以下语法和语义:
[1196]
[1197]
[1198][1199]
表36
[1200]
[1201][1202]
表37
[1203]
[1204][1205]
表38
[1206]
对于表36至表38,在一个示例中,语义可以基于如上提供的语义以及以下内容:
[1207]
alf_cross_component_cb_filter_signal_flag等于1指定发信号通知交叉分量cb滤波器。alf_cross_component_cb_filter_signal_flag等于0指定不发信号通知交叉分量cb滤波器。当chromaarraytype等于0时,alf_cross_component_cb_filter_signal_flag应等于0。
[1208]
alf_cross_component_cb_filter_signalled_minus1加1指定当前alf aps中发信号通知的交叉分量cb滤波器的数量。
[1209]
alf_cross_component_cb_coeff_abs[j]指定第j个交叉分量cb滤波器系数的绝对值。当alf_cross_component_cb_coeff abs[j]不存在时,推断其等于0。
[1210]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[1211]
alf_cross_component_cb_coeff_sign[j]如下指定第j个交叉分量cb滤波器系数的符号:
[1212]-如果alf_cross_component_cb_coeff_sign[j]等于0,则对应的交叉分量cb滤波器系数具有正值。
[1213]-否则(alf_cross_component_cb_sign[j]等于1),对应的交叉分量cb滤波器系数具有负值。
[1214]
当alf_cross_component_cb_coeff_sign[j]不存在时,推断其等于0。
[1215]
具有元素ccalfapscoeff
cb
[adaptation_parameter_set_id][j],j=0..7的交叉分量cb滤波器系数ccalfapscoeff
cb
[adaptation_parameter_set_id]如下导出:
[1216]
ccalfapscoeff
cb
[adaptation_parameter_set_id][j]=alf_cross_component_cb_coeff_abs[j]*(1-2*alf_cross_component_cb_coeff_sign[j])
[1217]
比特流符合性要求ccalfapscoeff
cb
[adaptation_parameter_set_id][j],j=
0..7的值应在-27至2
7-1的范围内(包括端值)。
[1218]
alf_cross_component_cr_filter_signal_flag等于1指定发信号通知交叉分量cr滤波器。alf_cross_component_cr_filter_signal_flag等于0指定不发信号通知交叉分量cr滤波器。当chromaarraytype等于0时,alf_cross_component_cr_filter_signal_flag应等于0。
[1219]
alf_cross_component_cr_filters_signalled_minus1加1指定当前alf aps中发信号通知的交叉分量cr滤波器的数量。
[1220]
alf_cross_component_cr_coeff_abs[j]指定第j个交叉分量cr滤波器系数的绝对值。当alf_cross_component_cr_coeff_abs[j]不存在时,推断其等于0。
[1221]
将指数golomb二值化uek(v)的阶数k设定为等于3。
[1222]
alf_cross_component_cr_coeff_sign[j]如下指定第j个交叉分量cr滤波器系数的符号:
[1223]-如果alf_cross_component_cr_coeff_sign[j]等于0,则对应的交叉分量cr滤波器系数具有正值。
[1224]-否则(alf_cross_component_cr_sign[j]等于1),对应的交叉分量cr滤波器系数具有负值。
[1225]
当alf_cross_component_cr_coeff_sign[j]不存在时,推断其等于0。
[1226]
具有元素ccalfapscoeff
cr
[adaptation_parameter_set_id][j],j=0..7的交叉分量cr滤波器系数ccalfapscoeff
cr
[adaptation_parameter_set_id]如下导出:
[1227]
ccalfapscoeff
cr
[adaptation_parameter_set_id][j]=alf_cross_component_cr_coeff_abs[j]*(1-2*alf_cross_component_cr_coeff_sign[j])
[1228]
比特流符合性要求ccalfapscoeff
cr
[adaptation_parameter_set_id][j],j=0..7的值应在-27至2
7-1的范围内(包括端值)。
[1229]
slice_cross_component_alf_cb_enabled_flag等于0指定不将交叉分量cb滤波器应用于cb颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量cb滤波器应用于cb颜色分量。当slice_cross_component_alf_cb_enabled_flag不存在时,推断其等于0。
[1230]
slice_cross_component_alf_cb_aps_id指定切片的cb颜色分量所标引的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_cross_component_alf_cb_aps_id的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[1231]
对于帧内切片和irap图片中的切片,slice_cross_component_alf_cb_aps_id不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[1232]
当slice_cross_component_alf_cb_enabled_flag等于1时,比特流符合性要求对于当前图片的所有切片,由slice_cross_component_alf_cb_aps_id引用的alf aps应相同。
[1233]
slice_cross_component_alf_cr_enabled_flag等于0指定不将交叉分量cr滤波器应用于cr颜色分量。slice_cross_component_alf_cb_enabled_flag等于1表明将交叉分量自适应loop_filter应用于cr颜色分量。当slice_cross_component_alf_cr_enabled_
flag不存在时,推断其等于0。
[1234]
slice_cross_component_alf_cr_aps_id指定切片的cr颜色分量所标引的adaptation_parameter_set_id。具有等于alf_aps的aps_params_type和等于slice_cross_component_alf_cr_aps_id的adaptation_parameter_set_id的aps nal单元的temporalid应小于或等于编码切片nal单元的temporalid。
[1235]
对于帧内切片和irap图片中的切片,slice_cross_component_alf_cr_aps_id不应引用与其他图片而不是包含帧内切片的图片或irap图片相关联的alf aps。
[1236]
当slice_cross_component_alf_cr_enabled_flag等于1时,比特流符合性要求对于当前图片的所有切片,由slice_cross_component_alf_cr_aps_id引用的alf aps应相同。
[1237]
alf_ctb_cross_component_cb_idc[xctb》》ctblog2sizey][yctb》》ctblog2sizey]等于0指示不将交叉分量cb滤波器应用于亮度位置(xctb,yctb)处的cb颜色分量样本块。alf_cross_component_cb_idc[xctb》》ctblog2sizey][yctb》》ctblog2sizey]不等于0指示将第alf_cross_component cb_idc[xctb》》ctblog2sizey][yctb》》ctblog2sizey]个交叉分量cb滤波器应用于亮度位置(xctb,yctb)处的cb颜色分量样本块。
[1238]
alf_ctb_cross_component_cr_idc[xctb》》ctblog2sizey][yctb》》ctblog2sizey]等于0指示不将交叉分量cr滤波器应用于亮度位置(xctb,yctb)处的cr颜色分量样本块。alf_cross_component_cr_idc[xctb》》ctblog2sizey][yctb》》ctblog2sizey]不等于0指示将第alf_cross_component cr_idc[xctb》》ctblog2sizey][yctb》》ctblog2sizey]个交叉分量cr滤波器应用于亮度位置(xctb,yctb)处的cr颜色分量样本块。
[1239]
在一个示例中,根据本文的技术,例如,对于上文对于表36至表38提供的语法和语义,可以基于以下执行自适应环路滤波器过程:
[1240]-对于具有亮度编码树块位置(rx,ry)的每个编码树单元,其中rx=0..picwidthinctbsy-1并且ry=0..picheightinctbsy-1,以下适用:
[1241]-当chromaarraytype不等于0并且alf_ctb_cross_component_cb_idc[rx][ry]不等于0时,用以下针对指定的色度样本块的交叉分量滤波过程,其中recpicture
l
被设定为等于recpicture
l
,alfpicturec被设定为等于alfpicture
cb
,色度编码树块位置(xctbc,yctbc)被设定为等于((rx《《ctblog2sizey)/subwidthc,(ry《《ctblog2sizey)/subheightc)),ccalfwidth被设定为等于(1《《《《ctblog2sizey)/subwidthc,ccalfheight被设定为等于(1《《《《ctblog2sizey)/subheightc,并且交叉分量滤波器系数ccalfcoeff[j]被设定为等于ccalfcoeff
cb
[slice_cross_component_alf_cb_aps_id][j],j=0..7作为输入,并且输出为修改的滤波图片ccalfpicture
cb

[1242]-当chromaarraytype不等于0并且alf_ctb_cross_component_cr_idc[rx][ry]不等于0时,用以下针对指定的色度样本块的交叉分量滤波过程,其中recpicture
l
被设定为等于recpicture
l
,alfpicturec被设定为等于alfpicture
cr
,色度编码树块位置(xctbc,yctbc)被设定为等于((rx《《ctblog2sizey)/subwidthc,(ry《《ctblog2sizey)/subheightc)),ccalfwidth被设定为等于(1《《《《ctblog2sizey)/subwidthc,ccalfheight被设定为等于(1《《《《ctblog2sizey)/subheightc,并且交叉分量滤波器系数ccalfcoeff[j]被设定为等于ccalfcoeff
cr
[slice_cross_component_alf_cr_aps_id][j],j=0..7作
为输入,并且输出为修改的滤波图片ccalfpicture
cr

[1243]
用于色度样本块的交叉分量滤波过程
[1244]
该过程的输入为:
[1245]-在亮度自适应环路滤波过程之前重构的亮度图片样本阵列recpicture
l

[1246]-滤波后的重构的色度图像样本阵列alfpicturec,
[1247]-色度位置(xctbc,yctbc),其指定当前色度编码树块相对于当前图片左上样本的左上样本,
[1248]-色度样本块的宽度ccalfwidth
[1249]-色度样本块的高度ccalfheight
[1250]-交叉分量滤波器系数ccalfcoeff[j],j=0..7
[1251]
该过程的输出是修改的滤波的重构的色度图片样本阵列ccalfpicture。
[1252]
编码树块亮度位置(xctb,yctb)如下导出:
[1253]
xctb=(((xctbc*subwidthc)》》ctblog2sizey)《《ctblog2sizey
[1254]
yctb=(((yctbc*subheightc)》》ctblog2sizey)《《ctblog2sizey
[1255]
对于滤波后的重构的色度样本ccalfpicture[xctbc x][yctbc y]的导出,样本的当前色度块内的每个重构的色度样本alfpicturec[xctbc x][yctbc y],x=0..ccalfwidth-1,y=0..ccalfheight-1如下滤波:
[1256]-将在色度位置(xctbc x,yctbc y)处与当前色度样本对应的亮度位置(xl,yl)设定为等于((xctbc x)*subwidthc,(yctbc y)*subheightc)
[1257]-阵列recpicture
l
内部的亮度位置(h
xl i
,v
yl j)
,i=-1..1,j=-1..2如下导出:
[1258]-如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xl-ppsvirtualboundariesposx[n]大于或等于0且小于3,则以下适用:
[1259]hxl i
=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xl i)
[1260]-否则,如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xl大于0且小于4,则以下适用:
[1261]hx 1
=clip3(0,ppsvirtualboundariesposx[n]-1,xl i)
[1262]-否则,以下适用:
[1263]hx i
=clip3(0,pic_width_in_luma_samples-1,xl i)
[1264]-如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yl-ppsvirtualboundariesposy[n]大于或等于0且小于3,则以下适用:
[1265]vy j
=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yl j)
[1266]-否则,如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yl大于0且小于4,则以下适用:
[1267]vy j
=clip3(0,ppsvirtualboundariesposy[n]-1,yl j)
[1268]-否则,以下适用:
[1269]vy j
=clip3(0,pic_height_in_luma_samples-1,yl j)
[1270]-变量clipleftpos、cliprightpos、cliptoppos和clipbottompos通过用(xctb,yctb)和(xl-xctb,yl-yctb)作为输入调用如上指定的alf边界位置导出过程来导出。
[1271]-根据垂直亮度样本位置yl、clipleftpos和cliprightpos在表39中指定垂直样本位置偏移ym1、yp1和yp2。
[1272]-根据水平亮度样本位置xl、clipleftpos和cliprightpos在表40中指定水平样本位置偏移xm1和yp1。
[1273]-变量curr如下导出:
[1274]
curr=alfpicturec[xctbc x,yctbc y]
[1275]-交叉分量滤波器系数f[j]的阵列如下导出,其中j=0..7:
[1276]
f[j]=ccalfcoeff[j]
[1277]-变量sum如下导出:
[1278]
sum=f[0]*recpicture
l
[h
x
,v
y ym1
]
[1279]
f[1]*recpicture
l
[h
x xm1
,vy]
[1280]
f[2]*recpicture
l
[h
x
,vy]
[1281]
f[3]*recpicture
l
[h
x xp1
,vy]
[1282]
f[4]*recpicture
l
[h
x xm1
,v
y yp1
]
[1283]
f[5]*recpicture
l
[h
x
,v
y yp1
]
[1284]
f[6]*recpicture
l
[h
x xp1
,v
y yp1
]
[1285]
f[7]*recpicture
l
[h
x
,vy
yp2
]
[1286]
sum=clip3(-(1《《(bitdepth
c-1)),(1《《(bitdepth
c-1))-1,sum)
[1287]
sum=curr (sum 64)》》7)
[1288]-修饰的滤波的重构的色度图片样本阵列ccalfpicture[xctbc x][yctbc y]如下导出:
[1289]
ccalfpicture[xctbc x][yctbc y]=clip3(0,(1《《bitdepthc)-1,sum)
[1290]
条件ym1yp1yp2yl==cliptoppos 1-111yl==cliptoppos001yl==clipbottompos-1001yl==clipbottompos-2-111其他情况-112
[1291]
表39
[1292]
条件xm1yp1
xl==clipleftpos00xl==cliprightpos-100xl==cliprightpos-2-11其他情况-11
[1293]
表40
[1294]
应当指出的是,基于为表36至表38提供的语法和语义的交叉分量滤波的实施方式提供了8抽头滤波器。在一个示例中,可以修改基于为表36至表38提供的语法和语义的交叉分量滤波的实施方式以提供6抽头滤波器。在6抽头滤波器的情况下,表36中的以下语法
[1295][1296]
将修改为
[1297][1298]
通过对语义进行以下修改,alf_cross_component_cb_coeff_sign[j]如下指定第j个交叉分量cb滤波器系数的符号:
[1299]-如果alf_cross_component_cb_coeff_sign[j]等于0,则对应的交叉分量cb滤波器系数具有正值。
[1300]-否则(alf_cross_component_cb_sign[j]等于1),对应的交叉分量cb滤波器系数具有负值。
[1301]
当alf_cross_component_cb_coeff_signl[j]不存在时,推断其等于0。
[1302]
具有元素ccalfapscoeff
cb
[adaptation_parameter_set_id][j],j=0..5的交叉分量cb滤波器系数ccalfapscoeff
cb
[adaptation_parameter_set_id]如下导出:
[1303]
ccalfapscoeff
cb
[adaptation_parameter_set_id][j]=alf_cross_component_cb_coeff_abs[j]*(1-2*alf_cross_component_cb_coeff_sign[j])
[1304]
比特流符合性要求ccalfapscoeff
cb
[adaptation_parameter_set_id][j],j=0..5的值应在-27至2
7-1的范围内(包括端值)。
[1305]
alf_cross_component_cr_coeff_sign[j]如下指定第j个交叉分量cr滤波器系数的符号:
[1306]-如果alf_cross_component_cr_coeff_sign[j]等于0,则对应的cross_component_cr滤波器系数具有正值。
[1307]-否则(alf_cross_component_cr_sign[j]等于1),对应的交叉分量cr滤波器系数具有负值。
[1308]
当alf_cross_component_cr_coeff_sign[j]不存在时,推断其等于0。
[1309]
具有元素ccalfapscoeff
cr
[adaptation_parameter_set_id][j],j=0..5的交叉分量cr滤波器系数ccalfapscoeff
cr
[adaptation_parameter_set_id]如下导出:
[1310]
ccalfapscoeff
cr
[adaptation_parameter_set_id][j]=alf_cross_component_cr_coeff_abs[j]*(1-2*alf_cross_component_cr_coeff_sign[j])
[1311]
比特流符合性要求ccalfapscoeff
cr
[adaptation_parameter_set_id][j],j=0..5的值应在-27至2
7-1的范围内(包括端值)。
[1312]
在6抽头滤波器的情况下,可以基于以下内容执行自适应环路滤波器过程:
[1313]-对于具有亮度编码树块位置(rx,ry)的每个编码树单元,其中rx=0..picwidthinctbsy-1并且ry=0..picheightinctbsy-1,以下适用:
[1314]-当chromaarraytype不等于0并且alf_ctb_cross_component_cb_idc[rx][ry]不等于0时,用以下针对指定的色度样本块的交叉分量滤波过程,其中recpicture
l
被设定为等于recpicture
l
,alfpicturec被设定为等于alfpicture
cb
,色度编码树块位置(xctbc,yctbc)被设定为等于((rx《《ctblog2sizey)/subwidthc,(ry《《ctblog2sizey)/subheightc)),ccalfwidth被设定为等于(1《《《《ctblog2sizey)/subwidthc,ccalfheight被设定为等于(1《《《《ctblog2sizey)/subheightc,并且交叉分量滤波器系数ccalfcoeff[j]被设定为等于ccalfcoeff
cb
[slice_cross_component_alf_cb_aps_id][j],j=0..5作为输入,并且输出为修改的滤波图片ccalfpicture
cb

[1315]-当chromaarraytype不等于0并且alf_ctb_cross_component_cr_idc[rx][ry]不等于0时,用以下针对指定的色度样本块的交叉分量滤波过程,其中recpicture
l
被设定为等于recpicture
l
,alfpicturec被设定为等于alfpicture
cr
,色度编码树块位置(xctbc,yctbc)被设定为等于((rx《《ctblog2sizey)/subwidthc,(ry《《ctblog2sizey)/subheightc)),ccalfwidth被设定为等于(1《《《《ctblog2sizey)/subwidthc,ccalfheight被设定为等于(1《《《《ctblog2sizey)/subheightc,并且交叉分量滤波器系数ccalfcoeff[j]被设定为等于ccalfcoeff
cr
[slice_cross_component_alf_cr_aps_id][j],j=0..5作为输入,并且输出为修改的滤波图片ccalfpicture
cr

[1316]
用于色度样本块的交叉分量滤波过程
[1317]
该过程的输入为:
[1318]-在亮度自适应环路滤波过程之前重构的亮度图片样本阵列recpicture
l

[1319]-滤波后的重构的色度图像样本阵列alfpicturec,
[1320]-色度位置(xctbc,yctbc),其指定当前色度编码树块相对于当前图片左上样本的左上样本,
[1321]-色度样本块的宽度ccalfwidth
[1322]-色度样本块的高度ccalfheight
[1323]-交叉分量滤波器系数ccalfcoeff[j],j=0..5
[1324]
该过程的输出是修改的滤波的重构的色度图片样本阵列ccalfpicture。
[1325]
编码树块亮度位置(xctb,yctb)如下导出:
[1326]
xctb=(((xctbc*subwidthc)》》ctblog2sizey)《《ctblog2sizey
[1327]
yctb=(((yctbc*subheightc)》》ctblog2sizey)《《ctblog2sizey
[1328]
对于滤波后的重构的色度样本ccalfpicture[xctbc x][yctbc y]的导出,样本的当前色度块内的每个重构的色度样本alfpicturec[xctbc x][yctbc y],x=0..ccalfwidth-1,y=0..ccalfheight-1如下滤波:
[1329]-将在色度位置(xctbc x,yctbc y)处与当前色度样本对应的亮度位置(xl,yl)设定为等于((xctbc x)*subwidthc,(yctbc y)*subheightc)
[1330]-阵列recpicture
l
内部的亮度位置(h
xl i
,v
yl j)
,i=-1..1,j=-1..1如下导出:
[1331]-如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且xl-ppsvirtualboundariesposx[n]大于或等于0且小于3,则以下适用:
[1332]hxl i
=clip3(ppsvirtualboundariesposx[n],pic_width_in_luma_samples-1,xl i)
[1333]-否则,如果对于任何n=0..pps_num_ver_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposx[n]%ctbsizey不等于0,并且ppsvirtualboundariesposx[n]-xl大于0且小于4,则以下适用:
[1334]hx i
=clip3(0,ppsvirtualboundariesposx[n]-1,xl i)
[1335]-否则,以下适用:
[1336]hx i
=clip3(0,pic_width_in_luma_samples-1,xl i)
[1337]-如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且yl-ppsvirtualboundariesposy[n]大于或等于0且小于3,则以下适用:
[1338]vy j
=clip3(ppsvirtualboundariesposy[n],pic_height_in_luma_samples-1,yl j)
[1339]-否则,如果对于任何n=0..pps_num_hor_virtual_boundaries-1,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1,并且ppsvirtualboundariesposy[n]%ctbsizey不等于0,并且ppsvirtualboundariesposy[n]-yl大于0且小于4,则以下适用:
[1340]vy j
=clip3(0,ppsvirtualboundariesposy[n]-1,yl j)
[1341]-否则,以下适用:
[1342]vy j
=clip3(0,pic_height_in_luma_samples-1,yl j)
[1343]-变量clipleftpos、cliprightpos、cliptoppos和clipbottompos通过用(xctb,yctb)和(xl-xctb,yl-yctb)作为输入调用如上指定的alf边界位置导出过程来导出。
[1344]-根据垂直亮度样本位置yl、clipleftpos和cliprightpos在表41中指定垂直样本位置偏移ym1、yp1和yp2。
[1345]-根据水平亮度样本位置xl、clipleftpos和cliprightpos在表40中指定水平样本位置偏移xm1和yp1。
[1346]-变量curr如下导出:
[1347]
curr=alfpicturec[xctbc x,yctbc y]
[1348]-交叉分量滤波器系数f[j]的阵列如下导出,其中j=0..5:f[j]=ccalfcoeff[j]
[1349]-变量centervalue和总和如下导出:
[1350]-centervalue=recpicture
l
[h
x
,vy]
[1351]-sum=f[0]*(recpicture
l
[h
x
,v
y ym1
]-centervalue)
[1352]
f[1]*(recpicture
l
[h
x xm1
,vy]-centervalue)
[1353]
f[2]*(recpicture
l
[h
x xp1
,vy]-centervalue)
[1354]
f[3]*(recpicture
l
[h
x xm1
,v
y yp1
]-centervalue)
[1355]
f[4]*(recpicture
l
[h
x
,v
y yp1
]-centervalue)
[1356]
f[5]*(recpicture
l
[h
x xp1
,v
y yp1
]-centervalue)
[1357]
sum=clip3(-(1《《(bitdepth
c-1)),(1《《(bitdepth
c-1))-1,sum)
[1358]
sum=curr (sum 64)》》7)
[1359]-修饰的滤波的重构的色度图片样本阵列ccalfpicture[xctbc x][yctbc y]如下导出:
[1360]
ccalfpicture[xctbc x][yctbc y]=clip3(0,(1《《bitdepthc)-1,sum)
[1361][1362][1363]
表41
[1364]
在一个示例中,视频编码器表示被配置为执行以下操作的设备的示例:接收用于视频数据的当前分量的重构样本数据,接收用于视频数据的一个或多个附加分量的重构样本数据,基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器,以及基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据将滤波器应用于用于视频数据的当前分量的重构样本数据。
[1365]
图17是示出根据本公开的一种或多种技术的可被配置为对视频数据进行解码的视频解码器的示例的框图。在一个示例中,视频解码器500可被配置为基于上文所述的技术中的一种或多种技术来重构视频数据。也就是说,视频解码器500可以与上述视频编码器200互逆的方式操作。视频解码器500可被配置为执行帧内预测解码和帧间预测解码,并且因此可被称为混合解码器。在图18所示的示例中,视频解码器500包括熵解码单元502、逆量化单元504、逆变换处理单元506、帧内预测处理单元508、帧间预测处理单元510、求和器512、滤波器单元514和参考缓冲器516。视频解码器500可被配置为以与视频编码系统一致的方式对视频数据进行解码,该视频编码系统可以实现视频编码标准的一个或多个方面。应当指出的是,尽管示出的示例性视频解码器500具有不同的功能块,但此类图示旨在用于描述目的,并且不将视频解码器500和/或其子部件限制为特定的硬件或软件架构。可使用硬件、固件和/或软件具体实施的任何组合来实现视频解码器500的功能。
[1366]
如图17所示,熵解码单元502接收熵编码的比特流。熵解码单元502可被配置为根据与熵编码过程互逆的过程对来自比特流的量化语法元素和量化系数进行解码。熵解码单元502可被配置为根据上文所述的任何熵编码技术来执行熵解码。熵解码单元502可以与视频编码标准一致的方式解析编码的比特流。视频解码器500可被配置为解析编码的比特流,其中该编码的比特流基于上述技术生成。
[1367]
再次参考图17,逆量化单元504从熵解码单元502接收量化变换系数(即,位阶值)和量化参数数据。量化参数数据可以包括上述增量qp值和/或量化组大小值等的任意组合和全部组合。视频解码器500和/或逆量化单元504可被配置为基于由视频编码器发信号通知的值和/或通过视频属性和/或编码参数来确定用于逆量化的qp值。也就是说,逆量化单元504可以与上述系数量化单元206互逆的方式操作。例如,逆量化单元504可被配置为根据上述技术推断预定值)、允许的量化组大小等。逆量化单元504可被配置为应用逆量化。逆变换处理单元506可被配置为执行逆变换以生成重构残差数据。由逆量化单元504和逆变换处理单元506分别执行的技术可类似于由上述逆量化/变换处理单元208执行的技术。逆变换处理单元506可被配置为应用逆dct、逆dst、逆整数变换、不可分二次变换(nsst)或概念上类似的逆变换过程来变换系数,以便产生像素域中的残差块。此外,如上所述,是否执行特定变换(或特定变换的类型)可以取决于帧内预测模式。如图17所示,可将重构残差数据提供给求和器512。求和器512可以将重构残差数据添加到预测视频块并且生成重构视频数据。可根据预测视频技术(即帧内预测和帧间预测)确定预测视频块。
[1368]
帧内预测处理单元508可被配置为接收帧内预测语法元素并且从参考缓冲器516检索预测视频块。参考缓冲器516可以包括被配置为存储一个或多个视频数据帧的存储器设备。帧内预测语法元素可识别帧内预测模式,诸如上述的帧内预测模式。在一个示例中,帧内预测处理单元508可以使用根据本文所述的帧内预测编码技术中的一种或多种技术来重构视频块。帧间预测处理单元510可接收帧间预测语法元素并生成运动矢量,以识别存储在参考缓冲器516中的一个或多个参考帧中的预测块。帧间预测处理单元510可以生成运动补偿块,可能基于内插滤波器执行内插。用于具有子像素精度的运动估计的内插滤波器的标识符可以包括在语法元素中。帧间预测处理单元510可以使用内插滤波器来计算参考块的子整数像素的内插值。
[1369]
滤波器单元514可被配置为对重构的视频数据执行滤波。例如,滤波器单元514可被配置为执行解块和/或sao滤波,如上面关于滤波器单元216所描述的。在示例中,滤波器单元514可以包括下文所述的交叉分量滤波器单元600。此外,应当指出的是,在一些示例中,滤波器单元514可被配置为执行专用的任意滤波(例如,视觉增强)。如图17所示,视频解码器500可以输出重构的视频块。
[1370]
如上所述,图7示出了根据本公开的一种或多种技术的可被配置为对视频数据进行编码的交叉分量滤波器单元的示例。图18示出了根据本公开的一种或多种技术的可被配置为对视频数据进行解码的交叉分量滤波器单元的示例。也就是说,交叉分量滤波器单元600可以采用与交叉分量滤波器单元300互逆的方式操作。如图18所示,分量滤波器单元600包括滤波器确定单元602和样本修改单元604。样本修改单元604可以采用类似于样本修改单元304的方式操作。也就是说,样本修改单元604可根据导出的滤波器来执行滤波,包括本文所述的滤波器中的一种或多种滤波器。如图18所示,样本修改单元604可将经修改的重构
块输出到参考图片缓冲器(即,作为环路滤波器),并且将经修改的重构块输出到输出端(例如,显示器)。滤波器确定单元602可以接收在当前块被解码时可用的编码参数信息(例如,帧内预测)和可用视频块数据,如图18所示,在视频解码器处,可用视频块数据可以包括:交叉分量重构块和当前分量重构块。然而,如图18所示,滤波器确定单元602可以接收滤波器数据。即,指定所导出的滤波器的滤波器数据可被发信号通知滤波器确定单元602。上文描述了这种信令的示例。因此,滤波器确定单元302可以基于视频数据、编码参数和/或滤波器数据导出要在色度重构块上使用的滤波器。
[1371]
如上所述,本文所述的交叉分量滤波技术通常可应用于视频数据的每个分量。因此,视频数据的分量的一个或多个组合可用于减小视频数据的一个或多个其他分量的重构误差。图19a至图19c是示出根据本公开的一种或多种技术的可以被配置为减小重构误差的交叉分量滤波器单元的示例的框图。也就是说,图19a至图19c示出了可包括在滤波单元514中的环路滤波器的示例。在图19a至图19c中,共同编号的元件如上所述。cr交叉分量滤波器单元702是被配置为基于亮度分量、cb分量、滤波器数据和编码参数来对cr分量进行滤波的滤波器单元的示例。亮度交叉分量滤波器单元704是被配置为基于亮度分量、cb分量、cr分量、滤波器数据和编码参数来对亮度分量进行滤波的滤波器单元的示例。因此,视频解码器500表示被配置为执行以下操作的设备的示例:接收用于视频数据的当前分量的重构样本数据,接收用于视频数据的一个或多个附加分量的重构样本数据,基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器,以及基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据将滤波器应用于用于视频数据的当前分量的重构样本数据。
[1372]
在一个或多个示例中,所述功能可以通过硬件、软件、固件或它们的任何组合来实现。如果以软件实现,则可将功能作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质上传输,并且由基于硬件的处理单元执行。计算机可读介质可以包括对应于有形介质诸如数据存储介质的计算机可读存储介质,或者包括例如根据通信协议促进计算机程序从一个地方传输到另一个地方的任何介质的传播介质。这样,计算机可读介质通常可对应于:(1)非暂态的有形计算机可读存储介质,或者(2)通信介质诸如信号或载波。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中所述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[1373]
以举例而非限制的方式,此类计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储设备、磁盘存储设备或其他磁存储设备、闪存存储器、或者可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其他介质。而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(dsl)或无线技术诸如红外线、无线电和微波从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术诸如红外线、无线电和微波都包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,而是针对非暂态有形存储介质。如本文所用,磁盘和光盘包括压缩光盘(cd)、激光盘、光学光盘、数字通用光盘(dvd)、软磁盘及blu-ray光盘,其中磁盘通常以磁性方式复制数据,而光盘则利用激光以光学方式复制数据。上述的组合也应该包括在计算机可读
介质的范围内。
[1374]
可以由一个或多个处理器诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效集成或离散逻辑电路执行指令。因此,如本文所用的术语“处理器”可以指任何前述结构或适用于实现本文所描述的技术的任何其他结构。此外,在一些方面中,可以在被配置用于编码和解码的专用硬件和/或软件模块内提供本文所述的功能,或者将其结合到组合编解码器中。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。
[1375]
本公开的技术可以在各种设备或装置包括无线手机、集成电路(ic)或ic集(例如,芯片集)中实现。在本公开中描述了各种部件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,可以将各种单元组合在编解码器硬件单元中,或者通过互操作硬件单元包括如上所述的一个或多个处理器的集合,结合合适的软件和/或固件来提供各种单元。
[1376]
此外,每个上述实施方案中所使用的基站设备和终端设备的每个功能块或各种特征可通过电路(通常为一个集成电路或多个集成电路)实现或执行。被设计为执行本说明书中所述的功能的电路可以包括通用处理器、数字信号处理器(dsp)、专用或通用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑装置、分立栅极或晶体管逻辑器或分立硬件部件或它们的组合。通用处理器可以是微处理器,或另选地,该处理器可以是常规处理器、控制器、微控制器或状态机。通用处理器或上述每种电路可由数字电路进行配置,或可由模拟电路进行配置。此外,当由于半导体技术的进步而出现制成取代当前集成电路的集成电路的技术时,也能够使用通过该技术生产的集成电路。
[1377]
已经描述了各种示例。这些示例和其他示例在以下权利要求的范围内。
[1378]
《发明内容》
[1379]
在一个示例中,提供了一种减小视频数据中的重构误差的方法,该方法包括:接收用于视频数据的当前分量的重构样本数据;接收用于视频数据的一个或多个附加分量的重构样本数据;基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器;以及基于所导出的交叉分量滤波器和用于视频数据的一个或多个附加分量的重构样本数据将滤波器应用于用于视频数据的当前分量的重构样本数据。
[1380]
在一个示例中,该方法还包括发信号通知与所导出的交叉分量滤波器相关联的信息。
[1381]
在一个示例中,提供了该方法,其中导出交叉分量滤波器包括解析信令以确定交叉分量滤波器参数。
[1382]
在一个示例中,提供了该方法,其中基于与视频数据的一个或多个附加分量相关联的数据导出交叉分量滤波器包括基于已知的重构误差导出交叉分量滤波器。
[1383]
在一个示例中,提供了该方法,根据滤波器系数来指定交叉分量滤波器。
[1384]
在一个示例中,提供了一种用于对视频数据进行编码的设备,该设备包括被配置为执行这些步骤的任意和全部组合的一个或多个处理器。
[1385]
在一个示例中,提供了一种设备,其中该设备包括视频编码器。
[1386]
在一个示例中,提供了一种设备,其中该设备包括视频解码器。
[1387]
在一个示例中,提供了一种系统,该系统包括:设备,该设备包括视频编码器;并且
该设备包括视频解码器。
[1388]
在一个示例中,一种用于对视频数据进行编码的装置,该装置包括用于执行步骤的任意和全部组合的装置。
[1389]
在一个示例中,一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括存储在其上的指令,当这些指令被执行时,使得用于编码视频数据的设备的一个或多个处理器执行步骤的任意和全部组合。
[1390]
在一个示例中,提供了一种对重构视频数据进行滤波的方法,该方法包括:输入重构亮度图片样本阵列;将对应于当前色度样本的亮度位置设定为由色度样本中的水平位置乘以子宽度值和色度样本中的垂直位置乘以子高度值限定的位置;通过使用该亮度位置来导出该重构亮度图片样本阵列内部的亮度样本位置;以及通过使用交叉分量滤波器系数和由这些亮度样本位置中的至少一者限定的重构亮度图片样本阵列来导出变量,其中通过使用当前的样本色度块来修改该变量。
[1391]
在一个示例中,提供了该方法,其中通过对所述亮度位置和预先确定的值的总和进行削波来导出该亮度样本位置。
[1392]
在一个示例中,提供了该方法,其中通过使用由自适应环路滤波器边界位置导出过程导出的削波位置变量来导出该变量。
[1393]
在一个示例中,提供了该方法,其中根据色度格式指定子宽度值和子高度值。
[1394]
在一个示例中,提供了该方法,其中该子宽度值和该子高度值如下指定:在色度格式为4:2:0色度格式的情况下,子宽度值和子高度值等于2,在色度格式为4:2:2色度格式的情况下,子宽度值等于1并且子高度值等于2,并且在色度格式为4:4:4色度格式的情况下,子宽度值和子高度值等于1。
[1395]
在一个示例中,提供了一种对编码数据进行解码的解码器,该解码器包括:处理器,和与该处理器相关联的存储器;其中该处理器被配置为执行以下步骤:输入重构亮度图片样本阵列;将对应于当前色度样本的亮度位置设定为由色度样本中的水平位置乘以子宽度值和色度样本中的垂直位置乘以子高度值限定的位置;通过使用该亮度位置来导出该重构亮度图片样本阵列内部的亮度样本位置;以及通过使用交叉分量滤波器系数和由这些亮度样本位置中的至少一者限定的重构亮度图片样本阵列来导出变量,其中通过使用当前的样本色度块来修改该变量。
[1396]
在一个示例中,提供了一种对视频数据进行编码的编码器,该编码器包括:处理器,和与该处理器相关联的存储器;其中该处理器被配置为执行以下步骤:输入重构亮度图片样本阵列;将对应于当前色度样本的亮度位置设定为由色度样本中的水平位置乘以子宽度值和色度样本中的垂直位置乘以子高度值限定的位置;通过使用该亮度位置来导出该重构亮度图片样本阵列内部的亮度样本位置;以及通过使用交叉分量滤波器系数和由这些亮度样本位置中的至少一者限定的重构亮度图片样本阵列来导出变量,其中通过使用当前的样本色度块来修改该变量。
[1397]
《交叉引用》
[1398]
本非临时专利申请根据《美国法典》第35卷第119节(35 u.s.c.
§
119)要求于2019年9月11日提交的临时申请62/899,053、2019年9月17日提交的临时申请62/901,679、2019年9月23日提交的临时申请62/904,399、2019年9月24日提交的临时申请62/905,312、2019
年10月3日提交的临时申请62/910,317的优先权,这些临时申请的全部内容据此以引用方式并入。
再多了解一些

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

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

相关文献