低复杂度样本自适应偏移(SAO)译码的制作方法

文档序号:13081565阅读:362来源:国知局
低复杂度样本自适应偏移(SAO)译码的制作方法与工艺

本申请案主张2015年3月6日申请的美国临时专利申请案第62/129,628号的权益,所述申请案的全部内容以引用的方式并入本文中。

本公开涉及视频编码,并且更确切地说涉及用于样本自适应偏移(sao)偏移译码的技术。



背景技术:

数字视频能力可并入到广泛范围的装置中,包含数字电视、数字直播系统、无线广播系统、个人数字助理(pda)、膝上型或桌上型计算机、平板计算机、电子书阅读器、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话、所谓的“智能电话”、视频电话会议装置、视频流式传输装置和类似物。数字视频装置实施视频压缩技术,例如由mpeg-2、mpeg-4、itu-th.263、itu-th.264/mpeg-4第10部分、高级视频译码(avc)、最近完成的itu-th.265、高效视频译码(hevc)标准以及目前正在开发的各种hevc扩展定义的标准中描述的那些技术。视频装置通过实施此类视频压缩技术可更有效地发射、接收、编码、解码和/或存储数字视频信息。

视频压缩技术执行空间(图片内)预测和/或时间(图片间)预测来减少或去除视频序列中固有的冗余。对于基于块的视频译码来说,视频切片(即,视频帧或视频帧的一部分)可分割成视频块,视频块也可被称作树块、译码单元(cu)和/或译码节点。图片的经帧内译码(i)切片中的视频块是使用相对于同一图片中的相邻块中的参考样本的空间预测来编码。图片的经帧间译码(p或b)切片中的视频块可使用相对于同一图片中的相邻块中的参考样本的空间预测或相对于其它参考图片中的参考样本的时间预测。图片可被称作帧,且参考图片可被称作参考帧。

空间或时间预测产生待译码的块的预测性块。残余数据表示待译码的原始块与预测性块之间的像素差。经帧间译码块是根据指向形成预测性块的参考样本块的运动向量和指示经译码块与预测性块之间的差的残余数据来编码的。经帧内译码块是根据帧内译码模式和残余数据来编码的。为了进一步压缩,可将残余数据从像素域变换到变换域,从而产生残余变换系数,可接着量化所述残余变换系数。可扫描最初布置成二维阵列的经量化变换系数,以便产生变换系数的一维向量,且可应用熵译码以实现甚至更多压缩。



技术实现要素:

本公开描述涉及样本自适应偏移(sao)滤波的技术,且更确切地说,本公开描述用于降低与在视频编码过程中导出sao信息相关的复杂度的技术。

在一个实例中,编码视频数据的方法包含根据样本自适应偏移(sao)类型的集合对视频数据进行编码;执行多个译码遍次以测试第一视频数据块的sao类型的子集,其中所述子集小于所述集合;从所述sao类型子集选择用于所述第一视频数据块的sao类型;和产生包含在经编码位流中的用于识别所述第一块的所述经选择的sao类型的信息。

在一个实例中,用于编码视频数据的装置包含存储器,其配置成存储视频数据;和一或多个处理器,其配置成根据样本自适应偏移(sao)类型的集合编码视频数据;执行多个译码遍次以测试第一视频数据块的sao类型的子集,其中所述子集小于所述集合;从所述sao类型子集选择用于所述第一视频数据块的sao类型;且产生包含在经编码位流中的用于识别所述第一块的所述经选择的sao类型的信息。

在另一个实例中,用于编码视频数据的设备包含用于根据样本自适应偏移(sao)类型的集合编码视频数据的装置;用于执行多个译码遍次以测试第一视频数据块的sao类型的子集的装置,其中所述子集小于所述集合;用于从所述sao类型子集选择用于所述第一视频数据块的sao类型的装置;以及用于产生包含在经编码位流中的用于识别所述第一块的所述经选择的sao类型的信息的装置。

在另一个实例中,计算机可读存储媒体存储指令,在所述指令由一或多个处理器执行时,使得所述一或多个处理器根据样本自适应偏移(sao)类型的集合编码视频数据;执行多个译码遍次以测试第一视频数据块的sao类型的子集,其中所述子集小于所述集合;从所述sao类型子集选择用于所述第一视频数据块的sao类型;且产生包含在经编码位流中的用于识别所述第一块的所述经选择的sao类型的信息

在附图和以下描述中阐明本公开的一或多个实例的细节。其它特征、目标和优点将从所述描述、图式和权利要求书变得显而易见。

附图说明

图1是说明可利用本公开中描述的技术的实例视频编码和解码系统的框图。

图2a、2b、2c和2d是说明用于样本自适应偏移译码的实例边缘偏移分类的概念图。

图3是说明用于样本自适应偏移译码的实例频带偏移分类的概念图。

图4a是说明可实施本公开中所描述的技术的实例视频编码器的框图。

图4b是说明可实施本公开中所描述的技术的实例视频编码器的替代视图的框图。

图5是说明可实施本公开中所描述的技术的实例视频解码器的框图。

图6到13是说明用于确定作为视频编码过程的一部分的sao信息的技术的流程图。

具体实施方式

本公开描述涉及样本自适应偏移(sao)滤波的技术,且更确切地说,本公开描述用于降低与在视频编码过程中导出sao信息相关的复杂度的技术。如将在下文更详细地描述,如本公开中所使用的sao信息一般是指偏移类型和偏移值中的一个或两个。sao滤波是在视频译码中使用的一类环路滤波。一般来说,将偏移值添加到视频帧(例如,经重构图像)中的像素可在一些情况下改进译码而不大大提高存储或发射经编码的视频数据所需要的位开销。由sao滤波潜在产生的译码改进可能是(例如)在编码视频数据时可达成的较好速率失真(rd)折衷,和/或含有相对于给定比特率的原始视频图像的较少失真的经解码视频图像。sao技术允许取决于像素(或块)分类度量(例如边缘度量、频带度量或其它类型的度量)而将不同偏移值应用于不同像素(或像素块)。

在一些实施方案中,sao滤波器单元可配置成进行两种类型的sao滤波,在本公开中一般指频带偏移滤波和边缘偏移滤波。sao滤波器单元有时还可不应用偏移,如将在下文更详细地解释,无偏移可本身被视为第三类型的sao滤波。可显式地或隐式地将sao滤波器应用的偏移滤波的类型用信号发送到视频解码器。当应用边缘偏移滤波时,像素可基于编码单元的边缘信息而分类,且可基于边缘分类而确定像素的偏移。如下文将更详细地解释,在像素的值与像素的八个相邻像素中的两个相比较时,典型地存在四个基于边缘的sao的变量。哪两个像素用以对比取决于哪个变量使用基于边缘的偏移。基于像素相对于相邻像素的量值差,将偏移添加到像素值。

在应用频带偏移滤波时,可基于像素值(例如强度值)将像素分类成不同频带,其中每一个频带具有相关的偏移。频带包含像素值范围。举例来说,0到255范围的像素值可划分成32个相等频带(标记为0到31),以使得对于全部三十二个频带,像素值0到7是第一频带,像素值8到15是第二频带,像素值16到23是第三频带,等等。所述频带可用于确定多个不同偏移值的哪个具体偏移值应用于像素或像素组。举例来说,如果像素的值为10(其在第二频带内,即,以上实例中的值8到15),那么可将与第二频带相关的偏移添加到像素值。

出于用信号发送和产生各个频带的偏移的目的,所述频带可分组成两个或更多个组。对于频带偏移滤波,像素可(例如)分类成如上文所描述的三十二个频带(频带0到31),且所述频带可分组成两个组(例如,两组十六个频带、一组四个频带和一组二十八个频带、一组八个频带和一组二十四个频带,或其它此类分组)。频带的分组可用于确定频带的偏移值在经编码视频位流中用信号发送的次序,且/或可用以确定特定频带是否具有除零外的偏移值。可使用差分译码技术来用信号发送频带的偏移,在所述差分译码技术中,将当前值作为当前值与先前值之间的差来用信号发送。为了减小信令开销,仅少量频带(例如,四个频带)可与非零偏移值相关,而假设全部其它频带的偏移值为零。

如以高效视频译码hevc标准实施,可在切片层级处启用和禁用sao滤波,且此外,可对于亮度和色度样本单独地启用和禁用sao滤波。举例来说,对于视频数据的特定切片,亮度和色度样本都可经sao滤波;亮度或色度样本可都不经sao滤波;或者亮度和色度样本中的一个可经sao滤波而另一个可不经sao滤波。当针对切片启用sao滤波时,那么在最大译码单元lcu层级用信号发送sao类型和偏移值。如上文所介绍,sao类型可包含频带偏移滤波、边缘偏移滤波或无sao滤波。因此,即使sao滤波针对特定切片经启用,所述切片的一些lcu也可不经sao滤波(即一些lcu将具有无sao滤波的sao类型)。在一些情况下,可将sao类型和偏移值与一系列合并旗标用信号发送,其中第一合并旗标的真值指示lcu的偏移类型和偏移值是从左侧相邻lcu继承,且第二合并旗标的真值指示sao类型和偏移值是从上方相邻lcu继承。如果两个合并旗标为假,那么为lcu发送新的sao类型和新的偏移值。

应理解尽管hevc在切片层级处启用和禁用sao滤波且在lcu层级处用信号发送sao信息,但预期本公开的技术可以在其中此类信令发生在不同层级处的sao配置中或在一起使用不同信令机构的sao配置中实施。

对于lcu用信号发送sao信息(例如,sao类型和多个偏移值)。基于sao类型,视频解码器基于逐像素来确定为每个像素添加来自多个偏移值中的哪个偏移值。如下文将更详细地解释,对于特定像素或像素块(例如,lcu中的2×2块)应用哪个偏移值的确定可基于对于像素块的特定像素所确定的边缘和频带分类来确定。

如上所提到,将偏移值添加到视频帧中的像素可提高经重构视频质量的质量,而不大大提高存储或发射经编码的视频数据所需要的位开销。然而,sao可大大增加视频编码器的复杂度。视频编码器确定如何通过执行多个译码遍次来编码视频数据的特定部分,其中每一个译码遍次利用不同的译码工具(例如,预测性模式、变换模式、滤波器)或利用相同的但具有不同参数的译码工具。如本公开中所使用,译码遍次一般是指使用某一组译码工具和参数来完全或部分编码部分视频数据以便测试(例如,分析所获得的rd折衷)那些译码工具和参数。基于多个译码遍次,视频编码器确定提供适宜rd折衷的一组译码工具和译码参数。由于sao包含多个sao类型,其中的每一个可用多个偏移值实施,因此视频编码器可必须参与计算上复杂的处理以确定对于特定视频快使用哪个sao类型和哪个偏移值。本公开引入可潜在地降低确定sao信息的复杂度的技术。

在描述各种技术中,本公开可使用例如第一、第二、第三等术语以在块、像素、sao信息等之间进行区分。除非另外规定,否则不应假设此类术语暗示次序关系、时间关系,或其它此类关系。实际上,此类术语仅为用于区分不同块、像素、sao信息等的标记。

图1是说明可利用本公开中所描述的sao编码技术的实例视频编码和解码系统10的框图。如图1中所示,系统10包含产生稍后由目的地装置14解码的经编码视频数据的源装置12,且如将在下文更详细地描述,对视频数据的此编码和解码可包含译码供sao滤波使用的偏移值。源装置12和目的地装置14可包括广泛范围的装置中的任一个,包含桌上型计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手持机(例如所谓的“智能”电话)、所谓的“智能”平板电脑、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、视频流式传输装置或类似物。在一些情况下,可装备源装置12和目的地装置14以用于无线通信。

目的地装置14可通过链路16接收待解码的经编码视频数据。链路16可包括能够将经编码视频数据从源装置12移动到目的地装置14的任何类型的媒体或装置。在一个实例中,链路16可包括使得源装置12能够实时将经编码视频数据直接发射到目的地装置14的通信媒体。经编码视频数据可根据通信标准(例如无线通信协议)而调制,且经发射到目的地装置14。通信媒体可包括任何无线或有线通信媒体,例如射频(rf)频谱或一或多个物理发射线路。通信媒体可形成基于数据包的网络(例如,局域网、广域网或全球网络,例如因特网)的部分。通信媒体可包含路由器、交换机、基站或可用于促进从源装置12到目的地装置14的通信的任何其它设备。

替代地,可将经编码数据从输出接口22输出到存储装置19。类似地,可以通过输入接口从存储装置19存取经编码数据。存储装置19可包含多种分布式或本地存取的数据存储媒体中的任一个,例如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存存储器、易失性或非易失性存储器或用于存储经编码视频数据的任何其它合适的数字存储媒体。在另一实例中,存储装置19可对应于文件服务器或可保持由源装置12产生的经编码视频的另一中间存储装置。目的地装置14可经由流式传输或下载从存储装置19存取所存储的视频数据。文件服务器可以是能够存储经编码视频数据并将经编码视频数据发射到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站)、ftp服务器、网络附接式存储(nas)装置或本地磁盘驱动器。目的地装置14可经由任何标准数据连接(包含因特网连接)来存取经编码视频数据。此连接可包含适合于存取存储在文件服务器上的经编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或两个的组合。经编码视频数据从存储装置19的传输可以是流式传输、下载传输或两个的组合。

本公开的技术未必限于无线应用或设置。所述技术可应用于视频译码以支持多种多媒体应用中的任一种,例如空中电视广播、有线电视传输、卫星电视传输、流式视频传输(例如,经由因特网)、编码数字视频以存储于数据存储媒体上、解码存储于数据存储媒体上的数字视频,或其它应用。在一些实例中,系统10可配置成支持单向或双向视频传输,以支持例如视频流式传输、视频重放、视频广播和/或视频电话的应用。

在图1的实例中,源装置12包含视频源18、视频编码器20和输出接口22。在一些情况下,输出接口22可包含调制器/解调器(调制解调器)和/或发射器。在源装置12中,视频源18可以包含例如视频捕获装置(例如,摄像机)、含有先前所捕获的视频的视频存档、用于从视频内容提供者接收视频的视频馈入接口和/或用于产生计算机图形数据以作为源视频的计算机图形系统的源,或此类源的组合。作为一个实例,如果视频源18是摄像机,那么源装置12和目的地装置14可形成所谓的相机电话或视频电话。然而,本公开中所描述的技术可大体上适用于视频译码,且可应用于无线和/或有线应用。

可由视频编码器20编码所捕获视频、预捕获的视频或计算机产生的视频。经编码视频数据可经由源装置12的输出接口22直接发射到目的地装置14。还可(或替代地)将经编码视频数据存储到存储装置19上以供稍后由目的地装置14或其它装置存取以用于解码和/或回放。

目的地装置14包含输入接口28、视频解码器30和显示装置32。在一些状况下,输入接口28可包含接收器和/或调制解调器。目的地装置14的输入接口28经由链路16接收经编码视频数据。经由链路16传达或在存储装置19上提供的经编码视频数据可包含由视频编码器20产生的多种语法元素以供例如视频解码器30等视频解码器用于解码视频数据。此类语法元素可与在通信媒体上发射、存储于存储媒体上或存储文件服务器的经编码视频数据包含在一起。

显示装置32可与目的地装置14集成或在目的地装置14外部。在一些实例中,目的地装置14可包含集成式显示装置,并且还配置成与外部显示装置介接。在其它实例中,目的地装置14可以是显示装置。一般来说,显示装置32将经解码视频数据显示给用户,且可包括多种显示装置中的任一种,例如液晶显示器(lcd)、等离子体显示器、有机发光二极管(oled)显示器或另一类型的显示装置。

视频编码器20和视频解码器30可根据视频压缩标准(例如最近完成的hevc标准,以及当前正在开发的其各种扩展)来操作。或者,视频编码器20和视频解码器30可根据其它专有或业界标准操作,所述标准例如itu-th.264标准,或者被称作mpeg-4第10部分高级视频译码(avc),或此类标准的扩展。然而,本公开的技术不限于任何特定译码标准。视频压缩标准的其它实例包含mpeg-2和itu-th.263。

尽管图1中未展示,但在一些方面中,视频编码器20和视频解码器30可各自与音频编码器和解码器集成,且可包含适当多路复用器-多路分用器(mux-demux)单元或其它硬件和软件,以处置对共同数据流或单独数据流中的音频和视频两个的编码。在一些实例中,如果适用的话,那么多路复用器-多路分用器(mux-demux)单元可以符合ituh.223多路复用器协议,或例如用户数据报协议(udp)等其它协议。

视频编码器20和视频解码器30各自可经实施为多种合适的编码器电路中的任一种,例如一或多个集成电路,包含微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件,或其任何组合。当所述技术部分地在软件中实施时,装置可将所述软件的指令存储在合适的非暂时性计算机可读媒体中,且可使用一或多个处理器在例如集成电路等硬件中执行所述指令来执行本公开的技术。视频编码器20和视频解码器30中的每一个可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一个可集成为相应装置中的组合编码器/解码器(编解码器)的一部分。

如上文所介绍,jct-vc最近已完成hevc标准的开发。hevc标准化努力是基于被称作hevc测试模型(hm)的视频译码装置的演进模型。hm假设视频译码装置相对于根据例如itu-th.264/avc的现有装置的几种其它能力。举例来说,虽然h.264提供了九种帧内预测编码模式,但是hm可提供多达三十五种帧内预测编码模式。

在hevc和其它视频译码规范中,视频序列典型地包含一系列图片。图片也可被称为“帧”。图片可包含三个样本阵列,表示为sl、scb和scr。sl是亮度样本的二维阵列(即,块)。scb是cb色度样本的二维阵列。scr是cr色度样本的二维阵列。色度(chrominance)样本在本文中还可称为“色度(chroma)”样本。在其它情况下,图片可以是单色的且可仅包含亮度样本阵列。

为了产生图片的经编码表示,视频编码器20可以产生一组译码树单元(ctu)。ctu中的每一个可包括亮度样本的译码树块、色度样本的两个对应译码树块和用于对译码树块的样本进行译码的语法结构。在单色图片或具有三个单独颜色平面的图片中,ctu可包括单个译码树块和用于对所述译码树块的样本进行译码的语法结构。译码树块可以是样本的n×n块。ctu还可被称作“树块”或lcu。hevc的ctu可广泛地类似于例如h.264/avc的其它标准的宏块。然而,ctu未必限于特定大小,且可包含一或多个译码单元(cu)。切片可包含按光栅扫描次序连续排序的整数数目的ctu。

为了产生经译码ctu,视频编码器20可在ctu的译码树块上递归地执行四叉树分割,以将译码树块划分为译码块,因此命名为“译码树单元”。译码块可以是样本的n×n块。cu可包括具有亮度样本阵列、cb样本阵列和cr样本阵列的图片的亮度样本的译码块和色度样本的两个对应的译码块,以及用以对译码块的样本进行译码的语法结构。在单色图片或具有三个单独颜色平面的图片中,cu可包括单个译码块和用以对译码块的样本进行译码的语法结构。

视频编码器20可将cu的译码块分割为一或多个预测块。预测块是对其应用相同预测的样本的矩形(即,正方形或非正方形)块。cu的预测单元(pu)可包括亮度样本的预测块、色度样本的两个对应预测块和用以预测预测块的语法结构。在单色图片或具有三个单独颜色平面的图片中,pu可包括单个预测块和用于预测预测块的语法结构。视频编码器20可产生cu的每一pu的亮度预测块、cb预测块和cr预测块的预测性亮度块、cb块以及cr块。

视频编码器20可使用帧内预测或帧间预测以产生pu的预测性块。如果视频编码器20使用帧内预测以产生pu的预测性块,那么视频编码器20可基于与pu相关的图片的经解码样本产生pu的预测性块。如果视频编码器20使用帧间预测产生pu的预测性块,则视频编码器20可基于除与pu相关的图片以外的一或多个图片的经解码样本产生pu的预测性块。

在视频编码器20产生cu的一或多个pu的预测性亮度块、cb块和cr块之后,视频编码器20可产生cu的亮度残余块。cu的亮度残余块中的每个样本指示cu的预测性亮度块中的一个中的亮度样本与cu的原始亮度译码块中对应的样本之间的差。另外,视频编码器20可以产生cu的cb残余块。cu的cb残余块中的每一样本可以指示cu的预测性cb块中的一个中的cb样本与cu的原始cb译码块中对应的样本之间的差。视频编码器20还可产生cu的cr残余块。cu的cr残余块中的每一样本可指示cu的预测性cr块中的一个中的cr样本与cu的原始cr译码块中的对应样本之间的差。

此外,视频编码器20可使用四叉树分割将cu的亮度块、cb块和cr残余块分解成一或多个亮度块、cb块和cr变换块。变换块是对其应用相同变换的样本的矩形(例如,正方形或非正方形)块。cu的变换单元tu可包括亮度样本的变换块、色度样本的两个对应变换块和用以对变换块样本进行变换的语法结构。因此,cu的每一tu可与亮度变换块、cb变换块和cr变换块相关。与tu相关的亮度变换块可以是cu的亮度残余块的子块。cb变换块可以是cu的cb残余块的子块。cr变换块可以是cu的cr残余块的子块。在单色图片或具有三个单独颜色平面的图片中,tu可包括单个变换块和用于对变换块的样本进行变换的语法结构。

视频编码器20可将一或多个变换应用到tu的亮度变换块以产生tu的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可将一或多个变换应用到tu的cb变换块以产生tu的cb系数块。视频编码器20可将一或多个变换应用到tu的cr变换块以产生tu的cr系数块。

在产生系数块(例如,亮度系数块、cb系数块或cr系数块)之后,视频编码器20可量化系数块。量化总体上是指对变换系数进行量化以可能减少用以表示变换系数的数据的量从而提供进一步压缩的过程。在视频编码器20量化系数块之后,视频编码器20可对指示经量化变换系数的语法元素进行熵编码。举例来说,视频编码器20可对指示经量化变换系数的语法元素执行上下文自适应二进制算术译码(cabac)。

视频编码器20可输出包含形成经译码图片和相关数据的表示的位序列的位流。位流可包括一系列nal单元。nal单元是含有数据类型呈nal单元的指示且含有呈视需要与模拟阻止位穿插的rbsp形式的所述数据的字节的语法结构。nal单元中的每一个包含nal单元标头,且封装rbsp。nal单元标头可包含指示nal单元类型码的语法元素。由nal单元的nal单元标头指定的nal单元类型码指示nal单元的类型。rbsp可以是含有封装在nal单元内的整数数目个字节的语法结构。在一些情况下,rbsp包含零个位。

不同类型的nal单元可封装不同类型的rbsp。举例来说,第一类型的nal单元可封装pps的rbsp,第二类型的nal单元可封装经译码切片的rbsp,第三类型的nal单元可封装sei消息的rbsp,等等。封装视频译码数据的rbsp(与参数集和sei消息的rbsp相反)的nal单元可被称作vclnal单元。

视频解码器30可接收由视频编码器20产生的位流。另外,视频解码器30可解析位流以从位流获得语法元素。视频解码器30可至少部分地基于从位流获得的语法元素重构视频数据的图片。用于重构视频数据的过程通常可与由视频编码器20执行的过程互逆。另外,视频解码器30可反量化与当前cu的tu相关的系数块。视频解码器30可对系数块执行反变换以重构与当前cu的tu相关的变换块。视频解码器30可通过将用于当前cu的pu的预测性块的样本增加到当前cu的tu的变换块的对应样本上来重构当前cu的译码块。通过重构用于图片的每个cu的译码块,视频解码器30可以重构图片。

sao译码已包含在基础hevc标准中。一般来说,将偏移值添加到视频帧中的像素可提高经重构视频质量的质量,而不大大提高存储或发射经编码视频数据所需要的位开销。sao技术允许依据像素(或块)分类度量将不同的偏移值应用于不同像素(或块)。可能的分类度量包含频带度量和例如边缘度量等的活动性度量。由于sao在hevc标准中实施,所以每一lcu可具有三种sao类型中的一种,其还可被称作像素分类。三种sao类型是无偏移、频带型sao,和边缘型sao。

图2a到2d是示出包含在hevc中的四种边缘偏移分类的概念图。边缘偏移类型基于边缘信息对每一像素进行分类。对于图2a到2d中示出的边缘分类中的每一个,通过将当前像素c的值与相邻像素1和2的值进行比较来计算当前像素的边缘类型。对于图2a中示出的分类零(sao_eo_0)的sao边缘偏移,当前像素(像素c)与左侧相邻像素(像素1)和右侧相邻像素(像素1)比较。对于图2b中所示出的分类一(sao_eo_1)的sao边缘偏移,当前像素(像素c)与顶部相邻像素(像素1)和底部相邻像素(像素2)比较。对于图2c中所示出的分类二(sao_eo_2)的sao边缘偏移,当前像素(像素c)与左上方相邻像素(像素1)和右下方相邻像素(像素2)比较。对于图2d中所示出的分类三(sao_eo_3)的sao边缘偏移,当前像素(像素c)与右上方相邻像素(像素1)和左下方相邻像素(像素2)比较。

四种边缘偏移分类可各自具有具有范围介于-2到2的5个可能整数值的边缘类型。起初,假设当前像素的边缘类型是零。如果当前像素c的值等于第一相邻像素(像素1)和第二相邻像素(像素2)两个的值,那么边缘类型保持在零。如果当前像素c的值大于相邻像素1的值,那么边缘类型增加一。如果当前像素c的值小于相邻像素1的值,那么边缘类型减小一。同样,如果当前像素c的值小于相邻像素2的值,那么边缘类型增加一,且如果当前像素c的值小于相邻像素2的值,那么边缘类型减小1。

因此,当前像素c可具有边缘类型-2、-1、0、1或2。如果当前像素c的值小于相邻像素1和2的值,那么边缘类型是-2。如果当前像素c的值小于一个相邻像素但等于另一相邻像素,那么边缘类型是-1。如果当前像素c的值与两个相邻像素相同,或如果当前像素c的值大于一个相邻像素但小于另一相邻像素,那么边缘类型是0。如果当前像素c的值大于一个相邻像素但等于另一相邻像素,那么边缘类型是1。如果当前像素c的值大于相邻像素1和2的值,那么边缘类型是2。对于每一非零边缘类型值,四个偏移值经确定且在经编码视频位流中用信号发送以供解码器使用(即,eoffset-2、eoffset-1、eoffset1、eoffset2)。

考虑到以上描述,对于每一边缘偏移分类,可根据以下伪代码计算像素的边缘类型值:

edgetype=0;

if(c>pixel1)edgetype=edgetype+1;

if(c<pixel1)edgetype=edgetype-1;

if(c>pixel2)edgetype=edgetype+1;

if(c<pixel2)edgetype=edgetype-1;

如果视频解码器30确定像素具有-2的边缘类型,那么视频解码器30将偏移值eoffset-2添加到所述像素。如果视频解码器30确定像素具有-1的边缘类型,那么视频解码器30将偏移值eoffset-1添加到所述像素。如果视频解码器30确定像素具有1的边缘类型,那么视频解码器30将偏移值eoffset1添加到所述像素。如果视频解码器30确定像素具有2的边缘类型,那么视频解码器30将偏移值eoffset2添加到所述像素。

图3是展示可在基于频带的偏sao分类中使用的实例频带的概念图。图3中的每一矩形表示一频带。图3的实例展示32个频带,即频带0到31。已标记部分频带,例如频带0、频带8、频带24,和频带31。在一些实施方案中,可使用更多或更少频带。对于基于频带的偏移,基于例如强度值等的像素值将像素分类到不同频带中。出于实例的目的,假设像素值在0到255(例如,8位位深)的范围内,但还可以使用其它例如0到1023(例如,10位位深)等的范围。在此实例中,图3中所示出的最大值将等于255,且图3中所示出的三十二个频带中的每一个将在8的范围内。最左频带(即图3中的频带0)将是像素值0到7,下一个频带(即图3中的频带1)将是像素值8到15,下一个频带(即频带2)将是像素值16到23,等等,直到将是像素值248到255的最右频带(即图3中的频带31)。对于频带偏移,基于例如强度值等的像素值将像素分类到不同频带中。对于亮度和色度可使用单独分类。基于像素值属于的频带,将偏移添加到所述像素。举例来说,如果像素的值是19,那么根据此当前实例,像素值属于像素值从16到23的范围内的频带2。因此,视频解码器30将与频带2相关的偏移应用到像素值19。

出于用信号发送与频带中的每一个相关的偏移值的目的,视频编码器20可将频带分组成两个或更多个组。两个组可以是(例如)具有用信号发送的偏移值(例如,图3的实例中的频带8到11)的第一组频带和具有未用信号发送的偏移值的第二组频带。用信号发送的偏移值可以是零或非零值,而视频解码器30推断全部未用信号发送的值是零。对于具有用信号发送的偏移值的第一组频带,视频编码器20可将偏移值(即,boffset0、boffset1、boffset2、boffset3)以及第一频带具有用信号发送的偏移值的指示用信号发送到视频解码器30。对于具有用信号发送的偏移值的第一频带和以顺序次序在第一频带之后的接着三个频带,视频编码器20将偏移值用信号发送到视频解码器30。对于剩余频带,视频解码器30可推断未用信号发送的频带具有偏移值零。

对于每一lcu,视频编码器20可使用频带型sao、边缘型sao(例如,sao_eo_0、sao_eo_1、sao_eo_2、sao_eo_3),且不使用sao来执行多个译码遍次。对于频带型sao,视频编码器20使用对频带的不同分组以及对每一频带的不同值(例如,boffset0、boffset1、boffset2、boffset3的不同值)来执行多个译码遍次,且对于每一边缘型sao,视频编码器20同样使用不同偏移值(例如,eoffset-2、eoffset-1、eoffset1、eoffset2的不同值)执行多个译码遍次。对于每一个lcu执行此大量译码遍次可以是计算密集型的。本公开引入低复杂度sao编码的技术,其可减小与确定lcu的sao信息相关的复杂度。

本公开包含可减小每一偏移导出的复杂度的技术。根据一实例技术,视频编码器20可仅检查偏移类型的子集,而非全部偏移类型。换句话说,视频编码器20可仅执行译码遍次以评估偏移类型的子集,而非全部偏移类型。如上文所论述,在如以hevc实施的sao中,存在五个偏移类型(1个频带偏移和包含垂直、水平、45度和135度的4个边缘偏移类型)。视频编码器20还可以使用来自左侧或上部lcu的合并模式编码sao信息,其包含从那些lcu中的一个复制sao信息。

根据本公开的技术,视频编码器20可配置成以多个模式(包含例如快速译码模式和高压缩模式)编码视频数据。高压缩模式与快速译码模式相比可在相当的失真等级下提供更好的压缩,但高压缩模式还可以比快速译码模式耗时更长来编码视频数据。快速译码模式可牺牲一定量的压缩质量以便更快速地编码视频数据。在快速编码模式中,视频编码器20可仅检查(例如,执行译码遍次)sao类型的子集(即,少于全部sao类型),而在高压缩模式中,视频编码器20可执行sao类型的全部的译码遍次。一般来说,如本文所使用的术语子集将指代小于全部sao类型的总数的多个sao类型。作为一个实例,在快速编码模式中,视频编码器20可仅执行频带型偏移、水平边缘偏移和垂直边缘偏移的译码遍次,而在高压缩编码模式中,视频编码器20可执行全部五个sao类型(即,频带型sao和四个边缘型sao类型)的译码遍次。

在一些实例中,视频编码器20可检查(例如,执行译码遍次)一些块的全部五个sao类型并且仅检查其它块的五个sao类型的子集(即,少于全部五个sao类型,例如仅一个、二个、三个或四个sao类型)。在一些实例中,视频编码器20可检查一个块的全部五个sao类型,且接着使用对所述块所确定的sao类型来确定sao类型子集以检查相邻块。也就是说,可以基于为块所确定的特定sao类型选择针对相邻块所执行的译码遍次的sao类型的子集的成员。

根据一个实例,视频编码器20可配置成仅检查sao类型(即,例如垂直和水平的2个亮度边缘偏移类型)的子集和/或仅检查亮度的sao类型。通过使用这些技术,可节省多达70%的与由编码器确定sao信息相关的复杂度。

本公开中所描述的各种技术可以不同方式应用于每一切片或图片。作为一个实例,对于一个切片或图片,视频编码器20可通过检查每一lcu的全部五个sao类型来确定sao类型,而对于其它切片或图片,视频编码器20可仅检查sao类型的子集。在一个实例中,视频编码器20可基于切片类型或图片类型确定是否检查全部sao类型或sao类型的子集。举例来说,对于随机存取图片,视频编码器20可检查全部sao类型,而对于一或多个其它图片,仅检查sao类型的子集。作为另一实例,对于非参考图片,视频编码器20可仅检查sao类型子集,而对于参考图片,视频编码器20可检查全部sao类型(或其较大子集)。因此,对于非参考图片所检查的sao类型集合可小于对于参考图片所检查的sao类型集合。作为又一实例,视频编码器20可基于帧(即,图片)是i图片、p图片或b图片来确定是否检查全部sao类型或sao类型子集。因此,对于i图片、p图片和b图片所检查的sao类型集合可彼此不同(例如,更大或更小)且基于图片类型来确定。在一个实例中,p图片和b图片的sao类型集合可以是相同的,但i图片的sao类型集合不同。在另一实例中,sao类型集合可对于i图片、p图片和b图片中的每一个而不同。在另一实例中,sao类型集合可对于i图片和p图片相同,但对b图片不同。在另一实例中,sao类型集合可对于i图片和b图片相同但对p图片不同。

根据本公开的另一技术,视频编码器20可配置成使用lcu内的像素子集以导出偏移。典型地,视频编码器20使用lcu内的全部像素来导出偏移值,但根据本公开的技术,视频编码器20可仅使用lcu内部分像素。作为一个实例,视频编码器20可选择并不包含任一边界像素的像素子集且使用所述像素子集来导出偏移值。为进行与常见软件加速方案(例如,armneon、dsp专用指令、pcsse)兼容的偏移导出,本公开同样提出制得8的整数倍个像素的子集(例如,8、16、24、32、40)。大部分软件加速方案配置成每次处置八个像素;因此使用8的倍数可产生提升的性能。

根据本公开的另一技术,视频编码器20可配置成使用预解块像素用于偏移导出。典型地,视频编码器被配置成使用后解块像素以导出偏移。参考图4a,且预解块图像的实例将是在由解块滤波72经解块滤波之前从求和器62输出的经重构图片。后解块图片的实例将是在经解块滤波之后从解块滤波72输出的图片。然而,为对块的下边界和块的右边界执行解块,视频编码器20需要确定如何编码右侧相邻块和下方相邻块。根据本公开的技术,视频编码器20可通过仅分析块的预解块像素,或通过分析所述块的上部和左侧边界的解块像素而仅除去所述块的右侧和下部边界的预解块像素(例如,已经解块滤波的像素)来确定对于所述块使用哪个sao信息。使用预解块像素配置视频编码器20而导出偏移值可改善硬件流水线结构内的依赖性问题。

根据本公开的另一技术,对于频带型sao,视频编码器20可执行简化的频带偏移中心导出。典型地,当决定频带偏移中心时,视频编码器对于全部可能的中心值(即,32个位置)执行完全rd分析。根据本公开的技术,视频编码器20可使用直方图以导出频带偏移中心(即,直方图中心)。视频编码器20还可以取决于直方图形状(例如,峰态(峰度))来确定在四个相邻频带以外的频带子集的频带偏移值。

本公开还引入减少偏移导出次数的技术,即,减少对于boffset0-3和eoffset-2-2所测试的不同值的数目。视频编码器20可配置成通过使用一或多个简化来减少确定sao信息所需要的偏移导出次数。

根据一个实例,视频编码器20可配置成执行基于阈值的常规偏移提早终止。在sao中,视频编码器典型地导出当前lcu的偏移且通过sao合并(左侧/上方合并)成本比较经导出偏移且选择提供更适宜rd折衷的偏移信息(即,导出的或合并的)。然而,在许多情况下,合并模式(例如,使用与相邻块相同的sao信息)常常产生比导出新的sao信息更好的rd折衷。在许多情况下,可能够在不将相邻sao信息的rd折衷与新导出sao信息的rd折衷进行比较的情况下做出确定是否使用相邻块的偏移信息。根据本公开的技术,视频编码器20可经过训练具有早期合并终止的阈值。阈值可(例如)基于相邻块的sao信息提高经解码视频数据的质量多少或经解码视频有多接近类似原始视频。如果相邻块的sao信息超出阈值,那么视频编码器20可跳过检查导出的sao偏移信息,且实际上使用sao合并模式,即,其中左侧或顶部邻近lcu的sao信息用于当前lcu。可使用前一帧的关于合并成本和常规偏移成本的统计数据来进行阈值训练。在此上下文中,成本可指代达成一定失真减小所需要的速率增加量。

根据本公开的技术,视频编码器20还可配置成执行基于阈值的合并提早终止。如果对应于常规偏移的当前成本已经足够充分,那么视频编码器20可跳过合并计算。可通过使用一或多个前一帧的关于合并成本和常规偏移成本的统计数据来进行此阈值训练。

根据本公开的另一技术,视频编码器20可配置成为每一mlcu执行强制合并,其中m是lcu的预定数目。视频编码器20可配置成对于每一mlcu使用合并模式以使得视频编码器20并不需要对于lcu的每一个导出新的偏移(即,对于每一其它lcu强制使用合并)。

图4a为说明可实施本公开中所描述的技术的实例视频编码器20的框图。具体来说,视频编码器20可实施本公开的技术以确定视频数据块的sao信息,且视频编码器20可将指示所确定的sao信息的语法信息包含在经编码位流中。

视频编码器20可对视频切片内的视频块执行帧内和帧间译码。帧内译码依赖于空间预测来减少或去除给定视频帧或图片内的视频中的空间冗余。帧间译码依赖于时间预测来减少或去除视频序列的邻近帧或图片内的视频中的时间冗余。帧内模式(i模式)可指若干基于空间压缩模式中的任一个。例如单向预测(p模式)或双向预测(b模式)的帧间模式可指代若干基于时间的压缩模式中的任一个。

在图4a的实例中,视频编码器20包含分割单元35、预测处理单元41、求和器50、变换处理单元52、量化单元54、熵编码单元56,和经解码图片缓冲器(dpb)78。预测处理单元41包含运动估计单元42、运动补偿单元44和帧内预测处理单元46。对于视频块重构,视频编码器20还包含反量化单元58、反变换处理单元60、求和器62、解块滤波器72,和sao单元74。尽管解块滤波器72和sao单元74在图4a中展示于环路滤波器中,但在其它配置中,解块滤波器72和sao单元74可实施为后环路滤波器。

如图4a所示,视频编码器20接收视频数据并将所接收视频数据存储于视频数据存储器33中。视频数据存储器33可以存储待由视频编码器20的组件编码的视频数据。可(例如)从视频源18获得存储在视频数据存储器33中的视频数据。dpb78可能是存储供视频编码器20使用(例如,以帧内或帧间译码模式)来编码视频数据的参考视频数据的参考图片存储器。视频数据存储器33和dpb78可由多种存储器装置中的任一种形成,例如包含同步dram(sdram)的动态随机存取存储器(dram)、磁阻式ram(mram)、电阻式ram(rram),或其它类型的存储器装置。视频数据存储器33和dpb78可由同一存储器装置或单独存储器装置提供。在各种实例中,视频数据存储器33可与视频编码器20的其它组件一起位于芯片上,或相对于那些组件在芯片外。

分割单元35从视频数据存储器33检索视频数据并且将数据分割成视频块,例如,作为帧间/帧内译码模式选择处理的一部分。此分割还可包含分割成切片、瓦片或其它较大单元,以及例如根据lcu和cu的四叉树结构的视频块分割。视频编码器20一般说明对待编码的视频切片内的视频块进行编码的组件。可将切片划分成多个视频块(且可能划分成被称作瓦片的视频块的集合)。预测处理单元41可基于误差结果(例如,译码速率和失真程度)选择多个可能译码模式中的一个(例如,多个帧内译码模式中的一或多个帧间译码模式中的一个)用于当前视频块。预测处理单元41可将所得经帧内或帧间译码块提供到求和器50以产生残余块数据,并提供到求和器62以重构经编码块以用作参考图片。

预测处理单元41内的帧内预测处理单元46可相对于与待译码的当前块在相同的帧或切片中的一或多个相邻块执行当前视频块的帧内预测性译码以提供空间压缩。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一或多个参考图片中的一或多个预测性块执行当前视频块的帧间预测性译码以提供时间压缩。

运动估计单元42可配置成根据用于视频序列的预定模式来确定用于视频切片的帧间预测模式。预定模式可将序列中的视频切片指定为p切片或b切片。运动估计单元42和运动补偿单元44可高度集成,但出于概念的目的分别加以说明。由运动估计单元42执行的运动估计是产生运动向量的过程,所述过程估计视频块的运动。举例来说,运动向量可指示将当前视频帧或图片内的视频块的pu相对于参考图片内的预测性块的位移。

预测性块是经发现在像素差方面与待译码的视频块的pu密切匹配的块,像素差可通过绝对差总和(sad)、平方差总和(ssd)或其它差度量来确定。在一些实例中,视频编码器20可计算存储于dpb78中的参考图片的子整数像素位置的值。举例来说,视频编码器20可以内插参考图片的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可相对于整数像素位置和分数像素位置进行运动搜索并且输出具有分数像素精确度的运动向量。

运动估计单元42通过将pu的位置与参考图片的预测性块的位置比较来计算用于经帧间译码切片中的视频块的pu的运动向量。可从第一参考图片列表(列表0)或第二参考图片列表(列表1)来选择参考图片,所述列表中的每一个识别存储在78中的一或多个参考图片。运动估计单元42将计算出的运动向量发送到熵编码单元56和运动补偿单元44。

由运动补偿单元44执行的运动补偿可以涉及基于通过运动估计确定的运动向量获取或产生预测性块,可能对子像素精确度执行内插。在接收到当前视频块的pu的运动向量后,运动补偿单元44可定位参考图片列表中的一个中的所述运动向量指向的预测性块。视频编码器20通过从经译码的当前视频块的像素值中减去预测性块的像素值来形成残余视频块,从而形成像素差值。像素差值形成用于所述块的残余数据,且可包含亮度差分量和色度差分量两个。求和器50表示执行此减法运算的一或多个组件。运动补偿单元44还可产生与视频块和视频切片相关联的语法元素以供视频解码器30在对视频切片的视频块进行解码时使用。

作为如上文所描述由运动估计单元42和运动补偿单元44执行的帧间预测的替代方案,帧内预测单元46可以对当前块进行帧内预测。明确地说,帧内预测处理单元46可确定用来对当前块进行编码的帧内预测模式。在一些实例中,帧内预测处理单元46可(例如)在单独编码遍次期间使用各种帧内预测模式编码当前块,且帧内预测处理单元46可从经测试模式中选择适当帧内预测模式来使用。举例来说,帧内预测处理单元46可使用对于各种经测试帧内预测模式的rd分析来计算rd值,且在经测试模式间选择具有最佳或适宜rd特征的帧内预测模式。rd分析大体上确定经编码块与经编码以产生所述经编码块的原始未编码块之间的失真(或误差)的量,以及用于产生经编码块的位速率(即位数目)。帧内预测处理单元46可计算各种经编码块的失真和速率比率以确定哪种帧内预测模式呈现所述块的最佳或适宜rd值。

在任何情况下,在选择用于块的帧内预测模式之后,帧内预测处理单元46可将指示块的所选择帧内预测模式的信息提供到熵编码单元56。熵编码单元56可以根据本公开的技术对指示所述选择帧内预测模式的信息进行编码。视频编码器20可在所发射的位流中包含配置数据,所述配置数据可包含多个帧内预测模式索引表和多个经修改帧内预测模式索引表(还被称作码字映射表)、编码用于各种块的上下文的定义,和用于所述上下文中的每一个的最可能的帧内预测模式、帧内预测模式索引表和经修改帧内预测模式索引表的指示。

在预测处理单元41经由帧间预测或帧内预测产生当前视频块的预测性块之后,视频编码器20通过从当前视频块减去预测性块而形成残余视频块。残余块中的残余视频数据可包含在一或多个tu中并应用于变换处理单元52。变换处理单元52使用例如离散余弦变换(dct)或概念上类似的变换的变换来将残余视频数据变换成残余变换系数。变换处理单元52可将残余视频数据从像素域转换到变换域,例如,频域。

变换处理单元52可将所得变换系数发送到量化单元54。量化单元54量化所述变换系数以进一步减小位速率。量化过程可减小与系数中的一些或全部相关的位深度。可以通过调节量化参数来修改量化程度。在一些实例中,量化单元54可随后执行对包含经量化变换系数的矩阵的扫描。替代地,熵编码单元56可执行扫描。

在量化之后,熵编码单元56对经量化的变换系数进行熵编码。举例来说,熵编码单元56可执行上下文自适应可变长度译码(cavlc)、上下文自适应二进制算术译码(cabac)、基于语法的上下文自适应二进制算术译码(sbac)、概率区间分割熵(pipe)译码或另一熵译码方法或技术。在由熵编码单元56进行熵编码后,可将经编码位流发射到视频解码器30,或将经编码位流存档以供稍后由视频解码器30发射或检索。熵编码单元56还可对经译码当前视频切片的运动向量和其它语法元素进行熵编码。

反量化单元58和反变换处理单元60分别应用反量化和反变换以在像素域中重新构造残余块,以供稍后用作参考图片的参考块。运动补偿单元44可通过将残余块添加到参考图片列表中的一个内的参考图片中的一个的预测性块中来计算参考块。运动补偿单元44还可将一或多个内插滤波器应用于经重构的残余块以计算子整数像素值以供用于运动估计。求和器62将经重构的残余块添加到由运动补偿单元44产生的运动补偿预测块,以产生用于存储在dpb78中的参考块。参考块可由运动估计单元42和运动补偿单元44用作参考块以对后续视频帧或图片中的块进行帧间预测。

在存储在dpb78中之前,经重构残余块可由一或多个滤波器滤波。如果需要,也可以应用解块滤波器72以对经重构残余块进行滤波以便移除成块假象。还可以使用例如自适应环路滤波器(在译码环路中或在译码环路之后)的其它环路滤波器以使像素过渡平滑,或以其它方式提高视频质量。参考块在由解块滤波器72和sao单元74中的一或多个滤波之后,可由运动估计单元42和运动补偿单元44用作参考块以对后续视频帧或图片中的块进行帧间预测。

sao单元74可以提高视频译码质量的方式确定用于sao滤波的偏移值。提高视频译码质量可例如涉及确定使经重构图片更密切匹配原始图像的偏移值。视频编码器20可例如使用具有不同sao类型和不同偏移值的多个遍次对视频数据进行译码,且选择如基于所需rd折衷所确定的提供最佳译码质量的sao类型和偏移值以用于包含在经编码位流中。

在一些配置中,sao单元74可配置成应用两种类型的偏移(例如,频带偏移和边缘偏移),如上文所描述。sao单元74有时还可不应用偏移,其可自身被视为第三类型的偏移。可显式地或隐式地将sao单元74应用的偏移的类型用信号发送到视频解码器。当应用边缘偏移时,像素可根据图2a到2d基于边缘信息而分类,且可基于边缘分类而确定偏移值。当应用基于频带的偏移时,sao单元74可基于像素值(例如强度值)将像素分类成不同的频带,其中每一频带具有相关的偏移。

图4b是说明可实施本公开中所描述的技术的实例视频编码器21的替代视图的框图。图4b表示典型的hevc视频编码器。视频编码器21包含通用译码器控制单元140、运动估计单元142、运动补偿单元144、图片内估计单元145、图片内预测处理单元146、变换缩放和量化单元152/154、缩放和反变换单元158/160、滤波器控制分析单元170、解块和sao滤波器172/174、经解码的图片缓冲器178,和标头格式化和cabac单元180。这些组件中的每一个一般执行与图4a中的其相似编号的等效物相同的功能。举例来说,运动估计单元142一般执行与图4a中的运动估计单元42相同的功能,且变换缩放和量化单元152/154一般执行与变换处理单元52和量化单元54相同的功能。

通用译码器控制单元140选择并且保持用于视频编码器21如何编码视频数据的各种参数。举例来说,通用译码器控制单元140可根据hevc标准的特征、等级和水平选择待译码的视频数据。通用译码器控制单元140还可以例如建立并且维持位速率和所需的rd程度。

视频编码器21将输入视频信号分割成视频块(例如,ctu)且将那些ctu发送到运动估计单元142和图片内估计单元145。运动估计单元142可配置成根据用于视频序列的预定模式来确定视频块的帧间预测模式。图片内估计单元145可配置成确定用于所述视频数据块的帧内预测模式。视频编码器21选择帧内预测模式或帧间预测模式中的一个用于对所述视频数据块进行译码。将经选择帧内预测数据或运动数据发送到标头格式化和cabac单元180,其可对所述数据进行熵编码以用于包含在经编码位流中。

在求和器150处,视频编码器21通过从原始块减去使用所确定的运动数据或帧内预测数据所识别的经预测块来确定残余数据。变换、缩放和量化单元152/154使用变换(例如dct或在概念上类似的变换)将残余视频数据变换成残余变换系数并且可将残余视频数据从像素域转换到变换域(例如频域)。变换、缩放和量化单元152/154还量化变换系数以进一步压缩所述数据。量化过程可减小与系数中的一些或全部相关的位深度。变换、缩放和量化单元152/154将经量化变换系数发送到标头格式化和cabac单元180,其可对经量化变换系数进行熵编码以用于包含在经编码位流中。

视频编码器21还可以包含解码环路以用于确定对于各种编码假设所达成的视频编码质量。在解码环路中,缩放和反变换单元158/160应用反量化和反变换以在像素域中重构残余块。求和器162将经重构残余块添加到由运动补偿单元144的图片内预测处理单元146所发现的经预测块以确定经重构块。

滤波器控制分析单元170确定待用于对经重构块进行滤波的滤波器信息,其包含任何sao信息。滤波器控制分析单元170将所确定的滤波器信息发送到标头格式化和cabac单元180,其可对滤波器信息进行熵编码以用于包含在经编码位流中。解块和sao滤波器172/174还可以基于由滤波器控制分析单元170所确定的滤波器信息将一或多个滤波器应用于经重构块以便去除成块假象并且另外提高视频质量。作为执行多个译码遍次的一部分,滤波器控制分析单元170可导出滤波器信息的多个不同集合,且解块和sao滤波器172/174可使用所导出的滤波器信息对经重构块进行滤波作为确定使用不同集合的滤波器信息的哪个滤波器信息来对所述块进行译码的一部分。

在存储在dpb178中之前,解块和sao滤波器172/174可使用所确定的滤波器信息对经重构块进行滤波。因此,当对未来的视频数据块进行译码时,图片内估计单元145和运动估计单元142可在经滤波、经重构块中搜索预测性块,其是视频解码器用于定位预测性块的相同块。

在典型的hevc编码器中,视频编码器必须实施若干新的译码工具以便产生hevc兼容的位流。在那些译码工具中,新的译码工具是在一些译码场景中可直观地和客观地带来较大译码益处的sao。设计具有合理的复杂度的良好sao参数编码引擎是重要的挑战。

根据上文所介绍的技术,视频编码器20和视频编码器21表示配置成根据支持sao类型集合的视频译码标准对视频数据进行编码的视频编码器的实例。在本公开中,视频编码器20/21打算分别表示视频编码器20或视频编码器21中的任一个或表示并入有视频编码器20和视频编码器21两者的特征的视频编码器。除非另外规定,否则视频编码器20和视频编码器21的功能和特征不相互排斥。此外,本公开的技术不限于任一特定类型的视频编码器。视频编码器20和视频编码器21是可执行本公开的技术的视频编码器的两个实例,但视频编码器20和视频编码器21不是可执行本文所描述的技术的视频编码器的仅有的实施方案。

在一个实例中,对于像素数据块,视频编码器20/21执行多个译码遍次以测试sao类型的子集,其中所述子集小于所述集合。视频编码器20/21从sao类型子集选择一sao类型以编码视频数据且根据所选择的sao类型编码所述视频数据。在一些实例中,sao类型集合包含频带偏移类型、第一边缘偏移类型、第二边缘偏移类型、第三边缘偏移类型,和第四边缘偏移类型。

在一些实例中,视频编码器20/21以涉及执行多个译码遍次以测试sao类型的子集的第一译码模式编码视频数据且以包含执行多个译码遍次以测试sao类型集合的全部sao类型的第二译码模式对视频数据进行译码。对于第一像素数据块,视频编码器20/21可执行多个译码遍次以测试sao类型集合,且对于所述第一像素数据块,视频编码器20/21可选择一sao类型以编码所述第一像素数据块。对于另一像素数据块,视频编码器20/21可基于经选择用于编码所述第一像素数据块的sao类型来选择sao类型以包含在sao类型的子集中。

视频编码器20/21还可配置成对于像素数据的亮度块执行多个译码遍次以测试sao类型集合的一或多个sao类型且从一或多个sao类型选择以sao类型以编码像素数据的亮度块。视频编码器20/21还可以使用所选择的sao类型来编码与亮度块相对应的色度块。换句话说,视频编码器20/21可选择亮度sao类型并且使用所选择的sao类型用于色度。在此实例中,视频编码器20/21可在不测试色度块的sao类型的情况下或在仅测试sao类型子集(例如,仅合并候选者)之后使用所选择的sao类型来编码色度块。

视频编码器20/21还可配置成对于像素数据块执行多个译码遍次以使用多个sao类型和偏移值测试对所述块中的像素的子集的译码,且对于每一译码遍次,将具有所添加偏移值的像素子集与原始视频数据块的对应像素进行比较。基于比较,视频编码器20/21选择sao类型和相关偏移值以编码所述块。在一些实例中,像素子集可包含的像素少于数据块中的全部像素且/或可不包含所述块的边界上的像素。像素子集可以是8的整数倍个像素。

视频编码器20/21还可配置成使用sao类型集合编码第一部分视频数据的块且仅使用sao类型子集编码第二部分视频数据的块。sao类型子集包含的sao类型少于sao类型集合中的全部sao类型。第一部分视频数据可以是例如视频数据的第一切片,且第二部分视频数据可以是视频数据的第二切片。第一部分视频数据可以是视频数据的第一图片,且第二部分视频数据可以是视频数据的第二图片。在另一实例中,第一部分视频数据可以是参考图片,且第二部分视频数据可以是非参考图片。在其它实例中,第一部分视频数据可以是随机存取图片。

视频编码器20/21还可配置成确定第一块的sao信息且使用所述第一块的sao信息将偏移值添加到第二块。视频编码器20/21可将具有所添加偏移值的所述第二块与对应原始块进行比较,且响应于所述第二块与原始块之间的差小于阈值差量,使用所述第一块的sao信息来编码所述第二块并且终止sao信息导出过程。作为使用所述第一块的sao信息对所述第二块进行编码的一部分,视频编码器20/21包括产生合并旗标。响应于所述第二块与原始块之间的差小于阈值差量,视频编码器20/21可在检查除所述第一块的sao信息以外的sao信息之前终止sao信息导出过程。视频编码器20/21可基于一或多个经先前编码块与一或多个对应原始视频块的比较而动态地确定阈值。阈值可基于一或多个经先前编码块与一或多个对应原始视频块之间的失真。所述第二块与原始块之间的小于阈值差量的差可对应于小于或等于一或多个经先前编码块与一或多个对应原始视频块之间的失真的所述第二块与原始块之间的失真。

视频编码器20/21可配置成对于像素数据块执行多个译码遍次以测试多个sao信息。所述块可包含预解块像素数据。视频编码器20/21可从多个sao信息选择用于对视频数据进行编码的sao信息。像素数据块可包含在所述块的右侧边界上的和/或在所述块的底部边界上的预解块像素。在一些实例中,像素数据块还可以包含在所述块的左侧边界上的和/或在所述块的上部边界上的后解块像素。

视频编码器20/21可配置成对于像素块确定用于所述块中的像素的像素值分布且基于所述分布确定中心频带。视频编码器20/21可执行包含频带型sao编码的多个译码遍次以检查与所确定中心频带相邻的m频带。作为确定分布的一部分,视频编码器20/21可对于所述块中的像素,识别与所述像素相关的频带,且作为确定中心频带的一部分,且视频编码器20/21可基于所述识别确定最常出现的频带。视频编码器20/21可执行包含频带型sao编码的多个译码遍次以检查与所确定中心频带相邻的m块并且仅检查m频带,其中m小于频带总数。

视频编码器20/21还可配置成使用sao编码技术来编码多个块且追踪使用sao合并模式所写码的块数量。基于追踪,视频编码器20/21可使用sao合并模式或非合并模式确定是否译码多个块中的块以使得选择的sao合并模式的次数超出最小阈值。举例来说,视频编码器20/21可使用合并模式控制块的数目以使用合并模式译码至少最小数目的块。视频编码器20/21可使用sao合并模式或非合并模式通过从待使用sao合并模式译码的每m块中选择至少一个来确定是否编码多个块,其中m是整数值。sao合并模式可包含左侧邻近合并模式或上方邻近合并模式中的一个或两个。

图5是说明可根据本公开中所描述的技术解码经编码视频数据的实例视频解码器30的框图。尽管视频解码器30展示为配置成接收和解码视频数据的视频解码器,但应理解,相对于视频解码器30所描述的许多技术还可由视频编码器20或21执行。视频编码器20/21可例如包含视频解码环路,且作为执行多译码遍次的一部分,视频编码器20/21可编码视频数据并且随后解码经编码视频数据以便分析编码的质量。

在图5的实例中,视频解码器30包含熵解码单元80、预测处理单元81、逆量化单元86、反变换处理单元88、求和器90、解块滤波器93、sao单元94,和参考图片存储器92。预测处理单元81包含运动补偿单元82和帧内预测单元84。在一些实例中,视频解码器30可执行总体上与上文关于图4a和4b的视频编码器20或21所描述的编码遍次相反的解码遍次。

在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频切片的视频块的经编码视频位流和相关的语法元素。视频解码器30的熵解码单元80对位流进行熵解码以产生经量化系数、运动向量和其它语法元素。熵解码单元80将运动向量和其它语法元素转发到预测处理单元81。视频解码器30可以接收视频切片层级和/或视频块层级的语法元素。

当视频切片经译码是经帧内译码(i)切片时,预测处理单元81的帧内预测单元84可基于用信号发送的帧内预测模式和来自当前帧或图片的先前经解码块的数据产生用于当前视频切片的视频块的预测数据。当视频帧经译码为经帧间译码(即,b或p)切片时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动向量和其它语法元素产生用于当前视频切片的视频块的预测性块。可从参考图片列表中的一个内的参考图片中的一个产生预测性块。视频解码器30可基于存储在参考图片存储器92中的参考图片使用默认构造技术构造参考帧列表:列表0和列表1。

运动补偿单元82通过解析运动向量和其它语法元素确定用于当前视频切片的视频块的预测信息,并且使用所述预测信息产生用于经解码的当前视频块的预测性块。举例来说,运动补偿单元82使用所接收的语法要素的一些来确定用以译码视频切片的视频块的帧间预测模式、帧间预测切片类型(例如,b切片或p切片)、用于切片的参考图片列表中的一或多个的构造信息、用于切片的每一经帧间编码视频块的运动向量、用于切片的每一经帧间译码视频块的帧间预测状态,和解码当前视频切片中的视频块的其它信息。

运动补偿单元82还可基于内插滤波器而执行内插。运动补偿单元82可使用如由视频编码器20在编码视频块期间使用的内插滤波器来计算参考块的子整数像素的内插值。在此情况下,运动补偿单元82可从所接收的语法元素确定由视频编码器20使用的内插滤波器并使用所述内插滤波器来产生预测性块。

反量化单元86将提供于位流中且由熵解码单元80解码的经量化变换系数反量化(即,解量化)。反量化过程可包含使用由视频编码器20计算且用信号发送的量化参数。视频编码器20确定用于每一视频块的量化参数。使用由视频编码器20用信号发送的信息,可由视频解码器30确定用于视频切片中的每一视频块的量化参数以确定应应用的量化程度且同样确定应应用的反量化程度。反变换处理单元88将反变换(例如反dct、反整数变换或概念上类似的反变换过程)应用于变换系数,以便在像素域中产生残余块。

在运动补偿单元82基于运动向量和其它语法元素产生了当前视频块的预测性块之后,视频解码器30通过将来自反变换处理单元88的残余块与运动补偿单元82产生的对应预测性块求和来形成经解码视频块。求和器90表示执行此求和运算的一或多个组件。由求和器90形成的经解码视频块接着可由解块滤波器93和sao单元94滤波。接着将给定帧或图片中的经解码视频块存储在参考图片存储器92中,所述参考图片存储器92存储参考图片用于后续运动补偿。参考图片存储器92还存储经解码视频数据以随后呈现在显示装置(例如,图1的显示装置32)上。sao单元94可配置成应用与上文所论述的sao单元74相同的滤波(例如,边缘偏移和频带偏移)。

图6到13是说明用于确定作为视频编码过程的一部分的sao信息的技术的流程图。图6到13的技术将参考通用视频编码器来描述。通用视频编码器可并入有视频编码器20和/或视频编码器21的特征或可以是视频编码器的不同配置。虽然为易于描述单独展示图6到13的技术,但应理解所描述的各种技术可用于彼此部分地或完全结合。

根据图6的技术,视频编码器根据支持sao类型集合的视频译码标准编码视频数据(260)。对于像素数据块,视频编码器可执行多个译码遍次以测试sao类型的子集(262)。sao类型子集可小于(即,包含较少类型)sao类型集合(即,全部集合)。视频编码器从sao类型子集选择用于编码视频数据的sao类型(264)。视频编码器根据所选择的sao类型编码视频数据(266)。为根据所选择的sao类型译码视频数据,视频编码器可例如包含在经编码位流中的信令(例如,合并信令、差异信令或直接信令)以使得视频解码器可识别所选择的sao类型。此外,作为根据所选择的sao类型对视频数据进行编码的一部分,视频编码器可根据所选择的sao类型将偏移值应用于经重构视频数据块。视频编码器可将具有所添加偏移值的此块与作为分析译码遍次的一部分的原始块进行比较,且视频编码器可将具有所添加偏移值的块另外存储于经解码图片缓冲器中以用于预测未来帧中的视频块。

根据图7的技术,对于像素数据的亮度块,视频编码器执行多个译码遍次以测试sao类型集合的一或多个sao类型(270)。视频编码器从一或多个sao类型选择用于编码像素数据的亮度块的sao类型(272)。视频编码器使用所选择的sao类型编码与亮度块相对应的色度块(274)。因此,视频编码器可通过例如执行多个译码遍次确定用于块的亮度样本的sao类型,而非单独地确定用于亮度和色度样本的sao类型,且接着使用相同的sao类型用于编码块的色度样本而不执行多个译码遍次或同时执行缩减量的译码遍次以用于对色度样本进行编码。

根据图8的技术,对于像素数据块,视频编码器使用多个sao类型和偏移值执行多个译码遍次以测试对所述块中的像素的子集的译码(280)。对于每一译码遍次,视频编码器将具有所添加偏移值的像素子集与原始视频数据块的对应像素进行比较(282)。基于比较,视频编码器选择sao类型和相关的偏移值以编码所述块(284)。因此,视频编码器可通过仅确定像素子集的偏移且仅比较子集与原始视频数据来减小复杂度,而非执行译码遍次且确定块(例如,lcu)中的全部像素的偏移值。

根据图9的技术,视频编码器使用sao类型集合编码第一部分视频数据的块(290)。视频编码器仅使用sao类型子集编码第二部分视频数据的块(292)。sao类型子集包含的sao类型少于sao类型集合中的全部sao类型。

根据图10的技术,视频编码器确定用于第一块的sao信息(300)。视频编码器使用所述第一块的sao信息将偏移值添加到第二块(302)。视频编码器将具有所添加偏移值的所述第二块与对应的原始块进行比较304。响应于所述第二块与所述原始块之间的差小于阈值差量(306,是),视频编码器使用所述第一块的sao信息编码所述第二块并且终止sao信息导出过程308。视频编码器20可例如在仅测试所述第一块(和可能的其它已经译码块)的sao信息之后终止sao信息导出过程,而不执行译码遍次以测试特定针对所述第二块导出的sao信息。响应于所述第二块与原始块之间的差不小于阈值差量(306,否),视频编码器执行额外的译码遍次以确定所述第二块的sao信息(310)。

根据图11的技术,对于像素数据块,视频编码器执行多个译码遍次以测试多个sao信息(312)。所述块包括预解块像素数据。视频编码器从多个sao信息选择用于编码视频数据的sao信息(314)。通过使用预解块像素数据,完全预解块或部分预解块,视频编码器硬件可通过启用更大的并行处理来增加编码速度。由于解块滤波仅改变边界像素,所以使用预解块像素数据确定sao信息可能不会大大改变sao滤波质量。

根据图12的技术,对于像素块,视频编码器确定所述块中的像素的像素值分布(320)。视频编码器基于分布确定中心频带(322)。视频编码器执行包含频带型sao编码的多个译码遍次以检查(例如,执行译码遍次用于)与所确定的中心频带相邻的m频带(324)。在此实例中,m是整数值。视频编码器可将中心频带和与中心频带相邻的m带所达成的成本(例如,rd折衷)与其它类型的sao编码(例如,边缘类型sao)进行比较以确定用于块的sao信息。因此,视频编码器可在不检查频带型sao编码中可供使用的全部频带的情况下确定sao信息。

根据图13的技术,视频编码器使用sao编码技术编码多个块(330)。对于多个块,视频编码器追踪使用sao合并模式所译码的块数目(332)视频编码器确定是否使用sao合并模式或非合并模式译码多个块的块以使得选择sao合并模式的次数的数目超出最小阈值(334)。当以sao合并模式译码块时,视频编码器可例如产生包含在视频数据的经编码位流中一或多个合并旗标,所述旗标识别块的sao信息是复制的相邻块。当以非合并模式译码块时,视频编码器可用信号发送新的sao信息,包含sao类型和sao偏移值两个。

在一或多个实例中,所描述的功能可用硬件、软件、固件或其任何组合来实施。如果用软件实施,则所述功能可以作为一或多个指令或代码在计算机可读媒体上存储或发射,并且由基于硬件的处理单元来执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体或通信媒体等有形媒体,通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体(例如,根据通信协议)。以此方式,计算机可读媒体大体上可对应于(1)有形计算机可读存储媒体,其是非暂时性的,或(2)通信媒体,例如信号或载波。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本公开中所描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可以包含计算机可读媒体。

借助于实例而非限制,此类计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、闪存存储器或任何其它可用来存储呈指令或数据结构的形式的所要程序代码并且可由计算机存取的媒体。而且,恰当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源发射指令,那么同轴电缆、光纤电缆、双绞线、dsl或例如红外线、无线电和微波等无线技术包含在媒体的定义中。然而,应理解,计算机可读存储媒体和数据存储媒体并不包含连接、载波、信号或其它暂时性媒体,而是针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述的组合应包含于计算机可读媒体的范围内。

指令可由一或多个处理器执行,例如一或多个dsp、通用微处理器、专用集成电路asic、fpga或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指代上述结构或适用于实施本文中所描述的技术的任何其它结构中的任一个。另外,在一些方面中,本文中所描述的功能性可在配置成用于编码和解码的专用硬件和/或软件模块内提供,或并入在组合编解码器中。并且,所述技术可完全实施在一或多个电路或逻辑元件中。

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

描述了各种实例。这些和其它实例处于以下权利要求书的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1