CN112290953B - 多道数据流的阵列编码装置和方法、阵列解码装置和方法 - Google Patents

多道数据流的阵列编码装置和方法、阵列解码装置和方法 Download PDF

Info

Publication number
CN112290953B
CN112290953B CN202011116801.6A CN202011116801A CN112290953B CN 112290953 B CN112290953 B CN 112290953B CN 202011116801 A CN202011116801 A CN 202011116801A CN 112290953 B CN112290953 B CN 112290953B
Authority
CN
China
Prior art keywords
data
compression
data stream
mixed
stream
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.)
Active
Application number
CN202011116801.6A
Other languages
English (en)
Other versions
CN112290953A (zh
Inventor
覃健诚
钟宇
陆以勤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN202011116801.6A priority Critical patent/CN112290953B/zh
Publication of CN112290953A publication Critical patent/CN112290953A/zh
Application granted granted Critical
Publication of CN112290953B publication Critical patent/CN112290953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种多道数据流的阵列编码装置和方法、阵列解码装置和方法,其中阵列编码包括以下步骤:将X道原始数据流动态映射为N道队列数据流,将所述N道队列数据流分割成多个数据块;对多个所述数据块进行N对1选择及重排输出,获得混合数据块,将所述混合数据块连接成混合数据流发送给压缩编码***进行压缩;其中,X、N为正整数。本发明可以做到保持数据窗口大小不变的情况下,同时对多道数据流进行合并压缩,既利用了数据流内部的相似信息,又利用了数据流之间的相似信息,从而提高压缩率和压缩速度,可广泛应用于数据无损压缩的信息编码技术领域。

Description

多道数据流的阵列编码装置和方法、阵列解码装置和方法
技术领域
本发明涉及数据无损压缩的信息编码技术领域,特别涉及一种多道数据流的阵列编码装置和方法、阵列解码装置和方法。
背景技术
随着云计算的迅速发展,数据量正在以惊人的速度增长。作为信息产业的发展趋势,大数据正变得越来越重要。与此同时也出现了问题:如何能够高效地处理这些TB级、PB级甚至更多的大数据?我们需要在网络环境中存储和传输这些大数据,这对存储空间、网络带宽和计算资源都是一种挑战。
数据压缩是节省数据存储和传输成本的一种明智的方法,然而面对大数据,传统的压缩和加密技术显得能力不足。例如软件WinRAR只有一个4MB的小数据窗口,这会限制压缩率,并且其压缩速度并不足够快。
大的数据窗口有可能提高压缩率。但是扩大数据窗口很难,因为索引长度会增长,导致压缩率降低。
无损压缩又称为无失真压缩,是数据压缩技术之中的一类,特点是解压缩时能够把数据一模一样地还原出来。例如WinZip、WinRAR、7-zip等软件采用的就是无损压缩技术。数据压缩技术的另一类称为有损压缩,通常压缩的对象是声音、图片、视频等多媒体数据,其特点是解压缩得到的数据与原始数据有差异,但是给人的感觉差距不明显。例如JPG图片、DVD视频就用到了有损压缩技术。所有的有损压缩编码方法,都需要在压缩***末端采用一个无损压缩的编码部件来完成压缩,因此本专利对于有损压缩的情况同样适用。
熵编码器是无损压缩技术中的重要部件,其原理是根据字符出现的概率来确定字符编码的长短,概率大的字符采用短编码,概率小的字符采用长编码,从而使输出的数据编码尽可能短,达到数据压缩的效果。熵编码器采用的常见算法有算术编码、区间编码、Huffman编码等,例如WinZip用了Huffman编码,7-zip用了区间编码的算法。本专利对于采用了其他熵编码算法的情况同样适用。
在大多数传统的压缩算法中,压缩率取决于数据窗口的大小,而数据窗口的大小受RAM容量的限制。为了保持性能,传统的技术必须对数据流进行小规模的处理,这将降低压缩率。
例如,2MB数据窗口一次看不到2MB以外的流数据,因此压缩算法无法合并窗口内外的数据,即使它们相似且可压缩。窗口比例限制压缩率。
此外,现实中常见多个数据流,例如3D电影的双摄像机视频数据,每道数据流都以GB、TB计。这些数据流可能具有相似性,理论上可以压缩。但是,由于小数据窗口只能看到一道数据流的一小部分,无法同时看到更多的流,也就不能把它们合并压缩。
从理论分类的角度看,当前的无损压缩数学模型和方法可以分为如下3种类型:
1)基于概率统计的压缩,例如哈夫曼编码、算术编码等。这一类型中,基于马可夫链模型的PPM(PartialPredictionMatch,部分预测匹配)算法具有良好的压缩率。
2)基于字典索引的压缩,例如LZ77/LZSS算法、LZ78/LZW算法等。LZ系列的压缩模型具有速度上的优势。
3)基于符号的顺序和重复情况的压缩,例如游程编码、BWT(Burrows-Wheeler转换)编码等。
当前流行的压缩软件是以上基础压缩理论的复合应用。每种软件通常整合不同的压缩模型和方法来达到更好的效果。下面列举了一些流行压缩软件的特点:
1)软件名称:WinZip
压缩格式:Deflat;
基本算法:LZSS&Huffman编码;
数据窗口大小上限:512KB;
不足之处:数据窗口小;压缩率低;大数据支持能力弱。
2)软件名称:WinRAR
压缩格式:RAR;
基本算法:LZSS&Huffman编码;
数据窗口大小上限:4MB;
不足之处:数据窗口小;压缩率低;大数据支持能力弱。
3)软件名称:Bzip2
压缩格式:BZ2;
基本算法:BWT&Huffman编码;
数据窗口(数据块)大小上限:900KB;
不足之处:BWT数据块小;压缩率低;大数据支持能力弱。
4)软件名称:7-zip
压缩格式:7z;
基本算法:LZSS&算术编码(区间编码与算术编码本质相同);
数据窗口大小上限:4GB;
不足之处:数据窗口较小;有限的大数据支持能力。
还有其他压缩软件,例如PAQ、WinUDA等。它们可能有较高的压缩率,但速度较慢,不适合大数据压缩。
综上所述,现有的数据无损压缩技术要么速度慢,不适合进行GB级、TB级甚至更多的大数据压缩,要么数据窗口较小,导致压缩率偏低。更进一步的问题在于,上述的现有技术、压缩软件都不具备处理多道数据流压缩的能力,都是一道接一道数据流依次压缩的,也就不能把相似的多道数据流合并压缩。即使现有技术能把数据窗口大小提升到GB级,由于现实中常见一道原始视频数据流就超过几十GB,仍然无法把多道数据流同时容纳在一个数据窗口中,做不到合并压缩。
发明内容
为了解决上述技术问题之一,本发明的目的是提供一种多道数据流的阵列编码装置和方法、阵列解码装置和方法。
本发明所采用的技术方案是:
一种多道数据流的阵列编码装置,包括:
动态映射仲裁器,用于将X道原始数据流动态映射为N道队列数据流,将所述N道队列数据流分割成多个数据块,并将所述数据块发送给数据块阵列缓冲区;
数据块阵列缓冲区,用于缓存由N道队列数据流分割出来的所述数据块,并将所述数据块发送给多路选择器;
多路选择器,用于对多个所述数据块进行N对1选择及重排输出,获得混合数据块,将所述混合数据块连接成混合数据流发送给压缩编码***进行压缩;
其中,X、N为正整数。
进一步,所述压缩编码***包括:
广义数据窗口,用于缓存所述混合数据流,以及将所述混合数据流发送给压缩编码器进行数据压缩;
压缩编码器,用于对所述混合数据流进行压缩,输出已压缩的二进制数据流。
本发明所采用的另一技术方案是:
一种多道数据流的阵列编码方法,包括以下步骤:
将X道原始数据流动态映射为N道队列数据流,将所述N道队列数据流分割成多个数据块;
对多个所述数据块进行N对1选择及重排输出,获得混合数据块,将所述混合数据块连接成混合数据流发送给压缩编码***进行压缩;
其中,X、N为正整数。
进一步,所述数据块包括头部信息和数据体;
所述头部信息的字节长度固定,所述头部信息包括数据体长度L、原始数据流编号NUM以及原始数据流中止标志E;
所述数据体为从所述原始数据流中按照串行数据的顺序分割出来的单块数据,长度为L。
进一步,所述将所述N道队列数据流分割成多个数据块,包括:
按照预设字节阈值将所述N道队列数据流进行分割,获得多个数据体;
获取头部信息,根据所述头部信息和分割获得的数据体生成数据块。
进一步,所述阵列式编码方法还包括以下步骤:
对所述混合数据流进行压缩,输出压缩后的二进制数据流。
本发明所采用的另一技术方案是:
一种多道数据流的阵列解码装置,包括:
缓冲区,用于缓存由压缩解码***解压后发送过来的混合数据流,并将所述混合数据流发送给数据块分发器;
数据块分发器,用于把缓冲区中的混合数据流分割成多个数据块,并将所述数据块分发到X道原始数据流中。
进一步,所述压缩解码***包括:
压缩解码器,对已压缩的二进制数据流进行解压缩,输出还原出来的混合数据流。
本发明所采用的另一技术方案是:
一种多道数据流的阵列编码方法,包括以下步骤:
将接收到由解压获得的混合数据流分割成多个数据块,并将所述数据块分发到X道原始数据流中。
进一步,所述将接收到由解压获得的混合数据流分割成多个数据块,并将所述数据块分发到X道原始数据流中,包括:
根据所述数据块的头部信息对所述混合数据流进行分割,获得多个所述数据块;
对所述数据块重新编排,以及去掉所述头部信息后,将所述数据块分发并输出到X道原始数据流中;
其中,所述头部信息包括数据体长度L、原始数据流编号NUM以及原始数据流中止标志E。
本发明的有益效果是:本发明可以做到保持数据窗口大小不变的情况下,同时对多道数据流进行合并压缩,既利用了数据流内部的相似信息,又利用了数据流之间的相似信息,从而提高压缩率和压缩速度。
附图说明
为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本方明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1是本发明实施例中一种多道数据流的阵列式压缩编码***的编码部分的示意图;
图2是本发明实施例中一种多道数据流的阵列式压缩编码***的解码部分的示意图;
图3是本发明实施例中一种多道数据流的阵列式压缩编码方法的编码部分的示意图;
图4是本发明实施例中一种多道数据流的阵列式压缩编码方法的编码部分的流程图;
图5是本发明实施例中一种多道数据流的阵列式压缩编码方法的解码部分的示意图;
图6是本发明实施例中一种多道数据流的阵列式压缩编码方法的解码部分的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
本实施例提供一种多道数据流的阵列式压缩编码***,分为编码部分和解码部分,编码部分包括串联的阵列编码装置和压缩编码***,解码部分包括串联的阵列解码装置和压缩解码***,其中:
该阵列编码装置设置在压缩编码***的前端,阵列解码装置设置在压缩解码***的末端。其中,阵列编码装置用于把X道原始数据流整合成1道混合数据流,阵列解码装置用于把1道混合数据流分解还原成X道原始数据流,这种阵列编码、解码过程分别完成数据块分割、重组,并按照特定的顺序进行数据块的写入、读出。
编码部分包含有特定功能部件,包括动态映射仲裁器、数据块阵列缓冲区、多路选择器、压缩编码器、广义数据窗口。
解码部分包含有特定功能部件,包括压缩解码器、缓冲区、数据块分发器。
如图1所示,一种多道数据流的阵列式压缩编码***的编码部分,包括串联的阵列编码器(即阵列编码器装置)101和压缩编码***102,所述的阵列编码器101包含特定功能部件动态映射仲裁器104、数据块阵列缓冲区105、多路选择器106,所述的压缩编码***102包含特定功能部件广义数据窗口107、压缩编码器108,其中:
动态映射仲裁器104,用于把X道原始数据流动态映射为N道队列数据流,分割成一个个数据块并提供给数据块阵列缓冲区105。
数据块阵列缓冲区105,用于缓存N道队列数据流分割出来的一个个数据块,并提供给多路选择器106。
多路选择器106,用于对一个个分割好的数据块进行N对1选择、重排输出,形成混合数据块,并连接成混合数据流提供给压缩编码***102。
广义数据窗口107,用于缓存混合数据流,提供给压缩编码器108进行数据压缩。具体的广义数据窗口功能与采用的压缩编码算法有关,例如BWT编码中的BWT数据块、LZ77编码中的滑动窗口都是广义数据窗口(本实施例仅涉及新增加的阵列编码装置及其与压缩编码***部分的连接方式,不涉及具体压缩算法)。
压缩编码器108,用于对广义数据窗口107中的数据进行压缩,输出已压缩的二进制数据流。压缩编码器108可以采用任意压缩编码算法及其组合。压缩编码器可以采用任意压缩编码算法及其组合,例如LZ系列编码、算术编码(本实施例不涉及具体压缩算法)。
如图2所示,一种多道数据流的阵列式压缩编码***的解码部分,包括串联的阵列解码器(即阵列解码装置)201和压缩解码***202,所述的阵列解码器201包含特定功能部件缓冲区203、数据块分发器204,其中:
缓冲区203,用于缓存混合数据流,并提供给数据块分发器204。
数据块分发器204,用于把缓冲区203中的混合数据流分割成一个个数据块,并分发到X道原始数据流中。
压缩解码***202,用于对已压缩的二进制数据流进行解压缩,输出还原出来的混合数据流,提供给阵列解码器201。压缩解码***202所采用的解压缩算法与压缩编码***102采用的压缩算法相对应(本实施例不涉及具体解压缩算法)。
本实施例还提供了一种多道数据流的阵列式压缩编码方法,包括编码部分和解码部分。
如图3所示,一种多道数据流的阵列式压缩编码方法的编码部分,包含以下实现方式的组合:
压缩编码***102前端增加一个阵列编码器101,其中压缩编码***102包含广义数据窗口107。
压缩编码***102前端增加阵列编码器101,将X道原始数据流Stream动态映射成N道队列数据流Row(N>=1),先输入到阵列编码器101,经过特定的数据块分割、顺序编排之后输出成为1道混合数据流Mix,再输入到压缩编码***102中进行压缩,输出压缩的二进制数据流Bin。N道队列数据流Row(N>=1)中的N是指阵列编码器当前进行混合的数据流数目,是一个可调参数;实际要编码的原始数据流Stream数目X可以大于、等于或小于N,并且X值可以实时增加(当有新的原始数据流Stream出现)或减少(当有原始数据流Stream输入结束);阵列编码器采用特定编码算法,能够支持X值的变化,包括X<N的情况。
N道队列数据流Row与实际的X道原始数据流Stream具有动态的临时映射关系。在阵列编码器101及其特定编码算法的控制下,X道原始数据流Stream实际上形成N道队列数据流Row输入到阵列编码器101。
特定编码算法先把N道队列数据流Row分别分割成大小等于或小于H+D(字节)的数据块103,数据块103包括特定的头部信息(长度为H)和数据体(长度不超过D)两部分,然后把数据块103按照特定的顺序重新编排,组成1道混合数据流Mix。
所述数据块103包括特定的头部信息和数据体两部分,其中:
数据块头部信息长度为固定的H(字节),包括3个整数数字,分别是该数据体的实际长度L(字节)、该数据块在X道原始数据流中的流编号NUM(编号可循环使用)、该数据块所在原始数据流是否中止的标志E(0表示数据流未中止,1表示数据流到这个数据块为止)。
数据体是指从原始数据流中按照串行数据的顺序分割出来的单块数据,长度为L(L<=D)。数据体即数据块103中的有效载荷。
如图4所示,上述编码部分阵列编码器采用的特定编码算法包括如下步骤:
(A1)初始化,完成如下步骤:
(A1.1)N道队列数据流均设为空,即第i道队列数据流(0<=i<N)的数据块长度L[i]=0。
(A1.2)保存原始数据流的编号,置StreamNum[j]=j(0<=j<X)。
(A1.3)设置原始数据流计数器C=min(N,X)。
(A1.4)把X道原始数据流Stream之中的开头C道,依次映射到N道队列数据流Row上,即Stream[i]Row[i],NUM[i]=StreamNum[i](0<=i<C)。对于C<=j<X的第j道原始数据流Stream[j],则处于待映射状态。
(A1.5)计时器置0。
(A2)当X道原始数据流Stream未全部输入结束前(判断条件是X>0),进行如下循环:
(A2.1)如果第i道队列数据流映射对应的原始数据流Stream[j]有数据输入(0<=i<C,j=StreamNum[i]),且对应的数据块未满(L[i]<B),则Stream[j]数据存入Row[i]的数据块中,并且要保证L[i]<=B。
(A2.2)如果计时器未超过预先设定的时长T,并且N道队列数据流存在至少1个未满的数据块(L[i]<B),则跳转到(A2.1)继续循环等待原始数据流Stream输入。
(A2.3)按顺序i从0至C-1循环,进行如下步骤:
(A2.3.1)如果L[i]=0,表示第i道队列数据流映射对应的原始数据流Stream[j](j=StreamNum[i])暂时断流,需要置换出去,则进行如下步骤:
(A2.3.1.1)随机取一个待映射状态下的原始数据流Stream[k](C<=k<X)。
(A2.3.1.2)如果已经没有待映射状态的原始数据流,则令k=j。
(A2.3.1.3)把第k道原始数据流Stream[k]与Stream[j]交换位置,即Stream[k]Stream[j],StreamNum[k]StreamNum[j],NUM[i]=StreamNum[k],从而实际上改变Stream[j]row[i]的映射关系。
(A2,3.2)否则(即L[i]>0),执行如下操作:
(A2.3.2.1)如果第i道队列数据流映射对应的原始数据流Stream[j](j=StreamNum[i])已输入结束,则结束标志E[i]=1,否则E[i]=0。
(A2.3.2.2)把第i道队列数据流Row[i]对应的数据块(包括头部信息和数据体)输出到混合数据流Mix中,然后置L[i]=0。
(A2.3.2.3)如果E[i]=1,则要用新的原始数据流取代Stream[j]的输入,执行如下操作:
(A2.3.2.3.1)置E[i]=0。
(A2.3.2.3.2)如果C<X,则执行如下操作:
(A2.3.2.3.2.1)第C道和第j道原始数据流交换位置,即Stream[C]Stream[j],StreamNum[C]StreamNum[j],NUM[i]=StreamNum[j],从而实际上改变Stream[j]Row[i]的映射关系。
(A2.3.2.3.2.2)令C=C+1。
(A2.3.2.3.3)否则(即C>=X),令X=X-1,然后第X道和第j道原始数据流交换位置,即Stream[X]Stream[j],StreamNum[X]StreamNum[j],NUM[i]=StreamNum[j],从而实际上改变Stream[j]Row[i]的映射关系。
(A2.4)如果有新的原始数据流加入,则执行如下操作:
(A2.4.1)新数据流置为Stream[X],StreamNum[X]=X(数据流编号回收利用)。
(A2.4.2)如果X<N,则重新建立映射关系Stream[X]Row[X],NUM[X]=StreamNum[X],然后令C=C+1。
(A2.4.3)置X=X+1。
(A2.5)计时器置0,继续步骤(a2)的循环。
(A3)当从步骤(A2)的循环中退出时,所有原始数据流Stream都已结束,所有数据块已形成混合数据流Mix,并从阵列编码器输出到压缩编码***中。阵列编码算法结束。
如图5所示,一种多道数据流的阵列式压缩编码方法的解码部分,包含以下实现方式的组合:
压缩解码***202末端增加一个阵列解码器201,其中阵列解码器201包含缓冲区203。
所述压缩解码***202末端增加阵列解码器201,是指压缩的二进制数据流Bin先输入到压缩解码***202,经过解压之后输出成为1道混合数据流Mix,再输入到阵列解码器201,经过特定的数据块分割、顺序重排之后输出成为X道还原出来的原始数据流Stream。
1道混合数据流Mix在阵列解码器201及其特定解码算法的控制下,分割出来的数据块103实际上分发、输出到X道原始数据流Stream中。
所述特定解码算法先把1道混合数据流Mix分割成大小等于或小于H+D的数据块103,分割的依据是数据块103头部的信息H,然后把数据块103按照特定的顺序重新编排,去掉头部信息H,并分发、输出到X道原始数据流中。
如图6所示,上述解码部分阵列解码器采用的特定解码算法包括如下步骤:
(B1)初始化,完成如下步骤:
(B1.1)为1道混合数据流Mix设置输入缓冲区Buf,缓冲区长度不小于H+B(字节)。Buf初始状态为空。
(B1.2)X道原始数据流Stream[i]设置为空(0<=i<X)。
(B2)当混合数据流Mix未结束之前,进行如下循环:
(B2.1)混合数据流Mix输入到缓冲区Buf,直至缓冲区Buf中数据长度不小于H+D(字节)。
(B2.2)根据缓冲区Buf中前面H字节的数据块头部信息,抽取当前数据块参数,包括数据体长度L、原始数据流编号NUM、原始数据流中止标志E。
(B2.3)从缓冲区Buf截取前H+L字节作为当前数据块,其中前H字节为头部信息,接着L字节为数据体。
(B2.4)如果NUM>=X,则执行如下操作:
(B2.4.1)初始化原始数据流,把原始数据流Stream[i]设置为空(X<=i<NUM)。
(B2.4.2)置X=NUM+1。
(B2.5)把数据体的L字节输出到原始数据流Stream[NUM]。
(B2.6)如果E=1,则原始数据流Stream[NUM]结束并清空。
(B2.7)清除缓冲区Buf前H+L字节的数据块,继续步骤(B2)的循环。
(B3)当从步骤(B2)的循环中退出时,混合数据流Mix输入已结束,所有数据块已分发、形成X道原始数据流Stream,并从阵列解码器输出。阵列解码算法结束。
综上所述,本实施例的阵列式压缩编码方法和***,可以做到保持数据窗口大小不变的情况下,同时对多道数据流进行合并压缩,既利用了数据流内部的相似信息,又利用了数据流之间的相似信息,从而提高压缩率和压缩速度。
例如,使用2MB数据窗口对两道相似的数据流进行压缩,每道数据流大约1GB,则使用了本专利的阵列式压缩编码,相比没有使用本专利而采用传统压缩编码,压缩率最多可以提高接近50%,相当于只压缩一道数据流得到的压缩数据量;而压缩速度也可以因为压缩率的提高而显著提高(例如在数据窗口大小不变的情况下,某些LZ系列压缩编码加上算术编码算法的压缩时间与压缩得到的数据量有近似线性关系)。
可以理解的是,上文中所公开方法中的全部或某些步骤、***可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

Claims (6)

1.一种多道数据流的阵列编码装置,其特征在于,包括:
动态映射仲裁器,用于将X道原始数据流动态映射为N道队列数据流,将所述N道队列数据流分割成多个数据块,并将所述数据块发送给数据块阵列缓冲区;
数据块阵列缓冲区,用于缓存由N道队列数据流分割出来的所述数据块,并将所述数据块发送给多路选择器;
多路选择器,用于对多个所述数据块进行N对1选择及重排输出,获得混合数据块,将所述混合数据块连接成混合数据流发送给压缩编码***进行压缩;
其中,X、N为正整数;
其中,压缩编码***中采用一个压缩编码器进行压缩;
所述压缩编码***包括:
广义数据窗口,用于缓存所述混合数据流,以及将所述混合数据流发送给压缩编码器进行数据压缩;
压缩编码器,用于对所述混合数据流进行压缩,输出已压缩的二进制数据流。
2.一种多道数据流的阵列编码方法,其特征在于,包括以下步骤:
将X道原始数据流动态映射为N道队列数据流,将所述N道队列数据流分割成多个数据块;
对多个所述数据块进行N对1选择及重排输出,获得混合数据块,将所述混合数据块连接成混合数据流发送给压缩编码***进行压缩;
其中,X、N为正整数;
其中,压缩编码***中采用一个压缩编码器进行压缩;
所述数据块包括头部信息和数据体;
所述头部信息的字节长度固定,所述头部信息包括数据体长度L、原始数据流编号NUM以及原始数据流中止标志E;
所述数据体为从所述原始数据流中按照串行数据的顺序分割出来的单块数据,长度为L。
3.根据权利要求2所述的一种多道数据流的阵列编码方法,其特征在于,所述将所述N道队列数据流分割成多个数据块,包括:
按照预设字节阈值将所述N道队列数据流进行分割,获得多个数据体;
获取头部信息,根据所述头部信息和分割获得的数据体生成数据块。
4.根据权利要求2所述的一种多道数据流的阵列编码方法,其特征在于,所述阵列编码方法还包括以下步骤:
对所述混合数据流进行压缩,输出压缩后的二进制数据流。
5.一种多道数据流的阵列解码装置,其特征在于,包括:
缓冲区,用于缓存由压缩解码***解压后发送过来的混合数据流,并将所述混合数据流发送给数据块分发器;
数据块分发器,用于把缓冲区中的混合数据流分割成多个数据块,并将所述数据块分发到X道原始数据流中;
其中,压缩解码***中采用一个压缩解码器进行解压;
所述压缩解码***包括:
压缩解码器,对已压缩的二进制数据流进行解压缩,输出还原出来的混合数据流。
6.一种多道数据流的阵列解码方法,其特征在于,包括以下步骤:
将接收到由解压获得的混合数据流分割成多个数据块,并将所述数据块分发到X道原始数据流中;
其中,解压步骤由一个压缩解码器完成;
所述将接收到由解压获得的混合数据流分割成多个数据块,并将所述数据块分发到X道原始数据流中,包括:
根据所述数据块的头部信息对所述混合数据流进行分割,获得多个所述数据块;
对所述数据块重新编排,以及去掉所述头部信息后,将所述数据块分发并输出到X道原始数据流中;
其中,所述头部信息包括数据体长度L、原始数据流编号NUM以及原始数据流中止标志E。
CN202011116801.6A 2020-10-19 2020-10-19 多道数据流的阵列编码装置和方法、阵列解码装置和方法 Active CN112290953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011116801.6A CN112290953B (zh) 2020-10-19 2020-10-19 多道数据流的阵列编码装置和方法、阵列解码装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011116801.6A CN112290953B (zh) 2020-10-19 2020-10-19 多道数据流的阵列编码装置和方法、阵列解码装置和方法

Publications (2)

Publication Number Publication Date
CN112290953A CN112290953A (zh) 2021-01-29
CN112290953B true CN112290953B (zh) 2023-05-23

Family

ID=74497520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011116801.6A Active CN112290953B (zh) 2020-10-19 2020-10-19 多道数据流的阵列编码装置和方法、阵列解码装置和方法

Country Status (1)

Country Link
CN (1) CN112290953B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115065732B (zh) * 2022-06-08 2023-08-11 珠海格力电器股份有限公司 数据传输方法、装置、电子设置及存储介质
CN117200805B (zh) * 2023-11-07 2024-02-02 成都万创科技股份有限公司 一种mcu的低内存占用的压缩和解压方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
JP3230933B2 (ja) * 1994-08-19 2001-11-19 株式会社リコー データ伸長装置、データ伸長方法、デコーディング装置、デコーディング方法、エンコーディング装置、及びエントロピー・デコーダ
EP2362657B1 (en) * 2010-02-18 2013-04-24 Research In Motion Limited Parallel entropy coding and decoding methods and devices
CN102904717B (zh) * 2012-10-13 2015-06-03 华南理工大学 利用数据压缩编码的混沌同步加密解密方法及其装置
GB2513110A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding

Also Published As

Publication number Publication date
CN112290953A (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
US11705924B2 (en) Low-latency encoding using a bypass sub-stream and an entropy encoded sub-stream
JP2022526098A (ja) エントロピコーディングにおいて等確率シンボルをハンドリングするための方法およびデバイス
EP0945022B1 (en) Efficient fixed-length block compression and decompression
DE19536401B4 (de) Verfahren und Einrichtung zum Codieren und Decodieren von Daten
WO2019041833A1 (zh) 一种用于深度神经网络的压缩装置
CN112290953B (zh) 多道数据流的阵列编码装置和方法、阵列解码装置和方法
US10187081B1 (en) Dictionary preload for data compression
CN107483059B (zh) 一种基于动态霍夫曼树的多路数据编解码方法及装置
RU2630750C1 (ru) Устройство и способ для кодирования и декодирования исходных данных
CN112514264A (zh) 数据压缩、解压方法及相关装置、电子设备、***
US6668015B1 (en) Efficient fixed-length block compression and decompression
CN102724500B (zh) 一种视频数据的压缩/解压缩方法及***
JPH07212242A (ja) 可変長復号化器
CN101667843B (zh) 嵌入式***的数据压缩、及解压缩方法与装置
JP2831888B2 (ja) Hdtv復号化器
CN110990358A (zh) 一种解压缩方法、电子设备及计算机可读存储介质
US20160366403A1 (en) Adaptive Motion JPEG Encoding Method and System
KR102238091B1 (ko) 3d 모델 압축 및 압축해제 시스템 및 방법
US7796059B2 (en) Fast approximate dynamic Huffman coding with periodic regeneration and precomputing
CN103974090A (zh) 图像编码装置
WO2021103013A1 (zh) 一种数据编码、数据解码方法、设备及存储介质
US10931303B1 (en) Data processing system
WO2024007843A9 (zh) 一种编解码方法、装置及计算机设备
US20240146975A1 (en) Dynamic queuing of entropy-coded data for transmission in a bitstream
WO2023213074A1 (zh) 点云处理方法、装置、设备、存储介质及产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant