(57)【要約】【課題】処理サイクルの少ない高速な符号化エンコードの実現【解決手段】量子化された量子化離散コサイン変換係数（量子化ＤＣＴ係数）を記憶する第１の記憶手段（量子化係数バッファ）においては、マクロブロックを構成するｎ個のブロックに対して（ｎ＋１）個以上の記憶領域（DC/AC-Bank）を設け、この記憶領域が順次用いられることで第１の記憶手段がリングバッファとして使用できるようにする。また、各ブロックについてのＡＣ成分予測誤差（ＡＣ予測値）を記憶する第２の記憶手段（ＡＣ予測値バッファ）も備えるようにし、さらにその第２の記憶手段についても（ｎ＋１）個以上の記憶領域（AC-Bank）を設け、この記憶領域が順次用いられることで第２の記憶手段もリングバッファとして使用できるようにする。その上で、或るブロックの量子化離散コサイン変換係数を上記第１の記憶手段に記憶させる期間において、該ブロックについてのＡＣ成分予測誤差演算を行い、上記第２の記憶手段に記憶させる処理を行う。【選択図】      図３
2005123783.tif 000002
【特許請求の範囲】
【請求項１】
輝度成分及び色差成分から構成されるｎ個のブロックによってマクロブロックが形成される画像データに対して、離散コサイン変換、離散コサイン変換係数の量子化、及び可変長符号化を行う符号化装置において、
（ｎ＋１）個以上の記憶領域が設けられ、各記憶領域へ各ブロックの量子化離散コサイン変換係数が順次格納される第１の記憶手段と、
（ｎ＋１）個以上の記憶領域が設けられ、各記憶領域へ各ブロックのＡＣ成分予測誤差が順次格納される第２の記憶手段と、
或るブロックの量子化離散コサイン変換係数を上記第１の記憶手段に記憶させる期間において、該ブロックについてのＡＣ成分予測誤差演算を行い、上記第２の記憶手段に算出された該ＡＣ成分予測誤差を記憶させるＡＣ予測演算手段と、
上記マクロブロックに含まれる全ブロックのＡＣ成分予測誤差を用いて該ＡＣ成分予測の有効／無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記ＡＣ成分予測誤差を、該判別結果に基づいて上記第１，第２の記憶手段から読み出す読出制御手段と、
を備えたことを特徴とする符号化装置。
【請求項２】
輝度成分及び色差成分から構成されるｎ個のブロックによってマクロブロックが形成される画像データに対して、ブロック単位で順次離散コサイン変換を行う離散コサイン変換ステップと、
離散コサイン変換により得られた離散コサイン変換係数を量子化する量子化ステップと、
上記量子化された量子化離散コサイン変換係数を、（ｎ＋１）個以上の記憶領域が設けられた第１の記憶手段の上記記憶領域毎に順次記憶する第１の記憶ステップと、
上記第１の記憶ステップと並行して、順次各ブロックについてのＡＣ成分予測誤差演算を行い、得られたＡＣ成分予測誤差を、（ｎ＋１）個以上の記憶領域が設けられた第２の記憶手段の上記記憶領域毎に順次記憶する第２の記憶ステップと、
上記マクロブロックに含まれる全ブロックのＡＣ成分予測誤差を用いて該ＡＣ成分予測の有効／無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記ＡＣ成分予測誤差を、該判別結果に基づいて上記第１，第２の記憶手段から読み出す読み出しステップと、
上記読み出しステップで読み出された上記量子化離散コサイン変換係数及び上記ＡＣ成分予測誤差を用いて可変長符号化処理を行う可変長符号化ステップと、
を有することを特徴とする符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置及び符号化方法に関し、特に、動画像データを光磁気ディスクや磁気テープ等の記録媒体に記録したり、テレビ会議システム、テレビ電話システム、放送用機器、マルチメディアデータベース検索システム等のように伝送路を介して送信側から受信側に動画像データを伝送する機器などにおいて好適な符号化装置及び符号化方法に関する。
【背景技術】
【０００２】
【特許文献１】特開２０００−２３１９３号公報
【０００３】
例えば、テレビ会議システム、テレビ電話システム等のように動画像データを伝送するシステムでは、伝送路を効率よく利用するために、画像のライン相関やフレーム間相関を利用して画像データを圧縮符号化している。
動画像の高能率符号化方式には、代表的なものとしてＭＰＥＧ（Moving Picture Experts Group）方式がある。ＭＰＥＧ方式は、蓄積用動画像符号化方式である。これは、ＩＳＯ−ＩＥＣ／ＪＴＣ１／ＳＣ２／ＷＧ１１において議論され、標準案として提案されたものであり、動き補償予測符号化とＤＣＴ（Discrete Cosine Transform）符号化を組み合わせたハイブリッド方式が採用されている。
ＭＰＥＧでは、様々なアプリケーションや機能に対応するために、幾つかのプロファイル及びレベルが定義されている。最も基本的なものがメインプロファイルレベル（ＭＰ  ＠ＭＬ：Main Profile at Main Level）である。
【０００４】
また現在では、画像を構成する物体（オブジェクト）毎のシーケンスであるビデオオブジェクト（ＶＯ：Video Object）単位で符号化を行うＭＰＥＧ４方式がＩＳＯ−ＩＥＣ／ＪＴＣ１／ＳＣ２９／ＷＧ１１において標準化されている。
ＭＰＥＧ４方式は、従来の映像／オーディオ信号の圧縮符号化に加え、静止画、ＣＧ（コンピュータグラフィクス）画像、分析合成系の音声符号化、ＭＩＤＩ（Musical Instrument Data Interface）等による合成オーディオやテキストも含めた総合マルチメディアの符号化規格を目指したものである。
【０００５】
ＭＰＥＧ４方式では、基本的に符号化／復号化できる画像として、４：２：０フォーマットとよばれる画像フォーマットのみが規定されている。
この４：２：０フォーマットは、輝度Ｙの走査２本、水平方向の２画素に対して、色差Ｃｒ、Ｃｂがそれぞれ１画素ずつで割り当てられる画像フォーマット（すなわち、輝度Ｙの４画素に対して色差Ｃｒ、Ｃｂがそれぞれ１画素ずつ割り当てられる。）であり、その色差Ｃｒ、Ｃｂの位置は、輝度Ｙに対して同位置に存在する。
４：２：０フォーマットのブロックは、輝度又は色差毎の隣り合った、例えば８画素×８ラインから構成される。ＤＣＴ（離散コサイン変換）は、この単位で実行される。マクロブロックは、例えば、画像フォーマットがいわゆる４：２：０コンポーネントディジタル信号である場合、上下左右に隣り合った４つの輝度Ｙのブロックと、画像上では同じ位置に当たる色差Ｃｂ、Ｃｒそれぞれのブロック全部で６つのブロックで構成される。すなわち、ＭＰＥＧ４方式では、４：２：０フォーマットのマクロブロックが符号化復号画像として定義されている。
ＭＰＥＧ４方式の画像符号化におけるＤＣＴ係数の差分値の算出方法は、本願出願人等によって開示されている（例えば、上記特許文献１参照）。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
公知の通り、ＭＰＥＧ２ではイントラブロックのＤＣ成分だけを差分符号化するが、ＭＰＥＧ４では量子化されたＤＣ成分とＡＣ成分の両方に対して適応的に予測符号化することによってイントラブロックの符号化効率の改善を図っている。
ＤＣ成分の予測値は、対象となるブロックの周辺に隣接するブロック間の水平および垂直方向のＤＣ成分の勾配によって適応的に選択される。
【０００７】
図７は対象となるブロックＸと、その周辺においてそれぞれ左、左上、上の各方向に隣接するブロックＡ，Ｂ，Ｃを示している。各ブロックの格子はＤＣＴ係数を表す。
図示するようにブロックＡのＤＣＴ係数FA[0][0]、ブロックＢのＤＣＴ係数FB[0][0]、ブロックＣのＤＣＴ係数FC[0][0]を考える。これらの値は逆量子化されたＤＣＴ係数値であり、これらの値を用いてブロックＸのＤＣ成分に対する予測値δｐを式１により決定する。
［式１］
if (｜FA[0][0]−FB[0][0]｜＜｜FB[0][0]−FC[0][0]｜)
δp = FC[0][0]
else
δp = FA[0][0]
【０００８】
この式は、FA[0][0]とFB[0][0]の差の絶対値（ΔＶＳ）と、FB[0][0]とFC[0][0]の差の絶対値（ΔＨＳ）とを比較し、FA[0][0]とFB[0][0]の差の絶対値（ΔＶＳ）の方が小さい場合には、縦方向に相関が強いので、ブロックＸに対してブロックＣを予測ブロックとし、一方、FB[0][0]とFC[0][0]の差の絶対値（ΔＨＳ）の方が小さい場合には、横方向の相関が強いのでブロックＸに対してブロックＡを予測ブロックとして予測値δｐを決定することを表している。
【０００９】
このようにして決定した予測値を用いて次の式２のように予測誤差Δｘを求める。
［式２］
Δx = δx−δp ／dc_scaler
ここでδxはブロックＸの量子化されたＤＣ成分、dc_scalerはブロックＸの量子化ステップである。予測誤差ΔｘはＭＰＥＧ２と同じ方法で可変長符号化する。
【００１０】
ＡＣ成分の予測は、ＤＣ成分予測で決定したブロックを参照して行う。すなわち、ブロックＡを用いてＤＣ成分を予測する場合、図８（ｂ）のように、ブロックＡの垂直第一列のＡＣ係数を予測値とする。また、ブロックＣを用いてＤＣ成分を予測場合、図８（ａ）のようにブロックＣの水平第一行のＡＣ係数を予測値とする。
【００１１】
ところでＡＣ成分の予測誤差は、予測しないＡＣ成分より値が大きい場合がある。そのためマクロブロック毎に１ビットのフラグを使って、ＡＣ成分予測を有効または無効にすることが出来るようにされている。即ち、マクロブロックに含まれるすべてのブロック成分について予測前のＡＣ成分（第一列または第一行）の絶対値和と、ＡＣ成分の予測誤差の絶対値和を比較し、予測誤差の絶対値和が予測前の絶対値和より小さい場合を有効とする。
ところがこのため、ＡＣ成分予測はマクロブロック内のすべてのブロックをＡＣ予測し、絶対値和を比較するまでは次のステップである可変長符号化には移れない。また可変長符号化ブロックがバッファ内のＤＣＴ係数を読み出す前に、次のマクロブロックのＤＣＴ係数を書き込むことは出来ない。したがって、パイプライン処理を行うことが難しく、トータルでの処理サイクル数が増大してしまう。
このことを図９、図１０、図１１を用いて説明する。
【００１２】
まず図９では、一般的なＭＰＥＧ４の符号化装置１の構成例を説明する。これは入力した画像データをＭＰＥＧ４方式、Ｈ．２６３等の規格に準拠した方式で符号化できるエンコーダであり、この符号化装置１で符号化して得られたビットストリームは、多重化されて、例えば、地上波や衛星回線、ＣＡＴＶ網等の伝送路を介して伝送される。或いは、磁気ディスク、光磁気ディスク、光ディスク、磁気テープ、その他の記録媒体に記録される。
【００１３】
符号化すべき入力画像信号（動画像データ）は、まず、前画像処理部１１に入力される。前画像処理部１１は、図示しないが、ＶＯ（Video Object）構成部とＶＯＰ（Video Object Plane）構成部とを有し、入力される画像を構成するオブジェクト毎に、このシーケンスであるＶＯを構成し、ＶＯＰを構成している。
ＭＰＥＧ４では、自然画像をＶＯと呼んでいる。ＶＯには矩形形状のＶＯと任意形状のＶＯがある。そしてＶＯは所定の時刻で撮像した複数のＶＯＰから構成される。このＶＯＰがＭＰＥＧ４で扱う映像データの基本単位である。矩形形状の場合、ＶＯＰはＭＰＥＧ１やＭＰＥＧ２のフレーム又はフィールドに相当する。
【００１４】
前画像処理部１１では、具体的には、例えば、符号化すべき画像データが独立した背景のシーケンスと前景のシーケンスとから構成されている場合、ＶＯ構成部は、例えば、背景のシーケンスをＶＯ１としてＶＯＰ構成部に出力するとともに前景のシーケンスをＶＯ２としてＶＯＰ構成部に出力する。
ＶＯ構成部は、符号化すべき画像データが、例えば背景と前景とが既に合成されたものである場合、所定のアルゴリズムにしたがって、この画像を領域分割することにより、背景と前景とを取り出し、それぞれのシーケンスとしてのＶＯを対応するＶＯＰ構成部に出力する。
ＶＯＰ構成部は、ＶＯ構成部で出力された各フレームからオブジェクトを抽出し、この抽出されたオブジェクト（物体）を囲む最小の長方形をＶＯＰとする。このとき、ＶＯＰ構成部では、横及び縦の画素数が１６の倍数になるようにＶＯＰを構成する。ＶＯＰ構成部は、このＶＯＰを後段の動き検出、動き補償、ＤＣＴ回路等に供給する。また、ＶＯＰ構成部は、ＶＯＰの大きさ（例えば、横及び縦の長さ）を表すサイズデータ（VOP_size）と、フレームにおけるＶＯＰの位置（例えば、フレームの最も左上を原点とするときの座標）を表すオフセットデータ（VOP_offset）とを検出し、これらのデータも後段の各回路に供給する。
【００１５】
入力画像信号（動画像データ）は、フレームメモリ１２に供給されて、ＶＯＰとして記憶される。
動き検出及び動き補償部１３では、フレームメモリ１２に記憶されたＶＯＰに対してマクロブロック単位で動きベクトルを検出する。すなわち、上述したように、ＶＯＰは時刻（フレーム）によって大きさや位置が変化するため、この動きベクトルの検出に当たっては、検出のための基準となる座標系を設定し、座標系における動きを検出する必要がある。そこで、動き検出及び動き補償部１３では、上述の絶対座標系を基準座標系とし、サイズデータ（ＦＳＺ＿Ｂ）及びオフセットデータ（ＦＰＯＳ＿Ｂ）にしたがって、この絶対座標系に符号化対象のＶＯＰ及び参照画像とするＶＯＰを配置して動きベクトルを検出する。
なお、検出された動きベクトル（ＭＶ）は、予測モードとともに後段のＶＬＣ器２２、量子化器１６、逆量子化器１８、ＤＣＴ係数差分化器１７等に供給される。
【００１６】
演算器１４には、動き検出及び動き補償部１３によってフレームメモリ１２から読み出された画像データと同一のマクロブロックデータが供給される。演算器１４では、マクロブロックと動き検出及び動き補償部１３での予測画像との差分を演算する。
この差分値は、ＤＣＴ器１５に送られる。
動き検出及び動き補償部１３は、予測モードがイントラ符号化モードである場合には予測画像を出力しない。この場合、演算器１４は、特に処理を行わず、フレームメモリ１２から読み出したマクロブロックデータをそのままＤＣＴ器１５に出力する。
【００１７】
ＤＣＴ器１５は、演算器１４の出力データに対して、８画素×８ラインからなるブロック単位でＤＣＴ処理を施し、このＤＣＴ処理の結果得られるＤＣＴ係数を量子化器１６に供給する。
量子化器１６は、入力されたＤＣＴ係数を量子化する。即ちＤＣＴ器１５で得られた係数を或る値で割算して小さい値の係数で表現することによって符号化量を減らす処理を行う。そしてこの量子化処理で得られた量子化データをＤＣＴ係数差分化器１７及び逆量子化器１８に送る。
【００１８】
逆量子化器１８は、量子化器１６から入力された８画素×８ラインの量子化されたＤＣＴ係数を量子化し、ＩＤＣＴ器１９に送る。
ＩＤＣＴ器１９は、逆量子化器１８より逆量子化されたＤＣＴ係数を受け取り、ＩＤＣＴ処理して演算器２０に出力する。
【００１９】
演算器２０には、ＩＤＣＴ器１９の出力データのほか、動き検出及び動き補償部１３から演算器１４に供給されている予測画像と同一のデータが供給されている。演算器２０は、ＩＤＣＴ器１９から出力される予測残差（差分データ）と、動き検出及び動き補償部１３からの予測画像データとを加算することで、もとの画像データを局所復号し、この局所復号した画像データ（以下、局所復号画像データと記す。）を出力する。ただし、予測モードがイントラ符号化である場合、ＩＤＣＴ器１９の出力データは、演算器２０をスルーして、そのまま局所復号画像データとしてフレームメモリ２１に供給される。この復号画像データは、受信側で得られる復号画像データと同一である。
【００２０】
なお、この画像信号処理装置１では、ＭＰＥＧ４方式の場合、演算器２０において得られた局所復号画像データは、テキスチャ（texture）情報としてパディング処理される。一方、形状情報（キー信号）、入力されたサイズデータ（ＦＳＺ＿Ｂ）、オフセットデータ（ＦＰＯＳ＿Ｂ）、ＶＯＰのサイズデータ（ＶＯＰ＿size）、ＯＰのオフセットデータ（ＶＯＰ＿offset）及び動きベクトル検出器１０２より出力された動きベクトルと予測モードは、ＭＰＥＧ４方式のビジュアルコミッティドラフト（Visual Committe draft）にある記述にしたがって、この形状情報の符号化に用いられる。符号化された形状情報は、局所復号化され、局所復号化されたデータは、色差情報作成及びパディング処理に用いられるほか、ＤＣＴ係数差分化器１７、ＶＬＣ器２２へ送られる。
【００２１】
上述したように、入力された画像データは、フレームメモリ１２に格納され、基本単位である１６画素×１６ラインからなるマクロブロックに分割され処理される。
ＭＰＥＧ４方式では４：２：０フォーマットのみが規定されているが、この４：２：０フォーマットでは、１マクロブロックは、８ライン×８画素で構成されるブロックとして、４つの輝度成分のブロックＹ０，Ｙ１，Ｙ２，Ｙ３と、２つの色差成分のブロックＣｂ、Ｃｒとで構成されている。
このようなマクロブロックに対し、離散コサイン変換を施して量子化する。量子化されたＤＣＴ係数にＶＬＣ（Variable Length Code）とよばれる可変長符号化を施す。これがイントラ符号化である。
一方、符号化の対象となるピクチャに対して、時間的に隣接する別のピクチャから動き検出とよばれる方法でブロックマッチングが最も小さい予測ブロックを取得し、この予測ブロックと参照マクロブロック（カレントマクロブロック）との差分を求め、この差分値に対してＤＣＴ、量子化、可変長符号化を行う。これがインター符号化である。
特に、ＭＰＥＧ４方式では、ＤＣＴ係数差分化器１７でイントラ符号化を行う際、上記図７，図８で説明したように、ＤＣＴ係数のＤＣ成分及び一部のＡＣ成分に対して予測を行い、そのＤＣＴ係数の差分値を符号化し効率の改善を図っている。
【００２２】
図１０は、ＤＣＴ器１５，量子化器１６、ＤＣＴ係数差分化器１７の構成をより詳しく示したものである。また図１１には図１０の構成によって行われる処理タイミングを示している。
図９に示した演算器１４から図１０のＤＣＴ器１５には、１マクロブロックにつき、ブロックＹ０，Ｙ１，Ｙ２，Ｙ３，Ｃｂ，Ｃｒが順次入力され２次元（水平及び垂直）ＤＣＴ処理される。即ちこれらのブロックは１ｓｔＤＣＴ部３１で処理された後、バッファ３２（DCT Bank0、DCT Bank1）にバッファリングされ、さらに２ｎｄＤＣＴ部３３で処理される。
例えば図１１に示すように、タイミングＴ１では、入力されたブロックＹ０が１ｓｔＤＣＴ処理され、DCT Bank0に書き込まれる。次にタイミングＴ２では、入力されたブロックＹ１が１ｓｔＤＣＴ処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックＹ０が読み出され、２ｎｄＤＣＴ処理される。さらに次にタイミングＴ３では、入力されたブロックＹ２が１ｓｔＤＣＴ処理され、DCT Bank0に書き込まれる。このときDCT Bank1からはブロックＹ１が読み出され、２ｎｄＤＣＴ処理される。バッファ３２のDCT Bank0、DCT Bank1は、このように交互に使用される。
【００２３】
ＤＣＴ器１５の出力は量子化器１６において、量子化回路４１で量子化され、量子化係数バッファ４２にバッファリングされる。量子化係数バッファ４２には、１マクロブロック分のバッファリングを行うため、６つのブロックにそれぞれ対応するDC/AC-Bank0〜DC/AC-Bank5が設けられている。量子化された各ブロックのＤＣＴ係数は、それぞれDC/AC-Bank0〜DC/AC-Bank5に格納される。
即ち図１１のタイミングＴ２では、ブロックＹ０が２ｎｄＤＣＴ処理された後、ブロックを構成する６４個のＤＣＴ係数が量子化されるが、量子化処理された各ＤＣＴ係数がDC/AC-Bank0に書き込まれていくことになる。なお、図１１において「ＷＲ」は量子化係数バッファ４２への書込、「ＲＤ」は量子化係数バッファ４２からの読出を示している。
またタイミングＴ３では、量子化回路４１は２ｎｄＤＣＴ処理された後のブロックＹ１のデータの量子化を行うことになり、この場合、量子化処理された各ＤＣＴ係数はDC/AC-Bank1に書き込まれていく。
以降同様に、各ブロックＹ２、Ｙ３、Ｃｂ、Ｃｒが、図示するように順次処理され、それらの量子化されたＤＣＴ係数が、DC/AC-Bank2、DC/AC-Bank3、DC/AC-Bank4、DC/AC-Bank5に書き込まれていくことになる。
【００２４】
タイミングＴ８においては、１マクロブロックを構成する各ブロックのＤＣＴ係数が量子化係数バッファ４２のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となる。
そこでタイミングＴ８においては、ｔ１期間においてDC/AC-Bank0〜DC/AC-Bank5に確保された量子化ＤＣＴ係数値が読み出されてＤＣＴ係数差分化器１７の差分化回路５１に供給される。差分化回路５１では、逆量子化回路５３によって得られるＤＣＴ係数値を用いて、図１１のｔ２期間において予測演算及び予測方向の決定が行われる。
つまり上述したように予測ブロックの決定、ＤＣ成分及びＡＣ成分の予測誤差の算出、さらにはＡＣ成分予測の有効／無効判別を行うものとなる。
【００２５】
ここで、このような処理をｔ２期間に行うのは、上述のように、ＡＣ成分予測の有効／無効判別が、マクロブロックに含まれるすべてのブロック成分について予測前のＡＣ成分（第一列または第一行）の絶対値和と、ＡＣ成分の予測誤差の絶対値和を比較して行われるためである。換言すれば、ＡＣ成分予測の有効／無効判別は、１マクロブロックを構成する各ブロックのＤＣＴ係数が量子化係数バッファ４２のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となった時点で可能となるためである。
そして、ＡＣ成分予測の有効／無効判別結果に応じて、各ブロックのデータがＶＬＣ器２２に供給され、可変長符号化される。
例えばタイミングＴ９においては、もしＡＣ成分予測が有効とされれば、ブロックＹ０の６４個のデータのうちに、差分化回路５１で算出されたＡＣ成分の予測誤差としての７個のデータが含まれることになるように、量子化係数バッファ４２のDC/AC-Bank0からの出力と差分化回路５１の出力がマルチプレクサ５２によって順次選択されてＶＬＣ器２２に供給され、可変長符号化される。もしＡＣ成分予測が無効とされれば、差分化回路５１で算出されたＡＣ成分の予測誤差は用いられず、マルチプレクサ５２によってDC/AC-Bank0から読み出されるデータ、即ち予測しないＡＣ成分のデータが選択されて、ＶＬＣ器２２で可変長符号化されることになる。
【００２６】
また図示するように、タイミングＴ１０では、ブロックＹ１についてDC/AC-Bank1から読み出されるデータと、差分化回路５１で算出されたＤＣ成分及びＡＣ成分の予測誤差とが、ＡＣ成分予測の有効／無効判別結果に応じて選択され、ＶＬＣ器２２に供給される。同様にタイミングＴ１１，Ｔ１２・・・では、順次ブロックＹ２，Ｙ３，Ｃｂ，Ｃｒについて処理される。
【００２７】
ここで、この一連の処理を考えた場合、次のマクロブロックのＤＣＴ処理は、タイミングＴ９から開始しなければならないことになる。タイミングＴ９では、１ｓｔＤＣＴ処理として、次のマクロブロックの先頭ブロックＹ０の処理が行われることを実線で示している。タイミングＴ９から次のマクロブロックの処理を開始しなければならないのは、もし破線で示すようにタイミングＴ８から開始させると、量子化係数バッファ４２にオーバーライトが発生する可能性があるためである。
タイミングＴ８で次のマクロブロックのブロックＹ０のＤＣＴ処理を開始したと仮定すると、そのブロックＹ０の量子化ＤＣＴ係数を量子化係数バッファ４２のDC/AC-Bank0に書き込むのは、これも破線で示すようにタイミングＴ９〜Ｔ１０の間の期間となる。
ところがタイミングＴ９からは、先のマクロブロックのブロックＹ０の量子化ＤＣＴ係数をDC/AC-Bank0から読み出してＶＬＣ器２２に転送している。
このためDC/AC-Bank0において、先のマクロブロックのブロックＹ０の量子化ＤＣＴ係数が読み出される前に、次のマクロブロックのブロックＹ０の量子化ＤＣＴ係数が書き込まれてしまう危険性がある。
特にこれは、可変長符号化の量子化ＤＣＴ係数の読み出しは、ジグザグスキャン、垂直スキャン、水平スキャンなどスキャン方法が変わると読み出し順序が変わり、これによってまだ読み出されていない量子化ＤＣＴ係数の記憶領域に、新たな量子化ＤＣＴ係数が書き込まれる可能性が生ずるためである。
従ってこれを避けるためには、タイミングＴ９から次のマクロブロックのＤＣＴ処理を開始しなければならない。
【００２８】
以上のことが、上記一連の処理についてパイプライン処理を行うことが難しい事情である。
即ち、第１の理由としては、ＡＣ成分予測の有効／無効判別が、１マクロブロックを構成する各ブロックのＤＣＴ係数が量子化係数バッファ４２のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となった時点で可能となるため、タイミングＴ８から予測ブロックの決定、ＤＣ成分及びＡＣ成分の予測誤差の算出、さらにはＡＣ成分予測の有効／無効判別を行うことと、第２の理由としては量子化係数バッファ４２のオーバライトの危険性を回避する必要があることであり、これらの理由により上記タイミングＴ７〜Ｔ９として期間のロスが生ずることになる。
これによってパイプライン処理が妨げられ、またトータルでの処理サイクル数が増大してしまい、効率の良い処理ができないものとなっている。
【課題を解決するための手段】
【００２９】
本発明は上記の点に鑑みて、ＤＣＴから可変長符号化までのパイプライン処理を実現し、処理の効率化を図ることを目的とする。
【００３０】
このため本発明では、輝度成分及び色差成分から構成されるｎ個のブロックによってマクロブロックが形成される画像データに対して、離散コサイン変換、離散コサイン変換係数の量子化、及び可変長符号化を行う符号化装置において、（ｎ＋１）個以上の記憶領域が設けられ、各記憶領域へ各ブロックの量子化離散コサイン変換係数が順次格納される第１の記憶手段と、（ｎ＋１）個以上の記憶領域が設けられ、各記憶領域へ各ブロックのＡＣ成分予測誤差が順次格納される第２の記憶手段と、或るブロックの量子化離散コサイン変換係数を上記第１の記憶手段に記憶させる期間において、該ブロックについてのＡＣ成分予測誤差演算を行い、上記第２の記憶手段に算出された該ＡＣ成分予測誤差を記憶させるＡＣ予測演算手段と、上記マクロブロックに含まれる全ブロックのＡＣ成分予測誤差を用いて該ＡＣ成分予測の有効／無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記ＡＣ成分予測誤差を、該判別結果に基づいて上記第１，第２の記憶手段から読み出す読出制御手段とを備える。
【００３１】
また本発明の符号化方法は、輝度成分及び色差成分から構成されるｎ個のブロックによってマクロブロックが形成される画像データに対して、ブロック単位で順次離散コサイン変換を行う離散コサイン変換ステップと、離散コサイン変換により得られた離散コサイン変換係数を量子化する量子化ステップと、上記量子化された量子化離散コサイン変換係数を、（ｎ＋１）個以上の記憶領域が設けられた第１の記憶手段の上記記憶領域毎に順次記憶する第１の記憶ステップと、上記第１の記憶ステップと並行して、順次各ブロックについてのＡＣ成分予測誤差演算を行い、得られたＡＣ成分予測誤差を、（ｎ＋１）個以上の記憶領域が設けられた第２の記憶手段の上記記憶領域毎に順次記憶する第２の記憶ステップと、上記マクロブロックに含まれる全ブロックのＡＣ成分予測誤差を用いて該ＡＣ成分予測の有効／無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記ＡＣ成分予測誤差を、該判別結果に基づいて上記第１，第２の記憶手段から読み出す読み出しステップと、上記読み出しステップで読み出された上記量子化離散コサイン変換係数及び上記ＡＣ成分予測誤差を用いて可変長符号化処理を行う可変長符号化ステップとを有する。
【００３２】
即ち本発明では、量子化された量子化離散コサイン変換係数（量子化ＤＣＴ係数）を記憶する第１の記憶手段（量子化係数バッファ）においては、マクロブロックを構成するｎ個のブロックに対して（ｎ＋１）個以上の記憶領域（DC/AC-Bank）を設け、この記憶領域が順次用いられることで第１の記憶手段がリングバッファとして使用できるようにする。
また、各ブロックについてのＡＣ成分予測誤差（ＡＣ予測値）を記憶する第２の記憶手段（ＡＣ予測値バッファ）も備えるようにし、さらにその第２の記憶手段についても（ｎ＋１）個以上の記憶領域（AC-Bank）を設け、この記憶領域が順次用いられることで第２の記憶手段もリングバッファとして使用できるようにする。
その上で、或るブロックの量子化離散コサイン変換係数を上記第１の記憶手段に記憶させる期間において、該ブロックについてのＡＣ成分予測誤差演算を行い、上記第２の記憶手段に記憶させる処理を行う。
これにより、マクロブロックを構成する各ブロックの量子化離散コサイン変換係数が第１の記憶手段に蓄積された時点で、各ブロックのＡＣ予測値も第２の記憶手段に蓄積された状態にすることができるため、その直後のタイミングでＡＣ予測の有効／無効判断を行うのみで可変長符号化処理への出力を開始できる。またこのとき、第１，第２の記憶手段では空いている記憶領域が存在するため、さらに次のマクロブロックのブロックについて、ＤＣＴ処理、量子化、及び第１，第２の記憶手段への書込を行ってもオーバーライトは発生しない。
【発明の効果】
【００３３】
本発明によれば、量子化された量子化離散コサイン変換係数（量子化ＤＣＴ係数）を記憶する第１の記憶手段（量子化係数バッファ）においては、マクロブロックを構成するｎ個のブロックに対してｎ＋１個以上の記憶領域（DC/AC-Bank）を設け、この記憶領域が順次用いられるようにする。また各ブロックについてのＡＣ成分予測誤差（ＡＣ予測値）を記憶する第２の記憶手段（ＡＣ予測値バッファ）も備えるようにし、さらにその第２の記憶手段についても、ｎ＋１個以上の記憶領域（AC-Bank）を設け、この記憶領域が順次用いられるようにしている。そしてさらに、或るブロックの量子化離散コサイン変換係数を上記第１の記憶手段に記憶させる期間において、該ブロックについてのＡＣ成分予測誤差演算を行い、上記第２の記憶手段に記憶させる処理を行う。
これによって、ＤＣＴ→量子化→可変長符号化への出力という処理過程において、各マクロブロック毎に処理を待機する期間を解消できる。これは、バッファ（第１，第２の記憶手段）へのオーバライトを解消できること、及びマクロブロックを構成する各ブロックの量子化離散コサイン変換係数が第１の記憶手段に蓄積された時点で、各ブロックのＡＣ予測値も第２の記憶手段に蓄積された状態にすることができ、その直後のタイミングでＡＣ予測の有効／無効判断を行うのみで可変長符号化処理への出力を開始できることによる。
これによって、ＡＣ予測演算や予測方向決定、ＡＣ予測値有効／無効の判断を伴う処理過程においても、ブロック毎の処理を待機時間のないパイプライン処理が可能となり、必要な処理サイクルを大幅に削減できるという効果があり、高速な符号化エンコードを実現できる。
【発明を実施するための最良の形態】
【００３４】
以下、本発明の実施の形態の符号化装置を説明する。
本例の符号化装置は、入力した画像データをＭＰＥＧ４方式、Ｈ．２６３等の規格に準拠した方式で符号化できるエンコーダであり、この符号化装置で符号化して得られたビットストリームは、多重化されて、例えば、地上波や衛星回線、ＣＡＴＶ網等の伝送路を介して伝送される。或いは、磁気ディスク、光磁気ディスク、光ディスク、磁気テープ、その他の記録媒体に記録される。
符号化装置の構成を全体的に見れば、上述した図９と同様となる。即ち符号化装置１として、前画像処理部１１，フレームメモリ１２，動き検出及び動き補償部１３，演算器１４、ＤＣＴ器１５，量子化器１６、ＤＣＴ係数差分化器１７、逆量子化器１８、ＩＤＣＴ器１９，演算器２０，フレームメモリ２１、ＶＬＣ器２２を備え、図９のように構成される。この構成の説明は上述したため、ここでの重複説明を避ける。
【００３５】
本例の場合、上述した従来例とは、特に量子化器１６、ＤＣＴ係数差分化器１７の内部構成が異なるものとなり、以下説明する構成により、ブロック処理サイクル内でDC/AC予測処理を行い、かつ量子化ブロックと可変長符号化ブロック間の量子化係数バッファにリングバッファを用いることで、パイプライン処理を実現しMPEG4のエンコード時のサイクル数を削減するものである。
【００３６】
図１、図２に、図９と同様の全体構成となる本例の符号化装置１としてのＤＣＴ器１５，量子化器１６、ＤＣＴ係数差分化器１７の部分の構成を示す。また図３，図４には本例の構成によって行われる処理タイミングを示している。各図を参照しながら本例の構成及び動作を説明していく。
【００３７】
図１に示すＤＣＴ器１５には、図９に示した演算器１４から、１マクロブロックにつき、ブロックＹ０，Ｙ１，Ｙ２，Ｙ３，Ｃｂ，Ｃｒが順次入力される。ＤＣＴ器１５では水平及び垂直の二次元ＤＣＴ処理を行う。即ち入力される各ブロックは１ｓｔＤＣＴ部３１で処理された後、バッファ３２（DCT Bank0、DCT Bank1）にバッファリングされ、さらに２ｎｄＤＣＴ部３３で処理される。
例えば図３に示すように、タイミングＴ１では、入力されたブロックＹ０が１ｓｔＤＣＴ処理され、DCT Bank0に書き込まれる。次にタイミングＴ２では、入力されたブロックＹ１が１ｓｔＤＣＴ処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックＹ０が読み出され、２ｎｄＤＣＴ処理される。さらに次にタイミングＴ３では、入力されたブロックＹ２が１ｓｔＤＣＴ処理され、DCT Bank0に書き込まれる。このときDCT Bank1からはブロックＹ１が読み出され、２ｎｄＤＣＴ処理される。バッファ３２のDCT Bank0、DCT Bank1は、このように交互に使用される。
【００３８】
ＤＣＴ器１５の出力は量子化器１６において、量子化回路４１で量子化され、量子化係数バッファ４３にバッファリングされる。
この場合、量子化係数バッファ４３には、１マクロブロック分のバッファリングを行うことに最低必要な６つのブロックに対応するバンクに加え、さらに１つのバンクを追加的に設けている。即ちDC/AC-Bank0〜DC/AC-Bank6として７個のバンクが設けられている。
量子化された各ブロックのＤＣＴ係数は、それぞれ順次DC/AC-Bank0〜DC/AC-Bank6を用いて格納されることになる。７個のバンクが形成されるのは、後述するが量子化係数バッファ４３をリングバッファ的に利用できるようにするためである。  
【００３９】
また、量子化回路４１で量子化されたＤＣＴ係数は、量子化係数バッファ４３に取り込まれると同時に、ＤＣＴ係数差分化器１７の差分化回路６１にも供給される。
図１において差分化回路６１，マルチプレクサ６２，逆量子化回路６３を有するものとして示すＤＣＴ係数差分化器１７の構成は、特に差分化回路６１の構成を詳細化して図２に示している。
図２に示すように、差分化回路６１には、ＤＣ係数バッファ７１，ＤＣ予測部７２，ＡＣ係数バッファ７３，ＡＣ予測部７４、ＡＣ予測値バッファ７５，マルチプレクサ７６、ＡＣ成分加算／比較部７７、制御回路７８が設けられる。
【００４０】
ＤＣ係数バッファ７１には逆量子化回路６３で逆量子化されたＤＣ係数が格納される。ＤＣ予測部７２は、対象となるブロックに隣接する３つのブロック（即ち図７の対象ブロックＸに対するブロックＡ，Ｂ，Ｃ）の逆量子化されたＤＣ成分を用いて、予測方向及び対象ブロックのＤＣ成分に対する予測誤差を決定する。
なお或るブロックのＤＣ成分予測誤差は、量子化係数バッファ４３のDC/AC-Bank0〜DC/AC-Bank6のうちで、そのブロックに対応するバンクの先頭のデータとして格納される。
【００４１】
ＡＣ係数バッファ７３には逆量子化回路６３で逆量子化されたＡＣ係数が格納される。
ＡＣ予測部７４では、ＤＣ予測部７２で決定される予測方向によって、対象となるブロックに対して参照するブロックが決定される。なお、入力されたDC成分と周辺に隣接するDC成分との勾配によって予測参照するブロックが決定するが、この決定には数サイクル必要とするので、ＡＣ予測部７４は第一列のＡＣ成分は内部のフリップフロップなどによるテンポラリレジスタに一時保存しておく。
参照するべきブロックが左隣のブロックであれば、第一列成分をAC予測に使用するので、保存した第一列のＡＣ成分とＡＣ係数バッファ７３に保存されたＡＣ係数を基に予測誤差を求める。また参照するべきブロックが上のブロックであれば、第一行成分をＡＣ成分に使用するので、保存した第一列のＡＣ成分は使用せず、入力されたＡＣ成分の第一行成分と、それに対応してＡＣ係数バッファ７３に保存されたＡＣ係数から予測誤差を求める。
【００４２】
求められたＡＣ成分予測誤差は、ＡＣ予測値バッファ７５に格納される。
ＡＣ予測値バッファ７５には、それぞれが１つのブロックに対応して、ＡＣ予測値（ＡＣ成分の予測誤差）を保持する領域として、７単位のバンク（AC-Bank0〜AC-Bank6）が設けられている。そして各AC-Bankは、１つのブロックにおける水平第１行又は垂直第１列の７画素分のＡＣ予測値を保持するための領域として、Coef0〜Coef6が用意されている。
AC-Bank0〜AC-Bank6として、１マクロブロックを構成する６つのブロックよりも１つ多い７ブロック分のＡＣ予測値のバンクが形成されるが、算出された各ブロックのＡＣ予測値は、それぞれ順次AC-Bank0〜AC-Bank6を用いて格納されることになる。７個のバンクが形成されるのは、上記量子化係数バッファ４３において７個のバンク（DC/AC-Bank0〜DC/AC-Bank6）が形成されることと同じ意味であり、ＡＣ予測値バッファ７５をリングバッファ的に利用できるようにするためである。
【００４３】
またＡＣ予測部７４で算出された１ブロック分のＡＣ予測値は、ＡＣ成分加算／比較部７７で加算（絶対値和）され、予測しない絶対値和との比較が行われる。そしてＡＣ成分加算／比較部７７は、その比較結果に基づいて、ＡＣ予測が有効か否かを示す予測フラグＦACを後段の制御回路７８に送る。
制御回路７８は、予測フラグＦACによりＡＣ予測の有効／無効を判別し、それに応じてマルチプレクサ７６及び６２を制御する。
上記量子化係数バッファ４３のバンク（DC/AC-Bank）は、或る１つのブロックについて６４個のＤＣＴ係数（即ちＤＣ成分１個と６３個のＡＣ係数）を格納し、またＡＣ予測値バッファ７５のバンク（AC-Bank）は、或るブロックについて７個のＡＣ予測値を格納する。
従って制御回路７８は、ＡＣ成分予測が有効とされれば、或るブロックの６４個のデータ（係数）の出力として、該当するDC/AC-BankからのＤＣ成分１個と５６個のＡＣ係数を出力させ、また該当するAC-Bankから７個のＡＣ予測値を出力させる。このような出力が所定の順序で行われるようにマルチプレクサ７６及び６２を制御する。
またＡＣ成分予測が無効とされれば、ＡＣ予測値バッファ７５に格納されたＡＣ予測値は出力されず、即ち該当するDC/AC-BankからＤＣ成分１個と６３個のＡＣ係数を出力させるように、マルチプレクサ７６及び６２を制御する。
このようにして出力された係数はＶＬＣ器２２で可変長符号化されることになる。
【００４４】
以上の図１，図２に示したように本例では、量子化係数バッファ４３及びＡＣ予測値バッファ７５において７ブロック分のバンクを備えるようにし、さらにＤＣＴ係数を量子化係数バッファ４３に格納する際に、予測演算のための処理を行ってＡＣ予測値をＡＣ予測値バッファ７５に格納するようにすることで、DC/AC予測のパイプライン処理を可能にするものである。
【００４５】
図３により処理タイミングを説明する。
図３のタイミングＴ１で、或るマクロブロックにおける先頭のブロックＹ０がＤＣＴ器１５に入力され、１ｓｔＤＣＴ処理されるとする。上述したようにＤＣＴ器１５では、バッファ３２のDCT Bank0、DCT Bank1が交互に使用され、バッファリングされながら、１ｓｔＤＣＴ処理されたデータが次段の２ｎｄＤＣＴ処理に供される。例えばタイミングＴ１からの期間では、１ｓｔＤＣＴ処理されたブロックＹ０のデータがDCT Bank0に書き込まれる。次のタイミングＴ２では、次に入力されたブロックＹ１が１ｓｔＤＣＴ処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックＹ０が読み出され、２ｎｄＤＣＴ処理される。
【００４６】
ここで、タイミングＴ２からの期間には、２ｎｄＤＣＴ処理されたブロックＹ０のデータ（６４個のＤＣＴ係数）が量子化回路４１で量子化されるが、量子化処理された各ＤＣＴ係数が量子化係数バッファ４３に書き込まれる。このとき、量子化係数バッファ４３においては例えばDC/AC-Bank0に書き込まれるものとなる。なお、図３において「ＷＲ」は量子化係数バッファ４３及びＡＣ予測値バッファ７５への書込、「ＲＤ」は量子化係数バッファ４３及びＡＣ予測値バッファ７５からの読出を示している。
このように量子化器１６では、１つのブロックにつき６４個のＤＣＴ係数を量子化し、量子化係数バッファ４３に格納する。このとき、ＤＣＴの方法にもよるが、２次元ＤＣＴの場合、図５に示すように、ＤＣ成分を先頭に第一列から順に縦方向に送られる。
さらにこのタイミングＴ２からの期間では、ｔａ（Ｙ０）として示す期間において、ブロックＹ０についてのＤＣ成分及びＡＣ成分の予測演算が行われる。即ち上記図２において説明したように、ＡＣ予測値をＡＣ予測値バッファ７５の或るバンクに格納するまでの処理が行われる。この場合、量子化係数バッファ４３においてDC/AC-Bank0が用いられることに対応して、ＡＣ予測値バッファ７５ではAC-Bank0が用いられ、AC-Bank0のCoef0〜Coef6に水平又は垂直方向の７個のＡＣ予測値が記憶されるものとなる。
なお、例えばこのｔａ期間においてＡＣ予測値バッファ７５の或るバンク（AC-Bank）にＡＣ予測値が記憶される場合の処理タイミングは、後に図４で述べる。
【００４７】
次にタイミングＴ３からの期間では、２ｎｄＤＣＴ処理されたブロックＹ１のデータ（６４個のＤＣＴ係数）が量子化回路４１で量子化され、量子化処理された各ＤＣＴ係数が量子化係数バッファ４３のDC/AC-Bank1に書き込まれるものとなる。
さらにこのタイミングＴ３からの期間では、ｔａ（Ｙ１）として示す期間において、ブロックＹ１についてのＤＣ成分及びＡＣ成分の予測演算が行われ、そのＡＣ予測値がＡＣ予測値バッファ７５のAC-Bank1に記憶される。即ちAC-Bank1のCoef0〜Coef6に水平又は垂直方向の７個のＡＣ予測値が記憶される。
【００４８】
以降同様に処理されていくと、タイミングＴ７〜Ｔ８の間の期間において、量子化係数バッファ４３のDC/AC-Bank0〜DC/AC-Bank5に、各ブロックＹ０，Ｙ１，Ｙ２，Ｙ３，Ｃｂ，Ｃｒについての量子化ＤＣＴ係数が書き込まれた状態となり、さらにＡＣ予測値バッファ７５のAC-Bank0〜AC-Bank5には、各ブロックについてのＡＣ予測値が記憶された状態となる。
そこでタイミングＴ７〜Ｔ８の間の期間ｔｂでは、図２のＡＣ成分加算／比較部７７で、１マクロブロック内の全てのブロックのＡＣ予測値の絶対値和と、予測しない絶対値和との比較ができることになり、その結果としてＡＣ予測が有効か否かを示す予測フラグＦACを後段の制御回路７８に送ることができる。
従って、タイミングＴ８からは、制御回路７８は、予測フラグＦACによりＡＣ予測の有効／無効を判別し、それに応じてマルチプレクサ６２，７６を制御して、ＡＣ予測値を有効化するか否かに応じた状態で、後段のＶＬＣ器２２（可変長符号化処理）に対するＤＣＴ係数の出力を行うことができる。
図示するように、タイミングＴ８では、ブロックＹ０の係数出力として、量子化係数バッファ４３のDC/AC-Bank0に格納されたDCT係数と、ＡＣ予測値バッファ７５のAC-Bank0に格納されたＡＣ予測値の読出が行われ、後段のＶＬＣ器２２で可変長符号化処理が行われる。もちろん、１ブロックにつき出力される６４個の係数データのうちにAC-Bank0に格納された７個のＡＣ予測値が含まれることになるのは、ＡＣ予測が有効化された場合であり、ＡＣ予測が無効とされた場合は、DC/AC-Bank0に格納された６４個のDCT係数が出力される。
【００４９】
またタイミングＴ９からは、ブロックＹ１の係数出力として、量子化係数バッファ４３のDC/AC-Bank1に格納されたDCT係数の読出と、ＡＣ予測値バッファ７５のAC-Bank1に格納されたＡＣ予測値の読出が行われ（但しＡＣ予測が有効とされた場合のみ）、後段のＶＬＣ器２２で可変長符号化処理が行われる。
さらにタイミングＴ１０からは、ブロックＹ２の係数出力として、量子化係数バッファ４３のDC/AC-Bank2に格納されたDCT係数の読出と、ＡＣ予測値バッファ７５のAC-Bank2に格納されたＡＣ予測値の読出が行われ（但しＡＣ予測が有効とされた場合のみ）、後段のＶＬＣ器２２で可変長符号化処理が行われる。
以降も同様である。
【００５０】
ここで、この図３においてはタイミングＴ７からの期間には、次のマクロブロックの先頭のブロックＹ０についての１ｓｔＤＣＴ処理が行われるものとなっている。
そしてタイミングＴ７で１ｓｔＤＣＴ処理されたブロックＹ０のデータは、タイミングＴ８からの期間において、２ｎｄＤＣＴ及び量子化されることになり、このとき量子化されたＤＣＴ係数が量子化係数バッファ４３に書き込まれる。
このとき、量子化係数バッファ４３に７単位のバンクが設けられていることから、この場合、図示するようにブロックＹ０の６４個の量子化ＤＣＴ係数は、量子化係数バッファ４３のDC/AC-Bank6に書き込まれるものとされる。
上記のようにタイミングＴ８からの期間は、直前のマクロブロックのブロックＹ０のＤＣＴ係数がDC/AC-Bank0から読み出されている期間であるが、異なるバンクであるDC/AC-Bank6に対して書込が行われるため、量子化係数バッファ４３においてオーバーライトは発生しない。
可変長符号化のDCT量子化係数の読み出しはジグザグスキャン、垂直スキャン、水平スキャンなどスキャン方法が変わると読み出し順序が変わるが、そのような事情を考慮しても、読み出しを行っているバンクに対して書込を行うものではないため、オーバライト発生の可能性は解消されるものである。
【００５１】
また、このタイミングＴ８のｔａ（Ｙ０）で示す期間には、ブロックＹ０についてのＤＣ成分及びＡＣ成分の予測演算が行われ、そのＡＣ予測値がＡＣ予測値バッファ７５のAC-Bank6に記憶される。即ちAC-Bank6のCoef0〜Coef6に水平又は垂直方向の７個のＡＣ予測値が記憶される。
この場合も、ＡＣ予測値バッファ７５では、直前のマクロブロックのブロックＹ０のＡＣ予測値がAC-Bank0から読み出されている期間であるが、異なるバンクであるAC-Bank6に対して書込が行われるため、ＡＣ予測値バッファ７５においてもオーバーライトは発生しない。
【００５２】
同様にタイミングＴ９からの期間は、直前のマクロブロックのブロックＹ１についてのＤＣＴ係数がDC/AC-Bank1から読み出され、ＡＣ予測値がAC-Bank1から読み出される期間とされるが、このとき今回のマクロブロックのブロックＹ１のＤＣＴ係数は、DC/AC-Bank0に書き込まれ、ＡＣ予測値がAC-Bank0に書き込まれることになる。
またタイミングＴ１０からの期間は、直前のマクロブロックのブロックＹ２についてのＤＣＴ係数がDC/AC-Bank2から読み出され、ＡＣ予測値がAC-Bank2から読み出される期間とされるが、このとき今回のマクロブロックのブロックＹ２のＤＣＴ係数は、DC/AC-Bank1に書き込まれ、ＡＣ予測値がAC-Bank1に書き込まれることになる。
つまり量子化係数バッファ４３及びＡＣ予測値バッファ７５においてオーバーライトは発生しない。従って、図示するように、タイミングＴ７から次のマクロブロックのＤＣＴ処理を開始することに問題ないものとなる。これによって図１１のＴ７〜Ｔ８又はＴ７〜Ｔ９として示したような処理待機期間の無い、パイプライン処理が実現できる。
【００５３】
ところでこのようなパイプライン処理が実現できることは、量子化係数バッファ４３及びＡＣ予測値バッファ７５において７個のバンクを設けることに加え、図３に期間ｔａ（Ｙ０）〜ｔａ（Ｃｒ）として示したように、ＤＣ／ＡＣ予測演算及びＡＣ予測値バッファ７５へのＡＣ予測値の書込を、２ｎｄＤＣＴ処理→量子化→量子化ＤＣＴ係数の量子化係数バッファ４３への書き込みという処理を実行する期間と同時的に実行することが必要となるものである。
即ち図１１の従来例においては、期間ｔ１、ｔ２でＤＣ／ＡＣ係数の読出と予測演算が行われ、その後ＡＣ予測の有効／無効判断が行われていたことも、パイプライン処理を妨げる要因となっていた。これに対して本例では、各ブロックについてのＤＣ／ＡＣ予測演算及びＡＣ予測値バッファ７５へのＡＣ予測値の書込を、期間ｔａ（Ｙ０）〜ｔａ（Ｃｒ）において行い、タイミングＴ７からの期間において１マクロブロックを構成する各ブロックの量子化ＤＣＴ係数及びＡＣ予測値が蓄積された直後に、図３に示す期間ｔｂとして、単にＡＣ予測の有効／無効判断を行うことで、タイミングＴ８から次段の可変長符号化処理への出力が可能となり、これもパイプライン処理を実現する要素となる。
【００５４】
期間ｔａ（ｔａ（Ｙ０）〜ｔａ（Ｃｒ））において実行される処理を図４で説明する。
図４は例えば図３のタイミングＴ３〜Ｔ４の期間を例に挙げて、１ブロック分の処理のタイミングを示したものである。
例えばブロックＹ１としての６４個のＤＣＴ係数として、２ｎｄＤＣＴ処理されて量子化される８×８の係数を（０，０）〜（７，７）として示す。１ブロック期間は６４サイクルの処理となる。
図２のＤＣ予測部７２では、係数（０，０）が入力された後のタイミングでＤＣ予測を行い、予測方向を決定できる。なお、この処理には数サイクルの期間を必要とする。
一方、ＡＣ予測部７４では、ＡＣ予測値バッファ７５に格納するＡＣ予測値は、ＤＣ予測によって予測方向が決まるまでは確定させることができないが、順次入力される係数（０，１）〜（０，７）は、もし水平方向予測とされた場合に用いる係数となるため、これらを内部のテンポラリレジスタに格納しておく。
ＤＣ予測の結果に基づいて図に示すタイミングで予測方向が決定されると、それが水平方向予測であった場合は、ＡＣ予測部７４は、テンポラリレジスタに格納しておいた係数（０，１）〜（０，７）によりＡＣ予測値を得、これをＡＣ予測値バッファ７５の所定のAC-BankのCoef0〜Coef6に格納させる。
また垂直方向予測と決定された場合は、ＡＣ予測部７４は、図示するように、以降入力されてくる係数（１，０）、（２，０）・・・（６，０）、（７，０）を用いてＡＣ予測値を得、これをＡＣ予測値バッファ７５の所定のAC-BankのCoef0〜Coef6に格納させる。
【００５５】
即ち図２の構成を採ることで、図４のように、或るブロックの量子化ＤＣＴ係数を量子化係数バッファ４３に格納する期間に、同時的にＡＣ予測値を算出し、ＡＣ予測値バッファ７５に格納していくことができる。
これによって上記図３のように、マクロブロック内の６個目のブロックＣｒについて、そのＤＣＴ係数を量子化係数バッファ４３に格納した直後の時点では、単にＡＣ予測の有効／無効を判断して、後段のＶＬＣ器２２に対する出力処理に移ることができ、上記オーバライトの解消と合わせて、パイプライン処理を実現するものとなる。
【００５６】
また、このように各ブロックについて、２ｎｄＤＣＴ処理→量子化→量子化ＤＣＴ係数の量子化係数バッファ４３への書き込みという処理を実行する期間と同時的に期間ｔａでＡＣ予測値の演算及びＡＣ予測値バッファ７５への格納を行うことは、量子化係数バッファ４３及びＡＣ予測値バッファ７５に１つのバンクを追加するのみで、パイプライン処理を行った場合のオーバライトが発生しないようにするものともなる。これを図６で説明する。
図６は、仮に、量子化係数バッファ４３及びＡＣ予測値バッファ７５に７単位のバンクを設けるがＡＣ予測演算を上記ｔａ期間では行わないようにした場合の処理タイミングを示している。
上記図３のｔａ期間で示したタイミングでのＡＣ予測演算を行わないものとした場合は、図６のように、タイミングＴ８からのｔ１期間でＤＣ／ＡＣ係数の読み出しを行い、続くｔ２期間に予測演算及び予測方向を決定し、またＡＣ予測の有効／無効を判断することになる。
すると、後段のＶＬＣ器２２への出力は、図示するようにＴ８〜Ｔ９の間の後半のタイミングから可能となり、タイミングＴ９以降にまでわたって出力（量子化係数バッファ４３のDC/AC-Bank0及びＡＣ予測値バッファ７５のAC-Bank0からの読出）が実行される。
この場合、図からわかるように、タイミングＴ９以降では、量子化係数バッファ４３のDC/AC-Bank0及びＡＣ予測値バッファ７５のAC-Bank0に対しては、次のマクロブロックに関しての書込が行われている。従って、後段のＶＬＣ処理のサイクルによっては、ここにオーバライトの可能性が生ずる。
即ち、量子化係数バッファ４３及びＡＣ予測値バッファ７５においてバンクを１つ追加したのみでは、パイプライン処理を安全に実行できない場合があるが、上記図３で説明したように本例では、各ブロックについて、量子化ＤＣＴ係数を量子化係数バッファ４３に格納する期間に、同時的にＡＣ予測値を算出し、ＡＣ予測値バッファ７５に格納することで、確実に安全なパイプライン処理が実現できるものである。
【００５７】
以上のように本例では、ＡＣ予測演算をブロック処理サイクル内で実現できることで、１マクロブロックで６４サイクルのサイクル数削減が実現できる。また従来のようにオーバライトを考慮して処理を待機する期間も不要となり、この点でも１マクロブロックで６４サイクルのサイクル数削減が実現できる。
例えばＭＰＥＧのコーデックブロックは１サイクルでも早くエンコード／デコードすることが望まれるが、本例の構成を使用するとQCIFサイズの９９マクロブロックでは、少なくとも１フレームあたり99×64＝6336のサイクル数削減が期待できるものとなる。
【００５８】
なお、上記例では量子化係数バッファ４３及びＡＣ予測値バッファ７５にはバンクを最低限必要な６単位より１つ追加して７単位としたが、さらに追加して８単位以上とする例も考えられる。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施の形態の符号化装置の要部のブロック図である。
【図２】実施の形態の符号化装置のＤＣＴ係数差分化器の内部を示したブロック図である。
【図３】実施の形態の処理タイミングの説明図である。
【図４】実施の形態の処理タイミングのより詳細な説明図である。
【図５】実施の形態のブロックにおける量子化ＤＣＴ係数の送り順の説明図である。
【図６】実施の形態のＡＣ予測値の格納による効果の説明図である。
【図７】ＤＣ成分予測誤差の処理の説明図である。
【図８】ＡＣ成分予測誤差の処理の説明図である。
【図９】従来及び実施の形態の符号化装置の全体構成のブロック図である。
【図１０】従来の符号化装置のブロック図である。
【図１１】従来の符号化装置の処理タイミングの説明図である。
【符号の説明】
【００６０】
１５  ＤＣＴ器、１６  量子化器、１７  ＤＣＴ係数差分化器、２２  ＶＬＣ器、４１  量子化回路、４３  量子化係数バッファ、６１  差分化回路、６２  マルチプレクサ、６３  逆量子化回路、７１  ＤＣ係数バッファ７１、７２  ＤＣ予測部、７３  ＡＣ係数バッファ、７４  ＡＣ予測部、７５  ＡＣ予測値バッファ、７６  マルチプレクサ、７７  ＡＣ成分加算／比較部、７８  制御回路
【図１】
2005123783.tif 000003
【図２】
2005123783.tif 000004
【図３】
2005123783.tif 000005
【図４】
2005123783.tif 000006
【図５】
2005123783.tif 000007
【図６】
2005123783.tif 000008
【図７】
2005123783.tif 000009
【図８】
2005123783.tif 000010
【図９】
2005123783.tif 000011
【図１０】
2005123783.tif 000012
【図１１】
2005123783.tif 000013