CN1315327C - 一种数据压缩的编码和解码方法 - Google Patents
一种数据压缩的编码和解码方法 Download PDFInfo
- Publication number
- CN1315327C CN1315327C CNB2003101212625A CN200310121262A CN1315327C CN 1315327 C CN1315327 C CN 1315327C CN B2003101212625 A CNB2003101212625 A CN B2003101212625A CN 200310121262 A CN200310121262 A CN 200310121262A CN 1315327 C CN1315327 C CN 1315327C
- Authority
- CN
- China
- Prior art keywords
- piece
- data
- coding
- instruction code
- machine instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种数据压缩的编码和解码方法,该方法包括:1)按照选定的编码方法生成可执行的机器指令代码块;2)数据压缩的编码过程包括:a、用生成的机器指令代码块,将要压缩的数据进行编码,生成编码后数据块;b、将机器指令代码块和编码后数据块组成数据压缩编码后的复合数据块;3)对数据压缩编码后的复合数据块进行解码的过程包括:c、读取机器指令代码块和编码后数据块;d、执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。本发明使得在使用升级后的编码软件进行数据压缩编码后,不需要升级解码软件即可对压缩的数据进行解码,具备了极强的扩展能力和向后的兼容性。
Description
技术领域
本发明涉及数据处理方法,特别涉及一种数据压缩的编码和解码方法。
背景技术
目前,在多媒体系统中,数字视频技术中的核心是图像数据压缩编码技术。
例如,在VGA显示中,幅中分辨率为800×600个像素,若每个像素占24位,则需要11520000兆比特的存储容量。如果把这样的图像在网上传输,则需要同样大小的网络流量。没有适当的压缩编码方法,对于存储空间和网络带宽的需求是非常巨大的。因此,人们发明了各种方法,对数据进行编码压缩,以减小图像文件对存储空间和网络带宽的需求。
图像压缩编码的方法分为无损压缩编码和有损压缩编码两种。常见的无损压缩编码方式包括霍夫曼编码,算术编码,游程编码等;有损编码方法包括联合图像专家组(jpeg)编码,可交换的图像文件(gif)编码等方法。这些编码方法的共同特点是:编码后生成的对象是数据和对这些数据进行解码的参数,不包含解码方用于解码的机器指令。这一特点就决定了:解码方的程序中必须已经包含有用于解码的机器指令,否则解码方不能对编码后的数据进行解码,即解码程序不具备向后的兼容性。
举一个具体的例子。在某些嵌入系统产品中,集成了对某些图像的解码程序。程序内包含对n种编码方法编码后的图像进行解码的代码,即机器指令。这n种编码方法通常包括:游程编码、jpeg编码、以及编码/解码方自定义的编码方法等。嵌入系统产品中集成的解码程序对于使用这n种编码方法压缩的图像,可以进行解码。但是,在对于这n种格式之外的图像,就不能进行解码了。如果希望这些嵌入系统产品具备对这些图像进行解码的能力,那么唯一的办法是升级它们的固件,即重新烧录软件到它们的只读存储器中。此办法对于销售出去的产品,基本是不可能的。对于计算机来说,虽然不需要重新烧录软件到只读存储器,但也需要重新升级解码软件,用户使用也比较复杂。
在多媒体系统中,除了数字视频技术需要对图像数据进行压缩编码和解码,对于音频数据、数据量大的文本数据同样需要进行压缩编码和解码。对于音频数据、文字数据的压缩编码和解码同样有上述解码软件需要升级的问题。
发明内容
有鉴于此,本发明的目的在于提供一种数据压缩的编码和解码方法,使得在使用升级后的编码软件进行数据压缩编码后,不需要升级解码软件即可对压缩的数据进行解码。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种数据压缩的编码/解码方法,该方法包括以下步骤:
1)按照选定的编码方法生成可执行的机器指令代码块;
2)数据压缩的编码过程包括:
a、执行步骤1)生成的机器指令代码块,将要压缩的数据进行编码,生成编码后数据块;
b、将机器指令代码块和编码后数据块组成数据压缩编码后的复合数据块;
3)对数据压缩编码后的复合数据块进行解码的过程包括:
c、读取机器指令代码块和编码后数据块;
d、执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。
其中,所述步骤a可以进一步包括:将运行所述机器指令代码块所需要的运行参数和编码后数据块参数生成参数数据块;
所述步骤b为:将机器指令代码块、参数数据块、编码后数据块按照预定的协议格式,组成数据压缩编码后的复合数据块;
所述步骤c进一步包括:按照预定的协议格式先读取参数数据块。
所述步骤d为:按照步骤c读取的参数数据块,执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。
所述的复合数据块可以为连续的二进制数据流;
所述的协议格式包括:参数数据块总长度、选定的编码方法的标识、机器指令代码块总长度、机器指令代码块运行的CPU的结构标识、编码后数据块总长度、运行机器指令代码块需要的内存空间;机器指令代码块数据;编码后数据块数据。
所述按照预定的协议格式,组成复合数据块的方法可以为:将参数数据块设置在复合数据块最前面,机器指令代码块和编码后数据块任意组合后,设置在参数数据块后面。
所述步骤1)可以进一步包括:如果生成的机器指令代码块中的代码不能满足如下要求:其中的变量地址都表示为基于机器指令代码堆的偏移量,则应生成一个变量地址修正块;该变量地址修正块中保留上述所有变量的地址修正值项;
所述步骤b为:将机器指令代码块、编码后数据块、参数数据块、变量地址修正块按照预定的协议格式,组成数据压缩编码后的复合数据块;
所述步骤c进一步包括:读取变量地址修正块的地址修正值项;
所述步骤d为:按照步骤c读取的参数数据块,根据步骤c读取的地址修正值项把代码中绝对变量地址修正为基于机器指令代码堆基地址的偏移量,执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。
所述的复合数据块可以为连续的二进制数据流;
所述的协议格式包括:参数数据块总长度、选定的编码方法的标识、机器指令代码块总长度、机器指令代码块运行的CPU的结构标识、编码后数据块总长度、运行机器指令代码块需要的内存空间、变量地址修正块中地址修正值项的个数;机器指令代码块数据;编码后数据块数据;变量地址修正块的所有地址修正值项。
所述按照预定的协议格式,组成复合数据块的方法可以为:将参数数据块设置在复合数据块最前面,机器指令代码块、编码后数据块和变量地址修正块任意组合后,设置在参数数据块后面。
所述步骤b可以进一步包括:将数据压缩编码后的复合数据块保存为文件;
步骤c所述读取机器指令代码块和编码后数据块为:读取文件中的机器指令代码块和编码后数据块。
所述的要压缩的数据可以为:图像数据或音频数据或文本数据。
所述选定的编码方法可以为:霍夫曼编码或算术编码或游程编码或jpeg编码或gif编码或mpeg编码。
由本发明的技术方案可见,本发明的这种数据压缩的编码/解码方法,该方法中,编码方把编码后的数据与对该数据进行解码的机器指令结合到一起,形成一种特殊数据/指令块。解码方提取该数据/指令块中的机器指令代码,动态修改本地的解码指令,对数据/指令块进行解码。这样,解码方可以解码的格式就不仅限于已知的编码方法,可以是任何编码方提供了解码指令的编码方法,从而使得在使用升级后的编码软件进行数据压缩编码后,不需要升级解码软件即可对压缩的数据进行解码,具备了极强的扩展能力和向后的兼容性。
附图说明
图1为本发明一个较佳实施例的数据压缩编码流程图;
图2为图1所示实施例的数据压缩解码流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
本发明的这种数据压缩的编码和解码方法中,编码方把编码后的数据与对该数据进行解码的机器指令结合到一起,形成一种特殊数据/指令块。解码方提取该数据/指令块中的机器指令代码,动态修改本地的解码指令,对数据/指令块进行解码。
本发明的一个具体实施实例是在奔腾4处理器的在WINDOWS操作系统下对图像数据进行编码和解码。
本实施例中,编码方选定了采用二维游程编码方式进行编码压缩,在对图像数据进行压缩编码前先按照二维游程编码方法生成可执行的机器指令代码块。
本实施例的生成可执行的机器指令代码块的方法是:编写二维游程编码相对应的解码程序段,针对运行解码程序的CPU的结构生成可执行的机器指令代码块。该机器指令代码块,无论采用汇编语言汇编生成,还是用高级语言编译生成,都要求此段代码使用一个可重载的指针作为其运行此段代码时保存数据的存储空间--堆的指针。此代码段运行时所需要的较大数组等都在此堆中分配,其地址是基于此堆的偏移量,而不应该是绝对地址。其余的尺寸较小的变量在栈上分配;如果编译器生成的指令代码块中的代码不能满足如下要求:其中的变量地址都表示为基于此堆的偏移量,则应生成一个变量地址修正块。该变量地址修正块中保留上述所有变量的地址修正值项,地址修正值项不仅包括地址修正值,还包含着待修正之处的位置信息。通过该修正值可以把代码中绝对变量地址修正为基于此堆基地址的偏移量。
图1为本发明一个较佳实施例的数据压缩编码流程图。参见图1,本实施例的数据压缩编码过程包括以下步骤:
步骤101,调用malloc函数,分配一块足够大的内存区域以容纳复合数据块。
步骤102,在复合数据块中的最开始位置为参数数据块空间。按照预定的协议格式,填写入参数数据块的长度、本编码方法的标识、机器指令代码块运行的CPU的结构标识,本例中为英特尔的386结构标识,以及编译好的机器指令代码块的长度、堆所需的内存空间大小。
步骤103,执行上述生成的机器指令代码块,将要压缩的图像数据进行编码,生成编码后数据块。就是用二维游程编码方法对图像数据进行编码,编码生成的目标对象为若干个数据帧。多个这样的数据帧连在一起构成一个编码后数据块。
步骤104,计算编码后数据块长度,并把它和运行机器指令代码块所需的堆大小按照预定的协议格式填入参数数据块中。
步骤105,将编码后数据块复制到复合数据块中参数数据块后面。
步骤106,把机器指令代码块复制到复合数据块中紧邻编码后数据块的位置,如果有变量地址修正块复制到机器指令代码块后面。这样本实施例生成的复合数据块就构成一个连续的二进制数据流。数据流采用的预定协议格式参见表一,表一为图1所示实施例数据压缩编码后数据流的协议格式。其中,参数数据块总在最前面,而编码后数据块、机器指令代码块、变量地址修正块三者的顺序可以是任意设置的,只要解码方与之一致即可。
参数数据块 | 编码后数据块 | 机器指令代码块 | 变量地址修正块 |
表一
其中参数数据块的格式参见表二,表一为图1所示实施例参数数据块协议格式。
参数数据块总长度和校验和 | 选定的编码方法的标识 | 机器指令代码运行的CPU的结构标识 | 机器指令代码块总长度和校验和 | 编码后数据块总长度和校验和 | 变量地址修正块中地址修正值项的个数 | 机器指令代码运行所需要的存储空间 |
表二
步骤107,将复合数据块写入文件中或发送到网络上。
图2为图1所示实施例的数据压缩解码流程图。参见图2,本实施例的数据压缩解码过程包括以下步骤:
步骤201,调用malloc函数,分配一块足够大的内存区域以容纳接收到的参数数据块。
步骤202,解析复合数据块中的参数数据块,先读出本块的长度,再根据本块起始位置和长度;编码后数据块的起始位于参数数据结束位置的下一个字节,其长度从参数数据块可以得到,有了起始位置和长度,就可以读出完整的编码后数据块;机器指令代码块的起始位于编码后数据块结束位置的下一个字节,其长度也可以从参数数据块得到,有了起始位置和长度,就可以读出完整的机器指令代码块;变量地址修正块的起始位于机器指令代码块结束位置的下一个字节,其长度从参数数据块中的地址修正值项的个数可以得到。有了起始位置和长度,就可以读出完整的变量地址修正块;这样就读出完整了的复合数据块;按照参数数据块中的指示,调用malloc函数,分配内存空间给后面的编码后数据块。
步骤203,接收编码后数据块复制到步骤202中分配的空间中。
步骤204,把接收到的机器指令代码块复制到解码程序代码段中的预留位置。WINDOWS 9X下系统动态库中处于系统共享区域,如Kernel32.dll映射至BFF70000,此区域是可以修改的,机器指令代码块可以复制到此处。
步骤205,按照参数数据中的指示,调用malloc函数为机器指令代码块分配需要的堆。
步骤206,通过jmp指令,跳转到机器指令代码块的指令入口处,开始调用机器指令代码块和参数数据块中的地址修正值项把代码中绝对变量地址修正为基于机器指令代码堆基地址的偏移量,对编码后数据块进行解码,从而获得原始位图。
本实施例是对图像数据进行压缩编码/解码,选择适当的编码方式如动态图像专家组(mpeg)编码方式,采用本发明的方法,可以实现对图像数据或音频数据或文本数据的压缩编码/解码。
由上述的实施例可见,本发明的这种数据压缩的编码和解码方法,解码方可以解码的格式可以是任何编码方提供了解码指令的编码方法,从而使得在使用升级后的编码软件进行数据压缩编码后,不需要升级解码软件即可对压缩的数据进行解码,具备了极强的扩展能力和向后的兼容性。
Claims (10)
1、一种数据压缩的编码和解码方法,其特征在于,该方法包括以下步骤:
1)按照选定的编码方法生成可执行的机器指令代码块;
2)数据压缩的编码过程包括:
a、执行步骤1)生成的机器指令代码块,将要压缩的数据进行编码,生成编码后数据块;
b、将机器指令代码块和编码后数据块组成数据压缩编码后的复合数据块;
3)对数据压缩编码后的复合数据块进行解码的过程包括:
c、读取机器指令代码块和编码后数据块;
d、执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。
2、如权利要求1所述的方法,其特征在于,所述步骤a进一步包括:将运行所述机器指令代码块所需要的运行参数和编码后数据块参数生成参数数据块;
所述步骤b为:将机器指令代码块、参数数据块、编码后数据块按照预定的协议格式,组成数据压缩编码后的复合数据块;
所述步骤c进一步包括:按照预定的协议格式先读取参数数据块。
所述步骤d为:按照步骤c读取的参数数据块,执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。
3、如权利要求2所述的方法,其特征在于,所述的复合数据块为连续的二进制数据流;
所述的协议格式包括:参数数据块总长度、选定的编码方法的标识、机器指令代码块总长度、机器指令代码块运行的CPU的结构标识、编码后数据块总长度、运行机器指令代码块需要的存储空间;机器指令代码块数据;编码后数据块数据。
4、如权利要求3所述的方法,其特征在于,所述按照预定的协议格式,组成复合数据块的方法为:将参数数据块设置在复合数据块最前面,机器指令代码块和编码后数据块任意组合后,设置在参数数据块后面。
5、如权利要求2所述的方法,其特征在于,所述步骤1)进一步包括:如果生成的机器指令代码块中的代码不能满足如下要求:其中的变量地址都表示为基于机器指令代码堆的偏移量,则应生成一个变量地址修正块;该变量地址修正块中保留上述所有变量的地址修正值项;
所述步骤b为:将机器指令代码块、编码后数据块、参数数据块、变量地址修正块按照预定的协议格式,组成数据压缩编码后的复合数据块;
所述步骤c进一步包括:读取变量地址修正块的地址修正值项;
所述步骤d为:按照步骤c读取的参数数据块,根据步骤c读取的地址修正值项把代码中绝对变量地址修正为基于机器指令代码堆基地址的偏移量,执行步骤c读取的机器指令代码块,对步骤c读取的编码后数据块进行解码。
6、如权利要求5所述的方法,其特征在于,所述的复合数据块为连续的二进制数据流;
所述的协议格式包括:参数数据块总长度、选定的编码方法的标识、机器指令代码块总长度、机器指令代码块运行的CPU的结构标识、编码后数据块总长度、运行机器指令代码块需要的存储空间、变量地址修正块中地址修正值项的个数;机器指令代码块数据;编码后数据块数据;变量地址修正块的所有地址修正值项。
7、如权利要求5所述的方法,其特征在于,所述按照预定的协议格式,组成复合数据块的方法为:将参数数据块设置在复合数据块最前面,机器指令代码块、编码后数据块和变量地址修正块任意组合后,设置在参数数据块后面。
8、如权利要求1所述的方法,其特征在于,所述步骤b进一步包括:将数据压缩编码后的复合数据块保存为文件;
步骤c所述读取机器指令代码块和编码后数据块为:读取文件中的机器指令代码块和编码后数据块。
9、如权利要求1所述的方法,其特征在于,所述的要压缩的数据为:图像数据或音频数据或文本数据。
10、如权利要求1所述的方法,其特征在于,所述选定的编码方法为:霍夫曼编码或算术编码或游程编码或jpeg编码或gif编码或mpeg编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101212625A CN1315327C (zh) | 2003-12-15 | 2003-12-15 | 一种数据压缩的编码和解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101212625A CN1315327C (zh) | 2003-12-15 | 2003-12-15 | 一种数据压缩的编码和解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1630370A CN1630370A (zh) | 2005-06-22 |
CN1315327C true CN1315327C (zh) | 2007-05-09 |
Family
ID=34844131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101212625A Expired - Fee Related CN1315327C (zh) | 2003-12-15 | 2003-12-15 | 一种数据压缩的编码和解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1315327C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101783788B (zh) * | 2009-01-21 | 2014-09-03 | 联想(北京)有限公司 | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 |
US11385962B2 (en) * | 2020-11-05 | 2022-07-12 | Sage Microelectronics Corporation | Method and apparatus for error correction encoding compressed data |
CN112835651B (zh) * | 2021-04-01 | 2023-10-20 | 中国空空导弹研究院 | 一种多路图像并行解码处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01221073A (ja) * | 1988-02-29 | 1989-09-04 | Pioneer Electron Corp | 画像情報の再生方法 |
EP0614186A2 (en) * | 1993-03-04 | 1994-09-07 | Canon Kabushiki Kaisha | Transmitting apparatus |
CN1139860A (zh) * | 1994-12-12 | 1997-01-08 | 索尼公司 | 对信息数据进行编码和/或解码的装置和方法 |
-
2003
- 2003-12-15 CN CNB2003101212625A patent/CN1315327C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01221073A (ja) * | 1988-02-29 | 1989-09-04 | Pioneer Electron Corp | 画像情報の再生方法 |
EP0614186A2 (en) * | 1993-03-04 | 1994-09-07 | Canon Kabushiki Kaisha | Transmitting apparatus |
CN1139860A (zh) * | 1994-12-12 | 1997-01-08 | 索尼公司 | 对信息数据进行编码和/或解码的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1630370A (zh) | 2005-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101461209B1 (ko) | 2d 매트릭스들에 인코딩 파라미터들을 저장하는 이미지 압축을 위한 방법 및 장치 | |
JP4722321B2 (ja) | 多様な圧縮率制約を受ける画質制御によるデジタル・ドキュメントの圧縮方法 | |
US20030043905A1 (en) | Image processing method and apparatus, computer program, and storage medium | |
US10313695B2 (en) | Parallel decode of a progressive JPEG bitstream | |
CN1193428A (zh) | 电子节目指导信息的压缩 | |
US10271057B2 (en) | System and methods for image/video compression | |
US20110170791A1 (en) | Bitstream format for compressed image data | |
US8810439B1 (en) | Encoder, decoder and method | |
TW200937875A (en) | Compression system for a bit-plane | |
CN102970544A (zh) | Jpeg编码和解码方法及系统 | |
CN1315327C (zh) | 一种数据压缩的编码和解码方法 | |
CN100348053C (zh) | 利用运动图像的电子水印的错误隐蔽方法 | |
KR101100829B1 (ko) | 이미지 데이터 무손실 압축 및 해제하는 시스템 및 방법. | |
CN101739354A (zh) | 基于内存池技术的brew手机h.264解码优化方法 | |
CN1117484C (zh) | 存储器要求降低的已压缩视频数据流的解码与编码方法 | |
CN110191341B (zh) | 一种深度数据的编码方法和解码方法 | |
CN1231800A (zh) | 数字化图像的图像编码的方法 | |
CN1874231A (zh) | 一种文件传送方法 | |
CN100379251C (zh) | 一种静态图像压缩的编码方法 | |
JP2006108997A (ja) | 情報処理装置、情報処理方法、プログラム及び記憶媒体 | |
WO2015041652A1 (en) | A progressive jpeg bitstream transcoder and decoder | |
JP2006060490A (ja) | 画像圧縮装置および画像圧縮プログラム | |
JP5731816B2 (ja) | 画像処理装置、画像処理方法 | |
CN1113319C (zh) | 按位处理实现最佳化数据损失编码的压缩方法 | |
JP2001217722A (ja) | 情報符号化装置及び情報符号化方法及びコンピュータ読み取り可能な記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070509 Termination date: 20201215 |
|
CF01 | Termination of patent right due to non-payment of annual fee |