(57)【要約】【課題】マクロブロックを記憶するバッファの容量を削減して、動き検出を高速に行うことが出来る動き検出回路を提供する。【解決手段】動き検出回路は、参照マクロブロックバッファに記憶されている参照マクロブロックのいずれか１つと第１の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の第１差分絶対値和を算出してこれを更新し、参照マクロブロックバッファに記憶されている参照マクロブロックのいずれか１つと第２の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の第２差分絶対値和を算出してこれを更新する。そして、第１及び第２差分絶対値和の更新値の符号化マクロブロック毎の最小値に対応する参照マクロブロックを予測マクロブロックとして検出する。【選択図】図１
2009055291.tif 000002
【特許請求の範囲】
【請求項１】
符号化対象の１つのフレーム中の単位エリアの符号化マクロブロックの１つとの間の差分絶対値和が最小となる１つの参照マクロブロックを１つの予測マクロブロックとして検出する動き検出回路であって、
各々が符号化マクロブロックを順次記憶する第１の符号化マクロブロックバッファ及び第２の符号化マクロブロックバッファと、
前記符号化マクロブロックの動き検出の探索領域となる動画像データを記憶する参照動画像記憶手段と、
前記符号化マクロブロックとの間で差分絶対値和を算出すべき参照マクロブロックを前記参照動画像記憶手段から抽出して記憶する参照マクロブロックバッファと、
前記参照マクロブロックバッファに記憶されている参照マクロブロックのいずれか１つと前記第１の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の第１差分絶対値和を算出してこれを更新する第１の差分絶対値和算出手段と、
前記参照マクロブロックバッファに記憶されている参照マクロブロックのいずれか１つと前記第２の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の第２差分絶対値和を算出してこれを更新する第２の差分絶対値和算出手段と、
前記第１及び第２差分絶対値和の更新値の符号化マクロブロック毎の最小値に対応する参照マクロブロックを予測マクロブロックとして検出する検出手段と、を有することを特徴とする動き検出回路。
【請求項２】
前記参照マクロブロックバッファは、
マクロブロック探索を実行している符号化マクロブロックとの間の差分絶対値和が最小となった最小参照マクロブロックと、マクロブロック探索の完了した符号化マクロブロックとの間の差分絶対値和が最小となった探索完了参照マクロブロックと、マクロブロック探索を実行している符号化マクロブロックとの間の差分絶対値和を算出する対象となる算出対象参照マクロブロックと、を記憶し、
前記算出対象参照マクロブロックを前記参照動画像記憶手段から読み出して記憶する場合に、前記最小参照マクロブロック及び前記探索完了参照マクロブロックが記憶されていない領域に前記算出対象参照マクロブロックを記憶することを特徴とする請求項１記載の動き検出回路。
【請求項３】
前記参照マクロブロックバッファは、マクロブロック探索の完了した符号化マクロブロックとの間の差分絶対値和が最小となった探索完了参照マクロブロックを記憶し、
前記動き検出回路は、前記第１の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の差分絶対値和を算出する対象となる算出対象参照マクロブロックを前記参照画像記憶手段から読み出して前記第１の差分絶対値和算出手段に送出する第１の参照マクロブロック読出手段と、前記第２の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の差分絶対値和を算出する対象となる算出対象参照マクロブロックを前記参照画像記憶手段から読み出して前記第２の差分絶対値和算出手段に送出する第２の参照マクロブロック読出手段と、を有することを特徴とする請求項１記載の動き検出回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化対象の１つのフレーム中の符号化マクロブロックとの間の差分絶対値和が最小となる参照マクロブロックを予測マクロブロックとして検出する動き検出回路に関する。
【背景技術】
【０００２】
放送やネットワークを介した動画像データの配信や動画像データを蓄積する場合等においては、動画像データの符号化が行われている。動画像データの符号化の方法としては、符号化対象フレームをマクロブロックに分割して、マクロブロック毎に参照フレームのマクロブロックとの差分を符号化する方法がある。この場合、符号化対象フレームのマクロブロック（符号化マクロブロック）との差分を算出する参照フレームのマクロブロック（参照マクロブロック）としては、符号化マクロブロックとの間の差分絶対値和が最小となる参照マクロブロックが選ばれる（例えば、特許文献１参照）。
【０００３】
符号化マクロブロックとの間の差分絶対値和が最小となる参照マクロブロックの検出を高速に行うために、パイプライン動作により差分絶対値和が最小となる参照マクロブロックの検出を行うことがある。符号化マクロブロックを記憶するバッファと、参照マクロブロックを記憶するバッファと、差分絶対値和を算出する演算回路の組を２つもち、各々の組で異なる符号化マクロブロックに対して差分絶対値和が最小となる参照マクロブロックの検出を行う。このようにパイプライン動作を行うことで、符号化マクロブロックとの間の差分絶対値和が最小となる参照マクロブロックの検出を高速に行うことが出来る。
【特許文献１】特開２００５−２４４８４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記した如く装置においては、符号化マクロブロックを記憶するバッファと、参照マクロブロックを記憶するバッファと、差分絶対値和を算出する演算回路の組を２つもち、パイプライン動作を行っている。このような装置では、マクロブロックを記憶するバッファを複数もつため、マクロブロックを記憶するバッファの容量も多く必要になる。参照マクロブロックを記憶するバッファは、１０ピクセル×１０ピクセルの画像データを８つ記憶する必要がある。パイプライン動作を行うためには、参照マクロブロックを記憶するバッファが２個必要となる。それ故、１ピクセルの画像データを記憶するのに８ビットの記憶容量が必要な場合、参照マクロブロックを記憶するバッファには、合計で１６００バイトの記憶容量が必要となる。
【０００５】
このようにパイプライン動作を行うためには、マクロブロックを記憶するバッファが多くの記憶容量を必要とするため、動き検出回路のために必要な基板上の面積が増大してしまう。また、バッファへの書き込み及び読み出しにより、消費電力が増大してしまう。
【０００６】
本発明は上記した点に鑑みてなされたものであり、マクロブロックを記憶するバッファの容量を削減して、符号化マクロブロックとの間の差分絶対値和が最小となる参照マクロブロックの検出を高速に行うことが出来る動き検出回路を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の動き検出回路は、符号化対象の１つのフレーム中の単位エリアの符号化マクロブロックの１つとの間の差分絶対値和が最小となる１つの参照マクロブロックを１つの予測マクロブロックとして検出する動き検出回路であって、各々が符号化マクロブロックを順次記憶する第１の符号化マクロブロックバッファ及び第２の符号化マクロブロックバッファと、符号化マクロブロックの動き検出の探索領域となる動画像データを記憶する参照動画像記憶手段と、符号化マクロブロックとの間で差分絶対値和を算出すべき参照マクロブロックを参照動画像記憶手段から抽出して記憶する参照マクロブロックバッファと、参照マクロブロックバッファに記憶されている参照マクロブロックのいずれか１つと第１の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の第１差分絶対値和を算出してこれを更新する第１の差分絶対値和算出手段と、参照マクロブロックバッファに記憶されている参照マクロブロックのいずれか１つと第２の符号化マクロブロックバッファに記憶されている符号化マクロブロックとの間の第２差分絶対値和を算出してこれを更新する第２の差分絶対値和算出手段と、第１及び第２差分絶対値和の更新値の符号化マクロブロック毎の最小値に対応する参照マクロブロックを予測マクロブロックとして検出する検出手段と、を有することを特徴とする。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施例について図面を参照しつつ詳細に説明する。
【０００９】
図１は、本発明に係る動き検出回路の第１の実施例を示している。動き検出回路１は、バス７を介して接続している外部メモリ６に記憶されている動画像データの符号化を行う際に動き検出を行う。動き検出とは、符号化対象のフレーム中の単位エリアのマクロブロック（以下、符号化マクロブロックという）の各々に対して、差分絶対値和が最小になる参照マクロブロックを検出することである。参照マクロブロックとは、参照フレーム中のマクロブロックのことである。また、以下では差分絶対値和のことをコストという。
【００１０】
動き検出回路１は、符号化マクロブロックと参照マクロブロックとの間のコストを算出して、符号化マクロブロックとの間のコストが最小となった参照マクロブロックを、その符号化マクロブロックに対応する予測マクロブロックとして検出する。動き検出回路１は、参照フレームの動画像データを記憶する参照動画像記憶手段２と、符号化マクロブロックを記憶する第１符号化マクロブロックバッファ３Ａ及び第２符号化マクロブロックバッファ３Ｂと、参照マクロブロックを記憶する参照マクロブロックバッファ４と、コストを算出する第１ＳＡＤ演算回路５Ａ及び第２ＳＡＤ演算回路５Ｂから構成される。
【００１１】
参照動画像記憶手段２には、符号化マクロブロックの符号化対象フレーム上での座標と同じ座標を中心とする８個の参照マクロブロックが参照フレームから読み出されて記憶される。第１符号化マクロブロックバッファ３Ａ及び第２符号化マクロブロックバッファ３Ｂの各々には、符号化マクロブロックが１つ記憶される。第１ＳＡＤ演算回路５Ａは、第１符号化マクロブロックバッファ３Ａに記憶されている符号化マクロブロックと、参照マクロブロックバッファ４に記憶されている参照マクロブロックとの間のコストを算出する。第２ＳＡＤ演算回路５Ｂは、第２符号化マクロブロックバッファ３Ｂに記憶されている符号化マクロブロックと、参照マクロブロックバッファ４に記憶されている参照マクロブロックとの間のコストを算出する。
【００１２】
参照マクロブロックバッファ４は、参照動画像記憶手段２から参照マクロブロックを読み出して記憶するものである。図２に参照マクロブロックバッファ４の構成を示す。参照マクロブロックバッファ４は、動画像データを記憶する動画像バッファ４１Ａ〜４１Ｃと、セレクタ４２Ａ〜４２Ｂと、制御回路４３から構成される。動画像バッファ４１Ａ〜４１Ｃの各々は、１つのブロックの周辺の動画像データ（１０ピクセル×１０ピクセル）を記憶することが出来る動画像レジスタを４つ有する。動画像バッファ４１Ａ〜４１Ｃの各々は、制御回路４３からの指令に従い、参照動画像記憶手段２から読み出した動画像データを記憶する。また、動画像バッファ４１Ａ〜４１Ｃは、制御回路４３からの指令に従い、記憶している動画像データを読み出して出力する。セレクタ４２Ａは、制御回路４３からの指令に従い、動画像バッファ４１Ａ〜４１Ｃのいずれかから出力される動画像データを選択して、第１ＳＡＤ演算回路５Ａに出力する。セレクタ４２Ｂは、制御回路４３からの指令に従い、動画像バッファ４１Ａ〜４１Ｃのいずれかから出力される動画像データを選択して、第２ＳＡＤ演算回路５Ｂに出力する。制御回路４３は、動画像バッファ４１Ａ〜４１Ｃ及びセレクタ４２Ａ〜４２Ｂに対する制御や算出されたコストの比較を行う。制御回路４３は、最小のコストの値を記憶する最小コストレジスタ４３１と、算出されたコストの値と最小のコストの値を比較する比較回路４３２と、最小のコストに対応する動画像バッファ４１Ａ〜４１Ｃを表す情報を記憶する最小コストバッファ４３３から構成される。最小コストレジスタ４３１は、最小のコストの値を記憶するコストレジスタを４つもつ。４つのコストレジスタの各々は、動画像バッファ４１Ａ〜４１Ｃの各々を構成する４つの動画像レジスタに対応している。最小コストバッファ４３３は、最小コストレジスタ４３１の４つのコストレジスタが記憶する最小コストの値に対応する動画像レジスタが動画像バッファ４１Ａ〜４１Ｃのうちのどれに所属するかを表す情報を記憶している。比較回路４３２は、最小コストレジスタ４３１の４つの動画像レジスタが記憶するコストの値の各々について、算出されたコストの値との比較を行う。また、比較回路４３２の比較結果に応じて、最小コストレジスタ４３１及び最小コストバッファ４３３の内容が更新される。
【００１３】
尚、制御回路４３と第１ＳＡＤ演算回路５Ａが、第１の差分絶対値和算出手段を構成する。また、制御回路４３と第２ＳＡＤ演算回路５Ｂが、第２の差分絶対値和算出手段を構成する。
【００１４】
図３に、符号化マクロブロックとの間のコストが最小になる参照マクロブロックを検出するマクロブロック探索ルーチンの動作を示す。マクロブロック探索ルーチンは、第１符号化マクロブロックバッファ３Ａ及び第２符号化マクロブロックバッファ３Ｂの各々に記憶される符号化マクロブロックについて実行される。
【００１５】
まず、動き検出を行う対象となる符号化マクロブロック（１６ピクセル×１６ピクセル）が外部メモリ６から読み出されて、第１符号化マクロブロックバッファ３Ａ若しくは第２符号化マクロブロックバッファ３Ｂに記憶される（ステップＳ３０１）。そして、動き検出の探索範囲となる動画像データが外部メモリ６から読み出されて、参照動画像記憶手段２に記憶される（ステップＳ３０２）。符号化マクロブロックの符号化対象フレーム上での座標をＩとすると、参照フレーム上の座標Ｉを中心とする周辺の８個の参照マクロブロック（１６ピクセル×１６ピクセル）が動き検出の探索範囲の動画像データとなる。このとき記憶される探索範囲の動画像データを図４に示す。座標Ｉを中心とする周辺の８個の参照マクロブロック４０１〜４０８が参照フレームから読み出されて、参照動画像記憶手段２に記憶される。また、参照動画像記憶手段２から読み出されて参照マクロブロックバッファ４に記憶される参照マクロブロックの読み出し範囲５００は、図４に示すように１８ピクセル×１６ピクセルの大きさである。
【００１６】
次に、参照動画像記憶手段２から読み出した参照マクロブロックを、参照マクロブロックバッファ４のどの位置に記憶するかを選択する（ステップＳ３０３）。参照マクロブロックバッファ４は、３つの動画像バッファ４１Ａ〜４１Ｃを有している。動画像バッファ４１Ａ〜４１Ｃには、座標Ｉの前の座標である座標Ｉ−１の符号化マクロブロックに対してコストが最小となった参照マクロブロックである探索完了参照マクロブロックが記憶されている。また、動画像バッファ４１Ａ〜４１Ｃには、これまでマクロブロック探索ルーチンを実行した結果、座標Ｉの符号化マクロブロックに対して、その時点でコストが最小となった参照マクロブロックである最小参照マクロブロックも記憶されている。探索完了参照マクロブロック及び最小参照マクロブロックは、例えば、図５に示すように、探索完了参照マクロブロックが動画像バッファ４１Ｃの動画像レジスタＣ１〜Ｃ４に、最小参照マクロブロックが動画像バッファ４１Ａの動画像レジスタＡ３と、動画像バッファ４１Ｂの動画像レジスタＢ１、Ｂ２及びＢ４に記憶されている。参照動画像記憶手段２から読み出された参照マクロブロック（算出対象参照マクロブロック）の記憶先としては、動画像バッファ４１Ａ〜４１Ｃのうち、探索完了参照マクロブロック及び最小参照マクロブロックを記憶していない位置が選択される。例えば、動画像バッファ４１Ａ〜４１Ｃの状態が図５に示す状態であるとすると、参照動画像記憶手段２から読み出された参照マクロブロックの記憶先としては、動画像バッファ４１Ａの動画像レジスタＡ１、Ａ２及びＡ４と、動画像バッファ４１Ｂの動画像レジスタＢ３が選択される。
【００１７】
参照マクロブロックの記憶先が選択されると、参照動画像記憶手段２から参照マクロブロックが読み出されて、Ｓ３０３の処理で選択された記憶先に書き込まれる（ステップＳ３０４）。動画像バッファ４１Ａ〜４１Ｃへの参照マクロブロックの書き込みの動作を図６及び図７に示す。図６は、動画像バッファ４１ＡのレジスタＡ１に参照マクロブロックの左上の領域を書き込むときの動作を示している。参照動画像記憶手段２から読み出された参照マクロブロック６００の中で左上の１０ピクセル×８ピクセルの領域と、更にその領域の下の１０ピクセル×１ピクセルの領域が選択される。そして、選択された１０ピクセル×９ピクセルの領域が、動画像バッファ４１ＡのレジスタＡ１に書き込まれる。動画像バッファ４１ＡのレジスタＡ２への書き込みも、動画像バッファ４１ＡのレジスタＡ１への書き込みと同様に行われる。図７は、動画像バッファ４１ＡのレジスタＡ３に参照マクロブロックの左下の領域を書き込むときの動作を示している。参照動画像記憶手段２から読み出された参照マクロブロック６００の中で左下の１０ピクセル×８ピクセルの領域と、更にその領域の上の１０ピクセル×１ピクセルの領域が選択される。そして、選択された１０ピクセル×９ピクセルの領域が、動画像バッファ４１ＡのレジスタＡ３に書き込まれる。動画像バッファ４１ＡのレジスタＡ４への書き込みも、動画像バッファ４１ＡのレジスタＡ３への書き込みと同様に行われる。尚、他の動画像バッファ４１Ｂ〜４１Ｃへの書き込みも動画像バッファ４１Ａへの書き込みと同様に行われる。
【００１８】
参照マクロブロックを書き込んだ後で、その書き込んだ参照マクロブロックと、第１符号化マクロブロックバッファ３Ａ若しくは第２符号化マクロブロックバッファ３Ｂに記憶されている符号化マクロブロックとの間のコストを算出する（ステップＳ３０５）。例えば、動画像バッファ４１Ａ〜４１Ｃの状態が図５に示す状態であるとすると、参照動画像記憶手段２から読み出された参照マクロブロックは、動画像バッファ４１Ａの動画像レジスタＡ１、Ａ２及びＡ４と、動画像バッファ４１Ｂの動画像レジスタＢ３に書き込まれる。この場合、コストを算出するときは、動画像バッファ４１Ａの動画像レジスタＡ１、Ａ２及びＡ４と、動画像バッファ４１Ｂの動画像レジスタＢ３を選択して、選択した動画像レジスタから参照マクロブロックを読み出す。そして、読み出した参照マクロブロックと符号化マクロブロックとの間のコストを算出する。コストの算出は、１６ピクセル×１６ピクセルのマクロブロックの他に、８ピクセル×８ピクセル、１６ピクセル×８ピクセル、８ピクセル×１６ピクセルのマクロブロックについても行われる。これらの中でコストが最小のものが選択される。
【００１９】
コストを算出した後、算出したコストの値と、これまでマクロブロック探索ルーチンを実行した結果、座標Ｉの符号化マクロブロックに対して最小になったコストの値とを比較する（ステップＳ３０６）。最小になったコストの値は、最小コストレジスタ４３１に記憶されている。この最小コストレジスタ４３１に記憶されているコストの値と、今回算出したコストの値を比較回路４３２で比較する。比較の結果、今回算出したコストの値が最小コストレジスタ４３１に記憶されているコストの値よりも小さい場合は、最小コストレジスタ４３１及び最小コストバッファ４３３の内容の更新を行う（ステップＳ３０７）。最小コストレジスタ４３１の内容は、今回算出されたコストの値に更新される。また、最小コストバッファ４３３の内容は、今回コストを算出した参照マクロブロックが記憶されている動画像レジスタを表す情報に更新される。一方、今回算出したコストの値が最小コストレジスタ４３１に記憶されているコストの値よりも小さくない場合は、最小コストレジスタ４３１及び最小コストバッファ４３３の内容の更新は行われない。
【００２０】
次に、動き検出の探索範囲の全ての参照マクロブロックについて、符号化マクロブロックとの間のコストの算出が完了したかどうかを確認する（ステップＳ３０８）。コストの算出が完了していない場合は、読み込む参照マクロブロックの領域をずらして、Ｓ３０３の処理から実行する。コストの算出が完了した場合は、コストが最小となった参照マクロブロックを予測マクロブロックとして検出する（ステップＳ３０９）。コストが最小となった参照マクロブロックは、最小コストバッファ４３３の内容が表す動画像レジスタに記憶されている。
【００２１】
マクロブロック探索ルーチンを実行した結果、符号化マクロブロックとの間のコストが最小となった参照マクロブロックが８ピクセル×８ピクセルのマクロブロックである場合、その８ピクセル×８ピクセルのマクロブロックの周辺の動画像データ（１０ピクセル×１０ピクセル）に対してブロック探索を行う。図８にブロック探索ルーチンの動作を示す。
【００２２】
マクロブロック探索ルーチンを実行した結果、符号化マクロブロックとの間でコストが最小となった参照マクロブロックは、動画像バッファ４１Ａ〜４１Ｃのいずれかの動画像レジスタに記憶されている。この動画像レジスタには、例えば、図６及び図７に示すように、１０ピクセル×９ピクセルの動画像データが記憶されている。ブロック探索は、１０ピクセル×１０ピクセルの動画像データに対して行うので、動画像レジスタの各々について、足りない１０ピクセル×１ピクセルの動画像データを、参照動画像記憶手段２から読み出して動画像レジスタに書き込む（ステップＳ８０１）。このときの動画像レジスタの状態を図９に示す。ここでは、マクロブロック探索ルーチンを実行した結果、符号化マクロブロックとの間でコストが最小となった参照マクロブロックが、動画像バッファ４１Ａの動画像レジスタＡ１、Ａ３及びＡ４と、動画像バッファ４１Ｂの動画像レジスタＢ２に記憶されているとする。マクロブロック探索ルーチンが完了した時点で動画像レジスタの各々に記憶されている１０ピクセル×９ピクセルの動画像データに、１０ピクセル×１ピクセルの動画像データを加えたものが動画像レジスタの各々に記憶される。尚、符号化マクロブロックとの間のコストが最小になった参照マクロブロックを記憶する４つの動画像レジスタをブロック探索対象動画像レジスタという。
【００２３】
動画像データを書き込んだ後、ブロック探索対象動画像レジスタに記憶されている１０ピクセル×１０ピクセルの動画像データを４ピクセル×８ピクセル、８ピクセル×４ピクセル、４ピクセル×４ピクセルのブロックに分割する。そして、分割したブロックの各々と符号化マクロブロックとの間のコストを算出する（ステップＳ８０２）。コストが算出されると、算出されたコストの値が、これまでの最小のコストの値よりも小さいかどうかを確認する（ステップＳ８０３）。コストの値が小さい場合は、分割されたブロックを予測マクロブロックとして検出する（ステップＳ８０４）。
【００２４】
尚、マクロブロック探索ルーチン及びブロック探索ルーチンが、検出手段を構成する。
【００２５】
動き検出回路１で、マクロブロック探索ルーチン及びブロック探索ルーチンが実行される様子を図１０に示す。マクロブロック探索ルーチン及びブロック探索ルーチンはパイプライン動作により実行される。まず、座標０の符号化マクロブロックについてのマクロブロック探索ルーチンが第１符号化マクロブロックバッファ３Ａ、参照マクロブロックバッファ４及び第１ＳＡＤ演算回路５Ａを用いて実行される。その結果、座標０の符号化マクロブロックとの間でコストが最小となった参照マクロブロックは、参照マクロブロックバッファ４に記憶されている。マクロブロック探索ルーチンの完了後、座標０の符号化マクロブロックについてのブロック探索ルーチンが、第１符号化マクロブロックバッファ３Ａ、参照マクロブロックバッファ４及び第１ＳＡＤ演算回路５Ａを用いて実行される。この座標０の符号化マクロブロックについてのブロック探索ルーチンの実行と平行して、座標１の符号化マクロブロックについてのマクロブロック探索ルーチンが第２符号化マクロブロックバッファ３Ｂ、参照マクロブロックバッファ４及び第２ＳＡＤ演算回路５Ｂを用いて実行される。座標１の符号化マクロブロックについてのマクロブロック探索ルーチンの実行時は、座標０の符号化マクロブロックとの間でコストが最小となった参照マクロブロックを記憶している位置に、参照動画像記憶手段２から読み込んだ参照マクロブロックを書き込まないようにしている。それ故、座標０の符号化マクロブロックについてのブロック探索ルーチンと、座標１の符号化マクロブロックについてのマクロブロック探索ルーチンを並行して実行することが出来る。このようにパイプライン動作を行うことにより、動き検出を高速に行うことが出来る。
【００２６】
このように第１の実施例の動き検出回路は、１つの参照マクロブロックバッファ４を用いて、マクロブロック探索ルーチン及びブロック探索ルーチンをパイプライン動作により実行している。それ故、参照マクロブロックバッファ４を有効に使用することが出来、参照マクロブロックバッファ４の記憶容量を少なくすることが出来る。マクロブロックを記憶するバッファの記憶容量が少なくてすむため、動き検出回路のために必要な基板上の面積を小さくすることが出来、書き込み及び読み出しの消費電力が低減することが出来る。また、パイプライン動作を行っているので、動き検出を高速に行うことが出来る。
【００２７】
次に、本発明の第２の実施例について説明する。
【００２８】
図１１は、本発明に係る動き検出回路の第２の実施例を示している。動き検出回路１は、バス７を介して接続している外部メモリ６に記憶されている動画像データの符号化を行う際に動き検出を行う。動き検出回路１は、符号化マクロブロックと参照マクロブロックとの間のコストを算出して、符号化マクロブロックとの間のコストが最小となった参照マクロブロックを、その符号化マクロブロックに対応する予測マクロブロックとして検出する。動き検出回路１は、参照フレームの動画像データを記憶する参照動画像記憶手段２と、符号化マクロブロックを記憶する第１符号化マクロブロックバッファ３Ａ及び第２符号化マクロブロックバッファ３Ｂと、参照マクロブロックを記憶する参照マクロブロックバッファ８と、コストを算出する第１ＳＡＤ演算回路５Ａ及び第２ＳＡＤ演算回路５Ｂから構成される。
【００２９】
参照動画像記憶手段２には、符号化マクロブロックの符号化対象フレーム上での座標と同じ座標を中心とする８個の参照マクロブロックが参照フレームから読み出されて記憶される。第１符号化マクロブロックバッファ３Ａ及び第２符号化マクロブロックバッファ３Ｂの各々には、符号化マクロブロックが１つ記憶される。第１ＳＡＤ演算回路５Ａは、第１符号化マクロブロックバッファ３Ａに記憶されている符号化マクロブロックと、参照マクロブロックバッファ８に記憶されている参照マクロブロックとの間のコストを算出する。第２ＳＡＤ演算回路５Ｂは、第２符号化マクロブロックバッファ３Ｂに記憶されている符号化マクロブロックと、参照マクロブロックバッファ８に記憶されている参照マクロブロックとの間のコストを算出する。
【００３０】
参照マクロブロックバッファ８は、参照動画像記憶手段２から参照マクロブロックを読み出して記憶するものである。図１２に参照マクロブロックバッファ８の構成を示す。参照マクロブロックバッファ８は、動画像データを記憶する動画像バッファ８１と、セレクタ８２Ａ〜８２Ｂと、制御回路８３から構成される。動画像バッファ８１は、１つのブロックの周辺の動画像データ（１０ピクセル×１０ピクセル）を記憶することが出来る動画像レジスタを４つ有する。動画像バッファ８１は、制御回路８３からの指令に従い、参照動画像記憶手段２から読み出した動画像データを記憶する。また、動画像バッファ８１は、制御回路８３からの指令に従い、記憶している動画像データを読み出して出力する。セレクタ８２Ａは、制御回路８３からの指令に従い、動画像バッファ８１から出力される動画像データ又は参照動画像記憶手段２から読み出された動画像データのいずれかを選択して、第１ＳＡＤ演算回路５Ａに出力する。セレクタ８２Ｂは、制御回路８３からの指令に従い、動画像バッファ８１から出力される動画像データ又は参照動画像記憶手段２から読み出された動画像データのいずれかを選択して、第２ＳＡＤ演算回路５Ｂに出力する。制御回路８３は、動画像バッファ８１及びセレクタ８２Ａ〜８２Ｂに対する制御や算出されたコストの比較を行う。
【００３１】
尚、制御回路４３と第１ＳＡＤ演算回路５Ａが第１の差分絶対値和算出手段を、制御回路４３と第２ＳＡＤ演算回路５Ｂが第２の差分絶対値和算出手段を構成する。また、制御回路４３とセレクタ８２Ａが第１の参照マクロブロック読出手段を、制御回路４３とセレクタ８２Ｂが第２の参照マクロブロック読出手段を構成する。
【００３２】
図１３に、符号化マクロブロックとの間のコストが最小になる参照マクロブロックを検出するマクロブロック探索ルーチンの動作を示す。マクロブロック探索ルーチンは、第１符号化マクロブロックバッファ３Ａ及び第２符号化マクロブロックバッファ３Ｂの各々に記憶される符号化マクロブロックについて実行される。
【００３３】
まず、動き検出を行う対象となる符号化マクロブロックが外部メモリ６から読み出されて、第１符号化マクロブロックバッファ３Ａ若しくは第２符号化マクロブロックバッファ３Ｂに記憶される（ステップＳ１３０１）。そして、動き検出の探索範囲となる動画像データが外部メモリ６から読み出されて、参照動画像記憶手段２に記憶される（ステップＳ１３０２）。符号化マクロブロックの符号化対象フレーム上での座標をＩとすると、参照フレーム上の座標Ｉを中心とする周辺の８個の参照マクロブロックが動き検出の探索範囲の動画像データとなる。このとき記憶される探索範囲の動画像データを図４に示す。座標Ｉを中心とする周辺の８個の参照マクロブロック４０１〜４０８が参照フレームから読み出されて、参照動画像記憶手段２に記憶される。また、参照動画像記憶手段２から読み出される参照マクロブロックの読み出し範囲５００は、図４に示すように１８ピクセル×１６ピクセルの大きさである。
【００３４】
次に、参照動画像記憶手段２から参照マクロブロックを読み出して、読み出した参照マクロブロックと、第１符号化マクロブロックバッファ３Ａ若しくは第２符号化マクロブロックバッファ３Ｂに記憶されている符号化マクロブロックとの間のコストを算出する（ステップＳ１３０３）。コストの算出は、１６ピクセル×１６ピクセルのマクロブロックの他に、８ピクセル×８ピクセル、１６ピクセル×８ピクセル、８ピクセル×１６ピクセルのマクロブロックについても行われる。これらの中でコストが最小のものが選択される。
【００３５】
コストを算出した後、算出したコストの値と、これまでマクロブロック探索ルーチンを実行した結果、座標Ｉの符号化マクロブロックに対して最小になったコストの値とを比較する（ステップＳ１３０４）。最小になったコストの値は、制御回路８３に記憶されている。この制御回路８３に記憶されているコストの値と、今回算出したコストの値を比較して、今回算出したコストの値が制御回路８３に記憶されているコストの値よりも小さい場合は、制御回路８３が記憶している最小になったコストの値及びそのコストに対応する参照マクロブロックの位置を表す情報を更新する（ステップＳ１３０５）。
【００３６】
次に、動き検出の探索範囲の全ての参照マクロブロックについて、符号化マクロブロックとの間のコストの算出が完了したかどうかを確認する（ステップＳ１３０６）。コストの算出が完了していない場合は、読み込む参照マクロブロックの領域をずらして、Ｓ１３０３の処理から実行する。コストの算出が完了した場合は、コストが最小となった参照マクロブロックを予測マクロブロックとして検出する（ステップＳ１３０７）。そして、コストが最小となった参照マクロブロックを、参照動画像記憶手段２から読み出し、参照マクロブロックバッファ８の動画像バッファ８１に書き込む。このとき、動画像バッファ８１を構成する４つの動画像レジスタの各々に、コストが最小となった参照マクロブロックの周辺画像を含む１０ピクセル×１０ピクセルの動画像データを書き込む。
【００３７】
マクロブロック探索ルーチンを実行した結果、符号化マクロブロックとの間のコストが最小となった参照マクロブロックが８ピクセル×８ピクセルのマクロブロックである場合、その８ピクセル×８ピクセルのマクロブロックの周辺の動画像データ（１０ピクセル×１０ピクセル）に対してブロック探索を行う。図１４にブロック探索ルーチンの動作を示す。
【００３８】
マクロブロック探索ルーチンを実行した結果、符号化マクロブロックとの間でコストが最小となった参照マクロブロックは、動画像バッファ８１に記憶されている。動画像バッファ８１を構成する４つの動画像レジスタの各々に記憶されている１０ピクセル×１０ピクセルの動画像データを４ピクセル×８ピクセル、８ピクセル×４ピクセル、４ピクセル×４ピクセルのブロックに分割する。そして、分割したブロックの各々と符号化マクロブロックとの間のコストを算出する（ステップＳ１４０１）。コストが算出されると、算出されたコストの値が、これまでの最小のコストの値よりも小さいかどうかを確認する（ステップＳ１４０２）。コストの値が小さい場合は、分割されたブロックを予測マクロブロックとして検出する（ステップＳ１４０３）。
【００３９】
尚、マクロブロック探索ルーチン及びブロック探索ルーチンが、検出手段を構成する。
【００４０】
動き検出回路１で、マクロブロック探索ルーチン及びブロック探索ルーチンが実行される様子を図１５に示す。マクロブロック探索ルーチン及びブロック探索ルーチンはパイプライン動作により実行される。まず、座標０の符号化マクロブロックについてのマクロブロック探索ルーチンが第１符号化マクロブロックバッファ３Ａ、参照マクロブロックバッファ８及び第１ＳＡＤ演算回路５Ａを用いて実行される。その結果、座標０の符号化マクロブロックとの間でコストが最小となった参照マクロブロックは、参照マクロブロックバッファ４に記憶される。マクロブロック探索ルーチンの完了後、座標０の符号化マクロブロックについてのブロック探索ルーチンが、第１符号化マクロブロックバッファ３Ａ、参照マクロブロックバッファ８及び第１ＳＡＤ演算回路５Ａを用いて実行される。この座標０の符号化マクロブロックについてのブロック探索ルーチンの実行と平行して、座標１の符号化マクロブロックについてのマクロブロック探索ルーチンが第２符号化マクロブロックバッファ３Ｂ、参照マクロブロックバッファ８及び第２ＳＡＤ演算回路５Ｂを用いて実行される。座標１の符号化マクロブロックについてのマクロブロック探索ルーチンを実行するときは、座標１の符号化マクロブロックの動き検出の探索領域となる動画像データが参照動画像記憶手段２に記憶される。このとき、参照マクロブロックバッファ８には、ブロック探索ルーチンの実行に必要な座標０の符号化マクロブロックとの間でコストが最小となった参照マクロブロックが記憶されている。それ故、座標０の符号化マクロブロックについてのブロック探索ルーチンと、座標１の符号化マクロブロックについてのマクロブロック探索ルーチンを並行して実行することが出来る。このようにパイプライン動作を行うことにより、動き検出を高速に行うことが出来る。
【００４１】
このように第２の実施例の動き検出回路は、１つの参照マクロブロックバッファ８を用いて、マクロブロック探索ルーチン及びブロック探索ルーチンをパイプライン動作により実行している。参照マクロブロックバッファ８は、各々が１０ピクセル×１０ピクセルの動画像データを記憶することが出来る４つの動画像レジスタから構成される動画像バッファ８１を有している。それ故、第１の実施例の動き検出回路よりも更に、マクロブロックを記憶するバッファの記憶容量を少なくすることが出来る。
【００４２】
尚、ここでは１画素精度の動き検出回路について説明したが、整数画素未満の精度の動き検出回路においても、上記説明した実施例と同様の動作を行うことが可能である。
【００４３】
上記説明したように、本発明の動き検出回路によれば、参照マクロブロックバッファを有効に使用して動き検出を行っているので、参照マクロブロックバッファの記憶容量を少なくすることが出来る。それ故、動き検出回路のために必要な基板上の面積を小さくすることが出来、書き込み及び読み出しの消費電力が低減することが出来る。また、パイプライン動作を行っているので、動き検出を高速に行うことが出来る。
【図面の簡単な説明】
【００４４】
【図１】本発明の第１の実施例である動き検出回路を示すブロック図である。
【図２】図１の動き検出回路の参照マクロブロックバッファを示すブロック図である。
【図３】図１の動き検出回路のマクロブロック探索ルーチンの動作を示すフローチャートである。
【図４】図１の動き検出回路の参照動画像記憶手段に記憶される動画像データの例を示すブロック図である。
【図５】図１の動き検出回路の動画像バッファの内容の例を示すブロック図である。
【図６】図１の動き検出回路の動画像バッファへの動画像データの書き込み動作を示すブロック図である。
【図７】図１の動き検出回路の動画像バッファへの動画像データの書き込み動作を示すブロック図である。
【図８】図１の動き検出回路のブロック探索ルーチンの動作を示すフローチャートである。
【図９】図１の動き検出回路の動画像バッファの内容の例を示すブロック図である。
【図１０】図１の動き検出回路のパイプライン動作を示すブロック図である。
【図１１】本発明の第２の実施例である動き検出回路を示すブロック図である。
【図１２】図１１の動き検出回路の参照マクロブロックバッファを示すブロック図である。
【図１３】図１１の動き検出回路のマクロブロック探索ルーチンの動作を示すフローチャートである。
【図１４】図１１の動き検出回路のブロック探索ルーチンの動作を示すフローチャートである。
【図１５】図１１の動き検出回路のパイプライン動作を示すブロック図である。
【符号の説明】
【００４５】
１  動き検出回路
２  参照動画像記憶手段
３Ａ  第１符号化マクロブロックバッファ
３Ｂ  第２符号化マクロブロックバッファ
４、８  参照マクロブロックバッファ
５Ａ  第１ＳＡＤ演算回路
５Ｂ  第２ＳＡＤ演算回路
６  外部メモリ
７  バス
４１Ａ〜４１Ｃ、８１  動画像バッファ
４２Ａ〜４２Ｂ、８２Ａ〜８２Ｂ  セレクタ
４３、８３  制御回路
【図１】
2009055291.tif 000003
【図２】
2009055291.tif 000004
【図３】
2009055291.tif 000005
【図４】
2009055291.tif 000006
【図５】
2009055291.tif 000007
【図６】
2009055291.tif 000008
【図７】
2009055291.tif 000009
【図８】
2009055291.tif 000010
【図９】
2009055291.tif 000011
【図１０】
2009055291.tif 000012
【図１１】
2009055291.tif 000013
【図１２】
2009055291.tif 000014
【図１３】
2009055291.tif 000015
【図１４】
2009055291.tif 000016
【図１５】
2009055291.tif 000017