CN1656821A - 防止非字节对齐和/或位移位位置起始码仿效的方法和系统 - Google Patents

防止非字节对齐和/或位移位位置起始码仿效的方法和系统 Download PDF

Info

Publication number
CN1656821A
CN1656821A CNA038116626A CN03811662A CN1656821A CN 1656821 A CN1656821 A CN 1656821A CN A038116626 A CNA038116626 A CN A038116626A CN 03811662 A CN03811662 A CN 03811662A CN 1656821 A CN1656821 A CN 1656821A
Authority
CN
China
Prior art keywords
byte
data
value
initial code
imitation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA038116626A
Other languages
English (en)
Other versions
CN100499824C (zh
Inventor
G·J·苏利文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1656821A publication Critical patent/CN1656821A/zh
Application granted granted Critical
Publication of CN100499824C publication Critical patent/CN100499824C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0602Systems characterised by the synchronising information used
    • H04J3/0605Special codes used as synchronising signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本方法和系统提供了在高于比特级的粒度上的起始码仿效防止的方法。在各种实施例中,起始码仿效防止可在不同于诸如字节等数据边界的位置上作出。这些实施例可结合在处理的数据中不总是保持数据对齐边界的系统一起使用。在某些系统中,描述的技术可提供一基准,在丢失数据边界的情况下,解码器系统可从该基准恢复。

Description

防止非字节对齐和/或位移位位置起始码仿效的方法和系统
相关申请
本申请源于2002年4月19日提交的美国临时专利申请序列号60/374,192,并要求其优先权。
技术领域
本发明涉及用于防止起始码仿效并用于数据填充的方法和系统。
发明背景
数字数据通常从某一类型的发射器发送到某一类型的接收器。发射器通常包括对用于发送数据进行编码的编码器;接收器通常包括对它所接收的数据进行解码的解码器。有不同类型的数字数据,如视频数据、音频数据、音频/视频数据、文本数据、计算机可执行程序数据、归档数据、数据库信息等等。当发送数字数据时,它通常在某一类型的信道上发送。等效地,为本发明的目的,计算机存储器或任一存储设备或存储媒质可以被认为是一种传输信道。
当发送数字数据时,重要的是能够找出信道上数据中的若干特定的点。为各种目的需要完成这一过程,如为查找使能够在通过信道传输数据过程中从误差或丢失中恢复的点、使能够在不同于整个流的起始处开始解码过程的点、或者使能够搜索用于不同目的的不同类型数据的点。由此,例如,在解码器侧,处理数字数据的解码器和其它组件通常需要知道该数据的上下文,使得该数据能够被正确地处理。如果能够以所发送的第一位开始,并且解码器能够在没有任何误差的情况下运行,则这并不是重要的。理想地,在这一情况下,解码器可依照知道该数据是什么格式来简单地跟踪所发送的信息。然而,这种理想情况通常不会出现,的确存在误差和其它偶然性,向设计和使用发送并接收数字数据系统的那些人提出了挑战。在诸如调谐到正在进行的数据流广播等情况下,解码器无法在数据传输的起始处开始。通过数据格式分析查找点也需要解码器中大量的复杂处理。
在许多类型的信道环境中,通过在数据中提供所谓的重同步标记来解决这一问题。重同步标记提供了一种机制,系统可用该机制来开始其解码过程或从误差中恢复。例如,当数字数据被编成一列比特或字节的流时,在流中具有重同步标记可向解码器提供一参考点,在传输中出现误差的情况下可从该参考点恢复。
可采用重同步标记的一个方式是在起始码的上下文中。起始码是具有特定值的比特或字节的串。一般而言,许多系统往往传送字节(如,H.222.0/MPEG-2系统),使得可将起始码定义为具有唯一值的字节串。该唯一的字节串提供了一种模式,该模式的存在指示了重同步点。重同步点通常指示某些可独立解码的数据的开始或边界。例如,在H.262/MPEG-2视频数据中,重同步点可指示片段(即,图像的可独立解码区域)的开始、图像的开始、GOP(即,“图像组”或可独立解码的图像序列)的开始、或新视频序列的开始。数字视频流也可包括在起始码之后的所谓的辅助或补充数据。
有时候,起始码不仅在诸如视频流等数据流中使用,也由系统的多级使用。H.222.0/MPEG-2系统规范是使用起始码,并传送与系统级信息和音频信息隔行扫描的视频数据流的系统的示例。
由于起始码在提供数据流中的重同步点的范围内是重要的,因此避免数据流中在实际上并非表示起始码之处仿效起始码将是一种较好的观念。
例如,考虑以下情况。起始码定义了可标识新数据单元的开始的特定模式的比特或字节。如果在起始码之间发送任意数据,在该任意数据本身可能包含被用作起始码的模式。例如,如果假定要传送的字节是完全随机的,则如果起始码是K比特长,则在某一特定比特位置开始的比特中偶然仿效起始码的概率为1/2k
在某些情况下,可判断如果起始码中的比特数较大,则起始码较不可能偶然被仿效。在这一情况下,如果偶然的起始码仿效的后果并不是太严重,则可判断不必要采取措施来确保防止偶然的起始码仿效。这就是某些音频数据格式的情况。通常,这些格式不使用按每秒的比特数测量的十分高的比特率,因此起始码不太可能在任一特定的时间间隔内被偶然仿效。对于视频数据,情况通常并非如此,因为对视频数据的传输而言比特率通常要高得多。
在过去的主要视频编码标准(可能有一个例外)中,数据负载内的视频句法格式被设计成避免起始码仿效。即,如果知道了哪种数据元素将组成该视频句法,则可仔细地设计句法使得不会出现任何偶然的起始码。例如,传统的视频编码标准中起始码以一长串0比特开始,随后为一个1比特。该长串可包含23个0比特,最后为一个1比特。假定所发送的大多数数据是使用可变长度码(通常非正式地称为哈夫曼码)来熵编码的。例如,为本发明的目的,可变长度码(VLC)可被定义为用于在一组表示的符号中选择的可变深度树结构码。使用二叉树VLC的一种技术是确保树中从根到表示有效符号的每一叶的路径总是在其中的某处具有“1”,并且该树结构不会太深。
由此,例如,如果知道每一可变长度码串在长度上不多于10比特,并且每一这样的串将具有至少一个1值的比特,则可知道从该VLC编码的已编码数据的序列不可能包含18个以上连续的0值比特。即,最坏的情形是1000000000之后为0000000001。由此,如果仔细地设计句法,并检查每一0值和每一1值比特的位置以确定在一行中将出现多少0,则可使用包含比曾出现在该句法中更长的0串的起始码。例如,可设计句法使得有效句法不会在非起始码的位置上包含23个0。由此,每次出现23个0应当是起始码,并且解码器应当能够准确地检测到起始码。
尽管上述操作看上去是简单明了的,然而操作可以是相当难的任务,因为必须在要发送的每一可能的顺序上检查要发送的所有可能的数据(在比特级),以确保起始码模式不会被偶然发送。这是一种易出错的句法设计的费力方法。
一般而言,这一比特级检查设计过程描述了在过去设计许多视频编码规范的方法(即,H.261、MPEG-1、H.262/MPEG-2、大多数H.263和MPEG-4)。其一个例外是ITU-T推荐H.263(ITU-T Recommendation H.263)的附录E,它使用了一种被称为是算术编码的技术,以算术方式从数学规范生成压缩的比特。此处,在熵解码器的末端有一额外的过程,它检查所生成的比特,并且在编码器侧,如果在一行中有太多的0,则在遇到预定数量的0之前插入一“标记”比特(一个1比特)。在解码器侧,解码器对这些0计数,并且如果遇到临界数量的0,则它知道它遇到了一个真正的起始码。如果解码器见到比临界数量少一个0,则它知道后面的1比特是被插入来避免起始码仿效的标记比特,它丢弃该比特并将后面的比特认作真实数据的继续。
该解决方案的问题是它令编码器和解码器在比特级检查并处理输入数据。分析并移位按照单个比特位置处理的数据的位置变得较困难,并且会不合需要地加重解码器的负担。比特范围的移位也是一种处理器高强度的操作。
因此,本发明提出了提供防止起始码仿效的改进的方法和系统相关联的关注。
发明概述
描述了方法和系统,以提供由在高于比特级的粒度上执行的操作提供起始码仿效防止的方法。通过在不同于比特级的级别上操作,可提高处理效率。依照一个或多个实施例,起始码仿效防止方法寻求与大于单个比特的固定大小数据段相关的数据模式。当找到特定的模式时,插入起始码仿效防止数据以防止起始码仿效。插入的数据大于单个比特,在某些实施例中,包括一个字节。当解码器对插入了起始码仿效防止数据的数据进行解码时,可容易地标识真正的起始码,并可移除起始码仿效防止数据以提供要被传送的原始数据。
在各种实施例中,可作出防止在不同于诸如字节边界等数据边界的位置上的偶然的起始码值仿效的起始码仿效防止。这些实施例可用于在处理的数据中并非永远保持数据对齐边界的系统。在某些系统中,描述的技术可提供一个基准,在丢失数据边界的情况下,解码器系统可从该基准恢复。
另外,描述了一种数据填充方法,它允许负载数据在大小上被上舍入到整数的字节大小,然后允许以可由解码器容易地检测的方式添加填充数据。
附图的简要描述
图1是描述依照一个实施例的方法中的步骤的流程图。
图2是描述依照一个实施例的方法中的步骤的流程图。
图3是描述依照一个实施例的方法中的步骤的流程图。
图4所示是依照一个实施例的处理方法的一个方面的图示。
图5所示是依照一个实施例的处理方法的一个方面的图示。
图6是描述依照一个实施例的方法中的步骤的流程图。
图7是可结合其实现一个或多个实施例的计算环境的高级图示。
较佳实施例的详细描述
综述
下文描述的方法和系统提供了在高于比特级的粒度上防止起始码仿效的方法。通过在高于比特级的级别上操作,可提高处理效率。在本文档的上下文中,在高于比特级的级别上操作指的是查找与大于单个比特的固定大小数据段有关的数据模式。例如,固定大小数据段可包括字节(即,8比特)、“字”(即,16比特)、“双字”(32比特)等等。由此,本发明的技术可在字节、字等之内和之间进行查找。
另外,描述了一种数据填充方法,它允许负载数据在大小上被上舍入到整数的数据单元大小,如字节量,并允许以可由解码器容易地检测的方式添加填充数据。
在各种实施例中,可作出防止起始码值在不同于诸如字节边界等数据边界的位置上的偶然仿效的起始码仿效防止。这些实施例可用于在处理数据中不总是保持数据对齐边界的系统。在某些系统中,描述的技术可提供一基准,在丢失数据边界的情况下,解码器系统可从该基准恢复。
另外,尽管下文提供的示例是在视频数据的上下文中讨论的,可以理解,本发明的技术可用于通常被编码并解码,并且对其期望或必需起始码仿效防止的任何类型的数据。这类数据的示例包括音频数据、音频/视频数据等等。
图1是描述依照本发明的方法中的步骤的流程图。该方法可以任一合适的硬件、软件、固件或其组合来实现。在所示并所描述的实施例中,该方法至少部分地以软件实现。另外,读者可注意到,示出该方法具有两个不同的分支一一个称为“编码器”,另一个称为“解码器”。“编码器”分支示出了由编码器实现或与其结合的步骤。类似地,“解码器”分支示出了由解码器实现或与其结合的步骤。
步骤100获取或生成供起始码之后的传输使用的一些数据。该数据可包括任何合适的数据。数据类型的示例包括但不限于,视频数据、音频数据、音频/视频数据等等。步骤101用起始码作为数据的前缀。该步骤有效地向步骤100中获取或生成的数据添加了起始码。步骤102检查或搜索输入数据,以找出固定大小数据段的一个或多个模式。在所示并描述的实施例中,所搜索的模式包括至少两个固定大小的数据段,每一单个的数据段包括至少两个比特。步骤104确定是否找到一模式。如果未找到模式,则该方法分支到步骤108,可发送数据。
另一方面,如果找到了模式,则步骤106插入与包含该模式的数据有关的起始码仿效防止数据。在所示并描述的实施例中,起始码仿效防止数据的单个实例包括一个以上比特。较佳地,起始码仿效防止数据包括其数量等于单个的固定大小数据段的比特数的数据。由此,当固定大小数据段包括8比特(被称为字节的数据量)时,起始码仿效防止数据包含8比特。在插入了起始码仿效防止数据之后,步骤108发送该数据。步骤110确定在下一起始码之前是否有额外的数据要发送。如果有,则方法返回到步骤102,并如上所述地进行。如果没有,则在步骤111,方法可确定是否有另外的数据要发送。如果有,则方法分支回步骤100。如果没有,则方法在步骤112终止。
作为侧面,考虑以下情况。注意该特定技术的使用的一个示例上将起始码分离成“起始码前缀”和“起始码类型”后缀,其中,前缀是单个唯一的值串,后缀指示在起始码之后的数据类型。具体地,这是MPEG-2起始码的结构。包含前缀/后缀结构作为特殊情况的使用的更一般的形式是具有一个或多个起始码模式的一般概念。然后,也可具有一个或多个仿效防止模式。只要各种起始码模式与各种仿效防止模式不同,且在处理负载数据中避免了所有的起始码模式,则该方案能够正确地起作用。另外,不必要假定起始码模式都是同样的长度。
在解码器侧,考虑以下情况。一旦由编码器插入了起始码仿效防止数据,为正确解释其它数据,可在某一点上将其标识并被移除或忽略。也考虑当解码器接收发送的数据后,它可查找真正的起始码。一旦它找到真正的起始码,它知道起始码定义的数据边界在何处。现在,解码器和继续查找并移除起始码仿真防止数据,使得它可进一步处理真实数据。
具体地,步骤114接收由编码器处理来防止起始码仿效的发送数据。步骤118处理该数据以找出起始码。一旦找到并适当地处理了起始码(如,读并丢弃),则步骤120搜索该数据以标识起始码仿效防止数据。一旦找到了起始码仿效防止数据,则步骤122移除该起始码仿效防止数据。一旦移除了起始码仿效防止数据,则可以对接收的数据类型典型的方式处理该数据。例如,如在步骤124可由消费者设备消耗该数据。
第一示例性方法
要描述的方法仅示出了图1所示并描述的方法的一个具体示例。在要描述的方法中,只要负载数据的N+1个字节的串与整个起始码前缀匹配,或与起始码前缀的前N个字节加上仿效防止字节的值匹配,则插入一个字节的仿效防止数据。该方法比“第二示例性方法”部分中描述的方法较不频繁地添加数据,并由此降低了发送负载数据的传输能力需求。
MPEG-2起始码前缀结构在字节对齐的位置上开始,并具有23个0以及其后的一个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模式时,插入起始码仿效防止数据以防止起始码仿效。此处,起始码仿效防止数据包括其值不同于W和X字节的值的一个字节Z。由此,假定编码器检查数据字节,并注意到模式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指定:
  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&&(P[i]==X‖P[i]==z)){

          send_byte(Z);

          j=0;

    }

    send_byte(P[i]);                  /*数据负载的一个字节*/

    if(P[i]==W)  j++;

    else           j=0;

  }
在上述伪代码中,假定函数“send_byte()”操作一数据单元的发送(图1中的过程108)。
在解码器侧,为接收分组,假定解码器已找到、读取并丢弃了已知的起始码前缀,它包括N个或更多的字节的同一值W以及最后一个字节的不同值X。也假定希望将未知的单字节起始码类型后缀读入变量Y中,将负载数据的分组读入数组P[]中,并确定负载数据量并将量指示放入变量B中,同时移除具有值Z的仿效防止字节(其中,W、X、Y和Z的值彼此不同,P[B-1]不等于W):
  int B,N,j,next;

  byte*P,W,X,Y,Z;

  /*假定已读取了起始码前缀*/

  Y=receive_byte();     /*起始码类型后缀*/

  for(B=j=0,next=0;more_data()&&!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--;

        }

    }else

        if(P[B]==W)  j++;

        else           j=0;

  }

  if(next)              /*找到另一起始码*/

  B-=j+1;
在上述伪代码中,假定函数“receive_byte()”操作数据单元的接收,假定函数“more_data()”确定是否有任何更多的数据单元要接收(这两个函数构成图1中的过程114)。
上述方法允许在起始码前填充任意数量的W值。将W值前缀的数量修正到N的公式是同等可能的。
第二示例性方法
要描述的第二示例性方法仅示出了图1示出并描述的方法的一个具体示例。此处,该方法只要负载中的N个字节数据串匹配起始码前缀的前N个字节就插入一个字节的仿效防止数据,而不论随后的负载数据的值如何。使用上述示例的命名法,如果数据包含其后跟随任何东西的模式“WW”,则该方法插入一仿效防止字节。因此,当编码器标识模式WW,它插入一仿效防止字节以提供以下模式:
                               WWZ
首先描述的方法和以上刚描述的方法之间的差异是第一方法查找前N+1个字节以确定在何处插入仿效防止字节,而上文刚描述的方法查找前N个字节。
第一种方法减少了要发送的额外数据的量,而上文刚描述的方法使用更简单的规则来操作。由此,这两个方法共同提供了减少发送的数据量和减少规则复杂度之间的选择。采用首先描述的方法,相对于第一描述的方法减少数据量。采用第二描述的方法,使用了更简单的规则。
为以更程序的方式说明以上处理,考虑以下情况。在编码器侧,为发送B字节的分组P[],它以包含正好N个字节的同一值W以及最后一个字节的不同值X的起始码前缀开始,随后是具有值Y的标识起始码类型的一个字节后缀,操作以下伪代码过程,它插入了具有值Z的仿效防止字节(其中,W、X、Y和Z的值彼此不同,P[B-1]不等于W):
  int B,N,i,j;

  byte*P,W,X,Y,Z;

  for(j=0;j<N;j++)             /*起始码前缀*/

     sent_byte(W);                /*起始码的第一字节*/

  send_byte(X);                   /*起始码的最后一个字节*/

  send_byte(Y);                   /*起始码类型后缀*/

  for(i=j=0;i<B;i++){

     send_byte(P[i]);              /*一个字节负载数据*/

     if(P[i]!=W)

         j=)0;

     else

         if(++j==N){

             send_byte(Z);
        <!-- SIPO <DP n="10"> -->
        <dp n="d10"/>
           j=0;

      }

  }
在上述伪代码中,假定函数“send_byte()”操作数据单元的发送(图1中的过程108)。
在解码器侧,为接收分组,假定解码器已找到、读取并丢弃了已知的起始码前缀,它包括正好N个字节的相同值W,以及最后一个字节的不同值X,并希望将未知的单字节起始码类型后缀读入变量Y中,将负载数据的分组读入数组P[]中,并确定负载数据量并将量的指示放入变量B中,同时移除具有值Z的仿效防止字节(其中,W、X、Y和Z的值彼此不同,P[B-1]不等于W):
  int B,N,j,k;

  byte*P,W,X,Y,Z;

  /*假定已读取了起始码前缀*/

  Y=receive_byte();         /*起始码类型后缀*/

  for(B=j=0,k=Z;more_data()&&k!=X;B++){

     P[B]=receive_byte();

     if(P[B]==W){

         if(++j==N){

             k=receive_byte();     /*总是more_data()*/

             if(k!=Z&&k!=X)

                 declare_error();

             j=0;

          }

      }else

         j=0;

  }

  if(k==X)          /*找到另一起始码*/

     B-=N;
在上述伪代码中,假定函数“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/图像序列号,或仅将MSB设为“1”,并使用其它七个比特来发送ASCII字符)。
如果考虑在解码器侧的分组的末端发生的情况,可以认识到,如果数据分组负载的最后一个字节不是W,则可更容易地控制操作。这意味着在起始码之前发送的最后一个字节永远都不必要为仿效防止字节,并且可由解码器查找负载数据的末端和等于下一起始码的W的字节序列起始之间的可检测边界。强迫出现这一情况也可允许在负载的末端之后并在下一起始码之前填充任意量的W字节(如,0字节),而不会丢失负载的末端在何处的跟踪。
数据填充
通常,对于视频数据,作为数据负载发送的数据可能不是整数个字节。例如,可在两个起始码之间发送627个比特。然而,系统多级可以字节操作。对于MPEG-2规范是如此。诸如能够检测由传输误差生成的某些错误的起始码模式,或启用对负载的起始的数据内容的简单解码过程等其它原因也可证明期望分组包含诸如字节等整数个数据单元是正确的。由此,必须发送稍多一点的数据以传输627比特的数据。问题然后变为如何填充拉长数据使其成为整数个字节。
有其它情形,仅发送额外的填充数据是有用的。例如,如果信道具有1兆比特/秒的容量,并且要发送的负载数据的量仅为900kbit/s,则需要或希望用填充数据来填满信道。
依照一个实施例,一种数据填充技术使额外的数据可以被添加到信道以在本质上填充负载数据。
图2是描述依照一个实施例的数据填充方法中的步骤的流程图,其中,假定起始码以等于0的比特串开始。步骤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”比特,它可确切地确定真实数据的末端。
由此,上文描述的技术可用于“上舍入”所发送的比特数,使得所发送的比特数包括整数个数据单元。另外,这些技术可用于在指定负载数据的开始的起始码之间填充填充数据。
用于非边界对齐位置的起始码仿效防止
上述实施例在被设计成保持数据边界对齐或字节对齐的系统中能较好地起作用。然后,某些系统并非总是能保持对数据边界的对齐的跟踪。
例如,在一个这样的系统中,称为ITU-T H.320,当数据作为一系列比特而非字节发送时,可能会丢失对系统中数据的每一字节相对数据流的起始在何处开始的跟踪,并且会出现未知量的偶然数据丢失。如果系统丢失对字节对齐的跟踪,并且如果仿效防止仅防止在字节的边界上开始的仿效,则会阻碍系统从字节对齐丢失中恢复的能力。例如,如果系统仅防止字节边界上的起始码仿效,则起始码仿效可能在不同于字节边界的位置上发生。即,对字节边界上的起始码仿效防止进行编码的系统可能不关心出现在不同于字节边界的位置上的位移位起始码仿效。对于维护或保持字节边界位置的系统,这应当不是问题。这是因为由于这些系统知道字节边界在何处,它们可以简单地查找字节边界,并查找真实的起始码。一旦找到了真实的起始码,系统可如上所述地恢复。在丢失了字节边界的系统中,不论是何原因,这都是一个问题,因为系统可试图使用出现在位移位位置上的被仿效的起始码来恢复。具体地,如果丢失了字节边界,则系统可试图查找适合在相对原始字节边界的某一任意对齐位置上开始的起始码的任何数据。如果这一数据不是真实的起始码,而是位移位位置上的被仿效的起始码,则从该位置恢复将严重地阻碍了系统真正恢复的能力。
下文描述的实施例针对提供在不必要在诸如字节边界等数据边界开始的位置上防止起始码仿效的方法和系统。因此,这些方法和系统可有利地用于不总是保持数据在数据边界位置上对齐的系统。另外,在鉴于某些原因丢失数据边界的跟踪的系统中,本发明的方法和系统可提供一种令系统仅使用真正的起始码真正恢复的方式。
早期中断
所讨论的第一种方法被称为“早期中断”方法。此处,早期中断方法针对在会出现起始码的移位版本的任何机会之前中断潜在的起始码仿效。这通过对该起始码相对数据字节的起始的起始码的每一移位的位置分析起始码设计细节中的比特的模式来完成。然后,替代仅当出现字节对齐的起始码时插入特定的仿效防止字节,该方法以防止在相对数据边界—在本情况中为字节边界—移位的位置上的起始码模式非对齐仿效的方式插入仿效防止字节,
真实起始码的检测可提供检测数据相对数据边界或字节边界的真实对齐的能力。这是由于起始码通常被设计成总是在数据或字节边界上开始。在检测数据中的真实起始码的位置之后,接收器可使用对每一字节的起始位置的这一知晓来协助将负载数据从起始码和起始码仿效防止数据中分离的解码过程。这是由于解码器可被设计成知晓用于防止发送的数据中起始码模式的仿效的方法。
图3是描述依照一个实施例的方法的流程图。示出的方法提供了如何执行起始码仿效防止以确保起始码不在位移位的位置上仿效的示例。
步骤300在比特范围内相对一个或多个数据边界多次移位起始码的至少一部分。在一个实施例中,被在比特范围内移位的起始码的该部分包括起始码前缀。步骤302标识在该起始码部分中在相对至少一个数据边界的每一位移位的位置上出现的一个或多个特征模式。步骤304使用步骤302中标识为搜索模式的特征模式来执行起始码仿效防止数据插入。
仅作为如何完成这一过程的一个示例,结合图4考虑以下情况。
考虑被执行的起始码前缀为具有值0x00的N个字节(使用C语言约定,“0x”表明十六进制数值,因此0x00标识等于0的十六进制字节值),以及其后的具有值0x01的一个字节,其中N=2。例如,在图4中,示例性起始码前缀出现,并将其起始与由实线括号所示的数据边界相重合。由此,起始码前缀的第一个字节包括前8个0,第二个字节包括随后的8个0,依此类推。在前8个0之前的是一个字节的“x”值,它表示之前的数据的任意的未知值。现在,当该起始码前缀或部分被相对所指示的数据边界在比特范围内位移时(比特范围位移之一由图4所示的顶部之下所示),形成一特征模式,由虚线括号所示。通过检查由起始码前缀相对字节的起始的每一移位的位置所创建的比特模式,在本情况下,可确定在包含该起始码的移位副本的任一数据序列中,将总是呈现具有值0x00的至少N个字节。由此,被仿效的位移位起始码前缀的特征模式为具有值0x00的N个字节。该特征模式现在可用作搜索模式,用于执行起始码仿效防止数据插入,在任一单个对齐位置上的该模式的防止将防止在所有对齐位置上的起始码的出现。
更具体地,考虑上文“第一示例性方法”中描述的方法。在该方法中,如果数据包含N个字节的值0x00及其后的值0x01或Z的模式,则插入仿效防止字节Z。因此,新模式将包含N个字节的值0x00,其后为具有值Z的一个字节,其后为具有值0x01或Z的一个字节(只要遇到长度为N+1的两个模式中的任一个,就将输入数据的长度扩展一个字节)。
依照现在描述的早期中断方法,期望防止起始码前缀或部分的所有移位的版本,而非仅字节对齐位置中的起始码前缀。因此,依照该方法并结合该具体示例,在具有值0x00的任一列N个字节的最后一个字节之前插入具有某一值Z的仿效防止字节,由此防止了值0x00的任一列N个字节,并由此防止了起始码相对任一字节对齐定位的所有位移的副本。在本示例中,检查该模式并仅在字节对齐的位置上插入仿效防止字节。作为示例,考虑图5,它示出了在包含位移位的起始码前缀的序列中最后字节之前插入了仿效防止字节(由具有值“z”的值的8个比特表示)的对N=2的序列。尽管未在图5中明确地示出,为图5的说明目的,假定表示为“x”值的最后四个比特的至少一个不等于0(否则,仿效防止过程将在包含表示为“x”值的最后四个比特的字节之后的位置上插入另一仿效防止字节)。
由此,本方法识别了起始码前缀的所有位移位的位置,并以防止任何位移位起始码前缀仿效的方式中断了该序列。这可在不需要编码器中比特范围的处理的情况下实现,因为编码器仅在与字节边界对齐的位置上搜索特征模式,并仅在完整字节单元中插入仿效防止数据。
另外,编码器也可插入仿效防止字节以避免负载数据仿效已插入了仿效防止数据的数据的情况。例如,如果编码器见到具有值0x00的N-1个字节,其后跟随的是具有仿效防止字节(即,Z)的值的一个字节,则编码器插入仿效防止字节。
可选地,如果数据负载包含等于0x00的N-1个数据字节,其后跟随的是等于Z的一个字节,并且其后再跟随等于0x00的一个字节,则编码器可为此目的仅插入一个字节。这将减少插入的仿效防止数据的量,尽管它需要编码器和解码器中的可变长度序列处理。
由此,对该具体示例,在下表中对上述具体的起始码前缀值总结早期中断方法:
要替换的模式 替换模式
N个字节=0x00 N-1个字节=0x00,一个字节=Z,一个字节=0x00
N-1个字节=0x00,一个字节=Z N-1个字节=0x00,一个字节=Z,一个字节=Z
                              第一早期中断方法
现在,从解码器的观点考虑情况。在解码器中,只要解码器看见具有值0x00的N个字节,解码器就知道这是真实的起始码前缀,因为编码器已经避免了这一情况在非起始码的任何地方出现,包括位移位位置。解码器可执行该起始码检测而不使用比特范围的处理,因为当在相对于字节边界的任何对齐位置开始时,可找到用于真实起始码检测的特征模式。一旦解码器知道真实的起始码在何处,它知道字节对齐。这是因为真实的起始码在字节对齐的位置开始。由此,在本具体示例中,解码器知道非0x00的下一字节包含起始码前缀的末端。解码器然后可查找结束起始码前缀的比特模式(本情况中为“1”比特),并在其后可找到真实的负载数据。
另外考虑一旦解码器依靠查找起始码前缀知道了字节对齐,它可容易地查找所插入的仿效防止数据。这依靠仿效防止数据在字节对齐的位置上插入的这一事实来完成。由于解码器知道字节对齐,它可在字节边界上查找仿效防止数据模式。即,它可在上表描述的字节边界处查找替换模式。它然后可移除仿效防止数据,并继续其解码过程。
上述方法是有利的,因为即使执行仿效防止处理的编码器在所有的位移位位置上防止了仿效,它通过在字节级检查数据序列并仅在字节级操纵数据,由此节省了在此过程中执行比特范围操作的复杂度。对于解码器也是如此,它可通过在字节上执行操作检测真实的起始码的存在,它然后可通过在字节上执行操作恢复字节对齐并移除仿效防止数据。
将这一第一早期中断方法与“第一示例性方法”部分中描述的方法相比较,考虑以下情况。早期中断方法的一个缺点是由于它查找更短的模式(如,N个字节而非N+1个字节),它将更频繁地插入数据。然而,可以对此采取某些措施。具体地,可增加N的值。即,替代使用3字节的起始码前缀,可使用4字节的起始码前缀。然而,这增加了需要插入到系统中的另一种数据的量。即,只要编码器插入起始码,它将插入一较长的起始码,使得它在增加添加的数据量方面成本较大。然而,这一早期中断方法的一个优点是它允许解码器恢复字节对齐。
早期中断方法的第二实施例是执行模式匹配的搜索以及对第一个所示的设计中替换的多个模式公用的可选模式的模式替换。这一可选实施例的示例在下表中示出。
要替换的模式  替换模式
N-1个字节=0x00  N-1个字节=0x00,一个字节=Z
                       第二早期中断方法
在这一第二早期中断方法中,单个搜索模式(N-1个字节等于0x00)足以防止所有位移位置的起始码仿效,因为该模式对示出第一早期中断方法的表的两行中的两个模式是公用的。
从解码器的观点考虑该第二情况,真实起始码前缀的检测并未改变—如第一早期中断方法中一样,它包括具有0x00的值的N个字节的存在的识别。此外,如在第一早期中断方法中一样,一旦解码器知道真实的起始码在何处,它就知道字节对齐,因为真实的起始码在字节对齐的位置上开始,并且它然后能够通过查找替换模式容易地找出所插入的仿效防止数据,然后可移除仿效防止数据并继续其解码过程。
与第一早期中断方法相比较,该第二早期中断方法减少了模式搜索过程识别所需的模式的数量。其结果是,降低了该搜索过程的复杂度,尽管由于使用了对更短模式的匹配而增加了所插入的仿效防止数据的量。
与第一早期中断方法一样,可通过增加N的值来减少添加的仿效防止数据的量,然而这会增加实际起始码数据的量。
一个重要的观察是第二早期中断在构造上类似于“第二示例性方法”部分中描述的方法,它使用对单个短模式的模式匹配而非对多个更长模式的匹配(这与“第一示例性方法”和第一早期中断方法相反,它们都使用多个模式)。具体地,方法的检查示出第二早期中断方法为防止在相对于字节边界的对齐的任意移位位置上长度为N+1的起始码前缀的仿效而执行的模式搜索和替换过程与“第二示例性方法”为防止在与字节边界对齐的位置上长度为N的起始码前缀的仿效所执行的编码模式搜索和替换过程完全相同。这一属性将在以下部分中使用。
使用多长度起始码的仿效防止
上述早期中断方法为当丢失字节对齐时结合防止在其起始位置不与数据边界一致的任何位移位的位置上的起始码仿效启用恢复的问题提供了解决方案。然而,它们以比仅防止在对齐位置上出现的起始码仿效所需的更频繁地添加仿效防止数据的代价执行该方法。在下文描述的实施例中,提供了一种方法,它以类似于早期中断方法的方式启用了对齐恢复,并也减少了插入的仿效防止数据和起始码数据的量。在讨论具体的解决方案之前,先了解以下内容。
有许多使用起始码发送的不同类型的数据。例如,在视频数据时,通常对每一GOP、每一图像并在每一图像的每一单个可解码区域内发送起始码(即,片段起始码)。另外,有不同类型的图像,如I图像、P图像和B图像。由此,在任何一个具体系统中可以有不同类型的起始码。这些起始码的某些可比其它起始码更频繁地出现。例如,片段上的起始码比GOP或序列上的起始码更频繁地出现。
了解了这一情况,当设计系统时,期望令较频繁出现的起始码比较不频繁出现的起始码更短。依照下文描述的实施例,在两个或多个不同长度的起始码前缀之间作出区别。对于较长的起始码前缀,防止在负载内容中的位移位仿效。这可通过对较长的起始码前缀采用早期中断方法来完成。对于较短的起始码,仅防止这一起始码的字节对齐仿效。在这一系统中,如果较长的起始码比较短的起始码显著地较不频繁地发送,使得平均起始码长度接近较短的起始码,则可进一步提高效率。
采用这一解决方案,当在未保持字节对齐的环境中使用数据时,可通过在数据内搜索较长的起始码来恢复字节对齐。一旦定位了较长的起始码并恢复了对齐,在其之后的较短的起始码的位置也可仅通过面向字节的搜索来找到。
仅作为如何实现该过程的一个示例,考虑以下情况。在本示例中,较长的起始码前缀的长度由NL+1来表示,较短的起始码前缀的长度由NS+1来表示。
采用本示例中使用的起始码前缀的特定结构,即使在不保存字节对齐的系统中,可使用对具有值0x00的NL个字节的面向字节的搜索在数据流内检测较长的位移位起始码。这些特定的起始码值启用了简单的面向字节的检测。
具体地,一个较佳的示例是设NL=NS+1。则可在下表中总结一个仿效防止过程:
要替换的模式 替换模式
NS个字节=0x00,一个字节=0x01 NS个字节=0x00,一个字节=Z,一个字节=0x01
NS个字节=0x00,一个字节=0x00 NS个字节=0x00,一个字节=Z,一个字节=0x00
NS个字节=0x00,一个字节=Z NS个字节=0x00,二个字节=Z
               使用多长度起始码的第一仿效防止过程
在上表中,第一行描述了要替换的第一模式和防止在字节对齐位置上较短起始码的仿效的替换模式。第二行描述了第二模式和防止在字节对齐和非字节对齐位置上的较长起始码的仿效的替换模式。第三行描述了第三模式和提供在由仿效防止过程插入的值Z的字节和自然地恰巧在数据负载中值0x00的NS个字节之后的值Z的其它字节之间进行区别的方法的替换模式。注意,这仍允许编码器仅在任何起始码之前插入任意数量的0值字节,而不会损害解码器标识数据负载的末端的位置或下一起始码的位置的能力。事实上,如果编码器选择在某些较短起始码之前插入某一数量的0值字节,则任何这样的0插入将增加字节对齐的更快恢复。
可选地,可修改上述过程的第三行,使得仅在0x00值的输入数据的NS个字节的情况下插入值Z的额外字节,之后为值Z的一个字节,之后为0x00值的输入数据字节。这将减少插入的仿效防止数据的量,尽管它需要编码器和解码器中的可变长度序列处理。
第一种方法将仿效防止所需要的数据量从防止较短起始码值的非对齐仿效所需的量减少到由约为171的因子减少的量(将仿效防止过程数据扩展因子从约减少到约 )。
图6是描述依照结合包含不同长度的起始码或起始码前缀的数据使用仿效防止数据的实施例的方法中的步骤的流程图。该方法可以任一合适的硬件、软件、固件或其组合来实现。在所示并描述的实施例中,该方法由一适当配置的编码器实现。
步骤600搜索与不同长度的起始码相关联的模式。可使用任一合适数量的不同长度。在上述示例中,使用了具有两种单独的长度的起始码。响应于找到第一模式类型,步骤602插入仿效防止数据以防止第一长度的起始码的仿效。此处,第一模式类型可以是与较短起始码相关联的模式类型,并可由上表的第一行的“要替换的模式”列中的模式来举例说明。另外,该特定模式和该特定示例的对应的仿效防止数据可由上表的第一行的“替换模式”列中的模式来举例说明。
响应于找到第二模式类型,步骤604插入仿效防止数据以防止第二长度的起始码的仿效。此处,第二模式类型可以是与较长起始码相关联的模式类型,并可由上表的第二行的“要替换的模式”列中的模式来举例说明。另外,该特定模式和该特定示例的对应的仿效防止数据可由上表的第二行的“替换模式”列中的模式来举例说明。
该方法也可有利地提供一种在由仿效防止过程插入的值Z的字节和自然地恰巧在数据负载中值0x00的NS个字节之后的值Z的其它字节之间进行区分的方式,尽管本流程图未具体示出该过程。
现在考虑出现在解码器侧的情况。在解码器侧,如果丢失了字节对齐,则可通过解码器查找长起始码前缀来作出恢复。注意,由于在解码器上发生的仿效防止过程,在所有位移位的位置上防止了长起始码前缀的仿效。由此,一旦解码器找到对应于真实的长起始码前缀的模式,它就定位了真实的起始码。通过定位真实的长起始码,则可理解为恢复字节对齐。即,由于真实的长起始码在字节对齐的位置上出现,找出长起始码重新建立了字节对齐。一旦解码器恢复了字节对齐,它可仅在正确的字节对齐位置上查找较短的起始码。结合本过程,解码器可着手以上述方式移除仿效防止数据。
上述处理是有利的,提供了一种在丢失字节对齐的情况下字节对齐恢复的机制。另外,依赖于使用不同长度的起始码或起始码前缀的事实,所描述的方法避免了用额外的信息加重数据流的负担,因为令最频繁使用的起始码前缀比较不频繁使用的起始码前缀短。
对于上述第二早期中断方法中的情况,可通过减短模式的长度减少由编码器和解码器搜索所需的模式的数量。在这一情况下,用于防止不同长度的起始码的仿效的测试模式可以是相同的,允许过程的某些步骤的合并。例如,如果用于步骤602中检测第一模式类型的模式和步骤604中检测第二模式类型的模式是相同的模式,则可组合步骤602和604。在下表中示出了说明这一组合步骤的能力的使用多长度起始码的第二仿效防止过程。该过程对应于用于防止长度为(NL+1)  (即长度NS+2)的非对齐起始码的仿效的第二早期中断方法,并对应于用于防止长度为NS+1的字节对齐起始码的仿效的第二示例性方法。由此,单个模式的搜索和替换足以防止两种类型的起始码仿效。
要替换的模式 替换模式
NS个字节=0x00 NS个字节=0x00,一个字节=Z
            使用多长度起始码的第二仿效防止过程
使用多长度起始码的第二仿效防止过程简化了模式搜索和替换过程,因为它减少了需要检测并替换的模式的数量。然而,由于使用了对较短模式的匹配,增加了所插入的仿效防止数据的量。所插入的仿效防止数据的量相对于上述使用多长度起始码的第一仿效防止过程按约 16 3 = 5.33 的因子增加(将仿效防止过程数据扩展因子从约 增加到
Figure A0381166200383
)。
增强措施
存在一些涉及检测特定模式如何容易,以及哪一种可用于增加处理效率的增强措施。为下文给出的示例的目的,假定起始码前缀包括具有值W=0x00的某一数量的字节,其后为具有值X=0x01的一个字节。然而,可以理解,下文描述的原理可结合其值不同于示例中给出的值的其它起始码前缀使用。
第一增强如下。使用上文提供的表示法(即,W、X和Z),可选择Z和X或Z和W来仅以单个比特值区分。这可启用编码器和解码器上的数据流中两个值的任一个的简单检测。为说明使Z和X仅以一个比特值来区分的有用性,考虑由数据接收器完成的处理。当解码器搜索数据流以检测起始码并移除仿效防止数据时,在检测到值W=0x00的N个或更多个字节之后,它可执行输入数据的下一个字节是否等于Z或X的测试。如果Z和X以一个以上比特的值区分,则使用伪C编程构造来说明处理需求,测试可执行如下:
if(in_byte!=Z&&in_byte!=X){
   etc.
}else{
  etc.
}
然而,如果Z和X仅以一比特值区分,则使用伪C编程构造,并假定X是0x01,Z是0x81,测试可执行如下:
if((in_byte & 0x7F)==0x01){
  etc.
}else{
  etc.
}
第二增强措施认识到在上述的某些仿效防止过程中,是在三种模式之间区分。如果希望这些模式以最小的比特数彼此区分,则采用两个比特在这三种模式之间区分。然而,两个比特足以标识四个对象或模式。此处,仅有三种模式需要在其间加以区分,由此,有一系统不用于普通数据的第四模式将是有利的。现在,如果编码器被配置成将仿效防止字节设为等于2或3的值,则这意味着该系统可通过仅观察每一模式中的最低两位而在上述三种模式中加以区分。例如,如果W等于0x00,X等于0x01,Z等于0x02,则如果最低两位为0,则再现了初始字节值W;如果最低两位为1,则这是最终字节X;如果最低两位为2,则这是仿效防止值Z。其它值,即值3,可被认为是不同于普通数据的特殊值。由此,在编码器侧,替代查找三种模式,可查找四种模式,并能够很容易地找到它们,因为它们除最低两位之外都是相同的。这可加快并简化编码器和解码器上的处理。
由此,替代以仿效防止过程替换三个值序列,系统可替换四个值序列。这四个序列可仅以两个比特的值来彼此区分。换言之,编码器和解码器对输入数据是否具有这些特殊值之一的检测过程(假定此时W=0x00,X=0x01,Z=0x81)可简单地为:
if((in_byte & 0x7E){
   etc.
}else{
   etc.
}
第四个特殊字节值(本情况中为0x80)可用于各种目的,如另一类型的起始码或系统保留未使用。
作为第三增强措施,考虑以下情况。可允许用具有值W的字节填充数据负载的末端之后的空间,而无需在填充值之间插入仿效防止字节,因为在W序列之后到达的下一值是X,它表明真实的起始码前缀。这允许任意整数个“填充”字节来为某种目的填充传输信道,如对齐到特殊边界(如,32位DWORD边界或固定长度分组边界),或当不需要发送信息时简单地填满恒定比特率信道。
填充的另一好处是如果选择起始码的值以允许起始码,则可允许编码器进行填充以提供在字节对齐丢失的情况下对字节边界的重同步。由此,编码器可判断每隔多少时候发送一个或多个额外的填充字节以允许解码器恢复字节对齐。某些编码器可通过在每一起始码之前添加额外的填充来启用十分频繁的字节对齐恢复,其它编码器可选择较不频繁地执行这一过程。
在W=0x00,X=0x01的情况下,一些具体插入的Z的值为Z=0x80、0x02、0x81和0x03。
格式规范可指定用于为字节对齐恢复而添加的额外填充字节的最小频率,或者可将额外的填充与数据流中特定的起始码类型相关联(如,在压缩视频数据流中填充每一图像的起始,但不需要在较低级起始码之前填充,如MPEG-2或H.263视频中被称为片段或GOB的起始码)。
示例性计算环境
图7示出了适合在其中实现下文描述的系统和相关方法的计算环境700的一个示例。
可以理解,计算环境700仅为合适的计算环境的一个示例,并非建议对上述编码/解码系统的使用或功能的范围的局限。也不应将计算环境700解释为对示例性计算环境700中示出的任一组件或其组合具有依赖或需求。
所描述的各种实施例可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用本发明的众所周知的计算系统、环境和/或配置包括但不限于:个人计算机、服务器计算机、薄客户机、厚客户机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
在某些实现中,本系统和相关方法可在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。各种实施例也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒质中,包括存储器存储设备。所描述的计算系统的组件可用于实现如上所述地起作用的编码器和解码器。
依照图7所示的示例实施例,示出计算系统700包括一个或多个处理器或处理单元7021、系统存储器704以及将包括系统存储器704的各类系统组件耦合至处理单元702的系统总线706。
系统总线706旨在代表若干种总线结构类型的任一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各类总线结构的处理器或局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
计算机700通常包括各种计算机可读媒质。这类计算机可读媒质可以是可由计算机本地和/或远程访问的任一可用媒质,并包括易失和非易失媒质、可移动和不可移动媒质。
在图7中,系统存储器704包括易失存储器形式的计算机可读媒质,如随机存取存储器(RAM)710,和/或非易失存储器形式的计算机可读媒质,如只读存储器(ROM)708。基本输入/输出系统(BIOS)712包括如在启动时帮助在计算机700内的元件之间传输信息的基本例程,储存在ROM 708中。RAM 710通常包含处理单元702立即可访问或者当前正在操作的数据和/或程序模块。
计算机700也可包括其它可移动/不可移动、易失/非易失计算机存储媒质。仅作示例,图7示出了对不可移动、非易失磁媒质(未示出,通常称为“硬盘”)进行读写的硬盘驱动器728、对可移动、非易失磁盘732(如,“软盘”)进行读写的磁盘驱动器730以及对可移动、非易失光盘736,如CD-ROM或其它光媒质进行读写的光盘驱动器734。硬盘驱动器728、磁盘驱动器730和光盘驱动器734的每一个都通过一个或多个接口726连接到总线706。
驱动器及其关联的计算机存储媒质为计算机700提供了计算机可读指令、数据结构、程序模块和其它数据的非易失存储。尽管这里描述的示例环境采用了硬盘708、可移动磁盘732以及可移动光盘736,本领域的技术人员可以理解,也可以在示例性操作环境中使用用于储存可由计算机访问的数据的其它类型的计算机可读媒质,如盒式磁带、闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。
若干程序模块可储存在硬盘728、磁盘732、光盘736、ROM 708或RAM 710中,作为示例而非局限,包括操作系统714、一个或多个应用程序716(如,多媒体应用程序724)、其它程序模块718以及程序数据720。用户可以输入设备,如键盘738和定位设备740(如,“鼠标”)向计算机700输入命令和信息。其它输入设备可包括音频/视频输入设备753、麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等(未示出)。这些和其它输入设备通常通过耦合至总线706的输入接口742连接到处理单元702,但也可通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
监视器756或其它类型的显示设备也通过接口,如视频适配器或视频/图形卡744连接到系统总线706。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机,通过输出外围接口746连接。
计算机700可以在使用到一个或多个远程计算机,如远程计算机750的逻辑连接的网络化环境中操作。远程计算机750可包括许多或所有上述与计算机相关的元件和结构。
如图7所示,计算系统700通过局域网(LAN)751和一般的广域网(WAN)752通信上耦合至远程设备(如,远程计算机750)。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机700通过合适的网络接口或适配器748连接至LAN 751。当在WAN网络环境中使用时,计算机700通常包括调制解调器754或其它装置,用于通过WAN 752建立通信。调制解调器754可以是内置或外置的,通过用户输入接口742或其它合适的机制连接至系统总线706。
在网络化环境中,描述的与计算机700相关的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图7示出了远程应用程序716驻留在远程计算机750的存储器设备上。可以理解,示出并描述的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
总结
上述方法和系统的其中一些可提供不同于比特级的级别上的起始码仿效防止。这是有利的,因为它可简化处理复杂度。另外,某些实施例提供了一种用于可确保在期望时发送整数个字节的数据填充的直接方法。此外,各种实施例可提供不必要与数据边界一致的位移位位置上的起始码仿效防止。另外的实施例可获得各种处理效率,同时在数据边界对齐丢失的情况下可对其提供恢复的机制。本领域的技术人员可清楚其它优点。
尽管以对结构特征和/或方法步骤专用的语言描述了本发明,然而可以理解,所附权利要求书中定义的本发明不必要限于所描述的具体特征或步骤。相反,揭示了具体特征和步骤作为实现本发明的较佳形式。

Claims (121)

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.如权利要求17所述的计算机可读媒质,其特征在于,所述指令促使所述一个或多个处理器搜索多个模式,各单个模式被结构化为一前缀后跟随一类型指示后缀。
26.如权利要求17所述的计算机可读媒质,其特征在于,所述指令促使所述一个或多个处理器搜索多个模式,各单个模式被结构化为一前缀后跟随一类型指示后缀,其中,每一模式的前缀长度和类型指示后缀长度的一个或多个可在长度上不同于其它模式的前缀长度和类型指示后缀长度。
27.如权利要求17所述的计算机可读媒质,其特征在于,所述指令促使所述一个或多个处理器通过从多个不同模式的仿效防止数据中选择来插入起始码仿效防止数据。
28.如权利要求17所述的计算机可读媒质,其特征在于,所述指令促使所述一个或多个处理器通过从多个不同模式的仿效防止数据中选择来插入起始码仿效防止数据,所述数据的各单个模式可具有不同的长度。
29.如权利要求17所述的计算机可读媒质,其特征在于,所述指令促使所述一个或多个处理器插入在比特数上等于一单个固定大小数据段的数据量。
30.如权利要求17所述的计算机可读媒质,其特征在于,所述指令促使所述一个或多个处理器发送包含起始码仿效防止数据的数据。
31.一种方法,其特征在于,它包括:
在供在使用起始码的环境中编码使用的数据内搜索至少一个字节级模式,所述模式由多个字节定义;
响应于找到一个或多个模式,插入与包含所述模式的数据有关的起始码仿效防止数据;以及
其中,所述搜索和所述插入被设计成防止不在字节边界上开始的一个或多个位置上的仿效。
32.如权利要求31所述的方法,其特征在于,所述搜索动作通过搜索视频数据来执行。
33.如权利要求31所述的方法,其特征在于,所述搜索动作通过搜索音频数据来执行。
34.如权利要求31所述的方法,其特征在于,所述搜索动作通过搜索音频/视频数据来执行。
35.如权利要求31所述的方法,其特征在于,插入所述起始码仿效防止数据的所述动作包括插入至少一个字节。
36.如权利要求31所述的方法,其特征在于,它还包括发送包含起始码仿效防止数据的数据。
37.如权利要求31所述的方法,其特征在于,所述搜索和插入动作由一编码器执行。
38.一个或多个包含被配置成执行一种方法的编码器的计算机可读媒质,其特征在于,所述方法包括:
在供在使用起始码的环境中编码使用的数据内搜索至少一个字节级模式,所述模式由多个字节定义;
响应于找到一个或多个模式,插入与包含所述模式的数据有关的起始码仿效防止数据;以及
其中,所述搜索和所述插入被设计成防止不在字节边界上开始的一个或多个位置上的仿效。
39.一个或多个包含指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器执行一种方法,其特征在于,所述方法包括:
在供在使用起始码的环境中编码使用的数据内搜索至少一个字节级模式,所述模式由多个字节定义;
响应于找到一个或多个模式,插入与包含所述模式的数据有关的起始码仿效防止数据;以及
其中,所述搜索和所述插入被设计成防止不在字节边界上开始的一个或多个位置上的仿效。
40.一种方法,其特征在于,它包括:
接收用起始码仿效防止数据编码的数据,所述起始码仿效防止数据防止在包括不在数据边界上开始的位置在内的位置上一个或多个起始码的仿效,所述起始码仿效防止数据的各个实例包括多个比特:
在所解码的数据内搜索真正的起始码;
搜索所接收的数据以标识起始码仿效防止数据;以及
响应于找到所述起始码仿效防止数据,移除所述起始码仿效防止数据。
41.如权利要求40所述的方法,其特征在于,所述接收动作通过接收视频数据来执行。
42.如权利要求40所述的方法,其特征在于,所述接收动作通过接收音频数据来执行。
43.如权利要求40所述的方法,其特征在于,所述接收动作通过接收音频/视频数据来执行。
44.如权利要求40所述的方法,其特征在于,所述各动作由一解码器执行。
45.一个或多个被编程为实现权利要求40所述的方法的计算机系统。
46.一个或多个包含解码器的计算机可读媒质,其特征在于,所述解码器被配置成:
接收用起始码仿效防止数据编码的数据,所述起始码仿效防止数据防止在包括不在数据边界上开始的位置在内的位置上的一个或多个起始码的仿效,所述起始码仿效防止数据的各个实例包括多个比特;
在所接收的数据内搜索真正的起始码;
搜索所接收的数据以标识起始码仿效防止数据;以及
响应于找到所述起始码仿效防止数据,移除所述起始码仿效防止数据。
47.一种方法,其特征在于,它包括:
接收用起始码仿效防止数据编码以防止起始码的仿效的数据,所述起始码仿效防止数据的各个实例包括一个或多个字节,所述起始码仿效防止数据的至少一个实例被设计成防止在非字节边界的位置上开始的起始码的仿效;
在所接收的数据内搜索真正的起始码;
搜索所接收的数据以标识起始码仿效防止数据;
响应于找到所述起始码仿效防止数据,移除所述起始码仿效防止数据。
48.如权利要求47所述的方法,其特征在于,所述接收动作通过接收视频数据来执行。
49.如权利要求47所述的方法,其特征在于,所述接收动作通过接收音频数据来执行。
50.如权利要求47所述的方法,其特征在于,所述接收动作通过接收音频/视频数据来执行。
51.一个或多个包含指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求47所述的方法。
52.一种解码器,其特征在于,它被配置成:
接收用防止起始码的仿效的起始码仿效防止数据编码的数据,所述起始码仿效防止数据的单个实例包括一个或多个字节,所述起始码仿效防止数据的至少一个实例被设计成防止在非字节边界的位置上开始的起始码的仿效;
在所接收的数据内搜索真正的起始码;
搜索所接收的数据以标识起始码仿效防止数据;以及
响应于找到所述起始码仿效防止数据,移除所述起始码仿效防止数据。
53.一个或多个包含权利要求52所述的解码器的计算机系统。
54.一种方法,其特征在于:
相对于一个或多个数据边界将起始码的至少一部分移位多次;
标识所述起始码部分内的一个或多个特征模式,使得所述特征模式的至少一个对相对于至少一个数据边界的每一移位的位置出现;以及
将所述特征模式用作搜索模式,用于执行起始码仿效防止数据插入,以防止在非数据边界对齐位置上的起始码仿效。
55.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀。
56.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀,其中,所述起始码前缀包括具有第一值的N个字节,其后跟随具有不同于所述第一值的第二值的至少一个其它字节,其中N大于或等于1。
57.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀,其中,所述起始码前缀包括具有第一值的N个字节,其后跟随具有不同于所述第一值的第二值的至少一个其它字节,其中,所述第一值等于0x00,其中N大于或等于1。
58.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀,其中,所述起始码前缀包括具有第一值的N个字节,其后跟随具有不同于所述第一值的第二值的至少一个其它字节,其中,所述第二值等于0x01,其中N大于或等于1。
59.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀,其中,所述起始码前缀包括具有第一值的N个字节,其后跟随具有不同于所述第一值的第二值的一个字节,其中,N=2。
60.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀,其中,所述起始码前缀包括具有第一值的N个字节,其后跟随具有不同于所述第一值的第二值的一个字节,其中N=2,且所述第一值等于0x00。
61.如权利要求54所述的方法,其特征在于,被移位的所述起始码的所述部分包括一起始码前缀,其中,所述起始码前缀包括具有第一值的N个字节,其后跟随具有不同于所述第一值的第二值的一个字节,其中N=2,且所述第二值等于0x01。
62.如权利要求54所述的方法,其特征在于,它还包括响应于找到数据流内的所述特征模式,在数据边界位置上插入起始码仿效防止数据。
63.如权利要求54所述的方法,其特征在于,响应于在数据流内标识仿效已插入仿效防止数据的数据的模式,在所述数据流内插入仿效防止数据。
64.一个或多个在其上具有计算机可读指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求54所述的方法。
65.一种包含权利要求64所述的一个或多个计算机可读媒质的系统。
66.一种方法,其特征在于,它包括:
搜索一数据流内的一个或多个第一模式,所述一个或多个第一模式被表征为仅匹配所述数据流中包括不在数据边界开始处的至少一个位置在内的位置上的起始码前缀的一部分;
响应于找到所述一个或多个第一模式的其中一个,用可防止一个或多个起始码值的仿效的第一替换模式替换所述第一模式;
搜索所述数据流内的一个或多个第二模式,所述一个或多个第二模式被表征为仅匹配被处理成防止起始码仿效的起始码的一部分;
响应于找到所述一个或多个第二模式的其中一个,用可防止起始码仿效防止模式的仿效的第二替换模式替换所述第二模式。
67.如权利要求66所述的方法,其特征在于,所述搜索和替换动作被设计成防止在非数据边界对齐的位置上的起始码仿效。
68.如权利要求66所述的方法,其特征在于,所述模式按照数据字节来定义。
69.如权利要求66所述的方法,其特征在于,所述一个或多个第一模式被表征为具有第一值的N个字节,并且所述第一替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有不同值的一个仿效防止字节,其后跟随具有所述第一值的一个字节,所述N大于或等于2。
70.如权利要求66所述的方法,其特征在于,所述一个或多个第二模式被表征为具有第一值的N-1个字节,其后跟随具有仿效防止字节值的一个字节,且所述一个或多个第二替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个仿效防止字节,其后跟随具有所述仿效防止字节值的一个字节,其中,N大于或等于2。
71.如权利要求66所述的方法,其特征在于:
所述一个或多个第一模式被表征为具有第一值的N个字节,且所述第一替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有仿效防止字节值的一个仿效防止字节,其后跟随具有所述第一值的一个字节;以及
所述一个或多个第二模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个字节,且所述一个或多个第二替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个仿效防止字节,其后跟随具有所述仿效防止字节值的一个字节。
72.如权利要求66所述的方法,其特征在于:
所述一个或多个第一模式被表征为具有第一值的N个字节,且所述第一替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有仿效防止字节值的一个仿效防止字节,其后跟随具有所述第一值的一个字节;以及
所述一个或多个第二模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个字节,且所述第二替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个仿效防止字节,其后跟随具有所述仿效防止字节值的一个字节,其中N=2。
73.一个或多个其上具有计算机可读指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求66所述的方法。
74.一种包含权利要求73所述的一个或多个计算机可读媒质的系统。
75.一种方法,其特征在于,它包括:
接收被处理成包含起始码仿效防止数据以防止起始码的仿效的数据,所述数据为等效于在使用依照一规则来处理的起始码的环境中要发送的数据的处理的格式,所述规则:
搜索一数据流内的一个或多个第一模式,所述一个或多个第一模式被表征为仅匹配所述数据流中包括不是数据边界的起始的至少一个位置的位置上的起始码的一部分;
响应于找到所述一个或多个第一模式的其中一个,用可防止一个或多个起始码的值的仿效的第一替换模式替换所述第一模式;
搜索所述数据流内的一个或多个第二模式,所述一个或多个第二模式被表征为仅匹配被处理成防止起始码仿效的起始码的一部分;以及
响应于找到所述一个或多个第二模式的其中一个,用可防止所述第一替换模式的仿效的第二替换模式替换所述第二模式;
搜索所接收的数据内的真正起始码;
搜索所接收的数据以标识起始码仿效防止数据;以及
响应于找到起始码仿效防止数据,移除所述起始码仿效防止数据。
76.如权利要求75所述的方法,其特征在于,所述规则的搜索和替换被设计成防止在非数据边界对齐位置上的起始码仿效。
77.如权利要求75所述的方法,其特征在于,所述模式按照数据字节来定义。
78.如权利要求75所述的方法,其特征在于,所述一个或多个第一模式被表征为具有第一值的N个字节,且所述第一替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有不同值的一个仿效防止字节,其后跟随具有所述第一值的一个字节,其中,N大于或等于2。
79.如权利要求75所述的方法,其特征在于,所述一个或多个第二模式被表征为具有第一值的N-1个字节,其后跟随具有仿效防止字节值的一个字节,且所述一个或多个第二替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个仿效防止字节,其后跟随具有所述仿效防止字节值的一个字节,其中N大于或等于2。
80.如权利要求75所述的方法,其特征在于:
所述一个或多个第一模式被表征为具有第一值的N个字节,且所述第一替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有仿效防止字节值的一个仿效防止字节,其后跟随具有所述第一值的一个字节;以及
所述一个或多个第二模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个字节,且所述一个或多个第二替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个仿效防止字节,其后跟随具有所述仿效防止字节值的一个字节。
81.如权利要求75所述的方法,其特征在于:
所述一个或多个第一模式被表征为具有第一值的N个字节,且所述第一替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有仿效防止字节值的一个代码防止仿效字节,其后跟随具有所述第一值的一个字节;以及
所述一个或多个第二模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个字节,且所述第二替换模式被表征为具有所述第一值的N-1个字节,其后跟随具有所述仿效防止字节值的一个仿效防止字节,其后跟随具有所述仿效防止字节值的一个字节,其中,N=2。
82.一种方法,其特征在于,它包括:
以可通过仅搜索并操纵字节级模式防止在一个或多个位移位的位置上的起始码仿效的方式,处理供在使用起始码的环境中编码使用的数据流。
83.一个或多个具有指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求82所述的方法。
84.一种包含权利要求83所述的一个或多个计算机可读媒质的系统。
85.一种被配置成实现权利要求82所述的方法的编码器。
86.一种方法,其特征在于,它包括:
接收一数据流;
处理所述数据流,以:
提供具有不同长度的起始码;
防止具有较长长度的起始码的位移位仿效;以及
防止具有较短长度的起始码的仅数据边界对齐仿效。
87.如权利要求86所述的方法,其特征在于,它还包括:
通过较之较短起始码较不频繁地使用较长起始码来处理所述数据流的数据。
88.如权利要求86所述的方法,其特征在于,防止具有较长长度的起始码的位移位仿效可在丢失边界恢复的情况下提供数据边界对齐恢复。
89.一个或多个具有指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求86所述的方法。
90.一种包含权利要求89所述的一个或多个计算机可读媒质的系统。
91.一种被配置成实现权利要求86所述的方法的编码器。
92.一种方法,其特征在于,它包括:
搜索数据流内的一个或多个第一模式,所述一个或多个第一模式被表征为匹配与具有第一长度的第一起始码相关联的起始码的至少一部分;
响应于找到所述一个或多个第一模式,用可防止在字节对齐位置处的所述第一起始码的起始码仿效的第一替换模式替换所述一个或多个第一模式;
搜索所述数据流内的一个或多个第二模式,所述一个或多个第二模式被表征为仅匹配与具有比所述第一长度长的第二长度的第二起始码相关联的第二起始码的一部分;
响应于找到所述一个或多个第二模式,用可防止在非字节对齐位置处的所述第二起始码的起始码仿效的第二替换模式替换所述第二模式;
搜索所述数据流内的一个或多个第三模式,所述一个或多个第三模式被表征为匹配被处理成防止起始码仿效的数据;以及
响应于找到所述一个或多个第三模式,用可在被处理成防止起始码仿效的数据与自然地恰巧类似于被处理成防止起始码仿效的数据的数据之间进行区分的第三替换模式替换所述一个或多个第三模式。
93.如权利要求92所述的方法,其特征在于,所述模式按照字节来定义。
94.如权利要求92所述的方法,其特征在于,所述一个或多个第一模式被表征为具有第一值的N个字节,其后跟随具有第二值的一个字节,且所述第一替换模式被表征为具有所述第一值的N个字节,其后跟随具有不同值的一个起始码仿效防止字节,其后跟随具有所述第二值的一个字节。
95.如权利要求92所述的的方法,其特征在于,所述一个或多个第二模式被表征为具有第一值的N+1个字节,且所述第二替换模式被表征为具有所述第一值的N个字节,其后跟随具有不同值的一个起始码仿效防止字节,其后跟随具有所述第一值的一个字节。
96.如权利要求92所述的方法,其特征在于,所述一个或多个第三模式被表征为具有第一值的N个字节,其后跟随具有仿效防止字节值的一个字节,且所述第三替换模式被表征为具有所述第一值的N个字节,其后跟随具有所述仿效防止字节值的两个起始码仿效防止字节。
97.如权利要求92所述的方法,其特征在于:
所述一个或多个第一模式被表征为具有第一值的N个字节,其后跟随具有第二值的一个字节,且所述第一替换模式被表征为具有所述第一值的N个字节,其后跟随具有起始码仿效防止字节值的一个起始码仿效防止字节,其后跟随具有所述第二值的一个字节;
所述一个或多个第二模式被表征为具有所述第一值的N+1个字节,且所述第二替换模式被表征为具有所述第一值的N个字节,其后跟随具有所述起始码仿效防止字节值的一个起始码仿效防止字节,其后跟随具有所述第一值的一个字节;以及
所述一个或多个第三模式被表征为具有所述第一值的N个字节,其后跟随具有所述起始码仿效防止字节值的一个字节,且所述第三替换模式被表征为具有所述第一值的N个字节,其后跟随具有所述起始码仿效防止字节值的两个起始码仿效防止字节。
98.如权利要求92所述的方法,其特征在于,替换所述第一、第二和第三模式的动作包括将一具有值的仿效防止字节插入到所述各个的相应模式中。
99.如权利要求92所述的方法,其特征在于,替换所述第一、第二和第三模式的所述动作包括将一具有值的仿效防止字节插入到所述各个相应的模式中,其中,所述第一起始码或起始码前缀的最后一个字节与所述第二起始码或起始码前缀的最后一个字节在值上与所述仿效防止字节的值有一个比特值的不同。
100.如权利要求92所述的方法,其特征在于,所述第一、第二和第三替换模式的各模式间在最低两位上的值彼此不同。
101.如权利要求92所述的方法,其特征在于,所述第一、第二和第三替换模式的各模式间仅在最后一个字节的最低两位上的值彼此不同。
102.如权利要求92所述的方法,其特征在于,所述第一、第二和第三替换模式的各模式间在最低两位上的值彼此不同,不对应于所述第一、第二或第三替换模式的最低两位的第四值被用于不同于普通数据的目的。
103.如权利要求102所述的方法,其特征在于,它还包括:
搜索第四模式,所述第四模式被表征为匹配在值上不同于所述第一、第二和第三模式的两个比特的剩余值,以及
响应于找到所述第四模式,用第四替换模式替换所述第四模式,该第四替换模式可为在其值对于其它三个搜索模式为不同的所述两个比特的值上不相同的所有模式提供一致行为。
104.如权利要求92所述的方法,其特征在于,它还包括用具有预定值的字节填充数据负载的末端之后的空间,而不在填充值之间插入仿效防止字节。
105.一个或多个具有计算机可读指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求92所述的方法。
106.一种包含权利要求105所述的一个或多个计算机可读媒质的系统。
107.一种被配置成实现权利要求92所述的方法的编码器。
108.一种方法,其特征在于,它包括:
接收被处理成包含起始码仿效防止数据以防止起始码的仿效的数据,所编码的数据是等效于在使用依照一规则处理的起始码的环境中要发送的数据处理的格式,所述规则:
搜索数据流内一个或多个第一模式,所述一个或多个第一模式被表征为匹配与具有第一长度的第一起始码相关联的起始码的至少一部分;
响应于找到所述一个或多个第一模式,用可防止在字节对齐位置上所述第一起始码的起始码仿效的第一替换模式替换所述第一模式;
搜索所述数据流内一个或多个第二模式,所述一个或多个第二模式被表征为仅匹配与具有比所述第一长度长的第二长度的第二起始码相关联的第二起始码的一部分;
响应于找到所述一个或多个第二模式,用可防止在非字节对齐位置上所述第二起始码的起始码仿效的第二替换模式替换所述一个或多个第二模式;
搜索所述数据流内一个或多个第三模式,所述一个或多个第三模式被表征为匹配被处理成防止起始码仿效的数据;
响应于找到所述一个或多个第三模式,用可在被处理成防止起始码仿效的数据与自然地恰巧类似被处理成防止起始码仿效的数据的数据之间进行区分的第三替换模式替换所述一个或多个第三模式;
搜索所接收的数据内的真正起始码;
搜索所接收的数据以标识起始码仿效防止数据;以及
响应于找到起始码仿效防止数据,移除所述起始码仿效防止数据。
109.如权利要求108所述的方法,其特征在于,所述模式按照字节来定义。
110.如权利要求108所述的方法,其特征在于,所述模式按照字节来定义,搜索真正起始码的所述动作包括搜索具有较长长度的起始码,并响应于找到所述较长长度的起始码,恢复字节对齐。
111.如权利要求108所述的方法,其特征在于,所述模式按照字节来定义,搜索真正起始码的所述动作包括搜索具有较长长度的起始码,并响应于找到所述较长长度的起始码,恢复字节对齐,并且还包括在恢复字节对齐之后,搜索其长度比具有较长长度的所述起始码的长度短的起始码。
112.如权利要求108所述的方法,其特征在于,所述一个或多个第一模式被表征为具有第一值的N个字节,其后跟随具有第二值的一个字节,且所述第一替换模式被表征为具有所述第一值的N个字节,其后跟随具有不同值的一个起始码仿效防止字节,其后跟随具有所述第二值的一个字节。
113.如权利要求108所述的方法,其特征在于,所述一个或多个第二模式被表征为具有第一值的N+1个字节,且所述第二替换模式被表征为具有所述第一值的N个字节,其后跟随具有不同值的一个起始码仿效防止字节,其后跟随具有所述第一值的一个字节。
114.如权利要求108所述的方法,其特征在于,所述一个或多个第三模式被表征为具有第一值的N个字节,其后跟随具有仿效防止字节值的一个字节,且所述第三替换模式被表征为具有所述第一值的N个字节,其后跟随具有所述仿效防止字节值的两个起始码仿效防止字节。
115.如权利要求108所述的方法,其特征在于:
所述一个或多个第一模式被表征为具有第一值的N个字节,其后跟随具有第二值的一个字节,且所述第一替换模式被表征为具有所述第一值的N个字节,其后跟随具有起始码仿效防止字节值的一个起始码仿效防止字节,其后跟随具有所述第二值的一个字节;
所述一个或多个第二模式被表征为具有所述第一值的N+1个字节,且所述第二替换模式被表征为具有所述第一值的N个字节,其后跟随具有所述起始码仿效防止字节值的一个起始码仿效防止字节,其后跟随具有所述第一值的一个字节;以及
所述一个或多个第三模式被表征为具有所述第一值的N个字节,其后跟随具有所述起始码仿效防止字节值的一个字节,且所述第三替换模式被表征为具有所述第一值的N个字节,其后跟随具有所述起始码仿效防止字节值的两个起始码仿效防止字节。
116.如权利要求108所述的方法,其特征在于,所述第一、第二和第三替换模式包括在其中插入了一个仿效防止字节的相应的第一、第二和第三模式,并且其中,所述第一起始码或起始码前缀的最后一个字节和所述第二起始码或起始码前缀的最后一个字节在值上与所述仿效防止字节的值有一个比特值的不同。
117.如权利要求108所述的方法,其特征在于,所述第一、第二和第三替换模式的每一模式间在最低两位的值上不同。
118.一个或多个具有计算机可读指令的计算机可读媒质,当由一个或多个处理器执行所述指令时,促使所述一个或多个处理器实现权利要求108所述的方法。
119.一种包含权利要求118所述的一个或多个计算机可读媒质的系统。
120.一种方法,其特征在于,它包括:
搜索数据流内的一模式,所述模式被表征为匹配(a)起始码的一部分、以及(b)其它相应模式的多个替换模式的至少一部分;
响应于找到所搜索的模式,用可防止所有位移位置上的起始码仿效的替换模式替换所搜索的模式。
121.一种方法,其特征在于,它包括:
搜索数据流内的一模式,所述模式被表征为匹配(a)起始码前缀的一部分、以及(b)其它相应模式的多个替换模式的至少一部分;
响应于找到所搜索的模式,用可防止所有位移位置上的起始码仿效的替换模式替换所搜索的模式。
CNB038116626A 2002-04-19 2003-04-18 防止非字节对齐和/或位移位位置起始码仿效的方法和系统 Expired - Lifetime CN100499824C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US37419202P 2002-04-19 2002-04-19
US60/374,192 2002-04-19

Publications (2)

Publication Number Publication Date
CN1656821A true CN1656821A (zh) 2005-08-17
CN100499824C CN100499824C (zh) 2009-06-10

Family

ID=29251157

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038116626A Expired - Lifetime CN100499824C (zh) 2002-04-19 2003-04-18 防止非字节对齐和/或位移位位置起始码仿效的方法和系统

Country Status (8)

Country Link
US (1) US7248740B2 (zh)
EP (1) EP1500278B1 (zh)
JP (1) JP4448334B2 (zh)
KR (1) KR100895932B1 (zh)
CN (1) CN100499824C (zh)
HK (1) HK1075565A1 (zh)
TW (1) TWI310137B (zh)
WO (1) WO2003090470A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101800892A (zh) * 2010-03-04 2010-08-11 青岛海信信芯科技有限公司 多媒体码流识别的方法和装置
CN101534438B (zh) * 2008-03-14 2013-02-13 瑞昱半导体股份有限公司 影音位流处理方法及装置
CN106933767A (zh) * 2017-03-10 2017-07-07 重庆湃芯微电子有限公司 一种适用于jesd204b协议的逗号检测和字对齐方法及系统
CN111886880A (zh) * 2018-04-09 2020-11-03 杜比国际公司 用于mpeg-h 3d音频的三自由度(3dof+)扩展的方法、设备和系统
US11375332B2 (en) 2018-04-09 2022-06-28 Dolby International Ab Methods, apparatus and systems for three degrees of freedom (3DoF+) extension of MPEG-H 3D audio

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60310368T2 (de) * 2002-01-22 2007-03-29 Microsoft Corp., Redmond Verfahren zur verhinderung von startkode-emulation und stopfdaten
US7305036B2 (en) * 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
US20040067042A1 (en) * 2002-10-07 2004-04-08 Hughes Robert K. Extended time-code for multimedia presentations
US8427494B2 (en) * 2004-01-30 2013-04-23 Nvidia Corporation Variable-length coding data transfer interface
US8023564B2 (en) * 2004-02-04 2011-09-20 Broadcom Corporaiton System and method for providing data starting from start codes aligned with byte boundaries in multiple byte words
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
JP4444762B2 (ja) * 2004-08-25 2010-03-31 パナソニック株式会社 デマルチプレクサ
US7340441B1 (en) * 2004-12-17 2008-03-04 The Mathworks, Inc. Search directions in pattern search via rotation
US8081755B2 (en) * 2005-05-20 2011-12-20 Microsoft Corporation JPEG2000 syntax-compliant encryption with full scalability
US7953224B2 (en) * 2005-05-20 2011-05-31 Microsoft Corporation MPEG-4 encryption enabling transcoding without decryption
WO2007034634A1 (ja) * 2005-09-20 2007-03-29 Pioneer Corporation デジタル放送受信機
JP4229149B2 (ja) * 2006-07-13 2009-02-25 ソニー株式会社 ビデオ信号処理装置およびビデオ信号処理方法、ビデオ信号符号化装置およびビデオ信号符号化方法、並びにプログラム
WO2008064058A2 (en) * 2006-11-21 2008-05-29 Abbott Laboratories Use of a terpolymer of tetrafluoroethylene, hexafluoropropylene, and vinylidene fluoride in drug eluting coatings
US7974307B2 (en) * 2006-11-30 2011-07-05 Vestel Elektronik Sanayi Ve Ticaret A.S. Methods and apparatus for data decoding/encoding and for searching for/inserting stuffing bytes
KR100841338B1 (ko) 2007-02-27 2008-06-26 삼성전자주식회사 비디오 디코더를 위한 에뮬레이션 방지 바이트 제거 장치
US9503777B2 (en) * 2007-06-05 2016-11-22 Broadcom Corporation Method and system for unified start code emulation prevention bits processing for AVS
US8726125B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Reducing interpolation error
US8725504B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Inverse quantization in audio decoding
US8477852B2 (en) * 2007-06-20 2013-07-02 Nvidia Corporation Uniform video decoding and display
US8576918B2 (en) * 2007-07-09 2013-11-05 Broadcom Corporation Method and apparatus for signaling and decoding AVS1-P2 bitstreams of different versions
US8502709B2 (en) * 2007-09-17 2013-08-06 Nvidia Corporation Decoding variable length codes in media applications
US8849051B2 (en) * 2007-09-17 2014-09-30 Nvidia Corporation Decoding variable length codes in JPEG applications
US8704834B2 (en) * 2007-12-03 2014-04-22 Nvidia Corporation Synchronization of video input data streams and video output data streams
US8934539B2 (en) 2007-12-03 2015-01-13 Nvidia Corporation Vector processor acceleration for media quantization
US8687875B2 (en) * 2007-12-03 2014-04-01 Nvidia Corporation Comparator based acceleration for media quantization
TWI361009B (en) 2008-03-06 2012-03-21 Realtek Semiconductor Corp Method and apparatus for processing audio/vedio bi
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7925774B2 (en) 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US9307267B2 (en) 2008-12-11 2016-04-05 Nvidia Corporation Techniques for scalable dynamic data encoding and decoding
US8897377B2 (en) * 2009-12-31 2014-11-25 Broadcom Corporation Transcoding multiple media elements for independent wireless delivery
US9325999B2 (en) * 2011-03-10 2016-04-26 Sharp Kabushiki Kaisha Video decoder for slices
US10230989B2 (en) * 2011-06-21 2019-03-12 Texas Instruments Incorporated Method and apparatus for video encoding and/or decoding to prevent start code confusion
TWI455020B (zh) * 2012-01-31 2014-10-01 Mstar Semiconductor Inc 資料包裝裝置及資料包裝方法
CN102802023B (zh) * 2012-08-29 2014-08-27 上海国茂数字技术有限公司 一种快速防止出现伪起始码的方法及装置
US9336072B2 (en) 2014-02-07 2016-05-10 Ralph Moore Event group extensions, systems, and methods
US9854261B2 (en) * 2015-01-06 2017-12-26 Microsoft Technology Licensing, Llc. Detecting markers in an encoded video signal
US10271069B2 (en) 2016-08-31 2019-04-23 Microsoft Technology Licensing, Llc Selective use of start code emulation prevention
CN112486885B (zh) * 2020-12-07 2024-06-07 珠海优特智厨科技有限公司 数据帧的生成方法、存储介质及计算机设备
KR102477168B1 (ko) * 2021-02-02 2022-12-14 엘아이지넥스원 주식회사 디지털 시리얼 데이터 통신 장치 간에 노이즈 간섭에 따른 데이터 왜곡 복원 방법

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847877A (en) * 1986-11-28 1989-07-11 International Business Machines Corporation Method and apparatus for detecting a predetermined bit pattern within a serial bit stream
JP2674059B2 (ja) * 1988-02-09 1997-11-05 キヤノン株式会社 カラー画像データ伝送方法
CA2335403C (en) * 1990-06-05 2002-03-19 Koninklijke Philips Electronics N.V. Optical readable disc storing full-motion video scene
GB9012538D0 (en) * 1990-06-05 1990-07-25 Philips Nv Coding of video signals
US5842033A (en) * 1992-06-30 1998-11-24 Discovision Associates Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system
US5699123A (en) * 1993-10-20 1997-12-16 Victor Company Of Japan, Ltd. Television receiver with an adjustable frame size
US5784110A (en) * 1993-11-30 1998-07-21 General Electric Company Data processor for assembling transport data packets
PT732028E (pt) * 1993-11-30 2002-07-31 Gen Electric Indicador de palavra de dados num sistema para montagem de pacotes de dados de transporte
JP3474005B2 (ja) * 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5933535A (en) * 1995-10-05 1999-08-03 Microsoft Corporation Object-based video compression process employing arbitrarily-shaped features
JPH09182067A (ja) * 1995-10-27 1997-07-11 Toshiba Corp 画像符号化/復号化装置
EP1755261A3 (en) 1996-03-18 2008-04-02 Kabushiki Kaisha Toshiba Coding and decoding system
US5870444A (en) * 1996-04-23 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for performing very fast message synchronization
US5661665A (en) * 1996-06-26 1997-08-26 Microsoft Corporation Multi-media synchronization
EP0864228B1 (en) * 1996-07-05 2001-04-04 Matsushita Electric Industrial Co., Ltd. Method for display time stamping and synchronization of multiple video object planes
JPH1066036A (ja) * 1996-08-15 1998-03-06 Oki Electric Ind Co Ltd Tv方式変換装置
US5898897A (en) * 1996-10-18 1999-04-27 Samsung Electronics Company, Ltd. Bit stream signal feature detection in a signal processing system
JP4013286B2 (ja) * 1997-01-22 2007-11-28 松下電器産業株式会社 画像符号化装置と画像復号化装置
US5955977A (en) 1997-03-31 1999-09-21 Sharp Laboratories Of America, Inc. System for avoiding start code emulation and long carry-over propagation
JPH11110915A (ja) * 1997-09-30 1999-04-23 Sony Corp 信号記録再生装置及び方法
US5946043A (en) * 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
GB9807208D0 (en) 1998-04-03 1998-06-03 Nds Ltd Method and apparatus for detecting a sequence in a bitstream
AU3573099A (en) * 1998-04-24 1999-11-16 Rockwell Science Center, Llc N-bit video coder and method of extending an 8-bit mpeg video coder
EP1018840A3 (en) 1998-12-08 2005-12-21 Canon Kabushiki Kaisha Digital receiving apparatus and method
US7551672B1 (en) 1999-02-05 2009-06-23 Sony Corporation Encoding system and method, decoding system and method, multiplexing apparatus and method, and display system and method
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
JP4292654B2 (ja) 1999-03-19 2009-07-08 ソニー株式会社 記録装置および方法、再生装置および方法、並びに記録媒体
GB2363279B (en) 1999-04-01 2003-10-22 Ravisent Technologies Inc Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences
GB2353653B (en) 1999-08-26 2003-12-31 Sony Uk Ltd Signal processor
JP3694888B2 (ja) 1999-12-03 2005-09-14 ソニー株式会社 復号装置および方法、符号化装置および方法、情報処理装置および方法、並びに記録媒体
GB9930788D0 (en) * 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for converting data streams
DE60310368T2 (de) * 2002-01-22 2007-03-29 Microsoft Corp., Redmond Verfahren zur verhinderung von startkode-emulation und stopfdaten

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101534438B (zh) * 2008-03-14 2013-02-13 瑞昱半导体股份有限公司 影音位流处理方法及装置
CN101800892A (zh) * 2010-03-04 2010-08-11 青岛海信信芯科技有限公司 多媒体码流识别的方法和装置
CN106933767A (zh) * 2017-03-10 2017-07-07 重庆湃芯微电子有限公司 一种适用于jesd204b协议的逗号检测和字对齐方法及系统
CN106933767B (zh) * 2017-03-10 2020-04-24 重庆湃芯创智微电子有限公司 一种适用于jesd204b协议的逗号检测和字对齐方法及系统
CN111886880A (zh) * 2018-04-09 2020-11-03 杜比国际公司 用于mpeg-h 3d音频的三自由度(3dof+)扩展的方法、设备和系统
CN111886880B (zh) * 2018-04-09 2021-11-02 杜比国际公司 用于mpeg-h 3d音频的三自由度(3dof+)扩展的方法、设备和系统
CN113993059A (zh) * 2018-04-09 2022-01-28 杜比国际公司 用于mpeg-h 3d音频的三自由度(3dof+)扩展的方法、设备和系统
US11375332B2 (en) 2018-04-09 2022-06-28 Dolby International Ab Methods, apparatus and systems for three degrees of freedom (3DoF+) extension of MPEG-H 3D audio
US11877142B2 (en) 2018-04-09 2024-01-16 Dolby International Ab Methods, apparatus and systems for three degrees of freedom (3DOF+) extension of MPEG-H 3D audio
US11882426B2 (en) 2018-04-09 2024-01-23 Dolby International Ab Methods, apparatus and systems for three degrees of freedom (3DoF+) extension of MPEG-H 3D audio

Also Published As

Publication number Publication date
TW200404229A (en) 2004-03-16
WO2003090470A2 (en) 2003-10-30
EP1500278B1 (en) 2014-08-27
HK1075565A1 (zh) 2005-12-16
US7248740B2 (en) 2007-07-24
JP4448334B2 (ja) 2010-04-07
WO2003090470A3 (en) 2004-03-11
JP2005523659A (ja) 2005-08-04
EP1500278A2 (en) 2005-01-26
CN100499824C (zh) 2009-06-10
TWI310137B (en) 2009-05-21
KR20040099461A (ko) 2004-11-26
US20040030665A1 (en) 2004-02-12
KR100895932B1 (ko) 2009-05-07

Similar Documents

Publication Publication Date Title
CN1656821A (zh) 防止非字节对齐和/或位移位位置起始码仿效的方法和系统
CN1168216C (zh) 文档管理设备,数据压缩方法和数据解压缩方法
CN1251493C (zh) 记录装置和方法、重放装置和方法
CN1100391C (zh) 具有防差错的可变长度编码
CN1618235A (zh) 用于防止起始码模仿和数据填充的方法和系统
CN1174332C (zh) 转换表达方式的方法和装置
CN1255800C (zh) 产生要记录的信息信号的方法和设备
CN1299255C (zh) 确定数据帧是否包含已编码附加数据的方法和设备
CN1593011A (zh) 适合数据压缩的方法和设置
CN1942931A (zh) 通过树型分层数据结构的有序横向结构描述比特流语法的音频比特流格式
CN1574953A (zh) 用于使用基于内容的视频时间线索来识别视频中的位置的过程和系统
CN1666520A (zh) 标识和分割嵌入在流中重复媒体对象的系统和方法
CN1282319C (zh) 帧同步电路
CN1647528A (zh) 元数据编辑装置、元数据再生装置、元数据分发装置、元数据检索装置、元数据再生成条件设定装置和元数据分发方法
CN101040535A (zh) 转换成中间格式的两步算术解码
CN1767395A (zh) 整数数据的无损自适应编码与解码
CN1595985A (zh) 内容提供装置和方法以及记录介质
CN1406057A (zh) Mpeg编码装置和mpeg解码装置以及编码程序
CN1343337A (zh) 数据库注释和获取
CN1610265A (zh) 算术解码/编码装置、携带终端、活动图像摄影及记录/重放装置
CN1366271A (zh) 数据变换装置、数据编码装置以及数据记录装置
CN1300399A (zh) 发送和接收设备、发送和接收系统、发送和接收方法
CN1675842A (zh) 算术编码的方法和设备
CN1282107C (zh) 一种对图像进行快速压缩和解压缩的方法
CN1650628A (zh) 用于支持mp4中的avc的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20050817

Assignee: Sony (China) Ltd.

Assignor: Sony Corp.

Contract record no.: 2012990000576

Denomination of invention: Methods and systems for preventing start code emulation at locations that include non-byte aligned and/or bit-shifted positions

Granted publication date: 20090610

License type: Common License

Record date: 20120806

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20050817

Assignee: Sony (China) Ltd.

Assignor: Sony Corp.

Contract record no.: 2012990000576

Denomination of invention: Methods and systems for preventing start code emulation at locations that include non-byte aligned and/or bit-shifted positions

Granted publication date: 20090610

License type: Common License

Record date: 20120806

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150424

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150424

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20090610