(57)【特許請求の範囲】
【請求項１】
可変長符号データの復号処理を行なう復号処理表を具備した復号処理手段を備え、
前記復号処理表は、前記復号処理において次に実行する復号処理で参照すべき次表を指定する識別情報と前記次表を参照する際に、前記可変長符号データから切り出すべきビット数を示す識別情報とを格納した第１のフォーマットと、前記復号処理を繰り返して得られた復号結果と前記可変長符号データに対する参照すべき有効ビット数とを格納した第２のフォーマットの少なくとも２種類のフォーマットを有し、
前記復号処理表の各エントリに格納されるデータが、前記第１のフォーマットおよび前記第２のフォーマットの少なくとも２種類のフォーマットのいずれかにより記述され、
前記２種類のフォーマットは、データの格納位置をアドレスにより指定可能な記憶装置に格納され、
前記２種類のフォーマットを複数用いて前記復号処理で参照する前記復号処理表を構成し、
前記第１のフォーマットが含む前記次表を指定する識別情報は次表の先頭アドレスを相対アドレスで示し、前記相対アドレスの基準となるアドレスは、前記相対アドレスを格納したエントリを構成要素とする前記復号処理表の最後のエントリの次のアドレスであることを特徴とする可変長符号復号装置。
【請求項２】
請求項１に記載の可変長符号復号装置において、
前記次表を格納しているメモリのアドレスに、前記可変長符号復号装置のエントリのサイズ単位で割り振ったアドレスを使用することでアドレスの下位ビットを省略したことを特徴とする可変長符号復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号の復号処理装置に係り、特に、可変長符号を用いて圧縮を施されたデータを復号する際に使用するテーブルメモリサイズを抑制可能な可変長符号復号装置に関する。
【背景技術】
【０００２】
本発明に係わる背景技術に特許文献１に示された方法がある。特許文献１では、復号処理用の表を参照する際、可変長符号語の共通ビットに着目し、１回の復号処理用の表参照において可変長符号から切り出し参照するビットをあるビット数（ｍビットとする）に制限し、ｍビット以上で構成される符号語については、一旦ＭＳＢ側の共通ビット部分のみを処理することで、１個の復号処理用の表サイズをｍビット分に対応するエントリ数である２のｍ乗エントリまで小さくしている。符号語の共通ビット以降の部分については、共通ビットの後の部分に対応する別の復号処理用の表を参照して復号処理を継続し、復号動作を完了する。この際、２回目以降の復号処理用の表参照でも、その表参照に用いる符号語部分、すなわち前回の表参照で共通ビットとして取り扱われたビットより後の部分、がｍビット以上であれば、その符号語部分についてＭＳＢ側にある共通ビットを除いた部分で次の表の参照を繰り返し行い、復号処理を完了する。
【０００３】
【特許文献１】特開２００３−３０９４７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に示された方法は、各回の復号処理用の表参照において、ｍビット以上で構成される符号語の共通ビットに注目し、共通ビットの後の部分の復号に用いる表、すなわち次の回で使用する復号処理用の表は一意に定まる必要がある。したがって、符号表を構成するｍビット以上の符号語全てについてＭＳＢ側の共通ビットが一意に決まる必要があり、ｍが既に決まっているハードウェアを使用する場合では、ｍビットにＭＳＢ側の共通ビットが収まらない符号表の構成では復号処理に対応できない。また逆にいえば、符号表の構成により、ｍに利用可能な最低値が定まり、復号処理用の表のエントリ数を削減する上で支障となる。
特許文献１に示された方法では、共通ビットより後の部分から次の復号処理用の表を参照するため、表参照に使用するビット数より共通ビット部分が短い場合、その差のビット分については、次の表参照でも利用する。すなわち、そのビット分は複数回参照が行われるため、その分復号処理用の表のエントリが余分に必要となる。
【０００５】
復号処理に用いる表の傾向として、切り出すビット数が短いほど復号に必要な表のサイズの合計は小さくなるが、表引きの回数が多くなり復号処理が遅くなるというトレードオフが存在する。しかし、特許文献１に示された方法では、最初に参照する表でも２回目以降で参照する表でも符号語から常に同じビット数を切り出して表を参照するため、このトレードオフを考慮して、切り出すビット数を調整することができない。
【０００６】
そこで、本発明の目的は、符号表の共通ビット部分に依存せず１回の復号用の表引きあたりに関し符号語から参照するビット数を調整でき、復号処理時に符号語から切り出したビットの複数回参照を抑制して復号に必要な表に含まれる無駄なエントリを抑制し、さらに復号に必要な表のサイズと復号処理速度のトレードオフを調整可能な可変長符号復号装置を提供することにある。
【課題を解決するための手段】
【０００７】
復号用の表を構成する際に、表の各エントリに復号処理完了か継続かを示す１ビットのフラグを設ける。復号処理完了のエントリには復号結果と有効ビット数を記録する。復号処理継続のエントリには次の処理に利用する復号用の表を識別する情報と、次の表の参照時に利用する符号語から切り出すビット数を記録する。復号処理開始時、すなわち最初の表を参照する際、符号語と共に、利用する表を識別する情報と表参照に際して符号語のＭＳＢ側から参照するビット数を指定する。
【０００８】
復号処理に際しては、表のエントリが処理継続エントリであれば、符号語から既に参照した分のビットを読み進め、当該エントリの内容に基づき次に参照する表を選択し、次の表の参照時に符号語から参照するビット数を決定する。次の表に関しても同様の処理を繰り返す。表のエントリが処理完了エントリとなったら、当該エントリの内容から復号結果を得る。
【発明の効果】
【０００９】
本発明によれば、可変長符号の復号処理において、処理性能と復号に必要な表のサイズのトレードオフの調整が可能となり、復号に用いる表の合計サイズに対して効果的に処理性能を向上できる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明の実施例を図を用いて詳細に示す。
【実施例１】
【００１１】
本発明では、ある符号表に対応する可変長符号の復号を行う際に、図１で示したフォーマットのデータを格納したエントリで構成される復号処理用の表を複数用い、復号処理用の表を順次参照することで復号処理を行う。但し、復号処理用の表が１個で済むケースもある。まず本発明の主な特徴である表のエントリに格納するデータフォーマットの構成例について説明し、符号表に対応する復号処理用の表の作成方法は後述する。尚、図1では表のエントリが１６ビットであることを想定しているが、実装によってはビット幅を変更することもあり得る。
【００１２】
図1に示すように、表のエントリに格納するデータにはフォーマット１とフォーマット２の２種類があり、どちらのフォーマットであるかは、格納データのＭＳＢで判別可能である。すなわち、ＭＳＢが０（１０１）であればフォーマット１であり、ＭＳＢが１（２０１）であればフォーマット２である。フォーマット識別にはＭＳＢ以外のビットを割り当てることも可能であるし、必要に応じて２ビット以上の部分を割り当てることも考えられる。
【００１３】
フォーマット１は可変長符号復号処理継続を示すデータフォーマットで、次表参照ビット数１０２及び次表アドレス１０３で構成する。本発明では、復号処理用の表を順次参照する必要があるので、次表アドレス１０３を用いて次に参照する表を識別する。次表アドレス１０３は次に参照する表が格納されたメモリ上のアドレスを示す。このアドレスは現在参照している復号処理用の表が格納されたメモリ領域の直後のアドレスからの相対アドレスである。但し、直接アドレスを用いる実装も考えられるし、次表アドレスが格納されたエントリからの相対アドレスを用いる実装も考えられる。図１に示すデータフォーマットでは１エントリが１６ビットを想定しているので、１６ビット単位のアドレス、すなわちバイト単位のアドレスを１ビット右シフトしたアドレスを格納して、アドレスのＬＳＢ１ビット分を節約する。ただし、バイト単位のアドレスで格納する実装も考えられる。
次表アドレス１０３の代わりに次表を識別可能なインデックス番号を用いる実装も可能である。インデックス番号から表の場所を特定する表を別途用意すれば、インデックス番号から次表を特定可能である。すなわち、次表アドレス１０３は次に参照する表を特定できる手段であれば代用可能である。
【００１４】
次表参照ビット数１０２は次表参照時に可変長符号から何ビット切り出して表参照を行うかを示す部分である。すなわちここのフィールドが１であれば１ビットを可変長符号から切り出して次表の参照に用い、２であれば２ビット、というように可変長符号から切り出すビット数を特定する。このビット数をｎとすると、次表は２のｎ乗個のエントリで構成することになる。
【００１５】
フォーマット２は可変長符号復号完了を示すデータフォーマットで、有効ビット数２０４と復号結果２０５で構成する。復号結果２０５は可変長符号の復号結果を格納する部分である。復号結果には通常符号語番号を格納するが、符号語番号からさらに表引き処理で別の値に変換する必要がある場合、最終的な結果を格納する場合も考えられる。
【００１６】
有効ビット数２０４は、現在の表引きに際して可変長符号から実際に取り出すビット長を示す。復号処理用の表参照に当たっては、前回の表引き結果あるいは復号処理時開始時のパラメータから表参照時に可変長符号から切り出すビット数が指定されるが、可変長符号の最後の部分の長さは必ずしも表引きの際に切り出すビット長と一致しないため、現在復号中の可変長符号の終端を特定するために有効ビット数２０４の情報が必要となる。有効ビット数２０４は可変長符号の終端部分以外の表参照に対応するフォーマット１では不要であるため、フォーマット１には存在しない。
【００１７】
有効ビット数２０４は存在し得ないビットパターン検出にも利用可能である。可変長符号の構成によっては、可変長符号として割り当てられていないビットパターンが存在し得る。このような異常なビットパターンを検出するため、異常なビットパターンであることが確定するエントリのデータでは有効ビット数２０４に０を登録する。有効ビット数２０４は正常に復号処理ができた場合は必ず１以上になるので、有効ビット数２０４が０であることを検出して、異常を検出可能である。
【００１８】
次に図２に符号表の例を示し、図２に対応する図１で示したフォーマットのデータを格納したエントリで構成される復号処理用の表のセットの作成方法について説明する。図２の可変長符号表に対応する復号処理用の表のセットの構成例は図３から図６に示すようになる。本発明では、復号処理に通常複数の表、すなわち表のセットが必要であり、図３から図６全体で復号処理用の表のセットの一例に対応する。
図３から図６に示した表の各エントリは図１で示したフォーマットのデータで構成するため、次表アドレス１０３と次表参照ビット数１０２の組み合わせか、有効ビット数２０４と復号結果２０５の組み合わせのいずれかとなる。
【００１９】
図２の可変長符号表には、符号語番号と、符号語（可変長符号）、及び符号語のビット数の関係が示してある。可変長符号の復号処理とはすなわち符号語からそれに対応する符号語番号を得ることである。但し、実際の応用においては、符号語番号を元に再度変換処理を施す場合もあり、このような場合、復号結果として符号語番号を変換した値を直接得ることも考えられる。符号語のビット数とは、符号語を構成するビット数を示している。
【００２０】
図３から図６に示す復号処理用の表のセットを構成する表Ａから表Ｄにおいて、符号語は復号処理対象の可変長符号の一部分に相当する。本発明では復号処理において可変長符号を一部分ずつ参照して処理を進めるが、表Ａから表Ｄにおける符号語は、このとき各表を参照する際に可変長符号から参照する部分のビットに対応する。
復号処理用の表参照で参照するエントリを決定するためには、当該エントリのオフセットアドレスを求める必要があるが、オフセットアドレスは可変長符号から参照するビット部分を２進数とみなした値と等価であるので、簡単に算出可能である。尚、表Ａから表Ｄにおいてオフセットアドレスは何番目のエントリであるか示しており、１エントリ１６ビットの構成ではオフセットアドレス１個分で２バイト分に相当する。
【００２１】
可変長符号表から本発明に用いる復号用の表は次の手順で作成する。まず、復号処理用の表で、可変長符号を原則として何ビットずつ参照するか決める。図３から図６に示した復号処理用の表は２ビットずつ参照する場合に対応する。復号処理用の表はnビット参照する場合２のn乗エントリで構成されるため、参照ビット数を増加させると、復号処理に必要な表のセットを構成する表の数は減少するが、個々の復号処理用の表のサイズは指数関数的に大きくなるので、結果的に表のセットのサイズが大きくなる。しかし、参照ビット数が少ないと、符号語の長い可変長符号を復号する際に復号処理用の表を順次参照する回数が増加し、復号処理時間が必要となる。さらに次の表を辿る情報、すなわち図１のフォーマット１に対応する情報が増加し、復号処理に用いる表のセットのサイズが増加する要因となる。そこで、これらの事情を考慮して参照ビット数を決定する必要があるが、通常は２から４ビット単位程度で参照するのが良い。
【００２２】
復号処理用の表で参照するビット数を決定したら、符号表で符号語をそのビット数単位で区切って考える。図３から図６に示した復号処理用の表作成では、原則２ビット単位で参照した場合に対応する。
最初に参照する表の作成では、図２の可変長符号表で符号語のＭＳＢから最初の２ビットに着目する。この場合、２ビットの全ての組み合わせ、すなわち００、０１、１０、１１についてのエントリを持つ表を作成する。この表を図３に表Ａとして示す。
【００２３】
図２の符号表に従うと、００と１１は２ビットで符号語が完結するので、表Ａでは当該エントリに図１に示すフォーマット２で有効ビット数２０４と復号結果２０５を格納する。有効ビット数２０４については、符号語００、１１ともに図２の符号表で符号語のビット数が２であるため、ともに２を格納する。復号結果２０５については、００のエントリでは符号語００に対応する符号語番号である０を、１１のエントリでは符号語１１に対応する符号語番号である１を格納する。０１と１０は２ビットでは符号語は完結しないので、表Ａでは当該エントリに図１に示すフォーマット１で次表アドレス１０３と次表参照ビット数１０２を格納する。次表参照ビット数１０２には、０１と１０のエントリでは次表の参照時も符号語から２ビットを参照して行うこととして２を指定する。次表アドレス１０３には、メモリにどのように表を格納するか依存するので、参照する表の名称を記入している。
【００２４】
表Ａで参照した符号語のＭＳＢ２ビットが０１である場合に、この２ビットに続くビットの復号処理を行うため、表Ｂを復号処理用の表として用意する。表Ｂの内容を図４に示す。表Ｂは符号語のＭＳＢから数えて３ビット、４ビット目を参照し復号処理を行うための表である。
【００２５】
表Ｂでも２ビットに着目して処理を行うため、２ビットの全ての組み合わせについての表を作成する。００、１０及び１１のエントリでは、表Ａに続いて表Ｂを参照することで符号語が完結するので、図１に示すフォーマット２で有効ビット数２０４と復号結果２０５を格納する。この際、有効ビット数２０４については、００、１０及び１１のエントリで、符号語の完結に２ビット全体を参照する必要があるため、２を格納する。復号結果２０５については、表Ａでの参照ビットも含めて考え、００のエントリでは符号語０１００に対応する符号語番号である７を、１０のエントリでは符号語０１１０に対応する６を、１１のエントリでは符号語０１１１に対応する８を格納する。０１のエントリについては  図２の符号表で符号語が割り当てられていないため、図１に示したフォーマット２で有効ビット長２０４にエラーを示す０を格納する。有効ビット長０は通常あり得ないので、後にエラーとして検出可能である。
【００２６】
表Ａで参照した符号語のＭＳＢ２ビットが１０である場合に、この２ビットに続くビットの復号処理を行うため、表Ｃを復号処理用の表として用意する。表Ｃの内容を図５に示す。表Ｃは符号語のＭＳＢから数えて３ビット、４ビット目を参照し復号処理を行うための表である。
【００２７】
表Ｃでも２ビットに着目して処理を行うため、２ビットの全ての組み合わせについての表を作成する。００、１０及び１１のエントリでは、表Ａに続いて表Ｃを参照することで符号語が完結するので、図１に示すフォーマット２で有効ビット数２０４と復号結果２０５を格納する。この際、有効ビット数２０４については、００のエントリで、符号語の完結に２ビット全体を参照する必要があるため、２を格納する。１０及び１１のエントリでは最初の１ビットの部分で符号語が完結するため、１を格納する。すなわち１０及び１１のエントリは同一の符号語に対応するエントリである。同一の符号語に対して２個のエントリを使用するのは、表Ｃ参照における２ビット目が復号処理対象の符号語でなく、次の符号語の先頭部分に相当するため、次の符号語次第で０にも１にもなり得るからである。復号結果については表Ｂと同様に表Ａでの参照ビットも含めて考え、００のエントリでは符号語１０００に対応する符号語番号である４を、１０及び１１のエントリでは符号語１０１に対応する３を格納する。
【００２８】
表Ｃの０１のエントリでは、表Ａ、表Ｃと参照してもまだ符号語が完結しないので、図１で示すフォーマット１で次表アドレス１０３と次表参照ビット数１０２を格納する。次表参照ビット数１０２には、１を指定する。これは、次の表参照では必ず１ビット以内で符号語が完結するため、２ビット参照にすると表に無駄が生じるからである。すなわち、復号処理用の表ごとに参照ビット数が設定可能であるため、参照ビット数を変更して復号処理用の表のサイズを抑制する。
【００２９】
表Ｃで０１のエントリを参照した場合に、この２ビットに続くビットの復号処理を行うため、表Ｄを復号処理用の表として用意する。表Ｄの内容を図６に示す。表Ｄは符号語のＭＳＢから数えて５ビット目を参照し復号処理を行うための表である。
【００３０】
表Ｄでは１ビットに着目して処理を行うため、１ビットの全ての組み合わせについての表を作成する。０及び１のエントリでは、表Ａ、表Ｃに続いて表Ｄを参照することで符号語が完結するので、図１に示すフォーマット２で有効ビット数２０４と復号結果２０５を格納する。０及び１のエントリ共に符号語から１ビット参照することで符号語が完結するので、有効ビット数２０４には１を格納する。復号結果２０５には表Ａ、表Ｃでの参照ビットも含めて考え、０のエントリでは符号語１００１０に対応する符号語番号２を、１のエントリでは符号語１００１１に対応する符号語番号５を格納する。
【００３１】
図２から図６を用いて具体的な可変長符号表とそれに対応する復号処理用の表を示したが、この方法は符号語番号が復号結果２０５に格納可能な範囲に収まる任意の可変長符号に対応可能である。復号処理用の表作成に当たっては、一般的には次のように行う。まず、ある復号処理用の表で可変長符号の何ビットを参照するか決定し、その表で参照したビットで可変長符号が完結する場合、図１のフォーマット２を登録する。この際、参照したビットより短いビットで可変長符号が完結する場合、余ったビット部分については全ての組み合わせについて同じ登録を行う。可変長符号が完結しない場合、エントリごとに次に参照する復号処理用の表を新たに割り当てる。新たに割り当てた表は、可変長符号から既に参照した部分を除いたビットに注目して、最初と同様の方法で作成する。この操作を再帰的に行うことで、復号処理に必要な全ての表を作成する。
個々の復号処理用の表は、その表からエントリを選択する際、可変長符号から何ビット参照するかによりエントリ数が決まる。先にも説明したように、可変長符号のnビットを参照する場合、復号処理用の表は２のn乗エントリで構成するため、ｎの増大は復号処理用の表のサイズを指数関数的に増大させる点に配慮が必要である。
【００３２】
本発明による復号処理では個々の復号処理用の表毎に可変長符号から参照するビット数を指定可能である。一方、可変長符号は一般的に短い符号長の出現頻度が高くなるように設計されている。さらに、可変長符号のMSB側に対応する復号処理用の表は復号処理毎に毎回利用する。そこで、可変長符号のMSB側に対応する表、すなわち最初に参照する表だけ可変長符号から参照するビット数を多くする方法も考えられる。
【００３３】
復号処理用の表を用いて実際に復号処理を行う手順を図７に示す。復号処理を行うに当たり、可変長符号に加えて、最初に用いる復号処理用の表の指定と、その表を参照する際に可変長符号から参照するビット数を指定する必要がある。Ｓ３０１では指定に基づき、初期の復号処理用の表を選択する。Ｓ３０２では指定に基づき参照ビット数の初期値を設定する。
【００３４】
Ｓ３０３では、可変長符号から参照ビット数分を復号処理用の表参照用に切り出す。この時点では可変長符号から参照した部分を捨てる操作は行わない。Ｓ３０４では選択されている復号処理用の表からＳ３０３で切り出した参照ビットで選択されるエントリを参照する。Ｓ３０５で参照したエントリのフォーマットを確認しフォーマット２でなければＳ３０６へ移行する。
【００３５】
Ｓ３０６では参照ビット数分を可変長符号から読み捨てる。すなわち、可変長符号で次回参照する部分を参照ビット数分進める。Ｓ３０７及びＳ３０８ではＳ３０５で参照したエントリの内容に基づき、復号処理用の表を切り替え、参照するビット数を変更する。そしてＳ３０３へ戻り処理を繰り返す。
【００３６】
Ｓ３０５で参照したエントリのフォーマットがフォーマット２であれば、Ｓ３１０でエントリの有効ビット数２０４の値を確認する。有効ビット数２０４が０である場合、Ｓ３２０でエラー処理を行い、復号処理完了となる。有効ビット数２０４が０でない場合、Ｓ３１１において有効ビット数２０４で指定されたビット数分だけ可変長符号を読み捨て、次の符号語の復号処理に備える。最後にＳ３１２でエントリに格納されている復号結果２０５から復号結果を得る。
【００３７】
図３から図６に示した復号処理用の表をメモリに格納した例を図８に示す。図８に示した例では、表Ａの領域４１０から表Ｄの領域４４０まで順に密に詰めている。表の格納順序を変更することも可能であるし、表と表の間に隙間があっても構わない。但し、本実施例では次表アドレス１０３は相対アドレスであることを想定しているので、次表アドレス１０３に割り当てられているビット数の都合、表は密に配置したほうが良い。また、次表アドレス１０３は符号なしを想定しているので、ある表から次に参照する表として指定される表は、必ず後方のアドレスに配置する必要がある。
【００３８】
本実施例において、図８に示すように表を配置した場合、図３に示す表Ａでオフセットアドレス１のエントリに格納する次表アドレス１０３は表Ｂの格納領域４２０が表Ａ格納領域４１０の直後に存在するので０となる。オフセットアドレス２のエントリに格納する次表アドレス１０３は表Ｃの格納領域４３０が表Ａの格納領域４１０直後から８バイト先に存在するため８を１ビット右シフトして４となる。同様に図５に示す表Ｃでオフセットアドレス１のエントリに格納する次表アドレス１０３は表Ｄの格納領域４４０が表Ｃの格納領域４３０の直後に存在するので０となる。
【００３９】
図９に本発明を用いた可変長符号復号処理装置の構成例を示す。図９に示す構成例では、入力として可変長符号の他に初期テーブル開始アドレスと初期テーブル参照ビット数が存在する。初期テーブル開始アドレスは復号処理に際して最初に参照する復号処理用の表の場所を特定するために用いる。初期テーブル開始アドレスを指定することで、複数種類の符号表に対応する復号処理用の表のセットを持つ場合に、どの復号処理用の表を使用するか選択可能である。初期テーブル参照ビット数は最初の復号処理用の表を参照する際に、符号語から切り出し参照するビット数である。最初に参照する表に関しては、符号語から参照するビット数を復号処理装置内部からは得ることができないため、外部から入力する必要がある。
【００４０】
ビット切り出し部５２０は入力される可変長符号から、復号処理用の表参照に利用するビットを切り出し、また参照処理の終わった部分を破棄してシフト処理を行う部分である。テーブルアドレス計算部５３０は復号処理のため選択している復号処理用の表の開始アドレスとビット切り出し部５２０から取得した参照ビットを元に、復号処理用の表のエントリのアドレスを計算する。テーブルメモリ制御部５４０はテーブルアドレス計算部５３０からテーブルメモリ５５０へのアクセス要求と、外部からのテーブルメモリ設定信号を調停し、またテーブルメモリ５５０から読み出したデータを復号制御部５１０へ出力する。外部からのテーブルメモリ設定信号は、テーブルメモリ５５０に復号処理用の表を書き込む際に利用する。テーブルメモリ５５０はＲＡＭを利用するが、ある決まった符号表の復号に対応する場合には、その符号表に対応する復号処理用の表の部分をＲＯＭで実装することも考えられる。
【００４１】
復号制御部５１０は復号処理全体を管理し、ビット切り出し部５２０へシフト指令を出し、復号処理用の表参照に利用する切り出しビット量を指示する。またテーブルメモリ制御部５４０経由でテーブルメモリ５５０から読み出した内容、すなわち復号処理用の表のエントリの内容に基づき、次の復号処理用の表のアドレスを計算して復号処理用の表の開始アドレスを更新し、表参照に利用する切り出しビット量の更新を行う。さらに、復号処理用の表を参照した際の復号処理完了を検出し、復号結果を出力する。
テーブルメモリ制御部５４０により、外部からテーブルメモリ５５０を書き換え可能なため、復号対象とする符号表に応じてテーブルメモリ５５０を書き換えて、複数種類の符号表に対応可能である。また、テーブルメモリ５５０の容量が十分であれば、予め複数の符号表に対応する復号処理用の表セットを全てテーブルメモリ５５０に書き込んで利用することも可能である。最初に利用する復号処理用の表は初期テーブル開始アドレスにより選択する。
【００４２】
図９に示す構成により、図７に示したフローチャートに従った動作が可能となり、可変長復号処理装置を実現できる。
【００４３】
本発明では、ある符号表に対して通常複数の復号処理用の表を必要となるが、復号処理用の表ごとに符号語から参照するビット数を指定可能である。また、参照するビット数が多いほど、復号処理用の表参照処理回数が減少するため、複数の復号処理を行った際の平均的な復号処理速度が向上する。さらに、可変長符号では短い符号語の出現確率が高いため、符号語の最初の方のビット参照時に使用する復号処理用の表で長めのビットを参照することで、ある符号表に対応する復号処理用の表のセットのサイズ増加に対して、効果的に復号処理速度の向上が図れる。
【００４４】
さらに、本発明では可変長符号の割り当て状況とは独立に、復号処理用の表ごとに参照するビット数を制御可能なため、１個の可変長符号の復号に許容可能な最大処理時間を考慮して、復号処理用の表の最大参照可能回数を求め、それに応じて復号処理用の表を構成可能である。
【実施例２】
【００４５】
本発明の第２の実施例は、実施例１で使用した復号処理用のエントリに格納するデータフォーマットを拡張した例である。実施例２に対応するデータフォーマットを図１０に示す。実施例１ではフォーマット１とフォーマット２の２種類のデータフォーマットを使用したが、実施例２ではフォーマット１からフォーマット４の４種類のデータフォーマットを使用する。
【００４６】
実施例２は実施例１に対して復号結果が１１ビットに収まらない場合に有効な例で、復号結果が１１ビットで示される範囲を超える場合、フォーマット３及びフォーマット４を用いて対応することが可能となっている。
【００４７】
データフォーマットを拡張するため、実施例２ではフォーマット識別ビットに２ビットを割り当て、次表参照ビット数１０３、及び有効ビット数２０４を３ビットとしている。
【００４８】
実施例２においては、フォーマット１識別ビットの値は００、フォーマット２識別ビットの値は１０となる。またフォーマット識別ビット３の値として１１を割り当てている。
【００４９】
フォーマット４は、フォーマット３の拡張復号結果格納アドレス２２５により指し示される場所に格納するデータのフォーマットである。したがって、フォーマット識別ビットが存在せずともフォーマット識別可能な為、フォーマット識別ビットは存在しない。
【００５０】
フォーマット１及びフォーマット２は、ビットの割り当て方が異なる以外は実施例１と同様に利用する。フォーマット３は、復号結果が１１ビットに収まらずフォーマット２で対応が不可能な場合に利用する。フォーマット３を利用する場合、拡張復号結果２４５が格納されているアドレスを拡張復号結果格納アドレス２２５で指定する。
【００５１】
フォーマット３の拡張復号結果格納アドレス２２５で指し示されるアドレスには必ずフォーマット４で拡張復号結果２４５を格納する。拡張復号結果２４５は１６ビットであるので、１１ビットを超える復号結果を格納することが可能である。
【００５２】
すなわち、フォーマット１、フォーマット２またはフォーマット３を用いて実施例１に示した復号処理用の表相当の表を用意し、フォーマット３で指し示したアドレスにフォーマット４で復号結果を別途用意する。
【００５３】
拡張復号結果格納アドレス２２５で指定するアドレスは、現在参照している復号処理用の表でフォーマット１からフォーマット３から構成される部分の直後のアドレスを起点とする相対アドレスである。しかし、実装によっては絶対アドレスを指定する場合も考えられるし、当該拡張復号結果格納アドレス２２５を格納したエントリを起点とする相対アドレスの場合も考えられる。
【００５４】
フォーマット４は、フォーマット１からフォーマット３で構成される部分とは別途用意するため、フォーマット４のみ３２ビット幅など他のフォーマットは異なるビット幅にすることも可能である。すなわち必要に応じて実装でフォーマット４によりビット幅の大きいフォーマットを用いることで、値の範囲が広い復号結果に対応することが可能になる。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施例１で示す復号処理用の表のエントリに格納するデータのフォーマット例である。
【図２】本発明の実施例１で示す符号表の例である。
【図３】図２の可変長符号表に対応する復号処理用の表のセット例の第１の表である。
【図４】図２の可変長符号表に対応する復号処理用の表のセット例の第２の表である。
【図５】図２の可変長符号表に対応する復号処理用の表のセット例の第３の表である。
【図６】図２の可変長符号表に対応する復号処理用の表のセット例の第４の表である。
【図７】可変長符号復号手順を示すフローチャートである。
【図８】図３から図６に示す表をメモリに格納した例である。
【図９】可変長復号処理を行う装置の構成例である。
【図１０】本発明の実施例２で示す復号処理用の表のエントリに格納するデータのフォーマット例である。
【符号の説明】
【００５６】
１０１…フォーマット１識別ビット、１０２…次表参照ビット数、１０３…次表アドレス、２０１…フォーマット２識別ビット、２０４…有効ビット数、２０５…復号結果、２２１…フォーマット３識別ビット、２２５…拡張復号結果格納アドレス、２４５…拡張復号結果、４１０…表Ａの格納領域、４２０…表Ｂの格納領域、４３０…表Ｃの格納領域、４４０…表Ｄの格納領域、５１０…復号制御部、５２０…ビット切り出し部、５３０…テーブルアドレス計算部、５４０…テーブルメモリ制御部、５５０…テーブルメモリ。
【図１】
0004829720.tif 000002
【図２】
0004829720.tif 000003
【図３】
0004829720.tif 000004
【図４】
0004829720.tif 000005
【図５】
0004829720.tif 000006
【図６】
0004829720.tif 000007
【図７】
0004829720.tif 000008
【図８】
0004829720.tif 000009
【図９】
0004829720.tif 000010
【図１０】
0004829720.tif 000011