用于硬件视频编码的技术的制作方法

文档序号:16815726发布日期:2019-02-10 14:28阅读:449来源:国知局
用于硬件视频编码的技术的制作方法

视频流可以被编码成多种视频压缩格式,或者流的特性可以被改变。视频流的特性包括但不限于视频流的位率和分辨率。当准备视频流以用于在计算装置的组件或装置之间的传输时,也可以使用编码。

附图说明

图1是示出用于硬件视频编码的示例系统的框图;

图2是示出用于硬件视频编码的示例流水线的框图;

图3是示出用于确定制码单元的具有嵌套循环(nestedloop)的示例流水线的框图;

图4是经由单轮(pass)模式和/或双轮自适应模式收集统计信息的框图;

图5是示出示例黑盒编码器的图;

图6是用于硬件视频编码的示例方法的过程流程图;

图7是示出使能硬件视频编码的示例电子装置的框图;以及

图8是示出包含用于硬件视频编码的逻辑的示例介质的框图。

通篇本公开和附图中使用相同的数字来引用相同的组件和特征。100系列中的数字指最初在图1中找到的特征;200系列中的数字指最初在图2中找到的特征;以及等等。

具体实施方式

用于编码视频的典型解决方案可以采用运行使用硬件协处理器的内核程序的多个可编程引擎。此外,视频也可以使用基于硬件的高级视频制码(avc)-类编码器进行编码。例如,此类avc-类编码器可以根据2003年5月公布的iso/iec14496-10-mpeg-4部分10,高级视频制码规范对视频进行编码。然而,出于各种原因现有的硬件avc-类编码器可以排除或减少率失真优化的重要性。

本技术包括用于改进硬件视频编码器的性能、质量和可扩展性的多种技术。在实施例中,本技术改进了没有执行编码器算法的主循环(所谓的固定功能编码)的可编程引擎的编码器。出于许多原因,固定功能编码可用在例如手机、平板电脑、计算机、照相机、汽车、游戏系统等等中以执行用于实时压缩像素的编码任务的主机。本技术包括但不限于以下算法和技术。首先,提供用于运动估计、模式判决、率失真优化循环、用于附加候选生成的合并逐渐减少(tapering)、扫描复杂度和系数的率失真优化(rdo)估计以及基于最大制码单元(lcu)的邻居重建的核心算法。其次,也提供各种主观质量增强,包括用于处置大变换单元(tu)伪影的采样自适应偏移(sao)替换的残差(residual)平坦性检查,基于运动长度的按制码单元(cu)量化参数(qp)调整,自动加权预测参数生成以及具有防护带保护的可变方向帧内刷新周期。第三,提供包括误差平方和分类器立方(sumofsquareerrorclassifiercube)的增强的统计信息。第四,描述了具有vp9和动态vp9缩放支持的多编解码器支持,基于4:2:08位基本构建块支持具有10位和12位准确度(precision)(最优用于压缩和带宽)的4:2:2和4:4:4色度格式。最后,提供了对硬件考量特定的技术,例如性能和带宽改进。例如,所述技术包括使能多个性能模式的可重新配置流水线判决相关性处置,用于来自多个流水线的增加的性能的基于分块的可扩展性,不执行针对小帧或分块量化参数(qp)改变的运动估计和模式判决的仅pak多轮(pakonlymulti-pass)以及与列分块宽度行走模式配对的可变寄存器传输逻辑(rtl)高速缓存容量声明。

本文描述的技术因此使能要使用硬件来实现的高效视频制码(hevc)-类视频编码。例如,本文描述的技术可以用于根据2016年3月31日公布的vp9位流和解码过程规范的版本0.6或2015年5月公布的hevc标准的第二版本对视频进行编码。先前的标准将“宏块”处理为静态大小的元件,而在较新的树递归编解码器中,编码器可以取决于最终产生具有最高的视觉质量的最低的位成本的许多因素,评估像素块何时应该被拆分为更精细的“制码单元”(cu)或被制成更大的cu。此外,先前的标准采用统一预测类型(诸如帧间或帧内预测类型)和统一变换大小(诸如8×8或4×4)处理每个宏块,而高效标准允许混合预测类型和混合变换大小,其均基于编码器判决过程。相比之下,本技术的制码单元是动态大小的并且可以包括不同预测类型的任何组合。因此,可以使用hevc-类编码的率失真优化来实现超过avc-类编码器(包括基于软件或硬件的编码器)的显着压缩增益。此类硬件实现可以提供比基于软件的解决方案更好的功率和性能。所述技术因此在具有有限处理能力的装置(例如移动装置)上实现实时hd和4k编码。此外,所述技术可以使用单一引擎提供与多个基于递归的编解码器和多种格式的兼容性。

在以下描述和权利要求中,可以使用术语“耦合”和“连接”连同其派生词。应该理解,这些术语不旨在作为彼此的同义词。相反,在具体实施例中,“连接”可用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可以意味着两个或更多个元件直接物理或电接触。然而,“耦合”也可以意味着两个或更多个元件彼此不直接接触,但仍然彼此协作或交互。

一些实施例可以以硬件、固件和软件之一或组合来实现。一些实施例还可以被实现为存储在机器可读介质上的指令,其可以被计算平台读取和执行以执行本文描述的操作。机器可读介质可以包括用于存储或传送以由机器(例如计算机)可读形式的信息的任何机制。例如,机器可读介质可以包括只读存储器(rom);随机存取存储器(ram);磁盘存储媒体;光存储媒体;闪存装置;或电、光、声或其它形式的传播信号,例如载波、红外信号、数字信号或传送和/或接收信号的接口等等。

实施例是实现或示例。说明书中对“实施例”,“一实施例”,“一些实施例”,“各种实施例”或“其它实施例”的引用意味着结合实施例描述的具体特征、结构或特性包括在本发明的至少一些实施例,但不一定是所有实施例中。“实施例”,“一个实施例”或“一些实施例”的各种出现不一定都指相同的实施例。

图1是示出用于使用三阶段运动估计的硬件视频编码的示例系统的框图。示例系统通常使用参考数字100来指代,并且可以在下面的图7的电子装置700中实现。例如,系统100可以使用电子装置700的编码器718和微控制器725来实现。

系统100包括存储器/高速缓存接口102,其通信地耦合到命令流播器(cs)104、微控制器106、共享l2高速缓存108、视频编码器avcvdenc110、hevc/vp9硬件位打包器(pak)112和增强视频编码器vdenc++114。增强视频编码器vdenc++114还包括hevc整数运动估计器116和hevc检查和细化(refinement)引擎(cre)118。

如图1中所示的,cs104可以从存储器/高速缓存接口102接收命令120集合并将信息122发送到微控制器106。例如,cs104可以是存储器中的缓冲器,其中运行在主机cpu或微控制器上的软件可以使用其来向硬件固定功能注入命令缓冲器。例如,主机可以使头指针前进,而硬件消耗命令并使尾指针前进。硬件不能使尾指针前进超出头指针,且软件不能使头指针前进超出尾指针。在一些示例中,信息122可以包括用于基于率控制分析来控制是否要执行第二轮的命令。例如,由于cs104是负责分派作业的单元,在继续到下一作业之前,cs104可以基于微控制器统计再次分派作业。微控制器106可以向存储器高速缓存接口102发送信息124并且从存储器高速缓存接口102接收信息124。例如,信息124可以包括诸如微控制器统计信息、视频编码器统计信息、pak统计信息以及有条件轮标志统计信息的统计信息,如下面图4中所描述的。共享l2高速缓存108还可以将信息126发送到存储器/高速缓存接口102并从其接收信息126。例如,信息126可以包括视频编码器114与pak112之间的共享像素。例如,如果视频编码器114加载给定的像素数据块,则当pak112在给定的lcu/cu等上执行pak的时间时,pak112可能未必从存储器加载像素数据块。pak112可以从共享的l2高速缓存108而不是较慢存储器访问具体像素数据块。cs104可以将状态128发送到视频编码器110,并将状态130发送到增强视频编码器114。例如,状态128和130可以是控制信息,例如帧或分块类型、目标qp、基于应用控制的各种启用/禁用等。

除了状态128之外,视频编码器110还可以从存储器/高速缓存接口102接收视频131。例如,视频或其它视觉图像序列可以呈现为一系列帧或分块或像素集合。如本文所使用的,分块指填充整个帧的镶嵌图案(mosaicpattern)。因此,帧可以潜在地由许多分块组成。在继续到下一分块之前,可以重复每个单独分块,以增加其中可能发生场景改变的情形中的效率。例如,在完成第一分块时,编码器可以仅重复该一个分块并更新未来的分块以知道发生场景改变,而不是等待整个帧在场景改变时被错误地编码。如果存在每帧4个分块,这可能花费1个帧的1.25倍时间,而基于帧的重复可能花费2倍,假设第一分块检测到误预测并被重复。

在一些示例中,每个分块可以被独立解码。例如,分别在1920x1080或3840x2160高达7680x4320的hd对uhd分辨率下,在不使用分块情况下,解码器在前进到lcu的下一行之前可能必须解码7680个像素宽。这可能会给解码器施加压力来保持下一行可能引用的大量临时信息。在一些示例中,帧可以被拆分成8个分块,每个1920宽,且仍4320高。这意味着解码器可以在移动到下一列之前解码帧(像报纸列条一样)。分块也可以用来减少帧的高度。如果我们指定分块大小为1920x1080,则7680x4320帧会包括4x4分块(4x1920乘4x1080=7680x4320)。然而,在一些示例中,分块大小也可以被设置为帧大小,引起1x1分块。视频编码器132可执行运动估计的两个阶段。可使用运动估计来利用相邻帧或分块之间的冗余,以通过选择帧或分块作为参考帧或分块并从参考帧或分块预测后续帧或分块来实现压缩。所述预测可以由多个运动向量来描述。具体地,视频编码器132可以对接收到的帧或分块执行分层运动估计搜索和整数运动估计搜索。在运动估计中,通常从至少一个参考帧或分块预测帧或分块序列中的当前帧或分块。在一些示例中,可以分析帧或分块序列中的对象的移动以获得表示帧或分块之间的对象的估计运动的向量。在实施例中,每个帧或分块可以被划分成制码单元(cu),并且运动向量表示帧或分块之间cu的位置改变。cu可以是可调节的像素块。例如,cu可以是大小为十六乘八像素的像素块。

当前帧或分块因此可以被划分为cu,使得使用误差测量将每个cu与相同大小的参考帧或分块中的区域进行比较,并且选择最佳匹配区域。搜索在搜索区域上进行。确定表示相对于当前帧或分块中的cu的参考帧或分块中的区域的位移的运动向量。在一些示例中,视频编码器110可使用多个参考帧或分块作为缩减参考,其被搜索以提供针对完全分辨率ime搜索的候选。例如,可以执行ime以找到时间匹配。此外,可以在对先前块进行完整模式判决之前进行后续块的运动估计。进行此类运动估计作为伪预测或近似的启发,其可能违反准确解码器规范,但对于大多数cu中的编码判决和编码器可能足够接近。预测模式还可以确定将当前帧或分块大小压缩成目标帧或分块大小所进行的轮的数量。视频编码器110然后可输出要由增强视频编码器114细化且用于生成发送到hevc/vp9pak112以用于编码视频帧的pak制码单元(cu)对象134的一个或多个搜索中心132。因此,vdenc++114可以包括在系统中以使能视频的hevc/vp9类硬件编码。

增强视频编码器vdenc++114可以包括运动估计的第三阶段,hevcime116。如下面相对于图2和3更详细描述的,hevcime116可以生成形状候选138并且接收来自hevccre118的预测运动向量140。hevccre118可以执行许多功能。例如,hevccre118可以执行跳过检查、分数运动估计、双向运动估计、帧内角度预测和进行模式判决。跳过检查可以是先前帧或分块的特定位置的抽查,以查看特定位置与预测运动向量的匹配程度。跳过检查可以用于确定何时应该跳过对cu的编码,使得不生成给定cu的向量信息。在当前cu遵循与相邻cu相同的运动模式时,跳过检查被确认,无论它们是静态还是遵循平移运动。在跳过的情况下,不针对关联的cu生成信息。

在一些示例中,hevccre118可以基于图像帧或者分块和/或分区信息来执行分数运动估计(fme)。例如,可以在分数运动分辨率中进一步搜索具有其运动向量的所选cu候选。分区之后,结果运动向量可以处于整数分辨率。例如,每个cu形状的运动向量可以按像素。各种制码规范可以将像素之间的中间分辨率或者甚至像素之间的四分之一分辨率指定成更准确。例如,从帧到帧或分块到分块移动的对象可能不在两个帧或分块之间移动整个像素。相反,它可能只移动半个像素。因此,半分数分辨率可以使此类运动能够被捕获。在一些示例中,运动向量可以被编码并存储或传送到解码器。

在一些示例中,hevccre118可以执行双向运动估计。例如,hevccre118可以定位未来和过去的帧或分块中的对象,并将它们中的两个混合在一起以求平均预测结果。因此,结果预测运动向量可以比仅在过去的帧或分块上预测的运动向量或者仅在未来的帧或分块上预测的运动向量更精确。在一些示例中,可以与显示顺序不同地重新排序帧或分块。例如,如果5个帧的显示顺序是0,1,2,3,4,则帧可以按0,2,1,4,3(或在此示例中的ipbpb)的顺序进行编码。帧1和3可以从过去(0)和未来(2)预测。在大多数情况下,此类重新排序可能会产生更好的压缩。

在一些示例中,hevccre118可以执行帧内或分块内预测。例如,场景改变或其它主要改变可能已发生,使得所述对象不存在于任何过去的帧中。因此,运动向量必须完全从来自帧内的像素预测。hevccre118可以分析每个像素上方和在每个像素左边的像素,并选择其中像素可以被复制的角度。例如,水平图案可以水平复制,以及垂直图案可以垂直复制。在一些示例中,水平轴和垂直轴之间可以存在多个预定角度供选择。例如,较高的性能模式可以包括采用较少的ime预测符候选进行搜索。在一些示例中,正常性能可以是给定帧的质量和执行时间的平衡。较高的性能模式可能会以一些质量为代价来减少执行时间。较低的性能模式可以增加质量,同时还增加执行时间。在一些示例中,hevccre118可以检查正常性能模式和较低性能模式(提供较高质量)下的所有35个角度,但是对于一些cu等级,可以减少在较高性能(较低质量)中搜索的角度。例如,hevccre118可以仅减少32×32cu的角度,并且不是16×16或8×8的角度,并继续搜索那里的所有角度。

在一些示例中,对于ime搜索,hevcime116的正常性能模式可以使用8个候选。在高性能模式中,hevcime116可以仅使用4个候选以用于ime搜索来通过执行较少的计算节省时间。在更高质量或更低性能模式中,hevcime116可以搜索12个候选以用于ime搜索。

在一些示例中,对于hme搜索,在正常性能模式中,avcvdenc110可以仅考虑一个参考帧。在较高质量模式中,avcvdenc110可以考虑多于一个参考帧。

在一些示例中,可以为多个编解码器提供支持,其中具体包括vp9编解码器。例如,hevc和vp9在跳过和并置运动向量(mv)列表中是不同的。例如,针对vp9只考虑最近的邻居。由于vp9也使用不同的变换和量化方法,下面描述的rdo计算可能需要考虑0-255量化步长。此外,可以使用不同的变换矩阵。此外,位率估计可以基于概率。对于vp9,也可以禁用邻居像素平滑。此外,可以为vp9支持提供mpm列表得出、模式掩码(mask)、分区掩码。在一些示例中,也可以针对4x4,8x8,16x16,32x32和非正方形形状包括帧内真实运动支持。也可以为16x8/8x16,32x16/16x32,8x4/4x8形状提供非正方形帧内预测。此外,参考帧大小缩放可以在执行运动搜索时实时(onthefly)提供。

对每个帧进行预测的类型可以被称为模式判决。例如,hevccre118可以基于四种类型的预测中的任何一个而对帧进行编码,包括跳过检查、分数运动估计、双向运动估计、帧内运动估计。为了确定具体的编码模式,hevccre118可以基于运动估计来进行模式判决。尤其,运动估计的输出可以被用来确定可能被应用于编码当前图像帧的每个不同模式的编码成本。这可能引起在一个实现中选择展现最小成本的模式。在一些示例中,hevccre118可以选择与原始图像最紧密匹配的模式并消耗最少量的位以在位流中传送。例如,四种预测模式可能引起紧密匹配的图像,但其中一种预测模式可能比其余的消耗更少的位。hevccre118因此可以使用引起较少位的预测模式。在一些示例中,hevccre118可以使模式判决基于率失真优化(rdo)成本。例如,可以基于由cre118得出的候选,通过正向变换和量化(ftq)模块(未示出)来计算rdo成本。在一些示例中,ftq模块可以使用离散余弦变换(dct)和量化来计算rdo成本。ftq模块还可以基于要纠正的误差量来估计用于传送块的位的量。

在一些示例中,hevccre118可基于制码单元组合的rdo成本比较制码单元的不同组合。例如,可以将16×16制码单元与四个8×8制码单元的任何组合进行比较。同样地,不同估计的32×32制码单元可以与4×4制码单元的不同组合进行比较。类似地,64×64制码单元可以与四个32×32制码单元的各种组合进行比较,如下面关于图3更详细描述的。hevccre118然后可以进行关于哪个制码单元或最大制码单元发送到pak的最终判决。

预测模式还可以确定将当前帧大小压缩成目标帧大小而进行的轮的数量。在一些示例中,目标帧大小可以由应用或驱动器确定。在一些情况下,进行若干轮以确定当前帧大小是否等于目标帧大小,其中轮是通过用于实现目标帧大小的编码器的一部分的单个迭代。目标帧大小可以由率控制模块(未示出)来指定。在一些示例中,使当前帧达到目标帧的大小的轮的数量受每个帧的模式限制。通过每个轮,可以修改量化参数以实现目标帧大小。

pak112可以生成统计信息流150。统计信息流可以包括在编码期间收集的各种参数,并且可以被返回到存储器以供另一过程使用或者用于进一步为了更好的压缩或质量调谐编码器。例如,来自pak112的统计信息可以包括用于传送cu的位的实际位量。在一些示例中,统计信息流150可以包括误差平方和(sse)分类器立方。例如,可以在pak112中生成源和解码图片之间的最终精确sse,并将其分类到各种群组中,以用于通过微控制器106的更快的软件分析。在一些示例中,可以基于帧间cu或帧内失真的运动向量长度以及帧中的特定感兴趣区域通过标记sse的低和高阈值执行此分箱(binning)。在一些示例中,微控制器106可以具有响应于检测到超出阈值的误差而重新编码的帧。在一些示例中,响应于检测到低于较高阈值但大于较低阈值的误差,微控制器106可指定用于要被编码具有较少误差的未来帧的预测参数的调整值。在一些示例中,应用可以指定用于调谐阈值的调整值。例如,一些应用可能更宽容,而一些其它应用可能更严格。以这种方式,阈值可以被调谐成支持比如果阈值被设置在静态值更多的使用。

此外,pak可以生成要用于运动估计的重建的视频帧。重建的帧可以被保存到诸如共享l2高速缓存108的存储器。在一些示例中,在源中10位或12位输入可以被截短成8个最高有效位(msb),并且可以将重建的图像以拆分格式写入到存储器108(将8位msb发送到存储器108的一个区域,其中2位或4位最低有效位(lsb)发送到存储器108的另一区域)。这允许运动估计仅使用8bmsb用于搜索,而10b和12b原始值可用于pak的运动补偿,从而实质上在噪声内容方面增加质量并减少带宽。

如所示的,pak112从存储器/高速缓存接口208接收数据并将数据传送到存储器/高速缓存接口208。在一些示例中,共享l2高速缓存108可以是由avcvdenc110和vdenc++114以及pak112执行的编码过程之间的共享高速缓存。视频编码可以包括运动估计和运动补偿二者。运动估计是搜索最佳运动向量的过程。运动补偿是采取指定运动向量,并然后预测在可以然后用于编码的运动向量位置处的像素的过程。编码组件110、116、118和112中的每个可以接收要处理的像素,如由箭头131、136、142和148分别指示的。具体地,编码过程加载像素以用于搜索和确定运动向量,并且pak112处理像素以将运动应用于由运动向量指定的位置。共享l2高速缓存108是过程可以访问以读取/写入数据的公共高速缓存。因此,在一些示例中,当数据首次被加载用于编码时,那些像素保持在共享l2高速缓存108中足够长的时间,以便pak过程112找到对于运动补偿所需的每个特定像素。在一些示例中,该共享l2高速缓存108因此防止加载和传送像素两次。在一些示例中,共享l2高速缓存108可以包括与列分块宽度行走模式配对的可变寄存器传输逻辑(rtl)高速缓存容量声明。在一些示例中,在其中必须使存储器带宽最小化并且片上高速缓存必须是最小尺寸的情况下,可以使用分块宽度高速缓存代替帧宽度高速缓存。

图1没有示出可以应用于由avcvdenc110、hevcime116和hevccre118进行的每个判决的各种成本计算(costing)。软件驱动器可以具有用于通过成本计算覆盖任何上面描述的功能的信息。此外,微控制器106还可以具有用于通过成本计算覆盖任何上面描述的功能的信息。在一些示例中,成本计算可以是用于在整个过程中本质上偏倚(bias)判决的控制和权重。例如,在hevccre118中,各种候选运动估计可以与跳过候选进行比较。在一些情况下,得出并用于比较的原始数字可能引起制码单元(其在可能影响制码单元选择的信息可用时不会被选择)。在一些示例中,一些先验知识或预定值可能建议如果三个候选接近,则总是将跳过采取为最佳选择。这些成本计算引起来自一些其它源的可编程权重。然后可以将成本计算在每次搜索或判决分发到偏倚判决和选择。即使当使用固定功能硬件单元时,成本计算也通过每个搜索功能使能高度可编程性。因此,本技术针对不同的应用使能高度的可重新使用性。

在一些示例中,成本计算可用于创建可重新配置的编码流水线。例如,可以使用各种成本计算和/或参数来在编码期间偏倚模式判决。可以调整诸如量化参数(qp)的参数以基于不同的内容类型、可用带宽、分辨率、目标编解码器和位预算来偏倚模式选择。在实施例中,对于主观视频优化,可以针对每个cu单独调整每个qp以在一些情况下提升质量并且隐藏较不可见的区域中的视觉伪影。换句话说,作为成本计算的qp使能直接控制反馈循环,其中通过向上或向下改变qp偏倚,本技术可以非常清楚地改进用户如何通过增加其中用户未看见的伪影和降低其中用户看见的伪影来感知视频质量。用户可编程阈值的多个阶段可以用来控制qp。阶段1qp可以基于这个块对以四分位数的帧的其余部分的相对失真。每个四分位数可能在qp或deltaqp上有其自己的改变。阶段2qp可以基于模式特定信息,例如用于帧间预测的运动向量长度或帧内预测模式类型。阶段3qp可以基于具有多个等级的关联的deltaqp的用户指定的感兴趣区域映射。如果需要,可以在与sliceqp组合之前和之后将每个δ(delta)组合并夹紧。

在其中整数qp值产生显著超过目标位预算的帧并且一个qp更高的整数值产生显著未达目标位预算的帧的情况下,两个最接近的整数qp值之间的分数准确度qp可以被使用并且在整个帧中可以成比例地指配较低和较高的整数qp值,使得整个帧的cuqp的平均值允许更精确的结果来满足目标位预算(具有较少量的越标(overshoot)和未达标(undershoot))。

在一些示例中,量化参数是一种值,其用于划分当前帧的系数以便获得目标帧大小的值。较高的量化参数可能引起更多的零系数,所述系数不必被编码来以质量为代价来减少位率。相应地,帧可以以此类方式定大小使得每帧的位的数量与目标视频流的编码格式的位率一致。在一些情况下,编码器可以再次执行运动估计以确定帧的cu类型和更精细的运动向量(在位率控制已应用于每个帧之后)。在一些示例中,附加的第四阶段可以基于运动长度进行按制码单元调整。例如,运动可以分类为静态运动、低运动或高运动。由于人类视觉系统对静态对象上的伪影比具有高运动对象更敏感,所以qp可以分别在静态运动或低运动区域中降低,并且在高运动区域中增加,以相应地模糊细节并增强编码。

一旦确定了新的运动向量、量化参数和cu类型,hevcpak112可以将所述帧以目标视频压缩格式编码到最终压缩视频流中。

图1的图不旨在指示示例系统100要包括图1中所示的所有组件。相反,示例系统100可以使用图1中未示出的更少或附加组件(例如,附加的运动估计器、反馈循环、微控制器等)来实现。例如,vdenc++还可以包括用于ftq的单独模块和与hevccre118分开的最终判决模块(未示出),以进行关于单元的最终判决。

图2是示出用于硬件视频编码的示例流水线的框图。示例流水线通常由参考数字200表示,并且可以使用下面图6中的方法600在下面图7中的电子装置700中或者在上面图1的系统100中实现。流水线200包括多个阶段,包括分层运动估计(hme)搜索阶段202、整数运动估计(ime)搜索阶段204、检查和细化引擎(cre)阶段206以及硬件位打包(pak)阶段208。例如,hme搜索阶段202可以经由视频编码器avcvdenc110来实现,ime搜索阶段204可以经由hevcime116来实现,cre阶段206可以经由hevccre118来实现,并且pak阶段208可以经由上面图1的hevc/vp9pak112来实现。pak阶段208的输出可以是参考像素210和位流212。此外,图2包括源像素214的集合。

在框202,可以执行分层运动估计(hme)搜索以获得多个参考。在实施例中,可以对每个后续帧执行hme202以便确定每个帧的运动向量。hme搜索涉及对于每个帧的运动向量执行粗略搜索以基于先前帧确定帧内的每个cu的估计运动向量。例如,当分析第一i-帧时,由于不存在先前帧,可以不执行hme搜索。在那时,源像素216可以被缩减,这样一来当下一帧被编码时,下采样像素217可以成为与源216相比的参考以用于运动估计。因此可以从第三帧向上使用参考217。因此,源像素216可以由hme202内部下采样,并且如由反馈循环217指示地被写入和读回以用于未来作为下采样参考使用。初始估计的运动向量可以通过以更精细粒度等级执行附加搜索来细化。例如,可以以各种分辨率(从粗粒度等级到精细粒度等级)搜索cu,以便确定运动向量。其它hme搜索技术可以包括但不限于在搜索运动向量时改变cu的大小。

在实施例中,可以将位率控制应用于每个帧,以便创建满足目标视频流的编码格式的帧大小的帧。各种视频压缩格式对视频流使用规定的位率,并且位率是当播放视频时存在的每秒位的数量。位率控制通过确定帧的理想量化参数以引起目标帧大小来完成。

在一些示例中,hme搜索阶段202可以将完全分辨率cu采取作为输入,并将分辨率按比例缩小到第四、第八或更高分辨率。然后可以通过按比例缩小的分辨率执行hme运动估计。例如,输入cu的完全分辨率可以是64×64像素,按比例缩小的分辨率可以是32×32、16×16和8×8像素。当与以完全分辨率执行hme搜索相比时,这引起性能优势,这可能是功率性能非常密集的。在一些示例中,可以使用两个参考来执行hme。例如,两个参考可以是紧接在当前帧之前的两个帧。在其它实施例中,所述两个参考可以是先前帧和长期参考帧。如本文所使用的,长期参考帧是之前在预定数量的帧内被处理的高质量编码帧。例如,长期参考可以是根据之前100帧的质量非常好的编码帧。在一些示例中,可以考虑预定数量的候选以用于运动估计。例如,候选的数量可以设置在十六个候选。在一些示例中,hme搜索202可以包括两个阶段。例如,第一hme阶段可能比第二hme阶段更缩减。第二hme阶段可以从第一hme阶段接收预测符。以这种方式,阶段的数量可以增加以减少由于使用较少阶段的较大缩减的丢失细节。hme搜索202的输出可以是hme预测符218。例如,hme预测符可以是一对减少的准确度运动向量。如从下采样源像素216分析的,hme预测符218可以是关于在何处搜索匹配的良好推测。

整数运动估计器(ime)204可以使用来自pak208的参考像素234、hme预测符218和源像素219来执行完全搜索。例如,ime204可以使用在双hme搜索期间找到的减少的准确度运动向量来获得准确的运动向量。ime204可以将根据源像素214列举的当前帧的制码单元的各种块大小的所有值与来自参考像素234的参考图像帧的搜索区域中的整数像素的值进行比较。

在一些示例中,ime可以使用多达12个40×40搜索窗口或预测符。在一些示例中,ime可以使用四个预测符,或基于性能模式使用任何其它数量的预测符。例如,较高性能模式可以选择两个空间邻居和两个hme预测符,而正常性能模式可能能够包括四个或更多个附加预测符候选。

在框206,检查和细化引擎(cre)可以使用嵌套循环将cu分区为像素制码单元。例如,分区可以基于从ime204接收到的cu记录220。cu记录是cu(例如16×16cu)内的每一单个形状的枚举。此外,一些cu可以被拆分成cu内更精细粒度的多个预测单元(pu)或变换单元(tu)。各种制码标准具有可以被选择的(例如16x16、8x8、4x4等等)多个块大小。在ime搜索204期间,在第一完全搜索中找到的一些候选可以与来自第二完全搜索的其它候选组合。cu记录保持追踪(keeptrackof)cu形状,并且取决于找到的运动向量,可以经由分区组合一些cu。cre可以在确定整数运动估计的组合时使用mb记录,以用于生成要变换和评分的残差以用于比较,如下面针对于图3的示例cre流水线更详细描述的。

如由从cre206到ime204的反馈循环所指示的,cre206可以将邻居预测符226提供到ime204。邻居预测符226可以是在何处搜索匹配(给定前面的邻居被发现作为良好匹配)的良好推测。例如,邻居预测符可以包括成本中心和搜索中心。例如,成本中心可以基于编解码器内的合并列表和amvp。由于当前块的运动向量将被差分编码为预测运动向量,所以成本中心可以表示与解码器将会通过先前解码的邻居运动向量的某一组合在当前块的运动向量中预测的内容紧密匹配的位置。例如,如果预测运动向量是(10,-5),则可以将(10,-5)标记为对于运动向量的搜索的中心,运动向量具有最佳匹配且接近该中心的。例如如果(11,-5)是最佳匹配,则编码器可以发送位流中的(1,0)以便解码器添加到(10,-5)的预测向量以在正确的位置(11,-5)处得到结果。

在框208,硬件位打包(pak)单元要将对应于如根据模式判决制码的源像素225的位打包成数据格式。例如,数据可以根据递归视频标准格式化。递归视频标准可以包括但不限于hevc、vp9等。在实施例中,基于编码器模式选择将结果二进制化成不同的视频格式。如由箭头228和230所示的,pak阶段208的结果可以包括参考像素210和位流212,其可以通过遵循视频标准被精确且唯一地解码。编码器模式选择可以产生多个模式判决。如本文所使用的,模式判决指编码器如何表示每个cu。编码器模式选择可以被设置成通过最高量质量来编码最少数量的位。在一些示例中,可以将pak设置成以64×64的粒度进行编码。例如,在64×64块可以由单个位表示的情况下,则64×64的粒度会比32×32的粒度更有效,这会要求至少四个位。在一些示例中,可以将pak设置成以32×32的粒度进行编码。在另一方面,将pak设置成以32x32的粒度操作可能降低要由pak生成统计信息所花费的时间。在一些示例中,如由反馈循环232所示的,此类统计信息可以从pak208发送到cre206并且用于在cre206改进预测。例如,统计信息可以用于切片大小一致性特征以预测何时当前分片要被关闭并且另一分片开始将分片大小与网络分组对齐。在一些示例中,pak可以具有精确的位流大小计数器,而enc可以具有近似的位流计数器。每64x64cu得到反馈四次对比于每64x64cu一次,允许更精确的分片大小终止。在一些示例中,参考像素210还可以被提供到ime阶段204,如由反馈循环234所指示的。例如,ime阶段204可以将后续帧与参考像素210进行比较以在参考像素210中找到适当的块。因此,参考像素210可以供ime阶段204使用以执行如上面所描述的运动估计。

在一些示例中,pak208还可以执行仅pak多轮,而不针对小帧qp改变执行运动估计和模式判决。例如,如果需要多个轮以通过位率控制(brc)算法实现期望的帧大小,则可以针对第二轮呈现两个选项。在第一选项中,pak208可以基于具有新qp的更新成本计算来重新进行整个编码。在第二选项中,pak208可以绕过编码并且仅使用pak208硬件以重放来自具有修改的qp的第一轮的模式判决。例如,pak208可以检索保存到存储器215的模式判决,如由箭头227所指示的。第二选项可以节省功率和时间。在一些示例中,可以基于帧qp改变的阈值水平来选择第一或第二选项。例如,响应于检测到小于第一阈值且高于第二阈值的帧qp改变,pak可以执行仅pak多轮。因此,可以绕过hme202、ime204和cre206,并且可以节省计算资源以少量地增加准确度。

图2的图不旨在指示示例流水线200要包括图2中所示的所有组件。相反,示例流水线200可以使用未在图2中示出的附加或更少组件(例如,附加阶段、反馈循环等)来实现。例如,虽然描述了双参考hme搜索202,可以使用多个参考帧来执行hme搜索202,其产生多参考hme搜索202。

图3是示出用于确定制码单元的具有嵌套循环的示例流水线的框图。示例流水线通常使用参考数字300来引用,并且可以在上面图1的hevccre118或下面图7的编码器728中实现。此外,流水线300可以与多个基于四叉树的编解码器兼容。因此,例如,可以使用相同单个流水线300来使用hevc或vp9编解码器高效地编码视频。

示例流水线300是递归基于树的流水线,其包括可并行处理不同大小cu的cre302、304和306的第一列。第一列可以如由箭头指示地在上下方向上处理。流水线300包括哈达玛正向变换和量化(hftq)模块308、310、312的第二列,以生成针对选定数量的cu组合的rdo分数,以及处理完全分辨率cu的cre314。哈达玛正向变换是离散余弦变换(dct)的简化版本。在一些示例中,hft或dct可以用于不同的门数(gatecount)成本。在一些示例中,可以在不执行逆过程(itiq)的情况下计算rd成本。例如,率失真优化中的失真可以在反过程(reverse)完成(itiq)的情况下通过从变换和量化像素减去原始像素来计算。在一些示例中,可以替代地在频域中计算失真,否定标准rdo实现的成本高的itiq部分。在一些示例中,可以使用如下面更详细描述的离散余弦变换(dct)和量化来生成rdo分数。流水线300的第三列包括三个制码单元判决框316、318和320。流水线300的第三列如由箭头所指示地从下往上处理。

如图3中所示的,源像素、邻居模式和运动向量301、候选帧间预测单元(pu)的集合可以在流水线300处接收,并且由三个cre框302、304和306并行处理。例如,pu可以是64×64像素。可以将pu拆分成要由cre302处理的8×8像素宏块、要由cre304处理的16×16像素cu,以及要由cre306处理的32×32像素cu。cre302、304、306中的每个可以使用跳过检查、帧内运动估计、分数运动估计和/或双向运动估计来处理cu。例如,cre302可以使用这些技术的组合来处理四个8×8cu,如由循环324所指示的。每个技术可以用于在空域中从原始像素中减去像素值。例如,可以从原始cu中减去针对每个的预测的cu以生成处理的cu,本文被称为残差。在一些示例中,cre302可以以与cre304处理一个16×16cu花费的时间量相同时间量处理四个8×8cu。类似地,cre304可以以与由cre306处理单个32×32cu相同的时间量处理四个16×16cu。在一些示例中,四个残差可以被发送到hftq308以用于生成针对每个处理的cu的关联的rdo分数。例如,每个残差可以由hftq308从空域变换到频域中。hftq308然后可以合并具有最多能量的该频率,并然后量化频率。四个残差的rdo分数可以被发送到cu判决框316以用于与单个16×16cu残差比较。例如,cre304可同样地生成要发送到hftq310的四个残差。cre304可生成四个16×16cu残差,如由循环330所指示的。hftq可生成针对每个残差的rdo分数,并发送针对要在制码单元/预测单元/变换单元(cu/pu/tu)判决框316处与四个8×8cu残差的组合rdo进行比较的每个16×16cu残差的rdo。cu判决框316可以使四个比较和对应的判决(引起四个16×16制码单元)发送到第二cu/pu/tu判决框318以用于比较。例如,四个16×16制码单元中的每个可以是一个16×16单元或四个8×8单元。

仍然参考图3,cre306可以生成用于在hftq312评分的单个32×32残差。cre306还可以从cu判决框318接收关于可能的32×32cu的信息并且进行四个32×32cu的频域判决以使用成生成四个对应的残差来发送到hftq312以用于生成rdo分数。具体地,cre306可以得出精确的预测运动向量。预测运动向量(mv)可以在跳过中心和成本中心应用中具有很多用途。在一些示例中,cre306可以基于先前的cu的运动向量来得出预测的mv。例如,在其中先前cu基于帧间预测mv的情况下,cre306可以基于先前cu的运动向量得出预测mv。在其中先前cu基于帧内预测mv的情况下,cre306可使用选择的角度来预测当前cu的帧内角度。因此,cre302-306可以在框324、330和340包括类似的邻居模式和运动向量。然而,在框340和330或324的处理之间的差异在于:在框340采取在318中进行最终判决之后的反馈,而330和324基于预hftq分析推测316将做什么。因此,可以发送四个32×32制码单元用于与用作最大制码单元(lcu)的64×64制码单元进行比较。

在一些示例中,cre314可以对64×64cu执行跳过检查,但是可以不对64×64cu执行任何帧内运动估计、分数运动估计或双向运动估计。由于dct可能在64x64分辨率不被支持,64x64cu将使其残差拆分成四个32x32cu(仅出于变换和逆变换目的)。然而,运动向量和模式可以仍然应用于整个64x64cu。例如,可以在从输入301接收到342之后跳过检查64×64cu,并且将344发送到lcu判决框320以与lcu判决框320中的四个32×32cu进行比较。在框320,64×64到最佳复合64x64由32x32和\或更小的cu组成。如图3中所示的,箭头338的“x4”意味着四个累积的32×32cu已经组合它们的复合rd成本,以用于与344的64×64候选的rd成本进行比较。在框346,pakcu对象被输出。例如,pakcu对象可以包括使用帧内预测(诸如角度或dc)或帧间预测(诸如跳过\合并)或包括分数mv准确度的单向/双向运动估计的任何组合预测的8×8、16×16、32×32cu或64×64lcu的任何组合。

图3中的每个行可以几乎同时生成输出。因此,例如,来自hftq的四个8×8curdo分数可以在与hftq310发送针对每个16×16cu中的每个的rdo分数大致相同的时间在cu判决框316被接收。同样地,来自cu判决框316的四个cu可以在与来自hftq312的32×32curdo分数大致相同的时间到达cu判决框318。然而,如果跳过检查、帧内运动估计、分数运动估计和双向运动估计的所有可能组合被生成以用于在cu判决框316、318和320进行比较,则这也许不是可能的。因此,cre302和304可以预测近似rdo分数并使用对于hftq308和310更高的预测评分的cu以用于实际的rdo评分。由循环324和330指示的cre302和304的预测在hftq308和310将残差322和328从空域变换到频域中之前进行,并且因此本文中被称为空域预测。相比之下,在生成预测时,cre306可以使用变换的残差(如由循环340所指示的),其在本文中被称为频域预测。在一些示例中,cre306可以针对一些cu大小使用空域预测,而针对较大cu大小(包括可能较小的cu大小)使用频域预测。

在一些示例中,流水线300中的判决相关性(dependency)可以是可重新配置并且能够处置多种性能模式。例如,对于cu和pu判决之中的运动向量和模式预测可能存在许多相关性。在lcu内强制执行(enforce)右顶或顶或左相关性或不强制执行此类相关性可能影响编码器可以被流水线化的深度。此外,流水线中的许多点可能包括大量要考虑的候选。通过增加或降低在流水线300的每个阶段考虑的候选的数量,可以调整性能。

此外,流水线判决相关性处置可以是可重新配置的,从而使能多个性能模式。例如,对于cu和pu判决之中的运动向量和模式预测可能存在多种相关性。是否在lcu内强制执行右顶或顶或左相关性可能影响流水线300的可能深度。在一些示例中,在循环324和334的两个或更多个预测可以并行进行。此外,流水线300中的许多点包括大量要考虑的候选。通过增加或降低候选的数量,可以调整性能。

图4是示出用于经由单轮模式和/或双轮自适应模式收集统计信息的方法400的框图。在图4中,关于第一循环402a和第二循环402b来描述基于各种统计信息的反馈循环。例如,第一循环402a可以表示帧或分块轮。箭头403示出从循环402a到循环402b的时间的进展。虽然仅描述了两个循环,但是本技术可以执行任何数量的循环,以在针对具体媒体内容的最佳编码器模式判决上会聚。在框404a,微控制器将诸如先前帧或分块统计信息和流参数(诸如可变位率(vbr)、恒定位率(cbr)、每秒帧(fps)、位率、图片群组(gop)结构等等)的控制采取作为输入。使用此信息,微控制器在404a可以确定微控制器统计信息406a。微控制器在404a还将分片qp发送到在框408a的编码器/位后备。每个分片qp是压缩视频数据的自立单元,并且不具有与其邻居的相关性。量化参数可以与每个分片关联。

那些控制被硬件接受,所述硬件执行其任务一直到在框408a在编码器/位后备处的位流生成。当编码器/位后备在框408a生成编码的位流时,也生成统计信息。一些统计信息在框412a在过程的编码(enc)部分期间生成,以及一些统计信息在框410a从pak过程生成。

在实施例中,在第一循环期间存储的统计信息被存储在存储器中,使得第二次微控制器404在循环402b迭代,微控制器统计信息406a、pak统计信息410a和编码器统计信息412a将在第二循环供微控制器404b使用以在414设置有条件轮标志。因此,在实施例中,微控制器统计信息406a和406b包括关于率控制精确度的信息,例如率控制缓冲器如何被管理以及编码过程是否精确满足预定的预算。此信息作为最新的新式率控制信息向前传播。

此外,由微控制器404输出的sliceqp可用于确定是否发生有条件轮。在框416的有条件轮是硬件的一部分并且用于确定有条件轮标志在414是否已被写入(由于在第一循环402a中发生的编码器模式选择满足当第一循环被执行时需要的所有要求)。如果在第一循环402a中满足所有要求,则第二循环402b检查以确保一切满足要求。如果是,则有条件轮标志将在414设置,并且在框416执行有条件轮,而不需要进行任何附加任务。

在实施例中,有条件多轮方法包括单轮模式402和双轮自适应模式。在制码过程期间,多格式编码/解码引擎可以提供硬件加速的媒体数据编码和解码。尤其,每个轮可以由固定功能硬件加速的媒体数据编码和解码组件执行。在实施例中,编码/解码引擎是无状态引擎,在于它不保留用于图像的编码/解码过程的设置(状态)的任何历史。因此,驱动器在处理每个新的帧或分块之前发出状态命令序列的完全集合。

在另一方面,如果在第一循环402a结束处的编码器模式判决超过了所阐述的准则和预算,则第二循环402b可以检测到违规并且在框406b、410b和412b更新统计信息。此外,有条件标记414会被标记为需要重复当前帧或分块的处理。在实施例中,修改sliceqp参数以招致编码器模式判决处于目标预算内。第二循环402b的控制将会与由402a指定的控制不同,因为如果使用了精确控制,则确切相同的编码器模式判决将会引起相同的判决,这将不会满足要求。

换句话说,如果第一循环402a以任何其它方式生成在预算要求之外的帧或分块,则可以由第二循环402b设置sliceqp以使下一尝试引起处于具体编码要求内的帧或分块大小。当执行第二循环402b时,获得针对pak410b和enc412b的新一轮统计信息,其否定并重写在来自第一循环402a的框410a和412a的统计信息。因此,enc/pak408b、pak统计信息410b和enc统计信息412b通过虚线表示,因为它们是基于来自先前循环402a的结果的可选步骤。虽然sliceqp被用作示范控制,但是可以使用任何控制来招致目标帧或分块处于由具体编码方案指定的要求内。所述控制可能是例如sliceqp或任何其它模式成本计算。在实施例中,阈值可以是将通过减少流水线动态地控制硬件吞吐量的控制,其转而增加了模式判决边界或跳过的精确度。在一些示例中,可以如由箭头418指示地执行仅pak多轮编码。例如,响应于检测到小于第一阈值且高于第二阈值的帧qp改变,然后pak可以使用更新的qp参数(而无需使用hme、ime或cre)来重新打包帧。

图5是硬件编码器502的图示。控制504中的流被提供到编码器。如本文所描述的硬件编码器可以是黑盒,其中诸如软件驱动器或微控制器的外部过程经由硬件编码器将遵守的控制或成本计算、特殊提示,扩展编码器的能力。流入控制504类似于成本计算并且使第三方过程能够偏倚和控制每一个单独的制码单元。流入控制可以应用于每个功能,类似于图2中描述的成本计算。例如,流入控制中的一个可能强制帧内搜索为最佳模式判决。在一些情况下,可以经由第三搜索提供附加的搜索候选,可以指定重要性排名(感兴趣区域),模式判决可以被强制跳过、帧内预测或让硬件判决,qp(量化参数)可以被强制,或应用于编码过程的其它率控制参数。

在实施例中,指针可由外部过程生成并被提供到编码器502。还可使用诸如附加ime搜索预测符的覆盖(成本计算,特殊提示或控制)。在实施例中,可以提供第三ime搜索中心x,y(超出hme和ppmv)。这使能甚至更大的搜索范围。此外,还可以为动态cuqp调整提供感兴趣区域控制。此外,可跳过、帧内或让编码器判决强制类型。可以使用强制qp,或者编码器可以确定qp。此外,可以使用率控制应急控制。如上面所描述的,hevc使能可变大小的制码单元。在一些示例中,可以通过选择基于32x32的控制并使编码器502将基于32x32的控制与针对32x32的所选cu树对齐来在外部过程中实现特定控制。例如,如果所选择的树对于该32×32是4×16×16,则外部流入控制504可以应用于每个16×16制码单元。因此,在由编码器502选择“网格(grid)”的情况下,对外部过程已知的“网格”可能不是1:1。因此,动态流入粒度可以由编码器502处置。

在一些情况下,用户可以提供位预算阈值,其中每个分片以不超过该阈值为目标。由于硬件编码器针对性能而流水线化,可能存在一些反馈延迟(从积累位的地方到编码器进行重要分片终止计算的地方)。用户可以指定一个阈值,其将通过减少流水线来动态地减缓硬件,所述流水线增加分片终止边界的精确度,或者用户可以跳过该阈值,其将增加性能但降低切片终止行为的准确度。

图6是使能硬件编码的方法600的过程流程图。示例过程通常由参考数字200表示,并且可以在上面的系统100或下面的电子装置700中实现。

在框602,对两个接收到的视频帧执行分层运动估计搜索。在实施例中,使用缩减的参考来执行分层运动估计搜索。例如,每个视频帧的每个最大制码单元(lcu)(64×64)可以被缩减到8×8块并以1/8(1/8th)分辨率搜索。然后可以将结果提供到1/4(1/4th)分辨率搜索阶段。最后,对于64x64lcu的每个32x32cu,可以针对1倍分辨率ime生成候选列表。这可以作为64x64进行,以确保8倍下采样8x8足够大以具有足够的特征来跟踪尺寸小到中的对象,与使用以1/8缩减的32x32和搜索4x4匹配相反。1倍ime候选列表可以包括空间邻居、hme得出的预测符、时间预测符和用户提供的预测符。在一些示例中,由ime使用的预测符的数量可以基于性能模式。例如,在高性能模式中,ime可以从预测符集合中选择12个预测符。在较低的性能模式中,ime可能只使用四个预测符。在一些示例中,可以基于为每个预测符指配优先级号的预定义的排名列表来对预测符进行排序。例如,如果使用预测符的子集,则可以基于优先级号来选择较高优先级预测符。在一些示例中,可以使用搜索中心距离参数来检测冗余预测符,所述搜索中心距离参数可以用于分析预测符之间的重叠。如果预测符相对于已经用于搜索的预测符是冗余的,则可以丢弃冗余预测符并且可以使用具有下一较高优先级号的预测符。在一些示例中,用于确定冗余度的重叠的量可以是可编程的阈值。

如上面所描述的,诸如hevc和vp9的递归编解码器可以使用具有10位或甚至12位准确度的视频格式。在一些示例中,视频帧的十位或十二位块可以被截短成八位最高有效位(msb)块以用于执行运动估计。例如,视频帧可以通过10位或12位准确度格式化。因此,可以基于4:2:08位基本构建块为具有10位和12位准确度的4:2:2和4:4:4色度格式提供支持(最优用于压缩和带宽)。例如,在编码器的入口处,4:4:4和4:2:2视频帧可以被下采样到4:2:0,以进行运动估计和模式判决,同时继续将用于实际重建和二值化的原始4:4:4或者4:2:2输入保留在pak中。尤其,在源中可将10位和12位输入截短成的8位msb,并可将重建的图像以拆分格式写入到存储器(将8位msb发送到存储器的一个区域,其中2位或4位最低有效位(lsb)发送到存储器的另一区域)。这可以允许运动估计仅使用8个最高有效位(msb)用于搜索,而10位和12位原始值可以用于pak的运动补偿。仅使用8个msb可以实质上在噪声内容方面增加质量并减少带宽。

在框604,基于分层运动估计搜索的结果来执行整数运动估计(ime)搜索。32x32ime的结果可以是将32x32再分成各种制码单元(cu)和预测单元(pu)组合的49个正方形和矩形形状的列表。那些结果经历了分数和双向改进。在一些示例中,ime搜索可以包括使用空间和时间邻居预测符。

在框606,可以基于至少一个空域预测和至少一个频域预测使用嵌套循环生成残差来执行检查和细化。cre嵌套循环可以以自底向上的方式处理cu,首先解析每个8×8,然后比较4×8×8与1×16×16,然后比较4×16×16与1×32×32,最后比较4×32×32与1×64×64,如上面针对于图3更详细描述的。在一些示例中,每个嵌套循环可以是上至所描述的等级和之下等级的多个深度的cu树。例如,如果4x8x8具有比1x16x16更低的rdo成本,则4x8x8将会被视为1x16x16,以用于与4x16x16分组的较大比较。在一些示例中,合并逐渐减少(mergetapering)可以用于附加候选生成。例如,在执行给定cu等级的跳过(合并)处理时,部分结果可以被保存并重新使用作为较低等级cu帧间候选。较低等级cu帧间候选然后可以是amvp制码而不是合并制码的。在一些示例中,可以使用基于lcu的邻居重建以用于改进的性能。例如,顶行和左lcu边缘像素可以从pak反馈以及重建,以提供更精确的帧内预测,而不会由于64×64lcu内的32×32z-模式行走而实质上影响硬件复杂度。

在框608,针对每个所生成的残差计算率失真优化(rdo)成本,对多达制码单元的大小的变换单元大小执行模式判决。例如,每个生成的残差可以经由离散余弦变换而被变换到频域中,并然后被量化。

在一些示例中,可以执行残差平坦性检查(rfc)以防止大的变换单元(tu)伪影出现在渲染的视频帧中。例如,此类伪影可能以振铃伪影的形式出现在渲染视频帧中。采样自适应偏移过滤器(sao)可以用作去振铃过滤器来纠正此类振铃。然而,sao过滤器可能是处理器密集的,可能添加复杂度,或者可能会被禁用或未去除所有伪影。因此,在一些示例中,在源和预测之间的残差误差的正向变换之前,rfc可以计算整个cu上的残差的相对分布并确定残差是均匀存在还是集中在单个象限中。如果一个象限具有太多残差或太少残差,则可以通过强制变换单元(tu)拆分来阻止大变换,在sao未启用时减少视觉伪影的可能性。如本文使用的,tu拆分指的是使tu小于cu的判决。编码器可以判决对具有32x32大小或更大的任何给定cu使用4x4、8x8、16x16或32x32变换。例如,32x32cu或64x64lcu可以使用它偏好的任何变换大小,但8x8cu只能使用4x4或8x8变换。在一些示例中,cre可以针对tu大小(等于和小于与它们关联的cu大小)准备rdo成本(在框312、310和308)。然后,可以将最佳tu拆分选项分别发送到320、318和316。在一些示例中,残差平坦性检查可以基于可调整阈值,提供sao过滤器之上的附加灵活性。此外,残差平坦性检查也可以结合传统的sao过滤器工作,以提供附加质量改进。例如,如果存在并启用sao过滤器,则可以将阈值设置更低到更激进的等级。

此外,可以提供具有防护带保护的可变帧内刷新周期以确保sao过滤器使用安全像素。如本文所使用的,防护带指超出帧内刷新区域的像素区域,其中过滤器采样效果可能影响帧内刷新区域之外的区域,例如sao。尤其,防护带是刷新区域外的多个像素,以在极端情况下保护损坏的伪影免于扩散。例如,水平刷新模式和垂直刷新模式每个均可以提供有跨越安全刷新阈值的预测保护,以及为循环过滤器和sao误差传播添加的防护带。

在一些示例中,cre可以基于运动长度进行按cuqp调整。例如,运动可以分类为静态、低运动和高运动。在一些示例中,可以包括附加运动长度阶段以提供附加δqp调整。例如,人类视觉系统可能对静态对象上的伪影比具有高运动的对象上的伪影更敏感。因此,qp可以在pakmb对象中降低和增加,以分别模糊细节和增强它们。以这种方式,可以在人类视觉系统可能较不敏感的区域中保存附加位。

在一些示例中,可基于加权预测参数来进行qp调整。例如,可以将亮度数据的直方图提供到微控制器以用于检测淡入或淡出事件。微控制器可以基于亮度数据的直方图响应于检测到帧之间的淡入事件或淡出事件,生成加权预测参数。

在框610,可以比较所生成的残差的rdo成本,以基于具有较低rdo成本的残差来生成最大制码单元(lcu),并且执行最终模式判决。例如,虽然ime和cre可以使用绝对变换失真和(satd)以用于判决准则,但最终模式判决可以基于rdo估计的重建块的误差平方和(sse)(失真)连同基于非零系数的数量、它们的幅度和它们的频率的估计位成本。然后可以将所生成的lcu发送到pak以用于基于所生成的lcu在pak处对视频帧的32×32或64×64部分进行编码。

在框612,lcu被发送到pak以生成重建的像素和位流。lcu可以对应于要被重建并且本地存储的图像的一部分。重建的图像可以在下一帧的编码期间供ime使用。例如,ime可以对重建的像素执行运动估计。位流可以被发送到显示装置。

此过程流程图不旨在指示示例方法600的框要以任何具体顺序执行,或者所有框要包括在每一种情况中。此外,取决于特定实现的细节,可以在示例方法600内包括未示出的任何数量的附加框。例如,方法600还可以包括接收性能模式。在一些示例中,可以基于性能模式增加或降低考虑用于运动估计的候选的数量。在一些示例中,可以基于性能模式增加或降低考虑用于运动估计的角度的数量。在一些示例中,可以基于性能模式增加或降低考虑用于整数运动估计的预测符的数量。

图7是使能硬件视频编码的电子装置700的框图。电子装置700可以是例如服务器、膝上型计算机、平板计算机、移动电话、智能电话或可穿戴装置、无人机等等。电子装置700可以包括配置成执行存储的指令的中央处理单元(cpu)702以及存储由cpu702可执行的指令的存储器装置704。cpu可以通过总线706耦合到存储器装置704。此外,cpu702可以是单核处理器、多核处理器、计算集群或任何数量的其它配置。此外,电子装置700可以包括多于一个cpu702。存储器装置704可以包括随机存取存储器(ram)、只读存储器(rom)、闪速存储器或任何其它适合的存储器系统。例如,存储器装置704可以包括动态随机存取存储器(dram)。

电子装置700还包括图形处理单元(gpu)708。如所示的,cpu702可以通过总线706耦合到gpu708。gpu708可以配置成在电子装置700内执行任何数量的图形操作。例如,gpu708可以配置成渲染或操纵要向电子装置700的用户显示的图形图像、图形帧、视频等等。在一些实施例中,gpu708包括多个图形引擎,其中每个图形引擎配置成执行特定的图形任务,或执行特定类型的工作负载。例如,gpu708可以包括经由无损像素压缩来处理视频数据的引擎。

cpu702可以通过总线706链接到配置成将电子装置700连接到多个显示装置712的显示器接口710。显示装置712可以包括显示屏幕,所述显示屏幕是电子装置700的内置组件。显示装置712还可以包括外部连接到电子装置700的计算机监视器、电视或投影仪等等。

cpu702还可以通过总线706连接到配置成将电子装置700连接到一个或多个i/o装置716的输入/输出(i/o)装置接口714。i/o装置716可以包括例如键盘和定点装置,其中定点装置可以包括触摸板或触摸屏等等。i/o装置716可以是电子装置700的内置组件,或者可以是外部连接到电子装置700的装置。

电子装置还可以包括存储装置718。存储装置718是诸如硬盘驱动器、光驱动器、闪存驱动器、驱动器阵列或其任何组合的物理存储器。存储装置718可以存储用户数据,例如音频文件、视频文件、音频/视频文件和图片文件等等。存储装置718还可以存储编程代码,例如装置驱动器、软件应用、操作系统等等。存储到存储装置718的编程代码可以由cpu702、gpu708或可以包括在电子装置700中的任何其它处理器执行。

cpu702可以通过总线706链接到蜂窝硬件720。蜂窝硬件720可以是任何蜂窝技术,例如4g标准(由国际电信联盟-无线电通信部门(itu-r)颁布的国际移动电信-高级(imt-高级)标准)。以这种方式,电子装置700可以访问任何网络722而无需束缚于其它装置或与其它装置配对,其中网络722是蜂窝网络。

cpu702还可以通过总线706链接到wifi硬件724。wifi硬件是根据wifi标准(如电气和电子工程师协会(ieee)802.11标准颁布的标准)的硬件。wifi硬件724使电子装置700能够使用传输控制协议和因特网协议(tcp/ip)连接到因特网,其中网络722是因特网。相应地,电子装置700可以在不使用另一装置的情况下通过根据tcp/ip协议寻址、路由选择、传送和接收数据来使能与因特网的端到端连接性。此外,蓝牙接口726可以通过总线706耦合到cpu702。蓝牙接口726是根据蓝牙网络(基于由蓝牙特特别利益组织颁布的蓝牙标准)的接口。蓝牙接口726使电子装置700能够通过个域网(pan)与其它蓝牙使能的装置配对。相应地,网络722可以是pan。蓝牙使能的装置的示例包括膝上型计算机、桌面型计算机、超极本、平板计算机、移动装置或服务器等等。

计算装置700可以包括编码器728。编码器728可以是不具有在编码器算法的主循环内执行的可编程引擎的硬件编码器。在实施例中,这可以被称为固定功能编码。通常,制码视频数据包括对视频进行编码以满足用于记录和重放的适当格式和规范。运动估计器730可以是由编码器728的固定功能硬件执行的算法。运动估计是视频制码和视频压缩中的重要和计算上密集的任务。在一些示例中,运动估计器730可以包括hme732、avcime734和hevcime736。例如,hme732可以执行如上面所描述的粗粒度的搜索。可以通过pak模块732基于目标大小或位率来计算诸如多轮打包(pak)参数的参数。在实施例中,编码器可以以迭代方式使用以使能有条件多轮编码。例如,编码器可以使用基于分块或帧的重复。

电子装置700还包括检查和细化(cre)模块738。cre328可以基于一个或多个预测生成残差。电子装置700还包括正向变换和量化器(ftq)740以将残差变换到频域中并量化残差。ftq740然后可以计算残差的rdo成本。电子装置700还包括pakmb对象生成器742,以进行对于生成lcu的最终模式判决并生成pakmb对象以发送到pak744以用于对帧进行编码。例如,pakmb对象可以包括cu大小和估计类型的组合。电子装置因此包括pak744以使用接收到的pakmb对象来对视频帧进行编码。

电子装置700还包括微控制器746。微控制器746可以处理用于覆盖编码器728或pak744的功能的信息。可以通过如上面所描述的成本计算和其它统计信息来使能此覆盖。例如,微控制器746可以提供亮度数据的直方图以用于分析以及与先前帧的比较来确定淡入或淡出事件是否正发生。在一些示例中,可以使用累积分布函数来转换两个帧中的每个的直方图,并且可以使用结果曲线之间的偏移来确定权重因子。微控制器746可以计算帧之间的平均亮度差并且生成加权预测参数以在运动向量的预测中对亮度变化进行归一化。在一些示例中,加权预测参数可以包括在发送到解码器的位流中,使得解码器可以应用相同的权重因子来精确地对视频帧进行解码。

图7的框图不旨在指示电子装置700要包括图7中示出的所有组件。相反,计算系统700可以包括图7中未示出的附加或更少组件(例如传感器、功率管理集成电路、附加网络接口等)。取决于特定实现的细节,电子装置700可以包括图7中未示出的任何数量的附加组件。此外,cpu702的任何功能性可以部分地或完全地在硬件中和/或在处理器中实现。例如,功能性可以通过专用集成电路、以在处理器中实现的逻辑、以在专用图形处理单元中的逻辑或任何其它装置来实现。

图8是示出含有用于硬件视频编码的逻辑的介质800的框图。介质800可以是计算机可读介质,包括存储可由处理器802通过计算机总线804访问的代码的非暂时性介质。例如,计算机可读介质800可以是易失性或非易失性的数据存储装置。例如,介质800也可以是逻辑单元,诸如专用集成电路(asic)、现场可编程门阵列(fpga),或者在一个或多个集成电路中实现的逻辑门的布置。

介质800可以包括配置成执行本文描述的技术的模块806-814。例如,hme模块806可配置成基于缩减的运动估计搜索来确定编码模式。avcime模块808可以配置成执行ime搜索。例如,ime搜索可以基于双hme搜索的结果。hevcime模块810可以基于第一ime搜索的结果来执行第二ime搜索。hevccre模块812可以确定制码单元和对视频帧进行编码所采用的对应的编码器模式。最后,在框814,hevc/vp9pak模块将位打包成与对于由消耗装置消耗的编码器模式判决对应的分组。例如,分组可以被发送到解码器以将分组解包成视频帧。

图8的框图不旨在指示介质800要包括图8中所示的所有组件。此外,取决于特定实现的细节,介质800可以包括图8中未示出的任何数量的附加组件。

编码器算法必须将由规范定义的语法和工具组合的实际上无限制数量减少成所有解码器能够理解的单个选项。本技术产生使用最少量的功率或提供最大量的视频保真度或最大量的压缩或这些度量的某一组合的选项。在实施例中,本技术聚焦于以具有主观视频质量增强的低功率采用4k分辨率的视频压缩。

本发明提供一组技术方案,如下:

1.一种用于视频编码的系统,包括:

包括多个固定功能硬件单元的编码器,所述多个固定功能硬件单元包括分层运动估计单元、整数运动估计单元以及检查和细化单元,其中当所述编码器要执行所述多个固定功能硬件单元时,其中所述多个固定功能硬件单元可操作以用于:

执行分层运动估计搜索;

至少基于所述分层运动估计(hme)搜索的结果以及空间和时间邻居来执行整数运动估计搜索;

基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索;

针对所述生成的残差中的每个计算率失真优化(rdo)成本,并对多达制码单元的大小的变换单元大小执行模式判决;以及

基于所述生成的残差的率失真优化(rdo)成本比较生成最大制码单元(lcu),并执行最终模式判决。

2.如技术方案1所述的系统,包括:

存储器,要用于存储指令并且通信地耦合到所述编码器;以及

处理器,通信地耦合到所述编码器和所述存储器,其中当所述处理器要执行所述指令时,所述处理器要接收包括误差平方和(sse)分类器立方的统计信息,并基于所述sse分类器立方调整当前帧或未来帧的预测参数。

3.如技术方案1所述的系统,包括ftq,用以将所述残差变换到所述频域中并且量化所述残差。

4.如技术方案1所述的系统,其中所述检查和细化单元包括基于树的递归流水线,其中所述基于树的递归流水线的至少一个层要执行所述频域预测,并且所述基于树的递归流水线的至少一个层要并行执行所述空域预测。

5.如技术方案1所述的系统,包括微控制器,用以响应于检测到两个接收到的视频帧之间的淡入或淡出事件,基于亮度数据的直方图来生成加权预测参数。

6.如技术方案1所述的系统,包括微控制器,用以从pak接收误差平方和分类器立方,并且响应于检测到超过阈值的误差而使所述pak对帧进行重新编码。

7.如技术方案1所述的系统,包括微控制器,用以从pak接收误差平方和分类器立方,并且响应于检测到超过第一阈值并且少于第二阈值的误差而调整要编码具有较少误差的未来帧的预测参数。

8.如技术方案1所述的系统,包括微控制器,用以基于运动向量长度指定针对按制码单元量化参数调整的调整值。

9.如技术方案1所述的系统,包括存储器,所述存储器包括分块-宽度高速缓存。

10.如技术方案1所述的系统,包括存储器,用于以基于八位构建块拆分格式存储视频帧。

11.一种用于硬件视频编码的方法,包括:

对两个接收到的视频帧执行分层运动估计搜索;

至少基于所述分层运动估计(hme)搜索的所述结果和空间和时间邻居来执行整数运动估计搜索;

基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索;

针对所述生成的残差的每个计算率失真优化(rdo)成本,并且对多达制码单元的大小的变换单元大小执行模式判决;以及

比较所述生成的残差的所述rdo成本以基于具有较低rdo成本的残差生成最大制码单元(lcu)并执行最终模式判决。

12.如技术方案11所述的方法,包括保存来自处理具体制码单元等级的部分结果并将所述部分结果用作较低等级制码单元帧间候选。

13.如技术方案11所述的方法,包括在pak处重建顶行和左边缘lcu像素,并且在所述检查和细化中使用所述重建的lcu像素来增加帧内预测精确度。

14.如技术方案11所述的方法,包括执行残差平坦性检查以响应于检测到所述生成的残差中的一个包括集中在单个象限中的相对分布而强制变换单元拆分。

15.如技术方案11所述的方法,包括基于运动向量长度执行按制码单元量化参数调整。

16.如技术方案11所述的方法,包括响应于检测到所述两个接收到的视频帧之间的淡入或淡出事件,基于亮度数据的直方图经由微控制器生成加权预测参数。

17.如技术方案11所述的方法,包括将所述视频帧的十位或十二位块截短成八位最高有效位(msb)块以用于执行所述运动估计。

18.如技术方案11所述的方法,包括基于性能模式增加或降低考虑用于运动估计的候选的数量,考虑用于运动估计的角度的数量或考虑用于整数运动估计的预测符的数量。

19.如技术方案11所述的方法,其中,使用递归基于树的流水线并行地执行生成所述残差,计算所述rdo成本,以及比较所述生成残差的所述rdo成本。

20.如技术方案11所述的方法,包括:响应于检测到小于第一阈值且高于第二阈值的帧qp改变,执行仅pak多轮。

21.一种用于视频编码的设备,包括:

编码器,包括固定功能分层运动估计搜索单元,固定功能整数运动估计搜索单元以及固定功能检查和细化单元,其中所述检查和细化单元要基于至少一个空域预测以及至少一个频域预测使用嵌套循环来生成残差,并且基于与所述生成的残差关联的率失真优化(rdo)成本来执行最终模式判决;以及

硬件位打包(pak)单元,其中所述硬件位打包单元要将如根据所述最终模式判决制码的位打包成数据格式。

22.如技术方案21所述的设备,其中所述pak单元要响应于检测到小于第一阈值且高于第二阈值的帧qp改变而执行仅pak多轮。

23.如技术方案21所述的设备,其中所述cre包括ftq以将所述残差变换到所述频域中且量化所述残差。

24.如技术方案21所述的设备,其中所述pak要生成误差平方和(sse)分类器立方并将所述sse分类器立方发送到微控制器以用于qp调整。

25.如技术方案21所述的设备,其中所述检查和细化单元包括流水线,其中所述流水线的至少一个层要执行所述频域预测且所述流水线的至少一个层要执行所述空域预测。

示例

示例1是一种用于视频编码的系统。所述系统包括编码器,所述编码器包括多个固定功能硬件单元,所述多个固定功能硬件单元包括分层运动估计单元、整数运动估计单元以及检查和细化单元。当所述编码器要执行所述多个固定功能硬件单元时,所述多个固定功能硬件单元可操作以执行分层运动估计搜索。所述多个固定功能硬件单元可操作以至少基于所述分层运动估计(hme)搜索的结果以及空间和时间邻居来执行整数运动估计搜索。所述多个固定功能硬件单元可操作以基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索。所述多个固定功能硬件单元可操作以针对所述生成的残差中的每个计算率失真优化(rdo)成本,并对多达制码单元的大小的变换单元大小执行模式判决。所述多个固定功能硬件单元可操作以基于所述生成的残差的率失真优化(rdo)成本比较生成最大制码单元(lcu),并执行最终模式判决。

示例2包括示例1所述的系统,包括或排除可选特征。在此示例中,所述系统包括要存储指令并且通信地耦合到所述编码器的存储器;以及通信地耦合到所述编码器和所述存储器的处理器,其中当所述处理器要执行所述指令时,所述处理器要接收包括误差平方和(sse)分类器立方的统计信息,并基于所述sse分类器立方调整当前帧或未来帧的预测参数。

示例3包括示例1至2中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括ftq,用以将所述残差变换到所述频域中并且量化所述残差。

示例4包括示例1至3中任何一个所述的系统,包括或排除可选特征。在此示例中,所述检查和细化单元包括基于树的递归流水线。所述基于树的递归流水线的至少一个层要执行所述频域预测,并且所述流水线的至少一个层要并行执行所述空域预测。

示例5包括示例1至4中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括微控制器,用以响应于检测到所述两个接收到的视频帧之间的淡入或淡出事件,基于亮度数据的直方图来生成加权预测参数。

示例6包括示例1至5中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括微控制器,用以从pak接收误差平方和分类器立方,并且响应于检测到超过阈值的误差而使所述pak对帧进行重新编码。

示例7包括示例1至6中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括微控制器,用以从pak接收误差平方和分类器立方,并且响应于检测到超过第一阈值并且少于第二阈值的误差调整要编码具有较少误差的未来帧的预测参数。

示例8包括示例1至7中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括微控制器,用以基于运动向量长度指定针对按制码单元量化参数调整的调整值。

示例9包括示例1至8中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括存储器,所述存储器包括分块-宽度高速缓存。

示例10包括示例1至9中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括存储器,用于以基于八位构建块的拆分格式存储视频帧。

示例11是一种用于硬件视频编码的方法。所述方法包括对两个接收到的视频帧执行分层运动估计搜索。所述方法还包括至少基于所述分层运动估计(hme)搜索的所述结果和空间和时间邻居来执行整数运动估计搜索。所述方法还包括基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索。所述方法还包括针对所述生成的残差的每个计算率失真优化(rdo)成本,以及对多达制码单元的大小的变换单元大小执行模式判决。所述方法还包括比较所述生成的残差的所述rdo成本以基于具有较低rdo成本的残差生成最大制码单元(lcu)并执行最终模式判决。

示例12包括示例11所述的方法,包括或排除可选特征。在此示例中,所述方法包括保存来自处理具体制码单元等级的部分结果并将所述部分结果用作较低等级制码单元帧间候选。

示例13包括示例11至12中任何一个所述的方法,包括或排除可选特征。在此示例中,所述方法包括在pak处重建顶行和左边缘lcu像素,并且在所述检查和细化中使用所述重建的lcu像素来增加帧内预测精确度。

示例14包括示例11至13中任何一个所述的方法,包括或排除可选特征。在此示例中,所述方法包括执行残差平坦性检查以响应于检测到所述生成的残差中的一个包括集中在单个象限中的相对分布而强制变换单元拆分。

示例15包括示例11至14中任何一个所述的方法,包括或排除可选特征。在此示例中,所述方法包括基于运动向量长度执行按制码单元量化参数调整。

示例16包括示例11至15中任何一个所述的方法,包括或排除可选特征。在此示例中,所述方法包括响应于检测到所述两个接收到的视频帧之间的淡入或淡出事件,基于亮度数据的直方图经由微控制器生成加权预测参数。

示例17包括示例11至16中任何一个所述的方法,包括或排除可选特征。在此示例中,所述方法包括将所述视频帧的十位或十二位块截短成八位最高有效位(msb)块以用于执行所述运动估计。

示例18包括示例11至17中任何一个所述的系统,包括或排除可选特征。在此示例中,所述方法包括基于性能模式增加或降低考虑用于运动估计的候选的数量,考虑用于运动估计的角度的数量或考虑用于整数运动估计的预测符的数量。

示例19包括示例11至18中任何一个所述的方法,包括或排除可选特征。在此示例中,使用递归基于树的流水线并行地执行生成所述残差,计算所述rdo成本,以及比较所述生成残差的所述rdo成本。

示例20包括示例11至19中任何一个所述的方法,包括或排除可选特征。在此示例中,所述方法包括响应于检测到小于第一阈值且高于第二阈值的帧qp改变,执行仅pak多轮。

示例21是一种用于视频编码的设备。所述设备包括编码器,所述编码器包括固定功能分层运动估计搜索(hme)单元,固定功能整数运动估计搜索(ime)单元以及固定功能检查和细化(cre)单元。所述cre要基于至少一个空域预测以及至少一个频域预测使用嵌套循环来生成残差,并且基于与所述生成的残差关联的率失真优化(rdo)成本来执行最终模式判决。所述设备包括硬件位打包(pak)单元。所述pak单元要将如根据所述最终模式判决制码的位打包成数据格式。

示例22包括示例21所述的设备,包括或排除可选特征。在此示例中,所述pak单元要响应于检测到小于第一阈值且高于第二阈值的帧qp改变而执行仅pak多轮。

示例23包括示例21至22中任何一个所述的设备,包括或排除可选特征。在此示例中,所述cre包括ftq,用以将所述残差变换到所述频域中且量化所述残差。

示例24包括示例21至23中任何一个所述的设备,包括或排除可选特征。在此示例中,所述pak要生成误差平方和(sse)分类器立方并将所述sse分类器立方发送到微控制器以用于qp调整。

示例25包括示例21至24中任何一个所述的设备,包括或排除可选特征。在此示例中,所述检查和细化单元包括流水线,其中所述流水线的至少一个层要执行所述频域预测且所述流水线的至少一个层要执行所述空域预测。

示例26包括如示例21至25中的任何一个所述的设备,包括或排除可选特征。在此示例中,所述cre要针对所述生成的残差中的每个计算率失真优化(rdo)成本,并对多达制码单元的大小的变换单元大小执行模式判决。

示例27包括如示例21至26中的任何一个所述的设备,包括或排除可选特征。在此示例中,所述cre要基于所述生成的残差的率失真优化(rdo)成本比较生成最大制码单元(lcu),并执行最终模式判决。

示例28包括如示例21至27中的任何一个所述的设备,包括或排除可选特征。在此示例中,所述ime要至少基于所述分层运动估计(hme)搜索的结果以及空间和时间邻居来执行整数运动估计搜索。

示例29包括如示例21至28中的任何一个所述的设备,包括或排除可选特征。在此示例中,所述cre要基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索。

示例30包括如示例21至29中的任何一个所述的设备,包括或排除可选特征。在此示例中,所述最终模式判决基于率失真优化(rdo)估计的重建块的误差平方和(sse)连同基于非零系数的数量、系数的幅度和系数的频率的所估计的位成本。

示例31是一种用于视频编码的系统。所述系统包括用于执行分层运动估计搜索的部件。所述系统还包括用于至少基于所述分层运动估计(hme)搜索的结果以及空间和时间邻居来执行整数运动估计搜索的部件。所述系统还包括用于基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索的部件。所述系统包括用于针对所述生成的残差中的每个计算率失真优化(rdo)成本,并对多达制码单元的大小的变换单元大小执行模式判决的部件。所述系统还包括用于基于所述生成的残差的率失真优化(rdo)成本比较生成最大制码单元(lcu),并执行最终模式判决的部件。

示例32包括示例31的系统,包括或排除可选特征。在此示例中,所述系统包括用于接收包括误差平方和(sse)分类器立方的统计信息,并基于所述sse分类器立方调整当前帧或未来帧的预测参数的部件。

示例33包括示例31至32中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括用于将所述残差变换到所述频域中并且量化所述残差的部件。

示例34包括示例31至33中任何一个所述的系统,包括或排除可选特征。在此示例中,用于执行所述跳过检查的部件包括基于树的递归流水线。所述基于树的递归流水线的至少一个层要执行所述频域预测并且所述基于树的递归流水线的至少一个层要执行所述空域预测(并行地)。

示例35包括示例31至34中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括用于响应于检测到所述两个接收到的视频帧之间的淡入或淡出事件,基于亮度数据的直方图来生成加权预测参数的部件。

示例36包括示例31至35中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括用于从pak接收误差平方和分类器立方,并且响应于检测到超过阈值的误差而使所述pak对帧进行重新编码的部件。

示例37包括示例31至36中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括用于从pak接收误差平方和分类器立方,并且响应于检测到超过第一阈值并且少于第二阈值的误差调整要编码具有较少误差的未来帧的预测参数的部件。

示例38包括示例31至37中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括用于基于运动向量长度指定针对按制码单元量化参数调整的调整值的部件。

示例39包括示例31至38中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括存储器,所述存储器包括分块-宽度高速缓存。

示例40包括示例31至39中任何一个所述的系统,包括或排除可选特征。在此示例中,所述系统包括用于以基于八位构建块的拆分格式存储视频帧的部件。

示例41是用于编码视频帧的具有指令存储在其中的至少一种计算机可读介质。所述计算机可读介质包括指令,所述指令引导所述处理器对两个接收到的视频帧执行分层运动估计搜索。所述计算机可读介质还包括指令,所述指令引导所述处理器至少基于所述分层运动估计(hme)搜索的所述结果和空间和时间邻居来执行整数运动估计搜索。所述计算机可读介质还包括指令,所述指令引导所述处理器基于至少一个空域预测和至少一个频域预测,使用嵌套循环生成残差来执行跳过检查、帧间细化和帧内搜索。所述计算机可读介质还进一步包括指令,所述指令引导所述处理器针对所述生成的残差的每个计算率失真优化(rdo)成本,并对多达制码单元的大小的变换单元大小执行模式判决。所述计算机可读介质还包括指令,所述指令引导所述处理器比较所述生成的残差的所述rdo成本以基于具有较低rdo成本的残差生成最大制码单元(lcu)并执行最终模式判决。

示例42包括示例41所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以保存来自处理具体制码单元等级的部分结果并将所述部分结果用作较低等级制码单元帧间候选。

示例43包括示例41至42中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以在pak处重建顶行和左边缘lcu像素,并且在所述检查和细化中使用所述重建的lcu像素来增加帧内预测精确度。

示例44包括示例41至43中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以执行残差平坦性检查来响应于检测到所述生成的残差中的一个包括集中在单个象限中的相对分布而强制变换单元拆分。

示例45包括示例41至44中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以基于运动向量长度执行按制码单元量化参数调整。

示例46包括示例41至45中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以响应于检测到所述两个接收到的视频帧之间的淡入或淡出事件,基于亮度数据的直方图经由微控制器生成加权预测参数。

示例47包括示例41至46中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以将所述视频帧的十位或十二位块截短成八位最高有效位(msb)块以用于执行所述运动估计。

示例48包括示例41至47中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以基于性能模式增加或降低考虑用于运动估计的候选的数量,考虑用于运动估计的角度的数量或考虑用于整数运动估计的预测符的数量。

示例49包括示例41至48中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以使用递归基于树的流水线并行地执行生成所述残差,计算所述rdo成本,以及比较所述生成残差的所述rdo成本。

示例50包括示例41至49中任何一个所述的计算机可读介质,包括或排除可选特征。在此示例中,所述计算机可读介质包括指令以响应于检测到小于第一阈值且高于第二阈值的帧qp改变,执行仅pak多轮。

要理解,前面提到的示例中的详情可以在一个或多个实施例中的任何地方使用。例如,上面描述的电子装置的所有可选特征也可以针对于本文描述的方法或计算机可读介质中的任一个来实现。此外,尽管本文可能已使用流程图和/或状态图来描述实施例,所述技术不限于本文中那些图或者对应的描述。例如,流程不需要移动通过每个示出的框或状态,或者以与本文所示和描述的完全相同的顺序移动。

并非本文描述和示出的所有组件、特征、结构、特性等需要包括在一个或多个具体实施例中。例如,如果说明书陈述了组件、特征、结构或特性“可以”、“可能”、“能”或“能够”被包括,该具体组件、特征、结构或特性不要求被包括。如果说明书或权利要求引用“一”或“一个”元件,那并不意味着仅存在该元件中的一个。如果说明书或权利要求引用“附加”元件,那不排除存在多于附加元件中的一个。

要注意到,尽管已参考具体实现描述了一些实施例,但根据一些实施例,其它实现是可能的。此外,在附图中示出和/或本文描述的电路元件或它特征的布置和/或顺序不需要以所示出和描述的具体方式布置。根据一些实施例,许多其它布置是可能的。

在图中所示的每个系统中,元件在一些情况下每个可以具有相同的参考数字或不同的参考数字,以意指所表示的元件可以是不同的和/或类似的。然而,元件可能足够灵活以具有不同的实现并且与本文示出或描述的系统的一些或全部一起工作。图中所示的各种元件可以相同或不同。哪一个被称为第一元件并且哪个被称为第二元件是任意的。

本技术不限于本文列示的具体细节。事实上,受益于本公开的本领域技术人员将意识到,可以在本技术的范围内根据前面描述和附图进行许多其它变更。相应地,正是以下权利要求(包括对其的任何修改)定义了本技术的范围。

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