(57)【要約】方法およびシステムは、複数のプロセッサを使用して、ビデオフレームの符号化を備える。一例において、第１のプロセッサは、現在フレーム内の画素データを、第２のプロセッサによって使用される直前フレーム内の対応する画素データと比較することによって、現在フレーム内の複数の非固定画素の位置を提供する。第１のプロセッサは、第２のプロセッサによって使用される現在フレーム内の実質的に非固定画素のみを描写する画素データも提供する。第２のプロセッサは、非固定画素の位置情報と、実質的に非固定画素のみを描写する画素データとに基づいて、複数の非固定画素に対する運動ベクトルデータを計算する。第１のプロセッサは、第２のプロセッサからの複数の非固定画素に対する運動ベクトルデータを使用して、現在フレームを符号化する。【選択図】図３
2013532926.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを使用してビデオフレームを符号化するための方法であり、前記方法は、
現在フレーム内の画素データを、第２のプロセッサによって使用される直前フレーム内の対応する画素データと比較することによって、前記現在フレーム内の複数の非固定画素の位置を、第１のプロセッサにより提供し、
前記第２のプロセッサによって使用される前記現在フレーム内の実質的に非固定画素のみを描写する画素データを、前記第１のプロセッサにより提供し、
前記非固定画素の位置情報と、実質的に非固定画素のみを描写する前記画素データとに基づいて前記複数の非固定画素に対する運動ベクトルデータを、前記第２のプロセッサにより計算し、
前記第２のプロセッサからの前記複数の非固定画素に対する前記運動ベクトルを使用して、前記現在フレームを、前記第１のプロセッサにより符号化することを備える、
方法。
【請求項２】
前記複数の非固定画素に対する前記運動ベクトルデータが所定の値を超えたと決定したことに応じて、エラー検出データを、前記第１のプロセッサにより生成することをさらに備える、
請求項１に記載の方法。
【請求項３】
生成したエラー検出データに応じて、前記運動ベクトルデータを計算する際に使用するための新しい基準フレームが利用可能であることを、前記第１のプロセッサにより示すことをさらに備える、
請求項２に記載の方法。
【請求項４】
運動ベクトルデータを計算することは、基準フレームと前記現在フレームとの間の前記複数の非固定画素の並進シフトを決定することを含む、
請求項１に記載の方法。
【請求項５】
前記基準フレームは、前記現在フレーム内の非固定画素を描写する画素データと、前記現在フレーム内の固定画素を描写する画素データとの両方を含む、
請求項４に記載の方法。
【請求項６】
前記直前フレームは、前記基準フレームを含む、
請求項５に記載の方法。
【請求項７】
前記現在フレーム内の実質的に非固定画素のみを描写する前記画素データは、前記現在フレーム内の非固定画素のみを描写する画素データを含む、
請求項１に記載の方法。
【請求項８】
ビデオフレームを符号化するためのビデオ符号化器であり、前記ビデオ符号化器は、
第１のプロセッサと第２のプロセッサとを備え、
前記第１のプロセッサは、
現在フレーム内の画素データを、前記第２のプロセッサによって使用される直前フレーム内の対応する画素データと比較することによって、前記現在フレーム内の複数の非固定画素の位置を提供し、
前記第２のプロセッサによって使用される前記現在フレーム内の実質的に非固定画素のみを描写する画素データを提供するよう動作し、
前記第２のプロセッサは、
前記第１のプロセッサに動作可能に接続され、前記非固定画素の位置情報と、実質的に非固定画素のみを描写する前記画素データとに基づいて前記複数の非固定画素に対する運動ベクトルデータを計算するよう動作し、
前記第１のプロセッサは、さらに、前記第２のプロセッサからの前記複数の非固定画素に対する前記運動ベクトルデータを使用して、前記現在フレームを符号化するよう動作する、
ビデオ符号化器。
【請求項９】
前記第１のプロセッサは、前記複数の非固定画素に対する前記運動ベクトルデータが所定の値を超えたと決定したことに応じてエラー検出データを生成するよう動作するエラー検出モジュールを備える、
請求項８に記載のビデオ符号化器。
【請求項１０】
前記第１のプロセッサは、エラー検出データを受信したことに応じて前記運動ベクトルデータを計算する際に使用するための新しい基準フレームが利用可能であることを示すよう動作するフレーム生成モジュールを備える、
請求項９に記載のビデオ符号化器。
【請求項１１】
前記第２のプロセッサは、運動ベクトルデータを計算するために、基準フレームと前記現在フレームとの間の前記複数の非固定画素の並進シフトを決定するよう動作する動き推定モジュールを備える、
請求項８に記載のビデオ符号化器。
【請求項１２】
前記基準フレームは、前記現在フレーム内の非固定画素を描写する画素データと、前記現在フレーム内の固定画素を描写する画素データとの両方を含む、
請求項１１に記載のビデオ符号化器。
【請求項１３】
前記直前フレームは、前記基準フレームを含む、
請求項１２に記載のビデオ符号化器。
【請求項１４】
前記第１のプロセッサは、
前記現在フレーム内の前記複数の非固定画素の前記位置を決定し、および前記第２のプロセッサによって使用される前記現在フレームに対応する非固定画素の位置情報と、前記第２のプロセッサによって使用される前記現在フレーム内の実質的に非固定画素のみを描写する画素データとの両方を提供するよう動作する非固定画素検出モジュールを備える、
請求項８に記載のビデオ符号化器。
【請求項１５】
複数のプロセッサを使用して、ビデオフレームを符号化および復号化するためのシステムであり、前記システムは、
第１のプロセッサと、第２のプロセッサと、復号化器とを備え、
前記第１のプロセッサは、
現在フレーム内の画素データを、第２のプロセッサによって使用される直前フレーム内の対応する画素データと比較することによって、前記現在フレーム内の複数の非固定画素の位置を提供し、
前記第２のプロセッサによって使用される前記現在フレーム内の実質的に非固定画素のみを描写する画素データを提供するよう動作し、
前記第２のプロセッサは、
前記第１のプロセッサに動作可能に接続され、前記非固定画素の位置情報と、実質的に非固定画素のみを描写する前記画素データとに基づいて、前記複数の非固定画素に対する運動ベクトルデータを計算するよう動作し、
前記第１のプロセッサは、さらに、前記第２のプロセッサからの前記複数の非固定画素に対する前記運動ベクトルデータを使用して、前記現在フレームを符号化するよう動作し、
前記復号化器は、
前記第１のプロセッサに動作可能に接続され、前記符号化された現在フレームを復号化して、復号化された現在フレームを提供するよう動作する、
システム。
【請求項１６】
前記第１のプロセッサは、
前記複数の非固定画素に対する前記運動ベクトルデータが所定の値を超えたと決定したことに応じて、エラー検出データを生成するよう動作するエラー検出モジュールを備える、
請求項１５に記載のシステム。
【請求項１７】
前記第１のプロセッサは、
エラー検出データを受信したことに応じて、前記運動ベクトルデータを計算する際に使用するための新しい基準フレームが利用可能であることを示すよう動作するフレーム生成モジュールを備える、
請求項１６に記載のシステム。
【請求項１８】
前記第２のプロセッサは、
運動ベクトルデータを計算するために、基準フレームと前記現在フレームとの間の前記複数の非固定画素の並進シフトを決定するよう動作する動き推定モジュールを備える、
請求項１５に記載のシステム。
【請求項１９】
前記基準フレームは、前記現在フレーム内の非固定画素を描写する画素データと、前記現在フレーム内の固定画素を描写する画素データとの両方を含む、
請求項１８に記載のシステム。
【請求項２０】
前記直前フレームは、前記基準フレームを含む、
請求項１９に記載のシステム。
【請求項２１】
複数のプロセッサを使用してビデオフレームを符号化するためのプロセッサであり、前記プロセッサは、
現在フレーム内の画素データを、他のプロセッサによって使用される直前フレーム内の対応する画素データと比較することによって、前記現在フレーム内の複数の非固定画素の位置を提供し、
前記他のプロセッサによって使用される前記現在フレーム内の実質的に非固定画素のみを描写する画素データを提供し、
前記非固定画素の位置情報と、実質的に非固定画素のみを描写する前記画素データとに基づいて、前記複数の非固定画素に対して前記他のプロセッサによって計算された運動ベクトルデータを使用して前記現在フレームを符号化するよう動作する、
プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオフレームを符号化するための方法およびシステムに関する。
【背景技術】
【０００２】
従来のビデオ符号化システムは、通信チャネルを介して、当該通信チャネルの利用可能な帯域を用いて送信される必要がある情報量を減らすために、数々の技術を使用する。これらの技術は、復号化されて表示されたビデオにおいて許容できない劣化が生じることのないように、通信チャネルを介して、当該通信チャネルの利用可能な帯域を用いて送信される情報量を減らさなければならない。出力されたビデオが許容できないレベルに劣化することのないように、通信チャネルを介して、利用可能な帯域を用いて送信される情報量を減らすために、これらの技術は、連続するビデオフレーム間の時間冗長性（ｔｅｍｐｏｒａｌ  ｒｅｄｕｎｄａｎｃｙ）を使用する。
【発明の概要】
【０００３】
通信チャネルを介して、利用可能な帯域を用いて送信されなければならない情報量を減らす例示的な技術の１つは、ブロックマッチングと呼ばれる。従来のブロックマッチングアルゴリズムは、予め記憶した基準ビデオフレーム内の画素のブロックに対応する（すなわち、合致する）ような入力（すなわち、現在の）ビデオフレーム内の画素のブロックを識別しようとする。ブロックは、例えば、画素、画素の集合、（固定、または変更可能なサイズの）画素の領域、またはビデオフレームの実質的に任意の部分とすることができることを理解されたい。ブロックマッチングを実行するために使用するアルゴリズムは、例えば、当業者によって認識されるように、平均二乗誤差（ｍｅａｎ  ｓｑｕａｒｅ  ｅｒｒｏｒ；ＭＳＥ）、平均絶対値差（ｍｅａｎ  ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅ；ＭＡＤ）、および差分絶対値和（ｓｕｍ  ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅ；ＳＡＤ）等を含む。連続するビデオフレーム間の合致するブロックを識別することは、動き推定として知られる更なる帯域幅保存技術の適用を可能にする。
【０００４】
動き推定は、現在ビデオフレーム内の画素のブロックを、予め記憶した基準ビデオフレーム内の画素の対応するブロックと比較して、現在フレーム内の画素のブロックが、基準ビデオフレーム内の位置からどれだけ動いたかを決定する技術である。動き推定は、１組の運動ベクトルの計算を含む。運動ベクトルの組における各運動ベクトルは、現在ビデオフレーム内の画素の特定のブロックの、記憶した基準ビデオフレーム内の画素の対応するブロックからの変位を示す。画素のブロック内の各画素に対する完全な画素データを送信するよりもむしろ、画素の所定のブロックに対する運動ベクトルデータを送信することによって、帯域を節約することができる。これは、運動ベクトルデータは、画素の所定のブロックに対する画素データよりも実質的に小さいという事実によるものである。
【０００５】
帯域および符号化速度に影響する関連した問題は、符号化システムの物理アーキテクチャーである。例えば、従来の多くの符号化システムでは、ブロックマッチングおよび動き推定は、中央処理装置（ＣＰＵ）等の同じプロセッサ上で実行される。しかしながら、動き推定は、ビデオ符号化の際に実行される最大の計算集約的演算（ｃｏｍｐｕｔｅ−ｉｎｔｅｎｓｉｖｅ  ｏｐｅｒａｔｉｏｎ）として認識される。例えば、Ｈ．２６４／ＡＶＣ（ａｄｖａｎｃｅｄ  ｖｉｄｅｏ  ｅｎｃｏｄｉｎｇ）規格に合致したビデオ符号化を実行する場合、動き推定の計算は、全符号化時間の７０％までを占める。このため、ビデオ符号化に無関係の他の演算を同時に実行するためのプロセッサ能力が非常に制限されることから、符号化圧縮技術のすべてを単一のプロセッサ上で実行することは大抵望ましくない。よって、既存の技術では、ある符号化計算を他のプロセッサに任せている。
【０００６】
例えば、いくつかの既存の符号化システムは、ＣＰＵよりむしろグラフィック処理装置（ＧＰＵ）上で動き推定を実行する。動き推定をＧＰＵ等の他のプロセッサに任せることによって、一次プロセッサ（例えば、ＣＰＵ）は、他の演算を実行するために解放される。この設計により一次プロセッサが解放されるが、それにもかかわらず、多くの障害を受ける。
【０００７】
例えば、プロセッサ間で符号化計算を分けると、第１のプロセッサ（例えば、ＣＰＵ）と第２のプロセッサ（例えば、ＧＰＵ）との間の通信チャネル（例えば、データバス）に沿ってデータのボトルネックを作り出すことが可能となってしまう。このデータのボトルネックは、入力データが入力されるのと同じ速さで第２のプロセッサが処理することができないという事実に基づいて作り出される。それに応じて、第２のプロセッサによる処理のために送られたデータは、第２のプロセッサが処理できるまで、待ち行列中で待機しなければならない。この問題は、既存の符号化システムが、画素の全ブロックに対する画素データをＧＰＵに送るということによって悪化する。ビデオフレームを符号化する技術には、計算の複雑さおよび処理速度に関連した非効率さが多数存在する。
【０００８】
他の符号化方法では、第１のプロセッサから第２のプロセッサにサブサンプルの画素データを送ることによって、２つのプロセッサ間のメモリトラフィックを減らそうとしている。例えば、彩度サブサンプリング（ｃｈｒｏｍａ  ｓｕｂｓａｍｐｌｉｎｇ）として知られる符号化方法の１つでは、輝度情報よりも彩度情報に対してより小さな解像度を実現する（すなわち、彩度情報の「サブサンプリング」）ことによって、プロセッサ間のメモリトラフィックを減らそうとしている。しかしながら、そのような技術には、例えば、第２のプロセッサによって実行される動き推定の精度を下げる傾向がある。これは、符号化データがサブサンプリングされるとき、動き推定を決定する要因となる情報が少ない（例えば、彩度情報の不足）ためである。
【０００９】
そのため、ビデオ符号化計算の複雑さを減らし、同時に、ビデオ符号化を実行するためにかかる時間を減らす、ビデオフレームを符号化する方法およびシステムを改良する必要がある。
【００１０】
本開示は、以下の図に伴い、同一の参照番号が同一の要素を示す以下の記述からより容易に理解されるであろう。
【図面の簡単な説明】
【００１１】
【図１】本開示で記載する一例による、複数のプロセッサを使用して、ビデオフレームを符号化および復号化するシステムを概ね示すブロック図である。
【図２】複数のプロセッサを使用してビデオフレームを符号化する方法の一例を示すフローチャートである。
【図３】本開示に記載する一例による、ビデオフレームを符号化するための符号化器を概ね示すブロック図である。
【図４】複数のプロセッサを使用してビデオフレームを符号化する方法の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
本開示は、複数のプロセッサを使用してビデオフレームを符号化するための方法およびシステムを提供する。一例において、複数のプロセッサを使用してビデオフレームを符号化するための方法が開示される。本例において、本方法は、現在フレーム内の複数の非固定画素の位置を、第１のプロセッサにより提供することを含む。現在フレーム内の複数の非固定画素の位置は、現在フレーム内の画素データと、第２のプロセッサによって使用される、直前フレーム内の対応する画素データとを比較することによって提供される。第１のプロセッサは、第２のプロセッサによって使用される、現在フレーム内の実質的に非固定画素のみを描写する画素データも提供する。第２のプロセッサは、非固定画素の位置情報と、実質的に非固定画素のみを描写する画素データとに基づいて、複数の非固定画素のための運動ベクトルデータを計算する。第１のプロセッサは、第２のプロセッサから提供された複数の非固定画素に対する運動ベクトルデータを使用して、現在フレームを符号化する。
【００１３】
上記方法の一例において、第１のプロセッサは、複数の非固定画素に対する運動ベクトルデータが所定の値を超えたと決定したことに応じて、エラー検出データを生成する。他の例において、第１のプロセッサは、生成したエラー検出データに応じて、運動ベクトルデータを計算する際に使用するための新しい基準フレームが利用可能であることを示す。一例において、運動ベクトルデータは、基準フレームと現在フレームとの間の複数の非固定画素の並進シフトを決定することによって計算される。さらに他の例において、基準フレームは、現在フレーム内の非固定画素を描写する画素データと、現在フレーム内の固定画素を描写する画素データとを含む。他の例において、直前フレームが基準フレームである。さらに他の例において、現在フレーム内の実質的に非固定画素のみを描写する画素データは、現在フレーム内の非固定画素のみを描写する画素データを備える。
【００１４】
本開示は、複数のプロセッサを使用して、ビデオフレームを符号化および復号化するためのシステムも提供する。一例において、システムは、複数のプロセッサを有するビデオ符号化器を含む。本例において、符号化器は、現在フレーム内の画素データと、第２のプロセッサによって使用される、直前フレーム内の対応する画素データとを比較することによって、現在フレーム内の複数の非固定画素の位置を提供するよう動作する第１のプロセッサを有する。第１のプロセッサは、さらに、第２のプロセッサによって使用される、現在フレーム内の実質的に非固定画素のみを描写する画素データを提供するよう動作する。第２のプロセッサは、第１のプロセッサに動作可能に接続され、および非固定画素の位置情報と、実質的に非固定画素のみを描写する画素データとに基づいて複数の非固定画素に対する運動ベクトルデータを計算するよう動作する。第１のプロセッサは、第２のプロセッサからの複数の非固定画素に対する運動ベクトルデータを使用して、現在フレームを符号化するよう動作する。本例において、システムは、第１のプロセッサに動作可能に接続され、符号化された現在フレームを復号化して、復号化された現在フレームを提供するよう動作する復号化器も含む。
【００１５】
一例において、第１のプロセッサは、複数の非固定画素に対する運動ベクトルデータが所定の値を超えたと決定したことに応じて、エラー検出データを生成するよう動作するエラー検出モジュールを含む。他の例において、第１のプロセッサは、エラー検出データを受信したことに応じて、運動ベクトルデータを計算する際に使用するための新しい基準フレームが利用可能であることを示すよう動作するフレーム生成モジュールを含む。さらに他の例において、第２のプロセッサは、運動ベクトルデータを計算するために、基準フレームと現在フレームとの間の複数の非固定画素の並進シフトを決定するよう動作する、動き推定モジュールを含む。他の例において、第１のプロセッサは、現在フレーム内の複数の非固定画素の位置を決定するとともに、第２のプロセッサによって使用される現在フレームに対応する非固定画素の位置情報と、第２のプロセッサによって使用される現在フレーム内の実質的に非固定画素のみを描写する画素データとの両方を提供するよう動作する非固定画素検出モジュールを含む。
【００１６】
他の利点として、開示される方法およびシステムは、動き推定を含む、加速ビデオ符号化を備える。この加速は、複数のプロセッサ間の符号化処理を分け、プロセッサ間で送られる画素データの量を減らすことによって実現される。そのために、開示される方法およびシステムは、プロセッサ間の符号化処理演算を移すことによって作り出される待ち時間も改善する。他の利点は、当業者によって認識されるであろう。
【００１７】
本実施形態の以下の記述は単なる例であって、本開示、その適用、または使用を限定しようとするものではない。図１は、複数のプロセッサを使用してビデオフレームを符号化および復号化するためのシステム１００の一例を示す。システム１００は、１つまたは複数の電子機器内に存在することができる。例えば、システム１００の一部であるビデオ符号化器１０２は、ある電子機器内に存在することができ、一方、ビデオ復号化器１２０は、別の電子機器内に存在することができる。あるいは、ビデオ符号化器１０２と復号化器１２０は、同じ電子機器内に存在することができる。ビデオ符号化器１０２と復号化器１２０は、単に、例えば、直接物理接続（例えば、バス）、または１つまたは複数の通信ネットワーク（例えば、インターネット、セルラーネットワーク等）を介した無線接続を通じて互いに動作可能に接続される必要がある。例えば、ビデオ符号化器／復号化器１０２、１２０は、画像取込デバイス（例えば、一体化ディスプレイデバイスを介して記録したビデオの再生機能を有する、または有さない、カメラやカメラ一体型ビデオレコーダー）、パーソナルコンピュータ（例えば、デスクトップまたはラップトップコンピュータ）、ネットワークコンピューティングデバイス（例えば、サーバコンピュータ等、個々のコンピューティングデバイスは、システム１００の１つまたは複数の機能を実現する）、携帯情報端末（ＰＤＡ）、携帯電話、タブレット（例えば、Ａｐｐｌｅ（登録商標）ｉＰａｄ（登録商標））、またはビデオ符号化および／または復号化を実行するために使用する任意の他の適切な電子機器等の電子機器内に存在することができる。
【００１８】
システム１００は、符号化されていない現在（すなわち、入力）ビデオフレーム１０８を符号化するためのビデオ符号化器１０２を含む。符号化されていないビデオフレーム１０８は、例えば、フレーム内の各画素を描写する画素データを含む生（すなわち、圧縮されていない）ビデオフレームである。画素データは、例えば、当分野で既知のように、フレーム内の各画素に対して１つの輝度と２つの色差値（例えば、ＹＣｂＣｒ値、ＹＵＶ値、ＹＰｂＰｒ値、Ｙ１ＵＶ等）を含む。さらに、画素データは、例えば、フレーム内の各画素の位置を示すｘ、ｙ、およびｚ座標値等の、フレーム内の各画素に対する座標値を含んでもよい。また、本明細書で使用される場合、フレームは、任意の数の領域を備えることができる。例えば、単一のフレームは、当業者によって認識されるであろう、フレーム画像内の奇数番目の水平線を描写する「上部領域」と、フレーム画像内の偶数番目の水平線を描写する「底部領域」を備えることができる。
【００１９】
符号化器１０２は、第２のプロセッサ１０６に動作可能に接続された第１のプロセッサ１０４を含む。プロセッサ１０４、１０６は、記憶部に記憶した実行可能命令の制御下で動作する、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、またはそれらの組合せを備えることができる。一例において、第１のプロセッサ１０４は、中央処理装置（ＣＰＵ）である。一例において、第２のプロセッサは、グラフィック処理装置（ＧＰＵ）である。他の例において、第２のプロセッサは、汎用ＧＰＵ（ＧＰＧＰＵ）である。第１および第２のプロセッサ１０４、１０６は、単一のダイ上に別々のコアとして、または別々のダイ上に別々のコアとして存在することができる。特定の実装にかかわらず、本開示は、これらの具体例に限定されず、記載された機能性を実行することができる任意のプロセッサ１０４、１０６の使用を意図する。システム１００は、さらに、第１のプロセッサ１０４に動作可能に接続された復号化器１２０を含む。上記のように、復号化器１２０および第１のプロセッサ１０４は、任意の適切な物理的または無線接続を介して動作可能に接続することができる。
【００２０】
図２は、複数のプロセッサを使用してビデオフレームを符号化するための方法の一例を示すフローチャートである。図２で開示される方法は、例えば、図１で示されたシステム１００によって実行することができる。それにより、本方法は、システム１００内の要素を参照して説明されるであろう。ステップ２００では、第１のプロセッサ１０４は、現在フレーム１０８内の画素データと、第２のプロセッサ１０６によって使用される、直前フレーム内の対応する画素データとを比較することによって、現在フレーム１０８内の複数の非固定画素の位置を提供する。一例において、第１のプロセッサ１０４は、第２のプロセッサ１０６に位置情報を提供する前に、現在フレーム１０８内の複数の非固定画素の位置を決定するよう動作する。しかしながら、この決定は、他の適切な理論によっても等しく行われることが理解されよう。
【００２１】
現在ビデオフレーム内の複数の非固定画素の位置を決定することは、例えば、差分絶対値和（ＳＡＤ）等のブロックマッチングアルゴリズムによって実現することができる。ＳＡＤ等のブロックマッチングアルゴリズムは、一般的には、現在ビデオフレーム１０８をマクロブロックに分割する。各マクロブロックは、任意の数の画素を含むことができる。例えば、１６×１６マクロブロックは、２５６画素（すなわち、行あたり１６画素、１６行）を含むことができる。各マクロブロックは、さらに、例えば４つの８×８サブブロックなどのサブブロックに分割することができる。
【００２２】
現在ビデオフレーム１０８内の複数の非固定画素の位置を決定するために、ブロックマッチングアルゴリズムは、現在ビデオフレーム１０８内の画素データと、直前ビデオフレーム内の対応する画素データとを比較する。この比較は、複数の画素（例えば、マクロブロック）毎に実現することができる。すなわち、本アルゴリズムは、現在ビデオフレーム１０８内の単一の画素を描写する画素データと、直前ビデオフレーム内の対応する画素を描写する画素データとを比較するよりむしろ、現在ビデオフレーム１０８内の画素のマクロブロックと、直前ビデオフレーム内の画素の対応するマクロブロックとを比較することができる。画素対画素毎よりもむしろマクロブロック対マクロブロック毎に比較を行うことは、精度に実質的な影響を与えることなく計算コストを大幅に削減する。
【００２３】
現在ビデオフレーム１０８からのマクロブロックと、直前ビデオフレームからの対応するマクロブロックとを比較したときに、２つのマクロブロックが同じであると判断された場合、現在ビデオフレーム１０８内のマクロブロックは、固定マクロブロック（すなわち、複数の固定画素を備えるマクロブロック）であると判断される。一方、現在ビデオフレーム１０８内のマクロブロックが、直前ビデオフレーム内の対応するマクロブロックと異なる場合、現在ビデオフレーム１０８内のマクロブロックは、非固定マクロブロック（すなわち、複数の非固定画素を備えるマクロブロック）であると判断される。
【００２４】
この比較は、現在ビデオフレーム１０８内のマクロブロックに割り当てられた値を、直前ビデオフレーム内の対応するマクロブロックに割り当てられた値から引くことによって実行される。値は、例えば、現在ビデオフレーム１０８内のマクロブロックを構成する画素の輝度値、および直前ビデオフレーム内のマクロブロックを構成する画素の輝度値によって示すことができる。さらに、量子化値（Ｑ）を比較に導入することが可能である。量子化値は、固定マクロブロックまたは非固定マクロブロックとして認識された、現在ビデオフレーム１０８内のマクロブロックの尤度に影響する。
【００２５】
例えば、非固定マクロブロックを識別するために、本開示は、固定マクロブロックを定義するための全零量子化係数ブロック（ａｌｌ−ｚｅｒｏ  ｑｕａｎｔｉｚａｔｉｏｎ  ｃｏｅｆｆｉｃｉｅｎｔ  ｂｌｏｃｋ）を検出する既存の概念を取り入れることを意図する。本処理は、例えば、１６×１６マクロブロックの８×８サブブロックにおける係数が、量子化処理の後に零になるかどうかを確認することによって開始する。例えば、以下の数式を、所定の８×８サブブロックを構成する画素に応用することができる。
【００２６】
ＳＡＤ（（ｘ，ｙ）の位置に対する絶対差の合計）＝
【数１】
2013532926.tif 000003
【００２７】
一例において、ＳＡＤ＜８Ｑである場合、８×８サブブロックはゼロブロックとして定義されるであろう。上記のように、Ｑは量子化値を表す。実質的に、Ｑ値が高くなると、８×８サブブロックがゼロブロックとして定義される可能性が高くなる。Ｑ値が低くなると、８×８サブブロックがゼロブロックとして定義される可能性が低くなる。したがって、Ｑ値は、どれだけ多くのゼロブロックが所定のビデオフレーム内で検出されるかをもたらす。Ｑ値は、例えば、第１および第２のプロセッサ１０４、１０６の間の利用可能な帯域幅に基づいて、自動的に設定することができる。例えば、利用可能な帯域が増えるほど、設定されたＱ値は小さくなる。これは、低いＱ値がより多くの非固定マクロブロックの検出をもたらすためであり、それらの非固定マクロブロックのそれぞれを描写する画素データが、プロセッサ間で送信される必要があることを意味する。したがって、Ｑ値が大きくなるほど、プロセッサ間に送られるであろう画素データが少なくなる。サブブロックがゼロブロックであるかどうかを判断することについての上記説明に準拠して、一例において、全４つの８×８サブブロックがＳＡＤの上記式の適用後にサブブロックになるよう判断される場合、１６×１６マクロブロックが、ゼロブロックとしてのみ定義されるであろう。
【００２８】
続いてステップ２００では、現在ビデオフレーム１０８内の複数の非固定画素の位置が決定された後、非固定画素の位置情報１１０が、第２のプロセッサ１０６よって使用されるために提供される。一例において、非固定画素の位置情報１１０は、マップの形式で提供される。マップは、現在ビデオフレーム１０８内の全ての固定および非固定マクロブロックの位置を示す。マップは、上記手順による決定に基づいて、現在ビデオフレーム内の各マクロブロックが固定か非固定かを示すデータを備える。例えば、現在ビデオフレーム１０８の左上コーナーに設置されたマクロブロックに対応するマップの部分の値が０であれば（例えば、ビット値がゼロに設定されていれば）、現在ビデオフレーム１０８の左上コーナーにおけるマクロブロックが固定であることを示すことができる。一方、現在ビデオフレーム１０８の左上コーナーに設置されたマクロブロックに対応するマップの部分の値が１であれば（例えば、ビット値が１に設定されていれば）、現在ビデオフレーム１０８の左上コーナーにおけるマクロブロックが非固定であることを示すことができる。
【００２９】
ステップ２０２では、第１のプロセッサ１０４が、第２のプロセッサ１０６によって使用される、現在ビデオフレーム１０８内の実質的に非固定画素１１２のみを描写する画素データを提供する。実質的に非固定画素１１２のみを描写する画素データは、例えば、フレーム内の各非固定画素に対する１つの輝度と２つの色差値（例えば、ＹＣｂＣｒ値、ＹＵＶ値、ＹＰｂＰｒ値、Ｙ１ＵＶ等）を備えることができる。さらに、画素データは、フレーム内の実質的に非固定画素１１２のみに対する座標値、例えば、ｘ、ｙ、およびｚ座標値を含むことができる。好適な実施形態において、非固定画素のみを描写する画素データは、第２のプロセッサ１０６によって使用されるために提供される。しかしながら、固定画素を描写するいくつかの画素データも、第２のプロセッサ１０６によって使用されるために提供されるであろう。本明細書で使用される場合、用語「実質的に非固定画素のみを描写する画素データ」は、ビデオ符号化アプリケーションに依存する。例えば、低ビットレート伝送のために（例えば、テレビ会議のために）、記載した方法は、全画素データの２０％以下が固定画素を描写することを意図する。高ビットレート伝送では、一例において、記載された方法は、全画素データの８〜１５％以下が固定画素を描写することを意図する。第１のプロセッサ１０４と第２のプロセッサ１０６との間で送られる画素データの量を限定することによって、メモリスループットが改善され、それにより、既存の符号化システムに影響するボトルネック問題を軽減する。
【００３０】
ステップ２０４では、第２のプロセッサ１０６が、非固定画素の位置情報１１０と、実質的に非固定画素１１２のみを描写する画素データとに基づいて、複数の非固定画素に対する運動ベクトルデータ１１６を計算する。運動ベクトルデータ１１６は、複数の非固定画素（例えば、画素の各非固定マクロブロック）の各々に対して計算される。すなわち、異なる運動ベクトルが、非固定の複数の画素の各々に対して計算される。上記のように、各運動ベクトルは、基準ビデオフレーム１１４と現在ビデオフレーム１０８との間の複数の非固定画素（例えば、画素のマクロブロック）の変位を描写する。基準ビデオフレーム１１４は、固定画素および非固定画素の両方を描写する画素データを備える。非固定の複数の画素に対してのみ運動ベクトルを計算する（および、固定画素に対しては計算しない）ことによって、動き推定の計算時間が削減される。これにより、既存の符号化システムが直面するボトルネック問題を全体的に削減または軽減するために、第１のプロセッサ１０４と第２のプロセッサ１０６との間を転送されるデータのバックログを削減することに役立つ。さらに、動き推定の計算が、第１のプロセッサ１０４以外の別のプロセッサ上で実行されるので、第１のプロセッサ１０４は、動き推定に無関係の、他の種類の処理を扱うために解放される。
【００３１】
ステップ２０６では、第１のプロセッサ１０４が、第２のプロセッサ１０６からの複数の非固定画素に対する運動ベクトルデータ１１６を使って、現在ビデオフレーム１０８を符号化する。次いで、符号化されたビデオフレーム１１８は、復号化されたビデオフレーム１２２を生成するために、ビデオ復号化器１２０に提供され得る。符号化されたビデオフレーム１１８は、例えば、当分野で既知のように、画像グループ（ＧＯＰ）符号化スキームにおけるＩフレーム、Ｐフレーム、および／またはＢフレームを備えることができる。しかしながら、本開示は、どんな特定の符号化スキームにも限定されず、符号化されたビデオフレーム１１８を生成するための任意の利用可能な符号化スキームを使用することを意図する。例えば、本開示は、ムービングピクチャーエクスパートグループ（ＭＰＥＧ）スキーム（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４等）、ＤｉｖＸ５、Ｈ．２６４、または任意の他の適切なビデオ符号化スキーム等の、符号化スキームと共に使用することを意図する。すなわち、記載した方法は、動き推定を必要とするどのようなビデオ符号化にも等しく適用することを意図する。
【００３２】
図３は、本開示に記載する一例による、ビデオフレームを符号化するための符号化器１０２を概ね示すブロック図である。特に、図３は、例えば、図２に関して説明された機能性を達成するために使われる第１および第２のプロセッサ１０４、１０６のサブ構成要素を示す。例えば、第１のプロセッサ１０４は、非固定画素検出モジュール３１２を含む。本明細書で使用される場合、用語「モジュール」は、電子回路、１つまたは複数のソフトウェアやファームウェアプログラムを実行する１つまたは複数のプロセッサ（例えば、これらに限定されないが、マイクロプロセッサ、デジタル信号プロセッサ、または中央処理装置等の、共有された、専用の、またはグループのプロセッサ）ならびにメモリ、組合せ論理回路、特定用途向け集積回路（ＡＳＩＣ）、および／または記載された機能性を提供する他の適切な構成要素を含むことができる。一例において、モジュールは、プロセッサ１０４、１０６の一方または両方で実行される、メモリ（例えば、メモリ３１６、メモリ３１８、または他の適切なメモリ）に記憶されたソフトウェアやファームウェアを備えることができる。
【００３３】
非固定画素検出モジュール３１２は、メモリ３１６と、第２のプロセッサ１０６に設置された動き推定モジュール３１０とに動作可能に接続される。好適な実施形態において、第１のプロセッサ１０４は、ローカルメモリ３１６を有し、第２のプロセッサ１０６は、ローカルメモリ３１８を有する。しかしながら、第１のプロセッサのメモリ３１６および第２のプロセッサのメモリ３１８は、同じメモリであることを意図する。例えば、第１および第２のプロセッサは、第１のプロセッサ１０４上か、第２のプロセッサ１０６上か、または両方のプロセッサ１０４、１０６から離れて設置される（例えば、両方のプロセッサ１０４、１０６から離れたシステムメモリ内の）共有メモリ（図示しない）にアクセスすることができる。しかしながら、ローカルメモリ３１６、３１８を両方のプロセッサ１０４、１０６に提供することは、待ち時間が減少することによる符号化時間の低減をもたらす。さらに、メモリ３１６、３１８は、例えば、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的消去書込み可能な読出し専用メモリ（ＥＥ−ＰＲＯＭ）、または、任意の他の適切なデジタルストレージメディア等の、揮発性／不揮発性メモリ構成要素の任意の組合せとすることができる。
【００３４】
非固定画素検出モジュール３１２は、現在ビデオフレーム３００（すなわち、Ｆｎ）内の画素を描写する画素データと、メモリ３１６からの入力として直前ビデオフレーム３０２（すなわち、Ｆｎ−１）内の画素を描写する画素データとを受け入れる。画素データ３００、３０２は、例えば、フレーム内の各画素に対して１つの輝度と２つの色差値（例えば、ＹＣｂＣｒ値、ＹＵＶ値、ＹＰｂＰｒ値、Ｙ１ＵＶ等）を含むことができる。さらに、画素データは、例えば、フレーム内の各画素の位置を示すｘ、ｙ、およびｚ座標値等の、フレーム内の各画素に対する座標値を含むことができる。非固定画素検出モジュール３１２は、現在ビデオフレーム３００内の画素データを、直前ビデオフレーム３０２内の対応する画素データと比較し、非固定画素の位置情報１１０（例えば、上記のようなマップ）を提供するよう動作する。現在ビデオフレーム１０８内の画素が非固定画素であると決定した後、非固定画素検出モジュール３１２は、第２のプロセッサ１０６によって使用される、現在ビデオフレーム１１２内の実質的に非固定画素のみを描写する画素データを提供するよう動作する。
【００３５】
非固定画素検出モジュール３１２は、第２のプロセッサ１０６内の動き推定モジュール３１０にも動作可能に接続される。動き推定モジュール３１０は、動き推定を行うために、非固定画素検出モジュール３１２からの入力として、非固定画素の位置情報１１０と、実質的に非固定画素１１２のみを描写する画素データとを受け入れる。具体的には、動き推定モジュール３１０は、運動ベクトルデータ１１６を計算するために、基準ビデオフレーム１１４と現在ビデオフレーム１０８との間の複数の非固定画素（例えば、非固定マクロブロック）の並進シフトを決定するよう動作する。動き推定モジュール３１０は、基準ビデオフレーム１１４を記憶している、第２のプロセッサ１０６のローカルメモリ３１８等のメモリに常にアクセスする。したがって、動き推定モジュール３１０は、基準ビデオフレーム１１４と現在ビデオフレーム１０８との間の各複数の非固定画素（例えば、非固定画素の各マクロブロック）の変位を決定することによって、運動ベクトルデータ１１６を計算し、基準ビデオフレーム１１４は、固定および非固定画素の両方を描写する画素データを備える。これは、例えば、現在ビデオフレーム１０８内の複数の非固定画素のＹ値（すなわち、輝度値）を、基準ビデオフレーム１１４内の対応する複数の画素のＹ値と比較することによって、実現することができる。現在ビデオフレーム１０８内の各複数の非固定画素に対する運動ベクトルを決定した後、動き推定モジュール３１０は、運動ベクトルデータ１１６を、第１のプロセッサ１０４内のエラー検出モジュール３０８に提供する。
【００３６】
エラー検出モジュール３０４は、動き推定モジュール３１０に動作可能に接続され、複数の非固定画素に対する運動ベクトルデータ１１６が所定の値を超えたことを決定したことに応じて、エラー検出データ３０６を生成するよう動作する。概して、エラー検出モジュール３０４は、運動ベクトルデータ１１６を計算する際に使用するために、新しい基準フレーム１１４をいつ提供すべきかを識別する。エラー検出モジュール３０４は、入ってくる運動ベクトルデータ１１６を分析し、運動ベクトルデータ１１６が所定の値を超えたかどうかを判断することによって、この識別を行う。例えば、所定の値は、１０に設定することができる（特定の値は、設計上の選択の問題であると認識する）。本例において、特定の複数の非固定画素（例えば、マクロブロック）が、基準ビデオフレーム１１４と現在ビデオフレーム１０８との間において１０画素以上シフトしたと運動ベクトルデータ１１６が示す場合、エラー検出モジュール３０４は、所定の値を超えたことを示すエラー検出データ３０６を生成する。
【００３７】
エラー検出データ３０６は、エラー検出モジュール３０４に動作可能に接続されたフレーム生成モジュール３０８に提供される。フレーム生成モジュール３０８は、エラー検出データ３０６を受信したことに応じて、運動ベクトルデータ１１６を計算するために新しい基準ビデオフレーム１１４が利用可能であることを示すよう動作する。一例において、フレーム生成モジュール３０８は、新しい基準ビデオフレーム１１４をメモリ３１６から読み出し、新しい基準ビデオフレーム１１４を第２のプロセッサ１０６内のメモリ１１８に提供することによって、運動ベクトルデータ１１６を計算するために新しい基準ビデオフレーム１１４が利用可能であることを示す。本例において、動き推定モジュール３１０は、運動ベクトルデータ１１６を計算する際に、新しい基準ビデオフレーム１１４を使用する。有効な（すなわち、０ではない）運動ベクトルデータ１１６を計算するために、基準ビデオフレーム１１４は、理想的には、所定のビデオストリーム内の現在ビデオフレーム１０８の前に送信されたビデオフレームである（例えば、基準ビデオフレーム１１４と現在ビデオフレーム１０８とが同じである場合、フレームの間の画素の移動はない）。しかしながら、動き推定モジュール３１０は、代替手段を介しても新しい基準ビデオフレーム１１４を受信する可能性もあることが意図される。例えば、動き推定モジュール３１０は、代わりに、両方のプロセッサ１０４、１０６によってアクセスされた共有メモリ（図示しない）から新しい基準フレーム１１４を要求してもよく、当分野で既知の、他の適切なメモリアクセス技術を介して新しい基準ビデオフレームを得てもよい。
【００３８】
フレーム生成モジュール３０８は、符号化されたビデオフレーム１１８を、復号化されたビデオフレーム１２２を生成するために、ビデオ復号化器１２０に提供するようにも動作する。ビデオ復号化器１２０は、例えば、ムービングピクチャーエクスパートグループ（ＭＰＥＧ）スキーム（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４等）、ＤｉｖＸ５、Ｈ．２６４、または任意の他の適切なビデオ符号化スキーム等の符号化されたビデオフレームを復号化することができる当分野で既知の任意の適切な復号化器を備えることができる。
【００３９】
図４は、複数のプロセッサを使用してビデオフレームを符号化するための方法の他の例を示すフローチャートである。図４で開示される方法は、例えば、図３で示した符号化器１０２によって実行してもよい。そのため、本方法は、符号化器１０２内の要素を参照して説明する。ステップ２００〜２０４は、図２において提供したステップの説明により実行される。ステップ４００では、運動ベクトルデータが所定の値を超えたかどうかに関して決定が行われる。本ステップは、例えば、上記の機能に基づくエラー検出モジュール３０４によって実現することができる。運動ベクトルデータが所定の値を超えた場合、第１のプロセッサ１０４は、複数の非固定画素に対する運動ベクトルデータ１１６が所定の値を超えたことに関する決定に応じて、エラー検出データ３０６を生成する。本ステップは、例えば、上記の機能に基づくエラー検出モジュール３０４によって実現されてもよい。ステップ４０４では、第１のプロセッサ１０４は、生成したエラー検出データ３０６に応じて運動ベクトルデータ１１６を計算する際に、基準ビデオフレーム１１４が利用可能であることを示す。本ステップは、例えば、上記の機能に基づくフレーム生成モジュール３０８によって実現してもよい。しかしながら、ステップ４００で、運動ベクトルデータ１１６が所定の値を超えないことが決定された場合、本方法は、図２において提供したようなステップの説明により実行されるステップ２０６に移行する。
【００４０】
他の利点として、開示される方法およびシステムは、動き推定を含む、加速ビデオ符号化を備える。加速は、複数のプロセッサの間の符号化処理を分け、プロセッサの間で送られる画素データの量を減らすことによって実現される。そのために、開示される方法およびシステムは、プロセッサの間の符号化処理演算を移すことによって作り出される待ち時間も改善する。他の利点は、当業者によって認識されるであろう。
【００４１】
また、集積回路設計システム（例えば、ワークステーション）は、これらに限定されないが、ＣＤ−ＲＯＭ、ＲＡＭ、他の形式のＲＯＭ、ハードドライブ、分散メモリ等の、コンピュータ読取り可能メモリに記憶した実行可能命令に基づいて集積回路を作り出すことが知られる。命令は、これらに限定されないが、ハードウェア記述言語、または他の適切な言語等の、任意の適切な言語によって表すことができる。したがって、本明細書に記載したビデオ符号化器は、そのようなシステムによって、集積回路として生成してもよい。例えば、集積回路は、実行した場合、現在フレーム内の画素データを、第２のプロセッサによって使用される直前フレーム内の対応する画素データと比較することによって、現在フレーム内の複数の非固定画素の位置を、第１のプロセッサにより提供するよう動作する集積回路を、集積回路設計システムに作らせるコンピュータ読取り可能メディアに記憶した命令を使用して作り出すことができ、第２のプロセッサによって使用される現在フレーム内の実質的に非固定画素のみを描写する画素データを第１のプロセッサにより提供することができ、非固定画素の位置情報と、実質的に非固定画素のみを描写する画素データとに基づいて、複数の非固定画素に対する運動ベクトルデータを第２のプロセッサにより計算することができ、第２のプロセッサからの複数の非固定画素に対する運動ベクトルデータを使用して、現在フレームを第１のプロセッサにより符号化することができる。本明細書に記載した他の演算を実行する論理を有する集積回路も適切に生成することができる。
【００４２】
上記の詳細な記述およびそこに記載された例は、例示および説明のみの目的のためのものであり、限定するものではない。したがって、本開示は、上記で開示され、本明細書で請求される原理の底流をなす基礎の主旨および範囲内に入る任意のおよび全ての変形例、変化物、または同等物を対象として含むことを意図する。
【図１】
2013532926.tif 000004
【図２】
2013532926.tif 000005
【図３】
2013532926.tif 000006
【図４】
2013532926.tif 000007
【国際調査報告】
2013532926.tif 000008
2013532926.tif 000009
2013532926.tif 000010