在编码数据流中的最优功率使用 【技术领域】
本公开涉及信号处理,更具体地涉及在编码数据流中最优的功率使用。
背景技术
编码总体上是指将数字值序列(例如,以数据流)从一种格式转换成另一种格式。如相关现有技术中公知的,编码一般需要进行诸如压缩、应用转换等任务。同样如相关现有技术中公知的,解码总体上是指对已编码的数据进行处理以恢复出尽可能接近原始的数据流。
一般来讲,使用特定的编码技术进行编码,其后使用相应的解码技术恢复出原始数据流。通过处理逻辑定义编码技术(对源数据流的数字值序列进行一组定义的数学运算)。
由于不同的处理逻辑,使得不同的编码技术可以要求不同的处理资源以潜在地获得不同的质量(例如,通过一个或多个压缩级别、数据损失度、精度水平等进行测量)。反过来,处理资源确定所需的功率量。
总体上期望在编码数据流的同时最优地使用功率。
【附图说明】
以下将参考简要描述的附图说明本发明的实施例。
图1是示出了可以实现本发明的一些方面的实例设备的细节的框图。
图2是示出了在本发明的实施例中最优使用功率的方式的流程图。
图3是示出了一个实施例的视频编码器中的细节的框图。
图4是根据本发明的实施例,示出了在示例性的运动估计计算期间相关像素位置的框图。
图5是根据本发明的实施例,示出了基于可用功率的编码技术动态选择的状态图。
图6是根据本发明的实施例,示出了用于不同可用功率量的不同编码技术的表格。
在附图中,相似的附图标记大体上表示相同的、功能性相似的、和/或结构性相似的元件。相应附图标记中最左端的数字表示元件首次出现的附图编号。
【具体实施方式】
1、概述
根据本发明的一个方面提供的编码器基于相应持续时间段内的可用功率量使用不同的编码技术。由于这种使用不同编码技术的能力,使得可以最优地利用功率。
根据本发明的另一个方面,根据相应持续时间段内的可用功率量,通过在编码技术之间进行动态地切换以进一步提高优化。
在实施例中,每种编码技术在相应精度水平下(从而消耗相应的功率水平)估计运动矢量,并且选择精度水平以响应可用功率预算。可以关断不满足期望精度水平的电路。
以下参考示出的实例说明本发明的一些方面。但是,相关领域中的技术人员应该意识到的是,可以在不具有一个或多个具体细节的情况下或在利用其他方法、部件、材料等的情况下实施本发明。在其他实例中,为了避免混淆本发明的特征,不再详细示出公知的结构、材料、或操作。另外,虽然为了精简此处只说明了一些组合方式,但是可以以多种组合方式实施说明的特征/方面。
2、实例设备
图1是示出了实现本发明的一些方面的实例设备100的细节地框图。虽然通过阅读本公开,对于相关领域的技术人员来讲显而易见的是,在其他设备中可以实现其特征,但是此处该设备对应于一种手持摄像机。所示设备包括用户应用程序110、软件驱动器120、照相机130、视频编码器140、中央处理器(CPU)150、存储器160、外部接口170、功率管理模块180以及电源190。
虽然分开示出这些模块,但是CPU 150执行构成了用户应用程序110和软件驱动器120的多种软件指令。一般来讲,CPU 150执行存储器160中的指令以提供相应的功能。
外部接口170可以包括输入部件(例如,键盘、指示设备、触摸屏、按钮、USB输入等)和输出部件(例如,显示器、扬声器),可以使用这些部件来提供不同的用户接口。可以通过已知的方式,经由软件驱动器120将接收到的输入提供给用户应用程序110。相似地,也可以通过已知的方式,经由软件驱动器120使得用户应用程序110可以将输出数据(用于显示/可听见的再现)提供给外部接口170。
当通过CPU 150执行时,每一个用户应用程序110提供一组相应的功能(例如,看电影,捕捉视频,播放歌曲等)。即使本发明的特征可以用在其他不同的应用环境中,但以下仍以在压缩格式下捕捉视频信号来说明示出的实例。响应用户通过外部接口170提供的一组适当的输入来启动该视频捕捉。
功率管理模块180从电源190上接收功率,并被设计为用以估计不同部件(例如,CPU 150、存储器160)的当前功率需求。功率管理模块180还可以跟踪在系统上执行的每一个用户应用程序110(例如,编码、解码、网络浏览)的功率需求。基于这种估计(或者其他方面),功率管理模块180可以为视频编码器140计算可用功率量。一般来讲,所有部件消耗的功率之和需要少于电源190提供的功率水平。基于这种一般性要求,可以计算编码器140的可用功率。
软件驱动器120可以包括与每一部件130/140/150/160/170以及180接口的相应的驱动器。这样,当用户请求视频捕捉时,相应的软件驱动器可以在路径123上向照相机130发送捕捉请求。作为响应,软件驱动器120可以在路径132上接收代表捕捉到的图像/图片帧序列的数据流。数据流可以被送往视频编码器140进行编码。已编码的数据可以被接收,然后送到CPU 150进行进一步的处理(例如,存储在二级存储器中或传送到外部设备)。
编码器140对从软件驱动器120上接收到的数据进行编码。在编码期间,可以如以下说明的实例那样最优地使用功率。
3、编码技术
图2是示出了在本发明的一个实施例中的编码技术的流程图。以下将仅参考图1示意性的说明本流程图。但是,可以在其他环境中以及为其他类型的数据(例如,音频)实施不同的特征。通过阅读此处的公开,对于相关领域的技术人员来讲显而易见的是,还可以在不背离本发明一些方面的范围和精神的情况下,在其他环境的可选实施例中,执行不同顺序的步骤。该流程图开始于步骤201,控制传递到步骤210。
在步骤210中,软件驱动器120接收输入数据流和用于编码操作的可用功率量。输入数据流包括代表关注信息的数字值序列。在图1所示的情况中,数字值可以代表由照相机130捕获的帧序列。功率量可以用于与编码器140的实施相一致的任意持续时间段(例如,持续一段时间除非之后发生变化)。
在步骤220中,软件驱动器120选择要求少于或等于可用功率量的信号处理技术。例如,如果可用功率很低(例如,当前时间点下的功率源190对应于电池,而不是来自公用事业公司的外部电源的源),则可以选择低质量(假设其需要消耗较少功率的资源)的编码技术。
在步骤240中,软件驱动器120使用选定的信号处理技术对输入数据流进行编码。可以理解的是,通过信号处理技术的实现(通过硬件、软件和固件的相应结合)来确定资源需求。这样,通过指示功率量,可以最优地使用合计可用功率。流程图结束于步骤299。
当相对于单一实例中编码技术的选择说明上述流程图的同时,应该理解的是,随着适用于具体的环境中,此处的特征可以被重复多次。另外,可以使用不同的方法来实现相应的编码技术。以下说明示出这些特征的实现实例。
4、实例实现
图3是示出了本发明的实施例中的编码器一部分细节的框图。所示框图包括驱动器310,整像素运动估计(ME)320,半像素ME 330,四分之一像素ME 340和逻辑模块380。以下进一步详细说明每一个模块。
驱动器310可以响应软件驱动器120中的一个驱动器或可替换地在视频编码器140中实现。一般来讲,驱动器310接收可用功率量并仅打开/关闭期望的运动估计模块。另外,驱动器310与以编码为目的而操作的特定估计模块通信,以便逻辑模块380可以基于仅来自操作性(未关断)部件的可用数据执行其余的编码操作。
逻辑模块380表示所有编码操作(“其余操作”)而不是仅由模块320/330/340实现的运动估计操作。其余操作基于相应环境中使用的特定编码算法和输入/输出格式。应该理解的是,基于打开/关闭模块320/330和340中的哪些模块,逻辑模块380可以利用不同数量的可用的运动估计(在相应的精度下)来实现。逻辑模块380的实现对于相关领域中的技术人员来讲是显而易见的。
如现有技术中公知的,整像素运动估计(ME)320在两个连续的图像帧(或其部分)之间以整像素值为精度进行运动估计。例如,整像素ME 320可以将第二/当前图像帧置于距离在该序列中接收的第一/上一个帧一个像素的位置处,并计算该差异。
图4中的位置410A到410H示出了相对整像素位置的实例。随着输出至逻辑模块380,提供每一位置(例如8个位置)的计算估计。为了以期望的速度实现运动估计,可以使用任意已知的技术实现整像素ME 320,并相应地可以消耗每帧X的功率量。
半像素ME 330在两个连续帧(或其部分)之间以半个像素的距离为精度进行运动估计。例如,半像素ME 330可以将第二图像帧置于距离在该序列中接收的相应的第一帧半个像素的位置处。
图4中的位置420A到420H示出了相对半个像素位置的实例。提供每一位置(例如8个位置)的计算估计作为路径142上的输出。为了以期望的速度实现运动估计,可以使用任意已知的技术实现半像素ME 320,并相应地可以消耗每帧Y的功率量。
相似地,四分之一像素ME 340在两个连续图像帧之间以四分之一个像素值为精度进行运动估计。图4中的位置430A到430H示出了相对四分之一个像素位置的实例。为了以期望的速度实现运动估计,可以使用任意已知的技术实现四分之一像素ME 340,并相应地可以消耗每帧Z的功率量。
驱动器310基于接收到的功率预算控制整像素ME 320、半像素ME330和四分之一像素ME 340的操作。接收到的功率预算(可用功率量)可以指示用于实现编码操作/运动估计的可用功率。驱动器还可以保持整像素ME 320、半像素ME 330和四分之一像素ME 340的功率需求的细节。
在一个实施例中,假设逻辑模块380中的计算可以忽略,当用于编码的可用功率等于或大于(X+Y+Z;其中X=用于整像素的功率,Y=用于半像素的功率,且Z=用于四分之一像素的功率)时,驱动器310可以打开整像素ME 320、半像素ME 330和四分之一像素ME 340(例如第一编码技术)。这样,在更多数量的相对位置(这种情况下为24个)处实现运动估计。相应地,逻辑模块380可以为24个位置中的每一个接收估计后的数值(表示两个连续帧之间的匹配度),选择24个位置中最匹配的一个用以压缩当前处理的图像帧。由于为了编码考虑了子像素水平上更多的位置,因此这样编码的帧(数字值序列)产生了高质量(较少信息损失)的编码信号。
作为替换,当用于编码的可用功率大于X+Y且小于X+Y+Z时,驱动器310可以仅打开整像素ME 320和半像素ME 330(第二编码技术的实例)。这样,在相对较少数量的相对位置(这种情况下为16个)处实现运动估计。相应地,在16个位置中(由逻辑模块380)选择最匹配的,以便对提供中等质量的编码信号的帧进行编码。
相似地,当可用功率小于X+Y且大于X时,驱动器310可以仅打开整像素ME 320。这样,在8个相对位置处实现运动估计。相应地,在8个位置中选择最匹配的,以便对提供低质量的编码信号的帧进行编码。
在备选实施例中,驱动器310可以分别针对可用功率量X、Y、Z选择整像素ME 320、半像素ME 330和四分之一像素ME 340之一。
综上所述,可以理解的是,可以在潜在地编码每一个连续图像帧时最优地使用功率。如以下所述的实例,可以动态地调整功率消耗。
5、编码技术的动态选择
图5是示出了在本发明的一个实施例的可用功率的基础上处理(编码/解码)技术的动态选择的状态图。所示状态图包括状态“查询用以功率预算的功率管理模块”510、高质量520、中等质量530、低质量540,以及“低质量和帧丢弃”550。将在以下更进一步详细的说明每一个状态和相应的转换。
用以功率预算状态510的查询PM表示编码器300的初始状态。在这种状态下,驱动器120/310查询功率管理系统(PM)180的可用功率以编码数据流。驱动器120/310接收可用功率512、513和514的值并分别将编码器的状态改变到高质量520、中等质量530和低质量540。这种改变需要接通/关断相应运动估计模块并将其通信至逻辑模块380。
在高质量状态520、中等质量状态530和低质量状态540的每一个中,视频编码器140操作以分别产生高质量、中等质量、和低质量(低质量具有更多信息损失)的编码信号。例如,参考图3的说明,功率512、513和514可以分别表示X+Y+Z、X+Y、和X的值。
相应地,状态高质量520代表整像素ME 320,亚像素ME 330和四分之一像素ME 340正被打开。相似地,中状态530和低状态540分别表示当整像素ME 320和亚像素ME 330都被打开以及仅当整像素ME 320被打开时的状态。
在“低质量和帧丢弃”550状态下,操作视频编码器140以丢弃帧从而减小帧速率到小于期望值,使得在可用功率量内实现编码。由于帧的丢弃,编码链中存在的每一模块的功率使用可以随着每个丢弃的帧而下降。
但是,丢弃帧会导致以期望比特率输出的编码器的比特率发生变化(减小)。如相关领域中公知的,比特率的这种下降可以通过调整速率控制参数(RC)来补偿。例如,每帧平均比特(一般由比特控制(RC)参数进行分类)由比特率/帧速率给定并编入视频编码器(例如逻辑模块380)。
当丢弃帧以保持目标比特率时,编码器可以调整RC参数。另外,帧的丢弃提供更多的比特预算以编码帧。这样,在一个实施例中,已编码的帧的主观质量不会急剧下降。而且,可以通过I-slices/帧和/或更多的Intra刷新编码宏块来提高已编码序列的质量。
另外,驱动器310/120可以定期接收功率分配(可用性)。在编码操作阶段由于一个或多个用户应用程序的启动/结束,可以改变先前分配的功率。相应地,基于可用功率的降低(功率-)或增加(功率+)使得驱动器可以改变编码器的状态。转换532、543和554表示由于可用功率(用于编码)增加(+)而产生的转换,转换523、534和545表示由于可用功率降低(-)而产生的转换。这样,可用功率相应的增加或降低引发了这些转换。
对于相关领域中的技术人员来讲显而易见的是,可以基于环境的具体要求确定转换的选择。例如,如果在编码过程中可用功率降低至小于X+Y+Z,则驱动器310可以将编码器的操作从高质量切换到中等质量。
根据上述说明,以下参考H.264编码器说明编码技术的功率动态选择的实现方式。
6、实例H.264编码器
图6示出了H.264编码器在720p分辨率(图像尺寸为1280x720)下的编码技术与相应的功率需求细节的列表的表格。列610列出了编码技术,列620表示编码一帧数据所需要的时钟周期数量,列630表示完成30fps(帧每秒)吞吐量的时钟周期的频率,列640表示用30fps执行相应编码技术所需的功率。
在该示出的实例中,行650表示低质量编码技术的细节,行660表示中等编码技术的细节,行670表示高质量编码技术的细节。根据H.264标准实现低、中、高质量的编码技术。图示进一步假定,在视频编码器140于每一质量水平上耗费的功率逐渐增加的同时,整个视频编码过程耗费值为332mW的恒定功率(例如,在结合模块140一起操作以对视频信号进行编码的同时,由所有模块130、150、160、170耗费的功率)。
以标准锂离子4000mWh电池和在单电池充电至少5个小时的设备期望寿命(运行任意数量的应用程序)来继续说明实施例。这样,功率管理模块180将任意时间点上汲取的最大功率限制为800mW(4000mwh/5)。
如果在720p的分辨率下启动视频编码应用程序时,设备已经运行且消耗了400mW,软件驱动器120(根据状态510)查询功率管理(PM)模块180发现仅400mW(转变513的例子)可用,则由于所示的中等质量仅需要399mW,所以设置中等质量(状态530)用于编码。
这样,从上述描述中,可以理解的是,可以选择编码技术以对应于可用功率,那么可以最优化地使用功率。
除此之外,虽然描述了运动估计模块320/330/340的关断或接通作为最优化使用功率的方法,但是对于相关领域的技术人员来将显而易见的是,可以在编码器中使用其他技术(例如,即使仅以软件实现,也可以只禁用一部分电路,使用要求降低计算量的方法)以降低功耗而不背离本发明的一些方面的范围和精神。
相似地,虽然根据视频数据的处理提供了以上说明,但应该理解的是,可以用这些特征确定其他类型的信号数据(例如,音频)。
7、结论
在以上说明本发明的各种实施例的同时,应该理解的是,这些实施例仅通过实例而非限制性的方式提出。因此,不应该通过上述示例性实施例限制本发明的宽度和范围,但应该仅根据权利要求及其等同限定。
进一步的,以下摘要的目的是使得美国专利和商标局以及公众,特别是不熟悉专利或法律术语和措辞的本领域的科学家、工程师和从业者可以从本申请的技术公开的本质和性质的粗略描述中做出快速地决定。摘要不会以任何方式对本发明的范围进行限制。