可变速率视频语法处理器的制作方法

文档序号:7583799阅读:139来源:国知局
专利名称:可变速率视频语法处理器的制作方法
技术领域
本发明涉及用于处理图象数据的解码器,该图象数据根据运动图象专家组(MPEG)规定的MPEG-2制式压缩,并特别涉及一种解码器,其中可为MPEG-2比特流的相应部分的解码安排不同的时间间隔。
在MPEG-2标准下执行的视频信号压缩本质上是可变速率的。根据一序列图象的空间频率内容或者根据该序列单个图像之间空间频率内容的差异,视频数据被压缩。
用于MPEG-2标准的语法在国际标准13818-2规则ITU-T H.262中发布,名称为“运动图像和相关音频信息的通用编码视频”,并且可从瑞士日内瓦的ISO/IEC获得,这里参考并结合其MPEG-2数字视频编码标准的宗旨。这个标准定义了用于传输音频及视频数据的几个数据记录层。为了简便起见,这里不对音频数据的解码进行描述。描述某一视频序列的已编码数据以几个嵌套层表示序列层、图象组层、图象层、条层和宏块层。除了宏块记录,每个层记录开始于一个识别该层的开始码。该记录包括首部数据和有效负荷数据。
序列层定义影响相对大量的连续图象解码的诸如图象尺寸和纵横尺寸比的参数。图象组层为较少量的图象定义参数,而图象层为单个图象定义参数。在一个图象的内部,条记录为多个宏块组成的图象的水平部分定义参数。
因而,实际图象数据存在于宏块层中。在一个典型MVPEG-2比特流中,宏块和条记录要比图象、图象组和序列记录多很多。相应地,通过使用在传统微处理器上运行的软件中所实施的算法,可解码序列记录、图象组和图象记录的首部。然而,在比特流中条记录和宏块记录更为常见,并且可通过使用专用硬件进行解码。
在一个典型的解码器中,用于对条和宏块记录的首部进行解码的电路由用于对宏块记录的有效负荷进行解码的电路限定。如果在宏块解码处理中有任何的变化,则通常会在处理条和宏块首部的电路中有一个相应的变化。例如,如果通过使用具有较小几何尺寸的半导体处理技术(例如,从一微米处理翻译为半微米处理)来实施一个现有的宏块解码器,则需要重新设计能够解码条和宏块首部的硬件,这样可适当的处理全部比特流。
本发明在用于对数字编码信号进行解码的装置中得以实施。该装置包括一个分析编码信号中首部信息的状态机器(state machine)。该状态机器定义与离散分析操作对应的状态。在状态机器中的每个状态包括该状态的限定处理时间。直到限定时间结束,才会执行从一个状态到下一个状态的转换,而不考虑由该状态执行的实际处理操作是否完成。每个状态的处理时间由与状态机器连接的微处理器设置。这些处理时间可根据图象内容而改变,或可改变这些处理时间以适应用来实施状态机器的电路中的变化。还可调整状态变化的处理时间以适应与状态机器连接的其它处理单元中的变化。
根据本发明的一个方面,状态机器对MPEG-2已编码图象数据进行解码,并为条和宏块层分析MPEG-2语法。
根据本发明的另一个方面,定义一个预定数量的解码周期以用于解码图象,并且微处理器调节分配的处理时间以使图象的全部处理时间适合该预定数量的解码周期。


图1所示为包括本发明的一个实施例的MPEG-2视频解码器的框图。
图2所示为适于在图1所示的视频解码器中作用的VLD解码器的框图。
图3所示为包括本发明的一个实施例的状态机器的状态图。
图4所示为用于描述当在图3所示的搜索0状态时,由状态机器所执行的处理的流程图。
图5所示为用于描述当在图3所示的搜索1状态时,由状态机器所执行的处理的流程图。
图6所示为用于描述当在图3所示的搜索2状态时,由状态机器所执行的处理的流程图。
图7所示为用于描述当在图3所示的开始码状态时,由状态机器所执行的处理的流程图。
图8所示为用于描述当在图3所示的条状态时,由状态机器所执行的处理的流程图。
图9所示为用于描述当在图3所示的X条信息状态时,由状态机器所执行的处理的流程图。
图10所示为用于描述当在图3所示的宏块地址状态时,由状态机器所执行的处理的流程图。
图11所示为用于描述当在图3所示的宏块类型状态时,由状态机器所执行的处理的流程图。
图12所示为用于描述当在图3所示的宏块量化器状态时,由状态机器所执行的处理的流程图。
图13所示为用于描述当在图3所示的矢量状态时,由状态机器所执行的处理的流程图。
图14所示为用于描述图13所示的流程图的程序GET VECT的流程图。
图15所示为用于描述当在图3所示的编码块状态时,由状态机器所执行的处理的流程图。
图16所示为用于描述当在图3所示的等待状态时,由状态机器所执行的处理的流程图。
图17所示为用于描述当在图3所示的块状态时,由状态机器所执行的处理的流程图。
图18所示为用于描述当在图3所示的跳跃状态时,由状态机器所执行的处理的流程图。
图19所示为用于描述当在图3所示的结束状态时,由状态机器所执行的处理的流程图。
图20,21和22所示为在分别对帧间编码宏块、预测(predictively)编码宏块和双向预测编码宏块进行解码时,由图3的状态机器执行的实施例的状态转换。
尽管本发明是根据用于MPEG-2数据流的语法分析程序描述的,但可以考虑使用各种各样的数字数据协议来实施本发明,其中希望把分析协议的语法作为全部信号处理操作的一部分。因而,在随后的技术资料中,MPEG-2语法作为数字信号的协议的一个例子。
图1为体现本发明的一个示例性的解码器系统的框图。这个系统包括三个部件一个解码处理器110、一个高带宽存储器120及一个控制微处理器130。用在本发明的示例性实施中的高带宽存储器120是一个RAMBUS存储器系统,它可从NEC和东芝得到。
简单地说,图1所示的解码器运行如下。第一步,解码器集成电路(IC)110由某一个配置中的微处理器130启动。例如,如果使用解码器来解码525P信号,则合适的控制值经微处理器接口112提供到解码处理器110的内部电路。为了清楚起见,忽略了微处理器130和在IC110中的每个元件之间的控制总线。这个总线可是如一种传统的I2C总线。
一旦启动IC110,则输入比特流提供给分析程序116。参考图2,如下所述,该分析程序在存储器120存储比特流。另外,分析程序识别序列、图象组和图象层的开始码并且告知微处器130这些存储的开始码的存储位置。在图1所示的示例性解码器中,微处理器将这些层的首部信息进行解码。
DRAM控制和地址发生器126控制RAC接口170以将比特流数据存储到存储器120,在本发明的示例性实施例中,保留存储器120的一部分以用作一个存储输入比特流的缓冲器。这个缓冲区域对应由MPEG-2标准规定的VBV缓冲器。
在比特流数据写入存储器120的VBV缓冲区域后,该数据从存储器120中读出并且存储到缓冲存储器121中,并且在DRAM控制和地址发生电路126的控制之下。存储器121是一个FIFO存储器,在比特流语法的指导下,该存储器由存储器120以脉冲串(bursts)的方式填充并且由可变长度解码器(VLD)118清空。
VLD118分析比特流的条和宏块层以产生量化的离散余弦变换系数值的块。这些值的块应用于一个FIFO存储器128。这个FIFO存储器缓冲在一端的VLD118和另一端的宏块解码电路132之间的数据。这个存储器还可执行MPEG-2标准定义的反向扫描功能。电路132包括一个反向量化器134,它将量化的系数值转换成一个统一的制式,并且反离散余弦(IDCT)处理器将频域系数转变为空间域象素值或差分象素值。反向量化器134和IDCT处理142包括相应的存储器136和144以帮助处理操作。由电路132提供的输出数据是象素值或差分象素值的块。
在块中的值为差分象素值的地方,它们与运动补偿处理器161产生的先前已解码的图象帧的值相结合,运动补偿处理器161包括加法和消波电路158和160。接着,这些电路获得由半象素和内插电路166提供的先前解码的帧的图象数据。内插电路166从使用缓冲存储器168的先前已解码的帧获得图象的图象元素(象素)。这些存储器的数据值是通过DRAM控制和地址发生电路126由存储器120提供的。
运动补偿处理器161产生的已解码图象数据存储到缓冲存储器162和164中。来自缓冲存储器162和164的解码图象数据被存储到存储器120中以用于显示,或作为解码运动补偿编码数据的参考数据使用,该运动补偿编码数据来自最近接收的象场或帧。显示的数据以块制式存储到存储器120中,并以光栅扫描的制式传输到存储器174中以提供给在显示处理器175控制下的显示装置(未示出)。
还连接屏上显示(OSD)处理器171以通过DRAM控制和地址发生器126及RAC接口170向存储器120提供数据并从存储器120接收数据。在本发明的示例性实施例中,OSD处理器171产生用户菜单和重叠在显示图象上的闭合字幕文本。
如上所述,VLD处理器118将比特流中的条或宏块信息进行解码,并且将解码的量化系数值传送到宏块解码电路132。电路132执行的处理包括为单个的象素值的块计算反离散余弦变换。对于帧频为每秒30帧的高清晰度图象来说,希望执行的操作越快越好,这是因为在高清晰度视频图象帧中有大量的块。如果仅解码标准清晰度图象(即,MP@ML),则这个操作不重要。因而根据将要处理的图象的类型,希望通过使用一个非常快的处理技术(如2毫秒)或使用一种较慢的处理技术(即,1毫秒)来实施宏块解码器。
改变在其中使用宏块解码器的处理技术改变宏块处理的速度并且影响全部系统的同步。如果VLD处理器118以与宏块解码器132相同的技术来实施,由这两个解码器执行的处理步骤不会按比例变化。因而,对于一个给定的宏块解码器处理过程来说,希望全部重新设计VLD处理器118。
另一方面根据本主题发明,VLD处理器118可设计成一个状态机器,其中可为从一个状态转换到另一个状态所要求的时间编程。这样,如果处理技术中的一个变化使得VLD处理比特流比宏块解码器132所提供的要快的话,则为了使VLD的处理与宏块解码器的处理同步,可重新编程VLD以增加所选状态转换的要求时间。
图2所示为根据本发明的一个可变长度解码器118的框图。如图2所示,通过移位多路复用器210,接收来自存储器121的压缩MPEG2视频数据流。该移位多路复用器210将比特流的48比特提供到可变速率处理器212、VLC检查表214和宏块参数解码器220。VLC检查表214保存几个从宏块首部检索的值。分析程序212使用这些值以将可变长度编码DCT系数值转换成提供给MPEG2可变速率分析程序212的固定长度系数值。由VLC检查表保存的这些值包括宏块寻址值、宏块类型、宏块图案和宏块运动矢量。鉴于各级记录的首部信息不是可变长度编码,这个信息可通过可变速率分析程序直接从比特流中获得。解码器212还与分析程序速率检查表216连接,如下参见图3至22所述,该检查表定义在全部MPEG-2语法中限定的一组语法项中的每一个的分析程序的时间。这些语法项目(syntactical items)中的每一个由参见图3如下所述的分析程序212的状态机器所实施的相应的状态来分析。通过微处理器130加载并且它的值由可变速率分析程序212读出。
如上所述,VLD118仅分析MPEG2语法的条和宏块层。该语法的序列、图象组和图象层由微处理器130分析。经图象解码参数块218,与条和宏块记录相关的参数值由微处理器130提供。
可变速率分析程序212将宏块解码为单个的DCT系数值的块。这些从宏块层解码的系数及其它的首部项提供到宏块参数解码器220。这个解码器将DCT系数和运动矢量提供给宏块解码电路132。当解码器132断言信号READY的时候,控制电路222与可变速率分析程序212连接以将DCT系数的块提供给宏块解码器132。
图3所示为图1中的VLD处理器118的状态机器实施的状态图。这个状态机器将条和宏块记录的解码分成15个状态。参考图4至19,每个状态均作详细说明。
这15个限定的状态包括四种状态搜索0,310;搜索1,312;搜索2,314;及开始码,316。这些状态定位开始码,特别是比特流中的条开始码。当一个条状态码被识别时,状态机器转换至条状态318。
状态机器从条状态318转换至X条信息状态320和宏块地址状态322。状态322开始解码比特流的宏块首部部分。在步骤322计算完宏块地址之后,状态机器转换到状态324以通过包括在比特流中的宏块首部信息决定宏块的类型。在状态324确定宏块的类型之后,状态机器转换状态326以检索宏块量化信息,并且通过状态328,检测任何存在的宏块的运动矢量。如果在步骤326确定宏块是一个解码的宏块,控制转换到状态330以处理解码的宏块。否则,在状态326和状态330之后,控制转换至状态332以等待,直到宏块解码器准备好接收下一个系数值的块为止。
可以按两种方式跳跃宏块。第一,在MPEG-2语法中,标记一些宏块为MPEG-2语法中的跳跃宏块。这些宏块记录具有首部信息但无系数值。宏块可被跳跃的第二种方式是,如果宏块解码器在比特流中遇到一个错误并且跳过条中块的剩余部分,在这两种情况的任一情况下,跳跃状态334满足等待状态332。当满足等待状态且宏块解码器132接受系数值的下一个系数值的块的时候,状态机器转换到状态336以向宏块解码器132提供系数值。提供了这些值后,状态机器转换到状态338以决定是否还有宏块存在于这个条中,在此情况下状态机器转换到状态322;或者决定是否一个新的条被处理,在此情况下状态机器转换到状态310。
如上所述,微处理器分配一个完成时间,在该时间,状态图中的任何状态转换将在进入该状态之后发生。在这个执行过程中,在一个状态中发生的任何处理都可在这个时间间隔发生。直到由该时间段指示的系统时钟周期的值过去后,实际的状态转换才会发生。这个执行过程允许VLD处理器相应地改变以适于处理较短或较长项的语法,而不是被设计成为对每个语法项执行最差情况的语法处理。
例如,在MPEG标准中,宏块可被定义为一个其中可包括四个运动矢量的双主(dual-prime)宏块。另一方面帧内编码宏块没有运动矢量。当状态机器在解码一个帧内编码宏块的时候,可分配给矢量状态一个少的或为零的处理时间。然而,当该系统解码一个双主(dual-prime)宏块的时候,分配给矢量状态的处理时间可能是正常状态处理时间的两倍,从而允许很好地将附加运动矢量进行解码。
图4是描述在状态搜索0 310中的状态机器运行的流程图。这个处理的第一步是步骤412,其中可变速率分析程序212等待,直到用于前个状态的处理时间过去并且为状态搜索0读取分析程序速率检查表216为止。从表216返回的值定义一些系统时钟脉冲,它们将在从状态机器的状态搜索0转换到另一个状态之前消逝。搜索0处理的第一步是步骤414,其中输入比特流被分析以决定比特流中的下一个字节是否代表一个条开始码值。适用于本主题应用的该开始码值是条开始码,根据图象帧中条的垂直位置,它可具有的值为0×01至0×AF。
如果在步骤414发现条开始码的值,则状态机器的下一个转换是到参见图8下述的条状态318。如果在步骤414没有发现条开始码的值,则在搜索0中的下一个步骤416决定比特流中的下一个字节是否对应一个开始码前缀。如MPEG-2标准所定义的,一个开始码前缀是一串23个0值比特接着一个单个1值比特。为了确定在比特流中是否已经发现了开始码前缀,状态机器清点在由分析程序单独分析的任何0数组中零的个数。这样,在决定是否在比特流中发现了开始码前缀时,步骤416决定下一个字节是否具有一个1值,并且决定是否至少有再个零值在紧接着这个1值字节之前被清点。如果满足这个情况,则可在步骤416发现开始码前缀并且状态机器的下一个状态是开始码状态316。否则,控制转换到步骤418。
在步骤418,搜索0处理决定比特流中的下一个字节是否代表多于一个的零值字节。如果是,则这些零值字节从比特流中移去,现有的零值字节数被存储到搜索0状态的本地变量(未示出)中,并且搜索2状态314标记为状态机器的下一个状态。否则,执行步骤320以确定比特流中的下一个字节为零。如果是,这个零值字节从比特流中移去,则现有的零数值增加一个并且状态机器的下一个状态是状态搜索1。如果比特流不包括一个单个的零字节,比特流中的下一个字节必须为一个非零。相应地,这个字节由比特流中移去并且控制转换到步骤412。本质上说,这是一个从状态搜索0到其自身的转换。在步骤412,搜索0状态310等待,直到状态搜索0的前一个分配时间过去并且获取到状态搜索0的新的分配时间为止。
图5是状态搜索1的流程图。搜索1状态312的处理开始于步骤510,步骤510等待,直到前一个状态的分配时间过去并且从分析速率检查表216(图2示出)中获取到状态搜索1的当前时间为止。在为状态搜索1获取到分配时间后,执行步骤512以决定比特流中的下一个字节是否与条开始码值对应。如果是,控制转换到条状态318。如果在步骤512没有发现条开始码,则执行状态514以决定比特流中的下一个字节是否与一个开始码前缀对应。如果在步骤514中发现前缀,则状态机器转换到开始码状态316。如果在步骤514没有发现开始码前缀,则步骤516决定比特流中的下一个字节或下面的字节是否有一个零值。如果有,状态机器的下一个状态转换是到搜索2状态314。如果没有,则比特流中的下一个字节不是状态机器的下一个转换,并且回到搜索0状态310。
图6是描述在搜索2状态314执行的处理的流程图。这个状态处理零值填充比特,这些零值填充比特在MEPG比特流中的某个开始码之前插入。搜索2状态314开始于步骤610,其中状态机器等待,直到前一个状态的分配的时间已经过去且随后从分析程序检查表216中获取搜索2状态的当前的分配时间为止。在步骤610之后,控制转换到步骤612以决定比特流中的下一个字节是否与一个条对应。如果是,则状态机器的下一个转换是到条状态318。否则,执行步骤614,其中搜索2处理决定比特流中的下一个字节是否与一个开始码前缀相对应。如果在步骤614遇到一个开始码前缀,状态机器的下一个状态是开始码状态316。否则,控制转换到搜索2处理的步骤616。步骤616决定比特流中的下一个字节是否为零。如果是,这些零值字节从比特流中移去并且控制转换到步骤610。这实质上是从搜索2回到其自身的转换。如果比特流包括一个长序列填充比特,状态搜索2将继续返回其自身,直到所有的填充比特从比特流中移去为止。在步骤616,如果比特流中的下一个字节不是0,则状态机器的下一个状态转换是到参考图4如上所述的搜索0状态310。
图7描述的是在开始码状态316中的状态机器运行的流程图。这个处理的步骤710等待前一个状态完成并且从检查表216获取当前分配给开始码状态的时间值。如上所述,如果在比特流中发现一个开始码前缀,则进入开始码状态。在步骤712,开始码前缀从比特流中移去并且检查比特流的下一个字节以决定它们是否与条开始码值对应。如果对应,状态机器的下一个状态转换是到条状态318。否则,开始码值不是一个条开始码值并且状态机器的下一个状态是搜索0状态310。
图8描述的是条状态318中的状态机器运行的流程图。在步骤810,该处理等待前个状态处理完成并且由分析程序速率检查表216获取当前的条处理的分配时间。如表1所示,参考上述的MPEG-2的规格的条首部的语法图,在条首部中的第一项是条的量化度信息。
表1宏块宏块(){当(下一个比特()=`0000 0001 000`)时宏块_离开宏块_地址_增加宏块_模式()如果(宏块_量化)量化器_度_码如果(宏块_运动_向前‖(宏块_内&&取消_运动_矢量)运动_矢量(0)如果(宏块_运动_向后)运动_矢量(1)如果(宏块_内&&取消_运动_矢量))标记_比特如果(宏块_图案)已编码_块_图案()为了(i=0;i<块_计数;i++){块(i)}}在宏块语法中使用的术语由上述所参考的MPEG-2视频规范定义。
在步骤812,从比特流检索这个信息并且被存储。在步骤814,检查比特流中的下一个比特以决定是否为这个条定义了附加的信息。如果是,则X条信息状态320是状态机器的下一个状态。否则,接着附加比特的下一个信息是宏块的开始。宏块的处理开始于状态机器到宏块地址322的转换。
图9所示为在状态X条信息320中的状态机器运行的流程图。在等待前个状态完成及在步骤910为X条信息状态获取当前分配的时间之后,则请求步骤912以从比特流中去除附加的信息。在步骤914,该处理检查紧接着移去的附加信息记录的字节以决定是否还有另外的附加信息记录包括在条首部中。如果有,控制转换到步骤910,这实质上是一个从X条信息状态320到其自身的转换,从而移去下一个附加信息记录。一旦从条首部去除了所有的附加信息记录,则步骤914使得状态机器的下一个状态转换是到状态宏块地址322。
图10是描述由状态宏块地址322执行的处理的流程图。在等待前一个状态完成且从分析程序速率检查表216获得状态宏块地址的当前分配的时钟循环的数值之后,图10所示的处理在步骤1012计算宏块地址。在MPEG标准中,用于条的开始码被编码以指示重现图象上的条的垂直位置。另外,如表3中所示的宏块的MPEG-2语法,在宏块记录中的第一项是一个地址增加值,它定义条中宏块的地址。步骤1102检索来自比特流的开始码值和地址增加值并且使用当前条开始码的值来计算图象中的宏块的地址。在步骤1012之后,状态机器的状态转换是到状态宏块类型324。
图11所示描述了由状态宏块类型324执行的处理的流程图。在步骤1110中状态机器等待前个状态完成且获取了当前的状态宏块类型状态的分配时间之后,执行步骤1112以从宏块首部获取宏块类型场。
该宏块类型决定由宏块执行的运动补偿处理是否是基于帧或基于场,并且决定宏块的DCT解码是否是基于帧或基于场。在步骤1114,这些值由状态机器储存。在步骤1114之后,状态机器的下一个状态是宏块量化器状态326。
图12所示为在宏块量化器状态326期间执行的处理的流程图。如下所述,当这个状态包括到从宏块获取运动信息的矢量状态的状态转换的时候,对于每个宏块来说,可进入这个状态几次。在第一次请求之后,在状态326的请求期间,为了确保宏块语法被很好地翻译,定义了几个波尔变量QSCALE,GOT FORWARD,及GOT BACKWARD。这些波尔变量的使用将在下面描述。
在步骤1210,状态机器等待前个状态的完成并且获取当前的用于宏块量化器状态的分配时间。在步骤1212,状态机器测试波尔状态变量Q SCALE以决定是否已经获得了这个宏块的量化度编码。如果没有,则在步骤1214,宏块量化器处理从比特流获取下一个数值以作为宏块的量化度编码,并且在步骤1216设置波尔变量GOT Q SCALE。接着在步骤1218,宏块量化器处理测试波尔变量GOT FORWARD以决定是否为这个宏块获取了前向运动矢量。如果不是,则在步骤1220,设置波尔变量GOT FORWARD并且状态机器的下一个状态设置为矢量状态328。然而,如果在步骤1218变量GOT FORWARD被设置,则控制转换到步骤控制1222以测试波尔变量GOT BACKWARD。如果为该宏块获取了反向运动矢量,则设置这个波尔变量。如果没有,控制转换到步骤1224,在其中设置波尔变量GOTBACKWARD并且状态机器的下一个状态设置到矢量状态328。如果在步骤1222设置了波尔变量GOT BACKWARD,则执行步骤1226以决定在宏块首部中是否存在一个标记比特。如果有,则执行步骤1228以从比特流中去除标记比特并且控制转换到步骤1230。如果宏块首部不包括一个标记比特,则在步骤1226后还执行步骤1230,在步骤1230,状态宏块量化器决定宏块是否包括一个编码块图案。如果包括,状态机器的下一个转换是到编码块状态330。否则,宏块的块准备好到宏块处理器132(图1示出)并且状态机器的下一个状态是等待状态332。
图13和14是描述矢量状态328中的状态机器运行的流程图。在步骤310,状态机器等待前个状态完成并且从分析程序速率检查表216获取矢量状态当前的分配时间。如上参考图12所述,矢量状态被请求以获取一个前向运动矢量或一个反向运动矢量。在MPEG标准中,宏块可设计为一种具有一个单个前向运动矢量的预测宏块,一种双向预测宏块,该双向预测宏块具有一个前向运动矢量和一个反向运动矢量,或设计成一种双主(dual-prime)宏块,在这种情况下,双主宏块具有两个前向运动矢量及两个后向运动矢量,每个场具有一个前向矢量。
在矢量处理的步骤1312,测试宏块首部以决定宏块是具有一组运动矢量还是两套运动矢量。如果宏块具有两套运动矢量,控制转换到步骤1314,在该步骤,从宏块首部获取第一运动矢量的运动垂直场选择值,并且转换控制到步骤1320。步骤1320请求处理GET VECT从两矢量组的第一运动矢量的宏块首部获取实际的运动矢量信息。参考图14,这个步骤下面将作详细描述。在步骤1320之后,执行步骤1332,该步骤获取并储存第二运动矢量的运动垂直场选择值。在步骤1322之后,再一次在步骤1324请求处理GETVECT以从比特流中为运动矢量组的第二矢量获取运动矢量值。在步骤1312,如果该处理确定宏块仅包括一个单个的运动矢量,则控制转换到步骤1316,它决定该单个运动矢量是否包括一个运动垂直场选择值。如果包括,则在步骤1318,这个信息从运动矢量首部检索并且控制转换到步骤1324以获取实际的矢量信息。在1324之后,状态机器的下一个状态是宏块量化器状态326。在矢量状态328之后重新进入这个状态以确保不需为宏块获取其它的运动矢量。即使对于双向解码图象的双主(dual-prime)宏块来说,对于一个给定的宏块也仅需两个通过宏块量化器状态。
图14是描述图13的步骤1320和1324所示的处理GET VECT运行的流程图。步骤1412是这个处理的第一步,它从宏块的运动矢量信息获取水平运动编码。在步骤1414,运动矢量信息的下一个比特是从比特流中获取,以决定是否有这个运动矢量的剩余的信息。如果有,则在步骤1416从比特流中检索剩余的信息并且将其存储。在步骤1418和1420测试比特流中的下一个信息以决定运动矢量是否是双主(dual-prime)运动矢量。步骤1422,1424,1426,1428和1430重复上面的处理,不同的是这些步骤获取的是垂直运动矢量信息。步骤1432是处理GET VECT的结束。在这个步骤之后,该处理回到紧接着GET VECT请求的矢量状态328中的位置。
图15所示为由状态机器的编码块状态330执行的处理的流程图。在步骤1510,编码块处理等待前个状态完成并且从分析速率检查表216为编码块状态获取当前分配的时间值。在步骤1512,该处理从宏块首部获取编码块信息。一旦在步骤1512获取了编码块信息,则宏块中的块准备好传送到宏块处理器132,并随即状态机器使等待状态332成为下一个进入的状态。
图16所示为等待状态332运行的流程图。在步骤1610,状态机器等待前个状态完成并且从分析速率检查表216获取当前分配的时间或等待状态。在步骤1612,等待处理决定由宏块解码器132提供的READY信号是否指示解码器132准备好接收另一个宏块。如果没有准备好,步骤1612返回其自身并继续测试这个由宏块解码器132提供的信号。
一旦宏块解码器指示它准备好接受用于解码的宏块,控制转换到步骤1614以决定宏块是否是一个跳跃宏块。如上所述,宏块在两种情况下被跳跃1)当宏块标记为在MPEG-2语法中被跳跃时及2)当宏块解码器遇到一个错误且遇到分析程序212跳过条记录中的剩余宏块的信号。在步骤614,如果设置宏块的跳跃标记,则状态机器的下一个状态是跳跃状态334。否则,状态机器的下一个状态是块状态336。
图17所示为描述块状态336运行的流程图。在步骤1710,该处理决定被处理的块是否是当前宏块中的最后的一个块。如果是,状态机器的下一个状态设置为结束状态338。否则执行步骤1712以决定宏块解码器132是否已经断言READY信号。当宏块解码器132准备好为反向量化和反离散余弦变换处理接收一个块的时候,它提供一READY信号。当它准备好接收块时候,执行步骤1714以转换控制到宏块解码器132。在步骤1714处理一个块之后,控制转换到如上所述的步骤1710。这个处理将继续,直到宏块中的所有的块被处理为止。
图18所示是描述跳跃状态334运行的流程图。除了步骤1814处理跳跃块不同外,跳跃状态实质上与块状态是相同的。这个步骤,或者1)如果在MPEG-2语法中宏块标记为跳跃宏块,则不做任何的工作,或者2)如果一个块因为宏块解码器中的一个错误而被跳跃,则移去与比特流中被跳跃的块对应的字节。这个处理将继续,直到宏块中的所有的块被处理为止。在最后的一个块被处理后,步骤1810把控制转换到等待状态332。
图19所示为用于结束状态338的状态机器运行的流程图。在步骤1910,状态机器等待前一个状态完成并且从分析速率检测表216获取为结束状态分配的当前时间。在状态1912,状态机器决定当前条的处理是否完成。如果完成,控制转换到步骤1914以等待,直到解码器准备好处理另一个条为止。参见图4如上所述,在步骤1914之后,控制转换到搜索0状态310以开始搜索下一个条的开始码。
在步骤1912,如果在这个条中有更多的宏块需要处理,则执行步骤1916以决定比特流中的下一个字节是否与开始码对应。如果不是,则在条中至少具有多于一个的宏块,并且设置状态机器的下一个状态为宏块地址状态322,如上所述参见图10。如果是,则在步骤1916,比特流中的下一个字节确实与一个开始码对应,随后在条中的最后的宏块被处理并且将搜索0状态310设置为状态机器的下一个状态。
图20,21和22描述的是本发明的状态机器的应用。这些图中的每一个均显示了一序列用于解码一个宏块的状态。图20示出了帧内或场内编码宏块的分析,该宏块是它的条中的第一宏块。从结束状态338开始,状态机器转换到搜索0状态310,随后转换到搜索1状态312,然后转换到开始码状态316。在其处理的这一位置处,状态机器遇到比特流中的一个开始码。还是在状态316,开始码被确定为条开始码使得状态机器的下一个状态为条状态318,在其中条首部信息被解码。
状态338、310、312、316和318中的每一个均要求一个相对少量的处理。相应地,这些状态中的每一个可在状态周期时间内完成。然而,在该处理的下一个状态,状态宏块地址322需要的处理时间多于图20所示的前面的任何一个状态处理时间。在分析速率检查表216中,分配给这个状态的处理时间是先前的任一个状态时间的两倍。这在图中以状态322的粗边来指示。接着宏块地址状态322,状态机器转换到状态宏块类型324,宏块量化器326并且随后转换到等待状态332以等待宏块解码器132来接受未解码宏块的块。
图21所示为在解码一个不是条中的第一宏块的预测编码块(P-帧或P-场)时状态机器的运行。图21开始于结束状态338,接着是宏块地址状态332,如图20所示,结束状态需一个状态时间,而状态宏块地址332需两个状态时间。在状态332之后,状态机器转换为宏块类型状态324和宏块量化器状态326。在状态326之后,状态机器转换为矢量状态328。由于在矢量状态的处理比在其它状态中更广泛,因此分配给矢量状态328两个状态处理时间。参考图12和13,如上所述,在处理矢量状态之后,状态机器再一次回到宏块量化器状态以确保不需要获得其它的运动矢量。由于这是一个预测解码宏块,所以比特流仅包括一个运动矢量。在宏块量化器状态326之后,状态机器转换至解码块状态330并随后转换到等待状态332。
图22描述的是当处理一个也是双主(dual-prime)宏块的双向解码宏块时状态机器的运行。如上所述,这个宏块有四套运动矢量。图22所示的状态机器的前五个与图21中的相同。然而,在获得第一个运动矢量后,矢量状态被请求一个第二时间,从而为参考图13上述的双主(dual-prime)宏块获得第二套前向运动矢量。接着矢量状态的第二请求,状态机器转换到宏块量化器状态326并随后再一次转换到矢量状态328以获得第一反向运动矢量。由于这是一个双主(dual-prime)运动矢量,矢量状态再一次被请求以获得第二反向运动矢量。接着矢量状态的第二请求,宏块量化器状态326再一次被请求,接着是等待状态332。
如果为图3所示的状态机器的每个状态时间分配一些时钟周期,n,则图20的内部解码宏块的语法处理跨跃10个状态时间而图21的预期解码宏块的处理跨跃10个状态时间,并且图22的双向解码宏块的处理跨跃16个状态时间。
在一个传统的可变长度解码器中,在比特流中分配给所有宏块的语法处理的时间需要与最差情况处理的时间一致(即,图22示出的)。然而,通过相应地将处理时间分配给各种状态,根据本发明的一种解码器可在条和宏块的语法处理中获得大量的时间存储。这个时间存储可允许一个较慢的语法处理器与一个相对快的宏块解码器一起运行。另外,由于状态延迟的增加,另一种大的语法处理器可能会因为仅仅提高其状态延迟而减慢,这样它可与一个较慢的宏块解码器兼容。因而,一个给定的可变速率分析程序结构12和宏块解码器132的集成电路的实施可按比例增大或缩小并且在合成(resulting)ICS中的任何定时差异可通过调整分析程序212的状态定时而得到补偿。
尽管本发明是根据用于MPEG-2解码器的宏块语法处理器来描述的,但可以考虑用任何处理输入信号以获得由另一个处理器处理的信息的状态机器来实施本发明。在这种方式下,所用的前处理器要与各种各样的其它处理硬件兼容。
尽管本发明是根据一个示例性的实施例来描述的,但可以考虑在附录的权利要求书的范围之内,如上面所概括的来实施本发明。
权利要求
1.用于处理符合一种预定协议的数字编码信号的装置,该协议定义多种记录类型,每种记录类型包括首部信息和有效负荷信息,该装置包括一个状态机器,它分析至少是多种记录类型中的所选类型的首部信息,其中状态机器定义执行离散分析操作的状态及通过分析数字编码信号确定状态之间的转换;装置,用于为包括第一状态和第二状态的相应状态时间的多个状态类型定义相应的处理时间;处理装置,用于执行由第一状态指示的处理步骤;及延迟装置,用于等待,直到相应的为第一状态所定义的处理时间过去以转换到第二状态为止。
2.根据权利要求1所述的装置进一步包括,用于适应地规定每个状态类型的相应的处理时间的装置,其中每个状态的处理时间响应于记录的有效负荷数据而改变。
3.根据权利要求1所述的装置进一步包括,用于适应地规定每个状态类型的相应处理时间的装置,其中每个状态的处理时间响应于其它的与状态机器连接的处理单元中的变化而改变。
4.用于处理MPEG-2编码信号的装置,该MPEG-2编码信号具有条级别记录,每个条级别记录具有一个首部信息和多个宏块级别记录,每个宏块级别记录具有首部信息和多个频域系数值的块,该装置包括一个状态机器,包括一个分析条级别记录的首部信息的第一状态,及分析宏块级别记录中的首部信息的第二状态,从而从MPEG-2编码信号获取多个频域系数值的块,该状态机器包括装置,用于为第一和第二状态定义相应的处理时间;处理装置,用于执行由第一状态指示的处理步骤;延迟装置,用于等待,直到相应的为第一状态定义的处理时间过去以转换到第二状态为止,及处理装置,用于执行由第二状态指示的处理步骤处理多个宏块中的首部信息以从多个宏块中获取频域系数值的块;及宏块解码装置,用于将获取的频域系数值的块转换为空间域象素值。
5.根据权利要求4所述的装置,其中多个宏块包括预测编码宏块和双向预测编码宏块,该预测编码宏块的宏块首部包括一个单个运动矢量,而该双向预测编码宏块包括多个运动矢量,该装置进一步包括,用于为每一第一和第二状态适应地规定相应的处理时间的装置,其中第二状态的处理时间响应于预测编码宏块和双向预测编码宏块的处理而改变。
6.根据权利要求5所述的装置,其中分配一个预定的时间值以用于对MPEG-2数据信号的单个图象进行解码,并且用于适应地为第一和第二状态中的每一个规定相应处理时间的装置规定预定时间量的第一部分和第二部分以作为第一和第二状态的相应的处理时间。
7.根据权利要求4所述的装置进一步包括,适应地为每个状态类型规定相应的处理时间的装置,其中每个状态的处理时间响应于宏块解码装置中的变化而改变。
8.一种用于处理符合一种预定协议的数字编码信号的方法,该协议定义多种记录类型,每种记录类型包括首部信息和有效负荷数据,该方法包括通过在分析数字编码信号时执行状态机器中的相应状态的离散分析操作及在状态之间转换,分析至少是多种记录类型中所选的类型的首部信息;为包括相应的第一个状态和第二个状态的状态时间的多个状态定义相应的处理时间;执行由第一状态指示的处理步骤;及等待,直到相应的为第一状态定义的处理时间过去以转换到第二状态为止。
9.根据权利要求8的方法进一步包括,为每个状态类型适应地规定相应的处理时间的步骤,其中每个状态的处理时间响应于记录的有效负荷数据而改变。
10.根据权利要求1的方法进一步包括,适应地为每个状态类型规定相应的处理时间的步骤,其中每个状态的处理时间响应于状态机器外的记录上执行的处理中的变化而改变。
11.处理MPEG-2编码信号的方法,该MPEG-2编码信号具有条级别记录,每个条级别记录具有一个首部信息和多个宏块级别记录,每个宏块级别记录具有首部信息和多个频域系数值的块,该方法的步骤是分析第一状态中的条记录的首部信息并且分析宏块的首部信息,第一状态分析条级别记录的首部信息并且第二状态分析宏块记录中的首部信息,从而由MPEG-2编码信号获取多个频域系数值的块,包括的步骤如下为第一和第二状态定义相应的处理时间;处理第一状态中的条首部信息;等待,直到为第一状态定义的相应的处理时间过去以转换到第二状态,及处理第二状态中的宏块首部信息以从多个宏块中获取频域系数值的块;及将获取的频域系数值的块转换为空间域象素值;
12.根据权利要求11所述的方法,其中多个宏块包括预测编码宏块和双向预测编码宏块,该预测编码宏块的宏块首部包括一个单个运动矢量,而该双向预测编码宏块包括多个运动矢量,该方法进一步包括的步骤是,适应地为第一和第二状态中的每一个规定相应处理时间的步骤,其中第二状态的处理时间响应于预测编码宏块和双向预测编码宏块的处理而改变。
13.根据权利要求12所述的方法,其中分配一个预定的时间值以用于对MPEG-2数据信号的单个图象进行解码,并且用于适应地为每一第一和第二状态规定相应处理时间的步骤规定预定时间量的第一部分和第二部分以作为第一和第二状态的相应的处理时间。
14.根据权利要求11所述的方法进一步包括,适应地为每个状态类型规定相应处理时间的步骤,其中每个状态的处理时间响应于宏块解码装置中的变化而改变。
全文摘要
解码器含作为状态机器实施的语法分析程序。该状态机器定义多个状态,其中执行离散分析操作以解码MPEG-2比特流。其中每个状态建立不同处理时间。某状态结束前,即使其处理已完成,也不发生状态转换。每个状态处理时间由微处理器设置,据图象而变,或适应用于实施状态机器电路中的变化。可调处理时间以适应其它元件中的变化,它们与状态机器分开但根据状态机器执行处理。改变处理时间的一个方式是将图象处理与预定最大时间间隔一致。
文档编号H04N5/92GK1261701SQ9912597
公开日2000年8月2日 申请日期1999年10月9日 优先权日1998年10月9日
发明者罗伯特·T·瑞安 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1