(57)【特許請求の範囲】
【請求項１】
端末機器であって、
動き補償に用いる参照フレームを保存するための参照画像キャッシュを備えた、入力ビデオデータを動き補償予測技術に従って符号化するビデオ符号化器を有し、
前記参照画像キャッシュは長期参照フレームを保存するための第１のバッファ領域と短期参照フレームを保存するための第２のバッファ領域とに分割されており、
前記バッファ領域の相対サイズが、前記ビデオデータに存在する動きの大きさに基づいて動的に変化することを特徴とする端末機器。
【請求項２】
前記ビデオ符号化器に接続され、前記入力ビデオデータに存在する動きを表すデータを提供する動きセンサをさらに有することを特徴とする請求項１記載の端末機器。
【請求項３】
前記ビデオ符号化器が、前記入力ビデオデータの内容から動きを判定する動き推定器を有することを特徴とする請求項１記載の端末機器。
【請求項４】
前記入力ビデオデータを前記ビデオ符号化器に提供するカメラをさらに有することを特徴とする請求項１から３のいずれか１項に記載の端末機器。
【請求項５】
前記入力ビデオデータに存在する動きが小さい場合、前記第１のバッファ領域のサイズが前記第２のバッファ領域のサイズよりも大きいことを特徴とする請求項１から４のいずれか１項に記載の端末機器。
【請求項６】
前記入力ビデオデータに存在する動きが大きい場合、前記第１のバッファ領域のサイズが前記第２のバッファ領域のサイズよりも小さいことを特徴とする請求項１から５のいずれか１項に記載の端末機器。
【請求項７】
新たな入力フレームに対する予測基準を見つけるために前記参照画像キャッシュを探索する符号化エンジンをさらに有し、前記符号化エンジンは前記新たな入力フレームに関する動きの量に基づいて、前記探索の範囲を前記第１のバッファ領域と前記第２のバッファ領域の一方に制限することを特徴とする請求項１から６のいずれか１項に記載の端末機器。
【請求項８】
前記新たな入力フレームに関する動きが小さい場合、前記符号化エンジンが前記第１のバッファ領域を探索することを特徴とする請求項７記載の端末機器。
【請求項９】
前記新たな入力フレームに関する動きが大きい場合、前記符号化エンジンが前記第２のバッファ領域を探索することを特徴とする請求項７記載の端末機器。
【請求項１０】
ビデオ符号化器のための、メモリ管理方法であって、
前記ビデオ符号化器の制御手段が、所定期間にわたって入力ビデオシーケンスの動きを推定するステップと、
前記制御手段が、前記推定された動きに基づいて、参照画像キャッシュを、長期参照フレームを保存するための第１のバッファ領域と短期参照フレームを保存するための第２のバッファ領域とに分割するステップと、を有することを特徴とする方法。
【請求項１１】
前記入力ビデオシーケンスに存在する動きが小さい場合、前記第１のバッファ領域のサイズが前記第２のバッファ領域のサイズよりも大きいことを特徴とする請求項１０記載の方法。
【請求項１２】
前記入力ビデオシーケンスに存在する動きが大きい場合、前記第１のバッファ領域のサイズが前記第２のバッファ領域のサイズよりも小さいことを特徴とする請求項１０または１１に記載の方法。
【請求項１３】
前記ビデオ符号化器の符号化エンジンが、前記参照画像キャッシュに保存された参照フレームを参照して新たな入力フレームを予測的に符号化するステップをさらに有し、
前記参照フレームの探索が、前記新たな入力フレームに関する動き量に基づいて前記第１のバッファ領域と前記第２のバッファ領域の一方に制限されることを特徴とする請求項１０から１２のいずれか１項に記載の方法。
【請求項１４】
前記新たな入力フレームに関する動きが小さい場合、前記探索が前記第１のバッファ領域に制限されることを特徴とする請求項１３記載の方法。
【請求項１５】
前記新たな入力フレームに関する動きが大きい場合、前記探索が前記第２のバッファ領域に制限されることを特徴とする請求項１３記載の方法。
【請求項１６】
前記推定された動きが前記入力ビデオシーケンスを撮影するカメラに付随する動きセンサからのデータから得られることを特徴とする請求項１０から１５のいずれか１項に記載の方法。
【請求項１７】
前記推定された動きが前記入力ビデオシーケンスの内容から得られることを特徴とする請求項１０から１５のいずれか１項に記載の方法。
【請求項１８】
前記推定するステップおよび前記分割するステップが、前記入力ビデオシーケンスの期間にわたって繰り返されることを特徴とする請求項１０から１７のいずれか１項に記載の方法。
【請求項１９】
前記長期参照フレームが、個々のインデックス番号によって特定されることを特徴とする請求項１０から１８のいずれか１項に記載の方法。
【請求項２０】
ビデオ符号化方法であって、
符号化手段が、入力フレームを動き補償予測技術に従って符号化するステップを有し、
前記符号化するステップは、予測基準としての参照画像を参照画像キャッシュで探索するステップを含み、
前記参照画像キャッシュは、長期参照フレームを保存するための第１のバッファ領域と短期参照フレームを保存するための第２のバッファ領域とに分割され、
前記入力フレームに関する動き量に基づいて前記探索が前記第１および第２のバッファ領域の一方に制限されることを特徴とする方法。
【請求項２１】
制御手段が、複数の入力フレームにわたって入力ビデオシーケンスの動きを推定するステップと、
前記制御手段が、前記推定された動きに基づいて前記参照画像キャッシュを前記第１および第２のバッファ領域に分割するステップとをさらに有し、
前記第１および第２のバッファ領域の相対的なサイズが前記推定された動きに基づくことを特徴とする請求項２０記載の方法。
【請求項２２】
前記推定された動きが小さい範囲にある場合、前記第１のバッファ領域のサイズが前記第２のバッファ領域のサイズよりも大きいことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記推定された動きが大きい範囲にある場合、前記第１のバッファ領域のサイズが前記第２のバッファ領域のサイズよりも小さいことを特徴とする請求項２１または２２に記載の方法。
【請求項２４】
前記推定された動きが前記入力ビデオシーケンスを撮影するカメラに付随する動きセンサからのデータから得られることを特徴とする請求項２１から２３のいずれか１項に記載の方法。
【請求項２５】
前記推定された動きが前記入力ビデオシーケンスの内容から得られることを特徴とする請求項２１から２３のいずれか１項に記載の方法。
【請求項２６】
前記長期参照フレームが、個々のインデックス番号によって特定されることを特徴とする請求項２１から２５のいずれか１項に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオ符号化器／復号器システムにおいて、ビデオ符号化器はソースビデオシーケンスを、ソースビデオよりも小さなビットレートを有する符号化プレゼンテーションに符号化することができ、それによってデータ圧縮を実現することができる。符号化器は圧縮を実現するため、処理したビデオデータを様々な符号化技術のいずれかにしたがって符号化してよい。データ圧縮のための１つの一般的な技術は予測符号化技術（例えば時間／動き予測符号化）を用いる。例えば、ビデオストリーム中の一部のフレームは、個別に符号化され（Ｉフレーム）、別の一部のフレーム（ＰまたはＢフレーム）は他のフレームを参照フレームとして用いて符号化されてよい。Ｐフレームは過去に符号化された１つのフレーム（Ｐフレーム）に関して符号化されてよく、Ｂフレームは過去に符号化された１対のフレーム（典型的には表示順序がＢフレームよりも前のフレームと表示順序でＢフレームの次に来る別のフレーム）に関して符号化されてよい。ＰおよびＢ符号化モードをサポートする、過去に符号化されたフレームを「参照フレーム」と呼ぶ。得られる圧縮されたシーケンス（ビットストリーム）は、チャネルを通じて復号器に送信されてよい。ビデオデータを復元するため、ビットストリームは復号器で、符号化器で実施された符号化処理を逆転させて伸長されてよく、受信復号ビデオシーケンスが得られる。
【０００２】
符号化器および復号器はいずれも、符号化参照フレームをデコードしてローカルでキャッシュする。伝送誤りがない限り、符号化器と復号器の両方でキャッシュされる参照画像は同期されねばならない。参照画像キャッシュは制限された深度を有し、キャッシュが容量一杯に達すると、予め定められた退去手法に従って、新たな参照画像が古い参照画像を退去させる。
【０００３】
ビデオシーケンスからその後に受信されるフレームと良好な合致性を与えるように参照フレームを選択できれば、より良い圧縮効率および符号化品質が実現できる。従来の管理プロセスは、他のフレームに関する良好な予測基準を与える参照フレームをキャッシュ内に保持されるようにするとは限らなかった。例えば、多くの符号化環境において、ビデオ符号化器は所定数の最新の符号化参照フレームを常に保持する。しかしながら、動きのレベルが非常に小さいビデオシーケンスにおいては、Ｎ番目の最も新しい符号化参照フレームよりも古い参照フレームを保持することによって符号化効率が改善されるであろう。動きのレベルが大きいビデオシーケンスでは、参照画像キャッシュ内の、符号化されている新しいフレームに時間的に最も近い、より新しい参照フレームを保持することによって符号化効率が改善できるであろう。これら競合する事象を十分にバランスさせる符号化システムは知られていない。
【図面の簡単な説明】
【０００４】
【図１】本発明の一実施形態に係るビデオ符号化システムの単純化したブロック図である。
【図２】本発明の一実施形態に係る参照画像キャッシュを比喩的に示した図である。
【図３】本発明の様々な実施形態に従って参照画像キャッシュを分割するためのいくつかの方法を示す図である。
【図４】本発明の一実施形態に係る、参照画像キャッシュの分割および入力ビデオデータの符号化方法を示す図である。
【図５】ある例示的な使用事例における図４の方法の例示的な動作を示す図である。
【図６】本発明の一実施形態にかかるキャッシュ再分割の例を示す図である。
【発明を実施するための形態】
【０００５】
本発明の実施形態は、キャッシュされた参照画像を参照して予測ビデオ符号化を実施するビデオ符号化システムを提供する。参照画像キャッシュは、長期参照フレームおよび短期参照フレームを保存するための一組のバッファ領域に分割されてよい。バッファ領域の相対サイズはビデオデータに存在する動きの量に基づいて動的に変化する。符号化の間、入力シーケンスの各フレームについて動きが予測されてよく、また、フレームの動きに基づいて、予測基準の探索がバッファ領域の１つに制限されてもよい。
【０００６】
カメラおよび背景の動きに基づく参照ピクチャキャッシュの動的分割は、符号化効率および符号化品質の改善を実現しうる。カメラが固定されていて動きが少ない場合、システムは、長期参照フレームを保存するために参照画像のより多くの部分を多く割り当てることができる。この場合、画像の前景要素（例えば人物）は、比較的固定した背景の前で動くであろう。長期参照フレームの数を増やすことにより、現在符号化されているフレーム内で前景要素がどこに行っても、その新たなフレームに含まれる背景要素に対して十分な予測合致を提供するフレームを参照画像キャッシュが少なくとも１つ有する可能性を高めることができる。従って、現フレーム内で隠されていない背景要素は、少ないビット数で高品質に符号化することができる。
【０００７】
カメラの動きが大きかったり背景に多くの動きが存在する場合、システムは、参照画像キャッシュに、短期参照フレームを保存する部分の容量を多く割り当てることができる。動きぶれおよびローリングシャッター効果はカメラが動いている間に生じる一般的な現象であり、最近符号化された参照フレームは同様の影響を受けている可能性が高いので、一般に短期予測基準はその手の影響に対してよりよい符号化を提供する。
【０００８】
図１（ａ）は、本発明の一実施形態に係るビデオ符号化システムを単純化したブロック図を示す。システム１００はネットワーク１３０を介して相互接続された複数の端末１１０，１２０を含んでよい。端末１１０，１２０はそれぞれ、自身が存在する場所(local location)でビデオデータを取得し、他の端末へネットワーク１３０を介して送信するためにビデオデータを符号化することができる。各端末１１０，１２０は他の端末の符号化ビデオデータをネットワーク１３０から受信し、符号化データを復号し、符号化データから復元されたビデオデータを表示してよい。図１（ａ）に示すように、端末１１０，１２０はスマートフォンとして図示されているが、本発明の本質はそれに限定されない。本発明の実施形態はパーソナルコンピュータ（デスクトップおよびラップトップコンピュータの両方）、タブレットコンピュータ、コンピュータサーバ、メディアプレーヤおよび／または専用ビデオ会議機器を用いて実施することができる。ネットワーク１３０は符号化ビデオデータを端末１１０，１２０間で搬送する、例えば有線および／または無線通信ネットワークを含む任意数のネットワークを表す。通信ネットワーク１３０は回線交換型および／またはパケット交換型チャネルでデータを交換してよい。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび／またはインターネットが含まれる。特にそういった記載が無い限り、ここで考察を行う上では、本発明の動作はネットワーク１３０のアーキテクチャおよびトポロジーに依存しない。
【０００９】
図１（ｂ）は、システム１００内で動作可能なビデオ符号化器１４０および復号器１５０の機能ブロック図をさらに示している。具体的には、図１は、端末１１０に関してカメラ１１１、動きセンサ１１２およびビデオ符号化器１４０を示している。ビデオ符号化器１４０はカメラ１１１で撮影されたビデオデータを符号化し、符号化データをネットワーク１３０が提供するチャネル１３１へ配信してよい。ビデオ符号化器１４０はビデオデータ自身の内容だけでなく、端末１１０内に設けられている動きセンサが提供する動きデータにも基づいて符号化パラメータを選択してよい。動きセンサ１１２は例えばジャイロスコープおよび／または加速度計を含む、様々な方法で実施されてよい。
【００１０】
図１は、端末１２０に関してビデオ復号器１５０とディスプレイ１２１を示している。ビデオ復号器１５０はチャネル１３１から符号化ビデオデータを受信し、符号化ビデオデータを復号し、復号されたビデオデータを第２端末１２０のディスプレイ１２１で提示してよい。
【００１１】
図１に示す機能ブロックは、一方向のみにおけるビデオ符号化及び復号をサポートしている。双方向通信に対し、端末１２０はローカル撮影されたビデオのビデオ符号化のための機能ブロック（不図示）を含んでよく、端末１１０はネットワーク１３０を介して端末１２０から受信された符号化ビデオデータを復号するための機能ブロック（不図示）を含んでよい。本発明の原理は端末１１０，１２０のどちらに存在する符号化器にも適用されてもよいことが想定されているが、端末１２０から端末１１０への符号化方向に対して設けられる機能ブロックについては単にこの考察を単純にする目的で図１から省かれている。
【００１２】
図示の通り、ビデオ符号化器１４０はプリプロセッサ１４２、符号化エンジン１４３、参照画像キャッシュ１４４、送信器１４５およびコントローラ１４６を含んでよい。プリプロセッサ１４２はカメラ１１１からソースビデオを受け付け、符号化する状態にするための様々な処理動作をソースビデオに対して実行してよい。符号化エンジン１４３は前処理されたソースビデオから空間的および／または時間的冗長性を削減するため、前処理されたソースビデオに対して圧縮処理を実施してよい。符号化エンジン１４３は符号化ビデオデータを送信器１４５に出力してよい。送信器１４５はデータをチャネル１３１を通じて送信し、端末１２０に配信するためにデータをフォーマットしてよい。符号化エンジン１４３はその処理の一部として、参照画像キャッシュ１４４内に保存されているデータを予測基準として用いる動き予測技術に従って、ビデオデータの新たなフレームを符号化してもよい。符号化エンジン１４３はまた、参照画像キャッシュ１４４内に保存するために、参照フレームの符号化ビデオデータを復号してもよい。
【００１３】
ビデオ符号化器１４０は、ビデオ符号化器１４０の動作を管理するためのコントローラ１４６を含んでよい。一実施形態において、コントローラ１４６は、以下に説明するように、参照画像キャッシュ１４４を長期バッファ領域と短期バッファ領域（図１には示していない）とに分割してよい。コントローラ１４６はさらに、符号化エンジン１４３が参照画像キャッシュ全体に対して実行する予測サーチを制御し、符号化エンジン１４３が動作するための他の符号化パラメータを選択してよい。この点に関し、コントローラ１４６はこれらの制御動作を、動きセンサ１１２から与えられる動きデータを解析してから実施してもよい。
【００１４】
プリプロセッサ１４２はカメラからのソースビデオ出力に対し、符号化を行うための状態にするため、様々な他のビデオ処理動作を実行してよい。プリプロセッサ１４２は、ビデオから得られる特徴に基づいてソースビデオに動的に適用されてよい、ノイズ除去フィルタ、鮮鋭化フィルタ、平滑化フィルタ、バイラテラルフィルタなどのフィルタアレイ（不図示）を含んでよい。プリプロセッサ１４２は、カメラからのソースビデオデータをレビューし、適用する１つ以上のフィルタを選択するための、自身のコントローラ（不図示）を含んでもよい。典型的には、プリプロセッサ１４２は、ソースビデオデータがより効率的に圧縮されたり、符号化エンジン１４３の処理に伴って発生しうるデータ損失を考慮して画質を保持するような状態にする。
【００１５】
符号化エンジン１４３は圧縮を実現するため、様々な符号化技術に従って入力ビデオデータを符号化してよい。符号化エンジン１４３は動き補償予測を用いて画像を圧縮してよい。入力ビデオのフレームは、イントラ符号化（Ｉ符号化）、一方向予測符号化（Ｐ符号化）、または双方向予測符号化（Ｂ符号化）といった符号化タイプを割り当てられてよい。フレームはさらに、複数の画素ブロックに分割(parse)され、変換符号化、量子化およびエントロピー符号化を用いて符号化されてよい。ＰおよびＢ符号化フレームの画素ブロックは予測的に符号化されてよく、その場合、符号化エンジンは、参照画像キャッシュ１４４に保存されている復号フレームの、符号化されている画素ブロックの予測物として機能する画素ブロックを特定する動きベクトルを計算し、変換符号化の適用前に予測残差を生成してよい。一実施形態において、ビデオ符号化器はITU H.263、H.264などによって規定される符号化プロトコルに従って動作してもよい。
【００１６】
符号化エンジン１４３はまた、その後受信する入力フレームの符号化で用いるための参照フレームとして用いられてよい所定の符号化フレームを指定してよい。符号化エンジン１４３は、ビデオ符号化器１４０がビデオ復号器１５０で復号されるものと同じ参照フレームの復号されたコピーを有するよう、参照フレームの符号化ビデオデータを復号し、復号参照フレームを参照画像キャッシュ１４４に保存してよい。
【００１７】
送信器１４５は符号化ビデオデータをチャネル１３１へ送信してよい。その際、送信器１４５は、符号化ビデオデータを、（図１に示していない処理ソースから与えられる）符号化音声データおよび制御データのような、送信すべき他のデータと多重化してもよい。送信器１４５は多重化データをネットワーク１３０に適した様式にフォーマットし、データをネットワークに送信してよい。
【００１８】
送信器１４５はその動作の一部として、ネットワークパフォーマンスを監視し、パフォーマンスの統計を求めてもよい。例えば、送信器１４５はネットワークが端末１１０に提供可能なチャネル１３１の帯域幅を推定してもよい。多くのネットワーク環境において、ネットワークチャネルは、送信端末に通知なしに変化する可変送信データレートを提供する。送信器１４５はチャネル１３１または遠端端末１２０から、送信誤り、送信遅延および、送信器１４５がネットワーク性能を推定することのできる他のネットワーク性能指標を特定する指標(indicator)を受信してよい。送信器１４５はコントローラ１４６にチャネル統計を提供してもよい。そして、コントローラ１４６は、符号化エンジン１４３が出力する符号化データのビットレートがチャネル１３１の推定帯域幅に合致するように符号化パラメータの選択を変更してよい。
【００１９】
ビデオ復号器１５０は、受信器１５１、復号エンジン１５２、参照画像キャッシュ１５３、ポストプロセッサ１５４およびコントローラ１５６を含んでよい。復号エンジン１５２はチャネル１３１を介して受信した符号化ビデオデータを、参照画像キャッシュ１５３に保存されている参照画像を参照して復号してよい。復号エンジン１５２は復号ビデオデータをポストプロセッサ１５４に出力してよく、ポストプロセッサ１５４は表示するための状態にするための追加処理を復号ビデオデータに対して実施してよい。参照フレームの復号ビデオデータは、その後受信される符号化ビデオデータの復号中に用いるため、参照画像キャッシュ１５３にも保存されてもよい。
【００２０】
復号エンジン１５２は符号化エンジン１４３で実施された符号化動作を逆転させる復号動作を実施してよい。復号エンジン１５２は復元画素ブロックデータを生成するため、エントロピー復号、逆量子化および変換復号を実行してよい。量子化／逆量子化動作は不可逆処理であるため、復元された画素ブロックデータはビデオ符号化器１４０によって符号化されたソース画素ブロックの複製ではあろうが、いくらかの誤りを含むであろう。予測的に符号化された画素ブロックについては、変換復号によって残差データが生成され、復号エンジン１５２は、予測残差と合成すべき予測画素ブロックを参照画像キャッシュ１５３から読み出すために、その画素ブロックに関する動きベクトル（暗示される場合もある）を用いてよい。復号画素ブロックはフレームに再構成され、ポストプロセッサ１５４に出力されてよい。
【００２１】
復号エンジン１５２は新たな参照フレームを復号すると、引き続き受信する符号化ビデオデータの復号に用いるために、復号した参照フレームを参照画像キャッシュ１５３に保存してよい。
【００２２】
ポストプロセッサ１５４は、復元されたビデオデータを提示するための状態、一般的には表示機器に提示するための状態にするため、さらなるビデオ処理を実行してもよい。典型的なポストプロセス処理は、デブロッキングフィルタ、エッジ検出フィルタ、リンギングフィルタなどの適用を含むであろう。ポストプロセッサ１５４は復元されたビデオシーケンスをディスプレイ１２１に対する提示によって出力するか、後で読み出して表示するために必要に応じてメモリに保存することができる。
【００２３】
ビデオ符号化器１４０およびビデオ復号器１５０は参照フレームの２つのタイプを区別する符号化プロトコルに従って動作してよい。本明細書で「長期」参照フレームと呼ぶ第１タイプの参照フレームは、管理している符号化プロトコルと同様に特定され、インデックス番号が割り当てられる。符号化プロトコルによれば、ビデオ復号器１５０は長期参照フレームを自身のキャッシュに保存しなければならず、ビデオ符号化器１４０から命令があるまではキャッシュから除去されないようにする必要がある。実行期間中、過去に生成された長期参照フレームと合致するインデックスを有する新たな長期参照フレームが生成されると、過去に生成された長期参照フレームはビデオ符号化器１４０およびビデオ復号器１５０の参照画像キャッシュ１４４，１５３から取り除かれる。さらに、プロトコルは、ビデオ符号化器１４０が変わりの長期参照フレームを提供することなしに、ビデオ復号器１５０に自身の参照画像キャッシュ１５３からある長期参照フレームを削除するように指示することを可能にするコマンドをサポートする。この場合、削除される長期参照フレームはインデックス番号によって特定される。
【００２４】
本明細書で「短期」参照フレームと呼ぶ別のタイプの参照フレームは、長期参照フレームのような除去からの保護を有さない。短期参照フレームは、ファーストイン、ファーストアウトの形式で参照画像キャッシュに保存されてよい。通常、参照画像キャッシュは例えば１６フレームといった固定容量を有する。従って、過去に保存された参照フレームによって参照画像キャッシュが満たされ、新たな短期参照フレームが発生した場合、復号器１５０および符号化器１４０は、新たな参照フレームのための場所を作るために最も古い短期参照フレームを除去する。除去された短期参照フレームはキャッシュ１５３で最も古い短期参照フレームであろうが、必ずしも全体で最も古い参照フレームである必要はない。より古い長期参照フレームはビデオ符号化器１４０によって置換又は削除が指定されるまで保護されるであろう。
【００２５】
上述の通り、ビデオ符号化器の参照画像キャッシュ１４４は長期及び短期の両方で、復号器で生成されるような復号参照フレームを保存する。そのため、ビデオ符号化器１４０とビデオ復号器１５０との間の送信誤りが無ければ、ビデオ符号化器の参照画像キャッシュ１４４はビデオ復号器１５０の参照画像キャッシュ１５３で生じる保存及び除去動作を真似ることになるであろう。
【００２６】
図２は本発明の一実施形態に係る参照画像キャッシュ２００を比喩的に示した図である。参照画像キャッシュ２００は、それぞれが１つの復号参照フレームを保存してよい複数のエントリ２１０．１〜２１０．ｎを含むことができる。参照画像キャッシュの容量は固定されてよい。参照画像キャッシュの容量は、符号化器が動作に用いる符号化プロトコルによって課される制約によって制限されることが多いであろう。例えば、H.264符号化プロトコルは符号化器と復号器との間で有効(active)な参照画像は最大で１６である。この場合、参照画像キャッシュの容量は、符号化プロトコルの制約（１６フレーム）に合致するように設定されるであろう。
【００２７】
本発明の一実施形態によれば、参照画像キャッシュは短期参照フレームと長期参照フレームとを保存するよう、動的に分割されてよい。従って、図２は、短期バッファ領域２２０および長期バッファ領域２３０とに分割された参照画像キャッシュ２００を示している。名称が暗示するように、短期バッファ領域２２０は、参照画像キャッシュ２００のうち、短期参照フレームを保存するためだけに割り当てられている部分を表している。長期バッファ領域２３０は、参照画像キャッシュ２００のうち、長期参照フレームを保存するためだけに割り当てられている部分を表している。短期バッファ領域２２０および長期バッファ領域２３０の相対サイズは、動作中に動的に変化しうる。
【００２８】
図２は参照画像キャッシュ２００の単なる機能的な表現に過ぎない。実際には、ビデオ符号化器は様々な方法で実施されうる。ビデオ符号化器１４０はソフトウェアのみで実施されてよく、その場合、参照画像キャッシュ２００およびバッファ領域２２０および２３０は汎用コンピュータの比較的大きなメモリシステムからオペレーティングシステムによって割り当てられたメモリとして実施されてよい。別の実施形態において、ビデオ符号化器はハードウェアで実施されてよく、その場合参照画像キャッシュは集積回路内の専用メモリシステムとして実施されてよい。そして、もちろん、汎用メモリもしくは専用メモリシステムのいずれかに参照画像キャッシュ２００が存在しうる混成的な実施も可能である。本発明の原理は上述の実施形態のいずれにおいても適用可能である。
【００２９】
図３は観察される動きに基づく参照画像キャッシュの分割手法のいくつかを示している。いずれの手法においても、コントローラ（不図示）は所定期間にわたってカメラの動きを測定し、観測された動きに基づいて参照画像キャッシュを短期バッファ領域と長期バッファ領域とに分割する。一般に、検出された動きが少ない場合、コントローラは長期バッファ領域のサイズを短期バッファ領域と比べて増加させ、検出された動きが大きい場合、コントローラは短期バッファ領域のサイズを長期バッファ領域と比べて増加させる。
【００３０】
図３（ａ）は、観測された動きの４つの「ゾーン」Ｚ１−Ｚ４に対応する動き推定に基づく、４つの異なる分割レベルが存在する実施例を示している。ゾーンＺ１およびＺ４はそれぞれ、非常に小さい動きレベルと非常に大きい動きレベルとに対応している。ゾーンＺ１の場合、参照画像キャッシュはその容量のほぼ全てが長期参照フレームの保存に割り当てられるように分割されてよい。ゾーンＺ４の場合、参照画像キャッシュはその容量のほぼ全てが短期参照フレームの保存に割り当てられるように分割されてよい。ゾーンＺ２およびＺ３は中程度の動きの異なるレベルに対応している。図示した実施例において、参照画像キャッシュは短期バッファ領域と長期バッファ領域とがもっと釣り合うように分割されてもよい。図示したように、ゾーンＺ２は中程度の動きの小さめのレベルに対応しているので、長期バッファ領域が少し多めに割り当てられている。逆に、ゾーンＺ３は中程度の動きの大きめのレベルに対応しているので、短期バッファ領域が少し多めに割り当てられている。
【００３１】
図３（ｂ）は、分割が段階的かつ線形的に進行する実施例を示している。つまり、ｎフレーム分の容量を有する参照画像キャッシュに対し、観測できる動きの各ゾーンにそれぞれが対応するｎの分割レベルが存在しうる。図３（ｂ）に図示した段階的なカーブは全体的に線形であるように示されているが、他の特性であってもよい。例えば、段階的関数は対数的なものや他のものなど、異なる様々なカーブ（不図示）に沿うことができ、その場合には検出された動きのゾーンが互いに等間隔となるようにされるであろう。
【００３２】
図３（ｃ）は、分割手法がただ２つのゾーンＺ１０およびＺ１１に従って動作する、さらに別の実施例を示している。この実施形態において、ゾーンＺ１０は、カメラがテーブルや他の静止支持体に置かれている場合のように、カメラがほとんど静止している動きのゾーンに対応している。図示の通り、この場合、参照画像キャッシュの非常に大きな部分が長期バッファ領域に割り当てられてよい。ゾーンＺ１１は、例えばカメラが人の手で持たれている場合や、車、電車内などにある支持体にある場合のように、カメラが動いていると判定された動きのゾーンに対応している。この実施形態においてシステムは、中レベルの動きと大レベルの動きを区別しない。図３（ｂ）では各ゾーンの幅が等しいが、図３（ｃ）の実施形態ではゾーンＺ１０およびＺ１１はカバーする動きのレベルの幅が異なっている。
【００３３】
分割手法は、ビデオ符号化器のフレームレートよりも長い期間にわたってビデオ符号化器に供給される動きセンサデータに基づいて選択されてもよい。例えば、３０フレーム／秒で動作するビデオ符号化システムの場合、ビデオ符号化器は５秒より長い期間について動きの統計値を収集してよい。さらに、この期間をビデオ符号化器のフレームレートに基づいて変化させてもよい。例えばネットワーク内の帯域損失によってフレームレートが１０フレーム／秒まで低下した場合、ビデオ符号化器は参照画像キャッシュをどのように分割するかを決定するために動きの統計値をより長い期間、例えば１０秒間収集してもよい。
【００３４】
一実施形態において、参照画像キャッシュを長期バッファ領域と短期バッファ領域とに分割することで、ビデオ符号化器は参照画像キャッシュ全体で予測基準を探索し、探索結果に従って１以上の入力フレームを符号化することができる。
【００３５】
図４は、本発明の一実施形態に従って参照画像キャッシュを分割し、入力ビデオデータを符号化する方法を示している。この方法は、ビデオ符号化器がビデオデータの符号化に従事している限り継続して実行されてよい。方法は、分割手法の選択に用いられる長期間の動き統計値(extended motion statistics)を生成すること（点線内に図示）から開始されてよく、次いで長期間の動きに基づいて参照キャッシュを短期バッファおよび長期バッファに分割する（４１０）。その後、方法は符号化すべき新たな入力フレームを受信してよい（４２０）。入力フレームは、撮影時におけるカメラの動きを示す、関連付けられた動きデータを有してもよい。フレームの動きデータに基づいて、方法は必要に応じて動きを「大」または「小」のいずれかに分類してよい（４３０）。フレームの動きが大レベルの動きであると評価された場合、方法は短期バッファ領域内から、そのフレームに対する１つ以上の予測基準を探索してよい（４４０）。フレームの動きが小レベルの動きであると評価された場合、方法４００は長期バッファ領域内から、そのフレームに対する１つ以上の予測基準を探索してよい（４５０）。選択されたバッファ領域からそのフレームに対する１つ以上の予測基準を選択したら、方法４００は、選択された１つ以上の参照フレームを予測基準として用いて入力フレームが符号化されるようにする（４６０）。入力フレームを表す符号化データはチャネルを通じて復号器に送信されてよい。
【００３６】
方法４００はまた、入力フレームの動きを用いて長期間動き統計値を補ったり（４７０）、また参照画像キャッシュを再分割すべきかどうかを判定したり（４８０）してもよい。ＮＯであれば、方法４００は４２０に戻って、他の入力フレームを用いて動作を繰り返してよい。参照画像キャッシュを再分割すべきであれば、方法は４１０に戻り、短期バッファ領域と長期バッファ領域とを再定義することによって参照画像キャッシュを再分割してよい。
【００３７】
本発明の別の実施形態において、方法は長期バッファ領域と短期バッファ領域とで異なるタイプの探索を行ってもよい。例えば、カメラが撮影中静止していたことを動きデータが示している場合、システムは（動きのない）フレーム間の差分の計算に単純に基づいて長期バッファから参照フレームを選択することができる。カメラが撮影中動いていたことを動きデータが示している場合、方法は動きに基づいて探索を実行してよい。フレーム差分の算出は動きベースの探索よりも算出負荷が低い傾向にある。
【００３８】
図５は、ある事例における図４の方法の例示的な動作を示している。図５（ａ）は例示的なビデオシーケンスからの参照フレーム５０２〜５５０を示している。この例では、フレーム５１０，５２０，５３０，５４０，および５５０が長期参照フレーム（ＬＴＲ）として割り当てられ、残りの山椒フレームが短期参照フレーム（ＳＴＲ）として割り当てられているものとする。５参照フレーム毎にＬＴＲに割り当てられているが、これは本発明の動作原理の例示を助けるための単なる手法である。実際には、ＬＴＲ割り当てはビデオシーケンスを通じて不規則に行われてもよい。図５（ａ）は参照フレームのみを示しているが、実際には、予測的に符号化されてチャンネルを通じて送信されるが他のフレームに対する予測基準としては機能しない他のフレームがビデオシーケンスに含まれていてもよい。これらの、非参照フレームは、説明を容易にするために図５（ａ）では省かれている。
【００３９】
図５（ｂ）は送信端末５６０と受信端末５７０との間におけるＬＴＲデータの通信を表している。各ＬＴＲフレーム５１０〜５５０の符号化データが送信される際、送信には復号ＬＴＲフレームが保存されるべき参照画像キャッシュ内の位置を表すインデックス識別子が含まれる。
【００４０】
図５（ｃ）は図５（ａ）のビデオシーケンスの符号化全体における様々な時刻ｔ１〜ｔ５での例示的な参照画像キャッシュの状態を示している。説明を容易にするため、図示した参照画像キャッシュは１０フレームの記憶容量を有し、３フレーム分のＬＴＲバッファと７フレーム分のＳＴＲバッファとに分割されているものとする。時刻ｔ１〜ｔ５は図５（ｂ）に示されているＬＴＲフレームの送信と一致している。図５（ｃ）は参照画像キャッシュがフレーム５０２の符号化以前は空であるものとしている。
【００４１】
時刻ｔ１までに、ビデオ符号化器５６０は参照フレーム５０２〜５１０の符号化および送信を終えている。フレーム５１０は、インデックス位置１に割り当てられたＬＴＲフレームである。送信誤りがないとすると、符号化器５６０および復号器５７０のそれぞれはＬＴＲフレーム５１０をＬＴＲバッファ領域に、ＳＴＲフレーム５０２〜５０８をＳＴＲバッファ領域に保存するであろう。
【００４２】
時刻ｔ２までに、ビデオ符号化器５６０は参照フレーム５０２〜５２０の符号化および送信を終えている。フレーム５２０は、インデックス位置２に割り当てられたＬＴＲフレームである。送信誤りがないとすると、符号化器５６０および復号器５７０のそれぞれはＬＴＲフレーム５１０，５２０をＬＴＲバッファ領域に、ＳＴＲフレーム５０４〜５０８および５１４〜５１８をＳＴＲバッファ領域に保存するであろう。ＳＴＲバッファ領域の容量が制限されているため、参照フレーム５０２はフレーム５１８の場所を作るために除去されていてよい。
【００４３】
時刻ｔ３までに、ビデオ符号化器５６０は参照フレーム５０２〜５３０の符号化および送信を終えている。フレーム５３０は、インデックス位置３に割り当てられたＬＴＲフレームである。送信誤りがないとすると、符号化器５６０および復号器５７０のそれぞれはＬＴＲフレーム５１０，５２０，５３０をＬＴＲバッファ領域に、ＳＴＲフレーム５１４〜５１８および５２２〜５２８をＳＴＲバッファ領域に保存するであろう。ＳＴＲバッファ領域の容量が制限されているため、参照フレーム５０４〜５１２はフレーム５２２〜５２８の場所を作るために除去されていてよい。
【００４４】
時刻ｔ４までに、ビデオ符号化器５６０は参照フレーム５０２〜５４０の符号化および送信を終えている。フレーム５４０は、インデックス位置１に割り当てられたＬＴＲフレームである。送信誤りがないとすると、符号化器５６０および復号器５７０のそれぞれはＬＴＲフレーム５２０，５３０，５４０をＬＴＲバッファ領域に保存するであろう。フレーム５４０はＬＲＴ５１０を退去させてＬＲＴバッファ領域内の位置１に保存されるであろう。参照画像キャッシュはまた、ＳＴＲフレーム５２４〜５２８および５３２〜５３８をＳＴＲバッファ領域に保存するであろう。ＳＴＲバッファ領域の容量が制限されているため、参照フレーム５１４〜５２２はフレーム５３２〜５３８の場所を作るために除去されていてよい。
【００４５】
時刻ｔ５までに、ビデオ符号化器５６０は参照フレーム５０２〜５５０の符号化および送信を終えている。フレーム５５０は、インデックス位置３に割り当てられたＬＴＲフレームである。送信誤りがないとすると、符号化器５６０および復号器５７０のそれぞれはＬＴＲフレーム５２０，５４０，５５０をＬＴＲバッファ領域に保存するであろう。フレーム５５０はＬＲＴ５３０を退去させてＬＲＴバッファ領域内の位置３に保存されるであろう。参照画像キャッシュはまた、ＳＴＲフレーム５３４〜５３８および５４２〜５４８をＳＴＲバッファ領域に保存するであろう。ＳＴＲバッファ領域の容量が制限されているため、参照フレーム５２４〜５３２はフレーム５４２〜５４８の場所を作るために除去されていてよい。
【００４６】
図５に示した処理はビデオシーケンスが全て符号化されるか、他の停止条件が動作を中断させるまで継続するであろう。
【００４７】
符号化器は長期バッファ領域と短期バッファ領域の相対サイズを、符号化ビットストリーム内の明示的なシグナリングを用いて、あるいは暗示的なシグナリングを用いて、特定することができる。明示的なシグナリングは、符号化器が一方のバッファ領域のサイズ、例えば長期バッファ領域のサイズを指定する、プロトコル内の予め定められたフィールドの使用を伴ってよい。復号器は２番目のバッファ領域（短期バッファ領域）のサイズを、参照画像キャッシュの最大サイズと長期バッファ領域の指定サイズとの差分として算出してよい。
【００４８】
符号化器はまた、ＬＴＲインデックスの割り当てを通じて各バッファのサイズを暗示的に通知してもよい。この手法が用いられる場合、復号器はＬＴＲフレームを受信するまでは参照画像キャッシュ内の任意のエントリをＳＴＲフレームの保存用に自由に使用することができる。その後、復号器は、使用中の全インデックスについて、除去されるまでＬＴＲフレームを保持しなくてはならない。符号化器が新たなＬＴＲインデックスを割り当てた際に、参照画像キャッシュの空き容量がないとすると、復号器は新たなＬＴＲフレームのための場所を作るために、ある短期参照フレームを除去してよい。除去は符号化器に既知のプロトコルに従って発生してよく、典型的には、除去は参照画像キャッシュに保存されている最も古いＳＴＲフレームを対象とする。
【００４９】
図６は、図５の符号化例から引き続く再分割の例を示している。図６（ａ）は図５（ａ）の例示的なビデオシーケンスの別の部分であって、図５（ａ）のフレーム５５０に続くフレーム６０２〜６４０が示されている。図６（ｂ）はこの例におけるＬＴＲデータの通信を示している。ＬＴＲフレーム６１０〜６３０は時刻ｔ６〜ｔ８にそれぞれ送信され、その後、インデックス２を特定する解放(release)コマンドが送信される。説明を目的として、ここでは解放コマンドがＬＴＲフレーム６３０の送信直後で、ＳＴＲフレーム６３２の送信前に送信されるものとする。別のＬＴＲフレーム６４０は時刻ｔ１０で送信されてよい。
【００５０】
図６（ｃ）は時刻ｔ６〜ｔ８およびｔ１０における参照画像キャッシュの状態を示している。時刻ｔ６に、ビデオ符号化器は参照フレーム６０２〜６１０の符号化および送信を終えている。ＳＴＲフレーム６０２〜６０８は過去にキャッシュされたＳＴＲフレーム５３４〜５４２を追い出してよい。フレーム６１０は、インデックス位置４に割り当てられたＬＴＲフレームである。これに応答して、参照画像キャッシュはキャッシュ内に保存されている、その時点で最も古いＳＴＲフレーム（フレーム５４４）を除去し、新たなＬＴＲフレームをその場所に保存するであろう。参照画像キャッシュはキャッシュエントリをＬＴＲインデックスに動的マッピングに基づいてマッピングしてよい。
【００５１】
時刻ｔ７に、ビデオ符号化器は参照フレーム６０２〜６２０の符号化および送信を終えている。ＳＴＲフレーム６１２〜６１８は過去にキャッシュされたＳＴＲフレーム５４６〜５４８および６０２〜６０４を追い出してよい。フレーム６２０は、別の新しいインデックス位置５に割り当てられたＬＴＲフレームである。これに応答して、参照画像キャッシュはキャッシュ内に保存されている、その時点で最も古いＳＴＲフレーム（フレーム６０６）を除去し、新たなＬＴＲフレームをその場所に保存するであろう。
【００５２】
時刻ｔ８に、ビデオ符号化器は参照フレーム６０２〜６３０の符号化および送信を終えている。ＳＴＲフレーム６２２〜６２８は過去にキャッシュされたＳＴＲフレーム６０８および６１２〜６１６を追い出してよい。フレーム６３０は、別の新しいインデックス位置６に割り当てられたＬＴＲフレームである。これに応答して、参照画像キャッシュはキャッシュ内に保存されている、その時点で最も古いＳＴＲフレーム（フレーム６１８）を除去し、新たなＬＴＲフレームをその場所に保存するであろう。図６（ｃ）は時刻ｔ８における参照画像キャッシュのエントリと、ＬＴＲインデックスとの関係を示している。
【００５３】
この例において、符号化器はＳＴＲフレーム６３２の送信に先立つ時刻ｔ９で復号器に解放コマンドを送信してよい。これに応答して、参照画像キャッシュはＬＴＲフレーム５２０を除去から保護することを中止してよい。
【００５４】
時刻ｔ１０に、ビデオ符号化器は参照フレーム６０２〜６４０の符号化および送信を終えている。フレーム５２０はキャッシュ内で保護されていない最古のフレームであるため、ＳＴＲフレーム６３２は（それまで位置２に存在していた）ＬＴＲフレーム５２０を除去してよい。ＳＴＲフレーム６３４〜６３８は過去にキャッシュされたＳＴＲフレーム６２２〜６２６を追い出してよい。フレーム６４０は、インデックス位置４に割り当てられたＬＴＲフレームであり、ＬＴＲフレーム６１０を置換する。
【００５５】
上述した動作は参照画像キャッシュの長期バッファ領域を拡張するための明示的なシグナリングを必要としない。参照画像キャッシュは、ＬＴＲインデックス番号の新たな割り当てを検出すると、自発的に長期バッファ領域を拡張してよい。参照画像キャッシュはＬＴＲフレームに割り当てられていない任意のキャッシュエントリをＳＴＲフレームに割り当ててよい。暗示的シグナリングの実施形態において、例えば、図５（ｃ）に時刻ｔ２で示される様な１つの未使用キャッシュエントリを、ＬＴＲフレームに占有されるまでＳＴＲの保存に用いることができる。長期バッファ領域のサイズを削減し、ＳＴＲフレームの保存用に所定のインデックスを再割り当てするために、解放コマンドを用いてよい。
【００５６】
上述の例は新たなＬＴＲインデックス番号が割り当てられた直後に発行される解放コマンドを示していたが、これはあまり現実的ではない。新たなＬＴＲインデックス番号の割り当ては、ＬＲＴバッファ領域の拡張を示し、それは動きの統計値が動きの現象を検出している場合に生じる可能性が高いであろう。ＬＴＲインデックス番号の解放は、ＬＴＲバッファ領域の縮小を示し、をれは動きの統計値が動きの増加を示している場合に生じる可能性が高いであろう。従って、これら２つの事象の一方が他方の直後に起こる可能性は低い。この例は長期バッファ領域と短期バッファ領域の拡張および縮小の効果を単に示すために提供されているものである。
【００５７】
上述の説明は符号化器と復号器という文脈における本発明の実施形態の動作に関するものであった。一般に、ビデオ符号化器は電子機器として提供されている。それらは特定用途向け集積回路、フィールドプログラマブルゲートアレイおよび／またはデジタルシグナルプロセッサのような集積回路で実施可能である。あるいは、パーソナルコンピュータ、ノートブックコンピュータ、またはコンピュータサーバで実行されるコンピュータプログラムでも実施可能である。同様に、復号器についても、特定用途向け集積回路、フィールドプログラマブルゲートアレイおよび／またはデジタルシグナルプロセッサのような集積回路や、パーソナルコンピュータ、ノートブックコンピュータ、またはコンピュータサーバで実行されるコンピュータプログラムで実施可能である。復号器は一般に、ゲームシステム、ＤＶＤプレーヤ、ポート他ブルメディアプレーヤのような家庭用電化製品に内蔵されており、またビデオゲーム、ブラウザベースのメディアプレーヤなどの消費者向けソフトウェアアプリケーションに内蔵されてもよい。
【００５８】
本発明のいくつかの実施形態を具体的にここで図示および／または説明した。しかし、本発明の変形物および波生物は上述した教示に包含されるとともに、本発明の精神および意図された範囲を逸脱することなく、添付の特許請求の範囲で規定される発明の範囲内であることが理解されよう。
【図２】
0005724038.tif 000002
【図３】
0005724038.tif 000003
【図４】
0005724038.tif 000004
【図５】
0005724038.tif 000005
【図６】
0005724038.tif 000006
【図１】
0005724038.tif 000007