CN116897536A - 高效视频编码器架构 - Google Patents

高效视频编码器架构 Download PDF

Info

Publication number
CN116897536A
CN116897536A CN202280016032.3A CN202280016032A CN116897536A CN 116897536 A CN116897536 A CN 116897536A CN 202280016032 A CN202280016032 A CN 202280016032A CN 116897536 A CN116897536 A CN 116897536A
Authority
CN
China
Prior art keywords
frames
frame
subset
video
motion vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280016032.3A
Other languages
English (en)
Inventor
N·马拉雅特
K·王
X·方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN116897536A publication Critical patent/CN116897536A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/547Motion estimation performed in a transform domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

提供用于高效视频译码的系统、方法和计算机可读介质。方法可以包括:在以第一帧速率实现的第一译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在第二译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的一部分是基于第一运动矢量中的一个或多个运动矢量来计算的;以及在第二译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,第一译码阶段和第二译码阶段是并行地实现的,并且第二译码阶段是以高于第一帧速率的第二帧速率来实现的。

Description

高效视频编码器架构
技术领域
概括而言,本公开内容涉及视频译码和压缩,以及更具体地,涉及高效视频译码架构。
背景技术
许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据包括不断增加的大量数据,以满足视频质量和视频消费者和提供者的其它需求。例如,视频数据的消费者通常期望具有高保真度、高分辨率、高帧速率等的高质量视频。因此,满足这些需求通常所需要的大量视频数据为处理和存储视频数据的通信网络和设备带来了显著负担。
各种视频译码技术可以用于对视频数据进行压缩并且减少通信网络上的负担。可以根据特定译码标准来执行视频译码。一些示例视频译码标准包括基本视频译码(VVC)、高效率视频译码(HEVC)、高级视频译码(AVC)、MPEG-2部分2译码(MPEG代表运动图像专家组)、VP9、开放媒体联盟(AOMedia)视频1(AV1)等。视频译码通常利用运动估计和预测方法(例如,帧间预测、帧内预测等),预测方法利用在视频图像或序列中存在的冗余。视频译码技术的一个示例目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。虽然这样的视频压缩可以提供各种好处,比如减少在通信网络上的视频数据的负担,但是所实现的视频译码技术可能计算成本较高,这可能导致较高的硬件成本和性能牺牲。随着不断发展的视频服务变得可用,需要具有更好的译码效率和性能的译码技术。
发明内容
所公开的是用于高效视频译码和编码器架构的系统、方法和计算机可读介质。根据至少一个示例,提供用于高效视频译码的方法。方法可以包括:在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在以高于第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的至少一部分是基于来自第一运动矢量的一个或多个运动矢量来计算的;在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,其中,第一视频译码阶段和第二视频译码阶段是至少部分并行地实现的。
根据至少一个示例,提供用于高效视频译码的装置。在一些示例中,装置可以包括存储器和耦合到存储器的一个或多个处理器,一个或多个处理器被配置为:在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在以高于第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的至少一部分是基于来自第一运动矢量的一个或多个运动矢量来计算的;在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,其中,第一视频译码阶段和第二视频译码阶段是至少部分并行地实现的。
根据至少一个示例,提供用于高效视频译码的非暂时性计算机可读介质。非暂时性计算机可读介质可以包括存储在其上的指令,指令在由一个或多个处理器执行时使得一个或多个处理器进行以下操作:在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在以高于第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的至少一部分是基于来自第一运动矢量的一个或多个运动矢量来计算的;在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,其中,第一视频译码阶段和第二视频译码阶段是至少部分并行地实现的。
根据至少一个示例,提供用于高效视频译码的另一装置。装置可以包括用于进行以下操作的单元:在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在以高于第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的至少一部分是基于来自第一运动矢量的一个或多个运动矢量来计算的;在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,其中,第一视频译码阶段和第二视频译码阶段是至少部分并行地实现的。
在一些方面中,上述方法、非暂时性计算机可读介质和装置可以包括:在与第一帧速率相关联的每个间隔,确定来自第一帧子集的帧的运动矢量,确定来自第二帧子集的数个不同帧的相应的运动矢量,并且重构来自第二帧子集的数个不同帧。在一些情况下,帧的运动矢量可以包括第一运动矢量中的至少一个第一运动矢量,并且数个不同帧可以是基于与第二视频译码阶段相关联的第二帧速率的。
在一些示例中,来自第二运动矢量的至少部分的每个运动矢量是基于来自第一帧子集的选定帧的单独运动矢量以及在选定帧与跟每个运动矢量相关联的特定帧之间的时间距离来计算的。
在一些示例中,估计第一运动矢量可以包括:针对第一帧子集中的帧,将帧的一个或多个块与来自帧序列的参考帧中的多个块进行比较;基于在帧的一个或多个块与在参考帧中的多个块中的每个块之间的相应像素差,来根据多个块确定预测块;以及将帧的一个或多个块的第一位置与跟参考帧相关联的预测块的第二位置进行比较。
在一些情况下,第二运动矢量中的一个或多个运动矢量是基于第二运动矢量的一个或多个额外运动矢量、以及在与一个或多个运动矢量相关联的一个或多个帧和与一个或多个额外运动矢量相关联的一个或多个参考帧之间的时间距离来计算的。
在一些方面中,上述方法、非暂时性计算机可读介质和装置可以包括:确定用于重构第一帧子集和第二帧子集的译码模式,译码模式定义用于重构帧的顺序以及用于确定第一运动矢量中的每个运动矢量和第二运动矢量中的每个运动矢量的相应参考帧;以及根据译码模式来重构第一帧子集和第二帧子集。在一些示例中,译码模式可以是基于帧依赖性和/或在帧序列中的每个帧之间的时间距离的。在一些情况下,帧依赖性可以包括以下要求:针对帧序列中的每个帧,用于重构每个帧的参考帧已经完成重构。
在一些示例中,重构第一帧子集和第二帧子集包括:将运动补偿、一个或多个变换和系数量化以及一个或多个解块滤波器中的至少一项应用于第一帧子集和第二帧子集。
在一些示例中,第一视频译码阶段和第二视频译码阶段是经由专用硬件处理管道来实现的。在一些示例中,专用硬件处理管道可以包括一个或多个处理器。在一些方面中,上述方法、非暂时性计算机可读介质和装置可以包括:经由一个或多个额外专用硬件处理管道,针对一个或多个相应帧序列单独地实现第一视频译码阶段和第二视频译码阶段。
在一些示例中,第一运动矢量是使用运动估计算法来确定的,并且第二运动矢量是使用插值算法来确定的。在一些情况下,运动估计算法可能不同于插值算法。
在一些方面中,上述方法、非暂时性计算机可读介质和装置可以包括生成经编码的视频比特流。在一些示例中,经编码的视频比特流可以包括帧序列。在一些方面中,上述方法、非暂时性计算机可读介质和装置可以包括发送经编码的视频比特流。
在一些情况下,第二帧子集包括与第一帧子集相比较多的帧。在一些示例中,第一帧子集和第二帧子集是以第二帧速率来重构的。
在一些方面中,上述每个装置是或包括相机、移动设备(例如,移动电话或所谓的“智能电话”或其它移动设备)、智能可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、服务器计算机、自动驾驶车辆、编码器、解码器或其它设备。在一些方面中,装置包括用于捕获一个或多个视频和/或图像的一个或多个相机。在一些方面中,装置还包括用于显示一个或多个视频和/或图像的显示器。在一些方面中,上述装置可以包括一个或多个传感器。
本概要既不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独地用于确定所要求保护的主题的范围。应当通过参照本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求来理解主题。
在参考以下说明书、权利要求和附图时,前述内容以及其它特征和实施例将变得更加显而易见。
附图说明
为了描述可以以其获得本公开内容的各种优势和特征的方式,将通过参考其在附图中示出的特定实施例来呈现上述原理的更加具体的描述。理解这些附图仅描绘本公开内容的示例实施例并且不被视为限制其范围,通过使用附图利用额外的特定性和细节来描述和解释本文的原理,其中:
图1是示出根据本公开内容的一些示例的编码设备和解码设备的示例的方块图;
图2A和2B是示出根据本公开内容的一些示例的视频编码硬件引擎的示例架构的方块图;
图3A和3B是示出根据本公开内容的一些示例的由视频编码硬件引擎的处理管道实现的操作的示例管线的示意图;
图4是示出根据本公开内容的一些示例的针对用于高效视频译码的修改的管线的示例译码模式的示意图;
图5是示出根据本公开内容的一些示例的用于高效视频译码的示例过程的流程图;
图6是示出根据本公开内容的一些示例的示例编码设备的方块图;以及
图7是示出根据本公开内容的一些示例的示例视频解码设备的方块图。
具体实施方式
下文提供本公开内容的某些方面和实施例。如对于本领域技术人员将显而易见的,这些方面和实施例中的一些项可以独立地应用并且其中的一些项可以相组合地应用。在以下描述中,出于解释的目的,阐述具体细节以便提供对本申请的实施例的透彻理解。然而,将显而易见的是,各个实施例可以在没有这些具体细节的情况下实施。附图和描述不旨在是限制性的。
随后的描述仅提供示例实施例并且不旨在限制本公开内容的范围、适用性或配置。确切地说,对示例性实施例的随后的描述将向本领域技术人员提供用于实现示例性实施例的使能的描述。应当理解的是,在不背离如在所附的权利要求中阐述的本申请的精神和范围的情况下,可以对元素的功能和排列进行各种改变。
视频译码设备实现视频压缩技术以对视频数据高效地进行编码和解码。视频压缩技术可以包括应用不同的预测模式,包括空间预测(例如,帧内预测(intra-frameprediction)或帧内预测(intra-prediction))、时间预测(例如,帧间预测(inter-frameprediction)或帧间预测(inter-prediction))、层间预测(跨越视频数据的不同层)、和/或用于减少或去除在视频序列中固有的冗余的其它预测技术。视频编码器可以将原始视频序列的每个图片分割为被称为视频块或译码单元(下文将更详细地进行描述)的矩形区域。这些视频块可以使用特定的预测模式来编码。
视频块可以以一种或多种方式被划分为一组或多组较小的块。块可以包括译码树块、预测块、变换块和/或其它合适的块。除非另外指定,否则通常对“块”的引用可以指代这样的视频块(例如,如本领域技术人员将理解的,译码树块、译码块、预测块、变换块、或其它适当的块或子块)。此外,这些块中的每个块在本文中也可以被互换地称为“单元”(例如,译码树单元(CTU)、译码单元、预测单元(PU)、变换单元(TU)等)。在一些情况下,单元可以指示在比特流中编码的译码逻辑单元,而块可以指示视频帧缓冲器中的过程所针对的一部分。
对于帧间预测模式,视频编码器可以在位于另一时间位置的帧(或图片)(被称为参考帧或参考图片)中搜索与正在被编码的块相似的块。视频编码器可以将搜索限制为距要被编码的块的某个空间位移。可以使用包括水平位移分量和垂直位移分量的二维(2D)运动矢量来定位最佳匹配。对于帧内预测模式,视频编码器可以基于来自在相同图片内的先前编码的邻近块的数据,使用空间预测技术来形成预测块。
视频编码器可以确定预测误差。例如,预测可以被确定为在正被编码的块和预测块中的像素值之间的差。预测误差还可以被称为残差。视频编码器还可以使用变换译码(例如,使用离散余弦变换(DCT)的形式、离散正弦变换(DST)的形式或其它合适的变换)来将变换应用于预测误差,以生成变换系数。在变换之后,视频编码器可以对变换系数进行量化。经量化的变换系数和运动矢量可以使用语法元素来表示,并且与控制信息一起形成对视频序列的经译码的表示。在一些实例中,视频编码器可以对语法元素进行熵译码,从而进一步减少用于其表示所需要的比特数量。
视频解码器可以使用上文讨论的语法元素和控制信息来构造用于解码当前帧的预测数据(例如,预测块)。例如,视频解码器可以将预测块和经压缩的预测误差相加。视频解码器可以通过使用经量化的系数对变换基函数进行加权,来确定经压缩的预测误差。在经重构的帧与原始帧之间的差被称为重构误差。
本文中描述用于高效视频译码和译码架构的系统、装置、方法(还被称为过程)和计算机可读介质。本文中所描述的技术可以用于实现高效视频译码器架构,如下文更详细地描述的。在一些示例中,本文中所描述的技术可以提供用于视频编码器的可伸缩且硬件高效的架构。视频编码器架构可以在高质量和高效视频译码结果的情况下提高硅面积效率。在一些情况下,示例视频编码器架构可以将视频编码管线划分为阶段。所述阶段可以包括在有限数量的帧上执行计算成本较高的操作(比如运动估计)的阶段、以及使用来自计算成本较高的操作的结果并且在视频编码管线中执行额外操作的另一阶段。额外操作可以包括计算成本较低的操作。与实现计算成本较高的操作的阶段相比,实现计算成本较低的操作的阶段可以处理较高数量的帧,并且可以将来自计算成本较高的操作的结果用于计算成本较低的操作中的至少一些操作。
在一些示例中,示例视频编码架构可以至少部分并行地实现视频编码管线的不同阶段,其中一个阶段在较少数量的帧上执行计算成本较高的操作,而另一阶段在较大数量的帧上执行计算成本较低的操作。在较大数量的帧上执行计算成本较低的操作的阶段可以使用来自计算成本较高的操作的结果,从而允许使用较少数量的计算成本较高的操作来准确且高效地对较大数量的帧进行编码。例如,在一些情况下,为了对视频中的帧集合进行译码,第一阶段可以对帧的子集执行运动估计,并且第二阶段可以对帧的完整集合执行额外译码操作。额外译码操作可以包括运动补偿。第二阶段可以使用来自帧的子集的运动估计信息进行运动补偿。第二阶段还可以执行计算成本较低的操作,以获得针对在第一阶段中未被处理并且不具有运动估计信息的帧的运动信息。
例如,第二阶段可以对针对在第一阶段中未被处理的帧的运动信息进行预测或插值。在一些示例中,第二阶段可以使用参考帧和/或来自第一阶段的运动估计信息来预测针对在第一阶段中未被处理的帧的运动信息。与在第一阶段中的运动估计操作相比,运动信息预测或插值操作可能是计算成本较低的。第二阶段可以使用来自第一阶段的运动估计信息和来自第二阶段的预测运动信息来对帧的完整集合执行运动补偿。第二阶段可以使用运动补偿结果来执行用于对帧集合进行译码的其它操作。在以上示例中,第一阶段和第二阶段中的术语“第一”和“第二”不用于标识或建议在阶段之间的特定顺序或时间关系,而是用于在讨论阶段时区分第一阶段和第二阶段。
本文中所描述的技术可以应用于任何视频译码技术。例如,本文中所描述的技术可以应用于各种基于块的视频译码技术(其中视频是在逐块的基础上重构的)中的一种或多种视频译码技术。本文中所描述的技术可以与以下各项一起使用:任何现有视频编解码器(例如,高效率视频译码(HEVC)、高级视频译码(AVC)或其它合适的现有视频编解码器)和/或正在开发的任何视频译码标准和/或未来的视频译码标准,例如基本视频译码(EVC)、通用视频译码(VVC)、联合开发模型(JEM)、VP9、AV1和/或正在开发或将开发的其它视频译码标准。
本技术将在以下公开内容中描述如下。讨论开始于对用于高效视频译码的示例系统、架构和技术的描述,如图1至图4中所示。然后将跟随对用于高效视频译码的示例方法的描述,如图5中所示。讨论以对示例编码设备架构和示例解码设备架构的描述结束,如图6和7中所示。本公开内容现在转向图1。
图1是示出包括编码设备104和解码设备112的示例系统100的方块图。编码设备104和解码设备112可以是同一设备或不同设备的一部分。在一些示例中,编码设备104可以是源设备的一部分,并且解码设备112可以是接收设备(还被称为客户端设备)的一部分。源设备和/或接收设备可以包括电子设备,比如移动或固定电话手机(例如,智能电话、蜂窝电话等)、台式计算机、膝上型计算机或笔记本计算机、平板计算机、机顶盒、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、互联网协议(IP)相机、在包括一个或多个服务器设备的服务器系统(例如,视频流服务器系统、或其它合适的服务器系统)中的服务器设备、头戴式显示器(HMD)、平视显示器(HUD)、智能眼镜(例如,虚拟现实(VR)眼镜、增强现实(AR)眼镜、或其它智能眼镜)、或任何其它合适的电子设备。
系统100的组件可以包括电子电路或其它电子硬件,和/或可以使用电子电路或其它电子硬件来实现,其可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)和/或其它合适的电子电路),和/或可以包括计算机软件、固件或其任何组合、和/或可以使用计算机软件、固件或其任何组合来实现,以执行本文中所描述的各种操作。
虽然系统100被示为包括某些组件,但是本领域技术人员将明白的是,系统100可以包括与在图1中所示的那些组件相比较多或较少的组件。例如,在一些实例中,系统100还可以包括除了存储装置108和存储装置118之外的一个或多个存储器设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲器组件、数据库组件、和/或其它存储器设备)、与一个或多个存储器设备相通信和/或电连接的一个或多个处理设备(例如,一个或多个CPU、GPU和/或其它处理设备)、用于执行无线通信的一个或多个无线接口(例如,包括用于每个无线接口的一个或多个收发机和基带处理器)、用于在一个或多个硬接线连接上执行通信的一个或多个有线接口(例如,比如通用串行总线(USB)输入之类的串行接口、照明连接器、和/或其它有线接口)、和/或在图1中未示出的其它组件。
本文中所描述的译码技术适用于各种多媒体应用中的视频译码,包括流式视频传输(例如,通过互联网)、电视广播或传输、对数字视频的编码以存储在数据存储介质上、对被存储在数据存储介质上的数字视频进行解码、或其它应用。在一些示例中,系统100可以支持单向或双向视频传输,以支持比如视频会议、视频流、视频回放、视频广播、游戏、扩展现实(例如,虚拟现实、增强现实等)和/或视频电话等的应用。
编码设备104(或编码器)可以实现下文更详细地描述的高效视频编码器管线和架构。在一些示例中,编码设备104可以使用视频译码标准或协议来对视频数据进行编码,以生成经编码的视频比特流。视频译码标准的示例包括ITU-T H.261、ISO/IEC MPEG-1视觉、ITU-T H.262、或ISO/IEC MPEG-2视觉、ITU-T H.263、ISO/IEC MPEG-4视觉、ITU-T H.264(还被称为ISO/IEC MPEG-4AVC)(包括其可伸缩视频译码(SVC)和多视图视频译码(MVC)扩展)、和高效率视频译码(HEVC)或ITU-T H.265。对HEVC的各种扩展处理多层视频译码存在,包括范围和屏幕内容译码扩展、3D视频译码(3D-HEVC)和多视图扩展(MV-HEVC)和可伸缩扩展(SHVC)。HEVC及其扩展已经由ITU-T视频译码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)的视频译码联合协作小组(JCT-VC)以及3D视频译码扩展开发联合协作小组(JCT-3V)开发。
MPEG和ITU-T VCEG也已经组建了联合开发视频组(JVET),以探索和开发用于下一代视频译码标准(被命名为通用视频译码(VVC))的新视频译码工具。参考软件被称为VVC测试模型(VTM))。VVC的目标是提供相比于现有HEVC标准而言在压缩性能方面的显著改进,帮助部署较高质量的视频服务和新兴应用(例如,比如360°全向沉浸式多媒体、高动态范围(HDR)视频等)。基本视频译码(EVC)、VP9和开放媒体联盟(AOMedia)视频1(AV1)是可以针对其应用本文中所描述的技术的其它视频译码标准。
可以使用视频编解码器(比如EVC、VTM、VVC、HEVC、AVC和/或其扩展)来执行本文中所描述的许多实施例。然而,本文中所描述的技术和系统还可以适用于其它译码标准或协议,比如MPEG、JPEG(或用于静态图像的其它译码标准)、VP9、AV1、其扩展、或已经可用或尚不可用或尚未开发的其它合适的译码标准。因此,尽管本文中所描述的技术和系统可能是参考特定的视频译码标准来描述的,但是本领域技术人员将明白的是,描述不应当被解释为仅适用于该特定的标准。
参考图1,视频源102可以将视频数据提供给编码设备104。视频源102可以是源设备的一部分,或者可以是除了源设备之外的设备的一部分。视频源102可以包括视频捕捉设备(例如,摄像机、照相电话、视频电话等),包含被存储的视频的视频存档单元、提供视频数据的视频服务器或内容提供商、从视频服务器或内容提供商接收视频的视频馈送接口、用于生成计算机图形视频数据的计算机图形系统、这样的源的组合、或任何其它合适的视频源。
来自视频源102的视频数据可以包括一个或多个输入图片。图片还可以被称为“帧”。图片或帧是静态图像,在一些情况下,是视频的一部分。在一些示例中,来自视频源102的数据可以是不作为视频的一部分的静态图像。在HEVC、VVC和其它视频译码规范中,视频序列可以包括一系列图片。图片可以包括三个样本阵列,被表示为SL、SCb和SCr。SL是亮度样本的二维阵列,SCb是Cb色度(chrominance)样本的二维阵列,并且SCr是Cr色度样本的二维阵列。色度样本在本文中还可以被称为“色度(chroma)”样本。在其它实例中,图片可以是单色的,并且可以仅包括亮度样本的阵列。
编码设备104的编码器引擎106(或编码器)对视频数据进行编码以生成经编码的视频比特流。在一些示例中,经编码的视频比特流(或“视频比特流”或“比特流”)是一系列的一个或多个经译码的视频序列。经译码的视频序列(CVS)包括一系列访问单元(AU),所述一系列访问单元开始于在基本层中具有随机访问点图片并且具有某些属性的AU,直到在基本层中具有随机访问点图片并且具有某些属性的下一AU并且不包括该下一AU。例如,开始CVS的随机访问点图片的某些属性可以包括等于1的RASL标志(例如,NoRaslOutputFlag)。否则,随机访问点图片(具有等于0的RASL标志)不开始CVS。
访问单元(AU)包括一个或多个经译码的图片以及与共享相同的输出时间的经译码的图片相对应的控制信息。图片的经译码的切片在比特流级别被封装为数据单元,该数据单元被称为网络抽象层(NAL)单元。例如,HEVC视频比特流可以包括一个或多个CVS,CVS包括NAL单元。NAL单元中的每个NAL单元具有NAL单元报头。在一个示例中,报头对于H.264/AVC(除了多层扩展之外)为一个字节,并且对于HEVC为两个字节。在NAL单元报头中的语法元素占用指定的比特,并且因此对于所有种类的系统和传输层(比如传输流、实时传输(RTP)协议、文件格式等)都是可见的。
在HEVC标准中存在两类NAL单元,包括视频译码层(VCL)NAL单元和非VCL NAL单元。VCL NAL单元包括形成经译码的视频比特流的经译码的图片数据。例如,在VCL NAL单元中存在形成经译码的视频比特流的比特序列。VCL NAL单元可以包括经译码的图片数据的一个切片或切片段(下文描述),并且非VCL NAL单元包括与一个或多个经译码的图片有关的控制信息。在一些情况下,NAL单元可以被称为分组。HEVC AU包括:包含经译码的图片数据的VCL NAL单元、以及与经译码的图片数据相对应的非VCL NAL单元(如果有的话)。除了其它信息之外,非VCL NAL单元还可以包含具有与经编码的视频比特流有关的高级别信息的参数集。例如,参数集可以包括视频参数集(VPS)、序列参数集(SPS)和图片参数集(PPS)。在一些情况下,比特流的每个切片或其它部分可以参考单个活跃的PPS、SPS和/或VPS,以允许解码设备112访问可以用于对比特流的切片或其它部分进行解码的信息。
NAL单元可以包含形成视频数据的经译码的表示的比特序列(例如,经编码的视频比特流、比特流的CVS等),比如在视频中的图片的经译码的表示。编码器引擎106通过将每个图片分割为多个切片来生成图片的经译码的表示。一切片是独立于其它切片的,使得在切片中的信息可以在不依赖于来自在相同的图片内的其它切片的数据的情况下进行译码。切片包括一个或多个切片段,包括独立的切片段以及(如果存在的话)依赖于先前切片段的一个或多个从属切片段。
在HEVC中,切片接着被分割为亮度样本和色度样本的译码树块(CTB)。亮度样本的CTB和色度样本的一个或多个CTB连同针对样本的语法一起被称为译码树单元(CTU)。CTU还可以被称为“树块”或“最大译码单元”(LCU)。CTU是用于HEVC编码的基本处理单元。CTU可以被拆分为大小不同的多个译码单元(CU)。CU包含被称为译码块(CB)的亮度和色度样本阵列。
亮度和色度CB可以进一步被拆分为预测块(PB)。PB是亮度分量或色度分量的样本块,所述样本块使用相同的运动参数来进行帧间预测或块内复制(IBC)预测(当可用或被启用以供使用时)。亮度PB和一个或多个色度PB连同相关联的语法一起形成预测单元(PU)。对于帧间预测,用于每个PU的运动参数集(例如,一个或多个运动矢量、参考索引等)在比特流中被用信号通知,并且用于亮度PB和一个或多个色度PB的帧间预测。运动参数还可以被称为运动信息。CB还可以被分割为一个或多个变换块(TB)。TB表示色彩分量的样本的正方形块,对所述正方形块应用残差变换(例如,在一些情况下,相同的二维变换)以对预测残差信号进行译码。变换单元(TU)表示亮度样本和色度样本的TB以及对应的语法元素。下文更加详细地描述变换译码。
CU的大小对应于译码模式的大小并且可以是正方形形状。例如,CU的大小可以是8x8个样本、16x16个样本、32x32个样本、64x64个样本、或高达对应的CTU的大小的任何其它适当的大小。短语“N x N”在本文中用于指代视频块在垂直和水平维度方面的像素尺寸(例如,8个像素x8个像素)。块中的像素可以按行和列来排列。在一些实施例中,块在水平方向上可以不具有与垂直方向上相同数量的像素。与CU相关联的语法数据可以描述例如CU到一个或多个PU的分割。分割模式可以在CU是帧内预测模式编码的还是帧间预测模式编码的之间而不同。PU可以被分割为非正方形形状。与CU相关联的语法数据还可以例如描述根据CTU的CU到一个或多个TU的分割。TU可以是正方形或非正方形形状。
根据HEVC标准,可以使用变换单元(TU)来执行变换。对于不同的CU,TU可以不同。可以基于在给定CU内的PU的大小来设定TU的大小。TU可以具有与PU相比相同的大小或者较小的大小。在一些示例中,可以使用被称为残差四叉树(RQT)的四叉树结构来将与CU相对应的残差样本细分为较小的单元。RQT的叶节点可以对应于TU。与TU相关联的像素差值可以被变换以产生变换系数。然后,变换系数可以由编码器引擎106进行量化。
一旦视频数据的图片被分割为CU,编码器引擎106就使用预测模式来预测每个PU。然后从原始视频数据中减去预测单元或预测块以获得残差(下文描述的)。对于每个CU,可以使用语法数据在比特流内用信号通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用在图片内的空间相邻的样本之间的相关性。例如,使用帧内预测,每个PU是使用例如以下预测来根据在相同的图片中的相邻图像数据进行预测的:用于找到针对PU的平均值的DC预测,用于使平面表面适应PU的平面预测,用于根据相邻数据进行外推的方向预测,或者任何其它适当类型的预测。帧间预测使用在图片之间的时间相关性,以便推导出用于图像样本块的运动补偿的预测。例如,使用帧间预测,每个PU是使用运动补偿预测来根据在一个或多个参考图片(按照输出次序在当前图片之前或之后)中的图像数据进行预测的。例如,可以在CU级别处作出是使用图片间预测还是图片内预测来对图片区域进行译码的决定。
在一些示例中,编码器引擎106和解码器引擎116(下文更加详细地描述)可以被配置为根据VVC进行操作。根据VVC,视频译码器(比如编码器引擎106和/或解码器引擎116)将图片分割为多个译码树单元(CTU)(其中亮度样本的CTB和色度样本的一个或多个CTB连同用于样本的语法一起被称为CTU)。视频译码器可以根据树结构(比如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)来分割CTU。QTBT结构去除了多种分割类型(比如在HEVC的CU、PU和TU之间的分离)的概念。QTBT结构包括两个级别,包括根据四叉树分割来进行分割的第一级别、以及根据二叉树分割来进行分割的第二级别。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。
在MTT分割结构中,可以使用四叉树分割、二叉树分割以及一种或多种类型的三叉树分割来对块进行分割。三叉树分割是其中块被分为三个子块的分割。在一些示例中,三叉树分割将块划分为三个子块,而不通过中心地划分原始块。在MTT中的分割类型(例如,四叉树、二叉树和三叉树)可以是对称的或不对称的。
在一些示例中,视频译码器可以使用单个QTBT或MTT结构来表示亮度分量和色度分量中的每者,而在其它示例中,视频译码器可以使用两个或更多个QTBT或MTT结构,比如用于亮度分量的一个QTBT或MTT结构以及用于两个色度分量的另一QTBT或MTT结构(或者用于相应的色度分量的两个QTBT和/或MTT结构)。
视频译码器可以被配置为使用根据HEVC的四叉树分割、QTBT分割、MTT分割、或其它分割结构。出于说明性的目的,本文的描述可以参考QTBT分割。然而,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树分割或者还使用其它类型的分割的视频译码器。
在一些示例中,图片的一个或多个切片被指派切片类型。切片类型包括帧内译码切片(I切片)、帧内译码P切片和帧内译码B切片。I切片(帧内译码帧,可独立地解码)是图片的仅通过帧内预测来译码的切片,并且因此是可独立解码的,因为I切片仅需要在帧内的数据来预测切片的任何预测单元或预测块。P切片(单向预测帧)是图片的可以利用帧内预测和单向帧间预测来译码的切片。在P切片内的每个预测单元或预测块是利用帧内预测或帧间预测来译码的。当应用帧间预测时,预测单元或预测块是仅通过一个参考图片来预测的,并且因此参考样本仅来自一个帧的一个参考区域。B切片(双向预测帧)是图片的可以利用帧内预测和帧间预测(例如,双向预测或单向预测)来译码的切片。B切片的预测单元或预测块可以根据两个参考图片进行双向预测,其中每个图片贡献一个参考区域,并且对两个参考区域的样本集进行加权(例如,利用相等的权重或利用不同的权重)以产生双向预测块的预测信号。如上文所解释的,一个图片的切片被独立地译码。在一些情况下,图片可以作为仅一个切片进行译码。
如上文所指出的,图片内预测利用在图片内的在空间上相邻的样本之间的相关性。存在多种帧内预测模式(还被称为“帧内模式”)。在一些示例中,亮度块的帧内预测包括35种模式,包括平面模式、DC模式和33种角度模式(例如,对角线帧内预测模式和与对角线帧内预测模式相邻的角度模式)。如下表1中所示,对帧内预测的35种模式进行索引。在其它示例中,可以定义更多的帧内模式,包括可能尚未由33种角度模式表示的预测角度。在其它示例中,与角度模式相关联的预测角度可以与在HEVC中使用的那些预测角度不同。
帧内预测模式 相关联的名称
0 INTRA_PLANAR
1 INTRA_DC
2..34 INTRA_ANGULAR2..INTRA_ANGULAR34
表1-帧内预测模式和相关联的名称的规范
图片间预测使用在图片之间的时间相关性,以便推导针对图像样本块的运动补偿的预测。使用平移运动模型,块在先前经解码的图片(参考图片)中的位置由运动矢量(Δx,Δy)来表示,其中Δx指定参考块相对于当前块的位置的水平位移,以及Δy指定参考块相对于当前块的位置的垂直位移。在一些情况下,运动矢量(Δx,Δy)可以具有整数样本精确度(还被称为整数精确度),在这种情况下,运动矢量指向参考帧的整数像素网格(或整数像素采样网格)。在一些情况下,运动矢量(Δx,Δy)可以具有分数样本精确度(还被称为分数像素精确度或非整数精确度),以更加准确地捕捉底层对象的运动,而不受限于参考帧的整数像素网格。运动矢量的精确度可以通过运动矢量的量化水平来表示。例如,量化水平可以是整数精确度(例如,1像素)或分数像素精确度(例如,1/4像素、1/2像素或其它子像素值)。当对应的运动矢量具有分数样本精确度时,对参考图片应用插值法以推导预测信号。例如,可以对在整数位置处可用的样本进行滤波(例如,使用一个或多个插值滤波器)以估计在分数位置处的值。先前解码的参考图片可以由针对参考图片列表的参考索引(refIdx)来指示。运动矢量和参考索引可以被称为运动参数。可以执行两种图片间预测,包括单向预测和双向预测。
在使用双向预测进行帧间预测的情况下,可以使用两个运动参数集(Δx0,y0,refIdx0和Δx1,y1,refIdx1)来生成两个运动补偿的预测(根据同一参考图片或可能根据不同的参考图片)。例如,在双向预测的情况下,每个预测块使用两个运动补偿的预测信号,并且生成B预测单元。然后将两个运动补偿的预测进行组合以获得最终的运动补偿的预测。例如,可以通过进行平均来组合两个运动补偿的预测。在另一示例中,可以使用加权预测,在这种情况下,可以将不同的权重应用于每个运动补偿的预测。可以在双向预测中使用的参考图片被存储在两个单独的列表中,分别被表示为列表0和列表1。可以在编码器处使用运动估计过程来推导运动参数。
在使用单向预测进行帧间预测的情况下,使用一个运动参数集(Δx0,y0,refIdx0)来根据参考图片生成运动补偿的预测。例如,在单向预测的情况下,每个预测块使用最多一个运动补偿的预测信号,以及生成P预测单元。
PU可以包括与预测过程相关的数据(例如,运动参数或其它合适的数据)。例如,当PU是使用帧内预测来编码的时,PU可以包括描述用于PU的帧内预测模式的数据。作为另一示例,当PU是使用帧间预测来编码的时,PU可以包括定义用于PU的运动矢量的数据。定义用于PU的运动矢量的数据可以描述例如运动矢量的水平分量(Δx)、运动矢量的垂直分量(Δy)、用于运动矢量的分辨率(例如,整数精度、四分之一像素精度、或八分之一像素精度)、运动矢量指向其的参考图片、参考索引、用于运动矢量的参考图片列表(例如,列表0、列表1或列表C)、或其任何组合。
在使用帧内预测和/或帧间预测执行预测之后,编码设备104可以执行变换和量化。例如,在预测之后,编码器引擎106可以计算与PU相对应的残差值。残差值可以包括在正被译码的当前像素块(PU)与用于预测当前块的预测块(例如,当前块的预测版本)之间的像素差值。例如,在生成预测块(例如,使用帧间预测或帧内预测)之后,编码器引擎106可以通过从当前块中减去由预测单元产生的预测块来生成残差块。残差块包括像素差值集合,其对在当前块的像素值与预测块的像素值之间的差进行量化。在一些示例中,可以用二维块格式(例如,像素值的二维矩阵或阵列)来表示残差块。在这样的示例中,残差块是像素值的二维表示。
使用块变换来对在执行预测之后可能剩余的任何残差数据进行变换,块变换可以是基于离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、小波变换、其它合适的变换函数、或其任何组合的。在一些情况下,可以将一个或多个块变换(例如,具有大小32x32、16x16、8x8、4x4或其它合适的大小的内核)应用于在每个CU中的残差数据。在一些示例中,TU可以用于由编码器引擎106实现的变换和量化过程。具有一个或多个PU的给定CU也可以包括一个或多个TU。如下文更详细描地述的,可以使用块变换来将残差值变换为变换系数,以及然后可以使用TU进行量化和扫描,以产生用于熵译码的串行化变换系数。
在一些示例中,在使用CU的PU进行帧内预测或帧间预测译码之后,编码器引擎106可以计算用于CU的TU的残差数据。PU可以包括空间域(或像素域)中的像素数据。如先前所指出的,残差数据可以对应于在未经编码的图片的像素与对应于PU的预测值之间的像素差值。编码器引擎106可以形成包括用于CU(其包括PU)的残差数据的一个或多个TU,以及然后可以对TU进行变换以产生用于CU的变换系数。TU可以包括在应用块变换之后在变换域中的系数。
编码器引擎106可以执行对变换系数的量化。量化通过对变换系数进行量化以减少用于表示系数的数据量,来提供进一步的压缩。例如,量化可以减小与系数中的一些或所有系数相关联的比特深度。在一个示例中,具有n比特的值的系数可以在量化期间向下舍入为m比特的值,其中n大于m。
一旦执行了量化,则经译码的视频比特流包括经量化的变换系数、预测信息(例如,预测模式、运动矢量、块矢量等)、分割信息以及任何其它合适的数据(比如其它语法数据)。经译码的视频比特流的不同的元素然后可以由编码器引擎106进行熵编码。在一些示例中,编码器引擎106可以利用预定义的扫描顺序来扫描经量化的变换系数,以产生可以被熵编码的串行化矢量。在一些示例中,编码器引擎106可以执行自适应扫描。在扫描经量化的变换系数以形成矢量(例如,一维矢量)之后,编码器引擎106可以对该矢量进行熵编码。例如,编码器引擎106可以使用上下文自适应可变长度译码、上下文自适应二进制算术译码、基于语法的上下文自适应二进制算术译码、概率区间分割熵译码或另一合适的熵编码技术。
编码设备104的输出110可以通过通信链路120向接收设备的解码设备112发送构成经编码的视频比特流数据的NAL单元。解码设备112的输入114可以接收NAL单元。通信链路120可以包括由无线网络、有线网络或者有线网络和无线网络的组合提供的信道。无线网络可以包括任何无线接口或无线接口的组合,并且可以包括任何合适的无线网络(例如,互联网或其它广域网、基于分组的网络、WiFiTM、射频(RF)、UWB、WiFi直连、蜂窝、长期演进(LTE)、WiMaxTM等)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、基于同轴电缆的以太网、数字信号线(DSL)等)。可以使用各种装置来实现有线和/或无线网络,比如基站、路由器、接入点、网桥、网关、交换机等。经编码的视频比特流数据可以根据比如无线通信协议之类的通信标准来调制,并且发送到接收设备。
在一些示例中,编码设备104可以将经编码的视频比特流数据存储在存储装置108中。输出110可以从编码器引擎106或从存储装置108取回经编码的视频比特流数据。存储装置108可以包括各种分布式或本地访问的数据存储介质中的任何数据存储介质。例如,存储装置108可以包括硬盘驱动器、存储盘、闪速存储器、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它合适的数字存储介质。存储装置108还可以包括一个或多个缓冲器,比如用于存储参考图片以供在帧间预测中使用的解码图片缓冲器(DPB)。在进一步的示例中,存储装置108可以对应于可以存储由源设备生成的经编码的视频的文件服务器或另一中间存储设备。在这样的情况下,包括解码设备112的接收设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据并且将该经编码的视频数据发送给接收设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。接收设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。这可以包括适于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。经编码的视频数据从存储装置108的传输可以是流式传输、下载传输或其组合。
解码设备112的输入114接收经编码的视频比特流数据,并且可以将视频比特流数据提供给解码器引擎116,或者提供给存储装置118以供解码器引擎116稍后使用。例如,存储装置118可以包括用于存储参考图片以供在帧间预测中使用的DPB。包括解码设备112的接收设备可以经由存储装置108来接收要被解码的经编码的视频数据。经编码的视频数据可以根据比如无线通信协议之类的通信标准进行调制,并且被发送给接收设备。用于发送经编码的视频数据的通信介质可以包括任何无线或有线通信介质,比如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,比如局域网、广域网或比如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备到接收设备的通信的任何其它装置。
解码器引擎116可以通过熵解码(例如,使用熵解码器)构成经编码的视频数据的一个或多个经译码的视频序列并且提取视频序列的元素,来对经编码的视频比特流数据进行解码。然后,解码器引擎116可以重新缩放经编码的视频比特流数据并且对其执行逆变换。然后将残差数据传递到解码器引擎116的预测阶段。然后,解码器引擎116预测像素块(例如,PU)。在一些示例中,预测被加到逆变换的输出(残差数据)。
视频解码设备112可以将经解码的视频输出到视频目的地设备122,视频目的地设备122可以包括用于将经解码的视频数据显示给内容消费者的显示器或其它输出设备。在一些方面中,视频目的地设备122可以是包括解码设备112的接收设备的一部分。在一些方面中,视频目的地设备122可以是不同于接收设备的单独的设备的一部分。
在一些示例中,视频编码设备104和/或视频解码设备112可以分别与音频编码设备和音频解码设备整合。视频编码设备104和/或视频解码设备112还可以包括实现上文描述的译码技术所必需的其它硬件或软件,比如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任何组合。视频编码设备104和视频解码设备112可以被整合成在相应的设备中的组合的编码器/解码器(编解码器)的一部分。
在图1中示出的示例系统是可以在本文中使用的一个说明性示例。用于使用本文中所描述的技术来处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管一般来说,本公开内容的技术是由视频编码设备执行的,但是所述技术还可以由通常被称为“CODEC”的组合的视频编码器-解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和接收设备仅是这样的译码设备的示例,其中,源设备生成经译码的视频数据以传输给接收设备。在一些示例中,源设备和接收设备可以以基本上对称的方式进行操作,使得设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。
HEVC标准的扩展包括被称为MV-HEVC的多视图视频译码扩展、以及被称为SHVC的可伸缩视频译码扩展。MV-HEVC和SHVC扩展共享分层译码的概念,其中不同的层被包括在经编码的视频比特流中。在经译码的视频序列中的每个层是通过唯一的层标识符(ID)来寻址的。层ID可以存在于NAL单元的报头中,以标识NAL单元与其相关联的层。在MV-HEVC中,不同的层通常表示在视频比特流中的相同场景的不同视图。在SHVC中,提供了以不同的空间分辨率(或图片分辨率)或不同的重构保真度来表示视频比特流的不同的可伸缩层。可伸缩层可以包括基本层(其中层ID=0)和一个或多个增强层(其中层ID=1,2,…n)。基本层可以符合HEVC的第一版本的简档,并且表示在比特流中的最低可用层。与基本层相比,增强层具有增加的空间分辨率、时间分辨率或帧速率、和/或重构保真度(或质量)。增强层是分层次地组织的,并且可以依赖于(或者可以不依赖于)较低层。在一些示例中,不同的层可以使用单标准编解码器进行译码(例如,所有层是使用HEVC、SHVC或其它译码标准进行编码的)。在一些示例中,不同的层可以使用多标准编解码器进行译码的。例如,基本层可以使用AVC进行译码,而一个或多个增强层可以使用SHVC和/或HEVC标准的MV-HEVC扩展进行译码。
如上所述,对于每个块,运动信息(本文中还被称为运动参数)集合可以是可用的。运动信息集合可以包含用于前向预测方向和/或后向预测方向的运动信息。这里,前向预测方向和后向预测方向是双向预测模式的两个预测方向,并且术语“前向”和“后向”不一定具有几何含义。相反,“前向”和“后向”可以对应于当前图片、切片或块的参考图片列表0(RefPicList0)和参考图片列表1(RefPicList1)。在一些示例中,当仅有一个参考图片列表可用于图片、切片或块时,仅RefPicList0是可用的,并且切片的每个块的运动信息总是前向的。在一些示例中,RefPicList0包括在时间上位于当前图片之前的参考图片,并且RefPicList1包括在时间上位于当前图片之后的参考图片。在一些情况下,可以在解码过程中使用运动矢量连同相关联的参考索引。这样的具有相关联的参考索引的运动矢量被表示为单向预测运动信息集合。
对于每个预测方向,运动信息可以包含参考索引和运动矢量。在一些情况下,为了简单起见,运动矢量可以具有相关联的信息,根据该信息可以假设运动矢量具有相关联的参考索引。参考索引可以用于标识在当前参考图片列表(RefPicList0或RefPicList1)中的参考图片。运动矢量可以具有水平分量和垂直分量,水平分量和垂直分量提供从在当前图片中的坐标位置到在由参考索引标识的参考图片中的坐标位置的偏移。例如,参考索引可以指示应当用于在当前图片中的块的特定参考图片,并且运动矢量可以指示在参考图片中最佳匹配的块(与当前块最佳匹配的块)在参考图片中位于何处。
图片顺序计数(POC)可以在视频译码标准中用于标识图片的显示顺序。尽管存在一个经译码的视频序列内的两个图片可能具有相同的POC值的情况,但是在一个经译码的视频序列内,具有相同POC值的两个图片不经常发生。当在比特流中存在多个经译码的视频序列时,具有相同的POC值的图片在解码顺序方面可能彼此较为接近。图片的POC值可以用于参考图片列表构造(如在HEVC中的参考图片集合的推导)和/或运动矢量缩放等。
在H.264/AVC中,每个帧间宏块(MB)可以以四种不同的方式来分割,包括:一个16x16宏块分区;两个16x8宏块分区;两个8x16宏块分区;以及四个8x8宏块分区,等等。在一个宏块中的不同宏块分区可以具有针对每个预测方向的不同的参考索引值(例如,针对RefPicList0和RefPicList1的不同的参考索引值)。
在一些情况下,当宏块未被分割为四个8x8宏块分区时,宏块在每个预测方向上可以仅具有针对每个宏块分区的一个运动矢量。在一些情况下,当宏块被分割为四个8x8宏块分区时,每个8x8宏块分区可以被进一步分割为子块,其中每个子块在每个预测方向上可以具有不同的运动矢量。8x8宏块分区可以以不同的方式被划分成子块,包括:一个8x8子块;两个8x4子块;两个4x8子块;以及四个4x4子块,等等。每个子块在每个预测方向上可以具有不同的运动矢量。因此,运动矢量可以存在于等于或高于子块的级别中。
在HEVC中,在切片中的最大译码单元被称为译码树块(CTB)或译码树单元(CTU)。CTB包含四叉树,其节点是译码单元。在HEVC主简档中,CTB的大小范围可以从16x16像素到64x64像素。在一些情况下,可以支持8x8像素CTB大小。可以以四叉树的方式将CTB递归地拆分成译码单元(CU)。CU可以具有与CTB相同的大小并且可以小到8x8像素。在一些情况下,每个译码单元是利用一种模式(比如帧内预测模式或帧间预测模式)进行译码的。当CU是使用帧间预测模式进行帧间译码的时,CU还可以被分割为两个或四个预测单元(PU),或者当不应用进一步的分割时被视为一个PU。当在一个CU中存在两个PU时,这两个PU可以是一半大小的矩形,或者是大小为CU大小的1/4或3/4的两个矩形。
当CU是帧间译码的时,针对每个PU可以存在一个运动信息集合,运动信息集合可以是利用唯一帧间预测模式来推导的。例如,每个PU可以利用一种帧间预测模式来译码,以推导运动信息集合。在一些情况下,当CU是使用帧内预测模式进行帧内译码的时,PU形状可以是2Nx2N和NxN。在每个PU内,对单个帧内预测模式进行译码(而色度预测模式是在CU级用信号通知的)。在一些情况下,在当前CU大小等于在SPS中定义的最小CU大小时,允许NxN PU内形状。
对于在HEVC中的运动预测,存在针对预测单元(PU)的两种帧间预测模式,包括合并模式和高级运动矢量预测(AMVP)模式。跳过被视为合并的特殊情况。在AMVP模式或合并模式下,可以维护针对多个运动矢量预测器的运动矢量(MV)候选列表。在合并模式下当前PU的运动矢量以及参考索引是通过从MV候选列表中提取一个候选来生成的。
在一些示例中,MV候选列表包含用于合并模式的多达五个候选以及用于AMVP模式的两个候选。在其它示例中,不同数量的候选可以被包括在用于合并模式和/或AMVP模式的MV候选列表中。合并候选可以包含运动信息集合。例如,运动信息集合可以包括与两个参考图片列表(列表0和列表1)相对应的运动矢量以及参考索引。如果合并候选是通过合并索引来标识的,则参考图片被用于当前块的预测,以及相关联的运动矢量被确定。然而,在AMVP模式下,针对来自列表0或列表1的每个潜在预测方向,需要明确地用信号通知参考索引连同对MV候选列表的MV预测器(MVP)索引,因为AMVP候选仅包含运动矢量。在AMVP模式中,可以进一步细化预测运动矢量。
合并候选可以对应于完整的运动信息集合,而AMVP候选可以包含用于特定预测方向的一个运动矢量和参考索引。可以类似地根据相同的空间和时间相邻块来推导用于两种模式的候选。
在一些示例中,合并模式允许帧间预测的PU从如下的帧间预测的PU继承相同的一个或多个运动矢量、预测方向以及一个或多个参考图片索引:该帧间预测的PU包括从一组空间上相邻的运动数据位置中选择的运动数据位置以及两个时间上同位的运动数据位置中的一个运动数据位置。对于AMVP模式,可以相对于来自由编码器构造的AMVP候选列表中的一个或多个运动矢量预测器(MVP),来对PU的一个或多个运动矢量进行预测译码。在一些实例中,对于PU的单方向帧间预测,编码器可以生成单个AMVP候选列表。在一些实例中,对于PU的双向预测,编码器可以生成两个AMVP候选列表,一者使用来自前向预测方向的空间和时间相邻的PU的运动数据,并且一者使用来自后向预测方向的空间和时间相邻的PU的运动数据。
用于两种模式的候选可以从空间和/或时间相邻块来推导。空间MV候选是根据用于特定PU(PU0)的相邻块来推导的,但是对于合并模式和AMVP模式,根据块来生成候选的方法不同。在合并模式下,编码器可以通过考虑来自各种运动数据位置的合并候选来形成合并候选列表。
在一些情况下,视频编码器硬件可以包括多个子系统和处理管道,如图2A和2B中所示。在一些示例中,处理管道可以执行各种视频处理操作,比如运动估计、运动补偿、变换和量化等。在一些情况下,处理管道可以并行地执行处理操作。
图2A是示出视频编码硬件引擎的示例架构200的方块图。在一些情况下,架构200可以由图1中所示的编码设备104实现。在一些示例中,架构200可以由图1中所示的编码设备104的编码器引擎106实现。
在该示例中,视频编码硬件引擎的架构200可以包括控制处理器210、接口222、视频流处理器(VSP)212、处理管道214-220、直接存储器访问(DMA)子系统230和一个或多个缓冲器232。在一些示例中,架构200可以包括用于存储数据(比如帧、视频、译码信息、输出等)的存储器240。在其它示例中,存储器240可以是在实现视频编码硬件引擎的译码设备上的外部存储器。
接口222可以通过在视频编码硬件引擎和/或实现视频编码硬件引擎的译码设备上的通信系统或系统总线,在视频编码硬件引擎和/或视频译码设备的组件之间传输数据。例如,接口222可以将控制处理器210、VSP 212、处理管道214-220、直接存储器访问(DMA)子系统230和/或一个或多个缓冲器232与在视频编码硬件引擎和/或译码设备上的系统总线连接。在一些示例中,接口222可以包括基于网络的通信子系统,比如片上网络(NoC)。
DMA子系统230可以允许视频编码硬件引擎的其它组件(例如,在架构200中的其它组件)访问在视频编码硬件引擎和/或实现视频编码硬件引擎的视频译码设备上的存储器。例如,DMA子系统230可以提供对存储器240和/或一个或多个缓冲器232的访问。在一些示例中,DMA子系统230可以管理对公共存储器单元和相关联的数据业务(例如,帧202、块204A-D、比特流236、经解码的数据238等)的访问。
存储器240可以包括一个或多个内部或外部存储器设备,比如但不限于一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲器组件和/或其它存储器设备。存储器240可以存储由视频编码硬件引擎和/或视频译码设备使用的数据,比如帧、处理参数、输入数据、输出数据和/或任何其它类型的数据。
控制处理器210可以包括一个或多个处理器。控制处理器210可以对视频编码硬件引擎的组件(例如,架构200中的其它组件)进行控制和/或编程。在一些示例中,控制处理器210可以与图2A中未示出的其它驱动器、应用和/或组件对接。例如,在一些情况下,控制处理器210可以与视频译码设备上的应用处理器对接。
VSP 212可以执行比特流解析(例如,将网络抽象层、图片层和切片层分离)和熵译码操作。在一些示例中,VSP 212可以执行编码功能,比如可变长度编码。例如,VSP 212可以实现无损压缩算法来压缩比特流236。在一些示例中,VSP 212可以执行算术译码,比如上下文、自适应二进制算术译码(CABAC)和/或任何其它译码算法。
处理管道214-220可以执行视频像素操作,比如运动估计、运动补偿、变换和量化、图像解块和/或任何其它视频像素操作。处理管道214-220(和/或每个单独的处理管道)可以并行地执行特定的视频像素操作。例如,每个处理管道可以同时和/或显著并行地执行多个操作(和/或处理数据)。作为另一示例,多个处理管道可以同时和/或显著并行地执行操作(和/或处理数据)。
在一些示例中,处理管道214-220可以并行地(或基本并行地)处理像素、块和/或帧。例如,处理管道214-220可以跨越帧202的块204A、204B、204C、204D的行,并行地执行视频像素处理操作。作为另一示例,参考图2B,处理管道214-220可以并行地对多个帧250、252、254、256执行视频像素处理操作。在一些示例中,每个处理管道可以并行地对一个或多个帧执行视频像素处理操作。例如,处理管道214可以并行地对一个或多个帧250执行运动估计、运动补偿、变换、量化和/或解块操作。
返回到图2A,处理管道214-220可以将视频像素处理数据(例如,视频像素处理输出、输入、参数、像素数据、处理同步数据等)存储到一个或多个缓冲器232并且从一个或多个缓冲器232取回视频像素处理数据。在一些情况下,一个或多个缓冲器232可以包括单个缓冲器。在其它情况下,一个或多个缓冲器232可以包括多个缓冲器。在一些示例中,一个或多个缓冲器232可以包括全局输入/输出线缓冲器和管道同步缓冲器。在一些情况下,管道同步缓冲器可以临时存储用于同步来自由处理管道214-220执行的视频像素处理操作的数据和/或结果的数据。
在一些示例中,VSP 212可以压缩与视频或帧序列相关联的比特流236,并且存储与比特流236相关联的经熵解码的数据238,以供处理管道214-220处理。在一些情况下,VSP212可以使用DMA子系统230从存储器取回比特流236,并且将经熵解码的数据238存储在存储器中,DMA子系统230可以管理对存储器组件和/或单元的访问,如先前所指出的。处理管道214-220可以取回经熵解码的数据238(例如,经由DMA子系统230),并且对与比特流236相关联的帧202的块204A-D(和/或如图2B中所示的帧250-256)执行视频像素处理操作。
处理管道214-220可以并行地执行视频像素处理操作,如先前所描述的。处理管道214-220可以从一个或多个缓冲器232取回视频像素处理输入和输出并且将视频像素处理输入和输出存储在一个或多个缓冲器232中(例如,经由DMA子系统230)。例如,由处理管道214实现的运动估计算法可以对块204A执行运动估计,并且将针对块204A计算的运动估计信息存储在一个或多个缓冲器232中。由处理管道214实现的运动补偿算法可以从一个或多个缓冲器232取回运动估计信息,并且使用运动估计信息来执行针对块204A的运动补偿。当运动补偿算法正在执行运动补偿时,运动估计算法可以执行针对下一块的运动估计。
运动补偿算法可以将运动补偿结果存储在一个或多个缓冲器232中,一个或多个缓冲器232可以由变换、量化和解块算法访问和使用以针对块204A执行变换、量化和解块。当变换、量化和/或解块算法针对块204A执行变换、量化和/或解块时,运动补偿算法可以针对下一块执行运动补偿。变换、量化和解块算法可以针对块204A和下一块类似地并行地执行相应的操作。在一些示例中,运动估计、运动补偿、变换、量化和解块算法可以并行地对不同块执行相应的操作。
处理管道214-220可以由硬件和/或软件组件实现。例如,处理管道214-220可以由一个或多个像素处理器实现。在一些示例中,每个处理管道可以由一个或多个硬件组件实现。在一些情况下,每个处理管道可以使用不同的硬件单元和/或组件来实现在处理管道的管线中的不同阶段,比如图3A中所示的管线300或图3B中所示的修改的管线340。
图2A和2B中所示的处理管道的数量仅是出于解释目的而提供的示例。本领域技术人员将理解,架构200可以包括与图2A和2B中所示的处理管道相比较多或较少的处理管道。例如,可以增加或减少由架构200实现的处理管道的数量,以包括较多或较少的处理管道。此外,虽然架构200被示为包括某些组件,但是本领域技术人员将理解,架构200可以包括与图2A和2B中所示的组件相比较多或较少的组件。例如,在一些实例中,架构200还可以包括其它存储设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲器组件、数据库组件和/或其它存储设备),处理设备(例如,一个或多个CPU、GPU和/或其它处理设备)、接口(例如,内部总线等)和/或图2A和2B中未示出的其它组件。
图3A和3B是示出由单个处理管道(比如处理管道214、216、218或220)实现的操作的示例管线的示意图。图3A示出包括像素处理操作的五个阶段的示例管线300,并且图3B示出被修改为实现像素处理操作的两个阶段的示例管线340,其可以在不利用额外硬件(或利用较少数量的额外硬件)的情况下提供增加的性能,并且具有较高的硅面积效率(例如,而不增加整体硅面积)。
参考图3A,示例管线300中的像素处理操作的五个阶段可以包括:用于运动估计310的阶段330、用于运动补偿312的阶段332、用于前向变换和量化316的阶段334、用于逆变换和量化318的阶段336以及用于图像解块322的阶段338。
在一些示例中,处理管道可以并行地执行管线300的五个阶段330-338。例如,处理管道可以针对帧的不同宏块或LCU并行地执行管线300的每个阶段。为了说明,在阶段330处,处理管道可以针对当前帧302中的当前块执行运动估计310,以确定用于该块的运动信息。处理管道可以使用当前帧302和参考帧304来执行运动估计310。运动信息可以包括针对当前块计算的一个或多个运动矢量。运动信息还可以包括在运动估计310中使用的译码模式。一个或多个运动矢量可以估计当前块的运动。例如,运动矢量可以指示当前帧302内的当前块的预测单元(PU)相对于参考帧304内的预测块的位移。在一些示例中,预测块可以包括被发现在像素差和/或时间冗余方面与当前块的PU紧密匹配的块。
在阶段332处,处理管道可以使用参考帧304和来自运动估计310的运动信息来针对当前块执行运动补偿312和图像减法314。在针对当前块执行运动补偿312和图像减法314时,处理管道可以针对第二块执行阶段330(例如,运动估计310)。例如,处理管道可以并行地针对当前块执行运动补偿312和图像减法314并且针对第二块执行运动估计310。
运动补偿312可以包括基于由运动估计310确定的运动矢量来获取或生成预测块。在一些示例中,运动补偿312可以定位在参考图片列表中运动矢量指向其的预测块。图像减法314可以通过从正在被译码的当前块的像素值中减去预测块的像素值(从而形成像素差值)来形成残差块。像素差值形成针对块的残差数据,并且可以包括亮度差分量和色度差分量。
在阶段334处,处理管道可以执行前向变换和量化316,以将来自运动补偿312的残差数据变换为经量化的变换系数。处理管道可以应用前向变换,比如离散余弦变换(DCT)或概念上类似的变换。在一些示例中,前向变换可以将残差数据从像素域转换为变换域,比如频域。处理管道可以对变换系数进行量化以进一步降低比特速率。量化可以减小与系数中的一些或全部系数相关联的比特深度。可以通过调整量化参数来修改量化程度。
处理管道可以对残差数据执行前向变换和量化316,同时针对第二块执行运动补偿312并且针对第三块执行运动估计310。在阶段336处,处理管道可以对来自前向变换和量化316的经量化的变换系数执行逆变换和量化318。在一些示例中,逆变换和量化318可以在像素域中重构残差块,以便稍后用作参考块。
求和器320可以将经重构的残差块与由运动补偿312产生的运动补偿的预测块相加,以产生经重构的块。在一些示例中,经重构的块可以用作用于阶段330和332(例如,运动估计310和运动补偿312)的参考块,以预测不同的块。
处理管道可以执行阶段336(例如,逆变换和量化318),同时针对与第二块相关联的残差块执行阶段334(例如,前向变换和量化316),针对第三块执行阶段332(例如,运动补偿312),并且针对第四块执行阶段330(例如,运动估计310)。
在阶段338处,处理管道可以将解块322应用于经重构的块。解块322可以包括应用于经重构的块的一个或多个解块滤波器。处理管道可以对经重构的块执行阶段338(例如,解块322),同时针对与第二块相关联的经量化的变换系数执行阶段336(例如,逆变换和量化318),针对与第三块相关联的残差块执行阶段334(例如,前向变换和量化316),针对第四块执行阶段332(例如,运动补偿312),并且针对第五块执行阶段330(例如,运动估计310)。
在一些示例中,处理管道可以使用硬件和/或软件组件来执行在示例管线300中的每个阶段(例如,阶段330、阶段332、阶段334、阶段336和阶段338)。在一些示例中,处理管道可以针对在管线300中的每个阶段(例如,阶段330、阶段332、阶段334、阶段336和阶段338)使用硬件的不同部分和/或不同的硬件单元或组件。
在一些情况下,管线300可以包括与在图3A中所示出的相比较多或较少的处理操作和/或阶段。在一些示例中,管线300可以包括运动估计310、运动补偿312和图3A中未示出的一个或多个不同操作(除了图3A中所示的前向变换和量化316、逆变换和量化318和/或解块322之外,或者替代这些操作)。
在图3A中所示的示例中,示例管线300的每个阶段(例如,阶段330、阶段332、阶段334、阶段336和阶段338)以每秒30帧(FPS)的速度进行操作。因此,在该示例中的管线300可以具有30FPS的总体性能。在一些情况下,这可以转化为用于处理当前帧302中的块的大约33毫秒(ms)的时间预算。图3A中的示例FPS和时间预算仅是出于解释目的而提供的说明性示例。本领域技术人员将理解,管线300可以根据其它帧速率和时间预算进行操作。
在一些情况下,可以通过实现额外的处理管道和增加在DMA子系统230中的存储器池以支持额外的处理管道的并行操作,来提高总体性能。例如,可以通过将用于实现管线300的处理管道的数量加倍并且根据需要增加存储器池,来使管线300的总体性能加倍。在一些情况下,处理管道可以占据视频编码硬件引擎的大部分硬件区域。因此,将处理管道加倍可能导致几乎加倍的视频编码引擎的总体硅面积,并且因此显著增加针对这样的性能提高的硬件成本。将管道数量增加不同的量可能类似地导致视频编码引擎的总体硅面积的对应显著的增加。
在一些示例中,不是如上所述增加管道数量,可以使用修改的管线(比如图3B中所示的示例修改的管线340),在没有这样的硅面积(以及因此硬件成本)的增加的情况下实现相同(或显著相似)的性能提升。
在图3B中,修改的管线340将管线划分为由每个处理管道执行的两个阶段,包括阶段342和阶段344。阶段342包括运动估计350,并且阶段344包括运动补偿352和图像减法354、前向变换和量化356、逆变换和量化358、求和器360和解块362。
在一些示例中,运动估计350、运动补偿352、图像减法354、前向变换和量化356、逆变换和量化358、求和器360和解块362可以如关于图3A中所示的运动估计310、运动补偿312、图像减法314、正变换和量化316、逆变换和量化318、求和器320和/或解块322来实现。在其它示例中,运动估计350、运动补偿352、图像减法354、前向变换和量化356、逆变换和量化358、求和器360和/或解块362可以不同于图3A中所示的运动估计310、运动补偿312、图像减法314、前向变换和量化316、逆变换和量化318、求和器320和/或解块322。
如先前所指出的,运动估计可能是在视频压缩算法中计算最密集的过程。例如,运动估计可能涉及应用于每个帧的显著重复操作,这给硬件资源带来高负担。确实,与3A和3B图中所示的运动补偿、图像减法、前向变换和量化、逆变换和量化、求和器和解块相比,运动估计可能在计算上显著地较为密集/复杂。
为了在不对应地增加硅面积和硬件成本的情况下提高总体视频译码性能,经修改的管线340可以在阶段342针对有限数量的帧执行运动估计350,并且在针对较大的帧集合(例如,序列中的完整的帧集合)执行阶段344时,使用来自有限数量的帧的运动估计信息。例如,经修改的管线340可以以与阶段344相比减小或降低的帧速率来执行阶段342,以实现较高的总体性能。换句话说,经修改的管线340可以以与阶段342相比较高的帧速率执行阶段344。
为了说明,与图3A中的阶段330一样,阶段342在图3B中被示为以30FPS进行操作。然而,阶段344在图3B中被示为以60FPS进行操作,其中在阶段342和344中的每个操作是并行地执行的。因此,在不增加处理管道的数量或其它硬件组件的情况下,与图3A中所示的30FPS性能相反,经修改的管线340中的总体性能增加到60FPS。由于在阶段342中的运动估计350以30FPS进行操作,因此来自阶段342的运动估计信息是针对与在阶段344处理的帧相比较少数量的帧来计算的。阶段344可以将该运动估计信息用于在阶段342处理的帧以及在阶段344处理的额外帧。对于额外帧,阶段344可以使用根据其它帧来预测或插值的运动估计信息,如本文进一步描述的。与运动估计350相比,用于针对额外帧来对运动估计信息进行预测或插值的操作的计算强度可以显著降低。这允许阶段344以较高的帧速率执行其相应的操作,而无需额外的硬件要求,并且同时保持高质量。
如所示出的,在阶段342处,处理管道使用当前帧302和参考帧304来执行运动估计350。在一些示例中,处理管道针对整个当前帧执行运动估计350。然后,处理管道将运动估计信息(例如,运动矢量和译码模式)保存在存储器240中。在一些示例中,存储器240可以是视频译码设备上的外部存储器(例如,在视频编码引擎外部)。在其它示例中,存储器240可以位于其它地方。例如,存储器240可以是视频编码引擎上的内部存储器。
在阶段344处,处理管道从存储器240取回运动估计信息,并且将取回的运动估计信息用于运动补偿352。给定阶段342相对于阶段344的较低帧速率,取回的运动估计信息可能不包括针对数个帧的运动估计信息。例如,取回的运动估计信息将不包括针对在帧序列中未由阶段342处理的任何帧的运动估计信息。对于这样的帧,处理管道可以估计或预测运动矢量和模式。
在一些情况下,处理管道可以使用时间插值法或预处理方法,来对针对每个这样的帧(未由阶段342处理的帧)的运动矢量和模式进行插值或外推。例如,处理管道可以对时间上最近的帧的运动矢量进行插值或外推。在一些情况下,处理管道可以使用由阶段342处理的时间上最近的帧的运动矢量,来对针对帧的运动矢量和模式进行插值或外推。在其它情况下,处理管道可以使用具有插值或外推的运动矢量的时间上最近的帧的运动矢量,来对针对帧的运动矢量和模式进行插值或外推。
在一些示例中,对于未经历阶段342的运动估计350的帧,处理管道可以使用如在以下等式1中所示的平移模型,根据确实经历了运动估计350的最近帧来估计其运动矢量:
其中是根据帧j推导的译码单元i的运动矢量,其中参考帧为k,并且/>是在帧i和j之间的时间距离。
当确定根据哪些帧来估计运动矢量时,处理管道可以考虑帧依赖性。例如,处理管道可以实现考虑帧依赖性的译码结构,如图4中所示并且在下文中进一步描述的。
处理管道可以使用来自阶段342的运动估计信息以及用于跳过阶段342的帧的估计的运动矢量和模式,来在阶段344中针对所有帧完成剩余操作。例如,使用来自阶段342的运动估计信息以及用于跳过阶段342的帧的估计的运动矢量和模式,处理管道可以执行运动补偿352、图像减法354、前向变换和量化356、逆变换和量化358、求和器360以及解块362。
图3B中的示例帧速率、相对帧速率比和时间信息仅是出于说明目的而提供的说明性示例。本领域技术人员将理解,经修改的管线340和在经修改的管线340中的阶段可以根据其它帧速率、帧速率比和时间预算进行操作。虽然图3B示出阶段344以两倍于阶段342的帧速率进行操作,但是相对帧速率仅是出于解释目的而提供的说明性示例。本文中还预期其它的相对帧速率和帧速率比。例如,在一些情况下,阶段342的帧速率可以是阶段344的帧速率的三分之一、四分之一等。为了说明,处理管道可以以30FPS来实现342阶段,并且以90FPS来实现344阶段。在该示例中,处理管道可以在阶段342处理全部帧的三分之一,并且针对剩余帧跳过阶段342。
图4是示出用于经修改的管线340的示例译码模式400的示意图。如本文进一步描述的,译码模式400在处理帧时考虑在阶段342和阶段344的操作的处理时间以及帧依赖性。例如,与运动补偿(MC)352、前向变换和量化(FTQ)356、逆变换和量化(ITQ)358以及解块(DB)362相比,运动估计(ME)350更耗时。译码模式400可以考虑这样的定时信息,以确保帧的处理被安排为使得一操作必须等待另一操作完成。
在该示例中,帧412在阶段342被处理,同时(例如,同时地、并行地)帧406和408在阶段344被处理的;帧416在阶段342被处理,同时帧410和412在阶段344被处理;并且帧420在阶段342被处理,同时帧414和416在阶段344被处理。在阶段342处理帧412之前并且在阶段344处理帧406和408之前,在阶段342处理帧408。在阶段342处理帧408之前,在阶段342和阶段344处理帧402和404;并且在阶段342处理帧420并且在阶段344处理帧414和416之后,在阶段344处理帧418和420。
如图所示,帧402是用于帧408的参考帧,帧404是用于帧410的参考帧,帧408是用于帧416的参考帧,并且帧412是用于帧420的参考帧。此外,帧402是用于预测针对帧406的运动矢量的参考帧,帧404是用于预测针对帧410的运动矢量的参考帧,帧408是用于预测针对帧414的运动矢量的参考帧,并且帧412是用于预测针对帧418的运动矢量的参考帧。
处理管道在阶段342针对帧402、404、408、412、416和420执行运动估计350。另一方面,处理管道在阶段342针对帧406、410、414和418跳过运动估计350。替代地,处理管道使用如先前所描述的插值或外推来预测针对帧406、410、414和418的运动矢量和模式。在该示例中,针对帧406的运动矢量是在阶段344根据帧402进行预测(例如,经由插值或外推)的;针对帧410的运动矢量是在阶段344根据帧404进行预测的;针对帧414的运动矢量是在阶段344根据帧408进行预测的;并且针对帧418的运动矢量是在阶段344根据帧412进行预测的。
用于预测针对帧406、410、414和418的运动矢量的参考帧仅是出于解释的目的而提供的示例。帧的特定帧依赖性可以允许实现其它模式。例如,在所示的示例中,帧408用于预测针对帧414的运动矢量。然而,在替代示例中,帧410可以用于预测针对帧414的运动矢量。如图4中所示,在帧414被处理的时间之前,已经在阶段344重构了帧410。因此,使用帧410来预测针对帧414的运动矢量将不会产生依赖性冲突/错误。在一些情况下,以使用帧410相比,使用帧408作为用于针对帧414的运动矢量预测的参考帧可能不那么复杂,因为针对帧414的运动可以较为容易地被估计为在先前针对帧408和416所估计的运动之间的某处。另一方面,帧410在时间上与帧408相比较为接近帧414,因此残差可能较低。
可以基于偏好、优势、劣势和/或任何其它因素,来预先确定或动态地做出关于什么帧要用作用于预测另一帧的运动矢量的参考帧的决策。然而,这样的决策受到帧依赖性的约束。例如,图4中的帧412使用帧404作为参考帧。如先前所解释的,使用时间更近的帧(比如帧406或408)可以存在某些优势。在该示例中,帧406和408在时间上比帧404较为接近,但是当帧412在阶段342被处理时,帧406和408尚未在阶段344完成重构。这产生依赖性错误,该依赖性错误阻止帧406或408被用作用于帧412的参考帧。类似地,虽然帧410在时间上较为接近帧412,但是帧410也不能用作用于帧412的参考帧,因为当帧412在阶段342被处理时,帧410尚未完成(或者甚至尚未开始)重构。
图4中的译码模式400是按照整个帧的处理来描述的。然而,上文所描述的原理可以应用于子帧的处理。例如,帧可以被拆分成子帧,并且译码模式400可以是基于子帧的和/或针对子帧来实现的。使用子帧而不是整个帧可能会影响帧依赖性、关于哪些帧要用作参考帧的选项以及译码效率。
图5是示出用于高效视频译码的示例过程500的流程图。在方块502处,过程500可以包括:在以第一帧速率实现的第一视频译码阶段(例如,阶段342)期间,确定针对在帧序列中的第一帧子集的第一运动矢量。可以通过对第一帧子集执行运动估计(例如,运动估计350)来确定第一运动矢量。在一些示例中,确定第一运动矢量可以包括确定针对第一帧子集的运动矢量和译码模式。
在一些示例中,确定第一运动矢量可以包括:针对在第一帧子集中的每个帧,将帧的一个或多个块与在来自帧序列的参考帧中的多个块进行比较;基于在帧的一个或多个块与在参考帧中的多个块中的每个块之间的相应像素差,来根据多个块确定预测块;以及将帧的一个或多个块的第一位置与跟参考帧相关联的预测块的第二位置进行比较。
在方块504处,过程500可以包括:在第二视频译码阶段(例如,阶段344)期间,确定针对在帧序列中的第二帧子集的第二运动矢量。第二帧子集可以包括与第一帧子集相比较多的帧。第二帧子集可以包括在第一视频译码阶段中未被处理的帧。
在一些示例中,第二运动矢量的至少一部分可以是基于来自第一运动矢量的一个或多个运动矢量来计算的。在一些情况下,来自第二运动矢量的一部分的每个运动矢量是基于来自第一帧子集的选定帧(例如,参考帧)的单独运动矢量和/或在选定帧与跟运动矢量相关联的特定帧(例如,针对其确定运动矢量的特定帧)之间的时间距离来计算的。
在一些示例中,第二运动矢量中的一个或多个运动矢量是基于第二运动矢量的一个或多个额外运动矢量以及在与一个或多个运动矢量相关联的一个或多个帧和与一个或多个额外运动矢量相关联的一个或多个参考帧之间的时间距离来计算的。
在方块506处,过程500可以包括:在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集。在一些示例中,重构第一帧子集可以包括:应用运动补偿、应用一个或多个变换和系数量化和/或应用一个或多个解块滤波器。例如,重构第一帧子集可以包括:应用运动补偿(例如,运动补偿352)、应用前向变换和量化(例如,前向变换和量化356)、应用逆变换和量化(例如,逆变换和量化358)和/或应用一个或多个解块滤波器(例如,解块362)。
在方块508处,过程500可以包括:在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集。第一视频译码阶段和第二视频译码阶段可以是至少部分并行地实现的。此外,第二视频译码阶段可以是以高于第一帧速率的第二帧速率来实现的。因此,在特定间隔期间,第二视频译码阶段可以处理与第一视频译码阶段相比较多的帧。在一些情况下,第一帧子集和第二帧子集是以第二帧速率来重构的。
在一些示例中,重构第二帧子集可以包括:应用运动补偿、应用一个或多个变换和系数量化和/或应用一个或多个解块滤波器。例如,重构第二帧子集可以包括:应用运动补偿(例如,运动补偿352)、应用前向变换和量化(例如,前向变换和量化356)、应用逆变换和量化(例如,逆变换和量化358)和/或应用一个或多个解块滤波器(例如,解块362)。
在一些情况下,过程500可以包括:确定用于重构第一帧子集和第二帧子集的译码模式(例如,译码模式400),译码模式定义用于重构帧的顺序以及用于确定第一运动矢量中的每个运动矢量和第二运动矢量中的每个运动矢量的相应参考帧;以及根据译码模式来重构第一帧子集和第二帧子集。
在一些示例中,第一视频译码阶段和第二视频译码阶段可以是处理管线(例如,经修改的管线340)的一部分。
在一些示例中,译码模式是基于帧依赖性和/或在帧序列中每个帧之间的时间距离的。在一些情况下,帧依赖性可以包括以下要求:针对帧序列中的每个帧,用于对帧进行译码的参考帧已经完成重构。
在一些示例中,过程500可以包括:在与第一帧速率相关联的每个间隔,确定来自第一帧子集的帧的运动矢量,确定来自第二帧子集的数个不同帧的运动矢量,并且重构来自第二帧子集的数个不同帧。在一些情况下,帧的运动矢量可以包括第一运动矢量中的一个或多个运动矢量,并且数个不同帧可以是基于与第二视频译码阶段相关联的第二帧速率的。
在一些示例中,第一视频译码阶段和第二视频译码阶段是经由专用硬件处理管道(例如,视频处理管道214、216、218或220)实现的。在一些情况下,专用硬件处理管道可以包括一个或多个处理器和/或处理组件。在一些示例中,专用硬件处理管道可以由设备实现,并且设备可以实现一个或多个额外的专用硬件处理管道(例如,视频处理管道214、216、218或220),其中,一个或多个额外的专用硬件处理管道中的每者被配置为针对一个或多个相应帧序列单独地实现第一视频译码阶段和第二视频译码阶段。在一些示例中,专用硬件处理管道和一个或多个额外的专用硬件处理管道可以并行地操作。
在一些示例中,第一运动矢量是使用运动估计算法来确定的,并且第二运动矢量是使用插值算法来确定的。运动估计算法可能不同于插值算法。在一些示例中,与运动估计算法相比,运动估计算法可能包括更多的处理操作和/或在计算上较为密集。
在一些情况下,过程500可以是经由硬件视频编码引擎(例如,具有图2A或2B中所示的架构200的视频编码引擎)来实现的。在一些情况下,过程500可以包括生成经编码的视频比特流。经编码的视频比特流可以包括帧序列。在一些示例中,过程500可以包括发送经编码的视频比特流。
在一些示例中,本文中所描述的过程可以由计算设备或装置(比如编码设备104、解码设备112和/或任何其它计算设备)来执行。在一些情况下,计算设备或装置可以包括处理器、微处理器、微型计算机或被配置为执行本文中所描述的过程的步骤的设备的其它组件。在一些示例中,计算设备或装置可以包括被配置为捕获包括视频帧的视频数据(例如,视频序列)的相机。例如,计算设备可以包括相机设备,相机设备可以包括或者可以不包括视频编解码器。作为另一示例,计算设备可以包括具有相机的移动设备(例如,相机设备(比如数码相机、IP相机等)、包括相机的移动电话或平板设备、或具有相机的其它类型的设备)。在一些情况下,计算设备可以包括用于显示图像的显示器。在一些示例中,捕获视频数据的相机或其它捕获设备与计算设备分离,在这种情况下,计算设备接收捕获的视频数据。计算设备还可以包括被配置为传送视频数据的网络接口、收发机和/或发射机。网络接口、收发机和/或发射机可以被配置为传送基于互联网协议(IP)的数据或其它网络数据。
本文中所描述的过程可以以硬件、计算机指令或其组合来实现。在计算机指令的背景下,操作表示被存储在一个或多个计算机可读存储介质上的计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。以其描述操作的顺序不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现所述过程。
另外,本文中所描述的过程可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用),通过硬件来实现,或其组合。如上文所指出的,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式被存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂时性的。
本文中所讨论的译码技术可以在示例视频编码和解码系统(例如,系统100)中实现。在一些示例中,系统包括源设备,源设备提供稍后要由目的地设备解码的经编码的视频数据。特备是,源设备经由计算机可读介质将视频数据提供给目的地设备。源设备和目的地设备可以包括多种设备中的任何设备,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手机(比如所谓的“智能”手机)、所谓的“智能”板、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。在一些情况下,源设备和目的地设备可以被配备用于无线通信。
目的地设备可以经由计算机可读介质接收要被解码的经编码的视频数据。计算机可读介质可以是能够将经编码的视频数据从源设备移动到目的地设备的任何类型的介质或设备。在一个示例中,计算机可读介质可以包括使得源设备能够将经编码的视频数据直接实时地发送给目的地设备的通信介质。经编码的视频数据可以根据比如无线通信协议之类的通信标准进行调制,并且发送给目的地设备。通信介质可以包括任何无线或有线通信介质,比如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,比如局域网、广域网或全球网络(比如互联网)。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备到目的地设备的通信的任何其它装置。
在一些示例中,可以将经编码的数据从输出接口输出到存储设备。类似地,可以通过输入接口从存储设备访问经编码的数据。存储设备可以包括各种分布式或本地存取的数据存储介质中的任何数据存储介质,比如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它适当的数字存储介质。在另外的示例中,存储设备可以对应于可以存储由源设备生成的经编码的视频的文件服务器或另一中间存储设备。目的地设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据并且将经编码的视频数据发送给目的地设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。目的地设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。这可以包括适于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。经编码的视频数据从存储设备的传输可以是流式传输、下载传输或其组合。
本公开内容的技术不一定限于无线应用或设置。所述技术可以应用于视频译码,以支持多种多媒体应用中的任何多媒体应用,比如,空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(比如基于HTTP的动态自适应流式传输(DASH))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频的解码、或其它应用。在一些示例中,系统可以被配置为支持单向或双向视频传输,以支持比如视频流式传输、视频回放、视频广播和/或视频电话之类的应用。
在一个示例中,源设备包括视频源、视频编码器和输出接口。目的地设备可以包括输入接口、视频解码器和显示设备。源设备的视频编码器可以被配置为应用本文中所公开的技术。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备可以从比如外部相机之类的外部视频源接收视频数据。同样,目的地设备可以与外部显示设备对接,而不是包括集成的显示设备。
以上示例系统仅是一个示例。用于并行地处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管本公开内容的技术通常是由视频编码设备来执行的,但是所述技术还可以由通常被称为“CODEC”的视频编码器/解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和目的地设备仅是这样的译码设备的示例:其中,源设备生成经译码的视频数据以供传输给目的地设备。在一些示例中,源设备和目的地设备可以以基本上对称的方式操作,使得设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
视频源可以包括视频捕获设备,比如摄像机、包含先前捕获的视频的视频存档单元、和/或用于从视频内容提供商接收视频的视频馈送接口。作为另外的替代方式,视频源可以生成基于计算机图形的数据作为源视频,或者生成实时视频、存档视频和计算机生成的视频的组合。在一些情况下,如果视频源是摄像机,则源设备和目的地设备可以形成所谓的照相电话或视频电话。然而,如上文所提及的,在本公开内容中所描述的技术通常可以适用于视频译码,并且可以应用于无线和/或有线应用。在每种情况下,所捕获的、预捕获的或计算机生成的视频可以由视频编码器进行编码。然后,可以通过输出接口将经编码的视频信息输出到计算机可读介质上。
如所指出的,计算机可读介质可以包括暂时性介质(比如无线广播或者有线网络传输)、或者存储介质(即,非暂时性存储介质)(比如硬盘、闪存驱动器、压缩光盘、数字多功能光盘、蓝光光盘)、或者其它计算机可读介质。在一些示例中,网络服务器(未示出)可以例如经由网络传输从源设备接收经编码的视频数据,并且将经编码的视频数据提供给目的地设备。类似地,介质生产设施(比如光盘冲压设施)的计算设备可以从源设备接收经编码的视频数据,并且制造包含经编码的视频数据的光盘。因此,在各个示例中,计算机可读介质可以被理解为包括各种形式的一个或多个计算机可读介质。
目的地设备的输入接口从计算机可读介质接收信息。计算机可读介质的信息可以包括由视频编码器定义的语法信息,语法信息也被视频解码器使用,语法信息包括描述块和其它译码单元(例如,图片组(GOP))的特性和/或处理的语法元素。显示设备将经解码的视频数据显示给用户,并且可以包括各种显示设备中的任何显示设备,比如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、或另一类型的显示设备。已经描述本申请的各个实施例。
在图6和图7中分别示出编码设备104和解码设备112的具体细节。图6是示出可以实现在本公开内容中描述的技术中的一种或多种技术的示例编码设备104的方块图。编码设备104可以例如生成本文中所描述的语法结构(例如,VPS、SPS、PPS或其它语法元素的语法结构)。编码设备104可以执行对在视频切片内的视频块的帧内预测和帧间预测译码。如先前所描述的,帧内译码至少部分地依赖于空间预测以减少或去除在给定视频帧或图片内的空间冗余。帧间译码至少部分地依赖于时间预测以减少或去除在视频序列的相邻或周围帧内的时间冗余。帧内模式(I模式)可以指代若干种基于空间的压缩模式中的任何一种。比如单向预测(P模式)或双预测(B模式)之类的帧间模式可以指代若干种基于时间的压缩模式中的任何一种。
编码设备104包括分割单元35、预测处理单元41、滤波器单元63、图片存储器64、求和器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41包括运动估计单元42、运动补偿单元44和帧内预测处理单元46。对于视频块重构,编码设备104还包括逆量化单元58、逆变换处理单元60和求和器62。滤波器单元63旨在表示一个或多个环路滤波器,比如去块滤波器、自适应环路滤波器(ALF)和样本自适应偏移(SAO)滤波器。尽管在图6中将滤波器单元63示为环路内滤波器,但是在其它配置中,滤波器单元63可以被实现为后环路滤波器。后处理设备57可以对由编码设备104生成的经编码的视频数据执行额外的处理。在一些实例中,本公开内容的技术可以由编码设备104来实现。然而,在其它实例中,本公开内容的技术中的一种或多种技术可以由后处理设备57来实现。
如图6中所示,编码设备104接收视频数据,并且分割单元35将数据分割为视频块。分割还可以包括例如根据LCU和CU的四叉树结构来分割为切片、切片段、瓦片或其它较大的单元,以及视频块分割。编码设备104总体上示出了对在要被编码的视频切片内的视频块进行编码的组件。切片可以被划分为多个视频块(并且可能被划分为被称为瓦片的视频块的集合)。预测处理单元41可以基于误差结果(例如,译码率和失真水平等)来针对当前视频块选择多种可能的译码模式中的一种,比如多种帧内预测译码模式中的一种或多种帧间预测译码模式中的一种。预测处理单元41可以将所得到的经帧内译码的或经帧间译码的块提供给求和器50以生成残差块数据,并且提供给求和器62以重构经编码的块以用作参考图片。
在预测处理单元41内的帧内预测处理单元46可以相对于在与要被译码的当前块相同的帧或切片中的一个或多个相邻块,来执行当前视频块的帧内预测译码,以提供空间压缩。在预测处理单元41内的运动估计单元42和运动补偿单元44相对于在一个或多个参考图片中的一个或多个预测块来执行当前视频块的帧间预测译码,以提供时间压缩。
运动估计单元42可以被配置为根据用于视频序列的预定模式来确定用于视频切片的帧间预测模式。预定模式可以将早序列中的视频切片指定为P切片、B切片或GPB切片。运动估计单元42和运动补偿单元44可以是高度集成的,但是出于概念性目的而被分别示出。由运动估计单元42执行的运动估计是生成运动矢量的过程,该过程估计针对视频块的运动。运动矢量例如可以指示在当前视频帧或图片内的视频块的预测单元(PU)相对于在参考图片内的预测块的位移。
预测块是被发现在像素差方面与要被译码的视频块的PU紧密匹配的块,其可以通过绝对差之和(SAD)、平方差之和(SSD)或其它差度量来确定。在一些示例中,编码设备104可以针对被存储在图片存储器64中的参考图片的整数以下的像素位置来计算值。例如,编码设备104可以对参考图片的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索,并且输出具有分数像素精度的运动矢量。
运动估计单元42通过将在经帧间译码的切片中的视频块的PU的位置与参考图片的预测块的位置进行比较,来计算针对PU的运动矢量。参考图片可以是从第一参考图片列表(列表0)或第二参考图片列表(列表1)中选择的,其中的每个参考图片列表标识被存储在图片存储器64中的一个或多个参考图片。运动估计单元42将所计算出的运动矢量发送给熵编码单元56和运动补偿单元44。
由运动补偿单元44执行的运动补偿可以涉及:基于通过运动估计而确定的运动矢量来取回或生成预测块,可能地针对像素以下的精度执行插值。在接收到针对当前视频块的PU的运动矢量时,运动补偿单元44可以在参考图片列表中定位运动矢量所指向的预测块。编码设备104通过从正被译码的当前视频块的像素值中减去预测块的像素值来形成像素差值,从而形成残差视频块。像素差值形成针对该块的残差数据,并且可以包括亮度差分量和色度差分量两者。求和器50表示执行该减法运算的一个或多个组件。运动补偿单元44还可以生成与视频块和视频切片相关联的语法元素,以供解码设备112在对视频切片的视频块进行解码时使用。
如上文所描述的,帧内预测处理单元46可以对当前块进行帧内预测,作为对由运动估计单元42和运动补偿单元44执行的帧间预测的替代方式。特别是,帧内预测处理单元46可以确定要用于对当前块进行编码的帧内预测模式。在一些示例中,帧内预测处理单元46可以例如在单独的编码通路期间使用各种帧内预测模式来对当前块进行编码,并且帧内预测处理单元46可以从被测试的模式中选择合适的帧内预测模式来使用。例如,帧内预测处理单元46可以针对各种被测试的帧内预测模式使用率失真分析来计算率失真值,并且可以在被测试的模式之中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定在经编码的块与原始的未经编码的块(其被编码以产生经编码的块)之间的失真(或误差)量、以及用于产生经编码的块的比特率(即比特数量)。帧内预测处理单元46可以根据针对各种经编码的块的失真和速率来计算比率,以确定哪种帧内预测模式表现出针对该块的最佳率失真值。
在任何情况下,在针对块选择帧内预测模式之后,帧内预测处理单元46可以将指示所选择的针对块的帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以对指示所选择的帧内预测模式的信息进行编码。编码设备104可以在所发送的比特流配置数据中包括用于各种块的编码上下文的定义以及对要用于上下文中的每个上下文的最可能的帧内预测模式、帧内预测模式索引表和经修改的帧内预测模式索引表的指示。比特流配置数据可以包括多个帧内预测模式索引表和多个经修改的帧内预测模式索引表(还被称为码字映射表)。
在预测处理单元41经由帧间预测或帧内预测生成用于当前视频块的预测块之后,编码设备104通过从当前视频块中减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个TU中,并且被应用于变换处理单元52。变换处理单元52使用变换(比如离散余弦变换(DCT)或概念上类似的变换)来将残差视频数据变换为残差变换系数。变换处理单元52可以将残差视频数据从像素域转换到变换域(比如频域)。
变换处理单元52可以将所得到的变换系数发送给量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程可以减小与系数中的一些或所有系数相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54然后可以对包括经量化的变换系数的矩阵执行扫描。或者,熵编码单元56可以执行扫描。
在量化之后,熵编码单元56对经量化的变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应变长译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵编码技术。在由熵编码单元56进行熵编码之后,经编码的比特流可以被发送给解码设备112,或者被存档以供稍后传输或者由解码设备112取得。熵编码单元56还可以对针对正被译码的当前视频切片的运动矢量和其它语法元素进行熵编码。
逆量化单元58和逆变换处理单元60分别应用逆量化和逆变换,以在像素域中重构残差块,以供稍后用作参考图片的参考块。运动补偿单元44可以通过将残差块加到在参考图片列表内的参考图片中的一个参考图片的预测块,来计算参考块。运动补偿单元44还可以将一个或多个插值滤波器应用于经重构的残差块,以计算用于运动估计的整数以下的像素值。求和器62将经重构的残差块加到由运动补偿单元44产生的经运动补偿的预测块,以产生用于存储在图片存储器64中的参考块。该参考块可以由运动估计单元42和运动补偿单元44用作用于对在随后的视频帧或图片中的块进行帧间预测的参考块。
编码设备104可以执行本文中所描述的技术中的任何技术。已经关于编码设备104大体上描述了本公开内容的一些技术,但是如上文所提及的,本公开内容的技术中的一些技术也可以由后处理设备57实现。
图6的编码设备104表示被配置为执行本文中所描述的变换译码技术中的一种或多种技术的视频编码器的示例。编码设备104可以执行本文中所描述的技术中的任何技术,包括上文关于图5所描述的过程。
图7是示出示例解码设备112的方块图。解码设备112包括熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、求和器90、滤波器单元91和图片存储器92。预测处理单元81包括运动补偿单元82和帧内预测处理单元84。在一些示例中,解码设备112可以执行通常与关于来自图6的编码设备104所描述的编码阶段相反的解码阶段。
在解码过程期间,解码设备112接收由编码设备104发送的表示经编码的视频切片的视频块和关联的语法元素的经编码的视频比特流。在一些实施例中,解码设备112可以从编码设备104接收经编码的视频比特流。在一些实施例中,解码设备112可以从网络实体79(比如服务器、媒体感知网络元素(MANE)、视频编辑器/拼接器、或被配置为实现上述技术中的一种或多种技术的其它这样的设备)接收经编码的视频比特流。网络实体79可以包括或者可以不包括编码设备104。在本公开内容中描述的技术中的一些技术可以由网络实体79在网络实体79将经编码的视频比特流发送给解码设备112之前来实现。在一些视频解码系统中,网络实体79和解码设备112可以是单独设备的部分,而在其它实例中,关于网络实体79所描述的功能可以由包括解码设备112的相同设备来执行。
解码设备112的熵解码单元80对比特流进行熵解码以生成量化的系数、运动矢量和其它语法元素。熵解码单元80将运动矢量和其它语法元素转发给预测处理单元81。解码设备112可以接收在视频切片级别和/或视频块级别的语法元素。熵解码单元80可以处理和解析在一个或多个参数集(比如VPS、SPS和PPS)中的固定长度语法元素和可变长度语法元素两者。
当视频切片被译码为经帧内译码(I)的切片时,预测处理单元81的帧内预测处理单元84可以基于用信号通知的帧内预测模式以及来自当前帧或图片的先前解码的块的数据,来生成针对当前视频切片的视频块的预测数据。当视频帧被译码为经帧间译码(即,B、P或GPB)的切片时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动矢量和其它语法元素,来产生针对当前视频切片的视频块的预测块。可以根据在参考图片列表内的参考图片中的一个参考图片来产生预测块。解码设备112可以基于被存储在图片存储器92中的参考图片,使用默认构造技术来构造参考帧列表(列表0和列表1)。
运动补偿单元82通过解析运动矢量和其它语法元素来确定用于当前视频切片的视频块的预测信息,并且使用该预测信息来产生用于正在被解码的当前视频块的预测块。例如,运动补偿单元82可以使用在参数集中的一个或多个语法元素来确定用于对视频切片的视频块进行译码的预测模式(例如,帧内预测或帧间预测)、帧间预测切片类型(例如,B切片、P切片或GPB切片)、用于针对切片的一个或多个参考图片列表的构造信息、用于切片的每个经帧间编码的视频块的运动矢量、用于切片的每个经帧间译码的视频块的帧间预测状态、以及用于对在当前视频切片中的视频块进行解码的其它信息。
运动补偿单元82还可以基于插值滤波器来执行插值。运动补偿单元82可以使用如由编码设备104在视频块的编码期间使用的插值滤波器来计算针对参考块的整数以下的像素的插入的值。在这种情况下,运动补偿单元82可以根据所接收的语法元素来确定由编码设备104使用的插值滤波器,并且可以使用插值滤波器来产生预测块。
逆量化单元86对在比特流中提供并且由熵解码单元80解码的经量化的变换系数进行逆量化或解量化。逆量化过程可以包括使用由编码设备104针对视频切片中的每个视频块所计算的量化参数来确定量化程度,以及同样地确定应当被应用的逆量化程度。逆变换处理单元88对变换系数应用逆变换(例如,逆DCT或其它适当的逆变换)、逆整数变换或概念上类似的逆变换,以便在像素域中产生残差块。
在运动补偿单元82基于运动矢量和其它语法元素生成用于当前视频块的预测块之后,解码设备112通过对来自逆变换处理单元88的残差块与由运动补偿单元82生成的对应预测块进行求和,来形成经解码的视频块。求和器90表示执行该求和运算的一个或多个组件。如果需要的话,环路滤波器(在编码环路中或在编码环路之后)也可以用于使像素转换平滑,或者以改善视频质量。滤波器单元91旨在表示一个或多个环路滤波器,比如去块滤波器、自适应环路滤波器(ALF)和样本自适应偏移(SAO)滤波器。尽管滤波器单元91在图7中被示为环路中滤波器,但是在其它配置中,滤波器单元91可以被实现为后环路滤波器。在给定帧或图片中的经解码的视频块然后被存储在图片存储器92中,图片存储器92存储用于随后的运动补偿的参考图片。图片存储器92还存储经解码的视频,以供稍后在显示设备(比如在图1中所示的视频目的地设备122)上呈现。
图7的解码设备112表示被配置为执行本文中所描述的变换译码技术中的一种或多种技术的视频解码器的示例。解码设备112可以执行本文中所描述的技术中的任何技术,包括上文关于图5所描述的过程。
在前面的描述中,本申请的各方面是参考其特定实施例来描述的,但是本领域技术人员将认识到,本申请的主题不限于此。因此,尽管本文已经详细描述了本申请的说明性实施例,但是要理解的是,可以以其它方式不同地体现和采用本发明构思,并且所附的权利要求旨在被解释为包括这样的变型,除了受现有技术限制的变型。可以单独地或共同地使用上述主题的各个特征和方面。此外,在不脱离本说明书的更宽泛的精神和范围的情况下,实施例可以在除了本文中所描述的环境和应用之外的任何数量的环境和应用中使用。因此,说明书和附图被认为是说明性的而不是限制性的。为了说明的目的,方法是以特定次序来描述的。应当明白的是,在替代实施例中,方法可以以与所描述的次序不同的次序来执行。
本领域技术人员将明白的是,在不脱离本说明书的范围的情况下,本文中使用的小于(“<”)和大于(“>”)符号或术语可以分别被替换为小于或等于(“≤”)以及大于或等于(“≥”)符号。
在将组件描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过以下方式来实现:将电路或其它硬件设计为执行该操作,将可编程电路(例如,微处理器或其它适当的电路)编程为执行该操作,或其任何组合。
记载集合中的“至少一个”和/或集合中的“一个或多个”的权利要求语言或其它语言指示集合中的一个成员或者集合中的多个成员(以任何组合)满足该权利要求。例如,记载“A和B中的至少一个”的权利要求语言意指A、B、或者A和B。在另一示例中,记载“A、B和C中的至少一个”的权利要求语言意指A、B、C、或者A和B、或者A和C、或者B和C、或者A和B和C。语言集合中的“至少一个”和/或集合中的“一个或多个”并不将集合限制于在集合中列出的项目。例如,记载“A和B中的至少一个”的权利要求语言可以意指A、B或者A和B,并且可以另外包括未在A和B的集合中列出的项目。
结合本文中所公开的实施例描述的各种说明性的逻辑方块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,上文已经对各种说明性的组件、方块、模块、电路和步骤围绕其功能进行了总体描述。至于这样的功能是被实现为硬件还是软件取决于特定的应用和施加在整个系统上的设计约束。本领域技术人员可以针对每种特定应用以变通的方式来实现所描述的功能,但是这样的实现方式决策不应当被解释为导致脱离本申请的范围。
本文中所描述的技术还可以以电子硬件、计算机软件、固件或其任何组合来实现。这样的技术可以在各种设备中的任何设备中实现,比如通用计算机、无线通信设备手机或具有多种用途(包括在无线通信设备手机和其它设备中的应用)的集成电路设备。被描述为模块或组件的任何特征可以在集成的逻辑设备中一起实现,或者分别被实现为分立但可互操作的逻辑设备。如果以软件来实现,则所述技术可以至少部分地由包括程序代码的计算机可读数据存储介质来实现,程序代码包括在被执行时执行上述方法中的一种或多种方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,计算机程序产品可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,比如随机存取存储器(RAM)(比如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。另外或替代地,所述技术可以至少部分地由计算机可读通信介质(比如传播的信号或波)来实现,计算机可读通信介质以指令或数据结构的形式携带或传送程序代码并且可以由计算机访问、读取和/或执行。
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,比如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或分立逻辑电路。这样的处理器可以被配置为执行在本公开内容中描述的技术中的任何技术。通用处理器可以是微处理器,但是在替代方式中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合、或任何其它这样的配置。因此,如本文所使用的术语“处理器”可以指代任何前述结构、前述结构的任何组合、或适于实现本文中所描述的技术的任何其它结构或装置。另外,在一些方面中,本文中所描述的功能可以在被配置用于编码和解码的专用软件模块或硬件模块内提供,或者被合并在组合的视频编码器-解码器(CODEC)中。
本公开内容的说明性示例包括:
方面1:一种用于处理视频数据的方法,方法包括:在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在以高于第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的至少一部分是基于来自第一运动矢量的一个或多个运动矢量来计算的;在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,其中,第一视频译码阶段和第二视频译码阶段是至少部分并行地实现的。
方面2:根据方面1所述的方法,其中,来自第二运动矢量的至少部分的每个运动矢量是基于来自第一帧子集的选定帧的单独运动矢量以及在选定帧与跟每个运动矢量相关联的特定帧之间的时间距离来计算的。
方面3:根据方面1到2中的任何方面所述的方法,其中,估计第一运动矢量包括:针对第一帧子集中的帧,将帧的一个或多个块与来自帧序列的参考帧中的多个块进行比较;基于在帧的一个或多个块与在参考帧中的多个块中的每个块之间的相应像素差,来根据多个块确定预测块;以及将帧的一个或多个块的第一位置与跟参考帧相关联的预测块的第二位置进行比较。
方面4:根据方面1到3中的任何方面所述的方法,其中,第二运动矢量中的一个或多个运动矢量是基于第二运动矢量的一个或多个额外运动矢量、以及在与一个或多个运动矢量相关联的一个或多个帧和与一个或多个额外运动矢量相关联的一个或多个参考帧之间的时间距离来计算的。
方面5:根据方面1到4中的任何方面所述的方法,还包括:确定用于重构第一帧子集和第二帧子集的译码模式,译码模式定义用于重构帧的顺序以及用于确定第一运动矢量中的每个运动矢量和第二运动矢量中的每个运动矢量的相应参考帧;以及根据译码模式来重构第一帧子集和第二帧子集。
方面6:根据方面5所述的方法,其中,译码模式是基于帧依赖性以及在帧序列中每个帧之间的时间距离中的至少一项的。
方面7:根据方面6所述的方法,其中,所述帧依赖性包括以下要求:针对帧序列中的每个帧,用于重构每个帧的参考帧已经完成重构。
方面8:根据方面1到7中的任何方面所述的方法,还包括:在与第一帧速率相关联的每个间隔,确定来自第一帧子集的帧的运动矢量,确定来自第二帧子集的数个不同帧的相应的运动矢量,并且重构来自第二帧子集的数个不同帧。
方面9:根据方面8所述的方法,其中,帧的运动矢量包括第一运动矢量中的至少一个第一运动矢量,并且其中,数个不同帧是基于与第二视频译码阶段相关联的第二帧速率的。
方面10:根据方面1到9中的任何方面所述的方法,其中,重构第一帧子集和第二帧子集包括:将运动补偿、一个或多个变换和系数量化以及一个或多个解块滤波器中的至少一项应用于第一帧子集和第二帧子集。
方面11:根据方面1到10中的任何方面所述的方法,其中,第一视频译码阶段和第二视频译码阶段是经由专用硬件处理管道来实现的,其中,专用硬件处理管道包括一个或多个处理器。
方面12:根据方面11所述的方法,还包括:经由一个或多个额外专用硬件处理管道,针对一个或多个相应帧序列单独地实现第一视频译码阶段和第二视频译码阶段。
方面13:根据方面1到12中的任何方面所述的方法,其中,第一运动矢量是使用运动估计算法来确定的,并且第二运动矢量是使用插值算法来确定的,运动估计算法不同于插值算法。
方面14:根据方面1到13中的任何方面所述的方法,还包括:生成经编码的视频比特流,经编码的视频比特流包括帧序列。
方面15:根据方面14所述的方法,还包括:发送经编码的视频比特流。
方面16:根据方面1到15中的任何方面所述的方法,其中,第二帧子集包括与第一帧子集相比较多的帧。
方面17:根据方面1到16中的任何方面所述的方法,其中,第一帧子集和第二帧子集是以第二帧速率来重构的。
方面18:一种用于处理视频数据的装置,装置包括存储器和耦合到存储器的一个或多个处理器,一个或多个处理器被配置为:在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;在以高于第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对帧序列中的第二帧子集的第二运动矢量,其中,第二运动矢量的至少一部分是基于来自第一运动矢量的一个或多个运动矢量来计算的;在第二视频译码阶段期间,使用第一运动矢量来重构第一帧子集;以及在第二视频译码阶段期间,使用第二运动矢量来重构第二帧子集,其中,第一视频译码阶段和第二视频译码阶段是至少部分并行地实现的。
方面19:根据方面18所述的装置,其中,来自第二运动矢量的至少部分的每个运动矢量是基于来自第一帧子集的选定帧的单独运动矢量以及在选定帧与跟每个运动矢量相关联的特定帧之间的时间距离来计算的。
方面20:根据方面18到19中的任何方面所述的装置,其中,为了估计第一运动矢量,一个或多个处理器被配置为:针对第一帧子集中的帧,将帧的一个或多个块与来自帧序列的参考帧中的多个块进行比较;基于在帧的一个或多个块与在参考帧中的多个块中的每个块之间的相应像素差,来根据多个块确定预测块;以及将帧的一个或多个块的第一位置与跟参考帧相关联的预测块的第二位置进行比较。
方面21:根据方面18到20中的任何方面所述的装置,其中,第二运动矢量中的一个或多个运动矢量是基于第二运动矢量的一个或多个额外运动矢量、以及在与一个或多个运动矢量相关联的一个或多个帧和与一个或多个额外运动矢量相关联的一个或多个参考帧之间的时间距离来计算的。
方面22:根据方面18到21中的任何方面所述的装置,其中,一个或多个处理器被配置为:确定用于重构第一帧子集和第二帧子集的译码模式,译码模式定义用于重构帧的顺序以及用于确定第一运动矢量中的每个运动矢量和第二运动矢量中的每个运动矢量的相应参考帧;以及根据译码模式来重构第一帧子集和第二帧子集。
方面23:根据方面22所述的装置,其中,译码模式是基于帧依赖性以及在帧序列中每个帧之间的时间距离中的至少一项的。
方面24:根据方面23所述的装置,其中,帧依赖性包括以下要求:针对帧序列中的每个帧,用于重构每个帧的参考帧已经完成重构。
方面25:根据方面18到24中的任何方面所述的装置,其中,一个或多个处理器被配置为:在与第一帧速率相关联的每个间隔,确定来自第一帧子集的帧的运动矢量,确定来自第二帧子集的数个不同帧的相应的运动矢量,并且重构来自第二帧子集的数个不同帧。
方面26:根据方面25所述的装置,其中,帧的运动矢量包括第一运动矢量中的至少一个第一运动矢量,并且其中,数个不同帧是基于与第二视频译码阶段相关联的第二帧速率的。
方面27:根据方面18到26中的任何方面所述的装置,其中,为了重构第一帧子集和第二帧子集,一个或多个处理器被配置为:将运动补偿、一个或多个变换和系数量化以及一个或多个解块滤波器中的至少一项应用于第一帧子集和第二帧子集。
方面28:根据方面18到27中的任何方面所述的装置,其中,第一视频译码阶段和第二视频译码阶段是经由装置的专用硬件处理管道来实现的,其中,专用硬件处理管道包括一个或多个处理器。
方面29:根据方面28所述的装置,还包括一个或多个额外专用硬件处理管道,其中,一个或多个额外专用硬件处理管道中的每者被配置为针对一个或多个相应帧序列单独地实现第一视频译码阶段和第二视频译码阶段。
方面30:根据方面18到29中的任何方面所述的装置,其中,第一运动矢量是使用运动估计算法来确定的,并且第二运动矢量是使用插值算法来确定的,运动估计算法不同于插值算法。
方面31:根据方面18到30中的任何方面所述的装置,其中,一个或多个处理器被配置为:生成经编码的视频比特流,经编码的视频比特流包括帧序列。
方面32:根据方面31所述的装置,其中,一个或多个处理器被配置为:发送经编码的视频比特流。
方面33:根据方面18到32中的任何方面所述的装置,其中,装置是移动设备。
方面34:根据方面18到33中的任何方面所述的装置,还包括硬件视频编码引擎。
方面35:根据方面18到34中的任何方面所述的装置,其中,第二帧子集包括与第一帧子集相比较多的帧。
方面36:根据方面18到35中的任何方面所述的装置,其中,第一帧子集和第二帧子集是以第二帧速率来重构的。
方面37:根据方面18到36中的任何方面所述的装置,还包括被配置为捕获一个或多个帧的相机。
方面38:根据方面18到37中的任何方面所述的装置,还包括被配置为显示一个或多个帧的显示器。
方面39:一种具有存储在其上的指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行根据方面1到38中的任何方面所述的操作。
方面40:一种装置,其包括用于执行根据方面1至38中的任何方面所述的操作的单元。

Claims (35)

1.一种用于处理视频数据的装置,所述装置包括:
存储器;以及
耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:
在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;
在以高于所述第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对所述帧序列中的第二帧子集的第二运动矢量,其中,所述第二运动矢量的至少一部分是基于来自所述第一运动矢量的一个或多个运动矢量来计算的;
在所述第二视频译码阶段期间,使用所述第一运动矢量来重构所述第一帧子集;以及
在所述第二视频译码阶段期间,使用所述第二运动矢量来重构所述第二帧子集,其中,所述第一视频译码阶段和所述第二视频译码阶段是至少部分并行地实现的。
2.根据权利要求1所述的装置,其中,来自所述第二运动矢量的至少所述部分的每个运动矢量是基于来自所述第一帧子集的选定帧的单独运动矢量以及在所述选定帧与跟每个运动矢量相关联的特定帧之间的时间距离来计算的。
3.根据权利要求1所述的装置,其中,为了估计所述第一运动矢量,所述一个或多个处理器被配置为:
针对所述第一帧子集中的帧,将所述帧的一个或多个块与来自所述帧序列的参考帧中的多个块进行比较;
基于在所述帧的所述一个或多个块与在所述参考帧中的所述多个块中的每个块之间的相应像素差,来根据所述多个块确定预测块;以及
将所述帧的所述一个或多个块的第一位置与跟所述参考帧相关联的所述预测块的第二位置进行比较。
4.根据权利要求1所述的装置,其中,所述第二运动矢量中的一个或多个运动矢量是基于所述第二运动矢量的一个或多个额外运动矢量、以及在与所述一个或多个运动矢量相关联的一个或多个帧和与所述一个或多个额外运动矢量相关联的一个或多个参考帧之间的时间距离来计算的。
5.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
确定用于重构所述第一帧子集和所述第二帧子集的译码模式,所述译码模式定义用于重构帧的顺序以及用于确定所述第一运动矢量中的每个运动矢量和所述第二运动矢量中的每个运动矢量的相应参考帧;以及
根据所述译码模式来重构所述第一帧子集和所述第二帧子集。
6.根据权利要求5所述的装置,其中,所述译码模式是基于帧依赖性以及在所述帧序列中每个帧之间的时间距离中的至少一项的。
7.根据权利要求6所述的装置,其中,所述帧依赖性包括以下要求:针对所述帧序列中的每个帧,用于重构每个帧的参考帧已经完成重构。
8.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
在与所述第一帧速率相关联的每个间隔,确定来自所述第一帧子集的帧的运动矢量,确定来自所述第二帧子集的数个不同帧的相应的运动矢量,并且重构来自所述第二帧子集的所述数个不同帧。
9.根据权利要求8所述的装置,其中,所述帧的所述运动矢量包括所述第一运动矢量中的至少一个第一运动矢量,并且其中,所述数个不同帧是基于与所述第二视频译码阶段相关联的所述第二帧速率的。
10.根据权利要求1所述的装置,其中,为了重构所述第一帧子集和所述第二帧子集,所述一个或多个处理器被配置为:将运动补偿、一个或多个变换和系数量化以及一个或多个解块滤波器中的至少一项应用于所述第一帧子集和所述第二帧子集。
11.根据权利要求1所述的装置,其中,所述第一视频译码阶段和所述第二视频译码阶段是经由所述装置的专用硬件处理管道来实现的,其中,所述专用硬件处理管道包括所述一个或多个处理器。
12.根据权利要求11所述的装置,还包括一个或多个额外专用硬件处理管道,其中,所述一个或多个额外专用硬件处理管道中的每者被配置为针对一个或多个相应帧序列单独地实现所述第一视频译码阶段和所述第二视频译码阶段。
13.根据权利要求1所述的装置,其中,所述第一运动矢量是使用运动估计算法来确定的,并且所述第二运动矢量是使用插值算法来确定的,所述运动估计算法不同于所述插值算法。
14.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
生成经编码的视频比特流,所述经编码的视频比特流包括所述帧序列。
15.根据权利要求14所述的装置,其中,所述一个或多个处理器被配置为:
发送所述经编码的视频比特流。
16.根据权利要求1所述的装置,其中,所述装置是移动设备。
17.根据权利要求1所述的装置,还包括硬件视频编码引擎。
18.根据权利要求1所述的装置,其中,所述第二帧子集包括与所述第一帧子集相比较多的帧。
19.根据权利要求1所述的装置,其中,所述第一帧子集和所述第二帧子集是以所述第二帧速率来重构的。
20.一种用于处理视频数据的方法,所述方法包括:
在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;
在以高于所述第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对所述帧序列中的第二帧子集的第二运动矢量,其中,所述第二运动矢量的至少一部分是基于来自所述第一运动矢量的一个或多个运动矢量来计算的;
在所述第二视频译码阶段期间,使用所述第一运动矢量来重构所述第一帧子集;以及
在所述第二视频译码阶段期间,使用所述第二运动矢量来重构所述第二帧子集,其中,所述第一视频译码阶段和所述第二视频译码阶段是至少部分并行地实现的。
21.根据权利要求20所述的方法,其中,来自所述第二运动矢量的至少所述部分的每个运动矢量是基于来自所述第一帧子集的选定帧的单独运动矢量以及在所述选定帧与跟每个运动矢量相关联的特定帧之间的时间距离来计算的。
22.根据权利要求20所述的方法,其中,估计所述第一运动矢量包括:
针对所述第一帧子集中的帧,将所述帧的一个或多个块与来自所述帧序列的参考帧中的多个块进行比较;
基于在所述帧的所述一个或多个块与在所述参考帧中的所述多个块中的每个块之间的相应像素差,来根据所述多个块确定预测块;以及
将所述帧的所述一个或多个块的第一位置与跟所述参考帧相关联的所述预测块的第二位置进行比较。
23.根据权利要求20所述的方法,其中,所述第二运动矢量中的一个或多个运动矢量是基于所述第二运动矢量的一个或多个额外运动矢量、以及在与所述一个或多个运动矢量相关联的一个或多个帧和与所述一个或多个额外运动矢量相关联的一个或多个参考帧之间的时间距离来计算的。
24.根据权利要求20所述的方法,还包括:
确定用于重构所述第一帧子集和所述第二帧子集的译码模式,所述译码模式定义用于重构帧的顺序以及用于确定所述第一运动矢量中的每个运动矢量和所述第二运动矢量中的每个运动矢量的相应参考帧;以及
根据所述译码模式来重构所述第一帧子集和所述第二帧子集。
25.根据权利要求24所述的方法,其中,所述译码模式是基于帧依赖性以及在所述帧序列中每个帧之间的时间距离中的至少一项的。
26.根据权利要求25所述的方法,其中,所述帧依赖性包括以下要求:针对所述帧序列中的每个帧,用于重构每个帧的参考帧已经完成重构。
27.根据权利要求20所述的方法,还包括:
在与所述第一帧速率相关联的每个间隔,确定来自所述第一帧子集的帧的运动矢量,确定来自所述第二帧子集的数个不同帧的相应的运动矢量,并且重构来自所述第二帧子集的所述数个不同帧,其中,所述帧的所述运动矢量包括所述第一运动矢量中的至少一个第一运动矢量,并且其中,所述数个不同帧是基于与所述第二视频译码阶段相关联的所述第二帧速率的。
28.根据权利要求20所述的方法,其中,重构所述第一帧子集和所述第二帧子集包括:将运动补偿、一个或多个变换和系数量化以及一个或多个解块滤波器中的至少一项应用于所述第一帧子集和所述第二帧子集。
29.根据权利要求20所述的方法,其中,所述第一视频译码阶段和所述第二视频译码阶段是经由专用硬件处理管道来实现的,其中,所述专用硬件处理管道包括一个或多个处理器。
30.根据权利要求29所述的方法,还包括:经由一个或多个额外专用硬件处理管道,针对一个或多个相应帧序列单独地实现所述第一视频译码阶段和所述第二视频译码阶段。
31.根据权利要求20所述的方法,其中,所述第一运动矢量是使用运动估计算法来确定的,并且所述第二运动矢量是使用插值算法来确定的,所述运动估计算法不同于所述插值算法。
32.根据权利要求20所述的方法,还包括:
生成经编码的视频比特流,所述经编码的视频比特流包括所述帧序列;以及
发送所述经编码的视频比特流。
33.根据权利要求20所述的方法,其中,所述第二帧子集包括与所述第一帧子集相比较多的帧。
34.根据权利要求20所述的方法,其中,所述第一帧子集和所述第二帧子集是以所述第二帧速率来重构的。
35.一种具有存储在其上的指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
在以第一帧速率实现的第一视频译码阶段期间,确定针对帧序列中的第一帧子集的第一运动矢量;
在以高于所述第一帧速率的第二帧速率实现的第二视频译码阶段期间,确定针对所述帧序列中的第二帧子集的第二运动矢量,其中,所述第二运动矢量的至少一部分是基于来自所述第一运动矢量的一个或多个运动矢量来计算的;
在所述第二视频译码阶段期间,使用所述第一运动矢量来重构所述第一帧子集;以及
在所述第二视频译码阶段期间,使用所述第二运动矢量来重构所述第二帧子集,其中,所述第一视频译码阶段和所述第二视频译码阶段是至少部分并行地实现的。
CN202280016032.3A 2021-02-26 2022-02-08 高效视频编码器架构 Pending CN116897536A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/187,132 2021-02-26
US17/187,132 US20220279204A1 (en) 2021-02-26 2021-02-26 Efficient video encoder architecture
PCT/US2022/015702 WO2022182515A1 (en) 2021-02-26 2022-02-08 Efficient video encoder architecture

Publications (1)

Publication Number Publication Date
CN116897536A true CN116897536A (zh) 2023-10-17

Family

ID=80623662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280016032.3A Pending CN116897536A (zh) 2021-02-26 2022-02-08 高效视频编码器架构

Country Status (6)

Country Link
US (1) US20220279204A1 (zh)
EP (1) EP4298794A1 (zh)
KR (1) KR20230150284A (zh)
CN (1) CN116897536A (zh)
TW (1) TW202236852A (zh)
WO (1) WO2022182515A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150895B1 (en) * 2019-07-26 2021-10-19 Stripe, Inc. Automatically deploying artifacts
WO2023028965A1 (en) * 2021-09-02 2023-03-09 Nvidia Corporation Hardware codec accelerators for high-performance video encoding

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957350B1 (en) * 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US6101276A (en) * 1996-06-21 2000-08-08 Compaq Computer Corporation Method and apparatus for performing two pass quality video compression through pipelining and buffer management
US6999514B2 (en) * 2001-10-26 2006-02-14 Selliah Rathnam Motion compensation with subblock scanning
US7403660B2 (en) * 2003-04-30 2008-07-22 Nokia Corporation Encoding picture arrangement parameter in picture bitstream
US7869503B2 (en) * 2004-02-06 2011-01-11 Apple Inc. Rate and quality controller for H.264/AVC video coder and scene analyzer therefor
EP1574995A1 (en) * 2004-03-12 2005-09-14 Thomson Licensing S.A. Method for encoding interlaced digital video data
KR100587561B1 (ko) * 2004-04-08 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 구현하는 방법 및 장치
KR100664929B1 (ko) * 2004-10-21 2007-01-04 삼성전자주식회사 다 계층 기반의 비디오 코더에서 모션 벡터를 효율적으로압축하는 방법 및 장치
US7929599B2 (en) * 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
WO2010043773A1 (en) * 2008-10-17 2010-04-22 Nokia Corporation Sharing of motion vector in 3d video coding
US10165286B2 (en) * 2009-07-08 2018-12-25 Dejero Labs Inc. System and method for automatic encoder adjustment based on transport data
US9288501B2 (en) * 2011-03-08 2016-03-15 Qualcomm Incorporated Motion vector predictors (MVPs) for bi-predictive inter mode in video coding
JP5950541B2 (ja) * 2011-11-07 2016-07-13 キヤノン株式会社 動きベクトル符号化装置、動きベクトル符号化方法及びプログラム、動きベクトル復号装置、動きベクトル復号方法及びプログラム
CN104756498B (zh) * 2012-09-21 2019-04-23 英特尔公司 跨层运动向量预测
US10432946B2 (en) * 2014-12-23 2019-10-01 Apple Inc. De-juddering techniques for coded video
CA3051660A1 (en) * 2017-02-03 2018-08-09 Sony Corporation Transmission device, transmission method, reception device, and reception method
CN114710672A (zh) * 2017-09-29 2022-07-05 株式会社尼康 摄像装置、图像处理装置、视频压缩装置、设定程序、图像处理程序以及视频压缩程序
US11582475B2 (en) * 2019-09-24 2023-02-14 Qualcomm Incorporated History-based motion vector prediction

Also Published As

Publication number Publication date
TW202236852A (zh) 2022-09-16
WO2022182515A1 (en) 2022-09-01
US20220279204A1 (en) 2022-09-01
EP4298794A1 (en) 2024-01-03
KR20230150284A (ko) 2023-10-30

Similar Documents

Publication Publication Date Title
JP7342115B2 (ja) 履歴ベースの動きベクトル予測子の改善
US11140408B2 (en) Affine motion prediction
JP6545852B2 (ja) スケーラブルなマルチビュービデオコーディングにおける高度な残差予測
JP6740243B2 (ja) ビデオコーディングにおける動きベクトル導出
KR20210072064A (ko) 인터 예측 방법 및 장치
US11582475B2 (en) History-based motion vector prediction
CA3144976A1 (en) Reference picture resampling with switchable filters
WO2020118211A2 (en) Interaction of illumination compensation with inter-prediction
TW202042552A (zh) 用於照明補償之區塊大小限制
CN114402617A (zh) 利用矢量裁剪的仿射译码
CN116803080A (zh) 用于图像信号处理和视频处理的技术
CN116897536A (zh) 高效视频编码器架构
JP2023554269A (ja) 重複ブロック動き補償
CN118216139A (zh) 梯度直方图生成
KR20240087746A (ko) 그래디언트의 히스토그램 생성
CN116601959A (zh) 重叠块运动补偿
CN117837143A (zh) 用于解码器侧运动矢量细化的自适应双边匹配

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination