发送设备和方法、接收设备和方法、存储介质以及程序的制作方法

文档序号:7600731阅读:104来源:国知局
专利名称:发送设备和方法、接收设备和方法、存储介质以及程序的制作方法
技术领域
本发明涉及发送设备和方法、接收设备和方法、存储介质以及程序。更具体地,本发明涉及允许根据通信网络的状态而更有效地发送包含冗余数据的数据的发送设备及其方法、接收设备及其方法、记录介质以及程序。
背景技术
目前,广泛应用通过各种通信介质如因特网发送视频数据或音频数据的服务。近年来,具体地,除了使用下载发送方案的服务之外,使用流发送方案的服务正变得越来越流行。
在流发送服务中,发送设备顺序地发送数据,而接收设备接收从发送设备发送的数据并同时重放基于所接收数据的视频或音频。流发送方案通常应用于网际电话、远程电视会议服务、以及基于因特网的服务如视频点播服务。
在流发送方案中,从发送设备发送的数据一般称作“流数据”。
当通过不能保证数据到达的传输路径如因特网发送运动图象流数据或音频流数据时,因传输负荷增加而发生数据包丢失。
由于数据包丢失,接收方遭受所重放运动图象数据的扰动和/或所重放音频的中断。
为解决此问题,已经使用这样的方法,其中,与流数据一起发送冗余数据,允许接收方对丢失数据包纠错。一个实例是FEC(向前纠错)方案。在FEC方案中,为一组数据包产生多个冗余数据包,并且与该组数据包一起发送。当从属于该组的数据包丢失任何数据包时,接收方使用冗余数据包对丢失数据包纠错。
例如,如图1所示,发送方在一组5个数据包即数据包1-1至1-5上增加两个冗余数据包即FEC数据包2-1和2-2,并且向接收方发送所得到的数据包。通过对数据包1-1至1-5的既定组合执行“异或”(XOR)操作而产生FEC数据包2-1和2-2。
例如,当在传输路径上丢失数据包1-2时,接收方对数据包1-1和FEC数据包2-1执行“异或”操作,以恢复数据包1-2。
在图1所示实例中,可以纠正数据包丢失的错误,其中,可被纠正的丢失数据包的数量等于FEC数据包2-1和2-2的数量。也就是说,当丢失数据包1-1至1-5中的一个或两个时,可以恢复所述数据包。
EFC方案可用于为一个帧的组产生冗余数据。然而,当使用软件来产生冗余数据时,有这样的问题在处理上增加明显更高的负担。
图2示出一组数据包1-1至1-5和作为冗余数据包的FEC数据包2-1和2-2的发送顺序。图2中水平方向表示时间。
为了发送一组数据包1-1至1-5和作为冗余数据包的FEC数据包2-1和2-2,首先顺序地发送数据包1-1至1-5,接着,顺序发送FEC数据包2-1和2-2。
图3为示出用于发送数据包和FEC数据包的已知处理的流程图。在步骤S11中,发送设备初始化内部计时器。
在步骤S12中,发送设备基于计时器值而确定计时器是否已经停止。当计时器未停止时,就重复步骤S12中的确定处理,直到计时器停止。
当在步骤S12中确定计时器已经停止时,这意味着已经过去与一个帧相应的时间周期。然后,过程前进到步骤S13,在此步骤中,发送设备捕捉所提供的视频数据。在步骤S14中,发送设备对捕捉到的图象数据进行编码。
在步骤S15中,发送设备产生RTP(实时传输协议)数据包,RTP数据包是包含编码视频数据的数据包。在步骤S16中,发送设备向接收方发送RTP数据包。
在步骤S17中,发送设备基于RTP数据包而产生FEC数据包。在步骤S18中,发送设备向接收方发送FEC数据包。
在步骤S19中,发送设备更新增加到RTP数据包上的时戳。在步骤S20中,发送设备设置内部计时器。然后,过程返回到步骤S12,并且重复上述处理。
未经审查的日本专利申请出版号2000-224226公开一种相关的技术。发送方产生每个数据包的信息块,从而,该块具有前一数据包和后一数据包的信息块所共有的部分,发送方通过纠错编码而对信息块进行编码,并且发送编码的信息块。根据传输路径的状态而改变公共部分的大小。另一方面,接收方通过使用解码和纠错功能对信息块进行纠错。当接收方不能解码时,该信息块的公共部分就用前一数据包的公共部分替换,并且接收方对已替换公共部分的信息块再次执行解码和纠错。
未经审查的日本专利申请出版号2003-179580公开一种在数据包发送过程中基于网络监测单元监测的网络状态而执行纠错控制的系统。此系统根据网络中的数据包丢失和错误发生状态,通过动态改变模式,如基于FEC方案的错误控制或基于重放请求处理(ARQ自动重复请求)的纠错,而执行数据包传输。例如,当RTT(往返时间)较短时,系统选择基于ARQ的纠错,并且当RTT较长时,系统选择基于FEC的纠错,由此实现动态纠错控制。
然而,总是与流数据一起发送冗余数据包涉及发送不希望有的数据。
另外,由于在网络中不能计算出发生多少数据包丢失,因此,已知的方法在确定应该发送多少冗余数据包时有问题。

发明内容
本发明的一个方面提供一种用于通过通信网络发送包含流数据的发送数据包的发送设备。发送设备包括用于确定通信网络是否处于拥挤状态的确定部件;以及,用于产生纠错数据包的产生部件,所述纠错数据包包含用于对流数据进行纠错的纠错数据。发送设备进一步包括控制部件,当确定结果从不拥挤状态改变为拥挤状态时,所述控制部件控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
当确定通信网络处于拥挤状态时,控制部件执行控制,以使产生部件产生预定数量的纠错数据包,并且,当确定通信网络不处于拥挤状态时,控制部件执行控制,以便取消产生部件执行的纠错数据包产生。
当确定结果从不拥挤状态改变为拥挤状态时,控制部件根据紧前面的一拥挤状态中的发送数据包的接收状态而执行控制,以便改变纠错数据包的数量。
至少一个发送数据包可定义在预定时间周期内的一个纠错单元。当根据预定时间周期内一个或多个纠错单元的接收状态而确定在预定时间周期内一个或多个纠错单元中的纠错数据包的数量不足时,控制部件执行控制,以便增加纠错数据包的数量。
确定部件根据短程相关延迟时间和远程相关延迟时间而确定通信网络是否处于拥挤状态,短程相关延迟时间取决于在从第一时间到当前时间的周期内向接收方发送所述发送数据包所需的延迟时间,而远程相关延迟时间取决于在从第一时间到比第一时间更早的第二时间的周期内向接收方发送所述发送数据包所需的延迟时间。
本发明的另一方面提供一种用于通过通信网络发送包含流数据的发送数据包的发送方法。所述方法包括用于确定通信网络是否处于拥挤状态的确定步骤;以及用于产生纠错数据包的产生步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据。所述方法进一步包括控制步骤,当确定结果从不拥挤状态改变为拥挤状态时,所述控制步骤控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
本发明的另一方面提供一种记录计算机可读程序的存储介质,所述程序用于通过通信网络发送包含流数据的发送数据包的发送处理。所述计算机可读程序包括用于确定通信网络是否处于拥挤状态的确定步骤;以及用于产生纠错数据包的产生步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据。所述计算机可读程序进一步包括控制步骤,当确定结果从不拥挤状态改变为拥挤状态时,所述控制步骤控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
本发明的另一方面提供一种用于使计算机执行发送处理的程序,所述发送处理用于通过通信网络发送包含流数据的发送数据包。所述程序包括用于确定通信网络是否处于拥挤状态的确定步骤;以及用于产生纠错数据包的产生步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据。所述程序进一步包括控制步骤,当确定结果从不拥挤状态改变为拥挤状态时,所述控制步骤控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
发送设备可以是用于执行发送处理的独立设备或设置于通信设备内的部件。
本发明的另一方面是提供一种用于通过通信网络接收包含流数据的发送数据包的接收设备。接收设备包括用于接收纠错数据包的接收控制部件,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定部件,所述确定部件用于确定所接收纠错数据包的数量对流数据纠错是否足够。
确定部件可确定所接收纠错数据包的数量对流数据纠错而言是不足、足够或过多。
对于由至少一个发送数据包定义的每个纠错单元,确定部件确定所接收纠错数据包的数量对流数据纠错是不足、足够或过多。接收设备进一步包括设置部件,所述设置部件用于执行设置,从而,当根据在预定时间周期内对一个或多个纠错单元的确定结果而确定在预定时间周期内一个或多个纠错单元中的纠错数据包的数量不足时,要发送给接收方的通知表示纠错数据包不足。
接收设备进一步包括产生部件,所述产生部件基于确定结果而产生包含通知的反馈数据包;以及发送控制部件,所述发送控制部件用于控制向接收方发送产生部件所产生的反馈数据包。
本发明的又一方面提供一种用于通过通信网络接收包含流数据的发送数据包的接收方法。所述方法包括用于接收纠错数据包的接收控制步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定步骤,所述确定步骤用于确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
本发明的另一方面提供一种记录计算机可读程序的存储介质,所述程序用于通过通信网络接收包含流数据的发送数据包的接收处理。所述计算机可读程序包括用于接收纠错数据包的接收控制步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定步骤,所述确定步骤用于确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
本发明的还一方面提供一种用于使计算机执行接收处理的程序,所述接收处理用于通过通信网络接收包含流数据的发送数据包。所述程序包括用于接收纠错数据包的接收控制步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定步骤,所述确定步骤用于确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
接收设备可以是用于执行接收处理的独立设备或设置于通信设备内的部件。
根据发送设备和方法、记录介质以及程序,确定通信网络是否处于拥挤状态,并且产生纠错数据包,所述纠错数据包包含用于对包含在发送数据包内的流数据进行纠错的纠错数据。当确定结果从不拥挤状态改变为拥挤状态时,控制纠错数据包的产生,以便改变纠错数据包的数量。
根据接收设备和方法、记录介质以及程序,接收纠错数据包,所述纠错数据包包含用于对包含在发送数据包内的流数据进行纠错的纠错数据,并且,确定所接收纠错数据包的数量对流数据纠错是否足够。
根据本发明,由于产生纠错数据包,因此可发送用于纠错的冗余数据。进一步地,根据本发明,确定通信网络是否处于拥挤状态,并且产生纠错数据包。当确定结果从不拥挤状态改变为拥挤状态时,控制数据包产生,以便改变纠错数据包的数量。这允许根据通信网络的状态而更有效地发送包含冗余数据的数据。
根据本发明,由于接收纠错数据包,因此可对接收的数据纠错。根据本发明,接收纠错数据包,并确定所接收纠错数据包的数量对流数据纠错是否足够。结果,发送方可根据通信网络的状态而有效地发送包含冗余数据的数据。


图1示出已知的FEC数据包发送;图2示出已知的FEC数据包发送顺序;图3为示出用于发送数据包和FEC数据包的已知处理的流程图;图4示出根据本发明一个实施例的通信系统;图5为示出服务器的典型配置的框图;图6为示出服务器的功能配置的框图;图7为示出客户的功能配置的框图;图8为示出FEC数据包发送的时间图;图9示出FEC块信息;图10为示出数据发送处理的流程图;图11示出RTP数据包;图12为示出用于控制FEC数据包发送的处理的流程图;图13为示出远程相关RTT和短程相关RTT的图形;图14示出RTT测量数据包;图15为示出用于更新FEC数据包数量增加/减少状态的处理的流程图;图16为示出用于改变FEC数据包数量的处理的流程图;图17为示出解码处理的流程图;图18为示出用于发送FEC反馈数据包的处理的流程图;
图19示出FEC反馈数据包;图20为示出用于更新接收-结束块的FEC块状态的处理的流程图;图21为示出用于设置通知FEC状态的处理的流程图;以及图22为示出用于返回RTT测量数据包的处理的流程图。
具体实施例方式
在描述本发明的实施例之前,简单解释在此描述的方面与本发明的实施例之间的关系。也就是说,此描述用于确认在此包括本文所描述的支持本发明的实施例。相应地,即使存在任何在本文描述但与本发明的方面无关的实施例或实例,也不意味着此实施例或实例不覆盖本发明的该方面。相反,即使所描述实施例与本发明的方面相对应,也不应推断为该实施例不与本发明的任何其它方面相对应。
另外,此描述不代表在本文公开的所有方面。换句话说,本文描述不否认存在本发明的任何在本文中描述但未在此专利申请中要求权利的方面,也就是说,不否认存在通过分开的申请和/或修改而产生或增加的方面。
本发明提供一种发送设备。此发送设备(如图4中所示的服务器12)包括确定部件(如图6中的拥挤/不拥挤确定单元105)、产生部件(如图6中的FEC(向前纠错)数据包产生器84)、以及控制部件(如图6中的FEC发送控制器86)。确定部件确定通信网络是否处于拥挤状态。产生部件产生纠错数据包(如图8中所示的FEC数据包组182-1),所述纠错数据包包含用于对包含在发送数据包(如图8中所示的RTP(实时传输协议)数据包组181-1)中的流数据进行纠错的纠错数据。当确定结果从不拥挤状态改变为拥挤状态时,控制部件控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
当确定通信网络处于拥挤状态时,发送设备的控制部件(如图6的FEC发送控制器86)可执行控制,以便使产生部件(如图6中的FEC数据包产生器84)产生预定数量的纠错数据包(如图8中所示的FEC数据包组182-1)。当确定通信网络不处于拥挤状态时,控制部件可执行控制,以便取消产生部件执行的纠错数据包产生。
当确定结果从不拥挤状态改变为拥挤状态时,发送设备的控制部件(如图6的FEC发送控制器86)可根据紧前面的一拥挤状态中的发送数据包的接收状态而执行控制,以便使产生部件(如图6中的FEC数据包产生器84)改变纠错数据包的数量。
在发送设备中,至少一个发送数据包定义在预定时间周期内的一个纠错单元(如图8中的FEC块171-1)。当根据在预定时间周期内一个或多个纠错单元的接收状态而确定在预定时间周期内一个或多个纠错单元中的纠错数据包的数量不足时,控制部件(如图6的FEC发送控制器86)控制产生部件(如图6中的FEC数据包产生器84)执行的纠错数据包产生,以便增加纠错数据包的数量。
确定部件(如图6中的拥挤/不拥挤确定单元105)根据短程相关延迟时间和远程相关延迟时间而确定通信网络是否处于拥挤状态。短程相关延迟时间取决于在从第一时间到当前时间的周期内向接收方发送所述发送数据包所需的延迟时间,远程相关延迟时间取决于在从第一时间到比第一时间更早的第二时间的周期内向接收方发送所述发送数据包所需的延迟时间。
本发明还提供一种发送方法。此发送方法包括确定步骤(如图12所示步骤S87中的处理)、产生步骤(如图10所示步骤S59中的处理)、以及控制步骤(如图12所示步骤S91中的处理)。在确定步骤中,确定通信网络是否处于拥挤状态。在产生步骤中,产生纠错数据包,所述纠错数据包包含用于对包含在发送数据包中的流数据进行纠错的纠错数据。在控制步骤中,当确定结果从不拥挤状态改变为拥挤状态时,控制在产生步骤中的纠错数据包产生,从而改变纠错数据包的数量。
本发明进一步提供一种程序。此程序由计算机执行,并且包括确定步骤(如图12所示步骤S87中的处理)、产生步骤(如图10所示步骤S59中的处理)、以及控制步骤(如图12所示步骤S91中的处理)。在确定步骤中,确定通信网络是否处于拥挤状态。在产生步骤中,产生纠错数据包,所述纠错数据包包含用于对包含在发送数据包中的流数据进行纠错的纠错数据。在控制步骤中,当确定结果从不拥挤状态改变为拥挤状态时,控制在产生步骤中的纠错数据包产生,从而改变纠错数据包的数量。
此程序可记录到存储介质(如图5中所示的磁盘51)上。
本发明提供一种接收设备。此接收设备(如图4中所示的客户机14)包括接收控制部件(如图7中所示的接收器151)和确定单元(如图7中的FEC处理器135)。接收控制部件接收纠错数据包(如图8中的FEC数据包组182-1),所述纠错数据包包含用于对包含在发送数据包(如图8中的RTP数据包组181-1)中的流数据进行纠错的纠错数据。确定部件确定所接收纠错数据包的数量对流数据纠错是否适当。
在接收设备中,确定部件(如图7中所示的FEC处理器135)可确定所接收纠错数据包的数量对流数据纠错是不足、足够或过多。
在接收设备中,对于至少一个发送数据包所定义的每个纠错单元(如图8中的FEC块171-1),确定部件(如图7中的FEC处理器135)可确定所接收纠错数据包(如图8中的FEC数据包组182-1)的数量对流数据纠错是不足、足够或过多。接收设备可进一步包括用于执行设置的设置部件(如图7中的通知FEC状态保存单元137),从而,当根据在预定时间周期内对一个或多个纠错单元的确定结果,确定在预定时间周期内一个或多个纠错单元中的纠错数据包的数量不足时,要向接收方发送的通知表示纠错数据包不足。
接收设备可进一步包括产生部件(如图7中所示的FEC反馈数据包产生器153)以及发送控制部件(如图7中所示的发送器152)。产生部件基于确定结果而产生包含通知的反馈数据包,并且发送控制部件控制向接收端发送产生部件所产生的反馈数据包。
本发明进一步提供一种接收方法。此接收方法包括接收控制步骤(如图18所示步骤S172中的处理)以及确定步骤(如图22所示步骤S221中的处理)。在接收控制步骤中,接收纠错数据包,所述纠错数据包包含用于对包含在发送数据包中的流数据进行纠错的纠错数据。在确定步骤中,确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
本发明进一步提供一种程序。此程序由计算机执行,并包括接收控制步骤(如图18所示步骤S172中的处理)以及确定步骤(如图22所示步骤S221中的处理)。在接收控制步骤中,接收纠错数据包,所述纠错数据包包含用于对包含在发送数据包中的流数据进行纠错的纠错数据。在确定步骤中,确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
此程序可记录到存储介质(如图5中所示的磁盘51)上。
本发明可应用于实时发送流数据的通信系统。实例包括网际电话、TV电话、远程电视会议系统、现场视频流分配系统、以及用于发送流数据的通信系统。
图4示出根据本发明一个实施例的通信系统。照相机11捕捉图象,并向服务器12提供与所捕捉图象相应的视频数据。例如,照相机11捕捉运动图象,并向服务器12提供与运动图象相应的视频数据。
视频数据是流数据的一个实例。流数据可以是随着时间的流逝需要顺序发送或接收的任何数据。流数据的实例包括音频数据和实时控制数据。
服务器12把从照相机11提供的视频数据装入到数据包中,并通过通信网络13把所述数据包发送给客户机14。服务器12还产生用于对包含视频数据的数据包进行纠错的冗余数据,把冗余数据装入数据包,并且通过通信网络13把得到的数据包发送给客户机14。
通信网络13是有线或无线的传输路径,例如包括因特网或通信线路或网络,并且,通信网络13用于把从服务器12发送的数据包传输给客户机14。
客户机14通过通信网络13接收从服务器12发送的各种数据包。
当客户机14不能正确地接收包含流数据的数据包时,客户机14根据包含冗余数据的数据包而对不能正确接收的包含视频数据的数据包进行纠错。
客户机14向服务器12发出表示数据包接收状态的通知,其中,所述数据包是从服务器12通过通信网络13发送的。服务器12获得通信网络13的通信状态。例如,服务器12根据往返时间(RTT)而获得通信网络13是否拥挤的状态。服务器12根据客户机14的通知和通信网络13的传输状态,而改变要发送给客户机14的包含冗余数据的数据包的数量。
图5为示出服务器12的典型配置的框图。CPU(中央处理单元)31根据记录在ROM(只读存储器)32或记录单元38中的程序而执行各种处理。如果需要,RAM(随机存取存储器)33储存数据和/或由CPU 31执行的程序。CPU 31、ROM 32和RAM 33通过总线34互连。
CPU 31还通过总线34连接到输入/输出接口35。输入单元36和输出单元37连接到输入/输出接口35,其中,输入单元36包括键盘、鼠标和开关,输出单元37包括显示器、扬声器和灯。CPU 31为响应通过输入单元36输入的指令而执行各种处理。
记录单元38连接到输入/输出接口35,并且例如包括硬盘。记录单元38记录各种数据和/或由CPU 31执行的程序。通信单元39通过通信网络13如因特网或其它网络与外部设备如客户机14通信。
通过通信单元39获得程序,服务器12可把程序记录到记录单元38上。
进一步地,驱动器40连接到输入/输出接口35。存储介质,如磁盘51、光盘52、磁光盘53或半导体存储器54,连接到驱动器40。驱动器40驱动存储介质,以获得记录在介质中的程序和/或数据。如果需要,所获得的程序和/或数据传输并记录到记录单元38上。
由于客户机14具有与服务器12相同的配置,因此,下面不给出对客户机14的描述。
图6为示出根据本发明一个实施例的服务器12的配置的框图。
服务器12配置为包括通信单元39、编码器81、缓冲器82、RTP(实时传输协议)数据包产生器83、FEC(向前纠错)数据包产生器84、RTT(往返时间)测量单元85、FEC发送控制器86、FEC数据包数量增加/减少状态保存单元87、FEC发送模式存储单元88以及FEC数据包计数保存单元89。
编码器81对从照相机11提供的视频数据(它是流数据的一个实例)进行编码,并且把编码的视频数据提供给缓冲器82。
缓冲器82临时储存从编码器81提供的视频数据。
RTP数据包产生器83从缓冲器82获得编码视频数据。RTP数据包产生器83接着通过把获得的视频数据装入到RTP格式数据包中而产生RTP数据包,并且把产生的RTP数据包提供给通信单元39。
RTP数据包基于IETF RFC(因特网工程任务强制转移征求意见文件)1889规定的RTP(实时传输协议)方案。
RTP数据包产生器83还向FEC数据包产生器84提供包含在所产生RTP数据包内的RTP数据包数据。
FEC数据包产生器84查询储存在FEC发送模式存储单元88中的FEC发送模式标记。当模式标记表示FEC发送模式时,FEC数据包产生器84使用从RTP数据包产生器83提供的RTP数据包中的数据,以根据预定的纠错方案而产生一定数量的数据包,此数量由从FEC数据包计数保存单元89提供的FEC数据包计数(即FEC数据包的数量)指示。FEC数据包产生器84把产生的FEC数据包提供给通信单元39。
当模式标记不指示FEC发送模式时,FEC数据包产生器84不产生FEC数据包。
通信单元39具有用于发送各种数据包的发送器101和用于接收各种数据包的接收器102,由此通过通信网络13发送/接收数据包。
当通信单元39接收从RTP数据包产生器83提供的RTP数据包和从FEC数据包产生器84提供的FEC数据包时,通信单元39的发送器101通过通信网络13向客户机14发送这些数据包。
更具体地,通信单元39的发送器101临时保存从RTP数据包产生器83提供的RTP数据包和从FEC数据包产生器84提供的FEC数据包。随后,发送器101根据预定的方案如分段传输方案,通过通信网络13向客户机14发送包含相同FEC块ID的RTP数据包和FEC数据包,作为一个FEC块。在后面描述用于FEC块标识的FEC块ID的细节。
RTT测量单元85向通信单元39提供RTT测量数据包。接着,通信单元39的发送器101通过通信网络13向客户机14发送RTT测量数据包。
通信单元39的接收器102通过通信网络13接收从客户机14发送的RTT测量数据包,并接着把RTT测量数据包提供给RTT测量单元85。通信单元39的接收器102还通过通信网络13接收从客户机14发送的FEC反馈数据包,并接着把FEC反馈数据包提供给FEC发送控制器86。
如上所述,RTT测量单元85产生RTT测量数据包,并把产生的RTT测量数据包提供给通信单元39。RTT测量单元85还根据由通信单元39接收并提供的RTT测量数据包而计算延迟时间(即RTT)。
RTT测量单元85具有用于计算远程相关RTT的远程相关RTT计算单元103和用于计算短程相关RTT的短程相关RTT计算单元104。RTT测量单元85的远程相关RTT计算单元103基于RTT测量单元85计算的延迟时间而计算远程相关RTT。RTT测量单元85的短程相关RTT计算单元104基于RTT测量单元85计算的延迟时间而计算短程相关RTT。在后面描述远程相关RTT和短程相关RTT的细节。
RTT测量单元85进一步向FEC发送控制器86提供由远程相关RTT计算单元103计算的远程相关RTT和由远程相关RTT计算单元104计算的短程相关RTT。
FEC发送控制器86控制FEC数据包产生器84所执行的FEC数据包产生。FEC发送控制器86具有用于确定通信网络13是否处于拥挤状态的拥挤/不拥挤确定单元105。
更具体地,基于从RTT测量单元85提供的远程相关RTT和短程相关RTT,FEC发送控制器86的拥挤/不拥挤确定单元105确定通信网络13是否处于拥挤状态,并接着储存确定结果。当确定结果表示通信网络13处于拥挤状态时,FEC发送控制器86在FEC发送模式存储单元88中设置FEC发送模式标记(如设置“1”)。当确定结果表示通信网络13不处于拥挤状态时,即处于不拥挤状态时,FEC发送控制器86重置FEC发送模式存储单元88中的FEC发送模式标记(如设置“0”)。
根据由通信单元39接收和提供的FEC反馈数据包,FEC发送控制器86更新保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态。FEC数据包数量增加/减少状态表示FEC数据包的数量是增加、减少或保持不变。在后面描述用于改变FEC数据包数量增加/减少状态的处理的细节。
FEC发送控制器86进一步读取保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态,以更新由FEC数据包计数保存单元89保存的FEC数据包计数。在后面描述用于改变FEC数据包数量的处理的细节。
FEC数据包数量增加/减少状态保存单元87保存(储存)从FEC发送控制器86提供的FEC数据包数量增加/减少状态。
FEC发送模式存储单元88储存表示操作是否处于FEC发送模式的FEC发送模式标记。当设置FEC发送模式标记(如用“1”表示)时,这代表操作处于FEC发送模式。当重置FEC发送模式标记(如用“0”表示)时,这代表操作不处于FEC发送模式。当操作处于FEC发送模式时,FEC数据包产生器84产生FEC数据包。当操作不处于FEC发送模式时,FEC数据包产生器84不产生FEC数据包。
当通信网络13处于拥挤状态时,储存在FEC发送模式存储单元88中的FEC发送模式标记由FEC发送控制器86设置。当通信网络13为不拥挤状态时,储存在FEC发送模式存储单元88中存储的FEC发送模式标记由FEC发送控制器86重置。
也就是说,当通信网络13处于拥挤状态时,操作处于FEC发送模式,从而,产生并发送FEC数据包。另一方面,当通信网络13不处于拥挤状态时,操作不处于FEC发送模式,从而不产生和发送FEC数据包。
FEC数据包计数保存单元89保存从FEC发送控制器86提供的FEC数据包计数。FEC数据包计数保存单元89还把从FEC发送控制器86提供的FEC数据包计数提供给FEC数据包产生器84。
也可布置为FEC数据包产生器84包括FEC数据包数量增加/减少状态保存单元87、FEC发送模式存储单元88以及FEC数据包计数保存单元89。
图7为示出根据本发明实施例的客户机14的配置的框图。
客户机14配置为包括通信单元131、RTP处理器132、缓冲器133、解码器134、FEC处理器135、FEC块信息保存单元136、通知FEC状态保存单元137以及RTT测量单元138。
通信单元131与服务器12的通信单元39相对应,并且具有用于控制数据包接收的接收器151和用于控制数据包发送的发送器152。通信单元131的接收器151接收通过通信网络13发送的各种数据包,并且把接收的数据包提供给RTP处理器132或RTT测量单元138。通信单元131的发送器152通过通信网络13发送各种数据包。
RTP处理器132检查由通信单元131接收并提供的RTP数据包和FEC数据包。在接收正常的FEC数据包时,RTP处理器132把接收的FEC数据包提供给FEC处理器135,并且还向FEC块信息保存单元136提供FEC头部信息。另一方面,当接收异常的FEC数据包时,RTP处理器132放弃所接收的FEC数据包。
另外,在接收正常的RTP数据包时,RTP处理器132临时保存RTP数据包,并向FEC块信息保存单元136提供RTP头部信息。当RTP处理器132接收异常的RTP数据包并接收其所包含FEC块ID与包含在所接收数据包中的FEC数据包相同的FEC数据包时,RTP处理器132向FEC处理器135提供请求异常RTP数据包恢复的信号。
当RTP处理器132接收异常的RTP数据包并且不接收其所包含FEC块ID与包含在所接收RTP数据包中的FEC块ID相同的FEC数据包时,RTP处理器132放弃RTP数据包。
在RTP处理器132不向FEC处理器135提供请求RTP数据包恢复的信号的情况下,RTP处理器132在结束数据包接收时向缓冲器133提供临时保存的RTP数据包。
在RTP处理器132向FEC处理器135提供请求RTP数据包恢复的信号的情况下,在结束数据包接收之后,从FEC处理器135向RTP处理器132提供恢复的RTP数据包。接着,RTP处理器132向缓冲器133提供保存的RTP数据包和恢复的RTP数据包。
进一步地,当正确地接收RTP数据包或FEC数据包时,RTP处理器132增加所接收数据包的数量,该数量储存在FEC块信息表中,所述FEC块信息表保存在FEC块信息保存单元136中。当包含在所接收RTP数据包或FEC数据包中的FEC块ID改变时,FEC块信息保存单元136更新保存在FEC块信息保存单元136中的FEC块信息。在后面描述FEC块信息表的细节和用于更新FEC块信息的处理的细节。
缓冲器133临时储存从RTP处理器132提供的RTP数据包。
解码器134顺序地获得储存在缓冲器133中的RTP数据包,并且从获得的RTP数据包中提取视频数据。解码器134通过使用与编码器81相应的解码方案对所提取的视频数据进行解码,并输出解码视频。
FEC处理器135具有用于产生FEC反馈数据包的FEC反馈产生器153。
FEC处理器135临时保存从RTP处理器132提供的FEC数据包。当从RTP处理器132提供请求异常RTP数据包恢复的信号时,FEC处理器135基于FEC数据包而恢复RTP数据包,并且向RTP处理器132提供恢复的RTP数据包。
更具体地,例如,FEC处理器135获得由RTP处理器132正确接收并临时保存的RTP数据包,并且所述RTP数据包是恢复处理所要求的,FEC处理器135根据获得的RTP数据包和FEC数据包而恢复未正确接收的一个或多个RTP数据包。
当未从RTP处理器132提供用于请求异常RTP数据包恢复的信号时,FEC处理器135在结束数据包接收时放弃保存的FEC数据包。
也可布置为RTP处理器132恢复RTP数据包。
当记录在FEC块信息表中的FEC块ID改变时,FEC处理器135根据FEC块信息而更新FEC块状态,其中,FEC块信息表由FEC块信息保存单元136保存,FEC块状态表示由FEC块信息保存单元136保存(记录)的FEC数据包的数量是否足够。FEC处理器135读取保存在FEC块信息保存单元136中的FEC块信息,以更新保存在通知FEC状态保存单元137中的通知FEC状态。在后面描述用于更新FEC块状态的处理和用于更新通知FEC状态的处理。
FEC处理器135的FEC反馈数据包产生器153根据保存在通知FEC状态保存单元137中的通知FEC状态而产生FEC反馈数据包,并且向通信单元131提供产生的FEC反馈数据包。在后面描述FEC反馈数据包的细节。
FEC块信息保存单元136保存(记录)由RTP处理器132和FEC处理器135更新的FEC块信息。
通知FEC状态保存单元137保存由FEC处理器135更新的通知FEC状态。
RTT测量单元138获得由通信单元131接收并提供的RTT测量数据包。RTT测量单元138产生其所包含数据部分与所获得RTT测量数据包的数据部分相同的RTT测量数据包,并把产生的RTT测量数据包提供给通信单元131。
图6所示服务器12的功能和/或图7所示客户机14的功能可由硬件或软件(程序)实施。
下面结合图8所示时间图描述服务器12发送FEC块的处理。
图8中水平方向表示时间。在图8中,从时间t1到时间t2的周期D1和从时间t3到时间t4的周期D3表示通信网络13处于拥挤状态的周期。从时间t2到时间t3的周期D2表示通信网络13处于不拥挤状态的周期。
当通信网络13处于拥挤状态时,服务器12发送包含FEC数据包组的FEC块。当通信网络13处于不拥挤状态时,服务器12发送不包含FEC数据包组的FEC块。进一步地,服务器12根据从客户机14接收的FEC反馈数据包而改变包含在FEC数据包组中的FEC数据包的数量。也就是说,在时间t11,由于通信网络13处于拥挤状态,因此,服务器12向客户机14发送包含相同FEC块ID的RTP数据包和FEC数据包,作为一个FEC块。
更具体地,在图8中,例如,服务器12把流数据装入到FEC块171-1内的四个RTP数据包(即RTP数据包组181-1)中,其中,流数据是用于重放一帧的视频数据。服务器12还把用于重放该帧的流数据的冗余数据装入到FEC块171-1内的两个FEC数据包(即FEC数据包组182-1)中。服务器12接着通过通信网络13向客户机14发送FEC块171-1,其中,FEC块171-1由包含用于重放该帧的流数据的RTP数据包组181-1和FEC数据包组182-1定义。
在时间t21,客户机14通过通信网络13接收从服务器12发送的FEC块171-1。
相似地,服务器12把流数据装入到FEC块171-2内的四个RTP数据包(即RTP数据包组181-2)中,其中,流数据是用于重放下一帧的视频数据。服务器12还把用于重放该帧的流数据的冗余数据装入到FEC块171-2内的两个FEC数据包(即FEC数据包组182-2)中。服务器12接着通过通信网络13向客户机14发送FEC块171-2,其中,FEC块171-2由包含用于重放该帧的流数据的RTP数据包组1811-2和FEC数据包组182-2定义。
进一步地,服务器12把流数据装入到FEC块171-3内的四个RTP数据包(即RTP数据包组181-3)中,其中,流数据是用于重放下一帧的视频数据。服务器12还把用于重放该帧的流数据的冗余数据装入到FEC块171-3内的两个FEC数据包(即FEC数据包组182-3)中。服务器12接着通过通信网络13向客户机14发送FEC块171-3,其中,FEC块171-3由包含用于重放该帧的流数据的RTP数据包组181-3和FEC数据包组182-3定义。
由于通信网络13的状态在时间t2从拥挤状态改变为不拥挤状态,因此,服务器12在时间t2之后通过通信网络13向客户机14发送不包含FEC数据包的FEC块。
服务器12把流数据装入到FEC块171-4内的四个RTP数据包(即RTP块181-4)中,其中,流数据是用于重放在FEC块171-3的帧之后一帧的视频数据。服务器12接着通过通信网络13向客户机14发送由RTP数据包组181-4定义的FEC块171-4。服务器12进一步把流数据装入到FEC块171-5内的四个RTP数据包(即RTP块181-5)中,其中,流数据是用于重放下一帧的视频数据。服务器12接着通过通信网络13向客户机14发送由RTP数据包组181-5定义的FEC块171-5。服务器12进一步把流数据装入到FEC块171-6内的四个RTP数据包(即RTP块181-6)中,其中,流数据是用于重放后续帧的视频数据。服务器12接着通过通信网络13向客户机14发送由RTP数据包组181-6定义的FEC块171-6。
由于通信网络13的状态在时间t3从不拥挤状态改变为拥挤状态,因此,服务器12在时间t3之后通过通信网络13向客户机14一起发送冗余数据和流数据。
具体地,服务器12把用于重放在FEC块171-6的帧之后一帧的视频数据装入到FEC块171-7内的四个RTP数据包(即RTP数据包组181-7)中。服务器12还把用于重放该帧的流数据的冗余数据装入到FEC块171-7内的两个FEC数据包(即FEC数据包组182-4)中。服务器12接着通过通信网络13向客户机14发送FEC块171-7,其中,FEC块171-7由包含用于重放该帧的流数据的RTP数据包组181-7和FEC数据包组182-4定义。
从时间t21到时间t23的周期T1、从时间t23到时间t24的周期T2、从时间t24到时间t25的周期T3以及从时间t25到时间t26的周期T4由计时器定义,并且每一个都是客户机14执行用于发送FEC反馈数据包的处理的时间周期。因而,客户机14在计时器停止的每个时间t23、时间t24、时间t25和时间t26产生FEC反馈数据包,并且通过通信网络13向服务器12发送所产生的FEC反馈数据包。
以后,FEC块171-1至171-7简称为“FEC块171”,除非它们需要互相区分开。相似地,RTP数据包组181-1至181-7以后简称为“RTP数据包组181”,除非它们需要互相区分开,并且FEC数据包组182-1至182-4简称为“FEC数据包组182”,除非它们需要互相区分开。
在通过通信网络13接收从服务器12发送的FEC块171时,客户机14记录FEC块信息。FEC块信息例如记录到图9所示的FEC块信息表中。
在接收FEC块171时,客户机14把包含在FEC块171中的信息记录到FEC块信息表中。记录的信息包括FEC块ID、原始数据包的数量、数据包总数、所接收数据包的数量以及FEC块状态,其中,FEC块ID是对FEC块171唯一的标识号,原始数据包的数量表示包含在FEC块171中的RTP数据包的数量,数据包总数为包含在FEC块171中的RTP数据包的数量与FEC数据包的数量的总计,所接收数据包的数量表示正确接收的数据包的数量,FEC块状态表示所接收FEC数据包的数量对于丢失数据包恢复是不足、足够或过多。
图9示出FEC块信息表的实例。
在图9中所示的此实例中,对于具有FEC块ID 1的FEC块171,数据包总数为6,然而,所接收数据包的数量为4。因此丢失2个数据包。另外,虽然在具有FEC块ID 1的FEC块171中数据包总数为6,但其原始数据包的数量为4。这表示在具有FEC块ID 1的FEC块171中包含2个FEC数据包。
由于每一个FEC数据包可恢复一个RTP数据包,因此,使用在具有FEC块ID 1的FEC块171中包含的2个FEC数据包可恢复2个丢失的数据包。因而,在具有FEC块ID 1的FEC块171中包含的FEC数据包的数量既不多也不少,从而,FEC块状态设置为足够状态。
相似地,对于具有FEC块ID 2的FEC块171,在此FEC块171中包含2个FEC数据包,并且丢失3个数据包。因而,在3个丢失的数据包中,有一个丢失的数据包不能被恢复。从而,由于缺少一个FEC数据包,因此,FEC块状态设置为不足状态。
相似地,对于具有FEC块ID 3的FEC块171,在此FEC块171中包含2个FEC数据包,并且没有数据包丢失。因而,2个FEC数据包没有使用并被放弃。从而,由于2个FEC数据包是过多的,因此,FEC块状态设置为过多状态。
回到图8所示时间图,例如,在时间t22,客户机14从FEC块171-2检测丢失3个数据包。接着,客户机14把FEC块171-2的FEC块状态设置为不足状态。由于周期T1在时间t23结束(即计时器停止),因此例如,客户机14根据从时间t21到时间t23接收的每个FEC块171的FEC块状态而产生表示FEC数据包不足的FEC反馈数据包,并且,通过通信网络13向服务器12发送产生的FEC反馈数据包。在后面描述FEC反馈数据包的细节。
在周期T2结束的时间t24和周期T3结束的时间t25中每个时间,客户机14还都通过通信网络13向服务器12发送FEC反馈数据包。
由于通信网络13的状态在时间t3从不拥挤状态改变为拥挤状态,因此,服务器12根据从时间t1到时间t3通过通信网络13从客户机14接收的反馈数据包,而改变包含在FEC块171中的FEC数据包的数量。例如,在时间t12,服务器12通过通信网络13向客户机14发送包含3个FEC数据包的FEC块171-7。
如上所述,根据通信网络13的拥挤状态和从客户机14发送的FEC反馈数据包,服务器12改变包含在FEC块171中的FEC数据包的数量,并且发送FEC块171。
下面结合图10所示流程图描述执行服务器程序的服务器12发送数据的处理。
首先,在步骤S51中,服务器12对发送处理所需的数据进行初始化。在步骤S51中,例如,编码器81把内部计时器的值设置为零毫秒,并且,RTP数据包产生器83初始化时戳和序列号,并且把FEC块ID的值设置为“1”。
在步骤S52中,基于内部计时器的值,编码器81确定计时器是否停止。当计时器未停止时,过程返回到步骤S52,在此步骤中,重复确定处理,直到确定计时器停止。
当在步骤S52中确定计时器已经停止时,过程前进到步骤S52。
例如,当视频数据中的帧数为每秒30时,在步骤S52中,编码器81通过比较计时器值和预定值如33毫秒而确定计时器是否已经停止,因为计时器值随着时间的流逝而增加。
在步骤S51中,例如,编码器81设置计时器值为33毫秒,并且通过比较计时器值和零毫秒而确定计时器是否已经停止,因为计时器值随着时间的流逝而减小。
在此情况下,与计时器值比较的值“零毫秒”或“33毫秒”是用于每秒30帧的实例,并且不用于限制本发明。
下面描述的与计时器有关的处理也同样如此。
在步骤S53中,编码器81捕捉从照相机11提供的视频数据,从而,视频数据的量与一帧相对应。在步骤S53中,例如,编码器81顺序地获得从照相机11提供的视频数据,并且在所获得视频数据中捕捉一帧视频数据。
在步骤S54中,编码器81对捕捉的视频数据进行编码。在步骤S54中,编码器81可基于MPEG(运动图象专家组)1、2、4、7或21方案、JPEG(联合图象专家组)方案、JPEG2000方案或运动JPEG方案而对所捕捉的视频数据进行编码。
在步骤S55中,编码器81向缓冲器82提供编码的视频数据,缓冲器82储存编码的视频数据。
在步骤S56中,RTP数据包产生器83从缓冲器82获得解码的视频数据,并且产生包含所获得视频数据的RTP数据包。
图11示出RTP数据包。RTP数据包的开始有2位版本信息,在图11中版本信息用“V”代表。版本信息表示RTP数据包的版本。
在图11中,在版本信息之后是用“P”代表的1位填充符。在填充符之后,在RTP数据包中设置1位扩展信息。在图11中,扩展信息用“X”代表。当在RTP数据包中包括扩展头部时,扩展信息设置为预定值。
在扩展信息之后,在RTP数据包中设置CSRC(贡献源)计数。在图11中,CSRC计数用“CC”代表。CSRC计数表示CSRC标识符的数量。
在CSRC计数之后是由简档定义的1位标记符信息。在图11中,标记符信息用“m”代表。
在标记符信息之后是7位有效负载类型,其中,有效负载类型是用于定义RTP数据包格式的信息。在图11中,有效负载类型用“PT”代表。RTP数据包具有有效负载类型33。
序列号为在有效负载类型之后的16位信息。序列号表示RTP数据包的重放顺序,并且对每次发送都加1。
在序列号之后是32位时戳,时戳代表包含在RTP数据包中的流数据的第一个八位位组的采样时间。接收方使用时戳来控制RTP数据包解压缩过程中的处理时间,由此实现对实时视频或音频数据的重放控制。在属于相同视频帧的多个RTP数据包上增加公共时戳。
SSRC(同步源)标识符是设置在时戳之后的32位信息,并且代表包含在RTP数据包中的流数据的源。
在RTP数据包中,在SSRC标识符之后是FEC块ID。FEC块ID是用于标识FEC块171的编号,FEC块171是通过通信网络13从服务器12向客户机14发送的一组RTP数据包和FEC数据包。例如,在图8中,属于RTP数据包组181的RTP数据包被赋予相同的FEC块ID。属于一个FEC块171中FEC数据包组182的FEC数据包包含与属于FEC块171中RTP数据包组181的RTP数据包的FEC块ID相同的FEC块ID。
在FEC块ID之后,在RTP数据包中设置数据包总数。在图11中,数据包总数用“N”代表并且表示包含在一个FEC块171中的RTP数据包数量和FEC数据包数量的总计。
在RTP数据包中,在数据包总数之后是原始数据包数量。在图11中,原始数据包的总数用“K”代表,并且表示包含在一个FEC块171中的RTP数据包的数量。
在原始数据包数量之后是冗余数据包数量,在图11中,冗余数据包数量用“R”代表。冗余数据包数量表示包含在一个FEC块中的FEC数据包的数量。
为了调节数据量,在冗余数据包数量之后是填充符,在图11中,填充符用“P”代表。在填充符之后,包含流数据。在图11中,流数据表示为“原始数据”。
FEC数据包以与RTP数据包相同的方式配置。在此情况下,FEC数据包的有效负载类型例如为34。
回到图10,在步骤S57中,RTP数据包产生器83向通信单元39提供所产生的RTP数据包,通信单元39又通过通信网络13向客户机14发送RTP数据包。
在步骤S58中,FEC数据包产生器84确定操作是否处于FEC发送模式。在步骤S58中,FEC数据包产生器84例如根据FEC发送模式存储单元88中FEC发送模式标记的设置状态而确定操作是否处于FEC发送模式。
当在步骤S58中确定操作处于FEC发送模式时,通信网络13处于拥挤状态,因而,更有可能发生数据包丢失。因此,过程前进到步骤S59,以便向客户机14发送FEC数据包。
在步骤S59中,FEC数据包产生器84基于从RTP数据包产生器83提供的RTP数据包中的数据而产生一定量的FEC数据包,其中,FEC数据包的数量由从FEC数据包计数保存单元89提供的FEC数据包计数指示。
在步骤S59中,例如,FEC数据包产生器84对包含在RTP数据包产生器83所提供的RTP数据包中的数据执行“异或”操作,由此产生用于FEC数据包的数据。FEC数据包产生器84接着在产生的数据上增加预定的头部,由此产生FEC数据包。
增加到FEC数据包上的头部例如具有与图11所示RTP数据包头部相同的格式。RTP数据包和FEC数据包可通过规定FEC数据包头部中的扩展信息为“1”而确定,其中,所述扩展信息在图11中用“X”代表。进一步地,例如,FEC数据包的有效负载类型为34,并且在图11中用“原始数据”表示的域包含用于纠错的冗余数据。
对于FEC数据包产生器84所产生的FEC数据包的纠错方案(用于冗余数据的方案)不局限于“异或”操作,并且可以使用另一方案。实例包括诸如Hamming编码的线性编码、循环编码、诸如BCH(Bose-Chaudhuri-Hocquenghem)编码或里德-索罗蒙编码的算术编码、或多数逻辑编码。
在步骤S60中,FEC数据包产生器84向通信单元39提供产生的FEC数据包,通信单元39又通过通信网络13向客户机14发送FEC数据包。接着,过程前进到步骤S61。
更具体地,在步骤S57中,通信单元39临时保存从RTP数据包产生器83提供的RTP数据包。接着,在步骤S60中,当从FEC数据包产生器84提供其所包含FEC块ID与保存的RTP数据包中所包含FEC块ID相同的一个或多个FEC数据包时,通信单元39通过通信网络13向客户机14发送通信单元39保存的RTP数据包和从FEC数据包产生器84提供的FEC数据包,作为一个FEC块171。
例如,从图8所示的时间t1到时间t2,服务器12通过通信网络13向客户机14一起发送RTP数据包和FEC数据包,因为通信网络13处于拥挤状态(即,操作处于FEC数据包发送模式)。
另一方面,当在步骤S58中确定操作不处于FEC发送模式时,通信网络13处于不拥挤状态,因而,不太可能发生数据包丢失。因此,过程跳过步骤S59和S60的处理,以便取消向客户机14发送FEC数据包,并且过程前进到步骤S61。
当在步骤S58中确定操作不处于FEC发送模式时,取消FEC数据包的发送,因而,通信单元39在步骤S57中通过通信网络13向客户机14发送从RTP数据包产生器83提供的RTP数据包,作为一个FEC块171。
例如,从图8所示的时间t2到时间t3,服务器12通过通信网络13向客户机14发送RTP数据包组181,作为一个FEC块171,因为通信网络13处于不拥挤状态。换句话说,服务器12取消向客户机14发送FEC数据包,因为操作不处于FEC数据包发送模式。
在步骤S61中,RTP数据包产生器83更新FEC块ID。在步骤S61中,例如,RTP数据包产生器83增加包含在所述数据包中的FEC块ID。
在步骤S62中,RTP数据包产生器83更新时戳。
FEC数据包产生器84可根据包含在RTP数据包产生器83所提供RTP头部信息中的FEC块ID和时戳而产生一个或多个FEC数据包。可替换地,FEC数据包产生器84本身可保存和更新RTP时戳和FEC块ID。
在步骤S63中,解码器81设置内部计时器。接着,过程返回到步骤S52,并且重复上述的数据发送。
在步骤S63中,解码器81例如把计时器值设置为零毫秒。
如上所述,服务器12在每个FEC块171上增加FEC块ID,并且,当通信网络13处于拥挤状态时,服务器12通过通信网络13向客户机14发送RTP数据包和FEC数据包。另一方面,当通信网络13处于不拥挤状态时,服务器12通过通信网络13向客户机14发送RTP数据包,并且取消FEC数据包的发送。
下面结合图12所示流程图描述执行服务器程序的服务器12发送FEC数据包的处理。
首先,在步骤S81中,服务器12对用于控制FEC数据包发送的处理所需的数据进行初始化。在步骤S81中,RTT测量单元85把内部计时器的值例如设置为零毫秒。
在步骤S82中,FEC发送控制器86确定是否接收FEC反馈数据包。当确定接收FEC反馈数据包时,过程前进到步骤S83。在步骤S83中,FEC发送控制器86执行处理,以更新保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态。在结束更新处理之后,过程返回到步骤S82,并且重复用于控制FEC数据包发送的处理。
在后面描述用于更新FEC数据包数量增加/减少状态的处理的细节。
另一方面,当在步骤S82中确定未接收FEC反馈数据包时,过程前进到步骤S84。在步骤S84中,FEC数据包产生器84确定RTT测量单元85是否已经接收RTT测量数据包。
当在步骤S84中确定接收RTT测量数据包时,过程前进到步骤S85。在步骤S85中,RTT测量单元85根据接收的RTT测量数据包而计算延迟时间(RTT)。进一步地,根据计算的延迟时间,RTT测量单元85的远程相关RTT计算单元103计算远程相关RTT,并且,RTT测量单元85的短程相关RTT计算单元104计算短程相关RTT。接着,RTT测量单元85向FEC发送控制器86的拥挤/不拥挤确定单元105提供计算的远程相关RTT和短程相关RTT。
在步骤S85中,RTT测量单元85例如根据公式(1)计算延迟时间延迟时间=(RTT测量数据包的接收时间)-(RTT测量数据包的发送时间) (1)当RTT测量单元85接收RTT测量数据包时,RTT测量数据包的接收时间由内部RTC(实时时钟)提供。RTT测量数据包的发送时间包含在所接收的RTT测量数据包中。
在步骤S85中,RTT测量单元85的远程相关RTT计算单元103例如根据公式(2)计算远程相关RTT远程相关RTT=0.9×(前一计算的远程相关RTT)+0.1×(延迟时间) (2)
前一计算的远程相关RTT是在上一次步骤S85的处理中计算的远程相关RTT。延迟时间是由RTT测量单元85计算的延迟时间。
在步骤S85中,RTT测量单元85的短程相关RTT计算单元104例如根据公式(3)计算短程相关RTT短程相关RTT=0.5×(前一计算的短程相关RTT)+0.5×(延迟时间) (3)前一计算的短程相关RTT是在上一次步骤S85的处理中计算的短程相关RTT。延迟时间是由RTT测量单元85计算的延迟时间。
例如,在步骤S85的处理中,RTT测量单元85的远程相关RTT计算单元103和短程相关RTT计算单元104分别储存所计算的远程相关RTT和短程相关RTT。随后,在下一次步骤S85的处理中,远程相关RTT计算单元103和短程相关RTT计算单元104使用储存的远程相关RTT和短程相关RTT分别计算下一远程相关RTT和短程相关RTT。
远程相关RTT可以是在5秒钟内的平均延迟时间。短程相关RTT可以是在1秒钟内的平均延迟时间。
在步骤S86中,FEC发送控制器86的拥挤/不拥挤确定单元105比较从RTT测量单元85提供的远程相关RTT和短程相关RTT。
在步骤S86中,例如,拥挤/不拥挤确定单元105使用从RTT测量单元85提供的远程相关RTT和短程相关RTT,通过执行公式(4)表达的计算而比较远程相关RTT和短程相关RTT(短程相关RTT)/(远程相关RTT)>1 (4)在步骤S87中,拥挤/不拥挤确定单元105根据公式(4)的计算结果(在步骤S86中)而确定通信网络13是否处于拥挤状态。
在步骤S87中,例如,当从RTT测量单元85提供的远程相关RTT和短程相关RTT满足公式(4)时,拥挤/不拥挤确定单元105通信网络13处于拥挤状态。另一方面,当从RTT测量单元85提供的远程相关RTT和短程相关RTT不满足公式(4)时,拥挤/不拥挤确定单元105通信网络13不处于拥挤状态。
在本文中,拥挤状态指通信网络13中增加的通信量影响数据包发送的状态。例如,在一些情况下,在拥挤状态下不能正确地发送数据包。通信网络13的状态,即是否处于拥挤状态,可例如由通信网络13中节点的缓冲队列长度指示。例如,当在节点的缓冲队列长度较长时,可确定通信网络13拥挤,因为有大量的数据包等待发送。相反,当在节点的队列长度较短时,可确定通信网络13不拥挤,因为只有少量的数据包等待发送。
可为缓冲队列长度设置预定的阈值。在此情况下,当缓冲队列长度比阈值更大时,可确定通信网络13处于拥挤状态,并且,当缓冲队列长度比阈值更小时,可确定通信网络13处于不拥挤状态。
在通信网络13中的节点上的队列长度可通过例如使用SNMP(简单网络管理协议)来观察。
本专利申请人已经观察节点上的队列长度、远程相关RTT和短程相关RTT。结果证实节点队列长度、远程相关RTT和短程相关RTT有一定的关系。
图13为示出节点队列长度、远程相关RTT和短程相关RTT的图形。
图13中的水平轴表示时间。在图13中,实线表示远程相关RTT,虚线表示短程相关RTT,并且,点划线表示节点队列长度。
从图13可以理解当短程相关RTT比远程相关RTT更大的状态改变为远程相关RTT比短程相关RTT更大的状态时,节点队列长度急剧减小。例如示出在图13的时间t52,当短程相关RTT比远程相关RTT更大的状态改变为远程相关RTT比短程相关RTT更大的状态时,节点队列长度急剧减小。
相反,可以理解,当短程相关RTT比远程相关RTT更小的状态改变为短程相关RTT比远程相关RTT更大的状态时,节点队列长度增加。例如示出在图13的时间t53,当短程相关RTT比远程相关RTT更小的状态改变为短程相关RTT比远程相关RTT更大的状态时,节点队列长度增加。
相应地,根据短程相关RTT是否比远程相关RTT更大,可确定通信网络13是否处于拥挤状态。换句话说,当远程相关RTT和短程相关RTT满足公式(4)时,可以确定通信网络13处于拥挤状态,并且,当它们不满足公式(4)时,可以确定通信网络13处于不拥挤状态。
例如,在图13中,在从时间t51到时间t52的周期中,可确定通信网络13处于拥挤状态,并且,在从t52到t53的周期中,可确定通信网络13处于不拥挤状态。
回到图12所示的流程图,在步骤S87中,当确定通信网络13处于拥挤状态时,过程前进到步骤S88。在步骤S88中,拥挤/不拥挤确定单元105把通信网络13拥挤的状态储存为拥挤/不拥挤状态,并且把表示通信网络13拥挤状态的信号提供给FEC发送控制器86。
在步骤S87中的确定处理不必只局限于使用远程相关RTT和短程相关RTT。例如,用于观察通信网络13通信量状态、抖动、或丢数据包率的SNMP可用于确定通信网络13是否处于拥挤状态。
在步骤S89中,当从拥挤/不拥挤确定单元105接收表示通信网络13拥挤状态的信号时,FEC发送控制器86设置储存在FEC发送模式存储单元88中的FEC发送模式标记。
FEC发送模式在此指发送FEC数据包的模式。也就是说,当在步骤S87中确定通信网络13处于拥挤状态时,FEC发送控制器86设置储存在FEC发送模式存储单元88中的FEC发送模式标记。作为响应,操作进入FEC发送模式,在此模式中,在发送FEC块171的过程中发送FEC数据包。
在步骤S90中,FEC发送控制器86确定通信网络13的状态是否已从不拥挤状态改变为拥挤状态。
在步骤S90中,例如,FEC发送控制器86根据储存在拥挤/不拥挤确定单元105中的拥挤/不拥挤状态,而确定通信网络13的状态是否已从不拥挤状态改变为拥挤状态。
在步骤S90中,例如,FEC发送控制器86可根据储存在FEC发送模式存储单元88中的FEC发送模式标记,而确定通信网络13的状态是否已从不拥挤状态改变为拥挤状态。
当在步骤S90中确定所述状态从不拥挤状态改变为拥挤状态时,过程前进到步骤S91。在步骤S91中,FEC发送控制器86读取在步骤S83处理中更新且由FEC数据包数量增加/减少状态保存单元87保存的FEC数据包数量增加/减少状态。
FEC数据包数量增加/减少状态保存单元87例如保存以下三种状态,即“增加”状态、“保持”状态和“减少”状态,中的任一种,作为FEC数据包数量增加/减少状态。也就是说,增加状态表示服务器12增加在将要通过通信网络13发送给客户机14的FEC块171中包含的FEC数据包的数量。保持状态表示服务器12保持(即不改变)在将要通过通信网络13发送给客户机14的FEC块171中包含的FEC数据包的数量。减少状态表示服务器12减少在将要通过通信网络13发送给客户机14的FEC块171中包含的FEC数据包的数量。
每次通过通信网络13从客户机14接收FEC反馈数据包时,都更新保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态。
在步骤S92中,FEC发送控制器86根据所读取的FEC数据包数量增加/减少状态而执行用于改变FEC数据包数量的处理。在后面详细描述用于改变FEC数据包数量的处理。
FEC数据包的数量在此指包含在将要通过通信网络13从服务器12发送给客户机14的一个FEC块171中的FEC数据包的数量。例如,在图8中,在从时间t1到时间t2的周期中,从服务器12发送的FEC数据包的数量为2。
在步骤S93中,FEC发送控制器86对保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量状态进行初始化。接着,过程返回到步骤S82,并且重复用于控制FEC数据包发送的处理。
在步骤S93中,FEC发送控制器86例如通过设置保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包增加/减少状态为保持状态,而对FEC数据包数量状态进行初始化。
另一方面,当在步骤S90中确定所述状态未从不拥挤状态改变为拥挤状态时,过程跳过步骤S91-S93中的处理,并且返回到步骤S82,从步骤S82重复用于控制FEC数据包发送的处理。
另外,当在步骤S87中确定通信网络13不处于拥挤状态时,过程前进到步骤S94。在步骤S94中,拥挤/不拥挤确定单元105储存通信网络13不拥挤的状态,作为拥挤/不拥挤状态,并且向FEC发送控制器86提供表示通信网络13不拥挤状态的信号。
在步骤S95中,在从拥挤/不拥挤确定单元105接收通信网络13不拥挤状态的信号时,FEC发送控制器86重置储存在FEC发送模式存储单元88中的FEC发送模式标记。由于重置FEC发送模式存储单元88中的FEC发送模式标记,操作停止FEC发送模式,因而,在发送FEC块171的过程中不发送FEC数据包。
在FEC发送控制器86重置FEC发送模式标记之后,过程返回到步骤S82,并且重复用于控制FEC数据包发送的处理。
当在步骤S84中确定RTT测量单元85未接收RTT测量数据包时,过程前进到步骤S96。在步骤S96中,RTT测量单元85确定内部计时器是否已经停止。
在步骤S96中,RTT测量单元85例如通过比较计时器值和预定值如10毫秒而确定计时器是否已经停止。
当在步骤S96中确定计时器未停止时,过程返回到步骤S82,并且重复用于控制FEC数据包发送的处理。
另一方面,当在步骤S96中确定计时器已经停止时,过程前进到步骤S97。在步骤S97中,RTT测量单元85产生RTT测量数据包,并且通过通信网络13向客户机14发送所产生的RTT测量数据包。
在步骤S97中,例如,RTT测量单元85从内部RTC(实时时钟)获得当前时间,以产生如图14所示的RTT测量数据包。
图14示出RTT测量数据包。由于版本信息、填充符和SSRC与图11所示RTP数据包中的类似,因此,未给出其描述。
在RTT测量数据包中,在填充符之后是5位子类型。
RTT测量数据包具有有效负载类型205。在有效负载类型之后是16位消息长度,消息长度表示RTT测量数据包的长度(大小)。
在32位SSRC之后是32位名称。所述名称例如包括用于处理RTT测量数据包的应用程序的名称。
在RTT测量数据包中,在名称之后是发送时间,发送时间表示服务器12向客户机14发送RTT测量数据包的时间。发送时间例如包括RTT测量单元85在步骤S97中从内部RTC获得的时间。
回到图12所示流程图,在步骤S98中,RTT测量单元85设置内部计时器。接着,过程返回到步骤S82,并且重复上述处理。
在步骤S98中,RTT测量单元85把内部计时器的值例如设置为零毫秒。
如上所述,服务器12执行用于控制FEC数据包发送的处理。
下面,结合图15所示流程图详细描述在图12所示步骤S83中的处理,即用于更新FEC数据包数量增加/减少状态的处理。
在步骤S111中,FEC发送控制器86确定保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态是否表示增加状态。
当在步骤S111中确定FEC数据包数量增加/减少状态表示增加状态时,FEC发送控制器86不更新保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态的设置,并且结束用于更新FEC数据包数量增加/减少状态的处理。
另一方面,当在步骤S111中确定FEC数据包数量增加/减少状态不表示增加状态时,过程前进到步骤S112。在步骤S112中,FEC发送控制器86确定是否接收表示FEC数据包不足的FEC反馈数据包。
如上所述,通过通信网络13从客户机14发送FEC反馈数据包。例如,在图8中,客户机14分别在时间t23、时间t24、时间t25和时间t26通过通信网络13向服务器12发送FEC反馈数据包。
FEC反馈数据包包含通知FEC状态,通知FEC状态表示客户机14接收的FEC数据包数量对于客户机14恢复丢失的数据包而言是不足、足够或过多。
当在步骤S112中确定接收表示FEC数据包不足的FEC反馈数据包时,过程前进到步骤S113。在此情况下,由于在客户机14中FEC数据包的数量不足,因此,在步骤S113中,FEC发送控制器86把保存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态设置为增加状态。
另一方面,当在步骤S112中确定未接收表示FEC数据包不足的FEC反馈数据包时,过程前进到步骤S114。在步骤S114中,FEC发送控制器86确定是否已经接收表示FEC数据包过多的FEC反馈数据包。
当在步骤S114中确定接收表示FEC数据包过多的FEC反馈数据包时,过程前进到步骤S115。在此情况下,由于客户机14接收的FEC数据包数量过多,因此,FEC发送控制器86把FEC数据包数量增加/减少状态设置为减少状态,并且结束处理。
另外,当在步骤S114中确定未接收表示FEC数据包过多的FEC反馈数据包时,FEC发送控制器86不更新FEC数据包数量增加/减少状态,并且结束处理。
也就是说,在FEC发送控制器86在图12所示步骤S93的处理中初始化FEC数据包数量增加/减少状态之后直到接收RTT测量数据包为止的周期中,当即使接收一次表示FEC数据包不足的FEC反馈数据包时,FEC发送控制器86也把FEC数据包数量状态设置为增加状态。另一方面,在所述周期中,当只接收表示FEC数据包足够状态的FEC反馈数据包时,FEC发送控制器86把FEC数据包数量状态设置为保持状态。另外,当接收表示FEC数据包数量足够的FEC反馈数据包和表示FEC数据包过多的FEC反馈数据包时,FEC发送控制器86把FEC数据包数量状态设置为减少状态。
以此方式,每次从客户机14接收FEC反馈数据包时,FEC发送控制器86都更新FEC数据包数量增加/减少状态。
下面,结合图16所示流程图详细描述在图12所示步骤S92中的处理,即用于改变FEC数据包数量的处理。
在步骤S131中,FEC发送控制器86确定储存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态是否表示保持状态。当确定FEC数据包数量增加/减少状态表示保持状态时,FEC发送控制器86不改变FEC数据包的数量,并且结束处理。
另一方面,当在步骤S131中确定储存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态不表示保持状态时,过程前进到步骤S132。在步骤S132中,FEC发送控制器86确定储存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态是否表示增加状态。
当在步骤S132中确定FEC数据包数量增加/减少状态表示增加状态时,过程前进到步骤S133。在步骤S133中,FEC发送控制器86确定保存在FEC数据包计数保存单元89中的FEC数据包计数是否为其上限。
当在步骤S133中确定FEC数据包计数不是其上限时,过程前进到步骤S134。在步骤S134中,FEC发送控制器86增加FEC数据包的数量。
当在步骤S133中确定保存在FEC数据包计数保存单元89中的FEC数据包计数为其上限时,就不再增加数据包的数量,从而,FEC发送控制器86不改变FEC数据包的数量,并且结束处理。
当在步骤S132中确定储存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态不表示增加状态时,过程前进到步骤S135。在步骤S135中,FEC发送控制器86确定储存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态是否表示减少状态。
当在步骤S135中确定FEC数据包数量增加/减少状态表示减少状态时,过程前进到步骤S136。在步骤S136中,FEC发送控制器86确定保存在FEC数据包计数保存单元89中的FEC数据包计数是否为零。
当在步骤S136中确定FEC数据包计数不为零时,过程前进到步骤S137。在步骤S137中,FEC发送控制器86减少FEC数据包的数量,并且结束处理。
另一方面,当在步骤S136中确定FEC数据包计数为零时,FEC发送控制器86不改变FEC数据包的数量,并且结束处理,因为不能再减少FEC数据包的数量。
当在步骤S135中确定储存在FEC数据包数量增加/减少状态保存单元87中的FEC数据包数量增加/减少状态不表示减少状态时,FEC发送控制器86不改变FEC数据包的数量,并且结束处理。
如上所述,FEC发送控制器86改变保存在FEC数据包计数保存单元89中的FEC数据包数量。
下面结合图17所示流程图描述执行客户程序的客户机14所执行的解码处理。
首先,在步骤S151中,解码器134对解码处理所需的数据进行初始化。在步骤S151中,例如,解码器134进入待机模式,待机500毫秒的时间段,并且一直等到缓冲器133储存预定数量的视频数据为止。
例如,当视频数据中的帧数为每秒30时,在步骤S151中,解码器134通过设置内部计时器的值为零毫秒并且对计时器值和预定值如33毫秒进行比较,而确定计时器是否已经停止。
也就是说,在步骤S152中,解码器134根据计时器值而确定计时器是否已经停止,并且,当确定计时器已经停止时,过程前进到步骤S153。在步骤S153中,解码器134从缓冲器133获得用于一帧的数据。在步骤S154中,解码器134对在步骤S153的处理中获得的数据进行解码,并且输出得到的视频数据。
在步骤S155中,解码器134设置内部计时器。接着,过程返回到步骤S151,并且重复上述的解码处理。在步骤S155中,解码器134把计时器值例如设置为零毫秒。
在另一方面,当在步骤S152中确定计时器未停止时,过程前进到步骤S156。在步骤S156中,RTP处理器132确定是否已经接收RTP数据包。
当在步骤S156中确定未接收RTP数据包时,过程返回到步骤S152,并且重复解码处理。
当在步骤S156中确定已经接收RTP数据包时,过程前进到步骤S157。在步骤S157中,通过检查接收的RTP数据包,RTP处理器132确定是否已经发生数据包丢失。
当在步骤S157中确定已经发生数据包丢失时,过程前进到步骤S158,在此步骤中,FEC处理器135恢复丢失的一个或多个数据包。
在步骤S158中,例如,当从RTP处理器132提供其所包含FEC块ID与丢失数据包的FEC数据包ID相同的FEC数据包时,FEC处理器135根据提供的FEC数据包而恢复丢失的数据包,并且向RTP处理器132提供恢复的RTP数据包。
在步骤S158中,当不提供FEC数据包或者所提供FEC数据包的数量相对所丢失数据包的数量不足时,FEC处理器135不能恢复与FEC数据包的缺少数量相应的一个或多个丢失数据包,因而不恢复丢失的数据包。
当在步骤S157中确定未发生数据包丢失时,过程跳过步骤S158中的处理,并且前进到步骤S159,因为不需要RTP数据包恢复。
在步骤S159中,RTP处理器132向缓冲器133提供接收的RTP数据包和恢复的RTP数据包。接着,过程返回到步骤S152,并且重复上述处理。
如上所述,解码器134执行解码处理。
下面,结合图18所示的流程图描述执行客户程序的客户机14所执行的用于发送FEC反馈数据包的处理。
在步骤S171中,客户机14对用于发送FEC反馈数据包的处理所需的数据进行初始化。在步骤S171中,例如,FEC处理器135初始化FEC块信息,并且把内部计时器的值设置为零毫秒,其中,FEC块信息初始化在下面描述。
在步骤S172中,RTP处理器132确定是否已经接收数据包。
当在步骤S172中确定已经接收数据包时,过程前进到步骤S1 73。在步骤S173中,RTP处理器132确定是否已经改变所接收数据包的FEC块ID。当在步骤S173中确定已经改变所接收数据包的FEC块ID时,过程前进到步骤S174。在步骤S174中,FEC处理器135执行用于更新接收-结束FEC块171的FEC块状态的处理。
接收-结束FEC块171在此指包含以下FEC块ID的一个FEC块171,其中,所述FEC块ID在已经在步骤S173中确定改变的FEC块ID的紧前面。基于在从服务器12通过通信网络13发送的一个FEC块171中包含的数据包的数量和正确接收的数据包的数量而执行FEC块状态更新处理。因而,当包含在FEC块171中的所有数据包的接收结束时,可执行所述处理。
因而,在步骤S173中,例如,基于所接收数据包的FEC块ID是否改变,而确定包含在FEC块171中的所有数据包的接收是否结束。
在后面描述步骤S174中FEC块状态更新处理的细节。
在步骤S175中,RTP处理器132在FEC块信息保存单元136中记录包含在所接收数据包中的原始数据包数量、数据包总数和FEC块ID,作为FEC块信息。
例如,原始数据包的数量与图11所示RTP数据包中的“K”相对应,并且,数据包总数与图11所示RTP数据包中的“N”相对应。FEC块信息还例如记录到图9所示FEC块信息表中。
参照图11,RTP数据包的原始数据包数量(用“K”代表)与FEC块ID相关联,并且储存为用于图9所示FEC块信息的原始数据包数量。图11所示RTP数据包的FEC块ID储存为用于图9所示FEC块信息的FEC块ID。数据包总数(用图11中的“N”表示)与FEC块ID相关联,并且储存为图9所示FEC块信息的数据包总数。
在步骤S173中确定其FEC块ID已经改变的数据包经过步骤S175中的处理。也就是说,在步骤S174中处理的FEC块ID和在步骤S175中处理的FEC块的FEC块ID互不相同。
在步骤S176中,RTP处理器132把所接收数据包的数量设置为零,其中,所述数量由在FEC块信息保存单元136中记录的FEC块信息表指示。
另外,当在步骤S173中确定未改变FEC块ID时,过程跳过步骤S174-步骤S176的处理,并且前进到步骤S177。
在步骤S177中,RTP处理器132增加接收数据包的数量,其中,所述数量由在FEC块信息保存单元136中记录的FEC块信息表指示。接着,过程返回到步骤S172,并且重复FEC反馈数据包发送处理。
当在步骤S172中确定未接收数据包时,过程前进到步骤S178。在步骤S178中,FEC处理器135确定内部计时器是否已经停止。
在步骤S178中,FEC处理器135可通过对内部计时器的值与预定值如100毫秒进行比较而确定计时器是否已经停止。
当在步骤S178中确定计时器未停止时,过程返回到步骤S172,并且重复FEC反馈数据包发送处理。
另一方面,当在步骤S178中确定计时器已经停止时,过程前进到步骤S179。在步骤S179中,FEC处理器135执行用于对将要发送给服务器12的通知FEC状态进行设置的处理。
在步骤S179中,FEC处理器135基于记录在FEC块信息表中的所有FEC块状态的状态,而执行用于设置通知FEC状态的处理,其中,FEC块信息表由FEC块信息保存单元136保存。在后面描述用于设置通知FEC状态的处理的细节。
在步骤S180中,FEC处理器135的FEC反馈数据包产生器153基于在步骤S179中设置的通知FEC状态而产生FEC反馈数据包。
图19示出FEC反馈数据包。由于版本信息、填充符、以及子类型、消息长度、SSRC和名称与图14所示RTT测量数据包中的类似,因此不给出其描述。
FEC反馈数据包具有有效负载类型204。
在FEC反馈数据包中,向接收方发送在名称之后的通知FEC状态。在图18所示步骤S179的处理中,FEC反馈数据包产生器153执行设置,从而,通知FEC状态例如表示足够状态、过多状态和不足状态中的一种。
回到图18,在步骤S181中,FEC反馈数据包产生器153向通信单元131提供产生的FEC反馈数据包。在接收从FEC反馈数据包产生器153提供的FEC反馈数据包时,通信单元131通过通信网络13向服务器12发送FEC反馈数据包。
在步骤S182中,FEC处理器135更新内部计时器。接着,过程返回到步骤S172,并且重复上述处理。
在步骤S182中,FEC处理器135把内部计时器的值例如设置为零毫秒。
如上所述,FEC处理器135以预定的时间间隔通过通信网络13向服务器12发送FEC反馈数据包。与步骤S178中计时器值比较的值“100毫秒”仅仅是与图8所示时间T1、T2、T3和T4相应的周期的一个实例,并且不用于限制本发明。
下面,结合图20所示流程图详细描述图18所示步骤S174中的处理,即,用于更新接收-结束FEC块171的FEC块状态的处理。
在步骤S201中,RTP处理器132把接收-结束FEC块171中接收数据包的数量储存(记录)到FEC块信息表中,其中,FEC块信息表由FEC块信息保存单元136保存。
在步骤S202中,FEC处理器135根据FEC块信息保存单元136所保存的FEC块信息表,而确定接收-结束FEC块171中接收数据包的数量是否等于原始数据包的数量。
当在步骤S202中确定接收数据包的数量等于原始数据包的数量时,过程前进到步骤S203,因为用于恢复一个或多个RTP数据包的FEC数据包的数量既不少也不多。在步骤S203中,FEC处理器135把FEC块信息保存单元136保存的FEC块信息表中的FEC块状态设置为足够状态,并接着结束处理。
当在步骤S202中确定接收数据包的数量不等于原始数据包的数量时,过程前进到步骤S204。在步骤S204中,FEC处理器135确定接收数据包的数量是否比原始数据包的数量更大。
当在步骤S204中确定接收数据包的数量比原始数据包的数量更大时,过程前进到步骤S205,因为用于恢复一个或多个RTP数据包的FEC数据包的数量过多。在步骤S205中,FEC处理器135把FEC块信息保存单元136保存的FEC块信息表中的FEC块状态设置为过多状态,并接着结束处理。
当在步骤S204中确定接收数据包的数量不比原始数据包的数量更大时,过程前进到步骤S206。在步骤S206中,FEC处理器135确定接收数据包的数量是否比原始数据包的数量更小。
当在步骤S206中确定接收数据包的数量比原始数据包的数量更小时,过程前进到步骤S207,因为用于恢复一个或多个RTP数据包的FEC数据包的数量不足。在步骤S207中,FEC处理器135把FEC块信息保存单元136保存的FEC块信息表中的FEC块状态设置为不足状态,并接着结束处理。
另一方面,当在步骤S206中确定接收数据包的数量不比原始数据包的数量更小时,过程前进到步骤S208。在步骤S208中,FEC处理器135把FEC块信息保存单元136保存的FEC块信息表中的FEC块状态设置为足够状态。
如上所述,每次FEC块171的接收完成时,FEC处理器135都更新FEC块信息保存单元136所保存的FEC块状态。
另外,可不需步骤S206中的处理,就可把FEC块状态设置为不足状态。
下面,结合图21所示的流程图详细描述图18所示步骤S179中的处理,即,用于设置通知FEC块状态的处理。
在步骤S221中,FEC处理器135确定在用于FEC块信息表所记录各个FEC块ID的FEC状态中,是否存在处于不足状态的FEC块171,其中,FEC块信息表由FEC块信息保存单元136保存。
当在步骤S221中确定存在处于不足状态的FEC块171时,过程前进到步骤S222。在步骤S222中,FEC处理器135把通知FEC状态保存单元137保存的通知FEC状态设置为不足状态。在步骤S223中,FEC处理器135初始化FEC块信息,并结束处理。
在步骤S223中,FEC处理器135例如通过清除记录在FEC块信息表中的所有FEC块信息而初始化FEC块信息。
当在步骤S221中确定在用于FEC块信息表所记录各个FEC块ID的FEC状态中,不存在处于不足状态的FEC块171时,过程前进到步骤S224,其中,FEC块信息表由FEC块信息保存单元136保存。在步骤S224中,FEC处理器135确定在用于各个FEC块ID的FEC状态中是否存在处于过多状态的FEC块171。
当在步骤S224中确定存在处于过多状态的FEC块171时,过程前进到步骤S225。在步骤S225中,FEC处理器135把通知FEC状态保存单元137保存的通知FEC状态设置为过多状态,并且过程前进到步骤S223。
当在步骤S224中确定不存在处于过多状态的FEC块171时,过程前进到步骤S226。在步骤S226中,FEC处理器135把通知FEC状态保存单元137保存的通知FEC状态设置为足够状态,并且过程前进到步骤S223。
也就是说,当在FEC块信息表所记录的FEC块状态中,即使存在一个处于不足状态的FEC块171时,FEC处理器135也把通知FEC状态设置为不足状态,其中,FEC块信息表由FEC块信息保存单元136保存。进一步地,当所有FEC块171处于足够状态时,FEC处理器135把通知FEC状态设置为足够状态。当不存在处于不足状态的FEC块171并且存在处于过多状态的FEC块171时,FEC处理器135把通知FEC状态设置为过多状态。
如上所述,FEC处理器135以预定时间间隔,基于FEC块信息保存单元136保存的每个FEC块ID的FEC块状态,而设置将要发送给服务器12的通知FEC状态。
下面,结合图22描述用于返回RTT测量数据包的处理。在步骤S241中,当通信单元131接收数据包时,RTT测量单元138基于从通信单元131提供的数据包而确定是否已经接收RTT测量数据包。当确定未接收RTT测量数据包时,就重复步骤S241中的确定处理,直到接收RTT测量数据包为止。
当在步骤S241中确定接收RTT测量数据包时,过程前进到步骤S242。在步骤S242中,RTT测量单元138立即产生其数据部分与所接收RTT测量数据包的数据部分类似的RTT测量数据包,并且把产生的RTT测量数据包提供给通信单元131。接着,RTT测量单元138使通信单元131立即通过通信网络13向服务器12发送RTT测量数据包。接着,过程返回到步骤S241,并且重复上述处理。
如上所述,在接收RTT测量数据包时,客户机14立即向服务器12返回RTT测量数据包。
如上所述,基于从客户机14发送的FEC反馈数据包,服务器12改变将要发送给客户机14的FEC数据包的数量。进一步地,当通信网络13处于拥挤状态时,服务器12向客户机14发送FEC数据包,并且,当通信网络13不处于拥挤状态时,服务器12取消向客户机14发送FEC数据包。此布置可实现有效的数据发送。
上述处理序列可由硬件和/或软件执行。当由软件执行处理序列时,用于实施所述软件的程序通过存储介质例如安装到并入专用硬件中的计算机上,或者安装到通用个人计算机上,其中,通用个人计算机通过安装各种程序而可执行各种功能。
用于记录将要提供给用户的程序的存储介质可以是从计算机单独分配的封装介质。如图5所示,封装介质的实例包括磁盘51(包括软盘)、光盘52(包括CD-ROM(紧凑盘-只读存储器)和DVD(数字多用途盘)、磁光盘53(包括MDTM(小型盘))、以及半导体存储器54。用于记录所述程序的存储介质还可以是ROM(只读存储器)32或硬盘(包括在记录单元38内),所述介质预先安装在计算机中并提供给用户。
如果需要,用于执行所述处理序列的程序也可通过接口,如路由器和/或调制解调器,或者通过有线或无线通信介质,如局域网、因特网和/或数字卫星广播网络,安装在计算机上。
这里,用于描述储存在此记录介质中的程序的步骤可以或不必按与上述顺序一致的时间序列进行处理。因而,可以同时或单独处理这些步骤。
在本文中,系统指由多个设备构成的整体。
权利要求
1.一种用于通过通信网络发送包含流数据的发送数据包的发送设备,所述发送设备包括用于确定通信网络是否处于拥挤状态的确定部件;用于产生纠错数据包的产生部件,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及控制部件,当确定结果从不拥挤状态改变为拥挤状态时,所述控制部件控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
2.如权利要求1所述的发送设备,其中,当确定通信网络处于拥挤状态时,控制部件执行控制,以使产生部件产生预定数量的纠错数据包,并且,当确定通信网络不处于拥挤状态时,控制部件执行控制,以便取消产生部件执行的纠错数据包产生。
3.如权利要求1所述的发送设备,其中,当确定结果从不拥挤状态改变为拥挤状态时,控制部件根据紧前面的一拥挤状态中的发送数据包的接收状态而执行控制,以便改变纠错数据包的数量。
4.如权利要求1所述的发送设备,其中,至少一个发送数据包定义在预定时间周期内的一个纠错单元,并且,当根据预定时间周期内一个或多个纠错单元的接收状态而确定在预定时间周期内一个或多个纠错单元中的纠错数据包的数量不足时,控制部件执行控制,以便增加纠错数据包的数量。
5.如权利要求1所述的发送设备,其中,确定部件根据短程相关延迟时间和远程相关延迟时间而确定通信网络是否处于拥挤状态,短程相关延迟时间取决于在从第一时间到当前时间的周期内向接收方发送所述发送数据包所需的延迟时间,而远程相关延迟时间取决于在从第一时间到比第一时间更早的第二时间的周期内向接收方发送所述发送数据包所需的延迟时间。
6.一种用于通过通信网络发送包含流数据的发送数据包的发送方法,所述方法包括用于确定通信网络是否处于拥挤状态的确定步骤;用于产生纠错数据包的产生步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及控制步骤,当确定结果从不拥挤状态改变为拥挤状态时,所述控制步骤控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
7.一种记录计算机可读程序的存储介质,所述程序用于通过通信网络发送包含流数据的发送数据包的发送处理,所述程序包括用于确定通信网络是否处于拥挤状态的确定步骤;用于产生纠错数据包的产生步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及控制步骤,当确定结果从不拥挤状态改变为拥挤状态时,所述控制步骤控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
8.一种用于使计算机执行发送处理的程序,所述发送处理用于通过通信网络发送包含流数据的发送数据包,所述程序包括用于确定通信网络是否处于拥挤状态的确定步骤;用于产生纠错数据包的产生步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及控制步骤,当确定结果从不拥挤状态改变为拥挤状态时,所述控制步骤控制由产生部件执行的纠错数据包产生,以便改变纠错数据包的数量。
9.一种用于通过通信网络接收包含流数据的发送数据包的接收设备,所述接收设备包括用于接收纠错数据包的接收控制部件,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定部件,所述确定部件用于确定所接收纠错数据包的数量对流数据纠错是否足够。
10.如权利要求9所述的接收设备,其中,确定部件确定所接收纠错数据包的数量对流数据纠错而言是不足、足够或过多。
11.如权利要求9所述的接收设备,其中,对于由至少一个发送数据包定义的每个纠错单元,确定部件确定所接收纠错数据包的数量对流数据纠错是不足、足够或过多,并且,接收设备进一步包括设置部件,所述设置部件用于执行设置,从而,当根据在预定时间周期内对一个或多个纠错单元的确定结果而确定在预定时间周期内一个或多个纠错单元中的纠错数据包的数量不足时,要发送给接收方的通知表示纠错数据包不足。
12.如权利要求9所述的接收设备,进一步包括产生部件,所述产生部件基于确定结果而产生包含通知的反馈数据包;以及发送控制部件,所述发送控制部件用于控制向接收方发送产生部件所产生的反馈数据包。
13.一种用于通过通信网络接收包含流数据的发送数据包的接收方法,所述方法包括用于接收纠错数据包的接收控制步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定步骤,所述确定步骤用于确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
14.一种记录计算机可读程序的存储介质,所述程序用于通过通信网络接收包含流数据的发送数据包的接收处理,所述程序包括用于接收纠错数据包的接收控制步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定步骤,所述确定步骤用于确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
15.一种用于使计算机执行接收处理的程序,所述接收处理用于通过通信网络接收包含流数据的发送数据包,所述程序包括用于接收纠错数据包的接收控制步骤,所述纠错数据包包含用于对流数据进行纠错的纠错数据;以及确定步骤,所述确定步骤用于确定在接收控制步骤中接收的纠错数据包的数量对流数据纠错是否足够。
全文摘要
本发明涉及发送设备和方法、接收设备和方法、存储介质以及程序,其中拥挤/不拥挤确定单元确定通信网络是否处于拥挤状态。FEC(向前纠错)数据包产生器产生纠错数据包,所述纠错数据包包含用于对包含在发送数据包内的流数据进行纠错的纠错数据。当确定结果从不拥挤状态改变为拥挤状态时,FEC发送控制器控制纠错数据包产生,以便改变纠错数据包的数量。本发明可应用于远程电话会议系统。
文档编号H04L1/16GK1638321SQ20041010027
公开日2005年7月13日 申请日期2004年12月10日 优先权日2003年12月10日
发明者山根健治 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1