首页> 中国专利> 支持对因特网协议网络上的音频以及视频数据进行前向纠错的方法

支持对因特网协议网络上的音频以及视频数据进行前向纠错的方法

摘要

本发明描述了一种用于保护实时媒体的方法和设备,包括:接收媒体分组;由媒体分组生成媒体比特串;对生成的媒体比特串应用前向纠错码,以生成至少一个前向纠错比特串;以及由至少一个前向纠错比特串生成至少一个前向纠错分组。本发明还描述了一种用于恢复丢失的实时媒体分组的方法和装置,包括:由接收到的媒体分组形成媒体比特串;由接收到的前向纠错分组形成前向纠错比特串;对形成的媒体比特串和前向纠错比特串解码,以获得恢复后的媒体比特串;以及由恢复后的媒体比特串恢复丢失的媒体分组。本发明还描述了一种计算机可读介质上的针对前向纠错报头的数据结构。

著录项

  • 公开/公告号CN101563874A

    专利类型发明专利

  • 公开/公告日2009-10-21

    原文格式PDF

  • 申请/专利权人 汤姆森许可贸易公司;

    申请/专利号CN200680056689.3

  • 申请日2006-12-21

  • 分类号H04L1/00(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人王波波

  • 地址 法国布洛涅-比郎库尔

  • 入库时间 2023-12-17 22:53:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-05-23

    授权

    授权

  • 2010-02-03

    实质审查的生效

    实质审查的生效

  • 2009-10-21

    公开

    公开

说明书

技术领域

本发明总体涉及对在因特网协议(IP)网络上传送的实时音频以及视频数据进行前向纠错(FEC),更具体地涉及支持对在IP网上传送的实时音频和视频进行FEC的信令方法以及支持该信令方法的语法。

背景技术

分组可能在IP网络上传输期间丢失。尽管如此,对于很多网络应用(例如实时视频以及音频应用)来说分组丢失是不可接受的。应用层前向纠错(FEC)提供了一种在接收机/解码器处恢复丢失的媒体/数据/源分组的方法。如本文所使用的,“/”指示了相同或者类似组件的别称。在发送器/编码器或者网络中的其它节点处,FEC码在传输或者应用层上被应用于源分组以生成包含冗余信息的FEC分组。这些FEC分组被传送至接收机,并且接收机使用接收到的FEC分组中的冗余信息来恢复丢失的源分组。

可以使用不同的编码方法和不同的FEC编码以在发送器/编码器处生成冗余。为了解码以及恢复丢失的源分组,接收机/解码器需要具有关于编码方法和参数的信息。因此,发送器/编码器需要一种信令方法以及语法去通知接收机/解码器关于FEC编码的信息。

实时传输(RTP)以及用户数据报协议(UDP)通常被用于在IP网络上/中传送/传输实时视频/音频。有效载荷(源分组)被封装在RTP/UDP/IP协议栈中。针对一般FEC分组的RTP有效载荷已经在RFC2733中被定义,使得实时媒体的纠错成为可能。尽管如此,RFC 2733将用于生成FEC有效载荷的分组的范围限制为24个连续的分组,并且仅允许针对媒体/源/数据分组的块(block)生成一个FEC分组。

电影与电视工程师协会(SMPTE)标准2002-1定义了RFC 2733的扩展,其允许将纠错码应用于非连续的媒体分组以恢复突发性丢失,其中非连续媒体分组可以间隔多个24个源/媒体分组。尽管如此,SMPTE 2002-1仅允许对媒体分组的块使用异或(XOR)编码以生成单个FEC奇偶分组,使得在分组的编码块中仅能纠正一个分组的丢失。在IP网络中,特别是那些使用无线连接的IP网络中,分组丢失的概率可能会相当高使得需要具有更强纠错能力的FEC编码方案以充分地检测和纠正针对IP网络上传送的实时音频和视频的分组丢失。此外,在SMPTE 2002-1中,FEC分组信令方法和语法不包括针对编码块的分组(媒体+FEC)的总数。即,FEC块大小没有被包括在报头中。因此,发送器/编码器不能通知接收机/解码器关于FEC块大小的信息。对于更强的FEC(N,K)码来说,针对编码块的分组的总数的值(即,块尺寸)是N,并且在编码块中要保护的媒体分组的数量是K。例如,如果使用里德-所罗门(里德-所罗门)(N,K)码对K个媒体分组编码以生成N-K FEC分组,具有N个编码分组的块中最多有N-K个丢失的分组可以被恢复。对于XOR编码来说,由于XOR编码根据K个受保护的媒体分组中生成单个FEC分组并且仅纠正一个分组丢失,块尺寸N可以从要保护的媒体分组的数量中获得,即,N永远等于K+1。尽管如此,这对于具有更强纠错能力的FEC(N,K)来说是不正确的。不像XOR编码,针对FEC(N,K)码的块尺寸N是独立参数并且可以不与K直接相关。为了正确地恢复丢失的分组,在接收机/解码器处N必须是已知的。SMPTE 2002-1不足以支持FEC(N-K)码参数的信令,所述信令需要针对解码/恢复操作的FEC块信息。

因此,支持针对在IP网络上的实时视频/音频传输的更强FEC码(例如RS码)的FEC报头的一种新的数据结构/语法将是有利的。与针对FEC报头的新数据结构/语法相关地,需要在发送器处的一种新的保护/编码方法,使得媒体分组的RTP报头和有效载荷都可以得到适当的保护。此外,需要在接收机处的一种新的恢复方法。

发明内容

本发明提供了一种信令方法和语法以支持对IP网络上传送的实时音频和视频进行FEC。此外,本发明提供了一种在发送器/编码器处对源分组应用FEC编码以生成FEC分组的方法,以及一种在接收机/解码器处恢复丢失的源分组的方法。尽管使用了里德-所罗门编码作为解释依照于本发明的方法的例子,然而本发明对于其它FEC编码方案一样是适用。

本发明描述了一种用于保护实时媒体的方法和设备,包括:接收媒体分组;由媒体分组生成媒体比特串;对生成的媒体比特串应用前向纠错码,以生成至少一个前向纠错比特串;以及由至少一个前向纠错比特串生成至少一个前向纠错分组。本发明还描述了一种用于恢复丢失的实时媒体分组的方法和装置,包括:由接收到的媒体分组形成媒体比特串;由接收到的前向纠错分组形成前向纠错比特串;对形成的媒体比特串和前向纠错比特串解码,以获取恢复后的媒体比特串;以及由恢复后的媒体比特串恢复丢失的媒体分组。此外本发明还描述了一种计算机可读介质上的针对前向纠错报头的数据结构,其中该数据结构包括:用于存储前向纠错奇偶分组索引的预定数量的较高位比特的字段。此外还描述一种计算机可读介质上的针对前向纠错报头的数据结构,其中该数据结构包括用于指示前向纠错分组和媒体分组的总数的字段。

附图说明

当结合附图阅读时,可以通过下面的详细描述最佳地理解本发明。附图包括下列简述的图:

图1示出了发送器/编码器处的过程。

图2示出了依照于本发明的编码方案。

图3示出了依照于本发明的备选编码方案。

图4示出了依照于本发明的FEC分组结构。

图5示出了依照于本发明的FEC报头。

图6示出了依照于本发明在发送器/编码器处的支持对IP网络上的实时音频以及视频进行FEC的保护方法的流程图。

图7示出了依照于本发明在接收机/解码器处的支持对IP网络上的实时音频以及视频进行FEC的恢复方法的流程图。

图8示出了依照于本发明在发送器/编码器处的支持对IP网络上的实时音频以及视频进行FEC的编码/保护过程的示意图。

图9示出了依照于本发明在接收机/解码器处的支持对IP网络上的实时音频以及视频进行FEC的恢复过程的示意图。

具体实施方式

除了FEC码的类型之外,FEC码还被其参数(例如块尺寸N以及源符号的数量K)指明。当(N,K)系统FEC码被应用于K个媒体/源/数据分组上时,生成N-K个FEC分组。例如,里德-所罗门(RS)码是众所周知的擦除纠正码。如果用RS(N,K)码对K个媒体分组进行编码以生成N-K个FEC分组,那么K个分组的任意子集都足以用擦除纠正来重构建媒体数据,即,RS(N,K)码允许恢复N个编码分组的块中的多达N-K个分组丢失。由于即使存在单个比特错误,较低层(比如媒体接入控制层,IP层或者UDP层)也会将整个分组丢弃,因此分组将或者正确抵达或者完全到不了在UDP层之上的层(即,RTP或者应用层)。本发明的方法是在UDP层之上的。在本发明中,假定分组或者正确地被接收到或者丢失。如果分组丢失,从RTP报头中的序号可以知道丢失的分组的位置。

参见图1,类似音频和/或视频的媒体/源数据被RTP分组器105打包并且与RTP报头一起封装。然后FEC编码过程110对多个媒体分组应用FEC编码以生成FEC分组。在通信接口125上通过UDP/IP协议栈115、120传送媒体分组以及附加的FEC分组。为了与不能支持FEC的系统保持后向兼容性,本发明的FEC编码过程不改变媒体分组的格式。即,非FEC系统还是可以接收并且恢复媒体分组。关于FEC参数的信令信息承载在FEC分组中。媒体分组以及FEC分组可以使用不同的UDP端口传送。因此,非FEC系统仅从用于媒体分组的UDP端口接收媒体分组。也可以在RTP报头中用不同的有效载荷类型来指明FEC分组。在备选实施例中,可以通过FEC分组以及媒体分组的有效载荷类型来区分它们。如果非FEC系统不能识别该有效载荷类型,则将丢弃FEC分组。

本发明的方案能够恢复编码块中的多个分组丢失。如果使用基于RS(N,K)码的一维方案(即,将RS(N,K)应用于K个连续的媒体分组),可以恢复N-K或者更少的丢失媒体分组这种突发差错。

在本发明的编码方法之前,可以对媒体RTP分组进行重排序。参见图2,LxD个媒体分组形成了二维矩阵。编码块中的媒体分组可以被周期性地加以选择。即,对序号增加L(L>=1)的媒体RTP分组生成FEC分组。L指定了要保护的分组的列的数量,D指定了要保护的分组的行的数量。如果使用了二维方案FEC编码方案,由于其可以恢复至多L×(N-K)个连续丢失的分组,因此可以进一步增强突发差错恢复的能力。在发射器处,由同一FEC分组保护的媒体分组被由其它FEC分组保护的L个分组隔开,从而在发生突发差错的情况下,减少了编码块中的错误分组的数量。在接收机处解码之前,如图2所示对接收到的分组进行重排序。因此,可以根据不同的FEC分组恢复连续的RTP分组。

在图2中,示出了针对L*D个媒体分组的编码方案。在由给定FEC(N,K)(例如RS)码覆盖的媒体分组之间选择的周期是L。因此,基于编号为iL+m(0≤i≤D-1)的D个分组(D=K),来计算FEC分组(h,m)(h=0,1...N-K-1;m=0,1...L-1)的有效载荷。一维方案(即对K个连续媒体分组应用FEC(N,K)码)是二维方案中L等于1的特殊情况。将列对齐是为说明而作出的示例。用于组织数据分组以创建FEC列流的其它方法也是可能的。

也可以支持两个同时的FEC流,这将以增加开销为代价实现更高的纠错能力。为了保持与仅支持单一FEC流的接收机的后向兼容,这些FEC流可以在分离的UDP端口上运送,并且具有分离的RTP序号处理。作为例子,编号值较低的端口可以传送列FEC流,并且第二端口可以传送行FEC流。

可以使用不同的FEC码来生成列FEC流(第一流)以及行FEC流(第二流)。行FEC流可以被应用于具有长度参数L的连续分组的行。如果列是对齐的,这将产生如图3所示的FEC结构,其中标记有RTP的分组是媒体分组,标记有FEC的分组是列FEC流分组,其由FEC(N,K)码(K=D)生成,并且标记有FEC’的分组是行FEC流分组,其由FEC(N’,K’)码(K’=L)生成。

需要通知接收机/解码器FEC相关的控制信息以及FEC分组和受FEC分组保护的媒体分组之间的关联信息,使得接收机/解码器可以正确地对FEC块解码并且恢复任何丢失的媒体分组。该信息承载在FEC分组的FEC报头中。图4示出了FEC分组的基本格式。FEC数据是RTP有效载荷420。RTP报头405之后是FEC报头410,然后是FEC有效载荷415。除了其它信息之外,FEC报头包含:FEC类型、作为FEC编码操作结果的分组(媒体+FEC)的总数(即FEC块尺寸)、与FEC分组相关联的媒体分组的数量、与FEC分组相关联的媒体分组的最小序号、用于选择与该FEC分组相关联的媒体分组的周期、FEC分组索引、列FEC流和行FEC流的指示。FEC报头还包括:长度恢复字段,有效载荷恢复字段以及时间戳恢复字段,以恢复媒体分组的RTP报头。参见图5,用下列字段的定义示出了示例FEC报头。

●SNBase低位比特:这是与FEC分组相关联的分组的最小序号。如果16位序号是足够的,则该参数包含整个序号。对于具有更长序号的传输协议来说,该字段包含序号的16位最低有效比特。

●长度恢复:该字段应当被用于恢复与FEC分组相关联的任意丢失的媒体分组的长度。

●E:该字段指示该报头是否被扩展了。将其设置为1以指示该报头被扩展了。

●PT恢复:该字段应当被用于恢复与FEC分组相关联的任意丢失的媒体分组的有效载荷类型。

●索引扩展:该字段包含FEC奇偶分组索引的5位最高有效比特。对于N-K<8的FEC(N,K)码来说,其值为0。

●保留:该字段未被使用。其被保留以作将来扩展之用并且被设置为0。接收机忽略该字段的值。

●总数:该字段指示作为FEC编码操作结果的分组(媒体+FEC)的总数,即FEC块尺寸。对于FEC(N,K)(例如RS)码来说,该字段的值等于N。

●TS恢复:该字段被用于恢复与FEC分组相关联的任意丢失媒体分组的时间戳。

●N:该比特被保留以作将来扩展之用并且被设置为0。

●D:该比特被作为确定哪些FEC分组与哪些FEC流相关联的附加方式。对于来自列(第一)FEC数据流的FEC分组来说,其被设置为0。对于来自行(第二)FEC数据流的FEC分组来说,其被设置为1。

●类型:该字段指示选择了哪种纠错码,并且如果使用8比特RS码则被设置为2。接收机忽略具有无法识别的类型值的分组。不具有对特定FEC解码的能力的接收机忽略该FEC分组。

●索引:该字段包含FEC分组索引的3位最低有效比特。

●偏移量:该字段被用于选择与该FEC分组相关联的媒体分组,并且对于如图3所示在列(第一FEC流)上计算的分组来说,为矩阵中列的数量(L参数)。对于在行(第二FEC流)上计算的分组来说,该参数永远是1。在自适应FEC的每个FEC流的会话期间,该字段可以改变。

●NA:该字段指示与用FEC(N,K)码编码的FEC分组相关联

的媒体分组的数量,并且对于属于图3所示的第一FEC流的分组来说,为矩阵中行的数量(D参数),并且对于属于第二FEC流的分组来说,对应于列的数量(L参数)。FEC码可以用不同的N和/或K参数生成第一FEC流和第二FEC流。K的值对于第一FEC流来说等于D,对于第二FEC流来说等于L。在自适应FEC的每个FEC流的会话期间,该字段可以改变。

●SNBase扩展位:该字段用于与需要大于16比特的扩展序列号的协议一起使用。当16比特序列号足够时,该参数被设置为0。对于具有更长序号的协议来说,该字段包含序号的8位最高有效比特。即SNBase低位字段包含序号的16个低位比特,并且

本字段包含高于序号的16个低位比特的8个比特。

为了适应支持更强的FEC码,本发明添加的新字段是索引扩展字段以及总数字段,其中所述FEC码具有用于在IP网络上传送的实时音频以及视频数据的块尺寸N以及所保护的媒体分组数量K。由给定FEC分组保护的媒体分组被限定为具有由下列公式给出的序号的那些分组:

SNBase+j×偏移量

0≤j<NA

接收机/解码器一旦接收到一个FEC分组,就可以从FEC报头中获取FEC相关的控制以及关联信息。

对媒体分组的RTP报头和有效载荷进行保护。参见图6,图6用流程图示出了FEC保护/编码方法。该FEC保护方法涉及:在605中通过将来自媒体分组的RTP报头的特定字段和有效载荷进行连接,来生成针对每个待保护的媒体分组的比特串;在610中用零来填充生成的比特串,将其填充为最接近的整数倍的符号;在615中用零来填充该比特串,将其填充为编码块中待保护的最长比特串的长度;在620中对媒体比特串应用FEC码,以生成FEC比特串;以及在625中根据FEC比特串生成FEC分组。

本发明提供了一种根据媒体分组形成比特串的方法。对于保护/编码操作遵循下列步骤。对于每个待保护的媒体分组,通过按指定顺序将下列字段连接在一起来生成比特串:

●标记比特(1比特)(标记比特的值是0)

●有效载荷类型(7比特)

●时间戳(32比特)

●媒体有效载荷长度(以字节为单位)的无符号网络顺序的(network-ordered)16比特表示(16比特)

●有效载荷(可变长度)

如果比特串的长度不等于整数倍的RS符号,将比特串填充为最接近的整数倍的符号。此填充的填充值是零。填充被添加至比特串的末尾。如果比特串的长度不相等,将每个短于最长比特串的长度的比特串填充至最长比特串的长度。针对这个填充的填充值也为零。该填充被添加至比特串的末尾。每个结果比特串是相同长度的并且包含S个符号。

然后对K个媒体比特串应用FEC(N,K)码(例如RS码)以生成N-K个FEC比特串,其中每个比特串具有S个符号的大小。使用N-K个生成的FEC比特串来获得N-K个FEC分组。对于每个FEC比特串,将FEC比特串中的第一(最高有效)比特写为FEC分组的RTP报头的标记比特。将FEC比特串的接下来7比特写为FEC分组报头中的PT恢复字段。将FEC比特串的接下来32比特写为FEC分组报头中的TS恢复字段。将接下来16比特写为FEC分组报头中的长度恢复字段。剩余比特被设置为FEC分组的有效载荷。从0到N-K-1对FEC编码块中的FEC分组的位置编写索引。将FEC分组的索引的3个较低位比特插入至FEC报头的索引字段中,将5个较高位比特插入至索引扩展字段中。FEC报头中的总数被设置为N。

FEC分组允许接收机/解码器恢复媒体分组丢失。本发明提供了一种用于在接收机处恢复分组丢失的方法。每个独立的FEC分组报头指示:FEC块尺寸、基础序号(SNbase)、偏移量、以及受保护的媒体分组的数量(NA)、以及FEC分组索引。接收机从每个FEC分组中获取这些被传送的值,以将FEC分组正确地与原始媒体分组关联,并且将该分组放置在正确位置以进行恢复。正确地排列分组(媒体以及FEC)。对从接收到的媒体以及FEC分组获得的比特串进行RS FEC解码,以恢复丢失的分组。参见图7,本发明提供了一种如下的用于恢复分组丢失的方法。

●在705中,通过反转上述过程,根据接收到的媒体分组形成媒体比特串。

●在710中,对于FEC分组,通过按照指定顺序将下列字段连接在一起来生成比特串:

标记比特(1比特)

PT恢复(7比特)

TS恢复(32比特)

长度恢复(16比特)

FEC有效载荷(可变长度)

●在715中,如果由媒体分组生成的任意比特串短于由FEC分组生成的比特串,则对它们进行填充,填充至与由FEC分组生成的比特串相同的长度。填充被添加在比特串的末尾并且填充值为0。

●在720中,对这些比特串执行RS解码,产生恢复后的比特串。

●在725中,从每个恢复后比特串获取每个恢复后分组

用标准12字节RTP报头而非有效载荷创建恢复后的分组。

将新分组的版本设置为2。

设置P、X、CC以及M字段的值

丢弃恢复比特串中的第一比特。

将恢复后分组的有效载荷类型设置为恢复比特串中的接下来的7个比特。

依照于SNBase、偏移量、以及编码块中的恢复后比特串的位置设置恢复后分组的SN字段。如果恢复后的分组是编码块中的第j个媒体分组,其SN等于SNBase+(j-1)×偏移量,(1≤j≤NA)。

将恢复后分组中的TS字段设置为恢复后比特串中的接下来的32个比特。

恢复后比特串的接下来16比特(假定是网络顺序的并且属于无符号整数)代表了有效载荷的长度。从接下来的恢复后比特串中取出由恢复后比特串的这16比特所代表的数量的字节,并将它们添加至恢复后的分组。这代表有效载荷。

将恢复后分组的SSRC设置为其正在保护的媒体流的SSRC。

该方法完全恢复了RTP分组的字段和有效载荷。

可以用任何交织方案以及分组传输调度算法来确保FEC分组与数据分组以某种方式进行交织,以避免发送速率随时间产生大的变化。例如,在发送器处的FEC处理模块可以在接收到媒体分组时立刻传递它们并且保留本地副本。当接收到足够的编码块的媒体分组或者计时器超时时,发送器处的FEC处理模块接着生成FEC分组并且将它们发送出去。应当注意在所有情况下,每个独立的FEC分组指示FEC块尺寸、基础序号(SNBase)、偏移量以及数据分组的数量(NA)、以及FEC分组索引。接收机从每个FEC分组中获取这些传送的值,以将FEC分组正确地与原始数据流分组相关联,并且将该分组放置在正确的位置以进行恢复。

图8示出了依照于本发明在发送器/编码器处的支持对IP网络上的实时音频以及视频进行FEC的编码/保护过程的示意图。FEC保护/编码过程涉及:利用RTP分组化模块805,通过将来自媒体分组的RTP报头的特定字段与有效载荷连接,来生成针对每个待保护媒体分组的比特串;用零填充生成的比特串,填充至最接近的整数倍的符号;以及用零填充比特串,填充至编码块中的待保护的最长比特串的长度。接下来,FEC编码以及分组化模块810对媒体比特串应用FEC码以生成FEC比特串,并根据FEC比特串生成FEC分组。然后,通过UDP/IP协议栈815以及网络接口820传送媒体分组以及FEC分组。RTP分组化模块815、FEC编码和分组化模块810、UDP/IP协议栈815以及网络接口820都与会话控制模块825通信并且受其控制。

图9示出了依照于本发明在接收机/解码器处的支持对IP网络上的实时音频以及视频进行FEC的恢复过程的示意图。网络接口905接收媒体以及FEC分组。网络接口将接收到的媒体分组以及FEC分组转发至UDP/IP协议栈910。UDP/IP协议栈910将媒体分组以及FEC分组转发至FEC解码和去分组化模块915。FEC解码和去分组化模块915将FEC分组报头的字段分离出来并且加以解释,并将接收到的媒体分组以及FEC分组以正确地顺序放置在FEC编码块中,并且根据所形成的媒体分组形成媒体比特串,根据接收到的FEC分组形成FEC比特串。然后,对该比特串执行RS解码生成恢复后的比特串。从而,从恢复后的比特串获得恢复后的分组。FEC解码和去分组化模块将数据转发至RTP去分组化模块920,RTP去分组化模块920从RTP分组获取RTP报头信息以及RTP有效载荷。网络接口905、UDP/IP协议栈910、FEC解码和去分组化模块915、以及RTP去分组化模块920都与会话控制模块925通信并且受其控制。

应当理解的是,本发明可以用不同形式的硬件、软件、固件、专用处理器、或者其组合来实现。优选地,本发明被实现为硬件和软件的结合。此外,软件最好被实现为实际包含在程序存储设备上的应用程序。该应用程序可以被上传至并由包括任意合适架构的机器所执行。优选地,该机器最好在具有诸如一个或多个中央处理单元(CPU)、随机存取存储器(RAM)以及输入/输出(I/O)接口等硬件的计算机平台上实现。计算机平台还包括操作系统和微指令代码。本文描述的不同过程以及功能可以或者是微指令代码的一部分或者是经由操作系统执行的应用程序的一部分(或者其组合)。另外,不同的其它外围设备(例如附加的数据存储设备以及打印设备)可以被连接至计算机平台。

应当进一步理解,由于附图中示出的一些构成系统组件以及方法步骤优选地是以软件的形式实现的,因此根据本发明的编程方式,系统组件之间的实际连接会有所不同。给定本文中的教导,相关领域的普通技术人员将可以想到本发明的这些和类似的实现或者配置。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号