FEC之我见二

前面简单说了一下FEC,以及它的配合使用的方法。下面我想详细说一下FEC算法

曾经有位大神在帖子里这么写着:采用改进型的vandermonde矩阵RS算法.其优点算法运算复杂度更低且解决了利用矩阵构造RS码当矩阵奇异时,构造的纠错码不为RS码的问题。

 

  • FEC的方案:在RTP或私有协议头上扩展出包组头(Group head),一个Group有k个媒体包和r个冗余包组成,他们在Group内拥有不同的组号,通过组号的连续性可以判断本组内数据包的丢失情况,从而选择性的予以恢复(冗余包丢失无需恢复)、因为UDP协议保障了包内数据的正确性,所以我们无需考虑包内纠错的情况。Group是一个完整的独立的FEC处理单元,不同Group之间无相关性。由于冗余性的存在,一个Group中任意k个数据包可以用来重建k个原始媒体包,如果丢失数据包数小于等于r,接受者收到一个Group中任意的k个数据包后,即可以通过组号信息确定丢失包的相对位置并进行FEC解码,以恢复k个原始媒体包。这里我们定义冗余包数r与原始媒体包数k的比值为FEC编码冗余度r/k,冗余度越高,抗丢包能力越强,同时传输效率也越低。

 

下面借鉴大神的FEC编解码算法进行简述:

1)数据包分割

对数据包FEc编码运算首先进行的是包内分割,将数据包分割为多个定长单元,定长单元成为自,设字长为w bits,w的取值一般为8/16/32。FEc编码对k个原始媒体包朱子进行处理,生成m个冗余数据包与之对应的字。

例如:现有两个原始数据包D1、D2,包的长度都为b bytes(对于包长不足b bytes的使用0补齐)-- b B,字长为w  bits -- w 位,那么一个数据包的总字长为1 = 8b/w。用这两个冗余包C1、C2的过程简述如下:

图中F代表FEC编码运算

2)Vandermonde编解码以及改进

设k个原始媒体包D=(D1,D2,...,Dk),,r个冗余数据包C=(C1,C2,...,Cr),那么传输组Group表示为Y=(Y1,Y2,...,Yn),其中Yi=Di(0<=i<=k-1),Y

j=Cj(k<=j<=n-1)。B为 n x k 维 FEC生成矩阵,有单位矩阵I和矩阵G组成,则一个Group可表示为如下所示:

通过这种方式构造的RS码是系统码,信息组以不变的形式在码组的任意k位(通常在最前面: D1,D2,...,Dk)。如果以数据包为对象,那么传输组的前k个包就是k个被保护的数据包。在接收端,如果接收者收到了Group中的任意k个数据包,即可根据所收到的数据包在Group中的位置信息,从FEC生成矩阵B中提取对应的行,组成一个新的 kxk 维矩阵B‘,显然 

 

如果B’ 为非奇异矩阵,那么就可以通过如下逆变换得到原始数据报,完成恢复。

 

设计RS码的关键在于怎样设计生成矩阵B,也就是其系数矩阵G。本方案使用Vandermonde矩阵来构建系数矩阵G。常规定义Vandermonde矩阵V,r x k 维,如下所示:

 

系数矩阵G=V,该矩阵元素的运算都是在有限域GF(2^8)中进行的。Gij(i=0,1,...,r-1; j=0,1,...,k-1)为系数矩阵的元素,Ci(i=1,2,。。。,r)表示第i个冗余包,Dj(j=1,2,。。。,k)表示第j个原始媒体包,根据下式:

上式运算时以包分割后的数据为运算单位的,模运算使用查表方式实现。例如发端使用k=6,r=2的荣誉模式,那么对应的系数矩阵为:

根据上面系数矩阵,可以计算得到冗余包为:

生成冗余包C1C2,发送端就可以一次发送原始媒体包和冗余包。如果发送的途中原始媒体包D3,D4丢失,那么接收端就可以根据收到的包恢复丢失的原始媒体包,具体过程如下:

  • 由于接收到的原始媒体包再次产生冗余包:

 

 

  • 将其与接收到的冗余包作比较,就能得到丢失的原始媒体包的表达式:

 

 

  • 要求出D3、D4,可利用高斯消除法求出系数矩阵 的逆 矩阵,前提是该矩阵是非奇异的。

传统的Vandermonde矩阵构造RS码是,需要非奇异矩阵,由于Vandermonde矩阵元素取值与有限域,且元素的运算遵循有限域的运算规则,就会存在一定概率出现矩阵奇异,用该矩阵构造的纠错码就不是RS码,不能从任意k个包中恢复出原始媒体包。为此长沙这位大婶对该传统Vandermonde矩阵进行改进,解决了矩阵概率奇异的问题,具体实现见代码。

 

3)私有协议/RTP与FEC的结合,下文继续讲解

时间: 2024-12-27 14:57:46

FEC之我见二的相关文章

FEC之我见三

继续上文讲解: 3) 标准的RTP头结构如下所示: 其中第一个字节中的x标志位是否扩展了RTP头,RTP协议允许用户自定义的扩展,扩展的字段紧挨上述RTP固定头.RTP扩展投中承载如下信息: 1).当前包所在的Group组序号,码流由连续的Group组成,每个Group拥有自己的唯一序号.(仅仅是小范围的唯一,序号大于255时,计数清零) 2).当前包所在的Group组大小 3).当前包在Group内的位置 RTP头中的7bit的PT字段标示负载的类型,对于标准类型如音频AAC.视频H264其参

FEC之我见一

顾名思义,FEC前向纠错,根据收到的包进行计算获取丢掉的包,而和大神沟通的结果就是 纠错神髓:收到的媒体包+冗余包 >= 原始媒体包数据      直到满足 收到的媒体包+ 冗余包 >= 原始媒体包数据       则进入恢复模式,恢复出2 4,然后一次输出2 3 4 5   所谓的Qos,也可以理解为抖动缓冲,解决udp包乱序.包重复的问题   NAT保活,保持udp连接,简言之: 当你向一个公网服务器发送数据时,服务器可以翻转IP和端口向你发数据, 但如果你长时间不发数据给服务器,服务器若

FEC之我见四

接上文,来详细的说明一下FEC前向纠错的具体实现: FEC_matrix是一个比较常用的算法,Vandermonde,范德蒙矩阵是法国数学家范德蒙提出的一种各列为几何级数的矩阵. 范德蒙矩阵的定义: V = 其第i 行.第j 列可以表示为(αi)^(j-1). 范德蒙矩阵的性质:范德蒙矩阵行数为m,列数为n,矩阵具有最大的秩min(m, n). 范德蒙矩阵的应用:范德蒙矩阵应用之一就是在纠错编码中,常用的纠错码Reed-solomon 编码中冗余块的编码采用的即为范德蒙矩阵. 1)码流层面上的F

Framework 4.0 新关键字dynamic 之我见(二)

Hi,大家好,随着大家对VS2010的深入了解,对dynamic已经是越来越了解了,何时该用,何时不用已经非常熟悉了,原本不打算再写下去的,但感觉还有点东西需要说说,就简单再说一下吧. 原先以为dynamic实在runtime时确定的,后来看了一下,这个runtime是在微软新出的一个运行时DLR上的,动态的为你判断该使用何种类型,而不是原先的CLR,具体的大家可以参考微软的MSDN,因为英文不太好,以免误导大家,也就不写详细了. 这几天一直在考虑何时去用这个关键字,如果对于一般的程序在没有与其

数据-我觉得我见鬼了,请大神帮我看看我到底是不是真的见鬼了,现在凌晨三点了

问题描述 我觉得我见鬼了,请大神帮我看看我到底是不是真的见鬼了,现在凌晨三点了 #include #include #include typedef struct Node ND; struct Node{ //结构体 int data; //数据预,存放结构体的数据,哲理简单化,假设只有一个data struct Node * pNext; //指针域,用来存放下一个节点的指针或者上一个节点的指针或者其他节点的指针,这里简化只存放下一个节点的指针 }; /*函数声明*/ //void trav

蒋平中:如何提高博客人气之我见

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 博客不同于一般的网店或产品站,虽然不是直接销售产品的,但在网络营销中它所起到的作用日益重要.有人说:爱情是需要经营的,我们必须主动出击,并且保持热情,那么博客也是这样.建立一个博客非常容易,在是在博客开通后,需要像对工作一样的尽职尽责对待,最大的努力使博客天天都在进步,日积月累这是博客成长过程中非常重要的.这不仅仅是一个工作原则,更体现了一种

性能测试知多少----性能测试分类之我见

从这一篇开始,虫师向性能方面发力.翻看自己的博客,最早的时候热衷于jmeter,于是写了几篇图文并茂的文章(其实,主要是操作截图加文字 描述),之后,由于看到好多朋友关于性能的知识什么都不知道,下载个loadrunner 就说要做性能测试,结果可想而知,遇到各种概念与使用问题.于是写了<在做性能测试之前需要知道什么><在做性能测试之后需要知道什么>,关于loadrunner的我没有写一篇博客,因为介绍loadrunner的网站.资料.书籍和视频太多了.我想这个系列我也会把关注点放在

为大二软件工程专业大学生解答的几个问题

[前言] 好久没有收到有深度的学生来信了.这与自己近一年来,忙于建设在线教学资源的缘故,没有时间动笔针对大学生学习中的问题,专门写指导性文章有关.没有了"引子",IT学子指导专栏有些冷清. 收到了某大学小谭同学的来信"致神交已久的贺利坚老师",照例回复,并发布博文. [来信] (一)自我介绍 首先还是应该自我介绍一下,我是XX大学软件工程(服务外包)专业的学生,目前是大二.我们这个专业与普通的软件工程有所不同,当初在面向山东省招生时是一个二本专业,我当初高考发挥失利

T-Coin之我见:-每一个用于传播的硬币,都有对位价值

T-Coin之我见:每一个用于传播的硬币,都有对位价值 引言:2009年,迪思数字业务全面整合,原数码世纪与朗德团队进行了合并组成迪思数字,随即提出了T-COIN的传播主张:实效传播,为客户的每一枚铜板负责. 作为一个"局"中人,我体会到其中发生的一些微妙变化,那就是以效果为导向的全传播理念在网络营销中的充分应用.在数十次的比稿中,我们发现,客户的需求原来与我们主张惊人地吻合:我们也更加确信,以效果为导向.深具销售力的方案,会帮助我们赢得竞标.赢得客户的认同. 网络营销,已从浮华开始向