JP6613713B2 - データ処理システム及び圧縮デバイス - Google Patents

データ処理システム及び圧縮デバイス Download PDF

Info

Publication number
JP6613713B2
JP6613713B2 JP2015163758A JP2015163758A JP6613713B2 JP 6613713 B2 JP6613713 B2 JP 6613713B2 JP 2015163758 A JP2015163758 A JP 2015163758A JP 2015163758 A JP2015163758 A JP 2015163758A JP 6613713 B2 JP6613713 B2 JP 6613713B2
Authority
JP
Japan
Prior art keywords
data
compression
block
time
unit
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
JP2015163758A
Other languages
English (en)
Other versions
JP2017041834A (ja
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.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
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 Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2015163758A priority Critical patent/JP6613713B2/ja
Publication of JP2017041834A publication Critical patent/JP2017041834A/ja
Application granted granted Critical
Publication of JP6613713B2 publication Critical patent/JP6613713B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本開示は、データを圧縮する及び伸長するデータ処理システムに関する。
従来、デフレート(Deflate)圧縮アルゴリズムに従ってデータ圧縮を行う圧縮デバイス、及び、この圧縮デバイスにより生成された圧縮データを伸長する伸長デバイスが知られている(特許文献1参照)。
デフレート圧縮アルゴリズムは、LZ77及びLZSS圧縮アルゴリズムに代表されるスライド辞書型圧縮アルゴリズムを内包する。スライド辞書型圧縮では、入力文字列が順に符号化される。入力文字列はバッファに一定量記憶保持される。スライド辞書は、バッファに記憶保持される文字列に対応する。符号化対象の文字列がスライド辞書内の文字列と一致する場合、その文字列は、スライド辞書への参照記号に変換されて符号化される。
圧縮アルゴリズムとしては、ハフマン符号を用いた圧縮アルゴリズムも知られている。デフレート圧縮アルゴリズムもハフマン符号を利用する。複数のハフマン符号テーブルを、切り替えて用いる圧縮デバイスも知られている(特許文献2参照)。
国際公開第2015/019484号 国際公開第2010/013290号
従来技術によれば、デフレート圧縮された圧縮データを伸長する場合、符号展開部において圧縮データ内のハフマン符号を復号した後、スライド辞書を参照して復号データ内に含まれるスライド辞書への参照記号を、対応する文字列に伸長する。
しかしながら、ハフマン符号を復号する前段処理部、及び、スライド辞書に基づく伸長を行う後段処理部の内、後段処理部は、前段処理部によって復号されたデータがなければ、スライド辞書に基づく伸長を行うことができない。即ち、従来技術によれば、前段処理部による復号が滞ると、後段処理部による伸長処理も行うことができなくなる。
付言すれば、ハフマン符号を復号する際には、復号に必要なハフマン符号テーブルを生成する前処理が必要である。ハフマン符号化方式としては、固定ハフマン符号化方式とカスタムハフマン符号化方式とが知られている。
周知のように、カスタムハフマン符号化方式により圧縮されたデータの復号に必要な前処理の実行時間は、固定ハフマン符号化方式と比較してかなり長い。従来技術によれば、前処理の実行中には、後段処理部による伸長処理も行えない。このような前処理の非効率な実行は、伸長データの出力を遅延させる原因となる。
そこで、本開示の一側面においては、復号に先立って実行される前処理に起因して伸長データの出力が遅延するのを抑制可能な技術を提供できることが望ましい。
本開示の一側面に係るデータ処理システムは、圧縮対象データをデフレート圧縮することによって、圧縮対象データに対応する圧縮データを生成する圧縮デバイスと、圧縮データを伸長することによって、圧縮データに対応する伸長データを出力する伸長デバイスとを備える。
伸長デバイスは、FIFOバッファと、復号ユニットと、伸長ユニットとを備える。復号ユニットは、圧縮データに含まれるハフマン符号を順次復号して、圧縮データに対応する復号データをFIFOバッファに入力する。伸長ユニットは、FIFOバッファから入力される復号データに対する伸長処理を実行することにより、伸長データを出力する。復号データは、復号ユニットからFIFOバッファへの入力順に、FIFOバッファから伸長ユニットに入力される。
伸長ユニットは、上記伸長処理として、FIFOバッファからの復号データがスライド辞書に対する参照記号を表す場合には、参照記号から特定されるスライド辞書内のデータを伸長データとして出力し、復号データがリテラル値である場合には、リテラル値を伸長データとして出力する処理を実行する。
本開示の一側面において、圧縮デバイスは、圧縮ユニットと、決定ユニットと、前処理時間推定ユニットと、伸長時間推定ユニットとを備えた構成にされる。圧縮ユニットは、圧縮対象データをブロック毎に決定ユニットにより決定された符号化方式でデフレート圧縮する。決定ユニットは、圧縮ユニットによりデフレート圧縮される各ブロックを順に注目ブロックに選択し、注目ブロックの符号化方式を決定する。
決定ユニットは、伸長時間推定ユニットにより推定される、伸長デバイスによる先行ブロックの伸長時間、及び、前処理時間推定ユニットにより推定される、伸長デバイスによる注目ブロックの前処理時間に基づき、注目ブロックの符号化方式を決定する。
前処理時間推定ユニットは、決定ユニットが注目ブロックの符号化方式をカスタムハフマン符号化方式に決定して、これにより圧縮ユニットが注目ブロックをカスタムハフマン符号化方式によりデフレート圧縮した場合における、伸長デバイスによる注目ブロックの前処理時間を推定する。ここで推定される注目ブロックの前処理時間は、伸長デバイスにおいて注目ブロックの復号の開始前に実行される注目ブロックの前処理であって注目ブロックの前に復号される先行ブロックの復号完了後に実行される前処理の実行時間である。
伸長時間推定ユニットは、上記先行ブロックの伸長時間として、伸長デバイスによる先行ブロックの復号完了時点から先行ブロックに対する伸長処理が完了するまでに要する時間を推定する。
上述の決定ユニットは、この伸長時間推定ユニットにより推定された先行ブロックの伸長時間が前処理時間推定ユニットにより推定された注目ブロックの前処理時間より長い場合には、注目ブロックの符号化方式をカスタムハフマン符号化方式に決定し、先行ブロックの伸長時間が注目ブロックの前処理時間より短い場合には、注目ブロックの符号化方式を固定ハフマン符号化方式に決定するようにして、注目ブロックの符号化方式を決定する。
カスタムハフマン符号化方式では、固定ハフマン符号化方式より通常高いデータ圧縮率を得ることができる。但し、カスタムハフマン符号化方式により圧縮されたデータの復号に必要な前処理の実行時間は、固定ハフマン符号化方式により圧縮されたデータの復号に必要な前処理の実行時間よりかなり長い。そこで、本開示の一側面では、先行ブロックの伸長時間及び注目ブロックの前処理時間に基づき、注目ブロックの符号化方式を選択する。
本開示の一側面では、伸長デバイスがFIFOバッファを備えるので、復号ユニットから伸長ユニットに向けての復号データの提供が一時的に滞っても、伸長ユニットでは、FIFOバッファに蓄積された復号データに基づく伸長処理を実行することができる。しかしながら、復号の前処理に時間を要すると、FIFOバッファ内の復号データを伸長ユニットが伸長し終わった後もなお、復号ユニットによる復号が始まらないことになる。
このような事象は、先行ブロックの伸長時間が注目ブロックの前処理時間より短い場合に生じる。先行ブロックの伸長時間が注目ブロックの前処理時間より短い場合には、先行ブロックの伸長が終わるまでに、前処理が終わらず後続ブロックの復号が始まらないため、伸長ユニットで、復号ユニットからの復号データの待ち動作が発生することになる。このような待ち動作は、非効率な伸長の原因となり、伸長データの出力に遅延を生じさせる。
本開示の一側面では、こうした非効率な伸長を抑えるために、データ圧縮の符号化方式を選択している。従って、本開示の一側面に係るデータ処理システムによれば、復号に先立って実行される前処理に起因して伸長データの出力が遅延するのを抑制することできる。
本開示の一側面において、データ処理システムは、分割ユニットと、圧縮ユニットと、前処理時間推定ユニットと、伸長時間推定ユニットとを備える圧縮デバイス、を備えた構成にされてもよい。
この圧縮デバイスにおいて、分割ユニットは、圧縮対象データをブロック化する。圧縮ユニットは、圧縮対象データをブロック毎にカスタムハフマン符号化方式によりデフレート圧縮する。前処理時間推定ユニットは、圧縮ユニットがデフレート圧縮している圧縮対象データ内の位置である圧縮位置において分割ユニットが圧縮対象データを分割し、当該分割によって圧縮対象データ内の分割位置より前に位置する先行ブロックのデフレート圧縮を圧縮ユニットが終了し、分割位置より後に位置する後続ブロックのデフレート圧縮を圧縮ユニットが開始した場合における、伸長デバイスによる後続ブロックの前処理時間を推定する。ここで推定される後続ブロックの前処理時間は、伸長デバイスにおいて後続ブロックの復号の開始前に実行される後続ブロックの前処理であって先行ブロックの復号完了後に実行される前処理の実行時間である。
伸長時間推定ユニットは、伸長デバイスによる先行ブロックの復号完了時点から先行ブロックに対する伸長処理が完了するまでに要する時間である先行ブロックの伸長時間を推定する。
この圧縮デバイスにおいて、分割ユニットは、先行ブロックの伸長時間及び後続ブロックの前処理時間に基づき、伸長時間と前処理時間との差が所定条件を満足しない場合には、圧縮位置で圧縮対象データを分割せず、所定条件を満足する場合に、圧縮位置で圧縮対象データを分割してブロック化するように構成される。圧縮ユニットは、分割ユニットが圧縮対象データを分割した場合には、先行ブロックのデフレート圧縮を終了し、後続ブロックのデフレート圧縮を開始するように構成される。
本開示の一側面において、分割ユニットは、伸長時間が前処理時間未満である場合には、差が上記所定条件を満足しないと判定して、圧縮位置で圧縮対象データを分割せず、伸長時間が前処理時間以上である場合には、差が所定条件を満足すると判定して、圧縮位置で圧縮対象データを分割してブロック化するように構成にされる。
伸長時間と前処理時間とが同一である場合には、前処理のために復号ユニットからFIFOバッファへの復号データの入力が停止したときに、伸長ユニットがFIFOバッファに蓄積された復号データに対する伸長処理を完了するタイミングで、復号ユニットにおける前処理の実行が終了して復号データのFIFOバッファへの入力が再開される。
換言すれば、伸長時間が前処理時間未満であるときには、復号ユニットにおいて前処理の実行が終了するまでの期間に、伸長ユニットで伸長処理が完了し、復号データの待ち動作が発生することになる。このような待ち動作は、非効率な伸長の原因となり、伸長データの出力に遅延を生じさせる。
上述した圧縮デバイスによれば、このような待ち動作の発生を抑えるように、圧縮対象データをデフレート圧縮することができる。従って、復号の前処理に起因して伸長データの出力が遅延するのを抑制することができる。
ところで、前処理時間は、前処理の実行後に開始される復号に際して用いられるカスタムハフマン符号テーブルのサイズ、即ち、カスタムハフマン符号テーブルにおける符号割当数によって変化し得る。
従って、本開示の一側面によれば、前処理時間推定ユニットは、前処理時間を、前処理の実行後に開始される復号に際して用いられるカスタムハフマン符号テーブルの符号割当数に基づき推定するように構成されてもよい。このように構成された前処理時間推定ユニットによれば、より正確に前処理時間を推定可能である。
本開示の一側面において、伸長時間推定ユニットは、先行ブロックの文字数と、先行ブロックの復号に要する時間を特定可能な先行ブロックに含まれるリテラル値の数及び参照記号の数と、に基づき、伸長時間を推定するように構成されてもよい。こうした伸長時間の推定方法によれば、伸長前のデータ圧縮時において、適切に伸長時間を推定することができる。本開示の一側面によれば、上述した圧縮デバイス及び伸長デバイスは、夫々個別に提供されてもよい。
電子機器の構成を表すブロック図である。 図2Aは、圧縮デバイスの構成を表すブロック図であり、図2Bは、伸長デバイスの構成を表すブロック図である。 圧縮データの概略構成を表す図である。 符号展開部から文字解決部へのデータ転送を説明した図である。 第一実施例における圧縮処理を表すフローチャート(その1)である。 第一実施例における圧縮処理を表すフローチャート(その2)である。 前処理時間の算出方法に関する説明図である。 図8A−8Cは、符号化方式の切り替えと待ち動作との関係を説明した図である。 第二実施例における圧縮処理の後半を表すフローチャートである。 ブロック終端位置と待ち動作との関係を説明した図である。
以下に本発明の実施形態を図面と共に説明する。
[第一実施例]
本実施例の電子機器1は、メインデバイス10と、圧縮伸長デバイス30と、記憶デバイス90とを備える。メインデバイス10は、CPU11と、ROM13と、RAM15とを備える。ROM13は、CPU11が実行する各種プログラムを記憶する。RAM15は、プログラム実行時に作業領域として使用される。CPU11は、電子機器1全体を統括制御する。
電子機器1は、例えばディジタル複合機として構成される。この場合、メインデバイス10は、電子機器1が備える図示しないスキャナ装置を制御して、原稿の読取画像を表す画像データを生成するための読取処理を実行する。更に、メインデバイス10は、電子機器1が備える図示しないプリンタ装置を制御して、原稿の読取画像を表す画像データ又は外部装置から提供された印刷対象データに基づく画像を用紙に形成するための印刷処理を実行する。
圧縮伸長デバイス30は、圧縮デバイス50と、伸長デバイス70とを備え、データの圧縮及び伸長を行うように構成される。圧縮デバイス50は、電子機器1内で生成された圧縮対象データを圧縮するように構成される。圧縮後のデータである圧縮データは、記憶デバイス90に保存される。あるいは、圧縮データは、外部装置に通信により提供される。記憶デバイス90は、例えばハードディスク装置又はフラッシュメモリで構成される。
伸長デバイス70は、外部装置から入力される圧縮データ、又は、記憶デバイス90が記憶する圧縮データを伸長するように構成される。圧縮データを伸長して生成される伸長データは、メインデバイス10に提供される。電子機器1がディジタル複合機である場合、伸長データは、例えばメインデバイス10により実行される印刷処理に供される。
本実施例の圧縮デバイス50は、圧縮対象データをデフレート圧縮するように構成される。周知のようにデフレート圧縮は、LZ77又はLZ77系のLZSSとハフマン符号化とを組み合わせた可逆データ圧縮である。この圧縮方式は、zipファイル及びgzipファイルに採用されている。
LZ77又はLZSSは、同じ文字列が再登場した場合には、同一文字列を、D文字戻ってL文字コピーするというコピー記号[L,D]を用いて符号化するスライド辞書型の圧縮方式である。以下では、LZ77系に基づくデータ圧縮のことを辞書型圧縮と表現し、ハフマン符号化によるデータ圧縮のことをハフマン符号圧縮と表現する。
圧縮デバイス50は、図2Aに示すように第一圧縮部51と、出現頻度テーブル53と、第二圧縮部55とを備え、第一圧縮部51が圧縮対象データの辞書型圧縮を行うように構成される。第一圧縮部51は、圧縮対象データとして入力される文字列を入力順に符号化する。入力文字列は、バッファとしてのスライド辞書51Aに一定量記憶保持される。
第一圧縮部51は、入力文字列がスライド辞書51A内の文字列と一致しない場合には、入力文字列をそのままリテラル値として出力し、入力文字列がスライド辞書51A内の文字列と一致する場合には、その文字列をコピー記号に置換するようにして、入力文字列を符号化して出力する。コピー記号は、スライド辞書51Aへの参照記号に対応する。第一圧縮部51からの出力データは、圧縮対象データに対応する中間データとして、第二圧縮部55に入力される。中間データは、圧縮対象データに対応するリテラル値及びコピー記号を含む。
第二圧縮部55は、第一圧縮部51から入力される中間データをハフマン符号化して、これを圧縮データとして出力する。第二圧縮部55は、入力される中間データを、ブロック毎に符号化方式を切り替えて圧縮する。符号化方式は、非圧縮方式、固定ハフマン符号化方式、及び、カスタムハフマン符号化方式を含む。
非圧縮方式により圧縮データを生成する場合、第二圧縮部55は、中間データをハフマン符号化せずに圧縮データ(非圧縮ブロック)として出力する。固定ハフマン符号化方式により圧縮データを生成する場合、第二圧縮部55は、固定ハフマン符号テーブルに従って中間データをハフマン符号化して、ハフマン符号化後の中間データを圧縮データ(固定ハフマン符号ブロック)として出力する。
カスタムハフマン符号化方式により圧縮データを生成する場合、第二圧縮部55は、出現頻度テーブル53に従ってブロック毎に動的なハフマン符号テーブルであるカスタムハフマン符号テーブルを生成する。第二圧縮部55は、中間データを、このカスタムハフマン符号テーブルに従ってハフマン符号化し、ハフマン符号化後の中間データを圧縮データ(カスタムハフマン符号ブロック)として出力する。
圧縮デバイス50が備える出現頻度テーブル53は、圧縮対象データにおける各文字の出現頻度を表す。第一圧縮部51は、入力文字列を処理する際、出現頻度テーブル53を更新するように動作する。
このように構成される圧縮デバイス50からは、図3に例示される構造の圧縮データが出力される。圧縮デバイス50がブロック毎に符号化方式を切り替えることから、圧縮データは、非圧縮ブロック、固定ハフマン符号ブロック、及び、カスタムハフマン符号ブロックが混在した構成にされる。図3に示される破線は、破線の先端に示される部分が、破線の後端に示される固定ハフマン符号ブロックの続きであることを意味している。
カスタムハフマン符号の復号に際しては、ハフマン符号と符号化前の文字(平文)との対応関係を表すカスタムハフマン符号テーブルが必要である。符号化前文字は、本実施例の場合、中間データに含まれるリテラル値及びコピー記号である。
圧縮データにおいて、カスタムハフマン符号ブロックの前には、カスタムハフマン符号の復号に必要なカスタムハフマン符号テーブルを生成するための前処理データが含まれる。固定ハフマン符号ブロックの前にも前処理データが含まれるが、固定ハフマン符号ブロックの前に含まれる前処理データは、カスタムハフマン符号ブロックの前に含まれる前処理データに対して僅かであるため、ここでは、図示を省略する。
このような構成の圧縮データを伸長する伸長デバイス70は、分岐部71と、前処理部73と、テーブル記憶部74と、符号展開部76と、FIFOバッファ77と、文字解決部79とを備える。FIFOバッファ77は、周知のようにFirst−in,First−out型のバッファであり、入力データを、その入力順に出力するバッファである。
分岐部71には、伸長対象の圧縮データを構成するコード列が順に入力される。分岐部71は、入力されるコード列が前処理データに対応するか否かを判断し、入力されるコード列が前処理データに対応する場合には、前処理部73にコード列を入力する。
分岐部71は、入力されるコード列が前処理データ以外の復号対象データ、即ち、非圧縮ブロック、固定ハフマン符号ブロック、及びカスタムハフマン符号ブロックのいずれかに対応する場合には、符号展開部76にコード列を入力する。
前処理部73は、入力されるコード列としての前処理データに基づき、ハフマン符号の復号に先立つ前処理として、カスタムハフマン符号テーブル又は固定ハフマン符号テーブルを生成する処理を実行し、生成したハフマン符号テーブルをテーブル記憶部74に記憶させる。
前処理部73は、カスタムハフマン符号ブロックに先立って入力される前処理データに基づき、このカスタムハフマン符号ブロックの復号に必要なカスタムハフマン符号テーブルを作成してテーブル記憶部74に記憶させる。前処理部73は、固定ハフマン符号ブロックに先立って入力される前処理データに基づき、固定ハフマン符号ブロックの復号に必要な固定ハフマン符号テーブルを作成してテーブル記憶部74に記憶させる。
符号展開部76は、分岐部71から入力されるコード列をテーブル記憶部74が記憶するハフマン符号テーブルに基づき順に復号し、復号データを、FIFOバッファ77に入力する。符号展開部76は、入力されるコード列が非圧縮ブロックに対応する場合には、その入力コード列を復号データとしてFIFOバッファ77に入力する。符号展開部76は、入力されるコード列が固定ハフマン符号ブロック又はカスタムハフマン符号ブロックに対応する場合には、その入力コード列(ハフマン符号)を復号し、その復号データを、FIFOバッファ77に入力する。
復号データは、圧縮デバイス50において第一圧縮部51から第二圧縮部55に入力される中間データに対応する。復号データは、リテラル値及びコピー記号を含む。コピー記号は、文字解決部79で復号される。
本実施例の符号展開部76は、コピー記号を、コピー記号のまま文字解決部79に入力するのが特徴的である。従来装置は、コピー記号を、コピー長Lに対応する文字数の未解決文字として文字解決部79に入力するように構成される。
本実施例では、文字解決部79での待ち動作を抑えるために、FIFOバッファ77を設けている。このFIFOバッファ77に、コピー記号を展開してコピー長L分の未解決文字を入力することは、FIFOバッファ77による文字解決部79での待ち動作の抑制効果を低減させる。FIFOバッファ77が未解決文字で大部分を埋め尽くされてしまう可能性があるためである。
本実施例では、図4に示すように、コピー記号を、そのままFIFOバッファ77に入力し、このコピー記号を文字解決部79に復号させることにより、FIFOバッファ77の効率的な利用を実現している。図4に示すように、符号展開部76からは、非圧縮データ又はハフマン符号テーブルを用いた復号により生成されたリテラル値及びコピー記号が処理順にFIFOバッファ77に入力される。FIFOバッファ77は、例えば、256から1024文字(バイト)分の記憶容量を有した構成にされる。
文字解決部79は、スライド辞書79A(図2参照)を有する。文字解決部79は、復号データに対する伸長処理として、FIFOバッファ77からの復号データがコピー記号を表す場合には、コピー記号が示すコピー長L及び戻り距離Dから特定されるスライド辞書79A内の文字列を伸長データとして出力し、復号データがリテラル値である場合には、復号データが表すリテラル値(平文)をそのまま伸長データとして出力する処理を実行するように構成される。
このようにして、伸長デバイス70は、デフレート圧縮された圧縮データに含まれるハフマン符号を復号し、その復号データに含まれるコピー記号をスライド辞書79Aに基づき伸長するようにして、圧縮データに対応する伸長データを出力する。文字解決部79が備えるスライド辞書79Aには、伸長データが一定量記憶される。
続いて、圧縮デバイス50が実行する圧縮処理の詳細を、図5及び図6を用いて説明する。図5に示される圧縮処理の前段は、図2Aに示す圧縮デバイス50の第一圧縮部51によって実現され、図6に示される圧縮処理の後段は、圧縮デバイス50が有する第二圧縮部55によって実現される。
圧縮デバイス50は、圧縮処理を開始すると、圧縮対象データを所定規則により分割して定義される圧縮対象データ内のブロック毎に、S110〜S170の処理を実行する。圧縮デバイス50は、圧縮処理を開始すると、先頭から順に入力される圧縮対象データを構成する文字列の一文字を受け付ける(S110)。そして、今回受け付けた文字から、それより前において連続する文字の一群によって構成される文字列と一致する文字列をスライド辞書51A内で検索する(S120)。
そして、スライド辞書51A内に一致する文字列がある場合には(S130でYes)、S140に移行し、スライド辞書51A内の文字列に一致する文字列がない場合には、S160に移行する。
S140において、圧縮デバイス50は、今回受け付けた文字が圧縮対象データにおける処理対象ブロックの終端文字又は圧縮対象データの終端文字であるか否かを判断する。処理対象ブロックは、今回受け付けた文字が所属するブロックに対応する。圧縮デバイス50は、上記終端文字であると判断すると(S140でYes)、S160に移行し、終端文字ではないと判断すると(S140でNo)、S150に移行する。
S150において、圧縮デバイス50は、一致文字列が最大長であるか否かを判断する。即ち、一致文字列の長さが、コピー長Lの最大値であるか否かを判断する。一致文字列が最大長であると判断すると(S150でYes)、圧縮デバイス50は、S160に移行する。圧縮デバイス50は、一致文字列が最大長ではないと判断すると(S150でNo)、S110に移行し、次の文字を受け付けてS120以降の処理を実行する。
S160に移行すると、圧縮デバイス50は、前回の受け付け文字までにおいて、スライド辞書51A内の文字列と一致する文字列であってコピー記号に未変換の文字列をコピー記号に変換するように、処理対象ブロックの入力文字列を符号化する。即ち、該当する入力文字列を辞書型圧縮する。
S160での処理後、圧縮デバイス50は、出現頻度テーブル53が、処理対象ブロックにおける先頭から今回受け付けた文字までの各文字の出現頻度を表すように、出現頻度テーブル53の内容を更新する(S170)。
その後、圧縮デバイス50は、現在の処理位置がブロックの終端又は圧縮対象データの終端であるか否かを判断する(S180)。即ち、今回受け付けた文字がブロックの終端文字又は圧縮対象データの終端文字であるか否かを判断する。そして、現在の処理位置が終端であると判断すると(S180でYes)、処理対象ブロックのS160における変換後のデータを該当ブロックの中間データに決定し、S200に移行する。
S200において、圧縮デバイス50は、処理対象ブロックに対応するカスタムハフマン符号テーブルを、出現頻度テーブル53における各文字の出現頻度から周知技術に従って作成する。
その後、圧縮デバイス50は、処理対象ブロックの中間データをハフマン符号圧縮する必要があるか否かを判断する(S210)。具体的には、処理対象ブロックを固定ハフマン符号化方式及びカスタムハフマン符号化方式のいずれの方式によって符号化しても、符号化後のデータ量が符号化前のデータ量以上である場合には、ハフマン符号圧縮が不要であると判断する。それ以外の場合には、ハフマン符号圧縮が必要であると判断する。
ハフマン符号圧縮が不要であると判断すると(S210でNo)、圧縮デバイス50は、処理対象ブロックの中間データを、ハフマン符号化せずに非圧縮ブロックとして出力する(S220)。その後、S320に移行する。
S210においてハフマン符号圧縮が必要であると判断すると、圧縮デバイス50は、処理対象ブロックの前処理時間Tpを算出する(S230)。算出する前処理時間Tpは、処理対象ブロックをS200にて作成したカスタムハフマン符号テーブルに従ってカスタムハフマン符号化した場合に、伸長デバイス70の前処理部73で要する処理対象ブロックの復号に必要な前処理の実行時間に対応する。即ち、前処理時間Tpは、伸長デバイス70がハフマン符号化された処理対象ブロックの復号の開始前に実行する処理対象ブロックの前処理であって処理対象ブロックの一つ前のブロックである先行ブロックの復号完了後に実行する前処理の実行時間に対応する。
この前処理時間Tpは、カスタムハフマン符号テーブルでの符号割当数N1に基づき算出可能である。カスタムハフマン符号テーブルにおいて全ての文字に符号が割り当てられているときの前処理時間T0を基準にすると、S200で作成されたカスタムハフマン符号テーブルに基づくカスタムハフマン符号の復号に際する前処理時間Tpは、式Tp=T0−K・(N0−N1)に従って算出することができる。ここで、値N0は、カスタムハフマン符号テーブルにおいて全ての文字に符号が割り当てられるときの符号割当数である。係数Kは、カスタムハフマン符号テーブルにおいて、符号割当数が1減少したときの前処理時間の減少量である。
カスタムハフマン符号の復号に先立つ前処理時間Tpは、符号割当数N1が少なくなるほど、減少する。図7には、その矩形枠内にカスタムハフマン符号テーブルにおける符号割当を示す。図7に示される「decode=」に続く数字は、符号化前の文字(平文)の文字番号を表す。文字番号は、0から0xFFまでの値を採る。「length=」に続く数字は、ハフマン符号長を表し、「code=」に続くコードは、上記文字番号に対応する文字に割り当てられたハフマン符号に対応する。カスタムハフマン符号テーブルでは、符号化対象データに現れない文字に対しハフマン符号が割り当てられない。このため、符号化対象データに現れない文字種類数(N0−N1)に対応する時間だけ、前処理時間Tpは短くなる。
前処理時間Tpを算出すると、圧縮デバイス50は次に、処理対象ブロックの一つ前のブロックである先行ブロックの文字数Epを特定する(S240)。先行ブロックの文字数Epは、先行ブロックのコピー記号をコピー長Lに対応する数の文字として取扱ったときの文字数である。即ち、文字数Epは、文字解決部79から出力される先行ブロックに対応する伸長データの文字数であり、辞書型圧縮前の先行ブロックの文字数に対応する。文字数Epの特定は、先行ブロックに対する辞書型圧縮時に文字数をカウントすることで実現することができる。あるいは、文字数Epは、先行ブロックの出現頻度テーブル53に登録された文字数から特定することができる。
更に、圧縮デバイス50は、先行ブロックの復号時間Tdを算出する(S250)。先行ブロックの復号時間Tdは、伸長デバイス70の符号展開部76が先行ブロックの先頭から末尾までの復号に要する時間に対応する。先行ブロックの復号時間Tdは、先行ブロックの中間データに含まれるリテラル値の数α及びコピー記号の数βから特定可能である。
コピー記号は、コピー長L及び戻り距離Dを含み、ハフマン符号時に、2文字分のハフマン符号に変換される。このため、コピー記号に対応するハフマン符号の復号は、リテラル値に対応するハフマン符号の復号よりも2倍の時間を要する。リテラル値に対応するハフマン符号の復号が1サイクルで行われ、コピー記号に対応するハフマン符号の復号が2サイクルで行われる場合には、先行ブロックの復号時間Tdは、式Td=(α+2・β)・Cに従って算出することができる。ここで係数Cは、符号展開部76の動作周期である。上述した1サイクルは、符号展開部76の動作周期に対応する。先行ブロックが非圧縮ブロックであり実質的に復号が必要ではない場合にも、伸長デバイス70の符号展開部76では、動作周期毎に一文字ずつ先行ブロック内の文字がFIFOバッファ77に入力されるため、同様に復号時間Tdが算出される。
S250で先行ブロックの復号時間Tdを算出し終えると、圧縮デバイス50は、先行ブロックの復号終了時の未出力文字数E1を算出する(S260)。ここで言う先行ブロックの復号終了時は、符号展開部76によって先行ブロック終端までの復号が終了する時点に対応する。未出力文字数E1は、符号展開部76での復号が完了したが伸長データとして文字解決部79から出力されていない文字数に対応する。未出力文字数E1は、先行ブロックの復号終了時点におけるFIFOバッファ77内の蓄積データを文字解決部79による伸長後の文字数で換算した値に対応する。
先行ブロックの復号開始時の未出力文字数をE0で表し、文字解決部79による文字出力周期をTcで表すと、先行ブロックの復号終了時の未出力文字数E1は、式E1=E0+Ep−(Td/Tc)に従って、算出することができる。値(Td/Tc)は、先行ブロックの復号開始から終了までの期間において文字解決部79で出力される文字数に対応する。
S260での処理を終えると、圧縮デバイス50は、先行ブロックの復号終了時にFIFOバッファ77に蓄積されているデータを、その後文字解決部79が全て伸長処理して、対応する伸長データを出力するのに要する伸長時間Teを、未出力文字数E1及び文字出力周期Tcに基づいて、式Te=E1・Tcに従い算出する(S270)。
S230からS270までの処理により先行ブロックの伸長時間Te及び処理対象ブロックの前処理時間Tpを算出すると、圧縮デバイス50は、S280に移行し、S270で算出された伸長時間TeがS230で算出された前処理時間Tp以上であるか否かを判断する。ここで、伸長時間Teと前処理時間Tpとの関係について説明する。
伸長時間Teが前処理時間Tp以上である場合には、処理対象ブロックをカスタムハフマン符号化したときの復号に先立つ前処理が、先行ブロックまでの復号によりFIFOバッファ77に蓄積されたデータを文字解決部79が全て出力し終わるタイミングで、又は、そのタイミングよりも前に終了することを意味する。この場合、図8Aに示すように、文字解決部79は、処理対象ブロックに対する伸長処理を実行して伸長データを出力する動作を、先行ブロックの伸長処理の終了後、待ち動作なく効率的に実行することができる。
これに対し、伸長時間Teが前処理時間Tp未満である場合には、処理対象ブロックをカスタムハフマン符号化したときの復号に先立つ前処理の終了タイミングが、FIFOバッファ77に蓄積されたデータを、文字解決部79が伸長データとして全て出力し終わるタイミングよりも後に位置することを意味する。
この場合には、図8Bに示すように、文字解決部79による先行ブロックに対する伸長処理の終了後、処理対象ブロックに対する前処理が終了するまでの期間、FIFOバッファ77が空になる。従って、この期間、文字解決部79は、図8Bのニ点鎖線で示すように、符号展開部76から新たな復号データが提供されるまで待ち状態になる。従って、この場合には、文字解決部79で効率的な伸長処理を実行することができない。
このため、本実施例の圧縮デバイス50は、伸長時間Teが前処理時間Tp未満であると判断すると(S280でNo)、S290(図6参照)に移行し、処理対象ブロックの中間データをカスタムハフマン符号化方式ではなく、固定ハフマン符号化方式によりハフマン符号圧縮し、圧縮後の中間データを、固定ハフマン符号ブロックとして出力する。その後、圧縮デバイス50は、S320に移行する。
処理対象ブロックの符号化方式に固定ハフマン符号化方式を選択すると、図8Cに示すように、伸長デバイス70による処理対象ブロックの復号時には、符号化方式としてカスタムハフマン符号化方式を選択した場合のような待ち動作が発生しない。上述したように固定ハフマン符号の復号に先立つ前処理は、カスタムハフマン符号の復号に先立つ前処理と比較して無視できる程度に短く、文字解決部79は、先行ブロックに対する伸長処理の終了後、処理対象ブロックに対する伸長処理をすぐさま実行可能である。
即ち、伸長時間Teが前処理時間Tp未満である場合には、処理対象ブロックの符号化方式に固定ハフマン符号化方式を選択することで、文字解決部79での伸長処理の実行効率を高めることができる。このため、本実施例では、伸長時間Teが前処理時間Tp未満である場合には、処理対象ブロックの符号化方式に固定ハフマン符号化方式を選択する。
圧縮デバイス50は、S280において伸長時間Teが前処理時間Tp以上であると判断すると、S300に移行し、処理対象ブロックの復号開始時の未出力文字数Enを式En=E1−(Tp/Tc)に従って算出する。
値E1は、上述したよう先行ブロックの復号終了時の未出力文字数である。値Tp/Tcは、先行ブロックの復号終了後における処理対象ブロックの前処理実行期間において、文字解決部79で出力される文字数に対応する。
圧縮デバイス50は、次ブロックに関するS260で用いる未出力文字数E0を、上記算出した未出力文字数Enに更新した後、S310に移行する。
S310において、圧縮デバイス50は、処理対象ブロックの中間データをS200で作成したハフマン符号テーブルに基づきカスタムハフマン符号化方式で圧縮し、圧縮後の中間データを、カスタムハフマン符号ブロックとして出力する。その後、圧縮デバイス50は、出現頻度テーブル53を次ブロックのカスタムハフマン符号テーブルの作成のために初期化する(S320)。
S320に続くS330において、圧縮デバイス50は、圧縮対象データの終端までのデータ圧縮及び圧縮データの出力が完了したか否かを判断し、完了していないと判断すると(S330でNo)、S110に移行する。その後、圧縮デバイス50は、圧縮対象データの次ブロックを中間データに変換する処理(S110−S180)、及び、この中間データを上述した手法で選択した符号化方式で圧縮した圧縮データに変換して出力する処理(S200−S320)を実行する。
圧縮デバイス50は、こうした動作の繰返しにより圧縮対象データをブロック毎に適切な符号化方式を用いてデフレート圧縮して、その圧縮データを出力する。圧縮デバイス50は、圧縮対象データの終端までのデータ圧縮及び出力が完了したと判断すると(S330でYes)、図5及び図6に示す圧縮処理を終了する。
以上に第一実施例の電子機器1及び圧縮伸長デバイス30の構成について説明した。本実施例によれば、カスタムハフマン符号の復号に先立って必要な前処理の実行期間に、文字解決部79が符号展開部76からのデータ待ち状態とならないように、符号展開部76と文字解決部79との間に、FIFOバッファ77を設けた。
本実施例によれば更に、処理対象ブロックの符号化方式を、上述した伸長時間Te及び前処理時間Tpに基づき、FIFOバッファ77が前処理実行期間中に空とならないように、カスタムハフマン符号化方式と固定ハフマン符号化方式との間で切り替えるようにした。
しかも本実施例では、FIFOバッファ77が未解決文字で大部分を埋め尽くされないように、符号展開部76から文字解決部79に、コピー記号を未解決文字に変換せずに、そのまま転送するようにした。即ち、FIFOバッファ77の上流でコピー記号の未解決文字への変換を行わないことにより、FIFOバッファ77を、文字解決部79の待ち動作を抑えるために効率的に利用できるようにした。
周知のように、カスタムハフマン符号化方式によるデータ圧縮は、固定ハフマン符号化方式よりも通常高いデータ圧縮率を得ることができる。但し、カスタムハフマン符号の復号に必要な前処理の実行時間は長く、前処理のために、符号展開部76から文字解決部79への復号データの入力が滞る。このため、従来では、文字解決部79での待ち動作が生じて、伸長データの出力に遅延が生じていた。
本実施例によれば、カスタムハフマン符号化方式の利用により、圧縮対象データの圧縮率を高めることができると共に、上述した理由により、文字解決部79での待ち動作を抑えることができる。即ち、圧縮データの伸長時に、伸長データの出力に遅延が生じるのを抑えることができて、安定した高速なデータ伸長を実現することができる。
安定したデータ伸長は、伸長データに基づく処理の滞りや遅延をも抑制することができるため、伸長データに基づく処理の高品質化に繋がる。例えば、電子機器1がディジタル複合機である場合には、印刷処理に供されるデータの伸長遅れにより、印刷処理に遅延が生じたり、失敗が生じたりする。従って、本実施例のデータ伸長は、この技術をディジタル複合機等に適用した場合、印刷処理の安定化をもたらす。
付言すると、本実施例によれば、前処理時間Tpを、カスタムハフマン符号テーブルにおける符号割当数N1に基づき、高精度に求めるようにした。従って、好適に符号化方式を選択することができ、文字解決部79の待ち動作を一層抑えることができる。
この他、本実施例では、復号時間Tdを、先行ブロックに含まれるリテラルの数α及びコピー記号の数βに基づき高精度に算出するようにした。更に、この復号時間Tdと、先行ブロックの文字数Epと、先行ブロックの復号開始時の未出力文字数E0と、文字解決部79における文字の出力周期Tcとに基づき、先行ブロックの復号完了時点から先行ブロックに対する伸長処理が完了するまでの時間である伸長時間Teを高精度に算出するようにした。従って、本実施例によれば、前処理時間Tpとの比較に適切な伸長時間Teを算出することができて、符号化方式の選択を適切に行うことができる。
上記実施例では、文字解決部79による文字の出力周期Tcと、符号展開部76の動作周期(1サイクル)とが相違する場合等を考慮して、前処理時間Tp及び伸長時間Tcの算出や比較方法について説明したが、文字の出力周期Tcと符号展開部76の動作周期とが一致する場合には、前処理時間Tp及び伸長時間Tcを、周期Tcの単位、換言すれば文字数に相当する単位で算出して比較することが可能である。
[第二実施例]
続いて、第二実施例の電子機器1を説明する。但し、第二実施例の電子機器1は、圧縮デバイス50における処理動作が第一実施例と異なるだけのものである。従って、以下では、圧縮デバイス50が実行する第二実施例の圧縮処理の内容を選択的に説明する。
第二実施例の圧縮処理では、圧縮対象データがブロック毎にカスタムハフマン符号化される。ブロックの終端は、固定ではなく、このブロックの伸長時間と、後続ブロックの前処理時間とに基づいて、伸長時間が前処理時間以上となる位置まで変更される。
第二実施例の圧縮処理は、図5に示されるフローチャートに従う前段部分と、図9に示されるフローチャートに従う後段部分とを含む。即ち、第二実施例において、圧縮デバイス50は、圧縮処理を開始すると、まずS110−S180の処理を実行する。そして、現在の処理位置がブロックの終端又は圧縮対象データの終端であると判断すると(S180でYes)、S400に移行する。
S400において、圧縮デバイス50は、S200と同様に、処理対象ブロックのカスタムハフマン符号テーブルを、出現頻度テーブル53における各文字の出現頻度に基づき作成する。
その後、圧縮デバイス50は、処理対象ブロックの中間データをハフマン符号圧縮する必要があるか否かを判断する(S410)。ここでは、処理対象ブロックをハフマン符号化しても、符号化後のデータ量が符号化前のデータ量以上である場合には、ハフマン符号圧縮が不要であると判断し、それ以外の場合には、ハフマン符号圧縮が必要であると判断する。
ハフマン符号圧縮が不要であると判断すると(S410でNo)、圧縮デバイス50は、処理対象ブロックの中間データを、ハフマン符号化せずに非圧縮ブロックとして出力する(S420)。その後、S520に移行する。
S410において、ハフマン符号圧縮が必要であると判断すると、圧縮デバイス50は、処理対象ブロックに続く後続ブロックの前処理時間Tqを推定する(S430)。後続ブロックの前処理時間Tqは、カスタムハフマン符号化された後続ブロックを伸長デバイス70が復号する際の、後続ブロックの前処理データに基づく前処理の実行時間である。
S430において、圧縮デバイス50は、予め設計段階で定められた時間を後続ブロックの前処理時間Tqとして推定することができる。あるいは、後続ブロックの前処理時間Tqを、処理対象ブロックの前処理時間Tpと同一値に推定することができる。
S430に続くS440において、圧縮デバイス50は、処理対象ブロックの文字数Epを特定する。文字数Epは、文字解決部79から出力される処理対象ブロックに対応する伸長データの文字数であり、辞書型圧縮前の処理対象ブロックの文字数に対応する。
S440の処理実行後、圧縮デバイス50は、S250と同様の手法で、処理対象ブロックの復号時間Tdを算出する(S450)。処理対象ブロックの復号時間Tdは、伸長デバイス70の符号展開部76が処理対象ブロックの先頭から末尾までの復号に要する時間に対応する。
S450の処理実行後、圧縮デバイス50は、S260と同様の手法で、処理対象ブロックの復号終了時の未出力文字数E1を、式E1=E0+Ep−(Td/Tc)に従って算出する(S460)。ここで言う復号終了時は、符号展開部76によって処理対象ブロック終端までの復号が終了する時点に対応する。未出力文字数E1は、処理対象ブロックの復号終了時点におけるFIFOバッファ77内の蓄積データを、文字解決部79による伸長後の文字数に換算した値に対応する。
上式に含まれる値E0は、処理対象ブロックの復号開始時の未出力文字数であり、Epは、処理対象ブロックの文字数であり、Tdは、処理対象ブロックの復号時間であり、Tcは、文字解決部79からの文字出力周期である。
S460の処理実行後、圧縮デバイス50は、S270と同様の手法で、処理対象ブロックの復号終了時にFIFOバッファ77に蓄積されているデータを、その後文字解決部79が全て伸長処理して、対応する伸長データを出力するのに要する伸長時間Teを、未出力文字数E1及び文字出力周期Tcに基づく式Te=E1・Tcに従い算出する(S470)。
その後、圧縮デバイス50は、S480に移行し、S470で算出された伸長時間TeがS430で推定された前処理時間Tq以上であるか否かを判断する。そして、伸長時間Teが前処理時間Tq未満であると判断すると(S480でNo)、S490に移行し、ブロック終端の延長を決定する。即ち、処理対象ブロックの終端を、圧縮対象データの末尾側に変更することを決定する。但し、処理対象ブロックの終端が、既に圧縮対象データの終端である場合には、もはや終端を変更することはできない。この場合には、先立つS480で形式的に肯定判断し、S500に移行するように圧縮デバイス50は動作する。
S490で、ブロック終端の延長を決定すると、圧縮デバイス50は、S110(図5参照)に移行し、ブロック終端が一文字分延長されたとみなして、S110−S180の処理を実行する。この場合には、S110で受け付けた文字がブロックの終端に該当するため、圧縮デバイス50は、S130で否定判断するか、S140で肯定判断して、S160に移行する。
S160では、前回実行したコピー記号への変換をやり直すようにして、今回のブロック終端までの文字列をコピー記号に変換することができる。その後、圧縮デバイス50は、S180で肯定判断し、S400に移行する。S400では、処理対象ブロックのカスタムハフマン符号テーブルを作り直してS410以降の処理を実行する。
圧縮デバイス50は、S480において、伸長時間Teが前処理時間Tq以上であると判断すると、未出力文字数E0を更新した後(S500)、S510に移行する。S510において、圧縮デバイス50は、処理対象ブロックの中間データをS400で作成した新たなハフマン符号テーブルに基づきカスタムハフマン符号化方式で圧縮し、圧縮後の中間データを、新たなカスタムハフマン符号ブロックとして出力する。その後、圧縮デバイス50は、出現頻度テーブル53を初期化し(S520)、S530に移行する。
S530において、圧縮デバイス50は、圧縮対象データの終端までを圧縮データとして出力したか否かを判断し、出力していないと判断すると(S530でNo)、S110に移行する。
圧縮デバイス50は、こうした動作の繰返しにより圧縮対象データを、必要に応じてブロック終端を延ばしながら、ブロック毎にカスタムハフマン符号化方式でデフレート圧縮して、その圧縮データを出力する。圧縮デバイス50は、圧縮対象データの終端までを圧縮データとして出力したと判断すると(S530でYes)、図5及び図9に示す圧縮処理を終了する。
以上、第二実施例の電子機器1について説明した。本実施例によれば、圧縮処理において、処理対象ブロックに続く後続ブロックの前処理時間Tqと、処理対象ブロックの伸長時間Teとの関係が不等式Te<Tqを満足する期間には、処理対象ブロックの終端を延長する。そして、不等式Te≧Tqを満足すると、処理対象ブロックの終端を確定して、当該処理対象ブロックをカスタムハフマン符号化方式によりハフマン符号圧縮し、これを前処理データと共に圧縮データとして出力する。
Te<Tqである期間に、処理対象ブロックの終端を確定すると、図10上段に示すように伸長デバイス70による復号時に、処理対象ブロックの伸長データの出力が全て完了してから、後続ブロックのカスタムハフマン符号の復号に必要な前処理が完了するため、文字解決部79において、符号展開部76からの新たな復号データを待つ動作が発生する。
これに対し、Te≧Tqとなるまでブロック終端を延長させると、図10下段に示すように、処理対象ブロックの伸長データの出力が全て完了するタイミングと、後続ブロックのカスタムハフマン符号の復号に必要な前処理が完了するタイミングとが略一致する。このため、文字解決部79は、符号展開部76からの復号データを待つことなく、後続ブロックの復号データに対する伸長処理を実行することができる。
従って、本実施例においても、第一実施例と同様に、圧縮データの伸長時に、伸長データの出力に遅延が生じるのを抑えることができて、安定した高速なデータ伸長を実現することができる。
[その他]
以上に、本開示の例示的実施形態について説明したが、本開示は、上記実施形態に限定されるものではなく、種々の態様を採ることができる。例えば、圧縮伸長デバイス30の機能は、ハードウェアによって実現されてもよいし、ソフトウェアによって実現されてもよい。圧縮デバイス50の機能がソフトウェアによって実現され、伸長デバイス70の機能がハードウェアによって実現される形態も考えられる。
圧縮伸長デバイス30を備える複数の電子機器1においては、一つの電子機器1で生成された圧縮データを、他の電子機器1の伸長デバイス70が伸長することも考えられる。従って、一つの電子機器1には、圧縮デバイス50及び伸長デバイス70の内、圧縮デバイス50のみが設けられ、別の電子機器1には、圧縮デバイス50及び伸長デバイス70の内、伸長デバイス70のみが設けられたデータ処理システムも考えられる。
第一実施例におけるS280での判断処理、及び第二実施例におけるS480での判断処理は、不等式Te−Tp≧δ、又は不等式Te−Tq≧δを満足するか否かを判断する処理に置き換えられてもよい。δがゼロであるときの判断処理は、第一実施例及び第二実施例の判断処理に一致する。δをゼロより僅かに大きい正の値に設定した場合には、前処理時間よりも伸長時間が長くなるため、前処理時間及び伸長時間の推定に誤差がある場合においても、文字解決部79に待ち動作が発生する可能性を極力抑えることができる。
上記実施例における1つの構成要素が有する機能は、複数の構成要素に分散して設けられ得る。複数の構成要素が有する機能は、1つの構成要素に統合され得る。構成要素の一部は、省略されてもよい。一つの実施例の構成の少なくとも一部は、他の上記実施例の構成に対して付加又は置換されてもよい。特許請求の範囲に記載の文言から特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
最後に用語間の対応関係について説明する。伸長デバイス70が備える前処理部73、テーブル記憶部74及び符号展開部76は、復号ユニットの一例に対応し、文字解決部79は、伸長ユニットの一例に対応する。圧縮デバイス50が実行するS110−S180,S200,S220,S290,S310,S400,S420,S510によって実現される機能は、圧縮ユニットによって実現される機能の一例に対応する。圧縮デバイス50が実行するS210,S280によって実現される機能は、決定ユニットの一例に対応する。圧縮デバイス50が実行するS230,S430によって実現される機能は、前処理時間推定ユニットによって実現される機能の一例に対応する。圧縮デバイス50が実行するS240−S270,S440−S470によって実現される機能は、伸長時間推定ユニットによって実現される機能の一例に対応する。
圧縮デバイス50がS180で肯定判断し更にS480でTe≧Tqであるか否かを判断し、Te≧Tqである場合にはブロック終端を確定する機能は、分割ユニットによって実現される機能の一例に対応する。
1…電子機器、10…メインデバイス、30…圧縮伸長デバイス、50…圧縮デバイス、51…第一圧縮部、51A,79A…スライド辞書、53…出現頻度テーブル、55…第二圧縮部、70…伸長デバイス、71…分岐部、73…前処理部、74…テーブル記憶部、76…符号展開部、77…FIFOバッファ、79…文字解決部、90…記憶デバイス。

Claims (7)

  1. 圧縮対象データをデフレート圧縮することによって、前記圧縮対象データに対応する圧縮データを生成する圧縮デバイスと、
    前記圧縮データを伸長することによって、前記圧縮データに対応する伸長データを出力する伸長デバイスと、
    を備え、
    前記伸長デバイスは、
    FIFOバッファと、
    前記圧縮データに含まれるハフマン符号を順次復号して、前記圧縮データに対応する復号データを前記FIFOバッファに入力する復号ユニットと、
    前記復号ユニットから前記FIFOバッファへの入力順に前記FIFOバッファから入力される、前記復号データに対する伸長処理を実行することにより、前記伸長データを出力する伸長ユニットであって、前記伸長処理として、前記FIFOバッファからの前記復号データがスライド辞書に対する参照記号を表す場合には、前記参照記号から特定される前記スライド辞書内のデータを前記伸長データとして出力し、前記復号データがリテラル値である場合には、前記リテラル値を前記伸長データとして出力する処理を実行する伸長ユニットと、
    を備え、
    前記圧縮デバイスは、
    前記圧縮対象データをブロック毎に決定された符号化方式でデフレート圧縮する圧縮ユニットと、
    前記圧縮ユニットによりデフレート圧縮される各ブロックを順に注目ブロックに選択し、前記注目ブロックの符号化方式を決定する決定ユニットと、
    前記決定ユニットが前記注目ブロックの符号化方式をカスタムハフマン符号化方式に決定して前記圧縮ユニットが前記注目ブロックを前記カスタムハフマン符号化方式によりデフレート圧縮した場合に、前記伸長デバイスにおいて前記注目ブロックの復号の開始前に実行される前記注目ブロックの前処理であって前記注目ブロックの前に復号される先行ブロックの復号完了後に実行される前記前処理の実行時間である前記注目ブロックの前処理時間を推定する前処理時間推定ユニットと、
    前記伸長デバイスによる前記先行ブロックの復号完了時点から前記先行ブロックに対する前記伸長処理が完了するまでに要する時間である前記先行ブロックの伸長時間を推定する伸長時間推定ユニットと、
    を備え、
    前記決定ユニットは、前記伸長時間推定ユニットにより推定された前記先行ブロックの前記伸長時間が前記前処理時間推定ユニットにより推定された前記注目ブロックの前記前処理時間より長い場合には、前記注目ブロックの符号化方式をカスタムハフマン符号化方式に決定し、前記先行ブロックの前記伸長時間が前記注目ブロックの前記前処理時間より短い場合には、前記注目ブロックの符号化方式を固定ハフマン符号化方式に決定し、
    前記圧縮ユニットは、前記圧縮対象データを前記ブロック毎に、前記決定ユニットにより決定された符号化方式でデフレート圧縮すること
    を特徴とするデータ処理システム。
  2. 圧縮対象データをデフレート圧縮することによって、前記圧縮対象データに対応する圧縮データを生成する圧縮デバイスと、
    前記圧縮データを伸長することによって、前記圧縮データに対応する伸長データを出力する伸長デバイスと、
    を備え、
    前記伸長デバイスは、
    FIFOバッファと、
    前記圧縮データに含まれるハフマン符号を順次復号して、前記圧縮データに対応する復号データを前記FIFOバッファに入力する復号ユニットと、
    前記復号ユニットから前記FIFOバッファへの入力順に前記FIFOバッファから入力される、前記復号データに対する伸長処理を実行することにより、前記伸長データを出力する伸長ユニットであって、前記伸長処理として、前記FIFOバッファからの前記復号データがスライド辞書に対する参照記号を表す場合には、前記参照記号から特定される前記スライド辞書内のデータを前記伸長データとして出力し、前記復号データがリテラル値である場合には、前記リテラル値を前記伸長データとして出力する処理を実行する伸長ユニットと、
    を備え、
    前記圧縮デバイスは、
    前記圧縮対象データをブロック化する分割ユニットと、
    前記圧縮対象データをブロック毎にカスタムハフマン符号化方式によりデフレート圧縮する圧縮ユニットと、
    前記圧縮ユニットがデフレート圧縮している前記圧縮対象データ内の位置である圧縮位置において前記分割ユニットが前記圧縮対象データを分割し、当該分割によって前記圧縮対象データ内の分割位置より前に位置する先行ブロックのデフレート圧縮を前記圧縮ユニットが終了し、前記分割位置より後に位置する後続ブロックのデフレート圧縮を前記圧縮ユニットが開始した場合に、前記伸長デバイスにおいて前記後続ブロックの復号の開始前に実行される前記後続ブロックの前処理であって前記先行ブロックの復号完了後に実行される前記前処理の実行時間である前記後続ブロックの前処理時間を推定する前処理時間推定ユニットと、
    前記伸長デバイスによる前記先行ブロックの復号完了時点から前記先行ブロックに対する前記伸長処理が完了するまでに要する時間である前記先行ブロックの伸長時間を推定する伸長時間推定ユニットと、
    を備え、
    前記分割ユニットは、前記先行ブロックの前記伸長時間及び前記後続ブロックの前記前処理時間に基づき、前記伸長時間と前記前処理時間との差が所定条件を満足しない場合には、前記圧縮位置で前記圧縮対象データを分割せず、前記所定条件を満足する場合に、前記圧縮位置で前記圧縮対象データを分割してブロック化し、
    前記圧縮ユニットは、前記分割ユニットが前記圧縮対象データを分割した場合には、前記先行ブロックのデフレート圧縮を終了し、前記後続ブロックのデフレート圧縮を開始すること
    を特徴とするデータ処理システム。
  3. 前記分割ユニットは、前記伸長時間が前記前処理時間未満である場合には、前記差が前記所定条件を満足しないと判定して、前記圧縮位置で前記圧縮対象データを分割せず、前記伸長時間が前記前処理時間以上である場合には、前記差が前記所定条件を満足すると判定して、前記圧縮位置で前記圧縮対象データを分割してブロック化すること
    を特徴とする請求項2記載のデータ処理システム。
  4. 前記前処理時間推定ユニットは、前記前処理時間を、前記前処理の実行後に開始される前記復号に際して用いられるカスタムハフマン符号テーブルの符号割当数に基づき推定すること
    を特徴とする請求項1記載のデータ処理システム。
  5. 前記伸長時間推定ユニットは、前記先行ブロックの文字数と、前記先行ブロックの復号に要する時間を特定可能な前記先行ブロックに含まれる前記リテラル値の数及び前記参照記号の数と、に基づき、前記伸長時間を推定すること
    を特徴とする請求項1〜請求項4のいずれか一項記載のデータ処理システム。
  6. 圧縮対象データをデフレート圧縮することによって、伸長デバイスが伸長可能な圧縮データを生成する圧縮デバイスであって
    前記伸長デバイスは、前記圧縮データに含まれるハフマン符号を順次復号して、前記圧縮データに対応する復号データをFIFOバッファに入力し、前記FIFOバッファへの入力順に前記FIFOバッファから出力される前記復号データに対する伸長処理を実行することにより、前記圧縮データに対応する伸長データを出力するように構成され、前記伸長処理として、前記FIFOバッファからの前記復号データがスライド辞書に対する参照記号を表す場合には、前記参照記号から特定される前記スライド辞書内のデータを前記伸長データとして出力し、前記復号データがリテラル値である場合には、前記リテラル値を前記伸長データとして出力する処理を実行するように構成された伸長デバイスであり、
    前記圧縮デバイスは、
    前記圧縮対象データをブロック毎に決定された符号化方式でデフレート圧縮する圧縮ユニットと、
    前記圧縮ユニットによりデフレート圧縮される各ブロックを順に注目ブロックに選択し、前記注目ブロックの符号化方式を決定する決定ユニットと、
    前記決定ユニットが前記注目ブロックの符号化方式をカスタムハフマン符号化方式に決定して前記圧縮ユニットが前記注目ブロックを前記カスタムハフマン符号化方式によりデフレート圧縮した場合に、前記伸長デバイスにおいて前記注目ブロックの復号の開始前に実行される前記注目ブロックの前処理であって前記注目ブロックの前に復号される先行ブロックの復号完了後に実行される前記前処理の実行時間である前記注目ブロックの前処理時間を推定する前処理時間推定ユニットと、
    前記伸長デバイスによる前記先行ブロックの復号完了時点から前記先行ブロックに対する前記伸長処理が完了するまでに要する時間である前記先行ブロックの伸長時間を推定する伸長時間推定ユニットと、
    を備え、
    前記決定ユニットは、前記伸長時間推定ユニットにより推定された前記先行ブロックの前記伸長時間が前記前処理時間推定ユニットにより推定された前記注目ブロックの前記前処理時間より長い場合には、前記注目ブロックの符号化方式をカスタムハフマン符号化方式に決定し、前記先行ブロックの前記伸長時間が前記注目ブロックの前記前処理時間より短い場合には、前記注目ブロックの符号化方式を固定ハフマン符号化方式に決定し、
    前記圧縮ユニットは、前記圧縮対象データを前記ブロック毎に、前記決定ユニットにより決定された符号化方式でデフレート圧縮すること
    を特徴とする圧縮デバイス。
  7. 圧縮対象データをデフレート圧縮することによって、伸長デバイスが伸長可能な圧縮データを生成する圧縮デバイスであって
    前記伸長デバイスは、前記圧縮データに含まれるハフマン符号を順次復号して、前記圧縮データに対応する復号データをFIFOバッファに入力し、前記FIFOバッファへの入力順に前記FIFOバッファから出力される前記復号データに対する伸長処理を実行することにより、前記圧縮データに対応する伸長データを出力するように構成され、前記伸長処理として、前記FIFOバッファからの前記復号データがスライド辞書に対する参照記号を表す場合には、前記参照記号から特定される前記スライド辞書内のデータを前記伸長データとして出力し、前記復号データがリテラル値である場合には、前記リテラル値を前記伸長データとして出力する処理を実行するように構成された伸長デバイスであり、
    前記圧縮デバイスは、
    前記圧縮対象データをブロック化する分割ユニットと、
    前記圧縮対象データをブロック毎にカスタムハフマン符号化方式によりデフレート圧縮する圧縮ユニットと、
    前記圧縮ユニットがデフレート圧縮している前記圧縮対象データ内の位置である圧縮位置において前記分割ユニットが前記圧縮対象データを分割し、当該分割によって前記圧縮対象データ内の分割位置より前に位置する先行ブロックのデフレート圧縮を前記圧縮ユニットが終了し、前記分割位置より後に位置する後続ブロックのデフレート圧縮を前記圧縮ユニットが開始した場合に、前記伸長デバイスにおいて前記後続ブロックの復号の開始前に実行される前記後続ブロックの前処理であって前記先行ブロックの復号完了後に実行される前記前処理の実行時間である前記後続ブロックの前処理時間を推定する前処理時間推定ユニットと、
    前記伸長デバイスによる前記先行ブロックの復号完了時点から前記先行ブロックに対する前記伸長処理が完了するまでに要する時間である前記先行ブロックの伸長時間を推定する伸長時間推定ユニットと、
    を備え、
    前記分割ユニットは、前記先行ブロックの前記伸長時間及び前記後続ブロックの前記前処理時間に基づき、前記伸長時間と前記前処理時間との差が所定条件を満足しない場合には、前記圧縮位置で前記圧縮対象データを分割せず、前記所定条件を満足する場合に、前記圧縮位置で前記圧縮対象データを分割してブロック化し、
    前記圧縮ユニットは、前記分割ユニットが前記圧縮対象データを分割した場合には、前記先行ブロックのデフレート圧縮を終了し、前記後続ブロックのデフレート圧縮を開始すること
    を特徴とする圧縮デバイス。
JP2015163758A 2015-08-21 2015-08-21 データ処理システム及び圧縮デバイス Active JP6613713B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015163758A JP6613713B2 (ja) 2015-08-21 2015-08-21 データ処理システム及び圧縮デバイス

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015163758A JP6613713B2 (ja) 2015-08-21 2015-08-21 データ処理システム及び圧縮デバイス

Publications (2)

Publication Number Publication Date
JP2017041834A JP2017041834A (ja) 2017-02-23
JP6613713B2 true JP6613713B2 (ja) 2019-12-04

Family

ID=58203463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015163758A Active JP6613713B2 (ja) 2015-08-21 2015-08-21 データ処理システム及び圧縮デバイス

Country Status (1)

Country Link
JP (1) JP6613713B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015019484A1 (ja) * 2013-08-09 2015-02-12 株式会社日立製作所 データ圧縮装置およびデータ伸張装置

Also Published As

Publication number Publication date
JP2017041834A (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
JP6195997B2 (ja) シンボル圧縮を伴うデータのソース符号化・復号方法及び装置
KR100894002B1 (ko) 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법
KR101208233B1 (ko) 중간 형식으로 변환하는 2단계 산술 복호
JP5251799B2 (ja) データ処理装置およびデータ処理方法
JP6045123B2 (ja) エンコーダ、デコーダ及び方法
JP2017507590A5 (ja)
JP2007166039A (ja) 画像符号化装置
JP2008118307A (ja) 符号化装置及びその制御方法
KR20090007301A (ko) 산술 디코딩 방법 및 디바이스
JP4019790B2 (ja) 画像処理装置および画像処理プログラム
JP2006080792A (ja) 画像符号化装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
JP6003059B2 (ja) 画像処理装置および画像処理方法、ならびに、画像形成装置
US20140270554A1 (en) Image encoding apparatus and image decoding apparatus
JP6613713B2 (ja) データ処理システム及び圧縮デバイス
JPH11340838A (ja) 符号化装置および復号装置
JP4093193B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
Kim et al. Parallel decoding of context-based adaptive binary arithmetic codes based on most probable symbol prediction
KR20220031636A (ko) 범위 비대칭 숫자 시스템 인코딩 및 디코딩의 피쳐
JP2005286371A (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
KR102109768B1 (ko) Uhd 영상의 고속 처리를 위한 cabac 이진 산술 부호화기
JP6081869B2 (ja) 画像復号化装置
JP3937463B2 (ja) ハフマン符号化装置及び方法
JP5732765B2 (ja) 画像データ復号装置
JP5194082B2 (ja) 画像符号化装置
WO2018168901A1 (ja) 二値算術復号器および二値算術復号装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191021

R150 Certificate of patent or registration of utility model

Ref document number: 6613713

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150