(57)【要約】階層的な標本値キャッシュを使うビデオ動き処理最適化のための方法および装置が提供される。ビデオ動き処理のための記憶方法は、一つまたは複数のレベルを有するように階層的キャッシュを構成する段階（６２２）を含み、該階層的キャッシュのレベルのそれぞれは、ビデオ動き処理のための標本値を計算することに関連する計算階層の複数のレベルのそれぞれに対応する。当該方法はまた、ビデオ動き処理に関係するある標本値についての特定の値が階層的キャッシュ内に存在していないとき、その特定の値が計算階層の前記複数のレベルのうちのどのレベルに対応するかに基づいて、その特定の値を階層的キャッシュの対応するレベルに記憶することを含む。
2009504035.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ動き処理のための記憶方法であって：
当該方法は、一つまたは複数のレベルを有するように階層的キャッシュを構成する段階を含み、該階層的キャッシュのレベルのそれぞれは、ビデオ動き処理のための標本値を計算することに関連する計算階層の複数のレベルのそれぞれに対応し、
当該方法は、ビデオ動き処理に関係するある標本値についての特定の値が階層的キャッシュ内に存在していないとき、その特定の値が計算階層の前記複数のレベルのうちのどのレベルに対応するかに基づいて、その特定の値を階層的キャッシュの対応するレベルに記憶することを含む、方法。
【請求項２】
前記ビデオ動き処理が、ブロック・ベースの動き補償プロセスを含む、請求項１記載の方法。
【請求項３】
前記特定の値が階層的キャッシュ内に存在するときに、階層的キャッシュの対応するレベルからその標本値についての該特定の値を取得することをさらに含む、請求項１記載の方法。
【請求項４】
前記標本値についての特定の値を計算する際にその後使用するために、前記標本値のための中間的な値を、該中間的な値が階層的キャッシュ内に存在していないとき、その中間的な値が計算階層の前記複数のレベルのうちのどのレベルに対応するかに基づいて、階層的キャッシュの対応するレベルに記憶することを含む、請求項１記載の方法。
【請求項５】
前記特定の値が前記標本値についての最終的な値であり、前記中間的な値が該特定の値より高い精度で記憶される、請求項４記載の方法。
【請求項６】
前記のより高い精度が、前記最終的な標本値よりも、より高い解像度、より高いフレームレートおよびより高いビットレートのうちの少なくとも一つに関係する、請求項５記載の方法。
【請求項７】
前記構成する段階が、前記階層的キャッシュを、該階層的キャッシュの前記一つまたは複数のレベルが固定であるように静的に定義された階層を有するように構成する、請求項１記載の方法。
【請求項８】
前記構成する段階が、前記階層的キャッシュを、既存の前記一つまたは複数のレベルが除去されることができ、一つまたは複数の新しいレベルが追加されることができるように動的に定義された階層を有するように構成する、請求項１記載の方法。
【請求項９】
前記動的に定義された階層の個々のレベルが、ユーザー入力に応じて動的に有効にされる、請求項８記載の方法。
【請求項１０】
ビデオ動き処理の現在の実行のために、階層的キャッシュの前記一つまたは複数のレベルのうちのどれが有効にされるべきかに関係する一つまたは複数のユーザー入力を受け取る段階をさらに有する、請求項１記載の方法。
【請求項１１】
ビデオ動き処理のために使われる基準フレームに対応するある位置の整数部分および小数部分に基づいて階層的キャッシュにアクセスする段階をさらに有する、請求項１記載の方法。
【請求項１２】
階層的キャッシュがソフトウェアで実装される、請求項１記載の方法。
【請求項１３】
ビデオ動き処理をサポートするための装置であって：
一つまたは複数のレベルを有するよう構成された階層的キャッシュを有しており、該階層的キャッシュのレベルのそれぞれは、ビデオ動き処理のための標本値を計算することに関連する計算階層構造の複数のレベルのそれぞれに対応し、該階層的キャッシュは、ビデオ動き処理に関係するある標本値についての特定の値が該階層的キャッシュ内に存在していないとき、その特定の値を、計算階層の前記複数のレベルのうちのどのレベルにその特定の値が対応しているかに基づいて、該階層的キャッシュの対応するレベルに記憶する、装置。
【請求項１４】
前記ビデオ動き処理が、ブロック・ベースの動き補償プロセスを含む、請求項１３記載の装置。
【請求項１５】
前記階層的キャッシュが、前記特定の値が該階層的キャッシュ内に存在するときに、階層的キャッシュの対応するレベルからその標本値についての該特定の値を取り出す、請求項１３記載の装置。
【請求項１６】
前記階層的キャッシュが、前記標本値についての特定の値を計算する際にその後使用するために、前記標本値のための中間的な値を、該中間的な値が階層的キャッシュ内に存在していないとき、その中間的な値が計算階層の前記複数のレベルのうちのどのレベルに対応するかに基づいて、階層的キャッシュの対応するレベルに記憶する、請求項１３記載の装置。
【請求項１７】
前記特定の値が前記標本値についての最終的な値であり、前記中間的な値が該特定の値より高い精度で記憶される、請求項１６記載の装置。
【請求項１８】
前記のより高い精度が、前記最終的な標本値よりも、より高い解像度、より高いフレームレートおよびより高いビットレートのうちの少なくとも一つに関係する、請求項１７記載の装置。
【請求項１９】
前記階層的キャッシュが、該階層的キャッシュの前記一つまたは複数のレベルが固定であるように静的に定義された階層を有するように構成されている、請求項１３記載の装置。
【請求項２０】
前記階層的キャッシュが、既存の前記一つまたは複数のレベルが除去されることができ、一つまたは複数の新しいレベルが追加されることができるように動的に定義された階層を有するように構成されている、請求項１３記載の装置。
【請求項２１】
前記動的に定義された階層の個々のレベルが、ユーザー入力に応じて動的に有効にされる、請求項２０記載の装置。
【請求項２２】
前記階層的キャッシュが、ビデオ動き処理の現在の実行のために、該階層的キャッシュの前記一つまたは複数のレベルのうちのどれが有効にされるべきかに関係する一つまたは複数のユーザー入力に基づいて構成される、請求項１３記載の装置。
【請求項２３】
前記階層的キャッシュが、ビデオ動き処理のために使われる基準フレームに対応するある位置の整数部分および小数部分に基づいてアクセスされる、請求項１３記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本出願は、2005年7月28に出願された、“Method  and  Apparatus  for  Video  Motion  Compensation”という名称の米国仮出願第60/703,204号の恩恵を主張するものである。該文献はここにその全体において参照によって組み込まれる。
【０００２】
発明の分野
本発明は、概括的にはビデオのエンコードおよびデコードに、より詳細には、階層的な標本値キャッシュを使うビデオ動き処理最適化のための方法および装置に関する。
【背景技術】
【０００３】
多くのビデオ・エンコーダ／デコーダ用途について、動き推定および動き補償は主要なパフォーマンス上のボトルネックである。統計的に、結果的な輝度（luma）または色度（chroma）標本値を生成するために使われる計算は、結果的な標本値を選択するために使われる動き補償／推定アルゴリズムにおける空間‐時間的な相関のため、冗長であることがある。十分なメモリ資源をもつビデオ・システムでは、これらの標本値はキャッシュでき、それにより冗長な計算を回避し、実行時間を節約することができる。
【０００４】
動き補償／推定を最適化する努力の多くは、必要な標本値を計算するコードの最適化に焦点を当ててきた。この実践は、プログラム・フローから冗長な計算を取り除きはしない。
【０００５】
輝度標本値補間プロセスにおける冗長性のいくらかを解説するためにこれから与える記述の輝度標本値補間プロセスは、国際標準化機構／国際電気標準会議（ISO/IEC）動画像専門家グループ４（MPEG-4）パート10先進ビデオ符号化（AVC）規格／国際電気通信連合、電気通信部門（ITU-T）H.264規格（以下、「MPEG-4/H.264規格」または単に「H.264規格」）についてのものである。
【０００６】
H.264規格は、四分の一ピクセル（四分の一画素）補間方式を利用する。図１は、これらの標本値がどのように配置されているかを示している。図１に目を向けると、H.264規格に基づく四分の一標本値輝度補間のための整数標本値位置および端数標本値位置を示す図が、概括的に参照符号１００によって示されている。整数標本値位置は、空であるか、大文字を含むブロックによって示され、端数標本値位置は小文字を含むブロックによって示される。
【０００７】
サブピクセル（サブ画素）標本値を整数座標点にある標本値から計算するには次のようにする（H.264規格のセクション8.4.2.2.1より）。
【０００８】
輝度標本値AないしU…が与えられたとき、端数標本値位置にある輝度標本値aないしsは次の規則によって導出される。半分の標本値位置における輝度予測値は、タップ値（1,−5,20,20−5,1）をもつ６タップ・フィルタを適用することによって導出される。四分の一標本値位置における輝度予測値は、整数標本値位置および半分の標本値位置にある標本値を平均することによって導出される。各端数位置についてのプロセスを以下に述べる。
【０００９】
・bとラベルされた半分の標本値位置における標本値の導出には、まず６タップ・フィルタを水平方向で直近の整数位置の標本値に適用することによってb1と記される中間値を計算する。hとラベルされた半分の標本値位置における標本値の導出には、まず６タップ・フィルタを垂直方向で直近の整数位置の標本値に適用することによってh1と記される中間値を計算する：
b1＝（E−5×F＋20×G＋20×H−5×I＋J）
h1＝（A−5×C＋20×G＋20×M−5×R＋T）
最終的な予測値bおよびhは：
b＝Clip1Y（(b1＋16)>>5）
h＝Clip1Y（(h1＋16)>>5）
を使って導出される。
【００１０】
・jとラベルされた半分の標本値位置における標本値の導出には、まず６タップ・フィルタを水平方向または垂直方向いずれかで（どちらも同じ結果を生じるので）直近の半分の標本値位置の中間値に適用することによってj1と記される中間値を計算する。
【００１１】
j1＝cc−5×dd＋20×h1＋20×m1−5×ee＋ff）または
j1＝aa−5×bb＋20×b1＋20×s1−5×gg＋hh）
ここで、aa、bb、gg、s1およびhhと記される中間値は、b1の導出と同様にして６タップ・フィルタを水平方向に適用することによって導出され、cc、dd、ee、m1およびffと記される中間値は、h1の導出と同様にして６タップ・フィルタを垂直方向に適用することによって導出される。最終的な予測値jは：
j＝Clip1Y（(j1＋512)>>10）
を使って導出される。
【００１２】
・最終的な予測値sおよびmは、bおよびhの導出と同様にして、
s＝Clip1Y（(s1＋16)>>5）
m＝Clip1Y（(m1＋16)>>5）
で与えられるように、s1およびm1から導出される。
【００１３】
・a、c、d、n、f、i、kおよびqとラベルされる四分の一標本値位置における標本値は：
a＝(G＋b＋1)>>1
c＝(H＋b＋1)>>1
d＝(G＋h＋1)>>1
n＝(M＋h＋1)>>1
f＝(b＋j＋1)>>1
i＝(h＋j＋1)>>1
k＝(j＋m＋1)>>1
q＝(j＋s＋1)>>1
を使って、整数標本値位置および半分の標本値位置における二つの直近の標本値を平均して切り上げることによって導出される。
【００１４】
・e、g、pおよびrとラベルされる四分の一標本値位置における標本値は：
e＝(b＋h＋1)>>1
g＝(b＋m＋1)>>1
p＝(h＋s＋1)>>1
r＝(m＋s＋1)>>1
を使って、対角線方向における半分の標本値位置にある二つの直近の標本値を平均して切り上げることによって導出される。
【００１５】
Clip1Yは、数が0より小さければ0に、255より大きければ255にクランプし、それ以外の場合にはその数は変更なしに通過させる演算であることを注意しておく。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従来技術の上記したことを含むさまざまな欠点および不都合な点が、本発明によって対処される。本発明は、階層的な標本値キャッシュを使うビデオ動き処理最適化のための方法および装置に向けられる。
【課題を解決するための手段】
【００１７】
本発明のある側面によれば、ビデオ動き処理のための記憶方法が提供される。本方法は、一つまたは複数のレベルを有するよう階層的キャッシュを構成することを含む。該階層的キャッシュのレベルのそれぞれは、ビデオ動き処理のための標本値を計算することに関連する計算階層構造の複数のレベルのうちのそれぞれに対応する。本方法はまた、ビデオ動き処理に関係するある標本値についての特定の値が階層的キャッシュ内に存在していないとき、その特定の値を階層的キャッシュの対応するレベルに記憶することを含む。該対応は、計算階層の前記複数のレベルのうちのどのレベルにその特定の値が対応しているかに基づく。
【００１８】
本発明のもう一つの側面によれば、ビデオ動き処理をサポートするための装置が提供される。本装置は、一つまたは複数のレベルを有するよう構成された階層的キャッシュを含む。該階層的キャッシュのレベルのそれぞれは、ビデオ動き処理のための標本値を計算することに関連する計算階層構造の複数のレベルのうちのそれぞれに対応する。階層的キャッシュは、ビデオ動き処理に関係するある標本値についての特定の値が該階層的キャッシュ内に存在していないとき、その特定の値を該階層的キャッシュの対応するレベルに記憶する。該対応は、計算階層の前記複数のレベルのうちのどのレベルにその特定の値が対応しているかに基づく。
【００１９】
これらのことを含む本発明のさまざまな側面、特徴および利点が、付属の図面との関連で読むべき例示的な実施形態の以下の詳細な記述から明らかとなるであろう。
【００２０】
本発明は、例示的な図面に基づくことでよりよく理解されうる。
【発明を実施するための最良の形態】
【００２１】
本発明は、階層的標本値キャッシュを使うビデオ動き処理のための方法および装置に向けられる。有利なことに、本願の原理に基づく方法および装置は、たとえばブロック・ベースの動き補償および／またはブロック・ベースの動き推定プロセスのようなビデオ動き処理の間に実行される冗長な計算を解消する。
【００２２】
本発明がいかなる特定のビデオ・エンコード／デコード規格／技術にも限定されず、よって、本技術分野および関連技術分野の当業者がすぐ認識できるいかなるビデオ・エンコード／デコード規格／技術が本願の原理に基づいて利用されてもよいことは理解されるものとする。さらに、本願の原理に基づく階層的キャッシュはハードウェアおよび／またはソフトウェアにおいて実装されうることは理解されるものとする。さらに、本願の原理に基づく階層的キャッシュの実装は、一つまたは複数の階層的キャッシュに関わりうる。
【００２３】
本記載は、本発明の原理を例解するものである。よって、ここに明示的に記載や図示はされていなくても、本発明を具現し、本発明の精神および範囲内に含まれるさまざまな構成を当業者が考案できるであろうことは理解されるであろう。
【００２４】
ここで述べられる例および条件的な言辞は、本発明の原理および当技術を進めるために発明者によって貢献される概念を理解する際に読者を助けるという教育的な目的のために意図されており、そのような個別的に述べられている例および条件に限定することなく解釈されるべきものである。
【００２５】
さらに、本発明の原理、側面および実施形態を述べる本稿におけるあらゆる陳述ならびにその個別的な例は、その構造的および機能的な等価物両方を包含することが意図されている。さらに、そのような等価物が、現在知られている等価物および将来開発される等価物すなわち構造にかかわらず同じ機能を実行する任意の開発される要素の両方を含むことが意図されている。
【００２６】
よって、たとえば、当業者は、ここに呈示されるブロック図が本発明の原理を具現する例示的な回路の概念図を表していることを理解するであろう。同様に、いかなるフローチャート、流れ図、状態遷移図、擬似コードその他も、コンピュータ可読媒体において実質的に表現され、よってコンピュータまたはプロセッサによって実行されうるさまざまなプロセスを表していることも理解されるであろう。これはそのようなコンピュータまたはプロセッサが明示的に示されているか否かにかかわりない。
【００２７】
図面に示されるさまざまな要素の機能は、専用ハードウェアの使用を通じて提供されてもよいし、ソフトウェアを実行できるハードウェアの適切なソフトウェアに関連しての使用によって提供されてもよい。プロセッサによって提供されるとき、前記機能は単一の専用プロセッサによって、単一の共用プロセッサによって、あるいは一部が共有されていてもよい複数の個別プロセッサによって提供されてもよい。さらに、用語「プロセッサ」または「コントローラ」の明示的な使用は、ソフトウェアを実行する機能をもつハードウェアのみを指すものと解釈すべきではなく、暗黙的に、限定なしに、デジタル信号プロセッサ（DSP）ハードウェア、ソフトウェアを記憶するための読み出し専用メモリ（ROM）、ランダム・アクセス・メモリ（RAM）および不揮発性記憶装置を含みうる。
【００２８】
通常型および／またはカスタム型のその他のハードウェアも含まれていてもよい。同様に、図面に示されるスイッチがあったとしても、それは単に概念的なものである。その機能は、プログラム論理の動作を通じて、専用論理を通じて、プログラム制御と専用論理の相互作用を通じて、あるいは手動ででも実行されうる。その個別の技法は、文脈からより特定的に理解されるところにより、実装者によって選択可能である。
【００２９】
本願の請求項では、特定の機能を実行する手段として表現されたいかなる要素も、その機能を実行するいかなる方法をも包含することが意図されている。それには、たとえば、ａ）その機能を実行する回路要素の組み合わせまたはｂ）ファームウェア、マイクロコードなどを含む任意の形のソフトウェアを、そのソフトウェアを実行する適切な回路と組み合わせて前記機能を実行するようにしたものが含まれる。そうした請求項によって定義される本発明は、さまざまな挙げられている手段によって提供される機能性が、該請求項が要求する仕方で組み合わされ、一緒にされるという事実に存している。よって、それらの機能性を実行できるいかなる手段もここに示される手段と等価であると見なされる。
【００３０】
図２に目を転じると、例示的なビデオ・エンコーダが参照符号２００によって概括的に示されている。ビデオ・エンコーダ２００への入力は、信号通信において、加算合流点２１０の非反転入力と接続される。加算合流点２１０の出力は、信号通信において、変換器／量子化器２２０と接続される。変換器／量子化器２２０の出力は、信号通信において、エントロピー符号化器２４０と接続される。エントロピー符号化器２４０の出力が、エンコーダ２００の出力として得られる。
【００３１】
変換器／量子化器２２０の出力はさらに、信号通信において、逆変換器／量子化器２５０と接続される。逆変換器／量子化器２５０の出力は、信号通信において、ブロック解除フィルタ２６０の入力と接続される。ブロック解除フィルタ２６０の出力は、信号通信において、基準画像記憶２７０と接続される。基準画像記憶２７０の第一の出力は、信号通信において、動き推定器２８０の第一の入力と接続される。エンコーダ２００への入力がさらに、信号通信において、動き推定器２８０の第二の入力と接続される。動き推定器２８０の出力は、信号通信において、動き補償器２９０の第一の入力と接続される。基準画像記憶２７０の第二の出力が、信号通信において、動き補償器２９０の第二の入力と接続される。動き補償器２９０の出力は、信号通信において、加算合流点２１０の反転入力と接続される。
【００３２】
今の実施形態に関連する原理によれば、階層的キャッシュ２７７Ａが動き補償器２９０内に設けられ、階層的キャッシュ２７７Ｂが動き推定器２８０内に設けられる。動き補償器２９０および動き推定器２８０に別個のキャッシュが含まれるように示されているが、他の実施形態では、単一のキャッシュが動き補償器２９０および動き推定器２８０の両方によって利用されてもよいし、あるいは二つ以上のキャッシュが動き補償器２９０および／または動き推定器２８０において使用されてもよいことは理解されるものとする。すなわち、ここに提供される本発明の教示を与えられれば、本技術および関連技術の当業者は、本発明の範囲を維持しながら、ブロック・ベースの動き推定および／または動き補償プロセスのために使うための階層的キャッシュ・システムのこれらおよび他のさまざまな構成を考えるであろう。
【００３３】
図３に目を転じると、例示的なビデオ・デコーダが、概括的に参照符号３００によって示されている。ビデオ・デコーダ３００は、ビデオ・シーケンスを受信するエントロピー復号器３１０を含んでいる。エントロピー復号器３１０の第一の出力は、信号通信において、逆量子化器／変換器３２０の入力と接続される。逆量子化器／変換器３２０の出力は、信号通信において、加算合流点３４０の第一の入力と接続される。
【００３４】
加算合流点３４０の出力は、信号通信において、ブロック解除フィルタ３９０と接続されている。ブロック解除フィルタ３９０の出力は、信号通信において、基準画像記憶３５０と接続されている。基準画像記憶３５０は、信号通信において、動き補償器３６０の第一の入力と接続されている。動き補償器３６０の出力は、信号通信において、加算合流点３４０の第二の入力と接続されている。エントロピー復号器３１０の第二の出力は、信号通信において、動き補償器３６０の第二の入力と接続されている。ブロック解除フィルタ３９０の出力が、ビデオ・デコーダ３００の出力として得られる。
【００３５】
今の実施形態に関連する原理によれば、階層的キャッシュ３７７Ａが動き補償器３６０内に設けられる。動き補償器３６０に単一のキャッシュが含まれるように示されているが、他の実施形態では、二つ以上のキャッシュが動き補償器３６０に含まれていてもよいことは理解されるものとする。すなわち、ここに提供される本発明の教示を与えられれば、本技術および関連技術の当業者は、本発明の範囲を維持しながら、ブロック・ベースの動き推定および／または動き補償プロセスのために使うための階層的キャッシュ・システムのこれらおよび他のさまざまな構成を考えるであろう。
【００３６】
上記したように、階層的標本値キャッシュを使うブロック・ベースのビデオ動き推定／補償の最適化のための方法および装置が提供される。有利なことに、ブロック・ベースの動き補償および／または動き推定プロセスにおけるランタイムでの冗長な計算の数は、本願の原理の教示に基づいて減少しうる。
【００３７】
上記したように、ブロック・ベースの動き補償／推定において、ある補間された標本値の計算は他の源標本値に依存する。これらの源標本値は中間的な性質であってもよく、もしそうであれば、それらの中間的標本値が計算されてはじめて最終的な結果的標本値が計算できることになる。よって、結果的な標本値の間には階層的な関係がある。
【００３８】
たとえば、H.264ビデオ規格では、結果的な輝度標本値は、６タップの有限インパルス応答（FIR）フィルタを、基準フレームにおいて水平方向または垂直方向に隣接する輝度標本値に適用することによって計算されうる。1,−5,20,20−5,1の係数なので、このFIRフィルタは、4回の乗算と5回の加算を使う。丸めおよびシフト動作は、FIRフィルタ本体の一部ではないため、この記述では説明しないことを注意しておくべきであろう。よって、FIRフィルタは、比較的複雑（高価）な補間機構である。したがって、このFIRフィルタの冗長な使用の解消がパフォーマンスを改善するであろう。さらに、このFIRフィルタへの入力がそれ自身、中間的な標本値であり、このFIRフィルタへの入力のそれぞれがそのFIRフィルタまたは別のFIRフィルタの出力である場合がある。これは、標本値への（可能性としては）６つの異なるフィルタ適用の出力をフィルタ処理することになり、計算量を1桁増す。この最終的なFIRフィルタに供給される６つの標本値のそれぞれが計算されなければなかったら、全部で28回の乗算および35回の加算があることになる。よって、この二重のフィルタ処理に関わる冗長な計算を取り除くことによって、一層大きなパフォーマンス上の利得が実現されることになる。
【００３９】
よって、再び図１を参照すると、補間された輝度標本値の間に階層的な関係があることが見て取れる。bおよびhによって代表される標本値（これはそれぞれsおよびmを含む）は、基準フレームからくる整数位置における輝度標本値に依存する。jによって代表される標本値は、bまたはhによって代表される型の（６つの）標本値に依存する。aおよびcによって代表される標本値は、bによって代表される標本値および整数位置の標本値に依存する。dおよびnによって代表される標本値は、hによって代表される標本値および整数位置の標本値に依存する。f、i、kおよびqによって代表される標本値は、それぞれb、h、m、sによって代表される標本値とjによって代表される標本値に依存する。最後に、e、g、pおよびrによって代表される標本値は、jによって代表される標本値と、それぞれG、H、MおよびNによって代表される整数位置の標本値に依存する。
【００４０】
これらの関係は、階層構造の諸層（tiers）である。参照の都合上、これらの層に名前を与えることにする。図４に目を転じると、四分の一画素輝度標本値の種々の型の位置が示された、1×1ブロックが、概括的に参照符号４００によって示されている。αとマークされた位置は、基準フレームに見出される整数位置の標本値である。位置座標の小数部分が括弧内にある。（基準フレームからくる）整数位置の標本値はここではα標本値と称される。bおよびhによって代表される標本値はβ標本値と称される。a、c、dおよびnによって代表される標本値はγ標本値と称される。e、g、pおよびrによって代表される標本値はδ標本値と称される。jによって代表される標本値はε標本値と称される。最後に、f、i、kおよびqによって代表される標本値は、ζ標本値と称される。キャッシュの下位レベルは、該レベルが保持している標本値の型によって名付けられてもよい。すなわち、β下位キャッシュはβ標本値を保持する。各レベルの相対的な計算コストは、β標本値からζ標本値に向けて増加する。用語「下位キャッシュ（sub-cache）」および「レベル（level）」（階層的キャッシュ中のレベルという時のような）はここでは交換可能に使われることは理解されるものとする。
【００４１】
上記から推論できるように、β標本値は二つのα標本値から導出され、γ標本値は一つのα標本値および一つのβ標本値から導出され、δ標本値は二つのβ標本値から導出され、ε標本値は６つのβ標本値から導出され、ζ標本値は一つのε標本値と一つのβ標本値から導出される。図５に目を転じると、図４に示された1×1ブロックの種々の標本値型の間の依存関係が、概括的に参照符号５００によって示されている。
【００４２】
今の実施形態に関連する方式内であるさらなる内訳が使われる。β下位キャッシュ（またはβレベル）は、異なる小数座標をもつ二つの構成員を有する。同様に、γ、δおよびζレベルは、それぞれ４つの標本値を有する。同じ型の標本値の間で区別するために、小数座標が動員される。たとえば、β標本値はβ(.50,.00)およびβ(.00,.50)と称されうる。
【００４３】
階層的キャッシュは、特定の標本値についての補間プロセスからの中間結果を保存し、必要に応じてそれらの結果を返すことによって、これらの関係を利用することにより、その標本値を計算するための必要な計算のいくらかを実行し直さなければならない費用を節約できる。たとえば、（再び上記の図１を参照して）γ(.25,.00)標本値である標本値aは、（基準フレームからのピクセルのほかに）β(.50,.00)標本値である標本値bが利用可能であることに依存する。標本値aが必要とされているが、キャッシュのγ(.25,.00)レベルにない場合、標本値aは計算され、キャッシュに追加される必要がある。aを計算する一環として、bが要求される。bがβ(.50,.00)キャッシュにあれば、β(.50,.00)キャッシュがbを転送し、それによりaの計算を高速化する。bがβ(.50,.00)キャッシュになければ、bが計算されてそのキャッシュに入れられ、次いでaが計算できるよう転送される。aが計算されると、それはγ(.25,.00)レベルにキャッシュされる。
【００４４】
これから、本願の原理のさまざまな例示的な実施形態に基づく静的キャッシュおよび動的キャッシュに関する記述をする。
【００４５】
H.264規格に関わる本発明の原理のある実施形態では、当該キャッシュ内で可能な全部で15個のレベル（下位キャッシュ）がある：２つのβ、４つのδ、４つのγ、１つのεおよび４つのζレベルである。階層的標本値キャッシュは、15個のレベルすべてを含んでいても、いなくてもよい。たとえば、あるキャッシュでは、β下位キャッシュとε下位キャッシュだけが実装されていることがありうる。同様に、キャッシュは、所与の層（tier）のすべてのレベル（level）を含んでいなくてもよい：すなわち、あるキャッシュはζ(.25,.50)およびζ(.50,.25)下位キャッシュを有するだけで、４つのζ下位型すべてを有していなくてもよい。標本値キャッシュを用いるにはメモリおよび計算上のオーバーヘッドがあるので、これは、メモリおよび計算資源が特定の復号環境のために最も効率的に利用されることを許容する。大量の利用可能なメモリがあれば、より多くの下位キャッシュの使用に耐えられる。メモリが貴重であれば、おそらく一つか二つの下位キャッシュが使われる。さらに、15個のレベルのうちの一つまたは複数は、下位キャッシュではなく、スタンドアローン・キャッシュとして実装されてもよい。本願の原理のこれらのおよび他のさまざまな実装および構成は、ここに提供される本願の原理の教示が与えられれば、本技術および関連技術の当業者によって、容易に考えられる。
【００４６】
本願の原理に基づく静的キャッシュは、階層構造の諸レベルが固定されているキャッシュである。特定のエンコードおよび／またはデコード環境において標本値キャッシングに利用可能な資源がそこそこ固定したままであれば、静的キャッシュは、システムに対して下位キャッシュ管理のための追加的なオーバーヘッドを加えない。本願の原理に基づく動的キャッシュは、下位キャッシュが追加されたり除去されたりしうるキャッシュである。下位キャッシュの追加および／または除去は、キャッシュ外で評価される基準によって決定されうる。動的キャッシュは、資源の変動する可用性を利用し、これに適応することができる。より多くのメモリおよび／または計算パワーが利用可能になると、下位キャッシュが追加されうる。逆に、こうした資源が乏しくなると、下位キャッシュが除去され、それによりキャッシュ全体の需要を減らしうる。下位キャッシュ管理上の決定がなされる基準は資源だけではない。たとえば、十分な複雑さのエンコーダおよび／またはデコーダは、すべての補間が二分の一画素座標上で実行されることを見出す（または通知される）ことがありうる。これは、β標本値とε標本値だけが使用されることを意味するであろう。それにより、β下位キャッシュとε下位キャッシュが、使用のために役立つ唯一のレベルとなる（図４のβ標本値およびε標本値の位置を参照）。
【００４７】
ここで、本発明の例示的な実施形態に基づく、キャッシュ内容に関する記述を与える。
【００４８】
キャッシュは、特定のビデオ・デコーダ仕様のためのブロック・ベースの動き補償プロセスによって規定される機構を介して、基準内容から補間される輝度標本値の配列である。これらの演算は通例、比較的高価である。キャッシュは、これらの値を、その冗長な計算を避けるために保持しておく。キャッシュ内で標本値が保存される精度は、最終結果の精度でなくてもよい。たとえば、H.264デコードにおいて、標本値キャッシュは、一組の入力標本値に６タップのフィルタを適用することによって計算された輝度値を保持する。H.264での輝度標本値はしばしば8ビットである。ε標本値の計算においては、7回の６タップ・フィルタ適用がなされる。最初の6回は、基準フレームからの６つのα標本値の6つの行（または列）に対して実行され、β標本値の列（または行）を生じる。これら6つの入力β標本値は8ビット精度になるよう丸められ、クリッピングされることはなく、むしろ元の精度で保持され、そこで７回目の６タップ適用が実行される。次いでこの最終的なフィルタ適用の結果が丸められ、クリッピングされてε標本値を与える。（このプロセスは、上記のH.264規格の抜粋に示されている。）この、より高い中間精度で標本値を保持したβ下位キャッシュは、丸めおよびクリッピングにより最終的な精度にした標本値はε標本値を計算するのに使えないので、必要であろう。しかしながら、デコーダが、ε標本値が決して生成されない（よってζ標本値も）ことを知ることができる場合には、β下位キャッシュは中間精度の標本値を保持する必要はないであろう。β下位キャッシュは、最終的な（より小さな）精度で標本値を保持でき、おそらくは必要メモリを減らすことになる。
【００４９】
ここで、本発明の例示的な実施形態に基づく、キャッシュ・アクセスに関する記述をする。
【００５０】
ブロック・ベースの動き補償では、デコードされるブロックの現在位置に対する該ブロックの以前の位置を、動きベクトルが記述する。動きベクトルが現在ブロックの位置に加えられ、所望の標本値についての基準位置が与えられる。キャッシュ・アクセスは、その位置によってなされる。(X.y,Y.y)にある標本値（ここで、XおよびYは座標の整数部分、xおよびyは小数部分を表す）は、標本値キャッシュ内で明確な位置を有している。座標の小数部分xおよびyは、どの下位キャッシュがその標本値を保持するかを決定する（図４参照）。基準位置(10.50,8.00)における標本値は、β(.50,.00)型の標本値であり、利用可能であればその下位キャッシュ内にあるであろう。座標の整数部分XおよびYは、下位キャッシュ内でのその標本値の位置を与える。標本値が要求されるときはいつでも、その基準位置がキャッシュに与えられ、キャッシュは、結果を返すか、その標本値がキャッシュ内にないことを示すかする。
【００５１】
本願の原理に基づくキャッシュの使用によって影響されうる可能なパラメータとして含まれる／関わってくるものには：メモリ資源（メイン・メモリ帯域幅使用、メイン・メモリ・サイズ使用、コード・サイズおよびプロセッサ・キャッシュがもしあればそれに対する効果の面で）およびキャッシュを実装するコードによって消費される計算帯域幅（CPU時間）がある。パフォーマンス利得を見るために階層構造のすべてのレベルが実装される必要はなく、よってそのようなキャッシュを用いるアプリケーションによって要求されるメモリ使用はランタイムで（動的）または構築時に（静的）絞られることができることは理解されるものとする。さらに、さらにパフォーマンスを上げるために、資源使用増を代償として、複数のキャッシュがアプリケーションによって使用されてもよい。ここに提供される本発明の教示を与えられれば、本技術および関連技術における当業者は、本発明の範囲を維持しながら、ブロック・ベースの動き補償／推定のための階層的キャッシュのこれらおよび他のさまざまな構成を考えるであろう。
【００５２】
図６に目を転じると、ビデオ動き処理のための標本値をキャッシュするための方法が、概括的に参照符号６００によって示されている。ビデオ動き処理とは、たとえば、ブロック・ベースの動き補償プロセスおよび／またはブロック・ベースの動き推定プロセスでありうる。
【００５３】
方法６００は開始ブロック６０５を含む。該開始ブロック６０５は、制御を判断ブロック６１０に渡す。判断ブロック６１０は、動的階層レベル選択が実装されているかどうかを判定する。実装されていれば、制御は機能ブロック６１５に渡される。実装されていなければ、制御は機能ブロック６２５に渡される。
【００５４】
機能ブロック６１５は、キャッシュ階層構造のどのレベルを有効にするかを選択する一つまたは複数の入力を受け取り、制御を機能ブロック６２０に渡す。機能ブロック６２０は、機能ブロック６１５が受け取った前記一つまたは複数の入力によって動的に定義されるレベルを有する階層的キャッシュを生成し、制御を機能ブロック６２２に渡す。
【００５５】
機能ブロック６２５は、静的に定義された階層的キャッシュを生成し、制御を機能ブロック６２２に渡す。
【００５６】
機能ブロック６２２は、一つまたは複数のレベルを有するよう階層的キャッシュを構成する。各レベルは、ビデオ動き処理のために標本値を計算することに関連する計算の階層構造の複数のレベルのうちの一つに対応する。そして、機能ブロック６２２は制御を機能ブロック６３０に渡す。すなわち、階層的キャッシュの生成は、当該キャッシュの諸レベルが、ビデオ動き処理の結果的な標本値の間の階層関係における諸レベルに関係するか他の形で相関するように行われる。機能ブロック６２２によって実行される構成機能は、機能ブロック６２０および６２５の生成機能とは別個に示されているが、構成機能は生成機能の一部と考えてもよいことは理解されるものとする。
【００５７】
機能ブロック６３０は、キャッシュを、標本値が記憶されていない空の状態に初期化し、制御を判断ブロック６３５に渡す。
【００５８】
判断ブロック６３５は、ビデオ動き処理においてある特定の標本値が必要とされているかどうかを判定する。必要とされていれば、制御は判断ブロック６４０に渡される。そうでなければ、制御は機能ブロック６３５に返される。
【００５９】
判断ブロック６４０は、その特定の標本値が以前に計算されキャッシュされたかどうかを判定するために、キャッシュの適切なレベルを検査する。もしそうであれば、制御は機能ブロック６４５に渡される。そうでなければ、制御は機能ブロック６５０に渡される。
【００６０】
機能ブロック６４５は、その特定の標本値をキャッシュから取得し、判断ブロック６６０に制御を渡す。その特定の標本値が、基準フレームに対応する位置の整数部分および小数部分に基づいてそのキャッシュから取得されうることは理解されるものとする。
【００６１】
機能ブロック６５０は、その特定の標本値を計算し（それは一つまたは複数の中間的な標本値を計算し、キャッシュすることを要求することがありうる）、制御を機能ブロック６５５に渡す。機能ブロック６５０が、対応する最終的な標本値よりも高い精度で中間的な標本値をキャッシュしてもよいことは理解されるものとする。たとえば、中間的な標本値は、最終的な標本値よりも高い解像度、高いフレームレート、および／または高いビットレートで保存されてもよい。機能ブロック６５５は、機能ブロック６５０によって計算された特定の標本値をキャッシュに追加し、制御を判断ブロック６６０に渡す。
【００６２】
判断ブロック６６０は、そのキャッシュが（まだ）必要とされるかどうかを判定する。必要とされていれば、制御は機能ブロック６３５に戻される。必要とされていなければ、制御は機能ブロック６６５に渡される。機能ブロック６６５は、キャッシュを破棄し（たとえば、そのキャッシュによって消費／利用されていたメモリ資源が解放されるなど）、制御を終了ブロック６７０に渡す。
【００６３】
さらに、階層的キャッシュの諸レベルと、ブロック・ベースの動き補償／推定プロセスの結果的な標本値の間の階層的関係との相関に関し、解説の目的のためにここで例を述べる。たとえば、H.264規格では、小数座標0.5を有する要求される標本値は、小数座標0.0を有する標本値から補間される必要がある。小数座標0.25または0.75を有する要求される標本値は、少なくとも小数座標0.5を有する一つの標本値から補間される必要がある。H.264規格の節8.4.2.2.1が記述しているのは規範的な関係である。ここに提供される本発明の教示を与えられれば、本技術および関連技術の当業者は、本発明の範囲を維持しながら、階層的キャッシュの諸レベルが、ブロック・ベースの動き補償／推定プロセスの結果的な標本値と関係するまたは他の仕方で相関するこのおよび他のさまざまな構成を考えるであろう。
【００６４】
さらに、キャッシュを構成することに関し、そのような構成は、キャッシュの階層的構造を構成すること、ブロック・ベースの動き補償および／または推定プロセス自身を構成すること、動き補償および／または推定プロセスの少なくともいくつかの動作のためにキャッシュを使うために本願の原理が実装されるシステムのメモリ階層構造を構成することなどに関わりうる。そのような詳細は、本技術および関連技術における当業者によって容易に認識されるものであり、ここでは簡潔のため省略する。
【００６５】
本発明の多くの付随的な利点／特徴のいくつかについて、ここで記述する。そのいくつかは上述してある。たとえば、一つの利点／特徴は、ビデオ動き処理のための記憶方法である。該記憶方法は、一つまたは複数のレベルを有するように階層的キャッシュを構成することを含む。該階層的キャッシュのレベルのそれぞれは、ビデオ動き処理のための標本値を計算することに関連する計算階層構造の複数のレベルのうちのそれぞれに対応する。本記憶方法はさらに、ビデオ動き処理に関係するある標本値についての特定の値が階層的キャッシュ内に存在していないとき、その特定の値を階層的キャッシュの対応するレベルに記憶することを含む。該対応は、計算階層の前記複数のレベルのうちのどのレベルにその特定の値が対応しているかに基づく。もう一つの利点／特徴は、上記した記憶方法であって、ビデオ動き処理が、ブロック・ベースの動き補償プロセスを含むものである。さらに、もう一つの利点／特徴は、上記した記憶方法であって、さらに、その特定の値が階層的キャッシュ内に存在するときに、階層的キャッシュの対応するレベルからその標本値について特定の値を取得することを含む方法である。さらに、もう一つの利点／特徴は、上記した記憶方法であって、さらに、前記標本値についての特定の値を計算する際にその後使用するために、前記標本値のための中間的な値を、該中間的な値が階層的キャッシュ内に存在していないとき、その中間的な値が計算階層の前記複数のレベルのうちのどのレベルに対応するかに基づいて、階層的キャッシュの対応するレベルに記憶することを含む、方法である。また、もう一つの利点／特徴は、標本値についての中間的な値を記憶する上記した記憶方法であって、前記特定の値が前記標本値についての最終的な値であり、前記中間的な値が該特定の値より高い精度で記憶される、方法である。さらに、もう一つの利点／特徴は、標本値についての中間的な値を記憶する上記した記憶方法であって、前記特定の値が前記標本値についての最終的な値であり、前記のより高い精度が、前記最終的な標本値よりも、より高い解像度、より高いフレームレートおよびより高いビットレートのうちの少なくとも一つに関係する、方法である。さらに、もう一つの利点／特徴は、上記した記憶方法であって、前記構成する段階が、前記階層的キャッシュを、該階層的キャッシュの前記一つまたは複数のレベルが固定であるように静的に定義された階層を有するように構成する、方法である。さらに、もう一つの利点／特徴は、上記した記憶方法であって、前記構成する段階が、前記階層的キャッシュを、既存の前記一つまたは複数のレベルが除去されることができ、一つまたは複数の新しいレベルが追加されることができるように動的に定義された階層を有するように構成する、方法である。また、もう一つの利点／特徴は、上記したような動的に定義された階層を有するように階層的キャッシュを構成する記憶方法であって、前記動的に定義された階層の個々のレベルが、ユーザー入力に応じて動的に有効にされる、方法である。さらに、もう一つの利点／特徴は、上記した記憶方法であって、ビデオ動き処理の現在の実行のために、階層的キャッシュの前記一つまたは複数のレベルのうちのどれが有効にされるべきかに関係する一つまたは複数のユーザー入力を受け取る段階をさらに有する、方法である。さらに、もう一つの利点／特徴は、上記した記憶方法であって、ビデオ動き処理のために使われる基準フレームに対応するある位置の整数部分および小数部分に基づいて階層的キャッシュにアクセスする段階をさらに有する、方法である。さらに、もう一つの利点／特徴は、上記した記憶方法であって、階層的キャッシュがソフトウェアで実装される、方法である。
【００６６】
本発明のこれらのおよびその他の特徴および利点は、本稿の教示に基づいて当業者は容易に認識しうる。本発明の教示は、ハードウェア、ソフトウェア、ファームウェア、特殊目的プロセッサまたはそれらの組み合わせのさまざまな形において実装されうる。
【００６７】
最も好ましくは、本発明の教示は、ハードウェアおよびソフトウェアの組み合わせとして実装されうる。さらに、ソフトウェアは、プログラム記憶ユニット上に可触的に具現されたアプリケーション・プログラムとして実装されてもよい。アプリケーション・プログラムは、任意の好適なアーキテクチャを有する機械にアップロードされ、該機械によって実行されてもよい。好ましくは、該機械は、一つまたは複数の中央処理ユニット（CPU）、ランダム・アクセス・メモリ（RAM）および入出力（I/O）インターフェースのようなハードウェアを有するコンピュータ・プラットフォーム上で実装される。該コンピュータ・プラットフォームはまた、オペレーティング・システムおよびマイクロ命令コードをも含んでいてもよい。ここに記載されたさまざまなプロセスおよび機能は、マイクロ命令コードの一部であっても、あるいはアプリケーション・プログラムの一部であっても、あるいはCPUによって実行されうるそれらの任意の組み合わせであってもよい。さらに、追加的なデータ記憶ユニットおよび印刷ユニットのような他のさまざまな周辺ユニットがコンピュータ・プラットフォームに接続されていてもよい。
【００６８】
さらに、付属の図面に描かれている構成成分となるシステム・コンポーネントおよび方法の一部は好ましくはソフトウェアによって実装されるので、システム・コンポーネントやプロセス機能ブロックの間の実際の接続は、本発明がプログラムされる仕方に依存して異なることがありうることは理解されるものとする。本稿の教示を与えられれば、当業者は本発明のこれらおよび同様の実装または構成を考えることができるであろう。
【００６９】
ここでは付属の図面を参照して例示的な実施形態について記載してきたが、本発明はそれらの厳密な実施形態に限定されないこと、および本発明の範囲または精神から外れることなくさまざまな変更および修正が当業者によって実施されうることは理解されるものとする。そのようなすべての変更および修正は、付属の請求項に記載される本発明の範囲内に含まれることが意図されている。
【図面の簡単な説明】
【００７０】
【図１】H.264規格に基づく、四分の一標本値輝度補間のための整数標本値位置および端数標本値位置を示す図である。
【図２】本発明のある実施形態に基づく、本願の原理が適用されうる例示的なビデオ・エンコーダのブロック図である。
【図３】本発明のある実施形態に基づく、本願の原理が適用されうる例示的なビデオ・デコーダのブロック図である。
【図４】本願の原理のある実施形態に基づく、四分の一画素輝度標本値の種々の型の位置が示された、1×1ブロックの図である。
【図５】図４に示された1×1ブロックの種々の標本値型の間の依存関係を示すブロック図である。
【図６】本願の原理のある実施形態に基づく、ビデオ動き処理のために標本値をキャッシュする例示的な方法の流れ図である。
【図１】
2009504035.tif 000003
【図２】
2009504035.tif 000004
【図３】
2009504035.tif 000005
【図４】
2009504035.tif 000006
【図５】
2009504035.tif 000007
【図６】
2009504035.tif 000008
【国際調査報告】
2009504035.tif 000009
2009504035.tif 000010
2009504035.tif 000011
2009504035.tif 000012