基于媒体内容的自适应系统码FEC方法、装置及系统转让专利

申请号 : CN201710973473.3

文献号 : CN109687934B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐异凌张文军姜志乾陈浩管云峰

申请人 : 上海交通大学

摘要 :

本发明提供了一种基于媒体内容的自适应系统码FEC方法、装置及系统,该方法包括:根据重要性信息,将源数据包中每个子数据包分别映射到不同的预设优先级中;按照预设优先级重新排列子数据包,得到中间数据包;对中间数据包进行前向纠错FEC编码后,得到恢复数据包;在恢复数据包中加入索引字段;根据恢复数据包,生成相应的信令信息,信令信息用于指示恢复数据包在各优先级下的子数据包,以及属于相应优先级的子数据包占恢复数据包的比例;最后向终端侧发送恢复数据包和相应的信令信息。本发明最大限度保证媒体内容质量的同时,减少FEC造成的数据冗余;使系统码的编译码更加灵活,不需要对源数据流进行分流,提高了FEC编码的效率。

权利要求 :

1.一种基于媒体内容的自适应系统码FEC方法,其特征在于,包括:

解析源数据包中每个子数据包包头的重要性信息,所述重要性信息是指每个子数据包的数据内容的重要程度;

根据所述重要性信息,将所述源数据包中每个子数据包分别映射到不同的预设优先级中;

按照预设优先级重新排列子数据包,得到中间数据包;

将所述中间数据包转化为多个符号symbol,并对转化成多个symbol的中间数据包进行前向纠错FEC编码后,得到包含多个symbol的恢复数据包;

在所述恢复数据包中加入索引字段和/或优先级指示字段,所述索引字段用于指示恢复数据包中子数据包的顺序和/或指示恢复数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;在所述中间数据包中也加入索引字段和/或优先级指示字段,所述索引字段用于指示中间数据包中子数据包的顺序和/或指示中间数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;

在所述恢复数据包和中间数据包中加入相应的指示信息,或者在发送恢复数据包和中间数据包时发送相应的指示信息,所述指示信息用于指示恢复数据包在各优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述恢复数据包的比例;所述指示信息还用于指示中间数据包在各个优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述中间数据包的比例;

向终端侧发送包含指示信息的恢复数据包、中间数据包,或者向终端侧发送恢复数据包、中间数据包以及相应的指示信息。

2.根据权利要求1所述的基于媒体内容的自适应系统码FEC方法,其特征在于,所述解析源数据包中每个子数据包包头的重要性信息,包括:读取每个子数据包包头中的优先priority字段,根据所述priority字段中的信息确定对应子数据包的优先级。

3.根据权利要求2所述的基于媒体内容的自适应系统码FEC方法,其特征在于,所述根据所述重要性信息,将所述源数据包中每个子数据包分别映射到不同的预设优先级中,包括:确定所述源数据包实际采用的优先级个数,以及各优先级下与所述priority字段的映射关系;

按照所述映射关系,将子数据包映射到相应的预设优先级中。

4.根据权利要求1所述的基于媒体内容的自适应系统码FEC方法,其特征在于,所述将所述中间数据包转化为多个符号symbol,并对转化成多个symbol的中间数据包进行前向纠错FEC编码后,得到包含多个symbol的恢复数据包,包括:对所述中间数据包采用RaptorQ系统码的自适应FEC编码方式进行FEC编码,得到如下的中间码字:式中:Ai表示第i类源数据包对应的编码矩阵,C1,C2,…,Ci…,CN分别对应N类源数据包的中间码,D1,D2,…,Di…,DN分别对应N类源数据包的数据,上标-1为逆矩阵运算符;

根据所述中间码字,得到恢复数据包,并在所述恢复数据包中附加FEC payload ID,其中,所述恢复数据包中的恢复数据如下:式中:R1,R2,…,Ri…,RN分别对应1~N个源数据包的恢复数据,G_ENCi表示第i个源数据包对应的LT编码矩阵,G_ENC1i表示与G_ENC1具有相同生成规则的LT编码矩阵;G_ENCi1表示与G_ENCi具有相同生成规则的LT编码矩阵;i=1,2,…N。

5.一种基于媒体内容的自适应系统码FEC方法,其特征在于,包括:

接收服务器发送的恢复数据包、中间数据包,或者接收恢复数据包、中间数据以及相应的指示信息;

解析出所述恢复数据包和中间数据包中包含的索引字段,并根据所述索引字段生成编码矩阵,其中,所述索引字段用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;或者通过恢复数据包和中间数据包的优先级指示字段直接获取索引信息,并根据所述索引信息生成编码矩阵,其中,所述索引信息用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;

对所述编码矩阵进行前向纠错FEC译码,恢复出中间数据包;

解析所述中间数据包包头中的信息,重新排列所述中间数据包的子数据包的顺序,恢复出源数据包。

6.根据权利要求5所述的基于媒体内容的自适应系统码FEC方法,其特征在于,所述解析出所述恢复数据包和中间数据包中包含的索引字段,包括:通过以下公式得到源数据对应编码矩阵的相应行的索引字段:

index=FEC payload ID-number of packets of all priorities before this packet式中:index表示源数据对应编码矩阵的相应行索引,FEC payload ID表示数据包包头的索引信息,number of packets of all priorities before this packet表示该数据包之前的所有优先级的数据包总数。

7.根据权利要求5所述的基于媒体内容的自适应系统码FEC方法,其特征在于,所述对所述编码矩阵进行前向纠错FEC译码,恢复出中间数据包,包括:对所述编码矩阵进行初等行变换,并对接收到的相应恢复数据包中的符号symbol进行排序,根据恢复的数据包包头的索引信息FEC_payload_ID的值和对应优先级下符号symbol的数目确定该符号symbol所属的优先级和变换后的位置;或者根据恢复数据包包头中的优先级字段和该优先级字段对应优先级下的索引信息,直接确定符号symbol所属的优先级和变换后的位置;

调整恢复数据包中的符号symbol的顺序,并通过高斯消元译码器和RFC6330译码器进行译码后,得到恢复的包含多个symbol的中间数据包;

将包含多个symbol的中间数据包转化为中间数据包。

8.一种基于媒体内容的自适应系统码FEC装置,其特征在于,包括:

解析模块,用于解析源数据包中每个子数据包包头的重要性信息,所述重要性信息是指每个子数据包的数据内容的重要程度;

映射模块,用于根据所述重要性信息,将所述源数据包中每个子数据包分别映射到不同的预设优先级中;

排序模块,用于按照预设优先级重新排列子数据包,得到中间数据包;

编码模块,用于将所述中间数据包转化为多个符号symbol,并对转化成多个symbol的中间数据包进行前向纠错FEC编码后,得到包含多个symbol的恢复数据包;

索引模块,用于在所述恢复数据包中加入索引字段和/或优先级指示字段,所述索引字段用于指示恢复数据包中子数据包的顺序和/或指示恢复数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;在所述中间数据包中也加入索引字段和/或优先级指示字段,所述索引字段用于指示中间数据包中子数据包的顺序和/或指示中间数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;

指示信息生成模块,用于在所述恢复数据包和中间数据包中加入相应的指示信息,或者在发送恢复数据包和中间数据包时发送相应的指示信息;其中,所述指示信息用于指示恢复数据包在各优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述恢复数据包的比例;所述指示信息还用于指示中间数据包在各个优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述中间数据包的比例;

发送模块,用于向终端侧发送所述恢复数据包、中间数据包和相应的信令信息,或者向终端侧发送恢复数据包、中间数据包以及相应的指示信息。

9.根据权利要求8所述的基于媒体内容的自适应系统码FEC装置,其特征在于,所述编码模块,具体用于:对所述中间数据包采用RaptorQ系统码的自适应FEC编码方式进行FEC编码,得到如下的中间码字:式中:Ai表示第i类源数据包对应的编码矩阵,C1,C2,…,Ci…,CN分别对应N类源数据包的中间码,D1,D2,…,Di…,DN分别对应N类源数据包的数据,上标-1为逆矩阵运算符;

根据所述中间码字,得到恢复数据包,并在所述恢复数据包中附加FEC payload ID,其中,所述恢复数据包中的恢复数据如下:式中:R1,R2,…,Ri…,RN分别对应1~N个源数据包的恢复数据,G_ENCi表示第i个源数据包对应的LT编码矩阵,G_ENC1i表示与G_ENC1具有相同生成规则的LT编码矩阵;G_ENCi1表示与G_ENCi具有相同生成规则的LT编码矩阵;i=1,2,…N。

10.一种基于媒体内容的自适应系统码FEC装置,其特征在于,包括:

接收模块,用于接收服务器发送的恢复数据包、中间数据包,或者接收恢复数据包、中间数据以及相应的指示信息;

编码矩阵生成模块,用于解析出所述恢复数据包和中间数据包中包含的索引字段,并根据所述索引字段生成编码矩阵,其中,所述索引字段用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;或者通过恢复数据包和中间数据包的优先级指示字段直接获取索引信息,并根据所述索引信息生成编码矩阵,其中,所述索引信息用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;

译码模块,用于对所述编码矩阵进行前向纠错FEC译码,恢复出中间数据包;

恢复模块,用于解析所述中间数据包包头中的信息,重新排列所述中间数据包的子数据包的顺序,恢复出源数据包。

11.根据权利要求10所述的基于媒体内容的自适应系统码FEC装置,其特征在于,所述编码矩阵生成模块,具体用于:通过以下公式得到源数据对应编码矩阵的相应行的索引字段:

index=FEC payload ID-number of packets of all priorities before this packet式中:index表示源数据对应编码矩阵的相应行索引,FEC payload ID表示数据包包头的索引信息,number of packets of all priorities before this packet表示该数据包之前的所有优先级的数据包总数。

12.根据权利要求10所述的基于媒体内容的自适应系统码FEC装置,其特征在于,所述译码模块,具体用于:对所述编码矩阵进行初等行变换,并对接收到的相应恢复数据包中的符号symbol进行排序,根据恢复的数据包包头的索引信息FEC_payload_ID的值和对应优先级下符号symbol的数目确定该符号symbol所属的优先级和变换后的位置;或者根据恢复数据包包头中的优先级字段和该优先级字段对应优先级下的索引信息,直接确定符号symbol所属的优先级和变换后的位置;

调整恢复数据包中的符号symbol的顺序,并通过高斯消元译码器和RFC6330译码器进行译码后,得到恢复的包含多个symbol的中间数据包;

将包含多个symbol的中间数据包转化为中间数据包。

13.一种基于媒体内容的自适应系统码FEC系统,其特征在于,包括服务器和至少一个终端,其中,所述服务器用于执行权利要求1-4中任一项所述的基于媒体内容的自适应系统码FEC方法,所述终端用于执行权利要求5-7任一项所述的基于媒体内容的自适应系统码FEC方法。

说明书 :

基于媒体内容的自适应系统码FEC方法、装置及系统

技术领域

[0001] 本发明涉及多媒体传输技术领域,具体地,涉及基于媒体内容的自适应系统码前向纠错(Forward Error Correction,FEC)方法、装置及系统。

背景技术

[0002] 在异构网络媒体服务系统中,内容通过因特网协议或广播协议分发到终端,因特网中使用传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol,IP/TCP)或用户数据(User Datagram Protocol,UDP)报文来传输媒体数据,广播通过活动图像专家组传输流(Moving Picture Experts Group2-Transport Stream,MPEG2-TS)来传输内容。UDP报文在经过多个网络设备后可能会出现丟失,广播TS可能因为传输环境的影响,产生误码,从而造成终端侧的画面破损或者声音停顿。
[0003] 前向纠错(Forward Error Correction,FEC)技术是一种广泛应用于通信系统中的编码技术。通过服务器侧对媒体数据进行纠错编码,加入冗余信息一并发送,终端侧进行反向FEC解码,对丟失的报文进行恢复。以典型的分组码为例,其基本原理是:在发送端,通过将k bit信息作为一个分组进行编码,加入(n-k)bit的冗余校验信息,组成长度为n bit的码字。码字经过信道到达接收端之后,如果错误在可纠错范围之内,通过译码即可检查并纠正错误bit,从而抵抗信道带来的干扰,有效降低系统的误码率,提高通信系统的可靠性。但是FEC处理,是以冗余开销代价来降低系统的误码率,过度FEC编码对系统实时性和网络状态也会造成压力。

发明内容

[0004] 针对现有技术中的缺陷,本发明的目的是提供一种基于媒体内容的自适应系统码FEC方法、装置及系统。
[0005] 第一方面,本发明提供一种基于媒体内容的自适应系统码FEC方法,包括:
[0006] 解析源数据包中每个子数据包包头的重要性信息;
[0007] 根据所述重要性信息,将所述源数据包中每个子数据包分别映射到不同的预设优先级中;
[0008] 按照预设优先级重新排列子数据包,得到中间数据包;
[0009] 将所述中间数据包转化为多个符号symbol,并对转化成多个symbol的中间数据包进行前向纠错FEC编码后,得到包含多个symbol的恢复数据包;
[0010] 在所述恢复数据包中加入索引字段和/或优先级指示字段,所述索引字段用于指示恢复数据包中子数据包的顺序和/或指示恢复数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;在所述中间数据包中也加入索引字段和/或优先级指示字段,所述索引字段用于指示中间数据包中子数据包的顺序和/或指示中间数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;
[0011] 在所述恢复数据包和中间数据包中加入相应的指示信息,或者在发送恢复数据包和中间数据包时发送相应的指示信息,所述指示信息用于指示恢复数据包在各优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述恢复数据包的比例;所述指示信息还用于指示中间数据包在各个优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述中间数据包的比例;
[0012] 向终端侧发送包含指示信息的恢复数据包、中间数据包,或者向终端侧发送恢复数据包、中间数据包以及相应的指示信息。
[0013] 可选地,所述解析源数据包中每个子数据包包头的重要性信息,包括:
[0014] 读取每个子数据包包头中的优先priority字段,根据所述priority字段中的信息确定对应子数据包的优先级。
[0015] 可选地,所述根据所述重要性信息,将所述源数据包中每个子数据包分别映射到不同的预设优先级中,包括:
[0016] 确定所述源数据包实际采用的优先级个数,以及各优先级下与所述priority字段的映射关系;
[0017] 按照所述映射关系,将子数据包映射到相应的预设优先级中。
[0018] 可选地,所述将所述中间数据包转化为多个符号symbol,并对转化成多个symbol的中间数据包进行前向纠错FEC编码后,得到包含多个symbol的恢复数据包,包括:
[0019] 对所述中间数据包采用RaptorQ系统码的自适应FEC编码方式进行FEC编码,得到如下的中间码字:
[0020]
[0021] 式中:Ai表示第i类源数据包对应的编码矩阵,C1,C2,…,Ci…,CN分别对应N类源数据包的中间码,D1,D2,…,Di…,DN分别对应N类源数据包的数据,上标-1为逆矩阵运算符;
[0022] 根据所述中间码字,得到恢复数据包,并在所述恢复数据包中附加FEC payload ID,其中,所述恢复数据包中的恢复数据如下:
[0023]
[0024] 式中:R1,R2,…,Ri…,RN分别对应1~N个源数据包的恢复数据,G_ENCi表示第i个源数据包对应的LT编码矩阵,G_ENC1i表示与G_ENC1具有相同生成规则的LT编码矩阵;G_ENCi1表示与G_ENCi具有相同生成规则的LT编码矩阵;i=1,2,…N。
[0025] 第二方面,本发明提供一种基于媒体内容的自适应系统码FEC方法,包括:
[0026] 接收服务器发送的恢复数据包、中间数据包,或者接收恢复数据包、中间数据以及相应的指示信息;
[0027] 解析出所述恢复数据包和中间数据包中包含的索引字段,并根据所述索引字段生成编码矩阵,其中,所述索引字段用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;或者
[0028] 通过恢复数据包和中间数据包的优先级指示字段直接获取索引信息,并根据所述索引信息生成编码矩阵,其中,所述索引信息用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;
[0029] 对所述编码矩阵进行前向纠错FEC译码,恢复出中间数据包;
[0030] 解析所述中间数据包包头中的信息,重新排列所述中间数据包的子数据包的顺序,恢复出源数据包。
[0031] 可选地,所述解析出所述恢复数据包和中间数据包中包含的索引字段,包括:
[0032] 通过以下公式得到源数据对应编码矩阵的相应行的索引字段:
[0033] index=FEC payload ID-number of packets of all priorities before this packet
[0034] 式中:index表示源数据对应编码矩阵的相应行索引,FEC payload ID表示数据包包头的索引信息,number of packets of all priorities before this packet表示该数据包之前的所有优先级的数据包总数。
[0035] 可选地,所述对所述编码矩阵进行前向纠错FEC译码,恢复出中间数据包,包括:
[0036] 对所述编码矩阵进行初等行变换,并对接收到的相应恢复数据包中的符号symbol进行排序,根据恢复的数据包包头的索引信息FEC_payload_ID的值和对应优先级下符号symbol的数目确定该符号symbol所属的优先级和变换后的位置;或者
[0037] 根据恢复数据包包头中的优先级字段和该优先级字段对应优先级下的索引信息,直接确定符号symbol所属的优先级和变换后的位置;
[0038] 调整恢复数据包中的符号symbol的顺序,并通过高斯消元译码器和RFC6330译码器进行译码后,得到恢复的包含多个symbol的中间数据包;
[0039] 将包含多个symbol的中间数据包转化为中间数据包。
[0040] 第三方面,本发明提供一种基于媒体内容的自适应系统码FEC装置,包括:
[0041] 解析模块,用于解析源数据包中每个子数据包包头的重要性信息;
[0042] 映射模块,用于根据所述重要性信息,将所述源数据包中每个子数据包分别映射到不同的预设优先级中;
[0043] 排序模块,用于按照预设优先级重新排列子数据包,得到中间数据包;
[0044] 编码模块,用于将所述中间数据包转化为多个符号symbol,并对转化成多个symbol的中间数据包进行前向纠错FEC编码后,得到包含多个symbol的恢复数据包;
[0045] 索引模块,用于在所述恢复数据包中加入索引字段和/或优先级指示字段,所述索引字段用于指示恢复数据包中子数据包的顺序和/或指示恢复数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;在所述中间数据包中也加入索引字段和/或优先级指示字段,所述索引字段用于指示中间数据包中子数据包的顺序和/或指示中间数据包中子数据包在所述优先级指示字段对应的优先级下的顺序;
[0046] 指示信息生成模块,用于在所述恢复数据包和中间数据包中加入相应的指示信息,或者在发送恢复数据包和中间数据包时发送相应的指示信息;其中,所述指示信息用于指示恢复数据包在各优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述恢复数据包的比例;所述指示信息还用于指示中间数据包在各个优先级下的子数据包,以及属于相应优先级的子数据包的数目或者所述子数据包占所述中间数据包的比例;
[0047] 发送模块,用于向终端侧发送所述恢复数据包、中间数据包和相应的信令信息,或者向终端侧发送恢复数据包、中间数据包以及相应的指示信息。
[0048] 可选地,所述解析模块,具体用于:
[0049] 读取每个子数据包包头中的优先priority字段,根据所述priority字段中的信息确定对应子数据包的优先级。
[0050] 可选地,所述映射模块,具体用于:
[0051] 确定所述源数据包实际采用的优先级个数,以及各优先级下与所述priority字段的映射关系;
[0052] 按照所述映射关系,将子数据包映射到相应的预设优先级中。
[0053] 可选地,所述编码模块,具体用于:
[0054] 对所述中间数据包采用RaptorQ系统码的自适应FEC编码方式进行FEC编码,得到如下的中间码字:
[0055]
[0056] 式中:Ai表示第i类源数据包对应的编码矩阵,C1,C2,…,Ci…,CN分别对应N类源数据包的中间码,D1,D2,…,Di…,DN分别对应N类源数据包的数据,上标-1为逆矩阵运算符;
[0057] 根据所述中间码字,得到恢复数据包,并在所述恢复数据包中附加FEC payload ID,其中,所述恢复数据包中的恢复数据如下:
[0058]
[0059] 式中:R1,R2,…,Ri…,RN分别对应1~N个源数据包的恢复数据,G_ENCi表示第i个源数据包对应的LT编码矩阵,G_ENC1i表示与G_ENC1具有相同生成规则的LT编码矩阵;G_ENCi1表示与G_ENCi具有相同生成规则的LT编码矩阵;i=1,2,…N。
[0060] 第四方面,本发明提供一种基于媒体内容的自适应系统码FEC装置,包括:
[0061] 接收模块,用于接收服务器发送的恢复数据包、中间数据包,或者接收恢复数据包、中间数据以及相应的指示信息;
[0062] 编码矩阵生成模块,用于解析出所述恢复数据包和中间数据包中包含的索引字段,并根据所述索引字段生成编码矩阵,其中,所述索引字段用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;或者
[0063] 通过恢复数据包和中间数据包的优先级指示字段直接获取索引信息,并根据所述索引信息生成编码矩阵,其中,所述索引信息用于指示恢复数据包中子数据包的顺序,以及指示中间数据包在各个优先级下的子数据包;
[0064] 译码模块,用于对所述编码矩阵进行前向纠错FEC译码,恢复出中间数据包;
[0065] 恢复模块,用于解析所述中间数据包包头中的信息,重新排列所述中间数据包的子数据包的顺序,恢复出源数据包。
[0066] 可选地,所述编码矩阵生成模块,具体用于:
[0067] 通过以下公式得到源数据对应编码矩阵的相应行的索引字段:
[0068] index=FEC payload ID-number of packets of all priorities before this packet
[0069] 式中:index表示源数据对应编码矩阵的相应行索引,FEC payload ID表示数据包包头的索引信息,number of packets of all priorities before this packet表示该数据包之前的所有优先级的数据包总数。
[0070] 可选地,所述译码模块,具体用于:
[0071] 对所述编码矩阵进行初等行变换,并对接收到的相应恢复数据包中的符号symbol进行排序,根据恢复的数据包包头的索引信息FEC_payload_ID的值和对应优先级下符号symbol的数目确定该符号symbol所属的优先级和变换后的位置;或者
[0072] 根据恢复数据包包头中的优先级字段和该优先级字段对应优先级下的索引信息,直接确定符号symbol所属的优先级和变换后的位置;
[0073] 调整恢复数据包中的符号symbol的顺序,并通过高斯消元译码器和RFC6330译码器进行译码后,得到恢复的包含多个symbol的中间数据包;
[0074] 将包含多个symbol的中间数据包转化为中间数据包。
[0075] 第五方面,本发明提供一种基于媒体内容的自适应系统码FEC系统,包括服务器和至少一个终端,其中,所述服务器用于执行第一方面中任一项所述的基于媒体内容的自适应系统码FEC方法,所述终端用于执行第二方面任一项所述的基于媒体内容的自适应系统码FEC方法。
[0076] 与现有技术相比,本发明具有如下的有益效果:
[0077] 本发明提供的基于媒体内容的自适应系统码FEC方法,通过根据媒体内容的重要性按照优先级排序,采用不等差错保护(UEP),最大限度保证媒体内容质量的同时,减少FEC造成的数据冗余;使系统码的编译码更加灵活,不需要对源数据流进行分流,因此降低了发送端FEC编码的复杂度,提高了FEC编码的效率;同时,可以根据当前网络状态的变化动态的调整编码方案,因此对时变网络具有更强的适应性。

附图说明

[0078] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0079] 图1为针对媒体资源数据的FEC两层结构示意图;
[0080] 图2为(a)、图2(b)为图像组中各帧依赖关系示意图;
[0081] 图3为基于媒体内容的自适应系统码FEC系统框架示意图;
[0082] 图4为各优先级的映射关系示意图;
[0083] 图5为按照优先级划分对数据包流重新排序示意图;
[0084] 图6为FEC编码后对源数据包和恢复数据包的处理流程示意图;
[0085] 图7为接收端解析信令信息和数据包信息示意图;
[0086] 图8为根据接收到的数据包生成编码矩阵示意图;
[0087] 图9为对接收到的数据包进行处理的流程示意图;
[0088] 图10为多优先级不等差错保护系统喷泉码译码流程图;
[0089] 图11为恢复数据包流的初始顺序的结果示意图;
[0090] 图12为接收端解析数据包包头信息示意图。

具体实施方式

[0091] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0092] 本发明的说明书和权利要求书中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0093] 以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
[0094] 1)不等差错保护(Unequal Error Protection,UEP)是联合信源信道编码的一种。其核心思想是,依据码流的各部分数据的重要性不同,对各部分数据采用不同的信道保护机制,即对重要码流进行重点保护。尽管UEP降低了非重要码流的抗噪声性能,但有利于系统抗误码总体性能的提升。
[0095] 2)数字喷泉码(Digital Fountain Code)在传输过程中,不需要反馈及自动重发机制,避免了信号往返的延时以及广播应用中的反馈爆炸问题。数字喷泉的基本思想是:发端将原始数据分割成k个数据符号,对这些数据符号进行编码,输出一个任意长度的编码符号码流,接收端只需正确地接收n(n稍大于k)个编码符号就可以很大的概率恢复出所有的k个数据符号。
[0096] 数字喷泉码本身就具有UEP性能,可以实现对不同重要性的数据的保护。相比与传统的固定码率的信道编码方法,数字喷泉码具有以下明显的优势:
[0097] a、理想的可扩展性,由于单向广播没有反馈,发送方不受用户数量增长的任何影响。使得发送方能够为任意数量的用户提供服务。
[0098] b、适应时变信道,高效利用信道容量。用户的译码性能与信道的删除概率和带宽无关。当信道丢包率较高、状况不好时,不会对接收端的译码造成影响,即接收端接收足够数量的编码数据就可以正常译码,具有更强的适应性。
[0099] c、编译码复杂度低。在理想情况下,喷泉码生成每个编码符号具有线性编译码复杂度,有利于简化收发端编译码器的设计和软件化实现。
[0100] d、对异质用户的适用性能良好。喷泉码的无码率特性使得具有不同丢包率或带宽的用户之间互不影响,优质用户不受劣质用户牵制。除此之外,数字喷泉码可以支持中断续传、异步接入等多种服务模式。
[0101] 如图1所示:针对媒体资源数据的FEC两层结构,第一层将源数据包块source packet block分为较多的小块分别做FEC保护,第二层是一个整块做FEC保护。第一层划分较细致可以提供较小的时延,第二层保证了恢复性能和较小的冗余,但是这种方式需要进行两次FEC编码,降低了编码效率,同时缺乏灵活性。
[0102] 在一个数据流中可以根据其内容分成不同类型的数据包,不同类型的数据包具有不同的重要程度。例如,数据包中的I、B、P帧的重要程度如图2a、图2b所示。一个图像组中各帧依赖关系,说明一个图像组中不同帧的依赖程度和重要性不同,I帧是最重要的,B、P帧的重要程度较低。因此可以根据数据内容重要性进行不等差错保护。具体考虑传输信源数据具有两个重要等级的情况,将信源数据按上述标准进行划分,并将其按照重要程度重新进行排序,通过改变系统喷泉码编码矩阵的结构,达到对不同内容的不等差错保护。
[0103] 图3为基于媒体内容的自适应系统码FEC系统框架示意图,包括服务器和至少一个终端,首先服务器侧根据实际应用场景和媒体内容划分出多个优先级,解析数据包包头中关于该数据包的重要性信息,将每个数据包映射到不同的优先级下。其次,根据优先级情况和映射关系,将所有需要进行前向纠错编码的数据包(FEC)按照优先级从高到低重新排列。对重新排序后的源数据,根据实际的信道情况,采用不等差错保护的FEC编码方式进行编码,生成恢复数据(repair symbols)。并在并在FEC编码结束后,在源数据包和恢复数据包中加入指示当前数据包顺序的索引字段。统计各优先级下的源数据和恢复数据,生成相应的信令信息,在信令中指示出各优先级下的数据包数目或所占比例,以及各优先级下对应的恢复数据的数目或所占比例,以便接收端在接收到数据后可以正确的恢复数据。最后,将源数据包、恢复数据包以及信令发送到终端(客户端或者是接收端)。
[0104] 相应的,终端侧首先解析信令信息以及接收到的数据包中的索引字段,得到每个优先级下接收到的源数据包和恢复数据包的数目以及相应的数据包索引。其次,根据得到的数据包索引信息,在接收端生成编码矩阵。最后,根据生成的编码矩阵,分不同的情况进行FEC译码,并恢复出源数据包。由于恢复出的源数据包的顺序是重新排序后的顺序,通过解析数据包包头中源数据包顺序,重新排列源数据包,得到源数据包的初始数据。
[0105] 下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0106] 实施例一:如图4所示,可以包括如下步骤:
[0107] S1:解析编码封装后的数据包的包头,读取DU header中的priority字段,根据实际应用确定实际采用的优先级个数以及各优先级下与priority字段的映射关系。
[0108] S2:根据划分的优先级以及映射关系,对原始的源数据流按照优先级由高到低进行重新排序,并统计各优先级下数据包的数目,如图5所示。
[0109] S3:对重新排序后的源数据流采用系统RaptorQ系统码的自适应FEC编码方案进行FEC编码,生成恢复数据。
[0110] 具体地,对所述中间数据包采用RaptorQ系统码的自适应FEC编码方式进行FEC编码,得到如下的中间码字:
[0111]
[0112] 式中:Ai表示第i类源数据包对应的编码矩阵,C1,C2,…,Ci…,CN分别对应N类源数据包的中间码,D1,D2,…,Di…,DN分别对应N类源数据包的数据,上标-1为逆矩阵运算符;
[0113] 根据所述中间码字,得到恢复数据包,并在所述恢复数据包中附加FEC payload ID,其中,所述恢复数据包中的恢复数据如下:
[0114]
[0115] 式中:R1,R2,…,Ri…,RN分别对应1~N个源数据包的恢复数据,G_ENCi表示第i个源数据包对应的LT编码矩阵,G_ENC1i表示与G_ENC1具有相同生成规则的LT编码矩阵;G_ENCi1表示与G_ENCi具有相同生成规则的LT编码矩阵;i=1,2,…N。
[0116] 并根据从FEC编码器输出的数据流(重新排序后的数据流),生成源数据包和恢复数据包,加上FEC payload ID,如图6所示。
[0117] S4:生成AL-FEC message,在信令中指示出各优先级下的数据包数目,以及各优先级下对应的恢复数据包数目,以便接收端在接收到数据后可以正确的恢复数据。具体信令如表1所示。
[0118] 表1信令信息对照
[0119]
[0120] 表1中,number_of_priority:指示优先级的个数。fec_priority_value:8位,指示各优先级对应的值,该值最多可与DU header中priority所定义的优先级相同,也可以对应多个DU header中的priority。number_of_source_symbol:16位,指示在优先级为fec_priority_value所指示的值下,源符号的数目。number_of_repair_symbol:16位,指示在优先级为fec_priority_value所指示的值下,恢复符号的数目。private_fec_flag:指示位,指明是否使用私有的FEC编码方案。private_flag:指示位,指明是否存在一个private_field用来描述所使用的私有FEC编码方案。private_field_length:长度字段,用于描述私有FEC编码方案的字段的长度。private_field:用于描述私有FEC方案的详细信息。priority_id:优先级id,用于指示MMT包的优先级。fec_code_id_for_repair_flow:用于描述所使用的FEC编码方案。repair_flow_id:8位整数,用于指示生成的FEC repair flow,与FEC repair包的包头中的packet id有对应关系。maximum_k_for_repair_flow:24位整数,描述在一个source sysmbol块中source symbol的最大数目。maximum_p_for_repair_flow:24位整数,描述在一个repair sysmbol块中repair symbol的最大数目。protection_window_time:保护窗时间,指示在FEC编码中发送第一个source或者repair包与发送最后一个source或者repair包之间的最大时间差,单位为毫秒。protection_window_size:保护窗值,指示在FEC编码流中发送第一个FEC包的负载与发送最后一个FEC包负载之间的最大计数值。
[0121] 如图7所示,根据FEC各优先级下的数据包数目,通过以下公式得到源数据对应编码矩阵的相应行的索引:
[0122] index=FEC payload ID-number of packets of all priorities before this packet。
[0123] 式中:index表示源数据对应编码矩阵的相应行索引,FEC payload ID表示数据包包头的索引信息,number of packets of all priorities before this packet:表示该数据包之前的所有优先级的数据包总数。
[0124] 现以4个优先级,每个优先级的数目为100为例说明,如图8所示。source_FEC_payload_ID是根据重新排序后的源数据包的顺序排序的,优先级为1的可以直接根据当前的source_FEC_payload_ID确定生成编码矩阵的ISI(索引)。当优先级大于1时,在解析包头时,根据其source_FEC_payload_ID的值和各优先级下源符号的数目,可以确定其属于哪一优先级,例如source_FEC_payload_ID=108,可以确定属于优先级2,有上述的公式可得其ISI=8。对于恢复数据包,其可以根据包头中的repair_FEC_payload_ID确定其在生成矩阵的ISI。由于发送端与接收端采用相同的FEC编码机制,根据上述两个索引可以生成相应的编码矩阵。
[0125] 根据生成的FEC编码矩阵,对编码矩阵进行初等行变换,并对相应的接收到的数据包进行排序,根据repair_FEC_payload_ID的值和各优先级下恢复符号的数目,确定其属于哪一优先级,从而调整恢复符号在符号块中的位置,实现相同的变化,如图9所示。根据接收到的不同优先级的数据包的数目不同,分多种情况进行解码,其流程图如图10所示。最终得到恢复后的源数据,再根据包头中的packet_sequence_number,将得到的源数据包恢复为初始的顺序,具体如图11所示。
[0126] 实施例二:如图4所示,可以包括如下步骤:
[0127] S1:解析编码封装后的数据包的包头,读取DU header中的priority字段,根据实际应用确定实际采用的优先级个数以及各优先级下与priority字段的映射关系。
[0128] S2:根据划分的优先级以及映射关系,对原始的源数据流按照优先级由高到低进行重新排序,并统计各优先级下数据包的数目,如图5所示。
[0129] S3:对重新排序后的源数据流采用系统RaptorQ系统码的自适应FEC编码方案进行FEC编码,生成恢复数据。
[0130] 具体地,对所述中间数据包采用RaptorQ系统码的自适应FEC编码方式进行FEC编码,得到如下的中间码字:
[0131]
[0132] 式中:Ai表示第i类源数据包对应的编码矩阵,C1,C2,…,Ci…,CN分别对应N类源数据包的中间码,D1,D2,…,Di…,DN分别对应N类源数据包的数据,上标-1为逆矩阵运算符;
[0133] 根据所述中间码字,得到恢复数据包,并在所述恢复数据包中附加FEC payload ID,其中,所述恢复数据包中的恢复数据如下:
[0134]
[0135] 式中:R1,R2,…,Ri…,RN分别对应1~N个源数据包的恢复数据,G_ENCi表示第i个源数据包对应的LT编码矩阵,G_ENC1i表示与G_ENC1具有相同生成规则的LT编码矩阵;G_ENCi1表示与G_ENCi具有相同生成规则的LT编码矩阵;i=1,2,…N。
[0136] S4:在数据包包头扩展中生成相应的指示信息,指示出各优先级下的数据包数目,以及各优先级下对应的恢复数据包数目,以便接收端在接收到数据后可以正确的恢复数据。具体如表2所示。
[0137] 表2
[0138]
[0139] 表2中,type:16位,指示当前包头扩展的类型,此处为指示用于自适应前向纠错编码的中间数据包或恢复数据包。length:16位,用于指示header_extension的长度。FEC_priority:8位,用于指示当前数据包所属的优先级。sub_encoded_symbol_id:16位,用于指示该优先级下中间数据包或恢复数据包数目的索引。N:8位,用于指示优先级的总个数。SSBL[i]:24位,i表示第i个优先级,用于指示各优先级的源数据包数目。RSBL[i]:24位,i表示第i个优先级,用于指示各优先级的恢复数据包数目。
[0140] 如图12所示,根据FEC各优先级下的数据包数目,通过以下公式得到源数据对应编码矩阵的相应行的索引:
[0141] index=FEC payload ID-number of packets of all priorities before this packet。
[0142] 式中:index表示源数据对应编码矩阵的相应行索引,FEC payload ID表示数据包包头的索引信息,number of packets of all priorities before this packet:表示该数据包之前的所有优先级的数据包总数。
[0143] 根据生成的FEC编码矩阵,对编码矩阵进行初等行变换,并对相应的接收到的数据包进行排序,根据repair_FEC_payload_ID的值和各优先级下恢复符号的数目,确定其属于哪一优先级,从而调整恢复符号在符号块中的位置,实现相同的变化,如图9所示。根据接收到的不同优先级的数据包的数目不同,分多种情况进行解码,其流程图如图10所示。最终得到恢复后的源数据,再根据包头中的packet_sequence_number,将得到的源数据包恢复为初始的顺序,具体如图11所示。
[0144] 本实施例中,服务器侧通过对数据流中不同数据进行重要程度的划分,对不同重要程度的数据给予不同的保护。通过发送的数据包包头信息和信令信息进行标识。采用系统码的方式,根据信道状况和数据的重要程度,自适应地调整系统喷泉码的编码矩阵,以达到对不同重要程度数据的不等差错保护。终端侧解析信令信息和包头信息,同时根据接收到的不同优先级数据的数量,采用灵活的译码算法,实现灵活编译码,并根据包头信息最终恢复源数据流。因此可以达到如下的有益效果:
[0145] 1)节省资源,例如在终端侧(接收端),人为的根据情况舍弃已经接收的数据(例如B帧)则造成了传输资源的浪费,本实施例中的方法从源端解决问题,让不想要的包在传输过程中更大概率被丢弃,从而更大程度的保护了重要的数据包。
[0146] 2)实现个性化的传输方案,例如可以根据信道状况、用户体验等设计不等差错保护的方案,使得视频传输更加灵活、细致。另外,尽管发送端的编码方式灵活,接收端都可以根据列表信息正确的恢复出原始的数据。
[0147] 3)实现更加灵活的编码矩阵的设计,例如可以根据实际媒体的应用场景,基于媒体内容进行数据的优先级划分,根据实际需求更加灵活的设计FEC编码矩阵,达到不等差错保护的效果。
[0148] 4)实现更加灵活的译码方式,例如根据接收到的各优先级数据的数目,可以采用不同的译码算法,在有限的带宽资源下,可以最大程度的恢复优先级高的数据,提高对对优先级较高的数据的保护强度。
[0149] 需要说明的是,本发明提供的所述基于媒体内容的自适应系统码FEC方法中的步骤,可以利用所述基于媒体内容的自适应系统码FEC系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照所述系统的技术方案实现所述方法的步骤流程,即,所述系统中的实施例可理解为实现所述方法的优选例,在此不予赘述。
[0150] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。