用于防止起始码模仿和数据填充的方法和系统的制作方法

文档序号:7505193阅读:144来源:国知局
专利名称:用于防止起始码模仿和数据填充的方法和系统的制作方法
技术领域
本发明涉及为了防止起始码模仿和为了数据填充的方法和系统。
本发明的背景数字数据被典型地是从某种发射机传输到某种接收器。发射机典型地包括用于传输编码数据的编码器,以及接收器典型地包括用于解码所接收的数据解码器。存在不同种类的数字数据比如视频数据,音频数据,声象数据,文本数据,电脑可执行程序数据,档案数据,数据库信息,等等。当传输数字数据时,它典型地在某种信道上传输。相当于,计算机存储器或任何存储装置或存储介质在这可以被认为是传输信道。
当传输数字数据时,重要的是在信道中能发现数据内特殊的点。完成这个操作是为了各种不同的目的,例如来定位那些能够通过信道数据传输中的错误或损失中恢复的点,在除了整个流量的开端处以外的位置那些能够启动译码过程的点,或那些能够搜索用于不同目的不同类型的数据。因此,例如,在解码器方面,解码器及处理数字数据的其它元件经常必须知道数据的上下文以便可以适当地处理数据。如果能从第一个被发送的比特开始和能在没有任何错误的情况下运行,这就不会如此重要。在这个情况下,理想地,解码器可以按照巳知的该数据的格式是什么来简单地跟踪被发送的信息。不幸地,这个理想的情况经常不发生。错误及其它偶然情况的发生对设计和使用那些发送与接收数字数据的系统的人是当前的挑战。有时比如当调谐成一种进行中的广播数据流时,解码器在数据传输的开始不能启动。由数据格式分析来定位点可能在解码器中也需要大量的复杂过程。
在许多种信道环境中,通过在该数据中提供所谓的再同步标识来从事这种发行。再同步标识提供了这种机制,通过该机制系统可以起动它的译码过程或从一个错误中恢复。例如,当数字数据如同系列的比特或字节那样流动时,在流量中有再同步标识可以提供具有基准点的解码器,结果从该基准点来恢复一个存在于传输中的错误。
再同步标识的一种方法可以是被使用的方法处于起始码的上下文中。起始码是有特殊值的比特串或字节串。通常,许多系统倾向于进位字节(例如H.222.0/MPEG-2系统),结果起始码可以被称为具有唯一值的字节串。该唯一的字节串提供一种格式,该格式中存在的内容指出再同步点。再同步点典型地指出一些可独立解码的数据开端或边界。例如,在H.262/MPEG-2视频数据中,再同步点可以指出一个数据片的开端(也就是一个独立可解码图画区域),图画的开端,GOP的开端(也就是,″图画组″或独立可解码的图画序列),或新的影像序列的开端。数字视频流量还可以包括放在起始码之前的所谓的辅助的或追加的数据。
有时,起始码不仅在一个数据流比如一个视频信息流中使用,而且被系统的多元水平使用。H.222.0/MPEG-2系统规格是一个运用起始码的系统的例子,以及传送穿插有系统水平信息和音频信息的视频数据流。
由于起始码在数据流中提供再同步点的范围是重要的,因此在不认为是表现起始码的地方,避免模仿数据流中的起始码是个好主意。
例如,考虑下列内容。起始码定义了那些可以识别新的数据单位开端的比特或字节的特殊格式。如果在起始码中间发送任意数据,那么有可能那些任意数据可以在它本身中包含一个用作起始码的相同格式。例如,如果被运送的数据是完全随机的,然后如果起始码是K比特长,在起始于某特别的比特位置的比特中偶然地模仿起始码的概率是1/2k。
有时,会判断在起始码中的比特数目是否是大的,因此对于起始码偶然地被模仿是完全不可能的。这是个关系到一些音频数据格式的例子。典型地,这些格式没有利用以比特/秒来计的很高的比特率,因此在任何特别的间隔时间期间起始码偶然被模仿的可能性不大。就视频数据而言,通常不是这种情况了,视频经常要求非常高的比特率。
在过去的主要的电视编码标准中(或许有例外),在数据有效负荷内部的视频语法格式被设计来避免起始码模仿。也就是,如果哪种数据单元可能构成视频语法,那么就可以小心地设计该语法以便没有意外的起始码会发生。例如,在传统的电视编码标准中的起始码开始于0-比特的长串,后面是1-比特。这长串可以包含23个0-比特后面是一个1-比特。假设大多数被发送的数据是使用可变长度编码来编码的熵(经常非正式地称为霍夫曼编码)。可变长度编码(VLCs)例如在这被定义为用于在一组描述符号间选择的可变深度树形结构编码。一种使用二叉树VLCs的方法来确认在树中从根到每个叶子的路径,该路径描述正当的符号,该符号在某处总是有一个“1”,而且树状结构不是太深。
因此,例如,如果知道每个可变长度编码串不比10比特长,而且每个这样的串至少有一个值为1的比特在其中,那么知道从VLC来的编码数据序列曾经包含超过18连续不断的值为零的比特是不可能的。也就是说,该最坏方案将是100000000,后面是0000000001。因此,如果小心地设计该语法和检查每个值为0和1的比特的位置来确定多少个0可以在一排中存在,可以使用一个起始码,该起始码包含一个甚至比可以在该语法中存在0的长串更长的值为0的串。例如,设计该语法以致不是一个起始码的正当的语法决不能在一个位置中包含23个0。因此,每出现的23个0将应该是一个起始码并且该解码器将能精确地发觉起始码。
当上述-描述的操作看起来很简单时,因为不得不在任何可能的数据将被发送的次序中检查所有将要被发送的可能的数据(在该比特水平)来确认起始码格式不能被偶然地发送,所以该操作也许是一个十分困难的负担。这是一个几乎是错误的语法设计的费力方法。
这个比特水平检查设计过程描述了,通常,过去许多视频编码规格的设计方法(也就是H.261,MPEG-1,H.262/MPEG-2,most of H.263,和MPEG-4)。唯一的例外情况是ITU-T建议H.263的Annex E,它在一个来自数学说明的算法方式中运用称作算术编码的方法来产生压缩的比特。这里,在熵编码器的末端有一个额外过程,该熵编码器检查产生的比特以及,在编码器方面,如果有太多的0’s连成一排,那么在预定的0’s数目遭遇之前,“标识”比特(一个1-比特)被插入。在解码器方面,解码器计算零的个数并且如果它碰到临界数个零,它知道已经碰到了一个真的起始码。如果该解码器看到比临界数较少的零,它知道接下来的1比特是一个插入的标记比特来避免起始码模仿,丢弃那个比特,并且将接下来的比特作为真实数据的继续。
这个问题的解决方法是制造编码器和解码器来检查和处理在比特水平的输入数据。分解并变换被单个比特处理的数据的位置变得很困难,以及加重了解码器的负担。比特方式变换也是一个处理器-加强操作。
因此,本发明起因于用于防止起始码模仿与提供改善有关的方法和系统。
本发明的简介被描述的方法和系统通过在比特水平高的粒度处执行操作来提供防止起始码模仿的方法。通过在一个水平而不是比特水平上的操作,可以提高处理效率。按照一个或多个实施例,防止起始码模仿的方法寻找相对于比单个比特大的尺寸固定(fixed-size)的数据部分的数据格式。当特别的格式被发现时,防止起始码模仿数据被插入来防止起始码模仿。这个插入的数据比单个比特要大并且,在一些实施例中,包括一个字节。当解码器解码具有插入了防止起始码模仿数据的数据,它可以容易地识别合理的起始码,然后能够移动防止起始码模仿数据来提供认为被传递的原始数据。
另外,一种数据填充方法被描述,该方法允许有效负荷数据聚集的大小达到整数个字节大小,然后允许填充数据以一种方式被添加,该方法容易被一个解码器检测。
附图简要说明

图1是一个按照一个实施例描述一种方法步骤的程序框图。
图2是一个按照一个实施例描述一种方法步骤的程序框图。
图3是一个与之有关的一个或多个实施例可以被实施的计算环境的高水平图表。
优选实施例的详细描述总的看法如下所述的方法和系统在比特水平高的粒度处提供防止起始码模仿的方法。通过在一个比特水平高的水平上的操作,处理效率加强了。在本文的上下文中,在一个比特水平高的水平上的操作是用来参照一个过程,该过程寻找相对于比单一的比特大的尺寸固定数据部分的数据格式。例如,尺寸固定数据部分可以包括字节(也就是,8比特),“字”(也就是16比特),“双字”(32比特)等等。因此,本发明的方法可以在字节,字,等等的内部和之间寻找格式。
另外,一种数据填充方法被描述,该方法允许有效负荷数据聚集的大小达到整数个数据单元的大小,例如字节量,以及允许填充数据以一种方式被添加,该方法容易地一个解码器检测。
另外,当在视频数据的上下文中,下面提供的例子被论述时,可以意识和理解到,本发明的方法可以与任何类型的数据结合被使用,并且该数据典型地被编码和解码以及该数据的防止起始码模仿是合乎需要的或必需的。这样的数据的例子包括音频数据,声象数据等等。
图1是按照一个实施例描述一种方法步骤的程序框图。本方法可以在任何合适的硬件,软件,固件或它们的组合中执行。在图解和描述的实施例中,本方法至少部分地在软件中被执行。另外,读者将注意到本方法有两个不同的支流——一个被指定为“编码器”以及一个被指定为“解码器”。“编码器”支流说明了被编码器执行或与编码器相关的步骤。“解码器”支流说明了被解码器执行或与解码器相关的步骤。
步骤100获得或产生一些数据,该数据用于在一起始码以后传输。该数据可以包含任何适当的数据。这类的数据的例子包括,但不限于,大量的视频数据,音频数据,声象数据,等等。步骤101在数据的开头添加起始码。这些步骤有效地将起始码添加到产生的数据中或在步骤100中获得。步骤102为尺寸固定数据部分的一个或多个格式来核对或搜索输入数据。在图解和描述的实施例中,被搜索的格式包含至少两个尺寸固定数据部分以及包括至少两个比特的各个独立数据部分。步骤104决定格式是否被发现。如果格式没有被发现,本方法转移到步骤108,在那儿数据被传输。
如果,另一方面,格式被发现,步骤106将插入与包含该格式的数据相关的防止起始码模仿数据。在图解和描述的实施例中,防止起始码模仿数据的独立实施例包含超过一个的比特。最好优先地,防止起始码模仿数据包括一些的数据,该数据在比特的数目方面和独立尺寸固定数据部分相等。因此,什么地方尺寸固定数据部分包括8比特(被认为是一个字节的一些数据),那么防止起始码模仿数据包括8比特。在防止起始码模仿数据被插入之后,步骤108传送该数据。步骤110判定是否在下一个起始码以前有要被传送的附加数据。如果存在,那么该方法回到步骤102以及如上所述那样执行。如果不存在,该方法可以判定,在步骤111,是否存在附加的数据要传送。如果存在,该方法返回到步骤100。如果没有,那么该方法可以终止在步骤112。
当做一个旁白,考虑下列内容。注意到使用这个特别技术的一个例子是将起始码分离变成一个″起始码前缀″和一个″起始码类型″后缀,在那儿该前缀是具有唯一的值的串以及该后缀指出跟随在起始码后面的数据的类型。特别得,这个是MPEG-2和H.264/AVC起始码的结构,以及这个也是在下面称为“第一示范方法”部分中使用的结构。一个将包括有前缀/后缀结构的数据用作一个特例的更普通的形式,是具有一个或多个起始码格式的普通概念。因而,还可以有一个或多个防止模仿格式。只要不同的起始码格式区别于不同的防止模仿格式,以及所有这些格式在有效负荷数据的过程中避免,该方案将起作用。另外,不应该必须假定起始码格式都具有全部相同的长度。特殊情况下这个可能是重要的,因为,例如,H.264/AVC的运用可能被解释为使用多-长度起始码。
在解码器方面,考虑下列内容。一旦防止起始码模仿数据已经被编码器插入,它可能被识别和移动了或用于其它数据的正确解释而在有些点上被忽视。也考虑到解码器接收要被发送的数据时,它可能寻找合理的起始码。一旦它发现合理的起始码,它知道该被定义为起始码的数据边界在什么地方。现在,解码器可以着手寻找和移动防止起始码模仿数据以便它能够更进一步地处理真实数据。
特别地,步骤114接收被发送的已经被编码器处理的数据来防止起始码模仿。步骤118处理该数据来发现起始码。一旦起始码被发现和适当地处理(也就是读和丢弃),步骤120搜索该数据来识别防止起始码模仿数据。一旦该防止起始码模仿数据被发现,步骤122移动该防止起始码模仿数据。一旦防止起始码模仿数据已经被移动,该数据可以代表了已经被接收的数据的类型的方式来处理。例如,该数据可以被一种消耗装置消耗,如同在步骤124中一样。
第一个示范的方法图1中有关被描述的方法仅说明了一个图中显示和描述的方法的具体的例子。在有关被描述的方法中,每当一串n+1字节的有效负荷数据和整个起始码前缀相匹配,或者和起始码前缀的前N个字节加上防止模仿字节值相匹配时,一个防止模仿数据的字节被插入。这个方法添加的数据通常比在叫做“第二示范的方法”的部分描述的方法中添加的数据少,并且因此减少了发送有效负荷数据的传输能力需求。
MPEG-2起始码前缀结构开始于一个定位字节位置以及具有23个0’s后面是一个1。这个起始码前缀将在下面被直接地设置为
00000000 00000000 00000001。
这个结构可以被概括为一个格式,该格式包括一些具有相同值的字节N,后面是具有不同的值的其它的字节。在MPEG-2中,可以说N=2,以及开头两个字节是0(下面称为″W″),而且接下来的字节是1(下面被称为X″)。因此,该起始码前缀具有下面的格式WWX在这些三字节后面,在MPEG-2中,另一个字节紧接着和识别它是哪种起始码。这个接着的字节被认为是“Y”。本质上,然后,该起始码由一个起始码前缀WWX,后面是一个用来识别起始码种类的字节Y组成。整个MPEG-2起始码可以当做WWXY起始码前缀(WWX)具有一个定值,同时Y具有许多不同的用来指出起始码种类(例如,部分,图画,GOP,序列,系统,等等)的值。
按照一个实施例,数据被处理来寻找格式WWX。当该WWX格式被发现时,防止起始码模仿数据被插入来防止起始码模仿。这里,该防止起始码模仿数据包括一个字节Z,该字节具有不同于W和X字节的值。因此,假定该编码器是检查字节数据和注意格式WWX。对于在数据中发现这个格式起反应,编码器插入一个值为Z的字节来提供下列格式WWZX在这一点上,编码器保证被传送和被解码器处理的有效负荷数据不会偶然地模仿一个起始码或起始码前缀。现在考虑下列内容。仅当有效负荷数据具有机会来任意地包含WWX格式来模仿起始码前缀时,该有效负荷数据也具有机会来任意地模仿包含该防止起始码模仿数据的数据。也就是说,有效负荷数据可以固有地包含格式WWZX。如果是这种情况,编码器不被允许做任何事,那么当解码器试图移动防止起始码模仿数据时,它可能移动在这个情况下是真实数据的Z字节。
因此,在描述的实施例中,编码器被配置来不仅使有效负荷数据避免模仿起始码或起始码前缀,而且编码器被配置来使数据避免通过利用防止起始码模仿数据而引起的数据格式。特别地,在这个例子中,如果编码器识别格式WWZ,它在第二W和Z之间插入一个具有值Z的字节来提供下列格式(该插入的字节Z是在下面显示的第一个Z)WWZZ现在,从解码器的观点来考虑被处理的数据。如果解码器看到包括WWZ的任何格式的字节后面是一个Z或者X,它知道那个第一个Z是一个被编码器插入的防止模仿字节。因此,解码器可以丢弃第一个Z。因此,在这个例子中,当一个防止模仿字节可以被插入时存在两个情况。第一个情况是当数据将偶然地模仿起始码或起始码前缀时。第二情况是当该数据可能偶然地模仿具有一个被插入的防止模仿字节的数据时。
两种情况中,解码器可以简单地寻找适当的格式,丢弃防止模仿字节,并且象往常一样处理该数据。
为了在更程序设计化的方式中说明上述的处理,考虑下列内容。在编码器方面,发送B字节的报文分组P[],从一个由N或更多字节相同的值的W和一个紧接着的不同值的字节X组成的起始码前缀开始,后面是一个具有值Y的1个字节的识别起始码类型后缀,我们操作下列伪码过程,该过程插入具有值Z(其中W,X,Y,和Z互相具有不同的值,以及P[B-1]与W不同)的防止模仿字节,其中发送用来填充信道的额外的数据的数量用E表示<pre listing-type="program-listing"><![CDATA[int B,N,E,i,j;byte *P,W,X,Y,Z;for(j=0;j<N+E;j++);/*起始码前缀(SCP)*/send_byte(W); /*SCP的第j个字节*/send_byte(X); /*SCP的最后一个字节*/send_byte(Y); /*起始码类型后缀*/for(i=j=0;i<B;i++){if(j>=N&amp;&amp;(P[i]=X‖P[i]=Z)){send_byte(Z);j=O;}send_byte(P[i];/*)一个字节的有效负荷数据*/if(P[i]=W)j++;else j0;}]]></pre>在上述伪码中,函数“send_byte()”被假定来操作数据单元的传输(在图1中过程108)。
在解码器方面,接收该报文分组,假定解码器已经发现,读,并且丢弃了一个由N或更多字节相同的值的W和一个紧接着的不同值的字节X组成的起始码前缀。也假定我们希望将未知的单一字节起始码类型后缀读成变量Y以及将有效负荷数据的报文分组读成一个数组P[],以及判定有效负荷数据的数量以及将数量指示放入变量B中,同时移动具有值Z(其中W,X,Y,和Z互相具有不同的值,和P[B-1]与W不同)的防止模仿字节<pre listing-type="program-listing"><![CDATA[int B,N,j,next;byte *P,W,X,Y,Z;/*假定起始码前缀已经被读了*/Y=receive_byte();/*起始码类型后缀*/for(B=j=O,next=0;more_data()&amp;&amp;!next;B++){P[B]=receive_byte();if(j>=N){if(P[B]=W)j++;else{j=0;next=(P[B]=X);if(P[B]=Z)B--;}}elseif(P[B]=W)j++;else j=o;}if(next)/*下一个起始码被发现*/B-=j+1;]]></pre>
在上述伪码中,函数“receive_byte()”被假定来接收数据单元以及函数“more_data()”被假定来决定是否有更多的数据单元要被接收(这两个函数包括在图1中的过程114)。
以上描述的方法允许一个任意数量的值为W的数据填充到起始码之前。公式可能将值为W的前缀的数目定为N。
第二个示范的方法有关被描述的方法仅说明了另一个图中显示和描述的方法的具体的例子。这里,每当一串N字节的有效负荷数据和起始码前缀的开始的N字节相匹配,该方法插入字节的防止模仿数据,而不管后来的有效负荷数据的值。使用以上的例子的命名法,如果数据包含格式“WW”,而后面是任何值,该方法插入一个防止模仿字节。因此,当编码器识别格式WW时,它插入一个防止模仿字节来提供下列格式WWZ在第一个描述的方法和上面刚描述的方法之间的区别是第一个方法检查开始的N+1字节来确定在哪里插入一个防止模仿字节,而上面刚描述的方法检查开始的N字节。
第一个方法减少了额外被传送的数据的数量,同时上面刚被描述的方法操作使用简单法则。因此,两种方法一起提供了一个在减少数据传送的数量和减少规则复杂性之间的选择。同第一-描述的方法,相对于第二-描述的方法,数据量被减少。同第二-描述的方法,简单法则被使用。
为了在更程序化的方式中说明上述的处理,考虑下列内容。在编码器方面,发送B字节的报文分组P[],从一个由N字节相同的值的W和一个紧接着的不同值的字节X组成的起始码前缀开始,后面是一个具有值Y的1个字节的识别起始码类型后缀,我们操作下列伪码过程,该过程插入具有值Z(其中W,X,Y,和Z互相具有不同的值,和P[B-1]与W不同)的防止模仿字节<pre listing-type="program-listing"><![CDATA[int B,N,i,j;byte*P,W,X,Y,Z;for(j=0;j<N;j++)/*起始码前缀(SCP)*/ send_byte(W);/*SCP的第j个字节*/send_byte(X); /*SCP的最后一个字节*/send_byte(Y); /*起始码类型后缀*/for(i=j=0;i<B;i++){send_byte(P[i]);/*一个字节的数据有效负荷*/if(P[i]!=W)j=O;elseif(++j=N){send_byte(Z);j=0;} }]]></pre>在上述伪码中,函数“send_byte( )”被假定来操作数据单元的传输(在图1中的过程108)。
在解码器方面,接收该报文分组,假定解码器已经发现,读,和丢弃了一个由N字节相同的值的W和一个紧接着的不同值的字节X组成的起始码前缀。也假定我们希望将未知的单一字节起始码类型后缀读成变量Y以及将有效负荷数据的报文分组读成一个数组P[],以及判定有效负荷数据的数量以及将数量指示放入变量B中,同时移动具有值Z(其中W,X,Y,和Z互相具有不同的值,和P[B-1]与W不同)的防止模仿字节<pre listing-type="program-listing"><![CDATA[int B,N,j,k;byte *P,W,X,Y,Z;/*假定起始码前缀已经被读*/Y=receive_byte();/*起始码类型后缀*/for(B=j=0,k=Z;more_data()&amp;&amp; k!=X;B++){P[B]=receive_byte();if(P[B]=W){ if(++j=N){ k=receive_byte();/*一直是more_data()*/if(k!=Z&amp;&amp;k!=X)declare_error();j=o; }}elsej=0;}if(k=X)/*另一个起始码被发现*/B-=N;]]></pre>在上述伪码中,函数“receive_byte()”被假定来接收数据单元以及函数“more_data()”被假定来决定是否有更多的数据单元要被接收(这两个函数包括在图1中的过程114)。
人们相信以上-描述的方法将扩大大量理想化的随机输入有效负荷数据的数量,对于第二-描述的方法是大约1/256N,而对于第一-描述的方法是大约1/256(N+1)。这些数量是小的,如果N是大的(例如,2或更大的,注意到MPEG-2起始码中N=2)。该最坏情况下的有效负荷的膨胀系数被认为对于第二-描述的方法是1/N而对于第一个-描述的方法是1/(N+1)。如果N被增加,有效负荷的膨胀系数在统计学和最坏情况分析中降低,虽然被起始码他们自己使用的数据的数量是增加的。
应该认识到,以上描述的防止模仿过程不依赖于知道在开始发送数据以前有多少数据在报文分组中。因此它没有添加重要延迟。
第二描述的方法的公式假定插入的防止模仿字节是具有值为Z的单字节。有可能为了防止模仿数据而代替使用任何值或多个值或一个或多个串值,只要开始字节的插入数据与W或X不同,它将模仿一个正当的起始码或好象是一个前缀开端的延续。
甚至可以在这些防止模仿字节(比如H.263-格式GOB帧ID/picture序号,例如,或许仅仅设定MSB为‘1’以及使用另一个七比特来发送一个ASCII符号)中传送信息。
如果考虑到在解码器方面在报文分组的末端将会发生什么,我们认识到如果数据包有效负荷的紧接着的字节不是W,那么易于控制该操作。这意味着紧接着的字节在起始码决不会需要一个防止模仿字节之前被发送,以及可发觉的边界可以由解码器设置在有效负荷数据结尾和为了下一起始码的等于W的字节序列的开端之间。还可以允许将任何数量的W字节(例如,零字节)添加到有效负荷的结尾之后和下一起始码之前,而不丢失对有效负荷的结尾在哪里的跟踪。
数据填充正常地,视频数据,当作有效负荷数据被发送的数据也许不是整数个字节。例如,也许在两个起始码之间有627比特要被发送。然而,系统多元水平可以用字节来操作。这是就MPEG-2规格来说的。例如能够检测一些有传输误差产生的不正确的起始码格式或者能够简易的为含于有效负荷开始处的数据译码的过程这样的其它的理由也可能为了分组调整要求来包含整数个数据单元例如字节。因此,也许必须发送更多数据来传送627比特的数据。然后这个问题变成如何填充该数据来使它成为一个整数个的字节。
这是个发送额外的填充值数据的有用的方法,但还有其它情况。例如,如果一信道容量是1兆比特/秒,并且被传输的有效负荷数据的数量仅仅是900K比特/秒,也许需要或想用填充数据来装满该信道。
按照一个实施例,数据填充方法能够将额外的数据添加到信道,本质上,填充有效负荷数据。
图2是按照一个实施例,描述了数据填充方法中的步骤的程序框图,在该实施例中起始码被认为开始于一串等于零的比特。步骤200建立了想被发送的数据结尾的位置。步骤202紧接着有效负荷数据的比特之后插入一个为“1”的比特。步骤204判定要求发送整数个字节而附加的比特的数目。步骤206在插入的值为“1”的比特之后插入所需个数的值为“0”的比特。步骤208添加任何所要求字节的填充数据。填充数据可以由目的是真实的有效负荷和有意图的起始码的位置上避免混淆的任何数据格式组成。这典型地由插入值为的″0″的字节来执行。
举例来说,考虑下列内容。假设627比特将被发送。步骤202在627个比特之后将插入一个为“1”的比特。然后步骤204将决定需要4个比特来提供整数个的字节——这里,是79字节。因此,步骤206将在插入的值为“1”的比特之后插入四个值为“0”的比特或者是0000。现在,已经建立了整数个的字节,步骤208可以,如果是这样的要求,增加任何所要求的数目的字节的填充数据。在这些特别的例子中,值为0的字节可以被插入。填充数据能简单地被当做填充符数据使用,或为了其它的目的,例如包含一个解码器可以用作一些目的的信息。
现在,考虑在解码器的情况。解码器接收填充数据和在数据结尾启动并且通过该数据向后看。解码器开始看到的所有字节将要成为0字节,直到它得到值为1“1”的字节。值为“1”的比特告诉解码器有效负荷或实际数据结尾的位置。因此,一旦解码器发现被插入的值为″1″的比特,它可以精确地判定真实数据的结尾在哪里。
因此,如上所述的方法可用于″聚集″被发送的比特的数目以致被发送的比特的数目包含一个整数个的数据单元。另外,这些方法可用于在指定有效负荷数据开端的起始码之间填充数据。
计算机环境的示例图3描述了一个合适的计算环境300的实施例,上面描述的系统和相关的方法可在此环境中被实施。
示例性计算环境300只是一个合适计算环境的例子,以及不打算建议作任何的限制,比如对使用的范围,或者上面描述的编码/解码系统的功能。计算环境300不应被解释为与计算环境300中描述的任一组件或组件的组合有相关的依赖性或要求。
所描述的不同的实施例可以和多种其它的通用目的或者特殊目的的计算机系统环境或者配置一起执行。适合用于媒介处理系统的已知的计算机系统,环境和/或配置包括,但不限于,个人计算机,服务计算机,薄的客户机,厚的客户机,手持或便携式电脑,多处理器系统,基于微处理器的系统,置顶盒,可编程的消费电子,网络PC,微型计算机,大型机,包含任何上述系统和设备的分布式计算环境,等等。
在某种执行中,系统和相关方法可以用计算机可执行指令的通用内容来描述,例如被计算机执行的程序模块。通常,程序模块包括程序,对象,部件,数据结构,等等,它们执行特殊任务或者执行特殊抽象数据类型。该实施例也可以在分布式计算机环境中实现,其中任务被通过计算机网络连接的远程处理设备执行。在分布式计算机环境中,程序模块可以分布在本地和远程包括存储设备的计算机存储媒介上。分布式计算机系统的部件可以被用来执行具有如上所述功能的编码器和解码器。
参照如图3中所示的实施例,计算系统300包括一个或者几个处理器或者处理单元302,系统存贮器304,以及把各种系统部件,包括系统存贮器304耦合,至处理器302的总线306。
总线306表示一个或者多个若干总线结构类型的任何一种,它包括存贮器总线或者存贮器控制器,外部设备总线,加速图形端口,以及处理器和使用各种总线结构任何一种的本地总线。举例来说,但不是以此为限,这些结构包括工业标准(1SA)总线,微通道结构(MCA)总线,增强型(EISA)总线,视频电子标准协会(VESA)局部总线,以及外部设备互连(PCD总线,也称为Mezzanine总线。
计算机300典型地包括各种计算机可读媒体,这些媒体可能是任何可利用的媒体,它可由计算机300访问,并且包括易失性媒体和非易失性媒体,可移动式和不可移动式二者。
图3中,系统存贮304包括计算机可读媒体,以易失性存贮器的形式,比如,随机存取存贮器(RAM)310,和/或非易失性存贮器形式,比如,只读存贮器(ROM)308。基本输入/输出系统(BIOS)312,包括基本的子程序,它帮助在计算机300内的部件之间传送信息,比如,当启动的时候,被存贮在ROM308中的信息。RAM310典型地包括数据和/或程序模块,它可立刻被处理器302访问和/或当前正被处理器302的操作。
计算机300可能进一步包括其它可移动式/不可移动式的,易失性/非易失性的计算机存贮媒体。举例来说,图3示例了一个硬盘驱动器328,它用来读来自并且写到非移动式,非易失性的磁性媒体中(没有表示在图中同时,典型的称为“硬驱动器”),磁盘驱动器330用于读来自或者写到可移动式,非易失性的磁盘332上(比如,“软磁盘”),以及光盘驱动器334用来读来自或者写到可移动式,非易失性光盘336,比如,CD-ROM,DVD-ROM,或者其它的光媒体。硬盘驱动器328,磁盘驱动器330以及光盘驱动334,它们每个设备由一个或者多个接口326连接到总线306上。
驱动器和相关的计算机可读媒体提供了计算机可读指令,数据结构,程序模块,以及其它从计算机300来的数据的非易失性贮存。虽然此处示例性环境描述采用硬盘328,可移动式磁盘332以及可移动式光盘336,本领域中的技术人员应当理解其它类型的可由计算机来存取所存贮的数据的计算机可读媒体,比如,盒式磁带,闪存卡,数字视频盘,随机存取存贮器(RAMs),只读存贮器(ROM),以及其它类似的设备,也可以用在示例性的操作环境中。
一些程序模块可能被存贮在硬盘328,磁盘332,光盘336,ROM308,或者RAM310中,包括,比如,但不限于,操作系统314,一个或者多个应用程序316(例如,多媒体应用程序324),其它的程序模块318和程序数据320。用户可以经过输入设备,比如键盘338和触点设备340(比如“鼠标)提供命令和信息进入计算机300。其它的输入设备(图中没有表示出来)可能包括声象输入设备353,话简,控制杆,游戏板,卫星式转盘,串行端口,扫描仪,或者同样的东西(图中没有显示出来的)。这些和其它的输入设备通常经过用户输入接口342连接到处理单元302,它连接到总线306上,但是也可采用其它的接口和总线结构来连接,比如像平行端口,游戏端口或者适用的串行总线(USB)。
监视器356或者其它类型的显示设备也可以经过一个接口,比如视频匹配器或者视频/图形卡344,连接到总线306上。另外,监视器,个人计算机典型地包括其它外部输出设备(图中没有表示出来),比如扬声器和打印机,它们可以经过输出外部设备接口346来进行连接。
计算机300可以在用逻辑连接到一台或多台远程计算机的网络环境下进行操作,比如用远程计算机350。远程计算机350可能包括在这里和计算机300相关连的很多或者所有的部件的特性的描述。
如图3中所示,计算系统300通过局域网(LAN)351以及广域网(WAN)352被可通信地连接到远程设备上(例如,远程计算机350)。这样的网络环境是在办公室,企业-宽计算机网络,企业内部互联网以及国际互联网是常见的。
当用在LAN局域网环境下时,计算机300通过网络接口或者适配器348连接到局域网LAN351上。当用在WAN网环境下时,计算机300典型地包括有调制器354或者其它用于在WAN352上建立通讯的装置。调制器354它可以是内置的或外置的,经过用户输入接口342或者其它合适的机制可以被连结到系统总线306上。
在一个网络的环境下,所描述的相关于个人计算机300的程序模块或者其中的部分,可能贮存在远程存贮器贮存设备上。例如像图3所描述的那样,但不限于,远程应用程序316可能驻留在远程计算机350的存贮设备上。将会理解到,所给示的和所描述的网络连结是示例性的,并且也可以使用在计算机之间建立通讯链路的其它装置。
结论如上所述的一些方法和系统可以在不同于比特水平的处理水平上提供防止起始码模仿。这是个优点,因为它能简化处理复杂性。本文中所述的方法可以在任何合适的上下文中执行,例如,与包含通过可变长度编码,Huffman码和算术编码所产生的内容的有效载荷相关。另外,一些实施例提供了数据填充的简单方式,它能确保当需要的时候有整数个字节被发送以及它可以允许发送除了起始码,防止模仿格式,和基本有效负荷数据以外的附加填充数据。
虽然本发明通过结构特征和/或方法步骤这些特殊语言来描述了,但也应该理解由下面的权利要求限定的本发明不仅限于所述的特殊技术特征或步骤。更进一步,特殊技术特征和步骤是作为实现所要求的发明的优选形式被公开的。
权利要求
1.一种方法包括在使用起始码的环境中被用于编码传输的数据内搜索至少一个尺寸固定数据部分的格式,各尺寸固定的数据部分包括至少两个比特;以及对发现一个格式作出反应,相对于包含该格式的数据插入起始防止码模仿数据。
2.如权利要求1所述的方法,其特征在于,搜索动作通过通过搜索视频数据来执行。
3.如权利要求1所述的方法,其特征在于,搜索动作通过搜索音频数据来执行。
4.如权利要求1所述的方法,其特征在于,搜索动作通过搜索声象数据来执行。
5.如权利要求1所述的方法,其特征在于,搜索动作通过搜索一个或多个格式来执行,其中的至少一个包括至少两个尺寸固定数据部分。
6.如权利要求1所述的方法,其特征在于,搜索动作通过搜索多重格式来执行。
7.如权利要求1所述的方法,其特征在于,搜索动作通过搜索多重格式来执行,该多重格式中的至少一部分具有不同的长度。
8.如权利要求1所述的方法,其特征在于,搜索动作通过搜索多重格式来执行,各格式被结构化为后面跟随类型指示后缀的一个前缀。
9.如权利要求1所述的方法,其特征在于,搜索动作通过搜索多重格式来执行,各格式被结构化为后面跟随类型指示后缀的一个前缀,其中各模式的前缀长度和类型指示后缀中的一个或多个在长度上可以不同于其它模式的前缀长度和类型指示后缀长度。
10.如权利要求1所述的方法,其特征在于,插入防止起始码模仿数据的动作包括从多种不同格式的防止模仿数据中选出来。
11.如权利要求1所述的方法,其特征在于,插入防止起始码模仿数据的动作包括从多种不同格式的防止模仿数据中进行选择,其中各个数据可以具有不同的长度。
12.如权利要求1所述的方法,其特征在于,插入防止起始码模仿数据的动作包括插入一个以上的比特。
13.如权利要求1所述的方法,其特征在于,插入防止起始码模仿数据的动作包括插入其比特数和各尺寸固定数据部分相等的数据。
14.如权利要求1所述的方法,其特征在于,更进一步地包括传输包含防止起始码模仿数据的数据。
15.如权利要求1所述的方法,其特征在于,搜索和插入的动作由一个编码器来执行。
16.一个或多个计算机可读的媒介,包含一个编码器,该编码器被配置来在使用起始码的环境中被编码传输的数据内部搜索至少一个尺寸固定数据部分的格式,各尺寸固定的数据部分包括至少两个比特;以及对发现一个格式作出反应,相对于包含该格式的数据插入起始防止码模仿数据。
17.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,它使得该一个或多个处理器来在使用起始码的环境中被编码传输的数据内部搜索至少一个尺寸固定数据部分的格式,各尺寸固定的数据部分包括至少两个比特;以及对发现一个格式作出反应,相对于包含该格式的数据插入起始防止码模仿数据。
18.如权利要求17所述的一个或多个计算机可读的媒介,其特征在于,所述指令促使所述一个或多个处理器来处理视频数据。
19.如权利要求17所述的一个或多个计算机可读的媒介,其特征在于,所述指令促使所述一个或多个处理器来处理音频数据。
20.如权利要求17所述的一个或多个计算机可读的媒介,其特征在于,所述指令促使所述一个或多个处理器来处理声象数据。
21.如权利要求17所述的计算机可读的媒介,其特征在于,所述指令促使所述一个或多个处理器来搜索一个或多个格式,其中至少有一个格式包括至少两个尺寸固定数据部分。
22.如权利要求17所述的一个或多个计算机可读的媒介,其特征在于,所述指令促使所述一个或多个处理器插入包括一个以上比特的防止起始码模仿数据。
23.如权利要求17所述的计算机可读的媒介,其特征在于,所述指令促使所述一个或多个处理器插入其比特数和一个尺寸固定数据部分相等的数据。
24.如权利要求17所述的一个或多个计算机可读的媒介,其特征在于,该指令使一个或多个处理器发送包含防止起始码模仿数据的数据。
25.一种方法包括在使用起始码的环境种被传输的数据中搜索至少一个字节水平的格式,该格式由多个字节来定义;以及对发现一个格式作出反应,相对于包含该格式的数据插入起始防止码模仿数据。
26.如权利要求25所述的方法,其特征在于,搜索动作通过搜索视频数据来执行。
27.如权利要求25所述的方法,其特征在于,搜索动作通过搜索音频数据来执行。
28.如权利要求25所述的方法,其特征在于,搜索动作通过搜索音频/视频数据来执行。
29.如权利要求25所述的方法,其特征在于,插入防止起始码模仿数据的动作包括插入至少一个字节。
30.如权利要求25所述的方法,其特征在于,还包括传输包含防止起始码模仿数据的数据。
31.如权利要求25所述的方法,其特征在于,搜索和插入的动作由一个编码器来执行。
32.一个或多个包含一个编码器的计算机可读的媒介,该编码器被配置来获取在使用起始码的环境中传输的数据;在所接收的数据中搜索至少一个字节水平的格式,该格式由多个字节来定义;以及对发现一个格式作出反应,相对于包含该格式的数据插入防止起始码模仿字节。
33.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,它促使所述一个或多个处理器来获得在使用起始码的环境中传输的数据;在被接收的数据中搜索至少一个字节水平的格式,该格式由多个字节来定义;以及对发现一个格式作出反应,相对于包含该格式的数据插入防止起始码模仿字节。
34.一种方法包括接收已用防止起始码模仿数据进行编码的数据来防止模仿起始码,防止起始码模仿数据的各实例包括多个比特;在所接收的数据内搜索合法起始码;搜索所接收的数据来识别防止起始码模仿数据;以及对发现防止起始码模仿数据作出反应,去除防止起始码模仿数据。
35.如权利要求34所述的方法,其特征在于,接收动作通过接收视频数据来执行。
36.如权利要求34所述的方法,其特征在于,接收动作通过接收音频数据来执行。
37.如权利要求34所述的方法,其特征在于,接收动作通过接收音频/视频数据来执行。
38.如权利要求34所述的方法,其特征在于,所述诸动作由一解码器来执行。
39.编制程序来实施如权利要求34所述的方法的一个或多个计算机系统。
40.一个或多个包含解码器的计算机可读的媒介,该解码器被配置来接收已用防止起始码模仿数据进行编码的数据来防止模仿起始码,防止起始码模仿数据的各实例包括多个比特;在所接收的数据内搜索合法起始码;搜索所接收的数据来识别防止起始码模仿数据;以及对发现防止起始码模仿数据作出反应,去除防止起始码模仿数据。
41.一种方法包括接收已用防止起始码模仿数据进行编码的数据来防止模仿起始码,防止起始码模仿数据的各实例包括一个或多个尺寸固定数据单位;在所接收的数据内搜索合法起始码;搜索所接收的数据来识别防止起始码模仿数据;对发现防止起始码模仿数据作出反应,去除防止起始码模仿数据。
42.如权利要求41所述的方法,其特征在于,接收动作通过接收视频数据来执行。
43.如权利要求41所述的方法,其特征在于,接收动作通过接收音频数据来执行。
44.如权利要求41所述的方法,其特征在于,接收动作通过接收音频/视频数据来执行。
45.如权利要求41所述的方法,其特征在于,尺寸固定数据单位包括一个字节。
46.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,其使得一个或多个处理器实施如权利要求41所述的方法。
47.一种解码器,被配置来接收已用防止起始码模仿数据进行编码的数据来防止模仿起始码,防止起始码模仿数据的各实例包括一个或多个字节;在所接收的数据内搜索合法起始码;搜索所接收的数据来识别防止起始码模仿数据;以及对发现防止起始码模仿数据作出反应,去除防止起始码模仿数据。
48.一个或个多包含权利要求47的解码器的计算机系统。
49.一种方法,包括获取旨在在运用起始码的环境中传输的数据;在该数据内搜索至少一个格式,该格式包括一串N+1字节的有效负荷数据,其有效负荷或者(1)和整个起始码前缀相匹配,或者(2)和起始码前缀开始的N字节加上防止模仿字节的值相匹配;以及对发现一个格式作出反应,相对于包含该格式的数据插入防止起始码模仿字节。
50.如权利要求49所述的方法,其特征在于,起始码前缀起始于字节一个定位位置。
51.如权利要求49所述的方法,其特征在于,该格式包括具有相同值的N个字节,和具有不同的值的另一个字节。
52.如权利要求49所述的方法,其特征在于,该格式包括具有值为的0的N个字节,和具有不同的值的另一个字节。
53.如权利要求49所述的方法,其特征在于,N=2。
54.如权利要求49所述的方法,其特征在于,防止起始码模仿字节具有与起始码前缀的任何字节的值不同的值。
55.如权利要求49所述的方法,其特征在于,获取动作通过获得视频数据来执行。
56.如权利要求49所述的方法,其特征在于,获得动作通过获得音频数据来执行。
57.如权利要求49所述的方法,其特征在于,获得动作通过获得音频/视频数据来执行。
58.如权利要求49所述的方法,其特征在于,还包括传输包含一个或多个防止起始码模仿字节的数据。
59.如权利要求49所述的方法,其特征在于,获取、搜索和插入动作由一个编码器来执行。
60.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,其使得一个或多个处理器来获取旨在在运用起始码的环境中传输的数据;在所获取的数据内搜索至少一个格式,该格式包括一串N+1字节的有效负荷数据,其有效负荷或者(1)和整个起始码前缀相匹配,或者(2)和起始码前缀开始的N字节加上防止模仿字节的值相匹配;以及对发现一个格式作出反应,相对于包含该格式的数据插入防止起始码模仿字节。
61.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,起始码前缀起始于一个字节定位位置。
62.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,该格式包括具有相同值的N个字节,和具有不同的值的另一个字节。
63.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,该格式包括具有值为0的N个字节,和具有不同的值的另一个字节。
64.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,N=2。
65.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,防止起始码模仿字节具有与起始码前缀的任何字节的值不同的值。
66.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,所述指令使一个或多个处理器获取并处理视频数据。
67.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,所述指令使一个或多个处理器获取并处理音频数据。
68.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,所述指令使一个或多个处理器获取并处理音频/视频数据。
69.如权利要求60所述的一个或多个计算机可读的媒介,其特征在于,所述指令使一个或多个处理器发送包含一个或多个起始码模仿字节的数据。
70.一个或多个包含如权利要求60所述的一个或多个计算机可读的媒介的计算机系统。
71.一方法,包括接收已经被处理以包含一个或多个防止起始码模仿字节来防止起始码模仿的数据,该数据按照一个规则被处理搜索至少一个数据格式,该数据格式包括一串N+1字节的有效负荷数据,其有效负荷或者(1)和整个起始码前缀相相匹配,或者(2)和起始码前缀开始的N字节加上防止模仿字节的值相匹配;和相对于包含该格式的数据插入防止起始码模仿字节;在所接收的数据内搜索合法起始码;搜索所接收的字节来识别防止起始码模仿字节;以及对发现防止起始码模仿字节作出反应,去除防止起始码模仿字节。
72.如权利要求71所述的方法,其特征在于,接收动作通过接收视频数据来执行。
73.如权利要求71所述的方法,其特征在于,接收动作通过接收音频数据来执行。
74.如权利要求71所述的方法,其特征在于,接收动作通过接收音频/视频数据来执行。
75.如权利要求71所述的方法,其特征在于,所述的动作由一解码器来执行。
76.如权利要求71所述的方法,其特征在于,该数据格式包括具有相同值的N个字节,和具有不同的值的另一个字节。
77.如权利要求71所述的方法,其特征在于,该数据格式包括具有值为0的N个字节,和具有不同的值的另一个字节。
78.如权利要求71所述的方法,其特征在于,防止起始码模仿字节具有与起始码前缀的任何字节的值不同的值。
79.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,其使得一个或多个处理器实施如权利要求71所述的方法。
80.一种计算机系统,包括一个或多个计算机可读的媒介;一个或多个处理器;和包含在所述计算机可读媒介上的计算机可读指令,当指令被一个或多个处理器执行时,其使得一个或多个处理器实施如权利要求71所述的方法。
81.一种方法,包括获取旨在在运用起始码的环境中传输的数据;在该数据内搜索至少一个格式,该格式包括一串N+1字节的有效负荷数据,其有效负荷或者(1)和整个起始码前缀相相匹配,或者(2)和起始码前缀开始的N字节加上防止模仿字节的值相相匹配,其中所述格式包括具有相同值的N个字节,和具有不同的值的另一个字节;和对发现该格式作出反应,相对于包含该格式的数据插入一个防止起始码模仿字节,所述防止起始码模仿字节具有与起始码前缀的任何字节的值都不同的值。
82.如权利要求81所述的方法,其特征在于,起始码前缀起始于字节定位位置。
83.如权利要求81所述的方法,其特征在于,该N个字节具有的值是0。
84.如权利要求81所述的方法,其特征在于,N=2。
85.如权利要求81所述的方法,其特征在于,获取动作通过接收视频数据来执行。
86.如权利要求81所述的方法,其特征在于,获得动作通过获得音频数据来执行。
87.如权利要求81所述的方法,其特征在于,获得动作通过获得音频/视频数据来执行。
88.如权利要求81所述的方法,其特征在于,还包括传输包含一个或多个防止起始码模仿字节的数据。
89.如权利要求81所述的方法,其特征在于,获取、搜索和插入动作由一个编码器来执行。
90.一种方法,包括接收已经被处理以包括一个或多个防止起始码模仿字节来防止起始码模仿的数据,该数据按照一个规则被处理搜索至少一个数据格式,所述一个数据格式包括一串N+1字节的有效负荷数据,其有效负荷或者(1)和整个起始码前缀相匹配,或者(2)和起始码前缀开始的N字节加上防止模仿字节的值相匹配,其中所述数据格式包括具有相同值的N个字节,和具有不同的值的另一个字节,和相对于包含该格式的数据插入一个防止起始码模仿字节,其中该起始码模仿字节具有与起始码前缀的任何字节都不同的值;在所述数据内搜索合法起始码;搜索所述数据来识别防止起始码模仿字节;以及对发现防止起始码模仿字节作出反应,去除防止起始码模仿字节。
91.如权利要求90所述的方法,其特征在于,接收取动作通过接收视频数据来执行。
92.如权利要求90所述的方法,其特征在于,接收动作通过接收音频数据来执行。
93.如权利要求90所述的方法,其特征在于,接收动作通过接收音频/视频数据来执行。
94.如权利要求90所述的方法,其特征在于,所述动作由解码器来执行。
95.如权利要求90所述的方法,其特征在于,该N个字节具有的值是0。
96.一种方法,包括获取旨在在运用起始码的环境中传输的数据;在该数据内搜索至少一个格式,该格式包括一串N字节的有效负荷数据,其有效负荷和起始码前缀开始的N个字节相匹配;以及对发现一个格式作出反应,相对于包含该格式的数据插入防止起始码模仿字节。
97.如权利要求96所述的方法,其特征在于,起始码前缀起始于一个字节定位位置。
98.如权利要求96所述的方法,其该格式包括具有相同值的N个字节。
99.如权利要求96所述的方法,其该格式包括具有值为0的N个字节。
100.如权利要求96所述的方法,其特征在于,N=2。
101.如权利要求96所述的方法,其特征在于,防止起始码模仿字节具有与起始码前缀的任何字节的值都不同的值。
102.如权利要求96所述的方法,其特征在于,获取动作通过获得视频数据来执行。
103.如权利要求96所述的方法,其特征在于,获取动作通过获得音频数据来执行。
104.如权利要求96所述的方法,其特征在于,获取动作通过获得音频/视频数据来执行。
105.如权利要求96所述的方法,其特征在于,还包括传输包含一个或多个防止起始码模仿字节的数据。
106.如权利要求96所述的方法,其特征在于,获取、搜索和插入动作由一个编码器来执行。
107.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,其使得一个或多个处理器实施如权利要求96所述的方法。
108.一计算机系统,包括一个或多个计算机可读的媒介;一个或多个处理器;和包含在所述计算机可读媒介上的计算机可读指令,当指令被一个或多个处理器执行时,其使得一个或多个处理器实施如权利要求96所述的方法。
109.一种方法,包括获取旨在在运用起始码的环境中传输的数据;在该数据内搜索至少一个格式,该格式包括一串N字节的有效负荷数据,其有效负荷和起始码前缀开始的N个字节相匹配,该格式包括具有相同值的N个字节;和对发现该格式作出反应,相对于包含该格式的数据插入一个防止起始码模仿字节,该防止起始码模仿字节具有与起始码前缀的任何字节的值都不同的值。
110.如权利要求109所述的方法,其特征在于,起始码前缀起始于一个字节定位位置。
111.如权利要求109所述的方法,其特征在于,该N字节具有的值是0。
112.如权利要求109所述的方法,其特征在于,N=2。
113.如权利要求109所述的方法,其特征在于,获得动作通过获得视频数据来执行。
114.如权利要求109所述的方法,其特征在于,获得动作通过获得音频数据来执行。
115.如权利要求109所述的方法,其特征在于,获得动作通过获得音频/视频数据来执行。
116.如权利要求109所述的方法,其特征在于,还包括传输包含一个或多个防止起始码模仿字节的数据。
117.如权利要求109所述的方法,其特征在于,获得、搜索和插入的动作由一个编码器来执行。
118.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,其使得一个或多个处理器来实施如权利要求109所述的方法。
119.一种计算机系统,包括一个或多个计算机可读的媒介;一个或多个处理器;和包含在所述计算机可读媒介上的计算机可读指令,当指令被一个或多个处理器执行时,其使得一个或多个处理器来实施如权利要求109所述的方法。
120.一种方法,包括接收已经被处理以包括一个或多个防止起始码模仿字节来防止起始码模仿的数据,该数据按照一个规则被处理在该数据内搜索至少一个格式,该格式包括一串N个字节的有效负荷数据,其有效负荷和起始码前缀开始的N个字节相匹配,和相对于包含该格式的数据插入一防止起始码模仿字节;在接收的数据内搜索合法起始码;搜索接收的数据来识别防止起始码模仿字节;以及对发现防止起始码模仿字节作出反应,去除防止起始码模仿字节。
121.如权利要求120所述的方法,其特征在于,接收动作通过接收视频数据来执行。
122.如权利要求120所述的方法,其特征在于,接收动作通过接收音频数据来执行。
123.如权利要求120所述的方法,其特征在于,接收动作通过接收音频/视频数据来执行。
124.如权利要求120所述的方法,其特征在于,所述的动作由解码器来执行。
125.如权利要求120所述的方法,其特征在于,所述数据格式包括具有相同值的N个字节。
126.如权利要求120所述的方法,其特征在于,所述数据格式包括具有值为0的N个字节。
127.如权利要求120所述的方法,其特征在于,N=2。
128.如权利要求120所述的方法,其特征在于,防止起始码模仿字节具有与起始码前缀的任何字节的值不同的值。
129.一个或多个包含指令的计算机可读的媒介,当指令被一个或多个处理器执行时,其使得一个或多个处理器来实施如权利要求120所述的方法。
130.一种计算机系统,包括一个或多个计算机可读的媒介;一个或多个处理器;和包含在计算机可读媒介上的计算机可读指令,当指令被一个或多个处理器执行时,其使得一个或多个处理器来实施如权利要求120所述的方法。
131.一种方法,包括在旨在编码使用起始码的环境中的传输的数据内搜索至少一个尺寸固定数据部分的格式,各尺寸固定的数据部分包括至少两个比特;以及对发现一个格式作出反应,相对于包含该格式的数据插入起始防止码模仿数据;建立一个位置,该位置对应于在一个起始码之后发送给一个或多个接收器的有效负荷数据的结尾;以及在有效负荷数据的结尾之后、在下一个起始码之前插入一个或多个比特的附加填充数据。
132.如权利要求131所述的方法,其特征在于,插入一个或多个比特的动作包括插入单独的数据单元,每个数据单元各包含多个比特。
133.如权利要求131所述的方法,其特征在于,插入一个或多个比特的动作包括插入单独的数据单元,每个数据单元各包含至少一个字节。
134.如权利要求131所述的方法,其特征在于,所述的填充数据包括一个被设计成避免与有效负荷数据产生混淆的数据格式。
135.如权利要求131所述的方法,其特征在于,所述的填充数据包括一个被设计成避免与起始码产生混淆的数据格式。
136.一种方法,包括接收数据,该数据已经被处理以包含在第一个起始码和相关有效负荷数据之后以及在第二个起始码之前添加的附加填充数据,该数据已经被处理以包括防止起始码模仿数据来防止起始码的模仿,该防止起始码模仿数据的各实例包括多个比特;在所接收的数据内搜索合法起始码;搜索所接收的数据来识别防止起始码模仿数据;对发现防止起始码模仿数据作出反应,去除防止起始码模仿数据;确定填充数据;和去除该填充数据。
137.如权利要求136所述的方法,其特征在于,该填充数据包括单独的字节。
138.如权利要求136所述的方法,其特征在于,该填充数据包括多个比特的单元。
139.如权利要求136所述的方法,其特征在于,该填充数据包括一个被设计成避免与有效负荷数据产生混淆的数据格式。
140.如权利要求136所述的方法,其特征在于,该填充数据包括一个被设计成避免与起始码产生混淆的数据格式。
141.一种方法,包括在旨在编码使用起始码的环境中的传输的数据内搜索至少一个尺寸固定数据部分的格式,各尺寸固定的数据部分包括至少两个比特;对发现一个格式作出反应,相对于包含该格式的数据插入起始防止码模仿数据;建立一个位置,该位置对应于欲发送给一个或多个接收器的有效负荷数据的结尾,其中该有效负荷数据可以包含防止起始码数据;第一次在有效负荷数据的最后的比特之后插入一个或多个比特,该插入的一个或多个比特具有一个或多个预定值;判定作为有效负荷数据发送整数个的数据单元所需要的比特数;和必要时,在第一次插入的比特之后插入足够个数的附加的比特来提供整数个的数据单元。
142.如权利要求141所述的方法,其特征在于,所述插入足够个数的附加比特可包括插入足够个数的字节。
143.如权利要求141所述的方法,其特征在于,所述插入足够个数的附加比特可包括插入足够个数的值为0的字节。
144.如权利要求141所述的方法,其特征在于,所述插入足够个数的附加比特包括在后续起始码以前插入所述比特。
145.如权利要求141所述的方法,其特征在于,所述插入足够个数的附加比特包括插入具有被设计成避免与有效负荷数据产生混淆的数据格式的所述比特。
146.如权利要求141所述的方法,其特征在于,所述插入足够个数的附加比特包括插入具有不设计成避免与一个或多个起始码产生混淆的数据格式的所述比特。
147.一种方法,包括接收包括有效负荷和插入数据的数据,其中所述有效负荷数据可包含防止起始码模仿数据来防止起始码的模仿,防止起始码模仿数据的各实例包括多个比特,所述的插入数据包括(a)在有效负荷数据最后的比特之后并具有一预定值的至少一个比特,(b)足够个数的附加比特来提供包括有效负荷数据的整数个数据单元;在所接收的数据内搜索合法起始码;搜索所接收的数据来识别防止起始码模仿数据;对发现防止起始码模仿数据作出反应,去除所述防止起始码模仿数据;确定所述插入的数据;和去除所述插入的数据。
148.如权利要求147所述的方法,其特征在于,所述足够个数的附加比特包括整数个字节。
149.如权利要求147所述的方法,其特征在于,所述足够个数的附加比特包括整数个值为0的字节。
150.如权利要求147所述的方法,其特征在于,所述足够个数的附加比特包括在后续起始码以前的整数个值为0的字节。
151.一种方法,包括建立一个位置,该位置对应于欲发送给一个或多个接收器的有效负荷数据的结尾;在有效负荷数据最后一个比特之后插入一个值为1的比特;判定作为有效负荷数据发送整数个的字节所需要的比特数;在插入的值为1的比特之后插入足够个数的值为0的比特来提供整数个数的字节;和在插入的多个值为0的比特之后,或者如果没有值为0的比特被插入来提供整数个字节,则在插入的值为1的比特之后,插入一个或多个字节的填充数据。
152.如权利要求151所述的方法,其特征在于,插入所述填充数据的动作包括插入一个或多个值为0的字节。
153.一种方法,包括接收包括有效负荷数据和插入数据的数据,所述插入数据已根据下列插入处理被插入一个对应于有效负荷数据的结尾的位置被建立;在有效负荷数据最后一个比特之后插入一个值为1的比特;作为有效负荷数据发送整数个的字节所需要的比特数被判断;在插入的值为1的比特之后足够个数的值为0的比特被插入来提供整数个数的字节;和在插入的多个值为0的比特之后,一个或多个字节的填充数据被插入,或者如果没有值为0的比特被插入来提供整数个字节,则在插入的值为1的比特之后,一个或多个字节的填充数据被插入;确定所述插入数据;和去除所述插入数据。
154.一种方法,包括建立一个位置,该位置对应于欲发送给一个或多个接收器的有效负荷数据的结尾;第一次在有效负荷数据最后的比特之后插入至少一个比特,该插入的一个或多个比特具有一个或多个预定值;判定作为有效负荷数据发送整数个的数据单元所需要的比特数;第二次,必要时在第一次插入的比特之后插入足够个数的附加比特来提供整数个的数据单元;和在第一次和第二次被插入的比特之后插入一个或多个数据单元的填充数据。
155.如权利要求154所述的方法,其特征在于,单独的数据单元包括单独的字节。
156.如权利要求154所述的方法,其特征在于,单独的数据单元包括多个比特。
157.如权利要求154所述的方法,其特征在于,所述填充数据包括一个被设计成避免与有效负荷数据产生混淆的数据格式。
158.如权利要求154所述的方法,其特征在于,所述填充数据包括一个被设计成避免与起始码产生混淆的数据格式。
159.一种方法,包括接收包括有效负荷数据和插入数据的数据,所述插入数据已根据下列插入处理被插入第一次在有效负荷数据最后的比特之后插入至少一个比特,该插入的一个或多个比特具有一个或多个预定值;作为有效负荷数据发送整数个的数据单元所需要的比特数被判断;必要时,在所述第一次插入的比特之后第二次插入足够个数的附加比特来提供整数个的数据单元;以及在第一和第二插入比特之后插入一个或多个数据单元的填充数据;确定所述插入数据;和去除所述插入数据。
160.如权利要求159所述的方法,其特征在于,单独的数据单元包括单独字节。
161.如权利要求159所述的方法,其特征在于,单独的数据单元包括多个比特。
162.如权利要求159所述的方法,其特征在于,所述填充数据包括一个被设计成避免与有效负荷数据产生混淆的数据格式。
163.如权利要求159所述的方法,其特征在于,所述填充数据包括一个被设计成避免与起始码产生混淆的数据格式。
全文摘要
方法和系统在比特水平高的粒度处提供防止起始码模仿的方法。通过在一个水平而不是比特水平上的操作,在编码器和解码器上的处理能力需求可以被降低。按照一个或多个实施例,防止起始码模仿的方法寻找相对于比单个比特大的尺寸固定的数据部分的数据格式。当一种特别的格式被发现时,防止起始码模仿数据被插入来防止起始码模仿。这个插入的数据比单个比特要大以及,在一些实施例,包括一个字节。当解码器解码具有插入了防止起始码模仿数据的数据时,它可以容易地识别合理的起始码,然后可以移动防止起始码模仿数据来提供认为被保护的原始数据。另外,一种数据填充方法被描述,该方法允许有效负荷数据聚集的大小达到整数个字节大小,然后允许填充数据以一种方式被添加,该方法容易地被一个解码器检测。
文档编号H03M7/36GK1618235SQ03802313
公开日2005年5月18日 申请日期2003年1月22日 优先权日2002年1月22日
发明者G·J·沙利文, S·J·埃斯特罗普 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1