(57)【要約】【課題】カノニカルハフマン方式によって符号化された符号列を復号対象とし、復号化システムにおいて、復号処理の高速化を図ることである。【解決手段】復号化システムは、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う符号長特定部を設けている。そして、今回の処理単位に関する符号長特定処理の終了後で、かつ、復号処理の終了前に、次回の処理単位に関する符号長特定処理の開始を符号長特定部に指示する。【選択図】図１
2007104194.tif 000002
【特許請求の範囲】
【請求項１】
カノニカルハフマン方式によって符号化された符号列を復号対象とし、当該符号列の一部を構成する所定の符号長の処理単位毎に復号処理を繰り返し行うことによって、複数のシンボルが並んだシンボル列を出力する復号化システムにおいて、
複数の異なる符号長のそれぞれに対応付けて先頭符号が記述されたベーステーブルと、
前記ベーステーブルに記述された符号長毎の先頭符号と、処理単位の先頭符号とを比較することによって、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う符号長特定部と、
前記符号長特定部によって符号長が特定された復号対象を復号化する復号処理を行うことによって、当該復号対象に対応したシンボルを出力する復号処理部と、
今回の処理単位に関する前記符号長特定処理の終了後で、かつ、前記復号処理の終了前に、次回の処理単位に関する前記符号長特定処理の開始を前記符号長特定部に指示する制御部と
を有することを特徴とする復号化システム。
【請求項２】
カノニカルハフマン方式によって符号化された符号列を復号対象とし、当該符号列の一部を構成する所定の符号長の処理単位毎に復号処理を繰り返し行うことによって、複数のシンボルが並んだシンボル列を出力する復号化システムにおいて、
シンボル列の配列的な特徴に基づき予め設定された特定シンボルのそれぞれに対応付けて符号が記述された判定テーブルを参照して、今回の処理単位に特定シンボルの符号が含まれていると判定した場合、当該符号に対応した特定シンボルを復号結果として出力するとともに、今回以降の処理単位に関する処理主体を選択的に指定するメインデコーダと、
前記メインデコーダに並列に設けられており、自己が処理すべき複数の処理単位をパイプラインによって処理するとともに、前記メインデコーダからの指定に応じて、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として選択的に出力する第１のサブデコーダと、
前記メインデコーダに並列に設けられているとともに、前記メインデコーダからの指定に応じて、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として選択的に出力する第２のサブデコーダと
を有することを特徴とする復号化システム。
【請求項３】
前記第１のサブデコーダは、
複数の異なる符号長のそれぞれに対応付けて先頭符号が記述されたベーステーブルと、
前記ベーステーブルに記述された符号長毎の先頭符号と、処理単位の先頭符号とを比較することによって、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う符号長特定部と、
前記符号長特定部によって符号長が特定された復号対象を復号化する復号処理を行うことによって、当該復号対象に対応したシンボルを出力する復号処理部と、
今回の処理単位に関する前記符号長特定処理の終了後で、かつ、前記復号処理の終了前に、次回の処理単位に関する前記符号長特定処理の開始を前記符号長特定部に指示する制御部と
を有することを特徴とする請求項２に記載された復号化システム。
【請求項４】
前記符号列は、複数種のキャラクタシンボルと、同種のキャラクタシンボルの連続数を示すランシンボルとで構成されており、
前記メインデコーダは、ランシンボルの直前にくるキャラクタシンボルを前記特定シンボルとして出力し、
前記第１のサブデコーダは、今回の処理単位に前記特定シンボルが含まれておらず、かつ、前回の処理単位にも前記特定シンボルが含まれていない場合、今回の処理単位を復号化することによって得られたキャラクタシンボルを復号結果として出力し、
前記第２のサブデコーダは、今回の処理単位に前記特定シンボルが含まれておらず、かつ、前回の処理単位に前記特定シンボルが含まれている場合、今回の処理単位を復号化することによって得られたランシンボルを復号結果として出力することを特徴とする請求項２または３に記載された復号化システム。
【請求項５】
前記メインデコーダは、今回を含む連続した処理単位に特定シンボルの符号が所定の順序で含まれていると判定した場合、当該符号に対応した特定シンボルを復号結果として出力するとともに、今回以降の処理単位に関する処理主体をさらに選択的に指定することを特徴とする請求項２から４のいずれかに記載された復号化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カノニカルハフマン方式によって符号化された符号列を、所定の符号長の処理単位毎に復号処理を繰り返し行うことによって、複数のシンボルが並んだシンボル列を出力する復号化システムに関する。
【背景技術】
【０００２】
データ圧縮方法の一つとして、カノニカルハフマン符号化が知られている。この符号化では、出現頻度情報を正規化した上で、ハフマン符号で得られる符号語のビット長が直接算出される。これにより、復号側に出現頻度情報を渡す必要がなくなるので、復号側におけるメモリ消費量の低減を図ることができる。例えば、特許文献１には、回路規模を増大させることなく、処理の高速化を図ったハフマンデコーダが開示されている。このハフマンデコーダは、復号化による出力データの付加ビットの符号長に応じて、予め保持した予測値の中から次回のハフマン符号の頭出しデータを選択的に出力する。
【０００３】
【特許文献１】特開２００４−１７９７５２公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のハフマンデコーダでは、今回の復号化データの生成と同時に、次回のハフマン符号の符号長を決定することはできても、復号化データの生成の途中で、次回のハフマン符号の符号長を決定することができない。また、ハフマンデコーダ内に複数の予測値を保持するバッファが必要であり、予測値の数の応じてそのバッファのサイズも変化するので、回路の大規模化を招く要因となりえる。
【０００５】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、今回の処理単位の復号処理の途中でも、次回の処理単位の復号処理を開始することで、復号処理の高速化を図ることである。
【０００６】
また、本発明の別の目的は、ハフマンデコーダ内に複数の予測値を保持するバッファを削減することにより、回路の小規模化を図ることである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するために、第１の発明は、カノニカルハフマン方式によって符号化された符号列を復号対象とし、符号列の一部を構成する所定の符号長の処理単位毎に復号処理を繰り返し行うことによって、複数のシンボルが並んだシンボル列を出力する復号化システムを提供する。この復号化システムは、複数の異なる符号長のそれぞれに対応付けて先頭符号が記述されたベーステーブルと、ベーステーブルに記述された符号長毎の先頭符号と、処理単位の先頭符号とを比較することによって、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う符号長特定部と、符号長特定部によって符号長が特定された復号対象を復号化する復号処理を行うことによって、復号対象に対応したシンボルを出力する復号処理部と、今回の処理単位に関する符号長特定処理の終了後で、かつ、復号処理の終了前に、次回の処理単位に関する符号長特定処理の開始を符号長特定部に指示する制御部とを有する。
【０００８】
第２の発明は、カノニカルハフマン方式によって符号化された符号列を復号対象とし、符号列の一部を構成する所定の符号長の処理単位毎に復号処理を繰り返し行うことによって、複数のシンボルが並んだシンボル列を出力する復号化システムを提供する。この復号化システムは、シンボル列の配列的な特徴に基づき予め設定された特定シンボルのそれぞれに対応付けて符号が記述された判定テーブルを参照して、今回の処理単位に特定シンボルの符号が含まれていると判定した場合、符号に対応した特定シンボルを復号結果として出力するとともに、今回以降の処理単位に関する処理主体を選択的に指定するメインデコーダと、メインデコーダに並列に設けられており、自己が処理すべき複数の処理単位をパイプラインによって処理するとともに、メインデコーダからの指定に応じて、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として選択的に出力する第１のサブデコーダと、メインデコーダに並列に設けられているとともに、メインデコーダからの指定に応じて、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として選択的に出力する第２のサブデコーダとを有する。
【０００９】
また、第２の発明において、第１のサブデコーダは、複数の異なる符号長のそれぞれに対応付けて先頭符号が記述されたベーステーブルと、ベーステーブルに記述された符号長毎の先頭符号と、処理単位の先頭符号とを比較することによって、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う符号長特定部と、符号長特定部によって符号長が特定された復号対象を復号化する復号処理を行うことによって、復号対象に対応したシンボルを出力する復号処理部と、今回の処理単位に関する符号長特定処理の終了後で、かつ、復号処理の終了前に、次回の処理単位に関する符号長特定処理の開始を符号長特定部に指示する制御部とを有することが好ましい。
【００１０】
また、第２の発明において、符号列は、複数種のキャラクタシンボルと、同種のキャラクタシンボルの連続数を示すランシンボルとで構成されており、メインデコーダは、ランシンボルの直前にくるキャラクタシンボルを特定シンボルとして出力し、第１のサブデコーダは、今回の処理単位に特定シンボルが含まれておらず、かつ、前回の処理単位にも特定シンボルが含まれていない場合、今回の処理単位を復号化することによって得られたキャラクタシンボルを復号結果として出力し、第２のサブデコーダは、今回の処理単位に特定シンボルが含まれておらず、かつ、前回の処理単位に特定シンボルが含まれている場合、今回の処理単位を復号化することによって得られたランシンボルを復号結果として出力することが好ましい。
【００１１】
また、第２の発明において、メインデコーダは、今回を含む連続した処理単位に特定シンボルの符号が所定の順序で含まれていると判定した場合、この符号に対応した特定シンボルを復号結果として出力するとともに、今回以降の処理単位に関する処理主体をさらに選択的に指定することが好ましい。
【発明の効果】
【００１２】
第１の発明によれば、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う符号長特定部を設けている。そして、今回の処理単位に関する符号長特定処理の終了後で、かつ、復号処理の終了前に、次回の処理単位に関する符号長特定処理の開始を符号長特定部に指示する。これにより、今回の処理単位の復号処理の途中で、次回の処理単位の復号処理を開始するというパイプライン処理が実行される。このようなパイプライン処理は、カノニカルハフマン符号化固有の特性に依拠したものであり、これにより、復号処理の高速化を図ることができる。また、ハフマンデコーダ内に複数の予測値を保持するバッファが必要がないので、回路の大規模化を防ぐことができる。
【００１３】
また、第２の発明によれば、シンボル列の配列的な特徴に基づき予め設定された特定シンボルのそれぞれに対応付けて符号が記述された判定テーブルを参照するメインデコーダを設けている。このメインデコーダは、今回の処理単位に特定シンボルの符号が含まれているか否かに応じて、今回以降の処理単位に関するサブデコーダを選択的に指定する。これにより、シンボル列の配列的な特徴に基づいたシンボル列においても、今回の処理単位の復号処理の途中で次回の処理単位の復号処理を開始できるので、復号処理の高速化を図ることができる。
【発明を実施するための最良の形態】
【００１４】
（第１の実施形態）
図１は、本実施形態における復号化システムの構成図である。この復号化システムは、カノニカルハフマン方式によって符号化された符号列を復号対象とし、処理単位毎に復号処理を繰り返し行うことによって、複数のシンボルが並んだシンボル列を出力する。処理単位は、符号列の一部を構成する部分符号列であって、所定の符号長を有する。復号化システムは、バッファ１と、シフタ２と、演算デコーダ３とから構成されている。
【００１５】
バッファ１は、カノニカルハフマン方式によって符号化された符号列を記憶する。シフタ２は、演算デコーダ３の一部である制御部７からの指示に従い、バッファ１に記憶された符号列の一部をビットシフトさせ、入力符号として演算デコーダ３（具体的には、符号長特定部５およびテーブルアドレス生成部６ｃ）への入力を行う。演算デコーダ３は、ベーステーブル管理部４と、符号長特定部５と、復号処理部６と、制御部７とから構成されている。
【００１６】
ベーステーブル管理部４は、複数の異なる符号長のそれぞれに対応付けて先頭符号が記述されたベーステーブルを管理している。符号長特定部５は、ベーステーブル管理部４に記述された符号長毎の先頭符号と、処理単位の先頭符号とを比較することによって、処理単位に含まれる復号対象の符号長を特定する符号長特定処理を行う。復号処理部６は、符号長特定部５によって符号長が特定された復号対象を復号化する復号処理を行うことによって、この復号対象に対応したシンボルを出力する。
【００１７】
復号処理部６は、オフセットテーブル管理部６ａと、シンボルテーブル管理部６ｂと、アドレス生成部６ｃとから構成されている。オフセットテーブル管理部６ａは、複数の異なる符号長のそれぞれに対応付けてオフセット値が記述されたオフセットテーブルを管理する。シンボルテーブル管理部６ｂは、アドレスのそれぞれに対応付けてシンボルが記述されたシンボルテーブルを管理する。アドレス生成部６ｃは、バッファ１から入力された復号対象の符号列の一部と、オフセットテーブル管理部６ａから入力されたオフセット値とに基づいて、符号列の一部に対応するシンボルを出力する。
【００１８】
なお、これらのテーブル（ベーステーブル、オフセットテーブル、シンボルテーブル）は、符号化時に生成された符号長情報に基づいて、復号化時に随時生成される。この符号長情報は、入力（符号化）されたシンボルと、そのシンボルに対応する符号長とで構成されている。具体的には、最小の符号長を示すシンボルに対して値”０”（例えば、符号長”１”の場合：符号”０”、符号長”２”の場合：符号”００”）を割り当て、以降、符号長が長い順に連続する符号を割り当てることで、テーブル（直接テーブル）が生成される。そして、このテーブルを正規化することで各テーブルが生成される。なお、各テーブルは、本実施形態のような別個の構成に限定されるものではなく、論理的にそれぞれが構成されていてもよく、また、物理的に同一のバッファ（図示せず）に記憶されていてもよい。
【００１９】
制御部７は、今回の処理単位に関する符号長特定処理の終了後で、かつ、復号処理の終了前に、次回の処理単位に関する符号長特定処理の開始を符号長特定部５に指示する。具体的には、制御部７が、符号長特定部５から符号長特定処理の終了を今回の処理単位の符号長とともに検知した場合、この符号長に基づいてシフタ２に対して次回の復号処理に関するシフト量を指示すると共に、符号長特定部５に対して、次回の処理単位に関する符号長特定処理の開始を指示する。これにより、ある処理単位の処理完了を以て次の処理単位の処理を開始するという逐次処理ではなく、ある処理単位の処理途中で次の処理単位の処理を開始するというパイプライン処理が実行されることになる。このようなパイプライン処理が可能な理由は、後述するが、カノニカルハフマン符号化固有の特性に依拠している。
【００２０】
図２は、演算デコーダ３が備えるテーブルの構成図であり、同図（ａ）は、ベーステーブル管理部４が備えるベーステーブル、同図（ｂ）は、オフセットテーブル管理部６ａが備えるオフセットテーブル、図（ｃ）は、シンボルテーブル管理部６ｂが備えるシンボルテーブルに関する。これらのテーブルを用いて、一例として、符号”１００１・・”から１つのシンボルに復号するケースについて説明する。本実施形態における符号列の復号処理（いわゆる、演算デコード）は、シフト処理と、符号長特定処理と、テーブルアクセス処理とから構成されている。
【００２１】
（シフト処理）
シフト処理は、符号列の一部を入力符号として入力させる処理である。具体的には、制御部７は、バッファ１に記憶されている復号対象の符号列を所定ビット分だけビットシフト処理を行うように、シフタ２に対して指示する。シフタ２は、この指示に応じて、バッファ１のビットシフトを行う。符号長特定部５およびアドレス生成部６ｃには、シフト後のデータが入力符号として入力される。
【００２２】
本ケースの場合、シフタ２がバッファ１に対してシフト処理を行うことで、バッファ１に記憶されている４ビットの符号列”１００１”が入力符号として符号長特定部５へ読み込まれる。なお、ここで読み込まれるビット長は、入力符号の最大符号長、つまり、１回の復号化で出力されるシンボルに対応する最大の符号長を見越した上で予め設定されている。なぜなら、入力される演算デコーダ３に入力される符号は、当初その符号長が不明であり、シンボルと復号し得る範囲のビット全体を、符号長特定部５が把握しなければならないからである。
【００２３】
（符号長特定処理）
符号長特定処理は、入力された符号のうち、どこからが別の符号列（すなわち、次回の復号処理において用いられる符号列）なのかを符号長ベースで特定する処理である。具体的には、ベーステーブル管理部４のベーステーブル（図２（ａ））を用いて、今回の復号対象となる入力符号の符号長が特定される。本ケースにおいて、符号長特定部５は、今回の入力符号”１００１”をバッファ１から読み込み、入力符号”１００１”が、どの程度の符号長を有するのかを特定する。符号長の特定には、入力符号の先頭符号”１００１”と、ベーステーブルに記憶された先頭符号との比較を用いる。ベーステーブルの参照のみで符号長を特定できる理由は、カノニカルハフマン符号化による符号列が、以下の原則を備えているからである。
（１）符号長が、通常のハフマンアルゴリズムで決定されるのと同じ。
（２）短い符号列の値は、長い符号列の値より小さい。
（３）符号長が同じである場合、値は連続する。
【００２４】
入力符号の上位各ビットの値が、この符号長（ビット数）に対応する先頭符号の値よりも大きければ、この入力符号の符号長がこの先頭符号に対応する符号長以上であることが保証される。本ケースの場合、両者の比較は、以下のようなプロセスになる。
１０（入力符号の先頭２ビット）＞００（符号長２の先頭符号）
１００（入力符号の先頭２ビット）＞０１０（符号長３の先頭符号）
１００１（入力符号の先頭２ビット）＜１１１０（符号長４の先頭符号）
【００２５】
上記プロセスにより、符号長は”３”以上で”４”未満であることから、符号長が”３”と特定される。なお、この特定と同時に入力符号の下位１ビットの”１”は、次回の復号処理で用いると判断される。特定された符号長”３”は、復号処理部６（オフセットテーブル管理部６ａ）および制御部７へ入力される。符号長特定部５は、入力符号の符号長の出力を以て、この入力符号に関して必要な処理が終了する。したがって、この時点で、新たな（次回の）入力符号の受け付けが可能になる点に留意されたい。
【００２６】
（テーブルアクセス処理）
テーブルアクセス処理は、上述の符号化特定処理によって特定された符号長を主として入力符号に対応するシンボルを出力する処理である。まず、オフセットテーブル管理部６ａが、オフセットテーブル（図２（ｂ））を参照して、符号長特定部５から入力された符号長に対応するオフセットアドレスを特定する。本ケースの場合、入力される符号長が”３”なので、これに対応するオフセットアドレスとして”１”が特定される。特定されたオフセットアドレス”１”は、符号長”３”と共にテーブルアドレス生成部６ｃへ入力される。
【００２７】
つぎに、テーブルアドレス生成部６ｃは、入力符号と、オフセットテーブル管理部６ａから入力されるオフセットアドレスおよび符号長と、ベーステーブルに記憶された先頭符号とに基づいて、シンボルテーブル（図２（ｃ））に対応したアドレスを算出する。具体的には、入力符号と、符号長に対応する先頭符号との差分（オフセットアドレスからの変位）が算出され、この差分とオフセットアドレスとを加算することによって、シンボルテーブルのアドレスが算出される。本ケースの場合、入力符号”１００”と、符号長”３”に対応する先頭符号”０１０”との差分である値”２”が算出され、この差分値”２”とオフセットアドレス”１”との加算によって、アドレス”３”が算出される。この算出されたアドレス”３”は、シンボルテーブル管理部６ｂへ入力される。
【００２８】
そして、シンボルテーブル管理部６ｂは、シンボルテーブルを参照して、今回の復号対象となる符号のシンボルを特定・出力する。本ケースの場合、入力されるアドレスが”３”なので、これに対応するシンボル”Ｃ”が特定される。特定されたシンボル”Ｃ”は、今回の入力符号”１００”に対応するシンボルとして出力される。
【００２９】
今回の処理単位に関する上述したテーブルアクセス処理と並行して、次回の処理単位に関するシフト処理が行われる。具体的には、符号長特定部５からの符号長の入力に基づいて、制御部７は、今回の処理単位で復号化されなかった下位ビットを、次回の処理単位の符号として、再度、符号長特定部５および復号処理部６に出力する。本ケースの場合、符号長”３”が制御部７に入力され、今回のシフト処理で入力した下位１ビット”１”を含む符号４ビットが次回の処理単位の符号として、バッファ１から符号長特定部５および復号処理部６に新たに入力される。
【００３０】
なお、下位ビット”１”含む符号が次回の処理単位の符号としてバッファ１から符号長特定部５および復号処理部６に新たに入力されるが、これに代えて、復号化システム内に予め保持しておき、これを次回の符号にマージして復号処理を行ってもよい。例えば、下位ビット”１”を符号長特定部５および復号処理部６内にそのまま保持しておく場合、バッファ１からこの下位ビット”１”に続く３ビットを符号長特定部５および復号処理部６に入力すれば足りる。
【００３１】
図３は、復号処理の説明図である。この説明図は、演算デコーダ３が行う複数の符号に対する、それぞれの復号処理の処理順序を示すタイムチャートである。また、この説明図は、横軸を時間軸、縦軸をシンボルに対応する符号とし、連続する３つの符号（１つの符号に対して１つのシンボルが対応する）が、順次、復号処理される時間的な処理時間を示している。同一の符号に対して、上述した一連の処理（シフト処理、符号長特定処理、テーブルアクセス処理）が順次実行される。本ケースでは、期間ｔ0〜ｔ1でシフト処理（図中の無地）および符号長特定処理（図中の斜線）が期間ｔ0〜ｔ1において行われ、これに続く期間ｔ1〜ｔ3でテーブルアクセス処理（図中の網掛）が行われるものとする。
【００３２】
まず、期間ｔ0において、符号１に対するシフト処理が行われ、続いて符号長特定処理が行われる。この符号長特定処理により、符号１に本来の（１シンボルに対応する）符号長が特定されると、期間ｔ1において、今回（符号１）の復号処理（テーブルアクセス処理）と、次回（符号２）の復号処理（シフト処理・符号長特定処理）とが並行して開始される。このとき、テーブルアクセス処理と、シフト処理および符号長特定処理とは、互いに独立に処理されるので、連続した複数の処理単位を対象にした処理がパイプライン的に、換言すれば、同時並行的に処理される。
【００３３】
そして、期間ｔ2において、今回（符号２）の復号処理（テーブルアクセス処理）と、次回（符号３）の復号処理（シフト処理・符号長特定処理）とが並行して開始される。さらに、これらの処理と並行して、符号１の復号処理が行われる。このとき、３つのテーブル（ベーステーブル・オフセットテーブル・シンボルテーブル）の内容は、復号処理時においても不変であり、異なる符号列の復号時においても、同一テーブルに対して異なる複数の入力符号を対象にしたアクセスを受け付けることが可能である。そのため、複数のテーブルアクセス処理の並行処理ができる。
【００３４】
期間ｔ2〜ｔ3の後半で符号１の復号処理が、期間ｔ3〜ｔ4の後半で符号２の復号処理が、そして、期間ｔ4〜ｔ5の後半で符号３の復号処理がそれぞれ終了し、復号処理によって得られたシンボルが連続して出力される。
【００３５】
本実施形態によれば、符号長特定処理（およびシフト処理）とテーブルアクセス処理とは互いに独立しているため、ベーステーブルを用いた入力符号の符号長の特定を早期に行うことができ、これにより、処理のパイプライン化が可能になる。また、各テーブルの内容は復号処理時においても不変なので、異なる符号列の復号時においても同一テーブルに対して複数のアクセスを受け付けることが可能になるので、複数のテーブルアクセス処理の並行処理が可能である。これより、符号列全体の処理の高速化を図ることができる。
【００３６】
また、本実施形態によれば、復号化システム内に、次回に入力しえる符号列を保持しておく必要がないため、復号化システム全体の回路の大規模化を抑制することができる。
【００３７】
（第２の実施形態）
図４は、本実施形態における復号化システムの構成図である。第１の実施形態の復号化システムと同様に、カノニカルハフマン方式によって符号化された符号列を復号対象とし、複数のシンボルが並んだシンボル列が出力される。ただし、本実施形態の復号対象は、配列に特徴のあるシンボル列、具体的には、特定のキャラクタシンボルの直後に、別種類のシンボルを含み、かつ、この特定のキャラクタシンボルが予め判明しているシンボル列である。例えば、シンボル”ａ”の特定のキャラクタシンボル（特定シンボル）と、その直後の別種類のキャラクタシンボル（ランシンボル）とを含むシンボル列”ａ，４”の如くである。なお、このシンボル列の基礎となるシンボル列は、”ａ，ａ，ａ，ａ”である。
【００３８】
復号化システムは、バッファ１と、シフタ２と、メインデコーダ８と、２つのサブデコーダ（９ａ，９ｂ）とから構成されている。バッファ１は、上述した第１の実施形態のバッファと同様に、カノニカルハフマン方式によって符号化された符号列を記憶する。シフタ２は、第１の実施形態のそれと同様に、バッファ１に対してシフト処理を行うが、シフト処理自体の指示はメインデコーダ８と、第１および第２のサブデコーダ（９ａ，９ｂ）とによって行われる点が異なる。シフトされたビット（符号）は、これらのデコーダ（８，９ａ，９ｂ）へ入力される。
【００３９】
メインデコーダ８は、入力された符号のうち特定シンボルに対応する符号を復号化する。メインデコーダ８は、判定テーブル管理部８ａと、復号化部８ｂと、制御部８ｃとから構成されている。判定テーブル管理部８ａは、シンボル列の配列的な特徴に基づいて、予め設定された特定シンボルのそれぞれに対応付けて符号が記憶された判定テーブルを有する。復号化部８ｂは、この判定テーブル管理部８ａの判定テーブルを参照して、入力符号に対応した特定シンボルを復号結果として出力する。制御部８ｃは、今回の処理単位の符号列に特定シンボルの符号が含まれていると判定した場合、今回以降の処理単位に関する処理主体を選択的に指定する。
【００４０】
第１のサブデコーダ９ａは、メインデコーダ８に並列に設けられている。このサブデコーダ９ａは、自己が処理すべき複数の処理単位をパイプライン処理するとともに、メインデコーダ８（制御部８ｃ）からの指定に応じて、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として選択的に出力する。第１のサブデコーダ９ａの構成および動作は、第１の実施形態における演算デコーダ３のそれと同様に、複数のテーブルを参照して符号を復号化する。なお、本実施形態における第１のサブデコーダ９ａが有する各テーブルの記憶内容は、第１の実施形態における演算デコーダ３のそれと同様である。
【００４１】
第２のサブデコーダ９ｂは、第１のサブデコーダ９ａと同様に、メインデコーダ８に並列に設けられている。また、メインデコーダ８（制御部８ｃ）からの指定に応じて、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として選択的に出力する。第２のサブデコーダ９ｂの構成および動作は、第１の実施形態における演算デコーダ３および、第１のサブデコーダ９ａのそれと同様に、複数のテーブルを参照して符号を復号化する。なお、本実施形態における第２のサブデコーダ９ｂが有する各テーブルに記憶された内容は、第１の実施形態における演算デコーダ３のそれと異なっている。
【００４２】
図５は、判定テーブル管理部８ａの判定テーブルの構成図である。この判定テーブルは、符号と、この符号に対応するシンボルおよび符号長とがそれぞれ対応付けて記憶されている。同図の判定テーブルは、第１の実施形態のキャラクタシンボル（シンボル”Ａ”〜”Ｆ”で構成されたシンボル列を符号化した場合）に、ランシンボル（シンボル”２”〜”４”）を加えたシンボルのうち、特定シンボルをシンボル”Ｆ”，”Ｈ”および”４”とした場合の記憶内容である。
【００４３】
同図（ａ）は、第１のサブデコーダ９ａと並行して復号処理する場合における判定テーブルの構成図である。このテーブルに記述されている符号は全て最大符号長からなるビット列で構成されており、例えば、最大符号長が４の場合、記述される符号は全て４ビットで構成される。これは、バッファ１から入力される４ビットの符号を入力としたテーブル（判定テーブル）参照のみで、これに対応するシンボルを直接的に算出するためである。また、同図（ｂ）は、第２のサブデコーダ９ｂと並行して復号処理する場合における判定テーブルの構成図である。符号は、同図（ａ）と同様に、最大符号長からなるビット列で構成されているが、第２のサブデコーダと並行して復号化処理する場合に、入力し得る（ランシンボルに対応し得る）符号の最大符号長は２であるため、記憶される符号は２ビットで構成される。なお、本実施形態における特定シンボルには、復号処理の終了を示す終了シンボル（例えば、シンボル列の最後のシンボル）も含まれており、復号対象には、終了シンボルを符号化した符号も含まれる（本実施形態では、シンボル”Ｈ”およびシンボル”４”を終了シンボルとする）。
【００４４】
この判定テーブルを用いた具体例として、入力符号”０００１”からシンボルを復号化するケースについて説明する。なお、符号列の復号処理は、第１の実施形態で複数のテーブルを用いて復号化する演算デコードに対して、直接デコードという。直接デコードは、シフト処理と、テーブルアクセス処理とから構成される。また、この直前のシンボルは、特定シンボルでなかったものとする。
【００４５】
（シフト処理）
メインデコーダ８が行うシフト処理は、第１の実施形態とシフト処理と同様に、符号列の一部を入力符号として入力させる処理である。しかしながら、その具体的な制御は、第１の実施形態のそれと異なっている。まず制御部８ｃと、第１および第２のサブデコーダに内蔵された制御部（図示せず）とが、シフタ２に対してバッファ１にビットシフト処理の指示を行う。そして、シフタ２が、この指示にしたがってバッファ１をビットシフトさせ、入力符号をメインデコーダ８（復号化部８ｂ）と、第１および第２のサブデコーダ（９ａ，９ｂ）に入力させる。本ケースの場合、シフタ２がバッファ１に対してシフト処理を行うことで、４ビットの符号列”０００１”が入力符号として各デコーダに読み込まれる。
【００４６】
（テーブルアクセス処理）
メインデコーダ８が行うテーブルアクセス処理は、上述のシフト処理によって入力された入力符号から直接シンボルを出力する処理である。具体的には、復号化部８ｂは、入力符号と、判定テーブル管理部８ａから入力される判定テーブルの情報（符号・符号長・シンボル）とに基づいて、シンボルと符号長と出力する。そして、入力符号と同じ符号を有する符号に対応するシンボルが出力されるとともに、この符号に対応する符号長も出力される。本ケースの場合、入力符号”０００１”はシンボル”Ｆ”に対応するので、シンボル”Ｆ”が出力シンボルとして出力されるとともに、このシンボル”Ｆ”に対応する符号長”２”も出力される。これらのデータを受けた制御部８ｃは、この符号長”２”に基づいて、次回に各デコーダ（８，９ａ，９ｂ）へ入力させるシフト量を制御する。
【００４７】
図６は、第２のサブデコーダ９ｂの各テーブルの構成図である。第２のサブデコーダが有するテーブルの種類は、第１の実施形態におけるテーブルのそれと同様であるが、記述されている内容が異なる。具体的には、この記述内容には、シンボル列における特定シンボルに対する（直後に続く）ランシンボルを示すシンボル（数字）が含まている。同図（ａ）は、ベーステーブルの構成図、同図（ｂ）は、オフセットテーブルの構成図、同図（ｃ）は、シンボルテーブルの構成図である。ここで留意すべきは、通常の（キャラクタ）シンボルとは別のテーブルを用いてランシンボルが符号化されているために、使用するテーブルのサイズが小さくて済むという点である。本実施形態では、同図（ａ）のベーステーブルによると、符号長１〜２で構成されている。
【００４８】
図７は、復号処理のフローチャートである。まず、ステップ１において、今回の処理単位となる符号が入力される。具体的には、シフタ２によって、バッファ１に格納された符号列の一部が入力符号として、メインデコーダ８および第１のサブデコーダ９ａに入力される。続くステップ２において、メインデコーダ８および第１のサブデコーダ９ａは、この入力符号を復号処理する。
【００４９】
ステップ３において、メインデコーダ８は、ステップ２で復号処理する入力符号から特定シンボルを出力したか否かを判定する。具体的には、制御部８ｃは、復号化部８ｂから特定シンボル（復号化の終了を示すシンボル）を出力したか否か、つまり、次回の入力される入力符号がランシンボルまたは終了シンボルであるか否かを検出する。特定シンボルが検出された場合、処理をステップ４へ進め、一方、特定シンボルが検出されなかった場合、処理をステップ１へ戻す。
【００５０】
ステップ４において、ステップ３において出力された特定シンボルが終了シンボルであるか否かが判定される。具体的には、制御部８ｃは、特定シンボルは終了シンボルであるか否か、つまり、次回の復号処理を終了するか否かを検出する。特定シンボルが終了シンボルでない場合、処理をステップ５へ進め、終了シンボルである場合、復号処理を終了する。
【００５１】
ステップ５において、第１のサブデコーダ９ａは、ステップ２で入力された入力符号に対する復号処理を中止する。具体的には、制御部８ｃは、第１のサブデコーダ９ａに対して、ステップ２で入力された入力符号の復号処理を中止する旨を指示する。第１のサブデコーダ９ａは、この指示に応じて、復号処理を中止する。その際、制御部８ｃは、シフタ２に対して、復号化部８ｂがシンボルと共に生成した符号長に基づいて、新たな符号を入力させる（シフト処理を行う）旨を指示する。
【００５２】
つぎに、ステップ６において、ステップ１の入力符号の直後に続く符号である新たな符号が入力される。具体的には、シフタ２によって、バッファ１に格納された符号列の一部が新たな入力符号として、メインデコーダ８および第２のサブデコーダ９ｂに入力される。続くステップ７において、メインデコーダ８および第２のサブデコーダ９ｂは、この新たな入力符号を復号処理する。
【００５３】
ステップ８において、メインデコーダ８は、ステップ７で復号処理する新たな入力符号から特定シンボルを出力したか否かを判定する。具体的には、制御部８ｃは、復号化部８ｂから特定シンボルを出力したか否か、つまり、次回の入力される入力符号がランシンボルまたは終了シンボルであるか否かを検出する。特定シンボルが検出された場合、処理をステップ９へ進め、一方、特定シンボルが検出されなかった場合、処理をステップ１へ戻す。
【００５４】
ステップ９において、ステップ８において出力された特定シンボルが終了シンボルであるか否かが判定される。具体的には、制御部８ｃは、特定シンボルは終了シンボルであるか否か、つまり、次回の復号処理を終了するか否かを検出する。特定シンボルが終了シンボルでない場合、処理をステップ１０へ進め、終了シンボルである場合、復号処理を終了する。
【００５５】
ステップ１０において、第２のサブデコーダ９ｂは、ステップ６で入力された新たな入力符号に対する復号処理を中止する。具体的には、制御部８ｃは、第２のサブデコーダ９ｂに対して、ステップ６で入力された入力符号の復号処理を中止する旨を指示する。第２のサブデコーダ９ｂは、この指示に応じて、復号処理を中止する。その際、制御部８ｃは、復号化部８ｂがシンボルと共に生成した符号長に基づいて、シフタ２に対して新たな符号を入力させる旨を指示する。本実施形態のシンボル列において、特定シンボル（ランシンボル）の次に出現する特定シンボルは、終了シンボルのみである（ランシンボルは連続しない）からであり、ステップ９にて終了シンボルを検出しなかった場合の次のシンボルは、通常の（キャラクタ）シンボルであるからである。
【００５６】
なお、ステップ１およびステップ６において、入力される入力符号は、ステップ１では第２のサブデコーダ９ｂ、ステップ６では第１のサブデコーダ９ａにも入力されていてもよい。ただし、その場合、それぞれのサブデコーダ９ａ，９ｂは、自己が処理すべき処理単位を復号化することによって得られたシンボルを復号結果として出力するため、正しい復号結果は得られない。したがって、これらの復号結果は破棄または削除される。
【００５７】
図８は、復号処理の説明図である。この説明図は、図７の処理フローチャートに基づいて、それぞれのデコーダ８，９ａ，９ｂが行う複数の入力符号に対する、それぞれの復号処理の処理順序を示すタイムチャートである。メインデコーダ８は、１つの符号に対して、上述した２つの処理（シフト処理・テーブルアクセス処理）を順次実行する。また、第１の実施形態の演算デコーダ３と同様に、第１のサブデコーダ９ａおよび第２のサブデコーダ９ｂは、１つの符号に対して、上述した３つの処理（シフト処理・符号長特定処理・テーブルアクセス処理）を順次実行する。
【００５８】
つぎに、この説明図に基づいて、連続する６つのシンボルに対応した符号列（符号１〜６）の復号処理について説明する。一例として、符号列は、特定シンボルをシンボル”Ｆ”，”Ｈ”，”４”とし、そのうち、”Ｈ”，”４”を終了シンボルとしたシンボル列”Ａ，Ｂ，Ｆ，２，Ｆ，４”を符号化したものである。ここで、シフト処理（無地）内に記載された括弧内の値は、入力される符号（１つのシンボルを含むまとまり）の順序を示し、同じ括弧内の値を持つシフト処理は、同じ符号に対して行われることを示す。例えば（１）は符号１、（２）は符号２を示しており、その横に連続する処理は同一の符号に対する処理である。
【００５９】
まず、期間ｔ0において、シフタ２によるシフト処理が行われ、符号１がメインデコーダ８および第１のサブデコーダ９ａに読み込まれる（ステップ１）。そして、この符号１に対してメインデコーダ８は、テーブルアクセス処理を行うとともに、これと並行して、第１のサブデコーダ９ａは、符号長特定処理を行う（ステップ２）。
【００６０】
期間ｔ1では、メインデコーダ８が符号１から特定シンボルを復号しないので、これと並行して符号長特定処理を行っていた第１のサブデコーダ９ａが、算出した符号１の符号長に基づいて、シフト処理をシフタ２に指示する（ステップ３）。そして、符号２がメインデコーダ８および第１のサブデコーダ９ａに読み込まれる（ステップ１）。つぎに、期間ｔ0と同様に、この符号２に対して、メインデコーダ８および第１のサブデコーダ９ａが復号処理を行う（ステップ２）。一方、符号１の復号処理は、第１のサブデコーダ９ａが引き続き行う。
【００６１】
期間ｔ2において、期間ｔ1と同様に、メインデコーダ８が符号１から特定シンボルを復号しないので、これと並行して符号長特定処理を行っていた第１のサブデコーダ９ａが、算出した符号２の符号長に基づいて、シフト処理をシフタ２に指示する（ステップ３）。そして、符号３がメインデコーダ８および第１のサブデコーダ９ａに読み込まれる（ステップ１）。つぎに、期間ｔ0と同様に、この符号２に対して、メインデコーダ８および第１のサブデコーダ９ａが復号処理を行う（ステップ２）。
【００６２】
一方、符号２の復号処理（テーブルアクセス処理）は、第１のサブデコーダ９ａによって引き続き行われる。これは、第１の実施形態と同様に、第１のサブデコーダ９ａのテーブルの記述内容は復号処理時においても不変だからである。これにより、異なる符号列の復号時においても同一テーブルに対して、複数のアクセスを受け付けることが可能であり、複数の符号に対する復号処理のパイプライン処理が可能となる。
【００６３】
期間ｔ3において、メインデコーダ８が符号３から終了シンボルでない特定シンボル”Ｆ”を復号するので、（ステップ３，４）、メインデコーダ８（制御部８ｃ）は、第１のサブデコーダ９ａの符号３に対する復号処理を中止させる（ステップ５）。そして、特定シンボルと並行して算出された符号長をもとに、メインデコーダ８がシフト処理をシフタ２に指示し、符号４がメインデコーダ８および第２のサブデコーダ９ｂに読み込まれる（ステップ６）。つぎに、この符号４に対して、メインデコーダ８および第２のサブデコーダ９ｂが復号処理を行う（ステップ７）。なお、符号２の復号処理は、第１のサブデコーダ９ａによって引き続き行われる。
【００６４】
期間ｔ4において、メインデコーダ８が符号１から特定シンボルを復号しないので、並行して符号長特定処理を行っていた第２のサブデコーダ９ｂが、算出した符号４の符号長に基づいて、シフト処理をシフタ２に指示する（ステップ８）。そして、符号５がメインデコーダ８および第１のサブデコーダ９ａに読み込まれ、復号処理される（ステップ１，２）。なお、符号４の復号処理は、第２のサブデコーダ９ｂによって引き続き行われる。
【００６５】
期間ｔ5において、期間ｔ3と同様にメインデコーダ８が符号５から終了シンボルでない特定シンボル”Ｆ”を復号するので、（ステップ３，４）、メインデコーダ８は、第１のサブデコーダ９ａの符号３に対する復号処理を中止させる（ステップ５）。そして、メインデコーダ８がシフト処理をシフタ２に指示し、符号６がメインデコーダ８および第２のサブデコーダ９ｂに読み込まれ、復号処理される（ステップ６，７）。つづく、期間ｔ6において、メインデコーダ８が符号６から終了シンボルである特定シンボル”４”を復号するので、（ステップ８，９）、復号処理を終了する。
【００６６】
このように、本実施形態によれば、第１の実施形態と同様に、復号処理のパイプライン化を行うことに加えて、特定シンボルの直後に続くランシンボルを含むシンボル列を符号化した符号列であっても、復号処理をパイプライン化することができる。これにより、符号列全体の処理の高速化を図ることができる。また、本実施形態によれば、第１の実施形態と同様に、復号化システム内部に、次回に入力され得る符号を保持しておく必要がないため、復号化システム全体の回路の大規模化を防ぐことができる。
【００６７】
なお、上述した実施形態では、特定シンボルと、その直後にランシンボルとが含まれたシンボル列を符号化した符号列を復号処理した。しかしながら、本発明はこれに限定されるものではなく、例えば、前後する２つのシンボル間に相関関係を含むシンボル列を符号化した符号列でも適用できる。ここで、相関関係とは、あるシンボルの次（回）のシンボルが、所定のシンボルである確率が高い関係を指す。
【００６８】
一例として、シンボル列”Ａ，Ｂ，Ｃ，Ａ，Ａ，Ｂ，Ｃ，Ａ，Ａ，Ｂ，Ｃ，Ｄ”にのように、シンボル”Ａ”の次に出現するシンボルがシンボル”Ｂ”である確率が高いケースについて考える。この場合、判定テーブルに設定する特定シンボルをシンボル”Ａ”とし、シンボル”Ａ”の次のシンボル専用の演算デコーダを第２のサブデコーダ９ｂとすることで対応が可能である。つまり、特定シンボルと相関関係のあるランシンボルを別のキャラクタシンボルと置換することにより、上述と同様の効果を得ることができる。また、この場合、符号列からの復号処理において、シンボル”Ａ”が連続する場合、第２のサブデコーダ９ｂは、第１の実施形態の演算デコーダ３と同様に、同一テーブルを用いたパイプライン処理をすることができる。
【００６９】
さらに、このような相関関係を含むシンボルが複数連続するシンボル列を符号化した符号列に対しても適用可能である。具体的には、ある順序で出現する（復号化される）シンボルの次のシンボルが、所定のシンボルである確率が高いといった如くである。
【００７０】
一例として、シンボル列”Ａ，Ｂ，Ｃ，Ｂ，Ａ，Ｂ，Ｃ，Ｃ，Ａ，Ｂ，Ｃ，Ｄ”のように、シンボル”Ａ，Ｂ”の順序で出現する次のシンボルが、シンボル”Ｃ”である確率が高いケースについて考える。この場合、判定テーブルに設定する特定シンボルをシンボル”Ａ”および”Ｂ”とし、さらにメインデコーダ８内（例えば、制御部８ｃ）に、最近出力したシンボルを記憶可能なバッファを設ける。そして、各デコーダ（８，９ａ，９ｂ）と並列に、さらに第３のサブデコーダ（図示せず）を設け、シンボル”Ａ”の次のシンボル専用の演算デコーダを第２のサブデコーダ９ｂとし、シンボル”Ｂ”の次のシンボル専用の演算デコーダを第３のサブデコーダとすることで対応が可能である。つまり、相関関係の連続する特定シンボルの数に応じて、演算デコーダであるサブデコーダを設けることにより、上述と同様の効果を得ることができる。このとき、メインデコーダ８は、今回を含む連続した処理単位に特定シンボルの符号が所定の順序で含まれていると判定した場合、この符号に対応した特定シンボルを復号結果として出力するとともに、今回以降の処理単位に関する処理主体をさらに選択的に指定する。具体的には、メインデコーダ８は、前回の処理単位で特定シンボルが”Ａ”を出力し、今回の処理単位特定シンボル”Ｂ”を出力すると判定した場合、制御部８ｃが、次回の符号の処理主体を第３のサブデコードに指定する。
【００７１】
また、この場合、先に述べた拡張例と同様に符号列からの復号処理において、シンボル”Ａ”が連続して復号化される場合には第２のサブデコーダ９ｂが、シンボル”Ｂ”が連続して復号化される場合には第３のサブデコーダが、それぞれ第１の実施形態の演算デコーダ３と同様に、同一テーブルを用いたパイプライン処理を実行してもよい。
【００７２】
なお、上述の２つの拡張例においても、特定シンボルを復号処理するメインデコーダ８が有する判定テーブルは１つであるが、本発明はこれに限らず、メインデコーダ８が判定する（出力する）シンボルの種類に応じて複数有してもよい。例えば、拡張案１において、シンボル”Ａ”の次のシンボルに対して（第２のサブデコーダ９ｂと並行して）復号処理をする場合に用いる判定テーブルと、通常の（第１のサブデコーダ９ａと並行する）復号処理に用いる判定テーブルと分けてもよい。これは、シンボル列が、上記の相関関係を考慮されたことによって異なるテーブルを用いて符号化された符号列に対応するためである。
【００７３】
さらに、上述した拡張案を含む各実施形態では、復号対象が"ａ"や"ｂ"といったテキスト（文字）や、”２”や”３”といった数値（数字）が含まれたシンボル列を符号化した符号列について説明した。しかしながら、本発明はこれらに限定されるものではなく、例えば、画像データや音声データといったデータ形式であっても適用可能なのは当然である。
【図面の簡単な説明】
【００７４】
【図１】第１の実施形態における復号化システムの構成図
【図２】演算デコーダのテーブルの構成図
【図３】復号処理の説明図
【図４】第２の実施形態における復号化システムの構成図
【図５】判定テーブルの構成図
【図６】第２のサブデコーダのテーブルの構成図
【図７】復号処理のフローチャート
【図８】復号処理の説明図
【符号の説明】
【００７５】
１  バッファ
２  シフタ
３  演算デコーダ
４  ベーステーブル管理部
５  符号長特定部
６  復号処理部
６ａ  オフセットテーブル管理部
６ｂ  シンボルテーブル管理部
６ｃ  アドレス生成部
７  制御部
８  メインデコーダ
８ａ  判定テーブル管理部
８ｂ  復号化部
８ｃ  制御部
９ａ  第１のサブデコーダ
９ｂ  第２のサブデコーダ
【図１】
2007104194.tif 000003
【図２】
2007104194.tif 000004
【図３】
2007104194.tif 000005
【図４】
2007104194.tif 000006
【図５】
2007104194.tif 000007
【図６】
2007104194.tif 000008
【図７】
2007104194.tif 000009
【図８】
2007104194.tif 000010