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

用于视频译码的比特深度自适应解块滤波的制作方法

2022-02-22 19:14:01 来源:中国专利 TAG:

用于视频译码的比特深度自适应解块滤波
1.本技术要求享有于2020年6月29日提交的美国申请no.16/915,439的优先权,该申请要求享有于2019年7月3日提交的美国临时申请no.62/870,593的优先权,上述申请中的每份申请通过引用的方式全部并入本文中。
技术领域
2.本公开内容涉及视频编码(encode)和视频解码(decode)。


背景技术:

3.数字视频能力可以并入到各种各样的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型计算机或桌面型计算机、平板计算机、电子书读取器、数字相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电话、所谓的“智能电话”、视频电话会议设备、视频流设备等等。数字视频设备实现视频译码(code)技术,比如在由mpeg-2、mpeg-4、itu-t h.263、itu-t h.264/mpeg-4(第10部分,高级视频译码(avc))、itu-t h.265/高效率视频译码(hevc)所规定的标准以及这样的标准的扩展中所描述的那些技术。视频设备可以通过实现这样的视频译码技术,更高效地发送、接收、编码、解码和/或存储数字视频信息。
4.视频译码技术包括空间(图片内)预测和/或时间(图片间)预测以减少或消除视频序列中固有的冗余。对于基于块的视频译码,可以将视频切片(例如,视频图片或视频图片的一部分)划分为视频块,视频块还可以被称为译码树单元(ctu)、译码单元(cu)和/或译码节点。在图片的帧内译码(i)切片中的视频块是使用相对于同一图片中的相邻块中的参考样本的空间预测进行编码的。在图片的帧间译码(p或b)切片中的视频块可以使用相对于同一图片中的相邻块中的参考样本的空间预测,或者相对于其它参考图片中的参考样本的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。


技术实现要素:

5.通常,本公开内容描述用于针对视频译码的解块滤波的技术。例如,所述技术涉及对因压缩、模糊等而失真的视频帧执行的滤波处理,以改善客观和主观质量。示例技术可以用于设计新的视频译码解决方案(比如h.266/通用视频编码(vvc)或基本视频编码(evc))、或者用于扩展任何现有的视频编解码器(比如h.265/高效视频编码(hevc))、或者被提议作为未来视频译码标准的译码工具。示例技术还可以用作对从标准或专有编解码器输出的视频帧的后处理方法。
6.为了执行解块滤波,视频译码器可能需要基于沿着线段(segment)的样本的特征,来确定解块控制参数,所述解块控制参数控制应用多少解块滤波(例如,要滤波多少样本、要通过多少来滤波样本等)。比特深度(例如,多少比特用于表示样本的颜色)可能影响解块控制参数中的一个或多个解块控制参数。作为示例,定义样本由于解块滤波而可以被修改的最大值的裁剪参数可以是基于比特深度的。
7.本公开内容描述以其合并比特深度信息以确定一个或多个解块控制参数的示例方式。以这种方式,与在不利用比特深度信息来确定一个或多个解块控制参数的情况下可能发生的过滤波或欠滤波相比,视频译码器用于解块滤波的解块控制参数可以引起更优化的滤波。因此,本公开内容描述改善视频译码器的整体操作的解块滤波的实际应用。
8.在一个示例中,本公开内容描述处理视频数据的方法,方法包括:基于存储的参数和视频数据的当前块的样本的比特深度,来确定一个或多个初始解块控制参数;基于当前块的样本的比特深度,来确定将通过其调整一个或多个初始解块控制参数的调整值;基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数;并且基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。
9.在一个示例中,本公开内容描述用于处理视频数据的设备,设备包括存储器,其被配置为存储用于解块滤波的参数;以及处理电路,其被配置为:基于存储的参数和视频数据的当前块的样本的比特深度,来确定一个或多个初始解块控制参数;基于当前块的样本的比特深度,来确定将通过其调整一个或多个初始解块控制参数的调整值;基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数;并且基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。
10.在一个示例,本公开内容描述具有存储在其上的指令的计算机可读存储介质,指令在被执行时使得一个或多个处理器进行以下操作:基于存储的参数和视频数据的当前块的样本的比特深度,来确定一个或多个初始解块控制参数;基于当前块的样本的比特深度,来确定将通过其调整一个或多个初始解块控制参数的调整值;基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数;并且基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。
11.在附图和下面的说明书中阐述一个或多个示例的细节。根据说明书、附图以及权利要求书,其它特征、目标和优点将是显而易见的。
附图说明
12.图1是示出可以执行本公开内容的技术的示例视频编码和解码系统的方块图。
13.图2是示出将与相邻块进行解块的四个样本的示例的概念图。
14.图3是示出用于确定是否对线段应用解块的样本的示例的概念图。
15.图4是示出在要解块的线段中的示例线的概念图。
16.图5是示出可以执行本公开内容的技术的示例视频编码器的方块图。
17.图6是示出可以执行本公开内容的技术的示例视频解码器的方块图。
18.图7是示出用于处理视频数据的示例方法的流程图。
具体实施方式
19.在视频译码中,视频编码器将图片划分成块。对于正在编码的图片的当前块,视频编码器确定预测块。视频编码器确定在预测块与当前块之间的残差(例如,差异)块,并且在一些示例中,对残差块进行变换和量化。然后,视频编码器对经变换、经量化的残差块进行熵编码和用信号通知。
20.视频解码器通常执行相反的操作。例如,视频解码器进行逆量化和逆变换以生成
残差块。视频解码器还以与视频编码器类似的方式(例如,基于视频编码器向视频解码器用信号通知的预测模式信息)来确定预测块。视频解码器将残差块与预测块相加以重构当前块。
21.量化过程可能是有损过程,并且在两个相邻块之间应用的量化的量可能不同。因此,有损量化过程以及图片到块的划分,可能导致在重构的当前块中的块伪影。块伪影可能沿着线段(例如,当前块的边界)存在,但是也可能存在于其它地方。
22.也就是说,块伪影(例如,原始图片中不存在的水平和垂直不连续性)可能是随着量化过程由中度到高度的压缩引起的。图片可以是静止图像或者来自视频序列的帧。在平坦区域中的这些伪影看起来像“瓦片(tiling)”,因为它们没有被高度对比的内容所掩盖。此外,因为不连续性在连续帧中位置不同,因此在播放视频时块伪影通常被观察为“移动和闪烁”。
23.块伪影的一个来源是基于块的变换译码,包括对帧内和帧间预测误差的变换和量化。变换系数的粗略量化可能导致在块边界处的视觉干扰不连续性。对于视频,存在另一来源:运动补偿预测。运动补偿块是通过从可能不同参考帧的不同位置复制经插值的像素数据来生成的。由于对于这些数据几乎从来没有完美拟合,因此在复制的数据块边界上通常会出现不连续。
24.通常在重构图片之后执行解块(例如,解块滤波),以削减块伪影。更具体地说,解块滤波通过滤波、裁剪、或者任何其它方式,来修改位于每个块边界附近的样本的值,使得不连续性变得平滑并且不可见。
25.在视频压缩(例如,译码)中,解块滤波可以置于预测环路(loop)之外(在显示缓冲器上操作)、或者置于预测环路中,意味着经解块的图片用作用于后续图片运动补偿的参考图片。这两种方法都提供更好的显示视频的主观质量,而后者还提供客观性能的好处,因为通过使用经解块的参考帧改善了帧间预测的准确性。
26.在经解块的图片用作针对后续图片的参考图片的示例中,视频编码器和视频解码器都可以被配置为执行解块滤波。例如,视频编码器包括解码环路,所述解码环路以与视频解码器将如何重构图片类似的方式来重构正在编码的图片。类似于视频解码器将如何执行解块滤波,视频编码器可以对经重构的图片执行解块滤波,使得由视频编码器和视频解码器使用的参考图片相同。因此,解块滤波可以由视频编码器和视频解码器应用,或者可以仅由视频解码器应用(比如在经解块的图片不用作针对后续图片的参考图片的示例中)。
27.本公开内容中描述的示例技术可以提供对解块滤波技术的改善。如下文更详细地描述的,解块滤波是利用β和tc参数来执行的,β和tc参数是解块控制参数的示例。本公开内容描述用于确定解块控制参数的示例技术,所述解块控制参数比如在部署新型内容的情况下可以潜在地改善解块滤波的操作。例如,对于不同类型的内容,用于确定解块控制参数的现有技术可能无法正确考虑内容类型的变化,并且过分依赖可能不影响高质量解块滤波的因素(例如,具有适当平滑的解块滤波)。利用本公开内容中描述的示例技术,视频译码器(例如,视频编码器或视频解码器)可以被配置为确定改善整体解块滤波操作的解块控制参数,这可以导致具有较少伪影的较高质量图片。
28.图1是示出可以执行本公开内容的技术的示例视频编码和解码系统100的方块图。本公开内容的技术通常针对对视频数据的译码(code)(编码(encode)和/或解码
(decode))。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未经编码的视频、经编码的视频、经解码的(例如,经重构的)视频以及视频元数据(比如信令数据)。
29.如图1中所示,在该示例中,系统100包括源设备102,源设备102提供要由目的地设备116进行解码和显示的经编码的视频数据。特别是,源设备102经由计算机可读介质110,将视频数据提供给目的地设备116。源设备102和目的地设备116可以包括各种各样的设备中的任何设备,包括桌面型计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手持装置(比如智能电话)、电视、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,并且因此可以被称为无线通信设备。
30.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开内容,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用用于解块滤波的技术。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备102可以从外部视频源(比如外部照相机)接收视频数据。同样,目的地设备116可以与外部显示设备对接,而不是包括集成的显示设备。
31.如图1中所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于解块滤波的技术。源设备102和目的地设备116仅是这样的译码设备的示例:其中,源设备102生成用于向目的地设备116传输的经译码的视频数据。本公开内容将“译码”设备称为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300表示译码设备的示例,特备是,分别表示视频编码器和视频解码器。在一些示例中,设备102、116可以以基本上对称的方式操作,使得设备102、116中的每者包括视频编码和解码组件。因此,系统100可以支持在视频设备102、116之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
32.通常,视频源104表示视频数据(即,原始的、未经编码的视频数据)的源,并且将视频数据的图片(还被称为“帧”)的连续序列提供给视频编码器200,视频编码器200对针对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备(比如摄像机)、包含先前捕获的原始视频的视频档案和/或用于从视频内容提供商接收视频的视频馈送接口。作为另外的替代方案,视频源104可以生成基于计算机图形的数据作为源视频、或者实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图像从接收到的顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括经编码的视频数据的比特流。然后,源设备102可以经由输出接口108将经编码的视频数据输出到计算机可读介质110上,以供例如目的地设备116的输入接口122进行接收和/或取回。
33.源设备102的存储器106和目的地设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的经解码的视频数据。另外地或替代地,存储器106、120可以存储可由例如视频编码器200和视频解码器300分别执行的软件指令。尽管在该示例中与视频编码器
200和视频解码器300分开地示出,但是应当理解,视频编码器200和视频解码器300也可以包括用于功能上相似或等效的目的的内部存储器。此外,存储器106、120可以存储经编码的视频数据,例如,从视频编码器200的输出以及到视频解码器300的输入。在一些示例中,存储器106、120的各部分可以被分配为一个或多个视频缓冲器,例如,以存储原始的、经解码和/或经编码的视频数据。
34.计算机可读介质110可以表示能够将经编码的视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示用于使得源设备102能够例如经由射频网络或基于计算机的网络将经编码的视频数据实时地直接发送到目的地设备116的通信介质。根据比如无线通信协议之类的通信标准,输出接口108可以对包括经编码的视频数据的传输信号进行调制,并且输入接口122可以对接收的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,比如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,比如局域网、广域网或全球网络(比如互联网)。通信介质可以包括路由器、交换机、基站或者用于促进从源设备102到目的地设备116的通信的任何其它设备。
35.在一些示例中,源设备102可以将经编码的数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122,从存储设备112访问经编码的数据。存储设备112可以包括多种分布式或本地访问的数据存储介质中的任何数字存储介质(比如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存、易失性或非易失性存储器)或者用于存储经编码的视频数据的任何其它适当的数字存储介质。
36.在一些示例中,源设备102可以将经编码的视频数据输出到文件服务器114或者可以存储由源设备102所生成的经编码的视频的另一中间存储设备。目的地设备116可以经由流式传输或下载,从文件服务器114访问所存储的视频数据。文件服务器114可以是能够存储经编码的视频数据并且将该经编码的视频数据发送到目的地设备116的任何类型的服务器设备。文件服务器114可以表示网络服务器(例如,用于网站)、文件传输协议(ftp)服务器、内容传送网络设备或网络附加存储(nas)设备。目的地设备116可以通过任何标准数据连接(包括互连网连接),从文件服务器114访问经编码的视频数据。这可以包括适合于访问被存储在文件服务器114上的经编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字用户线(dsl)、电缆调制解调器等等)或二者的组合。文件服务器114和输入接口122可以被配置为根据流式传输协议、下载传输协议或者其组合进行操作。
37.输出接口108和输入接口122可以表示无线发射机/接收机、调制解调器、有线网络组件(例如,以太网卡)、根据各种ieee 802.11标准中的任何标准进行操作的无线通信组件、或者其它物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(比如4g、4g-lte(长期演进)、改进的lte、5g等)来传输数据(比如经编码的视频数据)。在输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以被配置为根据其它无线标准(比如ieee 802.11规范、ieee 802.15规范(例如,zigbee
tm
)、蓝牙
tm
标准等)来传输数据(比如经编码的视频数据)。在一些示例中,源设备102和/或目的地设备116可以包括各自的片上系统(soc)器件。例如,源设备102可以包括soc器件以执行归属于视频编码器200和/或输出接口108的功能,而目的地设备116可以包括soc器件以执行归属于视频解码器300和/或输入接口122的功
能。
38.本公开内容的技术可以应用于视频译码,以支持各种多媒体应用中的任何多媒体应用,比如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(比如基于http的动态自适应流式传输(dash)、编码到数据存储介质上的数字视频),对被存储在数据存储介质上的数字视频的解码、或者其它应用。
39.目的地设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114等)接收经编码的视频比特流。经编码的视频比特流可以包括由视频编码器200定义的、还由视频解码器300使用的信令信息,比如具有描述视频块或其它译码单元(例如,切片、图片、图片组、序列等)的特性和处理的值的语法元素。显示设备118向用户显示经解码的视频数据的经解码的图片。显示设备118可以表示多种显示设备中的任何显示设备,比如阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器、或者另一类型的显示设备。
40.虽然没有在图1中示出,但是在一些示例中,视频编码器200和视频解码器300各自可以与音频编码器和/或音频解码器集成在一起,并且可以包括适当的mux-demux单元或者其它硬件和/或软件,以处理包括共同数据流中的音频和视频两者的经复用的流。如果适用的话,mux-demux单元可以符合itu h.223复用器协议或其它协议(比如用户数据报协议(udp))。
41.视频编码器200和视频解码器300各自可以被实现为多种适当的编码器和/或解码器电路中的任何一种,比如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或者其任意组合。当所述技术是以软件部分地实现时,设备可以将用于软件的指令存储在适当的非临时性计算机可读介质中,并且使用一个或多个处理器来执行在硬件中的指令以执行本公开内容的技术。视频编码器200和视频解码器300中的每者可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任何一者可以集成为在相应设备中的组合的编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备(比如蜂窝电话)。
42.视频编码器200和视频解码器300可以根据比如itu-t h.265(还被称为高效视频编码(hevc))或者其扩展(比如多视图和/或可伸缩视频编码扩展)之类的视频译码标准进行操作。或者,视频编码器200和视频解码器300可以根据其它专有或工业标准(比如itu-t h.266,还被称为通用视频译码(vvc))来操作。在以下文献中描述vvc标准的草案:bross等人,“versatile video coding(draft 5)(通用视频译码(草案5)),”itu-t sg 16 wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet)在2019年3月19日至27日于瑞士日内瓦的第14次会议,jvet-n1001-v9(下文中称为“vvc草案5”)。在以下文献中描述vvc标准的最新草案:bross等人,“versatile video coding(draft 9)(通用视频译码(草案9)),”itu-t sg 16 wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet)在2020年4月15日至24日的第18次电话会议,jvet-r2001-v8(下文中称为“vvc草案9”)。然而,本公开内容的技术不限于任何特定的译码标准。
43.在本公开内容中描述的示例技术可以适用于其它视频译码标准。视频编码器200和视频解码器300可以根据mpeg-5基本视频译码(evc)标准进行操作。mpeg-5 evc标准是在“information technology

general video coding

part 1:essential video coding(信息技术-通用视频译码-部分1:基本视频译码)”,iso/iec fdis 23094-1和iso/iec jtc1/sc 29/wg 11,w19229(以下简称“evc草稿”)中描述的。
44.通常,视频编码器200和视频解码器300可以执行对图片的基于块的译码。术语“块”通常指代包括要处理(例如,编码、解码、或以其它方式在编码和/或解码过程中使用)的数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以yuv(例如,y、cb、cr)格式表示的视频数据进行译码。也就是说,不是对用于图片的样本的红色、绿色和蓝色(rgb)数据进行译码,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中色度分量可以包括红色和蓝色色度分量。在一些示例中,视频编码器200在编码之前将接收的rgb格式的数据转换成yuv表示,并且视频解码器300将yuv表示转换成rgb格式。或者,预处理和后处理单元(没有示出)可以执行这些转换。
45.本公开内容通常可以涉及对图片的译码(例如,编码和解码),以包括对图片的数据进行编码或解码的过程。类似地,本公开内容可以涉及对图片的块的译码,以包括对用于块的数据进行编码或解码的过程(例如,预测和/或残差译码)。经编码的视频比特流通常包括用于语法元素的一系列值,所述语法元素表示译码决策(例如,译码模式)以及图片到块的划分。因此,对图片或块进行译码的引用,通常应当被理解为对用于形成图片或块的语法元素的值进行译码。
46.hevc定义各种块,包括译码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频译码器(比如视频编码器200)根据四叉树结构将译码树单元(ctu)划分为cu。也就是说,视频译码器将ctu和cu划分为四个相等的、不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这样的叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频译码器可以进一步划分pu和tu。例如,在hevc中,残差四叉树(rqt)表示tu的划分。在hevc中,pu表示帧间预测数据,而tu表示残差数据。帧内预测的cu包括帧内预测信息(比如帧内模式指示)。
47.作为另一示例,视频编码器200和视频解码器300可以被配置为根据vvc进行操作。根据vvc,视频译码器(比如视频编码器200)将图片划分为多个译码树单元(ctu)。视频编码器200可以根据树结构(比如四叉树-二叉树(qtbt)结构或多类型树(mtt)结构),对ctu进行划分。qtbt结构消除多个划分类型的概念,例如hevc的cu、pu和tu之间的分隔。qtbt结构包括两个层级:根据四叉树划分进行划分的第一层级、根据二叉树划分进行划分的第二层级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于译码单元(cu)。
48.在mtt划分结构中,可以使用四叉树(qt)划分、二叉树(bt)划分以及一种或多种类型的三叉树(tt)划分,对块进行划分。三叉树划分是将块拆分成三个子块的划分。在一些示例中,三叉树划分将块划分为三个子块,而不划分穿过中心的原始块。在mtt中的划分类型(例如,qt、bt和tt)可以是对称或者不对称的。
49.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度分量和色度分量中的每者,而在其它示例中,视频编码器200和视频解码器300可以使用两个或更多qtbt或mtt结构,比如一个qtbt/mtt结构用于亮度分量,以及另一qtbt/mtt结构用于两个色度分量(或者两个qtbt/mtt结构用于相应的色度分量)。
50.视频编码器200和视频解码器300可以被配置为使用根据hevc的四叉树划分、qtbt划分、mtt划分或其它划分结构。为了解释,对本公开内容的技术的描述是相对于qtbt划分给出的。然而,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树划分或其它类型的划分的视频译码器。
51.可以以各种方式,对在图片中的块(例如,ctu或cu)进行分组。作为一个示例,砖块(brick)可以指代在图片中特定瓦片(tile)内的ctu行的矩形区域。瓦片可以是图片中的特定瓦片列和特定瓦片行内的ctu的矩形区域。瓦片列指代高度等于图片的高度、并且具有(例如,比如在图片参数集中)由语法元素指定的宽度的ctu的矩形区域。瓦片行指代具有由语法元素指定的高度(例如,比如在图片参数集中给出的)、并且宽度等于图片的宽度的ctu的矩形区域。
52.在一些示例中,可以将瓦片(tile)划分成多个砖块,其中每个砖块可以包括在瓦片内的一个或多个ctu行。没有被划分为多个砖块的瓦片,还可以被称为砖块。但是,作为瓦片的真实子集的砖块不能被称为瓦片。
53.还可以将图片中的砖块排列在切片中。切片可以是图片中的可以专门地被包含在单个网络抽象层(nal)单元中的整数个砖块。在一些示例中,切片包括多个完整瓦片,或者仅包括一个瓦片的完整砖块的连续序列。
54.本公开内容可以互换地使用“nxn”和“n乘n”来指代块(例如,cu或其它视频块)在垂直维度和水平维度上的样本尺寸,例如16x16个样本或16乘16个样本。通常,16x16 cu将在垂直方向上具有16个样本(y=16),并且在水平方向上具有16个样本(x=16)。同样地,nxn cu通常在垂直方向上具有n个样本并且在水平方向上具有n个样本,其中n表示非负整数值。在cu中的样本可以按行和列来排列。此外,cu在水平方向上不必具有与在垂直方向上相同数量的样本。例如,cu可以包含nxm个样本,其中m不一定等于n。
55.视频编码器200对用于cu的表示预测和/或残差信息以及其它信息的视频数据进行编码。预测信息指示将如何预测cu,以便形成用于cu的预测块。残差信息通常表示在编码之前的cu与预测块的样本之间的逐样本差异。
56.为了预测cu,视频编码器200通常可以通过帧间预测或帧内预测来形成用于cu的预测块。帧间预测通常指代根据先前译码的图片的数据来预测cu,而帧内预测通常指代根据同一图片的先前译码的数据来预测cu。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以识别与cu紧密匹配的参考块(例如在cu与参考块之间的差异方面)。视频编码器200可以使用绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)或其它这样的差异计算来计算差异度量,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前cu。
57.vvc还提供仿射运动补偿模式,仿射运动补偿模式可以被认为是帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多运动矢量,比如缩小或放大、旋转、透视运动或其它不规则运动类型。
58.为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。vvc提供67种帧内预测模式,包括各种定向模式以及平面模式和dc模式。通常,视频编码器200选择帧内预测模式,帧内预测模式描述要根据其预测当前块(例如,cu的块)的样本的当前块
的相邻样本。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对ctu和cu进行译码,则这样的样本通常可以在与当前块相同的图片中在当前块的上方、左上方或左侧。
59.视频编码器200对表示用于当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用了各种可用帧间预测模式中的哪种模式、以及用于对应模式的运动信息的数据进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动矢量预测(amvp)或合并模式,来对运动矢量进行编码。视频编码器200可以使用类似模式来对针对仿射运动补偿模式的运动矢量进行编码。
60.在预测(比如对块的帧内预测或帧间预测)之后,视频编码器200可以计算针对块的残差数据。残差数据(比如残差块)表示在块与使用对应预测模式形成的针对块的预测块之间的逐样本差异。视频编码器200可以向残差块应用一个或多个变换,以在变换域而非样本域中产生经变换的数据。例如,视频编码器200可以向残差视频数据应用离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换。另外,视频编码器200可以在第一变换之后应用次级变换,例如模式相关不可分离次级变换(mdnsst)、信号相关的变换、karhunen-loeve变换(klt)等等。视频编码器200在应用一个或多个变换之后,产生变换系数。
61.如上文所指出的,在进行任何变换以产生变换系数之后,视频编码器200可以执行变换系数的量化。量化通常指代如下过程:其中,对变换系数进行量化,以可能地减少用于表示系数的数据量,从而提供进一步压缩。通过执行量化过程,视频编码器200可以减小与系数中的一些或所有系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值下舍入为m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对要量化的值执行按位右移。
62.在量化之后,视频编码器200可以扫描变换系数,根据包括经量化的变换系数的二维矩阵产生一维矢量。扫描可以被设计为将较高能量(以及因此较低频率)的系数放在矢量的前面,并且将较低能量(以及因此较高频率)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描经量化的变换系数,以产生串行化的矢量,并且然后对矢量的经量化的变换系数进行熵编码。在其它示例中,视频编码器200可以执行自适应扫描。在扫描经量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编码(cabac)对一维矢量进行熵编码。视频编码器200还可以对用于语法元素的值进行熵编码,所述语法元素描述与经编码的视频数据相关联的元数据,以供视频解码器300在对视频数据进行解码时使用。
63.为了执行cabac,视频编码器200可以将上下文模型内的上下文分配给要发送的符号。例如,该上下文可以涉及符号的相邻值是否为零值。概率确定可以是基于分配给符号的上下文的。
64.视频编码器200还可以在例如图片报头、块报头、切片报头或其它语法数据(例如,序列参数集(sps)、图片参数集(pps)或视频参数集(vps))中,生成针对视频解码器300的语法数据(比如基于块的语法数据、基于图片的语法数据、以及基于序列的语法数据)。视频解码器300可以类似地对这样的语法数据进行解码,以确定如何解码对应的视频数据。
65.以这种方式,视频编码器200可以生成包括经编码的视频数据的比特流,例如,用于描述图片到块的划分(例如,cu)、以及用于块的预测和/或残差信息的语法元素。最终,视频解码器300可以接收比特流并且对经编码的视频数据进行解码。
66.通常,视频解码器300执行与由视频编码器200所执行的过程相反的过程,以对比特流的经编码的视频数据进行解码。例如,视频解码器300可以以与视频编码器200的cabac编码过程大体上相似但是相反的方式,使用cabac对比特流的用于语法元素的值进行解码。语法元素可以定义用于图片到ctu的划分信息、以及根据对应的划分结构(比如qtbt结构)对每个ctu的划分,以定义ctu的cu。语法元素可以进一步定义用于视频数据的块(例如,cu)的预测和残差信息。
67.可以通过例如经量化的变换系数来表示残差信息。视频解码器300可以对块的经量化的变换系数进行逆量化和逆变换,以再现针对块的残差块。视频解码器300使用用信号通知的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成针对块的预测块。然后,视频解码器300可以对预测块和残差块(在逐样本的基础上)进行组合以再现原始块。视频解码器300可以执行额外处理,比如执行解块处理以减少沿着块的边界的视觉伪影。
68.如更详细地描述的,在本公开内容中描述的示例技术涉及视频译码器(例如,视频编码器200或视频解码器300)以其执行解块滤波的方式。例如,视频编码器200和视频解码器300可以被配置为基于对用于重构视频数据(例如,当前块)的参数的各种不同调整,来确定用于解块滤波的解块控制参数。以这种方式,在确定用于执行解块滤波的解块控制参数时可以具有更大的灵活性,这可以导致更高质量的图片。例如,随着新内容类型的开发,用于确定解块控制参数的现有技术可能不足以确保所确定的解块控制参数导致具有最少伪影的解块滤波。
69.通常,解块滤波跨越线段(在一些示例中还被称为边界)发生。线段可以是在两个相邻块之间的边界。然而,示例技术不限于在两个相邻块之间的线段,并且线段可以在块内。为了执行解块滤波,视频编码器200和视频解码器300访问来自线段的每侧的样本值,并且基于访问样本值来生成经解块滤波的样本值。解块滤波可以是基于指示如何进行解块滤波的解块控制参数的,并且本公开内容描述用于确定解块控制参数的技术的示例。
70.例如,视频编码器200或视频解码器300可以首先确定沿着线段存在块伪影的可能性有多大。如果具有存在块伪影的可能性,则视频编码器200或视频解码器300可以确定解块控制参数。
71.视频编码器200或视频解码器300可以基于块和相邻块是以相同预测模式预测(例如,两者都是帧间预测的)还是以不同的预测模式预测(例如,一者是帧内预测的,以及另一者是帧间预测的)的,确定沿着线段存在块伪影的可能性有多大。如果是帧间预测的,则运动矢量和参考索引也可以是用于确定块伪影的可能性的因素。非零变换系数的存在,也可以是用于确定块伪影的可能性的因素。视频编码器200或视频解码器300可以利用各种示例因素来确定边界强度(bs)值,bs值指示将沿着线段出现块伪影的可能性有多大。
72.对于存在块伪影可能性的线段,视频编码器200或视频解码器300可以确定定义如何执行解块滤波的解块控制参数。根据本公开内容的技术,视频译码器(例如,视频编码器200或视频解码器300)可以被配置为:确定指示对用于重构视频数据的一个或多个参数的一个或多个调整的信息,基于所确定的信息来确定一个或多个解块控制参数,并且基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。
73.解块控制参数的示例包括贝塔(beta)(β)参数和裁剪参数(tc)。贝塔参数可以控
制是否实际执行解块滤波,并且如果要执行解块滤波,则要执行强解块滤波还是普通解块滤波。裁剪参数控制可以样本由于解块滤波而被调整的最大值。例如,解块滤波可以平滑块状伪影,但不应存在过度平滑或平滑不足。如果经解块滤波的样本值未被剪裁到特定范围内,则存在过度平滑或平滑不足的可能性,并且所得到的视频可能具有较低的视频质量。
74.可能存在用于确定解块控制参数的各种因素。例如,贝塔和裁剪参数可以是基于量化参数以及由视频编码器200和视频解码器300存储的查找表(lut)的。作为一个示例,对于裁剪参数,lut包括存储的参数,并且视频编码器200或视频解码器300可以基于量化参数和bs(边界强度)值,从lut中取回存储的参数。
75.根据存储的参数,视频编码器200和视频解码器300可以确定一个或多个初始解块控制参数(例如,初始裁剪参数)。一个或多个初始解块控制参数可以是基于存储的参数和当前块的样本的比特深度(例如,用于表示当前块的样本的颜色的比特数量)的。
76.视频编码器200或视频解码器300可能需要调整一个或多个初始解块控制参数(例如,初始裁剪参数)。在本公开内容中描述的一个或多个示例中,通过其对初始解块控制参数进行调整的量可以是基于当前块的样本的比特深度的。如果在确定通过其对初始解块控制参数进行调整的量时不考虑样本的比特深度,则解块控制参数可能导致块伪影的过度平滑或平滑不足。
77.换句话说,一些其它技术在不考虑比特深度的情况下确定通过其调整初始解块控制参数的量,如果比特深度不变,则这可能已经足够。然而,在可以从不同的可能比特深度选项(例如,8比特或10比特)中选择比特深度的示例中,在不考虑比特深度的情况下,对初始解块控制参数的调整可能是不正确的。在本公开内容中所描述的一个或多个示例中,视频编码器200或视频解码器300可以基于当前块的样本的比特深度,来确定要通过其调整一个或多个初始解块控制参数(例如,初始裁剪参数)的调整值。视频编码器200和视频解码器300可以基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。
78.本公开内容通常可能涉及“用信号通知”某些信息,比如语法元素。术语“用信号通知”通常可以指代传送用于语法元素的值和/或用于对编码的视频数据进行解码的其它数据。也就是说,视频编码器200可以在比特流中用信号通知用于语法元素的值。通常,用信号通知指代在比特流中生成值。如上文所指出的,源设备102可以基本上实时地或者不实时地,将比特流式传输到目的地设备116,例如在将语法元素存储到存储设备112以便稍后由目的地设备116检索时,可能发生这种情形。
79.如上文所描述的,示例技术与解块滤波相关。下文笼统地提供对解块滤波技术的解释以及以其根据本公开内容中描述的示例技术来执行解块滤波的方式。
80.在hevc中,解块滤波是环路内(in-loop)过程,并且应用于满足以下两个条件的边界(例如,线段):(1)边界是译码单元(cu)、预测单元(pu))或变换单位(tu)的边界;以及(2)x坐标是8的倍数(如果边界是垂直的)并且y坐标是8的倍数(如果边界是水平的)。第二条件意味着要解块的两个平行相邻边界的最小距离为8个像素,这有利于更好的并行化(如下文在对并行化的描述中所描述的)。无论要处理的边界有多长,边界都可以被划分为多个不重叠的4样本线段。4样本线段可以是对其应用解块技术(例如,解块滤波)的单元。在本公开内容中,将引入对线段(例如,边界)的解块操作,并且假设线段是垂直的。对水平线段的处理
可以是相同的(例如,本质上是相同的)。
81.对于解块滤波,视频译码器可以确定边界强度(bs)。下文描述边界强度(bs)确定。图2是示出要与相邻块进行解块的四样本的示例的概念图。例如,图2示出要与相邻块p 130和块q 132进行解块的四样本线段(例如,图2中在块p 130和块q 132之间的粗线128)。例如,如图2中所示,线段128是四行长度的垂直线。
82.对于要处理的线段128(例如,对于沿着要解块滤波的线段128的样本),检查两旁的两个块(在图2中被表示为块p 130和块q 132)的译码条件(比如运动矢量(mv)、参考索引和非零变换系数的存在),并且相应地确定边界强度(bs),bs表示沿着线段将出现强块伪影的可能性有多大。换言之,视频译码器(例如,视频编码器200或视频解码器300)可以基于运动矢量、参考索引、以及在块p 120和块q 132中非零变换系数的存在,来确定针对线段128的bs值。
83.bs值可以是0,意味着在块p 130和块q 132中的译码条件不会导致块伪影,并且应当跳过针对该线段的解块。bs值可以是2,意味着在块p 130和块q 132中的译码条件可能导致严重的块伪影,并且应当应用较强的滤波。bs值可以是1,意味着在块p 130和块q 132中的译码条件使得可能在无块伪影与严重块伪影之间。对于色度,与帧内译码的块相邻的线段被分配等于2的bs,以及否则具有等于0的bs。
84.可以在h.264/avc的章节8.7.2.1(“itu-t h.264,series h:audiovisual and multimedia systems,infrastructure of audiovisual services-coding of moving video”,国际电信联盟,2011年6月,674页),hevc的章节8.7.2.4(“itu-th.265,series h:audiovisual and multimedia systems,infrastructure of audiovisual services-coding of moving video,high efficiency video coding(itu-t h.265,h系列:视听及多媒体系统,视听服务的基础结构-移动视频的译码,高效视频译码)”,国际电信联盟,2015年4月,634页)和vvc草案5的章节8.8.3.5中,找到bs推导的细节。在vc草案的章节8.3.4(例如,对推导bs[xdi][ydi]的技术的描述)中描述用于确定边界强度值的其它示例。本公开内容中描述的技术不限于以其确定边界强度值的任何特定方式。
[0085]
下文相对于解块滤波,来描述针对亮度的一些其它决定。在边界强度(bs)确定的以上描述中,线段128具有块伪影的可能性仅是基于相邻块(例如,块p 130和块q 132)的译码条件来估计的。然而,可以通过进一步分析在该线段128附近的样本的值,来确定是否以及如何对线段128进行解块滤波。
[0086]
视频译码器可以通过计算线段128附近的四个样本的二阶导数,来确定是否对线段128进行解块滤波。图3是示出用于确定是否对线段应用解块的样本的示例的概念图。例如,图3示出线段134,并且在图3中将四个样本(例如,样本136、样本138、样本140和样本142)示出为圈出的样本。在图3中,视频译码器可以确定四个圈出的样本(例如,样本136、样本138、样本140和样本142)的二阶导数。视频译码器可以确定二阶导数的总和,以确定是否应当对该线段(例如,线段134)应用解块滤波。
[0087]
如果四个二阶导数的总和(参见下面的式(1))小于门限贝塔(β),如稍后关于门限β和tc所描述的,则需要对线段134进行解块。否则,认为线段134位于非平坦区域中,其中块伪影很可能被掩蔽,以及因此不进行解块。如果未达到门限,即使具有非零bs的线段也可以跳过解块。
[0088]
|p
2,0-2p
1,0
p
0,0
| |p
2,3-2p
1,3
p
0,3
| |q
2,0-2q
1,0
q
0,0
| |q
2,3-2q
1,3
q
0,3
|<β
ꢀꢀꢀ
(1)
[0089]
如上文所描述的,贝塔(例如,β)是视频译码器可以确定以确定如何进行解块滤波的一个或多个解块控制参数的示例。然而,最初,贝塔参数可以指示是否甚至需要解块滤波。例如,视频译码器可能确定bs值非零,这意味着存在块伪影的可能性。然而,如果不满足式1(例如,二阶导数的总和大于贝塔),则即使bs值非零,也可能不需要解块滤波。
[0090]
一旦视频译码器确定线段134要进行解块滤波,视频译码器就可以确定是使用强滤波模式还是普通滤波模式。例如,如果以下6个条件(式(2-1)到(2-6))都为真,这意味着该区域太平滑而无法掩盖任何块伪影,则使用强滤波模式。否则,使用普通滤波模式。
[0091]
|p
2,0-2p
1,0
p
0,0
| |q
2,0-2q
1,0
q
0,0
|<β/8
ꢀꢀꢀꢀꢀꢀ
(2-1)
[0092]
|p
2,3-2p
1,3
p
0,3
| |q
2,3-2q
1,3
q0,3|<β/8
ꢀꢀꢀꢀꢀꢀ
(2-2)
[0093]
|p
3,0-p
0,0
| |q
0,0-q
3,0
|<β/8
ꢀꢀꢀꢀꢀꢀ
(2-3)
[0094]
|p
3,3-p
0,3
| |q
0,3-q
3,3
|<β/8
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2-4)
[0095]
|p
0,0-q
0,0
|<2.5tcꢀꢀꢀꢀꢀꢀ
(2-5)
[0096]
|p
0,3-q
0,3
|<2.5tcꢀꢀꢀꢀꢀꢀ
(2-6)
[0097]
门限参数tc是裁剪参数,如下文稍后关于门限β和tc所描述的。在上面的示例中,分析和求导是在线段级别进行的(例如,对于线段134)。
[0098]
图4是示出在要解块的线段中的示例线(1ine)的概念图。例如,图4示出线段144和在线段144的每侧都具有样本的行146。在以下示例中的一些示例中,相对于用于亮度的强滤波模式和用于亮度的普通滤波模式进行描述,其中针对垂直线段的解块是逐线地执行(如果线段是水平的,则逐列地执行),描述针对仅一条线(例如,行146)的操作。在图4中示出p0、p1、p2、p3、q0、q1、q2和q3的物理位置。在图4中,在线段144中的四条线中的一条线(例如,行146)要进行解块滤波。
[0099]
下文介绍用于亮度的强滤波模式。在该模式下,处理在线段任一侧的三个样本。作为示例,以下示例是相对于样本p0、p1和p2来描述的。通过低通滤波,样本p0、p1和p2的值可以被更新为p0’
、p1’
和p2’
,如等式(3-1)至(3-3)中所示。
[0100]
p
′0=(p2 2p1 2p0 2q0 q1 4)>>3
ꢀꢀꢀꢀꢀꢀ
(3-1)
[0101]
p
′1=(p2 p1 p0 q0 2)>>2
ꢀꢀꢀꢀꢀꢀ
(3-2)
[0102]
p
′2=(2p3 3p2 p1 p0 q0 4)>>3
ꢀꢀꢀꢀꢀꢀ
(3-3)
[0103]
视频译码器可以将经修改的样本值p
i’(i=0,1,2)裁剪到范围[p
i-2tc,pi 2tc]。为了对样本q0、q1和q2进行解块滤波,视频译码器可以在将p与q交换后利用等式(3-1)至(3-3),并且然后以同样的方式应用裁剪。更详细地描述用于确定裁剪参数(tc)的示例方法。特别是,可以将裁剪参数视作为解块控制参数的示例,并且本公开内容描述以其基于比特深度来确定一个或多个解块控制参数的示例方式。
[0104]
下文描述用于亮度的普通滤波模式。在这种模式下,处理线段(例如,线段144)任一侧的一个或两个样本。对于线段144的左侧(参见图4),视频译码器检查在等式(4-1)中的条件。如果条件为真,则需要处理p0和p1(例如,解块滤波)。否则,仅处理p0(例如,仅对p0进行解块滤波)。同样,对于右侧,在等式(4-2)中的条件用于确定除了q0之外是否还需要处理ql。在线段144的任一侧独立地做出关于要处理的样本的数量的决定。因此,可能的是,在线段144的一侧处理一个样本并且在线段144的另一侧处理两个样本。
[0105]
|p
2,0-2p
1,0
p
0,0
| |p
2,3-2p
1,3
p
0,3
|<3/16β
ꢀꢀꢀꢀꢀꢀꢀꢀ
(4-1)
[0106]
|q
2,0-2q
1,0
q
0,0
| |q
2,3-2q
1,3
q
0,3
|<3/16β
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-2)
[0107]
为了处理(例如,解块滤波)p0和q0,首先如(5)中计算中间值δ。
[0108]
δ=(9(q
0-p0)-3(q
1-p1) 8)>>4
ꢀꢀꢀꢀꢀꢀ
(5)
[0109]
如果δ的绝对值大于或等于tc的10倍,则认为边界是自然边缘,自然边缘应当被保留。在这样的示例中,不对当前线执行解块。否则,将δ裁剪到从-tc到tc的范围内,如(6)中所示。
[0110]
δ0=clip3(-tc,tc,δ)
ꢀꢀꢀꢀꢀꢀ
(6)
[0111]
分别通过加入和减去δ0,将p0和q0的值更新为p0’
和q0’
,如(7-1)和(7-2)中所示。
[0112]
p
′0=p0 δ0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7-1)
[0113]q′0=q
0-δ0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7-2)
[0114]
为了处理线段任一侧的第二样本(即,p1和g1),使用(8-1)和(8-2)来获得更新的值p1’
和q1’

[0115][0116][0117]
下文描述针对色度的解块。对色度线段进行解块的方式是通过bs值来确定的,并且不要求样本值分析。(7-1)和(7-2)仅处理线段144的任一侧的第一样本(即,p0和q0),其中德尔塔(delta)δ0是如(9)中所示来计算的。
[0118]
δ0=clip3(-tc,tc,(((q
0-p0)<<2) p
1-q1 4)>>3)
ꢀꢀꢀꢀ
(9)
[0119]
下文描述门限β和tc。β和tc是一个或多个解块控制参数的示例。本公开内容描述用于比如基于视频数据的当前块的样本的比特深度来确定一个或多个解块控制参数的示例。
[0120]
为了避免过度滤波,在如上文所描述的解块滤波过程中使用两个参数β和tc。门限β用于控制应当执行解块滤波的方式,比如是否应当对线段(例如,线段144、线段134或线段128)进行解块滤波、使用强解块滤波还是普通解块滤波、或者应当处理(例如,解块滤波)线段一侧的一个还是两个样本。当达到或超过β或经缩放的β时(参见等式(1)、(2)和(4)),意味着局部样本值的较大变化,解块趋于更加保守,以保留在原始图片中的细节。否则,局部样本值具有较小的变化(即,较平滑),并且可以更积极地执行解块。
[0121]
除了等式(2-5)和(2-6)之外,裁剪值tc还可以用于控制样本幅度的最大变化。在普通滤波模式或针对色度的滤波时,对于线段一侧的第一样本,样本幅度的变化不应超过
±
tc(适用于亮度和色度),或者对于第二样本,样本幅度的变化不应超过
±
tc/2(仅适用于亮度)。在暗示较大的幅度变化的强滤波模式下,对于在线段的任一侧处理的三个样本,最大变化为
±
2tc。
[0122]
在一些技术中,β和tc的值主要取决于来自左边块p(例如,块p130)和右边块q(例如,块q 132)的qp(量化参数)值。更具体地说,来自块p 130和块q 132的qp的平均值(被表示为qp
ave
=(qp
p
qpq 1)>>1),被用作在两个1-d查找表(lut)中分别搜索β和tc的索引。虽然寻找tc值的搜索索引是通过加2来调整的(即,(qp
ave
2)),但是如果bs等于2,则确定β和tc值的主导因素仍然是qp
ave
。在两个lut中,条目值随着搜索索引的值单调地增加,这意味着qp
ave
越高,β和tc将具有越大的值,因此更可能选择较重的解块滤波并且允许较大的幅度变
化。相反,较低的qp导致β和tc的较小甚至为零的值。例如,因为当利用低qp进行译码时,图片几乎没有任何块伪影,因此需要较轻的解块或者甚至不需要解块。
[0123]
用于在lut中搜索β和tc的索引(被表示为idx
β
和idx
tc
),可以分别通过两个参数tc_offset_div2和beta_offset_div2来进一步调整(参见(10-1)和(10-2)),
[0124]
idx
β
=qp
ave
2
×
beta_offset_div2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10-1)
[0125]
idx
tc
=qp
ave
2
×
(bs-1) 2
×
tc_offset_div2
ꢀꢀꢀꢀꢀꢀꢀꢀ
(10-2)
[0126]
在一些示例中,tc_offset_div2和beta_offset_div2是在切片报头或图片参数集(pps)中发送的。这给予编码器(例如,视频编码器200)根据序列特性、编码模式和其它因素来适配解块强度的可能性。
[0127]
下文描述并行化。在hevc中,对于解块滤波,可以存在两个阶段:(1)对在图片中的所有垂直块边界进行滤波;以及(2)对所有水平块边界进行滤波。在阶段(2)中,用于模式决策和滤波的样本是阶段(1)的输出。在每个阶段,在被解块滤波的边界是平行的并且至少相隔8个样本的情况下,对一个边界进行解块滤波所涉及的样本与对任何其它边界进行解块滤波所涉及的样本不重叠(注意“对一个边界进行解块所涉及的样本”包括在边界任一侧的要滤波的多达三个样本、以及在任一侧的用于支持滤波和模式决定的多达四个样本),并且因此,一个边界可以与任何其它边界并行地进行解块滤波。
[0128]
下文总结如上文所描述的解块(例如,解块滤波)。解块滤波操作包括:对块边界(例如,线段)附近的样本进行滤波,并且对样本幅度的变化进行裁剪。随着增加块边界附近样本的局部活动,滤波部分提供三个级别的滤波强度:强、普通或零(即,无滤波)(参见等式(1)和(2))。对于强滤波模式,通过低通滤波器来对块边界每侧的3个样本进行滤波(参见等式(3))。对于普通滤波模式,至少对最接近边界的样本进行滤波,并且如果内部样本足够平滑,则可以在任一侧对第二最接近样本进行滤波(参见等式(4))。裁剪部分是通过参数tc进行控制的。通过强滤波,样本幅度的变化不大于2tc。通过普通滤波,第1和第2样本的幅度变化分别不大于tc和tc/2(参见等式(6)-(8))。不同的bs值可能导致tc的差异,即,与具有等于1的bs的线段相比,具有等于2的bs的线段具有较大的tc。
[0129]
某些解块滤波技术可能存在问题。在一些解块滤波技术中,解块滤波的主要特征是通过一组门限来定义的,其中一些门限可能取决于qp并且是以lut的形式(例如,存储的参数)来表示的。视频译码器还可以通过用户提供的控制或者通过根据信号确定的其它特性(例如,在块边界上的梯度量),来改变滤波特性/强度(例如,β和tc)。在一些示例中,可以针对某些测试内容(例如,8比特4:2:0yuv,cif分辨率(avc/hevc时间))来训练解块滤波的解块控制参数(例如,像β和tc)。
[0130]
然而,随着部署新类型的内容(例如,10/12比特、4:2:2、hdr),可以改变主要解块强度/门限对qp的依赖,并且需要自动衰减机制。换句话说,对于正在部署的新类型内容,不必主要地基于qp来确定产生高质量图片的用于解块滤波的正确解块控制参数(例如,β和tc)(尽管qp可能是确定β和tc的因素)。
[0131]
在一些设计方案中,用户定义的参数被传送到比特流并且被应用以改变滤波器的强度,例如下文是来自h.264/avc的示例。稍后的设计方案遵循相同的概念。
[0132]
slice_alpha_c0_offset_div2指定在访问用于由在切片内的宏块所控制的滤波操作的α和tc0解块滤波表时使用的偏移量。根据该值,在寻址这些表时应当应用的偏移,应
当被计算为filteroffseta=slice_alpha_c0_offset_div2《《1(7-32)。slice_alpha_c0_offset_div2的值应当在-6到 6的范围(包括端值)中。当在切切片头中不存在slice_alpha_c0_offset_div2时,应当推断slice_alpha_c0_offset_div2的值等于0。
[0133]
slice_beta_offset_div2指定在访问用于由在切片内的宏块所控制的滤波操作的β解块滤波表时使用的偏移。根据该值,在寻址解块滤波的β表时应用的偏移,应当被计算为filteroffsetb=slice_beta_offset_div2《《1。
[0134]
在一些示例中,indexa可以是用于访问表(h.264/avc的表8-16)以及t
c0
表(h.264/avc的表8-17)的变量,所述变量用于对具有小于4的bs的边缘(例如,线段)进行滤波(如在h.264/avc的条款8.7.2.3所规定的),并且将indexb设为用于访问表(h.264/avc的表8-16)的变量。变量indexa和indexb是按下式推导的:
[0135]
indexa=clip3(0,51,qpav filteroffseta)
ꢀꢀ
(8-454)
[0136]
indexb=clip3(0,51,qpav filteroffsetb)
ꢀꢀ
(8-455)
[0137]
在上式中,qpav指代在边界(例如,线段)的每侧上的两个块之间的qp的平均。边界可以是在两个块之间的边界,但是示例技术不受此限制。之后,可以通过局部统计来改变滤波器的参数,例如,参见h.264/avc的条款8.7.2.3。
[0138]
下文描述h.264/avc的用于具有小于4的bs的边缘(例如,线段)的滤波过程。该过程的输入是跨越要滤波的边缘的单个样本集的输入样本值pi和qi(i=0..2)、针对输入样本集的chromaedgeflag、chromastylefilteringflag、bs、β和indexa,如在h.264/avc的条款8.7.2中所规定的。该过程的输出是针对输入样本值集的经滤波的结果样本值p

i和q

i(i=0..2)。
[0139]
根据indexa和bs的值,变量t

c0
是在表8-17中指定的。根据chromaedgeflag,相应的门限变量tc0案是如下所列来推导的:
[0140]

如果chromaedgeflag等于0,
[0141]
t
c0
=t

c0
*(1《《(bitdepthy-8))
[0142]

否则(chromaedgeflag等于1),
[0143]
t
c0
=t

c0
*(1《《(bitdepthc-8))
[0144]
门限变量ap和aq是通过下式来推导的:
[0145]
ap=abs(p2-p0)(8-463)aq=abs(q2-q0)(8-464)。
[0146]
门限变量tc是按如下所列来确定的:
[0147]

如果chromastylefilteringflag等于0,
[0148]
tc=t
c0
((ap《beta)?1:0) ((aq《beta)?1:0)
[0149]
在上式中,一旦t
c0
被缩放以适应比特深度增加,强度和裁剪值调整就不考虑比特深度增加。例如,t
c0
可以被认为是初始裁剪值(例如,初始解块控制参数),并且tc可以是用于解块滤波的裁剪值(例如,解块控制参数)。在上式中,在一些情况下,t
c0
(例如,初始裁剪值)可能是基于比特深度增加来确定的。然而,tc(例如,裁剪值)不是基于比特深度增加来确定的。
[0150]
例如,在上式中,“ap”可以是在线146中的位于用于解块滤波的线段144的第一方向上的两个样本之间的第一差值。例如,p2和p0两者都位于线段144左侧的线146上。在上式中,“aq”可以是在线146中的位于用于解块滤波的线段144的第二方向上的两个样本之间的
第二差值。例如,q2和q0两者都位于线段144右侧的线146上。
[0151]
视频译码器可以确定第一差值(例如,abs(p2-p0))是否小于门限(例如,beta),并且可以确定第二差值(例如,abs(q2-q0))是否小于门限(例如,beta)。基于第一差值小于门限值(例如,ap《beta),在上式中,视频译码器可以将1加到初始裁剪值,而不管比特深度。基于第二差值小于门限(例如,aq《beta),在上式中,视频译码器可以将1加到初始裁剪值,而不管比特深度。因此,如果ac和aq都小于beta,则视频译码器可以将2加到初始裁剪值。
[0152]
基于ac小于贝塔和/或aq小于贝塔来进行1或2的相加,可能意味着通过其调整初始解块控制参数(例如,t
c0
)的调整值等于1或2,而不管当前块的样本的比特深度。然而,比特深度可能影响初始解块控制参数要被调整多少。因此,未能在确定解块控制参数(比如裁剪参数(tc))时考虑比特深度,可能导致不正确地控制解块滤波的解块控制参数。例如,如果在确定裁剪参数(tc)时不考虑比特深度,则在执行解块滤波之后,可能将所得值裁剪到太小的范围,从而导致过度平滑或平滑不足。
[0153]
根据在本公开内容中描述的一个或多个示例,视频译码器(例如,视频编码器200或视频解码器300)可以对解块控制参数(例如,β和tc)的所有分量应用比特深度、或用户定义或其它类型的内容相关调整。用于解决h.264/avc解块调整问题的一个示例如下所示:
[0154]

如果chromaedgeflag等于0,
[0155]
t
c0
=t

c0
*(1《《bitdepthadjustment)
[0156]

否则(chromaedgeflag等于1),
[0157]
t
c0
=t

c0
*(1《《bitdepthadjustment))
[0158]
门限变量ap和aq是通过下式推导的:
[0159]
ap=abs(p2-p0)
[0160]
aq=abs(q2-q0).
[0161]
门限变量tc是按如下所列来确定的:
[0162]

如果chromastylefilteringflag等于0,
[0163]
tc=t
c0
((ap《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)
[0164]-否则(chromastylefilteringflag等于1),
[0165]
tc=t
c0
(1《《bitdepthadjustment)
[0166]
在上面的示例中,t
c0
可以是初始解块控制参数(例如,初始裁剪值)并且tc是视频编码器200和视频解码器300确定的解块控制参数(例如,tc是用于解块滤波的裁剪值)。如在示例等式中所示,tc是基于bitdepthadjustment来确定的(例如,(1《《bitdepthadjustment),其中bitdepthadjustment是针对比特深度参数调整的示例)。
[0167]
例如,在本公开内容所描述的一个或多个示例中,视频译码器可以基于存储的参数和视频数据的当前块的样本的比特深度,来确定一个或多个初始解块控制参数。作为示例,视频译码器可以基于关于查找表的索引,来确定存储的参数(例如,t’c0
)。查找表的索引可以是基于线段周围的块(例如,块p 130和块q 132的)的量化参数和边界强度(bs)值。作为一个示例,视频译码器可以存储查找表,比如在evc草案的章节8.8.3.6中描述的表35,其中在查找表中的条目是通过indexa和bs(边界强度)值来定义的。用于indexa的值是基于量化参数的。
[0168]
视频译码器可以基于存储的参数(t’c0
)和视频数据的当前块的样本的比特深度(例如,bitdepthadjustment),来确定初始解块控制参数(例如,初始裁剪参数(t
c0
))。例如,如上文所描述的,t
c0
=t

c0
*(1《《bitdepthadjustment)。
[0169]
视频译码器可以基于当前块的样本的比特深度,来确定将通过其调整一个或多个初始解块控制参数的调整值。例如,如上文所阐述的,视频译码器可以确定((ap《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。也就是说,视频译码器可以将一个或多个解块控制参数(tc)确定为t
c0
((ap《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。
[0170]
例如,视频译码器可以确定ap,其中ap是在一线(例如,线146)中的位于用于解块滤波的线段(例如,线段144)的第一方向上的两个样本之间的第一差值。如上文所描述的,视频译码器可以确定abs(p2-p0),abs(p2-p0)等于ap。视频译码器可以确定aq,其中aq是在一线(例如,线146)中的位于用于解块滤波的线段(例如,线段144)的第二方向上的两个样本之间的第二差值。如上文所描述的,视频译码器可以确定abs(q2-q0),abs(q2-q0)等于aq。
[0171]
视频译码器可以确定第一差值(ap)和第二差值(aq)是否小于门限值(例如,beta)。如上文所描述的,视频译码器可以基于在线段(例如,线段128)的第一方向上的第一块(例如,块p 130)和在线段(例如,线段128)的第二方向上的第二块(例如,块q 132)的量化参数,来确定门限值(beta)。
[0172]
基于第一差值(ap)小于门限值(beta),视频译码器可以将调整值添加到一个或多个初始解块控制参数。基于第二差值(aq)小于门限值(beta),视频译码器可以将调整值添加到一个或多个初始解块控制参数。例如,调整值可以等于(1《《bitdepthadjustment)。在该示例中,视频译码器可以基于当前块的样本的比特深度来确定调整值。例如,调整值是基于bitdepthadjustment的,bitdepthadjustment可以是基于或等于当前块的样本的比特深度的。作为一个示例,比特深度为10比特或大于10比特,意味着对于每个颜色分量或者亮度和色度分量,存在10比特或大于10比特可用。
[0173]
以上示例是相对于比特深度和tc描述的。然而,示例技术可以用于其它调整(例如,比特深度调整、用户定义的调整、取决于内容的调整、或者任何组合)。此外,示例技术可以扩展到其它解块控制参数(例如,β)。
[0174]
在上式中,t
c0
=t

c0
*(1《《bitdepthadjustment),并且tc=t
c0
((ap《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。可以将以上两个等式进行如下改写。例如,tcincp=((ap《β)?1:0)以及tcincq=((aq《β)?1:0),代入t
c0
的等式,tc得到:
[0175]
tc=t’c0
*(1《《bitdepthadjustment) tcincp*(1《《bitdepthadjustment) tcincq*(1《《bitdepthadjustment)。
[0176]
通过从上式中析出因子(1《《bitdepthadjustment),可以将针对tc的等式写为:
[0177]
tc=(t’c0
tcincp tcincq)*(1《《bitdepthadjustment)。
[0178]
在等中,tc=(t’c0
tcincp tcincq)*(1《《bitdepthadjustment),可以将(t’c0
)*(1《《bitdepthadjustment)的操作认为是以下操作的示例:基于存储的参数和视频数据的当前块的样本的比特深度,确定一个或多个初始解块控制参数。可以将操作(tcincp
tcincq)*(1《《bitdepthadjustment)认为是通过其对一个或多个初始解块控制参数进行调整的调整值的示例。调整值(例如,(tcincp tcincq)*(1《《bitdepthadjustment))是基于当前块的样本的比特深度(例如,bitdepthadjustment)的。
[0179]
在调整值为(tcincp tcincq)*(1《《bitdepthadjustment)的示例中,可以认为调整值是基于相邻像素的方差的。例如,tcincp是基于ap的,并且ap等于abs(p2-p0),abs(p2-p0)指示像素p2和p0的方差;tcincq是基于aq的,并且aq等于abs(q2-q0),abs(q2-q0)指示像素q2和q0的方差。
[0180]
在数学上,可以有多种方式来表示t
c0
=t

c0
*(1《《bitdepthadjustment),并且tc=t
c0
((ap《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。如上文所描述的,一种数学表示这些等式的示例方法是tc=(t’c0
tcincp tcincq)*(1《《bitdepthadjustment),其中tcincp=((ap《β)?1:0)并且tcincq=((aq《β)?1:0)。然而,可以存在以类似的数学表示法来表示等式的其它方法。
[0181]
例如,用于确定裁剪参数(例如,tc)的另一示例技术可以如下所示:
[0182]
tcincp=((ap《β)?1:0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0183]
tcincq=((aq《β)?1:0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0184]
tc=(t

c0
tcincp tcincq)*(1《《(max(0,bitdepth

9)))
[0185]
用于tc的以上等式可以类似于上文针对tc进一步描述的其它等式。例如,(max(0,bitdepth

9)可以是bitdepthadjustment的示例。用于tc的以上等式可以应用于在块边缘处的像素以进行解块滤波。
[0186]
根据在本公开内容中所描述的技术,不管数学等式是如何表示的,都可以认为视频译码器基于存储的参数和视频数据的当前块的样本的比特深度来确定一个或多个初始解块控制参数(例如,确定t
c0
或t’c0
*(1《《bitdepthadjustment)并且基于当前块的样本的比特深度来确定通过其对一个或多个初始解块控制参数进行调整的调整值(例如,确定(1《《bitdepthadjustment)or((tcincp tcincq)*(1《《bitdepthadjustment)))。可以认为视频译码器基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,并且基于所确定的一个或多个解块控制参数对当前块的一个或多个样本进行解块滤波。
[0187]
图5是示出可以执行本公开内容的技术的示例视频编码器200的方块图。图5出于解释的目的的提供的,并且不应当被认为是对如在本公开内容中广泛举例说明和描述的技术的限制。为了解释,本公开内容在比如hevc视频译码标准和开发中的h.266视频译码标准之类的视频译码标准的上下文中,描述视频编码器200。然而,本公开内容的技术不限于这些视频译码标准,并且通常适用于视频编码和解码。
[0188]
在图5的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波单元216、解码图片缓冲器(dpb)218和熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波单元216、dpb 218和熵编码单元220中的任何或全部单元,可以在一个或多个处理器中或者在处理电路中实现。此外,视频编码器200可以包括另外的或替代的处理器或处理电路,以执行这些功能和其它功能。
[0189]
视频数据存储器230可以存储将由视频编码器200的组件编码的视频数据。视频编
码器200可以从例如视频源104(图1)接收被存储在视频数据存储器230中的视频数据。dpb 218可以充当参考图片存储器,参考图片存储器存储参考视频数据以供视频编码器200在预测后续视频数据时使用。视频数据存储器230和dpb 218可以由多种存储设备中的任何存储设备形成,比如动态随机存取存储器(dram)(包括同步dram(sdram))、磁阻ram(mram)、电阻性ram(rram)或其它类型的存储设备。视频数据存储器230和dpb 218可以由相同的存储设备或不同的存储设备提供。在各个示例中,视频数据存储器230可以与视频编码器200的其它组件一起在芯片上,如所示的,或者相对于那些组件在芯片外。
[0190]
在本公开内容中,对视频数据存储器230的引用不应被解释为限于在视频编码器200内部的存储器(除非明确描述为如此),或者限于在视频编码器200之外的存储器(除非明确描述为如此)。确切而言,对视频数据存储器230的引用应当被理解为存储视频编码器200接收以进行编码的视频数据(例如,要编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对来自视频编码器200的各个单元的输出的临时存储。
[0191]
示出图5的各个单元以帮助理解由视频编码器200执行的操作。所述单元可以被实现为固定功能电路、可编程电路或者其组合。固定功能电路指代提供特定功能并且关于可以执行的操作被预先设置的电路。可编程电路指代可以被编程以执行各种任务,并且在可以执行的操作上提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使得可编程电路以由软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,所述单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
[0192]
视频编码器200可以包括由可编程电路形成的算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或可编程内核。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并且执行的软件的目标代码,或者在视频编码器200中的另一存储器(没有示出)可以存储这样的指令。
[0193]
视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230取回视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。在视频数据存储器230中的视频数据可以是将进行编码的原始视频数据。
[0194]
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括额外的功能单元,以根据其它预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(lm)单元等等。
[0195]
模式选择单元202通常协调多个编码通道(pass),以测试编码参数的组合以及所得到的针对这样的组合的率失真值。编码参数可以包括:ctu到cu的划分、用于cu的预测模式、用于cu的残差数据的变换类型、用于cu的残差数据的量化参数等等。模式选择单元202可以最终选择具有与其它测试的组合相比较好的速率失真值的编码参数的组合。
[0196]
视频编码器200可以将从视频数据存储器230取回的图片划分为一系列ctu,并且将一个或多个ctu封装在切片中。模式选择单元202可以根据树结构(比如上文所描述的hevc的qtbt结构或四叉树结构)来划分图片的ctu。如上文所描述的,视频编码器200可以根据树结构,通过划分ctu来形成一个或多个cu。这样的cu通常还可以被称为“视频块”或“块”。
[0197]
通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前cu、或者在hevc中,pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb 218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。特备是,运动估计单元222可以例如根据绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等等,来计算表示潜在参考块与当前块如何相似的值。运动估计单元222通常可以使用在当前块与正考虑的参考块之间的逐样本差异来执行这些计算。运动估计单元222可以识别具有由这些计算所产生的最小值的参考块,指示与当前块最紧密匹配的参考块。
[0198]
运动估计单元222可以形成一个或多个运动矢量(mv),mv定义相对于当前块在当前图片中的位置而言参考块在参考图片中的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来取回参考块的数据。作为另一示例,如果运动矢量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器,对用于预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以例如通过逐样本平均或加权平均,来取回由相应的运动矢量识别的两个参考块的数据,并对取回的数据进行组合。
[0199]
作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于定向模式,帧内预测单元226通常可以对相邻样本的值进行算术组合,并且跨越当前块在沿着定义的方向上填充这些计算的值以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算当前块的相邻样本的平均,并且生成预测块以包括针对预测块的每个样本的该所得的平均值。
[0200]
模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始、未编码版本,并且从模式选择单元202接收预测块。残差生成单元204计算在当前块和预测块之间的逐样本差异。所得的逐样本差异定义针对当前块的残差块。在一些示例中,残差生成单元204还可以确定在残差块中的样本值之间的差异,以使用残差差分脉冲译码调制(rdpcm)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路,来形成残差生成单元204。
[0201]
在模式选择单元202将cu划分为pu的示例中,每个pu可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的pu。如上文所描述的,cu的大小可以指代cu的亮度译码块的大小,并且pu的大小可以指代pu的亮度预测单元的大小。假设特定cu的大小为2nx2n,则视频编码器200针对帧内预测可以支持2nx2n或nxn的pu大小,并且针对帧间预测可以支持2nx2n、2nxn、nx2n、nxn等的对称pu大小。视频编码器200和视频解码器300还可以针对帧间预测支持pu大小为2nxnu、2nxnd、nlx2n和nrx2n的非对称划分。
[0202]
在模式选择单元不将cu进一步划分成pu的示例中,每个cu可以与亮度译码块和对应的色度译码块相关联。如上文,cu的大小可以指代cu的亮度译码块的大小。视频编码器
200和视频解码器300可以支持2nx2n、2nxn或nx2n的cu大小。
[0203]
对于其它视频译码技术(比如块内复制模式译码、仿射模式译码和线性模型(lm)模式译码,仅举几个示例),模式选择单元202经由与译码技术相关联的各个单元,针对正在编码的当前块来生成预测块。在一些示例中(比如调色板模式译码),模式选择单元202可以不生成预测块,并且替代地生成语法元素,所述语法元素指示以其基于所选的调色板来重构块的方式。在这样的模式下,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
[0204]
如上文所描述的,残差生成单元204接收用于当前块和对应的预测块的视频数据。然后,残差生成单元204生成针对当前块的残差块。为了生成残差块,残差生成单元204计算在预测块和当前块之间的逐样本差异。
[0205]
变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(本文称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向性变换、karhunen-loeve变换(klt)或者概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如,主变换和次要变换(比如旋转变换)。在一些示例中,变换处理单元206不向残差块应用变换。
[0206]
量化单元208可以对在变换系数块中的变换系数进行量化,以产生经量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值,来对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值,来调整应用于与当前块相关联的变换系数块的量化程度。量化可能引入信息丢失,并且因此,经量化的变换系数可能具有与由比变换处理单元206所产生的原始变换系数相比较低的精度。
[0207]
逆量化单元210和逆变换处理单元212可以将逆量化和逆变换分别应用于量化的变换系数块,以根据变换系数块来重建残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块,来产生与当前块相对应的重构块(尽管可能具有一定程度的失真)。例如,重构单元214可以将重构的残差块的样本添加到来自由模式选择单元202所生成的预测块的对应样本,以生成重构的块。
[0208]
滤波单元216可以对重构的块执行一个或多个滤波操作。例如,滤波单元216可以执行解块操作以减少沿着cu的边缘(例如,线段或边界)的块效应伪影。在一些示例中,可以跳过滤波单元216的操作。
[0209]
在一个或多个示例中,滤波单元216可以被配置为执行本公开内容中所描述的示例技术,或者滤波单元216结合视频编码器200的其它组件(例如,模式选择单元202)可以被配置为执行本公开内容中所描述的示例技术。例如,滤波单元216可以形成视频编码器200的解码环路的一部分。如上文所描述的,逆量化单元210和逆变换处理单元212可以被配置为分别执行量化单元208和变换处理单元206的逆操作。然后,重构单元214重构当前块,并且滤波单元216可以被配置为在解码图片缓冲器(dpb)218中进行存储之前对重构的块执行解块滤波。
[0210]
根据在本公开内容中描述的一个或多个示例,滤波单元216可以被配置为基于在视频数据的当前块中的样本的比特深度,来确定一个或多个解块控制参数。例如,滤波单元
216可以被配置为基于存储的参数以及视频数据的当前块的样本的比特深度,来确定一或多个初始解块控制参数。作为一个示例,滤波单元216可以基于一个或多个量化参数和边界强度值,来确定存储的参数。例如,滤波单元216可以基于量化参数和边界强度值,来确定关于被存储在视频数据存储器230或某个其它存储器中的查找表的索引,以确定存储的参数。
[0211]
基于存储的参数和视频数据的当前块的样本的比特深度,滤波单元216可以确定一个或多个初始解块控制参数。作为一个示例,为了确定一个或多个初始解块控制参数,滤波单元216可以基于存储的参数(例如,t’c0
)和当前块的样本的比特深度(例如,t
c0
=t

c0
*(1《《bitdepthadjustment)),来确定初始裁剪参数(例如,t
c0
)。
[0212]
滤波单元216可以基于当前块的样本的比特深度,来确定通过其调整一个或多个初始解块控制参数的调整值。作为一个示例,调整值可以等于(1《《bitdepthadjustment)。作为一个示例,比特深度为10比特或大于10比特。
[0213]
滤波单元216可以基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数。例如,滤波单元216可以确定在一线中的位于用于解块滤波的线段的第一方向上的两个样本之间的第一差值(例如,确定ap,ap等于abs(p2-p0))。滤波单元216可以确定在所述线中的位于用于解块滤波的线段的第二方向上的两个样本之间的第二差值(例如,确定aq,aq等于abs(q2-q0))。为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,滤波单元216可以被配置为基于第一差值(例如,ap)小于门限值(例如,beta),将调整值(例如,(1《《bitdepthadjustment))添加到一个或多个初始解块控制参数(例如,t
c0
),并且基于第二差值(例如,aq)小于门限值(例如,beta),将调整值(例如,(1《《bitdepthadjustment))添加到一个或多个初始解块控制参数(例如,t
c0
)。如上文所描述的,滤波单元216可以基于在线段(例如,线段128)的第一方向上的第一块(例如,块p 130)和在线段(例如,线段128)的第二方向上的第二块(例如,块q 132)的量化参数,来确定门限值(例如,beta)。
[0214]
因此,如果ap或aq中的仅一者小于beta,则为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,滤波单元216可以将(1《《bitdepthadjustment)(这是调整值的一个示例)添加到初始裁剪参数(例如,t
c0
)。如果ap和ap两者都小于beta,则为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,滤波单元216可以将(1《《bitdepthadjustment)两次添加到初始裁剪参数(例如,t
c0
)。
[0215]
滤波单元216可以基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。例如,为了确定一个或多个解块控制参数,滤波单元216可以确定控制来自解块滤波的样本的最大变化的裁剪参数。因此,滤波单元216可以进行解块滤波,并且确定对样本的解块滤波的结果是否导致样本值的变化大于由裁剪参数所允许的最大变化。然后,滤波单元216可以对样本的值进行裁剪,使得在解块滤波之后样本的幅度的变化小于或等于裁剪参数。
[0216]
在一个或多个示例中,作为解码环路的一部分,滤波单元216可以执行解块滤波以生成用于对后续块进行帧间预测的当前块。例如,视频编码器200经由滤波单元216将重构的块存储在dpb 218中。例如,在不需要滤波单元216的操作的示例中,重构单元214可以将重构的块存储到dpb 218中。在需要滤波单元216的操作的示例中,滤波单元216可以将经滤
波的重构的块存储到dpb 218中。运动估计单元222和运动补偿单元224可以从dpb 218取回由重构(并且可能滤波)的块形成的参考图片,以对随后编码的图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片在dpb 218中的重构的块,对在当前图片中的其它块进行帧内预测。
[0217]
通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或者用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对语法元素(其是视频数据的另一示例)执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(cavlc)操作、cabac操作、变量至变量(v2v)长度译码操作、基于语法的上下文自适应二进制算术译码(sbac)操作、概率间隔划分熵(pipe)译码操作、指数格伦布编码操作、或者另一类型的熵编码操作。在一些示例中,熵编码单元220可以在不对语法元素进行熵编码的旁通模式下操作。
[0218]
视频编码器200可以输出比特流,比特流包括重构切片或图片的块所需要的经熵编码的语法元素。特别是,熵编码单元220可以输出比特流。
[0219]
上文所描述的操作是相对于块来描述的。这样的描述应当被理解为用于亮度译码块和/或色度译码块的操作。如上文所描述的,在一些示例中,亮度译码块和色度译码块是cu的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是pu的亮度和色度分量。
[0220]
在一些示例中,不需要针对色度译码块来重复关于亮度译码块执行的操作。作为一个示例,不需要为了识别用于色度块的运动矢量(mv)和参考图片而重复用于识别用于亮度译码块的mv和参考图片的操作。相反,可以缩放用于亮度译码块的mv以确定用于色度块的mv,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。
[0221]
视频编码器200表示被配置为对视频数据进行编码的设备的示例,设备包括被配置为存储视频数据的存储器、以及利用电路来实现并且被配置为执行本公开内容中描述的示例技术的一个或多个处理单元。作为一个示例,视频编码器200(例如,经由滤波单元216)可以确定指示对用于重构视频数据(例如,当前块)的一个或多个参数的一个或多个调整的信息。作为一个示例,对一个或多个参数的一个或多个调整包括比特深度调整(例如,bitdepthadjustment)、用户定义的调整、或者取决于内容的调整。
[0222]
视频编码器200(例如,经由滤波单元216)可以基于所确定的信息来确定一个或多个解块控制参数。一个或多个解块控制参数包括以下各项中的至少一项:用于控制样本幅度的最大变化的裁剪值(例如,tc)、以及用于确定应当以其执行解块滤波的方式的门限参数(例如,β)。作为一个示例,视频编码器200可以确定一个或多个初始解块控制参数(例如,t
c0
),并且基于所确定的一个或多个初始解块控制参数(例如,t
c0
)和所确定的信息(例如,对用于重构视频数据的一个或多个参数的调整),来确定一个或多个解块控制参数。例如,为了确定tc,视频编码器200可以执行下式的运算:tc=t
c0
((a
p
《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。在该示例中,tc是裁剪值并且是一个或多个解块控制参数中的一项,t
c0
是一个或多个初始解块控制参数(例如,初始裁剪值)中的一项,并且bitdepthadjustment是对用于重构视频数据的比特深度参数
的调整。此外,上文描述了a
p
、aq和beta的示例。
[0223]
视频编码器200(例如,经由滤波单元216)可以基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。上文描述了基于解块控制参数(例如,tc和β)来执行解块滤波的示例技术。
[0224]
图6是示出可以执行本公开内容的技术的示例视频解码器300的方块图。图6是出于解释的目的而提供的并且不应被认为是对在本公开内容中广泛举例说明和描述的技术的限制。为了解释,本公开内容描述根据vvc和hevc的技术的视频解码器300。然而,本公开内容的技术可以由针对其它视频译码标准进行配置的视频编码设备来执行。
[0225]
在图6的示例中,视频解码器300包括译码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波单元312和解码图片缓冲器(dpb)314。cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波单元312和dpb 314中的任何或全部单元,可以在一个或多个处理器中或者在处理电路中实现。此外,视频解码器300可以包括额外的或替代的处理器或处理电路,以执行这些功能和其它功能。
[0226]
预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括用于根据其它预测模式来执行预测的额外单元。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等等。在其它示例中,视频解码器300可以包括更多、更少或者不同的功能组件。
[0227]
cpb存储器320可以存储将由视频解码器300的组件解码的视频数据(比如经编码的视频比特流)。例如,可以从计算机可读介质110(图1)中获得存储在cpb存储器320中的视频数据。cpb存储器320可以包括存储来自经编码的视频比特流的经编码的视频数据(例如,语法元素)的cpb。而且,cpb存储器320可以存储除了经译码的图片的语法元素之外的视频数据,比如表示来自视频解码器300的各个单元的输出的临时数据。dpb314通常存储经解码的图片,视频解码器300可以输出经解码的图片,和/或在对经编码的视频比特流的后续数据或图片进行解码时将经解码的图片用作参考视频数据。cpb存储器320和dpb 314可以由各种存储设备中的任何存储器设备来形成的,比如dram(包括sdram)、mram、rram或其它类型的存储器设备。cpb存储器320和dpb 314可以由相同的存储设备或不同的存储设备来提供。在各个示例中,cpb存储器320可以与视频解码器300的其它组件一起在芯片上,或者相对于那些组件在芯片外。
[0228]
另外地或替代地,在一些示例中,视频解码器300可以从存储器120(图1)中取回经译码的视频数据。也就是说,存储器120可以存储数据,如上文参照cpb存储器320所讨论的。同样,当视频解码器300的一些或全部功能是利用由视频解码器300的处理电路执行的软件来实现的时,存储器120可以存储将由视频解码器300执行的指令。
[0229]
示出在图6中示出的各个单元以帮助理解由视频解码器300执行的操作。所述单元可以被实现为固定功能电路、可编程电路或者其组合。类似于图5,固定功能电路指代提供特定功能并且关于可以执行的操作被预先设置的电路。可编程电路指代可以被编程以执行各种任务,并且在可以执行的操作上提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使得可编程电路以由软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,用于接收参数或输出参数),但是固定功能电路执行的
操作的类型通常是不可变的。在一些示例中,所述单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
[0230]
视频解码器300可以包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程内核。在通过在可编程电路上执行的软件来执行视频解码器300的操作的示例中,片上或片外存储器可以存储视频解码器300接收并且执行的软件的指令(例如,目标代码)。
[0231]
熵解码单元302可以从cpb接收经编码的视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波单元312可以基于从比特流中提取的语法元素来生成经解码的视频数据。
[0232]
通常,视频解码器300在逐块的基础上重建图片。视频解码器300可以单独地对每个块执行重构操作(其中,当前正在重构(即,解码)的块可以被称为“当前块”)。
[0233]
熵解码单元302可以对定义量化的变换系数块的量化的变换系数以及变换信息(比如量化参数(qp)和/或变换模式指示)的语法元素进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的qp来确定量化程度,并且同样地,确定供逆量化单元306应用的逆量化程度。例如,逆量化单元306可以执行按位左移运算以对量化的变换系数进行逆量化。逆量化单元306可以由此形成包括变换系数的变换系数块。
[0234]
在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以向系数块应用逆dct、逆整数变换、逆karhunen-loeve变换(klt)、逆旋转变换、逆方向性变换或者另一逆变换。
[0235]
此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素,来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的从其取回参考块的参考图片以及运动矢量,所述运动矢量标识相对于当前块在当前图片中的位置而言参考块在参考图片中的位置。运动补偿单元316通常可以以与关于运动补偿单元224(图5)所描述的方式基本上相似的方式,来执行帧间预测过程。
[0236]
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图5)所描述的方式基本上相似的方式来执行帧内预测过程。帧内预测单元318可以从dpb 314取回当前块的相邻样本的数据。
[0237]
重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本添加到预测块的对应样本以重构当前块。
[0238]
滤波单元312可以对重构的块执行一个或多个滤波操作。例如,滤波单元312可以执行解块操作,以减少沿着重构的块的边缘(例如,线段或边界)的块效应伪影。不一定在所有示例中都执行滤波单元312的操作。
[0239]
在一个或多个示例中,滤波单元312可以被配置为执行本公开内容中所描述的示例技术,或者滤波单元312结合视频解码器300的其它组件(例如,预测处理单元304)可以被配置为执行本公开内容中所描述的示例技术。例如,滤波单元312可以从重构单元310接收重构的块。滤波单元312可以被配置为在解码图片缓冲器(dpb)314中进行存储之前,对重构的块执行解块滤波。
[0240]
根据本公开内容中描述的一个或多个示例,滤波单元312可以被配置为基于在视频数据的当前块中的样本的比特深度,来确定一个或多个解块控制参数。例如,滤波单元312可以被配置为基于存储的参数以及视频数据的当前块的样本的比特深度,来确定一或多个初始解块控制参数。作为一个示例,滤波单元312可以基于一个或多个量化参数和边界强度值,来确定存储的参数。例如,滤波单元312可以基于量化参数和边界强度值来确定关于被存储在存储器(例如,cpb存储器320、dpb 314)或某个其它存储器中的查找表的索引,以确定存储的参数。
[0241]
基于存储的参数和视频数据的当前块的样本的比特深度,滤波单元312可以确定一个或多个初始解块控制参数。作为一个示例,为了确定一个或多个初始解块控制参数,滤波单元312可以基于存储的参数(例如,t’c0
)和当前块的样本的比特深度(例如,t
c0
=t

c0
*(1《《bitdepthadjustment))来确定初始裁剪参数(例如,t
c0
)。
[0242]
滤波单元312可以基于当前块的样本的比特深度,来确定将通过其调整一个或多个初始解块控制参数的调整值。作为一个示例,调整值可以等于(1《《bitdepthadjustment)。作为一个示例,比特深度为10比特或大于10比特。
[0243]
滤波单元312可以基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数。例如,滤波单元312可以确定在一线中的位于用于解块滤波的线段的第一方向上的两个样本之间的第一差值(例如,确定ap,ap等于abs(p2-p0))。滤波单元312可以确定在所述线中的位于用于解块滤波的线段的第二方向上的两个样本之间的第二差值(例如,确定aq,aq等于abs(q2-q0))。为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,滤波单元312可以被配置为:基于第一差值(例如,ap)小于门限值(例如,beta),将调整值(例如,(1《《bitdepthadjustment))添加到一个或多个初始解块控制参数(例如,t
c0
),并且基于第二差值(例如,aq)小于门限值(例如,beta),将调整值(例如,(1《《bitdepthadjustment))添加到一个或多个初始解块控制参数(例如,t
c0
)。如上文所描述的,滤波单元312可以基于在线段(例如,线段128)的第一方向上的第一块(例如,块p 130)和在线段(例如,线段128)的第二方向上的第二块(例如,块q 132)的量化参数,来确定门限值(例如,beta)。
[0244]
因此,如果ap或aq中的仅一项小于beta,则为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,滤波单元312可以将(1《《bitdepthadjustment)(其是调整值的一个示例)添加到初始裁剪参数(例如,t
c0
)。如果ap和ap两者都小于beta,则为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,滤波单元312可以将(1《《bitdepthadjustment)两次添加到初始裁剪参数(例如,t
c0
)。
[0245]
滤波单元312可以基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。例如,为了确定一个或多个解块控制参数,滤波单元312可以确定控制来自解块滤波的样本的最大变化的裁剪参数。因此,滤波单元312可以进行解块滤波,并且确定样本的解块滤波的结果是否导致样本值的变化大于由裁剪参数所允许的最大变化。然后,滤波单元312可以对样本的值进行裁剪,使得在解块滤波之后样本的幅度变化小于或等于裁剪参数。
[0246]
视频解码器300可以将重构的块存储在dpb 314中。如上文所讨论的,dpb 314可以
向预测处理单元304提供参考信息,比如用于帧内预测的当前图片的样本以及用于后续运动补偿的先前解码的图片。此外,视频解码器300可以从dpb 314输出解码的图片,以在显示设备(比如图1的显示设备118)上随后呈现(例如,输出具有解块滤波的样本的当前块以供显示)。也就是说,可以将视频解码器300视作为输出具有经解块滤波的样本的当前块以供显示。
[0247]
以这种方式,视频解码器300表示视频解码设备的示例,视频解码设备包括被配置为存储视频数据的存储器、以及利用电路来实现并且被配置为执行本公开内容中描述的示例技术的一个或多个处理单元。作为一个示例,视频解码器300(例如,经由滤波单元312)可以确定指示对用于重构视频数据(例如,当前块)的一个或多个参数的一个或多个调整的信息。作为一个示例,对一个或多个参数的一个或多个调整包括比特深度调整(例如,bitdepthadjustment)、用户定义的调整、或者取决于内容的调整。
[0248]
视频解码器300(例如,经由滤波单元312)可以基于所确定的信息来确定一个或多个解块控制参数。一个或多个解块控制参数包括以下各项中的至少一项:用于控制样本幅度的最大变化的裁剪值(例如,tc)、以及用于确定应当以其执行解块滤波的方式的门限参数(例如,β)。作为一个示例,视频解码器300可以确定一个或多个初始解块控制参数(例如,t
c0
),并且基于所确定的一个或多个初始解块控制参数(例如,t
c0
)和所确定的信息(例如,对用于重构视频数据的一个或多个参数的调整),来确定一个或多个解块控制参数。例如,为了确定tc,视频解码器300可以执行下式的运算:tc=t
c0
((a
p
《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。在该示例中,tc是裁剪值并且是一个或多个解块控制参数中的一个解块控制参数,t
c0
是一个或多个初始解块控制参数中的一个解块控制参数(例如,初始裁剪值),并且bitdepthadjustment是对用于重构视频数据的比特深度参数的调整。此外,上文描述a
p
、aq和beta的示例。
[0249]
视频解码器300(例如,经由滤波单元312)可以基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。上文描述基于解块控制参数(例如,tc和β)来执行解块滤波的示例技术。
[0250]
图7是示出用于处理视频数据的示例方法的流程图。当前块可以包括当前cu。虽然是相对于视频译码器(其示例包括视频编码器200和视频解码器300)来描述的,但是应当理解的是,其它设备也可以被配置为执行类似于图7的方法的方法。图7的示例是相对于处理电路来描述的。处理电路的示例包括固定功能或可编程处理电路,比如视频编码器200和/或滤波单元216的处理电路或者视频解码器300和/或滤波单元312的处理电路。
[0251]
存储器(比如存储器106、视频数据存储器230、dpb 218或用于视频编码器200的某种其它存储器、或者存储器120、cpb存储器320或dpb 314或者用于视频解码器300的某种其它存储器),可以存储用于确定用于解块滤波的解块控制参数的参数。
[0252]
如在图7中所示,处理电路可以基于存储的参数和视频数据的当前块的样本的比特深度,来确定一个或多个初始解块控制参数(400)。例如,处理电路可以基于一个或多个量化参数和边界强度值,来确定存储的参数。量化参数和边界强度值可以是关于被存储在存储器中的查找表的索引,并且处理电路可以通过访问在查找表中的由索引标识的条目,来确定存储的参数。查找表的一个示例是在evc草案第8.8.3.6节中描述的表35。
[0253]
一个或多个初始解块控制参数可以是处理电路基于存储的参数和当前块的样本
的比特深度来确定的初始裁剪参数(例如,t
c0
)。例如,初始裁剪参数可以是:t
c0
=t

c0
*(1《《bitdepthadjustment),其中bitdepthadjustment等于或基于当前块的样本的比特深度。比特深度的一个示例是10比特或大于10比特。
[0254]
处理电路可以基于当前块的样本的比特深度,来确定将通过其调整一个或多个初始解块控制参数的调整值(402)。调整值的一个示例是(1《《bitdepthadjustment)。根据本公开内容描述的一个或多个示例,通过基于以比特深度为基础来确定的调整值来调整初始解块控制参数(例如,t
c0
),示例技术可以确保:基于比特深度来正确地缩放解块控制参数,使得与不基于比特深度来调整初始解块控制参数的情况相比,解块控制参数提供较好的解块滤波。
[0255]
处理电路可以基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数(404)。一个或多个解块控制参数可以是控制来自解块滤波的样本的最大变化的裁剪参数(tc)。
[0256]
作为一个示例,处理电路可以确定在一线中的位于用于解块滤波的线段的第一方向上的两个样本之间的第一差值(例如,ap,如上文所描述的),并且确定在所述线中的位于用于解块滤波的线段的第二方向上的两个样本之间的第二差值(例如,aq,如上文所描述的)。为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,处理电路可以被配置为:基于第一差值(例如,ap)小于门限值(例如,beta),将调整值(例如,(1《《bitdepthadjustment))添加到一个或多个初始解块控制参数(例如,t
c0
),并且基于第二差值(例如,aq)小于门限值(例如,beta),将调整值(例如,(1《《bitdepthadjustment))添加到一个或多个初始解块控制参数(例如,t
c0
)。也就是说,为了基于调整值和一个或多个初始解块控制参数来确定一个或多个解块控制参数,处理电路可以被配置为确定:tc=t
c0
((a
p
《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0)。
[0257]
处理电路可以基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波(406)。以其执行解块滤波的示例方式如上文所描述。例如,处理电路可以实现上文所描述的等式3-1、3-2、3-3、7-1、7-2、8-1和/或8-2。
[0258]
对于视频编码器200,处理电路可以被配置为:作为解码环路的一部分,进行解块滤波以生成用于对后续块进行帧间预测的当前块。对于视频解码器300,处理电路可以被配置为输出具有经解块滤波的样本的当前块以供显示。
[0259]
本公开内容的一个或多个示例包括以下技术,其可以与本公开内容中描述的技术中的任何技术或组合进行结合。
[0260]
示例1。一种对视频数据进行译码的方法,方法包括:确定指示对用于重构视频数据的一个或多个参数的一个或多个调整的信息;基于所确定的信息来确定一个或多个解块控制参数;并且基于所确定的一个或多个解块控制参数,对当前块的一个或多个样本进行解块滤波。
[0261]
示例2。根据示例1所述的方法,其中,一个或多个解块控制参数包括以下各项中的至少一项:用于控制样本幅度的最大变化的裁剪值、以及用于确定应当以其执行解块滤波的方式的门限参数。
[0262]
示例3。根据示例1和2中的任何示例所述的方法,还包括:确定一个或多个初始解块控制参数,其中,确定一个或多个解块控制参数包括:基于所确定的一个或多个初始解块
控制参数和所确定的信息,来确定一个或多个解块控制参数。
[0263]
示例4。根据示例1-3中的任何示例所述的方法,其中,基于所确定的一个或多个初始解块控制参数和所确定的信息来确定一个或多个解块控制参数包括:确定tc=t
c0
((a
p
《beta)?(1《《bitdepthadjustment):0) ((aq《beta)?(1《《bitdepthadjustment):0),其中,tc为裁剪值并且是一个或多个解块控制参数中的一个解块控制参数,其中,t
c0
是一个或多个初始解块控制参数中的一个解块控制参数,并且其中,bitdepthadjustment是对比特深度参数的调整。
[0264]
示例5。根据示例1-4中的任何示例所述的方法,其中,对一个或多个参数的一个或多个调整包括:比特深度调整、用户定义的调整、或取决于内容的调整。
[0265]
示例6。根据示例1-5中的任何示例所述的方法,其中,译码方法包括编码方法,并且其中,示例1-5中的任何示例的特征是作为在编码方法中的解码环路的一部分来执行的。
[0266]
示例7。根据示例1-5中的任何示例所述的方法,其中,译码方法包括解码方法。
[0267]
示例8。一种用于对视频数据进行译码的设备,设备包括被配置为存储视频数据的存储器、以及包括固定功能电路或可编程电路中的至少一项的视频译码器,其中,视频译码器被配置为执行示例1-5中的任何示例所述的方法。
[0268]
示例9。根据示例8所述的设备,其中,视频译码器是视频编码器,并且其中,视频编码器被配置为执行示例1-5中的任何示例的特征,作为解码环路的一部分。
[0269]
示例10。根据示例8所述的设备,其中,视频译码器是视频解码器。
[0270]
示例11。根据示例8-11中的任何示例所述的设备,还包括以下各项中的一项或多项:被配置为显示解码的视频数据的显示器、照相机、计算机、移动设备、广播接收机设备或机顶盒。
[0271]
示例12。一种具有存储在其上的指令的计算机可读存储介质,当指令被执行时,使得一个或多个处理器执行示例1-7中的任何示例所述的方法。
[0272]
示例13。一种用于对视频数据进行译码的设备,设备包括用于执行示例1-7中的任何示例所述的方法的单元。
[0273]
要认识到,根据示例,本文所描述的技术中的任何技术的某些动作或事件可以以不同的顺序执行、可以进行添加、合并或者完全省略(例如,并非所有描述的动作或事件对于所述技术的实践都是必需的)。此外,在某些示例中,可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行动作或事件。
[0274]
在一个或多个示例中,所描述的功能可以利用硬件、软件、固件或者其任意组合来实现。当利用软件实现时,所述功能可以作为一个或多个指令或代码存储在计算机可读介质上,或者通过计算机可读介质进行传输,并且由基于硬件的处理单元来执行。计算机可读介质可以包括计算机可读存储介质(其对应于比如数据存储介质之类的有形介质)或通信介质(其包括促进例如根据通信协议将计算机程序从一个地方传送到另一地方的任何介质)。以这种方式,计算机可读介质通常可以对应于:(1)非临时性的有形计算机可读存储介质;或者(2)比如信号或载波波形之类的通信介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以取回用于实现本公开内容中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0275]
通过示例而非限制的方式,这样的计算机可读存储介质可以包括ram、rom、
eeprom、cd-rom或者其它光盘存储器、磁盘存储器或其它磁存储设备、闪存或者可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机存取的任何其它介质。此外,任何连接被适当地称作计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字用户线路(dsl)或者比如红外线、无线电和微波之类的无线技术从网站、服务器或其它远程源传输的,那么所述同轴电缆、光纤光缆、双绞线、dsl或者比如红外线、无线电和微波之类的无线技术被包括在介质的定义中。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波波形、信号或者其它临时介质,而是替代地针对非临时的有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘cd、激光光盘、光盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在计算机可读介质的范围内。
[0276]
指令可以由一个或多个处理器来执行,比如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或者其它等同的集成或分立逻辑电路。相应地,如本文所使用的,如本文中所使用的术语“处理器”和“处理电路”可以指代前述的结构中的任何结构或者适合于实现本文所描述的技术的任何其它结构。此外,在一些方面,本文所描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或者并入到组合的编解码器中。此外,所述技术可以在一个或多个电路或逻辑元件中完全实现。
[0277]
本公开内容的技术可以在多种多样的设备或装置实现,包括无线手持装置、集成电路(ic)或者一组ic(例如,芯片集)。在本公开内容中描述各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定要求通过不同的硬件单元来实现。相反,如上文所描述的,各个单元可以被组合在编解码器硬件单元中,或者通过协作的硬件单元的集合(包括如上文所描述的一个或多个处理器)结合适当的软件和/或固件来提供。
[0278]
已经描述各个示例。这些示例和其它示例在所附权利要求的范围内。
再多了解一些

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

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

相关文献