本申请根据35U.S.C.§119(e)要求2009年7月8日提交的美国临时专利NO.61/270,466的权益,针对所有目的在此通过引用将其整个内容并入本申请。
具体实施方式
除了本发明的构思,在图中示出的要素是众所周知的,并且将不进行详细描述。例如,除了本发明的构思,假定熟悉分组数据通信、包括互联协议(IP)、用户数据报协议(UDP)、实时传输协议(RTP)和鲁棒性首标压缩(ROHC)以及诸如ATSC-M/H或DVB-H之类的广播系统并且在此不对其进行描述。还应注意,可以使用常规的编程技术实现本发明构思的方面,在此同样将不进行描述。最后,图中相同的数字表示相同的要素。
发明人已经发现,突发模式对于通信呈现出独特的挑战。具体地,发明人已经认识到与例如RTP的底层协议一起使用ROHC呈现出特定的挑战。如已知的,ROHC使用扩展的首标用于给定的(底层)协议,以及包括根据该底层协议(例如RTP)格式化的数据。如上描述的,ROHC使用IR分组来传送某些控制信息。在突发模式中,发明人已经认识到,如果IR分组丢失、IR分组有错误、或者其以其它方式在接收器中不可用,则接收器可能通常丢掉依赖于该丢失的IR分组的数据分组。
在示例性实施例中,稍后接收的IR分组可以用于确定或者估计在丢失的IR分组中的各条信息的值。在示例性实施例中,仅仅确定或者估计用于解码数据分组的信息。在其它实施例中,确定或者估计整个IR分组。
图1示出了采用鲁棒性首标压缩(ROHC)的典型系统的示意性表示。RFC 3095描述了ROHC及其在包括RTP和其它的各种底层协议的应用。如图1中所示出的,典型的ROHC方案包括数据分组的源101,其经由兼容ROHC的压缩器或者传送器110以及兼容ROHC的解压缩器或接收器120耦接到客户机102。源101和压缩器110典型地在同一位置(co-located),客户机102和解压缩器120也是如此,但这不是必须的。压缩器110和解压缩器120可以通过任何合适的(一个或多个)有线或者无线链路耦接。
基于正在被传送的数据,ROHC可以在三种模式之一操作:单向模式(U-模式)、乐观(optimistic)模式(O-模式)或者可靠模式(R-模式)。在U-模式下,假定没有反馈信道。O-模式和R-模式包括反馈机制,通过该反馈机制,压缩器110可以基于来自解压缩器120的反馈改变所使用的压缩等级。
ROHC操作典型地开始于传送初始化和刷新(IR)分组。IR分组是包含有关正在被传送的数据的简档的完全的上下文信息的未压缩的分组。在操作的单向模式(U-模式)中,在没有反馈的情况下,从压缩器110向解压缩器120传送分组。因为压缩器110不接收指示什么信息未被解压缩器120接收的反馈,ROHC U-模式包括超时机制,通过该超时机制,压缩器110在不同的压缩模式之间切换。
在操作的U-模式中,如可以用于例如ATSC-M/H传送中的,包含完全的上下文的IR分组可以被周期性地传送。在图2中对这种操作进行图示。IR分组可以以未压缩的形式包含上下文信息的静态和动态部分,或者其可以仅仅包含静态部分。相关的分组类型IR-DYN分组仅仅包含上下文信息的动态部分。压缩器110可以以固定的间隔在发送这两种类型的IR分组之间切换。由于在U-模式中未提供反馈,这是尤其有用的。以下更详细地描述IR和IR-DYN分组的格式。
如图2中所示,IR分组IR1包含用于解压缩分组A、B和C的上下文信息,而IR分组IR2包含用于解压缩分组P、Q和R的上下文信息。在图2的图示的情境中,在时间片中一起传送分组IR1、A、B和C,并且在稍后的时间片中一起传送分组IR2、P、Q和R。时间分片是一种传送方法,其中每个传送作为时间段上的数据突发而向外发送,并且通常在诸如ATSC-M/H或者DVB-H之类的单向广播系统中采用。在示例性的实施例中,每个时间片包含一个IR分组和在该IR分组中包含的上下文信息所属的分组。每个时间片以IR分组开始。时间片可以包含与该实施例所例示的那些不同的分组数目和IR分组。
在诸如解压缩器120在传送时间片数据期间接通的情形下,解压缩器120可能接收一些时间片的分组而错过所述分组之前的IR分组。同样,解压缩器120将已经接收到分组,但没有接收到解压缩所述分组所需的相关联的IR分组。在图3中图示了这种情境,其中接收到分组A、B和C,但是没有接收到IR分组IR1。因为解压缩器120没有接收到与分组A、B和C相关联的IR分组,其中包含的用于解压缩分组A、B和C的上下文信息不可用于解压缩器120。然而,可能稍后在后续的片中接收到一个或多个后续的IR分组。在图3图示的情境中,解压缩器120接收到分组P、Q和R之前的IR分组IR2。然而,如所提到的,IR分组包含跟随在其后的分组的上下文信息。
依据本公开的示例性实施例,ROHC解压缩器使用在IR分组中包含的上下文信息来解压缩IR分组之前的分组。在图3描绘的说明性情境中,解压缩器120使用在IR分组IR2中包含的上下文信息来解压缩另外缺乏上下文信息的分组A、B和C。这是可能的,因为诸如IR2和IR1之类的连续的IR分组将共同地包含信息。此外,可以从后续IR分组中重新创建在先前的、错过的IR分组中的某些或者全部信息。例如,IR2中的RTP时间戳(TS)、时间戳的跨度(TS_stride)、以及RTP序列号(SN)可以用于重构IR1中的对应信息。
图4A示出了RTP IR分组的格式,并且图4B示出了RTP IR-DYN分组的格式。(图4A和图4B从RFC 3095导出)。IR分组类型传达上下文的静态部分,即,恒定的SN函数的值。还可以可选地传达上下文的动态部分,即,非恒定的SN函数的参数。还可以可选地传达原始分组的有效负荷,如果有的话。IR-DYN分组类型传达上下文的动态部分,即,非恒定SN函数的参数。利用括号中的每个字段的八位字节的数字来示出分组的每个字段。
如图4A和图4B中所示的,每个IR和IR-DYN分组包括允许具有不同上下文的多个分组流共享信道的上下文标识符信息(Add-CID,CID)。每个分组的第二个八位字节标识分组类型(IR或者IR-DYN)并且在IR分组的情形下,指示(比特D)是否存在动态链(chain)字段。
如图4A和图4B中所示,每个IR和IR-DYN分组包括指定在某种类型的链路上怎样压缩某种类型的分组流的首标的首标压缩简档八位字节。压缩简档提供了ROHC首标压缩框架(framework)的细节。
如图4A和图4B中所示,每个IR和IR-DYN分组首标包括用于校验首标的完整性的循环冗余校验(CRC)八位字节。
在示例性实施例中,对于丢失的IR分组,不重新创建包括Add-CID、分组首标、简档和CRC的字段的图4A和图4B的IR首标信息,这是因为在解码数据分组时不使用它们。
在IR分组首标中,在CRC八位字节之后是静态链字段,静态链字段之后可以是动态链字段。在IR-DYN分组首标中,CRC八位字节之后是动态链字段。IR或者IR-DYN分组的首标之后是对应的原始分组的有效负荷,如果有的话。
静态链字段包含静态子首标信息的链,而动态链字段包含动态子首标信息的链。从静态链字段中推断出存在什么动态信息。可压缩的子首标被拆分为静态和动态部分。
图5A到图5C分别示出了用于互联协议版本4(IPv4)、用户数据报协议(UDP)和实时传输协议(RTP)子首标的ROHC IR分组首标的静态和动态部分。(图5A-C从RFC 3095导出)。然而,如以下讨论的,与RTP首标的内容相比,UDP和IP首标的内容典型地改变地更不频繁。
在其中丢失了分组IR1的图3的情境下,丢失了关于分组A、B和C的静态和动态部分。然而,接收到后继的IR分组IR2,其典型地包含在丢失的分组IR1中包含的相同的静态信息和对动态信息一些微小的改变。这样,在分组IR2中包含的静态和动态信息可以重用于重新创建在丢失的分组IR1中包含的静态和动态信息。在示例性实施例中,分组IR2的静态信息被重用为分组IR1的静态信息,并且分组IR2的动态和/或静态信息被用于导出分组IR1的动态信息。
对于IP和UDP分组首标,可以重用的静态信息包括源和目的地地址和端口。在广播应用中,如在示例性实施例中可想到的,典型地不经常改变源和目的地网络地址和端口。
对于包含一些诸如例如生存时间(TTL)和服务类型(TOS)之类的网络参数的IPv4首标的动态部分(图5A)而言,也是相同的。该信息不经常改变并且可以被重用于其对应的IR分组不可用的分组。
在IR分组的RTP首标的情形下,诸如如图5C中所示,存在要被重新创建的附加信息。如图5C中所示,RTP首标的静态部分包含流的同步源标识符(SSRC)。SSRC对流进行标识并且不期望从一个IR分组到下一IR分组改变。这样,来自接收的下一IR分组的SSRC可以被假定为与来自丢失的IR分组的SSRC相同。因为这种信息不随时间显著改变,因此其可以被重用。
在RTP首标的动态部分(图5C)中,前两个字节(包括版本号V、RX、CC、M和有效负荷类型PT)典型地是不期望从一个IR分组到下一IR分组改变的。这样,在示例性实施例中,来自接收的下一IR分组的这两个字节可以被假定为与来自丢失的IR分组的对应的两个字节相同并且可以被重用。
IR分组IR2的序列号(SN)可以被用于导出之前的分组的序列号。作为RTP的一部分,SN从一个分组到下一分组而递增。可以从接收的IR分组的SN确定丢失的IR分组的SN。例如,如果在丢失的IR分组和接收到的IR分组之间存在“x”个RTP数据分组,则可以通过将接收的IR分组的SN递减“x”+1而确定丢失的IR分组的SN。因此,作为例示,如果图3中示出的分组IR2具有的SN为4,则可以推断出前面的分组A、B和C具有的SN分别为1、2和3。
如在图5C中示出的,RTP首标的动态部分还包括时间戳(TS)、TS_Stride和Time_Stride字段。TS_Stride和Time_Stride分别提供连续的RTP时间戳和连续的绝对时间戳(挂钟(wall clock))之间的改变。更具体地,TS_Stride告知接收器来自之前的IR分组的RTP时间戳中的期望的改变。相应地,可以从接收的IR分组的RTP时间戳和TS_Stride中确定丢失的IR分组的RTP时间戳。另外,TS_Stride和Time_Stride通常不期望从一个IR分组到下一IR分组改变。例如,如果在丢失的IR分组和接收的IR分组之间存在“x”个数据RTP分组,则可以通过从接收的IR分组的RTP时间戳中减去((x+1)*TS_Stride))来确定丢失的IR分组的时间戳。这样,通过例示,如果IR分组IR2具有的时间戳值为100并且TS_Stride的值为10,则可以推断出前面的分组A、B和C将具有的时间戳值分别为70、80和90。
如在图5C中所示,RTP首标的动态部分还包括CRL列表字段。CRL列表通常不期望从一个IR分组到下一IR分组改变。相应地,来自丢失的IR分组的CRL列表可以被假定为与来自下一接收的IR分组中的CRL列表相同。
因此,使用稍后的IR分组,所需的大多数信息,例如,RTP分组的有效负荷类型(PT)、RTP版本(V)和时间戳(TS)可以被重新创建并且被应用到缺少上下文信息的分组。这产生了更具鲁棒性的服务。这还有助于接收器调谐地更快,这是由于其可以从分组中解码信息,即使它错过了对分组相关联的IR分组的接收。
在示例性实施例中,因为信令需求与ROHC首标中的某些字段有关,可能必须要以相反的次序重建分组A、B和C。例如,在RTP的情形下,首先重建分组C,然后是分组B,并且然后是分组A。这是由于在ROHC首标中发信号通知序列号(SN)和时间戳(TS)信息的方式。因为仅仅存在递增的数据可用,因此通过IR的反向工作而重建分组。
在示例性实施例中,ROHC分组首标中的CRC信息可以用于校验如上描述的重新创建的首标信息的有效性。在U-模式ROHC中,例如,每个分组的ROHC首标包括CRC。对于诸如使用在诸如IR2之类的另一IR分组中包含的信息重新创建的信息而解压缩的分组,诸如A、B和C,解压缩器可以通过在解压缩之后计算每个分组的CRC并且将其与在接收到的分组首标中包含的CRC比较来测试重新创建的信息的有效性。如果匹配,则可以确定重新创建的数据是有效的并且可以将该分组转发给客户机。如果不匹配,则可以丢弃该分组。
如果利用ROHC压缩RTP/UDP/IP分组,接收器可以解压缩RTP/UDP/IP首标并且然后应用CRC来验证结果首标。然而,如果分组丢失,则在重构的分组中可能存在不定性(ambiguity)。因此,在没有分组丢失的正常操作下,通过压缩器110将分组P0、P1、P2、P3...压缩为ROHC分组R(P0)、R(P1)、R(P2)、R(P3)...并且传送给解压缩器120,解压缩器120将分组解压缩回P0、P1、P2、P3...。然而,如果R(P2)丢失,例如,P2不能被重构并且因为R(P2)包含有差别的信息,可能将不正确地重构P3。
简单的接收器的实施例只是忽略分组R(P3)、R(P4),...,直到接收到下一IR分组。更复杂的接收器的实施例重构P3并且校验其CRC。如果CRC通过,则接收器继续解码后续的分组P4、P5,...,否则,其停止解码并且等待下一IR分组。在接收器的另一实施例中,如果CRC失败,改变P3的内容(诸如例如通过将SN和TS递增基于错过的分组预计的量),基于改变的内容重新计算CRC,并且再次尝试CRC。可以重复改变分组内容和重新尝试CRC的该过程,直到CRC通过或者一些事件发生,诸如例如,经过了预定时间段。
如上所描述,在以相反顺序重建分组时,即使在没有丢失分组的情况下,也可能不能确保无疑义地生成分组。因此,优选地,执行CRC的校验。另外,可以使用上面描述的改变分组内容并且重新校验CRC的迭代过程。
图6示出了依据上述描述的方法的示例性实施例的流程图。如图6中所示,在步骤202,解压缩器接收到诸如在图2和图3中示出的那些的包含多个分组的时间片。解压缩器检查时间片并且如果在204确定该时间片缺少IR分组,如在图3中的,操作前进到步骤206。在步骤206,在期望接收到具有包含可以用于解压缩分组的上下文信息的IR分组的后继的时间片的情况下,存储当前时间片中接收的压缩分组用于稍后的解压缩。然后操作返回到步骤202用于接收另一时间片。
如果在步骤204确定接收到具有IR分组的当前时间片,如在图2中描绘的情境,操作前进到步骤207,其中解压缩器检查来自在步骤206中存储的之前的时间片的任何压缩的分组是否等待解压缩。如果没有,操作前进到步骤212,其中依据在当前时间片中接收的IR分组中提供的上下文信息解压缩在当前时间片中接收的分组首标。
如果在步骤207确定存在存储的来自之前的时间片的压缩分组等待解压缩,操作前进到步骤208,其中提取当前IR分组中的信息。然后在步骤210中使用提取的信息来重新创建丢失了相关联的IR分组的存储的分组的静态和动态信息。如上所描述的,重新创建上下文信息的步骤可以包括重用一些或者全部提取的静态和/或动态信息,和/或从一些或者全部提取的静态和/或动态信息中导出上下文信息。然后操作前进到步骤212,其中依据由此重新创建的上下文信息来解压缩存储的分组。另外,还依据提取的信息解压缩当前时间片中接收的分组。然后操作返回步骤202用于接收另一时间片。
尽管已经参照其中利用突发或者时间片来传送分组的操作的突发模式公开了示例性实施例,但本发明的原理还可以应用于流传输操作模式,其中以连续流来发送分组。
在另一示例性实施例中,ROHC解压缩器使用早先接收的富含上下文的分组来解压缩稍后接收的、未接收到上下文信息的分组。示例性的ROHC解压缩器,不是丢掉缺少任何上下文信息的分组,而是使用早先接收的富含上下文的分组,诸如IR分组,来重新创建关于稍后接收的分组的上下文信息。被由此重新创建的上下文信息然后被用于解压缩接收的分组。在示例性实施例中,确定或者估计仅仅在解码数据分组中使用的信息。在其它实施例中,确定或者估计整个IR分组。
在又一示例性实施例中,ROHC解压缩器使用早先接收的富含上下文的分组和稍后接收的富含上下文的分组来解压缩未接收到其上下文信息的分组。示例性ROHC解压缩器,不是丢掉缺少任何上下文信息的分组,而是使用诸如IR分组之类的富含上下文的分组和未接收到任何上下文信息的之前以及之后的分组的组合来重新创建关于所述分组的上下文信息。例如,在RTP应用中,可以通过被正确接收的早先的和稍后的IR分组中的对应值进行内插而确定丢失的IR分组的诸如SN和TS之类的信息。由此重新创建的上下文信息然后被用于解压缩分组。在示例性实施例中,确定或者估计仅仅在解码数据分组中使用的信息。在其它实施例中,确定或者估计整个IR分组。
此外,注意到,尽管邻近的IR分组,诸如丢失的IR分组之前或之后紧接的IR分组,将最有可能包含用于重新创建丢失的IR分组的内容最精确的信息,但是还可以使用来自被另外移除的IR分组的信息,特别是,如果更邻近的IR分组中的信息的有效性受到怀疑时。
依据本发明的各种示例性实施例是可行的。例如,在示例性实施例中,提供了一种使用不同的IR分组在ROHC系统中重新创建丢失的IR分组的全部或者一部分的方法。在另一示例性实施例中,提供了一种用于处理诸如例如解码依赖于丢失的IR分组的数据的方法,所述处理利用重新创建的IR分组来进行。在另一示例性实施例中,提供了一种执行上述的重新创建和/或处理方法的处理装置。在又一示例性实施例中,提供了一种包含前述的处理装置的设备,诸如例如预处理器、编码器、传送器、接收器、解码器、后处理器、机顶盒、蜂窝电话、膝上型计算机或者其它个人计算机、PDA,或者其它消费者通信装备。
依据本发明的实施例可以适配于各种应用。例如,实施例可以用于编码视频和/或其它类型数据的环境中。另外,实施例可以用于或者适配用于标准环境中。这样的一种标准是ATSC-M/H标准,但是可以应用其它标准(现有的或者将来的)。当然,实施例不是必须用于标准中。
可以例如以方法或者处理、装置、软件程序、数据流或者信号来实现在此描述的实现方式。即便仅仅在单一形式的实现方式的背景中进行讨论(例如,仅仅作为方法讨论),但所讨论的特征的实现方式还可以以其它形式(例如装置或者程序)来实现。例如,可以以合适的硬件、软件和固件来实现所述装置。可以以例如诸如处理器之类的装置来实现所述方法,所述处理器指通常包括例如计算机、微处理器、集成电路或者可编程逻辑器件的处理装置。处理器还包括通信装置,诸如例如,计算机、蜂窝电话、便携式/个人数字助理(PDA),以及便于在终端用户之间信息通信的其它装置。
可以在各种不同的设备或者应用中实施在此描述的各种处理和特征的实现方式,具体地,例如,在与数据编码和解码相关联的设备或者应用中。这种设备的示例包括编码器、解码器、处理来自解码器输出的后处理器、向编码器提供输入的预处理器、视频编码器、视频解码器、视频编解码器、网络服务器、机顶盒、膝上型计算机、个人计算机、蜂窝电话、PDA,以及其它通信装置。应清楚,设备可以是移动的、并且甚至被安装在移动车辆上。
另外,可以通过计算机执行指令来实现所述方法,并且这种指令(和/或由实现方式产生的数据值)可以被存储在计算机可读介质中,诸如例如,集成电路、软件载体或者其它存储装置,诸如例如硬盘、致密磁盘、随机存取存储器(“RAM”)或者只读存储器(“ROM”)中。指令可以形成在计算机可读介质上有形体现的应用程序。指令可以例如在硬件、固件、软件或者组合中。指令可以在例如操作系统、单独的应用程序、或者二者的组合中发现。因此,处理器可以被表征为例如被配置为执行处理的装置和包括具有用于执行处理的指令的计算机可读介质的装置(诸如存储装置)这二者。此外,除了指令以外或者替代指令,计算机可读介质可以存储由实现方式产生的数据值。
已经描述了多个实现方式。然而,将理解,可以做出各种修改。例如,不同实现方式的要素可以被组合、补充、修改或者移除以产生其它实现方式。另外,本领域的普通技术人员将理解,其它结构和处理可以替换公开的这些结构和处理并且作为结果的实现方式将与所公开的实现方式以至少基本上相同的(多个)方式、执行至少基本上相同的(多个)功能来实现至少基本上相同的(多个)结果。相应地,这些和其它实现方式是可以由本公开想到的并且在本公开的范围内。
基于以上,前述仅仅例示了本发明的原理并且因此应认识,本领域技术人员将能够设计出尽管没有在此明确地描述但体现了本发明的原理并且在本发明的精神和范围内的各种替换布置。例如,尽管在单独的功能元件的背景下进行例示,但这些功能元件可以在一个或多个集成电路(IC)中体现。类似地,尽管被示为单独的元件,但这些元件中的一些或全部可以被实现在存储程序控制的处理器中,例如,执行例如对应于一个或多个步骤的相关联的软件的数字信号处理器或者通用处理器中,所述软件可以在各种适合的存储介质中的任一种中体现。此外,本发明的原理可应用于各种类型的无线通信系统中,例如地面广播、卫星、无线保真(Wi-Fi)、蜂窝等等。事实上,本发明构思还可应用到静止的或者移动的传送器和接收器上。因此应理解,可以对例示性的实施例做出各种修改并且可以设计出其它布置而不脱离本发明的精神和范围。