具体实施方式
在本发明的较佳实施例的以下描述中参考附图,附图构成本发明的一部分并通过举例说明示出了可以在其中实践本发明的具体实施例。可以理解,在不脱离本发明的范围的前提下,可以利用其他实施例,并可以进行结构上的更改。
I.计算环境
在描述本发明的较佳实施例之前,将简要概括地描述可以在其中实现本发明的各个部分的合适的计算环境。图1示出了合适的计算系统环境100的例子。计算系统环境100只是合适的计算环境的一个例子,它并不意在对本发明的使用范围或功能性提出任何限制。也不应该将计算环境100解释为具有涉及示例性操作环境100中所展示的任何一个组件或组件组合的任何依赖或要求。
本发明可利用众多其他的通用或专用计算系统环境或配置来操作。适用于本发明的众所周知的计算系统、环境和/或配置的例子包括(但不局限于)个人计算机、服务器计算机、手持设备或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费者电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。
可以在由计算机执行的计算机可执行指令(例如,程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括记忆存储设备的本地和远程计算机存储介质中。
参照图1,用于实现本发明的示例性系统包括采取计算机110形式的通用计算设备。计算机110的组件可以包括(但不局限于)处理单元120、系统存储器130和系统总线121,系统总线121将包括该系统存储器的各种系统组件耦合到处理单元120。系统总线121可以是几种类型的总线结构中的任一种,包括存储总线或存储控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。举例来讲(不作限制),这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称作夹层(Mezzanine)总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110存取的任何可用介质,它包括易失性和非易失性介质、可移动和不可移动介质。举例来讲(不作限制),计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括易失性和非易失性、可移动和不可移动介质,该介质用关于诸如计算机可读指令、数据结构、程序模块或其他数据等信息的存储的任何方法或技术来实现。计算机存储介质包括(但不局限于)RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁性存储设备、或可以被用来存储所需信息并可以由计算机110进行存取的其他任何介质。通信介质通常具体化为已调制数据信号(例如,载波或其他传送机制)中的计算机可读指令、数据结构、程序模块或其他数据,它包括任何信息传递介质。术语“已调制数据信号”意味着这样一种信号,其一个或多个特征按为该信号中的信息编码的方式来加以设置或更改。举例来讲(不作限制),通信介质包括有线介质(例如,有线网络或直线连接)和无线介质(例如,声学、RF、红外线和其他无线介质)。以上任何内容的组合也应该被包括在计算机可读介质的范围以内。
系统存储器130包括采取易失性和/或非易失性存储器的形式的计算机存储介质。例如,只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)通常被存储在ROM 131中,该基本输入/输出系统包含有助于在计算机110内的各个元件之间传送信息(例如,在启动期间)的基本例程。RAM 132通常包含可立即由处理单元120存取和/或目前正由处理单元120进行操作的数据和/或程序模块。举例来讲(不作限制),图1示出了操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。只举例来讲,图1示出了从不可移动、非易失性磁性介质读取或对其写入的硬盘驱动器141,从可移动、非易失性磁盘152读取或对其写入的磁盘驱动器151,以及从可移动、非易失性光盘156(例如,CD ROM或其他光学介质)读取或对其写入的光盘驱动器155。可以用于该示例性操作环境中的其他可移动/不可移动、易失性/非易失性计算机存储介质包括(但不局限于)卡型盒式磁带机、闪卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常通过不可移动存储接口(例如,接口140)而被连接到系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储接口(例如,接口150)连接到系统总线121。
以上所讨论的和图1中所示的这些驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意,这些组件可以等同于或不同于操作系统134、应用程序135、其他程序模块136和程序数据137。这里为操作系统144、应用程序145、其他程序模块146和程序数据147提供不同的标号以说明它们至少是不同的副本。用户可以通过输入设备(例如,键盘162和通常被称作鼠标、跟踪球或触垫的定点设备161)来将命令和信息输入计算机110。其他输入设备(未示出)可以包括话筒、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其他的输入设备经常通过被耦合到系统总线121的用户输入接口160而被连接到处理单元120,但也可能由其他接口和总线结构(例如,并行端口、游戏端口或通用串行总线(USB))来连接。监视器191或其他类型的显示设备也经由接口(例如,视频接口190)而被连接到系统总线121。除监视器以外,计算机也可以包括其他外围输出设备(例如,扬声器197和打印机196),这些外围输出设备可以通过输出外围接口195来连接。能够捕捉图像序列193的照相机192(例如,数码/电子静止照相机或摄像机、或胶片/照片扫描仪)也可以被包括在内,作为个人计算机110的输入设备。另外,尽管只描绘了一个照相机,但可以包括多个照相机,作为个人计算机110的输入设备。来自这一个或多个照相机的图像193经由适当的照相机接口194而被输入计算机110。接口194被连接到系统总线121,从而允许图像被发送到RAM 132或与计算机110关联的其他数据存储设备之一并被存储于其中。但是,注意,图像数据也可以从任何上述计算机可读介质被输入计算机110,而不要求使用照相机192。
计算机110可以使用与一台或多台远程计算机(例如,远程计算机180)的逻辑连接而在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他普通网络节点,它通常包括以上相对于计算机110而描述的许多或所有元件,尽管图1中只示出了记忆存储设备181。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络。这类网络环境在办公室、企业范围计算机网络、内联网和因特网中很普遍。
当被用于LAN网络环境中时,计算机110通过网络接口或适配器170而被连接到LAN 171。当被用于WAN网络环境中时,计算机110通常包括调制解调器172或用于通过WAN 173(例如,因特网)建立通信的其他装置。调制解调器172(可以是内置的,也可以是外置的)可以经由用户输入接口160或其他适当的机制而被连接到系统总线121。在网络化环境中,相对于计算机110或其各个部分而描绘的程序模块可以被存储在远程记忆存储设备中。举例来讲(不作限制),图1将远程应用程序185示为驻留在存储设备181上。将会理解,所示的网络连接起示例性的作用,可以使用在计算机之间建立通信链路的其他手段。
现在已讨论了示例性操作环境,本说明书章节的剩余部分将致力于描述实施本发明的程序模块。
II.问题公式化
A.时间坐标系统
在用来表达时间的各个时间坐标系统或时钟之间进行区分是值得的。这里,媒体时间指在用来捕捉原始内容并为其加时间戳的设备上运行的时钟,而客户机时间指在用来重放该内容的客户机上运行的时钟。假设媒体时间在媒体捕捉时是实时的(即,一秒的媒体时间在一秒的实时中过去),而客户机时间在媒体重放时是实时的。符号τ用来表示媒体时间,符号t用来表示客户机时间,下标和其他自变量指出对应的事件。例如,τd(0),τd(1),τd(2),...用来表示媒体时间中帧0、1、2、……的重放截止时间,而td(0),td(1),td(2),...用来表示客户机处的帧0、1、2、……的重放截止时间。可以按v倍实时的速率来重放内容。这样,从媒体时间到客户机时间的转换可以被表达为:
其中,t0和τ0分别表示共同的初始事件的时间,例如,媒体和客户机坐标系中的帧0的重放(或者查找或再缓冲事件之后第一个帧的重放)。
B.漏桶模型
暂时想像一种情形,其中,编码器200和解码器202在网络204的等时信道上实时地运行。在此情况下,如图2所示,为了使瞬间编码比特率与瞬间信道速率匹配,在编码器200与网络204之间需要编码器缓冲区206,且在网络204与解码器202之间需要解码器缓冲区208。时间表是时间序列,在该时间序列中,编码比特流中的接连的比特通过通信管道中给定的点。图3中的图表示出了通过图2中的点A、B、C和D的比特的时间表。时间表A是捕捉到的帧被瞬时编码并被放入编码器缓冲区的时间表。这个时间表是第n个梯级在时间τ(n)处上升b(n)个比特的阶梯,其中,τ(n)是帧n被编码的时间,b(n)是最后得到的编码中的比特数。时间表B和C是比特分别进入和离开信道的时间表。这些时间表的斜率是R比特/秒,其中,R是信道的通信速率。时间表D是帧从解码器缓冲区中移除并瞬时被解码用于呈现的时间表。注意,时间表D只是时间表A的移位。也要注意,时间表B是时间表A的下限,而时间表C是时间表D的上限。实际上,时间表A与时间表B之间的差距标识任何时间点处编码器缓冲区的大小,以比特为单位,而时间表C与时间表D之间的差距同样表示解码器缓冲区的大小。编码器缓冲区大小和解码器缓冲区大小是互补的。这样,如图4中的图表所示,编码时间表(A或D)可以被包含在缓冲管内,具有斜率R、高度B、以及离管顶的初始偏移量Fd(或离管底的等效初始偏移量Fe=B-Fd)。可见,D=Fd/R是第一个比特到达接收器的时间与第一个帧被解码的时间之间的启动延迟。这样,为给定的R最小化Fd是令人感兴趣的。
漏桶是对编码器缓冲区的隐喻。编码器在时间τ(n)处将b(n)个比特转储到漏桶,并且,这些比特按速率R泄漏。一般而言,泄漏速率R可以足够高,以便该桶偶尔为空。这样,直接在帧n之前的编码器缓冲区充满度Fe(n)被添加到该桶,直接在帧n之后的编码器缓冲区充满度Be(n)被添加到该桶,这是根据动力系统从初始编码器缓冲区充满度Fe(0)=Fe发展而来,
Be(n)=Fe(n)+b(n), (2)
Fe(n+1)=max{0,Be(n)-R/f(n)}, (3)
其中,
是瞬间帧速率,n=0,1,2,...。如果R足够低,那么,桶将永远不会干枯(下溢),但如果R太低,那么,桶最终将会过溢。使桶永远不会干枯的最大的R被用作比特流的平均编码比特率rc。这一点在以下两段中会变得更加精确。
如果对于所有n而言Be(n)≤B,则具有大小B、速率R和初始充满度Fe的漏桶被认为是包含具有由梯级{(b(n),τ(n))}特征化的时间表的流。给定泄漏速率R和初始充满度Fe,包含该流所需要的最小桶大小被定义为:
而对应的初始解码器缓冲区充满度被定义为:
Fe上的这些中的每一个的最小值被表示为:
它在[10,提议2]中被显著地示出;这些的每一个被同一Fe值最小化,因此,它等于:
这样,比特流具有时间表{(b(n),τ(n))},对于每个比特率R,有唯一的漏桶,该漏桶包含流并具有最小的缓冲区大小B以及最小的启动延迟D=Fd/R。这些参数可以利用以上的公式来计算。
对于足够低的泄漏速率R,当以初始充满度
开始时,漏桶不会下溢。该最大速率R可以用作具有编码时间表{(b(n),τ(n))}的比特流的平均编码比特率rc。
也可以使用比rc大的泄漏速率R。在[10]中示出:
和
在R中是渐减的、分段线性的和凸的。因此,如果传输速率R大于平均编码比特率rc,那么,与
相比,可以减少启动延迟
。将在章节IV-A中使用这个事实。
这样,具有泄漏速率R=rc、大小
和初始解码器缓冲区充满度 的漏桶对应于限制如图4中的编码时间表的直缓冲管。媒体文件中的每个流具有编码时间表;这样,每个流对应于其斜率等于该流的平均编码比特率rc的直缓冲管。该缓冲管的大小B和它相对于编码时间表的偏移量Fe(或Fd)可以由关于可变比特率(VBR)流(例如,可伸缩流的恒定质量子流)的以上公式来计算,或者如果它是恒定比特率(CBR)流,则从被用来为该流编码的实际编码器缓冲区的大小B和初始状态Fe中获得。
在下文中,如图4中所描绘的,考虑缓冲管上限与编码时间表之间的帧,n处的差距g(n)。注意,解码器缓冲区充满度,Fd(n)=B-Fe(n)也可以被表示为:
其中,rc(n)是缓冲管的编码比特率,现在考虑当应用编码比特率控制并转换流时,不同的帧可能位于具有不同的编码比特率的不同缓冲管中。
C.速率控制模型
暂时假设比特是按恒定速率ra到达客户机的。然后,帧n(具有大小b(n))在帧n-1之后的b(n)/ra秒到达客户机。实际上,比特的索引与其到达时间成比例。如图5中的图所示,通过将图4中的时间表的纵坐标除以ra,按照客户机时间(而不是比特)来获得这些时间表。编码时间表除以ra成为到达时间表,这为每个n提供帧n到达客户机的时间ta(n)。缓冲管上限(用比特表示)除以ra成为缓冲管上限(用时间表示),这为每个n提供保证帧n到达的时间tb(n)。在相同的曲线图中示出重放截止时间,它是调度播放帧,n的时间td(n)(在瞬间解码之后)。这样,帧的到达时间与它的重放截止时间之间的差距是在帧到达的时候的客户机缓冲区持续时间。这必须是非负的,以允许连续不断的重放。
实际上,到达速率不是恒定的。如果ta(n-1)和ta(n)分别是帧n和n-1的到达时间,那么,
可以被定义为帧,n处的瞬间到达速率。在实践中,帧n处的平均到达速率由ra(n)的前一值的移动平均
来估算,这会在章节IV-C中详述。因此,通过使用公式(11),帧n的到达时间可以按照帧n-1的到达时间而被表示为:
其中,v(n)项是误差项,它捕捉使用缓慢移动平均
的效果。但是,从公式(10)中,可见,
由此(将公式(14)代入公式(13))产生
现在,将帧n的缓冲管上限(用时间表示)定义为:
使得
获得以下更新公式:
其中,
也是误差项,它捕捉本地恒定到达速率周围的变更。
通过使用公式(16),客户机可以从测得的到达时间ta(n-1)、估算的到达速率
和g(n-1)(如章节V-E中所述,它可以连同帧n-1中的数据一起被发送到客户机,或者在客户机处计算)中计算tb(n-1)。然后,假设帧速率和到达速率粗略地保持恒定,那么,通过使用公式(18),客户机可以控制编码比特率rc(n),以使tb(n)达到所需的值。从这个观点来看,公式(18)可以被视作反馈控制系统的状态转移公式,这样,可以使用控制-理论方法来调节编码比特率。
D.控制目标
利用公式(18)中所定义的状态转移公式,可以通过调节编码比特率以使客户机缓冲区不会下溢来实现不间断重放。如图5所示,为了引入随时间的推移而增加的安全限度,可引入目标时间表,它与重放截止时间的距离随时间的推移而缓慢增长。通过调节编码比特率,试图控制缓冲管上限,以便它跟踪该目标时间表。如果缓冲管上限接近于目标时间表,那么,所有帧的到达时间将一定比其重放截止时间更早,这样,将确保不间断重放。注意,将实际到达时间(而不是其上限)控制到目标将会导致每帧近似恒定的比特数,这又将会导致总体上非常差的质量。通过考虑漏桶模型,可以在先前为给定的平均编码比特率建立的界限内建立控制,该控制允许瞬间编码比特率根据内容的编码复杂性而自然地波动。
虽然将上限控制到目标时间表是主要目标,但是,也需要最小化因对编码比特率的大的或频繁的更改而产生的质量变更。这是通过将对于相对编码比特率差的损失引入费用函数来实现的。
设tT(n)表示帧n的目标,以下费用函数用来反映两个关注事项:
其中,第一个项使缓冲管上限与目标时间表的偏差有损失,第二个项使接连的帧之间的相对编码比特率差有损失。N是控制窗口大小,σ是拉格朗日乘子或加权参数,用于平衡这两个项。
III.最优控制解决方案
在呈现最优控制解决方案之前,将描述对目标时间表的设计基本原理。
A.目标时间表设计
图6是示出说明性目标时间表的示图。重放截止时间与目标时间表之间的差距是所需的客户机缓冲区持续时间(用客户机时间表示)。如果差距在流传送开始时很小,那么,它允许小的启动延迟;而如果差距随时间的推移而缓慢增长,那么,它逐渐增加接收器阻遏抖动、延迟和吞吐量变化的能力。
目标时间表的斜率将平均编码比特率与平均到达速率相关。设tT(n)为帧n的目标。如图6所示,帧n处的目标时间表的斜率是
如果上限b(n)完全与目标时间表对齐(即tb(n)=tT(n)),且到达速率ra是恒定的(即,w(n-1)项为零),则从公式(18)中,
这样,最初,当斜率低(即,小于1/v)时,ra/rc大于v,并且,每一秒的客户机时间接收多于v秒的内容,从而使客户机缓冲区(它在每一秒的客户机时间只播放v秒的内容)增大。随着时间的推移,当斜率接近1/v时,ra/rc接近v,并且缓冲区保持相对恒定(除了因瞬间编码比特率中的变更而产生的变化以外),因为内容是按相同的速度v来接收和重放的。接下来呈现两个目标时间表函数,它们展示一般的设计理念。
1)对数目标时间表
用于选择目标时间表tT的一种方法是让客户机缓冲区持续时间随时间的推移而对数性地增长。具体而言,如果td是重放截止时间,那么对于大于某个启动时间td0的每个td,
由于通过公式(1),d=td0+(τd-τd0)/v,这产生
因此,帧0处的初始斜率(当td=td0时)是s(0)=(1-b)/v。设置b=0.5暗示最初rc/ra=0.5/v,从而使客户机缓冲区最初按两倍的实时增长。进一步设置a=0.15暗示客户机缓冲区持续时间将会是1分钟之后的7.68秒、10分钟之后的15.04秒、以及100分钟以后的22.68秒,而不管v如何。
2)两段线性目标时间表
用于选择目标时间表tT的另一种方法是让客户机缓冲区持续时间按每一秒的客户机时间b秒的媒体时间的速率而线性地增长,直到缓冲区持续时间达到a秒的媒体时间为止,其后,它保持恒定。具体而言,对于大于某个启动时间td0的每个td,
初始斜率也是s(0)=(1-b)/v。设置b=0.5暗示最初rc/ra=0.5/v,从而使客户机缓冲区最初按两倍的实时而增长。进一步设置a=10暗示客户机缓冲区持续时间将在20秒的客户机时间之后达到10秒的媒体时间,而不管v如何。
图7(a)和(b)示出了以上两个目标时间表的示图。可见,如果10秒的客户机缓冲区持续时间被认为是防御抖动、延迟和网络波动的安全等级,那么两段线性目标时间表在20秒内达到该安全等级,这比对数目标时间表快得多。另一方面,两段线性目标时间表的斜率保持较低达更久(因此,编码比特率和质量较低达更久),而且当其斜率从0.5/v变成1/v时,在20秒处经历突然的变化。所以,编码比特率将不会象利用对数目标时间表那样平稳地更改,尽管由于控制器设计中的平滑度目标,它将不会象时间表本身那样突然。
B.最优控制器设计
从公式(18)中回想基本状态转移公式,它按照编码比特率rc(n)来描述缓冲管上限tb(n)的演变:
这里,现在假设帧速率f和平均到达速率
相对恒定。与这个假设的偏差被w(n)捕捉。
需要通过调整编码比特率来控制上限。当每个帧到达客户机时,反馈回路可以将消息发送到服务器,以调整编码比特率。但是,注意,在帧n完全到达客户机的时候,帧n+1已开始从服务器流传送。这样,帧n+1的编码比特率rc(n+1)必须已由时间ta(n)来确定。实际上,在时间ta(n)处,帧n+2是控制器可以确定其编码比特率的最早的帧。因此,在时间ta(n)处,控制器的工作必须是选择rc(n+2)。必须明确地说明该反馈回路中的这个一帧延迟。
为简单起见,围绕帧n到达的时间来对目标时间表进行线性化。线性化相当于使用在特定点与原始目标时间表相切的线作为近似的目标时间表。这样,
tT(n+1)-2tT(n)+tT(n-1)=0. (27)不是直接控制上限(它无限度地增长)的演变,而是出于稳定性的目的,使用误差空间公式。将该误差定义为:
e(n)=tb(n)-tT(n), (28)
得到
从中进而
然后,控制输入被定义为:
其中,
是rc(n+1)的可能被量化的形式(如章节IV-D中所定义的),并且,干扰被定义为:
然后,公式(33)可以被重写
所以,定义误差向量
该系统的误差空间表示可以被表示为:
或对于适当的矩阵Φ、Γ和Гd的e(n+1)=Φe(n)+Γu(n)+Γdd(n)。
假设干扰d(n)是纯白噪声,并假设完美状态测量(即,无须使用估算器就可测量e(n)的所有分量),干扰d(n)不会影响控制器设计。这样,以下公式表示线性控制器由
u(n)=-Ge(n) (39)可以被使用,其中G是反馈增益。在完全接收到时间帧n的时候,e(n)的所有元素都在客户机处可用,因而可以计算u(n)。然后,对于帧n+2的理想编码比特率可以被计算为:
找出最优线性控制器实际上是找出反馈增益G*,该反馈增益G*最小化章节II-D中所定义的二次费用函数。在继续设计之前,将首先检验系统可控性矩阵C
它具有关于任何帧速率f的满秩。这样,该系统是完全可控制的,并且,状态e(n)可以被调节到任何所需的值。现在,回想章节II-D中所定义的费用函数是
其中,Q=CTC(C=[100]),并且R=σ。然后,在平滑编码比特率波动(即,最小化费用函数I)的同时跟踪目标时间表的原始控制问题被转换成误差空间中的标准调节器问题。设N→∞,通过应用[11,章节3.3]中的结果在以下两个步骤中获得最佳调节器,可以解决无限水平线最优控制问题:1)解离散代数黎卡提方程(DARE)以获得S
S=ΦT{S-SΓ[ΓTSΓ+R]-1ΓS}Φ+Q, (44)以及2)计算最优反馈增益
G*=[ΓTSΓ+R]-1ΓTSΦ. (45)当Q是非负定并且R是正定的时候,保证S的(进而是G*的)存在和唯一性,在此情况下,这验证起来是直截了当的。
C.帧速率
在前一个章节中,假设帧速率是恒定的。当流传送单个媒体(例如,无音频的视频)时,这个假设是合理的。通常通过跳过帧来实现可变帧速率视频,这可以通过设置b(n)=0来适应。但是,通常视频和音频一起被流传送,并且,其合并编码时间表可能没有固定的帧速率。例如,即使有固定的帧速率f,也可能需要按低于f的速率来操作控制器,以降低反馈速率。
为了解决这些问题,在实践中,使用虚拟帧速率的概念。选择虚拟帧速率,例如,f=1帧/秒(fps);媒体时间被划分成大小为1/f的时间间隔;并且,在每个时间间隔内到达的所有(音频和视频)帧被建模为虚拟帧,其解码和重放截止时间是该时间间隔的末端。
这个方法具有几个优点。首先,它允许通用反馈增益的脱机设计,它独立于一个或多个流的实际帧速率。其次,它允许降低从客户机到服务器的反馈速率。最后,由于各个虚拟帧之间的时间间隔通常安全地大于往返旅程时间(RTT),因此,误差空间模型中的一帧延迟(如前一个章节中所描述的)足以为反馈延迟建模。否则,将会有必要利用近似RTT/f额外状态变量来为反馈延迟建模,以便使用长度为RTT/f的移位寄存器来表示网络延迟。
在本说明书的剩余部分中,使用虚拟帧速率f=1fps,并被简称为“帧速率”。同样,虚拟帧被简称为“帧”。
注意,利用本控制器设计基本原理,通过减少σ值,可以减少缓冲管上限与控制目标的偏差。σ值的较小的值暗示费用函数中的偏差项上的相对较大的损失,并且因此迫使该上限更紧密地跟踪目标。但是,这种情况的发生是以牺牲编码比特率平滑度为代价的,因为费用函数中的对应的项将被加权较少。对于σ=500,发现缓冲管上限只稍微偏离控制目标,但编码比特率有不合需要的振荡。另一方面,大的σ值将一定会产生更平滑的编码比特率,但也可能会招致客户机缓冲区下溢,因为缓冲管上限被允许大大偏离控制目标。所以,对σ的良好选择应该考虑这个权衡。在本系统和过程的测试实施例中,当编码比特率向上转换时,选择σ=4000;当它向下转换时,选择σ=2000。注意,在后一种情况中,允许使用稍微更具攻击性的策略,以进一步降低客户缓冲区下溢的机会。
IV.对于流传送的实际问题
如前面各章节中所讨论的,启动延迟是从内容首先开始到达客户机的时间到重放开始的时间的时期的长度。在这段时期中,内容累积在接收器缓冲区中,以防御数据包抖动、重发延迟、网络带宽中的变更、以及瞬间编码比特率中的变更。可以想得到,较长的启动延迟将会增加能够在动态网络环境中保持连续不断的重放的机会。另一方面,用户期望启动延迟尽可能小。这样,需要调查可以在保持健壮性的同时减少启动延迟的技术。一种可能的方法是在流传送开始的时候,按比标准速率更快的速率来传送内容。这项丛发技术将一定会在少量时间内增长缓冲区持续时间。但是,通过要求比标准初始带宽更大的带宽(它甚至可能不可用),它会给网络施加额外的压力。
本系统和过程使用一种替换的快速启动技术,它利用自适应媒体的特性。如前面章节中所讨论的,通过选择等于到达速率ra的一半的初始编码比特率rc(如果必要的话,除以重放速度v),客户机缓冲区持续时间可以在重放期间按两倍的实时增长。在重放期间增长客户机缓冲区允许启动延迟为低,因为在缓冲区持续时间仍然很低的同时,可以开始重放。在缓冲区持续时间低的同时开始重放在短期内并不特别冒风险,因为在任何短时间间隔内发生深度拥塞的概率很低。但是,在长时间间隔内发生深度拥塞的概率很高,所以,让缓冲区持续时间在长期内保持高是很重要的。若不能在重放期间增长缓冲区持续时间,启动将必须被延迟,直到缓冲区持续时间高得足以保证长期内连续不断的重放为止。
而且,如果传输速率是编码比特率的两倍,那么,通过利用漏桶模型[10]的特性,可以进一步减少启动延迟。如章节II-B中所详述的,当按速率R来传送流时,对于给定比特流的启动延迟是
。当按其编码比特率来传送流时,这一般等于Fmin d(rc)/rc。但是,当按速率ra>rc(rc=0.5ra/v)来传送流时,启动延迟降低到Fmin d(ra)/ra。这样,启动延迟D减少,这既是因为分子减少,也是因为分母增加。
图8中的示图示出了当R从rc变成ra时初始解码器缓冲区充满度Fmin d(R)中的减少。特别是,它描绘了对于给定比特流的编码时间表以及上限和下限,它们被表示为管I和管II,分别对应于具有速率rc和ra的两个漏桶,两者都包含该编码时间表。管II比管I小,这是因为包含给定流的漏桶的最小尺寸Bmin(R)正在以泄漏速率R[10]减小。同样,初始解码器缓冲区充满度Fmin(R)正以R[10]减小。因此,关于帧0的重放截止时间可以如客户机时间
(而不是
)那样早开始。从那里,重放截止时间按每秒的媒体时间1/v秒的客户机时间来前进。
B.控制器初始化
如图8所示,目标时间表与重放截止时间同时开始,并根据预定义函数而增长。控制器试图将管I的上限控制到目标时间表。最初,管I的上限在目标时间表以上(并且的确在重放截止时间以上,尽管知道这是安全的)。因此,当重放开始时,控制器将会试图通过降低编码比特率来缩短差距。但是,这将是不合需要的,因为当前编码比特率已低于到达速率,以允许客户机缓冲区增长。编码比特率的进一步降低将是不适当的。为了避免这个后果,当管I的上限超过目标时间表(即,在图8中的点B处)时,对控制器进行初始化。可以在分析上找到点B,但在实践中,不需要明确地解出它。管I的上限一超过目标,就可以对控制器进行初始化。
C.到达速率的指数平均
使用平均到达速率(而不是瞬间到达速率)有助于减少编码比特率振荡。本章节详述关于到达速率的新的指数平均算法。
当接收数据包k时,设
和r(k)分别是平均到达速率和瞬间到达速率。注意,与控制运算不同的是,可以在每个数据包到达之后,而不是在每个帧到达之后执行速率平均运算。因此,使用离散数据包索引k,而不是帧索引n。更仔细地执行指数平均,而不是使用具有常数β(k)=β的普遍采用的指数加权移动平均数(EWMA)
在本算法中,因数β(k)不是恒定的,但根据这些数据包的交互到达差距而改变。这个新的算法拥有胜过具有常数β(k)的EWMA算法的几个优点。首先,平均到达速率
的估算自然地趋零作为差距,因为最后一个数据包趋于无穷大,而不是被
限制在下面。其次,平均到达速率
的估算不趋于无穷大作为差距,因为最后一个数据包趋于零。这尤其重要,因为数据包经常以脉冲串到达,从而导致极高的瞬间到达速率。最后,平均到达速率
的估算不会过加权初始条件,好象它表示无穷的过去。这在早期估算阶段中尤其重要。
如在公式(11)中,数据包k之后的瞬间到达速率被定义为:
其中,这里的b(k)表示数据包k的大小,ta(k)表示数据包k的到达时间。通过如图9中的示图所示的以下公式,离散时间函数ra(k)扩展到分段恒定连续时间函数ra(t):
ra(t)=ra(k)对所有的t∈(ta(k-1),ta(k)), (48)然后,对于某个时间常数1/α,函数ra(t)被指数脉冲响应αe-αt过滤,t≥0:
(这里以及在本小节的剩余部分中,从到达时间t
a(k)中抑制下标。)注意
,,分母积分可以被表示为1-e
-α(t(k)-t(0))。现在,分子积分的范围被分成范围(t(0),t(k-1)]和(t(k-1),t(k)],以便按照
和r
a(k)来获得关于
的递归表达式,
其中,
注意,当k趋于无穷大时,β(k)在数字上是稳定的。但是,当差距δ=t(k)-t(k-1)趋于零时,1-β(k)趋于零,同时,ra(k)趋于无穷大。但是,其乘积性能良好。的确,
当δ→0时,使用罗必塔(I′H_pital)法则。这样,公式(54)是当t(k)=t(k-1)时的更新规则。
D.给定编码比特率时选择流
当客户机请求编码比特率r
c(n)时,通过选择具有近似地等于r
c(n)的编码比特率
的流(或可伸缩流的子流),服务器可顺从。
可能不同于r
c(n)有几个原因。第一个原因是:即使使用细粒可伸缩编码,媒体文件中也只有有限数量的流(或子流)。这样,媒体文件中可能没有具有正好等于r
c(n)的平均编码比特率的流。第二个原因是:即使媒体文件中有具有正好等于r
c(n)的平均编码比特率的流,关于该流的缓冲管也可能会太大,以致不允许在不冒客户机缓冲区下溢的风险的情况下对该流的转换。实际上,只要该流转换,上限中一般都有中断,它可能是正的或负的。图10中的示图展示了上限中的正位移,它(如果大的话)会使客户机缓冲区立即或最终发生下溢。
这样,服务器必须选择流,该流使上限的上移不会超过客户机提供给它的某个量Δ
maxg(n-1)。在客户机时间t
a(n-2)之后不久(在帧n-1已开始流传送之后),客户机在其反馈中连同r
c(n)一起将Δ
maxg(n-1)提供给服务器。一接收到该反馈,服务器就选择具有尽可能高的编码比特率
的流,以使
,并且,如果
(即,如果它是速率中的向上转换),那么,g
new(n-1)-g
old(n-1)≤Δ
maxg(n-1),其中,g
new(n-1)和g
old(n-1)在图10中示出。如果它是速率中的向下转换,则不应用Δ
maxg(n-1)给出的约束。
即,如果新的编码比特率有效,那么,客户机选择Δmaxg(n-1)来限制上限在时间ta(n-1)处将会是什么(对上限的预测)。
≤tT(n-1)+p[td(n-1)-tT(n-1)]. (56)
即,客户机选择Δmaxg(n-1)来限制
,以使它将只是从目标tT(n-1)到重放截止时间td(n-1)的路途的分数p。在本系统和过程的测试实施例中,选择p=1/3。
注意,在替换实施例中,关于服务器支持什么编码比特率的信息可以提早被提供给客户机,并且,客户机会负责执行前述分析。在此情况下,客户机将会只请求服务器支持的编码比特率,并且,将不需要将Δmaxg(n-1)提供给具有该请求的服务器。
E.控制目标调整
当具有新的平均编码比特率
的帧在时间t
a(n)处到达客户机时,上限中有位移。这个位移可以是几秒的数量级,因此,会对控制器产生混淆,而不是可以忽略的。例如,如果该位移是向上的,那么,控制器将立即试图降低编码比特率r
c(n+2)。另一方面,如果该位移是向下的,那么,控制器将立即试图提高编码比特率r
c(n+2)。其中的任何一种方法可能都不好:意图是保持
,除非到达速率中有干扰。如图10所示,一种解决方案是:在控制目标时间表中引入等于
的同时位移,其中,Δg(n-1)=g
new(n-1)-g
old(n-1)是在服务器处计算的帧n-1处的上限中的实际位移(用比特表示)。服务器可以将这个值连同帧n一起发送到客户机。如果没有流变化,则这个值只是零。
如果无论何时编码比特率更改都调整控制目标时间表,那么,将不再遵循设计目标时间表。调整的目标时间表将被称作“控制目标时间表”,以将它和设计目标时间表(或只是目标时间表)区别开来。
当然,控制目标时间表应该具有接近设计目标时间表的趋向。基本理念是:当它在设计目标时间表以上时,减少控制目标时间表的斜率;当它在设计目标时间表以下时,增加该斜率。
关于对数目标时间表
(其中,td=td0+(τd-τd0)/v),根据公式(24),媒体时间τd处的斜率是
如果d被定义为重放截止时间与目标时间表之间的距离,即
那么,斜率可以被表示为d的函数
因此,只要d是重放截止时间与控制目标之间的距离,控制目标的斜率都在公式(59)中被设置为s。明确地说,如果
是移位之后的帧n处的控制目标,那么,
被重置为
。然后,使用
和
来代替t
T(n)和t
T(n-1),以便计算公式(37)中的误差向量e(n)。最后得到的误差向量随后被用来计算公式(40)中的理想编码比特率。
对于两段线性目标时间表,通过使用在其间期望控制目标时间表返回到目标时间表的预定义时期,能容易地计算斜率。控制目标时间表的斜率随后可以从距离d和该时期中计算。在本系统和过程的测试实施例中,该时期被设置为50秒。
V.实现细节
本章节突出关于发送器和接收器方的实现细节。
A.虚拟流的生成
在本系统和过程的测试实施例中,细粒可伸缩(FGS)流包括一组数据单元,如果数据单元由客户机来接收,则每个数据单元由表示失真中的每比特减少的拉格朗日乘子λ来标记。如果关于数据单元的λ在阈值以上,那么,数据单元被包括在对应于该阈值的虚拟流内。每个阈值对应于总比特数以及(因而)该虚拟流的平均编码比特率。在测试实施例中,生成N=50个虚拟流。为每个流选择阈值,以便最后得到的流具有在下限与上限之间的对数域内被均匀地隔开的编码比特率。
在流传送期间,当服务器从媒体文件读取数据单元时,如果其拉格朗日乘子λ在流的阈值以上,那么,它在当前正被传送的虚拟流中包括数据单元。
B.发送器处的漏桶计算
对于每个虚拟流,为R=Ravg和R=Rmax脱机预先计算漏桶参数(R,Bmin(R),Fmin d(R)),其中,Ravg=rc是流的平均编码比特率,并且Rmax=2rc。这些漏桶参数在前同步信号中被发送到客户机。
此外,在流传送期间,服务器为每个流执行联机漏桶模拟。明确地说,只要服务器从媒体文件中读取数据单元,它就使用数据单元的拉格朗日乘子和每个流的阈值列表来确定数据单元所属的虚拟流。然后,对于所确定的流,发送器使用公式(2)和(3)来更新具有等于平均编码比特率Ravg的泄漏速率的漏桶的各个状态。一旦从媒体文件读取帧内的所有这些数据单元,发送器就为这些虚拟流中的每个虚拟流计算g(n)=Bmin(Ravg)-Be(n)。在流转换(即,
)时,关于新的流的差距gnew(n)连同如下所述的Δg(n-1)=gnew(n-1)-gold(n-1)一起被传送到客户机。可容易地看到,更新漏桶状态的费用非常低。但是,也可能预先计算这些值并将它们与媒体文件中的每个数据单元存储在一起。
C.初始编码比特率选择
在流会话开始时,发送器需要具备关于可用的网络带宽的一些知识,以便它可以选择初始编码比特率(通常是该带宽的一半)。通过使用诸如数据包对[12]、路径线性调频脉冲(path chrp)[3]等方法或基于历史值的反应性近似值,可以从前摄测量中提取带宽估算。初始带宽估算的确切形式超过该作品的范围。
D.编码比特率转换
来自客户机的速率控制反馈包含在其处生成反馈的帧号(例如,前一章节中的n-2)、以及用比特表示的上限的最大允许位移(例如,前一章节中的Δ
maxg(n-1))。如果发送器发现合适的编码比特率并在帧n处进行转换,那么,它将将以下三个值连同该帧一起传送到客户机:新的编码比特率
、与上限的当前差距g
new(n)和位移Δg(n-1)=g
new(n-1)-g
old(n-1)。利用该信息,客户机可以适当地调整其控制目标时间表以及其上限。注意,编码比特率转换总是在新帧的开端发生,而从来不会在帧的内部发生。
E.客户机处的最佳速率控制
只要新的编码比特率开始,客户机都接收值g(n)以及新的帧。然后,根据编码比特率
和帧大小b(n),客户机本身可以推断出关于接连的帧的g(n)的各个值。客户机记录到达帧时间ta(n),计算缓冲管上限tb(n),然后计算偏差e(n)。如果有编码比特率转换,那么,它也将计算缓冲管位移并相应地调整控制目标时间表。然后,e(n)被馈送到最优速率控制器,该最优速率控制器输出所需的新编码器比特率。只要有返回机会,就将最近的新编码比特率反馈到发送器,该反馈机会可以定时或按需生成。
F.示例性过程
现在将提供关于前述系统的实施的示例性过程,以应用于本发明的一个实施例。
参考图11A-C,对于支持的编码比特率中的每个编码比特率,服务器首先计算定义编码器缓冲区的初始状态的一组参数,因为如果从那里流传送对应于所支持的编码比特率的数据流,则它将会存在(过程动作1100)。这些参数(包括与该数据流相关联的编码比特率、用于该数据流的编码比特率的编码器缓冲区大小、以及指示按该数据流的编码比特率来展示的初始编码器缓冲区充满度的值)在对流媒体数据的前同步信号中被提供给客户机(过程动作1102)。然后,在启动期间,服务器按规定的初始编码比特率将媒体数据流传送到客户机(过程动作1104)。当流传送数据时,服务器计算为服务器所支持的每个编码比特率而生成的每个帧的上限差距(过程动作1106)。最初,客户机使用编码器缓冲区参数在逐帧的基础上为未来帧确定新的最优编码比特率(过程动作1108)。此外,客户机为服务器刚刚在该未来帧之前生成的帧计算前述的最大允许差值,即最大位移值(过程动作1110)。一旦客户机的解码器缓冲区在其中具有确保下溢条件不会按初始编码比特率发生所需的最少数量的数据,客户机也就开始重放它已接收的帧,并且,继续重放其后接收到的每个帧(过程动作1112)。此外,一旦前述启动时期结束,客户机就请求在未来帧处开始按对应于确定的最优编码速率的新编码比特率来提供流媒体数据,,并连同该请求一起提供最大位移值(过程动作1114)。
服务器找出所支持的编码比特率,该编码比特率等于客户机所请求的最优编码比特率,或者如果没有一个相等,则是最接近于该最优编码比特率的较小速率(过程动作1116)。接下来,由服务器确定所找出的所支持的编码比特率是低于还是高于与直接在客户机请求中所指定的那个帧之前生成的帧相关联的编码比特率(过程动作1118)。如果它是较低的,那么,服务器为直接在客户机请求中所指定的那个帧之前生成的帧计算前述位移值(过程动作1120),并且按所找出的所支持的速率从客户机所指定的那个帧开始生成所有未来帧,并连同所计算的上限差距和位移值、以及新编码比特率的指示一起将它们流传送到客户机(过程动作1122)。但是,如果所找出的所支持的编码比特率较高,那么,服务器为直接在客户机请求中所指定的那个帧之前生成的帧计算位移值(过程动作1124),然后确定位移值是小于、还是等于客户机请求中所提供的最大位移值(过程动作1126)。如果位移值小于或等于最大位移值,那么,服务器按所找出的所支持的编码比特率从客户机所指定的那个帧开始生成所有未来帧,并连同所计算的上限差距和位移值、以及新编码比特率的指示一起将它们流传送到客户机(过程动作1122)。但是,如果位移值大于最大位移值,那么,找出下一个较低的所支持的编码比特率(过程动作1128),并重复过程动作1118到1128。
客户机按新的编码比特率将与刚刚接收到的第一个帧相关联的当前调度的目标到达时间位移所提供的位移值,并且位移未来帧的当前调度的目标到达时间,以使它们在一段时间内共同接近那些帧的先前的目标到达时间并最后与其相符(过程动作1130)。然后,客户机使用服务器所提供的编码器缓冲区参数和上限差距值,来确定未来帧的新的最优编码比特率,并计算服务器刚刚在该未来帧之前生成的那个帧的最大位移值(过程动作1132)。客户机请求从客户机所指定的未来帧处开始按对应于所确定的最优编码速率的新的编码比特率来提供流媒体数据,并且包括所计算的最大位移值(过程动作1134)。然后,在流媒体数据传输的持续时间内,重复过程动作1116到1134。
VI.多比特率流
多比特率(MBR)流是普遍用于商业流媒体系统中的网络自适应技术。在MBR流中,与可伸缩流对比而言,内容按不同的编码比特率而被编码成几个(通常是5-7个)独立的流。经常为普通类型的网络连接(例如,拨号、DSL、电缆)优化每个流。在MBR流会话期间,根据可用网络带宽来动态地选择适当的编码比特率,其目标是在不间断重放的条件下实现可能的最高质量。可容易地看到,MBR流类似于可伸缩流。的确,MBR流可以被视作具有有限数量的可用编码比特率的可伸缩流的特殊情况。因此,前述最优控制方法应该可适用于这种情况。
但是,有几个差异使MBR流变得复杂,它们需要仔细地加以处理。首先,如刚刚提及的,在MBR流中,只有有限数量的编码比特率可用。所需编码比特率的该粗略量化将重大的非线性引入闭循环系统。实际上,可用的编码比特率之间的大差距引入振荡。例如,如果两个邻近的编码比特率跨在恒定的到达速率上,那么,控制器将在这两个编码比特率之间振荡,以试图将客户机缓冲区保持在目标级。
其次,在MBR流中,编码比特率无法在任意时间转换。实际上,在服务器可以转换到新的流之前,它可能必须等候该新的流中的下一个清洁点(例如,I帧),它可以有五或十秒远。这样,在它更改成新的编码比特率之前,老的编码比特率可以继续相当一段时间。从控制器的观点来看,该长随机额外延迟往往会破坏闭循环系统的稳定。
再次并且最后,在MBR流中,服务器性能问题至关紧要。使用MBR流的商业级流媒体系统这样做,因为与可伸缩流相比,它施加给服务器的计算负担最小。这样,对于MBR流,在客户机方上保持几乎所有的计算和状态维持是很重要的。特别是,服务器将不能为每个流更新漏桶信息。而是客户机必须使用用于估算和保持该信息的某一机制。
A.保守的向上转换
在这一小节中,描述一种有助于使控制系统稳定并将稳定状态振荡减少到至少一分钟的时期的技术。利用这项技术,准许进行迅速的向下转换。实际上,σ的值从2000减少到500,从而有利于迅速转换响应而改变编码比特率的响应性与平滑度之间的平衡。但是,只准许保守的向上转换。保守的向上转换确保编码比特率中不会发生虚假的变化,并且,编码比特率中的振荡具有低频。特别是,保守的向上转换减少两个邻接但间隔较远的MBR编码比特率(一个在到达速率以上,一个在到达速率以下)之间的振荡。
在一个实施例中,保守的向上转换建立保守界限,该保守界限将编码比特率只局限于到达速率。但是,在另一个实施例中,支持保守的向上转换的方法是对编码比特率可以被提高到到达速率以上多少建立保守界限。如果当前编码比特率在到达速率以下,并且客户机缓冲区持续时间开始增加到其目标级以上,那么,只有当新的编码比特率在该保守界限以下时,编码比特率才可以被向上转换到到达速率以上的新的编码比特率。当客户机缓冲区持续时间在目标级处开始时,保守界限等于到达速率。但是,随着客户机缓冲区持续时间的增加,保守界限也增加。这样,如果当前编码比特率在到达速率以下,并且,下一个较高的编码比特率在到达速率以上,那么,只有在客户机缓冲区持续时间已充分地增加之后,才可能向上转换到下一个较高的编码比特率,以便保守界限升高到较高的编码比特率以上。一旦编码比特率被向上转换到较高的编码比特率,客户机缓冲区就开始排空,因为编码比特率随后在到达速率以上。最后,当缓冲区排空回到其目标级以下时,控制器将迅速把编码比特率向下转换回到到达速率以下的编码比特率。
给定当前客户机缓冲区持续时间,保守界限被设置为一个值,以使如果编码比特率被向上转换到这个值处的新的编码比特率,那么,客户机缓冲区将会花费至少Δt秒的客户机时间来排空回到目标级。这样,该机制确保振荡周期将至少是Δt秒。在本系统和过程的测试实施例中,Δt被设置为60秒。
图12示出了如何计算保守界限。当编码比特率从rc old被向上转换成rc new时,设Δτ1为客户机缓冲区持续时间(用媒体时间表示)。这样,Δτ1是内容的秒数;在内容开始按新的编码比特率来消耗之前,该内容将按老的编码比特率rc old来消耗。(为简单起见,假设转换时客户机缓冲区中的全部内容按速率rc old来编码。)设Δτ2为内容的秒数;在客户机缓冲区持续时间落到大于目标级ΔτT的某个等级Δτ3秒(用媒体时间表示)之前,该内容按新的编码比特率rc new来消耗。确定这个阶段的持续时间,以使自从转换以来的总时间确切地是Δt=(Δτ1+Δτ2)/v秒(用客户机时间表示)。现在,本次到达的比特数是
或
其中,ΔtT是用客户机时间表示的目标缓冲区持续时间。可以调整参数Δt,以产生所需的行为。大的Δt意味着向上转换将更保守,而较小的Δt意味着向上转换将更迅速。在测试实施例中,Δt被设置为60秒,而目标ΔtT通常是大约10秒。
B.缓冲管上限估计
在章节V-D中,指定在编码比特率中的每个变化开始时,服务器向客户机发送三个值:新的编码比特率
、与上限的当前差距gnew(n)、以及控制目标位移Δg(n-1)=gnew(n-1)-gold(n-1)。服务器通过为每个编码比特率运行漏桶模拟器,来计算后两个值。客户机通过为新的编码比特率运行其自己的漏桶模拟器,来继续为新的编码比特率更新g(n)。即,始于初始条件Fe(n)=B-b(n)-gnew(n),对于每个接连的帧,客户机计算
Be(n)=Fe(n)+b(n) (61)
其中,
是瞬间帧速率,如同公式(2)、(3)和(4)中一样。从这一点,客户机可以为每个帧计算
g(n)=B-Be(n) (64)
但是,如果服务器不能模拟这些漏桶并且无法将gnew(n)发送到客户机,那么,客户机必须为自身估算该信息。在此情况下,建议客户机将gnew(n)估算为上限(例如,
)。然后,始于初始条件
(它在此情况下等于0),对于每个接连的帧,客户机计算
以及
通过归纳,可容易地看到:
和
。而且,只要δ(n)>0(即,只要Fe(n+1)在公式(66)中消减为0),这些限度每个都通过 而变得更紧密。实际上,假设给予足够的时间,它们最后可能会变得紧密。
注意,只要限度通过δ(n)>0而变得紧密,控制目标都必须移位
,其中,Δg(n)=-δ(n)。另外,只要n是新的编码比特率的第一个帧,控制目标都应该移位
,其中,
。这里,通过为在一个额外的步骤中运行公式(65)、(66)和(67),即如果n是新的编码比特率的第一个帧,则可以确定
。
容易看到,如果
,那么,如公式(68)中所计算的那样
。
VII.发送器驱动流
前述讨论已假设用于使流或其比特率适应流行条件的控制过程位于客户机内。这被称作“接收器驱动流”,因为客户机(即接收器)作出决定并通知服务器(即发送器)。但是,应该清楚,发送器驱动流也可能存在,其中,控制过程在发送方进行操作。例如,通过为流媒体数据的传输使用TCP,控制过程可以在服务器处进行操作,从而测量每个帧的传输时间并估算传输速率;而不是控制过程在客户机处进行操作,从而测量每个帧的到达时间并估算到达速率。通过使用TCP,帧的传输时间实质上与其到达时间相同,同样,传输速率实质上与其到达速率相同;因此,可以交换地使用这些。通常,数据包的传输时间或到达时间可以被称作“时间标记”。在发送器驱动流中,通过知道它已传送了什么,并通过知道所传送的帧的播放时间,服务器可以推断出客户机缓冲区的状态。发送器驱动流减少在客户机与服务器之间传达控制信息的管理费用,但它也增加对服务器的计算负担。在一些情况下,这可能是所需的权衡。本领域的技术人员将会理解:可以将这里所描述的协议适当地修改成其中控制算法驻留在服务器或另一个位置中(而不是在客户机中)的情况。
[1]G.J.Conklin、G.S.Greenbaum、K.O.Lillevold、A.F.Lippman和Y.A.Reznik.Video coding for streaming media delivery on the Internet(关于因特网上的流媒体传递的视频编码),IEEE会报,Circuits and Systems for Video Technology(关于视频技术的电路和系统),11(3):269-281,2001年3月,special issue on Streaming Video(关于流视频的特殊期刊).
[2]T.Wiegand和G.Sullivan.Joint video specification(联合视频说明书)rec.h.264& 14496-10 avc,Non-Final Draft of Final Draft International Standard(最后草案国际标准(FDIS))JVT-G050的非最后草案,ITUT & ISO/IEC,Pattaya,泰国,2003年3月.
[3]V.J.Ribeiro、R.H.Riedi、J.Navratil、L.Cottrell和R.G.Baraniuk.,pathchirp:efficient available bandwidth estimation for network paths(关于网络通路的有效率的可用带宽估算)。Passive and Active Measurement Workshop(PAM)(被动与主动测量专题研究组)会刊,(PAM),La Jolla,CA,2003年4月.
[4]R.Rejaie、M.Handley和D.Estrin.,Layered quality adap-tation for Internetstreaming video(关于因特网流视频的分层质量适应),IEEE J.,Selected Areas inCommunications(通信中的选择区域),18(12):2530-2543,2000年12月.
[5]Q.Zhang、Y.-Q.Zhang和W.Zhu.,Resource allocation for multimediastreaming over the Internet(关于因特网上的多媒体流的资源分配),IEEE会报,Multimedia(多媒体),3(3):339-355,2001年9月.
[6]B.-J.Kim、Z.Xiong和W.A.Pearlman.,Low bit-rate scalable video codingwith 3D set partitioning in hierarchical trees(具有层次树中的3D集合分区(3-DSPIHT)的低比特率可量测视频编码),IEEE会报,
Circuits and Systems for Video Technology(关于视频技术的电路和系统),10(8):1374-1387,2000年12月.
[7]F.Wu、S.Li和Y.-Q.Zhang.,A framework for efficient progressive finegranularity scalable video coding(关于有效率的渐进小颗粒状可量测视频编码的构架),IEEE会报,Circuits and Systems for Video Technology(关于视频技术的电路和系统),11(3):301-317,2001年3月.
[8]J.Li.Embedded audio coding(eac)with implicit psychoacoustic masking(具有含蓄的音质掩蔽的嵌入音频编码(eac)),Int’l Conf.Multimedia(国际会议多媒体)会刊,第592-601页,Nice,法国,2002年12月,ACM.
[9]P.de Cuetos和K.W.Ross.,Adaptive rate control for streaming storedfine-grained scalable video(关于流存储的细粒可量测视频的自适应速率控制),Int’lWorkshop on Network and Operating Systems Support for Digital Audio and Video(NOSSDAV)(关于数字音频与视频的网络和操作系统支持(NOSSDAV)方面的国际专题研究组)会刊,迈阿密海滩,FL,2002年5月.
[10]J.Ribas-Corbera、P.A.Chou和S.Regunathan.,A generalized hypotheticalreference decoder for H.264/AVC(关于H.264/AVC的概括的假定参考解码器),IEEE会报,Circuits and Systems for Video Technology(关于视频技术的电路和系统),13(7),2003年7月.
[11]B.D.O.Anderson和J.B.Moore.,Optimal Control:Linear QuadraticMethods(最佳控制:线性二次公式方法),Prentice Hall,1990年.
[12]S.Keshav.,Packet-pair flow control(数据包对流控制),http://www.cs.cornell.edu/-skeshav/papers.html.
[13]P.A.Chou和Z.Miao,Rate-distortion optimized streaming of packetizedmedia(分组媒体的速率失真优化流),Microsoft Research Technical Report(微软研究技术报告)MSR-TR-2001-35,2001年2月.