(57)【特許請求の範囲】
【請求項１】
ビデオエンコーダにおいて、各サブシーケンスが符号化順に予測フレーム（Ｐフレーム）と後続する複数の双予測フレーム（Ｂフレーム）とから構成される、イントラフレーム（Ｉフレーム）と後続するサブシーケンスセットとから構成されるフレームシーケンスについて、
前記Ｉフレームに対してモード判定を実行するステップと、
前記Ｉフレームに対して再構成を実行するステップと、
第１Ｐフレームに対してモード判定を実行するステップと、
前記第１Ｐフレームに対して再構成を実行するステップと、
第１Ｂフレームに対してモード判定を実行するステップと、
前記Ｉフレームから再構成されたフレームと前記第１Ｐフレームから再構成されたフレームとの１以上のフレームを用いて第２Ｂフレームに対してモード判定を実行する間に、前記第１Ｂフレームに対して再構成を実行するステップと、
を有する方法であって、
前記第１Ｐフレームに対してモード判定を実行するステップは、前記第１Ｂフレームに対してモード判定を実行するステップ及び前記第１Ｐフレームに対して再構成を実行するステップの前に、前記Ｉフレームに対する再構成の実行中に実行される方法。
【請求項２】
前記第１Ｂフレームに対してモード判定を実行するステップは、前記第１Ｐフレームに対する再構成の実行中に実行される、請求項１記載の方法。
【請求項３】
前記第１Ｂフレームに対してモード判定を実行するステップは、リファレンスとしてオリジナルフレームを利用する、請求項２記載の方法。
【請求項４】
前記第１Ｐフレームの整数動き推定が前記Ｉフレームの再構成中に実行され、その後、前記第１Ｐフレームの小数動き推定が実行され、
前記第１Ｂフレームの整数動き推定が前記第１Ｐフレームの再構成中に実行され、その後、前記第１Ｂフレームの小数動き推定が実行される、請求項１記載の方法。
【請求項５】
前記第１Ｐフレームの低解像度動き推定が前記Ｉフレームの再構成中に実行され、その後、前記第１Ｐフレームの高解像度動き推定が実行され、
前記第１Ｂフレームの低解像度動き推定が前記第１Ｐフレームの再構成中に実行され、その後、前記第１Ｂフレームの高解像度動き推定が実行される、請求項１記載の方法。
【請求項６】
前記第１Ｐフレーム及び前記第１Ｂフレームの低解像度動き推定は、オリジナルフレームを用いて実行され、
前記第１Ｐフレーム及び前記第１Ｂフレームの高解像度動き推定は、再構成されたフレームを用いて実行される、請求項５記載の方法。
【請求項７】
プロセッサと、
前記プロセッサと通信するメモリデバイスと、
を有するシステムであって、
前記メモリデバイスは、各サブシーケンスが符号化順に予測フレーム（Ｐフレーム）と後続する複数の双予測フレーム（Ｂフレーム）とから構成される、イントラフレーム（Ｉフレーム）と後続するサブシーケンスセットとから構成されるフレームシーケンスについて、
前記Ｉフレームに対するモード判定と、
前記Ｉフレームに対する再構成と、
第１Ｐフレームに対するモード判定と、
前記第１Ｐフレームに対する再構成と、
第１Ｂフレームに対するモード判定と、
前記第１Ｂフレームに対する再構成の間に、前記Ｉフレームから再構成されたフレームと前記第１Ｐフレームから再構成されたフレームとの１以上のフレームを用いて第２Ｂフレームに対するモード判定と、
を前記プロセッサに実行させるよう構成される複数の処理命令を格納するシステムであって、
前記第１Ｐフレームに対するモード判定が、前記第１Ｂフレームに対するモード判定及び前記第１Ｐフレームに対する再構成前に、前記Ｉフレームに対する再構成中に実行されるシステム。
【請求項８】
前記第１Ｂフレームに対するモード判定が、前記第１Ｐフレームに対する再構成中に実行される、請求項７記載のシステム。
【請求項９】
前記第１Ｂフレームに対するモード判定が、リファレンスとしてオリジナルフレームを利用する、請求項８記載のシステム。
【請求項１０】
前記第１Ｐフレームの整数動き推定が前記Ｉフレームの再構成中に実行され、その後、前記第１Ｐフレームの小数動き推定が実行され、
前記第１Ｂフレームの整数動き推定が前記第１Ｐフレームの再構成中に実行され、その後、前記第１Ｂフレームの小数動き推定が実行される、請求項７記載のシステム。
【請求項１１】
前記第１Ｐフレームの低解像度動き推定が前記Ｉフレームの再構成中に実行され、その後、前記第１Ｐフレームの高解像度動き推定が実行され、
前記第１Ｂフレームの低解像度動き推定が前記第１Ｐフレームの再構成中に実行され、その後、前記第１Ｂフレームの高解像度動き推定が実行される、請求項７記載のシステム。
【請求項１２】
前記第１Ｐフレーム及び前記第１Ｂフレームの低解像度動き推定が、オリジナルフレームを用いて実行され、
前記第１Ｐフレーム及び前記第１Ｂフレームの高解像度動き推定が、再構成されたフレームを用いて実行される、請求項１１記載のシステム。
【請求項１３】
コンピュータプログラムロジックが格納される非一時的コンピュータ可読媒体を有するコンピュータプログラムであって、
前記コンピュータプログラムロジックは、
各サブシーケンスは符号化順に予測フレーム（Ｐフレーム）と後続する複数の双予測フレーム（Ｂフレーム）とから構成される、イントラフレーム（Ｉフレーム）と後続するサブシーケンスセットとから構成されるフレームシーケンスについて、
プロセッサに前記Ｉフレームに対してモード判定を開始させるロジックと、
前記プロセッサに前記Ｉフレームに対して再構成を開始させるロジックと、
前記プロセッサに第１Ｐフレームに対してモード判定を開始させるロジックと、
前記プロセッサに前記第１Ｐフレームに対して再構成を開始させるロジックと、
前記プロセッサに第１Ｂフレームに対してモード判定を開始させるロジックと、
前記プロセッサに前記第１Ｂフレームに対する再構成の間に、前記Ｉフレームから再構成されたフレームと前記第１Ｐフレームから再構成されたフレームとの１以上のフレームを用いて第２Ｂフレームに対するモード判定を開始させるロジックと、
を有するコンピュータプログラムであって、
前記第１Ｐフレームに対するモード判定は、前記第１Ｂフレームに対するモード判定及び前記第１Ｐフレームに対する再構成前に、前記Ｉフレームに対する再構成中に実行されるコンピュータプログラム。
【請求項１４】
前記第１Ｂフレームに対するモード判定は、前記第１Ｐフレームに対する再構成中に実行される、請求項１３記載のコンピュータプログラム。
【請求項１５】
前記第１Ｂフレームに対するモード判定は、リファレンスとしてオリジナルフレームを利用する、請求項１４記載のコンピュータプログラム。
【請求項１６】
前記第１Ｐフレームの整数動き推定が前記Ｉフレームの再構成中に実行され、その後、前記第１Ｐフレームの小数動き推定が実行され、
前記第１Ｂフレームの整数動き推定が前記第１Ｐフレームの再構成中に実行され、その後、前記第１Ｂフレームの小数動き推定が実行される、請求項１３記載のコンピュータプログラム。
【請求項１７】
前記第１Ｐフレームの低解像度動き推定が前記Ｉフレームの再構成中に実行され、その後、前記第１Ｐフレームの高解像度動き推定が実行され、
前記第１Ｂフレームの低解像度動き推定が前記第１Ｐフレームの再構成中に実行され、その後、前記第１Ｂフレームの高解像度動き推定が実行される、請求項１３記載のコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオ符号化は、モード判定（動き推定を含む）とビットストリームパッキング（フレーム再構成を含む）との２つのプロセスを含みうる。これらのプロセスは、パイプライン化された方法により実現されてもよい。モード判定プロセスはプログラマブルコア上で実行され、ビットストリームパッキングはハードウェアにより実現されてもよい。あるいは、これらのプロセスは、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に一部のタスクをオフロードするＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含むアーキテクチャ上で実行されてもよい。例えば、ビットストリームパッキングはＣＰＵ上で実行され、モード判定はＧＰＵ上で実行されてもよい。
【０００２】
モード判定処理とビットストリームパッキング処理との間のインタラクションは、符号化プロセスを低速化しうる相互依存性を含む。この２つのステージのパイプライン処理は、フレーム全体がモード判定ロジックにより処理され、その後にビットストリームパッキングロジックにより処理されるピクチャベースである可能性がある。ビットストリームパッキングロジックは、モード判定ロジックにより生成される動きベクトル及びマイクロブロックモードなどの付加情報にアクセスするため、モード判定ロジックがフレームの処理を終了するのを待機する可能性がある。モード判定ロジックは、動き推定（ＭＥ）用のリファレンスとして再構成されたフレームを利用するため、前のフレームに対して実行されるビットストリームパッキングロジックの終了を待機する可能性がある。これらの依存性は、ビデオ符号化処理について要求される時間の一因となり、ユーザ体感に影響を与える可能性がある。
【図面の簡単な説明】
【０００３】
【図１】図１は、パイプライン化されたモード判定プロセスとビットストリームパッキングプロセスとを示すブロック図である。
【図２】図２は、フレームシーケンスの処理を示す図である。
【図３】図３は、フレームシーケンスの処理を示す図である。
【図４】図４は、一実施例によるフレームシーケンスの処理を示す図である。
【図５】図５は、図４の実施例の一例となる処理を示すフローチャートである。
【図６】図６は、一実施例によるフレームシーケンスの処理を示す図である。
【図７】図７は、図６の実施例の一例となる処理を示すフローチャートである。
【図８】図８は、他の実施例によるフレームシーケンスの処理を示す図である。
【図９】図９は、図８の実施例の一例となる処理を示すフローチャートである。
【図１０】図１０は、他の実施例によるフレームシーケンスの処理を示す図である。
【図１１】図１１は、図１０の実施例の一例となる処理を示すフローチャートである。
【図１２】図１２は、他の実施例によるフレームシーケンスの処理を示す図である。
【図１３】図１３は、図１２の実施例の一例となる処理を示すフローチャートである。
【図１４】図１４は、他の実施例によるフレームシーケンスの処理を示す図である。
【図１５】図１５は、図１４の実施例の一例となる処理を示すフローチャートである。
【図１６】図１６は、他の実施例によるフレームシーケンスの処理を示す図である。
【図１７】図１７は、図１６の実施例の一例となる処理を示すフローチャートである。
【図１８】図１８は、ソフトウェア又はファームウェアの実施例の計算状況を示すブロック図である。  図面において、参照番号の最左桁は、参照番号が最初に出現した図を特定する。
【発明を実施するための形態】
【０００４】
同様の参照番号が同一の又は機能的に類似する要素を示す図面を参照して、実施例が説明される。特定のコンフィギュレーション及び厚生が説明されるが、これは単なる例示目的のために行われることが理解されるべきである。当業者は、本開示の趣旨及び範囲から逸脱することなく、他のコンフィギュレーション及び構成が利用可能であることを認識するであろう。これがここに説明された以外の各種の他のシステム及びアプリケーションにおいて利用可能であることは、関連分野の当業者に明らかであろう。
【０００５】
ビデオ符号化プロセスの効率性を向上させる方法、システム及びコンピュータプログラムがここに開示される。モード判定処理及びビットストリームパッキング処理は、あるシーケンスの各種フレームについてパラレルに実行されてもよい。これは、モード判定処理ロジックとビットストリームパッキングロジックとの双方についてアイドル時間を低減し、ビデオエンコーダの全体的な効率性を向上させる。
【０００６】
図１は、ビデオ符号化において出現する依存性を示す。フレーム１１０は、モード判定モジュール１２０に入力される。当該モジュールは、動き推定機能を有し、データ１３０を生成する。データ１３０は、１以上の動きベクトル（ＭＶ）と共に、マクロブロック（ＭＢ）モードを含む。その後、データ１３０は、ビットストリームパッキングモジュール１４０に入力される。当該モジュールは、フレーム再構成機能を有する。ビットストリームパッキングモジュール１４０は、その後に再構成されたフレーム１５０を生成する。ビットストリームパッキング処理は、従って、モード判定モジュール１２０により生成されたＭＶ及びＭＢモード１３０に依拠する。次のフレームを処理する際、モード判定モジュール１２０は、前のフレームについて生成された再構成されたレーム１５０を必要とする。再構成されたフレーム１５０は、次のフレームの動き推定のためのリファレンスとしてモード判定モジュール１２０により利用される。
【０００７】
これは、図２に示される処理タイムラインを生じさせる。この図は、符号化順にＩＢＢＰＢＢＰ．．．の形態を有するフレームシーケンスのケースを示す。ここで、Ｉはイントラフレーム（ｉｎｔｒａ  ｆｒａｍｅ）を表し、Ｂは双予測フレーム（ｂｉ−ｐｒｅｄｉｃｔｉｖｅ  ｆｒａｍｅ）を表し、Ｐは予測フレーム（ｐｒｅｄｉｃｔｉｖｅ  ｆｒａｍｅ）を表す。この図では（及び以下の同様の全ての図）、文字に添付される数字はシーケンス全体におけるポジションを示す。第１フレームはＩ０であり、次のフレームはＢ１であり、Ｂ２，Ｐ３に続く。図２において、各フレームは、モード判定モジュール（ＥＮＣとして示される）により処理され、その後に順にビットストリームパッキングモジュール（ＰＡＫとして示される）により処理される。フレームがモード判定（ＥＮＣ）モジュールにより処理される間、ビットストリームパッキング（ＰＡＫ）モジュールはアイドルであり、またその反対もある。これは、上述された依存性に対応する。各フレームについて、ビットストリームパッキングプロセスは、モード判定プロセスの完了及び出力（すなわち、ＭＶ及びＭＢモード）を待機する。次のフレームに対するモード判定プロセスは、前のフレームの再構成されたフレームが動き推定に利用されるように、前のフレームに対するビットストリームパッキングの完了を待機する。
【０００８】
まず、フレームＩ０（又は他のアンカーフレームＰ０）がモード判定モジュールにより処理される。当該フレームは、その後に、モード判定プロセスから得られたＭＶ及びＭＢモードを用いて、ビットストリームパッキングモジュールにより次の時間区間において処理される。Ｉ０に対するビットストリームパッキングプロセスの完了後、モード判定プロセスは、次の時間区間において次のフレームＰ３について行われる。Ｐ３に対するモード判定プロセスは、フレームＩ０について実行されたビットストリームパッキングプロセスから生じる再構成されたフレームを利用する。この交互のシーケンスは、図示されるように、以降のフレームについて続けられる。ビットストリームパッキングモジュールとモード判定モジュールとのそれぞれは交互の時間区間においてアイドル状態になる可能性があることに留意されたい。
【０００９】
また、この図及び以降の同様の図において、番号付けされた時間区間は等しい長さでなく、所与のフレームの指定された処理を収容するのに必要な程度の長さであってもよいことに留意されたい。
【００１０】
図３は、ＩＰＰＰ．．．の形態のフレーム系列に対する同様の処理シーケンスを示す。まず、フレームＩ０（又はアンカーフレームＰ０）がモード判定モジュールにより処理される。その後、当該フレームは、モード判定プロセスから得られたＭＶ及びＭＢモードを用いて、ビットストリームパッキングモジュールにより次の時間区間において処理される。Ｉ０に対するビットストリームパッキングプロセスの完了後、モード判定プロセスが、次の時間区間において次のフレームＰ１について行われる。Ｐ１のモード判定プロセスは、フレームＩ０に対して実行されたビットストリームパッキングプロセスから得られる再構成されたフレームを利用する。この交互のシーケンスが、図示されるように、以降のフレームについて続けられる。上述されたように、ビットストリームパッキングモジュールとモード判定モジュールとのそれぞれは交互の時間区間においてアイドルとなることに留意されたい。
【００１１】
一実施例では、モード判定プロセスとビットストリームパッキングプロセスとのパラレルな処理を可能にすることによって、効率性が向上する。図４において、ＩＢＢＰＢＢＰ．．．のケースの具体例が示される。ここで、フレームＢ２のモード判定処理は、フレームＢ１のビットストリームパッキングの完了を待機する必要はない。Ｂ１の再構成されたフレームを利用する代わりに、Ｂ２のモード判定処理は、前に処理されたＩ又はＰフレームから再構成された１以上のフレームを利用する。本例では、Ｉ０又はＰ３について再構成されたフレームが利用されてもよい。これは、Ｂ２に対するモード判定処理がＢ１に対するビットストリームパッキング処理と同時に実行されることを可能にする。このパラレル化は、図示されるように継続される。Ｐ６のモード判定処理はＢ２のビットストリームパッキングの完了を待機する必要はなく、Ｐ６のモード判定処理は、Ｂ２の再構成されたフレームを待機する代わりに、前のＩ又はＰフレームから再構成されたフレームを利用するようにしてもよい。この結果、Ｐ６のモード判定処理及びＢ２のビットストリームパッキングは、図示された実施例において同時に行われるようにしてもよい。当該処理は、Ｂフレームが以降のフレームのリファレンスフレームとして利用されなくてもよいという仮定に基づく。少なくとも１つのビデオ符号化規格では、Ｂフレームはまた、動き推定リファレンスフレームとして利用されることが可能とされてもよい。Ｂフレームがリファレンスフレームとして設定されている場合、それは、Ｐフレームと同様にして処理されてもよい。
【００１２】
図４のフレームシーケンス（すなわち、ＩＢＢＰＢＢＰ．．．）は、各Ｐフレームの前に２つのＢフレームを有する繰り返しのサブシーケンスを特徴とすることに留意されたい。他のシーケンスでは、各Ｐフレーム前に２つより多くのＢフレームを有するサブシーケンスがあってもよい。
【００１３】
図５において、一実施例による図４の処理が示される。５０５において、モード判定処理（動き推定を含む）がＩフレームに対して実行される。５１０において、ビットストリームパッキング（フレーム再構成を含む）が当該フレームに対して実行される。５１５において、モード判定処理が最初のＰフレーム（すなわち、図４の例ではＰ３）に対して実行される。５２０において、ビットストリームパッキングが当該フレームに対して実行される。５２５において、モード判定処理がＢフレームｉ（ただし、初期的にはｉ＝１）に対して実行される。図４において、当該フレームはＢ１として示される。５３０において、モード判定処理は、フレームｉ＋１としてここで示される次のＢフレームに対して実行される。当該同一の時間区間中、ビットストリームパッキングが、５３５において、Ｂフレームｉに対して実行される。
【００１４】
５４０において、次のＰフレーム前に処理されるべき更なるＢフレームがあるか判断される。更なるＢフレームがある場合、５４５において、ｉは１だけインクリメントされ、処理は５３０，５３５に続き、次のＢフレームが考慮される。次のＰフレーム前に処理されるべきＢフレームがもはやない場合、処理は５５０に続き、次のＰフレームが考慮される。５５５において、モード判定処理は当該次のＰフレームに対して実行される。同一の時間区間中、ビットストリームパッキングが、５６０において、Ｂフレームｉ＋１に対して実行される。その後、処理は５６５に続き、ｉが３だけインクリメントされる。その後、５２０において、ビットストリームパッキングがＰフレームに対して実行される。
【００１５】
他の実施例では、Ｂ１のモード判定処理は、Ｐ３の再構成されたフレームの代わりに、リファレンスとしてオリジナルフレームを利用する。このケースでは、Ｂ１のモード判定処理は、Ｐ３のビットストリームパッキングの完了を待機する必要はない。これは、Ｂ１のモード判定処理がＰ３に対するビットストリームパッキングとパラレルに行われることを可能にする。このコンセプトは、各サブシーケンスＢ．．．ＢＰにおける最初のＢフレーム毎に拡張されてもよい。
【００１６】
図６において、これが示される。ここでは、Ｂ１のモード判定処理がＰ３のビットストリームパッキングと同時に行われる。上述されたように、フレームＢ２のモード判定処理は、フレームＢ１のビットストリームパッキングの完了を待機する必要はない。Ｂ１の再構成されたフレームを利用する代わりに、Ｂ２のモード判定処理は、以前に処理されたＩ又はＰフレームから再構成された１以上のフレームを利用する。これは、Ｂ２に対するモード判定処理がＢ１のビットストリームパッキング処理と同時に行われることを可能にする。このパターンは、図示されるように継続される。
【００１７】
図７において、一実施例による図６の処理が示される。７０５において、モード判定処理（動き推定を含む）がＩフレームに対して実行される。７１０において、ビットストリームパッキング（フレーム再構成を含む）が当該Ｉフレームに対して実行される。７１５において、モード判定処理が、最初のＰフレーム（すなわち、図６の例ではＰ３）に対して実行される。７２０において、ビットストリームパッキングが当該フレームに対して実行される。同時に、７２５において、モード判定処理がＢフレームｉに対して実行される（ただし、初期的にはｉ＝１）。当該フレームは、図６においてＢ１として示される。７３０において、モード判定処理は、フレームｉ＋１としてここで示される次のＢフレームに対して実行される。この同一の時間区間中、ビットストリームパッキングが、７３５において、Ｂフレームｉに対して実行される。
【００１８】
７４０において、次のＰフレームの前に処理されるべき更なるＢフレームがあるか判断される。更なるＢフレームがある場合、７４５において、ｉは１だけインクリメントされ、処理は７３０，７３５に続き、次のＢフレームが考慮される。次のＰフレームの前に処理されるべきＢフレームがもはやない場合、処理は７５０に続き、次のＰフレームが考慮される。７５５において、モード判定処理は、当該次のＰフレームに対して実行される。この同一の時間区間中、７６０において、ビットストリームパッキングはＢフレームｉ＋１に対して実行される。その後、処理は７６５に続き、ｉが３だけインクリメントされる。モード判定処理がＢフレームｉに対して実行される間に、ビットストリームパッキングがその後に７２０においてＰフレームに対して実行される。
【００１９】
他の実施例では、最初のＰフレームは、Ｉ０のビットストリームパッキングから得られる再構成されたフレームの代わりに、モード判定処理のためにＩ０のオリジナルフレームを利用する。図８において、これが示される。ここで、Ｐ３に対するモード判定処理は、Ｉ０に対するビットストリームパッキングと同時に行われてもよい。図８の実施例はまた、図４，６に関して上述されたパラレル化を利用する。特に、フレームＢ２に対するモード判定処理は、フレームＢ１のビットストリームパッキングの完了を待機する必要はない。Ｂ１の再構成されたフレームを利用する代わりに、Ｂ２のモード判定処理は、以前に処理されたＩ又はＰフレームから再構成された１以上のフレームを利用する。本例では、Ｉ０又はＰ３に対して再構成されたフレームが利用される。これは、Ｂ２に対するモード判定処理がＢ１に対するビットストリームパッキング処理と同時に行われることを可能にする。また、Ｂ１のモード判定処理は、Ｐ３の再構成されたフレームの代わりにリファレンスとしてオリジナルフレームを利用する。この場合、Ｂ１のモード判定処理は、Ｐ３のビットストリームパッキングの完了を待機する必要はない。これは、Ｂ１のモード判定処理がＰ３に対するビットストリームパッキングとパラレルに行われることを可能にする。
【００２０】
図９において、一実施例による図８の処理が示される。９０５において、モード判定処理（動き推定を含む）がＩフレームに対して実行される。９１０において、ビットストリームパッキング（フレーム再構成を含む）が当該フレームに対して実行される。同時に９１５において、モード判定処理が最初のＰフレーム（すなわち、図８の例におけるＰ３）に対して実行される。９２０において、ビットストリームパッキングが当該フレームに対して実行される。同時に９２５において、モード判定処理がＢフレームｉに対して実行される（ただし、初期的にｉ＝１）。当該フレームは、図８においてＢ１として示される。９３０において、モード判定処理は、ここではフレームｉ＋１として示される次のＢフレームに対して実行される。この同一の時間区間中、９３５において、ビットストリームパッキングがＢフレームｉに対して実行される。
【００２１】
９４０において、次のＰフレームの前に処理されるべき更なるＢフレームがあるか判断される。更なるＢフレームがある場合、９４５において、ｉは１だけインクリメントされ、処理は９３０，９３５に続き、次のＢフレームが考慮される。次のＰフレームの前に処理されるべき更なるＢフレームがない場合、処理は９５０に続き、次のＰフレームが考慮される。９５５において、モード判定処理が当該次のＰフレームに対して実行される。この同一の時間区間中、９６０において、ビットストリームパッキングがＢフレームｉ＋１に対して実行される。その後、処理は９６５において続けられ、ｉは３だけインクリメントされる。その後、モード判定処理が９２５においてＢフレームに対して実行される間、９２０において、ビットストリームパッキングが現在のＰフレームに対して実行される。
【００２２】
他の実施例では、オリジナルフレームが整数動き推定のためのリファレンスとして利用され、再構成されたフレームが小数動き推定のためのリファレンスとして利用されてもよい。これは、図１０に示されるパラレル化を可能にする。ここで、最初のＰフレーム（すなわち、Ｐ３＿ｉ）の整数動き推定は、Ｉ０のビットストリームパッキングから得られる再構成されたフレームを利用する代わりに、動き推定のためのリファレンスとしてオリジナルフレームを利用する。Ｐ３＿ｉの動き推定は、フレームＩ０のビットストリームパッキングとパラレルに実行されてもよい。Ｐフレーム（すなわち、Ｐ３＿ｆ）の小数動き推定が、その後に実行される。同様の理由のため、最初のＢフレーム（すなわち、Ｂ１＿ｉ）の整数動き推定は、動き推定のためのリファレンスとしてオリジナルフレームを利用し、フレームＰ３のビットストリームパッキングとパラレルに実行されてもよい。Ｂ１フレーム（すなわち、Ｂ１＿ｆ）の小数動き推定が、その後に実行される。図示されるように、当該プロセスはこのようにして続けられ、各サブシーケンスＢＢ．．．ＢＰの最初のＢフレームに対して、別々の整数及び小数動き推定（ＭＥ）が実行される。
【００２３】
図１１において、本実施例の処理が示される。１１０５において、モード判定処理（動き推定を含む）が、Ｉフレームに対して実行される。１１１０において、ビットストリームパッキング（フレーム再構成を含む）が、当該フレームに対して実行される。同時に１１１５において、整数ＭＥが最初のＰフレーム（すなわち、図１０の例におけるＰ３）に対して実行される。１１１７において、小数ＭＥがＰ３に対して実行される。１１２０において、ビットストリームパッキングが当該フレームに対して実行される。同時に１１２５において、整数動き推定がＢフレームｉに対して実行される。ただし、初期的にはｉ＝１である。図１０において、これはＢ１＿ｉとして示される。１１２７において、小数ＭＥがＢフレームｉに対して実行される。図１０において、これはＢ１＿ｆとして示される。１１３０において、モード判定処理が、Ｂフレームｉ＋１として示される次のＢフレームに対して実行される。この同一の時間区間中、１１３５において、ビットストリームパッキングがＢフレームに対して実行される。
【００２４】
１１４０において、次のＰフレームの前に処理されるべき更なるＢフレームがあるか判断される。更なるＢフレームがある場合、１１４５において、ｉは１だけインクリメントされ、処理は１１３０，１１３５に続き、次のＢフレームが考慮される。次のＰフレームの前に処理すべきＢフレームがない場合、処理は１１５０に続き、次のＰフレームが考慮される。１１５５において、モード判定処理が当該次のＰフレームに対して実行される。この同一の時間区間中、１１６０において、ビットストリームパッキングＢフレームｉ＋１に対して実行される。その後、処理は１１６５に続き、ｉは３だけインクリメントされる。その後、整数ＭＥを含むモード判定処理が、１１２５においてＢフレームに対して実行される間、１１２０において、ビットパッキングがＰフレームに対して実行される。
【００２５】
同様のアプローチが、ＩＰＰＰ．．．の形態のフレーム系列が与えられたとき、パラレル処理を実現するため利用されてもよい。図１２において、これが示される。上述されるように、オリジナルフレームが整数動き推定のためのリファレンスとして利用され、再構成されたフレームが小数動き推定のためのリファレンスとして利用されてもよい。これは、図１２に示されるパラレル化を可能にする。ここで、最初のＰフレーム（すなわち、Ｐ１＿ｉ）のための整数動き推定は、Ｉ０のビットストリームパッキングから得られる再構成されたフレームを利用する代わりに、動き推定のためのリファレンスとしてオリジナルフレームを利用してもよい。従って、Ｐ１＿ｉの動き推定は、フレームＩ０のビットストリームパッキングとパラレルに実行される。その後、Ｐフレーム（すなわち、Ｐ１＿ｆ）の小数動き推定が、Ｉ０のビットストリームパッキングにおいて再構成されたフレームを利用して実行される。その後、Ｐ２＿ｉとして示される次のＰフレームの整数ＭＥが、フレームＰ１のビットストリームパッキングから得られる再構成されたフレームの代わりに、オリジナルフレームを用いて実行される。従って、Ｐ２（すなわち、Ｐ２＿ｉ）の整数ＭＥが、Ｐ１のビットストリームパッキングとパラレルに実行される。その後、Ｐ２（すなわち、Ｐ２＿ｆ）の小数ＭＥが、Ｐ１のビットストリームパッキングから得られる再構成されたフレームを用いて実行される。図示されるように、当該パターンにより処理が継続される。
【００２６】
図１３において、本実施例の処理が示される。１３１０において、モード判定処理は、ＩフレームＩ０に対して実行される。１３２０において、整数ＭＥがＰフレームｉに対して実行される。ただし、初期的にはｉ＝１である。同時に１３３０において、ビットストリームパッキングがＩフレームに対して実行される。１３４０において、小数ＭＥがＰフレームｉに対して実行される。
【００２７】
１３５０において、整数ＭＥがＰフレームｉ＋１に対して実行される。同時に１３６０において、ビットストリームパッキングがＰフレームｉに対して実行される。１３７０において、小数ＭＥがＰフレームｉ＋１に対して実行される。１３８０において、ｉが１だけインクリメントされる。その後、処理は１３５０，１３６０に続き、次のＰフレームが考慮される。
【００２８】
他の実施例では、Ｎレイヤ階層動き検索が動き推定において利用されてもよい。この場合、オリジナルフレームが、前のフレームのビットストリームパッキングから得られる再構成されたフレームの代わりに、より低い解像度の動き推定のために利用されてもよい。他方、再構成されたフレームはより高い解像度の動き推定のために利用されてもよい。低解像度動き推定に関して、符号化効率は失われないかもしれない。より低い解像度からの動きベクトルは、より高い解像度の動き推定の検索の中心のためにのみ利用され、以降において精緻化されるためである。
【００２９】
オリジナルフレームが再構成されたフレームの代わりにより低い解像度の動き推定のために利用されるため、図１４の実施例に示されるように、パラレル化が実現される。ここで、最初のＰフレーム（すなわち、Ｐ３＿Ｌ）の低解像度動き推定は、Ｉ０のビットストリームパッキングから得られる再構成されたフレームを利用する代わりに、動き推定のためのリファレンスとしてオリジナルフレームを利用する。従って、Ｐ３＿Ｌの動き推定は、フレームＩ０のビットストリームパッキングとパラレルに実行される。その後、Ｐフレーム（すなわち、Ｐ３＿Ｈ）の高解像度動き推定が実行される。同様に、最初のＢフレーム（すなわち、Ｂ１＿ｉ）の低解像度動き推定は、動き推定のためのリファレンスとしてオリジナルフレームを利用し、フレームＰ３のビットストリームパッキングとパラレルに実行される。その後、Ｂ１フレーム（すなわち、Ｂ１＿Ｈ）の高解像度動き推定が実行される。図示されるように、当該プロセスはこのようにして継続され、各サブシーケンスＢＢ．．．ＢＰの最初のＢフレームに対して、別々の低解像度及び高解像度動き推定が実行される。
【００３０】
図１５において、本実施例の処理が示される。１５０５において、モード判定処理（動き推定を含む）が、Ｉフレームに対して実行される。１５１０において、ビットストリームパッキング（フレーム再構成を含む）が、当該フレームに対して実行される。同時に１５１５において、低解像度ＭＥが最初のＰフレーム（すなわち、図１４の例におけるＰ３＿Ｌ）に対して実行される。１５１７において、高解像度ＭＥがＰ３、すなわち、図１４のＰ３＿Ｈに対して実行される。１５２０において、ビットストリームパッキングがＰ３に対して実行される。同時に１５２５において、低解像度動き推定がＢフレームに対して実行される。ここで、初期的にはｉ＝１である。これは、図１４においてＢ１＿Ｌとして示される。１５２７において、高解像度ＭＥがＢフレームｉに対して実行される。これは、図１４においてＢ１＿Ｈとして示される。１５３０において、モード判定処理が、Ｂフレームｉ＋１として示される次のＢフレームに対して実行される。この同一の時間区間中、１５３５において、ビットストリームパッキングがＢフレームｉに対して実行される。
【００３１】
１５４０において、次のＰフレームの前に処理すべき更なるＢフレームがあるか判断される。更なるＢフレームがある場合、１５４５において、ｉは１だけインクリメントされ、処理は１５３０，１５３５に続き、次のＢフレームが考慮される。次のＰフレームの前に処理されるべきＢフレームがない場合、処理は１５５０に続き、次のＰフレームが考慮される。１５５５において、モード判定処理が当該次のＰフレームに対して実行される。この同一の時間区間中、１５６０において、ビットストリームパッキングがＢフレームｉ＋１に対して実行される。その後、処理は１５６５に続き、ｉが３だけインクリメントされる。その後、低解像度ＭＥを含むモード判定処理がＢフレームｉに対して実行される間、１５２０において、ビットストリームパッキングが現在のＰフレームに対して実行される。
【００３２】
このコンセプトはまた、ＩＰＰ．．．Ｐの形態のフレームシーケンスに拡張されてもよい。これは、図１６の実施例に示される。ここで、最初のＰフレーム（すなわち、Ｐ１＿Ｌ）の低解像度動き推定が、Ｉ０のビットストリームパッキングから得られる再構成されたフレームを利用する代わりに、動き推定のためのリファレンスとしてオリジナルフレームを利用する。従って、Ｐ１＿Ｌの動き推定は、フレームＩ０のビットストリームパッキングとパラレルに実行される。その後、Ｐフレーム（すなわち、Ｐ１＿Ｈ）の高解像度動き推定は、Ｉ０のビットストリームパッキングにおいて再構成されたフレームを用いて実行される。Ｐ２＿Ｌとして示される次のＰフレームの低解像度ＭＥは、フレームＰ１のビットストリームパッキングから得られる再構成されたフレームの代わりに、オリジナルフレームを用いて実行される。Ｐ２（すなわち、Ｐ２＿Ｌ）の低解像度ＭＥは、Ｐ１のビットストリームパッキングとパラレルに実行される。Ｐ２（すなわち、Ｐ２＿Ｈ）の高解像度ＭＥは、その後に、Ｐ１のビットストリームパッキングから得られる再構成されたフレームを用いて実行される。その後、図示されるように、処理はこのようにして継続される。
【００３３】
図１７において、本実施例の処理が示される。１７１０において、モード判定処理が、ＩフレームＩ０に対して実行される。１７２０において、低解像度ＭＥがＰフレームｉに対して実行される。ここで、初期的にはｉ＝１である。同時に１７３０において、ビットストリームパッキングがＩフレームに対して実行される。１７４０において、高解像度ＭＥがＰフレームｉに対して実行される。
【００３４】
１７５０において、低解像度ＭＥがＰフレームｉ＋１に対して実行される。同時に１７６０において、ビットストリームパッキングがＰフレームｉに対して実行される。１７７０において、高解像度ＭＥがＰフレームｉ＋１に対して実行される。１７８０において、ｉが１だけインクリメントされる。その後、処理は１７５０，１７６０に続き、次のＰフレームが考慮される。
【００３５】
ここに説明されたシステム、方法及びコンピュータプログラムは、同様の機能を有するビデオエンコーダ又は他のコンポーネントにおいて実現されてもよい。さらに、ここに説明されたシステム、方法及びコンピュータプログラムはまた、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップ若しくはネットブックコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、携帯コンピュータ、パームトップコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、スマートデバイス（スマートフォン、スマートタブレット又はスマートテレビなど）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイスなどに関して実現されてもよい。
【００３６】
ここに開示される１以上の特徴は、離散及集積回路ロジック、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）ロジック及びマイクロコントローラを含むハードウェア、ソフトウェア、ファームウェア及びこれらの組み合わせにより実現され、ドメイン固有集積回路パッケージ又は集積回路パッケージの組み合わせの一部として実現されてもよい。ここで用いられるソフトウェアという用語は、ここに開示された１以上の特徴及び／又は特徴の組み合わせをコンピュータシステムに実行させるためのコンピュータプログラムロジックを格納したコンピュータ可読媒体を含むコンピュータプログラムを表す。一時的コンピュータ可読媒体の具体例は、ローカル若しくはワイドエリアネットワークを介し又はインターネットなどのネットワークを介し無線周波数若しくは電気コンダクタを介し送信されるデジタル信号であってもよい。非一時的コンピュータ可読媒体の具体例は、コンパクトディスク、フラッシュメモリ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）又は他のデータストレージデバイスであってもよい。
【００３７】
図１８において、比較及び正規化機能のソフトウェアの実施例が示される。図示されるシステム１８００は、１以上のプロセッサ１８２０を有し、さらにメモリ１８１０の本体を含むものであってもよい。プロセッサ１８２０は、ＣＰＵ（Ｃｎｅｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及び／又はＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を有してもよい。メモリ１８１０は、コンピュータプログラムロジック１８４０を格納可能な１以上のコンピュータ可読媒体を有してもよい。メモリ１８１０は、ハードディスクドライブ、コンパクトディスクなどの着脱可能な媒体、ＲＯＭ若しくはＲＡＭデバイス又はこれらの組み合わせとして実現されてもよい。プロセッサ１８２０及びメモリ１８１０は、バスなどの当業者に既知の複数の技術の何れかを用いて通信する。メモリ１８１０に含まれるコンピュータプログラムロジック１８４０は、プロセッサ１８２０によりリード及び実行されてもよい。Ｉ／Ｏ１８３０としてまとめて示される１以上のＩ／Ｏポート及び／又はＩ／Ｏデバイスがまた、プロセッサ１８２０及びメモリ１８１０に接続されてもよい。
【００３８】
コンピュータプログラムロジック１８４０は、モード判定コード１８５０を有してもよい。当該モジュールは、動き推定を含む上述されたモード判定処理を行ってもよい。上述されるように、いくつかの実施例では、動き推定は再構成されたフレームの代わりにオリジナルフレームを用いて実行されてもよい。この場合、モード判定コード１８５０は、オリジナルフレームを用いて動き推定を実行するよう適切に構成される。
【００３９】
コンピュータプログラムロジック１８４０は、ビットストリームパッキングコード１８６０を有してもよい。当該モジュールは、フレーム再構成を含む上述されたビットストリームパッキング処理を行ってもよい。
【００４０】
コンピュータプログラムロジック１８４０は、ディパッチングコード１８５０を有してもよい。当該モジュールは、モード判定処理及び／又はビットストリームパッキング処理について、これらのプロセスが上述されたようにパラレルに実行されることがある場合、所与のフレームのディスパッチ処理を行ってもよい。
【００４１】
このパラレル化は、異なるコンポーネントにおいて異なるプロセスを実行することによって部分的に実現されてもよい。一実施例（図示せず）では、モード判定処理はソフトウェア又はファームウェアにより実現され、ビットストリームパッキングはハードウェアにより実現されてもよい。他の実施例では、ビットストリームパッキングはソフトウェア又はハードウェアにより実現され、モード判定処理はハードウェアにより実現されてもよい。あるいは、ビットストリームパッキング及びモード判定処理の双方がソフトウェア／ファームウェアにより実現されてもよく、それぞれは異なるプロセッサ上で実行されてもよい。例えば、ビットストリームパッキングは、ＣＰＵ上で実行されるソフトウェア又はファームウェアにより実現され、モード判定処理はＧＰＵ上で実行されるソフトウェア又はファームウェアにより実現されてもよい。
【００４２】
上記説明はフレーム符号化に関することに留意されたい。しかしながら、上述されたコンセプトは、他の符号化形態により広く適用されてもよい。例えば、当業者に理解されるように、上記コンセプトはまた、所与のフレームがトップ及びボトムフィールドに分離されるフィールド符号化に適用されてもよい。ここでは、エンコーダは、トップ及びボトムフィールドを別々に処理し、それらを別のフレームとして処理することによって、フレームを処理してもよい。
【００４３】
機能、特徴及びその関係を示す機能構成ブロックを用いて方法及びシステムが開示された。これらの機能構成ブロックの境界の少なくとも一部は、説明の便宜上ここでは任意に規定された。他の境界は、指定された機能及びその関係が適切に実行される限り規定されてもよい。
【００４４】
各種実施例がここで開示されるが、それらは限定でなく単なる具体例として提供されていることが理解されるべきである。形式及び詳細の各種変更はここに開示された方法及びシステムの趣旨及び範囲から逸脱することなく可能であることが、関連技術の当業者に明らかであろう。従って、請求項の幅及び範囲は、ここに開示された実施例の何れかにより限定されるべきでない。
【図１】
0005905582.tif 000002
【図２】
0005905582.tif 000003
【図３】
0005905582.tif 000004
【図４】
0005905582.tif 000005
【図５】
0005905582.tif 000006
【図６】
0005905582.tif 000007
【図７】
0005905582.tif 000008
【図８】
0005905582.tif 000009
【図９】
0005905582.tif 000010
【図１０】
0005905582.tif 000011
【図１１】
0005905582.tif 000012
【図１２】
0005905582.tif 000013
【図１３】
0005905582.tif 000014
【図１４】
0005905582.tif 000015
【図１５】
0005905582.tif 000016
【図１６】
0005905582.tif 000017
【図１７】
0005905582.tif 000018
【図１８】
0005905582.tif 000019