该非临时专利申请根据35 U.S.C§119(e)要求Krishna Balachandran、Doru Calin、Eunyoung Kim和Kiran Rege于2007年8月24日提交的申请号为60966020(案卷号Balachandran 52-14-6-45)的临时专利申请以及Krishna Balachandran、Doru Calin、Eunyoung Kim和Kiran Rege于2007年8月24日提交的申请号为60966017(案卷号Balachandran 53-15-7-46)的临时专利申请的优先权。这些申请的每一个的全部内容在此并入作为参考。
该非临时专利申请与Krishna Balachandran、Doru Calin、EunyoungKim和Kiran Rege于2007年4月14日提交的申请号为11674802(案卷号Balachandran 45-11-3-36)以及Krishna Balachandran、Doru Calin、Eunyoung Kim和Kiran Rege于2007年4月14日提交的申请号为11674858(案卷号Balachandran 48-13-5-43)的美国专利申请有关,这些申请的每一个的全部内容在此并入作为参考。
具体实施方式
下面描述本发明的示例实施例。为了清楚起见,在该说明书中不描述实际实现的全部特征。当然,要理解,在任何这种实际实施例的开发中,为了实现开发人员的特定目标,诸如遵从与系统相关的和与商业相关的约束,所述约束将视实现不同而不同,应当作出众多专用于实现的决定。而且,要理解,这样的开发努力可能是复杂而又耗费时间的,不过对于受益于本公开的普通技术人员来说仍是例行任务。
本发明的各部分以及相应的详细描述以软件、算法以及计算机存储器内的数据比特上的操作的符号来进行呈现。这些描述和表示正是本领域普通技术人员用来向本领域的其他普通技术人员有效传达他们工作的实质的那些描述和表示。算法,如此处所使用以及一般所使用的,被设想为导致预期结果的前后一致的步骤序列。所述步骤是要求物理量的物理操作的那些。通常,尽管不是必要的,这些量采用能够被存储、传送、组合、比较和另外操作的光、电或磁信号的形式。有时称这些信号为比特、值、元素、符号、字符、术语、数量、或诸如此类,主要出于共同使用的原因,已被证明是便利的。
不过,应当铭记,所有这些和类似的术语是与适当的物理量相关联的,并且仅是应用于这些量的便利标签。除非另外专门指出,或者从讨论中显而易见,诸如“处理”或“运算”或“计算”或“确定”或“显示”或诸如此类的术语,指的是计算机系统或类似电子运算设备的动作和过程,所述计算机系统或类似电子运算设备操作并且将被表示为计算机系统的寄存器和存储器内的物理电子量的数据转换为被类似表示为计算机系统存储器或寄存器或其他这种信息存储、传输或显示设备内的物理量的其他数据。
还要注意,通常在某种形式的程序存储介质上编码或者经过某种类型的传输介质实现本发明的软件实现的各方面。程序存储介质可以是磁的(例如,软盘或硬盘)或光的(例如,光盘只读存储器,或“CD ROM”),并且可以是只读或随机存取的。类似地,传输介质可以是双绞线对、同轴电缆、光纤、或本领域熟知的某种其他适合的传输介质。本发明不受任何给定实现的这些方面的限制。
现在将参考附图描述本发明。出于解释目的,并且为了不使本领域技术人员所熟知的细节模糊本发明,在附图中仅示意性地示出各种结构、系统和设备。然而,附图被包括,以描述和解释说明性例子。对此处使用的词语和短语的理解和解释应当与相关领域的技术人员对那些词语和短语的理解一致。
如此处所使用的,术语“移动客户端”可以被视为与客户端、移动台、移动单元、移动站、移动用户、用户装备(UE)、订户、用户、远程站、接入终端、接收器等同义,并且可以在下文被偶尔称为客户端、移动台、移动单元、移动站、移动用户、用户装备(UE)、订户、用户、远程站、接入终端、接收器等,并且可以描述无线通信网络中的无线资源的远程用户。术语“基站”可以被视为与基站收发器站(BTS)、节点B、扩展节点B、家用基站、接入点等同义,和/或被称为基站收发器站(BTS)、节点B、扩展节点B、家用基站、接入点等,并且可以描述提供用于网络和一个或多个用户之间的数据和/或语音连接的无线电基带功能的装备。
图2概念性地示出用于经过无线网络流送媒体的系统的示例实施例。媒体服务器215和移动客户端210之间的整个网络被称为无线网络,即使它可以包括无线以及有线段。GGSN 220和移动客户端210之间的网络段将被称为无线接入网络223。
参考图2,无线接入网络223包括经过空中接口向一个或多个移动客户端或单元210(被称为“客户端”)流送媒体的一个或多个基站207。媒体(例如,音频、视频等)由媒体服务器215经由网关GPRS支持节点(GGSN)220、服务GPRS支持节点(SGSN)203和无线电网络控制器(RNC)230A提供。无线接入网络223、基站207、客户端210、媒体服务器215、SGSN 203、GGSN 220和RNC 230A、230B可以根据通用移动电信系统(UMTS)(3GPP)标准和/或协议来操作。
在流媒体会话中,实时传输协议(RTP)可以被用来承载媒体内容(例如,语音、视频、音频等),并且相关联的实时控制协议(RTCP)可以被用来承载相关联的控制分组。下文将更详细地讨论RTCP消息。实时流协议(RTSP)可以被用于传输用于会话建立(包括能力协商/交换)、拆除和某些用户动作(例如,暂停、快进等)的消息。
关于RTP/RTCP和RTSP的细节如分别在互联网工程任务组请求注解(IETF RFC)1889和2326中所讨论的,是众所周知的。
尽管关于特定标准和/或协议讨论了示例实施例,示例实施例也可以被应用于任何其他无线网络技术和标准,例如,cdma2000高速率分组数据(HRPD)或IEEE 802.16e/WiMAX。例如在cdma2000 HRPD的情况中,系统200与图2中相同,除了服务GPRS支持节点(SGSN)203和网关GPRS支持节点(GGSN)220被称为分组数据服务节点(PDSN)的单个实体取代。在802.16e/WiMAX情况中,SGSN 203、GGSN 220和由RNC230实施的特定功能可以被并入到被称为接入服务网络(ASN)网关的单个实体中。
此外,尽管示出了分层体系结构,此处描述的技术也可以被应用于基于扁平互联网协议(扁平-IP)的体系结构,其中,3层(IP)路由和与无线接入网络223相关的控制功能由基站207实施。
根据示例实施例,客户端210支持具有或不具有用于透明端到端分组交换流服务的3GPP扩展的标准RTSP/RTCP信令。
在媒体会话期间,客户端210向媒体服务器215定期发送RTCP(反馈)分组(“接收方报告消息”或“接收方报告”),以通知媒体服务器215性能度量,所述性能度量诸如丢失分组比(自上一次类似报告起)、累积丢失分组数、所接收的最高(RTP)序号、与最后发送方的报告(从服务器接收的)相关联的RTP时间戳、自接收最后发送方的报告起经过的时间、与要解码的下一应用数据单元相关联的RTP序号、至下一应用数据单元的解码为止的延迟、空闲缓冲空间(客户端处)以及诸如此类。先前性能度量列表的后三个与用于分组交换流服务的3GPP扩展一致,而其余则是在接收方报告消息中包括的更标准的反馈项目。除了接收方报告中包括的这些项目外,每一个RTCP分组还可以承载时间戳,所述时间戳可以被服务器用来将报告与特定时间点相关。客户端210可以以与其自身能力和无线网络的容量一致的速率发送RTCP反馈分组。通常,这样的反馈分组被相当稀少地发送,例如,每3到4秒一次。下文中,客户端210发送RTCP反馈分组的间隔以TR表示。
仍旧参考图2,无线通信系统200进一步包括信令代理225。信令代理225可以被实现为代理服务器,并且被连接到诸如网关GPRS支持节点(GGSN)220的无线接入网络实体。但是,信令代理225可以被连接到诸如服务GPRS支持节点(SGSN)203或其他实施例中的无线电网络控制器(RNC)230A、230B的其他接入网络实体。
在另一例子中,在包括以扁平体系结构为特征的基站路由器的接入网络的情况中,信令代理225可以被连接到基站本身。
在Balachandran等人的申请号为11674858的有关未决专利申请中所讨论的,当建立、拆除媒体会话时和在媒体会话期间,客户端210经过无线网络200发送要发往媒体服务器215的RTSP和/或RTCP消息。根据示例实施例,GGSN 220从客户端210截取RTSP和RTCP消息,并且将这些消息发往信令代理225而不是媒体服务器215。
图3示出用于在无线网络中动态设置媒体会话的内容速率的方法的示例实施例。响应经由GGSN 220从客户端210接收初始RTSP消息,实施图3中的方法。将关于图2中示出的网络并且特别地如在信令代理225处所实施的,讨论图3的方法。
参考图2和3,在步骤S305,响应来自客户端210的初始RTSP消息,信令代理225在其本地数据库(未示出)中为新媒体会话创建条目。所述初始RTSP消息指示即将建立新媒体会话。
在步骤S307,信令代理225在媒体会话的能力协商阶段期间监控客户端210和媒体服务器215之间交换的随后的RTSP消息,以从RTSP消息获得会话参数(例如,客户端缓冲尺寸、接收方报告被发送的时间间隔等)。因为实施能力协商和会话建立的方式在本领域中是众所周知的,因而,将省略对其的详细讨论。
当信令代理225知道将建立媒体会话(例如,经由来自客户端的“SETUP(建立)”RTSP消息)时,信令代理225向RNC 230A发送会话建立指示消息(在步骤S309),相应的媒体流通过所述RNC 230A被递送。
还是在步骤S309,信令代理225设置指定时间段的计时器,在所述时间段期间,信令代理225等待来自RNC 230A的RAB建立消息。在计时器到期时,如果信令代理225没有从RNC 230A(在步骤S311)收到RAB建立消息,信令代理225从其本地数据库(在步骤S313)删除会话条目,并且该方法终止。
返回步骤S311,如果信令代理225在计时器到期前接收用于即将建立的媒体会话的RAB建立消息,信令代理225关掉计时器,并且在步骤S315设置会话标记为0。信令代理225然后在步骤S317进入等待状态。在等待状态期间,信令代理225等待来自RNC 230A的信道/网络状况反馈消息,以及来自客户端210的接收方报告(或RTCP)消息。如此处所讨论的,信道/网络状况反馈消息也被称为网络状况反馈消息或信道条件反馈消息。信道/网络状况反馈消息包括所述网络的当前信道条件信息。网络的当前信道条件信息包括例如反馈源的标识符、最大传输速率参数Ws以及可选地其他相关性能度量,所述其他相关性能度量诸如属于在RNC 230A处的缓冲中等待的媒体会话的互联网协议(IP)分组的数量、相应字节计数以及诸如此类。
可以基于在先前信道条件反馈间隔(长度Tp秒)期间被递送到客户端210的IP分组数、可用于媒体会话的传输机会数以及在先前间隔期间实际被用来承载数据的传输机会数来计算最大传输速率参数Ws。通过专用信道,属于该专用信道的传输块表示传输机会。
在更详细的例子中,持续时间Tp秒的第n个间隔的最大传输速率参数Ws可以被设置为等于可用带宽参数WA(n),所述可用带宽参数WA(n)通过以下来给出(以每秒的字节为单位):
WA(n)=MD(n)*KA(n)/(KU(n)*TP)
在以上等式中,KA(n)和KU(n)分别表示可用于媒体会话的传输机会数和在第n个信道条件反馈间隔(长度Tp秒)期间被实际用来承载数据的传输机会数。变量MD(n)表示与在该间隔期间被实际递送到客户端210的分组相关联的字节计数。第n个信道/网络状况反馈间隔的最大传输速率参数WS(n)可以被设置为等于可用带宽参数WA(n),或者可以根据以下启发式来设置:
WS(n)=αL*WA(n) 如果Q(n)<βL,
=αH*WA(n) 如果Q(n)>βH,
=WA(n)其他情况
在以上启发式中,Q(n)是在第n个信道/网络状况反馈间隔结束时属于在RNC 230A中排队等候的媒体会话的数据量。βH是某种“高水位标志(high watermark)”,βL是某种“低水位标志”,其中,βH>βL。参数aL和aH是常量,并且aH<1且aL>1。
在一个例子中,通过每会话20K字节专用RNC 230A缓冲,βH和βL可以被分别设置为等于10K字节和2K字节,而aH和aL可以被分别设置为等于0.5和1.5。
信令代理225期待每Tp秒从RNC 230A接收信道/网络状况反馈消息,每TR秒从客户端设备210接收接收方报告消息。
仍旧参考图3中的步骤S317,当信令代理225从客户端210接收第一接收方报告消息时,信令代理225在步骤S319将会话标记设置为1。信令代理225然后在步骤S320存储来自所接收的接收方报告消息的相关信息,并且设置反馈类型指示符为1。无论何时信令代理从客户端210接收(并且处理)接收方报告消息时,反馈类型指示符被设置为1。
如以上所指出的,信令代理225从RNC 230A相对频繁地接收信道/网络状况反馈消息(例如,每100毫秒一次)。但是,只要会话标记等于0,信令代理225就忽略该信道/网络状况反馈消息。在第一接收方报告消息被接收并且会话标记在步骤S319被设置为1后,信令代理225在步骤S321进入另一等待状态。在该状态中,信令代理225等待来自RNC 230A的信道/网络状况反馈消息和来自客户端210的接收方报告消息。
仍旧参考图3中的步骤S321,响应来自RNC 230A的所接收的信道/网络状况反馈消息,信令代理225在步骤S322确定反馈类型指示符是否等于1。如果反馈类型指示符被设置为1,信令代理225在步骤S326向媒体服务器215发送包括扩展反馈报告(此处被称为扩展反馈报告消息)的代理-服务器反馈消息。信令代理225然后在步骤S328重置反馈类型指示符为0。在向媒体服务器215传输扩展反馈报告消息后,信令代理225返回到步骤S321的等待状态。
扩展反馈报告消息具有RTCP分组形式,并且包括在最近接收的来自客户端210的接收方报告消息中包含的所有信息(例如,所接收的最高RTP序号、要解码的下一应用数据单元等)以及最大传输速率参数(Ws)。另外,扩展反馈报告可以包括在最近接收的来自RNC 230A的信道/网络状况反馈消息中包括的其他参数。
在另一实施例中,信令代理225可以等待接收多个信道/网络状况反馈消息,处理这些消息并且产生具有修改的最大传输速率参数modWs形式的修改的信道/网络状况反馈。在一个例子中,所述修改的最大传输速率参数modWs可以被计算为在最后K信道/网络状况反馈消息(其中K是整数)中报告的最大传输速率参数Ws的加权平均值。在另一实施例中,信令代理225可以通过共同处理最近接收的信道/网络状况反馈消息与所存储的来自之前接收的信道/网络状况反馈消息和/或接收方报告的处理信息,产生修改的信道/网络状况反馈。
此处将关于最大传输速率参数Ws讨论示例实施例,然而,将理解,以上讨论的修改的最大传输速率参数modWs可以代替最大传输速率参数Ws被使用。
当信令代理225向媒体服务器215发送扩展反馈报告消息时,信令代理225使用来自客户端210的最近接收方报告消息的RTP时间戳作为扩展反馈报告消息的RTP时间戳。
返回到步骤S322,响应所接收的信道/网络状况反馈消息,如果信令代理225确定反馈类型指示符等于0,信令代理225在步骤S324发送包括短反馈报告(下文被称为短反馈报告消息)的代理-服务器反馈消息。短反馈报告消息也可以是RTCP分组形式。短反馈报告至少包括最大传输速率参数(Ws),但是也可以包括以上讨论的在最近接收的来自RNC 230A的网络/信道条件反馈消息中包括的其他参数。然而,与扩展反馈报告消息不同,短反馈报告消息不包括接收方报告信息。
当信令代理225发送短反馈报告消息时,信令代理225使用其本地时钟时间来产生RTP时间戳。信令代理225可以使用与来自客户端210的接收方报告消息相关联的RTP时间戳来将其时钟时间与客户端210的时钟时间同步。
在向媒体服务器215传输短反馈报告消息后,信令代理225返回到步骤S321的等待状态,并且如此处所讨论的继续。
再次返回到步骤S321,如果在等待状态接收的消息是来自客户端210的接收方报告消息,信令代理225返回到步骤S320,实施与其相关联的动作,并且进入步骤S321的等待状态。
当媒体会话被来自客户端210或媒体服务器215的适当RTSP消息终止时,信令代理225删除其本地数据库中用于该会话的条目,停止向媒体服务器215发送代理-服务器反馈消息,并且指导RNC 230A停止发送信道/网络状况反馈消息。
尽管此处关于扩展反馈报告讨论了示例实施例,所述扩展反馈报告是通过组合来自客户端210的最近接收方报告消息的信息与来自RNC 230A的最近网络/信道条件反馈消息中包含的信息产生的,来自最近接收方报告消息的信息和来自最近网络/信道条件反馈消息的信息可以被单独保存,并且被单独报告到媒体服务器215。在这样的配置中,无论何时信令代理225从客户端210接收接收方报告消息,信令代理225向媒体服务器215转发所接收的接收方报告消息(例如,在记录其内包含的信息的至少一部分之后)。
类似地,在接收来自RNC 230A的网络/信道条件反馈消息时,信令代理225向媒体服务器215发送单独的代理-服务器消息,所述单独的代理-服务器消息包含最大传输速率参数Ws和在网络/信道条件反馈消息中包括的其他相关信息。
如以上所讨论的,信令代理225向媒体服务器215定期(以规则的间隔)发送代理-服务器反馈消息。规则的间隔可以是几百毫秒级(例如,大约100毫秒到大约1000毫秒或1秒)。响应这些消息的至少一些,媒体服务器215可以设置媒体会话的内容速率。
内容速率是指在媒体会话期间播放媒体(例如,语音、视频、音频等)的速率。内容速率对应承载对应媒体流所需要的平均传输速率。可以通过适当的编码和解码(稀释)的组合,来实现用于媒体流的给定内容速率。通常,内容速率越高,最终用户的媒体质量越好。
从媒体服务器215的角度,用于内容速率选择的方法在从客户端210(从信令代理225转发的)接收初始RTSP消息时开始。RTSP消息通知媒体服务器215客户端210希望建立媒体会话。媒体服务器215然后参与用于能力协商(交换)和会话建立的随后的消息交换。
在从存储设备正流送媒体的情况中,媒体可以在不同的内容速率被编码,并且被存储用于未来使用。对于直播流媒体会话,编码可以“在运行中(on the fly)”进行。当媒体正被流送时,媒体服务器215为媒体选择内容速率,并且基于所选择的内容速率,媒体服务器215提取包含媒体帧的适当文件、将这些文件分组化,并且向客户端210传输所选择的文件。内容速率选择通常在媒体会话持续期间被经常实施。
一旦能力交换和会话建立完成,媒体服务器215开始向客户端210流送媒体帧。媒体服务器215还开始从信令代理225接收代理-服务器反馈消息。
在流媒体会话期间,媒体服务器215实施动态内容速率选择和帧传输调度。
在媒体服务器215处选择内容速率的目的,是在由当前信道条件施加的约束内,使媒体质量最大化。在基于会话建立期间与客户端210协商的参数初始设置媒体会话的内容速率后,媒体服务器215基于波动的信道条件动态调整媒体会话的内容速率。
因为客户端210处的缓冲状态提供当前内容速率是否可持续、可以被提高或者鉴于当前信道条件需要被降低的指示,媒体服务器的内容速率选择决定受来自客户端210的反馈的驱动。
图4A和4B示出根据示例实施例用于媒体服务器处的内容速率选择的方法。
参考图4A,在实施与客户端210的用于媒体会话的能力协商后,媒体服务器215根据所协商的参数设置内容速率。在初始设置内容速率后,媒体服务器215在步骤S504初始化多个内容速率选择度量为0。这些多个内容速率选择度量包括有利信道条件度量Cons_RTCP_Up、不利信道条件度量Cons_RTCP_Dn、累积缓冲内容消耗度量Bfr_Dep1_Ct以及先前缓冲内容度量Old_Bfr_Cont。媒体服务器215还初始化计时器值Bfr_Depl_Timer为0。
有利信道条件度量Cons_RTCP_Up是计数指示媒体会话的有利信道条件的连续代理-服务器反馈消息的数量的计数器值。不利信道条件度量Cons_RTCP_Dn是计数指示媒体会话的不利信道条件的连续代理-服务器反馈消息的数量的计数器值。
根据至少一些示例实施例,基于给定的、预期的或预先确定的由一个或多个报告度量满足的准则,信道条件可以被确定为是不利的,所述一个或多个报告度量诸如掉到门限下的客户端缓冲级别等。
累积缓冲内容消耗度量Bfr_Dep1_Ct表示经过给定时间窗口在客户端缓冲处的内容减少量。计时器Bfr_Depl_Timer是被用来跟踪时间窗口的计时器,经过所述时间窗口,累积缓冲内容消耗度量Bfr_Dep1_Ct被积聚。Bfr_Depl_Timer可以被选择为跨越从信令代理225到媒体服务器215的整数量的扩展反馈信令时间段。媒体服务器215使用累积缓冲内容消耗度量Bfr_Dep1_Ct来积聚经过给定时间窗口的消耗Delta值(也被称为逐步下降)。在给定时间窗口期间,在接收每一个扩展反馈报告消息时,累积缓冲内容消耗度量Bfr_Dep1_Ct被更新。累积缓冲内容消耗Bfr_Dep1_Ct表示自时间窗口开始起的全部缓冲内容消耗,并且可以指示客户端缓冲内容的稳步下降。
消耗度量Delta指示信道短期不能支持媒体会话的当前内容速率。如此处所讨论的,消耗度量Delta也被称为“逐步下降”,并且被定义为先前缓冲内容度量Old_Bfr_Cont和(当前)缓冲内容度量N_Buffer之间的差。先前缓冲内容度量Old_Bfr_Cont是指在最近的先前扩展反馈报告消息中报告的先前缓冲内容。
仍旧参考图4A,在初始化多个内容速率选择度量后,媒体服务器215在步骤S506进入等待状态。当处于等待状态时,媒体服务器215等候来自信令代理225的代理-服务器反馈消息的到达。
在接收代理-服务器反馈消息时,媒体服务器225在步骤S507确定代理-服务器消息是扩展反馈报告消息还是短反馈报告消息。
如果所接收的代理-服务器反馈消息是短反馈报告消息,媒体服务器215在步骤S508设置流速率(传输速率)等于短反馈报告消息中报告的最大传输速率参数Ws。媒体服务器215然后返回到步骤S506的等待状态,并且如此处所讨论的继续。根据示例实施例,流速率是媒体帧被媒体服务器215实际传输的速率。流速率可以不同于内容速率。内容速率选择典型地基于对信道条件的中期估计来进行。流速率设置受对信道条件的短期观察驱动。然而,对于相对长的时间段,平均流速率可能并不与平均内容速率不同。例如,如果对于大量时间,平均流速率小于平均内容速率,客户端设备210可能最终用完要播放的内容。
返回到步骤S507,如果所接收的代理-服务器反馈消息是扩展反馈报告消息,媒体服务器215在步骤S510设置流速率等于在扩展反馈报告消息中报告的最大传输速率Ws。
在步骤S512,媒体服务器215基于扩展反馈报告消息中包含的信息确定帧序号N_Last和N_Next。帧序号N_Last是客户端210接收的最后帧的序号。媒体服务器215从扩展反馈报告消息中报告的最高RTP序号确定序号N_Last。序号N_Next是客户端210接收的最早帧的序号。媒体服务器215从与扩展反馈报告消息中报告的要解码的下一应用数据单元相关联的RTP序号中确定序号N_Next。
代替使用与帧相关联的序号,媒体服务器215可以使用时间戳作为相应的标识符。如果时间戳被用作标识符,与内容速率选择决定相关联的运算是按时间单位而不是帧单位。例如,缓冲内容将以播放相应帧所花费的时间量方面给出,而不是以缓冲中包含的帧的实际数量方面给出。
返回图4A,在步骤S512确定序号N_Last和N_Next后,媒体服务器215在步骤S514基于序号N_Last和N_Next计算/估计与客户端210(或替代地媒体会话本身)相关联的缓冲内容度量N_Buffer。客户端缓冲内容度量N_Buffer表示客户端210处的缓冲的当前内容。
更详细地,媒体服务器215如下设置度量N_Buffer、Delta和Bfr_Depl_Ct:
N_Buffer←N_Last-N_Next;
Delta←Old_Bfr_Cont-N_Buffer,以及
Bfr_Depl_Ct←Bfr_Depl_Ct+Delta
尽管图中没有特别示出,应当注意,在时间窗口的开始,N_Buffer、Delta和Bfr_Depl_Ct每一个均被初始化为0,经过所述时间窗口计算Bfr_Depl_Ct。
仍旧参考步骤S514,媒体服务器215以1递增缓冲消耗计时器Bfr_Depl_Timer(Bfr_Depl_Timer←Bfr_Depl_Timer+1)。
仍旧参考图4A,在步骤S516,媒体服务器215比较缓冲内容度量N_Buffer与最小门限值T_Lower。门限值T_Lower是就帧的数量而言的。如果缓冲内容度量N_Buffer掉到最小门限T_Lower下,媒体服务器215确定信道条件的进一步波动可以导致客户端210处缓冲完全流失(draining),这造成重新缓冲。相应地,媒体服务器215在步骤S556设置有利信道条件度量Cons_RTCP_Up为0,以1递增不利信道条件度量Cons_RTCP_Dn。该方法然后进入步骤S538(在图4B中示出并且在下文更详细讨论)。
如果缓冲内容度量N_Buffer大于或等于门限T_Lower,媒体服务器215在步骤S518比较缓冲内容度量N_Buffer与中间较低门限T_Inner。还是在步骤S518,媒体服务器215比较消耗度量Delta与逐步下降门限Down_Step。
如果在步骤S518,缓冲内容度量N_Buffer小于中间较低门限T_Inner并且消耗度量Delta大于逐步下降门限Down_Step,媒体服务器215再次确定信道条件不利于当前内容速率。相应地,媒体服务器进行步骤S556,并且如此处所讨论的继续。返回到步骤S518,如果缓冲内容度量N_Buffer大于或等于中间较低门限T_Inner并且消耗度量Delta小于或等于逐步下降门限Down_Step,媒体服务器215在步骤S519比较缓冲内容度量N_Buffer与上(upper)中间门限T_Outer。同样在步骤S519,媒体服务器215比较缓冲内容消耗度量Bfr_Depl_Ct的值与消耗门限T_Steady。
如果缓冲内容度量N_Buffer小于上中间门限T_Outer并且缓冲内容消耗度量Bfr_Depl_Ct的值大于消耗门限T_Steady,媒体服务器215再次确定当前信道条件不利于当前内容速率。相应地,媒体服务器215进行步骤S556并且如此处所讨论的继续。如果缓冲内容度量N_Buffer大于或等于上中间门限T_Outer并且缓冲内容消耗度量Bfr_Depl_Ct的值小于或等于消耗门限T_Steady,媒体服务器215在步骤S521设置不利信道条件度量Cons_RTCP_Dn为0。媒体服务器215然后在步骤S523比较缓冲内容度量N_Buffer与信道条件计数器门限值T_Cons。
如果在步骤S523,缓冲内容度量N_Buffer大于或等于门限T_Cons,媒体服务器215确定当前信道条件不利于更高内容速率。相应地,媒体服务器215在步骤S552以1递增有利信道条件度量Cons_RTCP_Up,然后进行步骤S538(如图4B中所示)。返回到步骤S523,如果缓冲内容度量N_Buffer小于门限T_Cons,媒体服务器215在步骤S554比较缓冲内容度量N_Buffer与最大门限T_Upper。同样,在步骤S554,媒体服务器215比较具有有利信道条件门限Up_Step的消耗度量Delta的负值(即,-Delta)。如果缓冲内容度量N_Buffer大于最大门限T_Upper并且消耗度量Delta的负值大于有利信道条件门限Up_Step,媒体服务器215认为当前信道条件有利于更高内容速率。相应地,媒体服务器215进行步骤S552,并且如此处所讨论的继续。返回到步骤S554,如果缓冲内容度量N_Buffer小于或等于最大门限T_Upper并且消耗度量Delta的负值小于或等于有利信道条件门限Up_Step,媒体服务器215在步骤S527设置有利信道条件度量Cons_RTCP_Up为0,并且然后进行步骤S538(图4B中所示)。
转向图4B,当媒体服务器215到达步骤S538时,媒体服务器215比较有利信道条件度量Cons_RTCP_Up与最大有利信道条件门限计数器值Max_RTCP_Up。如果有利信道条件度量Cons_RTCP_Up大于或等于门限值Max_RTCP_Up,媒体服务器215在步骤S550设置媒体会话的内容速率等于媒体会话的下一更高内容速率(如果内容速率不是已经等于媒体会话的最高可能内容速率的话),设置有利信道条件度量Cons_RTCP_Up为0,并且然后进行步骤S544(如随后更详细讨论的)。返回到步骤S538,如果有利信道条件度量Cons_RTCP_Up小于最大有利信道条件门限计数器值Max_RTCP_Up,媒体服务器215在步骤S540比较不利信道条件度量Cons_RTCP_Dn与最大不利信道条件门限计数器值Max_RTCP_Dn。
如果不利信道条件度量Cons_RTCP_Dn大于或等于门限值Max_RTCP_Dn,媒体服务器215在步骤S542设置媒体会话的内容速率为媒体会话的下一较低内容速率(如果内容速率不是已经等于媒体会话的最低可能内容速率的话),并且设置不利信道条件度量Cons_RTCP_Dn为0。
媒体服务器215然后在步骤S544设置缓冲消耗计时器Bfr_Depl_Timer和缓冲消耗计数器值Bfr_Depl_Ct为0。在步骤S546,媒体服务器215然后设置先前缓冲内容度量Old_Bfr_Cont等于缓冲内容度量N_Buffer(Old_Bfr_Cont=N_Buffer)。然后,媒体服务器215返回到步骤S506的等待状态并且如此处所讨论的继续。
返回到步骤S540,如果不利信道条件度量Cons_RTCP_Dn小于门限值Max_RTCP_Dn,媒体服务器215在步骤S548比较缓冲消耗计时器Bfr_Depl_Timer的值和最大缓冲消耗计数器门限Max_Bfr_Depl_Timer。如果缓冲消耗计时器Bfr_Depl_Timer在步骤S548小于门限Max_Bfr_Depl_Timer,则该方法进入步骤S546,并且如此处所讨论的继续。
返回到步骤S548,如果缓冲消耗计时器的值Bfr_Depl_Timer在步骤S548大于或等于门限Max_Bfr_Depl_Timer,则该方法进入步骤S544,并且如此处所讨论的继续。
如以上所指出的,媒体服务器215还在媒体会话期间实施动态帧传输调度或帧传输速率控制。如下文将更详细讨论的,图5-7示出根据示例实施例用于动态帧传输调度的方法。图5和6中示出的方法涉及要向客户端210传输的帧的处理/分组化和排队,而图7中示出的方法涉及到客户端210的媒体会话分组(分组化的帧)的流控制的(基于令牌桶的)传输。
更详细地,图5示出要传输到客户端210的帧的处理/分组化和排队;也就是,前卷(pre-roll)期期间令牌桶队列中的布置。图6示出后前卷期期间令牌桶队列中的帧的处理/分组化和布置。图5和6中示出的这些过程是可以被传输到客户端210的分组的最早时期。还可以有基于反馈消息等的对到客户端210的流速率的进一步限制(例如,媒体会话分组的传输速率等),所述限制使用图7中的令牌桶速率控制机制被强化。
动态帧传输调度的目的是保证客户端210在各自播放时间前具有准备好解码和播放的适合的帧。客户端210提供的用于媒体会话的缓冲空间允许媒体服务器215早在播放时间之前就传输帧,以便需要时这些帧在客户端210处可用。该缓冲空间帮助客户端210克服可用于媒体会话的信道带宽的波动。
有两个约束限制媒体服务器215可以在各播放时间多早之前就传输帧。这些约束包括客户端缓冲的有限尺寸(媒体服务器215在媒体会话的能力协商期间知道该有限尺寸)和对信令代理225定期向媒体服务器215传达的传输流速率的限制;也就是,每个代理-服务器反馈消息中包括的最大传输速率参数Ws。帧传输调度必须在流速率限制内被执行,并且还以这样的方式被执行,以便分组不因为客户端210处的缓冲溢出而丢失。
避免由于客户端缓冲溢出造成分组丢失的一种普遍并且相当保守的方法(经常被称为“假设接收方缓冲”)是假定媒体服务器215传输的但不属于已被播放的所有分组存在于客户端210处的缓冲中。
然后这样实施帧传输调度,以便持有这些分组所必要的缓冲空间不超过分配给媒体会话的缓冲空间。出于清楚起见,假定媒体服务器215遵循这种保守方法。不过,可以结合避免分组丢失的其他方法来使用示例实施例,所述其他方法诸如在中间节点中临时缓存分组。
可以经由基于令牌桶的速率控制方案施加流速率限制,稍后将关于图7进行详细讨论。
给定避免由于客户端缓冲溢出造成分组丢失的假设接收方缓冲方法和基于令牌桶的流速率控制,媒体服务器215执行如图5和6中所示的帧传输调度。
图5示出前卷期期间用于帧传输调度的方法。前卷期是在客户端210开始播放所接收帧前的时间段。如图5中所示,在前卷期期间,受基于令牌桶的传输控制施加的限制,媒体服务器215尝试连续传输帧,下文关于图7进行更详细的讨论。也就是,无论何时感知到与基于令牌桶的传输速率控制相关联的分组队列为空时,媒体服务器215推送帧。因而,属于媒体流的分组以流速率控制确定的速率被连续传输。
参考图5,在一个示例实施例中,在步骤S402,媒体服务器215将所估计的客户端缓冲级别L初始化为0。所估计的客户端缓冲级别L是对客户端210处的缓冲中存在的等待播放的分组/帧的估计(字节计数)。在步骤S404,媒体服务器215进入检查令牌桶分组队列是否为空的状态。令牌桶分组队列(或分组队列)是媒体服务器215处存储等待向客户端210传输的媒体会话分组的缓冲。不采取动作直至发现分组队列为空。
在步骤S404,如果令牌桶分组队列为空,媒体服务器215在步骤S406计算要传输的信息的当前帧的尺寸S。当前帧的尺寸S可以对应该帧的比特数或字节计数。替代地,帧的尺寸可以对应该帧的特定长度。
在步骤S408,媒体服务器215以S递增对客户端缓冲级别L的估计(L←L+S)。在步骤S410,媒体服务器215将要传输的信息的帧分组化。
在步骤S412,媒体服务器215将分组置于分组队列中。
在步骤S414,媒体服务器215确定前卷期是否完成。如果构成前卷期的所有帧都已被传输,则前卷期完成。如果前卷期没有完成,该方法返回步骤S404,并且如以上所讨论的继续。
返回步骤S414,如果前卷期完成,媒体服务器215实施图6中所示出的方法。
一旦前卷期结束并且客户端210开始播放所接收的媒体帧,帧传输调度就在基于令牌桶的传输速率控制(稍后更详细讨论)施加的速率限制内工作并且确保服务器对客户端缓冲级别L的估计不超过分配给媒体会话的缓冲尺寸的双重约束下,进行操作。图6中所示的流程图示出在后前卷期期间的帧传输调度方法。
参考图6,在步骤S602,媒体服务器215进入检查令牌桶分组队列是否为空的状态。媒体服务器不采取调度动作,直至分组队列不为空为止。如果分组队列在步骤S602为空,媒体服务器215在步骤S604计算要传输的信息的当前帧的尺寸S。媒体服务器215将所估计的客户端缓冲级别L与尺寸S相加。如果在步骤S606,所估计的客户端缓冲级别L与帧尺寸S的和小于客户端缓冲尺寸,媒体服务器215在步骤S608设置L等于所估计的客户端缓冲级别L与帧尺寸S的和。媒体服务器215在步骤S610将帧分组化,并且在步骤S612将分组置于分组队列中。该方法然后返回到步骤S602并且如以上所讨论的继续。
参考步骤S606,如果所估计的客户端缓冲级别L与帧尺寸S的和大于客户端缓冲尺寸,媒体服务器215进入步骤S614的等待状态,在步骤S614处它等候客户端播放帧所需要的时间段。在步骤S616,媒体服务器215以刚被播放的帧的尺寸减小所估计的客户端缓冲级别L。该方法然后进入步骤S604并且如以上所讨论的继续。
如以上所讨论的,对可以向客户端210流送分组的流速率的限制也约束媒体服务器215可以在各播放时间多早前就传输帧。图7示出用于经由基于令牌桶的速率控制方案施加流速率限制的方法。基于令牌桶的速率控制方案特征在于三个参数:步长Δ、更新间隔τ和最大信用级别Gmax。令牌桶方案还依赖于状态变量G(被称为信用级别)和令牌桶分组队列。如以上所讨论的,令牌桶分组队列是媒体服务器215处存储等待向客户端210传输的媒体会话分组的缓冲。
图7示出用于帧传输速率控制的方法,在所述方法中媒体服务器215基于与媒体会话相关联的状态变量和准备好传输的分组(属于该媒体会话)的可用性,来确定是否向客户端210传输分组。所述状态变量是信用级别G。如果信用级别G大于0,媒体服务器215向客户端210传输分组。下文将更详细地讨论图7中所示的方法的示例实施例。
参考图7,在媒体会话的开始,媒体服务器215在步骤S700将信用级别G初始化为最大信用级别Gmax。然后,媒体服务器215在步骤S702设置计时器等于更新间隔τ的长度。在图7中示出的本发明的一个实施例中,更新间隔τ被选择为小于连续帧播放的时间间隔。例如,当播放间隔为30毫秒时,更新间隔τ可以被选择为20毫秒。在设置计时器后,媒体服务器215进入步骤S704的等待状态。当处于等待状态时,媒体服务器215等待分组准备好传输或者计时器到期。
当媒体服务器215接收(或生成)准备好传输的分组(被称为“新分组”)时,媒体服务器215在步骤S706检查分组队列是否为空。如果分组队列不为空,新分组在步骤S710被置于分组队列的结尾。然后,媒体服务器215返回到步骤S704的等待状态,并且该方法如此处所讨论的继续。
返回到步骤S706,如果分组队列为空,媒体服务器215在步骤S708检查与客户端210相关联的信用级别G。如果信用级别G小于或等于0,该方法进入步骤S710并且如以上所讨论的继续。
返回到步骤S708,如果信用级别G大于0,在步骤S712,信用级别G被递减新分组的长度,并且该分组被传输。该方法然后返回到步骤S704的等待状态,并且如此处所讨论的继续。
当处于步骤S704的等待状态时,如果计时器到期,媒体服务器215在步骤S714以步长Δ递增信用级别G。如果被递增的信用级别G的值大于Gmax,信用级别G被设置为Gmax。根据示例实施例,步长Δ等于最近接收的最大传输参数Ws与更新间隔τ的乘积(Ws*τ)。
仍参考图7,媒体服务器215在步骤S716检查所递增的信用级别G是否大于0。如果信用级别G小于或等于0,该方法返回到步骤S702,计时器被重置并且该方法如以上所讨论的继续。
返回到步骤S716,如果信用级别G大于0,媒体服务器215在步骤S718检查分组队列是否为空。如果分组队列为空,该方法进入步骤S702,并且如以上所讨论的继续。
返回到步骤S718,如果分组队列不为空,媒体服务器215在步骤S720从队列移除第一分组(例如,最旧的或最高优先级的分组)并且传输分组。同样在步骤S720,媒体服务器215以所传输分组的长度递减信用级别G。该方法然后返回到步骤S716,并且如以上讨论的继续。
以上描述了本发明,本发明可以以很多方式变化,这将是显而易见的。这种变化不会被视为背离了本发明,并且所有这样的修改要包括在本发明的范围内。