首页 / 专利库 / 电脑零配件 / 硬件 / 用于视频编码的运动向量选择

用于视频编码的运动向量选择

阅读:456发布:2021-09-19

专利汇可以提供用于视频编码的运动向量选择专利检索,专利查询,专利分析的服务。并且公开了涉及在 硬件 编码器 中选择运动向量的各个 实施例 。在一个示例中,多个候选经预测的运动向量被选择,并且在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索,以产生多个结果运动向量,其中每个结果运动向量具有使用对应的候选经预测的运动向量所确定的初始成本分数。在实际经预测的运动向量变得可用之后,使用实际经预测的运动向量来重新评分每个结果运动向量的初始成本分数以产生经更新的成本分数,并且使用基于一运动向量的经更新的成本分数从该多个结果运动向量中选择的该运动向量来对视频数据进行编码。,下面是用于视频编码的运动向量选择专利的具体信息内容。

1.一种计算设备,包括:
硬件线化的视频编码器,所述视频编码器被配置成:
选择与要被编码的视频数据的一个图像中的一个相关联的多个候选经预测的运动向量,其中所述多个候选经预测的运动向量是从不同的、先前经编码的块中选择出的;
在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索以产生多个结果运动向量,每个结果运动向量具有在成本分数计算中使用不同的对应的候选经预测的运动向量所确定的初始成本分数,
在实际经预测的运动向量变得可用之后,在所述成本分数计算中使用所述实际经预测的运动向量取代所述对应的候选经预测的运动向量来对每个结果运动向量的初始成本分数进行重新评分以产生经更新的成本分数,其中所述实际经预测的运动向量先前在所述多个候选经预测的运动向量被选择用于所述多个运动搜索时是不可用的,并且由于包括所述实际经预测的运动向量的块的编码完成而变得可用;以及
使用一运动向量来对所述视频数据进行编码,所述运动向量基于具有所述多个结果运动向量的最低经更新的成本分数的运动向量从所述多个结果运动向量中被选择出。
2.如权利要求1所述的计算设备,其特征在于,结果运动向量的所述初始成本分数通过在速率失真函数中使用对应的候选经预测的运动向量来被确定。
3.如权利要求1所述的计算设备,其特征在于,结果运动向量的所述经更新的成本分数通过在速率失真函数中使用所述实际候选经预测的运动向量来被确定。
4.如权利要求1所述的计算设备,其特征在于,所述硬件流水线化的视频编码器被进一步配置成
从所述多个结果运动向量中选择具有最低初始成本分数的运动向量的子集作为经过滤的运动向量;
在所述实际经预测的运动向量变得可用之后,使用所述实际经预测的运动向量来对每个经过滤的运动向量的所述初始成本分数进行重新评分以产生所述经更新的成本分数;以及
使用一运动向量来对所述视频数据进行编码,所述运动向量基于所述经过滤的运动向量的所述经更新的成本分数从所述经过滤的运动向量的子集中被选择。
5.如权利要求1所述的计算设备,其特征在于,每个运动搜索包括单独的搜索模式。
6.如权利要求1所述的计算设备,其特征在于,每个运动搜索包括单独的搜索区域。
7.如权利要求1所述的计算设备,其特征在于,所述多个候选经预测的运动向量包括以下中的一个或多个:同一图像帧的相邻块、时间上不同的图像帧的同一块、时间上不同的图像帧的相邻块以及零运动向量。
8.如权利要求1所述的计算设备,其特征在于,所述硬件流水线化的视频编码器被进一步配置成:
使用基于具有所述最低经更新的成本分数的运动向量所选的参考索引来对所述视频数据进行编码。
9.如权利要求1所述的计算设备,其特征在于,还包括:
使用基于具有所述最低经更新的成本分数的运动向量所选的块分区来对所述视频数据进行编码。
10.一种存储介质,所述存储介质保持能由处理器执行以进行以下操作的指令:
选择与要被编码的视频数据的一个图像帧中的一个块相关联的多个候选经预测的运动向量;
在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索以产生多个结果运动向量,每个结果运动向量具有在速率失真函数中使用不同的对应的候选经预测的运动向量所确定的初始成本分数;
在实际经预测的运动向量变得可用之后,在所述速率失真函数中使用所述实际经预测的运动向量取代所述对应的候选经预测的运动向量来对所述多个结果运动向量中的每个结果运动向量的初始成本分数进行重新评分以产生每个结果运动向量的经更新的成本分数,其中所述实际经预测的运动向量先前在所述多个候选经预测的运动向量被选择用于所述多个运动搜索时是不可用的,并且由于包括所述实际经预测的运动向量的块的编码完成而变得可用;以及
使用一运动向量来对所述视频数据的所述图像帧的所述块进行编码,所述运动向量基于具有所述多个结果运动向量的最低经更新的成本分数的运动向量从所述多个结果运动向量中被选择出。
11.如权利要求10所述的存储介质,其特征在于,还保持能由所述处理器执行以进行以下操作的指令:
从所述多个结果运动向量中选择具有最低初始成本分数的运动向量的子集作为经过滤的运动向量;
在所述实际经预测的运动向量变得可用之后,使用所述实际经预测的运动向量来对每个经过滤的运动向量的所述初始成本分数进行重新评分以产生所述经更新的成本分数;以及
使用一运动向量来对所述视频数据进行编码,所述运动向量基于所述经过滤的运动向量的所述经更新的成本分数从所述经过滤的运动向量的子集中被选择。
12.如权利要求10所述的存储介质,其特征在于,每个运动搜索包括单独的搜索模式,并且其中每个运动搜索包括单独的搜索区域。
13.如权利要求10所述的存储介质,其特征在于,所述多个候选经预测的运动向量包括以下中的一个或多个:同一图像帧的相邻块、时间上不同的图像帧的同一块、时间上不同的图像帧的相邻块以及零运动向量。
14.如权利要求10所述的存储介质,其特征在于,还保持能由所述处理器执行以进行以下操作的指令:
使用基于具有所述最低经更新的成本分数的运动向量所选的参考索引来对所述视频数据进行编码;以及
使用基于具有所述最低经更新的成本分数的运动向量所选的块分区来对所述视频数据进行编码。
15.一种在计算设备上的用于使用硬件流水线化的视频编码器对图像帧中的一块进行编码的方法,所述方法包括:
从不同的先前经编码的块中选择多个候选经预测的运动向量;
在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索以产生多个结果运动向量,每个结果运动向量具有在速率失真函数中使用不同的对应的候选经预测的运动向量所确定的初始成本分数;
从所述多个结果运动向量中选择具有最低初始成本分数的运动向量的子集作为经过滤的运动向量;
在实际经预测的运动向量变得可用之后,在所述速率失真函数中使用所述实际经预测的运动向量取代所述对应的候选经预测的运动向量来对所述子集中的每个经过滤的运动向量的所述初始成本分数进行重新评分以产生每个经过滤的运动向量的经更新的成本分数,其中所述实际经预测的运动向量先前在所述多个候选经预测的运动向量被选择用于所述多个运动搜索时是不可用的,并且由于包括所述实际经预测的运动向量的块的编码完成而变得可用;以及
使用经过滤的运动向量来对所述块进行编码,所述经过滤的运动向量基于所述子集中具有最低经更新的成本分数的经过滤的运动向量。
16.如权利要求15所述的方法,其特征在于,所述多个候选经预测的运动向量包括以下中的一个或多个:同一图像帧的相邻块、时间上不同的图像帧的同一块、时间上不同的图像帧的相邻块以及零运动向量。
17.一种存储有指令的计算机可读存储介质,当所述指令被执行时使得机器执行如权利要求15-16中任一项所述的方法。
18.一种计算机系统,包括用于执行如权利要求15-16中任一项所述的方法的装置。

说明书全文

用于视频编码的运动向量选择

[0001] 概述
[0002] 公开了涉及选择运动向量来增加硬件视频编码器的性能的各个实施例。在一个实施例中,与要被编码的视频数据相关联的多个候选经预测的运动向量被选择,并且在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索以产生多个结果运动向量,其中每个结果运动向量具有使用对应的候选经预测的运动向量所确定的初始成本分数。在实际经预测的运动向量变得可用之后,使用实际经预测的运动向量来重新评分每个结果运动向量的初始成本分数以产生经更新的成本分数,并且使用基于一运动向量的经更新的成本分数从该多个结果运动向量中选择的该运动向量来对视频数据进行编码。
[0003] 提供本发明内容以便以简化的形式介绍以下在具体实施方式中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。
[0004] 附图简述
[0005] 图1示出一示例视频编码器处理流线。
[0006] 图2示出包括多个宏的示例图像
[0007] 图3示出对搜索结果进行过滤来选择用于视频编码的低成本经过滤的运动向量的示例过程。
[0008] 图4示出描绘用于使用硬件流水线化的视频编码器来对视频数据进行编码的示例方法的流程图
[0009] 图5示出包括多个视频编码引擎的示例硬件视频编码器。
[0010] 图6示出包括多个运动搜索引擎的示例视频编码引擎。
[0011] 图7示出一示例运动搜索引擎。
[0012] 图8示出示例计算系统。
[0013] 详细描述
[0014] 在视频编码中,经编码的图像帧可使用运动估计和/或运动补偿来根据一个或多个相邻图像帧来被表达。在一个示例中,一图像帧可被细分成一组宏块。对于每个宏块,搜索可被执行来在先前编码的图像帧(例如,参考帧)中寻找对应的宏块。如果对应的宏块被找到,则该宏块可通过指向参考帧中对应宏块的位置的运动向量来被编码。尽管各实现在本文中在图像帧被划分为宏块(例如,16x16宏块)的上下文中被讨论,但是将理解,一图像帧可被划分为任意合适的块大小(例如,64x64),而不偏离本公开的范围。此外,将理解,一图像帧可被划分为任意合适的形状(例如,非矩形块),而不偏离本公开的范围。此外,运动向量可被差分地编码为mvd=mv–mvp,其中mvp是预测的运动向量,mv是检测的/计算的运动向量,而mvd是可被编码和被传送的所得差。在一个示例中,经编码的视频数据流可包括被差分编码的运动向量分隔的代表中间图像帧的参考图像。
[0015] 通过使用运动估计和运动补偿技术,相邻图像帧之间的时间冗余可被充分利用来增加经编码的视频数据的压缩率。作为一个示例,视频数据可经由硬件流水线化的视频编码器来被编码以达到理想的实时性能。然而,在这样的硬件实现中,可能存在流水线依赖性,其中如果流水线依赖性不被解决,则流水线依赖性可将性能减少到少于实时性能。例如,在硬件流水线中在当前宏块之前正被编码的先前宏块(例如,在一图像帧中在当前宏块的左边)可能在对当前宏块的编码被发起时不能被充分地处理。具体而言,当前宏块的预测操作可与先前宏块的编码/重构操作重叠。因此,一实际经预测的运动向量可能不能用于作为对针对当前宏块的运动搜索的种子
[0016] 在一种用于解决这种硬件流水线依赖性的方式中,单个经预测的运动向量可被选择来在速率失真函数中提供最小失真值,而不管对差分运动向量(mvd)进行编码的成本。然而,这种方式可导致在处理成本方面的增加,其可将性能减少到少于实时性能。
[0017] 在另一方式中,可基于运动向量编码成本和速率失真函数中的失真值两者来选择单个经预测的运动向量。例如,提供(例如,在成本和失真的合适范围内)最小的组合的成本和失真值的经预测的运动向量可被选择。虽然这样的方式相对于仅仅最小化失真的方式而言可导致提升的性能,但是运动向量成本可能没有在经预测的运动向量被选择来提供最小失真值的情况那样准确。作为结果,非最优运动向量可被选择来编码宏块。
[0018] 因此,本公开涉及用于帮助选择一最优经预测的运动向量来在硬件流水线化的实时视频编码器中编码一宏块的方式。简而言之,在一些实现中,多个候选经预测的运动向量可被用于作为多个运动搜索的种子。接着,可在速率失真函数中使用对应的候选经预测的运动向量来针对结果运动向量中的每一个来确定初始成本分数。过滤操作可被执行来从结果运动向量中选择一组具有低初始成本分数的经过滤的运动向量。当来自先前宏块的实际经预测的运动向量变得可用时,对经过滤的运动向量进行编码的初始成本分数可在速率失真函数中使用实际经预测的运动向量来被更新。具有最低经更新的成本分数的经过滤的运动向量可被选择来编码宏块。此外,所选的经过滤的运动向量可被用于选择被用于编码宏块的参考索引和块分区。
[0019] 通过将多个不同的候选经预测的运动向量用作用于运动搜索的初始种子,运动搜索可在不必等待实际经预测的运动向量变得可用的情况下来被执行。此外,通过在实际经预测的运动向量变得可用时使用该实际经预测的运动向量来纠正搜索结果的成本分数,准确的成本分数可被用于选择用于对视频数据进行编码的运动向量。因此,最低成本运动向量可在不必停止硬件流水线的情况下被确定。
[0020] 图1示出根据以上描述的方式被配置用于对视频数据进行编码的示例视频编码器处理流水线100。流水线100可在被配置成从帧存储102中取得目标宏块的取得目标阶段104处发起编码过程。
[0021] 候选经预测的运动向量阶段106可被配置成选择多个候选经预测的运动向量以供在多个运动搜索中使用。该多个候选经预测的运动向量可用任何适当的方式被选择。例如,该多个候选经预测的运动向量可基于从先前编码的宏块中可用的经预测的运动向量来被选择。在一个特定示例中,该多个候选经预测的运动向量可包括以下中的一个或多个:来自同一图像帧的相邻宏块的经预测的运动向量、来自时间上不同的图像帧的同一宏块的经预测的运动向量、来自时间上不同的图像帧的相邻宏块的经预测的运动向量以及零运动向量(例如,0,0)。对候选经预测的运动向量的选择将在以下参考图2被更加详细地讨论。
[0022] 取得参考阶段108可被配置成从帧存储102中取得被用于多个运动搜索的参考帧。此外,运动搜索阶段110可被配置成针对每个候选经预测的运动向量来执行多个运动搜索。
在一个示例中,运动搜索可包括计算目标和预测之间的绝对差值之和(SAD)。在另一示例中,运动搜索可包括计算目标和预测之间的平方差之和(SSD)。每个运动搜索可包括单独的搜索模式。例如,搜索模式可包括正方形、菱形、十字形、螺旋形以及其他合适形状的模式。
此外,每个运动搜索可包括单独的搜索区域。例如,搜索区域可通过不同的水平和垂直偏移以及在区域大小方面其他合适的改变而在大小方面变化。在一些实现中,运动搜索模式和区域的相同组合可被用于每个候选经预测的运动向量。类似地,在一些实现中,运动搜索模式和区域的不同组合可被用于不同的候选经预测的运动向量。在一个示例中,包围多个候选经预测的运动向量的区域的凸多边形被用作用于运动搜索中的一个或多个运动搜索的搜索区域。
[0023] 成本分数可在速率失真函数中使用对应的候选经预测的运动向量来针对每个结果运动向量被计算。在一个示例中,速率失真函数可被表示为如下。
[0024]
[0025] 当搜索结果被初始地评分时,(p)表示被用于对给定搜索作为种子的对应的候选经预测的运动向量,(m)表示结果运动向量,并且J运动(m,REF|λ运动)表示成本分数。
[0026] 在一些实现中,流水线100可包括被配置成从多个结果运动向量中选择一组具有最低初始成本分数的经过滤的运动向量的过滤阶段112。该组经过滤的运动向量可在流水线中被存储以及被进一步地跟踪。在一个示例中,未被选为经过滤的运动向量的其他结果运动向量可被丢弃。因此,数据存储硬件资源可在流水线中被减少。此外,运动搜索结果的下游处理可被减少。以下参考图3更加详细地讨论用于运动搜索结果的过滤过程的更加详细的示例。
[0027] 继续图1,实际经预测的运动向量阶段114可被配置成从对流水线100的先前宏块的编码中产生实际经预测的运动向量。如以上讨论的,实际经预测的运动向量可能没有变得可用,直到当前宏块已经开始了编码过程之后。因此,实际经预测的运动向量可在处理流水线中的这个阶段处变得可用。
[0028] 实际经预测的运动向量可被提供到重新评分阶段116。重新评分阶段116可被配置成在实际经预测的运动向量从实际经预测的运动向量阶段114变得可用之后,将实际经预测的运动向量用作速率失真函数中的(p)来对每个结果运动向量(或子集当中经过滤的运动向量)的初始成本分数进行重新评分来产生经更新的成本分数J运动(m,REF|λ运动)。具体而言,仅仅速率可被重新计算,因为失真独立于经预测的运动向量并且在经预测的运动向量改变时不改变。
[0029] 模式选择阶段118可被配置成基于经更新的成本分数来选择用于对宏块进行编码的运动向量。在一个示例中,模式选择阶段118可被配置成选择具有最低经更新的成本分数的运动向量。在一些实现中,模式选择阶段118可被配置成基于加权的预测来选择运动向量和/或编码模式。例如,在时间上与该运动向量有关(例如,在经预测的运动向量之前和之后的图像帧中)的运动向量的线性组合可被用于作出模式选择来对视频数据进行编码。在一些实现中,模式选择阶段118可被配置成基于具有最低经更新的成本分数的运动向量来选择参考索引。此外,在一些实现中,模式选择阶段118可被配置成基于具有最低经更新的成本分数的运动向量来选择块分区。附加地,在一些实现中,模式选择阶段118可被配置成使用具有所选的运动向量、参考索引和块分区的模式来对宏块进行编码。可被选择的示例模式可包括直接时间预测、直接空间预测、双向预测和跳过模式。
[0030] 将理解,流水线100可采取任何合适的形式。例如,流水线可包括附加阶段、组合阶段、重排序阶段和/或省略阶段,而不背离本公开的范围。
[0031] 如以上讨论的,多个候选经预测的运动向量可被选择来作为不同运动搜索的种子,因为实际经预测的运动向量可能由于硬件流水线依赖性而不可用。换言之,候选经预测的运动向量可提供估计来作为运动搜索的种子,并且之后搜索结果可在实际经预测的运动向量变得可用时被纠正或重新评分,而非停止流水线和降低处理性能。
[0032] 图2示出包括多个宏块的图像帧200的示例部分,候选经预测的运动向量可从该多个宏块中被选择来用于运动搜索。当前宏块202可在处理流水线中处于正被编码的过程中。宏块A相邻于当前宏块202,并且由此在处理流水线中可能是在当前宏块之前的宏块。由此,包括宏块A的实际经预测的运动向量的上下文信息在对当前宏块202的编码被发起时可能是不可用的。
[0033] 然而,上下文信息在对当前宏块202的编码被发起时可从宏块A’、C、B和D中可用,因为这些宏块可能已经被编码了。由此,在一个示例中,这些宏块的实际经预测的运动向量可被选为候选经预测的运动向量来作为当前宏块202的运动搜索的种子。在另一示例中,从任意数量周围的宏块中选择的实际经预测的运动向量的任意合适组合可被用作候选经预测的运动向量。在另一示例中,来自时间上不同的图像帧中的与当前宏块相同的宏块中的实际经预测的运动向量可被选为候选经预测的运动向量。在另一示例中,由于相邻宏块A不是可用的,则时间上不同的图像帧上的下一相邻宏块A’的实际经预测的运动向量可被选为候选经预测的运动向量。如果当前宏块在平面运动中包括大的对象或表示相机平摇,则下一相邻宏块A’可以是用于提供候选经预测的运动向量的非常好的候选。
[0034] 在一些方式中,单个实际经预测的运动向量可从宏块A’中被选择。B、C或D作为运动搜索的种子。在这种情况下,搜索可导致可能不产生准确搜索结果的局部最小值。通过从多个不同的宏块中选择多个实际经预测的运动向量来作为候选经预测的运动向量,选择这种局部最小值的险可被减少。
[0035] 在一些实现中,运动搜索的搜索结果可被过滤,并且具有最低成本分数的运动向量可被保持和/或跟踪以供之后重新评分。通过这种方式,相对于其中从所有运动搜索中得到的运动向量都被存储和跟踪来用于下游处理的方式,在硬件流水线化的视频编码器中数据存储硬件资源可被减少并且处理性能可被提升。图3显示了过滤结果运动向量来选择具有最低成本分数的经过滤的运动向量子集的示例。可针对多个候选经预测的运动向量中的每一个来执行多个运动搜索以产生初始的一组结果运动向量302。在所示出的示例中,该初始的一组结果运动向量302被表示为九列的表格。每个列指代不同的块分区类型,并且每个列可包括基于使用该块分区类型的搜索的N个结果运动向量。例如,N可以是六十四、一百二十八、二百五十六或另一合适的数字,其中N可基于硬件视频编码器的处理资源和/或任何其他合适的因素来被选择。
[0036] 作为过滤过程的一部分,可从每个块分区列中选择五个具有最低成本的结果运动向量来作为辅助候选304。辅助候选304可进一步根据成本来被过滤以将辅助候选中五个具有最低成本分数的运动向量选为经过滤的运动向量306。经过滤的运动向量306可被保持并在实际经预测的运动向量变得可用时被重新评分来针对每个经过滤的运动向量提供经更新的成本分数。在一些实现中,其他结果运动向量可被丢弃或不再被跟踪。
[0037] 将理解,结果运动向量可被过滤为一组任意数量的经过滤的运动向量,而不背离本公开的范围。此外,结果运动向量可用任意合适的方式被细化或过滤来产生该组经过滤的运动向量。
[0038] 在一个示例中,对于16x16宏块,运动估计(ME)搜索可包括16x16宏块的多个更小的子块。在这样的实现中,可针对子块中的每一个来确定速率失真成本分数。此外,当在给定分区列302中进行过滤以创建更小的一组分区304时,各个分区可基于速率失真成本分数来被不同地组合以创建经标准化的分区。当在中间分区/块304中进行过滤来确定最终的一组分区/块306时,一组多样的分区类型可被选为经过滤的运动向量,使得每个分区(模式)类型可被表示在该组经过滤的运动向量中。由此,多个候选可基于速率失真准则被用于模式决策。在一个示例中,以上描述的操作可在“逻辑”(图7中显示的)中被执行。
[0039] 图4示出描绘用于使用硬件流水线化的视频编码器来对视频数据进行编码的示例方法400的流程图。在一个示例中,方法400可被执行来对图像帧的当前宏块进行编码。将理解,方法400可经由存储在计算设备上的机器可读指令的执行来在该计算设备上被执行。
[0040] 在402,方法400包括选择与要被编码的视频数据(例如,当前宏块)相关联的多个候选经预测的运动向量。如以上讨论的,例如可从以下来选择候选经预测的运动向量:例如,同一图像帧的相邻宏块、时间上不同的图像帧的同一宏块、时间上不同的图像帧的相邻宏块、零运动向量和/或另一合适宏块的经预测的运动向量。
[0041] 在404,方法400包括在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索来产生多个结果运动向量。此外,在406,方法400包括针对每个结果运动向量在速率失真函数中使用对应的候选经预测的运动向量来确定初始成本分数。在408,方法400包括从该多个结果运动向量中将具有最低初始成本分数的运动向量的子集来选择作为经过滤的运动向量。
[0042] 在410,方法400包括在实际经预测的运动向量变得可用之后,使用实际经预测的运动向量来对该子集中每个经过滤的运动向量的初始成本分数进行重新评分以产生经更新的成本分数。在一个示例中,实际经预测的运动向量是来自在处理流水线中的当前宏块之前的相邻宏块的经预测的运动向量。
[0043] 在412,方法400包括使用一运动向量来对视频数据进行编码,该运动向量基于该经过滤的运动向量的经更新的成本分数从经过滤的运动向量的子集当中被选择。在一个示例中,视频数据可使用具有最低经更新的成本分数的运动向量来被编码。在一些实现中,在414,方法400包括使用基于具有最低经更新的成本分数的经过滤的运动向量所选择的参考索引来对视频数据进行编码。在一些实现中,在416,方法400包括使用基于具有最低经更新的成本分数的经过滤的运动向量所选择的块分区来对视频数据进行编码。
[0044] 通过估计多个不同的候选经预测的运动向量来作为运动搜索的种子,运动搜索可在不必停止流水线以等待实际经预测的运动向量变得可用的情况下来被执行。此外,搜索结果可在实际经预测的运动向量的确变得可用时被重新评分。通过这种方式,用于对视频数据进行编码的具有最低成本的运动向量可被选择,而不将硬件流水线的性能减少到少于实时性能。
[0045] 在一些实现中,以上描述的方法可被绑定到硬件视频编码器。图5示出了可被用于实现方法400的示例硬件视频编码器500。硬件视频编码器500可包括一个或多个流水线化的视频编码引擎502,该引擎被配置成执行其中参考帧可针对与输入宏块的相似性来被检查的运动估计。此外,该一个或多个视频编码引擎502可被配置成执行运动补偿,其中宏块可通过使用运动向量从先前编码的图像帧中进行块重构来预测。
[0046] 在一个示例中,该一个或多个视频编码引擎502可被编程来经由取自高速缓存504的指令执行运动估计和/或运动补偿。用于运动估计和运动补偿的目标帧和参考帧可由存储器控制器508来从帧存储506取得。CPU群集510可向一个或多个视频编码引擎502提供处理资源来并行地执行视频编码。视频数字信号处理器(DSP)512可被配置成在原始和经预测的宏块(例如,残留值)之间执行变换、缩放、量化或其他操作,来作为编码过程的一部分。
[0047] 将理解,硬件视频编码器500可用任何适当的方式来实现。例如,硬件视频编码器可被实现为独立的集成电路(IC)。在另一示例中,硬件视频编码器可被集成在片上系统(SOC)中。
[0048] 图6示出一示例视频编码引擎600。在一个示例中,视频编码引擎600可被实现在硬件视频编码器500中。视频编码引擎600可包括多个运动搜索引擎602。更具体地,该多个运动搜索引擎602可包括被配置成执行运动估计的整数运动估计引擎(例如,ME0-ME3)以及被配置成进行子像素运动估计和/或执行运动补偿的子像素运动估计/运动补偿引擎。
[0049] 视频编码引擎600可通过对一组寄存器604的编程以及经由高速缓存606提供给该多个运动搜索引擎602的命令指令来被控制。在一个示例中,地址寄存器和控制寄存器可被设置来指定图像帧中的宏块。例如,寄存器中的一个或多个可在每个新片或帧的开始处被加载。
[0050] 此外,命令指令可启用/禁用不同运动搜索引擎的操作的特定模式。在一个示例中,每个整数运动估计搜索引擎可被配置成接收候选经预测的运动向量并使用指定的搜索路径来在指定的参考中的该种子点周围的区域中进行搜索。例如,每个整数运动估计引擎可执行运动搜索,该运动搜索包括通过平方差之和(SSD)计算612来将参考帧的搜索区域608与目标宏块610进行比较。在一个示例中,指令可指定单独的SSD指令、过滤指令或其他原子操作。例如,一次预测可发出一个命令。每个搜索命令可指定一给定搜索模式。每个命令可产生零个或更多个新的搜索结果。对于每个宏块,在第一命令针对给定宏块被发出之前,目标宏块可被加载。目标宏块可被加载到所有四个整数运动估计引擎。这样的结构可减少存储器带宽并简化控制方案。在运动搜索已经被执行之后,运动向量预测单元614可将实际经预测的运动向量提供到该多个运动搜索引擎,并且,经过滤的运动向量可使用实际经预测的运动向量在速率失真函数中被重新评分。在一个示例中,重新评分操作可在CPU群集
510(图5中显示的)中被执行。因为多个运动向量和分区(模式)候选在运动估计搜索被执行之后被保持或跟踪,所以一旦实际经预测的运动向量被提供就对这些搜索进行细化可被避免。在重新评分操作之后,可选择用于对宏块进行编码的最低成本模式。
[0051] 图7示出一示例运动搜索引擎700。在一个示例中,运动搜索引擎700可被实现在视频编码引擎600中。运动搜索引擎700可包括加载阶段702、搜索阶段704和排序阶段706。在加载阶段702中,目标宏块和参考帧可通过设置寄存器和接收搜索指令来被加载到处理流水线内。
[0052] 一旦搜索指令被接收到并且搜索引擎被配置用于运动搜索,运动搜索就可被搜索阶段704执行。在一个示例中,在运动搜索的每个周期期间,单个运动向量可被执行(虽然其可在数个物理周期上被流水线化)来产生相对于目标和宏块的SAD计算。这一操作可被执行在单个周期吞吐量中。接着,在数个周期上,树加法器可针对给定宏块来执行速率失真函数的失真测量。在一个示例中,针对每个宏块,取决于子分区模式是否作为搜索命令的一部分被启用,九个或四十一个结果可被产生。这些四十一个失真值被馈送到逻辑云中,其中比较操作可被执行来选择具有最低初始成本分数的经过滤的运动向量。每个搜索的输出可包括每个结果运动向量的速率、失真和运动信息。
[0053] 一旦运动搜索被执行并且结果运动向量被细化,使用实际经预测的运动向量的重新评分以及编码模式选择就可被排序阶段706执行。在一个示例中,编码模式可使用单个参考帧和大于8x8的分区大小来针对速率失真函数被选择。
[0054] 在一些实施例中,本文中描述的方法和过程可以与一个或多个计算设备的计算系统绑定。图8示意性地示出了可执行上述方法和过程中的一个或多个的计算系统800的非限制性实施例。以简化形式示出了计算系统800。计算系统800可采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备。
[0055] 计算系统800包括逻辑机802和存储机804。计算系统800可任选地包括显示子系统806、输入子系统808、通信子系统810、硬件视频编码器812和/或在图8中未示出的其他组件。
[0056] 逻辑机802包括被配置成执行指令的一个或多个物理设备。例如,逻辑机可被配置成执行作为以下各项的一部分的指令:一个或多个应用、服务、程序、例程、库、对象、组件、数据结构、或其它逻辑构造。这种指令可被实现以执行任务、实现数据类型、转换一个或多个部件的状态、实现技术效果、或以其它方式得到期望结果。
[0057] 逻辑机可包括被配置成执行软件指令的一个或多个处理器。作为补充或替换,逻辑机可包括被配置成执行硬件或固件指令的一个或多个硬件或固件逻辑机。逻辑机的处理器可以是单核或多核,且在其上执行的指令可被配置为串行、并行和/或分布式处理。逻辑机的各个组件可任选地分布在两个或更多单独设备上,这些设备可以位于远程和/或被配置成进行协同处理。逻辑机的各方面可由以云计算配置进行配置的可远程访问的联网计算设备来虚拟化和执行。
[0058] 存储机804包括被配置成保存可由逻辑机执行以实现此处所述的方法和过程的指令的一个或多个物理设备。在实现这些方法和过程时,可以变换存储机804的状态(例如,保存不同的数据)。
[0059] 存储机804可以包括可移动和/或内置设备。存储机804可包括光学存储器(例如,CD、DVD、HD-DVD、蓝光盘等)、半导体存储器(例如,RAM、EPROM、EEPROM等)和/或磁存储器(例如,硬盘驱动器软盘驱动器、磁带驱动器、MRAM等)等等。存储机804可包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址和/或内容可寻址设备。
[0060] 可以理解,存储机804包括一个或多个物理设备。然而,本文所述的指令的各方面替代地可由通信介质(如电磁信号、光学信号等)来传播,而不是被存储在包括存储介质的存储中。
[0061] 逻辑机802和存储机804的各方面可被一起集成到一个或多个硬件逻辑组件中。这些硬件逻辑组件可包括例如现场可编程阵列(FPGA)、程序和应用专用的集成电路(PASIC/ASIC)、程序和应用专用的标准产品(PSSP/ASSP)、片上系统(SOC)以及复杂可编程逻辑器件(CPLD)。
[0062] 在被包括时,显示子系统806可用于呈现由存储机804保存的数据的视觉表示。该视觉表示可采用图形用户界面(GUI)的形式。由于本文所描述的方法和过程改变了由存储机保持的数据,并由此变换了存储机的状态,因此同样可以转变显示子系统806的状态以视觉地表示底层数据的改变。显示子系统806可以包括使用实质上任何类型的技术的一个或多个显示设备。可将此类显示设备与逻辑机802和/或存储机804组合在共享封装中,或者此类显示设备可以是外围显示设备。
[0063] 当被包括时,输入子系统808可包括诸如键盘鼠标触摸屏或游戏控制器等一个或多个用户输入设备或者与这些用户输入设备对接。在一些实施例中,输入子系统可以包括或相接于所选择的自然用户输入(NUI)部件。这样的部件可以是集成式的或者是外设,并且输入动作的转换和/或处理可以在板上或板下处理。示例NUI部件可包括用于语言和/或语音识别的话筒;用于机器视觉和/或姿势识别的红外、色彩、立体显示和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速计和/或陀螺仪;以及用于评估脑部活动的电场感测部件。
[0064] 当包括通信子系统810时,通信子系统810可被配置成将计算系统800与一个或多个其他计算设备通信地耦合。通信子系统810可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可被配置成用于经由无线电话网络或者有线或无线局域网或广域网来进行通信。在一些实施例中,通信子系统可允许计算系统800经由诸如因特网这样的网络将消息发送至其他设备以及/或者从其它设备接收消息。
[0065] 硬件视频编码器812可被配置成选择与要被编码的视频数据相关联的多个候选经预测的运动向量,在围绕每个候选经预测的运动向量的图像区域中执行多个运动搜索来产生多个结果运动向量,每个结果运动向量具有使用对应的候选经预测的运动向量所确定的初始成本分数,在实际经预测的运动向量变得可用之后,使用实际经预测的运动向量来对每个结果运动向量的初始成本分数进行重新评分以产生经更新的成本分数,以及使用基于一运动向量的经更新的成本分数从该多个结果运动向量中选择的该运动向量来对视频数据进行编码。在一个示例中,硬件视频编码器可被实现为如图5中显示的硬件视频编码器500。但是将理解,可构想了其他变体,而不背离本公开的范围。
[0066] 将会理解,此处描述的配置和/或方法本质是示例性的,这些具体实施例或示例不应被视为限制性的,因为许多变体是可能的。此处描述的具体例程或方法可以表示任何数量的处理策略中的一个或多个。如此,所示和/或所述的各种动作可以以所示和/或所述顺序、以其它顺序、并行地执行,或者被省略。同样,上述过程的次序可以改变。
[0067] 本公开的主题包括各种过程、系统和配置以及此处公开的其它特征、功能、动作和/或属性、以及它们的任一和全部等价物的所有新颖且非显而易见的组合和子组合。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈