恒定质量视频编码的制作方法

文档序号:11815392阅读:565来源:国知局
恒定质量视频编码的制作方法与工艺

本申请要求于2014年4月30提交的题为“恒定质量视频编码(CONSTANT QUALITY VIDEO CODING)”的美国专利申请序号14/265,580的优先权,该美国专利申请以其全部内容通过引用结合在此。



背景技术:

视觉质量在许多媒体应用中是用户体验的一个重要方面。此外,在压缩/解压缩(编码解码器)系统中,视觉质量可能主要基于所使用的压缩格式。例如,视频编码器对视频信息进行压缩从而使得更多的信息可通过给定带宽被发送或存储在给定的存储器空间中等。经压缩的信号或数据然后可以经由对所述信号或数据进行解码或解压缩的解码器被解码以显示给用户。在一些实现方式中,恒定视觉质量可能是令人期望的。顾名思义,恒定视觉质量旨在跨视频帧或视频帧序列达到固定的主观质量。通常,恒定视觉质量实现方式可以采用可变比特率,从而使得比特流的各个部分的文件大小或尺寸可以取决于诸如压缩视频的复杂度的因素是可变的。

在一种方式中,恒定量化参数(QP)用于达到恒定视觉质量。例如,经由编码技术(诸如H.264/MPEG-4高级视频编码(AVC)标准或高效率视频编码(HEVC)标准等)获得的变换系数可以使用恒定QP被量化。例如,较大的QP值以较差的质量为代价而提供更大的压缩,而较小的QP值以更少的压缩为代价而达到更高的视觉质量。然而,这种恒定QP方式可能并不能完全提供如由用户所感知的恒定视觉质量。此外,这种恒定QP方式在(在视频帧内空间上或者跨视频帧在时间上)压缩视频序列的某些部分时可能不经济。

这样,现有技术可能并不能为用户和/或有效压缩提供恒定视觉质量。随着越来越高质量的视频传输变得更加广泛,这类问题可能变得关键。

附图说明

在附图中通过举例而非限制的方式展示了在此所描述的材料。为了图示的简明和清晰,图中所展示的元件不一定按比例绘制。例如,为清楚起见,某些元件的尺寸相对于其他元件可能被放大了。此外,在认为适当的情况下,在附图之间对参考标记加以重复以表示相应的或相似的元件。在附图中:

图1是一种用于提供具有恒定视觉质量的视频编码的示例系统的原理图;

图2是展示用于提供具有恒定视觉质量的视频编码的示例过程的流程图;

图3展示了示例比特流;

图4是展示用于提供具有恒定视觉质量的视频编码的示例过程的流程图;

图5是一种用于提供具有恒定视觉质量的视频编码的示例系统的原理图;

图6是示例系统的原理图;以及

图7展示了全部根据本公开的至少一些实现方式安排的示例设备。

具体实施方式

现在参照附图描述一个或多个实施例或实现方式。虽然对特定配置和安排进行了讨论,但应理解,这仅出于说明目的来进行。相关领域的技术人员将认识到,在不背离本描述的精神和范围的情况下可以采用其他配置和安排。将对相关领域的技术人员明显的是,在此描述的技术和/或安排还可以在除了在此描述的系统和应用之外的各种各样的其他系统和应用中被采用。

虽然以下描述阐述可以在如例如片上系统(SoC)架构的架构中显现各实现方式,但在此描述的技术和/或安排的实现方式并不局限于具体的架构和/或计算系统并且出于类似目的可以由任何架构和/或计算系统实现。例如,采用例如多个集成电路(IC)芯片和/或封装体、和/或各种计算设备和/或消费电子产品(CE)设备(如机顶盒、智能电话等)的各架构可以实现在此描述的技术和/或安排。此外,虽然以下描述可以阐述许多特定的细节(如逻辑实现、系统组件的类型和内在关系、逻辑划分/集成选择等),但要求保护的主题可以在没有这些特定细节的情况下被实践。在其他情形下,可以不详细示出某些材料(如,例如,控制结构和完整的软件指令序列),以便不模糊在此公开的材料。

在此公开的材料可以在硬件、固件、软件、或其任意组合中实现。在此公开的材料还可以被实现为存储于机器可读介质上的指令,这些指令可以被一个或多个处理器读取或执行。机器可读介质可以包括用于存储或传输具有由机器(例如,计算设备)可读的形式的信息的任何介质和/或机制。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备;电气、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。

说明书中提到“一种实现方式”、“实现方式”、“示例实现方式”等表明所描述的实现方式可以包括具体特征、结构、或特性,但每个实施例可能不一定包括这个具体特征、结构、或特性。而且,这些短语不一定指同一实现方式。此外,当结合一个实施方式来说明特定特征、结构或特性时,应当指出,无论是否在本文中明确说明,结合其他实施方式来实现这种特征、结构或特性都在本领域技术人员的知识范围内。

在此描述的方法、设备、装置、计算平台和制品涉及恒定质量视频编码。

如上所述,在许多视频编码实现方式中提供基本上恒定的视觉质量可能是有利的。同样如讨论的,恒定量化参数(QP)方式可能并不能完全提供恒定视觉质量并且在压缩视频序列的某些部分时可能不经济。这类方式可以不考虑人类视觉系统(HVS)的特性。例如,人类视觉系统对于具有基本上静止或缓慢移动的物体的视频场景可能更为敏感,并且对于快速移动或复杂的视频场景不太敏感。在所讨论的恒定QP方式中,使用相同的QP对快速移动或复杂的视频场景以及具有更慢运动的视频场景进行量化,这可能不经济,因为快速移动或复杂的视频场景可以进一步被压缩(例如,利用较大的QP)而无需通知用户。类似地,可以通过向缓慢移动的视频场景(所述场景中,用户可能对压缩假影更为敏感或者可能欣赏更高质量的视频等)提供更少的压缩来提供更高的质量。

在此讨论的技术与恒定QP技术相比可以提供更好的主观视频质量,并且可以提供具有相似或更低比特率的更好的主观视频质量。如在此进一步讨论地,帧级空间复杂度和/或时间复杂度用于调整帧级QP。帧级QP可以使用基于HVS的分析进一步被修改或用于生成块级QP(视频帧的块的QP)。对于QP的帧级和块级调整可以在对HVS敏感的区域中提供更小的QP(例如,具有更少的压缩和更高的质量)并且向对HVS不太敏感的区域提供更大的QP(例如,具有更大的压缩和更差的质量)。

在一些实施例中,视频编码可以包括确定视频帧的量化参数。所述量化参数可以基于用户针对质量的选择和/或所述量化参数可以基于帧类型(例如,帧内的、预测的、或双向的)被修改。所述量化参数可以是例如初始或参考量化参数。在一些实施例中,所述量化参数可以基于先前帧的经修改的(多个)量化参数被修改或调整。视频帧的量化参数可以基于与视频帧相关联的空间复杂度、与视频帧相关联的时间复杂度、或两者被修改以便生成视频帧的经修改的(或第二)量化参数。经修改的或第二量化参数可以是例如视频帧的帧级量化参数。视频帧的单独块的块级量化参数可以基于帧级量化参数、单独块的复杂度、以及视频帧的复杂度被生成。例如,单独块的复杂度可以是单独块的块预测失真、单独块的块方差、或其组合,并且视频帧的复杂度可以是视频帧的全部块的块方差的平均值、视频帧的全部块的块预测失真的平均值、或其组合。可以针对视频帧的全部块重复这种过程以便生成多个块级量化参数。

这些块级量化参数可以用于对与块相关联的变换系数进行量化,并且经量化的变换系数和块级量化参数可以被编码成用于解码器的比特流。所述解码器可以解压缩和/或解码所述比特流以便生成再现帧以呈现给用户。此外,所述块级量化参数可以用于生成与视频序列相关联的模式选择以用于编码。

图1是根据本公开的至少一些实现方式安排的用于提供视频编码的示例系统100的原理图。如图1所示,系统100可以包括量化参数(QP)模块101、量化模块112、模式选择模块113、以及熵编码器模块114。同样如所示出的,QP模块101可以包括空间/时间复杂度模块104、初始QP估计模块105、历史复杂度和QP模块106、帧内QP估计模块107、场景变化检测和预测(P)帧QP估计模块108、双向(B)帧QP估计模块109、以及基于块的QP调整模块110。

同样如所示出的,QP模块101可以接收视频102和智能恒定质量(ICQ)因子103,并且熵编码器模块114可以提供或传输比特流115。系统100可以提供例如视频压缩,并且系统100可以是经由计算机或计算设备等实现的视频编码器。例如,系统100可以生成与视频压缩-解压缩(编码解码器)标准(诸如,H.264/MPEG-4高级视频编码(AVC)标准或高效视频编码(HEVC)标准等)兼容的比特流115。

系统100可以包括为了清楚呈现而未示出的其他模块。例如,系统100可以包括变换模块、帧内预测模块、运动估计模块、运动补偿模块、环内滤波模块、参考帧缓冲器、扫描模块等。在一些示例中,系统100可以包括用于生成在编码过程中使用的参考帧的本地解码环路。这类模块对于本领域技术人员是已知的,并且为了清楚地呈现所描述的技术,在此不再对其进一步讨论。

如所讨论的,QP模块101可以接收视频102和ICQ因子103。视频102可以包括任何适当的分辨率的任何适当的视频帧、视频帧序列、视频数据等。例如,视频102可以是视频图形阵列(VGA)、高清晰度(HD)、全HD(例如,1080p)、或4K分辨率视频等。此外,视频102可以包括任何数量的视频帧、视频帧序列、或场景等。可以针对视频102作出帧选择和/或模式选择(未示出),从而使得视频102的视频帧可以各自由帧类型来指定。所述帧类型可以包括任何适当的帧类型或多个帧类型,其可以由标准或协议等来限定。例如,帧类型可以包括:不参考另一个或多个帧所预测的帧内帧(I帧)、参考另一个或多个帧所预测的且可用于预测其他帧的预测帧(P帧)、参考另一个或多个帧所预测的但不可用于预测其他帧的双向帧(B帧)、和/或参考另一个或多个帧所预测的且可用于层级编码结构中的预测的参考双向帧(B参考帧)。在一些示例中,P帧、B帧、以及B参考帧可以被认为是帧间帧。例如,在AVC标准中,I帧、P帧、B帧、以及B参考帧可以是可用的。在HEVC标准中,当层级编码被使能时,帧类型可以与参考深度级相关。

ICQ因子103可以包括视频质量(例如,所期望的或所需的视频质量等)的任何指示。例如,ICQ因子103可以由用户、系统100的系统参数、与系统100的通信连接质量等设定或确定。在实施例中,ICQ因子103是基于用户选择的视频102的恒定质量因子。所述用户选择的恒定质量因子可以是任何适当的选择,诸如整数值、主观质量选择、基于具有呈现给用户的质量范围的滑块的选择等。在实施例中,可以作出主观选择(例如,高质量、中等质量、或低质量),并且系统100可以将所述主观选择转换成ICQ因子103的整数值。例如,ICQ因子103的范围可以是从1至51,其中,约20值26的值提供中等质量视频、约27至31的值提供低质量视频、以及约15至19的值提供高质量视频,尽管可以使用任何值和/或范围。

如在此使用的,低ICQ因子103和低QP与更高的视频质量和更高的比特率相关联,并且高ICQ因子103和高QP与更低的视频质量和更低的比特率相关联。例如,用户或系统等可以在不管更高比特率的代价(例如,更少的压缩)而期望良好或更高质量视频时提供低ICQ因子103并且可以在不管更低的比特率(例如,可以达到更多的压缩)的代价而忍受更低质量视频时提供高ICQ因子103。同样如在此使用的,ICQ因子103可以被描述为恒定质量因子。

继续参照图1,初始QP估计模块105可以确定或生成视频102的帧的(多个)初始量化参数(IQP)值116。例如,初始QP值116可以包括整个视频102的帧的或视频102的序列(例如,视频102的一部分、视频102的场景等)的帧级QP值的初始估计。在示例中,视频102的视频帧的初始QP值116可以基于ICQ因子103。在示例中,视频102的视频帧的初始QP值116可以等于ICQ因子103。在另一示例中,视频102的视频帧的初始QP值116可以基于ICQ因子103以及基于帧类型的偏移。例如,可以如方程(1)至方程(3)中所示的对ICQ因子103作出基于帧类型(例如,I帧、P帧、B帧、或B参考帧)的帧类型偏移。

初始_QP(I)=ICQ因子

(1)

初始_QP(P)=初始_QP(I)+偏移P(ICQ因子)

(2)

初始_QP(B)=初始_QP(I)+偏移B(ICQ因子)

(3)

其中,ICQ因子可以是ICQ因子103,初始_QP可以是初始QP值(例如,初始QP值116),初始_QP(I)可以是I帧的初始QP值,初始_QP(P)可以是P帧的初始QP值,初始_QP(B)可以是B帧(例如,B帧或B参考帧)的初始QP值,偏移P可以是P帧的基于帧类型的偏移,并且偏移B可以是B帧的基于帧类型的偏移。

如方程(2)和方程(3)所示,偏移P和偏移B可以是ICQ因子的函数。所述函数可以包括基于所述ICQ因子提供偏移的任何适当的函数(例如,线性函数、阶梯函数、逻辑函数等)。例如,偏移P可以提供0至4范围内的整数值,其中为更低的ICQ因子值提供更高的偏移。例如,偏移B可以提供2至8范围内的整数值,其中为更低的ICQ因子值提供更高的偏移。同样,如方程(1)所示,在一些示例中,初始_QP(I)可以被确定,而无需偏移或者具有零偏移。在其他示例中,可以利用与在方程(2)和方程(3)中示出的这些类似的偏移函数(例如,偏移I(ICQ因子)等)来确定初始_QP(I)。

如图1所示,空间/时间复杂度模块104可以接收视频102并且可以针对视频102的帧生成帧的空间和/或时间复杂度(S/T C)值117。可以使用任何适当的技术来确定所述空间复杂度,所述适当的技术提供对视频102的视频帧的空间复杂度的测量。在实施例中,基于视频102的视频帧的帧内预测失真对所述空间复杂度进行估计。此外,可以使用任何适当的技术来确定视频102的视频帧的时间复杂度,所述适当的技术提供对视频帧的时间复杂度的测量。在实施例中,基于视频102的视频帧的帧间预测失真对所述时间复杂度进行估计。在各个实施例中,帧内预测失真的测量、帧间预测失真的测量或两者均可以基于统计测量,诸如绝对差和(SAD)、失真求和等。在一些示例中,可以基于视频102的视频帧的下采样版本来确定所述帧内预测失真、所述帧间预测失真或两者。例如,在确定视频帧的帧内预测失真、帧间预测失真或两者之前,可以由因子2、4、或8等对视频102的帧进行下采样或缩减。

如所示出的,帧内QP估计模块107可以接收空间和/或时间复杂度值117以及(多个)初始量化参数值116,并且可以生成I帧帧级量化参数(FLQP)118。在一些示例中,帧内QP估计模块107可以接收视频102的全部帧的空间和/或时间复杂度值117以及(多个)初始量化参数值116,并且在其他示例中,帧内QP估计模块107可以仅接收与视频102的I帧相关联的空间和/或时间复杂度值117以及(多个)初始量化参数值116。在示例中,帧内QP估计模块107可以基于空间和/或时间复杂度值117中的一者或两者对I帧的初始_QP(例如,I帧的初始_QP值116)进行修改以便生成I帧FLQP 118。例如,当I帧的空间复杂度指示高空间复杂度时,I帧FLQP 118可以大于I帧的初始QP,从而使得相对大的I帧FLQP 118可以用于具有高空间复杂度的帧(例如,当用户可能没有注意到质量下降并且压缩可能增加时),并且相对小的I帧FLQP 118可以用于具有低空间复杂度的帧(例如,当更高质量可以有益于用户时)。在一些示例中,可以基于帧内预测失真和凭经验确定的常数来确定高空间复杂度。

如所讨论的,在示例中,I帧的初始QP可以等于ICQ因子103(请参考方程(1))。在实施例中,I帧FLQP 118可以与I帧的空间复杂度成比例。例如,I帧FLQP 118可以被确定为如方程(4)所示:

QP帧内=初始_QP(I)×失真(帧内)c/阈值1

(4)

其中,QP帧内可以是I帧帧级量化参数(例如,I帧FLQP 118),初始_QP(I)可以是I帧的初始QP值(如以上所讨论的),失真(帧内)可以是帧内空间预测失真,C可以是凭经验确定的常数,并且阈值1可以是凭经验确定的常数或阈值。

如方程(4)所示,I帧帧级量化参数可以与升至值C的I帧的空间复杂度成比例。C可以是任何适当的值或常数,诸如例如1或任何非整数值。如所讨论的,C可以凭经验被确定,并且可以基于确定空间复杂度所使用的方法(例如,SAD或失真求和等)。在一些示例中,C可以基于视频102的内容从而使得C基于视频102可以是自适应的或可变的。

如所示出的,如以下讨论的,可以将I帧FLQP 118从帧内QP估计模块107传输至基于块的QP调整模块以用于进一步处理。同样如所示出的,经由耦合121,帧内QP估计模块107可以将各个数据(包括例如:I帧FLQP118、任何已确定的空间复杂度、常数或阈值(例如,C和/或阈值1)等)传输至历史复杂度和QP模块106。例如,在确定I帧FLQP 118之后,可以将所讨论的数据或其部分从帧内QP估计模块107传输至历史复杂度和QP模块106并且从历史复杂度和QP模块106传输至场景变化检测和P帧QP估计模块108和/或B帧QP估计模块109。

场景变化检测和P帧QP估计模块108还可以接收(仅P帧的全部帧的)空间和/或时间复杂度值117以及(多个)初始量化参数值116,并且可以生成基于(多个)P帧的初始QP值的参考量化参数(请参考以上方程(2))、与(多个)P帧相关联的I帧FLQP 118(例如,P帧参考的以用于编码的I帧的FLQP)、I帧的初始QP、和/或加权因子。例如,在对视频102的序列进行编码时,可以参考单个I帧对一个或多个P帧进行编码。P帧参考量化参数(QP)可以基于视频序列的增加了P帧间偏移的恒定质量因子(例如,如方程(2)所示)并且基于与其相关联的帧内量化值而被修改。例如,P帧参考QP可以被确定为如方程(5)所示:

QPp_参考=初始_QP(P)+(QP帧内-初始_QP(I))×w1

(5)

其中,QPp_参考可以是P帧参考QP,初始_QP(P)可以是P帧的初始QP值(如以上所讨论的),QP帧内可以是与(多个)P帧相关联的I帧帧级量化参数(例如,I帧FLQP 118),初始_QP(I)可以是I帧的初始QP值(如以上所讨论的),并且w1可以是加权因子。例如,加权因子w1将(QP帧内-初始_QP(I)的用于提供具有恒定视觉质量的视频编码对QPp_参考的贡献进行加权可以具有任何适当的价值。在一些示例中,加权因子w1可以是在约0.5至1的范围中,其中,值0.9是尤其有利的。

类似地,B帧QP估计模块109可以接收(仅B帧的全部帧的)空间和/或时间复杂度值117以及(多个)初始量化参数值116,并且可以生成基于(多个)B帧的初始_QP值的参考量化参数(请参考以上方程(3))、与(多个)B帧相关联的I帧FLQP 118、I帧的初始_QP、和/或加权因子。例如,在对视频102的序列进行编码时,可以针对(例如,参考I帧自身或参考I帧的另一帧)单个的I帧对一个或多个B帧(例如,B帧和/或B参考帧)进行编码。B帧参考量化参数(QP)可以基于视频序列的增加了B帧间偏移的恒定质量因子(例如,如方程(3)所示)并且基于与其相关联的帧内量化参数而被修改。例如,B帧参考QP可以被确定为如方程(6)所示:

QPB_参考=初始_QP(B)+(QP帧内-初始_QP(I))×w2

(6)

其中,QPB_参考可以是B帧参考QP,初始_QP(B)可以是B帧的初始QP值(如以上所讨论的),QP帧内可以是与(多个)B帧相关联的I帧帧级量化参数(例如,I帧FLQP 118),初始_QP(I)可以是I帧的初始QP值(如以上所讨论的),并且w2可以是加权因子。例如,加权因子w2可以是用于对(QP帧内-初始_QP(I))对QPB_参考的贡献进行加权的任何适当的值。在一些示例中,加权因子w2可以是在约0.5至1的范围中,其中,0.9是尤其有利的。在一些示例中,加权因子w1和w2可以是相同的,而在其他示例中,它们可以不同。

返回至场景变化检测和P帧QP估计模块108,对于视频102的每一个P帧,场景变化检测可以被应用以确定P帧是否与视频102中的场景变化相关联从而使得P帧为场景变化帧。例如,场景变化检测和P帧QP估计模块108可以基于帧(例如,如经由空间和/或时间复杂度值117所接收的)的时间复杂度确定P帧是否为场景变化帧。在实施例中,可以基于目标P帧的时间复杂度以及基于过去帧的过去平均时间复杂度(例如,一个或多个过去帧的平均时间复杂度)确定比值。如在此讨论的,所述过去平均时间复杂度可以经由场景变化检测和P帧QP估计模块108被确定或经由历史复杂度和QP模块106被接收,所述历史复杂度和QP模块可以基于经由耦合121、122、123所接收的数据来确定所述过去平均时间复杂度。可以基于任何数量的过去帧来确定所述过去平均时间复杂度。在实施例中,所述过去平均时间复杂度基于最近的五个先前帧(或者如果五个帧不可用则更少的)。

可以将所述目标P帧的时间复杂度与所述过去平均时间复杂度之比与阈值(例如,预定的或启发式确定的阈值)进行比较以便确定所述目标P帧是否为场景变化帧。在实施例中,如果所述比值大于阈值,则所述目标P帧被确定为场景变化帧。

如果P帧被确定为场景变化帧,则可以基于I帧的初始QP以及目标P帧的空间复杂度和/或时间复杂度来确定场景变化P帧的P帧帧级量化参数(P帧FLQP)。在实施例中,P帧FLQP与目标P帧的空间复杂度和/或时间复杂度成比例。例如,P帧FLQP可以被确定为如方程(7)所示:

QPp场景_变化_帧=初始_QP(I)×函数(失真(P)C/阈值2)

(V)

其中,QPp_场景_变化_帧可以是场景变化P帧帧级量化参数(例如,P帧FLQP 119),初始_QP(I)可以是I帧的初始QP值(如以上所讨论的),函数1可以是条件函数,失真(P)可以是基于帧内预测失真和/或帧间预测失真的P帧空间和/或时间复杂度,C可以是凭经验确定的常数,并且阈值2可以是凭经验确定的常数或阈值。

如方程(7)所示,场景变化帧的P帧帧级量化参数可以与升至值C的P帧的复杂度成比例。C可以是任何适当的值或常数,诸如例如1或任何非整数值。如所讨论的,C可以凭经验被确定,并且可以基于确定复杂度所使用的方法(例如,SAD或失真求和等)。在一些示例中,C可以基于视频102的内容从而使得C基于视频102可以是自适应的或可变的。方程(7)中C值可以与方程(4)中C值相同,或者它们可以不同。

函数1可以是向初始_QP(I)提供因子的任何适当的条件函数以便确定QPp_帧,例如函数1可以基于范围、一组范围、阈值、或一组阈值等提供值。例如,如果失真(P)C/阈值2低于阈值,则可以提供特定值,并且如果失真(P)C/阈值2高于阈值,则可以提供另一个值等。函数1可以实现任何数量的阈值或范围等。

如所讨论的,当P帧的时间复杂度指示高空间复杂度时,P帧级量化参数可以大于P帧的初始QP,从而使得相对大的QP可以用于具有高时间复杂度的帧(例如,当用户可能没有注意到质量下降并且压缩可能增加时),并且相对小的QP可以用于具有低时间复杂度的帧(例如,当更高质量可以有益于用户时)。在一些示例中,可以基于帧间预测失真和凭经验确定的常数来确定高时间复杂度。如在此进一步讨论的,对于其他帧间帧(例如,并非场景变化帧的P帧、B帧、和B参考帧)类似地,当帧间帧的时间复杂度指示高时间复杂度时,帧级量化参数可以大于帧间帧的初始或参考QP。

如图1所示,场景变化的P帧帧级量化参数可以作为P帧FLQPs 119或其一部分被提供。此外,场景变化的P帧帧级量化参数和/或其他已确定的数据可以被传输至历史复杂度和QP模块106。例如,此数据及其部分可以经由耦合124被传输至B帧QP估计模块109。例如,基于场景变化P帧,以上讨论的B帧参考量化参数(QP)可以由B帧QP估计模块109调整或重新确定。在示例中,B帧参考QP可以基于视频序列的增加了B帧间偏移的恒定质量因子(例如,如方程(3)所示)并且基于与其相关联的P帧帧级QP而被修改。例如,B帧参考QP可以被确定为如方程(8)所示:

QPB_参考=初始_QP(B)+(QPp_场景_变化_帧-初始_QP(I))×w2

(8)

其中,QPB_参考可以是B帧参考QP,初始_QP(B)可以是B帧的初始QP值(如以上所讨论的),QPp_场景_变化_帧可以是指示场景变化并且与(多个)B帧相关联的P帧的场景变化帧(例如,P帧FLQP 119之一)的P帧帧级量化参数,初始_QP(I)可以是I帧的初始QP值(如以上所讨论的),并且w2可以是加权因子。例如,加权因子w1将(QP帧内-初始_QP(I))对QPp_参考的贡献进行加权可以具有任何适当的价值。在一些示例中,加权因子w2可以是在约0.5至1的范围中,其中,0.9是尤其有利的。在一些示例中,加权因子w1和w2可以是相同的,并且在其他示例中,它们可以不同。在一些示例中,方程(8)的加权因子w2可以与方程(6)的加权因子w2相同,并且在其他示例中,它们可以不同。

返回至场景变化检测和P帧QP估计模块108,对于关键P帧或者对于视频102的每一个P帧,如果目标帧被确定为不是场景变化帧,时间比而已被确定为如方程(9)所示:

T_比值=当前_失真(P)C/过去_平均(P)C

(9)

其中,T_比值可以是时间比,当前_失真(P)可以是基于当前P帧的帧内预测失真和/或帧间预测失真的P帧空间和/或时间复杂度,C可以是凭经验确定的常数,并且过去_平均(P)可以是基于先前P帧的帧内预测失真和/或帧间预测失真的空间和/或时间复杂度。C可以是任何适当的常数,诸如例如1或任何非整数值。如所讨论的,C可以凭经验被确定,并且可以基于确定复杂度所使用的方法(例如,SAD或失真求和等)。在一些示例中,C可以基于视频102的内容从而使得C基于视频102可以是自适应的或可变的。在一些示例中,方程(9)中C值可以与在此讨论的这些值中的一个或多个值相同,并且在其他示例中,方程(9)中C值可以不同。

通常,非场景变化P帧可以基于参考帧(例如,参考I帧和/或P帧)被编码。在系统100内的场景变化检测和P帧QP估计模块108处或其他地方,可以确定非场景变化P帧的参考帧是否为帧内帧(例如,I帧)或场景变化帧(例如,场景变化P帧)。如果所述参考帧是帧内帧或场景变化帧,则可以基于如基于以上所描述的时间比而修改的P帧参考QP以及修改参数来确定P帧FLQP。在一些示例中,帧级QP(例如,P帧FLQP 119)可以被确定为如方程(10)所示:

QPp_帧=QPp_参考+CLIP(函数2(T_比值),-3,3)

(10)

其中,可以是QPp_帧可以是使用帧内或场景变化参考帧所编码的非场景变化P帧的P帧帧级量化参数(例如,P帧FLQP 119),QPp_参考可以是P帧参考QP参数(如针对方程(5)所讨论的),CLIP可以是剪切函数,函数2可以是条件函数,T_比值可以是如以上针对方程(9)所讨论的时间比,并且-3和3可以是剪切函数CLIP的修改参数。如所示出的,在一些示例中,修改参数可以是-3和3;然而,所述修改参数可以包括任何适当的值,诸如-2和2或-1和1等。

函数2可以是基于T_比值的任何适当的条件函,例如函数1可以基于范围、一组范围、阈值、或一组阈值等提供值。例如,如果基于T_比值低于阈值,则可以提供特定值,并且如果基于T_比值高于阈值,则可以提供另一个值等。函数1可以实现任何数量的阈值或范围等。CLIP可以是任何适当的剪切函数。例如,如果X>MAX,则函数CLIP(X、MIN、MAX)等于MAX,如果X<MIN,则CLIP(X、MIN、MAX)等于MIN,并且否则CLIP(X、MIN、MAX)等于X。

此外,场景变化检测和P帧QP估计模块108可以基于具有帧内或场景变化参考帧的P帧的已确定的P帧FLQP来更新或重新确定P帧的参考QP。在实施例中,所述参考QP可以被设置为等于具有帧内或场景变化参考帧的P帧的P帧FLQP。在一些示例中,所述参考QP可以基于以下方程(11):

QPP_参考=QPp_帧

(11)

其中,QPP_参考可以是P帧的QP参考,并且QPP_参考可以是如上所述的具有帧内或场景变化参考帧的P帧的帧级QP。

如果非场景变化P帧的参考帧不是帧内帧也不是场景变化帧,则可以基于如基于以上所描述的时间比而修改的P帧参考QP以及修改参数来确定P帧FLQP。在一些示例中,帧级QP(例如,P帧FLQP 119)可以被确定为如方程(12)所示:

QPp_帧=QPp_参考+CLIP(函数2(T_比值),-1,1,)

(12)

其中,可以是QPp_帧可以是既不使用帧内帧也不使用场景变化参考帧所编码的非场景变化P帧的P帧帧级量化参数(例如,P帧FLQP 119),QPp_参考可以是P帧参考QP参数(如针对方程(5)和方程(11)所讨论的),CLIP可以是如针对方程(10)所讨论的剪切函数,函数2可以是条件函数,T_比值可以是如以上针对方程(9)所讨论的时间比,并且-1和1可以是剪切函数CLIP的修改参数。如所示出的,在一些示例中,修改参数可以是-1和1;然而,所述修改参数可以包括任何适当的值,诸如-2和2等。

此外,B帧QP估计模块109可以接收数据(例如,经由场景变化检测和P帧QP估计模块108、耦合122、历史复杂度和QP模块106、以及耦合124等),并且B帧QP估计模块109可以基于以上所描述的已确定的P帧FLQP值来更新或重新确定B帧参考QP。在一些示例中,B帧的参考QP可以基于以下方程(13)被确定:

QPB_参考=QPp_帧+(初始_QP(P)-初始_QP(B))

(13)

其中,QPB_参考可以是B帧的QP参考,QPp_帧可以是以上针对方程(12)所描述的P帧的帧级QP,初始_QP(P)可以是P帧的初始QP值(如以上所讨论的),并且初始_QP(B)可以是B帧的初始QP值(如以上所讨论的)。

返回至场景变化检测和P帧QP估计模块108,已经对每一种类型的帧级量化参数(例如,场景变化P帧、参考帧内或场景变化P帧以用于编码的非场景变化P帧、以及参考非帧内和非场景变化P帧以用于编码的非场景变化P帧)的确定进行了描述。如以下所讨论的,此P帧帧级量化参数(FLQP)119可以被提供给基于块的QP调整模块110以用于进一步处理。

继续参考图1,如所示出的,B帧QP估计模块109可以经由耦合124接收空间和/或时间复杂度值117、(多个)初始量化参数值116、以及来自历史复杂度和QP模块106的其他数据,并且可以生成B帧帧级量化参数(FLQP)120。例如,B帧QP估计模块109可以基于先前确定的I帧和P帧的帧级量化参数来生成、更新并维持如以上所讨论的参考B帧QP值(例如,QPB_参考)。

在一些示例中,B帧QP估计模块107可以基于例如已确定的、重新确定的、和/或维持后的参考B帧QP值来生成B帧FLQP 120。在一些示例中,B帧的B帧FLQP 120可以等于参考B帧QP值,如方程(14)所示:

QPB_帧=QPB_参考

(14)

其中,QPB_帧可以是B帧帧级量化参数(例如,B帧FLQP 119之一),并且QPB_参考可以是如以上所讨论的参考B帧QP值。在实施例中,帧的B帧FLQP 120在未使用或使能层级编码结构的实现方式中可以等于参考B帧QP值。

在层级编码结构被使用或使能的实现方式中,B帧的B帧帧级量化参数(FLQP)119可以如针对方程(14)所讨论的被确定,并且针对B参考帧,B帧帧级量化参数(FLQP)119可以基于参考B帧QP值与参考P帧QP值(例如,与B参考帧相关联的P帧的参考量化参数)的平均值。例如,针对B参考帧,B帧帧级量化参数(FLQP)119可以被确定为如方程(15)所示:

QPB_参考_帧=(QPB_参考+QPp_参考)/2

(15)

其中,QPB_参考_帧可以是B帧帧级量化参数(例如,B帧FLQP 119之一),QPB_参考可以是如以上所讨论的参考B帧QP值,并且QPp_参考可以是如以上所讨论的参考P帧QP值。

如图1所示,是B帧FLQP 120可以被传输至基于块的QP调整模块110。

如所描述的,基于块的QP调整模块110可以经由模块107、108、和109分别接收I帧、P帧、和B帧的帧级量化参数(例如,视频帧的量化参数)(例如,I帧FLQP 118、P帧FLQP 119、和B帧FLQP 120)。基于块的QP调整模块110可以针对视频帧(例如,针对所有帧类型)的单独块生成块级量化参数(BLQP)125。在一些示例中,基于块的QP调整模块110可以接收来自系统100的其他模块的描述块的信息、与块相关联的运动向量、模式等。如所示出的,基于块的QP调整模块110可以将块级量化参数125传输至如以下进一步讨论的量化模块112和/或模式选择113。

在一些示例中,可以基于块是其部分的视频帧的帧级量化参数来生成BLQP 125。例如,针对视频帧的每一个块,可以基于视频帧的帧级量化参数、块的复杂度、以及视频帧的复杂度来生成块级量化参数。视频帧的块可以是任何适当的块,诸如例如宏块(例如,AVC中的MB)、编码单元(例如,HEVC中的CU)、分区、切片等。如所讨论的,帧级QP可以被调至具有高HVS敏感性的块的较小值并且调至具有低HVS敏感性的较大值。

在示例中,可以确定块的复杂度与视频帧的平均复杂度之比。例如,块的复杂度可以基于块预测失真、块方差、或其组合。视频帧的复杂度可以基于类似的确定(例如,块预测失真的平均值、块方差的平均值、或其组合)。这种比值可以被描述为例如失真率。在一些示例中,更低的失真率(例如,小于1)可以表示视频帧的高HVS敏感性块或区域。在一些示例中,失真比率可以与阈值或(多个)阈值进行比较,并且基于所述比较,帧级量化参数可以被修改以便生成块级量化参数。在实施例中,当单独块的复杂度与视频帧的复杂度之比大于一时,块级量化参数可以大于帧级量化参数(例如,可以增加所述帧级量化参数以便确定所述块级量化参数)。

针对帧内帧(以及相关联的I帧FLQP 118),每一个块的失真率可以如所讨论的被确定。在一些示例中,针对每一个块,块级量化参数(BLQP)可以基于失真率与阈值的比较以及基于I帧的FLQP被确定。例如,如果所述失真率大于阈值,则所述块级量化参数(BLQP)可以被确定为等于FLQP。如果所述失真率小于所述阈值,则偏移可以基于所述失真率被确定,并且所述偏移可以应用于所述FLQP以便确定所述BLQP(例如,所述FLQP可以减少偏移以便确定所述BLQP)。在一些示例中,可以确定具有大于阈值的失真的I帧的块的块级QP,如方程(16)所示:

QP帧内_块=QP帧内+偏移I(失真_率)

(16)

其中,QP帧内_块可以是具有大于阈值的失真率的内块的块级量化参数,QP帧内可以是I帧帧级量化参数,偏移I可以是确定偏移的函数,并且失真率可以是如所讨论的失真率。在一些示例中,所述偏移可以是在约-1至-6的范围中,从而使得低复杂度区域中的块可以具有高达6个单元小于帧级QP的块级量化参数。偏移1可以是任何适当的函数,诸如线性函数、选择函数等。如所讨论的,在一些示例中,偏移I可以提供在-1至-6的范围中的偏移;然而,任何适当的偏移或偏移范围可以被使用,诸如从-1至-4或从-2至-3等的范围。

针对为场景变化帧(如以上所讨论的)的P帧(以及相关联的P帧FLQP 118),场景变化P帧的每一个块的失真率可以被确定为如以上所讨论的,并且BLQP可以基于失真率与阈值的比较以及基于场景变化P帧FLQP被确定。例如,如果所述失真率大于阈值,则所述块级量化参数(BLQP)可以被确定为等于FLQP。如果所述失真率小于所述阈值,则偏移可以基于所述失真率被确定,并且所述偏移可以应用于所述FLQP以便确定所述BLQP(例如,所述FLQP可以减少偏移以便确定所述BLQP),如方程(17)所示:

QPp_场景_变化_块=QPp_场景_变化_帧+偏移P(失真_率)

(17)

其中,QPp_场景_变化_块可以是具有大于阈值的失真率的场景变化P帧块的块级量化参数,QPp_场景_变化_帧可以是场景变化P帧帧级量化参数,偏移P可以是确定偏移的函数,并且失真_率可以是如所讨论的失真率。在一些示例中,所述偏移可以是在约-1至-6的范围中,从而使得低复杂度区域中的块可以具有高达6个单元(小于帧级QP)的块级量化参数。如针对函数偏移I所讨论的,偏移P可以是任何适当的函数,诸如线性函数、选择函数等,并且偏移P可以提供任何适当的偏移或偏移范围,诸如在-1至-6、-1至-4、-2至-3等的范围中的偏移。

针对不是场景变化帧的P帧(例如,P帧FLQP 118)以及针对B帧(例如,针对帧间帧),每一个块的失真率可以被确定为如以上所讨论的,并且BLQP可以基于失真率与一个或多个阈值的比较以及基于非场景变化或B帧FLQP被确定。在一些示例中,BLQP还可以基于块的运动向量。例如,如果块的失真率大于第一阈值,正偏移可以应用于FLQP以便确定BLQP。所述正偏移可以是基于失真率的任何适当的偏移或偏移范围,诸如例如,1至3、1至4等的范围中的偏移。在实施例中,所述正偏移处于1至3的范围中,从而使得块(例如,HVS低敏感性区域中的块)可以使用高达3(大于帧级量化参数)的量化参数。此外,如果块的失真率小于第二阈值,负偏移可以应用于FLQP以便确定BLQP。所述负偏移可以是基于失真率的任何适当的偏移或偏移范围,诸如例如,-1至-4、-1至-2等的范围中的偏移。在实施例中,所述负偏移处于-1至-4的范围中,从而使得块(例如,HVS敏感区域中的块)可以使用高达4(小于帧级量化参数)的量化参数。

如所讨论的,在一些示例中,第一阈值可以用于正偏移确定,并且第二阈值可以用于负偏移确定。在一些示例中,所述第一阈值可以大于所述第二阈值。在实施例中,所述第一阈值可以大于所述第二阈值,并且如果块的失真率处于第一和第二阈值之间,则块的块级QP被设置为帧级QP。在一些示例中,所述第一阈值针对不同的帧类型可以相同或不同,并且所述第二阈值针对不同的帧类型可以相同或不同。

此外,在一些示例中,与块相关联的运动向量可以用于确定偏移(正偏移或负偏移或无变化)或用于修改基于失真率的偏移。例如,针对具有大运动向量的块,可以应用正偏移和/或可以增加基于失真率所确定的偏移。类似地,针对具有小或零运动向量的块,可以应用负偏移和/或可以降低基于失真率所确定的偏移。

如图1所示。基于块的QP调整模块110可以将BLQP 125传输至量化模块112和/或模式选择模块113。量化模块112可以接收BLQP 125和变换系数111,并且可以基于BLQP 125对变换系数111进行量化。变换系数111可以是任何适当的变换系数,诸如例如,基于亮度数据的离散余弦变换的变换系数、色度数据、差分数据(例如,针对预测块与实际块之间的差)等。例如,量化模块112可以使用如在此所讨论的块的基于块的QP对块的变换系数进行量化。可以使用较小的QP(为了更高的质量)对处于HVS敏感区域或序列中的块进行量化,并且使用较大的QP(为了比特率节省)对处于低HVS敏感区域或序列中的块进行量化。模式选择模块113可以接收BLQP 125,并且可以用于模式选择和/或模式决定。

如所示出的,BLQP 125、经量化的变换系数和/或模式选择数据可以被传输至熵编码器114。熵编码器114可以将BLQP 125、经量化的变换系数、(多个)模式数据和/或其他数据(例如,运动向量等)熵编码至比特流115中。在一些示例中,经量化的变换系数、(多个)模式数据、和/或其他数据在编码之前可以被提供给扫描模块。此外,尽管在此针对熵编码进行了讨论,但是可以使用任何适当的(多个)编码技术。比特流115可以被传输至另一个设备以用于解码或保存至存储器设备等。在一些示例中,比特流115可以是标准顺应性比特流,诸如例如,符合AVC或HEVC的比特流等。

在此针对图1和其他处所讨论的技术可以提供具有降低比特率优点的类似或更好的主观视频质量。

图2是展示根据本公开的至少一些实现方式安排的用于提供具有恒定视觉质量的视频编码的示例过程200的流程图。如图2所展示的,过程200可以包括一个或多个操作201-221。过程200可以形成视频编码过程的至少一部分。通过非限制性示例,针对由如在此讨论的系统100采取的视频,过程200可以形成视频编码过程的至少一部分。

过程200可以在开始操作201“开始”处开始,在所述操作中,可以使能或选择恒定视觉质量(例如,可以设置或选择恒定视觉质量模式)。此外,可以由用户或如在此讨论的系统100等确定ICQ因子(诸如ICQ因子103),并且可以选择视频序列等(诸如视频102)以用于编码。

过程200可以在操作202“接收视频序列和恒定质量因子(ICQ因子)”处继续,在所述操作中,可以接收视频序列和ICQ因子。例如,可以经由量化参数模块101接收视频102和ICQ因子103。

过程200可以在操作203“帧类型”处继续,在所述操作中,可以确定视频序列的帧的帧类型。例如,可以确定任何帧类型(例如,I帧、P帧、B帧、B参考帧等)。取决于帧类型,处理可以在操作204、205、或206处继续。为了清除呈现,可以以线性或串行方式描述过程200的操作;然而,实际上,可以以任何顺序和/或并行执行过程200的操作。例如,可以使用过程200立刻处理多个帧。

如果帧类型被确定为I帧,过程200可以在操作204“初始QP(I)”处继续,在所述操作中,可以确定I帧的初始量化参数。例如,可以基于如在此讨论的方程(1)由初始QP估计模块105确定初始QP(I)。

过程200可以在操作207“QP I帧”处继续,在所述操作中,可以确定I帧的帧级QP。例如,帧内QP估计模块107可以基于I帧的初始量化参数以及I帧的空间和/或时间复杂度(例如,如从空间/时间复杂度模块104接收的)确定I帧的帧级QP。在实施例中,帧内QP估计模块107可以基于如在此讨论的方程(4)确定I帧的帧级QP。

过程200可以在操作210“I帧的块的QP”处继续,在所述操作中,可以确定I帧的块的块级量化参数。例如,基于块的QP调整模块110可以基于块的失真率以及与阈值的比较确定I帧的块级QP。例如,如果块的失真率大于阈值,则块的块级QP可以是帧级QP,并且如果块的失真率小于阈值,则块的块级QP可以基于如在此讨论的方程(16)被确定。

过程200可以在操作220“量化、模式选择、编码”处继续,在所述操作中,(多个)模式选择可以基于I帧BLQP,变换系数可以基于I帧BLQP被量化,并且经量化的变化系数、I帧BLQP、(多个)模式数据、和/或附加数据可以被熵编码至比特流中。例如,量化模块112可以基于I帧BLQP125(其可以包括如所讨论的其他帧BLQP)对变换系数进行量化,模式选择模块113可以基于I帧BLQP 125作出(多个)模式选择,并且熵编码器114可以将经量化的变换系数、I帧BLQP、(多个)模式数据、和/或附加数据编码至比特流115中。

返回至操作203,如果帧类型被确定为P帧,过程200可以在操作205“初始QP(P)”处继续,在所述操作中,可以确定P帧的初始量化参数。例如,可以基于如在此讨论的方程(2)由初始QP估计模块105确定初始QP(P)。

过程200可以在操作208“参考QP(P)”处继续,在所述操作中,可以确定和/或维持P帧(和/或其他P帧)的参考QP。例如,可以基于如在操作207处确定的且如从操作207至操作208经由虚线示出的I帧(例如,当前(多个)P帧的I帧参考)的帧级QP来确定P帧的参考QP。在示例中,场景变化检测和P帧QP估计模块108可以基于如在此讨论的方程(5)使用I帧FLQP来确定参考QP。在另一示例中,基于具有帧内或场景变化参考帧的前一P帧的帧级QP以及如从操作217至操作208经由虚线示出的,可以确定或重新确定或修改P帧的参考QP。在示例中,场景变化检测和P帧QP估计模块108可以基于如在此讨论的方程(11)使用具有帧内或场景变化参考帧的前一P帧的QP来确定参考QP。

过程200可以在决定操作211“场景变化?”处继续,在所述操作中,可以确定P帧是否为场景变化P帧。例如,场景变化检测和P帧QP估计模块108可以基于P帧的时间复杂度确定P帧是否为场景变化P帧。在实施例中,可以基于目标P帧的时间复杂度以及基于过去帧的过去平均时间复杂度确定比值,从而使得如果比值大于阈值,则所述确定比值被确定为场景变化帧。

如果所述P帧被确定为场景变化P帧,则过程200可以在操作214“QP、P帧、SC”处继续,在所述操作中,可以确定场景变化P帧的帧级QP。例如,场景变化检测和P帧QP估计模块108可以基于I帧的初始量化参数以及场景变化P帧的空间和/或时间复杂度(例如,如从空间/时间复杂度模块104接收的)确定场景变化P帧的帧级QP。在实施例中,场景变化检测和P帧QP估计模块108可以基于如在此讨论的方程(7)确定场景变化P帧的帧级QP。

过程200可以在操作219“确定P帧的块的QP”处继续,在所述操作中,可以确定场景变化P帧的块的块级量化参数。例如,基于块的QP调整模块110可以基于块的失真率(例如,块的复杂度与帧的复杂度之比)以及与阈值的比较确定场景变化P帧的块级QP。例如,如果块的失真率大于阈值,则块的块级QP可以是帧级QP,并且如果块的失真率小于阈值,则块的块级QP可以基于如在此讨论的方程(17)被确定。

过程200可以在操作220“量化、模式选择、编码”处继续,在所述操作中,(多个)模式选择可以基于场景变化P帧BLQP,变换系数可以基于场景变化P帧BLQP被量化,并且经量化的变化系数、场景变化P帧BLQP、(多个)模式数据、和/或附加数据可以被熵编码至比特流中。例如,量化模块112可以基于场景变化P帧BLQP 125(其可以包括如所讨论的其他帧BLQP)对变换系数进行量化,模式选择模块113可以基于场景变化P帧BLQP作出(多个)模式选择,并且熵编码器114可以将经量化的变换系数、I帧BLQP、(多个)模式数据、和/或附加数据编码至比特流115中。

返回至操作211,如果所述P帧被确定为不是场景变化P帧,则过程200可以在操作213“时间比”处继续,在所述操作中,可以确定P帧(例如,非场景变化P帧)的时间比。例如,可以基于如在此讨论的方程(9)由场景变化检测和P帧QP估计模块108确定时间比。

过程200可以在决定操作215“前一(Prev)帧内帧或场景变化(SC)”处继续,在所述操作中,可以确定当前P帧(例如,非场景变化P帧)的编码参考帧是否为帧内帧(例如,I帧)或场景变化P帧。例如,系统的场景变化检测和P帧QP估计模块108或另一模块可以确定非场景变化P帧的参考帧是否为帧内帧或场景变化帧P帧。

如果所述当前P帧基于帧内帧或场景变化P帧,则过程200可以在操作217“QP、P帧(Prev I或SC)”处继续,在所述操作中,可以确定具有帧内帧或场景变化参考帧的非场景变化P帧的帧级量化参数。例如,场景变化检测和P帧QP估计模块108可以基于如在此讨论的方程(10)确定P帧的帧级QP。

过程200可以在操作219“确定P帧的块的QP”处继续,在所述操作中,可以确定具有帧内帧或场景变化参考帧的非场景变化P帧的块的块级量化参数。例如,基于块的QP调整模块110可以基于每一个块的失真率(例如,块的复杂度与帧的复杂度之比)以及所述失真率与一个或多个阈值的比较来确定P帧的块级QP。例如,如果块的失真率大于第一阈值,则正偏移可以应用到帧级QP以便确定块级QP,并且如果块的失真率小于第二阈值,则负偏移可以应用到帧级QP以便确定如在此讨论的块级QP。

如参考I帧BLQP和/或场景变化P帧BLQP讨论的,过程200可以在操作220“量化、模式选择、编码”处继续,在所述操作中,(多个)模式选择可以基于具有帧内帧或场景变化P帧参考BLQP的非场景变化P帧,变换系数可以基于BLQP被量化,并且经量化的变化系数、场景变化P帧BLQP、(多个)模式数据、和/或附加数据可以被熵编码至比特流中。

返回至操作215,如果所述当前P帧并不基于帧内帧也不基于场景变化P帧,则过程200可以在操作218“QP、P帧”处继续,在所述操作中,可以确定既不具有帧内帧也不具有场景变化参考帧的非场景变化P帧的帧级量化参数。例如,场景变化检测和P帧QP估计模块108可以基于如在此讨论的方程(12)确定P帧的帧级QP。

过程200可以在操作219“确定P帧的块的QP”处继续,在所述操作中,可以确定既不具有帧内帧也不具有场景变化参考帧的非场景变化P帧的块的块级量化参数。例如,基于块的QP调整模块110可以基于每一个块的失真率(例如,块的复杂度与帧的复杂度之比)以及所述失真率与一个或多个阈值的比较来确定P帧的块级QP。例如,如果块的失真率大于第一阈值,则正偏移可以应用到帧级QP以便确定块级QP,并且如果块的失真率小于第二阈值,则负偏移可以应用到帧级QP以便确定如在此讨论的块级QP。

如在此所讨论的,过程200可以在操作220“量化、模式选择、编码”处继续,在所述操作中,(多个)模式选择可以基于不具有帧内帧或场景变化P帧参考帧BLQP的非场景变化P帧,变换系数可以基于BLQP被量化,并且经量化的变化系数、场景变化P帧BLQP、(多个)模式数据、和/或附加数据可以被熵编码至比特流中。

返回至操作203,如果帧类型被确定为B帧,过程200可以在操作206“初始QP(B)”处继续,在所述操作中,可以确定B帧的初始量化参数。例如,可以基于如在此讨论的方程(3)由初始_QP估计模块105确定初始QP(B)。

过程200可以在操作209“参考QP(B)”处继续,在所述操作中,可以确定和/或维持B帧(和/或其他B帧)的参考QP。例如,基于如在操作207处确定的I帧的帧级QP以及如基于帧级QP从操作207至操作209经由虚线示出的,可以确定B帧的参考QP。在示例中,B帧QP估计模块109可以基于如在此讨论的方程(6)使用I帧FLQP来确定参考QP。在另一示例中,基于前一场景变化P帧的帧级QP以及如从操作215至操作209经由虚线示出的,可以确定或重新确定或修改B帧的参考QP。在示例中,B帧QP估计模块109可以基于如在此讨论的方程(8)使用场景变化P帧FLQP来确定参考QP。在又另一示例中,基于不具有参考帧(所述参考帧为帧内帧或场景变化帧)的前一非场景变化P帧的帧级QP以及如从操作218至操作209经由虚线示出的,可以确定或重新确定或修改B帧的参考QP。在示例中,B帧QP估计模块109可以基于如在此讨论的方程(13)使用P帧FLQP来确定参考QP。

过程200可以在操作212“QP、B帧”处继续,在所述操作中,可以确定B帧的帧级QP。例如,B帧QP估计模块109可以基于如被修改以便生成B帧的参考量化参数的B帧的初始量化参数确定B帧的帧级QP。在实施例中,B帧QP估计模块109可以基于如在此讨论的方程(14)确定B帧的帧级QP(例如,所述帧级QP可以是经维持的B帧参考QP)。在另一实施例中,B帧QP估计模块109可以基于如在此讨论的方程(15)确定B帧(例如,B参考帧)的帧级QP。

过程200可以在操作216“确定B帧的块的QP”处继续,在所述操作中,可以确定B帧的块的块级量化参数。例如,基于块的QP调整模块110可以基于每一个块的失真率(例如,块的复杂度与帧的复杂度之比)以及所述失真率与一个或多个阈值的比较来确定B帧的块级QP。例如,如果块的失真率大于第一阈值,则正偏移可以应用到帧级QP以便确定块级QP,并且如果块的失真率小于第二阈值,则负偏移可以应用到帧级QP以便确定如在此讨论的块级QP。

如在此所讨论的,过程200可以在操作220“量化、模式选择、编码”处继续,在所述操作中,(多个)模式选择可以基于B帧参考BLQP,变换系数可以基于BLQP被量化,并且经量化的变化系数、场景变化P帧BLQP、(多个)模式数据、和/或附加数据可以被熵编码至比特流中。

过程200可以在操作221“比特流”处结束,在所述操作中,可以生成基于以上技术生成的比特流。所生成的比特流可以经由存储器设备存储和/或被传输至解码器以用于解压缩、生成视频帧、以及向用户呈现视频帧。

图3展示了根据本公开的至少一些实现方式安排的示例比特流300。在一些示例中,比特流300可以对应于如图1所示的比特流115。尽管未在图3中示出,但是在一些示例中,比特流300可以包括一个或多个报头部分以及一个或多个数据部分。比特流300可以包括与编码视频数据相关联的任何适当的数据。如图3所示,比特流300可以包括编码量化变换系数301、编码模式数据302、编码I帧块级量化参数303、编码P帧块级量化参数304、编码B帧块级量化参数305、和/或编码运动向量数据306。如所讨论的,比特流300可以经由系统100的熵编码器114生成。

例如,比特流300可以包括编码量化变换系数301,所述编码量化变换系数包括(例如,由量化模块112)基于如在此所讨论的相关联的块级量化参数进行量化的变换系数。所述经量化的变换系数可以被编码(例如,经由熵编码器114被熵编码的)并插入比特流300中。此外,比特流300可以包括编码模式数据302,所述编码模式数据可以包括来自模式选择模块113的被编码(例如,经由熵编码器114被熵编码的)并插入比特流300中的(多个)模式选择数据。同样如所示出的,比特流300可以包括编码I帧块级量化参数303、编码P帧块级量化参数304、编码B帧块级量化参数305,其可以包括被编码(例如,经由熵编码器114被熵编码的)并插入比特流300中的块级量化参数(例如,BLQP)。

如所讨论的,比特流300可以经由编码器或编码器系统(诸如例如,系统100)生成,并且比特流300可以存储至(例如,系统100的)存储器中、存储至存储器存储设备(例如,盘、用于下载的服务器等)中。此外,比特流300可以由解码器访问(例如,经由读取盘、流传输、下载等),所述解码器可以对比特流进行解码并且生成视频帧或视频帧序列以用于呈现给用户。

图4是展示根据本公开的至少一些实现方式安排的用于提供具有恒定视觉质量的视频编码的示例过程400的流程图。如图4中所示,过程400可以包括一个或多个操作401-403。过程400可以形成视频编码过程的至少一部分。通过非限制性示例,针对由如在此讨论的系统100采取的视频,过程400可以形成视频编码过程的至少一部分。进一步地,在此将参考图5的系统500描述过程400。

图5是根据本公开的至少一些实现方式安排的用于提供具有恒定视觉质量的视频编码的示例系统500的原理图。如图5所示,系统500可以包括图形处理单元(GPU)501、一个或多个中央处理单元502以及存储器存储503。同样如所示出的,GPU 501可以包括量化参数模块101、量化模块112、模式选择模块113、和/或熵编码器模块114。在系统500的示例中,存储器存储503可以存储视频内容,诸如视频帧和/或比特流。

图像处理单元501可以包括任意数量和类型的图像处理单元,这些图形处理单元可以提供如在此讨论的操作。这些操作可以经由软件或硬件或其组合来实现。在实施例中,图像处理单元501的所展示的模块可以经由电路等来实现。例如,图形处理单元501可以包括专门用于操纵视频数据以便生成压缩图像数据的电路。中央处理单元502可以包括任意数量和类型的处理单元或模块,这些处理单元或模块可以为系统500提供控制以及其他更高级别的功能。存储器存储503可以是任意类型的存储器,如易失性存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或非易失性存储器(例如,闪存等)等等。在实施例中,存储器存储503可以被配置成用于存储视频数据,诸如帧和/或块级量化参数、经量化的变化系数、比特流、或在此讨论的任何其他视频数据。在非限制性示例中,存储器存储503可以由缓存存储器实现。在实施例中,量化参数模块101、量化模块112、模式选择模块113、和/或熵编码器模块114可以经由图形处理单元501的执行单元(EU)实现。EU可以包括例如可编程逻辑或电路,如可以提供广泛的可编程逻辑功能阵列的一个或多个逻辑核。在实施例中,量化参数模块101、量化模块112、模式选择模块113、和/或熵编码器模块114可以经由专用硬件(如固定功能电路等)实现。固定功能电路可以包括专用逻辑或电路并且可以提供固定功能入口点的集合,所述集合可以映射到针对固定目的或功能的专用逻辑。

返回至对图4的讨论,过程400可以在操作401“确定视频序列的视频帧的量化参数”处开始,在所述操作中,可以确定视频序列的视频帧的第一量化参数。例如,初始QP估计模块、场景变化检测和P帧QP估计模块108、和/或B帧QP估计模块109中的一项或多项可以生成视频帧的量化参数。在一些示例中,所述第一量化参数可以包括智能恒定质量因子、初始QP值、或如在此讨论的参考QP。

例如,如果视频帧是I帧或场景变化P帧,则第一量化参数可以是初始QP值(诸如初始_QP(I))或如在此讨论的恒定质量因子(诸如ICQ因子)。例如,所述量化参数可以基于用户选择的恒定质量因子,ICQ因子。

如果视频帧为不是场景变化帧的P帧,则第一量化参数可以基于恒定质量因子(例如,初始_QP(I))或增加了P帧偏移(例如,初始_QP(P),如方程(2)所示)的恒定质量因子,并且基于与所述P帧相关联的帧内量化值被修改(例如,如方程(5)所示,其中,所述帧内量化值是QP帧内)。

如果视频帧是B帧,则第一量化参数可以基于增加了B帧偏移(例如,初始_QP(B))的恒定质量因子,并且基于与B帧相关联的帧内量化值(例如,如方程(6)所示,其中,所述帧内量化值是QP帧内)或基于与B帧相关联的P帧量化值(例如,如方程(8)所示,其中,所述P帧量化值是QPp_场景_变化_帧)被修改。

过程400可以在操作402“基于视频帧的复杂度修改量化参数以便生成视频帧的第二量化参数”处继续,在所述操作中,可以基于与视频帧相关联的空间复杂度或时间复杂度中的至少一项修改第一量化参数以便生成视频帧的第二量化参数。例如,智能恒定质量因子、初始QP值、或参考QP可以基于视频帧的空间复杂度(例如,帧内预测失真)或时间复杂度(例如,帧间预测失真)被修改以便生成第二量化参数。在一些示例中,当与视频帧相关联的空间复杂度或时间复杂度分别指示高空间复杂度或高时间复杂度中的至少一项时,第二量化参数可以大于第一量化参数。

例如,如果视频帧是I帧或场景变化P帧,则第二量化参数可以基于第一量化参数(例如,恒定质量因子),并且可以与帧内帧或场景变化P帧的空间复杂度成比例。例如,第二量化参数可以基于如所讨论的方程(4)(例如,针对I帧)或方程(7)(例如,针对场景变化P帧)被确定。

如果所述视频帧为不是场景变化帧的P帧,则所述第一量化参数可以是参考QP值,诸如所讨论的QPp_参考。第二量化参数可以基于第一量化参数,所述第一量化参数基于P帧的时间复杂度与视频序列的过去平均时间复杂度的时间比被调整。例如,第二量化参数可以基于如在此讨论的方程(9)和方程(10)被确定。

如果视频帧是B帧,则第三量化参数可以基于第二量化参数被确定。例如,B帧可以是视频序列的第二帧,并且第二量化参数可以是帧(例如,I帧或P帧)的帧级量化参数。在此上下文中,第三量化参数可以是基于方程(6)、方程(8)或方程(13)所确定的参考B帧量化参数,并且如方程(14)中所示,B帧的帧级量化参数可以等于参考B帧量化参数(例如,如所讨论的第三量化参数)。如所讨论的,如果视频帧是B参考帧,则第三量化参数可以基于第二量化参数的平均值,从而使得第二量化参数包括基于方程(11)的P帧参考量化参数和B帧参考量化参数。例如,如方程(15)中所示,可以确定B参考帧的帧级量化参数。

过程400可以在操作403“基于第二量化参数、块的复杂度、以及视频帧的复杂度生成视频帧的块的块级量化参数”处继续,在所述操作中,可以基于第二量化参数、单独块的复杂度、以及视频帧的复杂度生成视频帧的单独块的块级量化参数。例如,基于块的QP调整模块110可以生成视频帧的单独块的量化参数。例如,针对视频帧的每一个块可以重复操作403。

例如,如果视频帧是帧内帧(例如,I帧)或场景变化P帧,则块级量化参数可以基于单独块的复杂度与帧内帧或场景变化P帧的复杂度之比与第一阈值的比较而等于第二量化参数或者小于第二量化参数。例如,可以确定单独块的失真率。如果失真率大于(或者大于等于)阈值,则块级量化参数可以等于帧级量化参数。如果失真率小于(或者小于等于)阈值,则块的块级量化参数可以基于如在此讨论的方程(16)(例如,针对I帧)或方程(17)(例如,针对场景变化P帧)被确定。

如果视频帧是帧间帧(例如,不是场景变化帧、B帧、或B参考帧的P帧),则块级量化参数可以基于单独块的复杂度与帧间帧的复杂度之比与第一阈值的比较而大于第二量化参数或者基于单独块的复杂度与帧间帧的复杂度之比与第二阈值的比较而小于第二量化参数。例如,如果块的失真率(如以上讨论的)大于第一阈值,则正偏移可以应用到帧级QP以便确定块级QP,并且如果块的失真率小于第二阈值,则负偏移可以应用到帧级QP以便确定如在此讨论的块级QP。

如所讨论的,块级量化参数可以用于对与单独块相关联的变换系数进行量化和/或用于作出与视频序列相关联的模式选择决定。所述块级量化参数、经量化的变换系数、和/或模式可以被编码成如在此讨论的比特流。可以针对任意数量的视频帧、视频序列或视频片段串行地或者并行地重复过程400任意次数。

在此描述的系统的各种组件可以用软件、固件、和/或硬件和/或其任意组合来实现。例如,系统100或系统500的各组件可以至少部分地由诸如可以在计算系统(诸如,例如,智能电话)中找到的计算片上系统(SoC)的硬件来提供。本领域技术人员可以认识到,在此描述的系统可以包括尚未在相应附图中描绘的附加组件。例如,在此讨论的系统可以包括为了清楚起见尚未被描绘的附加组件,诸如比特流复用器或解复用器模块等。

虽然在此讨论的示例过程(例如,过程200和过程400)的实现方式可以包括按所展示的顺序采取示出的所有操作,但是本公开并不限于这个方面,并且在各个示例中,此处的示例过程的实现方式可以仅包括所示操作的子集、以与所展示的顺序不同的顺序执行的操作、或附加操作。

另外,在此讨论的操作中的任何一个或多个操作可以响应于由一个或多个计算机程序产品提供的指令而被采取。这类程序产品可以包括提供指令的信号承载介质,当指令由例如处理器执行时可以提供在此描述的功能。计算机程序产品可以以一个或多个机器可读介质的任何形式被提供。因此,例如,包括一个或多个图形处理单元或处理器核的处理器可以响应于由一个或多个机器可读介质传达给处理器的程序代码和/或指令或指令集而采取此处的示例过程的块中的一个或多个块。通常,机器可读介质可以以程序代码和/或指令或指令集的形式传达软件,这些程序编码和指令集可以使在此描述的设备和/或系统中的任意一者实现系统100或500的至少多个部分、或者如在此讨论的任何其他模块或组件。

如在此描述的任何实现方式中所使用的,术语“模块”指被配置成用于提供在此所描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任意组合。软件可以具体化为软件包、代码和/或指令集或指令,并且如在此描述的任何实现方式中所使用的,“硬件”可以例如单独地或以任何组合包括硬连线电路、可编程电路、状态机电路、固定功能电路、执行单元电路和/或存储由可编程电路执行的指令的固件。这些模块可以统一地或单独地具体化为形成例如,集成电路(IC)、片上系统(SoC)等的较大系统的一部分的电路。

图6是根据本公开的至少一些实现方式安排的示例系统600的原理图。在各实现方式中,尽管系统600不限于此上下文,但系统600可以是媒体系统。例如,系统600可以并入个人计算机(PC)、膝上计算机、超级膝上计算机、平板机、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合式蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板机或智能电视)、移动互联网设备(MID)、消息设备、数据通信设备、相机(例如,自动对焦相机、超级变焦相机、数码单镜头反光(DSLR)相机)等。

在各实现方式中,系统600包括耦合至显示器620的平台602。平台602可以从内容设备(诸如(多个)内容服务设备630或(多个)内容传递设备640或者其他类似内容源)接收内容。包括一个或多个导航特征的导航控制器650可以用于例如与平台602和/或显示器620进行交互。以下更详细地描述这些组件中的每一个组件。

在各实现方式中,平台602可以包括芯片组605、处理器610、存储器612、天线613、存储设备614、图形子系统615、应用616和/或无线电618的任意组合。芯片组605可以在处理器610、存储器612、存储设备614、图形子系统615、应用616和/或无线电618之中提供相互通信。例如,芯片组605可以包括能够提供与存储设备614的相互通信的存储器适配器(未描绘)。

处理器610可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核处理器或任何其他微处理器或中央处理器单元(CPU)。在各实现方式中,处理器610可以是(多个)双核处理器、(多个)双核移动处理器等。

存储器612可以被实现为易失性存储设备,如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或静态RAM(SRAM)。

存储设备614可以被实现为非易失性存储设备,如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附属存储设备、闪存、电池应急SDRAM(同步DRAM)和/或网络可接入的存储设备。在各实现方式中,存储设备614可以包括用于当例如包括多个硬盘驱动器时增加对有价值的数字媒体的存储性能增强型保护的技术。

图形子系统615可以执行对诸如用于显示的静态或视频图像的处理。例如,图形子系统615可以是图形处理单元(GPU)或视觉处理单元(VPU)。可以使用模拟或数字接口来通信地耦合图形子系统615与显示器620。例如,接口可以是高清多媒体接口、显示端口、无线HDMI、和/或符合无线HD技术中的任何一个接口。图形子系统615可以集成到处理器610或芯片组605中。在一些实现方式中,图形子系统615可以是通信地耦合至芯片组605的独立设备。

在此描述的图形和/或视频处理技术可以用各种硬件架构实现。例如,图形和/或视频功能可以集成到芯片组中。可替代地,可以使用离散图形和/或视频处理器。如又另一种实现方式,图形和/或视频功能可以由通用处理器(包括多核处理器)来提供。在进一步的实施例中,所述功能可以在消费电子设备中实现。

无线电618可以包括能够使用各种适当的无线通信技术发射并接收信号的一个或多个无线电。这类技术可以涉及跨一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(WLAN)、无线个人局域网(WPAN)、无线城域网(WMAN)、蜂窝网和卫星网。在跨这类网络进行通信时,无线电618可以根据任何版本中的一个或多个可适用标准进行操作。

在各实现方式中,显示器620可以包括任何电视机类型的监测器或显示器。显示器620可以包括例如,计算机显示屏、触摸屏显示器、视频监视器、类似电视机的设备和/或电视机。显示器620可以是数字的和/或模拟的。在各实现方式中,显示器620可以是全息显示器。而且,显示器620可以是可以接收视觉投影的透明表面。这种投影可以传达各种形式的信息、图像和/或物体。例如,这种投影可以是针对移动增强现实(MAR)应用的视觉叠加。在一个或多个软件应用616的控制下,平台602可以在显示器620上显示用户界面622。

在各实现方式中,(多个)内容服务设备630可以由任何国家的、国际的和/或独立的服务托管,并因此例如经由互联网可接入平台602。(多个)内容服务设备630可以耦合至平台602和/或至显示器620。平台602和/或(多个)内容服务设备630可以耦合至网络660以便将媒体信息传达至该网络660或者从该网络传达(例如,发送和/或接收)。(多个)内容传递设备640也可以耦合至平台602和/或至显示器620。

在各实现方式中,(多个)内容服务设备630可以包括有线电视盒、个人计算机、网络、电话、能够传递数字信息和/或内容的支持互联网的设备或电器、以及能够在内容提供方与平台602和/或显示器620之间经由网络660或直接地单向或双向传达内容的任何其他类似设备。将认识到,内容可以经由网络660被单向地和/或双向地传达到系统600中的组件中的任何一个组件和内容提供方且从系统中的组件中的任何一个组件和内容提供方被传达。内容的示例可以包括任何媒体信息,包括例如视频、音乐、医疗和游戏信息等。

(多个)内容服务设备630可以接收如包括媒体信息、数字信息和/或其他内容的有线电视节目的内容。内容提供方的示例可以包括任何有线或卫星电视或无线电或互联网内容提供方。所提供的示例不旨在以任何方式限制根据本公开的实现方式。

在各实现方式中,平台602可以从具有一个或多个导航特征的导航控制器650中接收控制信号。控制器650的导航特征可以用于例如与用户界面622进行交互。在各实施例中,导航控制器650可以是定点设备,所述定点设备可以是允许用户输入空间(例如,连续的和多维的)数据到计算机的计算机硬件组件(特别是人机接口设备)。诸如图形用户界面(GUI)、和电视机以及监视器的许多系统允许用户使用物理姿势来控制计算机或电视机并向计算机或电视机提供数据。

可以通过指针、光标、聚焦环或在显示器上显示的其他视觉指示器的移动在显示器(例如,显示器620)上复制控制器650的导航特征的移动。例如,在软件应用616的控制下,位于导航控制器650上的导航特征可以例如被映射至用户界面622上显示的虚拟导航特征。在各实施例中,控制器650可以不是独立组件但可以集成在平台602和/或显示器620内。然而,本公开不限于在此示出或描述的元素或上下文。

在各实现方式中,驱动器(未示出)可以包括使用户能够通过例如在初始引导后启动的按钮的触摸立刻打开和关闭类似电视机的平台602的技术。当平台被“关闭”时,程序逻辑可以允许平台602将内容流传输到媒体适配器或其他(多个)内容服务设备630或(多个)内容传递设备640。此外,芯片组605可以包括支持例如5.1环绕声音频和/或高清7.1环绕声音频的硬件和/或软件。驱动器可以包括用于集成图形平台的图形驱动器。在各实施例中,图形驱动器可以包括外围组件互连(PCI)快速图形卡。

在各实现方式中,系统600中示出的组件中的任何一个或多个组件可以是集成的。例如,平台602和(多个)内容服务设备630可以是集成的,或者平台602和(多个)内容传递设备640可以是集成的,或者平台602、(多个)内容服务设备630和(多个)内容传递设备640可以例如是集成的。在各实施例中,平台602和显示器620可以是集成单元。例如,显示器620和(多个)内容服务设备630可以是集成的,或者显示器620和(多个)内容传递设备640可以是集成的。这些示例并不意在限制本公开。

在各实施例中,系统600可以被实现为无线系统、有线系统、或二者的组合。当被实现为无线系统时,系统600可以包括适合于通过如一个或多个天线、发送器、接收器、收发器、放大器、滤波器、控制逻辑等的无线共享介质进行通信的组件和接口。无线共享介质的示例可以包括无线频谱部分,如RF频谱等。当被实现为有线系统时,系统600可以包括适用于通过有线通信介质(如输入/输出(I/O)适配器、利用相应有线通信介质连接I/O适配器的物理连接器、网络接口卡(NIC)、光盘控制器、视频控制器、音频控制器等)进行通信的组件和接口。有线通信介质的示例可以包括导线、电缆、金属引线、印刷电路板(PCB)、背板、交换光纤、半导体材料、双绞线、同轴电缆、光纤等。

平台602可以建立一个或多个逻辑或物理信道以传达信息。所述信息可以包括媒体信息和控制信息。媒体信息可以指表示针对用户的内容的任何数据。内容的示例可以包括例如,来自语音对话、视频会议、流媒体视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文字等的数据。来自语音对话的数据可以是例如,语音信息、静默时间段、背景噪音、舒适噪音、声调等。控制信息可以指表示针对自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以用于通过系统路由媒体信息、或者指示节点以预定方式处理所述媒体信息。然而,各实施例不限于图6中示出或描述的元素或上下文。

如上所述,系统600可以用变化的物理风格或形成因子来体现。图7展示了可以用其具体化系统700的小形成因子设备700的实现方式。在各实施例中,例如,设备700可以被实现为具有无线能力的移动计算设备。例如,移动计算设备可以指具有处理系统和移动电源或电源(诸如一个或多个电池)的任何设备。

如上所述,移动计算设备的示例可以包括个人计算机(PC)、膝上计算机、超级膝上计算机、平板机、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合式蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板机或智能电视)、移动互联网设备(MID)、消息设备、数据通信设备、相机(例如,自动对焦相机、超级变焦相机、数码单镜头反光(DSLR)相机)等。

移动计算设备的示例还可以包括被安排以由人穿戴的计算机,诸如手腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋计算机、服装计算机、以及其他可穿戴计算机。在各实施例中,例如移动计算设备可以实现为能够执行计算机应用程序、以及语音通信和/或数据通信的智能电话。举例来讲,尽管一些实施例可以用被实现为智能电话的移动计算设备来描述,但可以理解的是,其他实施例也可以使用其他无线移动计算设备来实现。实施例并不局限于本上下文中。

如图7中所示,设备700可以包括:壳体702、显示器704、输入/输出(I/O)设备706、和天线708。设备700还可以包括导航特征712。显示器704可以包括适合于移动计算设备的用于显示信息的任何适当的显示单元。I/O设备706可以包括用于将信息输入移动计算设备中的任何适当的I/O设备。I/O设备706的示例可以包括:字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇杆式开关、麦克风、扬声器、语音识别设备和软件等。信息也可以通过麦克风(未示出)输入到设备700中。这种信息可以由语音识别设备(未示出)数字化。实施例并不局限于本上下文中。

可以使用硬件元件、软件元件、或两者的组合来实现各实施例。硬件元件的示例可以包括:处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件的示例可以包括:软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。判定是否使用硬件元件和/或软件元件来实现实施例可以根据任意数量的因子而变化,如预期的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。

可以由机器可读介质上所存储的表属性指令实现至少一个实施例的一个或多个方面,所述指令代表处理器内的各种逻辑,当被机器读取时所述指令使所述机器制作用于执行在此所描述的技术的逻辑。此类表示(称为“IP核”)可以被存储在有形的机器可读介质上并提供给各顾客或制造设施以加载至实际制作所述逻辑或处理器的制作机器中。

虽然已经参照各实现方式描述了在此阐述的某些特征,但并不打算在限制性意义上解释本说明书。因此,本公开涉及的对本领域技术人员而言明显的对在此描述的实现方式以及其他实现方式的各种修改被视为是在本公开的精神和范围内。

下面的示例涉及进一步的实施例。

在一个或多个第一实施例中,一种用于视频编码的计算机实现的方法包括:确定视频序列的视频帧的第一量化参数;基于与所述视频帧相关联的空间复杂度或时间复杂度中的至少一项对所述第一量化参数进行修改以便生成所述视频帧的第二量化参数;以及基于所述第二量化参数、单独块的复杂度、以及所述视频帧的复杂度生成所述视频帧的所述单独块的块级量化参数。

进一步针对所述第一实施例,当所述单独块的复杂度与所述视频帧的复杂度之比大于一时,所述块级量化参数大于所述第二量化参数。

进一步针对所述第一实施例,所述第一量化参数基于所述视频序列的由用户选择的恒定质量因子。

进一步针对所述第一实施例,所述第一量化参数基于所述视频序列的恒定质量因子以及基于帧类型的偏移。

进一步针对所述第一实施例,所述第一量化参数基于所述视频序列的由用户选择的恒定质量因子,或者其中,所述第一量化参数基于所述视频序列的恒定质量因子以及基于帧类型的偏移。

进一步针对所述第一实施例,所述空间复杂度包括基于所述视频帧的帧内预测失真。

进一步针对所述第一实施例,所述时间复杂度包括基于所述视频帧的帧间预测失真。

进一步针对所述第一实施例,所述空间复杂度包括基于所述视频帧的帧内预测失真,和/或其中,所述时间复杂度包括基于所述视频帧的帧间预测失真。

进一步针对所述第一实施例,当与所述视频帧相关联的所述空间复杂度或所述时间复杂度分别指示高空间复杂度或高时间复杂度中的至少一项时,所述第二量化参数大于所述第一量化参数。

进一步针对所述第一实施例,所述单独块的复杂度包括所述单独块的块预测失真或所述单独块的块方差中的至少一项。

进一步针对所述第一实施例,所述视频帧包括帧内帧或场景变化P帧,其中,所述第一量化参数等于所述视频序列的恒定质量因子;其中,所述第二量化参数与同所述帧内帧或所述场景变化P帧相关联的所述空间复杂度成比例;并且其中,基于所述单独块的复杂度与所述帧内帧或所述场景变化P帧的复杂度之比与阈值的比较,所述块级量化参数等于所述第二量化参数或者小于所述第二量化参数。

进一步针对所述第一实施例,所述视频帧包括P帧,其中,所述第一量化参数基于所述视频序列的增加了P帧偏移的恒定质量因子,并且基于与所述帧间P帧相关联的I帧的帧内量化值而被修改;并且其中,所述第二量化参数基于所述第一量化参数,所述第一量化参数基于所述帧间P帧的时间复杂度与所述视频序列的过去平均时间复杂度的时间比而被调整。

进一步针对所述第一实施例,所述视频帧包括帧间帧,其中,所述块级量化参数是以下情况中的至少一种情况:基于所述单独块的复杂度与所述帧间帧的复杂度之比与第一阈值的比较而大于所述第二量化参数或者基于所述单独块的复杂度与所述帧间帧的复杂度之比与第二阈值的比较而小于所述第二量化参数。

进一步针对所述第一实施例,所述方法进一步包括:确定所述视频序列的第二视频帧的第三量化参数,其中,所述第二视频帧是B帧,并且其中,所述第三量化参数基于所述第二量化参数。

进一步针对所述第一实施例,所述方法进一步包括:确定所述视频序列的第二视频帧的第三量化参数,其中,所述第二视频帧是B帧,并且其中,所述第三量化参数基于所述第二量化参数;其中,所述B帧是B参考帧,其中,所述第三量化参数基于所述第二量化参数的平均值,其中,所述第二量化参数包括P帧参考量化参数和B帧参考量化参数。

进一步针对所述第一实施例,所述方法进一步包括:确定所述视频序列的第二视频帧的第三量化参数,其中,所述第二视频帧是B帧,并且其中,所述第三量化参数基于所述第二量化参数;和/或其中,所述B帧是B参考帧,其中,所述第三量化参数基于所述第二量化参数的平均值,其中,所述第二量化参数包括P帧参考量化参数和B帧参考量化参数。

进一步针对所述第一实施例,所述方法进一步包括:基于所述块级量化参数对与所述单独块相关联的变换系数进行量化;以及将所述经量化的变换系数与所述块级量化参数编码成比特流。

进一步针对所述第一实施例,所述方法进一步包括:至少部分地基于所述块级量化参数生成与所述视频序列相关联的模式选择。

在一个或多个第二实施例中,一种用于在计算设备上提供视频编码的系统包括:被配置成用于存储视频数据的存储器以及耦合至所述存储器的图形处理单元,其中,所述图形处理单元包括:量化参数电路,所述量化参数电路被配置成用于:确定视频序列的视频帧的第一量化参数;基于与所述视频帧相关联的空间复杂度或时间复杂度中的至少一项对所述第一量化参数进行修改以便生成所述视频帧的第二量化参数;以及基于所述第二量化参数、单独块的复杂度、以及所述视频帧的复杂度生成所述视频帧的所述单独块的块级量化参数;以及量化电路,所述量化电路被配置成用于基于所述块级量化参数对与所述单独块相关联的变换系数进行量化以便生成经量化的变换系数。

进一步针对所述第二实施例,当所述单独块的复杂度与所述视频帧的复杂度之比大于一时,所述块级量化参数大于所述第二量化参数。

进一步针对所述第二实施例,所述视频帧包括帧内帧或场景变化P帧,其中,所述第一量化参数等于所述视频序列的恒定质量因子;其中,所述第二量化参数与同所述帧内帧或所述场景变化P帧相关联的所述空间复杂度成比例;并且其中,基于所述单独块的复杂度与所述帧内帧或所述场景变化P帧的复杂度之比与阈值的比较,所述块级量化参数等于所述第二量化参数或者小于所述第二量化参数。

进一步针对所述第二实施例,所述视频帧包括P帧,其中,所述第一量化参数基于所述视频序列的增加了P帧偏移的恒定质量因子,并且基于与所述帧间P帧相关联的I帧的帧内量化值而被修改;并且其中,所述第二量化参数基于所述第一量化参数,所述第一量化参数基于所述帧间P帧的时间复杂度与所述视频序列的过去平均时间复杂度的时间比而被调整。

进一步针对所述第二实施例,所述视频帧包括帧间帧,其中,所述块级量化参数是以下情况中的至少一种情况:基于所述单独块的复杂度与所述帧间帧的复杂度之比与第一阈值的比较而大于所述第二量化参数或者基于所述单独块的复杂度与所述帧间帧的复杂度之比与第二阈值的比较而小于所述第二量化参数。

进一步针对所述第二实施例,所述量化参数电路进一步被配置成用于:确定所述视频序列的第二视频帧的第三量化参数,其中,所述第二视频帧是B帧,并且其中,所述第三量化参数基于所述第二量化参数。

进一步针对所述第二实施例,所述B帧是B参考帧,其中,所述第三量化参数基于所述第二量化参数的平均值;其中,所述第二量化参数包括P帧参考量化参数和B帧参考量化参数。

在一个或多个第三实施例中,一种用于在计算设备上提供视频编码的系统包括:被配置成用于存储视频数据的存储器以及耦合至所述存储器的图形处理单元,其中,所述图形处理单元包括:用于确定视频序列的视频帧的第一量化参数的装置;用于基于与所述视频帧相关联的空间复杂度或时间复杂度中的至少一项对所述第一量化参数进行修改以便生成所述视频帧的第二量化参数的装置;以及用于基于所述第二量化参数、单独块的复杂度、以及所述视频帧的复杂度生成所述视频帧的所述单独块的块级量化参数的装置。

进一步针对所述第三实施例,所述视频帧包括P帧,其中,所述第一量化参数基于所述视频序列的增加了P帧偏移的恒定质量因子,并且基于与所述帧间P帧相关联的I帧的帧内量化值而被修改;并且其中,所述第二量化参数基于所述第一量化参数,所述第一量化参数基于所述帧间P帧的时间复杂度与所述视频序列的过去平均时间复杂度的时间比而被调整。

进一步针对所述第三实施例,所述视频帧包括帧间帧,其中,所述块级量化参数是以下情况中的至少一种情况:基于所述单独块的复杂度与所述帧间帧的复杂度之比与第一阈值的比较而大于所述第二量化参数或者基于所述单独块的复杂度与所述帧间帧的复杂度之比与第二阈值的比较而小于所述第二量化参数。

在一个或多个第四实施例中,一种机器可读介质包括多条指令,所述指令响应于在计算设备上被执行而使所述计算设备通过以下各项执行视频编码:确定视频序列的视频帧的第一量化参数;基于与所述视频帧相关联的空间复杂度或时间复杂度中的至少一项对所述第一量化参数进行修改以便生成所述视频帧的第二量化参数;以及基于所述第二量化参数、单独块的复杂度、以及所述视频帧的复杂度生成所述视频帧的所述单独块的块级量化参数。

进一步针对所述第四实施例,所述视频帧包括帧内帧或场景变化P帧,其中,所述第一量化参数等于所述视频序列的恒定质量因子;其中,所述第二量化参数与同所述帧内帧或所述场景变化P帧相关联的所述空间复杂度成比例;并且其中,基于所述单独块的复杂度与所述帧内帧或所述场景变化P帧的复杂度之比与阈值的比较,所述块级量化参数等于所述第二量化参数或者小于所述第二量化参数。

进一步针对所述第四实施例,所述视频帧包括P帧,其中,所述第一量化参数基于所述视频序列的增加了P帧偏移的恒定质量因子,并且基于与所述帧间P帧相关联的I帧的帧内量化值而被修改;并且其中,所述第二量化参数基于所述第一量化参数,所述第一量化参数基于所述帧间P帧的时间复杂度与所述视频序列的过去平均时间复杂度的时间比而被调整。

进一步针对所述第四实施例,所述视频帧包括帧间帧,其中,所述块级量化参数是以下情况中的至少一种情况:基于所述单独块的复杂度与所述帧间帧的复杂度之比与第一阈值的比较而大于所述第二量化参数或者基于所述单独块的复杂度与所述帧间帧的复杂度之比与第二阈值的比较而小于所述第二量化参数。

进一步针对所述第四实施例,所述机器可读介质进一步包括多条指令,所述指令响应于在所述计算设备上被执行而使所述计算设备通过确定所述视频序列的第二视频帧的第三量化参数来执行视频编码,其中,所述第二视频帧是B帧,并且其中,所述第三量化参数基于所述第二量化参数。

在一个或多个第五实施例中,至少一种机器可读介质可以包括多条指令,所述指令响应于在计算设备上被执行而使所述计算设备执行根据以上实施例中的任一个实施例的方法。

在一个或多个第六实施例中,一种装置可以包括:用于执行根据以上实施例中的任一个实施例的方法的装置。

将认识到,这些实施例不局限于如此描述的这些实施例,而是可以在不背离所附权利要求书的范围的情况下通过修改和变更来实践。例如,以上实施例可以包括特征的特定组合。然而,以上实施例不局限于这个方面,并且在各实现方式中,以上实施例可以包括仅采取这类特征的子集、采取这类特征的不同顺序、采取这类特征的不同组合和/或采取除了明确例举的那些特征之外的附加特征。因此,这些实施例的范围应当参考所附权利要求书、连同这样的权利要求书有权获得的等效物的全部范围来确定。

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