视频编码器与解码器的流水线体系结构的制作方法

文档序号:6655638阅读:255来源:国知局
专利名称:视频编码器与解码器的流水线体系结构的制作方法
技术领域
本发明涉及图像数据处理装置,更具体地,涉及用来通过流水线处理以实现图像数据的高速高效编码与解码的图像数据处理装置与方法。
背景技术
由MPEG(运动图像专家组)标准代表的图像数据的编码与解码包含一系列编码与解码过程。例如,MPEG系统解码过程包含变长解码处理、逆量化处理、逆DCT(离散余弦逆变换)处理、以及运动补偿处理,而MPEG系统编码过程包含变长编码处理、DCT处理、量化处理、运动检测处理、运动补偿处理、逆量化处理、以及逆DCT处理。
在如引证的专利文献1所公开的图像数据处理装置中,融入了用来通过这一连串过程实现图像数据的高速编码与解码的现有技术。
图17为显示引证的专利文献1(日本专利申请公开号HEI 7-240844)所公开的现有技术图像数据处理装置1的方框图。图17的图像数据处理装置1包含多个独立的处理单元(例如像素处理单元2,负责DCT与量化处理;运动预测单元3,用于运动预测处理;以及变长处理器6,用于变长编码),以及总体控制处理器5,用来控制以上各处理单元,以并行地按照流水线阶段来操作它们。更具体地,图像数据处理单元1执行对多个独立操作的处理单元的流水线控制,由此实现图像数据的高速编码与解码。
然而,刚才讨论的、被设计来编码与解码的现有技术图像数据处理装置不适用于在以下情况下使用的装置其中在所传送的编码数据中可能经常发生数据错误,如在经常使用无线环境作为传送信道的手机中所遇到的情况。这是因为当在数据传送期间发生数据错误时,现有技术图像数据处理装置不可能满足以下需求——将引起已解码图像退化的数据错误抑制到最小程度,以维持高品质图像。
更具体地,现有技术图像数据处理装置不是被构造来处理以下情况的其中,当在解码过程中、由于编码数据中的数据错误而发生解码错误时,或者当发生了解码错误之后、接续解码过程时,打乱了对流水线处理的控制。作为结果,当在解码过程中发生解码错误时,现有技术图像数据处理装置只能抛弃流水线处理中的所有数据,以利用紧接先前的已解码图像隐藏错误。因此,已解码图像大大退化。

发明内容
考虑到以上,本发明的目的在于提供一种图像数据处理装置与方法,用来实现得力于流水线处理的、图像数据的高速编码与解码,并且避免在解码过程期间、由发生解码错误而引起的流水线控制干扰,由此将已解码图像的退化抑制到最小程度,从而提供高品质图像。
本发明的第一方面提供了一种图像数据处理装置,包含图像数据解码单元,用来允许将送入图像数据处理装置的输入编码数据通过流水线处理解码,由此提供已解码图像数据;流水线控制器,用来控制图像数据解码单元中的流水线处理;以及存储器,用来存储输入编码数据与已解码图像数据。
根据上述配置,提供了一种专门用于解码编码数据、并且用来通过流水线处理以高速运行的图像数据处理装置。
本发明的第二方面提供了一种图像数据处理装置,其中图像数据解码单元包含多阶段数据处理单元,用来实现流水线处理。在该图像数据处理装置中,多阶段数据处理单元包含以下中的至少两个变长解码处理单元,用来实现输入编码数据的变长解码,由此提供量化DCT系数与运动向量;逆量化处理单元,用来对来自变长解码处理单元的量化DCT系数进行逆量化,由此提供经逆量化的DCT系数;逆DCT处理单元,用来实现对来自逆量化处理单元的经逆量化的DCT系数的逆DCT处理,由此提供DCT系数;以及运动补偿处理单元,用来利用来自逆DCT处理单元的DCT系数、来自变长解码处理单元的运动向量、以及存储在存储器中先前帧的已解码图像数据,生成当前帧的已解码图像数据。
根据上述配置,可以得到一种用来通过流水线处理以高速解码MPEG标准编码数据的图像数据处理装置。
本发明的第三方面提供了一种图像数据处理装置,其中流水线控制器包含启动表存储单元,用来包含流水线启动表,在该表中注册关于对图像数据解码单元中流水线处理的控制的启动信息;偏移确定单元,用来确定用于引用启动表存储单元中流水线启动表的偏移值;启动阶段确定单元,用来根据由偏移确定单元确定的偏移值、从启动表存储单元中的流水线启动表读取启动信息,由此确定图像数据解码单元中流水线处理的启动方法;以及流水线控制单元,用来控制偏移确定单元与启动阶段确定单元,由此根据由启动阶段确定单元确定的流水线处理启动方法、控制图像数据解码单元中的流水线处理。
根据以上配置,当图像数据解码单元中的流水线处理由于在解码处理期间发生了解码错误而得到干扰时,根据偏移值引用流水线启动表,由此立即将被干扰的流水线处理带入正常操作。作为结果,图像品质退化被抑制到最小程度,这在其他情况下由于已解码数据中的解码错误而会较显著。
本发明的第四方面提供了一种图像数据处理装置,进一步包含错误隐藏处理单元。在该图像数据处理装置中,变长解码处理单元进一步包含代码错误检测单元,用来检测来自输入编码数据的代码错误。在该图像数据处理装置中,当代码错误检测单元从输入编码数据中检测到其宏块上的代码错误时,错误隐藏处理单元将来自存储器的先前解码的图像数据施加到其上检测到错误的宏块、以及随后的宏块上,由此隐藏已解码图像显示中的干扰。该干扰由输入编码数据中代码错误造成。
本发明的第五方面提供了一种图像数据处理装置,其中当代码错误检测单元检测到输入编码数据宏块上的代码错误时,错误隐藏处理单元从其上要隐藏已解码图像显示中的干扰的目标中、排除先前处理的宏块。该先前处理的宏块比其上检测到错误的宏块早一流水线处理阶段数目而得到处理。
上述两种不同的配置都消除了以下需要当图像数据解码单元中的流水线处理由于在解码过程中发生了解码错误而得到干扰时,抛弃解码处理中的所有数据。相反,直接使用完全解码的宏块上的已解码图像数据,同时将在存储器中存储的先前解码的图像数据施加到由于发生了解码错误而仍然要解码的其他宏块上,结果是可以隐藏已解码图像显示中的干扰。更具体地,对于每个宏块,可以隐藏解码错误,并且由于解码错误所导致的已解码图像图像质量退化可以被抑制到最小程度。
本发明的第六方面提供了一种图像数据处理装置,包含图像数据编码单元,用来允许将送入图像数据处理装置的输入图像数据通过流水线处理编码,由此提供编码数据;流水线控制器,用来控制图像数据编码单元中的流水线处理;以及存储器,用来存储相应于输入图像数据的重新配置的图像数据、以及编码数据。
根据上述配置,提供了一种专门用于编码图像数据、并且用来根据流水线处理以高速运行的图像数据处理装置。
本发明的第七方面提供了一种图像数据处理装置,其中图像数据编码单元包含多阶段数据处理单元,用来实现流水线处理。该多阶段数据处理单元包含以下中的至少两个运动检测处理单元,用来使用为当前帧输入图像数据的输入图像数据、以及存储在存储器中的先前帧的重新配置图像数据,检测当前帧的运动向量;运动补偿处理单元,用来使用由运动检测处理单元检测的运动向量、以及存储器中的先前帧的重新配置图像数据,生成当前帧的预测图像数据;DCT处理单元,用来对由运动补偿处理单元生成的预测图像数据与输入图像数据之间的差异进行DCT处理,由此提供DCT系数;量化处理单元,用来量化来自DCT处理单元的DCT系数,由此提供量化DCT系数;逆量化处理单元,用来对来自量化处理单元的量化DCT系数进行逆量化,由此提供逆量化DCT系数;逆DCT处理单元,用来对来自逆量化处理单元的逆量化DCT系数进行逆DCT处理,由此提供用于获取重新配置图像数据的DCT系数;以及变长编码处理单元,用来对来自量化处理单元的量化DCT系数、以及由运动检测处理单元检测的运动向量进行变长编码,由此提供编码数据。
根据以上配置,提供了一种图像数据处理装置,能够通过流水线处理将图像数据迅速编码为MPEG标准编码数据。
本发明的第八方面提供了一种图像数据处理装置,其中流水线控制器包含启动表存储单元,用来包含流水线启动表,在该表中注册关于对图像数据编码单元中流水线处理的控制的启动信息;偏移确定单元,用来确定用于引用启动表存储单元中的流水线启动表的偏移值;启动阶段确定单元,用来根据由偏移确定单元确定的偏移值、从启动表存储单元中的流水线启动表读取启动信息,由此确定图像数据编码单元中流水线处理的启动方法;以及流水线控制单元,用来控制偏移确定单元与启动阶段确定单元,由此根据由启动阶段确定单元确定的流水线处理启动方法、控制图像数据编码单元中的流水线处理。
根据以上配置,根据任意偏移值,引用流水线启动表,由此使之容易启动进行流水线处理的处理单元。
通过结合附图阅读以下说明书,本发明的以上以及其他目的、特征、优点将变得明显,其中相同的附图标记表示相同的元件。


图1为显示根据本发明第一实施例的图像数据处理装置的方框图;图2(a)为显示根据第一实施例的图像解码处理的图示;图2(b)为显示根据第一实施例的已解码图像的图;图3为显示根据第一实施例的流水线处理的时间图;图4为显示根据第一实施例的流水线控制前半部分的流程图;图5为显示根据第一实施例的流水线控制后半部分的流程图;图6为显示根据第一实施例的流水线启动表引用适配的偏移确定过程前半部分的流程图;图7为显示根据第一实施例的流水线启动表引用适配的偏移确定过程后半部分的流程图;图8为显示根据第一实施例的流水线启动阶段确定过程的流程图;图9(a)为显示根据第一实施例的流水线引导表的方框图;图9(b)为显示根据第一实施例的流水线中断表的方框图;图10为显示根据本发明第二实施例的图像数据处理装置的方框图;图11为显示根据第二实施例的流水线处理的时间图;图12为显示根据第二实施例的流水线控制前半部分的流程图;图13为显示根据第二实施例的流水线控制后半部分的流程图;图14为显示根据第二实施例的错误隐藏处理的流程图;图15为显示根据第三实施例的图像数据处理装置的方框图;图16为显示根据第三实施例的流水线处理的时间图;图17为显示现有技术图像数据处理装置的方框图具体实施方式
现在参照附图描述本发明的实施例。
第一实施例图1为显示根据第一实施例的图像数据处理装置100的方框图。根据本实施例的图像数据处理装置100用来实现对符合由MPEG标准代表的任意运动图像处理标准的编码数据的、得力于流水线处理的快速解码。
如图1所示,根据本实施例的图像数据处理装置100包含图像数据解码单元10、流水线控制器20、存储器30、以及输入/输出接口40。图像数据解码单元10包含变长解码处理单元11、逆量化处理单元12、逆DCT处理单元13、以及运动补偿处理单元14。流水线控制器20包括流水线控制单元21、启动阶段确定单元22、启动表存储单元23、以及偏移确定单元24。
变长解码处理单元11、逆量化处理单元12、逆DCT处理单元13、运动补偿处理单元14、存储器30、以及输入/输出接口40连接到数据总线80。变长解码处理单元11、逆量化处理单元12、逆DCT处理单元13、以及运动补偿处理单元14通过控制线81连接到流水线控制单元21。
变长解码处理单元11、逆量化处理单元12、以及逆DCT处理单元13形成流水线阶段,并且提供所谓的流水线处理。流水线处理由流水线控制单元21通过控制线81控制。以后将讨论流水线处理及其控制的细节。
输入编码数据(或者根据本实施例、编码为变长代码的输入编码数据)在通过输入/输出端口90输入到输入/输出接口40之后、首先由存储器30存储。
变长解码处理单元11用来实现对来自存储器30的所存储的输入编码数据的变长解码,由此提供量化DCT系数与运动向量。
逆量化处理单元12用来对来自变长解码处理单元11的量化DCT系数进行逆量化,由此提供经逆量化的DCT系数。
逆DCT处理单元13用来实现对来自逆量化处理单元12的经逆量化的DCT系数的逆DCT处理,由此提供DCT系数。
运动补偿处理单元14用来利用来自变长解码处理单元11的运动向量、来自逆DCT处理单元13的DCT系数、以及来自存储器30的先前帧的所存储的已解码图像数据,生成当前帧的已解码图像数据。所得到的当前帧的已解码图像数据被存储在存储器30中。
图2(a)为显示根据本实施例的图像解码处理的图示。更具体地,图2(a)显示由根据本实施例的图像数据处理装置100执行的图像解码处理流。
从存储器30读取的编码数据“D10”由变长解码处理单元11经过变长解码处理“P11”,由此提供量化DCT系数“D11”。
量化DCT系数“D11”由逆量化处理单元12经过逆量化处理“P12”,由此提供经逆量化的DCT系数“D12”。
经逆量化的DCT系数“D12”由逆DCT处理单元13经过逆DCT处理“P13”,由此提供DCT系数“D13”。
DCT系数“D13”由运动补偿处理单元14经过运动补偿处理“P14”,由此提供当前帧的已解码图像数据“D14”。运动补偿处理“P14”利用来自变长解码处理“P11”的运动向量、以及来自存储器30的先前帧的所存储的已解码图像数据。
图2(b)为显示根据本实施例的已解码图像400的图。对图2(b)的每个部分图像或宏块401(其包括MB0、MB1、MB2、MB3至MB7),执行图2(a)的图像解码过程。一般地,图像解码过程开始于已解码图像左上角处的宏块“MB0”,并且随后依次应用于右边的宏块(MB0->MB1->MB2...->MB47)。
图3为显示根据本实施例的流水线处理的时间图。根据本实施例,根据本实施例的流水线处理只适用于图2(a)的图像解码过程中的变长解码处理“P11”,逆量化处理“P12”,以及逆DCT处理“P13”。图3的水平轴与垂直轴分别表示经过时间和与图像解码相关的流水线处理阶段。在图像解码过程中,图3的流水线处理阶段包含三个阶段变长解码处理“P11”的第一阶段(S1),逆量化处理“P12”的第二阶段(S2),以及逆DCT处理“P13”的第三阶段(S3)。
此处不讨论处理“P11”、“P12”,“P13”以及“P14”的进一步的细节,因为其在本发明的范围之外。
以下讨论根据本实施例的图3的流水线处理。
当开始图像解码过程时,在初始周期“TP0”,帧头部信息“VOP”经过第一阶段变长解码处理“P11”。以变长编码数据插入到每个帧头部中的帧头部信息“VOP”包含诸如帧内宏块数目等信息。
在随后的周期“TM0”,第一宏块“MB0”经过第一阶段变长解码处理“P11”。
在周期“TM0”中完成处理“P11”之后,在周期“TM1”,第二宏块“MB1”与宏块“MB0”并行地分别经过第一阶段变长解码处理“P11”与第二阶段逆量化处理“P12”。
在下一周期“TV0”,分组头部信息“VP”经过第一阶段变长解码处理“P11”。分组头部信息“VP”包含关于适当插入到宏块数据之间的分组头部的信息,更具体地,其包含随后每个宏块的宏块号码、以及用于逆量化处理的、每个宏块的量化值。
在周期“TV0”完成处理“P11”之后,在下一周期“TM2”,第三宏块“MB2”、宏块“MB1”与宏块“MB0”并行地分别经过第一阶段变长解码处理“P11”、第二阶段逆量化处理“P12”、与第三阶段逆DCT处理“P13”。
在周期“TM2”完成处理之后,在周期“TM3”,第四宏块“MB3”、宏块“MB2”、与宏块“MB1”并行地分别经过第一阶段变长解码处理“P11”、第二阶段逆量化处理“P12”、与第三阶段逆DCT处理“P13”。
随后对于每个待处理的宏块,重复类似的处理,直到达到周期“TM47”,此时已解码图像的最终宏块“MB47”经过第一阶段变长解码处理“P11”。已解码图像的最终宏块的号码可以根据帧内宏块的数目确定,其在周期“TP0”通过解码帧头部信息“VOP”而获得。
在周期“TM47”完成处理之后,在周期“TM48”,宏块“MB47”与“MB46”并行地分别经过第二阶段逆量化处理“P12”、与第三阶段逆DCT处理“P13”。
在周期“TM48”完成处理之后,在周期“TM49”,宏块“MB47”经过第三阶段逆DCT处理“P13”。通过这种方式,完成解码当前帧的流水线处理。
以下参照图4至8的流程图讨论当在根据本实施例的图1的图像数据处理装置100中执行图3的流水线处理时,如何实现流水线控制。该流水线控制由图1的流水线控制器20实现。
图4为显示根据本实施例的流水线控制前半部分的流程图。图5为显示根据本实施例的流水线控制后半部分的流程图。在图4中,诸如“A”、“B”、“C”等加圈标记分别链接到图5中的加圈标记。
以下讨论根据本实施例的、对于图3所示每个周期的、符合图4的流程图的流水线控制。
周期“TP0”参照图4,当开始图像解码过程时,启动图1流水线控制器20中的流水线控制单元21。
在步骤“S11”,流水线控制单元21操作变长解码处理单元11,以实现对变长编码数据中的帧头部信息“VOP”(其插入到每个帧头部处)的变长解码(VLD)过程,由此获得帧内宏块的数目(MB_IN_VOP)。在本周期,假定所获得的帧内宏块的数目(MB_IN_VOP)等于48,如下MB_IN_VOP=48。
在步骤“S12”,流水线控制单元21初始化宏块计数器(MBA),由此将其设置等于零,如下MBA=0。
在步骤“S13”,为了确定是否已经完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP,其中符号“>=”表示左边等于或大于右边。目前,MBA=0;并且MB_IN_VOP=48。
因此,步骤“S13”的确定结果为“否”,这意味着还有剩余宏块要处理。该例程前进到步骤“S14”。
周期“TM0”在步骤“S14”,流水线控制单元21初始化流水线中断标志(PIPE_END),由此如下地设置它PIPE_END=0。
在步骤“S15”,流水线控制单元21初始化“OFFSET1”(偏移1),由此如下地设置它OFFSET1=0。
OFFSET1用来引用以后讨论的流水线引导表。
在步骤“S16”,流水线控制单元21初始化宏块处理标志(MB_PROC),由此如下地设置它MB_PROC=1.
在步骤“S17”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?,其中,符号“==”表示“相等”。OFFSET1当前等于零(OFFSET1=0),并且步骤“S17的确定结果为“是”,这以为着流水线处理为流水线的第一处理。该例程前进到步骤“S19”。
在步骤“S19”,启动图1的偏移确定单元24,以实现流水线启动表引用适配的偏移确定过程。偏移确定单元24确定用于引用流水线启动表(流水线引导表与流水线中断表)的偏移值(OFFSET1、OFFSET2、与OFFSET3)。以后讨论流水线启动表。
为了启动偏移确定单元24,从流水线控制单元21向偏移确定单元24传送流水线中断标志(PIPE_END)、宏块处理标志(MB_PROC)、以及OFFSET1,用于以后讨论的流水线引导表。当前从流水线控制单元21向偏移确定单元24传送的参数为PIPE_END=0,MB_PROC=1,以及OFFSET1=0。
图6与7的流程图更具体地显示了步骤“S19”中的流水线启动表引用适配的偏移确定过程。具体地,图6为显示根据本实施例的流水线启动表引用适配的偏移确定过程前半部分的流程图,图7为显示其后半部分的流程图。在图6中,加圈标记“D”链接到图7中的加圈标记。
当开始流水线启动表引用适配的偏移确定过程时,在图6的步骤“S41”,启动图1的启动表存储单元23,并且偏移确定单元24确定是否开始了流水线处理中的中断。更具体地,偏移确定单元24确定PIPE_END是否不等于零,如下PIPE_END!=0?,其中符号“!=”表示“不等于”。
PIPE_END当前等于零(PIPE_END=0),并且步骤“S41”的确定结果为“否”,这意味着没有开始流水线处理中的中断。该例程前进到步骤“S42”。
在步骤“S42”,偏移确定单元24初始化流水线引导表适配的偏移OFFSET1,由此如下地设置它OFFSET1=0。
在步骤“S43”,偏移确定单元24初始化流水线中断表适配的偏移OFFSET2,由此如下地设置它OFFSET2=0。
在步骤“S44”,偏移确定单元24初始化流水线中断表适配的偏移OFFSET3,由此如下地设置它OFFSET3=-32768。
如上所述,在步骤“S42”、“S43”与“S44”中,偏移确定单元24进行初始化,由此终止图4步骤“S19”中的流水线启动表引用适配的偏移确定过程。
此时,从偏移确定单元24向流水线控制单元21返回以下参数OFFSET1=0;OFFSET2=0;OFFSET3=-32768;以及PIPE_END=0。
在完成了图4步骤“S19”中的流水线启动表引用适配的偏移确定过程之后,该例程前进到步骤“S20”。
在步骤“S20”,为了确定流水线处理是否不被中断,流水线控制单元21确定OFFSET2是否等于-32768,OFFSET2==-32768?流水线中断表适配的偏移OFFSET2当前具有值零(OFFSET2=0),并且步骤“S20”的确定结果为“否”,这意味着流水线处理要被中断。该例程前进到图5的步骤“S21”。
在图5的步骤“S21”,启动图1的启动阶段确定单元22,以实现流水线启动阶段确定过程。更具体地,在步骤“S21”的流水线启动阶段确定过程中,启动阶段确定单元22确定流水线阶段启动参数(PIPEKICK),以用于启动以下流水线阶段由变长解码处理单元11实现的变长解码处理“P11”、由逆量化处理单元12实现的逆量化处理“P12”、以及由逆DCT处理单元13实现的逆DCT处理“P13”。
为了启动该启动阶段确定单元22,从流水线控制单元21向启动阶段确定单元22传送流水线引导表适配的OFFSET1、流水线中断表适配的OFFSET2、以及流水线中断表适配的OFFSET3。当前从流水线控制单元21向启动阶段确定单元22传送的参数为OFFSET1=0;OFFSET2=0;OFFSET3=-32768。
图8的流程图更具体地显示了步骤“S21”中的流水线启动阶段确定过程。更具体地,图8为显示根据本实施例的流水线启动阶段确定过程的流程图。以下参照图8讨论流水线启动阶段确定过程。
当开始流水线启动阶段确定过程时,启动图1的启动阶段确定单元22。在步骤“S61”,为了确定流水线是否在引导中,启动阶段确定单元22确定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1当前等于0(OFFSET1=0),并且步骤“S61”的确定结果为“是”,这意味着流水线正在引导。该例程前进到步骤“S62”。
在步骤“S62”,启动阶段确定单元22从流水线引导表(TABLE1)获得流水线阶段启动参数(PIPEKICK)。更具体地,启动阶段确定单元22利用流水线引导表适配的OFFSET1,引用流水线引导表(TABLE1),由此计算如下PIPEKICK=TABLE1[OFFSET1]。
置于启动表存储单元23中的流水线引导表(TABLE1)包含关于变长解码处理单元11、逆量化处理单元12、与逆DCT处理单元13的相应启动信息。
图9(a)为显示根据本实施例的流水线引导表(TABLE1)420的框图。图9(b)为显示根据本实施例的流水线中断表(TABLE2)421的框图。
流水线引导表(TABLE1)420包含两个不同的元素“_S1”与“-S1|_S2”。元素“_S1”表示流水线处理中第一阶段(S1)变长解码处理“P11”的启动。同时,元素“_S1|_S2”表示第一阶段(S1)变长解码处理“P11”与第二阶段(S2)逆量化处理“P12”的并行启动。
在图8的步骤“S62”,OFFSET1等于零(OFFSET1=0),并且启动阶段确定单元22从流水线引导表420获得流水线阶段启动参数(PIPEKICK),如下PIPEKICK=_S1。
在下一步骤“S63”,为了增加流水线引导表适配的OFFSET1,启动阶段确定单元22如下执行OFFSET1++,其中符号“++”表示对左侧变量增加值1,由此如下地设置OFFSET1OFFSET=1。
由此终止流水线启动阶段确定过程。
当终止启动阶段确定单元22中的流水线启动阶段确定过程时,流水线引导表适配的OFFSET1、流水线中断表适配的OFFSET2、流水线中断表适配的OFFSET3、以及流水线阶段启动参数(PIPEKICK)从启动阶段确定单元22返回流水线控制单元21。从启动阶段确定单元22返回到流水线控制单元21的参数为
OFFSET1=1;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1。
现在终止图5步骤“S21”中的流水线启动阶段确定过程。该例程前进到图5的步骤“S22”。
在步骤“S22”,流水线控制单元21启动流水线处理。根据步骤“S21”中确定的流水线阶段启动参数(PIPEKICK),启动步骤“S22”中的流水线处理。更具体地,流水线控制单元21启动对应于在流水线阶段启动参数(PIPEKICK)中设置的每个流水线阶段的处理单元。流水线阶段启动参数(PIPEKICK)当前等于“_S1”(PIPEKICK=_S1),由此只启动为第一阶段(S1)变长解码处理“P11”设计的变长解码处理单元11。
在步骤“S23”,流水线控制单元21等待在步骤“S22”中启动的变长解码处理“P11”结束。当该处理终止时,该例程前进到步骤“S24”。
在步骤“S24”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S24”的确定结果为“否”,这意味着流水线处理没有正在被中断。该例程前进到步骤“S25”。
在步骤“S25”,为了增加宏块计数器(MBA),流水线控制单元21进行如下计算MBA++,由此如下设置MBAMBA=1。
在下一步骤“S26”,流水线控制单元21确定是否存在头部。
变长编码数据在插入宏块数据之间的分组头部信息“VP”的头部包含同步字。该同步字包含特定比特串,例如“Ox000001”,其中字符“x”表示值“0”或“1”。对同步字的检测确定是否存在头部。
步骤“S26”的确定结果为“否”,这意味着不存在头部。该例程前进到步骤“S29”。
在步骤“S29”,为了确定是否完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA与MB_IN_VOP如下定义MBA=1;并且MB_IN_VOP=48。
因此,步骤“S29”的确定结果为“否”,这意味着仍然剩余有宏块要处理。该例程直接返回到图4的步骤“S16”,以开始在下一周期的处理。
现在,终止周期“TM0”期间的处理。
周期TM1、TV0本周期的处理开始于图4的步骤“S16”。
在本周期开始处,主要参数如下地设置。
MBA=1;PIPE_END=0;MB_PROC=1;OFFSET1=1;OFFSET2=0;以及OFFSET3=-32768。
在步骤“S16”,流水线控制单元21初始化宏块处理标志(MB_PROC),如下MB_PROC=1。
在步骤“S17”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于一(OFFSET1=1),并且步骤“S17”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理,该例程前进到步骤“S18”。
在步骤“S18”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下PIPE_END!=0。
PIPE_END当前等于零(PIPE_END=0),并且步骤“S18”的确定结果为“否”,这意味着没有开始流水线处理中的中断。该例程前进到图5的步骤“S21”。
在图5的步骤“S21”,启动该启动阶段确定单元22。此时,从流水线控制单元21向启动阶段确定单元22传送如下给定的参数,由此执行图8的流水线启动阶段确定过程。
OFFSET1=1;OFFSET2=0;以及OFFSET3=-32768。
在图8的步骤“S61”,为了确定流水线是否在引导中,启动阶段确定单元22确定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1当前等于一(OFFSET1=1),并且步骤“S61”的确定结果为“是”,这意味着流水线正在引导。该例程前进到步骤“S62”。
在步骤“S62”,启动阶段确定单元22利用“OFFSET1=1”,引用流水线引导表420,并且计算如下PIPEKICK=TABLE1[OFFSET1],由此获得流水线阶段启动参数(PIPEKICK),如下PIPEKICK=_S1|_S2。
在步骤“S63”,启动阶段确定单元22计算如下OFFSET1++,由此设置OFFSET1如下OFFSET=2。
现在终止流水线启动阶段确定过程。
作为结果,在流水线启动阶段确定过程的结束处,从启动阶段确定单元22返回到流水线控制单元21的参数为如下OFFSET1=2;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2。
在图5的下一步骤“S22”,流水线控制单元21启动流水线处理。在步骤“S22”启动流水线处理时,根据在流水线阶段启动参数(PIPEKICK)中设置的元素“_S1|_S2”,并行地启动两个流水线处理阶段第一阶段(S1)变长解码处理“P11”与第二阶段(S2)逆量化处理“P12”。
在步骤“S23”,流水线控制单元21等待并行启动的变长解码处理“P11”与逆量化处理“P12”结束。
在步骤“S24”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-31768?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S24”的确定结果为“否”,这意味着流水线处理没有正在被中断。该例程前进到步骤“S25”。
在步骤“S25”,流水线控制单元21如下计算MBAMBA++,由此如下设置MBAMBA=2。
在步骤“S26”,确定是否存在头部。假定步骤“S26”的确定结果为“是”,这意味着存在头部。该例程前进到步骤“S27”。
在步骤“S27”,为了重置宏块处理标志(MB_PROC),流水线控制单元21如下设置MB_PROCMB_PROC=0。
在步骤“S28”,处理头部。
现在,终止周期“TM1”与“TV0”期间的处理。该例程返回到图4的步骤“S16”。
周期“TM2”本周期的处理开始于图4的步骤“S16”。
在本周期开始处,主要参数如下地设置。
MBA=2;PIPE_END=0;MB_PROC=1;OFFSET1=2;OFFSET2=0;以及OFFSET3=-32768。
在步骤“S16”,流水线控制单元21初始化宏块处理标志(MB_PROC),由此将其设置如下MB_PROC=1。
在步骤“S17”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于二(OFFSET1=2),并且步骤“S17”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理,该例程前进到步骤“S18”。
在步骤“S18”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下PIPE_END!=0?。
PIPE_END当前等于零(PIPE_END=0),并且步骤“S18”的确定结果为“否”,这意味着没有开始流水线处理中的中断。该例程前进到图5的步骤“S21”。
在图5的步骤“S21”,启动该启动阶段确定单元22。此时,从流水线控制单元21向启动阶段确定单元22传送如下给定的参数,由此执行图8的流水线启动阶段确定过程。
OFFSET1=2;OFFSET2=0;以及OFFSET3=-32768。
在图8的步骤“S61”,为了确定流水线是否在引导中,确定OFFSET1是否小于二,从而OFFSET1<2?OFFSET1当前等于二(OFFSET1=2),并且步骤“S61”的确定结果为“否”,这意味着流水线没有正在被引导。该例程前进到步骤“S64”。
在步骤“S64”,为了确定流水线处理是否正在被中断,启动阶段确定单元22确定OFFSET3是否等于或大于零,即OFFSET3>=0?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S64”的确定结果为“否”,这意味着流水线处理没有正在被中断。该例程前进到步骤“S67”。
在步骤“S67”,为了启动所有流水线阶段,启动阶段确定单元22设置流水线阶段启动参数(PIPEKICK),从而PIPEKICK=_S1|_S2|_S3。
在流水线处理中,元素“_S1|_S2|_S3”表示并行启动第一阶段(S1)变长解码处理“P11”、第二阶段(S2)逆量化处理“P12”、以及第三阶段(S3)逆DCT处理“P13”。
在步骤“S68”,启动阶段确定单元22将流水线引导表适配的OFFSET1设置为最大正值,如下OFFSET1=32767。
现在终止流水线启动阶段确定过程。
在流水线启动阶段确定过程结束处,从启动阶段确定单元22返回到流水线控制单元21如下给定的参数OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2|_S3。
现在回去参照图5,在步骤“S22”,流水线控制单元21启动流水线处理。在步骤“S22”启动流水线处理时,根据在流水线阶段启动参数(PIPEKICK)中设置的元素“_S1|_S2|_S3”,并行地启动所有流水线处理阶段,即第一阶段(S1)变长解码处理“P11”、第二阶段(S2)逆量化处理“P12”、以及第三阶段(S3)逆DCT处理“P13”。
在步骤“S23”,流水线控制单元21等待并行启动的变长解码处理“P11”、逆量化处理“P12”、以及逆DCT处理“P13”结束。
在下一步骤“S24”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S24”的确定结果为“否”,这意味着流水线处理没有正在被中断。该例程前进到步骤“S25”。
在步骤“S25”,流水线控制单元21如下计算MBAMBA++,由此如下设置MBAMBA=3。
在下一步骤“S26”,确定是否存在头部。假定步骤“S26”的确定结果为“否”,这意味着不存在头部。该例程前进到步骤“S29”。
在步骤“S29”,为了确定是否完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_TN_VOP?
目前,MBA与MB_IN_VOP如下定义MBA=3;并且MB_IN_VOP=48,因此,步骤“S29”的确定结果为“否”,这意味着仍然剩余有宏块要处理。现在,终止周期“TM2”期间的处理。该例程返回步骤“S16”,以开始在下一周期的处理。
周期“TM3”到“TM46”这些周期期间的处理基本与上述的“TM2”周期期间的处理相同,这里省略其相关描述。
周期“TM47”本周期的处理开始于图4的步骤“S16”。
在本周期开始处,主要参数如下地设置MBA=47;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=0;以及OFFSET3=-32768。
在步骤“S16”,流水线控制单元21初始化宏块处理标志(MB_PROC),如下MB_PROC=1。
在步骤“S17”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S17”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理,该例程前进到步骤“S18”。
在步骤“S18”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下PIPE_END!=0?。
PIPE_END当前等于零(PIPE_END=0),并且步骤“S18”的确定结果为“否”,这意味着没有开始流水线处理中的中断。该例程前进到图5的步骤“S21”。
在图5的步骤“S21”,启动该启动阶段确定单元22。此时,从流水线控制单元21向启动阶段确定单元22传送下述讨论的参数,由此执行图8的流水线启动阶段确定过程。
OFFSET1=32767;OFFSET2=0;以及OFFSET3=-32768。
在图8的步骤“S61”,为了确定流水线是否在引导中,确定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S61”的确定结果为“否”,这意味着流水线没有正在被引导。该例程前进到步骤“S64”。
在步骤“S64”,为了确定流水线处理是否正在被中断,启动阶段如下确定单元22确定OFFSET3是否等于或大于零,即OFFSET3>=0?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S64”的确定结果为“否”,这意味着流水线处理没有正在被中断。该例程前进到步骤“S67”。
在步骤“S67”,为了启动所有流水线阶段,启动阶段确定单元22设置流水线阶段启动参数(PIPEKICK),从而PIPEKICK=_S1|_S2|_S3。
在步骤“S68”,启动阶段确定单元22将流水线引导表适配的OFFSET1设置为最大正值,如下OFFSET1=32767。
现在终止流水线启动阶段确定过程。
在流水线启动阶段确定过程结束处,从启动阶段确定单元22返回到流水线控制单元21下述讨论的参数OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2|_S3。
在图5的步骤“S22”,流水线控制单元21启动流水线处理。在步骤“S22”启动流水线处理时,根据在流水线阶段启动参数(PIPEKICK)中设置的元素“_S1|_S2|_S3”,并行地启动所有流水线处理阶段,即第一阶段(S1)变长解码处理“P11”、第二阶段(S2)逆量化处理“P12”、以及第三阶段(S3)逆DCT处理“P13”。
在步骤“S23”,流水线控制单元21等待并行启动的变长解码处理“P11”、逆量化处理“P12”、以及逆DCT处理“P13”结束。
在下一步骤“S24”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,从而OFFSET3!=-32768?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S24”的确定结果为“否”,这意味着流水线处理没有被正在中断。该例程前进到步骤“S25”。
在步骤“S25”,流水线控制单元21进行如下计算MBA++,由此如下设置MBAMBA=48。
在下一步骤“S26”,确定是否存在头部。假定步骤“S26”的确定结果为“否”,这意味着不存在头部。该例程前进到步骤“S29”。
在步骤“S29”,为了确定是否完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA与MB_IN_VOP如下定义MBA=48;并且MB_IN_VOP=48,因此,步骤“S29”的确定结果为“是”,这意味着完全处理了所有帧内宏块。该例程前进到步骤“S30”。
在步骤“S30”,流水线控制单元21设置流水线中断标志(PIPE_END)如下PIPE_END=1。
现在,终止本周期“TM47”期间的处理,该例程返回步骤“S16”,以开始在下一周期的处理。
周期“TM48”
本周期的处理开始于图4的步骤“S16”。
在本周期开始处,主要参数如下地设置。
MBA=48;PIPE_END=1;MB_PROC=1;OFFSET1=32767;OFFSET2=0;以及OFFSET3=-32768。
在步骤“S16”,为了初始化宏块处理标志(MB_PROC),流水线控制单元21将其设置如下MB_PROC=1。
在步骤“S17”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S17”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理,该例程前进到步骤“S18”。
在步骤“S18”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下PIPE_END!=0?。
PIPE_END当前等于一(PIPE_END=1),并且步骤“S18”的确定结果为“是”,这意味着开始了流水线处理中的中断。该例程前进到步骤“S19”。
在步骤“S19”,执行流水线启动表引用适配的偏移确定过程。更具体地,执行根据图6与7流程图的处理,图6与7分别显示了流水线启动表引用适配的偏移确定过程的前半部分与后半部分。
此时,从流水线控制单元21向偏移确定单元24传送下述参数PIPE_END=1,MB_PROC=1,并且OFFSET1=32767。
当开始图6的流水线启动表引用适配的偏移确定过程时,在步骤“S41”,确定是否开始了流水线处理中的中断。更具体地,偏移确定单元24确定PIPE_END是否不等于零,如下PIPE_END!=0?,PIPE_END当前等于一(PIPE_END=1),并且步骤“S41”的确定结果为“是”,这意味着开始了流水线处理中的中断。该例程前进到步骤“S45”。
在步骤“S45”,为了确定流水线处理是否为流水线的第一处理,偏移确定单元24确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S45”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理。该例程前进到步骤“S46”。
在步骤“S46”,为了确定流水线处理是否为流水线的第二处理,偏移确定单元24确定OFFSET1是否等于一,如下OFFSET1==1?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S46”的确定结果为“否”,这意味着流水线处理不是流水线的第二处理。该例程前进到步骤“S49”。
在步骤“S49”,为了设置流水线中断表适配的OFFSET2,偏移确定单元24进行如下计算OFFSET2=MIN(OFFSET1,1)。
在以上公式中,函数MIN(x,y)指将变量“x”与“y”之间的较小变量值用做函数值。
OFFSET1当前等于32767(OFFSET1=32767),并且计算结果为“OFFSET2=1”。
在下一步骤“S50”,为了确定是否正在处理宏块,偏移确定单元24确定MB_PROC是否不等于零,如下MB_PROC!=0?。
MB_PROC当前等于一(MB_PROC=1),并且步骤“S50”的确定结果为“是”,这意味着正在处理宏块。该例程前进到图7的步骤“S52”。
在图7的步骤“S52”,为了设置流水线中断表适配的OFFSET3,偏移确定单元24设置OFFSET3如下OFFSET3=1,
该例程前进到步骤“S53”。
在步骤“S53”,为了确定是否正在处理宏块,偏移确定单元24确定MB_PROC是否不等于零,如下MB_PROC!=0?。
MB_PROC当前等于一(MB_PROC=1),并且步骤“S53”的确定结果为“是”,这意味着正在处理宏块。该例程前进到步骤“S55”。
在步骤“S55”,为了设置流水线引导表适配的OFFSET1,偏移确定单元24设置OFFSET1等于32767,如下OFFSET1=32767,然后,该例程前进到步骤“S56”。
在步骤“S56”,为了重置流水线中断标志,偏移确定单元24设置PIPE_END如下PIPE_END=0。
在以上设置结束之后,偏移确定单元24终止图4步骤“S19”中的流水线启动表引用适配的偏移确定过程。此时,从偏移确定单元24返回到流水线控制单元21下述参数OFFSET1=32767;OFFSET2=1;OFFSET3=1;以及PIPE_END=0。
该例程前进到图4的步骤“S20”。为了确定流水线处理是否不被中断,流水线控制单元21确定OFFSET2是否等于-32768,如下OFFSET2==-32768?OFFSET2当前等于一(OFFSET2=1),并且步骤“S20”的确定结果为“否”,这意味着要中断流水线处理。该例程前进到图5的步骤“S21”。
在步骤“S21”,启动该启动阶段确定单元22。此时,从流水线控制单元21向启动阶段确定单元22传送下述参数,由此执行图8的流水线启动阶段确定过程。
OFFSET1=32767;OFFSET2=1;以及OFFSET3=1。
在图8的步骤“S61”,为了确定流水线是否在引导中,启动阶段确定单元22确定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S61”的确定结果为“否”。这意味着流水线没有正在被引导。该例程前进到步骤“S64”。
在步骤“S64”,为了确定流水线处理是否正在被中断,启动阶段确定单元22确定OFFSET3是否等于或大于零,如下OFFSET3>=0?OFFSET3当前等于一(OFFSET3=1),并且步骤“S64”的确定结果为“是”,这意味着流水线处理正在被中断。该例程前进到步骤“S65”。
在步骤“S65”,启动阶段确定单元22计算流水线阶段启动参数(PIPEKICK),如下PIPEKICK=TABLE2[OFFSET2][OFFSET3],由此从流水线中断表420获得参数,如下PIPEKICK=_S2|_S3。
该例程前进到步骤“S66”。
在步骤“S66”,为了减少流水线中断表适配的OFFSET3,启动阶段确定单元22进行如下计算OFFSET3--其中,符号“--”表示将左侧变量值只减少1,由此设置OFFSET3,如下OFFSET3=0。
现在终止流水线启动阶段确定过程。此时从启动阶段确定单元22返回到流水线控制单元21下述参数OFFSET1=32767;OFFSET2=1;OFFSET3=0;以及PIPEKICK=_S2|_S3。
该例程前进到图5的步骤“S22”,以启动流水线处理。根据在步骤“S21”中确定的流水线阶段启动参数“PIPEKICK=_S2|_S3”,启动步骤“S22”的流水线处理。作为结果,并行地启动第二阶段(S2)逆量化处理“P12”、以及第三阶段(S3)逆DCT处理“P13”。
在下一步骤“S23”,流水线控制单元21等待逆量化处理“P12”、以及逆DCT处理“P13”结束。在步骤“S24”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3当前等于零(OFFSET3=0),并且步骤“S24”的确定结果为“是”,这意味着流水线处理正在被中断。该例程前进到步骤“S31”。
在步骤“S31”,为了确定是否终止了流水线处理中的中断,流水线控制单元21确定OFFSET3是否等于-1,如下OFFSET3!==-1?OFFSET3当前等于零(OFFSET3=0),并且步骤“S24”的确定结果为“否”,这意味着流水线处理中的中断仍然在进行中。现在终止本周期“TM48”期间的处理,并且该例程返回图4的步骤“S16”。
周期“TM49”本周期的处理开始于图4的步骤“S16”。
在本周期开始处,主要参数如下地设置。
MBA=48;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=1;以及OFFSET3=0。
在步骤“S16”,为了初始化宏块处理标志(MB_PROC),流水线控制单元21将其设置如下MB_PROC=1。
在步骤“S17”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S17”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理,该例程前进到步骤“S18”。
在步骤“S18”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下PIPE_END!=0?。
PIPE_END当前等于零(PIPE_END=0),并且步骤“S18”的确定结果为“否”,这意味着没有开始流水线处理中的中断。该例程前进到图5中的步骤“S21”。
在图5中的步骤“S21”,启动该启动阶段确定单元22。此时,从流水线控制单元21向启动阶段确定单元22传送下述参数,由此执行图8的流水线启动阶段确定过程。
OFFSET1=32767;OFFSET2=1;以及OFFSET3=0。
在图8的步骤“S61”,为了确定流水线是否在引导中,启动阶段确定单元22确定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S61”的确定结果为“否”,这意味着流水线没有正在被引导。该例程前进到步骤“S64”。
在步骤“S64”,为了确定流水线处理是否正在被中断,启动阶段确定单元22确定OFFSET3是否等于或大于零,即OFFSET3>=0?OFFSET3当前等于零(OFFSET3=0),并且步骤“S64”的确定结果为“是”,这意味着流水线处理正在被中断。该例程前进到步骤“S65”。
在步骤“S65”,启动阶段确定单元22计算流水线阶段启动参数(PIPEKICK),如下PIPEKICK=TABLE2[OFFSET2][OFFSET3],由此从流水线中断表420获得如下参数PIPEKICK=_S3,然后,该例程前进到步骤“S66”。
在步骤“S66”,为了减少流水线中断表适配的OFFSET3,启动阶段确定单元22进行如下计算OFFSET3--,由此设置OFFSET3,如下OFFSET3=-1。
现在终止流水线启动阶段确定过程。此时从启动阶段确定单元22返回到流水线控制单元21下述参数OFFSET1=32767;OFFSET2=1;OFFSET3=-1;以及PIPEKICK=-S3。
该例程前进到图5的步骤“S22”,以启动流水线处理。根据在步骤“S21”中确定的流水线阶段启动参数“PIPEKICK=_S3”,启动步骤“S22”的流水线处理。相应地,启动第三阶段(S3)逆DCT处理“P13”。
在下一步骤“S23”,流水线控制单元21等待逆DCT处理“P13”结束。
在步骤“S24”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3当前等于负一(OFFSET3=-1),并且步骤“S24”的确定结果为“是”,这意味着流水线处理正在被中断。该例程前进到步骤“S31”。
在步骤“S31”,为了确定是否已经终止流水线处理中的中断,流水线控制单元21确定OFFSET3是否等于负一,如下OFFSET3==-1?OFFSET3当前等于负一(OFFSET3=-1),并且步骤“S31”的确定结果为“是”,这意味着终止了流水线处理中的中断。该例程前进到图4的步骤“S13”。
在步骤“S13”,为了确定是否已经完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA与MB_TN_VOP定义如下MBA=48;并且MB_IN_VOP=48。
因此,步骤“S13”的确定结果为“是”,这意味着已经完全处理了所有帧内宏块。现在终止解码处理。
根据本实施例,提供变长解码处理单元11、逆量化处理单元12、以及逆DCT处理单元13作为图像解码处理中的处理单元。可替换地,可以提供任意其他处理单元。作为另一个替换方案,可以将多个处理单元集成到单个处理单元中。这些替换方案提供了与本实施例类似的优点,虽然在流水线处理阶段的数目上有些变化。
第二实施例图10为显示根据第二实施例的图像数据处理装置200的方框图。与根据先前实施例的图像数据处理装置100类似,根据本实施例的图像数据处理装置200提供了对符合由MPEG标准代表的任意运动图像处理标准的编码数据的、得力于流水线处理的高速解码。另外,根据本实施例的图像数据处理装置200提供了对已解码图像显示中的干扰的高效隐藏,在存在输入编码数据代码错误的情况下,该干扰在其他情况下会显著。
在图10中,对于与图1中类似的元件,给于相同的附图标记,并且此处省略与其相关的描述。
图10的根据本实施例的图像数据处理装置200包含图像数据解码单元10、流水线控制器20、存储器30、输入/输出接口40、以及错误隐藏处理单元50。
图像数据解码单元10包含变长解码处理单元11、逆量化处理单元12、逆DCT处理单元13、以及运动补偿处理单元14。变长解码处理单元11包含代码错误检测单元15。
流水线控制器20包括流水线控制单元21、启动阶段确定单元22、启动表存储单元23、以及偏移确定单元24。
连接到数据总线80的错误隐藏处理单元50通过控制线81连接到流水线控制器20。
其他元件与根据先前实施例的图像数据处理装置100中的类似,并且此处省略与其相关的描述。
图11为显示根据本实施例的流水线处理的时间图。
如图11所示,根据本实施例的流水线处理包含变长解码处理“P11”、逆量化处理“P12”、以及逆DCT处理“P13”。图11的水平轴与垂直轴分别表示经过时间和与图像解码相关的流水线处理阶段。该流水线处理阶段包含三个阶段变长解码处理“P11”的第一阶段(S1)、逆量化处理“P12”的第二阶段(S2)、以及逆DCT处理“P13”的第三阶段(S3)。
此处省略处理“P11”、“P12”,以及“P13”的进一步的细节,因为其在本发明的范围之外。
参照图11的流水线处理时间图,显示响应于周期“TM2”期间、在宏块“MB2”经历变长解码处理“P11”的过程中发生解码错误,而执行错误隐藏处理。
周期“TP0”到“TV0”与根据先前实施例的图3的流水线处理时间图中的类似,此处省略与其相关的进一步的细节。
在周期“TV0”中对分组头部信息(VP)的变长解码处理“P11”结束之后的周期“TM2”,宏块“MB2”、宏块“MB1”、与宏块“MB0”并行地分别经过变长解码处理“P11”、逆量化处理“P12”、与逆DCT处理“P13”。
本实施例假定代码错误检测单元15在宏块“MB2”经历变长解码处理“P11”的过程中、从来自宏块“MB2”的变长代码数据中检测到错误,由此使之不可能正常地解码当前宏块“MB2”以及随后直至“MB47”的宏块。此后执行错误隐藏处理,以抑制数据错误引起的已解码图像中的干扰。在错误隐藏处理之前,流水线控制器20允许流水线处理中的所有宏块“MB0”至“MB2”完全经过三阶段处理直至第三阶段逆DCT处理“P13”。然而,宏块“MB2”不需要经过第二阶段逆量化处理“P12”以及第三阶段逆DCT处理“P13”两者,这是因为在宏块“MB2”经历第一阶段变长解码处理“P11”的过程中发生的数据错误使宏块“MB2”不需要经历随后阶段的进一步处理。
相应地,在周期“TM2”,流水线控制器20终止施加到宏块“MB2”的变长解码处理“P11”(但是,在检测到错误以及所伴随的解决错误之后终止处理“P11”)、施加到宏块“MB1”的逆量化处理“P12”、以及施加到宏块“MB0”的逆DCT处理“P13”的并行处理。
在周期“TM3”,宏块“MB2”只经历逆DCT处理“P13”。
在周期“TM3”的处理结束之后的周期“TC0”,宏块“MB2”至“MB47”经过错误隐藏处理。
根据错误隐藏处理的一种方法,通过以下隐藏错误用在存储器30中存储的、相应的先前帧(例如紧接先前的帧)的已解码图像,替换出错的宏块以及随后的宏块。在根据本实施例的图像数据处理装置200中,不能被正常解码的宏块“MB2”至“MB47”可以由以下替换紧接先前帧的相同位置上的已解码图像的相应宏块。作为结果,提供了完整的已解码图像帧。
考虑到在图10根据本实施例的图像数据处理装置200中可能会发生图11的解码错误,以下参照根据先前实施例的图6至9以及根据本实施例的图12至13讨论流水线控制方法。
图12为显示根据本实施例的流水线控制方法前半部分的流程图,图13为显示其后半部分的流程图。在图12中,加圈标记“E”、“F”、“G”分别链接到图13中的加圈标记。
周期“TP0”、“TM0””到“TM1”、以及“TV0”本实施例假设在当前周期期间没有发生解码错误,并且在图12的步骤“S78”的错误标志初始化过程中,如下设置错误标志(ERR),使其等于零ERR=0。
相应地,在确定存在错误的、图12的步骤“S73”与“S79”,每个确定结果都为“否”。作为结果,本周期期间实际执行的流水线控制流与根据先前实施例的周期“TP0”、“TM0”到“TM1”、以及“TV0”期间的类似,并且此处省略其相关描述。
周期“TM2”根据上述假设,在本周期,检测到流水线处理中发生了解码错误。本周期期间的处理开始于图12的步骤“S79”。
在本周期的开始处,主要参数设置如下。
MBA=2;PIPE_END=0;MB_PROC=0;OFFSET1=2;OFFSET2=0;OFFSET3=-32768;以及ERR=0。
在步骤“S79”,为了确定是否存在错误,流水线控制单元21确定ERR是否不等于0,如下ERR!=0?当在变长解码处理“P11”期间、从变长代码数据中检测到数据错误时,用于确定错误存在的错误标志(ERR)由代码错误检测单元15设置等于一(ERR=1)。
错误标志(ERR)当前等于零(ERR=0),并且步骤“S79”确定的结果为“否”,这意味着不存在错误。该例程前进到步骤“S81”。
在步骤“S81”,流水线控制单元21初始化宏块处理标志(MB_PROC),如下MB_PROC=1。
该例程前进到图13的步骤“S82”。
在图13的步骤“S82”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于二(OFFSET1=2),并且步骤“S82”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理。该例程前进到步骤“S83”。
在步骤“S83”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下PIPE_END!=0?。
因为PIPE_END当前等于零(PIPE_END=0),所以步骤“S83”的确定结果为“否”,这意味着没有开始流水线处理中的中断。该例程前进到步骤“S86”。
在步骤“S86”,开始流水线启动阶段确定过程。此时,从图10的流水线控制单元21向图10的启动阶段确定单元22传送下述参数。
OFFSET1=2;OFFSET2=0;以及OFFSET3=-32768。
在步骤“S86”,开始流水线启动阶段确定过程,以执行根据图6与7流程图的处理。根据本实施例的流水线启动阶段确定过程与根据先前实施例的类似,并且此处省略其相关描述。
在步骤“S86”流水线启动阶段确定过程的结束处,从启动阶段确定单元22返回到流水线控制单元21下述参数。
OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2|_S3。
在步骤“S87”,流水线控制单元21启动流水线处理。在步骤“S87”启动流水线处理时,根据步骤“S86”中确定的、在流水线阶段启动参数(PIPEKICK)中设置的元素“_S1|_S2|_S3”,并行地启动所有流水线处理阶段,即第一阶段(S1)变长解码处理“P11”、第二阶段(S2)逆量化处理“P12”、以及第三阶段(S3)逆DCT处理“P13”。
在步骤“S88”,流水线控制单元21等待并行启动的处理阶段的结束。在该步骤,检测到图11时间图所假定的、在宏块“MB2”处变长编码数据中发生数据错误。更具体地,在该步骤“S88”,当图10的变长解码处理单元11对宏块“MB2”进行变长解码处理“P11”时,代码错误检测单元15从变长编码数据中,检测到数据错误,结果使错误标志(ERR)设置等于一,即ERR=1。
在变长解码处理单元11参照变长编码表对变长编码数据进行解码的同时,当(例如)在变长编码表中不存在所输入的变长编码数据时,代码错误检测单元15从变长编码数据中检测到代码错误。
在步骤“S89”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3当前等于-32768(OFFSET3=-32768),并且步骤“S89”的确定结果为“否”,这意味着流水线处理没有正在被中断。该例程前进到步骤“S91”。
在步骤“S91”,为了增加宏块计数器(MBA),流水线控制单元21进行如下计算MBA++,由此如下设置MBAMBA=3。
该例程前进到步骤“S92”。
在下一步骤“S92”,确定是否存在头部。假定该步骤的确定结果为“否”,这意味着不存在头部。该例程前进到步骤“S95”。
在步骤“S95”,为了确定是否完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA与MB_IN_VOP如下定义MBA=3;并且MB_IN_VOP=48。
因此,步骤“S95”的确定结果为“否”,这意味着仍然剩余有宏块要处理。
现在,本周期“TM2”期间的处理完成,该例程返回图12的步骤“S79”。
周期“TM3”在本周期,执行发生解码误差之后的流水线处理,并且开始于图12的步骤“S79”。
在本周期开始处,主要参数如下地设置。
MBA=3;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及ERR=1。
在步骤“S79”,为了确定是否存在错误,流水线控制单元21确定ERR是否不等于零,如下ERR!=0?错误标志(ERR)当前等于一(ERR=1),并且步骤“S79”的确定结果为“是”,这意味着存在错误。该例程前进到步骤“S80”。
在步骤“S80”,为了设置流水线中断标志(PIPE_END),流水线控制单元21将其如下设置PIPE_END=1。
该例程前进到图13的步骤“S82”。
在图13的步骤“S82”,为了确定流水线处理是否为流水线的第一处理,流水线控制单元21确定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1当前等于32767(OFFSET1=32767),并且步骤“S82”的确定结果为“否”,这意味着流水线处理不是流水线的第一处理。该例程前进到步骤“S83”。
在步骤“S83”,为了确定是否开始了流水线处理中的中断,流水线控制单元21确定PIPE_END是否不等于零,如下
PIPE_END!=0?。
因为PIPE_END当前等于一(PIPE_END=1),所以步骤“S83”的确定结果为“是”,这意味着开始了流水线处理中的中断。该例程前进到步骤“S84”。
在步骤“S84”,从图10的流水线控制单元21向图10的偏移确定单元24传送下述参数,由此启动流水线启动表引用适配的偏移确定过程。
PIPE_END=1,MB_PROC=1,并且OFFSET1=32767。
作为结果,确定偏移值(OFFSET1、OFFSET2、OFFEST3),其被用来引用在图10的启动表存储单元23中存储的流水线启动表。所存储的流水线启动表包含流水线引导表与流水线中断表。
作为流水线启动表引用适配的偏移确定过程的结果,从偏移确定单元24返回到流水线控制单元21下述参数OFFSET1=32767;OFFSET2=0;OFFSET3=0;以及PIPE_END=0。
该例程前进到步骤“S85”。
在步骤“S85”,为了确定流水线处理是否不被中断,流水线控制单元21确定OFFSET2是否等于-32768,如下OFFSET2==-32768?OFFSET2当前等于零(OFFSET2=0),并且步骤“S85”的确定结果为“否”,这意味着要中断流水线处理。该例程前进到步骤“S86”。
在步骤“S86”,开始流水线启动阶段确定过程。此时,从图10的流水线控制单元21向图10的启动阶段确定单元22传送下述参数。
OFFSET1=32767;OFFSET2=0;以及OFFSET3=0。
在流水线启动阶段确定过程的结束处,从启动阶段确定单元22返回到流水线控制单元21下述参数。
OFFSET1=32767;
OFFSET2=0;OFFSET3=-1;以及PIPEKICK=_S3。
在下一步骤“S87”,流水线控制单元21启动流水线处理。在该步骤“S87”,根据流水线阶段启动参数(PIPEKICK)的元素“_S3”,启动第三阶段(S3)逆DCT处理“P13”。
在步骤“S88”,流水线控制单元21等待逆DCT处理“P13”结束。
在步骤“S89”,为了确定流水线处理是否正在被中断,流水线控制单元21确定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3当前等于-1(OFFSET3=-1),并且步骤“S89”的确定结果为“是”,这意味着流水线处理正在被中断。该例程前进到步骤“S90”。
在步骤“S90”,为了确定是否终止了流水线处理中的中断,流水线控制单元21确定OFFSET3是否等于-1,如下OFFSET3==-1?OFFSET3当前等于-1(OFFSET3=-1),并且步骤“S90”的确定结果为“是”,这意味着终止了流水线处理中的中断。
现在终止本周期“TM3”期间的处理。该例程前进到图12的步骤“S73”。
周期“TC0”在本周期,执行错误隐藏处理,并且开始于图12的步骤“S73”。
在本周期开始处,主要参数如下地设置。
MBA=3;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=0;OFFSET3=-1;以及ERR=1。
在步骤“S73”,为了确定是否存在错误,流水线控制单元21确定ERR是否不等于零,如下ERR!=0?
错误标志(ERR)当前等于一(ERR=1),并且步骤“S73”的确定结果为“是”,这意味着存在错误。该例程前进到步骤“S74”。
在步骤“S74”,开始错误隐藏处理,以启动图10的错误隐藏处理单元50。此时从流水线控制单元21向错误隐藏处理单元50传送下述参数。
MBA=3;以及MB_IN_VOP=48。
以下参照图14讨论根据本实施例的错误隐藏处理。
图14为显示根据本实施例的错误隐藏处理的流程图。
当响应于图12的步骤“S74”开始错误隐藏处理、启动图10的错误隐藏处理单元50时,根据图14的错误隐藏处理流程图开始错误隐藏处理。
在图14的步骤“S97”,为了匹配宏块计数器“MBA”与发生了解码错误的宏块,错误隐藏处理单元50进行如下计算,以减少宏块计数器MBA--,该减少结果为“MBA=2”(“MBA=2”表示发生了解码错误的宏块号)。
在步骤“S98”,为了确定是否完成了错误隐藏处理,错误隐藏处理单元50确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?,MBA当前等于二(MBA=2),并且步骤“S98”的确定结果为“否”,这意味着错误隐藏处理仍然在进行中。该例程前进到步骤“S99”。
在步骤“S99”,为了隐藏错误,在图10存储器30中存储的紧接先前帧已解码图像中、其中相应已解码图像位于相应于宏块“MB2”位置的位置上的已解码图像,由错误隐藏处理单元50再生到宏块“MB2”上,该宏块“MB2”为其中要隐藏的当前帧相应已解码图像中错误的对象。该例程前进到步骤“S100”。
在步骤“S100”,为了增加宏块计数器MBA,错误隐藏处理单元50执行以下计算MBA++,由此将MBA设置为新值,如下MBA=3。
该例程返回到步骤“S98”。
随后,重复从步骤“S98”到“S100”的处理,直至宏块计数器“MBA”达到48,并且如下设置MBA=48。
在步骤“S98”,为了确定是否完成了错误隐藏处理,错误隐藏处理单元50确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?,MBA当前等于48(MBA=48),并且步骤“S98”的确定结果为“是”,这意味终止了错误隐藏处理。现在终止错误隐藏处理。
通过这种方式,终止错误隐藏处理,该处理从发生解码错误的宏块“MB2”覆盖到最后一个宏块“MB47”。此时,从错误隐藏处理单元50返回到流水线控制单元21下述参数。
MBA=48;以及MB_IN_VOP=48。
随后,该例程前进到图12的步骤“S75”,该步骤“S75”,为了确定是否完全处理了所有帧内宏块,流水线控制单元21确定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA等于48(MBA=48)、并且MB_IN_VOP等于48(MB_IN_VOP=48),并且步骤“S75”的确定结果为“是”,这意味着完全处理了所有帧内宏块。现在终止伴随错误隐藏处理的一系列解码过程。
根据本实施例,提供变长解码处理单元11、逆量化处理单元12、以及逆DCT处理单元13作为图像解码处理中使用的处理单元。可替换地,可以采用任意其他处理单元。作为另一个替换方案,可以将多个处理单元组合为单个处理单元。这些替换方案提供了与本实施例类似的优点,虽然在流水线处理阶段的数目上有些变化。
第三实施例图15为显示根据第三实施例的图像数据处理装置300的方框图。根据本实施例的图像数据处理装置300提供了得力于流水线处理的、将每个宏块的图像数据高速编码为符合由MPEG标准代表的任意运动图像处理标准的编码数据。
在图15中,对于与图1中类似的元件,给于相同的附图标记,并且此处省略与其相关的描述。
图15的根据本实施例的图像数据处理装置300包含图像数据编码单元60、流水线控制器20、存储器30、以及输入/输出接口40。
图像数据编码单元60包含变长编码处理单元61、DCT处理单元62、量化处理单元63、运动检测处理单元64、运动补偿处理单元65、逆量化处理单元66、以及逆DCT处理单元67。
流水线控制器20包括流水线控制单元21、启动阶段确定单元22、启动表存储单元23以及偏移确定单元24。
图像数据编码单元60的元件61至67、存储器30、以及输入/输出接口40连接到数据总线80。元件61至67通过控制线81连接到流水线控制单元21。
运动检测处理单元64用来根据输入图像数据(即当前帧的输入图像数据)以及先前帧的重新配置的图像数据、检测当前帧的运动向量。先前帧的重新配置的图像数据存储在存储器30中。
运动补偿处理单元65用来根据来自运动检测处理单元64的所检测的运动向量以及来自存储器30的先前帧的重新配置的图像数据、生成当前帧的预测图像数据。
DCT处理单元62用来对来自运动补偿处理单元65的预测图像数据与输入图像数据之间的差异进行DCT处理,由此提供DCT系数。
量化处理单元63用来量化来自DCT处理单元62的DCT系数,由此提供经量化的DCT系数。
逆量化处理单元66用来对来自量化处理单元63的经量化的DCT系数进行逆量化,由此提供经逆量化的DCT系数。
逆DCT处理单元67用来对来自逆量化处理单元66的经逆量化的DCT系数进行逆DCT处理,由此提供DCT系数,用于获得重新配置的图像数据。
变长编码处理单元61用来对来自量化处理单元63的经量化的DCT系数、以及来自运动检测处理单元64的所检测的运动向量进行变长编码,由此提供编码数据。
上述元件61至67在本发明范围之外,此处省略其相关详细描述。
在根据本实施例的图像数据处理装置300中,流水线控制器20执行对图像数据编码单元60中的得力于流水线处理的图像编码处理过程的流水线控制。
图16为显示根据本实施例的流水线处理的时间图。图16显示得力于流水线处理的并行过程的例子由图像数据编码单元60进行的一系列处理中的运动检测处理“P21”、运动补偿处理“P22”、DCT处理“P23”、量化处理“P24,,的并行过程的例子。以下概述了以上并行过程。
在周期“TM0”,宏块“MB0”经过运动检测处理“P21”。
在周期“TM1”,宏块“MB1”、与宏块“MB0”分别并行地经过运动检测处理“P21”、与运动补偿处理“P22”。
在周期“TM2”,宏块“MB2”、宏块“MB1”、与宏块“MB0”分别并行地经过运动检测处理“P21”、运动补偿处理“P22”、与DCT处理“P23”。
在周期“TM3”,宏块“MB3”、宏块“MB2”、宏块“MB1”、与宏块“MB0,,分别并行经过运动检测处理“P21”、运动补偿处理“P22”、DCT处理“P23”、与量化处理“P24”。
在随后直至周期“TM47”的周期,宏块“MB1”至“MB47”重复经过类似的并行处理。
在周期“TM48”,宏块“MB47”、宏块“MB46”、与宏块“MB45,,分别并行经过运动补偿处理“P22”、DCT处理“P23”、与量化处理“P24”。
在周期“TM49”,宏块“MB47”、宏块“MB46”分别并行经过DCT处理“P23”、与量化处理“P24”。
在周期“TM50”,宏块“MB47”经过量化处理“P24”。
以上流水线处理由图15的流水线控制器20控制。
启动表存储单元23配备有流水线启动表,用于启动并行处理“P21,,至“P24”,如上所述。流水线启动表包含流水线引导表与流水线中断表。这些表以类似于图9(a)与9(b)中的方式配置,并且省略其相关详细描述。
偏移确定单元24用来确定用于引用在启动表存储单元23中的流水线引导表与流水线中断表的偏移值。
启动阶段确定单元22用来根据来自偏移确定单元24的所确定的偏移值、确定流水线阶段启动方法。
流水线控制单元21用来根据来自启动阶段确定单元22的所确定的流水线阶段启动方法、启动图像数据编码单元60的相应流水线阶段元件。
根据第一实施例的流水线控制流程图,可以容易地类推根据本实施例的流水线控制流程图,并且此处省略其相关的具体描述。
以上讨论根据本实施例的图像数据处理装置300中流水线阶段的并行过程,即运动检测处理“P21”、运动补偿处理“P22”、DCT处理“P23”、量化处理“P24”的并行过程。其他流水线阶段的替换并行过程也是可以接受的。例如,如果在运动检测处理单元64与存储器30之间传送数据需要大量时间,则可以进行数据传送的并行处理。
本发明提供了图像数据处理装置与方法,通过其可以根据流水线处理得到对图像数据的快速高效的编码与解码。
如上所述,本发明的目的在于提供一种图像数据处理装置,用来提供得力于流水线处理的、对图像数据的快速高效的编码与解码。因此,在不脱离本发明的精神与范围的前提下,本发明具有各种用途。
以上参照附图描述了本发明的优选实施例,应该理解本发明不限于这些确切的实施例,在不脱离权利要求限定的本发明的精神与范围的前提下,本领域技术人员可以在其中进行各种变化与修改。
工业实用性根据本发明的图像数据处理装置可用于需要图像处理的电子装置,例如备有内置相机的手机、及其各种用途领域。
权利要求
1.一种图像数据处理装置,包含图像数据解码单元,用来允许将送入所述图像数据处理装置的输入编码数据通过流水线处理解码,由此提供已解码图像数据;流水线控制器,用来控制所述图像数据解码单元中的流水线处理;以及存储器,用来存储输入编码数据与已解码图像数据。
2.如权利要求1所述的图像数据处理装置,其中所述图像数据解码单元包含多阶段数据处理单元,用来实现流水线处理,并且其中所述多阶段数据处理单元包含以下中的至少两个变长解码处理单元,用来实现输入编码数据的变长解码,由此提供量化DCT系数与运动向量;逆量化处理单元,用来对来自所述变长解码处理单元的量化DCT系数进行逆量化,由此提供经逆量化的DCT系数;逆DCT处理单元,用来实现对来自所述逆量化处理单元的经逆量化的DCT系数的逆DCT处理,由此提供DCT系数;以及运动补偿处理单元,用来利用来自所述逆DCT处理单元的DCT系数、来自所述变长解码处理单元的运动向量、以及存储在所述存储器中先前帧的已解码图像数据,生成当前帧的已解码图像数据。
3.如权利要求1所述的图像数据处理装置,其中所述流水线控制器包含启动表存储单元,用来包含流水线启动表,在该表中注册关于对所述图像数据解码单元中流水线处理的控制的启动信息;偏移确定单元,用来确定用于引用所述启动表存储单元中的流水线启动表的偏移值;启动阶段确定单元,用来根据由所述偏移确定单元确定的偏移值、从所述启动表存储单元中的流水线启动表读取启动信息,由此确定所述图像数据解码单元中流水线处理的启动方法;以及流水线控制单元,用来控制所述偏移确定单元与所述启动阶段确定单元,由此根据由所述启动阶段确定单元确定的流水线处理启动方法、控制所述图像数据解码单元中的流水线处理。
4.如权利要求2所述的图像数据处理装置,进一步包含错误隐藏处理单元,其中所述变长解码处理单元进一步包含代码错误检测单元,用来检测来自输入编码数据的代码错误,以及其中当所述代码错误检测单元检测输入编码数据宏块上的代码错误时,所述错误隐藏处理单元将来自所述存储器的先前解码的图像数据施加到其上检测到错误的宏块、以及随后的宏块上,由此隐藏已解码图像显示中的干扰,该干扰由输入编码数据中代码错误造成。
5.如权利要求4所述的图像数据处理装置,其中当所述代码错误检测单元检测到输入编码数据宏块上的代码错误时,所述错误隐藏处理单元从其上要隐藏已解码图像显示中的干扰的目标中、排除先前处理的宏块,该先前处理的宏块比其上检测到错误的宏块早一流水线处理阶段数目而得到处理。
6.一种图像数据处理装置,包含图像数据编码单元,用来允许将送入所述图像数据处理装置的输入图像数据通过流水线处理编码,由此提供编码数据;流水线控制器,用来控制所述图像数据编码单元中的流水线处理;以及存储器,用来存储相应于输入图像数据的重新配置的图像数据、以及编码数据。
7.如权利要求6所述的图像数据处理装置,其中所述图像数据编码单元包含多阶段数据处理单元,用来实现流水线处理,并且其中所述多阶段数据处理单元包含以下中的至少两个运动检测处理单元,用来使用为当前帧输入图像数据的输入图像数据、以及存储在所述存储器中的先前帧的重新配置图像数据,检测当前帧的运动向量;运动补偿处理单元,用来使用由所述运动检测处理单元检测的运动向量、以及所述存储器中的先前帧的重新配置图像数据,生成当前帧的预测图像数据;DCT处理单元,用来对由所述运动补偿处理单元生成的预测图像数据与输入图像数据之间的差异进行DCT处理,由此提供DCT系数;量化处理单元,用来量化来自所述DCT处理单元的DCT系数,由此提供量化DCT系数;逆量化处理单元,用来对来自所述量化处理单元的量化DCT系数进行逆量化,由此提供逆量化DCT系数;逆DCT处理单元,用来对来自所述逆量化处理单元的逆量化DCT系数进行逆DCT处理,由此提供用于获取重新配置图像数据的DCT系数;以及变长编码处理单元,用来对来自所述量化处理单元的量化DCT系数、以及由所述运动检测处理单元检测的运动向量进行变长编码,由此提供编码数据。
8.如权利要求6所述的图像数据处理装置,其中所述流水线控制器包含启动表存储单元,用来包含流水线启动表,在该表中注册关于对所述图像数据编码单元中流水线处理的控制的启动信息;偏移确定单元,用来确定用于引用所述启动表存储单元中的流水线启动表的偏移值;启动阶段确定单元,用来根据由所述偏移确定单元确定的偏移值、从所述启动表存储单元中的流水线启动表读取启动信息,由此确定所述图像数据编码单元中流水线处理的启动方法;以及流水线控制单元,用来控制所述偏移确定单元与所述启动阶段确定单元,由此根据由所述启动阶段确定单元确定的流水线处理启动方法、控制所述图像数据编码单元中的流水线处理。
9.一种图像数据处理方法,包含通过多阶段流水线处理图像数据;存储所处理的图像数据;以及控制多阶段流水线。
10.如权利要求9所述的图像数据处理方法,其中所述控制多阶段流水线包含存储流水线启动表,在该表中注册关于对多阶段流水线启动的控制的启动信息;确定用于引用流水线启动表的偏移值;根据所确定的偏移值,从流水线启动表获得启动信息,由此确定多阶段流水线的启动方法;以及根据所确定的多阶段流水线的启动方法,控制多阶段流水线。
11.如权利要求9所述的图像数据处理方法,其中所述通过多阶段流水线处理图像数据包含解码每个宏块的编码数据;检测来自编码数据的代码错误;以及进行错误隐藏处理,其中当在所述检测代码错误期间在宏块上检测到代码错误时,所述控制多阶段流水线包含中断对于其上检测到代码错误的宏块之后的宏块的解码处理,由此实现错误隐藏处理。
12.如权利要求11所述的图像数据处理方法,其中所述进行错误隐藏处理包含施加由所述存储所处理的图像数据存储的先前处理的图像数据,由此实现错误隐藏处理。
全文摘要
图像数据处理装置(100)包含图像数据解码单元(10),用来执行得力于流水线处理的解码处理;流水线控制器(20),用来控制图像数据解码单元(10)中的流水线处理;存储器30;以及输入/输出接口40。流水线控制器(20)根据关于流水线阶段启动的信息,控制流水线处理。该信息存储在启动表存储单元(23)中。本配置使之能提供一种用来当在解码处理期间发生解码错误而使流水线控制被干扰时、将已解码图像退化抑制到最小程度、由此实现高品质图像的图像数据处理装置。
文档编号G06F11/07GK1947425SQ200580013180
公开日2007年4月11日 申请日期2005年9月30日 优先权日2004年10月13日
发明者近藤孝宏 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1