(57)【特許請求の範囲】
【請求項１】
予め設定された長さのブロック単位に区切られた係数列を、非零係数の値を示すレベル情報、直前のレベル情報との間に存在する零係数の個数を示すラン情報、及びブロック中で最後に表れる非零係数であるか否かを示すラスト情報の組からなる複数組の単位情報にて表し、該単位情報毎に双方向復号可能な可変長符号にて符号化してなる符号列を、順方向或は逆方向に読み込んで元の係数列に復号化する復号化方法であって、
順方向或は逆方向に読み込んだ前記可変長符号の符号列を、逐次的に前記単位情報に復号化し、
前記復号化された単位情報のうち、逆方向の復号化時には前記ラン情報を、順方向の復号化時には前記ラスト情報を１符号分だけ遅延させ、
該ラン情報或はラスト情報を遅延させた単位情報に基づき、前記ラン情報にて示された個数の零係数の後に前記レベル情報にて示された非零係数を付加してなる係数列を生成すると共に、前記ラスト情報から前記ブロックの境界を検出することを特徴とする双方向復号可能な可変長符号の復号化方法。
【請求項２】
予め設定された長さのブロック単位に区切られた係数列を、非零係数の値を示すレベル情報、直前のレベル情報との間に存在する零係数の個数を示すラン情報、及びブロック中で最後に表れる非零係数であるか否かを示すラスト情報の組からなる複数の単位情報にて表し、該単位情報毎に双方向復号可能な可変長符号にて符号化してなる符号列を、順方向或は逆方向に読み込んで元の係数列に復号化する復号化装置であって、
順方向或は逆方向に読み込んだ前記可変長符号の符号列を、逐次的に前記単位情報に復号化する単位情報復号手段と、
該単位情報復号手段にて復号化された単位情報に基づき、前記ラン情報にて示された個数の零係数の後に前記レベル情報にて示された非零係数を付加してなる係数列を生成する係数列生成手段と、
前記単位情報復号手段にて復号化された単位情報のラスト情報に基づき、前記ブロックの境界を検出する境界検出手段と、
逆方向の復号化時に、前記復号化された単位情報のうち前記ラン情報を１符号分だけ遅延させて前記係数列生成手段に供給するラン情報遅延手段と、
順方向の復号化時に、前記復号化された単位情報のうち前記ラスト情報を１符号分だけ遅延させて前記境界検出手段い供給するラスト情報遅延手段と、
を備えることを特徴とする双方向復号可能な可変長符号の復号化装置。
【請求項３】
前記境界検出手段にて前記ブロックの境界が検出されると、当該装置の動作を一時停止することを特徴とする請求項２記載の双方向復号可能な可変長符号の復号化装置。
【請求項４】
前記境界検出手段は、復号化方向が逆方向から順方向に変化した場合、逆方向に供給される最後の単位情報であることを示すために外部から入力される制御信号を、前記ラスト情報の代わりに用いることを特徴とする請求項２又は請求項３記載の双方向復号可能な可変長符号の復号化装置。
【請求項５】
前記係数列生成手段は、
１ブロック分の係数列を格納可能なバッファと、
前記バッファの書込アドレスに、前記復号化された単位情報のラン情報を、順方向の復号化時には加算し、逆方向の復号化時には減算することにより、前記書込アドレスを更新するアドレス更新手段と、
該アドレス更新手段にて更新された書込アドレスに従って、前記バッファに前記レベル情報を書き込むことにより、前記バッファ上に前記係数列を保存するバッファ書込手段と、
該バッファ書込手段にてレベル情報が書き込まれた以外のアドレスの内容を零に設定する零係数書込手段と、
を備え、前記バッファの読出アドレスとして、順方向符号化時には前記ブロック単位の処理開始時における書込アドレスを、逆方向符号化時には前記ブロック単位の処理終了時における書込アドレスを出力することを特徴とする請求項２ないし請求項４いずれか記載の双方向復号可能な可変長符号の復号化装置。
【請求項６】
前記零係数書込手段は、前記ブロック単位の処理開始前毎に、前記バッファの内容をすべて零に設定することを特徴とする請求項５記載の双方向復号可能な可変長符号の復号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動画像等の伝送に用いられる双方向復号可能な可変長符号の復号化方法及び装置に関する。
【０００２】
【従来の技術】
近年、デジタル通信ネットワークや情報記録媒体の進歩に伴って、Ｈ．２６１，Ｈ，２６３，ＭＰＥＧ−１，ＭＰＥＧ−２等といった種々のデジタル画像圧縮方式が提案され標準化されている。
【０００３】
これら各方式では、各画面（Ｉ，Ｐ，Ｂピクチャ）を１６×１６画素からなるマクロブロック単位に分割し、各マクロブロックを、輝度信号を構成する４個のブロック（８×８画素）及び色差信号を構成する２個のブロック（８×８画素）にて表し、これらブロック単位で符号化処理を行っている。
【０００４】
そして、符号化処理では、各ブロック毎に離散コサイン変換（ＤＣＴ）等を用いて直交変換を行い、その結果得られる係数を量子化し、この量子化された係数を走査して係数列に並び替えたものを、先行する零係数の個数（ラン）と、非零係数の値（レベル）との組からなるラン・レベル情報をまとめて可変長符号に符号化するいわゆる２次元可変長符号化を行っている。
【０００５】
ところで、可変長符号を復号化する際には、符号列中に周期的に挿入されるフレーム同期信号等のタイミング信号に基づいて可変長符号の境界を検出し、これを起点として一符号ずつ順番に復号化していくため、復号化中に誤りが生じると、いわゆる同期はずれが生じて可変長符号の境界を正しく検出することができなくなり、以後の復号化を正しく行うことができない。
【０００６】
このため、復号化中に誤りを検出した場合には、次のフレーム同期信号が検出されるまで、受信した情報を廃棄する等の処理を行っており、情報量が大幅に減少するため画質劣化を生じてしまうという問題があった。
このような復号化中の誤りが多発する通信環境が劣悪な場合でも、正確な情報の復元を可能とするために、双方向に復号可能な可変長符号（ＲＶＬＣ）の利用も考えられている。即ち、双方向に復号可能であれば、復号化中に誤りが検出された場合、次のフレーム同期信号により特定される符号の境目を起点として、誤りが検出された地点まで逆方向に復号化を行うことにより、廃棄される情報量を極力減少させることができるのである。
【０００７】
そして、ＲＶＬＣは、例えば、近い将来に標準化が予定されているマルチメディア符号化方式のＭＰＥＧ−４にて採用されることが決定されている。
ところで、このＭＰＥＧ−４にて採用されるＲＶＬＣは、ラン・レベル情報に加えて、そのラン・レベル情報が、ブロック中で最後に表れる非零係数に対応するものであるか否かを示すラスト情報を含めて、３次元的に符号化される。
【０００８】
ここで、図７（ａ）〜（ｄ）は、この場合の符号化，復号化手順の概要を示したものである。即ち、図７（ａ）は、ブロック（８×８画素）単位で表された輝度信号や色差信号を離散コサイン（ＤＣＴ）変換して量子化した係数（以下、単にＤＣＴ係数とよぶ）を示すものであり、このＤＣＴ係数は、図中点線にて示すように、ジグザグに走査され、図７（ｂ）に示すように、一次元的な係数列に並び替えられる。そして、この係数列を、図７（ｃ）に示すように、上述のラン情報，レベル情報，ラスト情報の組からなる単位情報に変換する。なお、単位情報は、非零係数の数だけ作成され、ブロック先頭の単位情報のラン情報は０に設定される。これら単位情報が、予め設定されたテーブルに従って、図７（ｄ）に示すように、順番にＲＶＬＣに符号化されるのである。
【０００９】
そして、このＲＶＬＣの符号列を順方向に読み込んで復号化する場合には、上述の手順を逆に辿ればよく、何の問題もなく元のブロックを復元することができる。
【００１０】
【発明が解決しようとする課題】
しかし、このＲＶＬＣの符号列を逆方向に読み込んで復号化する場合、単純に順方向に読み込んだ場合と同様に復号化すると、元のブロックを正しく復元できないという問題があった。
【００１１】
即ち、逆方向から単位情報に復号化した場合、図７（ｅ）に示すように、図７（ｃ）とは逆の順番に単位情報が並ぶことになる。そして、これら単位情報が復号化された時系列に従って、単位情報から係数列を生成すると、図７（ｆ）に示すように、非零係数１（走査順序３）及び−３（走査順序４）の間に入るべき３個の零係数が非零係数１の前（走査順序０〜２）に挿入され、非零係数２（走査順序６）及び１（走査順序７）の間に入るべき零係数が非零係数２の前（走査順序５）に挿入されてしまい、結局、図７（ｇ）に示すように、元のブロック（図７（ａ）参照）を復元できないのである。
【００１２】
これは、ラン情報が、直前のレベル情報との間に存在する零係数の個数を表しているのであるが、図７（ｅ）のように逆に並べた場合、直後のレベル情報との間に存在する零係数の個数を表すことになるため、順方向を処理する場合と同様に扱うことができないのである。
【００１３】
なお、元のブロックを正しく復元するために、例えば、１ブロック分の単位情報にすべて復号化した後で、復号化された順番とは逆の順序で単位情報を処理して係数列を生成することが考えられるが、１ブロック分の単位情報を蓄えるためのメモリが必要となるだけでなく、単位情報の復号化と係数列の再生とを並行して行うことができないため処理時間が増大してしまうという問題があった。
【００１４】
また、逆方向に復号化している場合には、最初にラスト情報が表れてしまうため、このラスト情報を順方向に復号化している場合と同様に扱うことができず、装置が複雑化してしまうという問題があった。
本発明は、処理時間を増大させることなく簡易な構成にて、順方向及び逆方向のいずれの復号化時でも効率的に処理を行うことができる双方向復号可能な可変長符号の復号方法及び装置を提供することを目的とする。
【００１５】
【課題を解決するための手段】
上記目的を達成するためになされた発明である請求項１記載の双方向復号可能な可変長符号の復号化方法では、順方向或は逆方向に供給される可変長符号の符号列を、逐次的に単位情報に復号し、復号化された単位情報のうち、逆方向の復号時にはラン情報を、順方向の復号時にはラスト情報を１符号分だけ遅延させ、このラン情報或はラスト情報を遅延させた単位情報に基づき、ラン情報にて示された個数の零係数の後にレベル情報にて示された非零係数を付加してなる係数列を生成すると共に、ラスト情報からブロックの境界を検出する。
【００１６】
即ち、逆方向の復号化時に、ラン情報を１符号分だけ遅延させると、例えば図７（ｅ）では、単位情報が（ラスト，ラン，レベル）＝（１，０，１）（０，３，−３）（０，０，２）（０，１，１）（０，０，６４）のように組替えられ、各単位情報のラン情報は、直前の単位情報を構成するレベル情報との間に挿入される零係数の個数を表すことになり、順方向に復号化する場合と全く同様の処理にて、単位情報から正しい係数列の生成が可能となる。
【００１７】
一方、順方向の復号化時に、ラスト情報を１符号分だけ遅延させると、このラスト情報は、次ブロックの先頭の単位情報と共に処理され、つまり逆方向の復号化時と同様に扱うことが可能となり、順方向及び逆方向のいずれの復号化時も、全く同じ処理によりブロックの境界を検出することが可能となる。
【００１８】
従って、本発明の復号化方法によれば、復号化方向に応じてラン情報或はラスト情報を１符号分だけ遅延させるという極めて簡易な構成を追加するだけで、処理時間を増大させることなく、各方向の復号化をいずれの場合も、同様の処理にて効率よく行うことができる。
【００１９】
次に、請求項２記載の双方向復号可能な可変長符号の復号化装置では、単位情報復号手段が、順方向或は逆方向に読み込んだ可変長符号の符号列を、逐次的に単位情報に復号化し、逆方向の復号化時には、ラン情報遅延手段が、復号化された単位情報のうち前記ラン情報を１符号分だけ遅延させると共に、順方向の復号化時には、ラスト情報遅延手段が、復号化された単位情報のうちラスト情報を１符号分だけ遅延させる。
【００２０】
そして、係数列生成手段が、単位情報復号手段にて復号化された単位情報に基づき、ラン情報にて示された個数の零係数の後にレベル情報にて示された非零係数を付加してなる係数列を生成し、境界検出手段が、単位情報復号手段にて復号化された単位情報のラスト情報に基づき、ブロックの境界を検出する。
【００２１】
即ち、本発明の復号化装置は、上述の請求項１記載の復号化方法を実現するものであり、従って、該復号化方法と全く同様の効果を得ることができる。
次に、請求項３に記載の双方向復号可能な可変長符号の復号化装置では、境界検出手段がブロックの境界を検出すると、当該装置の動作を一時停止するように構成されている。
【００２２】
つまり、ラスト情報は、順方向の復号化時には、次に処理すべきブロックの先頭にて処理され、また逆方向の復号化時にも、処理すべきブロックの先頭にて処理される。従って、次に処理すべきブロックの先頭が検出された状態で、装置の動作が一時停止することになり、処理を再開する時には、処理すべき単位情報を入力するための待機時間を設ける必要がなく、直ちに処理を再開できるため、処理時間を短縮して効率よく処理を行うことができる。
【００２３】
ところで、順方向或は逆方向の復号化を連続して行う場合、及び復号化方向が順方向から逆方向に切り替わる場合には、次に処理すべきブロックの先頭にて必ずラスト情報が検出されるのであるが、唯一、復号化方向が逆方向から順方向に切り替わる場合には、次に処理すべきブロックの先頭にてラスト情報を検出することができない。
【００２４】
そこで、請求項４記載のように、境界検出手段は、復号化方向が逆方向から順方向に変化した場合、逆方向に供給される最後の単位情報であることを示すため外部から入力される制御信号を、ラスト情報の代わりに用いるように構成することが望ましい。
【００２５】
次に請求項５記載の双方向復号可能な可変長符号の復号化装置では、係数列生成手段は、１ブロック分の係数列を格納可能なバッファを備えており、アドレス更新手段が、バッファの書込アドレスに、復号化された単位情報のラン情報を、順方向復号化時には加算し、逆方向復号化時には減算することにより、書込アドレスを更新し、この更新された書込アドレスに従って、バッファ書込手段が、バッファにレベル情報を書き込むと共に、零係数書込手段が、バッファ書込手段にてレベル情報が書き込まれた以外のアドレスの内容を零に設定することによりバッファ上に１ブロック分の係数列を記憶する。そして、バッファの読出アドレスとして、順方向符号化時にはブロック単位の処理開始時における書込アドレスを、逆方向符号化時にはブロック単位の処理終了時における書込アドレスを出力する。
【００２６】
従って、当該復号化装置にて生成された係数列を処理する後段の装置では、順方向及び逆方向のいずれの復号化時にも、供給される読出アドレスを用いて、順次インクリメントしながらバッファからデータを読み出すという全く同様の処理により、ブロックの先頭から末尾に向かって並ぶように係数列を読み出すことができ、効率的に処理を行うことができる。
【００２７】
なお、零係数書込手段は、請求項６記載のように、例えば、ブロック単位の処理開始前に、バッファの内容をすべて零に設定するという簡単な構成にて実現することができる。
【００２８】
【発明の実施の形態】
以下に本発明の実施例を図面と共に説明する。
図１は、本実施例の復号化装置及びその周辺の構成を表すブロック図である。なお、本実施例の復号化装置は、先の［従来の技術］の欄にて説明したようにＭＰＥＧ−４への適用が可能となるように構成されたものであり、ブロック（８×８画素）単位で表された輝度信号や色差信号を、離散コサイン（ＤＣＴ）変換して量子化したＤＣＴ係数により表し、これをジグザグに走査して一次元的に並び替えた係数列をラン情報，レベル情報，ラスト情報の組からなる単位情報に変換し、更に、この単位情報を双方向復号可能な可変長符号（ＲＶＬＣ）に符号化してなる符号列を復号化するものである。
【００２９】
図１に示すように、本実施例の復号化装置２は、入力データ要求ＲＱを適宜出力することにより、可変長符号のビット列をフレーム（１〜数画面）単位で格納するインプットバッファ４から可変長符号のビット列を読み込んで、読み込んだビット列を復号化し、後述するバッファ１８に１ブロック分の係数列が蓄積される毎に、当該復号化装置２の動作を一時停止させると共に、後段の係数列処理部８に読出先頭アドレスＲＡＨを供給して、バッファ１８に蓄積された係数列を係数列処理部８に読み出させる処理を行っており、これらの処理を、制御部６から供給される復号化方向選択信号Ｓｄ，テーブル選択信号Ｓｔ，起動制御信号Ｃｓ，最終係数制御信号Ｃｅに従って実行すると共に、処理中にエラーが発生した場合には、制御部６に対してエラー信号Ｅを出力するように構成されている。
【００３０】
なお、インプットバッファ４は、復号化装置２或いは制御部６から入力データ要求ＲＱがある毎に、可変長符号を構成するビット列をＮ（本実施例ではＮ＝３２）ビット単位で供給し、この時、制御部６から供給される復号化方向選択信号Ｓｄの設定が順方向であれば、フレームの先頭から末尾に向けて連続的にビット列を読み出し、同じく逆方向であれば、フレームの末尾から先頭に向けて連続的にビット列を読み出すように構成されている。但し、Ｎは可変長符号の最大符号長より大きな値に設定されている。
【００３１】
また、係数列処理部８は、バッファ１８に書き込まれた係数列を、復号化装置２から供給される読出先頭アドレスＲＡＨを読出アドレスの初期値として、以後インクリメントしながらバッファ１８の格納値を読み出し、読み出しを終了すると、制御部６に対して処理終了通知Ｓｅを出力するように構成されている。
【００３２】
そして、制御部６は、復号化方向選択信号Ｓｄの設定を、通常時には順方向に設定し、復号化装置２からエラー信号Ｅが入力されると逆方向に設定し、インプットバッファ４から逆方向に読み出すべきビット列の最終ビットが復号化装置２に読み込まれると、復号化装置２に対して最終係数制御信号Ｃｅを出力すると共に、復号化方向選択信号Ｓｄの設定を順方向に戻すように構成されている。また、制御部６は、この復号化方向選択信号Ｓｄ及び復号化装置２にて処理中のデータが属するフレームの種別（インプットバッファ４の前段にて行われるフレームヘッダの解析結果により特定される）等に基づき、復号化に用いるテーブルを選択するためのテーブル選択信号Ｓｔを出力したり、更に、係数列処理部８から処理終了通知Ｓｅが入力されると、一時停止していた復号化装置２の動作を再開させるめの起動制御信号Ｃｓを出力するように構成されている。
【００３３】
ここで、本実施例の復号化装置２は、インプットバッファ４から供給される可変長符号のビット列をＮビットずつ読み込んで、後述するシフト情報ＳＦに基づいてシフト処理を行うことにより、可変長符号の境界となる部分を頭出しするバレルシフタ１０と、バレルシフタ１０にて頭出しされたビット列を読み込み、制御部６からのテーブル選択信号Ｓｔに従って選択された変換テーブルを用いて、可変長符号を特定すると共に特定された可変長符号をラン情報ＤRN，レベル情報ＤLV，ラスト情報ＤSTの組からなる単位情報ＤＦに復号化する可変長符号復号部１２と、可変長符号復号部１２にて処理された可変長符号の符号長を表す符号長情報ＬＣに基づいて、バレルシフタ１０の格納データを制御するためのシフト情報ＳＦ及び入力データ要求ＲＱを生成するシフト数計算部１４とを備えている。
【００３４】
また、本実施例の復号化装置２は、１ブロック分（本実施例では６４個）の係数列を格納可能なバッファ１８と、可変長符号復号部１２からのラン情報ＤRN，ラスト情報ＤST、及び制御部６からの復号化方向選択信号Ｓｄ，最終係数制御信号Ｃｅ，起動制御信号Ｃｓに基づき、レベル情報（ＤＣＴ係数）ＤLVをバッファ１８に格納するための書込アドレスＷＡ、バッファ１８に格納された係数列の先頭位置を示す読出先頭アドレスＲＡＨ、バレルシフタ１０，シフト数計算部１４の動作を一時停止させるためのＶＬＤ制御信号Ｃｖを生成するアドレス生成部１６とを備えている。なお、復号化装置２の各部には、各部を同期して動作させるためのクロックＣＬＫ（図示せず）が入力されている。
【００３５】
次に、復号化装置２を構成する各部の詳細について説明する。
まず、バレルシフタ１０は、図２に示すように、クロックＣＬＫに従ってインプットバッファ４からの入力データＤＩをラッチするＮ個のＤタイプフリップフロップ（ＤＦＦ）からなる第１バッファ２０と、クロックＣＬＫに従って第１バッファ２０の出力をラッチするＮ個のＤＦＦからなる第２バッファ２２と、第２バッファ２２の出力を下位ビット、第１バッファ２０の出力を上位ビットとする２Ｎビットのデータを取り込み、シフト数計算部１４からのシフト情報ＳＦに従って、指定されたシフト数だけ下位ビット側にデータをシフトし、シフトされたデータの下位Ｎビットのみを出力するシフトレジスタ２４とからなる。なお、第１及び第２バッファ２０，２２のラッチ動作は、入力データ要求ＲＱ毎に１回ずつ行われ、この新たにラッチされたデータがシフトレジスタ２４に取り込まれるようにされている。
【００３６】
そして、シフト数計算部１４は、第１及び第２バッファ２０，２２にラッチされたデータがシフトレジスタ２４に取り込まれる毎に、シフトレジスタ２４でのシフト数を計数するために設けられたカウンタをリセットし、可変長符号復号部１２からの符号長情報ＬＣに基づいて、可変長符号の頭出しに必要なシフトレジスタ２４でのシフト数を示すシフト情報ＳＦを出力すると共に、そのシフト数をカウンタにて計数する。そして、カウンタの計数値がＮビットを超える場合には、入力データ要求ＲＱを出力して、シフトレジスタ２４に新たなデータを取り込ませると共に、Ｎビットを超える分だけシフト動作させるシフト情報ＳＦを出力するように構成されている。これにより、バレルシフタ１０は、次に処理すべき可変長符号の境界を先頭とするＮビットのビット列を、常に可変長符号復号部１２に供給するよう制御される。また、シフト数計算部１４は、後述するＶＬＤ制御信号Ｃｖが入力（Highレベル）されている間、動作を停止するように構成されている。
【００３７】
次に、可変長符号復号部１２は、図３に示すように、ピクチャ（Ｉ，Ｐ，Ｂ）の種類，復号化の方向（順方向，逆方向），Ｉピクチャの先頭符号の符号化形式等によってそれぞれ個別に設けられたＭ（本実施例ではＭ＝９）個のテーブル＃１〜＃Ｍと、テーブル選択信号Ｓｔに従って、いずれかのテーブル＃１〜＃Ｍからの出力のみを有効とするセレクタ２６とを備えている。
【００３８】
なお、各テーブル＃１〜＃Ｍは、バレルシフタ１０からＮビットのビット列が入力され、ビット列と一致する可変長符号がテーブル中に存在すれば、これを復号化して単位情報ＤＦを出力すると共に、復号化された可変長符号の符号長を表す符号長情報ＬＣを出力し、一方、ビット列と一致する可変長符号がテーブル中に存在しなければ、エラー信号Ｅを出力するように構成されている。
【００３９】
次に、アドレス生成部１６は、図４に示すように、順方向の復号化時に用いる信号を生成する順方向処理部３０と、逆方向の復号化時に用いる信号を生成する逆方向処理部４０と、復号化方向選択信号Ｓｄに従って、信号Ｓｄが順方向に設定されていれば順方向処理部３０，逆方向に設定されていれば逆方向処理部４０の出力を選択して当該アドレス生成部１６の出力とするセレクタ５０とを備えている。
【００４０】
このうち、順方向処理部３０では、可変長符号復号部１２からの単位情報ＤＦのうち、ラスト情報ＤSTを１符号分だけ遅延させる遅延回路３２と、遅延されたラスト情報ＤST，及び制御部６からの最終係数制御信号Ｃｅ，起動制御信号Ｃｓに基づいてＶＬＤ制御信号Ｃｖを生成する制御信号生成回路３４と、可変長符号復号部１２からの単位情報ＤＦのうち、ラン情報ＤRNに基づいてバッファ１８の書込アドレスＷＡを更新（ＷＡ←ＷＡ＋ＤRN＋１）するアドレス更新回路３６と、アドレス更新回路３６の初期値であるバッファ１８の１番地を示す読出先頭アドレスＲＡＨを出力するレジスタ３８とからなる。但し、アドレス更新回路３６では、起動制御信号Ｃｓの入力（Low レベル）により、書込アドレスＷＡが１に初期化（ＷＡ←１）され、アドレス更新の結果、書込アドレスＷＡが６４以上（ＷＡ≧６４）となった場合には、その値から６４を減算（ＷＡ←ＷＡ−６４）したものを書込アドレスＷＡとして設定するように構成されている。
【００４１】
一方、逆方向処理部４０では、可変長符号復号部１２からの単位情報ＤＦのうちのラスト情報ＤST，及び制御部６からの起動制御信号Ｃｓに基づいてＶＬＤ制御信号Ｃｖを生成する制御信号生成回路４４と、可変長符号復号部１２からの単位情報ＤＦのうちのラン情報ＤRNを１符号分だけ遅延させる遅延回路４２と、遅延されたラン情報ＤRNに基づいてバッファ１８の書込アドレスＷＡを更新（ＷＡ←ＷＡ−ＤRN−１）するアドレス更新回路４６と、アドレス更新回路４６の出力を１符号分だけ遅延させた読出先頭アドレスＲＡＨとして出力する遅延回路４８とを備えている。但し、アドレス更新回路４６では、起動制御信号Ｃｓの入力（Low レベル）により、により書込アドレスが０に初期化（ＷＡ←０）され、アドレス更新の結果、書込アドレスＷＡが零より小さく（ＷＡ＜０）なった場合には、その値に６４を加算（ＷＡ←ＷＡ＋６４）したものを書込アドレスＷＡとして設定するように構成されている。
【００４２】
また、バッファ１８は、制御部６から起動制御信号Ｃｓが入力されると、格納された全内容が零クリアされるように構成されている。
このように構成された本実施例の復号化装置２の動作を、図５及び図６に示すタイミング図に沿って説明する。
【００４３】
図５に示すように、まず電源投入後の起動時には、制御部６からの起動制御信号ＣｓがLow レベルとなっているため、アドレス生成部１６及びバッファ１８は初期化された状態に保持される。
その後、インプットバッファ４に復号化すべきビット列が格納されると、制御部６が、復号化方向選択信号Ｓｄを順方向に設定すると共に、格納されたデータに応じてテーブル選択信号Ｓｔを設定し（時刻Ｔ０）、更にクロックＣＬＫに同期させて、入力データ要求ＲＱａを２回出力する。これにより、バレルシフタ１０のシフトレジスタ２４に、可変長符号を表すビット列が設定され、ひいては可変長符号復号部１２にビット列が供給されることになり、時刻Ｔ１以降、クロックＣＬＫの立ち上がり毎に、可変長符号を復号してなる単位情報ＤＦが可変長符号復号部１２から出力される。
【００４４】
この時刻Ｔ１に、制御部６が起動制御信号ＣｓをHighレベルに変化させると、アドレス生成部１６及びバッファ１８が動作を開始する。この時、アドレス生成部１６では、順方向処理部３０の出力が有効とされるため、復号化されたラン情報ＤRNをそのまま用いて書込アドレスＷＡが算出され、この書込アドレスＷＡに従ってバッファ１８にレベル情報ＤLVが格納される。
【００４５】
その後、可変長符号復号部１２からラスト情報ＤSTが１に設定された単位情報ＤＦ（図中ＬＲ１にて示す）が出力されると、これより１符号（１クロック）分だけ遅延したタイミング（時刻Ｔ２）にてＶＬＤ制御信号ＣｖがHighレベルにセットされる。即ちこれは、アドレス生成部１６の順方向処理部３０では、ラスト情報ＤSTが１符号分だけ遅延させて処理されるからである。なお、図中、ラスト情報ＤSTが１に設定された単位情報ＤＦをＬＲ１にて示し、ラスト情報ＤSTが０に設定された単位情報ＤＦをＬＲ０にて示す。
【００４６】
このＶＬＤ制御信号Ｃｖにより、シフト数計算部１４の動作が停止することにより、バレルシフタ１０では、次に処理すべき可変長符号を先頭とするビット列を出力した状態に保持され、その結果、可変長符号復号部１２は、次ブロックを構成する最初の可変長符号を復号化してなる単位情報ＤＦを出力した状態に保持されることになる。
【００４７】
また、この時、係数列処理部８では、バッファ１８に格納された係数列の読み出しが開始される。そして、この読み出しが終了すると係数列処理部８から出力される処理終了通知Ｓｅに基づき、制御部６は、起動制御信号Ｃｓを出力する。即ち起動制御信号Ｃｓを１クロックだけLow レベルに保持した後、Highレベルに復帰させる。このLow レベルの期間に、アドレス生成部１６及びバッファ１８は初期化され、その後、起動制御信号Ｃｓが立ち上がると（時刻Ｔ３）、ＶＬＤ制御信号ＣｖがLow レベルにリセットされ、シフト数計算部１４の動作が再開されることにより、時刻Ｔ１以降と同様の動作が行われる。
【００４８】
次に、可変長符号を復号化できず可変長符号復号部１２にてエラー信号ＥがHighレベルにセットされると、制御部６は、復号化方向選択信号Ｓｄを逆方向に設定する（時刻Ｔ４）と共に、入力データ要求ＲＱａを２回出力する。これにより、バレルシフタ１０の内容が逆方向復号化に対応した新たなデータに更新されると、可変長符号復号部１２ではブロック末尾の可変長符号が復号化され、ラスト情報ＤSTが１に設定された単位情報ＤＦが出力される。すると、このラスト情報ＤSTによりＶＬＤ制御信号ＣｖがHighレベルにセットされ、シフト数計算部１４が停止させられるが、制御部６では、これと同時に起動制御信号Ｃｓを出力することにより、アドレス生成部１６及びバッファ１８の内容を初期化し、起動制御信号Ｃｓの立ち上がりでＶＬＤ制御信号ＣｖをLow レベルにリセットする（時刻Ｔ５）。これにより、以後、逆方向の復号化が行われることになる。
【００４９】
この時、アドレス生成部１６では、逆方向処理部４０の出力が有効とされるため、復号化されたラン情報ＤRNは１符号分だけ遅延され、この遅延されたラン情報ＤRNを用いて書込アドレスＷＡが算出されると共に、この書込アドレスＷＡに従ってバッファ１８にレベル情報ＤLVが格納される。
【００５０】
その後、図６に示すように、１ブロック分の復号化が終了し、可変長符号復号部１２から次のブロックの単位情報ＤＦが出力されると（時刻Ｔ６）、この単位情報ＤＦは、ラスト情報ＤSTが１に設定されているので、ＶＬＤ制御信号ＣｖがHighレベルにセットされ、シフト数計算部１４の動作が停止する。
【００５１】
これにより、バレルシフタ１０では、順方向復号化時と同様に、次に処理すべき可変長符号の境界を頭出した状態に保持され、その結果、可変長符号復号部１２は、次ブロックを構成する最初の可変長符号を復号化しなる単位情報ＤＦを出力した状態に保持されることになる。
【００５２】
また、この時、係数列処理部８では、バッファ１８に格納された係数列の読み出しが開始される。バッファ１８には、ブロック末尾の係数から、アドレスをデクリメントすることにより格納されているので、順方向復号時と同様に、読出先頭アドレスＲＡＨからインクリメントしながら読み出すことにより、先頭から末尾に向かって正しい順序に並んだ係数列を読み出すことができる。
【００５３】
バッファ１８からの読み出しを終了することにより係数列処理部８から出力される処理終了通知Ｓｅに基づき、制御部６が、起動制御信号Ｃｓを出力すると、アドレス生成部１６及びバッファ１８が初期化されると共に、ＶＬＤ制御信号ＣｖがLow レベルにリセットされるため、シフト数計算部１４の動作が再開され、以後、時刻Ｔ５以降と同様の動作が行われる。
【００５４】
次に、フレームを構成するブロック列を順方向にみて、エラーが検出されたブロックの次のブロックまで、逆方向からの復号化が終了すると（時刻Ｔ８）、制御部６は、復号化方向選択信号Ｓｄを順方向に設定すると共に、最終係数制御信号Ｃｅを出力する。
【００５５】
即ち、逆方向からの復号化が終了すると、インプットバッファ４では、逆方向に供給されたビット列に続けて次フレームのビット列を順方向に供給する。しかし、逆方向復号化時のブロックの末尾、及び順方向復号化時のブロックの先頭のいずれの単位情報ＤＦも、ラスト情報ＤSTは０であり、復号化された単位情報ＤＦからＶＬＤ制御信号Ｃｖをセットすることができないため、ラスト情報ＤSTの代わりに制御部６が最終係数制御信号Ｃｅを出力しているのである。
【００５６】
この最終係数制御信号Ｃｅは、アドレス生成部１６の順方向処理部３０にて、遅延されたラスト情報ＤSTと同等に扱われるため、ＶＬＤ制御信号Ｃｖがセットされ、以後、先に説明した時刻Ｔ２〜Ｔ３の動作停止期間と全く同様の動作が行われる。
【００５７】
なお、テーブル選択信号Ｓｔは、動作状況に応じて適宜切り替えられ、また、シフト数計算部１４からの入力データ要求ＲＱｂも、バレルシフタ１０でのシフト状況に応じて適宜出力される。
以上説明したように、本実施例の復号化装置２によれば、順方向復号化の際に、可変長符号を復号化してなる単位情報ＤＦのうち、ラスト情報ＤSTを１符号分だけ遅延させて処理を行っているので、順方向及び逆方向いずれの復号化時にも、１ブロック分の処理を終了する毎に、同じタイミングで当該復号化装置２の動作を一時停止させることができ、制御を単純化することができる。
【００５８】
しかも、次に処理すべきブロックの最初の可変長符号が単位情報ＤＦに復号化された状態で停止するため、次ブロックの処理を開始する際に、待機時間を必要とすることなく、直ちに処理を再開することができ、処理時間の短縮を図ることができる。
【００５９】
また、本実施例の復号化装置２によれば、逆方向復号化の際に、単位情報ＤＦのうちラン情報ＤRNを１符号分だけ遅延させて処理を行っているので、ラン情報ＤRNの扱いを、順方向復号化時と同様に、直前に処理したレベル情報ＤLVが表す係数との間に挿入される零係数の数として扱うことが可能となり、単位情報ＤＦから係数列を復元する際の制御を順方向復号化時と逆方向復号化時とで共通化することができ、制御の単純化を図ることができる。
【００６０】
更に、本実施例の復号化装置２では、順方向復号化時には、復号化した係数列をバッファ１８に書き込む際に、書込アドレスＷＡを増大する方向に更新しながら１番地から順に格納していくと共に、１ブロック分の書込が終了すると、書込を開始した１番地を読出先頭アドレスＲＡＨとして出力するようにされており、一方、逆方向復号化時には、復号化した係数列をバッファ１８に書き込む際に、書込アドレスＷＡを減少する方向に更新しながら順に格納していくと共に、１ブロック分の書込が終了すると、最後に係数が格納された番地を読出先頭アドレスＲＡＨとして出力するようにされている。
【００６１】
従って、本実施例の復号化装置２の後段に位置する係数列処理部８は、読出先頭アドレスＲＡＨを初期値として、順次インクリメントしながらバッファ１８の値を読み出すという単一の処理により、復号化装置２での復号化方向に関わらず、ブロックの先頭から末尾に向けて正しく並んだ係数列を読み出すことができる。その結果、当該復号化装置２を適用したシステムの構成を簡易化することができる。
【００６２】
なお、本実施例において、バレルシフタ１０，可変長符号復号部１２，シフト数計算部１４が単位情報復号手段、アドレス生成回路３６，４６，バッファ１８が係数列生成手段、制御信号生成回路３４，４４が境界検出手段、遅延回路４２がラン情報遅延手段、遅延回路３２がラスト情報遅延手段に相当する。
【図面の簡単な説明】
【図１】  実施例の復号化装置及び周辺部の概略構成を表すブロック図である。
【図２】  バレルシフタの構成を表すブロック図である。
【図３】  可変長符号復号部の構成を表すブロック図である。
【図４】  アドレス生成部の構成を表すブロック図である。
【図５】  復号化装置の動作を説明するためのタイミング図である。
【図６】  復号化装置の動作を説明するためのタイミング図である。
【図７】  双方向復号可能な可変長符号の符号化手順、及び復号化時の問題点を示す説明図である。
【符号の説明】
２…復号化装置        ４…インプットバッファ      ６…制御部
８…係数列処理部    １０…バレルシフタ    １２…可変長符号復号部
１４…シフト数計算部  １６…アドレス生成部  １８…バッファ
２０…第１バッファ    ２２…第２バッファ    ２４…シフトレジスタ
２６，５０…セレクタ  ３０…順方向処理部    ３２，４２，４８…遅延回路
３４，４４…制御信号生成回路      ３６，４６…アドレス更新回路
３８…レジスタ        ４０…逆方向処理部
【図１】
0003772557.tif 000002
【図２】
0003772557.tif 000003
【図３】
0003772557.tif 000004
【図４】
0003772557.tif 000005
【図５】
0003772557.tif 000006
【図６】
0003772557.tif 000007
【図７】
0003772557.tif 000008