对帧组的比特率控制

文档序号:1439827 发布日期:2020-02-14 浏览:28次 >En<

阅读说明:本技术 对帧组的比特率控制 (Bit rate control for groups of frames ) 是由 J·斯塔楚尔斯基 Z·菲左 于 2018-04-26 设计创作,主要内容包括:描述了用于对来自顺序的帧组系列的数据进行处理以实现所述系列中的特定帧组的目标平均处理比特率的系统和方法。在例子中,可以用来自特定帧组的若干个帧填充先行缓冲器电路,并且可以使用关于缓冲器中的所有帧的比特请求信息来确定对于先行缓冲器电路中的帧的比特分配。可以以先进先出的方式用流传输帧信息填充先行缓冲器电路,并且可以基于先行缓冲器电路中的帧位置并且进一步基于与先行缓冲器电路中的其他帧相关联的比特请求来对特定帧组中的每个帧执行比特分配处理。(Systems and methods are described for processing data from a sequential series of frame groups to achieve a target average processing bit rate for a particular frame group in the series. In an example, a forward buffer circuit may be filled with a number of frames from a particular group of frames, and bit request information for all frames in the buffer may be used to determine bit allocations for frames in the forward buffer circuit. The first-line buffer circuit may be filled with streaming frame information in a first-in-first-out manner, and the bit allocation process may be performed on each frame in the particular group of frames based on the frame position in the first-line buffer circuit and further based on bit requests associated with other frames in the first-line buffer circuit.)

对帧组的比特率控制

优先权声明

本专利申请要求2017年4月26日提交的美国临时专利申请No.62/490,165的优先权,该申请通过引用整体并入本文。

背景技术

可变比特率编解码器可以包括可对数据进行压缩、诸如以使得通过网络的信息传送的吞吐量能够更大并且可以对数据进行解压缩以供使用或进一步处理的装置、指令或计算机实现程序。在例子中,可变比特率编解码器可能不保证帧组上的指定比特率或平均比特率。在一些例子中,提供其他帧处理来将帧或比特包分割为更小的离散的部分,以使得这些部分可以适应指定的平均比特率目标,诸如对于给定的音频或视频段。然而,这样的封包可能是不可取的,因为它使处理负荷增大。

在一些例子中,可以使用比特贮存器来限制整体比特率波动。可以采用比特贮存器来约束每帧的比特分配的变化,诸如约束为一帧的比特有效载荷。然而,比特贮存器方法具有几个缺点。一个是不能保证满足帧组上的目标平均比特率。另一个是一个帧可能耗尽贮存器,然后,下一个帧可能接收到比充分地对该帧中的信息进行编码所需的比特少的比特。当较少的比特可用于对目前的信息进行编码时,当目前的信息的感知重要性大于目前的信息前面或后面的信息时,这可能是尤其有问题的。

发明内容

本发明人已经认识到,待解决的问题包括诸如为音频、视频或其他数据处理器或编解码器提供帧组上的指定比特率或平均比特率。在例子中,该问题可以包括在没有专用的比特贮存器的情况下保证指定的平均比特率。在例子中,该问题包括在没有关于整个帧组或更大数据包的内容的先验知识的情况下管理对连续地到达的、基于帧的数据进行编码的比特请求。

上述问题的解决方案可以包括或使用先行处理缓冲器或缓冲器电路,以接收与特定帧组(诸如第一帧组F1)中的帧对应的多个比特请求。对于特定帧组中的每个帧的相应比特请求可以包括各种约束,或者可以与各种约束相关联,诸如最大或最小比特率、相对重要性(例如,感知重要性)、或其他约束或特性。在例子中,来自第一帧组F1的第一帧集合可以填充先行处理缓冲器,并且与第一集合相关联的比特请求可以由处理器电路一起处理或分析,以基于约束来确定如何最佳地将可用的比特分配给先行处理缓冲器中的一个或多个帧。在例子中,处理器电路将比特分配给第一帧集合中的最早接收的帧,然后,以先进先出的方式更新先行处理缓冲器,以清除最早接收的帧并包括后来接收的帧。处理器然后可以对与更新的先行处理缓冲器对应的比特请求进行分析以将比特分配给更新的缓冲器中的一个或多个帧。在例子中,边界、帧计数或关于帧组的其他信息无需是事先已知的,并且在一些例子中可以在处理的过程中改变以实现指定的目标或平均比特率,诸如通过使用本文中所讨论的系统和方法。

在例子中,问题可以包括确定如何将音频或视频压缩应用于基于帧的音频或视频数据,同时使当音频或视频信息后来被提取或解压缩以供使用或进一步处理时的伪像或失真的感知最小化。本发明人已经认识到,该问题的解决方案可以包括考虑到人类听力或视觉的固有限制、并且基于这样的限制来调整编解码器比特分配,诸如同时满足目标或平均比特率约束。

本概述意在提供本专利申请的主题的总结。非意在提供本发明的排他性或穷举性的说明。包括详细描述是为了提供关于本专利申请的进一步的信息。

附图说明

在不一定按比例绘制的附图中,相似的数字可以描述不同视图中的类似组件。具有不同字母下标的相似数字可以表示类似的组件的不同实例。以举例的方式、而非限制的方式,附图概括性地例示了本文档中所讨论的各种实施例。

图1概括性地例示了可以包括或使用用于基于帧的数据的处理布置的系统的例子。

图2概况性地例示了包括n个帧的第一帧组F1的例子。

图3概括性地例示了第一帧组F1的例子和先行缓冲器电路的缓冲器实例。

图4概括性地例示了第一帧组F1的例子和先行缓冲器电路的后续缓冲器实例。

图5概括性地例示了第一帧组F1的例子和先行缓冲器电路的更后续的缓冲器实例。

图6概括性地例示了包括从处理第一帧组F1到处理第二帧组F2的过渡的开始的例子。

图7概括性地例示了包括相邻帧组之间的连续过渡的例子和第一帧组F1的最后的缓冲器实例。

图8概括性地例示了包括完成从第一帧组F1到第二帧组F2的过渡的例子。

图9概括性地例示了可以包括确定对于帧组中的不同帧的相应的比特分配的方法的例子。

图10是例示了可以被配置为执行本文中所讨论的方法中的一个或多个的机器的组件的框图。

具体实施方式

在以下包括用于对来自顺序的帧组系列的数据进行处理、诸如用于对音频、视频或其他数据信号进行编码或解码的系统、方法和装置的例子的描述中,参照附图,附图形成详细描述的一部分。附图以例示的方式示出了其中可以实施本文中所公开的发明的特定实施例。这些实施例在本文中一般被称为“例子”。这样的例子可以包括除了所示出或所描述的那些要素之外的要素。然而,本发明人还设想了其中只提供所示出或所描述的那些要素的例子。本发明人设想了使用所示出或所描述的那些要素(或其一个或多个方面)的任何组合或置换的例子,要么是针对特定例子(或其一个或多个方面),要么是针对本文中所示出或所描述的其他例子(或其一个或多个方面)。

具有可变比特率(VBR)的信号被用于音频、视频、电信、计算和其他信号处理中。与恒定比特率(CBR)信号相反,VBR信号可以在给定时间段或时段内改变比特或数据的量或数量。在例子中,VBR信号可以将相对较大的比特率分配给信号的更复杂的或信息量大的部分,并且可以将相对较小的比特率分配给不太复杂或不太必要的部分。然而,可能可取的是对于特定信号或文件保持指定的平均比特率(或比特率的平均范围)。使用可变比特率编码的格式的一些例子包括MP3、WMA和AAC音频文件格式、或MPEG-2、MPEG-4和Dirac视频文件格式。

使用VBR提供了优于CBR的几个优点。例如,通过VBR编码,可以为给定的数据段实现更好的质量与空间比。在VBR中,可用的比特可以被更灵活地或可变地分配,从而使得能够更准确地对声音或视频信息进行编码。例如,更少的比特可以被分配给需要不太高的分辨率的帧或段,更多的比特可以被分配给更关键的或可感知的帧或段。

然而,可变比特率处理并非没有其缺点。例如,VBR处理的编码可能比CBR更计算密集和时间密集。可变比特率处理在与流传输数据一起使用时(诸如当瞬时比特率超过通信路径的数据率时)可能引起各种问题。然而,这样的问题可以通过限制编码期间的瞬时比特率或最大比特率或者通过增大比特贮存器大小或缓冲器大小来缓解。

图1概括性地例示了可以包括或使用用于基于帧的数据的处理布置100的系统的例子。处理布置100可以被配置为对接收的数据进行处理以实现目标平均处理比特率。在例子中,处理布置100在第一数据输入110处接收基于帧的数据101,并且从第一数据输出140提供经编码的数据102。基于帧的数据101可以包括例如顺序的帧组系列。帧组可以表示各种种类的数据,诸如音频、视频、或可被离散化或分割为帧的其他数据或信号。在例子中,每个帧或每个帧组可以包括头部或元数据信息,头部或元数据信息可以包括或影响与特定帧(或帧组)的有效载荷相关联的约束。例如,约束可以包括最小比特率、最大或瞬时比特率、相对感知重要性的指示、或关于帧的有效载荷的其他类型的约束或限制。在例子中,与帧或帧组相关联的元数据可以包括强制性数据,该数据不能被压缩或移除,因此可以消耗最小比特率的一部分,给有效载荷留下更少的带宽。元数据本身在大小上是可变的,并且可以因帧而变化,或者可以在帧组之间变化。在例子中,基于帧的数据101包括音频和/或视频数据的流,诸如可以使用网络分发的音频和/或视频数据流。

在例子中,可以在先行缓冲器电路120中接收基于帧的数据101的至少一部分。先行缓冲器电路120可以包括任何数量的用于相同大小的帧或具有不同大小的帧的存储器位置。在例子中,基于帧的数据101包括一系列帧组,每个帧组可以具有相同或不同数量的帧。在例子中,用于先行缓冲器电路120中的离散的帧的存储器位置的数量少于特定帧组中的帧的数量。

先行缓冲器电路120可以耦合到处理器电路130。先行缓冲器电路120可以被配置为存储与先行缓冲器电路120中的帧相关联的比特请求信息,或者处理器电路130可以被配置为访问与先行缓冲器电路120中的帧相关联的比特请求信息。处理器电路130可以被进一步配置为将关于先行缓冲器电路120中的所有帧的比特请求信息一起进行分析以确定对于先行缓冲器电路120中的帧中的特定的一个帧的比特分配。在例子中,可以使用同一个处理器电路130或不同的处理器电路或装置来对其比特分配已被确定的帧中的一个特定帧进行编码或处理。也就是说,处理器电路130可以在第一数据输出140处提供对于特定帧的比特分配确定中的一个或多个,或者可以提供经编码的数据102,诸如可以包括该特定帧的经编码的或以其他方式处理的版本。在如本文中所描述的用于执行帧的存储和分析的处理布置100中可以包括或使用一个或多个其他的缓冲器电路、存储器电路或处理器电路。可以在没有其他信息或对于最终被分派处理或发送帧的任务的系统的任何约束的先验知识的情况下,提供与离散的帧相关联或对应的比特请求。处理器电路130可以被配置为调整或控制比特如何被分配(诸如在帧组上)以满足或维持指定的平均比特率或者满足其他约束。

图2-图8概括性地例示了包括使用处理布置100来对基于帧的数据101执行编码处理的例子。在例子中,基于帧的数据101包括可以顺序地到达第一数据输入110的各种帧组。基于帧的数据101的部分可以被存储在先行缓冲器电路120中,和/或可以被处理器电路130操作。在附图和整个本说明书中,帧组被命名为Fn,诸如F1、F2、F3等,其中,F1最早到达,F2在F1之后到达,F3在F2之后到达,依此类推。每个帧组包括若干个离散的帧Dj,并且离散的帧的特定数量在帧组之间可以变化。每个帧组Fn包括离散的帧Fn0至FnDj。尽管帧组Fn和离散的帧在本文中被概括性地讨论为连续地或以时间相关的方式到达,但是当基于帧的数据是一起、而不是连续地可获得(诸如在存储器电路或比特贮存器中一起可获得)时,本文中所讨论的各种编码方法和处理方法可以被类似地应用。

图2概括性地例示了包括n个帧的第一帧组F1的例子。在例子中,第一帧组F1包括离散的帧F10、F11、F12、…F1n。在该例子中,每个离散的帧与相应的比特请求RFn:0至RFn:Dj相关联或对应。在示出的例子中,各个比特请求可以是帧独有的,然而,在其他例子中,比特请求可以是不同地分布的。例如,与特定帧相关联的比特请求可以包括或提供关于相同或不同帧组中的多个其他的帧的比特请求信息。

图2的例子包括先行缓冲器电路120的第一缓冲器实例BF1:0。如本文中所使用的,缓冲器实例是指先行缓冲器电路120的状态,其中,先行缓冲器电路120中可用的特定数量的存储器位置被特定的帧占据或不占据。换句话说,第一缓冲器实例BF1:0是指当第一帧至第四帧F10、F11、F12和F13被存储在先行缓冲器电路120中或可供先行缓冲器电路120使用时的先行缓冲器电路120的状态。如果先行缓冲器电路120包括任何更少的帧或其他的帧,则不同的缓冲器实例将被指示。

在图2的例子中,为了便于例示本文中所描述的处理技术和帧处理技术,先行缓冲器电路120包括四个存储器位置。附加的或更少的存储器位置可以被类似地使用。在图2的例子中,先行缓冲器电路120中的四个存储器位置中的每个被占据。因此,先行缓冲器电路120可以被认为是满的,并且处理器电路130可以接收与先行缓冲器电路120中的帧对应的比特请求RF1:0至RF1:3。在图2至图8这几个附图中,请求被缩写为“REQ.”。基于几个比特请求RF1:0至RF1:3中的信息,处理器电路130可以确定如何在对应的帧F10、F11、F12和F13中的一个或多个之间分配可用的比特。在例子中,处理器电路130被配置为基于比特请求RF1:0至RF1:3中的信息来确定对于先行缓冲器电路120中的最早接收的帧(例如,在图2的例子中为帧F10)的比特分配。换句话说,处理器电路130可以使用与先行缓冲器电路120中的多个帧相关联的信息或比特请求来确定或提供对于先行缓冲器电路120中的一个特定帧的比特分配。确定的比特分配然后可以被应用,诸如通过使用相同或不同的处理器电路130来对该特定帧进行编码。

图3概括性地例示了第一帧组F1的例子和先行缓冲器电路120的后一个缓冲器实例BF1:1。在图3的例子中,帧F10被从先行缓冲器电路120清除,后一个缓冲器实例BF1:1包括帧F11至F14。也就是说,后一个缓冲器实例BF1:1中的最早接收的帧是帧F11。例子中的帧F10的表示包括指示帧F10已经被处理或编码的虚线边界。与帧F10对应的比特请求因此可以被丢弃以便对第一组F1中的进一步的或后来接收的帧进行处理或编码。在例子中,不是考虑将帧F10从先行缓冲器电路120清除,与先行缓冲器电路120对应的先行窗口而是可以被理解为一直沿着第一帧组F1中的帧顺序地移动。

在图3的例子中,基于几个比特请求RF1:1至RF1:4(诸如分别对应于帧F11至F14)中的信息,处理器电路130可以确定如何在对应的帧F11、F12、F13和F14中的一个或多个之间分配可用的比特。在例子中,处理器电路130被配置为确定对于目前在先行缓冲器电路120中的最早接收的帧(例如,在图3的例子中为帧F11)的比特分配,诸如基于与目前的缓冲器实例BF1:1中的帧对应的比特请求RF1:1至RF1:4中的信息。

图4概括性地例示了第一帧组F1的例子和先行缓冲器电路120的再下一个缓冲器实例BF1:2。在图4的例子中,帧F11被从先行缓冲器电路120清除(或者与先行缓冲器电路120对应的先行窗口被移动),再下一个缓冲器实例BF1:2包括帧F12至F15。也就是说,再下一个缓冲器实例BF1:2中的最早接收的帧是帧F12,再下一个缓冲器实例BF1:2中的最近接收的帧是帧F15。例子中的前面的帧F10和F11的表示包括指示帧F10和F11已经被处理或编码的虚线边界。与帧F10和F11对应的比特请求因此可以被丢弃以便对第一组F1中的进一步的或后来接收的帧进行处理或编码。

在图4的例子中,基于几个比特请求RF1:2至RF1:5(诸如分别对应于帧F12至F15)中的信息,处理器电路130可以确定如何在对应的帧F12、F13、F14和F15中的一个或多个之间分配可用的比特。在例子中,处理器电路130被配置为确定对于目前在先行缓冲器电路120中的最早接收的帧(例如,在图4的例子中为帧F12)的比特分配,诸如基于与目前的缓冲器实例BF1:2中的帧对应的比特请求RF1:2至RF1:5中的信息。一旦比特分配被确定,相同或不同的处理器电路130就可以根据确定的分配来对最早接收的帧F12进行编码。

图5概括性地例示了第一帧组F1的例子和先行缓冲器电路120的更后面的缓冲器实例BF1:3。也就是说,对于第一帧组F1包括n个帧的情况,图5的例子对应于先行缓冲器电路120完全被第一帧组F1中的最后四个帧占据。在图5的例子中,帧F1n-4被从先行缓冲器电路120清除(或者与先行缓冲器电路120对应的先行窗口被移动),更后面的缓冲器实例BF1:3包括帧F1n-3至F1n。也就是说,后面的缓冲器实例BF1:n-3中的最早接收的帧是帧F1n-3,后面的缓冲器实例BF1:n-3中的最近接收的帧是帧F1n,在这种情况下,帧F1n对应于第一帧组F1中的最后一个帧。例子中的前面的帧F10和F1n-4的表示包括指示这些帧已经被处理或编码的虚线边界,与帧F10和F1n-4对应的比特请求因此可以被丢弃以便对第一组F1中的进一步的帧进行处理或编码。

基于几个比特请求RF1:n-3至RF1:n(诸如分别对应于帧F1n-3至F1n)中的信息,处理器电路130可以确定如何在对应的帧F1n-3、F1n-2、F1n-1和F1n中的一个或多个之间分配可用的比特。在例子中,处理器电路130被配置为确定对于目前在先行缓冲器电路120中的最早接收的帧(例如,在图5的例子中为帧F1n-3)的比特分配,诸如基于与目前的缓冲器实例BF1:n-3中的帧对应的比特请求RF1:n-3至RF1:n中的信息。一旦比特分配被确定,相同的或不同的处理器电路130就可以根据确定的分配来对最早接收的帧F1n-3进行编码。

接着图5的例子,随着基于帧的数据101继续流到第一数据输入110,先行缓冲器电路120和处理器电路130可以过渡到分别存储和处理新的或后续的帧组的一部分,诸如可以具有平均比特率或不同于第一帧组F1的其他约束。在图5的例子中,第二帧组F2在第一帧组F1的后面。第二帧组F2包括m个帧,这m个帧被命名为F20至F2m,m和n可以是但不限于相同的值。第二帧组F2中的帧F20至F2m可以具有各自的对应的比特请求或约束,这些比特请求或约束被命名为RF2:0至RF2:m。在例子中,附属于第一帧组F1或第二帧组F2中的一个的或与之关联的同步帧、头部信息或其他元数据可以指示过渡到先行缓冲器电路120和/或处理器电路130。

图6概括性地例示了包括从处理第一帧组F1到处理第二帧组F2的过渡的开始的例子。在图6的例子中,先行缓冲器电路120的更后面的缓冲器实例BF1:n-2包括比可以以其他方式存储在先行缓冲器电路120中的帧少的帧。也就是说,对于第一帧组F1包括n个帧的情况,图6的例子对应于先行缓冲器电路120被第一帧组F1中的三个、而不是四个帧占据。在图6的例子中,帧F1n-3被从先行缓冲器电路120清除(或者与先行缓冲器电路120对应的先行窗口被移动),更后面的缓冲器实例BF1:n-2包括帧F1n-2至F1n。也就是说,后面的缓冲器实例BF1:n-2中的最早接收的帧是帧F1n-2,后面的缓冲器实例BF1:n-2中的最近接收的帧是帧F1n,在这种情况下,帧F1n对应于第一帧组F1中的最后一个帧。例子中的前面的帧F10和F1n-3的表示包括指示这些帧已经被处理或编码的虚线边界,与帧F10和F1n-3对应的比特请求因此可以被丢弃以便对第一组F1中的进一步的帧进行处理或编码。

在图6的例子中,基于几个比特请求RF1:n-2至RF1:n(诸如分别对应于帧F1n-2至F1n)中的信息,处理器电路130可以确定如何在对应的帧F1n-2、F1n-1和F1n中的一个或多个之间分配可用的比特。也就是说,当先行缓冲器电路120不太满时,处理器电路130可以确定对于所述帧中的一个或多个的分配。在例子中,处理器电路130被配置为确定对于目前在先行缓冲器电路120中的最早接收的帧(例如,在图6的例子中为帧F1n-2)的比特分配,诸如基于与目前的缓冲器实例BF1:n-2中的帧相对应的比特请求RF1:n-2至RF1:n中的信息。一旦比特分配被确定,相同或不同的处理器电路130就可以根据确定的分配来对最早接收的帧F1n-2进行编码。

图6还例示了了来自第二帧组F2的帧可以如何填充另一个缓冲器实例BF2:fill_0。缓冲器实例BF1:n-2和缓冲器实例BF2:fill_0可以对应于同一个先行缓冲器电路120的不同部分,或者可以对应于不同的分立的缓冲器电路。然而,帧被分配在缓冲器之间,处理器电路130可以被配置为分别对所指示的组中的每个组的帧进行处理。也就是说,当接收到同步帧、元数据、头部数据、或帧组之间的过渡的其他的接收的指示时,可以使处理器电路130对来自不同组的比特请求和帧数据相互独立地进行处理。

在图6的例子中,缓冲器实例BF2:fill_0包括单个帧F20,帧F20对应于第二帧组F2中的第一个帧或最早接收的帧。在例子中,处理器电路130不对来自第一个帧F20的信息进行处理或信息,因为处理器电路130没有可用于明智地确定比特率(诸如可以被应用于第二帧组F2或者对第二帧组F2强制执行的比特率或平均比特率)的足够量的比特请求信息。处理器电路130可以被配置为等待对第一个帧F20进行处理,至少直到先行缓冲器电路120被填充来自第二帧组F2的指定的最少数量的帧为止。在图6的例子中,指定的最少数量的帧可以是四个帧,然而,更少的或附加的帧可以被指定。尽管对于图2-图8的例子中的第一帧组F1和第二帧组F2的已示出的例子中的每个例子来说,指定的最少数量的帧是四个,但是对于不同帧组可以使用不同的最少数量的帧。

接着图6的例子,随着基于帧的数据101继续流到第一数据输入110,先行缓冲器电路120和处理器电路130可以继续在第一帧组F1和第二帧组F2之间过渡。图7概括性地例示了包括相邻帧组之间的连续过渡的例子和第一帧组F1的最后一个缓冲器实例。在图7的例子中,先行缓冲器电路120的更后面的缓冲器实例BF1:n包括比可以以其他方式存储在先行缓冲器电路120中的帧少的帧。也就是说,对于第一帧组F1包括n个帧的情况,图7的例子对应于先行缓冲器电路120仅被第一帧组F1中的最后一个帧F1n、而不是四个帧占据。在图7的例子中,帧F1n前面的所有帧都被从先行缓冲器电路120清除(或者与先行缓冲器电路120对应的先行窗口被移动),更后面的缓冲器实例BF1:n因此仅包括最后一个帧F1n。如早先的例子中那样,例子中的前面的帧F10和F1n-1的表示包括指示这些帧已经被处理或编码的虚线边界,与帧F10和F1n1对应的比特请求因此可以被丢弃以便对第一组F1中的最后一个帧F1n进行处理或编码。

在例子中,处理器电路130可以将用于第一帧组F1的任何剩余的比特分配给最后一个帧F1n。在一些例子中,处理器电路130可以考虑或使用与最后一个帧F1n相对应的比特请求RF1:n中的信息来影响剩余的比特对于最后一个帧F1n的分配。一旦比特分配被确定,相同或不同的处理器电路130就可以根据确定的分配来对最后一个帧F1n进行编码。

图7还例示了来自第二帧组F2的帧可以如何继续填充另一个缓冲器实例BF2:fill_2。如上面在图6的例子中类似地解释的,缓冲器实例BF1:n和缓冲器实例BF2:fill_2可以对应于同一个先行缓冲器电路120的不同部分,或者可以对应于不同的分立的缓冲器电路。不管帧在缓冲器之间如何分配,处理器电路130都可以被配置为分别对所指示的组中的每个组的帧进行处理。

在图7的例子中,缓冲器实例BF2:fill_2包括指定的最少数量的帧中的一些、而不是所有来开始对帧中的数据进行处理或编码。例如,缓冲器实例BF2:fill_2包括指定的最少的四个帧中的三个,F20至F22,其中,帧F20对应于第二帧组F2中的第一个帧或最早接收的帧。在例子中,处理器电路130不对来自先行缓冲器电路120中的头三个帧的信息进行处理或编码,因为处理器电路130没有可用于明智地确定比特率(诸如可以被应用于至少第二帧组F2的最早到达的帧或者至少对第二帧组F2的最早到达的帧强制执行的比特率或平均比特率)的足够量的比特请求信息。

接着图7的例子,随着基于帧的数据101继续流到第一数据输入110,先行缓冲器电路120和处理器电路130可以继续在第一帧组F1和第二帧组F2之间过渡。图8概括性地例示了包括完成从第一帧组F1到第二帧组F2的过渡的例子。在图8的例子中,缓冲器实例BF1:empty被例示为指示来自第一帧组F1的帧都不被包括在先行缓冲器电路120中。在图8的例子中,来自第一帧组F1的所有帧都被从先行缓冲器电路120清除(或者与先行缓冲器电路120对应的先行窗口被移动),下一个缓冲器实例对应于后一个帧组。类似于早先的例子,该图中的处理后的帧F10至F1n的表示包括指示这些帧已经被处理或编码的虚线边界,与帧F10和F1n对应的比特请求因此可以被丢弃以便对进一步的帧进行处理或编码。

在图8的例子中,第二帧组F2包括m个帧,并且头四个帧填充先行缓冲器电路120的第一个缓冲器实例BF2:0。换句话说,第一个缓冲器实例BF2:0是指当第二帧组F2的第一个帧至第四个帧F20、F21、F22和F23被存储在先行缓冲器电路120或者可供先行缓冲器电路120使用时的先行缓冲器电路120的状态。

在图8的例子中,为了便于例示本文中所描述的处理技术和帧处理技术,先行缓冲器电路120包括四个存储器位置。更多的或更少的存储器位置可以被类似地使用。在图8的例子中,先行缓冲器电路120中的四个存储器位置中的每个被占据。因此,先行缓冲器电路120可以被认为是满的,并且处理器电路130可以接收与先行缓冲器电路120中的帧对应的比特请求RF2:0至RF2:3。基于几个比特请求RF2:0至RF2:3中的信息,处理器电路130可以确定如何在对应的帧F20、F21、F22和F23中的一个或多个之间分配可用的比特。在例子中,处理器电路130被配置为确定对于先行缓冲器电路120中存在的最早接收的帧F20的比特分配,诸如基于比特请求RF2:0至RF2:3中的信息。换句话说,处理器电路130可以使用与先行缓冲器电路120中的多个帧中的每个帧相关联的信息或比特请求来确定或提供对于先行缓冲器电路120中的特定帧(例如,最早接收的帧)的比特分配。

图9概括性地例示了可以包括确定对于帧组中的不同帧的相应的比特分配的方法900的例子。方法900可以使用来自图1的例子的处理布置100的一个或多个组件来执行,或者使用来自图10的例子的各种硬件来执行。在方法900的例子中,在操作910,先行缓冲器电路120可以接收诸如来自第一帧组F1的B个帧。在例子中,第一帧组包括诸如对应于大约一秒的音频数据的大约500个到100个帧,并且先行缓冲器电路120被配置为接收与大约20个帧对应的信息。帧组和先行缓冲器电路120中的可用的存储器位置的示例大小仅仅是为了例示而提供的,更少的或附加的帧或存储器位置可以被类似地使用。然而,一般来说,给定帧组中的帧的数量超过先行缓冲器电路120中的可用的存储器位置的数量。遵循这里使用的约定,第一帧组F1中的帧可以被指定为F10至F1n。在例子中,在操作910,先行处理缓冲器可以包括例如帧F10至F1B。其他帧可以被类似地使用。

在例子900中,在920,处理器电路130可以被配置为确定对于先行处理缓冲器或先行缓冲器电路120中的第一个缓冲帧F10的比特分配。在例子中,处理器电路130可以被配置为接收关于先行处理缓冲器中的帧(包括帧F10至F1B)中的每个的比特请求信息。处理器电路139然后可以基于关于若干个比特请求的信息来确定对于最早的帧F10的适当的比特分配。处理器电路130可以基于最早的帧F10中的信息的相对感知重要性以及最早的帧F10所属的帧组的目标平均比特率等来确定比特分配。也就是说,处理器电路130可以被配置为通过分配或保留可用于对最早的帧F10进行编码的比特来维持比特预算。在操作930,可以使用用于执行比特分配的相同或不同的处理器电路来基于在操作920确定的比特分配对最早的帧F10进行编码。

在操作940,例子可以包括更新先行处理缓冲器。例如,先行处理缓冲器中的信息可以被以先进先出的方式协调。也就是说,最早接收的帧(诸如F10)可以被清除,后一个帧(诸如F1B+1)可以代替清除的帧。在帧交换之后,先行处理缓冲器可以再次包括B个帧,这B个帧包括第二个帧F11至F1B+1。在例子中,只有一个帧在每个间隔被清除,然而,本发明人想到了多个帧可以接收比特分配确定并且可以在单个间隔内被从缓冲器交换的其他实施例。

在操作950,例子可以包括确定第二个比特分配,诸如对于先行处理缓冲器中的第二个帧F11。也就是说,在950,处理器电路130可以被配置为确定对于先行处理缓冲器或先行缓冲器电路120的第二个缓冲帧F11的比特分配。在例子中,处理器电路130可以被配置为接收关于先行处理缓冲器中的帧(包括帧F11至F1B+1)中的每个帧的相应的比特请求信息,并且处理器电路130然后可以基于关于这几个比特请求的信息来确定对于第二个帧F11(例如,对应于缓冲器中目前的最早接收的帧)的适当的比特分配。在操作960,可以使用用于在操作950执行比特分配确定的相同或不同的处理器电路来基于在操作950确定的比特分配对第二个帧F11进行编码。

以下的这个讨论提供了用于可变比特率缓冲器模型中的目标比特率保证的构想。该讨论证明了存在满足各种约束、同时实现指定的比特率的每一帧的比特分布。还包括计算一个这样的分布(诸如考虑了来自编码器的比特请求)的算法。在以下整个讨论中,使用以下记号:

R 目标比特率

Rmax 最大瞬时比特率

D 编码器先行

n 帧组(GoF)内的N个帧上的索引

S(n) 比特贮存器大小

H(n) 开销比特(头部加上元数据)

M(n) 每一帧的所请求的最少比特

B(n) 分派给帧的比特

目标速率保证

给定满足以下关系的R、Rmax、H(n)≥0和M(n)≥0:

Rmax≥R≥H(n)+M(n)

存在如下的比特分布B(n):

Rmax≥B(n)+M(n)

该比特分布B(n)保证了N个帧的集合上的目标速率R。就每一个新的帧n=1…N而言,可以通过添加R个比特来更新比特贮存器,所以贮存器比特流入Is为:

Is=NR

并且N个帧上的贮存器比特流出Os为:

Figure BDA0002333876510000151

在例子中,Is=Os,即,如所期望的,N个帧上的平均比特率R。

第一个编码的帧(n=1)

在例子中,VBR模型利用编码器先行(例如,先行缓冲器电路120中的信息)来对D个帧的集合进行操作。比特贮存器的大小最初可以被计算为:

Figure BDA0002333876510000152

因为Rmax≥R并且R-H(k)≥M(k),所以

Figure BDA0002333876510000161

在例子中,存在如下的b1(k)的集合,使得Rmax≥b1(k)≥M(k)并且

Figure BDA0002333876510000162

为了例示这个,如果

S(1)=DRmax

则设置b1(k)=Rmax,或者如果

Figure BDA0002333876510000163

则设置b1(k)=M(k),或者否则将b1(k)设置为中间的值。在例子中,对于任何S(n),n>1,存在如下的集合bn(k),使得:

Figure BDA0002333876510000164

约束条件为:

Rmax≥bn(k)≥M(n+k-1)

分派给被编码的帧n的比特可以被指定为:

B(n)=bn(1)

该关系满足初始约束Rmax≥B(n)≥M(n)。

帧组内的帧(n>1)

对于给定帧组内的帧,S(n)可以被指定为:

S(n)=S(n-1)-B(n-1)+R-H(n+D-1)

这反映了编码器所用的B(n-1)个比特并且加上用于新帧的R-H(n+D-1)个比特。

因为

Figure BDA0002333876510000171

所以存在

Figure BDA0002333876510000172

对于Rmax≥bn(k)≥M(n+k-1),所以

Figure BDA0002333876510000173

存在

Rmax≥R-H(n+D-1)≥M(n+D-1)

因此

Figure BDA0002333876510000174

因此存在如下的bn(k),使得

并且Rmax≥bn(k)≥M(n+k-1)。

帧组结束(n>N-D+1)

当先行缓冲器大小D超过帧组的末尾时,S(n)可以被提供为:

S(n)=S(n-1)–B(n–1)

也就是说,在帧组的末尾,R-H(n+D-1)不被添加,因为允许的先行不能超过帧组。因此,

Figure BDA0002333876510000176

并且

Figure BDA0002333876510000177

其中,Rmax≥bn(k)≥M(n+k-1)。

平均比特率

注意到,B(n)=bn(1),S(n)=B(n),并且S(N+1)=S(N)-B(N)=0。如果对添加到比特贮存器的和从比特贮存器减去的所有分量、从S(1)至S(N+1)求和,则

Figure BDA0002333876510000181

这给出了

Figure BDA0002333876510000182

并且

Is=Os

这导致如所期望的帧组平均比特率R。

比特分布

帧组目标速率R的保证通过更新比特贮存器而被示出:

Figure BDA0002333876510000183

S(n)=S(n–1)–B(n–1)+R–H(n+D–1) 对于n≤N–D+1

S(n)=S(n–1)-B(n–1) 对于n≤N

并且设置

B(n)=bn(1)

其中,

Figure BDA0002333876510000184

的约束条件为Rmax≥bn(k)≥M(n+k–1)

使得,如所需要的,

Rmax≥B(n)≥M(n)

可以如下确定bn(k)的集合。B(n)可以被推导为使得值反映某些编码器指定的值V(n)(其可以被解释为编码器“比特请求”)的相对分布。在例子中,可以使用以下操作来获得B(n),n=1…N:

将初始bn(k),k=1…min(D,N-n+l)设置为

Figure BDA0002333876510000191

其中,

Figure BDA0002333876510000192

这使bn(k)等于规范化值V(n+k-1),以使得

Figure BDA0002333876510000193

当施加Rmax和M(n)约束时:

bn(k)=min(Rmax,bn(k))

bn(k)=max(M(n+k–1),bn(k))

并且可以相对于S(n)确定比特上冲或下冲:

Figure BDA0002333876510000194

在例子中,迭代地向bn(k)添加(或移除)单个比特,直到Δb=0,诸如在k上的圆形循环中。对于下式成立的那些bn(k),添加比特:

Rmax>bn(k)

或者对于下式成立的那些bn(k),移除比特:

bn(k)>M(n+k–1)

该处理被保证收敛,因为,如前面的章节中所示,对于每一个n,存在如下的集合bn(k),使得

其约束条件为Rmax≥bn(k)≥M(n+k-1)。最后,B(n)=bn(1),并且剩余的值bn(k),k>1可以被丢弃(这些可以在下一个帧中被重新计算为V(k)的经更新的范围上的bn+1(k))。

仿真

执行仿真来例示如何执行所述处理、同时当在帧组之间切换或过渡时维持恒定的D个帧的先行。为了实现过渡,当D个先行帧跨越帧组边界时,在过渡区域期间维持贮存器大小S0(n)和S1(n)的两个值。

在例子中,仿真可以包括被配置为使用比最初分派给帧n的比特少的比特(B(n)≥Benc(n))的编码器,并且比特贮存器S(n)可以用实际上使用的比特的值来更新,以使得按照设计不被使用的比特变为新的bn(k)比特分布的一部分。在这种情况下,

最后,R≥Renc,其中,Renc是有效的平均比特率。因为主要约束是不超过目标比特率,所以满足要求。

在例子中,比以前多的比特可以被分派给bn(1)。在例子中,如果可能,比特可以被从先行帧“借用”:

Figure BDA0002333876510000203

其中,BΔ指定被允许借用的最大数量的比特。经验证,这样的借用不会导致超过最大瞬时比特率bn(1)=min(Rmax,bn(1))。在该例子中,可以维持对于Rmax≥bn(k)≥M(n+k-1)的要求。

各种系统和机器可以被配置为执行或实现本文中所描述的信号处理或者帧存储或帧处理任务中的一个或多个。例如,比特请求分析、比特分配和编码处理模块或处理器电路或者其他的模块或处理中的任何一个或多个可以使用通用机器来实现,或者使用执行各种处理任务(诸如使用从有形的、非暂行性的、处理器可读的介质检索的指令)的专用的内置机器来实现。

图10是例示了根据一些实施例的机器1000的组件的框图,机器能够从机器可读介质(例如,机器可读存储介质)读取指令1016,并且执行本文中所讨论的任何一个或多个方法。具体地说,图10以计算机系统的示例形式示出机器1000的图解表示,在该计算机系统内,用于使机器1000执行本文中所讨论的任何一个或多个方法的指令1016(例如,软件、程序、应用、小应用、应用或其他可执行代码)可以被执行。例如,指令1016可以实现图1的模块或电路或组件中的一个或多个,诸如可以被配置为实现图2-图9的例子中例示的处理或编码。指令1016可以将一般的、非程控的机器1000变换为被编程为以所描述的方式(例如,作为音频处理器电路)实现所描述的和例示的功能的特定机器。在替代实施例中,机器1000作为独立装置进行操作,或者可以耦合(例如,联网)到其他机器。在联网部署中,机器1000可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。

机器1000可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统或系统组件、蜂窝电话、智能电话、移动装置、可穿戴装置(例如,智能手表)、智能家庭装置(例如,智能电器)、其他智能装置、web电器、网络路由器、网络交换机、网络桥接器、耳机驱动器、或能够顺序地或以其他方式执行指定机器1000将采取的动作的指令1016的任何机器。此外,虽然仅例示了一个机器1000,但是术语“机器”还应被看作包括单个地或联合地执行指令1016以执行本文中所讨论的任何一个或多个方法的机器1000的类集。

机器1000可以包括或使用处理器1010,诸如包括音频处理器电路、非暂时性存储器/储存器1030以及I/O组件1050,这些可以被配置为诸如经由总线1002相互通信。在示例实施例中,处理器1010(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC、射频集成电路(RFIC)、另一处理器、或它们的任何合适的组合)可以包括,例如,诸如可以执行指令1016的处理器1012和处理器1014之类的电路。术语“处理器”意图包括多核处理器1012、1014,该多核处理器可以包括可以同时执行指令1016的两个或更多个独立的处理器1012、1014(有时被称为“核”)。尽管图10示出了多个处理器1010,但是机器1000可以包括具有单个核的单个处理器1012、1014、具有多个核的单个处理器1012、1014(例如,多核处理器1012、1014)、多个具有单个核的处理器1012、1014、多个具有多个核的处理器1012、1014、或它们的任何组合,其中,处理器中的任何一个或多个可以包括被配置为对音频和/或视频信号信息或其他数据进行编码的电路。

存储器/储存器1030可以包括存储器1032(诸如主存储器电路、或其他存储器存储电路)和存储单元1036,这二者是处理器1010诸如经由总线1002可访问的。存储单元1036和存储器1032存储实施本文中所描述的任何一个或多个方法或功能的指令1016。在机器1000执行指令1016期间,指令1016还可以完全地或部分地驻留在存储器1032内、存储单元1036内、处理器1010中的至少一个内(例如,处理器1012、1014的高速缓存存储器内)、或它们的任何合适的组合内。因此,存储器1032、存储单元1036和处理器1010的存储器是机器可读介质的例子。在例子中,存储器/储存器1030包括先行缓冲器电路120或它们的一个或多个实例。

如本文中所使用的,“机器可读介质”意指能够暂时性地或永久地存储指令1016和数据的装置,并且可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲器存储器、闪存、光学介质、磁性介质、高速缓存存储器、其他类型的储存器(例如,可擦可编程只读存储器(EEPROM))、和/或它们的任何合适的这。术语“机器可读介质”应被看作包括能够存储指令1016的单个介质或多个介质(例如,集中式或分布式数据库、或相关联的高速缓存和服务器)。术语“机器可读介质”还应被看作包括能够存储供机器(例如,机器1000)执行的指令(例如,指令1016)的任何介质、或多个介质的组合,以使得指令1016在被机器1000的一个或多个处理器(例如,处理器1010)执行时使机器1000执行本文中所描述的任何一个或多个方法。因此,“机器可读介质”是指单个存储设备或装置、以及包括多个存储设备或装置的“基于云的”存储系统或存储网络。术语“机器可读介质”不包括信号本身。

I/O组件1050可以包括接收输入、提供输出、生成输出、发送信息、交换信息、捕捉测量等的各种组件。特定机器1000中包括的具体的I/O组件1050将取决于机器1000的类型。例如,便携式机器(诸如移动电话)将有可能包括触摸输入装置或其他这样的输入机构,而无头服务器机器将有可能不包括这样的触摸输入装置。将意识到,I/O组件1050可以包括图10中未示出的许多其他的组件。I/O组件1050仅仅是为了使以下讨论简化而按功能性分组的,并且分组绝不是限制。在各种示例实施例中,I/O组件1050可以包括输出组件1052和输入组件1054。输出组件1052可以包括视觉组件(例如,显示器,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪、阴极射线管(CRT))、声学组件(例如,扩音器)、触觉组件(例如,振动电机、电阻机构)、其他信号发生器等。输入组件1054可以包括字母数字输入组件(例如,键盘、被配置为接收字母数字输入的触摸屏、光学照相键盘、或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器、或其他指点仪器)、触知输入组件(例如,物理按钮、提供触摸的位置和/或力或或触摸手势的触摸屏、或其他触知输入组件)、音频输入组件(例如,麦克风)等。

在进一步的示例实施例中,在各种各样的其他组件之中,I/O组件1050可以包括生物计量组件1056、运动组件1058、环境组件1060、或位置组件1062。例如,生物计量组件1056可以包括检测表达(例如,手的表达、面部表情、嗓音表达、身体手势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别、或基于脑电图的识别)等的组件,这些组件诸如可以影响收听者特定的或环境特定的滤波器的包括、使用或选择,可以影响例如特定的帧或帧组中的数据的感知重要性。运动组件1058可以包括加速度传感器组件(例如,加速计)、引力传感器组件、旋转传感器组件(例如,陀螺仪)等,这些诸如可以用于跟踪收听者的位置的变化,诸如可以由处理器在确定如何对特定的帧数据进行编码时进一步考虑。环境组件1060可以包括例如照明传感器组件(例如,光度计)、温度传感器组件(例如,检测周围温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如,气压计)、声学传感器组件(例如,检测混响衰落时间(诸如针对一个或多个频率或频带)的一个或多个麦克风)、接近传感器或房间体积感测组件(例如,检测附近的物体的红外线传感器)、气体传感器(例如,为了安全检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)、或可以提供与周围物理环境相对应的指示、测量或信号的其他组件。位置组件1062可以包括地点传感器组件(例如,全球定位系统(GPS)接收器组件)、海拔传感器组件(例如,检测从其可以推导海拔的空气压力的高度计或气压计)、方位传感器组件(例如,磁强计)等。

通信可以使用各种各样的技术来实现。I/O组件1050可以包括通信组件1064,这些通信组件1064可操作为分别经由耦合1082和耦合1072将机器1000耦合到网络1080或装置1070。例如,通信组件1064可以包括网络接口组件或与网络1080通过接合的其他合适的设备。在进一步的例子中,通信组件1064可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(NFC)组件、组件(例如,

Figure BDA0002333876510000242

Low Energy)、

Figure BDA0002333876510000243

组件、以及经由其他模态提供通信的其他通信组件。装置1070可以是另一机器或各种***设备中的任何一个(例如,经由USB耦合的***设备)。

而且,通信组件1064可以检测标识符,或者包括可操作为检测标识符的组件。例如,通信组件1064可以包括射频识别(RFID)标签读取器组件、NFC智能标签检测组件、光学读取器组件(例如,检测一维条形码(诸如通用产品(UPC)条形码)、多维条形码(诸如快速响应(QR)码、Aztec码、Data Matrix、Dataglyph、MaxiCode、PDF49、Ultra Code、UCC RSS-2D条形码和其他光学代码)的光学传感器)、或声学检测组件(例如,识别加标签的音频信号的麦克风)。另外,可以经由通信组件1064推导各种信息,诸如经由互联网协议(IP)地理位置推导位置,经由

Figure BDA0002333876510000251

信号三角测量推导位置,经由检测可以指示特定位置的NFC信标信号推导位置,等等。这样的标识符可以用于确定关于参考或局部脉冲响应、参考或局部环境特性、或收听者特定的特性中的一个或多个的信息。

在各种示例实施例中,网络1080的一个或多个部分(诸如可以用于发送已编码的帧数据或待编码的帧数据)可以是自组织网络、内联网、外联网、虚拟私有网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、

Figure BDA0002333876510000252

网络、另一类型的网络、或两个或更多个这样的网络的组合。例如,网络1080或网络1080的一部分可以包括无线或蜂窝网络,并且耦合1082可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接、或另一类型的蜂窝或无线耦合。在该例子中,耦合1082可以实现各种类型的数据传送技术中的任何一种,诸如单载波无线电传输技术(1xRTT)、用于GSM演进的增强数据速率(EDGE)技术、第三代合作伙伴计划(3GPP)(包括3G)、***无线(4G)网络、通用移动电信系统(UMTS)、高速分组访问(HSPA)、微波接入全球互操作(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他数据传送技术、其他长距离协议、或其他数据传送技术。

指令1016可以通过使用经由网络接口设备(例如,通信组件1064中包括的网络接口组件)的传输介质以及使用若干众所周知的传送协议(例如,超文本传送协议(HTTP))中的任何一个、在网络1080上被发送或接收。类似地,指令1016可以通过使用经由与设备1070的耦合1072(例如,对等耦合)的传输介质而被发送或接收。术语“传输介质”应被看作包括能够存储、编码或承载用于供机器1000执行的指令1016的任何有形介质,并且包括促进这种软件的通信的数字或模拟通信信号或其他有形介质。

本文中所讨论的构思和例子的许多变型对于相关领域的技术人员将是清楚的。例如,取决于实施例,本文中所描述的任何方法、处理或算法的某些动作、事件或功能可以按不同的顺序执行,可以被添加、被合并或者被省略(以使得并不是所有描述的动作或事件都是实施各种方法、处理或算法所必要的)。而且,在一些实施例中,诸如通过多线程处理、中断处理、或多个处理器或处理器核,或者在其他并行架构上,可以同时而非顺序地执行动作或事件。另外,不同的任务或处理可以由可以一起运行的不同的机器和计算系统执行。

与本文中所公开的实施例结合描述的各种说明性逻辑块、模块、方法以及算法处理和顺序可以被实现为电子硬件、计算机软件、或这二者的组合。为了例示硬件和软件的这种可互换性,各种组件、块、模块和处理动作在一些情况下一般是就它们的功能性描述的。取决于特定应用和施加于整个系统上的设计约束,这样的功能性是被实现为硬件或软件。所描述的功能性因此可以针对特定的应用以不同的方式实现,但是这样的实现决策不应被解释为引起偏离本文档的范围。本文中所描述的比特率保证处理、方法和技术的实施例在诸如上面在图10的讨论中描述的许多类型的通用或专用计算系统环境或配置内是具有操作性的。

本发明的各种方面可以被独立地使用或者被一起使用。例如,方面1可以包括或使用主题(诸如用于执行动作的装置、系统、设备、方法、手段、或包括当被设备执行时可以使设备执行动作的指令的设备可读介质),诸如可以包括或使用一种用于对来自顺序的帧组系列的数据进行处理以实现所述系列中的特定帧组的目标平均处理比特率的方法,所述系列包括第一帧组F1至最后一个帧组Fj,其中,每个帧组包括Dj个帧。在方面1中,所述方法可以包括:在先行处理缓冲器中接收第一帧组F1的B1个帧,包括第一缓冲帧F10至帧F1B1-1,其中,B1大于1,并且使用处理器电路来基于与先行处理缓冲器中的接收的B1个帧对应的一个或多个比特分配请求确定对于第一缓冲帧F10的第一比特分配。在例子中,方面1可以包括:在先行处理缓冲器中接收第一帧组F1的将被编码的最后一个帧F1D1-1,并且使用处理器电路基于少于B1个的比特分配请求来确定对于最后一个帧F1D1-1的后续比特分配。

方面2可以包括或使用方面1的主题,或者可以可选地与方面1的主题组合,以可选地包括:确定对于最后一个帧F1D1-1前面的一个或多个其他的帧的比特分配,并然后从先行处理缓冲器删掉除最后一个帧F1D1-1之外的帧。在方面2中,确定对于最后一个帧F1D1-1的后续比特分配包括使用仅与最后一个帧F1D1-1对应的比特分配请求。其他的比特分配请求信息可以被类似地使用,诸如适用于最后一个帧F1D1-1所属的特定帧组的分配信息。

方面3可以包括或使用方面1或2之一或它们的任何组合的主题,或者可以可选地与方面1或2之一或它们的任何组合的主题组合,以可选地包括:使用关于与先行处理缓冲器中的接收的B1个帧对应的B1个比特分配请求中的每个比特分配请求的信息来确定对于第一缓冲帧F10的第一比特分配。

方面4可以包括或使用方面1至3之一或它们的任何组合的主题,或者可以可选地与方面1至3之一或它们的任何组合的主题组合,以可选地包括:使用处理器电路来使用第一比特分配对第一缓冲帧F10进行编码。

方面5可以包括或使用方面1至3之一或它们的任何组合的主题,或者可以可选地与方面1至3之一或它们的任何组合的主题组合,以可选地包括:将所确定的对于第一缓冲帧F10的第一比特分配从处理器电路传送到编码器电路,并且使用编码器电路来利用第一比特分配对第一缓冲帧F10进行编码。

方面6可以包括或使用方面1的主题,或者可以可选地与方面1的主题组合,以可选地包括:将所确定的对于最后一个帧F1D1-1的后续比特分配从处理器电路传送到不同的编码器电路,并且使用不同的编码器电路来利用后续比特分配对最后一个帧F1D1-1进行编码。

方面7可以包括或使用方面1至6之一或它们的任何组合的主题,或者可以可选地与方面1至6之一或它们的任何组合的主题组合,以可选地包括:在先行处理缓冲器中接收第一帧组F1的B1个帧包括从第一帧组F1接收顺序的帧。

方面8可以包括或使用方面1至7之一或它们的任何组合的主题,或者可以可选地与方面1至7之一或它们的任何组合的主题组合,以可选地包括:在先行处理缓冲器中接收第一帧组F1的B1个帧包括接收对于B1个接收的帧的B1个相应的比特分配请求。

方面9可以包括或使用方面1至8之一或它们的任何组合的主题,或者可以可选地与方面1至8之一或它们的任何组合的主题组合,以可选地包括:更新先行处理缓冲器的帧内容包括移除或删掉第一缓冲帧F10并且接收后一个帧F1B1以使得先行处理缓冲器包括第二缓冲帧F11至帧F1B1。在例子中,方面9可以进一步包括使用处理器电路、基于与先行处理缓冲器的更新的帧内容对应的B1个比特分配请求来确定对于第二缓冲帧F11的比特分配。

方面10可以包括或使用方面1至9之一或它们的任何组合的主题,或者可以可选地与方面1至9之一或它们的任何组合的主题组合,以可选地包括:在对来自第一帧组F1的最后一个帧F1D1-1进行编码之前,缓冲对于后续的第二帧组F2的一个或多个帧的比特分配请求。

方面11可以包括或使用方面10的主题,或者可以可选地与方面10的主题组合,以可选地包括:将后续的第二帧组F2的所述一个或多个帧存储在不同的第二先行处理缓冲器中。

方面12可以包括或使用方面1至11之一或它们的任何组合的主题,或者可以可选地与方面1至11之一或它们的任何组合的主题组合,以可选地包括:在对来自第一帧组F1的最后一个帧F1D1-1进行编码之前,用来自第二帧组F2的帧填充第二先行处理缓冲器的一部分,包括至少接收帧F20。方面12的例子可以进一步包括:在确定对于来自第一帧组F1的最后一个帧F1D1-1的后续比特分配之后,用第二帧组F2的至少一个附加帧填入第二先行处理缓冲器,所接收的帧包括B2个帧F20至F2B2-1,其中B2大于1,并且使用处理器电路、基于与第二先行处理缓冲器中的接收的B2个帧对应的B2个比特分配请求来确定对于帧F20的比特分配。

方面13可以包括或使用方面1至11之一或它们的任何组合的主题,或者可以可选地与方面1至11之一或它们的任何组合的主题组合,以可选地包括:在对来自第一帧组F1的最后一个帧F1D1-1进行编码之前,用来自第二帧组F2的帧填充第二先行处理缓冲器的一部分,包括至少接收帧F20。方面13的例子可以进一步包括:在确定对于来自第一帧组F1的最后一个帧F1D1-1的后续比特分配之后,用第二帧组F2的至少一个附加帧填入第二先行处理缓冲器,所接收的帧包括B2个帧F20至F2B2-1,其中B2大于1,并且使用处理器电路、基于与第二先行处理缓冲器中的接收的B2个帧对应的一个或多个比特分配请求来确定对于帧F20的比特分配,在第二先行处理缓冲器中接收第二帧组F2的待编码的最后一个帧F2D2-1,并且从第二先行处理缓冲器删掉除最后一个帧F2D2-1之外的帧,并且使用处理器电路、基于少于B2个的比特分配请求来确定对于最后一个帧F2D2-1的比特分配。

方面14可以包括或使用方面1至13之一或它们的任何组合的主题,或者可以可选地与方面1至13之一或它们的任何组合的主题组合,以可选地包括:识别第一帧组F1中的同步帧。在方面14中,在识别第一帧组F1中的同步帧之后或随后,在相同的或不同的先行处理缓冲器中缓冲对于随后的第二帧组F2中的帧的比特分配请求。

方面15可以包括或使用方面1至14之一或它们的任何组合的主题,或者可以可选地与方面1至14之一或它们的任何组合的主题组合,以可选地包括:确定与第一帧组F1中的帧相关联的一个或多个约束,所述约束包括最大比特率和最小比特率中的一个或多个。

方面16可以包括或使用方面15的主题,或者可以可选地与方面15的主题组合,以可选地包括:确定适用于第一帧组F1中的帧中的多个帧的约束。

方面17可以包括或使用方面15的主题,或者可以可选地与方面15的主题组合,以可选地包括:确定对于第一帧组F1中的帧中的每个帧的相应的约束。

方面18可以包括或使用方面15的主题,或者可以可选地与方面15的主题组合,以可选地包括或使用:通过使用来自头部的信息或来自帧组F1至Fj中的一个或多个帧组的元数据来确定与第一帧组F1中的帧相关联的约束。

方面19可以包括或使用方面1至18之一或它们的任何组合的主题,或者可以可选地与方面1至18之一或它们的任何组合的主题组合,以可选地包括:包含第一帧组F1至最后一个帧组Fj的所述顺序的帧组系列包括音频或视频信息。

方面20可以包括或使用方面1至19之一或它们的任何组合的主题,或者可以可选地与方面1至19之一或它们的任何组合的主题组合,以可选地包括:识别第一帧组F1的帧中的信息的相对或绝对感知重要性,并且当第一帧F10中的信息的感知重要性超过第二帧F11中信息的感知重要性时,对于第一帧F10分配的比特多于对于随后的第二帧F11分配的比特。

方面21可以包括或使用方面1至20之一或它们的任何组合的主题,或者可以可选地与方面1至20之一或它们的任何组合的主题组合,以可选地包括:给定的帧组Fj的帧Dj的数量对于所述处理器电路事先是未知的。

方面22可以包括或使用主题(诸如用于执行动作的装置、系统、设备、方法、手段、或包括当被设备执行时可以使设备执行动作的指令的设备可读介质),诸如可以包括或使用一种用于对来自顺序的帧组系列的数据进行处理的方法,所述帧组系列包括第一帧组F1至最后一个帧组Fj,其中,每个帧组包括Dj个帧,所述Dj个帧包括第一帧Fn0至最后一个帧FnDj-1。在例子中,方面22可以包括:在大小为B个帧的第一缓冲器中接收第一帧系列,第一帧系列包括来自第一帧组F1的帧F10至F1B-1,并且对第一帧组F1的第一帧F10进行编码,包括:在第一处理器电路处接收对于第一缓冲器中的第一帧系列的相应的比特分配请求,所述比特分配请求基于与第一缓冲器中的第一帧系列相关联的约束,使用第一处理器电路、基于所述约束中的至少一个来确定对于第一帧F10的第一比特分配,以及使用所确定的对于第一帧F10的第一比特分配来对第一帧F10进行编码。方面22可以进一步包括:更新第一缓冲器以包括第二帧系列,第二帧系列包括来自第一帧组F1的帧F11至F1B,并且对第一帧组F1的第二帧F11进行编码,包括:在第一处理器电路处接收对于更新的第一缓冲器中的第二帧系列的相应的比特分配请求,所述比特分配请求基于与更新的第一缓冲器中的第二帧系列相关联的约束,使用第一处理器电路、基于所述约束中的至少一个来确定对于第二帧F11的第二比特分配,以及使用所确定的对于第二帧F11的第二比特分配来对第二帧F11进行编码。

方面23可以包括或使用方面22的主题,或者可以可选地与方面22的主题组合,以可选地包括:在第一处理器电路处接收对于第二帧系列的相应的比特分配请求包括接收与第一帧系列相关联的相同的比特分配请求中的一个或多个。

方面24可以包括或使用方面22或23之一或它们的任何组合的主题,或者可以可选地与方面22或23之一或它们的任何组合的主题组合,以可选地包括:确定对于第一帧F10的第一比特分配包括使用关于对于第一缓冲器中的第一帧系列中的所有帧的比特分配请求的信息来确定第一比特分配。

方面25可以包括或使用方面22至24之一或它们的任何组合的主题,或者可以可选地与方面22至24之一或它们的任何组合的主题组合,以可选地包括:分别确定对于第一帧F10和第二帧F11的第一比特分配和第二比特分配包括满足第一帧组F1的第一目标平均比特率。

方面26可以包括或使用方面22的主题,或者可以可选地与方面22的主题组合,以可选地包括:使用第一处理器电路来确定对于随后的第二帧组F2中的帧的比特分配,其中,所述确定包括满足第二帧组F2的不同的第二目标平均比特率。

方面27可以包括或使用方面22至26之一或它们的任何组合的主题,或者可以可选地与方面22至26之一或它们的任何组合的主题组合,以可选地包括:接收对于第一缓冲器中的第一帧系列的相应的比特分配请求包括接收基于约束的请求,所述约束包括最大比特率和最小比特率中的一个或多个。

方面28可以包括或使用方面22至27之一或它们的任何组合的主题,或者可以可选地与方面22至27之一或它们的任何组合的主题组合,以可选地包括:分别确定对于第一帧F10和第二帧F11的第一比特分配和第二比特分配包括基于第一帧F10和第二帧F11中的信息的相对感知重要性来分配比特。

方面29可以包括或使用主题(诸如用于执行动作的装置、系统、设备、方法、手段、或包括当被设备执行时可以使设备执行动作的指令的设备可读介质),诸如可以包括或使用一种用于对来自顺序的帧组系列的数据进行处理以实现所述系列里中的特定帧组的目标平均处理比特率的系统,所述系列包括第一帧组F1至最后一个帧组Fj,其中,每个帧组包括Dj个帧。在例子中,方面29的系统可以包括或使用先行缓冲器电路,所述先行缓冲器电路被配置为接收第一帧组F1的B1个帧,所接收的帧包括第一缓冲帧F10至帧F1B1-1,其中,B1大于1;耦合到先行缓冲器电路的比特分配处理器电路,所述比特分配处理器电路被配置为基于与先行处理缓冲器中的接收的B1个帧对应的比特分配请求来确定对于第一缓冲帧F10的第一比特分配;以及编码器电路,所述编码器电路被配置为使用确定的第一比特分配来对第一缓冲帧F10进行编码。

方面30可以包括或使用方面29的主题,或者可以可选地与方面29的主题组合,以可选地包括或使用:所述先行缓冲器电路被配置为从第一帧组F1接收新的帧并且以先进先出的方式从第一帧组F1删掉旧的帧。

方面31可以包括或使用方面29或30的主题,或者可以可选地与方面29或30的主题组合,以可选地包括:所述比特分配处理器电路被配置为基于与所述先行处理缓冲器中的F11至F1B1这B1个帧对应的比特分配请求来确定对于第二缓冲帧F11的比特分配。

方面32可以包括或使用方面29至31之一或它们的任何组合的主题,或者可以可选地与方面29至31之一或它们的任何组合的主题组合,以可选地包括:所述比特分配处理器电路被配置为基于与第一帧组F1中的或另一个帧组中的一个或多个帧相关联的约束来确定第一比特分配。

方面33可以包括或使用方面29至32之一或它们的任何组合的主题,或者可以可选地与方面29至32之一或它们的任何组合的主题组合,以可选地包括:所述比特分配处理器电路被配置为基于第一缓冲帧F10相对于第一帧组F1中的其他帧的相对感知重要性特性来确定第一比特分配。

方面34可以包括或使用方面29至33之一或它们的任何组合的主题,或者可以可选地与方面29至33之一或它们的任何组合的主题组合,以可选地包括所述先行缓冲器电路被配置为接收作为从网络到达的连续数据流的帧。

这些非限制性方面中的每个可以是独立的,或者可以按各种置换或组合与本文中所提供的其他的方面或例子中的一个或多个组合。

在本文档中,术语“一个”或“一种”如在专利文档中常见的那样用于包括一个或多于一个,独立于“至少一个”或“一个或多个”的任何其他的实例或使用。在本文档中,术语“或”用于指代非排他性的“或”,以使得“A或B”包括“有A无B”、“有B无A”和“A和B”,除非另有其他指示。在本文档中,术语“包括”和“在……中”用作相应术语“包括”和“其中”的等同形式。

除非另有具体陈述或者在所使用的上下文内另有理解,本文中所使用的条件语言(诸如,“能够”、“可以”、“可能”、“例如”等)一般意图传达某些实施例包括、而其他实施例不包括某些特征、要素和/或状态。因此,这样的条件语言一般并不意图暗示特征、要素和/或状态一定包括用于在有或没有创作者输入或提示的情况下决定这些特征、要素和/或状态是包括在任何特定的实施例中、还是将在任何特定的实施例中被执行的逻辑。

虽然以上详细描述已经示出、描述和指出了应用于各种实施例的新颖的特征,但是将理解,可以做出例示的装置或算法的形式和细节上的各种省略、替换和改变。如将认识到的,本文中所描述的发明的某些实施例可以在不提供本文中所阐述的所有的特征和益处的形式内实施,因为一些特征可以被与其他特征分开使用或实施。

而且,尽管已经用特定于结构特征或方法或动作的语言描述了主题,但是要理解,所附权利要求中所限定的主题不一定限于上述特定的特征或动作。相反,上述特定的特征和动作是作为实现权利要求的示例形式而公开的。

36页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:多通道空间音频格式输入信号的处理

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类