CN101432969A - 前向纠错(fec)编码和流送 - Google Patents

前向纠错(fec)编码和流送 Download PDF

Info

Publication number
CN101432969A
CN101432969A CNA2006800289621A CN200680028962A CN101432969A CN 101432969 A CN101432969 A CN 101432969A CN A2006800289621 A CNA2006800289621 A CN A2006800289621A CN 200680028962 A CN200680028962 A CN 200680028962A CN 101432969 A CN101432969 A CN 101432969A
Authority
CN
China
Prior art keywords
source
code element
fec
source symbol
symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006800289621A
Other languages
English (en)
Other versions
CN101432969B (zh
Inventor
M·G·卢比
M·沃特森
M·A·肖克洛拉希
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Digital Fountain Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Fountain Inc filed Critical Digital Fountain Inc
Publication of CN101432969A publication Critical patent/CN101432969A/zh
Application granted granted Critical
Publication of CN101432969B publication Critical patent/CN101432969B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0042Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

在一种对来自通过信道从编码器接收到的接收码元的数据进行解码的数据解码器中,其中所接收到的数据包括删除并且包括源码元和修复码元以及其中该解码器在解码中使用其任何方形子矩阵都可逆的生成矩阵以使得所述解码器可在所述源码元和修复码元到达的同时执行解码操作,一种解码方法包括:在解码器存储器中表示至少部分地根据生成矩阵推导出的方程系;随着各源码元陆续被接收,在接收到所有源码元之前,将接收到的源码元代入方程系中;随着各修复码元陆续到达,使用解码器逻辑标识出要被用于求解方程系的修复方程;随着各源码元陆续到达,使用解码器逻辑计算方程的向量值;以及随着各修复码元陆续到达所述解码器处,将方程系转换为上三角形式。可将新颖方法用于交织和指定一大类FEC码的编码结构,排定包的发送等。

Description

前向纠错(FEC)编码和流送
相关申请的交叉引用
本申请要求提交于2005年6月10日、其全部内容出于所有目的通过引用包括于此的美国专利申请S/N.60/689,333的优先权且是其非临时申请。
技术领域
本发明一般涉及FEC编码,尤其涉及用于流送应用的FEC编码。
背景技术
近来,考虑在传输过程中使用FEC码来保护流送的媒体已成为常见惯例。当在包网络上发送时,其中包网络的示例包括例如通过诸如3GPP、3GPP2及DVB等小组标准化的因特网和无线网络,源流在其被生成或可用时被放于包中,并由此包被用于以源流所生成或可用的顺序将其传送给接收机。在对这类情景的FEC码典型应用中,FEC码被用来向包含源流的原始源包添加额外的修复包,并且这些修复包具有这样的属性,即在发生源包丢失时可使用接收到的修复包来恢复所丢失的源包中所含的数据。在其它示例中,可能发生部分包丢失,即接收机可能丢失包的部分而接收到该包的其它部分,由此在这些示例中整个或部分接收到的修复包可被用来恢复整个或部分丢失的源包。在又一实施例中,所发送的数据可能发生其它类型的损坏,例如,一些位的值丢失,由此修复包可被用来纠正这些损坏并对源包提供尽可能准确的恢复。在其它示例中,源流不一定是以离散的包来发送,而是可能代之以例如连续位流来发送。
有许多可被用来提供对源流的保护的FEC码的示例。Reed-Solomon码是通信系统中用于差错和删除(erasure)纠正的公知码。对于例如包数据网络上的删除纠正,Reed-Solomon码的一种公知有效实现是使用Cauchy或Vandermonde矩阵,这在以下文献中进行了描述:L.Rizzo,“Effective Erasure Codes for Reliable ComputerCommunication Protocols”,Computer Communication Review,27(2):24-36(1997年4月)(以下称为“Rizzo”)以及Bloemer等人,“An XOR-Based Erasure-ResilientCoding Scheme”,Technical Report TR-95-48,International Computer ScienceInstitute,Berkeley,California(1995)(以下称为“XOR-Reed-Solomon”)。FEC码的其它示例包括诸如分别在美国专利No.6,307,487(以下称为“Luby I”)和美国公布的专利申请No.2003/0058958(以下称为“Shokrollahi I”)中描述的LDPC码、连锁反应码及多级连锁反应码,出于所有目的将其包括于此。
对Reed-Solomon码的变体的FEC解码过程的示例在“Rizzo”和“XOR-Reed-Solomon”中进行了描述。在这些示例中,一旦接收到足够的源和修复数据包就应用解码。该解码过程可以是计算密集的,并且取决于可用的CPU资源,相对于块中媒体所跨度的时间长度,这可能会花费相当的时间来完成。接收机在计算从开始接收媒体流到媒体流的播放之间所需的延迟时必须将解码所需的时间长度考虑在内。由于解码造成的该延迟被用户感知为从他们请求一特定媒体流到开始回放之间的延迟。因此需要减小这种延迟。
在许多应用中,包被进一步细分为在其上应用FEC过程的码元。码元可具有任意大小,但通常码元的大小至多等于包的大小。下文中,我们将包括编码块的码元称作“源码元”,而将在FEC过程中生成的码元称为“编码码元”。对于一些FEC码,特别是Reed-Solomon码,随着每个源块的编码码元的数目的增长,编码和解码时间随之不切实际地增长。因此,实际上,对于每个源块所能生成的编码码元的总数通常有一上边界,例如255。由于码元是被放于分开的包有效载荷中的,所以这对源块编码的最大长度设了一实际的上边界,例如,如果包有效载荷至多为1024字节,则经编码的源块至多可以为255KB(千字节),当然这也是该源块自身大小的上边界。
其它考虑因素,诸如能够足够快地将源块解码以跟上源流送的速率、将由FEC解码所引入的解码等待最小化、以及在FEC解码期间的任意时间仅使用该接收设备上可用CPU的一小部分等,都是问题。
因此,需要具有经过改进的过程和装置。
发明内容
本发明的实施例提出了用以在从经FEC编码的源块接收包的同时执行与解码相关联的计算的重要部分的方法。因此解码延迟,即在所恢复的源块可用之前接收到源块的最后一个包之后的延迟,被降低到执行该计算的剩余部分所要求的程度,该剩余部分一般是总解码工作的一小部分。
在一些实施例中,使用了对来自通过信道从编码器接收到的码元的数据解码的数据解码器,其中所接收到的数据可包括删除(erasure)并可包括源码元和修复码元并且其中解码器在解码中使用其任意子矩阵都不可逆的生成矩阵从而使得该解码器能够在源码元和修复码元到达的同时执行解码操作,并且提供了一种用于解码的方法,包括:在解码器存储器中表示至少部分地从生成矩阵推导出的矩阵系统;在接收到所有源码元之前当接收源码元时将接收到的源码元代入该方程系;使用解码器逻辑来标识将在修复码元到达时被用于解该方程系的修复方程;当源码元到达时使用解码器逻辑计算方程的向量值;以及当修复码元到达解码器时将该方程系转换为上三角形式。
在一些实施例中,使用了新方法来交织2D Reed-Solomon码及其它相关码以获得各种优点。一些实施例可使用一种新的一般性简明机制来指定一大类FEC码的编码结构。
实施例还提出了一些新的方法用以排定源块的包发送。该方法的一些益处包括最小化FEC端对端等待、最小化FEC接收机等待、以尽可能平稳的速率传输FEC编码流、使以源块的包发送的数据尽可能在时间上均匀展开、以及FEC接收机上的简单逻辑要求。
实施例还提出了用于交织源块的新方法。这允许在传输过程中各个源块内的丢失或差错可分散在比不使用交织情形下更大的时间长度上,并允许接收机所感知的解码等待被降低到最小同时还维持源数据的原始发送顺序。
结合附图的以下具体描述将提供对本发明的本质和优点的更佳理解。
附图说明
图1是根据本发明的一个实施例的通信系统的框图。
图2是示出了接收机等待的示图。
图3A是例示了接收机等待的分量的图示。
图3B是例示了解码过程中用于FEC的CPU利用率的图示。
图4是根据本发明的一个实施例可用的解码矩阵的一个示例。
图5是根据本发明的一个实施例的解码过程的一部分的流程图。
图6是根据本发明的一个实施例的解码过程的一部分的另一流程图。
图7是解码步骤当中的一个步骤的变形的流程图。
图8A示出了源块处理的不同阶段。
图8B示出了对连续源块的处理的不同阶段之间的关系。
图9是用于FEC发送器的源初始过程的流程图。
图10是用于FEC发送器的源中间过程的流程图。
图11是用于FEC发送器的源最终过程的流程图。
图12是用于FEC发送器的源修复过程的流程图。
图13是用于FEC发送器的流程图。
具体实施方式
在此所述实施例的提供了用以对通过网络接收到的数据执行解码的新方法,诸如在从经FEC编码的源块接收包的同时解码以降低解码延迟。下文中,承载数据的网络被假定为基于包以便简化这里的描述,但应认识到本领域的技术人员可容易地知道如何将在此所述的过程和方法应用到诸如连续位流网络等其它类型的传输网络。下文中,FEC码被假定对所丢失的包或包内所丢失的部分数据提供保护以简化这里的描述,但应认识到本领域的技术人员可容易地知道如何将在此所述的过程和方法应用到诸如位翻转等其它类型的数据传输损坏。
图1是使用连锁反应编码的通信系统100的框图。在通信系统100中,输入文件101或输入流105被提供给输入码元生成器110。输入码元生成器110从输入文件或输入流生成一个或多个输入码元(IS(0)、IS(1)、IS(2)...)的序列,其中每个输入码元具有值和位置(图1中被标示为括号内的整数)。输入码元的可能值,即其字母表通常是一具有2M个码元的字母表,从而使得每个输入码元对输入文件的M个位进行编码。M的值通常是使用通信系统100来确定的,但是通用系统可包括对输入码元生成器110的码元大小输入从而使M可根据使用情况而变化。输入码元生成器110的输出被提供给编码器115。
键生成器120生成用于将由编码器115生成的每个输出码元的键。每个键可根据在Luby I或在Shokrollahi I中描述的方法之一生成,或根据任何相当的方法来生成,只要这些方法确保不论由哪一键生成器生成,为同一输入文件或流中的数据块生成的键中的大部分是唯一的即可。例如,键生成器120可使用计数器125的输出、唯一流标识符130、和/或随机生成器135的输出的组合来产生每个键。键生成器120的输出被提供给编码器115。在其它示例,例如一些流送应用中,键的集合可以是固定的并可被再次用于流中的每个数据块。在一典型实施例中,可生成的键的数目是由键生成器的分辨率而非由输入文件或流的大小或其它特性来指定的。例如,如果输入预期在万个码元的数量级或更少,则键分辨率可以为32位以允许高达40亿个唯一键。这些相关数字的结果是根据这些键来编码的编码器能够为输入的一万个码元生成40亿个唯一输出码元。实际上,大多数通信系统只是400,000个码元中丢失一个码元而不会丢失所有码元,所以仅需生成远少于40亿个的输出码元,因此可能的键的数目可被视为实际是无限的且无须重复,并且对键的两个独立选择抢夺同一键的概率小至趋于零。然而,如果出于一些原因有这种情况,则可增大键生成器的分辨率从而让使用这些键的过程就像有无穷的键供应。
根据键生成器120提供的每个键I,编码器115从输入码元生成器所提供的输入码元生成具有值B(I)的输出码元。每个输出码元的值是基于它的键和基于输入码元中的一个或多个码元的函数来生成的,这一个或多个输入码元在此被称为该输出码元的“相关联的输入码元”或就被称为其“关联(associate)”。通常但并不总是如此,对于输入码元和输出码元,M是相同的,即它们都对相同数目的位进行编码。
在一些实施例中,输入码元的数目K被编码器用来选择关联。如果事先不知道K,诸如输入是流且K在该流中的每个块之间可以变化的这种情形,K可以仅是一估计。值K还可被编码器115用来分配输入码元的存储。
编码器115将输出码元提供给发送模块140。发送模块140也被从键生成器120提供每个此类输出码元的键。发送模块140发送输出码元,并且取决于所用的键控方法还可将关于所发送的输出码元的键的一些数据,通过信道145发送到接收模块150。信道145被假定为删除信道,但这并不是通信系统100正确运行的要求。模块140、145和150可以是任何合适的硬件组件、软件组件、物理介质、或它们的任意组合,只要发送模块140适于将输出码元和关于它们的键的任何所需数据发送到信道145且接收模块150适于从信道145接收码元和潜在可能的关于它们的键的一些数据。如果K值被用于确定关联,则K值可通过信道145被发送,或可通过编码器115和解码器155的协定来提前设置。
信道145可以是实时信道,诸如通过因特网的路径或从电视发射机到电视接收方的广播链路或从一点到另一点的电话连接,或者信道145可以是存储信道,诸如CD-ROM、盘驱动器、Web站点等。信道145甚至可以是实时信道与存储信道的组合,诸如在以下情形中形成的信道:一个人将来自个人计算机的输入文件通过电话线发送到因特网服务供应商(ISP)、该输入文件被存储在Web服务器上且随后通过因特网被发送到接收方。
在信道145包括包网络的情况下,通信系统100将不能假定任意两个或多个包的相对顺序在通过信道145时得以保持。因此,使用上述键控方案中的一个或多个来确定输出码元的键,而不一定是由输出码元退出接收模块150的顺序来确定。
接收模块150将输出码元提供给解码器155,并且接收模块150接收到的关于这些输出码元的键的任何数据被提供给键生成器160。键生成器160重新生成所接收到的输出码元的键并将这些键提供给解码器155。解码器155使用键生成器160提供的键并结合相应的输出码元来恢复输入码元(再次为IS(0)、IS(1)、IS(2)...)。解码器155将恢复的输入码元提供给输入文件重装器165,由其生成输入文件101的副本170或输入流105的副本105。
媒体流送应用
当在媒体流送应用中使用时,形成源媒体流的源包有时是以被称为源块的组来采集的。例如,源块可以是跨度一固定时间长度的一组源包,并且例如Reed-Solomon删除码可被独立地应用到这些源块以生成修复包,并将其与该源块的原始源包一起发送到接收机。
在发送器处,当源包到达时源流被连续地分割为源块,并且随后为每个源块生成和发送修复包。将FEC码的使用所增加的总的端对端延迟最小化是较优的,特别是对于实况或交互流送应用,因此如果FEC方案的总体设计使得源包被发送前在发送器处被尽可能小地延迟、并且源块的所有源包和修复包被以尽可能小的总延迟发送,则是较优的。如果FEC编码流的速率尽可能的平滑,即FEC编码流速率具有尽可能小的可变性或者至少原始源流中已经存在的任意可变性没有放大,则是较优的,因为这样会使FEC编码流带宽使用更加可预测并且使得对网络和其它可能争用的流的影响最小化。如果一源块以包发送的数据在该源块的包被发送的时间段上尽可能均匀地展开,则这也是较优的,因为这提供了对抗脉冲串丢失的最佳保护。如果接收机处的FEC逻辑尽可能简单,即尽可能地避免同时接收来自多个源块的包,这也是较优的。因此,如果FEC发送器尽可能地在发送来自后续源块的任何包之前发送来自一个源块的所有包,则是较优的。
在接收机处,如果包被丢失或在具有差错的情况下被接收(可使用例如CRC检查来检测和丢弃它们),则在假定已经接收到足够的修复包的情况下,可使用这些修复包来恢复丢失的源包。
在一些应用中,包被进一步细分为对其应用FEC过程的码元。对于一些FEC码,特别是Reed-Solomon码,随着每个源块的编码码元数目的增长,编码和解码时间随之不切实际地增长,因此对于每个源块所能生成的编码码元的总数通常有一上边界。由于码元被放于不同的包有效载荷中,所以这对源块编码的最大长度设了一实际的上边界,当然这也对源块自身的大小设了一上边界。
对于许多应用,当要在一较长时间段上提供保护时或当媒体流送速率较高时,对超过最大源块大小的数据提供保护会是有利的。在这些情形中,使用比最大源块大小短的源块并随后交织来自不同源块的源包提供了一种将来自单个源块的源包展开在更大时间段上的解决方案。
然而,另一关注点是能够足够快地将源块解码以跟上源流送速率,以最小化由FEC解码引入的解码等待,并且在FEC解码过程中的任一时刻仅使用接收设备上可用CPU的一小部分。此外,不改变源包的原始发送顺序也是重要的。因此,需要使用一种源块交织,它遵守源包的原始发送顺序并允许每个源块的FEC解码尽可能均等地在时间上展开并最小化FEC解码等待。这里所述的各实施例提供了这些优点中的一个或多个。
术语
FEC码
在这里的描述中,我们假定要编码的数据(源数据)已被分裂为等长“码元”,它们可为任意长度(最短至单个位)。码元可通过数据网络以包来承载,其中每个包中明确地承载或包含整数个码元。在一些情形中,源包可能不是码元长度的整数倍,在这些情形下包中的最后一个码元可能被截断。在该情形中,出于FEC编码的目的,该最后一个码元被隐含地假定用例如0值位等固定模式的位来拉长,以使得即使这些位没有被承载于该包中但接收机仍可将该最后一个被截断的码元填充为一完整码元。在其它实施例中,该固定模式的位可被放在该包中,由此将这些码元有效地填充至等于该包的长度。码元的大小通常可用位来衡量,其中码元具有M个位的大小并且该码元选自2M个码元的字母表。非二进制数字也是可预想的,但由于二进制数更加常用,所以是优选的。
这里我们考虑用于流送的FEC码通常是系统FEC码,即源块的源码元被包括作为源块的编码的一部分并由此来发送源码元。然后系统FEC码从源码元的源块生成一些修复码元,而该源码元和修复码元的组合是针对该源块所发送的编码码元。FEC码中的一些具有经济地根据需要来生成修复码元的能力。这些码被称为“信息加性码”和“喷泉码”,这些码的示例包括“连锁反应码”和“多级连锁反应码”。诸如Reed-Solomon等其它FEC码实际上仅可生成有限数量的修复码元。
有许多其它方法可用来承载包内的码元,虽然为简便起见以下描述使用了该示例,但这并不意味限制或详尽。在以下描述的上下文中,术语“包”并不意味着局限于作为单个数据单位来发送的字面意思。而是意味着包括更宽的概念,即定义了可以作为或者不用作为单个数据单位来发送的码元和部分码元的逻辑分组。
也还有除码元丢失以外的数据损坏形式,例如,传输中码元改变了它们的值或以其它方式被损坏,以下所述的方法也同样可应用于它们。因此,虽然以下描述将常常描述码元丢失,但这些方法也可同样地应用于其它类型的损坏以及FEC删除码以外其它类型的FEC码,诸如FEC纠错码。
线性变换
为了示出某些结构和示例,我们将利用环的数学概念。如本领域的技术人员所公知的,环是其上定义了满足分配律的加法和乘法这两种运算的集合。此外,仅考虑加法的该集合构成了阿贝尔群(abelian group),即加法的结果与被加数的顺序无关,对于加法有一中性元素0,以及对于每个元素都存在另一元素以使得这些元素的和为0。其它要求是乘法具有中性元素1,以使得任何元素与1的乘积不会改变该元素的值。对于普通环而言,我们不要求任何非零元素都具有乘法逆元素,也不要求乘法是可交换的。然而当满足了这两个条件时,则我们将该环称为“域”。此概念是代数学中的一个标准概念。
映射是可以硬件、软件、数据存储等来实现的一种逻辑构造,它将相同大小的码元对映射到该大小的另一码元。我们用“”来标示该映射,并用ST来标示对码元对(S,T)的这种映射的映像。这种映射的一个示例是逐位的异或(XOR)。
这里使用的另一概念是一特殊类型的集合对码元的“动作”。假定A是具备了可交换加法运算(“+”)的集合,该加法运算具有中性元素并且对于每一元素都包含其加法逆元素。这样一个集合通常也被称为阿贝尔群。该群对码元集合的“动作”是将由群元素r和码元S组成的对映射为另一码元的映射。当该映射在群中遵守加法时,即对于群A中的每对元素a和b,都有 ( a + b ) * S = a * S ⊕ b * S ,我们用r*S来标示这种映像。如果A是环且该动作还在A中遵守乘法,在乘法运算符在A中为“·”的情形中即(a·b)*S=a*(b*S),则我们将该动作称为“运算”。
对码元的环或域操作的示例是很多的。以下提到了少量示例。该示例列表仅用于说明的目的,而不应被考虑为穷尽性列表,也不应被理解为限制本发明的范围。
作为示例,由0和1组成的域GF(2),其中加法为异或(XOR)且乘法为逻辑运算AND(与),通过定义1*S=S且0*S=0来对码元集合进行运算,其中S标示任意码元而0标示全部由0组成的码元。
“线性变换”的概念和该过程的矩阵公式可参照环对码元的运算的概念来定义。对于给定的整数k和n,由该运算导出的线性变换使用具有指定环中的项的矩阵空间将k个码元的向量映射为n个码元的向量。环R上的矩阵是项的2维集,其中每项都属于R。如果矩阵具有n行和k列,则其通常被称为n×k矩阵。对(n,k)被称为该矩阵的“格式”。具有相同格式的多个矩阵可使用底层域或环中的加法和减法来被作加或作减。如所公知的,格式(n,k)的矩阵可被乘以格式为(k,m)的矩阵。
在运算中,如果M标示n×k矩阵,则M[i,j]标示M的位置(i,j)上的项,并且如果该矩阵将向量(S1,S2,...,Sk)变换为向量(E1,E2,...,En),则等式1中所示的关系有效。
对于从1到n的所有i, E i = M [ i , 1 ] * S 1 ⊕ M [ i , 2 ] * S 2 ⊕ . . . ⊕ M [ i , k ] * S k     (式1)
如果S标示包括S1,S2,...,Sk的列向量,则E标示码元E1,E2,...,En的列向量,则E=M*S。
这种线性变换在各种应用中是常见的。例如,当使用线性FEC码来编码源块时,S可以是要编码的该源块的源码元,E可以是从S生成的针对该源块所发送的编码码元,而M可以是该FEC码的生成矩阵。在其它应用中,例如在使用了系统FEC码的情形中,E可以是从S生成的修复码元,而M可以是描述该修复码元对源码元的依存性的矩阵。在另外一些应用中,S可以是在传输后接收到的编码码元的向量,而E可以对应于完全或部分未知的源码元的集合,而M可描述E与S之间的关系。这些示例包括在存在删除或存在差错情况下解码Reed-Solomon码时的情形。后者在授予Shokrollahi等人的题为“Efficient List Decoding of Reed-SolomonCodes for Message Recovery in the Presence of High Noise Levels(用于在存在高噪声电平情形下进行消息恢复的Reed-Solomon码的高效列表解码)”的美国专利No6,631,172号中进行了描述。
系统Reed-Solomon码的矩阵公式表示一组对源码元和修复码元都成立的联立方程。具体而言,在修复码元的情形中,每个方程将编码码元表示为源码元的线性组合,而在源码元的情形中表示为恒等方程。所以,有多少源码元和修复码元就有多少数目严格相等的方程。
这里所述的方法和过程可同样应用到Reed-Solomon码或其它FEC删除码或FEC纠错码的其它公式。
流送
出于为源流提供FEC保护的目的,源流可以是一个或多个逻辑流的组合,其示例有音频RTP流和视频RTP流的组合、MIKEY流和RTP流的组合、两个或多个视频流的组合、以及控制RTCP话务和RTP流的组合。当例如源位流、源码元流、或源包流格式的源流到达FEC发送器时,FEC发送器可将该流缓冲为源块并从源块生成修复流。FEC发送器排定并发送源流和修复流,例如以包来通过包网络发送。FEC编码流是经过组合的源流和修复流。FEC接收机接收可能由于损耗或位丢失而已经损坏的FEC编码流。FEC接收机尝试重构源流的原始源块以及排定接收机上的该原始源流并使其可用。
对于流送应用,具有作为设计如何使用FEC码来保护源流的输入的若干关键参数,以及具有通常较为重要的要最优化的若干个关键度量。
该设计中的两个关键输入参数是保护期和保护量。源块的发送器保护期是在其间发送从该源块生成的码元的持续时间。源块的保护量是为该源块发送的FEC修复码元的数目,它被表示为该源块中源码元的数目的分数或百分比。例如,如果保护期是2秒且保护量是20%,以及该源块中有10,000个源码元,则该源块的10,000个源码元和2,000个修复码元被发送分散于2秒的时间窗上。
在一源块与下一源块之间,每个源块的保护期和保护量两者都可变化。例如,当一源块优选地不在源流中的某些源包之间跨越时,例如当第一个包是MPEG2视频流中图像组(GOP)的最后一个包而相继的第二个包是下一GOP的第一个包时,则源块可能在第一个包之后并在第二个包之前被终止,即使这发生在保护期结束之前也是如此。这允许FEC保护块与视频编码块对准,这样具有许多优点,其中包括由于视频缓冲和FEC缓冲造成的接收机等待可被最小化这一优点。在其它应用中,出于一些原因保持每个连续的源块具有相同的保护期和/或源块大小是有利的。在以下许多描述中,出于简便假定每个后续的源块具有相同的保护期和保护量。对于本领域的技术人员而言,在阅读本公开之后应该明晰这并不是限定,因为根据该阅读可容易地确定在保护量或保护期或两者在源块之间变化时以及在源块大小在源块之间变化时如何应用这里所述的过程和方法。
为了简化一些后续讨论,通常假定原始流的源码元到达以稳定速率执行FEC编码的FEC发送器,并且一旦FEC接收机开始在接收机上得到源码元,则FEC接收机就以同一稳定的速率得到后续源码元,其中假定在从其接收到源码元的第一个源块中没有源码元损失并且在每个后续源块中编码码元的最大可能损失允许成功进行FEC解码。该简化的假设不是稍后所述的过程和方法的操作或设计所固有的且并不意味着以任何方式将这些过程限于该假设,而仅是作为用以简化对过程和方法的属性的一些描述的工具被引入。例如,对于可变速率流,相应的条件是FEC接收机以与源码元到达FEC发送器的速率相同或近似相同的速率得到源码元。
要优化的一些重要的关键度量包括FEC发送器等待,它是由FEC发送器引入的等待。最小化FEC发送器等待对于诸如实况视频流送等一些应用或诸如视频会议等交互应用是需要的。总体设计中有助于最小化FEC发送器等待的一个方面是FEC发送器以源码元到达该FEC发送器的顺序来发送源码元。最小化FEC发送器等待的其它设计方面在稍后描述。
另一重要度量是FEC接收机等待。如图2所示,这是从接收机连接或请求该流并第一次开始接收来自该流的编码码元时直到FEC接收机第一次得到来自该流的源码元时之间的时间。一般而言,最小化FEC接收机等待是合乎需要的,因为这使得在码元被FEC接收机解码和传递之前用于存储码元的接收机存储器要求被最小化,并且这也使得流被连接时与该流第一次开始可用,例如用于视频流回放时之间的时间量最小化。最小化FEC接收机等待的一个重要方面是FEC发送器保持源码元的原始发送顺序,但如我们以下所描述的,有许多其它重要的设计方面对FEC接收机等待具有较大影响。
FEC接收机等待通常包括多个分量。对于被分割为连续的源块的流,这些分量的一个示例在图3A和3B中被示出。图3A示出了每个保护期为单个源块,并且该示例示出了接收机在该源块开始时连接该流的情形。该示例中FEC接收机等待的两个分量是保护期和解码等待。接收机保护期是FEC接收机在其间缓冲接收到的来自该源块的编码码元的时间。注意,如果发送器与接收机之间的信道在每个位、字节、码元或包从发送器传播到接收机所用的时间量上没有任何变化,则发送器保护期与接收机保护期相同。因此,由于传递过程中网络定时变化,实际上同一源块的发送器保护期可能会与接收机保护期有所不同。
这里为了简化说明,我们在此后假定每个源块的发送器保护期与接收机保护期相同,并且将术语“保护期”同义地用于发送器保护期和接收机保护期,即我们假定网络传递时间对于所有数据是相同的,并且本领域的技术人员在阅读该公开之后可对这里所述的方法和装置作出必要的改动以将由于网络传递波动所引起的发送器与接收机保护期之间的差异考虑在内。
FEC接收机等待的保护期分量是不可避免的,因为即使在第一个源块中没有任何源码元损失,也仍需在至少该保护期内延迟以使得源码元可用从而确保当后续源块中有编码码元损失时所有后续码元的平稳源码元传递。在该保护期期间,该源块的一些或大部分或所有FEC解码可与编码码元的接收同时进行。在保护期结束时,可能会有在该源块的第一个源码元从FEC接收机得到之前发生的额外FEC解码,并且这段时间被标记为图3A中的解码等待。另外,甚至在第一个码元可用之后,也可能会有在该源块的第二个及后续码元可用之前发生的额外FEC解码。为了简便起见,这种额外FEC解码未在图3A中示出,并且假定在该示例中具有足够的可用CPU资源以足够快的速率来解码第一个码元之后的所有源码元。
图3B示出了对应于图3A中所示示例的两条潜在可能的FEC解码CPU利用率曲线。在图3B中所示的两条曲线的一条中,在每个时间点上用于FEC解码的CPU利用率相同,即CPU利用率是均匀分布的。这是理想的CPU利用率曲线,因为它在每个时间点上可预测地使用相同量的CPU资源,并且在假定解码整个源块需要相同量的总CPU资源的情况下使最大CPU资源最小化。在图3B所示两条曲线的另一条中,在每个时间点上用于FEC解码的CPU利用率并不相同,特别是接近该源块的编码码元的接收结束和接收刚结束之后,CPU利用率显著高于其它时间点上的CPU利用率。这不是理想的CPU利用率曲线,因为在某些时间点上CPU资源使用率形成尖峰,而这些时间点可能是诸如视频播放器等其它过程正在需求CPU时的时间点,由此增大了导致例如视频流的回放中出现毛刺(glitch)的可能性。因此,用于保护流的FEC方案的设计是要提供一种FEC解码器在时间上尽可能平稳和均匀地使用CPU的方案。作为示例,设计准则可以是在最差情形的编码码元损失模式下,在FEC解码过程的任意时间点上的最大CPU利用率低于某一阈值,例如使用至多10%的CPU。
当接收机碰巧在源块的中间连接该流时,则只要FEC发送器保持了源包的原始发送顺序,那么当来自该第一部分源块的源码元没有损失时FEC接收机等待可以与保护期加解码等待一样小。因此,FEC发送器保持源码元的原始发送顺序是合乎需要的。
FEC流送方案还可被用于最小化FEC端对端等待,它是在于发送器上应用FEC编码前源包准备流送就绪时与接收机上已经应用FEC解码后源包可用于回放时之间由FEC的使用所引入的的最差情形的总体等待。
FEC流送方案还可被用于将在使用FEC时发送速率的波动最小化。它的一个益处是,在包网络内由于当该流的发送速率的峰值在某些点上与有限容量的该网络中其它话务中的峰值相吻合时所引起的拥塞或缓冲器上溢,具有波动的发送速率的流更容易受到包损失的影响。至少,FEC编码流速率的波动情况不应比原始源流速率的波动情况更差,并且优选地当向原始源流应用了更多的FEC保护时,FEC编码流速率的波动变小。作为一种特殊情形,如果原始流以恒定速率发送,则FEC编码流也应以尽可能接近恒定的速率来发送。
FEC流送方案应在FEC接收机上提供尽可能简单的逻辑。这在许多环境背景中是较为重要的,因为FEC接收机会被装配成具有有限计算、存储器以及其它资源能力的设备。此外,在一些传输过程中可能出现严重码元损失或损坏的情形中,FEC接收机必须从在条件改善时只有极少或没有上下文来理解在该流中的何处继续进行接收这样的灾难性损失或损坏情景中恢复。因此,FEC接收机逻辑越简单和越稳健,FEC接收机将能够越快速和越可靠地再次从FEC编码流的接收开始恢复源流的源码元并使其可用。
FEC流送方案的总体理想特征中的一部分可总结如下:
1.FEC发送器应保持源流的原始发送顺序。
2.FEC解码器应尽可能平稳地分布CPU利用率。
3.FEC接收机应将被定义为开始接收FEC编码流与FEC解码之后源流的第一个数据可用之间的延迟的FEC接收机等待最小化。
4.FEC发送器/接收机应最小化FEC端对端等待,即由使用FEC所引入的包括FEC发送器等待和FEC接收机等待的总等待。
5.FEC编码流(包含为该流所发送的所有数据)的发送速率应尽可能平稳,并且应至少和原始源流一样平稳。
在以下章节中,我们描述将具有这些特征中的部分或全部的方法和装置。
递增解码
在该章节中,我们描述从接收到的一源块的编码码元恢复该源块丢失的源码元的递增FEC解码过程。在该描述中,我们假定使用了系统FEC码,其中从源码元的源块生成的码元被称为修复码元并且术语“编码码元”被用于表示为源码元或修复码元中任一的码元。
该过程在接收编码码元的同时更新一列线性方程,其中方程数为接收到的编码码元的数目且变量数是源码元的数目。每个方程对应于接收到的编码码元之一。在该过程的开始,方程数为0,这反映了还没有接收到编码码元这一事实。
我们描述用于在接收源码元和修复码元的同时部分地完成解码过程的技术。该技术是借助示例就基于Vandermonde或Cauchy矩阵的系统Reed-Solomon码来描述的,但也可同样地应用于以矩阵形式描述的任何线性变换。
基于Vandermonde或Cauchy矩阵的(n,k)Reed-Solomon码运算如下:
GF(2q)上的n×k生成矩阵M被构造成满足以下方程2,其中E是包括编码码元的大小为n的列向量而S是包括源码元的大小为k的列向量。对于系统码,我们另外假定M的前k行构成单位矩阵。
E=M*S              (方程2)
基本运算是关于基域GF(2q)的元素。例如,在q=8的情形中,每个域元素可被表示为单字节的数据。在许多情形中,如在“Rizzo”中所描述的,编码和解码两者将域元素如下分组是经济有效的。假定源块包括k*T个域元素,其中T是正整数。则该源块的域元素可被分割为各自具有T个域元素的k个组,并且每组可被视为一个码元。然后如所述的(例如在“Rizzo”中),在FEC编码过程中跨k个源码元地将同一矩阵向量乘法运算应用到这些源码元的T个位置的每一个从而生成n个编码码元,由此使得能够仅计算一次应用于T个位置中的每一个的运算序列。类似地,在FEC解码过程中,可仅计算一次解码运算序列并跨接收到的编码码元地将该运算序列应用于编码码元的T个位置的每一个以恢复原始的k个源码元。
为了恢复原始的k个源码元,必须接收到编码码元中的至少k个(假定相同大小的码元并且没有关于原始码元的其它信息可用)。矩阵M’由M当中对应于将用于解码的k个接收到的编码码元的k行构成而列向量E’包括将用于解码的k个接收到的编码码元。然后解码包括如方程3所描述地基于E’和M’对S进行求解。
E’=M’*S            (方程3)
对于Reed-Solomon码,M的构造使得M’总是可逆,这使得能够从任意k个编码码元(对于其它FEC码和线性变换,为了求解S需要接收到大于k个编码码元是可能的)的接收进行解码。如果所有接收到的源码元是在包括于E’中的这k个编码码元当中,则求解方程3以得到S的FEC解码的计算量被最小化。
基于方程3求解S所需的计算大部分可与编码码元的到达同时如下执行。
令m为接收到的源码元的个数。然后,由于我们描述的是系统性线性变换,所以M’的前m行各自包含一单项。我们可将E’和S以及M’的行和列置换以使得前m行和列对应于所接收到的源码元,则M’的左上部的m×m子矩阵是单位矩阵而M’的右上部的m×(k-m)子矩阵是0矩阵。所以,M’具有如图4所示的格式,其中Im是m×m单位矩阵,0是m×(k-m)全0矩阵,A是(k-m)×m矩阵以及B是(k-m)×(k-m)矩阵。M’的上m行被写成Im|0而。M’的下(k-m)行被写成A|B,从而我们具有以下方程4-5,E1是E的前m项(接收到的源码元),E2是E的后(k-m)项(接收到的修复码元),S1是S的前m项(接收到的源码元),而S2是S的后(k-m)项(待求解的未知源码元)。
E1=(Im|0)*S=S1              (方程4)
E2=(A|B)*S=A*S1+B*S2      (方程5)
所以,
B*S2=E2-A*E1                (方程6)
由此,
S2=B-1*(E2-A*E1)              (方程7)
使用同时解码的实施例依赖于在源码元到达时可计算出A*E1这一事实。矩阵A具有与已删除的源码元相同数目的行,因为我们将矩阵M’选成具有精确的k行。
对于图5、6和7中所示以及以下描述的解码方法的实施例的描述,假定要接收的源块的所有源码元在接收到该源块的任何修复码元之前被接收,并且所有编码码元以递增索引的顺序被接收,其中源码元从1索引到k而修复码元从k+1索引到n。然而,编码码元删除的量和模式对于FEC解码器而言为未知,因此计算出A’*E1,其中A’对应于M最后的n-k行与M的对应于m个接收到的源码元的列相交的那部分。
在图5中,示出了可在源码元到达时使用的过程。在步骤505将变量m初始化为0以指示还没有源码元到达,并且在步骤505还将n-k个码元的向量r初始化为全0码元。在步骤510,作出一测试以检查是否有另一源码元以及是否不再有源码元,然后源码元的接收行进到如步骤520中所指示的在图6中描述的过程。如果有另一源码元,则在步骤530接收到码元值e和索引j。在步骤540,接收到的源码元的数目m递增1并且向量COL被更新以跟踪第m个接收到的源码元的索引。在步骤550,通过添加向量M[k+1,...,n:j]与接收到的码元值e的乘积来更新码元向量r,其中M[k+1,...,n:j]对应于M的第j列的后n-k行。因此,当该过程最终到达图5中的步骤520时,修复码元向量r等于A’*E1
在图6中,示出了可在修复码元到达时使用的过程。在步骤605将变量r初始化为0以指示还没有修复码元到达。在步骤610检查已到达的编码码元,即m个源码元和r个修复码元的总数是否等于该源块中源码元的总数k。如果已经到达了k个编码码元,则能够进行解码并如图6的步骤S620所指示地行进到图7。如果已到达的少于k个编码码元,则该过程行进到图6中的步骤630,其中该过程检查另一修复码元的接收。如果没有其它的修复码元,则如步骤640中所指示的,不能够进行解码。如果有另一修复码元,则在步骤650接收到码元值e和索引j。在步骤660,接收到的修复码元的数目r递增1且向量ROW被更新以跟踪第r个接收到的修复码元的索引。在步骤670,将码元向量e中的第r项设为e-r[j-k],其中r[j-k]存储对应于A’*E1中索引为j的修复码元的码元值,因此当该过程最终到达图6中的步骤620时,码元向量e等于E2-A*E1
在图7中,描述了该过程的计算B-1*e=B-1*(E2-A*E1)=S2的最后步骤,即求解未接收到的源码元。在图7中的步骤705到760,确定矩阵B。在步骤705,将i、j、和src的值全部初始化为0,其中i被用来索引k个源码元,j被用来跟踪到目前丢失的源码元的数目,而src是接收到的源码元的索引阵列中的索引。并且COL[m+1]也被设为0以简化随后的逻辑,其中COL是如图5中计算出的m个接收到的码元的索引阵列。在步骤710,i的值递增1,并且在步骤720,解码过程包括检查是否已考虑了所有源码元,如果没有则处理继续到步骤730,其中该过程检查i是否是接收到的源码元的索引,即是否i=COL[src]。如果i是接收到的源码元的索引,则在步骤750跳过该源码元,但如果i是一丢失的源码元的索引,则在步骤740将该索引保存在丢失源码元值的向量MISS中。当已检查了所有k个源码元以查看它们是否丢失且将它们的索引恰当地添加到向量MISS之后,在步骤760,该过程将矩阵B构造为M的由接收到的修复码元的向量ROW索引的r行与M的由丢失源码元的向量MISS索引的r列的相交部分。在步骤770,计算B的逆B-1,并随后在步骤780将丢失的源码元计算为B-1*e,此时如步骤790所指示的,解码完成。
以上过程有许多变形。例如,修改该过程以使得源包和修复包按任意顺序到达在阅读该公开之后应是明了的。在阅读该公开之后,本领域的技术人员将能够鉴别在此示教的方法的许多其它变形。以下将对以上过程的其它变形和增强进行解释。
注意在刚才描述的过程中,我们计算可能较大的n-k的码元向量r=A’*E1。一旦删除的数目以及接收到的修复码元的位置已知,则可从A*E中丢弃r的元素。因此,该方法容许执行非必需的计算(因为计算出的r的码元可能被丢弃)的可能性。然而,该非必需的计算在FEC计算不占用处理器的时间中进行。应该明确的是,总计算量可被保持在传统解码——即所有处理在接收到用于解码的k个码元之后才发起这种最坏情形中的计算量以下。
注意,在以上所述的过程中,在码元到达的同时存储码元向量r。为此需要等于修复码元的总大小的存储器量。当A’中将形成A的行被标识时,该存储器可被再次使用。如果能够标识一特定修复码元将不会被接收到,则该对应于r中该项的存储器可被释放。一旦接收到足够的修复码元(即,等于丢失的源码元的数目的数个修复码元),就可标识A’中形成A的行并且接收到的任何其它修复码元都可被丢弃。
等于n-k个码元的存储器量可被分配用于r的存储。在最坏的情形中,当源码元到达时还需要k个码元的存储器量来存储这些源码元,即总存储器需求是n个码元。
在另一变形中,图7中所示的计算B-1*(E2-A*E1)可被分为两个子步骤,在修复码元到达时执行第一个步骤。这依赖于重新配置解码器,从而不是根据方程6来操作,而是在修复码元到达时逐行地根据方程8来操作。
Bu*S2=BL*(E2-A*E1)     (方程8)
在方程8中,Bu是上三角形式而BL是下三角形式。利用到达的每个修复码元(即,E2的元素),就可通过执行Gaussian消元过程步骤计算出这些矩阵中每一个的另一行以用于对B求逆。
此外,也可在修复码元到达时计算BL*(E2-A*E1)的值。要注意到,在该阶段,工作量在修复码元到达的时间上不是均匀展开的,因为每个连续的修复码元需要比上一个更多的工作量以计算BL*(E2-A*E1)中关联项的值。
一旦到达了足够的修复码元时要执行的剩余工作就是对该系统(方程8)的求解,这可通过回代来完成。
首先发送修复包
如果在源包之前发送修复包,则可对以上过程作出一定变形。该方法具有在FEC发送器处注入额外延迟的代价,因为如果源包在修复包之后发送则必须对源包进行缓冲。
然而该方法也有许多优点。在良好接收条件下于一源块的中间连接该流的接收机将接收到更大量的源数据,并由此减小了FEC接收机等待。丢失的修复包的位置是已知的,由此可避免计算(E2-A*E1)中对应于这些码元的元素。如果接收到的修复码元的数目是r,则一旦已接收到k-r个源码元,则就可丢弃(E2-A*E1)的行并减少了与后续接收到的源码元相关联的计算。因此,仅使用总共k个码元的存储器就可完成解码。
用于2D码的改善的交织
二维码是一种其中码元被排列成二维栅格且对每一行的码元和每一列的码元应用独立的纠删码(erasure correction code)的码。根据可用的计算和其它资源对该解码过程进行迭代,由此潜在地增大了该码的纠错能力。可以该方式应用任何纠错码,例如,Reed-Solomon码或XOR码。该描述以删除码(erasure code)的形式对这一类码进行了呈现,但如差错和删除纠正码领域的技术人员所已知的,同样的方法可容易地应用于纠错码。
如所公知的,通过以原始顺序以外的其它顺序发送编码码元可改善二维码的性能。然而这增添了不支持FEC码的接收机的复杂度并且在发送器与接收机之间低丢失的情形下增加了接收该文件所需的时间。在移动终端的情形中,这额外的接收时间意味着额外的功耗,从而降低了电池寿命。
一种替换性方法是在应用该二维码之前对源码元的原始顺序应用非轻微(non-trivial)置换(permutation)。然后以原始顺序发送源码元,从而减低了不支持FEC的接收机的复杂度以及减少了在低丢失情形下的接收时间。修复码元在源码元之前、分散于源码元之间、或在源码元之后,以它们被生成的顺序或某种其它顺序发送。
在该方法中,发送器和接收机两者都知道已应用的该置换。这可通过以发送器和接收机都知道的明确定义的系统性方法推导该置换来实现。例如,可在发送器和接收机两者处定义一特定的伪随机数生成过程并将其用于生成该置换。另一示例可通过以下过程来定义该置换:
令k为源码元的数目而k’为大于或等于k的最小素数。选取小于k的两个整数a和b。然后,如果源码元最初被编号为0,...k-1,则新的排序可被定义如下:
1)如果所有源码元都已被添加到该新排序中,则停止
2)如果b<k,则该新排序中下一源码元为码元b
3)b=(b+a)mod k’
4)到(1)
以上方法的一个缺点是取决于所选的置换,有可能原始码元发送排序中相邻的两个码元出现在该二维码中的同一行或同一列。由于两个相邻码元的丢失被集中在单行或单列内,所以这对于突发丢失这一码的易损性而言是一负面影响。
在另一变形中,将置换选择成决不将相邻码元映射到同一行或列。如果该源块是方形的,则可通过例如选取编号0,...k1=k2中的两个置换σ1、σ2来定义,其中k1和k2分别是该二维源块中的行数和列数。然后令s[i,j]标示该源块中的位置(i,j)上的码元以及s’[i,j]标示经置换后的源块中位置(i,j)上的码元。然后定义:
s'[i,j]=s[(σ1(j)+σ2(i))%k1,j]    (方程9)
然后将该二维码应用到经置换的源块。以原始顺序发送源码元。然后可以任何顺序发送修复码元。决不连续发送来自同一行或同一列的修复码元是有利的。
广义码
在该章节,我们引入一广义类的多维码。对该广义类码的编码和解码过程在实现复杂度上与二维码这种特定情形大体等同。和前面一样,该描述是以纠删码的形式呈现的,但应该理解的是这里所呈现的技术还可应用到纠错码。
该广义类中的码可以用其中一列针对每个源码元以及一列针对每个修复码元的二进制矩阵形式来定义。该矩阵的每一行如下地表示一不同的纠删码。这些不同的删除码在此被表示为分量(component)删除码,而整个码被称为复合码(compound code)。在诸如上述的二维码情形中,该分量删除码是个别的行和列码,而复合码是由这些分量码的组合形成的二维码。对于推广后的情形,对于每一行,在两个条件下构造分量纠删码。
第一个条件是该分量码的源码元包括其列在特定行具有“1”的复合码的那些源码元加上其列在该特定行具有“1”并且复合码修复码元的列在该矩阵内更低索引的行中具有“1”的复合码的那些修复码元。我们把这些码元称为“分量码源码元”以将其与作为整体的复合码的源码元区分开来。
第二个条件是分量码修复码元包括其列在该特定行具有“1”且其列在更低索引的行中没有“1”的那些复合码修复码元。我们将这些码元称为“分量码修复码元”以将其与作为整体的复合码的修复码元区分开来。
因此,给定复合码修复码元的值是通过与对应于该修复码元的列中为“1”的第一行相对应的分量删除码来确定的。该修复码元可随后作为该矩阵中后续行内的分量码源码元。
在这里所呈现的广义中,以具有k1+k2行和(k1*k2)+k1*(n2-k2)+k2*(n1-k1)列的矩阵形式对2D Reed-Solomon码进行了描述。前k1行对应于普通2维表示中跨行的Reed-Solomon码。剩余的k2行对应于普通2维表示中跨列的Reed-Solomon码。这里,(n1-k1)是为该2D Reed-Solomon码的每一列生成的修复码元的数目,而(n2-k2)是为该2D Reed-Solomon码的每一行生成的修复码元的数目。
显然,任何多维Reed-Solomon码都可以这种形式来表示。
使用不同的矩阵构造可构造出其它的码。例如,一般类的低密度奇偶校验(LDPC)码基于XOR删除码提供了该类码的示例。这里所述的广义允许可使用其它删除码,例如Reed-Solomon码来应用定义这些码的矩阵。在该广义中,由于使用Reed-Solomon来代替XOR运算,则对于该矩阵的每一行可生成多个修复码元。
最后,连锁反应码(例如,在Luby I和别处所述的那些)和多级连锁反应码(例如,在Shokrollahi I和别处所述的那些)的矩阵也可被应用于该广义以生成具有喷泉码的特性的新码。
为了应用该广义,描述码的矩阵应为FEC编码器和FEC解码器两者所知。在一特定码的情形中,该矩阵的结构可被预先提供给FEC编码器和FEC解码器两者,而仅通过通信信道提供描述该具体码的具体参数。
这里所述的这一类码可由作为用于2维码的算法的广义的常用解码算法来解码。接收机从通信信道收集尽可能多的源码元和修复码元并随后重复以下过程:
a)对于每一矩阵行,计算该行中还未知的码元(分量码源和分量码修复)的数目;
b)对于其中未知码元的数目小于或等于分量码修复码元(即,由该行的分量码原始生成的修复码元)的数目的每一行,尝试行解码操作以确定未知分量码源码元的值。如果该解码操作成功,并且如果任何分量码修复码元仍未知,则执行编码操作以确定未知分量码修复码元的值;以及
c)如果在步骤(b)中执行了任何操作,并且一些源码元仍未知,则返回步骤(a)。否则停止。
仅作为示例对以上过程进行了描述。可应用进一步的最优化从而例如避免对没有机会帮助进一步解码操作的分量码修复码元的计算。该操作可通过接收机的由硬件、软件等实现的解码器部分来执行。
最后,如上所述,以上广义的码构造并不限于Reed-Solomon码,可应用任何删除码来构造每一行的行修复码元。显然,在使用XOR操作的情形中,其结果是包括以上引用到的码的公知的LDPC码。
FEC发送
在该章节中,我们对FEC发送器定时包(源包和修复包两者)发送的方法和过程进行描述。我们集中在单个源块的包发送上,并且注意,这些过程和方法被设计成无缝地应用到被分割为源块的源流。
令k为该源块中源码元的数目,令T为该源块的保护期,令p为表示成分数的保护量,由此将为该源块发送p·k个修复码元。k、T和p的值可在每个源块形成时由FEC发送器动态地确定,由此当一源块的大部分或所有源码元已到达FEC发送器时,该源块的k和T的值仅为FEC发送器所知,而p的值可在该源块的所有源码元都已到达FEC发送器之后确定。并且,FEC发送器可变更不同源块的码元大小。因此,一特定源块的这些参数中的多数或全部可为FEC发送器已知从而有利于该源块数据的接收。
如果没有关于FEC端对端等待的影响,以下FEC基础发送器通常是足够的。
FEC基础发送器:当该源块的源码元到达时对它们进行缓冲,比方说在T秒的时间段上。然后为该源块生成p·k个修复码元,比方说在T’秒的时间段上。然后,在之后的T秒内均匀分布地发送该源码元和修复码元。
该FEC基础发送器具有以下特性:
1.保护期为T,这与在FEC发送器处接收源码元的时间相同。
2.针对该源块发送的码元在时间上均匀地分布。这意味着在具有固定持续时长的突发中断时为防丢失所设的保护水平不取决于该中断在码元传输期间何时发生,这是一合乎需要的特性。
3.FEC发送器不会在码元的总体发送速率中引入波动。特别地,如果源码元的原始发送速率恒定,则所有码元的发送速率也恒定,并且如果在FEC发送器处源码元的原始到达速率可变,则至少每个源块码元的恒定发送速率抑制了波动。这是一合乎需要的特性。
4.FEC接收机等待可以和T一样小。这意味着(1+p)·k个码元的最小缓冲(假定所有源块包括k个源码元),这是所可能的最小缓冲,因此是合乎需要的。
5.源块的码元未被交织。这使得FEC接收机逻辑较为简单,因此是合乎需要的。
FEC基础发送器的一个不令人满意的特性是FEC端对端等待为2·T+T,这会非常大。对于交互或实况应用,最小化FEC端对端等待是非常需要的,因此对于这些应用,以下FEC发送器被描述和考虑。
FEC发送器A:当源码元到达时发送源码元,比如说在R秒的时间段上。在下一源块的源码元的接收和发送上均匀分布地发送修复码元。
FEC发送器A具有以下特性
1.保护期T是2·R(假定下一源块也包括在R秒的时间段上接收到的源码元)。
2.为该源块发送的码元在时间上非均匀分布,即使源码元到达在时间上均匀分布也是如此。这是因为发送后续源码元之间的平均时间是k/R,而发送后续修复码元之间的平均时间是p·k/R。这意味着在具有固定持续时长的突发中断时为防丢失所设的保护水平取决于该中断在码元传输期间何时发生。这表示如果为了抵抗独立于中断何时发生的给定中断持续时长而要设计该保护量,则必须提供基于源码元传输或修复码元传输的速率(任何一个都更大)的非最优的保护量。这在某些应用中是不令人满意的特性。
3.整个源流的码元的总体发送速率不明显随源码元的发送速率而波动。特别地,如果源码元的原始发送速率恒定,则所有码元的发送速率仍恒定,并入如果源码元的原始发送速率可变,则由于修复包是均匀分布地被发送的,所以原始源流的可变性在一定程度上得到抑制。这是一合乎需要的特性。
4.FEC接收机等待至少是T=2·R,这在一些应用,例如交互应用中是不令人满意的,因为原始源块的持续时长仅为R。这意味着需要至少(2+p)·k个码元的缓冲(假定所有源块都包括k个源码元)。这比最小可能的(1+p)·k大得多,因此这在一些应用中也不令人满意。
5.一个源块的修复码元被与来自下一源块的源码元交织。这使得FEC接收机逻辑比它可能所需的更加复杂,因为这要求同时跟踪和保存一个以上源块的码元,并且还在一定程度上使得较难确定何时判定将不会有来自一给定源块的其它码元到达并进而放弃尝试对该源块解码。
因此,总体FEC发送器A是混合型性质,并且在特定应用中并不被优选。
FEC发送器B:当源码元到达时进行发送,比如说在R秒的时间段上。以源码元到达的平均速率来均匀展开地发送修复码元,由此修复码元在p·R秒内均匀展开。
FEC发送器B具有以下特性:
1.保护期T是(1+p)·R。
2.如果源码元到达在时间上均匀展开,则为该源块发送的码元在时间上均匀展开。这意味着在具有固定持续时长的突发中断时为防丢失所设的保护水平不取决于该中断在该源块的码元传输期间何时发生,这是一合乎需要的特性。
3.在该整个源流的码元的总体发送速率中引入了波动。具体而言,即使源码元的原始发送速率恒定,由于修复码元的传输仅部分地与后续源块的码元的发送重叠,所以码元的总体传输速率可能完全可变和起伏。这在某些应用中不是一令人满意的特性。
4.FEC接收机等待至少为T=(1+p)·R,这在某些应用中是令人不快的,因为原始源块的持续时长仅为R。这意味着需要至少(1+2p)·k个码元的缓冲(假定所有源块都包括k个源码元)。这比最小可能的(1+p)·k大。
5.一个源块的修复码元被与来自下一源块(以及取决于p值的潜在可能的后续数个源块)的源码元交织。这使得FEC接收机逻辑比它可能所需的更加复杂,因为这要求同时跟踪和保存一个以上源块的码元,并且还在一定程度上使得较难确定何时判定将不会有来自一给定源块的其它码元达到并进而放弃尝试对该源块解码。
因此,总体FEC发送器B是混合型性质,并且在特定应用中并不被优选。注意,策略A和B并未将FEC编码器会在接收到最后一个源码元之后花费大量时间来生成修复码元这一点考虑在内,而在实际FEC发送器中这是必需考虑在内的。然而值得注意的是,修改这些策略以将FEC编码时间考虑在内将不会改善它们令人不满的性质。
在某些条件下的优选实施例是以下描述的FEC发送器C。
FEC发送器C:构成一源块的源码元在R=T秒的时间段上到达,其中T是保护期。令u=p/(1+p)且令T'≥u·T,其中,T'-u·T是在接收到一源块的最后一个源码元之后FEC编码器足够用以生成该源块的第一个修复码元并能够以以下所述的发送速率继续生成该源块的后续修复码元的时间。令t为FEC发送器上的当前时间。
1.在FEC发送器发起该源块时,将t初始化为t=0。
2.在当前时刻t在区间0≤t≤T中时,在当前时间t每次接收到一源码元,就排定其在时刻T'+t/(1+p)被发送。
3.假设在时刻T完成该源块时已经接收到k个源码元。该源块的p·k个修复码元被排定在从T'+T/(1+p)到T'+T(长度为u·T的间隔)的时间间隔内均匀地发送。
FEC发送器C具有以下特性:
1.保护期T是与其间该源块的源码元到达的时间段相同的持续时长。
2.源码元的总体发送速率中的波动在时间上被压缩了1/(1+p)倍,但是幅度保持不变。这在一些应用中并非完全令人满意,因为随着保护量的增大,经FEC编码的流所用的带宽量也随之增大,因此当使用更多带宽来降低该流送速率中的波动幅度时将更为令人满意。这也意味着用以对抗固定持续时长的突发丢失所设的保护水平会取决于该丢失何时发生,而这并不令人满意。然而,作为特例,如果源码元的原始发送速率恒定,则该经FEC编码的流的发送速率也恒定,并由此针对固定持续时长的突发丢失所设的保护水平不取决于该丢失何时发生。
3.由于FEC编码和FEC解码等待接近0,所以FEC端对端等待可以低至T+u·T。
4.由于FEC解码等待接近0,所以FEC接收机等待可低至T。这意味着仅需要(1+p)·k个码元的缓冲(假定所有源块都包括k个源码元)。这是所可能的最小量,因此这是合乎需要的。
5.一个源块的修复码元不与来自下一源块的源码元交织,即一个源块的所有码元在后续源块的任意码元发送之前被发送。这使得FEC接收机逻辑较为简单,因为这实质上仅要求同时跟踪和保存一个源块的码元,这也使得容易确定何时判定将不会有来自一给定源块的其它码元到达并进而放弃尝试对该源块解码。
6.由于在最后一个源码元的到达与第一个修复码元的发送之间具有T'-u·T的时间延迟,所以该FEC发送器将FEC编码器在接收到最后一个源码元之后会花费大量时间来生成修复码元考虑在内,其中T'是可基于FEC编码器的能力作适当调节的参数。
因此,除了以上所列特性2中所述的FEC发送器C保持了源码元的发送速率中的原始波动幅度,总体FEC发送器C在上述任何一个方面都是合乎需要的。
以下描述的FEC发送器D保持了FEC发送器C的以上所列的所有有利属性,还具有抑制源码元发送速率中波动幅度的有益结果。因此,FEC发送器D具有诸多优点并且在一些情形中会是优选实施例。
FEC发送器D:构成一源块的源码元在T秒的时间段上到达,其中T是保护期。令u=p/(1+p)且令T'≥u·T,其中,T'-u·T是在接收到一源块的最后一个源码元之后FEC编码器足够用以生成该源块的第一个修复码元并能够以以下所述的发送速率继续生成该源块的后续修复码元的时间。令t为FEC发送器上的当前时间。在该过程的每个时间点上,令B为该源块的已接收到的源码元的数目并令S为到目前为止该FEC发送器已经发送的源码元的数目。
当FEC发送器发起该源块时,该过程开始,并且该过程初始化t=0以及B=S=0。然后,当当前时刻t在间隔0≤t≤T'中时,每次接收到一源码元,就将B设为B+1,而当当前时刻t在间隔T'≤t≤T中时,每次接收到一源码元,就将B设为B+1,并在时刻t根据方程9定义yt,其中在当前时刻t之前的每一时间点x上,Bx和Sx分别是时刻x上B和S的值。如果在时刻t上yt≥1则该过程发送下一接收到但还未发送的源码元并设置S=S+1。
y t = &Integral; x = T &prime; t ( B x - S x ) / ( T &prime; - u &CenterDot; x ) dx - S       (方程9)
在这些步骤之后,到时刻T已接收到所有源码元,因此该源块中有k=Bt个源码元。此时,当当前时刻t在时间间隔T<t≤T'+T/(1+p)中时,该过程在该间隔上均匀展开地发送剩余的BT-ST个未发送源码元。接着,当当前时刻t在时间间隔T/(1+p)<t≤T'+T中时,该过程在该间隔上均匀展开地发送p·k个修复码元。
FEC发送器D具有FEC发送器C的有利特性,另外FEC发送器C的特性2被改进为FEC发送器D的以下特性,即整个源流的码元的总体发送速率中的波动被抑制。特别地,当T’增大时源流中的波动更加显著地被抑制,并且T’通常随着保护量的增大而增大。
由于当保护量增大时经FEC编码的流所用的带宽量增大,所以这是合乎需要的,因此当使用更多带宽来减小流送速率中的波动时更加合乎需要。并且由于当波动受抑时,在具有固定持续时长的突发中断时为防丢失所设的保护水平对该中断何时发生依赖性变弱,这也是一合乎需要的特性。作为特例,如果原始源流为恒定速率,则经FEC编码的流也是恒定速率。因此,总体FEC发送器D比其它发送器更加理想,因此对于许多情形都是优选的。
有许多可能的FEC发送器D的变形,这里对其中一些进行了描述而其它变形在阅读该公开后对于本领域的技术人员将是显而易见的。
例如,在步骤3b有一对yt的计算,而执行该计算有许多可能的方法,包括将产生近似结果的简单逼近来替代精确计算。作为另一示例,在步骤3c,基于条件yt≥1关于何时发送另一源码元的判定可被更改,例如,用条件yt≥0或针对某一常数α的yt≥α来代替。这种变形将产生近似结果。作为变形的另一示例,不同于个别地发送下一源码元或修复码元,码元组可在每个包中被一起接收或发送,并且每个包中接收或发送的组的大小可逐包地改变。在该情形中,可以明了的方式容易地修改用于接收到的码元的过程以及何时发送下一源码元或修复码元的过程。
作为另一变形的示例,可能有不是发送和接收码元而是位的情形,即可能一次发送和接收部分码元而非整个码元,而用于发送和接收码元的过程可容易地被修改以适应发送和接收例如不是以码元而是以位为单位或以可变大小的包为单位的数据。
FEC发送器D的一种可能变形是以下所述并在图8A、8B、9、10、11、12和13中所示的FEC发送器E。FEC发送器E与FEC发送器D相类似,具体而言T是保护期的持续时长和源块的持续时长,u=p/(1+p)并且T'≥u·T是发送器开始接收当前源块的源码元时与发送器开始发送当前源块的源码元时之间的持续时长。FEC发送器E将当前源块的处理分为4个过程,即源初始远程、源中间过程、源最后过程以及修复发送过程,如图8A所示。这4个过程中每一个的相对时间间隔和持续时长在图8A中分别被显示在标记为“时间间隔”的列和标记为“持续时长”的列中。时间间隔是相对于当前源块开始的时刻来表示的,因此时刻t=0对应于当前源块开始的时刻。因此,如图8A所示,源初始过程在时刻t=0开始并在时刻t=T’结束,由此持续时长为T’。类似地,源中间过程在时刻t=T’开始并在时刻t=T结束,由此时长为T-T’;源最后过程在时刻t=T开始并在时刻t=T’+T/(1+p)结束,由此持续时长为T'-u·T;修复发送过程在时刻t=T’+T/(1+p)开始并在时刻t=T’+T结束,由此持续时长为u·T。
注意,如图8B中所示,不同源块的这4个过程重叠。例如,当前源块的源初始过程首先与前一源块的源最后过程并存,并随后与前一源块的修复发送过程并存。作为另一示例,当前源块的源最后过程以及随后的当前源块的修复发送过程与下一源块的源初始过程并存。
如图8B中所示,在每个时间点上,正好一个源块的源码元正被接收并且正好一个源块的编码码元正被发送。例如,在当前源块的源初始过程期间,前一源块的编码码元正被发送且当前源块的源码元正被接收。作为另一示例,在当前源块的源中间过程期间,当前源块的源码元正被接收且当前源块的编码码元正被发送。
FEC发送器E具有以下特性:(a)在T秒内接收每个源块的源码元;(b)在T秒内发送每个源块的编码码元;(c)在开始接收一源块的源码元与开始发送该源块的源码元之间具有持续时长T’;(d)当前源块的所有源码元在接收到下一源块的任意源码元之前被接收;(e)当前源块的所有编码码元在发送下一源块的任意编码码元之前被发送。因此,FEC发送器E没有任何源块的交织。
图9示出了FEC发送器E的源初始过程。在图9的步骤905中,当前源块开始,因此对于当前源块的接收到的源码元的数目B和发送的源码元的数目S两者都被初始化为0,当前时刻t被设为0,以及用来缓冲当前源块的源码元的BUFFER被初始化为空。在步骤910,检查当前时刻t是否大于或等于T’,并且如果如此则处理在步骤920进入图10中所示的源中间过程。注意,步骤910中该测试的实现一般表示发生得足够频繁以使得当测试为真时t非常接近T’。同样的注释适用于以下在FEC发送器E的所有过程中的两个时刻之间作出不均匀性比较的情形下所述的所有其它步骤。如果在步骤910中t小于T’,则在步骤930中检查下一源码元是否已经到达。如果下一源码元还没有到达则处理循环回到步骤910,但如果下一源码元已经到达,则在步骤940,在处理循环回到步骤910之前,接收到的源码元的数目B被递增并且接收到的源码元被添加到BUFFER。
图10示出了FEC发送器E的源中间过程。在图10的步骤1005,TLAST的值被初始化为当前时刻t(大于或等于T’但取决于图9中步骤910中测试的精度非常接近T’),以及TNEXT被初始化为TLAST+T’/((1+p)·B)。TNEXT是下一源码元被排定发送的时间。在步骤1010,检查当前时刻t是否大于或等于T,以及如果如此则处理进入指示当前源块的源码元的接收完成的步骤1020,由此BUFFER包含该源块的所有源码元并且处理在步骤1020进入图11中所示的源最后过程。如果在步骤1010中t小于T,则在步骤1040检查t是否大于或等于TNEXT。如果在步骤1040中该测试为真,则应发送下一源码元并由此处理传到步骤1080。在步骤1080,还没有发送的第一个接收到的源码元被发送,已发送的源码元的数目S被递增1,TLAST被更新为当前时刻,并且TNEXT被更新为TLAST+(T-u·TLAST)/(B-S)并随后处理循环回到步骤1010。如果在步骤1040中测试为假,则在步骤1050中检查一码元是否已到达。如果没有源码元到达则处理循环回到步骤1010,但如果一码元已经到达则处理继续到步骤1060。在步骤1060,已到达的该源码元被附加到BUFFER的末尾,B的值被递增1,并且TNEXT基于源码元的接收被更新为TLAST+(T-u·TLAST)/(B-S)并随后处理循环立即回到步骤1010。
图11示出了FEC发送器E的源最后过程。在图11的步骤1105中,TLAST的值被初始化为当前时刻t(大于或等于T但取决于图10中步骤1010中测试的精度非常接近T),以及TNEXT被初始化为TLAST+(T-u·T)/(B-S)。TNEXT是下一源码元被排定发送的时间。在步骤1110,检查当前时刻t是否等于T’+T/(1+p),以及如果如此处理进入指示当前源块的源码元的发送完成的步骤1120并且处理在步骤1120传到图12中所示的修复发送过程。如果在步骤1110中t不等于T’+T/(1+p),则在步骤1130检查t是否等于TNEXT。如果在步骤1130中该测试为真,则应发送下一源码元并由此处理传到步骤1140。在步骤1140,在处理循环回到步骤1110之前,还没有发送的第一个接收到的源码元被发送,已发送的源码元的数目S被递增1,TLAST被更新为当前时刻t,并且TNEXT被更新为TLAST+(T’+T/(1+p)-TLAST)/(B-S)。如果在步骤1130中测试为假,则处理立即循环回到步骤1110。
图12示出了FEC发送器E的修复发送过程。在图12的步骤1205中,TLAST的值被初始化为当前时刻t(大于或等于T’+T/(1+p)但取决于图11的步骤1110中测试的精度非常接近T’+T/(1+p)),TDELTA被设为T/((1+p)·B)以及TNEXT被初始化为TLAST+TDELTA,其中TDELTA是每个修复码元之间的时间增量而TNEXT是下一修复码元被排定发送的时间。在步骤1210检查当前时刻t是否大于或等于T’+T,并且如果如此则处理进入指示当前源块的修复码元的发送已经完成的步骤1220,由此当前源块完成并且BUFFER可被再次用于后续源块。如果在步骤1210中t小于T’+T,则在步骤1230检查t是否大于或等于TNEXT。如果在步骤1230中该测试为真,则应发送下一修复码元并且由此处理传到步骤1240。在步骤1240中,在处理循环回到步骤1210之前,基于存储在BUFFER中的源块,该源块的一新的修复码元被生成和发送,以及TLAST被更新为TNEXT而TNEXT被更新为TLAST+TDELTA。如果在步骤1230中该测试为假,则处理立即循环回到步骤1210。
可以有其它过程和计算与针对FEC发送器E所述的过程同时发生。例如,在预备生成修复码元时,可以有与这4个处理中的一个或多个同时发生的BUFFER的预处理,并且经过预处理的BUFFER可在修复过程的步骤1240中被用于生成修复码元的基础。还可以有用于实现相同或相似结果的其它等效的过程,例如修复码元可在它们发送之前被生成而非如修复过程的步骤1240中所述的在它们被发送前一刻才生成。
源块交织
一些FEC码可有效地在任何实际大小的源块上编码并且可在任何大小的码元下有效工作。然而,其它FEC码具有实际限制,从而使得它们较难在更大源块的情形下有效工作。尤其是当流送速率更高和/或码元必须更短(例如由于使用了携带码元的短包)和/或当使用了更大的保护期时,这是一个问题。
作为一个示例,当在有限域具有大于256个元素情况下工作时Reed-Solomon码会变得不切实际,并且在256个元素的有限域情况下工作将每个源块的编码码元限制为257个。在这些情形中,该问题的一个解决方案是交织源块,即以混杂顺序发送来自不同源块的码元。因此,虽然总体上如先前章节中所述的,源块之间没有任何交织是合乎需要的,但对于一些FEC码,允许交织有利于使用对于FEC码而言较实际的源块和每个源块的码元数目,同时允许源块的保护期比该源块的原始流送时间更长。本章节提供了交织源块的FEC发送器的一些优选实施例。
在一些情形中,允许FEC发送器将来自不同源块的码元的发送交织可能是有好处的,这样可使得每个源块的码元可在比该源块的流送时间更长的保护期上展开。这么做的一个原因是提供了对抗时间依存的丢失(例如,突发丢失)的更好的保护,即由于源块的保护期增大使得为了提供对抗固定持续时长的突发丢失需要更小的保护量。当一源块的原始流送时间为t秒时,该源块的所需保护期可以为p秒,其中p>t。使用交织的FEC发送器的其它有利特性包括(1)源包以其原始顺序被发送,和(2)接收到每一后续源块的最后一个编码码元的时刻在时间上尽可能地均匀展开。
第一个交织特性(源包以原始顺序被发送)为每一类型的接收机最小化在FEC发送器处引入的等待,并且FEC的使用不会引起非FEC接收机的显著额外等待。这还使得当接收机调谐到该流时FEC接收机上引入的等待最小化,即它使得在FEC接收机第一次开始接收包直到FEC接收机可安全地开始使其可用之间的延迟最小化。
第二个交织特性(接收每个后续源块的最后一个编码码元的时刻在时间上尽可能地均匀分布)提供了对CPU更平滑的使用。一接收到的源块的最后一个编码码元被接收到的时间是用于解码该源块的所有信息都可为该FEC解码器所用的时间,并且这通常是在最坏情形的丢失条件下FEC解码器必须费力地工作以在所规定的解码等待预算内完成解码的时间。因此,均匀地展开源块的最后一个编码码元的接收允许将CPU更加平滑地用于FEC解码。
在该描述中,许多示例假定FEC发送器以包来发送码元,其中每个包可包含不同数目的码元。。为了简化以下描述,假定原始源流中的源包顺序为0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17等,其中该值指示包的索引。
假设在任意时间点上有s个源块活动并且每个源块k个源包(在该简化描述中假定所有源包为相同长度)。以下FEC发送器描述了如何从源包以及发送源包的顺序来构成源块。源块的修复包可以在该源块的源包之前、之后或混在其间被发送,并且如这里所解释的,对于不同策略是有利的。
FEC发送器F:该发送模式重复每一n=s·k个包,其中n是保护期中源包的数目。因此,这可以被考虑为保护期中的n个源包被分隔为各自具有k个源包的s个源块。源包的发送顺序是它们的原始发送顺序。对于i=0,...s-1,第i个源块包括源包i,s+i,2s+i,...,(k-1)·s+i。以与源包相同的顺序将每个源块的修复包交织,即每个源块的第一个修复包在每个源块的第二个修复包之前被发送。各自为6个源包的3个源块的示例(由此保护期为18个源包的持续时长)如下:
源块0包括源包0、3、6、9、12、15
源块1包括源包1、4、7、10、13、16
源块2包括源包2、5、8、11、14、17。
FEC发送器F满足第一个交织特性但不满足第二个交织特性。由于源包的发送顺序是原始发送顺序所以简单地满足了第一个交织特性。为了知道为何FEC发送器F不满足第二个交织特性,注意连续源包0、1、2分别来自源块0、1、2,因此这三个源块的解码时间在连续的包上,即该源块交织的解码时间重复模式:“1、1、1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、1、1、1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0...”。在该模式下,每项指示一包的接收,并且1指示这是源块中一个的解码时间。从该模式中可以看出,解码时间是突发的而不是均匀展开,因此从该示例中可以看出FEC发送器F不满足以上第二个交织属性。
FEC发送器G:该发送模式重复每一n=s·k个包,其中n是保护期中源包的数目。因此,这可以被考虑为保护期中的n个源包被分隔为各自具有k个源包的s个源块。源包的发送顺序是0、k、2k、...、(s-1)·k、1、k+1、2k+1、...、(s-1)·k+1,...、k-1、2k-1、3k-1、...、s·k-1。对于i=0、...、s-1,第i个源块包括源包k·i、k·i+1、k·i+2、...、k·i+k-1。以与源包相同的顺序将每个源块的修复包交织,即每个源块的第一个修复包在每个源块的第二个修复包之前被发送。各自为6个源包的3个源块的示例(由此保护期为18个源包的持续时长)如下:
源块0包括源包0、1、2、3、4、5
源块1包括源包6、7、8、9、10、11
源块2包括源包12、13、14、15、16、17。
源包的发送顺序如下:0、6、12、1、7、13、2、8、14、3、9、15、4、10、16、5、11、17。
FEC发送器G不满足第一个交织特性但满足第二个交织特性。第一个交织特性仅由于源包的发送顺序不是原始发送顺序所以不满足。为了知道为何FEC发送器G满足第二个交织特性,注意这三个源块的解码时间在这些包上均匀展开,即对该源块交织的解码时间重复模式:1、0、0、0、0、0、1、0、0、0、0、0、1、0、0、0、0、0...。以这种模式,每项指示一包的接收,而1指示这是源块之一的解码时间。从该模式中可以看出,解码时间被均匀展开,由此从该示例可以看出FEC发送器G满足以上第二个交织特性。
对于同时满足第一交织特性和第二交织特性的经交织的FEC发送器的以下示例,我们假定对于每个单个的源块,使用先前章节中所述的单个源块FEC发送器的优选实施例来确定何时发送每个源块的码元。
FEC发送器H:源包的发送顺序是它们的原始发送顺序。为了描述该FEC发送器,这些源包在概念上被顺序地放置为具有s列的矩阵的行,并随后对于i=0、...、s-1,列i包括其索引对模数n与i、s+i、2s+i、...、(k-1)·s+i中任意一个同余的索引的源包。
源块是由一列内连续的源包序列构成的。列i的第一个源块从索引为i的源包开始。列i内每个后续源块总是以索引为floor(k·i/s)·s+i mod n的源包开始,因此列i中除第一源块之外几乎所有源块都包括k个包。以与源包相同的顺序将每个源块的修复包交织,即列i中给定源块的所有修复包在列i中后续源块的任意修复包发送之前被发送。各自为6个源包的3个源块的示例(由此保护期为18个源包的持续时长)如下:
上述矩阵为:
100
000
010
000
001
000
因此,列0的第一个源块包括源包0、3、6、9、12、15,列1的第一个源块包括源包1、4,而列1的第二个源块包括源包7、10、13、16、19、22,列2的第一个源块包括2、5、8、11以及列2的第二个源块包括源包14、17、20、23、26、29等。
FEC发送器H满足第一交织特性和第二交织特性。第一交织特性仅由于源包的发送顺序为原始发送顺序而满足。为了知道为何FEC发送器H满足第二个交织特性,注意该源块交织的解码时间是重复模式:“1、0、0、0、0、0、0、1、0、0、0、0、0、0、1、0、0、0”。在该模式中,每项指示一源包的接收,而1指示这是源块之一的解码时间。从该模式可以看出,解码时间被尽可能均匀地展开,因此从该示例中可以看出FEC发送器F满足以上第二交织特性。
有许多FEC发送器H的满足以上特性(1)和(2)的变形,并且可在阅读该公开后被发现。例如,如上所述的FEC发送器H在该流中的所有源块大小相同时且源包的流送速率恒定时工作良好。以下所述的FEC发送器I是FEC发送器H的当源包长度可变时和/或源包的流送速率不恒定时工作良好的一个变形。
FEC发送器I:假设所需保护期为t秒,并且任意时间点上将有s个活动的源块。该过程参照图13进行描述。在图13的步骤1305,z=t/s被设为完成一个源块与开始另一源块之间以秒计的时间增量而字节计数器B0、B1、...、Bs-1全部被初始化为0。在步骤1310,变量i被初始化为0且当前时刻被初始化为0,其中i将被用于跟踪接着完成哪一源块而当前时刻被用于跟踪何时完成一源块。在步骤1314,当前时刻使用FEC发送器上的时钟来更新,该时钟根据自在步骤1310中原始设为0的时刻起经过的时间量来递增。在步骤1318检查当前时刻是否小于z,并且如果为真则处理继续到步骤1320以检查下一源包是否可用。如果没有源包可用,则处理返回到步骤1314,但是如果有可用的下一源包,则在步骤1330接收该下一源包且X是其按字节计的大小。在步骤1340,索引j被计算为使Bj最小。在步骤1350,刚接收到的源包被添加到源块j,并且在步骤1360,Bj的值被增加该源包的大小X,并且处理返回到步骤1314。反之如果在步骤1318当前时刻至少是z,则在步骤1370中z的值被增加t/s,并且在步骤1380,i的值被增加1对活动源块的数目s的模数,以及步骤1390中完成具有索引i的当前源块并开始具有索引i的一新的源块,随后处理返回到步骤1314。
作为该过程如何工作的示例,假设t=6秒且s=3,由此t/s=2。假设在前两秒内接收到的源包如下:
大小为500字节的源包0。
大小为750字节的源包1。
大小为400字节的源包2。
大小为490字节的源包3。
大小为700字节的源包4。
还假设如果有一个以上具有相同最小值的字节计数器则具有最小索引的该字节计数器被考虑为最小。然后,源包0被添加到源块0且B0=500,源包1被添加到源块1且B1=750,源包2被添加到源块2且B2=400,源包3被添加到源块2且B2=890,源包4被添加到源块0且B0=1200。
继续该同一示例,当当前时刻接近2秒时源块1完成并且仅包含大小750字节的源包1,并且一新的源块1被开始。假设以下描述了在后续两秒中到达发送器的源包序列。
大小为500字节的源包5。
大小为380字节的源包6。
大小为400字节的源包7。
大小为600字节的源包8。
大小为700字节的源包9。
大小为400字节的源包10。
大小为350字节的源包11。
大小为800字节的源包12。
大小为200字节的源包13。
大小为500字节的源包14。
在该时间点上,源块2完成并且包含总共2770个字节的源包,即源包2、3、6、9、12,并且一新的源块2被开始。
假设以下源包序列在后续两秒中到达该发送器。
大小为350字节的源包15。
大小为500字节的源包16
大小为450字节的源包17。
大小为800字节的源包18。
大小为650字节的源包19。
大小为400字节的源包20。
大小为600字节的源包21。
大小为350字节的源包22。
大小为200字节的源包23。
大小为600字节的源包24。
在该时间点上,源块0完成并且包含总共4150个字节的源包,即源包0、4、7、10、13、14、17、20和21,并且一新的源块0被开始。
FEC发送器I具有分配给每一列的源包的字节总数在每个时间点上尽可能均等、且源块的解码时间以z=t/s的间隔均等地在时间上展开的特性。注意在源包速率恒定且源包大小全部相同的情形中,FEC发送器I提供与FEC发送器H实质相同的方案。例如,如果以上示例中每2秒钟有6个源包且所有源包的大小为1000个字节,则FEC发送器I产生以下矩阵:
000
010
000
001
000
100
000
010
000
001
000
100
注意,在该示例中,每个源块中源包的数目为6,并且交织模式是以上FEC发送器H的交织示例的简单移位。
虽然已参照示例性实施例对本发明进行了描述,本领域的技术人员将认识到各种修改是可能的。例如,这里所述的过程可使用硬件、软件、和/或它们的组合来实现。因此,虽然已参照示例性实施例对本发明进行了描述,但应该认识到的是本发明旨在涵盖落在所附权利要求范围内的所有修改和等效方案。

Claims (17)

1.在一种对来自通过信道从编码器接收到的接收码元的数据进行解码的数据解码器——其中所接收到的数据可能包括删除并且包括源码元和修复码元,并且其中所述解码器在解码中使用其任何方形子矩阵都可逆的生成矩阵,从而所述解码器可在所述各源码元和各修复码元到达的同时执行解码操作——中的一种解码方法,包括:
在解码器存储器中表示至少部分地根据所述生成矩阵推导出的方程系;
随着各源码元陆续被接收,在接收到所有源码元之前,将接收到的源码元代入所述方程系中;
随着各修复码元陆续到达,使用解码器逻辑标识出要被用于求解所述方程系的修复方程;
随着各源码元陆续到达,使用解码器逻辑计算方程的向量值;以及
随着各修复码元陆续到达所述解码器处,将所述方程系转换为上三角形式。
2.如权利要求1所述的方法,其特征在于,在所述接收机处,一个码的各修复码元是在各源码元之前被接收到的,并且解码操作是就地执行的。
3.如权利要求1所述的方法,其特征在于,在应用二维Reed-Solomon码之前在所述编码器处对源码元应用置换。
4.如权利要求3所述的方法,其特征在于,所述置换是随机或伪随机的。
5.如权利要求3所述的方法,其特征在于,所述置换使得原始排序中的两个相邻码元不会出现在所述码的同一行或列中。
6.如权利要求5所述的方法,其特征在于,所述置换是从两个置换σ1、σ2推导出的,从而所述源块中位置(i,j)上的码元s[i,j]通过所述两个置换被映射成使得经过置换的源块中位置(i,j)上的码元s′[i,j]满足s′[i,j]=s[(σ1(j)+σ2(i))%k,j],其中k是所述码的行数或列数。
7.如权利要求1所述的方法,其特征在于,所述生成矩阵是一种用于一种码的生成矩阵,藉此所述码被增补了按所述生成矩阵的行生成的一个以上的修复码元。
8.如权利要求1所述的方法,其特征在于,所述生成矩阵是用于下组中的码的生成矩阵:规则LDGM、不规则LDGM、规则LDGM阶梯、不规则LDGM阶梯、规则LDGM三角、不规则LDGM三角、规则Copper、不规则Copper、或喷泉码。
9.如权利要求1所述的方法,其特征在于,所述生成矩阵是用于纠错码的生成矩阵。
10.如权利要求1所述的方法,其特征在于,所述生成矩阵是用于纠错码和删除码的生成矩阵。
11.在用于编码将通过信道发送的数据的数据编码器中,一种生成包括源码元和修复码元的经编码数据的方法,所述源码元表示被编码的数据而所述修复码元可用来恢复关于丢失的源码元的信息,并且其中所述源码元表示将被编码为有序的多个源码元的数据,所述方法包括:
获得用于一种码的生成矩阵,其中所述生成矩阵根据所述源码元表示并且编码所述修复码元;
读入所述各源码元中的至少一些;
将所述源码元中的所述至少一些作为经编码的码元按与所述源码元在所述有序的多个源码元中的次序相对应的次序包括在经编码集合中;
根据一组一个或多个重新排序规则将所述源码元重新排序以形成经重新排序的源码元集合;
将所述生成矩阵应用到所述经排序的源码元集合以形成修复码元集合;以及
输出作为经编码数据的所述经编码集合、以及所述修复码元集合。
12.如权利要求11所述的方法,其特征在于,所述输出仅在所述读取、重新排序以及应用步骤完成之后才发生。
13.如权利要求11所述的方法,其特征在于,所述经编码集合的输出发生在所述应用步骤完成之前。
14.如权利要求11所述的方法,其特征在于,所述重新排序规则包括根据为所述数据编码器已知且在数据解码器处可确定的伪随机序列来重新排序。
15.如权利要求11所述的方法,其特征在于,所述经重新排序的源码元集合是经物理地重新排序的码元集合。
16.如权利要求11所述的方法,其特征在于,所述经重新排序的源码元集合是经逻辑地重新排序的码元集合,从而使得重新排序之前存储在存储器中的码元不需要被移动或复制到更改后的存储器位置。
17.如权利要求11所述的方法,其特征在于,所述经重新排序的源码元集合被重新排序以使得在进行所述生成矩阵的应用时所述源码元被按不同于其原始次序的其它次序被取用。
CN2006800289621A 2005-06-10 2006-06-12 前向纠错(fec)编码和流送 Expired - Fee Related CN101432969B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US68933305P 2005-06-10 2005-06-10
US60/689,333 2005-06-10
PCT/US2006/022913 WO2006135877A2 (en) 2005-06-10 2006-06-12 Forward error-correcting (fec) coding and streaming

Publications (2)

Publication Number Publication Date
CN101432969A true CN101432969A (zh) 2009-05-13
CN101432969B CN101432969B (zh) 2012-07-18

Family

ID=37532888

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800289621A Expired - Fee Related CN101432969B (zh) 2005-06-10 2006-06-12 前向纠错(fec)编码和流送

Country Status (6)

Country Link
US (1) US7676735B2 (zh)
EP (1) EP1908171A4 (zh)
JP (3) JP5123174B2 (zh)
KR (1) KR101184242B1 (zh)
CN (1) CN101432969B (zh)
WO (1) WO2006135877A2 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102804661A (zh) * 2010-03-03 2012-11-28 高通股份有限公司 通信系统中的对象的块聚合
CN103793197A (zh) * 2013-12-27 2014-05-14 天津航天中为数据系统科技有限公司 一种喷泉码编译码方法及装置
CN106464432A (zh) * 2014-03-14 2017-02-22 爱尔兰梅努斯国立大学 低延迟包纠删编码
CN108141228A (zh) * 2015-10-09 2018-06-08 华为技术有限公司 分布式存储系统的编码
CN108600786A (zh) * 2011-11-30 2018-09-28 三星电子株式会社 用于发送/接收广播数据的装置和方法
CN108667557A (zh) * 2017-03-29 2018-10-16 上海交通大学 一种基于媒体内容的自适应fec编码矩阵设计方法
CN109982083A (zh) * 2017-12-28 2019-07-05 欧鹏斯泰克公司 用以重新排列数据包传输顺序的图像编码装置及其运行方法
CN111858128A (zh) * 2019-04-26 2020-10-30 深信服科技股份有限公司 一种纠删码数据修复方法、装置、设备及存储介质

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
KR101143282B1 (ko) 2002-10-05 2012-05-08 디지털 파운튼, 인크. 연쇄 반응 코드의 체계적 인코딩 및 디코딩
EP1665539B1 (en) 2003-10-06 2013-04-10 Digital Fountain, Inc. Soft-Decision Decoding of Multi-Stage Chain Reaction Codes
EP1743431A4 (en) 2004-05-07 2007-05-02 Digital Fountain Inc SYSTEM FOR DOWNLOADING AND RECORDING AND CONTINUOUS READING OF FILES
CA2597836C (en) * 2005-02-23 2014-07-15 Arroyo Video Solutions, Inc. Fast channel change with conditional return to multicasting
US8140699B2 (en) * 2005-02-23 2012-03-20 Cisco Technology, Inc. Switching a client from unicasting to multicasting by simultaneously providing unicast and multicast streams to the client
US8713195B2 (en) 2006-02-10 2014-04-29 Cisco Technology, Inc. Method and system for streaming digital video content to a client in a digital video network
WO2007095550A2 (en) 2006-02-13 2007-08-23 Digital Fountain, Inc. Streaming and buffering using variable fec overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7965771B2 (en) 2006-02-27 2011-06-21 Cisco Technology, Inc. Method and apparatus for immediate display of multicast IPTV over a bandwidth constrained network
US8218654B2 (en) 2006-03-08 2012-07-10 Cisco Technology, Inc. Method for reducing channel change startup delays for multicast digital video streams
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9178535B2 (en) * 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US8006160B2 (en) 2006-06-29 2011-08-23 Digital Fountain, Inc. Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
KR101154995B1 (ko) * 2006-07-14 2012-06-15 엘지전자 주식회사 Ldpc 부호화를 수행하는 방법
US8031701B2 (en) * 2006-09-11 2011-10-04 Cisco Technology, Inc. Retransmission-based stream repair and stream join
US7937531B2 (en) * 2007-02-01 2011-05-03 Cisco Technology, Inc. Regularly occurring write back scheme for cache soft error reduction
US8769591B2 (en) 2007-02-12 2014-07-01 Cisco Technology, Inc. Fast channel change on a bandwidth constrained network
US7940644B2 (en) * 2007-03-14 2011-05-10 Cisco Technology, Inc. Unified transmission scheme for media stream redundancy
US20080253369A1 (en) 2007-04-16 2008-10-16 Cisco Technology, Inc. Monitoring and correcting upstream packet loss
ATE494688T1 (de) * 2007-06-19 2011-01-15 France Telecom Für multimedia-datenstrom mit varbiabler rate geeignetes verfahren auf der basis von fehlerkorrekturcodes
US9564988B2 (en) * 2007-07-26 2017-02-07 The Directv Group, Inc. Method and system for forming a formatted content stream and using a cyclic redundancy check
JP5075536B2 (ja) 2007-09-03 2012-11-21 株式会社東芝 Fec送信処理装置、ならびにfec送信処理のための方法およびプログラム
CA2697764A1 (en) 2007-09-12 2009-03-19 Steve Chen Generating and communicating source identification information to enable reliable communications
EP2208138A4 (en) * 2007-09-21 2012-09-19 Hewlett Packard Development Co CREATING A PARALLEL RECOVERY PLAN FOR A DATA STORAGE SYSTEM
EP2088708A1 (en) * 2008-02-08 2009-08-12 Thomson Licensing Method for transmitting data packets with forward error correction
US8787153B2 (en) * 2008-02-10 2014-07-22 Cisco Technology, Inc. Forward error correction based data recovery with path diversity
US8477830B2 (en) 2008-03-18 2013-07-02 On-Ramp Wireless, Inc. Light monitoring system using a random phase multiple access system
US8958460B2 (en) 2008-03-18 2015-02-17 On-Ramp Wireless, Inc. Forward error correction media access control system
US8520721B2 (en) 2008-03-18 2013-08-27 On-Ramp Wireless, Inc. RSSI measurement mechanism in the presence of pulsed jammers
KR101414634B1 (ko) 2008-03-26 2014-08-06 엘지전자 주식회사 의류처리장치
US8327216B2 (en) * 2008-10-22 2012-12-04 Samsung Electronics Co., Ltd. Single-stage decoder for raptor codes
WO2010047462A1 (ko) * 2008-10-22 2010-04-29 삼성전자 주식회사 랩터 코드를 위한 싱글 스테이지 디코더와 이를 이용한 심볼 복원 방법 및 무선 통신 장치
US9281847B2 (en) * 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US8363699B2 (en) 2009-03-20 2013-01-29 On-Ramp Wireless, Inc. Random timing offset determination
US8504847B2 (en) * 2009-04-20 2013-08-06 Cleversafe, Inc. Securing data in a dispersed storage network using shared secret slices
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110280311A1 (en) 2010-05-13 2011-11-17 Qualcomm Incorporated One-stream coding for asymmetric stereo video
US9049497B2 (en) 2010-06-29 2015-06-02 Qualcomm Incorporated Signaling random access points for streaming video data
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9456015B2 (en) 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US20120208580A1 (en) * 2011-02-11 2012-08-16 Qualcomm Incorporated Forward error correction scheduling for an improved radio link protocol
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
KR102028948B1 (ko) * 2011-11-08 2019-10-17 삼성전자주식회사 멀티미디어 통신 시스템에서 어플리케이션 계층-순방향 오류 정정 패킷 송/수신 장치 및 방법
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
KR102027916B1 (ko) 2012-02-27 2019-10-02 삼성전자주식회사 순방향 오류정정스킴을 사용하는 패킷 송수신 장치 및 방법
US8972815B1 (en) * 2012-03-20 2015-03-03 Xilinx, Inc. Recovery of media datagrams
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
KR101961736B1 (ko) * 2012-04-23 2019-03-25 삼성전자 주식회사 통신 시스템에서 패킷 송수신 장치 및 방법
KR20130126876A (ko) 2012-04-30 2013-11-21 삼성전자주식회사 통신 시스템에서 패킷 송수신 방법 및 장치
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
JP2014093584A (ja) * 2012-11-01 2014-05-19 Sony Corp 送信装置、送信方法、受信装置、受信方法およびコンピュータプログラム
US9531780B2 (en) * 2012-11-14 2016-12-27 California Institute Of Technology Coding for real-time streaming under packet erasures
WO2014116301A1 (en) * 2013-01-24 2014-07-31 California Institute Of Technology Joint rewriting and error correction in write-once memories
US10320520B2 (en) * 2013-11-15 2019-06-11 Hitachi, Ltd. Communication device, system and method
JP5671124B1 (ja) * 2013-12-11 2015-02-18 日本電信電話株式会社 前方誤り訂正情報生成装置、前方誤り訂正情報生成方法、および前方誤り訂正情報生成プログラム
TWI523465B (zh) * 2013-12-24 2016-02-21 財團法人工業技術研究院 檔案傳輸系統和方法
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
KR102127641B1 (ko) * 2014-06-20 2020-06-30 삼성전자주식회사 응용 계층 순방향 오류 정정 방식을 사용하여 제공되는 방송 서비스의 수신을 제어하는 방법 및 장치
US10142049B2 (en) 2015-10-10 2018-11-27 Dolby Laboratories Licensing Corporation Near optimal forward error correction system and method
US10164738B2 (en) * 2015-12-16 2018-12-25 Qualcomm Incorporated Interlacing method for high throughput forward error correction
US10110256B2 (en) 2016-09-16 2018-10-23 Micron Technology, Inc. Apparatuses and methods for staircase code encoding and decoding for storage devices
WO2018187902A1 (en) * 2017-04-10 2018-10-18 Qualcomm Incorporated An efficient interleaver design for polar codes
US10594661B1 (en) * 2017-06-13 2020-03-17 Parallels International Gmbh System and method for recovery of data packets transmitted over an unreliable network
EP3457601B1 (en) * 2017-09-13 2019-12-25 Siemens Aktiengesellschaft A method for sending digital data over a number of channels

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5136592A (en) * 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
EP0543070A1 (en) * 1991-11-21 1993-05-26 International Business Machines Corporation Coding system and method using quaternary codes
JP2576776B2 (ja) * 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
JP3614907B2 (ja) * 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
US5983383A (en) * 1997-01-17 1999-11-09 Qualcom Incorporated Method and apparatus for transmitting and receiving concatenated code data
EP0903955A1 (en) 1997-09-04 1999-03-24 STMicroelectronics S.r.l. Modular architecture PET decoder for ATM networks
US7068729B2 (en) * 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) * 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
IT1303735B1 (it) 1998-11-11 2001-02-23 Falorni Italia Farmaceutici S Acidi ialuronici reticolati e loro usi medici.
US6631172B1 (en) * 2000-05-01 2003-10-07 Lucent Technologies Inc. Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels
US6694476B1 (en) * 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
US6738942B1 (en) * 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
KR100464360B1 (ko) * 2001-03-30 2005-01-03 삼성전자주식회사 고속 패킷 데이터 전송 이동통신시스템에서 패킷 데이터채널에 대한 효율적인 에너지 분배 장치 및 방법
US6745364B2 (en) * 2001-06-28 2004-06-01 Microsoft Corporation Negotiated/dynamic error correction for streamed media
US6718503B1 (en) * 2002-01-04 2004-04-06 Itran Communications Ltd. Reduced latency interleaver utilizing shortened first codeword
JP3836858B2 (ja) * 2002-09-27 2006-10-25 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
JP2004165922A (ja) * 2002-11-12 2004-06-10 Sony Corp 情報処理装置および方法、並びにプログラム
JP2004215224A (ja) * 2002-12-20 2004-07-29 Nippon Telegr & Teleph Corp <Ntt> 符号誤り訂正方法、符号誤り訂正システム、プログラム及びそのプログラムを記録した記録媒体
JP2005136546A (ja) * 2003-10-29 2005-05-26 Sony Corp 送信装置および方法、記録媒体、並びにプログラム
FR2869744A1 (fr) * 2004-04-29 2005-11-04 Thomson Licensing Sa Methode de transmission de paquets de donnees numeriques et appareil implementant la methode
US8826093B2 (en) * 2005-01-19 2014-09-02 Qualcomm Incorporated Power saving method for coded transmission

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102804661A (zh) * 2010-03-03 2012-11-28 高通股份有限公司 通信系统中的对象的块聚合
CN108600786A (zh) * 2011-11-30 2018-09-28 三星电子株式会社 用于发送/接收广播数据的装置和方法
CN103793197A (zh) * 2013-12-27 2014-05-14 天津航天中为数据系统科技有限公司 一种喷泉码编译码方法及装置
CN103793197B (zh) * 2013-12-27 2017-02-08 天津航天中为数据系统科技有限公司 一种喷泉码编译码方法及装置
CN106464432A (zh) * 2014-03-14 2017-02-22 爱尔兰梅努斯国立大学 低延迟包纠删编码
CN106464432B (zh) * 2014-03-14 2020-01-07 爱尔兰梅努斯国立大学 低延迟包纠删编码
CN108141228A (zh) * 2015-10-09 2018-06-08 华为技术有限公司 分布式存储系统的编码
CN108667557A (zh) * 2017-03-29 2018-10-16 上海交通大学 一种基于媒体内容的自适应fec编码矩阵设计方法
CN109982083A (zh) * 2017-12-28 2019-07-05 欧鹏斯泰克公司 用以重新排列数据包传输顺序的图像编码装置及其运行方法
CN111858128A (zh) * 2019-04-26 2020-10-30 深信服科技股份有限公司 一种纠删码数据修复方法、装置、设备及存储介质
CN111858128B (zh) * 2019-04-26 2023-12-29 深信服科技股份有限公司 一种纠删码数据修复方法、装置、设备及存储介质

Also Published As

Publication number Publication date
KR20080027825A (ko) 2008-03-28
EP1908171A2 (en) 2008-04-09
CN101432969B (zh) 2012-07-18
JP2008546361A (ja) 2008-12-18
JP2012249303A (ja) 2012-12-13
JP2016040926A (ja) 2016-03-24
WO2006135877A3 (en) 2008-09-04
WO2006135877A2 (en) 2006-12-21
KR101184242B1 (ko) 2012-09-21
US20060279437A1 (en) 2006-12-14
JP5123174B2 (ja) 2013-01-16
US7676735B2 (en) 2010-03-09
EP1908171A4 (en) 2011-12-14

Similar Documents

Publication Publication Date Title
CN101432969B (zh) 前向纠错(fec)编码和流送
US9876607B2 (en) Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
JP5485302B2 (ja) ファイルダウンロードおよびストリーミングのシステム
EP2290826B1 (en) Lost packet recovery method for packet transmission protocols
US7720174B2 (en) Multi-stage code generator and decoder for communication systems
US7412641B2 (en) Protection of data from erasures using subsymbol based codes
CN101427495A (zh) 用于通信系统的基于多域的码生成器的解码器
CN101540778B (zh) 一种数据传输的方法、装置和系统
CN103152652A (zh) 一种基于柯西rs编码的视频帧数据网络传输方法
CN102523072A (zh) 具有检错纠错功能的lt码编译码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1133127

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1133127

Country of ref document: HK

TR01 Transfer of patent right

Effective date of registration: 20180417

Address after: American California

Patentee after: Qualcomm Inc.

Address before: American California

Patentee before: Digital Fountain Inc.

Effective date of registration: 20180417

Address after: American California

Patentee after: Qualcomm Inc.

Address before: American California

Patentee before: Digital Fountain Inc.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120718

Termination date: 20190612

CF01 Termination of patent right due to non-payment of annual fee