(57)【要約】  参照データキャッシュの参照データをキャッシュする方法が提供され、当該方法は、参照データキャッシュの参照データブロックのアドレスを受け取ることを含み（１１００）、当該アドレスは、ピクセルからなる参照ブロック内の参照データブロックのｘ座標およびｙ座標と、ピクセルからなる複数の参照ブロックのどの参照ブロックが参照データブロックを含むかを特定する参照ブロック識別子とを含んでいる。方法はさらに、ｘ座標からの所定数のビットおよびｙ座標からの所定数のビットを用いて、参照データキャッシュの一組のキャッシュラインのインデックスを計算し（１１０６）、インデックスおよび参照ブロック識別子を含むタグを用いて参照データブロックが一組のキャッシュラインにあるか否かを決定し（１１０８）、参照データブロックが一組のキャッシュラインにない場合は、参照データストレージから参照データブロックを取り出す（１１１０）ことを含む。
2014513883.tif 000002
【特許請求の範囲】
【請求項１】
参照データキャッシュの参照データをキャッシュする方法であって、
当該方法が、
参照データキャッシュの参照データブロックのアドレスを受け取ることであって、当該アドレスが、ピクセルからなる参照ブロック内の参照データブロックのｘ座標およびｙ座標と、ピクセルからなる複数の参照ブロックのどの参照ブロックが参照データブロックを含むかを特定する参照ブロック識別子とを含んでいること、
ｘ座標からの所定数のビットおよびｙ座標からの所定数のビットを用いて、参照データキャッシュの一組のキャッシュラインのインデックスを計算すること、
参照データブロックが一組のキャッシュラインにあるか否かを決定するため、前記インデックスと前記参照ブロック識別子を含むタグとを用いること、及び
参照データブロックが前記一組のキャッシュラインにない場合は、参照データストレージから参照データブロックを取り出すこと、
を含む、方法。
【請求項２】
前記インデックスを計算することがさらに、ピクセルの現在のブロックが双方向に予測される場合、予測方向に基づきインデックスを調整することを含む、請求項１に記載の方法。
【請求項３】
前記参照データキャッシュが、直近で発生されたピクセルの参照ブロックからのみ参照データブロックを記憶するよう構成される、請求項１に記載の方法。
【請求項４】
前記参照データブロックを取り出すことがさらに、前記アドレスを、前記参照データストレージのアドレスに変換することを含む、請求項１に記載の方法。
【請求項５】
前記参照データキャッシュが、前記一組のキャッシュラインと垂直方向のキャッシュとを含む水平方向のキャッシュを含み、前記参照データブロックを取り出すことが、前記参照データブロックが前記一組のキャッシュラインになく、かつ前記垂直方向のキャッシュにない場合、参照データストレージから前記参照データブロックを取り出すことを含む、請求項１に記載の方法。
【請求項６】
前記方法がさらに、前記参照データブロックが前記垂直方向のキャッシュにあるか否かを決定するために、ｘ座標およびｙ座標を使用することを含む、請求項５に記載の方法。
【請求項７】
前記水平方向のキャッシュおよび前記垂直方向のキャッシュが、直近で発生されたピクセルの参照ブロックからのみ参照データブロックを格納するよう構成される、請求項５に記載の方法。
【請求項８】
ディジタルシステムであって、
ピクセルからなる複数の参照ブロックを格納するよう構成される参照データストレージ部と、
ピクセルからなる前記複数の参照ブロックの少なくとも１つからの参照データブロックを格納するよう構成される参照データキャッシュ部であって、参照データブロックが、当該参照データブロックを識別するタイル状のアドレッシングスキームを用いて前記参照データキャッシュ部から要求される、前記参照データキャッシュ部と、
前記タイル状のアドレッシングスキームを用いて、前記参照データキャッシュ部からの参照データブロックを要求するよう構成される動き補償部と、
を含み、
前記タイル状のアドレッシングスキームが、ピクセルからなる参照ブロックの参照データブロックのｘ座標およびｙ座標と、ピクセルからなる前記複数の参照ブロックどの参照ブロックが前記参照データブロックを含むかを特定する参照ブロック識別子とを用いて、参照データブロックをアドレスすることを含む、
ディジタルシステム。
【請求項９】
前記参照データキャッシュ部が、ピクセルからなる前記複数の参照ブロックのうちの、直近で発生された参照ブロックからのみ参照データを格納するよう構成される、請求項８に記載のディジタルシステム。
【請求項１０】
前記ディジタルシステムがさらに、前記タイル状のアドレッシングスキームを用いて、前記参照データ部からの参照データブロックを要求するよう構成される動き予測部を含む、請求項８に記載のディジタルシステム。
【請求項１１】
前記参照データキャッシュ部がさらに、
ｘ座標からの所定数のビットと、ｙ座標からの所定数のビットとを用いて、前記参照データキャッシュの一組のキャッシュラインのインデックスを計算し、
前記参照データブロックが前記一組のキャッシュラインにあるか否かを決定するため、前記インデックスと前記参照データブロック識別子を含むタグとを用い、かつ、
前記参照データブロックが前記一組のキャッシュラインにない場合に、前記参照データストレージから前記参照データブロックを取り出す、
ように構成される、請求項８に記載のディジタルシステム。
【請求項１２】
前記参照データキャッシュ部がさらに、ピクセルからなる現在のブロックが双方向に予測される場合、予測方向に基づいてインデックスを調整するよう構成される、請求項１１に記載のディジタルシステム。
【請求項１３】
前記参照データキャッシュ部が、前記一組のキャッシュラインと垂直方向のキャッシュとを含む垂直方向のキャッシュを含み、当該参照データキャッシュ部が、前記参照データブロックが前記一組のキャッシュラインになく、かつ前記垂直方向のキャッシュにない場合に、参照データストレージから前記参照データブロックを取り出すよう構成される、請求項１１に記載のディジタルシステム。
【請求項１４】
前記参照データキャッシュ部が、前記参照データブロックが前記垂直方向のキャッシュにあるか否かを決定するためにｘ座標およびｙ座標を使用するよう構成される、請求項１３に記載のディジタルシステム。
【請求項１５】
前記水平方向のキャッシュおよび前記垂直方向のキャッシュが、直近で発生されたピクセルからなる参照ブロックからのみの参照データブロックを格納するよう構成される、請求項１３に記載のディジタルシステム。
【請求項１６】
参照データキャッシュの参照データをキャッシュする方法であって、
当該方法が、
前記参照データキャッシュの参照データブロックのアドレスを取り出すことであって、当該アドレスが、ピクセルからなる参照ブロック内の参照データブロックのｘ座標およびｙ座標と、ピクセルからなる複数の参照ブロックのどの参照ブロックが前記参照データブロックを含むかを特定する参照ブロック識別子とを含んでいること、
前記参照ブロック識別子が、直近で発生されたピクセルからなる参照ブロックを識別しない場合に、参照データストレージから前記参照データブロックを取り出すこと、
前記参照ブロック識別子が、直近で発生されたピクセルからなる参照ブロックを識別する場合に、前記参照データブロックが前記参照データキャッシュ内の一組のキャッシュラインにあるか否かを決定するため、インデックスと前記参照ブロック識別子を含むタグとを用いることであって、前記インデックスが、ｘ座標からの所定数のビットとｙ座標からの所定数のビットとを用いて計算されること、及び
前記参照データブロックが前記一組のキャッシュラインにない場合に、参照データストレージから前記参照データブロックを取り出すこと、
を含む、方法。
【請求項１７】
ピクセルからなる現在のブロックが双方向に予測される場合、前記インデックスが予測方向に基づいて調整される、請求項１６に記載の方法。
【請求項１８】
前記参照データキャッシュ部が、前記一組のキャッシュラインと垂直方向のキャッシュとを含む水平方向のキャッシュを含み、前記参照データブロックを取り出すことが、前記参照データブロックが前記一組のキャッシュラインになく、かつ前記垂直方向のキャッシュにない場合に、参照データストレージから前記参照データブロックを取り出すことを含む、請求項１６に記載の方法。
【請求項１９】
前記方法がさらに、前記参照データブロックが前記垂直方向のキャッシュにあるか否かを決定するために、ｘ座標およびｙ座標を使用すること含む、請求項１８に記載の方法。
【請求項２０】
前記垂直方向のキャッシュが、参照データブロックを格納する循環バッファを含む、請求項１８に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ディジタルビデオ製品に対する需要は増え続けている。ディジタルビデオのアプリケーションのいくつかの例は、ビデオ通信、セキュリティおよび監視、工業オートメーション、およびエンターテイメント（例えば、ＤＶ、ＨＤＴＶ、衛星テレビ、セットトップボックス、インターネットビデオストリーミング、ディジタルカメラ、携帯電話、ビデオジュークボックス、ハイエンドディスプレイ、およびパーソナルビデオレコーダ）を含む。さらに、ビデオアプリケーションは、ハンドセットのより高度な計算能力、バッテリー技術の進歩、および高速ワイヤレス接続の結果、ますますモバイルになっている。
【０００２】
ビデオ圧縮は、ディジタルビデオ製品には必須の成功要因である。しかしながら、ビデオ圧縮の実行は、許容可能な性能のために相当量の計算や外部メモリバンド幅（badwidth）を必要とすることがある。外部メモリバンド幅の要求は、特に埋め込みシステムにおける高品位ビデオ符号化および復号化の性能の障害となり得る。多くの現在のビデオ圧縮の標準に不可欠な動き予測および動き補償は、外部メモリに記憶された参照フレームへの、繰り返され且つランダムなアクセスにより、外部メモリバンド幅を非常に要求する。従って、動き予測および動き補償のための外部メモリバンド幅の要求を減らす技術が必要とされる。
【図面の簡単な説明】
【０００３】
実施例が添付の図面を参照して説明される。
【０００４】
【図１】図１は、例示的なディジタルシステムのブロック図である。
【０００５】
【図２】図２は、例示的なビデオエンコーダのブロック図である。
【０００６】
【図３】図３は、例示的なビデオデコーダのブロック図である。
【０００７】
【図４】図４は、例示的なタイル状のアドレッシングスキームの一例を示す。
【０００８】
【図５】図５は、例示的な参照データキャッシュ部のブロック図である。
【図６】図６は、例示的な参照データキャッシュ部のブロック図である。
【０００９】
【図７】図７は、実験結果の表である。
【図８Ａ】図８Ａは、実験結果の表である。
【図８Ｂ】図８Ｂは、実験結果の表である。
【００１０】
【図９Ａ】図９Ａは、例示的な移動符号化ブロックウィンドウ（moving coding block window）を表す。
【図９Ｂ】図９Ｂは、例示的な移動符号化ブロックウィンドウを表す。
【００１１】
【図１０Ａ】図１０Ａは、例示的な垂直方向の参照データキャッシュのブロック図である。
【図１０Ｂ】図１０Ｂは、例示的な垂直方向の参照データキャッシュのブロック図である。
【図１０Ｃ】図１０Ｃは、例示的な垂直方向の参照データキャッシュのブロック図である。
【図１０Ｄ】図１０Ｄは、例示的な垂直方向の参照データキャッシュのブロック図である。
【００１２】
【図１１】図１１は、例示的な方法のフローチャートである。
【図１２Ａ】図１２Ａは、例示的な方法のフローチャートである。
【図１２Ｂ】図１２Ｂは、例示的な方法のフローチャートである。
【００１３】
【図１３】図１３は、例示的なディジタルシステムを表す。
【図１４】図１４は、例示的なディジタルシステムを表す。
【図１５】図１５は、例示的なディジタルシステムを表す。
【発明を実施するための形態】
【００１４】
概して、例示的な実施例は、動き予測および／または動き補償の間に参照フレームデータをキャッシュすることにより、ビデオシーケンスの符号化および／または復号化の間の外部メモリバンド幅の減少を提供する。いくつかの実施例では、水平方向のキャッシュが参照フレームデータをキャッシュするために提供され、また、いくつかの実施例では、水平および垂直方向のキャッシュの双方が提供される。いくつかの実施例では、時間的に直近の参照フレームからの参照フレームデータが、例えばＨ．２６４のｒｅｆ＿ｉｄｘ＝０のためにキャッシュされ、時間的により古い参照フレームからの参照フレームデータはキャッシュされない。いくつかの例では、参照フレームデータの要求されたブロックのｘ座標およびｙ座標に基づく新たなインデックススキームが用いられる。すなわち、参照フレームの要求されたブロックのｘ座標およびｙ座標からのビットが、キャッシュへのインデックスを計算するために用いられる。さらに、インデックススキームは、フレームの符号化タイプに応じて、すなわち、フレームがＰフレーム（前のフレームから予測されたフレーム）であるか、Ｂフレーム（過去および将来の双方のフレームから予測されたフレーム）であるかに応じて、各々のフレームに適応され得る。
【００１５】
例えば、いくつかの実施例では、参照フレームの要求されたブロックのｘ座標およびｙ座標からのビットが、双方向アソシアティブキャッシュへのインデックスを計算するために用いられる。この新しいインデックススキームは、要求されたブロックのＬＳＢアドレスを使用する従来型のキャッシュインデックススキームと比較すると、例えば幅が１０２４のフレームのような、大きな２のべき乗である幅を有するフレームのためのキャッシュスラッシングを減少させることがシミュレーションで示されている。さらに、いくつかの実施例では、双方向アソシアティブキャッシュのためのインデックス計算がフレームの符号化のタイプに応じて適合される。加えて、いくつかの実施例では、参照フレームの要求されたブロックのｘ座標およびｙ座標からのビットが、１方向アソシアティブキャッシュへの、すなわちダイレクトマップ方式のキャッシュへの、インデックスを計算するために用いられる。さらに、いくつかの実施例では、１方向アソシアティブキャッシュのためのインデックス計算がフレームの符号化のタイプに応じて適合される。
【００１６】
図１は、あるディジタルシステムの例示的な実施例を表す。このシステムは、符号化されたビデオシーケンスを通信チャネル１１６を介して送り先のディジタルシステム１０２へ伝送するソースディジタルシステム１００を含む。ソースディジタルシステム１００は、ビデオキャプチャ部１０４と、ビデオエンコーダ部１０６と、伝送部１０８とを含む。ビデオキャプチャ部１０４は、ビデオエンコーダ部１０６によって符号化されるべきビデオシーケンスを提供するよう構成される。ビデオキャプチャ部１０４は、例えば、ビデオカメラ、ビデオアーカイブ、もしくはビデオコンテンツプロバイダから提供されるビデオであり得る。いくつかの実施例では、ビデオキャプチャ部１０４は、ビデオシーケンスとして、もしくはライブビデオとコンピュータ処理のビデオとの合成として、コンピュータグラフィクスを生成し得る。
【００１７】
ビデオエンコーダ部１０６は、ビデオキャプチャ部１０４からビデオシーケンスを受け取り、伝送部１０８による送信のためにそれを符号化する。概して、ビデオエンコーダ部１０６は、フレームのシーケンスとして、ビデオキャプチャ部１０４からビデオシーケンスを受け取り、フレームを全フレームもしくはフレームの一部であり得る符号化単位に分割し、符号化単位をピクセルのブロックに分割し、かつこれらのブロックに基づいて符号化単位のビデオデータを符号化する。いくつかの実施例では、ビデオエンコーダ部１０６は、本明細書で述べられるような参照フレームデータのキャッシュを行うよう構成される。ビデオエンコーダ部１０６の一つもしくは複数の実施例の機能は、図２を参照して以下でより詳細に説明される。
【００１８】
伝送部１０８は、符号化されたビデオデータを通信チャネル１１６を介して送り先のディジタルシステム１０２に送る。通信チャネル１１６は、任意の通信媒体もしくは符号化されたビデオシーケンスの伝送に適した通信媒体の組み合わせであり得、例えば、有線／無線通信媒体、ローカルエリアネットワーク、もしくは有線エリアネットワーク等である。
【００１９】
伝送先のディジタルシステム１０２は、受信器部１１０と、ビデオデコーダ部１１２と、表示部１１４とを含む。受信器部１１０は、符号化されたビデオデータをソースディジタルシステム１００から通信チャネル１１６を介して受け取り、符号化されたビデオデータを復号化のためにビデオデコーダ部１１２へ提供する。概して、ビデオデコーダ部１１２は、ビデオシーケンスのフレームを再構築するために、ビデオエンコーダ部１０６によって実行される符号化プロセスを反転する。いくつかの実施例では、ビデオデコーダ部１１２は、本明細書で述べられるような参照フレームデータのキャッシュを実行するよう構成される。ビデオデコーダ部１１２の一つもしくは複数の実施例の機能は、図３を参照して以下でより詳細に説明される。
【００２０】
再構築されたビデオシーケンスは、次いで、表示部１１４で表示され得る。表示部１１４は、例えばプラズマディスプレイ、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイ等のような任意の適切なディスプレイ装置であり得る。
【００２１】
いくつかの実施例では、ソースディジタルシステム１００は受信器部をも含み得、また、ビデオデコーダ部および／もしくは送り先のディジタルシステム１０２は、ビデオストリーミング、ビデオ放送、およびビデオ電話のための双方向のビデオシーケンスの伝送のための伝送部およびビデオエンコーダ部を含む。さらに、ビデオエンコーダ部は、ビデオシーケンスを符号化するときに、本明細書で述べられるような参照フレームデータキャッシュを実行し得、他方で、符号化されたビデオシーケンスを受け取るビデオデコーダ部は、本明細書で述べられるような参照フレームデータキャッシュを実行せず、逆の場合もまた同じである。さらに、ビデオエンコーダ部と、ビデオエンコーダ部によって符号化されたビデオシーケンスを受け取るビデオデコーダ部とは、双方が同じ方法で参照データキャッシュを実行しないようにしてもよい。例えば、ビデオエンコーダ部は、本明細書で述べられる一つもしくは複数の実施例における双方向アソシアティブ参照データキャッシュを実行し得、他方で、受信側のビデオデコーダ部は、本明細書で述べられる一つもしくは複数の実施例に従った１方向のアソシアティブ参照データキャッシュを実行し得る。
【００２２】
ビデオエンコーダ部１０６およびビデオデコーダ部１１２は、一つもしくは複数のビデオ圧縮規格に従って符号化および復号化を実行し得る。その規格とは、例えば、ＭＰＥＧ‐１、ＭＰＥＧ‐２やＭＰＥＧ‐４といったムービング・ピクチャー・エキスパーツ・グループ（ＭＰＥＧ）のビデオ圧縮規格や、Ｈ．２６３やＨ．２６４などのＩＴＵ‐Ｔビデオ圧縮規格、米国映画テレビ技術者協会（ＳＭＰＴＥ）の４２１ＭビデオＣＯＤＥＣ規格（通称、“ＶＣ‐１”と呼ばれる）、中国のオーディオビデオコーディング規格ワークグループ（通称、“ＡＶＳ”と呼ばれる）により定義されるビデオ圧縮規格等である。ビデオエンコーダ部１０６およびビデオデコーダ部１１２は、ソフトウェア、ファームウェア、ハードウェアの適切な組み合わせで実装され得、例えば、一つもしくは複数のディジタル信号プロセッサ（ＤＳＰ）、マイクロプロセッサ、ディスクリートロジック、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等である。
【００２３】
図２は、一つもしくは複数の実施例による、例えば図１のビデオエンコーダ１０６のようなビデオエンコーダを示す。図２のビデオエンコーダでは、符号化のための入力フレーム２００が例えばマクロブロックのような符号化ブロックに分割され、当該符号化ブロックは動き予測部２２０の一つの入力として、イントラ予測部２２４の一つの入力として、結合器２０２（例えば、加算器や減算器のようなものである）の正入力へ提供される。さらに、特に図示しないが、各々の入力フレームのための予測モード、すなわちインター予測またはイントラ予測、が選択されて、モード選択部およびエントロピーエンコーダ２３４へ提供される。
【００２４】
フレーム記憶部２４０は、埋め込まれたデコーダにより発生された参照フレームデータを記憶する。参照フレームデータは、一つもしくは複数の前に符号化および復号化された符号化ブロックを、すなわち再構築された符号化ブロックを含み得る。さらに、参照フレームデータが、複数の前に符号化されたフレームのために記憶され得る。具体的には、いくつかのビデオ圧縮規格では、複数の参照フレームがフレーム記憶部２４０に記憶され得、かつ動き予測および動き補償に用いられ得る。例えば、Ｈ．２６４は、動き予測および動き補償のために最大１６個の参照フレームの使用を可能にする。いくつかの実施例では、フレーム記憶部２４０は、外部メモリ、すなわちオフチップメモリである。さらに、一つもしくは複数の実施例では、フレーム記憶部２４０はタイル状のメモリであり、すなわち、タイル状のアドレッシングスキームを用いてアクセスされる。任意の適切なタイル状のアドレッシングスキームが、フレーム記憶部２４０に用いられ得る。
【００２５】
参照データキャッシュ部２１８は、フレーム記憶部２４０と、動き予測部２２０と、動き補償部２２２との間にキャッシュメモリを提供する。具体的には、動き予測部２２０または動き補償部２２２が参照フレームデータを必要とするときに、参照データキャッシュ部２１８は、参照データキャッシュ部２１８に含まれるキャッシュメモリから、もしくは、要求された参照フレームがキャッシュメモリに記憶されていない場合フレーム記憶部２４０から、必要とされる参照フレームデータを要求する部に提供する。参照データキャッシュ部２１８の一つもしくは複数の実施例の機能は、図４ないし図１５を参照して以下でより詳細に説明される。
【００２６】
動き予測部２２０は、動き予測情報を、動き補償部２２２およびエントロピーエンコーダ２３４へ提供する。具体的には、動き予測部２２０は、符号化コストに基づき最適な動きベクトル／予測モードを選択するために、参照フレームデータを用いて複数の一時的な予測モードに基づく符号化ブロックのテストを実行する。予測モードをテストするために、動き予測部２２０は、符号化ブロックを、予測モードのブロックサイズに応じた予測ブロックに分割し得る。動き予測部２２０は、選択された一つまたは複数の動きベクトル（ＭＶ）と選択された予測モードとを動き補償部２２２へ提供し、かつ選択された動きベクトル（ＭＶ）をエントロピーエンコーダ２３４へ提供する。動き補償部２２２は、動き補償されたインター予測ブロックと選択された一時的な予測モードとを含む動き補償されたインター予測情報を選択スイッチ２２６へ提供する。インター予測ブロックの符号化コストはモード選択部にも提供される。
【００２７】
イントラ予測部２２４は、イントラ予測ブロックと対応する空間予測モードとを含むイントラ予測情報を選択スイッチ２２６に提供する。すなわち、イントラ予測部２２４は空間予測を実行し、そこでは、符号化コストに基づくイントラ予測ブロックを発生させるための最適な空間予測モードを選択するために、バッファ２２８からのフレームの、前に符号化された隣接するブロックを用いて、複数の空間予測モードに基づくテストが符号化ブロック上で実行される。空間予測モードをテストするために、イントラ予測部２２４は、符号化ブロックを、予測モードのブロックサイズに応じた予測ブロックへ分割し得る。具体的に示されないが、イントラ予測ブロックの符号化コストはモード選択部にも提供される。
【００２８】
選択スイッチ２２６は、ブロック間の差分距離と、モード選択部により提供されたフレーム予測モードとに基づいて、動き補償部２２２からの動き補償されたインター予測ブロックか、イントラ予測部２２４からのイントラ予測ブロックかを選択する。選択スイッチ２２６の出力は、すなわち、予測された予測ブロックは、結合器２０２の負入力と遅延部２３０とに提供される。遅延部２３０の出力は、もう一つの結合器（すなわち、加算器）２３８に提供される。結合器２０２は、現在の符号化ブロックの現在の予測ブロックから予測された予測ブロックを減算し、残差予測ブロックを変換部２０４へ提供する。結果として生じる残差予測ブロックは、元の予測ブロックと予測された予測ブロックとのピクセル値の差を量子化する一組のピクセルの差分値である。
【００２９】
変換部２０４は、残差予測値を変換係数へ変換するために、例えば離散コサイン変換により、残差予測ブロックのブロック変換を実行し、変換係数を出力する。変換部２０４からの変換係数は、量子化された変換係数を出力する量子化部２０６へ提供される。ブロック変換が残差信号のエネルギーを周波数領域へ再分配するので、量子化された変換係数はスキャン部２０８によりラスタースキャンの順序で取り出され、そして例えば、より重要度の高い係数から始まり、より重要度の低い係数が後に続くように、重要度により配列される。ヘッダ情報とともにスキャン部２０８を介して提供された、順序付けされた量子化変換係数は、エントロピーエンコーダ２３４によって符号化され、エントロピーエンコーダ２３４は、伝送または記憶用の圧縮されたビットストリーム２３６を提供する。エントロピーエンコーダ２３４により実行されるエントロピー符号化は、例えば、コンテキスト適応型可変長符号化（ＣＡＶＬＣ）、コンテキスト適応型二値算術符号化（ＣＡＢＡＣ）、ランレングス符号化等のような任意の適切なエントロピー符号化技術であり得る。
【００３０】
どのエンコーダの内部にも、内蔵されたデコーダがある。いずれの準拠するデコーダも圧縮されたビットストリームからイメージを再構築するよう期待されるので、内蔵されたデコーダは、同じユーティリティをビデオエンコーダに提供する。再構築された入力の認識は、ビデオエンコーダに、後に続くフレームを構成するよう適切な残差エネルギーを伝送させる。再構築された入力、すなわち参照フレームデータ、を決定するために、スキャン部２０８を介して提供された、順序付けされた量子化変換係数は、逆スキャン部２１０によってそれらの元の変換後の配列に戻される。逆スキャン部２１０の出力は逆量子化部２１２に提供され、逆量子化部２１２は、予測された変換情報を出力し、すなわち変換部２０４からの変換結果の予測された、もしくは再構築されたバージョンを出力する。予測された変換情報は逆変換部２１４へ提供され、逆変換部２１４は、残差予測ブロックの再構築されたバージョンを表す、予測された残差情報を出力する。再構築された残差予測ブロックは、結合器２３８へ提供される。
【００３１】
結合器２３８は、フィルタされない再構築された予測ブロックを発生させるために、遅延された選択予測ブロックを再構築された残差予測ブロックに加算し、これは、再構築されたフレーム情報の一部となる。再構築されたフレーム情報は、バッファ２２８を介してイントラ予測部２２４へ、かつフィルタ部２１６へ提供される。フィルタ部２１６は、再構築されたフレーム情報をフィルタし、フィルタされた再構築された符号化ブロックを、すなわち参照フレームデータをフレーム記憶部２４０へ提供するインループフィルタである。
【００３２】
図３は、一つもしくは複数の実施例による、例えばビデオデコーダ１１２といったビデオデコーダのブロック図を示す。図３のビデオデコーダでは、エントロピー復号化部３００はエントロピー符号化されたビデオビットストリームを受け取り、符号化された符号化ブロックを回復するためにエントロピー符号化を反転する。エントロピー復号化部３００により実行されるエントロピー復号化は、例えば、コンテキスト適応型可変長複号化（ＣＡＶＬＣ）、コンテキスト適応型二値算術復号化（ＣＡＢＡＣ）、ランレングス復号化等のような、一つもしくは複数の適切なエントロピー復号化技術を実行する機能を含み得る。
【００３３】
逆スキャンおよび逆量子化部３０２は、ラスタースキャン順のビデオビットストリームの符号化ブロックを組立て、かつ、元の周波数領域データ、逆量子化された残差係数を実質的に回復する。逆変換部３０４は、逆スキャンおよび逆量子化部３０２からの周波数領域データを元の残差予測ブロックへ変換する。すなわち、逆変換部３０４は、残差予測ブロックを生成するために、逆ブロック変換を、言い換えると、符号化に用いられるブロック変換とは逆のものを、逆量子化された残差係数に適用する。
【００３４】
この残差予測ブロックは、加算部３０６の一つの入力を供給する。加算部３０６のもう一つの入力は、モードスイッチ３０８から来る。インター予測モードが符号化されたビデオストリームで伝えられるとき、モードスイッチ３０８は動き補償部３１０からの予測ブロックを選択し、イントラ予測部が伝えられるときは、モードスイッチはイントラ予測部３１４からの予測ブロックを選択する。動き補償部３１０は参照データキャッシュ３１８から参照フレームデータを受け取り、予測ブロックを生成するために、エンコーダによって計算され、かつ符号化されたビデオビットストリームで伝送された動き補償を参照フレームデータに適用する。
【００３５】
参照データキャッシュ部３１８は、フレーム記憶部３１２と動き補償部３１０との間にキャッシュメモリを提供する。具体的には、動き補償部３１０が参照フレームデータを必要とするとき、参照データキャッシュ部３１８は、必要とされる参照フレームデータを動き補償部３１０へ、参照データキャッシュ部３１８に含まれるキャッシュメモリから、もしくは、必要とされる参照フレームデータがキャッシュメモリに記憶されない場合フレーム記憶部から提供する。参照データキャッシュ部３１８の一つもしくは複数の実施例の機能は、図４ないし図１５を参照して以下でより詳細に説明される。
【００３６】
イントラ予測部３１４は、現在のフレームから前に復号化された予測ブロックを受け取り、予測ブロックを生成するために、符号化されたビデオビットストリームで伝送された空間予測モードにより伝えられたとき、エンコーダにより計算されたイントラ予測を、前に復号化された予測ブロックに適用する。
【００３７】
加算部３０６は、選択された予測ブロックと残差予測ブロックとを加算することによって、予測された予測ブロックを回復、すなわち復号化された予測ブロックを生成する。加算部３０６の出力はインループフィルタ部３１６の入力を供給する。インループフィルタ部３１６は、復号化されたフレームの視覚的な品質を改善するために、符号化プロセスのブロックの性質により生成されるアーチファクトを平滑化する。インループフィルタ部３１６の出力は、ビデオビットストリームの復号化されたフレームである。
【００３８】
各々の復号化された予測ブロックは、参照フレームデータとして用いられるためにフレーム記憶部３１２に記憶される。さらに、参照フレームデータが、複数の前に復号化されたフレームのために記憶され得る。具体的には、いくつかのビデオ圧縮規格では、複数の参照フレームがフレーム記憶部３１２に記憶され得、かつ動き補償に用いられ得る。例えば、Ｈ．２６４は、ＰフレームとＢフレームとの双方についての動き補償のために複数の参照フレームの使用を可能にする。いくつかの実施例では、フレーム記憶部３１２は外部メモリ、すなわちオフチップメモリである。さらに、一つもしくは複数の実施例では、フレーム記憶部３１２はタイル状のメモリであり、すなわちタイル状のアドレッシングスキームを用いてアクセスされる。
【００３９】
参照データキャッシュ部２１８、３１８の一つもしくは複数の実施例の機能と、動き予測部２２０、動き補償部２１８、３１８およびフレーム記憶部２４０、３１２の相互作用とが、ここで図４ないし図１５を参照して説明される。一つもしくは複数の実施例では、動き予測部２２０および動き補償部２２２、３１０は、現在のフレームについて、すなわち符号化あるいは復号化されるフレームについて、それぞれの参照フレームデータキャッシュ部２１８、３１８からの参照フレームデータを要求するために、タイル状アドレッシングスキームを使用する。さらに、それぞれの参照フレームキャッシュ部２１８、３１８は、参照フレームデータのキャッシュを、符号化もしくは復号化される現在のフレームに提供する。すなわち、フレームの符号化もしくは復号化が完了した後、参照データキャッシュ部２１８、３１８のキャッシュラインは、次のフレームを符号化もしくは復号化する前に無効にされる。
【００４０】
タイル状のアドレッシングスキームでは、参照フレームが参照データブロックに分割されるとみなされ、各々の参照データブロックは、参照フレームの上左隅に対する参照フレームのブロックのｘ座標ｘａｄｄｒおよびｙ座標ｙａｄｄｒを特定することにより要求され得る。参照データブロックのサイズは設計上の選択事項である。図４は、参照データブロックサイズが４×４である、１６×１６の参照フレームのためのタイル状のアドレッシングスキームの簡単な一例を示す。参照フレームの上左隅が、ｘａｄｄｒ＝０、ｙａｄｄｒ＝０とみなされる。従って、ブロックＡはｘａｄｄｒ＝０、ｙａｄｄｒ＝０にあり、ブロックＢはｘａｄｄｒ＝１、ｙａｄｄｒ＝０にある。さらに、ブロックＪはｘａｄｄｒ＝１、ｙａｄｄｒ＝２にある。概して、参照データブロックの座標は、参照データブロックの上左隅の参照フレームのピクセル座標を、参照データブロックの幅および高さのそれぞれで除算することにより決定され得る。例えば、図４では、ブロックＧのピクセル座標はｘ＝８およびｙ＝４である。それゆえ、タイル状のアドレッシングスキームにおけるブロックＧの座標は、ｘａｄｄｒ＝８／４＝２であり、かつｙａｄｄｒ＝４／４＝１となるであろう。
【００４１】
複数の参照フレームを用いて動き予測および動き補償をサポートするビデオエンコーダおよびビデオデコーダの実施例では、要求する部は、複数の参照フレームのうちのどれから参照フレームデータのブロックを読み込むかを特定する参照フレーム識別子を提供する。用いられる参照フレーム識別スキームは、任意の適切なスキームであり得、かつエンコーダ／デコーダによってサポートされる圧縮規格に基づき得る。例えば、Ｈ．２６４では、各々の参照フレームが参照フレームインデックスにより識別され、最大１６の参照フレームがあり得る。それゆえ、Ｈ．２６４では、参照フレームインデックスは、０から１５までの範囲であり得る。符号化されているフレームに時間的に最も近い参照フレームは、典型的に０の参照インデックスを有し、参照インデックスは、典型的に参照フレームの時間的距離に従って１つずつ増加される。新しい参照フレームが記憶されるたびに、当該新しい参照フレームは典型的に０の参照インデックスを与えられ、時間的により古い参照フレームの参照インデックスは、それぞれが一つ増加される。双方向の予測ピクチャには、順方向および逆方向のそれぞれで予測に用いられる参照インデックスのリストを記憶するために、Ｈ．２６４においてＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１と呼ばれる、２つの参照ピクチャリストがあり得る。
【００４２】
説明の簡潔さのために、識別子としての参照フレームインデックスと４×４（１６ピクセル）の参照データブロックサイズとを備えた１６の参照フレームのサポートが、実施例のさらなる説明において前提とされる。当業者は、複数の参照フレームがサポートされない実施例や、サポートされる参照フレームの数が異なる実施例や、１つ又は２つの参照ピクチャリストが用いられる実施例、および／もしくは他の参照データブロックサイズが用いられる実施例を理解するであろう。
【００４３】
一つもしくは複数の実施例では、参照フレーム識別子と、ｘａｄｄｒと、ｙａｄｄｒとが、参照データキャッシュ部２１８、３１８のための参照データブロックのアドレスを形成する。アドレスのビット数は、ビデオエンコーダもしくはビデオデコーダによってサポートされる最大フレームサイズと、参照データブロックのサイズと、参照フレーム識別子に必要とされるビット数とに依存する。例えば、サポートされる最大フレームサイズが１９２０×１０８０であり、１６の参照フレームが許容され、９ビットがｘａｄｄｒに必要とされ、８ビットがｙａｄｄｒに必要とされ、かつ４ビットが参照フレームインデックスに必要とされる場合、２１ビットのアドレスとなる。
【００４４】
一つもしくは複数の実施例では、参照データキャッシュ部２１８、３１８は、データストレージ(記憶)と、タグストレージ(記憶)と、有効ビットストレージ(記憶)とを含む、アソシアティブ（連想）キャッシュである。参照データキャッシュ部２１８、３１８の連想は設計上の選択事項である。すなわち、キャッシュの複雑性とメモリバンド幅の減少のトレードオフであり得る。例えば、フルアソシアティブの１６ＫＢのキャッシュの使用は、フレーム記憶２４０、３１２のダイレクトアクセスでメモリバンド幅の約４０〜５０％の減少を提供し得るが、１０２４のコンパレータを必要とする。反対に、双方向アソシアティブの１６ＫＢのキャッシュの使用は、１０２４ではなく２つのコンパレータを必要とし、本明細書でより詳細に示されるように、メモリバンド幅において十分に匹敵される減少を提供し得る。アソシアティブキャッシュの通常動作はこの分野においてよく理解されており、それゆれここでは詳細に説明しない。
【００４５】
参照データキャッシュ部２１８、３１８のデータストレージ、タグストレージ、および有効ビットストレージは、結合され得るか、もしくは別々であり得る。データストレージのメモリ量は設計上の選択事項である。データストレージのメモリは、複数のキャッシュラインに分割され、各々が一つの参照データブロックを記憶するために十分なサイズである。例えば、サイズが４×４の参照データブロックのために、各キャッシュラインは１６バイトを記憶するであろう。
【００４６】
タグストレージは、各キャッシュラインのための一つタグをデータストレージに記憶するために十分なメモリを含み、有効ビットストレージは、データストレージ内の各キャッシュラインのための１ビットを記憶するために十分なメモリを含む。タグストレージに必要とされるメモリ量は、データストレージのサイズとキャッシュの連想とに依存する。例えば、フルアソシアティブキャッシュにとっては、タグは、参照データブロックの完全なアドレスであり、１６バイトのキャッシュラインを有する双方向アソシアティブの１６ＫＢのキャッシュにとっては、参照データブロックアドレスの最小有効９ビットがキャッシュへのインデックスとして利用され得、かつ残りの１２ビットがタグであり、また１６バイトのキャッシュラインを有する四方向アソシアティブの１６ＫＢのキャッシュにとっては、アドレスの最小有効８ビットがインデックスとして利用され得、残りの１３ビットはタグであるであろう。
【００４７】
図５は、一つもしくは複数の実施例による、双方向アソシアティブキャッシュとして実装される例示的な参照データキャッシュ部２１８、３１８のブロック図を示す。最大フレームサイズは１９２０×１０８０であると仮定される。それゆえ、前述の例で説明されたように、参照データブロックのアドレスは２１ビットである。この例において、アドレスのビット０〜８は、参照データブロックのｘａｄｄｒであり、ビット９〜１６は参照データブロックのｙａｄｄｒであり、かつビット１７〜２０は参照フレーム識別子である。データストレージは１６ＫＢである。すなわち、データストレージは、１０２４の１６バイトのキャッシュラインに分割される。キャッシュが双方向アソシアティブなので、アドレスの最小有効９ビット、すなわちビット０〜８、がキャッシュインデックスのために用いられる。アドレスの残りの最大有効１２ビットはタグを形成する。それゆえ、キャッシュへのインデックスは、ａｄｄｒ＆０ｘ１ＦＦと計算され得、ここでａｄｄｒとは、参照データブロックのアドレスである。
【００４８】
参照データブロックアドレスの最小有効ビットをキャッシュへのインデックスとして使用することは、例えば１０２４といった大きな２のべき乗である幅を有するフレームに、著しいキャッシュスラッシングを引き起こし得る。スラッシングが発生し得るのは、フレーム記憶部２４０、３１２の参照データが、フレーム記憶部２４０、３１２の複数のメモリ位置に同一のキャッシュラインを競合させる、過度のキャッシュミスの原因となるパターンでアクセスされる場合である。スラッシングを減少させるために、キャッシュインデックスストラテジーがキャッシュの充填を拡張させるために用いられ得る。一つもしくは複数の実施例では、参照データブロックのアドレスの最小有効ビットをキャッシュへのインデックスとして使用するではなく、インデックスが、アドレスのｘ座標から選択されたビットとｙ座標から選択されたビットとを用いて計算される。すなわち、ｘ座標からの所定数のビットが、インデックスを形成するために、ｙ座標からの所定数のビットと連結される。各座標から用いられるビットの数および連結順序は経験的に決定され得、例えば、どの組み合わせが最良のパフォーマンスを提供するかを決定するために、様々なビット選択を用いてシミュレーションが実行され得る。
【００４９】
図６は、一つもしくは複数の実施例によるインデックススキームを使用した例示的な参照データキャッシュ部２１８、３１８のブロック部を示す。図６のキャッシュは、インデックス計算部６００が追加されていること以外は、図５のキャッシュと同一である。インデックス計算部６００は、アドレス、すなわちｘ座標およびｙ座標の、最小有効１７ビットを受け取り、表１の疑似コードで表されるようなキャッシュへの９ビットインデックスを計算する。この疑似コードに見られるように、９ビットインデックスは、ｘ座標の最小有効７ビットを、ｙ座標の最小有効２ビットに連結させることによって形成される。タグは図５のキャッシュと依然として同一であり、すなわち、アドレスの最大有効１２ビットである。
【表１】
2014513883.tif 000003
【００５０】
復号化のシミュレーションは、フルアソシアティブの１６ＫＢのキャッシュと、９ビットのＬＳＢインデックスを使用する図５の双方向アソシアティブキャッシュと、ｘ座標およびｙ座標から計算されるインデックスを使用する図６の双方向アソシアティブキャッシュとを用いて実行された。用いられたビデオストリームは、ｓＰａｎＩｃｅＨｏｃｋｅｙ＿ｐ９６０ｘ９６０＿３０ｆｐｓ＿４２０ｐｌ＿６０ｆｒ．３４．２６４（パッド寸法は１０２４×１０２４）であった。シミュレーションは、ＩＰＰＰ符号化構造とＩＢＢＰ符号化構造とを用いて実行された。表２はこれらのシミュレーションの結果を表す。この表が示すように、フルアソシアティブキャッシュにインデックスとしてＬＳＢビットを使用する双方向アソシアティブキャッシュのバンド幅の増加は、インデックス計算スキームを使用した双方向アソシアティブキャッシュのそれよりも著しく大きかった。
【表２】
2014513883.tif 000004
【００５１】
Ｂフレームを符号化および復号化するための参照データブロックアクセスもまた、著しいキャッシュスラッシングを引き起こし得る。というのも、参照データブロックが、フレーム記憶部２４０、３１２の複数のメモリ位置に同一のキャッシュラインを競合させ、過度のキャッシュミスの原因となるパターンでアクセスされ得るためである。このようなスラッシングを減少させるために、キャッシュインデックスストラテジーが用いられ得、当該ストラテジーは、Ｂフレームが符号化あるいは復号化されるときに、予測方向に基づいてキャッシュインデックスを適応させることにより、キャッシュの充填を拡張させる。具体的には、キャッシュインデックスは、ｘ座標から選択されたビットと、ｙ座標から選択されたビットと、予測方向、すなわち前方予測もしくは後方予測、を表す値とを用いて計算される。任意の適切な値が２つの予測方向に用いられ得る。いくつかの実施例では、前方予測方向の予測方向値は０であり、後方予測方向の予測方向値は１ある。
【００５２】
例えば、図６のキャッシュを仮定すれば、キャッシュインデックスは、表３の疑似コードで示されるように計算され得る。この疑似コードに示されるように、Ｐフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、キャッシュインデックスは、前述のようにｘ座標およびｙ座標を用いて計算される。Ｂフレームが符号化されていることを符号化タイプが示す場合、９ビットキャッシュインデックスは、ｘ座標の６つの最小有効ビットを、ｙ座標の２つの最小有効ビットに連結させることおよび予測方向値により形成される。タグは、図５のキャッシュと依然として同一であり、すなわちアドレスの最大有効１２ビットである。
【表３】
2014513883.tif 000005
【００５３】
表４は、１方向アソシアティブ、すなわちダイレクトマップ方式の１６ＫＢのキャッシュを想定した、符号化タイプ適応型キャッシュのインデックス計算の別の例の疑似コードを示す。最大フレームサイズは、ここでも前述の２１ビットアドレスと場合と同様に１９８０ｘ１０８０であると仮定される。キャッシュが１方向アソシアティブであるので、１０ビットインデックスが必要とされる。アドレスの最大有効１１ビットはタグを形成する。この疑似コードに示されるように、Ｐフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、１０ビットキャッシュインデックスは、ｘ座標の最小有効５ビットとｙ座標の最小有効５ビットとの連結によって形成される。Ｂフレームが符号化されていることを符号化タイプが示す場合、１０ビットキャッシュインデックスは、ｘ座標の最小有効５ビットをｙ座標の最小有効４ビットに連結することおよび予測方向値によって形成される。
【表４】
2014513883.tif 000006
【００５４】
表５は、４方向の１６ＫＢのアソシアティブキャッシを仮定した、符号化タイプ適応型のキャッシュインデックス計算の別の例の疑似コードを示す。このキャッシュにとって、キャッシュインデックスは８ビットであり、タグはアドレスの最大有効１３ビットである。この疑似コードに見られるように、Ｐフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、８ビットインデックスは、ｘ座標の最小有効６ビットをｙ座標の最小有効２ビットに連結させることによって形成される。Ｂフレームが符号化されていることを符号化タイプが示す場合、８ビットキャッシュインデックスは、ｘ座標の最小有効５ビットをｙ座標の最小有効２ビットに連結することおよび予測方向値によって形成される。
【表５】
2014513883.tif 000007
【００５５】
図７は、様々なキャッシュ構成およびインデックス計算スキームを用いて実行されるＨ．２６４の復号化シミュレーションの結果を示す。本シミュレーションでは、ＩＢＢＰ符号化構造が２３のテストビデオシーケンスに使用された。また、予測方向につき４つの参照フレームが使用された。この表の全てのデータは、フルアソシアティブキャッシュの使用と比較して、Ｂフレームのために外部メモリからフェッチされた追加のデータをパーセンテージに換算したものである。２列目は、表１の疑似コードのように形成された、キャッシュインデックスを有する１６ＫＢの双方向アソシアティブキャッシュを使用した結果を示す。３列目は、表３の疑似コードのように形成された、すなわちインデックスがＢフレームのための予測方向に基づいて適応されたキャッシュインデックスを有する１６ＫＢの双方向アソシアティブキャッシュを使用した結果を示す。４列目は、符号化タイプが常にＰであり、すなわちフレーム符号化タイプのための適応がないことを想定した、表４の疑似コードのように形成されたキャッシュインデックスを有する１６ＫＢの１方向アソシアティブキャッシュを使用した結果を示す。５列目は、表４の疑似コードのように形成された、すなわちインデックスがＢフレームのために予測方向に基づいて適応されたキャッシュインデックスを有する１６ＫＢの１方向アソシアティブキャッシュを使用した結果を示す。これらの結果から理解され得るように、符号化タイプ適応型のインデックスの使用は、非適応型インデックスを使用するよりもより良いパフォーマンスを提供した。
【００５６】
一つもしくは複数の実施例では、参照データキャッシュ部２１８、３１８は、例えばＨ．２６４においてｒｅｆ＿ｉｄｘ＝０を有する、最も時間的に近い参照フレームから参照データブロックをキャッシュし、その他の参照フレームからは参照データブロックをキャッシュしない。具体的には、参照データブロックが、最も時間的に近い参照フレーム以外の任意の参照フレームから要求される場合、参照データキャッシュ部はキャッシュメモリをバイパスし、要求されたブロックをフレーム記憶部２４０、３１２から取り出す。このような実施例では、タグ中に参照データブロックの参照フレーム識別子を含む必要がないので、タグの記憶空間が著しく減少され得る。例えば、１９２０×１０８０の最大フレームサイズを仮定すれば、ブロックがすべての可能性のある参照フレームからキャッシュされる場合、フルアソシアティブキャッシュのためのタグは２１ビットのストレージを必要とする。タグ中に参照フレーム識別子を含む必要性が取り除かれる場合、複雑さとタグ記憶領域の１９％の節約となる。
【００５７】
Ｈ．２６４では、表６に示されるように、ほとんどのテストビデオビットストリームにおいてマクロブロックの大部分がｒｅｆ＿ｉｄｘ＝０である。その結果、ｒｅｆ＿ｉｄｘ≠０を有する参照フレームからのデータは、ｒｅｆ＿ｉｄｘ≠０を有するフレームからフェッチされたデータの最小限の重複となるまばらな方法でアクセスされる。重複量が低いので、ｒｅｆ＿ｉｄｘ≠０を有するフレームからキャッシュされかつリフェッチされるデータ量もまた低い。それゆえ、ｒｅｆ＿ｉｄｘ≠０のみがキャッシュされる場合、全体のキャッシュパフォーマンスの著しい損失がない。
【００５８】
いくつかの実施例では、ピクチャがインターレースされる場合、参照データキャッシュ部２１８、３１８は、例えばＨ．２６４においてｒｅｆ＿ｉｄｘ＝０，１を有する、２つの最も時間的に近い参照フィールドから参照ピクチャデータブロックをキャッシュし、他の参照フィールドからの参照データブロックをキャッシュしない。具体的には、参照データブロックが２つの最も時間的に近い参照フィールド以外の任意の参照フィールドから要求される場合、参照データキャッシュ部はキャッシュメモリをバイパスし、要求されたブロックをフレーム記憶部２４０、３１２から取り出す。このような実施例では、参照データブロックの参照フレーム識別子の１つのビットのみがタグに含まれる必要があるので、タグの記憶スペースが著しく減少され得る。
【表６】
2014513883.tif 000008
【００５９】
図８Ａおよび図８Ｂは、すべての参照フレームからのブロックをキャッシュするもの、および、最も時間的に近い参照フレームのみからのブロックをキャッシュするもののフルアソシアティブの１６ＫＢのキャッシュを用いて実行されるＨ．２６４の復号化シミュレーションの結果を示す。本シミュレーションでは、ＩＰＰＰ符号化構造（図８Ａ）およびＩＢＢＰ符号化構造（図８Ｂ）が２３のテストビデオシーケンスに使用された。また、予測方向につき４つの参照フレームが使用された。これらの２つの表の結果が示すように、全ての参照フレームからのキャッシュとは対照的に、最も時間的に近い参照フレームからのみのキャッシュのメモリバンド幅の平均パーセントの増加は、１％よりも低い。
【００６０】
ビデオ符号化および復号化において、参照フレームデータへのアクセスには、水平方向の局所性および垂直方向の局所性の双方がある。符号化もしくは復号化は、例えばマクロブロックといった一連の符号化ブロックを介してフレーム内の列を移動するので、一つの符号化ブロックから次の符号化ブロックに使用される参照フレームデータ間には水平方向の重複がある。また、フレームの列の符号化ブロックとフレームの前後の列の符号化ブロックとの間で用いられる参照フレームデータ間にも垂直方向の重複がある。大きなキャッシュサイズは、水平方向および垂直方向の局所性の双方をキャプチャするために必要とされ、例えば、１０８０ｐビデオフレームのための現在のマクロブロックとその前後の列の３つの列の局所性をキャプチャするために必要とされ、おおよそ７列×列につき１６ライン×ラインにつき１０８８ピクセル＝１１９Ｋバイトのキャッシュのキャッシュメモリサイズが必要とされる。前述の参照フレームキャッシュの実施例が、この目的で用いられ得るが、必要とされるタグメモリの量は著しく増加する。例えば、図５に示されたキャッシュ構成では、必要とされるタグメモリの量は、タグにつき１２ビット×７×１０８８＝１１．５ＫＢである。キャッシュ制御論理（タグメモリはその一部である）は高速論理を用いて設計され得、タグサイズメモリのこの増加は非常に高価となる。それゆえ、垂直方向の局所性を利用するために適合した、最適化されたキャッシュ構造が用いられ得る。
【００６１】
一つもしくは複数の実施例では、参照データキャッシュ部２１８、３１８は水平方向のキャッシュおよび垂直方向のキャッシュの双方を提供する。水平方向のキャッシュは、前述の実施例によるアソシアティブキャッシュであり得る。垂直方向のキャッシュは、参照符号化ブロックの垂直方向の列の範囲内で参照データブロックを格納する。すなわち、垂直方向のキャッシュは、現在のフレームにおいて符号化および復号化されている符号化ブロックの現在の列に対応する参照符号化ブロックの列から、参照符号化ブロックの列の前の参照符号化ブロックの一つもしくは複数の列から、および参照符号化ブロックの列の後の参照符号化ブロックの一つもしくは複数の列から、参照データブロックを格納する。垂直方向の範囲における符号化ブロックの列の数は、設計決定、パラメータ、それらの組み合わせ等であり得る。
【００６２】
図１２Ａおよび図１２Ｂを参照して本明細書でより詳細に説明されるように、水平方向のキャッシュから追い出された参照データブロックは、追い出されたデータブロックが垂直方向のキャッシュの現在のウィンドウ内、すなわち現在の垂直方向の範囲内にある場合、垂直方向のキャッシュに格納される。いくつかの実施例では、垂直方向のキャッシュの現在のウィンドウ内にあることに加えて、追い出された参照データブロックはまた、最も時間的に近い参照フレームからでなければならない。さらに、水平方向のキャッシュ内の要求された参照データブロックについてキャッシュミスがある場合、要求された参照データブロックについて垂直方向のキャッシュがチェックされる。垂直方向のキャッシュにもキャッシュミスがある場合、要求された参照データブロックは、フレーム記憶部２４０、３１２から取り出され、水平方向のキャッシュのキャッシュラインに格納される。いくつかの実施例では、要求された参照データブロックのアドレスは、フレーム記憶部２４０、３１２のアドレスに変換される。
【００６３】
垂直方向の範囲は、垂直方向のキャッシュに格納され得る参照符号化ブロックの垂直方向に移動するウィンドウの範囲を規定する。すなわち、現在のフレームの符号化ブロックの列の符号化もしくは復号化が完了するたびに、参照符号化ブロックのウィンドウは一列下に移動される。図９Ａおよび図９Ｂは、この垂直方向に移動するウィンドウを表す例である。これらの例では、垂直方向のキャッシュの垂直方向の範囲は参照符号化ブロックの３列であり、ｖＣａｃｈｅＴｏｐおよびｖＣａｃｈｅＢｏｔは現在のウィンドウの頂部と底部である。現在のフレームの符号化ブロックＡ９００（もしくは同じ列の任意の他の符号化ブロック）が符号化あるいは復号化されているとき、ｖＣａｃｈｅＴｏｐおよびｖＣａｃｈｅＢｏｔによって規定されるウィンドウの参照データブロックは垂直方向のキャッシュに格納され得る。しかしながら、現在のフレームの符号化ブロックＢ９０２（もしくは同じ列の他の符号化ブロック）が符号化もしくは復号化されているとき、参照フレームのウィンドウは、参照フレーム内で垂直方向に下方に移動される。さらに、もはやウィンドウにない符号化ブロックの列から参照データブロックを格納するキャッシュラインは、ウィンドウが移動されたとき、無効にされる。
【００６４】
垂直方向のキャッシュは、データストレージおよび有効ビットストレージを含む。データストレージおよび有効ビットストレージは、結合されても別々であっても良い。データストレージは、複数のキャッシュラインに区分され、各々が一つの参照データブロックをストアするために十分なサイズである。さらに垂直方向のキャッシュラインサイズは、水平方向のキャッシュのそれと同一のサイズである。データストレージは、所定の垂直方向の範囲内に各々の参照データブロックのためにユニークなキャッシュラインを提供するために十分なメモリを含む。有効ビットストレージは、垂直方向のキャッシュの各々のキャッシュラインのために１ビットを格納するために十分なメモリを含む。
【００６５】
データストレージのメモリ量は、キャッシュの所望の垂直性、すなわち、どれだけの参照符号化ブロックの列が収容されるかということと、符号化および復号化される最大フレームのフレーム幅と、符号化ブロックのサイズと、参照データブロックのサイズとに基づく設計上の選択事項である。例えば、参照符号化ブロックが１６×１６であり、参照データブロックが４×４である場合、１６個の１６バイトのキャッシュラインが、一つの参照符号化ブロックの参照データブロックを格納するために必要とされる。最大フレーム幅が１９２０である場合、フレームの列には１２０の参照符号化ブロックがある。すなわち、１９２０の１６バイトのキャッシュラインが、フレームの参照符号化ブロックの一つの列の参照データブロックを格納するために必要とされる。垂直方向のキャッシュの垂直方向の範囲が参照符号化ブロックの３列である場合、３×１９２０＝５７６０の１６バイトのキャッシュラインが垂直方向の範囲の参照データブロックを格納するために必要とされる。従って、この例にとっては、データストレージが最小９０ＫＢである必要がある。
【００６６】
任意の適切な実装が垂直方向のキャッシュに用いられ得る。いくつかの実施例では、垂直方向のキャッシュは循環バッファのようなメモリバッファを実装される。図１０Ａないし図１０Ｄは、一つもしくは複数の実施例による、バッファとして実装された例示的な垂直方向のキャッシュのブロック図を示す。すなわち、図１０Ａおよび図１０Ｂでは、データストレージが線形バッファとして管理され、図１０Ｃおよび図１０Ｄでは、データストレージが循環バッファとして管理される。これらの例は、符号化ブロックが１６×１６のマクロブロックであり、かつ参照データブロック（タイル）が４×４であると仮定する。さらに、少なくとも１２行の参照データブロック（３行のマクロブロック）を格納するために十分なサイズの垂直方向のキャッシュが仮定される。
【００６７】
図１０Ａでは、マクロブロック行２の参照データブロックに対応する現在のフレームのデータブロックが動き補償されており、動き補償がなされているマクロブロック行に対応する参照データブロックは、マクロブロック行２の位置で垂直方向のキャッシュバッファに格納され、前のマクロブロック行に対応する参照データブロックは、マクロブロック行１の位置で垂直方向のキャッシュバッファに格納され、かつ、後のマクロブロック行に対応する参照データブロックは、マクロブロック行３の位置の垂直方向のキャッシュバッファに格納される。参照データブロックは、ｘＴｉｌｅＡｄｄｒおよびｙＴｉｌｅＡｄｄｒのインデックスによってアドレスされ、ここでｘＴｉｌｅＡｄｄｒ＝ｘＡｄｄｒ／ｔｉｌｅＳｉｚｅかつｙＴｉｌｅＡｄｄｒ＝ｙＡｄｄｒ／ｔｉｌｅＳｉｚｅである。
【００６８】
図１０Ｂでは、マクロブロック行２に対応するマクロブロックの行の動き補償が完了し、それゆえ、垂直方向のキャッシュウィンドウが１行移動されて、マクロブロック行２でキャッシュされた参照データブロックがここでは前のマクロブロックであり、マクロブロック行３でキャッシュされた参照データブロックがここでは動き補償がなされるマクロブロック行に対応する参照データブロックであり、かつ動き補償中のマクロブロック行の後のマクロブロック行に対応する参照データブロックがここではマクロブロック行４の位置に格納されるようにする。前のマクロブロックが動き補償されていたときに垂直方向のキャッシュに格納された参照データブロックは、すなわち、マクロデータブロック行２およびマクロブロック行３の参照データブロックは、現在のマクロブロック行の動き補償で用いられるよう垂直方向のキャッシュに維持されることに注意されたい。
【００６９】
図１０Ａと類似する図１０Ｃでは、マクロブロック行２の参照データブロックに対応する現在のフレームのデータブロックが動き補償されており、かつ動き補償がなされているマクロブロック行に対応する参照データブロックが、マクロブロック行２の位置の垂直方向のキャッシュバッファに格納され、前のマクロブロックに対応する参照データブロックはマクロブロック行１の位置で垂直方向のキャッシュバッファに格納され、かつ後のマクロブロック行に対応する参照データブロックはマクロブロック行３の位置で垂直方向のキャッシュバッファに格納される。参照データブロックは、ｖｅｒｔｉｃａｌＣａｃｈｅＸａｄｄｒｅｓｓおよびｖｅｒｔｉｃａｌＣａｃｈｅＹａｄｄｒｅｓｓのインデックスによりアドレスされ、ここで、１２を法（ｍｏｄｕｌｏ）として、ｖｅｒｔｉｃａｌＣａｃｈｅＸａｄｄｒｅｓｓ＝ｘＴｉｌｅＡｄｄｒ＝ｘＡｄｄｒ／ｔｉｌｅＳｉｚｅおよびｖｅｒｔｉｃａｌＣａｃｈｅＹａｄｄｒｅｓｓ＝ｙＴｉｌｅＡｄｄｒであり、ｙＴｉｌｅＡｄｄｒ＝ｙＡｄｄｒ／ｔｉｌｅＳｉｚｅである。
【００７０】
図１０Ｄでは、マクロブロック行２に対応するマクロブロックの行の動き補償が完了し、それゆえ垂直方向のキャッシュウィンドウが一列移動されて、マクロブロック行２でキャッシュされた参照データブロックがここでは前のマクロブロックであると考えられ、マクロブロック行３でキャッシュされた参照データブロックがここでは動き補償中のマクロブロック行に対応する参照データブロックであり、かつ動き補償中のマクロブロック行の後のマクロブロックに対応する参照データブロックがマクロブロック行４の位置にストアされるようにする。しかしながら、データストレージが、バッファでウィンドウを下に移動させるのではなく、循環バッファであるので、元はマクロブロック行１に配置されたスペースが、ここではマクロブロック行４のための参照データブロックを格納するために用いられる。前のマクロブロック行が動き補償されたときに垂直方向のキャッシュに格納された参照データブロック、すなわち、マクロブロック行２およびマクロブロック行３の参照データブロック、は現在のマクロブロック行の動き補償で用いられるために垂直方向のキャッシュに保つたれることに注意されたい。
【００７１】
ＰフレームとＢフレームとの双方の符号化および復号化を提供する実施例では、垂直方向のキャッシュは半分ずつ二つに分割される。一つの半分は、一つの予測方向のための参照データブロックをキャッシュするために用いられ、もう一つの半分は、もう一つの予測方向の参照データブロックをキャッシュするために用いられる。いくつかの実施例では、順方向の予測方向値は０であり、逆方向の予測方向値は１である。
【００７２】
図１１は一つもしくは複数の実施例による参照データをキャッシュする方法のフローチャートを示す。説明の簡潔さのために、双方向アソシアティブキャッシュが仮定される。当業者は、異なるキャッシュ連想を用いた方法の実施例を理解するであろう。まず、要求された参照データブロックの参照フレーム識別子、ｘ座標、およびｙ座標が参照データキャッシュ部によって要求部から受け取られる（１１００）。参照フレーム識別子、ｘ座標およびｙ座標は、要求された参照データブロックのアドレスを形成する。すなわち、アドレスは、ある順序での、参照フレーム識別子、ｘ座標およびｙ座標の連結である。
【００７３】
参照フレーム識別子はそれゆえ、要求された参照データブロックがキャッシュ可能な参照フレームにあるか否かを決定するために用いられる（１１０２）。すなわち、参照データキャッシュ部は、他の参照フレームからではなく、いくつかの選択された参照フレームから参照データブロックをキャッシュし得る。いくつかの実施例では、すべての参照フレームがキャッシュ可能である。いくつかの実施例では、最も時間的に新しい参照フレームのみがキャッシュ可能である。要求された参照データブロックがキャッシュ可能な参照フレームにない場合、要求された参照データブロックはフレーム記憶部から取り出され（１１０４）、要求部へ戻される（１１１４）。いくつかの実施例では、要求された参照データブロックのアドレスが、フレーム記憶部のアドレスに変換される。
【００７４】
要求された参照データブロックがキャッシュ可能な参照フレームにある場合、キャッシュインデックスは参照データブロックのアドレスから決定される（１１０６）。いくつかの実施例では、インデックスは、要求された参照データブロックのアドレスの最小有効ビットのいくつかの数である。いくつかの実施例では、キャッシュインデックスは、前述のようなｘ座標からの所定数のビットとｙ座標からの所定数のビットとを用いて計算される。いくつかの実施例では、キャッシュインデックスの計算は、現在のフレームが、すなわち符号化もしくは復号化されているフレームが、Ｂフレームであるときには、前述のように、予測方向に基づいて適応される。
【００７５】
次いで、インデックスは、要求された参照データブロックがキャッシュに格納されるか否かを決定するために用いられる（１１０８）。具体的には、インデックス位置に対応する２つのキャッシュラインのタグが、アドレスのタグと比較される。一致しかつ一致するタグに対応する有効ビットがキャッシュラインに記憶されたデータを有効と示す場合、キャッシュヒットがある。すなわち、要求された参照データブロックが一致するタグを有するキャッシュラインに記憶されている。このキャッシュラインに格納されたデータは、その後、要求部へ戻される（１１１４）。
【００７６】
一致がない、および／もしくは、対応する有効ビットがキャッシュラインに格納されたいずれのデータも無効であると示す場合、キャッシュミスがある。すなわち、要求された参照データブロックは、２つのキャッシュラインのどちらにも格納されていない。この場合、要求された参照データブロックがフレーム記憶部から取り出され（１１１０）、２つのキャッシュラインのうちの一つに格納される（１１１２）。いくつかの実施例では、要求された参照データブロックのアドレスはフレーム記憶部のアドレスに変換される。双方のキャッシュラインが無効である場合、取り出された参照データブロックはいずれのキャッシュラインにストアされても良い。一つのキャッシュラインが有効であり、他方のキャッシュラインが無効である場合、取り出された参照データブロックは無効なキャッシュラインに格納される。双方のキャッシュラインが有効である場合、キャッシュラインのうちの１つにあるデータは、取り出された参照データブロックのための空間を生成するために追い出される。
【００７７】
データが追い出されるべきキャッシュラインの選択は、適切な追い出しのポリシー、すなわち置換ポリシーを用いてなされ得る。一つもしくは複数の実施例では、最近アクセスされていないデータを保有するキャッシュラインが選択される。取り出された参照データブロックが格納される場合、キャッシュラインを格納するタグが要求された参照データブロックのタグに設定され、かつ格納するキャッシュラインに対応する有効ビットは、キャッシュラインのデータが有効であると示すよう設定される。要求された参照データはその後、要求部に戻される（１１１４）。
【００７８】
図１２Ａおよび図１２Ｂは、一つもしくは複数の実施例による、水平方向のキャッシュおよび垂直方向のキャッシュの組合せを用いて参照データをキャッシュする方法のフローチャートを示す。説明の簡潔さのために、双方向アソシアティブキャッシュが水平方向のキャッシュのために仮定される。まず、要求された参照データブロックの参照フレーム識別子、ｘ座標およびｙ座標が、要求部から参照データキャッシュ部によって受け取られる（１２００）。参照フレームデータキャッシュ部は、水平方向のキャッシュと垂直方向のキャッシュとの双方を含む。参照フレーム識別子、ｘ座標およびｙ座標は、要求された参照データブロックのアドレスを形成する。すなわち、アドレスはある順序での参照フレーム識別子、ｘ座標およびｙ座標の結合である。
【００７９】
その後、参照フレーム識別子は、要求されたデータブロックがキャッシュ可能な参照フレームにあるか否かを決定するために用いられる（１２０２）。すなわち、参照データキャッシュ部は、他のフレームからではなく、いくつかの選択されたフレームから参照データブロックをキャッシュし得る。いくつかの実施例では、すべての参照フレームがキャッシュ可能である。いくつかの実施例では、最も時間的に近い参照フレームのみがキャッシュ可能である。要求された参照データブロックがキャッシュ可能な参照フレームにない場合、要求された参照データブロックはフレーム記憶部から取り出され（１２０４）、要求部に戻される（１２１８）。いくつかの実施例では、要求された参照データブロックのアドレスは、フレーム記憶部のアドレスに変換される。
【００８０】
要求された参照データブロックがキャッシュ可能な参照フレームにある場合、水平方向のキャッシュのためのキャッシュインデックスが参照データブロックのアドレスから決定される（１２０６）。いくつかの実施例では、インデックスは、水平方向のキャッシュのキャッシュラインの各々のセットためのユニークなインデックス値を形成するよう要求された参照データブロックのアドレスの最小有効ビットの十分な数である。いくつかの実施例では、キャッシュインデックスは、前述のような、ｘ座標からの所定の数のビットとｙ座標からのビットの所定数とを用いて計算される。いくつかの実施例では、キャッシュインデックスの計算は、現在のフレームが、すなわち符号化もしくは復号化されているフレームがＢフレームの場合には、前述のような予測方向に基づいて適応される。
【００８１】
その後、インデックスは、要求された参照データブロックが水平方向のキャッシュに格納されるか否かを決定するために用いられる（１２０８）。具体的には、インデックス位置に対応する２つのキャッシュラインのタグがアドレスのタグと比較される。一致があり、かつ一致するタグに対応する有効ビットがキャッシュラインにストアされたデータを有効と示す場合、キャッシュヒットがある。すなわち、要求された参照データブロックは、一致するタグを有するキャッシュラインに格納されている。このキャッシュラインに格納されたデータは、その後、要求部へ戻される（１２１８）。
【００８２】
一致がない、および／もしくは、対応する有効キャッシュがキャッシュラインに格納されたいかなるデータも無効であると示す場合、キャッシュミスがある。すなわち、要求された参照データブロックは２つのキャッシュラインのいずれにも格納されない。キャッシュミスがある場合、垂直方向のキャッシュは、要求された参照データブロックがそこで格納されているか否かを決定するためにアクセスされ得る。まず、要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能か否かの決定がなされる（１２１０）。要求されたデータブロックを含む参照フレームがキャッシュ可能である場合、かつ、要求された参照データブロックが参照フレームの垂直方向のキャッシュの現在のウィンドウにある場合、要求された参照データブロックはキャッシュ可能である。要求された参照データブロックのアドレスの参照フレーム識別子は、要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能な参照フレームにあるか否かを決定するために用いられる。一つもしくは複数の実施例では、最も時間的に近い参照フレームのみが垂直方向のキャッシュでキャッシュ可能である。要求された参照データブロックのｘ座標およびｙ座標は、要求された参照データブロックが垂直方向のキャッシュの現在のウィンドウ内にあるか否かを決定するために、前述のように用いられ得る。要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能であると決定される場合、垂直方向のキャッシュのためのキャッシュインデックスが前述のように決定される（１２１２）。
【００８３】
インデックは、その後、要求された参照データブロックが垂直方向のキャッシュに格納されているか否かを決定するために用いられる（１２１４）。要求された参照データブロックが、インデックスにより示された垂直方向のキャッシュのキャッシュラインに格納されている場合、キャッシュヒットがあり、このキャッシュラインに格納されたデータは、要求部に戻される（１２１８）。キャッシュミスがある場合、もしくは要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能でない場合、要求された参照データブロックはフレーム記憶部から取り出され（１２１６）、水平方向のキャッシュインデックスにより識別された２つのキャッシュラインのうちの一つの水平方向のキャッシュに格納される。
【００８４】
キャッシュラインのうちのすくなくとも一つが無効である場合、すなわちフリーである場合（１２２０）、取り出された参照データブロックは、フリーのキャッシュラインに格納されて（１２２２）、要求された参照データブロックは要求部へ戻される（１２３４）。双方のキャッシュラインが有効である場合（１２２０）、キャッシュラインのうちの１つにあるデータが、取り出された参照データブロックのための空間を生成する追い出しのために選択される（１２２４）。データが追い出されるキャッシュラインの選択は、任意の適切な追い出しポリシーを用いてなされ得る。一つもしくは複数の実施例では、最近アクセスされていないデータを保有するキャッシュラインが選択される。
【００８５】
キャッシュラインが選択された後、キャッシュラインに現在格納された参照データブロック、すなわち追い出された参照データブロック、は垂直方向のキャッシュに格納され得る。具体的には、追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能か否かの決定がなされる（１２２６）。追い出されたデータブロックを含む参照フレームがキャッシュ可能である場合、かつ追い出された参照データブロックが参照フレームの垂直方向のキャッシュの現在のウィンドウにある場合、追い出された参照データはキャッシュ可能である。追い出された参照データブロックのアドレスの参照フレーム識別子は、追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能である参照フレームにあるか否かを決定するために用いられる。一つもしくは複数の実施例では、最も時間的に近い参照フレームのみが、垂直方向のキャッシュでキャッシュ可能である。追い出された参照データブロックのｘ座標およびｙ座標は、追い出された参照データブロックが垂直方向のキャッシュの現在のウィンドウ内にあるか否かを決定するために、前述のように用いられ得る。追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能でないと決定される場合、要求された参照データブロックは水平方向のキャッシュの選択されたキャッシュラインに格納され（１２３２）、要求部へ戻される（１２３４）。
【００８６】
追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能であると決定される場合、垂直方向のキャッシュのためのキャッシュインデックスが前述のように決定され（１２２８）、追い出された参照データブロックはインデックスに対応するキャッシュラインに格納される。キャッシュラインに対応する有効ビットはまた、有効なデータがキャッシュラインに格納されることを示すよう設定される。要求された参照データブロックはその後、水平方向のキャッシュの選択されたキャッシュラインに格納され（１２３２）、要求部へ戻される（１２３４）。要求された参照データブロックが格納されるとき、選択されたキャッシュラインのためのタグが要求された参照データブロックのタグに設定され、選択されたキャッシュラインに対応する有効ビットは、キャッシュラインのデータが有効であることを示すよう設定される。
【００８７】
本明細書で説明されたエンコーダと方法の実施例は、いくつかのタイプのディジタルシステムに提供され得る：ディジタル信号プロセッサ（ＤＰＳ）、汎用プログラム可能プロセッサ、特定用途向け回路、もしくは、ＤＳＰとの縮小命令セット（ＲＩＳＣ）プロセッサとの組み合わせや、種々の特殊なプログラム可能なアクセレレータなどといったシステムオンチップ（ＳｏＣ）などである。オンボードもしくは外部（フラッシュＥＥＰ）ＲＯＭやＦＲＡＭにストアされたプログラムは、ビデオ信号処理を実装するために用いられ得る。アナログ‐ディジタルコンバータおよびディジタル‐アナログコンバータは、現実の世界との結合を提供し、変調器および復調器（加えて空中とのインターフェースのためのアンテナ）は、伝送波形へのカップリングを提供し得、かつパケタイザーは、インターネットなどのネットワークを介した伝送のためのフォーマットを提供する。
【００８８】
本開示で記載された技術は、ハードウェア、ソフトウェア、ファームウェア、もしくはそれらの組み合わせで実装され得る。ソフトウェアで実装される場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、もしくはディジタル信号プロセッサ（ＤＳＰ）といった、一つもしくは複数のプロセッサで実行され得る。こういった技術を実行するソフトウェアは、コンパクトディスク（ＣＤ）、ディスケット、テープ、ファイル、メモリ、もしくはその他のコンピュータ可読の記憶装置といった、コンピュータ読出し可能な媒体にまずストアされて、プロセッサにロードされて実行される。いくつかの場合では、ソフトウェアは、コンピュータ読出し可能な媒体およびコンピュータ読出し可能な媒体用パッケージマテリアルを含むコンピュータプログラム製品でも販売され得る。いくつかの場合では、ソフトウェア命令は、リムーバブルのコンピュータ読出し可能な媒体（例えば、フロッピーディスク、光ディスク、フラッシュメモリ、ＵＳＢキー）を介して、その他のディジタルシステム等のコンピュータ読出し可能な媒体からの伝送路を介して、分配され得る。
【００８９】
本明細書に記載されたような参照データキャッシュを提供するビデオエンコーダおよびビデオデコーダの実施例は、ディジタルビデオシーケンスをキャプチャする（又は、そうでなければ発生させる）機能、および／またはビデオシーケンスを受け取り表示する機能を備えた、事実上任意のタイプのディジタルシステム（例えば、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、携帯電話やＭＰ３プレーヤーなどの携帯用デバイス、パーソナル・デジタル・アシスタント、ディジタルビデオカメラ、セットトップボックス、ディジタルビデオレコーダ（ＤＶＲ）等）に実装され得る。図１３ないし図１５は、具体的なディジタルシステムのブロック図を示す。
【００９０】
図１３は、一つもしくは複数の実施例による埋め込まれたシステム（例えばディジタルカメラ）に適したディジタルシステムを示しており、当該実施例は、他の構成要素の中でも、本明細書で記載された方法を実施するよう構成され得る、ＤＳＰベースの画像コプロセッサ（ＩＣＰ）１３０２、ＲＩＳＣプロセッサ１３０４、およびビデオプロセッシングエンジン（ＶＰＥ）１３０６を含む。ＲＩＳＣプロセッサ１３０４は、任意の適切に構成されたＲＩＳＣプロセッサであり得る。ＶＰＥ１３０６は、画像センサ、ビデオデコーダ等といった映像周辺機器からのビデオキャプチャに用いられる、設定可能なビデオ処理フロントエンド（Ｖｉｄｅｏ  ＦＥ）１３０８入力インターフェースと、ＳＤＴＶディスプレイ、ディジタルＬＣＤパネル、ＨＤＴＶビデオエンコーダ等といったディスプレイ装置に用いられる、設定可能なビデオ処理バックエンド（Ｖｉｄｅｏ  ＢＥ）１３１０出力インターフェースと、Ｖｉｄｅｏ  ＦＥ１３０８およびＶｉｄｅｏ  ＢＥ１３１０とによってシェアされるメモリインターフェース１３２４とを含む。ディジタルシステムはまた、マルチメディアカード、オーディオシリアルポート、ユニバーサル・シリアル・バス（ＵＳＢ）コントローラ、シリアルポートインターフェース等を含み得る様々な周辺機器用の周辺インターフェース１３１２を含む。
【００９１】
Ｖｉｄｅｏ  ＦＥ１３０８は、画像信号プロセッサ（ＩＳＰ）１３１６と、３Ａ統計ジェネレータ（３Ａ）１３１８とを含む。ＩＳＰ１３１６はインターフェースを画像センサおよびディジタルビデオソースに提供する。具体的には、ＩＳＰ１３１６は、センサ（ＣＭＯＳもしくはＣＣＤ）から未処理の画像／ビデオデータを受け取り得、また様々なフォーマットでＹＵＶビデオデータを受け取ることができる。ＩＳＰ１３１６はまた、未処理のＣＣＤ／ＣＭＯＳデータからカラーフォーマット（例えばＲＧＢ）で画像データを生成する機能を備えた、パラメータ化された画像処理モジュールを含む。ＩＳＰ１３１６は、各々のセンサタイプ用にカスタマイズ可能であり、かつキャプチャされたディジタル画像のプレビュー表示用の、およびビデオ録画モード用のビデオフレームレートをサポートする。ＩＳＰ１３１６はまた、他の機能の中でも、画像リサイザ、統計収集機能、および境界信号計算機を含む。３Ａモジュール１３１８は、ＩＳＰ１３１６もしくは外部メモリからの未処理の画像データのメトリクスを収集することによって、オートフォーカス、オートホワイトバランス、およびオート露出のためのコントロールループをサポートする機能を含む。
【００９２】
Ｖｉｄｅｏ  ＢＥ１３１０は、オンスクリーンディスプレイエンジン（ＯＳＤ）１３２０とビデオアナログエンコーダ（ＶＡＣ）１３３とを含む。ＯＳＤエンジン１３２０は、いくつかの異なるタイプのハードウェアディスプレイウィンドウ用の様々なフォーマットでディスプレイデータを管理する機能を含み、かつＯＳＤエンジン１３２０はまた、単一ディスプレイへのビデオデータおよびディスプレイ／ビットマップデータを、当該データをＹＣｂＣｒフォーマットのＶＡＣ１３２２に提供する前に、収集および混合する処理を行う。ＶＡＣ１３２２は、ＯＳＤエンジン１３２０から表示フレームを取り出して、当該フレームを表示デバイスへのインターフェースに必要とされる所望の出力フォーマットおよび出力信号にフォーマットする機能を含む。ＶＡＣ１３２２は、複合ＮＴＳＣ／ＰＡＬビデオデバイス、Ｓ‐ビデオデバイス、ディジタルＬＣＤデバイス、高解像度ビデオエンコーダ、ＤＶＩ／ＨＤＭＩデバイス等にインターフェースで接続され得る。
【００９３】
メモリインターフェース１３２４は、外部メモリへ／からデータを要求および／もしくは伝送するＶｉｄｅｏ  ＦＥ１３０８およびＶｉｄｅｏ  ＢＥ１３１０のモジュールへの一次ソースおよびシンクとして機能する。メモリインターフェース１３２４は、読出しおよび書き込みバッファと、仲裁論理とを含む。
【００９４】
ＩＣＰ１３０２は、キャプチャされた画像のビデオ符号化およびその他の処理に必要とされるコンピュータによる計算を実行する機能を含む。サポートされるビデオ符号化基準は、ＪＰＥＧ基準、ＭＰＥＧ基準、およびＨ.２６ｘ基準のうちの一つもしくは複数を含み得る。一つもしくは複数の実施例では、ＩＣＰ１３０２は、本明細書に記載された方法のコンピュータによる計算を実施するよう構成され得る。
【００９５】
動作において、画像もしくはビデオシーケンスをキャプチャするために、ビデオ信号はＶｉｄｅｏＦＥ１３０８によって受信され、ビデオ符号化を実施するために必要とされる入力フォーマットに変換される。ＶｉｄｅｏＦＥ１３０８により生成されるビデオデータは、その後外部メモリに格納される。ビデオデータは次いでビデオエンコーダによって符号化されて外部メモリに格納される。符号化の間、ビデオエンコーダは本明細書に記載されたような参照データキャッシングの方法を用い得る。符号化されたビデオはその後、画像／ビデオシーケンスを表示するために、外部メモリから読み出され、復号化され、かつＶｉｄｅｏＢＥ１３１０によって後処理され得る。
【００９６】
図１４は、本明細書に記載されたような参照データキャッシングを実行するよう構成され得るディジタルシステム１４００（例えば、携帯電話）のブロック図である。単一処理ユニット（ＳＰＵ）１４０２は、埋め込まれたメモリとセキュリティ機能とを含むディジタル信号処理システム（ＤＳＰ）を含む。アナログベースバンドユニット１４０４は、ハンドセットマイクロフォンから音声データを受け取り、音声データストリームをハンドセットモノラルスピーカ（１４１３ｂ）へ送る。アナログベースバンドユニット１４０４はまた、マイクロフォン（１４１４ｂ）から音声データを受け取り、音声データストリームをモノラルヘッドセット（１４１４ｂ）へ送る。アナログベースバンドユニット１４０４およびＳＰＵ１４０２は、別々のＩＣであり得る。多くの実施例では、アナログベースバンドユニット１４０４は、プログラム可能なプロセッサコアを内蔵せずに、ＳＰＵ１４０２で実行するソフトウェアによりセットアップされる、オーディオパス、フィルタ、ゲイン等の構成に基づいて処理を実行する。
【００９７】
ディスプレイ１４２０はまた、ネットワーク、ローカルカメラ１４２８、もしくはＵＳＢ１４２６やメモリ１４１２などの他のソースから受け取られた、ピクチャおよび符号化されたビデオストリームを表示し得る。ＳＰＵ１４０２はまた、セルラーネットワークのような様々なソースから、ＲＦトランシーバ１４２６やカメラ１４２８を介して受け取られるビデオストリームをディスプレイ１４２０へ送信することができる。ＳＰＵ１４０２はまた、ビデオストリームを、エンコーダ１４２２を介して複合出力端子１４２４を通過して、外部ビデオディスプレイへ送り得る。エンコーダユニット１４２２は、ＰＡＬ／ＳＥＣＡＭ／ＮＴＳＣビデオ規格に基づく符号化を提供し得る。
【００９８】
ＳＰＵ１４０２は、ビデオ符号化および復号化に必要とされるコンピュータによる計算を実行する機能を含む。サポートされるビデオ符号化基準は、例えば、ＪＰＥＧ基準、ＭＰＥＧ基準、Ｈ．２６ｘ基準および新たなＨＥＶＣ基準のうちの一つもしくは複数を含む。一つもしくは複数の実施例では、ＳＰＵ１４０２は、ビデオ符号化および／または復号化の一部として、本明細書で記載されるような参照データキャッシングを実行するよう構成される。参照データキャッシングのコンピュータの要求を実施するソフトウェア命令はメモリ１４１２にストアされ得、例えばピクチャもしくはビデオストリームといったディジタル画像データのキャプチャおよび／もしくは符号化および／もしくは復号化の一部としてＳＰＵ１４０２によって実行され得る。
【００９９】
図１５は、プロセッサ１５０２、連想メモリ１５０４、記憶デバイス１５０６、およびディジタルシステムに典型的な様々な他の要素および機能（図示しない）を含むディジタルシステム１５００を示す。一つもしくは複数の実施例では、ディジタルシステムは複数のプロセッサを含み得、および／もしくは、プロセッサのうちの一つもしくは複数はディジタル信号プロセッサであり得る。ディジタルシステム１５００はまた、キーボード１５０８やマウス１５１０（もしくは他のカーソル制御デバイス）といった入力手段と、モニタ１５１２（もしくは他の表示デバイス）のような出力手段とを含み得る。当業者は、入力および出力手段は他の形態をとり得ることを理解するであろう。ディジタルシステム１５００は、ビデオシーケンスをキャプチャするための回路（例えば、光学、センサ、読出し機器）を含む画像取込装置（図示しない）を含み得る。ディジタルシステム１５００は、ビデオシーケンスを符号化するためのビデオエンコーダを含み得、当該ビデオエンコーダは本明細書で述べられたような参照データキャッシングを実行する機能を含む。
【０１００】
ディジタルシステム１５００は、ネットワーク（図示しない、例えば、ローカルエリアネットワーク（ＬＡＮ）、インターネットのようなワイドエリアネットワーク（ＷＡＮ）、セルラーネットワーク、他の同タイプのネットワークおよび／もしくはそれらの組み合わせ）に、ネットワークインターフェース接続（図示しない）を介して接続され得る。ディジタルシステム１５００はネットワークインターフェース接続を介して、記憶デバイス１５０６から、および／もしくはリムーバブル記憶媒体から、符号化されたビデオシーケンスを受け取り、かつ表示する機能を含み得る。ディジタルシステム１５００は符号化されたビデオシーケンスを復号化するためのビデオデコーダを含み得、当該ビデオデコーダは、本明細書で述べられたような参照データキャッシングを実行する機能を含む。
【０１０１】
さらに、当業者は、前述のディジタルシステム１５００の一つもしくは複数の要素が遠隔位置に位置し得、ネットワークを介して他の要素に接続され得ることを理解するであろう。さらに、実施例は、複数のノードを有する分散システムで実施され得、システムおよびソフトウェア命令の各々の部分は、分散システム内の異なるノードに位置し得る。一つもしくは複数の実施例では、ノードはディジタルシステムであり得る。代替的に、ノードは連想物理メモリを有するプロセッサであっても良い。ノードは、代替的に、共有メモリおよび／もしくはリソースを有するプロセッサであっても良い。
【０１０２】
本明細書で述べられたような参照データキャッシングのコンピュータによる計算を実施するためのソフトウェア命令は、コンパクトディスク（ＣＤ）、ディスケット、テープ、ファイル、メモリ、もしくはその他のコンピュータ読出し可能な記憶デバイスのような、コンピュータ読出し可能な媒体に格納され得る。ソフトウェア命令は、リムーバブルのコンピュータ読出し可能な媒体（例えば、フロッピ―ディスク、光ディスク、フラッシュメモリ、ＵＳＢキー）を介して、別のディジタルシステム等のコンピュータ読出し可能な媒体からの伝送路を介して、ディジタルシステム１５００に分散され得る。また、ビデオエンコーダでは、共有の参照データキャッシュを有するではなく、個別のキャッシュが動き補償および動き予測に提供され得る。
【０１０３】
当業者は、説明された例示的な実施例に対して修正がなされ得、また多くの他の実施例が可能であることを理解するであろう。
【図４】
2014513883.tif 000009
【図７】
2014513883.tif 000010
【図８Ａ】
2014513883.tif 000011
【図８Ｂ】
2014513883.tif 000012
【図１５】
2014513883.tif 000013
【図１】
2014513883.tif 000014
【図２】
2014513883.tif 000015
【図３】
2014513883.tif 000016
【図５】
2014513883.tif 000017
【図６】
2014513883.tif 000018
【図９Ａ】
2014513883.tif 000019
【図９Ｂ】
2014513883.tif 000020
【図１０Ａ】
2014513883.tif 000021
【図１０Ｂ】
2014513883.tif 000022
【図１０Ｃ】
2014513883.tif 000023
【図１０Ｄ】
2014513883.tif 000024
【図１１】
2014513883.tif 000025
【図１２Ａ】
2014513883.tif 000026
【図１２Ｂ】
2014513883.tif 000027
【図１３】
2014513883.tif 000028
【図１４】
2014513883.tif 000029
【国際調査報告】
2014513883.tif 000030
2014513883.tif 000031