(57)【要約】【課題】コストを低減させ、かつ、処理を高速に行うことができるようにする。【解決手段】復号時、符号化・復号選択部511は、算術演算部412より供給された二値を二値連結部512に供給する。二値連結部512は、その二値を連結し、可変長二値として二値格納バッファ513へ書きこむ。二値解読部514は、その二値格納バッファ513に格納された可変長二値を順次読み出して解読し、シンタックス毎の二値として、符号化・復号選択部511に供給する。復号処理を選択する符号化・復号選択部511は、そのシンタックス毎の二値を、シンタックス要素化部414に供給する。本発明は、符号化処理と復号処理を同時に実行しない符号化復号装置に適用することができる。【選択図】図10
2008113348.tif 000002
【特許請求の範囲】
【請求項１】
情報の符号化および復号を行う符号化復号装置であって、
前記情報を符号化する符号化手段と、
符号化された前記情報を前記符号化手段に対応する方法で復号する復号手段と、
前記符号化手段による前記情報の符号化において得られる第1の中間データ、または、前記復号手段による、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶手段と、
前記記憶手段の入出力を制御し、前記符号化手段による前記情報の符号化の際に、前記第1の中間データを記憶させ、前記復号手段による、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御手段と
を備える符号化復号装置。
【請求項２】
前記符号化手段および前記復号手段は、互いに異なるタイミングで前記情報の符号化、または、符号化された前記情報の復号を行い、
前記制御手段は、実行される処理に応じて、前記記憶手段の入出力を制御し、前記第1の中間データまたは前記第2の中間データのいずれか一方を記憶させる
請求項1に記載の符号化復号装置。
【請求項３】
前記符号化手段は、
情報が所定の方法で直交変換されて得られた直交変換係数を符号化し、前記第1の中間データを生成する係数符号化手段と、
前記係数符号化手段により生成され、前記記憶手段により記憶された前記第1の中間データを算術符号化する算術符号化手段と
を備え、
前記復号手段は、
符号化された前記情報を、前記算術符号化手段に対応する方法で算術復号し、前記第2の中間データを生成する算術復号手段と、
前記算出復号手段により生成され、前記記憶手段により記憶された前記第2の中間データを、前記係数符号化手段に対応する方法で復号し、前記直交変換係数を生成する係数復号手段と
を備える請求項1に記載の符号化復号装置。
【請求項４】
前記符号化手段は、前記係数符号化手段により符号化された前記直交変換係数を所定の方式で二値に変換する第1の変換手段をさらに備え、
前記記憶手段は、前記制御手段により制御されて、前記符号化手段による符号化の際に、前記第1の変換手段により変換されて得られた二値を前記第1の中間データとして記憶し、前記復号手段による復号の際に、前記算術復号手段による算術復号において得られた前記二値を前記第2の中間データとして記憶し、
前記復号手段は、前記記憶手段により記憶された前記二値を、前記第1の変換手段に対応する方法で前記直交変換係数に変換する第2の変換手段をさらに備える
請求項3に記載の符号化復号装置。
【請求項５】
前記第1の変換手段により変換されて得られた前記二値を連結する連結手段と、
前記連結手段により連結され、前記記憶手段により記憶された前記二値を解読する解読手段と
をさらに備える請求項4に記載の符号化復号装置。
【請求項６】
前記連結手段により連結され、前記記憶手段により記憶される二値は、値が「0」でない係数の位置を示すフラグである有意係数フラグ、および、最後の、値が「1」の有意係数フラグを示す最終有意係数フラグの組み合わせよりなる可変長の情報である
請求項5に記載の符号化復号装置。
【請求項７】
前記連結手段により連結され、前記記憶手段により記憶される二値は、値が「0」でない係数の位置を示すフラグである有意係数フラグよりなる固定長の情報である
請求項5に記載の符号化復号装置。
【請求項８】
前記記憶手段は、前記算術符号化手段による算術復号の処理時間の変動を吸収するのに十分な容量を有し、前記第2の中間データを、前記復号手段により復号されて得られた前記情報の再生に応じたタイミングで定期的に出力する
請求項3に記載の符号化復号装置。
【請求項９】
情報の符号化および復号を行う、前記情報の符号化において得られる第1の中間データ、または、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶部を有する符号化復号装置の復号方法であって、
前記記憶部の入出力を制御し、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御ステップと、
前記制御ステップの処理により制御される前記記憶部に前記第2の中間データを記憶させて、符号化された前記情報を復号する復号ステップと
を備える復号方法。
【請求項１０】
情報の符号化および復号を行う、前記情報の符号化において得られる第1の中間データ、または、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶部を有するコンピュータが実行可能なプログラムであって、
前記記憶部の入出力を制御し、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御ステップと、
前記制御ステップの処理により制御される前記記憶部に前記第2の中間データを記憶させて、符号化された前記情報を復号する復号ステップと
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化復号装置、復号方法、並びにプログラムに関し、特に、コストを低減させ、かつ、処理を高速に行うことができるようにした符号化復号装置、復号方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、動画像データの圧縮符号化方式の標準の1つとしてITU-T（International Telecommunication Union Telecommunication Standardization Sector）によって勧告されたH.264方式のエントロピー符号化方法として、例えば、CABAC（Context-based Adaptive Binary Arithmetic Coding）処理が用いられるが、このCABAC処理は、1ビット毎にコンテキストの生成、ビットのコンテキストモデルの確率情報更新、および算術符号化演算を繰り返すため、処理時間が長くなる恐れがあった。
【０００３】
そこで、高速化を実現する方法として、優勢シンボル（MPS（Most Probable Symbol））が連続するような場合に同時に多ビットの処理を行う方法（例えば、特許文献1参照）や、上述したような繰り返し処理部分をパイプライン化する方法（例えば、特許文献2参照）などが提案されてきた。
【０００４】
しかしながら、これらの場合も、CABAC処理の処理時間は、ビット量やビットの並び順等により変化するため、画像の符号化処理や復号処理の全体において、各処理を、マクロブロック、スライス、またはピクチャといった小さな単位でパイプライン化することが困難であった。
【０００５】
図1は、動画像データを符号化する符号化装置の主な構成の具体例を説明するためのブロック図である。図1において、符号化装置1は、ITU-T勧告のH.264方式を用いて符号化を行う符号化装置であり、エントロピー符号化方式として、CABACと、コンテキスト適応型可変長符号化方式（CAVLC（Context Adaptive Variable Length Coding））の2種類が用意されている。符号化装置1は、画像データ、動きベクトル等を示すシンタックスエレメント（SE（Syntax Element））に基づいて、算術符号化処理を行い、処理結果の画像データをバッファに格納する。
【０００６】
画像バッファ11に蓄積された画像データは、動き予測部12に供給され（矢印31）、動き予測が行われ、予測画像と原画像の差分画像が画素一次バッファ13を介して（矢印32）DCT直交変換・量子化部（DCT/Q）14に供給される（矢印33）。DCT/Q14は、供給された画像データを直交変換し、得られたDCT係数を量子化する。量子化された係数は係数一次バッファ15に供給されて（矢印34）蓄積される。
【０００７】
係数一次バッファ15に蓄積された係数は、所定のタイミングで、CABAC方式でエントロピー符号化を行うために二値化部16に供給されるとともに、CAVLC方式でエントロピー符号化を行うためにCAVLC22に供給される（矢印35）。
【０００８】
符号化装置1は、CABAC方式でのデータ圧縮のための構成として、二値化部16、算術演算部17、およびコンテキスト計算部18を有する。二値化部16は、二進数値を有しないシンタックスエレメントすなわち、DCT係数（Discrete Cosine Transform coefficient）と動きベクトル（motion vector）のように2つ以上の値を有するシンタックスエレメントを、算術符号化を実行する以前に、二値に変換し、算術演算部17に供給する（矢印36）。コンテキスト計算部18では、算術演算部17に供給された二値を取得し、その二値化された各ビットに対するコンテキストモデルを選択し、そのモデルを算術演算部17に供給する（矢印37）。ここで、コンテキストモデルは二値化されたシンタックスエレメントの各ビット別確率モデルを意味し、最近に符号化されたシンタックスエレメントの統計に従って利用可能なモデルがコンテキスト計算部18で選択される。すなわち、コンテキスト計算部18は二値化された各データビットの値が「1」または「0」になる確率を蓄積している。算術演算部17は、算術符号器を利用してコンテキスト計算部18で選択された確率モデルに従って各々のビットをエンコーディングし、コードストリームを選択回路19に供給する（矢印38）。
【０００９】
なお、CAVLC22は、供給された係数をCAVLC方式でエンコードし、コードストリームを選択回路23に供給する（矢印41）。また、画像バッファ11に蓄積された画像データは、さらに、画素一次バッファ20に供給されて（矢印39）一時的に保持された後、所定のタイミングで選択回路19および選択回路23に供給される（矢印40）。選択回路19は、算術演算部17より供給されるコードストリーム、および、画素一次バッファ20より供給される画像データのうち、いずれか一方を選択してビットストリーム格納バッファ21に格納させる。同様に、選択回路23は、CAVLC22より出力されるコードストリーム、および、画素一次バッファ20より供給される画像データのうち、いずれか一方を選択してビットストリーム格納バッファ24に格納させる。
【００１０】
このように、CABACの算術演算部17での符号化動作はシンタックスエレメントに対して1ビットずつの処理を行う必要があり、発生するビット量（二値量）によって処理時間が変動する。従って、動き予測、DCT直交変換、量子化、およびCABACなどのように、機能構成要素単位でのパイプライン構造化が困難である。
【００１１】
図2は、符号化時にCABAC処理（エントロピー符号化処理）とDCT/Q処理（DCT直交変換処理と量子化処理）をパイプライン構造で動作させた場合の、処理の流れを説明する図である。各マクロブロックに対するDCT/Q処理が、一定のマクロブロック処理時間51で完結するとものとする。すなわち、DCT/Q処理は、マクロブロック0乃至マクロブロック4のそれぞれを、図2に示されるように、一定の処理時間で処理する。すなわち、マクロブロック0の処理時間52、マクロブロック1の処理時間53、マクロブロック2の処理時間54、マクロブロック3の処理時間56、および、マクロブロック4の処理時間57は、互いに同じ長さ（マクロブロック処理時間51と同一）である。
【００１２】
これに対して、CABAC処理は、ビット量やビットの並び順により処理時間が変化する。例えば、マクロブロック0の処理時間60のように、マクロブロック処理時間51より長い場合や、マクロブロック1の処理時間64、マクロブロック2の処理時間65、マクロブロック3の処理時間66、および、マクロブロック4の処理時間68のようにマクロブロック処理時間51より短い場合もある。
【００１３】
このような処理時間の長短により、図2の例においては、DCT/Q処理において、マクロブロック2の処理後に、DCT/Q処理後に一時的に保持される係数一次バッファが空くまでの待ち時間63が発生し、さらに、CABAC処理において、マクロブロック3の処理後に、必要なデータが揃うまでの待ち時間69が発生している。
【００１４】
以上のことは、復号処理においても同様である。図3は、符号化された動画像データを復号する復号装置の主な構成の具体例を説明するためのブロック図である。図3において、復号装置100は、CABACのデコーダ機能の主な構成として、算術演算部102、コンテキスト計算部103、および係数復号部104を有している。
【００１５】
ビットストリーム格納バッファ101に格納されているビットストリームは、算術演算部102に供給される（矢印121）。コンテキスト計算部103は、ビット別に算術演算部102での符号解読に使用されるコンテキストを選択し、それを算術演算部102に供給する（矢印122）。そして、算術演算部102は、各ビット別に選択されたコンテキストと以前のビットのデコーディング過程で生成されたデコーディングパラメータとを利用して1ビットずつ順次符号解読を実行し、その解読結果を係数復号部104に供給する（矢印123）。係数復号部（シンタックス要素化）104は、算術演算部102において符号解読されたビットが、該当のシンタックスエレメントの最後のビットであるか否かを確認し、元のシンタックスエレメントに復号し、その復号結果を選択回路105に供給する。このように、CABACデコーダでのデータ復号過程は、各シンタックスエレメントに対してビット単位で行われる。
【００１６】
また、ビットストリーム格納バッファ101に格納されているビットストリームは、CAVLC107に供給されて（矢印124）復号され、選択回路105に供給される（矢印125）。選択回路105は、係数復号部104より供給された復号結果、および、CAVLC107より供給された復号結果のうち、いずれか一方を選択し、それを係数一次バッファ108に供給して一時的に保持させる。係数一次バッファ108に保持された復号結果（量子化されたDCT係数）は、逆量子化・DCT逆直交変換部（iDCT/iQ）109に供給され（矢印126）、逆量子化と逆DCT変換が行われた後、画素一次バッファ110に供給されて（矢印127）一時的に保持される。画素一次バッファ110に保持された画像データ（差分画像）は、動き補償部111に供給されて（矢印128）、足し合わせが行われ、原画像の画像データとして画像バッファ112に供給されて（矢印129）蓄積される。
【００１７】
このように、CABACの算術演算部102での復号動作はシンタックスエレメントに対して1ビットずつの処理を行う必要があり、発生するビット量（二値量）によって処理時間が変動する。従って、CABAC、逆量子化（iQ）、DCT逆直交変換（DCT）、動き補償、および、隣り合った2つのブロックが自然につながるように画像を調整するフィルタ処理であるデブロッキングなどのように、機能構成要素単位でのパイプライン構造化が困難である。
【００１８】
図4は、復号時にCABAC処理（復号処理）とiDCT/iQ処理（逆量子化処理とDCT逆直交変換処理）をパイプライン構造で動作させた場合の、処理の流れを説明する図である。各マクロブロックに対するiDCT/iQ処理が、一定のマクロブロック処理時間131で完結するとものとする。これに対して、CABAC処理は、ビット量やビットの並び順により処理時間が変化する。例えば、マクロブロック0の処理時間132やマクロブロック2の処理時間134のように、マクロブロック処理時間131より長い場合や、マクロブロック1の処理時間133、マクロブロック3の処理時間135、および、マクロブロック4の処理時間136のようにマクロブロック処理時間131より短い場合もある。
【００１９】
このような処理時間の長短により、図4の例においては、iDCT/iQ処理において、マクロブロック0の処理時間140、マクロブロック1の処理時間142、マクロブロック2の処理時間146、および、マクロブロック3の処理時間147は、互いに同じ長さ（マクロブロック処理時間131と同一）であるものの、マクロブロック0の処理の開始前に、必要なデータが揃うまでの待ち時間138が発生し、マクロブロック1の処理の終了後に、必要なデータが揃うまでの待ち時間144が発生している。
【００２０】
このような不具合を回避するために、CABAC処理の符号化時において、算術符号化演算と二値の符号化とを、二値をバッファリングすることにより分離し、復号時において、算術復号演算および二値のシンタックス要素化と係数の復号とを、シンタックス要素をバッファリングすることにより分離し、処理時間の伸張する算術符号化演算と、二値・シンタックス要素の符号化・復号処理とを個別に制御することにより、装置全体の最適化する方法がある。
【００２１】
図5は、動画像データを符号化する符号化装置の主な構成の具体例を説明するためのブロック図である。図5において、符号化装置201は、H.264方式を用いて符号化を行う装置である。なお、図1の符号化装置1と同一の構成については同一の符号を付している。
【００２２】
図5の符号化装置201において、画像バッファ11から読み出された参照画像データは、動き予測部12に供給される（矢印31）。動き予測部12は、供給された参照画像データを用いて動き予測を行う。動き予測後の差分画素値は、画素一次バッファ13に供給されて（矢印32）保持される。画素一次バッファ13に保持された差分画素値は、所定のタイミングでDCT直交変換・量子化部（DCT/Q）14により読み出され（矢印33）、DCT直交変換および量子化が行われた後、DCT係数として係数一次バッファ215に供給されて（矢印34）保持される。この処理と平行して、画像バッファ11から読み出された原画像データは、さらに、画素一次バッファ20に供給されて（矢印39）格納された後、所定のタイミングで選択回路217に供給される（矢印240）。
【００２３】
また、係数一次バッファ215に格納されたDCT係数の値と、値が「0」でない（非0の）個数の情報が係数値計測部220に供給される（矢印251）。係数値計測部220は、供給された、値が「0」でないDCT係数（非0DCT係数）の個数と、DCT係数の値に基づいて、符号化されたDCT係数と画素値とで、どちらの発生ビット量が少なくなるかを予測計算し、DCT係数の符号化を行うか、若しくは、画素値をビットストリームに挿入するかを選択する選択信号を選択回路217に供給し（矢印253）、セットする。
【００２４】
係数一次バッファ215に格納されたDCT係数は、二値化部216とCAVLC22に供給される（矢印35）。二値化部216は、供給されたDCT係数（量子化係数）を二値化し、選択回路217に供給する（矢印236）。選択回路217は、係数値計測部220からセットされる選択信号に基づいて、画素データと二値のいずれか一方を選択し、二値として二値格納バッファ218へ書き込む。
【００２５】
コンテキスト計算部230は、二値化部216より二値を取得し（矢印252）、その二値化された各ビットに対するコンテキストモデルを選択し、そのモデルを算術演算部219に供給する（矢印237）。算術演算部219は、所定のタイミングで、二値格納バッファ218に格納されている二値を読み出し（矢印255）、コンテキスト計算部230で選択された確率モデルに従って各々のビットをエンコーディングし、コードストリームをビットストリーム格納バッファ21に供給し（矢印256）、格納させる。
【００２６】
なお、CAVLC22は、供給されたDCT係数をエンコーディングし、コードストリームをビットストリーム格納バッファ24に供給し（矢印41）、格納させる。
【００２７】
図6は、以上のような符号化処理の流れを説明するタイミングチャートである。図6に示されるように、動き予測処理、DCT直交変換・量子化処理（DCT/Q）、および二値化処理は、それぞれ、1つのマクロブロックに対して、所定の時間内に処理を行う。従って、動き予測処理、DCT直交変換・量子化処理（DCT/Q）、二値化処理、および算術演算処理の、最初のマクロブロック0に対するそれぞれの開始タイミングの遅延は、その所定の時間ずつ、ずれる。
【００２８】
このとき、図6に示されるように、算術演算処理の、各マクロブロックに対する処理時間は変化するものの、その他の処理の処理時間は一定である。従って、これらの処理は、図6に示されるようにパイプライン化することができる。
【００２９】
図7は、符号化された動画像データを復号する復号装置の主な構成の具体例を説明するためのブロック図である。図7において、復号装置301は、H.264方式を用いて符号化されたデータを復号する装置である。なお、図3の復号装置100と同一の構成については同一の符号を付している。
【００３０】
図7の復号装置301において、算術演算部102は、コンテキスト計算部103において各ビット別に選択されて供給された（矢印122）コンテキストと、以前のビットのデコーディング過程で生成されたデコーディングパラメータとを利用して、ビットストリーム格納バッファ101より供給された（矢印121）ビットストリームを、1ビットずつ順次符号解読を実行して二値を生成し、それをシンタックス要素化部311に供給する（矢印123）。
【００３１】
シンタックス要素化部104は、その二値をシンタックス要素に復号し、それをシンタックス格納バッファ312に供給して（矢印321）格納させる。係数復号部313は、そのシンタックス要素を所定のタイミングで読み出して（矢印322）復号し、得られたDCT係数（量子化係数）を選択回路105に供給する。
【００３２】
ビットストリーム格納バッファ106に格納されているビットストリームは、CAVLC107において復号され、DCT係数（量子化係数）として選択回路105に供給される。選択回路105は、これらの係数のうち、いずれか一方を選択し、係数一次バッファ108に供給する。
【００３３】
係数一次バッファ108のDCT係数は、iDCT/iQ部109により読み出され（矢印126）、逆量子化処理やDCT逆直交変換処理が行われた後、差分画素値として、画素一次バッファ110に書き込まれる（矢印127）。画素一次バッファ110に保持された差分画素値は、動き補償部111により読み出され（矢印128）、参照画像と足し合わせされた後、デブロッキングフィルタ処理が行われ、復号画像として、画像バッファ112に書き込まれる（矢印129）。
【００３４】
図8は、以上のような復号処理の流れを説明するタイミングチャートである。図8に示されるように、算術演算の処理時間はマクロブロックによって異なるものの、その後の係数復号、逆量子化・DCT逆直交変換処理（iDCT/iQ）、および動き補償は、それぞれ、1つのマクロブロックに対して、所定の時間内に処理を行う。従って、図8に示されるように、これらの処理はパイプライン化することができる。
【特許文献１】特許3350482号
【特許文献２】特開2006-54865号公報
【発明の開示】
【発明が解決しようとする課題】
【００３５】
しかしながら、以上のようにパイプライン化する場合も、二値やシンタックス要素をバッファリングすることにより、二値やシンタックス要素の解読部の追加が必要となり、回路規模やコストが増大する恐れがある。また、二値の解読処理の時間が増大する恐れもある。
【００３６】
本発明は、このような状況に鑑みてなされたものであり、コストを低減させ、かつ、処理を高速に行うことができるようにするものである。
【課題を解決するための手段】
【００３７】
本発明の側面は、情報の符号化および復号を行う符号化復号装置であって、前記情報を符号化する符号化手段と、符号化された前記情報を前記符号化手段に対応する方法で復号する復号手段と、前記符号化手段による前記情報の符号化において得られる第1の中間データ、または、前記復号手段による、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶手段と、前記記憶手段の入出力を制御し、前記符号化手段による前記情報の符号化の際に、前記第1の中間データを記憶させ、前記復号手段による、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御手段とを備える符号化復号装置である。
【００３８】
前記符号化手段および前記復号手段は、互いに異なるタイミングで前記情報の符号化、または、符号化された前記情報の復号を行い、前記制御手段は、実行される処理に応じて、前記記憶手段の入出力を制御し、前記第1の中間データまたは前記第2の中間データのいずれか一方を記憶させることができる。
【００３９】
前記符号化手段は、情報が所定の方法で直交変換されて得られた直交変換係数を符号化し、前記第1の中間データを生成する係数符号化手段と、前記係数符号化手段により生成され、前記記憶手段により記憶された前記第1の中間データを算術符号化する算術符号化手段とを備え、前記復号手段は、符号化された前記情報を、前記算術符号化手段に対応する方法で算術復号し、前記第2の中間データを生成する算術復号手段と、前記算出復号手段により生成され、前記記憶手段により記憶された前記第2の中間データを、前記係数符号化手段に対応する方法で復号し、前記直交変換係数を生成する係数復号手段とを備えるようにすることができる。
【００４０】
前記符号化手段は、前記係数符号化手段により符号化された前記直交変換係数を所定の方式で二値に変換する第1の変換手段をさらに備え、前記記憶手段は、前記制御手段により制御されて、前記符号化手段による符号化の際に、前記第1の変換手段により変換されて得られた二値を前記第1の中間データとして記憶し、前記復号手段による復号の際に、前記算術復号手段による算術復号において得られた前記二値を前記第2の中間データとして記憶し、前記復号手段は、前記記憶手段により記憶された前記二値を、前記第1の変換手段に対応する方法で前記直交変換係数に変換する第2の変換手段をさらに備えるようにすることができる。
【００４１】
前記第1の変換手段により変換されて得られた前記二値を連結する連結手段と、前記連結手段により連結され、前記記憶手段により記憶された前記二値を解読する解読手段とをさらに備えるようにすることができる。
【００４２】
前記連結手段により連結され、前記記憶手段により記憶される二値は、値が「0」でない係数の位置を示すフラグである有意係数フラグ、および、最後の、値が「1」の有意係数フラグを示す最終有意係数フラグの組み合わせよりなる可変長の情報であるようにすることができる。
【００４３】
前記連結手段により連結され、前記記憶手段により記憶される二値は、値が「0」でない係数の位置を示すフラグである有意係数フラグよりなる固定長の情報であるようにすることができる。
【００４４】
前記記憶手段は、前記算術符号化手段による算術復号の処理時間の変動を吸収するのに十分な容量を有し、前記第2の中間データを、前記復号手段により復号されて得られた前記情報の再生に応じたタイミングで定期的に出力することができる。
【００４５】
本発明の側面はまた、情報の符号化および復号を行う、前記情報の符号化において得られる第1の中間データ、または、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶部を有する符号化復号装置の復号方法またはプログラムであって、前記記憶部の入出力を制御し、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御ステップと、前記制御ステップの処理により制御される前記記憶部に前記第2の中間データを記憶させて、符号化された前記情報を復号する復号ステップとを備える復号方法またはプログラムである。
【００４６】
本発明の側面においては、情報が符号化され、符号化された情報が復号され、情報の符号化において得られる第1の中間データと、符号化された情報の復号において得られる第2の中間データが記憶され、さらに、その記憶の入出力が制御され、情報の符号化の際には第1の中間データが記憶され、符号化された情報の復号の際には第2の中間データが記憶される。
【発明の効果】
【００４７】
本発明によれば、符号化処理および復号処理を行う符号化復号装置を実現することができる。特に、コストを低減させ、かつ、処理を高速に行う符号化復号装置を提供することができる。
【発明を実施するための最良の形態】
【００４８】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００４９】
本発明の側面は、情報の符号化および復号を行う符号化復号装置（例えば、図10の符号化復号装置501）であって、前記情報を符号化する符号化手段（例えば、図10の係数符号化部501および算術演算部407）と、符号化された前記情報を前記符号化手段に対応する方法で復号する復号手段（例えば、図10の算術演算部412、および、係数復号部416）と、前記符号化手段による前記情報の符号化において得られる第1の中間データ、または、前記復号手段による、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶手段（例えば、図10の二値格納バッファ513）と、前記記憶手段の入出力を制御し、前記符号化手段による前記情報の符号化の際に、前記第1の中間データを記憶させ、前記復号手段による、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御手段（例えば、図10の符号化復号選択部511）とを備える符号化復号装置である。
【００５０】
前記符号化手段は、情報が所定の方法で直交変換されて得られた直交変換係数を符号化し、前記第1の中間データを生成する係数符号化手段（例えば、図10の係数符号化部501）と、前記係数符号化手段により生成され、前記記憶手段により記憶された前記第1の中間データを算術符号化する算術符号化手段（例えば、図10の算術演算部407）とを備え、前記復号手段は、符号化された前記情報を、前記算術符号化手段に対応する方法で算術復号し、前記第2の中間データを生成する算術復号手段（例えば、図10の算術演算部412）と、前記算出復号手段により生成され、前記記憶手段により記憶された前記第2の中間データを、前記係数符号化手段に対応する方法で復号し、前記直交変換係数を生成する係数復号手段（例えば、図10の係数復号部416）とを備えるようにすることができる。
【００５１】
前記符号化手段は、前記係数符号化手段により符号化された前記直交変換係数を所定の方式で二値に変換する第1の変換手段（例えば、図10の二値化部403）をさらに備え、前記記憶手段は、前記制御手段により制御されて、前記符号化手段による符号化の際に、前記第1の変換手段により変換されて得られた二値を前記第1の中間データとして記憶し、前記復号手段による復号の際に、前記算術復号手段による算術復号において得られた前記二値を前記第2の中間データとして記憶し、前記復号手段は、前記記憶手段により記憶された前記二値を、前記第1の変換手段に対応する方法で前記直交変換係数に変換する第2の変換手段（例えば、図10の二値化部403）をさらに備えるようにすることができる。
【００５２】
前記第1の変換手段により変換されて得られた前記二値を連結する連結手段（例えば、図10の二値連結部513）と、前記連結手段により連結され、前記記憶手段により記憶された前記二値を解読する解読手段（例えば、図10の二値解読部514）とをさらに備えるようにすることができる。
【００５３】
前記連結手段により連結され、前記記憶手段により記憶される二値は、値が「0」でない係数の位置を示すフラグである有意係数フラグ（例えば、図13の有意係数フラグ（significant_coeff_flag）601）、および、最後の、値が「1」の有意係数フラグを示す最終有意係数フラグ（例えば、図13の最終有意係数フラグ（last_significant_coeff_flag)602）の組み合わせよりなる可変長の情報であるようにすることができる。
【００５４】
前記連結手段により連結され、前記記憶手段により記憶される二値は、値が「0」でない係数の位置を示すフラグである有意係数フラグ（例えば、図13の固定長有意係数フラグ（significant_coeff_flag_fix16)604）よりなる固定長の情報であるようにすることができる。
【００５５】
前記記憶手段は、前記算術符号化手段による算術復号の処理時間の変動を吸収するのに十分な容量を有し、前記第2の中間データを、前記復号手段により復号されて得られた前記情報の再生に応じたタイミングで定期的に出力する（例えば、図17のステップS66）ことができる。
【００５６】
本発明の側面はまた、情報の符号化および復号を行う、前記情報の符号化において得られる第1の中間データ、または、符号化された前記情報の復号において得られる第2の中間データを記憶する記憶部を有する符号化復号装置の復号方法またはプログラムであって、前記記憶部の入出力を制御し、符号化された前記情報の復号の際に、前記第2の中間データを記憶させる制御ステップ（例えば、図12のステップS21）と、前記制御ステップの処理により制御される前記記憶部に前記第2の中間データを記憶させて、符号化された前記情報を復号する復号ステップ（例えば、図12のステップS23およびステップS28）とを備える復号方法またはプログラムである。
【００５７】
以下、本発明の実施の形態について説明する。
【００５８】
最初に、従来の方法によりCABACの符号化および復号を行う符号化復号装置について説明する。図9は、その場合の符号化復号装置の構成例を説明するブロック図である。
【００５９】
図9において、符号化復号装置400は、符号化処理の構成として、係数符号化部401、シンタックス要素化部402、二値化部403、二値連結部404、二値格納バッファ405、可変長二値解読部406、算術演算部407、コンテキスト計算部408、およびビットストリーム格納バッファ409を有している。また、符号化復号装置400は、復号処理の構成として、ビットストリーム格納バッファ411、算術演算部412、コンテキスト計算部413、シンタックス要素化部414、シンタックス格納バッファ415、および係数復号部416を有している。
【００６０】
符号化時において、係数符号化部401は、入力されたDCT係数（矢印431）の符号化する部分を抽出し、それをシンタックス要素化部402へ渡す（矢印432）。シンタックス要素化部402は、二値化部403へ必要なシンタックス要素を渡す（矢印433）。二値化部403は、各種シンタックス要素を受け取り、それぞれのシンタックス要素毎に定められた二値化方式によって、符号化の中間データである二値を生成し、その二値を二値連結部404へ転送する（矢印434）。二値連結部404は、その二値を可変長符号としてビット単位で連結し、二値格納バッファ405へ転送し（矢印435）、一時的に保持させる。
【００６１】
可変長二値解読部406は、可変長符号として連結された、符号化の中間データである二値を二値格納バッファ405から読み出し（矢印436）、それをシンタックス要素単位の二値として解読し、その結果を算術演算部407へ転送する（矢印437）。各シンタックス要素単位の二値は、固定長二値化、テーブル参照二値化、Unary Binarization（値が「1」のビットの連続＋値が「0」のビットで構成される符号）、Truncated Unary Binarization（Unary Binarizationに最大値を設け、最大値の符号語は最後の「0」が省略されている符号）、Concatenated Unary/K-th Order Exponential Golomb Binarization（Truncated Unary Binarizationと指数ゴロム符号、および、正負を表すSignビットの結合で構成される符号）のいずれかの方式で符号化されているため、シンタックス単位に定められたビット長が解読可能である。従って、可変長二値解読部406は、可変長二値をシンタックス単位の二値として解読することができる。
【００６２】
コンテキスト計算部408および算術演算部407は、互いに連携して（矢印438）CABACによる符号化動作を行い、ビットストリームを生成して、それをビットストリーム格納バッファ409へ転送する（矢印439）。ビットストリーム格納バッファ409は、格納されているビットストリームを所定のタイミングで符号化復号装置400の外部に出力する（矢印440）。
【００６３】
復号時において、算術演算部412は、符号化復号装置400の外部より供給された（矢印451）ビットストリームを格納するビットストリーム格納バッファ411から、ビットストリームを読み出す（矢印452）。算術演算部412およびコンテキスト計算部413は、互いに連携してCABACによる復号動作を行い、復号の中間データである二値を生成し、それをシンタックス要素化部414に供給する（矢印453）。シンタックス要素化部414は、二値をシンタックス要素に変換し、それを、シンタックス格納バッファ415へ書き込む（矢印454）。係数復号部416は、シンタックス格納バッファ415より、シンタックス要素をシンタックス毎に読み出し（矢印455）、DCT係数として符号化復号装置400の外部に出力する（矢印456）。
【００６４】
このような符号化復号装置400に対して、本発明においては、構成の一部を符号化側と復号側とで共有させる。図10は、本発明を適用した符号化復号装置の構成例を示すブロック図である。図10において符号化復号装置500は、図9の符号化復号装置400と同様に、CABACの符号化および復号を行う装置である。図10において、符号化復号装置400と同様の構成には、図9と同様の符号を付してある。
【００６５】
図10に示されるように、符号化復号装置500は、符号化処理専用であった二値連結部404、二値格納バッファ405、および可変長二値解読部406の代わりに、符号化処理と復号処理で共有する二値連結部512、二値格納バッファ513、および二値解読部514を有している。また、符号化復号装置500は、共有する二値連結部512、二値格納バッファ513、および二値解読部514の入出力を切り替え、符号化処理に使用するか、復号処理に使用するかを選択する符号化・復号選択部511をさらに有する。
【００６６】
なお、符号化復号装置500は、係数符号化部501を有する。この係数符号化部501は、符号化復号装置400の係数符号化部401とシンタックス要素化部402の両方に対応し、符号化復号装置400の外部より入力されたDCT係数（矢印431）の符号化する部分を抽出し、二値化部403へ必要なシンタックス要素を渡す（矢印433）。
【００６７】
また、符号化復号装置500の場合、後述するように、シンタックス要素ではなく、二値をバッファリングするので、符号化復号装置400が有するシンタックス格納バッファ415は省略される。
【００６８】
次に、符号化復号装置500の動作について説明する。ただし、符号化復号装置400と同様の部分については説明を省略する。
【００６９】
なお、符号化復号装置500は、符号化処理および復号処理のいずれか一方を実行中に、他方を実行しない（符号化処理および復号処理を互いに異なるタイミングで実行する）。すなわち、符号化復号装置500は、符号化処理と復号処理を同時に実行しない。従って、あるタイミングにおいて、二値格納バッファ513には、符号化処理において生成された二値、または、復号処理において生成された二値のいずれか一方のみが格納され、その両方が同時に格納されることはない。
【００７０】
復号処理において、算術演算部412は、符号化復号装置400の場合と同様に、ビットストリーム格納バッファ409を介して供給されたビットストリームを、コンテキスト計算部413と連携して復号して、復号の中間データである二値を求める。
【００７１】
算術演算部412は、その二値を符号化・復号選択部511に供給する（矢印453）。符号化・復号選択部511は、復号時、二値連結部512、二値格納バッファ513、および二値解読部514を復号側で使用するように設定する。すなわち、符号化・復号選択部511は、算術演算部412より供給された、復号の中間データである二値を二値連結部512に供給する（矢印531）。二値連結部512は、その二値を連結し、可変長二値として二値格納バッファ513へ書きこむ（矢印532）。二値解読部514は、その二値格納バッファ513に格納された、復号の中間データである可変長二値を順次読み出して（矢印533）解読し、シンタックス毎の二値として、符号化・復号選択部511に供給する（矢印534）。復号処理を選択する符号化・復号選択部511は、そのシンタックス毎の二値を、シンタックス要素化部414に供給する（矢印453）。シンタックス要素化部414は、符号化復号装置400の場合と同様に、供給された二値をシンタックス要素化し、係数復号部416へ供給する（矢印454）。係数復号部416は、そのシンタックス要素を復号し、DCT係数として符号化復号装置500の外部に出力する（矢印456）。
【００７２】
また、符号化処理において、係数符号化部501は、符号化復号装置400の係数符号化部401およびシンタックス要素化部402の場合と同様に、符号化復号装置400の外部より入力されたDCT係数（矢印431）から、必要なシンタックス要素を取り出し、二値化部403に渡す（矢印433）。二値化部403は、符号化復号装置400の場合と同様にシンタックス要素を二値化し、その、符号化の中間データである二値を符号化復号選択部511に供給する。
【００７３】
符号化時、符号化・復号選択部511は、二値連結部512、二値格納バッファ513、および二値解読部514を符号化側で使用するように設定する。すなわち、符号化・復号選択部511は、二値化部403より供給された二値を受け付け、それを二値連結部512に供給する（矢印531）。二値連結部512は、その二値を連結し、可変長二値として二値格納バッファ513へ書きこむ（矢印532）。二値解読部514は、その二値格納バッファ513に格納された、符号化の中間データである可変長二値を順次読み出して（矢印533）解読し、シンタックス毎の二値として、符号化・復号選択部511に供給する（矢印534）。符号化処理を選択する符号化・復号選択部511は、そのシンタックス毎の二値を、算術演算部407に供給する（矢印437）。
【００７４】
コンテキスト計算部408および算術演算部407は、互いに連携して（矢印438）CABACによる符号化動作を行い、ビットストリームを生成して、それをビットストリーム格納バッファ409へ転送する（矢印439）。ビットストリーム格納バッファ409は、格納されているビットストリームを所定のタイミングで符号化復号装置500の外部に出力する（矢印440）。
【００７５】
以上のように、符号化復号装置500は、二値連結部512の入力、および、二値解読部514の出力を符号化側の構成に接続するか、または、復号側の構成に接続するかを選択する符号化・復号選択部511を有することにより、符号化または復号の中間データを処理する、二値連結部512、二値格納バッファ513、および二値解読部514を、符号化処理と復号処理の間で共有することができる。従って、符号化復号装置500は、回路規模を低減させ、製造コストや運用コストを低減させることができる。なお、復号時にシンタックス要素ではなく、中間データである二値でバッファリングを行うことができるようになるので、符号化復号装置500は、バッファリングに使用するメモリの量を低減させることができる。
【００７６】
次に、この符号化復号装置500において実行される符号化処理の流れの例を図11のフローチャートを参照して説明する。
【００７７】
符号化処理が開始されると、符号化・復号選択部511は、ステップS1において、二値格納バッファ513を符号化処理に使用するように設定する。つまり、符号化・復号選択部511は、二値連結部512、二値格納バッファ513、および二値解読部514を符号化処理に使用するように、二値連結部512の入力を符号化側の構成である二値化部403の出力に接続させ、二値解読部514の出力を符号化側の構成である算術演算部407の入力に接続させるように設定する。
【００７８】
ステップS2において、係数符号化部501は、DCT係数よりシンタックス要素を生成する。ステップS3において、二値化部403は、そのシンタックス要素を二値化する。
【００７９】
二値連結部512は、ステップS4において、複数の二値を連結し、中間データである可変長二値を生成する。二値格納バッファ513は、ステップS5においてその可変長二値を蓄積する。二値解読部514は、ステップS6において、その可変長二値を読み出して解読し、シンタックス毎の二値を生成する。
【００８０】
算術演算部407は、ステップS7において、二値を符号化する。ビットストリーム格納バッファ409は、ステップS8において、符号化により得られたビットストリームを蓄積した後、ステップS9において、所定のタイミングでそのビットストリームを出力し、符号化処理を終了する。
【００８１】
次に、この符号化復号装置500において実行される復号処理の流れの例を図12のフローチャートを参照して説明する。
【００８２】
復号処理が開始されると、符号化・復号選択部511は、ステップS21において、二値格納バッファ513を復号処理に使用するように設定する。つまり、符号化・復号選択部511は、二値連結部512、二値格納バッファ513、および二値解読部514を復号処理に使用するように、二値連結部512の入力を復号側の構成である算術演算部412の出力に接続させ、二値解読部514の出力を復号側の構成であるシンタックス要素化部414の入力に接続させるように設定する。
【００８３】
ビットストリーム格納バッファ411は、ステップS22において、ビットストリームを取得し蓄積する。ステップS23において、算術演算部412は、所定のタイミングでそのビットストリームに対して符号解読を行い、二値を生成する。
【００８４】
二値連結部512は、ステップS24において、複数の二値を連結し、中間データである可変長二値を生成する。二値格納バッファ513は、ステップS25においてその可変長二値を蓄積する。二値解読部514は、ステップS26において、その可変長二値を読み出して解読し、シンタックス毎の二値を生成する。
【００８５】
シンタックス要素化部414は、ステップS27において、二値をシンタックス要素化する。係数復号部416は、ステップS28において、係数復号を行い、DCT係数を生成して出力し、復号処理を終了する。
【００８６】
以上のように、符号化・復号選択部511が行う設定により、中間データを処理する二値連結部512、二値格納バッファ513、および二値解読部514は、符号化処理および復号処理のいずれにも使用することができる。
【００８７】
なお、以上の例において、二値格納バッファ513には可変長二値が格納されるように説明したが、この可変長二値は、4x4もしくは8x8ブロック内での非0係数（値が「0」でない係数）の位置を示す有意係数フラグ（significant_coeff_flag）と、その有意係数フラグの値が「1」の場合、その係数が4x4もしくは、8x8ブロックで出現する最後の係数かどうかを示すフラグ最終有意係数フラグ（last_significant_coeff_flag）により構成される。
【００８８】
図13に、4x4を1ブロックとした場合の、可変長二値の例を示す。図13の上段に示されるように、有意係数フラグ（significant_coeff_flag）601と最終有意係数フラグ（last_significant_coeff_flag）602が、可変長二値として二値格納バッファ513に格納される場合、有意係数フラグ601と最終有意係数フラグ602の関係から、有意係数フラグ601の値が「1」の場合のみ、最終有意係数フラグ602が出現する（最終有意係数フラグは0係数について関知しない）。
【００８９】
図13の上段の例の場合、有意係数フラグ601の1ビット目611の値は「1」であり、2ビット目612の値は「1」であり、3ビット目613の値は「1」であり、4ビット目614の値は「0」であり、5ビット目615の値は「0」であり、6ビット目616の値は「1」であり、7ビット目617の値は「0」であり、8ビット目618の値は「0」であり、9ビット目619の値は「0」であり、10ビット目620の値は「0」であり、11ビット目621の値は「0」であり、12ビット目622の値は「1」であり、13ビット目623の値は「1」である。14ビット目乃至16ビット目の値はいずれも「0」であり省略される。
【００９０】
これに対して、最終有意係数フラグ602は、有意係数フラグ601の1ビット目611乃至3ビット目、6ビット目、12ビット目、並びに13ビット目のそれぞれに対応して出現する。このとき、有意係数フラグ601の13ビット目以外は、最後の有意係数ではないため、有意係数フラグ601の1ビット目611に対応する最終有意係数フラグ602の1ビット目641、有意係数フラグ601の2ビット目612に対応する最終有意係数フラグ602の2ビット目642、有意係数フラグ601の3ビット目613に対応する最終有意係数フラグ602の3ビット目643、有意係数フラグ601の6ビット目616に対応する最終有意係数フラグ602の4ビット目644、
並びに、有意係数フラグ601の12ビット目622に対応する最終有意係数フラグ602の5ビット目645の値は、いずれも「0」となり、有意係数フラグ601の13ビット目623に対応する最終有意係数フラグ602の6ビット目646の値だけが「1」となる。つまり、最終有意係数フラグ602の6ビット目646により、有意係数フラグ601の14ビット目乃至16ビット目の値がいずれも「0」であることが示されている。
【００９１】
これらの有意係数フラグ601および最終有意係数フラグ602の各ビットは、図13の中段に示される可変長二値格納順603のように、1ビット目から交互に格納される（2つのフラグの対応関係を保つように格納される）。
【００９２】
従って、有意係数フラグ601および最終有意係数フラグ602に対応する可変長二値格納順603の1ビット目661の値は、有意係数フラグ601の1ビット目611に対応して「1」となり、2ビット目662の値は、最終有意係数フラグ602の1ビット目641に対応して「0」となり、3ビット目663の値は、有意係数フラグ601の2ビット目612に対応して「1」となり、4ビット目664の値は、最終有意係数フラグ602の2ビット目642に対応して「0」となり、5ビット目665の値は、有意係数フラグ601の3ビット目613に対応して「1」となり、6ビット目666の値は、最終有意係数フラグ602の3ビット目643に対応して「0」となり、7ビット目667および8ビット目668の値は、有意係数フラグ601の4ビット目614と5ビット目615のそれぞれに対応していずれも「0」となり、9ビット目669の値は、有意係数フラグ601の6ビット目616に対応して「1」となり、10ビット目670の値は、最終有意係数フラグ602の4ビット目644に対応して「0」となり、11ビット目671、12ビット目672、13ビット目673、14ビット目674、および15ビット目675の値は、有意係数フラグ601の7ビット目617乃至11ビット目621のそれぞれに対応していずれも「0」となり、16ビット目676の値は、有意係数フラグ601の12ビット目622に対応して「1」となり、17ビット目677の値は、最終有意係数フラグ602の5ビット目645に対応して「0」となり、18ビット目678の値は、有意係数フラグ601の13ビット目623に対応して「1」となり、19ビット目679の値は、最終有意係数フラグ602の6ビット目646に対応して「1」となる。
【００９３】
このように、可変長二値格納順603においては、有意係数フラグ601の14ビット目以降の3ビット、最終有意係数フラグ602の4ビット目および5ビット目、7ビット目乃至11ビット目、並びに、14ビット目乃至16ビット目の、合計13ビットが省略されている。これにより、可変長二値のバッファリングに必要な容量を低減させることができる。
【００９４】
しかしながら、この場合、二値解読部514による可変長二値の解読が複雑であり、解読処理にある程度の時間を必要とするので、さらなる処理の高速化が困難になることも考えられる。
【００９５】
例えば、上述した例の可変長二値格納順603に対して、二値解読部514は、まず可変長二値格納順603の1ビット目661の値を有意係数フラグ601のビットと判定して、その値が「1」であるか否かを判定する。値が「0」であれば、2ビット目662を有意係数フラグ601のビットと判定し、1ビット目661と同様に判定を行う。また、図13の例のように1ビット目661の値が「1」であれば、二値解読部514は、2ビット目662を最終有意係数フラグ602のビットと判定し、その2ビット目662の値の解読を行う。この2ビット目662の値が「0」であれば、二値解読部514は、1ビット目661の値が最終有意係数でないと判定し、3ビット目663を有意係数フラグ601のビットと判定し、1ビット目661と同様に判定を行う。以上のような判定を繰り返し、最終有意係数フラグ602のビットと判定されたビットの値が「1」であれば、二値解読部514は、このシンタックス列が完了したとみなし、解読を終了する。図13の例の場合、最終有意係数フラグ602のビットと判定された19ビット目679の値が「1」となっているので、このビットの判断でこのシンタックス列は完了である。
【００９６】
このように、有意係数フラグおよび最終有意係数フラグよりなる可変長二値の解読は、出現するシンタックス数分の処理時間を必要とする。
【００９７】
そこで、このような二値の解読の処理時間を低減させるために、二値格納バッファ513に格納される二値を有意係数フラグ601と最終有意係数フラグ602の組み合わせで構成するではなく、16ビット固定長の有意係数フラグで構成するようにしてもよい。すなわち、例えば16ビットの固定長有意係数フラグ（significant_coeff_flag_fix16）604のみにより構成される固定長二値605が二値格納バッファ513に格納されるようにしてもよい。この16ビットの固定長有意係数フラグ604の各ビットは、4x4ブロックでの非0係数の位置を示すフラグそのものなので、有意係数フラグ601と最終有意係数フラグ602の組み合わせで表現される非0係数の位置を示すフラグと同じ意味となる。
【００９８】
例えば、図13の上段に示される有意係数フラグ601と最終有意係数フラグ602の組み合わせは、固定長有意係数フラグ604において、図13の下段に示されるように表わされる。すなわち、この場合の固定長二値605の1ビット目681の値は「1」であり、2ビット目682の値は「1」であり、3ビット目683の値は「1」であり、4ビット目684の値は「0」であり、5ビット目685の値は「0」であり、6ビット目686の値は「1」であり、7ビット目687の値は「0」であり、8ビット目688の値は「0」であり、9ビット目689の値は「0」であり、10ビット目690の値は「0」であり、11ビット目691の値は「0」であり、12ビット目692の値は「1」であり、13ビット目693の値は「1」であり、14ビット目694の値は「0」であり、15ビット目695の値は「0」であり、16ビット目696の値は「0」である。
【００９９】
このように、固定長二値605が二値格納バッファ513に格納されるので、二値解読部514は、二値格納バッファ513より固定長二値605を、常に（上述したようなビットの判定を行わずに）16ビット単位で読み出すことができ、高速に解読処理が可能である。なお、ブロックの大きさが8x8の場合は、64ビット固定長有意係数フラグが二値格納バッファ513に格納されるようにする事で同様の高速化を実現することができる。
【０１００】
この場合の、符号化復号装置500による復号処理の流れの例を図14のフローチャートを参照して説明する。
【０１０１】
復号処理が開始されると、各部は、図12のステップS21乃至ステップS25の場合と同様に、ステップS41乃至ステップS45の各処理を行う。ただし、この場合、二値化連結部は、二値を連結して、予め定められた所定の長さの固定長二値を生成し、二値格納バッファ513は、その固定長二値を蓄積する。二値解読部514は、ステップS46において、二値格納バッファ513よりその所定の長さ毎に二値を読み出し、シンタックス毎の二値を生成する。
【０１０２】
シンタックス要素化部414は、ステップS47において、二値をシンタックス要素化し、係数復号部416は、ステップS48において、係数復号を行い、DCT係数を生成して出力し、復号処理を終了する。
【０１０３】
以上のように、二値格納バッファ513に固定長二値を格納させることにより、二値解読部514における処理が容易になるので、符号化復号装置500は、復号処理のさらなる高速化を実現することができる。
【０１０４】
以上のような符号化復号装置500は、例えば、動画像データをH.264方式によって符号化したり、復号したりする符号化復号装置に適用することができる。
【０１０５】
図15は、一般的な符号化復号装置に対して、本発明の符号化復号装置を符号化復号回路として適用したときの構成例を示すブロック図である。
【０１０６】
図15に示されるように、符号化復号装置801は、A/D変換回路811、画面並び替え回路812、演算回路813、DCT直交変換回路814、Q量子化回路815、符号化制御回路816、符号化復号回路817、ビットストリーム格納バッファ818、iQ逆量子化回路819、iDCT逆直交変換回路820、演算回路821、デブロッキングフィルタ822、フレームメモリ823、動き予測・補償回路824、復号制御回路825、および画像読み出し回路826を有する。
【０１０７】
原画像信号850を符号化する場合、A/D変換回路811は、入力される原画像信号をデジタル信号に変換し、画面並び替え回路812に供給する（矢印851）。画面並び替え回路812は、そのデジタル画像信号をピクチャ単位で所望の順に並び替える。
【０１０８】
Iピクチャの場合、順番を並び替えられた画像（ピクチャ単位の画像信号）は、DCT直交変換回路814に供給される。PピクチャやBピクチャの場合、動き予測・補償回路824は、フレームメモリ823から参照画像（ピクチャ単位の画像信号）を読み出し（矢印863）、原画像（ピクチャ単位の画像信号）を用いて（矢印864）動き予測を行い、得られた予測画像を演算回路813に供給する（矢印865）。演算回路813は、その予測画像と原画像の差分を求め、その差分画像をDCT直交変換回路814に供給する。
【０１０９】
DCT直交変換回路814は、供給された画像データを直交変換し、DCT係数をQ量子化回路815に供給する（矢印852）。Q量子化回路815は、符号化制御回路816により制御された量子化スケールでDCT係数を量子化し、その量子化されたDCT係数を符号化復号回路817およびiQ逆量子化回路819に供給する（矢印855）。
【０１１０】
符号化復号回路817は、Q量子化回路815より供給されたDCT係数を符号化してコードストリームを生成し、それをビットストリーム格納バッファ818に格納させる（矢印856）。この符号化復号回路817には、図10に示される本発明の符号化復号装置500が部分回路として適用される。従って、符号化復号装置801は、この符号化復号回路817において、符号化に関する構成と復号に関する構成とで、二値を格納するバッファ等を共有し、回路規模を低減させ、製造コストや運用コストを低減させることができる。なお、符号化復号装置801は、符号化復号回路817として符号化復号装置500を用いることにより、二値のバッファリングに使用するメモリの量も低減させることができる。
【０１１１】
ビットストリーム格納バッファ818に格納されたコードストリームは、画像データとして所定のタイミングで符号化復号装置801の外部に出力される（矢印857）。
【０１１２】
なお、iQ逆量子化回路819に供給されたDCT係数は、iQ逆量子化回路819により逆量子化され、iDCT直交変換回路820により逆直交変換され、演算回路821に供給されて（矢印861）、演算回路821において参照画像（矢印892）と足し合わせされ、デブロッキングフィルタ822において、フィルタ処理が行われた後、参照画像としてフレームメモリ823に供給されて格納される（矢印862）。
【０１１３】
コードストリームである画像データ（矢印857）を復号する場合、復号制御回路825は、ビットストリーム格納バッファ818を制御して、画像データ（矢印857）を一時的に格納させ、所定のタイミングで符号化復号回路817に供給させる（矢印856）。
【０１１４】
符号化復号回路817は、ビットストリーム格納バッファ818より供給されるコードストリームを復号してDCT係数を生成し、それをiQ逆量子化回路819に供給する。また、符号化復号回路817は、復号化された動きベクトルを動き予測・補償回路824に供給する（矢印866）。この動きベクトルは、参照画像863の読み出しに用いられる。
【０１１５】
動き予測・補償回路824により読み出された参照画像は演算回路821に供給され（矢印892）、その演算回路821において、符号化復号回路817により復号され、iQ逆量子化回路819により逆量子化され、iDCT逆直交変換回路820により逆直交変換された差分画素値と足し合わせされる。足し合わせされた画像は、デブロッキングフィルタ821においてフィルタリングされた後、直接、またはフレームメモリ823に一時的に保持された後、画像読み出し回路826より読み出され（矢印893および矢印894）、復号画像信号として符号化復号装置801の外部に出力される（矢印895）。
【０１１６】
以上のように、図10の符号化復号装置500は、例えば、MPEG（Moving Picture Experts Group）方式等を採用する一般的な符号化復号装置に適用することができる。ただし、図10の符号化復号装置500を適用可能な装置は、符号化処理と復号処理を同時に行わない装置に限定される。
【０１１７】
なお、このように、一般的な画像データの符号化復号装置において復号された画像データは、モニタ等に供給されてその画像が表示されることもある。一般的な画像表示装置（モニタ）は、例えば、1/30秒や、1/60秒等のような一定時間毎に画像（ピクチャ）を出力する事により動画像を表示する。このような動画像表示を途切れなく継続させるためには、例えば、画像表示装置に記憶部を設けてデータをバッファリングさせるようにする方法があるが、この場合、画像表示に遅延が生じたり、バッファメモリの容量が増大することにより製造コストが増大したりする恐れがある。
【０１１８】
そこで、符号化復号装置が画像表示装置の画像表示レートと同じ速さ（レート）で画像データを画像表示装置に供給させるようにしてもよい。つまり、図10の符号化復号装置500がコードストリームを復号して画像データを出力するときのレートを画像表示装置の画像表示レートに対応させるようにしてもよい。
【０１１９】
図16は、このような場合の符号化復号装置500による復号処理に関する各種処理のタイミングの関係を示す図である。
【０１２０】
符号化復号装置500は、上述したように、算術演算部412における算術演算処理901の、各ピクチャに対する処理時間の長さは、I2，B0，およびB1として示されるように、一定ではないので、二値格納バッファ513における各ピクチャの格納開始タイミングは、矢印911乃至矢印914に示されるように、一定周期ではない。しかしながら、二値格納バッファ513は、これらのデータを一次的に保持することにより、そのタイミングの差を吸収し、各ピクチャのデータを一定周期で出力させることができる。
【０１２１】
そして、二値格納バッファ513より後段の処理は、一定時間内に処理を終了させることができ、パイプライン処理も可能になる。そこで、符号化復号装置500の二値解読部514は、シンタックス要素化部414や係数復号部416の処理時間や、それ以降の段の、その他の処理時間を考慮し、画像表示装置の表示タイミングに応じたタイミング、二値格納バッファ513に格納されたデータを読み出すようにしてもよい。
【０１２２】
例えば、図11の符号化復号回路817（すなわち、図10の符号化復号装置500）のシンタックス要素化部414の処理から、図11のデブロッキングフィルタ822の処理までは、パイプライン化が可能なため、一定時間内に画像データの出力が可能である。従って、このような場合、二値格納バッファ513のデータ読み出しタイミングを、画像表示タイミングに対応させることができる。
【０１２３】
図16を参照してより具体的な例を説明する。まず、算術演算処理901では、I2ピクチャの算術演算を行い、タイミング911において二値格納バッファ513への二値の書き込みを開始する。書き込まれた二値は、二値バッファ内のフレーム902のI2ピクチャとして保持される。書き込まれる二値量および、そのバッファサイズはCABAC処理部における算術演算部の処理のジッタを吸収するのに十分な量が必要になる。その後保持されたI2ピクチャは、シンタックス要素化以降のデコード処理903にてデコード処理される。I2ピクチャのデコード処理完了後（タイミング921）、二値バッファ内のフレーム902のI2ピクチャは不要となる。デコードされたI2ピクチャは、デコード完了後も参照に必要なフレーム904として保持される必要がある。保持されたI2ピクチャは、次にデコードされたB0ピクチャに参照される。また、保持されたI2ピクチャは、表示画像905として、必要なタイミング（タイミング933）で読み出されI2ピクチャとして出力（表示）される。
【０１２４】
同様にして、算術演算処理901後のB0ピクチャは、二値バッファ内のフレーム902のB0ピクチャとして保持される。その後保持されたB0ピクチャは、シンタックス要素化以降のデコード処理903にてデコード処理される。B0ピクチャのデコード処理完了後のタイミング922において、二値バッファ内のフレーム902のB0ピクチャは不要となる。B0ピクチャは、非参照フレームであるため、参照に必要なフレーム904に保持しておく必要がなく、復号終了タイミング（タイミング931）より、表示画像905のB0ピクチャとして出力可能である。
【０１２５】
図11の符号化復号回路817（すなわち、図10の符号化復号装置500）のシンタックス要素化部414からデブロッキングフィルタ822の処理までは、パイプラインで動作し、そのデブロッキングフィルタ822の出力は、フレームメモリ823若しくは画像読み出し回路826に供給させることができる。つまり、画像データは、フレームメモリ823に一時的に格納させた後、画像読み出し回路826を介して復号画像信号として出力させるようにしてもよいし、フレームメモリ823を介さずに、画像読み出し回路826を介して出力させるようにしてもよい。
【０１２６】
この場合の、符号化復号装置500による復号処理の流れの例を図17のフローチャートを参照して説明する。
【０１２７】
復号処理が開始されると、各部は、図12のステップS21乃至ステップS25の場合と同様に、ステップS61乃至ステップS65各処理を行い、可変長二値を二値格納バッファ513に蓄積する。二値解読部514は、ステップS66において、画像表示タイミングに応じたタイミングで可変長二値を読み出し、ステップS67において、読み出した可変長二値を解読してシンタックス毎の二値を生成する。
【０１２８】
シンタックス要素化部414は、ステップS68において、二値をシンタックス要素化し、係数復号部416は、ステップS69において、係数復号を行い、DCT係数を生成して出力し、復号処理を終了する。
【０１２９】
以上のように、二値格納バッファ513より二値を、後段の処理タイミングに応じた所定のタイミングで（定期的に）読み出すことにより、それ以降の処理においてバッファリングを行う必要が無く、後段のバッファメモリを省略することができる。
【０１３０】
また、換言すれば、符号化復号装置500の二値格納バッファ513を利用して、二値データで画像データを保持しておく事が可能であり、また、二値の復号後は一定時間内に画像データの出力が可能である事から、二値のバッファリングで復号時間の伸張を吸収し、復号画像信号の定期出力が可能となる。二値データは、画素データを圧縮したデータであるため、復号後の画像データと比べデータ量が少ない。このため、用意すべきフレームメモリのメモリ量を減らす事が可能である。
【０１３１】
なお、二値データの代わりに、シンタックス要素をバッファリングするようにしてもよい。
【０１３２】
以上のように、本発明の符号化復号装置においては、中間データである二値の格納バッファと、解読部を符号化処理と復号処理の両方で共有することにより、回路量を減らし、コストを低減させることができる。また、固定長の有意係数フラグを格納することにより、解読処理を高速に行う事ができる。さらに、定期的な画像表示タイミングに合わせて、二値格納バッファされている、中間データである二値データを読み出すことにより、二値格納バッファによる二値データのバッファリングを、フレームバッファによる画像データのバッファリングの代わりとして利用することができ、用意すべきフレームバッファを減らすことができる。
【０１３３】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、図18に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【０１３４】
図18において、パーソナルコンピュータ1000のCPU（Central Processing Unit）1001は、ROM（Read Only Memory）1002に記憶されているプログラム、または記憶部1013からRAM（Random Access Memory）1003にロードされたプログラムに従って各種の処理を実行する。RAM1003にはまた、CPU1001が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１３５】
CPU1001、ROM1002、およびRAM1003は、バス1004を介して相互に接続されている。このバス1004にはまた、入出力インタフェース1010も接続されている。
【０１３６】
入出力インタフェース1010には、キーボード、マウスなどよりなる入力部1011、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部1012、ハードディスクなどより構成される記憶部1013、モデムなどより構成される通信部1014が接続されている。通信部1014は、インターネットを含むネットワークを介しての通信処理を行う。
【０１３７】
入出力インタフェース1010にはまた、必要に応じてドライブ1015が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア1021が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部1013にインストールされる。
【０１３８】
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０１３９】
この記録媒体は、例えば、図18に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc - Read Only Memory）,DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini-Disk（登録商標））を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア1021により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM1002や、記憶部1013に含まれるハードディスクなどで構成される。
【０１４０】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１４１】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表わすものである。
【０１４２】
なお、以上において、1つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて1つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。
【産業上の利用可能性】
【０１４３】
本発明は、符号化処理と復号処理を同時に実行しない符号化復号装置に適用することが可能である。
【図面の簡単な説明】
【０１４４】
【図１】従来の符号化装置の構成例を示すブロック図である。
【図２】符号化処理をパイプライン化した場合のタイミングの例を示す図である。
【図３】従来の復号装置の構成例を示すブロック図である。
【図４】復号処理をパイプライン化した場合のタイミングの例を示す図である。
【図５】従来の符号化装置の、他の構成例を示すブロック図である。
【図６】符号化処理をパイプライン化した場合のタイミングの、他の例を示す図である。
【図７】従来の復号装置の、他の構成例を示すブロック図である。
【図８】復号処理をパイプライン化した場合のタイミングの、他の例を示す図である。
【図９】従来の符号化復号装置の構成例を示すブロック図である。
【図１０】本発明を適用した符号化復号装置の構成例を示すブロック図である。
【図１１】符号化処理の流れの例を説明するフローチャートである。
【図１２】復号処理の流れの例を説明するフローチャートである。
【図１３】可変長二値の構成例を説明する模式図である。
【図１４】復号処理の流れの、他の例を説明するフローチャートである。
【図１５】図10の符号化復号装置を適用した符号化復号装置の構成例を示すブロック図である。
【図１６】復号処理のタイミングの例を示す図である。
【図１７】復号処理の流れの、さらに他の例を説明するフローチャートである。
【図１８】本発明を適用したパーソナルコンピュータの構成例を示すブロック図である。
【符号の説明】
【０１４５】
500  符号化復号装置，  501  係数符号化部，  511  符号化・復号選択部，  512  二値連結部，  513  二値格納バッファ，  514  二値解読部，  605  可変長二値，  801  符号化復号装置，  817  符号化復号回路
【図１】
2008113348.tif 000003
【図２】
2008113348.tif 000004
【図３】
2008113348.tif 000005
【図４】
2008113348.tif 000006
【図５】
2008113348.tif 000007
【図６】
2008113348.tif 000008
【図７】
2008113348.tif 000009
【図８】
2008113348.tif 000010
【図９】
2008113348.tif 000011
【図１０】
2008113348.tif 000012
【図１１】
2008113348.tif 000013
【図１２】
2008113348.tif 000014
【図１３】
2008113348.tif 000015
【図１４】
2008113348.tif 000016
【図１５】
2008113348.tif 000017
【図１６】
2008113348.tif 000018
【図１７】
2008113348.tif 000019
【図１８】
2008113348.tif 000020