CN104052503B - 纠错码 - Google Patents
纠错码 Download PDFInfo
- Publication number
- CN104052503B CN104052503B CN201410097174.4A CN201410097174A CN104052503B CN 104052503 B CN104052503 B CN 104052503B CN 201410097174 A CN201410097174 A CN 201410097174A CN 104052503 B CN104052503 B CN 104052503B
- Authority
- CN
- China
- Prior art keywords
- packet
- source packet
- encoded
- matrix
- window
- 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.)
- Active
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供一种用于传送一纠错码的方法。该方法包括接收一源分组、在接收源分组之后推进一滑动编码器窗口以及通过当经填塞的分组第一次被编码时单独编码源分组以及在第一次之后当源分组被编码数次时利用滑动窗口中的较旧源分组对源分组进行编码来生成经编码的分组。
Description
技术领域
本发明总地涉及通信领域,并且更具体地涉及纠错码。
背景技术
纠错码用于降低在噪声信道上通信时的错误率。一种典型的纠错码传送比必须的要更多的符号,使得收到一破坏的符号流时,只要该破坏不是很大,仍允许原始消息被重构。
当一纠错码在源符号数目对于所传送的符号数目有一固定比例时,该码具有一固定速率。当一纠错码允许速率在传送期间改变时,该码具有可变速率。例如,速率可适应于通信信道当中变化的条件。
典型的可变速率码在消息的一实质部份被接收的情况下具有一长的解码延迟。虽然对于文件传送这样可能不会造成问题,但如果消息为诸如一视频会议的消息的某种即时音频或视频流时,此延迟即为不可取的。要避免此问题的一种方法为通过使用一滑动窗口,其中所传送的符号为源消息的一连续性小片段的一函数(窗口)。窗口初始时涵盖该消息的一前缀,且其随着传送进行而向前移动。
发明内容
本发明提供一种传送一纠错码的方法。方法包含:接收一源分组(packet);在接收所述源分组之后,推进一滑动编码器窗口;生成经编码的分组,包含:第一次编码所述源分组,包含单独编码所述源分组;以及在所述第一次之后编码所述源分组数次,其中所述数次等于或大于0,并且在所述第一次之后所述数次中的每次编码所述源分组包含利用所述滑动窗口中的数个较旧源分组来编码所述源分组,所述滑动窗口中的较旧源分组的数目等于或大于0;以及在一通信信道上传送所述经编码的分组。
附图说明
本发明的前述及其它特征将可结合附图从下面的描述及附属权利要求中更加显而易见。应了解到这些图仅描述根据本发明的数个实施例,因此不应视为本发明范围的限制,本发明将透过使用附图来利用附加的特定性与细节加以描述。
图1为本发明的示例中一种具有一编码器与一解码器的系统的方块图。
图2为例示本发明的示例中图1的编码器的操作的方块图。
图3和图4为在本发明的示例中一种用于图1的编码器来传送一纠错码的方法的流程图。
图5、图6、图7和图8演示在本发明的示例中图3和图4的编码方法。
图9和图10分别示出伽罗瓦域(GF,“Galois field”)(16)的加法与乘法表。
图11示出在本发明的示例中由图1的解码器所维持的一解码矩阵。
图12和图13为在本发明的示例中一种用于图1的解码器来解码一纠错码的方法的流程图。
图14、图15、图16以及图17演示在本发明的示例中图12和图13的解码方法。
图18为在本发明的示例中一种用于实现图1的编码器或解码器的计算设备的方块图。
具体实施方式
如本文所使用的,术语“包括(include)”代表包括但不限于之意,术语“包含(including)”代表包含但不限于之意。术语“一”(“a"与”an”)意图注明一特定元件中的至少一个。术语“基于(based on)”代表至少部份基于之意。术语“或”用于指代一非排除性,使得A或B包括“A但无B”,“B但无A”,以及“A与B”,除非另有指明。
在本发明的示例中,提供了方法与装置来生成并解码一纠错码。该码可在互联网协议(IP,“Internet Protocol”)上操作,所以其可在软件、硬件或其组合中实现,而都不会改变既有的互联网基础设施。
高阶说明
图1为本发明的示例中一系统100的方块图。系统100包括一编码器102,其处理一源流104(例如来自连接到一视频摄影机的一视频编解码器)以产生一经编码流106。源流104可具有可变大小的分组的形式。如果源流104是纯字节流,则编码器102可选择方便的分组大小。编码器102经由一通信信道108传送经编码流106到一解码器110,其返回应该等于源流104的一经解码流112(例如到连接至一视频宿(sink)的一视频编解码器)。源流104包括一分组序列。源流104中的分组可有不同长度。信道108可删除、延迟、重新排列或复制经编码流106中的分组。信道108可以不递送损坏的分组,其将由信道108中的错误检测机制检测到并删除,所述错误检测机制诸如分组校验和或循环冗余校验(CRC)码。
编码器102与解码器110二者事先都同意使用一有限域F进行编码操作。该有限域F可为伽罗瓦域GF(28)。编码器102与解码器110也同意采用在有限域F中生成伪随机值的一伪随机数发生器(PRNG,“Pseudorandom number generator”)。
编码器102在一滑动编码器窗口L≤i<R中对源分组si进行操作,其中L、i与R为分组的名义序列号,其用于控制编码器102的操作。名义序列号可由编码器102选择,因为它们确实出现在源流104中并且解码器110不在经解码流112中传递它们。编码器102选择W=R-L个伪随机系数ci,将每个源分组si乘以一个对应的系数,并传送这些乘积的总和。因为源分组si具有变化的长度,一常规的编码器可单独地传送源分组si的长度,造成一正比于编码器窗口大小W的协议开销。相反地,编码器102具有无关于编码器窗口大小W的一恒定开销。编码器102对向量(li,s’i)进行编码而非对源分组si进行编码,其中li为源分组si的长度,而s’i为填有足够的零(0)的源分组si,使得编码器窗口中的所有的分组s’i都具有相同的长度。例如,向量(li,s’i)包含(lL,s’L)(lL+1,s’L+1)(lL+2,s’L+2)…(lR-1,s’R-1)。
解码器110重构向量(li,s’i),其足以唯一地重构源分组si。解码器110接收源分组si的线性组合,并通过求解一线性方程组来解码它们。一常规的解码器可以使用高斯-约当(Gauss-Jordan)消去法来求解该线性方程组。相反地,解码器110可使用上下(LU,“Lowerupper”)分解来求解该线性方程组。为了解码长度k的N个分组,常规解码器使用与N*(N*N+N*k)成比例的时间,而解码器110使用的时间为W*(N*N+N*k),只要解码器窗口不太大,则其要小得多。注意解码器110可以使用其他方法来求解线性方程组。
针对每个接收到的分组,解码器110知道编码器窗口大小W以及该编码器窗口的开始位置L。编码器102将这些值作为开销传送到解码器110。解码器110还知道伪随机编码系数。编码器102使用自PRNG汲取的系数。解码器110具有PRNG的一拷贝,其将生成相同的系数序列,前提是解码器的PRNG具有与编码器的PRNG相同的内部状态。内部状态可通过传送编码器的PRNG的种子、传送编码器的PRNG的内部状态作为开销或用于固定的PRNG、传送编码器的PRNG的开始序列号用于一特定分组而被同步化。
编码器状态
在本发明的示例中,编码器102维持以下的状态变量:
L:整数,用于编码器窗口的“左”边界的助记符,初始设定为1(或另一数字,取决于最初第一个源分组的名义序列值)。
R:整数,用于编码器窗口的“右”边界的助记符,初始设定为1(或另一数字,取决于最初第一个源分组的名义序列值)。
M:实数,代表编码进度,初始设定为1(或另一数字,取决于最初第一个源分组的名义序列值而定),并可为一有理数或具有常数分母的分数。
在其操作期间,编码器102生成在编码器窗口L≤i<R中的源分组si的组合。
在本发明的示例中,以下两个参数控制编码器102的操作:
速率:实数,0<速率≤1,其为纠错码的“速率”。针对每一经编码的分组,编码器102消耗速率个源分组。相等地,针对每一源分组,编码器102产生1/速率个编码分组。
WE:最大编码器窗口大小。在正常操作期间,0≤R-L≤WE。
在本发明的示例中,编码率与最大编码器窗口大小WE可随时间变化。一较低编码率适用于具有较大错误率的状况,而一较大的编码器窗口适用于可以容忍额外解码迟延的状况。
编码器的操作
图2为例示本发明的示例中编码器102的操作的方块图。编码器102维持一源分组si的编码器窗口[L,R)。例如,编码器窗口[1,4)包括源分组s1、s2与s3。编码器102通过对每个源分组si预置其长度li来扩增源分组si以形成经扩增的分组ai。可选地,编码器102还对每个源分组si预置其名义序列号i。编码器102通过将零(0)附加到经扩增的分组ai来填塞源分组si以形成经填塞的分组pi,如果需要,这样在编码器窗口[L,R)中的所有经填塞的分组pi具有相同的长度。编码器102输出所有经填塞的分组pi的线性组合。
当编码器102自源流104接收到一新的源分组si时,在本发明的示例中编码器102可依下述操作。
1.(经扩增的分组的形成)假设编码器接收到源分组si,即源流102中第i个分组。假定li为源分组si的长度。
编码器102形成一经扩增的分组ai=(i,li,si)。也就是说,经扩增的分组ai包括源分组si的名义序列号i、源分组si的长度li,及源分组si本身。名义序列号i为可选地使用,并可用于侦错。例如参照图2中的经扩增的分组a1与a3。
2.增量R来推进编码器窗口的右边缘的时间。
3.(调整编码器窗口)如果R-L>WE,则增量L来保持该编码器窗口小于最大编码器窗口大小WE。
4.(经填塞的分组的形成)假定k为编码器窗口L≤i<R中的经扩增的分组ai的最大长度。针对编码器窗口L≤i<R中的每个经扩增的分组ai,通过利用零扩展ai直到其长度为k来形成一经填塞的分组pi。在此,“零”为有限域F中的零。例如参照图2中的经填塞的分组p1与p3。
5.假定第一(第一)=真。该变量“第一”用于确定一经填塞的分组pi是否为第一次被编码。
6.(生成经编码的分组)当M≤R时,进行下述:
a)(伪随机种子的选择)如果第一为真,假定r=0。否则,假定r为一任意的非零随机种子。
当经填塞的分组pi为第一次被编码时,此逻辑结合于下一步骤由一经填塞的分组编码其本身。否则经填塞的分组pi通过将其结合于在编码器窗口中的所有其它经填塞的分组来编码。
b)(伪随机数的生成)如果r≠0,针对L≤i<R,使用r来生成随机系数ci∈F。
否则(r=0),针对L≤i<R<1假定ci=0,并假定cR-1=1F。此处1F为F的乘法单位(identity)。
c)设定第一:=假。
d)(产生经填塞的分组的一线性组合)将经填塞的分组pi解译为向量空间Fk之上的元素,计算下式:
因此,经编码的分组b的首字节为系数向量c与由经填塞的分组p的首字节所构成的向量的内积,其中该算术使用所选择的伽罗瓦域中的加法与乘法。换言之,第一个经填塞的分组中的每个值与第一系数相乘,第二个经填塞的分组中的每个值与第二系数相乘,以此类推。经编码的分组b中的每个值是经相乘的分组中的对应符号的和。
e)(传送)在信道108上发送元组(L,R,r,b)。该元组也可称为经编码的分组。在一些示例中,(L,R,r)的数据压缩或隐式版本被传送。隐式传送可包括传送一分组校验和中的一值,而不需要实际传送该值,其中解码器110搜寻使得该校验和正确的一值。
f)(增量M)设定M:=M+速率。R、M与编码率的使用允许每一个经填塞的分组pi由其本身编码一次,并且在第一次之后由在编码器窗口中的其它经填塞的分组编码数次(≥0)。
图3和图4示出在本发明的示例中一种编码器102用来传送一纠错码的方法300的流程图。方法300可开始于图3中的方块302。
在方块302,编码器102设定以下变量:左编码器窗口边界L、右编码器窗口边界R、编码进度M、编码率、及最大编码器窗口大小WE。方块302可由方块304跟随在后。
在方块304,编码器102开始接收源流104中的源分组si。方块304可由方块306跟随在后。
在方块306,编码器102开始以源分组si的名义序列循环通过源分组si。方块306可由方块308跟随在后。
在方块308,编码器102基于源分组si形成一经扩增的分组ai=(i,li,si)。方块308可由方块310跟随在后。
在方块310,编码器102通过增量编码器窗口右边界R来推进该编码器窗口。方块310可由方块312跟随在后。
在方块312,编码器102确定编码器窗口是否小于最大编码器窗口大小WE。如果小于,则方块312可由方块316跟随在后。否则方块312可由方块314跟随在后。
在方块314,编码器102通过增量编码器窗口左边界L来维持编码器窗口大小。方块314可由方块316跟随在后。
在方块316,编码器102确定在编码器窗口L≤i<R中的经扩增的分组ai的最大长度k,并通过将零附加到经扩增的分组ai直到它们全部具有长度k来填塞它们。方块316可由图4中的方块318跟随在后。
在方块318,编码器102设定变量第一为真(例如1)以表示经填塞的分组pi要进行第一次编码。如下所述,在第一次编码经填塞的分组pi之后,编码器102设定变量第一为假(例如0)。方块318可由方块320跟随在后。
在方块320,编码器102确定经填塞的分组pi是否要(再次)被编码。如果是,方块320可由方块322跟随在后。否则,方块320可由方块306跟随在后以选择下一个源分组si进行处理。
经填塞的分组pi要在其尚未被编码某个次数时(再次)被编码。编码器102使用编码进度M来做出此确定。如下述,编码器102在编码经填塞的分组pi之后,增量编码进度M该编码率。编码器102在编码进度M小于或等于编码器窗口右边界R的同时(再次)编码经填塞的分组pi。
在方块322,编码器102确定经填塞的分组pi是否要第一次被编码。换言之,编码器102确定变量第一是否被设定为真。如果是,则方块322可由方块324跟随在后。否则方块322可由方块328跟随在后。
在方块324,编码器102设定PRNG的种子r为零(0),以指示经填塞的分组pi要由其本身编码,而不需要在编码器窗口中的任何其它稍早的经填塞的分组pi来编码。方块324可由方块326跟随在后。
在方块326,编码器102针对L≤i<R–1设定ci=0,并设定cR-1=1F,其中1F为F的乘法单位。方块326可由方块332跟随在后。
在方块328,编码器102假定用于PRNG的种子r为一任意的非零随机数。方块328可由方块330跟随在后。
在方块330,编码器102使用种子r来生成伪随机系数ci,其中针对L≤i<R,ci∈F。方块330可由方块332跟随在后。
在方块332,编码器102设定变量第一为假(例如0)。方块332可由方块334跟随在后。
在方块334,编码器102依照方程式1线性地结合在编码器窗口中的系数ci与对应的经填塞的分组pi的乘积以形成经编码的分组b。在编码器窗口中的经填塞的分组pi包括在编码器窗口的当前的经填塞的分组pR-1以及稍早的经填塞的分组pL…pR-2。方块334可由方块336跟随在后。
在方块336,编码器102在通信信道108之上传送一元组(L,R,r,b)作为一经编码的分组。方块336可由y个方块338跟随在后。
在方块338,编码器102增量编码进度M该编码率。方块338可由方块320跟随在后,以确定经填塞的分组pi是否要再次被编码。
编码过程的演示
图5、图6、图7以及图8演示在本发明的示例中传送一消息的方法300。在此演示中,编码器102(图1)使用GF(16)域,其中在该域中的每一符号可表示成从0000到1111的4位的数字,或以十进位来说是0到15。
针对该演示,假设编码器102要传送消息“Quanta”。此消息为6个字符长,每一字符根据ASCII码为8位。该消息中的每一字符可由其低4位接着其高4位来表示。例如,“Q”的ASCII码为0x51,其可表示成两个符号消息15,而整个消息“Quanta”成为1557161464716。假设此12个符号消息被分成具有随机长度3、4、3与2的名义源分组,如表1所示。
表1
分组 | 长度 | 数据 |
1 | 3 | 155 |
2 | 4 | 71614 |
3 | 3 | 647 |
4 | 2 | 16 |
因为该消息已经被分成4位的符号,所以它们可表示成在GF(16)域中的符号。这些源分组被顺序地发送到编码器102。
在图5、图6、图7以及图8中,在该编码过程中的伪随机系数的生成示出为步骤324/328和326/330,并且经填塞的分组的线性组合的产生示出为步骤334。如上所述,编码器102使用一PRNG生成伪随机系数。当设定为一特定种子值时,该PRNG在此后产生同一伪随机数集,直到该种子被改变。编码器102传送用于生成经编码的分组的种子值到解码器110,所以解码器的PRNG与编码器的PRNG被同步,即使分组损失,或未依顺序传递。在本发明的示例中,PRNG不会输出任何的零(0),因为零(0)并非一有利的系数。同时也如上所述,零(0)并未用作一种子值,因为编码器102设定种子r为零(0),以指示一经填塞的分组要由其本身编码。
经编码的分组基于伪随机系数由经填塞的分组的随机线性组合所形成。考虑具有两个系数c1与c2的两个经填塞的分组e与f,该线性组合c1e+c2f系根据伽罗瓦域算术的规则来计算。图9与图10分别示出用于GF(16)域的加法与乘法表。
图5示出在本发明的示例中源分组s1的处理,其长度为3,且数据为155。初始时,编码器102设定编码器窗口左边界L为1、编码器窗口右边界R为1、编码进度M为1,编码率为0.5,且最大编码器窗口大小WE为3。编码器102基于源分组s1形成一经扩增的分组a1,并且基于经扩增的分组a1形成一经填塞的分组p1。请注意编码器102不会将任何的零(0)附加到经扩增的分组a1,因为在编码器窗口[1,1)中仅有一个经扩增的分组,所以不需要使得编码器窗口[1,1)中的所有经填塞的分组pi都具有相同长度。同时请注意到,编码器102在经扩增的分组a1被形成之后增量编码器窗口右边界R以推进编码器窗口到[1,2)。
经填塞的分组p1被编码三次。当经填塞的分组p1第一次被编码时,种子r被设定为零(0),所以经填塞的分组p1由其本身利用一单位系数进行“编码”,所以经编码的分组与经填塞的分组相同。当经填塞的分组p1在每个后续次数被编码时,种子r被设定为一随机数,且一伪随机系数基于种子r利用PRNG来生成。因为在编码器窗口[1,2)中不存在稍早的经填塞的分组p1,所以方程式(1)仅产生经填塞的分组p1与伪随机系数的乘积。在每一次经填塞的分组p1被编码之后,编码进度M被增量该编码率。一旦编码进度M大于编码器窗口右边界R,编码器102就处理下一个源分组。
图6示出在本发明的示例中源分组s2的处理,其长度为4,且数据为71614。编码器102基于源分组s2形成一经扩增的分组a2,并基于经扩增的分组a2形成一经填塞的分组p2。编码器102在经扩增的分组a2被形成之后增量编码器窗口右边界R以推进编码器窗口到[1,3)。编码器102将一个零(0)附加到经扩增的分组a1,所以在编码器窗口[1,3)中经填塞的分组p1与p2具有相同长度。
经填塞的分组p2被编码两(2)次。当经填塞的分组p2第一次被编码时,种子r被设定为零(0),所以经填塞的分组由其本身利用一单位系数进行“编码”,所以经编码的分组与经填塞的分组相同。当经填塞的分组p2第二次被编码时,种子r被设定为一随机数,且两(2)个伪随机系数基于种子r利用PRNG生成。依照方程式(1)将经填塞的分组p1、p2与两个伪随机系数的乘积进行线性组合。
图7示出在本发明的示例中源分组s3的处理,其长度为3,且数据为647。编码器102基于源分组s3形成一经扩增的分组a3,并基于经扩增的分组a3形成一经填塞的分组p3。编码器102在经扩增的分组a3被形成之后增量编码器窗口右边界R以推进编码器窗口到[1,4)。编码器102将一个零(0)附加到经扩增的分组a1与a3,所以在编码器窗口[1,4)中经填塞的分组p1、p2与p3具有相同长度。
经填塞的分组p3被编码两(2)次。当经填塞的分组p3第一次被编码时,种子r被设定为零(0),所以经填塞的分组由其本身利用一单位系数进行“编码”,所以经编码的分组与经填塞的分组相同。当经填塞的分组p3第二次被编码时,种子r被设定为一随机数,且三(3)个伪随机系数基于种子r利用PRNG产生。依照方程式(1)将经填塞的分组p1、p2、p3与三个伪随机系数的乘积进行线性组合。
图8示出在本发明的示例中源分组s4的处理,其长度为2,且数据为16。编码器102基于源分组s4形成一经扩增的分组a4,并基于经扩增的分组a4形成一经填塞的分组p4。编码器102在经扩增的分组a4被形成之后增量编码器窗口右边界R以推进编码器窗口到[1,5)。编码器窗口左边界由1增量到2,以维持最大编码器窗口大小WE。编码器102将一个零(0)附加到经扩增的分组a3与a4,所以在编码器窗口[2,5)中经填塞的分组p2、p3与p4具有相同长度。
经填塞的分组p3被编码两(2)次。当经填塞的分组p3第一次被编码时,种子r被设定为零(0),所以经填塞的分组由其本身利用一单位系数进行“编码”,所以经编码的分组与经填塞的分组相同。当经填塞的分组p3第二次被编码时,种子r被设定为一随机数,且三(3)个伪随机系数基于种子r利用PRNG生成。依照方程式(1)将经填塞的分组p1、p2、p3与三个伪随机系数的乘积进行线性组合。
解码器概述
解码器110在步骤6e接收由编码器102所传送的元组(LE,RE,r,b),并重构源分组。以下具有下标“E”的变量为编码器的值,具有下标“D”的变量为解码器的值。在本发明的示例中,为了重构源分组,解码器110维持一解码矩阵1100,如图11所示。
请回想编码器102根据方程式(1)组合经填塞的的分组。因此,编码器102计算B=AX,其中A为由PRNG所计算的一伪随机系数的矩阵,X为一矩阵,其行是经填塞的分组(经填塞的分组的列向量),并且B为利用方程式(1)所计算的矩阵(经编码的分组的列向量)。
在原则上,A、B与X为无限矩阵。然而对于某个窗口大小WD,针对L≤i、j<L+WD,解码器110仅保持A的一子矩阵Aij。窗口大小WD可被设定为至少与最大编码器窗口大小WE一样大,并可能更大。
当接收一元组(LE,RE,r,b)时,解码器110重构在步骤6b中由编码器102所计算的系数c,并输入伪随机系数c与经编码的分组b作为解码矩阵1100的一新的行。
然后解码器110降低解码矩阵1100为一行阶梯形矩阵(row-echelon form)。一矩阵如果一行的首项系数严格地在它上方的所有行的首项系数的右方时即为行阶梯形矩阵,其中一行的首项系数为该行中最左方的非零条目。
A的子矩阵如果对于i<MD’来说所有对角线条目Aii为非零并且如果对于i<MD’与j≥MD’来说Aij为零,则其被称为可解码最高到行MD’。因此,该矩阵可被解码最高到行2,而非最高到行3,这是由于第四行尚未被填充,所以第三行中的第二个系数c无法利用第四行被消去。
每当A的子矩阵可解码最高到行MD’时,第一个MD’行可经由后向替换(backwardsubstitution)来降低为单位,允许该第一个MD’经填塞的分组被解码。
在本发明的示例中,解码器110经由行阶梯形矩阵(REF)加上后向替换来操作,而一常规的解码器降低该矩阵为经降低的行阶梯形矩阵(RREF)。REF在利用由编码器102所使用的矩阵的带状结构时可能远胜于RREF。
请参照图11,在本发明的示例中,解码器110维持解码矩阵1110。一空的条目表示零(0),“c”表示一系数,并且“b”表示来自从信道108所接收的一经编码的分组的一数据项。解码矩阵1110具有[A||B]形式,其中A为伪随机系数,B为数据元素。解码器110要针对X来求解方程组AX=B,其中B为自信道108所接收的经编码的分组,X为源分组的重构,并且A为伪随机系数的矩阵(在图11中的1、0与c)。每一行对应于一经解码的分组,每一列对应于一源分组。解码器110将A维持在行阶梯形矩阵,如图11所示。每当有可能时,解码器110针对i、j<MD,将解码矩阵1100的一前缀Aij降低为单位矩阵。当此状况发生时,针对i<MD的源分组i已经被解码。A矩阵在原则上为无限的,但解码器110仅将行/列的滑动解码器窗口i维持在LD≤i<LD+WD的范围中。
解码器的操作
解码器110利用初始被设定为所接收的元组中的编码器窗口左边界LE的相关联的状态变量解码器窗口左边界LD和解码进度MD来维持如上所述的解码矩阵1100。解码器110存储矩阵A的行/列[LD,LD+WD),并且解码矩阵1100始终可解码最高到行MD并且可解码最高到行MD’。
当接收一元组(LE,RE,r,b)时,解码器的操作如下述:
1.(丢下旧分组)如果LE<LD则停止。该分组在给定的解码器窗口大小WD之下太旧而无法被解码。
2.(调整解码窗口)如果RE>LD+WD,设定LD=RE-WD。在此步骤之后,RE≤LD+WD且所接收到的元组落在解码器窗口之内。
3.(遗失的通知)如果MD<LD,则通知使用者源分组[MD’,LD)已经遗失,并设定MD:=LD。使用者可为另一个应用,诸如一视频编解码器。
4.(扩增解码矩阵)生成如解码器102的步骤6b中的系数c。将c与b加入到解码矩阵1100的第一个零行。
5.(降低到行阶梯形矩阵)经由初等行操作降低A到行阶梯形矩阵。将相同的行更新应用到矩阵A与B。
6.(批量解码)假定MD’为矩阵A可被解码最高的第MD’行的最大整数。
如果MD’>MD,经由向后替换来解码在范围[MD,MD’)中的经编码的分组。
7.(传递经解码的分组)当MD<MD’时,进行下述动作:
a)矩阵B的第MD行包含第MD个经填塞的分组pM。从经填塞的分组pM撷取源分组,并将其传递给使用者。
b)增量MD。
图12和图13为本发明的示例中一种解码器110(图1)用于解码一纠错码的方法1200的流程图。方法1200可开始于图12中的方块1202。
在方块1202,解码器110设定最大解码器窗口大小WD。方块1202可由方块1204跟随在后。
在方块1204,解码器110开始在通信信道108上接收元组。解码器110设定解码器窗口边界LD和解码进度MD等于所接收的第一元组中的编码器窗口左边界LE,并且设定解码器窗口右边界RD等于所接收的第一元组中的编码器窗口右边界RE。方块1204可由方块1206跟随在后。
在方块1206,解码器110开始以元组被接收的次序循环通过它们。方块1206可由方块1208跟随在后。
在方块1208,解码器110确定元组中的经编码的分组是否对于一给定的解码器窗口为太旧(例如LE<LD)。如果是,则方块1208可由方块1210跟随在后。否则方块1208可由方块1212跟随在后。
在方块1210,解码器110丢下旧的经编码的分组。方块1210可循环回到方块1206以处理下一个元组。
在方块1212,解码器110确定经编码的分组是否在解码器窗口之内(例如RE>LD+WD)。如果是,则方块1212可由方块1214跟随在后。否则方块1212可由方块1216跟随在后。
在方块1214,解码器110移动解码器窗口左边界L(例如设定LD=RE–WD),所以经编码的分组落在经解码窗口之内。方块1214可由方块1216跟随在后。
在方块1216,解码器110确定是否已经遗失比当前的经编码的分组旧的任何经编码的分组(例如MD<LD)。如果是,则方块1216可由方块1218跟随在后。否则方块1216可由方块1220跟随在后。
在方块1218,解码器110通知使用者源分组[MD,LD)的遗失,并设定解码进度MD等于解码窗口左边界LD。方块1218可由方块1220跟随在后。
在方块1220,解码器110通过基于在元组中所接收的种子r生成伪随机系数c,将伪随机系数c与经编码的分组b相加作为解码矩阵1110的一新的行来扩增解码矩阵1100。方块1220可由方块1222跟随在后。
在方块1222,解码器110降低解码矩阵1110为一行阶梯形矩阵。方块1222可由图13中的方块1224跟随在后。
在方块1224,解码器110确定解码矩阵1110中的矩阵A是否能够被进一步解码最高到一行MD’。例如,解码器110确定矩阵A是否可被解码最高到行MD’,然后确定矩阵A是否已经被解码最高到行MD’(例如MD’>MD)。如果矩阵A可被进一步解码最高到行MD’,方块1224可由方块1226跟随在后。否则方块1224可循环回到方块1206以处理下一个元组。
在方块1226,解码器110解码在范围[MD,MD’)中的经编码的分组。如上述,解码器110可以使用向后替换来解码经编码的分组。方块1226可由方块1228跟随在后。
在方块1228,解码器110确定是否存在在方块1226中从经编码的分组所解码的任何源分组要被传递到使用者(例如MD<MD’)。如果存在,方块1228可由方块1230跟随在后。否则方块1228可循环回到方块1206以处理下一个元组。
在方块1230,解码器110自矩阵B的第MD行取得一经填塞的分组,自该经填塞的分组撷取一源分组,并传递该源分组到使用者。方块1230可由方块1232跟随在后。
在方块1232,解码器110增量解码进度MD。方块1232可循环回到方块1228。
解码过程的演示
图14、图15、图16以及图17演示在本发明的示例中对元组/经编码的分组进行解码的方法1200。此为该稍早演示的延续,其中编码器102(图1)生产九(9)个经编码的分组,如表2所示。
表2
LE | RE | r | 数据 |
1 | 2 | 0 | 13155 |
1 | 2 | 477 | 10131044 |
1 | 2 | 448 | 2621010 |
1 | 3 | 0 | 2471614 |
1 | 3 | 244 | 31111111312 |
1 | 4 | 0 | 336470 |
1 | 4 | 503 | 96821310 |
2 | 5 | 0 | 421600 |
2 | 5 | 305 | 01123111 |
为了演示解码器110(图1)的能力,假设前四(4)个经编码的分组已经遗失,并且经编码的分组5、6、7以及8已被接收。
图14示出在本发明的示例中第五个经编码的分组的处理。初始时,解码器110设定解码器窗口左边界LD为1、解码进度M为1、并且解码器窗口大小WD为3。因为在解码矩阵中仅存在一行,所以解码器110并不降低解码矩阵为行阶梯形矩阵,并继续处理下一个经编码的分组。
图15示出在本发明的示例中第六个经编码的分组的处理。现在在解码矩阵中存在两行,但解码器110不会降低解码矩阵为行阶梯形矩阵,因为该解码矩阵已经为行阶梯形矩阵。
图16示出在本发明的示例中第七个经编码的分组的处理。现在在解码矩阵中存在三行。为了降低该解码矩阵成为行阶梯形矩阵,在步骤1222,解码器110使用A(0,0)来清除A(2,0)。换言之,解码器110使用初等行操作来组合行0(其包含A(0,0))与行2(其包含A(2,0)),以这样的方式来使得A(2,0)==0。这通过将行0乘以因子A(2,0)/A(0,0),然后从行2减去它来完成。
A(2,:)=A(2,:)-(A(2,0)/A(0,0))*A(0,:)
注意标记(notation)A(0,:)指代二维矩阵A的行0。类似地,解码器110通过使用初等行操作来互换行1与2,以交换A(1,:)与A(2,:)。
在步骤1224,解码器110使用初等行操作来将新的可解码行由行阶梯形矩阵转换成经降低的行阶梯形矩阵。解码器110通过将A(0,0)乘以一因子1/A(0,0)来缩放A(0,0),使得之后A(0,0)将等于1。这是可能的,因为在一域中的每一个非零的元素具有一乘法逆元(multiplicative inverse)。解码器110通过将行2乘以因子A(1,2)/A(2,2),然后自行1减去行2来替换A(2,2)以清除A(1,2)。这将设定A(1,2)为0。
在步骤1224中的过程被称为向后替换,并可应用在从矩阵中的右下方到左上方的一序列中以最小化工作量。
当解码矩阵的系数区段具有一单个1时,则该系数矩阵的数据部分恰好为对应于该1的位置的来自编码器102的经填塞的分组。降低为行阶梯形矩阵确保解码矩阵的每一行不包含关于稍早的源分组的信息。在行成为可解码的之后,最后的向后替换步骤确保每一行不包含关于稍后的源分组的信息。因此,在该点处每一经解码的行恰好具有可被读出并传递的一个源分组。
图17示出在本发明的示例中第八个经编码的分组的处理。在步骤1212到1214,解码器110通过设定解码器窗口左边界LD等于2(LD=RE–WD=5–3=2)来推进解码器窗口。注意,为了节约存储器,解码器110可以推进解码器窗口以丢弃伪随机系数和所传递的在解码器窗口之外的源分组。
编码器102与解码器110(图1)可在软件、硬件或软件与硬件的组合中实现。图18为在本发明的示例中一种用于实现编码器102或解码器110的计算设备1800的方块图。用于传送并解码纠错码的码1802存储在一非暂时性计算机介质1804中,诸如一只读存储器。一处理器1806执行指令1802来提供所描述的特征与功能性,并通过一网络接口1808传送或接收经编码的分组。
商业应用
本发明可以改善Wi-Fi或移动电话网络上的视频会议的质量。Wi-Fi网络已经被测量,且已经观察到有意义的分组遗失,其可由本发明的编码器102、解码器110以及纠错码来解决。
本发明可应用到其中存在多个通信路径的情况,诸如具有多个蜂窝调制解调器的移动系统。
本发明可以授权给一移动运营商(3G/4G等)以改善手机与基站之间的通信。
本发明可以作为一云服务(使用在该云中的一代理端点)提供给个人客户以改善移动通信并提供一多路径解决方案。
由前所述,将理解本文已出于例示的目的描述了本公开的各实施例,并且可做出各种修改而不脱离本公开的精神和范围。因此,本文所公开的各实施例并非意图限制,其真实范围和精神由以下的权利要求所指明。
符号说明
100 系统
102 编码器
104 源流
106 经编码流
108 信道
110 解码器
112 经解码流
300 方法
302、304、306、308、310、312、314、316、318、320、322、324、326、328、330、332、334、336、338 方块
1200 方法
1202、1204、1206、1208、1210、1212、1214、1216、1218、1220、1222、1224、1226、1228、1230、1232 方块
1800 计算设备
1802 码
1804 非暂时性计算机可读介质
1806 微处理器
1808 网络接口
Claims (20)
1.一种传送一纠错码的方法,所述方法包含:
接收一源分组,所述源分组包括来自有限域的符号;
在接收所述源分组之后,推进一滑动编码器窗口;
生成经编码的分组,包含:
第一次编码所述源分组,包含单独编码所述源分组;以及
在所述第一次之后编码所述源分组数次,其中所述数次等于或大于0,并且在所述第一次之后所述数次中的每次编码所述源分组包含利用所述滑动编码器窗口中的数个较旧源分组来编码所述源分组,所述滑动编码器窗口中的较旧源分组的数目等于或大于0;以及
在一通信信道上传送所述经编码的分组,所述传送包括传送每一经编码的分组连同所述滑动编码器窗口的左边界和右边界与用于编码所述源分组的种子。
2.根据权利要求1所述的方法,在生成经编码的分组之前,进一步包含:
通过对所述源分组增加所述源分组的长度扩增所述源分组;以及
通过对所述源分组增加数个0填塞所述源分组,使得所述源分组和所述滑动编码器窗口中的所述较旧源分组具有相同的长度。
3.根据权利要求1所述的方法,其中:
第一次编码所述源分组包含设定所述源分组为所述经编码的分组之一;以及
传送所述经编码的分组包括传送所述经编码的分组之一连同设定为非随机值的所述种子。
4.根据权利要求3所述的方法,其中在所述第一次之后每次编码所述源分组包含:
设定所述种子为一随机值;
自所述种子生成伪随机系数;
确定所述伪随机系数与所述滑动编码器窗口中的源分组的乘积;以及
线性地组合所述乘积。
5.根据权利要求1所述的方法,其中在所述第一次之后于编码所述源分组数次之前,进一步包含:
确定在其中传送所述经编码的分组的一通信信道的状况;以及
改变所述数次为一新值。
6.根据权利要求1所述的方法,在推进所述滑动编码器窗口之前,进一步包含:
确定在其中传送所述经编码的分组的一通信信道的状况;以及
基于所述状况改变所述滑动编码器窗口为一新的大小。
7.一种解码一纠错码的方法,所述方法包含:
于一通信信道上接收一包括一种子与一经编码的分组的元组;
基于所述种子,重构由一编码器用来产生所述经编码的分组的伪随机系数集;
输入所述伪随机系数集与所述经编码的分组作为一解码矩阵中的一行,其中所述解码矩阵包含一第一矩阵与一第二矩阵,所述第一矩阵包含其中包括所述伪随机系数集的伪随机系数集合,并且所述第二矩阵包含其中包括所述经编码的分组的经编码的分组;
降低所述解码矩阵为一行阶梯形矩阵;
在降低所述解码矩阵为一行阶梯形矩阵之后,确定所述解码矩阵是否可解码最高到数行;
当所述解码矩阵可解码最高到所述数行时,通过向后替换来降低所述解码矩阵最高到所述数行,使得所述第一矩阵的一部分成为一单位矩阵,并且所述第二矩阵的一对应部分包含源分组;以及
自经填塞的分组撷取所述源分组。
8.根据权利要求7所述的方法,进一步包含在重构所述伪随机系数集之前,确定所述元组是否并不比一滑动解码窗口更旧,其中任何比所述滑动解码窗口更旧的元组被丢弃。
9.根据权利要求8所述的方法,进一步包含:
确定所述元组是否比所述滑动解码窗口更新;以及
当所述元组比所述滑动解码窗口更新时,推进所述滑动解码窗口以包括所述元组。
10.根据权利要求7所述的方法,进一步包含:
在撷取每一源分组之后,增量一解码进度变量;
接收另一个元组;
确定所述解码进度变量是否比一滑动解码窗口更旧;以及
当所述解码进度变量比所述滑动解码窗口更旧时,生成指示至少已经遗失一源分组的一警报。
11.一种计算设备,其包含:
一网络接口;
一编码器,用于:
接收一源分组,所述源分组包括来自有限域的符号;
在接收所述源分组之后,推进一滑动编码器窗口;
生成经编码的分组,包含:
第一次编码所述源分组,包含单独编码所述源分组;以及
在所述第一次之后编码所述源分组数次,其中所述数次等于或大于0,并且在所述第一次之后所述数次的每次编码所述源分组包含利用所述滑动编码器窗口中的数个较旧源分组来编码所述源分组,所述滑动编码器窗口中的较旧源分组的数目等于或大于0;以及
在一通信信道上传送所述经编码的分组,所述传送包括传送每一经编码的分组连同所述滑动编码器窗口的左边界和右边界与用于编码所述源分组的种子。
12.根据权利要求11所述的计算设备,还包括处理器,在生成经编码的分组之前,所述处理器要执行指令以:
通过对所述源分组增加所述源分组的长度扩增所述源分组;以及
通过对所述源分组增加数个0填塞所述源分组,使得所述源分组和所述滑动编码器窗口中的所述较旧源分组具有相同的长度。
13.根据权利要求11所述的计算设备,其中:
第一次编码所述源分组包含设定所述源分组为所述经编码的分组之一;以及
传送所述经编码的分组包括传送所述经编码的分组之一连同设定为非随机值的所述种子。
14.根据权利要求13所述的计算设备,其中在所述第一次之后每次编码所述源分组包含:
设定所述种子为随机值;
自所述种子生成伪随机系数;
确定所述伪随机系数与所述滑动编码器窗口中的源分组的乘积;以及
线性地组合所述乘积。
15.根据权利要求11所述的计算设备,还包括处理器,其中在所述第一次之后于编码所述源分组数次之前,所述处理器要执行指令以:
确定在其中传送所述经编码的分组的一通信信道的状况;以及
改变所述数次为一新值。
16.根据权利要求11所述的计算设备,还包括处理器,在推进所述滑动编码器窗口之前,所述处理器要执行指令以:
确定在其中传送所述经编码的分组的一通信信道的状况;以及
基于所述状况改变所述滑动编码器窗口为一新的大小。
17.一种计算设备,包含:
一网络接口;
一解码器,用于:
经由所述网络接口接收一包括一种子与一经编码的分组的元组;
基于所述种子,重构由一编码器用来产生所述经编码的分组的伪随机系数集;
输入所述伪随机系数集与所述经编码的分组作为一解码矩阵中的一行,其中所述解码矩阵包含一第一矩阵与一第二矩阵,所述第一矩阵包含其中包括所述伪随机系数集的伪随机系数集合,并且所述第二矩阵包含其中包括所述经编码的分组的经编码的分组;
降低所述解码矩阵为一行阶梯形矩阵;
在降低所述解码矩阵为一行阶梯形矩阵之后,确定所述解码矩阵是否可解码最高到数行;
当所述解码矩阵可解码最高到所述数行时,通过向后替换来降低所述解码矩阵最高到所述数行,使得所述第一矩阵的一部分成为一单位矩阵,并且所述第二矩阵的一对应部分包括源分组;以及
自经填塞的分组撷取所述源分组。
18.根据权利要求17所述的计算设备,还包括处理器,其中所述处理器用于在重构所述伪随机系数集之前,确定所述元组是否不比一滑动解码窗口更旧,其中任何比所述滑动解码窗口更旧的元组被丢弃。
19.根据权利要求18所述的计算设备,其中所述处理器进一步用于:
确定所述元组是否比所述滑动解码窗口更新;以及
当所述元组比所述滑动解码窗口更新时,推进所述滑动解码窗口以包括所述元组。
20.根据权利要求17所述的计算设备,还包括处理器,其中所述处理器用于:
在撷取每一源分组之后,增量一解码进度变量;
接收另一个元组;
确定所述解码进度变量是否比一滑动解码窗口更旧;以及
当所述解码进度变量比所述滑动解码窗口更旧时,生成指示至少已经遗失一源分组的一警报。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361786594P | 2013-03-15 | 2013-03-15 | |
US61/786,594 | 2013-03-15 | ||
US14/206,435 | 2014-03-12 | ||
US14/206,435 US9673841B2 (en) | 2013-03-15 | 2014-03-12 | Error-correcting code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104052503A CN104052503A (zh) | 2014-09-17 |
CN104052503B true CN104052503B (zh) | 2017-10-13 |
Family
ID=51504911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410097174.4A Active CN104052503B (zh) | 2013-03-15 | 2014-03-14 | 纠错码 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104052503B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106941599A (zh) * | 2016-01-04 | 2017-07-11 | 中国移动通信集团公司 | 一种信号传输方法、终端设备和视频会议系统 |
CN109245777B (zh) * | 2017-07-10 | 2021-11-12 | 中兴通讯股份有限公司 | 一种阶梯码解码方法和阶梯码解码装置 |
CN108880556B (zh) * | 2018-05-30 | 2021-09-07 | 中国人民解放军战略支援部队信息工程大学 | 基于lz77的无损数据压缩方法、误码修复方法及编码器和解码器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101288256A (zh) * | 2005-05-04 | 2008-10-15 | 西门子企业通讯有限责任两合公司 | 用于确定分配给纠正符号的索引的方法及设备 |
CN101621353A (zh) * | 2008-07-03 | 2010-01-06 | 华为技术有限公司 | 一种随机线性网络编码的方法、装置和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7178080B2 (en) * | 2002-08-15 | 2007-02-13 | Texas Instruments Incorporated | Hardware-efficient low density parity check code for digital communications |
US7843831B2 (en) * | 2006-08-22 | 2010-11-30 | Embarq Holdings Company Llc | System and method for routing data on a packet network |
US20130039410A1 (en) * | 2011-08-08 | 2013-02-14 | Wai-Tian Tan | Methods and systems for adapting error correcting codes |
-
2014
- 2014-03-14 CN CN201410097174.4A patent/CN104052503B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101288256A (zh) * | 2005-05-04 | 2008-10-15 | 西门子企业通讯有限责任两合公司 | 用于确定分配给纠正符号的索引的方法及设备 |
CN101621353A (zh) * | 2008-07-03 | 2010-01-06 | 华为技术有限公司 | 一种随机线性网络编码的方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104052503A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10148292B2 (en) | Error-correcting code | |
Li et al. | Random network coding in peer-to-peer networks: From theory to practice | |
KR102133930B1 (ko) | 데이터 패킷 송수신 장치 및 방법 | |
Magli et al. | Network coding meets multimedia: A review | |
JP4690387B2 (ja) | 好ましくはストリーミング・システムに適用される配布方法 | |
RU2666326C2 (ru) | Устройство и способ шифрования и передачи данных | |
WO2007064745A1 (en) | A method and apparatus for layered rateless coding | |
CN104052503B (zh) | 纠错码 | |
JP2015520990A (ja) | 放送及び通信システムにおけるパケット送受信装置及び方法 | |
WO2018136246A1 (en) | Data segment into packets for channel encoding | |
TW201409946A (zh) | 猛禽碼之編碼加速裝置與方法 | |
Hassanzadeh et al. | Cache-aided coded multicast for correlated sources | |
WO2012018339A1 (en) | Application of unequal error protection rateless codes in multimedia streaming over multi-path networks | |
CN101540778A (zh) | 一种数据传输的方法、装置和系统 | |
JP5587735B2 (ja) | データ伝送方法およびネットワークノード | |
CN101505265B (zh) | 信息通信 | |
CN107437976B (zh) | 一种数据处理方法及设备 | |
KR20130086552A (ko) | 점진 열화 순방향 오류 정정 방법 및 이를 수행하는 장치 | |
US10833710B2 (en) | Bandwidth efficient FEC scheme supporting uneven levels of protection | |
CN111447044A (zh) | 分布式存储方法和传输译码方法 | |
CN107615810A (zh) | 用于在线网络代码的包头压缩系统和方法 | |
Mane et al. | Performance evaluation of random linear network coding using a Vandermonde matrix | |
WO2011039874A1 (ja) | データ送信装置、データ生成プログラムおよびデータ送受信方法 | |
CN111935102B (zh) | 数据处理方法及装置 | |
KR101832453B1 (ko) | 네트워크 코딩을 이용하여 실시간 스트리밍 서비스를 제공하는 무선 멀티캐스트 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |