特許第6122782号(P6122782)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本テキサス・インスツルメンツ株式会社の特許一覧
特許6122782ビデオ符号化のためのキャッシュ方法およびシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6122782
(24)【登録日】2017年4月7日
(45)【発行日】2017年4月26日
(54)【発明の名称】ビデオ符号化のためのキャッシュ方法およびシステム
(51)【国際特許分類】
   H04N 19/433 20140101AFI20170417BHJP
【FI】
   H04N19/433
【請求項の数】19
【全頁数】30
(21)【出願番号】特願2013-557813(P2013-557813)
(86)(22)【出願日】2012年3月7日
(65)【公表番号】特表2014-513883(P2014-513883A)
(43)【公表日】2014年6月5日
(86)【国際出願番号】US2012027961
(87)【国際公開番号】WO2012122209
(87)【国際公開日】20120913
【審査請求日】2015年3月5日
(31)【優先権主張番号】13/042,449
(32)【優先日】2011年3月7日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390020248
【氏名又は名称】日本テキサス・インスツルメンツ株式会社
(73)【特許権者】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【上記1名の代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】マドゥカル ブダガヴィ
【審査官】 岩井 健二
(56)【参考文献】
【文献】 特開2010−146205(JP,A)
【文献】 特開2009−087139(JP,A)
【文献】 特開2008−278423(JP,A)
【文献】 特開2008−033688(JP,A)
【文献】 特開平09−101915(JP,A)
【文献】 特開平09−050399(JP,A)
【文献】 特開平05−053909(JP,A)
【文献】 国際公開第2008/029550(WO,A1)
【文献】 国際公開第2004/017640(WO,A1)
【文献】 米国特許出願公開第2008/0292276(US,A1)
【文献】 米国特許出願公開第2007/0176939(US,A1)
【文献】 米国特許出願公開第2007/0008323(US,A1)
【文献】 Madhukar Budagavi,A simple model for measuring motion compensation bandwidth,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,3rd Meeting: Guangzhou, CN,2010年10月,JCTVC-C228,pp.1-2
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 − 19/98
(57)【特許請求の範囲】
【請求項1】
参照データキャッシュ内に参照データをキャッシュする方法であって、
前記参照データキャッシュ内の参照データブロックのアドレスを受け取ることであって、前記アドレスが、ピクセルの参照ブロック内の前記参照データブロックのx座標およびy座標と、複数のピクセルの参照ブロックのどのピクセルの参照ブロックが前記参照データブロックを含むかを特定する参照フレーム識別子とを含む、前記アドレスを受け取ることと、
前記x座標からの所定数のビットと前記y座標からの所定数のビットとを用いて、前記参照データキャッシュ内の一組のキャッシュラインのインデックスを計算することと、
前記参照データブロックが前記一組のキャッシュライン内にあるか否かを決定するために、前記インデックスと、前記参照フレーム識別子を含むタグとを用いることと、
前記参照データブロックが前記一組のキャッシュライン内にない場合に、参照データストレージから参照データブロックを取り出すことと、
を含む、方法。
【請求項2】
請求項1に記載の方法であって、
前記インデックスを計算することが、現在のピクセルのブロックが双方向に予測される場合に、予測方向に基づいて前記インデックスを調整することを更に含む、方法。
【請求項3】
請求項1に記載の方法であって、
前記参照データキャッシュが、直近で発生されたピクセルの参照ブロックからの参照データブロックのみを記憶するように構成される、方法。
【請求項4】
請求項1に記載の方法であって、
前記参照データブロックを取り出すことが、前記アドレスを前記参照データストレージ内のアドレスに変換することを更に含む、方法。
【請求項5】
請求項1に記載の方法であって、
前記参照データキャッシュが、前記一組のキャッシュラインを含む水平方向キャッシュと垂直方向キャッシュとを含み、前記参照データブロックを取り出すことが、前記参照データブロックが前記一組のキャッシュライン内になく、かつ前記垂直方向キャッシュ内にない場合に、前記参照データストレージから前記参照データブロックを取り出すことを含む、方法。
【請求項6】
請求項5に記載の方法であって、
前記参照データブロックが前記垂直方向キャッシュ内にあるか否かを決定するために、前記x座標と前記y座標とを用いることを更に含む、方法。
【請求項7】
請求項5に記載の方法であって、
前記水平方向キャッシュと前記垂直方向キャッシュとが、直近で発生されたピクセルの参照ブロックからの参照データブロックのみを格納するように構成される、方法。
【請求項8】
ディジタルシステムであって、
複数のピクセルの参照ブロックを格納するよう構成される参照データストレージ部と、
前記参照データストレージ部に結合され、前記複数のピクセルの参照ブロックの少なくとも1つからの参照データブロックを格納し、x座標からの所定数のビットとy座標からの所定数のビットとを用いて前記参照データキャッシュ内の一組のキャッシュラインのインデックスを計算し、参照データブロックが前記一組のキャッシュライン内にあるか否かを決定するために前記インデックスと参照フレーム識別子を含むタグとを用い、前記参照データブロックが前記一組のキャッシュライン内にない場合に前記参照データストレージ部から前記参照データブロックを取り出すように構成される参照データキャッシュ部であって、前記参照データブロックが当該参照データブロックを識別するタイル状のアドレッシングスキームを用いてアクセスされ、前記参照フレーム識別子が、前記複数のピクセルの参照ブロックのどのピクセルの参照ブロックが前記参照データブロックを含むかを特定する、前記参照データキャッシュ部と、
前記参照データキャッシュ部に結合され、前記タイル状のアドレッシングスキームを用いて前記参照データキャッシュ部からの前記参照データブロックを要求するように構成される動き補償部と、
を含み、
前記タイル状のアドレッシングスキームが、前記ピクセルの参照ブロック内の前記参照データブロックのx座標およびy座標と前記参照フレーム識別子とを用いて、前記参照データブロックをアドレスすることを含む、ディジタルシステム。
【請求項9】
請求項8に記載のディジタルシステムであって、
前記参照データキャッシュ部が、前記複数のピクセルの参照ブロックのうちの直近で発生されたピクセルの参照ブロックからの参照データブロックのみを格納するように構成される、ディジタルシステム。
【請求項10】
請求項8に記載のディジタルシステムであって、
前記参照データキャッシュ部に結合され、前記タイル状のアドレッシングスキームを用いて前記参照データキャッシュ部からの前記参照データブロックを要求するように構成される動き予測部を更に含む、ディジタルシステム。
【請求項11】
請求項に記載のディジタルシステムであって、
前記参照データキャッシュ部が、現在のピクセルのブロックが双方向に予測される場合に、予測方向に基づいて前記インデックスを調整するように更に構成される、ディジタルシステム。
【請求項12】
請求項に記載のディジタルシステムであって、
前記参照データキャッシュ部が、前記一組のキャッシュラインを含む水平方向キャッシュと垂直方向キャッシュとを含み、前記参照データキャッシュ部が、前記参照データブロックが前記一組のキャッシュライン内になく、かつ前記垂直方向キャッシュ内にない場合に、前記参照データストレージから前記参照データブロックを取り出すように構成される、ディジタルシステム。
【請求項13】
請求項12に記載のディジタルシステムであって、
前記参照データキャッシュ部が、前記参照データブロックが前記垂直方向キャッシュ内にあるか否かを決定するために、前記x座標と前記y座標とを使用するように構成される、ディジタルシステム。
【請求項14】
請求項12に記載のディジタルシステムであって、
前記水平方向キャッシュと前記垂直方向キャッシュとが、直近で発生されたピクセルの参照ブロックからの参照データブロックのみを格納するように構成される、ディジタルシステム。
【請求項15】
参照データキャッシュ内に参照データをキャッシュする方法であって、
前記参照データキャッシュ内の参照データブロックのアドレスを受け取ることであって、前記アドレスが、ピクセルの参照ブロック内の参照データブロックのx座標およびy座標と、複数のピクセルの参照ブロックのどのピクセルの参照ブロックが前記参照データブロックを含むかを特定する参照フレーム識別子とを含む、前記アドレスを受け取ることと、
前記参照フレーム識別子が直近で発生されたピクセルの参照ブロックを識別しない場合に、参照データストレージから参照データブロックを取り出すことと、
前記参照フレーム識別子が直近で発生されたピクセルの参照ブロックを識別する場合に、前記参照データブロックが前記参照データキャッシュ内の一組のキャッシュライン内にあるか否かを決定するために、インデックスと前記参照フレーム識別子を含むタグとを用いることであって、前記インデックスが前記x座標からの所定数のビットと前記y座標からの所定数のビットとを用いて計算される、前記インデックスと前記タグとを用いることと、
前記参照データブロックが前記一組のキャッシュライン内にない場合に、前記参照データストレージから前記参照データブロックを取り出すことと、
を含む、方法。
【請求項16】
請求項15に記載の方法であって、
現在のピクセルのブロックが双方向に予測される場合に、前記インデックスが予測方向に基づいて調整される、方法。
【請求項17】
請求項15に記載の方法であって、
前記参照データキャッシュが、前記一組のキャッシュラインを含む水平方向キャッシュと垂直方向キャッシュとを含み、
前記参照データブロックを取り出すことが、前記参照データブロックが前記一組のキャッシュライン内になく、かつ前記垂直方向キャッシュ内にない場合に、前記参照データストレージから前記参照データブロックを取り出すことを含む、方法。
【請求項18】
請求項17に記載の方法であって、
前記参照データブロックが前記垂直方向キャッシュ内にあるか否かを決定するために前記x座標と前記y座標とを用いることを更に含む、方法。
【請求項19】
請求項17に記載の方法であって、
前記垂直方向キャッシュが、参照データブロックを格納する循環バッファを含む、方法。
【発明の詳細な説明】
【背景技術】
【0001】
ディジタルビデオ製品に対する需要は増え続けている。ディジタルビデオのアプリケーションのいくつかの例は、ビデオ通信、セキュリティおよび監視、工業オートメーション、およびエンターテイメント(例えば、DV、HDTV、衛星テレビ、セットトップボックス、インターネットビデオストリーミング、ディジタルカメラ、携帯電話、ビデオジュークボックス、ハイエンドディスプレイ、およびパーソナルビデオレコーダ)を含む。さらに、ビデオアプリケーションは、ハンドセットのより高度な計算能力、バッテリー技術の進歩、および高速ワイヤレス接続の結果、ますますモバイルになっている。
【0002】
ビデオ圧縮は、ディジタルビデオ製品には必須の成功要因である。しかしながら、ビデオ圧縮の実行は、許容可能な性能のために相当量の計算や外部メモリバンド幅(badwidth)を必要とすることがある。外部メモリバンド幅の要求は、特に埋め込みシステムにおける高品位ビデオ符号化および復号化の性能の障害となり得る。多くの現在のビデオ圧縮の標準に不可欠な動き予測および動き補償は、外部メモリに記憶された参照フレームへの、繰り返され且つランダムなアクセスにより、外部メモリバンド幅を非常に要求する。従って、動き予測および動き補償のための外部メモリバンド幅の要求を減らす技術が必要とされる。
【図面の簡単な説明】
【0003】
実施例が添付の図面を参照して説明される。
【0004】
図1図1は、例示的なディジタルシステムのブロック図である。
【0005】
図2図2は、例示的なビデオエンコーダのブロック図である。
【0006】
図3図3は、例示的なビデオデコーダのブロック図である。
【0007】
図4図4は、例示的なタイル状のアドレッシングスキームの一例を示す。
【0008】
図5図5は、例示的な参照データキャッシュ部のブロック図である。
図6図6は、例示的な参照データキャッシュ部のブロック図である。
【0009】
図7図7は、実験結果の表である。
図8A図8Aは、実験結果の表である。
図8B図8Bは、実験結果の表である。
【0010】
図9A図9Aは、例示的な移動符号化ブロックウィンドウ(moving coding block window)を表す。
図9B図9Bは、例示的な移動符号化ブロックウィンドウを表す。
【0011】
図10A図10Aは、例示的な垂直方向の参照データキャッシュのブロック図である。
図10B図10Bは、例示的な垂直方向の参照データキャッシュのブロック図である。
図10C図10Cは、例示的な垂直方向の参照データキャッシュのブロック図である。
図10D図10Dは、例示的な垂直方向の参照データキャッシュのブロック図である。
【0012】
図11図11は、例示的な方法のフローチャートである。
図12A図12Aは、例示的な方法のフローチャートである。
図12B図12Bは、例示的な方法のフローチャートである。
【0013】
図13図13は、例示的なディジタルシステムを表す。
図14図14は、例示的なディジタルシステムを表す。
図15図15は、例示的なディジタルシステムを表す。
【発明を実施するための形態】
【0014】
概して、例示的な実施例は、動き予測および/または動き補償の間に参照フレームデータをキャッシュすることにより、ビデオシーケンスの符号化および/または復号化の間の外部メモリバンド幅の減少を提供する。いくつかの実施例では、水平方向のキャッシュが参照フレームデータをキャッシュするために提供され、また、いくつかの実施例では、水平および垂直方向のキャッシュの双方が提供される。いくつかの実施例では、時間的に直近の参照フレームからの参照フレームデータが、例えばH.264のref_idx=0のためにキャッシュされ、時間的により古い参照フレームからの参照フレームデータはキャッシュされない。いくつかの例では、参照フレームデータの要求されたブロックのx座標およびy座標に基づく新たなインデックススキームが用いられる。すなわち、参照フレームの要求されたブロックのx座標およびy座標からのビットが、キャッシュへのインデックスを計算するために用いられる。さらに、インデックススキームは、フレームの符号化タイプに応じて、すなわち、フレームがPフレーム(前のフレームから予測されたフレーム)であるか、Bフレーム(過去および将来の双方のフレームから予測されたフレーム)であるかに応じて、各々のフレームに適応され得る。
【0015】
例えば、いくつかの実施例では、参照フレームの要求されたブロックのx座標およびy座標からのビットが、双方向アソシアティブキャッシュへのインデックスを計算するために用いられる。この新しいインデックススキームは、要求されたブロックのLSBアドレスを使用する従来型のキャッシュインデックススキームと比較すると、例えば幅が1024のフレームのような、大きな2のべき乗である幅を有するフレームのためのキャッシュスラッシングを減少させることがシミュレーションで示されている。さらに、いくつかの実施例では、双方向アソシアティブキャッシュのためのインデックス計算がフレームの符号化のタイプに応じて適合される。加えて、いくつかの実施例では、参照フレームの要求されたブロックのx座標およびy座標からのビットが、1方向アソシアティブキャッシュへの、すなわちダイレクトマップ方式のキャッシュへの、インデックスを計算するために用いられる。さらに、いくつかの実施例では、1方向アソシアティブキャッシュのためのインデックス計算がフレームの符号化のタイプに応じて適合される。
【0016】
図1は、あるディジタルシステムの例示的な実施例を表す。このシステムは、符号化されたビデオシーケンスを通信チャネル116を介して送り先のディジタルシステム102へ伝送するソースディジタルシステム100を含む。ソースディジタルシステム100は、ビデオキャプチャ部104と、ビデオエンコーダ部106と、伝送部108とを含む。ビデオキャプチャ部104は、ビデオエンコーダ部106によって符号化されるべきビデオシーケンスを提供するよう構成される。ビデオキャプチャ部104は、例えば、ビデオカメラ、ビデオアーカイブ、もしくはビデオコンテンツプロバイダから提供されるビデオであり得る。いくつかの実施例では、ビデオキャプチャ部104は、ビデオシーケンスとして、もしくはライブビデオとコンピュータ処理のビデオとの合成として、コンピュータグラフィクスを生成し得る。
【0017】
ビデオエンコーダ部106は、ビデオキャプチャ部104からビデオシーケンスを受け取り、伝送部108による送信のためにそれを符号化する。概して、ビデオエンコーダ部106は、フレームのシーケンスとして、ビデオキャプチャ部104からビデオシーケンスを受け取り、フレームを全フレームもしくはフレームの一部であり得る符号化単位に分割し、符号化単位をピクセルのブロックに分割し、かつこれらのブロックに基づいて符号化単位のビデオデータを符号化する。いくつかの実施例では、ビデオエンコーダ部106は、本明細書で述べられるような参照フレームデータのキャッシュを行うよう構成される。ビデオエンコーダ部106の一つもしくは複数の実施例の機能は、図2を参照して以下でより詳細に説明される。
【0018】
伝送部108は、符号化されたビデオデータを通信チャネル116を介して送り先のディジタルシステム102に送る。通信チャネル116は、任意の通信媒体もしくは符号化されたビデオシーケンスの伝送に適した通信媒体の組み合わせであり得、例えば、有線/無線通信媒体、ローカルエリアネットワーク、もしくは有線エリアネットワーク等である。
【0019】
伝送先のディジタルシステム102は、受信器部110と、ビデオデコーダ部112と、表示部114とを含む。受信器部110は、符号化されたビデオデータをソースディジタルシステム100から通信チャネル116を介して受け取り、符号化されたビデオデータを復号化のためにビデオデコーダ部112へ提供する。概して、ビデオデコーダ部112は、ビデオシーケンスのフレームを再構築するために、ビデオエンコーダ部106によって実行される符号化プロセスを反転する。いくつかの実施例では、ビデオデコーダ部112は、本明細書で述べられるような参照フレームデータのキャッシュを実行するよう構成される。ビデオデコーダ部112の一つもしくは複数の実施例の機能は、図3を参照して以下でより詳細に説明される。
【0020】
再構築されたビデオシーケンスは、次いで、表示部114で表示され得る。表示部114は、例えばプラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ等のような任意の適切なディスプレイ装置であり得る。
【0021】
いくつかの実施例では、ソースディジタルシステム100は受信器部をも含み得、また、ビデオデコーダ部および/もしくは送り先のディジタルシステム102は、ビデオストリーミング、ビデオ放送、およびビデオ電話のための双方向のビデオシーケンスの伝送のための伝送部およびビデオエンコーダ部を含む。さらに、ビデオエンコーダ部は、ビデオシーケンスを符号化するときに、本明細書で述べられるような参照フレームデータキャッシュを実行し得、他方で、符号化されたビデオシーケンスを受け取るビデオデコーダ部は、本明細書で述べられるような参照フレームデータキャッシュを実行せず、逆の場合もまた同じである。さらに、ビデオエンコーダ部と、ビデオエンコーダ部によって符号化されたビデオシーケンスを受け取るビデオデコーダ部とは、双方が同じ方法で参照データキャッシュを実行しないようにしてもよい。例えば、ビデオエンコーダ部は、本明細書で述べられる一つもしくは複数の実施例における双方向アソシアティブ参照データキャッシュを実行し得、他方で、受信側のビデオデコーダ部は、本明細書で述べられる一つもしくは複数の実施例に従った1方向のアソシアティブ参照データキャッシュを実行し得る。
【0022】
ビデオエンコーダ部106およびビデオデコーダ部112は、一つもしくは複数のビデオ圧縮規格に従って符号化および復号化を実行し得る。その規格とは、例えば、MPEG‐1、MPEG‐2やMPEG‐4といったムービング・ピクチャー・エキスパーツ・グループ(MPEG)のビデオ圧縮規格や、H.263やH.264などのITU‐Tビデオ圧縮規格、米国映画テレビ技術者協会(SMPTE)の421MビデオCODEC規格(通称、“VC‐1”と呼ばれる)、中国のオーディオビデオコーディング規格ワークグループ(通称、“AVS”と呼ばれる)により定義されるビデオ圧縮規格等である。ビデオエンコーダ部106およびビデオデコーダ部112は、ソフトウェア、ファームウェア、ハードウェアの適切な組み合わせで実装され得、例えば、一つもしくは複数のディジタル信号プロセッサ(DSP)、マイクロプロセッサ、ディスクリートロジック、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等である。
【0023】
図2は、一つもしくは複数の実施例による、例えば図1のビデオエンコーダ106のようなビデオエンコーダを示す。図2のビデオエンコーダでは、符号化のための入力フレーム200が例えばマクロブロックのような符号化ブロックに分割され、当該符号化ブロックは動き予測部220の一つの入力として、イントラ予測部224の一つの入力として、結合器202(例えば、加算器や減算器のようなものである)の正入力へ提供される。さらに、特に図示しないが、各々の入力フレームのための予測モード、すなわちインター予測またはイントラ予測、が選択されて、モード選択部およびエントロピーエンコーダ234へ提供される。
【0024】
フレーム記憶部240は、埋め込まれたデコーダにより発生された参照フレームデータを記憶する。参照フレームデータは、一つもしくは複数の前に符号化および復号化された符号化ブロックを、すなわち再構築された符号化ブロックを含み得る。さらに、参照フレームデータが、複数の前に符号化されたフレームのために記憶され得る。具体的には、いくつかのビデオ圧縮規格では、複数の参照フレームがフレーム記憶部240に記憶され得、かつ動き予測および動き補償に用いられ得る。例えば、H.264は、動き予測および動き補償のために最大16個の参照フレームの使用を可能にする。いくつかの実施例では、フレーム記憶部240は、外部メモリ、すなわちオフチップメモリである。さらに、一つもしくは複数の実施例では、フレーム記憶部240はタイル状のメモリであり、すなわち、タイル状のアドレッシングスキームを用いてアクセスされる。任意の適切なタイル状のアドレッシングスキームが、フレーム記憶部240に用いられ得る。
【0025】
参照データキャッシュ部218は、フレーム記憶部240と、動き予測部220と、動き補償部222との間にキャッシュメモリを提供する。具体的には、動き予測部220または動き補償部222が参照フレームデータを必要とするときに、参照データキャッシュ部218は、参照データキャッシュ部218に含まれるキャッシュメモリから、もしくは、要求された参照フレームがキャッシュメモリに記憶されていない場合フレーム記憶部240から、必要とされる参照フレームデータを要求する部に提供する。参照データキャッシュ部218の一つもしくは複数の実施例の機能は、図4ないし図15を参照して以下でより詳細に説明される。
【0026】
動き予測部220は、動き予測情報を、動き補償部222およびエントロピーエンコーダ234へ提供する。具体的には、動き予測部220は、符号化コストに基づき最適な動きベクトル/予測モードを選択するために、参照フレームデータを用いて複数の一時的な予測モードに基づく符号化ブロックのテストを実行する。予測モードをテストするために、動き予測部220は、符号化ブロックを、予測モードのブロックサイズに応じた予測ブロックに分割し得る。動き予測部220は、選択された一つまたは複数の動きベクトル(MV)と選択された予測モードとを動き補償部222へ提供し、かつ選択された動きベクトル(MV)をエントロピーエンコーダ234へ提供する。動き補償部222は、動き補償されたインター予測ブロックと選択された一時的な予測モードとを含む動き補償されたインター予測情報を選択スイッチ226へ提供する。インター予測ブロックの符号化コストはモード選択部にも提供される。
【0027】
イントラ予測部224は、イントラ予測ブロックと対応する空間予測モードとを含むイントラ予測情報を選択スイッチ226に提供する。すなわち、イントラ予測部224は空間予測を実行し、そこでは、符号化コストに基づくイントラ予測ブロックを発生させるための最適な空間予測モードを選択するために、バッファ228からのフレームの、前に符号化された隣接するブロックを用いて、複数の空間予測モードに基づくテストが符号化ブロック上で実行される。空間予測モードをテストするために、イントラ予測部224は、符号化ブロックを、予測モードのブロックサイズに応じた予測ブロックへ分割し得る。具体的に示されないが、イントラ予測ブロックの符号化コストはモード選択部にも提供される。
【0028】
選択スイッチ226は、ブロック間の差分距離と、モード選択部により提供されたフレーム予測モードとに基づいて、動き補償部222からの動き補償されたインター予測ブロックか、イントラ予測部224からのイントラ予測ブロックかを選択する。選択スイッチ226の出力は、すなわち、予測された予測ブロックは、結合器202の負入力と遅延部230とに提供される。遅延部230の出力は、もう一つの結合器(すなわち、加算器)238に提供される。結合器202は、現在の符号化ブロックの現在の予測ブロックから予測された予測ブロックを減算し、残差予測ブロックを変換部204へ提供する。結果として生じる残差予測ブロックは、元の予測ブロックと予測された予測ブロックとのピクセル値の差を量子化する一組のピクセルの差分値である。
【0029】
変換部204は、残差予測値を変換係数へ変換するために、例えば離散コサイン変換により、残差予測ブロックのブロック変換を実行し、変換係数を出力する。変換部204からの変換係数は、量子化された変換係数を出力する量子化部206へ提供される。ブロック変換が残差信号のエネルギーを周波数領域へ再分配するので、量子化された変換係数はスキャン部208によりラスタースキャンの順序で取り出され、そして例えば、より重要度の高い係数から始まり、より重要度の低い係数が後に続くように、重要度により配列される。ヘッダ情報とともにスキャン部208を介して提供された、順序付けされた量子化変換係数は、エントロピーエンコーダ234によって符号化され、エントロピーエンコーダ234は、伝送または記憶用の圧縮されたビットストリーム236を提供する。エントロピーエンコーダ234により実行されるエントロピー符号化は、例えば、コンテキスト適応型可変長符号化(CAVLC)、コンテキスト適応型二値算術符号化(CABAC)、ランレングス符号化等のような任意の適切なエントロピー符号化技術であり得る。
【0030】
どのエンコーダの内部にも、内蔵されたデコーダがある。いずれの準拠するデコーダも圧縮されたビットストリームからイメージを再構築するよう期待されるので、内蔵されたデコーダは、同じユーティリティをビデオエンコーダに提供する。再構築された入力の認識は、ビデオエンコーダに、後に続くフレームを構成するよう適切な残差エネルギーを伝送させる。再構築された入力、すなわち参照フレームデータ、を決定するために、スキャン部208を介して提供された、順序付けされた量子化変換係数は、逆スキャン部210によってそれらの元の変換後の配列に戻される。逆スキャン部210の出力は逆量子化部212に提供され、逆量子化部212は、予測された変換情報を出力し、すなわち変換部204からの変換結果の予測された、もしくは再構築されたバージョンを出力する。予測された変換情報は逆変換部214へ提供され、逆変換部214は、残差予測ブロックの再構築されたバージョンを表す、予測された残差情報を出力する。再構築された残差予測ブロックは、結合器238へ提供される。
【0031】
結合器238は、フィルタされない再構築された予測ブロックを発生させるために、遅延された選択予測ブロックを再構築された残差予測ブロックに加算し、これは、再構築されたフレーム情報の一部となる。再構築されたフレーム情報は、バッファ228を介してイントラ予測部224へ、かつフィルタ部216へ提供される。フィルタ部216は、再構築されたフレーム情報をフィルタし、フィルタされた再構築された符号化ブロックを、すなわち参照フレームデータをフレーム記憶部240へ提供するインループフィルタである。
【0032】
図3は、一つもしくは複数の実施例による、例えばビデオデコーダ112といったビデオデコーダのブロック図を示す。図3のビデオデコーダでは、エントロピー復号化部300はエントロピー符号化されたビデオビットストリームを受け取り、符号化された符号化ブロックを回復するためにエントロピー符号化を反転する。エントロピー復号化部300により実行されるエントロピー復号化は、例えば、コンテキスト適応型可変長複号化(CAVLC)、コンテキスト適応型二値算術復号化(CABAC)、ランレングス復号化等のような、一つもしくは複数の適切なエントロピー復号化技術を実行する機能を含み得る。
【0033】
逆スキャンおよび逆量子化部302は、ラスタースキャン順のビデオビットストリームの符号化ブロックを組立て、かつ、元の周波数領域データ、逆量子化された残差係数を実質的に回復する。逆変換部304は、逆スキャンおよび逆量子化部302からの周波数領域データを元の残差予測ブロックへ変換する。すなわち、逆変換部304は、残差予測ブロックを生成するために、逆ブロック変換を、言い換えると、符号化に用いられるブロック変換とは逆のものを、逆量子化された残差係数に適用する。
【0034】
この残差予測ブロックは、加算部306の一つの入力を供給する。加算部306のもう一つの入力は、モードスイッチ308から来る。インター予測モードが符号化されたビデオストリームで伝えられるとき、モードスイッチ308は動き補償部310からの予測ブロックを選択し、イントラ予測部が伝えられるときは、モードスイッチはイントラ予測部314からの予測ブロックを選択する。動き補償部310は参照データキャッシュ318から参照フレームデータを受け取り、予測ブロックを生成するために、エンコーダによって計算され、かつ符号化されたビデオビットストリームで伝送された動き補償を参照フレームデータに適用する。
【0035】
参照データキャッシュ部318は、フレーム記憶部312と動き補償部310との間にキャッシュメモリを提供する。具体的には、動き補償部310が参照フレームデータを必要とするとき、参照データキャッシュ部318は、必要とされる参照フレームデータを動き補償部310へ、参照データキャッシュ部318に含まれるキャッシュメモリから、もしくは、必要とされる参照フレームデータがキャッシュメモリに記憶されない場合フレーム記憶部から提供する。参照データキャッシュ部318の一つもしくは複数の実施例の機能は、図4ないし図15を参照して以下でより詳細に説明される。
【0036】
イントラ予測部314は、現在のフレームから前に復号化された予測ブロックを受け取り、予測ブロックを生成するために、符号化されたビデオビットストリームで伝送された空間予測モードにより伝えられたとき、エンコーダにより計算されたイントラ予測を、前に復号化された予測ブロックに適用する。
【0037】
加算部306は、選択された予測ブロックと残差予測ブロックとを加算することによって、予測された予測ブロックを回復、すなわち復号化された予測ブロックを生成する。加算部306の出力はインループフィルタ部316の入力を供給する。インループフィルタ部316は、復号化されたフレームの視覚的な品質を改善するために、符号化プロセスのブロックの性質により生成されるアーチファクトを平滑化する。インループフィルタ部316の出力は、ビデオビットストリームの復号化されたフレームである。
【0038】
各々の復号化された予測ブロックは、参照フレームデータとして用いられるためにフレーム記憶部312に記憶される。さらに、参照フレームデータが、複数の前に復号化されたフレームのために記憶され得る。具体的には、いくつかのビデオ圧縮規格では、複数の参照フレームがフレーム記憶部312に記憶され得、かつ動き補償に用いられ得る。例えば、H.264は、PフレームとBフレームとの双方についての動き補償のために複数の参照フレームの使用を可能にする。いくつかの実施例では、フレーム記憶部312は外部メモリ、すなわちオフチップメモリである。さらに、一つもしくは複数の実施例では、フレーム記憶部312はタイル状のメモリであり、すなわちタイル状のアドレッシングスキームを用いてアクセスされる。
【0039】
参照データキャッシュ部218、318の一つもしくは複数の実施例の機能と、動き予測部220、動き補償部218、318およびフレーム記憶部240、312の相互作用とが、ここで図4ないし図15を参照して説明される。一つもしくは複数の実施例では、動き予測部220および動き補償部222、310は、現在のフレームについて、すなわち符号化あるいは復号化されるフレームについて、それぞれの参照フレームデータキャッシュ部218、318からの参照フレームデータを要求するために、タイル状アドレッシングスキームを使用する。さらに、それぞれの参照フレームキャッシュ部218、318は、参照フレームデータのキャッシュを、符号化もしくは復号化される現在のフレームに提供する。すなわち、フレームの符号化もしくは復号化が完了した後、参照データキャッシュ部218、318のキャッシュラインは、次のフレームを符号化もしくは復号化する前に無効にされる。
【0040】
タイル状のアドレッシングスキームでは、参照フレームが参照データブロックに分割されるとみなされ、各々の参照データブロックは、参照フレームの上左隅に対する参照フレームのブロックのx座標xaddrおよびy座標yaddrを特定することにより要求され得る。参照データブロックのサイズは設計上の選択事項である。図4は、参照データブロックサイズが4×4である、16×16の参照フレームのためのタイル状のアドレッシングスキームの簡単な一例を示す。参照フレームの上左隅が、xaddr=0、yaddr=0とみなされる。従って、ブロックAはxaddr=0、yaddr=0にあり、ブロックBはxaddr=1、yaddr=0にある。さらに、ブロックJはxaddr=1、yaddr=2にある。概して、参照データブロックの座標は、参照データブロックの上左隅の参照フレームのピクセル座標を、参照データブロックの幅および高さのそれぞれで除算することにより決定され得る。例えば、図4では、ブロックGのピクセル座標はx=8およびy=4である。それゆえ、タイル状のアドレッシングスキームにおけるブロックGの座標は、xaddr=8/4=2であり、かつyaddr=4/4=1となるであろう。
【0041】
複数の参照フレームを用いて動き予測および動き補償をサポートするビデオエンコーダおよびビデオデコーダの実施例では、要求する部は、複数の参照フレームのうちのどれから参照フレームデータのブロックを読み込むかを特定する参照フレーム識別子を提供する。用いられる参照フレーム識別スキームは、任意の適切なスキームであり得、かつエンコーダ/デコーダによってサポートされる圧縮規格に基づき得る。例えば、H.264では、各々の参照フレームが参照フレームインデックスにより識別され、最大16の参照フレームがあり得る。それゆえ、H.264では、参照フレームインデックスは、0から15までの範囲であり得る。符号化されているフレームに時間的に最も近い参照フレームは、典型的に0の参照インデックスを有し、参照インデックスは、典型的に参照フレームの時間的距離に従って1つずつ増加される。新しい参照フレームが記憶されるたびに、当該新しい参照フレームは典型的に0の参照インデックスを与えられ、時間的により古い参照フレームの参照インデックスは、それぞれが一つ増加される。双方向の予測ピクチャには、順方向および逆方向のそれぞれで予測に用いられる参照インデックスのリストを記憶するために、H.264においてRefPicList0およびRefPicList1と呼ばれる、2つの参照ピクチャリストがあり得る。
【0042】
説明の簡潔さのために、識別子としての参照フレームインデックスと4×4(16ピクセル)の参照データブロックサイズとを備えた16の参照フレームのサポートが、実施例のさらなる説明において前提とされる。当業者は、複数の参照フレームがサポートされない実施例や、サポートされる参照フレームの数が異なる実施例や、1つ又は2つの参照ピクチャリストが用いられる実施例、および/もしくは他の参照データブロックサイズが用いられる実施例を理解するであろう。
【0043】
一つもしくは複数の実施例では、参照フレーム識別子と、xaddrと、yaddrとが、参照データキャッシュ部218、318のための参照データブロックのアドレスを形成する。アドレスのビット数は、ビデオエンコーダもしくはビデオデコーダによってサポートされる最大フレームサイズと、参照データブロックのサイズと、参照フレーム識別子に必要とされるビット数とに依存する。例えば、サポートされる最大フレームサイズが1920×1080であり、16の参照フレームが許容され、9ビットがxaddrに必要とされ、8ビットがyaddrに必要とされ、かつ4ビットが参照フレームインデックスに必要とされる場合、21ビットのアドレスとなる。
【0044】
一つもしくは複数の実施例では、参照データキャッシュ部218、318は、データストレージ(記憶)と、タグストレージ(記憶)と、有効ビットストレージ(記憶)とを含む、アソシアティブ(連想)キャッシュである。参照データキャッシュ部218、318の連想は設計上の選択事項である。すなわち、キャッシュの複雑性とメモリバンド幅の減少のトレードオフであり得る。例えば、フルアソシアティブの16KBのキャッシュの使用は、フレーム記憶240、312のダイレクトアクセスでメモリバンド幅の約40〜50%の減少を提供し得るが、1024のコンパレータを必要とする。反対に、双方向アソシアティブの16KBのキャッシュの使用は、1024ではなく2つのコンパレータを必要とし、本明細書でより詳細に示されるように、メモリバンド幅において十分に匹敵される減少を提供し得る。アソシアティブキャッシュの通常動作はこの分野においてよく理解されており、それゆれここでは詳細に説明しない。
【0045】
参照データキャッシュ部218、318のデータストレージ、タグストレージ、および有効ビットストレージは、結合され得るか、もしくは別々であり得る。データストレージのメモリ量は設計上の選択事項である。データストレージのメモリは、複数のキャッシュラインに分割され、各々が一つの参照データブロックを記憶するために十分なサイズである。例えば、サイズが4×4の参照データブロックのために、各キャッシュラインは16バイトを記憶するであろう。
【0046】
タグストレージは、各キャッシュラインのための一つタグをデータストレージに記憶するために十分なメモリを含み、有効ビットストレージは、データストレージ内の各キャッシュラインのための1ビットを記憶するために十分なメモリを含む。タグストレージに必要とされるメモリ量は、データストレージのサイズとキャッシュの連想とに依存する。例えば、フルアソシアティブキャッシュにとっては、タグは、参照データブロックの完全なアドレスであり、16バイトのキャッシュラインを有する双方向アソシアティブの16KBのキャッシュにとっては、参照データブロックアドレスの最小有効9ビットがキャッシュへのインデックスとして利用され得、かつ残りの12ビットがタグであり、また16バイトのキャッシュラインを有する四方向アソシアティブの16KBのキャッシュにとっては、アドレスの最小有効8ビットがインデックスとして利用され得、残りの13ビットはタグであるであろう。
【0047】
図5は、一つもしくは複数の実施例による、双方向アソシアティブキャッシュとして実装される例示的な参照データキャッシュ部218、318のブロック図を示す。最大フレームサイズは1920×1080であると仮定される。それゆえ、前述の例で説明されたように、参照データブロックのアドレスは21ビットである。この例において、アドレスのビット0〜8は、参照データブロックのxaddrであり、ビット9〜16は参照データブロックのyaddrであり、かつビット17〜20は参照フレーム識別子である。データストレージは16KBである。すなわち、データストレージは、1024の16バイトのキャッシュラインに分割される。キャッシュが双方向アソシアティブなので、アドレスの最小有効9ビット、すなわちビット0〜8、がキャッシュインデックスのために用いられる。アドレスの残りの最大有効12ビットはタグを形成する。それゆえ、キャッシュへのインデックスは、addr&0x1FFと計算され得、ここでaddrとは、参照データブロックのアドレスである。
【0048】
参照データブロックアドレスの最小有効ビットをキャッシュへのインデックスとして使用することは、例えば1024といった大きな2のべき乗である幅を有するフレームに、著しいキャッシュスラッシングを引き起こし得る。スラッシングが発生し得るのは、フレーム記憶部240、312の参照データが、フレーム記憶部240、312の複数のメモリ位置に同一のキャッシュラインを競合させる、過度のキャッシュミスの原因となるパターンでアクセスされる場合である。スラッシングを減少させるために、キャッシュインデックスストラテジーがキャッシュの充填を拡張させるために用いられ得る。一つもしくは複数の実施例では、参照データブロックのアドレスの最小有効ビットをキャッシュへのインデックスとして使用するではなく、インデックスが、アドレスのx座標から選択されたビットとy座標から選択されたビットとを用いて計算される。すなわち、x座標からの所定数のビットが、インデックスを形成するために、y座標からの所定数のビットと連結される。各座標から用いられるビットの数および連結順序は経験的に決定され得、例えば、どの組み合わせが最良のパフォーマンスを提供するかを決定するために、様々なビット選択を用いてシミュレーションが実行され得る。
【0049】
図6は、一つもしくは複数の実施例によるインデックススキームを使用した例示的な参照データキャッシュ部218、318のブロック部を示す。図6のキャッシュは、インデックス計算部600が追加されていること以外は、図5のキャッシュと同一である。インデックス計算部600は、アドレス、すなわちx座標およびy座標の、最小有効17ビットを受け取り、表1の疑似コードで表されるようなキャッシュへの9ビットインデックスを計算する。この疑似コードに見られるように、9ビットインデックスは、x座標の最小有効7ビットを、y座標の最小有効2ビットに連結させることによって形成される。タグは図5のキャッシュと依然として同一であり、すなわち、アドレスの最大有効12ビットである。
【表1】
【0050】
復号化のシミュレーションは、フルアソシアティブの16KBのキャッシュと、9ビットのLSBインデックスを使用する図5の双方向アソシアティブキャッシュと、x座標およびy座標から計算されるインデックスを使用する図6の双方向アソシアティブキャッシュとを用いて実行された。用いられたビデオストリームは、sPanIceHockey_p960x960_30fps_420pl_60fr.34.264(パッド寸法は1024×1024)であった。シミュレーションは、IPPP符号化構造とIBBP符号化構造とを用いて実行された。表2はこれらのシミュレーションの結果を表す。この表が示すように、フルアソシアティブキャッシュにインデックスとしてLSBビットを使用する双方向アソシアティブキャッシュのバンド幅の増加は、インデックス計算スキームを使用した双方向アソシアティブキャッシュのそれよりも著しく大きかった。
【表2】
【0051】
Bフレームを符号化および復号化するための参照データブロックアクセスもまた、著しいキャッシュスラッシングを引き起こし得る。というのも、参照データブロックが、フレーム記憶部240、312の複数のメモリ位置に同一のキャッシュラインを競合させ、過度のキャッシュミスの原因となるパターンでアクセスされ得るためである。このようなスラッシングを減少させるために、キャッシュインデックスストラテジーが用いられ得、当該ストラテジーは、Bフレームが符号化あるいは復号化されるときに、予測方向に基づいてキャッシュインデックスを適応させることにより、キャッシュの充填を拡張させる。具体的には、キャッシュインデックスは、x座標から選択されたビットと、y座標から選択されたビットと、予測方向、すなわち前方予測もしくは後方予測、を表す値とを用いて計算される。任意の適切な値が2つの予測方向に用いられ得る。いくつかの実施例では、前方予測方向の予測方向値は0であり、後方予測方向の予測方向値は1ある。
【0052】
例えば、図6のキャッシュを仮定すれば、キャッシュインデックスは、表3の疑似コードで示されるように計算され得る。この疑似コードに示されるように、Pフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、キャッシュインデックスは、前述のようにx座標およびy座標を用いて計算される。Bフレームが符号化されていることを符号化タイプが示す場合、9ビットキャッシュインデックスは、x座標の6つの最小有効ビットを、y座標の2つの最小有効ビットに連結させることおよび予測方向値により形成される。タグは、図5のキャッシュと依然として同一であり、すなわちアドレスの最大有効12ビットである。
【表3】
【0053】
表4は、1方向アソシアティブ、すなわちダイレクトマップ方式の16KBのキャッシュを想定した、符号化タイプ適応型キャッシュのインデックス計算の別の例の疑似コードを示す。最大フレームサイズは、ここでも前述の21ビットアドレスと場合と同様に1980x1080であると仮定される。キャッシュが1方向アソシアティブであるので、10ビットインデックスが必要とされる。アドレスの最大有効11ビットはタグを形成する。この疑似コードに示されるように、Pフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、10ビットキャッシュインデックスは、x座標の最小有効5ビットとy座標の最小有効5ビットとの連結によって形成される。Bフレームが符号化されていることを符号化タイプが示す場合、10ビットキャッシュインデックスは、x座標の最小有効5ビットをy座標の最小有効4ビットに連結することおよび予測方向値によって形成される。
【表4】
【0054】
表5は、4方向の16KBのアソシアティブキャッシを仮定した、符号化タイプ適応型のキャッシュインデックス計算の別の例の疑似コードを示す。このキャッシュにとって、キャッシュインデックスは8ビットであり、タグはアドレスの最大有効13ビットである。この疑似コードに見られるように、Pフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、8ビットインデックスは、x座標の最小有効6ビットをy座標の最小有効2ビットに連結させることによって形成される。Bフレームが符号化されていることを符号化タイプが示す場合、8ビットキャッシュインデックスは、x座標の最小有効5ビットをy座標の最小有効2ビットに連結することおよび予測方向値によって形成される。
【表5】
【0055】
図7は、様々なキャッシュ構成およびインデックス計算スキームを用いて実行されるH.264の復号化シミュレーションの結果を示す。本シミュレーションでは、IBBP符号化構造が23のテストビデオシーケンスに使用された。また、予測方向につき4つの参照フレームが使用された。この表の全てのデータは、フルアソシアティブキャッシュの使用と比較して、Bフレームのために外部メモリからフェッチされた追加のデータをパーセンテージに換算したものである。2列目は、表1の疑似コードのように形成された、キャッシュインデックスを有する16KBの双方向アソシアティブキャッシュを使用した結果を示す。3列目は、表3の疑似コードのように形成された、すなわちインデックスがBフレームのための予測方向に基づいて適応されたキャッシュインデックスを有する16KBの双方向アソシアティブキャッシュを使用した結果を示す。4列目は、符号化タイプが常にPであり、すなわちフレーム符号化タイプのための適応がないことを想定した、表4の疑似コードのように形成されたキャッシュインデックスを有する16KBの1方向アソシアティブキャッシュを使用した結果を示す。5列目は、表4の疑似コードのように形成された、すなわちインデックスがBフレームのために予測方向に基づいて適応されたキャッシュインデックスを有する16KBの1方向アソシアティブキャッシュを使用した結果を示す。これらの結果から理解され得るように、符号化タイプ適応型のインデックスの使用は、非適応型インデックスを使用するよりもより良いパフォーマンスを提供した。
【0056】
一つもしくは複数の実施例では、参照データキャッシュ部218、318は、例えばH.264においてref_idx=0を有する、最も時間的に近い参照フレームから参照データブロックをキャッシュし、その他の参照フレームからは参照データブロックをキャッシュしない。具体的には、参照データブロックが、最も時間的に近い参照フレーム以外の任意の参照フレームから要求される場合、参照データキャッシュ部はキャッシュメモリをバイパスし、要求されたブロックをフレーム記憶部240、312から取り出す。このような実施例では、タグ中に参照データブロックの参照フレーム識別子を含む必要がないので、タグの記憶空間が著しく減少され得る。例えば、1920×1080の最大フレームサイズを仮定すれば、ブロックがすべての可能性のある参照フレームからキャッシュされる場合、フルアソシアティブキャッシュのためのタグは21ビットのストレージを必要とする。タグ中に参照フレーム識別子を含む必要性が取り除かれる場合、複雑さとタグ記憶領域の19%の節約となる。
【0057】
H.264では、表6に示されるように、ほとんどのテストビデオビットストリームにおいてマクロブロックの大部分がref_idx=0である。その結果、ref_idx≠0を有する参照フレームからのデータは、ref_idx≠0を有するフレームからフェッチされたデータの最小限の重複となるまばらな方法でアクセスされる。重複量が低いので、ref_idx≠0を有するフレームからキャッシュされかつリフェッチされるデータ量もまた低い。それゆえ、ref_idx≠0のみがキャッシュされる場合、全体のキャッシュパフォーマンスの著しい損失がない。
【0058】
いくつかの実施例では、ピクチャがインターレースされる場合、参照データキャッシュ部218、318は、例えばH.264においてref_idx=0,1を有する、2つの最も時間的に近い参照フィールドから参照ピクチャデータブロックをキャッシュし、他の参照フィールドからの参照データブロックをキャッシュしない。具体的には、参照データブロックが2つの最も時間的に近い参照フィールド以外の任意の参照フィールドから要求される場合、参照データキャッシュ部はキャッシュメモリをバイパスし、要求されたブロックをフレーム記憶部240、312から取り出す。このような実施例では、参照データブロックの参照フレーム識別子の1つのビットのみがタグに含まれる必要があるので、タグの記憶スペースが著しく減少され得る。
【表6】
【0059】
図8Aおよび図8Bは、すべての参照フレームからのブロックをキャッシュするもの、および、最も時間的に近い参照フレームのみからのブロックをキャッシュするもののフルアソシアティブの16KBのキャッシュを用いて実行されるH.264の復号化シミュレーションの結果を示す。本シミュレーションでは、IPPP符号化構造(図8A)およびIBBP符号化構造(図8B)が23のテストビデオシーケンスに使用された。また、予測方向につき4つの参照フレームが使用された。これらの2つの表の結果が示すように、全ての参照フレームからのキャッシュとは対照的に、最も時間的に近い参照フレームからのみのキャッシュのメモリバンド幅の平均パーセントの増加は、1%よりも低い。
【0060】
ビデオ符号化および復号化において、参照フレームデータへのアクセスには、水平方向の局所性および垂直方向の局所性の双方がある。符号化もしくは復号化は、例えばマクロブロックといった一連の符号化ブロックを介してフレーム内の列を移動するので、一つの符号化ブロックから次の符号化ブロックに使用される参照フレームデータ間には水平方向の重複がある。また、フレームの列の符号化ブロックとフレームの前後の列の符号化ブロックとの間で用いられる参照フレームデータ間にも垂直方向の重複がある。大きなキャッシュサイズは、水平方向および垂直方向の局所性の双方をキャプチャするために必要とされ、例えば、1080pビデオフレームのための現在のマクロブロックとその前後の列の3つの列の局所性をキャプチャするために必要とされ、おおよそ7列×列につき16ライン×ラインにつき1088ピクセル=119Kバイトのキャッシュのキャッシュメモリサイズが必要とされる。前述の参照フレームキャッシュの実施例が、この目的で用いられ得るが、必要とされるタグメモリの量は著しく増加する。例えば、図5に示されたキャッシュ構成では、必要とされるタグメモリの量は、タグにつき12ビット×7×1088=11.5KBである。キャッシュ制御論理(タグメモリはその一部である)は高速論理を用いて設計され得、タグサイズメモリのこの増加は非常に高価となる。それゆえ、垂直方向の局所性を利用するために適合した、最適化されたキャッシュ構造が用いられ得る。
【0061】
一つもしくは複数の実施例では、参照データキャッシュ部218、318は水平方向のキャッシュおよび垂直方向のキャッシュの双方を提供する。水平方向のキャッシュは、前述の実施例によるアソシアティブキャッシュであり得る。垂直方向のキャッシュは、参照符号化ブロックの垂直方向の列の範囲内で参照データブロックを格納する。すなわち、垂直方向のキャッシュは、現在のフレームにおいて符号化および復号化されている符号化ブロックの現在の列に対応する参照符号化ブロックの列から、参照符号化ブロックの列の前の参照符号化ブロックの一つもしくは複数の列から、および参照符号化ブロックの列の後の参照符号化ブロックの一つもしくは複数の列から、参照データブロックを格納する。垂直方向の範囲における符号化ブロックの列の数は、設計決定、パラメータ、それらの組み合わせ等であり得る。
【0062】
図12Aおよび図12Bを参照して本明細書でより詳細に説明されるように、水平方向のキャッシュから追い出された参照データブロックは、追い出されたデータブロックが垂直方向のキャッシュの現在のウィンドウ内、すなわち現在の垂直方向の範囲内にある場合、垂直方向のキャッシュに格納される。いくつかの実施例では、垂直方向のキャッシュの現在のウィンドウ内にあることに加えて、追い出された参照データブロックはまた、最も時間的に近い参照フレームからでなければならない。さらに、水平方向のキャッシュ内の要求された参照データブロックについてキャッシュミスがある場合、要求された参照データブロックについて垂直方向のキャッシュがチェックされる。垂直方向のキャッシュにもキャッシュミスがある場合、要求された参照データブロックは、フレーム記憶部240、312から取り出され、水平方向のキャッシュのキャッシュラインに格納される。いくつかの実施例では、要求された参照データブロックのアドレスは、フレーム記憶部240、312のアドレスに変換される。
【0063】
垂直方向の範囲は、垂直方向のキャッシュに格納され得る参照符号化ブロックの垂直方向に移動するウィンドウの範囲を規定する。すなわち、現在のフレームの符号化ブロックの列の符号化もしくは復号化が完了するたびに、参照符号化ブロックのウィンドウは一列下に移動される。図9Aおよび図9Bは、この垂直方向に移動するウィンドウを表す例である。これらの例では、垂直方向のキャッシュの垂直方向の範囲は参照符号化ブロックの3列であり、vCacheTopおよびvCacheBotは現在のウィンドウの頂部と底部である。現在のフレームの符号化ブロックA900(もしくは同じ列の任意の他の符号化ブロック)が符号化あるいは復号化されているとき、vCacheTopおよびvCacheBotによって規定されるウィンドウの参照データブロックは垂直方向のキャッシュに格納され得る。しかしながら、現在のフレームの符号化ブロックB902(もしくは同じ列の他の符号化ブロック)が符号化もしくは復号化されているとき、参照フレームのウィンドウは、参照フレーム内で垂直方向に下方に移動される。さらに、もはやウィンドウにない符号化ブロックの列から参照データブロックを格納するキャッシュラインは、ウィンドウが移動されたとき、無効にされる。
【0064】
垂直方向のキャッシュは、データストレージおよび有効ビットストレージを含む。データストレージおよび有効ビットストレージは、結合されても別々であっても良い。データストレージは、複数のキャッシュラインに区分され、各々が一つの参照データブロックをストアするために十分なサイズである。さらに垂直方向のキャッシュラインサイズは、水平方向のキャッシュのそれと同一のサイズである。データストレージは、所定の垂直方向の範囲内に各々の参照データブロックのためにユニークなキャッシュラインを提供するために十分なメモリを含む。有効ビットストレージは、垂直方向のキャッシュの各々のキャッシュラインのために1ビットを格納するために十分なメモリを含む。
【0065】
データストレージのメモリ量は、キャッシュの所望の垂直性、すなわち、どれだけの参照符号化ブロックの列が収容されるかということと、符号化および復号化される最大フレームのフレーム幅と、符号化ブロックのサイズと、参照データブロックのサイズとに基づく設計上の選択事項である。例えば、参照符号化ブロックが16×16であり、参照データブロックが4×4である場合、16個の16バイトのキャッシュラインが、一つの参照符号化ブロックの参照データブロックを格納するために必要とされる。最大フレーム幅が1920である場合、フレームの列には120の参照符号化ブロックがある。すなわち、1920の16バイトのキャッシュラインが、フレームの参照符号化ブロックの一つの列の参照データブロックを格納するために必要とされる。垂直方向のキャッシュの垂直方向の範囲が参照符号化ブロックの3列である場合、3×1920=5760の16バイトのキャッシュラインが垂直方向の範囲の参照データブロックを格納するために必要とされる。従って、この例にとっては、データストレージが最小90KBである必要がある。
【0066】
任意の適切な実装が垂直方向のキャッシュに用いられ得る。いくつかの実施例では、垂直方向のキャッシュは循環バッファのようなメモリバッファを実装される。図10Aないし図10Dは、一つもしくは複数の実施例による、バッファとして実装された例示的な垂直方向のキャッシュのブロック図を示す。すなわち、図10Aおよび図10Bでは、データストレージが線形バッファとして管理され、図10Cおよび図10Dでは、データストレージが循環バッファとして管理される。これらの例は、符号化ブロックが16×16のマクロブロックであり、かつ参照データブロック(タイル)が4×4であると仮定する。さらに、少なくとも12行の参照データブロック(3行のマクロブロック)を格納するために十分なサイズの垂直方向のキャッシュが仮定される。
【0067】
図10Aでは、マクロブロック行2の参照データブロックに対応する現在のフレームのデータブロックが動き補償されており、動き補償がなされているマクロブロック行に対応する参照データブロックは、マクロブロック行2の位置で垂直方向のキャッシュバッファに格納され、前のマクロブロック行に対応する参照データブロックは、マクロブロック行1の位置で垂直方向のキャッシュバッファに格納され、かつ、後のマクロブロック行に対応する参照データブロックは、マクロブロック行3の位置の垂直方向のキャッシュバッファに格納される。参照データブロックは、xTileAddrおよびyTileAddrのインデックスによってアドレスされ、ここでxTileAddr=xAddr/tileSizeかつyTileAddr=yAddr/tileSizeである。
【0068】
図10Bでは、マクロブロック行2に対応するマクロブロックの行の動き補償が完了し、それゆえ、垂直方向のキャッシュウィンドウが1行移動されて、マクロブロック行2でキャッシュされた参照データブロックがここでは前のマクロブロックであり、マクロブロック行3でキャッシュされた参照データブロックがここでは動き補償がなされるマクロブロック行に対応する参照データブロックであり、かつ動き補償中のマクロブロック行の後のマクロブロック行に対応する参照データブロックがここではマクロブロック行4の位置に格納されるようにする。前のマクロブロックが動き補償されていたときに垂直方向のキャッシュに格納された参照データブロックは、すなわち、マクロデータブロック行2およびマクロブロック行3の参照データブロックは、現在のマクロブロック行の動き補償で用いられるよう垂直方向のキャッシュに維持されることに注意されたい。
【0069】
図10Aと類似する図10Cでは、マクロブロック行2の参照データブロックに対応する現在のフレームのデータブロックが動き補償されており、かつ動き補償がなされているマクロブロック行に対応する参照データブロックが、マクロブロック行2の位置の垂直方向のキャッシュバッファに格納され、前のマクロブロックに対応する参照データブロックはマクロブロック行1の位置で垂直方向のキャッシュバッファに格納され、かつ後のマクロブロック行に対応する参照データブロックはマクロブロック行3の位置で垂直方向のキャッシュバッファに格納される。参照データブロックは、verticalCacheXaddressおよびverticalCacheYaddressのインデックスによりアドレスされ、ここで、12を法(modulo)として、verticalCacheXaddress=xTileAddr=xAddr/tileSizeおよびverticalCacheYaddress=yTileAddrであり、yTileAddr=yAddr/tileSizeである。
【0070】
図10Dでは、マクロブロック行2に対応するマクロブロックの行の動き補償が完了し、それゆえ垂直方向のキャッシュウィンドウが一列移動されて、マクロブロック行2でキャッシュされた参照データブロックがここでは前のマクロブロックであると考えられ、マクロブロック行3でキャッシュされた参照データブロックがここでは動き補償中のマクロブロック行に対応する参照データブロックであり、かつ動き補償中のマクロブロック行の後のマクロブロックに対応する参照データブロックがマクロブロック行4の位置にストアされるようにする。しかしながら、データストレージが、バッファでウィンドウを下に移動させるのではなく、循環バッファであるので、元はマクロブロック行1に配置されたスペースが、ここではマクロブロック行4のための参照データブロックを格納するために用いられる。前のマクロブロック行が動き補償されたときに垂直方向のキャッシュに格納された参照データブロック、すなわち、マクロブロック行2およびマクロブロック行3の参照データブロック、は現在のマクロブロック行の動き補償で用いられるために垂直方向のキャッシュに保つたれることに注意されたい。
【0071】
PフレームとBフレームとの双方の符号化および復号化を提供する実施例では、垂直方向のキャッシュは半分ずつ二つに分割される。一つの半分は、一つの予測方向のための参照データブロックをキャッシュするために用いられ、もう一つの半分は、もう一つの予測方向の参照データブロックをキャッシュするために用いられる。いくつかの実施例では、順方向の予測方向値は0であり、逆方向の予測方向値は1である。
【0072】
図11は一つもしくは複数の実施例による参照データをキャッシュする方法のフローチャートを示す。説明の簡潔さのために、双方向アソシアティブキャッシュが仮定される。当業者は、異なるキャッシュ連想を用いた方法の実施例を理解するであろう。まず、要求された参照データブロックの参照フレーム識別子、x座標、およびy座標が参照データキャッシュ部によって要求部から受け取られる(1100)。参照フレーム識別子、x座標およびy座標は、要求された参照データブロックのアドレスを形成する。すなわち、アドレスは、ある順序での、参照フレーム識別子、x座標およびy座標の連結である。
【0073】
参照フレーム識別子はそれゆえ、要求された参照データブロックがキャッシュ可能な参照フレームにあるか否かを決定するために用いられる(1102)。すなわち、参照データキャッシュ部は、他の参照フレームからではなく、いくつかの選択された参照フレームから参照データブロックをキャッシュし得る。いくつかの実施例では、すべての参照フレームがキャッシュ可能である。いくつかの実施例では、最も時間的に新しい参照フレームのみがキャッシュ可能である。要求された参照データブロックがキャッシュ可能な参照フレームにない場合、要求された参照データブロックはフレーム記憶部から取り出され(1104)、要求部へ戻される(1114)。いくつかの実施例では、要求された参照データブロックのアドレスが、フレーム記憶部のアドレスに変換される。
【0074】
要求された参照データブロックがキャッシュ可能な参照フレームにある場合、キャッシュインデックスは参照データブロックのアドレスから決定される(1106)。いくつかの実施例では、インデックスは、要求された参照データブロックのアドレスの最小有効ビットのいくつかの数である。いくつかの実施例では、キャッシュインデックスは、前述のようなx座標からの所定数のビットとy座標からの所定数のビットとを用いて計算される。いくつかの実施例では、キャッシュインデックスの計算は、現在のフレームが、すなわち符号化もしくは復号化されているフレームが、Bフレームであるときには、前述のように、予測方向に基づいて適応される。
【0075】
次いで、インデックスは、要求された参照データブロックがキャッシュに格納されるか否かを決定するために用いられる(1108)。具体的には、インデックス位置に対応する2つのキャッシュラインのタグが、アドレスのタグと比較される。一致しかつ一致するタグに対応する有効ビットがキャッシュラインに記憶されたデータを有効と示す場合、キャッシュヒットがある。すなわち、要求された参照データブロックが一致するタグを有するキャッシュラインに記憶されている。このキャッシュラインに格納されたデータは、その後、要求部へ戻される(1114)。
【0076】
一致がない、および/もしくは、対応する有効ビットがキャッシュラインに格納されたいずれのデータも無効であると示す場合、キャッシュミスがある。すなわち、要求された参照データブロックは、2つのキャッシュラインのどちらにも格納されていない。この場合、要求された参照データブロックがフレーム記憶部から取り出され(1110)、2つのキャッシュラインのうちの一つに格納される(1112)。いくつかの実施例では、要求された参照データブロックのアドレスはフレーム記憶部のアドレスに変換される。双方のキャッシュラインが無効である場合、取り出された参照データブロックはいずれのキャッシュラインにストアされても良い。一つのキャッシュラインが有効であり、他方のキャッシュラインが無効である場合、取り出された参照データブロックは無効なキャッシュラインに格納される。双方のキャッシュラインが有効である場合、キャッシュラインのうちの1つにあるデータは、取り出された参照データブロックのための空間を生成するために追い出される。
【0077】
データが追い出されるべきキャッシュラインの選択は、適切な追い出しのポリシー、すなわち置換ポリシーを用いてなされ得る。一つもしくは複数の実施例では、最近アクセスされていないデータを保有するキャッシュラインが選択される。取り出された参照データブロックが格納される場合、キャッシュラインを格納するタグが要求された参照データブロックのタグに設定され、かつ格納するキャッシュラインに対応する有効ビットは、キャッシュラインのデータが有効であると示すよう設定される。要求された参照データはその後、要求部に戻される(1114)。
【0078】
図12Aおよび図12Bは、一つもしくは複数の実施例による、水平方向のキャッシュおよび垂直方向のキャッシュの組合せを用いて参照データをキャッシュする方法のフローチャートを示す。説明の簡潔さのために、双方向アソシアティブキャッシュが水平方向のキャッシュのために仮定される。まず、要求された参照データブロックの参照フレーム識別子、x座標およびy座標が、要求部から参照データキャッシュ部によって受け取られる(1200)。参照フレームデータキャッシュ部は、水平方向のキャッシュと垂直方向のキャッシュとの双方を含む。参照フレーム識別子、x座標およびy座標は、要求された参照データブロックのアドレスを形成する。すなわち、アドレスはある順序での参照フレーム識別子、x座標およびy座標の結合である。
【0079】
その後、参照フレーム識別子は、要求されたデータブロックがキャッシュ可能な参照フレームにあるか否かを決定するために用いられる(1202)。すなわち、参照データキャッシュ部は、他のフレームからではなく、いくつかの選択されたフレームから参照データブロックをキャッシュし得る。いくつかの実施例では、すべての参照フレームがキャッシュ可能である。いくつかの実施例では、最も時間的に近い参照フレームのみがキャッシュ可能である。要求された参照データブロックがキャッシュ可能な参照フレームにない場合、要求された参照データブロックはフレーム記憶部から取り出され(1204)、要求部に戻される(1218)。いくつかの実施例では、要求された参照データブロックのアドレスは、フレーム記憶部のアドレスに変換される。
【0080】
要求された参照データブロックがキャッシュ可能な参照フレームにある場合、水平方向のキャッシュのためのキャッシュインデックスが参照データブロックのアドレスから決定される(1206)。いくつかの実施例では、インデックスは、水平方向のキャッシュのキャッシュラインの各々のセットためのユニークなインデックス値を形成するよう要求された参照データブロックのアドレスの最小有効ビットの十分な数である。いくつかの実施例では、キャッシュインデックスは、前述のような、x座標からの所定の数のビットとy座標からのビットの所定数とを用いて計算される。いくつかの実施例では、キャッシュインデックスの計算は、現在のフレームが、すなわち符号化もしくは復号化されているフレームがBフレームの場合には、前述のような予測方向に基づいて適応される。
【0081】
その後、インデックスは、要求された参照データブロックが水平方向のキャッシュに格納されるか否かを決定するために用いられる(1208)。具体的には、インデックス位置に対応する2つのキャッシュラインのタグがアドレスのタグと比較される。一致があり、かつ一致するタグに対応する有効ビットがキャッシュラインにストアされたデータを有効と示す場合、キャッシュヒットがある。すなわち、要求された参照データブロックは、一致するタグを有するキャッシュラインに格納されている。このキャッシュラインに格納されたデータは、その後、要求部へ戻される(1218)。
【0082】
一致がない、および/もしくは、対応する有効キャッシュがキャッシュラインに格納されたいかなるデータも無効であると示す場合、キャッシュミスがある。すなわち、要求された参照データブロックは2つのキャッシュラインのいずれにも格納されない。キャッシュミスがある場合、垂直方向のキャッシュは、要求された参照データブロックがそこで格納されているか否かを決定するためにアクセスされ得る。まず、要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能か否かの決定がなされる(1210)。要求されたデータブロックを含む参照フレームがキャッシュ可能である場合、かつ、要求された参照データブロックが参照フレームの垂直方向のキャッシュの現在のウィンドウにある場合、要求された参照データブロックはキャッシュ可能である。要求された参照データブロックのアドレスの参照フレーム識別子は、要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能な参照フレームにあるか否かを決定するために用いられる。一つもしくは複数の実施例では、最も時間的に近い参照フレームのみが垂直方向のキャッシュでキャッシュ可能である。要求された参照データブロックのx座標およびy座標は、要求された参照データブロックが垂直方向のキャッシュの現在のウィンドウ内にあるか否かを決定するために、前述のように用いられ得る。要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能であると決定される場合、垂直方向のキャッシュのためのキャッシュインデックスが前述のように決定される(1212)。
【0083】
インデックは、その後、要求された参照データブロックが垂直方向のキャッシュに格納されているか否かを決定するために用いられる(1214)。要求された参照データブロックが、インデックスにより示された垂直方向のキャッシュのキャッシュラインに格納されている場合、キャッシュヒットがあり、このキャッシュラインに格納されたデータは、要求部に戻される(1218)。キャッシュミスがある場合、もしくは要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能でない場合、要求された参照データブロックはフレーム記憶部から取り出され(1216)、水平方向のキャッシュインデックスにより識別された2つのキャッシュラインのうちの一つの水平方向のキャッシュに格納される。
【0084】
キャッシュラインのうちのすくなくとも一つが無効である場合、すなわちフリーである場合(1220)、取り出された参照データブロックは、フリーのキャッシュラインに格納されて(1222)、要求された参照データブロックは要求部へ戻される(1234)。双方のキャッシュラインが有効である場合(1220)、キャッシュラインのうちの1つにあるデータが、取り出された参照データブロックのための空間を生成する追い出しのために選択される(1224)。データが追い出されるキャッシュラインの選択は、任意の適切な追い出しポリシーを用いてなされ得る。一つもしくは複数の実施例では、最近アクセスされていないデータを保有するキャッシュラインが選択される。
【0085】
キャッシュラインが選択された後、キャッシュラインに現在格納された参照データブロック、すなわち追い出された参照データブロック、は垂直方向のキャッシュに格納され得る。具体的には、追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能か否かの決定がなされる(1226)。追い出されたデータブロックを含む参照フレームがキャッシュ可能である場合、かつ追い出された参照データブロックが参照フレームの垂直方向のキャッシュの現在のウィンドウにある場合、追い出された参照データはキャッシュ可能である。追い出された参照データブロックのアドレスの参照フレーム識別子は、追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能である参照フレームにあるか否かを決定するために用いられる。一つもしくは複数の実施例では、最も時間的に近い参照フレームのみが、垂直方向のキャッシュでキャッシュ可能である。追い出された参照データブロックのx座標およびy座標は、追い出された参照データブロックが垂直方向のキャッシュの現在のウィンドウ内にあるか否かを決定するために、前述のように用いられ得る。追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能でないと決定される場合、要求された参照データブロックは水平方向のキャッシュの選択されたキャッシュラインに格納され(1232)、要求部へ戻される(1234)。
【0086】
追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能であると決定される場合、垂直方向のキャッシュのためのキャッシュインデックスが前述のように決定され(1228)、追い出された参照データブロックはインデックスに対応するキャッシュラインに格納される。キャッシュラインに対応する有効ビットはまた、有効なデータがキャッシュラインに格納されることを示すよう設定される。要求された参照データブロックはその後、水平方向のキャッシュの選択されたキャッシュラインに格納され(1232)、要求部へ戻される(1234)。要求された参照データブロックが格納されるとき、選択されたキャッシュラインのためのタグが要求された参照データブロックのタグに設定され、選択されたキャッシュラインに対応する有効ビットは、キャッシュラインのデータが有効であることを示すよう設定される。
【0087】
本明細書で説明されたエンコーダと方法の実施例は、いくつかのタイプのディジタルシステムに提供され得る:ディジタル信号プロセッサ(DPS)、汎用プログラム可能プロセッサ、特定用途向け回路、もしくは、DSPとの縮小命令セット(RISC)プロセッサとの組み合わせや、種々の特殊なプログラム可能なアクセレレータなどといったシステムオンチップ(SoC)などである。オンボードもしくは外部(フラッシュEEP)ROMやFRAMにストアされたプログラムは、ビデオ信号処理を実装するために用いられ得る。アナログ‐ディジタルコンバータおよびディジタル‐アナログコンバータは、現実の世界との結合を提供し、変調器および復調器(加えて空中とのインターフェースのためのアンテナ)は、伝送波形へのカップリングを提供し得、かつパケタイザーは、インターネットなどのネットワークを介した伝送のためのフォーマットを提供する。
【0088】
本開示で記載された技術は、ハードウェア、ソフトウェア、ファームウェア、もしくはそれらの組み合わせで実装され得る。ソフトウェアで実装される場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、もしくはディジタル信号プロセッサ(DSP)といった、一つもしくは複数のプロセッサで実行され得る。こういった技術を実行するソフトウェアは、コンパクトディスク(CD)、ディスケット、テープ、ファイル、メモリ、もしくはその他のコンピュータ可読の記憶装置といった、コンピュータ読出し可能な媒体にまずストアされて、プロセッサにロードされて実行される。いくつかの場合では、ソフトウェアは、コンピュータ読出し可能な媒体およびコンピュータ読出し可能な媒体用パッケージマテリアルを含むコンピュータプログラム製品でも販売され得る。いくつかの場合では、ソフトウェア命令は、リムーバブルのコンピュータ読出し可能な媒体(例えば、フロッピーディスク、光ディスク、フラッシュメモリ、USBキー)を介して、その他のディジタルシステム等のコンピュータ読出し可能な媒体からの伝送路を介して、分配され得る。
【0089】
本明細書に記載されたような参照データキャッシュを提供するビデオエンコーダおよびビデオデコーダの実施例は、ディジタルビデオシーケンスをキャプチャする(又は、そうでなければ発生させる)機能、および/またはビデオシーケンスを受け取り表示する機能を備えた、事実上任意のタイプのディジタルシステム(例えば、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、携帯電話やMP3プレーヤーなどの携帯用デバイス、パーソナル・デジタル・アシスタント、ディジタルビデオカメラ、セットトップボックス、ディジタルビデオレコーダ(DVR)等)に実装され得る。図13ないし図15は、具体的なディジタルシステムのブロック図を示す。
【0090】
図13は、一つもしくは複数の実施例による埋め込まれたシステム(例えばディジタルカメラ)に適したディジタルシステムを示しており、当該実施例は、他の構成要素の中でも、本明細書で記載された方法を実施するよう構成され得る、DSPベースの画像コプロセッサ(ICP)1302、RISCプロセッサ1304、およびビデオプロセッシングエンジン(VPE)1306を含む。RISCプロセッサ1304は、任意の適切に構成されたRISCプロセッサであり得る。VPE1306は、画像センサ、ビデオデコーダ等といった映像周辺機器からのビデオキャプチャに用いられる、設定可能なビデオ処理フロントエンド(Video FE)1308入力インターフェースと、SDTVディスプレイ、ディジタルLCDパネル、HDTVビデオエンコーダ等といったディスプレイ装置に用いられる、設定可能なビデオ処理バックエンド(Video BE)1310出力インターフェースと、Video FE1308およびVideo BE1310とによってシェアされるメモリインターフェース1324とを含む。ディジタルシステムはまた、マルチメディアカード、オーディオシリアルポート、ユニバーサル・シリアル・バス(USB)コントローラ、シリアルポートインターフェース等を含み得る様々な周辺機器用の周辺インターフェース1312を含む。
【0091】
Video FE1308は、画像信号プロセッサ(ISP)1316と、3A統計ジェネレータ(3A)1318とを含む。ISP1316はインターフェースを画像センサおよびディジタルビデオソースに提供する。具体的には、ISP1316は、センサ(CMOSもしくはCCD)から未処理の画像/ビデオデータを受け取り得、また様々なフォーマットでYUVビデオデータを受け取ることができる。ISP1316はまた、未処理のCCD/CMOSデータからカラーフォーマット(例えばRGB)で画像データを生成する機能を備えた、パラメータ化された画像処理モジュールを含む。ISP1316は、各々のセンサタイプ用にカスタマイズ可能であり、かつキャプチャされたディジタル画像のプレビュー表示用の、およびビデオ録画モード用のビデオフレームレートをサポートする。ISP1316はまた、他の機能の中でも、画像リサイザ、統計収集機能、および境界信号計算機を含む。3Aモジュール1318は、ISP1316もしくは外部メモリからの未処理の画像データのメトリクスを収集することによって、オートフォーカス、オートホワイトバランス、およびオート露出のためのコントロールループをサポートする機能を含む。
【0092】
Video BE1310は、オンスクリーンディスプレイエンジン(OSD)1320とビデオアナログエンコーダ(VAC)133とを含む。OSDエンジン1320は、いくつかの異なるタイプのハードウェアディスプレイウィンドウ用の様々なフォーマットでディスプレイデータを管理する機能を含み、かつOSDエンジン1320はまた、単一ディスプレイへのビデオデータおよびディスプレイ/ビットマップデータを、当該データをYCbCrフォーマットのVAC1322に提供する前に、収集および混合する処理を行う。VAC1322は、OSDエンジン1320から表示フレームを取り出して、当該フレームを表示デバイスへのインターフェースに必要とされる所望の出力フォーマットおよび出力信号にフォーマットする機能を含む。VAC1322は、複合NTSC/PALビデオデバイス、S‐ビデオデバイス、ディジタルLCDデバイス、高解像度ビデオエンコーダ、DVI/HDMIデバイス等にインターフェースで接続され得る。
【0093】
メモリインターフェース1324は、外部メモリへ/からデータを要求および/もしくは伝送するVideo FE1308およびVideo BE1310のモジュールへの一次ソースおよびシンクとして機能する。メモリインターフェース1324は、読出しおよび書き込みバッファと、仲裁論理とを含む。
【0094】
ICP1302は、キャプチャされた画像のビデオ符号化およびその他の処理に必要とされるコンピュータによる計算を実行する機能を含む。サポートされるビデオ符号化基準は、JPEG基準、MPEG基準、およびH.26x基準のうちの一つもしくは複数を含み得る。一つもしくは複数の実施例では、ICP1302は、本明細書に記載された方法のコンピュータによる計算を実施するよう構成され得る。
【0095】
動作において、画像もしくはビデオシーケンスをキャプチャするために、ビデオ信号はVideoFE1308によって受信され、ビデオ符号化を実施するために必要とされる入力フォーマットに変換される。VideoFE1308により生成されるビデオデータは、その後外部メモリに格納される。ビデオデータは次いでビデオエンコーダによって符号化されて外部メモリに格納される。符号化の間、ビデオエンコーダは本明細書に記載されたような参照データキャッシングの方法を用い得る。符号化されたビデオはその後、画像/ビデオシーケンスを表示するために、外部メモリから読み出され、復号化され、かつVideoBE1310によって後処理され得る。
【0096】
図14は、本明細書に記載されたような参照データキャッシングを実行するよう構成され得るディジタルシステム1400(例えば、携帯電話)のブロック図である。単一処理ユニット(SPU)1402は、埋め込まれたメモリとセキュリティ機能とを含むディジタル信号処理システム(DSP)を含む。アナログベースバンドユニット1404は、ハンドセットマイクロフォンから音声データを受け取り、音声データストリームをハンドセットモノラルスピーカ(1413b)へ送る。アナログベースバンドユニット1404はまた、マイクロフォン(1414b)から音声データを受け取り、音声データストリームをモノラルヘッドセット(1414b)へ送る。アナログベースバンドユニット1404およびSPU1402は、別々のICであり得る。多くの実施例では、アナログベースバンドユニット1404は、プログラム可能なプロセッサコアを内蔵せずに、SPU1402で実行するソフトウェアによりセットアップされる、オーディオパス、フィルタ、ゲイン等の構成に基づいて処理を実行する。
【0097】
ディスプレイ1420はまた、ネットワーク、ローカルカメラ1428、もしくはUSB1426やメモリ1412などの他のソースから受け取られた、ピクチャおよび符号化されたビデオストリームを表示し得る。SPU1402はまた、セルラーネットワークのような様々なソースから、RFトランシーバ1426やカメラ1428を介して受け取られるビデオストリームをディスプレイ1420へ送信することができる。SPU1402はまた、ビデオストリームを、エンコーダ1422を介して複合出力端子1424を通過して、外部ビデオディスプレイへ送り得る。エンコーダユニット1422は、PAL/SECAM/NTSCビデオ規格に基づく符号化を提供し得る。
【0098】
SPU1402は、ビデオ符号化および復号化に必要とされるコンピュータによる計算を実行する機能を含む。サポートされるビデオ符号化基準は、例えば、JPEG基準、MPEG基準、H.26x基準および新たなHEVC基準のうちの一つもしくは複数を含む。一つもしくは複数の実施例では、SPU1402は、ビデオ符号化および/または復号化の一部として、本明細書で記載されるような参照データキャッシングを実行するよう構成される。参照データキャッシングのコンピュータの要求を実施するソフトウェア命令はメモリ1412にストアされ得、例えばピクチャもしくはビデオストリームといったディジタル画像データのキャプチャおよび/もしくは符号化および/もしくは復号化の一部としてSPU1402によって実行され得る。
【0099】
図15は、プロセッサ1502、連想メモリ1504、記憶デバイス1506、およびディジタルシステムに典型的な様々な他の要素および機能(図示しない)を含むディジタルシステム1500を示す。一つもしくは複数の実施例では、ディジタルシステムは複数のプロセッサを含み得、および/もしくは、プロセッサのうちの一つもしくは複数はディジタル信号プロセッサであり得る。ディジタルシステム1500はまた、キーボード1508やマウス1510(もしくは他のカーソル制御デバイス)といった入力手段と、モニタ1512(もしくは他の表示デバイス)のような出力手段とを含み得る。当業者は、入力および出力手段は他の形態をとり得ることを理解するであろう。ディジタルシステム1500は、ビデオシーケンスをキャプチャするための回路(例えば、光学、センサ、読出し機器)を含む画像取込装置(図示しない)を含み得る。ディジタルシステム1500は、ビデオシーケンスを符号化するためのビデオエンコーダを含み得、当該ビデオエンコーダは本明細書で述べられたような参照データキャッシングを実行する機能を含む。
【0100】
ディジタルシステム1500は、ネットワーク(図示しない、例えば、ローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WAN)、セルラーネットワーク、他の同タイプのネットワークおよび/もしくはそれらの組み合わせ)に、ネットワークインターフェース接続(図示しない)を介して接続され得る。ディジタルシステム1500はネットワークインターフェース接続を介して、記憶デバイス1506から、および/もしくはリムーバブル記憶媒体から、符号化されたビデオシーケンスを受け取り、かつ表示する機能を含み得る。ディジタルシステム1500は符号化されたビデオシーケンスを復号化するためのビデオデコーダを含み得、当該ビデオデコーダは、本明細書で述べられたような参照データキャッシングを実行する機能を含む。
【0101】
さらに、当業者は、前述のディジタルシステム1500の一つもしくは複数の要素が遠隔位置に位置し得、ネットワークを介して他の要素に接続され得ることを理解するであろう。さらに、実施例は、複数のノードを有する分散システムで実施され得、システムおよびソフトウェア命令の各々の部分は、分散システム内の異なるノードに位置し得る。一つもしくは複数の実施例では、ノードはディジタルシステムであり得る。代替的に、ノードは連想物理メモリを有するプロセッサであっても良い。ノードは、代替的に、共有メモリおよび/もしくはリソースを有するプロセッサであっても良い。
【0102】
本明細書で述べられたような参照データキャッシングのコンピュータによる計算を実施するためのソフトウェア命令は、コンパクトディスク(CD)、ディスケット、テープ、ファイル、メモリ、もしくはその他のコンピュータ読出し可能な記憶デバイスのような、コンピュータ読出し可能な媒体に格納され得る。ソフトウェア命令は、リムーバブルのコンピュータ読出し可能な媒体(例えば、フロッピ―ディスク、光ディスク、フラッシュメモリ、USBキー)を介して、別のディジタルシステム等のコンピュータ読出し可能な媒体からの伝送路を介して、ディジタルシステム1500に分散され得る。また、ビデオエンコーダでは、共有の参照データキャッシュを有するではなく、個別のキャッシュが動き補償および動き予測に提供され得る。
【0103】
当業者は、説明された例示的な実施例に対して修正がなされ得、また多くの他の実施例が可能であることを理解するであろう。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9A
図9B
図10A
図10B
図10C
図10D
図11
図12A
図12B
図13
図14
図15