首页> 中国专利> 针对视频译码中最差情况的带宽减少的仿射限制

针对视频译码中最差情况的带宽减少的仿射限制

摘要

示例方法包括使用仿射运动补偿获得选择用于译码的视频数据的当前块的多个亮度子块的亮度运动矢量的值;基于多个亮度子块的子集的亮度运动矢量的值,确定对应于该多个亮度子块的色度子块的色度运动矢量的值;使用仿射运动补偿,基于亮度运动矢量的相应值,预测多个亮度子块中每个亮度子块的相应样本;以及使用仿射运动补偿,基于色度运动矢量的值预测色度子块的样本。

著录项

  • 公开/公告号CN112771860A

    专利类型发明专利

  • 公开/公告日2021-05-07

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN201980064102.0

  • 申请日2019-10-03

  • 分类号H04N19/105(20060101);H04N19/139(20060101);H04N19/176(20060101);H04N19/186(20060101);H04N19/196(20060101);H04N19/513(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人安之斐

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:52:42

说明书

本申请要求于2019年10月2日递交的美国专利申请No.16/590,509的优先权,该申请要求于2018年10月4日递交的美国临时申请No.62/741,461、2018年11月1日递交的美国临时申请No.62/754,463、2018年12月28日递交的美国临时申请No.62/786,023和2019年1月28日递交的美国临时申请No.62/797,723的优先权,以上每个申请的整个内容以引用方式并入本文。

技术领域

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

背景技术

数字视频功能能够集成到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、便携式或台式计算机、平板电脑、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝式或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频译码(coding)技术,诸如那些在由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)条带中的视频块,可以使用相对于同一图片中相邻块中的参考样本的空域预测或者相对于其他参考图片中的参考样本的时域预测。图片可以称为帧,并且参考图片可以称为参考帧。

发明内容

本公开大体上涉及用于减少用于预测视频数据的样本的存储器带宽的量的技术。视频译码器(例如,视频编码器或视频解码器)可以基于视频数据的一个或多个参考块的样本(称为参考样本)来预测视频数据的当前块的样本。为了从参考样本预测当前块的样本,视频译码器可以从存储器检索(retrieve)参考样本。视频译码器用来预测视频数据的当前块的样本的存储器带宽的量可以是所检索的参考样本的数量的函数。从存储器检索参考样本可能会消耗功率并增加处理时间。这样,在一些示例中,可能希望最小化视频译码器所使用的存储器带宽。

根据本公开的一种或多种技术,视频译码器可以施加一个或多个约束以减少用于预测视频数据的当前块的样本的存储器带宽的量。例如,视频译码器可以确定当前块所需的存储器带宽,且可以基于所确定的用于当前块的存储器带宽是否满足带宽阈值来选择性地修改用于预测当前块的样本的运动补偿方法。以此方式,视频译码器可以减少消耗功率量和/或预测当前块的样本所需的处理时间。

在一个示例中,一种方法包括使用仿射运动补偿获得针对所选择的用于译码的、视频数据的当前块的多个亮度子块的亮度运动矢量的值;基于多个亮度子块的子集的亮度运动矢量的值,确定针对对应于多个亮度子块的色度子块的色度运动矢量的值;使用仿射运动补偿,基于亮度运动矢量的相应值,预测多个亮度子块中每个亮度子块的相应样本;以及使用仿射运动补偿,基于色度运动矢量的值预测色度子块的样本。

在另一个示例中,一种用于对视频数据进行译码的设备包括:存储器,被配置为存储视频数据;以及一个或多个处理器,在电路中实现并且被配置为:使用仿射运动补偿获得针对所选择的用于译码的、视频数据的当前块的多个亮度子块的亮度运动矢量的值;基于多个亮度子块的子集的亮度运动矢量的值,确定针对对应于多个亮度子块的色度子块的色度运动矢量的值;使用仿射运动补偿,基于亮度运动矢量的相应值,预测多个亮度子块中每个亮度子块的相应样本;以及使用仿射运动补偿,基于色度运动矢量的值预测色度子块的样本。

在另一个示例中,一种计算机可读存储介质存储指令,该指令被执行时使视频译码器的一个或多个处理器执行以下步骤:使用仿射运动补偿获得针对所选择的用于译码的、视频数据的当前块的多个亮度子块的亮度运动矢量的值;基于多个亮度子块的子集的亮度运动矢量的值,确定针对对应于多个亮度子块的色度子块的色度运动矢量的值;使用仿射运动补偿,基于亮度运动矢量的相应值,预测多个亮度子块中每个亮度子块的相应样本;以及使用仿射运动补偿,基于色度运动矢量的值预测色度子块的样本。

在另一个示例中,一种用于对视频数据进行译码的设备包括:用于使用仿射运动补偿获得针对所选择的用于译码的、视频数据的当前块的多个亮度子块的亮度运动矢量的值的部件;用于基于多个亮度子块的子集的亮度运动矢量的值,确定针对对应于多个亮度子块的色度子块的色度运动矢量的值的部件;用于使用仿射运动补偿,基于亮度运动矢量的相应值,预测多个亮度子块中每个亮度子块的相应样本的部件;以及用于使用仿射运动补偿,基于色度运动矢量的值预测色度子块的样本的部件。

在附图和以下描述中阐述了本公开的一个或多个示例的细节。从说明书和附图以及从权利要求书中,该技术的各个方面的其他特征,目的和优点将是显而易见的。

附图说明

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

图2A和2B是说明示例四叉树加二叉树(QTBT)结构和对应的译码树单元(CTU)的概念图。

图3A-3E是示出视频数据的示例分割的概念图。

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

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

图6A和6B是示出仿射模式中的控制点的概念图。

图7是示出根据本公开的一个或多个方面的用于重构当前块的非重叠参考区域的概念图。

图8是示出根据本公开的一个或多个方面的用于重构当前块的重叠参考区域的概念图。

图9是示出根据本公开的一种或多种技术从亮度运动矢量确定色度运动矢量的概念图。

图10是示出用于对当前块进行编码的示例过程的流程图。

图11是示出用于对当前块进行解码的示例过程的流程图。

图12是示出根据本公开的一种或多种技术的用于管理用于预测视频数据的存储器带宽的示例过程的流程图。

图13是示出根据本公开的一个或多个方面的简化的存储器带宽测试的概念图。

图14是示出根据本公开的一种或多种技术的用于管理用于预测视频数据的存储器带宽的示例方法的流程图。

具体实施方式

图1是示出可执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常指向对视频数据进行译码(编码和/或解码)。一般地,视频数据包括用于处理视频的任何数据。从而,视频数据可以包括原始的未编码视频、编码视频、解码(例如重构)视频以及视频元数据(诸如,信令通知的数据)。

如图1所示,在此示例中,系统100包括提供将由目标设备116进行解码和显示的编码视频数据的源设备102。特别地,源设备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,其对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如摄像机、包括先前捕获的原始视频的视频档案和/或从视频内容提供商接收视频的视频馈送接口。作为进一步的替代方案,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括编码视频数据的比特流。然后,源设备102可以经由输出接口108将编码视频数据输出到计算机可读介质110上,通过例如目标设备116的输入接口122进行接收和/或检索。

源设备102的存储器106和目标设备116的存储器120代表通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104的原始视频和来自视频解码器300的原始的解码视频数据。附加地或可替代地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300执行的软件指令。尽管在此示例中与视频编码器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可以配置为根据其他无线标准,诸如IEEE802.11规范、IEEE802.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))。在ITU-T SG 16WP3联合视频专家组(JVET)和ISO/IEC JTC 1/SC 29/WG 11,第11次会议:卢布尔雅那,SI,2018年7月10日至18日,JVET-12001-vE,Bross等人的“Versatile Video Coding(Draft 2)(通用视频编码(草案2))”(以下称为“VVC草案2”)中描述了VVC标准的最近的草案。但是,本公开的技术不限于任何特定的编码标准。

一般地,视频编码器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的矩形区域。片行指的是具有由语法元素指定的高度(例如,诸如在图片参数集中)和等于图片宽度的宽度的CTU的矩形区域。

在一些示例中,可以将一个片分割为多个砖块,每个砖块可以包括该片中的一个或多个CTU行。没有被分割为多个砖块的片也可以被称为砖块。但是,作为片的真实子集的砖块不能被称为片。

片中的砖块也可以排列在条带(slice)中。条带可以是图片的可以唯一地包含在单个网络抽象层(NAL)单元中的整数数量的砖块。在一些示例中,一个条带包括若干个完整片或仅包括一个片的连续序列的完整砖块。

本公开可以互换地使用“N×N”和“N乘N”来表示块(诸如CU或其他视频块)在垂直和水平维度方面的样本维度,例如16×16样本或16乘16样本。一般地,16×16CU在垂直方向上将有16个样本(y=16),在水平方向上将有16个样本(x=16)。同样地,N×N的CU一般地在垂直方向上具有N个样本,在水平方向上具有N个样本,其中N代表非负整数值。CU中的样本可以按行和列来排列。此外,CU在水平方向上不必具有与垂直方向上相同数量的样本。举例来说,CU可以包含N×M个样本,其中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以光栅扫描顺序(从左到右、从上到下)对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可以执行附加过程(诸如执行解块(deblocking)过程)来减少沿块边界的视觉伪像。

一般地,本公开可以表示“信令通知”某些信息,诸如语法元素。术语“信令通知”通常可以指对于语法元素和/或用于对编码视频数据进行解码的其他数据的值的通信。也就是说,视频编码器200可以信令通知比特流中的语法元素的值。一般地,信令通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地(或非实时地,诸如可能在将语法元素存储到存储设备112以供稍后由目标设备116检索时发生)将比特流传送到目标设备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尺寸设置为128×128(亮度样本和两个对应的64×64色度样本),MinQTSize设置为16×16,MaxBTSize设置为64×64,MinBTSize(用于宽度和高度)设置为4,MaxBTDepth设置为4。首先,将四叉树分割应用于CTU来生成四叉树叶节点。四叉树叶节点可以具有从16×16(即MinQTSize)到128×128(即CTU尺寸)的尺寸。如果叶四叉树节点为128×128,则由于其尺寸超过MaxBTSize(在此示例中为64×64),因此该叶四叉树节点不会进一步被二叉树划分。否则,叶四叉树节点将进一步进行二叉树分割。因此,四叉树叶节点也是二叉树的根节点,且具有为0的二叉树深度。当二叉树深度达到MaxBTDepth(在此示例中为4)时,不允许进一步划分。当二叉树节点具有等于MinBTSize(在此示例中为4)的宽度时,二叉树节点意味着不允许进一步的水平划分。类似地,具有等于MinBTSize的高度的二叉树节点表明不允许对该二叉树节点进行进一步的垂直划分。如上所述,二叉树的叶节点称为CU并且根据预测和变换对其进行进一步处理而无需进一步分割。

图3A-3E是示出视频数据块的示例分割的概念图。如上所述,在VVC中使用的树结构是QT-BTT(四叉树加二叉和三叉树)的概括。该结构的基本特征可以包括两种类型的树节点:区域树(RT)和预测树(PT),其支持五种类型的分割,如图3A–图3E所示。具体地,图3A示出了四叉树分割,图3B示出了垂直二叉树分割,图3C示出了水平二叉树分割,图3D示出了垂直三叉树分割,而图3E示出了水平三叉树分割。区域树可以将CTU递归地拆分为正方形块,直到4×4尺寸的区域树叶节点。在区域树中的每个节点上,可以由三种树类型之一形成预测树以形成译码单元(CU):二叉树,三叉树。在PT划分中,可以禁止在预测树的分支中具有四叉树分割。

CTU可以包括一个亮度译码树块(CTB)和两个色度译码树块。在CU级别,CU可以与一个亮度译码块(CB)和两个色度译码块相关联。正如在JEM(VVC的参考软件)中,亮度树和色度树可以被分开到帧内条带中,而该亮度树和色度树在帧间条带中是共用的。CTU的尺寸可以是128×128(亮度分量),而译码单元的尺寸可以在4×4到CTU的尺寸范围内。在这种场景中,色度块的尺寸可以是4:2:0颜色格式的2×2。

与HEVC一样,VVC支持变换跳过(skip)模式。当视频译码器将变换跳过模式应用于CU的残差时,视频译码器可以不执行变换,并且可以对残差进行量化。为了选择用于CU的TU的最佳变换模式,视频编码器可以测试变换模式和变换跳过模式二者。视频编码器可以将语法元素(例如,transform_skip_flag)编码到(例如,在比特流中发信令通知)解码器,以指示TU的变换模式。在图片级别,视频编码器可以在图片参数集(PPS)中信令通知语法元素(例如,标志)来指示变换跳过模式的使用。

在VVC中,视频编码器可以使用帧间预测模式将块编码到帧间条带中,在帧间预测模式中,使用块匹配算法获得该块的预测值。视频编码器可以在以运动矢量预测器(由AMVP过程导出)为中心的窗口内搜索参考帧,以找到该块的最佳匹配。举例来说,视频编码器可以,作为运动估计过程的一部分,在整数精度级别评估多个运动矢量。一旦获得整数级别中的最佳匹配,视频编码器就可以通过插值过程(例如,半像素和四分之一像素)进一步细化最佳匹配。

在JEM中,引入了局部自适应运动矢量分辨率(LAMVR)。LAMVR考虑到运动矢量差(MVD)要以四分之一亮度样本、整数个亮度样本或者四个亮度样本为单位进行译码。MVD分辨率可以在CU级别控制,并且可以针对具有至少一个非零MVD分量的每个CU有条件地发信令通知MVD分辨率标志。

对于具有至少一个非零MVD分量的CU(例如,x分量或y分量为非零),视频译码器可以发信令通知第一标志,以指示在该CU中是否使用四分之一亮度样本MV精度。当第一标志指示未使用四分之一亮度样本MV精度时(例如,第一标志等于1),则视频译码器可以发信令通知另一标志以指示是使用整数亮度样本MV精度还是使用四个亮度样本MV精度。

当CU的第一MVD分辨率标志为零或者未针对CU译码时(意味着CU中的所有MVD均为零),视频译码器可将四分之一亮度样本MV分辨率用于该CU。当CU使用整数亮度样本MV精度或者四个亮度样本MV精度时,视频译码器可以针对CU将AMVP候选列表中的MVP舍入(round)到对应的精度。

视频译码器可以针对高级时间运动矢量预测(ATMVP)模式执行子块运动补偿(例如,在VVC中)。在ATMVP模式中,视频译码器可以将CU拆分成若干子块,称为预测单元(PU)。视频译码器可以使用先前的编码帧中的时间并置块的运动矢量来独立地评估这些PU。这些PU的运动矢量可以是或者可以不是不同的。在一些示例中,PU的块尺寸可以固定为4×4。在这样的示例中,为了在解码器侧重构每个PU,视频解码器可以访问存储器(例如,存储器120)中尺寸11×11[(4+4+3)×(4+4+3)]的块。

视频译码器可以利用仿射译码模式(例如,在VVC中)对CU进行译码。仿射CU(例如,使用仿射模式编码的CU)可以被拆分成独立评估的子PU。与使用时间并置块的运动矢量获得PU的运动矢量的ATMVP相比,视频译码器可以使用CU的空间相邻CU的运动矢量导出每个仿射PU的运动矢量。

仿射运动模型可以描述为:

(v

其中,w和h是块的宽度和高度。本公开将此仿射运动模型称为6-参数仿射运动模型。

简化的4-参数仿射模型描述为:

类似地,用于块的简化的4-参数仿射模型可以由该块的两个角处的两个

现在,VVC允许仿射类型预测。在一些示例中,VVC中的仿射类型预测可以利用6-参数仿射模型或者简化的4-参数仿射模型之一或二者。

为了降低复杂度,视频译码器(例如,视频编码器200和/或视频解码器300)可以执行基于子块的运动补偿,以进行仿射运动补偿。视频译码器可以将当前块划分为非重叠子块。对于每个子块,视频译码器可以通过所确定的仿射运动模型来导出运动矢量(MV)。然后,视频译码器可以使用导出的MV执行基于块的运动补偿(块匹配)。

典型地,子块的尺寸是固定的。但是,如果两个邻近子块的MV之间的差异很大,则使用小的子块尺寸(例如,4×4)可能会显着地增加存储器带宽。另一方面,使用大的子块尺寸可能会降低运动补偿预测精度。为了解决这个问题,视频译码器可以利用自适应子块尺寸。例如,视频译码器可以将一个或多个约束应用于仿射运动模型。如果仿射运动模型满足一个或多个约束,则视频译码器可以使用小的子块尺寸。否则,如果仿射运动模型不满足一个或多个约束,则视频译码器可以使用相对较大的子块尺寸。在2018年11月1日递交的美国临时申请No.62/754,463、2018年12月28日递交的而美国临时申请No.62/786,023和2019年1月28日递交的美国临时申请No.62/797,723中描述了这种约束的示例。当使用大的子块尺寸时(例如,8×8),视频译码器可以从四个4×4子块的MV导出用于需要导出的运动补偿的MV。

在某些颜色格式中,色度分量的仿射块尺寸可能与亮度分量的仿射块尺寸不同。举例来说,对于4:2:2或4:2:0颜色格式,色度分量的仿射块尺寸可以是亮度块的一半尺寸。这样,一个4×4色度子块可以对应于四个4×4亮度子块。视频译码器可以基于亮度子块的MV导出色度子块的MV。举例来说,视频译码器可以将用于4×4色度子块的MV导出为所有四个4×4亮度子块的MV的平均值。然而,基于所有对应的亮度子块的MV来计算色度子块的MV可能是复杂的,并且需要视频译码器从存储器访问所有亮度子块MV,这可能是不期望的。

根据本公开的一种或多种技术,视频译码器(例如,视频编码器200和/或视频解码器300)可以基于对应于色度子块的多个亮度子块的子集的亮度MV的值确定色度子块的色度MV的值。该亮度子块的子集是严格子集,其包括比对应于色度子块的所有亮度子块更少的亮度子块。通过基于亮度MV的子集确定色度MV的值,视频译码器可以简化色度MV确定过程并且避免访问所有亮度MV的值。以此方式,本公开的技术可降低仿射运动补偿的复杂度和存储器带宽要求。

为了下面讨论的目的,存储器带宽被计算为插值所必须的参考像素(例如,参考样本)的数量。在实际硬件实现中,实际带宽也可以取决于硬件体系结构,并且可以大于访问像素的某个数量。

针对存储器带宽的目的,针对帧间模式(例如,合并和AMVP模式)的最差情况编码场景可以是具有来自两个方向的分数像素运动vMV的4×4双向预测块。对于这种情况,可能需要从内存访问两个11×11(121像素)亮度块以执行插值,并且必须获取尺寸为5×5的U和V颜色分量的两个对应色度块。在此计算中,假设将8抽头滤波器用于亮度分量插值,且6抽头滤波器用于色度分量插值。在下表1中总结了取决于块尺寸的2D插值所需的像素数量。有助于恶化带宽的另一种情况是在ATMVP和仿射模式中,其中,与CU相关联的子PU的运动矢量可能导致从存储器获取非重叠区域。

表1-用于JEM中的2D插值的像素数量

图7是示出根据本公开的一个或多个方面的用于重构当前块的非重叠参考区域的概念图。如图7中所示,为了重构当前帧702的当前CU 706,视频译码器可以访问参考帧704的若干区域(例如,被存储在参考图片缓冲器(诸如图4的解码图片缓冲器218或者图5的解码图片缓冲器213)中的参考帧704的区域)。特别地,当前CU 706可以被划分为子块708A-708D(统称为“子块708”),其各自与子块运动矢量mv

表2-用于JEM中的2D插值的像素数量

如上所述,在一些示例中,被访问以重构译码单元的参考区域可以是不重叠的。在其他示例中,被访问以重构译码单元的参考区域可以是重叠的。重叠参考区域可以为视频译码器提供一些效率。举例来说,视频译码器可能仅需要访问重叠参考区域的样本一次,从而导致存储器带宽节省。

图8是示出根据本公开的一个或多个方面的用于重构当前块的重叠参考区域的概念图。如图8中所示,为了重构当前帧802的当前块806(例如,当前CU),视频译码器可以访问来自参考帧804的若干区域(例如,存储在参考图片缓冲器(诸如图4的解码图片缓冲器218或者图5的解码图片缓冲器213)中的区域)。具体地,当前块806可以被划分为子块708A-708D,其各自与子块运动矢量mv

与针对每个4×4PU的单独获取相比,更大的重叠区域可以节省更高的带宽。带宽节省BS可以计算为:

其中,K,N和F分别是针对4×4PU的获取点的数量、与CU相关联的PU的数量,和在仿射模式中对CU进行编码需要的获取点的数量。

本公开描述多种技术来解决上述问题,包括针对2×2块的变换的简化和用于存储器访问的带宽的减少。本公开的技术可以被独立地或者组合地使用。

根据第一种技术,视频译码器(例如,视频编码器200和/或视频解码器300)可以对2×2块进行变换。作为一个示例,视频译码器可以迫使2×2色度块以变换跳过模式译码。这样,可以直接在像素域中对2×2色度块的残差进行量化。始终针对2×2色度块应用变换跳过,因此,不再在这些块的比特流中发信令通知变换跳过标志。使用该技术,由于不应用变换并且可以通过移位操作简单地执行变换跳过,因此可以减少处理时间。此外,移除了transform_skip_flag语法可以提高压缩效率。举例来说,响应于确定将视频数据分割为至少一个2×2色度块,视频译码器可以使用变换跳过模式对2×2色度块进行译码。

作为另一个示例,对于2×2色度块,可以总是将残差强制为零,在这种情况中,也可以绕过变换,可以省略针对这种色度块信令通知的指示残差是否为零的译码块模式(CBP)标志以减少开销。在一个示例中,在帧间模式中,(例如,残差是否为零)可以通过使用总是具有零残差的跳过模式来指示。举例来说,响应于确定将视频数据分割为至少一个2×2色度块,视频译码器可以将2×2色度块译码为具有零残余值(例如,选择至少在量化之后完全匹配2×2色度块的预测器块)。

如果应用单独的树编码,则意味着亮度和色度分量可以具有不同的分割结构,则可以禁止将分割拆分为2×2色度块,在这种情况下,将不存在2×2色度块。是否要禁止3×3色度块可以取决于预测模式。例如,3×3色度块可以被禁止用于帧内模式,但可以允许用于帧间模式。帧内模式具有附加的依赖性,因为该预测是使用相邻样本完成的,这相比于帧间模式增加附加的负担。

所描述的技术可以或者以任何组合应用于以下情况之一:I条带中的帧内2×2色度块,或者可以不管条带类型应用于在帧内模式中译码的色度2×2块,或者应用于在帧间模式中译码的2×2色度块。

如上所述,并且根据本公开的一种或多种技术,视频译码器(例如,视频编码器200和/或视频解码器300)可以施加一个或多个约束以减少用于预测视频数据样本的存储器带宽量。举例来说,视频译码器可以确定当前块所需的存储器带宽,并且可以基于所确定的用于当前块的存储器带宽是否满足带宽阈值来选择性地修改用于预测当前块的样本的运动补偿方法。以此方式,视频译码器可以减少消耗功率量和/或预测当前块的样本所需的处理时间。

如上所述,在一些示例中,视频译码器可以确定当前块所需要的存储器带宽。视频译码器可以基于块的仿射运动模型参数的值(例如,基于块的控制点运动矢量(CPMV))使用仿射模式确定块所需要的存储器带宽。如上参考方程式(1)和(2)所讨论的,仿射运动模型可以包括四个或六个参数。四个参数仿射运动模型可以隐含地表示为两个CPMV(例如,

仿射模型参数a、b、c、d确定子块运动矢量在PU中能够相互距离多远。在最差的情况下,子块矢量可以距离相当远以至于用于运动补偿的参考区域之间零重叠(例如,如图7的示例中所示)。如上所述,参考区域之间减少的重叠导致存储器带宽需求增加。在参考区域之间存在零重叠的场景可以被称为存储器带宽的“最差情况”场景,因为可能需要从存储器(例如,存储器106、存储器120)访问最大数量的参考样本。这样,本公开提出一种技术,其中视频译码器基于访问使用仿射模式译码的当前块的参考样本所需的存储器带宽来选择性地调整用于预测当前块的样本的运动补偿方法。

在一些示例中,视频译码器可以基于最小区域的面积来确定当前块所需的存储器带宽,该最小区域包括将从中预测当前块的样本的所有参考块。这样的最小区域的示例被示为图8的区域820,其是包括参考区域810的所有样本的最小区域。为了确定最小区域的面积,视频译码器可以确定最小区域的尺寸。举例来说,视频译码器可以从当前块的CPMV导出参考块的位置。在图8的示例中,视频译码器可以获得当前块806的CPMV的值,并且可以基于CPMV的值导出子块运动矢量mv

视频译码器可以基于参考块的位置确定最小区域的边界。举例来说,视频译码器可以基于所标识的参考块来确定最小区域820的顶部边界、底部边界、左侧边界和右侧边界。为了确定最小区域的边界,视频译码器可确定每个参考区域的边界。举例来说,视频译码器可以确定参考区域810的每一参考区域的顶部边界、底部边界、左侧边界和右侧边界。如上所述,每一参考区域可以包括一个参考块(例如,以具有由子块运动矢量标识的左上角的虚线示出)和用于插值的参考块周围的附加样本(例如,以虚线周围的实线示出)。子块808A的参考区域810A的左侧和顶部边界可以被计算为:

LeftR

TopR

参考区域810的宽度(wR)和高度(hR)可以被计算为:

wR

hR

参考区域的右侧和底部边界可以被计算为:

RightR

BottomR

其中,(x,y)是子块808A的位置,MV

视频译码器可以基于所确定的参考区域的边界来确定最小区域的尺寸。举例来说,视频译码器可以将最小区域的边界确定为参考区域的顶部、底部、左侧和右侧边界的每一个的最小边界。视频译码器可以如下确定最小区域820的边界:

Top

Left

Right

Bottom

以此方式,视频译码器可以基于CPMV的值来确定包括多个参考块的最小区域的尺寸。如上所述,视频译码器可以基于最小区域的面积来确定当前块所需的存储器带宽,该最小区域包括将从中预测当前块的样本的所有参考块。举例来说,视频译码器可以基于最小区域820的面积来确定当前块806所需的存储器带宽。视频译码器可以通过将最小区域的高度乘以最小区域的宽度来确定最小区域的面积。视频译码器可以通过从右侧边界减去左侧边界来确定最小区域的宽度,并且可以通过从底部边界减去顶部边界来确定最小区域的高度。举例来说,视频译码器可以如下确定最小区域820的面积:

Area

在其它示例中,视频译码器可以如下确定最小区域820的面积:

Area

视频译码器可基于最小区域的面积来确定当前块所需的存储器带宽。在一些示例中,视频译码器可以直接将确定的最小区域的面积用作当前块所需的存储器带宽。举例来说,视频译码器可以确定块806所需的带宽等于Area

如上所述,视频译码器可以基于所确定的用于当前块的存储器带宽是否满足带宽阈值来选择性地修改用于预测当前块的样本的运动补偿方法。视频译码器可以将所确定的存储器带宽与预定的带宽阈值进行比较。带宽阈值可以在配置文件中预定义,或者可以作为参数传递给视频译码器。

为了选择性地修改运动补偿方法,视频译码器可以响应于确定存储器带宽不满足带宽阈值来修改(例如,改变、更改或以其他方式调整)运动补偿方法。类似地,视频译码器可以响应于确定存储器带宽不满足带宽阈值而不修改运动补偿方法。在一些示例中,视频译码器可以在所确定的存储器带宽小于或等于(例如,<或=)带宽阈值时,确定存储器带宽满足带宽阈值。在一些示例中,视频译码器可以在所确定的存储器带宽小于(例如,<)带宽阈值时,确定存储器带宽满足带宽阈值。在一些示例中,视频译码器可以在所确定的存储器带宽大于(例如,>)带宽阈值时,确定存储器带宽不满足带宽阈值。在一些示例中,视频译码器可以在所确定的存储器带宽大于或等于(例如,>或=)带宽阈值时,确定存储器带宽不满足带宽阈值。

视频译码器可以以多种方式修改运动补偿方法。例如,视频译码器可以以将减少预测当前块的样本所需的存储器带宽的方式(例如,相对于未修改的运动补偿方法)来修改用于预测当前块的样本的运动补偿方法。对运动补偿方法的一些示例修改包括但不限于修改子块尺寸、修改用于插值的滤波器抽头的数量、使用简单模式对当前块进行译码,或者减少预测当前块的样本所需要的存储器带宽的任何其他修改。以此方式,视频译码器可以基于所确定的存储器带宽是否满足带宽阈值,选择性地修改用于预测视频数据的当前块的样本的运动补偿方法。

为了修改子块尺寸,视频译码器可以将一个或多个子块分组在一起,以便减少当前块的子块的数量。举例来说,视频译码器可以从使用4×4子块改变为使用8×8子块。视频译码器可以使用运动矢量来预测分组块,该运动矢量是使用对应子块(例如,包括在分组块中)的运动矢量导出的。在一些示例中,视频译码器可以通过对对应子块的运动矢量求平均来导出运动矢量。作为一个示例,如果分组块是正方形(宽度和高度相同),则视频译码器可以将所有对应子块的平均运动矢量用作分组块的运动矢量。作为另一示例,视频译码器可以将对应子块的运动矢量的子集的平均值用作分组块的运动矢量。举例来说,视频译码器可以将对角线集合子块(例如,左上和右下,或者右上和左下)的运动矢量的平均值用作分组块的运动矢量。在一些示例中,视频译码器可以将对应子块的特定子块的运动矢量用作导出的运动矢量。修改子块尺寸可能会减少内存带宽,因为可能需要更少的参考区域。

为了修改滤波器抽头的数量,视频译码器可以减少用于插值的滤波器抽头的数量。在一个示例中,可以使用4抽头色度插值滤波器代替原始的8抽头亮度插值滤波器来对亮度分量进行插值。通过减少滤波器抽头的数量,视频译码器可以减小参考区域的尺寸(例如,由于方程式(6)和(8)中的interpolationX和/或等式(7)和(9)中的interpolationY将减小)。

视频译码器可以使用选择性修改的运动补偿方法,从多个参考块的样本预测视频数据的当前块的样本。举例来说,视频译码器可以获得(例如,从存储器)多个参考块的样本,并且将所获得的样本添加到残差数据以重构当前块的样本。

图9是示出根据本公开的一种或多种技术从亮度运动矢量确定色度运动矢量的概念图。如上所述,视频数据的当前块可以包括亮度块和对应的色度块。在颜色格式为4:2:2或4:2:0的情况下,色度块的尺寸可能是亮度块的尺寸的一半。如图9中所示,色度子块904可以对应于亮度块900,并且亮度块900可以被划分为亮度子块902A-902D(统称为“亮度子块902”)。可以基于亮度子块902在亮度块900内的相对位置来引用亮度子块902。举例来说,亮度子块902A可以被称为左上(TL)子块,亮度子块902B可以被称为作为右上(TR)子块,亮度子块902C可被称为左下(BL)子块,亮度子块902D可被称为右下(BR)子块。在图9的示例中,亮度块900可以是8×8个样本,色度子块904和每个亮度子块902可以是4×4个样本。

视频译码器(例如,视频编码器200和/或视频解码器300)可以获得每个亮度子块902的相应亮度运动矢量。举例来说,视频译码器可以获得用于亮度子块902A的第一亮度MV、用于亮度子块902B的第二亮度MV、用于亮度子块902C的第三亮度MV和用于亮度子块902D的第四亮度MV。在一些示例中,视频译码器可以基于亮度块900的仿射运动模型来获得亮度MV。

视频译码器可以基于亮度MV确定用于色度子块904的色度MV。根据本公开的一种或多种技术,而不是基于每个的MV和每个亮度子块确定色度MV,视频译码器可以基于亮度子块的子集的MV确定色度MV。在一些示例中,亮度子块的子集可以包括两个对角定位的亮度子块。作为一个示例,视频译码器可以基于亮度子块902A的MV和亮度子块902D的MV(例如,左上和右下子块)来确定色度MV。作为另一个示例,视频译码器可以基于亮度子块902B的MV和亮度子块902C的MV(例如,右上和左下子块)来确定色度MV。

如上所述,视频译码器可以基于亮度子块的子集的MV来确定色度MV。举例来说,视频译码器可以将色度MV确定为亮度子块的子集的MV的平均值。为了说明,将(vx0,vy0)和(vx1,vy1)表示为来自所选子块的用于进行平均的两个MV。在一个示例中,视频译码器可以将平均执行为((vx0+vx1)>>1,(vy0+vy1)>>1)。在另一示例中,视频译码器可以将平均执行为((vx0+vx1+1)>>1,(vy0+vy1+1)>>1)。在另一示例中,视频译码器可以将平均执行为((vx0+vx1)/2,(vy0+vy1)/2)。在另一示例中,视频译码器可以将平均执行为((vx0+vx1+1)/2,(vy0+vy1+1)/2)。

在一些示例中,视频译码器可以通过平均对应亮度块的高精度运动矢量来导出色度子块的MV(例如,以高精度水平)。视频译码器可以用运动矢量舍入过程执行平均。其中(vxHi,vhHi)是第i个亮度块的高精度运动矢量,视频译码器可以如下用四个亮度块来计算运动矢量之和:

(sumX,sumY)=(vxH0+vxH1+vxH2+vxH3,vhH0+vhH1+vhH2+vhH3)

如上所述,视频译码器可以使用两个对角线块确定运动矢量之和。作为一个示例,在两个对角线块包括左上子块和右下子块的情况下,视频译码器可以如下计算总和运动矢量:

(sumX,sumY)=(vxH0+vxH3,vhH0+vhH3)

作为另一个示例,在两个对角线块包括右上子块和左下子块的情况下,视频译码器可以如下计算总和运动矢量:

(sumX,sumY)=(vxH1+vxH2,vhH1+vhH2)

视频译码器可以舍入运动矢量之和以形成色度块(mvScX,mvScY)的缩放的高精度运动矢量。作为一个示例,视频译码器可以如下舍入总和运动矢量:

mvScX=sumX>=0?(sumX+offset)>>nShift:-((-(sumX)+offset)>>nShift)mvScY=sumY>=0?(sumY+offset)>>nShift:-((-(sumY)+offset)>>nShift)其中nShift和offset是可以基于运动矢量(sumX,sumY)的求和所涉及的亮度运动矢量的数量决定的整数。举例来说,如果总和运动矢量是使用四个亮度运动矢量计算出的,则nShift可以被设置为二,并且offset可以是零或二。在另一示例中,如果(sumX,sumY)是两个亮度运动矢量之和,则nShift可以被设置为一,并且offset可以被设置为零或一。

视频译码器可以通过缩小(mvScX,mvScY)来导出色度块的运动矢量。例如,如果亮度运动矢量是1/16像素的精度并且色度运动矢量是1/32像素的精度,则视频译码器可以如下导出色度块的整数运动矢量(imvCX,imvCY):

(imvCX,imvCY)=(mvScX>>5,mvScY>>5)

在一些示例中,前述技术可以用于通常地从其多个小的子块的MV导出用于大的子块的运动补偿的MV。举例来说,视频译码器可以通过对大的子块的对角线处的两个小的子块的MV求平均来导出用于大的子块的运动补偿的MV。

在一些示例中,小的子块的尺寸可以是M×N,而大的子块的尺寸可以是2M×2N。M和N可以是4,但是可以使用M和N的其他值(在某些情况下M可以等于N,在其他情况下M可以不同于N)。如上所述,在大的子块包括四个小的子块的情况下,这四个小的子块可以被称为左上子块、右上子块、左下子块和右下子块。在一个示例中,视频译码器可以通过对左上和右下M×N子块的MV求平均来导出用于2M×2N子块的运动补偿的MV。在另一示例中,视频译码器可以通过对右上和左下M×N子块的MV求平均来导出用于2N×2N子块的运动补偿的MV。

要注意的是,大的子块的尺寸不必须是2M×2N。如果大的子块尺寸是s1*M×s2*N,其中s1和s2分别是行和列中的大的子块中的小的子块的数量,则也可以应用上述技术。举例来说,将(vx0,vy0)和(vx1,vy1)表示为来自所选的用于进行平均的小的子块的两个MV,视频译码器可以将用于大的子块的运动补偿的MV导出为((vx0+vx1)>>1,(vy0+vy1)>>1)。通过将前述技术与使用所有小的子块进行比较,可以看出,本公开的技术可以显着降低计算复杂度。

图4是示出可以执行本公开的技术的示例视频编码器200的框图。提供图4是为了解释的目的并且不应认为是对本公开中广泛示例和描述的技术的约束。出于说明的目的,本公开在诸如开发中的HEVC视频译码标准和H.266视频译码标准的视频译码标准的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频译码标准并且通常可应用于视频编码和解码。

在图4的示例中,视频编码器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可以包括附加的或者替代的处理器或者处理电路以执行这些或其他功能。

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

在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器(除非特别说明如此)或者视频编码器200外部的存储器(除非特别说明如此)。当然,对视频数据存储器230的引用应理解为存储视频编码器200接收的用于编码的视频数据(例如当前块的待编码视频数据)的参考存储器。图1的存储器106还可以对视频编码器200各个单元输出提供临时存储。

示出图4的各个单元以帮助理解由视频编码器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可以执行运动搜索来标识在一个或多个参考图片(例如存储在DPB218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。特别地,运动估计单元222可以根据例如绝对差之和(SAD)、差值平方和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算代表潜在参考块与当前块有多相似的值。运动估计单元222通常可以使用当前块与考虑中的参考块之间的逐样本差异来执行这些计算。运动估计单元222可以标识具有这些计算生成的最低值的参考块,指示与当前块最紧密匹配的参考块。

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

作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于定向模式,帧内预测单元22通常可以数学地组合相邻样本值,并且在当前块上沿定义的方向填充这些计算值来产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算当前块的相邻样本的平均值,并且生成预测块以包括对于预测块的每一个样本所得到的平均值。

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

在模式选择单元202将CU分割为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的PU。如上所述,CU的尺寸可以指CU的亮度译码块的尺寸,而PU的尺寸可以指PU的亮度预测单元的尺寸。假设特定CU的尺寸为2N×2N,则视频编码器200可以支持2N×2N或N×N的PU尺寸用于帧内预测,以及2N×2N、2N×N、N×2N、N×N或类似的对称PU尺寸用于帧间预测。视频编码器200和视频解码器300还可以支持2N×nU、2N×nD、nL×2N和nR×2N的PU尺寸的非对称分割用于帧间预测。

在模式选择单元不将CU进一步分割为PU的示例中,每一个CU可以与亮度译码块和对应的色度译码块相关联。如上所述,CU的尺寸可以指CU的亮度译码块的尺寸。视频编码器200和视频解码器300可以支持2N×2N、2N×N或N×2N的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)译码操作、指数-格伦布译码操作或另一类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未经熵编码的情况下以旁路模式操作。

视频编码器200可以输出比特流,其包括对条带或图片的块进行重构所需的熵编码语法元素。特别地,熵编码单元220可以输出比特流。

上述操作是针对块来描述的。这样的描述应该理解为是用于亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是CU的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度和色度分量。

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

如上所述,并且根据本公开的一种或多种技术,视频译码器(例如,视频编码器200和/或视频解码器300)可以减少用于预测视频数据的样本的存储器带宽的量。在一些实施例中,带宽减小可以通过限制来实现的用于内插的访问的像素数。

作为一种示例性带宽减少技术,视频译码器可以舍入用于4×4CU的合并和AMVP模式的运动矢量(MV)。视频译码器可以舍入合并候选列表和AMVP运动矢量候选列表中的MV候选。在一些示例中,视频译码器可以不发信令通知(例如,在比特流中)第一运动矢量差(MVD)分辨率标志,其指示是否为四分之一亮度样本MV精度。扩展该舍入,对于相应的舍入的MV分量,可以使MVD为整数,因此视频译码器可以发信令通知MVD>>2。视频译码器(诸如视频解码器300)可以根据以下公式重构运动矢量:

MV=[MVP]+(MVD<<2) (18)

其中括号表示舍入操作,MV是运动矢量的值,MVP是运动矢量预测的值,而MVD是运动矢量差的值。MVD解析不受此移位影响,并且可以在重构阶段调整MV。在下面表2中总结了访问的参考像素的数量和最差情况下的带宽的减少。

作为一种示例性带宽减少技术,视频译码器可以将ATMVP模式中的子PU尺寸固定为8×8。当尺寸被设置为4×4时,视频译码器可以访问(例如,从存储器)一个11×11块(121个像素)以执行运动补偿。8×8区域包含四个4×4PU。因此,存储器将被访问四次,并且总的访问点为484个(4×121)。但是,当PU的尺寸被设置为8×8时,视频译码器可能仅需要访问(从存储器)亮度分量的(7+8)×(7+8)=225个点的一个块和两个7×7的色度块。此存储器访问可能只需要执行一次。在下表2中总结了访问的参考像素的数量以及该最差情况下的带宽的减少。如表2中所示,通过将ATMVP的子PU尺寸固定为8×8,相比于PU的尺寸被设置为4×4时访问的点的数量带宽可以减少53.3%。

表2-建议的最差情况带宽减少

在一些示例中,视频译码器可以施加一个或多个约束以减少在仿射模式中用于预测视频数据的样本的存储器带宽的量。作为一个示例,视频译码器可以通过限制仿射控制点之间的运动矢量差(也称为控制点差)来减少用于仿射模式的存储器带宽。举例来说,视频译码器可以确定当前块所需的存储器带宽(例如,基于当前块的控制点)。视频译码器可以将所确定的存储器带宽与预定带宽阈值进行比较(例如,以确保存储器带宽节省不应小于预定存储器带宽节省量)。带宽阈值可以在配置文件中预定义,或者可以作为参数传递给视频译码器。视频译码器可以基于所确定的用于当前块的存储器带宽是否满足带宽阈值而选择地修改用于预测当前块的样本的运动补偿方法。

视频译码器可以以多种方式修改运动补偿方法。作为一个示例,如果确定的带宽(例如,控制点差)小于带宽阈值,则视频译码器可以通过使用4×4子块(即4×4仿射模式)对CU进行仿射测试来修改运动补偿。否则,视频译码器可以使用8×8子块(8×8仿射模式)或者使用SBWidth×SBHeight子块(其中SBWidth或SBHeight大于4)而不是4×4仿射模式对CU进行仿射测试,或者为了满足目标带宽减少而简单地不允许4×4仿射模式。

视频译码器可以分别地向L0或者L1运动方向应用约束。这样,就有可能在任一个运动方向中有4×4子块或者在另一运动方向中有SBWidth×SBHeight。在一些示例中,视频译码器可以对两个运动列表都应用约束以确定子块尺寸,意味着L0和L1二者取决于两个方向是否都满足约束而应该具有相同的子块尺寸。

视频译码器可以执行运动矢量差的归一化。举例来说,由于每个仿射子块的运动矢量是基于CU的尺寸计算的,因此视频译码器可以基于CU的尺寸对运动矢量差进行归一化。在一些示例中,归一化可以简化预测,因为对每个尺寸的限制可以在仿射运动中使4×4子块的利用最大化。

以下是6-参数仿射模型和4-参数仿射模型(例如,如在VTM中使用的)的归一化、限制条件的示例:

基于CU的尺寸(wxh)的运动矢量差的范式的实例可以如下给出:

Norm(v

Norm(v

Norm(v

Norm(v

其中,S是具有固定点实现的缩放因子,而Norm(.)是全像素规模的。也可以应用其它像素分辨率。

如果满足以下条件,则针对6-参数模型测试4×4仿射模式:

|Norm(v

带宽节省可以是对称的。但是,带宽节省应该由(20)中的X和Y的值移位。同样在(20)中,N表示限制的边界。可以调整该值以实现最小化带宽节省。例如,如果对全像素规模应用该操作,则为了确保带宽节省不应小于50%,X、Y和N分别被设置为S、S和S*7/2。对于分数像素规模,应该相应调整X、Y和N的值。N也可以取决于块尺寸,块尺寸越大,可以使用越大的N(例如,由于更大的块尺寸有更多的4×4子块,因此可以实现更大的重叠区域)。

4-参数仿射模型是6-参数模型的特殊情况,在这种情况中只考虑两个控制点以获取子仿射块的运动矢量。在此模型中,(v

(v

(v

在此情况中,(v

Norm(v

Norm(v

通过应用(22)或(19),4-参数仿射模型的限制可以如下给出:

|Norm(v

在一些示例中,视频译码器可以对4-参数仿射模式应用其它限制(例如,约束)。作为一个示例,视频译码器可以应用如下限制:

|(v

其中,条件左侧的(+w)指示带宽减少是对称的,但由w的因子移位。术语log 2(h/8)是表示h对带宽节省的效果的偏置归一化因子。w/8是块尺寸的归一化。N表示带宽节省水平。条件(24)可以通过针对具有w为8和各种h的块计算出的带宽节省(%)的示例来确认。

针对4-参数仿射模型的附加的或者替代的限制可以如下给出:

|Norm(v

其中,X、Y和N对应于带宽节省水平。

针对4-参数仿射模型的附加的或者替代的限制可以如下定义:

c

c

如果同时满足c

在又另一个附加的或替代的限制方法中:变量blkW指定该块的宽度,且变量blkH指定该块的高度。变量subBlkW指定用于仿射运动补偿的子块的默认宽度。变量subBlkH指定用于仿射运动补偿的子块的默认高度。在此示例中,如果满足限制条件,则用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH);否则,用于仿射运动补偿的子块具有尺寸(subBlkW*2,subBlkH*2)。典型地,subBlkW=4且subBlkH=4,但它们可以具有其他整数值。

针对6-参数仿射模型的一些示例限制包括:

在一个示例中,

当应用归一化时,限制变为:

-subBlkW×S≤Norm(v

-S<Norm(v

-S<Norm(v

-S≤Norm(v

-blkW*S≤Norm(v

-blkH*S≤Norm(v

在另一个示例中,“小于或等于”操作“≤”可以由“小于”操作“<”替代。举例来说:

方程式(28)可以由以下替代

方程式(31)至(33)可以由以下替代

视频译码器可以类似地应用上述归一化技术。其中的运动矢量分辨率是在子像素级别并且v

在4-参数仿射模型中,视频译码器可以如下设置(v

(v

(v

在这种情况中,(v

Norm(v

Norm(v

然后,可以相应地确立4-参数仿射模型的限制。

下面描述用于单向预测的附加的或替代的限制。用于单向预测的限制可以与上面描述的相同。该限制也可以是其它替代限制。

在一个示例中,该限制包括方程式(28)和(29)。如果满足限制条件,则用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH)。否则,用于仿射运动补偿的子块具有尺寸(subBlkW*2,subBlkH)。

在又另一个示例中,该限制包括方程式(40)和(29)。如果满足限制条件,则用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH)。否则,用于仿射运动补偿的子块具有尺寸(subBlkW*2,subBlkH)。

在又另一个示例中,该限制包括方程式(30)和(31)。如果满足限制条件,则用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH)。否则,用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH*2)。

在又另一个示例中,该限制包括方程式(30)和(41)。如果满足限制条件,则用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH)。否则,用于仿射运动补偿的子块具有尺寸(subBlkW,subBlkH*2)。另外,可以针对上述示例应用归一化。

视频编码器200表示配置为对视频数据进行编码的设备的示例,该设备包括配置为存储视频数据的存储器,以及一个或多个处理单元,其实现在电路中并且被配置为获取视频数据的当前块的CPMV值;确定访问基于CPMV的值导出的多个参考块的样本所需的存储器带宽是否满足带宽阈值;基于所确定的存储器带宽是否满足带宽阈值,选择性地修改用于预测视频数据的当前块的样本的运动补偿方法;以及使用选择性修改的运动补偿方法,从多个参考块的样本预测视频数据的当前块的样本。

图5是示出可执行本公开的技术的示例视频解码器300的框图。提供图5是出于解释的目的,而非限制本公开中广泛示例和描述的技术。为了说明的目的,本公开描述了根据JEM、VCC和HEVC的技术描述的视频解码器300。然而,本公开的技术可以由配置为根据其他视频译码标准操作的视频译码设备来执行。

在图5的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。CPB存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和DPB 314的任何一个或全部可以在一个或多个处理器中或者在处理电路中实现。此外,视频解码器300可以包括附加的或替代的处理器或处理电路以执行这些和其他功能。

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

CPB存储器320可以存储将由视频解码器300的组件进行解码的视频数据,诸如编码视频比特流。例如,可以从计算机可读介质110(图1)获得存储在CPB存储器320中的视频数据。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一起存储数据。同样,当视频解码器300的某些或全部功能在将由视频解码器300的处理电路执行的软件实现时,存储器120可以存储将由视频解码器300执行的指令。

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

视频解码器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(图4)所描述的方式基本上相似的方式来执行帧间预测过程。

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

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

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

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

以此方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括配置为存储视频数据的存储器,以及一个或多个处理单元,其实现在电路中并且被配置为获取视频数据的当前块的的CPMV值;确定访问基于CPMV的值导出的多个参考块的样本所需的存储器带宽是否满足带宽阈值;基于所确定的存储器带宽是否满足带宽阈值,选择性地修改用于预测视频数据的当前块的样本的运动补偿方法;以及使用选择性修改的运动补偿方法,从多个参考块的样本中预测视频数据的当前块的样本。

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

在此示例中,视频编码器200最初预测当前块(1050)。例如,视频编码器200可以形成用于当前块的预测块。如上所述,在一些示例中,视频编码器200可以使用方式模式预测当前块。根据本公开的一种或多种技术,视频编码器200可以执行各种技术来管理用于预测视频数据的当前块的存储器带宽。下面参考图11讨论这种存储器带宽管理技术的一个示例。

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

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

视频解码器300可以接收当前块的经熵编码数据,诸如经熵编码的预测信息和与当前块对应的残差块的系数的经熵编码数据(1170)。视频解码器300可以对经熵编码数据进行解码以确定用于当前块的预测信息并再现残差块的系数(1172)。视频解码器300可以预测当前块(1174),例如,使用用于当前块的预测信息所指示的帧内或帧间预测模式,以计算用于当前块的预测块。如上所述,在一些示例中,视频解码器300可以使用仿射模式预测当前块。根据本公开的一种或多种技术,视频解码器300可以执行各种技术来管理用于预测视频数据的当前块的存储器带宽。下面参考图12讨论这种存储器带宽管理技术的一个示例。

然后,视频解码器300可以逆扫描所再现的系数(1176),以创建经量化的变换系数的块。然后,视频解码器300可以对系数进行逆量化和逆变换以产生残差块(1178)。视频解码器300可以通过组合预测块和残差块来最终解码当前块(1180)。

图12是示出根据本公开的一种或多种技术用于管理用于预测视频数据的存储器带宽的示例方法的流程图。图12的技术可以由视频译码器(诸如图1和图4的视频编码器200和/或图1和图5的视频译码器300)执行。为了解释说明的简单起见,图12的技术被描述为由图1和图5的视频解码器300执行。

视频解码器300可以获得视频数据的当前块的控制点运动矢量(CPMV)的值(1202)。举例来说,视频解码器300可以获得图6的块600的

视频解码器300可以确定访问基于CPMV的值导出的参考块的样本所需的存储器带宽(1204)。举例来说,在当前块是图8的块806的情况下,视频解码器300可以确定访问参考区域810的样本(包括参考块和用于插值的附加样本)所需的存储器带宽。如上所述,参考区域810由子块运动矢量mv

在一些示例中,视频解码器300可以通过基于CPMV的值确定包括多个参考块的最小区域的尺寸来确定存储器带宽。例如,视频解码器300可以确定图8的区域820(其是包括参考区域810的最小区域)的尺寸。如上所述,在一些示例中,视频解码器300可以使用方程式(6)-(15)来确定区域820的尺寸。基于最小区域的尺寸,视频解码器300可以将最小区域的面积确定为访问参考块的样本所需的存储器带宽。举例来说,视频解码器300可以将区域820的面积确定为访问基于CPMV的值导出的参考块的样本所需的存储器带宽。如上所述,在一些示例中,视频解码器300可以使用方程式(16)或等式(17)来确定区域820的面积。

视频解码器300可以确定所确定的存储器带宽是否满足带宽阈值(1206)。如上所述,带宽阈值可以是预定带宽阈值。在一些示例中,视频解码器300可以在所确定的存储器带宽小于或等于(例如,<或=)带宽阈值时,确定存储器带宽满足带宽阈值。在一些示例中,视频解码器300可以在所确定的存储器带宽小于(例如,<)带宽阈值时,确定存储器带宽满足带宽阈值。在一些示例中,视频解码器300可在所确定的存储器带宽大于(例如,>)带宽阈值时,确定存储器带宽不满足带宽阈值。在一些示例中,视频解码器300可在所确定的存储器带宽大于或等于(例如,>或=)带宽阈值时,确定存储器带宽不满足带宽阈值。

视频解码器300可以基于所确定的存储器带宽是否满足带宽阈值,选择性地修改用于预测视频数据的当前块的样本的运动补偿方法。作为一个示例,视频解码器300可以响应于确定存储器带宽不满足带宽阈值(1206、1208的“否”分支)而修改运动补偿方法。作为另一个示例,视频解码器300可以响应于确定存储器带宽确实满足带宽阈值(1206、1210的“是”分支)来维持(例如,不修改)该运动补偿方法。在视频解码器300确定要修改运动补偿方法的情况下,视频解码器300可以以任何方式修改运动补偿方法。通常,通过修改运动补偿方法,视频解码器300将减少预测当前块的样本所需的存储器带宽(即,访问当前块的预测器块的样本所需的存储器带宽)。

视频解码器300可以使用选择性修改的运动补偿方法来预测视频数据的当前块的样本(1212)。举例来说,视频解码器300的预测处理单元304可以从存储器(例如,视频解码器300的经解码图片缓冲器314)访问基于CPMV的值导出的多个参考块的样本。视频解码器300可以基于参考块的样本和残差数据来确定当前块的样本的值。

如上所述,在一些示例中,视频解码器300可以将带宽减少技术分别应用于每个预测方向(例如,分别应用于L0或L1运动)。举例来说,当当前块被双向预测时,视频解码器300可以获得用于第一预测方向(例如,L0)的当前块的CPMV值,并且获得用于第二预测方向(例如,L1)的当前块的CPMV值。视频解码器300可以独立地测试每个预测方向的带宽要求。举例来说,视频解码器300可以确定访问基于用于第一预测方向的CPMV的值导出的多个参考块的样本所需的存储器带宽是否满足带宽阈值;以及确定访问基于用于第二预测方向的CPMV的值导出的多个参考块的样本所需的存储器带宽是否满足带宽阈值。基于测试,视频解码器300可以独立地选择性地修改用于每个预测方向的运动补偿方法。举例来说,视频解码器300可以基于所确定的用于第一预测方向的存储器带宽是否满足带宽阈值来选择性地修改运动补偿方法,该运动补偿方法用于在第一预测方向上预测视频数据的当前块的样本;以及所确定的用于第二预测方向的存储器带宽是否满足带宽阈值来选择性地修改用于在第二预测方向上预测视频数据的当前块的样本的运动补偿方法。结果,视频解码器300可以分别且独立地修改用于两个预测方向的运动补偿方法(例如,改变一个而不改变另一个、同时改变两个、都不改变)。

在一些示例中,视频解码器300基于相应块的存储器带宽需求来独立地选择性地调整用于预测每个相应块的运动补偿方法。举例来说,在译码单元(CU)包括多个8×8子块的情况下,视频解码器300可以针对多个子块中的每一子块分别确定访问相应子块的相应多个参考块的样本所需的相应存储器带宽是否满足带宽阈值。视频解码器300可以基于用于特定子块的相应存储器带宽是否满足带宽阈值来选择性地修改用于预测相应子块的样本的运动补偿方法。换句话说,视频解码器300可以独立于其他子块而选择性地调整用于每个子块的运动补偿方法。这样,取决于每个子块的存储器带宽要求,视频解码器300可以调整用于CU的一些子块的运动补偿方法,而同时不调整用于同一CU的其他子块的运动补偿方法。

然而,在一些示例中,可能不希望视频解码器300基于相应块的存储器带宽需求而独立地选择性地调整用于预测每个相应块的运动补偿方法。举例来说,评估和测试每个子块的存储器带宽可能是计算密集的,这可能会减慢解码过程。

根据本公开的一种或多种技术,视频解码器300可以基于多个子块中的特定子块的存储器带宽需求来选择性地调整用于预测多个子块的运动补偿方法。举例来说,在一个CU包括多个8×8子块的情况下,视频解码器300可以针对该多个子块的特定子块确定预测该特定子块所需要的相应存储器带宽是否满足带宽阈值。基于用于该特定子块的存储器带宽是否满足带宽阈值,视频解码器300可以修改用于预测该多个子块的全部的样本的运动补偿方法。换句话说,视频解码器300可以基于单个子块的评估来选择性地调整每个子块的运动补偿方法。以此方式,视频解码器300可以避免必须分别确定每个子块的存储器带宽需求。

图13是示出根据本公开的一个或多个方面的简化的存储器带宽测试的概念图。如图13中所示,译码单元(CU)1304包括四个子块1306A-1306D(统称为“子块”)。举例来说,CU1304可以是16×16CU,且每个子块1306可以是一个8×8译码块。如图13中所示,每个子块1306可以包括它们自己的子块。举例来说,子块1306可以被划分为四个子块,这可以类似于图8的子块808。

如上所述,视频译码器(例如,视频编码器200和/或视频解码器300)可以独立地或依赖性地选择性地调整CU的子块的运动补偿。为了独立地选择性地调整运动补偿,视频译码器可以分别确定每个子块1306的存储器带宽需求。举例来说,视频译码器可以确定用于子块1306A的第一存储器带宽、用于子块1306B的第二存储器带宽、用于子块1306C的第三存储器带宽和用于子块1306D的第四存储器带宽。视频译码器可以基于相应子块的存储器带宽来分别确定是否调整用于子块1306的每个相应子块的运动补偿方法。举例来说,视频译码器可以基于第一存储器带宽确定是否调整用于子块1306A的运动补偿方法,基于第二存储器带宽确定是否调整用于子块1306B的运动补偿方法,基于第三存储器带宽确定是否调整用于子块1306C的运动补偿方法,以及基于第四存储器带宽确定是否调整用于子块1306D的运动补偿方法。

为了依赖性地调整运动补偿,视频译码器可以确定子块1306的单个子块的存储器带宽需求,并且基于该单个子块的存储器带宽需求选择性地调整用于所有子块1306的运动补偿方法。举例来说,视频译码器可以确定子块1306A的存储器带宽,并且基于子块1306A的存储器带宽需求选择性地调整用于所有子块1306的运动补偿方法。在一些示例中,视频译码器可以基于位置选择要测试哪个子块。举例来说,视频译码器可以选择左上子块以进行测试(例如,图13中的子块1306A)。以此方式,视频译码器可以避免必须确定子块1306B、1306C和1306D的存储器带宽需求。

图14是示出根据本公开的一种或多种技术用于管理用于预测视频数据的存储器带宽的示例方法的流程图。图14的技术可以由视频译码器(诸如图1和图4的视频编码器200和/或图1和图5的视频解码器300)执行。为了解释说明的简单起见,图14的技术被描述为由图1和图5的视频解码器300执行。

视频解码器300可以获得针对被选择用于使用仿射运动补偿进行译码的视频数据的当前块的多个亮度子块的亮度运动矢量的值(1402)。举例来说,视频解码器300可以获得针对图9的亮度子块902中的每一个的相应运动矢量的值。

视频解码器300可以基于该多个亮度子块的子集的亮度运动矢量的值,确定对应于该多个亮度子块的色度子块的色度运动矢量的值(1404)。如上所述,多个亮度子块的子集可以包括两个对角定位的亮度子块(例如,排除多个子块中的所有其他亮度子块)。举例来说,视频解码器300可以基于亮度子块902A的亮度运动矢量的值和亮度子块902D的亮度运动矢量的值确定色度子块904的色度运动矢量的值。

如上所述,在一些示例中,视频解码器300可以将色度运动矢量的值确定为多个亮度子块的子集的亮度运动矢量的值的平均。举例来说,视频译码器300可以确定多个亮度子块的子集的亮度运动矢量的值之和,并且将所确定的和舍入以计算色度运动矢量的值。在一些示例中,视频解码器300可以对称地执行舍入。举例来说,视频解码器300可以如下确定多个亮度子块的子集的亮度运动矢量的值的平均:

sMV=MV

MV

MV

其中,MV

视频解码器300可以使用所确定的运动矢量来预测亮度子块和色度子块的样本的值。作为一个示例,视频解码器300可以使用仿射运动补偿基于亮度运动矢量的相应值来预测多个亮度子块中的每个亮度子块的相应样本(1406)。举例来说,视频解码器300可以基于所确定的亮度子块902的亮度运动矢量预测亮度子块902的样本的值。作为另一个示例,视频解码器300可以使用仿射运动补偿,基于色度运动矢量的值预测色度子块的样本(1408)。举例来说,视频解码器300可以基于所确定的色度子块904的色度运动矢量来预测色度子块904的样本的值。

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

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

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

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

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

已经描述了各种示例。这些和其它示例在所附权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号