动态流交织和基于子流的递送

申请号 CN200880012335.8 申请日 2008-04-16 公开(公告)号 CN101675594A 公开(公告)日 2010-03-17
申请人 数字源泉公司; 发明人 M·卢比; P·帕克扎德; M·沃森; L·维奇萨诺; J·J·克利什;
摘要 一种通信系统可以提供动态交织流的方法,包括下述方法:用于当发送流时独立于任何源 块 结构来动态地引入更大的交织量,以比未引入交织时在原始流中在更大时段上扩展在信道中的丢失或者误差;所述通信系统当使用FEC编码时提供了对于分组丢失或者分组损坏的优越保护,提供了对于网络抖动的优越保护,并且允许将内容移到时间和内容过渡时间减小到最小的内容过渡时间。可以将流划分为子流,通过网络沿着不同的路径向接收器递送子流,并且在接收器处同时接收从可能的不同 服务器 发送的不同子流。当与FEC编码结合使用时,所述方法包括:递送来自可能的不同服务器的每个源块的编码的部分。
权利要求

1、在包括至少一个发送器和至少一个接收器的通信系统中的一种用于 发送内容流的方法,包括:
形成在接收器和第一发送器之间的连接;
在所述接收器处接收从所述第一发送器发送的第一内容流,其中,所 述第一内容流包含初始交织量;以及
在所述第一内容流的发送期间独立于所述第一内容流的源结构来调 整在所述第一内容流中包含的所述交织量。
2、根据权利要求1所述的方法,其中,所述第一内容流中的所述初始 交织量被配置为使得在所述第一内容流中没有初始交织。
3、根据权利要求1所述的方法,其中,将所述第一内容流中的所述交 织量从所述初始量调整到稳定状态量。
4、根据权利要求3所述的方法,其中,所述第一内容流中的所述交织 在所述初始量和所述稳定状态量之间线性地过渡。
5、根据权利要求1所述的方法,其中,根据时间来调整所述第一内容 流中包含的所述交织量。
6、根据权利要求1所述的方法,其中,根据在所述第一内容流的播放 速度和所述第一内容流的发送速度之间的差来调整所述第一内容流中包含 的所述交织量。
7、根据权利要求1所述的方法,其中,根据在所述接收器处经历的数 据丢失量来调整所述第一内容流中包含的所述交织量。
8、根据权利要求1所述的方法,其中,在所述第一内容流的发送期间 所述第一内容流的所述源块结构不发生改变。
9、根据权利要求1所述的方法,还包括:
建立来自所述第一内容流的内容的预留缓冲。
10、根据权利要求9所述的方法,其中,与对所述第一内容流中的所 述交织量进行的任何调整并发地建立所述预留缓冲。
11、根据权利要求1所述的方法,还包括:
形成在所述接收器和第二发送器之间的第二连接;
在所述接收器处接收从连接到所述接收器的所述第二发送器发送的第 二内容流,其中,所述第二内容流包含初始交织量;
在所述第二内容流的发送期间独立于所述第二内容流的源块结构来调 整被递送到所述接收器的所述第二内容流中包含的交织量;以及
以将所述第一内容流和所述第二内容流的合计发送速度保持为大致稳 定的方式在所述第一内容流和所述第二内容流之间过渡。
12、根据权利要求11所述的方法,其中,根据在所述第一内容流和所 述第二内容流这两个流中包含的所述交织量来随着时间执行在所述第一内 容流和所述第二内容流之间的所述过渡。
13、在通过信道发送数据的发送器中的一种用于发送内容流的方法, 包括:
形成在发送器和接收器之间的连接;
向所述接收器发送内容流,其中,所述内容流包含初始交织量;以及
在所述内容流的发送期间独立于所述内容流的源块结构来调整在所述 内容流中包含的所述交织量。
14、在通过信道接收数据的接收器中的一种用于接收内容流的方法, 包括:
形成在接收器和第一发送器之间的连接;
接收从所述第一发送器发送的第一内容流,其中,所述第一内容流包 含能够在所述内容流的发送期间独立于所述内容流的源块结构而调整的初 始交织量。
15、在包括至少一个发送器和至少一个接收器的通信系统中的一种用 于发送内容流的方法,包括:
形成在接收器和多个发送器之间的连接;
在所述接收器处接收从所述多个发送器发送的内容流,其中,每个发 送器向所述接收器发送所述内容流的不同子流,并且每个子流包含初始交 织量;以及在内容子流的发送期间独立于所述内容子流的源块结构来调整在每个 内容子流中包含的所述交织量。
16、根据权利要求15所述的方法,其中,在所述内容子流的发送期间 所述内容子流的所述源块结构不发生改变。
17、根据权利要求15所述的方法,其中,在每个内容子流中包含的交 织量独立于在其它内容子流中包含的交织量。

说明书全文

相关申请的交叉引用

本申请要求于2007年4月16日递交的、名称为“Dynamic Stream Interleaving and Sub-Stream Based Delivery”的美国临时申请No.60/912145 的权益。本申请的内容以引用方式被整体地并入本文以用于各种用途。

本公开也以引用方式并入下面的共同转让的申请/专利以用于各种用 途,就像在本文中完整阐述那样:

授予Luby的美国专利No.6,307,487(以下称为“Luby I”);

授予Shokrollahi等的美国专利No.7,068,729(以下称为“Shokrollahi I”);

Luby等的、在2006年6月9日递交的、名称为“Forward Error-Correcting (FEC)Coding and Streaming”的美国专利申请No.11/423,391(以下称为 “Luby II”);以及

Watson等的、在2007年2月13日递交的、名称为“Streaming and Buffering Using Variable FEC Overhead and Protection Periods”的美国专利申 请No.11/674,625(以下称为“Watson”)。

技术领域

发明涉及在各个方面改善流传送质量递送、内容移到时间、流的可 扩展分布式递送和FEC编码的使用以改善流传送解决方案。流传送包括以 恒定或者可变的比特率的、用于按需的、播放列表内容或者现场直播的音 频、视频和数据的流传送。

背景技术

由于通过基于分组的网络来递送高质量音频和视频正在变得越来越常 见,流媒体递送正在变得越来越重要,所述网络诸如因特网、蜂窝和无线 网络、输电线网络和许多其他网络。所递送的流媒体的质量取决于多个因 素,其中包括原始内容的质量、原始内容的编码质量、接收设备解码和显 示视频的能、在接收器接收的信号的时间性和质量等。为了建立感知的 良好流媒体体验,在接收器接收的信号的传送和时间性特别重要。与从发 送器发送的流相比较,良好的传送提供了在接收器接收的流的保真度,而 时间性表示接收器能够多么快地在发起对于内容的请求后开始播放所述内 容。
近来,考虑使用前向纠错(FEC)码来用于在传输期间的流媒体的保护 变为惯例。当通过分组网络——其实例包括诸如由诸如3GPP、3GPP2和 DVB的组织标准化的那些的因特网和无线网络——发送时,源流当被生成 或者使得可获得时被置于分组中,因此,分组用于以源或内容流被生成或 者使得可获得时的顺序来携带源或内容流到接收器。
在针对这些类型的情况的FEC码的典型应用中,编码器在维修分组的 建立中使用FEC码,除了包含源流的原始源分组之外,还随后发送所述维 修分组。维修分组具有下述属性:当源分组丢失发生时,所接收的维修分 组可以用于恢复在丢失的源分组中包含的数据。维修分组可以用于恢复完 全丢失的丢失源分组的内容,但是也可以用于从部分分组丢失发生时恢复, 无论完全接收的维修分组或者甚至部分接收的维修分组。因此,完全或者 部分地接收的维修分组可以用于恢复完全或者部分丢失的源分组。
在其他实例中,所发送的数据会发生其他类型的恶化,例如,比特的 值可能变换,因此,可以使用维修分组来校正这样的恶化,并且尽可能精 确地提供源分组的恢复。在其他实例中,并非必然地以离散分组来发送源 流,而是可以例如作为连续比特流来发送源流。
存在可以用于提供源流的保护的FEC码的许多实例。里德-所罗 (Reed-Solomon)码是在通信系统中用于错误和消除纠正的公知编码。对 于在例如分组数据网络上的消除纠正,里德-所罗门码的一种公知的有效实 现方式使用在下文中所述的柯西(Cauchy)或者范特蒙德(Vandermonde) 矩阵:L.Rizzo,“Effective Erasure Codes for Reliable Computer Communication Protocols”,Computer Communication Review,27(2):24-36(April 1997)(以下 称为“Rizzo”)和Bloemer等,“An XOR-Based Erasure-Resilient Coding Scheme”,Technical Report TR-95-48,International Computer Science Institute, Berkeley,California(1995)(以下称为“XOR-Reed-Solomon”)或者其他。
FEC码的其他实例包括LDPC代码、诸如在Luby I中所述的那些的链 式反应码和诸如在Shokrollahi I中的多级链式反应码。
在Rizzo和XOR-Reed-Solomon中描述了用于里德-所罗门码的变化形 式的FEC解码处理的实例。在那些实例中,在已经接收到足够的源和维修 数据分组后应用解码。解码处理可能是在计算上复杂的,并且依赖于可用 的CPU资源,相对于由在中的媒体所跨越的时间长度,这可能需要相当 长的时间来完成。接收器当计算在媒体流的接收开始和媒体的播放之间所 需要的延迟时必须考虑解码所需要的时间长度。由于解码所导致的这个延 迟被用户感知为在他们请求特定媒体流和重放开始之间的延迟。因此期望 最小化这个延迟。
在许多应用中,将分组进一步细分为其上应用了FEC处理的符号。分 组可以包括一个或多个符号(或者少于一个符号,但是通常不在分组间划 分符号)。符号可以具有任何大小,但是符号的大小经常至多等于分组的大 小。源符号是编码要被发送的数据的那些符号。维修符号是除了源符号(即, 如果可以获得所有的源符号并且不能获得任何维修符号,则可以完全恢复 要发送的数据)之外地、直接或者间接地从源符号生成的符号。
一些FEC码是基于块的,其中,编码操作依赖于在块中的一个或多个 符号,并且可以独立于不在那个块中的符号。使用基于块的编码,FEC编 码器可以从在一个块中的源符号生成那个块的维修符号,然后移动到下一 个块,并且不必涉及除了用于被编码的当前块的源符号之外的源符号。在 发送中,包括源符号的源块可以被表示为包括编码的符号(其可以是一些 源符号、一些维修符号或者两者)的编码块。在存在维修符号的情况下, 在每个编码块中不是需要全部的源符号。
对于一些FEC码,特别是里德-所罗门码,当每个源块的编码符号的数 量增加时,编码和解码时间增大地不再实用。因此,在实践中,经常在每 个源块可以生成的编码符号的总数上有实际上限(255是一些应用的大概实 际限制),特别是在通过常规硬件来执行里德-所罗门编码或者解码处理的典 型情况下,例如在限于每个源块总共255个里德-所罗门编码符号的蜂窝电 话中的专用硬件中实现使用作为用于保护流以防止分组丢失的DVB-H标 准的一部分包括的里德-所罗门码的MPE-FEC处理。因为经常需要将符号 置于分离的分组有效负荷中,因此这对于被编码的源块的最大长度施加了 实际上限。例如,如果分组有效负荷限于1024或者更少字节并且每个分组 携带一个编码符号,则编码的源块可以是至多255KB(千字节),并且这也 当然是在源块本身的大小的上限。
下述其他所关心的情况也是问题:诸如能够足够快地解码源块以赶上 源流传送率,最小化由FEC解码引入的解码延迟,并且在FEC解码期间的 任何时间点仅仅使用在接收设备上的可用CPU的小部分。
其他关心情况包括开始播放流的能力,诸如使用个人计算机来解码和 呈现所接收的音频和视频流,并且在计算机屏幕上显示所述视频,并且通 过内置的扬声器来播放所述音频,或者作为另一个实例,使用机顶盒来解 码和呈现所接收的音频和视频流,并且在电视显示器上显示所述视频,并 且通过立体声系统来播放所述音频。一个主要问题是最小化在当用户确定 观看作为流递送的新内容时和当所述内容开始播放时之间的延迟,以下称 为“内容移到时间”。内容移到的实例是当用户正在观看经由第一个流递送 的第一内容,然后用户决定观看经由第二个流递送的第二内容,并且启动 开始观看第二内容的动作的时候。第二个流可以从与第一个流相同或不同 的服务器组发送。内容移到的另一个实例是当用户正在观看网站并且通过 点击在浏览器窗口中的链接而决定开始观看经由第一个流递送的第一内容 的时候。内容移到的另一个实例是当用户想寻求并开始在同一内容流中新 的位置(向前或者向后)观看的时候。当搜索和采样大量的可用内容时, 最小化内容移到时间对于视频观看以允许用户具有高质量的快速内容冲浪 体验是重要的。高质量的快速内容冲浪体验经常与用户消费的内容量正相 关。
经常是这样的情况:对于内容移到时间的主要影响因素是底层的FEC 结构。另一个考虑是最小化在播放一个内容的结尾和播放另一个内容的开 始之间的时隙,其最好是连续的,具有很小暂停或者没有暂停。例如,当 所述一个内容是广播显示并且所述下一个内容是广告,或者相反时,在它 们的播放之间的长间隙(本文称为“内容过渡时间”)是不期望的。
显然,最小化内容过渡时间是期望的,同时最小化所述过渡周围的时 段期间向接收器的流传送速度。
另一个考虑是当使用诸如因特网之类的尽力递送网络时最大化所递送 的流的质量,所述网络可能丢弃分组并且会引起要递送的分组所花费的时 间量上的很大变化,同时最小化诸如带宽的网络资源的使用。
另一个考虑是提供强壮和可扩展的流递送解决方案,其允许系统的部 件在故障时不对被递送到接收器的流的质量产生副作用
可以使用交织来提供对于诸如间歇的分组丢失的信道缺陷的优越保 护。例如,分组丢失经常有些突发性,因此在更长的时段上展开源块会是 有益的。对于某些FEC码,大源块的本地使用是实用的,但是对于诸如里 德-所罗门码的其他FEC码,经常有可以使用的源块的大小的实际限制。因 此,为了在更长的时间间隔上扩展与源块相关联的分组的传输,交织包括 针对不同源块的编码符号的分组的发送是有益的。
以前,已经引入了解决如上所述的一些考虑的方法。例如,在Luby II 中描述了一些新颖的FEC源块形成和交织方法。一些交织方法在交织量对 于整个流是固定的意义上是静态的。因此,有时在影响由这样的方法提供 的保护质量的交织量和内容移到时间之间存在折衷,即更大的交织量提供 了更好的流保护,但提供更长的内容移到时间,并且对于向接收器的流发 送的整个持续时间,以固定的方式来确定这种折衷。
存在在流发送处理的大多数期间提供短的内容移到时间和更大的交织 量的一些方法,诸如在Watson中描述的一些方法。在Watson中描述的一 些方法从短的初始源块向越来越长的源块动态过渡,并且在所述过渡时段 期间,以比内容流发送速度略快的速度发送。这样的方法提供了短的内容 移到时间,同时允许建立当流进行时提供的保护质量。例如,一种应用在 Watson中所述的一些方法的方式是确定源块结构,并且在流正被发送时执 行FEC编码,即短到长的源块结构被确定,并且当它们在其中它们被单独 的接收器访问的每个点被发送时被FEC编码,因此,对于每个接收器独特 地执行源块结构形成和FEC编码,并且被发送到每个接收器的流是独特的。 但是,有时期望具有独立于流的递送而确定的内容流的源块结构,所述独 立于例如独立于接收器、独立于观看内容的时间和所述观看在内容流中的 何处开始、以及独立于在流中的数据以何顺序被递送。如果要从多个服务 器向单个接收器递送内容流,则这是特别重要的。
因此,期望具有改进的过程和装置。

发明内容

根据本发明的方面的编码器、解码器和通信系统的实施例提供了动态 交织流的方法,包括当发送流时独立于任何源块结构动态地引入更大的交 织量的方法。这些方法的一些益处是:它们比未引入交织时在原始流中在 更大时段上扩展在信道中的丢失或者误差,它们提供当使用FEC编码时对 于分组丢失或者分组损坏的优越保护,它们提供对于网络抖动的优越保护, 并且它们允许将内容移到时间和内容过渡时间减小到最小。这些方法的一 些另外的益处包括平滑所发送的流速度,包括在从流发送一个内容向另一 个内容的过渡上,以及最小的内容过渡时间。
根据本发明的方面的编码器、解码器和通信系统的实施例也可以将数 据流划分为子流,将所述子流通过网络沿着不同的路径递送到接收器,并 且在接收器处同时接收从可能的不同服务器发送的不同子流。当与FEC编 码结合使用时,所述方法包括:从可能的不同服务器递送每个源块的编码 的部分。这些方法的一些益处包括改善的内容移到时间、对于服务器故障 和路径故障的强壮性、对于盘故障的强壮性、对于分组丢失和/或损坏的改 善的强壮性、整体流递送解决方案的改善的可扩展性和在服务器之间的改 善的内容存储和流传送速度均衡。
根据本发明的方面的编码器、解码器和通信系统的实施例也可以将动 态交织与子流递送结合。例如,使用动态交织可以确定源块架构和FEC编 码,并且可以将编码流划分为子流,并且可以使用动态交织向接收器递送 子流的组合,以提供具有最小内容移到时间的强壮的流递送系统。这些组 合的方法的益处是动态交织和子流递送的益处的组合。
下面的详细说明与附图将提供本发明的本质和益处的更好的理解。

附图说明

图1是根据本发明的一个实施例的通信系统的框图
图2是说明内容移到时间的图。
图3A是例示内容移到时间的分量的图。
图3B是例示在解码期间的用于FEC的CPU利用率的图。
图4是例示内容流的源块结构和每个源块的对应内容流速度的表示的 图。
图5是例示对应于图4的内容流的编码块结构的图。
图6是例示对应于基本发送器方法的接收器和内容移到时间的图。
图7是例示流发送的带子方法的图。
图8是例示根据流发送的带子方法的静态交织的图。
图9是例示对应于静态交织发送器方法的接收器和内容移到时间的图。
图10是例示当向接收器发送新流时的动态交织发送器方法的图。
图11是例示由用于动态交织发送器方法的接收器经历的内容移到时间 和长时期保护期的图。
图12是例示在用于动态交织发送器方法的在两个连续内容分段之间的 内容过渡的图。
图13是例示在用于动态交织发送器方法的在两个不连续内容分段之间 的内容过渡的图。
图14是例示要用于基于子流的递送方法中的、从头端服务器向各个分 布式服务器分发的编码内容流的图。
图15是例示在基于子流的递送方法中的、从各个分布式服务器请求内 容流并且从这些服务器中的一些接收编码内容流的接收器的图。

具体实施方式

实施例提供了动态地交织流的新颖方法,包括用于当独立于任何源块 结构而发送流时动态地引入更大交织量的方法,其中所述发送是在网络等 上进行的。实施例也提供了用于下述方面的新颖方法:将数据流划分为子 流,将所述子流通过网络沿着不同的路径递送到接收器,并且在接收器处 同时接收从可能的不同的服务器发送的不同子流。当与FEC编码结合使用 时,所述方法包括:从可能的不同的服务器递送每个源块的编码的部分。 实施例还提供了将动态交织与子流递送结合的新颖方法。
以下,假定承载数据的网络是基于分组的,以便简化本文的说明,并 且认识到,本领域内的技术人员可以容易看出本文所述的过程和方法如何 可以被应用到诸如连续比特流网络之类的其他类型的传输网络。以下,假 定FEC码提供了对于丢失分组或者丢失分组中的部分数据的保护,以便简 化本文的说明,并且认识到本领域内的技术人员可以容易看出本文所述的 过程和方法如何可以被应用到诸如比特变换之类的其他类型的数据传输错 误。在本说明书中,假定要编码的数据(源数据)已经被划分为相等长度 的“符号”,其可以是任何长度(小到单个比特),但是对于数据的不同部 分可以是不同的长度。
可以在分组中在数据网络上承载符号,并且在每个分组中明确地承载 或者隐含全部数量的符号。在一些情况下,有可能源分组不是符号长度的 倍数,在这种情况下,可以截断在分组中的最后符号。在这种情况下,为 了FEC编码的目的,隐含地假定这个最后的符号被填充固定模式的比特, 例如零值比特,以便即使这些比特未被承载在分组中,接收器也仍然可以 填充这个最后的截断符号为完整的符号。在其他实施例中,所述固定模式 的比特可以被置于分组中,由此有效地将符号填充到等于所述分组长度的 长度。可以经常以比特来测量符号的大小,其中,符号具有M比特的大小, 并且从2^M(2的M次幂)个符号的符号表中选择所述符号。非二进制数 字也是可预期的,但是二进制比特是优选的,因为它们更普遍地被使用。
被考虑用于流传送的FEC码通常是系统化的FEC码,即,源块的源符 号被包括为源块的编码的一部分,并且从而发送所述源符号。本领域内的 技术人员可以认识到,本文所述的方法和过程也同样良好地适用于不是系 统化的FEC码。系统化的FEC编码器从源符号的源块生成某个数量的维修 符号,并且所述源符号和维修符号的至少一些的组合是表示源块的通过信 道发送的编码符号。某些FEC码有益于有效地生成所需要数量的维修符号, 诸如“信息附加码”或者“喷泉码(fountain codes)”,并且这些代码的实例 包括“链式反应码”和“多级链式反应码”。诸如里德-所罗门码的其他FEC 码可以实际上对于每个源块仅生成有限数量的维修符号。
存在用于承载符号的许多其他方法,并且虽然下面的说明为了简单起 见使用了分组的方法,但是这不意味着是限定性的或全面的。在下面的说 明的环境中,术语“分组”并不意味着被限制为在字面上表示作为单个数 据单位被发送的内容。相反,其表示包括用于定义可以或者可以不作为单 个数据单位被发送的符号和部分符号的逻辑分组的更宽意图。
也存在除符号丢失之外的数据损坏的形式,例如在发送中改变其值或 者以其他方式被损坏的符号,下述的方法也同样地适用于它们。因此,虽 然下面的说明经常描述符号丢失,但是所述方法同样良好地适用于其他类 型的损坏和除FEC消除码之外的其他类型的FEC码,诸如FEC纠错码。
FEC码实例
图1是使用链式反应FEC编码的通信系统100的框图。在通信系统100 中,输入文件101或者输入流105被提供到输入符号生成器110。输入符号 生成器110从输入文件或者流生成一个或多个输入符号(IS(0)、IS(1)、 IS(2)、...)的序列,并且每个输入符号具有值和位置(在图1中被表示为 带括号的整数)。输入符号的可能值,即它的符号表通常是二百万符号的符 号表,使得每个输入符号对于输入文件的M个比特编码。一般通过使用通 信系统100来确定M的值,但是通用系统可以包括对于输入符号生成器110 符号大小输入,使得M可以针对不同的使用而不同。输入符号生成器110 的输出被提供到编码器115。
密钥生成器120生成用于要由编码器115生成的每个输出符号的密钥。 可以根据在Luby I或者在Shokrollahi I中所描述的方法之一或者任何类似 的方法来生成每个密钥,该任何类似的方法保证对于在流中的同一输入文 件或者数据块生成的密钥的大部分是唯一的,而不论它们是由这个还是另 一个密钥生成器生成的。例如,密钥生成器120可以使用计数器125的输 出、唯一的流标识符130和/或随机数生成器135的输出的组合来生成每个 密钥。密钥生成器120的输出被提供到编码器115。在诸如一些流传送应用 的其他实例中,密钥组可以是固定的,并且再次重用于在流中的每个数据 块。在一个典型的实施例中,通过密钥生成器的分辨率而不是输入文件或 者流的大小或者其他特性来控制可以生成的密钥的数量。例如,如果预期 输入是在经常数千符号或者更少的数量级上,则密钥分辨率可以是32比特, 允许多达40亿个唯一密钥。这些相关数目的一个结果是根据这些密钥编码 的编码器能够对于4000个输入符号生成40亿个唯一的输出符号。实际上, 大多数通信系统将不会丢失符号的0.999999部分,因此在任何地方都不需 要生成40亿个输出符号,因此,可能密钥的数量可以被当作有效地无限的, 并且将不必被重复,并且密钥的两个独立选择将获得同一密钥的可能性为 无限小。但是,如果由于某些原因是这种情况,则可以提高密钥生成器的 分辨率,以便使用密钥的处理可以像存在无尽的密钥供应那样运行。
从由密钥生成器120提供的每个密钥I,编码器115从由输入符号生成 器提供的输入符号生成具有值B(I)的输出符号。
每个输出符号的值根据其密钥和一个或多个输入符号的某个函数被生 成,所述一个或多个输入符号在此被称为输出符号的“关联的输入符号” 或者仅仅称为输出符号的“关联”。通常,但是不总是这样,M对于输入符 号和输出符号是相同的,即它们都对于相同的比特数量编码。在一些实施 例中,输入符号的数量K被编码器使用来选择所述关联。如果不预先知道 K,诸如当输入是流并且K可以在流中的每个块之间变化时,K可以仅仅 是估计。值K也可以被编码器115使用来分配输入符号的存储。
编码器115向发送模块140提供输出符号,并且密钥生成器120向发 送模块140提供每个这样的输出符号的密钥。发送模块140发送输出符号, 并且依赖于所使用的密钥生成方法,发送模块140也可以在信道145上向 接收模块150发送关于发送的输出符号的密钥的一些数据。假定信道145 是消除信道(erasure channel),但是这不是通信系统100的正确操作的要求。 模块140、145和150可以是任何适当的硬件部件、软件部件、物理媒体或 者它们的任何组合,只要发送模块140适于向信道145发送输出符号和关 于它们的密钥的任何所需要的数据,并且接收模块150适于从信道145接 收符号和关于它们的密钥的可能的一些数据。K的值如果用于确定所述关 联,则可以通过信道145被发送,或者其可以通过编码器115和解码器155 的协商被预先设置。
信道145可以是实时信道,诸如通过因特网的路径或者从电视机发送 器向电视机接收器的广播链路或者从一个点到另一个点的电话连接,或者 信道145可以是存储信道,诸如CD-ROM、盘驱动器或者网站等。信道145 甚至可以是实时信道和存储信道的组合,诸如以如下方式形成的信道:一 个人从个人计算机通过电话线向因特网服务提供商(ISP)发送输入文件, 所述输入文件被存储在万维网服务器上,并且随后通过因特网被发送到接 收者。
当信道145包括分组网络时,通信系统100可能不能假定在通过信道 145的传送中保持任意两个或者更多个分组的相对顺序。因此,使用如上所 述的密钥生成方案中的一个或多个来确定输出符号的密钥,而不必然地通 过输出符号脱离接收模块150的顺序来确定。
接收模块150向解码器155提供输出符号,并且接收模块150接收的 关于这些输出符号的密钥的任何数据被提供到密钥再生器160。密钥再生器 160重新生成用于所接收的输出符号的密钥,并且向解码器155提供这些密 钥。解码器155使用由密钥再生器160提供的这些密钥以及对应的输出符 号来恢复输入符号(再次的IS(0)、IS(1)、IS(2)、...)。解码器155向输入 文件重组器165提供所恢复的输入符号,输入文件重组器165生成输入文 件101的副本170或者输入流105的副本175。
媒体流应用
当用于媒体流应用中时,形成源媒体流的源分组有时被收集在称为源 块的组中。例如,源块可以是跨越固定时间长度的一组源分组,并且例如, 可以向这些源块独立地应用里德-所罗门消除码,以生成与源块的原始源分 组一起被发送到接收器的维修分组。
在发送器,当源分组到达时,源流可以被连续地划分为源块,并且对 于每个源块生成维修分组,并且发送维修分组。有时优选来最小化通过使 用FEC码而增加的总的端到端延迟,特别是对于现场直播或者交互的流应 用,而有时优选的是,如果FEC解决方案的整体设计使得在被发送之前在 发送器处尽可能少地被延迟,并且以尽可能小的总的延迟来发送对于源块 的所有源分组和维修分组。还优选的是,如果FEC编码流的速度尽可能平 滑,即在FEC编码流速度上有尽可能小的可变性或者至少不放大在原始源 流中已经存在的任何可变性,因为这使得FEC编码流带宽使用更可预测, 并且最小化对于网络和其他可能的竞争流的影响。还优选的是,如果在源 块的分组中发送的数据尽可能均匀地在当发送那个源块的分组时的期间扩 展,因为这提供了对于突发丢失的最佳保护。还优选的是,以使得最小化 内容移到时间和内容过渡时间的方式来构造源块。还优选的是,在接收器 的逻辑尽可能简单。
在接收器,如果分组丢失或者带有错误地被接收(所述错误可以例如 使用CRC校验被检测到并丢弃该分组),那么,假定已经接收到足够的维 修分组,则可以使用维修分组来恢复丢失的源分组。
在一些应用中,分组被进一步细分为其上应用了FEC处理的符号。对 于一些FEC码,特别是里德-所罗门码,当每个源块的编码符号的数量增大 时编码和解码时间变得不再实用,并且在每个源块可以生成的编码符号的 总数上经常存在上限。由于符号被置于不同的分组有效负荷中,这在源块 的编码上的最大长度上施加了实际上限,并且也当然在源块本身的大小上 施加了上限。
对于许多应用,当要在长时间段上提供保护或者当媒体流速率高时, 在超过最大源块大小的数据上提供保护是有利的。在这些情况下,使用比 最大源块大小更小的源块然后交织来自不同源块的源分组提供了一种解决 方案,其中,来自被发送的单独源块的源分组被扩展到更大的时段上。对 于其他应用,当期望短的内容移到时间时并且当独立于交织方法而确定源 块结构时,期望使用更短的源块,并且当接收器访问内容时开始依序发送 它们,然后当内容流传送继续时提高交织量以便在更长的时间间隔上扩展 源块的发送,以提高对于突发丢失的保护平。
另一个考虑是能够足够快地解码源块,以赶上源流传送速度,最小化 由FEC解码引入的解码延迟,并且在FEC解码期间的任何时间点上仅使用 在接收设备上的可用CPU的一小部分。因此,期望使用允许每个源块的FEC 解码在时间上尽可能均等地扩展、并且最小化FEC解码延迟的源块交织。
本文所述的各个实施例提供了这些优点中的一个或多个。
流传送和FEC码
为了提供源流的FEC保护,该源流可以是一个或多个逻辑流的组合, 其实例是音频RTP流和视频RTP流的组合、MIKEY流和RTP流的组合、 两个或者更多视频流的组合和控制RTCP业务和RTP流的组合。当源流以 例如源比特流、源符号流或者源分组流的格式到达发送器时,发送器可以 将所述流缓冲为源块,并且从源块生成维修流。发送器可以例如在要通过 分组网络发送的分组中调度和发送源流和维修流。FEC编码流是组合的源 流和维修流。FEC接收器接收可能例如由于丢失或者比特变换而已经损坏 的FEC编码流。FEC接收器尝试重建源流的原始源块,并且在接收器处调 度和使得可以获得原始源流。
对于许多应用,结合底层流的结构——例如H.264AVC视频流的GOP 结构和/或结构——来确定源块结构。对于这些应用中的一些,在分组的 流发送顺序之前和/或独立于分组的流发送顺序而确定源块结构,其中,分 组的流发送顺序可以依赖于何时和何地所述流被接收器访问以便接收所述 流。对于这样的应用,优选的是,以下述方式来确定源块结构:每个源块 包括来自流的连续的一组源分组,以便允许最小化内容移到时间和内容过 渡时间。
对于一些应用,优选的是,在发送流之前执行源块结构形成和流的FEC 编码。这样做的一个原因是可以向许多接收器发送流,从而,对于所有的 接收器一次完成源块结构形成和FEC编码,这提供了一些可扩展益处。
对于流传送应用,存在作为如何使用FEC码来保护源流的设计的输入 的几个关键参数和通常对于优化很重要的几个关键量度。
在源块结构的设计中的一个可能的关键输入参数是源块持续时间。源 块的源块持续时间可以被定义为如果依序(即,不交织)发送源块并且以 正常的速度(即,以实质上正常的播放速度)发送它们,则发送从那个源 块生成的符号的持续时间。或者,源块持续时间可以被定义为由源块表示 的视频的播放时间。在一些情况下,这两个定义一致,但是它们可以不一 致。但是,为了本文描述上的简单起见,我们使用源块持续时间,而不指 定哪个定义被表示,简单地假定两个定义一致。本领域内的技术人员可以 认识到,本文描述的方法和过程适于源块持续时间的任何一个定义,即使 两个定义不一致,并且甚至在一些情况下,可以比其播放速度快得多地发 送源块。而且,本领域内的技术人员可以认识到,存在例如通过指定在源 块中的符号的数量和源块的符号大小来指定源块的大小或者播放时间的其 他方式。
源块的保护期是发送源块的时段,而不论源块发送是否将来自一些源 块的分组的发送与来自其他源块的分组的发送交织。注意,如果不使用源 块交织,则所述保护期一般等于源块持续时间,但是保护期可以长于并且 有时大大长于当使用交织时的源块持续时间。
源块的保护量是对于源块发送的FEC维修符号的数量,其被表示为在 源块中的源符号的数量的一部分或者百分比。例如,如果保护量是20%, 并且在源块中存在10,000个源符号,则存在从所述源块生成的2,000个维 修符号。所述保护量是相对概念,即同一源块的保护量可以依赖于发送源 块的位置和源块要被发送到的位置而不同。例如,可以以保护量50%从第 一服务器向另一个服务器发送源块,然而可以以保护量10%从第二服务器 向接收器发送同一源块。
每个源块的源块持续时间和保护量在源块之间可以不同。例如,当源 块优选地不在源流中的某些源分组之间跨越时,例如当第一分组是在 MPEG2视频流中的画面组(GOP)的最后分组并且第二个连续的分组是下 一个GOP的第一分组时,则可以在第一分组之后终止源块,并且在第二分 组开始新的源块。这允许FEC编码块与视频编码块对齐,这可以具有许多 优点,包括由于可能在接收器处最小化视频缓冲和FEC缓冲的组合,从而 可以最小化接收器延迟或者信道移到时间的优点。在其他应用中,由于多 个原因,对于每个连续的源块总是保持相同的源块持续时间和/或源块大小 是有利的。在下面的一些说明中,为了简单起见,假定源块持续时间和保 护量对于每个随后的源块是相同的。对于本领域内的技术人员,在阅读了 本公开后应当清楚,这不是限定性的,因为在阅读了本公开后可以容易地 确定当保护量或者源块持续时间或者两者从一个源块到下一个源块变化 时,并且当源块大小从一个到下一个变化时,可以如何应用本文所述的过 程和方法。
为了简化一些随后的讨论,有时假定原始流的源符号以稳定的速度到 达发送器,该发送器用于执行源块形成和FEC编码,并且一旦FEC接收器 首次使得在所述接收器处可以获得源符号,则使得FEC接收器以同一稳定 速度可以获得随后的源符号,假定在从其接收到源符号的第一源块中没有 源符号丢失,并且在每个随后的源块中,编码符号丢失是至多最大可能的, 以允许成功的FEC解码。这种简化的假定不是在随后描述的过程和方法的 操作或者设计中固有的,并且不意味着以任何方式将这些过程限于这种假 定,而是仅仅作为工具被引入以简化所述过程和方法的属性的一些说明。 例如,对于可变速度流,对应的条件是使得FEC接收器以源符号到达发送 器的相同或者近似相同的速度获得所述源符号。在一些应用中,优选的是, 在接收器处尽可能快地向视频播放器递送解码的源符号,以便最小化内容 移到时间,并且在这样的情况下,可以在源块的突发中递送源符号。在一 些应用中,期望将源块形成、FEC编码和发送步骤分为两个或者更多个不 同的步骤。例如,如下所述,可以在一个服务器中执行源块形成和FEC编 码,然后将编码流划分为子流,然后所述子流被发送到一个或多个分布式 服务器,并且被本地高速缓存,然后所述子流的一些或者全部被从所述一 个或多个分布式服务器中的一些发送到接收器。
用于最小化的一些重要的关键量度包括发送器延迟,其是由发送器引 入的延迟。对于诸如现场直播视频流的一些应用或者诸如视频会议的交互 应用,期望最小化发送器延迟。有助于最小化发送器延迟的整体设计的一 个方面是发送器以连续的顺序向接收器发送流的一个或多个初始源块的的 编码符号。下面说明最小化发送器延迟的其他设计方面。
另一个重要量度是内容移到时间。如图2中所示,这是在当接收器加 入或者请求流直到当FEC接收器首次使得可以从流获得源符号的时间之间 的时间。通常,期望最小化内容移到时间,因为这会最小化在接收器加入 流时和当在接收器处流首次开始变得可获得时(例如用于播放视频流)之 间的时间量。最小化内容移到时间的一个重要方面是发送器保持初始源块 的编码符号的原始发送顺序,但是如下所述,存在对于内容移到时间具有 很大影响的许多其他重要设计方面。
内容移到时间通常包括多个分量。在其中不使用交织的图3A和3B中 示出了被划分为顺序源块的流的这些分量的实例。图3A示出了每个保护期 的单个源块,并且所述实例示出了接收器在源块的开始处加入流的情况。 在这个实例中的内容移到时间的两个分量是保护期和FEC解码延迟。源块 的接收器保护期是下述时间:在此期间,接收器正缓冲来自源块的所接收 编码符号。注意,如果在发送器和接收器之间的信道在每个比特、字节、 符号或者分组从发送器向接收器行进所需要的时间量方面没有任何变化, 则发送器保护期和接收器保护期是相同的。因此,在实践中由于在递送中 的网络时间变化,对于同一源块,发送器保护期可能与接收器保护期不同。
为了简化在此的说明,假定对于每个源块来说发送器保护期和接收器 保护期相同(并且“保护期”同义地用于发送器保护期和接收器保护期), 但是不必总是这种情况。换句话说,存在对于所有数据网络递送时间相同 的假定。本领域内的技术人员可以在阅读本公开后对本文描述的方法和装 置进行必要的改变,以考虑由于网络递送波动导致的在发送器和接收器保 护期上的差别。
内容移到时间的保护期分量是不可避免的,因为即使在第一源块中没 有任何源符号的丢失,也仍然需要延迟,使得至少保护期可以获得源符号, 以便当在随后的源块中存在编码符号的丢失时保证所有随后的源符号的平 滑的源符号递送。在所述保护期期间,源块的FEC解码的一些或者大多数 或者全部可以与编码符号的接收同时地发生。在保护期的结尾,可能有在 从FEC接收器可以获得源块的第一源符号之前发生的另外的FEC解码,并 且这个时段在图3A中被标注为FEC解码延迟。另外,即使在可以获得第 一源符号后,也可能有在可以获得源块的第二和随后的源符号之前发生的 另外的FEC解码。为了简单起见,在图3A中未示出这个另外的FEC解码, 并且在本实例中假定存在足够的可用CPU资源来以足够快的速度解码在第 一个源符号之后的所有源符号。
内容移到时间的另一个可能分量可以是在当接收器请求加入流时和当 那个流的第一分组到达接收器时之间的时间。这个时间量可以是可变的, 并且依赖于在流的分组的接收器和一个或多个发送器之间的一个或多个来 回行程时间。在此不详细说明内容移到时间的这个分量,但是本领域内的 技术人员可以认识到,有时其可以是应当考虑的对于内容移到时间的重要 影响因素,并且可以容易地修改本文所述的方法和过程以考虑对于内容移 到时间的这个可能的影响因素。
图3B示出了可以对应于在图3A中所示的实例的两个可能的FEC解码 CPU利用率曲线。在图3B中所示的两个曲线之一中,用于FEC解码的CPU 利用率在每个时间点是相同的,即,CPU利用率均匀地分布。这是期望的 CPU利用率曲线,因为它可预测地使用在每个时间点的相同的CPU资源数 量,并且在假定需要相同数量的总的CPU资源来解码整个源块的情况下最 小化了最大CPU资源。在图3B所示的两个曲线的另一个中,用于FEC解 码的CPU利用率在每个时间点不同,并且具体地,接近源块的编码符号的 接收结束和仅跟其后的CPU利用率显著高于其他时间点。这不是期望的 CPU利用率曲线,因为CPU资源使用在某些时间点——其可以是当诸如视 频播放器之类的其他处理也对CPU产生需求时的时间点——生成尖峰,因 此增加了在视频流的播放中引起例如小故障的可能性。因此,用于保护流 的FEC解决方案的设计要提供下述解决方案:其中,FEC解码器随着时间 尽可能平滑和均匀地使用CPU。作为实例,设计标准可以是在编码符号丢 失的最坏情况模式下的FEC解码处理中在任何时间点的最大CPU利用率小 于特定门限值,例如在每个100毫秒的间隔上使用CPU的至多10%。
在一些流传送应用中,当接收器碰巧在源块中间加入流时,则内容移 到时间可以像当没有来自那个第一部分源块的源符号的任何丢失时源块持 续时间加解码延迟那样小,只要发送器初始保持源分组的原始发送顺序和 递送速度。在其他视频流应用中,发送器总是从GOP的开始向接收器发送 流,其中优选的是,源块的开始与GOP的开始对齐。因此,为了最小化内 容移到延迟,期望发送器保持初始源块的源符号的原始发送顺序。
也可以使用FEC流传送解决方案来最小化FEC端到端延迟,其对于现 场直播流传送应用而言是最差情况的、由当在应用FEC编码之前源分组准 备好用于在发送器的流传送时和当在已经应用FEC解码后源块可在接收器 播放时之间的FEC的使用引入的整体延迟。对于其他类型的流传送应用, 诸如按需流传送或者播放列表内容流传送,FEC端到端延迟不是主要考虑 因素。
在所有类型的流传送应用中,最小化内容移到时间和内容过渡时间是 重要的。同时,最小化流的发送速度是重要的,即总是将发送速度限制为 大于内容流传送速度一小部分,包括在内容移到和内容过渡期间。
也可以使用FEC流传送解决方案来最小化当使用FEC时在发送速度上 的波动。其一个益处是在分组网络中,当在流的发送速度上的峰值与在具 有有限容量的网络中的点的其他通信量的峰值重合时,具有波动的发送速 度的流更容易受到由于拥塞或者缓冲溢出导致的分组丢失的影响。至少, 在FEC编码流的速度上的波动应当不比在原始源流的速度上的波动更差, 并且优选的是,当向原始源流应用更多的FEC保护时,在FEC编码流的速 度上的波动变得越小。作为特殊情况,如果原始流以不变的速度发送,则 优选的是,以尽可能接近不变的速度来发送FEC编码流。
当每个随后的源块的最后的编码符号被接收时的时间尽可能均匀地随 着时间扩展的属性是期望的属性。当针对源块接收到最后的编码符号时的 时间是当用于解码所述源块的所有信息可被FEC解码器获得时的时间,并 且这通常是当在最坏情况的丢失条件下FEC解码器必须最努力地工作以在 规定的解码延迟预算中完成解码时的时间。因此,均匀地扩展源块的最后 的编码符号的接收允许更平滑地使用CPU来用于FEC解码。
FEC流传送解决方案在FEC接收器处应提供尽可能简单的逻辑。这在 许多环境下是重要的,因为FEC接收器可以被内置在具有有限的计算、存 储器和其他资源能力的设备中。而且,在一些情况下,在传输中可能有较 大的符号丢失或者损坏,因此,FEC接收器必须从灾难性丢失或者损坏情 况中恢复,在上述情况中,当条件改善时,有很少环境或者没有这样的环 境来明白从流中的何处继续接收。因此,FEC接收器逻辑越简单和越强壮, 则FEC接收器能够更快和可靠地开始恢复和使得可以再次从FEC编码流的 接收中获得源流的源符号。
可以在源块的源分组之前、之后或者与其混杂地发送源块的维修分组, 并且如本文所述,对于不同的策略存在优点。
FEC流传送解决方案的整体期望特征的一些包括:
1.短的内容移到时间
2.短的内容过渡时间
3.应当限制所有时间的发送流速度,即限制到大于内容流速度一小部 分。
4.发送流速度应当是平滑的,并且应当至少与内容流速度一样平滑。
5.当使用FEC编码时,可以对流执行源块形成和FEC编码,并且可 以在可能的不同的时间向许多接收器发送同一编码流。
6.当使用FEC编码时,使用具有所需要的最小保护量的小源块持续时 间的对于分组丢失的保护应当是高的,特别是当所述丢失在本质上有些突 发性的时候。
7.当使用FEC编码时,源块应当包括流的连续部分。
8.当用于现场直播流传送应用的FEC编码时,FEC端到端延迟应当小。
9.当使用FEC编码时,FEC解码应当平滑地扩展CPU利用率。
FEC编码流的基本发送
在这个部分中,我们描述发送器定时可以被FEC编码的流的分组的发 送的基本方法和过程。设k是在源块中的源符号的数量,设T是源块的源 块持续时间,设p是被表达为分数的保护量,因此对于源块将发送p*k个 维修符号。当形成每个源块时,动态地确定k、T和p的值,因此,当源块 的大多数或者全部源符号已经到达源块形成处理时,所述处理才知道该源 块的k和T的值,并且在所述源块的所有源符号已经到达源块形成处理后 或者通过独立的处理,可以确定p的值。而且,源块形成处理可以改变不 同源块的符号大小。因此,特定源块的这些参数中的许多或者全部可以被 源块形成处理良好地知道来用于那个源块的数据的接收。
下面的过程描述了不使用交织的基本发送器。为了简单起见,对于这 个基本发送器假设已经向流应用了源块形成处理,并且所述流已经被划分 为连续的源块,每个这样的源块包括k个源符号并且具有T秒的源块持续 时间,并且对于每个这样的源块,已经生成了p*k个维修符号。
当接收器请求在特定源块处开始的流(或者使用来自接收器的明确开 始请求前摄地发送流)时,基本发送器开始在T秒的时段上发送所请求的 源块的(1+p)*k个编码符号,并且随后发送在所请求的源块之后的下一个源 块的编码符号等。
基本发送器具有下面的属性:
1.保护期是T,其与源块持续时间相同。
2.针对源块发送的符号均匀地扩展在T秒的时段上。这意味着当存在 固定持续时间的突发中断时对于丢失提供的保护水平不依赖于在符号的传 输期间何时发生中断,这是所期望的。
3.所述发送器不在符号的整体发送速度上引起波动。具体地,如果源 符号的原始发送速度不变,则所有符号的发送速度仍然不变,并且如果在 发送器处的源符号的原始到达速度可变,则至少每个源块的符号的不变的 发送速度降低波动。这是期望的属性。
4.内容移到时间可以像T那样小。这意味着(1+p)*k个符号的最小缓冲 (假定所有的源块包括k个源符号),这是对于给定的保护期的最小可能, 因此是期望的。
基本发送器具有的一个属性是内容移到时间至少是保护期的时间,并 且保护期直接地与对于突发丢失的保护质量有关。因此,有时需要在保护 期和内容移到时间之间进行折衷。例如,期望具有在一秒以下的内容移到 时间,同时也期望具有跨越几秒的保护期,以便提供对于导致可以持续几 十或者几百毫秒——在一些情况下是几秒——的数量级的突发分组丢失的 暂时网络中断或者其他类型的间歇网络问题提供更好的保护,同时使用合 理的小保护量,诸如10%。期望能够具有比内容移到时间大得多的保护期, 并且这是在下一个部分中描述的交织方法提供的许多优点之一。
流交织
这个部分描述新颖方法和过程,其用于以下述方式获得数据流并且向 数据流的不同部分应用不同的时间延迟:在发送处理中,一些部分比其他 部分被延迟更多。这些方法和过程的更重要方面之一是用于当发送数据流 时动态地调整在所述流的不同部分中引发的延迟量的手段。
经常优选的是,将源块与视频流的画面组(GOP)结构或者其他帧结 构对齐,以便最小化内容移到时间,并且提供流的更好保护。在一些应用 中,期望交织处理可以独立于源块形成处理而发生,它们可能在不同时间 执行或者可能在不同位置执行。在一些情况下,即使不使用源块形成处理, 例如因为未使用FEC编码,也可能期望交织处理以例如将突发错误更均匀 地扩展在流上。此处所述的方法甚至当不使用源块形成和FEC编码时也适 用,如本领域内的技术人员将会认识到的。
在一些情况下,允许发送器交织来自不同源块的符号的发送存在优点, 其使得每个源块的符号可以被扩展到比源块持续时间更长的保护期上。如 此做的一个原因是对于依赖于时间的丢失(例如突发性丢失)提供更好的 保护,即当源块的保护期增大时需要更少的保护量来提供对于固定持续时 间的突发丢失的保护。虽然源块持续时间可能是t秒,但是源块的期望保护 期可以是p秒,其中p>>t。使用交织的发送器的其他期望属性包括(1)源 分组以在源块中的它们的原始顺序被发送,以及(2)当每个随后的源块的 最后的编码符号被接收时的时间尽可能均匀地随着时间扩展。
当使用FEC编码时,引入静态地交织源块的编码符号的发送的方法, 并且引入当发送流时动态地调整交织量的方法,通常在流的发送的开始具 有很少交织或者没有交织,因此具有与源块持续时间近似相同的保护期, 并且当流的发送进行时平滑地引入越来越多的交织,从而,保护期变得比 源块持续时间长得多。这允许在接收器处最小化内容移到时间,同时当发 送进行时允许越来越多的对于突发丢失或者破坏的保护。所述方法的另一 个优点是当流的发送进行时能够逐渐地对越来越多的网络抖动进行保护。
为了简化下面的说明,假定在流的发送之前进行源块形成和FEC编码 处理。这不是所述方法的限制,因为本领域内的技术人员将认识到如下所 述的形成源块和对于这些源块执行FEC编码和发送流的处理可以同时运 行,并且在一些情况下,这是有益的。而且,对于一些应用,源块形成、 FEC编码处理和如下所述的用于流的交织发送的方法可以动态地相互依 赖,即源块如何被形成和FEC编码可能在一些情况下依赖于发送流策略。
流发送的带子方法
为了描述新的交织方法,引入下面的流发送带子方法是有益的。图4 是对于其而言已经确定了源块结构的内容流的说明图。对于每个源块405 (1)、405(2)、...,宽度410(1)、410(2)、...示出了那个源块的内容播 放持续时间,并且每个源块415(1)、415(2)的高度示出了每个内容流源 块的平均播放速度,其中,在这个实例中,不同的源块具有不同的播放速 度。
图5示出了对应于图4的对应编码块结构,即已经向每个源块应用了 FEC编码以为每个源块生成另外的维修数据510(1)、510(2),以形成编 码块。510(1)、510(2)、...的高度515(1)、515(2)、...指示在每个编 码块中为每个源块生成的另外的维修数据的数量,即如果在与对应的源块 相同的持续时间上发送编码块,则所述高度指示编码的源块的平均发送速 度。这个附图仅仅是说明性而不是限定性的,因为例如,对于每个编码块 生成的维修数据量可以比为每个编码块发送的数量更大,并且为每个编码 块发送的数量可以在接收器之间不同。而且,图5并不意味着建议在编码 的源块中的源符号和维修符号的排序的表示。
图6是示出了对应于基本发送器方法的接收器的内容移到时间体验的 说明图。内容移到时间605的一些分量包括:接收器接收足够的流的第一 编码块以解码第一源块所需要的时间610;接收器从接收的第一编码块的部 分解码第一源块所需要的时间620;为吸收网络抖动、在源块持续时间上的 变化、以及从在流的接收期间接收的编码块的部分解码源块的时间而预留 的预留缓冲时间630。
发送流的带子方法被描述,并且本领域内的技术人员可以认识到存在 许多产生类似方法的等同描述和产生在此所述的方法的变化形式的在描述 上的变化形式。图7示出了对应于在图5中示出的编码块结构的带子方法 的实例。在带子方法中,通过描绘要作为带子705发送的流来指示数据流 的发送,其中,沿着带子的X轴的每个位置710对应于在编码块结构中的 不同时间点,并且其中,带子的高度总是相同的,例如标称为高度1,而与 在沿着带子在那个时间点的编码源块的速度无关。可以通过从带子725的 顶部向带子730的底部延伸的移动线720(1)、720(2)来指示由带子表示 的流的发送。在一种表示中,线720(1)、720(2)随着时间的移到表示来 自流的编码块的数据的发送顺序。在带子中的每个点740(1)、740(2)、... 表示要发送的一块流数据,例如,每个点可以表示编码块的编码符号的一 个分组,或者每个点可以表示编码块的单个编码符号。落在对应于编码块 750(1)、750(2)、...的区域中的点表示与那个编码块相关联的数据。
通过当发送流时随着时间在带子上扫过线720(1)、720(2)来表示根 据发送流的带子方法的发送处理,并且每次所述线扫过点,对应于那个点 的流的数据被发送。图7示出了在发送处理中在两个不同时间的线,其中, 线720(1)是在第一时间的其外形,线720(2)是在第二时间的其外形。 因此,发送处理在第一时间和第二时间之间的时间间隔期间发送与在由720 (1)、720(2)、725和730限定的区域中的点相关联的所有数据。在每个 编码块中的点的分布优选地根据它们的权重均匀地分布在用于那个编码块 的带子区域中,例如随机地分布或者伪随机地分布或者通过保证根据每个 点的权重均匀地分布所述点的处理来确定地分布,其中,点的权重是由那 个点表示的数据量。
如上所述,线720是直的,但是本领域内的技术人员可以认识到,存 在许多变化形式,例如所述线可以是弯曲的或者包括连续线段的序列,并 且当所述线在发送处理期间扫过时可以改变其形状。也存在带子发送方法 的其他变化形式,包括表示所述带子使得所述带子不是相同高度,而是根 据在带子的位置710处的流的速度来改变其高度。
存在用于指定在发送处理期间线通过带子的移动的各种方法,如下更 详细所述。
静态交织方法
发送流的带子方法可以用于实现任何类型的内容流或者编码内容流的 任何深度的静态交织,而不论是否使用FEC编码,并且不论是否使用源块 结构。为了说明性的目的,假定已经定义了源块结构,并且使用FEC编码。
参照图7,通过实例描述了使用发送流的带子方法来实现给定数量的静 态交织的一种方式。在这个实例中,每个编码块通过时间量D而与其他相 邻的编码块交织,即交织深度为D。在这个实例中,当请求流时,接收器 传送位置X和D的值。然后,通过下述方式来描述在发送器处的发送处理: 通过配置线720,使得在开始时线720在位置X-D与带子的底部730相交, 在开始时线720在位置X与带子的顶部725相交,然后发送处理以与流的 播放速度相同的速度在时间上向前扫过线720,即在开始发送处理后的时间 t,线720已经扫过,使得其在位置X-D+t与带子的底部730相交,并且线 720在位置X+t与带子的顶部725相交。
在静态交织方法的这个说明中,如果所述方法用于向接收器发送新请 求的流,则X位于要在接收器处开始播放的流中的位置是有益的,例如, X是编码块的开始位置,或者X是在视频流中的GOP的开始位置,并且编 码块的开始与GOP的开始对齐。而且,在这些情况下,发送器在沿着带子 的位置X之前不向接收器发送任何数据是有益的,因为通常接收器将仅仅 接收编码块的一部分,并且很可能不足以完全地解码部分接收的编码块。
图8是例示了当发送器使用刚刚描述的静态交织方法时的发送流的形 状的说明图。在这种情况下,静态交织方法被应用到在图7中所示的带子, 其对应于在图5中所示的编码流。在这个实例中,接收器将X的值指定为 在图7中的第一编码块750(1)的开始位置,因此在这个实例中,没有沿 着带子在位置X之前的数据要被发送。在这个实例中,接收器也指定D的 值,其可以是诸如10秒的值。由发送器根据这个处理发送的结果流如图8 中所示,其中,850(1)、850(2)、...的面积分别与图5的405(1)加510 (1)、405(2)加510(2)、...的面积相同。注意,在图8中所示的发送速 度是在图5中所示的原始内容速度的平滑版本。
图9是示出了由对应于如上所述的静态交织方法的接收器体验的内容 移到时间的说明图。内容移到时间905的一些分量包括:接收器接收足够 的流的第一编码块以解码第一源块所需要的时间910,其是源块持续时间和 交织深度D的和;接收器从接收的第一编码块的部分解码第一源块所需要 的时间920;以及,为预期的网络抖动延迟、在源块持续时间上的变化和从 在流的接收期间接收的编码块的部分解码源块的时间而预留的预留缓冲时 间930。注意,因为保护期——其在这种情况下是源块持续时间加上交织深 度D——可以比源块持续时间大得多,因此内容移到时间905可以比使用 所述的这种方法的源块持续时间大得多。
动态交织方法
可以使用发送流的带子方法来实现在任何类型的内容流或者编码内容 流的任何交织深度的任何步调的动态交织,而不论是否使用FEC编码和是 否使用源块结构。为了说明性目的,假定已经定义了源块结构,并且使用 了FEC编码。
参照图7,通过实例描述了使用发送流的带子方法来实现以无交织开始 并且进行到给定的交织深度的动态交织的一种方式。在这种方法的典型使 用中,以很小的交织来发送第一编码块,然后逐渐地随着时间,越来越平 滑地交织随后的编码块,直到与其他相邻的编码块实现交织深度D。但是, 也在下面公开了这种方法的其他使用,并且本领域内的技术人员可以认识 到,也存在多种其他变化形式。在表达所述方法的参数的这个实例中,当 请求流时,接收器传送线720的初始上部位置UI、线720的初始下部位置 LI、线720的最后上部位置UF、线720的最后下部位置LF和时间值T。 为了简单起见,以下假定UF>=UI,LF>=LI、UF>=LF,UI>=LI,T>=0。通 常,优选的是具有UF>=UI+T和LF>=LI+T,以有助于保证在接收器的数据 总是在需要时可以获得。如下面的实例中所述,UF、UI、LF、LI和T的这 些值可以允许当动态地调整交织时在接收器处平滑地建立内容的预留缓 冲。
在发送器处的发送方法使用参数LI、UI、LF、UF和T来如下执行带 子方法。首先,图7的线720在发送时间t=0被初始配置,使得在开始时 线720在位置LI与带子的底部730相交,并且在开始时线720在位置UI 与带子的顶部725相交,然后,在发送时间t=0到t=T期间,线720扫过 带子,使得在时间t,线720在位置t*(LF-LI)/T+LI与带子的底部730相交, 并且在时间t,线720在位置t*(UF-UI)/T+UI与带子的顶部725相交。然后, 对于所有的发送时间t>T,线720扫过带子,使得在时间t,线720在位置 t-T+LF与带子的底部730相交,并且在时间t,线720在位置t-T+UF与带 子的顶部725相交,即对于t>T,交织是静态的,其使用交织深度D=UF-LF。
用于新请求的流的动态交织方法
所述动态交织方法的一个示例使用是向接收器发送新请求的流。作为 实例,如图10中所示,初始值可以全部被设置为同一值I=UI=LI,即在开 始时没有交织,并且对于接收器将开始播放内容流的位置S,满足S=I。这 保证接收器已经被发送了从位置S以及之后的内容的整个带子。如图10中 所示,优选的是,S=UI=LI,其中S是在内容流中的位置,在这个位置可以 播放内容流,例如S是编码块的起点,所述编码块的起点与GOP的起点对 齐。而且,T<=LF-S是有益的。这保证如果接收器以内容速度播放内容, 则内容的发送是以至少与在接收器处的内容的播放一样快的速度,并且 R=LF-S-T秒的预留缓冲时间被平滑地建立,并且当从向接收器开始发送起 在发送时间T达到静态交织后继续,其中,预留缓冲可以吸收网络抖动、 变化的源块持续时间和解码时间。从没有交织到D=UF-LF秒的交织,平滑 地建立交织量。
作为动态交织方法的一个具体实例,假定接收器从开始起在访问内容, 并且在稳定的状态下达到5秒的预留缓冲,并且在稳定状态下期望10秒的 交织深度,并且发送速度要比当提高交织和预留缓冲时的时段期间的编码 流速度高大约10%。然后,所述参数的可能设置是:S=UI=LI是期望的开 始位置,T=100秒,LF=S+T+5秒,并且UF=LF+10秒。因此,如果这 个实例的内容流速度是1Mbps,并且使用10%的保护量,则编码流速度将 是1.1Mbps。然后,对于使用采用刚刚讨论的参数设置的动态交织方法进 行发送的前100秒,发送速度将是大约1.21Mbps,因为在前100秒中发送 了100+(5+15)/2=110秒的流。在100秒的发送后,预留缓冲将是5秒,并 且交织深度将是10,然后,其后的发送速度将是1.1Mbps。对于在已经发 生了100秒的流传送之前的几秒,发送速度将从1.21Mbps速度平滑地过渡 到1.1Mbps速度。还应注意,在开始时,发送速度按照编码流速度,并且 当交织深度和预留缓冲平滑地增大时,发送速度变得平滑,并且越来越接 近地匹配平均编码流速度。
参照图11来描述对应于如上所述的动态交织方法的接收器体验的内容 移到时间。内容移到时间1105的一些分量包括:接收器接收足够的流的第 一编码块以解码第一源块所需要的时间1110;接收器从接收的第一编码块 的部分解码第一源块所需要的时间1120;以及初始预留缓冲时间1130,其 被预留用于预期的网络抖动延迟、源块持续时间变化和从在所述流的接收 期间接收的编码块的部分解码源块的时间。
因为当使用动态交织时随着时间建立预留缓冲,因此当使用动态交织 时初始预留缓冲时间1130可以比当预留缓冲大小对于流发送的整个持续时 间固定的情况短得多。例如,使用基本流发送器,可以将预留缓冲大小设 置为两秒以对于至多两秒的长期网络抖动进行缓冲,而对于动态交织的发 送方法,可以将初始预留缓冲时间1130设置为短得多,例如200毫秒,因 为有可能在流发送的前几秒期间有很少的网络抖动,并且在其之前已经实 质上建立了预留缓冲。
因为当使用动态交织时每个源块的保护期逐渐地建立,因此当使用动 态交织时的初始源块持续时间可以比当对于流发送的整个持续时间而言保 护期是源块持续时间时短得多。例如,使用基本流发送器,源块持续时间 可以被设置为5秒,并且保护量可以被设置为20%以对于500毫秒的短突 发分组丢失进行保护,而使用动态交织发送方法,可以将源块持续时间设 置为更短,例如500毫秒,并且可以将保护量设置得更小,例如5%,以提 供相同水平的对于这样的突发的保护,因为不可能这样的突发在发送流的 前几秒期间发生,并且在其之前保护期已经实质上建立为例如原始源块持 续时间加上10秒的交织深度,以对于这样的突发进行保护。
因此,总之,使用动态交织方法,内容移到时间会短,例如在1秒以 内的内容移到时间相对于在相同网络条件下使用基本流发送方法的几秒, 并且动态交织方法还可以提供对于网络抖动和突发性分组丢失的优越长期 保护。
存在如何可以指定参数的许多变化形式。例如,可以替代地指定在带 子上的初始开始位置、初始交织量、最后交织量和从初始交织向最后交织 平滑过渡的时段。可选地,不是指定从初始交织向最后交织平滑过渡的时 段,可以相对于要进行过渡的内容流传送速度来指定速度。作为变化形式 的另一个实例,另外的参数可以被发送器知道或者被接收器指定,例如接 收器可以明确地以信号表示接收器将从其开始播放内容的开始位置S。
存在本领域内的技术人员可以认识到的动态交织方法的许多变化形 式。例如,发送器可以决定从一些或者全部编码块滤除一些编码数据和不 向个别接收器发送一些编码数据,例如因为那些接收器未经历许多丢失。 作为另一种变化形式,可以预先确定源块结构,但是当发送处理正在运行 时,FEC编码运行以生成用于各个接收器的编码块,或者当接收器遇到需 要比以前的接收器更大的保护量时偶尔生成某些编码块的大量维修符号。
作为经常优选的另一种变化形式,接收器可以控制动态交织方法的初 始参数的设置,并且发送器或者发送器组可以确定动态交织方法的最后目 标参数。例如,接收器可以指定要以2秒的交织深度和1秒的预留缓冲来 开始内容流,并且服务器可以然后确定其将以下述方式来发送:使得在发 送的前2分钟中实现20秒的交织深度和10秒的预留缓冲。使得所述一个 或多个服务器控制动态交织方法的最终参数的一个优点是更容易支持现场 直播流传送,在现场直播流传送中,不可获得在当前时间之外的内容流的 部分,因此,服务器可以将动态交织参数引导到在给定约束下工作的最后 设置。作为使得服务器控制最终参数的优点的另一个示例是:服务器可以 在一些情况下调整被来自在流中的实质上相同位置的相同内容流服务的多 个客户的参数,以这种方式,最后许多接收器被引导到相同的最终参数, 这使得在向这些接收器发送分组中的服务器的高效率,因为在同一时刻要 从内容流向全部这些接收器发送相同的分组。
用于内容分段过渡的动态交织方法
动态交织方法的一个示例使用是当接收器从在内容分段列表中的一个 内容分段向下一个内容分段过渡时,例如当从表演的一个情节的分段向广 告过渡然后返回到表演的下一个分段时,其中,所有的过渡在没有任何接 收器交互的情况下发生。不同的内容分段可以由不同的发送器发送,例如, 表演情节的分段可以由内容服务器发送到接收器,而插入的广告可以由广 告服务器发送到接收器。
第一实例是当接收器一直在观看由第一发送器使用如上所述的动态交 织方法发送的第一内容分段,并且第一发送器已经发送了足够长以至于已 经建立了完整的交织深度D和预留缓冲时间R的时候。然后,可以如下所 述使用动态交织方法来实现向第二内容分段的平滑过渡。
1.在结束第一内容分段的发送之前的D+R秒,第一分段的发送速度将 在D秒的时段中从编码流速度线性地降低到0,并且在那个点,第一发送 器将停止发送第一分段。
2.在第一内容分段结束播放之前的D+R秒,接收器使用参数UI=0、 LI=-D、UF=0、LF=-D、T=0从第二服务器请求第二内容分段。假定没有 网络延迟,第二服务器将开始发送第二内容分段的流,在发送的前D秒线 性地提高速度,其后以编码流的速度进行发送。
3.当第一内容分段结束播放时,第二内容的预留缓冲已经建立为R秒, 并且交织深度已经建立为D秒。在这个时刻,可以开始第二内容的播放。
因此,从第一内容分段向第二内容分段的过渡将在接收器处的接收速 度保持在编码流速度,即当第一内容分段的发送速度线性地斜线降低时, 第二内容分段的发送速度线性地斜线升高,以此方式,在所述过渡上的组 合速度相同,好像存在一个连续被发送的内容分段。而且,第二个流的预 留缓冲保护和交织保护与在稳定状态下的第一个流相同。图12是其图示。
即使与发送第一内容分段的结束相比较在第二内容分段的流的发送的 开始上的定时差一点,因为斜线降低的速度和斜线上升的速度是平滑地线 性的,因此在流传送速度上的纯误差较小。例如,如果在两个流之间的过 渡定时上存在500毫秒的误差,并且交织深度是10秒,则在流传送速度上 的误差至多是5%。这也意味着可以比如上所述更保守一点地设置第二内容 分段的参数,即以下述方式来进行:它们试图建立更多一点的预留缓冲和 交织时间,而不是仅仅试图将这些值保持为与第一个流的相同,并且在内 容分段过渡期间在组合的流传送速度上产生的提高将较小。
内容分段过渡的第二实例是当接收器正在观看由第一发送器使用如上 所述的动态交织方法来发送的第一内容分段,但是第一发送器还没有发送 足够长的时间以使得完整交织深度D和预留缓冲时间R已经被建立的时候。 那么,可以如下所述使用动态交织方法来实现向第二内容分段的平滑过渡, 其中在这种情况下,接收器所做的是以下述方式来设置参数并且请求第二 个流:从第一个流向第二个流的过渡是好像两个内容分段连接在一起,并 且由一个服务器发送。本领域内的技术人员可以得出如何使用动态交织方 法来实现这种类型的过渡的细节。
内容分段过渡的第三实例是当接收器正在观看由第一发送器使用如上 所述的动态交织方法来发送的第一内容分段,并且在当第一内容分段在接 收器处播放结束和第二内容分段播放要开始时之间的时段之间存在间隙的 时候。例如,在下述情况下这可能为期望的行为:当存在结束播放的表演 情节的第一分段,其后是例如30秒的持续时间的非流传送广告,其后是表 演情节的第二内容分段的立即播放。在这种情况下,动态交织方法可以被 如下使用,为了简单起见,假定第一内容分段已经被发送到接收器足够长 的时间使得已经建立了完整交织深度D和预留缓冲时间R。在这种情况下, 像上面的第一实例的情况那样,接收器在第一内容分段的播放结束之前的 D+R秒使用参数UI=0、LI=-D、UF=0、LF=-D、T=0发送对第二内容 分段的请求。这使得第二服务器开始以一个速度发送第二内容分段,所述 速度当与从第一服务器发送的第一内容分段的速度组合时是单个发送流的 速度。然后,正好在当第一内容分段在接收器处完成播放时的时间,接收 器以信号通知第二服务器停止发送第二内容分段的流,并且向接收器的发 送速度立即降低到0。然后,出现所述30秒的间隙。在间隙的结尾,接收 器立即开始播放第二内容分段,并且同时使用参数UI=D+R、LI=R、UF =D+R、LF=R、T=0向第二服务器发送对于第二内容的请求。这使得第 二服务器从在所述间隙之前停止的地方继续发送第二内容。总体效果是在 预定的时间立即播放第二内容,同时在过渡期间的所有点向接收器的组合 的发送速度与在所述两个内容分段的播放期间的一个编码流速度相同,并 且当所述两个内容分段的任何一个都不被播放时,发送速度是0。图13是 其图示。
本领域内的技术人员可以认识到,存在如上所述的动态交织方法的许 多其他使用和变化。
基于子流的递送方法
基于子流的递送是用于下述的方法:获得FEC编码流,并且将其划分 为子流,使得例如在每个子流中包括每个编码块的大致相同的数量。例如, 编码流可以被划分为40个子流,每个子流由每个源块的大约5%构成,因 此在这个实例中,使用FEC编码为每个源块生成的维修数据的数量大约等 于源块的大小。更一般而言,当向每个源块应用FEC编码并且然后应用基 于子流的递送时,那么每个源块的总的编码数据被划分为子流,使得在每 个子流中包括每个源块的编码的大致相同的数量,其中,如果FEC编码是 系统性的,则每个源块的编码数据包括每个源块的原始数据加上所生成的 维修数据,并且其中,如果FEC编码不是系统性的,则每个源块的编码数 据可以包括维修数据。
基于子流递送的主要思想之一是沿着可能的不同路径并且通过可能的 不同服务器来发送流的子流,以便实现多个期望目的。作为实例,可以有 服务器,以下将其称为头端服务器(HES),其将内容流吸入到基于子流的 递送系统中,其中,HES执行的一些处理是建立内容流的源块结构、FEC 编码所述流、将编码后的流划分为子流、然后向其他服务器发送子流,以 下将所述其他服务器称为分布式服务器(DS),其可以分布在不同的数据中 心或者在不同的网络位置中。可以在图14中看到其实例。在图14中,DS 1430中的每一个从HES 1410接收编码内容流1420的不同分段。DS执行 的一些处理包括当内容流的子流在它们到接收器的路径上经过时高速缓存 所述内容流的子流,从接收器接受对于来自特定内容流的子流的请求,并 且例如根据对于特定子流的接收器请求或者根据接收器订阅向接收器发送 子流。子流传送的特殊情况包括不进一步划分的原始的编码流。
在基于子流的递送系统中的多个接收器可以请求并接收在同一开始位 置开始的同一内容分段的子流,其中,可以向不同的DS发送对于不同的子 流的请求,并且在这种情况下,可以从不同的DS向同一接收器发送具有相 同的开始位置的同一编码流的几个不同子流。可以在图15中看到其实例。 在图15中,接收器1530从各个DS 1510、1520请求内容流。在这种情况 下,DS 1520中的一个不响应来自接收器的请求,而其他的DS 1510向接收 器发送子流。如果响应的DS向接收器发送足够的数据来完成完全恢复使用 FEC编码的内容流,则接收器有可能完全恢复使用FEC编码的内容流。
作为实例,可以在HES吸入原始的1Mbps的内容流,HES当内容流 通过时形成源块结构,并且增加与在原始流中存在的源数据一样多的维修 数据(100%维修),将2Mbps的编码流划分为100Kbps的子流,并且向 20个不同的DS发送结果产生的20个子流。想要播放从流中特定位置开始 的内容流的接收器可以向20个DS中的12个发出请求,以向DS具有的子 流请求在指定开始位置开始的内容。作为响应,所有12个DS同时向接收 器发送从指定的开始点开始的、它们具有的编码流的子流,从而,12个DS 中的每一个以100Kbps的速度向接收器发送,因此总的速度是1.2Mbps。
刚才描述的基于子流的递送系统具有几个优点,可以在本发明的实施 例中找到这些优点中一些或者全部,包括:1)内容的自然负荷平衡,将普 通与不普通混合,具有用于服务带宽容量和在服务器上的存储容量的自然 负载平衡益处;2)路径故障弹性,即,一个路径故障后仍然存在接收器正 在从其他路径接收的足够数据,使得仍然可以使用FEC解码来完全地恢复 内容流;3)相对于DS崩溃、DS盘故障等的强壮性;4)从多个DS相对 于单个服务器的数据发送提供了保持向接收器的汇集发送速度的更大可 能,并且在接收器处没有缓冲不足。特别是如果使用TCP或者HTTP来从 DS向接收器发送子流的情况,但是如果使用UDP来从DS向接收器发送子 流,这甚至也成立;以及,5)在整个系统中的单个故障点在HES的吸入点 和在接收器,并且不必在其他地方。
组合动态交织方法和基于子流的递送方法
本文所述的动态交织方法和基于子流的递送方法可以被组合以提供更 多益处,即在组合的解决方案中可以发现两种方法的所有优点。例如,使 用动态交织方法,当向系统中吸入内容流时,可以通过HES来执行内容流 的源块结构和FEC编码。可以使用子流方法来在HES处生成FEC编码流 的子流,并且这些子流然后可以被发送到不同的DS用于存储。当接收器想 要从在流中的特定位置接收内容流时,接收器可以对向接收器发送子流的 所有DS发送适当的动态交织参数,并且所述DS将根据这些参数向接收器 发送子流。所述接收器可以将来自源块的子流的分组置于一起,以重建要 播放的原始内容流。动态交织方法允许在流传送期间增加预留缓冲和交织 深度,提供对于突发性分组丢失和网络抖动的优越保护,同时向接收器提 供迅速的信道移到时间。在这个示例性解决方案中的DS不必执行FEC编 码,并且它们还可以在分布式路径上从网络的不同部分向接收器递送内容 流,从而提高递送的服务器多样性和路径多样性,由此提高对于服务器和 网络故障的可靠性和强壮性。
另外,在这个实例中每个源块的保护量可以在HES和DS之间比在DS 和接收器之间高得多。例如,可以从HES向20个DS生成和发送20个子 流,然而可以仅仅需要10个子流来恢复原始内容流(100%的保护量),接 收器可以仅仅例如从20个DS中的12个请求12个子流,即20%的保护量, 其允许即使DS中的一个发生故障并且在来自接收器将从其接收子流的、剩 余的11个DS的所有路径上总计有至多10%的分组丢失的情况下,接收器 仍然能够恢复原始内容流。
如上所述的示例性解决方案具有另外的属性:对于被包含在具有20个 DS中的超过12个的列表的接收器中的适当逻辑,当接收器正从其接收子 流的所述12个DS中的一个发生故障时,接收器可以自动地检测到这一点, 并且从接收器当前未从其接收子流的其他DS中的一个请求另一个子流,由 此从接收11个子流恢复到从12个不同的DS接收12个子流,提高了流的 可靠性。
在组合动态交织方法和子流方法所需要的方法中的改变较小。例如, 用于在编码块中扩展数据点以确定动态交织方法的发送时间的方法需要被 增强,使得每个DS可以决定如何在编码流带子内的编码块区域上均匀地扩 展它具有的在编码块中的每个子流的数据(参见图7)。可以以独立于由其 他DS作出的决定的方式来进行由DS所作出的均匀扩展数据的决定,使得 来自向发送器发送的所有DS的编码块内的所有子流的数据的合计扩展在 编码流带子内的编码块区域中很均匀(参见图7)。
作为组合它们所需要的方法中的改变的另一个实例,增加对于每个分 组发送的信息是有益的,使得当接收器向将向其发送子流的DS指定在流中 的特定位置时,DS可以以下述方式全部解译它们将向接收器发送的子流的 特定位置:与向接收器发送同一内容的子流的所有其他DS的解译一致。本 领域内的技术人员可以认识到,这些和可能的一些其他的较小改变允许组 合交织流传送方法和基于子流的递送方法来提供更多益处。
虽然已经相对于示例性实施例描述了本发明,本领域内的技术人员将 会认识到多种修改是可能的,并且本领域内的技术人员的这样的认识可以 来自于对本公开的阅读。例如,可以使用硬件部件、软件部件和/或其组合 来实现本文描述的处理。因此,虽然已经相对于示例性实施例描述了本发 明,可以意识到,本发明意欲涵盖在所附的权利要求的范围中的所有修改 和等同内容。
QQ群二维码
意见反馈