(57)【特許請求の範囲】
【請求項１】
処理回路と、
複数のピクセルを含むビデオフレームを多数のマクロブロックに分割するべく、前記処理回路上で実行するためのマクロブロックモジュールと、
複数のマクロブロック境界に沿って前記ビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成するべく、前記処理回路上で実行するための領域モジュールと、
各領域における前記複数のマクロブロックに基づいて、複数の波面グループを生成するべく、前記処理回路上で実行するための波面モジュールとを備え、
各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、
各波面グループは、並列に処理するための１または複数のマクロブロックを含み、
前記処理回路は、波面グループにおける各マクロブロックを並列に処理し、
依存性を有するマクロブロックが属する波面グループが、前記依存性を有する前記マクロブロックの親マクロブロックが属する波面グループよりも先に処理されるべき場合に、前記処理回路は、前記親マクロブロックに対するデフォルト値又は予測値を用いて、前記依存性を有する前記マクロブロックを処理する、装置。
【請求項２】
前記少なくとも２つの領域を生成するための前記領域モジュールは、前記複数のマクロブロック境界に沿って斜め方向に前記ビデオフレームを分割することを含む、請求項１に記載の装置。
【請求項３】
前記領域モジュールは、前記ビデオフレームを、前記ビデオフレームの下部左隅から前記ビデオフレームの右上隅へと斜め方向に分割する、請求項２に記載の装置。
【請求項４】
前記少なくとも２つの領域を生成するための前記領域モジュールは、各領域が前記複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、前記ビデオフレームを分割することを含む、請求項１〜３のいずれか１項に記載の装置。
【請求項５】
前記複数の波面グループを生成するための前記波面モジュールは、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを前記複数の波面グループに割り当てることができない場合に、更なるマクロブロックを前記複数の波面グループのうちの少なくとも１つに割り当てることを含む、請求項１〜４のいずれか１項に記載の装置。
【請求項６】
前記複数の波面グループを生成するための前記波面モジュールは、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てることを含む、請求項１〜５のいずれか１項に記載の装置。
【請求項７】
前記波面モジュールは、
（ｉ）左、上部、および右上の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を、下記の式２に従って算出するか、または
（ｉｉ）左および上部の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を、下記の式４に従って算出し、
式２．波面グループ＝（Ｗ＋２＊（Ｈ−１）＋（Ｎ−１））／Ｎ
式４．波面グループ＝（Ｗ＋（Ｈ−１）＋（Ｎ−１））／Ｎ
であり、式中、Ｗ＝複数のマクロブロックにおけるフレーム幅、Ｈ＝複数のマクロブロックにおけるフレームの高さ、Ｎ＝領域の数である、請求項２または３に記載の装置。
【請求項８】
前記処理回路は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理する、請求項１〜７のいずれか１項に記載の装置。
【請求項９】
各マクロブロックは、１６×１６ピクセルのマトリックスを含む、請求項１〜８のいずれか１項に記載の装置。
【請求項１０】
コンピュータに、
複数のピクセルを含むビデオフレームを多数のマクロブロックに分割する手順と、
複数のマクロブロック境界に沿って前記ビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成する手順と、
各領域における前記複数のマクロブロックに基づいて、複数の波面グループを生成する手順と、
波面グループにおける各マクロブロックを並列に処理する手順とを実行させ、
各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、
各波面グループは、並列に処理するための１または複数のマクロブロックを含み、
前記各マクロブロックを並列に処理する手順は、依存性を有するマクロブロックが属する波面グループが、前記依存性を有する前記マクロブロックの親マクロブロックが属する波面グループよりも先に処理されるべき場合に、前記親マクロブロックに対するデフォルト値又は予測値を用いて、前記依存性を有する前記マクロブロックを処理することを含む、コンピュータプログラム。
【請求項１１】
前記コンピュータに、前記複数のマクロブロック境界に沿って斜め方向に前記ビデオフレームを分割する手順を有する、少なくとも２つの領域を生成する手順を更に実行させる、請求項１０に記載のコンピュータプログラム。
【請求項１２】
前記ビデオフレームを斜め方向に分割する前記手順は、前記ビデオフレームの下部左隅から前記ビデオフレームの右上隅へと前記ビデオフレームを分割する手順を有する、請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記複数のマクロブロックの並列処理を最大化するべく、各領域が等しい数のマクロブロックを有するように、前記コンピュータに、前記ビデオフレームを分割する手順を有する、前記少なくとも２つの領域を生成する手順を更に実行させる、請求項１０〜１２のいずれか１項に記載のコンピュータプログラム。
【請求項１４】
前記コンピュータに、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを前記複数の波面グループのうちの少なくとも１つに割り当てる手順を有する、前記複数の波面グループを生成する手順を更に実行させる、請求項１０〜１３のいずれか１項に記載のコンピュータプログラム。
【請求項１５】
前記コンピュータに、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てる手順を有する、複数の波面グループを生成する手順を更に実行させる、請求項１０〜１４のいずれか１項に記載のコンピュータプログラム。
【請求項１６】
前記複数の波面グループを生成する手順は、
（ｉ）左、上部、および右上の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を、下記の式２に従って算出するか、または
（ｉｉ）左および上部の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を、下記の式４に従って算出することを含み、
式２．波面グループ＝（Ｗ＋２＊（Ｈ−１）＋（Ｎ−１））／Ｎ
式４．波面グループ＝（Ｗ＋（Ｈ−１）＋（Ｎ−１））／Ｎ
であり、式中、Ｗ＝複数のマクロブロックにおけるフレーム幅、Ｈ＝複数のマクロブロックにおけるフレームの高さ、Ｎ＝領域の数である、請求項１１または１２に記載のコンピュータプログラム。
【請求項１７】
前記コンピュータに、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理する手順を更に実行させる、請求項１０〜１６のいずれか１項に記載のコンピュータプログラム。
【請求項１８】
処理コンポーネントにより、複数のピクセルを含むフレームを多数のマクロブロックに分割する段階と、
複数のマクロブロック境界に沿って前記フレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成する段階と、
各領域における前記複数のマクロブロックに基づいて、複数の波面グループを生成する段階と、
波面グループにおける各マクロブロックを並列に処理する段階とを備え、
各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、
各波面グループは、並列に処理するための１または複数のマクロブロックを含み、
前記各マクロブロックを並列に処理する段階は、依存性を有するマクロブロックが属する波面グループが、前記依存性を有する前記マクロブロックの親マクロブロックが属する波面グループよりも先に処理されるべき場合に、前記親マクロブロックに対するデフォルト値又は予測値を用いて、前記依存性を有する前記マクロブロックを処理することを含む、コンピュータ実装方法。
【請求項１９】
前記少なくとも２つの領域を生成する前記段階は、前記複数のマクロブロック境界に沿って斜め方向に前記フレームを分割する段階を有する、請求項１８に記載のコンピュータ実装方法。
【請求項２０】
前記フレームを分割する前記段階は、前記フレームの下部左隅から前記フレームの右上隅へと斜め方向に前記フレームを分割する段階を有する、請求項１９に記載のコンピュータ実装方法。
【請求項２１】
前記少なくとも２つの領域を生成する前記段階は、前記複数のマクロブロックの並列処理を最大化するべく、各領域が等しい数のマクロブロックを有するように、前記フレームを分割する段階を有する、請求項１８〜２０のいずれか１項に記載のコンピュータ実装方法。
【請求項２２】
複数の波面グループを生成する前記段階は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを前記複数の波面グループに割り当てることができない場合に、更なるマクロブロックを前記複数の波面グループのうちの少なくとも１つに割り当てる段階を有する、請求項１８〜２１のいずれか１項に記載のコンピュータ実装方法。
【請求項２３】
複数の波面グループを生成する前記段階は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てる段階を有する、請求項１８〜２２のいずれか１項に記載のコンピュータ実装方法。
【請求項２４】
前記複数の波面グループを生成する段階は、
（ｉ）左、上部、および右上の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を、下記の式２に従って算出する段階、または
（ｉｉ）左および上部の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を、下記の式４に従って算出する段階を有し、
式２．波面グループ＝（Ｗ＋２＊（Ｈ−１）＋（Ｎ−１））／Ｎ
式４．波面グループ＝（Ｗ＋（Ｈ−１）＋（Ｎ−１））／Ｎ
であり、式中、Ｗ＝複数のマクロブロックにおけるフレーム幅、Ｈ＝複数のマクロブロックにおけるフレームの高さ、Ｎ＝領域の数である、請求項１９または２０に記載のコンピュータ実装方法。
【請求項２５】
波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理する段階を備える、請求項１８〜２４のいずれか１項に記載のコンピュータ実装方法。
【請求項２６】
請求項１０〜１７のいずれか１項に記載のコンピュータプログラムを格納する、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に説明される複数の実施形態は、概して生のビデオストリームを処理するための複数の技術に関する。より詳細には、これらの技術は、生のビデオストリームの１または複数のビデオフレームをエンコードすることを含み得る。
【背景技術】
【０００２】
アナログビデオ信号に基づくフルモーションのビデオディスプレイは、長きにわたりテレビの形態で利用可能であった。近年、コンピュータ処理能力および費用負担力が向上して、デジタルビデオ信号に基づくフルモーションのビデオディスプレイは、より広範に利用可能となってきている。デジタルビデオシステムは、フルモーションのビデオシーケンスを生成し、変更し、送信し、格納する場合において、従来のアナログビデオシステムに対して顕著な改善を提供し得る。デジタルビデオは、連続的に再生またはレンダリングされる多数のフレームを含む。
【０００３】
各フレームは、特定のシステムのディスプレイ解像度に基づいて複数のピクセルのアレイから形成された静止画像である。通常、ビデオにおける生のデジタル情報量は膨大なものであり、大量の格納を要し、送信される場合には顕著な量の帯域幅を用いる。
【０００４】
そのような膨大な量のデジタルビデオ情報を格納または送信する場合における限界に対応するべく、様々な動画圧縮規格または処理が確立されてきている。いくつかの例において、ビデオデータを採取してあまり空間を要しないフォーマットでエンコードするべく、ビデオエンコーダが用いられる。結果として、ビデオ情報を送受信する複数のデバイス間で消費される帯域幅は、より効率的に用いられ得、またはより多くのデータがそれらのデバイス間で同時に送信され得る。
【図面の簡単な説明】
【０００５】
【図１Ａ】ビデオフレーム処理システムの例示的な実施形態を図示する。
【図１Ｂ】コンピューティングシステムの例示的な実施形態を図示する。
【図２Ａ】複数のビデオフレームの例示的な実施形態を図示する。
【図２Ｂ】複数のビデオフレームの例示的な実施形態を図示する。
【図２Ｃ】複数のビデオフレームの例示的な実施形態を図示する。
【図２Ｄ】複数のビデオフレームの例示的な実施形態を図示する。
【図２Ｅ】複数のビデオフレームの例示的な実施形態を図示する。
【図３Ａ】複数のマクロブロック依存性を用いるビデオフレームの例示的な実施形態を図示する。
【図３Ｂ】複数のマクロブロック依存性を用いるビデオフレームの例示的な実施形態を図示する。
【図３Ｃ】複数のマクロブロック依存性を用いるビデオフレームの例示的な実施形態を図示する。
【図３Ｄ】複数の波面グループの表の例示的な実施形態を図示する。
【図４】マクロブロックの例示的な実施形態を図示する。
【図５】第１のロジックフロー図の例示的な実施形態を図示する。
【図６】第２のロジックフロー図の例示的な実施形態を図示する。
【図７】コンピューティングシステムの例示的な実施形態を図示する。
【図８】コンピューティングアーキテクチャの例示的な実施形態を図示する。
【発明を実施するための形態】
【０００６】
様々な実施形態は、概して、生のビデオストリームの１または複数のビデオフレームをエンコードするための装置、システム、および方法を対象とする。ビデオフレームは、ＩＴＵ−Ｔ／ＩＳＯ  Ｈ．２６４、またはアドバンストビデオコーデック（ＡＶＣ）およびＭＰＥＧ−４  Ｐａｒｔ１０として知られるＩＴＵ−Ｔ・国際標準化機構（ＩＳＯ）の動画圧縮規格等、任意のエンコード規格に基づいてエンコードされ得る。複数のビデオフレームは、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）およびＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によってＩＳＯ／ＩＥＣ２３００８−２  ＭＰＥＧ−Ｈ  Ｐａｒｔ２およびＩＴＵ−Ｔ  Ｈ．２６５として共同で開発されたＨ．２６４／ＭＰＥＧ−４ＡＶＣ（アドバンストビデオ符号化）の後継である、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）の動画圧縮規格に準拠して処理され得る。様々な実施形態は、これらの規格に限定されず、複数のビデオフレームは、Ｇｏｏｇｌｅ（登録商標）により開発された開放型の特許権使用料不要の動画圧縮規格であるＶＰ８およびＶＰ９等、任意の他の規格に準拠して処理され得る。
【０００７】
更に、１または複数の実施形態は、エンコード規格に基づいて複数のフレームを多数のマクロブロックに分割し、次に各々が１または複数のマクロブロックを有する多数の領域に分割することを対象とする場合がある。各マクロブロックは、１６×１６ピクセルのマトリックスまたはエンコードに用いられる動画圧縮規格に基づいた任意のサイズであってもよい。複数のマクロブロックは、複数のピクセルの列または行により画定される４つのマクロブロック境界または側面を有し得る。複数のマクロブロック境界は、ビデオフレームを次々に分割して２またはそれより多くの領域を生成するべく用いられ得る。
【０００８】
例えば、ビデオフレームは、複数のマクロブロック境界または複数のマクロブロックの縁部に沿って水平方向または斜め方向に分割され得る。様々な実施形態において、複数のマクロブロックは、１または複数の波面（ｗａｖｅ  ｆｒｏｎｔ）グループに割り当てられ、並列またはほぼ同時に処理され得る。換言すれば、同一の波面グループに割り当てられたマクロブロックの全てが並列に処理され得る。複数のマクロブロックを並列に処理することにより、ビデオフレームを処理する処理サイクルの回数を低減することを含め、顕著な性能の向上が実現され得る。以下の説明により明らかとなるように、複数のビデオフレームが複数のマクロブロック境界に沿って多数の領域に分割されると、並列に処理され得るマクロブロックの数は増加し、処理サイクルの回数は著しく低減される。
【０００９】
様々な実施形態は、これらの動作を実行するための装置またはシステムにも関する。本装置は、要求される目的のために特に構成されてもよく、またはコンピュータに格納されたコンピュータプログラムにより選択的にアクティブ化され、もしくは再構成される汎用コンピュータを含んでもよい。本明細書に提示される複数の手順は、本質的に、特定のコンピュータまたは他の装置に関係しない。様々な汎用の機械は、本明細書における教示により記述される複数のプログラムと共に用いられてもよく、または要求される方法を実行するためのより特化した装置を構成することが好都合と判明する場合がある。様々なこれらの機械に必要とされる構造は、与えられる説明から明らかとなるであろう。
【００１０】
ここで図面を参照する。全体を通して、同一の符号は同一の要素を指すべく用いられる。以下の説明において、説明を目的として、多数の具体的な詳細は、十分な理解を提供するべく記載される。しかし、新規な複数の実施形態がこれらの具体的な詳細を用いることなく実施され得ることが明らかであり得る。他の複数の例において、周知の複数の構造およびデバイスは、それらの説明を容易にするべくブロック図の形態で示される。その意図は、特許請求される主題に即した全ての変更形態、均等物、代替形態を包含することにある。
【００１１】
図１Ａは、情報およびデータを処理するためのビデオフレーム処理システム１００の実施形態を図示する。具体的には、ビデオフレーム処理システム１００は、ビデオフレームをエンコードおよびデコードするべく用いられ得る。しかし、ビデオフレーム処理システム１００は、使用または機能の範囲についていかなる限定も示唆することを意図しない。技術およびツールは、多様な汎用または専用のコンピューティング環境で実装され得るからである。
【００１２】
従って、ビデオフレーム処理システム１００は、ビデオソース１０２、ビデオフレームエンコーダ１０４、伝送媒体１０６、ビデオフレームデコーダ１０８、およびディスプレイ１１０を含み得る。いくつかの実施形態において、ビデオフレーム処理システム１００は、メモリ１２０を含み得る。いくつかの実施形態において、ビデオフレーム処理システム１００は、ＨＶＥＣ、Ｈ．２６５、ＶＰ８、およびＶＰ９等、すでに検討された１または複数の規格に準拠するビデオエンコーダ／デコーダ処理システムを含み得る。
【００１３】
例えばアナログフォーマットの元の完全な情報コンテンツビデオ信号が、ビデオフレームソース１０２に提供され得る。ビデオフレームソース１０２は、ビデオ信号を輝度（ルマ）および色度（クロマ）のフォーマット、例えば色空間のＹＣｂＣｒ、ＹＵＶ、ＹＩＱ、およびＹＣＣファミリにデジタル化する等、様々な機能を実行し得る。当業者は、ＹＣｂＣｒ色空間においては、Ｙはルマ成分であり、ＣｂおよびＣｒは、クロマ成分であり、ＹＵＶ色空間においては、Ｙはルマ成分であり、ＵおよびＶはクロマ成分であり、ＹＩＱ色空間においては、Ｙはルマ成分であり、ＩおよびＱは各同相成分および直交クロマ成分であり、ＹＣＣ色空間においては、Ｙはルマ成分であり、Ｃ（Ｃｂ）およびＣ（Ｃｒ）はクロマ成分であることを理解するであろう。
【００１４】
ビデオフレームソース１０２は、フォーマットされた複数のデジタル化ビデオ信号をビデオエンコーダ１０４に提供し得る。具体的なビデオフォーマットに関係なく、ビデオフレームソース１０２は、必要な処理を実行して、元のアナログビデオ信号の完全な情報デジタルビデオ信号バージョンをビデオエンコーダ１０４に提供し得る。様々な実施形態において、ビデオフレームソース１０２は、伝送媒体または格納済みファイルであってもよい。ビデオフレームソース１０２は、複数の画像またはビデオフレームの形態の複数のデジタルビデオ信号シーケンスをビデオエンコーダ１０４に提供し得る。
【００１５】
ビデオエンコーダ１０４の複数のブロックを形成するアーキテクチャおよびコアは、動き補償された変換符号化に基づき得、様々な動きベクトルおよびモードの演算を実行し得る。例えば、各ビデオフレームは、ビデオフレームを１または複数の領域としてパーティショニングすることにより圧縮され得、各領域は、１または複数のマクロブロックを含み得る。いくつかの実施形態において、複数のマクロブロックは、対応する複数のクロマサンプルを有する１６×１６のルマピクセル（またはサンプル）のブロックとして画定され得る。また、各マクロブロックは、動き補償予測のための１または複数のサブマクロブロックパーティションに分割され得る。同一または複数の他の実施形態において、複数のマクロブロックは、４×４のマクロブロック、８×８のマクロブロック、３２×３２のマクロブロック等のような異なるサイズであってもよく、エンコードに用いられる規格に基づいてもよい。
【００１６】
ビデオエンコーダ１０４は、１または複数のビデオフレームの形態のビデオフレームソース１０２からデジタルビデオ信号シーケンスを受信し得る。ビデオエンコーダ１０４は、複数のビデオフレームを圧縮して、ビットストリームの形態の複数の圧縮済みビデオビットを伝送媒体１０６および／またはメモリ１２０に渡す。いくつかの実施形態において、圧縮は、上記で指定された複数の規格のうちの１つに準拠して実行され得、出力されるビットストリームは、圧縮に用いられる規格に基づいたビットストリームであり得る。
【００１７】
ビデオエンコーダ１０４は、エンコードするための複数のフレームを受信する。以下により詳細に検討されるように、複数のフレームは、元の画像における１６×１６のピクセルのブロック、またはその他のサイズのピクセルマトリックスに対応するマクロブロックの複数の単位で処理される。各マクロブロックは、１または複数のマクロブロック依存性に基づいて、波面グループに割り当てられ、または配置され得る。波面グループにおける各マクロブロックは、並列にエンコードまたは処理され得る。例えば、全てのマクロブロックがエンコードされるまで、第１の波面グループに属する全てのマクロブロックが、複数の動きベクトルおよびモードを見つけるべく並列に処理され得、次に、第２の波面グループに属する全てのマクロブロックが並列に処理され得る、等である。
【００１８】
いくつかの実施形態において、マクロブロックのエンコードは、マクロブロック依存性を生成する隣接マクロブロックのエンコードに依存し得る。例えば、いくつかの実施形態において、マクロブロックは、左、上部、および右上のマクロブロックに依存し得る。従って、左、上部、および右上のマクロブロックは、依存するマクロブロックがエンコードされる前に処理され得る。しかし、様々な実施形態は、このようには限定されず、図３Ａ〜図３Ｃに関連して以下により詳細に説明されるように、複数の予測マクロブロックが用いられ得る。
【００１９】
いくつかの実施形態において、予測マクロブロックは、再構成されたフレームに基づいて形成され得る。例えば、予測マクロブロックは、すでにエンコードされ、デコードされ、再構成された現在のフレームにおける複数のサンプルから形成され得る。別の例において、予測マクロブロックは、動き補償予測により１または複数の参照フレームから形成され得る。予測マクロブロックは、現在のマクロブロックから減算され、残余の、または異なるマクロブロックを生成する。ブロック変換を用いて、残余の、または異なるマクロブロックは、マクロブロックをデコードして補償済みビットストリームを形成するべく必要とされる他の情報に加えて、複数のエンコード済み係数のセットを提供するべく、変換および量子化される。他の情報としては、中でも、例えば、マクロブロックの予測モード、量子化器ステップサイズ、マクロブロックがどのように動き補償されたかを記述する動きベクトル情報が挙げられ得る。補償済みビットストリームは、送信のためにストレージ／伝送媒体１０６に渡され得る。
【００２０】
伝送媒体１０６は、媒体を提供し得、これにより、エンコード済みビデオ信号は、最終的にビデオデコーダ１０８に提供され得る。例えば、伝送媒体１０６は、１または複数の有線または無線接続を含むデジタル通信システムであってもよい。代替的に、または同時に、補償済みビットストリームは、揮発性メモリおよび不揮発性メモリの両方を含む、データを格納することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実装され得るメモリ１２０に送信され得る。いくつかの実施形態において、機械可読媒体またはコンピュータ可読媒体は、非一時的媒体を含み得る。実施形態は、この文脈において限定されない。いくつかの実施形態において、メモリ１２０は、例えば、ビデオフレーム情報の一時的格納に提供され得る。更に、伝送媒体１０６および／またはメモリ１２０は、複数のバッファにデータを格納し得る。
【００２１】
ビデオデコーダ１０８は、伝送媒体１０６および／またはメモリ１２０から、複数の圧縮済みビデオビットを含むビットストリームの形態のエンコード済み／圧縮済みデジタルビデオ信号を受信して、これをデコードし、ディスプレイデバイス１１０に提供され得るデコード済みビデオ信号を生成する。いくつかの実施形態において、エンコード済み／圧縮済みビデオ信号は、すでに検討されたＨ．２６４、ＨＥＶＣ、Ｈ．２６５、Ｖ８、Ｖ９等、規格仕様書のうちの１つに基づいた形態であり得る。概して、ビデオデコーダ１０８は、コンセプトとしてビデオエンコーダ１０４の逆に機能し、様々な他の処理要素の中でも主としてエントロピデコーダを含み得る。ビデオデコーダ１０８により生成されたビデオ信号は、ビデオエンコーダ１０４が可逆エンコード法を使用する場合、ビデオエンコーダ１０４に提供される信号と同一であり得る。ビデオデコーダ１０８により生成されたビデオ信号は、ビデオエンコーダ１０４が非可逆エンコード法、例えばＭＰＥＧのようなエンコード法を使用する場合、ビデオエンコーダ１０４に提供される信号とはやや異なる場合がある。
【００２２】
様々な実施形態において、ディスプレイデバイス１１０は、ビデオデコーダ１０８から受信されたディスプレイ情報のための任意のタイプのディスプレイデバイスであってもよい。ディスプレイデバイス１１０は、例えば、液晶ディスプレイ（ＬＣＤ）、薄膜トランジスタＬＣＤ（ＴＦＴ−ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）、フレキシブルディスプレイ、３次元（３Ｄ）ディスプレイ、およびプロジェクタのうちの少なくとも１つを含み得る。ビデオフレームおよびビデオ情報の表示に加えて、ディスプレイデバイス１１０は、ビデオフレーム処理システム１００の制御機能に関連付けられたユーザインターフェース（ＵＩ）またはグラフィカルユーザインターフェース（ＧＵＩ）を表示し得る。いくつかの実施形態において、ビデオフレーム処理システム１００は、２またはそれより多くのディスプレイユニットを含み得る。例えば、一実施形態において、ビデオフレーム処理システム１００は、２つのＬＣＤディスプレイを含み得る。
【００２３】
図１Ｂは、１または複数のビデオフレームを含む情報を処理するためのコンピューティングシステム１５０の例示的な実施形態を図示する。コンピューティングシステム１５０は、ビデオフレーム処理システム１００に関する情報を処理し、ビデオフレーム処理システム１００と共に用いられるシステムを表し得る。例えば、処理コンポーネント１５２は、ビデオフレーム処理システム１００に関する情報およびデータを処理し得、メモリ１５４は、メモリ１２０と同一であるか、または類似し得る。更に、ビデオエンコーダ制御モジュール１６０は、ビデオエンコーダ１０４のための１または複数のフレームをエンコードする様々な態様を制御するべく用いられ得る。コンピューティングシステム１５０は、処理コンポーネント１５２、メモリ１５４、インターフェース１５６、およびストレージ１５８を含み得る。更に、コンピューティングシステム１５０は、マクロブロックモジュール１６２、領域モジュール１６４、および波面モジュール１６６を有するビデオエンコーダ制御モジュール１６０を含み得る。コンピューティングシステム１５０は、限定された数のコンポーネントおよびモジュールと共に図示されているが、様々な実施形態は、このようには限定されず、コンピューティングシステム１５０は、情報およびデータを処理するべく任意の数のコンポーネントおよびモジュールを有し得る。例えば、コンピューティングシステム１５０は、ビデオエンコーダ制御モジュールに関連して以下に検討される類似の態様で複数のビデオフレームをデコードするための複数のビデオデコーダモジュールを含み得る。
【００２４】
処理コンポーネント１５２は、マイクロプロセッサ、プロセッサ、中央処理装置、デジタル信号処理ユニット、デュアルコアプロセッサ、マルチコアプロセッサ、グラフィックス処理ユニット（ＧＰＵ）、モバイルデバイスプロセッサ、デスクトッププロセッサ、シングルコアプロセッサ、システムオンチップ（ＳｏＣ）デバイス、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セット（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、もしくはその他のタイプのプロセッサ、処理回路、または単一のチップもしくは集積回路上の処理回路等であるが、これらに限定されない１または複数の任意のタイプの演算要素であってもよい。処理コンポーネント１５２は、１または複数のバス、制御ライン、およびデータライン等の相互接続を介してコンピューティングシステムの他の複数の要素に接続され、これらと通信し得る。
【００２５】
いくつかの実施形態において、処理コンポーネント１５２は、グラフィックス処理ユニット（ＧＰＵ）であり得る。しかし、同一または複数の他の実施形態において、コンピュータシステム１５０は、スタンドアロンおよび別個のＧＰＵ（図示せず）を含み得る。ＧＰＵは、グラフィックス関連の複数の動作を実行するように最適化された任意のプロセッシングユニット、ロジック、または回路、ならびにビデオエンコーダ・ビデオデコーダエンジン、およびフレーム相関エンジンを含み得る。ＧＰＵは、ビデオゲーム、グラフィックス、コンピュータ支援設計（ＣＡＤ）、シミュレーション・ビジュアル化ツール、画像処理等のような様々な用途のために２次元（２Ｄ）および／または３次元（３Ｄ）画像をレンダリングするべく用いられ得る。様々な実施形態は、このようには限定されない。ＧＰＵは、画像、ビデオ、プログラム、アニメーション、３Ｄ、２Ｄ等のような任意のタイプのグラフィックスデータを処理し得る。
【００２６】
いくつかの実施形態において、コンピューティングシステム１５０は、処理コンポーネント１５２に結合するためのメモリ１５４を含み得る。所与の実装に所望のように、メモリ１５４は、１または複数の相互接続を介し、または処理コンポーネント１５２とメモリ１５４との間の専用通信バスにより処理コンポーネント１５２に結合され得る。メモリ１５４は、揮発性メモリおよび不揮発性メモリの両方を含む、データを格納することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実装され得る。いくつかの実施形態において、機械可読媒体またはコンピュータ可読媒体は、非一時的媒体を含み得る。実施形態は、この文脈において限定されない。
【００２７】
メモリ１５４は、瞬間的、一時的、または永久にデータを格納し得る。メモリ１５４は、コンピューティングシステム１５０のための複数の命令およびデータを格納する。メモリ１５４は、フレーム情報、ビットストリーム情報、エンコード済み情報等のテンポラリ変数または他の中間情報も格納し得るが、処理コンポーネント１５２は、複数の命令を実行する。メモリ１５４は、上述のデータを格納することに限定されない。メモリ１５４は、任意のタイプのデータを格納し得る。
【００２８】
いくつかの実施形態において、コンピューティングシステム１５０は、１または複数のインターフェース１５６を含み得る。インターフェース１５６の例としては、ユニバーサルシリアルバス（ＵＳＢ）ポート／アダプタ、ＩＥＥＥ１３９４ファイヤワイヤポート／アダプタ等が挙げられ得る。実施形態は、この文脈において限定されない。
【００２９】
様々な実施形態において、インターフェース１５６のうちの１または複数は、トランシーバ等、有線または無線接続であってもよい。より具体的には、１または複数のインターフェース１５６は、様々な好適な無線通信技術を用いて複数の信号および情報を送受信することができる１または複数の無線機を含み得る。複数のそのような技術は、１または複数の無線ネットワークにわたる複数の通信を含み得る。例示的な無線ネットワークとしては、無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、セルラネットワーク、および衛星ネットワークが挙げられる（しかし、これらに限定されるものではない）。複数のそのようなネットワーク全体で通信する場合、インターフェース１５６は、任意のバージョンの１または複数の適用可能な規格に準拠して動作し得る。実施形態は、この文脈において限定されない。
【００３０】
様々な実施形態において、コンピューティングシステム１６０は、ビデオエンコーダ１０４により情報を処理する様々な態様を制御するためのビデオエンコーダ制御モジュール１６０を含み得る。より具体的には、ビデオエンコーダ制御モジュール１６０は、ビデオストリームの１または複数のフレームを複数のマクロブロックに分割して、複数のマクロブロック境界に沿って複数のフレームを分割し、並列に処理およびエンコードするために複数のマクロブロックを複数の波面グループにグループ化し得る。
【００３１】
ビデオエンコーダ制御モジュール１６０は、フレームを１または複数のマクロブロックに分割するためのマクロブロックモジュール１６２を含み得る。各フレームは、フレームのサイズおよび解像度に基づいた任意の数のピクセルを含み得る。例えば、フレームは、１２８０×７２０ピクセルのサイズを有し得、各マクロブロックは、１６×１６ピクセルマトリックスのサイズであり得る。この例において、フレームは、８０マクロブロックの幅および４５マクロブロックの高さであってもよい。
【００３２】
図４においてより詳細に検討されるように、各マクロブロックは、マクロブロックの外側の複数のピクセルにより画定される複数のマクロブロック境界を有し得る。より具体的には、マクロブロックは、左のマクロブロック境界もしくは縁部、上部のマクロブロック境界もしくは縁部、右のマクロブロック境界もしくは縁部、および下部のマクロブロック境界もしくは縁部を有し得る。いくつかの実施形態において、フレームは、複数の領域を生成するべく、１または複数のマクロブロック境界に沿って更に分割され得る。
【００３３】
より具体的には、ビデオエンコーダ制御モジュール１６０は、複数のマクロブロック境界に沿って複数のフレームを分割し、１または複数の領域を生成するための領域モジュール１６４を含み得る。複数のマクロブロックは、波面モジュール１６６により１または複数の波面グループに割り当てられ得、波面グループにおける各マクロブロックは、並列に処理され得る。並列処理の利点は、複数のフレームが２またはそれより多くの領域に分割される場合に実現され得る。例えば、フレームを複数の領域に分割することにより、波面グループの数は低減され得、より多くのマクロブロックが並列に処理され得る。
【００３４】
いくつかの実施形態において、領域モジュール１６４は、複数のフレームを複数のマクロブロック境界に沿って水平方向に分割し、フレームを２またはそれより多くの領域に分割し得る。図２Ｂに関連して以下に検討されるように、複数のフレームは、２つの領域を生成するべく半分に分割され得る。しかし、様々な実施形態は、このようには限定されず、複数のフレームは、複数のマクロブロックを有する任意の数の領域を生成するべく、水平方向に分割され得る。
【００３５】
図２Ｄに図示されるように、領域モジュール１６４は、２またはそれより多くの領域を生成するべく、複数のフレームを複数のマクロブロック境界に沿って斜め方向にも分割し得る。いくつかの実施形態において、次々に分割されるマクロブロック境界は、複数のフレームが複数の領域に分割される前に決定された波面境界であり得る。より具体的には、フレームは、最適なマクロブロック並列処理を実現するべく、前の波面境界に沿って分割され得る。各波面グループは、１または複数のマクロブロックをグループに割り当てることにより生成され得る。いくつかの実施形態において、複数の波面グループの割り当ては、マクロブロック境界および／または波面境界の後の最初の値から開始し得る。例えば、図２Ｄに図示されるように、複数の波面グループの割り当ては、波面境界の後の各行における０で再開する。様々な実施形態をこのようには限定することはできず、複数の波面グループの割り当ては、並列処理を最適化する態様で行われ得る。
【００３６】
いくつかの実施形態において、領域モジュール１６４は、等しい数のマクロブロックが各領域内に存在するように複数のフレームを分割し得る。しかし、いくつかの例において、複数のフレームは、複数のフレームのサイズおよび／または複数のフレームにおけるマクロブロックの数に起因して均一に分割されない場合がある。これらの例において、各領域は、等しい数のマクロブロックを有しない場合がある。例えば、１つの領域は、処理されるべき更なるマクロブロックをその中に有する場合がある。様々な実施形態は、このようには限定されない。
【００３７】
ビデオエンコーダ制御モジュール１６０は、１または複数の波面または波面グループを生成するための波面モジュール１６６も含み得る。各波面グループは、並列に処理するための１または複数のマクロブロックを含み得る。換言すれば、同一の波面グループにおける各マクロブロックは、同時または並列に処理され得る。
【００３８】
様々な実施形態において、波面モジュール１６６は、複数のマクロブロック依存性に基づいて複数の波面グループを割り当て、または生成し得る。いくつかの例において、マクロブロックは、それが処理され得る前に、その複数の隣接マクロブロックのうちの１または複数が処理されることを必要とし得る。例えば、マクロブロックは、それが処理され得る前に、その左、上部、および右上の複数のマクロブロックが処理されることを必要とし得る。別の例において、マクロブロックは、それが処理され得る前に、その左および上部の複数のマクロブロックが処理されることを必要とし得る。様々な実施形態は、このようには限定されず、いくつかのフレームは、依存性がないか、または４つ以上の依存性があるマクロブロックを有し得る。更に、複数のマクロブロックは、これらのマクロブロック依存性を補償するべく互い違いの様式で複数の波面グループに割り当てられ得る。通常、最悪の場合の複数のマクロブロック依存性は、フレームで一貫しており、これは、互いに依存しない複数のＭＢが存在し得ることを意味する。複数の波面グループは、複数のマクロブロックを識別することにより形成される。
【００３９】
図２Ａは、マクロブロック列２０２およびマクロブロック行２０４において多数のマクロブロックに分割されたフレーム２０５の例示的な実施形態を図示する。図２Ａは、専ら例示の目的のために限定された数のマクロブロックを図示する。しかし、様々な実施形態は、このようには限定されない。
【００４０】
図２Ａに図示される各マクロブロックは、波面グループに割り当てられ得る。複数の波面グループは、複数のマクロブロックの各々における番号で図示される。例えば、左上のマクロブロックは、識別子２０６−１を有する波面グループ０にあり、波面グループ１におけるマクロブロックは、識別子２０６−２を有し、波面グループ２におけるマクロブロックは、識別子２０６−３を有し、波面グループ３におけるマクロブロックは、識別子２０６−４を有する。同一の番号を有する各マクロブロックは、同一の波面グループにあり、並列に処理される。すでに検討されたように、複数のマクロブロックは、複数の波面グループに割り当てられ得る。
【００４１】
図２Ａに図示されるように、フレーム２０５は、波面グループ０〜１９を有し、エンコードされるフレーム２０５に対して、合計で２０個の波面が処理され得る。しかし、複数のフレームを多数の領域に分割することにより、波面グループの数、およびエンコードされるフレームに対して処理されるように要求される波面グループの数を低減し得る。
【００４２】
図２Ｂ／図２Ｃは、分割線２０８により示されるマクロブロック境界に沿って水平方向に、フレーム２０５を複数の領域に分割する例示的な複数の実施形態を図示する。各領域における複数のマクロブロックは、すでに検討されたように、複数の波面グループに割り当てられ得る。しかし、この例示的な実施形態において、波面グループ割り当ては、フレーム２０７に図示されるように反復され得る。例えば、各領域における両方の左上のマクロブロックは、同一の波面グループ０に割り当てられる。
【００４３】
図２Ｃに図示されるように、波面グループ割り当ては、複数のマクロブロックにおける１または複数の行が同一の波面グループ割り当てを有する複数の行の間にあるので反復され得る。例えば、この例示的な実施形態において、２つの行のマクロブロックが同一の波面グループ割り当てを有する複数の行の間にある。このようにフレーム２０７を複数の領域に分割して、複数のマクロブロックを複数の波面グループに割り当てることにより、処理される波面の数は、更に低減され得る。この例示的な実施形態において、処理される波面の数は、２０個の波面グループから１４個の波面グループに低減される。反復される波面グループを有することのより適切な理由は、ライン２０８に沿った全ての依存性が意図的に除去されるからであるとしてもよい。これは、下部領域が丁度上部領域のように見えることを意味する。これは、下部領域における左上のマクロブロックが上部領域の左上のマクロブロック等と共に処理され得ることを意味する。
【００４４】
具体的には、より多くのマクロブロックが複数の同一の波面グループに割り当てられる。例えば、２つのマクロブロックは、識別子２０６−１を有する波面グループ０に割り当てられ、２つのマクロブロックは、識別子２０６−２を有する波面グループ１に割り当てられ、４つのマクロブロックは、識別子２０６−３を有する波面グループ２に割り当てられ、４つのマクロブロックは、識別子２０６−４を有する波面グループ３に割り当てられる、等である。従って、並列に処理されるマクロブロックの数は、フレーム２０７が２つの領域に分割されると、増加し得る。並列ＧＰＵにおいてより多くのマクロブロックを処理することにより、処理サイクルは、低減され得、バッテリ電源と共に電力が節約され得る。
【００４５】
図２Ｄ／図２Ｅは、波面境界２１２に沿ってマクロブロック境界に沿った斜め方向に２つの領域に分割されるフレームの例示的な実施形態を図示する。波面境界２１２は、図２Ｄのビデオフレーム２０５に図示されるようにビデオフレームが複数の領域に分割される前に、同一の波面グループに属する複数のマクロブロックにおけるフレームを分割する対角線であり得る。様々な実施形態において、ビデオフレームは、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向に分割され得る。例えば、図２Ｄは、ビデオフレーム２０９の下部左隅から右上隅へと波面グループ９に属する複数のマクロブロックに沿った波面境界２１２を図示する。様々な実施形態は、このようには限定されず、複数のビデオフレームは、任意の波面境界に沿って斜め方向に分割されてもよい。
【００４６】
更なる利点は、図２Ｄおよび図２Ｅの複数のビデオフレーム２０９により図示されるように、波面境界に沿った複数のマクロブロック境界に沿って斜め方向に、ビデオフレームを複数の領域に分割することにより実現され得る。各波面グループは、ビデオフレームが水平方向に分割され、または全く分割されない場合には、１または複数のマクロブロックを含み得る。[0]図２Ｅは、１０個の波面グループ０〜９を有するビデオフレーム２０９を図示する。この例示的な実施形態において、複数の更なるマクロブロックは、並列に処理され得、更なる処理サイクルは、低減され得る。例えば、６つのマクロブロックは、識別子２０６−１を有する波面グループ０に割り当てられ、６つのマクロブロックは、識別子２０６−２を有する波面グループ１に割り当てられ、６つのマクロブロックは、識別子２０６−３を有する波面グループ２に割り当てられ、６つのマクロブロックは、識別子２０６−４を有する波面グループ３に割り当てられる。
【００４７】
しかし、波面境界に沿って斜め方向にフレームを分割するには、波面境界に沿った複数のマクロブロックのうちの１または複数が複数の隣接マクロブロックの予測に基づいて処理されることを要求する場合がある。いくつかの実施形態において、予測マクロブロックは、複数の動きベクトルおよびモードに対する複数デフォルト値を用いて形成され得る。いくつかの実施形態において、複数の隣接マクロブロックに対する予測は、複数の動きベクトルおよびモードに対する複数の値が決定されるビデオの前処理段階中に形成され得る。しかし、様々な実施形態をこのようには限定することはできず、複数のマクロブロックの予測は、当業者に既知の他の手段により行われ得る。
【００４８】
いくつかの実施形態において、複数のフレームは、等しい数のマクロブロックが複数の領域の各々に存在するように、複数の領域に分割され得る。例えば、図２Ｂおよび図２Ｃに図示されるフレーム２０７は、３０個のマクロブロックが各領域内に存在するように、水平方向に半分に分割され得る。同様に、図２Ｄおよび図２Ｅに図示されるビデオフレーム２０９は、斜め方向に分割されてもよく、また、複数の領域の各々は、３０個のマクロブロックを有してもよい。いくつかの実施形態において、複数のフレームは、均一に分割されない場合があり、同一の数のマクロブロックの数が各領域内に存在しない。複数の領域のうちの１または複数は、１または複数の更なるマクロブロックを含み得る。
【００４９】
図３Ａは、マクロブロックおよびマクロブロック依存性３０２−１を有する例示的な実施形態のビデオフレーム２０５を図示する。この例示的な実施形態において、ビデオフレーム２０５は、複数の領域に分割されず、図２Ａに図示されるビデオフレーム２０５と同一かまたは類似し得る。図３Ａは、矢印で図示されるように、左、上部、および右上の複数の隣接マクロブロックに対するマクロブロック依存性３０２−１を有する列２０２−１および行２０４−２に位置するマクロブロックを図示する。従って、この位置で処理されるマクロブロックについては、それが依存する複数のマクロブロックから処理されなければならない。
【００５０】
この例示的な実施形態において、依存するマクロブロックが処理される前に複数の隣接マクロブロックが処理されるように、複数のマクロブロックが複数の波面グループに割り当てられる。例えば、図３Ａに図示されるように、マクロブロック依存性を有するマクロブロックは、波面グループ３に存在するが、その隣接マクロブロックは、波面グループ１および２に存在する。波面グループ１および２における複数のマクロブロックは、波面グループ３における複数のマクロブロックをエンコードする前に処理され得る。
【００５１】
図２Ａに関連してすでに上述されたように、ビデオフレームが複数の領域に分割されない場合、フレームを処理するべく、複数の更なる波面グループが必要とされる場合がある。波面の数は、水平方向、斜め方向、またはいくつかの他の手段のいずれかでビデオフレームを複数の領域に分割することにより低減され得る。しかし、ビデオフレームを複数の領域に分割するには、ビデオの動きおよびモードの演算に対する複数のデフォルト値を用いて、依存する複数のマクロブロックのうちのいくつかが処理されることを要求する場合がある。
【００５２】
図３Ｂは、マクロブロックおよびマクロブロック依存性３０２−１および３０２−２を有する複数の領域に水平方向に分割されたフレーム２０７の例示的な実施形態を図示する。この例示的な実施形態において、下部領域における複数のマクロブロックのうちの１または複数は、その複数の親マクロブロックのうちの１または複数に対する複数の予測値またはデフォルト値を用いて処理され得る。例えば、列２０２−４および行２０４−４におけるマクロブロックは、波面グループ３に存在する。しかし、このマクロブロックは、マクロブロック依存性３０２−２の矢印で図示されるように、波面グループ２、７、および８における複数のマクロブロックに対する複数の依存性を有する。昇順で処理される場合、波面グループ３における複数のマクロブロックは、波面グループ７および８における複数のマクロブロックの前に処理される。従って、波面グループ７および８における複数の親マクロブロックに対する複数の予測値は、マクロブロックがこの位置にある場合に要求され得る。これらの予測値は、デフォルト値であってもよく、または他の予測が用いられなければならない。更に、図３Ｂに図示されるように、フレーム２０７を２つの領域に分割するマクロブロック境界に沿った他の複数のマクロブロックも、処理される場合に、いくつかのデフォルト値または他の予測値を用いることを要求される場合がある。更に、波面境界に沿って斜め方向に分割される複数のフレームは、処理される場合に、いくつかのデフォルト値または他の予測値を用い得る複数のマクロブロックも有し得る。
【００５３】
図３Ｃは、波面境界に沿った２つの領域に斜め方向に分割されるフレーム２０９の例示的な実施形態を図示する。上述と同様に、下部領域における複数のマクロブロックのうちの１または複数は、その複数の親マクロブロックのうちの１または複数に対するいくつかのデフォルト値または他の予測値を用いて処理され得る。例えば、列２０２−６および行２０４−４におけるマクロブロックは、波面グループ１に存在する。しかし、このマクロブロックは、マクロブロック依存性識別子３０２−２の矢印で図示されるように、波面グループ０および９における複数のマクロブロックに対する複数の依存性を有する。昇順で処理される場合、波面グループ１における複数のマクロブロックは、波面グループ９における複数のマクロブロックの前に処理される。従って、波面グループ９における複数の親マクロブロックに対する複数のデフォルト値または予測値は、この位置にあるマクロブロックが処理される場合に用いられ得る。更に、図３Ｃに図示されるように、ビデオフレーム２０９を２つの領域に分割するマクロブロックまたは波面境界に沿った他の複数のマクロブロックも、処理される場合に、いくつかのデフォルト値または他の予測値を用いることを要求される場合がある。
【００５４】
図３Ｄは、（水平方向または斜め方向に）フレームを複数の領域に分割するべく用いられる領域の数、フレームサイズ、および方法に基づいてビデオフレームを処理するべく必要とされる多数の波面グループを示す例示的な表３５０を示す。表３５０に明確に図示されるように、ビデオフレームを斜め方向に複数の領域に分割することは、処理する波面グループの数を低減する場合に、ビデオフレームを水平方向に分割することに対して顕著な利点を有する。更に、フレームを３つ以上の領域に分割することによっても、例えば、水平方向および斜め方向の分割の両方の場合において、処理する波面グループの数を低減する。
【００５５】
表３５０に示される一例において、１２８０×７２０のサイズを有し、２つの領域に分割されたフレームは、水平方向に分割される場合に１２４個の波面グループを必要とし、波面境界に沿って斜め方向に分割される場合に８４個の波面グループを必要とする。別の例において、同一のサイズを有し、８つの領域に分割されたフレームは、水平方向に分割される場合に９０個の波面グループを必要とし、斜め方向に分割される場合に２１個の波面グループを必要とする。これらの例に見られ得るように、フレームを処理するのに必要とされる波面グループの数は、領域の数を増やし、フレームを斜め方向に分割することにより著しく低減され得る。
【００５６】
様々な実施形態において、必要とされる波面グループの数は、水平方向および斜め方向への両方の分割について計算され得る。式１は、左、上部、および右上の依存性を有する複数のマクロブロックについて、水平方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。  １．波面グループ＝Ｗ  ＋２＊（（Ｈ＋（Ｎ−１））／Ｎ−１）であり、式中、  Ｗ＝複数のマクロブロックにおけるフレーム幅、  Ｈ＝複数のマクロブロックにおけるフレームの高さ、  Ｎ＝領域の数、
である。
【００５７】
式２は、左、上部、および右上の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。  ２．波面グループ＝（Ｗ＋２  ＊（Ｈ−１）＋（Ｎ−１））／Ｎであり、式中、  Ｗ＝複数のマクロブロックにおけるフレーム幅、  Ｈ＝複数音マクロブロックにおけるフレームの高さ、  Ｎ＝領域の数
である。
【００５８】
いくつかの実施形態において、複数のマクロブロックは、左および上部の依存性のみを有し得る（図示せず）。式３は、左および上部の依存性を有する複数のマクロブロックについて、水平方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。  ３．波面グループ＝Ｗ＋（（Ｈ＋（Ｎ−１））／Ｎ−１）であり、式中、  Ｗ＝複数のマクロブロックにおけるフレーム幅で、  Ｈ＝複数のマクロブロックにおけるフレームの高さ、  Ｎ＝領域の数、
である。
【００５９】
式４は、左および上部の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。  ４．波面グループ＝（Ｗ＋（Ｈ−１）＋（Ｎ−１））／Ｎであり、式中、  Ｗ＝複数のマクロブロックにおけるフレーム幅、  Ｈ＝複数のマクロブロックにおけるフレームの高さ、  Ｎ＝領域の数、
である。
【００６０】
式１〜４は、任意の数のマクロブロックを有する任意のサイズのディスプレイに対する波面グループの数を決定するべく用いられ得る。マルチコア、マルチスレッド、または任意の並列処理コンポーネントにおいては、各マクロブロックは、並列またはほぼ同時に処理され得る。従って、波面グループを処理するのにかかる時間は、波面グループのサイズに関係なく一定である。例えば、式５は、フレームを処理する時間量を計算するのに用いられ得る。  ５．処理時間＝ＷＦＧ＊ＷＴであり、式中、  ＷＦＧ＝波面グループの数、  ＷＴ＝１つの波面グループを処理する時間、
である。
【００６１】
従って、式５により示されるように、波面グループの数が低減されれば、処理時間が低減され得る。更に、処理時間が低減されるので、電力消費量が低減され、バッテリ電源で動作するコンピューティングデバイスのバッテリ寿命を長くし得る。更に、複数の領域の各々は、等しい波面の数を含み得、従ってコンピューティングシステムの性能は、Ｎ倍または領域の数だけ改善され得る。いくつかの場合に、波面グループの処理時間は、そのサイズに依存し得る。そのような場合、各領域における波面グループの数は、最大限の並列処理およびスケーラビリティを実現するべく、複数の領域の全ての処理が同時またはほぼ同時に完了され得るように調整され得る。例えば、ある領域は、別の領域より多くのマクロブロックを有し得る。いくつかの例において、第１の領域の処理は、第２の領域よりも、完了するのに長い時間がかかり得る。この場合、処理負荷がバランスされ得るように、波面境界は、第１の領域から第２の領域に移動され得る。これらまたは他の利点は、水平方向または斜め方向にビデオフレームを任意の数の領域に分割することにより実現され得る。
【００６２】
図４は、マクロブロック４００の例示的な実施形態を図示する。様々な実施形態において、マクロブロック４００は、離散コサイン変換（ＤＣＴ）等の複数の線形ブロック変換に基づいた画像および動画圧縮フォーマットにおける処理単位であり得る。通常、マクロブロックは、１６×１６サンプルのピクセル４０２からなり、複数の変換ブロック、そして複数の予測ブロックに更に細分化される。マクロブロックに基づき得る様々な画像および動画圧縮フォーマットとしては、最小符号化単位（ＭＣＵ）ブロックと称されるジョイントフォトグラフィックエクスパーツグループ（ＪＰＥＧ）、Ｈ．２６１、ムービングピクチャーエキスパートグループ（ＭＰＥＧ）１−Ｐａｒｔ２、Ｈ．２６２／ＭＰＥＧ−２Ｐａｒｔ２、Ｈ．２６３、ＭＰＥＧ−４  Ｐａｒｔ２、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ等が挙げられる。
【００６３】
様々な実施形態において、各マクロブロック４００は、複数のマクロブロック境界を含み得る。より具体的には、各マクロブロック４００は、左側４０４−１、上側４０４−２、右側４０４−３、および下側４０４−４を有し得る。各々の側は、マクロブロック４００のマクロブロック境界を画定し得る。更に、各々の側は、複数のピクセル４０２の行または列により画定され得る。例えば、上側４０４−２は、複数のピクセル４０２の行により画定され得る。すでに検討されたように、マクロブロック４００は、１６×１６ピクセルのマトリックスであり得、従って各々の側は、１６ピクセルの長さを有し得る。しかし、様々な実施形態は、このようには限定されず、マクロブロックは、任意のサイズであってもよい。
【００６４】
図５は、１または複数のビデオフレームを処理するための第１のロジックフロー図５００の例示的な実施形態を図示する。分かりやすくする目的で、ロジックフロー５００は、図１Ａおよび図１Ｂのシステム１００およびシステム１５０を参照して検討される。様々な実施形態において、ブロック５０２において、エンコードするためのフレームが受信され得る。より具体的には、ビデオエンコーダ１０４は、本明細書に説明される１または複数の実施形態によりエンコードするべく、フレームソース１０２からビデオストリームにおける１または複数のフレームを受信し得る。ブロック５０４において、フレームは、マクロブロック４００等の複数のマクロブロックに分割され得る。いくつかの実施形態において、マクロブロックモジュール１６２は、更なる処理のために各フレームを１６×１６ピクセルのマクロブロックに分割するべく、情報またはデータをビデオエンコーダ１０４に送信し得る。各フレームは、フレームサイズに基づいて多数のマクロブロックに分割され得る。例えば、１２８０×７２０ピクセルのフレームサイズを有するフレームは、１６×１６のマクロブロックサイズに基づいて８０×４５のマクロブロックマトリックスの形の１２５のマクロブロックに分割され得る。
【００６５】
いくつかの実施形態において、フレームは、ブロック５０６において、複数のマクロブロック境界または複数の波面境界に沿った複数の領域にも分割され得る。例えば、図１Ｂの領域モジュール１６４は、ビデオエンコーダ１０４に情報を送信して、マクロブロック境界、そしていくつかの例において波面境界に沿って水平方向または斜め方向にフレームを分割し得る。波面境界は、図２Ｄに図示されるように、複数のマクロブロックにおけるフレームを分割する対角線であり得る。様々な実施形態において、フレームは、フレームの下部左隅からフレームの右上隅へと斜め方向に分割され得る。
【００６６】
フレームは、任意の数の領域を生成するべく、複数のマクロブロック境界に沿って分割され得る。例えば、フレームがフレームの下部左隅からフレームの右上隅へと波面境界に沿って斜め方向に分割される場合、上部領域および下部領域の２つの領域が生成され得る。様々な実施形態は、フレームを２つの領域に分割することに限定されず、フレームは、任意の数の領域に分割されてもよい。
【００６７】
ブロック５０８において、各マクロブロックは、波面グループに割り当てられ得る。いくつかの実施形態において、波面モジュール１６６は、複数のマクロブロック依存性が満されるように複数のマクロブロックを割り当てるべく、情報をビデオエンコーダ１０４に送信し得る。各波面グループは、１または複数のマクロブロックをグループに割り当てることにより生成され得る。いくつかの実施形態において、複数の波面グループの割り当ては、マクロブロック境界および／または波面境界の後の最初の値から開始し得る。例えば、図２Ｄに図示されるように、複数の波面グループの割り当ては、波面境界の後の各行における０で再開する。様々な実施形態をこのようには限定することはできず、複数の波面グループの割り当ては、並列処理を最適化する態様で行われ得る。
【００６８】
様々な実施形態において、同一の波面グループにおける複数のマクロブロックは、ブロック５１０において並列に処理され得る。更に、ビデオエンコーダ１０４は、同一の波面グループにおける全てのマクロブロックを同時に処理し得、各波面グループは、複数のマクロブロック依存性が満たされることを保証し、複数の予測値に基づいてエンコードされたマクロブロックの数を限定するべく、複数の割り当てに基づいて昇順で処理され得る。全てのマクロブロックが最初に処理されると、エンコードの第２の段階が実行され得る。第２の段階において、第１の段階において生成された全ての動きベクトルおよびモードの決定が処理され、それらの値は、フレーム全体をエンコードして最終的ビットストリームを生成するべく用いられる。決定ブロック５１２において、ビデオエンコーダ１０４は、ビデオフレームにおける複数のマクロブロックの全てがエンコードされたか否かを判断し得る。  フレームのエンコードが完了すると、ブロック５０２〜５１２は、複数のフレームの全てがビデオストリームに対してエンコードされるまで反復され得る。
【００６９】
図６は、第２のロジックフロー６００の実施形態を図示する。ロジックフロー６００は、本明細書に説明される１または複数の実施形態により実行される複数の動作のうちのいくつかまたは全てを表し得る。例えば、ロジックフロー６００は、システム１００およびシステム１５０により実行される複数の動作を図示し得る。
【００７０】
図６に示される実施形態の図示において、ロジックフロー６００は、ブロック６０５において、複数のピクセルを含むビデオフレームを、各マクロブロックが４つのマクロブロック境界内に多数のピクセルを含む、多数のマクロブロックに分割する段階を含み得る。いくつかの実施形態において、各マクロブロックは、１６×１６ピクセルのマトリックスに２５６ピクセルを含み、ディスプレイデバイスについての情報を提示するための複数の値を含み得る。フレームは、フレームサイズおよびフレームのピクセルの数に基づいて任意の数のマクロブロックに分割され得る。
【００７１】
更に、様々な実施形態は、１６×１６のサイズを有するマクロブロックに限定されず、マクロブロックは、任意のサイズであってもよい。
【００７２】
４つのマクロブロック境界は、左の境界もしくは縁部、上部の境界もしくは縁部、右の境界もしくは縁部、および下部の境界もしくは縁部を含み得る。複数のマクロブロック境界は、マクロブロックの外側のピクセルにより画定され得る。
【００７３】
ブロック６１０において、ロジックフロー６００は、複数のマクロブロック境界に沿ってビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成する段階も含み得る。より具体的には、フレームは、各々が多数のマクロブロックを有する２またはそれより多くの領域を生成するべく１または複数回、水平方向または斜め方向に分割され得る。いくつかの実施形態において、複数の領域は、各領域における複数の波面グループの並列処理がほぼ同時に完了することを保証するべく、各領域に等しい数のマクロブロックが存在するように生成され得る。しかし、いくつかのビデオフレームを、各領域が等しい数のマクロブロックを有するように均一に分割することができない場合がある。これらの例において、複数の領域の１または複数は、１または複数の更なるマクロブロックを含む。
【００７４】
ブロック６１５におけるロジックフロー６００は、各領域における複数のマクロブロックに基づいて、波面グループを生成する段階も含み得、各波面グループは、並列に処理するための１または複数のマクロブロックを含む。複数の波面グループは、１または複数のマクロブロックを複数の波面グループの各々に割り当てることにより生成され得る。いくつかの実施形態において、複数のマクロブロックは、等しい数のマクロブロックが各波面グループに含まれるように、各波面グループに割り当てられ得る。更に、複数のマクロブロックは、フレーム内の各マクロブロックの位置に基づいて、複数の波面グループに割り当てられ得る。各マクロブロックは、複数のマクロブロック依存性を有し得、複数の隣接マクロブロックは、依存するマクロブロックが処理される前に処理される必要があり得る。従って、複数のマクロブロックは、複数のマクロブロックについて、複数のマクロブロック依存性が満たされるように複数の波面グループに割り当てられ、または配分され、複数の依存するマクロブロック、あるいはデフォルト値または他の予測が要求され得る前に、複数の親マクロブロックが処理されることを保証し得る。
【００７５】
図７は、システム７００の一実施形態を図示する。様々な実施形態において、システム７００は、図１Ａおよび図１Ｂのシステム１００および１５０等、本明細書に説明される１または複数の実施形態と共に用いるのに好適なシステムまたはアーキテクチャを表し得る。実施形態は、この点において限定されない。
【００７６】
図７に示されるように、システム７００は、複数の要素を含み得る。１または複数の要素は、設計または性能の制約の所与のセットに所望されるような１または複数の回路、コンポーネント、レジスタ、プロセッサ、ソフトウェアサブルーチン、モジュール、またはこれらの任意の組み合わせを用いて実装され得る。図７は、例として特定のトポロジにおける限定された数の複数の要素を示すが、任意の好適なトポロジにおけるより多いか、またはより少ない要素が、所与の実装に所望されるようにシステム７００において用いられ得ることが理解され得る。実施形態は、この文脈において限定されない。
【００７７】
様々な実施形態において、システム７００は、パーソナルコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、ネットブックコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、サーバ、サーバファーム、ブレードサーバ、もしくはその他のタイプのサーバ等を含む、任意のタイプのコンピュータ、または処理デバイスであり得るコンピューティングデバイス７０５を含み得る。
【００７８】
コンピューティングデバイスの例としては、リストコンピュータ、フィンガコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣類コンピュータ、および他のウェアラブルコンピュータ等、人により着用されるように構成されたコンピュータも挙げられ得る。複数の実施形態において、例えば、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーション、ならびに音声通信および／またはデータ通信を実行することができるスマートフォンとして実装され得る。いくつかの実施形態は、例として、スマートフォンとして実装されるモバイルコンピューティングデバイスと共に説明され得るが、他の複数の無線モバイルコンピューティングデバイスを同様に用いる複数の他の実施形態が実装され得ることが理解され得る。実施形態は、この文脈において限定されない。
【００７９】
様々な実施形態において、コンピューティングデバイス７０５は、プロセッサ回路７０２を含み得る。プロセッサ回路７０２は、任意のプロセッサまたは論理デバイスを用いて実装され得る。処理回路７０２は、マイクロプロセッサ、プロセッサ、中央処理装置、デジタル信号処理ユニット、デュアルコアプロセッサ、モバイルデバイスプロセッサ、デスクトッププロセッサ、シングルコアプロセッサ、システムオンチップ（ＳｏＣ）デバイス、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セット（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、もしくはその他のタイプのプロセッサ、または単一のチップもしくは集積回路上の処理回路等であるが、これらに限定されない１または複数の任意のタイプの演算要素であってもよい。処理回路７０２は、１または複数のバス、制御ライン、およびデータライン等の相互接続７４３を介してコンピューティングシステムの他の複数の要素に接続され、これらと通信し得る。
【００８０】
一実施形態において、コンピューティングデバイス７０５は、プロセッサ回路７０２に結合されるメモリユニット７０４を含み得る。メモリユニット７０４は、所与の実装に所望のように、通信バス７４３を介して、またはプロセッサ回路７０２とメモリユニット７０４との間の専用通信バスによりプロセッサ回路７０２に結合され得る。メモリユニット７０４は、揮発性メモリおよび不揮発性メモリの両方を含む、データを格納することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実装され得る。いくつかの実施形態において、機械可読媒体またはコンピュータ可読媒体は、非一時的媒体を含み得る。実施形態は、この文脈において限定されない。
【００８１】
様々な実施形態において、コンピューティングデバイス７０５は、グラフィックス処理ユニット（ＧＰＵ）７０６を含み得る。ＧＰＵ７０６は、グラフィックス関連の複数の動作を実行するように最適化された任意のプロセッシングユニット、ロジック、または回路、ならびにビデオデコーダエンジン、およびフレーム相関エンジンを含み得る。ＧＰＵ７０６は、ビデオゲーム、グラフィックス、コンピュータ支援設計（ＣＡＤ）、シミュレーション・ビジュアル化ツール、画像処理等のような様々な用途のために２次元（２Ｄ）および／または３次元（３Ｄ）画像をレンダリングするべく用いられ得る。様々な実施形態は、このようには限定されない。ＧＰＵ７０６は、画像、ビデオ、プログラム、アニメーション、３Ｄ、２Ｄ、オブジェクト画像等のような任意のタイプのグラフィックスデータを処理し得る。
【００８２】
いくつかの実施形態において、コンピューティングデバイス７０５は、ディスプレイコントローラ７０８を含み得る。ディスプレイコントローラ７０８は、グラフィックス情報を処理してグラフィックス情報を表示するための任意のタイプのプロセッサ、コントローラ、回路、ロジック等であり得る。ディスプレイコントローラ７０８は、バッファ２２０等の１または複数のバッファからグラフィックス情報を受信または取得し得る。情報を処理した後に、ディスプレイコントローラ７０８は、グラフィックス情報をディスプレイに送信し得る。
【００８３】
様々な実施形態において、システム７００は、トランシーバ７４４を含み得る。トランシーバ７４４は、様々な好適な無線通信技術を用いて複数の信号を送受信することができる１または複数の無線機を含み得る。複数のそのような技術は、１または複数の無線ネットワークにわたる複数の通信を含み得る。例示的な無線ネットワークとしては、無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、セルラネットワーク、および衛星ネットワークが挙げられる（しかし、これらに限定されるものではない）。複数のそのようなネットワーク全体で通信する場合、トランシーバ７４４は、任意のバージョンの１または複数の適用可能な規格に準拠して動作し得る。実施形態は、この文脈において限定されない。
【００８４】
様々な実施形態において、コンピューティングデバイス７０５は、ディスプレイ７４５を含み得る。ディスプレイ７４５は、プロセッサ回路７０２、グラフィックス処理ユニット７０６、およびディスプレイコントローラ７０８から受信された情報を表示することができる任意のディスプレイデバイスを構成し得る。
【００８５】
様々な実施形態において、コンピューティングデバイス７０５は、ストレージ７４６を含み得る。ストレージ７４６は、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、装着ストレージデバイス、フラッシュメモリ、バッテリバックアップＳＤＲＡＭ（シンクロナスＤＲＡＭ）、および／またはネットワークアクセス可能なストレージデバイス等の不揮発性ストレージデバイスとして実装され得るが、これらに限定されるものではない。複数の実施形態において、ストレージ７４６は、例えば、複数のハードドライブが含まれる場合に貴重なデジタル媒体に対するストレージ性能の強化された保護を高める技術を含み得る。ストレージ７４６の更なる例としては、ハードディスク、フロッピー（登録商標）ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、記録可能コンパクトディスク（ＣＤ−Ｒ）、再書き込み可能コンパクトディスク（ＣＤ−ＲＷ）、光ディスク、磁気媒体、磁気光媒体、リムーバブルメモリカードもしくはディスク、様々なタイプのＤＶＤデバイス、テープデバイス、カセットデバイス等が挙げられ得る。実施形態は、この文脈において限定されない。
【００８６】
様々な実施形態において、コンピューティングデバイス７０５は、１または複数のＩ／Ｏアダプタ７４７を含み得る。Ｉ／Ｏアダプタ７４７の例としては、ユニバーサルシリアルバス（ＵＳＢ）ポート／アダプタ、ＩＥＥＥ１３９４ファイヤワイヤポート／アダプタ等が挙げられ得る。実施形態は、この文脈において限定されない。
【００８７】
図８は、すでに説明された様々な実施形態を実装するのに好適な例示的なコンピューティングアーキテクチャ８００の実施形態を図示する。一実施形態において、コンピューティングアーキテクチャ８００は、システム１００および１５０を含み、またはこれらの一部として実装され得る。
【００８８】
本明細書において用いられるように、「システム」および「コンポーネント」という用語は、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかによるコンピュータ関連のエンティティを指すことを意図し、これらの例は、例示的なコンピューティングアーキテクチャ８００により提供される。例えば、コンポーネントは、プロセッサ、ハードディスクドライブ、（光および／または磁気ストレージ媒体の）複数のストレージドライブ、オブジェクト、エグゼキュータブル、実行のスレッド、プログラム、および／またはコンピュータ上で動作する処理であり得るが、これらに限定されない。例示として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであり得る。１または複数のコンポーネントは、実行の処理および／またはスレッド内に存在し得、コンポーネントは、１つのコンピュータに局限され、および／または２またはそれより多くのコンピュータ間に分散され得る。更に、複数のコンポーネントは、複数の動作を調整するための様々なタイプの通信媒体により互いに通信可能に結合され得る。調整は、情報の一方向または両方向の交換を伴い得る。例えば、複数のコンポーネントは、通信媒体を介して通信される複数の信号の形態で情報を通信し得る。情報は、様々な信号線に割り当てられる複数の信号として実装され得る。そのような割り当てにおいて、各メッセージは、信号である。しかし、複数の更なる実施形態は、代替的に複数のデータメッセージを使用し得る。そのような複数のデータメッセージは、様々な接続にわたって送信され得る。例示的な複数の接続としては、パラレルインターフェース、シリアルインターフェース、およびバスインターフェースが挙げられる。
【００８９】
コンピューティングアーキテクチャ８００は、１または複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力（Ｉ／Ｏ）コンポーネント、電源等のような様々な一般的コンピューティング要素を含む。しかし、実施形態は、コンピューティングアーキテクチャ８００による実装に限定されない。
【００９０】
図８に示されるように、コンピューティングアーキテクチャ８００は、処理ユニット８０４、システムメモリ８０６、およびシステムバス８０８を含む。処理ユニット８０４は、商業上入手可能な様々なプロセッサのいずれかであり得る。
【００９１】
システムバス８０８は、システムメモリ８０６から処理ユニット８０４までを含むが、これらに限定されない複数のシステムコンポーネントのためのインターフェースを提供する。システムバス８０８は、商業上入手可能な様々なアーキテクチャバスのいずれかを用いて（メモリコントローラを用いるか、または用いない）メモリバス、周辺バス、およびローカルバスに更に相互接続し得るいくつかのタイプのバス構造体のいずれかであり得る。複数のインターフェースアダプタは、スロットアーキテクチャを介してシステムバス８０８に接続し得る。例示的なスロットアーキテクチャとしては、アクセラレイティッドグラフィックスポート（ＡＧＰ）、カードバス（拡張型）業界標準アーキテクチャ（（Ｅ）ＩＳＡ）、マイクロチャネルアーキテクチャ（ＭＣＡ）、ＮｕＢｕｓ、周辺構成要素相互接続（拡張型）（ＰＣＩ（Ｘ））、ＰＣＩエクスプレス、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ）等が挙げられ得るが、これらに限定されない。
【００９２】
コンピューティングアーキテクチャ８００は、様々な製造物品を含み、または実装し得る。製造物品は、ロジックを格納するコンピュータ可読ストレージ媒体を含み得る。コンピュータ可読ストレージ媒体の例としては、揮発性メモリもしくは不揮発性メモリ、リムーバブルメモリもしくは非リムーバブルメモリ、消去可能メモリもしくは非消去可能メモリ、書き込み可能メモリもしくは非書き込み可能メモリ等を含む、電子データを格納することができる任意の有形媒体を含み得る。ロジックの例としては、ソースコード、コンパイル済みコード、変換済みコード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、視覚コード等のような任意の好適なタイプのコードを用いて実装される実行可能な複数のコンピュータプログラム命令が挙げられ得る。また、複数の実施形態は、非一時的コンピュータ可読媒体中または非一時的コンピュータ可読媒体上に含まれる複数の命令として少なくとも部分的に実装され得、これらは、本明細書に説明される複数の動作の実行を可能にするべく、１または複数のプロセッサにより読み取られて実行され得る。
【００９３】
システムメモリ８０６は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電体ポリマーメモリ等のポリマーメモリ、オボニックメモリ、相変化もしくは強誘電体メモリ、シリコン酸化膜窒化膜酸化膜シリコン（ＳＯＮＯＳ）メモリ、磁気もしくは光カード、独立ディスク（ＲＡＩＤ）ドライブの冗長アレイ等のデバイスのアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ））、および情報を格納するのに好適なその他のタイプのストレージ媒体等、１または複数のより高速なメモリユニットの形態の様々なタイプのコンピュータ可読ストレージ媒体を含み得る。図８に示される図示される実施形態において、システムメモリ８０６は、不揮発性メモリ８１０および／または揮発性メモリ８１２を含み得る。基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ８１０に格納され得る。
【００９４】
コンピュータ８０２は、内部（または外部）ハードディスクドライブ（ＨＤＤ）８１４、リムーバブル磁気ディスク８１８から読み取り、もしくはこれに書き込むための磁気フロッピー（登録商標）ディスクドライブ（ＦＤＤ）８１６、およびリムーバブル光ディスク８２２（例えば、ＣＤ−ＲＯＭもしくはＤＶＤ）から読み取り、もしくはこれに書き込むための光ディスクドライブ８２０を含む１または複数のより低速のメモリユニットの形態の様々なタイプのコンピュータ可読ストレージ媒体を含み得る。ＨＤＤ８１４、ＦＤＤ８１６、および光ディスクドライブ８２０は、ＨＤＤインターフェース８２４、ＦＤＤインターフェース８２６、および光ドライブインターフェース８２８により各々、システムバス８０８に接続され得る。外部ドライブ実装のためのＨＤＤインターフェース８２４は、ユニバーサルシリアルバス（ＵＳＢ）およびＩＥＥＥ１３９４インターフェースの技術のうち少なくとも１つまたは両方を含み得る。
【００９５】
複数のドライブおよび関連付けられコンピュータ可読媒体は、データ、データ構造体、コンピュータ実行可能な複数の命令等の揮発性および／または不揮発性のストレージを提供する。例えば、オペレーティングシステム８３０、１または複数のアプリケーションプログラム８３２、他のプログラムモジュール８３４、およびプログラムデータ８３６を含む多数のプログラムモジュールが、複数のドライブおよびメモリユニット８１０、８１２に格納され得る。一実施形態において、１または複数のアプリケーションプログラム８３２、複数の他のプログラムモジュール８３４、およびプログラムデータ８３６は、例えば、システム７００の様々なアプリケーションおよび／またはコンポーネントを含み得る。
【００９６】
ユーザは、１または複数の有線／無線入力デバイス、例えば、キーボード８３８およびマウス８４０等のポインティングデバイスにより、コマンドおよび情報をコンピュータ８０２に入力し得る。他の入力デバイスとしては、マイク、赤外線（ＩＲ）遠隔制御器、無線周波数（ＲＦ）遠隔制御器、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックスタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン（例えば、容量、抵抗等）、トラックボール、トラックパッド、センサ、スタイラス等が挙げられ得る。これら、および他の入力デバイスは多くの場合、システムバス８０８に結合される入力デバイスインターフェース８４２を介して処理ユニット８０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェース等の他の複数のインターフェースにより接続され得る。
【００９７】
モニタ８４４または他タイプのディスプレイデバイスも、ビデオアダプタ８４６等の複数のインターフェースを介してシステムバス８０８に接続される。モニタ８４４は、コンピュータ８０２の内部または外部にあってもよい。モニタ８４４に加えて、コンピュータは通常、スピーカ、プリンタ等の他の複数の周辺出力デバイスを含む。
【００９８】
コンピュータ８０２は、有線および／または無線通信を介した、リモートコンピュータ８４８等の１または複数のリモートコンピュータへの論理接続を用いてネットワーク環境において動作し得る。リモートコンピュータ８４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテインメントアプライアンス、ピアデバイス、または他の一般的なネットワークノードであり得、通常、コンピュータ８０２に関して説明される複数の要素の多くまたはそれらの全てを含むが、簡潔にする目的で、メモリ／ストレージデバイス８５０のみが図示されている。図示される論理接続は、ローカルエリアネットワーク（ＬＡＮ）８５２および／またはより大きなネットワーク、例えばワイドエリアネットワーク（ＷＡＮ）８５４への有線／無線接続を含む。そのようなＬＡＮおよびＷＡＮネットワーキング環境は、事務所および企業内において通常のものであり、イントラネット等の企業全体のコンピュータネットワークを容易にし、これら全てが包括的通信ネットワーク、例えばインターネットに接続し得る。
【００９９】
ＬＡＮネットワーキング環境において用いられる場合、コンピュータ８０２は、有線および／または無線通信ネットワークインターフェースまたはアダプタ８５６を介してＬＡＮ８５２に接続される。アダプタ８５６は、ＬＡＮ８５２への有線および／または無線通信を容易にし得、ＬＡＮ８５２は、アダプタ８５６の無線機能との通信のためにＬＡＮ８５２に配置された無線アクセスポイントも含み得る。
【０１００】
ＷＡＮネットワーキング環境において用いられる場合、コンピュータ８０２は、モデム８５８を含み得、またはＷＡＮ８５４上の通信サーバに接続され、またはインターネットによるなどしてＷＡＮ８５４を介した通信を確立するための他の手段を有する。モデム８５８は、内部または外部にあり、有線および／または無線デバイスであり得、入力デバイスインターフェース８４２を介してシステムバス８０８に接続する。ネットワーク環境において、コンピュータ８０２に関連して図示される複数のプログラムモジュール、またはその複数の部分は、遠隔メモリ／ストレージデバイス８５０に格納され得る。示されるネットワーク接続は、例示的なものであり、複数のコンピュータ間に通信リンクを確立する他の手段が用いられ得ることが理解されよう。
【０１０１】
コンピュータ８０２は、無線通信（例えば、ＩＥＥＥ８０２．１１のオーバーザエアー変調技術）において動作可能に配置された無線デバイス等、ＩＥＥＥ８０２ファミリの複数の規格を用いて、複数の有線および無線のデバイスもしくはエンティティと通信するように動作可能である。これは、中でも、少なくともＷｉ−Ｆｉ（つまりＷｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）、ＷｉＭＡＸ（登録商標）、およびＢｌｕｅｔｏｏｔｈ（登録商標）の無線技術を含む。従って、通信は、従来のネットワークにおけるように予め定義された構造であるか、または単純に、少なくとも２つのデバイス間におけるアドホックな通信であり得る。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ８０２．１１ｘ（ａ、ｂ、ｇ、ｎ等）と称される無線技術を用いて、セキュアで信頼性がある高速無線接続を提供する。Ｗｉ−Ｆｉネットワークは、複数のコンピュータを互いに、インターネットに、および（ＩＥＥＥ８０２．３に関連する媒体および複数の機能を用いる）複数の有線ネットワークに接続するべく、用いられ得る。
【０１０２】
図１Ａ〜図８を参照してすでに説明されたシステム１００および１５０の様々な要素は、様々なハードウェア要素、ソフトウェア要素、またはこれら両方の組み合わせを含み得る。ハードウェア要素の例としては、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ、回路要素（例えば、トランジスタ、抵抗器、コンデンサ、インダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等が挙げられ得る。ソフトウェア要素の例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインターフェース、アプリケーションプログラムインターフェース（ＡＰＩ）、命令セット、演算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、記号、またはこれらの任意の組み合わせが挙げられ得る。しかし、複数のハードウェア要素および／またはソフトウェア要素を用いた実施形態が実装されるか否かの判断は、所望の演算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバスの速度、および所与の実装に所望される他の設計または性能の制約等、任意の数の要因に応じて変わり得る。
【０１０３】
ここで、詳細な本開示は、更なる実施形態に関する複数の例の提供に取り掛かる。以下に提供される１〜３３の例は、例示的なものであり、非限定的であることを意図する。
【０１０４】
第１の例において、システムまたは装置は、処理回路と、複数のピクセルを含むビデオフレームを多数のマクロブロックに分割するべく、処理回路上で実行するためのマクロブロックモジュールと、複数のマクロブロック境界に沿ってビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成するべく、処理回路上で実行するための領域モジュールと、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成するべく、処理回路上で実行するための波面モジュールとを備え、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための１または複数のマクロブロックを含む。
【０１０５】
第２の例および第１の例の更なる形態において、装置は、複数のマクロブロック境界に沿って斜め方向にビデオフレームを分割することを含む、少なくとも２つの領域を生成するための領域モジュールを含み得る。
【０１０６】
第３の例および前の複数の例のいずれかの更なる形態において、装置は、ビデオフレームを、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向に分割するための領域モジュールを含み得る。
【０１０７】
第４の例および前の複数の例のいずれかの更なる形態において、装置は、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、ビデオフレームを分割することを含む少なくとも２つの領域を生成するための領域モジュールを含み得る。
【０１０８】
第５の例および前の複数の例のいずれかの更なる形態において、装置は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも１つに割り当てることを含む複数の波面グループを生成するための波面モジュールを含み得る。
【０１０９】
第６の例および前の複数の例のいずれかの更なる形態において、装置は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てることを含む複数の波面グループを生成するための波面モジュールを含み得る。
【０１１０】
第７の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける各マクロブロックを並列に処理するための処理回路を含み得る。
【０１１１】
第８の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理するための処理回路を含み得る。
【０１１２】
第９の例および前の複数の例のいずれかの更なる形態において、装置は、１６×１６ピクセルのマトリックスを含む各マクロブロックを含み得る。
【０１１３】
第１０の例および前の複数の例のいずれかの更なる形態において、物品は、実行されると、処理回路が、複数のピクセルを含むビデオフレームを多数のマクロブロックに分割し、複数のマクロブロック境界に沿ってビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成し、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成することを可能にする複数の命令を含むコンピュータ可読ストレージ媒体を備え、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための１または複数のマクロブロックを含む。
【０１１４】
第１１の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、複数のマクロブロック境界に沿って斜め方向にビデオフレームを分割することを含む、少なくとも２つの領域を生成することを可能にする複数の命令を備える。
【０１１５】
第１２の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、ビデオフレームの下部左隅からビデオフレームの右上隅へとビデオフレームを分割することを含む、ビデオフレームを斜め方向に分割することを可能にする複数の命令を含む。
【０１１６】
第１３の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、処理回路が、ビデオフレームを分割することを含む、少なくとも２つの領域を生成することを可能にする複数の命令を備える。
【０１１７】
第１４の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックが波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも１つに割り当てることを含む、複数の波面グループを生成することを可能にする複数の命令を備える。
【０１１８】
第１５の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てることを含む、複数の波面グループを生成することを可能にする複数の命令を備える。
【０１１９】
第１６の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、波面グループにおける各マクロブロックを並列に処理することを可能にする複数の命令を備える。
【０１２０】
第１７の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理することを可能にする複数の命令を備える。
【０１２１】
第１８の例および前の複数の例のいずれかの更なる形態において、方法は、処理コンポーネントにより、複数のピクセルを含むフレームを多数のマクロブロックに分割する段階と、複数のマクロブロック境界に沿ってフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成する段階と、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成する段階とを備え得、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための１または複数のマクロブロックを含む。
【０１２２】
第１９の例および前の複数の例のいずれかの更なる形態において、方法は、複数のマクロブロック境界に沿って斜め方向にフレームを分割する段階を有する、少なくとも２つの領域を生成する段階を備え得る。
【０１２３】
第２０の例および前の複数の例のいずれかの更なる形態において、方法は、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向にフレームを分割する段階を有する、フレームを分割する段階を備え得る。
【０１２４】
第２１の例および前の複数の例のいずれかの更なる形態において、方法は、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、フレームを分割する段階を有する、少なくとも２つの領域を生成する段階を備え得る。
【０１２５】
第２２の例および前の複数の例のいずれかの更なる形態において、方法は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも１つに割り当てる段階を有する、複数の波面グループを生成する段階を備え得る。
【０１２６】
第２３の例および前の複数の例のいずれかの更なる形態において、方法は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てる段階を有する、複数の波面グループを生成する段階を備え得る。
【０１２７】
第２４の例および前の複数の例のいずれかの更なる形態において、方法は、波面グループにおける各マクロブロックを並列に処理する段階を備え得る。
【０１２８】
第２５の例および前の複数の例のいずれかの更なる形態において、方法は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理する段階を備え得る。
【０１２９】
第２６の例および前の複数の例のいずれかの更なる形態において、装置は、複数のピクセルを含むフレームを多数のマクロブロックに分割するための手段と、複数のマクロブロック境界に沿ってフレームを分割することにより、複数のマクロブロックを有する少なくとも２つの領域を生成するための手段と、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成することを可能にするための手段とを備え得、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための１または複数のマクロブロックを含む。
【０１３０】
第２７の例および前の複数の例のいずれかの更なる形態において、装置は、複数のマクロブロック境界に沿って斜め方向にフレームを分割するための手段を有する、少なくとも２つの領域を生成するための手段を備え得る。
【０１３１】
第２８の例および前の複数の例のいずれかの更なる形態において、装置は、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向にフレームを分割するための手段を有する、フレームを分割するための手段を備え得る。
【０１３２】
第２９の例および前の複数の例のいずれかの更なる形態において、装置は、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、フレームを分割するための手段を有する、少なくとも２つの領域を生成するための手段を備え得る。
【０１３３】
第３０の例および前の複数の例のいずれかの更なる形態において、装置は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも１つに割り当てるための手段を有する、複数の波面グループを生成するための手段を備え得る。
【０１３４】
第３１の例および前の複数の例のいずれかの更なる形態において、装置は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てるための手段を有する、複数の波面グループを生成するための手段を備え得る。
【０１３５】
第３２の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける各マクロブロックを並列に処理するための手段を備え得る。
【０１３６】
第３３の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理するための手段を備え得る。
【０１３７】
いくつかの実施形態は、「一実施形態」または「実施形態」という表現を、それらの派生語と共に用いて説明され得る。これらの用語は、実施形態に関連して説明される特定の機能、構造、または特性が少なくとも一実施形態に含まれることを意味する。本明細書の様々な箇所において「一実施形態において」という文言が現われても、全てが同一の実施形態を必ずしも指すわけではない。更に、いくつかの実施形態は、「結合される」および「接続される」という表現を、それらの派生語と共に用いて説明され得る。これらの用語は、互いに同義語として必ずしも意図されるものではない。例えば、いくつかの実施形態は、２またはそれより多くの要素が互いに直に物理的または電気的に接触することを示すべく、「接続される」および／または「結合される」という用語を用いて説明される場合がある。しかし、「結合される」という用語は、２またはそれより多くの要素が互いに直に接触しないが、なおも互いに協働または相互作用することも意味する場合がある。
【０１３８】
本開示の要約は、読者が技術的開示の本質を速やかに確認することを可能にするべく提供されていることが強調される。本開示は、特許請求の範囲またはその意味を解釈または限定するべく用いられるものではないとの理解に従うものと考えられる。更に、上述の詳細な説明において、様々な機能は、本開示を効率的なものにする目的で単一の実施形態に互いにグループ化されることを見て取ることができる。本開示のこの方法は、特許請求される実施形態が各請求項において明示的に列挙されるものより多くの機能を必要とするとの意図を反映すると解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、開示される単一の実施形態の全ての機能よりは少ないものに存する。従って、以下の特許請求の範囲は、本明細書の詳細な説明に組み込まれ、各請求項は、別個の実施形態として独立している。添付の特許請求の範囲において、「含む」および「その中で（ｉｎ  ｗｈｉｃｈ）という用語は、「備える」および「そこで（ｗｈｅｒｅｉｎ）」という各用語と同等の平易な英語として各々用いられる。更に、「第１」、「第２」、「第３」等の用語は、単に表示として用いられ、それらの対象に数値的要求を課すことを意図するものではない。
【０１３９】
上記された事柄は、開示されるアーキテクチャの複数の例を含む。勿論、複数のコンポーネントおよび／または方法論の考えられるあらゆる組み合わせを記載することは可能ではないが、当業者は、多くの更なる組み合わせおよび変形が可能であることを認識し得る。従って、新規なアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内に包含される全てのそのような変更形態、修正形態、および変形形態を含むことを意図する。
【図１Ａ】
0006412589.tif 000002
【図１Ｂ】
0006412589.tif 000003
【図２Ａ】
0006412589.tif 000004
【図２Ｂ】
0006412589.tif 000005
【図２Ｃ】
0006412589.tif 000006
【図２Ｄ】
0006412589.tif 000007
【図２Ｅ】
0006412589.tif 000008
【図３Ａ】
0006412589.tif 000009
【図３Ｂ】
0006412589.tif 000010
【図３Ｃ】
0006412589.tif 000011
【図３Ｄ】
0006412589.tif 000012
【図４】
0006412589.tif 000013
【図５】
0006412589.tif 000014
【図６】
0006412589.tif 000015
【図７】
0006412589.tif 000016
【図８】
0006412589.tif 000017