使用多通道编码信息并在单通道中解码的方法和设备的制作方法

文档序号:6477054阅读:255来源:国知局
专利名称:使用多通道编码信息并在单通道中解码的方法和设备的制作方法
技术领域
本发明涉及对信息进行编码和解码的方法和设备,更具体地说涉及使用多通道编码和在单通道中解码的方法。
背景技术
随着计算机和电子传输的普及,人们广泛地使用数字信息的压缩和解压缩方法。
影响系统的要求的一个参数是进行压缩的速度。在某些实时地运行的系统中,必须以比实时速率更快的速率进行压缩。在其它的允许离线压缩的系统中,压缩处理可以离线地执行。
另一参数是要求的压缩量。尽管文本文件可能较小,在传输或存储之前不要求压缩,但图像文件却十分大,因此在存储器或磁盘中存储或传输未压缩的图像变得十分昂贵。
此外,对压缩的信息进行解压缩的速率是确定所使用的压缩类型时考虑的另一参数。虽然花一整秒钟对单个的静态图像进行解压不会成为问题,但是如果必需对一系列图像进行解压以便以实时速率播放时,解压的速率就成为重要的问题。
常规的压缩/解压系统以各种方式权衡上述和其它的参数。例如在某些系统中使用的压缩算法可能由对数字信息实现的最大压缩的重要性决定,而不考虑压缩它所花费的时间。某些其它的系统提供了不同的压缩程度,并因此使用不同的压缩算法。
尽管已有许多不同的压缩/解压系统,但是仍然一直需要更有效地运行的这种压缩/解压系统。获得更有效的压缩的常规的方式是研究更有效的压缩/解压算法。虽然这具有重要的优点,但是研究可使用的算法昂贵且风险大。
常规的压缩/解压系统的共同特征在于接收压缩的数字信息,根据接收它的顺序操作该数字信息。因此,压缩首先接收的位片,并仅在已经压缩完成了首先接收的片之后压缩随后接收的片。这可看作在单通道中进行压缩,因此一次仅操作每个数据片,一旦操作了,就不再操作。
即使使用多个处理器对连续的片进行操作,但是总的压缩率仍然限制于最低压缩的片,因此该系统实质上仍然是单通道系统。因此,如果不能压缩特定的片,则压缩操作失败。
因此,需要能够更有效地压缩和解压经压缩的数字数据的方法和设备。

发明内容
本发明的一个目的是更有效地且损失更小地压缩数字数据和对经压缩的数字数据进行解压。
本发明的另一目的是自适应地预测压缩数字数据的编码所花费的可能的时间期限和在确定要使用的压缩编码的过程中使用这些预测。
本发明的另一目的是将数字数据划分为多个线程和独立地操作多个线程以实现所需的压缩量。
本发明的另一目的是将数字数据划分为多个线程和独立地操作多个线程以在给定的时间期限内实现所需的压缩量。
本发明的进一步目的是以通道的顺序操作数字数据,由此改善所得的压缩。
本发明的进一步目的是以单通道对先前压缩的数据进行解码。
通过本发明实现前述的目的(单个目的或组合的目的),本发明描述了一种操作数字数据的方法和设备,其中数字数据划分为多个块,产生多个线程,以使每个线程包括多个块中的至少一个,此后操作每个线程以获得多个压缩的线程,每个压缩的线程包括数字数据的至少一个压缩块。
在这种方法中,使用压缩引擎操作线程以使压缩算法重复地循环地压缩在先前的通道中通过压缩引擎已经压缩的数据。在每个压缩通道之间,然后使用在先前的通道中建立的元数据操作压缩的数据以消除在先前的通道中压缩的数据中存在的冗余。
因此,本发明使用预定压缩算法的多通道压缩数字数据以获得压缩的数字数据,随后使用对应的解压的算法的单通道压缩经压缩的数字数据以便在没有损失的过程中获得数字数据。


通过本发明的非限制性实例性实施例参考附图更详细地描述本发明的上述和其它的目的、特征和优点,其中在全部视图中相同的附图参考标记表示类似的部件,其中附图1A和1B所示为根据本发明分别包含可操作元的不同文件类型和元数据的数字数据的实例性部分;附图2所示为根据本发明压缩/解压系统的方块图;附图3A所示为根据本发明在压缩过程中初始接口控制器操作的流程图;附图3B所示为根据本发明在压缩的过程中压缩引擎操作的流程图;附图4A-4D所示为在压缩操作的过程中根据本发明以不同的时间对数字数据进行压缩操作的效果图;附图5A-5E所示为在压缩操作的过程中在以不同的时间压缩数字数据的过程中产生压缩的数据和元数据的附图。
具体实施例方式
首先,下文讨论本发明特别涉及压缩和解压方面的内容。其后解释本发明的其它方面。
关于压缩和解压,为表示本发明,首先讨论操作数字数据的格式。本发明的有利的特征在于它能够操作(可能压缩)任何先前未压缩的数据(比如文本文件或图像文件)以及先前压缩的数据(比如MPEG文件或ZIP文件)。作为另一方式,本发明能够操作所识别的文件类型以及未识别的文件类型。在Windows操作系统环境下,每个文件具有确定特定的文件类型的头部部分。结果,在大多数情况下,用户以可识别的格式操作文件。这对于其它的操作系统也是一样,比如Unix、MAC、Linux以及其它的操作系统。当然,公知的是各种操作系统可以共用相同的文件类型。因此,虽然有成百上千种文件类型,但是大部分都可由在头部部分中的定义所识别。
附图1所示为包含使用本发明可操作的多种不同的文件类型的数字数据100的实例性部分。为了便于解释,仅示出了三种文件类型,即位图文件B、可执行文件C和压缩文件Z。显然,位图文件B是未压缩的文件,可执行文件C是程序文件,以及压缩文件Z是经压缩的文件。数字数据100的这个实例性部分可以是需要存储在某些种类的存储器装置(比如半导体存储器、硬盘驱动器或CD)中的数据,可以是需要沿某些传输路径传输的数据,或者可以需要压缩或进一步压缩的某些其它数据。虽然实例性部分示出了不同的文件类型,但是应该理解的是本发明也可以操作具有单个文件类型的数据,事实上,如下文所述,如果它操作这些数据则某些优点是显然的。
附图2所示为操作数字数据100的系统200。作为举例,假设数字数据存储在数字存储器210中,并且这种数字数据要求压缩。为讨论的目的,系统200被描述为将数字数据100作为经压缩的数字数据100′重新存储回到它已经压缩的数字存储器210中。然后提供压缩的数字数据100′的解码的解释。但是,应该理解的是,一旦获得了压缩的数字数据100′,则为了随后的使用目的它可能以各种方式存储或传输。下文描述可以使用经压缩的数字数据100′的某些具体方式,但本发明并不限于所描述的这些具体方式。
除了数字存储器210上,附图2所示为包含控制器接口220和压缩/解压引擎230的系统200。虽然系统200的这些部件中的每个部件彼此相对描述,但是应该理解的是,通过每个部件实施对应的功能具有独立的方面。虽然在本发明的优选实施例中时控制器接口220和C/D引擎230可以时间共享并使相同的微处理器,但是可以使用不同的处理器以实施每个方面,其中C/D引擎230使用具有能够同时操作多个线程的能力的至少一个处理器实现。在进一方面中,可以并行使用多个不同数量的处理器来更有效地实施C/D引擎230,如下文所述。不管使用哪种实施方式,控制器接口220和C/D引擎230优选以C++或某些其它计算机语言书写的程序指令序列实施,或者,可替换的是,以硬件实施。已经发现,特别有利的是在DSP中实施C/D引擎230,比如Texas Instruments TM 320的以C5X、C6X和C7X序列模型提供的DSP,每种模型彼此都具有不同的性价比,但有效地允许压缩和解压算法以比可能的速度快得多的速度运行,如果要求这些算法通过控制控制器接口230的相同微处理器执行。
现在参考附图3描述通过系统200的操作压缩数字数据100。首先,如步骤310所示,用户定义所需的压缩比和严格的压缩编码时间。虽然这些根据用户的应用不同而不同,但通常可以理解的是压缩比越高和所需的编码时间越短,则系统200必须运行更多以确保满足所需的比率和时间。并且还应该注意的是,虽然希望某些比率和时间,但是不能确定的是系统200是否能够满足这些要求。在这方面,还应该注意,所使用的压缩(和对应的解压)程序的具体类型不是本发明的焦点。相反,本发明的重点方面是如下的能力为定义压缩程序组自适应地预测基于各种压缩程序对数字数据100的整个数量压缩编码到所要求的压缩水平所花费的可能的时间期限,以及在确定要使用的压缩程序的过程中使用这些预测,如下文所描述。因此,产生这些预测的开始点给系统200指示所需的压缩比和编码时间。
对于不同类型的数字信息可以预测这些压缩比和编码时间。下表1提供了对于基本具有相同的大小的文件根据在文件中给数字信息形成的多少通道不同文件类型和压缩程序可用的压缩比率的模型和压缩程序。通常,随着通道增加压缩增加,虽然随着时间的变化实现的压缩量减少(通常以指数规律减少或至少比线性规律更快地减少)。假设使用公知的但通过获取元数据300可增强的压缩程序(比如LZW或其它的程序)操作数字信息,如下文所描述。
在用户输入所所需的压缩率和压缩变码时间之后,进行步骤320,附图2的控制器接口220识别数字数据100以进行编码。识别这种信息并使一个装置(比如存储器210)识别和将该信息传输给另一个装置(比如控制器接口)的方式都是十分公知的,在此不需要进一步描述。一旦通过控制器接口220识别,在数字数据100内与每个文件关联的头部110由控制器接口220和用于检测文件类型和文件大小的头部信息识别。
基于这种信息,然后在步骤330中控制器接口准备数字数据100以进行压缩编码。
附图4A-4E所示为在压缩操作的过程中以不同的时间根据本发明压缩操作数字数据的效果附图。在附图4A中,以对具有某些相关性的文件进行一起分组的顺序(在所示的实例中导致了相同的顺序)描述了原始数字数据文件100。作为总体水平的实例,图像、程序和压缩的文件每个都与其它的图像、程序文件和压缩的文件一起分组。但是,可取的是,由于存在许多不同的类型的图像文件、程序文件和压缩文件,因此每种类型的文件(如在每个文件的头部中所识别的)彼此相对分组。因此,如在附图4A的具体实例所示,有位图B文件、可执行C文件和压缩Z文件。但是,应该理解的是,除了系统200中已经压缩的文件以外,本发明操作并试图比较任何类型的文件,并不限于在本实例中所使用的这些具体的类型。
应该理解的是,对应于这些文件中的每个文件的数据优选在物理上不移动到新的存储器位置(虽然在理论上这是可能的),但是形成指针以基于文件类型给单个的文件关联一个顺序。这对于下文的解释也是一样,其中所示的数据移动,因为以这种方式描述时在视觉上更容易理解。
用户可以确定分组的大小。因此,如上文所述的优选方案那样,对每种文件类型进行分组。可替换的是,对类似的文件类型可以进行主题分组,比如图像、程序和压缩文件。此外,从1至N的某些其它的分组方式(这里N是任何整数,但小于最大文件类型数并大于1)都可以实施,比如使用自适应预测可压缩的文件量(如上文所描述),在这种情况下初始组I的文件是为预测压缩最大的文件,而组N的文件是预测压缩最少的文件。可替换的是,通过压缩所需的自适应预测的时间可以特定这种分组,在这种情况下组1的文件是预测压缩最快的文件,而组N的文件是为预测压缩最慢的文件。
执行这种分组以使预测包含估计为具有类似的压缩特性的数据的文件相对类似地压缩,并彼此关联。在下文描述的压缩处理中在随后的阶段中,这允许更有效地压缩并使变相的冗余变得更加清楚。
此外,在开始分组之后,如在步骤340中所示,通常基于每个文件将数字数据划分为块,如附图4B所示,将文件B1划分为头部部分,然后部分B1a、B1b、B1c和B1d。优选执行这种划分以使对于这种文件类型每个块具有能够最容易压缩的大小。块的大小相差较大,通常在0至65K字节之间。
一旦在步骤340中执行分块后,接着进行步骤350,接口控制器220操作每个块以自适应地预测压缩组成数字数据100的每个文件的每个块所需的可能的时间期限以便使用具体的压缩程序实现总体所需的压缩率。基于头部信息和从先前已经压缩编码的类似的类型的文件中获得的知识,估计基于具体的压缩程序将全部的数字数据100的每个块压缩编码成所要求的水平所需的可能的时间期限,然后累加所估计的可能是时间期限以预测总的时间。
基于来自头部的文件类型对于相同的相对块大小将特定类型的文件的所有块都估计为相同。在这方面,使用一种表提供使用用于每种文件类型的特定的压缩程序实现该压缩所需的估计的压缩量和估计的时间。从下文的表1中可以清楚看出,对于不同的文件类型,压缩量通常比所使用的通道的数量增加更大。

表1A实例文件类型选择

表1B具有预测的比率的文件类型实例

表IC具有预测的时间的文件类型实例基于在使用特定的压缩程序时该类型的数据通常压缩多少的估计、所需的压缩量的估计和获得该压缩水平而估计的通道数,可以实现获得该压缩水平所需的估计时间。因此,为了压缩所有的数字数据100,可以使用不同的压缩程序以及应用相同的压缩程序形成的多少个通道,如下文所述。接口控制器220可以确定对于每个不同的块建议使用哪一个以试图实现全部所需的压缩。例如,对于在附图1中的文件(称为Z1),在使用给定能的压缩程序的第一通道之后该文件通常仅轻微地压缩,(如上文的表I中所示),接口控制器220可以建议C/D引擎仅在Z1文件的块上形成1个通道,但对于其它的文件,比如附图1的B1和B2,可以分别建议适合于所建议的压缩程序的2个和3个通道,因此对这些块能够实现所需的压缩,以便对数字数据100的整个数据量在所需的时间期限内实现所需的压缩。
注意,虽然接口控制器220形成这些初始预测并连同要操作的数据一起将控制信号和与这些初始预测相关的元数据一起发送给如下文进一步描述的C/D引擎230,以及虽然C/D引擎230在操作特定的块时开始使用这些控制信号和元数据,但是C/D引擎230独立地确定与控制信号和元数据所建议的操作的偏差,如下文进一步所讨论。
关于控制信号和元数据的形成,本发明的另一方面涉及使用不同的线程对不同的数据进行压缩。根据在文件中的每个块的需要确定不同的线程,或者许多文件可以使用相同的线程。下文解释如何进行这种确定。关于是否考虑实施新的线程,再次指出,接口控制器220对使用特定的压缩程序压缩每个块所需的预期持续时间已经进行了预测。查看这个的另一种方式是接口控制器220估计对于该压缩程序该程序可以在每个块上形成的编码通道的数量。因此,如果存在接口控制器220已经预测到某一块将难以压缩,则可以识别不同的线程,该线程与唯一的元数据以及控制信号关联,并提供C/D引擎230对该线程开始压缩程序操作所需的信息。因此,对于接口控制器220已经确定应该独立地压缩的每个块,形成不同的线程。
由于如果需要的话本发明可以独立地操作每个块,虽然在许多情况下它可以以单个线程操作多个块,但是接口控制器需要能够确定何时产生新的线程或者何时对多个块使用相同的线程,如在附图3中的步骤360所示。例如,如果压缩数据块所需的时间大于某些阈值,则对通过接口控制器220所形成的块形成新的线程。否则,将另一块加入到先前的块中,比如通过接口控制器220标记一行块以经相同的线程压缩。
根据上文的描述,应该理解的是接口控制器220将给C/D引擎230产生指示对于每个线程它建议运行哪个压缩程序的控制信号。虽然接口控制器也产生其它的程序交换信号以确保该数据被正确地传输,但是不需要描述这些。下文也将适当地描述所产生的某些诊断控制信号。
此外,所产生的元数据提供压缩程序的特性以及与正操作的流的类型关联的重要模型。在附图1B中示出了元数据的组织。关于压缩程序的元数据特征,有三个重要的特征1.为实现所需的压缩量给C/D引擎指示要求形成的接口控制器预测的通道数的通道要求变量;2.通道完成变量,在将它发送给C/D引擎时它是空的,但在C/D引擎将它传递给接口控制器以使它能够更新它的预测表;和3.提供在元数据内模式数量的模式内变量。起初,通常没有模式。在通过压缩程序操作第一通道流之后,获得在该数据内发现的模式并使用它,如下文进一步描述。这些模式存储在该元数据内。
通过上文所进行的解释,一旦线程确定步骤360完成后,步骤370就开始,将适当的控制信号、元数据和数据的线程发送给C/D引擎230,以进行在给定的线程内的每个块的压缩。
附图3B所示为在C/D引擎230从接口控制器220接收请求以对特定的线程执行压缩程序时它采取的各种步骤。如步骤410所示,C/D引擎230从接口控制器220接收初始控制信号、元数据和对应的数据块并将相关的元数据和数据块存储在缓冲管理器232的存储器中,如附图2所示。缓冲管理器232作为数据管理器操作,因为它也存储中间操作结果(如下文所描述)以及将要最终返回给接口控制器的最终压缩结果。
下面进行步骤420,所示为与C/D引擎230相关的处理器使用压缩程序控制信号来调用适当的压缩程序并启动压缩程序的第一通道的执行。
因此,可以更加清楚地理解这个第一通道,下文描述在附图2的压缩/解压程序块234中示出的压缩程序的讨论。压缩/解压程序块234包含不同的压缩程序和它们相应的解压程序,因此对于每种类型的文件都有压缩/解压程序,可取的是相对于文件类型存在更多的压缩/解压程序和其它的压缩/解压程序,因为它们可能有用。每种压缩/解压程序通常包括压缩和解压算法,这些算法优选以可编译的编程语言比如C++编写以及与其相关的压缩/解压数据表,正如大家公知的是,还可以使用其它的压缩/解压程序。如上文所述,由于可使用的具体的压缩/解压程序并不认为属于本发明的范围,因此进一步讨论这些程序没有必要。
一旦在第一通道之后使用某一压缩程序对块进行编码,则经编码的信息将不包含任何完整的冗余模式。在常规的系统中,压缩到此就因此完成,如果需要进一步压缩,则需要以不同的压缩程序重新启动压缩过程。但是,在本发明中,获得已经压缩的数据的部分冗余模式,然后作为模式存储在元数据中,如在此所讨论,然后在先前压缩的块的第二通道中重新压缩之前使用这些模式改变经压缩的序列,如下文进一步讨论。
在压缩程序420开始的过程中,跟踪压缩程序运行的时间并存储在缓冲管理器232的诊断存储器部分中。如果该程序连续执行所花的时间大于某一预定的时间期限,则设置报警,如步骤422所示,由此给C/E引擎指示使用与相同的压缩程序相关的压缩数据的不同表或者一起使用不同的压缩程序。如果在所需的时间期限内程序成功地执行但所实现的压缩超出预定的范围一定的百分比(比如大于预定的范围10%的5),则也可以设置报警。
压缩可能需要更长的时间或者不能同样多地压缩的原因有许多。例如,头部文件类型可能错误地标记以使与其相关的数据具有与所预期的特征不同的特征,或者在块内的数据可能具有单纯基于与预期的数据不同的数据的不同的特征。
如果确定需要另一压缩程序,如步骤422所示,则进行步骤424,基于在操作的块内的位的模式的评价改变压缩程序。因为通常不同的文件的类型具有不同的模式,这种评价基于具有与各种文件类型相关的不同的模式的先前的知识可以识别模式,这些模式可能存储在某些类型的表等中。
在步骤422的压缩程序的第一通道完成之后,在开始块中获得可能是中间的结果的结果,并将其存储在缓冲管理器232中。这些中间结果在附图4C中示出,附图4C提供了在附图4A中所示的位图B1的压缩的实例,如上文所讨论,如附图4B所示划分为四个块B1a,B1b,B1c和B1d。假设如上文所述通过接口控制器220将在这个文件中的所有的块都形成为单线程,则通过压缩程序在第一通道的结尾所得的输出为四个对应的压缩块B1ae,B1be,B1ce和B1de。
然而,如步骤420A所示,在这个第一通道的过程中,压缩程序将正在操作的块(比如在正讨论的实例中的四个块B1a,B1b,B1c和B1d)内发现的模式的拷贝存储在缓冲管理器存储器中。虽然模式的位的长度可能变化,但是可取的是使用在3和8位之间的位长,最可取的是6位,因为任何更小的长度的模式都不会提供任何进一步的压缩,而更大的位长度将会造成具有冗余或部分冗余的更小的模式。还应该注意的是,文件类型可用于确定存储的模式的类型。例如,对于未压缩的图像文件,在许多冗余可预期的情况下,所存储的模式的数量通常小于在从已经压缩的文件中存储模式时的情况,因为在已有的压缩的文件中的冗余模式已经最小。
在检测到模式的点上,将它存储在元数据文件(比如附图1B中所示)中,并更新模式内特征字段以反映每个模式的增加。在步骤420中,压缩程序会找到并基于它的相似性拷贝模式。模式是否类似是基于在该类型的文件中的模式特征、模式随机的程度和与先前已经操作的其它的块存储的其它模式的比较。
在应用上述标准时,因为在第一通道上可能存在多种不同的模式,其中某些模式通常是部分冗余。然后对随后的通道使用这种元数据,如下文所描述。
在这个通道的结尾,压缩程序执行许多操作。此外,如步骤425所示,与每个线程相关的元数据与从其中产生元数据的块相关。
此外,如步骤426所示,C/D引擎确定是否已经实现了需要实现的压缩。通过跟踪每个不同的线程的压缩并确定是否需要进一步的压缩执行这个确定过程。在这方面,由于不同的线程在不同的时间开始和结束,因此,可以理解的是,这是与每个线程的完成一同进行的过程。一旦实现了所要求的所需的全部压缩量,则可以完成为每个其它线程进行的压缩过程的通道,或者可以终止当前的通道,并使用完成的通道的结果,如步骤427所示。
如步骤428所示,如果确定压缩的块的压缩继续,则压缩程序浏览在给定的线程内的压缩的块以确定在编码的块内的相似性,然后在步骤430中重新排序块以使包含类似的模式的块彼此邻近。在步骤428中,确定是否存在相似性,压缩程序优选使用多个比较功能(加、减、乘、除、XOR、AND和其它的这种功能)以确定在元数据中时否已经存储了模式的部分重叠。在查找相同或类似的模式的过程中,可以使用GET等于、GET大于或等于或GET小于或等于的树遍历操作。
在这方面,由于存储在元数据中的每个模式呈树状结构,因此通过对应的数字(通常为二进制)可以识别所有的模式,这就使得容易使用各种树遍历操作遍历树状结构,因此可以识别具有部分重叠的模式并以比较功能操作。因此,如果在编码块中的一个模式是“0101”,则假设在压缩程序的第一通道之后不存在这种相同的模式,因为这种冗余可能已经被消除。但是,模式“0100”可能存在,显然这种模式与模式“0101”有一个位不同。因此,步骤428确定这些模式相关,而步骤430则通过指针指示模式“0100”与模式“0101”偏差多个位长度并通过模式“0101”减“1”来可替代地表示模式“0100”而允许重新对该模式进行排序。因此,然后改变编码流以反映在该模式中的这种部分重叠并消除它。此外,一旦对在流中所有的前述的压缩块执行这些操作,则该流、它的子集或超集再次输送给压缩程序以用于通过该压缩程序形成的随后的压缩通道,即使在再次压缩的流的块内的模式现在不同于从第一通道压缩中已经先前获得的模式,仍然能够实现进一步的压缩。
应该注意的是,在通道之间所使用的压缩操作的类型可以自适应地改变。更具体地说,与有代表性文件类型的模式相比,基于压缩块的模式实施比较操作的自适应确定,这种有代表性的文件类型模式也可以存储在系统的表中,如前文已经描述。
继续提供实例,可以确定块B1ae和B1ce具有相似性,并且块B1be和B1de具有相似性,因此如附图4D所示以该方式对块重新排序。
在确定和重新排序的步骤中,在第一通道中产生的每个线程从相应的压缩块中去除,相应的诊断信号(如上文所述)被发送给指示每个先前已经产生的线程已经终止的接口控制器。还应该注意的是,在第二或随后的压缩通道的这部分中所使用的元数据对应于为在先前通道的线程内的每个块产生的元数据。因此,在所提供的实例中,由于来自B1ae,B1be,B1ce和B1de的线程的元数据是来自相同的线程,因此在B1ae/B1ce线程和B1be/B1de线程上使用相同的元数据。但是,应该理解的是,如果从先前的两个不同的线程中组合块,则来自两个不同的线程的每个线程的元数据将组合并在这种操作中使用。但是这种后一实施方式给已有的复杂的系统增加另一层复杂性,因此在本发明中不是最优选的实施方式。
一旦重新排序,然后压缩引擎在步骤432中基于重新排序的数据的特征确定要实施多少新的线程,并将信号发送给识别每个新产生的线程的接口控制器。因此,在上文所讨论的实例中,由于确定块B1ae和B1ce具有相似性,并且块B1be和B1de具有相似性,因此压缩程序可以决定将这些块中的每个块实施为不同的线程。因此,这两个线程中的每个线程优选独立地操作以进一步作为不同的线程压缩。
对通过使用元数据并如上文所述重新排序已经进一步操纵的先前已压缩的数据的压缩操作继续进行,如前文在步骤420的讨论中所描述和下文所描述那样。但是,应该注意,如果因为还没有实现所需的压缩量而继续进行压缩,则在重复通道之后如果不进行进一步的压缩则如在步骤434中所示手工超越可以终止该过程。这种终止也会自动进行,比如如果在某些整数N个通道之后还没有实现所需的压缩则该过程终止。
在第二通道结束之后,如上文所述对进一步执行压缩的每个线程再次重复在第一通道之后发生的步骤,然后该过程继续重复直到完成它、确定完成所需的压缩不可能或者时间超时(与实现所需的压缩基本相同的压缩不可能)。
第三、第四和第五通道也可能,并且该元数据正与每个随后的通道部分地重叠,这种重叠连续地变小,从下文参考附图5A-5E的讨论中可以清楚看出。因此,在该过程的结尾,优选存储其余的元数据。
注意,在该状态下存储从一个压缩操作中获得的元数据(尤其是在已经形成了三个、四个或五个通道之后存在的元数据),然后将其用作在另一压缩操作中的元数据,即使使用完全不同的压缩系统,并且如在第一通道压缩操作过程中使用的信息包括在其中以用于另一压缩操作。由于存在不可用的元数据的缘故,这将提高这个另一压缩操作的速度,因为在这些通道之后存在的元数据中的模式指示以其它方式不易看到的更细小的冗余或者部分冗余。
在数据流的连续压缩程序的结尾,一系列的压缩块将产生,然后缓冲管理器232将其发送回接口控制器232。
在上文所述的过程中,如下文参考附图5A-5E更加详细地描述,在某些数量的通道(1个、2个、10个或更多)之后,该数据将被压缩到某一数量,然后根据本发明压进一步缩变得难以实现。因此,在这一点上,可以认为尽可能地压缩数据,然后它可以被传输、存储或根据需要以压缩的形式使用。但是,有时需要解压。根据本发明,如从附图5A-5E中可以清楚地看出,解压操作是一种交互操作,因为在解压过程中执行的操作与在压缩过程中执行的操作对称。因此,解压算法是压缩算法的反向过程,如上文所述地执行的其它的操作可以类似地调换。但是在压缩和解压操作之间的一个重要差别在于压缩操作很好地采用多个通道进行压缩,而解压操作总是在单通道中进行。这是因为压缩操作的每个通道使用操作编码数据的相同的压缩算法进行操作,如上文所述,从压缩数据中最终可以导出全部的原始数据流。相反,使用多个通道进行压缩的常规压缩技术要求多个通道进行解压,因为在形成另一通道时这种技术将返回并使用源数据而不是压缩的数据。
下文参考附图5A-5E描述使用简化的采样数据组的采样操作,这些附图示出了多个通道的压缩以及解压的能力。应该注意,在本实例中,大写字母符号用作数据元素组,并且“A”的值比“B”的值小1。引入这种简化以便提供更加简洁的解释,但是决不应该解释为对本发明能够操作和压缩和解压的数据的类型的限制。此外,认为在基于元数据描述树遍历和比较功能操作时所示的数据已经通过压缩引擎压缩,甚至可以清楚地看出,例如压缩引擎将不会使模式AAA处于未压缩的形式。
如图所示,附图5A所示为单个文件的数字数据的实例,该单个文件以参考附图1B先前已经描述的信息和来自不同的压缩事件的可能的实际的元数据先前已经确定了元数据的标记,这些数字数据在第一通道压缩中可使用,如上文所描述。但是,对于随后的实例,假设在第一通道之前在元数据标记部分中不存在元数据模式。
每个编码块A-E可以本身再细分为块,比如附图5A的“在0通道之后”所示,块A细分为A1、A2和A3,最初通过如上文所述的接口控制器230。如图所示,块A1-E3已经分组在单个线程中。在通过压缩引擎232已经完成了第一通道压缩和消除了与第一通道压缩相关的线程之后,然后在附图5A的“在1通道之后”中示出了文件结构。此后,如上文所述在第二通道开始之前操作编码数据。如图所示,通过相同的标记识别块A1,A2,B1,B2…,但是应该理解的是它们已经进一步压缩。此外,通过组合先前的块A3和B1已经形成了块B1,如在下面设置的并与块B1相关的椭圆中的A3B1所示。
附图5B所示为在每个通道中与压缩相关的元数据。如中文所指出,由于在第一通道中假设不存在元数据模式,因此没有示出在第一通道之前的元数据模式。在“在1通道之后”的元数据中,所示为元数据模式AAA,BBB,CCC…。注意,在本实例中的模式长度为3,不是上文所指出的更大的某些数字。这些元数据对应于在附图5D中所示的在0通道之后的数据的块A的第一子块A1中发现的模式。由于每个模式AAA,BBB和CCC彼此不类似,因此每个都单独识别为不同的元数据模式。
现在参考附图5D,所示为在第一通道之后已经操作之后的第一和第二编码块A和B,并且其具有GET=遍历功能和比较功能,第一和第二编码数据结构如图所示。注意,在这些实例中为了简洁起见,因为仅使用相等的比较功能,并且这种比较功能没有通过标示符示出,但在实际中,所使用的比较功能必需存储在与操作的模式相关的其它的数据内。如图所示,只剩下编码数据子块A1,因为没有一个模式等效于任何其它模式。但是,在子块A2中,AAA模式以作为块标示符的不同的标示符、块计数器、操作和数据偏差表示为(a207),如附图5C所示。因此,在本实例中,“a”表示数据来自块A,“2”表示数据来自第二子块,“0”表示Get=遍历操作,以及“7”表示模式的第一字符的位位置。为说明其相似性下文以相同的命名原则示出了其它的模型。
附图5E所示为在使用GET=到树遍历操作的在1通道之后和其中使用GET>=树遍历操作的第二通道之后之间的过渡中的数据。如附图所示,由于BBB与AAA相差1,因此BBB模式成为(al14),“a”表示数据来自块A,“1”表示数据来自第一子块,“l”表示Get>=到遍历操作,以及“4”表示模式的第四字符的位位置。为说明其相似性下文以相同的命名原则示出了其它的模型。
再次参考附图5B,还要指出的是,在通道2之后的元数据已经改变,因为在这个通道之后其余可得的元数据模式是AAA、GGG、MMM、HKK、HUU、KHK和XYZ。但是还应该注意的是在再次发现它的这个意义上讲AAA不是元数据,但是由于它是其它模式涉及的模式,因此保留它。
上文所描述的压缩/解压系统的具体应用有许多。为理解本发明的范围,提供几种实例。
1.数字电影的压缩/解压(对压缩时间不敏感,但对解压时间非常敏感)。
2.在磁盘驱动器上的各种文件的压缩/解压(对压缩量非常敏感,对压缩和解压时间敏感)。
3.对在因特网上发布的实时视频文件的压缩/解压(对压缩时间非常敏感,对解压时间非常敏感)。
虽然参考本发明的特定的实施例已经描述了本发明,但是在前述公开的内容中可以进行各种修改、改变和替代。例如,尽管为了清楚起见根据作为不同的部件(优选方案)的接口控制器和C/D引擎已经描述了本发明,但是通过单个处理器或者即使更多的处理器执行与在此所描述的操作和功能等效的操作和功能的方案也在本发明的范围内。因此应该理解的是在不使用相应的其它的特征的情况下可以应用本发明的某些特征或者在不脱离如在附加的权利要求中阐述的本发明的精神和范围的前提下可以作出其它的修改。
权利要求
1.一种操作数字数据的方法,其中包括如下的步骤将数字数据划分为多个块;形成多个第一线程,以使每个第一线程包括多个块中的至少一个;和操作多个第一线程中的每一个以获得多个经压缩的第一线程,每个经压缩的第一线程包括数字数据的至少一个压缩块。
2.根据权利要求1所述的方法,其中操作每个第一线程的步骤执行无损耗压缩。
3.根据权利要求1所述的方法,其中操作每个第一线程的步骤独立地操作多个第一线程中的每个线程。
4.根据权利要求1所述的方法,其中第一线程中的至少某些线程独立地并行操作。
5.根据权利要求4所述的方法,其中在操作的步骤的过程中至少使用两个不同的压缩算法以独立地操作不同的第一线程。
6.根据权利要求1所述的方法,进一步包括将多个压缩的第一线程组合起来以数字地获得压缩数据的步骤。
7.根据权利要求1所述的方法,其中形成多个第一线程的步骤包括使多个数字数据块中的每个块与多个第一线程中的一个线程关联以使在多个第一线程的每个线程内的块共享某些公共的压缩特征的步骤。
8.根据权利要求7所述的方法,进一步包括预测每个块的估计的压缩时间和估计的压缩量的步骤。
9.根据权利要求8所述的方法,其中形成多个第一线程的步骤也使用估计的压缩时间和估计的压缩量以确定哪个块应该与相同的第一线程关联。
10.根据权利要求8所述的方法,其中基于所选择的压缩算法作出估计的压缩时间和估计的压缩量,以及其中预测步骤包括确定基于可选择的压缩算法中的一个的所提供的估计的完成时间是否允许可在数字数据的所需的压缩时间内现实所需的压缩量的步骤。
11.根据权利要求1所述的方法,其中形成多个第一线程中的每个线程的步骤使用多个块中的每个块的数据类型以使第一线程的每个线程包含具有类似的数据类型的块。
12.根据权利要求11所述的方法,其中根据与每个块相关的头部信息确定数据类型。
13.根据权利要求11所述的方法,其中通过将块数据与各种预定的数据模型进行比较确定数据类型。
14.根据权利要求1所述的方法,进一步包括预测每个块的估计的压缩时间和估计的压缩量的步骤。
15.根据权利要求14所述的方法,其中形成多个第一线程的步骤使用估计的压缩时间和估计的压缩量以确定哪个块应该与相同的第一线程关联。
16.根据权利要求1所述的方法,其中划分数据的步骤包括考虑每个块的数据类型确定多个块中的每个块的大小的步骤。
17.根据权利要求1所述的方法,进一步包括如下的步骤操作每个压缩的第一线程以消除每个压缩的第一线程并保留压缩的第一块;形成多个第二线程,以使每个第二线程包括多个压缩的第一块中的至少一个;和操作多个第二线程中的每一个以获得多个压缩的第二线程,每个压缩的第二线程包括数字数据的至少一个压缩的第二块。
18.根据权利要求17所述的方法,其中操作每个第二线程的步骤独立地操作多个第二线程中的每个线程。
19.根据权利要求17所述的方法,其中第二线程中的至少某些线程独立地并行操作。
20.根据权利要求17所述的方法,其中,在操作多个第二线程中每个线程的步骤的过程中,用于操作每个块的相同的压缩算法也用于操作对应的压缩块。
21.根据权利要求17所述的方法,进一步包括组合多个压缩第二线程以数字地获得压缩的数据的步骤。
22.根据权利要求17所述的方法,其中形成多个第二线程的步骤包括使多个压缩的第一块的每个块与多个第二线程中的一个线程关联以使在多个第二线程的每个线程内的压缩的第一块共享某些公共的压缩特征的步骤。
23.根据权利要求22所述的方法,其中每个第二线程包含从相同的第一线程中形成的压缩的第一块。
24.根据权利要求23所述的方法,其中第二线程的数量大于第一线程的数量。
25.根据权利要求22所述的方法,其中在一个第一线程内的压缩的第一块用于形成两个不同的第二线程。
26.根据权利要求17所述的方法,其中操作多个第一线程中的每个线程的步骤也导致获得多个第一元数据组,每个第一元数据组包括压缩的第一块的部分,在这个第一块的部分中确定可能具有冗余。
27.根据权利要求26所述的方法,其中对于每个线程操作每个第一线程的步骤保持在对应于第一元数据模式的初始压缩的第一块中的数据模式,对于每个第一线程组合每个不同的第一元数据模式以得到该第一线程的第一元数据组。
28.根据权利要求27所述的方法,其中在随后的步骤中保持初始压缩的第一块中的数据模型。
29.根据权利要求17所述的方法,其中每个第一线程具有关联的第一元数据组。
30.根据权利要求26所述的方法,其中形成多个第二线程的步骤包括如下的步骤确定哪个压缩的第一块应该与相同的第二线程关联;和使用第一元数据组以消除在与至少某些第二线程关联的某些压缩的第一块中的冗余。
31.根据权利要求30所述的方法,其中操作多个第二线程中的每个线程的步骤也获得了多个第二元数据组,每个第二元数据组包括压缩的第二块的部分,在这个第二块的部分中确定可能具有冗余。
32.根据权利要求31所述的方法,其中第二元数据组是第一元数据组的子组。
33.根据权利要求26所述的方法,其中对于每个线程操作每个第一线程的步骤保持在对应于第一元数据模式的初始压缩的第一块中的数据模式,对于每个第一线程组合每个不同的第一元数据模式以得到该第一线程的第一元数据组;使用第一元数据组以消除在与至少某些第二线程关联的某些压缩的第一块中的冗余的步骤保持初始的压缩第一块中的数据模式并消除在随后的压缩第一块中的数据模式。
34.根据权利要求33所述的方法,其中,在使用第一元数据组消除在与至少某些第二线程关联的某些压缩第一块中的冗余的步骤的过程中,以指针和操作指示器替换在随后的压缩的第一块中的数据模式,由此在每个第二线程中获得多个压缩的且减小的第一块。
35.根据权利要求34所述的方法,其中在操作多个第二线程的每个线程的步骤中,用于操作每个块的相同的压缩算法也用于操作对应的压缩的且减小的第一块,由此获得压缩的第二块。
36.根据权利要求35所述的方法,其中,操作指示器识别用于消除在第一压缩的数据块中的冗余的操作,该操作是相等比较操作、大于或相等比较和小于或相等比较中的一种。
37.根据权利要求36所述的方法,其中,在操作多个第二线程中的每个线程的步骤中,自适应地确定所选择的比较操作。
38.根据权利要求37所述的方法,其中与有代表性的文件类型的模式相比基于压缩的块的模式进行自适应确定。
39.一种操作数字数据的方法,包括如下的步骤使用预定的压缩算法的多通道压缩数字数据以获得压缩的数字数据;和使用对应的解压算法的单通道对压缩的数字数据进行解压以获得数字数据。
40.一种操作数字数据的设备,包括如下的步骤使用预定的压缩算法的多通道压缩数字数据以获得压缩的数字数据的装置;和使用对应的解压算法的单通道对压缩的数字数据进行解压以获得数字数据的装置。
41.根据权利要求40所述的设备,其中压缩的装置包括接口控制器,和压缩引擎。
42.根据权利要求41所述的设备,其中搜索引擎包括单个中央处理单元。
43.根据权利要求41所述的设备,其中搜索引擎包括多个中央处理单元。
44.根据权利要求43所述的设备,其中多个中央处理单元中的每个处理单元操作不同的线程。
45.根据权利要求44所述的设备,其中多个中央处理单元包括多个数字信号处理器。
46.一种允许多个压缩系统更有效地操作的方法,包括如下的步骤在第一压缩系统中获得表示在从第一数字数据的压缩中获得的第一数字数据中的模式的元数据;和将元数据发布给至少一个第二压缩系统以使第二压缩系统可以使用元数据以压缩第二压缩系统需要压缩的第二数字数据。
全文摘要
本发明描述了一种操作数字数据的方法和设备,其中数字数据划分为多个块,形成多个线程,以使每个线程包括多个块中的至少一个,此后操作每个线程以获得多个压缩的线程,每个压缩的线程包括数字数据的至少一个压缩块。在这种方法中,使用压缩引擎操作线程以使压缩算法重复地循环地压缩在先前的通道中通过压缩引擎已经压缩的数据。在每个压缩通道之间,然后使用在先前的通道中建立的元数据操作压缩的数据以消除在先前的通道中压缩的数据中存在的冗余。因此,本发明使用预定压缩算法的多通道压缩数字数据以获得压缩的数字数据,随后使用对应的解压的算法的单通道压缩经压缩的数字数据以便在没有损失的过程中获得数字数据。
文档编号G06T9/00GK1539202SQ01822196
公开日2004年10月20日 申请日期2001年11月2日 优先权日2000年11月29日
发明者丹尼新·L·蒙哥马利, 丹尼新 L 蒙哥马利 申请人:E特里佩德技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1