使用弹性代码与柔性源块映射进行编码和解码的制作方法
【专利摘要】可通过将源符号指派到基块、将基块指派到源块以及将每一源块编码为编码符号而对数据编码,其中至少一对源块使得其具有与所述对的两个源块共同的至少一个基块以及与所述对的另一源块不同的至少一个基块。源块的所述编码可独立于其它源块的内容。可根据来自多个源块的编码符号集合来进行解码以恢复原始源符号的所要集合的全部,其中来自第一源块的编码符号的量小于所述第一源块中的源数据的量,且同样,来自第二源块的编码符号的量小于所述第二源块中的源数据的量。
【专利说明】使用弹性代码与柔性源块映射进行编码和解码
[0001]交叉参考
[0002]本专利申请案涉及以下共同待决的美国专利申请案,所述申请案中的每ー者与本申请案同时申请,且已转让给本申请案的受让人,且明确地以引用的方式并入本文中:
[0003]马克沃森(Mark Watson)等人的题为“用于包含FEC的改进的无线电链路协议的组中贞(Framing for an Improved Radio Link Protocol Including FEC)” 的美国专利申请案,代理人案号为092888U1 ;以及
[0004]迈克尔G卢比(Michael G.Luby)等人的题为“用于改进的无线电链路协议的前Iロ」错误仪正调度(Forward Error Correction Scheduling for an Improved Radio LinkProtocol) ”的美国专利申请案,代理人案号为092888U2。
[0005]以下颁发的专利明确地以引用的方式并入本文中以用于所有目的:
[0006]萧克罗雷希(Shokrollahi)等人于2005年6月21日颁发的题为“链反应代码的系统性编码和解码(Systematic Encoding and Decoding of Chain Reaction Codes),,的第6,909,383号美国专利(下文中称为“萧克罗雷希-系统性”);以及
[0007]萧克罗雷希等人于2005年2月15日颁发的题为“用于通过去活来对链反应代码解码的系统和过程(Systems and Processes for Decoding Chain Reaction CodesThrough Inactivation) ”的第6,856,263号美国专利(下文中称为“萧克罗雷希_去活”)。
[0008]【技术领域】
[0009]本发明大体上涉及用于在时间和/或空间上对数据编码以用于经由信道传输且对所述数据解码的方法、电路、设备和计算机程序代码,其中预期删除和/或错误,且更明确地说,涉及用于使用源块对数据编码的方法、电路、设备和计算机程序代码,所述源块与其它源块重叠且可部分地或全部地与其它源块共同扩张。
【背景技术】
[0010]经由通信信道在发送器与接收者之间传输文件已成为大量文献的主題。优选地,接收者希望以某种程度的确定性接收由发送器经由信道传输的数据的确切复本。在信道不具有完美保真度的情况下(其涵盖大多数所有物理上可实现的系统),一个关注问题为如何处理在传输中丢失或错乱的数据。丢失数据(删除)常常比损坏的数据(错误)容易处理,这是因为接收者始终无法了解损坏的数据何时是错误地接收的数据。已开发许多错误校正代码以校正删除和/或错误。通常,基于关于正传输数据且正传输数据的性质所通过的信道的无保真性的某一信息而选择所使用的特定代码。举例来说,在已知信道具有长的无保真性周期的情况下,突发错误代码可能极适于所述应用。在预期仅具有短的不常见错误的情况下,简单的奇偶校验码可能为最好的。
[0011 ] 在特定应用中,需要处置ー种以上服务级别。举例来说,广播装置可能广播两种服务级别,其中仅能够接收ー种级别的装置接收可接受的数据集合,且能够接收第一级别和第二级别的装置使用第二级别来改进第一级别的数据。此情形的实例为FM无线电,其中一些装置仅接收单耳信号且其它装置接收所述单耳信号和立体声信号。此方案的ー个特性是:在无较低层的情况下,高层通常并非有用的。举例来说,如果无线电接收次要立体声信号而非基础信号,那么将不会发现次要立体声信号特别有用,而如果发生相反情形,且接收主要级别而非次要级别,那么可提供至少ー些有用信号。为此,常常将主要级别视为比次要级别更值得保护。在FM无线电实例中,将主要信号比次要信号更接近基带来发送,从而使得主要信号更稳健。
[0012]类似概念存在于数据输送和广播系统中,其中第一级别的数据输送是针对基本信号且第二级别是针对增强层。实例为H.264可缩放射频译码(SVC),其中连同增强层一起发送H.264基础相容流。实例为I兆位/秒(mbps)基础层和Imbps增强层。一般来说,如果接收器能够对所有基础层解码,那么接收器可提供有用输出,且如果接收器能够对所有增强层解码,那么接收器可提供改进的输出,然而,如果接收器无法对所有基础层解码,那么对增强层解码通常并不会提供任何有用信息。
[0013]常常使用前向错误校正(“FEC”)来提高接收器恢复经传输的数据的能力。在FEC的情况下,发射器或针对发射器操作的某一操作、模块或装置将对待传输的数据编码,使得接收器能够从经传输的经编码数据恢复原始数据,甚至在存在删除和或错误的情况下也如此。
[0014]由于ー个层对另一层的损失效应的差异,不同译码可能用于不同层。举例来说,基础层的数据可能用表示基础层中的数据的FEC译码的额外数据来传输,接着用表示基础层和增强层中的数据的FEC译码的额外数据来传输增强层的数据。通过此方法,后一 FEC译码可提供额外保证:可在接收器处成功地对基础层解码。
[0015]虽然此类分层方法在某些应用中可能为有用的,但其在其它应用中可能非常有限。举例来说,对于使用从两个或两个以上层中的一者产生的一些编码符号以及从所述两个或两个以上层的组合产生的其它编码符号而有效地对所述两个或两个以上层的联合解码,上述方法可能为不切实际的。
【发明内容】
[0016]可通过将源符号指派到基块、将基块指派到源块以及将每一源块编码为编码符号而对数据编码,其中至少ー对源块使得其具有与所述对的两个源块共同的至少ー个基块以及与所述对的另一源块不同的至少ー个基块。源块的所述编码可独立于其它源块的内容。可根据来自多个源块的编码符号集合来进行解码以恢复原始源符号的所要集合的全部,其中来自第一源块的编码符号的量小于所述第一源块中的源数据的量,且同样,来自第二源块的编码符号的量小于所述第二源块中的源数据的量。
[0017]在特定实施例中,编码器可将源符号编码为编码符号,且解码器可从合适数目个编码符号来对那些源符号解码。来自每一源块的编码符号的数目可小于所述源块中的源符号的数目,且仍允许完整的解码。
[0018]在更特定实施例中,其中第一源块包括第一基块,且第二源块包括第一基块和第ニ基块,解码器可从来自第一源块的编码符号集合和来自第二源块的编码符号集合恢复第一基块和第二基块的全部,其中来自所述第一源块的编码符号的量小于第一源块中的源数据的量,且同样,来自所述第二源块的编码符号的量小于第二源块中的源数据的量,其中解码过程中的符号运算的数目实质上小于第二源块中的源符号的数目的平方。【专利附图】
【附图说明】
[0019]图1为根据本发明的方面的使用弹性代码的通信系统的框图。
[0020]图2为根据本发明的方面的使用弹性代码的解码器的实例的框图,所述解码器用作接收器的部分。
[0021]图3更详细地说明可能为图1中所展示的编码器或编码器阵列中的一个编码器单元的编码器。
[0022]图4说明根据弹性代码的源块映射的实例。
[0023]图5说明为前缀代码且G = 4的弹性代码。
[0024]图6说明用修复符号的块进行的操作。
[0025]作为附录A附加的内容为表示关于删除信道的斯理篇-伍夫(Skpian-Wolf)型问题的论文,其中使用编码器/解码器系统的特定实施例,有时使用本发明的细节,也包含若干特殊情况以及一些实际应用(例如,流式传输)中的替代解决方案。应理解,附录A中所描述的特定实施例并非本发明的限制性实例,且本发明的一些方面可能使用附录A的教示而其它方面可能不使用附录A的教示。还应理解,附录A中的限制性陈述可能关于特定实施例的要求为限制性的,且此类限制性陈述可能关于或可能不关于所主张的发明且,因此,权利要求语言无需通过此类限制性陈述来限制。
[0026]为了促进理解,除了在适当的情况下可添加后缀以区分诸图所共有的相同元件以夕卜,在可能的情况下使用相同参考数字来指明此类元件。图式中的图像经简化以用于说明性目的且未必按比例绘制。
[0027]随附图式说明本发明的示范性配置且,因而,不应被视为限制本发明的范围,本发明可准许其它同等有效的配置。相应地,预期,一些配置的特征可有益地并入于其它配置中,而无进一步叙述。
【具体实施方式】
[0028]本发明不限于经传输的特定类型的数据。然而,在本文中的实例中,将假定:通过一序列的一个或一个以上源符号来表示可经传输的数据,且每一源符号具有特定大小,有时以位来测量。虽然并非要求,但在这些实例中,源符号大小也为编码符号的大小。符号的“大小”可以位来测量,而不管符号实际上是否分裂成位流,其中当从2M个符号的字母表中选择符号时,符号具有M个位的大小。
[0029]在本文中所使用的术语中,通过若干个源符号来表示待传送的数据,其中K用以表示所述数目。在一些情况下,预先已知K。举例来说,当待传送的数据为具有未知大小的文件以及具有为源符号大小的整数倍的大小的文件时,K将仅为作为所述倍数的整数。然而,也可能为以下情况:在传输之前并不知道K,或在已经开始传输之后才知道K。举例来说,在发射器正传输数据流的情况下,这是因为发射器接收数据且并不具有关于数据流何时可能结束的指示。
[0030]编码器基于源符号而产生编码符号。本文中,常常将编码符号的数目称作N。在于给定K的情况下N固定的情况下,编码过程具有编码率r = K/N。信息论成立:如果所有源符号值同等地可能,那么K个源符号的完美恢复需要接收至少K个编码符号(假定相同大小用于源符号与编码符号)以便完全恢复所述K个源符号。因此,使用FEC的译码率通常小于I。在许多情况下,较低译码率允许更多冗余且因此更多可靠性,但以较低带宽和可能增加的计算努力为代价。一些代码对于每个编码符号需要比其它编码符号多的计算且对于许多应用,编码和/或解码的计算成本将招致有用实施与不实用实施之间的差异。
[0031]每一源符号具有值和在待传输的数据内的位置,且其可存储在含有特定源符号的值的表示的发射器和/或接收器、计算机可读存储器或其它电子存储器内的各处。同样地,每一编码符号具有值和索引,索引用以区分一个编码符号与另一编码符号,且也可以计算机可读或电子可读形式来表示。因此,应理解,符号与其物理表示常常可在描述中互换地使用。
[0032]在系统性编码器中,源符号为编码符号的部分且并非源符号的编码符号有时被称作修复符号,这是因为其可在解码器处用以“修复”归因于损失或错误产生的损坏,即,其可有助于恢复丢失的源符号。取决于所使用的代码,可完全从所接收的编码符号恢复源符号,所接收的编码符号可能为所有修复符号或一些源符号和一些修复符号。在非系统性编码器中,编码符号可能包含源符号中的一些源符号,但有可能所有编码符号为修复符号。为了不必使用单独的术语用于系统性编码器和非系统性编码器,应理解,术语“源符号”指代表示待传输或提供到目的地的数据的符号,而术语“编码符号”指代由编码器产生以便改进面对错误或损失时的可恢复性的符号,不管那些编码符号为源符号还是修复符号。在一些情况下,在将数据呈现给编码器之前,预先处理源符号,在所述情况下,编码器的输入可能被称作“输入符号”以区分源符号。当解码器对输入符号解码时,通常需要额外步骤以变成源符号,此情形通常为解码器的最终目标。
[0033]一个有效代码是简单的奇偶校验码,但稳健性常常不足。可能使用的另一代码是无速率代码,例如,描述于卢比(Luby)的第6,307,487号美国专利(所述专利已转让给本申请案的受让人,且明确地以引用的方式并入本文中,在下文中称为“卢比I”)中的链反应代码,以及如描述于萧克罗雷希等人的第7,068,729号美国专利(所述专利已转让给本申请案的受让人,且明确地以引用的方式并入本文中,在下文中称为“萧克罗雷希I”)中的多级链反应。
[0034]如本文中所使用,术语“文件”指代存储在一个或一个以上源处且将作为单元递送到一个或一个以上目的地的任何数据。因此,来自文件服务器或计算机存储装置的文档、图像和文件均为可递送的“文件”的实例。文件可具有已知大小(例如,存储在硬磁盘上的I兆字节图像)或可具有未知大小(例如,取自流式传输源的输出的文件)。总之,文件为一序列源符号,其中每一源符号具有在文件中的位置和值。
[0035]如本文中所使用,术语“文件”也可能指代待传输的其它数据,所述数据未经组织或序列化成线性位置集合,而是可改为表示可在多个维度上具有排序的数据,例如,平面贴图数据,或根据优先级沿着时间轴以及沿着其它轴线组织的数据,例如,经分层且具有依赖彼此以用于呈现的多个层的视频流式传输数据。
[0036]传输是通过信道将数据从一个或一个以上发送器传输到一个或一个以上接收者以便递送文件的过程。发送器有时也被称作发射器。如果一个发送器通过完美信道连接到任何数目个接收者,那么所接收数据可为输入文件的确切复本,如同将正确地接收所有数据一样。此处,假定:信道并非完美的,此情况为大多数真实信道的情况。在许多信道缺陷中,两个有关的缺陷是数据删除和数据不完整性(其可被视为数据删除的特殊情况)。数据删除发生在信道丢失或丢弃数据时。数据不完整性发生在以下情形:接收者直到已经传递数据中的一些数据时才开始接收数据时,接收者在传输结束之前停止接收数据时,接收者选择仅接收所传输数据的一部分时,和/或接收器间歇地停止和再次开始接收数据时。
[0037]如果使用包网络,那么将一个或一个以上符号或符号的可能部分包含在用于传输的包中,且假定已正确地接收每一包或根本不接收每一包。传输可为“可靠的”,此情形在于:接收者与发送器在面对故障时将彼此对应,直到接收者对结果满意为止;或为不可靠的,此情形在于:接收者必须处理由发送器提供的内容且因此有时可能失败。在FEC的情况下,发射器通过提供额外信息或其类似者来对数据编码,以补偿可能在传输中丢失的信息,且通常在确切了解错误之前进行FEC编码,从而试图预先防止错误。
[0038]一般来说,通信信道是连接发送器与接收者以用于进行数据传输的信道。通信信道可为实时信道,其中在信道得到数据时,信道将数据从发送器移动到接收者,或通信信道可能为存储信道,其在数据从发送器到接收者的传输中存储数据中的一些或全部。后者的实例为磁盘存储器或其它存储装置。在所述实例中,产生数据的程序或装置可被视为将数据传输到存储装置的发送器。接收者为从存储装置读取数据的程序或装置。发送器用以将数据带到存储装置上的机制、存储装置自身以及接收者用以从存储装置得到数据的机制共同形成信道。如果存在所述机制或存储装置可能丢失数据的机会,那么所述情形将被视为通信信道中的数据删除。
[0039]“删除代码”为将K个源符号集合映射到较大(>K)的编码符号集合的代码,具有可从编码符号的一些适当子集恢复原始源符号的属性。编码器将进行操作以从其提供的源符号产生编码符号,且将根据其提供或编程以实施的删除代码进行此操作。如果删除代码为有用的,如果碰巧在接收器/解码器处接收的编码符号的子集具有大于或等于源符号(“理想”代码)的大小的大小,或至少此情形应以相当高的概率成立,那么可从所述子集恢复原始源符号(或在一些情况下,少于完整的恢复但足以满足特定应用的需要)。在实践中,“符号”通常为字节的集合,可能为几百个字节,且所有符号(源符号和编码符号)为相同大小。
[0040]“块删除代码”为将源符号(“块”)的一组特定不相交子集中的一者映射到每一编码符号的删除代码。当从一个块产生编码符号集合时,所述编码符号可彼此组合使用以恢复所述一个块。
[0041]编码符号的“范围”为产生编码符号所来自的块和编码符号用以解码的块,其中其它编码符号组合使用。
[0042]给定编码符号的“邻域集合”为编码符号直接依赖的符号的块内的源符号的集合。邻域集合可能为编码符号的范围的非常稀疏子集。由于效率和其它原因,许多块删除代码(包含链反应代码(例如,LT代码)、LDPC代码以及多级链反应代码(例如,速龙代码(Raptor code)))使用稀疏技术来产生编码符号。关于稀疏性的测量的一个实例为编码符号依赖的邻域集合中的符号的数目与块中的符号的数目的比率。举例来说,在块包括256个源符号(k = 256)且每一编码符号为所述256个源符号中的两者和五者之间的X0R(异或)运算的情况下,比率将在2 / 256与5 / 256之间。类似地,在K= 1024且每一编码符号为正好三个源符号的函数(即,每一编码符号的邻域集合具有正好三个成员)的情况下,那么比率为3 / 1024。[0043]对于例如速龙代码的一些代码,并不直接从块的源符号产生编码符号,而是改为从自身从块的源符号产生的其它中间符号产生编码符号。在任一情况下,对于速龙代码,邻域集合可比所述编码符号的范围(其等于块中的源符号的数目)的大小小得多。在这些情况下,其中有效的编码和解码为关注问题且所得代码构造为稀疏的,编码符号的邻域集合可比其范围小得多,且不同的编码符号可具有不同邻域集合,甚至在从相同范围产生时也如此。
[0044]由于块删除代码的块为不相交的,因此从一个块产生的编码符号无法用以恢复来自不同块的符号,这是因为其不含有关于其它块的信息。通常,代码的设计、用于此类不相交块删除代码的编码器和解码器归因于代码的性质而以某种方式表现。如果简单地修改编码器/解码器以考虑非不相交块,即,在块的范围可能与另一块的范围重叠的情况下,从重叠块产生的编码符号将不可用于有效地从块的联合恢复源符号,即,在使用编码符号的小邻域集合对重叠块解码时,解码过程并不允许有效地使用编码符号的小邻域集合。因此,在经应用以对重叠块解码时,块删除代码的解码效率比这些代码在经应用以对其经设计以用于的块解码(即,对不相交块解码)时的解码效率差得多。
[0045]“系统性代码”为编码符号集合含有源符号自身的代码。在此上下文中,在源符号与“修复符号”之间可能存在区别,其中后者指代编码符号而不是匹配源符号的那些符号。在使用系统性代码且正确地接收所有编码符号的情况下,在接收器处不需要额外符号(修复符号),但如果在传输中丢失或删除了一些源符号,那么可使用修复符号来修复此类情形以使得解码器可恢复遗失的源符号。如果编码符号包括修复符号且源符号并非直接为编码符号的部分,那么将代码视为“非系统性的”。
[0046]记住这些定义,现在将描述各种实施例。
[0047]用于弹性代码的编码器/解码器的概述
[0048]在编码器中,从源符号、输入参数、编码规则以及可能的其它考虑因素产生编码符号。在本文中所描述的基于块的编码的实例中,编码符号可依赖的此源符号集合被称作“源块”,或者,被称作编码符号的“范围”。因为编码器是基于块的,所以给定编码符号仅依赖一个源块内的源符号(以及可能的其它细节),或者,仅依赖其范围内的源符号,且并依赖在其源块或范围之外的源符号。
[0049]块删除代码可用于允许有效编码,以及有效解码。举例来说,一旦接收器成功地恢复给定源块的所有源符号,接收器便可暂停处理对所述源块内的源符号编码的所有其它所接收的编码符号,且改为集中于其它源块的编码符号。
[0050]在简单的块删除编码器中,可能将源数据划分成固定大小的、连续且非重叠源块,即,每一源块具有相同数目个源符号,在源块范围内的所有源符号在源数据中在位置上邻近且每一源符号属于正好一个源块。然而,对于某些应用,此类约束可能降低性能,减少稳健性,和/或添加编码和/或解码的计算努力。
[0051]弹性删除代码以若干种方式不同于块删除代码。一种方式是:在面对重叠块的联合时,弹性删除代码编码器和解码器更有效地操作。对于本文中所描述的弹性删除代码方法中的一些方法,所产生的编码符号为稀疏的,即,其邻域集合比其范围的大小小得多,且当使用从重叠的范围(块)的组合产生的编码符号来对范围的联合解码时,对应解码器过程不仅为有效的(在解码过程中充分利用编码符号的稀疏性,且用于解码的符号运算的数目实质上小于求解稠密方程组所需的符号运算的数目),而且具有小的接收开销(恢复范围的联合所需的编码符号的数目可能等于或不大于范围的联合的大小)。举例来说,当从K个源符号的块产生编码符号时,即,当编码符号具有范围K时,每一编码符号的邻域集合的大小可能为K的平方根。接着,从由两个重叠块产生的编码符号恢复所述两个块的联合所需的符号运算的数目可能比K'的平方小得多,其中所述两个块的联合包括K'个源符号。
[0052]在本文中所描述的弹性删除译码的情况下,源块不需要为大小固定的,可能有可能包含非邻近位置,以及允许源块重叠,使得给定源符号由一个以上源块“包封”。
[0053]在下文所描述的编码器的实施例中,待编码的数据为有序的多个源符号,且编码器确定表示源符号的“基块”的分界使得每一源符号由一个基块涵盖(或获得关于所述情形的确定),以及源块的确定和分界,其中源块包封一个或一个以上基块(以及所述基块中的源符号)。在每一源块包封正好一个基块的情况下,结果类似于常规块编码器。然而,当源块能够彼此重叠使得某一基块可能在一个以上源块中,使得两个源块在其交集处具有至少一个基块,且两个源块的联合包含比所述源块中的任一者中的源符号多的源符号时,在译码中存在若干个有用且未预期的益处。
[0054]如果编码使得可从由源块对中的第一源块产生的第编码符号集合与由源块对中的第二源块产生的第二编码符号集合的组合恢复由源块对的联合表示的源数据的部分,那么可能有可能使用比在使用更简单的编码过程的情况下可能需要的所接收符号少的所接收符号来解码。在此编码过程中,在一些情况下,所得编码符号可组合使用以用于有效地恢复一个以上源块的源符号。
[0055]下文提供关于此情形的原因的说明,但首先,将描述实施的实例。应理解,这些实施可以硬件、由处理器或计算机执行的程序代码、在通用计算机上运行的软件或其类似者来进行。
[0056]弹件代码理想恢复属件
[0057]对于块代码,理想恢复是从由块产生的K个编码符号的任何所接收集合来恢复块的K个源符号的能力。众所周知的,存在具有此理想恢复属性的块代码。举例来说,用作删除代码的里德所罗门(Reed-Solomon)代码展现此理想恢复属性。
[0058]可能针对弹性代码定义类似的理想恢复属性。假设弹性代码通信系统经设计使得接收器接收编码符号的某一集合(其中信道可能造成编码符号中的一些编码符号的损失,因此确切集合可能无法在编码器处指定)且接收器试图恢复所有原始源符号,其中在编码器处从重叠范围集合产生编码符号。重叠范围使得从重叠的源符号的多个源块产生所接收的编码符号,其中每一所接收的编码符号的范围为所述源块中的一者。换句话说,从T个块(范围)的集合b1;b2,K,br产生编码符号,其中从所述T个块(范围)中的正好一者产生每一编码符号。
[0059]在此上下文中,对于任何S,使得I≤S≤T,对于{1,K,T}的所有子集UpKaJ,如果以下情形成立,那么可将弹性删除代码的理想恢复属性描述为从所接收的编码符号的子集E恢复T个块的集合的能力:对于所有S,使得I≤s ≤S,对于UpLisI的所有子集U1',K,is' },MvK,<中的任一者产生的E中的符号的数目至多为VK 的联合的大小,且从,κ Α,中的任一者产生的E中的符号的数目等于h,K ,h.的联合的大小。应注意,E可为所接收的编码符号的子集,即,在评估此理想恢复定义以查看是否可恢复特定的块(范围)集合时,可能不考虑一些所接收的编码符号。
[0060]理想地,块(范围)集合的恢复应为计算上有效的,例如,解码过程使用的符号运算的数目可能与经恢复的范围的联合中的源符号的数目成线性比例,与二次方程成对比。
[0061]应注意,虽然本文中的一些描述可能描述用于弹性删除代码编码、处理、解码等的方法和过程,所述方法和过程在一些情况下实现上文所描述的理想恢复属性,在其它情况下,仅实现弹性代码的理想恢复和效率属性的紧密近似,但仍将所述方法和过程视为在弹性删除代码编码、处理、解码等的定义内。
[0062]系统概沭
[0063]图1为使用弹性代码的通信系统100的框图。
[0064]在系统100中,弹性代码块映射器(“映射器”)110产生基块到源块的映射,且有可能也产生基块的分界。如图1中所展示,通信系统100包含映射器110、用于源块映射的存储器115、编码器阵列或编码器120、用于对符号编码的存储器125,以及发射器模块130。
[0065]映射器110根据各种输入以及其中所表示的可能的规则集合而确定哪些源块将与哪些基块对应,且将对应存储在存储器115中。如果此过程为确定性的且可重复的过程,那么可在解码器处运行相同过程以获得此映射,但如果此过程为随机的或并非完全确定性的,那么可将关于映射如何发生的信息发送到目的地以允许解码器确定所述映射。
[0066]如所展示,在此实施例中使用输入集合(决不需要为详尽的),以用于控制映射器110的操作。举例来说,在一些实施例中,映射可能依赖源符号自身的值、源符号的数目(K)、作为输入(而不是完全在映射器110内部产生)提供的基块结构、接收器反馈、数据优先级信号,或其它输入。
[0067]作为实例,映射器110可能经编程以创建具有包封的源块,所述包封依赖于作为映射器110的输入提供的基块边界的特定指不。
[0068]源块映射也可能依赖于接收器反馈。在发射器容易得到接收器反馈且接收器指示对数据的成功接收的情况下,此情形可能为有用的。因此,接收器可能用信号向发射器通知接收器已接收并恢复直到第i个符号的所有源符号,且映射器110可能进行响应而更改源块包封以排除在第i个符号之前到达的完全恢复的基块,此情形可节省发射器以及接收器处的计算努力和/或存储。
[0069]源块映射可依赖于数据优先级输入,所述数据优先级输入用信号向映射器110通知针对不同源块或基块使数据优先级值变化。此情形的实例使用情况是在以下情况下:其中发射器正传输数据且接收到关于经传输的数据的优先级比其它数据低的信号,在所述情况下,可以较低优先级数据为代价针对较高优先级数据增加译码和稳健性。在以下应用中,此情形将为有用的:在例如地图显示器的应用中,其中最终用户可能在载入地图时移动“感兴趣的焦点”;或在视频应用中,其中最终用户在传输视频序列期间快进或快退。
[0070]在任一情况下,编码器阵列120使用源块映射以及源符号值和用于编码的其它参数来产生编码符号,所述编码符号存储在存储器125中以用于最终由发射器模块130传输。当然,应理解,系统100可完全以软件来实施,所述软件读取源符号值和其它输入且产生所存储的编码符号。因为编码器阵列可得到源块映射且编码符号可独立于不在与所述编码符号相关联的源块内的源符号,所以编码器阵列120可包括各自对不同源块操作的多个独立操作编码器。还应理解,在一些应用中,紧接在产生每一编码符号之后或几乎紧接在产生每一编码符号之后发送每一编码符号,且因此可能不存在对存储器125的需要,或可能在传输编码符号之前仅在短持续时间内将编码符号存储在存储器125内。
[0071]现参看图2,展示目的地处用作接收器的部分的解码器的实例。如此处所说明,接收器200包含接收器模块210、用于所接收的编码符号的存储器220、解码器230、用于经解码的源符号的存储器235,以及对应源块映射存储器215。未展示的内容为接收关于如何创建源块映射的信息所需的任何连接(如果发射器需要所述连接)。
[0072]接收器模块210从发射器接收信号,可能包含删除、损失和/或遗失数据,从所接收的信号导出编码符号,且将编码符号存储在存储器220中。
[0073]解码器230可读取可得到的编码符号、来自存储器215的源块映射,以基于映射、可得到的编码符号以及存储器235中的先前经解码符号来确定可从编码符号对哪些符号解码。可将解码器230的结果存储在存储器235中。
[0074]应理解,用于所接收的经编码符号的存储器220以及用于经解码的源符号的存储器235可能由共同存储器元件来实施,即,其中解码器230将解码结果保存在与用以解码的所接收的编码符号相同的存储区域中。还应从本发明理解,编码符号和经解码源符号可存储在易失性存储器中,例如,随机存取存储器(RAM)或高速缓冲存储器,尤其在于编码符号首次到达时与经解码数据将供其它应用使用时之间存在短延迟的情况下。在其它应用中,将符号存储在不同类型的存储器中。
[0075]图3更详细地说明编码器300,其可能为图1中所展示的编码器或编码器阵列中的一个编码器单元。在任一情况下,如所说明,编码器300具有符号缓冲器305,源符号的值存储在符号缓冲器305中。在说明中,可一次存储所有K个源符号,但应理解,编码器也可同等地对具有少于全部源符号的符号缓冲器起作用。举例来说,可能用仅含有相当于一个源块价值的源符号或甚至相当于少于整个源块价值的源符号的符号缓冲器来执行产生编码符号的给定操作。
[0076]符号选择器310从符号缓冲器305中的源符号位置中的一到K中选择,且运算符320对对应于源符号的操作数进行运算且借此产生编码符号。在特定实例中,符号选择器310使用稀疏矩阵来从经产生的编码符号的源块或范围中选择符号,且运算符320通过对符号执行逐位异或(XOR)运算来对选定的符号进行运算以获得编码符号。除XOR之外的其它运算是可能的。
[0077]如本文中所使用,作为针对特定编码符号的操作数的源符号被称作所述编码符号的“相邻者”,且依赖于给定源符号的所有编码符号的集合被称作所述源块的邻域。
[0078]当运算为XOR时,如果编码符号的所有其它相邻者源符号可得到,那么可简单地通过对编码符号和其它相邻者执行XOR运算,从编码符号来恢复为所述编码符号的相邻者的源符号。此情形可使得有可能对其它源符号解码。其它运算可能具有相似的功能性。
[0079]在己知相邻者关系的情况下,将存在源符号和编码符号的曲线图,以表示编码关系O
[0080]弹件代码的细节
[0081]弹性代码具有优于块代码或卷积码或网络代码的许多优点,且容易允许经译码的内容基于在编码期间所接收的反馈而改变。归因于块代码对整个数据块译码的要求,块代码为有限的,但随着编码继续进行而对数据的不同部分译码可为有利的,基于信道的己知的错误条件和/或反馈,考虑:在许多应用中,归因于时序约束,例如,当流式传输数据时,在可恢复所有数据之前按前缀次序恢复数据为有用的。
[0082]卷积码通过按预定样式化方式将修复符号添加到数据流而对所述流提供某种保护,例如,基于预定样式以预定速率将修复符号添加到流。卷积码并不允许任意的源块结构,其也不提供灵活性以从源数据的不同部分产生变化量的编码符号,且其也以许多其它方式而为有限的,包含恢复属性以及编码和解码的效率。
[0083]网络代码提供对通过多种中间接收器传输的数据的保护,且每一个此类中间接收器接着基于其所接收的内容而对额外编码数据编码且传输额外编码数据。网络代码并不提供灵活性以确定源块结构,也不存在比强力好的已知的有效编码和解码程序,且网络代码也以许多其它方式而为有限的。
[0084]弹性代码提供合适级别的数据保护,同时允许实时流式传输体验,即,在给定当前错误条件的情况下(归因于经引入以保护从而免于错误条件的译码),在过程中引入尽可能少的等待时间。
[0085]如所解释,弹性代码为满足以下情形的代码:其中每一编码符号可依赖于源符号的任意子集。一种类型的一般性弹性代码为弹性弦代码,其中源符号按序列布置且每一编码符号是从连续源符号集合产生的。下文更详细地解释弹性弦代码。
[0086]弹性代码的其它实施例为也为线性代码的弹性代码,S卩,其中每一编码符号为其所依赖的源符号的线性总和,且GF(q)线性代码为满足以下情形的线性代码:其中任何编码符号的构造中的源符号的系数为有限域GF(q)的成员。
[0087]如本文中所描述的使用弹性代码的编码器和解码器以及通信系统提供使等待时间和带宽开销最小化的良好平衡。
[0088]用于多优先级译码的弹性代码用途
[0089]弹性代码也可用于需要递送包括多个部分的对象的通信系统中,因为所述部分可具有不同的递送优先级,其中静态地或动态地确定所述优先级。
[0090]静态优先级的实例将为经分割成不同部分以按依赖于所述部分的优先级而递送的数据,其中不同部分可在逻辑上相关或依赖于彼此(在时间或某一其它因果关系维度上)。在此情况下,协议可能不具有从接收器到发送器的反馈,即,为开环。
[0091]动态优先级的实例将为满足以下情形的协议:当最终用户动态地且不可预测地集中于地图改变的不同部分时,动态地分成几部分地将二维地图信息递送到最终用户。在此情况下,待递送的地图的不同部分的优先级基于仅基于协议过程期间的反馈而已知的未知的先验优先级而改变,例如,反应于改变的网络条件、接收器输入或兴趣或其它输入。举例来说,最终用户可基于其当前地图视图中的信息以及其个人倾向和/或目标而改变其在将查看地图的哪一接下来的部分方面的兴趣。可将地图数据分割成象限,且在每一象限内,分割成不同的细化级别,且因此可能存在针对每一象限的每一级别的基块,且源块可能包括一个或一个以上基块的联合,例如,一些源块可能包括与一个象限内的不同的细化级别相关联的基块的联合,而其它源块可能包括与一个细化级别的邻近象限相关联的基块的联合。此为闭环协议的实例。
[0092]使用弹性删除译码的编码器
[0093]本文中所描述的编码器使用新颖的译码,所述新颖的译码允许对数据的任意子集编码。举例来说,一个修复符号可对一个数据符号集合编码,而第二修复符号可对第二数据符号集合编码,按以下方式进行:使得所述两个修复符号可从其范围的交集中的两个源符号的损失来恢复,且每一修复符号可从来自数据符号的在其范围内但不在另一修复符号的范围内的一个数据符号的损失来恢复。弹性代码的一个优点在于:其可提供恢复能力与端到端等待时间之间的弹性折衷。此类代码的另一个优点在于其可用以按以下方式保护不同优先级的数据:使得可组合仅针对最高优先级数据提供的保护与针对整个数据提供以恢复整个数据的数据,甚至在针对最高优先级数据提供的修复并非单独足够用于恢复最高优先级数据时的情况下也如此。
[0094]在不存在反馈的情况下以及在协议内存在反馈的情况下,这些代码可用于完整协议设计中。在协议内存在反馈的情况下,可基于反馈而动态地改变代码以提供所提供的保护与添加的等待时间(归因于译码)的最好组合。
[0095]可通过具有单个的源范围(每一源符号仅属于一个源块)将块代码视为使用弹性代码的退化情况。在弹性代码的情况下,源范围确定可为完全灵活的,源符号可属于多个源范围,可即时地确定源范围,以不同于预先定义的规则样式的样式,通过源数据的基础结构确定,通过输送条件或其它因素确定。
[0096]图4说明实例,其中下行方框表示源符号且符号上方的大括号指示源块的包封。在此实例中,存在三个源块且因此将存在三个经编码块,针对所述源块中的每一者编码的经编码块。在此实例中,如果源块由基块形成,那么可存在五个基块,其中基块分界用箭头来指示。
[0097]一般来说,使用弹性代码的编码器和解码器将操作,其中源符号中的每一者在一个基块内但可在一个以上源块或源范围中,其中源块中的一些源块重叠且在一些情况下,至少并非完全为其它源块的子集,即,存在至少两个源块,所述至少两个源块具有一些共同的源符号,而且每一源块具有存在于所述源块中的一者中但不存在于所述源块中的另一者中的一些源符号。源块是产生修复符号所来自的单元,即,修复符号的范围,使得一个源块的修复符号可独立于不在所述源块中的源符号,借此允许使用源块的经编码、所接收和/或修复符号对所述源块的源符号解码,而不需要解码器存取另一源块的经编码、所接收或修复符号。
[0098]源块的范围的样式可为任意的,和/或可依赖于目的解码器的需要或请求。在一些实施中,可即时地确定源范围,通过源数据的基础结构确定,通过输送条件确定,和/或通过其它因素确定。可从给定源块产生的修复符号的数目可针对每一源块而相同,或可变化。从给定源块产生的修复符号的数目可基于译码率而固定或可独立于源块,如在链反应代码的情况下。
[0099]在传统块代码或链反应代码的情况下,由解码器组合彼此使用以恢复源符号的修复符号通常从单个源块产生,而在本文中所描述的弹性代码的情况下,可从源数据的任意部分以及从源数据的重叠部分产生修复符号,且源符号到源块的映射可为灵活的。
[0100]选定设计考虑因素
[0101]有效的编码和解码为弹性代码设计中的主要关注问题。举例来说,理想效率可能见于可使用若干个符号运算解码的弹性代码中,所述弹性代码在经恢复的源符号的数目上为线性的,且因此使用实质上比强力方法少的符号运算用于恢复的任何解码器为优选的,其中强力方法通常需要在经恢复的源符号的数目上为二次的若干个符号运算。
[0102]用最少的接收开销解码也是目标,其中可将“接收开销”表示为实现先前所描述的理想恢复属性所需的额外编码符号的数目,解码器需要超过所述数目。此外,得到保证的恢复或高概率恢复或非常高可能性的恢复或大体上高的可靠性恢复为优选的。换句话说,在一些应用中,目标不需要为完全恢复。
[0103]弹性代码可用于若干环境中。举例来说,在分层译码的情况下,提供第一修复符号集合以保护较高优先级数据块,而第二修复符号集合保护较高优先级数据块与较低优先级数据块的组合,在解码处需要较少符号且如果分别对较高优先级数据块编码且分别对较低优先级数据块编码。一些已知代码提供分层译码,但常常以未能实现重叠源块的联合的有效解码和/或未能实现高可靠性恢复为代价。
[0104]下文所描述的基于弹性窗口的代码可同时实现重叠源块的联合的有效且高可靠性解码,且还可在分层译码的情况下进行此操作。
[0105]结合网络译码
[0106]在另一环境中,使用网络译码,其中起始节点将源数据的编码发送到可经历不同损失样式的中间节点,且中间节点将从所接收的编码数据的部分产生的编码数据发送到目的节点。目的节点可接着通过对从多个中间节点接收的所接收的编码数据解码而恢复原始源数据。可在网络译码协议内使用弹性代码,其中所得解决方案提供原始源数据的有效且高可靠性恢复。
[0107]弹性弦代码的简单构造
[0108]为了解释的目的,假定编码器如下产生修复符号集合,其提供弹性弦代码的简单构造。可扩展此简单构造以提供未必为弹性弦代码的弹性代码,在所述情况下,修复符号以及其邻域集合或范围的识别为此处所描述的识别的扩展。用GF(256)中的元素产生mXn矩阵A。用Au表示第i行和第j列的元素,且用S j=O, 1,2,...)表示源符号。接着,对于任何元组(e,1,i),其中e、l和i为整数,e
I > O且O
i <m,且修复符号具有如在方程I中阐述的值。
[0110]应注意,对于待良好定义的Re, U,应指定符号乘以GF(256)的元素的乘法的概念和符号的求和的概念。在实例中,在本文中,将GF(256)的兀素表不为八进制数且将可为一序列八进制数的每一符号视为GF(256)的一序列元素。符号乘以域元素的乘法需要符号的每一元素乘以相同域元素的乘法。符号的求和简单地为由待求和的符号中的对应域元素的总和的串联形成的符号。
[0111]针对给定修复符号的出现于方程I中的源符号集合被称为修复符号的“范围”,而具有针对所述修复符号中的每一者的出现于方程I中的给定源符号的修复符号集合被称作给定源符号的“邻域”。因此,在此构造中,修复符号的邻域集合与修复符号的范围相同。
[0112]代码的编码符号则包括源符号加上修复符号,如本文中所定义,S卩,经构造的代码为系统性的。
[0113]考虑矩阵A的两个替代构造,其对应于两个不同的弹性代码。对于“随机弦代码”,从GF(256)的非零元素中伪随机地选择A的元素。应理解,贯穿本文,除非另外指示,否则在描述为随机地选择的情况下,应假定:伪随机选择包含于所述描述中且,更一般来说,可伪随机地执行随机操作。对于“柯西弦代码”,如方程2中所展示来定义A的元素,其中k=255-m,且g(x)为八进制数表示为x的有限域元素。
[0114]& =(g(_/mocU)十衮(255-/))_i (方程 2)
[0115]对来自使用弹性弦代码的简单构造的编码的符号解码
[0116]又关于编码符号自身,解码器存取每一符号的识别信息,所述识别信息可仅为索引,即,对于源符号Sj,识别信息为索引j。对于修复符号Re, u,识别信息为三元组(e,1,i)。当然,解码器也存取矩阵A。
[0117]对于每一所接收的修复符号,解码器确定识别信息,且如果源符号值己知,那么使用源符号值从方程I计算所述修复符号的值,且如果源符号值未知,那么使用零符号从方程I计算所述修复符号的值。当将如此计算的值添加到所接收的修复符号时,假定修复符号经正确地接收,结果为修复符号的范围或邻域中的剩余的未知源符号的总和。
[0118]为了简单起见,此描述对解码器编程以试图恢复在至少一个所接收的修复符号的范围内的所有未知源符号。在阅读本发明后,应显而易见,如何修改解码器以恢复少于全部的未知源符号,或以高概率但少于确定性地恢复所有未知源符号,或其组合。
[0119]在此实例中,假设t为在所接收的修复符号的范围的联合中的未知源符号的数目,且假设jo,Jij K,jt_i为所述未知源符号的索引。假设U为所接收的修复符号的数目且将所接收的修复符号表示(任意地)为R。,K,Rlrf。
[0120]构造具有项目Em的u X t矩阵E,其中Em为方程I中的针对修复符号Rp的源符号 的系数,或在?不出现于方程中的情况下,Em为零。接着,如果S=(S V,SJf/为遗失源符号的向量,且R=(Ro,Λ ,RuJt为在应用步骤I之后的所接收的修复符号的向量,那么将满足方程3中的表达式。
[0121]R=E.S (方程 3)
[0122]如果E并不具有秩U,那么存在可移除而不改变E的秩的一行Ε。移除所述一行Ε,将u递减一且将剩余修复符号重新编号,使得方程3仍成立。重复此步骤,直到E具有秩u为止。
[0123]如果u=t,那么完全解码是可能的,E为满秩正方形,且因此为可逆的。由于E为可逆的,因此可从E4R找到S,且解码完成。如果u〈t,那么在不接收额外源符号和/或源符号的此子集的修复符号或具有关于来自某一其它途径的源符号的其它信息的情况下完全解码是不可能的。
[0124]如果u〈t,那么假设E'为满秩的E的uXu子矩阵。在合适的列排列的情况下,可将E写为(E' |U),其中U为uX(t-u)矩阵。将方程3的两边乘以E, 可获得方程4中的表达式,方程4提供针对对应于E-1R的行(其中E, 为零)的源符号的解决方案。
[0125]E1.R=(I)E1.U).S (方程 4)
[0126]如果接收 到其它修复符号和/或源符号,那么方程4允许更简单地恢复剩余源符号。
[0127]源符号的其它部分的恢复可能为有可能的,甚至在恢复在至少一个所接收的修复符号的范围内的所有未知源符号为不可能的时也如此。举例来说,可能为以下情况:尽管一些未知源符号在至少一个所接收的修复符号的范围内,但存在不足的修复符号来恢复未知源符号,或修复符号与未知源符号之间的方程中的一些方程为线性依赖的。在这些情况下,可能有可能仅使用具有在源符号的较小子集内的范围的所述修复符号来至少恢复源符号的所述较小子集。
[0128]使用弹性弦代码的简单构造的基于流的解码器
[0129]在“流”操作模式中,源符号形成流,且在产生修复时经由源符号的后缀产生修复符号。此基于流的协议使用上文所描述的弹性弦代码的简单构造。
[0130]在解码器处,源符号和修复符号逐个地到达,可能具有某种重新排序,且源符号或修复符号一到达,解码器就可识别任何丢失的源符号是否变得可解码,接着对此源符号解码且将此源符号递送到解码器的输出。
[0131]为了实现此目的,解码器维持矩阵(IlE' ―1.U),且根据下文的程序,每次接收到新的源符号或修复符号时,更新此矩阵(IlE' _、U)。
[0132]假设D表示“解码矩阵”(I IE' -1.U)。假设Dij表示位置(i,j)处的元素,Diy表示D的第j列,且Di*表示D的第i行。
[0133]在下文所描述的程序中,解码器对解码矩阵执行各种运算。对修复符号执行等效运算以实现解码。这些运算可与矩阵运算同时执行,但在一些实施中,将这些运算延迟,直到在下文所描述的“恢复符号”程序中恢复实际源符号为止。
[0134]在接收到源符号后,如果源符号为遗失源符号中的一者,那么解码器移除D的对应列。如果经移除的列为前u列中的一者,那么解码器识别与具有经移除的列中的非零元素的行相关联的修复符号。解码器接着针对此修复符号的接收重复下文所描述的程序。如果经移除的列并非前u列中的一者,那么解码器执行下文所描述的“恢复符号”程序。
`[0135]在接收到修复符号后,首先,解码器针对当前未知的每一源符号将新的列添加到D,在新的修复符号的范围内且并非已与D的列相关联。接下来,解码器针对所接收的修复符号将新的行Du*添加到D,将来自方程I的系数填入此行。
[0136]对于从O到u-Ι (包含O和u-Ι)的i,解码器用(D--Dui.DiJ替换Du*。此步骤导致消除Du*的前u个元素(即,减少到零)。如果在此消除步骤之后Du*为非零的,那么解码器执行列交换(在必要的情况下),使得Duu为非零的且用(DuiT1.DuJ替换Du*。
[0137]对于从u-Ι到O (包含u-Ι和O)的i,解码器用(Di1-Diu.Du*)替换Di*。此步骤导致消除列u的元素(S卩,减少到零)(除了行u之外)。
[0138]矩阵现在再次呈形式(IlE' 1.U),且解码器可设置u:=u+l。
[0139]为了执行“恢复符号”程序,解码器考虑为零的E' 1 -U的每一行,或如果E' 1 -U为空,那么考虑D的所有行。可恢复D的所述行中列为非零的源符号。通过对修复符号执行所存储的运算序列来实现恢复。具体来说,当解码器用(Dw-C1-Di*)替换行Di*时,其也用(R1-C1-Ri)替换对应修复符号Ri,且当用(a -DiJ替换行Di*时,其用α.Ri替换修复符号民。
[0140]应注意,执行运算的次序为重要的且所述次序与执行矩阵运算的次序相同。
[0141]一旦已执行运算,接着针对为零的E' ―1.U的每一行,对应修复符号现在具有等于在D的所述行中列为非零的源符号的值的值,且因此恢复所述符号。可接着将此行和列从D中移除。[0142]在一些实施中,仅在识别可恢复至少一个符号时执行符号运算。针对D的所有行执行符号运算,但可能并不导致恢复所有遗失符号。解码器因此追踪哪些修复符号已“经处理”以及哪些符号“未经处理”,且在执行进一步矩阵运算时,小心地保持经处理的符号为最新的。
[0143]在此“流”模式中,弹性代码的属性在于:依赖性可无限地伸展到过去且因此解码矩阵D可任意大地生长。实际上,实施应设置对D的大小的限制。在实际应用中,常常存在针对任何给定源符号的递送的“截止时间”,即,在所述时间之后,符号对上部协议层无用,或在所述时间之后,告知上部层无论如何继续进行而无丢失的符号。
[0144]可基于此约束而设置D的最大大小。然而,对于弹性代码解码器来说,保持可用以恢复给定源符号的信息可为有利的,即使所述符号从未递送到应用程序也如此。这是因为替代方案是丢弃具有对所讨论的源符号的依赖性的所有修复符号,且可为以下情况:所述修复符号中的一些修复符号可用以恢复截止时间未过期的不同源符号。
[0145]对D的大小的替代限制与存储在弹性代码解码器中的信息的总量有关。在一些实施中,在循环缓冲器中缓冲所接收的源符号且保持已经递送的符号,这是因为随后解译所接收的修复符号可能需要这些符号(例如,计算上述方程I中的值)。当最后丢弃源符号时(归因于缓冲器满了),有必要丢弃(或处理)范围包含所述符号的任何(未经处理的)修复符号。给定此事实,以及源缓冲器大小,可能应设置矩阵D的大小以适应预期被接收的范围均在源缓冲器内的最大数目个修复符号。
[0146]替代实施是根据上文所描述的理想恢复属性仅在存在成功解码的可能性时来构造矩阵D。
[0147]计算复杂性
[0148]上文所描述的代码的计算复杂性受符号运算支配。
[0149]符号的加法可为对符号的逐位异或。此操作可在一些处理器上通过使用宽寄存器(例如,遵循x86架构的CPU上的SSE寄存器)有效地来实现,所述宽寄存器可同时对64位或128位数据执行XOR运算。然而,符号乘以有限域元素的乘法常常必须逐字节地来执行,这是因为处理器一般并不提供用于有限域运算的本机指令且因此必须使用查找表,这意味着每一字节乘法需要若干个处理器指令,包含存取存储器而不是处理数据。
[0150]在编码器处,使用上述方程I来计算每一修复符号。此操作涉及I个符号乘法以及1-1个符号加法,其中I为修复符号范围内的源符号的数目。如果每一源符号通过正好r个修复符号来保护,那么总的复杂性为0(r.k)个符号运算,其中k为源符号的数目。或者,如果每一修复符号具有具I个源符号的范围或邻域集合,那么每个所产生的修复符号的计算复杂性为0(1)个符号运算。如本文中所使用,应将表达式0()理解为常规的“属于函数一类的”。
[0151]在解码器处,存在复杂性的两个分量:所接收的源符号的消除以及丢失的源符号的恢复。第一分量等效于编码操作,即,0(r*k)符号运算。第二分量对应于由uXu矩阵E的倒置产生的符号运算,其中u为丢失的源符号的数目,且因此具有复杂性为0(u2)个符号运算。
[0152]对于低损失速率,u小且因此,如果在解码器处使用所有修复符号,那么编码复杂性和解码复杂性将类似。然而,由于复杂性的主要分量与修复符号的数目成比例,因此如果并非使用所有修复符号,那么复杂性应降低。
[0153]如上文所说明,在实施中,将修复符号的处理延迟,直到已知可恢复数据为止。此情形使符号运算最小化且因此使代码的计算要求最小化。然而,此情形导致解码活动的突发。
[0154]替代实施可通过在符号到达时执行对所接收的源符号的消除操作(使用方程I)而解决计算负荷。此情形导致对所有修复符号执行消除操作,即使修复符号并非全部使用也如此,此情形导致较高的(但更稳定的)计算复杂性。为了使此情形成为可能,解码器必须预先具有关于将产生哪些修复符号的信息,而这在所有应用中可能并非有可能的。
[0155]解码概率
[0156]理想地,每个修复符号由于其范围中的所有源符号在其经接收之前已经恢复或接收而明显为冗余的或可用于恢复丢失的源符号。此情形成立的频率取决于代码的构造。
[0157]当新的所接收的修复符号导致在消除步骤后将零行添加到D时,可在解码器逻辑中检测到与此理想的偏差。此类符号不载送新的信息到解码器,且因此将其丢弃以避免不必要的处理。
[0158]在随机GF(256)代码实施的情况下,基于以下事实,此可为256中大致I个修复符号的情况:在将新的随机行添加到满秩GF(256)的uXu+1矩阵时,所得uXu矩阵不具有满秩的概率为1 / 256。
[0159]在柯西代码实施的情况下,当用作块代码时且在源符号和修复符号的总数小于256时,故障概率为零。此类代码等效于里德所罗门代码。
_0] 块模式结果
[0161]在用作块代码(即,产生全部具有等于k个源符号的全集合的范围的许多修复符号)的弹性弦代码的测试(针对固定块大小(k=256)和修复量(r=8))中,编码速度和解码速度针对高于约200字节的变化的块大小而大约相同,但速度针对低于约200字节的块大小而降低。这有可能是因为在低于200字节的符号(或取决于条件而为某一其它阈值)时,确定符号运算所需的逻辑的开销实质上与符号运算本身相当,但针对较大符号大小,符号运算本身为主要的。
[0162]在其它测试中,针对固定的块和符号大小的随着修复开销(r / k)而变的编码和解码速度展示:编码和解码复杂性与修复符号的数目成比例(且因此速度与I / r成比例)。
_3] 流模式结果
[0164]当损失率比开销小得多时,平均等待时间较低,但其随着损失率接近代码开销而快速增加。这是所预期的,因为当损失率比开销小得多时,多数损失可使用单个修复符号来恢复。随着损失率增加,我们更经常遭遇到以下情况:其中在单个修复符号的范围内发生多个损失,且此要求使用更多修复符号。
[0165]可能发生的另一细调是考虑使修复符号的跨度变化的效应(所述跨度为在修复符号的范围中或邻域集合中存在多少个源符号),所述跨度在上述实例中为256。针对固定开销而减小跨度可减少保护每一源符号的修复符号的数目,且因此可预期此将增加残余误码率。然而,减小跨度还可降低编码器与解码器两者处的计算复杂性。
[0166]作为喷泉块代石马(Fountain Block Code)的基于窗□的代石马[0167]在许多编码器和解码器中,分配给编码和解码的计算能力的量和时间是有限的。举例来说,在解码器处于电池供电的手持式装置中的情况下,解码应为有效的且不需要过量的计算能力。编码和解码操作所需的计算能力的一个测量是对特定符号集合解码所需的符号运算(将两个符号相加、相乘、异或(XOR)运算、复制等)的数目。代码应鉴于此而经设计。虽然确切运算数目可能并未预先已知,但由于其可基于哪些编码符号经接收以及多少个编码符号经接收而变化,所以常常可能确定平均情况或最坏情况且相应地对设计进行配置。
[0168]本段描述新类型的喷泉块代码(本文中称作“基于窗口的代码”),其为下文进一步描述的展现有效编码和解码的一些方面的弹性代码中的一些弹性代码的基础。基于窗口的代码在首次描述时为非系统性代码,但在下文进一步描述时,存在用于将此变换为系统性代码的若干方法,这在阅读本发明后将显而易见。在此情况下,每一编码符号的范围是K个源符号的整个块,但每一编码符号的邻域集合更为稀疏(由B〈〈K个相邻者组成),且不同编码符号的邻域集合通常为非常不同的。
[0169]考虑K个源符号的块。编码器如下工作。首先,编码器在每一侧上用B个零符号填充(逻辑上或实际上)所述块以形成K+2B个符号的扩展块Xtl, X1, LXk+ ,即,前B个符号和后B个符号为零符号,且中间K个符号为源符号。为产生编码符号,编码器随机地选择开始位置t(在I与K+B-1之间),且从合适的有限域(例如,GF⑵或GF(256))随机地或伪随机地选择值Qci, K,CIb+接着由编码器使用方程5的公式来计算编码符号值ESV,在此情况下,在扩展块中的位置t到t+Β-Ι中的符号中选择所产生编码符号的领域集合。
[0170] (方程 5)
[0171]解码器在接收到至少K个编码符号后在扩展块中的源符号的位置上使用往复扫描(to-and-fro sweep)以进行解码。第一扫描是从第一位置的源符号到所述块的最后位置的源符号,使源符号s与编码符号e (其可恢复源符号s)匹配,以及消除对可用以恢复稍后位置中的源符号的编码符号的s的依赖性,以及将s对e的贡献(contribution)调整为仅S。第二扫描是从最后位置的源符号到所述块的第一位置的源符号,消除对用以恢复先前位置的源符号的编码符号的源符号s的依赖性。在成功的往复扫描后,每一源符号的经恢复的值为其所匹配的编码符号的值。
[0172]对于第一扫描过程,解码器获得所有所接收的编码符号的集合E。对于扩展块内的位置i = B, Κ,Β+Κ-1中的每一源符号S,解码器选择编码符号e且接着将e匹配到s且从E删除e,编码符号e在E中的所有编码符号(其在其相邻者集合中具有s)中具有最早的相邻者末端位置。此选择是在那些编码符号e当中进行的,其中s对e的贡献在当前线性方程集合中为非零的,即,8对6的贡献为β *s,其中β古0。如果不存在s的贡献为非零的编码符号e,那么由于s不能经解码,因此解码失败。一旦源符号s与编码符号e匹配,便从集合E移除编码符号e,使用高斯消除来消除s对E中的所有编码符号的贡献,且通过将e乘以s对e的贡献的系数的倒数而将s对e的贡献调整为仅S。
[0173]解码器的第二扫描过程如下工作。对于源位置i = K-1, K,0,中的每一源符号S,使用高斯消除来消除s对E中匹配到i之前的位置的源符号的所有编码符号的贡献。
[0174]解码当且仅当所接收编码符号所界定的线性方程系统具有秩K的情况下才成功地完全恢复所有源符号,即,如果所接收编码符号具有秩K,那么保证上述解码过程恢复所述块的K个源符号。
[0175]每个所产生编码符号的符号运算的数目为B。
[0176]编码符号的有效范围(reach)经界定为作为编码符号的相邻者的第一位置与作为编码符号的相邻者的最后位置之间的扩展块内的位置集合。在上述构造中,每一编码符号的有效范围的大小为B。解码符号运算的数目受用于解码的编码符号的有效范围的大小的总和约束。这是因为(顺便说一句,设计了上文描述的匹配过程):在解码过程期间从不扩展编码符号有效范围,且每一解码符号运算使编码符号有效范围的大小的总和减一。此意指用于对K个源符号解码的符号运算的数目为0(K.B)。
[0177]在基于窗口的代码的计算复杂性与其恢复属性之间存在折衷。通过简单分析可展示:如果Β=0(Κ1/2)且如果有限域大小经选择为足够大(例如,0(Κ)),那么所述块的所有K个源符号可以高概率而从K个所接收的编码符号恢复,且故障概率随着每一额外接收的编码符号而快速降低。当GF[2] 或 GF [256]分别用作有限域且B=O (K1 ,2)时,基于窗口的代码的恢复属性类似于随机GF[2]代码或随机GF[256]代码的属性。
[0178]可使用类似分析来展示:如果B=O (In (K / δ ) / ε ),那么在已接收K.(1+ε )个编码符号后,所述块的所有K个源符号可以至少概率1- δ来恢复。
[0179]如所属领域的技术人员将认识到,存在本文所描述的基于窗口的代码的许多变化。作为一个实例,代替创建Κ+2Β个符号的扩展块,可改为从K个源符号直接产生编码符号,在此情况下,针对每一编码符号在O与K-1之间随机地选择t,且接着如方程6中所示来计算编码符号值。针对此经修改的基于窗口的块代码进行解码的一种方式是使用类似于上文描述的程序的解码程序,不同之处在于:在开头,K个源符号的连续集合B为“去活的”,所述解码如先前所述而继续进行,假定这些B个去活的源符号值为已知的,形成编码符号与B个去活的源符号之间的BXB方程系统并求解,且接着基于此以及往复扫描的结果,来求解剩余K-B个源符号。在萧克罗雷希去活中描述了此工作方式的细节。
【权利要求】
1.一种用于对将经由有可能引入错误或删除的通信信道而传输的数据编码的方法,其中源数据由有序的多个源符号表示,且所述源数据可从经传输的编码符号而恢复,所述方法包括: 识别所述有序多个源符号中的每ー符号的基块,其中所述经识别基块为共同涵盖待编码的所述源数据的多个基块中的一者; 根据多个源块且针对每一基块识别包封所述基块的至少ー个源块,其中所述多个源块包含至少ー对源块,所述至少一对源块具有存在由所述对的两个源块包封的至少ー个基块以及针对所述对的每一源块而言由所述源块包封而不由所述对的另一源块包封的至少ー个基块的特性;以及 根据编码过程对所述多个源块中的每ー者编码,从而产生编码符号,其中所述编码过程对ー个源块操作以产生编码符号,其中所述编码符号独立于来自基块的未被所述ー个源块包封的源符号的源符号值,其中所述编码使得确保由所述源块对的联合表示的所述源数据的部分可从由所述对的第一源块产生的第一编码符号集合与由所述对的第二源块产生的第二编码符号集合的组合恢复,其中所述第一集合中的编码符号的量小于所述第一源块中的源数据的量,且所述第二集合中的编码符号的量小于所述第二源块中的源数据的量。
2.根据权利要求1所述的方法,其中所述编码过程使得:当所述编码符号和所述源符号具有相同大小吋,当所述第一编码符号集合包括Ml个编码符号时,所述第一源块包括NI个源符号,所述第二编码符号集合包括M2个编码符号,所述第二源块包括N2个源符号,以及当所述第一源块与所述第二源块的交集包括N3个源符号时,其中N3大于零,如果针对M1〈N1且M2〈N2的值的至少ー些组合而言M1+M2=N1+N2_N3,那么确保所述源块对的所述联合的可恢复性超出预定的阈值概率。
3.根据权利要求2所述的方法,其中如果针对使得Ml< NI且M2 < N2的Ml和M2的值的所有组合而言M1+M2= N1+N2-N3,那么确保所述源块对的所述联合的所述可恢复性超出预定阈值概率。
4.根据权利要求2所述的方法,其中如果针对使得Ml< NI且M2 < N2的Ml和M2的值的所有组合而言M1+M2=N1+N2-N3,那么所述源块对的所述联合的所述可恢复性是确定的。
5.根据权利要求2所述的方法,其中如果针对Ml和M2的值的至少ー些组合而言M1+M2大于N1+N2-N3的量小于预定百分比但M1+M2小于N1+N2,那么确保所述源块对的所述联合的可恢复性具有高于预定阈值概率的概率。
6.根据权利要求1所述的方法,其中由源块产生的至少ー个编码符号等于来自由所述源块表示的所述源数据的所述部分的源符号。
7.根据权利要求1所述的方法,其中所述编码使得确保由所述对的所述第一源块表示的所述源数据的所述部分可从由所述第一源块产生的第三编码符号集合恢复,其中所述第三集合中的编码符号的量不大于所述第一源块中表示的源数据的所述量。
8.根据权利要求1所述的方法,其中所述编码使得确保由所述对的所述第一源块表示的所述源数据的所述部分可从由所述第一源块产生的第三编码符号集合恢复的概率高于预定阈值概率,其中所述第三集合中的编码符号的所述量仅稍大于所述第一源块中表示的源数据的所述量。
9.根据权利要求1所述的方法,其中可由每一源块产生的独特编码符号的数目独立于所述源块的大小。
10.根据权利要求1所述的方法,其中可由每一源块产生的独特编码符号的所述数目取决于所述源块的所述大小。
11.根据权利要求1所述的方法,其中在开始编码之前执行识别符号的基块。
12.根据权利要求1所述的方法,其中在开始编码之前执行识别基块的源块。
13.根据权利要求1所述的方法,其中在针对每一源符号识别基块之前或在针对所述源块中的每ー者确定所述经包封基块之前或在产生所有所述源数据或使所有所述源数据可用之前,产生至少ー个编码符号。
14.根据权利要求1所述的方法,其进ー步包括: 接收接收器反馈,所述接收器反馈表示正接收编码符号或已接收编码符号的解码器处的結果;以及 调整以下各项中的一者或一者以上:基块中的源符号的成员、包封源块中的基块的成员、每个基块的源符号的数目、源块中的符号的数目,和/或由源块产生的编码符号的数目,其中至少部分基于所述接收器反馈而进行所述调整。
15.根据权利要求14所述的方法,其中调整包含确定新的基块或改变先前所确定基块中的源符号的成员。
16.根据权利要求14所述的方法,其中调整包含确定新的源块或改变先前所确定源块的基块的包封。.
17.根据权利要求1所述的方法,其进ー步包括: 接收表示对所述源数据的变化的数据优先级偏好的数据优先级偏好信号;以及 调整以下各项中的一者或一者以上:基块中的源符号的成员、包封源块中的基块的成员、每个基块的源符号的数目、源块中的符号的数目,和/或由源块产生的编码符号的数目,其中至少部分基于所述数据优先级偏好信号而进行所述调整。
18.根据权利要求1所述的方法,其中由每一源块包封的所述基块中的源符号的所述数目如在所述源块中的两者或两者以上之间为独立的。
19.根据权利要求1所述的方法,其中经识别为基块的源符号在所述有序的多个源符号内并非连续的。
20.根据权利要求1所述的方法,其中经识别为基块的所述源符号在所述有序的多个源符号内为连续的。
21.根据权利要求20所述的方法,其中经识别为由源块包封的所述基块的源符号在所述有序的多个源符号内为连续的。
22.根据权利要求1所述的方法,其中可针对源块而产生的编码符号的所述数目独立于可针对其它源块而产生的编码符号的所述数目。
23.根据权利要求1所述的方法,其中针对给定源块而产生的编码符号的所述数目独立于由所述给定源块包封的所述基块中的源符号的所述数目。
24.根据权利要求1所述的方法,其中编码包括: 针对每ー编码符号确定从有限域选择的系数集合; 产生所述编码符号作为由单个源块所包封的ー个或ー个以上基块的源符号的组合,其中部分通过所述系数集合来界定所述组合。
25.根据权利要求1所述的方法,其中用以从源块产生编码符号的符号运算的数目比由所述源块表示的所述源数据的所述部分中的源符号的所述数目少得多。
26.一种用于对经由有可能包含错误或删除的通信信道而接收的数据解码以恢复由源符号集合表示的源数据的方法,所述方法包括: 识别每一源符号的基块,其中所述经识别基块为共同涵盖所述源数据的多个基块中的一者; 根据多个源块且针对每一基块识别包封所述基块的至少ー个源块,其中所述多个源块包含至少ー对源块,所述至少一对源块具有存在由所述对的两个源块包封的至少ー个基块以及针对所述对的每一源块而言由所述源块包封而不由所述对的另一源块包封的至少ー个基块的特性;以及 接收多个所接收符号; 针对每一所接收符号,识别源块,所述所接收符号为所述源块的编码符号;以及 对来自所述多个所接收符号的源符号集合解码,其中确保由所述源块对的联合表示的所述源数据的部分可从对应于由所述对的第一源块产生的编码符号的所接收符号的第一集合与对应于由所述对的第二源块产生的编码符号的所接收符号的第二集合的组合恢复,其中所述第一集合中的所接收符号的量小于所述第一源块中的源数据的量且所述第二集合中的所接收符号的量小于所述第二源块中的源数据的量。
27.根据权利要求26所述的方法,其中如果NI为所述第一源块的所述源数据中的源符号的数目,如果N2为所述第二源块的所述源数据中的源符号的数目,如果N3为所述第一源块与所述第二源块的交集中的源符号的数目且N3大于零,如果所述编码符号与所述源符号具有相同大小,如果Rl为所`接收符号的所述第一集合中的所接收符号的数目,如果R2为所接收符号的所述第二集合中的所接收符号的数目,那么,如果针对使得R1〈N1且R2〈N2的Rl和R2中的至少ー个值而言R1+R2=N1+N2-N3,那么确保对来自Rl个所接收符号的所述第一集合和来自R2个所接收符号的所述第二集合的所述源块对的所述联合的解码超出预定阈值概率。
28.根据权利要求27所述的方法,其中如果针对使得Rl< NI且R2 < N2的所有值而言R1+R2=N1+N2-N3,那么确保对所述源块对的所述联合的解码超出预定阈值概率。
29.根据权利要求27所述的方法,其中如果针对Rl< NI且R2 < N2的所有值而言R1+R2=N1+N2-N3,那么对所述源块对的所述联合的解码为确定的。
30.根据权利要求26所述的方法,其中由所述对的所述第一源块表示的所述源数据的所述部分可从由所述第一源块产生的第三编码符号集合恢复,其中所述第三集合中的编码符号的量不大于所述第一源块中表示的源数据的所述量。
31.根据权利要求26所述的方法,其中可由每一源块产生的独特编码符号的数目独立于所述源块的大小。
32.根据权利要求26所述的方法,其中在开始编码之前执行识别源符号的基块以及识别基块的源块中的至少ー者。
33.根据权利要求26所述的方法,其中在针对每一源符号识别基块之前及/或在针对所述源块中的每ー者确定所述经包封基块之前,产生至少ー些编码符号。
34.根据权利要求26所述的方法,其进ー步包括:基于哪些所接收符号已经接收到和/或在接收器处需要所述源数据的哪个部分和/或数据优先级偏好而确定表示解码器处的结果的接收器反馈;以及 输出所述接收器反馈,使得其可用于更改编码过程。
35.根据权利要求26所述的方法,其中由每一源块包封的所述基块中的源符号的所述数目如在所述源块中的两者或两者以上之间为独立的。
36.根据权利要求26所述的方法,其中经识别为基块的所述源符号在有序的多个源符号内为连续的。
37.根据权利要求26所述的方法,其中经识别为由源块包封的所述基块的源符号在所述有序的多个源符号内为连续的。
38.根据权利要求26所述的方法,其中解码进一歩包括: 针对每一所接收的符号而确定选自有限域的系数集合;以及 使用针对ー个以上所接收符号的所述系数集合来对来自所述ー个以上所接收符号或先前经解码的源符号的至少ー个源符号解码。
39.根据权利要求26所述的方法,其中用以恢复ー个或ー个以上源块的联合的符号运算的数目比由所述源块的所述联合表示的所述源数据的所述部分中的源符号的所述数目的平方少得多。
40.一种编码器,其对用于经由有可能引入错误或删除的通信信道而传输的数据编码,所述编码器包括:· 输入端,其用于接收由有序的多个源符号表示的源数据,且所述源数据可从经传输的编码符号恢复; 存储器,其用于多个基块中的至少一部分,其中每一基块包括所述有序的多个源符号中的ー个或ー个以上源符号的表示; 逻辑映射,其以机器可读形式而存储或可根据逻辑指令而产生,将多个源块中的每ー者映射到ー个或ー个以上基块,其中所述多个源块包含至少ー对源块,所述至少一对源块具有存在由所述对的两个源块包封的至少ー个基块以及针对所述对的每一源块而言由所述源块包封而不由所述对的另一源块包封的至少ー个基块的特性; 存储器,其用于经编码的块;以及 ー个或ー个以上编码器,每ー编码器对源块的源符号编码以形成多个编码符号,其中给定编码符号独立于来自不同于对源符号编码的所述源块的源块的源符号值,使得确保由所述源块对的联合表示的所述源数据的部分可从由所述对的第一源块产生的第一编码符号集合与由所述对的第二源块产生的第二编码符号集合的组合恢复,其中所述第一集合中的编码符号的量小于所述第一源块中的源数据的量,且所述第二集合中的编码符号的量小于所述第二源块中的源数据的量。
41.根据权利要求40所述的编码器,其中如果所述编码符号和所述源符号具有相同大小,那么所述第一集合中的编码符号的数目加上所述第二集合中的编码符号的数目不大于由所述源块对的所述联合表示的所述源数据的所述部分中的源符号的数目。
42.根据权利要求40所述的编码器,其中由所述对的所述第一源块表示的所述源数据的所述部分可从由所述第一源块产生的第三编码符号集合恢复,其中所述第三集合中的编码符号的量不大于所述第一源块中表示的源数据的所述量。
43.根据权利要求40所述的编码器,其中可由每一源块产生的独特编码符号的数目独立于所述源块的大小。
44.根据权利要求40所述的编码器,其进ー步包括: 输入端,其用于接收接收器反馈,所述接收器反馈表示正接收编码符号或已接收编码符号的解码器处的結果;以及 逻辑,其用于调整以下各项中的一者或一者以上:基块中的源符号的成员、包封源块中的基块的成员、每个基块的源符号的数目、源块中的符号的数目,和/或由源块产生的编码符号的数目,其中至少部分基于所述接收器反馈而进行所述调整。
45.根据权利要求40所述的编码器,其进ー步包括: 输入端,其用于接收表示对所述源数据的变化的数据优先级偏好的数据优先级偏好信号;以及 逻辑,其用于调整以下各项中的一者或一者以上:基块中的源符号的成员、包封源块中的基块的成员、每个基块的源符号的数目、源块中的符号的数目,和/或由源块产生的编码符号的数目,其中至少部分基于所述数据优先级偏好信号而进行所述调整。
46.根据权利要求40所述的编码器,其中由每一源块包封的所述基块中的源符号的所述数目如在所述源块中的两者或两者以上之间为独立的。
47.根据权利要求40所述的编码器,其中经识别为基块的所述源符号在所述有序的多个源符号内为连续的。
48.根据权利要求40所述的编码器,其中经识别为由源块包封的所述基块的源符号在所述有序的多个源符号内为连续的。
49.根据权利要求40所述的编码器,其中可针对源块而产生的独特编码符号的所述数目独立于可针对其它源块而产生的编码符号的所述数目。
50.根据权利要求40所述的编码器,其中针对给定源块而产生的独特编码符号的所述数目独立于由所述给定源块包封的所述基块中的源符号的所述数目。
51.根据权利要求40所述的编码器,其进ー步包括: 存储器,其用于针对多个所述编码符号中的每ー者而选自有限域的系数集合;以及 逻辑,其用于产生所述编码符号作为由单个源块所包封的ー个或ー个以上基块的源符号的组合,其中部分通过所述系数集合来界定所述组合。
【文档编号】H03M13/37GK103444087SQ201280012542
【公开日】2013年12月11日 申请日期:2012年2月10日 优先权日:2011年2月11日
【发明者】迈克尔·G·卢比, 帕扬·帕克扎德, 穆罕默德·阿明·尚克罗拉喜, 马克·瓦森, 洛伦佐·维奇萨诺 申请人:高通股份有限公司