掌桥专利:专业的专利平台
掌桥专利
首页

视频编解码中用于并行处理的处理区域的推导

文献发布时间:2023-06-19 12:24:27


视频编解码中用于并行处理的处理区域的推导

本申请要求于2019年12月19日提交的美国申请第16/721,204号和于2018年12月21日提交的美国临时申请第62/784,131号的权益,以上申请的每一篇都通过引用以其全文结合于此。

技术领域

本公开涉及视频编码和视频解码。

背景技术

数字视频能力可以被结合到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、膝上型或桌上型计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电电话(所谓的“智能电话”)、视频电话会议设备、视频流设备等。数字视频设备实施视频编解码技术,诸如在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分定义的标准、高级视频编解码(AVC)、ITU-T H.265/高效率视频编解码(HEVC)以及此类标准的扩展中描述的那些技术。通过实施此类视频编码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。

视频编解码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或移除视频序列中固有的冗余。对于基于块的视频编解码,视频切片(即,视频图片或视频图片的一部分)可以被分割成视频块,这些视频块也可以被称为编解码树单元(CTU)、编解码单元(CU)和/或编解码节点。图片的帧内编解码的(I)切片中的视频块使用与同一图片中相邻块中的参考样本相对的空间预测来编码。图片的帧间编解码的(P或B)切片中的视频块可以使用与同一图片中的相邻块中参考样本相对的空间预测,或与其他参考图片中的参考样本相对的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。

发明内容

大体上,本公开描述了用于以潜在更灵活的方式对于视频数据的图片选择诸如合并估算区域的处理区域的技术。本公开的技术可以使得不同的相邻分割块能够被组合在一起以形成处理区域,并且也可以放松对处理区域尺寸的限制。例如,图片中的处理区域可能不必每个都是如视频编码解码器的编解码参数所定义的相同区域尺寸。相反,处理区域的平均尺寸可以被约束为大于或等于由编解码参数定义的区域尺寸。相应地,本文描述的技术能通过提高视频编解码器并行地编码或解码块的能力来实现更高的编解码性能。

在一个示例中,一种用于编解码视频数据的方法包括确定视频数据的当前图片到多个分割块的分割。该方法还包括确定当前图片中的单元中的具有尺寸的多个处理区域,其中,该单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中,确定单元中的多个处理区域包括定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域。该方法还包括独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。

在另一示例中,一种视频编解码设备包括存储视频数据的存储器。该设备还包括被实施在电路中的一个或多个处理器,并且该一个或多个处理器被配置为:确定视频数据的当前图片到多个分割块的分割;确定当前图片中的单元中的具有尺寸的多个处理区域,其中,单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中,确定单元中的多个处理区域包括:定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域;以及独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。

在另一示例中,一种用于编解码视频数据的设备包括用于确定视频数据的当前图片到多个分割块的分割的部件。该设备还包括:用于确定当前图片中的单元中的具有尺寸的多个处理区域的部件,其中,单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中,用于确定单元中的多个处理区域的部件包括用于定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的的处理区域的部件。该设备还包括用于独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)的部件。

在另一示例中,一种具有存储在其上的指令的计算机可读存储介质,当指令被执行时,使被配置为编解码视频数据的一个或多个处理器以:确定视频数据的当前图片到多个分割块的分割;确定当前图片中的单元中的具有尺寸的多个处理区域,其中,单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中,确定单元中的多个处理区域包括:定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域;以及独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。

一个或多个示例的细节将在附图和以下描述中进行阐述。从说明书和附图中,以及权利要求书中,其他特征、目标和优点将变得清楚明白。

附图说明

图1是图示了可以执行本公开的技术的示例视频编码和解码系统的框图。

图2A和图2B是图示了示例四叉树二叉树(QTBT)结构和对应的编解码树单元(CTU)的概念图。

图3是图示了可以执行本公开的技术的示例视频编码器的框图。

图4是图示了可以执行本公开的技术的示例视频解码器的框图。

图5A-5B是图示了确定用于从四叉树分割生成的分割块的处理区域的概念图。

图6A-6B是图示了确定用于从水平三叉树分割生成的分割块的处理区域的概念图。

图7A-7B是图示了确定用于从垂直三叉树分割生成的分割块的处理区域的概念图。

图8是图示了用于编码当前块的示例方法的流程图。

图9是图示了用于解码视频数据的当前块的示例方法的流程图。

图10是图示了用于在视频编解码时推导用于并行处理的处理区域的示例方法的流程图。

具体实施方式

本公开的各方面描述了用于以增加可以并行地处理的视频数据的图片中的块的数量的方式对于视频数据的图片选择处理区域的技术。在视频编解码过程期间,视频数据的图片可以被分割成分割块,其中每个分割块是图片的一部分。当分割块作为视频编解码过程的一部分来处理时,相邻分割块之间的相关性可能降低视频编解码过程的性能。本公开的技术可以允许不同的分割块被组合以形成处理区域,以解决相邻块之间的此种相关性,从而提高视频编解码过程的性能,并且本公开的技术还可以以放松对处理区域尺寸的一个或多个限制的方式将约束应用于处理区域。

视频编解码器推导用于块的候选列表(诸如合并候选列表)的方式可以潜在地引入视频数据图片中的相邻块之间的相关性,因为相邻块可能是例如用于另一相邻块的合并候选项。由于相邻块之间的此种相关性,视频编解码器不一定能并行处理相邻块,从而在视频编解码过程中引入了潜在的瓶颈。例如,在运动数据可用于相邻块之前,视频编解码器可能无法确定对于块,相邻块是否是合并候选项,使得对于块执行运动估算可能取决于确定用于相邻块的运动数据。

视频编解码器可以使用合并估算区域(MER)的概念,以减少小块之间的局部相关性,并且因此对于那些块实现并行合并候选项推导。MER可以通过检查候选块是否与当前块处于同一MER中,来指示其中可以对于区域内的块独立地推导合并候选列表的区域。如果候选块与当前块是处于同一MER中,则该候选块未被包括在用于当前块的合并候选列表中,使得在构建用于当前块的合并候选列表时,用于候选块的运动数据不需要可用。以这种方式,可以并行地编解码同一MER内的块。

MER机制的一个示例使用正方形MER网格(例如,4x4、8x8、16x16、32x32和64x64的网格),并且可能要求每个MER都覆盖与MER重叠的所有编解码单元。然而,此MER机制对于实际的编码器/解码器设计来说可能还不够灵活。

MER机制的另一示例使用基于区域的MER,可能比固定的正方形MER网格更灵活。在基于区域的MER中,可以将MER区域定义为一个特定尺寸N,并且一旦编解码树单元被分割成N的尺寸,尺寸为N的对应的分割块就被认为是MER,从而允许并行处理分割块内的所有编解码单元。然而,基于区域的MER可能不够灵活,不能适用于分割区可以被分割的不同方式,诸如经由四叉树分割、二叉树分割、三叉树分割等。

特别地,基于区域的MER的边界可能不总是能匹配分割块的分割边界。例如,如果基于区域的MER的尺寸被指定为32,并且如果尺寸为64的分割区经由四叉树分割被分割成4个子分割区,每个子分割区尺寸为16,则可能没有分割块可以精确匹配具有尺寸为32的MER块。因此,可能必须正确选择MER的区域,以允许并行处理MER的内部,并尽可能减少率失真性能的损失。

本公开的各方面描述了以潜在地比上文讨论的办法更灵活的方式来确定视频数据的图片的处理区域(诸如MER)的尺寸和形状的技术,从而通过增加可以被执行的分割块的并行处理量来实现在视频编解码时更大的性能增益。在一些示例中,该技术包括如果处理区域不完全匹配单个分割块的边界,则将几个相邻分割块合并成处理区域,并且对应的规则可以应用于处理区域内的所有分割块,以实现处理区域内的分割块的并行处理。

进一步地,在一些示例中,该技术还包括处理区域的尺寸不同于由参数N定义的区域尺寸。替代的,单元内的处理区域可以被约束为具有大于或等于参数N的平均区域尺寸,使得只要平均区域尺寸大于或等于参数N,各个处理区域就可以具有大于或小于参数N的尺寸,从而确保并行处理能力不会由于此类非标准尺寸的区域而降低。

根据本公开的各方面,视频编解码器可以确定视频数据的当前图片到多个分割块的分割。视频编解码器可以确定当前图片中的单元中的具有尺寸的多个处理区域,其中,单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中,确定单元中的多个处理区域包括定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域。视频编解码器可以独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。

图1是图示了可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术大体上涉及编解码(编码和/或解码)视频数据。一般地,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始未编码的视频、编码的视频、解码的(例如,重构的)视频和视频元数据,诸如信令数据。

如图1所示,在该示例中,系统100包括源设备102,该源设备102提供待目标设备116解码和显示的编码的视频数据。特别地,源设备102经由计算机可读介质110向目标设备116提供视频数据。源设备102和目标设备116可以包括大范围的设备中的任何一种,包括:桌上型计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如智能手机的电话手机、电视、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备102和目标设备116可以被配备用于无线通信,并且因此可以被称为无线通信设备。

在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置为应用用于在视频编解码时推导用于并行处理的处理区域的技术。因此,源设备102表示视频编码设备的示例,而目标设备116表示视频解码设备的示例。在其他示例中,源设备和目标设备可以包括其他组件或布置。例如,源设备102可以从诸如外部照相机的外部视频源接收视频数据。类似地,目标设备116可以与外部显示设备对接,而非包括集成的显示设备。

如图1所示的系统100仅仅是一个示例。一般地,任何数字视频编码和/或解码设备都可以执行用于在视频编解码时推导用于并行处理的处理区域的技术。源设备102和目标设备116仅仅是此类编解码设备的示例,其中源设备102生成编解码的视频数据用于向目标设备116的发送。本公开将“编解码”设备称为执行数据的编解码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300表示编解码设备的示例,具体地,分别为视频编码器和视频解码器。在一些示例中,源设备102和目标设备116可以按基本上对称的方式操作,使得源设备102和目标设备116中的每一个都包括视频编码和解码组件。因此,系统100可以例如对于视频流、视频回放、视频广播或视频电话,支持源设备102与目标设备116之间的单向或双向视频发送。

一般地,视频源104表示视频数据源(即,原始未编码的视频数据),并向视频编码器200提供视频数据的连续系列的图片(也被称为“帧”),该视频编码器200编码用于图片的数据。源设备102的视频源104可以包括视频捕获设备(诸如摄像机)、包含先前捕获的原始视频的视频档案和/或从视频内容提供商接收视频的视频馈送接口。作为进一步可选的,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档的视频和计算机生成的视频的组合。在每种情况下,视频编码器200编码捕获的、预捕获的或计算机生成的视频数据。视频编码器200可以将图片从接收的顺序(有时被称为“显示顺序”)重新布置成用于编解码的编解码顺序。视频编码器200可以生成包括编码的视频数据的比特流(bitstream)。源设备102然后可以经由输出接口108向计算机可读介质110上输出编码的视频数据,用于由例如目标设备116的输入接口122接收和/或检索。

源设备102的存储器106和目标设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104的原始视频和来自视频解码器300的原始解码的视频数据。附加地或替代地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300执行的软件指令。尽管在该示例中,存储器106和存储器120被示出为与视频编码器200和视频解码器300分离,但是应当理解的是,视频编码器200和视频解码器300也可以包括用于功能上类似或等同目的的内部存储器。此外,存储器106、120可以存储编码的视频数据,例如从视频编码器200输出并输入到视频解码器300的数据。在一些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如以存储原始解码的和/或编码的视频数据。

计算机可读介质110可以表示能将编码的视频数据从源设备102传输到目标设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质,以使得源设备102能够例如经由射频网络或基于计算机的网络实时地向目标设备116发送编码的视频数据。输出接口108可以根据诸如无线通信协议的通信标准,来调制包括编码的视频数据的发送信号,并且输入接口122可以解调所接收的发送信号。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络(诸如局域网、广域网或全球网络(诸如因特网))的一部分。通信介质可以包括路由器、交换机、基站或有助于促进从源设备102到目标设备116的通信的任何其他设备。

在一些示例中,源设备102可以从输出接口108向存储设备112输出编码的数据。同样地,目标设备116可以经由输出接口122访问来自存储设备112的编码的数据。存储设备112可以包括多种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器,或者用于存储编码的视频数据的任何其他合适的数字存储介质。

在一些示例中,源设备102可以向文件服务器114或可以存储由源设备102生成的编码的视频的另一中间存储设备输出编码的视频数据。目标设备116可以经由流式或下载的方式从文件服务器114访问所存储的视频数据。文件服务器114可以是能够存储编码的视频数据并向目标设备116发送该编码的视频数据的任何类型的服务器设备。文件服务器114可以表示网页服务器(例如,用于网站的)、文件传输协议(FTP)服务器、内容传递网络设备或网络附加存储(NAS)设备。目标设备116可以通过任何标准数据连接,包括互联网连接,从文件服务器114访问编码的视频数据。这可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,数字订户线(DSL)、电缆调制解调器等)或者二者的组合,其适于访问存储在文件服务器114上的编码的视频数据。文件服务器114和输入接口122可以被配置为根据流式发送协议、下载发送协议或其组合来操作。

输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线网络组件(例如,以太网卡)、根据多种IEEE 802.11标准中的任何一种操作的无线通信组件或其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(诸如4G、4G-LTE(长期演进)、先进LTE、5G等)来传输数据(诸如编码的视频数据)。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以被配置为根据其他无线标准(诸如IEEE 802.11规范、IEEE 802.15规范(例如,ZigBee

本公开的技术可以应用于视频编解码,以支持多种多媒体应用中的任何一种,诸如空中电视广播、有线电视发送、卫星电视发送、互联网流式视频发送(诸如通过HTTP的动态自适应流(DASH)、被编码到数据存储介质上的数字视频)、存储在数据存储介质上的数字视频的解码或其他应用。

目标设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的信令信息,诸如具有描述视频块或其他编解码的单元(例如,切片、图片、图片组、序列或类似单元)的特性和/或处理的值的语法元素,该信令信息也被视频解码器300使用。显示设备118向用户显示解码的视频数据的解码的图片。显示设备118可以表示多种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一种类型的显示设备。

虽然图1中未示出,但是在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,以处理包括公共数据流中的音频和视频两种的多路复用的流。如果适用,MUX-DEMUX单元可以符合ITU H.223多路复用器协议,或其他协议,诸如用户数据报协议(UDP)。

视频编码器200和视频解码器300各自可以被实施为多种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任意组合。当这些技术部分地在软件中实施时,设备可以将用于软件的指令存储在合适的非暂时性计算机可读介质中,并且在硬件中使用一个或多个处理器来执行这些指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,其中任一个可以被集成为相应设备中的组合的编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,诸如蜂窝电话、机顶盒、广播接收器设备、移动设备等。

视频编码器200和视频解码器300可以根据视频编解码标准来操作,诸如ITU-TH.265,也被称为高效率视频编解码(HEVC)或其扩展,诸如多视图和/或可缩放视频编解码扩展。替代地,视频编码器200和视频解码器300可以根据其他专有或行业标准来操作,诸如联合勘探测试模型(JEM)或ITU-T H.266,也被称为通用视频编解码(VVC)。Bross等人描述了VVC标准的最新草案。2019年7月3日至12日在瑞典哥德堡由JVET-O2001-vE在ITU-T SG16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家小组(JVET)第15次会议上确定的“Versatile Video Coding(Draft 6)”(在下文中简称“VVC草案6”)。然而,本公开的技术不限于任何特定的编解码标准。

一般地,视频编码器200和视频解码器300可以执行图片的基于块的编解码。术语“块”通常指包括待处理的数据(例如,编码的、解码的或用在编码过程和/或解码过程中的其他形式的数据)的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。一般地,视频编码器200和视频解码器300可以编解码以YUV(例如,Y、Cb、Cr)格式表示的视频数据。也就是说,视频编码器200和视频解码器300可以编解码亮度和色度分量,而非对用于图片的样本的红、绿和蓝(RGB)数据进行编解码,其中色度分量可以包括红色调和蓝色调色度分量两种。在一些示例中,视频编码器200在编码之前将所接收的RGB格式化数据转换成YUV表示,并且视频解码器300将YUV表示转换成RGB格式。替代地,预处理和后处理单元(未示出)可以执行这些转换。

本公开大体上可以涉及图片的编解码(例如,编码和解码),并且可以包括编码或解码图片的数据的处理。同样地,本公开可以涉及图片的块的编解码,并且可以包括编码或解码用于块的数据的处理,例如预测和/或残余编解码。编码的视频比特流通常包括表示编解码决策(例如,编解码模式)和图片到块的分割的语法元素的一系列值。因此,提到编解码图片或块通常应理解为编解码形成图片或块的语法元素的值。

HEVC定义了各种块,包括编解码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频编解码器(诸如视频编码器200)根据四叉树结构来将编解码树单元(CTU)分割成CU。也就是说,视频编解码器将CTU和CU分割成四个相等的、不重叠的正方形,并且四叉树的每个节点有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且此叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频编解码器还可以分割PU和TU。例如,在HEVC中,残余四叉树(RQT)表示TU的分割。在HEVC中,PU表示帧间预测数据,而TU表示残余数据。帧内预测的CU包括帧内预测信息,诸如帧内模式指示。

作为另一示例,视频编码器200和视频解码器300可以被配置为根据JEM或VVC来操作。根据JEM或VVC,视频编解码器(诸如视频编码器200)将图片分割成多个编解码树单元(CTU)。视频编码器200可以根据树结构,诸如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构来分割CTU。QTBT结构移除了多种分割区类型的概念,诸如HEVC的CU、PU以及TU之间的分割。QTBT结构包含两层:根据四叉树分割来分割的第一层和根据二叉树分割来分割的第二层。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编解码单元(CU)。

在MTT分割结构中,块可以使用四叉树(QT)分割、二叉树(BT)分割和一种或多种类型的三叉树(triple tree,TT)(也被叫做三叉树(ternary tree,TT))分割来分割。三叉树分割是将块分割成三个子块的分割。在一些示例中,三叉树分割将块分成三个子块,而不通过中心来分原始块。MTT中(例如,QT、BT和TT)的分割类型可以是对称的或者不对称的。

在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT或MTT结构来表示亮度分量和色度分量中的每一个分量,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT或MTT结构,诸如一个QTBT/MTT结构用于亮度分量,而另一QTBT/MTT结构用于两个色度分量(或者两个QTBT/MTT结构用于相应的色度分量)。

视频编码器200和视频解码器300可以被配置为使用每HEVC四叉树分割、QTBT分割、或MTT分割或其他分割结构。出于说明的目的,参考QTBT分割来呈现本公开的技术的描述。然而,应当理解的是,本公开的技术也可以应用于被配置以使用四叉树分割或其他类型的分割的视频编解码器。

在图片中,可以以各种方式对这些块(例如,CTU或CU)进行分组。作为一个示例,砖(brick)可以指图片中特定瓦片(tile)内的CTU行的矩形区域。瓦片可以是图片中特定瓦片列和特定瓦片行内的CTU的矩形区域。瓦片列指具有等于图片高度的高度和由语法元素(例如,如在图片参数集中的语法元素)指定的宽度的矩形区域。瓦片行指具有由语法元素(例如,如在图片参数集中的语法元素)指定的高度和等于图片宽度的宽度的矩形区域。

在一些示例中,瓦片可以被分割成多个砖,每个砖可以包括瓦片内的一个或多个CTU行。没有被分割成多个砖的瓦片也可以被称为砖。然而,作为瓦片的真子集的砖不能称为瓦片。

图片中的砖也可以按切片布置。切片可以是图片的整数个砖,其可以排他地被包含在单个网络抽象层(NAL)单元中。在一些示例中,切片包括若干完整的瓦片或仅包括一个瓦片的完整的砖的连续序列。

本发明可以互换地使用“NxN”和“N乘N”来指代块(比如CU或其他视频块)在垂直和水平维度方面的样本维度,例如,16x16样本或16乘16样本。一般地,16x16 CU在垂直方向上(y=16)有16个样本,并且在水平方向上(x=16)有16个样本。类似地,NxN CU通常在垂直方向上具有N个样本,并且在水平方向上具有N个样本,其中N表示非负整数值。CU中的样本可以按行和列布置。此外,CU不一定需要在水平方向和垂直方向具有相同数量的样本。例如,CU可以包括NxM个样本,其中M不一定等于N。

视频编码器200编码代表预测和/或残余信息以及其他信息的用于CU的视频数据。预测信息指示如何预测CU,以便形成用于CU的预测块。残余信息通常表示编码之前的CU样本与预测块之间的逐样本差异。

为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测来形成用于CU的预测块。帧间预测通常指从先前编解码的图片的数据中预测CU,而帧内预测通常指从相同图片的先前编解码的数据中预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以标识与CU紧密匹配的参考块,例如,依据CU与参考块之间的差异。视频编码器200可以使用绝对差和(SAD)、平方差和(SSD)、平均绝对差(MAD)、均方差(MSD)或其它此类差计算来计算差度量,以确定参考块是否与当前CU紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。

JEM和VVC的一些示例也提供仿射运动补偿模式,该模式可以被认为是帧间预测模式。在仿射运动补偿模式下,视频编码器200可以确定表示非平移的运动的两个或更多个运动矢量,诸如放大或缩小、旋转、透视运动或其他不规则运动类型。

为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的一些示例提供了六十七种帧内预测模式,包括各种方向的模式,以及平面模式和DC模式。一般地,视频编码器200选择描述与当前块(例如,CU的块)相邻的样本的帧内预测模式,根据该模式来预测当前块的样本。假设视频编码器200和视频解码器300以光栅扫描顺序(从左侧到右侧、从顶部到底部)来编解码CTU和CU,此类样本通常可以在与当前块相同的图片中的当前块的上方、当前块的上方到左侧或当前块的左侧。

视频编码器200编码表示用于当前块的预测模式的数据。例如,对于帧间预测模式,视频编码器200可以编码表示使用了各种可用帧间预测模式中的哪一种的数据,以及用于相对应的模式的运动信息。例如,对于单向或双向帧间预测,视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来编码运动矢量。视频编码器200可以使用类似的模式来编码用于仿射运动补偿模式的运动矢量。

在预测之后,诸如块的帧内预测或帧间预测之后,视频编码器200可以计算用于块的残余数据。对于使用对应的预测模式而形成的块,残余数据(诸如残余块)表示块与预测块之间的逐样本差异。视频编码器200可以对残余块应用一个或多个变换,以在变换域而不是样本域中产生变换的数据。例如,视频编码器200可以对残余视频数据应用离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换。附加地,视频编码器200可以在第一变换之后应用二次变换,诸如模式相关的不可分离二次变换(MDNSST)、信号相关的变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。

如上所述,在产生变换系数的任何变换之后,视频编码器200可以执行变换系数的量化。量化通常指其中量化变换系数以尽可能减少用来表示变换系数的数据量,从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可以减少与变换系数的一些或所有相关联的位深度。例如,视频编码器200可以在量化期间将n比特值向下舍入成m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对待量化的值执行按位右移。

量化之后,视频编码器200可以扫描变换系数,从而从包括量化的变换系数的二维矩阵中产生一维向量。扫描可以被设计成将较高能量(并且因此较低频率的)的变换系数放置在向量的前面,并且将较低能量(并且因此较高频率的)的变换系数放置在向量的后面。在一些示例中,视频编码器200可以利用预定扫描顺序来扫描量化的变换系数,以产生串行化的向量,然后接着,对向量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维向量之后,视频编码器200可以例如根据上下文自适应二进制算术编解码(CABAC)对一维向量进行熵编码。视频编码器200也可以对描述了与编码的视频数据相关联的元数据的用于语法元素的值进行熵编码,以供视频解码器300在解码视频数据时使用。

为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给待发送的符号。上下文可以指例如符号的相邻值是否为零值。概率确定可以基于被分配给符号的上下文。

视频编码器200还可以给视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,例如在图片标头、块标头、切片标头或其他语法数据中,诸如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300可以类似地解码此语法数据,以确定如何解码对应的视频数据。

以这种方式,视频编码器200可以生成比特流,该比特流包括编码的视频数据,例如描述了图片到块(例如,CU)的分割的语法元素以及用于块的预测和/或残余信息。最终,视频解码器300可以接收比特流并解码编码的视频数据。

一般地,视频解码器300执行与由视频编码器200执行的过程相反的过程,以解码比特流的编码的视频数据。例如,视频解码器300可以使用CABAC以与视频编码器200的CABAC编码过程基本相似但相反的方式解码比特流的用于语法元素的值。语法元素可以将图片的分割信息定义为CTU,并根据对应的分割结构(诸如QTBT结构)对每个CTU进行分割,以定义CTU的CU。语法元素可以进一步定义用于视频数据的块(例如,CU)的预测和残余信息。

残余信息可以由例如量化的变换系数来表示。视频解码器300可以对块的量化的变换系数进行逆量化和逆变换,以重新产生用于块的残余块。视频解码器300使用发信号通知的预测模式(帧内预测或帧间预测)和相关预测信息(例如,用于帧间预测的运动信息),以形成用于块的预测块。视频解码器300然后可以(在逐样本的基础上)组合预测块和残余块,以重新产生原始块。视频解码器300可以执行附加的处理,诸如执行去块过程以减少沿块的边界的视觉伪像。

如上文所提及的,视频编解码器(例如,视频编码器200或视频解码器300)可以应用帧间预测来生成用于当前图片的视频块的预测块。例如,视频编解码器可以应用帧间预测来生成用于CU的预测块的预测块。如果视频编解码器应用帧间预测来生成预测块,则视频编解码器基于一个或多个参考图片的解码的样本来生成预测块。典型地,参考图片是除当前图片以外的图片。在一些视频编解码规范中,视频编解码器也可以将当前图片本身视为参考图片。视频编解码器可以确定一个或多个参考图片列表。参考图片列表的每一个都包括零个或多个参考图片。参考图片列表中的一个可以被称为参考图片列表0(RefPicList0),而另一参考图片列表可以被称为参考图片列表1(RefPicList1)。

视频编解码器可以应用单向帧间预测或双向帧间预测来生成预测块。当视频编解码器应用单向帧间预测来生成用于视频块的预测块时,视频编解码器基于单个参考图片的样本来确定用于视频块的单个参考块。参考块可以是类似于预测块的样本块。此外,当视频编解码器应用单向帧间预测时,视频编解码器可以将预测块设置为等于参考块。当视频编解码器应用双向帧间预测来生成用于视频块的预测块时,视频编解码器确定用于视频块的两个参考块。在一些示例中,这两个参考块位于不同参考图片列表中的参考图片中。附加地,当视频编解码器应用双向帧间预测时,视频编解码器可以基于两个参考块确定预测块。例如,视频编解码器可以确定预测块,使得预测块的每个样本是两个参考块的对应的样本的加权平均值。参考列表指示符可以用来指示哪个参考图片列表包括用于确定参考块的参考图片。

如上文所提及的,视频编解码器可以基于参考图片的样本来确定参考块。在一些示例中,视频编解码器可以确定预测块,使得参考块的每个样本等于参考图片的样本。在一些示例中,作为确定参考块的一部分,视频编解码器可以内插来自参考图片样本的参考块样本。例如,视频编解码器可以确定预测块的样本是参考图片的两个或更多个样本的加权平均值。

在一些示例中,当视频编码器200对于当前图片的当前块执行单向帧间预测时,视频编码器200标识参考图片列表中的一个列表中的一个或多个参考图片内的参考块。例如,视频编码器200可以在参考图片列表中的一个或多个参考图片内搜索参考块。在一些示例中,视频编码器200使用均方误差或其他度量来确定参考块与当前块之间的相似性。此外,视频编码器200可以确定用于当前块的运动参数。用于当前块的运动参数可以包括运动矢量和参考索引。运动矢量可以指示当前图片内的当前块的位置与参考图片内的参考块的位置之间的空间位移。参考索引指示包含参考图片列表的参考帧在参考图片列表内的位置。用于当前块的预测块可以等于参考块。

当视频编码器200对于当前图片的当前块执行双向帧间预测时,视频编码器200可以标识第一参考图片列表(“列表0”)中的参考图片内的第一参考块,并且可以标识第二参考图片列表(“列表1”)中的参考图片内的第二参考块。例如,视频编码器200可以分别在第一和第二参考图片列表中的参考图片内搜索第一和第二参考块。视频编码器200可以至少部分地基于第一和第二参考块来生成用于当前块的预测块。另外,视频编码器200可以生成第一运动矢量,该第一运动矢量指示当前块与第一参考块之间的空间位移。视频编码器200也可以生成第一参考索引,该第一索引标识包含第一参考块的参考图片在第一参考图片列表内的位置。此外,视频编码器200可以生成第二运动矢量,该第二运动矢量指示当前块与第二参考块之间的空间位移。视频编码器200也可以生成第二参考索引,该第二索引标识包含第二参考块的参考图片在第二参考图片列表内的位置。

当视频编码器200对当前块执行单向帧间预测时,视频解码器300可以使用当前块的运动参数来标识当前块的参考块。视频解码器300然后可以基于参考块来生成当前块的预测块。当视频编码器200执行双向帧间预测以确定用于当前块的预测块时,视频解码器300可以使用当前块的运动参数来确定两个参考块。视频解码器300可以基于参考块的两个参考样本来生成当前块的预测块。

视频编码器200可以以各种方式发信号通知块的运动参数。此种运动参数可以包括运动矢量、参考索引、参考图片列表指示符和/或与运动相关的其他数据。在一些示例中,视频编码器200和视频解码器300可以使用运动预测来减少用于发信号通知运动参数的数据量。运动预测可以包括基于一个或多个其他块的运动参数来确定块(例如,PU、CU等)的运动参数。有各种类型的运动预测。例如,合并模式和高级运动矢量预测(AMVP)模式是两种类型的运动预测。

在合并模式下,视频编码器200生成候选列表。候选列表包括指示一个或多个源块的运动参数的候选集。源块可以在空间上或时间上与当前块相邻。此外,在合并模式下,视频编码器200可以从候选列表中选择候选项,并且可以将由所选择的候选项指示的运动参数用作当前块的运动参数。视频编码器200可以发信号通知所选择的候选项在候选列表中的位置。视频解码器300可以基于从比特流中获得的信息来确定候选列表中的索引。另外,视频解码器300可以生成相同的候选列表,并且可以基于索引来确定所选择的候选项。视频解码器300然后可以使用所选择的候选的运动参数来生成用于当前块的预测块。

跳过(skip)模式类似于合并模式。在跳过模式下,视频编码器200和视频解码器300以与视频编码器200和视频解码器300在合并模式下使用候选列表相同的方式生成并使用候选列表。然而,当视频编码器200使用跳过模式发信号通知当前块的运动参数时,视频编码器200不发信号通知用于当前块的任何残余数据。相应地,视频解码器300可以基于由候选列表中所选择的候选项的运动参数指示的一个或多个参考块来确定用于当前块的预测块。视频解码器300然后可以重构当前块的编解码块中的样本,使得重构的样本等于当前块的预测块中的对应的样本。

AMVP模式类似于合并模式,因为视频编码器200可以生成用于当前块的候选列表,并且可以从候选列表中选择候选项。然而,对于在确定用于当前块的预测块时使用的每个相应的参考块,视频编码器200可以发信号通知用于当前块的相应运动矢量差(MVD)、用于当前块的相应参考索引和指示候选列表中的所选择的候选项的相应候选索引。用于块的MVD可以指示块的运动矢量与所选择的候选项的运动矢量之间的差异。用于当前块的参考索引指示可以从中确定参考块的参考图片。

此外,当使用AMVP模式时,对于在确定用于当前块的预测块时使用的每个相应的参考块,视频解码器300可以确定用于当前块的MVD、用于当前块的参考索引以及候选索引和运动矢量预测(MVP)标志。视频解码器300可以生成相同的候选列表,并且可以在候选列表中基于候选索引来确定所选择的候选项。如前所述,该候选列表可以包括与相同参考索引相关联的相邻块的运动矢量,以及基于时间参考图片中的共址块的相邻块的运动参数来推导的时间运动矢量预测值。视频解码器300可以通过向由所选择的AMVP候选指示的运动向量添加MVD的方式来恢复当前块的运动向量。也就是说,视频解码器300可以基于由所选择的AMVP候选和MVD指示的运动矢量来确定当前块的运动矢量。视频解码器300然后可以使用当前块的一个或多个所恢复的运动矢量来生成用于当前块的预测块。

当视频编解码器(例如,视频编码器200或视频解码器300)生成用于当前块的AMVP候选列表时,视频编解码器可以基于参考块(例如,空间上相邻的块)的运动参数来推导一个或多个AMVP候选项,该参考块包含在空间上与当前PU相邻的位置,并且基于在时间上与当前PU相邻的PU的运动参数来推导一个或多个AMVP候选项。候选列表可以包括与相同参考索引相关联的参考块的运动矢量,以及基于时间参考图片中共址块的相邻块的运动参数(即,运动参数)推导的时间运动矢量预测值。合并候选列表或AMVP候选列表中的候选项基于时间上与当前块相邻的参考块的运动参数。本公开可以使用术语“时间运动矢量预测值”来指代处于与当前块不同的时间实例中并且用于运动矢量预测的块。

在HEVC中,引入合并估算区域(MER)的概念以减少小块之间的局部相关性,从而允许对于这些块的并行合并候选推导。HEVC采用的MER机制使用固定的正方形MER网格。每个MER必须覆盖与MER重叠的所有CU,因此MER机制对于实际的编码器/解码器设计来说不够灵活。

基于区域的MER更灵活,一个特定尺寸的N可以被定义为MER区域,并且一旦编解码树单元被分割为N的尺寸,对应的分割块就被认为是MER,并且允许并行处理分割块内的所有CU。然而,基于区域的MER有一个问题,即分割编解码树单元(CTU)的方式可以是非常灵活的。例如,在通用视频编解码(VVC)中,允许一些不同类型的分割,诸如四叉树分割、二叉树分割和三叉树分割。在四叉树分割中,块被分割成四个子块。在二叉树分割中,块被分割成两个子块。在三叉树分割中,块被分割成三个子块。

基于区域的MER边界可能不总是分割边界。例如,在图8的示例中,MER尺寸被指定为32,但是尺寸为64的分割区经由四叉树分割被分割成尺寸为16的4个子分割区。然后,没有分割块可以与MER块完全匹配。MER区域需要正确地来选择,以允许并行处理MER的内部,并尽可能减少率失真性能的损失。

本公开描述了基于参数N来确定处理区域的技术。在一些示例中,如果处理区域不能精确地适合分割块的边界,则几个相邻的分割块可以被合并成处理区域,并且对应的规则可以应用于该区域内的所有CU,从而允许并行处理。在一个示例中,参数N被定义为被包括在处理区域中的样本的数量。在另一示例中,参数N被定义为被处理区域覆盖的最小CU块尺寸的数量。在该示例中,如果参数N的值为16,并且如果最小CU块尺寸为4x4,则处理区域可以是尺寸为16x16的块。可能存在本公开的技术仍然适用的参数N的可选定义。

用于定义处理区域的过程可以应用于MER、共享候选列表(其中处理区域内的所有CU共享同一合并候选列表),并且可以应用于其他工具,诸如AMVP、仿射模式等。在一个示例中,此种工具是要求基于邻居信息推导候选列表的工具。

基于块分割的条件,最终的处理区域尺寸可以不同于由参数N定义的区域尺寸,并且因此可以是非标准尺寸的处理区域。可以应用于那些非标准尺寸的处理区域以保证并行处理的能力不会由于非标准尺寸的区域而降低的一个示例规则:所有处理区域的平均区域大于或等于N。作为少数示例,具有不小于所定义的区域的平均区域尺寸的单元可以是图片、切片、瓦片、CTU、尺寸为2*N的分割块或其他预定义区域。

在一个示例中,为了在处理区域的尺寸不适合分割的情况下实现该规则,一个处理区域可以被定义为大于由参数N定义的期望区域,并且下一个处理区域被定义为小于期望区域。在此情况下,处理区域的平均尺寸不会减小,并且保持了并行处理能力。怎样定义更大和更小的区域可以取决于分割类型。

本公开的技术的一些示例可以如下。

例如,对于四叉树分割,处理区域尺寸可以被指定为32个样本、64个样本、128个样本、256个样本等。当总分割尺寸为2*N(4个子分割的尺寸全部为N/2)时,处理区域尺寸可以被定义为N。包括或由2个水平相邻子分割区组成的矩形区域可以被视为第一处理区域。作为另一示例,包括或由2个垂直相邻子分割组成的矩形区域可以被视为第一处理区域。第二矩形分割区被视为第二处理区域。对于本段中提及的两个示例的处理区域被示出在图5A和5B。

再如,对于水平三叉树分割,处理区域的尺寸可以被指定为32个样本、64个样本、128个样本、256个样本等。当总分割尺寸为2*N,并且3个子分割的尺寸为N/2、N和N/2时,中心子分割区与左侧子分割区组合以形成第一处理区域,并且右侧子分割区被视为第二处理区域。在该示例中,对应于2*N尺寸的分割块的2个区域被保证具有平均尺寸N。作为另一示例,中心子分割区与右侧子分割区组合以形成第一处理区域,并且左侧子分割区为第二处理区域。在该示例中,对应于2*N尺寸的分割块的两个区域也被保证具有平均尺寸N。对于本段中提及的两个示例的处理区域被示出在图7A和图7B。

再如,使用垂直三叉树分割。处理区域的尺寸可以被指定为32个样品、64个样品、128个样品、256个样品等。当总分割尺寸为2*N,并且3个子分割区尺寸为N/4、N/2和N/4时。中心子分割区与顶部子分割区组合以形成第一处理区域,并且底部子分割区被视为第二处理区域。在该示例中,对应于2*N尺寸的分割块的两个区域被保证具有平均尺寸N。作为另一示例,中心子分割区与底部子分割区组合以形成第一处理区域,并且顶部子分割为第二处理区域。在该示例中,对应于2*N尺寸的分割块的两个区域也被保证具有平均尺寸N。对于该段中提及的两个示例的处理区域被示出在图6A和图6B。

类似的方法可以应用于任何其他分割类型。例如,当尺寸为2*N的分割区被分割成每个尺寸为N/2的四个水平子分割区,或者被分割成每个尺寸为N/2的四个垂直子分割区时,每个尺寸为N的两个处理区域可以各自组合四个子分割区中的两个。替代地,尺寸为3N/2的一个处理区域可以组合三个相邻的子分割区以形成处理区域,而尺寸为N/2的另一处理区域可以包含剩余的子分割区。

可能存在共享候选列表中的候选项是从处理区域的右下角推导的情况。在一个示例中,此候选项可以是时间运动矢量预测值(TMVP)。换句话说,视频编解码器可以基于参考块的运动参数推导时间运动向量预测值,其中参考块在参考图片中并覆盖参考图片内的与处理区域的右下角正下方和右侧的位置并置的位置。然而,处理区域的一些部分可以位于图片边界之外。在这种情况下,右下块(即,与处理区域右下角正下方和右侧的位置并置的参考块)可能不可用。在这种情况下,处理区域的中心可以用来推导候选项。换句话说,视频编解码器可以基于参考块的运动参数来推导时间运动向量预测值,其中参考块在参考图片中并覆盖参考图片内的与处理区域的中心位置并置的位置。然而,用于使用处理区域的中心来推导候选项的技术可能不同于HEVC中的时间运动矢量预测。例如,视频编解码器可能需要检查处理区域的中心位置是否位于图片边界内,并且如果中心位置在图片边界之外,则此候选项(例如,TMVP)不可用。以中心位置为例,并且可以使用处理区域内的任何其他位置代替。在HEVC的情况下,块总是适合图片边界,并且中心块总是位于图片边界内。

根据本公开的技术,诸如图1中示出的视频编码器200或视频解码器300的视频编解码器可以确定视频数据的当前图片到多个分割块的分割。视频编解码器可以确定当前图片中的单元中的具有尺寸的多个处理区域,其中,单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中,确定单元中的多个处理区域包括定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域。视频编解码器可以独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。

本公开可以大体上涉及“发信号通知”特定信息,诸如语法元素。术语“发信号通知”通常可以指用来解码编码的视频数据的用于语法元素和/或其他数据的值的传送。也就是说,视频编码器200可以在比特流中发信号通知用于语法元素的值。一般地,发信号通知指在比特流中生成值。如上所述,源设备102可以基本上实时地或者不实时地向目标设备116传输比特流,诸如当将语法元素存储到存储设备112以供目标设备116稍后检索时可能发生的情况。

图2A和图2B是图示了示例四叉树二叉树(QTBT)结构130和对应的编解码树单元(CTU)132的概念图。实线表示四叉树分割,并且虚线表示二叉树分割。在二叉树的每个分割(即,非叶)节点中,一个标志被发信号通知以指示使用哪种分割类型(即,水平或垂直),其中在该示例中,0指示水平分割,1指示垂直分割。对于四叉树分割,不需要指示分割类型,因为四叉树节点将块水平和垂直分割成4个尺寸相等的子块。相应地,视频编码器200可以编码,并且视频解码器300可以解码用于QTBT结构130的区域树层(即实线)的语法元素(诸如分割信息)和用于QTBT结构130的预测树层(即虚线)的语法元素(例如分割信息)。视频编码器200可以编码视频数据,并且视频解码器300可以解码视频数据,诸如预测和变换数据,用于由QTBT结构130的终端叶节点表示的CU。

一般地,图2B的CTU 132可以与定义与第一和第二层的QTBT结构130的节点对应的块的尺寸的参数相关联。这些参数可以包括CTU尺寸(表示样本中CTU 132的尺寸)、最小四叉树尺寸(MinQTSize,表示最小允许的四叉树叶节点尺寸)、最大二叉树尺寸(MaxBTSize,表示最大允许的二叉树根节点尺寸)、最大二叉树深度(MaxBTDepth,表示最大允许的二叉树深度)和最小二叉树尺寸(MinBTSize,表示最小允许的二叉树叶节点尺寸)。

与CTU对应的QTBT结构的根节点可以在QTBT结构的第一层具有四个子节点,该子节点中的每一个可以根据四叉树分割来分割。也就是说,第一层的节点要么是叶节点(没有子节点),要么有四个子节点。QTBT结构130的示例将这样的节点表示为包括父节点和具有用于分支的实线的子节点。如果第一层的节点不大于最大允许的二叉树根节点尺寸(MaxBTSize),则该节点可以进一步被相应的二叉树分割。可以迭代一个节点的二叉树分割,直到分割得到的节点达到最小允许的二叉树叶节点尺寸(MinBTSize)或最大允许的二叉树深度(MaxBTDepth)。QTBT结构130的示例将这样的节点表示为具有用于分支的虚线。二叉树叶节点被称为编解码单元(CU),其用于预测(例如,帧内图片或帧间图片预测)和变换,而无需任何进一步的分割。如上文所讨论的,CU也可以被称为“视频块”或“块”。

在QTBT分割结构的一个示例中,CTU尺寸被设置为128x128(亮度样本和两个对应的64x64色度样本),MinQTSize被设置为16x16,MaxBTSize被设置为64x64,MinBTSize(对于宽度和高度两者)被设置为4,以及MaxBTDepth被设置为4。首先将四叉树分割应用于CTU,以生成四叉树叶节点。四叉树叶节点可以具有从16x16(即,MinQTSize)到128x128(即,CTU尺寸)的尺寸。如果叶四叉树节点是128x128,则叶四叉树节点不会被二叉树进一步分割,因为其尺寸超过了MaxBTSize(即,在本示例中为64x64)。否则,叶四叉树节点将被二叉树进一步分割。因此,四叉树叶节点也是用于二叉树的根节点,并且二叉树深度为0。当二叉树深度达到MaxBTDepth(在本示例中为4)时,不准许进一步分割。当二叉树节点的宽度等于MinBTSize(在本示例中为4)时,这意味着不准许进一步的水平分割。同样地,高度等于MinBTSize的二叉树节点意味着对于该二叉树节点不准许进一步的垂直分割。如上所述,二叉树的叶节点被称为CU,并根据预测和变换被进一步处理,而无需进一步分割。

图3是图示了可以执行本公开的技术的示例视频编码器200的框图。图3是出于说明的目的而提供的,并且不应当被认为是对本公开中广泛示例和描述的技术的限制。出于说明的目的,本公开在视频编解码标准(诸如HEVC视频编解码标准和正在开发的H.266视频编解码标准)的背景下描述了视频编码器200。然而,本公开的技术不限于这些视频编解码标准,并且通常适用于视频编码和解码。

在图3的示例中,视频编码器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的各单元可以被实施为一个或多个电路或逻辑元件,作为硬件电路的一部分,或作为处理器、ASIC或FPGA的一部分。此外,视频编码器200可以包括附加的或可选的处理器或处理电路来执行这些和其他功能。

视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB218可以用作参考图片存储器,其存储参考视频数据,用于由视频编码器200对后续视频数据的预测。视频数据存储器230和DPB 218可以由多种存储器设备中的任何一种形成,诸如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻RAM(RRAM)或其他类型的存储器设备。视频数据存储器230和DPB 218可以由同一存储设备或不同的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件在芯片上,如所图示的,或者相对于那些组件在芯片外。

在本公开中,提到视频数据存储器230不应被解释为限于视频编码器200内部的存储器,除非具体描述如此,或者限于视频编码器200外部的存储器,除非具体描述如此。相反,提到视频数据存储器230应该理解为存储视频编码器200接收用于编码视频数据(例如,用于要被编码的当前块的视频数据)的参考存储器。图1的存储器106也可以提供来自视频编码器200的各种单元的输出的临时存储。

图示了图3的各种单元,以帮助理解由视频编码器200执行的操作。这些单元可以被实施为固定功能电路、可编程电路或其组合。固定功能电路指提供特定功能性的电路,并被预设在可以执行的操作上。可编程电路指可以编程以执行各种任务并在可以执行的操作中提供灵活功能性的电路。例如,可编程电路可以执行软件或固件,使可编程电路以由软件或固件的指令定义的方式操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,单元中的一个或多个可以是不同的电路块(固定功能的或可编程的),并且在一些示例中,单元中的一个或多个可以是集成电路。

视频编码器200可以包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的指令(例如,目标代码),或者视频编码器200内的另一个存储器(未示出)可以存储此种指令。

视频数据存储器230被配置为存储所接收的视频数据。视频编码器200可以从视频数据存储器230中检索视频数据的图片,并向残余生成单元204和模式选择单元202提供视频数据。视频数据存储器230中的视频数据可以是要被编码的原始视频数据。

模式选择单元202包括运动估算单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加的功能单元,以根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估算单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元或类似单元。

模式选择单元202通常协调多个编码过程,以测试编码参数的组合以及得到的用于此种组合的率失真值。编码参数可以包括将CTU到CU的分割、用于CU的预测模式、用于CU残余数据的变换类型、用于CU残余数据的量化参数等等。模式选择单元202可以最终选择具有比其他测试组合更好的率失真值的编码参数的组合。

视频编码器200可以将从视频数据存储器230中检索的图片分割成一系列的CTU,并将一个或多个CTU封装在切片内。模式选择单元202可以根据树结构(诸如上述HEVC的QTBT结构或四叉树结构)来分割图片的CTU。如上所述,视频编码器200可以根据树结构通过分割CTU来形成一个或多个CU。此CU也可以通常被称为“视频块”或“块”。

一般地,模式选择单元202也控制其组件(例如,运动估算单元222、运动补偿单元224和帧内预测单元226)来生成用于当前块(例如,当前CU,或者在HEVC中,PU和TU的重叠部分)的预测块。对于当前块的帧间预测,运动估算单元222可以执行运动搜索来标识一个或多个参考图片(例如,存储在DPB 218中的一个或多个先前编解码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估算单元222可以例如根据绝对差和(SAD)、平方差和(SSD)、平均绝对差(MAD)、均方差(MSD)和类似的来计算表示潜在参考块对当前块有多相似的值。运动估算单元222通常可以使用当前块与所考虑的参考块之间的逐样本差异来执行这些计算。运动估算单元222可以标识具有从这些计算得到的最低值的参考块,指示最紧密匹配当前块的参考块。

运动估算单元222可以形成一个或多个运动向量(MV),该一个或多个MV定义参考图片中的参考块相对于当前图片中的当前块的位置的位置。运动估算单元222然后可以向运动补偿单元224提供运动矢量。例如,对于单向帧间预测,运动估算单元222可以提供单个运动矢量,而对于双向帧间预测,运动估算单元222可以提供两个运动矢量。运动补偿单元224然后可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动向量来检索参考块的数据。作为另一示例,如果运动向量具有分数采样精度,则运动补偿单元224可以根据一个或多个插值滤波器来内插用于预测块的值。此外,对于双向帧间预测,运动补偿单元224可以检索由相应运动向量标识的用于两个参考块的数据,并例如通过逐样本平均或加权平均来组合所检索的数据。

作为另一示例,对于帧内预测或帧内预测编解码,帧内预测单元226可以从与当前块相邻的样本中生成预测块。例如,对于方向的模式,帧内预测单元226通常可以数学上地组合相邻样本的值,并在跨越当前块的定义方向上填充这些计算出的值,以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以对当前块计算相邻样本的平均值,并生成预测块以包括该得到的用于预测块的每个样本的平均值。

作为确定用于块的运动矢量的一部分,运动估算单元222可以构建用于块的合并候选列表。构建用于块的合并候选列表可以潜在地引入视频数据图片中的相邻块之间的相关性,因为相邻块可能是用于另一相邻块的合并候选项。由于相邻块之间的此种相关性,相邻块的合并候选列表不一定能并行地生成,并且因此可能在视频编解码过程中引入瓶颈。如此,HEVC引入了合并估算区域(MER)的概念以减少小块之间的局部相关性,从而对于那些块实现并行合并候选项推导。

MER可以通过检查候选块是否与当前块处于同一MER中,来指示其中可以对于MER内的块独立地推导合并候选列表的区域。如果候选块与当前块是处于同一MER中,则该候选块未被包括在用于当前块的合并候选列表中,使得在构建用于当前块的合并候选列表时,用于候选块的运动数据不需要可用。通过将图片的块分组成MER,运动估算单元222能独立地确定用于同一MER内的块的合并候选列表,从而允许运动估算单元222并行地或以流水线方式确定用于同一MER内的块的合并候选列表。

本公开的各方面描述了以增加可以由视频编码器200的组件(诸如,运动估算单元222)执行的分割块的并行处理量的方式来确定视频数据的图片中的处理区域(诸如,MER)的尺寸和形状的技术。在一些示例中,这些技术包括如果处理区域不完全匹配单个分割块的边界,则运动估算单元222将几个相邻分割块合并成处理区域(例如,MER),并且将对应的规则应用到处理区域内的每个分割块,从而使得运动估算单元222能够独立地处理处理区域内的每个分割块,诸如独立地确定用于分割块的每一个的运动数据(例如,合并候选列表),而无需同一处理区域内的分区块之间的相关性。

通过使得运动估算单元222能够独立地处理处理区域内的分割块,估算单元222能并行地或以流水线方式处理处理区域内的分割块。例如,运动估算单元222能独立地确定用于同一处理区域内的分割块的运动矢量,因此运动估算单元222能并行地确定用于同一处理区域内的分割块的运动矢量。

根据本公开的各方面,视频编码器200的模式选择单元202可以确定将视频数据的当前图片分割成多个分割块。例如,如上文所讨论的,模式选择单元202可以以若干方式,诸如根据三叉树、四叉树或二叉树中的一种或多种,对于视频数据的当前图片将CTU分割成CU。

运动估算单元222可以以这样的方式来对于视频数据的当前图片中的单元确定处理区域的数量以及此种处理区域的尺寸和形状,即能处理分割CUT和CU的灵活方式,同时优化视频编码器200的编码性能以及编码效率。如此,运动估算单元222可以确定当前图片中的单元中的具有尺寸的多个处理区域,其中该单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N。此种处理区域可以是例如MER。

当前图片中的单元可以是当前图片本身、切片、瓦片、编解码树单元(CTU)或尺寸为2*N的分割块。在一个示例中,参数N可以被定义为被包括在处理区域中的样本的数量,并且用于参数N的示例性值可以是例如32、64、128、256和类似值。

运动估算单元222或视频编码器200的其它组件可以基于视频数据的视频编码解码器或经由任何其它合适的技术来确定参数N的值。例如,运动估算单元222可以基于单元中的分割块的数量、单元中的分割块的尺寸和类似数据以及诸如编码器性能、编解码效率和类似的因素来确定参数N的值。在一个示例中,如果单元是CTU,则CTU的尺寸可以是2*N,因此参数N的值可以是CTU尺寸的一半。在一些示例中,运动估算单元222可以对于不同视频数据、相同视频数据的不同图片、不同视频编码解码器等确定用于参数N的不同值。

只要视频数据的单元内的处理区域的平均区域尺寸大于或等于参数N,在单元内遵循此约束的各个处理区域可以具有彼此不同的尺寸和不同的形状。例如,在当处理区域的尺寸不适合块的分割的情况下,处理区域可以被定义为大于由参数N定义的期望区域尺寸,并且下一个处理区域可以被定义为小于期望区域尺寸。通过将此约束应用于单元中的处理区域,单元中的处理区域的平均尺寸不会增加,并且运动估算单元222能保持其并行处理能力来处理同一处理区域内的块。

在一些示例中,单元内的处理区域可以包括正方形处理区域、非正方形处理区域或者正方形处理区域和非正方形(即矩形)处理区域的组合。进一步地,单元内的处理区域可以具有大于、小于或等于参数N的混合尺寸。通过以这种方式约束单元内的处理区域,运动估算单元222可以确保其独立处理各个处理区域内的分割块的能力,诸如并行地处理同一处理区域中的分割块,不会由于此种非标准尺寸的处理区域而降低。

作为确定单元中的多个处理区域的一部分,运动估算单元222可以基于定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域。如上文所讨论的,运动估算单元222可以至少部分地基于诸如单元中的分割块的因素来确定单元中的处理区域的数量以及单元中的处理区域的尺寸和形状。运动估算单元222因此可以确定单元中的处理区域是否适合分割块的分割边界,并且将两个或更多个相邻分割块合并成处理区域,使得该处理区域适合合并的两个或更多个相邻分割块的边界。例如,处理区域可以是正方形或非正方形的,并且可以是与被合并成处理区域的两个或更多个相邻分割块的总尺寸相同的尺寸和形状,使得多个分割块中的两个或更多个相邻分割块适合处理区域的尺寸。

运动估算单元222可以独立地编码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。独立地编码处理区域内的CU可以包括运动估算单元222,该运动估算单元222能编码处理区域内的各个CU,而不取决于解码同一处理区域中的其他CU的结果,使得运动估算单元222能同时编码相邻的单个CU。这与这样的示例相反,即在这些示例中,在不使用MER的情况下,用于CU的运动参数的编解码不能与相邻CU的运动参数的编解码同时发生,因为编解码用于CU的运动参数取决于编解码用于相邻CU的运动参数的结果。例如,因为同一处理区域内的块不是同一处理区域中的用于其他块的合并候选项,所以运动估算单元222能确定处理区域中的用于CU的运动参数,诸如用于CU的合并候选列表,作为编码用于CU的运动参数的一部分,而无需等待用于相邻CU的运动数据被确定。

以这种方式,运动估算单元222能并行地编码同一处理区域内的CU。例如,运动估算单元222能并行地确定用于同一处理区域内的CU的每一个的运动参数。在一些示例中,运动估算单元222可以使用用于同一处理区域内的所有CU的共享的合并候选列表来并行地确定用于CU的运动参数。通过使用用于同一处理区域内的所有CU的共享的合并候选列表,同一处理区域中的每个CU可以使用同一合并候选列表来用于确定运动参数,而不是确定由同一处理区域中的不同CU使用的不同合并候选列表。因此,使用用于同一处理区域内的所有CU的共享合并候选列表可以减少确定用于同一处理区域中的CU的运动参数所要求的处理,从而提高视频编码器200的编解码效率。同样地,在其他示例中,运动估算单元222可以对于同一处理区域内的CU并行地执行高级运动矢量预测(AMVP)或仿射运动预测,以并行地确定用于同一处理区域内的CU的运动参数。

在一些示例中,处理区域的一部分可以在视频数据图片的图片边界之外。因此,为了确定块是否是合并候选项,运动估算单元222可以确定块是否位于图片的图片边界之外,如果是,则确定该块不可用作合并候选项。

例如,运动估算单元222可以基于与处理区域的右下角处的块并置的参考图片的块来确定时间运动矢量预测(TMVP)候选项。然而,因为处理区域的一部分可以位于图片边界之外,所以存在这样的情况,如果其位于图片边界之外,则处理区域右下角处的块不可用于TMVP确定步骤。在这种情况下,如果运动估算单元222确定处理区域的右下角位于图片边界之外,则运动估算单元222可以确定该块不可用于TMVP确定步骤。

相反,运动估算单元222可以确定与处理区域的中心并置的参考图片的块是否可用来推导TMVP候选项。运动估算单元222可以确定处理区域的中心是否位于图片边界内,如果是,则可以使用与处理区域的中心并置的参考图片的块来推导TMVP候选项。然而,因为处理区域的中心也可能位于图片边界之外,所以如果运动估算单元222确定处理区域的中心位于图片边界之外,则运动估算单元222可以确定处理区域的中心对于用来推导TMVP候选项也是不可用的。

模式选择单元202向残余生成单元204提供预测块。残余生成单元204从视频数据存储器230接收当前块的原始未编码的版本,并从模式选择单元202接收预测块。残余生成单元204计算当前块与预测块之间的逐样本差异。得到的逐样本差异定义了用于当前块的残余块。在一些示例中,残余生成单元204也可以确定残余块中的样本值之间的差异,以使用残余差分脉冲编解码调制(RDPCM)来生成残余块。在一些示例中,残余生成单元204可以使用执行二进制减法的一个或多个减法器电路来形成。

在模式选择单元202将CU分割成PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的PU。如上文所指示的,CU的尺寸可以指CU的亮度编解码块的尺寸,而PU的尺寸可以指PU的亮度预测单元的尺寸。假设特定CU的尺寸为2Nx2N,视频编码器200可以支持用于帧内预测的2Nx2N或NxN的PU尺寸,以及用于帧间预测的2Nx2N、2NxN、Nx2N、NxN或类似的对称PU尺寸。视频编码器200和视频解码器300也可以支持对用于帧间预测的2NxnU、2NxnD、nLx2N和nRx2N的PU尺寸的非对称分割。

在模式选择单元202没有进一步将CU分割成PU的示例中,每个CU可以与亮度编解码块和对应的色度编解码块相关联。同上,CU的尺寸可以指CU的亮度编解码块的尺寸。视频编码器200和视频解码器300可以支持2Nx2N、2NxN或Nx2N的CU尺寸。

对于其它视频编解码技术,诸如块内复制模式编解码、仿射模式编解码和线性模型(LM)模式编解码,作为少数示例,模式选择单元202经由与编解码技术相关联的各个单元,生成用于正被编码的当前块的预测块。在一些示例中,诸如调色板模式编解码,模式选择单元202可以不生成预测块,而是生成指示以基于所选择的调色板来重构块的方式的语法元素。在此种模式下,模式选择单元202可以向熵编码单元220提供这些语法元素以进行编码。

如上所述,残余生成单元204接收用于当前块和对应的预测块的视频数据。残余生成单元204然后生成用于当前块的残余块。为生成残余块,残余生成单元204计算预测块与当前块之间的逐样本差异。

变换处理单元206对残余块应用一个或多个变换,以生成变换系数的块(本文中被称为“变换系数块”)。变换处理单元206可以对残余块应用各种变换,以形成变换系数块。例如,变换处理单元206可以对残余块应用离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)或概念上类似的变换。在一些示例中,变换处理单元206可以对残余块执行多个变换,例如主变换和次变换,诸如旋转变换。在一些示例中,变换处理单元206不对残余块应用变换。

量化单元208可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与CU相关联的QP值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能引入信息损失,并且因此,量化的变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。

逆量化单元210和逆变换处理单元212可以对量化的变换系数块分别应用逆量化和逆变换,以由变换系数块重构残余块。重构单元214可以基于重构的残余块和由模式选择单元202生成的预测块来产生与当前块对应的重构块(尽管可能具有一定程度的失真)。例如,重构单元214可以将重构的残余块的样本添加到由模式选择单元202生成的预测块的对应的样本中,以产生重构的块。

滤波器单元216可以对重构的块执行一个或多个滤波操作。例如,滤波器单元216可以执行去块操作来减少沿CU边缘的块效应伪影。滤波器单元216的操作可以在一些示例中跳过。

视频编码器200将重构的块存储在DPB 218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构的块存储至DPB 218。在不需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波的重构的块存储至DPB 218。运动估算单元222和运动补偿单元224可以从DPB 218中检索参考图片,该参考图片由重构的(并且可能滤波的)块形成,以对随后编码的图片的块进行帧间预测。另外,帧内预测单元226可以使用DPB218中的当前图片的重构的块来对当前图片中的其他块进行帧内预测。

一般地,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编解码(CAVLC)操作、CABAC操作、变量到变量(V2V)长度编解码操作、基于语法的上下文自适应二进制算术编解码(SBAC)操作、概率区间分割熵(PIPE)编解码操作、指数Golomb编解码操作或另一种类型的熵编码操作。在一些示例中,熵编码单元220可以在旁路模式下操作,在旁路模式下,语法元素未被熵编码。

视频编码器200可以输出比特流,该比特流包括重建切片或图片的块所需的熵编码的语法元素。特别地,熵编码单元220可以输出比特流。

上述操作是相对于块来描述的。此描述应当被理解为用于亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块是CU的亮度分量和色度分量。在一些示例中,亮度编解码块和色度编解码块是PU的亮度分量和色度分量。

在一些示例中,对于色度编解码块,不需要重复相对于亮度编解码块执行的操作。作为一个示例,标识用于亮度编解码块的运动矢量和参考图片的操作不需要重复用于识别用于色度块的MV和参考图片。相反,用于亮度编解码块的MV可以被缩放以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度编解码块和色度编解码块,帧内预测过程可以是相同的。

视频编码器200表示被配置为编码视频数据的设备的示例,该设备包括被配置为存储视频数据的存储器;以及被实施在电路中的一个或多个处理单元,并且该一个或多个处理单元被配置为:确定视频数据的当前图片到多个分割块的分割;基于多个处理区域的处理区域具有不适合分割块的一个或多个边界的尺寸,对于具有满足单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N的约束的尺寸的当前图片中的单元,确定多个处理区域;将多个分割块的两个或更多个相邻分割块合并成处理区域;以及独立地编码具有合并的两个或更多个相邻分割块的处理区域内的编解码单元(CU)。

图4是图示了可以执行本公开的技术的示例视频解码器300的框图。图4是出于解释的目的而提供的,并且不限制如本公开广泛例示和描述的技术。出于解释的目的,本公开描述了根据JEM、VVC和HEVC的技术的视频解码器300。然而,本公开的技术可以由被配置为其他视频编解码标准的视频编解码设备来执行。

在图4的示例中,视频解码器300包括编解码的图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码的图片缓冲器(DPB)314。CPB存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和DPB 314中的任何一个或全部可以在一个或多个处理器或处理电路中实施。例如,视频解码器300的各单元可以被实施为一个或多个电路或逻辑元件,作为硬件电路的一部分,或者作为处理器、ASIC或FPGA的一部分。此外,视频解码器300可以包括附加的或可选的处理器或处理电路来执行这些和其他功能。

预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加的单元,以根据其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元或类似单元。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。

CPB存储器320可以存储待视频解码器300的组件解码的视频数据,诸如编码的视频比特流。存储在CPB存储器320中的视频数据可以例如从计算机可读介质110(图1)获得。CPB存储器320可以包括存储来自编码的视频比特流的编码的视频数据(例如,语法元素)的CPB。而且,CPB存储器320可以存储除编解码的图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各种单元的输出的临时数据。DPB 314通常存储解码的图片,视频解码器300可以在当解码编码的视频比特流的后续数据或图片时,输出和/或用作参考视频数据。CPB存储器320和DPB 314可以由多种存储器设备中的任何一种形成,诸如DRAM,包括SDRAM、MRAM、RRAM或其他类型的存储器设备。CPB存储器320和DPB 314可以由同一存储设备或不同的存储设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件在芯片上,或者相对于那些组件在芯片外。

附加地或替代地,在一些示例中,视频解码器300可以从存储器120(图1)中检索编解码的视频数据。也就是说,存储器120可以如上文所讨论的用CPB存储器320存储数据。类似地,存储器120可以在当视频解码器300的一些或全部功能性在待视频解码器300的处理电路执行的软件中实施时,存储待视频解码器300执行的指令。

图示了图4的各种单元,以帮助理解由视频解码器300执行的操作。这些单元可以被实施为固定功能电路、可编程电路或其组合。类似于图3,固定功能电路指提供特定功能性的电路,并被预设在可以执行的操作上。可编程电路指可以编程以执行各种任务并在可以执行的操作中提供灵活功能性的电路。例如,可编程电路可以执行软件或固件,使可编程电路以由软件或固件的指令定义的方式操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,单元中的一个或多个可以是不同的电路块(固定功能的或可编程的),并且在一些示例中,单元中的一个或多个可以是集成电路。

视频解码器300可以包括由可编程电路形成的ALU、EFU、数字电路、模拟电路和/或可编程核心。在视频解码器300的操作由在可编程电路上执行的软件来执行的示例中,片上或片外存储器可以存储视频解码器300接收和执行的软件的指令(例如,目标代码)。

熵解码单元302可以从CPB中接收编码的视频数据,并对视频数据进行熵解码以重新产生语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成解码的视频数据。

一般地,视频解码器300在逐块基础上重构图片。视频解码器300可以对每个块单独地执行重构操作(其中当前正在重构的块,即解码的块可以被称为“当前块”)。

熵解码单元302可以对定义量化的变换系数块的量化变换系数的语法元素以及变换信息(诸如量化参数(QP)和/或(多个)变换模式指示)进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的QP来确定量化程度,并且类似地,确定对于逆量化单元306要应用的逆量化程度。逆量化单元306可以例如执行逐位左移操作来对量化的变换系数进行逆量化。逆量化单元306由此可以形成包括变换系数的变换系数块。

在逆量化单元306形成变换系数块之后,逆变换处理单元308可以对变换系数块应用一个或多个逆变换,以生成与当前块相关联的残余块。例如,逆变换处理单元308可以对变换系数块应用逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换。

此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示从中检索参考块的DPB 314中的参考图片,以及标识参考图片中的参考块相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以基本上类似于相对于运动补偿单元224(图3)描述的方式来执行帧间预测过程。

作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再有,帧内预测单元318通常可以以基本上类似于相对于帧内预测单元226(图3)描述的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314中对当前块检索相邻样本的数据。

重构单元310可以使用预测块和残余块来重构当前块。例如,重构单元310可以将残余块的样本添加到预测块的对应样本中,以重构当前块。

滤波器单元312可以对重构的块执行一个或多个滤波操作。例如,滤波器单元312可以执行去块操作来减少沿重构块的边缘的块效应伪影。滤波器单元312的操作不一定在所有示例中执行。

视频解码器300可以将重构的块存储在DPB 314中。例如,在不执行滤波器单元312的操作的示例中,重构单元310可以将重构的块存储至DPB 314。在执行滤波器单元312的操作的示例中,滤波器单元312可以将滤波的重构的块存储至DPB 314。如上所述,DPB 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样本和先前的用于后续运动补偿的解码的图片。此外,视频解码器300可以从DPB 314中输出解码的图片(例如,解码的视频),用于随后在显示设备上呈现,诸如图1的显示设备118。

以这种方式,视频解码器300表示视频解码设备的示例,包括被配置为存储视频数据的存储器,以及被实施在电路中的并被配置为将比特流解码成视频数据的一个或多个处理单元。

图5A-5B是图示了确定用于从四叉树分割生成的分割块的处理区域的概念图。如图5A和图5B所示,诸如CTU的分割区322可以是图片中的单元,并且根据四叉树分割被分割成分割块324A-324D。当分割区322的尺寸为2*N时,四个分割块324A-324D可以各自具有N/2的尺寸。相应地,诸如视频编码器200或视频解码器300的视频编解码器可以将用于分割块324A-324D的处理区域的尺寸确定为N。

在图5A的示例中,视频编解码器可以将用于分割块324A-324D的处理区域326A和326B确定为矩形区域,每个矩形区域包括分割区322的两个水平相邻的子分割区。例如,处理区域326A可以包括水平相邻的分割块324A和324B,并且处理区域326B可以包括水平相邻的分割块324C和324D。因为处理区域326A和处理区域326B各自具有尺寸N,所以与分割区322对应的单元中的多个处理区域的所有处理区域的平均尺寸也为N,这满足了单元中的多个处理区域的所有处理区域的平均尺寸大于或等于N的约束。

在图5B的示例中,视频编解码器可以将用于分割块324A-324D的处理区域326C和326D确定为矩形区域,每个矩形区域包括分割区322的两个垂直相邻的子分割区。例如,处理区域326C可以包括水平相邻的分割块324A和324C,并且处理区域326D可以包括水平相邻的分割块324B和324D。因为处理区域326C和处理区域326D各自具有尺寸N,所以与分割区322对应的单元中的多个处理区域的所有处理区域的平均尺寸也为N,这满足了单元中的多个处理区域的所有处理区域的平均尺寸大于或等于N的约束。

图6A-6B是图示了确定用于从水平三叉树分割生成的分割块的处理区域的概念图。如图6A和图6B所示,诸如CTU的分割区328可以是图片中的单元,并且根据三叉树分割被分割成分割块330A-330C。分割区328的尺寸可以为2*N。分割块330A的尺寸可以为N/2,分割块330B的尺寸可以为N,并且分割块330C的尺寸可以为N/2。

在图6A的示例中,视频编解码器可以将用于分割块330A-330C的处理区域332A和332B确定为彼此尺寸不同的矩形区域。处理区域332A的尺寸可以为1/2N,并且包括分割块330A,而处理区域332B的尺寸可以为3N/2,并且包括分割块330B和330C。因为两个处理区域332A和332B一起适合尺寸为2*N的分割区328的边界,所以与分割区328对应的单元中的两个处理区域332A和332B的平均尺寸为N,这满足了单元中的所有处理区域的平均尺寸大于或等于N的约束。

在图6B的示例中,视频编解码器可以将用于分割块330A-330C的处理区域332C和332D确定为彼此尺寸不同的矩形区域。处理区域332C的尺寸可以为3/2N,并且包括分割块330A和330B,而处理区域332D的尺寸可以为N/2,并且包括分割块330C。因为两个处理区域332C和332D一起适合尺寸为2*N的分割区328的边界,所以与分割区328对应的单元中的两个处理区域332C和332D的平均尺寸为N,这满足了单元中的所有处理区域的平均尺寸大于或等于N的约束。

图7A-7B是图示了确定用于从垂直三叉树分割生成的分割块的处理区域的概念图。如图7A和图7B所示,诸如CTU的分割区334可以是图片中的单元,并且根据三叉树分割被分割成分割块336A-336C。分割区334的尺寸可以为2*N。分割块336A的尺寸可以为N/2,分割块336B的尺寸可以为N,并且分割块336C的尺寸可以为N/2。

在图7A的示例中,视频编解码器可以将用于分割块336A-336C的处理区域338A和338B确定为彼此尺寸不同的矩形区域。处理区域338A的尺寸可以为1/2N,并且包括分割块336A,而处理区域338B的尺寸可以为3N/2,并且包括分割块336B和336C。因为两个处理区域338A和338B一起适合尺寸为2*N的分割区334的边界,所以与分割区334对应的单元中的两个处理区域338A和338B的平均尺寸为N,这满足了单元中的所有处理区域的平均尺寸大于或等于N的约束。

在图7B的示例中,视频编解码器可以将用于分割块336A-336C的处理区域338C和338D确定为彼此尺寸不同的矩形区域。处理区域338C的尺寸可以为3/2N,并且包括分割块336A和336B,而处理区域338D的尺寸可以为N/2,并且包括分割块336C。因为两个处理区域338C和338D一起适合尺寸为2*N的分割区334的边界,所以与分割区334对应的单元中的两个处理区域338C和338D的平均尺寸为N,这满足了单元中的所有处理区域的平均尺寸大于或等于N的约束。

图8是图示了用于编码当前块的示例方法的流程图。当前块可以包括当前CU。尽管相对于视频编码器200(图1和图3)进行了描述,但是应当理解的是,其他设备仍然可以被配置为执行类似于图8的方法。

在该示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成用于当前块的预测块。作为形成用于当前块的预测块的一部分,视频编码器200可以确定用于当前块的运动参数。为了实现与其他相邻块并行地确定用于当前块的运动参数,视频编码器200可以确定视频数据的当前图片中的单元中的具有尺寸的多个处理区域,其中该单元中的所有处理区域的平均尺寸大于参数N,包括定义具有适合当前块和一个或多个相邻块的尺寸的处理区域,从而将当前块和一个或多个相邻块合并成处理区域,例如MER。视频编码器200由此可以并行地确定用于合并成处理区域的块的每一个的运动参数,包括当前块。

视频编码器200然后可以计算用于当前块的残余块(352)。为了计算残余块,视频编码器200可以计算用于当前块的原始未编码的块与预测块之间的差异。视频编码器200然后可以对残余块的变换系数进行变换并量化(354)。接下来,视频编码器200可以扫描残余块的量化的变换系数(356)。在扫描期间或扫描之后,视频编码器200可以对变换系数进行熵编码(358)。例如,视频编码器200可以使用CAVLC或CABAC来编码变换系数。视频编码器200然后可以输出块的熵编码的数据(360)。

图9是图示了用于解码视频数据的当前块的示例方法的流程图。当前块可以包括当前CU。尽管相对于视频解码器300(图1和图4)进行了描述,但是应当理解的是,其他设备仍然可以被配置为执行类似于图9的方法。

视频解码器300可以接收用于当前块的熵编码的数据,诸如用于与当前块对应的残余块的变换系数的熵编码的预测信息和熵编码的数据(370)。视频解码器300可以对熵编码的数据进行熵解码,以确定用于当前块的预测信息,并且以重新产生残余块的变换系数(372)。视频解码器300可以例如使用如用于当前块的预测信息所指示的帧内或帧间预测模式来预测当前块(374),以计算用于当前块的预测块。作为使用用于当前块的帧间预测模式以计算用于当前块的预测块的一部分,视频解码器300可以确定用于当前块的运动参数。为了实现与其他相邻块并行地确定用于当前块的运动参数,视频解码器300可以确定视频数据的当前图片中的单元中的具有尺寸的多个处理区域,其中该单元中的所有处理区域的平均尺寸大于参数N,包括定义具有适合当前块和一个或多个相邻块的尺寸的处理区域,从而将当前块和一个或多个相邻块合并成处理区域,诸如MER。例如,多个处理区域可以在编码的熵数据中。视频解码器300由此可以并行地确定用于合并成处理区域的块的每一个的运动参数,包括当前块。

视频解码器300然后可以逆扫描重新产生的变换系数(376),以创建量化的变换系数的块。视频解码器300然后可以对变换系数进行逆量化和逆变换,以产生残余块(378)。视频解码器300可以通过组合预测块和残余块来最终解码当前块(380)。

图10是图示了用于在视频编解码时推导用于并行处理的处理区域的示例方法的流程图。如图10所示,诸如视频编码器200或视频解码器300的视频编解码器可以确定视频数据的当前图片到多个分割块的分割(500)。例如,视频编解码器可以将CTU分割成CU,并且在一些示例中,可以根据三叉树、四叉树或二叉树中的一种或多种来确定当前图片的分割。

视频编解码器可以确定当前图片中的单元中的具有尺寸的多个处理区域,其中该单元中的多个处理区域的所有处理区域的平均尺寸大于或等于参数N,并且其中确定单元中的多个处理区域包括定义多个处理区域中的具有适合多个分割块中的两个或更多个相邻分割块的尺寸的处理区域(502)。例如,视频编解码器可以基于分割块的数量、尺寸和/或形状来确定覆盖处理区域的处理区域的数量、尺寸和/或形状,以便尽可能地减少率失真性能的损失。

在一些示例中,参数N指定被包括在一个处理区域中的样本的数量,并且在一些示例中,单元是以下各项中的一项:当前图片、切片、瓦片、CTU或尺寸为2*N的分割块。

进一步地,在一些示例中,处理区域是多个处理区域中的第一处理区域,并且多个处理区域中的第一处理区域的尺寸不同于多个处理区域中的第二处理区域的尺寸。例如,多个处理区域中的第一处理区域的尺寸可以大于参数N,并且多个处理区域中的第二处理区域的尺寸小于参数N,诸如图6A、图6B、图7A和图7B的示例中示出的。

视频编解码器可以独立地编解码具有合并的两个或更多个相邻分割块的处理区域内的CU(504)。如上文所讨论的,视频编解码器可以是视频编码器200或视频解码器300。如此,在一些示例中,视频编码器200可以独立地编码具有合并的两个或更多个相邻分割块的处理区域内的CU,并且在其他示例中,视频解码器300可以独立地解码具有合并的两个或更多个相邻分割块的处理区域内的CU。

在一些示例中,处理区域是合并估算区域,并且独立地编解码处理区域内的CU的视频编解码器包括并行地确定用于处理区域内的CU的每一个的运动参数的视频编解码器。如上文所讨论的,并行地编解码CU并不意味着处理区域中的CU几乎同时被编解码,使得视频编解码器几乎同时开始和结束CU的编解码。相反,并行地编解码CU包括能同时执行CU的编解码的视频编解码器。

在一些示例中,处理区域是合并估算区域,并且独立地编解码处理区域内的CU的视频编解码器包括使用用于处理区域内所有CU的共享合并候选列表来并行地确定用于CU的运动参数的视频编解码器。通过使用用于同一处理区域内的所有CU的共享合并候选列表,视频编解码器不必确定用于同一处理区域内的不同CU的不同合并候选列表,从而提高视频编解码器在编解码CU时的性能。

在一些示例中,独立地编解码处理区域内的CU的视频编解码器包括并行地执行以下各项中的至少一项的视频编解码器:用于处理区域内的CU的高级运动矢量预测(AMVP),该预测基于空间运动预测候选项的特性和可用性对用于CU的运动矢量预测候选项设置特定约束;和/或用于处理区域内的CU的仿射运动预测,该预测使用(多个)相邻块的仿射运动模型的运动矢量来推导用于当前块的运动矢量预测候选项,以确定用于CU的运动参数。

本公开的说明性示例包括:

示例1:一种编解码视频数据的方法,该方法包括:确定视频数据的当前图片到多个分割块的分割;基于具有不适合分割块的一个或多个边界的标准尺寸的处理区域,将多个分割块中的两个或更多个相邻分割块合并成处理区域;以及并行地编解码具有合并的两个或更多个相邻分割块的处理单元内的编解码单元(CU)。

示例2:根据示例1所述的方法,其中,标准尺寸由参数N来定义,该参数N指定被包括在处理区域中的样本的数量。

示例3:根据示例2所述的方法,其中,单元的所有处理区域具有大于或等于参数N的平均区域。

示例4:根据示例3所述的方法,其中,单元可以是以下各项中的一项:当前图片、切片、瓦片、编解码树单元(CTU)或尺寸为2*N的分割块。

示例5:根据示例1至4中任意一项所述的方法,其中,对块进行分割包括根据三叉树来对块进行分割。

示例6:根据示例1至4中任意一项所述的方法,其中,对块进行分割包括根据四叉树来对块进行分割。

示例7:根据示例1至4中任意一项所述的方法,其中,对块进行分割包括根据二叉树来对块进行分割。

示例8:根据示例1至4所述的方法,其中,处理区域是合并估算区域,并且并行地编解码处理区域内的CU包括并行地将共享合并候选列表用于处理区域内的所有CU,以确定运动参数。

示例9:根据示例1至8中任意一项所述的方法,其中,并行地编解码处理区域内的CU包括并行地对处理区域内的所有CU执行高级运动矢量预测(AMVP)或仿射运动预测,以确定运动参数。

示例10:根据示例1至9中任意一项所述的方法,其中,编解码包括解码。

示例11:根据示例1至9中任意一项所述的方法,其中,编解码包括编码。

示例12:一种用于编解码视频数据的设备,该设备包括一个或多个用于执行如示例1至11中任意一项所述的方法的部件。

示例13:根据示例12所述的设备,其中,一个或多个部件包括被实施在电路中的一个或多个处理器。

示例14:根据示例12和13中任意一项所述的设备,还包括存储视频数据的存储器。

示例15:根据示例12至14中任意一项所述的设备,还包括被配置为显示解码的视频数据的显示器。

示例16:根据示例12至15中任意一项所述的设备,其中,该设备包括摄像机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。

示例17:根据示例12至16中任意一项所述的设备,其中,该设备包括视频解码器。

示例18:根据示例12至17中任意一项所述的设备,其中,该设备包括视频编码器。

示例19:一种其上存储有指令的计算机可读存储介质,当指令被执行时使一个或多个处理器执行如示例1至11中任意一项所述的方法。

示例20:一种用于编码视频数据的设备,该设备包括用于执行如示例1至11中任意一项所述的方法的部件。

可以认识到的是,根据示例,本文描述的技术中的任何一种的某些动作或事件可以以不同的顺序来执行,可以被添加、合并或一起省略(例如,并非所有描述的动作或事件对于技术的实践都是必要的)。此外,在某些示例中,动作或事件可以同时执行,例如通过多线程处理、中断处理或多个处理器,而非顺序执行。

在一个或多个示例中,所描述的功能可以在硬件、软件、固件或其任意组合中实施。如果在软件中实施,这些功能可以作为一个或多个指令或代码存储或发送到计算机可读介质上并由基于硬件的处理单元执行。计算机可读介质可以包括与诸如数据存储介质的有形介质对应的计算机可读存储介质,或者包括例如根据通信协议促进将计算机程序从一个地方转移到另一个地方的任何介质的通信介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以用于实施本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。

举例来说而非限制,此种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备,或者任何其他介质,这些介质可以用来以指令或数据结构的形式存储期望的程序代码并且可以由计算机访问。并且,任何连接都被恰当地称作计算机可读介质。例如,如果指令是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或无线技术(诸如红外线、无线电以及微波)从网站、服务器或其他远程源发送的,则同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外线、无线电以及微波)都被包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是指向非暂时性的有形存储介质。如本文所使用的,盘和碟包含光碟(CD)、激光碟、光碟、数字多功能碟(DVD)、软盘和蓝光碟,其中盘通常磁性地再现数据,而碟用激光光学地再现数据。上述的组合也应该被包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效的集成或分立逻辑电路。相应地,如本文所使用的术语“处理器”和“处理电路”可以指任何前述结构或者适合于实施本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能性可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或者被结合在组合编码解码器中。并且,这些技术可以完全在一个或多个电路或逻辑元件中实施。

本公开的技术可以在很多种设备或装置中实施,包括无线手机、集成电路(IC)或一组IC(例如,芯片组)。在本公开中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的各功能方面,但是不一定要求通过不同的硬件单元来实现。相反,如上文所讨论的,各种单元可以被组合在编码解码器硬件单元中,或者由包括如上文所讨论的一个或多个处理器的互操作硬件单元的集合,结合合适的软件和/或固件来提供。

已经对各种示例进行了描述。这些和其他示例都在以下权利要求的范围内。

相关技术
  • 视频编解码中用于并行处理的处理区域的推导
  • 用于视频编解码系统中解块滤波的并行处理方法
技术分类

06120113279646