具体实施方式
由于可能存在本发明的多种置换和实施例,将参照附图来举例说明并描述某些实施例。然而,这绝不是使本发明局限于某些实施例,而是应将其理解为包括本发明的精神和范围所涵盖的所有置换、等价物和替代。
在描述各种元素时可能使用诸如“第一”和“第二”之类的术语,但上述元素不应局限于上述术语。上述术语只用来将一个元素与另一个区别开。例如,在不脱离本发明的权利要求范围的情况下,可以将第一元素命名为第二元素,反之亦然。术语“和/或”应包括多个所列项目的组合或所述多个所列项目中的任何项目。
当一个元素被描述为“连接至”或“通向”另一元素时,应将其理解为直接连接至或通向另一元素,但是还理解为它们之间可能具有另一元素。另一方面,如果一个元素被描述为“直接连接至”或“直接通向”另一元素,则应理解为在它们之间不存在其它元素。
本说明书所使用的术语意图只描述某些实施例,而且绝不限制本发明。除非另外清楚地使用,否则单数形式的措辞包括复数含义。在本说明书中,诸如“包括”或“由...组成”之类的措辞意图指定特性、数目、步骤、操作、元素、部分或其组合,且不应将其理解为排除一个或多个其它特性、数目、步骤、操作、元素、部分或其组合的任何存在或可能性。
除非另外定义,否则本文所使用的包括技术术语和科学术语在内的所有术语的含义与本发明所属领域的技术人员通常理解的含义相同。应将在普通词典中定义的任何术语理解为具有在相关领域的环境中的相同意义,除非另外明确定义,否则不应将其解释为具有理想主义或过于***的意义。
在下文中,将参照附图来详细描述依照本发明的实施例的集成编解码器装置及其方法的一些实施例。与图号无关,同样或相应的元素被赋予相同的附图标记,并将不再重复同样或相应元素的任何多余说明。
图1示出了典型解码器的简要结构,以及图2示出了典型编码器的简要结构。
如图1所示,MPEG-4解码器100典型地包括可变长度解码单元110、反扫描单元115、反DC/AC预测单元120、反量化单元125、离散余弦反变换单元130和VOP重构单元135。显而易见的是解码器100可以根据应用的标准而具有可变结构,并且某些元素可以被不同的元素取代。
如果传输的位流经过语法解析,并提取了相应的报头信息和图像数据,则可变长度解码单元110通过使用预定霍夫曼表来确定量化离散余弦变换(discrete cosine transform,DCT)系数,反扫描单元115通过执行反扫描来生成与相应视频140具有相同序列的数据。换言之,反扫描单元115通过各种方法按照相反的扫描顺序输出相应的值。在编码中,在执行量化之后,可以根据频率范围的分布来确定扫描方向。典型地,可以以锯齿方式执行扫描方法。可替换地,可以以多种方式依据编解码器来执行扫描。
可以由可变长度解码单元110或用于在可变长度解码单元110之前处理位流105的元素集成地执行语法解析。在这种情况下,由于对相应的编码器和解码器应用相同的标准,所以仅仅由预定设置来处理语法解析,以对应于相关标准。
反DC/AC预测单元120通过使用频带处的DCT系数的大小来确定用于预测的参考块的方向。
反量化单元125执行相反地扫描的数据的反量化。换言之,反量化单元125通过使用在编码过程中指定的量化参数(quantization parameter,OP)来返回DC和AC系数。
离散余弦反变换单元130通过执行离散余弦反变换来评估实际的视频数据像素值以生成视频对象平面(video object plane,VOP)。
VOP重构单元135通过使用由离散余弦反变换单元130生成的VOP,解码视频信号并输出解码信号。
如图2所示,MPEG-4编码器200典型包括离散余弦变换单元210、量化单元215、DC/AC预测单元220、扫描单元230和可变长度编码单元235。
包括在编码器200中的每个元素执行解码器100的相应元素的反函数。这对于本领域的技术人员来说是显而易见的。简要地说,编码器200通过DCT和量化将视频信号(即数字视频像素值)转换成频率值以便执行编码。然后,编码器200执行根据信息的频率来区别相应位的长度,以便将其以压缩位流格式输出的可变长度编码。
图3示出了依照本发明的实施例的解码器的简要结构,以及图4示出了依照本发明的实施例的扩展位流的简要结构。
如图3所示,本发明的解码器300具有与常规解码器不同的结构(参照图1)。
换言之,向解码器300提供解码器描述和位流以便执行依照本发明的实施例的编码/解码方法。可以向解码器300提供作为编码视频数据的独立数据的解码器描述。可替换地,如图3所示,可以向解码器300提供其中集成解码器描述和位流的扩展位流305。当然,如果对应于解码器描述的信息被预先存储在解码器300的存储单元,则可以省略提供解码器描述。以下说明集中于相关数据在被提供给解码器300之前被包括在扩展位流中的情况。
依照本发明的实施例,解码器300可以包括划分单元310和解码处理单元320。很明显,可以将解码器300的元素中的至少一个(例如划分单元310、解码处理单元320、或解码处理单元320的元素中的至少一个)实现为软件程序(或程序代码的组合),该软件程序被设计成执行下述函数。
所述划分单元将输入的扩展位流305划分成编码的解码器描述313和典型位流316(在下文中称为“常规位流”)并将它们中的每一个输入到解码处理单元中。
划分单元310可以将编码的解码器描述313输入到描述解码器505中,将常规位流316输入到解码器形成520中。如上所述,如果编码的解码器描述313和常规位流316均作为独立数据被输入,则可以省略划分单元310。这里,常规位流316可以具有与图1的位流105同样或类似的格式。
扩展位流305的示例在图4中示出。参照图4,扩展位流305可以包括编码的解码器描述313和常规位流316。示出扩展位流305和编码的解码器描述313的图4仅仅是为了方便说明和理解。很明显,本发明的扩展位流305和编码的解码器描述313不限于图4的示例。
通过允许描述解码器505对编码的解码器描述313进行解码处理而生成的解码器描述590包括常规位流316的配置信息和与常规位流316的编码类型(或函数单元之间的连接信息)及函数单元的输入或输出数据的测量有关的信息。可以通过使用诸如文本描述或二进制描述之类的技术方法来写入解码器描述590。当然,如果将编码的解码器描述316实现为由解码器形成单元520来识别而没有描述解码器505的处理,则可以省略描述解码器505。
解码器描述590可以在被存储在描述存储单元510中之前被划分成部分解码器描述,诸如函数单元列表(functional unit list,FL)410、函数单元规则表(functional unite rule table,F-RT)420、函数单元CSCIT(functional unit CSCIT,FU-CSCIT)430、控制信号和上下文信息表(control signal and context information table,CSCIT)440、语法元素表(syntax element table,SET)450、语法规则表(syntax-rule table,S-RT)460和默认值表(default value table,DVT)470。显而易见的是组成解码器描述的每个部分解码器描述可以具有各种可变序列。
这里,可以使用FL 410、F-RT 420、FU-CSCIT 430和CSCIT 440来设置每个函数单元的连接(相关的部分解码器描述可以根据需要称为“第一解码器描述”)。
FU-CSCIT 440可以是用于工具箱(515)的每个函数单元(即用于解码处理的函数单元)与存储在CSCI存储单元532中的元素信息之间的映射的部分解码器描述。在这种情况下,元素信息可以充当工具箱515的每个函数单元(即用于解码处理的函数单元和/或用于语法解析的函数单元)的控制变量。
而且,CSCIT 440、SET 450,S-RT 460和DVT 470可以用于常规位流316的解析(相关的部分解码器描述可以根据需要称为“第二解码器描述”)。稍后将详细描述每个部分解码器描述的形式和函数。
描述解码器505通过对从划分单元310输入的编码的解码器描述进行解码来生成解码器描述314。然后,描述解码器505以能够被解码形成单元530(或解码方案530)识别的形式将解码器描述314划分成多个部分解码器描述,并将该部分解码器描述存储在描述存储单元510中。
将存储在描述存储单元510的每个部分解码器描述不必是典型的表。部分解码器描述能够被解码形成单元530(或解码方案530)识别就足够了。
可以通过描述解码器505的解码器描述分析,将诸如FL 410、F-RT420、FU-CSCIT 430、CSCIT 440、SET 450、S-RT 460和DVT 470之类的部分解码器描述存储在描述存储单元510。
例如,描述解码器505能够通过参考包括在显示每个部分解码器描述的区域中的表标识符来辨别每个部分解码器描述。解码器描述590不必包括对应于所有部分解码器描述的信息。解码器描述590可以包括编解码器号及档次(profile)和级别号(level number)。可替换地,解码器描述590可以包括仅用于某些部分解码器描述的编解码器号及档次和级别号。
在包括编解码器号及档次和级别号的情况下,描述解码器505可以从预先存储在描述存储单元510中的部分解码器描述中选择要在解码中使用的相应部分解码器描述,而不是为所有部分解码器描述或某些部分解码器描述生成新的部分解码描述。而且,在包括编解码器号、档次和级别号及修正信息的情况下,描述解码器505可以从预先存储在描述存储单元510的部分解码器描述中提取对应于相关编解码器的部分解码器描述,并通过应用修正信息来生成新的部分解码器描述。当然,在包括用于生成部分解码器描述的表描述,而不是包括编解码器号及档次和级别号的情况下,描述解码器505可以为所有部分解码器描述或某些部分解码器描述生成要在解码中使用的新的部分解码器描述。
图5示出了依照本发明的第一实施例的解码处理单元的简要结构,以及图6示出了依照本发明的第二实施例的解码处理单元的简要结构。图7示出了依照本发明的实施例的工具箱的结构,以及图8是示出依照本发明的实施例如何辨别函数单元(FU名称)的示例。
图5和6示出了解码处理单元320的每个实施例。
参照示出解码处理单元320的第一实施例的图5,解码处理单元320可以包括描述解码器505、描述存储单元510、工具箱515、解码器形成单元520和解码方案530。
解码器形成单元520包括FU检查单元522、信息处理单元524和信息传输单元526。
如果通过描述解码器505的处理来存储部分解码器描述,则FU检查单元522检查工具箱515是否包括用部分解码器描述(例如FL 410)编写的所有函数单元。如果工具箱515未包括用部分解码器描述编写的所有函数单元,则可以通过显示设备来显示错误消息,或者可以请求用户更新相关函数单元。当然,就通过通信网络更新相关函数单元的服务器设备来说,函数单元522可以通过通信网络来执行自动更新。
信息处理单元524根据每个部分解码器描述的函数将其分类,并以能够轻易地由解码方案530运行的数据形式来处理经分类的部分解码器描述。这是因为可以以不适合于解码方案530使用的格式(例如表格式)将部分解码器描述存储在描述存储单元510,或者可能必要的是需要解码方案530将更有效地使用的信息。
由于稍后将参照相关附图来详细描述所述函数和格式,下面简要描述经处理的数据的形式。
信息处理单元524根据部分解码器描述是被用于控制信号/上下文信息(CSCI)的生成或存储,还是用于函数单元的连接,对每个部分解码器描述进行分类。然后,信息处理单元524处理CSCI控制信息和连接控制信息。例如,可以使用诸如SET 450、S-RT 460、CSCIT 440和DVT 470之类的部分解码器描述来生成CSCI控制信息,并可以使用诸如FL 410、F-RT 420、S-RT 460和FU-CSCIT 430及DVT 470之类的部分解码器描述来生成连接控制信息。
例如,可以以基于XML的抽象解码器模型(abstract decoder model,ADM)类型来表示由信息处理单元524处理的CSCI控制信息或连接控制信息。下面是CSCI控制信息和连接控制信息的示例。当然,其不局限于表示CSCI控制信息和连接控制信息的类型。
首先,可以如下表示CSCI控制信息。
<CSCIs>
<csci_memory id=″C0″name=″CSCI#0″type=″integer″/>
<csci_memory id=″C1″name=″CSCI#1″type=″integer″/>
<csci_memory id=″C2″name=″CSCI#2″type=″array″/>
<csci_memory id=″C3″name=″CSCI#3″type=″integer″/>
<csci_memory id=″C4″name=″CSCI#4″type=″integer″/>
<csci_memory id=″C5″name=″CSCI#5″type=″integer″/>
<csci_memory id=″C6″name=″CSCI#6″type=″integer″/>
<csci_memory id=″C7″name=″CSCI#7″type=″integer″/>
<csci_memory id=″C8″name=″CSCI#8″type=″integer″/>
<csci_memory id=″C9″name=″CSCI#9″type=″integer″/>
<csci_memory id=″C10″name=″CSCI#10″type=″integer″/>
<csci_memory id=″C11″name=″CSCI#11″type=″integer″/>
<csci_memory id=″C12″name=″CSCI#12″type=″integer″/>
......
</CSCI>
接下来,可以如下表示连接控制信息。
<Network name=″Decoder″>
<Package>
<QID>
<ID id=″MPEG4Simple Profile″/>
</QID>
</Package>
<Port kind=″Input″name=″BITSTREAM″/>
<Port kind=″Ouput″name=″YUV″/>
<Instance id=″1″>
<Class name=″Parser″>
<QID>
<ID id=″c″/>
</QID>
</Class>
<Note kind=″label″name=″Stream Parser″/>
</Instance>
<Instance id=″2″>
<Class name=″VS″>
<QID>
<ID id=″c″/>
</QID>
<Note kind=″label″name=″Video Session″/>
</Class>
</Instance>
<Connection src=″″ src-port=″BITSTREAM″ dst=″1″
dst-port=″BITSTREAM″/>
<Connection src=″1″src-port=″CSCI″dst=″2″dst-port=″CSCI″/>
<Connection src=″1″src-port=″DATA″dst=″2″dst-port=″DATA″/>
<Connection src=″2″src-port=″YUV″dst=″″dst-port=″YUV″/>
</Network>
信息传输单元526可以将由信息处理单元524处理的CSCI控制信息和连接控制信息传输到解码方案530。特别地,信息传输单元526可以将CSCI控制信息传输到实际存储并使用CSCI控制信息的CSCI存储单元532,并将连接控制信息传输到控制每个函数单元之间的连接的连接控制单元534。如果CSCI存储单元532运行以存储CSCI控制信息,并且使用CSCI控制信息由连接控制单元534执行,则信息传输单元526显然可以将CSCI控制信息和连接控制信息传输到连接控制单元534。
解码方案530包括CSCI存储单元532和连接控制单元534。解码方案530还包括至少一个工作存储器,用于允许加载至少一个函数单元,和允许通过连接控制单元534的调用来执行预定过程。
参照其中示出解码处理单元320的第二实施例的图6,解码处理单元320可以包括描述解码器505、描述存储单元510、工具箱515、解码器形成单元520和解码方案530。
与图5相比,图6的解码处理单元320的解码方案530还可以包括解析函数单元。解析函数单元610执行位流的语法解析。解析函数单元610可以作为独立元素被包括在解码方案530。可替换地,通过允许解码方案530包括两个工作存储器,和允许连接控制单元534控制用于解码处理的函数单元仅被专门加载到两个工作存储器之一上,解析函数单元610仅被专门加载到所述两个工作存储器中的另一个上,显然能够实现相同的效果。在所有情况下,可以接连地或/和并行地执行位流的解析操作和解码操作。
而且,与图5相比,信息处理单元524另外处理语法解析控制信息,并将经另外处理的信息提供给解码方案530。这可以促使用来生成CSCI控制信息、连接控制信息和语法解析控制信息的部分解码器描述的函数改变。
换言之,信息处理单元524根据部分解码器描述是被用于控制信号/上下文信息(CSCI)的生成或存储、语法解析还是函数单元的连接,对每个部分解码器描述进行分类。然后,信息处理单元524处理CSCI控制信息、连接控制信息和语法解析控制信息。例如,可以使用诸如CSCIT 440之类的部分解码器描述来生成CSCI控制信息,和诸如FL410、F-RT 420和FU-CSCIT 430之类的部分解码器描述。可以使用诸如SET 450、S-RT 460、CSCIT 440和DVT 470之类的部分解码器描述来生成语法解析控制信息。
如上所述,可以以基于XML的抽象解码器模型(ADM)类型来表示由信息处理单元524处理的CSCI控制信息或连接控制信息。下面是语法解析控制信息的示例。
<syntax>
<syntax_element id=″S0″name=″Syntax#0″>
<process>
<cmd type=″READ″>
<parameter index=0>32</parameter>
<parameter index=1>B</parameter>
</cmd>
<cmd type=″EXPRES SION″>
<parameter index=0>(C0=(IBS==HEX:1B0))</parameter>
</cmd>
</process>
</syntax_element>
<syntax_element id=″S1″name=″Syntax#1″>
<process>
<cmd type=″READ″>
<parameter index=0>8</parameter>
<output type=″CSCI″>C1</output>
</cmd>
</process>
</syntax_element>
(......)
</syntax>
信息传输单元526可以将由信息处理单元524处理的CSCI控制信息、连接控制信息和语法解析控制信息传输到解码方案530。特别地,信息传输单元526可以将CSCI控制信息传输到实际存储并操作CSCI控制信息的CSCI存储单元532、将连接控制信息传输到控制每个函数单元之间的连接的连接控制单元534、并将语法解析控制信息传输到解析函数单元610。如果CSCI存储单元532运行以存储CSCI控制信息,并且使用CSCI控制信息由连接控制单元534执行,则信息传输单元526显然可以将CSCI控制信息和连接控制信息传输到连接控制单元534。而且,如果解析函数单元610在连接控制单元534的控制下执行位流的语法解析,则信息传输单元526显然可以将语法解析控制信息传输到连接控制单元534。
解码方案530包括CSCI存储单元532、连接控制单元534和解析函数单元610。解码方案530还包括至少一个工作存储器,用于允许加载至少一个函数单元,和允许通过连接控制单元534的调用来执行预定过程。
解析函数单元610可以是能够不管位流的编码格式,执行所有位流的语法解析的函数单元,或者可以是为一种位流的语法解析而特别生成的函数单元。换言之,将参照相关附图来详细描述作为用于执行语法解析的函数单元中的至少一个的解析函数单元610。
如图5和图6所示,可以以各种形式重新组合或生成本发明的解码器300,使得通过允许工具箱515的函数单元(即执行解码处理的解码函数单元或/和执行语法解析的解析函数单元610)被有选择地加载或解码,能够与编码格式无关地对输入位流进行解码。
如上所述,解码器形成单元520(或连接控制单元534)形成用于处理输入位流的解码器,并由在解码器形成单元520(或连接控制单元534)的控制下形成的作为解码方案530的实际解码器来执行位流的解码。结果,划分相互之间具有函数因果关系的两个处理单元使得通过使用一个编码器形成信息能够实现多个解码方案,从而允许解码器执行更高效的处理。
在下文中,将参照相关附图来描述图5或/和图6的解码处理单元320的每个元素的功能和操作。
如上所述,描述解码器505将输入的编码的解码器描述313解码成解码器描述590。然后,描述解码器505允许将多个部分解码器描述存储在描述存储单元510。
工具箱510包括分别被实现为执行预定过程的多个函数单元。这里,实现为一个函数单元或多个函数单元的组合的解析函数单元610可以被包括在工具箱515或解码方案530。可替换地,可以将解析单元和每个函数单元实现为每个程序代码的组合。
工具箱510的每个函数单元可以被分成通过使用每个应用的使用集(usage set)所划分的多个子工具箱(参照图7)。例如,每个函数单元可以被分成包括用于MPEG的函数单元的第一工具箱和包括其它函数单元的第二工具箱。可替换地,每个函数单元可以被分成作为用于MPEG-2的函数单元集的第一工具箱、作为用于MPEG-4的函数单元集的第二工具箱和作为用于AVS的函数单元集的第三工具箱,所述AVS是中国的数字TV压缩标准。
当然,多个工具箱510可以与解码器形成单元520和解码方案530具有独立的连接关系。在这种情况下,可以将工具箱510实现为未示出的诸如第一工具箱和第二工具箱之类的前述独立工具箱。
为了方便描述,以下说明集中于一个工具箱510包括多个子工具箱的情况。
工具箱510包括被实现为执行每个函数(即预定过程)的函数单元。每个函数单元通过借助于连接控制单元534的连接控制被加载到工作存储器上,形成连续的连接操作关系,从而将包括在常规位流316中的编码视频数据输出为视频数据。
如参照图6所述,可以将解析函数单元610设置为通过被包括在解码方案530并使用语法解析控制信息,在没有连接控制单元534的连接控制的情况下分析常规位流316。这是因为后续函数单元能够使用解析函数单元610分析和存储在CSCI存储单元532的元素信息,和/或从解析函数单元610输出的宏模块尺寸的视频数据。
解析函数单元610通过使用语法解析控制信息来分析输入的常规位流316,把作为语法解析结果的元素信息存储在CSCI存储单元532。例如,CSCI存储单元532可以采用缓冲存储器。例如,所述元素信息可以是控制信号/上下文信息。由解析函数单元610解析并存储在CSCI存储单元532的元素信息可以是相关步骤的解析结果值,同时是确定常规位流316的随后语法的输入值。
而且,解析函数单元610可以通过执行经语法解析的常规位流316的报头和视频数据的熵解码,根据连接控制单元534的连接控制向后续函数单元输出预定宏模块尺寸的视频数据。
当然,解析函数单元610可以将宏模块尺寸的视频数据存储在预定的缓冲存储器,并且视连接控制单元534的加载(即连接控制)而定的后续函数单元能够从相关的缓冲存储器读取宏模块尺寸的视频数据,以处理所读取的视频数据。然后,解析函数单元610可以将经处理的视频数据存储在相关的缓冲存储器处,供后续函数单元的处理之用。
换言之,显然在连接控制单元534将存储的宏模块尺寸的视频数据提供给所选函数单元,或者所选函数单元从CSCI存储单元532或缓冲存储器读取视频数据之前,解析函数单元610可以将宏模块尺寸的视频数据存储在CSCI存储单元532或缓冲存储器。以下说明假设由解析函数单元610输出的宏模块尺寸的视频数据根据连接控制单元534的连接控制被直接输入到函数单元中。
解析函数单元610可以被实现为一个软件程序(包括程序代码的组合)。这是因为即使将解析函数单元610实现为执行分别对应于多个标准(例如MPEG-1/2/3/AVC和AVS)的多种函数,通过使用语法解析控制信息也能够执行相应的操作。当然,如图7所示,解析函数单元610可以通过被分成多个函数单元,或作为每个函数单元分块而成的程序代码的组合来实现。
在下文中,将参照图7和8来简要地描述工具箱515的函数单元。
如图7所示,工具箱510的每个函数单元可以被分成通过使用每个应用的使用集所划分的多个子工具箱。当然,可以将多个工具箱实现为与解码器形成单元520和解码方案530具有独立的连接关系。
第一描述与图7的每个函数单元之中的执行解析函数的解析函数单元的函数有关,该解析函数单元是按每种函数划分的函数单元。如上所述,该解析函数单元可以通过被包括在工具箱515并在连接控制单元534的控制下被加载,或者被包括在解码方案530来运行。
如图7所示,按每种函数划分的解析函数单元可以包括网络抽象层解析(network abstract layer parsing,NALP)函数单元710、语法解析(syntax parsing,SYNP)函数单元720、上下文确定(context determination,CTX)函数单元730、可变长度解码(variable length decoding,VLD)函数单元740、游程长度解码函数单元750和宏模块发生器(macroblockgenerator,MBG)函数单元760。
显而易见的是解析函数单元可以包括与应用标准无关地执行语法解析的任何函数单元、可以添加用于执行语法解析的必要函数单元、可以修改现有的函数单元、且可以删除不必要的函数单元。很明显可以组合包括在解析函数单元的每个函数单元之中的通常应用于多种标准的函数单元。下面简要描述函数单元的对本领域的技术人员来说显而易见的每种功能。
NALP函数单元710解析MPEG-4 AVC的网络抽象层(NAL),SYNP函数单元720解析位流的语法。SYNP函数单元可以被包括在VLD函数单元740。
CTX函数单元730确定MEPG-4 AVC的VLC表,VLD函数单元740执行熵解码。
RLD函数单元750执行AC值的熵解码,MBG函数单元760将DC值与AC值组合以生成一个宏模块数据。VLD函数单元可以根据每种***实现类型来执行包括在上述解析函数单元610的所有或一些函数单元的函数。
如上所述,可以将解析函数单元实现为一个软件程序或多个软件程序(例如可以将VLD函数单元独立地实现为独立软件程序)。解析函数单元通过使用语法解析控制信息来提取或生成元素信息,并将所提取或生成的元素信息存储在CSCI存储单元532的操作。
接下来的描述是与图7的每个函数单元之中的执行解析函数的解析函数单元的函数有关,该解析函数单元是按每种函数划分的函数单元。
通过连接控制单元534的选择性加载而被激活,并执行每个预定过程,包括在工具箱515的解码单元以宏模块为单位对由解析函数单元输出(或存储在缓冲存储器)的视频数据进行解码,并输出具有预定尺寸的解码视频数据。
工具箱515可以包括根据每个标准执行前述函数的函数单元。每种函数可以被实现为独立的处理块(例如软件程序、命令代码的组合和函数)或一个集成处理块。虽然解码单元被实现为一个集成处理块,但显然对应处理可以由连接控制单元534的连接控制来执行。
所述解码函数单元可以是去块滤波(de-blocking filtering,DF)函数单元810、VOP重构(VOR reconstructing,VR)函数单元815、帧字段重新排序(frame field reordering,FFR)函数单元820、内预测和画面重构(intra prediction and picture reconstruction,IPR)函数单元830、反变换(inverse transform,IT)函数单元835、反量化(inverse quantization,IQ)函数单元845、反AC预测(inverse AC prediction,IAP)函数单元855、反扫描(inverse scanning,IS)函数单元860和DC重构(DC reconstruction,DCR)函数单元865。
IT 4×4函数单元840、IQ 4×4函数单元850和DCR 4×4函数单元870处理具有4×4大小的块。这是因为虽然MPEG-1/2/4在变换、量化和预测中以8×8块大小处理数据,但是MPEG-4AVC可以以4×4块大小处理数据。
显而易见的是工具箱515可以包括用于与应用标准无关地执行数据解码函数的任何函数单元,可以添加用于开发的技术的必要函数单元,可以修改现有函数单元,可以删除不必要的函数单元。例如,在另外需要以4×4块大小处理数据的IS函数单元执行解码的情况下,相关函数单元可以包括在工具箱515。而且,可以添加特殊预测(special prediction,SPR)函数单元(未示出)以执行MPEG-4AVC的内预测。
显然可以组合工具箱515的每个函数单元之中一般可应用于多个标准的函数单元。下面简要描述函数单元的对本领域的技术人员来说显而易见的每种功能。
DF函数单元810是MPEG-44 AVC的去块滤波器,VR函数单元815存储解码像素值。
FFR函数单元820用于交错模式,以及IPR函数单元830执行MPEG-4 AVC的内预测,并随后存储解码像素值。如上所述,可以由SPR函数单元来执行MPEG-4 AVC的内预测。
IT函数单元835执行DC值和AC值的反变换,IQ函数单元845执行AC值的反量化。
IAP函数单元855执行AC值的反AC预测,IS函数单元860执行AC值的反扫描。DCR函数单元865执行DC值的反AC预测和反量化。
图7的每个函数单元是根据按函数的辨别而广义命名的。依照本发明,如图8所示,可以将具有广义名称的函数单元实现为包括按每种使用分割的函数单元。例如,IT函数可以被分割成IT 4×4函数单元、IT 8×8函数单元和ITforChroma,IQ函数单元可以被分割成量化函数单元和饱和函数单元。特别地,IS函数单元860可以被分割成诸如MPEG4.algo.IS.luma.8×8、MPEG4.algo.IS.chroma.8×8和MPEG4.mgnt.IS之类的多个函数单元。IT函数单元835可以被分割成诸如MPEG2.algo.IT.luma.8×8、MPEG4.algo.IT.luma.8×8和MPEG4AVC.algo.IT.luma.4×4之类的多个函数单元。而且,IQ函数单元可以被分割成诸如MPEG2.algo.quan.luma.8×8和MPEG2.algo.satu.luma.8×8之类的多个函数单元。
如上所述,可以应用下列表1的函数单元ID或/和名称以便使函数单元多样化并通过使用子函数单元来辨别函数单元。当然,本发明不限于表1和2。
在工具箱515中,根据按函数分配的名称,每个函数单元被广义地表示为组。换言之,如果假设存在用不同的实行方法执行相同的函数的至少一个函数单元,则可以将执行相同函数的函数单元绑定到一个组中。这是因为使用ID或名称使得更快速地访问相关的函数单元成为可能。作为形成ID的实施例,可以根据如表1和2所示的名称形成方法来分配相应的位。可以形成如{STANDARD}.{Role}.{Name}的基本ID,它是用于形成函数单元名称的基本***元素,并向其它附加元素赋予标志。
表1.分配的显示函数单元名称的位
标准 |
角色 |
名称 |
尺寸 |
其它标志 |
其它内容 |
3位 |
2位 |
8位 |
3位 |
2位 |
N位 |
此外,如图8所示,很明显还可以包括用于显示相关函数单元要提供亮度还是色度的字段。
换言之,可以根据函数单元命名法以各种方式来分配用于显示函数单元名称的位。
依照本发明的实施例,可以以{STANDARD}.[list].{Role}.{Name}.[property].[size].[implementation]的形式应用函数单元命名法。
这里,{STANDARD}将指示应用相关函数单元的解码标准。例如,如果相关函数单元可以应用于至少两个标准,则该相关函数单元对应于GENERIC,并且如果相关函数单元被应用于某个标准,则该相关函数单元对应于所述某个标准。
如果所述相关函数单元可以通用于至少两个标准,则[list]将指示这一点。例如,如果函数单元通用于MPEG-2、4和AVC,则函数单元可以表示为GENERIC.24avc.algo.Interpolation.halfpel。
{Role}将指示关于函数单元是否执行算法的信息,且{Name}将指示对应于函数单元的处理操作的名称。
[Property]将指示相关函数单元的指定性质或具体指定过程。例如,如果函数单元的名称被指定为GENERIC.24avc.Interpolation.halfpel,则“halfpel”将指示该性质。这将指示通过计算直到1/2像素来执行内插。
[Size]指的是相关函数单元处理的宏模块的尺寸。
[Implementation]将指示关于相关函数单元的执行的附加信息。
表2.函数单元ID或/和命名法
如上所述,通过为每个函数单元提供具体指定的ID或/和名称,可以管理根据上层组绑定的每个函数单元。换言之,如图7所示,可以按标准将每个函数单元分组。然后,通过确定函数单元是算法还是管理,可以管理包括在每个标准的函数单元。
而且,不必要接连地执行上述解析函数单元与解码函数单元之间的处理操作(即在开始操作解码函数单元之前完成解析函数单元的操作)。很明显通过允许两个函数单元在连接控制单元534的连接控制下被加载到工作存储器上,能够执行并行处理。这是因为允许解析函数单元仅仅把特定解码函数单元的操作所必要的最少元素信息存储在CSCI存储单元532就足够了。
如参照图6所述,如果在解码方案530装配有解析函数单元或至少两个工作存储器,则虽然省略了相关描述,但很明显可以在没有连接控制单元534的附加控制的情况下并行地执行语法解析和解码处理。
CSCI存储单元532存储元素信息(例如CSCI)以对应于CSCIT 440,所述元素信息是解析函数单元通过使用CSCI控制信息(或语法解析控制信息)来执行语法解析的结果值。例如,CSCI存储单元532可以是缓冲存储器。
存储在CSCI存储单元532的元素信息可被用作由解析函数单元执行SET 450的过程的输入数据或用作用于确定S-RT 460中的随后连接索引的控制变量。
存储在CSCI存储单元532的元素信息还可以被用作由连接控制单元534确定F-RT 420中的随后连接索引的控制变量,或用来允许函数单元的输入CSCI映射到FU-CSCIT 430中的存储在CSCI存储单元532的元素信息。
换言之,存储在CSCI存储单元532的元素信息将解析函数单元与解码函数单元进行链接。
连接控制单元534设置每个解码函数单元的连接,以便通过每个函数单元的选择性加载的控制,对依据各种标准编码的位流进行解码。换言之,连接控制单元534有选择地加载包括在工具箱515的每个函数单元之中的适当函数单元,以便控制操作执行顺序。这里,连接控制单元534通过使用连接控制信息有选择地加载相关的函数单元,并允许解码函数单元的加载函数单元通过使用由解析函数单元提供的元素信息,以宏模块为单位对视频数据进行解码。
在下文中,将参照有关附图基于解码器形成单元520的信息处理单元524的操作,描述每个部分解码器描述的函数和使用。虽然连接控制单元534通过使用经信息处理单元524处理的信息来执行处理,但是为了方便说明和理解,这将通过参照部分解码器描述的细节来描述。
信息处理单元524通过使用诸如FL 410、F-RT 420、FU-CSCIT 430和CSCIT 440之类的部分解码器描述来生成连接控制信息。而且,还可以使用S-RT 460以便设置用于语法解析的每个函数单元的连接。
首先,如表3所示,FU列表(FL)410指的是与包括工具箱515的每个函数单元的工具箱ID、相关函数单元的ID和名称、及相关函数单元的输入和输出数据的数目有关的部分解码器描述。
表3.FL(FU列表)
工具箱
ID |
FU ID |
FU名称 |
输入CSCI |
输出CSCI |
0A |
F0092 |
MPEG4.mgnt.Address.16x16 |
4 |
0 |
0A |
F0098 |
MPEG4.mgnt.Address.8x8 |
2 |
0 |
0B |
F0190 |
AVS.algo.IDCT.8x8 |
2 |
0 |
... |
... |
... |
... |
... |
FL 410还可以包括输入到每个函数单元中的数据的缓冲存储器名称(或写入相关数据的地址或写入相关数据的缓冲存储器的地址)和由相关函数单元输出的数据的缓冲存储器名称(或写入相关数据的地址或写入相关数据的缓冲存储器的地址)。
因此,每个函数单元可以使用FL 410以便读取并处理输入数据,及写入相应的输出数据。而且,可以使用在FL 410写入的信息以便允许将输入和输出数据传输到每个函数单元,或者连接控制单元534可以向每个函数单元提供适当的输入数据。
然而,在FL 100中,解析函数单元的输入数据和输出数据生成元素信息。这是因为解析函数单元能够使用诸如SET 450之类的信息来生成元素信息,并将生成的信息写在指定的位置。
被连接控制单元534加载在工作存储器的特定函数单元从连接控制单元534接收输入数据,并通过执行预定处理生成输出数据。这里,函数单元包括在工具箱515,并且这涉及通过执行预定过程来处理输入数据并生成输出数据的一系列处理操作。相关函数单元可以将输出数据存储在缓冲存储器,供随后函数单元(即其后通过连接控制单元534的控制加载的函数单元)的处理之用。
如果解码处理单元320仅仅使用一个标准就足以将包括在常规位流316的编码视频数据解码,则FL 410可以只包括与用于执行相关标准的相应处理的函数单元有关的信息。
然而,在依据多个标准编码相关视频数据的情况下(例如在以多帧为单位不同地应用编码标准的情况下),将需要与符合对相关编码视频数据进行解码的多个标准的函数单元有关的信息。因此,在这种情况下,需要FL 410包括与符合多个相应标准的所有函数单元之中,符合对编码视频数据进行解码所必需的多个标准的函数单元有关的信息。
当然,即使以多帧为单位,对视频数据不同地应用编码标准,如果按所应用的编码标准生成多个常规位流316和扩展位流305,则每个FL410可以包括与符合每个相应标准的函数单元有关的信息。
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)等技术方法来编写FL 410。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
接下来,F-RT 420提供将用于解码输入的常规位流316的的函数单元的连接信息。
如表4所示,F-RT 420包括指示每个连接信息(规则)的索引(R#)、根据所述索引具体确定函数单元的工具箱ID和函数单元ID、连接控制所需的元素信息(输入CS/CI、C#)、可连接到随后函数单元的分支数目(分支数)和与分支数目一样多的所需每个分支信息(#1、#2和#3...)。
表4.F-RT(FU规则表)
索引 |
工具箱ID |
FU ID |
输入CS/CI |
分支数 |
分支信息 |
R0 |
0A |
F0092 |
- |
1 |
1:GO R1; |
R1 |
0A |
F0098 |
- |
1 |
1:GO R2; |
R2 |
0B |
F0190 |
- |
1 |
1:GO R3; |
... |
... |
... |
... |
... |
... |
由于表4的索引R0具有工具箱ID 0A和FU ID F0092,所以表3的FL示出了相关函数单元具有名称MPEG4.mgnt.Address.16×16。
表4未示出必要元素信息,这是因为分支的数目在所有情况下都是1。然而,如果分支的数目是2或以上,则将显示必要元素信息。所述连接索引将根据使用必要元素信息来确定条件句的结果而改变。换言之,如果分支的数目是1,则不存在必要元素信息,并进行到由分支信息指出的连接索引。在相关条件句之后,显示随后连接索引(R)。
如果解码处理单元320仅仅使用一个标准就足以将包括在常规位流316的编码视频数据进行解码,则F-RT 420可以指向用于执行相关标准的相应过程的函数单元的连接。
然而,如果相关视频数据是用多种标准编码的(例如在以多帧为单位不同地应用编码标准的情况下),显而易见的事是包括用于指定符合解码相关编码视频数据的多个标准的函数单元的连接的信息。如果下文将描述的每个部分解码器描述需要应用于多个标准的附加信息和/或应用于多个标准的修正,则显而易见的是还将包括相关信息。
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)之类的技术方法来编写F-RT 420。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
接下来,FU-CSCIT 430是用于将存储在CSCI存储单元532的元素信息与每个函数单元所需的元素信息(输入CSCI)相连的部分解码器描述。
如表5所示,FU-CSCIT 430包括工具箱ID、被布置成FL 410的索引和元素信息的集合的索引(F-C)、相关元素信息和用于CSCIT 440的映射的索引(C)。此外,FU-CSCIT 430还可以包括元素信息的数据类型。例如,将以9位整数和1位标志的形式来描述数据类型。
表5.FU-CSCIT
工具箱ID |
索引号 |
CSCI信息 |
CSCI表元素 |
0A |
F0092-C1 |
Quantiser_scale |
C54 |
0A |
F0092-C2 |
CBP |
C56 |
0A |
F0092-C3 |
Ac_pred_flag |
C58 |
0A |
F0092-C4 |
The number of MB |
C65 |
0A |
F0098-C1 |
CBP |
C56 |
0A |
F0098-C2 |
Ac_pred_flag |
C58 |
... |
... |
... |
... |
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)之类的技术方法来编写FU-CSCIT 430。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
例如,在F-RT 420中输入2项F0098的元素信息(参见表5),FU-CSCIT 430列出每个函数单元的元素信息。换言之,列出了F0098-C1和F0098-C2,并且每个元素信息是C56和C58。另外,相关元素信息由CSCIT映射。这里,可以将C56和C58识别为其中存储每个相关元素信息的地址(例如写入地址、缓冲存储器名称或缓冲存储器的写入地址)。所述相关函数单元可以使用对应于输入数据和索引(c)的元素信息以便生成输出数据,并输出(或在缓冲存储器写入)生成的输出数据。
最后,CSCIT 440写入关于元素信息(例如CSCI)的细节作为使用SET 450和S-RT 460的过程的结果信息。换言之,根据常规位流316来处理CSCIT 440并将其存储在CSCI存储单元532。CSCIT 440还具有与将被解码函数单元使用的所有有意义数据(即元素信息)有关的信息。
如图9所示,CSCIT 440包括索引(C)(它是作为相关元素信息的标识号的标识符)、标志、相关元素信息的名称(元素名称)、用于指定相关元素信息的数据结构性质(例如相关元素信息的存储空间尺寸和相关元素信息是否是数组类型的确定)的属性,和指示相关元素信息只用在语法解析操作中,还是用在整个解码操作中的全局/局部指示。
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)等技术方法来编写CSCIT 440。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
到目前为止,已参照表3至表5描述了FL 410、F-RT 420和FU-CSCIT 430。
可替换地,可以以各种方式来表示FL 410、F-RT 420和FU-CSCIT430。下面是各种表示方法的每个示例。
用于表示FL 410、F-RT 420和FU-CSCIT 430的其它示例
表6.FL
工具箱ID+FU ID |
FU名称 |
输入CSCI |
输出CSCI |
0A.F0092 |
MPEG4.mgnt.Address.16x16 |
4 |
0 |
0A.F0098 |
MPEG4.mgnt.Address.8x8 |
2 |
0 |
0B.F0190 |
AVS.algo.IDCT.8x8 |
2 |
0 |
... |
... |
... |
... |
Table 7.F-RT
索引 |
工具箱ID+FU ID |
输入CS/CI |
分支数 |
分支信息 |
R0 |
0A.F0092 |
- |
1 |
1:GO R1; |
R1 |
0A.F0098 |
- |
1 |
1:GO R2; |
索引 |
工具箱ID+FU ID |
输入CS/CI |
分支数 |
分支信息 |
R2 |
0B.F0190 |
- |
1 |
1:GO R3; |
... |
... |
... |
... |
... |
表8.FU-CSCIT
索引号
工具箱) |
CSCI信息 |
CSCI表元素 |
0A.F0092-C1 |
Quantiser_scale |
C54 |
0A.F0092-C2 |
CBP |
C56 |
0A.F0092-C3 |
Ac_pred_flag |
C58 |
0A.F0092-C4 |
The number of MB |
C65 |
0A.F0098-C1 |
CBP |
C56 |
0A.F0098-C2 |
Ac_pred_flag |
C58 |
... |
... |
... |
用于表示FL 410、F-RT 420和FU-CSCIT 430的其它示例
表9.FL
FU名称 |
输入CSCI |
输出CSCI |
输入数据 |
输出数据 |
MPEG4.mgnt.Address.16x16 |
4 |
0 |
QFS |
QFSP |
MPEG4.mgnt.Address.8x8 |
2 |
0 |
QFSP |
PQF |
MPEG4.algo.IAP.8x8 |
2 |
0 |
PQF |
QF |
... |
... |
... |
... |
... |
表10.F-RT
索引 |
FU |
输入CS/CI |
分支数 |
分支信息 |
R0 |
MPEG4.mgnt.Address.16x16 |
- |
1 |
1:GO R1; |
R1 |
MPEG4.mgnt.Address.8x8 |
- |
1 |
1:GO R2; |
R2 |
MPEG4.algo.IAP.8x8 |
- |
1 |
1:GO R3; |
... |
... |
... |
... |
... |
表11.FU-CSCIT
索引号 |
CSCI信息 |
CSCI表元素 |
MPEG4.mgnt.Address.16x16-C1 |
Quantiser_scale |
C54 |
MPEG4.mgnt.Address.16x16-C2 |
CBP |
C56 |
MPEG4.mgnt.Address.16x16-C3 |
Ac_pred_flag |
C58 |
MPEG4.mgnt.Address.16x16-C4 |
The number of MB |
C65 |
MPEG4.mgnt.Address.8x8-C1 |
CBP |
C56 |
MPEG4.mgnt.Address.8x8-C2 |
Ac_pred_flag |
C58 |
... |
... |
... |
用于表示FL 410、F-RT 420和FU-CSCIT 430的其它示例
表12.FL
ID |
FU名称 |
输入CSCI |
输出CSCI |
输入数据 |
输出数据 |
F0092 |
MPEG4.mgnt.Address.16x16 |
4 |
0 |
QFS |
QFSP |
F0095 |
MPEG4.mgnt.Address.8x8 |
4 |
0 |
QFSP |
PQF |
F0190 |
MPEG4.algo.IAP.8x8 |
2 |
0 |
PQF |
QF |
... |
... |
... |
... |
... |
... |
表13.F-RT
索引 |
FU |
输入CS/CI |
分支数 |
分支信息 |
R0 |
F0092 |
- |
1 |
1:GO R1; |
R1 |
F0095 |
- |
1 |
1:GO R2; |
R2 |
F0190 |
- |
1 |
1:GO R3; |
... |
... |
... |
... |
... |
表14.FU-CSCIT
索引号 |
CSCI信息 |
CSCI表元素 |
F0092-C1 |
Quantiser_scale |
C54 |
F0092-C2 |
CBP |
C56 |
F0092-C3 |
Ac_pred_flag |
C58 |
F0092-C4 |
The number of MB |
C65 |
F0095-C1 |
CBP |
C56 |
F0095-C2 |
Ac_pred_flag |
C58 |
... |
... |
... |
用于表示FL 410、F-RT 420和FU-CSCIT 430的其它示例
表15.FL
ID |
FU名称 |
输入CSCI |
输出CSCI |
输入数据 |
输出数据 |
0000200010100001 |
MPEG4.mgnt.Address.16x16 |
4 |
0 |
QFS |
QFSP |
0000200010101002 |
MPEG4.mgnt.Address.8x8 |
4 |
0 |
QFSP |
PQF |
0000100010111002 |
MPEG4.algo.IAP.8x8 |
2 |
0 |
PQF |
QF |
... |
... |
... |
... |
... |
... |
表16.F-RT
索引 |
FU |
输入CS/CI |
分支数 |
分支信息 |
R0 |
0000200010100001 |
- |
1 |
1:GO R1; |
R1 |
0000200010101002 |
- |
1 |
1:GO R2; |
R2 |
0000100010111002 |
- |
1 |
1:GO R3; |
... |
... |
... |
... |
... |
表17.FU-CSCIT
索引号 |
CSCI信息 |
CSCI表元素 |
0000200010100001-C1 |
Quantiser_scale |
C54 |
0000200010100001-C2 |
CBP |
C56 |
0000200010100001-C3 |
Ac_pred_flag |
C58 |
0000200010100001-C4 |
The number of MB |
C65 |
0000200010101002-C1 |
CBP |
C56 |
索引号 |
CSCI信息 |
CSCI表元素 |
0000200010101002-C2 |
Ac_pred_flag |
C58 |
... |
... |
... |
如上所述,通过向每个函数单元提供固有ID或/和名称,本发明能够高效地管理函数单元。通过使用每个函数单元的ID(或/和名称),工具箱515可以直接管理相关函数单元,用户可以使用分配给每个函数单元的ID通过解码器描述来访问相关函数单元。例如,如果假设形成MPEG2的IDCT的函数单元具有固有ID 000011A,则试图使用形成MPEG2的IDCT的函数单元的用户编写允许在形成解码器描述时通过ID来访问函数单元的解码器描述就足够了。换言之,用户不必要知道要使用的函数单元被放在工具箱515中的哪个位置。然而,是使用ID还是使用名称会导致执行速度或读取速度改变。
如上所述,由于用于访问特定函数单元的ID被形成为包括优化的字母与数字的组合,这使得可以快速地访问函数单元。而且,通过对具有相同符号的某些函数单元进行分组来形成工具箱515使得可以比使用ID访问函数单元更快速地搜索和访问函数单元。函数单元名称提供允许用户轻易地识别ID组合的信息。可以如F-RT 420的以下示例一样,一起使用函数单元ID和名称。
FRT{
(fu(id:0000100010111002),1:IF(C10==1)GO R1;2:GO R2;)
(fu(name:MPEG4.algo.IDCT.8x8),1:IF(C10==1)GO R1;2:
GO R2;)
}
CSCIT 440、SET 450、S-RT 460和DVT 470是用于生成CSCI控制信息的部分解码器描述。解析函数单元610(或工具箱515中的执行语法解析的函数单元)使用CSCI控制信息从常规位流316中提取或生成元素信息,并将提取或生成的元素信息存储在CSCI存储单元532。接下来,将描述CSCIT 440、SET 450、S-RT 460和DVT 470。然而,由于上文已参照图9描述了CSCIT 440,所以将省略相关说明。
首先,SET 450指的是被形成为包括与输入的常规位流316的语法有关的信息的部分解码器描述。
如图10至图13所示,SET 450包括每个语法的索引、元素名称、输入数据、输出数据和SET过程(由SET-PROC执行的过程)。这里,所述索引指的是标识用于S-RT 460的每个语法的标识符S。可以参照语法的意义或函数来命名作为语法的名称的元素名称。所述输入数据指的是在常规位流316中一次输入的位的标称长度。作为元素信息(即CSCI信息(C))的输出数据指的是在存储获取的数据时参考的CSCIT 440列表。这里,输出数据字段可以是认为在其中写入了生成的元素信息的缓冲存储器的名称(或相关数据的写入地址或其中写入相关数据的缓冲存储器的地址)。因而,在需要相关元素信息作为输入数据的情况下,可以通过使用CSCI信息(C)来读取相关元素数据。SET过程写入包括在输入每个位流语法之后,经历什么处理操作以生成元素信息作为输出数据的过程。
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)之类的技术方法来编写SET 450。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
然后,S-RT 460指的是常规位流316中的每个语法之间的连接信息。换言之,S-RT 460具有指示调用每个语法和转移到下一个语法的信息。解析函数单元610使用R-ST 460来读取常规位流316,或定义在CSCI存储单元532中存储和/或更新元素信息的序列。
如图14至图17所示,S-RT 460包括索引(R)、语法的索引(S)、输入数据(C)、分支数目(分支数)和分支信息。
索引(R)指示每个连接信息(规则)。由于语法的索引(S)在特定的连接索引中指示要处理的语法,所以解析函数单元(或执行语法解析的函数单元)使用SET 450来执行相关语法的指定过程。
所述输入数据指示将被用于条件确定以控制相关连接索引的连接的元素信息列。
分支的数目是能够连接到随后语法的情况的数目,其指的是相应连接索引的分支路线的总数。与分支的数目一样多地提供的分支信息(#1、#2、#3)指的是确定接下来处理哪个连接索引的条件确定算法。可以依据分支信息直接确定将被读取的数据的序列和内容。如图14至图17所示,如果分支的数目是1,则不提供输入数据,直接着手处理分支信息指定的连接索引。然而,如果分支的数目是2或以上,则执行条件确定(由条件句之后的后续连接信息(R)组成),并着手处理相应的连接索引。
解析函数单元610通过处理在相关连接索引中定义的语法来更新CSCI存储单元532。然后,解析语法单元610通过参考CSCI存储单元380的元素信息读取更新的数据,从而将其用于分支条件确定。例如,索引R0的分支信息的分支条件下的C0(“C0=1”)是处理语法S0之后的元素信息C0。
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)之类的技术方法来编写S-RT 460。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
最后,DVT 470指的是其中写入了将被每个编码器/解码器使用的霍夫曼表信息的部分解码器描述。在每次编码中,MPEG-1/2/4/AVC执行熵编码。这时,主要使用霍夫曼编码方法。在这种情况下,使用霍夫曼表。需要提供在每次编码中将由相关解码器使用的霍夫曼表信息,以便实现集成编解码器。因此,依照本发明的解码描述包括在解析语法时对应于每个语法的霍夫曼表信息。当然,在已经在描述存储单元510写入对应于每个标准的霍夫曼表信息的情况下,可以省略DVT 470的传输,或者可以只包括编解码器号(编解码器#)及档次和级别号(档次和级别号)。
如在图18和19中所述,DVT 470包括每个霍夫曼表的名称、在通过霍夫曼编码压缩之后输出的实际值,和在将经压缩的实际值存储在常规位流316时使用的码值。例如,如果通过压缩MCBPC值而获得实际值3,则通过霍夫曼表映射工作(例如SET 450的过程部分),在常规位流316写入码值011。又例如,由于在SET 450的索引S77的过程部分写入VLD[1],所以调用函数VLD。通过读取与该函数预先确定的长度(即固定长度或可变长度)一样大的常规位流316,获得编码值。然后,可以通过霍夫曼表映射工作来获得相应的实际值。这时,使用作为第一表CBPY的霍夫曼表[1]。
可以以诸如文本描述或二进制描述(即位转换二进制代码形式)之类的技术方法来编写DVT 470。可以用类似的脚本语言来编写部分解码器描述的最少必要数据。
可以以二进制描述来编写每个部分解码器描述,从而减小存储空间、改善处理效率并降低发送包括解码描述的扩展位流305所花费的时间。
下面描述将解析函数单元610和/或连接控制单元534所使用的每个部分解码器描述之间的链接操作。
依照本发明,解码器300的解码处理单元320能够以各种方式开始运行。例如,将描述开始操作解码处理单元320的一些方法。
适用于图5的解码处理单元320的一个示例是通过使用从解码器形成单元520接收到的连接控制信息和CSCI控制信息来控制工具箱515的每个函数单元的处理关系(例如操作序列和连接)。根据本示例,如在F-RT 420中所示,首先加载工具箱515的函数单元中的解析函数单元610,从而允许将通过允许对常规位流进行语法解析而评估的元素信息存储在CSCI存储单元532。然后,如果控制权被返回到连接控制单元534(类似于S-RT 460的索引R72),则相应的函数单元被加载以处理后续操作,从而控制每个函数单元的连接。
根据适用于图6的解码处理单元320的另一种方法,如果已接收到语法解析控制信息的解析函数单元610开始独立地运行,并完成常规位流的语法解析,则已接收到连接控制信息的连接控制单元534通过解码函数单元的选择性加载来控制连接。在这种情况下,连接控制单元534必须预先识别一些或全部元素信息是否已完成,从而被存储在CSCI存储单元532。这里,连接控制单元534必须连续监控必要的元素信息是否被存储在CSCI存储单元532,或者允许已存储元素信息的解析函数单元610将其报告给连接控制单元534(例如,允许控制权返回到连接控制单元534,比如S-RT 460的索引R72)。当然,连接控制单元534(或通过连接控制单元534的控制加载的函数单元)和/或解析函数单元610很明显可以在开始运行之后待机,而不监控必要的元素信息是否被存储在CSCI存储单元532,直至必要的信息被存储在相关存储单元为止。
适用于图5或/和图6的解码处理单元320的另一示例是通过允许解码器形成单元520将CSCI控制信息和连接控制信息传输到连接控制单元534和/或解析函数单元610来操作解码处理单元320。
集中于首先描述的示例的以下说明与将被解析函数单元610和/或连接控制单元534使用的每个部分解码器描述之间的链接操作有关。
首先,连接控制单元534可以从描述存储单元510读取F-RT 420的第一规则信息(规则)以调用相关函数单元。如在F-RT 420中所示,连接控制单元534第一次读取F0(R0)并加载工具箱515的解析函数单元以便开始处理。可以通过允许激活对应于解析函数单元610的程序代码的处理块来执行处理的开始。可以通过FL 410来识别相关函数单元是否是解析函数单元。
解析函数单元读取与S-RT 460的规则信息(规则)之中的由连接控制单元534指定的规则信息(其可以是经信息处理单元524处理的信息)对应的语法并生成相应的输出值,从而将生成的输出值存储在CSCI存储单元532。关于哪些元素信息被存储在CSCI存储单元532的信息被存储在CSCIT 440。接下来,解析函数单元将存储在CSCI存储单元532的元素信息放入对应于S-RT 460的分支信息中,并着手处理对应于该结果的索引。例如,对应于索引R0的分支信息是“C0==1”。如果满足此条件,则继续进行到索引R1。否则,将其作为错误处理。继续此操作直至遇到“GO RT”以允许将控制权转移到F-RT 420(即连接控制单元534)(例如S-RT 460的索引R72)。
然而,虽然解析函数单元使用SET 450来生成元素信息并将生成的元素信息存储在CSCI存储单元532,但如果VLD函数(例如SET 450的索引S74)被调用,则通过使用DVT 470来执行熵解码。这时,如果生成元素信息,则生成的元素信息被存储在CSCI存储单元532。
在解析函数单元的处理操作中,如果遇到“GO RT”且控制权被转移到F-RT 420(即连接控制单元534),则连接控制单元534从CSCI存储单元532读取作为对应于F-RT 420的索引的输入值的元素信息,并将读取的元素信息放入分支信息中,从而允许指定随后要处理的索引。
如上所述,如果一些或所有元素信息被存储在CSCI存储单元532,则连接控制单元534允许通过根据F-RT 420加载相应的函数单元来处理解码。连接控制单元534可以识别被加载的函数单元是否完成处理。如果相关函数单元完成处理,则连接控制单元534指示后续函数单元执行处理。而且,相关函数单元将经处理的数据存储在预定缓冲存储器或CSCI存储单元532,供后续函数单元的视频数据处理之用。由于允许连接控制单元534识别函数单元是否完成处理的方法对于本领域的技术人员来说显而易见,所以将省略相关说明。
通过允许连接控制单元534根据前述操作控制要执行的处理,解码处理单元320可以输出对应于输入的常规位流316的视频数据,所述要执行的处理是在F-RT 420编写的索引序列和/或取决于分支条件的索引序列。
如通过前述说明理解的那样,本发明的部分解码器描述之间的链接循环大致可以分为两类。换言之,F-RT循环被形成为包括F-RT 420、FL 410、FU-CSCIT 430、F-RT 420、CSCIT(例如分支条件应用)和F-RT(下一规则)。S-RT循环被形成为包括S-RT 460、SET 450、CSCIT 440、S-RT 460、CSCIT(例如分支条件应用)和F-RT(下一规则)。
而且,可以如下将F-RT循环分为两类。首先,在指示执行解码函数单元的情况下,F-RT循环被形成为包括F-RT 420、FL 410、FU-CSCIT430、F-RT 420、CSCIT(例如分支条件应用)和F-RT(下一规则)。其次,在指示执行解析函数单元的情况下,F-RT循环被形成为包括F-RT420、FL 410(S-RT循环)、F-RT 420、CSCIT(例如分支条件应用)和F-RT(下一规则)。
可以如下将S-RT循环分为两类。首先在分支到下一规则的情况下,S-RT循环被形成为包括S-RT 460、SET 450、CSCIT 440、S-RT 460、CSCIT(例如分支条件应用)和F-RT(下一规则)。其次,在返回到F-RT 420的情况下,S-RT循环被形成为包括S-RT 460、SET 450、CSCIT440、S-RT 460、CSCIT(例如分支条件应用)和F-RT(指示调用的F-RT420)。
根据F-RT 420的连接控制单元534的连接控制可以导致工具箱510的每个函数单元的连接被改变。
在下文中,将详细描述形成每个部分解码器描述的命令。
图20是依照本发明的实施例的用于组成部分解码器描述的命令的示例。通过使用每个命令,可以形成用于解析诸如MPEG-2/MPEG-4/MPEG-4 AVC之类的标准的语法的信息(即部分解码器描述)。以下说明集中于用于解析MPEG-2-MP(主档次)内编码语法的部分解码器描述和每个部分解码器描述之间的链接关系的示例。
如图20所示,每个部分解码器描述可以被形成为包括诸如READ、SEEK、FLUSH、IF、WHILE、UNTIL、DO~WHILE、DO~UNTIL、BREAK、SET、STOP和PUSH之类的命令。当然,并不是所有命令都需要用在每个部分解码器描述中。显而易见的是可以根据每个部分解码器描述有选择地使用任何命令。下面简要描述每个命令的使用。
首先,READ是用于从位流读取位的命令,例如以“READ bits B>CSCI;”的形式使用。这里,“位”指示要读取的位数。“B”指的是字节对准标志。“>CSCI”指示要存储的CSCI索引。“B”和“>CSCI”被用作选项。如果未指定“>CSCI”,则确定只存储在IBS。
接下来,SEEK是用于从位流读取位但允许不移动文件指针的命令。文件指针指的是例如读取位之类的操作的参考位置。可以和上述REED一样地应用SEEK命令的参数。
FLUSH是与位的数目一样多地在位流移动文件指针的命令。可以和上述REED一样地应用其参数。
IF是根据给定条件提供分支的命令,以“IF(条件){~}ELSE{~}”的形式使用。
WHILE是在给定条件为真的时候,在某一时间段内反复执行指定块的命令,以“WHILE(条件){~}”的形式使用。
UNTIL是在一定时间段内反复执行指定块,直至给定条件为真的命令,以“UNTIL(条件){~}”的形式使用。
DO~WHILE是WHILE命令的变换,是用于执行条件确定之前的块的命令,以“DO{~}WHILE(条件)”的形式使用。
DO~UNTIL是UNTIL命令的变换,是用于执行条件确定之前的块的命令,以“DO{~}UNTIL(条件)”的形式使用。
对于计算,使用格式(~)(计算)作为例如“(C11=(V2+3));”。换言之,可以在括号中写入SET-PROC的所有计算公式,并使用诸如算术(即加、减、乘和除)、置换、加/减、(++/--)、位运算、逻辑和/逻辑积和检查是否CSCI之类的运算符。
BREAK是用于从最近的循环中释放的命令。
SET是用于设置关于是否使用指定CSCI的标志的命令。可以布置CSCI指定标志并用逗号断开。例如,可以将CSCI断为SET C0,C2;。
STOP是用于停止处理当前处理的语法元素并转向下一个操作的命令。
PUSH是用于在布置CSCI中的写入数据后面添加给定数据的命令。排列添加值并用逗号断开(例如PUSH C88,16,32;)。
GO是用于分支到指定位置的命令。例如,GOR#;;指示分支到R#,以及GO RT指示返回到被调用位置。
HEX是用于报告十六进制遵守HEX命令的命令。
RLD是MPEG-4中可支持的RLD函数的接口(interface),以“RLDindex,level,run,islastrun,t#;”的形式使用。这里,index、level、run和islastrun指示内部变量和存储RLD返回值的CSCI。t#指示用于RLD的霍夫曼表ID。
VLD2是MPEG-2的VLD函数,以“VLD2[t#]in>v1,v2,v3;”的形式使用。这里,t#指示用于RLD的霍夫曼表ID,in指示要输入的索引值。v1、v2和v3指示输出结果值。
最后,VLD4是MPEG-4的VLD函数,“以VLD4[T#]>CSCI;”的形式使用。这里,t#指示用于RLD的霍夫曼表ID,“>CSCI”指示要存储的CSCI索引。“>CSCI”被用作选项。如果未指定“>CSCI”,则确定只存储在变量IBS。
图21示出了依照本发明的第三实施例的解码处理单元的简要结构,以及图22示出了依照本发明的第四实施例的解码处理单元的简要结构。
就参照图5和6所述的解码处理单元而论,信息处理单元524使用部分解码器描述来生成CSCI控制信息和连接控制信息,且连接控制单元534使用信息处理单元524生成的控制信息有选择地加载工具箱515的函数单元。这将编码视频数据316解码。
然而,就图21和图22所示的解码处理单元而论,连接控制单元534直接使用存储在描述存储单元510的部分解码器描述有选择地加载工具箱515的至少一个函数单元。这将编码视频数据316解码。
在下文中,将描述图21和22所示的解码处理单元。由于只存在连接控制单元534能够分析部分解码器描述以执行相应的连接控制这一点细微的差异,所以将省略与参照图5和6所述的大部分相同说明(例如部分解码器描述的分析结构)。
参照示出解码处理单元320的第三实施例的图21,解码处理单元320可以包括描述解码器505、描述存储单元510、工具箱515和解码器形成单元520。解码器形成单元520可以包括连接控制单元534和CSCI存储单元532。解码器形成单元520还可以包括允许通过连接控制单元525的调用加载至少一个并执行预定处理的工作存储器(未示出)。
而且,图22示出了解码处理单元320的第四实施例。与图21的解码处理单元320相比,图22的解码处理单元320还包括解码方案530。解码方案530可以是允许通过连接控制单元525的调用加载至少一个并执行预定处理的工作存储器。
如图21和图22所示,可以以各种形式来重新组合或生成本发明的解码器300,使得通过允许工具箱515的函数单元被有选择地加载或解码,能够不管编码格式地将输入的位流解码。
如上所述,与解码器300中的其它元素分开地形成工具箱515使得可以在不对其它元素的解码器设计结构进行任何修改的情况下更容易地应用不同类型的工具箱。例如,虽然解码器被制造为根据MPEG标准使用工具箱来执行处理,但用与相关工具箱或随意地/个人地制造的工具箱具有相同接口的非MPEG标准代替相关工具箱变得更加容易。
图23是示出依照本发明的实施例的编码器的框图。
与参照图2所述的常规编码器200相比,本发明的编码器2300还可以包括扩展位流生成和输出单元2310。
扩展位流生成和输出单元2310通过使用生成由先前操作的处理生成的常规位流316的操作的控制信息(例如所用函数单元和输入数据的列表和连接、相关函数单元的语法信息和语法连接信息)来说生成解码器描述。扩展位流生成和输出单元2310还使用生成的解码器描述和常规位流316来生成扩展位流305,并将生成的扩展位流305传输到解码器300。由于本领域的技术人员仅仅通过以上说明就足以理解生成解码器描述的方法,所以将省略相关说明。
在此说明书中,可变长度编码单元235仅仅是最后执行编码以生成常规位流316的任何元素(例如编码器),且不限于本发明。其绝不限制或约束本发明的精神和范围。
图23假设通过使用解码器描述信息和常规位流316生成的扩展位流305被提供给解码器300。然而,如上所述,可以以单独数据或位流的形式向判定器300提供解码器描述。在这情况下,很明显可以独立于常规编码单元200来设置扩展位流生成和输出单元2310,以便独立地向解码器300提供逼真的信息,而不是将其设置在可变编码单元235的后面。
虽然上述说明集中于解码器以描述依照本发明的集成编解码器设备及其方法,但解码器与编码器之间的互反关系对于本领域的技术人员来说是显而易见的,并且鉴于通过仅仅使用详细说明就能够轻易地形成编码器,因此解码器很明显不限于本发明,
如上所述,依照本发明的集成编解码器设备及其方法使得易于在一个标准(或编解码器)中或不同标准(或编解码器)之间分析语法元素并控制函数单元的连接。换言之,可以改变将根据一定标准生成的位流中的语法元素的顺序,***新的语法元素,或者删除现有的语法元素。
依照常规技术,当操作语法元素时,解码器不能正常地将相关位流解码。例如,如果通过将位流信息的顺序从ABC变成ACB来重新形成并发送相应的位流,则解码器不能识别重新形成的位流。这使得不能正常地将重新形成的位流解码。同样地,如果通过新***F将位流重新形成为ABFC,或通过删除B将其重新形成为AC,则解码器也不能识别重新形成的位流。
然而,使用依照本发明的解码装置及其方法能够允许将解码器描述信息包括在扩展位流中,或者将解码器描述信息作为独立数据来提供,解码器300能够顺利地允许解码操作。
到目前为止,已基于MPEG-4AVC描述了依照本发明的用于位流解码的语法分析方法和解码装置。然而,本发明自然可以同样应用于MPEG-1、MPEG-2、MPEG-4及其它视频数据编码/解码标准而不受任何限制。
同样地,包括在每个部分解码器描述中的信息显然还可被写为用于依据多个标准进行解码的信息,而不是通过只使用关于依据一个标准来执行解码的函数单元与相关函数单元所需的处理操作之间的连接关系的信息来编写。
例如,假设包括在扩展位流中的编码视频数据的多个初始帧、多个后续帧及其它帧是分别按MPEG-2、MPEG-4和MPEG-1编码的。在这种情况下,为了将编码视频数据解码,包括在解码器描述中的部分解码器描述信息显然被定义成以致包括在工具箱335中的符合每个标准的函数单元能够被有机地耦合,以便处理通过使用不同的编码方法编码的每个帧。
到目前为止,虽然已针对上述目的示出并描述了本发明的一些实施例,但本领域的技术人员应认识到在本发明的原理和精神范围内可以进行许多修改、替换和添加,本发明的范围由所附权利要求及其等价物来限定。