(57)【要約】【課題】データストリーム内に含まれる複数の可変長符号化データ値の長さを１クロックサイクル内に決定する。【解決手段】複数の可変長符号化データ値のうち１サブセットを伝送するシフト手段２０６と、サブセットにおける複数のデータ値のうちの第１のデータ値の長さを決定する第１の長さ復号化手段２１０と、第２のデータ値の長さを個別に決定する第２の長さ復号化手段であって、サブセットにおいて第１の符号化データ値の直後に続 いており、復号化動作が同時に行われる第２の長さ復号化手段２１２と、第１、第２のデータ値の長さに応答して、両データ値の組合わせの長さを出力する復号 化手段と、組合わせの長さに応答してシフト制御信号２３５を形成し、次に符号化されたデータ値の位置を識別し、次の符号化データ値が、第２の符号化データ 値の直後に続いており、シフト制御信号をシフト手段２０６に伝送する手段２１８，２２２，２３４，２３６を備える。【選択図】  図２
2006042336.tif 000002
【特許請求の範囲】
【請求項１】
複数の可変長符号化されたデータ値のデータストリームを１クロックサイクル内に復号化する装置であって、
該データストリームを受け取り、シフト制御信号に応答して、該複数の可変長符号化されたデータ値のサブセットを伝送するシフト手段と、
該複数の可変長符号化されたデータ値の最大符号長の数より少ない数のアドレス入力を有するルックアップテーブルを含む第１の長さ決定手段であって、該ルックアップテーブルは、該複数の符号化されたデータ値のサブセットを受け取るように結合されており、第１の長さ決定動作を実行して、該サブセットにおける該複数の符号化されたデータ値の第１の符号化されたデータ値の長さを、該第１の符号化されたデータ値を復号化することなく決定する、第１の長さ決定手段と、
複数のルックアップテーブルを含む第２の長さ決定手段であって、該複数のルックアップテーブルのそれぞれは、該複数の可変長符号化されたデータ値の最大符号長の数より少ない数のアドレス入力を有し、該複数のルックアップテーブルは該複数の符号化されたデータ値のサブセットを受け取るように結合されており、第２の長さ決定動作を実行して、該サブセットにおける該複数の符号化されたデータ値のうちの第２の符号化されたデータ値の長さを、該第２の符号化されたデータ値を復号化することなく個別に決定し、該サブセットにおいて、該第２符号化されたデータ値は該第１の符号化された値の直後に続き、該第１および第２の長さ決定動作が同時に実行される、第２の長さ決定手段と、
該第１および第２の符号化されたデータ値の長さに応答して、該第１および第２のデータ値の組み合わせられた長さをシフト制御手段と値復号化手段に同時に出力する組み合わせられた長さ決定手段と
を備え、
該シフト制御手段は該第１および第２のデータ値の組み合わせられた長さに応答して、該シフト制御信号を形成して、該シフト手段内で次に符号化されたデータ値の位置を識別し、該次に符号化されたデータ値は、該第２の符号化されたデータ値の直後に続き、該シフト制御手段は該シフト制御信号を該シフト手段に伝送し、
該値復号化手段は、該複数の符号化されたデータ値のサブセットと、該第１の符号化されたデータ値の長さと、該第１および第２の符号化されたデータ値の組み合わせられた長さとを受け取るように結合されており、該次に符号化されたデータ値が該シフト手段によって処理しながら、該第１および第２の符号化されたデータ値を第１および第２の復号化された値にそれぞれ変換する、装置。
【請求項２】
前記第２の長さ決定手段は、前記第１の符号化されたデータ値のそれぞれの可能な長さに対するそれぞれの長さ決定ルックアップテーブルを含み、該それぞれの長さ決定ルックアップテーブルは、前記複数の符号化されたデータ値のサブセットのそれぞれ異なる部分の符号長を同時に決定し、かつ、該第２の符号化されたデータ値のそれぞれの値を、該第１の符号化されたデータ値の対応する可能な長さに基づいて同時に決定する、請求項１に記載の装置。
【請求項３】
前記第１の長さ決定手段は、前記第１の符号化されたデータ値の長さを示す第１の長さ信号を生成して伝送し、前記第２の長さ決定手段の前記長さ決定ルックアップテーブルのそれぞれは、それぞれの出力信号を生成して伝送し、前記組み合わせられた長さ決定手段は、該第１の長さ信号に応答して、該第１の長さ信号によって示される該第１の符号化されたデータ値の長さに対応する該長さ決定ルックアップテーブルの出力信号を選択し、該選択された出力信号は該第２の符号化されたデータ値の長さを示す、請求項２に記載の装置。
【請求項４】
前記第１の長さ決定手段は、前記第１の符号化されたデータ値のそれぞれの可能な長さに対するそれぞれのビットを出力し、
該第１の長さ決定手段によって出力される複数のビットのうちの単一のビットが設定され、該設定されたビットは該第１の長さ決定手段によって決定された該第１の符号化されたデータ値の長さに対応し、
前記第２の長さ決定手段の長さ決定ルックアップテーブルのそれぞれは、それぞれの出力信号を生成し、該それぞれの出力信号は該長さ決定ルックアップテーブルによって決定された前記第２の符号化されたデータ値の長さを表し、
前記組み合わせられた長さ決定手段は、該設定された単一のビットに応答して、該第１の長さ決定手段によって設定されたビットに対する該第１の符号化されたデータ値の長さに対応する該それぞれの長さ決定ルックアップテーブルによる出力信号の伝送を有効にする、請求項２に記載の装置。
【請求項５】
前記シフト制御手段は、前記第１および第２の符号化されたデータ値の前記組み合わせられた長さのそれぞれの可能な値のためのそれぞれの加算器を含み、それぞれの加算器はそれぞれの候補シフト制御信号を形成し、
前記組み合わせられた長さ決定手段は、該第１および第２の符号化されたデータ値のそれぞれの可能な組み合わせられた長さに対するそれぞれのビットを出力し、
該組み合わせられた長さ決定手段によって出力された複数のビットのうちの１つが設定され、該設定されたビットは該第１および第２の符号化されたデータの組み合わせられた長さに対応し、
該シフト制御手段は、該組み合わせられた長さ決定手段によって出力された該設定されたビットを用いて前記複数の加算器のうちの１つによって出力された該候補シフト制御信号の伝送を有効にし、該１つの加算器は該第１および第２の符号化されたデータ値の組み合わせられた長さに対応する、請求項４に記載の装置。
【請求項６】
前記シフト手段はシフタ／マルチプレクサを含み、該シフタ／マルチプレクサは前記データストリームを受け取り、固定された数のデータビットを前記第１および第２の長さ決定手段に伝送し、
前記シフト制御信号は該シフタ／マルチプレクサ内で該固定された数のデータビットのうちの第１のデータビットの位置を識別する、請求項１に記載の装置。
【請求項７】
前記シフト制御手段は前記第１および第２の符号化されたデータ値の組み合わせられた長さのそれぞれの可能な値のためのそれぞれの加算器であって、各加算器はそれぞれの候補シフト制御信号を同時に形成して伝送する、それぞれの加算器と、
該第１および第２の符号化されたデータ値の組み合わせられた長さに応答して、該第１および第２の符号化されたデータ値の組み合わせられた値に対応する候補シフト制御信号を選択し、該選択された候補を該シフト手段に該信号制御信号として伝送する和選択手段とを備えた、請求項１に記載の装置。
【請求項８】
前記それぞれの加算器は、それぞれのモジュロ算術演算を実行して該加算器の前記候補シフト制御信号を形成する、請求項７に記載の装置。
【請求項９】
前記シフト手段はシフタ／マルチプレクサを含み、該シフタ／マルチプレクサは前記データストリームを受け取り、固定された数の連続するデータビットを前記第１および第２の長さ決定手段に伝送し、
前記シフト制御信号は該シフタ／マルチプレクサ内で該固定された数の連続するデータビットうちの第１の位置を識別する、請求項８に記載の装置。
【請求項１０】
前記データストリームは符号化されたビデオ信号を含み、前記第１および第２の符号化されたデータ値は前記ビデオ信号の離散コサイン変換係数を表す、請求項１に記載の装置。
【請求項１１】
データストリームに含まれる複数の可変長符号化されたデータ値を１クロックサイクル内に復号化する方法であって、
該データストリームおよびシフト制御信号を受け取るステップと、
第１の長さ決定動作を行うステップであって、該複数の可変長符号化されたデータ値の最大符号長の数より少ない数のデータストリームのビットを処理することによってサブセットにおける該複数の符号化されたデータ値のうちの第１の符号化されたデータ値の長さを該第１の符号化されたデータ値を復号化することなく決定する、ステップと、
第２の長さ決定動作を行うステップであって、複数のルックアップテーブルにおける該データストリームを同時に処理することによって該サブセットにおける該複数の符号化されたデータ値の第２の符号化されたデータ値の長さを個別に決定し、それぞれのルックアップテーブルは、該複数の可変長符号化されたデータ値の最大符号値の数より少ない数のビット処理し、該第２の長さ決定動作は、該第２の符号化されたデータ値の長さを該第２の符号化されたデータ値を復号化することなく決定し、該サブセットにおいて該第２の符号化されたデータ値は該第１の符号化されたデータ値の直後に続き、該第１および第２の長さ決定動作が同時に行われる、ステップと、
該第１および第２のデータ値の組み合わせられた長さをシフトコントローラとデコーダに同時に出力するステップと、
該シフト制御信号を形成して、該組み合わせられた長さ値に応答して、該シフトコントローラにおいて、該サブセットに含まれる該複数の復号化されたデータ値のいくつかを決定するステップと、
該シフト制御信号を該シフト制御手段に伝送して、該第１および第２の可変長符号値に続く該シフト手段に第３の可変長符号値を処理させる、ステップと、
該シフト手段が該第３の可変長符号値を処理しながら該組み合わせられた長さ値に応答して該デコーダにおいて該第１および第２の可変長符号値を復号化するステップと
を包含する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長デコーダ（ＶＬＤ）に関しており、具体的には、圧縮されたイメージデータを復号化するのに適した可変長符号用のデコーダに関している。
【背景技術】
【０００２】
近年、イメージデータ圧縮技術には目覚ましい進歩が見られる。このような技術の目的は、符号化されていないイメージデータに必要となるビットレートよりも低いビットレートでイメージデータを符号化することにより、例えばディジタル送信や記録の能率を高めることにある。このような符号化能率を得るために用いられている技術としては、例えば、予測符号化や変換符号化などがある。
【０００３】
また、圧縮された符号に対して可変長符号化をおこなうことによって、さらなるイメージデータ圧縮が達成される。可変長符号化は、符号化されたビット幅を、符号化される値の出現頻度に従って変化させることを含む。典型的には、より高い頻度で出現する値には、より低い頻度で出現する値よりも短い符号が割り当てられる。よって、固定長符号化の場合に比べて、より低いビットレートが得られる。可変長符号としては、例えば、ハフマン符号がある。
【０００４】
可変長コードワード（ＶＬＣ）は、典型的には、ルックアップテーブル（ＬＵＴ）を用いて復号化される。ｎビットのパラメータデータ信号が、ＬＵＴに結合される。このｎビット信号は、ＬＵＴに格納されているデータに対するアドレスとして用いられる可変長コードワード（その長さはｎビットでよい）を含んでいる。ＬＵＴに格納されているデータは、符号長および符号値に対応している。符号長は、ｎビット信号において識別された可変長コードワードの長さを具体的に示す。符号値は、可変長符号の復号化された（つまり固定長の）値である。ＬＵＴの出力は、符号長および符号値である。
【０００５】
米国では、ディジタル的に符号化された高精細度テレビジョン信号についてある規格が提案されている。この規格は、国際標準化機構（ＩＳＯ）のムービング・ピクチャ・エキスパート・グループ（ＭＰＥＧ）により提案されているＭＰＥＧ−２規格と本質的には同じである。以下、この規格を「ＭＰＥＧ規格」と称する。この規格は、「情報技術−動画およびそれに付随する音声の生成符号化、勧告Ｈ．２６２」（ＩＳＯ／ＩＥＣ１３８１８−２、１９９５年（Ｅ））と題された国際規格案（ＤＩＳ）公報中に記載されている。この公報はＩＳＯから入手可能であり、本願明細書も、そのＭＰＥＧ−２ディジタルビデオ符号化規格に関する教示については参考として援用している。
【０００６】
ＭＰＥＧ規格が可変長符号化をどのように用いているかを知るための例として、ＭＰＥＧ−２規格の付録Ｂで規定されているコードテーブルＢ−１４およびＢ−１５を考える。このコードテーブルでは、最大１７ビットのサイズの可変長コードワードが復号化されることになる。それぞれの符号は、「ラン」値と「レベル」値との互いに異なる組み合わせに対応している。ここで、ランは、スキャンオーダーにおける非ゼロ係数に先行するゼロ係数の個数であり、レベルは、非ゼロ係数の絶対値である。
【０００７】
ＭＰＥＧ−２高精細度テレビジョン（ＨＤＴＶ）ビデオデコーダは、非常に高い復号化レートを必要とする。圧縮されたビットストリーム内の多数のフィールドは可変長符号化されてはいるものの、このビットストリームのうちのおよそ８５％は、離散コサイン変換（ＤＣＴ）係数復号化を含んでいる。ＨＤＴＶビットストリームは、１秒当たり１憶個のオーダーの可変長符号の復号化を必要とする。よって、ある時刻における１個の符号は、１００ＭＨｚのクロックを必要とする。このような高クロックレートは、現在利用可能な高密度ＡＳＩＣの実用的限界を超えている。その代わりに用いられる手段としては、１クロックサイクルにつき多数の符号を復号化することが挙げられる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
多数の符号を復号化するためのある方法では、互いに協調して動作する２つのＶＬＤを使用することが要求される。このようなアプローチの欠点としては、データはスライスフォーマットであり、それぞれのスライスの長さは復号化の前には分かっていないので、２つのパラレルパスが別々のスライスを対象として動作しなければならないことがある。このような場合には、１個１個のスライスを分離するための前処理とメモリとが必要になる。
【０００９】
本願明細書は、所定の優先順位のつけられた復号化構成を用いたＶＬＤに関するその教示については、Ｏｚａｋｉに付与された米国特許第５，４２８，３５６号を明示的に参考として援用する。ＯｚａｋｉのＶＬＤは、ハフマン符号列の先頭ハフマン符号を復号化する第１のデコーダ回路と、ハフマン符号列の先頭部分から選択された２つの所定のハフマン符号からなる連続符号列を復号化する第２のデコーダ回路とを備えている。第１のデコーダは、上述したようにＬＵＴを用いる。第２のデコーダは、一定数の所定のコードワードペアのそれぞれ１つのペアが、ＬＵＴに格納されているデータに対するアドレスとして用いられる、ＬＵＴを用いる。ＬＵＴに格納されているデータは、符号長と符号値のシーケンスのペアに対応している。入力ストリームにおいて所定のコードワードペアのうちのあるペアに遭遇したとき、対応する符号値ペアおよび符号値ペアは、第２のデコーダにより出力される。第２のデコーダが２つの復号化された値を出力するとき、選択器は第２のデコーダの出力を選択する。第２のデコーダが２つの復号化された値を生成できなかったとき、選択器は、第１のデコーダの出力を選択する。
【００１０】
Ｏｚａｋｉの特許のＶＬＤは、第２のデコーダが限られた数の所定の２列の組み合わせしか復号化できないという点で限定されたものである。より詳細には、第２のデコーダは、選択された符号ペアしか復号化できない。そのため、そのペアは、全長が短くなる。より大きな長さの列に遭遇した時には、多数のクロックサイクルが必要になる。ハフマン符号は、一般に、低い周波数の符号がより大きな長さをもつように選択されるので、Ｏｚａｋｉの第２のデコーダは、概略的には、より低い周波数の符号を含む符号ペアを復号化できない。よって、多数のクロックサイクルが必要になる。
【００１１】
さらに、ＯｚａｋｉのＶＬＤは、大きなメモリを必要とする。なぜなら、ｎビットアドレスが、ＬＵＴに対する入力として供給されなければならないからである。また、ＬＵＴにおけるそれぞれのメモリ位置は、ｚビットの符号長とｖビットの符号値とを格納する。その結果、符号長および符号値とを格納するためには、合計ｚ＋ｖビットが必要になる。１個のＬＵＴに必要とされる合計ビット数は、２n×（ｚ＋ｖ）となる。
【００１２】
よって、変換テーブルのサイズを制限することによって、その変換テーブルに必要とされるメモリサイズを小さくしようとする提案がなされている。しかし、このような技術によれば、復号化処理の速度が遅くなってしまう。
【００１３】
本発明は、上記課題を解決するためになされたものであり、その目的とするところは、データストリーム内に含まれる複数の可変長符号化されたデータ値の長さを１クロックサイクル内に決定する装置および方法を提供することにある。
【課題を解決するための手段】
【００１４】
本発明による装置は、データストリーム内に含まれる複数の可変長符号化されたデータ値の長さを１クロックサイクル内に決定する装置であって、該データストリームを受け取り、シフト制御信号に応答して、該複数の可変長符号化されたデータ値のうちの１サブセットを伝送するシフト手段と、該複数の符号化されたデータ値の該サブセットを受け取るように結合されており、第１の復号化動作をおこなうことによって、該サブセットにおける該複数の符号化されたデータ値のうちの第１のデータ値の長さを決定する、第１の長さ復号化手段と、該複数の符号化されたデータ値の該サブセットを受け取るように結合されており、第２の復号化動作をおこなうことによって、該サブセットにおける該複数の符号化されたデータ値のうちの第２のデータ値の長さを個別に決定する、第２の長さ復号化手段であって、該サブセットにおいて、該第２の符号化されたデータ値が、該第１の符号化されたデータ値の直後に続いており、該第１および該第２の復号化動作が同時におこなわれる、第２の長さ復号化手段と、該第１および該第２の符号化されたデータ値の該長さに応答して、該第１および該第２のデータ値の組み合わされた長さを出力する、組み合わされた長さ復号化手段と、該第１および該第２のデータ値の該組み合わされた長さに応答して該シフト制御信号を形成し、それにより、該シフト手段内で次に符号化されたデータ値の位置を識別するシフト制御手段であって、該次の符号化されたデータ値が、該第２の符号化されたデータ値の直後に続いており、該シフト制御信号を該シフト手段に伝送する、シフト制御手段と、を備えており、そのことにより上記目的が達成される。
【００１５】
ある実施形態では、前記第２の長さ復号化手段が、複数の長さデコーダであって、それぞれが、前記第１の符号化されたデータ値の可能なさまざまな長さの１つに対応しており、前記複数の符号化されたデータ値の前記サブセットの互いに異なる部分を同時に復号化する、複数の長さデコーダを備えている、装置であって、該複数の長さデコーダのそれぞれが、該第１の符号化されたデータ値の該対応する可能な長さの１つに基づいて、前記第２の符号化されたデータ値の長さの対応するそれぞれの値を決定する。
【００１６】
ある実施形態では、前記第１の長さ復号化手段が、前記第１の符号化されたデータ値の前記長さを示す第１の長さ信号を発生して伝送し、かつ前記第２の長さ復号化手段の前記複数の長さデコーダのそれぞれが、それぞれに対応する出力信号を発生して伝送する、装置であって、該第１の長さ信号に応答して、該第１の長さ信号により示された該第１の符号化されたデータ値の該長さに対応する、該長さデコーダの１つの出力信号を選択する手段であって、該選択された出力信号が、前記第２の符号化されたデータ値の長さを示している、手段をさらに備えている。
【００１７】
ある実施形態では、前記第１の長さ復号化手段が、前記第１の符号化されたデータ値の前記可能なさまざまなの長さに対応する複数のビットを出力し、該第１の長さ復号化手段により出力された該複数のビットのうちの単一のビットが設定され、該設定されたビットは、該第１の長さ復号化手段により決定された該第１の符号化されたデータ値の該長さに対応しており、前記第２の長さ復号化手段の前記複数の長さデコーダがそれぞれ、該それぞれの長さデコーダにより決定される前記第２の符号化されたデータ値の長さを表す対応する対応する出力信号を発生し、かつ、前記組み合わされた長さ復号化手段が、該単一の設定されたビットに応答して、該ビットが該第１の長さ復号化手段により設定される対象である、該第１の符号化されたデータ値の該長さに対応する、該複数の長さデコーダの１つによる該出力信号の伝送をイネーブルする。
【００１８】
ある実施形態では、前記シフト制御手段が、前記第１および前記第２の符号化されたデータ値の前記組み合わされた長さの可能なさまざまな値に対応する複数の加算器を備えており、該複数の加算器のそれぞれが、候補シフト制御信号を形成し、前記組み合わされた長さ復号化手段が、該第１および該第２の符号化されたデータ値の該組み合わされた長さの該可能なさまざまな値に対応する複数のビットを出力し、該組み合わされた長さ復号化手段により出力された該複数のビットの１つが設定され、該設定されたビットは、該第１および該第２の符号化されたデータの該組み合わされた長さに対応しており、かつ該シフト制御手段が、該組み合わされた長さ復号化手段により出力された該設定されたビットを用いて、該複数の加算器の１つにより出力された該候補シフト制御信号の伝送をイネーブルし、該１つの加算器が、該第１および該第２の符号化されたデータ値の該組み合わされた長さに対応している。
【００１９】
ある実施形態では、前記シフト手段が、前記データストリームを受け取り、固定された数のデータビットを前記第１および前記第２の長さ復号化手段に伝送するシフタ／マルチプレクサを備えており、かつ前記シフト制御信号が、該シフタ／マルチプレクサ内の該固定された数のデータビットのうちの第１のデータビットの位置を識別する。
【００２０】
ある実施形態では、前記シフト制御手段が、前記第１および前記第２の符号化されたデータ値の前記組み合わされた長さの前記可能なさまざまな値に対応する複数の加算器であって、それぞれが対応する候補シフト制御信号を同時に形成し伝送する、複数の加算器と、該第１および前記第２の符号化されたデータ値の該組み合わされた長さに応答して、該第１および前記第２の符号化されたデータ値の該組み合わされた長さに対応する該候補シフト制御信号を選択し、該選択された候補を該シフト制御信号として前記シフト手段に伝送する、和選択手段と、を備えている。
【００２１】
ある実施形態では、前記複数の加算器がそれぞれ、対応するモジュロ算術演算をおこなうことによって、該それぞれの加算器の前記候補シフト制御信号を形成する。
【００２２】
ある実施形態では、前記シフト手段が、前記データストリームを受け取り、固定された数の連続するデータビットを前記第１および前記第２の長さ復号化手段に伝送するシフタ／マルチプレクサを備えており、かつ前記シフト制御信号が、該シフタ／マルチプレクサ内の該固定された数の連続するデータビットのうちの第１のデータビットの位置を識別する。
【００２３】
ある実施形態では、前記データストリームが符号化されたビデオ信号を含んでおり、前記第１および前記第２の符号化されたデータ値が、該ビデオ信号の離散コサイン変換係数を表現する。
【００２４】
本発明による装置は、複数の可変長符号化されたデータ値から構成されるデータストリームを１クロックサイクル内に復号化する装置であって、該データストリームを受け取り、シフト制御信号に応答して、該複数の可変長符号化されたデータ値のうちのサブセットを伝送するシフト手段と、該複数の符号化されたデータ値の該サブセットを受け取るように結合されており、第１の復号化動作をおこなうことによって、該サブセットにおける該複数の符号化されたデータ値のうちの第１のデータ値の長さを決定する、第１の長さ復号化手段と、該複数の符号化されたデータ値の該サブセットを受け取るように結合されており、第２の復号化動作をおこなうことによって、該サブセットにおける該複数の符号化されたデータ値のうちの第２のデータ値の長さを個別に決定する、第２の長さ復号化手段であって、該サブセットにおいて、該第２の符号化されたデータ値が、該第１の符号化されたデータ値の直後に続いており、該第１および該第２の復号化動作が同時におこなわれる、第２の長さ復号化手段と、該第１および該第２の符号化されたデータ値の該長さに応答して、該第１および該第２のデータ値の組み合わされた長さを出力する、組み合わされた長さ復号化手段と、該第１および該第２のデータ値の該組み合わされた長さに応答して、該シフト制御信号を形成し、それにより、該シフト手段内で次に符号化されたデータ値の位置を識別するシフト制御手段であって、該次の符号化されたデータ値が、該第２の符号化されたデータ値の直後に続いており、該シフト制御信号を該シフト手段に伝送する、シフト制御手段と、該複数の符号化されたデータ値の該サブセット、該第１の符号化されたデータ値の該長さ、ならびに該第１および該第２の符号化されたデータ値の該組み合わされた長さを受け取るように結合されており、該第１および該第２の符号化されたデータ値を第１および第２の復号化された値にそれぞれ変換する、値復号化手段と、を備えており、そのことにより上記目的が達成される。
【００２５】
本発明による方法は、データストリーム内に含まれる複数の可変長符号化されたデータ値の長さを１クロックサイクル内に決定する方法であって、該データストリームおよびシフト制御信号を受け取るステップと、第１の復号化動作をおこなうことによって、該サブセットにおける該複数の符号化されたデータ値のうちの第１のデータ値の長さを決定するステップと、第２の復号化動作をおこなうことによって、該サブセットにおける該符号化されたデータ値のうちの第２のデータ値の長さを個別に決定するステップであって、該サブセットにおいて、該第２の符号化されたデータ値が、該第１の符号化されたデータ値の直後に続いており、該第１および該第２の復号化動作が同時におこなわれる、ステップと、該第１および該第２のデータ値の組み合わされた長さを出力するステップと、該シフト制御信号を形成することによって、該サブセット内に含まれている該複数の符号化されたデータ値のうちのいくつかを決定するステップと、該シフト制御信号をシフト手段に伝送するステップと、を含んでおり、そのことにより上記目的が達成される。
【００２６】
以下に作用を説明する。本発明によれば、データストリーム内に含まれる複数の可変長符号化されたデータ値の長さを１クロックサイクル内に決定する装置および方法が提供される。
【００２７】
この装置は、データストリームを受け取るシフタを備えている。シフタは、シフト制御信号に応答して、複数の可変長符号化されたデータ値のサブセットを伝送する。
【００２８】
第１の長さ復号化メカニズムが、複数の符号化されたデータ値のサブセットを受け取るように結合される。第１の長さ復号化メカニズムは、第１の復号化動作をおこなうことによって、そのサブセットにおける複数の符号化されたデータ値のうちの第１のデータ値の長さを決定する。
【００２９】
第２の長さ復号化メカニズムが、複数の符号化されたデータ値のサブセットを受け取るように結合される。第２の長さ復号化メカニズムは、第２の復号化動作をおこなうことによって、そのサブセットにおける複数の符号化されたデータ値のうちの第２のデータ値の長さを決定する。第２の符号化されたデータ値は、そのサブセット内では、第１の符号化されたデータ値の直後に続いている。第１および第２の復号化動作は、同時におこなわれる。
【００３０】
組み合わされた長さデコーダは、第１および第２の符号化されたデータ値の長さに応答して、第１および第２のデータ値の組み合わされた長さを出力する。
【００３１】
シフトコントローラは、第１および第２のデータ値の組み合わされた長さに応答して、シフト制御信号をつくる。このシフト制御信号は、シフタ内で次に符号化されるデータ値の位置を識別する。次に符号化されるデータは、第２の符号化されたデータ値の直後に続いている。シフトコントローラは、シフト制御信号をシフタに伝送する。
【発明の効果】
【００３２】
本発明によれば、データストリーム内に含まれる複数の可変長符号化されたデータ値の長さを１クロックサイクル内に決定する装置および方法が提供することができる。
【発明を実施するための最良の形態】
【００３３】
（概観）
図１は、本発明を適用可能な可変長デコーダ（ＶＬＤ）係数デコーダ１００の一例を示すブロック図である。本発明によれば、可能なあらゆる組み合わせによる２つの連続する符号化されたデータ値を１クロックサイクル内に復号化できる、改善された可変長デコーダ（ＶＬＤ）長さ復号化ループ１１０が実現される。図１の例では、本発明は、ＤＣＴ係数（これらの係数は、符号化されたデータストリームの８５％を占めている）の長さを復号化するために用いられる。しかし、本発明がその他の可変長符号化されたデータ値（例えば、高レベルシンタクスあるいはその他の可変長符号化値）を復号化するのにも用いることができることは、当業者には理解できるであろう。
【００３４】
図２は、図１に示されているＶＬＤ長さ復号化ループ１１０を示すブロック図である。本実施例の長さ復号化ループ装置１１０は、可変長符号化されたデータ値を第１の長さデコーダ２１０に伝送するシフタ２０６を備えている。第１の長さデコーダ２１０は、第１の復号化動作をおこなうことによって、複数の符号化されたデータ値のうちの第１のデータ値の長さ２１１を決定する。
【００３５】
第２の長さ復号化手段２１２は、シフタ／マルチプレクサ２０６から複数の符号化されたデータ値を受け取り、第２の復号化動作をおこなうことによって、第１の符号化されたデータ値の直後に続く第２のデータ値の長さを決定するように結合されている。第１および第２の復号化動作は、同時におこなわれる。第２の長さ復号化手段２１２は、複数のデコーダ２１２ａ〜２１２ｐを備えている。これら複数のデコーダはそれぞれ、第１の符号化されたデータ値の可能なさまざまな長さの１つに対応している。デコーダ２１２ａ〜２１２ｐはそれぞれ、第２の符号化されたデータ値の対応する長さ２１３ａ〜２１３ｐを同時に決定し、それぞれは、第１の符号化されたデータ値とは異なる長さをもつとする。組み合わされた長さデコーダ２１４は、第１のデータ値の実際に復号化された長さ２１１を用いて、デコーダ２１２ａ〜２１２ｐにより出力された復号化された長さ２１３ａ〜２１３ｐのうちから１つを選択し、組み合わされた長さ信号Ｌ３を出力する。
【００３６】
ブロック２１８、２２２、２３４および２３６を含むシフトコントローラは、組み合わされた長さデコーダ２１４から組み合わされた長さを受け取るように結合されており、複数の符号化されたデータ値のうちのどれが、第１および第２の長さ復号化手段に伝送されるかを決定するのに用いられるシフト制御信号２３５をつくる。シフト制御信号２３５は、シフタ２０６に伝送される。
【００３７】
以下に、図２を参照して、本実施例によるＶＬＤ長さ復号化ループ１１０についてさらに詳しく説明する。
【００３８】
（詳細な説明）
ここでは、「情報技術−動画およびそれに付随する音声情報の生成符号化：ビデオ」の勧告Ｈ．２６２（ＩＳＯ／ＩＥＣ１３８１８−２、１９９５年（Ｅ））（以下では、「ＭＰＥＧ規格」と称する）の実際に用いられている知識を用いるものとし、その詳細については割愛する。
【００３９】
再び図１を参照すると、ＶＬＤ長さ復号化ループ１１０は、４８ビットの圧縮された入力データストリームＤＡＴＡ＿ＩＮ１１１を受け取る。このデータス
トリームは、符号化されたデータを含んでいる。ＶＬＤ長さ復号化ループ１１０に与えられるその他の入力信号（ＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡ、ＬＵＭＡ／ＣＨＲＯＭＡ、ＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴ、ＴＥＳＴ＿ＭＯＤＥ、ＨＯＬＤ、ＲＥＳＴＡＲＴおよびＥＸＴＥＲＮＡＬ＿ＭＵＸ＿ＰＯＳＩＴＩＯＮ）について、以下に図３を参照して詳細に説明する。ＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡフラグは、ＭＰＥＧ規格のパラグラフ６．３．１７．１およびテーブルＢ−２〜Ｂ−８に規定されている。ＬＵＭＡ／ＣＨＲＯＭＡフラグは、受け取られたブロックが輝度ブロックであるか、あるいはクロミナンスブロックであるかを示す。ＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴは、ＭＰＥＧ規格のパラグラフ６．２．３．１の「ピクチャ符号化拡張」に詳述されている。
【００４０】
ＶＬＤ長さ復号化ループ１１０は、１クロックサイクルのあいだに、２つの連続する符号化されたデータ値の長さを決定する。第１の符号化されたデータ値の長さは、Ｌ１で表され、第１および第２の符号化されたデータ値の組み合わされた長さは、Ｌ３で表される。入力データ１１１のサブセット１１２ならびに復号化された長さ値Ｌ１およびＬ３は、ＶＬＤラン／レベル復号化ブロック１２０、ＶＬＤイントラＤＣ係数復号化ブロック１３０および出力制御ブロック１４０に伝送される。
【００４１】
ＶＬＤ長さ復号化ループ１１０は、Ｂ１４信号およびＢ１５信号をＶＬＤラン／レベル復号化機能１２０に与えることによって、ラン／レベル復号化においてどのＬＵＴを用いるべきか識別する。Ｂ１４信号は、ＤＣＴ係数テーブル、０、ＬＵＴ（ＭＰＥＧ規格、付録Ｂ、テーブルＢ−１４に詳述されている）が用いられることを示す。Ｂ１５信号は、ＤＣＴ係数テーブル、１、情報（ＭＰＥＧ規格、付録Ｂ、テーブルＢ−１５に詳述されている）が用いられることを示す。これらのテーブルを、本明細書では、それぞれ「テーブルＢ−１４」および「テーブルＢ−１５」と称する。これらのＢ−１４およびＢ−１５テーブルは、それぞれのＶＬＣについてランおよびレベルを指定する（ただし、エスケープ符号化された値は別である。この符号の場合、ランおよびレベルは、テーブルＢ−１６にその詳細が述べられている）。
【００４２】
係数（テーブルＢ−１４またはＢ−１５で識別された）の復号化された値が、「エンドオブブロック」シーケンスであるとき、そのブロックには、それ以上の係数はない。ＶＬＤ長さ復号化ループ１１０は、エンドオブブロックシーケンスを検出すると、ＥＮＤ＿ＯＦ＿ＢＬＯＣＫ信号を出力制御機能１４０に与える。
【００４３】
ＶＬＤラン／レベル復号化ブロック１２０は、入力データと、長さＬ１およびＬ３と、テーブルＢ１４およびテーブルＢ１５とを受け取る。ＶＬＤラン／レベル復号化ブロック１２０は、この情報を用いて、復号化された値を決定する。ＤＣイントラ係数以外のＤＣＴ係数については、ＶＬＤラン／レベル復号化ブロック１２０は、入力データにおける２つのＶＬＣのそれぞれについて（ＭＰＥＧ規格、パラグラフ３．７９および３．１１９に規定されているように）ランおよびレベルを決定する。これらの値は、それぞれＲＵＮ＿１、ＬＥＶＥＬ＿１、ＲＵＮ＿２およびＬＥＶＥＬ＿２と表される。復号化された値の決定は、テーブルＢ１４またはＢ１５に基づいているので、ある所与のブロックに適用可能なテーブルは、ＭＰＥＧ規格のテーブル７−３に従って決定される。
【００４４】
ランおよびレベルの可能な多数の組み合わせは、それらを表す可変長符号（ＶＬＣ）をもっていない。これらの統計的には稀である組み合わせを符号化するためには、ＭＰＥＧ規格のパラグラフ７．２．２．３に詳述されているエスケープ符号化方法が用いられる。この方法によれば、エスケープＶＬＣの後には、ラン値に対応する６ビットの固定長符号が続く。そして、この固定長符号の後には、正負の符号つきレベルの値を表す１２ビットの固定長符号が続く。もし符号化されたデータが「エスケープ符号」を含んでいれば、ＶＬＤラン／レベル復号化ブロック１２０は、ランおよびレベル値を、ＭＰＥＧ規格、付録Ｂ、テーブルＢ−１６に規定されているように与える。エスケープ符号の検出は、図１では信号ＥＳＣ＿１およびＥＳＣ＿２により表されており、復号化された値は、変数ＲＵＮ＿１＿ＥＳＣ、ＬＥＶＥＬ＿１＿ＥＳＣ、ＲＵＮ＿２＿ＥＳＣおよびＬＥＶＥＬ＿２＿ＥＳＣにより与えられている。なお、エスケープ符号は依然としてＶＬＣであり、エスケープ符号は、Ｂ１４およびＢ１５のＬＵＴのそれぞれに現れる。エスケープ符号化された値のランおよびレベル値は固定長ではあるが、ランおよびレベルに先行するエスケープ符号は、ＶＬＣである。
【００４５】
本実施例の係数デコーダでは、別個のＶＬＤイントラＤＣ係数復号化機能１３０は、イントラ符号化されたブロックの第１のＶＬＣ（すなわち、周波数が両方の次元でゼロになるＤＣ係数）を復号化する。あるブロックにおける第１のＶＬＣがＶＬＤ長さ復号化ループ１１０により受け取られると、ＣＯＥＦ＿１出力信号がセットされる。ＣＯＥＦ＿１およびＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡが共にセットされると、ＶＬＤイントラＤＣ係数復号化機能１３０がイネーブルされる。ＶＬＤイントラＤＣ係数復号化機能１３０は、選択されたデータと、長さ復号化ループ１１０により与えられた第１の符号化されたデータ値の長さとを用いて、ＤＣ係数を復号化する。ＶＬＤイントラＤＣ係数復号化機能１３０により復号化されたｄｃｔ＿ｄｃ＿ｓｉｚｅ値は、ＭＰＥＧ規格、付録Ｂ、テーブルＢ−１２およびＢ−１３に詳述されている。もしブロックが輝度ブロックであるなら、テーブルＢ−１２のｄｃｔ＿ｄｃ＿ｓｉｚｅ値が用いられる。もしブロックがクロミナンスブロックであるなら、テーブルＢ−１３のｄｃｔ＿ｄｃ＿ｓｉｚｅ値が用いられる。
【００４６】
もしｄｃｔ＿ｄｃ＿ｓｉｚｅの復号化された値がゼロであるなら、ＶＬＣの後には、固定長符号ｄｃ＿ｄｃｔ＿ｄｉｆｆｅｒｅｎｔｉａｌが続く。ｄｃ＿ｄｃｔ＿ｄｉｆｆｅｒｅｎｔｉａｌの長さは、ｄｃ＿ｄｃｔ＿ｓｉｚｅビット長である。微分値は、まず符号化されたデータから復元される。この微分値は予測器に加えられ、最後に復号化された係数を復元する。イントラＤＣ係数復号化機能１３０は、当業者であれば容易に作成できるであろう。
【００４７】
出力コントローラ１４０は、ＶＬＤ長さ復号化ループ１１０から、組み合わされた長さビットＬ３（１１３）の２つと、ＥＮＤ＿ＯＦ＿ＢＬＯＣＫ信号およびＥＲＲＯＲ信号とを受け取る。また、出力コントローラ１４０は、ＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴ信号も受け取る。出力コントローラ１４０は、２つの信号ＥＮＡＢＬＥ＿１およびＥＮＡＢＬＥ＿２を発生する。これらの信号は、いつＲＵＮ信号およびＬＥＶＥＬ信号が有効な情報を含んでいるかを示す。出力コントローラ１４０は、ブロックのはじめにＥＮＡＢＬＥ＿１信号およびＥＮＡＢＬＥ＿２信号をセットし、ブロックの終わりにＥＮＡＢＬＥ＿１信号およびＥＮＡＢＬＥ＿２信号をリセットする。どちらのテーブル（Ｂ１４かＢ１５か）が用いられる（ＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴにより示される）か、また、ＥＮＤ＿ＯＦ＿ＢＬＯＣＫが発生する時にＬ３（０）がセットされるか、Ｌ３（２）がセットされるかによって、出力コントローラ１４０は、ブロックの最後の符号が、ＲＵＮ＿１／ＬＥＶＥＬ＿１であるか、あるいはＲＵＮ＿２／ＬＥＶＥＬ＿２であるか判定する。もしエラーが検出されれば（ＥＲＲＯＲ信号が論理ハイに設定されると）、ＥＮＡＢＬＥ＿１およびＥＮＡＢＬＥ＿２はリセットされる。
【００４８】
ＶＬＤラン／レベル復号化ブロック１２０およびイントラＤＣ係数復号化機能１３０からの出力信号は、出力ｍｕｘ１５０に与えられる。出力ｍｕｘ１５０は、ＥＳＣ＿１信号を用いて、ＲＵＮ＿１およびＬＥＶＥＬ＿１の値（１２１および１２２）か、または、ＲＵＮ＿１＿ＥＳＣおよびＬＥＶＥＬ＿１＿ＥＳＣの値（１２３および１２４）のいずれかを選択する。同様に、出力ｍｕｘ１５０は、ＥＳＣ＿２信号を用いて、ＲＵＮ＿２およびＬＥＶＥＬ＿２の値（１２５および１２６）か、または、ＲＵＮ＿２＿ＥＳＣおよびＬＥＶＥＬ＿２＿ＥＳＣの値（１２７および１２８）のいずれかを選択する。選択された値は、ＲＵＮ＿１値１５１、ＬＥＶＥＬ＿１値１５２、ＲＵＮ＿２値１５３、およびＬＥＶＥＬ＿２値１５４として出力される。また、ＦＣ＿ＦＬＡＧおよびＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡ信号は、イントラ符号化されたブロックの係数が第１の係数の場合（つまり、ＤＣ係数であるとき）、ＤＣ＿ＬＥＶＥＬを選択する。出力ｍｕｘ１５０は、ＤＣ係数をＲＵＮ＿１／ＬＥＶＥＬ＿１チャネル上に伝送する。
【００４９】
図２は、ＶＬＤ長さ復号化ループ１１０の一実施形態を示すブロック図である。
【００５０】
シフトメカニズムが、データストリームＤＡＴＡ＿ＩＮを受け取るように設けられている。この実施形態例では、シフトメカニズムは、シフタ／マルチプレクサ２０６と、２つのレジスタ２０２および２０４とを備えている。シフタ／マルチプレクサ２０６は、シフト制御信号２３５に応答して、複数の可変長符号化されたデータ値のサブセットを伝送し、長さを復号化する。
【００５１】
レジスタ２０２および２０４はそれぞれ、可能な最大長のＶＬＣを２つ格納できるサイズである。この実施形態例では、最大長のＶＬＣは、２４ビット長である。よって、各レジスタは４８ビットを保持できる。シフタ／マルチプレクサ２０６は、レジスタ２０２と２０４とを合わせた（１未満）ビットと同数のビットを保持する。本実施例のレジスタ２０２は、新しいデータの４８ビットを受け取り、受け取ったデータをレジスタ２０４とシフタ／マルチプレクサ２０６とに出力する。よって、レジスタ２０４は、レジスタ２０２よりも常に１サイクルだけ遅れている。レジスタ２０２および２０４の内容がレジスタ２０６に伝えられると、レジスタ２０２の内容は、レジスタ２０４にシフトダウンされ、新しい４８ビットがレジスタ２０２に伝えられ、それらの両方がシフタ／マルチプレクサ２０６に伝えられる。その結果、レジスタ２０２および２０４がイネーブルされ、新しい４８ビットワードをシフトすると、これらのレジスタは、シフタ／マルチプレクサ２０６の内容の４８ビットの下向きのシフトをおこなう。このことは、現在シフタ／マルチプレクサ２０６に格納されている９５ビットのうちの４８ビット以上が、既に長さ復号化機能２０８に伝えられて（おり、後述するように、「４８よりも大きい」信号２３８を伝送して、レジスタ２０２および２０４をイネーブルして）いる時に起こる。本実施例のシフタ／マルチプレクサ２０６は、その内容の４８ビットのサブセットを、デュアル長さ復号化機能２０８に伝送する。
【００５２】
長さ復号化機能２０８は、第１および第２の符号長復号化手段の両方を備えている。本実施形態例では、第１の長さ復号化手段は、複数の符号化されたデータ値のサブセットをシフタ／マルチプレクサ２０６から受け取るように結合された従来のデコーダ回路２１０である。デコーダ２１０は、第１の復号化動作をおこなうことによって、そのサブセットにおける複数の符号化されたデータ値のうちの第１のデータ値の長さを決定する。
【００５３】
これらの係数が、テーブルＢ−１４およびＢ−１５で符号化されるやりかたが原因で、ＶＬＣの長さを決定するには、（少なくとも１ビットは必要であるが）最高でも１２ビットが必要になるだけである（２４ビット長の符号の場合でも同様である）。よって、第１の符号が２４ビット符号であり、第２の符号が１７ビット符号である場合、両方の長さを決定するのには、３６ビットを処理することが必要である。この場合、最初の６ビットが第１の符号の長さを識別し、第２５〜第３６のビットが、第２の符号の長さを識別する。本実施形態例では、符号がＬＳＢからＭＳＢへと復号化されるように、レジスタはロードされる。また、それぞれのＶＬＣのうち（最高でも）１２個のＬＳＢが、ＶＬＣの長さを識別するのに用いられる。
【００５４】
デコーダ回路２１０は、例えば、読み出し専用メモリ（ＲＯＭ）、プログラマブル論理アレイ（ＰＬＡ）、論理ゲート（不図示）などを備えていてもよい。第１の符号化された値を構成する入力列内のｍビットのうち、最初のｎビット（ただし、ｎ＜ｍ。ｎおよびｍは共に整数）が符号の長さを決定するのに用いられる。例えば、もしｍが２４に等しく、ｎが１２に等しいのなら、最初の１２ビットが符号の長さを示し、残りのビットが符号および正負を規定するようにすることができる。
【００５５】
デコーダ２１０は、ＤＣ係数およびＡＣ係数の両方の長さを復号化する。ＤＣ係数の長さは、Ｂ１２（輝度）ＬＵＴまたはＢ１３（クロミナンス）ＬＵＴのいずれかを用いて復号化され、ＡＣ係数は、Ｂ１４のＬＵＴ（非イントラ符号化されたブロックおよびｉｎｔｒａ＿ｖｌｃ＿ｆｏｒｍａｔを有するイントラ符号化されたブロックがゼロに等しい場合）またはＢ１５のＬＵＴ（ｉｎｔｒａ＿ｖｌｃ＿ｆｏｒｍａｔを有するイントラ符号化されたブロックが１に等しい場合）のいずれかを用いて復号化される。したがって、デコーダ２１０は、いずれの係数が現在復号化されているにせよ、その係数に対して用いるべきルックアップテーブルを決定するためには、制御ロジック２１６からの信号Ｂ１２、Ｂ１３、Ｂ１４、Ｂ１５、Ｂ１４−Ｂ１５、ＣＯＥＦ＿１を必要とする。これらの信号は、適切なＬＵＴを用いるようにデコーダ２１０を構成する。
【００５６】
デコーダ回路２１０は、長さを決定するのに用いられるｎビットに対応する符号を格納する。符号化されたデータ値のサブセットの第１の部分（最高ｎビット長）が、デコーダ回路２１０に格納されている符号と一致するようになるとき、デコーダ２１０は、第１の符号化された値の長さを識別する第１のヒット信号２１１を出力する。
【００５７】
第１の長さデコーダ２１０は、第１の符号化されたデータ値の可能なさまざまな長さのそれぞれに対応するビットを出力する。長さデコーダ２１０により出力された複数のビットのうちの単一のビットが、値１に設定される。設定されたこのビットは、第１の長さデコーダ２１０により決定された第１の符号化されたデータ値の長さに対応する。２０ビット信号２１１が、ＶＬＤ長さ復号化ループ１１０から、図２の信号Ｌ１として出力される。
【００５８】
本実施形態例では、第１の可変長符号は、２〜２０のそれぞれの値および値２４に対応する２０種のそれぞれ異なる長さ値を有しうる。可能なこれらの長さは、ＭＰＥＧ規格のテーブルＢ１２〜Ｂ１５により決定される。長さ信号２１１は、２０ビット信号であり、それぞれのビットは、符号化された値の２０種の可能な長さのそれぞれ１つに対応している。信号２１１における２０のビットのうちの１９のビットは、値０を有しており、第１の符号の復号化された長さに対応する、２０のビットのうちの残りの１つのビットは、１に設定される。出力信号２１１のこのフォームの利点は、出力信号２１１が復号化を必要としない点にある。出力信号２１１の設定された単一のビットは、後述するように、それ以上復号化をおこなわなくても、イネーブル信号として用いることができる。
【００５９】
本実施形態例では、２１ビット長のＤＣ係数を復号化する必要がない。なぜなら、本実施例の装置は、メインプロファイルＭＰＥＧ−２デコーダにおいて用いられているので、ビットストリーム中で２１ビット符号に遭遇することはないからである。ただし、その他のタイプのデータストリームの場合、異なるさまざまな符号長に遭遇する可能性があること、また、適切なＬＵＴにおいてどのような長さが追加的に必要になっても、第１の長さデコーダはそれらの長さをすべて受け入れることができることは、当業者には認識できるであろう。
【００６０】
第２の長さ復号化手段２１２は、複数の符号化されたデータ値のサブセットを受け取るように、シフタ／マルチプレクサ２０６に結合されている。第２の長さ復号化手段２１２は、複数の長さデコーダ２１２ａ〜２１２ｐを備えている。これら複数のデコーダはそれぞれ、第１の符号化されたデータ値の可能なさまざまな長さの１つに対応している。長さデコーダ２１２ａ〜２１２ｐはそれぞれ、複数の符号化されたデータ値のサブセットの互いに異なる対応部分を同時に復号化する。第２の長さ復号化手段２１２は、第２の復号化動作をおこなうことによって、そのサブセットにおける複数の符号化されたデータ値のうちの第２のデータ値の長さを個別に決定する。この第２のデータ値は、そのサブセットでは、第１の符号化されたデータ値の直後に続いている。第１および第２の復号化動作は、同時におこなわれる。
【００６１】
なお、本願明細書で用いられている用語「個別に識別する」とは、第２の符号を第１の符号とは別個の符号として扱うことによって、第２の符号の長さが決定されることを意味する。第１の符号の長さは、第１のデコーダ２１０により決定され、第２の符号の長さは、第２の長さ復号化手段２１２により決定される。よって、第１および第２の符号は、米国特許第５，４２８，３５６号に記載の内容とは異なり、復号化を目的として１個の２倍長符号に結合されることはない。米国特許第５，４２８，３５６号では、２倍長符号はそれぞれ、単一のデコーダにより単一のテーブルルックアップ動作で復号化され、所定のペアの復号化された値を識別する。
【００６２】
例えば、本実施形態例では、第１の符号は、２〜２０ビット長または２４ビット長である。このサブセットにおけるビットは、通常のかたちでナンバリングされた０〜４７である。デコーダ２１２ａは、データ値のサブセットにおいて第３のビット（ビットＮｏ．２）で始まる列の長さを復号化しようと試みる。このビットは、第１の可変長符号の長さが２であれば（そして、２でありさえすれば）、第２の符号化されたデータ値の第１のビットとなる。デコーダ２１２ｂは、データ値のサブセットにおいて第４のビット（ビットＮｏ．３）で始まる列を復号化しようと試みる。このビットは、第１の可変長符号の長さが３であれば（そして、３でありさえすれば）、第２の符号化されたデータ値の第１のビットとなる。複数のデコーダ２１２ｃ〜２１２ｒは、当業者には容易に理解できるように、第１の符号化された値の連続する複数の長さに対応している。デコーダ２１２ｓは、データ値のサブセットにおいて第２１のビット（ビットＮｏ．２０）で始まる列を復号化しようと試みる。このビットは、第１の可変長符号の長さが２０であれば（そして、２０でありさえすれば）、第２の符号化されたデータ値の第１のビットとなる。最後に、デコーダ２１２ｐは、データ値のサブセットにおいて第２５のビット（ビットＮｏ．２４）で始まる列を復号化しようと試みる。このビットは、第１の可変長符号の長さが可能な最大の長さ（つまり２４）であれば（そして、２４でありさえすれば）、第２の符号化されたデータ値の第１のビットとなる。
【００６３】
図２に示す実施形態例では、第１のデコーダ２１０がイントラＤＣ係数を処理しているサイクルのあいだは、１個の符号長のみが処理される。第１および第２のＡＣ係数は、ＤＣ係数が復号化されるサイクルに後続するサイクルで復号化される。この設計の利点は、長さ復号化機能２０８が、同一のクロックサイクル内にＤＣ係数およびＡＣ係数を両方とも復号化する必要はないことである。よって、第２の長さ復号化手段２１２は、１６種の可能なＡＣ係数長のそれぞれに対応するデコーダ２１２ａ〜２１２ｐを備えていさえすればよい。ＤＣ係数には発生するが、ＡＣ係数には発生しない４種の長さ（１２ビット、１８ビット、１９ビットおよび２０ビット）についてデコーダ２１２ｑ〜２１２ｔをさらに追加して設ける必要はない。なお、代わりに選択可能な実施形態では（図５を参照して後述される）、復号化機能５０８は、第１のＡＣ係数が第２の長さデコーダ５１２で復号化されるのと同時に、イントラＤＣ係数を長さデコーダ５１０で復号化できるが、そのような実施形態では、第２の長さ復号化手段にデコーダを追加して設ける必要があることは、当業者には理解できるであろう。
【００６４】
再び図２を参照すると、このブロックに対する第２の符号化された係数は決してＤＣ係数ではありえないので、デコーダ２１２ａ〜２１２ｐは、ＡＣ係数にはＢ１４およびＢ１５のＬＵＴを用いさえすればよい。デコーダ２１２ａ〜２１２ｐは、制御ロジック２１６から受け取られたＢ１４、Ｂ１５およびＢ１４−Ｂ１５信号により（適切なＬＵＴを与えるように）構成される。
【００６５】
本発明のある局面では、長さデコーダ２１２ａ〜２１２ｐはそれぞれ、第１の符号化されたデータ値の対応する可能な長さに基づいて、第２の符号化されたデータ値の長さのそれぞれの値を同時に決定する。デコーダ２１２ａ〜２１２ｐにより決定されたこれらの長さのうちの１つだけが、第２の値の正しい長さである。従来技術では遭遇する遅延（第１の符号化された値の復号化を待って、第２の値の復号化をどこから始めるかを決定する）をなくすために、本発明では、第１の値の長さの復号化をおこなうのと並行して、第２の値の可能なすべての長さを同時に決定する（第２の符号の可能な長さはそれぞれ、第１の符号の互いに異なる可能な長さのうちの対応する１つに基づいている）。その後、第１の値の復号化された長さが、既に発生されている復号化された第２の長さ値のうちの正しい１つの値を選択するのに用いられる。
【００６６】
信号２１１の単一の設定されたビットをイネーブルビットとして用いることによって、組み合わされた長さデコーダは、第１の長さをそれ以上復号化することなく、デコーダ２１２ａ〜２１２ｐのうちの単一のデコーダの出力の伝送をすみやかにイネーブルする。第２の長さデコーダ２１２ａ〜２１２ｐのうちの１つを選択する、組み合わされた長さデコーダ内の論理を構成することは、当業者には容易であろう。
【００６７】
第２の長さ復号化手段の長さデコーダ２１２ａ〜２１２ｐはそれぞれ、長さデコーダ２１２ａ〜２１２ｐにより決定された第２の符号化されたデータ値のそれぞれの長さを表す、対応する出力信号２１３ａ〜２１３ｐを発生する。本実施形態例では、出力信号２１３ａ〜２１３ｐはそれぞれ、１６ビット信号であり、第２の符号化された値の１６種の可能な長さ（２〜１１、１３〜１７および２４）に対応している。長さ１２および１８〜２０は、ＤＣ係数についてのみ用いられ、第２の符号化された値の長さに対応することは決してない。１６ビット信号は、第１のデコーダ２１０により出力される２０ビット信号と同様に、１５個の「０」と１個の「１」とを含んでいる。
【００６８】
組み合わされた長さデコーダ２１４は、信号２１１（第１の長さを示す信号）のこの単一のビットを用いて、出力信号２１３ａ〜２１３ｐのうちの１つの、長さデコーダ２１２ａ〜２１２ｐのうちの対応する１つによる伝送をイネーブルする。イネーブルされたこの１つの出力信号は、信号２１１におけるビットが設定された対象である、第１の符号化されたデータ値の長さに対応するデコーダの出力信号である。換言すれば、組み合わされた長さデコーダ２１４は、第１の長さ信号２１１に応答して、長さデコーダ２１２ａ〜２１２ｐのうちの１つの出力信号を選択する。選択された出力信号（信号２１３ａ〜２１３ｐのうちの１つ）を有する長さデコーダ（デコーダ２１２ａ〜２１２ｐのうちの１つ）は、第１の長さ信号２１１により示された第１の符号化されたデータ値の長さに対応する長さデコーダである。選択された出力信号は、第２の符号化されたデータ値の実際の長さを示す。
【００６９】
例えば、第１の符号化された値が３ビット長であり、第２の符号化された値が１７ビット長である場合を考える。もし第１の符号の長さが３であるのなら、信号２１１の第２のビットの値は「１」に設定され、信号２１１の第１のビットおよび第３〜第２０のビットはすべて、値「０」をもつことになる。第１の値が復号化されるのと同時に、デコーダ２１２ａは、第１の符号化された値の長さが２であると（誤って）仮定して、第２の符号化された値の長さを復号化しようと試み、デコーダ２１２ｂは、第１の符号化された値の長さが３であると（正しく）仮定して、第２の符号化された値の長さを復号化する。以下も同様である。組み合わされた長さデコーダ２１４は、信号２１１の設定された（第２の）ビットを用いて、デコーダ２１２ｂ（第２の復号化手段２１２のデコーダ２１２ａ〜２１２ｐのうちの第２のデコーダ）の出力信号の伝送をイネーブルする。イネーブルされた出力信号２１３ｂは、１６ビットをもっている。この場合、第２の符号化された値の長さは１７に等しく、出力信号２１３ｂの第１５のビットの値は「１」に設定され、信号２１３ｂの第１〜第１４のビットおよび第１６のビットの値は「０」に設定される。
【００７０】
本実施形態例では、組み合わされた長さデコーダ２１４は、４０ビットの信号２１５を出力する。第１の符号化された値の可能な長さ（図２の実施形態におけるＡＣ係数については、２〜１１、１３〜１７および２４）は、第２の符号化された値の可能な長さ（ＭＰＥＧ規格のテーブルＢ１４およびＢ１５に規定されているように、２〜１１、１３〜１７および２４）と組み合わせることができる。その結果、組み合わされた長さ２〜３５、３７〜４１および４８に対応する４０種の異なる組み合わされた長さができる。４０のビットのうちの１つが設定されることによって、第１および第２の符号化された値の組み合わされた長さを識別する。信号２１５のその他３９のビットの値は、すべて「０」に設定される。４０ビットの出力信号Ｌ３は、２つの符号化されたデータ値の組み合わされた長さを識別する。信号Ｌ１およびＬ３は、ＶＬＤラン／レベル復号化機能１２０（図１に示されている）に伝送される。
【００７１】
ＶＬＤ長さ復号化ループはまた、第１および第２の符号化されたデータ値の組み合わされた長さ２１５を受け取るように結合されたシフト制御メカニズム（機能２１８、２２２、２３４および２３６を含む）も備えている。シフト制御メカニズムは、シフト制御信号２３５をつくり、符号化されたデータ値のどれが、長さ復号化機能２０８に伝送されるサブセットに含まれているかを決定し、シフト制御信号２３５をシフタ／マルチプレクサ２０６に伝送する。シフト制御メカニズムはまた、シフトイネーブル信号２３８をつくり、レジスタ２０２および２０４に伝送することによって、新しいデータを時々刻々とシフタ／マルチプレクサ２０６にロードし、シフタ／マルチプレクサ２０６における「パイプライン」に十分な符号化されたデータを保持することによって、長さ復号化における割り込みを避ける。
【００７２】
シフト制御メカニズムの２つのレジスタ２３４および２３６には、シフタ／マルチプレクサ２０６のある位置の６つの最下位ビット（ＬＳＢ）が与えられる。これらのＬＳＢは、第１の符号化されたデータ値のＬＳＢが位置している、１〜４８の間のビット位置を示している。
【００７３】
レジスタ２３４における値は、信号２３５を介して、シフタ／マルチプレクサ２０６のｍｕｘ選択端子２０６ａに与えられることによって、シフタ／マルチプレクサ２０６に、信号２３５において識別されたビットに始まる４８ビットを供給させる。
【００７４】
レジスタ２３６における値は、信号２３７を介して、和発生ブロック２１８の入力に与えられる。和発生ブロック２１８の目的は、次の開始ビット位置をシフタ／マルチプレクサ２０６内で、データストリームＤＡＴＡ＿ＩＮにおける第３および第４の符号化されたデータ値（つまり、第１および第２の符号化されたデータ値の直後に続く２つの値）について計算することにある。この計算は、長さデコーダ２１０および第２の長さ復号化手段２１２によりおこなわれる長さ復号化動作とパラレルにおこなわれる。和発生ブロック２１８は、複数の加算器２２０1〜２２０40を含んでいる。加算器２２０1〜２２０40のそれぞれは、組み合わされた長さ２１５の互いに異なる値の１つに対応している（すなわち、それぞれの加算器は、組み合わされた長さの可能なそれぞれの値に対応している）。それぞれの加算器は、それに対応する候補シフト制御信号を同時につくる。それぞれの加算器は、長さデコーダ２１２ａ〜２１２ｐが第２の符号化されたデータ値の長さを復号化するのと同一のクロックサイクル内に、第１の符号化されたデータ値の位置に対して、それぞれ異なる定数を加算する（これにより、加算器の複雑さが緩和される。なぜなら、それぞれの加算器は、単一の定数を加算するだけだからである）。よって、４０種の異なる候補位置が同時に計算される。ここで、それらの位置の１つ１つは、可能な組み合わされた長さのそれぞれに対応している。それぞれの加算器における各定数は、その加算器の対応する組み合わされた長さである。それぞれの加算器は、モジュロ４８加算をおこなう。それぞれの加算器の出力は、７ビット信号２２１1〜２２１40である。加算器出力信号の６つのＬＳＢが、加算器により計算されたモジュロ４８の和を識別し、最上位ビット（ＭＳＢ）は、その和が４８以上であるときに設定されるフラグである。加算器２２０1〜２２０40の出力信号２２１1〜２２１40は、和選択機能２２２に伝送される。
【００７５】
和選択器２２２の出力信号２２３のＭＳＢ２３８が「１」に設定されるとき、第２の符号化されたデータ値のＭＳＢは、シフタ／マルチプレクサ２０６の４８のＭＳＢの中からその位置が特定される。シフタ／マルチプレクサ２０６を、まだ復号化されていないデータで満たしたままにするために、出力信号２２３のＭＳＢ２３８が、レジスタ２０２および２０４からシフタ／マルチプレクサ２０６への新しいデータのロードをイネーブルするために用いられる。上述したように、このロード演算の結果、シフタ／マルチプレクサ２０６内のデータは下向きにシフトされる。その結果、以前は４７のＭＳＢであったものが、今では４７のＬＳＢになっている。新しいデータの４８の追加ビットは、シフタ／マルチプレクサ２０６のＭＳＢ位置に移動される。
【００７６】
和選択器２２２は、４０の候補位置を表す４０の候補シフト制御信号を受け取る。和選択器２２２はまた、レジスタ２３６から現在のｍｕｘ位置２３７を受け取り、外部から与えられたｍｕｘ位置２４０も受け取る。これらの位置については、共に後述する。組み合わされた長さデコーダ２１４の出力信号２１５は、和選択器２２２を制御するのに用いられる。組み合わされた長さ信号２１５の単一の設定されたビットは、イネーブル信号として、加算器２２０1〜２２０40の出力のうちの１つの、和選択器２２２からの伝送をイネーブルする。
【００７７】
図２の実施形態では、イントラＤＣ係数が第１の長さデコーダ２１０において処理されているときに、組み合わされた長さデコーダ２１４は、ＤＣ係数の長さに等しい組み合わされた長さ２１５を出力する。その結果、第１および第２のＡＣ係数は、次のサイクルで処理される。よって、イントラＤＣ係数の長さを別個のサイクルで復号化することによって、第２の長さ復号化手段２１２をわずか１６個のデコーダ２１２ａ〜２１２ｐで実現することができる。
【００７８】
４０の出力信号２２１1〜２２１40のうちどれも和選択器２２２により選択されない状況は２つある。第１の状況は、再開信号を制御ロジック２１６に伝送することによりシステムが初期化される時、制御ロジック２１６がロード外部信号を和選択器２２２に発して、和選択器２２２に、外部から供給されたｍｕｘ位置２４０を出力させる状況である。制御ロジック２１６については、図３を参照して後でもっと詳しく説明する。
【００７９】
加算器出力信号２２１1〜２２１40のうちどれも用いられないもう１つの状況は、ブロックの処理が完了した時に、ブロックの終わりが検出される状況である。制御ロジック２１６は、バイパス信号を和選択器２２２に発する。和選択器２２２は、バイパス入力端子２２２ａにおいて検出されて出力値２２３として用いられる、現在のｍｕｘ位置２３７を選択する。よって、シフタ／マルチプレクサ２０６は、それ以上のインデックスを与えなくても、現在の状態にとどまる。
【００８０】
図３は、ＶＬＤ長さ復号化制御ロジック２１６のためのロジックの一例を示すブロック図である。制御ロジックは、外部から指定されたいくつかのパラメータを受け取る。このようなパラメータとしては、例えば、ＢＰ＿ＯＶＲＤ（ＨＯＬＤ）、ＲＥＳＴＡＲＴ、ＴＥＳＴ＿ＭＯＤＥ、ＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡ、ＬＵＭＡ／ＣＨＲＯＭＡおよびＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴなどがある。復号化機能２０８は、制御ロジック２１６に、ブロックの終わりまたはエラー状態のいずれが検出されたかの表示を与える。制御ロジック２１６は、デコーダ２１０および２１２ａ〜２１２ｐに対する以下のパラメータを識別する。（１）係数はＤＣ係数であるか、あるいはその他のタイプであるか、および（２）第１および第２の符号化された値に対して、係数テーブルＢ１２〜Ｂ１５のいずれが用いられているか、の２つである。
【００８１】
ＯＲゲート３１４は、もしＢＰ＿ＯＶＲＤ（ＨＯＬＤ）信号が論理ハイの状態に設定されるか、ブロックの終わりが検出される（ＥＮＤ＿ＯＦ＿ＢＬＯＣＫが論理ハイの状態にある）か、誤りが検出される（ＥＲＲ＿ＦＬＡＧが論理ハイの状態にある）か、または、ＢＹＰＡＳＳフラグが以前に論理ハイの状態に設定されていたのなら、ＢＹＰＡＳＳフラグを論理ハイの状態に設定する。いったんＢＹＰＡＳＳフラグが論理ハイの状態に設定されると、このフラグは、ＲＥＳＴＡＲＴ信号が論理ハイの状態に設定されるまで、その状態にとどまる。ＢＹＰＡＳＳフラグは和選択器２２２に伝送され（図２に示す）、ＲＥＳＥＴ信号が論理ハイの状態に設定されるまで、シフタ／マルチプレクサ２０６を同じ状態にとどまらせる。
【００８２】
ＥＮＤ＿ＯＦ＿ＢＬＯＣＫ信号が論理ハイの状態であるとき、ＯＲゲート３１６は、フリップフロップ３１８（出力ＥＯＢ＿ＦＬＡＧ）を論理ハイの状態に設定し、フリップフロップ３１８は、ＲＥＳＴＡＲＴ信号が論理ハイの状態に設定されるまでその状態にとどまる。ＥＮＤ＿ＯＦ＿ＢＬＯＣＫ信号は、出力コントローラ１４０（図１に示す）に与えられる。
【００８３】
ＯＲゲート３２４は、ＥＲＲＯＲ信号が論理ハイの状態にあるとき、フリップフロップ３２６のＤ端子を論理ハイに設定する（ことにより、ＥＲＲ＿ＦＬＡＧ信号を論理ハイに設定する）と、ＥＮＤ＿ＯＦ＿ＢＬＯＣＫ信号もフリップフロップ３１２のＢＹＰＡＳＳ出力も論理ハイの状態ではなくなる。ＥＲＲ＿ＦＬＡＧ信号は、出力コントローラ１４０（図１）に与えられる。いったんＥＲＲ＿ＦＬＡＧが論理ハイの状態に設定されると、このフラグは、フリップフロップ３２６がＲＥＳＴＡＲＴ信号によりリセットされるまで、論理ハイのままとなる。
【００８４】
ＯＲゲート３２８は、ＴＥＳＴ＿ＭＯＤＥ信号またはＲＥＳＴＡＲＴ信号が論理ハイの状態にあるときには、論理ハイの状態であるＬＯＡＤ＿ＥＸＴＥＲＮＡＬ信号を出力する。ＬＯＡＤ＿ＥＸＴＥＲＮＡＬ信号は、和選択器２２２（図２に示されている）に与えられる。ＬＯＡＤ＿ＥＸＴＥＲＮＡＬが論理ハイの状態にあるとき、外部から指定されたｍｕｘ位置がシフタ／マルチプレクサ２０６（図２に示されている）により用いられる。
【００８５】
ＲＥＳＴＡＲＴが論理ハイの状態にあるとき、フリップフロップ３３０のＤ端子は論理ハイの状態に設定される（これにより、ＣＯＥＦＦ＿１信号を論理ハイの状態に設定する）。よって、ＣＯＥＦＦ＿１信号は、（ＤＣ係数が処理されている）ブロック処理動作のスタート時に論理ハイの状態に設定される。ＣＯＥＦＦ＿１信号は、長さデコーダ機能２１０に伝送され（ることにより、ＤＣ係数の長さを決定するデコーダ２１０を構成し）、ＶＬＤイントラＤＣ係数復号化機能１３０にも与えられる。
【００８６】
ＡＮＤゲート３２２は、ＲＥＳＴＡＲＴおよびＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡ信号が論理ハイの状態にあり、ＬＵＭＡ／ＣＨＲＯＭＡ信号が論理ローの状態にあるとき、フリップフロップ３３４のＤ端子を論理ハイの状態に設定することにより、Ｂ１２出力信号を論理ハイの状態に設定する。このことは、イントラ符号化された輝度ブロックの最初の（ＤＣ）係数を処理する際に起こる。Ｂ１２信号は、長さデコーダ２１０（図２）に伝送される。
【００８７】
ＡＮＤゲート３３６は、ＲＥＳＴＡＲＴ、ＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡおよびＬＵＭＡ／ＣＨＲＯＭＡ信号がすべて論理ハイの状態にあるとき、フリップフロップ３３８のＤ端子を論理ハイの状態に設定し、Ｂ１３フラグを論理ハイの状態に設定する。このことは、イントラ符号化されたクロミナンスブロックの最初の（ＤＣ）係数を処理するときに起こる。Ｂ１３信号は、長さデコーダ２１０に伝送される（図２）。
【００８８】
図３において参照番号３４０〜３５４の付けられた論理要素は、ＭＰＥＧ規格のテーブル７−３に詳述されている「ＤＣＴ係数ＶＬＣテーブルの選択」を実現する。ＯＲゲート３４２は、ＭＡＣＲＯ＿ＢＬＯＣＫ＿ＩＮＴＲＡフラグが論理ローの状態にあるとき、またはＭＡＣＲＯ＿ＢＬＯＣＫ＿ＩＮＴＲＡフラグが論理ハイであり、ＲＥＳＴＡＲＴおよびＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴが共に論理ローの状態であるときには、フリップフロップ３４４のＤ端子を論理ハイの状態に設定することによって、Ｂ１４フラグを論理ハイの状態に設定する。これにより、非イントラ符号化されたブロックの係数、および、ＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴ値がゼロとなる、ＤＣ係数以外のイントラ符号化されたブロックの係数については、デコーダ２１２ａ〜２１２ｐがＢ１４テーブルを用いるように、Ｂ１４フラグを設定する。
【００８９】
ＡＮＤゲート３４６は、ＭＡＣＲＯ＿ＢＬＯＣＫ＿ＩＮＴＲＡおよびＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴフラグが論理ハイの状態であり、ＲＥＳＡＲＴが論理ローの状態であるときには、フリップフロップ３４８のＤ端子を論理ハイの状態に設定することにより、Ｂ１５フラグを論理ハイの状態に設定する。これにより、ＩＮＴＲＡ＿ＶＬＣ＿ＦＯＲＭＡＴの値が１になるイントラ符号化されたブロックの（ＤＣ係数以外の）係数については、デコーダ２１２ａ〜２１２ｐがＢ１５テーブルを用いるように、Ｂ１５フラグを設定する。
【００９０】
ＯＲゲート３５２は、ＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡフラグが論理ローに設定される時、または、ＭＡＣＲＯＢＬＯＣＫ＿ＩＮＴＲＡが論理ハイに設定され、かつＲＥＳＴＡＲＴ信号が論理ローに設定される時には、フリップフロップ３５４のＤ端子を論理ハイの状態に設定することにより、Ｂ１４＿Ｂ１５フラグを論理ハイの状態に設定する。よって、デコーダ２１２ａ〜２１２ｐが（非イントラ符号化されたマクロブロックについて、さらにはイントラ符号化されたマクロブロックのＡＣ係数について）Ｂ１４テーブルまたはＢ１５テーブルを用いるべきときにはいつも、Ｂ１４＿Ｂ１５フラグは、論理ハイの状態に設定される。
【００９１】
図４は、図１に示されているＶＬＤラン／レベルデコーダ１２０の一例を示すブロック図である。ＤＣ係数には別個の機能（ＶＬＤイントラＤＣ係数デコーダ１３０）が用いられるので、イントラ符号化されたブロックの場合には、ブロック１２０はＤＣ係数を処理しない。この回路は、長さ２〜１１、１３〜１７および２４をもつ符号を処理しさえすればよい。ＶＬＤラン／レベル復号化機能１２０内でそれぞれ第１の符号化されたデータ値および第２の符号化されたデータ値に対応する各ラン／レベル復号化回路は、以下に説明する部分的な相違点を別にすれば、非常によく似ている。よって、Ｌ１信号（図１に示されている）の１６のビット（ビット０〜９、１１〜１５および１９）のみが用いられる。これら１６のビットは、図４の左上隅にＬ１（１５：０）として示されている。
【００９２】
符号１／データ２選択器４１０は、第１の符号の長さＬ１を処理する。もし長さＬ１が２４ビットなら（すなわち、もし１６ビット信号の最後のビットがセットされれば）、第１の値はエスケープ符号化される。１６ビットＬ１信号の最後のビットは、ＥＳＣ＿１信号として出力される。エスケープ符号化された値については、最初の６ビットがエスケープ符号を示し、次の６ビットがラン値を示し、最後の１２ビットがレベル値を示す。よって長さが２４ビットであるとき、ＥＳＣ＿１フラグは論理ハイの値に設定される。ＤＡＴＡ＿ＩＮ信号のビットＮｏ．６〜１１（第７〜第１２のビット）は、ＲＵＮ１＿ＥＳＣ値として伝送される。この値は、ＥＳＣ＿１フラグがセットされるとき、出力ｍｕｘ１５０（図１）により出力される。ＤＡＴＡ＿ＩＮ信号のビットＮｏ．１２〜２３（第１３〜第２４のビット）は、ＬＥＶＥＬ＿１＿ＥＳＣ値として伝送される。この値は、ＥＳＣ＿１フラグがセットされる時に出力ｍｕｘ１５０（図１）により出力される。
【００９３】
その他すべてのＶＬＣ（非エスケープ符号化された値）については、ＶＬＣの長さは既に（最高で）１２のＬＳＢにより識別されているので、図４でＣｏｄｅ＿１（４：０）およびＣｏｄｅ＿２（４：０）により示されている最高５ビットを用いてランおよびレベルを決定することが可能である。例えば、テーブルＢ−１４では、１７ビット長であるＶＬＣは１６個ある。これらのＶＬＣの１６個すべてが同じ１２のＬＳＢをもっており、次の５ビットは、１７ビットのＶＬＣのそれぞれについてランおよびレベル値の互いに異なる組み合わせを識別する。
【００９４】
Ｃｏｄｅ＿１（４：０）の５ビットは、ランデコーダ４２０およびレベルデコーダ４３０に伝送される。デコーダ４２０および４３０は、テーブルＢ−１４およびＢ−１５からランおよびレベルの値を格納するＬＵＴを含んでいる。Ｂ１４信号が論理ハイの値をもっているときは、テーブルＢ１４を用いることができる。Ｂ１５信号が論理ハイの値をもっているときは、（図２および図３を参照して既に述べたように）テーブルＢ１５を用いることができる。Ｃｏｄｅ＿１（４：０）のビットと、Ｌ１と、Ｂ１４およびＢ１５信号とが与えられたとき、ランデコーダ４２０およびレベルデコーダ４３０は、それぞれランおよびレベルを決定する。
【００９５】
符号１／データ２選択器４１０はまた、第２の符号化されたデータ値Ｄａｔａ＿２を（Ｌ１の値に基づいて）パーシングし、
（１）第２の符号化されたデータ値Ｄａｔａ＿２の最初の１７ビット［Ｄａｔａ＿２（１６：０）］を符号２選択器４５０へと伝送し、
（２）Ｄａｔａ＿２の第７〜第１２のビット［Ｄａｔａ＿２（１１：６）］をレジスタ４８０へと、信号ＲＵＮ＿２＿ＥＳＣとして伝送し、かつ
（３）Ｄａｔａ＿２の第１３〜第２４のビット［Ｄａｔａ＿２（２３：１２）］をレジスタ４８０へと、信号ＬＥＶＥＬ＿２＿ＥＳＣとして伝送する。
【００９６】
ＶＬＤラン／レベルデコーダ１２０は、長さ２デコーダ４４０を備えている。このデコーダ４４０は、Ｌ１（１５：０）信号とＬ３（３７：０）信号との組み合わされた長さを処理することによって、第２の符号化されたデータ値の長さを決定する。Ｌ１およびＬ３は、それぞれ、値「１」に対して単一のビットが設定されたマルチビット信号のかたちで与えられるので、長さ２デコーダ４４０は、第２の符号化されたデータ値の長さを効率よく識別し、その長さを、単一のビットのみが値「１」に設定された１６ビット値のかたちで出力するのに、除算器ではなく論理ゲーティングを用いることができる。符号１／データ２選択器４１０と同様に、第１６のビットＬ２（１５）は、エスケープ符号化された２４ビットの符号化されたデータ値について論理ローの状態に設定される。長さ２デコーダ４４０を構成することは、当業者には容易であろう。
【００９７】
符号２選択器は、選択器４１０と同様にＬ２信号を処理し、非エスケープ符号化された値についてランおよびレベルを識別するのに必要とされる５ビットのＤａｔａ＿２（４：０）をパーシングする。符号２選択器は、符号１選択器４１０がこの情報をデコーダ４２０および４３０へと伝送するのと同様に、符号２（４：０）の値をランデコーダ４６０およびレベルデコーダ４７０へと伝送する。ランデコーダ４６０およびレベルデコーダ４７０は、それぞれランデコーダ４２０およびレベルデコーダ４３０と同じであるので、その説明はここでは省略する。
【００９８】
図５は、長さ復号化機能５１０の別の実施形態を示すブロック図である。図５では、図２に示されている要素および信号と同様の要素および信号には、同一の参照番号を付している。そのような要素および信号については、ここでは説明を省略する。
【００９９】
長さ復号化機能５１０は、第１のＡＣ係数が第２の長さ復号化手段５１２において復号化されているのと同時に、イントラＤＣ係数の長さを長さ１デコーダ５１０において復号化することができる。この能力を実現するために、デコーダ５１２ｑ〜５１２ｔがさらに設けられる。その結果、第２の長さ復号化手段５１２は、イントラＤＣ係数の可能な長さ（２〜４、６〜２０）あるいはＡＣ係数の可能な長さ（２〜１１、１３〜１７、２４）のそれぞれに対応する長さデコーダを備えている。すなわち、第１の値がＤＣ係数を表していようが、ＡＣ係数を表していようが、第１の符号化された値のすべての可能な長さ（２〜２０、２４）に対応する２０個のデコーダ５１２ａ〜５１２ｔがある。
【０１００】
この構成では、組み合わされた長さＬ３は、組み合わされた長さ２〜４４および４８に対応する４４種の値をとることができる。よって、４４種の可能な組み合わされた長さに対応する４４個の加算器５２０1〜５２０44が（図２の４０個の加算器の代わりに）設けられる。よって、和選択器５２２は、４６個の値（４４種の可能な長さ、バイパス、および外部から与えられた位置）のうちの一つを選択しなければならない。
【０１０１】
以上の説明では、可変長デコーダがＤＣＴ係数長さデコーダである例を述べた。係数デコーダ１００（図１）に類似した回路構成（不図示）を、ＭＰＥＧ規格のパラグラフ６．１〜６．１３に規定されている高レベルシンタクスエレメントを復号化するのに用いることができる。係数デコーダ１００においてブロックの終わりに到達したとき、ＢＹＰＡＳＳフラグ（図３を参照して既に述べた）が論理ハイに設定され、制御は、次の符号の位置と共に、高レベルシンタクスデコーダへと転送される。よって、高レベル符号が復号化されるとき、ＲＥＳＴＡＲＴ信号が論理ハイの状態に設定され、次の２つのＤＣＴ係数を復号化する。
【０１０２】
また、以上の説明では、一例として、ＭＰＥＧ符号化されたビデオデータビットストリームを用いる実施形態について本発明を説明したが、本発明は、その他のタイプの可変長デコーダにおいても実施可能である。
【０１０３】
以上に本発明を、その実施形態例に言及しながら説明したが、本発明はこれに限定されるわけではない。逆に、添付の請求の範囲は、当業者が本発明の真の精神および範囲からはずれることなくなしうる、本発明のその他の変形および実施形態を含むものと解釈されるべきものである。
【図面の簡単な説明】
【０１０４】
【図１】可変長デコーダ係数デコーダの一例を示すブロック図である。
【図２】図１に示されている可変長デコーダのＶＬＤ長さ復号化ループを示すブロック図である。
【図３】図２に示されている制御ロジックを示すブロック図である。
【図４】図１に示されているラン／レベルデコーダを示すブロック図である。
【図５】図１に示されている可変長デコーダにおいて用いることができるＶＬＤ長さ復号化ループの別の例を示すブロック図である。
【符号の説明】
【０１０５】
１００  可変長デコーダ係数デコーダ
１１０  ＶＬＤ長さ復号化ループ
１１１  入力データ
１１２  サブセット
１２０  ＶＬＤラン／レベル復号化ブロック
１２１  ＲＵＮ＿１
１２２  ＬＥＶＥＬ＿１
１２３  ＲＵＮ＿１＿ＥＳＣ
１２４  ＬＥＶＥＬ＿１＿ＥＳＣ
１２５  ＲＵＮ＿２
１２６  ＬＥＶＥＬ＿２
１２７  ＲＵＮ＿２＿ＥＳＣ
１２８  ＬＥＶＥＬ＿２＿ＥＳＣ
１３０  ＶＬＤイントラＤＣ係数復号化ブロック
１４０  出力制御ブロック
１５０  出力マルチプレクサ
１５１  ＲＵＮ＿１
１５２  ＬＥＶＥＬ＿１
１５３  ＲＵＮ＿２
１５４  ＬＥＶＥＬ＿２
【図１】
2006042336.tif 000003
【図２】
2006042336.tif 000004
【図３】
2006042336.tif 000005
【図４】
2006042336.tif 000006
【図５】
2006042336.tif 000007