(57)【要約】開示された動作推定技術およびビデオエンコードデバイスは、現在のビデオブロックに対する正確な動作推定パラメータを生成するために２次元パイプラインを用いる。２次元パイプラインは、現在のビデオブロックの正確な動作ベクトル、動作ベクトル予測変量、およびモード判定を生成する前に、現在のビデオブロックと同じ行における先行するビデオブロックを含む関連近隣ビデオブロックの、以前に計算された動作推定パラメータを用いる。２次元パイプラインを用いることによって、動作ベクトルを計算する際に、以前は利用可能ではない近隣ビデオブロックから、正確な動作ベクトル予測変量を得ることができる。２次元パイプラインでは、３つのエンジン、すなわち取得エンジンと、整数探索エンジンと、部分および空間探索エンジンとが使用される。取得エンジンと、部分および空間探索エンジンとが、１つの行で動作している間、整数探索エンジンが、別の行で動作する。
2009510845.tif 000002
【特許請求の範囲】
【請求項１】
現在のビデオブロックに対する正確な動作ベクトル、動作ベクトル予測変量、およびモード判定を生成するために２次元パイプラインを用いる動作推定器を有するデバイスであって、
前記現在のビデオブロックに対する正確な動作ベクトル、動作ベクトル予測変量、およびモード判定を生成する前に、前記２次元パイプラインが、前記現在のビデオブロックと同じビデオブロック行における先行するビデオブロックを含む関連近隣ビデオブロックの完了した動作ベクトル、動作ベクトル予測変量、およびモード判定計算を用いるデバイス。
【請求項２】
前記２次元パイプラインは、ビデオブロック行において動作する取得エンジンおよび部分空間探索エンジンを用いることを備え、その間、整数検索エンジンが、別のビデオブロック行において動作する請求項１に記載のデバイス。
【請求項３】
前記２次元パイプラインは、前記パイプライン内で少なくとも２ステージを処理することを含む請求項１に記載のデバイス。
【請求項４】
前記ビデオブロックは、８×８ブロック、８×４ブロック、４×８ブロック、４×４ブロック、または２×２ブロックのマクロブロックである請求項１に記載のデバイス。
【請求項５】
動作推定器を含むデバイスにおいて、現在のビデオブロックに対する正確な動作推定パラメータを生成するために２次元パイプライン処理を実行する方法であって、
前記２次元パイプライン処理は、前記現在のビデオブロックの正確な動作推定パラメータを生成する前に、前記現在のビデオブロックと同じビデオブロック行における先行するビデオブロックを含む近隣ビデオブロックの、以前に計算された動作推定パラメータを識別することを含む方法。
【請求項６】
前記動作推定パラメータは、前記現在のビデオブロックからの動作ベクトル、前記現在のビデオブロックに関連付けられた動作ベクトル予測変量、およびモード判定である請求項５に記載の方法。
【請求項７】
前記２次元パイプライン処理は、ビデオブロック行において動作する取得エンジンおよび部分空間探索エンジンを用いることを備え、その間、整数検索エンジンが、別のビデオブロック行において動作する請求項５に記載の方法。
【請求項８】
前記２次元パイプライン処理は、前記パイプライン内で少なくとも２ステージを含む請求項５に記載の方法。
【請求項９】
前記ビデオブロックは、８×８ブロック、８×４ブロック、４×８ブロック、４×４ブロック、または２×２ブロックのマクロブロックである請求項５に記載の方法。
【請求項１０】
現在のビデオブロックに対する正確な動作推定パラメータを生成するために２次元パイプライン処理を実行する手段を含む動作推定器を有するデバイスであって、
前記２次元パイプライン処理は、前記現在のビデオブロックの正確な動作推定パラメータを生成する前に、前記現在のビデオブロックと同じビデオブロック行における先行するビデオブロックを含む関連する近隣ビデオブロックの、以前に計算された動作推定パラメータを識別する手段を有するデバイス。
【請求項１１】
前記動作推定パラメータは、前記現在のビデオブロックからの動作ベクトル、前記現在のビデオブロックに関連付けられた動作ベクトル予測変量、およびモード判定である請求項１０に記載のデバイス。
【請求項１２】
前記２次元パイプライン処理は、ビデオブロック行において動作する取得エンジンおよび部分空間探索エンジンを用いることを備え、その間、整数検索エンジンが、別のビデオブロック行において動作する請求項１０に記載のデバイス。
【請求項１３】
前記２次元パイプライン処理は、前記パイプライン内で少なくとも２ステージを含む請求項１０に記載のデバイス。
【請求項１４】
前記ビデオブロックは、８×８ブロック、８×４ブロック、４×８ブロック、４×４ブロック、または２×２ブロックのマクロブロックである請求項１０に記載のデバイス。
【請求項１５】
実行された場合、現在のビデオブロックに対する動作ベクトルを生成する命令を格納して有するコンピュータ読取可能媒体を備えるコンピュータプログラム製品であって、
現在のビデオブロックに対する正確な動作推定パラメータを生成するために２次元パイプライン処理を実行するための各命令のセットを備え、前記２次元パイプライン処理は更に、前記現在のビデオブロックの正確な動作推定パラメータを生成する前に、前記現在のビデオブロックと同じビデオブロック行における先行するビデオブロックを含む近隣ビデオブロックの、以前に計算された動作推定パラメータを識別する命令を含むコンピュータプログラム製品。
【請求項１６】
前記動作推定パラメータは、前記現在のビデオブロックからの動作ベクトル、前記現在のビデオブロックに関連付けられた動作ベクトル予測変量、およびモード判定である請求項１５に記載のコンピュータプログラム製品。
【請求項１７】
前記２次元パイプライン処理は、ビデオブロック行において動作する取得エンジンおよび部分空間探索エンジンを用いることを備え、その間、整数検索エンジンが、別のビデオブロック行において動作する請求項１５に記載のコンピュータプログラム製品。
【請求項１８】
前記２次元パイプライン処理は、前記パイプライン内で少なくとも２ステージを含む請求項１５に記載のコンピュータプログラム製品。
【請求項１９】
前記ビデオブロックは、８×８ブロック、８×４ブロック、４×８ブロック、４×４ブロック、または２×２ブロックのマクロブロックである請求項１５に記載のコンピュータプログラム製品。
【請求項２０】
ビデオエンコード方法であって、
エンコードされる現在のビデオブロックに近接したビデオブロックについて以前に計算された動作ベクトルに基づいて、動作ベクトル予測変量を計算することと、
前記現在のビデオブロックをエンコードするために用いられる予測ブロックに対する探索の際に、前記動作ベクトル予測変量を用いることと、
２次元パイプラインを用いて少なくとも２つのビデオブロックを処理することによって、少なくとも１つの動作ベクトル予測変量と、少なくとも１つの動作ベクトルとを計算することと
を備える方法。
【請求項２１】
前記エンコードされる現在のビデオブロックと、最良予測ブロックとの差を示す差分ブロックを生成することを更に備える請求項２０に記載の方法。
【請求項２２】
前記動作ベクトル予測値に少なくとも部分的に依存する歪み測定値を計算することを含み、前記現在のビデオブロックをエンコードするために使用される前記予測ビデオブロックに対する動作ベクトルを識別することを更に備える請求項２１に記載の方法。
【請求項２３】
前記歪み測定値は、異なる動作ベクトルをエンコードするために必要とされるビット数を定量化する請求項２２に記載の方法。
【請求項２４】
前記現在のビデオブロックをエンコードするために使用される最良予測ブロックに対する動作ベクトルを識別するために、異なる空間分解で、ステージにおける探索を実行することを更に備える請求項２０に記載の方法。
【請求項２５】
前記２次元パイプラインは、ビデオブロック行において動作する取得エンジンおよび部分空間探索エンジンを用いることを備え、その間、整数検索エンジンが、別のビデオブロック行において動作する請求項２０に記載のデバイス。
【請求項２６】
ビデオエンコードデバイスであって、
異なる動作ベクトルに関連付けられたデータ量に少なくとも部分的に依存する歪み測定値を計算することを含み、現在のビデオブロックをエンコードするために使用される最良予測ブロックに対する動作ベクトルを識別する動作推定器と、
エンコードされる現在のビデオブロックと、前記最良予測ビデオブロックとの差分を示す差分ブロックを生成する動作補償器と、
少なくとも２つのビデオブロック行にわたって２次元パイプラインを用いることによって、少なくとも１つの動作ベクトルと、少なくとも１つの動作ベクトル予測変量とを計算することと
を備えるビデオエンコードデバイス。
【請求項２７】
前記動作推定器は、前記現在のビデオブロックをエンコードするために使用される前記最良予測ブロックに対する動作ベクトルを識別するために、異なる空間分解で、ステージにおける探索を実行する請求項２６に記載のビデオエンコードデバイス。
【請求項２８】
前記ビデオエンコードデバイスは、エンコードされる前記現在のビデオブロックに近接したビデオブロックについて以前に計算された動作ベクトルに基づいて、動作ベクトル予測変量を計算し、
前記動作ベクトル予測変量の値は、前記ステージのうちの少なくとも１つにおける探索を定義し、前記歪み測定値を計算するためにも使用される請求項２６に記載のビデオエンコードデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で記述されるものは、デジタルビデオ処理に関し、更に詳しくは、ビデオシーケンスのエンコードに関する。
【背景技術】
【０００２】
デジタルビデオ機能は、デジタルテレビ、デジタル直接ブロードキャストシステム、無線通信デバイス、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、デジタル録画デバイス、セル電話または衛星ラジオ電話等を含む広範囲なデバイスに組み込むことができる。デジタルビデオデバイスは、フルモーションビデオシーケンスを生成し、修正し、送信し、格納し、記録し、再生する際において、従来のアナログビデオシステムに対して顕著な改善を与えることができる。
【０００３】
多くの異なるビデオエンコード規格が、デジタルビデオシーケンスのエンコードのために確立された。Moving Picture Experts Group（ＭＰＥＧ）は、例えば、ＭＰＥＧ−１、ＭＰＥＧー２およびＭＰＥＧ−４を含む多くの規格を開発した。その他の規格は、国際電気通信連合（ＩＴＵ）Ｈ．２６３規格、Ｃａｌｉｆｏｒｎｉａ州Ｃｕｐｅｒｔｉｏｎのアップルコンピュータ社によって開発されたＱｕｉｃｋＴｉｍｅ（登録商標）技術、Ｗａｓｈｉｎｇｔｏｎ州Ｒｅｄｍｏｎｄのマイクロソフト社によって開発されたＶｉｄｅｏ  ｆｏｒ  Ｗｉｎｄｏｗｓ（登録商標）、インテル社によって開発されたＩｎｄｅｏ（登録商標）、Ｗａｓｈｉｎｇｔｏｎ州Ｓｅａｔｔｌｅのリアルネットワークス社のＲｅａｌＶｉｄｅｏ（登録商標）、ＳｕｐｅｒＭａｃ社によって開発されたＣｉｎｅｐａｋ（登録商標）を含む。ＩＴＵ  Ｈ．２６４規格や、多くの所有権付き規格を含む新たな規格が、出現および発展を続けている。
【０００４】
多くのビデオエンコード規格は、圧縮方式でデータをエンコードすることにより、ビデオシーケンスの改善された伝送レートを可能にする。圧縮は、ビデオフレームの実際の伝送のために送信される必要のあるデータの全体量を低減することができる。ほとんどのビデオエンコード規格は、例えば、圧縮無しで達成できるよりも狭い帯域幅にわたったビデオおよびイメージ送信を容易にするように設計されたグラフィックス圧縮技術およびビデオ圧縮技術を利用する。
【０００５】
ＭＰＥＧ規格およびＩＴＵ  Ｈ．２６３およびＩＴＵ  Ｈ．２６４規格は、例えば、フレーム間圧縮を提供するため、時間的相関あるいはフレーム間相関と称される連続したビデオフレーム間の類似点を利用するビデオエンコード技術をサポートする。このフレーム間圧縮技術は、ビデオフレームのピクセルベース表示を、動作表示に変換することによって、フレームにわたったデータ冗長を活用する。更に、幾つかのビデオエンコード技術は、ビデオフレームを更に圧縮するために、空間フレーム相関またはフレーム内相関と称されるフレーム内の類似性を活用することができる。
【０００６】
圧縮をサポートするために、デジタルビデオデバイスは、デジタルビデオシーケンスを圧縮するエンコーダと、デジタルビデオシーケンスを解凍するデコーダとを含んでいる。多くの場合、エンコーダとデコーダは、ビデオイメージのシーケンスを定義するフレーム内のピクセルのブロック上で動作する統合型エンコーダ／デコーダ（ＣＯＤＥＣ）を形成する。国際電気通信連合（ＩＴＵ）Ｈ．２６４規格では、例えばエンコーダは、一般に、送信されるビデオフレームを、１６×１６のピクセルアレイを備えうる“マクロブロック”（ＭＢ）と称されるビデオブロックへ分割する。ＩＴＵ  Ｈ．２６４規格は、１６×１６ビデオブロック、１６×８ビデオブロック、８×１６ビデオブロック、８×８ビデオブロック、８×４ビデオブロック、４×８ビデオブロック、および４×４ビデオブロックをサポートする。その他の規格は、異なるサイズのビデオブロックをサポートしうる。
【０００７】
ビデオフレーム内の個々のビデオブロックについて、エンコーダは、１または複数の直前（または直後）のビデオフレームの類似サイズのビデオブロックを探索して、「最良予測ブロック」と称される最も類似したビデオブロックを識別する。現在のビデオブロックを、他のフレームのビデオブロックと比較する処理は、一般に、動作推定と呼ばれる。ビデオブロックについて一旦「最良予測ブロック」が識別されると、エンコーダは、現在のビデオブロックと、最良予測ブロックとの差分をエンコードすることができる。現在のビデオブロックと最良予測ブロックとの差分をエンコードするこの処理は、動作補償と称される処理を含む。動作補償は、エンコードされる現在のビデオブロックと、最良予測ブロックとの差を示す差分ブロックを生成する処理を含む。通常、動作補償とは、動作ベクトルを用いて最良予測ブロックを取得し、次に、最良予測ブロックを入力ブロックから引くことによって、差分ブロックを生成する動作を称する。
【０００８】
動作補償が、この差分ブロックを生成した後、一般には、一連の追加のエンコードステップが実行され、差分ブロックがエンコードされる。これら追加のエンコードステップは、使用されているエンコード規格に依存しうる。例えば、ＭＰＥＧ−４に準拠したエンコーダでは、追加のエンコードステップは、８×８離散コサイン変換を含む。この変換の後、スカラー量子化、ラスタ−ジグザグ（raster-to-zigzag）再整列、ランレングスエンコード、Ｈｕｆｆｍａｎエンコードがなされる。エンコードされた差分ブロックは、先行するフレーム（または後続するフレーム）からのどのビデオブロックがエンコードのために使用されるかを示す動作ベクトルとともに送信することができる。デコーダは、この動作ベクトルと、エンコードされた差分ブロックとを受け取り、受け取った情報をデコードして、ビデオシーケンスを再構築する。
【０００９】
エンコード処理を単純化および改良することは極めて望ましい。この目的のために、種々様々なエンコード技術が開発されている。動作推定は、ビデオエンコードにおいて最も計算集約的な処理のうちの１つであるので、動作推定に対する改良は、ビデオエンコード処理において顕著な改良を与えることができる。
【００１０】
動作ベクトルを計算する際に、より効率的で正確な方法を見つけることが望ましい。
【発明の開示】
【発明の概要】
【００１１】
本願は、その全体が参照によって本明細書に組み込まれ、本願の譲受人に譲渡された、２００５年９月２２日出願の米国仮出願６０／７１９，８９１号の優先権を主張する。
【００１２】
本開示は、ビデオエンコードを改善することができる動作推定技術について記述する。特に、本開示は、フレーム内のビデオブロックを処理するための従来とは異なる方法を提案する。動作推定を改善するために技術を以下に述べる。１つの実施形態では、２次元パイプラインを用いて、現在のビデオブロックの動作推定パラメータを正確に生成する動作推定器が説明される。２次元パイプラインは、正確な動作推定パラメータを生成する前に、現在のビデオブロックと同じ行における先行するビデオブロックを含む関連近隣ビデオブロックの、以前に計算された動作推定パラメータを使用する。動作推定パラメータは、例えば、動作ベクトル、動作ベクトル予測変量、およびモード決定である。開示された動作推定技術は、ピクセルを取得するエンジン／モジュールと、整数ピクセル探索を実行するエンジン／モジュールと、ピンポン方式で少なくとも２つのビデオブロック行にわたって精細な部分（fractional）および空間探索を実行するエンジン／モジュールとをパイプライン化することによってエンコードを改善することができる。ピン部分の間、第１のブロック行からの２つのビデオブロックが処理される。その間、別のビデオブロック行において同時処理が行われている。ポン部分の間、第２のブロック行からの２つのビデオブロックが処理される。その間、第１のブロック行では、別のビデオブロックが処理されている。このピンポン方式の処理によって、整数探索エンジン／モジュールは、正確な動作ベクトル予測変量（ＭＶＰ：motion vector predictor）によって、費用に関してより正確な動作ベクトルを計算し、出力することが可能となる。この動作ベクトルは、部分および空間エンジン／モジュールが、全ての近隣ビデオブロックを処理した後にのみ得られる。ＭＶＰは、所望の動作ベクトルの初期推定値であり、一般に、近隣ビデオブロックについて以前に計算された動作ベクトルに基づいて計算される。１つのビデオブロック行だけが連続して処理される技術では、ＭＶＰは、実際の値ではなく、推定値である。推定値のみしか使用しなければ、動作推定に用いられる精度は制限される。ここで開示された技術を用いる１つの利点は、動作推定を計算する際に、全ての精細な分解の実際の値を用いることである。他の長所は、２次元パイプラインを用いることによって、別の行の部分を処理する前に、１つの行全体が処理されるのを待つ必要があるという問題を解決することである。そのため、２次元パイプラインを用いるこのピンポン方式の処理は、通信バス上の帯域幅を低減する。探索領域を更新するための、外部メモリに対するリフレッシュの数も、著しく低減することができる。
【００１３】
本開示における実施形態は、歪み測定値の計算を提案する。本実施形態は、エンコードされる現在のビデオブロックに近接したビデオブロックについて以前に計算された動作ベクトルに基づいて動作ベクトル予測変量を計算することと、現在のビデオブロックをエンコードするために使用される予測ビデオブロックを探索する際に、動作ベクトル予測変量を用いることとを備える方法を開示する。この実施形態は、歪み測定値の計算を最小化するために、実際の全ての動作ベクトル予測変量を用いる方法を更に記載する。
【００１４】
本明細書で記述されたこれら技術およびその他の技術は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせによって、デジタルビデオデバイス内で実現される。ソフトウェアで実現される場合、本技術は、実行された場合に、本明細書に記載のエンコード技術のうちの１または複数を実行するプログラムコードを備えたコンピュータ読取可能媒体に向けられうる。様々な実施形態の更なる詳細が、添付図面および下記記載において述べられる。その他の特徴、他の機能、客体、および長所も、これら記載および図面、更には特許請求の範囲から明白になるだろう。
【詳細な説明】
【００１５】
本開示は、ビデオエンコードを改善するために使用することができる動作ベクトル（ＭＶ）および動作ベクトル予測変量（ＭＶＰ）の両方を計算する多次元技術について記述する。この技術は、一般に、動作推定のための全体的な処理に関連して説明されるが、様々なシナリオにおいて、これら技術のうちの１または複数が、個別に使用されうることが理解される。一般にＭＶＰは、例えば、記録されている隣接ビデオブロックの動作ベクトルのメジアンとして、近隣ビデオブロックのために以前に計算された動作ベクトルに基づいて計算される。しかしながら、ＭＶＰを計算するために、例えば動作ベクトルまたは近隣ビデオブロックの平均や、より複雑な数学的関数のようなその他の数学的関数も使用されうる。
【００１６】
図１Ａは、ソースデバイス１１２ａが、エンコードされたビットストリームを、通信リンク１１３を介して受信デバイス１１４ａへ送信するシステム１００の例を示すブロック図である。ソースデバイス１１２ａおよび受信デバイス１１４ａは、両方ともデジタルビデオデバイスでありうる。特に、ソースデバイス１１２ａは、例えば、ＭＰＥＧ−４規格、ＩＴＵ  Ｈ．２６３規格、ＩＴＵ  Ｈ．２６４規格、あるいはビデオエンコードにおいて動作推定を活用するその他様々な規格のようなビデオ規格にしたがうビデオデータをエンコードする。システム１００のデバイス１１２ａ，１１４ａの一方または両方は、ビデオエンコード処理を改善するために、以下に詳述するようにして動作推定技術および動作補償技術を実施する。
【００１７】
通信リンク１１３は、例えばインターネット、公衆交換電話網（ＰＳＴＮ）、あるいはデータ伝送可能なその他任意の通信リンクのようなグローバルネットワークや、広域ネットワークや、ローカル領域ネットワークのようなネットワークベースのパケット、光ファイバ、物理的伝送路、無線リンクを備えうる。通信リンク１１３は、例えばＣＤ、ＤＶＤ等のような記憶媒体と接続されうる。したがって、通信リンク１１３は、ソースデバイス１１２ａから受信デバイス１１４ａへとビデオデータを送信するための任意の適切な通信媒体、または恐らくは異なるネットワークおよびリンクの集合を表す。
【００１８】
ソースデバイス１１２ａは、ビデオシーケンスをキャプチャし、キャプチャしたシーケンスをメモリ１１６内に格納する例えばビデオカメラのようなビデオキャプチャデバイス１１５を含む。ビデオシーケンスは、ディスプレイ１１７上で見ることができる。特に、ビデオキャプチャデバイス１１５は、電荷結合素子（ＣＣＤ）、電源投入デバイス、フォトダイオードアレイ、相補性金属酸化膜半導体（ＣＭＯＳ）デバイス、あるいは、ビデオイメージまたはデジタルビデオシーケンスをキャプチャすることができるその他任意の感光性デバイスを含みうる。
【００１９】
更なる例として、ビデオキャプチャデバイス１１５は、例えば、テレビ、ビデオカセットレコーダ、カムコーダ、またはその他のビデオデバイスからのアナログビデオデータをデジタルビデオデータに変換するビデオコンバータでありうる。幾つかの実施形態では、ソースデバイス１１２ａは、通信リンク１１３によってリアルタイムでビデオシーケンスを送信するように構成されうる。その場合、受信デバイス１１４ａは、リアルタイムでビデオシーケンスを受信し、そのビデオシーケンスをユーザへ表示しうる。あるいは、ソースデバイス１１２ａは、受信デバイス１１４ａへ送られたビデオシーケンスをキャプチャして、ビデオデータファイルとして非リアルタイムでエンコードする。従って、ソースデバイス１１２ａおよび受信デバイス１１４ａは、例えばモバイル無線ネットワークにおいて、例えばビデオクリッププレイバック、ビデオメール、またはビデオカンファレンスのようなアプリケーションをサポートすることができる。デバイス１１２ａ，１１４ａは、図１に具体的に例示されていないその他の様々な要素を含むことができる。
【００２０】
更に、ソースデバイス１１２ａは、ビデオデータをエンコードおよび送信することが可能な任意のデジタルビデオデバイスでありうる。ソースデバイス１１２ａはまた、シーケンスをエンコードするビデオエンコーダ１１８と、エンコードされたビットストリームを、通信リンク１１３を介して受信デバイス１１４ａへ送信する送信機１２０とを含みうる。ビデオエンコーダ１１８は、例えば様々なハードウェア、ソフトウェア、ファームウェア、あるいは、例えば、本明細書で記述されるようなビデオエンコード技術を制御するプログラマブルソフトウェアモジュールを実行する１または複数のデジタルシグナルプロセッサ（ＤＳＰ）を含みうる。ビデオエンコード技術を制御する際にＤＳＰを支援するために、関連するメモリおよび論理回路が提供されうる。説明するように、動作ベクトル予測変量（ＭＶＰ）の正確な値が使用される場合、ビデオエンコーダ１１８はより良好に動作する。
【００２１】
受信デバイス１１４ａは、ビデオデータの受信およびデコードが可能な任意のデジタルビデオデバイスの形態をとりうる。例えば、受信デバイス１１４ａは、エンコードされたデジタルビデオシーケンスを、例えば中間リンク、ルータ、その他のネットワーク機器等を介して送信機１２０から受信する受信機１２２を含むことができる。受信デバイス１１４ａはまた、ビットストリームをデコードするビデオデコーダ１２４と、デコードされたビットストリームのシーケンスをユーザへ表示するディスプレイデバイス１２６とを含むことができる。しかしながら、幾つかの実施形態では、受信デバイス１１４ａは、統合式ディプレイデバイスを含んでいないかもしれない。そのような場合、受信デバイス１１４ａは、例えばテレビやモニタのような離散的なディスプレイデバイスを駆動するために、受信したビデオデータをデコードする受信機として動作する。
【００２２】
ソースデバイス１１２ａおよび受信デバイス１１４ａのデバイスの例は、コンピュータネットワーク上に配置されたサーバ、ワークステーションまたはその他のデスクトップ計算デバイス、および、例えばラップトップコンピュータやパーソナルデジタルアシスタント（ＰＤＡ）のようなモバイル計算デバイスを含みうる。他の例は、例えばデジタルテレビのようなデジタルテレビブロードキャスト衛星デバイスおよび受信デバイス、デジタルカメラ、デジタルビデオカメラあるいは他のデジタル記録デバイス、例えばビデオ機能を有するモバイル電話のようなデジタルビデオ電話、ビデオ機能を備えたダイレクト二方式通信デバイス、その他の無線ビデオデバイス等を含む。
【００２３】
幾つかの場合、ソースデバイス１１２ｂおよび受信デバイス１１４ｂはそれぞれ、デジタルビデオデータをエンコードおよびデコードするため、図１Ｂに示すようなエンコーダ／デコーダ（コーデック）を含む。特に、ソースデバイス１１２ａと受信デバイス１１４ａとの両方は、メモリおよびディスプレイの他に、送信機および受信機を含むことができる。以下に概説するエンコード技術の多くは、エンコーダを含むデジタルビデオデバイスに関して記述される。しかしながら、エンコーダが、コーデックの一部を形成しうることが理解される。その場合、コーデックは、ハードウェア、ソフトウェア、ファームウェア、ＤＳＰ、マイクロプロセッサ、特定用途向けＩＣ（ＡＳＩＣ）、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）、離散的なハードウェア要素、またはこれらの様々な組合せによって実現されうる。
【００２４】
ソースデバイス１１２ａあるいはソースデバイス１１２ｂ内のビデオエンコーダ１１８は、ビデオデータをエンコードするために、ビデオフレームのシーケンス内のピクセルのブロックについて動作する。例えば、ビデオエンコーダ１１８は、送信されるビデオフレームが、ピクセルのブロック（ビデオブロックと称される）へ分割される動作推定技術および動作補償技術を実行しうる。このビデオブロックは、例示目的のために、任意のサイズのブロックを備えることができ、また、与えられたビデオシーケンス内で変化しうる。例として、ＩＴＵ  Ｈ．２６４規格は、１６×１６のビデオブロック、１６×８のビデオブロック、８×１６のビデオブロック、８×８のビデオブロック、８×４のビデオブロック、４×８のビデオブロック、および４×４のビデオブロックをサポートする。ビデオエンコードにおいて、より小さなビデオブロックを用いることによって、エンコードにおけるより良い圧縮を生み出すことができ、特に、より高レベルの詳細を含むビデオフレームの位置のために使用することができる。
【００２５】
ビデオブロック内のピクセルはそれぞれ、例えば８ビットのように、ｎ−ビット値によって表される。これは、例えばクロミナンスや輝度の値における色や強度のようなピクセルの視覚特性を定める。しかしながら、動作推定はしばしば、輝度成分のみについて実行される。なぜなら、人間は、クロミナンスよりも輝度の変化により敏感だからである。従って、動作推定の目的のために、ｎ−ビット値全体が、与えられたピクセルのための輝度を定量化しうる。しかしながら、本開示の原理は、ピクセルのフォーマットに限定されず、より簡単な少ないビットピクセルフォーマットや、より複雑な多くのビットピクセルフォーマットとともに使用されるために拡張することができる。
【００２６】
ビデオフレーム内の個々のビデオブロックについて、ソースデバイス１１２ａあるいはソースデバイス１１２ｂのビデオエンコーダ１１８は、予測ビデオブロックと称される類似のビデオブロックを識別するために、既に送信された１または複数の先行するビデオフレーム（または後続するビデオフレーム）を求めて、メモリ１１６に格納されたビデオブロックを探索することによって、動作推定を実行する。ある場合には、予測ビデオブロックは、先行するビデオフレームまたは後続するビデオフレームからの「最良予測ブロック」を備えうるが、本開示は、この点に限定されない。ビデオエンコーダ１１８は、エンコードされる現在のビデオブロックと、最良予測ブロックとの差を示す差分ブロックを生成するために動作補償を行なう。動作補償は、通常、動作ベクトルを用いて最良予測ブロックを取得し、次に、最良予測ブロックを入力ブロックから引いて、差分ブロックを生成する動作を称する。
【００２７】
動作補償処理が、差分ブロックを生成した後、差分ブロックをエンコードするために、一般に、一連の追加エンコードステップが行なわれる。これらの追加エンコードステップは、使用されているエンコード規格に依存しうる。
【００２８】
一旦エンコードされると、エンコードされた差分ブロックは、エンコードのために使用された先行フレーム（または後続フレーム）からビデオブロックを識別する動作ベクトルまたはエンコードされた動作ベクトルとともに送信される。このように、各フレームを独立したピクチャとしてエンコードするのではなく、ビデオエンコーダ１１８は、隣接するフレーム間の差分をエンコードする。そのような技術は、ビデオシーケンスの各フレームを正確に表わすために必要なデータの量を著しく低減することができる。
【００２９】
動作ベクトルは、エンコードされているビデオブロックの上部左手コーナに対するピクセル位置を定義することができる。しかしながら、動作ベクトルのためのその他のフォーマットを使用することもできる。動作ベクトルを使用してビデオブロックをエンコードすることによって、ビデオデータのストリームの送信のために必要な帯域幅を、著しく低減することができる。
【００３０】
ある場合には、ビデオエンコーダ１１８は、フレーム間エンコードに加えて、フレーム内エンコードをサポートすることができる。フレーム内エンコードは、ビデオフレームを更に圧縮するために、空間相関またはフレーム内相関と称される類似物をフレーム内で利用することができる。フレーム内圧縮は、一般に、例えば離散コサイン変換（ＤＣＴ）エンコードのような、静止画像の圧縮のためのテクスチャエンコードに基づく。フレーム内圧縮は、しばしば、フレーム間圧縮と共に使用されるが、幾つかの実施では、代替として使用することができる。
【００３１】
受信デバイス１１４ａの受信機１２２は、エンコードされているビデオブロックと、動作推定に使用される最良予測ブロックとの間のエンコード済差分を示すエンコード済差分ブロックおよび動作ベクトルの形態をしたエンコード済ビデオデータを受信することができる。しかしながら、ある場合には、動作ベクトルを送るのではなく、動作ベクトルとＭＶＰとの差分が送信される。何れの場合も、ディスプレイデバイス１２６を介してユーザに表示するためのビデオシーケンスを生成するために、ビデオデコーディングを実行することができる。受信デバイス１１４ａのデコーダ１２４は、図１Ｂに示すようにエンコーダ／デコーダ（コーデック）として実現することもできる。その場合、ソースデバイス１１２ｂと受信デバイス１１４ｂとの両方が、デジタルビデオシーケンスのエンコード、送信、受信、およびデコードを行うことができる。
【００３２】
図２は、図１Ａまたは図１Ｂのデバイスにおいて使用されうる典型的なビデオエンコーダを図示する。ビデオシーケンスからのフレームまたはフレームの一部は、コーデック２４の一部でありうるビデオエンコーダ１１８内部の入力フレームバッファ２４２内に入力されうる。入力フレームバッファ２４２からの入力フレームは、ブロックへ分解され（ビデオブロックは任意のサイズからなることができるが、標準的な平方ビデオブロックサイズは４×４、８×８、または１６×１６である）、ビデオブロックバッファ２４３へ送られる。ビデオブロックバッファ２４３は、一般に、減算器２４４にビデオブロックを送る。減算器２４４は、スイッチ２４６の出力から、ビデオブロックｘを減算する。スイッチ２４６は、エンコードの符号内予測モードと符号間予測モードとの間を切り換えることができる。スイッチ２４６が、符号間予測モードをイネーブルしているのであれば、異なる（先行または後続する）フレームからのビデオブロックとｘとの差分が、テクスチャエンコーダ２４７によって圧縮される。スイッチ２４６が符号内予測モードをイネーブルしているのであれば、同じフレーム内の前のビデオブロックからの予測値とｘとの差分が、テクスチャエンコーダ２４７によって圧縮される。
【００３３】
テクスチャエンコーダ２４７は、ＤＣＴブロック２４８を有している。ＤＣＴブロック２４８は、ピクセル領域からの入力ｘ（ビデオブロックまたは差分ブロック）を、空間周波数領域へ変換する。空間周波数領域では、データは、ＤＣＴブロック係数によって表わされる。ＤＣＴブロック係数は、ビデオブロックにおいて検出された空間周波数の数および次数（degree）を表わす。ＤＣＴが計算された後、ＤＣＴブロック係数は、「ブロック量子化」として知られる処理で、量子化器２５０によって量子化されうる。（ビデオブロックまたは差分ビデオブロックの何れかから得られる）ＤＣＴブロック係数を量子化することによって、空間冗長部分がブロックから取り除かれる。この「ブロック量子化」処理中に、量子化されたＤＣＴブロック係数をしきい値と比較することによって、更なる空間冗長が取り除かれる。この比較は、量子化器２５０の内部、あるいは別の比較ブロック（図示せず）の内部でなされうる。量子化されたＤＣＴブロック係数の大きさが、しきい値未満である場合、この係数は破棄されるか、またはゼロ値に設定される。
【００３４】
ブロック量子化の後、結果として得られた出力は、２つの個別の構成要素、すなわち、（１）テクスチャデコーダ２６５、および（２）エントロピエンコーダ２５５へ送られる。テクスチャデコーダ２６５は、逆量子化器２６６を備える。逆量子化器２６６は、符合化予測モードで使用される再構築ビデオブロックまたはフレームの生成を支援する。エントロピエンコーダ２５５は、送信または記憶のためのビットストリームを生成する。エントロピエンコーダ２５５は、スキャナ２５６を含みうる。スキャナ２５６は、ブロック量子化出力を受け取り、それを、可変長コーダ（ＶＬＣ）２５８によるより効率的なエンコードのために、再配列する。ＶＬＣ２５８は、エンコードされたビットストリームを生成するために、ランレングス技術およびＨｕｆｆｍａｎ符合化技術の使用を適用する。エンコードされたビットストリームは、出力バッファ２６０へ送られる。このビットストリームは、レートコントローラ２６２へ送られうる。基本品質を維持している間、レートコントローラ２６２は、量子化器２５０によって使用される量子化ビットの数をバジェット（budget）する。エントロピエンコードは、非不可逆的な（non-lossy）圧縮形式と考えられる。非不可逆的圧縮は、破壊されたエンコード済データが無くエントロピデコーダによってデコードされるのであれば、エンコードされているデータは、同一に復元されうることを意味する。エントロピエンコーダ２５５は、非不可逆的圧縮を実行する。
【００３５】
不可逆的圧縮（lossy compression）は、エンコードされた入力が破壊されていなくても、エンコードの結果として、入力ｘが、ｘの同一のコピーを生成しないことを意味する。再構築された入力は、その情報の一部を「失って」いる。テクスチャエンコーダ２４７は、不可逆的圧縮を行なう。一般的なビデオエンコーダ１１８は、通常、符号間予測モードと符号内予測モードとの両方の補償を支援するローカルテクスチャデコーダ２６５を有する。テクスチャエンコーダ２４７の出力をデコードし、テクスチャエンコーダ２４７へ入力された入力ｘを再構築するために、逆量子化器２６６と、逆ＤＣＴ２６８と、加算器２６９に送られたスイッチ２４６の出力とが、ともに働く。再構築された入力ｙは、ｘに類似しているように見えるが、正確にはｘではない。一般的なビデオ「デコーダ」は、逆量子化器２６６と、逆ＤＣＴ２６８と、加算器２６９へ送られるスイッチ２４６の出力との機能を備える。
【００３６】
再構築された入力は、メモリバッファ２８１へ送られうる。メモリバッファ２８１の内部には、２つのメモリバッファ、すなわち（１）再構築された新たなフレームバッファ２８２と、（２）再構築された古いフレームバッファ２８４とが存在する。再構築された新たなフレームバッファ２８２は、現在処理された再構築フレーム（又は部分フレーム）を格納する。再構築された古いフレームバッファ２８４は、過去に処理された再構築フレームを格納する。過去に処理された再構築フレームは、（再構築された）基準フレームとして使用される。再構築された基準フレームは、入力フレームバッファ２４２内の現在のフレームの前あるいは後にあるフレームでありうる。現在のフレーム（または現在のフレームからのビデオブロック）、あるいは、現在のフレームと再構築された基準フレームとの間の差分（または差分ブロックからのビデオブロック）は、「現在」エンコードされているものである。現在のフレームがエンコードを終了した後で、かつ、入力フレームバッファ２４２からの入力における次のフレームが、エンコードされるために取得される前に、再構築された古いフレームバッファ２８４が、再構築された新たなフレームバッファ２８２の内容を備えたコピーを用いて更新される。
【００３７】
再構築された新たなフレームバッファ２８２は、空間予測器２８６において使用されるために受け取った、再構築されたビデオブロックを送る。再構築された古いフレームバッファ２８４は、過去に処理された再構築されたビデオブロックをＭＥＣ（動作推定および補償ブロック）２８７へ送る。ＭＥＣブロックは、動作推定器２８８および動作補償器２９０を備える。動作推定器２８８は、動作ベクトル（ＭＶ）２９２および動作ベクトル予測変量（ＭＶＰ）２９４を生成する。これらは、エンコードされているフレームではない他のフレームからの差分を補償するために、動作補償器２９０によって使用される。ＭＶ２９２はまた、エントロピエンコーダ２５５によって使用されうる。例えばＩＴＵ  Ｈ．２６４のような幾つかの規格では、空間予測器２８６の出力が、フレーム内予測モードで使用され、減算器２４４および加算器２６９の両方へ供給される。例えばＭＰＥＧ−４またはＪＰＥＧのような幾つかの規格では、空間予測器２８６は存在しない。
【００３８】
図３は、任意のイメージあるいはフレームの２つの部分的なブロック行を図示する。例として、ブロック行Ｎ−１，Ｎを、ブロック行３，４とする。ブロック行３  ３３０には、９つのビデオブロックがある。例示目的のために、１６×１６ブロックが、本開示の説明を通じて使用される。従って、マクロブロック（ＭＢ）３３１−３３９は、行３  ３３０にあり、行４  ３４０には、９つのＭＢ３４１−３４９がある。ＭＢは、ブロック行番号と、Ｍ番目のマクロブロックに対する位置との両方を示して図示されている。Ｍは、現在のマクロブロックを示す。一般に、ブロック行３は、ブロック行４の前に処理される。本開示では、ブロック行を処理することは、行３  ３３０および行４  ３４０で述べているように、マクロブロックの行を処理することを意味する。それは一般に、任意のサイズのビデオブロック行を処理することをも意味する。
【００３９】
例えば、Ｈ．２６４、ＭＰＥＧ−４、およびＨ．２６３のような様々な規格において、マクロブロック（ＭＢ）３４５に関する動作ベクトルを計算する場合、近隣のＭＢ３４４、ＭＢ３３５、およびＭＢ３３６（または、ＭＢ３３６が利用可能ではない場合にはＭＢ３３４）を事前に知っていることが望まれうる。例えば、Ｈ．２６４では、ＰフレームのＩＮＴＥＲモードは、ＩＮＴＥＲ  １６×１６、ＩＮＴＥＲ  １６×８、ＩＮＴＥＲ  ８×１６、ＩＮＴＥＲ  ８×８でありうる。もしもＩＮＴＥＲ  ８×８モードであれば、ＩＮＴＥＲ  ８×４モード、またはＩＮＴＥＲ  ４×８モード、またはＩＮＴＥＲ  ４×４モードを選択するために、更なる分割がなされる。モードは、そのタイプ（ＩＮＴＥＲ）のみならず、そのサイズにも依存する。また、ＩＮＴＥＲモードおよびＳＫＩＰモードもある。ＳＫＩＰモードを起動する他の条件も存在するが、ＳＫＩＰモードを起動することができる１つの条件は、ＭＶがＭＶＰに等しい場合である。
【００４０】
例えば動作推定は、一般に、ビデオエンコードのその他のどの処理よりも多くの計算リソースを必要とする。この理由により、計算の複雑さを低減し、また、圧縮比の改善を支援する方式で動作推定を実行することが、より強く望まれる。本明細書で記述された動作推定技術は、多くの空間分解により探索を行なう探索スキームを使用することにより、目標を達することができる。これによって、精度を落とすことなく、計算上の複雑さが低減される。更に、歪み測定としても知られているコスト関数が提案される。それは、動作ベクトルをエンコードするコストを含む。動作推定器はまた、ビデオエンコードの精度を改善するために、探索空間の多くの候補位置を使用することができる。また、多くの候補の周囲の探索領域は、プログラム可能である。これによって、この処理は、フレームレートおよびピクチャサイズでスケール可能となる。最後に、動作推定器はまた、例えば、４×８ビデオブロック、８×４ビデオブロック、８×８ビデオブロック、８×１６ビデオブロック、１６×８ビデオブロック、１６×１６ビデオブロック等のような大きな様々なブロック形状のコストを取得するために、例えば４×４ビデオブロックのような多くの小さな平方ビデオブロックのコスト関数を組み合わせる。多くの動作および計算のために、動作ベクトル予測変量（ＭＶＰ）が使用され、動作ベクトル予測変量から導かれる動作ベクトルについてコスト因子が加えられる。ＭＶＰはまた、更なる初期動作ベクトルをも与える。これは、特に、マルチステージ探索の高分解ステージにおいて、探索を定義するために使用することができる。動作ベクトル予測値に少なくとも部分的に依存する歪み測定値の計算は、コスト因子の一部である。歪み測定値は、別の動作ベクトルをエンコードするために必要なビット数を定量化することを助ける。
【００４１】
図４は、フレームにわたって動作推定がどのようになされるかの処理を記載した典型的なフローチャートである。まず、セットアップ手順４００が開始される。セットアップの一部として、基準（過去または未来の）フレームが、メモリへロードされる（４０２）。このメモリは、例えば、ローカルメモリまたはオフメモリ候補ＲＡＭでありうる。次に、現在のフレームがメモリへのロードされる（４０４）。このメモリもまた、例えば、ローカルメモリまたはオフメモリエンコードＲＡＭの一部でありうる。その後、ブロック行において、現在のマクロブロックＭが選択される。次に、現在のマクロブロックＭの周囲において、探索空間が識別される（４０６）。基準フレームから探索空間が一旦識別されると（４０８）、現在のフレームにおける２つのビデオブロック行にわたった２次元ステージパイプラインを処理する動作がなされる（４１０）。これは、１次元ステージパイプラインによって、時間において１つのビデオブロック行を処理することのみを考慮する現在の技術に対する改良である。２次元ステージパイプライン動作が行なわれた後、判定ブロック４１２が、２つのブロック行の終わりに達したかを確認する。２つのブロック行の終わりに達していないのであれば（ＮＯ）、基準フレームにおける探索空間がリフレッシュされ（４１４）、現在のフレームにおいて、２つのブロック行にわたった２次元ステージパイプラインの処理が継続する（４１０）。２つのブロック行の終わりに達しているのであれば（ＹＥＳ）、判定ブロック４１６によって、別の確認がなされる。判定ブロック４１６は、それが、現在のフレームにおける最後の２つのブロック行の終わりであるかを確認する。それが現在のフレーム内の最後の２つのブロック行の終わりではない場合（ＮＯ）には、次の２つのブロック行にインクリメントする動作４１８が行なわれ、現在のフレームにおける２つのブロック行にわたった２次元ステージパイプラインの処理が継続する（４１０）。それが現在のフレーム内の最後の２つのブロック行の終わりであれば（ＹＥＳ）、現在のフレームの処理が終了する。
【００４２】
動作推定（ＭＥ）は、少なくとも２つのエンジンによってビデオブロックを処理することを含んでいる。第１のエンジンは、取得エンジン（ＦＥ）であり、エンコードされるビデオブロックを、メモリから取得する。第２のエンジンは、歪みを最小にする類似のマッチングブロックを見つけ出すために、歪み数的指標を用いる。第２のエンジンは、整数検索エンジン（ＩＳＥ）であり、探索が進むとより精細な分解で実行される探索を備えた階層的探索を適用しうる。第３のエンジンである部分および空間探索エンジンを備える場合もある。これは、歪みを最小にする類似のマッチングブロックを見つけ出すためにより精細な分解の探索を用いる。ＦＳＥは、開始点として、第２のエンジンの結果を用いても良いし、用いなくても良い。典型的な目的のため、動作推定技術の記載は、３つのエンジン、すなわち取得エンジン（ＦＥ）、整数探索エンジン（ＩＳＥ）、部分および空間探索エンジン（ＦＳＥ）を用いてなされる。これらの３つのエンジンは、ビデオブロックを連続的に処理する。一般に、処理の遅れを最小にするために、３つのエンジンは、３つのステージにわたってパイプライン化される。すなわち、ＦＥ、ＩＳＥおよびＦＳＥはすべて、３ステージパイプライン内で並行して動作する。例えば、ステージ１の間、ＦＥは、メモリから現在のマクロブロックＭを取得する。同時に、マクロブロックＭ−１のコーナにおいて、整数ピクセルアンカーポイントに位置するＩＳＥは、基準（過去または未来）フレームから、ベストマッチしたマクロブロックを見つけ出すことを試みる。またステージ１の間、ＦＥエンジンおよびＩＳＥエンジンと同時に動作して、マクロブロックＭ−２内の部分ピクセルアンカーポイントに位置するＦＳＥは、基準（過去または未来）フレームから、ベストマッチしたマクロブロックを見つけ出すことを試みる。動作ベクトルを生成する１つのビデオブロックの完全な処理を完了するために３ステージを要する。３ステージの終了時に、３つの取得と、実行された３つの整数探索と、実行された３つの部分および空間探索とがなされよう。一般に、１次元（１Ｄ）３ステージパイプラインは、１つのビデオブロック行に対して連続して動作する。ビデオブロック行の全体が完全に処理されるまで、第２のブロック行では処理はなされない。
【００４３】
図５は、１次元３ステージパイプラインの概念の実例を図示する。見て分かるように、行３  ３３０のほとんどが処理されている。図５の左上コーナでは、３、Ｍ−３、ＭＢ  パイプライン５２０のステージ１  ５０１の間、３つのうちの２つのエンジンが動作している。ＦＥは、マクロブロック３、Ｍ−３  ３３２に対して動作し、ＩＳＥは、マクロブロック３、Ｍ−４  ３３１に対して動作する。３、Ｍ−３  ＭＢ  パイプライン５２０のステージ２  ５０２と、３、Ｍ−３  ＭＢ  パイプライン５２０のステージ３  ５０３とは、ＦＳＥが、３、Ｍ−３  ＭＢ（マクロブロック）３３２について終了した後、動作ベクトルの生成を終了する。前述したように、一般に、各ステージでは、取得と、整数探索と、部分および空間探索とが実行される。図５では、３、Ｍ−４  マクロブロック３３１の最初の取得を除いて、図３の行３  ３３０内の全てのマクロブロック（ＭＢ）が処理される。１次元パイプライン５２１−５２７については、次のパイプラインのステージ１は常に、前のパイプラインのステージ２である。次のパイプラインのステージ２は、前のパイプラインのステージ３である。従って、ステージ５０２−５１０は、どのパイプラインが現在動作しているかに依存して、パイプライン内のステージ１、ステージ２、またはステージ３となりうる。一般に、１次元パイプラインを使用して、Ｎ個のマクロブロック（つまり、ビデオブロック）を処理するために、Ｎ＋２ステージを要する。
【００４４】
与えられたマクロブロックについて、１次元パイプライン技術は、前の動作ブロックのＦＳＥ結果を都合よく使用しないように、現在のＩＳＥに制約を課す。例えば、ＦＥが、エンコードデータを取得し、ＭＢ３３５についてメモリを更新している場合、ＩＳＥは、ＭＢ３３４に対する整数探索を行っており、ＦＳＥは、ＭＢ３３３に対する部分探索および空間推定を行っている。１次元パイプラインに関する固有の問題は、ＩＳＥは、その左の近隣ＭＢのモードおよび最終動作ベクトル（ＭＶ）を知らず、動作ベクトル予測変量（ＭＶＰ）の正確な推定を得ることができないことである。その結果、動作ベクトル計算は、わずかに外れるかもしれない。従って、１次元パイプライン技術を用いることによって、動作推定（ＭＶを生成すること）と、モード判定（ＭＶＰを生成すること）との間には相互依存性がある。
【００４５】
動作推定とモード判定との間の相互依存性を解決する動作推定技術が、図６に例示される。図６は、３ステージ２次元（２Ｄ）パイプラインと、関連する全ての近隣ＭＢモードとＭＶとの事前情報をＩＳＥに教える動作推定技術とを例示する典型的な図である。図６では、２つのビデオブロック行が、ピンポン方式（ping pong fashion）で処理される。ピン部分の間、第１のビデオブロック行からの２つのビデオブロックが処理される。同時に、別のビデオブロック行に対する処理も行われる。ポン部分の間、第２のビデオブロック行からの２つのビデオブロックが処理される。同時に、第１のビデオブロック行では、別のビデオブロックが処理されている。
【００４６】
図６の左上コーナでは、３、Ｍ−０  ＭＢ  ２次元パイプライン６２１のステージ１  ６０１が図示されている。ＦＥは、マクロブロック３、Ｍ−０  ３３５に対して動作し、ＩＳＥは、マクロブロック４、Ｍ−３  ３４２に対して動作する一方、ＦＳＥは、マクロブロック３、Ｍ−１  ３３４に対して動作する。３、Ｍ−０  ＭＢ  ２次元パイプライン６２１のステージ２  ６０２の間、ＦＥは、マクロブロック４、Ｍ−２  ３４３に対して動作し、ＩＳＥは、マクロブロック３、Ｍ−０  ３３５に対して動作する一方、ＦＳＥは、マクロブロック４、Ｍ−３  ３４２に対して動作する。３、Ｍ−０  ＭＢ  ２次元パイプライン６２１のステージ３  ６０３の間、ＦＥは、マクロブロック３、Ｍ＋１  ３３６に対して動作し、ＩＳＥは、マクロブロック４、Ｍ−２  ３４３に対して動作する一方、ＦＳＥは、マクロブロック３、Ｍ−０  ３３５に対して動作する。３、Ｍ−０  ＭＢ  ２Ｄパイプライン６２１の終了後、ＦＳＥ後の動作ベクトルの生成が、３、Ｍ−０  ＭＢ  ３３５において完了する。ステージ６０２−６０９は、上述したように、２次元パイプライン６２２−６２７を完了するために使用される。図６に示すように、全ての「ピン／ポン」は、１行に対するＦＥ／ＦＳＥ動作を示している一方、別の行にはＩＳＥが存在する。ピンポンという用語は、行の間の役割の交換に関連付けられる。例えば、「ピン」の間、ＦＥ／ＦＳＥは行３に対して動作し、ＩＳＥは行４に対して動作する。「ポン」の間、ＦＥ／ＦＳＥは、行４に対して動作し、ＩＳＥは、行３に対して動作する。
【００４７】
２次元パイプラインを用いることの利点は、少なくとも２つの異なる行からであるが、近接している２つのマクロブロックが、探索領域の大部分を共有することができることである。ポンは、ピンからの探索領域を再使用することができるので、少ない取得しか必要とされないだろう。このピンポン方式による処理によって、通信バス上の帯域幅を低減する。探索領域を更新するための外部メモリに対するリフレッシュの数は、著しく低減されうる。探索領域を更新するための外部メモリに対するリフレッシュの数は、著しく低減されうる。
【００４８】
更に、マクロブロック３４５は、関連する近隣マクロブロック３４４，３３５，および３３４（または、３３４が利用可能ではない場合には３３６）からのモード判定を用いることができる。モード判定を用いることは、これら関連する近隣マクロブロックのそれぞれからの動作ベクトル予測変量が、動作ベクトルの正確な推定値を生成することを助けることができる。２次元ピンポンパイプライン無しでは、マクロブロック３４５動作ベクトル生成の計算において、近隣マクロブロック３４４からの正確な動作ベクトル予測変量を利用できないかもしれない。従って、２次元パイプラインは、動作推定ビデオブロックとモード判定との間の相互依存性を解決する。
【００４９】
多くの異なる実施形態は記述された。これら技術は、動作推定を改善することにより、ビデオエンコードを改善することができる。これら技術は、ハードウェア、ソフトウェア、ファームウェア、あるいはこれらの任意の組合せによって実現されうる。ソフトウェアで実現される場合、これら技術は、デバイス内で実行された場合、ビデオシーケンスをエンコードし、上述した方法のうちの１または複数の実行するプログラムコードを備えるコンピュータ読取可能媒体に向けられる。その場合、コンピュータ読取可能媒体は、例えばシンクロナス・ダイナミックＲＡＭ（ＳＤＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、非揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、ＦＬＡＳＨメモリ等を備えることができる。
【００５０】
このプログラムコードは、コンピュータ読取可能命令の形態でメモリ上に格納されうる。その場合、本明細書で記載した技術のうちの１または複数を実行するために、例えばＤＳＰのようなプロセッサが、メモリに格納された命令を実行することができる。幾つかの場合、これらの技術は、エンコード処理を加速する例えば動作推定器のような様々なハードウェア要素を起動するＤＰＳによって実行されうる。その他の場合、ビデオエンコーダが、マイクロプロセッサ、１又は複数の特定用途向けＩＣ（ＡＳＩＣ）、１又は複数のフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、あるいはその他、ハードウェアとソフトウェアとの組み合わせとして実現されうる。これらおよびその他の実施形態は、特許請求の範囲のスコープ内である。
【図面の簡単な説明】
【００５１】
【図１Ａ】図１Ａは、ソースデジタルビデオデバイスが、エンコードされたビットストリームを、受信デジタルビデオデバイスへ送信するシステム例を例示するブロック図である。
【図１Ｂ】図１Ｂは、本明細書の実施形態で説明したようにして使用される２つのコーデックのブロック図である。
【図２】図２は、図１Ａまたは図１Ｂに例示されるデジタルビデオデバイスにおいて使用される基本的なデジタルビデオエンコーダの典型的なブロック図である。
【図３】図３は、イメージの２つの部分的な行の典型的な実例である。
【図４】図４は、動作推定および動作ベクトル予測が２つのビデオブロック行にわたってなされる処理を例示する典型的なフローチャートである。
【図５】図５は、部分的なイメージ行に対して適用されたＭＥパイプラインの典型的な実例である。
【図６】図６は、２つの部分的なイメージ行に対して適用されたＭＥパイプラインの典型的な実例である。
【図１Ａ】
2009510845.tif 000003
【図１Ｂ】
2009510845.tif 000004
【図２】
2009510845.tif 000005
【図３】
2009510845.tif 000006
【図４】
2009510845.tif 000007
【図５】
2009510845.tif 000008
【図６】
2009510845.tif 000009
【国際調査報告】
2009510845.tif 000010
2009510845.tif 000011