数据编码装置和数据解码装置及其方法 本发明涉及数据编码装置、数据解码装置、数据编码方法和数据解码方法,详细地说来涉及进行音响数据、图像数据等等的压缩和扩展的数据编码装置、数据解码装置、数据编码方法和数据解码方法。
在游戏机之类的所谓多媒体的领域中,为了以良好的效率把音响数据、图像数据等等记录于存储器装置、CD-ROM中去,大多应用进行音响数据等等的压缩的数据编码。作为这种数据编码方法,人们早就知道ΔPCM、DPCM、ADPCM等等的编码方法。这些编码方法,基本上说是计算数据的差分的方法,是可以用较简易的算法进行压缩和扩展的方法。
近些年来,开始采用JPEG(Joint PhoFographic Coding Expert Group:联合照相编码专家组)、MPEG(Moving Picture Expert Group:电影专家组)等等的数据编码方法。.JPEG、MPEG等的数据编码方法是由本身就是正交函数变换的DCT(离散余弦变换)处理、量子比处理组成的、可以以较好的效率进行压缩和扩展。
此外,作为其他的数据编码方法,有已公开于特开昭58-171094号公报、特开昭59-35040号公报中的方法。公开于特开昭58-171094号公报中的数据编码方法,是在展开为高次展开式之后,考虑到时间轴上的展开式的相关来进行数据压缩的方法。而公开于特开昭59-35040号公报中地数据编码方法则是一种借助于用包络线信息和波形步距这两类的数据表现波形数据的办法,进行数据压缩的方法。
但是,在上述的各种数据编码方法中存在着以下的问题。
ΔPCM、DPCM、ADPCM的数据编码方法虽然可以用比较简易的算法对原数据进行压缩,但存在着伴随着压缩扩展所产生的音质劣化大的问题,比如,在原数据的变化量大这样的情况下,原数据的差分有时候会超过预先决定的数据长度。其结果在解码之后的数据与原数据之间将产生误差,该误差将变为量子化噪声而成为音质劣化画质劣比的原因。
JPEG、MPEG等的数据编码方法具有可以实现比较高的压缩率的优点。但是,JPEG、MPEG等的数据编码方法,由于需要DET等的复杂的算法,故使处理变得复杂且需要长的处理时间。
此外,公开于特开昭58-171094号公报中的编码方法必须把原数据计算成高次展开式、使编码和解码的算法变得很复杂。公开于特开昭59-35040号公报中的编码方法,由于仅仅用包络线和步距来表现原数据,故解码之后的数据与原数据之间的误差易于变大。
本发明是鉴于上述的课题而提出来的,本发明的目的是在数据编码装置、数据解码装置、数据编码方法和数据解码方法中,以简易的算法进行编码和解码误差少的压缩扩展。
权利要求1所记载的发明是一种数据编码装置,它具有输入单元,用于输入把多个由多位(bit)构成的原数据排列起来的原数据的串;原数据分割单元,用于把从最小位向最大位进行进位借位的原数据分割成含有最大位的高位数据和含有最小位的低位数据;差分计算单元,用于计算相邻原数据中的各自的高位数据之间的差分数据;输出单元,用于输出把上述低位数据和上述差分数据排列起来的编码数据串。
权利要求2所记载的发明是一种数据编码装置。这种装置具有:输入单元,用于输入把多个由多位构成的原数排列起来的原数据串;原数据分割单元,用于把从最小位向最大位进行进位借位的原数据分割成包含最大位在内的高位数据和包含最小位在内的低位数据;差分计算单元,用于把相邻原数据中的各自的高位数据之间的差分数据;数据数目计算单元,用于计算把差分数据连续地收存于指定范围内的原数据的个数,且输出个数数据;输出单元,用于输出把上述个数数据,上述差分数据和上述低位数据排列起来的编码数据串。
权利要求3所记载的发明是权利要求2所记载的数据编码装置,它具备编码数据结合单元,用于把上述低位数据里边与上述差分数据的位数相当的低位数据割舍的同时把上述差分数据结合到该低位数据上去。
权利要求4所记载的发明是权利要求2所记载的数据组码装置,其中上述指定范围是“0”,且差分数据的位数为“0”。
权利要求5所记载的发明是权利要求2所记载的数据编码装置,其中具备编码决定单元,用于在构成编码数据串的编剧码数据的个数变得比构成原数据串的原数据个数少的情况下,从上述输出单元输出编码数据串。
权利要求6所记载的发明是一种数据解码装置、它具有:输入单元,用于输入权利要求1所记载的编码数据串;编码数据分割单元,用于通过采用分割编码数据串的办法,抽出差分数据和低位数据;差分解码单元,用于依据差分数据生成高位数据;解码数据结合单元,用于采用把高位数据与低位数据结合起来的办法生成解码数据;输出单元,用于输出把多个解码数据排列起来的解码数据串。
权利要求7所记载的发明是一种数据解码装置,它具有:输入单元,用于输入权利要求2所记载的编码数据串;编码数据分割单元,用于通过采用分割编码数据串的办法抽出差分数据、低位数据和个数数据;差分解码单元,用于依据差分数据生成高位数据;解码数据结合单元,用于通过使由个数数据所表示的个数分额、高位数据和低位数据结合起来的办法生成解码数据;输出单元,用于输出把多个解码数据排列起来的解码数据串。
权利要求8所记载的发明是一种数据编码方法,它先把构成原数据串的原数据分割成高位数据和低位数据,然后算出相邻原数据中的各自的高位数据之间的差分数据、算出把差分数据连续地收存于指定的范围中去的原数据的个数,并把计算结果作为个数数据输出,再生成把上述个数数据、上述差分数据和上述低位数据排列起来的编码数据串。
权利要求9所记载的发明是权利要求8所记载的数据编码方法,其中把上述低位数据中的与上述差分数据的位数相当的低位割舍的同时,把上述差分数据与该低位数据结合起来。
权利要求10所述的发明是一种数据编码方法,它把由多位组成的原数据进行多种排列的原数据串依照以下的编码模式(a)~(d)通过采用(a)~(d)进行编码的方法来生成编码数据串。
(a)在与将成为基准的原数据之差收存于指定的范围中的其他的原数据以指定个数以上连续地排列好了的情况下,生成把上述将成为基准的原数据和表示上述连续在的其他原数据的个数的个数数据排列起来的编码数据串。
(b)在不进行编码模式(a)的编码处理时,在相邻的原数据彼此之间的差分数据收纳于指定范围中,且把这样的原数据连续排列指定个数以上的情况下,生成把上述差分数据和表示上述原数据的个数的个数数据排列起来的编码数据串。
(c)在不进行编码模式(a)和(b)的编码的处理时,在表示相邻的原数据的高位数据之间差的差分数据收纳于指定范围之内,且在这样的原数据连续排列超过规定个数的情况下,生成把表示上述原数据个数的个数数据、上述原数据的低位数据和上述差分数据排列起来的编码数据串。
(d)在不进行编码模式(a)、(b)和(c)的编码处理时,生成把原数据排列起来的编码数据串。
权利要求11所记载的发明是权利要求10所记载的数据编码方法,其中把表示已进行了编码处理的编码模式(a)~(d)的任一模式的数据排列于上述编码数据串中。
权利要求12所记载的发明是一种数据解码方法,它采用分割在权利要求8或权利要求9的任一项权利要求中所记载的编码数据串的方法,抽出差分数据和低位数据,并依据差分数据生成高位数据,使高位数据与低位数据结合,以此来生成解码数据,并输出把已生成的多个解码数据排列起来的解码数据串。
权利要求13所记载的发明是一种数据解码方法,它从权利要求11所记载的编码数据串中抽出表示编码模式(a)~(d)的任一种模式的数据,并根据编码模式进行下述的解码处理。
(1)在被抽出的数据是编码模式(a)的情况下,先从编码数据串中抽出将成为基准的原数据和表示原数据个数的个数数据,并输出把由个数据数据所表示的个数据的基准数据排列起来的解码数据串。
(2)在被抽出的数据是编码模式(b)的情况下,先从编码数据串中抽出差分数据和表示原数据个数的个数数据,并依据差分数据生成解码数据,接着输出把用个数数据所表示的个数的解码数据排列起来的解码数据串。
(3)在被抽出的数据是编码模式(c)的情况下,先从编码数据串中抽出差分数据、低位数据和表示原数据个数的个数数据,以此差分数据为依据生成高位数据,并借助于使高位数据与低位数据进行结合的办法生成解码数据,而输出把用个数数据所表示个数的解码数据排列起来的解码数据串。
(4)在被抽出的数据是编码模式(d)的情况下,先从编码数据串中抽出原数据,然后输出把被抽出的原数据排列起来的解码数据串。
在权利要求1所述的发明中,输入单元输入把原数据排列起来的原数据串。分割单元把由多位组成的原数据分割为高位数据和低位数据。差分单元计算相邻原数据中的各自的高位数据之间的差分数据。而输出单元输出把低位数据和差分数据进行过排列的编码数据串。
若采用本发明,则通过采用仅把原数据中变化比较小的高位数据的差分数据进行编码的办法,与通常的差分PCM相比可以减少差分数据的数据量。就是说,在TV游戏机之类的多媒体中所使用的音响数据、图像数据、一般说高位数据的变化量比较小。因此,可以压低高位数据的差分数据的数据量、可以实现高压缩的编码和解码。另外,在本发明中,由于计算变化比较少的高位数据的差分,故可以降低因差分数据超过事先规定的数据长度而产生的编码和解码误差。
另外,由于只需仅仅计算高位数据的差分就行,故可以简化编码解码算法。因此,比如说在家用TV游戏机等等之中,可以降低装置的造价。还有,由于可用简易的算法实现编码和解码,故得以进行高速的编码和解码。
在权利要求2所述的发明中,输入单元输入把多个原数据进行排列后的原数据串。分割单元把由多位组成的原数据分割成高位数据和低位数据。差分计算单元计算相邻的原数据中的高位数据之间的差分数据。而数据个数计算单元计算差分数据连续收纳于指定范围内的原数据的个数。输出单元输出把个数数据、差分数据和低位数据进行排列后的编码数据串。
若采用本发明,通过采用仅仅用变化比较少的上数据的差分数据进行编码的方法,就可以降低编码误差,同时还可以进行高压缩的编码。此外。由于仅仅算出高位数据的差分就行,故可简化编码、解码算法,可进行高速的编码和解码。
在权利要求3所述的发明中,编码数据结合单元在舍掉低位数据中与差分数据的位数相当的低位位的同时,使差分数据与该低位数据结合。这样,就可以削减差分数据与低位数据合起来之后的位数,就可以实现高压缩的编码。
在权利要求4所述的发明中,数据个数计算单元计算指定范围为“0”,即其值具有相同高位数据的原数据的个数。内于高位数据为相同的值,故差分数据的位数据变为“0”。这样一来,无需削减低位数据的指定位数就可以把低位数据不加变动地排列到编码数据串中去。因而,若采用本发明,可以实现忠实行原数据的编码和解码。
在权利要求5所述的发明中,输出单元在构成编码数据串的编码数据的个数比构成原数据串的原数据个数减少了的情况下,输出编码数据串。这样,可以避免因编码所产生的数据数的增大。
在权利要求6所述的发明中,通过采用使输入单元输入权利要求1所述的编码数据串、使编码数据分割单元分割编码数据串的方法,抽出差分数据和低位数据。并通过采用使差分解码单元依据差分数据生成高位数据,使解码数据结合单元把高位数据与低位数据结合起来的办法生成解码数据。若采用本发明,由于可以用简易的算法实现解码处理,故可以降低装置造价的同时,还可以高速地进行解码。
在权利要求7所述的发明中,通过采用使输入单元输入权利要求2所述的编码数据串、编码数据分割单元分割编剧码数据串的办法,抽出差分数据、低位数据和个数数据。通过采用使差分解码单元依据差分数据生成高位数据并使解码数据结合单元按照使由个数数据所表示的个数分额、高位数据与低位数据进行结合的办法生成解码数据。因此,若采用本发明,也可以降低装置价格,也可实现高速解码。在权利要求8所述的发明中,首先把构成原数据串的原数据分割为高位数据和低位数据,以计算相邻的原数据的高位数据之间的差分数据。接着,计算把差分数据连续收纳于指定范围内的原数据的个数,以生成把个数数据,差分数据和低位数据进行排列后的编码数据串。若采用本发明,借助于仅用变化比较少的高位数据的差分数据进行编码,可以压低差分数据的数据量,此外,由于只需计算高位数据的差分,故可以简化编码解码算法,可进行高速的编码和解码。
在权利要求9所述的发明中,在低位数据中割舍与差分数据的位数相当的低位的同时,使上述差分数据结合到该低位数据中去。这样,就可以削减把差分数据与低位数据合在一起后的位数,可实现高压缩的编码。
在权利要求10所述的发明中,通过采用将由多位组成的原数据进行多种排列后的原数据串,按照以下的编码模式(a)~(d)进行编码的办法,生成编码数据串。
(a)在与将成为基准的原数据之差收纳于指定范围内的其他的原数据连续排列超过指定个数的情况下,生成把上述将成为基准的原数据和表示上述连续的其他的原数据的个数的个数数据进行排列后的编码数据串。若采用这一编码模式,比如,可以以高压缩率把无声状态的原数据编码。
(b)在不进行编码模式(a)的编码处理的情况下,在把相邻的原数据彼此之间的差分数据收纳于指定的范围内,且在这样的数据连续排列超过规定个数的情况下,生成把上述差分数据和表示上述原数据个数的个数数据进行排列后编码数据串。
(c)在不进行编码模式(a)和(b)的编码处理的情况下,在表示相邻的原数据的高位数据之间差的差分数据收纳于指定的范围内,且在这样的原数据连续排列超过规定个数的情况下,生成把表示上述原数据的个数的个数数据、上述原数据的低位数据和上述差分数据进行排列后的编码数据串。
(d)在不进行编码模式(a)、(b)、(c)的编码处理的情况下,生成把原数据排列后的编码数据串。即,把原数据不加改动地作为编码数据输出。
若采用本发明,则可以相应于原数据进行最佳编码处理,可把编码误差抑制到最小限度的同时实现高压缩率的编码。
在权利要求11所术的发明中,把表示已进行过编码处理的编码模式(a)和(d)的任何一种模式的数据排列于上述编码数据串中。这样一来,在解码时,就可进行与编码模式相对应的解码处理。
在权利要求12所述的发明中,借助于分割权利要求8或权利要求9的任何一项权利要求所述的编码数据串,抽出差分数据和低位数据。接下来,依据差分数据生成高位数据,并通过采用使高位数据与低位数据进行结合的办法生成解码数据。其次,输出把所生成的多个解码数据进行排列后的解码数据串。因此,若采用本发明,由于只要依据差分数据仅仅对原数据中的高位数据进行解码即可,故可以简化解码算法。
在权利要求13所述的发明中,先从权利要求11所述的编码数据串中,抽出表示编码模式(a)和(b)的任何一种模式的数据,并按照编码模式,进行以下解码处理。
(1)在抽出来的数据为编码模式(a)的情况下,从编码数据串中抽出将成为基准的原数据和表示原数据个数的个数数据,输出把由个数数据所表示的个数的基准数据进行排列后的编码数据串。这样一来,就可以对比如说表示无声状态的原数据高速地进行解码。
(2)在被抽出来的数据是编码模式(b)的情况下,先从编码数据串中抽出差分数据和表示原数据个数的个数数据,并依据差分数据生成解码数据,输出把由用个数数据所表示的个数的解码数据进行排列后的解码数据串。
(3)在被抽出来的数据是编码模式(c)的情况下,先从编码数据串中抽出差分数据,低位数据和表示原数据个数的个数数据,并依据差分数据生成高位数据,借助于使高位数据和低位数据进行结合生成解码数据,并输出把由个数数据所表示的个数的解码数据进行排列后的解码数据串。
(4)在被抽出的数据是编码模式(d)情况下,从编码数据串中抽出原数据,并输出把已抽出的原数据进行排列后的解码数据串。
若采用本发明,则可以把相应于原数据而编码的编码数据串正确地进行解码。另外,由于可以把各自的解码处理用简易的算法来执行,故使高速解码处理成为可能。
下面对附图进行简单的说明。
图1是本发明的第1实施例所涉及的数据编码装置、数据解码装置的示意图。
图2是本发明的第1实施例所涉及的数据编码装置、数据解码装置的功能框图。
图3是示出本发明的第1实施例所涉及的原数据串、编码数据串、解码数据串的一个例子。
图4是用于说明本发明的第1实施例所涉及的编码数据的格式的图。
图5是用于说明本发明的第1实施例所涉及的编码数据的格式的图。
图6是表示本发明的第1实施例所涉及的数据编码方法的流程图。
图7是表示本发明的第1实施例所涉及的数据解码方法的流程图。
图8是表示本发明的第1实施例所涉及的解码处理的细节的流程图。
图9是表示出了本发明的第2实施例所涉及的编码数据串的一个例子的图。
图10是表示本发明的第2实施例所涉及的编码模式的图。
图11是表示出本发明的第2实施例所涉及的第1~第4编码模式,第5第6编码模式的编码格式的图。
图12是表示出了本发明的第2实施例所涉及的第7编码模式、第8编码模式的编码格式的图。
图13是表明本发明的第2实施例所涉及的编码方法的流程图。
以下,参照附图说明本发明的一个实施例。
第1实施例
图1是本发明的第1实施例所涉及的数据编码装置、数据解码装置的示意图。数据编码装置1由工作站等构成,具有把用数字数据表示的原数据串(音响数据、图像数据等)进行编码的功能。数据编码装置1之构成是,把已被编码的编码数据串和应用程序一起写入到ROM之中,再把该ROM收纳于ROM盒卡(Cassette)。TV游戏机等数据的解码装置2具有安装ROM盒卡的插座,把从ROM盒卡读出来的编码数据串进行解码、生成解码数据串。本身即是数字数据的解码数据串在用数据解码装置2变换成模拟音响信号之后从扬声器输出。
图2是数据编码装置1、数据解码装置2的功能框图。数据编码装置1被构成为具有原数据分割单元1a,差分计算单元1b,数据个数计算单元1c,编码数据结合单元1d和编码决定单元1e。原数据分割单元1a中,之构成是输入由多个原数据组成的原数据串(位流)。原数据串是把模拟音响信号用8位(bit)进行直线量子化后的数字数据。另外,作为原数据,也可以不用音响信号而代之以应用映像数据、应用程序等等。
原数据分割单元1a是把8位的原数据分割成高位4位的高位数和低位4位的低位数据的分割单元。差分计算单元1b具有把相邻的原数据中的高位数据依此之间的差值计算出来的功能。差分数据由表示高位数据差值的计数标志和表示差值符号的符号标志构成。比如假定第1字节的高位数据为“Fh”,第2字节的高位数据为“Eh”。“Eh”和“Fh”的差用10进制表示法可表示为“-1”。当用2进制来表示该“-1”时,计数标志将变成“1”,符号标志将变成“1”。而在差分数据用10进制表示法表示为“1”的情况下,计数标志变为“1”、符号标志则变为“0”。此外,取决于后边要讲的编码模式,有时候也不使用符号标志或者计数标志。
数据计算单元1c具备在连续的高位数据之内计算出表示处于指定范围(±1、+1、-1或0)中的上述数据的个数的个数数据的功能。比如说在原数据串,如图3(A)所示,把相邻的7个高位数据收纳于±1的范围之内的情况下,个数数据将变成“7h”。而究竞要计算±1、+1、-1、0中的哪一个范围的高位数据的个数,则要由后边要讲的编码模式决定。
编码数据结合单元1d具备使低位数据和差分数据进行结合的同时,如图3(B)和图4所示,将个数数据等依照预先确定的格式输出的功能。
编码决定单元1e是依照预先确定好的编码模式控制原数据分割单元1a、差分计算单元1b、数据计算单元1c、编码数据结合单元1d的单元。编码模式有第1~第3这3种,用户借助于键盘操作作可以任意进行变更。
数据解码装置2之构成是具有编码数据分割单元2a、差分解码单元2b、解码数据结合单元2c和解码决定单元2d。编码数据分割单元2a是从输入进来的编码数据串中分离差分数据、个数数据和低位数据的单元。差分解码单元2b具有依据差分数据(符号标志、计数标志)对高位数据进行解码的功能,解码数据结合单元2c具有把已解码的高位数据和低位数据进行结合的功能。
例如,编码数据分割单元2a,从示于图3(B)的第3个字节的高位数据中的高位2位中抽出解码后的低位数据“4h”,从同一第3个字节的高位数据中的低位2位中抽出差分数据“00”。接着,差分解码单元2b、依据从同图(B)的第1个字节的高位数据抽出的“Fh”和从第3个字节的高位数据抽出的差分数据“00”算出解码数据的第2个字节的高位数据“Fh”(同图(c))。以下,同样地进行解码数据的高位数据、低位数据的解码。解码之后的数据被构成为作为解码数据,从数据解码数据结合单元2c输出。
此外,解码决定单元2d依照由编码决定手1e决定的编码模式,指定的解码方法控制编码数据分割单元2a、差分解码单元2b、解码数据结合单元2c。就是说,编码数据分割单元2a、差分解码单元2b和解码数据结合单元2c根据编码模式进行解码处理。
在此,参照图3和图4说明本实施例所涉及的编码格式。图3(A)表示原数据串、同图(B)表示编码数据串,而同图的(C)表示解码数据串。此外,图4表示编码数据串的第3字节以后的编码数据。在示于图3的(B)的编码数据串中,第1个字节的高位4位的数据“FH”表示原数据串(同图的(A))的第1个字节的高位数据。编码数据(同图的(B))的第1个字节的低位4位的数据“1h”是用于表示编码数据串的头一个字节的数据。就是说,解码装置2借助于检测“1h”的低位数据,就可以执行编码数据串的解码处理。
编码数据串中(同图的(B))的第2字节的数据表示个数数据。例如,“O7h”这一个数数据表示7个原数据进行了编码。另外,从个数数据可以用8位来表示这一情况可知,在本实施例中,一次可对256个的原数据进行编码。但,当原数据串具有超过256个原数据的情况下,用多次的编码对超过256个的原数据编码是可能的。编码数据串的第3字节以后的数据由原数据的低位数据和差分数据构成。
第3个字节以后的编码数据的细节示于图4。在第3个字节以后的编码数据中,高位数据和低位数据的各自的高位2位的数据表示原数据的低位数据中的高位2位的数据。例如,在第1个字节的原数据的低位数据为“7h”(在2进制表示法中为0111)的情况下,通过割舍“0111”的低位2位,低位数据的高位2位就变成为“01”。
在第3个字节以后的编码数据之中,高位数据和低位数据的各自的低位2位表示相邻原数据的高位数据之间的差分数据。例如,第1字节的原数据的高位数据“Fh”和第2个字节的原数据的高位数据“Fh”之间的差分数据将变为“00”(2进表示法)。即差分数据之中的计数标志和符号标志同时变成“0”。通过把该差分数据“00”与上述的低位数据的高位2位“01”结合,可以得到“0100”(2进制表示法)的数据。另外,若把该数据用16进制表示则变成为“04h”(图3C(B)中的第3字节的高位数据)。同样,通过把原数据的第2字节、、第3字节的高位数据的差分数据结合到原数据的第2字节的低位数据“7h”(图3(A))中的高位2位上。就可以求得第3个字节的编码数据的低位数据“4h”。
还有,示于图3(B)和图4的编码数据串是用第1编码模式进行了编码的数据串。第1编码模式是把高位数据之间的差值处于±1的范围的原数据进行编码的模式。在选择第1编码模式时,差分数据由表示差值的计数标志和表示差值符号的符号标志共计2位构成。在这种情况下,在第3字节以后的编码数据中,必须用把差分数据和低位数据合并起来用4位来表示。因此,必须把原数据串中的4位的低位数据的低位2位割舍掉,这一割舍误差在解码时将变成噪声而呈现出来。
第2编码模式是把高位数据彼此间的差值为+1或-1的原数据进行编码的模式。在选择第2编码模式时,由于差分数据符号为正或负的任何一方,故差分数据中的符号标志不存在。因此,数据就变成为只有表示差分的计数标志这一位。因而可以用3位来表示原数据的低位数据。因此,割舍原数据中的低位数据的割舍误差仅为1位。
第3编码模式是对高位数据相同的原数据进行编码的模式。在选择第3编码模式时,由于不存在差分数据,故可以用4位来表示原数据的低位数据。因此,原数据中的低位数据的割舍误差将变为0位,可以实现无编码误差的编码处理。
此外,第1、第2编码模式中,通过采用在解码时加上低位数据中被割舍的位平均值的办法,可以降低编码误差。
接下来,说明本实施例所涉及的数据编码装置和数据解码装置的作用。
图6是表明数据编码装置的作用的主流程图。首先,数据编码装置1判断原数据的输入是否已经完毕(S101),在输入已结束了的情况(在S101 1中为是)下,结束编码处理(S102)。一方面,在原数据的输入尚未结束的情况下(在S101中为否),编码装置1顺次读取已输入进来的原数据(S103)。接着,编码决定单元1e判断差值为±1的高位数据是否已连续6个字节以上(S104)。举例说,如图3(A)所示的原数据那样,在差值为±1的高位数据连续6个字节以上的情况下,数据编码装置1就执行数据编码处理(S105),并返回S101的处理。这样一来,就进行对原数据的编码并从编码装置1中输出编码数据串。
还有,在S104的判断中,通过采用判断差为±1的高位数据是否连续6字节以上的办法。可以防止编码数据的字节数超过原数据的字节数。就是说,在原数据串少于5个字节的情况下,编码数据串的字节数大于原数据串的字节数,收不到数据压缩的效果。所以,在本实施例中,如图5所示,把原数据串字节限定于大于6个字节的情况,进行编码处理。
在差值为±1的高位数据没有连续6个字节以上的情况下(在S104中为“否”),编码决定单元1e判断在已输入的原数据中低位数据是否有“1h”,(S106)。在低位数据有“1h”的情况下(在S106中为“是”),编码决定单元1e就把“1h”这一低位数据变更为“oh”(S107)。如上所述,由于“1h”这一低位数据是表示编码数据串的头一个字节的数据,故在不进行编码的情况下(S104中为“否”),必须防止因解码装置失误进行解码处理。为此,在不进行编码的情况下,要把“1h”这一低位数据改写为“0h”。S106的判断结果为低位数据没有“1h”的情况下,编码决定单元1e就无需变更原数据而原封不动地输出原数据。之后,编码装置1反复执行S101以后的处理。借助以上的处理,就可以进行比如说表示音响等的原数据串的编码、生成数据容量少的编码数据串。
接下来,说明本实施例涉及的数据解码处理。
图7是表明本实施例所涉及的数据解码处理的主程序的流程图。在该图中,数据解码装置2判断对已输入进来的编码数据的解码处理是否已经结束(S301)。当数据解码装置判断解码处理已经结束了时(S301中为“是”),数据解码装置2就结束所有的处理(S302)。另一方面,当数据解码装置2判断对已输入进来的编码数据的解码处理尚未结束时(在S301中为“否”),数据解码装置2就执行S303以后的处理。
在S303中,数据解码装置2读取已输入的数据串,解码决定单元2d判断读进来的数据串是否为编码数据串(S304)。就是说,解码决定单元2d判断表示头一个字节的低位数据是否为表示编码数据串的开头的“1h”。在数据解码装置判断已输入的数据串不是编码数据串的情况下(在S304中为“否”),就原封不动地输出已输入的数据串(S306)并返回S301。另一方面,在数据解码装置2判断已输入的数据串是编码数据串的情况下(在S304中为“是”),编码数据分割单元2a等执行编码数据串的解码(S305)。这样一来,已输入进来的编码数据串就顺次被解码(在S304中为“是”)并从数据解码装置2输出。
图8是表示S305的解码处理的子程序的流程图。在S401中,首先编码数据分割单元2a清除编码数据串的第1字节的低位数据(S401),并把该第1字节的数据作为第1字节的解码数据的高位数据保存起来。例如,编码数据分割单元2a,如图3(B)所示,清除编码数据串的第1字节的低位数据“1h”、并把第1字节的高位数据“Fh”保存起来。
接着,编码数据分割单元2a抽出编码数据串的第2字节的个数数据,并把该个数数据的值作为本子程序中的计数器N的最大值保存起来(S403)。接下来,编码数据分割单元2a使计数器N的值增1(S404)。还有,由于计数器N的初始值为“0”,故增1后的计数器N的值变为“1”。接着,编码数据分割单元2a判断计数器N的值是否已超过了最大值,即判断计数器N的值是否已超过了个数数据的值(S405)。如上所述,个数数据至少大于“6”,而且这时的计数器的值为“1”。因此,计数器N的值比个数数据的值小(在S405中为“否”),执行S406以后的处理。
在S406中,编码数据分割单元2a读编码数据中的第(N+4)个4位数据。由于这时的N的值为1,故编码数据分割单元2a读编码数据中的4位数据的第5个即编码数据中的第3个字节的高位4位的数据。例如,在图3(B)中,读出编码数据串的第3个字节的高位4位的数据“4h”。
其次,编码数据分割单元2a从已读出的4位数据“4h”中分离差分数据和低位数据(S407)。即,编码数据分割单元2a从已读出的4位数据中,把高位2位作为低位数据抽出、把低位2位抽出来作为差分数据。若把从编码数据串中读出来的4位数据“4h”(图3(B))用2进制数表示则变为“0100”。因而,通过抽出该数据的高位2位“01”,并使被抽出的“01”数据左移2位,则得到了解码后的低位数据“0100”(用16进制表示为“4h”)。另外,通过抽出已读出的数据“0100”的低位2位,就求得了差分数据“00”。编码数据分割2a再把该差分数据分离成计数标志“0”和符号标志“0”。
差分解码单元2b对第N个字节的解码数据中的高位数据加减差分数据,以对解码数据的第(N+1)个字节的高位数据进行解码(S408)。即差分解码单元2b对第1个字节的解码数据中的高位数据“Fh”加减差分数据,以此,对解码数据的第2个字节的高位数据解码。由于这时的差分数据是“00”,故解码数据的第2字节的高位数据变成为与解码数据的第1字节的高位数据“Fh”相等(图3(C))。
其次,解码数据结合单元2c把解码数据之中的第1字节的低位数据“4h”和第1字节的高位数据“Fh”(在S402中算出)结合在一起(S409)。就是说,解码数据结合单元2c先借助于把高位数据“Fh”左移4位求出“F0h”,再计算该“F0h”与低位数据“4h”的逻辑和。这样一来,就求得了第1字节的解码数据(原数据)“F4h”。
然后,解码装置2返回S404,反复执行S404~S409的处理。在S401中,编码数据分割单元2d借助于使计数器N的值增1的办法,使计数器N的值变成2。接着,编码数据分割单元2a判断计数器N的值是否超过了最大值(S405),若判断结果为否,则执行S406以后的处理。
在S406中,编码数据分割单元2a读编码数据中的第(N+4)个4位数据。即、编码数据分割单元2a把编码数据串每4位切成一段并从编码数据串的头上开始读第(N+4)个4位数据。由于这时的N的值为“2”,故编码数据分割单元2a读编码数据中的4位数据的第6个、即编码数据中的第3字节的低位4位数据。例如,在图3(B)中,读出编码数据串的第3字节的低位4位数据“4h”。
其次,编码数据分割单元2a从已读出来的4位数据“4h”中分离差分数据和低位数据(S407)。被分离出来的差分数据和低位数据的值分别为“00”(2进制表示)和“4h”。差分解码单元2b对第2个字节的解码数据中的高位数据“Fh”加减差分数据。用这种办法对解码数据的第3个字节的高位数据“Fh”进行解码(S408,图3(C))。此外,第2个字节的解码数据中的高位数据“Fh”是由上次执行过的S408的处理算出来的。之后,解码数据结合单元2C通过使解码数据中的第2字节的低位数据“4h”和第2字节的高位数据“Fh”进行结合算出第2字节的解码数据“F4h”(S409)。
通过反复进行以上的处理,就可以对示于图3(B)的编码数据顺次进行解码。这样一来,当所有的编码数据的解码结束时,由于计数器N的值将超过最大值(在S408中为“是”),数据解码装置2的处将反回图7的主流程中去。
应用以上说明的处理,就可以进行音响数据等的编码和解码编码。一般说来,由于音响数据和图像数据等大多变化缓慢,故高位数据的变化量较小。因此,如本实施例所示,通过采用仅使原数据中的高位数据进行差分编码的同时,把已进行了差分编码的高位数据的个数表示为个数数据的办法,就可以以高压缩率进行音响数据等的编码和解码。此外,由于数据编码和数据解码所必需的运算是差分运算和数据排列变换之类的处理,故可以用简易的算法实现高压缩率的编码、解码。
第2实施例
接下来,说明本发明的第2实施例所涉及的数据编码才数据解码装置。本实施例所涉及的数据编码装置和数据解码装置与示于图1和图2的第1实施例所涉及的构成大致一样。但是,本实施例涉及的编码决定单元1e(图2),在相应于原数据串可以自动地选择最佳编码模式这一点上与第1实施例不相同。
图9示出了本实施例所涉及的编码数据串的格式。在该图中,第1字节的高位4位数据表示编码模式。比如,第1字节的高位4位的数据表示编码模式。比如,第1字节的高位4位的数据“1h”表示用第2编码模式进行编码。另外,本实施例所涉及的编码模式,如后所述,有第1~第8这8种。再有,同图的第1字节的低位4位数据、第2字节的8位数据是表明已进行过编码的原数据的个数的个数数据。由于个数数据用总计12位表示,故用同一个编码模式可对最多至4095个原数据串进行编码。第3个字节以后的数据表示编码数据,这些数据是用对应于编码模式的方法编码的。
在图11中,示出了本实施例所涉及的编码模式的一览表。以下,依次对这些编码模式进行说明。
第1编码模式(编码模式(c))是与第1实施例所涉及的第3编码模式对应的模式。即,本第1编码模式是对具有相同的高位数据的原数据进行编码的模式。在选择第1编码模式时,由于不存在差分数据,故可以用4位表示原数据的低位数据。因此,原数据中的低位数据的割舍误差变成为0位。
第2编码模式(编码模式(c))是与第1实施例所涉及的第2编码模式对应的模式。该第2编码模式是对高位数据附此间的差为值+1的原数据进行编码的模式。在选择第2编码模式时,由于差分数据的符号仅仅为正,故不存在差分数据中的符号标志。因此,差分数据仅剩下表示差分的计数标志这一位,可以用3位表示原数据的低位数据。为此,原数据中的低位数据的割舍误差变为1位。
第3编码模式(编码模式(c))是与第1实施例所涉及的第2编码模式对应的模式,是对高位数据彼此之间的差值为-1的原数据进行编码的模式。至于第3编码模式中的其他的编码方法与第2编码模式相同。
第4编码模式(编码模式(c))是与第1实施例所涉及的第1编码模式对应的模式。就是说,该第4编码模式是对高位数据彼此间的差值处于±1的范围内的原数据进行编码的模式。在选择第4编码模式时,由于差分数据由表示差值的计数标志和表示差值的符号的符号标志的共计2位构成,故原数据串的低位数据必须用2位来表现。为此,4位的低位数据中的低位2位作为割舍误差在解码时将表现为噪声。
在此,把选择1~第4编码模式时的编码数据串示于图11(A)。编码数据串中的第1字节的高位4位的数据表示编码模式。例如,在该数据为“3h”时,在解码时就可判断是依据第4编码模式来编码的。表示已进行过编码的原数据的个数的个数数据被写入;第1字节的低位4位的数据与第2字节的8位的数据。合计12位中。此外,原数据的低位数据与差分数据合在一起存放入编码数据串的第3字节以后。此外,本实施例所涉及的第1~第4编码模式与第1实施例所涉及的编码模式不同,原数据的第1个字节的高位数据不存放于编码串中。因此,在对用第1~第4编码模式编码的编码数据串解码时,把在前边刚刚解码过的解码数据的高位数据作为基准依次对编码数据串中的高位数据进行解码。
接下来,对第5、第6编码模式(编码模式(b))进行说明。这些编码模式是所谓进行差分编码的模式。在原数据与下一个原数据的差值纳于+2,且这样的原数据连续超过4个字节的情况下,采用第5编码模式。而在原数据与下一原数据之差值纳入-2、且这样的原数据连续超过4个字节时采用第6编码模式。在图11(B)中示出了选择第5、第6编码模式时的编码数据串。如该图所示,第3个字节以后的编码数据表示相邻的原数据间的差分数据。此外,对于第1个字节的原数据的差分根据第1字节的原数据和跟第1个字节的原数据最近的前边的原数据之差来计算。
倘采用第5、第6编码模式,则由于差分数据用2位表示,故可以把4个字节长的原数据缩为1个字节的编码数据。但是,因为需要在编码数据串中设置表示编码模式的数据和个数数据,故在对不足4个的原数据进行编码时,编码数据串的数据量增加得比原数据的数据量还多。于是,限于差值在±2以内的原数据连续4个以上的情况下,用第5、第6编码模式来进行编码。
第7编码模式(编码模式(d))是把原数据不加改变地存放于编码数据串中去的模式。但是,由于在编码数据串的第1、第2字节中存放有表示编码模式的数据和个数数据,所以要把所有的原数据都存放入编码数据串中去的话、就会因编码而增加数据量。于是,如图12(A)所示的那样,借助于对原数据的第1~第4字节仅把高位数据放入编码数据串中去的办法,避免了数据量的增加。第5字节以后的原数据原样不变地放入编码数据串中的第5字节以后。因此,倘采用第7编码模式,则编码数据的数据量对原数据的数据量的比率(压缩率)将变成100%。
第8编码模式(编码模式(a))是对将成为基准的原数据(data1)的差值处于±d的范围的原数据进行编码的模式。选择第8编码模式时的编码数据串示于图12(B)。在该图中,把第1字节的原数据放入编码数据串的第3字节中。接着在编码串中的第1字节的低位数据和第2字节中存放与第1字节的原数据之差值处于±d的范围之内,旦表示连续的原数据个数的数据。另外,一个编码数据串由3字节的编码数据构成。因此,在±d的范围内的原数据3个以上连续出现时可选择第8编码模式。
倘采用这样的第8编码模式,同把原数据中的变化不大的部分以高压缩率进行编码、解码是可能的。比如,在微小信号的原数据(音响数据)连续出现的那种情况下,这些原数据的再生声音在听觉上可以捕捉为无声。因此,在这种情况下,通过把指定范围内(d的范围内)的原数据的个数放入编码数据串中去的办法,就可以实现极其之高的高压缩的编码和解码。此外,d的值可由用户随意设定。例如、在原数据为音响数据这样的情况下,希望把d设定为近乎无声的值(比如,d<8)。
接下来,对照示于图13的流程图来说明本实施例的作用。该流程图是表示编码处理的主流程图。本实施例所涉及的数据编码装置1(图2)可根据原数据自动地选择上述的8种编码数模式中任何一个,并依据已选择的编码模式可以进行编码。如图13所示,编码模式的选择可否的判断,从压缩率高的编码模式开始顺次进行。
首先,编码决定单元1e判断与成为基准的原数据(图12CB中的data1)之差值是否处于±d范围之内且这样的原数据是否连续出现3个字节以上(S501)。若判断的结果为“是”,则编码决定单元1e选择第8编码模式。接着,原数据分割单元1a、差分检测单元1b、个数数据计算单元1c和编码数据结合单元1d遵照第8编码模式进行原数据的编码(S502)。比如,原数据之中相当于无声状态的部分可以用该第8编码模式进行编码(图12(B))。
另一方面,在S501的判断结果为“否”的情况下,编码决定单元1e再进行S503判断。在S503中,编码决定单元1e判断低位数据纳入±2以内的原数据是否连续出现4个以上。若判断的结果为“是”,则编码决定单元1e选择第5、第6编码模式,原数据分割单元1a等则遵照第5、第6编码模式执行原数据编码(S504)。用这种办法可对原数据进行由所谓的差分PCM进行的编码(图11(B))。
在S503的判断结果为“否”的情况下,编码决定单元1e执行S505的判断。即,编码决定单元1e判断高位数据纳入±1内的原数据个数是否连续出现6个以上(S505)。若判断的结果为“是”,则编码决定单元1e将选择第4编码模式。原数据分割单元1a等则遵照第4编码模式进行编码(S506)。即,差分计算单元1b在把原数据的高位数据之间的差分数据用2位表示的同时,割舍掉原数据的低位数据的2位。而编码数据结合单元1d,则把低位数据和差分数据放入编码数据串里的第3字节之后(图11(C))。
在S505的判断结果为“否”的情况下,编码决定单元1e执行S507的判断。在S507中,编码决定单元1e判断高位数据纳入-1以内的原数据是否连续出现6个以上。在该判断的结果为“是”的情况下,编码决定单元1e就选择第3编码模式。原数据分割单元1a等则遵照第3编码模式执行原数据编码(S508)。即,差分计算单元1b在用1位表示原数据的高位数据之间的差分数据的同时,把原数据的低位数据中的低位1位割舍掉。接着,编码数据结合单元1d把低位数据和差分数据放入编码数据串中的第3字节之后(图11(A))。
在S507的判断结果为“否”的情况下,编码决定单元1e执行S509的判断。在中,编码决定单元1e判断高位数据纳入+1以内的原数据是否连续出现6个以上。在判断的结果为“是”的情况下,编码决定单元1e选择第2编码模式,原数据分割单元1a等则遵照第2编码模式执行原数据的编码(S501)。第2编码模式是把上述的第3编码模式所涉及的差分数据用正的符号表示的编码模式(图11(A))。
在S509的判断结果为“否”的情况下,编码决定单元1e执行S511的判断。在S511中,编码决定单元1e判断同样的高位数据是否连续出现6个以上。接着,在判断结果为“是”的情况下,编码决定单元1e将根据第1编码模式执行原数据的编码(S512,图11(A))。倘采用第1编码模式,由于不存在表示高位数据之间差值的差分数据,故可以把原数据的低位数据照原样不变地放入编码数据串中去。因此,低位数据的割舍误差将变成0位,因而可以避免解码时产生噪声。最后,在S511的判断结果为“否”的情况下,编码决定单元1e选择第7编码模式。原数据分割单元1a等等遵从示于图12(A)的编码格式把原数据顺次放入编码数据串中去(图12(A))。倘采用该第7编码模式,则除第1~第4个原数据之外,原数据都照原样的放入编码数据串中去。因此,在选择了第7编码模式的情况下,收不到数据压缩的效果。
借助于以上的处理,原数据串的一部分的编码就结束了。接着,数据编码装置1的处理在返回到未图示的主流程中之后,再次执行该流程。这样一来,原数据串的每部分都可用最佳的编码模式进行编码。数据解码装置2从编码数据串中依次检测表示编码模式的数据,执行与编码模式相对应的解码处理。因此,倘采用本实施例,则可以把音质和画质的劣化压低至最小限度的同时,可以实现高压缩的编码和解码。这样一来,在TV游戏机等之中,就可以把更多的音响数据、图像数据等存放到数据容量有限的ROM盒卡中。
另外,本发明不受限于上述的实施例,在不脱离本发明的宗旨的范围之内,是可以实施的。比如,不限定于8位的原数据,对于16位、32位等的原数据也可应用上述的实施例。此外,原数据的高位数据、低位数据也不必每4位进行一次分割。比如说也可把2位分配给高位数据,把6位分配给低位数据。
如以上一直说明的那样,若采用本发明,则通过采用仅仅用原数据中变化比较小的高位数据的差分数据编码的办法,与通常的差分PCM比,就可减少差分数据的数据量。即,在TV游戏机之类的多媒体中所使用的音响数据、图像数据,一般说高位数据的变化量比较小。因此,可以减少高位数据的差分数据的数据量,可实现高压缩的编码和解码。在本发明中,由于计算变化比较小的高位数据的差分数据,故差分数据不会超过预先确定好的数据长度,因而,可以减少编码和解码误差。
另外,由于仅仅算出高位数据的差分即可,故可以简化编码、解码和算法。因此,比如说在家用TV游戏机等等中。就可以降低制造价格。另外,由于可以用简易的算法实现编码和解码,故可以进行高速的编码和解码。