"符号化されるビデオフレームのブロックを予測するための複数のサブペル位置のためにアダプティブ動き補償フィルタセットを符号化する動画符号化デバイスにより実装される方法であって、前記動画符号化デバイスにより、それぞれ前記複数のサブペル位置に対応している複数のサブペル位置群に分類化された複数の動き補償フィルタを含むコードブックを取得する段階であって、前記複数のサブペル位置群それぞれは、前記複数のサブペル位置のいずれか対応するものにおける画像の複数のブロックを補間するのに適した複数の動き補償フィルタを含む段階と、前記動画符号化デバイスにより、前記動画符号化デバイスによる符号化のために符号化されていない動画フレームを取得する段階と、前記動画符号化デバイスにより、前記動画フレームの少なくとも一部をビットストリームに符号化する段階であって、前記動画フレームの少なくとも一部は、複数の画像コンテンツブロックを含む段階と、前記動画フレームの少なくとも一部の符号化中に、前記動画符号化デバイスは、前記コードブックから、前記複数の動き補償フィルタのサブセットを、前記複数の画像コンテンツブロックを予測するのに適したものとして選択する段階であって、前記選択されるサブセットは、前記複数のサブペル位置群それぞれの1つを含む段階と、前記ビットストリームに、前記コードブックの前記複数の動き補償フィルタのうちの前記選択されたサブセットを特定するサブペルフィルタコードを含める段階とを行う段階を実行する、方法。前記複数の動き補償フィルタの前記サブセットを選択する段階は、前記複数の動き補償フィルタの複数の予め定められたサブセットの1つを選択する段階を有する、請求項1に記載の方法。前記ビットストリームに含まれる前記コードは、前記複数の予め定められたサブセットのうちから前記選択されるサブセットを特定するインデックスを含む、請求項2に記載の方法。前記複数の動き補償フィルタの複数の予め定められたサブセットの1つを選択する段階は、前記複数の画像コンテンツブロックそれぞれについて、前記複数の動き補償フィルタの複数の個々の符号利得を決定する段階と、前記決定された複数の個々の符号利得を利用して、前記複数の画像コンテンツブロックに適用する場合における、前記複数の動き補償フィルタの前記複数の予め定められたサブセットそれぞれの累積符号利得を決定する段階と、前記複数の画像コンテンツブロックの好適な累積符号利得を有する前記複数の予め定められたサブセットの1つを選択する段階とを有する、請求項2に記載の方法。前記複数の画像コンテンツブロックに適用するデフォルトのフィルタセットについてデフォルトの累積符号利得を決定する段階であって、前記デフォルトのフィルタセットは、前記複数のサブペル位置にそれぞれ対応する複数のデフォルトのサブペル動き補償フィルタを含む段階と、前記好適な累積符号利得が前記デフォルトの累積符号利得より好適であると判断する段階とをさらに備える、請求項4に記載の方法。複数の整数位置動き補償フィルタを取得する段階と、前記動画フレームの少なくとも一部の符号化中に、前記動画符号化デバイスが、前記複数の整数位置動き補償フィルタのいずれか1つを、前記複数の画像コンテンツブロックを予測するために適したものとして選択する段階とをさらに備える、請求項1から5のいずれか一項に記載の方法。前記複数の整数位置動き補償フィルタのうちの前記選択したものが、前記複数の動き補償フィルタのうちの前記選択したサブセットよりも符号利得が良いと判断する段階と、前記動画符号化デバイスが生成する前記ビットストリームに、前記複数の整数位置動き補償フィルタのうちの前記選択したものを特定する整数フィルタコードと、前記動画フレームの前記少なくとも一部の前記ビットストリームに、前記整数フィルタコードが含まれていることを示す整数フィルタのフラグとを含める段階とをさらに備える、請求項6に記載の方法。前記コードブックはさらに、前記複数の整数位置動き補償フィルタを含む、請求項6に記載の方法。前記複数の整数位置動き補償フィルタを取得する段階は、整数位置コードブックを取得する段階を含む、請求項6に記載の方法。前記コードブックを取得する段階は、前記複数のサブペル位置にそれぞれ対応する複数のデフォルトの動き補償フィルタを決定する段階と、前記複数のサブペル位置それぞれについて、i前記複数のデフォルトの動き補償フィルタの対応するものを繰り返し改良して、現在のサブペル位置に対応する複数の改良された動き補償フィルタを生成することと、ii前記複数の改良された動き補償フィルタにそれぞれ対応する複数の符号利得を決定することと、iii前記決定された複数の符号利得に従って、前記生成された複数の改良された動き補償フィルタから、前記現在のサブペル位置に対応している良好なパフォーマンスの動き補償フィルタのサブペル位置群を選択することとを行うこととを少なくとも行うことで、前記複数のサブペル位置にそれぞれ対応する複数のサブペル位置群を生成する段階とを含む、請求項1から9のいずれか一項に記載の方法。前記良好なパフォーマンスの動き補償フィルタの複数のサブセットを選択することをさらに備え、各サブセットは、前記複数のサブペル位置群それぞれから選択される1つの良好なパフォーマンスの動き補償フィルタを含む、請求項10に記載の方法。コンピュータに、請求項1から11のいずれか一項に記載の方法を実行させるためのプログラム。プロセッサにより実行されると請求項1に記載の方法を実行させるための命令を格納する記憶媒体と前記プロセッサとを備える、動画符号化装置。符号化されているビデオフレームのブロックを予測するための複数のサブペル位置のためにアダプティブ動き補償フィルタセットを復号化する動画復号化デバイスにより実装される方法であって、前記動画復号化デバイスにより、それぞれ前記複数のサブペル位置に対応している複数のサブペル位置群に分類化された複数の動き補償フィルタを含むコードブックを取得する段階であって、前記複数のサブペル位置群それぞれは、前記複数のサブペル位置のいずれか対応するものにおける画像の複数のブロックを補間するのに適した複数の動き補償フィルタを含む段階と、前記符号化されている動画フレームと、前記コードブック内の前記アダプティブ動き補償フィルタセットを特定するサブペルフィルタコードとを含む符号化されているビットストリームを取得する段階であって、前記アダプティブ動き補償フィルタセットは、前記複数のサブペル位置に対応している複数の動き補償フィルタを含む段階と、前記符号化されている動画フレームの復号中に、前記動画復号化デバイスが、前記サブペルフィルタコードが特定する前記アダプティブ動き補償フィルタセットを、前記コードブックから選択する段階と、前記アダプティブ動き補償フィルタセットを利用して、前記符号化されている画像フレームの少なくとも一部分に対応している画像コンテンツの複数のブロックを予測する段階と、前記予測された複数の画像コンテンツブロックに少なくともしたがって、復号された画像を生成する段階と、前記動画復号化デバイスに関するディスプレイに、前記生成された復号化された画像を表示する段階とを備える、方法。前記符号化されているビットストリームはさらに、前記コードブック内の第2のアダプティブ動き補償フィルタセットを特定する第2のサブペルフィルタコードと、前記動画復号化デバイスに、前記符号化されている画像フレームの前記部分と前記符号化されている画像フレームの第2の部分とを特定させる少なくとも1つの部分を特定するコードとを含む、請求項14に記載の方法。前記符号化されている動画フレームの復号化中に、前記動画復号化デバイスは、前記第2のサブペルフィルタコードが特定する前記第2のアダプティブ動き補償フィルタセットを前記コードブックから選択する段階と、前記第2のアダプティブ動き補償フィルタセットを利用して、前記符号化されている画像フレームの少なくとも第2の部分に対応している第2の複数の画像コンテンツブロックを予測する段階と、をさらに備え、前記復号化された画像は、さらに、前記予測された第2の画像コンテンツブロックに従って生成される、請求項15に記載の方法。複数の整数位置動き補償フィルタを取得する段階をさらに備える、請求項14から16のいずれか一項に記載の方法。前記符号化されているビットストリームはさらに、前記符号化されている画像フレームの前記部分と前記符号化されている画像フレームの第2の部分とを前記動画復号化デバイスに特定させる少なくとも1つの部分特定コードと、前記複数の整数位置動き補償フィルタのうち1つを特定する整数フィルタコードと、前記整数フィルタコードが、前記動画フレームの少なくとも前記第2の部分について前記ビットストリームに含まれていることを示す整数フィルタフラグとを含む、請求項17に記載の方法。前記符号化されている動画フレームの復号化中に、前記整数フィルタフラグを読み出して、これに呼応して、前記複数の整数位置動き補償フィルタから、前記整数フィルタコードが特定する整数位置動き補償フィルタを選択する段階と、前記選択された整数位置動き補償フィルタを利用して、前記符号化されている画像フレームの少なくとも前記第2の部分に対応している第2の複数の画像コンテンツブロックを予測する段階とをさらに備え、前記復号された画像は、前記予測された第2の複数の画像コンテンツブロックにさらにしたがって生成される、請求項18に記載の方法。前記コードブックはさらに、前記複数の整数位置動き補償フィルタを含む、請求項17に記載の方法。前記複数の整数位置動き補償フィルタを取得する段階は、整数位置コードブックを取得する段階を含む、請求項17に記載の方法。コンピュータに、請求項14から21のいずれか一項に記載の方法を実行させるためのプログラム。プロセッサにより実行されると請求項14から22のいずれか一項に記載の方法を実行させるための命令を格納する記憶媒体と前記プロセッサとを備える、動画符号化装置。以下に示す詳細な説明は、主に、従来のコンピュータのコンポーネントプロセッサ、プロセッサ用のメモリ記憶デバイス、接続された表示デバイスおよび入力デバイスを含むを利用して行われる。さらに、これらプロセスおよび処理は、異種の分散コンピューティング環境で従来のコンピュータのコンポーネント遠隔ファイルサーバ、コンピュータサーバ、およびメモリ記憶デバイスを含むを利用することもある。プロセッサは、これらの従来の分散コンピューティングコンポーネントそれぞれに、通信ネットワーク経由でアクセスすることができる。一実施形態様々な実施形態一部の実施形態といった言い回しは繰り返し利用される。これらは必ずしも同じ実施形態を表しているわけではない。備える有する含むといった用語は、そうではない文脈を除き、互いに同義語を意図している。<概略>フレーム間動画符号化のための動きフィルタリングシステムおよび方法の様々な実施形態を記載する。これら実施形態のいくつかでは、既存の解決法と比べて計算の複雑性を低減させることができるが、これは、符号化において、フィルタの係数を何度も繰り返して計算する代わりに、符号化フィルタの係数セットの予め計算されているコードブックから動きフィルタセットを探し出すことにより可能となる。一部の実施形態では、完全なコードブックをより小さいベースコードブックと、より大きな仮想のコードブックとに分割することで、検索の主要となる計算を、ベースコードブックに対してのみ行えばよいことにすることで、検索の複雑性をさらに低減させている。この実施形態では、aベースのコードブック、および残りのコードブックを統合するアルゴリズムのみを格納すること、b各フィルタセットに対して、動きサブペルフィルタリング位置に従って適切なタップ数をもつフィルタを格納すること、および、c各係数に対して必要なビット精度のみを格納することによって、記憶量を低減させている。さまざまな実施形態では、記載する動きフィルタコードブック技術を、画像、スライス群、ブロックマップ、統合されたブロックマップ、または、2つのツリー、4つのツリー、またはコンテンツに依存した領域等の適合された分割領域に対して利用することができる。この技術が、コンテンツに依存した分割領域にも適用可能であることによって、レート歪み最適化RDOのみにより可能となる他の技術と比較して、さらに精度を増すことができる。サブペルフィルタリングにのみ、整数位置フィルタリングのみに特化しているものもあれば、両方に利用可能な実施形態がある。さらに、コンテンツの性質に適合させるように、コードブックは簡単に置き換えたり拡張したりすることができてよい。フィルタコードブック設計の詳細およびコードブックの効率のよい検索法について記載する。記載されるコードブック設計および示唆されているコードブックのサイズのための方法により、動きフィルタリング性能を良好にして、幅広い範囲の動画コンテンツンの予測効率を高めることができる可能性もある。様々な実施形態では、記載される技術は、選択するサブペルフィルタセットまたは整数ペルフィルタを特定するためにコードブックのインデックス1つがあれば十分なので、ビット効率がよい。多くの場合、インデックスの符号化は、実際の係数を符号化したり、異なる符号化をなされたフィルタ係数を複数送ったりすることよりも効率がよい。実際に送信されるインデックスの数は、分割領域の数に依存しており、これは、既存の方法では、同じ種類の分割領域が利用されることと対照的であり、ここで記載するコードブックに基づく技術のほうがよりビットレート効率がよい。様々な実施形態で、I-、P-、B-からなる従来の画像構造を利用する通常の動画符号化技術を利用することができる。他の実施形態では、I-およびP-画像に代えて、またはこれらに加えて、他の画像たとえば、階層状B画像、一方向B画像、またはその他のB画像を利用してもよい。これ以降、図面に示されている実施形態の詳細な説明に入る。実施形態は図面および関連する記載に基づいて説明されるが、ここに開示される実施形態に範囲を限定しようとしているわけではない。真の意図は、すべての代替例、変形例、および均等物を網羅しようというものである。別の実施形態では、その実施形態に範囲を制約せずに、さらなるデバイス、または図示されているデバイス同士の組み合わせを追加したり、組み合わせたりすることもできることを理解されたい。図1は、固定動きフィルタリングを利用する動き補償予測を用いる先行技術のフレーム間符号器の概略ブロック図を示す。1以上の動画フレームvdfrmsを、ブロックインデクサー101によって複数のブロックblksに分割する。ブロックblksは1つずつ、対応する予測信号ブロックpredとともに差動器differencer133に入力され、余りresが、転送器135によって変換されて転送されることで、量子化器138に係数ブロックtcofが送られ、量子化された係数tcofqがエントロピー符号器118および逆量子化器140両方に送られる。逆量子化器140は、量子化を解消された係数のブロックtcofを逆変換器143に送る。加算器145では、動き補償ループからの予測ブロックpredが、量子化を解消された余りのブロックresで、逆変換器143の出力に追加される。加算器145では、動き補償ループからの予測ブロックpredが、量子化を解消された余りのブロックresで、逆変換器743の出力に追加される。加算器745は、ローカルに符号化さればブロックrecを出力して、これがフレームアセンブラおよびデブロックフィルタリングプロセッサ148に送られ、ここでブロックらしさをなくさせるreducestheblockiness。フレームアセンブラおよびデブロックフィルタリングプロセッサ148のブロックrecdは、動き推定器128および動き補償予測器130が参照フレームとして利用するフレームを形成する。動き推定器128は、元のフレームのブロックblks間の動きベクトルmvを、再構成されたフレームrecdと比較して計算する。動きベクトルの計算プロセスには、1つのブロックについて整数ペルベクトルを計算して、その後、サブペルベクトルsvたとえば1/4ペルの解像度までを、サブペル補間器129を利用して計算することが含まれている。通常は、サブペル補間器129は、動き推定器128内に含まれているが、図示を明瞭にするために、ここでは別個に示して、説明している。動き推定器128は、最適のペア、つまり最良の動きベクトルmvを探すので、動き補償予測器130は、動きベクトルmvを利用して、動き補償予測ブロックpredを生成することができる。動き補償器130はさらに、サブペル補間器129に類似したサブペルたとえば1/4の解像度まで補間器131を利用する。サブペル補間器129および131が利用するフィルタセットfmfを予め特定して固定する。エントロピー符号器118は、量子化された変換係数不図示、差動動きベクトルdmv、およびオーバヘッドデータ不図示を符号化して、圧縮ビットストリーム128を生成する。図2は、先行技術の符号器100に対応しており、符号器100側のローカル符号ループ155に似た動きをする、先行技術の復号器200を示す。具体的には、復号する圧縮ビットストリーム201が、エントロピー復号器203に入力されて、ここで、量子化された係数ブロックtcofq、差動動きベクトルdmv、および、オーバヘッドデータが復号化される。量子化された量子化ブロックtcofqは、次に、逆量子化器203により逆量子化されて、量子化を解消された係数tcofが生じ、次にこれが、逆変換器215によって逆変換されて、復号化された余りのブロックresが生じる。加算器223では、量子化を解消された係数のブロックtcofが、対応する動きベクトルmvを利用して得られた動き補償予測ブロックpredに送られて、動き補償予測器230で、サブペルベクトルsvを利用してたとえば1/4ペルまでの解像度、サブペル補間器229を利用して計算される得られる。こうして得られる復号化された動画recは、フレームアセンブラおよびデブロックフィルタ225でデブロックされて、符号器100と同様に、デブロックされた動画recdが、参照フレームとして利用される。復号器200の動き補償予測器230は、符号器100の動き補償予測器130同様の働きをするので、たとえば動き補償予測器230は、符号器100が利用するものと同じ固定動きフィルタfmfを利用する。図3は、動き補償予測ブロックを計算するサブペルグリッドにさらに分割される画素グリッドとして構成される動画フレームの一部300を示しており、ここで、動き補償予測ブロックが計算される。整数画素位置を、A1-A6、B1-B6、C1-C6、D1-D6、E1-E6、およびF1-F6で示す。C3-C4、およびD3-D4の1/4ペルの位置を、位置abcdefghk1mnoで示し、各ブロックが、1/4ペルの位置で補償されるようにする。図3は、さらに、位置aa、bb、cc、dd、ee、ff、gg、hh、ii、およびjjという、1/2ペルの位置もいくつか示している。サブペル位置abcdefghk1mnoのフィルタセットの計算は、6タップまたは9タップのフィルタを利用して行われる。フィルタ係数は、6x6の行列にマッピングされ、これは、6x6の近接する周囲のペルA1-F6からサブペル値を計算するために利用される。図4a-図4oは、6x6フィルタ行列の各サブペル位置の6/9タップをマッピングする様子を示す。図4aは、サブペル位置{a}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4bは、サブペル位置{b}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置では、3個のフィルタ係数のみが必要である。図4cは、サブペル位置{c}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4dは、サブペル位置{d}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4eは、サブペル位置{e}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4fは、サブペル位置{f}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。図4gは、サブペル位置{g}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4hは、サブペル位置{h}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、3個のフィルタ係数が必要である。図4iは、サブペル位置{i}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。図4jは、サブペル位置{j}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。図4kは、サブペル位置{k}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。図4lは、サブペル位置{l}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4mは、サブペル位置{m}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。図4nは、サブペル位置{n}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。図4oは、サブペル位置{o}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。<アダプティブWienerフィルタリング>図5を詳しく説明する前に、wienerフィルタリング法を利用するアダプティブフィルタ設計の基になる、最適なフィルタリング理論を簡単に説明する。サブペル位置それぞれにおいて、相互相関付、及び自動相関付行列を累積して、ここから最適なwienerフィルタセットを、WienerHopf等式を以下のようにして解くことで計算する。xnを入力信号として、ynを出力として、hnをフィルタ係数を表すとする。最少値を見つけるために、微分をとって、以下のようにゼロに設定する。hについて解くと、WienerHopf等式は以下のようになる。WienerHopf等式は、平均平方誤差の最適なフィルタ係数を決定して、結果生じるフィルタがwienerフィルタと称される。上述した等式において、hはフィルタ係数のベクトルであり通常は6から9個の係数である、Rxxが、自動相関付行列であり参照フレームのブロックデータのための、Rdxが、相互相関付行列/行ベクトルソースフレームと参照フレームのブロックデータとの間のである。行列は、各サブペル位置について別個に累積され、hは、各サブペル位置について上述した等式を解くことで計算することができるので、16個のフィルタからなる、適合したフィルタセットが得られる1/4ペル位置について。図5は、一般化されたアダプティブ動きフィルタリングを利用する動き補償予測器を利用する先行技術のフレーム間符号器500のブロック図を示す。ブロックインデクサー501、転送変換器535、量子化器538、逆量子化器540、逆変換器543、フレームアセンブラデブロックフィルタリングプロセッサ548、および、エントロピー符号器518は、図1で示し上述した、対応する符号器100同様に動作するので、この説明については繰り返さない。同様に、動き推定器528および動き補償器530は、利用するフィルタセット以外については、上述した動き推定器128および動き補償器130同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。固定フィルタセットを利用するH.264とは異なり、符号器500は、データからフィルタセットを計算する。この計算は、サブペルwiener繰り返しフィルタセットコンピュータ558で、前述したwienerhopf等式を利用して行われる。プロセスは、各ブロックの差の合計SAD位置の最少絶対値を計算するが、これは、最も良く整合するサブペル整合位置を反映している。次の繰り返しでは、これらサブペル位置を利用して、新たなフィルタセットを計算して、これは、利用されると、更新されたサブペル位置が提供される。プロセスは繰り返されるので、プロセスが収束するまでに、いくつかの繰り返し4-20が必要である。プロセスは、各繰り返しにおける等式が複雑なことから、計算集約的である。場合によっては、繰り返し数を制限して、パフォーマンスの複雑さを相殺することもできる。計算されたアダプティブ動きフィルタセットamfは、動き補償予測器530のサブペル補間器531に提供される。第1のフィルタセットamfは、さらに符号化されて、ビットストリーム経由で復号器に送られる必要がある。フィルタセットamfは99個ものフィルタ係数を利用することができるので、フィルタセットを効率的に符号化することが重要である。通常の技術は、最上位の位置にフィルタセットを送信することから、係数dmf差動器560が生成するの差動符号化、最後に送信されてからあまり変化しなかった係数の抑制まで、様々である。フィルタ係数を効率的に符号化できると想定して、複数のフィルタセットを1つの画像について送信して、2以上のフィルタセットからより効率よいほうを選択することができ、この動作は、空間分割器および分割符号器505により行われ、これにより分割マップptmapが生成される。レート歪み最適化器508は、複数のフィルタを利用するため関連オーバヘッドがある場合であっても、利得があるようにされることが多い。図6は、一般化されたアダプティブ動きフィルタリングを利用する動き補償予測器を利用する先行技術のフレーム間復号器600のブロック図を示す。エントロピー復号器603、逆変換器615、逆量子化器613、および、フレームアセンブラおよびデブロックフィルタリングプロセッサ625は、図2で示し上述した、対応する復号器200のコンポーネント同様に動作するので、この説明については繰り返さない。同様に、動き補償予測器630は、利用するフィルタセット以外については、上述した動き補償器230同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。エントロピー復号器603は、予測を表すフィルタセットが加算器631に追加される動きフィルタの差動値を復号するコードワードdmfを復号する。このフィルタセットamfは、動き補償予測器630のサブペル補間器629に提供される。さらに、複数のフィルタを利用する場合には、分割マップptmapを復号して、フィルタamfが画像の正しい部分に利用されるようにする。図7a-図7fは、画像を分割する分割モードを示す。たとえば図7aは、フィルタコードが画像ごとにのみ切り替えられる画像ベースの分割を表す。図7bは、スライスまたはスライス群ベースの分割を示し、第1のフィルタセットをスライス群Aに適用して、第2のフィルタセットをスライス群Bに適用する。図7cは、ブロックタイプAに利用するフィルタ、および、ブロックタイプBに利用するフィルタを特定するブロックマップを表している。図7dは、1つの画像をタイルに分割して、さらにタイルの分割部分を、2つのツリーの分割に分割して、レート歪み最適化RDOに基づく2つのツリーの様々な枝がAまたはBと称されるようにして、これは、それぞれが、第1または第2のフィルタセットを利用することを示している。図7eは、1つの画像をタイルに分割して、さらに1つのタイルを、2種類の4つのツリーの分割部分AまたはBと称するに分割して、これらそれぞれが、第1または第2のフィルタセットを利用することができる。最後に、図7fは、スライスの統合、ブロックの統合、2つのツリーの統合、4つのツリーの分割部分の統合、または純粋に空間分割によって生じる領域を示している。図8は、一実施形態における、動きフィルタリングコードブック符号器を利用する動き補償予測器を利用するフレーム間符号器800のブロック図を示す。ブロックインデクサー801、転送変換器835、量子化器838、逆量子化器840、逆変換器843、フレームアセンブラデブロックフィルタリングプロセッサ848、および、エントロピー符号器818は、図1で示し上述した、対応する符号器100同様に動作するので、この説明については繰り返さない。同様に、動き推定器828は、利用するフィルタセット以外については、上述した動き予測器128同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。既存のアダプティブ動きフィルタリング符号器に比べると、コードブックベースの動きフィルタリング符号器800は、動きフィルタを明示的に計算する代わりに、既存のコードブックからフィルタセットを選択する。一実施形態では、1つがサブペルフィルタセット860を格納し、1つが整数位置フィルタ863を格納する、という、2つの種類のコードブックを利用する。MCフィルタセットコードブック検索プロセッサ858は、サブペルおよび整数位置コードブックインデックスmcfsiおよびmcfiiをコードブックそれぞれから効率的に検索するが、これらはそれぞれサブペルフィルタセットmcfsおよび整数位置フィルタmcfiと称される。様々な実施形態では、サブペルフィルタセットmcfsおよび整数位置フィルタmcfiは、1つの画像1度だけまたは空間分割領域1つの画像について複数回送ることができる。様々な実施形態では、スライス、可変ブロックサイズ、ブロック、2つのツリー、4つのツリー、領域、タイル等の、任意の種類の空間分割を利用することができる図7aから図7f参照。この分割は、空間分割器および分割符号器805によって行われる。送信すべき分割数等の分割の詳細は、ビットレート/歪みトレードオフ分析器808およびシーンコンテンツ分析器803によるレート歪み分析に基づいて決定される。最も良く整合するサブペルフィルタセットおよび整数ペルフィルタセットが、ビットストリームにて復号器に送られる。サブペルフィルタセットmcfsおよび整数位置フィルタmcfiは、MCフィルタリングプロセッサ865に提供されて、動き推定器/動き補償予測器828で動き補償予測が生成される。一部の実施形態では、プロセスは、検索およびインデックスごとのフィルタ/フィルタセットを表すビットコスト面で効率がよいものであってよい。図9は、一実施形態における、動きフィルタリングコードブック復号器を利用する動き補償予測器を利用するフレーム間復号器900のブロック図を示す。エントロピー復号器903、逆変換器915、逆量子化器913、並びにフレームアセンブラおよびデブロックフィルタリングプロセッサ925は、図2に示し、上述した復号器200の対応するコンポーネント同様に動作するので、この説明については繰り返さない。同様に、動き補償予測器930は、利用するフィルタセット以外については、上述した動き補償予測器230同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。エントロピー復号器903は、ビットストリーム901をエントロピー復号して、コードブックサブペル動きフィルタインデックスmcfsiおよび整数位置動きフィルタインデックスmcfiiの両方または片方を得る。これらインデックスmcfsiおよびmcfiiは、所望のサブペルフィルタセットmcfsおよび整数位置フィルタmcfiに、サブペルコードブック933および整数位置コードブック935の両方または他方からアクセスするために利用される。結果得られるサブペルフィルタセットmcfsおよび整数フィルタmcfiは、MCフィルタリングプロセッサ929に送られ、ここで、サブペル補間および整数ペルフィルタリングの両方または片方が行われ、動き補償予測predが行われる。一部の実施形態では、フラグfilt_sentおよびintfilt_sentが、さらにエントロピー復号器903により復号されてよく、これは、ビットストリーム901が、サブペル動きフィルタインデックスmcfsiおよび整数位置動きフィルタインデックスmcfiをそれぞれ含むか否かを示す。表1は、サブペルベースコードブックの2つのサンプルフィルタセットid=0およびid=1を示す。一実施形態では、サブペルベースコードブックが、16個のベースサブペルフィルタセットそれぞれが、1/4ペルのフィルタリングの場合に、15または16サブペル位置のフィルタを含むを含んでいてよい。16個のベースサブペルフィルタセットの個々のサブペル位置フィルタが、それぞれ別の予め定められている組み合わせで利用されて、仮想コードブックが生成されてよい。一実施形態では、仮想コードブックが、256個のサブペルフィルタセットを含んでよい。他の実施形態では、ベースおよび仮想コードブックが含むフィルタセット数はこれより多くても少なくともよい。表1に示されているフィルタセット例では、フィルタセットID=0が、ピントのあったシーンに対応しており、フィルタセットID=1が、ピントのぼけたシーンに対応している。一部の実施形態では、表1に一部示されているようなサブペルコードブックが、それぞれが複数のサブペル位置に対応している複数のサブペル位置群に分類される複数の動き補償フィルタを含むものとして均等に特徴付けられており、ここで複数のサブペル位置群のそれぞれは、1つの画像の複数のブロックを複数のサブペル位置のうち対応する位置で補間するのに適した複数の動き補償フィルタを含んでいる。たとえば、表1に示すコードブックはサブペル位置{a―0}に対応する、15または16群の動き補償フィルタを含むものとして特徴付けられてよい。たとえば以下のようになる。サブペル位置{a}群:{a0,a1,a2,a15}サブペル位置{b}群:{b0,b1,b2,b15}サブペル位置{c}群:{c0,c1,c2,c15}コードブックはさらに、いくつかのたとえば256個の予め定められている動き補償フィルタのセットを含むものとして特徴づけられてよく、各サブペル位置群の1つが、以下のように示されてよい。サブセットID=0:{a0,b0,c0,d0,e0,f0,g0,h0,i0,j0,k0,l0,m0,n0,o0}サブセットID=1:{a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1}サブセットID=15:{a15,b15,c15,d15,e15,f15,g15,h15,i15,j15,k15,l15,m15,n15,o15}サブセットID=16:{a16,b16,c16,d16,e16,f16,g16,h16,i16,j16,k16,l16,m16,n16,o16}サブセットID=255:{a255,b255,c255,d255,e255,f255,g255,h255,i255,j255,k255,l255,m255,n255,o255}一部の実施形態では、コードブックはさらに、一群の整数位置フィルタたとえば整数位置群{0}:{00,01,02,015}を含んでよい。この実施形態では、予め定められている動き補償フィルタのサブセットが、さらに、整数位置フィルタたとえばサブセットID=0:{00,a0,b0,c0,d0,e0,f0,g0,h0,i0,j0,k0,l0,m0,n0,o0}、サブセットID=1:{01,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1}等を含む。一部の実施形態では、複数の整数位置のフィルタが1つの整数位置のコードブックに含まれていてよい。表2は、整数位置コードブックの2つのサンプル整数位置フィルタID=0およびID=1を示している。一実施形態では、整数位置コードブックが、48個の整数位置フィルタを含んでよい。他の実施形態では、整数位置コードブックが含むフィルタの数はこれより多くても少なくてもよい。一部の実施形態では、サブペルフィルタコードブックのサブペルフィルタセット内に、整数位置コードブックの代わりに、またはこれらに加えて、整数位置のフィルタが含まれてもよい。図10は、サブペルおよび整数ペル位置のための動きフィルタコードブック1または複数を生成するオフラインのルーチン1000を示す。ブロック1005で、ルーチン1000は、1以上のサンプル動画シーケンスを含む1つのテストセットを取得する。一部の実施形態では、動画シーケンスは、異なる動きレベルの組み合わせおよび様々なほぼ均等のテクスチャを有するように選択される。一実施形態では、テストシーケンスを、テクスチャのような領域を含むように選択するが、このためには通常、より正確なフィルタリングを行い、所望の符号利得を得る必要がある。一実施形態では、複数の標準CIFシーケンスをサンプル動画シーケンスとして利用することができる。開始ループブロック1010から始まり、ルーチン1000は、テストセットの各動画シーケンスを処理する。ループブロック1015から始まり、ルーチン1000は、現在の動画シーケンスの1以上の個々の画像またはフレームを処理する。ブロック1020では、ルーチン1000が、Wienerフィルタベースのアダプティブ動きフィルタリングを利用して、現在の画像またはフレームの完全に適合されたフィルタセットを計算する。一部の実施形態では、より良いフィルタセットを得るために、2以上繰り返してよく、これは、フィルタ係数の計算およびサブペル位置の更新を、2回以上繰り返し実行してよいことを意味する第1のタイムサブペル照合collationsを、標準的なフィルタの結果に設定して、後の各繰り返しにおいて、位置を前に計算したフィルタセットで得られるものに設定する。1/4ペルの実施形態であれば、1つのフィルタが各1/4ペル位置について計算されるので、生成されるフィルタセットが、16個のフィルタからなる。一実施形態では、生成されたフィルタセットのそれぞれのフィルタが、1/4ペル位置に応じて、6または9個のタップを有する。ループブロック1025を終了させるにあたり、ルーチン1000は、ブロック1015に繰り返し戻り、現在の動画シーケンスの別の画像またはフレームそれぞれを処理するもしあれば。ブロック1030では、ルーチン1000が、生成されたフィルタセットから現在の動画シーケンスを表す代表的なフィルタセットを選択する。一実施形態では、代表的なフィルタセットを選択することには、動画シーケンスの各画像またはフレームに、計算されたフィルタセット全てを割り当てて、高いまたは最高の符号利得の低いSADまたは最低のSADを有するフィルタセットを選択することを含んでよい。一部の実施形態では、代表的なセットは、現在の動画シーケンスの画像またはフレームのサブセットに従って選択されてよいたとえば最初のN個のフレーム。ループブロック1035を終了させるにあたり、ルーチン1000は、ブロック1010まで繰り返し戻り、テストセットの次の動画シーケンスを処理する。一実施形態では、全ての動画シーケンスが処理されると、100以上の代表的なフィルタセットが生成、選択されてよい。ブロック1038では、ルーチン1000が、随意で、代表的なフィルタセットの集合体を改良する。たとえば一実施形態では、ランダムウォークアルゴリズムまたは類似した最適化アルゴリズムを利用して、動画シーケンスの組み合わせを、無作為に一部または全てテストして、数時間または数日間において改良されたフィルタセットの集合体全体の符号利得をさらに向上させてもよい。ブロック1040で、ルーチン1000は、随意に改良されたフィルタセットの集合体のなかの高い、または最高の符号利得を有するベースサブペルフィルタセット群を選択する。ブロック1045では、ルーチン1000が、サブペルコードブックに選択されたベースのフィルタセット群を格納する。ブロック1050で、ルーチン1000は、選択されたベースフィルタセット群の個々のフィルタから仮想コードブックを得る。一実施形態では、ランダムウォークアルゴリズムまたは類似した最低化アルゴリズムを利用して、選択したフィルタセットのベースの群から個々のフィルタの間の差安座マナ組み合わせをテストしてよい。一実施形態では、フィルタの256個の異なる組み合わせを、選択したベースフィルタセット群から導き出すことができる。導き出された組み合わせは、選択されたベースフィルタセット群のフィルタから導き出すことができる仮想コードブックを作成するために格納される。ブロック1055で、整数位置フィルタ群を、随意に改良されたフィルタセットの集合体から選択する。一実施形態では、整数位置フィルタを、高い符号利得を持ち、互いに異なるように選択することができる。一実施形態では、48個の整数位置フィルタをその群について選択してよい。ブロック1060で、選択された整数位置フィルタ群を、整数位置コードブックに格納する。サブペルコードブックおよび整数位置コードブックを生成して格納すると、ブロック1099でルーチン1000が終了する。図11aおよび図11bは、一実施形態における、動きフィルタセットをコードブックから検索するオンラインのルーチン1100を示す。ブロック1103で、ルーチン1100が、動画シーケンスのうちの1つの画像またはフレームを取得する。ループブロック1105を開始する際に、ルーチン1100が画像の各画像コンテンツブロックを処理する。ブロック1108で、ルーチン1100は、現在の画像コンテンツブロックの整数位置動き推定値を決定する。一実施形態では、整数位置の動きベクトルは、一定の動き検索サイズを利用して完全な、または低減された検索によって計算される。ブロック1110で、ルーチン1100は、決定された整数位置動き推定値について符号利得を計算するたとえばSADを決定する。ブロック1113で、ルーチン1100は、デフォルトであるフィルタセットたとえばH.264固定フィルタセット、その他、参照として利用されるその他のフィルタセットを利用してサブペル動き推定値を決定する。補間されたサブペル位置を検索して、最高の符号利得最低のSADを有するものを見つける。言い換えると、デフォルトのフィルタセットを画像のコンテンツブロックに適用して、最少のSADを生じる位置を選択する。フィルタセットが対応する位置を、推定されたサブペル動きベクトルとして利用する。ブロック1115で、ルーチン1100は、少なくとも一時的にデフォルトのフィルタの符号利得全体をセーブする。ブロック1116で、ルーチン1100は、たとえば16フィルタセットを含むベースのサブペルコードブックをロードして、各フィルタセットは、たとえば15のサブペル位置フィルタを含んでいる1つが各サブペル位置にある。ブロック1118を始めるにあたり、ルーチン1100は各フィルタセットを処理する。ブロック1120で、ルーチン1100は、現在のフィルタセットの符号利得を計算する。オフセットとして整数位置動き推定値を利用して、ルーチン1100は、現在のフィルタセットの対応するサブペル位置フィルタを利用して、各サブペル位置のSADを決定する。ループブロック1023を終了するにあたり、ルーチン1100は、ブロック1118に繰り返し戻り、次のフィルタセットもしあればを処理する。ブロック1023で、ルーチン1100は、Nたとえば256個の仮想フィルタセットの符号利得を、各フィルタセットの個々のサブペル位置フィルタについて計算された符号利得を利用してアセンブルする。一実施形態では、仮想フィルタセットが、ベースのサブペルコードブックのフィルタセットのサブペル位置フィルタの様々な組み合わせを含んでいる。したがって各仮想フィルタセットの符号利得を、既に計算した個々のサブペル位置フィルタ符号利得を利用してアセンブルすることができるブロック1120。ブロック1128で、ルーチン1100は、繰り返しブロック1105に戻り、画像の画像コンテンツの次のブロックもしあればを処理する。ブロック1133で、ルーチン1100は、空間分割モードを設定する。動作モードに基づいて、フレームベース、スライスベース、ブロックベース、セグメントベース、その他の画像の分割部分を利用してよい。ループブロック1135を開始するにあたり、ルーチン1100は、画像の各空間分割部分を処理する。ブロック1138で、ルーチン1100は、N個の仮想サブペルフィルタセットから、現在の分割領域について高い符号利得を有するサブペルフィルタセットを選択する。一実施形態では、最少のSAD/最大の符号利得を有するという意味で最良のフィルタセットを選択する。一部の実施形態では、最低処理モードで、フレームベースの分割部分が利用される。次の2つのモードはスライスを利用する。最低のスライスモードは、1つのフレームを4つの均等な水平ストリップ/スライスに分割するフレームサイズによっては、最後のスライスのサイズが小さい場合もある。他方で、より高いスライスモードでは、12x4、16x16のブロックスライスが利用されるここでも、フレームサイズのせいで、一番下のスライスおよび右端のスライスが小さい場合がある。残りのモードで、ブロックをブロック群に統合して、同じフィルタセットに低いSADを生成させることで得られたセグメント/領域を利用する。ある意味でこれら領域が動きの分割領域に対応している。このプロセスで利用される2つの閾値があり、各モードが、小さいまたは大きいセグメント/領域を生成することができる様々な閾値の選択肢を有している。フレームはまずブロック/スーパタイルに分割される。第1の閾値は、64x64のスーパタイルを32x32のタイルに分割する方法を決定するために利用され、第2の閾値は、タイルブロックをスーパタイルを超えてで統合するときを判断するために利用される。いずれの場合においても、統合または分割の決断は、2つのブロック/オブジェクトのSAD差が一定の閾値を下回る、または上回る場合に行われる。スーパタイルのタイルへの分割は、2x2おパターンで符号化される。動作の異なるモードは、基本的な3つ、または拡張された7つのパターンをサポートしている。基本的な3つのパターンは、確固としたsolid、水平方向の分割および垂直方向の分割であり、一方で、拡張セットも、4つの3つの方法の分割を含む。次いで、次の処理段階は、十分小さいSAD第2の閾値に基づいてを生じる共通のフィルタセットがある場合に、スーパタイルの近隣との境目に触れるタイルを統合する。統合ビットは、パターン可変符号コードVLCに加えてビットストリームに符号化され、復号器は、完全に同じ空間セグメントを復元することができる。現在の分割領域について高い符号利得を有するサブペルフィルタセットが選択されると、ブロック1140で、ルーチン1100が、ビットストリームに対して、選択されたサブペルフィルタセットに対応するインデックスその他のコードたとえばsubpelfilt_codeを符号化する。様々な実施形態では、固定されたVLC表、アダプティブハフマンコード表等を利用して、インデックスその他のコードを符号化することができる。アダプティブハフマンを利用する場合には、一実施形態では、コードは、前のフレームのインデックスの頻度に基づいて計算されるが、これは、時間的な冗長が存在する実験および同じフィルタセットが近隣のフレームにみられる傾向のある実験でこのように観察されたからである。ブロック1141で、ルーチン1100は、ある数のたとえば48整数位置フィルタを含む整数位置コードブックをロードする。決定ブロック1143で、ルーチン1100は、整数動き推定値ブロック1108で決定されたが、選択したサブペルフィルタセットより高い符号利得低いSADを提供しているかを判断する。判断結果が否定的である場合、ルーチン1100は、ループブロック1153の終了に移行して、ここでルーチン1100は、ブロック1135に繰り返し戻り、次の空間分割部分もしあればを処理する。しかし、整数動き推定値ブロック1108で決定されるは、選択したサブペルフィルタセットより高い符号利得低いSADを提供している場合には、ブロック1145で、ルーチン1100が、整数位置コードブックから、現在の空間分割部分に対する高いまたは最高の符号利得を有する整数位置フィルタを選択する。決定ブロック1148では、ルーチン1100が、選択された整数位置フィルタが最高の符号利得最少のSADを提供しているかを判断する。その場合には、ブロック1150で、ルーチン1100が、選択した整数位置のフィルタに対応するインデックスまたは他のコードintpelfilt_codeを、ビットストリームに符号化する。一部の実施形態では、1つのフラグその他の1ビットのヘッダもビットストリームに符号化して、整数位置コードブックの選択された整数位置フィルタが、標準的な整数位置フィルタよりも高い符号利得を生成することを示す。ループブロック1153を終了するとき、ルーチン1100は、ブロック1135に繰り返し戻り、次の空間分割部分もしあればを処理する。すべての空間分割部分の処理が終わると、ルーチン1100はブロック1199で終了する。様々な実施形態では、ここで記載する方法を、画像ごとに、および、画像全体に送られるフィルタへの1つのインデックス、1つの領域、1つのセグメント、スライスの1群、1つのフレームまたは1つのタイルの各4つのツリーまたは2つのツリーの分割部分、1つのフレームのブロック群、複数のタイル、または1つのタイルの複数のフラグメントに対して利用する。図12は、本明細書で様々な形態で示される、様々な動き補償コードブックフィルタ符号器および復号器における、ビットストリームシンタックス1200の一例を示す。ビットストリームシンタックス1200は、3ビットのヘッダmfc_hdr1201から始まる。1ビットのpict_onlyフラグ1202は、画像ベースのフィルタリングが生じるか否かを示す。はいの場合には、以下の随意のシンタックスエレメントヌルnumptフィールド1230を省き、いいえの場合には、3ビットのヌルコード1203を送信する。随意の3ビットヌルフィールド1203は分割部分の数8までを示す。随意の1ビットのmap_sentフラグ1204が、分割マップを送り、フィルタを適用するか否かを示し、または、複数のフィルタ間を切り替えるかを示す。随意のnビットのptmapフィールド1205は、分割マップもしあればを示す。1ビットのfilt_sentフラグ1206は、サブペルフィルタコードがビットストリームに含まれているかを示す。フラグ1206が設定されている場合には、8ビットのサブペルfilt_code1208を送信して、利用するサブペルフィルタセットを特定し、さもなくば、subpelfilt_code1208を送信しない。フラグintfilt_sent1210は、整数位置フィルタコードがビットストリームに含まれているかを示す。1に設定されている場合には、intfilt_sent1210が、6ビットのintpelfilt_code1211が送信されて、利用する整数位置フィルタを特定する。さもなくば、intpelt_code1211を送信しない。filt_sent1206、subpelfilt_code1208、intfilt_sent1210、および、intpelfilt_code1211のコードシーケンスが、1つの分割画像のみモードのみを利用する場合に生じるが、その他の場合には、シーケンスをヌルでnumpt1203回繰り返す。図13aは、いずれのMPEG規格の動画符号化においても広く利用されているIフレーム1301、1308独立して符号化された画像、Pフレーム1304、1307一方向予測符号化された画像、および、Bフレーム1302-1303、1305、1307双方向予測符号化された画像を含む、動画ストリーム内のフレームまたは画像シーケンス1301-1308を示す。図示されている画像構造は、さらに、可変数のBフレームを示しているが、これは、われわれのフィルタリングの話の主要点ではない。より関連することは、I画像1301、1308が動きフィルタセット情報ではなくてもよく、P画像1304、1306が、1以上のフィルタセットを必要として、B画像1302-1303、1305、1307が、2つ以上の双方向参照によりフィルタセットを必要とする、ということである。表3は、様々な実施形態における、PおよびB画像タイプについての、画像タイプおよび分割部分の数numptによる動き補償コードブックフィルタの符号化の符号ビットコストの一例たとえば、動きフィルタリングモードたとえばサブペルおよびintおよびサブペルを示す。B画像のビットコストを低減するために、2つのさらなるモードたとえば画像サブペルおよび画像intsubpelなどを導入する。全体的には、P画像については、信号サブペルフィルタセットが、13と43ビットの間4つの分割部分までという値をとり、intとサブペルフィルタセット両方に信号を供給するためには、19および67ビットの間の値であってよく、サブペルのB画像については22および79ビットの間であってよく、intのB画像については34および127ビットの間であってよい。表3に示す符号ビットのコストの例は領域、スライス、タイル、またはタイルフラグメント、画像の2つのツリー、4つのツリー、タイルの2つのツリー、または4つのツリー、および、統合されたブロックのうち少なくとも1以上当の空間分割マップのビットコストは含まない。図13bは、3つの分割部分例numpt3に分割されるIフレーム1301-1308、3つの分割部分例numpt3に分割されるPフレーム1304、1306、および、2つの分割部分例numpt2に分割されるBフレーム1302-1303、1305、1307を含む動画ストリーム内の画像またはフレームシーケンス1301-1308を示す。図13bに示すように、動きフィルタリングの分割は、完全にアダプティブであってよく、画像ベースで、任意のモードで動作することができる画像、領域、スライス、タイル、1つのタイルの統合されたフラグメント、画像の2つのツリーまたはタイル統合された2つのツリー、画像の4つのツリーまたはタイル統合された4つのツリー、統合されたブロック等が含まれる。たとえば図13bは、第1のP画像1304が3つのスライスからなり、第2のB画像1303が2つのツリーで符号化されており、2つの分割部分からなる。さらに、第2のP画像1306は、3x3の大きなタイルアレイに分割され、第3のBフレーム1305は、2つのツリーに分割される。図13bの例に従って、コードブック動きフィルタリングの場合には、図示されている画像構造の各画像の動きフィルタビットのカウントを計算することができる。図14は、一実施形態における、動画符号化/復号化システム1400の一例を示しており、システム1400は、符号化されていない動画ソース1415、符号化デバイス1500図15に示されており後述する、復号化デバイス1600図16に示されており後述するを、随意の外部ディスプレイ1425と、随意の符号化されている動画ソース1420とともに含む。一部の実施形態では、符号化デバイス1500および復号化デバイス1600の片方または両方が、ネットワーク1450に接続されていてよい。一部の実施形態では、復号化デバイス1600および符号化デバイス1500が、単一のデバイスを含んでもよい。一部の実施形態では、1を超える数の符号化デバイス1500が存在していてよいたとえば、1つの符号化デバイスがオフラインでコードブック生成プロセスを実行してよく、一方で、別の符号化デバイスがオンラインで符号化プロセスを実行してよいことが、本開示に示されている。一部の実施形態では、他のサーバおよびデバイス不図示も存在していてよい。たとえば一部の実施形態では、配信サーバ不図示が、符号化されている動画を復号かデバイス1600にネットワーク1450経由で配信することができる。一部の実施形態では、符号化デバイス1500が、符号化されていない動画ソース1415と、ネットワーク1450、格納エリアネットワークSAN、高速シリアルバスおよび他の適切な通信技術の両方または片方を利用して通信してよい。同様に一部の実施形態では、復号化デバイス1600は、符号化されている動画ソース1420と、ネットワーク1450、格納エリアネットワークSAN、高速シリアルバス経由で、および他の適切な通信技術を利用して通信してよい。一部の実施形態では、符号化デバイス1500、復号化デバイス1600、符号化されている動画ソース1420、および、符号化されていない動画ソース1415が、1以上の複製され、および/または、配信された物理的または論理的デバイスを含んでよい。様々な実施形態では、ネットワーク1450が、インターネット、ローカルエリアネットワークLAN、ワイドエリアネットワークWAN、セルラーデータネットワーク、および、その他のデータネットワークのうち少なくとも1つを含んでよい。多くの実施形態では、図示されているより多い数の符号化デバイス1500、復号化デバイス1600、符号化されている動画ソース1420、および、符号化されていない動画ソース1415が存在してもよい。図15は、一実施形態における、符号化デバイス1500の一例の様々なコンポーネントを示す。図15は、符号化デバイス1500の一例のいくつかのコンポーネントを示す。一部の実施形態では、符号化デバイス1500は、図15に示されているものより多いコンポーネントを含んでよい。しかし、例示される実施形態を開示するために、これら一般的には従来のコンポーネントの全てを示す必要は必ずしもない。図15に示すように、符号化デバイス1500は、ネットワーク1450に随意で接続するためのネットワークインタフェース1530を随意で含む。符号化デバイス1500はさらに、少なくとも1つの処理ユニット1510たとえば、汎用中央処理装置、エンベデッド処理装置、専用動画処理ユニット等、メモリ1550、随意の出力デバイスおよびディスプレイ1540の両方または片方、および、随意の入力デバイス1570たとえばキーボード、マウス、リモコン、ジョイスティック等を含んでよく、これら全てが、随意のネットワークインタフェース1530とともに、バス1520経由で相互接続されていてよい。メモリ1550は、一般的に、RAM、ROM、および、永続的な大容量記憶装置ディスクドライブ等を含んでよい。メモリ1550は、コードブック動き補償フィルタリング800を有する動画復号器図8を参照して上述した、動き補償サブペルフィルタセットのコードブック1565および動き補償整数位置フィルタコードブック1570の片方または両方、随意のオフラインのコードブック生成ルーチン1000図11a、図11bを参照して上述した、および、コードブック動き補償フィルタリング動画符号化ルーチン図17を参照して後述するを含んでよい。加えて、メモリ1550は、さらに、オペレーティングシステム1555を格納している。一部の実施形態では、これらソフトウェアコンポーネントが、コンピュータ可読記憶媒体1595から符号化デバイス1500のメモリ1550に、非持続性コンピュータ可読記憶媒体1595たとえばフロッピー登録商標ディスク、テープ、DVD/CD-ROMドライブ、メモリカード等に関連付けられているドライブメカニズム不図示を利用してロードされてよい。一部の実施形態では、ソフトウェアコンポーネントも、コンピュータ可読記憶媒体1595経由ではなく、随意のネットワークインタフェース1530経由でロードされてよい。一部の実施形態では、符号化デバイス1500は、さらに、符号化されていない動画ソース1415と通信する専用インタフェース1535高速シリアルバス等を含んでよい。一部の実施形態では、符号化デバイス1500が、ネットワークインタフェース1530経由で、符号化されていない動画ソース1415と通信してよい。他の実施形態では、符号化されていない動画ソース1415がメモリ1550に常駐していてもよい。大体従来の汎用コンピューティングデバイスに準拠している符号化デバイス1500の一例を示したが、符号化デバイス1500は、動画を符号化することができる多数のデバイスのいずれであってもよいたとえば、動画記録デバイス、動画コプロセッサおよびアクセラレータの両方または片方、パソコン、ゲームコンソール、セットトップボックス、ハンドヘルドコンピュータ、携帯電話、またはその他の適切なデバイス。図16は、一実施形態における、復号化デバイス1600の一例の様々なコンポーネントを示す。一部の実施形態では、復号デバイス1600は、図16に示すもの以外にも多くのコンポーネントを含む場合がある。しかし、これら全ての一般的に従来のコンポーネントの説明は、実施形態の開示には必ずしも必要ではない。図16に示す復号化デバイス1600は、ネットワークに接続することもできる随意のネットワークインタフェース1630を含んでいる。復号化デバイス1600はさらに、少なくとも1つの処理ユニット1610たとえば、汎用中央処理装置、エンベデッド処理装置、専用動画処理ユニット等、メモリ1650、随意の出力デバイスおよびディスプレイ1640の両方または片方、および、随意の入力デバイス1670たとえばキーボード、マウス、リモコン、ジョイスティック等を含んでよく、これら全てが、随意のネットワークインタフェース1630とともに、バス1620経由で相互接続されていてよい。メモリ1650は、一般的に、RAM、ROM、および、永続的な大容量記憶装置ディスクドライブ等を含んでよい。メモリ1650は、コードブック動き補償フィルタリング900を有する動画復号器図9を参照して上述した、動き補償サブペルフィルタセットのコードブック1665および動き補償整数位置フィルタコードブック1670の片方または両方、随意のオフラインのコードブック生成ルーチン図21を参照して上述したを含んでよい。加えて、メモリ1650は、さらに、オペレーティングシステム1655を格納している。一部の実施形態では、これらソフトウェアコンポーネントが、コンピュータ可読記憶媒体1695から符号化デバイス1600のメモリ1650に、非持続性コンピュータ可読記憶媒体1695たとえばフロッピー登録商標ディスク、テープ、DVD/CD-ROMドライブ、メモリカード等に関連付けられているドライブメカニズム不図示を利用してロードされてよい。一部の実施形態では、ソフトウェアコンポーネントも、コンピュータ可読記憶媒体1695経由ではなく、随意のネットワークインタフェース1630経由でロードされてよい。一部の実施形態では、復号化デバイス1600はさらに、符号化されている動画ソース1420と通信する専用インタフェース1635高速シリアルバス等を含んでよい。一部の実施形態では、復号化デバイス1600が、ネットワークインタフェース1630経由で、符号化されている動画ソース1420と通信してよい。他の実施形態では、符号化されている動画ソース1420がメモリ1650に常駐していてもよい。大体従来の汎用コンピューティングデバイスに準拠している復号化デバイス1600の一例を示したが、復号化デバイス1600は、動画を復号化することができる多数のデバイスのいずれであってもよいたとえば、動画再生デバイス、パソコン、ゲームコンソール、セットトップボックス、ハンドヘルドコンピュータ、携帯電話、またはその他の適切なデバイス。図17は、一実施形態における、たとえば符号器デバイス1500で実行可能な、コードブック動き補償フィルタリング動画符号化ルーチン1700を示す。サブルーチンブロック1800図18を参照して、後述するでは、ルーチン1700が、それぞれが複数のサブペル位置に対応している複数のサブペル位置群に分類される複数の動き補償フィルタを含むものとして均等に特徴付けられており、ここで複数のサブペル位置群のそれぞれは、1つの画像の複数のブロックを複数のサブペル位置のうち対応するもので補間するのに適した複数の動き補償フィルタを含んでいる。たとえば、表1に示すコードブックはサブペル位置{a-0}に対応する、15または16群の動き補償フィルタを含むものとして特徴付けられてよい。たとえば以下のようになる。サブペル位置{a}群:{a0,a1,a2,a15}サブペル位置{b}群:{b0,b1,b2,b15}サブペル位置{c}群:{c0,c1,c2,c15}ブロック1705では、ルーチン1700が、符号化されていない動画フレームまたは画像を、符号化するために取得する。場合によっては、符号化されていない動画フレームまたは画像は、複数の異なる部分を含むように決定される場合がある1つの画像を複数の部分に分割するための様々な分割モードを示している図7aから図7f参照。他の場合には、符号化されていない動画フレームまたは画像が、1つの部分として捉えられる場合もある。符号化されていない動画フレームまたは画像を符号化している間に、ルーチン1700は、ループブロック1710を開始する際に、符号化されていないフレームまたは動画の1以上の部分をそれぞれ処理する。サブルーチンブロック1900で図19a、図19bを参照して、後述する、ルーチン1700は、コードブックから、複数の動き補償フィルタのサブセットを、動画フレームまたは画像の現在の部分に最適化されたものとして選択して、この選択されたサブセットには、複数のサブペル位置群それぞれから選ばれた1つが含まれている。たとえば表1を参照して上述したように、コードブックは、さらに、各サブペル位置群から1つずつ、複数の予め定められた動き補償フィルタのサブセットを含むことで特徴付けられてもよく、この例を以下に示す。サブセットID=0:{a0,b0,c0,d0,e0,f0,g0,h0,i0,j0,k0,l0,m0,n0,o0}サブセットID=1:{a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1}サブセットID=15:{a15,b15,c15,d15,e15,f15,g15,h15,i15,j15,k15,l15,m15,n15,o15}サブセットID=16:{a0,b5,c7,d9,e4,f4,g12,h6,i7,j2,k4,l11,m8,n0,o10}サブセットID=255:{a10,b6,c12,d9,e2,f2,g3,h10,i3,j5,k1,l8,m11,n6,o10}サブルーチンブロック1900は、コードブック内でfiltersetsentflag1を返すが、サブペルフィルタセットコードは、コードブック内の複数の動き補償フィルタの選択されたサブセットを特定している。たとえば、一実施形態では、サブペルフィルタセットコードは、コードブックへのsubsetid数またはその他のインデックスであってよいまたはこれらから導出されてよい。ブロック1720では、ルーチン1700が、filtersetsentflagおよびサブペルフィルタセットコードfiltersetsentflagで示されている場合を、ルーチン1700が生成する符号化されているビットストリームに書き込む。サブルーチンブロック2000では、ルーチン1700が、随意に、符号化されていないフレームまたは画像の現在の部分について、整数位置動き補償フィルタを随意に決定する図20を参照して後述する。ループブロック1730を終了させるにあたり、ルーチン1700は、ブロック1710に繰り返し戻り、符号化されていないフレームまたは画像の次の部分もしあればを処理する。このように、ビットストリームへの少なくとも1つの動き補償フィルタセットを符号化すると、ルーチン1700がブロック1799で終了する。多くの場合、ルーチン1700は、複数の動画フレーム数についてシリアルに実行され、ルーチン1700は、より大きい動画符号化プロセスの一部である。図18は、一実施形態において、1つのコードブックを得るためのサブルーチン1800を示す。一部の実施形態では、コードブックを生成するプロセスは非常に長くかかり数時間または数日かかる、コードブックを一度だけまたは少ない頻度で生成して、再利用のために格納してよい。決定ブロック1805では、サブルーチン1800が、前に生成したコードブックを再利用のために格納したかを判断する。判断結果が肯定的である場合には、ブロック1810で、サブルーチン1800が、格納したコードブックを読み出して、最後のブロック1899に戻す。しかし、前に生成したコードブックが再利用のために格納されていない場合には、サブルーチン1800は、コードブックを生成するプロセスを開始する。一部の実施形態では、ブロック1815-1865は、オフラインのコードブック生成ルーチンとして独立して実行することができる。ブロック1815-1865は、図10のブロック1005-1050に示すプロセスに類似した別の図または別の特徴付として理解することができる。簡潔性のために、図10に関して上述した主題は、主には図18の以下の説明では繰り返さないことにする。開始ループブロック1815を始めるにあたり、サブルーチン1800は、複数のサブペル位置のうちそれぞれを処理するたとえば、図3に示されており、上述したa―o。ブロック1820で、サブルーチン1800は、現在のサブペル位置のデフォルトである動き補償フィルタを決定する。たとえば一実施形態では、サブルーチン1800が、H264の固定フィルタセットまたはその他の適切なデフォルトのフィルタセット等からの固定されたサブペル動き補償フィルタを利用してよい。ブロック1825で、サブルーチン1800は、現在のサブペル位置についての複数の改良された動き補償フィルタを生成するために、決定されたデフォルトの動き補償フィルタを繰り返し改良する。たとえば一実施形態では、サブルーチン1800は、ランダムウォークアルゴリズムまたは類似した最適化アルゴリズムを利用して、決定されたデフォルトの動き補償フィルタを繰り返し改良して、複数の改良された動き補償フィルタを生成することができる。開始ループブロック1830を始める際に、サブルーチン1800は、複数の改良された動き補償フィルタそれぞれを処理する。ブロック1835で、サブルーチン1800は、現在の改良された動き補償フィルタの符号利得たとえばSADの計測値を決定する。ブロック1840で、サブルーチン1800は、ブロック1830に繰り返し戻り、次の改良された動き補償フィルタもしあればを処理する。ブロック1845で、サブルーチン1800は、決定された符号利得を利用して、現在のサブペル位置たとえば高い符号利得、または低いSADを有するフィルタ群についての良好なパフォーマンスを有する改良された動き補償フィルタ群を選択する。ブロック1850では、サブルーチン1800が、現在のサブペル位置について選択された良好なパフォーマンスを有する改良された動き補償フィルタ群を格納する。最後のループブロック1855では、サブルーチン1800は、ブロック1815に繰り返し戻り、次のサブペル位置もしあればを処理する。一部の実施形態では、選択された良好なパフォーマンスを有する改良された動き補償フィルタは、現在のサブペル位置についてのベースのフィルタ上述したとして捉えることができ、他のサブペル位置のベースフィルタとあわさって、ベースのコードブックまたはベースのフィルタセット群が形成される。ブロック1860で、サブルーチン1800は、良好なパフォーマンスを有する改良された動き補償フィルタ群を利用して、複数のフィルタセットを繰り返し決定して各サブペル位置について1つの群、各フィルタセットが、各フィルタがそれぞれのサブペル位置にあたる、明示的なフィルタの組み合わせを含んでいる。本開示における文脈では、フィルタセットが、動き補償フィルタのサブセットと称されることがある、たとえば、{a0,b5,c7,d9,e4,f4,g12,h6,i7,j2,k4,l11,m8,n0,o10}。一部の実施形態では、サブルーチン1800は、ランダムウォークアルゴリズムまたは類似した最適化アルゴリズムを利用して、複数のフィルタセット/サブセットを繰り返し決定することができる。ブロック1865で、サブルーチン1800は、コードブックにおける決定されたフィルタセット/サブセットを示し、各決定されたフィルタセット/サブセットが、アドレスされたり、選択されたり、インデックスされたり、さもなくば、コードブック内で特定されてよい。たとえば一実施形態では、サブルーチン1800が、各決定されたフィルタセット/サブセットに、ID数またはインデックスを割り当てることができる。ブロック1870では、サブルーチン1800が、後で再利用するためにこのようにして生成されたコードブックを格納する。ブロック1899で、サブルーチン1800が終了して、コードブックを戻す。図19a、図19bは、一実施形態における、コードブックから動き補償フィルタのサブセットを選択するサブルーチン1900を示す。図19a、図19bは、図11a、図11bに示すプロセスに類似した別の図または別の特徴付として理解することができ、これらに関しては詳述済みである。簡潔性のために、図11a、図11bに関して上述した主題は、主には図19a、図19bの以下の説明では繰り返さないことにする。ブロック1903で、サブルーチン1900が、画像の少なくとも一部たとえば、画像を複数の部分に分割する様々な分割モードを示す図7aから図7fを参照を取得して、この画像の部分には、複数の画像コンテンツブロックが含まれている。開始ループブロック1905を始めるにあたり、サブルーチン1900が、この画像の部分の各画像コンテンツブロックを処理する。開始ループブロック1908を開始する際に、サブルーチン1900は、複数のサブペル位置それぞれを処理するたとえば図3に示すa―o、上で説明済みである。ブロック1910で、サブルーチン1900は、現在のサブペル位置{a0,a1,a2,a15}について複数のベース動き補償フィルタを取得する。開始ループブロック1913を始めるにあたり、サブルーチン1900は、現在のサブペル位置のベース動き補償フィルタそれぞれを処理する。ブロック1915で、サブルーチン1900は、現在のサブペル位置たとえばa0の現在のベース動き補償フィルタについて個々の符号利得を決定するSADを計算することで。最終ループブロック1918では、サブルーチン1900が、ブロック1913に繰り返し戻り、現在のサブペル位置についての次のベース動き補償フィルタもしあればを処理する。現在のサブペル位置についての各ベース動き補償フィルタについて符号利得を決定するとブロック1920、サブルーチン1900は、デフォルトの動き補償フィルタについて符号利得を決定するこれは、デフォルトの動き補償フィルタセットの一部である。たとえば一実施形態では、サブルーチン1900が、現在のサブペル位置について固定された動き補償フィルタの符号利得を決定してよいたとえば、H.264で利用される固定された動き補償フィルタセットの1つのフィルタ、または、他のデフォルトの動き補償リフィルタの1つ。最終ループブロック1923では、サブルーチン1900がブロック1908に繰り返し戻り、次のサブペル位置を処理するもしあれば。最終ループブロック1925では、サブルーチン1900がブロック1905に繰り返し戻り、その画像の部分の次の画像コンテンツブロックを処理するもしあれば。ブロック1928で、サブルーチン1900は、複数のアダプティブフィルタセットを取得して、ここで各フィルタセットは、各サブペル位置についてベース動き補償フィルタの1つを含んでいる。たとえば一実施形態では、サブルーチン1900が、以下のような複数のアダプティブフィルタセットを含むコードブックを取得してよい。サブセットID=0:{a0,b0,c0,d0,e0,f0,g0,h0,i0,j0,k0,l0,m0,n0,o0}サブセットID=1:{a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1}サブセットID=15:{a15,b15,c15,d15,e15,f15,g15,h15,i15,j15,k15,l15,m15,n15,o15}サブセットID=16:{a0,b5,c7,d9,e4,f4,g12,h6,i7,j2,k4,l11,m8,n0,o10}サブセットID=255:{a10,b6,c12,d9,e2,f2,g3,h10,i3,j5,k1,l8,m11,n6,o10}開始ループブロック1930の開始にあたり、サブルーチン1900は、取得したアダプティブフィルタセットそれぞれを処理する。ブロック1933で、サブルーチン1900は、現在のアダプティブフィルタセットの累積符号利得を決定する。たとえば一実施形態では、累積符号利得を決定することに、現在のアダプティブフィルタセットを構成するフィルタにおいて、個々の符号利得ブロック1915で決定されたものを合計することが含まれてよい。最後のループブロック1935では、サブルーチン1900がブロック1930に繰り返し戻り、次のアダプティブフィルタセットを処理するもしあれば。ブロック1938で、各アダプティブフィルタセットについて累積符号利得が決定されると、サブルーチン1900で、上述したブロック1920で決定された個々のデフォルトの符号利得を利用して、デフォルトのフィルタセットのデフォルトの累積符号利得たとえば、H264の固定フィルタセットまたは他の適切なセットを決定する。ブロック1940で、ブロック1933で決定された累積符号利得を利用して、サブルーチン1900は、ブロック1903で取得された画像の部分の良好な累積符号利得を持つアダプティブフィルタセットを選択する。一部の実施形態では、選択されたアダプティブフィルタセットは、決定されたうちの最高の累積符号利得を有するアダプティブフィルタセットであってよい。決定ブロック1943では、サブルーチン1900は、ブロック1938で決定されたデフォルトの累積符号利得を、選択された良好なアダプティブフィルタセットの累積符号利得と比較する。デフォルトのフィルタセットのほうが、高い符号利得を提供している場合SADが低いには、ブロック1950で、サブルーチン1900は、filtersetsentフラグを0またはNOにして、最終ブロック1999でfiltersetsentフラグを戻す。しかしアダプティブフィルタセットのほうが、高い符号利得を提供している場合SADが低いには、ブロック1945で、サブルーチン1900は、filtersetsentフラグを1またはYESにして、最終ブロック1948でサブルーチン1900が、選択されたアダプティブフィルタセットを特定するサブペルフィルタセットコードを決定する。たとえば、一実施形態では、サブペルフィルタセットコードは、コードブックへのsubsetid数またはその他のインデックスであってよいまたはこれらから導出されてよい。サブルーチン1900は、最終ブロック1999で、filtersetsentフラグおよび決定されたサブペルフィルタセットコードを戻す。図20は、一実施形態における、1つの画像の一部の整数位置動き補償フィルタを決定するサブルーチン2000を示す。ブロック2005で、サブルーチン2000は、画像の少なくとも一部を取得してたとえば1つの画像を複数の部分に分割するための様々な分割モードを示している図7aから図7f参照、1つの画像の部分には、複数の画像コンテンツブロックが含まれている。開始ループブロック2010を開始する際、サブルーチン2000は、画像の部分の画像コンテンツブロックそれぞれを処理する。ブロック2015で、サブルーチン2000は、複数の整数位置動き補償フィルタたとえば00,01,02,047を取得する。たとえば一実施形態では、サブルーチン2000が、整数位置コードブックたとえば表2に部分的に示されているものを取得してよい。他の実施形態では、複数の整数位置動き補償フィルタを、サブペル位置フィルタを含む1つのコードブック内に含めることができる。開始ループブロック2020を開始するにあたり、サブルーチン2000は、複数の整数位置動き補償フィルタそれぞれを処理する。ブロック2025で、サブルーチン2000は、現在の整数位置動き補償フィルタについての個々の符号利得たとえばSADを計算することでを決定する。最終ループブロック2030では、サブルーチン2000がブロック2020に繰り返し帰り、次の整数位置動き補償フィルタもしあればを処理する。最終ループブロック2035では、サブルーチン2000がブロック2010に繰り返し帰り、画像の部分の次の画像コンテンツブロックもしあればを処理する。ブロック2040で、各整数位置動き補償フィルタおよび画像の部分の各画像コンテンツブロックについて符号利得が決定されると、サブルーチン2000は、複数の整数位置動き補償フィルタの1つを、現在の画像の部分の好適な符号利得低いSADを有するものとして選択する。決定ブロック2045では、サブルーチン2000は、選択された好適な整数位置動き補償フィルタの符号利得を、これも同じ画像部分について選択されたサブペルフィルタセットの符号利得に比較するたとえば、図20のブロック2040の上の説明を参照。サブペルフィルタセットのほうが高い符号利得を提供しているSADが低い場合、ブロック2060で、サブルーチン2000は、intfiltsentフラグを0またはNOにして、最終ブロック2099でintfiltsentフラグを戻す。しかし好適な整数位置動き補償フィルタのほうが高い符号利得SADが低い場合には、ブロック2050で、サブルーチン2000が、intfiltsentフラグを1またはYESにして、ブロック2055で、サブルーチン2000が、ビットストリームに、選択された好適な整数位置動き補償フィルタを特定する整数位置フィルタコードを書き込む。たとえば一実施形態では、整数位置フィルタコードは、コードブックへのsubsetid数またはその他のインデックスであってよいまたはこれらから導出されてよい。サブルーチン2000は、最終ブロック2099に戻る。図21は、一実施形態における、たとえば復号化デバイス1600で実行可能な、コードブック動き補償フィルタリング動画復号化ルーチン2100を示す。ブロック2105で、ルーチン2100が、符号化されている動画ソースから符号化されているビットストリームを取得して、この符号化されているビットストリームは、動画の1以上の画像またはフレームを含んでいる。開始ループブロック2110を始めるにあたり、ルーチン2100は、動画の符号化されている画像またはフレームそれぞれを処理する。ブロック2115で、ルーチン2100は、ビットストリームから、現在の符号化されている画像またはフレームの1以上の画像部分を特定する1つの画像を複数の部分に分割するための様々な分割モードを示している図7aから図7f参照1以上の画像部分コードを読み出す。たとえば一実施形態では、ルーチン2100は、図12で示し上述した、pictonly1202、numpt1203、mapsent1204、および、ptmap1205の少なくとも1つのコードの一部またはすべてを読み出すことができる図12を参照して上述したことを参照。開始ループブロック2120を始めるにあたり、現在の動画の符号化されている画像またはフレームの1以上の画像部分それぞれを処理する。決定ブロック2125では、ルーチン2100は、符号化されているビットストリームが、画像の現在の符号化されている画像またはフレームの画像部分の整数位置のフィルタコードを含むかを判断する。たとえば一実施形態では、ルーチン2100は、符号化されているビットストリームが、図12に示し、上述されているintfiltsentフラグを含むかを判断してよい。ルーチン2100で、符号化されているビットストリームがこの整数位置フィルタコードを含むと判断する場合、ブロック2130で、ルーチン2100が、ビットストリームから整数位置フィルタコードを読み出す。たとえば一実施形態では、ルーチン2100が、intpelfiltcode1211をビットストリームから読み出してよい図12に示し、上述したことを参照。ブロック2135で、ルーチン2100は、複数の整数位置動き補償フィルタたとえば00,01,02,047を取得する。たとえば一実施形態では、サブルーチン2000が、整数位置コードブックたとえば表2に部分的に示されているものを取得してよい。他の実施形態では、複数の整数位置動き補償フィルタを、サブペル位置フィルタをこれも含む1つのコードブック内に含めることができる。通常であれば、ルーチン2100が、前に格納した複数の整数位置の動き補償フィルタを、ルーチン2100にアクセス可能なメモリから読み出してよい。ブロック2140で、ルーチン2100は、ブロック2130でビットストリームから読み出した整数位置フィルタコードintpelfiltcode1211が示す複数の整数位置動き補償フィルタのうちの1つを選択する。そしてサブルーチン2100は、ブロック2170で選択した整数位置動き補償フィルタを利用して、現在符号化されている動画の画像またはフレームの現在の画像部分のブロックを予測する。しかし決定ブロック2125で、もしもルーチン2100が、符号化されているビットストリームが整数位置フィルタコードを含まないと判断した場合には、決定ブロック2145で、ルーチン2100が、符号化されているビットストリームが、動画の現在符号化されている画像またはフレームの現在の画像部分のサブペルフィルタセットコードを含むかを判断する。たとえば一実施形態では、ルーチン2100は、符号化されているビットストリームが、filtsentフラグ1206図12に示し、上述したを含むかを判断してよい。含まない場合には、ブロック2165で、ルーチン2100は、デフォルトのサブペル動き補償フィルタセットを選択するたとえば、H.264で利用される固定されたサブペルフィルタセットまたは他の適切なデフォルトのフィルタのセット。次いでサブルーチン2100は、デフォルトのサブペル動き補償フィルタセットを利用してブロック2170、動画の現在の符号化されている画像またはフレームの現在の画像部分のブロックを予測する。しかしルーチン2100が決定ブロック2145で符号化されているビットストリームが動画の現在符号化されている画像またはフレームの現在の画像部分のサブペルフィルタセットコードを含むと判断する場合には、ブロック2150で、ルーチン2100が、ビットストリームからサブペルフィルタセットコードを読み出す。たとえば一実施形態では、ルーチン2100が、ビットストリームからsubpeliltcode1208図12に示し上述したを読み出す。ブロック2155で、ルーチン2100は、サブペル動き補償コードブック表1に部分的に示したようなものを上述したように取得する。通常であれば、ルーチン2100が、前に格納したサブペル動き補償コードブックのコピーを、ルーチン2100にアクセス可能なメモリから読み出してよい。ブロック2140で、ルーチン2100は、ブロック2130でビットストリームから読み出した整数位置フィルタコードsubpelfiltcode1208が示す複数の整数位置動き補償フィルタのうちの1つを選択する。そしてサブルーチン2100は、ブロック2170で選択した整数位置動き補償フィルタを利用して、現在符号化されている動画の画像またはフレームの現在の画像部分のブロックを予測する。最終ループブロック2175で、ルーチン2100はブロック2120に繰り返し戻り、動画の現在符号化されている画像またはフレームの次の画像部分もしあればを処理する。ブロック2180で、ルーチン2100は、ブロック2170の様々な繰り返しにおいて予測された1以上の画像部分の予測されたブロックに従って符号化された画像を生成する。ブロック2185で、ルーチン2100は、生成した画像を、ルーチン2100を実行するデバイスに関するディスプレイに表示する。ループブロック2190を終えるにあたって、ルーチン2100はブロック2110に繰り返し戻り、動画の次の符号化されている画像またはフレームもしあればを処理する。ルーチン2100はブロック2199で終了する。ここでは特定の実施形態を図示して記載してきたが、当業者であれば、本開示の範囲を逸脱せずに、示した特定の実施形態を、代わりまたは均等物である実装例で置き換えることができるだろう。本願は、ここに開示する実施形態のすべての適合例および変形例を含むよう意図される。"