"ビデオプロセッサであって、以前のフレームにおける一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するように構成され、徹底的な探索と1つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行することが可能なプログラマブル動き推定器と、前記探索の1つを実行するために前記動き推定器をプログラムするように構成されたコントローラと、を具備することを特徴とするビデオプロセッサ。前記動き推定器はさらに、前記動きベクトルを推定するように構成されたSAD計算エンジンを具備する請求項1に記載のビデオプロセッサ。前記SADエンジンは、ツリーアーキテクチャを具備する請求項2に記載のビデオプロセッサ。前記推定器はメモリを含み、前記コントローラは、前記メモリに指令をロードすることによって前記動き推定器をプログラムするように構成された請求項1に記載のビデオプロセッサ。前記動き推定器はさらに、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することによって前記動きベクトルを推定するように構成され、評価されるマクロブロックの数は、前記コントローラによって前記メモリにロードされる1つまたはそれ以上の指令によってプログラム可能である請求項4に記載のビデオプロセッサ。評価される前記マクロブロックの各々間の距離は、前記1つまたはそれ以上の指令によってプログラム可能である請求項5に記載のビデオプロセッサ。前記アンカーポイントに関して評価されたミクロブロックの1つの位置は前記指令の1つまたはそれ以上によってプログラム可能である請求項5に記載のビデオプロセッサ。前記動き推定器はさらに、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価して、前記コントローラによって前記メモリにロードされた1つまたはそれ以上の指令に応答して評価されるマクロブロックの1つを選択することによって、前記動きベクトルを推定するように構成された請求項4に記載のビデオプロセッサ。前記動き推定器はさらに、前記現在のフレームにおけるマクロブロックに最も近い一致をもつと評価されたマクロブロックの前記1つを選択するように構成された請求項8に記載のビデオプロセッサ。前記動き推定器はさらに、前記現在のフレームのマクロブロックと、前記以前のフレームにおいて評価されたマクロブロックの各々間のSADを計算するように構成された請求項9に記載のビデオプロセッサ。ビデオプロセッサであって、メモリを有するプログラマブル動き推定器であって、以前のフレームの一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するように構成され、前記探索は前記以前のフレームのアンカーポイントから離れた複数のマクロブロックの評価を含むプログラマブル動き推定器と、前記メモリに指令をロードすることによって前記動き推定器をプログラムするように構成されたコントローラであって、評価されるマクロブロックの数と、前記アンカーポイントに関して評価されるマクロブロックの1つの位置と、評価されるマクロブロックの各々間の距離とは、前記メモリにロードされる1つまたはそれ以上の指令によってプログラムされるコントローラと、を具備するビデオプロセッサ。前記動き推定器はさらに、前記動きベクトルを推定するように構成されたSAD計算エンジンを具備する請求項11に記載のビデオプロセッサ。前記SAD計算エンジンは、ツリーアーキテクチャを具備する請求項12に記載のビデオプロセッサ。前記動き推定器はさらに、前記コントローラによって前記メモリにロードされた1つまたはそれ以上の指令に応答して、前記評価されたマクロブロックの1つを選択することによって前記動きベクトルを推定するように構成された請求項11に記載のビデオプロセッサ。前記動き推定器はさらに、前記現在のフレームのマクロブロックに最も近い一致を有する評価されたマクロブロックの前記1つを選択するように構成された請求項14に記載のビデオプロセッサ。前記動き推定器はさらに、前記現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のSADを計算するように構成されたSAD計算エンジンを具備する請求項15に記載のビデオプロセッサ。ビデオ処理方法であって、指令を受信することと、以前のフレームにおける一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定することであって、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することと、を具備し、前記受信した指令の1つまたはそれ以上は、評価されたマクロブロックの数と、前記アンカーポイントに関して評価されたマクロブロックの1つの位置と、前記評価されたマクロブロックの各々間の距離と、を含むビデオ処理方法。前記動きベクトルの推定は、前記受信した指令の1つまたはそれ以上に応答して評価されたマクロブロックの1つを選択することをさらに具備する請求項17に記載の方法。評価されたマクロブロックの前記選択された1つは、前記現在のフレームのマクロブロックに対して最も近い一致をもつマクロブロックである請求項18に記載の方法。評価されたマクロブロックの前記1つの選択は、前記現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のSAD計算に基づく請求項18に記載の方法。前記動きベクトルの推定はさらに、前記1つまたはそれ以上の受信した指令に応答して、第2のアンカーポイントから離れた複数のマクロブロックを評価することを具備し、前記第2のアンカーポイントは前記第1のアンカーポイントから離れたマクロブロックの選択された1つである請求項18に記載の方法。前記第2のアンカーポイントから離れた前記マクロブロックの評価に対する1つまたはそれ以上の受信された指令は、前記第2のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離を含み、前記第2のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離は、前記アンカーポイントから離れた前記評価されたマクロブロックの各々間の距離よりも小さい請求項21に記載の方法。ビデオプロセッサであって、以前のフレームの一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するための動き推定手段であって、徹底的な探索と1つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行可能である動き推定手段と、前記探索の1つを実行するために前記動き推定手段をプログラムするための制御手段と、を具備するビデオプロセッサ。前記動き推定手段はさらに、前記以前のフレームのアンカーポイントから離れた複数のマクロブロックを評価することによって前記動きベクトルを評価するように構成され、評価されるマクロブロックの数は、前記コントロール手段によってプログラム可能である請求項23に記載のビデオプロセッサ。評価された前記マクロブロックの各々間の距離は、前記コントロール手段によってプログラム可能である請求項24に記載のビデオプロセッサ。前記アンカーポイントに関して評価された前記マクロブロックの1つの位置は、前記コントロール手段によってプログラム可能である請求項24に記載のビデオプロセッサ。ビデオ処理方法を実行するためにコンピュータによって実行可能な指令からなるプログラムを具現化するコンピュータ読み取り可能な媒体であって、前記方法は、指令を受信することと、以前のフレームの一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定することであって、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することを含むことと、を具備し、前記受信した指令の1つまたはそれ以上は、評価されたマクロブロックの数と、前記アンカーポイントに関して評価された前記マクロブロックの1つの位置と、評価された前記マクロブロックの各々間の距離とを含むコンピュータ読み取り可能な媒体。前記動きベクトルの前記推定はさらに、前記受信した指令の1つまたはそれ以上に応答して評価された前記マクロブロックの1つを選択することを具備する請求項27に記載のコンピュータ読み取り可能な媒体。評価されたマクロブロックの前記選択された1つは、前記現在のフレームのマクロブロックに対して最も近い一致をもつマクロブロックである請求項28に記載のコンピュータ読み取り可能な媒体。評価された前記マクロブロックの前記1つの評価は、現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のSAD計算に基づく請求項28に記載のコンピュータ読み取り可能な媒体。前記動きベクトルの推定はさらに、前記受信した指令の1つまたはそれ以上に応答して第2のアンカーポイントから離れた複数のマクロブロックを評価することをさらに具備し、前記第2のアンカーポイントは前記第1のアンカーポイントから離れたマクロブロックの前記選択された1つである請求項28に記載のコンピュータ読み取り可能な媒体。前記第2のアンカーポイントから離れたマクロブロックの評価に対する受信した指令の1つまたはそれ以上は、前記第2のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離を含み、前記第2のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離は、前記アンカーポイントから離れた前記評価されたマクロブロックの各々間の距離よりも小さい請求項31に記載のコンピュータ読み取り可能な媒体。添付の図面に関連して以下に記述される詳細な説明は、ビデオプロセッサの種々の実施形態を説明するためのものであり、ビデオプロセッサが実行されるただ1つの実施形態のみを説明することを意図しているわけではない。詳細な説明はビデオプロセッサの完全な理解を提供するための特殊な説明を含む。しかしながら、当業者ならば、ビデオプロセッサがこれらの特殊な説明なしに実行されることを理解するであろう。ある場合には、ビデオプロセッサの概念がぼけるのを避けるために、既知の構造及び要素はブロック図で示される。図1は、遠隔通信装置と一体化するのに適したビデオプロセッサの一例を示すブロック図である。遠隔通信装置は、ビデオ放送、ビデオ会議、ビデオ電話、ビデオ伝送を伴う他の任意の応用を支持する。ここでの開示全体にわたって記述される種々の概念は、特に、サイズとバッテリ電力が永久的な問題である移動端末に特に好適する。移動端末は、無線電話、パーソナルデジタルアシスタントPDA、ラップトップコンピュータ、他の任意の移動体装置である。ビデオプロセッサ100は、イメージをセンサ104に集束させるレンズ102を含む。センサ104は電荷結合デバイスCCD、相補的金属酸化物半導体CMOSイメージセンサ、あるいは他の任意のセンサである。ビデオフロントエンドVFE106はセンサ104によって獲得されたイメージを処理するのに用いられる。VFE106によって実行される処理は、ホワイトバランス、カラー補正、ガンマ調整、及び/または他の処理機能を含む。処理されたビデオイメージは観察のために表示装置110に供給及び/または圧縮のためにビデオエンコーダ112に供給される。圧縮されたビデオイメージはメモリ114に格納及び/またはネットワークまたは遠隔通信リンクを介して送信するためにトランスミッタ116に供給される。コントローラ118は、ビデオプロセッサ100の動作を同期させるとともに制御するのに用いられる。コントローラ118は、埋め込まれた通信ソフトウエアを備えたデジタルシグナルプロセッサDSPとして記述されるが、他のアーキテクチャでも実行可能である。図2は、ビデオプロセッサ内のビデオエンコーダの一例を示すブロック図である。ビデオエンコーダ112は、種々のマルチメディア環境においてビデオデータの効率のよい記憶、送信及び操作のために用いられる。ビデオ符号化処理は、以前のフレームからの最善一致マクロブロックを現在のフレームからの対応するマクロブロックから減算することによって開始され、これによって二者間の相違のみが符号化される。このことは、背景などの変化しないフレーム領域は符号化されないことを意味する。動き推定器202は、以前のフレームの当該位置からのマクロブロックの変位を表すために、現在のフレームの各マクロブロックに対する動きベクトルを決定するのに用いられる。動き推定器202は、最善一致を見つけるために、現在のフレームの各マクロブロックを以前のフレームの周囲の領域と比較することによってこの機能を実行する。動き補償器204は、動きベクトルに基づいて以前のフレームの最善一致マクロブロックを取り込むのに用いられる。減算器206は、以前のフレームからの動き補償されたマクロブロックと、現在のフレームからのマクロブロックの相違を計算するのに用いられる。離散コサイン変換、整数変換IntegerTransformあるいは他の任意の変換208が、減算器206からの残余情報を離散的な空間周波数の係数に変換するのに用いられる。ここでの変換動作は、当該変換が1次元信号ではなく2次元マクロブロックに関して実行される点を除いて、高速フーリエ変換FFTを用いて時間領域の信号を周波数領域の信号に変換することと類似している。この変換動作は、マクロブロックのエネルギを小さな数の係数に圧縮するのに特に好適する。量子化モジュール210は変換器208によって生成された係数をさらに減らすのに用いられる。量子化モジュール210は、ゼロに近い係数をゼロに設定してわずかな非ゼロの係数のみを残すことによって当該係数の精度precisionを減らす。これは、整数で各係数を割り算し、それ結果を切り捨てることによって実行される。エンコーダ212は、量子化された変換係数をメモリに格納あるいはネットワークあるいは遠隔通信リンクを介して送信するに先立って、当該変換係数を圧縮するのに用いられる。多くの既知の圧縮アルゴリズムを使用可能である。しばしば使用されている方法としては、発生頻度の高い係数を短い二進符号で置き換えるとともに、発生頻度の低い係数を長い二進符号で置き換える方法がある。これらの符号は、同期及び制御情報と組み合わされて、符号化されたビットストリームとなる。ここでの制御情報は、受信側で動き補償されたフレームを再構成するのに必要となる動きベクトルを含む。現在のフレームは、次のフレームが符号化されるときの基準フレームとして用いるために記憶される。現在のフレームを単純にメモリにコピーするのではなく、量子化された変換係数は、逆量子化器214によって逆量子化されて、逆変換器216を用いて逆変換された後、加算器218で動き補償されたフレームに加算される。これによって再構成されたフレームが生成されてメモリ220に記憶される。この処理は、メモリ220に記憶されるフレームのコンテンツが受信器で再構成されるフレームと同一であることを保証する。次のフレームが符号化されるときに、動き推定器202は、メモリ220に記憶されているフレームのコンテンツを以前のフレームとして使用して動き補償のための最善一致領域を決定する。ビデオ符号化処理における多くの機能は、計算能力及びメモリ帯域の点において汎用プロセッサGPPの実行能力を超える。一方、ビデオ符号化のみに専用されるアーキテクチャは高いパフォーマンスを発揮するが、柔軟性の点で劣る。例として、ハードウェアで実現される動き補償は、単一の探索アルゴリズムに制限される。パフォーマンスと柔軟性との間の適度のバランスを維持するために、デジタルシグナルプロセッサDSPあるいは他の処理装置がプログラマブルハードウェアと組み合わせて用いられる。この構成において、DSPは種々のハードウェア要素のプログラミングと実行とを制御する。このようなアーキテクチャの一例を動き推定に関連して以下に説明する。図3において、DSP118は、動き推定器202を実装するのに用いられるハードウェアをプログラムするのに用いられる。ハードウェアは動き推定を実行するのに要する計算能力を提供し、DSPはマルチメディア環境に応じて任意の探索アルゴリズムをプログラムすることに対する柔軟性を保持する。DSP118は、指令をメモリ302にロードすることによって動き推定器202をプログラムする。デコーダ304は、メモリ302内の指令を復号するのに用いられ、サーチャ306は、一連のフレームにわたってマクロブロックの動きを推定するのに用いられる。サーチャ306は、ツリーアーキテクチャを備えたSADエンジンとして実装される。ツリーアーキテクチャは、メモリ202内の指令によって記述される限定された探索のための探索位置を選択するのに良好な柔軟性を提供する。図4は、SAD計算エンジンのためのツリーアーキテクチャの一例を示している。ツリーアーキテクチャは、入力において、任意の数の絶対差ADモジュールによって構成され、ここでは8個である。8個のADモジュール402a-402hは、現在のフレームに対するマクロブロック内の8個のピクセル画素からの情報と、以前のフレームにおけるマクロブロック内の8個のピクセルからの情報とを各サイクルごとに受信するように構成される。各ADモジュールは、入力された2つの対応するピクセル間の相違の絶対値を計算する。加算器404は、8つの絶対差の値の和を求めるのに用いられ、アキュムレータ406は、2つのマクロブロック内のすべての対応するピクセルにわたって絶対差の値を計算するのに十分な多数のクロックサイクルにわたる結果を蓄積するのに用いられる。16×16ピクセルのアレイからなるマクロブロックにおいて、加算器404の出力は、現在のフレーム内のマクロブロックと、以前のフレーム内のマクロブロック間の絶対差の値を計算するのに32回蓄積される。動き推定処理の柔軟性を増加するために、新たな指令セットが定義される。ハードウェアの要求を減らすとともに、指令が高速なフレームレートで大きなフレームに対してリアルタイムで復号かつ実行されることを保証するために、指令の数を制限されなければならない。ビデオエンコーダの一実施形態において、DSPは4つの異なるタイプの指令を使用し、これらは動き推定器にプログラムされる。当該指令は、探索タスク指令、ループ指令、新たな繰り返し指令、探索の終了指令を含む。以下に詳細に説明するように、これらの指令は、動き推定のための任意の探索アルゴリズムをプログラムするのに十分な柔軟性を有する。探索タスク指令は、動き推定器がそのフレームの同じ水平、垂直または対角線に沿って対応する位置をもつ探索空間内の任意の数のマクロブロック位置を探索することを可能にする。探索タスク指令は、探索すべきマクロブロックの数を識別するNUMSTEPと、アンカーポイントに関して探索すべき第1のマクロブロックの位置を識別する座標と、探索すべき残りのマクロブロックの位置を計算するための座標とを含む。探索される各マクロブロック位置ごとにサーチャはSADを計算する。ループ指令は、以前の探索タスク指令に戻るループバックするために用いられる。この指令は、新たなアンカーポイントを除いてサーチャが以前に実行された一ブロックの指令を反復することを行わせる。特に、当該ポイントまで計算された最低のSADは、新たなアンカーポイントとして用いられる。ループ指令は、サーチャがどの指令に戻るべきであるかを識別するループバックアドレスLOOPADDRを含む。ループ指令が実行される最大の回数は、ループ指令内のMAXNUMLOOPコードによって制御される。サーチャがいったん前のブロックの指令を最大の回数だけ反復すると、当該ループを抜け出て次の指令を実行する。サーチャの一実施形態において、新たなアンカーポイントと前のアンカーポイント間の距離がしきい値を超えたならば、ループ指令のみが実行される。新たなアンカーポイントと前のアンカーポイント間の距離が小さすぎるならば、サーチャはループを抜け出て次の指令を実行する。新たな反復指令は、探索タスク指令またはループ指令に従う。それは、当該ポイントまで計算された最低のSADに対する座標を、次の探索タスク指令に対する新たなアンカーポイントして選択するのに用いられる。新たな反復指令に続く、新たな探索タスク指令は、探索空間の限られた領域内でより徹底的な探索を実行するのに用いられる。これは、1第1のマクロブロック探索及びSAD計算を実行するために新たなアンカーポイントからのオフセットを減らすことによって、及び2残りのマクロブロック探索とSAD計算間の距離を減らすことによって達成される。図5は、3ステップ探索アルゴリズムの一例を示すグラフ図であり、当該探索を実行するべく動き推定器内のメモリにプログラムされた指令が以下の表1に示されている。最初の探索タスク指令のためのx、y座標に対するアンカーポイントはいずれも0に設定される。この例において、DSPによって12の指令が動き推定器内のメモリにロードされる。指令は、デコーダによって順次メモリから読み出される。各指令における2ビットのTASKKEYは、指令の種類すなわち、探索タスク指令、ループ指令、新たな反復指令、あるいは探索指令の終了を識別するのに用いられる。各探索は復号され、続いて動き推定器内のサーチャによって実行される。各探索タスク指令ごとに、SAD計算エンジンは、現在のフレームのマクロブロックと、当該指令において識別された以前のフレームのすべてのマクロブロック間のSADを計算するとともに、最小のSAD値と対応するマクロブロック位置とを維持する。探索の第1のステップにおいて、9個のピクセル502a-502iからなるグリッドを形成するために、3つの探索タスク指令が使用される。ここで、グリッドの各ピクセルは探索すべき1つのマクロブロックに対応する。ピクセル502a-502iは、水平方向及び垂直方向において隣接するピクセルから3ピクセルだけ離間される。メモリアドレス0からの第1の指令のNUMSTEP部は、3つのマクロブロック探索を開始する。第1の指令の座標は、探索すべき第1のマクロブロック502aを探索する。この例において、第1のマクロブロック502aは、初期のアンカーポイント0,0から、-3,-3すなわち、負の水平方向に3ピクセル位置及び負の垂直方向に3ピクセル位置だけずれているoffset。第1の指令における座標は、探索すべき残りのマクロブロックを探索する。特に、探索すべき残りのマクロブロック502b、502cの各々は、前のマクロブロックから3,0ステップで探索される。すなわち、第2のマクロブロック502bは、第1のマクロブロック502aと同じ垂直位置でかつ右に3ピクセル離れた位置で探索される。次に、メモリアドレス1での第2の指令が復号されて実行される。第2の指令のNUMSTEP部はここでも3つのマクロブロックが探索されることを示しているが、今度は各マクロブロックは、探索された第1の3個のマクロブロックから真下に3ピクセル離れた位置で探索される。第2の指令の座標は、初期のアンカーポイント0,0から-3,0ステップすなわち、負の水平方向に3ピクセル離れた位置で探索すべき第4のマクロブロック502dを探索する。第2の指令の座標は、探索すべき残りのマクロブロックを探索する。特に、探索すべき残りのマクロブロック502e、502fの各々は、前のマクロブロックから3,0ステップで探索される。すなわち、第5のマクロブロック502eは、第4のマクロブロック502dと同じ垂直位置でかつ右に3ピクセル離れた位置で探索されるとともに、第6のマクロブロック502fは、第5のマクロブロック502eと同じ垂直位置でかつ右に3ピクセル離れた位置で探索される。次に、メモリアドレス2の第3の指令が復号されて実行される。この指令は、水平方向において3ピクセルだけ離れている3つのマクロブロック502g-502iが探索されるという点において、先立つ2つと類似している。この情報は、NUMSTEP部及び第3の指令の座標内に含まれる。この指令の相違は、3つのマクロブロック502g-502iが第4、第5、第6のマクロブロック502d-502fから3ピクセルだけ真下で探索されることである。これらの3つのマクロブロック502g-502iの位置は、初期のアンカーポイント0,0から3,-3ステップすなわち、負の水平方向に3ピクセル位置かつ正の水平方向に3ピクセル位置で探索すべき第7のマクロブロック502gを探索する第3の指令における座標によって駆動される。第2の探索ステップを開始する前に、新たな反復が実行される。この新たな反復は、メモリアドレス3からの第4の指令によって促される。それを新たな反復指令として識別する、第4の指令に対するTASKKEYは、SAD計算エンジンが最小のSADをもつ以前のフレームにおけるマクロブロックで新たなアンカーポイントを生成することを行わせる。前の反復から最低のSADをもつマクロブロックの周りで第2の反復のマクロブロック探索を実行するために次の3つの指令が用いられる。マクロブロック探索位置の第2の反復は、8ピクセル504a-504hからなるグリッドによって図5に示される。ここで各ピクセル504a-504hは、探索すべき1つのマクロブロックを示している。探索の第2の反復は、水平及び垂直方向に隣接ピクセルから2ピクセルだけ離れている各ピクセル504a-504hにより焦点が当てられている。メモリアドレス4からの第5の指令は、3つのマクロブロック探索を行う。ここで、第1のマクロブロック504aは、負の水平及び垂直方向に新たなアンカーポイント3,-3から2ピクセルだけずれた位置で探索される。探索すべき残りの2つのマクロブロック504b、504cは、直前に探索されたマクロブロックから水平方向に2ピクセル位置だけ離れた位置にある。すなわち、探索される第2のマクロブロック504bは、探索される第1のマクロブロック504aの右から2つのピクセル位置にあり、探索される第3のマクロブロック504cは、探索される第2のマクロブロック504bの右から2つのピクセル位置にある。メモリアドレス5からの第6の指令は、第1及び第3のマクロブロック504a、504cから垂直方向に2ピクセルだけ真下の2つのマクロブロック504d、504eの探索を行う。同様にして、メモリアドレス6からの第7の指令は、第1、第2、第3のマクロブロック504a-504cから垂直方向に4ピクセルだけ真下の3つのマクロブロック504f-504hの探索を行う。第2の反復から最低のSADをもつマクロブロックの周りで最後の反復のマクロブロック探索を促すために次の4つの指令が用いられる。マクロブロック探索位置の最後の反復は、8ピクセル504a-504iからなるグリッドによって図5に示される。ここで各ピクセル504a-504iは、探索すべき1つのマクロブロックを示している。探索の最後の反復は第2の反復よりも、水平及び垂直方向に隣接ピクセルから1ピクセルだけ離れている各ピクセル504a-504iにより焦点が当てられている。メモリアドレス11の最後の指令は、探索指令の終了である。探索指令の終了は、当該探索を停止する。探索の終了位置で、動きベクトルは、最低のSADをもつマクロブロック位置から計算される。図6は、SAD計算エンジンの動作を示すフローチャートである。この例において、2ビットのTASKKEYは、符号00を探索タスク指令に、01を新たな反復指令に、10をループ指令に、11を探索指令の終了に割り当てる。これらのビット割り当ては、SAD計算エンジンの動作を示すために行われる。実際の応用において、ビット割り当ては、設計者の嗜好によって変化する。ステップ602において、最初のアンカーポイントが選択される。当該アンカーポイントの位置は、現在のフレームのマクロブロックに対応するように選択されるか、あるいは知的に選択される。以前のフレームのマクロブロックの位置の知的な選択は、任意の数の前のビデオフレームにわたる現在のフレームのマクロブロックの動きを観察することに基づいている。どのような場合においても、現在のフレームのマクロブロックと以前のフレームのマクロブロック間の、選択されたアンカーポイントでのSADがステップ604で計算されて記憶される。次に、ステップ606において、メモリから指令が取り出されて復号される。SAD計算エンジンは、ステップ608でTASKKEYをチェックして、実行すべき指令のタイプを決定する。TASKKEY符号が00ならば、SAD計算エンジンは、当該指令を探索タスク指令として識別する。SAD計算エンジンは、ステップ610で指令内のOFFSETXOFFSETY座標を使用して、探索すべき第1のマクロブロックを探索することによって、探索タスク指令を実行し、ステップ612でSADを計算する。計算されたSADが記憶されているSADよりも小さいならば、記憶されているSADは棄却されて計算されたSADが記憶される。計算されたSADが記憶されているSADよりも大きいならば、計算されたSADが棄却される。この動作は、ステップ614において実行される。SAD計算エンジンは、当該反復において識別されたすべてのマクロブロックがステップ616で探索されたか否かを調べるために、指令のNUMSTEP部を調べる。そうでないならば、SAD計算エンジンは、ステップ618において指令の座標を用いて次のマクロブロックを探索し、SADを計算するためにステップ612に戻る。一方、SAD計算エンジンは、取り込むべき次の指令を促してステップ606で復号する。次の指令に対するTASKKEY符号が01ならば、SAD計算エンジンは、新たな反復を開始する。特に、ステップ619において、SAD計算エンジンは、以前の反復から最低のSADをもつマクロブロック位置すなわち、記憶されたSADに対するマクロブロック位置で新たなアンカーポイントを設定する。次にSAD計算エンジンは、ステップ606に戻って次の指令を取り込んで復号する。次の指令に対するTASKKEY符号が10ならば、SAD計算エンジンは、ステップ620で以前の反復から最低のSADをもつマクロブロック位置で新たなアンカーポイントを設定する。次に、SAD計算エンジンは、ステップ622で新たなアンカーポイントと以前の反復からのアンカーポイント間の距離を比較する。SAD計算エンジンが当該距離は小さすぎると決定したならば、処理はループを抜け出してステップ606で取り込むべき次の指令を促して復号する。一方、SAD計算指令は、ステップ624でLOOPADDRによって示された指令に戻って新たなアンカーポイントから指令を実行する。SAD計算エンジンは、それがループ指令に到達するまで指令の実行を順次継続して行う。その時点で、SAD計算エンジンはステップ626で、MAXNUMLOOP符号において示されるように、以前のブロックの指令が最大回数だけ実行されたか否かを決定する。SAD計算エンジンが最大回数だけMAXNUMLOOP符号において示される以前の指令に戻らなかったならば、ステップ624において当該指令に再び戻る。さもなければ、ループを抜け出てステップ606で次の指令が取り込まれて復号されるのを促す。次の指令に対するTASKKEY符号が11ならば、SAD計算エンジンは、当該指令を探索指令の終了として識別する。この場合、SAD計算エンジンすなわち他のエンティティは、ステップ630で以前のフレームのマクロブロック位置からの現在のフレームのマクロブロックのずれを表す動きベクトルを計算する。以前のフレームのマクロブロックの位置は、記憶されたSADに対応する。ここに開示された実施形態に関連して記述された種々の例示的な論理ブロック、モジュール、回路、要素、及び/または成分は、汎用プロセッサ、デジタルシグナルプロセッサDSP、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGAあるいは他のプログラマブルロジック要素、離散ゲートまたはトランジスタロジック、離散ハードウェア要素、あるいはここに記述された機能を実行するように設計された上記の任意の組み合わせ、によって実現あるいは実行される。汎用プロセッサは、マイクロプロセッサであり、その代わりに、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、あるいはステートマシンである。プロセッサは、計算要素の組み合わせとして実現される。例えばプロセッサは、DSPと、1つのマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアに関連する1つまたはそれ以上のマイクロプロセッサあるいは他の任意の構成との組み合わせとして実現される。ここに開示された実施形態に関連して記述された方法またはアルゴリズムは、ハードウェアによって直接あるいは、プロセッサによって実行されるソフトウエアモジュールあるいは前記2つの組み合わせによって実現される。ソフトウエアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、あるいは当業界で既知の任意の形態の記憶媒体に常駐される。記憶媒体は、プロセッサが記憶媒体から情報を読み出すことができるとともに、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。あるいは、記憶媒体はプロセッサと一体化される。上記した説明は、当業者がここに記述された種々の実施形態を実施できるようになされたものである。これらの実施形態に対する種々の変形例は当業者が容易に着想できるものであり、ここで定義された一般的な考えは他の実施形態にも適用される。すなわち、特許請求の範囲は、ここに示された実施形態に限定されるべきではなく、クレームの文言に相応する最大の権利範囲が与えられるべきである。単数形で記述された要素に対する参照は、特にそのように記述されない限りにおいて1つ及びただ1つを意味することを意図しているのではなく、1つまたはそれ以上を意味することを意図している。当業者に知られたあるいは知られることになる、ここでの開示全体にわたって記述された種々の実施形態の要素に対してすべての構造上及び機能上の同等物は、参照によってここに組み込まれ、特許請求の範囲に含まれるものである。さらに、そのような開示が特許請求の範囲に明示的に記述されているか否かとは無関係に、ここに開示された内容はどんなものであっても公に公開されることを意図していない。当該要素が手段を用いて明示的に記載されているかあるいは方法クレームならば要素がステップの文言を用いて記述されているのでないならば、どのようなクレーム要素であっても米国特許法第112条、第6パラグラフの規定のもとに解釈されるべきではない。"