(57)【要約】【課題】本発明は、可変長復号処理を高速化することができる。【解決手段】本発明のエンコーダ１０は、画像データＢＬを複数のデータブロックである前半ブロックＤＢａ及び後半ブロックＤＢｂに分離する。エンコーダ１０は、前半ブロックＤＢａ及び後半ブロックＤＢｂを可変長符号して可変長符号列を生成する。さらにエンコーダ１０は、可変長符号部１３によって生成された２つの可変長符号列である前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを組み合わせることにより始端及び終端から並列して可変長復号される符号ブロックとしての符号長固定ブロックＶＬｘを生成する。このときエンコーダ１０は、符号長固定ブロックＶＬｘを連ねることにより、符号長固定ブロックＶＬｘの境界がわかるようにビットストリームＢＳｗを生成するようにした。【選択図】図９
2010154225.tif 000002
【特許請求の範囲】
【請求項１】
画像データを複数のデータブロックに分離する分離部と、
上記分離部によって分離された上記データブロックを可変長符号化して可変長符号列を生成する可変長符号部と、
上記可変長符号部によって生成された２つの上記可変長符号列を組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックを生成する符号ブロック生成部と、
上記符号ブロックの境界がわかるようにビットストリームを生成するビットストリーム生成部と
を有するエンコーダ。
【請求項２】
上記符号ブロック生成部は、
上記符号ブロックの符号長を固定長にし、
上記ビットストリーム生成部は、
上記符号ブロックを連ねることにより、当該符号ブロックの境界がわかるよう上記ビットストリームを生成する
請求項１に記載のエンコーダ。
【請求項３】
上記ビットストリーム生成部は、
上記２つの可変長符号列の間に緩衝データを挟むことにより符号長を固定して上記符号ブロックを生成する
請求項２に記載のエンコーダ。
【請求項４】
上記可変長符号部は、
上記２つの可変長符号列の符号長の合計が上記固定長以下になるように当該２つの可変長符号列を生成する
請求項３に記載のエンコーダ。
【請求項５】
上記ビットストリーム生成部は、
上記２つの可変長符号列のうち、前半に配列される上記可変長符号列を始端から順方向に並べると共に、後半に配列される上記可変長符号を終端から逆方向に並べることにより、上記符号ブロックを生成する
請求項３に記載のエンコーダ。
【請求項６】
上記符号ブロック生成部は、
符号長が可変でなる上記符号ブロックを生成し、
上記ビットストリーム生成部は、
上記符号ブロック間に境界情報を挟むことにより、当該符号ブロックの境界がわかるよう上記ビットストリームを生成する
請求項１に記載のエンコーダ。
【請求項７】
上記ビットストリーム生成部は、
複数の上記符号ブロックに基づくデータを入れ子状に配列する
請求項２に記載のエンコーダ。
【請求項８】
上記ビットストリーム生成部は、
上記複数の符号ブロックに基づくデータを１ビットずつ入れ子状に配列する
請求項１に記載のエンコーダ。
【請求項９】
可変長符号でなる符号ブロックを複数有し、当該符号ブロックの境界がわかるように生成されたビットストリームを受け取る受取部と、
上記符号ブロックの境界に基づいて当該符号ブロックの始端及び終端を特定する特定部と、
上記受取部によって受け取られたビットストリームを上記特定手段によって特定された上記符号ブロックの始端及び終端から並列して可変長復号化する並列デコード部と
を有するデコーダ。
【請求項１０】
上記並列デコード部は、
複数の上記符号ブロックを並列して可変長復号化する
請求項９に記載のデコーダ。
【請求項１１】
上記符号ブロックは、
始端から順方向に配列された可変長符号列と、終端から逆方向に配列された可変長符号列とからなり、
上記並列デコード部は、
同一の復号テーブルを用いて２つの上記可変長符号列を可変長復号化する
請求項９に記載のデコーダ。
【請求項１２】
上記ビットストリームは、
複数の上記符号ブロックに基づくデータが入れ子状に配列されてなり、
上記並列デコード部は、
上記ビットストリームから上記符号ブロックごとのデータを抽出することにより、複数の上記符号ブロックを並列して可変長復号化する
請求項１１に記載のデコーダ。
【請求項１３】
画像データを複数のデータブロックに分離する分離ステップと、
上記データブロックを可変長符号化して可変長符号列を生成する可変長符号ステップと、
上記可変長符号部によって生成された２つの上記可変長符号列を組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックを生成し、当該符号ブロックの境界がわかるようにビットストリームを生成するビットストリーム生成ステップと
を有する符号方法。
【請求項１４】
可変長符号でなる符号ブロックを複数有し、当該符号ブロックの境界がわかるように生成されたビットストリームを受け取る受取ステップと、
上記符号ブロックの境界に基づいて当該符号ブロックの始端及び終端を特定する特定ステップと、
上記受取部によって受け取られたビットストリームを上記特定手段によって特定された始端及び終端から並列して可変長復号化する並列デコードステップと
を有する復号方法。
【請求項１５】
コンピュータに対して、
画像データを複数のデータブロックに分離する分離ステップと、
上記データブロックを可変長符号化して可変長符号列を生成する可変長符号ステップと、
上記可変長符号部によって生成された２つの上記可変長符号列を組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックを生成し、当該符号ブロックの境界がわかるようにビットストリームを生成するビットストリーム生成ステップと
を実行させる符号プログラムが記録された記録媒体。
【請求項１６】
コンピュータに対して、
可変長符号でなる符号ブロックを複数有し、当該符号ブロックの境界がわかるように生成されたビットストリームを受け取る受取ステップと、
上記符号ブロックの境界に基づいて当該符号ブロックの始端及び終端を特定する特定ステップと、
上記受取部によって受け取られたビットストリームを上記特定手段によって特定された始端及び終端から並列して可変長復号化する並列デコードステップと
を実行させる復号プログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データを可変長符号化するエンコーダ、符号方法及び符号プログラムが記録された記録媒体、並びに可変長符号データを可変長復号化するデコーダ、復号方法及び復号プログラムが記録された記録媒体に関し、各種符号方式で使用されるデコーダ及びエンコーダに適用して好適なものである。
【背景技術】
【０００２】
従来、画像データをエンコーダによって符号して記録又は配信し、画像を表示する際にデコーダによって復号することが一般的に広く行われている。近年、画像の高精細化に伴って画像データの情報量が増大しており、符号された画像データ（以下、これをビットストリームと呼ぶ）を高速で復号することが要求されている。
【０００３】
このためビットストリームをスライスごとに分離し、並列に配置された複数のデコーダによって複数のスライスを同時に復号する技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００６−３１９９４３公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
図１に、可変長符号化された画像データ（以下、これを可変長符号列と呼ぶ）の構成を示している。可変長符号列は、可変長符号処理において、固定長でなる画像データから出現頻度の差異に応じて割り当てられた長さの相違する可変長符号が割り当てられることにより生成される。この結果可変長符号列は、全体として画像データよりもその情報量を低減させることができる。
【０００５】
そして図２に示すように、画像データとして入力されるデータブロックＤＢ１、ＤＢ２・・・が順次可変長符号化されることにより、可変長符号列ＶＬ１、ＶＬ２・・・で構成されるビットストリームが生成される。
【０００６】
図３（Ａ）に示すように、この可変長符号列を復号する可変長復号処理の際には、ビットストリームの先頭から最大符号長以上でなるビットが読出される。以下、読出されたビットを復号対象ビットと呼ぶ。そして予め記憶されているＶＬＤ（Variable Length Decoding）テーブルと最大符号長以上でなる復号対象ビットとが照会され、復号対象ビットと合致した固定長符号が復号データとして選択される。
【０００７】
図３（Ｂ）に示すように、可変長符号列のうち、復号に使用されたビットの次のビットからを復号対象ビットとし、当該復号対象ビットが同様に可変長復号化され、復号データが生成される。そして復号データが結合されることにより、画像データが生成されるようになされている。
【０００８】
ところで上述したデコーダと同様に、可変長符号列を復号する可変長復号処理の際にも、複数の可変長復号部を並列に設けて同時に復号データを生成することにより、当該可変長復号処理を高速化し得ると考えられる。
【０００９】
しかしながら図１に示したように、可変長符号は可変長でなり、各可変長符号が何ビットで表されているかを知ることができない。
【００１０】
例えば図４に示すように、２つの可変長復号部（第１の可変長復号部１及び第２の可変長復号部２）を設けた場合について考える。第１の可変長復号部１は、ビットストリームの先頭から復号対象ビットを読出し、ＶＬＤテーブルを参照して固定長符号でなる復号データを生成する。このとき初めて、先頭の可変長符号に割り当てられていた符号の長さが判明し、次の可変長符号の先頭を認識し得ることになる。
【００１１】
すなわち第２の可変長復号部２は、次の可変長符号の先頭を認識することができず、第１の可変長復号部１と同時に復号データの生成を実行し得ない。
【００１２】
このように従来の可変長復号処理では、複数の可変長復号部を用いた並列処理を実行することができず、可変長復号処理を高速化することが困難であるという問題があった。
【００１３】
本発明は以上の点を考慮してなされたもので、可変長復号処理を高速化し得るエンコーダ、符号方法及び符号プログラムが記録された記録媒体、並びにデコーダ、復号方法及び復号プログラムが記録された記録媒体を提案しようとするものである。
【課題を解決するための手段】
【００１４】
かかる課題を解決するため本発明のエンコーダにおいては、画像データを複数のデータブロックに分離する分離部と、データブロックを可変長符号化して可変長符号列を生成する可変長符号部と、可変長符号部によって生成された２つの可変長符号列を組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックを生成し、当該符号ブロックの境界がわかるようにビットストリームを生成するビットストリーム生成部とを設けるようにした。
【００１５】
これによりエンコーダは、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定させることができ、可変長復号処理の際、当該２つの開始位置から並列して可変長復号処理を実行させることができる。
【００１６】
また本発明のデコーダにおいては、可変長符号でなる符号ブロックを複数有し、当該符号ブロックの境界がわかるように生成されたビットストリームを受け取る受取部と、符号ブロックの境界に基づいて当該符号ブロックの始端及び終端を特定する特定部と、受取部によって受け取られたビットストリームを特定手段によって特定された始端及び終端から並列して可変長復号化する並列デコード部とを設けるようにした。
【００１７】
これにより本発明のデコーダは、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定することができるため、当該２つの開始位置から並列して可変長復号処理を実行することができる。
【００１８】
また本発明の符号方法は、画像データを複数のデータブロックに分離する分離ステップと、データブロックを可変長符号化して可変長符号列を生成する可変長符号ステップと、可変長符号部によって生成された２つの可変長符号列を組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックを生成し、当該符号ブロックの境界がわかるようにビットストリームを生成するビットストリーム生成ステップとを設けるようにした。
【００１９】
これにより本発明の符号方法においては、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定させることができ、可変長復号処理の際、当該２つの開始位置から並列して可変長復号処理を実行させることができる。
【００２０】
また本発明の復号方法においては、可変長符号でなる符号ブロックを複数有し、当該符号ブロックの境界がわかるように生成されたビットストリームを受け取る受取ステップと、符号ブロックの境界に基づいて当該符号ブロックの始端及び終端を特定する特定ステップと、受取部によって受け取られたビットストリームを特定手段によって特定された始端及び終端から並列して可変長復号する並列デコードステップとを設けるようにした。
【００２１】
これにより本発明の復号方法は、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定することができるため、当該２つの開始位置から並列して可変長復号処理を実行することができる。
【００２２】
また本発明の記録媒体に記録された符号プログラムは、コンピュータに対して、画像データを複数のデータブロックに分離する分離ステップと、データブロックを可変長符号化して可変長符号列を生成する可変長符号ステップと、可変長符号部によって生成された２つの可変長符号列を組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックを生成し、当該符号ブロックの境界がわかるようにビットストリームを生成するビットストリーム生成ステップとを実行させるようにした。
【００２３】
これにより本発明の記録媒体に記録された符号プログラムは、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定させることができ、可変長復号処理の際、当該２つの開始位置から並列して可変長復号処理を実行させることができる。
【００２４】
また本発明の記録媒体に記録された復号プログラムは、コンピュータに対して、可変長符号でなる符号ブロックを複数有し、当該符号ブロックの境界がわかるように生成されたビットストリームを受け取る受取ステップと、符号ブロックの境界に基づいて当該符号ブロックの始端及び終端を特定する特定ステップと、受取部によって受け取られたビットストリームを特定手段によって特定された始端及び終端から並列して可変長復号化する並列デコードステップとを実行させるようにした。
【００２５】
これにより本発明の記録媒体に記録された復号プログラムは、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定することができるため、当該２つの開始位置から並列して可変長復号処理を実行することができる。
【発明の効果】
【００２６】
本発明によれば、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定させることができ、可変長復号処理の際、当該２つの開始位置から並列して可変長復号処理を実行させることができる。かくして本発明は、可変長復号処理を高速化し得るエンコーダ、符号方法、及び符号プログラムが記録された記録媒体を実現できる。
【００２７】
本発明によれば、ビットストリームにおける符号ブロックの境界によって可変長復号を始める２つの開始位置を特定することができ、当該２つの開始位置から並列して可変長復号処理を実行することができる。かくして本発明は、可変長復号処理を高速化し得るデコーダ、復号方法、及び復号プログラムが記録された記録媒体を実現できる。
【発明を実施するための最良の形態】
【００２８】
以下、図面について、本発明の実施の形態を詳述する。なお説明は以下の順序で行う。
１．第１の実施の形態（両端からの可変長復号による並列処理）
２．第２の実施の形態（複数データを交互に記憶することによる並列処理）
３．第３の実施の形態（第１及び第２の実施の形態の組み合わせ）
４．他の実施の形態
【００２９】
＜１．第１の実施の形態＞
［１−１．エンコーダの構成］
図５における１０は、全体としてエンコーダを示している。エンコーダ１０は、入力端子１１を介して画像データが供給されると、当該画像データに対してエンコード処理を実行することにより、可変長符号からなるビットストリームを生成し、出力端子１５を介して出力するようになされている。
【００３０】
具体的に入力端子１１は、入力された画像データを分離部１２に供給する。図６に示すように、画像データＢＬは、１フレームがＨピクセル×Ｖピクセルで構成されている。画像データＢＬは４：２：２方式でなり、６４ピクセル分の画素値を固定長符号でなる６４の輝度データ（Ｙ）と、固定長符号でなる各３２の色差データ（Ｃｂ）及び（Ｃｒ）によって表している。
【００３１】
画像データＢＬは、この６４ピクセル分のブロックを処理ブロックとし、１フレームの画素数に応じた数の処理ブロックによって１フレーム分の画像を表している。
【００３２】
分離部１２は、画像データＢＬが供給されると、図７に示すように、当該画像データＢＬを処理ブロックごとに分離すると共に、当該処理ブロックを輝度データ（Ｙ）と色差データ（Ｃｂ）及び（Ｃｒ）とに分離する。以下、この分離された輝度データ（Ｙ）を前半ブロックＤＢａと呼び、色差データ（Ｃｂ）及び（Ｃｒ）を後半ブロックＤＢｂと呼ぶ。
【００３３】
分離部１２は、前半ブロックＤＢａ及び後半ブロックＤＢｂを可変長符号部１３に供給する。
【００３４】
図８に示すように、可変長符号部１３（図５）は、前半データブロックＤＢａ及び後半ブロックＤＢｂをＶＬＣ（Variable Length Coding）テーブルを用いて可変長符号化することにより可変長符号でなる前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂをそれぞれ生成する。この結果、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂは、各６４の可変長符号（ａ０〜ａ６３、ｂ０〜ｂ６３）を有することになる。
【００３５】
なお可変長符号部１３は、固定長符号に対する量子化処理又は可変長符号における下位ビットプレーンの切り捨てによるポスト量子化処理を併用することにより、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを所定の符号量以下に抑制するようになされている。
【００３６】
そして可変長符号部１３は、当該前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂをビットストリーム生成部１４（図５）へ供給する。
【００３７】
図９（Ａ）及び（Ｂ）に示すように、ビットストリーム生成部１４は、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを結合する。このときビットストリーム生成部１４は、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂの間に緩衝データＤＤとしてダミーデータを挟むことにより、固定符号長でなる符号長固定ブロックＶＬｘを生成する。
【００３８】
なおビットストリーム生成部１４は、前半可変長符号列ＶＬａと後半可変長符号列ＶＬｂとを加算した符号長が符号長固定ブロックＶＬｘの固定符号長と同一になる場合には、緩衝データＤＤを挟まないようになされている。
【００３９】
このときビットストリーム生成部１４は、図９（Ｃ）及び（Ｄ）に示すように、後半可変長符号列ＶＬｂの先頭ビットが符号長固定ブロックＶＬｘの最後尾にくるよう後半可変長符号列ＶＬｂをミラー状に反転させる。例えば後半可変長符号列ＶＬｂが「０１１０００１００１１００・・・」であった場合には、「・・・００１１００１０００１１０」に並べ替える。
【００４０】
そしてビットストリーム生成部１４は、符号長固定ブロックＶＬｘを順次生成して順に結合することにより、ビットストリームＢＳｗを生成するようになされている。
【００４１】
なお上述した一連のエンコード処理は、ハードウェアにより実行させることもでき、またソフトウェアにより実行させることも可能である。エンコード処理をソフトウェアによって実現する場合、ＣＰＵ（Central Processing Unit）及びＲＡＭ（Random Access Memory）に仮想的にエンコーダ１０が形成される。そしてＲＯＭ（Read Only Memory）に格納されたエンコードプログラムをＲＡＭに展開することにより、エンコード処理が実行される。
【００４２】
このようにエンコーダ１０は、処理ブロックを２つのブロック（前半ブロックＤＢａ及び後半ブロックＤＢｂ）に分離してＶＬＣ処理を施し、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを生成する。そしてエンコーダ１０は、緩衝データＤＤを間に挟んで前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを結合し、符号長が固定でなる符号長固定ブロックＶＬｘを生成するようにした。
【００４３】
これによりエンコーダ１０は、符号長固定ブロックＶＬｘにおける先頭ビットと最後尾ビットとの間隔を常に一定にすることができる。
【００４４】
［１−２．デコーダの構成］
次に、ビットストリームＢＳｗを復号するデコーダ３０について説明する。図１０に示すように、デコーダ３０は、ビットストリームＢＳｗが供給されると、当該ビットストリームＢＳｗに対して可変長復号処理である並列デコード処理を実行し、画像データＢＬを生成するようになされている。
【００４５】
デコーダ３０は、入力端子３１を介してビットストリームＢＳｗが供給されると、並列デコード処理を開始し、当該ビットストリームＢＳｗから２つの復号処理部（第１の復号処理部３３及び第２の復号処理部３４）によって固定長符号でなる復号データを同時に生成する。そしてデコーダ３０は、出力端子３６を介して復号データからなる画像データＢＬを出力するようになされている。
【００４６】
ここで図１１（Ａ）に示すように、ビットストリームＢＳｗは、符号長が固定でなる符号長固定ブロックＶＬｘが連なって形成されている。このためデコーダ３０は、符号長固定ブロックＶＬｘの符号長から当該符号長固定ブロックＶＬｘの始端及び終端を認識することができ、ビットストリームＢＳｗにおける復号開始位置を算出することができる。
【００４７】
従ってデコーダ３０は、図１１（Ｂ）に示すように、符号長固定ブロックＶＬｘの始端を復号開始位置として特定し、当該始端に読出開始位置を示す開始ポインタＰ１を設定する。さらにデコーダ３０は、当該開始ポインタＰ１から後方向にデータを順次読み出すことにより、前半可変長符号列ＶＬａを読み出すことができる。
【００４８】
また図１１（Ｃ）に示すように、符号長固定ブロックＶＬｘは、その後半部分に後半ミラー可変長符号列ＶＬｍを含んでいる。この後半ミラー可変長符号列ＶＬｍは、後半可変長符号列ＶＬｂがミラー化されてなり、その終端が符号長固定ブロックＶＬｘの終端を形成している。
【００４９】
このためデコーダ３０は、符号長固定ブロックＶＬｘの終端を復号開始位置として特定し、当該終端に開始ポインタＰ２を設定する。さらにデコーダ３０は、当該開始ポインタから前方向にデータを順次読み出すことより、図１１（Ｄ）に示すように、後半ミラー可変長符号列ＶＬｍを後半可変長符号列ＶＬｂとして読み出すことができる。
【００５０】
そしてデコーダ３０は、復号に使用された分だけ開始ポインタを移動させることにより、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂから順次読み出される復号対象ビットを可変長復号化し、復号データを生成する。以下、復号対象ビットの読出及び可変長復号の一連の処理を復号データ生成処理と呼ぶ。
【００５１】
すなわち図１２に示すように、デコーダ３０は、第１の可変長復号部３３によって前半可変長符号列ＶＬａに対して復号データ生成処理を実行し、前半復号データＢＢａを生成する。またデコーダ３０は、第２の可変長復号部３４によって後半可変長符号列ＶＬｂに対して復号データ生成処理を実行し、後半復号データＢＢｂを生成する。
【００５２】
そして図１３に示すように、デコーダ３０は、画像データ生成部３６によって前半復号データＢＢａ及び後半復号データＢＢｂを結合すると共に、結合された復号ブロックを順次連結することにより、画像データＢＬを生成するようになされている。
【００５３】
具体的にデコーダ３０（図１０）は、入力端子３１を介して供給されるビットストリームＢＳｗをメモリ３２に供給する。この結果メモリ３２には、ビットストリームＢＳｗのデータが順次記憶される。
【００５４】
並列デコード部４０における読出制御部３５は、ビットストリームＢＳｗの先頭部分を１つめの符号長固定ブロックＶＬｘの先頭ビット（すなわち復号開始位置）として認識する。読み出し制御部３５は、第１の可変長復号部３３に対応する開始ポインタＰ１を設定し、当該符号長固定ブロックＶＬｘの先頭ビットから後方向（すなわち順方向に）読み出しを開始する。
【００５５】
すなわち読出制御部３５は、符号長固定ブロックＶＬｘの先頭ビットから可変長符号の最大符号量と同一ビット数だけデータ（すなわち復号対象ビット）を読み出し、第１の可変長復号部３３に供給させる。この結果第１の可変長復号部３３の図示しないバッファメモリには、復号対象ビットが記憶される。
【００５６】
第１の可変長復号部３３は、ＶＬＤ（Variable Length Decoding）テーブルを参照することにより、復号対象ビットから復号データを生成し、これを画像データ生成部３６に供給する。そして読出制御部３５は、復号データの生成に使用した分だけ開始ポインタＰ１を移動させ、次の復号対象ビットの読み出しを開始する。
【００５７】
そして読出制御部３５は、６４個の復号データを生成すると、現在処理中の前半可変長符号列ＶＬａの可変長復号を終了したと認識し、次の符号長固定ブロックＶＬｘの始端部分に開始ポインタＰ１を移動させる。すなわち読出制御部３５は、現在処理中の前半可変長符号列ＶＬａ（すなわち符号長固定ブロックＶＬｘ）の始端から符号長固定ブロックＶＬｘの固定符号長だけ後の位置に開始ポインタＰ１を移動させる。
【００５８】
これにより読出制御部３５は、次の符号長固定ブロックＶＬｘの復号開始位置である始端、すなわち前半可変長符号列ＶＬａの始端に開始ポインタＰ１を移動させることができ、次の前半可変長符号列ＶＬａに対する復号データ生成処理を開始することができる。
【００５９】
また開始ポインタＰ１を設定した１つめの符号長固定ブロックＶＬｘの先頭ビットから符号長固定ブロックＶＬｘの固定符号長だけ後に移動した位置が次の符号長固定ブロックＶＬｘの始端となる。
【００６０】
そこで読出制御部３５は、次の符号長固定ブロックＶＬｘの始端よりも１［ｂｉｔ］だけ前を現在処理中の符号長固定ブロックＶＬｘの終端（すなわち復号開始位置）と認識し、第２の可変長復号部３４に対応する開始ポインタＰ２を設定する。
【００６１】
すなわち読出制御部３５は、符号長固定ブロックＶＬｘの先頭ビットから固定符号長マイナス１［ｂｉｔ］の位置に開始ポインタＰ２を設定する。そして読出制御部３５は、当該符号長固定ブロックＶＬｘの最後尾ビットから、前方向に（すなわち順方向とは逆方向に）符号対象ビットの読み出しを開始する。
【００６２】
読出制御部３５は、符号長固定ブロックＶＬｘの最後尾ビットから可変長符号の最大符号量と同一ビット数だけデータ（すなわち復号対象ビット）を読み出し、第２の可変長復号部３４に供給させる。この結果第２の可変長復号部３４の図示しないバッファメモリには、復号対象ビットが記憶される。
【００６３】
第２の可変長復号部３４は、ＶＬＤテーブルを参照することにより、復号対象ビットから復号データを生成し、これを画像データ生成部３６に供給する。そして読出制御部３５は、復号データの生成に使用した分だけ開始ポインタＰ２を逆方向に移動させ、次の復号対象ビットの読み出しを開始する。
【００６４】
そして読出制御部３５は、６４個の復号データを生成すると、現在処理中の後半可変長符号列ＶＬｂの可変長復号を終了したと認識し、次の符号長固定ブロックＶＬｘの終端（すなわち復号開始位置）に開始ポインタＰ２を移動させる。すなわち読出制御部３５は、現在処理中の後半ミラー可変長符号列ＶＬｍ（すなわち符号長固定ブロックＶＬｘ）の終端から符号長固定ブロックＶＬｘの固定符号長だけ後の位置に開始ポインタＰ２を移動させる。
【００６５】
これにより読出制御部３５は、次の符号長固定ブロックＶＬｘの復号開始位置である終端、すなわち後半ミラー可変長符号列ＶＬｍの始端に開始ポインタを移動させることができ、次の後半可変長符号列ＶＬｂに対する復号データ生成処理を開始することができる。
【００６６】
そして画像データ生成部３６は、第１の可変長復号部３３から供給される６４個の復号データ（すなわち前半復号データＢＢａ）と第２の可変長復号部３４から供給される６４個の復号データ（すなわち後半復号データＢＢｂ）とを連ねて結合する。さらに画像データ生成部３６は、結合された復号ブロックを順次連結することにより、画像データＢＬを生成し得るようになされている。
【００６７】
なお上述した一連の並列デコード処理は、ハードウェアにより実行させることもでき、またソフトウェアにより実行させることも可能である。並列デコード処理をソフトウェアによって実現する場合、ＣＰＵ及びＲＡＭに仮想的にデコーダ３０が形成される。そしてＲＯＭに格納された可変長復号プログラムをＲＡＭに展開することにより、並列デコード処理が実行される。
【００６８】
このようにデコーダ３０は、ビットストリームＢＳｗにおける符号長固定ブロックＶＬｘの始端及び終端から同時に復号データ生成処理を実行する。これによりデコーダ３０は、２つの可変長復号部によって並列して復号データ生成処理を実行できるため、可変長復号処理を高速化し得るようになされている。  
【００６９】
［１−３．具体的な処理手順］
［１−３−１．エンコード処理手順］
次に、エンコードプログラムに従って実行されるエンコード処理手順ＲＴ１について、図１４のフローチャートを用いて説明する。
【００７０】
エンコーダ１０は、画像データＢＬが供給されると、エンコード処理手順ＲＴ１を開始し、ステップＳＰ１へ移る。
【００７１】
ステップＳＰ１において、エンコーダ１０は、画像データＢＬを前半ブロックＤＢａ及び後半ブロックＤＢｂに分離すると、次のステップＳＰ２へ移る。
【００７２】
ステップＳＰ２において、エンコーダ１０は、分離した単位（すなわち前半ブロックＤＢａ及び後半ブロックＤＢｂ）ごとに画像データＢＬを可変長符号化し、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを生成すると、次のステップＳＰ３へ移る。
【００７３】
ステップＳＰ３において、エンコーダ１０は、後半可変長符号列ＶＬｂに対してミラー処理を実行し後半ミラー可変長符号列ＶＬｍを生成すると、次のステップＳＰ４へ移る。
【００７４】
ステップＳＰ４において、エンコーダ１０は、前半可変長符号列ＶＬａ及び後半ミラー可変長符号列ＶＬｍの間に緩衝データＤＤを挟んで結合することにより、固定符号長でなる符号長固定ブロックＶＬｘを生成する。さらにエンコーダ３０は、新たに生成された符号長固定ブロックＶＬｘを既に生成されている符号長固定ブロックＶＬｘに結合することによりビットストリームＢＳｗを生成すると、終了ステップへ移ってエンコード処理手順ＲＴ１を終了する。
【００７５】
［１−３−２．並列デコード処理手順］
次に、並列デコードプログラムに従って実行される並列デコード処理手順ＲＴ２について、図１５に示すフローチャートを用いて説明する。
【００７６】
デコーダ３０は、ビットストリームＢＳｗが供給されると、並列デコード処理手順ＲＴ２を開始し、供給されるビットストリームＢＳｗをメモリ３２に順次記憶し、次のステップＳＰ１１へ移る。
【００７７】
ステップＳＰ１１において、デコーダ３０は、メモリ３２において処理対象となる符号長固定ブロックＶＬｘの始端及び終端を復号開始位置として設定する。
【００７８】
すなわちデコーダ３０は、符号長固定ブロックＶＬｘの始端を第１の可変長復号部３３に対する復号開始位置として決定し、読出開始位置を表す開始ポインタＰ１を設定する。またデコーダ３０は、符号長固定ブロックＶＬｘの終端を第２の可変長復号部３４に対する復号開始位置として決定し、開始ポインタＰ２を設定すると、次のステップＳＰ１３へ移る。
【００７９】
ステップＳＰ１３において、デコーダ３０は、開始ポインタＰ１から順方向へ、開始ポインタＰ２から逆方向へ向けてメモリ３２からデータを読み出すことにより、復号対象ビットを順次読み出すと、次のステップＳＰ１４へ移る。
【００８０】
ステップＳＰ１４において、デコーダ３０は、復号対象ビットからＶＬＤテーブルを参照して復号データを生成すると、次のステップＳＰ１５へ移る。
【００８１】
ステップＳＰ１５において、デコーダ３０は、全ての可変長復号部において、処理対象となる符号長固定ブロックＶＬｘに対する復号データの生成が終了したか否かについて判別する。
【００８２】
ここで否定結果が得られた場合、このことは未だ符号長固定ブロックＶＬｘに可変長復号化すべき可変長符号が存在することを表している。このときデコーダ３０は、ステップＳＰ１３へ戻り、ステップＳＰ１４において復号データの生成に使用した復号対象ビットの数だけ開始ポインタＰ１及びＰ２を移動した位置から復号対象ビットの読み出しを開始し、処理を継続する。
【００８３】
これに対してステップＳＰ１５において肯定結果が得られた場合、デコーダ３０は、前半復号データＢＢａと後半復号データＢＢｂとを結合して復号ブロックを生成する。さらにデコーダ３０は、新たに生成した復号ブロックを既に生成されている復号ブロックに対して結合することにより画像データＢＬを生成すると、終了ステップへ移って並列デコード処理を終了する。
【００８４】
［１−４．動作及び効果］
以上の構成において、エンコーダ１０は、画像データＢＬを複数のデータブロックである前半ブロックＤＢａ及び後半ブロックＤＢｂに分離する。エンコーダ１０は、前半ブロックＤＢａ及び後半ブロックＤＢｂを可変長符号化して可変長符号列を生成する。
【００８５】
さらにエンコーダ１０は、可変長符号部１３によって生成された２つの可変長符号列である前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂを組み合わせることにより始端及び終端から並列して可変長復号化される符号ブロックとしての符号長固定ブロックＶＬｘを生成する。このときエンコーダ１０は、符号長固定ブロックＶＬｘを連ねることにより、符号長固定ブロックＶＬｘの境界がわかるようにビットストリームＢＳｗを生成するようにした。
【００８６】
ここで一般的に可変長符号を並列して可変長復号処理をさせる場合、単純に復号開始位置を示す復号開始位置情報をビットストリーム内に含有させることが考えられる。単純に復号開始位置情報を含有させる場合、１つの復号開始位置に対して１つの復号開始位置情報を含有させる必要がある。
【００８７】
本発明のエンコーダ１０は、符号長固定ブロックＶＬｘの境界に基づいて符号長固定ブロックＶＬｘの始端及び終端から復号を開始させるため、符号長固定ブロックＶＬｘの境界という１つの復号開始位置情報に対して２つの復号開始位置を特定させることができる。この結果エンコーダ１０は、ビットストリームＢＳｘに含有させる復号開始位置情報の情報量を低減させることができ、当該復号開始位置情報に起因して生じる符号量の増大を抑制することができる。
【００８８】
またエンコーダ１０は、符号ブロックの符号長を固定長にすることにより、当該符号ブロックの境界がわかるようにした。
【００８９】
これによりエンコーダ１０は、デコーダに境界を表す情報を検出させなくても、符号長に基づいて単純に復号開始位置を特定させることができる。
【００９０】
さらにエンコーダ１０は、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂの間に緩衝データＤＤを挟むことにより符号長を固定して符号長固定ブロックＶＬｘを生成する。
【００９１】
これによりエンコーダ１０は、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂ自体の符号量を大きく調整しなくても符号長固定ブロックＶＬｘを固定符号長で生成することができ、処理負荷を低減することができる。
【００９２】
またエンコーダ１０は、前半に配列される前半可変長符号列ＶＬａを始端から順方向に並べると共に、後半に配列される後半可変長符号列ＶＬｂを終端から逆方向に並べることにより、符号長固定ブロックＶＬｘを生成する。
【００９３】
これによりエンコーダ１０は、デコーダに前半可変長符号列ＶＬａを始端から順方向に読み出させ、後半可変長符号列ＶＬｂを終端から逆方向に読み出させればよく、後半可変長符号列ＶＬｂの並べ替えをさせなくて済む。
【００９４】
またデコーダ３０は、可変長符号でなる符号長固定ブロックＶＬｘを複数有し、当該符号長固定ブロックＶＬｘの境界がわかるように生成されたビットストリームＢＳｘを受け取る。デコーダ３０は、符号長固定ブロックＶＬｘの境界に基づいて当該符号長固定ブロックＶＬｘの始端及び終端を特定する。そしてデコーダ３０は、ビットストリームＢＳｘを符号長固定ブロックＶＬｘの始端及び終端から並列して、可変長復号としての復号データ生成処理を実行する。
【００９５】
これによりデコーダ３０は、符号長固定ブロックＶＬｘの始端及び終端を復号開始位置として、並列して復号データ生成処理を実行できるため、ビットストリームＢＳｘに対する可変長復号処理を高速化することができる。
【００９６】
さらにデコーダ３０は、始端から順方向に配列された前半可変長符号列ＶＬａと、終端から逆方向に配列された後半可変長符号列ＶＬｂとからなる符号長固定ブロックＶＬｘを、同一の復号テーブル（すなわちＶＬＤテーブル）を用いて復号データ生成処理を実行する。
【００９７】
ここでデコーダ３０は、後半可変長符号列ＶＬｂを逆方向に読み出すことにより、正しい順序で後半可変長符号列ＶＬｂを読み出すことができる。このためデコーダ３０は、わざわざミラー化したＶＬＤテーブルを準備しなくても、前半可変長符号列ＶＬａと共通のＶＬＤテーブルを使用して後半可変長符号列ＶＬｂに対して復号データ生成処理を実行することができる。
【００９８】
以上の構成によれば、エンコーダ１０は、画像データＢＬを処理ブロック単位に分割し、可変長符号化することにより生成された２つの可変長符号列（前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂ）を組み合わせて１つの符号ブロックである符号長固定ブロックＶＬｘを生成する。そしてエンコーダ１０は、符号長固定ブロックＶＬｘの境界がわかるようにビットストリームＢＳｘを生成する。
【００９９】
これによりデコーダ３０は、符号長固定ブロックＶＬｘの境界から２つの復号開始位置（前半可変長符号列ＶＬａの始端及び後半可変長符号列ＶＬｂの終端）を特定でき、並列して復号データ生成処理を実行することができる。
【０１００】
かくして本発明は、可変長復号処理を高速化し得るエンコーダ、符号方法及び符号プログラムが記録された記録媒体、並びにデコーダ、復号方法及び復号プログラムが記録された記録媒体を実現できる。
【０１０１】
＜２．第２の実施の形態＞
図１６〜図２８は第２の実施の形態を示すもので、図５〜１５に示す第１の実施の形態に対応する部分を同一符号で示している。第２の実施の形態のエンコーダ５０では、ビットストリームＢＳｒの生成方法が第１の実施の形態と異なっている。
【０１０２】
［２−１．エンコーダの構成］
エンコーダ５０は、画像データＢＬが供給されると、当該画像データに対してエンコード処理を実行することにより、可変長符号からなるビットストリームＢＳｒを生成するようになされている。
【０１０３】
図１６に示すように、画像データＢＬは、４：２：２方式でなり、２５６ピクセル分の輝度データ（Ｙ）、色差データ（Ｃｂ）及び（Ｃｒ）を処理ブロック単位としている。輝度データは、輝度値が周波数帯域で分割されることにより、高域成分でなる輝度データ（Ｙａ）及び低域成分でなる輝度データ（Ｙｂ）に分割されている。
【０１０４】
図１７に示すように、エンコーダ５０の入力端子５１は、入力された画像データを分離部５２に供給する。分離部５２は、図１８に示すように、供給された処理ブロックごとの画像データＢＬをそれぞれ輝度データ（Ｙａ）及び（Ｙｂ）並びに色差データ（Ｃｂ）及び（Ｃｒ）に分離することにより、データブロックＤＢａ〜ＤＢｄを順次生成する。
【０１０５】
そして分離部５２（図１７）は、第１の可変長符号部６１、第２の可変長符号部６２、第３の可変長符号部６３及び第４の可変長符号部６４にデータブロックＤＢａ〜ＤＢｄをそれぞれ供給する。なお以下、これらをまとめて可変長符号部６１〜６４と呼ぶ。
【０１０６】
図１９に示すように、可変長符号部６１〜６４は、データブロックＤＢａ〜ＤＢｄに対してＶＬＣ処理を施し、可変長符号列ＶＬａ〜ＶＬｄをそれぞれ生成し、これらをビットストリーム生成部５４へ供給する。
【０１０７】
ビットストリーム生成部５４は、可変長符号列ＶＬａ〜ＶＬｂによる入れ子ブロックＶＬｙを生成し、当該入れ子ブロックＶＬｙを連ねることによりビットストリームＢＳｒを生成するようになされている。
【０１０８】
ここで図２０（Ａ）に示すように、可変長符号列ＶＬａは、１２８の可変長符号ａ０〜ａ１２７によって構成されている。可変長符号列ＶＬａが有する各１［ｂｉｔ］の符号に対して「ｋ〜０」の番号を附すると、可変長符号列ＶＬａを図２０（Ｂ）のように表すことができる。
【０１０９】
同様に可変長符号列ＶＬａが有する各１［ｂｉｔ］の符号に対して「ｌ〜０」、「ｍ〜０」、「ｎ〜０」の番号を附すると、可変長符号列ＶＬｂ〜ＶＬｄを図２０（Ｃ）〜（Ｅ）のように表すことができる。
【０１１０】
図２１（Ａ）〜（Ｅ）に示すように、ビットストリーム生成部５４は、先頭ビットから１［ｂｉｔ］ずつデータを抽出し、可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄの順に抽出したデータを連ねる。さらにビットストリーム生成部５４は、２番目のビットから１［ｂｉｔ］ずつデータを抽出し、可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄの順に抽出したデータを連ねる。そしてビットストリーム生成部５４は、同様にして可変長符号列ＶＬａ〜ＶＬｄにおける全ての符号の並べ替えを実行する。
【０１１１】
この結果入れ子ブロックＶＬｙでは、ａ［ｋ］、ｂ［ｌ］、ｃ［ｍ］、ｄ［ｎ］、ａ［ｋ−１］、ｂ［ｌ−１］、ｃ［ｍ−１］、ｄ［ｎ−１］・・・ａ［ｘ］、ｂ［ｙ］、ｃ［ｚ］、ｄ［ｖ］のように可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄにおける各データが入れ子状に並ぶことになる。なおｘ、ｙ、ｚ、ｖは、それぞれ変数を示している。また以下、繰返して出現する１組のビット群（例えばａ［ｋ］、ｂ［ｌ］、ｃ［ｍ］、ｄ［ｎ］を１組とする）を、繰返ビットと呼ぶ。
【０１１２】
ここで可変長符号列ＶＬａ〜ＶＬｄの符号長はそれぞれ異なっている。このため符号長の短い可変長符号列におけるデータが他の可変長符号列よりも先になくなってしまう。この場合図２１（Ｆ）に示すように、ビットストリーム生成部５４は、残りの可変長符号列のデータを互いに入れ子状にして並べ替えを継続する。
【０１１３】
すなわちビットストリーム生成部５４は、まず可変長符号列ＶＬｃの最後のデータｃ［０］を並べ終え、可変長符号列ＶＬｃにおける全てのデータの並べ替えが終了すると、残りの可変長符号列ＶＬａ、ＶＬｂ及びＶＬｄのデータのみを入れ子状にして並べ替えを継続する。この結果入れ子ブロックＶＬｙでは、ａ［ｘ］、ｂ［ｙ］、ｄ［ｖ］でなる繰返ビットが順次並ぶことになる。
【０１１４】
次いでビットストリーム生成部５４は、可変長符号列ＶＬｄの最後のデータｄ［０］を並べ終え、可変長符号列ＶＬｄにおける全てのデータの並べ替えが終了すると、残りの可変長符号列ＶＬａ及びＶＬｂのデータのみを交互にして並べ替えを継続する。この結果入れ子ブロックＶＬｙでは、ａ［ｘ］、ｂ［ｙ］でなる繰返ビットが順次並ぶことになる。
【０１１５】
さらにビットストリーム生成部５４は、可変長符号列ＶＬｂの最後のデータｂ［０］を並べ終え、可変長符号列ＶＬｂにおける全てのデータの並べ替えが終了すると、残りの可変長符号列ＶＬａのデータのみを連続して並べる。この結果入れ子ブロックＶＬｙでは、ａ［０］が出現するまでの間、ａ［ｘ］が連続して並ぶことになる。
【０１１６】
このようにエンコーダ５０は、可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄにおける各符号を１［ｂｉｔ］ずつ入れ子状に並べ替えることにより、入れ子ブロックＶＬｙを生成すると共に、当該入れ子ブロックＶＬｙが連続するビットストリームＢＳｒを生成する。
【０１１７】
これによりエンコーダ５０は、ビットストリームＢＳｒにおいて可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄのデータをそれぞれ所定の記録間隔で（すなわち４［ｂｉｔ］おきに）並べることができる。
【０１１８】
［２−２．デコーダの構成］
図２２に示すように、デコーダ８０は、ビットストリームＢＳｒが供給されると、当該ビットストリームＢＳｒに対して可変長復号処理である並列デコード処理を実行し、画像データＢＬを生成するようになされている。
【０１１９】
デコーダ８０の入力端子８１は、入れ子ブロックＶＬｙからなるビットストリームＢＳｒが供給されると、これをメモリ８２に供給する。メモリ８２は、読出制御部８３の制御に従い、供給される入れ子ブロックＶＬｙを順次記憶する。
【０１２０】
デコーダ８０は、４つの可変長復号部９１〜９４（すなわち第１の可変長復号部９１、第２の可変長復号部９２、第３の可変長復号部９３及び第４の可変長復号部９４）及び読出制御部８３からなる並列デコード部９０を有している。各可変長復号部９１〜９４は、読出制御部８３の制御に従い、可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄのデータをそれぞれ復号するようになされている。
【０１２１】
ここで上述したように、入れ子ブロックＶＬｙは、可変長符号列ＶＬａ、ＶＬｂ、ＶＬｃ及びＶＬｄのデータが入れ子状に記録されている。読出制御部８３は、入れ子ブロックＶＬｙが記録されているアドレスから、復号開始位置情報及び読出間隔情報を生成し、可変長復号部９１〜９４に対してそれぞれ供給する。なお復号開始位置情報は、各可変長復号部９１〜９４が各入れ子ブロックＶＬｙに対する可変長復号を開始すべきメモリ８２上のアドレスを表す情報である。また読出間隔情報は各可変長復号部９１〜９４がデータを読み出すべき間隔を表している。
【０１２２】
このとき読出制御部８３は、処理対象となる入れ子ブロックＶＬｙの先頭ビット、先頭から２番目のビット、先頭から３番目のビット、先頭から４番目のビット表す復号開始位置情報を可変長復号部９１〜９４にそれぞれ供給する。また読出制御部８３は、「４」を表す読出間隔情報を可変長復号部９１〜９４にそれぞれ供給する。
【０１２３】
図２３（Ａ）及び（Ｂ）に示すように、第１の可変長復号部９１は、復号開始位置情報に従ってメモリ８２に記憶されている入れ子ブロックＶＬｙの先頭ビットに読出開始位置を表す開始ポインタＰ１を設定し、当該開始ポインタＰ１から４［ｂｉｔ］おきにデータを読み出す。すなわち第１の可変長復号部９１は、可変長符号列ＶＬａに由来するデータのみを復号対象ビットとして読み出し、図示しないバッファメモリに一時記憶する。
【０１２４】
図２３（Ｃ）及び（Ｄ）に示すように、第２の可変長復号部９２は、復号開始位置情報に従ってメモリ８２に記憶されている入れ子ブロックＶＬｙの先頭ビットから２［ｂｉｔ］目に開始ポインタＰ２を設定し、当該開始ポインタＰ２から４［ｂｉｔ］おきにデータを読み出す。すなわち第２の可変長復号部９２は、可変長符号列ＶＬｂに由来するデータのみを復号対象ビットとして読み出し、図示しないバッファメモリに一時記憶する。
【０１２５】
図示しないが第３の可変長復号部９３は、復号開始位置情報に従ってメモリ８２に記憶されている入れ子ブロックＶＬｙの先頭ビットから３［ｂｉｔ］目に開始ポインタＰ３を設定し、当該開始ポインタＰ３から４［ｂｉｔ］おきにデータを読み出す。すなわち第３の可変長復号部９３は、可変長符号列ＶＬｃに由来するデータのみを復号対象ビットとして読み出し、図示しないバッファメモリに一時記憶する。
【０１２６】
図示しないが第４の可変長復号部９４は、復号開始位置情報に従って、メモリ８２に記憶されている入れ子ブロックＶＬｙの先頭ビットから４［ｂｉｔ］目に開始ポインタＰ４を設定し、当該開始ポインタＰ４から４［ｂｉｔ］おきにデータを読み出す。すなわちすなわち第４の可変長復号部９４は、可変長符号列ＶＬｄに由来するデータのみを復号対象ビットとして読み出し、図示しないバッファメモリに一時記憶する。
【０１２７】
次いで図２４（Ａ）に示すように、第１の可変長復号部９１は、ＶＬＤテーブルを用いて復号対象ビットを可変長復号化し復号データを生成する。第１の可変長復号部９１は、復号に使用されたデータのビット数（すなわち２［ｂｉｔ］）だけ開始ポインタＰ１を移動させ、当該開始ポインタＰ１から４［ｂｉｔ］おきに復号対象ビットとしてデータを読み出す。
【０１２８】
図２４（Ｂ）〜（Ｄ）に示すように、第２の可変長復号部９２、第３の可変長復号部９３及び第４の可変長復号部９４は、同様にして、ＶＬＤテーブルを用いて復号対象ビットを可変長復号化し復号データを生成する。
【０１２９】
第２の可変長復号部９２、第３の可変長復号部９３及び第４の可変長復号部９４は、同様にして復号に使用されたビット数（すなわち２［ｂｉｔ］、６［ｂｉｔ］、２［ｂｉｔ］）だけ開始ポインタＰ２〜Ｐ４を移動させ、当該各開始ポインタから４［ｂｉｔ］おきに復号対象ビットとしてデータを読み出す。
【０１３０】
そして可変長復号部９１〜９４は、以降は同様にして復号対象ビットを読出して復号データ生成処理を継続する。なお復号された復号データは、可変長復号部９１〜９４が有する図示しない復号データ用メモリに一時記憶される。
【０１３１】
ここで図２４（Ｅ）及び（Ｆ）に示すように、入れ子ブロックＶＬｙは、その終端部分において、各可変長符号列ＶＬａ〜ＶＬｄに対応するデータの記録間隔が変化している。
【０１３２】
すなわち入れ子ブロックＶＬｙにおいて、可変長符号列ＶＬｃに基づくデータが終了すると、残りの可変長符号列ＶＬａ、ＶＬｂ及びＶＬｄに基づくデータの記録間隔が「４」から「３」に変化する。
【０１３３】
また入れ子ブロックＶＬｙにおいて、可変長符号列ＶＬｄに基づくデータが終了すると、残りの可変長符号列ＶＬａ及びＶＬｂに基づくデータの記録間隔が「３」から「２」に変化する。
【０１３４】
また入れ子ブロックＶＬｙにおいて、可変長符号列ＶＬｄに基づくデータが終了すると、残りの可変長符号列ＶＬａに基づくデータの記録間隔が「２」から「１」に変化し、可変長符号列ＶＬａが連続的に記録された状態になる。
【０１３５】
従って各可変長復号部９１〜９４は、仮に読出間隔「４」のまま入れ子ブロックＶＬｙの終端部分まで復号対象ビットを読み出した場合には、各可変長符号列ＶＬａ〜ＶＬｄに基づいて復号データを生成することができなくなる。
【０１３６】
そこでデコーダ８０は、入れ子ブロックＶＬｙの終端部分における記録間隔の変化に応じてメモリ８２から復号対象ビットを読み出して復号データを生成する復号データ生成処理を再度行う終端処理を実行するようになされている。
【０１３７】
具体的に可変長復号部９１〜９４は、１２８回目の復号データの生成処理が終了すると、１２７回目までと同様に、復号データに使用した分だけ各開始ポインタを移動させる。
【０１３８】
このとき読出制御部８３は、各開始ポインタの位置を確認し、最も前方向のアドレスに存在する開始ポインタを選択する。読出制御部８３は、例えば可変長符号列ＶＬｃに対応する開始ポインタＰ３を選択すると、当該開始ポインタＰ３より読出間隔である４［ｂｉｔ］手前のアドレスが、復号データ生成処理を終了した可変長符号列ＶＬｃの最後のデータが記憶されていた位置（以下、これを先終了アドレスと呼ぶ）であると特定する。
【０１３９】
読出制御部８３は、先終了アドレス以降から、読出間隔を「３」に変更した上で、可変長符号列ＶＬａ、ＶＬｂ及びＶＬｄに対応する可変長復号部９１、９２及び９４による復号データ生成処理を再度実行させる。
【０１４０】
すなわち第１の可変長復号部９１は、可変長符号列ＶＬｃの先終了アドレスを有する繰返しビットを含む可変長符号から生成された復号データ（以下、これを先終了復号データと呼ぶ）以降に生成された復号データを無効にする。さらに第１の可変長復号部９１は、復号データ生成処理を当該先終了復号データから再度実行する。
【０１４１】
例えば第１の可変長復号部９１が１１８回目から復号データ生成処理を再実行し、第２の可変長復号部９２が１２４回目から復号データ生成処理を再実行し、第４の可変長復号部９４が１２７回目から復号データ生成処理を再実行する場合について考える。
【０１４２】
読出制御部８３は、可変長符号列ＶＬｃの先終了アドレスを表す先終了アドレス情報を可変長復号部９１、９２及び９４に供給する。可変長復号部９１、９２及び９４は、先終了復号データ及び以降に生成された復号データを無効にする。
【０１４３】
例えば第１の可変長復号部９１は、可変長符号列ＶＬｃの先終了アドレスが可変長符号列ＶＬａにおける１１８回目に生成された復号データ生成処理に基づく復号データに使用されていた場合には、１１８回目以降に生成された復号データを無効にする。同様に第２の可変長復号部９２は、１２４回目の復号データ生成処理以降に生成された復号データを無効にする。第４の可変長復号部９４は、１２７回目の復号データ生成処理以降に生成された復号データを無効にする。
【０１４４】
また可変長復号部９１、９２及び９４は、各復号データ生成処理の際に設定された開始ポインタの位置をそれぞれ記憶している。そして可変長復号部９１、９２及び９４は、先終了復号データが生成された復号データ生成処理の際に設定された位置に各開始ポインタを戻す。
【０１４５】
すなわち第１の可変長復号部９１は、開始ポインタＰ１を１１８回目の復号データ生成処理の位置に戻す。第２の可変長復号部９２は開始ポインタＰ２を１２４回目の復号データ生成処理の位置に戻す。第４の可変長復号部９４は、開始ポインタＰ４を１２７回目の復号データ生成処理の位置に戻す。
【０１４６】
そして読出制御部８３は、先終了アドレスまでは読出間隔を「４」に設定し、当該先終了アドレスを超えた次の繰返ビットから読出間隔を「３」に変更する旨を表す読出間隔情報を可変長復号部９１、９２及び９４に供給する。
【０１４７】
図２５（Ａ）に示すように、第１の可変長復号部９１は、可変長符号列ＶＬｃが存在する間は４［ｂｉｔ］おきにデータを読み出す一方、可変長符号列ＶＬｃが存在しなくなった以降は３［ｂｉｔ］おきにデータを読み出すことができる。
【０１４８】
この結果第１の可変長復号部９１は、可変長符号列ＶＬａのみを復号対象ビットとして読み出すことができ、可変長符号列ＶＬａに基づく復号データを生成することができる。
【０１４９】
同様にして可変長復号部９２及び９４は、読出制御部８３の制御により先終了復号データが生成された復号データ生成処理から、当該復号データ生成処理を再度実行する。
【０１５０】
ここで各可変長符号列の長さなどに応じて、先終了復号データが生成された復号データ生成処理の回数が相違する。このため再実行される復号データ生成処理の回数は、各可変長復号部９１、９２及び９４ごとに異なっている。
【０１５１】
第１の可変長復号部９１は、１１８回目から残り１１回の復号データ生成処理を実行する必要がある。第２の可変長復号部９２は１２４回目から残り５回、第４の可変長復号部９４は１２７回目から残り２回の復号データ生成処理を実行する必要がある。
【０１５２】
このため第４の可変長復号部９４は、２回の復号データ生成処理によって１２８回目の復号データ生成処理を終了する。このとき読出制御部８３は、可変長符号列ＶＬｄの最後のアドレスと他の可変長復号部９１及び９２に対応する開始ポインタＰ１及び開始ポインタＰ２とを比較する。
【０１５３】
例えば図２５（Ｃ）に示すように、可変長符号列ＶＬｄの最後のアドレス（ｄ［０］）よりも前方向に開始ポインタＰ２が存在する場合、可変長符号列ＶＬｂのデータが先に終了する可能性がある。
【０１５４】
そこで読出制御部８３は、他の可変長復号部９１及び９２に対応する開始ポインタＰ１及びＰ２の全てが可変長符号列ＶＬｄの最後のアドレスを超えるまで、可変長復号部９１及び９２に復号データ生成処理を継続させる。
【０１５５】
このとき図２５（Ｄ）に示すように、読出制御部８３は、開始ポインタＰ１及びＰ２の全てが可変長符号列ＶＬｄの最後のアドレスを超えた場合、可変長符号列ＶＬｄの最後のアドレスが先終了アドレスであると認識する。
【０１５６】
なお開始ポインタＰ１及びＰ２のいずれかが可変長符号列ＶＬｄの最後のアドレスを超えることなく１２８回目の復号データ生成処理を終了した場合、読出制御部８３は、前方向で終了した可変長符号列の最後のアドレスを先終了アドレスとして特定する。
【０１５７】
図２６（Ａ）及び（Ｂ）に示すように、このとき第１の可変長復号部９１は、読出制御部８３の制御により、先終了復号データが生成された復号データ生成処理の位置まで開始ポインタＰ１を移動させる。また可変長復号部９１は、先終了復号データ以降の復号データを無効にし、先終了アドレス後の繰返ビットに対する読出間隔を「２」に変更して復号データ生成処理を継続する。第２の可変長復号部９２についても同様である。
【０１５８】
図２６（Ｃ）及び（Ｄ）に示すように、読出制御部８３は、第２の可変長復号部９２による１２８回目の復号データ生成処理が終了すると、同様にして先終了アドレスを特定する。そして第１の可変長復号部９１は、読出制御部８３の制御により、先終了復号データが生成された復号データ生成処理の位置まで開始ポインタＰ１を移動させる。また可変長復号部９１は、先終了復号データ以降の復号データを無効にし、先終了アドレス後の繰返ビットに対する読出間隔を「１」に変更して復号データ生成処理を継続する。
【０１５９】
読出制御部８３は、第１の可変長復号部９１による１２８回目の復号データ生成処理が終了すると、読出間隔が「１」であることから可変長符号列ＶＬａの最後のビットが入れ子ブロックＶＬｙの最終ビットであると認識する。そして読出制御部８３は、当該入れ子ブロックＶＬｙに対する並列デコード処理を終了すると共に、次の入れ子ブロックＶＬｙに対する処理を開始するようになされている。
【０１６０】
このようにデコーダ８０は、複数の可変長符号列ＶＬが入れ子状に記録されてなるビットストリームＢＳｒを可変長符号列ＶＬａ〜ＶＬｄごとに読み出すようにした。これによりデコーダ８０は、複数の可変長符号列ＶＬａ〜ＶＬｄを同時に可変長復号化して複数の復号データを生成することができ、可変長復号処理を高速化することができる。
【０１６１】
［２−３．具体的な処理手順］
［２−３−１．エンコード処理手順］
次に、エンコードプログラムに従って実行されるエンコード処理手順ＲＴ３について、図２７のフローチャートを用いて説明する。
【０１６２】
エンコーダ５０は、画像データＢＬが供給されると、エンコード処理手順ＲＴ３を開始し、ステップＳＰ３１へ移る。
【０１６３】
ステップＳＰ３１において、エンコーダ５０は、画像データＢＬを処理ブロック単位であるデータブロックＤＢに分離すると、次のステップＳＰ３２へ移る。
【０１６４】
ステップＳＰ３２において、エンコーダ５０は、分離した単位（すなわちデータブロックＤＢ）ごとに画像データＢＬを可変長符号化し、複数の可変長符号列ＶＬａ〜ＶＬｄを生成すると、次のステップＳＰ３３へ移る。
【０１６５】
ステップＳＰ３３において、エンコーダ３０は、複数の可変長符号列ＶＬａ〜ＶＬｄを１［ｂｉｔ］ずつ入れ子状に配置することにより、入れ子ブロックＶＬｙを生成する。さらにエンコーダ３０は、新たに生成された入れ子ブロックＶＬｙを既に生成された入れ子ブロックＶＬｙに結合することによりビットストリームＢＳｒを生成すると、終了ステップへ移ってエンコード処理手順ＲＴ３を終了する。
【０１６６】
［２−３−２．並列デコード処理手順］
次に、並列デコードプログラムに従って実行される並列デコード処理手順ＲＴ４について、図２８に示すフローチャートを用いて説明する。
【０１６７】
デコーダ８０は、ビットストリームＢＳｒが供給されると、並列デコード処理手順ＲＴ４を開始し、供給されるビットストリームＢＳｒをメモリ８２に順次記憶し、次のステップＳＰ４１へ移る。
【０１６８】
ステップＳＰ４１において、デコーダ８０は、入れ子ブロックＶＬｙを構成する可変長符号列ＶＬの数を読出間隔に設定すると、次のステップＳＰ４２へ移る。
【０１６９】
ステップＳＰ４２において、デコーダ８０は、メモリ８２において処理対象となる入れ子ブロックＶＬｙの始端を基準にして復号開始位置をそれぞれ設定すると、次のステップＳＰ４３へ移る。
【０１７０】
すなわちデコーダ８０は、入れ子ブロックＶＬｙの先頭ビットを第１の可変長復号部９１に対する復号開始位置として決定し、開始ポインタＰ１を設定する。またデコーダ８０は、入れ子ブロックＶＬｙの２番目、３番目、４番目のビットをそれぞれ可変長復号部９２、９３及び９４に対する復号開始位置として決定し、開始ポインタＰ２、Ｐ３及びＰ４をそれぞれ設定する。
【０１７１】
ステップＳＰ４３において、デコーダ８０は、可変長復号部９１〜９４によって開始ポインタから読出間隔おきにデータを読み出し、これを復号対象ビットとすると、次のステップＳＰ４４へ移る。
【０１７２】
ステップＳＰ４４において、デコーダ８０は、可変長復号部９１〜９４によって復号対象ビットからＶＬＤテーブルを参照して復号データを生成すると、次のステップＳＰ４５へ移る。
【０１７３】
ステップＳＰ４５において、デコーダ８０は、いずれかの可変長復号部９１〜９４における復号データ生成処理が終了したか否かについて判別し、否定結果が得られると、次のステップＳＰ４２へ戻る。
【０１７４】
ステップＳＰ４２において、デコーダ８０は、ステップＳＰ４４における復号データの生成に使用された復号対象ビットの数だけ開始ポインタを移動させると、次のステップＳＰ４３へ移って処理を継続する。
【０１７５】
これに対してステップＳＰ４５において肯定結果が得られた場合、このことは入れ子ブロックＶＬｙにおける記録間隔が変化している可能性があることを表しており、このときデコーダ８０は、次のステップＳＰ４６へ移る。
【０１７６】
ステップＳＰ４６において、デコーダ８０は、読出間隔が「１」であるか否かについて判別する。ここで否定結果が得られた場合、このことは記録間隔が変化したことにより復号データが誤って生成されている可能性があることを表しており、このときデコーダ８０は、次のステップＳＰ５０へ移る。
【０１７７】
ステップＳＰ５０において、デコーダ８０は、最も前のアドレスで復号データ生成処理が終了する可変長符号列のアドレスを表す先終了アドレスを特定すると、次のステップＳＰ５１へ移る。
【０１７８】
ステップＳＰ５１において、デコーダ８０は、先終了アドレスを含む繰返しビットを有する可変長符号から生成された復号データである先終了復号データ及び以降の復号データを無効化すると、次のステップＳＰ５２へ移る。
【０１７９】
ステップＳＰ５２において、デコーダ８０は、先終了アドレスが属する繰返ビットの次のビットから読出間隔を「１」減少させて設定すると、次のステップＳＰ５３へ移る。
【０１８０】
ステップＳＰ５３において、デコーダ８０は、先終了復号データの復号処理が実行された位置に開始ポインタを戻すと、次のステップＳＰ４３へ戻り、残っている可変長符号列に対する復号データ生成処理を継続する。
【０１８１】
これに対してステップＳＰ４６において肯定結果が得られた場合、このことは全ての可変長復号部９１〜９４による復号データ生成処理が終了し、入れ子ブロックＶＬｙが生成されたことを表している。このときデコーダ８０は、新たに生成した入れ子ブロックＶＬｙを既に生成されている入れ子ブロックＶＬｙに連結して画像データＢＬを生成し、終了ステップへ移って並列デコード処理手順ＲＴ４を終了する。
【０１８２】
［２−４．動作及び効果］
以上の構成において、エンコーダ５０は、画像データＢＬを複数のデータブロックであるデータブロックＤＢａ〜ＤＢｄに分離し、データブロックＤＢａ〜ＤＢｄを可変長符号化して複数の可変長符号列ＶＬａ〜ＶＬｄを生成する。エンコーダ５０は、複数の可変長符号列ＶＬａ〜ＶＬｄに基づくデータが入れ子状に配列するビットストリームＢＳｒを生成する。
【０１８３】
これによりエンコーダ５０は、ビットストリームＢＳｒにおける１つの入れ子ブロックＶＬｙ内に並列して可変長符号列ＶＬａ〜ＶＬｄに基づくデータを配列することができる。
【０１８４】
またエンコーダ５０は、複数の可変長符号列ＶＬａ〜ＶＬｄのうち、符号長の短い可変長符号列に基づくデータの配列が終了すると、データの配列が終了していない可変長符号列に基づくデータを入れ子状に配列する。
【０１８５】
これによりエンコーダ５０は、可変長符号列ＶＬａ〜ＶＬｄに基づくデータのみからビットストリームＢＳｒを生成することができるため、ダミーデータなどの付加によって生じる符号量の増大を生じることがない。
【０１８６】
またエンコーダ５０は、複数の符号長固定ブロックＶＬｘに基づくデータを抽出数である１［ｂｉｔ］ずつ入れ子状に配列するようにした。
【０１８７】
ここで仮にエンコーダが抽出数を複数に設定した場合、符号長固定ブロックＶＬｘに基づくデータの配列が終了したときに、抽出数を維持するためのダミーデータを付加する必要が生じ、符号量が増大してしまう。
【０１８８】
エンコーダ５０は、抽出数を「１」に設定したことにより、かかるダミーデータの付加を生じさせず、符号量の増大を抑制することができる。
【０１８９】
またデコーダ８０は、可変長符号でなる複数の可変長符号列ＶＬａ〜ＶＬｄに基づくデータが入れ子状に配列されたビットストリームＢＳｒから、可変長符号列ＶＬａ〜ＶＬｄごとにデータを読み出す。デコーダ８０は、複数の可変長符号列ＶＬａ〜ＶＬｄを並列して可変長復号化して復号データを生成する。
【０１９０】
これによりデコーダ８０は、複数の可変長符号列ＶＬａ〜ＶＬｄを並列して可変長復号化することができるため、可変長復号処理を高速化することができる。
【０１９１】
またデコーダ８０は、ビットストリームＢＳｒに配列されているデータの可変長符号列ＶＬａ〜ＶＬｄごとの記録間隔と同一でなる読出間隔でデータを読み出すことにより、可変長符号列ＶＬａ〜ＶＬｄごとにデータを復号対象ビットとして読み出す。
【０１９２】
これによりデコーダ８０は、可変長符号列ＶＬａ〜ＶＬｄごとに復号データ生成処理を実行することができ、複数の可変長符号列ＶＬａ〜ＶＬｄを並列して可変長復号化することができる。
【０１９３】
さらにデコーダ８０は、複数の可変長符号列ＶＬａ〜ＶＬｄのうち、符号長の短い可変長符号列に基づくデータの配列が終了すると、データの配列が終了していない可変長符号列に基づくデータが入れ子状に配列されることにより可変長符号列ごとの記録間隔が変化しているビットストリームＢＳｒを可変長復号化する。
【０１９４】
デコーダ８０は、ビットストリームＢＳｒにおける符号長の短い可変長符号列に基づくデータの読み出しが終了すると、読み出しが終了した可変長符号列の最後の位置である先終了アドレスを特定する。デコーダ８０は、当該先終了アドレスに配列されている全ての可変長符号列に基づくデータが一通り配列された繰返ビットのうち、当該先終了アドレスが属する繰返ビット以降を用いて可変長復号化された可変長符号を再度読み出す。そしてデコーダ８０は、再度読み出された可変長符号を可変長復号化する。
【０１９５】
これによりデコーダ８０は、記録間隔が変化したことにより誤って可変長復号化された可能性のある可変長符号に対し、再度可変長復号化することができる。このためデコーダ８０は、複数の可変長符号列ＶＬａ〜ＶＬｄを誤って可変長復号化することなく、最後まで正確に可変長復号化することができる。
【０１９６】
以上の構成によれば、エンコーダ５０は、符号単位ごとに生成された可変長符号列ＶＬａ〜ＶＬｄのデータを抽出数である１［ｂｉｔ］ずつそれぞれ抽出して順次並べてビットストリームＢＳｒを生成するようにした。
【０１９７】
これによりエンコーダ５０は、可変長符号列ＶＬａ〜ＶＬｄのデータを各可変長符号列ＶＬａ〜ＶＬｄのデータが記録間隔で配列されるようにビットストリームＢＳｒを生成することができる。
【０１９８】
デコーダ８０は、このように生成されたビットストリームＢＳｒを記録間隔と同一な読出間隔で読み出すことにより、可変長符号列ＶＬａ〜ＶＬｄごとに復号対象ビットを読み出すことができるため、並列して復号データ生成処理を実行することができる。
【０１９９】
かくして本発明は、可変長復号処理を高速化し得るエンコーダ、符号方法及び符号プログラムが記録された記録媒体、並びにデコーダ、復号方法及び復号プログラムが記録された記録媒体を実現できる。
【０２００】
＜３．第３の実施の形態＞
図２９〜図３６は第３の実施の形態を示すもので、図１６〜２８に示す第２の実施の形態に対応する部分を同一符号で示している。第３の実施の形態では、４つに分割されたデータブロックＤＢａ〜ＤＢｄをさらに前半・後半に分割して合計８つの可変長符号列を生成し、符号長固定ブロックＶＬｘを生成する点が第２の実施の形態と異なっている。
【０２０１】
［３−１．エンコーダの構成］
図２９に示すように、第３の実施の形態のエンコーダ１００は、画像データＢＬが供給されると、当該画像データに対してエンコード処理を実行し、ビットストリームＢＳｘを生成するようになされている。
【０２０２】
具体的にエンコーダ１００は、入力端子１０１を介して画像データＢＬが供給されると、当該画像データＢＬを分離部１０２に供給する。
【０２０３】
図３０に示すように、分離部１０２は、第２の実施の形態と同様にして画像データＢＬをデータブロックＤＢａ〜ＤＢｄに分離する。さらに分離部１０２は、データブロックＤＢａ〜ＤＢｄを輝度データ又は色差データが各６４ずつ分配されるよう中央で２分割し、前半データブロックＤＢａ１〜ＤＢｄ１と、後半データブロックＤＢａ２〜ＤＢｄ２を生成する。そして分離部１０２は、これらを可変長符号部１１１〜１１８にそれぞれ供給する。
【０２０４】
第１の可変長符号部１１１は、分離部１０２から供給される前半データブロックＤＢａ１を可変長符号化して前半可変長符号列ＶＬａ１（図３０（Ｂ））を生成し、第１の結合部１３１に供給する。
【０２０５】
第２の可変長符号部１１２は、分離部１０２から供給される後半データブロックＤＢａ２を可変長符号化して後半可変長符号列ＶＬａ２（図３０（Ｂ））を生成し、第１のミラー処理部１２１に供給する。
【０２０６】
第１のミラー処理部１２１は、後半可変長符号列ＶＬａ２を並べ替えてミラー処理を施し、第１の結合部１３１に供給する。
【０２０７】
第１の結合部１３１は、必要に応じて緩衝データＤＤを挟むことにより前半データブロックＤＢａ及びミラー処理された後半可変長符号列ＶＬａ２を結合し、符号長が固定でなる符号長固定ブロックＶＸａを生成する。なお第１の結合部１３１は、前半データブロックＤＢａ及びミラー処理された後半可変長符号列ＶＬａ２の合計符号長が固定符号長以下になるようにその符号長を調整するようになされている。
【０２０８】
第３の可変長符号部１１３、第４の可変長符号部１１４、第２のミラー処理部１２２及び第２の結合部１３２は、供給される前半ブロックデータＤＢｂ１及び後半ブロックデータＤＢｂ２に対して同様の処理を施し、符号長固定ブロックＶＸｂを生成する。
【０２０９】
第５の可変長符号部１１５、第６の可変長符号部１１６、第３のミラー処理部１２３及び第３の結合部１３３は、供給される前半ブロックデータＤＢｃ１及び後半ブロックデータＤＢｃ２に対して同様の処理を施し、符号長固定ブロックＶＸｃを生成する。
【０２１０】
第７の可変長符号部１１７、第８の可変長符号部１１８、第４のミラー処理部１２４及び第４の結合部１３４は、供給される前半ブロックデータＤＢｄ１及び後半ブロックデータＤＢｄ２に対して同様の処理を施し、符号長固定ブロックＶＸｄを生成する。
【０２１１】
図３１に示すように、ビットストリーム生成部１０４は、符号長固定ブロックＶＸａ〜ＶＸｄの先頭ビットから１［ｂｉｔ］ずつ入れ子状にデータを並べることにより、入れ子ブロックＶＬｚを生成する。
【０２１２】
この結果入れ子ブロックＶＬｚでは、始端から順方向に向けて前半可変長符号列ＶＬａ１、ＶＬｂ１、ＶＬｃ１、ＶＬｄ１に対応するデータが入れ子状に配列される。また入れ子ブロックＶＬｚでは、終端から逆方向に向けて後半可変長符号列ＶＬａ２、ＶＬｂ２、ＶＬｃ２、ＶＬｄ２に対応するデータが入れ子状に配列される。
【０２１３】
さらにビットストリーム生成部１０４は、入れ子ブロックＶＬｚを順次連ねることにより、ビットストリームＢＳｘを生成するようになされている。
【０２１４】
このようにエンコーダ１００は、複数の符号長固定ブロックＶＸａ〜ＶＸｄを生成すると共に、当該複数の符号長固定ブロックＶＸａ〜ＶＸｄのデータを入れ子状に配列させてビットストリームＢＳｘを生成する。
【０２１５】
これによりビットストリームＢＳｘでは、複数の符号長固定ブロックＶＸａ〜ＶＸｄに対応するデータを始端及び終端から互いに逆方向に繰返して配列させ得るようになされている。またビットストリームＢＳｘでは、入れ子ブロックＶＬｚをの符号長を一定にすることができる。
【０２１６】
［３−２．デコーダの構成］
図３２に示すように、第３の実施の形態のデコーダ１５０は、ビットストリームＢＳｘが供給されると、可変長復号処理としての並列デコード処理を実行し、画像データＢＬを生成するようになされている。
【０２１７】
具体的に、デコーダ１５０は、入れ子ブロックＶＬｚからなるビットストリームＢＳｘが供給されると、これをメモリ１５２に供給する。メモリ１５２は、供給される入れ子ブロックＶＬｚを順次記憶する。
【０２１８】
図３３に示すように、読出制御部１５３は、入れ子ブロックＶＬｚの符号長から復号開始位置を特定し、当該復号開始位置に開始ポインタＰ１〜Ｐ４を設定する。すなわち読出制御部１５３は、第１の可変長復号部１６１に対応する開始ポインタＰ１を入れ子ブロックＶＬｚの先頭ビットに設定する。また読出制御部１５３は、可変長復号部１６２〜１６４に対応する開始ポインタＰ２〜Ｐ４を入れ子ブロックＶＬｚの先頭ビットから順方向へ向けて２［ｂｉｔ］目、３［ｂｉｔ］目、４［ｂｉｔ］目にそれぞれ設定する。
【０２１９】
そして読出制御部１５３は、開始ポインタＰ１〜Ｐ４から順方向へ向けて４［ｂｉｔ］おきにデータを読み出すことにより、復号対象ビットを読み出し、それぞれ可変長復号部１６１〜１６４に供給する。
【０２２０】
さらに読出制御部１５３は、可変長復号部１６１〜１６４から復号データの生成に使用されたビット数の情報を受け取ると、当該復号データの生成に使用されたビット数だけ開始ポインタＰ１〜Ｐ４を順方向へ移動させる。読出制御部１５３は、開始ポインタＰ１〜Ｐ４から４［ｂｉｔ］おきにデータを読み出すことにより、復号対象ビットを読み出し、それぞれ可変長復号部１６１〜１６４に供給する。
【０２２１】
これにより可変長復号部１６１〜１６４は、復号対象ビットを読み出して可変長復号化する復号データ生成処理を同時並行して実行し得るようになされている。
【０２２２】
また読出制御部１５３は、固定長でなる入れ子ブロックＶＬｚの符号長から復号開始位置を特定し、当該復号開始位置に開始ポインタＰ５〜Ｐ８を設定する。すなわち読出制御部１５３は、第５の可変長復号部１６５に対応する開始ポインタＰ５を入れ子ブロックＶＬｚの最後尾ビットに設定する。また読出制御部１５３は、可変長復号部１６６〜１６８に対応する開始ポインタＰ６〜Ｐ８を入れ子ブロックＶＬｚの最後尾ビットから逆方向へ向けて２［ｂｉｔ］目、３［ｂｉｔ］目、４［ｂｉｔ］目にそれぞれ設定する。
【０２２３】
そして読出制御部１５３は、開始ポインタＰ５〜Ｐ８から逆方向へ向けて４［ｂｉｔ］おきにデータを読み出すことにより、復号対象ビットを読み出し、それぞれ可変長復号部１６５〜１６８に供給する。
【０２２４】
さらに読出制御部１５３は、可変長復号部１６５〜１６８から復号データの生成に使用されたビット数の情報を受け取ると、当該復号データの生成に使用されたビット数だけ開始ポインタＰ５〜Ｐ８を逆方向へ移動させる。読出制御部１５３は、開始ポインタＰ５〜Ｐ８から４［ｂｉｔ］おきにデータを読み出すことにより、復号対象ビットを読み出し、それぞれ可変長復号部１６５〜１６８に供給する。
【０２２５】
これにより可変長復号部１６５〜１６８は、復号データ生成処理を同時並行して実行し、データブロックＢＢａ１、ＢＢａ２、ＢＢｂ１、ＢＢｂ２、ＢＢｃ１、ＢＢｃ２、ＢＢｄ１、ＢＢｄ２をそれぞれ生成し、画像データ生成部１５４へ供給する。
【０２２６】
図３４に示すように、画像データ生成部１５４は、データブロックＢＢａ１、ＢＢａ２、ＢＢｂ１、ＢＢｂ２、ＢＢｃ１、ＢＢｃ２、ＢＢｄ１、ＢＢｄ２をそれぞれ連結して復号ブロックを生成する。そして画像データ生成部１５４は、復号ブロックをさらに連結することにより画像データＢＬを生成するようになされている。
【０２２７】
このようにデコーダ１５０は、入れ子ブロックＶＬｚの始端及び終端の両方から入れ子状に配列されたデータを同時並行して読み出して可変長復号化するようにした。
【０２２８】
これによりデコーダ１５０は、同時並行して復号データ生成処理を実行できるため、可変長復号処理を高速化し得るようになされている。
【０２２９】
［３−３．具体的な処理手順］
［３−３−１．エンコード処理手順］
次に、エンコードプログラムに従って実行されるエンコード処理手順ＲＴ５について、図３５のフローチャートを用いて説明する。
【０２３０】
エンコーダ１００は、画像データＢＬが供給されると、エンコード処理手順ＲＴ５を開始し、ステップＳＰ６１へ移る。
【０２３１】
ステップＳＰ１において、エンコーダ１００は、画像データＢＬを前半データブロックＤＢａ１〜ＤＢｄ１と、後半データブロックＤＢａ２〜ＤＢｄ２とに分離し、次のステップＳＰ６２へ移る。
【０２３２】
ステップＳＰ６２において、エンコーダ１０は、分離した単位ごとに画像データＢＬを可変長符号化し、前半可変長符号列ＶＬａ１〜ＶＬｄ１及び後半可変長符号列ＶＬａ２〜ＶＬｄ２を生成すると、次のステップＳＰ６３へ移る。
【０２３３】
ステップＳＰ６３において、エンコーダ１００は、後半可変長符号列ＶＬａ２〜ＶＬｄ２に対してミラー処理を実行すると、次のステップＳＰ６４へ移る。
【０２３４】
ステップＳＰ６４において、エンコーダ１００は、前半可変長符号列ＶＬａ及び後半ミラー可変長符号列ＶＬｍの間に緩衝データＤＤを挟んで結合することにより、固定符号長でなる符号長固定ブロックＶＬｘａ〜ＶＬｘｄを生成すると、次のステップＳＰ６５へ移る。
【０２３５】
ステップＳＰ６５において、エンコーダ１００は、符号長固定ブロックＶＸａ〜ＶＸｄから１［ｂｉｔ］ずつデータを抽出し、入れ子状に並べ替えて入れ子ブロックＶＬｚを生成する。そしてエンコーダ１００は、入れ子ブロックＶＬｚを連ねることによりビットストリームＢＳｘを生成すると、終了ステップへ移ってエンコード処理手順ＲＴ５を終了する。
【０２３６】
［３−３−２．並列デコード処理手順］
次に、並列デコードプログラムに従って実行される並列デコード処理手順ＲＴ６について、図３６に示すフローチャートを用いて説明する。
【０２３７】
デコーダ１５０は、ビットストリームＢＳｘが供給されると、並列デコード処理手順ＲＴ６を開始し、供給されるビットストリームＢＳｘをメモリ１５２に順次記憶し、次のステップＳＰ７１へ移る。
【０２３８】
ステップＳＰ７１において、デコーダ１５０は、メモリ１５２において処理対象となる入れ子ブロックＶＬｚの始端及び終端を基準として復号開始位置を設定すると、次のステップＳＰ７２へ移る。
【０２３９】
すなわちデコーダ１５０は、入れ子ブロックＶＬｚの始端及び始端から２［ｂｉｔ］目、３［ｂｉｔ］目、４［ｂｉｔ］目を可変長復号部１６１〜１６４に対する復号開始位置として決定し、開始ポインタＰ１〜Ｐ４を設定する。またデコーダ１５０は、入れ子ブロックＶＬｚの終端から２［ｂｉｔ］目、３［ｂｉｔ］目、４［ｂｉｔ］目を可変長復号部１６５〜１６８に対する復号開始位置として決定し、開始ポインタＰ５〜Ｐ８を設定する。
【０２４０】
ステップＳＰ７２において、デコーダ１５０は、開始ポインタＰ１〜Ｐ４から順方向へ、開始ポインタＰ５〜Ｐ８から逆方向へ向けてメモリ１５２からデータを読み出すことにより、復号対象ビットを順次読み出すと、次のステップＳＰ７３へ移る。
【０２４１】
ステップＳＰ７３において、デコーダ１５０は、復号対象ビットから復号データを生成すると、次のステップＳＰ７４へ移る。
【０２４２】
ステップＳＰ７４において、デコーダ１５０は、全ての可変長復号部１６１〜１６８において、処理対象となる入れ子ブロックＶＬｚに対する復号データの生成が終了したか否かについて判別する。
【０２４３】
ここで否定結果が得られた場合、このことは未だ入れ子ブロックＶＬｚに可変長復号すべき可変長符号が存在することを表している。このときデコーダ１５０は、ステップＳＰ７２へ戻り、ステップＳＰ７３において復号データの生成に使用した復号対象ビットの数だけ開始ポインタＰ１〜Ｐ８を移動した位置から復号対象ビットの読み出しを開始し、処理を継続する。
【０２４４】
これに対してステップＳＰ７４において肯定結果が得られた場合、デコーダ１５０は、次のステップＳＰ７５へ移る。ステップＳＰ７５にいて、デコーダ１５０は、前半復号データＢＢａ１〜ＢＢｄ１及び後半復号データＢＢａ２〜ＢＢｄ２を結合することにより入れ子ブロックＶＬｚを生成する。さらにデコーダ１５０は、入れ子ブロックＶＬｚを連ねることにより画像データＢＬを生成すると、終了ステップへ移って並列デコード処理を終了する。
【０２４５】
［３−４．動作及び効果］
以上の構成によれば、エンコーダ１００は、前半可変長符号列ＶＬａ１〜ＶＬｄ１及び後半可変長符号列ＶＬａ２〜ＶＬｄ２をそれぞれ組み合わせて生成された符号ブロックである符号長固定ブロックＶＬｘを複数生成する。エンコーダ１００は、当該複数の符号長固定ブロックＶＸａ〜ＶＸｄに基づくデータを入れ子状に配列して入れ子ブロックＶＬｚを生成し、入れ子ブロックＶＬｚを連ねることによりビットストリームＢＳｘを生成する。
【０２４６】
これによりエンコーダ１００は、入れ子ブロックＶＬｚの始端及び終端から、符号長固定ブロックＶＸａ〜ＶＸｄごとのデータに対して並列して復号データ生成処理を実行させることができる。
【０２４７】
またエンコーダ１００は、２つの可変長符号列である前半可変長符号列ＶＬａ１及び後半可変長符号列ＶＬａ２の符号長の合計が固定長以下になるように当該２つの可変長符号列を生成する。
【０２４８】
これによりエンコーダ１００は、各前半可変長符号列ＶＬａ１及び後半可変長符号列ＶＬａ２が所定の固定長以下になるように前半可変長符号列ＶＬａ１及び後半可変長符号列ＶＬａ２を生成する場合と比較して、符号長の制限を緩和することができる。この結果エンコーダ１００は、固定長を小さく設定して符号量を低減させたり、符号量の調整に伴う画質の劣化を抑制することができる。
【０２４９】
デコーダ１５０は、複数の符号長固定ブロックＶＸａ〜ＶＸｄに基づくデータが入れ子状に配列されてなるビットストリームＢＳｘから符号長固定ブロックＶＸａ〜ＶＸｄごとのデータを読み出すことにより、複数の符号長固定ブロックＶＸａ〜ＶＸｄを並列して可変長復号化する。
【０２５０】
これによりデコーダ１５０は、入れ子ブロックＶＬｚの始端及び終端から復号データ生成処理を実行することができるため、入れ子にする符号長固定ブロックＶＸａ〜ＶＸｄの数を増大させなくても並列して実行する復号データ生成処理の数を増大させることができる。この結果デコーダ１５０は、可変長復号処理としての並列デコード処理を高速化することができる。
【０２５１】
以上の構成によれば、エンコーダ１００は、２つの可変長符号列を組み合わせて固定長でなる符号長固定ブロックＶＸａ〜ＶＸｄを複数生成し、当該符号長固定ブロックＶＸａ〜ＶＸｄに基づくデータを抽出数ごとに抽出して順次配列し、入れ子ブロックＶＬｚを生成する。
【０２５２】
これによりエンコーダ１００は、始端に前半可変長符号列ＶＬａ１〜ＶＬｄ１の先頭ビットが順次並び、終端に後半可変長符号列ＶＬａ２〜ＶＬｄ２が順次並ぶように入れ子ブロックＶＬｚを生成することができる。
【０２５３】
デコーダ１５０は、このように生成された入れ子ブロックＶＬｚの始端及び終端から、複数の可変長符号列に基づくデータを当該可変長符号列ごとに読み出して復号データ生成処理を実行する。
【０２５４】
これによりデコーダ１５０は、並列して実行する復号データ生成処理の数を増大させることができ、並列デコード処理を高速化することができる。
【０２５５】
＜４．他の実施の形態＞
なお上述した第２の実施の形態においては、抽出数を「１」に設定し、可変長符号列ＶＬａ〜ＶＬｄに基づくデータを1［ｂｉｔ］ずつ入れ子状に配列するようにした場合について述べた。本発明はこれに限らず、抽出数に制限はない。例えば図３７に示すように、抽出数を「３」に設定し、可変長符号列ＶＬａ〜ＶＬｄに基づくデータを３［ｂｉｔ］ずつ入れ子状に配列しても良い。
【０２５６】
この場合、エンコーダは、図３８に示すように、例えば可変長符号列ＶＬｄに基づくデータが終了する際、最後に残った１［ｂｉｔ］又は２［ｂｉｔ］のデータに対してダミーデータＤＭを付加し、３［ｂｉｔ］の組を生成する。
【０２５７】
これによりエンコーダは、３［ｂｉｔ］の抽出数の関係を崩すことなく、上述した第２の実施の形態と同様に記録間隔のみを変化させてビットストリームＢＳｒｘを生成することができる。
【０２５８】
また上述した第２の実施の形態においては、可変長でなる可変長符号列ＶＬａ〜ＶＬｄを入れ子状に配列するようにした場合について述べた。本発明はこれに限らず、可変長符号列ＶＬａ〜ＶＬｄの後にダミーデータを付加することにより符号長を固定値にしても良い。この場合、上述した終端処理（復号データ生成処理の再実行）が不要となる。
【０２５９】
さらに上述した第１〜第３の実施の形態においては、画素値をそのまま表す画像データを受け取るようにした場合について述べた。本発明はこれに限らず、例えばＤＣＴ処理や量子化処理が施されているような画像データを受け取っても良い。また画像データは４：２：２方式である必要はなく、例えば４：２：０方式や４：４：４方式であっても良い。
【０２６０】
さらに上述した第１〜第３の実施の形態においては、画像データＢＬが所定の画素数分の輝度データのブロック及び色差データのブロックからなるようにした場合について述べた。本発明はこれに限らず、例えば図３９のように、輝度データ及び色差データが２ピクセル分ずつ組になって構成されていても良い。この場合、任意の画素数分でなるブロックをデータブロックＤＢとして分離することが可能となる。
【０２６１】
さらに上述した第１〜第３の実施の形態においては、同一画素分（すなわち同一符号量分）のデータをデータブロックＤＢとして分離するようにした場合について述べた。本発明はこれに限らず、異なる画素分のデータをデータブロックＤＢとして分離しても良い。またデータブロックＤＢのサイズに制限はない。
【０２６２】
さらに上述した第１の実施の形態においては、符号長固定ブロックＶＬｘを生成することにより、その符号長から符号長固定ブロックＶＬｘ間の境界がわかるようにした場合について述べた。本発明はこれに限らず、例えば図４０に示すように、符号長が可変でなる符号ブロックＶＬｔを生成し、符号ブロックＶＬｔ間に境界情報ＩＢを挟むことにより、当該符号ブロックＶＬｔ間の境界がわかるようにしても良い。この場合、１つのデータブロックを連続的に可変長符号化することにより、異なる可変長符号部によって可変長復号化されるべき２つの可変長符号列ＶＬａ及びＶＬｂが組み合わされた符号ブロックＶＬｔを生成することができる。
【０２６３】
これにより本発明は、符号長固定ブロックＶＬｘの生成のために緩衝データＤＤを含める必要がないため、緩衝データＤＤよりも境界情報ＩＢのデータ量が小さい場合には、全体の符号量を低減させることができる。本発明は、例えば画像データとしてＤＣＴ処理され符号量が大きく変化するような画像データに適用すると効果的である。
【０２６４】
また可変長符号列ＶＬａ及びＶＬｂの代りに第２の実施の形態における入れ子ブロックＢＬｙを用いることも可能である。この場合、可変長符号列ＶＬｂの代りに後半に使用される入れ子ブロックＢＬｙは、ミラー処理が施される。
【０２６５】
さらに上述した第１の実施の形態においては、１つの符号長固定ブロックＶＬｘをその両端から並列して可変長復号化するようにした場合について述べた。本発明はこれに限らず、符号長固定ブロックＶＬｘの符号長から次の符号長固定ブロックＶＬｘの始端及び終端を特定し、複数の符号長固定ブロックＶＬｘを並列して可変長復号化するようにしても良い。
【０２６６】
さらに上述した第１の実施の形態においては、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂが所定の符号長以下となるように生成されるようにした場合について述べた。本発明はこれに限らず、前半可変長符号列ＶＬａ及び後半可変長符号列ＶＬｂの加算値が所定の符号長以下になるように生成されればよい。
【０２６７】
さらに上述した第１〜第３の実施の形態においては、各復号処理部が１６［ｂｉｔ］  のバッファメモリを有するようにした場合について述べた。本発明はこれに限らず、バッファメモリは可変長符号データの最大符号長に応じて設置され、可変長符号データの最大符号長以上の記憶容量であれば、そのビット数に制限はない。
【０２６８】
さらに上述した第１〜第３の実施の形態においては、可変長復号部が開始ポインタから所定の数だけ復号対象ビットを読み出すようにした場合について述べた。本発明はこれに限らず、バッファメモリのシフト制御を行うことにより、復号化に使用されたデータのみをメモリから読み出すようにしても良い。
【０２６９】
さらに上述した第１及び第３の実施の形態においては、後半可変長符号列に対してミラー処理を施してから前半可変長符号列と結合するようにした場合について述べた。本発明はこれに限らず、例えば可変長符号部がメモリを有しており、可変長符号列の可変長符号化が終了した際に終端部分から逆方向に向けて読み出すようにしても良い。これによりミラー処理部は不要となる。
【０２７０】
さらに上述した第１〜第３の実施の形態においては、符号プログラム及び復号プログラム等をＲＯＭ又はハードディスクドライブなどに予め格納するようにした場合について述べたが、本発明はこれに限らず、メモリースティック（ソニー株式会社の登録商標）などの外部記憶媒体からフラッシュメモリなどにインストールするようにしても良い。また、データベース生成プログラムなどをＵＳＢ（Universal Serial Bus）やＥｔｈｅｒｎｅｔ（登録商標）（Institute of Electrical and Electronics Engineers：登録商標）８０２．１１ａ／ｂ／ｇなどの無線ＬＡＮ（Local Area Network）を介して外部から取得し、さらには地上ディジタルテレビジョン放送やＢＳディジタルテレビジョン放送により配信されるようにしても良い。
【０２７１】
さらに上述した第１〜第３の実施の形態を適宜組み合わせることも可能である。
【０２７２】
さらに上述した第１の実施の形態においては、分離部としての分離部１２と、可変長符号部としての可変長符号部１３と、符号ブロック生成部及びビットストリーム生成部としてのビットストリーム生成部１４とによってエンコーダとしてのエンコーダ１０を構成するようにした場合について述べた。本発明はこれに限らず、その他種々の構成でなる分離部と、可変長符号部と、符号ブロック生成部と、ビットストリーム生成部とによって本発明のエンコーダを構成するようにしても良い。
【０２７３】
さらに上述した第１の実施の形態においては、受取部としてのメモリ３２と、特定部としての読出制御部３２と、並列デコード部としての並列デコード部４０とによってデコーダとしてのデコーダ３０を構成するようにした場合について述べた。本発明はこれに限らず、その他種々の構成でなる受取部と、特定部と、並列デコード部とによって本発明のデコーダを構成するようにしても良い。
【産業上の利用可能性】
【０２７４】
本発明のデコーダは、例えばハードディスクレコーダやテレビジョンなどの画像処理装置に広く利用することができる。
【図面の簡単な説明】
【０２７５】
【図１】可変長符号を示す略線図である。
【図２】従来の可変長符号処理の説明に供する略線図である。
【図３】従来の可変長復号処理の説明に供する略線図である。
【図４】並列処理の問題点の説明に供する略線図である。
【図５】第１の実施の形態によるエンコーダの構成を示す略線図である。
【図６】第１の実施の形態による画像データの構造を示す略線図である。
【図７】第１の実施の形態によるデータの分離の説明に供する略線図である。
【図８】第１の実施の形態による可変長復号の説明に供する略線図である。
【図９】第１の実施の形態によるデータの並び替えの説明に供する略線図である。
【図１０】第１の実施の形態によるデコーダの構成を示す略線図である。
【図１１】第１の実施の形態によるデータの読出の説明に供する略線図である。
【図１２】第１の実施の形態による可変長復号処理の説明に供する略線図である。
【図１３】第１の実施の形態による画像データの生成の説明に供する略線図である。
【図１４】第１の実施の形態によるエンコード処理手順の説明に供するフローチャートである。
【図１５】第１の実施の形態による並列デコード処理手順の説明に供するフローチャートである。
【図１６】第２の実施の形態によるエンコーダの構成を示す略線図である。
【図１７】第２の実施の形態による画像データの構造を示す略線図である。
【図１８】第２の実施の形態によるデータの分離の説明に供する略線図である。
【図１９】第２の実施の形態による可変長符号の説明に供するフローチャートである。
【図２０】第２の実施の形態による可変長符号列の構成を示す略線図である。
【図２１】第２の実施の形態によるビットストリームの生成の説明に供する略線図である。
【図２２】第２の実施の形態によるデコーダの構成を示す略線図である。
【図２３】第２の実施の形態による復号対象ビットの読出（１）の説明に供する略線図である。
【図２４】第２の実施の形態による復号対象ビットの読出（２）の説明に供する略線図である。
【図２５】第２の実施の形態による終端処理（１）の説明に供する略線図である。
【図２６】第２の実施の形態による終端処理（２）の説明に供する略線図である。
【図２７】第２の実施の形態によるエンコード処理手順の説明に供するフローチャートである。
【図２８】第２の実施の形態による並列デコード処理手順の説明に供するフローチャートである。
【図２９】第３の実施の形態によるエンコーダの構成を示す略線図である。
【図３０】第３の実施の形態による可変長符号の構成を示す略線図である。
【図３１】第３の実施の形態によるビットストリームの生成の説明に供する略線図である。
【図３２】第３の実施の形態によるデコーダの構成を示す略線図である。
【図３３】第３の実施の形態による復号対象ビットの読出の説明に供する略線図である。
【図３４】第３の実施の形態による画像データの生成の説明に供する略線図である。
【図３５】第３の実施の形態によるエンコード処理手順の説明に供するフローチャートである。
【図３６】第３の実施の形態による並列デコード処理手順の説明に供するフローチャートである。
【図３７】他の実施の形態によるビットストリームの生成（１）の説明に供する略線図である。
【図３８】他の実施の形態によるビットストリームの生成（２）の説明に供する略線図である。
【図３９】他の実施の形態による画像データの構成を示す略線図である。
【図４０】他の実施の形態によるビットストリームの生成（３）の説明に供する略線図である。
【符号の説明】
【０２７６】
１０、５０、１００……エンコーダ、１２、５２、１０２……分離部、１４、５４、１０４……ビットストリーム生成部、３２、８２、１５２……メモリ、３５、８３、１５３……読出制御部、４０、９０、１６０……並列デコード部、３６、８４、１５６……画像データ生成部、ＢＬ、ＢＬｘ……画像データ、ＶＬｘ、ＶＸａ〜ＶＸｄ……符号長固定ブロック、ＶＬａ〜ＶＬｄ……可変長符号列、ＶＬａ、ＶＬａ１〜ＶＬｄ１……前半可変長符号列、ＶＬｂ、ＶＬａ２〜ＶＬｄ２……後半可変長符号列、ＶＬｙ、ＶＬｚ……入れ子ブロック、ＢＳ、ＢＳｗ、ＢＳｒ、ＢＳｘ……ビットストリーム、ＤＢ……データブロック。
【図１】
2010154225.tif 000003
【図２】
2010154225.tif 000004
【図３】
2010154225.tif 000005
【図４】
2010154225.tif 000006
【図５】
2010154225.tif 000007
【図６】
2010154225.tif 000008
【図７】
2010154225.tif 000009
【図８】
2010154225.tif 000010
【図９】
2010154225.tif 000011
【図１０】
2010154225.tif 000012
【図１１】
2010154225.tif 000013
【図１２】
2010154225.tif 000014
【図１３】
2010154225.tif 000015
【図１４】
2010154225.tif 000016
【図１５】
2010154225.tif 000017
【図１６】
2010154225.tif 000018
【図１７】
2010154225.tif 000019
【図１８】
2010154225.tif 000020
【図１９】
2010154225.tif 000021
【図２０】
2010154225.tif 000022
【図２１】
2010154225.tif 000023
【図２２】
2010154225.tif 000024
【図２３】
2010154225.tif 000025
【図２４】
2010154225.tif 000026
【図２５】
2010154225.tif 000027
【図２６】
2010154225.tif 000028
【図２７】
2010154225.tif 000029
【図２８】
2010154225.tif 000030
【図２９】
2010154225.tif 000031
【図３０】
2010154225.tif 000032
【図３１】
2010154225.tif 000033
【図３２】
2010154225.tif 000034
【図３３】
2010154225.tif 000035
【図３４】
2010154225.tif 000036
【図３５】
2010154225.tif 000037
【図３６】
2010154225.tif 000038
【図３７】
2010154225.tif 000039
【図３８】
2010154225.tif 000040
【図３９】
2010154225.tif 000041
【図４０】
2010154225.tif 000042