首页> 中国专利> 避免丢失分组恢复中的拥塞的系统和方法

避免丢失分组恢复中的拥塞的系统和方法

摘要

本发明描述了一种在分组交换网络中进行媒体会议时,用于克服丢失分组和避免拥塞的设备和方法。为了避免丢失分组这一问题,通过将冗余信息插入媒体流,使得接收器可以根据该冗余信息重建任何丢失的分组。拥塞避免技术包括调整媒体流的位率,以找到在没有拥塞引起分组丢失的情况下能够得到支持的最高位率。当增加位率至更高速率时,多余的位可以来自用于丢失分组恢复的冗余信息,以使得任何由网络拥塞引起的丢失分组将不会对该位流产生不利的影响。

著录项

  • 公开/公告号CN101364946A

    专利类型发明专利

  • 公开/公告日2009-02-11

    原文格式PDF

  • 申请/专利权人 宝利通公司;

    申请/专利号CN200810168676.6

  • 申请日2008-07-23

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人董莘

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 21:32:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-08-14

    授权

    授权

  • 2009-04-08

    实质审查的生效

    实质审查的生效

  • 2009-02-11

    公开

    公开

说明书

背景技术

越来越多的视频会议系统开始使用分组-交换网络,例如互联网,而不是电 路-交换网络,例如PSTN和ISDN。将分组-交换网络用于视频会议所带来的一 个问题是,所有的分组-交换网络都将出现一定程度的丢失分组。即使不多的丢 失分组也会明显地损坏视频质量。

丢失分组问题的现有解决方法包括使用多种错误隐藏技术和图片更新机 制。虽然有所帮助,但这些技术往往存在不足。它们经常被集成在特定的视频 编解码器中,这就使得每当编解码器技术有所改进时都需要对该技术再次进行 设计。

分组-交换网络通常具有至少两种基本类型的丢失分组方式。当网络的第1 层和第2层丢失无法恢复的信息时,将发生物理丢失。这种类型的丢失在有些 情况下更加常见,例如,当采用无线链接(例如,WiFi网络,如802.11a,802.11b, 802.11g和802.11n)时。尽管如此,物理层丢失也能够在有线和光纤链接中发 生。第二种类型的分组丢失可以源于网络拥塞。

为了克服第二种类型的丢失分组,一些视频会议设备采用了多种避免拥塞 的技术。一种这样的技术在美国专利申请10/305485中被描述,其名称为“systetm and method for dynamic bandwidth allocation for videoconferencing in lossy packet switched systems”,申请日为2002年11月26日,该申请整体被引入作 本申请作为参考。这一技术可以被称为“动态带宽分配”或“DBA”。每当这些 DBA类型的算法试图增加带宽时,它们将固有地产生丢失分组的危险,这将导 致媒体被损害的现象。其他类型的避免拥塞的技术包括VCON’s PacketAssist 和其他与丢失分组恢复或拥塞控制相关的标准。例如,RFC2733提供了一种用 于丢失分组恢复的方法,其采用了XOR(奇偶)分组。RFC3448提供了一种 单播(unicast)拥塞控制的方法,与RFC4340一样。

另外,数据丢失恢复技术,例如前向擦除校正和前向错误校正之类,可应 用于网络的第1层1和第2层。这些技术还可以用于被存储的媒体,例如RAID 盘和CDROM/DVD。3GPP近期已经将前向擦除校正标准化。前向错误校正也 可以通过H.320传输而提供给视频流。

迄今为止,还未出现将丢失分组恢复(例如,使用前向擦除校正)与避免 拥塞结合的实现方式。这里将要描述的就是包括上述结合的一种算法。

发明内容

在一方面,本发明涉及一种方法,用于防止传输在可丢失网络中的媒体流 的中断。这一方法包括将丢失分组恢复算法应用至媒体流。该丢失分组恢复机 制可以将冗余信息插入到包括媒体流的传输数据流中。该冗余信息可以使用前 向擦除校正和/或里德-所罗门编码来生成。该方法可以进一步包括将拥塞避免 算法应用于传输的数据流中。该拥塞避免算法将包括暂时增加传输数据流的数 据速率,以确定该网络是否可以支持更高的数据速率。该数据速率可以通过增 加插入到传输数据流的冗余信息量来暂时性地提高。

本发明还可以涉及从可丢失网络接收到的媒体数据的恢复方法,其中该媒 体流作为包括了媒体流和冗余信息的数据流的一部分而被进行传输。该恢复方 法包括接收多个包含媒体流和冗余信息的分组,并根据该接收到的分组重建该 媒体流的丢失部分。

本发明还涉及用于进行上述数据恢复和避免拥塞的视频会议设备。

附图说明

图1描述了一种丢失分组恢复技术,其可以用于避免分组的丢失。

图2描述了一种丢失分组恢复技术,其中某些分组被丢失并且数据被重建。

图3描述了一种丢失分组恢复技术,其中某些分组被丢失并且数据被重建。

图4描述了一丢失分组恢复编码器。

图5-9描述了分组的首标,其可用于结合图1-4所示的丢失分组恢复技术和 编码器。

图10描述了丢失分组恢复解码器。

图11描述了用于拥塞避免算法的状态机,其可用于结合图1-10所示的丢失 分组恢复技术、编码器和解码器。

图12描述了采用丢失分组恢复和拥塞避免的编码器的数据速率,其采用如 图1-10所示的技术、编码器、解码器和算法。

具体实施方式

这里所公开的是一种克服网络传输中丢失分组的影响的技术,其结合了前 向擦除校正和拥塞避免。这些技术可被称作为“丢失分组恢复”或“LPR”。

LPR是一种可伸缩的方法,其用于恢复丢失的RTP媒体分组。尽管这里 所举的示例中都针对视频编解码器,但其并不针对特定媒体。这里所描述的LPR 技术还可以用于保护其他类型的RTP媒体流。LPR使用了里德-所罗门编码 来提供丢失媒体分组的前向擦除纠错,这可以恢复丢失的媒体分组。

当采用LPR时,RTP的有效负载被再次分组以建立近似相等大小的数据 分组。该再次分组后的流使用了特定的RTP动态有效负载类型(其不同于指定 的媒体有效负载数字),并且完全遵循RTP。一种特定于有效负载的首标包括足 够的信息来重建原始的RTP分组。LPR假定SSRC和CSRC信息在恢复集合 中没有改变(如下所述)。时间戳、序列号、原始有效负载类型和标记位都完全 被恢复,这保证了所恢复的RTP流可被解密。

然后,恢复分组被加入这一RTP流中。该恢复分组也遵循RTP。每一恢复 分组还包括描述被保护的数据分组的有效负载首标。每一分组的RTP有效负载 包括该恢复信息。所加入的恢复分组的数量取决于根据RTCP接收器报告估计 的信道损失率。虽然位率的最高值为大约50%,但信道损失率最高达到大约 15%就可被接受。

需要注意到的是,LPR保护并不被认为是全部媒体位率的一部分。仅仅是 实际被压缩的有效负载被算在其内。尽管如此,总体的位率可被根据需要减少, 以避免网络拥塞。可以理解的是,网络拥塞将带来除了分组丢失之外的的不期 望的影响。例如,网络拥塞将引起媒体延迟的增加和丢失的链接(包括信令连 接)。因此,该LPR协议可具有内置的信息来防止拥塞。尽管可以使用多个拥 塞避免算法,但是一种适合的拥塞避免算法将更加详细地描述如下。

将LPR应用于媒体流的实例现将结合附图1-3进行描述。该实例的细节, 包括位率、分组丢失率、分组大小、数据分组与恢复分组的比率等,都仅仅是 实例并且可根据实施细节、信道条件等进行变化。

对于一个300kbps的视频信道,其分组丢失率为2%。三个分组101、102 和103将被传输。LPR的(6+2)模式将被应用,这意味着两个恢复分组104、 105将被插入到六个数据分组106-111的每一组,每八个分组创建恢复集合。该 恢复分组104、105和最大数据分组的大小基本相等,但包括一些额外的开销。 恢复分组允许六个数据分组106-111中任意两个重新生成,其更加详细地描述如 下。

为了保持300kbps信道限制,媒体速率可被减少到大约220kbps,留下 80kbps用于恢复分组。每个再分组后的数据分组的目标大小为500字节。每一 恢复集合因此携带了大约32000比特的信息,代表了信道率为300kbps下的 107ms的时间周期。该107ms期间被称为保护周期。

每一个分组(例如,再分组后的数据分组106-111和恢复数据分组104、105) 包含正常的40字节的IP+UDP+RTP的首标开销。为了简化起见,这一开销没 有显示。但是,与LPR自身相关的开销被显示。例如,“3+420”是指在分组中 具有三个开销字节加上420字节的原始数据。恢复分组被100%地作为开销 (overhead)。下面将详细介绍开销的有关细节。

图2描述了恢复过程。假定数据分组3和5(108,110)丢失。该LPR解 码器根据所接收到的六个分组,如,数据分组1、2、4和6和恢复分组1和2, 创建再生成分组201和202。并且应注意到,这些丢失分组的再生成直到第六个 分组被接收才发生。再生成之后,原始的RTP分组203-205由数据分组而被恢 复。下面将详细描述丢失分组再生成的相关细节。

图3描述了一个失败的分组恢复,其中有两个以上的分组丢失。在这一实 例中,恢复分组1和数据分组3和5一样被丢失。由于这一组中仅仅收到5个 分组,不可能进行分组再生。LPR解码器不会生成部分分组。如果原始分组不 能被完全恢复,那么部分分组信息将被丢弃。因此,数据分组1和2、301、302 都显示为丢失。

在如图3所示的,所有原始数据分组不能恢复的情况下,往往将接收解码 器来请求整个图像的快速更新。可选地,环绕(walk-around)更新,例如美国 专利7020203中描述的那样,其名称为“Dynamic Intra-coded Macroblock Refresh Interval for Video Error Concealment”,公开于2006年3月28日,其 作为参考将被全文引用。在任何情况下,用来修复图像所需的时间并不是所丢 失的分组的数量的函数,而是在恢复集合中由于丢失大于预定数量的分组(2, 在这一实例中)而引起的失败间隔的平均时间。

对于300kbps和2%分组丢失率的信道的给定示例来说,通过覆盖107ms 信道数据的六个数据分组和两个恢复数据分组所组成的每一保护集合,该失败 间隔的平均时间可被计算为大约258秒。假设一次快速更新需要大约两秒,在 由给出的LPR实例所保护的信道上传输的视频将在超过99%的该时间内无差 错。这一保护将带来80kbps的额外开销,其大约为信道速率的30%。

通过参考附图4,对上述LPR实施例其他方面可以更好的理解,其描述了 LPR编码器的实现。这一实施的各种变化都是可能的。视频编码器401可以为 以或多或少的传统方式工作的任何一种视频编码器。例如,视频编码器可根据 H.261,H.263,H.264,MPEG-2,或MPEG-4视频压缩标准来进行操作。可 选地,该视频编码器可以根据多种适合的视频编码技术中的任意一种来进行操 作。

视频编码器401的输出可被提供给可选的加密模块402,其可以是已知类型 中的任意一种。该加密的视频数据(或未加密的视频数据,若未使用加密)可 被提供给RTP发送器403,其同样也是常见的。由RTP发送器403生成的RTP 分组接着可被LPR分组器406使用LPR算法进行再分组,如在下述内容中进 行详细阐述的那样。LPR恢复分组生成器407接着可基于从LPR分组器406 和视频编码器401中接收到的信息来生成恢复分组,其将在下述内容中进行详 细阐述。而后,该LPR恢复分组生成器可将LPR数据分组和LPR恢复分组传 输给接收器(未示出)。

RTCP模块404可接收分组丢失和其它的信道统计数据,并且将这些内容 提供给LPR模式判定模块405,其控制了LPR分组器406。LPR模式判定模 块405可判定参与或者不参与LPR保护,同时也确定所使用的LPR保护参数。 如果未参与LPR保护,LPR分组器406和LPR恢复分组生成器407不作改变 的传递RTP发送器403生成的RTP分组。

LPR模式判定模块405可操作如下。首先,该保护周期(如上所述)可被 确定。更长的保护周期将提供更加有效的分组再生(例如,更少的恢复kbps), 但是带来了更多的延迟。对于最典型的视频会议位率,100ms可能为一个合适 的保护周期。在位率低于128kbps时,将需要更长的保护周期。例如,150ms 将适于64Kbps的速率。在位率在1Mbps以上时,更短的保护周期将有利。例 如,50ms将适于2Mbps或更大的速率。在确定保护周期时,也可以考虑其他 参数。

接下来,可以确定每一保护周期所有分组的数量。通常,对于每一保护周 期具有小数量的分组可能降低保护的效率。相反,每一保护周期具有大数量的 分组可能增加编码和解码保护分组所需的计算量。因此,对于大多数信道而言, 每一保护周期具备大约13或更多的分组被认为是合适的。对于每一保护周期的 分组的数量的判定还应该考虑到用于根据所需数据速率所得到的分组的大小。 输出分组大小(包括IP开销)应该少于1260字节以通过IPSEC隧道而不出现 碎片。

一旦每一保护周期的分组的数量被确定,则每一保护周期的恢复分组的数 量可被选定。恢复分组的数量可被选择(使用传统的盖然论分析技术),从而保 护失败的间隔平均时间等于或超过某一预定的特定值。另外,所有传输视频信 道(包括LPR保护分组以及RTP消息)的集合可以被选择,以使其不超过特 定的拥塞峰值。

以下表格给出了示例的保护模式,其用于各种丢失条件下的各种位率。表1 给出了适于在分组丢失率为4%条件下所使用的LPR参数,其与拥塞避免算法 (如下述)结合使用,以使得当分组丢失率超过3%时减少数据速率。表2给 出了分组丢失率为2%条件下的LPR参数,其可以用于拥塞避免算法未使用的 情况中。

视频速率每组的数数据分组有每组的恢复保护周期MTBF

(k\bs)         据分组          效负载大小         分组        (ms)           (sec)

                               (字节)

64             13              87                 4           141            334

128            12              133                4           100            323

256            12              266                4           100            323

384            12              400                4           100            324

512            12              533                4           100            324

768            12              800                4           100            324

1024           16              800                5           100            757

2048           16              800                5           50             379

3072           24              800                6           50             338

4096           32              800                7           50             378

5120           32              1000               7           50             378

6144           39              1000               8           51             567

表1.分组丢失率为4%时的固定保护

视频速率每组的数数据分组有每组的恢复保护周期MTBF

(k\bs)         据分组         效负载大小        分组        (ms)       (sec)

                              (字节)

64             13             87                3           141        589

128            12             133               3           100        545

256            12             266               3           100        545

384            12             400               3           100        546

512            12             533               3           100        546

768            12             800               3           100        546

1024           16             800               4           100        2591

2048           16             800               4           50         1296

3072           24             800               5           50         2444

4096           32             800               5           50         573

5120           32             1000              5           50         573

6144           39             1000              6           51         1704

表2.分组丢失率为2%时的固定保护

LPR分组器406可操作如下。LPR分组器406将由RTP发送器403生成 的初始媒体分组进行细分,以提高分组再生编码的效率。LPR数据分组包含的 信息仅仅来自一个源分组。如果媒体信道被加密,可对已加密的流进行LPR再 分组装。通常,LPR流自身是未再加密的,例如,加入到加密分组的LPR封 装字段(首标)和最新生成的LPR恢复分组可被毫无阻碍地发送。

如果初始源分组被细分(例如,图1-3中的分组1101),用于这一源分组 的第一个LPR数据分组被称为初始数据分组(例如,图1-3中的数据1106)。 后继数据分组(如果有的话)被称为继续数据分组(例如,图1-3中的数据2107 和数据3108)。继续数据分组的数量将用信号通知给初始数据分组,因而一旦 初始数据分组被发送该数量就不能改变。继续数据分组和初始数据分组可以属 于不同的LPR保护组。

除序列号以外的初始RTP首标的所有字段、有效负载类型和P字段可以无 变化地被每一LPR数据分组携带。这包括时间戳、标记位和SSRC/CSRC信息。 有效负载的编号可以被协商后的LPR有效负载类型而替代。序列号将按照通常 的方式连续地指定给LPR媒体流。LPR分组的P字段可被设至0。LPR分组 器406可以将初始RTP序列号传输给LPR恢复分组生成器407。

如附图5所示的实施例,每一初始数据分组可包括专用于LPR的7字节有 效负载首标。如附图6所示的实例,每一继续数据分组可包括3字节有效负载 首标。这些有效负载首标可紧跟在RTP首标之后,并在视频(或其它媒体)有 效负载之前。首标的大小和每个字段的大小以及它们的排列仅仅是一种示范, 应当理解也可以为其他排列方式。

恢复分组字段501,601可以用于指示在恢复集合中将被连续发送的恢复分 组的数量。恢复集合中的所有数据分组应该发出相同的恢复分组数量。所发出 的恢复分组的数量可以被设为0,这意味着将没有发送恢复分组。这一字段可以 为6位字段,其允许最多为64个恢复分组。类型字段502、602可为2位字段, 其可设置为00或01,以分别指示初始数据分组或继续数据分组。这使得LPR 的首标类型可通过检查第一有效负载字节来确定。

数据索引字段503、603可为8位字段。恢复集合中的第一数据分组可被分 配数据索引1。对于这些集合中的后续的数据分组,该索引可以被递增。继续分 组字段504可为8位字段,其用于表示与初始分组相关的继续分组的数量。该 数据分组字段604为8位字段,其用于表示包括在恢复集合中的数据分组的数 量。所有的数据分组应该都应该表示相同数量的数据分组。

初始序列字段505是16位字段,其指示初始RTP分组的序列号,该序列 号可以用于重建初始RTP分组。初始p位字段506可为用于携带由初始RTP 分组传输的填充位的1位字段。初始有效负载类型字段507可以为7位字段, 其用于像初始RTP分组一样携带有效负载类型。

LPR恢复分组生成器407可操作如下。LPR恢复分组生成器407可用LPR 数据分组中的最终LPR序列号来替代初始媒体中的RTP序列号。LPR恢复分 组生成器407还可以将LPR恢复分组插至每一恢复集合的最后。

每一恢复分组还包括如附图7所示的9字节首标。恢复分组的首标可紧随 RTP首标之后,并且可在视频(或其他媒体)有效负载之前。根据上述的首标, 字段类型和大小为示例性的,也可以采用其他排列方式。

恢复索引字段701可以为6位字段,其用于指示恢复集合中的恢复分组序 列。第一恢复分组可被指定为恢复索引1,对于恢复集合中的后续恢复分组,该 字段将进行增加。类型字段702为设置为10的2位字段,其表示该分组为恢复 分组。恢复分组字段可为8位字段,其包括恢复集合中数据分组的数量。所有 的恢复分组应当是表示由相应数据分组发出的恢复分组的同样数量。数据分组 字段704为8位字段,其表示恢复集合中所发送的数据分组的数量。恢复分组 将指示在相应数据分组中指示的数据分组的同样数量。

保护时间戳字段705为32位字段,其具有恢复集合中每一数据分组的里德 -所罗门编码RTP时间戳。这可以结合使用与恢复有效负载自身所使用里德- 所罗门编码一样的里德-所罗门编码。这一字段可以再生丢失数据分组的RTP 时间戳。该4字节遵守网络秩序(order)。

保护标记、标识和大小字段706(在附图8中进一步描述)可以具有里德- 所罗门编码的RTP标记位802、标识值801和数据分组大小803。当该LPR数 据分组为初始分组时,标识值为1,当LPR数据分组为继续分组时,标识值设 置为0。该大小包括IP、UDP和RTP首标以及LPR首标。数据分组大小可以 遵守网络秩序。

保护字段可以结合使用与恢复有效负载自身所使用里德-所罗门编码一样 的里德-所罗门编码。该字段将为那些可恢复的任意丢失数据分组再生LPR首 标类型、标记和数据分组大小。

恢复分组的有效负载可使用里德-所罗门256(RS256)对其进行编码。初 始数据分组中的初始序列505、初始P位506、初始有效负载类型507和继续分 组504字段可被作为有效负载字节来进行保护。这使得当初始数据分组丢失时, 这一信息能够被恢复。另外,恢复分组有效负载首标可包括三个影象数据 (Phantom Data)字段的编码,这三个字段为:数据分组自身长度、标记位和 时间戳。此外,如果所有用于细分的RTP分组的数据分组丢失,这将允许这一 信息得到恢复。

根据用于RS256的生成函数,每一数据分组中的每一有效负载字节可有助 于每一恢复分组中的相关字节,该生成函数为:

Rj=Σi=1dBij-1Di

其中:Di为第i个数据分组(1≤i≤d);Rj为第j个恢复分组(1≤j≤r);Bi 为第i个基系数(1≤i≤d),其具有如表3中所示的值;并且∑通过 采用如下描述的Galois Field(28)算术运算进行计算。值得注意的是,尽管可 以选择其他数量的数据分组,并且可相应地计算出适合的表格,所给出的基系 数表将恢复集合中的数据分组的最大数量限定为128。

/

** RS256_BaseTable{i}用于数据分组i-1的基本系数

**

** 这些项目是为了保证疏散矩阵是可逆的。

** 选择了每一个项目b,所以除非x为0或者255,b**x不为1。

/

#define RS256_BASETABLE_LEN 128

STATIC CONST UINT8 RS256_BaseTable[RS256_BASETABLE_LEN]={

0x02,0x04,0x06,0x09,0x0D,0x0E,0x10,0x12,

0x13,0x14,0x16,0x18,0x19,0x1B,0x1D,0x1E,

0x1F,0x22,0x23,0x28,0x2A,0x2B,0x30,0x31,

0x32,0x34,0x39,0x3C,0x3F,0x41,0x42,0x43,

0x47,0x48,0x49,0x4A,0x4B,0x4C,0x51,0x52,

0x53,0x54,0x58,0x5A,0x5B,0x5C,0x5D,0x5F,

0x62,0x63,0x68,0x69,0x6D,0x6F,0x70,0x71,

0x76,0x77,0x79,0x7A,0x7B,0x7E,0x80,0x81,

0x83,0x85,0x87,0x88,0x89,0x8C,0x8D,0x8E,

0x90,0x94,0x95,0x97,0x9A,0x9B,0x9D,0x9E,

0x9F,0xA2,0xA3,0xA4,0xA5,0xAA,0xAB,0xAF,

0xB0,0xB1,0xB2,0xB7,0xBB,0xBC,0xBD,0xC0,

0xC2,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,

0xD1,0xD2,0xD3,0xD4,0xD5,0xD8,0xDA,0xDE,

0xE0,0xE1,0xE3,0xE5,0xE8,0xEA,0xEC,0xEE,

0xF0,0xF3,0xF6,0xF7,0xF8,0xF9,0xFA,0xFE

};

表3.RS256基本系数

Galois Field(28)算术运算可被设置为使用两个帮助表格:一个Galois对 数函数(glog)表格,和一个Galois求幂函数(gexp)表格。这些表格是:

unsigned short glog[256]={

0x200,0x00,0x01,0x19,0x02,0x32,0x1A,0xC6,  /* 0 to 7  */

0x03,0xDF,0x33,0xEE,0x1B,0x68,0xC7,0x4B,   /* 8 to 15  */

0x04,0x64,0xE0,0x0E,0x34,0x8D,0xEF,0x81,   /* 16 to 23  */

0x1C,0xC1,0x69,0xF8,0xC8,0x08,0x4C,0x71,   /* 24 to 31  */

0x05,0x8A,0x65,0x2F,0xE1,0x24,0x0F,0x21,   /* 32 to 39  */

0x35,0x93,0x8E,0xDA,0xF0,0x12,0x82,0x45,   /* 40 to 47  */

0x1D,0xB5,0xC2,0x7D,0x6A,0x27,0xF9,0xB9,   /* 48 to 55  */

0xC9,0x9A,0x09,0x78,0x4D,0xE4,0x72,0xA6,   /* 56 to 63  */

0x06,0xBF,0x8B,0x62,0x66,0xDD,0x30,0xFD,   /* 64 to 71  */

0xE2,0x98,0x25,0xB3,0x10,0x91,0x22,0x88,   /* 72 to 79  */

0x36,0xD0,0x94,0xCE,0x8F,0x96,0xDB,0xBD,   /* 80 to 87  */

0xF1,0xD2,0x13,0x5C,0x83,0x38,0x46,0x40,   /* 88 to 95  */

0x1E,0x42,0xB6,0xA3,0xC3,0x48,0x7E,0x6E,   /* 96 to 103  */

0x6B,0x3A,0x28,0x54,0xFA,0x85,0xBA,0x3D,   /* 104 to 111  */

0xCA,0x5E,0x9B,0x9F,0x0A,0x15,0x79,0x2B,   /* 112 to 119  */

0x4E,0xD4,0xE5,0xAC,0x73,0xF3,0xA7,0x57,   /* 120 to 127  */

0x07,0x70,0xC0,0xF7,0x8C,0x80,0x63,0x0D,   /* 128 to 135  */

0x67,0x4A,0xDE,0xED,0x31,0xC5,0xFE,0x18,   /* 136 to 143  */

0xE3,0xA5,0x99,0x77,0x26,0xB8,0xB4,0x7C,   /* 144 to 151  */

0x11,0x44,0x92,0xD9,0x23,0x20,0x89,0x2E,   /* 152 to 159  */

0x37,0x3F,0xD1,0x5B,0x95,0xBC,0xCF,0xCD,   /* 160 to 167  */

0x90,0x87,0x97,0xB2,0xDC,0xFC,0xBE,0x61,   /* 168 to 175  */

0xF2,0x56,0xD3,0xAB,0x14,0x2A,0x5D,0x9E,   /* 176 to 183  */

0x84,0x3C,0x39,0x53,0x47,0x6D,0x41,0xA2,   /* 184 to 191  */

0x1F,0x2D,0x43,0xD8,0xB7,0x7B,0xA4,0x76,   /* 192 to 199  */

0xC4,0x17,0x49,0xEC,0x7F,0x0C,0x6F,0xF6,   /* 200 to 207  */

0x6C,0xA1,0x3B,0x52,0x29,0x9D,0x55,0xAA,   /* 208 to 215  */

0xFB,0x60,0x86,0xB1,0xBB,0xCC,0x3E,0x5A,   /* 216 to 223  */

0xCB,0x59,0x5F,0xB0,0x9C,0xA9,0xA0,0x51,   /* 224 to 231  */

0x0B,0xF5,0x16,0xEB,0x7A,0x75,0x2C,0xD7,   /* 232 to 239  */

0x4F,0xAE,0xD5,0xE9,0xE6,0xE7,0xAD,0xE8,   /* 240 to 247  */

0x74,0xD6,0xF4,0xEA,0xA8,0x50,0x58,0xAF     /* 248 to 255  */

};

表4.Galois Log帮助函数

unsigned char gexp[1065]={

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,   /* 0 to  7  */

0x1D,0x3A,0x74,0xE8,0xCD,0x87,0x13,0x26,   /* 8 to  15  */

0x4C,0x98,0x2D,0x5A,0xB4,0x75,0xEA,0xC9,   /* 16 to 23  */

0x8F,0x03,0x06,0x0C,0x18,0x30,0x60,0xC0,   /* 24 to 31  */

0x9D,0x27,0x4E,0x9C,0x25,0x4A,0x94,0x35,   /* 32 to 39  */

0x6A,0xD4,0xB5,0x77,0xEE,0xC1,0x9F,0x23,   /* 40 to 47  */

0x46,0x8C,0x05,0x0A,0x14,0x28,0x50,0xA0,   /* 48 to 55  */

0x5D,0xBA,0x69,0xD2,0xB9,0x6F,0xDE,0xA1,   /* 56 to 63  */

0x5F,0xBE,0x61,0xC2,0x99,0x2F,0x5E,0xBC,   /* 64 to 71  */

0x65,0xCA,0x89,0x0F,0x1E,0x3C,0x78,0xF0,   /* 72 to 79  */

0xFD,0xE7,0xD3,0xBB,0x6B,0xD6,0xB1,0x7F,   /* 80 to 87  */

0xFE,0xE1,0xDF,0xA3,0x5B,0xB6,0x71,0xE2,   /* 88 to 95  */

0xD9,0xAF,0x43,0x86,0x11,0x22,0x44,0x88,   /* 96 to 103  */

0x0D,0x1A,0x34,0x68,0xD0,0xBD,0x67,0xCE,   /* 104 to 111  */

0x81,0x1F,0x3E,0x7C,0xF8,0xED,0xC7,0x93,   /* 112 to 119  */

0x3B,0x76,0xEC,0xC5,0x97,0x33,0x66,0xCC,   /* 120 to 127  */

0x85,0x17,0x2E,0x5C,0xB8,0x6D,0xDA,0xA9,   /* 128 to 135  */

0x4F,0x9E,0x21,0x42,0x84,0x15,0x2A,0x54,   /* 136 to 143  */

0xA8,0x4D,0x9A,0x29,0x52,0xA4,0x55,0xAA,   /* 144 to 151  */

0x49,0x92,0x39,0x72,0xE4,0xD5,0xB7,0x73,   /* 152 to 159  */

0xE6,0xD1,0xBF,0x63,0xC6,0x91,0x3F,0x7E,   /* 160 to 167  */

0xFC,0xE5,0xD7,0xB3,0x7B,0xF6,0xF1,0xFF,   /* 168 to 175  */

0xE3,0xDB,0xAB,0x4B,0x96,0x31,0x62,0xC4,   /* 176 to 183  */

0x95,0x37,0x6E,0xDC,0xA5,0x57,0xAE,0x41,   /* 184 to 191  */

0x82,0x19,0x32,0x64,0xC8,0x8D,0x07,0x0E,   /* 192 to 199  */

0x1C,0x38,0x70,0xE0,0xDD,0xA7,0x53,0xA6,   /* 200 to 207  */

0x51,0xA2,0x59,0xB2,0x79,0xF2,0xF9,0xEF,   /* 208 to 215  */

0xC3,0x9B,0x2B,0x56,0xAC,0x45,0x8A,0x09,   /* 216 to 223 */

0x12,0x24,0x48,0x90,0x3D,0x7A,0xF4,0xF5,   /* 224 to 231 */

0xF7,0xF3,0xFB,0xEB,0xCB,0x8B,0x0B,0x16,   /* 232 to 239 */

0x2C,0x58,0xB0,0x7D,0xFA,0xE9,0xCF,0x83,   /* 240 to 247 */

0x1B,0x36,0x6C,0xD8,0xAD,0x47,0x8E,0x01,   /* 248 to 255 */

0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1D,   /* 256 to 263 */

0x3A,0x74,0xE8,0xCD,0x87,0x13,0x26,0x4C,   /* 264 to 271 */

0x98,0x2D,0x5A,0xB4,0x75,0xEA,0xC9,0x8F,   /* 272 to 279 */

0x03,0x06,0x0C,0x18,0x30,0x60,0xC0,0x9D,   /* 280 to 287 */

0x27,0x4E,0x9C,0x25,0x4A,0x94,0x35,0x6A,   /* 288 to 295 */

0xD4,0xB5,0x77,0xEE,0xC1,0x9F,0x23,0x46,   /* 296  to 303 */

0x8C,0x05,0x0A,0x14,0x28,0x50,0xA0,0x5D,   /* 304  to 311 */

0xBA,0x69,0xD2,0xB9,0x6F,0xDE,0xA1,0x5F,   /* 312  to  319 */

0xBE,0x61,0xC2,0x99,0x2F,0x5E,0xBC,0x65,   /* 320  to  327 */

0xCA,0x89,0x0F,0x1E,0x3C,0x78,0xF0,0xFD,   /* 328  to  335 */

0xE7,0xD3,0xBB,0x6B,0xD6,0xB1,0x7F,0xFE,   /* 336  to  343 */

0xE1,0xDF,0xA3,0x5B,0xB6,0x71,0xE2,0xD9,   /* 344  to  351 */

0xAF,0x43,0x86,0x11,0x22,0x44,0x88,0x0D,   /* 352  to  359 */

0x1A,0x34,0x68,0xD0,0xBD,0x67,0xCE,0x81,   /* 360  to  367 */

0x1F,0x3E,0x7C,0xF8,0xED,0xC7,0x93,0x3B,   /* 368  to  375 */

0x76,0xEC,0xC5,0x97,0x33,0x66,0xCC,0x85,   /* 376  to  383 */

0x17,0x2E,0x5C,0xB8,0x6D,0xDA,0xA9,0x4F,   /* 384  to  391 */

0x9E,0x21,0x42,0x84,0x15,0x2A,0x54,0xA8,   /* 392  to  399 */

0x4D,0x9A,0x29,0x52,0xA4,0x55,0xAA,0x49,   /* 400  to  407 */

0x92,0x39,0x72,0xE4,0xD5,0xB7,0x73,0xE6,   /* 408  to  415 */

0xD1,0xBF,0x63,0xC6,0x91,0x3F,0x7E,0xFC,   /* 416  to  423 */

0xE5,0xD7,0xB3,0x7B,0xF6,0xF1,0xFF,0xE3,   /* 424  to  431 */

0xDB,0xAB,0x4B,0x96,0x31,0x62,0xC4,0x95,   /* 432  to  439 */

0x37,0x6E,0xDC,0xA5,0x57,0xAE,0x41,0x82,   /* 440  to  447 */

0x19,0x32,0x64,0xC8,0x8D,0x07,0x0E,0x1C,   /* 448  to  455 */

0x38,0x70,0xE0,0xDD,0xA7,0x53,0xA6,0x51,   /* 456  to  63   */

0xA2,0x59,0xB2,0x79,0xF2,0xF9,0xEF,0xC3,   /*  464  to  471  */

0x9B,0x2B,0x56,0xAC,0x45,0x8A,0x09,0x12,   /*  472  to  479  */

0x24,0x48,0x90,0x3D,0x7A,0xF4,0xF5,0xF7,   /*  480  to  487  */

0xF3,0xFB,0xEB,0xCB,0x8B,0x0B,0x16,0x2C,   /*  488  to  495  */

0x58,0xB0,0x7D,0xFA,0xE9,0xCF,0x83,0x1B,   /*  496  to  503  */

0x36,0x6C,0xD8,0xAD,0x47,0x8E,0x00,0x00,   /*  504  to  511  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros fof fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multlply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /* zeros for fast multiply  */

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00    /* zeros for fast

multiply*/

};

表5.Galois取幂帮助函数

这些表格可以如上述的那样用于计算各种算术运算。

Galois Field(28)中的加法和减法是同样的运算,其操作如下:

ab=aΛb

a-b=a∧b

其中的∧为逻辑异或(exclusive)或(XOR)操作符。像普通的算术中一 样,

a0=0a=a.

Galois Field(28)中的乘法操作如下:

ab=g>[glog[a]+glog[b]]

其中+为一普通的加法运算符。像普通的运算一样,a0=0a=0.并 且,a1=1a=a.

Galois Field(28)中的除法(a÷b)操作如下:

a÷b=gexp[glog[a]-glog[b]+255]

其中+是普通的加法运算符,并且-是普通的减法运算符。像普通运算一样, a÷1=a。同样地,b必须不为零。

[0057]幂函数(ab)在Galois Field(28)中的操作如下:

ab=gexp[(glog[a]*b)%0xFF]

其中+为普通的加法符号,-为普通的减法符号,*为普通的乘法符号,和% 为普通的取模函数。如在普通的算术中,对于非零a,a0=1。在RS256的参考 代码,0从未升级到幂。

如上所述,LPR组大小(在分组中)可被设置以达到以所需的保护周期(毫 秒)。若视频多媒体编解码器未使用整个信道的位率,那么该LPR组将导致更 长的延迟时间。例如,在光运动的期间,通常运行在1.5Mbps的视频信道将降 低到750Kbps。这将导致保护周期是期望的两倍长。这样的情况可以导致所选 择的LPR模式继续满足预定的MTBF,其中在该实施例中被因子2所超过。

在一些实例中,可以允许这种延长的保护周期。然而,这将导致分组丢失 时产生更长的时间延迟。因而,在一些实例中,需要让发送器根据实际的视频 率的变化来调整其LPR模式。下面将描述三种这样的调整,当然其它调整也是 可能的。

一种可以做出的调整是保护组的大小。在一些实施例中,这一设置可以在 每个保护组的边界改变。因此,发送器可以监控LPR输出分组率和动态的适应 每一组的分组的数量。当采用了这种调整,LPR保护开销将随着数据速率的下 降而增加。然而,因为这一实例中的数据速率通常将低于正常极限值,变化后 的LPR模式通常将仍然保持在预定的拥塞最大值之下。

另一种可做出的调整是发送器根据初始数据分组的传输来改变其输出分组 的大小。通常地,由于继续分组的数量通常将在初始数据分组中被发出,在发 送继续分组时发送器不应该再改变输出分组的大小。因此,发送器可以监控LPR 输出分组率和输出数据速率,并且为维持每一保护周期的分组的数量而动态地 调整分组的大小。

另一种可做出的调整是发送器为了完成部分恢复集合而发送空数据分组。 一个空数据分组可包括上述的初始数据分组首标。其他通常位于分组中的其他 信息,例如序列号负载类型,继续分组的数量等,都被设置为零。由于空数据 分组是保护组的一部分,上述的恢复分组编码可包括这些分组,并且它们也可 以通过解码过程来恢复。此外,为了防止空数据分组出现在输出媒体分组流中, 空数据分组可被LPR解码器丢弃(参照下述内容)。

填充分组也可被用于维持预定数据速率。这些填充分组可被接收器丢弃。 附图9中描述了填充分组的一个示例。该填充分组包括了6位的扩展类型字段 901,其值为1,并且2位的类型字段902的值为11。该填充分组可作为RTP 分组,其使用用于媒体流的LPR有效负载类型。时间戳的值可与之前发送RTP 分组中的值一样。序列号可在之前发送的分组中的序列号值的基础上进行递增。 该有效负载可以上面示出的填充首标作为结束。该字段的有效负载长度可为最 大指定的分组大小之内的任何长度。

附图10中描述了LPR解码器的示例。根据上述的LPR编码器,这一实施 例中做了一些可能的变化。LPR解码器的操作基本上与上述的LPR编码器的 操作相反。具体来说,LPR分组可由LPR恢复模块1001进行恢复。这些恢复 后的LPR分组可被传送到RTP重排序缓冲器1002中,像传统系统中一样,其 可以将分组重新排列为它们被接收到的顺序。之后,LPR再生器1003可以根 据从恢复的LPR分组(来自LPR恢复模块1001)接收到的信息和从RTCP模 块1006接收到的RTCP信息,重建任何丢失的分组。这些再生模块可由解密模 块1004(如果对源端进行了加密)进行解密,并且最终该解密模块可由视频解 码器1005(或其他类型的合适的媒体解码器,)进行处理。

与传统系统相比,LPR恢复模块1001和LPR再生器1003可以是唯一的 非标准化组件,并且当LPR未被使用时,这两个模块作为不加任何处理的通路 而已。

LPR恢复模块1001可以处理所有的LPR RTP分组。在给出的示例中,所 有接收到的和再生的分组(数据和恢复)可以被直接传送到RTP重排序缓冲器。 每一数据分组中的开销(overhead)数据可使得在任何顺序下由LPR恢复模块 1001处理这些分组。LPR恢复模块1001还可以向RTCP模块1006提供LPR RTP接收器报告信息。这一信息可以是基于所收到的内容(例如,在该接收器 报告中,任何未恢复的分组将被标识为丢失)。

如果恢复集合中存在可被恢复的丢失的数据分组,LPR恢复模块将在收到 充足的恢复分组的情况下立刻恢复这些分组。如上所述,如果k个数据分组丢 失,必须要接收到k个恢复分组才能恢复该数据。这一恢复过程可能包括首先 恢复标记位、数据分组长度、初始分组标识和初始的时间戳。该数据分组长度 可用于恢复初始数据分组的有效负载。LPR RTP首标的“Fixed”组件(例如, SSRC、CSRC、LPR有效负载类型,等)可以从这些恢复分组中的一个中获得。 LPR RTP首标的可变部分(例如,标记位,时间戳,以及序列号)将被设置为 从恢复首标中恢复出的值。

LPR数据分组i的序列号可根据下述方程式进行计算:

Si=Sr-(d+r-i)

其中:i为恢复的数据分组的索引,d为恢复集合中数据分组的编号,r为 己接收到恢复分组索引,Si为分组i的序列号。

当接收到数据分组时,由恢复模块1001使用上述的RS256生成函数来创 建部分恢复分组。像所接收到的集合的相关恢复分组一样,这些分组可以与部 分恢复分组进行导或(即,XOR)运算。所产生的剩余分组将保持任何丢失数 据分组对每一恢复分组的作用。在示例的系统中,每一剩余分组将为每一丢失 数据分组的线性组合。因此,这将出现k个联立方程(每一个对应k个剩余分 组中的一个),每个具有k个未知数(每一个对应丢失的k个数据分组中的一个)。

对于本领域技术人员而言,这些方程可以用一个kxk的矩阵来表示,其可 以用数字化的方式进行解决,例如通过高斯排除。由于这种运算是已知的,这 里就不再重复其细节。对根据剩余数据所得出的转换矩阵进行相乘运算,可恢 复丢失的数据分组。

为了说明上述恢复过程,可以按照附图2所示的恢复方案进行操作。为了 简明起见,使用了普通的算术运算而不是实际的Galois Field(28)运算。为生 成恢复分组中的数据,可以使用如下公式(从如上所述的RS256生成函数和表 格中推导得出):

R1=D1+D2+D3+D4+D5+D6

R2=2D1+4D2+6D3+9D4+13D5+14D6

部分恢复分组可以由解码器根据所接收到的分组来计算。根据上面示例提 到,分组3和4(108,110,附图3)未被接收。这将导致:

P1=D1+D2+D5+D6

P2=2D1+4D2+13D5+14D6

剩余部分可以通过从接收到的恢复分组中减去部分恢复分组而计算得到:

r1=R1-P1=D3+D4

r2=R2-P2=6D3+9D4

剩余部分的生成矩阵为:

1      1

6      9

通过高斯排除对该矩阵进行转换,结果如下:

3      -1/3

-2     1/3

因此,丢失数据分组(例如,数据分组3和4)中的信息可使用如下公式被 恢复:

D3=3r1-r2/3

D4=2r1+r2/3

在使用LPR时,RTP重排序缓冲器1002可与LPR解码器集成在一起。 这允许了最小延时的实现,因为在一些情况下,在次序颠倒的分组实际到达之 前,其可以由LPR再生。此外,在一些实施例中,可能需要获得恢复集合的第 一d分组,并且只有当一些数据分组丢失时才启用里德-所罗门解码器。这种 设计可能不会带来最小化的延迟,但可以具有更好的计算效率。

LPR再生器模块1003可以如上所述的那样,从数据分组中再次创建初始 RTP流。若一些用于RTP分组的数据分组丢失,那么就在输出流中省略那一个 RTP分组。因为该LPR流已被再次排序,每一分组集合的初始分组应该被首 先接收到。若首先收到的是继续分组,那么初始分组已经丢失,并且该继续分 组也可被丢弃。

输出RTP分组使用初始数据分组中的RTP首标信息。有效负载类型、序 列号和时间戳被初始数据首标中的值所替代。有效负载是从该初始分组和任何 具有去掉LPR首标的继续数据分组聚合得到的。若任何继续分组丢失,该输出 RTP分组可抑制。应该注意到的是,继续分组的数量是已知的,这是因为其已 被在初始数据分组的首标中发出。

如上所述的丢失分组恢复技术可与拥塞避免算法相结合来进一步改进操 作。之前所引用的一种拥塞避免算法的示例为动态带宽分配(“DBA”)。DBA 基于接收器的RTP堆栈(1006,附图10)中所报告的丢失分组百分比来对位率 进行减速,以试图避免拥塞。该接收器RTP堆栈在正常的时间周期(例如,每 200ms)为接收器信道生成分组丢失统计数据。这就在允许低MTBF需求的少 数LPR配置(其接下来可允许为更低的开销)的同时,允许了对动态改变通道 的快速适应。

如图12所示,DBA的控制环路可以作为具有以下状态的状态机来实现: 最大比率状态1101、减速状态1102、加速等待状态1103、加速状态1104和固 定损失状态1105。各种状态之间的转换如下。假定系统处于最大比率状态1101, 这表示正在使用最大数据速率。当分组丢失大于某一预定阈值时,将引起状态 转换1106而转换至减速状态1102。

当处于减速状态,系统可减小速度,并且等候以观察分组丢失是否还是继 续大于该预定阈值。若分组丢失不再高于该阈值,则系统可以按照转换1108转 换至加速等待状态。若分组丢失继续高于该阈值,并且减速尝试还未达到最大 次数(1107模块),则该系统可以继续处于减速状态1102并且可以由此继续降 低位率。若减速尝试已经达到最大次数,系统将转换至固定丢失状态1105。

当处于加速等待状态时,额外的高于该预定阈值的分组丢失可以引起系统 根据转换1109转换至减速状态。可选的,如果在预定时间周期之后,未出现高 于该阈值的分组丢失,该系统可以根据转换1110转换至加速状态1104。

在加速状态1104,系统可以增加该位率并且等待高于预定阈值的额外分组 丢失。若不存在分组丢失,则系统确定该位率是否小于最大位率。如果是,系 统将状态转换1111转换至最大比率状态1101。如果不是,系统将继续处于加速 状态1104。在加速状态1104期间,若所经历的分组丢失高于预定阈值,该系统 确定是否已经作出了预定的最大次数的加速尝试(1112模块)。如果不是,系统 根据转换1113转换至加速等待状态。如果已经作出了最大次数的加速尝试,系 统可以根据转换1114转换至最大速率状态1101。

在上述每一种状态中,可以采用不同的分组丢失阈值。另外,一些或所有 的状态转换都可能带有与其相关的延时。可以通过以位率的15%作为每次的增 幅来完成加速。若通道被完全占用并且没有报道丢失分组情况,将导致延时, 该延时在下一次加速发生之前可与X个定时周期(200ms*X)相等。当默认地 将X的值设为2,将导致400ms的延时。任何既不是连续的分组丢失报告也不 是回应报告的分组丢失将导致状态转换。

附图12显示了动态变化带宽的可用性和DBA的改变。附图12还显示了状 态变换、回应延时,以及三种丢失情况:突发丢失、受限通道和固定丢失。在 减速状态期间、加速等待状态期间和加速状态期间的LPR保护的使用已经在附 图12中用阴影区域表示。加速尝试可使用LPR保护开销(overhead)来测试 拥塞峰值,即,仅仅冗余数据可以用来探测网络拥塞情况是否可以允许更高的 位率。若这一拥塞峰值的测试失败,LPR保护任何由分组丢失所引起的损失, 这种分组丢失是因为仅仅使用了冗余数据。这就允许使用连续减少的视频干扰 风险来探测拥塞峰值。

所测得的拥塞峰值可被完全应用于数据流。例如,当多个视频流被发送时, 拥塞峰值可被应用于位流的总和。前向擦除保护可被独立地应用于每一视频流。 尽管如此,相同级别的保护可被应用于所有的流。系统还可以调整为使用共同 的前向擦除保护分组对视频进行共同的保护,或者对每一视频流应用不同的保 护级别。

前向擦除校正还可以仅被应用于视频流的一部分中。例如,在采用了分层 的视频编码的情况下,该前向擦除保护将被应用于底层而不是增强层。可用对 各种层进行不同程度的保护(称之为“不平等保护”)。在这样的配置下,可将拥 塞避免应用于整个数据流中。

表6中给出了拥塞峰值管理的实例LPR探测。这些探测可用于测试将数据 速率提高预定值(例如,10%)的可能性,并且可被持续激活较短时间周期(例 如,800ms)。

视频速率每组的数分组有效负每组的恢复保护周期MTBF

(k\bs)        据分组        载大小(字      分组       (毫秒)       (秒)

                            节)

64            13            87             3          141          2067

128           12            133            3          100          1795

256           12            266            3          100          1795

384           12            400            3          100          1800

512           12            533            3          100          1799

768           12            800            3          100          1800

1024          16            800            3          100          870

2048          16            800            4          50           1158

3072          24            800            6          50           1936

4096          32            800            7          50           1365

5120          32            1000           7          50           1365

6144          39            1000           8          51           1235

表6.对10%速率的加速的探测

这里所描述的技术可以是接收器驱动的,其中接收器可以反馈拥塞峰值和 发送器的擦除保护等级。可选地,它们可以被用于发送器驱动的框架中,或者 甚至是具有分布在发送器和接收器之间的控制环路的混合框架中。经过一些调 整,它还可以适用于多播流。所述技术也可以与其它技术结合,例如分组的重 新传输、周期性图片更新和视频错误隐藏。

如上所述,将前向擦除校正与拥塞避免相结合所带来的独特的好处是任一 机制自身所不能获得的。其中一个好处就是,可通过实验性地增加位流中的前 向擦除保护分组的数量和观察对已传送的数据流的影响,周期性地对拥塞峰值 进行测量。这些保护分组可将总的数据速率增加至所需的探测级别,与此同时 还将保护来自分组丢失(超过拥塞峰值级别的情况)的媒体。第二个好处是通 过动态测量拥塞峰值的方法可以更快地确定所允许的带宽,这一带宽是由拥塞 避免算法中通常所采用的被动方法来提供。第三个好处是,当整体流(媒体和 保护)被限制保持在动态测量的拥塞峰值之下时,被保护的媒体流可以以更少 的延时、更低的保护开销来进行传送。

这里所述技术的另一好处也会随着视频数据速率的增加而出现,系统在防 止分组丢失方面会越来越有效。因此,当位率增加时,例如在使用了高清晰度 视频的情况下,这里所述的技术将变得更加实用和有效。

拥塞避免与前向擦除校正的集成带来了一些独特的优点。例如,拥塞避免 为前向擦除校正带来了一些独特的优点。由于数据链接变得越来越拥挤,沿着 链接的媒体的传递延时增加。单独使用前向擦除校正可以得到可接受的分组丢 失率,但不能降低排队延时。将拥塞避免集成至控制环路结果可以得到所期望 的服务质量(QoS),该服务质量具有低得多的延迟。另外,前向擦除保护的效 率在低延迟应用中要小于其在高延迟应用中的效率。若数据丢失的根源只是简 单的拥塞,那么降低位率将比向数据流增加额外的前向擦除保护分组更加有效。

相反地,前向擦除校正也为单一的拥塞避免增添了相当大的价值。典型地, 拥塞避免技术所降低的数据流的比率要远远多于其提升的比率。例如,TCP的 拥塞机制以乘法因子来降低数据速率,但以施加加法因子来对数据速率进行提 高要慢得多。这是由于增加数据流比率往往会带来拥塞的危险,进而产生丢失 分组。当前向擦除保护与拥塞避免相集成,这种危险大大降低。因此,如上所 述,可以简单地通过增加前向擦除保护分组的的密度来增加数据速率。

此外,拥塞避免技术还可以用于评估链接速度。来自其它数据流的交叉拥 塞常常会导致分组的丢失。当观察到交叉拥塞时,通常分组丢失已经发生。由 于这样的交叉拥塞可以被恢复,所包括地前向擦除保护允许分组丢失。

这里所公开的技术可以被广泛类型的系统所采用,这些系统包括任何用于 传输多媒体数据,例如视频数据、声频数据、静态图像数据以及其它任何类型 数据的系统。这一技术可以被通常用途的计算机系统所采用,例如桌上电脑、 笔记本电脑、掌上电脑、服务器以及类似系统。可选地,这些技术可以在各种 类型的应用系统中使用,例如会议室视频会议系统、桌上视频会议系统以及类 似系统。所述技术也可被基础设施类型的视频会议设备所采用,例如多点控制 单元(MCU)、桥接器、媒体服务器等。

这里所述的方法可被编程为一个或多个计算机程序,并且存储在计算机可 读介质,例如紧凑磁盘、磁带中,存储在易失性或非易失性存储器等中。相应 地,存储在程序存储设备上的指令可被用于使得可编程控制设备(例如计算机 或会议单元)来执行这里所公开的技术。尽管所述的通信系统在远端和近端之 间可提供双向通信,应当理解的是,本公开的教导也可以被应用于单向传输的 系统中。

前述的说明书中优选的和其它的实施例并不作为对申请人所提出的发明构 思的范围或适用性的限制和局限。作为公开这里所包含的发明构思的交换,申 请人将要求所附权利要求中给出的专利权范围。因此,所附权利要求包括了由 对下述权利要求或等同物要求的范围之内的全部可能修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号