存储器管理方法、图像处理设备和存储器管理程序的制作方法

xiaoxiao2020-7-22  10

专利名称:存储器管理方法、图像处理设备和存储器管理程序的制作方法
技术领域
本发明涉及一种存储器管理方法、基于这种存储器管理方法的图像处理设备以及存储器管理程序,用于通过在多个图像处理部件之间共享一个图像存储器而由这些图像处理部件并发地执行处理。
背景技术
最近,在诸如MPEG(运动图像专家组)之类的图像压缩技术方面的进步使得能够普遍实行将图像信号数字化以及处理数字图像信号。例如,用于捕获运动图像并将其记录为数字数据的数字摄像机正在广泛的使用。
一些近来开发出的数字摄像机在一个机体中具有二种记录介质,例如磁带和由可移动的半导体存储器组成的存储卡。许多这些数字摄像机都具有并发执行运动图像的编码和解码以及两行(two lines)编码和解码的功能。
例如,一些数字摄像机能够以不同的图像尺寸、不同的压缩比、和不同的格式将捕获到的运动图像记录到不同的记录介质上。在这种情况下,具有不同的图像尺寸的运动图像的两行编码是并发地执行的。一些其它的数字摄像机具有将记录到磁带的运动图像解码并且通过使得其图像尺寸更小来重新编码、并将所编码的运动图像记录到半导体存储器卡的功能。在这种情况下,解码和编码是并发地执行的。
参照图25,作为一个实例举例说明了图像处理设备主要部分的示意性的结构,所述图像处理设备能并发地执行运动图像的编码和解码。
例如,将图25中所示的图像处理设备设置于图像记录/再生设备或者成像设备中,所述图像记录/再现设备或者成像设备各自都具备如下功能利用诸如MPEG之类的数据压缩编码系统将所输入的运动图像数据或音频数据编码并将已压缩数据记录到各种记录介质的功能;以及将记录到记录介质上的数据解码以便可再现地输出所解码的运动图像数据或音频数据的功能。所示的图像处理设备适合于并发地由不带OS(操作系统)的系统或所谓的嵌入式系统来执行对运动图像数据和音频数据的编码和解码。
如图25所示,该图像处理设备具有用于控制编码和解码操作的CPU 11、编码器21、解码器31、和编码器21和解码器31之间共享的图像存储器40,以便在处理中临时地存储图像数据。
CPU11与外部的主机控制器通信,并根据由该主机控制器提供的信息来控制编码器21和解码器31的操作。更确切的说,从主机控制器接收到编码和解码命令以及诸如将要创建的图像尺寸和将要分配的存储区的数目的信息后,CPU11将这些命令信息提供给编码器21和解码器31以便开始进行它们的操作。
编码器21根据诸如MPEG之类的预定数据压缩编码系统来压缩所输入的运动图像或音频数字数据以便生成运动图像和音频数据的编码流。解码器31将所输入的运动图像和音频数据的编码流解压缩。编码器21和解码器31访问图像存储器40以便在编码和解码运动图像数据以前临时存储处理中的运动图像数据。
图像存储器40,例如由诸如SDRAM(同步的动态随机存取存储器)之类的半导体存储器组成,它包含有用于与来自外部的访问相接口连接的存储器I/F41。存储器I/F 41将从编码器21和解码器31提供的图像数据存储在图像存储器40中的指定区域。存储器I/F 41根据由编码器21和解码器31指定的读取地址来读取并输出来自图像存储器40的图像数据。
当运动图像数据如上面所述的那样在图像处理设备中被编码时,CPU 11指示编码器21根据从主机控制器提供的信息来开始进行编码,同时,指定图像尺寸以及对应于将被分配的存储区的图像的数目。当接收到将被编码的运动图像数据时,编码器21根据从CPU 11提供的信息,将其中将存储图像的存储区分配到图像存储器40,并将相应的物理地址的指定传送到存储器I/F41,通过顺序地将处理中的图像数据存储到所分配存储区中以开始编码操作。
在解码运动图像数据时,CPU 11将信息诸如图像尺寸和图像数目传送到解码器31。当接收到被编码的数据流时,解码器31在图像存储器40中分配相应于由CPU 11指定的图像的数目的存储区,并将相应的物理地址的指定传送到存储器I/F 41,通过顺序地将处理中的图像数据存储到所分配存储区中以开始解码操作。
在编码和解码音频数据时,编码器21和解码器31根据从主机控制器经由CPU 11所提供的信息顺序地处理输入的音频数据和编码流。在这个过程中,被处理的音频数据可能是临时地存储在图像存储器40中的。
应当注意,下列的解码设备是常规可利用的,其能并发地执行数据的一行的编码和数据另一个行的解码。也就是说,在相关技术的解码设备中,设置了由数据的编码和解码共享的反向转换电路。作为高效编码的图像信号而输入并经由可变长度解码电路和去除量化电路的信号以及另一个行的输入信号是由多路复用电路所选择的,以便输入到反向转换电路中。由反向转换电路所解码的前一信号被输出,而由反向转换电路所编码的后一图像信号经过量化电路和可变长编码电路被输出。以两倍或更高于实际时间的速度来操作反向解码电路,以便在反向转换电路的解码功能和编码功能之间进行切换,从而并发地执行解码处理和编码处理(例如,参照日本专利公报特开平9-322121(0029段至0032,图5))。
要求各具有多个记录介质的图像记录/再现设备能改变图像尺寸,所述图像尺寸是通过利用这些记录介质在记录或再现运动图像数据的中途由编码器或解码器加以处理的。例如,就对磁带和存储卡进行操作的数字摄像机而言,假定当已捕获的图像正在被记录到两个记录介质上时,只中止存储卡的记录以改变被记录的图像的图像尺寸并继而恢复操作。
然而,就图25中所示的相关技术图像处理设备而言,将由编码器21和解码器31分配的每个存储区的尺寸和所分配的存储区的数目是根据由主机控制器通过CPU 11所指定的经受处理的图像尺寸来预先确定的。因此,一旦编码或解码已经开始,就以固定的方式在图像存储器40中分配所述存储区,以便除非编码和解码两者都被中止否则就不能改变图像尺寸设置。除此之外,编码器21和解码器31必须通过不断识别它们的物理地址来管理分配的存储区,由此改变图像尺寸之后使存储区管理复杂化,这导致不能灵活地应对每一次的图像尺寸改变操作。

发明内容
因此,本发明的一个目的是提供一种存储器管理方法,其通过共享一个图像存储器而能够灵活地应对当并发地编码和解码图像数据时经历处理的图像尺寸的变化。
本发明另一个目的是提供一种图像处理设备,其通过共享一个图像存储器而能够灵活地应对当并发地编码和解码图像数据时经历处理的图像尺寸的变化。
本发明又一个目的是提供一种存储器管理程序,其通过共享一个图像存储器而能够灵活地应对当并发地编码和解码图像数据时经历处理的图像尺寸的变化。
在执行本发明的过程中,并根据本发明的一个方面,提供了一种存储器管理方法,用于由多个图像处理部件共享一个图像存储器作为工作区以由所述多个图像处理部件来并发地执行处理操作,该方法包括存储区分配步骤,其中存储区分配部件接收关于为将由多个图像处理部件执行的处理操作单独地指定的图像尺寸以及图像计数的信息,按照图像计数将相当于图像尺寸的存储区分配到图像存储器中的空闲区,并输出指示已分配的图像区的地址;存储区信息生成步骤,其中存储区管理部件生成存储区信息,在所述存储区信息中对于每个存储区存储了在存储区分配步骤中分配的每一个存储区的标识信息和用于访问每一个存储区的访问信息之间的相关性,所述访问信息至少包括地址;以及存储区管理步骤,其中存储区管理部件接收来自多个图像处理部件的每一个的使用和返回每一个存储区的请求,以根据存储区信息来管理每一个存储区的使用状态。
在上面提到的存储器管理方法中,在存储区分配步骤中,由存储区分配部件按照图像存储器的空闲区中图像的指定数目单独地分配对应于指定图像尺寸的存储区,以便按照图像的数目以分布的方式而非固定的方式单独地分配这些存储区。在由存储区管理部件执行的存储区信息生成步骤中,生成存储区信息,其中对于每个存储区存储每个已分配的存储区的标识信息和用于访问这些已分配存储区的访问信息之间的相关性。因此,通过指定用于识别存储区信息的数目,每个图像处理部件都能访问对应的存储区以读取或写入图像数据。此外,在由存储区管理部件执行的存储区管理步骤中,通过接收来自对应于每个存储区的每个图像处理部件的使用和返回请求,以根据存储区信息来管理每个存储区的使用状态,当使用存储区时,图像处理部件无须通过识别在相应的图像存储器中的地址来管理使用状态。
在执行本发明的过程中,并且根据本发明的另一个方面,提供了一种图像处理设备,用于由多个图像处理部件共享一个图像存储器作为工作区以由所述多个图像处理部件来并发地执行处理操作,该设备包括存储区分配部件,用于接收关于为将由多个图像处理部件执行的处理操作单独地指定的图像尺寸以及图像计数的信息,按照图像计数将相当于图像尺寸的存储区分配到图像存储器中的空闲区,并输出指示已分配的图像区的地址;和存储区管理部件,用于保存存储区信息,其中对于每个存储区存储由存储区分配部件分配的每一个存储区的标识信息和用于访问每一个存储区的访问信息之间的相关性,所述访问信息至少包括地址,并且该存储区管理部件用于接收来自多个图像处理部件的每一个的使用和返回每一个存储区的请求,从而管理每一个存储区的使用状态。
在上面提到的图像处理设备中,在存储区分配部件中按照图像存储器的空闲区中图像的指定数目单独地分配对应于指定图像尺寸的存储区,以便按照图像的数目以分布的方式而非固定的方式单独地分配这些存储区。在存储区管理部件中,生成存储区信息,其中对于每个存储区存储了每个已分配的存储区的标识信息和用于访问这些已分配存储区的访问信息之间的相关性。因此,通过指定用于识别存储区信息的数目,每个图像处理部件都能访问对应的存储区以读取或写入图像数据。此外,在由存储区管理部件执行的存储区管理步骤中,通过接收来自对应于每个存储区的每个图像处理部件的使用和返回请求,以根据存储区信息来管理每个存储区的使用状态,当使用存储区时,图像处理部件无须通过识别在相应的图像存储器中的地址来管理使用状态。
如上所述并根据本发明,多个图像处理部件的每一个都能通过简单地指定存储区信息来访问相应的存储区以便读取或写入图像数据,而不必通过识别其在图像存储器中的地址来管理每个存储区的使用状态。另外,在图像存储器中单独地分配对应于图像尺寸的存储区,以便于如果图像尺寸发生变化的话,那么重新分配(deallocate)已分配的区域一次以将其设置成容易被再使用作为具有不同的图像尺寸的存储区的空闲区。因此,如果在某一个图像处理部件中发生了图像尺寸的变化,那么必要的存储区可以被再次分配以便再使用,而不必中断另一个图像处理部件所进行的处理,并且不增加每一个图像处理部件的处理负荷。


图1是举例说明了作为本发明第一实施例的图像处理设备的主要部分的示范性结构的框图;
图2是举例说明图1中所示的存储器控制块的示范性内部结构的框图;图3是举例说明一种通过图2中所示存储区管理块来管理已分配的存储区的方法的框图;图4A举例说明图像尺寸元素的数据结构;图4B举例说明图像存储元素的数据结构;图5是表示在分配存储区时由存储区管理块进行的处理的流程图;图6是表示将已分配的存储区提供给编码器或解码器时由存储区管理块进行的处理的流程图;图7是表示从编码器或解码器返回已分配的存储区时由存储区管理块进行的处理的流程图;图8是表示在重新分配所分配的存储区时由存储区管理块进行的处理的流程图;图9举例说明查找表的示范性结构;图10举例说明一种由图2中所示的查找表设置块来管理存储区的方法;图11举例说明查找表元素的数据结构;图12是表示在分配存储区时由查找表设置块所进行的处理的流程图;图13是表示在重新分配所分配的存储器时由查找表设置块所进行的处理的流程图;图14举例说明数据格式的示范性结构;图15举例说明一种由图2中所示的数据格式设置块来管理存储区的方法;图16举例说明一种数据格式元素的数据结构;图17是表示在分配存储区时由数据格式设置块所进行的处理的流程图;图18是表示在重新分配所分配的存储器时由数据格式设置块所进行的处理的流程图;图19举例说明一种由图2中所示的存储器分配块和存储器重新分配块来分配存储区的方法;图20A和图20B举例说明一种由存储器分配块和存储器重新分配块来管理树形结构的节点的方法;图21是表示在分配存储区时由存储器分配块所进行的处理的流程图;图22是表示在重新分配所分配的存储器时由存储器重新分配块所进行的处理的流程图;图23是举例说明了作为本发明的第二实施例的图像处理设备的主要部分的示范性结构的框图;图24是举例说明了作为本发明的第三实施例的图像处理设备的主要部分示范性的结构框图;图25是举例说明了能够并发地执行运动图像数据的编码和解码的相关技术的图像处理设备的结构的框图。
具体实施例方式
以下参照附图来详细描述本发明的实施例。
在第一个实施例中,假定这样一个实例,其中本发明被用于根据预定的数据压缩编码系统来对运动图像和音频信号编码及解码的图像处理设备。现在,参照图1,示出了作为本发明第一个实施例的图像处理设备的主要部分的示范性结构。
例如,图1所示的图像处理设备被设置在具有如下功能的图像记录/再现设备中或成像设备中,所述功能为通过诸如MPEG之类的数据压缩编码系统将所输入的运动图像数据和音频数据编码以便把编码后的数据记录到各类记录介质上的功能;以及将记录到各类记录介质上的数据解码以便可再现地输出解码后的运动数据和音频数据。这些图像处理设备适合于并发地对运动图像数据和音频数据进行编码和解码,这是由不带OS(操作系统)的系统或所谓的嵌入式系统来执行的。
如图1所示,该图像处理设备具有用于控制编码和解码操作的CPU 10、编码器20、解码器30、由编码器20和解码器30共享的用于临时存储被处理的图像数据的图像存储器40、以及用于控制对图像存储器40的访问的存储器控制块50。
CPU 10与外部的主机控制器进行通信,以根据由该主机控制器提供的控制信息来控制编码器20、解码器30、以及存储器控制块50的操作。更具体的说,例如,CPU 10把包含例如由主机控制器指定的图像尺寸和将要分配的存储区的数目的信息传输到存储器控制块50,并且与此同时,指示编码器20和解码器30针对其所指定的图像尺寸来进行编码和解码。此外,CPU 10还把从编码器20和解码器30接收到的用于从图像存储器40读出数据或向其写入数据的请求传输至存储器控制块50,以便在编码器20和解码器30与存储器控制块50之间传送指示图像数据已被写入其中的存储区的标识符ID。
编码器20根据诸如MPEG之类的预定数据压缩编码系统来压缩所输入的数字运动图像数据和数字音频数据,从而生成运动图像和音频数据的编码流。解码器30解压缩输入的运动图像数据和音频数据的编码流。在编码和解码运动图像数据时,编码器20和解码器30经由存储器控制块50来访问图像存储器40,以便将正被处理的图像数据临时存储到图像存储器40中。
图像存储器40,例如其由SDRAM组成,包括用于与来自外界的访问相接口连接的存储器I/F 41。存储器I/F 41将图像存储器40的硬件接口提供给存储器控制块50,并从存储器控制块50接收地址和图像尺寸信息,将经由存储器控制块50由编码器和解码器30提供的图像数据存储到图像存储器40中的相应存储区里。同样,存储器I/F 41从由存储器控制块50指定的存储区中读取图像数据,并经由存储器控制块50输出图像数据至编码器20和解码器30。应当注意到,通过利用稍后将要描述的查找表和数据格式,存储器I/F 41控制自图像存储器40的数据读取和到它的数据写入。
存储器控制块50以统一的方式管理从编码器20和解码器30对图像存储器40的访问。在编码和解码的过程中,存储器控制块50从CPU 10中接收诸如图像尺寸和将要分配的存储区的数目的信息,根据这些信息来分配图像存储器40中的存储区。然后,存储器控制块50将由编码器20和编码器30提供的图像数据存储到图像存储器40中已分配的存储区里,并通过CPU 10将指示存储区的标识符ID的信息传输至编码器20和解码器30。当通过CPU 10从编码器和解码器30指定标识符ID时,存储器控制块50从图像存储器40中的指定存储区读取图像数据,并将该图像数据输出至编码器20和解码器30。
在对如上所述的图像处理设备中的运动图像数据进行编码时,CPU 10指示编码器20根据从主机控制器给出的信息开始编码,并且同时将诸如图像尺寸和对应于将要分配的存储区的图像的数目之类信息提供给存储器控制块50。依照由CPU 10所给出的信息,存储器控制块50将编码所必需的存储区分配至图像存储器40。
当接收到运动图像数据时,编码器20通过经由存储器控制块50把正在被处理的图像数据临时地存储到图像存储器40中、或通过适当地读取来自图像存储器40的图像数据、来对所接收到的运动图像数据进行编码。在存储图像数据时,经由CPU 10将请求从编码器20传送至存储器控制块50。响应于该请求,存储器控制块50将从编码器20接收到的图像数据写入已分配的存储区中的一个,并通过CPU 10将指示那个存储区的标识符ID传送至编码器20。
其次,在从该图像存储器40读取图像数据的过程中,编码器20经由CPU10将对应于将要读取的图像数据的标识符ID传输至存储器控制块50。作为响应,存储器控制块50从图像存储器40中由已接收到的标识符ID所标识的存储区中读取指定的图像数据,并将该图像数据输出到编码器20。当请求来自主机控制器以结束编码时,存储器控制块50重新分配为编码而分配的存储区,由此使得这些存储区可用于写入其他的数据。
在对运动图像数据进行解码的过程中执行如上相同的操作。也就是说,当解码开始时,由存储器控制块50来分配解码所必需的存储区。存储器控制块50将来自解码器30的图像数据保存在其中一个已分配的存储区中,并且将那个存储区的标识符ID传输到解码器30。在读取图像数据时,标识符ID从解码器30被传送到存储器控制块50。作为响应,存储器控制块50从标识符ID所标识的存储区中读取图像数据,并将该图像数据输出到解码器30。
由此,在上面提到的图像处理设备中,编码器20和解码器30经由存储器控制块50间接地访问图像存储器40。编码器20和解码器30能够通过使用对于由存储器控制块50分配的每个存储区的标识符ID,而不是通过使用图像存储器40中的这类存储区的物理地址来请求图像数据读取或写入。
另一方面,每当编码器20和解码器30的其中之一开始处理时,存储器控制块50在图像存储器40中分配处理所必需的存储区。此时,存储器控制块50通过利用将图像存储器40中的单位存储区作为节点的二叉树结构,来有效地将存储区分配到图像存储器40中的空闲区,并且将已分配的存储区设置到与图像存储器40的硬件I/F相匹配的存储器I/F 41。
因此,如果在编码和解码的至少其中之一的过程中经历处理的图像尺寸按主机控制器所指示的那样改变,那么可容易实行的是重新分配为已变化的处理所分配的存储区,将重新分配的存储区设置为空闲区,并重新使用该空闲区以作为对应于已变化的图像尺寸的存储区。这允许存储器控制块50以统一的方式、根据图像尺寸来控制存储区,以便编码器20和解码器30可以彼此传递正被处理的图像数据,而不必总是识别图像存储器40的规格和物理地址。
应当注意到,当在由编码器20或解码器30进行处理期间临时存储在图像存储器40中的图像数据的图像尺寸发生变化时,经历编码或解码的图像尺寸被改变。例如,在编码的时候,编码器20改变所输入的运动图像数据的图像尺寸,然后将已改变的图像尺寸的运动图像数据编码,或将所输入的图像尺寸已变化了的运动图像数据编码,以便改变将要生成的编码流的图像尺寸。在解码的时候,在解码器30中将要输入的编码流的图像尺寸被改变。
参照图2,示出了存储器控制块50的示范性的内部配置结构。
如图2所示,存储器控制块50具有存储区管理块51、存储器分配处理块52、存储器重新分配处理块53、查找表设置块54、数据格式设置块55、CPU I/F 56、编码器I/F 57以及解码器I/F 58。应当注意到,图2也示出图1中所示的图像存储器40的存储器I/F 41的查找表41a和数据格式41b。
存储区管理块51经由CPU I/F 56来与CPU 10进行通信,以控制存储器控制块50的整个操作。更具体来说,存储区管理块51请求存储器分配处理块52、查找表设置块54、和数据格式设置块55分配与CPU 10所指定的图像尺寸和图像数目相对应的存储区,并且借助于用来标识这些存储区的标识符ID来把已分配的存储区提供给编码器20和解码器30,借此来管理其使用状态。同样,存储区管理块51控制编码器20、解码器30与图像存储器40之间的数据传送。当编码或解码已经结束时,存储区管理块51控制存储器重新分配处理块53、查找表设置块54、以及数据格式设置块55,以便重新分配已分配的存储区。
存储器分配处理块52将相应于由存储区管理块51所指定的图像尺寸的存储区分配到图像存储器40中的空闲区,并计算它的地址。更具体来说,存储器分配处理块52通过利用将图像存储器40中的单位存储区作为节点的二叉树结构,来管理每个单位存储区的分配状态。接下来,存储器分配处理块52从空闲区中提取其中数据具有存储区管理块51所指定的图像尺寸的存储区,并将所提取的区域的起始地址输出至存储区管理块51。存储器分配处理块52重新分配由存储区管理块51所指定的存储区。
查找表设置块54和数据格式设置块55根据图像存储器40的访问指定来设置信息,以便已分配的存储区变成随时可用。在第一实施例中,指定存储区的起始地址和其中该存储区的数据量是用一维或二维数据来表示的图像尺寸,以便能够进行图像存储器40的读取或写入。为了这个目的,存储器I/F41具有查找表41a,用于保存与存储区尺寸相对应的图像尺寸设置;以及数据格式41b,其中使存储区起始地址与在查找表41a中的元素相关。
在将存储区分配到存储器I/F 41的查找表41a的过程中,查找表设置块54设置存储区管理块51所指定的图像尺寸。
数据格式设置块55把存储器分配处理块52所计算出的地址设置成存储器I/F 41的数据格式41b,并将该地址与查找表41a相关联。在利用图像存储器40读取或写入图像数据的过程中,数据格式设置块55根据由存储区管理块51指定的信息指定数据格式41b中的相应元素,由此来请求存储器I/F41以读取或写入存储器数据。
CPU I/F 56在CPU 10和存储区管理块51之间对信息进行接口。编码器I/F 57和解码器I/F 58在编码器20、和解码器30和存储区管理块51之间对图像数据进行接口。
以下详细地描述存储器控制块50的各个元件的操作。首先,将描述一种由存储区管理块51来管理存储区的方法。
参照图3,示出了一种由存储器区管理块51来管理已分配的存储区的方法。
如图3所示,存储区管理块51通过利用线性列表来管理存储区,在所述线性列表中两类元素(图像尺寸元素和图像存储元素)是利用指针相连的。
与由一个编码器20或一个解码器30进行处理的执行相一致地生成图像尺寸元素,并且该图像尺寸元素具有列表结构,在所述结构中利用指针指向随后所生成的图像尺寸元素。在开始进行编码或解码之时,一个图像尺寸元素具有由CPU 10所指定的图像存储元素的数目,其中每一个图像存储元素都具有由CPU在那一时刻指定的图像尺寸。也就是说,各个图像存储元素都对应于为将由编码器20或解码器30存储到图像存储器40中的图像数据的一个图片而分配的存储区。
在一个图像尺寸元素中,已经存储有图像数据的图像存储元素和还未存储有图像数据的图像存储元素,分别被连接于具有带指针的列表结构的活动列表(activate list)和具有带指针的列表结构的消极列表(negate list)。当编码器20请求将图像数据的一个图片写入到图像存储器40时,在消极列表中的队首图像存储元素被连接到活动列表的队尾,当写到图像存储器40中的图像数据的一个图片变得不再必要时,相关的图像存储元素被连接到消极列表的队尾。
每个图像尺寸元素通过总是识别activate_top(活动队首)和activate_tail(活动队尾)以及negate_top(消极队首)和negate_tail(消极队尾)来管理每个列表,其中activate_top和activate_tail分别表示在活动列表的队首和队尾的图像存储元素,negate_top和negate_tail分别表示在消极列表的队首和队尾的图像存储元素。
在图3所示的实例中,生成两个图像尺寸元素,即图像尺寸元素101a和图像尺寸元素101b。在第一实施例中,由于设置了一个编码器20和一个解码器30,因而生成最多两个图像尺寸元素。
例如,如果生成图像尺寸元素101a以进行编码,那么对于编码器20的处理分配对应于五个图像存储元素的存储区——102a至102c、103a和103b。就这些已分配的存储区而言,对应于连接到活动列表102的图像存储元素102a至102c的存储区,已经存储有来自编码器20的图像数据,并且对应于连接到消极列表103的图像存储元素103a和103b的存储区处于未使用状态。
同样地,如果图像尺寸元素101b被生成以进行解码,那么对应于四个图像存储元素105a至105d的存储区就是为处理而由解码器30分配的。活动列表104不包含任何元素,并且对应于连接到消极列表105的所有图像存储元素105a至105d的存储区处于未使用状态。
如果解码器30的解码按照图3所示的状态结束,则全部删除其图像尺寸元素101b和图像存储元素105a至105d。因此,重新分配对于解码器30的处理分配的存储区。在从图3所示状态开始的解码期间,为了改变经受由解码器30所进行的处理的图像尺寸,图像尺寸元素101b被删除一次,并且生成具有以新的图像尺寸设置的图像存储元素的图像尺寸元素。虽然设置改变操作正在进行,但是编码器20仍能借助于与图像尺寸元素101a的图像存储元素相对应的存储区来继续其编码。
参照图4A和4B,示出了图像尺寸元素和图像存储元素的数据结构。
如图4A所示的数据被存储区管理块51设置到每个图像尺寸元素上。标识符ID 111是每个图像尺寸元素的唯一号码。图像宽度112和图像高度113表示设置到相关的图像尺寸元素的每个图像存储元素的图像尺寸,而图像计数114表示图像存储元素的数目。
为了管理相关的图像尺寸的图像存储元素,设置指向为相关的图像尺寸元素中的activate_top、activate_tail、negate_top和negate_tail的图像存储元素的指针115至118。例如,为这些指针115至118使用稍后将描述的图像存储元素的标识符ID。另外,由那个图像尺寸元素的标识符ID来设置是指向在相关的图像尺寸元素之后生成的另一个图像尺寸元素的指针119。
另一方面,由存储区管理块51将如图4B所示的数据设置到每个图像存储元素上。标识符ID 121是用来标识每个图像存储元素的唯一号码,并且当图像数据被存储在相应的存储区中时,将所述标识符ID提供给编码器20或解码器30。节点号122表示由存储器分配处理块52所分配的存储区。
此外,为了提供与图像存储器40中将要分配的实际存储区的相关性,设置指向保存在查找表设置块54中的查找表元素的指针123和指向保存在数据格式设置块55中的数据格式元素的指针124。为这些指针123和124使用这些元素的标识符ID。应当注意到,查找表元素和数据格式元素将在稍后进行描述。
另外,由那个图像存储元素的标识符ID来设置指向在相同的活动列表或消极列表中下一个连接的图像存储元素的指针125。
下面描述了将由存储区管理块51执行的处理。参照图5,示出了表示当存储区被分配时由存储区管理51块执行的处理的流程。
(步骤S101)当主机控制器请求CPU 10开始编码或解码时,CPU 10经由CPU I/F 56来向存储区管理块51提供对应于由主机控制器所指定的必需的存储区的图像尺寸和图像的数目。所述存储区管理块51接收这些信息单元并开始下面的处理。
(步骤S102)将新的图像尺寸元素添加到图像尺寸元素列表中。此时,给新的图像尺寸元素的标识符ID 111的列(column)设置一个值。如果存在任何已生成的图像尺寸元素,那么就把新的图像尺寸元素的标识符ID存储在该元素的指针119的列中。
(步骤S103)对于新的图像尺寸元素,由编码器20提供的图像尺寸被存储在图像宽度112和图像高度113的列中,并且图像的数目被存储在图像计数114的列中。应当注意到,例如,如果图像尺寸用一维数据来表示的话,则那个数据可以仅存储在图像宽度112的列中。
(步骤S104)将一个图像存储元素添加到最新生成的图像尺寸元素的消极列表的队尾。此时,更新指向图像尺寸元素的negate_tail的指针118。如果在消极列表中已经存在图像尺寸元素,那么更新指向negate_top的指针117,并且同时将新的图像尺寸元素的标识符ID设置到设置在图像尺寸元素队尾的指针119。
(步骤S105)将在步骤S101中所接收的图像尺寸传递至存储器分配处理块52,请求分配对应于那个图像尺寸的存储区。作为响应,存储器分配处理块52在图像存储器40中分配对应于所接收的图像尺寸的存储区,并将表示那个存储区的二叉树结构节点号以及该存储区的起始地址返回至存储区管理块51,这将在稍后参照图21进行描述。
(步骤S106)从存储器分配处理块52接收起始地址和节点号。
(步骤S107)将从存储器分配处理块52所接收的节点号存储在相关的图像存储元素的节点号122的列中,这将在稍后参照图12进行描述。
(步骤S108)由CPU 10所指定的图像尺寸被传送至查找表设置块54。作为响应,查找表设置块54将图像尺寸设置到查找表41a中,更新相应的查找表元素,并且将那个元素的标识符ID返回至存储区管理块51。
(步骤S109)从查找表设置块54接收标识符ID,并且所接收的标识符ID被设置为指向查找表元素的指针123。
(步骤S110)
将从存储器分配处理块52所接收的起始地址和节点号、从查找表设置块54所接收的查找表元素的标识符ID、以及基于图像尺寸的存储器映射类型传送到数据格式设置块55。作为响应,数据格式设置块55将一个数据格式元素添加至表示使用的列表,并将数据设置到与该元素相关联的数据格式41b的元素上。然后,将该数据格式元素的标识符ID返回到存储区管理块51。
(步骤S111)从数据格式设置块55中接收标识符ID,并且设置所接收的标识符ID以作为指向数据格式元素的指针124。通过执行上述的步骤,分配了对应于一个图像存储元素的存储区。
(步骤S112)确定是否已分配了足够存储图像数目的存储区。如果发现已经分配了所必需的存储区的数目,那么上述的处理结束。另一方面,如果发现还未分配所必需的存储区的数目,那么程序就转至步骤S104以把新的图像存储元素添加至消极列表的队尾,借此为该元素执行分配存储区的处理。
由此,在消极列表中生成了相当于由CPU 10所指定的图像数目的图像存储元素。也就是说,已经分配了与将要编码或解码的图像数目相同的处于未使用状态的存储区(或可用存储区)。
参照图6,示出了表示将由存储区管理块51执行的以将已分配的存储区提供给编码器20或解码器30的处理的流程。
(步骤S201)由编码器20或解码器30执行的处理开始。当需要在其中临时存储图像数据的存储区时,编码器20或解码器30经由CPU 10来请求存储器控制块50以便提供存储区。存储区管理块51接收来自CPU 10的该请求并且开始下面的处理。
(步骤S202)图像尺寸元素的列表从其队首被顺序地引用,以确定是否将提供每个图像尺寸元素,也就是说,每个图像尺寸元素是否对应于已经请求了存储区的编码器20或解码器30。如果发现不提供元素,那么程序就转至步骤S203;如果发现要提供元素,那么程序就转至步骤S204。
(步骤S203)引用列表中的图像尺寸元素以执行上述步骤S202的确定。
(步骤S204)根据设置到正在被引用的图像尺寸元素的指向negate_top的指针117,提取消极列表队首的图像存储元素。更具体来说,更新指向negate_top的指针117,以使指针117指向消极列表中的下一个图像存储元素。
(步骤S205)经由CPU 10将所提取的图像存储元素的标识符ID提供给发出请求的编码器20或解码器30。
(步骤S206)所提取的图像存储元素被连接到活动列表的队尾。更具体来说,更新指向activate_tail的指针116,以便指针116指向新的图像存储元素。如果所提取的图像存储元素已经被连接到活动列表,那么更新指向下一个图像存储元素的连接于队尾的元素的指针,以便该指针指向新的图像存储元素。根据需要,更新指向activate_top的指针115。
(步骤S207)从发出请求的编码器20或解码器30接收图像数据。根据指向设置到该图像存储元素的查找表元素和数据格式元素的指针123和指针124,指定每个元素以指示查找表设置块54和数据格式设置块55写入该图像数据,并且将所接收的图像数传送到图像存储器40。因此,图像数据被写入到与连接于活动列表的新图像存储元素相对应的存储区中。
因此,来自编码器20或解码器30的一个图片的图像数据被写到图像存储器40中。此时,与其中图像数据被写入的存储区相对应的图像存储元素被连接到活动列表并且以待使用。
随后,已经接收到那个图像存储元素的标识符ID的编码器20或解码器30通过CPU 10将该标识符ID提供给存储器控制块50,由此启用(enabling)来自于图像存储器40的必要图像数据。此时,在通过CPU 10接收标识符ID后,存储区管理块51根据设置到那个图像存储元素的指针,分别将相应的查找表元素和数据格式元素设置到查找表设置块54和数据格式设置块55,借此来请求读取图像数据。因此,从图像存储器40中读取图像数据,以提供到存储区管理块51并经由编码器I/F 57或解码器I/F 58传送到编码器20或解码器30。
参照图7,示出了表示当从编码器20或解码器30返回存储区时由存储区管理块51执行的处理的流程。
(步骤S301)在按所需次数为预定的图片执行读取数据的处理之后,编码器20或解码器30经由CPU 10提供用于返回相应的存储区到存储器控制块50的信息。此时,表示将要返回的存储区的标识符ID被传输到存储器控制块50。存储区管理块51从CPU 10接收返回通知信息和标识符ID。
(步骤S302)图像尺寸元素的列表被从其队首顺序地引用,以确定每个图像尺寸元素是否包含请求返回的图像尺寸元素。如果发现图像尺寸元素不包含这样的图像尺寸元素,那么程序就转至步骤S303;如果发现图像尺寸元素包含这样的图像尺寸元素,那么程序就转至步骤S304;(步骤S303)引用列表中的下一个图像尺寸元素,以执行步骤S302的确定。
(步骤S304)被引用的图像尺寸元素的活动列表被从其队首顺序地引用,以确定每个被引用的图像存储元素是否被请求返回。如果发现被引用的图像存储元素没有被请求返回,那么程序就转至步骤S305;如果发现被引用的图像存储元素被请求返回,那么程序就转至步骤S306。
(步骤S305)引用活动列表中的下一个图像存储元素,以对于每个元素执行步骤S304的确定。
(步骤S306)被引用的图像存储元素从活动列表中提取出来。应当注意到,在返回存储区时,可以从活动列表中的任意位置上提取图像存储元素。因此,此时,对于紧临所提取的图像存储元素之前的元素,更新指向下一个图像存储元素的指针125。另外,根据需要更新指向设置到相关的图像尺寸元素的activate_top的指针115或指向activate_tail的指针116。
(步骤S307)将所提取的图像存储元素连接于消极列表的队尾。更具体来说,更新指向negate_tail的指针118,以便该指针指向新连接的图像存储元素。如果图像存储元素已经被连接到消极列表,那么就更新连接到指向下一个图像存储元素的连接到队尾的元素的指针,以便这个指针指向新的图像存储元素。根据需要,更新指向negate_top的指针117。
由此,与进一步读取不再需要的存储区相对应的图像存储元素被连接于在准备好存储新的图像数据的状态下获得的消极列表。应当注意到,将要重新分配的每个存储区可以是从活动列表中的任意位置上中选出来的,并且每个所选择的存储区都被连接到消极列表的队尾。例如,如果在其中图像数据被写到图像存储器中的序列和其中图像数据被从其中利用MEPG系统读取的序列之间存在失配,则如上所述线性列表的管理易于允许采取措施。
参照图8,示出了表示在重新分配存储区时将由存储区管理块51执行的处理的流程。
(步骤S401)当主机控制器指示编码器20或解码器30结束编码或解码或改变经受处理的图像尺寸时,通过CPU 10将在相关的处理中至此为止使用的用于指导存储区的重新分配的信息提供给存储器控制块50。此时,将在相关的处理中设置的图像尺寸和图像数目提供给存储器控制块50。在从CPU 10接收到图像尺寸和图像的数目后,存储区管理块51就开始执行下面的处理。
(步骤S402)从其队首顺序地引用图像尺寸元素的列表,以确定每个被引用的图像尺寸元素是否将被重新分配,或者是否与已经请求重新分配存储区的编码器20或解码器30相对应。如果发现不重新分配元素,那么程序就转至步骤S403;如果发现元素要被重新分配,那么程序就转至步骤S404。
(步骤S403)引用列表中的下一个图像尺寸元素,以便执行步骤S402的确定。
步骤S404从正在被引用的消极列表中提取队首图像存储元素。更具体来说,更新指向给相关的存储尺寸元素设置的negate_top的指针117,以便该指针指向下一个图像存储元素。
(步骤S405)将给所提取的图像存储元素设置的节点号传送至存储器重新分配处理块53,从而来请求重新分配相应的存储区。因此,存储器重新分配处理块53重新分配对应于已接收的节点号的图像存储器40中的存储区,稍后将参照图22进行描述。
(步骤S406)向数据格式设置块55发出请求,以重新分配由给所提取的图像存储元素设置的指针124指向的数据格式元素。因此,数据格式设置块55重新分配所指定的数据格式元素,这将参照图18来稍后进行描述,并且请求存储区管理块51重新分配相应的查找表元素。
(步骤S407)响应于来自数据格式设置块55的请求,存储区管理块51请求查找表设置块54以重新分配由指针123指向的查找表元素。因此,查找表设置块54重新分配所指定的查找表元素,这将稍后参照图13进行描述。
通过上述步骤S404至S407的处理,重新分配与消极列表中的一个图像存储元素相对应的存储区。
(步骤S408)确定相关的图像尺寸元素的消极列表是否具有任何图像存储元素。如果发现图像存储元素,那么程序就返回到步骤S404,以重新分配在消极列表的队首的图像存储元素。当所有存储元素已经被重新分配并由此在消极列表中不再有图像存储元素时,程序就转至步骤S409。
(步骤S409)重新分配相关的图像尺寸元素。
通过上述的处理,对于编码器20或解码器30的处理而分配的存储区被重新分配以变成可再利用。
查找表设置块的操作以下描述了查找表设置块54的操作。参照图9,示出了查找表41a的示范性结构。
如图9所示,查找表41a具有与映射到图像存储器40的硬件I/F的区域相对应的32个元素。在每个元素中,存储了一维或二维地表示的图像尺寸的数据。例如,如果数据被一维地表示,那么图像尺寸就被存储为18比特数据;如果数据被二维地表示,那么在垂直方向上的图像和在水平方向上的图像被分别地存储为9比特数据。
参照图10,示出了用来描述由查找表设置块54来管理存储区的方法的图。
查找表设置块54通过使用查找表元素来管理每个存储区的数据量的信息。由两个线性列表(活动列表131和消极列表132)来管理每个查找表元素。当前用作为存储区,也就是指定到已分配的存储区的查找表元素被连接至活动列表131。处于未使用状态的查找表元素被连接至消极列表132。
以相当于查找表41a的元素的数目的数目准备查找表元素。在初始状态中,所有的查找表元素都被连接到消极列表132。当在由编码器20或解码器30进行处理开始时请求分配所必需的存储区的时候,提取在消极列表132队首的查找表元素以将其连接到活动列表131的队尾。当在由编码器20或解码器30处理结束时请求重新分配已分配的存储区的时候,从活动列表131中提取相应的查找表元素以将其连接到消极列表132的队尾。
参照图11,示出了每个查找表元素的数据结构。
对于每个查找表元素来说,由查找表设置块54来设置图11中所示的数据。标识符ID 141是标识每个查找表元素的唯一的号码。所使用的元素计数142表示使用相关的查找表元素的图像存储元素的数目。垂直方向尺寸143和水平方向尺寸144指示以二维数据来表示的图像尺寸。一维尺寸145指示以一维数据来表示的图像尺寸。
另外,为了使之与查找表41a相关,设置一个用于指向在查找表41a中的相应元素的指针146。此外,为了配置线性列表,设置用于指向同一列表中下一个要连接的查找表元素的指针147。
应当注意到,在上述的数据段中,预先设置标识符ID 141和指向查找表41a中的元素的指针146。在初始状态下,所使用的元素计数142、垂直方向尺寸143、水平方向尺寸144、以及一维尺寸145都被设置为0。
另外,查找表设置块54通过在表格(未示出)中保存用于指向活动列表131的队首(即,activate_top)和活动列表131的队尾(即,activate_tail)的查找表元素的指针以及用于指向消极列表132的队首(即,negate_top)和消极列表132的队尾(即,negate_tail)的查找表元素的指针来管理每个列表。
下面描述了由查找表设置块54进行的操作。首先,参照图12,示出了表示在分配存储区时将由查找表设置块54执行的处理的流程。
(步骤S501)在执行用于编码或解码的存储区分配处理期间,将要分配的存储区的图像尺寸从存储区管理块51传送至查找表设置块54(这个步骤对应于图5所示的步骤S108)。接收到所述图像尺寸,查找表设置块54就开始执行下面的处理。
(步骤S502)查找表设置块54引用活动列表131的队首(即,activate_top)的查找表元素。应当注意到,如果没有查找表元素被连接到活动列表131,那么程序就转至步骤S506。
(步骤S503)查找表设置块54确定所引用的查找表元素是否对应于从存储区管理块51提供的图像尺寸。如果发现查找表元素对应于图像尺寸,那么程序就转至步骤S510;否则,程序就转至步骤S504。
(步骤S504)如果活动列表131具有下一个查找表元素,那么程序就转至步骤S505;否则,程序就转至步骤S506。
(步骤S505)引用活动列表131中的下一个查找表元素,此时程序返回至步骤S503。如果通过上述步骤S503至S505发现在活动列表131队尾的查找表元素与从存储区管理块51提供的图像尺寸相对应,那么程序就转至步骤S510。如果没有在活动列表131中发现对应的查找表元素,那么程序就转至步骤S506。
(步骤S506)提取消极列表132的队首(即,negate_top)的查找表元素,并且更新指向negate_top元素的指针,以便该指针指向下一个元素。
(步骤S507)将所提取的查找表元素连接到活动列表131的队尾。更具体来说,更新指向下一个元素的指针147和指向设置到至此为止连接到活动列表131队尾的查找表元素的activate_tail元素的指针,以便这些指针指向重新连接的元素。
(步骤S508)将从存储区管理块51提供图像尺寸设置到垂直方向尺寸143和水平方向尺寸144的列或一维尺寸145的列。
(步骤S509)
将在步骤S508中设置的图像尺寸设置到查找表41a中的由给相关的查找表元素设置的指针147指向的元素。
(步骤S510)将相关的查找表元素的所用元素计数142的计数值增加1。
(步骤S511)将相关的查找表元素的标识符ID 141传送到存储区管理块51。从查找表设置块54接收到该标识符ID后,存储区管理块51就将图像存储元素与查找表元素相关联(这个步骤对应于图5所示的步骤S109)。
因此,在活动列表131的队尾处生成与在由编码器20或解码器30所进行的处理一开始时分配的每个存储区相对应的查找表元素。在本实施例中,所使用的元素计数142的计数值的使用允许一个查找表元素与多个存储区(或图像存储元素)相关联,其中相同的图像尺寸被设置到所述多个存储区。因此,可以将图像尺寸有效地分配到具有有限数目的32个元素的查找表41a。
参照图13,示出了表示当存储区被重新分配时将由查找表设置块54执行的处理的流程。
(步骤S601)如果由编码器20或解码器30进行的处理结束,那么存储区管理块51就在一个图像存储元素的重新分配期间请求查找表设置块54重新分配与该图像存储元素相对应的查找表元素(这个步骤对应于图8所示的步骤S407)。例如,这个请求指定将要重新分配的存储区的图像尺寸。从存储区管理块51接收到请求后,所述查找表设置块54就开始下面的处理。
(步骤S602)引用活动列表131队首(即,activate_top)的查找表元素。
(步骤S603)查找表设置块54根据图像尺寸设置来确定例如所引用的查找表元素是否是一个已经由存储区管理块51请求的元素。如果发现查找表元素不是所请求的那个,那么程序就转至步骤S604;否则,程序就转至步骤S605。
(步骤S604)引用活动列表131中的下一个查找表元素,接着程序转至步骤S603。
(步骤S605)将给相关的查找表元素设置的所用元素计数142的计数值递减1。
(步骤S606)如果所使用的元素计数142的计数值是0,那么程序就转至步骤S607;否则,处理结束。
(步骤S607)从活动列表131中提取相关的查找表元素。此时,根据需要更新指向activate_top的指针、指向activate_tail的指针和指向被设置为紧临着所提取的元素前的元素的下一个元素的指针147。
(步骤S608)所提取的查找表元素被连接到消极列表132的队尾,并且更新指向至此为止连接到消极列表132的队尾的元素的下一元素的指针147和指向negate_tail的指针,以便这些指针指向新连接的元素。
每当逐一对为由编码器20或解码器30所执行的处理而分配的存储区(图像存储元素)进行重新分配时执行上述的处理,并且将相应的查找表元素的所用元素计数142的计数值递减。当计数值到达0时,将一个查找表元素从活动列表131移动到消极列表132,接着重新分配对于查找表419中一个元素的图像尺寸的设置。
以下描述了数据格式设置块55的操作。参照图14,示出了数据格式41b的示范性结构。
如图14所示,数据格式41b具有与映射到图像存储器40的硬件I/F的区域相对应的256个元素。这些元素的每一个都具有表示图像尺寸被表达为一维或二维的存储器映射类型151、指向查找表41a中的相应元素的指针152、以及表示图像存储器40中的每一个相应的区域的起始地址的基地址153。应当注意到,对于指向查找表41a中的相应元素的指针152,设置相应于这个元素的查找表元素的标识符ID。
参照图15,示出了由数据格式设置块55执行的管理存储区的方法。
数据格式设置块55通过使用数据格式元素来管理存储区地址以及表示与查找表41a的相关性的信息。如图15所示,通过两个线性列表,即活动列表161和消极列表162来管理每个数据格式元素。当前被用作为存储区的数据格式元素,即指定到已分配的存储区的数据格式元素被连接至活动列表161。未使用的数据格式元素被连接至消极列表162。
以相当于在数据格式41b中的元素的数目的数量准备数据格式元素。在初始状态下,所有的数据格式元素被连接到消极列表162。在由编码器20或解码器30进行的处理开始,当发出请求以分配所必需的存储区时,以相当于已分配的存储区的数目的数目将数据格式元素从消极列表162的队首中提取出来,并且将所提取的数据格式元素连接到活动列表161队尾。在由编码器20或解码器30进行的处理的末尾,当已分配的存储区被重新分配时,顺序地从活动列表161中提取所有的对应元素以连接到消极列表162的队尾。
参照图16,示出了每个数据格式元素的数据结构。
对于每一数据格式元素,由数据格式设置块55来设置如图16所示的数据。标识符ID 171是用于标识每一个数据格式元素的唯一号码,其是在初始化时被设置的。节点号172表示在分配存储区时从存储器分配处理块52输出的二叉树结构的节点号。
另外,设置用来指向数据格式41b中的相应元素的指针173,以便使之与数据格式41b相关。此外,为了配置线性列表,设置指向同一列表中下一个将要连接的数据格式元素的指针174。
另外,数据格式设置块55通过在表格(未示出)中保存用于指向活动列表161的队首(即,activate_top)和活动列表161的队尾(即,activate_tail)的数据格式元素的指针以及用于指向消极列表162的队首(即,negate_top)和消极列表162的队尾(即,negate_tail)的数据格式元素的指针来管理每个列表。
以下描述了将由数据格式设置块55执行的处理。参照图17,示出了表示在分配存储区时将由数据格式设置块55执行的处理的流程。
(步骤S701)在执行存储区分配以便进行编码或解码期间,数据格式设置块55接收来自存储区管理块51的请求,以便重新分配将要重新分配的存储区中的相应数据格式元素(这个步骤对应于图5所示的步骤S110),借此来执行下面的处理。应当注意到,此时,将要分配的每个存储区的起始地址、节点号、相应的查找表元素的标识符ID和基于图像尺寸的存储映射类型从存储区管理块51提供至数据格式设置块55。
(步骤S702)提取消极列表162的队首(即,negate_top)的数据格式元素,并且更新指向negate_top元素的指针,以便该指针指向下一个元素。
(步骤S703)所提取的数据格式元素被连接到活动列表161的队尾(即,activate_tail)。更确切地说,更新指向设置到连接于活动列表161的队尾的数据格式元素的下一个元素的指针174和指向activate_tail元素的指针,以便这些指针指向新连接的元素。
(步骤S704)将从存储区管理块51接收的存储器映射类型设置到由设置到相关的数据格式元素的指针173指向的数据格式41b的元素。
(步骤S705)将指向查找表41a中的相应元素的指针设置到由指针173指向的数据格式41b中的相应元素。对于这个数值来说,设置从存储区管理块51接收的查找表元素的标识符ID。应当注意到,可以通过经由此流程以外的存储区管理块51,即例如在步骤S705中询问查找表设置块54来获得该标识符ID。
(步骤S706)将从存储区管理块51接收的起始地址设置到由指针173指向的数据格式41b中的对应元素。
(步骤S707)将从存储区管理块51接收的节点号设置到相关的数据格式元素的节点号172的列上。
(步骤S708)将相关的数据格式元素的标识符ID 171传送到存储区管理块51接收到该标识符ID后,存储区管理块51将图像存储元素与数据格式元素相关联(这个步骤对应于图5所示的步骤S111)。
由此,在由编码器20或解码器30进行的处理开始时,在活动列表161的队尾顺序地生成与已分配的存储区相对应的数据格式元素。
参照图18,示出了表示在重新分配存储区时将由数据格式设置块55执行的处理的流程。
(步骤S801)如果由编码器20或解码器30进行的处理结束,那么在重新分配一个图像存储元素的期间,存储区管理块51就请求数据格式设置块55重新分配与该图像存储元素相对应的数据格式元素(这个步骤对应于图8所示的步骤S406)。例如,这个请求指定了在将要重新分配的存储区(或图像存储元素)中保存的指针124的设定值(即,标识符ID)。响应于来自存储区管理块51的请求,数据格式设置块55开始下面的处理。
(步骤S802)引用活动列表161队首(即,activate_top)的数据格式元素。
(步骤S803)数据格式设置块55根据标识符ID来确定所引用的数据格式元素是否是与来自存储区管理块51的请求相对应的元素。如果发现所引用的数据格式元素对应于该请求,那么程序就转至步骤S804;否则,程序就转至步骤S805。
(步骤S804)引用活动列表161中的下一个数据格式元素,接着程序转至步骤S803。
(步骤S805)从活动列表161中提取相关的数据格式元素。此时,根据需要来更新指向activate_top的指针、指向activate_tail的指针、以及指向被设置到紧临着所提取的元素之前的元素的下一个元素的指针174。
(步骤S806)数据格式设置块55请求存储区管理块51重新分配对应于所提取的数据格式元素的查找表元素。作为响应,存储区管理块51指定相应的查找表元素的标识符ID以请求查找表设置块54重新分配该元素(这个步骤对应于图8所示的步骤S407)。响应于这个请求,查找表设置块54执行图13所示的查找表元素的重新分配。
(步骤S807)与相关的数据格式元素相关联的数据格式41b中的元素的设定值被清空以重新分配该元素。
(步骤S808)相关的数据格式元素被连接到消极列表162的队尾,并且更新指向至此为止连接到消极列表162的队尾的元素的下一个元素的指针174和指向negate_tail的指针,以便这些指针指向新连接的元素。
每当逐一重新分配为由编码器20或解码器30执行的处理而分配的存储区(图像存储元素)时,都执行上述的处理,并且顺序地将相应的数据格式元素从活动列表161移动到消极列表162,借此来清空诸如数据格式41b中一个元素的地址之类的设置。
参照图19,示出了由存储器分配处理块52和存储器重新分配处理块53执行的存储器分配方法。
存储器分配处理块52和存储器重新分配处理块53通过将单位区域分配到二叉树结构的最深节点来管理存储器分配,所述单位区域是通过以2的幂划分图像存储器40的存储区而获得的。除了最深节点之外的每一个节点都包括分配给其子节点的所有单位区域。存储器分配处理块52以及存储器重新分配处理块53保存单位区域的起始地址并且指定节点,从而输出与所指定的节点相对应的每个单位区域的起始地址。
图19所示的实例中,为了说明简洁之便,图像存储器40被分成四个单位区域,40a至40d。通过使用由七个节点组成的二叉树结构,单位区域40a至40d被分配给最深的节点″3″至″6″。
对于存储区的分配以及重新分配,使用了二叉树结构的层深值、表示在相同的层中节点序列的偏移量、以及表示在同一层中的节点数目的宽度。在图19所示实例中,层深″1″的节点″1″包括单位区域40a和40b,而节点″2″包括单位区域40c和40d。深度″0″的节点″0″包括单位区域40a至40d。
参照图20A以及20B,示出了由存储器分配处理块52以及存储器重新分配处理块53执行的二叉树结构的节点管理方法。
由二叉树结构中的每个节点的状态(或节点状态)来管理单位区域的使用。当对应于该节点的单位区域不被使用时,节点状态是″无″,当对应于该节点的单位区域正被使用时(已分配的状态),节点状态是″已使用″,当该节点的子节点正在使用中时,节点状态是″正在使用″,当该节点或其子节点正被重新分配时,节点状态是″空闲″。
存储器分配处理块52以及存储器重新分配处理块53通过使用公共节点状态管理表来管理每个节点的节点状态。例如,在图19所示的二叉树结构中,如果节点处于如图20A所示的状态,那么节点状态管理表被设置为如图20B所示的那样。节点状态管理表被保存在存储区管理块51中,并在图21和22所示的处理中由存储器分配处理块52以及存储器重新分配处理块53设置或引用。
参照图21,示出了表示在分配存储区时将由存储器分配处理块52执行的处理的流程。
(步骤S901)在分配存储区以编码或解码期间,把将要分配的存储区的图像尺寸从存储区管理块51传送到存储器分配处理块52(这个步骤对应于图5所示的步骤S105)。接收到该图像尺寸后,存储器分配处理块52就开始下面的处理。
(步骤S902)引用深度为″0″的节点。
(步骤S903)存储器分配处理块52确定与由存储区管理块51指定的图像尺寸相对应的数据量是否小于包含在被引用的节点中包含的存储区的数据量。如果发现前者数据量较小,那么程序就转至步骤S904;否则,程序就转至步骤S905。
(步骤S904)将层深值增加1并且把将要引用的节点的层降低1层。
(步骤S905)从将要引用的层深值减去1。因此,选择适合于将要分配的图像尺寸的层。然后,设置当前的层的层宽,而要引用的节点的偏移值为″0″。
(步骤S906)存储器分配处理块52确定偏移值是否小于层宽度值。如果发现偏移值较小,那么程序就转至步骤S907;否则,程序就转至步骤S909。
(步骤S907)存储器分配处理块52确定正被引用的节点状态是否是″无″。如果发现节点状态是″无″,那么程序就转至步骤S910;否则,程序就转至步骤S908。
(步骤S908)因为正被引用的节点正在被使用,或处于正在重新分配中,所以将偏移值增加1并且引用同一层中的下一个节点。然后,程序返回到步骤S906。在步骤S906中,如果发现偏移值比层宽度高,并且发现在相同的层中的所有节点都在使用中,那么程序就转至步骤S909。
(步骤S909)从层深减去1,并且引用上一层的节点。然后,当前的层的层宽度被设置为偏移值″0″,接着程序返回到步骤S906。
(步骤S910)正被引用的节点被置成节点状态″已使用″,并且其父节点的节点状态被置成″正在使用″。
(步骤S911)将正被引用的节点的节点号返回到存储区管理块51。
(步骤S912)将包含在相关节点内的存储区的起始地址返回到存储区管理块51。
由此,分配了用于存储具有指定的图像尺寸的图像数据的最小必需存储区。通过步骤S911和S912的处理,存储区管理块51接收对应于每个已分配的存储区的节点号以及那个区域的起始地址(图5所示的步骤S106)。
参照图22,示出了表示在重新分配存储区时将由存储重新分配处理块53执行的处理的流程。
(步骤S1001)如果由编码器20或解码器30进行的处理结束,那么存储区管理块51就把与一个图像存储元素相对应的节点号传送至存储器重新分配处理块53,以请求该存储区的重新分配(这个步骤对应于图8所示的步骤S405)。接收到该节点号后,存储器重新分配处理块53就开始下面的处理。
(步骤S1002)获得对应于所接收的节点号的层深以及偏移值。
(步骤S1003)将与所获得的层深以及偏移量相对应的节点的节点状态设置为″空闲″。
(步骤S1004)如果相同层中具有相同父节点的另一个节点的节点状态是″空闲″的话,那么程序就转至步骤S1005;否则,处理结束。
(步骤S1005)将相同层中具有相同父节点的另一个节点的节点状态设置为″无″,并且将该父节点的节点状态被设置为″空闲″。
因此,重新分配了与一个分配的图像存储元素相对应的存储区。然后,在重新分配一个图像尺寸元素中的所有图像存储元素之后,将在上面的步骤S1004以及S1005中设置为″空闲″的节点的节点状态设置为″无″,从而使得每个重新分配存储区可利用。
如上所述并根据作为本发明第一实施例的图像处理设备,可以进行编码器20和解码器30的其中之一中的图像尺寸设置,而无需停止另一个处理的处理。例如,如果假定所述图像处理设备安装在数字摄像机中,那么就通过编码器20来对所捕获的运动图像数据进行编码,以便将其记录到诸如磁带之类的记录介质上。由解码器30将从记录介质中读取的运动图像数据的编码流解码,以便显示在显示部件上。
还可以假定记录到磁带上的运动图像数据的编码流被以其减小的图像尺寸再编码,并且所得到的运动图像数据被记录到存储卡或经由网络被传输到外部设备。在这种情况下,从磁带读取的编码数据流被解码器30解码,然后由编码器20以不同的图像尺寸进行编码。在这一处理中,本实施例能够在对从磁带上读取的编码流数据保持由解码器30进行的解码处理的情况下,在由编码器20进行的编码处理时改变图像尺寸。
此外,如果假定在存储卡中准备了具有不同的图像尺寸的运动图像数据的编码流,其被再编码以便经由网络被传输到外部设备。那么在这种情况下,本实施例能够在保持由编码器20以恒定的图像尺寸进行编码的情况下,从存储卡连接地读取编码流以由解码器30解码从而提供到编码器20。
本发明上述的效果主要通过由存储器分配处理块52和存储器重新分配处理块53进行的通过利用二叉树结构来分配和重新分配存储区的处理、以及由存储区管理块51进行的以统一方式通过利用线性列表来管理已分配的存储区的使用状态的处理来获得。也就是说,存储器分配处理块52和存储器重新分配处理块53能通过利用二叉树结构来有效地从图像存储器40中的空闲区分配用于对于编码和解码操作中的一个图片存储图像数据的最小必需存储区。
另外,存储区管理块51为每个图片离散地请求存储器分配处理块52分配编码和解码所必需的存储区,并且管理存储区的使用状态,以便在图像存储器40中实际上以分散的方式而非以固定的方式分配编码器20或解码器30所使用的存储区。这种结构允许仅对不再需要的那些区域进行重新分配,并且允许将重新分配的区域容易地重新使用为空闲区,从而在编码器20和解码器30的处理期间,灵活地应对图像尺寸变化。
此外,编码器20和解码器30能够只借助于从存储区管理块51接收的每个图像存储元素的标识符ID来利用图像存储器40读和写数据,而不需要识别图像存储器40的规格和物理地址。这种配置结构较大地减少了电路比例以及编码器20和解码器30的制造成本。
更进一步来讲,查找表设置块54以及数据格式设置块55依照图像存储器40的硬件I/F来执行必要的设置,以使得已分配的存储区是可用的,以便如果在图像存储器40的规格发生变化,那么仅仅改变这些功能块的处理程序就能提供灵活的系统更换。
参照图23,示出了举例说明作为本发明第二实施例的图像处理设备的主要部分的示范性结构的框图。
在图23所示的图像处理设备中,可以由两个编码器20a和20b来并发地执行编码。例如,相同的运动图像数据(诸如所捕获的图像数据)和相同的音频数据被提供给两个编码器20a和20b,以使得这些编码器以不同的图像尺寸编码所提供的数据,将一个编码流记录到磁带上而将另一个编码流记录到诸如存储卡之类的另一种类型的记录介质上或经由网络将其传输到外部设备。
如第一实施例那样,编码器20a和20b通过图23所示的图像处理设备中的存储器控制块50来访问图像存储器40。这种配置结构允许在一个编码操作中止而继续另一个编码操作的情况下改变图像尺寸,从而重新开始编码。
参照图24,示出了举例说明作为本发明的第三实施例的图像处理设备的主要部分的示范性结构的框图。
在图24所示的图像处理设备中,可以由两个解码器30a和30b来并发地执行解码。例如,将不同的编码流提供给两个解码器30a和30b以便并发地执行解码,并将由这些解码器输出的运动图像数据合成以便显示在一个屏幕上。
如第一实施例那样,解码器30a和30b通过图24所示的图像处理设备中的存储器控制块50来访问图像存储器40。这种配置结构允许在一个编码操作中止而继续另一个编码操作的情况下改变图像尺寸,从而重新开始编码。
除运动图像数据的编码和解码之外,本发明同样也适用于通过共享相同的图像存储器执行两行或更多行的图像处理。例如,这类图像处理包括图像放大和缩小、图像合成、以及图片质量校正。此外,本发明应用到一行的图像处理还带来了这样的效果独立于图像存储器的规格地简化了图像处理引擎的配置。
本发明尤其适合于这样的情况由未安装OS的嵌入式系统来执行诸如图像处理和访问图像存储器的管理之类的处理。然而,将本发明应用到带有安装了通用的OS的嵌入式系统也是可实行的。在这种情况下,在通用OS上执行相当于存储器控制块50的处理程序,并且因为这种程序专用于图像存储器管理,所以所述程序提供了比由通用OS的图像存储器管理处理更好的性能。
本发明每一个上述的实施例中所示的存储器控制块50的处理功能都可以借助于计算机来实现。在这种情况下,提供了这样一种程序,在其中编码了将由存储器控制块50提供的功能的处理内容。在计算机上执行该程序在计算机上实现了上述的处理功能。可以将编码有处理内容的程序记录到计算机可读的记录介质上。这类记录介质包括例如,磁记录装置、光盘、磁光记录介质以及半导体存储器。
通过将该程序记录到基于例如半导体存储器的便携式记录介质而分配上述的程序,并且销售这种便携式记录介质。将所述程序存到在网络上的服务器计算机中并且将所存储的程序传递到其他的计算机也是可行的。
在其上执行程序的计算机将所述程序从便携式记录介质或服务器计算机存储到计算机的存储单元中。然后,计算机从存储单元中读取该程序并且按照该程序的指令执行处理。计算机从该便携式记录介质直接读取该程序并且执行该程序而不将该程序存储在计算机的存储单元中也是可行的。
虽然已经使用特定的术语描述了本发明优选实施例,但是这种描述仅仅是说明性的,并且能够理解的是,在不背离以下权利要求的精神或范围的情况下,可以作出改变和变化。
权利要求
1.一种存储器管理方法,用于由多个图像处理部件共享一个图像存储器作为工作区以由所述多个图像处理部件并发地执行处理操作,该方法包含存储区分配步骤,其中存储区分配部件接收关于为将由所述多个图像处理部件执行的处理操作而单独地指定的图像尺寸和图像计数的信息,按照所述图像计数将对应于所述图像尺寸的存储区分配到所述图像存储器中的空闲区,并输出指示所述分配的图像区的地址;存储区信息生成步骤,其中存储区管理部件生成存储区信息,其中对于每个所述存储区存储了在所述存储区分配步骤中分配的每一个所述存储区的标识信息和用于访问每一个所述存储区的访问信息之间的相关性,所述访问信息至少包括所述地址;以及存储区管理步骤,其中所述存储区管理部件从所述多个图像处理部件中的每一个接收用于使用和返回每一个所述存储区的请求,以根据所述存储区信息来管理每一个所述存储区的使用状态。
2.根据权利要求1所述的存储器管理方法,还包含存储区重新分配步骤,其中,当中止由所述图像处理部件执行的处理时,所述存储区管理部件再次将为由所述图像处理部件所进行的处理而分配的所述存储区设置到空闲区,并且删除所述存储区信息。
3.根据权利要求1所述的存储器管理方法,其中对于所述多个图像处理部件的每一个,所述存储区管理步骤通过使用第一线性列表和第二线性列表来管理每个所述存储区的使用状态,其中所述第一线性列表包括对应于由所述图像处理部件使用的每个所述存储区的所述存储区信息,所述第二线性列表包括对应于未使用的每个所述存储区的所述存储区信息。
4.根据权利要求3所述的存储器管理方法,其中所述存储区信息生成步骤包括以下步骤,其中将对应于在所述存储区分配步骤中分配的每个所述存储区的所述存储区信息顺序地连接到所述第二线性列表;以及所述存储区管理步骤包括以下步骤,其中,当从所述图像处理部件发出用于使用的所述请求时,提取在所述第二线性列表队首的所述存储区信息,将所提取的存储区信息连接到所述第一线性列表的队尾,并且将用于标识所述存储区信息的标识号输出到所述请求图像处理部件。
5.根据权利要求4所述的存储区管理方法,其中所述存储区管理步骤还包含以下步骤,其中,当从所述图像处理部件发出用于返回的所述请求并指定了所述标识号时,从所述第一线性列表中提取对应于所述指定标识号的所述存储区信息,并且将所述提取的存储区信息连接到所述第二线性列表的队尾。
6.根据权利要求5所述的存储器管理方法,还包含存储器重新分配步骤,其中,当中止由所述图像处理部件进行的处理时,所述存储区管理部件从所述第二线性列表中删除所述相应的存储区信息并且将相应于所述存储区信息的所述存储区设置到空闲区。
7.根据权利要求1所述的存储区管理方法,其中,当从所述图像处理部件发出用于访问所述图像存储器的请求并且指定了所述存储区时,所述存储区管理步骤通过使用由对应于所述指定的存储区的所述存储区信息关联的所述访问信息来访问所述图像存储器并且在所述指定的存储区和所述请求图像处理部件之间传递图像数据。
8.根据权利要求1所述的存储器管理方法,其中所述存储区分配步骤通过将所述图像存储器中的单位存储区与二叉树结构的底层节点相关联来管理所述单位存储区,并且当指定所述图像尺寸时,从所述二叉树结构中提取节点,在所述二叉树结构中将可以存储相当于所述指定的图像尺寸的图像数据的一个或多个单位存储区与所述二叉树结构的底层子节点相关联,并将表示所述所提取的节点的节点号输出到所述存储区管理部件,从而分配对应于所述指定的图像尺寸的所述存储区;以及所述存储区管理步骤将在所述存储区分配步骤中输出的所述节点号存储到所述存储区信息中。
9.根据权利要求1所述的存储器管理方法,其中所述存储区分配步骤输出所述存储区的起始地址作为表示所述分配的存储区的所述地址;以及所述访问信息包括所述起始地址以及对应于由所述起始地址指示的所述存储区的图像尺寸。
10.一种图像处理设备,用于由多个图像处理部件共享一个图像存储器作为工作区以由所述多个图像处理部件并发地执行处理操作,该设备包含存储区分配部件,用于接收关于为将由所述多个图像处理部件执行的处理操作而单独地指定的图像尺寸和图像计数的信息,按照所述图像计数将对应于所述图像尺寸的存储区分配到所述图像存储器中的空闲区,并输出表示所述分配的图像区的地址;以及存储区管理部件,用于保存存储区信息,其中对于每个所述存储区存储了由所述存储区分配部件分配的每个所述存储区的标识信息和用于访问每个所述存储区的访问信息之间的相关性,所述访问信息至少包括所述地址,并且该存储区管理部件用于从所述多个图像处理部件的每一个接收用于利用和返回每个所述存储区的请求,从而管理每个所述存储区的使用状态。
11.根据权利要求10所述的图像处理设备,其中,当中止由所述图像处理部件执行的处理时,所述存储区管理部件输出用于重新分配为将由所述图像处理部件执行的处理而分配的所述存储区的请求、以删除所述存储区信息;以及接收到来自所述存储区管理部件的所述重新分配请求,所述存储区分配部件将所述相应的存储区再次设置到空闲区。
12.根据权利要求10所述的存储器管理设备,其中对于所述多个图像处理部件的每一个,所述存储区管理部件通过使用第一线性列表和第二线性列表来管理每个所述存储区的使用状态,其中所述第一线性列表包括对应于由所述图像处理部件使用的每个所述存储区的所述存储区信息,以及所述第二线性列表包括对应于未使用的每个所述存储区的所述存储区信息。
13.根据权利要求12所述的图像处理设备,其中所述存储区管理部件顺序地将对应于在所述存储区分配部件中分配的每个所述存储区的所述存储区信息连接到所述第二线性列表,并且,当从所述图像处理部件发出用于使用的所述请求时,提取所述第二线性列表的队首的所述存储区信息,将所提取的存储区信息连接到所述第一线性列表的队尾,并将用于标识所述存储区信息的标识号输出到所述请求图像处理部件。
14.根据权利要求13所述的存储区管理设备,其中当从所述图像处理部件发出用于返回的所述请求并且指定了所述标识号时,所述存储区管理部件从所述第一线性列表提取对应于所述指定标识号的所述存储区信息,并且将所述提取的存储区信息连接到所述第二线性列表的队尾。
15.根据权利要求14所述的图像处理设备,其中,当中止由所述图像处理部件进行的处理时,所述存储区管理部件将用于重新分配对应于所述第二线性列表中的所述存储区信息的所述存储区的请求输出到所述存储区分配部件,以删除所述存储区信息,并且,响应于来自所述存储区管理部件的所述重新分配的请求,所述存储区分配部件将相应的存储区设置到空闲区。
16.根据权利要求10所述的图像处理设备,其中,从所述图像处理部件接收到指定了所述存储区的用于访问所述图像存储器的请求,所述存储区管理部件通过使用由对应于所述指定的存储区的所述存储区信息关联的所述访问信息来访问所述存储区,并且在所述指定的存储区和所述请求图像处理部件之间传送图像数据。
17.根据权利要求10所述的图像处理设备,其中所述存储区分配部件通过将所述图像存储器中的单位存储区与二叉树结构的底层节点相关联来管理所述单位存储区,并且当指定所述图像尺寸时,从所述二叉树结构中提取节点,在所述二叉树结构中将可以存储相当于所述指定的图像尺寸的图像数据的一个或多个单位存储区与所述二叉树结构的底层子节点相关联,并将表示所述所提取的节点的节点号输出到所述存储区管理部件,从而分配对应于所述指定的图像尺寸的所述存储区;以及所述存储区管理部件将在所述存储区分配部件中输出的所述节点号存储到所述存储区信息中。
18.根据要求10所述的图像处理设备,其中所述存储区分配部件输出所述存储区的起始地址作为表示所述分配的存储区的所述地址;以及所述访问信息包括所述起始地址以及对应于由所述起始地址指示的所述存储区的图像尺寸。
19.一种存储器管理程序,用于使计算机执行存储器管理处理,以便通过共享一个图像存储器作为工作区来并发地执行由多个图像处理部件进行的处理操作,所述存储器管理程序包含存储区分配步骤,其接收关于为将由所述多个图像处理部件执行的处理操作而单独地指定的图像尺寸和图像计数的信息,按照所述图像计数将对应于所述图像尺寸的存储区分配到所述图像存储器中的空闲区,并输出表示所述分配的图像区的地址;存储区信息生成步骤,其生成存储区信息,其中对于每个所述存储区存储了在所述存储区分配步骤中分配的每一个所述存储区的标识信息和用于访问每一个所述存储区的访问信息之间的相关性,所述访问信息至少包括所述地址;以及存储区管理步骤,其从所述多个图像处理部件中的每一个接收用于使用和返回每一个所述存储区的请求,以根据所述存储区信息来管理每一个所述存储区的使用状态。
全文摘要
当通过共享一个图像存储器来并发地执行编码和解码时,本发明能够灵活地应付经受处理的图像尺寸发生变化的情形。存储器分配处理块接收关于为编码和解码的每一个所指定的图像尺寸和图像数目的信息,通过将这些存储区以相等于图像的数目分配到在图像存储器中的空闲区来单独地分配对应于所指定图像尺寸的存储区,并输出所分配的存储区的地址。存储区管理块保存存储区信息,该信息包括每一个已分配的存储区的标识信息和用于访问每个存储区的访问信息之间的相关性,并接收来自编码器和解码器、用于使用已分配的存储区和返回所使用的存储区的请求,从而根据存储区信息来管理每个存储区的使用状态。
文档编号G06T1/60GK1658665SQ200510064038
公开日2005年8月24日 申请日期2005年2月17日 优先权日2004年2月17日
发明者冈田徹也 申请人:索尼株式会社

最新回复(0)