様々な実施形態は、概して、生のビデオストリームの1または複数のビデオフレームをエンコードするための装置、システム、および方法を対象とする。ビデオフレームは、ITU−T/ISO H.264、またはアドバンストビデオコーデック(AVC)およびMPEG−4 Part10として知られるITU−T・国際標準化機構(ISO)の動画圧縮規格等、任意のエンコード規格に基づいてエンコードされ得る。複数のビデオフレームは、ISO/IEC Moving Picture Experts Group(MPEG)およびITU−T Video Coding Experts Group(VCEG)によってISO/IEC23008−2 MPEG−H Part2およびITU−T H.265として共同で開発されたH.264/MPEG−4AVC(アドバンストビデオ符号化)の後継である、High Efficiency Video Coding(HEVC)の動画圧縮規格に準拠して処理され得る。様々な実施形態は、これらの規格に限定されず、複数のビデオフレームは、Google(登録商標)により開発された開放型の特許権使用料不要の動画圧縮規格であるVP8およびVP9等、任意の他の規格に準拠して処理され得る。
更に、1または複数の実施形態は、エンコード規格に基づいて複数のフレームを多数のマクロブロックに分割し、次に各々が1または複数のマクロブロックを有する多数の領域に分割することを対象とする場合がある。各マクロブロックは、16×16ピクセルのマトリックスまたはエンコードに用いられる動画圧縮規格に基づいた任意のサイズであってもよい。複数のマクロブロックは、複数のピクセルの列または行により画定される4つのマクロブロック境界または側面を有し得る。複数のマクロブロック境界は、ビデオフレームを次々に分割して2またはそれより多くの領域を生成するべく用いられ得る。
例えば、ビデオフレームは、複数のマクロブロック境界または複数のマクロブロックの縁部に沿って水平方向または斜め方向に分割され得る。様々な実施形態において、複数のマクロブロックは、1または複数の波面(wave front)グループに割り当てられ、並列またはほぼ同時に処理され得る。換言すれば、同一の波面グループに割り当てられたマクロブロックの全てが並列に処理され得る。複数のマクロブロックを並列に処理することにより、ビデオフレームを処理する処理サイクルの回数を低減することを含め、顕著な性能の向上が実現され得る。以下の説明により明らかとなるように、複数のビデオフレームが複数のマクロブロック境界に沿って多数の領域に分割されると、並列に処理され得るマクロブロックの数は増加し、処理サイクルの回数は著しく低減される。
様々な実施形態は、これらの動作を実行するための装置またはシステムにも関する。本装置は、要求される目的のために特に構成されてもよく、またはコンピュータに格納されたコンピュータプログラムにより選択的にアクティブ化され、もしくは再構成される汎用コンピュータを含んでもよい。本明細書に提示される複数の手順は、本質的に、特定のコンピュータまたは他の装置に関係しない。様々な汎用の機械は、本明細書における教示により記述される複数のプログラムと共に用いられてもよく、または要求される方法を実行するためのより特化した装置を構成することが好都合と判明する場合がある。様々なこれらの機械に必要とされる構造は、与えられる説明から明らかとなるであろう。
ここで図面を参照する。全体を通して、同一の符号は同一の要素を指すべく用いられる。以下の説明において、説明を目的として、多数の具体的な詳細は、十分な理解を提供するべく記載される。しかし、新規な複数の実施形態がこれらの具体的な詳細を用いることなく実施され得ることが明らかであり得る。他の複数の例において、周知の複数の構造およびデバイスは、それらの説明を容易にするべくブロック図の形態で示される。その意図は、特許請求される主題に即した全ての変更形態、均等物、代替形態を包含することにある。
図1Aは、情報およびデータを処理するためのビデオフレーム処理システム100の実施形態を図示する。具体的には、ビデオフレーム処理システム100は、ビデオフレームをエンコードおよびデコードするべく用いられ得る。しかし、ビデオフレーム処理システム100は、使用または機能の範囲についていかなる限定も示唆することを意図しない。技術およびツールは、多様な汎用または専用のコンピューティング環境で実装され得るからである。
従って、ビデオフレーム処理システム100は、ビデオソース102、ビデオフレームエンコーダ104、伝送媒体106、ビデオフレームデコーダ108、およびディスプレイ110を含み得る。いくつかの実施形態において、ビデオフレーム処理システム100は、メモリ120を含み得る。いくつかの実施形態において、ビデオフレーム処理システム100は、HVEC、H.265、VP8、およびVP9等、すでに検討された1または複数の規格に準拠するビデオエンコーダ/デコーダ処理システムを含み得る。
例えばアナログフォーマットの元の完全な情報コンテンツビデオ信号が、ビデオフレームソース102に提供され得る。ビデオフレームソース102は、ビデオ信号を輝度(ルマ)および色度(クロマ)のフォーマット、例えば色空間のYCbCr、YUV、YIQ、およびYCCファミリにデジタル化する等、様々な機能を実行し得る。当業者は、YCbCr色空間においては、Yはルマ成分であり、CbおよびCrは、クロマ成分であり、YUV色空間においては、Yはルマ成分であり、UおよびVはクロマ成分であり、YIQ色空間においては、Yはルマ成分であり、IおよびQは各同相成分および直交クロマ成分であり、YCC色空間においては、Yはルマ成分であり、C(Cb)およびC(Cr)はクロマ成分であることを理解するであろう。
ビデオフレームソース102は、フォーマットされた複数のデジタル化ビデオ信号をビデオエンコーダ104に提供し得る。具体的なビデオフォーマットに関係なく、ビデオフレームソース102は、必要な処理を実行して、元のアナログビデオ信号の完全な情報デジタルビデオ信号バージョンをビデオエンコーダ104に提供し得る。様々な実施形態において、ビデオフレームソース102は、伝送媒体または格納済みファイルであってもよい。ビデオフレームソース102は、複数の画像またはビデオフレームの形態の複数のデジタルビデオ信号シーケンスをビデオエンコーダ104に提供し得る。
ビデオエンコーダ104の複数のブロックを形成するアーキテクチャおよびコアは、動き補償された変換符号化に基づき得、様々な動きベクトルおよびモードの演算を実行し得る。例えば、各ビデオフレームは、ビデオフレームを1または複数の領域としてパーティショニングすることにより圧縮され得、各領域は、1または複数のマクロブロックを含み得る。いくつかの実施形態において、複数のマクロブロックは、対応する複数のクロマサンプルを有する16×16のルマピクセル(またはサンプル)のブロックとして画定され得る。また、各マクロブロックは、動き補償予測のための1または複数のサブマクロブロックパーティションに分割され得る。同一または複数の他の実施形態において、複数のマクロブロックは、4×4のマクロブロック、8×8のマクロブロック、32×32のマクロブロック等のような異なるサイズであってもよく、エンコードに用いられる規格に基づいてもよい。
ビデオエンコーダ104は、1または複数のビデオフレームの形態のビデオフレームソース102からデジタルビデオ信号シーケンスを受信し得る。ビデオエンコーダ104は、複数のビデオフレームを圧縮して、ビットストリームの形態の複数の圧縮済みビデオビットを伝送媒体106および/またはメモリ120に渡す。いくつかの実施形態において、圧縮は、上記で指定された複数の規格のうちの1つに準拠して実行され得、出力されるビットストリームは、圧縮に用いられる規格に基づいたビットストリームであり得る。
ビデオエンコーダ104は、エンコードするための複数のフレームを受信する。以下により詳細に検討されるように、複数のフレームは、元の画像における16×16のピクセルのブロック、またはその他のサイズのピクセルマトリックスに対応するマクロブロックの複数の単位で処理される。各マクロブロックは、1または複数のマクロブロック依存性に基づいて、波面グループに割り当てられ、または配置され得る。波面グループにおける各マクロブロックは、並列にエンコードまたは処理され得る。例えば、全てのマクロブロックがエンコードされるまで、第1の波面グループに属する全てのマクロブロックが、複数の動きベクトルおよびモードを見つけるべく並列に処理され得、次に、第2の波面グループに属する全てのマクロブロックが並列に処理され得る、等である。
いくつかの実施形態において、マクロブロックのエンコードは、マクロブロック依存性を生成する隣接マクロブロックのエンコードに依存し得る。例えば、いくつかの実施形態において、マクロブロックは、左、上部、および右上のマクロブロックに依存し得る。従って、左、上部、および右上のマクロブロックは、依存するマクロブロックがエンコードされる前に処理され得る。しかし、様々な実施形態は、このようには限定されず、図3A〜図3Cに関連して以下により詳細に説明されるように、複数の予測マクロブロックが用いられ得る。
いくつかの実施形態において、予測マクロブロックは、再構成されたフレームに基づいて形成され得る。例えば、予測マクロブロックは、すでにエンコードされ、デコードされ、再構成された現在のフレームにおける複数のサンプルから形成され得る。別の例において、予測マクロブロックは、動き補償予測により1または複数の参照フレームから形成され得る。予測マクロブロックは、現在のマクロブロックから減算され、残余の、または異なるマクロブロックを生成する。ブロック変換を用いて、残余の、または異なるマクロブロックは、マクロブロックをデコードして補償済みビットストリームを形成するべく必要とされる他の情報に加えて、複数のエンコード済み係数のセットを提供するべく、変換および量子化される。他の情報としては、中でも、例えば、マクロブロックの予測モード、量子化器ステップサイズ、マクロブロックがどのように動き補償されたかを記述する動きベクトル情報が挙げられ得る。補償済みビットストリームは、送信のためにストレージ/伝送媒体106に渡され得る。
伝送媒体106は、媒体を提供し得、これにより、エンコード済みビデオ信号は、最終的にビデオデコーダ108に提供され得る。例えば、伝送媒体106は、1または複数の有線または無線接続を含むデジタル通信システムであってもよい。代替的に、または同時に、補償済みビットストリームは、揮発性メモリおよび不揮発性メモリの両方を含む、データを格納することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実装され得るメモリ120に送信され得る。いくつかの実施形態において、機械可読媒体またはコンピュータ可読媒体は、非一時的媒体を含み得る。実施形態は、この文脈において限定されない。いくつかの実施形態において、メモリ120は、例えば、ビデオフレーム情報の一時的格納に提供され得る。更に、伝送媒体106および/またはメモリ120は、複数のバッファにデータを格納し得る。
ビデオデコーダ108は、伝送媒体106および/またはメモリ120から、複数の圧縮済みビデオビットを含むビットストリームの形態のエンコード済み/圧縮済みデジタルビデオ信号を受信して、これをデコードし、ディスプレイデバイス110に提供され得るデコード済みビデオ信号を生成する。いくつかの実施形態において、エンコード済み/圧縮済みビデオ信号は、すでに検討されたH.264、HEVC、H.265、V8、V9等、規格仕様書のうちの1つに基づいた形態であり得る。概して、ビデオデコーダ108は、コンセプトとしてビデオエンコーダ104の逆に機能し、様々な他の処理要素の中でも主としてエントロピデコーダを含み得る。ビデオデコーダ108により生成されたビデオ信号は、ビデオエンコーダ104が可逆エンコード法を使用する場合、ビデオエンコーダ104に提供される信号と同一であり得る。ビデオデコーダ108により生成されたビデオ信号は、ビデオエンコーダ104が非可逆エンコード法、例えばMPEGのようなエンコード法を使用する場合、ビデオエンコーダ104に提供される信号とはやや異なる場合がある。
様々な実施形態において、ディスプレイデバイス110は、ビデオデコーダ108から受信されたディスプレイ情報のための任意のタイプのディスプレイデバイスであってもよい。ディスプレイデバイス110は、例えば、液晶ディスプレイ(LCD)、薄膜トランジスタLCD(TFT−LCD)、有機発光ダイオード(OLED)、フレキシブルディスプレイ、3次元(3D)ディスプレイ、およびプロジェクタのうちの少なくとも1つを含み得る。ビデオフレームおよびビデオ情報の表示に加えて、ディスプレイデバイス110は、ビデオフレーム処理システム100の制御機能に関連付けられたユーザインターフェース(UI)またはグラフィカルユーザインターフェース(GUI)を表示し得る。いくつかの実施形態において、ビデオフレーム処理システム100は、2またはそれより多くのディスプレイユニットを含み得る。例えば、一実施形態において、ビデオフレーム処理システム100は、2つのLCDディスプレイを含み得る。
図1Bは、1または複数のビデオフレームを含む情報を処理するためのコンピューティングシステム150の例示的な実施形態を図示する。コンピューティングシステム150は、ビデオフレーム処理システム100に関する情報を処理し、ビデオフレーム処理システム100と共に用いられるシステムを表し得る。例えば、処理コンポーネント152は、ビデオフレーム処理システム100に関する情報およびデータを処理し得、メモリ154は、メモリ120と同一であるか、または類似し得る。更に、ビデオエンコーダ制御モジュール160は、ビデオエンコーダ104のための1または複数のフレームをエンコードする様々な態様を制御するべく用いられ得る。コンピューティングシステム150は、処理コンポーネント152、メモリ154、インターフェース156、およびストレージ158を含み得る。更に、コンピューティングシステム150は、マクロブロックモジュール162、領域モジュール164、および波面モジュール166を有するビデオエンコーダ制御モジュール160を含み得る。コンピューティングシステム150は、限定された数のコンポーネントおよびモジュールと共に図示されているが、様々な実施形態は、このようには限定されず、コンピューティングシステム150は、情報およびデータを処理するべく任意の数のコンポーネントおよびモジュールを有し得る。例えば、コンピューティングシステム150は、ビデオエンコーダ制御モジュールに関連して以下に検討される類似の態様で複数のビデオフレームをデコードするための複数のビデオデコーダモジュールを含み得る。
処理コンポーネント152は、マイクロプロセッサ、プロセッサ、中央処理装置、デジタル信号処理ユニット、デュアルコアプロセッサ、マルチコアプロセッサ、グラフィックス処理ユニット(GPU)、モバイルデバイスプロセッサ、デスクトッププロセッサ、シングルコアプロセッサ、システムオンチップ(SoC)デバイス、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セット(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、もしくはその他のタイプのプロセッサ、処理回路、または単一のチップもしくは集積回路上の処理回路等であるが、これらに限定されない1または複数の任意のタイプの演算要素であってもよい。処理コンポーネント152は、1または複数のバス、制御ライン、およびデータライン等の相互接続を介してコンピューティングシステムの他の複数の要素に接続され、これらと通信し得る。
いくつかの実施形態において、処理コンポーネント152は、グラフィックス処理ユニット(GPU)であり得る。しかし、同一または複数の他の実施形態において、コンピュータシステム150は、スタンドアロンおよび別個のGPU(図示せず)を含み得る。GPUは、グラフィックス関連の複数の動作を実行するように最適化された任意のプロセッシングユニット、ロジック、または回路、ならびにビデオエンコーダ・ビデオデコーダエンジン、およびフレーム相関エンジンを含み得る。GPUは、ビデオゲーム、グラフィックス、コンピュータ支援設計(CAD)、シミュレーション・ビジュアル化ツール、画像処理等のような様々な用途のために2次元(2D)および/または3次元(3D)画像をレンダリングするべく用いられ得る。様々な実施形態は、このようには限定されない。GPUは、画像、ビデオ、プログラム、アニメーション、3D、2D等のような任意のタイプのグラフィックスデータを処理し得る。
いくつかの実施形態において、コンピューティングシステム150は、処理コンポーネント152に結合するためのメモリ154を含み得る。所与の実装に所望のように、メモリ154は、1または複数の相互接続を介し、または処理コンポーネント152とメモリ154との間の専用通信バスにより処理コンポーネント152に結合され得る。メモリ154は、揮発性メモリおよび不揮発性メモリの両方を含む、データを格納することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実装され得る。いくつかの実施形態において、機械可読媒体またはコンピュータ可読媒体は、非一時的媒体を含み得る。実施形態は、この文脈において限定されない。
メモリ154は、瞬間的、一時的、または永久にデータを格納し得る。メモリ154は、コンピューティングシステム150のための複数の命令およびデータを格納する。メモリ154は、フレーム情報、ビットストリーム情報、エンコード済み情報等のテンポラリ変数または他の中間情報も格納し得るが、処理コンポーネント152は、複数の命令を実行する。メモリ154は、上述のデータを格納することに限定されない。メモリ154は、任意のタイプのデータを格納し得る。
いくつかの実施形態において、コンピューティングシステム150は、1または複数のインターフェース156を含み得る。インターフェース156の例としては、ユニバーサルシリアルバス(USB)ポート/アダプタ、IEEE1394ファイヤワイヤポート/アダプタ等が挙げられ得る。実施形態は、この文脈において限定されない。
様々な実施形態において、インターフェース156のうちの1または複数は、トランシーバ等、有線または無線接続であってもよい。より具体的には、1または複数のインターフェース156は、様々な好適な無線通信技術を用いて複数の信号および情報を送受信することができる1または複数の無線機を含み得る。複数のそのような技術は、1または複数の無線ネットワークにわたる複数の通信を含み得る。例示的な無線ネットワークとしては、無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、セルラネットワーク、および衛星ネットワークが挙げられる(しかし、これらに限定されるものではない)。複数のそのようなネットワーク全体で通信する場合、インターフェース156は、任意のバージョンの1または複数の適用可能な規格に準拠して動作し得る。実施形態は、この文脈において限定されない。
様々な実施形態において、コンピューティングシステム160は、ビデオエンコーダ104により情報を処理する様々な態様を制御するためのビデオエンコーダ制御モジュール160を含み得る。より具体的には、ビデオエンコーダ制御モジュール160は、ビデオストリームの1または複数のフレームを複数のマクロブロックに分割して、複数のマクロブロック境界に沿って複数のフレームを分割し、並列に処理およびエンコードするために複数のマクロブロックを複数の波面グループにグループ化し得る。
ビデオエンコーダ制御モジュール160は、フレームを1または複数のマクロブロックに分割するためのマクロブロックモジュール162を含み得る。各フレームは、フレームのサイズおよび解像度に基づいた任意の数のピクセルを含み得る。例えば、フレームは、1280×720ピクセルのサイズを有し得、各マクロブロックは、16×16ピクセルマトリックスのサイズであり得る。この例において、フレームは、80マクロブロックの幅および45マクロブロックの高さであってもよい。
図4においてより詳細に検討されるように、各マクロブロックは、マクロブロックの外側の複数のピクセルにより画定される複数のマクロブロック境界を有し得る。より具体的には、マクロブロックは、左のマクロブロック境界もしくは縁部、上部のマクロブロック境界もしくは縁部、右のマクロブロック境界もしくは縁部、および下部のマクロブロック境界もしくは縁部を有し得る。いくつかの実施形態において、フレームは、複数の領域を生成するべく、1または複数のマクロブロック境界に沿って更に分割され得る。
より具体的には、ビデオエンコーダ制御モジュール160は、複数のマクロブロック境界に沿って複数のフレームを分割し、1または複数の領域を生成するための領域モジュール164を含み得る。複数のマクロブロックは、波面モジュール166により1または複数の波面グループに割り当てられ得、波面グループにおける各マクロブロックは、並列に処理され得る。並列処理の利点は、複数のフレームが2またはそれより多くの領域に分割される場合に実現され得る。例えば、フレームを複数の領域に分割することにより、波面グループの数は低減され得、より多くのマクロブロックが並列に処理され得る。
いくつかの実施形態において、領域モジュール164は、複数のフレームを複数のマクロブロック境界に沿って水平方向に分割し、フレームを2またはそれより多くの領域に分割し得る。図2Bに関連して以下に検討されるように、複数のフレームは、2つの領域を生成するべく半分に分割され得る。しかし、様々な実施形態は、このようには限定されず、複数のフレームは、複数のマクロブロックを有する任意の数の領域を生成するべく、水平方向に分割され得る。
図2Dに図示されるように、領域モジュール164は、2またはそれより多くの領域を生成するべく、複数のフレームを複数のマクロブロック境界に沿って斜め方向にも分割し得る。いくつかの実施形態において、次々に分割されるマクロブロック境界は、複数のフレームが複数の領域に分割される前に決定された波面境界であり得る。より具体的には、フレームは、最適なマクロブロック並列処理を実現するべく、前の波面境界に沿って分割され得る。各波面グループは、1または複数のマクロブロックをグループに割り当てることにより生成され得る。いくつかの実施形態において、複数の波面グループの割り当ては、マクロブロック境界および/または波面境界の後の最初の値から開始し得る。例えば、図2Dに図示されるように、複数の波面グループの割り当ては、波面境界の後の各行における0で再開する。様々な実施形態をこのようには限定することはできず、複数の波面グループの割り当ては、並列処理を最適化する態様で行われ得る。
いくつかの実施形態において、領域モジュール164は、等しい数のマクロブロックが各領域内に存在するように複数のフレームを分割し得る。しかし、いくつかの例において、複数のフレームは、複数のフレームのサイズおよび/または複数のフレームにおけるマクロブロックの数に起因して均一に分割されない場合がある。これらの例において、各領域は、等しい数のマクロブロックを有しない場合がある。例えば、1つの領域は、処理されるべき更なるマクロブロックをその中に有する場合がある。様々な実施形態は、このようには限定されない。
ビデオエンコーダ制御モジュール160は、1または複数の波面または波面グループを生成するための波面モジュール166も含み得る。各波面グループは、並列に処理するための1または複数のマクロブロックを含み得る。換言すれば、同一の波面グループにおける各マクロブロックは、同時または並列に処理され得る。
様々な実施形態において、波面モジュール166は、複数のマクロブロック依存性に基づいて複数の波面グループを割り当て、または生成し得る。いくつかの例において、マクロブロックは、それが処理され得る前に、その複数の隣接マクロブロックのうちの1または複数が処理されることを必要とし得る。例えば、マクロブロックは、それが処理され得る前に、その左、上部、および右上の複数のマクロブロックが処理されることを必要とし得る。別の例において、マクロブロックは、それが処理され得る前に、その左および上部の複数のマクロブロックが処理されることを必要とし得る。様々な実施形態は、このようには限定されず、いくつかのフレームは、依存性がないか、または4つ以上の依存性があるマクロブロックを有し得る。更に、複数のマクロブロックは、これらのマクロブロック依存性を補償するべく互い違いの様式で複数の波面グループに割り当てられ得る。通常、最悪の場合の複数のマクロブロック依存性は、フレームで一貫しており、これは、互いに依存しない複数のMBが存在し得ることを意味する。複数の波面グループは、複数のマクロブロックを識別することにより形成される。
図2Aは、マクロブロック列202およびマクロブロック行204において多数のマクロブロックに分割されたフレーム205の例示的な実施形態を図示する。図2Aは、専ら例示の目的のために限定された数のマクロブロックを図示する。しかし、様々な実施形態は、このようには限定されない。
図2Aに図示される各マクロブロックは、波面グループに割り当てられ得る。複数の波面グループは、複数のマクロブロックの各々における番号で図示される。例えば、左上のマクロブロックは、識別子206−1を有する波面グループ0にあり、波面グループ1におけるマクロブロックは、識別子206−2を有し、波面グループ2におけるマクロブロックは、識別子206−3を有し、波面グループ3におけるマクロブロックは、識別子206−4を有する。同一の番号を有する各マクロブロックは、同一の波面グループにあり、並列に処理される。すでに検討されたように、複数のマクロブロックは、複数の波面グループに割り当てられ得る。
図2Aに図示されるように、フレーム205は、波面グループ0〜19を有し、エンコードされるフレーム205に対して、合計で20個の波面が処理され得る。しかし、複数のフレームを多数の領域に分割することにより、波面グループの数、およびエンコードされるフレームに対して処理されるように要求される波面グループの数を低減し得る。
図2B/図2Cは、分割線208により示されるマクロブロック境界に沿って水平方向に、フレーム205を複数の領域に分割する例示的な複数の実施形態を図示する。各領域における複数のマクロブロックは、すでに検討されたように、複数の波面グループに割り当てられ得る。しかし、この例示的な実施形態において、波面グループ割り当ては、フレーム207に図示されるように反復され得る。例えば、各領域における両方の左上のマクロブロックは、同一の波面グループ0に割り当てられる。
図2Cに図示されるように、波面グループ割り当ては、複数のマクロブロックにおける1または複数の行が同一の波面グループ割り当てを有する複数の行の間にあるので反復され得る。例えば、この例示的な実施形態において、2つの行のマクロブロックが同一の波面グループ割り当てを有する複数の行の間にある。このようにフレーム207を複数の領域に分割して、複数のマクロブロックを複数の波面グループに割り当てることにより、処理される波面の数は、更に低減され得る。この例示的な実施形態において、処理される波面の数は、20個の波面グループから14個の波面グループに低減される。反復される波面グループを有することのより適切な理由は、ライン208に沿った全ての依存性が意図的に除去されるからであるとしてもよい。これは、下部領域が丁度上部領域のように見えることを意味する。これは、下部領域における左上のマクロブロックが上部領域の左上のマクロブロック等と共に処理され得ることを意味する。
具体的には、より多くのマクロブロックが複数の同一の波面グループに割り当てられる。例えば、2つのマクロブロックは、識別子206−1を有する波面グループ0に割り当てられ、2つのマクロブロックは、識別子206−2を有する波面グループ1に割り当てられ、4つのマクロブロックは、識別子206−3を有する波面グループ2に割り当てられ、4つのマクロブロックは、識別子206−4を有する波面グループ3に割り当てられる、等である。従って、並列に処理されるマクロブロックの数は、フレーム207が2つの領域に分割されると、増加し得る。並列GPUにおいてより多くのマクロブロックを処理することにより、処理サイクルは、低減され得、バッテリ電源と共に電力が節約され得る。
図2D/図2Eは、波面境界212に沿ってマクロブロック境界に沿った斜め方向に2つの領域に分割されるフレームの例示的な実施形態を図示する。波面境界212は、図2Dのビデオフレーム205に図示されるようにビデオフレームが複数の領域に分割される前に、同一の波面グループに属する複数のマクロブロックにおけるフレームを分割する対角線であり得る。様々な実施形態において、ビデオフレームは、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向に分割され得る。例えば、図2Dは、ビデオフレーム209の下部左隅から右上隅へと波面グループ9に属する複数のマクロブロックに沿った波面境界212を図示する。様々な実施形態は、このようには限定されず、複数のビデオフレームは、任意の波面境界に沿って斜め方向に分割されてもよい。
更なる利点は、図2Dおよび図2Eの複数のビデオフレーム209により図示されるように、波面境界に沿った複数のマクロブロック境界に沿って斜め方向に、ビデオフレームを複数の領域に分割することにより実現され得る。各波面グループは、ビデオフレームが水平方向に分割され、または全く分割されない場合には、1または複数のマクロブロックを含み得る。[0]図2Eは、10個の波面グループ0〜9を有するビデオフレーム209を図示する。この例示的な実施形態において、複数の更なるマクロブロックは、並列に処理され得、更なる処理サイクルは、低減され得る。例えば、6つのマクロブロックは、識別子206−1を有する波面グループ0に割り当てられ、6つのマクロブロックは、識別子206−2を有する波面グループ1に割り当てられ、6つのマクロブロックは、識別子206−3を有する波面グループ2に割り当てられ、6つのマクロブロックは、識別子206−4を有する波面グループ3に割り当てられる。
しかし、波面境界に沿って斜め方向にフレームを分割するには、波面境界に沿った複数のマクロブロックのうちの1または複数が複数の隣接マクロブロックの予測に基づいて処理されることを要求する場合がある。いくつかの実施形態において、予測マクロブロックは、複数の動きベクトルおよびモードに対する複数デフォルト値を用いて形成され得る。いくつかの実施形態において、複数の隣接マクロブロックに対する予測は、複数の動きベクトルおよびモードに対する複数の値が決定されるビデオの前処理段階中に形成され得る。しかし、様々な実施形態をこのようには限定することはできず、複数のマクロブロックの予測は、当業者に既知の他の手段により行われ得る。
いくつかの実施形態において、複数のフレームは、等しい数のマクロブロックが複数の領域の各々に存在するように、複数の領域に分割され得る。例えば、図2Bおよび図2Cに図示されるフレーム207は、30個のマクロブロックが各領域内に存在するように、水平方向に半分に分割され得る。同様に、図2Dおよび図2Eに図示されるビデオフレーム209は、斜め方向に分割されてもよく、また、複数の領域の各々は、30個のマクロブロックを有してもよい。いくつかの実施形態において、複数のフレームは、均一に分割されない場合があり、同一の数のマクロブロックの数が各領域内に存在しない。複数の領域のうちの1または複数は、1または複数の更なるマクロブロックを含み得る。
図3Aは、マクロブロックおよびマクロブロック依存性302−1を有する例示的な実施形態のビデオフレーム205を図示する。この例示的な実施形態において、ビデオフレーム205は、複数の領域に分割されず、図2Aに図示されるビデオフレーム205と同一かまたは類似し得る。図3Aは、矢印で図示されるように、左、上部、および右上の複数の隣接マクロブロックに対するマクロブロック依存性302−1を有する列202−1および行204−2に位置するマクロブロックを図示する。従って、この位置で処理されるマクロブロックについては、それが依存する複数のマクロブロックから処理されなければならない。
この例示的な実施形態において、依存するマクロブロックが処理される前に複数の隣接マクロブロックが処理されるように、複数のマクロブロックが複数の波面グループに割り当てられる。例えば、図3Aに図示されるように、マクロブロック依存性を有するマクロブロックは、波面グループ3に存在するが、その隣接マクロブロックは、波面グループ1および2に存在する。波面グループ1および2における複数のマクロブロックは、波面グループ3における複数のマクロブロックをエンコードする前に処理され得る。
図2Aに関連してすでに上述されたように、ビデオフレームが複数の領域に分割されない場合、フレームを処理するべく、複数の更なる波面グループが必要とされる場合がある。波面の数は、水平方向、斜め方向、またはいくつかの他の手段のいずれかでビデオフレームを複数の領域に分割することにより低減され得る。しかし、ビデオフレームを複数の領域に分割するには、ビデオの動きおよびモードの演算に対する複数のデフォルト値を用いて、依存する複数のマクロブロックのうちのいくつかが処理されることを要求する場合がある。
図3Bは、マクロブロックおよびマクロブロック依存性302−1および302−2を有する複数の領域に水平方向に分割されたフレーム207の例示的な実施形態を図示する。この例示的な実施形態において、下部領域における複数のマクロブロックのうちの1または複数は、その複数の親マクロブロックのうちの1または複数に対する複数の予測値またはデフォルト値を用いて処理され得る。例えば、列202−4および行204−4におけるマクロブロックは、波面グループ3に存在する。しかし、このマクロブロックは、マクロブロック依存性302−2の矢印で図示されるように、波面グループ2、7、および8における複数のマクロブロックに対する複数の依存性を有する。昇順で処理される場合、波面グループ3における複数のマクロブロックは、波面グループ7および8における複数のマクロブロックの前に処理される。従って、波面グループ7および8における複数の親マクロブロックに対する複数の予測値は、マクロブロックがこの位置にある場合に要求され得る。これらの予測値は、デフォルト値であってもよく、または他の予測が用いられなければならない。更に、図3Bに図示されるように、フレーム207を2つの領域に分割するマクロブロック境界に沿った他の複数のマクロブロックも、処理される場合に、いくつかのデフォルト値または他の予測値を用いることを要求される場合がある。更に、波面境界に沿って斜め方向に分割される複数のフレームは、処理される場合に、いくつかのデフォルト値または他の予測値を用い得る複数のマクロブロックも有し得る。
図3Cは、波面境界に沿った2つの領域に斜め方向に分割されるフレーム209の例示的な実施形態を図示する。上述と同様に、下部領域における複数のマクロブロックのうちの1または複数は、その複数の親マクロブロックのうちの1または複数に対するいくつかのデフォルト値または他の予測値を用いて処理され得る。例えば、列202−6および行204−4におけるマクロブロックは、波面グループ1に存在する。しかし、このマクロブロックは、マクロブロック依存性識別子302−2の矢印で図示されるように、波面グループ0および9における複数のマクロブロックに対する複数の依存性を有する。昇順で処理される場合、波面グループ1における複数のマクロブロックは、波面グループ9における複数のマクロブロックの前に処理される。従って、波面グループ9における複数の親マクロブロックに対する複数のデフォルト値または予測値は、この位置にあるマクロブロックが処理される場合に用いられ得る。更に、図3Cに図示されるように、ビデオフレーム209を2つの領域に分割するマクロブロックまたは波面境界に沿った他の複数のマクロブロックも、処理される場合に、いくつかのデフォルト値または他の予測値を用いることを要求される場合がある。
図3Dは、(水平方向または斜め方向に)フレームを複数の領域に分割するべく用いられる領域の数、フレームサイズ、および方法に基づいてビデオフレームを処理するべく必要とされる多数の波面グループを示す例示的な表350を示す。表350に明確に図示されるように、ビデオフレームを斜め方向に複数の領域に分割することは、処理する波面グループの数を低減する場合に、ビデオフレームを水平方向に分割することに対して顕著な利点を有する。更に、フレームを3つ以上の領域に分割することによっても、例えば、水平方向および斜め方向の分割の両方の場合において、処理する波面グループの数を低減する。
表350に示される一例において、1280×720のサイズを有し、2つの領域に分割されたフレームは、水平方向に分割される場合に124個の波面グループを必要とし、波面境界に沿って斜め方向に分割される場合に84個の波面グループを必要とする。別の例において、同一のサイズを有し、8つの領域に分割されたフレームは、水平方向に分割される場合に90個の波面グループを必要とし、斜め方向に分割される場合に21個の波面グループを必要とする。これらの例に見られ得るように、フレームを処理するのに必要とされる波面グループの数は、領域の数を増やし、フレームを斜め方向に分割することにより著しく低減され得る。
様々な実施形態において、必要とされる波面グループの数は、水平方向および斜め方向への両方の分割について計算され得る。式1は、左、上部、および右上の依存性を有する複数のマクロブロックについて、水平方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。 1.波面グループ=W +2*((H+(N−1))/N−1)であり、式中、 W=複数のマクロブロックにおけるフレーム幅、 H=複数のマクロブロックにおけるフレームの高さ、 N=領域の数、
である。
式2は、左、上部、および右上の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。 2.波面グループ=(W+2 *(H−1)+(N−1))/Nであり、式中、 W=複数のマクロブロックにおけるフレーム幅、 H=複数音マクロブロックにおけるフレームの高さ、 N=領域の数
である。
いくつかの実施形態において、複数のマクロブロックは、左および上部の依存性のみを有し得る(図示せず)。式3は、左および上部の依存性を有する複数のマクロブロックについて、水平方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。 3.波面グループ=W+((H+(N−1))/N−1)であり、式中、 W=複数のマクロブロックにおけるフレーム幅で、 H=複数のマクロブロックにおけるフレームの高さ、 N=領域の数、
である。
式4は、左および上部の依存性を有する複数のマクロブロックについて、斜め方向に複数の領域に分割される場合にビデオフレームをエンコードするのに必要とされる波面グループの数を計算するべく、用いられ得る。 4.波面グループ=(W+(H−1)+(N−1))/Nであり、式中、 W=複数のマクロブロックにおけるフレーム幅、 H=複数のマクロブロックにおけるフレームの高さ、 N=領域の数、
である。
式1〜4は、任意の数のマクロブロックを有する任意のサイズのディスプレイに対する波面グループの数を決定するべく用いられ得る。マルチコア、マルチスレッド、または任意の並列処理コンポーネントにおいては、各マクロブロックは、並列またはほぼ同時に処理され得る。従って、波面グループを処理するのにかかる時間は、波面グループのサイズに関係なく一定である。例えば、式5は、フレームを処理する時間量を計算するのに用いられ得る。 5.処理時間=WFG*WTであり、式中、 WFG=波面グループの数、 WT=1つの波面グループを処理する時間、
である。
従って、式5により示されるように、波面グループの数が低減されれば、処理時間が低減され得る。更に、処理時間が低減されるので、電力消費量が低減され、バッテリ電源で動作するコンピューティングデバイスのバッテリ寿命を長くし得る。更に、複数の領域の各々は、等しい波面の数を含み得、従ってコンピューティングシステムの性能は、N倍または領域の数だけ改善され得る。いくつかの場合に、波面グループの処理時間は、そのサイズに依存し得る。そのような場合、各領域における波面グループの数は、最大限の並列処理およびスケーラビリティを実現するべく、複数の領域の全ての処理が同時またはほぼ同時に完了され得るように調整され得る。例えば、ある領域は、別の領域より多くのマクロブロックを有し得る。いくつかの例において、第1の領域の処理は、第2の領域よりも、完了するのに長い時間がかかり得る。この場合、処理負荷がバランスされ得るように、波面境界は、第1の領域から第2の領域に移動され得る。これらまたは他の利点は、水平方向または斜め方向にビデオフレームを任意の数の領域に分割することにより実現され得る。
図4は、マクロブロック400の例示的な実施形態を図示する。様々な実施形態において、マクロブロック400は、離散コサイン変換(DCT)等の複数の線形ブロック変換に基づいた画像および動画圧縮フォーマットにおける処理単位であり得る。通常、マクロブロックは、16×16サンプルのピクセル402からなり、複数の変換ブロック、そして複数の予測ブロックに更に細分化される。マクロブロックに基づき得る様々な画像および動画圧縮フォーマットとしては、最小符号化単位(MCU)ブロックと称されるジョイントフォトグラフィックエクスパーツグループ(JPEG)、H.261、ムービングピクチャーエキスパートグループ(MPEG)1−Part2、H.262/MPEG−2Part2、H.263、MPEG−4 Part2、H.264/MPEG−4 AVC等が挙げられる。
様々な実施形態において、各マクロブロック400は、複数のマクロブロック境界を含み得る。より具体的には、各マクロブロック400は、左側404−1、上側404−2、右側404−3、および下側404−4を有し得る。各々の側は、マクロブロック400のマクロブロック境界を画定し得る。更に、各々の側は、複数のピクセル402の行または列により画定され得る。例えば、上側404−2は、複数のピクセル402の行により画定され得る。すでに検討されたように、マクロブロック400は、16×16ピクセルのマトリックスであり得、従って各々の側は、16ピクセルの長さを有し得る。しかし、様々な実施形態は、このようには限定されず、マクロブロックは、任意のサイズであってもよい。
図5は、1または複数のビデオフレームを処理するための第1のロジックフロー図500の例示的な実施形態を図示する。分かりやすくする目的で、ロジックフロー500は、図1Aおよび図1Bのシステム100およびシステム150を参照して検討される。様々な実施形態において、ブロック502において、エンコードするためのフレームが受信され得る。より具体的には、ビデオエンコーダ104は、本明細書に説明される1または複数の実施形態によりエンコードするべく、フレームソース102からビデオストリームにおける1または複数のフレームを受信し得る。ブロック504において、フレームは、マクロブロック400等の複数のマクロブロックに分割され得る。いくつかの実施形態において、マクロブロックモジュール162は、更なる処理のために各フレームを16×16ピクセルのマクロブロックに分割するべく、情報またはデータをビデオエンコーダ104に送信し得る。各フレームは、フレームサイズに基づいて多数のマクロブロックに分割され得る。例えば、1280×720ピクセルのフレームサイズを有するフレームは、16×16のマクロブロックサイズに基づいて80×45のマクロブロックマトリックスの形の125のマクロブロックに分割され得る。
いくつかの実施形態において、フレームは、ブロック506において、複数のマクロブロック境界または複数の波面境界に沿った複数の領域にも分割され得る。例えば、図1Bの領域モジュール164は、ビデオエンコーダ104に情報を送信して、マクロブロック境界、そしていくつかの例において波面境界に沿って水平方向または斜め方向にフレームを分割し得る。波面境界は、図2Dに図示されるように、複数のマクロブロックにおけるフレームを分割する対角線であり得る。様々な実施形態において、フレームは、フレームの下部左隅からフレームの右上隅へと斜め方向に分割され得る。
フレームは、任意の数の領域を生成するべく、複数のマクロブロック境界に沿って分割され得る。例えば、フレームがフレームの下部左隅からフレームの右上隅へと波面境界に沿って斜め方向に分割される場合、上部領域および下部領域の2つの領域が生成され得る。様々な実施形態は、フレームを2つの領域に分割することに限定されず、フレームは、任意の数の領域に分割されてもよい。
ブロック508において、各マクロブロックは、波面グループに割り当てられ得る。いくつかの実施形態において、波面モジュール166は、複数のマクロブロック依存性が満されるように複数のマクロブロックを割り当てるべく、情報をビデオエンコーダ104に送信し得る。各波面グループは、1または複数のマクロブロックをグループに割り当てることにより生成され得る。いくつかの実施形態において、複数の波面グループの割り当ては、マクロブロック境界および/または波面境界の後の最初の値から開始し得る。例えば、図2Dに図示されるように、複数の波面グループの割り当ては、波面境界の後の各行における0で再開する。様々な実施形態をこのようには限定することはできず、複数の波面グループの割り当ては、並列処理を最適化する態様で行われ得る。
様々な実施形態において、同一の波面グループにおける複数のマクロブロックは、ブロック510において並列に処理され得る。更に、ビデオエンコーダ104は、同一の波面グループにおける全てのマクロブロックを同時に処理し得、各波面グループは、複数のマクロブロック依存性が満たされることを保証し、複数の予測値に基づいてエンコードされたマクロブロックの数を限定するべく、複数の割り当てに基づいて昇順で処理され得る。全てのマクロブロックが最初に処理されると、エンコードの第2の段階が実行され得る。第2の段階において、第1の段階において生成された全ての動きベクトルおよびモードの決定が処理され、それらの値は、フレーム全体をエンコードして最終的ビットストリームを生成するべく用いられる。決定ブロック512において、ビデオエンコーダ104は、ビデオフレームにおける複数のマクロブロックの全てがエンコードされたか否かを判断し得る。 フレームのエンコードが完了すると、ブロック502〜512は、複数のフレームの全てがビデオストリームに対してエンコードされるまで反復され得る。
図6は、第2のロジックフロー600の実施形態を図示する。ロジックフロー600は、本明細書に説明される1または複数の実施形態により実行される複数の動作のうちのいくつかまたは全てを表し得る。例えば、ロジックフロー600は、システム100およびシステム150により実行される複数の動作を図示し得る。
図6に示される実施形態の図示において、ロジックフロー600は、ブロック605において、複数のピクセルを含むビデオフレームを、各マクロブロックが4つのマクロブロック境界内に多数のピクセルを含む、多数のマクロブロックに分割する段階を含み得る。いくつかの実施形態において、各マクロブロックは、16×16ピクセルのマトリックスに256ピクセルを含み、ディスプレイデバイスについての情報を提示するための複数の値を含み得る。フレームは、フレームサイズおよびフレームのピクセルの数に基づいて任意の数のマクロブロックに分割され得る。
更に、様々な実施形態は、16×16のサイズを有するマクロブロックに限定されず、マクロブロックは、任意のサイズであってもよい。
4つのマクロブロック境界は、左の境界もしくは縁部、上部の境界もしくは縁部、右の境界もしくは縁部、および下部の境界もしくは縁部を含み得る。複数のマクロブロック境界は、マクロブロックの外側のピクセルにより画定され得る。
ブロック610において、ロジックフロー600は、複数のマクロブロック境界に沿ってビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも2つの領域を生成する段階も含み得る。より具体的には、フレームは、各々が多数のマクロブロックを有する2またはそれより多くの領域を生成するべく1または複数回、水平方向または斜め方向に分割され得る。いくつかの実施形態において、複数の領域は、各領域における複数の波面グループの並列処理がほぼ同時に完了することを保証するべく、各領域に等しい数のマクロブロックが存在するように生成され得る。しかし、いくつかのビデオフレームを、各領域が等しい数のマクロブロックを有するように均一に分割することができない場合がある。これらの例において、複数の領域の1または複数は、1または複数の更なるマクロブロックを含む。
ブロック615におけるロジックフロー600は、各領域における複数のマクロブロックに基づいて、波面グループを生成する段階も含み得、各波面グループは、並列に処理するための1または複数のマクロブロックを含む。複数の波面グループは、1または複数のマクロブロックを複数の波面グループの各々に割り当てることにより生成され得る。いくつかの実施形態において、複数のマクロブロックは、等しい数のマクロブロックが各波面グループに含まれるように、各波面グループに割り当てられ得る。更に、複数のマクロブロックは、フレーム内の各マクロブロックの位置に基づいて、複数の波面グループに割り当てられ得る。各マクロブロックは、複数のマクロブロック依存性を有し得、複数の隣接マクロブロックは、依存するマクロブロックが処理される前に処理される必要があり得る。従って、複数のマクロブロックは、複数のマクロブロックについて、複数のマクロブロック依存性が満たされるように複数の波面グループに割り当てられ、または配分され、複数の依存するマクロブロック、あるいはデフォルト値または他の予測が要求され得る前に、複数の親マクロブロックが処理されることを保証し得る。
図7は、システム700の一実施形態を図示する。様々な実施形態において、システム700は、図1Aおよび図1Bのシステム100および150等、本明細書に説明される1または複数の実施形態と共に用いるのに好適なシステムまたはアーキテクチャを表し得る。実施形態は、この点において限定されない。
図7に示されるように、システム700は、複数の要素を含み得る。1または複数の要素は、設計または性能の制約の所与のセットに所望されるような1または複数の回路、コンポーネント、レジスタ、プロセッサ、ソフトウェアサブルーチン、モジュール、またはこれらの任意の組み合わせを用いて実装され得る。図7は、例として特定のトポロジにおける限定された数の複数の要素を示すが、任意の好適なトポロジにおけるより多いか、またはより少ない要素が、所与の実装に所望されるようにシステム700において用いられ得ることが理解され得る。実施形態は、この文脈において限定されない。
様々な実施形態において、システム700は、パーソナルコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、ネットブックコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、サーバ、サーバファーム、ブレードサーバ、もしくはその他のタイプのサーバ等を含む、任意のタイプのコンピュータ、または処理デバイスであり得るコンピューティングデバイス705を含み得る。
コンピューティングデバイスの例としては、リストコンピュータ、フィンガコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣類コンピュータ、および他のウェアラブルコンピュータ等、人により着用されるように構成されたコンピュータも挙げられ得る。複数の実施形態において、例えば、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーション、ならびに音声通信および/またはデータ通信を実行することができるスマートフォンとして実装され得る。いくつかの実施形態は、例として、スマートフォンとして実装されるモバイルコンピューティングデバイスと共に説明され得るが、他の複数の無線モバイルコンピューティングデバイスを同様に用いる複数の他の実施形態が実装され得ることが理解され得る。実施形態は、この文脈において限定されない。
様々な実施形態において、コンピューティングデバイス705は、プロセッサ回路702を含み得る。プロセッサ回路702は、任意のプロセッサまたは論理デバイスを用いて実装され得る。処理回路702は、マイクロプロセッサ、プロセッサ、中央処理装置、デジタル信号処理ユニット、デュアルコアプロセッサ、モバイルデバイスプロセッサ、デスクトッププロセッサ、シングルコアプロセッサ、システムオンチップ(SoC)デバイス、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セット(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、もしくはその他のタイプのプロセッサ、または単一のチップもしくは集積回路上の処理回路等であるが、これらに限定されない1または複数の任意のタイプの演算要素であってもよい。処理回路702は、1または複数のバス、制御ライン、およびデータライン等の相互接続743を介してコンピューティングシステムの他の複数の要素に接続され、これらと通信し得る。
一実施形態において、コンピューティングデバイス705は、プロセッサ回路702に結合されるメモリユニット704を含み得る。メモリユニット704は、所与の実装に所望のように、通信バス743を介して、またはプロセッサ回路702とメモリユニット704との間の専用通信バスによりプロセッサ回路702に結合され得る。メモリユニット704は、揮発性メモリおよび不揮発性メモリの両方を含む、データを格納することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実装され得る。いくつかの実施形態において、機械可読媒体またはコンピュータ可読媒体は、非一時的媒体を含み得る。実施形態は、この文脈において限定されない。
様々な実施形態において、コンピューティングデバイス705は、グラフィックス処理ユニット(GPU)706を含み得る。GPU706は、グラフィックス関連の複数の動作を実行するように最適化された任意のプロセッシングユニット、ロジック、または回路、ならびにビデオデコーダエンジン、およびフレーム相関エンジンを含み得る。GPU706は、ビデオゲーム、グラフィックス、コンピュータ支援設計(CAD)、シミュレーション・ビジュアル化ツール、画像処理等のような様々な用途のために2次元(2D)および/または3次元(3D)画像をレンダリングするべく用いられ得る。様々な実施形態は、このようには限定されない。GPU706は、画像、ビデオ、プログラム、アニメーション、3D、2D、オブジェクト画像等のような任意のタイプのグラフィックスデータを処理し得る。
いくつかの実施形態において、コンピューティングデバイス705は、ディスプレイコントローラ708を含み得る。ディスプレイコントローラ708は、グラフィックス情報を処理してグラフィックス情報を表示するための任意のタイプのプロセッサ、コントローラ、回路、ロジック等であり得る。ディスプレイコントローラ708は、バッファ220等の1または複数のバッファからグラフィックス情報を受信または取得し得る。情報を処理した後に、ディスプレイコントローラ708は、グラフィックス情報をディスプレイに送信し得る。
様々な実施形態において、システム700は、トランシーバ744を含み得る。トランシーバ744は、様々な好適な無線通信技術を用いて複数の信号を送受信することができる1または複数の無線機を含み得る。複数のそのような技術は、1または複数の無線ネットワークにわたる複数の通信を含み得る。例示的な無線ネットワークとしては、無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、セルラネットワーク、および衛星ネットワークが挙げられる(しかし、これらに限定されるものではない)。複数のそのようなネットワーク全体で通信する場合、トランシーバ744は、任意のバージョンの1または複数の適用可能な規格に準拠して動作し得る。実施形態は、この文脈において限定されない。
様々な実施形態において、コンピューティングデバイス705は、ディスプレイ745を含み得る。ディスプレイ745は、プロセッサ回路702、グラフィックス処理ユニット706、およびディスプレイコントローラ708から受信された情報を表示することができる任意のディスプレイデバイスを構成し得る。
様々な実施形態において、コンピューティングデバイス705は、ストレージ746を含み得る。ストレージ746は、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、装着ストレージデバイス、フラッシュメモリ、バッテリバックアップSDRAM(シンクロナスDRAM)、および/またはネットワークアクセス可能なストレージデバイス等の不揮発性ストレージデバイスとして実装され得るが、これらに限定されるものではない。複数の実施形態において、ストレージ746は、例えば、複数のハードドライブが含まれる場合に貴重なデジタル媒体に対するストレージ性能の強化された保護を高める技術を含み得る。ストレージ746の更なる例としては、ハードディスク、フロッピー(登録商標)ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、記録可能コンパクトディスク(CD−R)、再書き込み可能コンパクトディスク(CD−RW)、光ディスク、磁気媒体、磁気光媒体、リムーバブルメモリカードもしくはディスク、様々なタイプのDVDデバイス、テープデバイス、カセットデバイス等が挙げられ得る。実施形態は、この文脈において限定されない。
様々な実施形態において、コンピューティングデバイス705は、1または複数のI/Oアダプタ747を含み得る。I/Oアダプタ747の例としては、ユニバーサルシリアルバス(USB)ポート/アダプタ、IEEE1394ファイヤワイヤポート/アダプタ等が挙げられ得る。実施形態は、この文脈において限定されない。
図8は、すでに説明された様々な実施形態を実装するのに好適な例示的なコンピューティングアーキテクチャ800の実施形態を図示する。一実施形態において、コンピューティングアーキテクチャ800は、システム100および150を含み、またはこれらの一部として実装され得る。
本明細書において用いられるように、「システム」および「コンポーネント」という用語は、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかによるコンピュータ関連のエンティティを指すことを意図し、これらの例は、例示的なコンピューティングアーキテクチャ800により提供される。例えば、コンポーネントは、プロセッサ、ハードディスクドライブ、(光および/または磁気ストレージ媒体の)複数のストレージドライブ、オブジェクト、エグゼキュータブル、実行のスレッド、プログラム、および/またはコンピュータ上で動作する処理であり得るが、これらに限定されない。例示として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであり得る。1または複数のコンポーネントは、実行の処理および/またはスレッド内に存在し得、コンポーネントは、1つのコンピュータに局限され、および/または2またはそれより多くのコンピュータ間に分散され得る。更に、複数のコンポーネントは、複数の動作を調整するための様々なタイプの通信媒体により互いに通信可能に結合され得る。調整は、情報の一方向または両方向の交換を伴い得る。例えば、複数のコンポーネントは、通信媒体を介して通信される複数の信号の形態で情報を通信し得る。情報は、様々な信号線に割り当てられる複数の信号として実装され得る。そのような割り当てにおいて、各メッセージは、信号である。しかし、複数の更なる実施形態は、代替的に複数のデータメッセージを使用し得る。そのような複数のデータメッセージは、様々な接続にわたって送信され得る。例示的な複数の接続としては、パラレルインターフェース、シリアルインターフェース、およびバスインターフェースが挙げられる。
コンピューティングアーキテクチャ800は、1または複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント、電源等のような様々な一般的コンピューティング要素を含む。しかし、実施形態は、コンピューティングアーキテクチャ800による実装に限定されない。
図8に示されるように、コンピューティングアーキテクチャ800は、処理ユニット804、システムメモリ806、およびシステムバス808を含む。処理ユニット804は、商業上入手可能な様々なプロセッサのいずれかであり得る。
システムバス808は、システムメモリ806から処理ユニット804までを含むが、これらに限定されない複数のシステムコンポーネントのためのインターフェースを提供する。システムバス808は、商業上入手可能な様々なアーキテクチャバスのいずれかを用いて(メモリコントローラを用いるか、または用いない)メモリバス、周辺バス、およびローカルバスに更に相互接続し得るいくつかのタイプのバス構造体のいずれかであり得る。複数のインターフェースアダプタは、スロットアーキテクチャを介してシステムバス808に接続し得る。例示的なスロットアーキテクチャとしては、アクセラレイティッドグラフィックスポート(AGP)、カードバス(拡張型)業界標準アーキテクチャ((E)ISA)、マイクロチャネルアーキテクチャ(MCA)、NuBus、周辺構成要素相互接続(拡張型)(PCI(X))、PCIエクスプレス、パーソナルコンピュータメモリカード国際協会(PCMCIA)等が挙げられ得るが、これらに限定されない。
コンピューティングアーキテクチャ800は、様々な製造物品を含み、または実装し得る。製造物品は、ロジックを格納するコンピュータ可読ストレージ媒体を含み得る。コンピュータ可読ストレージ媒体の例としては、揮発性メモリもしくは不揮発性メモリ、リムーバブルメモリもしくは非リムーバブルメモリ、消去可能メモリもしくは非消去可能メモリ、書き込み可能メモリもしくは非書き込み可能メモリ等を含む、電子データを格納することができる任意の有形媒体を含み得る。ロジックの例としては、ソースコード、コンパイル済みコード、変換済みコード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、視覚コード等のような任意の好適なタイプのコードを用いて実装される実行可能な複数のコンピュータプログラム命令が挙げられ得る。また、複数の実施形態は、非一時的コンピュータ可読媒体中または非一時的コンピュータ可読媒体上に含まれる複数の命令として少なくとも部分的に実装され得、これらは、本明細書に説明される複数の動作の実行を可能にするべく、1または複数のプロセッサにより読み取られて実行され得る。
システムメモリ806は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、強誘電体ポリマーメモリ等のポリマーメモリ、オボニックメモリ、相変化もしくは強誘電体メモリ、シリコン酸化膜窒化膜酸化膜シリコン(SONOS)メモリ、磁気もしくは光カード、独立ディスク(RAID)ドライブの冗長アレイ等のデバイスのアレイ、ソリッドステートメモリデバイス(例えば、USBメモリ、ソリッドステートドライブ(SSD))、および情報を格納するのに好適なその他のタイプのストレージ媒体等、1または複数のより高速なメモリユニットの形態の様々なタイプのコンピュータ可読ストレージ媒体を含み得る。図8に示される図示される実施形態において、システムメモリ806は、不揮発性メモリ810および/または揮発性メモリ812を含み得る。基本入出力システム(BIOS)は、不揮発性メモリ810に格納され得る。
コンピュータ802は、内部(または外部)ハードディスクドライブ(HDD)814、リムーバブル磁気ディスク818から読み取り、もしくはこれに書き込むための磁気フロッピー(登録商標)ディスクドライブ(FDD)816、およびリムーバブル光ディスク822(例えば、CD−ROMもしくはDVD)から読み取り、もしくはこれに書き込むための光ディスクドライブ820を含む1または複数のより低速のメモリユニットの形態の様々なタイプのコンピュータ可読ストレージ媒体を含み得る。HDD814、FDD816、および光ディスクドライブ820は、HDDインターフェース824、FDDインターフェース826、および光ドライブインターフェース828により各々、システムバス808に接続され得る。外部ドライブ実装のためのHDDインターフェース824は、ユニバーサルシリアルバス(USB)およびIEEE1394インターフェースの技術のうち少なくとも1つまたは両方を含み得る。
複数のドライブおよび関連付けられコンピュータ可読媒体は、データ、データ構造体、コンピュータ実行可能な複数の命令等の揮発性および/または不揮発性のストレージを提供する。例えば、オペレーティングシステム830、1または複数のアプリケーションプログラム832、他のプログラムモジュール834、およびプログラムデータ836を含む多数のプログラムモジュールが、複数のドライブおよびメモリユニット810、812に格納され得る。一実施形態において、1または複数のアプリケーションプログラム832、複数の他のプログラムモジュール834、およびプログラムデータ836は、例えば、システム700の様々なアプリケーションおよび/またはコンポーネントを含み得る。
ユーザは、1または複数の有線/無線入力デバイス、例えば、キーボード838およびマウス840等のポインティングデバイスにより、コマンドおよび情報をコンピュータ802に入力し得る。他の入力デバイスとしては、マイク、赤外線(IR)遠隔制御器、無線周波数(RF)遠隔制御器、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックスタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン(例えば、容量、抵抗等)、トラックボール、トラックパッド、センサ、スタイラス等が挙げられ得る。これら、および他の入力デバイスは多くの場合、システムバス808に結合される入力デバイスインターフェース842を介して処理ユニット804に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェース等の他の複数のインターフェースにより接続され得る。
モニタ844または他タイプのディスプレイデバイスも、ビデオアダプタ846等の複数のインターフェースを介してシステムバス808に接続される。モニタ844は、コンピュータ802の内部または外部にあってもよい。モニタ844に加えて、コンピュータは通常、スピーカ、プリンタ等の他の複数の周辺出力デバイスを含む。
コンピュータ802は、有線および/または無線通信を介した、リモートコンピュータ848等の1または複数のリモートコンピュータへの論理接続を用いてネットワーク環境において動作し得る。リモートコンピュータ848は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテインメントアプライアンス、ピアデバイス、または他の一般的なネットワークノードであり得、通常、コンピュータ802に関して説明される複数の要素の多くまたはそれらの全てを含むが、簡潔にする目的で、メモリ/ストレージデバイス850のみが図示されている。図示される論理接続は、ローカルエリアネットワーク(LAN)852および/またはより大きなネットワーク、例えばワイドエリアネットワーク(WAN)854への有線/無線接続を含む。そのようなLANおよびWANネットワーキング環境は、事務所および企業内において通常のものであり、イントラネット等の企業全体のコンピュータネットワークを容易にし、これら全てが包括的通信ネットワーク、例えばインターネットに接続し得る。
LANネットワーキング環境において用いられる場合、コンピュータ802は、有線および/または無線通信ネットワークインターフェースまたはアダプタ856を介してLAN852に接続される。アダプタ856は、LAN852への有線および/または無線通信を容易にし得、LAN852は、アダプタ856の無線機能との通信のためにLAN852に配置された無線アクセスポイントも含み得る。
WANネットワーキング環境において用いられる場合、コンピュータ802は、モデム858を含み得、またはWAN854上の通信サーバに接続され、またはインターネットによるなどしてWAN854を介した通信を確立するための他の手段を有する。モデム858は、内部または外部にあり、有線および/または無線デバイスであり得、入力デバイスインターフェース842を介してシステムバス808に接続する。ネットワーク環境において、コンピュータ802に関連して図示される複数のプログラムモジュール、またはその複数の部分は、遠隔メモリ/ストレージデバイス850に格納され得る。示されるネットワーク接続は、例示的なものであり、複数のコンピュータ間に通信リンクを確立する他の手段が用いられ得ることが理解されよう。
コンピュータ802は、無線通信(例えば、IEEE802.11のオーバーザエアー変調技術)において動作可能に配置された無線デバイス等、IEEE802ファミリの複数の規格を用いて、複数の有線および無線のデバイスもしくはエンティティと通信するように動作可能である。これは、中でも、少なくともWi−Fi(つまりWireless Fidelity)、WiMAX(登録商標)、およびBluetooth(登録商標)の無線技術を含む。従って、通信は、従来のネットワークにおけるように予め定義された構造であるか、または単純に、少なくとも2つのデバイス間におけるアドホックな通信であり得る。Wi−Fiネットワークは、IEEE802.11x(a、b、g、n等)と称される無線技術を用いて、セキュアで信頼性がある高速無線接続を提供する。Wi−Fiネットワークは、複数のコンピュータを互いに、インターネットに、および(IEEE802.3に関連する媒体および複数の機能を用いる)複数の有線ネットワークに接続するべく、用いられ得る。
図1A〜図8を参照してすでに説明されたシステム100および150の様々な要素は、様々なハードウェア要素、ソフトウェア要素、またはこれら両方の組み合わせを含み得る。ハードウェア要素の例としては、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ、回路要素(例えば、トランジスタ、抵抗器、コンデンサ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等が挙げられ得る。ソフトウェア要素の例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインターフェース、アプリケーションプログラムインターフェース(API)、命令セット、演算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、記号、またはこれらの任意の組み合わせが挙げられ得る。しかし、複数のハードウェア要素および/またはソフトウェア要素を用いた実施形態が実装されるか否かの判断は、所望の演算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバスの速度、および所与の実装に所望される他の設計または性能の制約等、任意の数の要因に応じて変わり得る。
ここで、詳細な本開示は、更なる実施形態に関する複数の例の提供に取り掛かる。以下に提供される1〜33の例は、例示的なものであり、非限定的であることを意図する。
第1の例において、システムまたは装置は、処理回路と、複数のピクセルを含むビデオフレームを多数のマクロブロックに分割するべく、処理回路上で実行するためのマクロブロックモジュールと、複数のマクロブロック境界に沿ってビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも2つの領域を生成するべく、処理回路上で実行するための領域モジュールと、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成するべく、処理回路上で実行するための波面モジュールとを備え、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための1または複数のマクロブロックを含む。
第2の例および第1の例の更なる形態において、装置は、複数のマクロブロック境界に沿って斜め方向にビデオフレームを分割することを含む、少なくとも2つの領域を生成するための領域モジュールを含み得る。
第3の例および前の複数の例のいずれかの更なる形態において、装置は、ビデオフレームを、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向に分割するための領域モジュールを含み得る。
第4の例および前の複数の例のいずれかの更なる形態において、装置は、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、ビデオフレームを分割することを含む少なくとも2つの領域を生成するための領域モジュールを含み得る。
第5の例および前の複数の例のいずれかの更なる形態において、装置は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも1つに割り当てることを含む複数の波面グループを生成するための波面モジュールを含み得る。
第6の例および前の複数の例のいずれかの更なる形態において、装置は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てることを含む複数の波面グループを生成するための波面モジュールを含み得る。
第7の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける各マクロブロックを並列に処理するための処理回路を含み得る。
第8の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理するための処理回路を含み得る。
第9の例および前の複数の例のいずれかの更なる形態において、装置は、16×16ピクセルのマトリックスを含む各マクロブロックを含み得る。
第10の例および前の複数の例のいずれかの更なる形態において、物品は、実行されると、処理回路が、複数のピクセルを含むビデオフレームを多数のマクロブロックに分割し、複数のマクロブロック境界に沿ってビデオフレームを分割することにより、複数のマクロブロックを有する少なくとも2つの領域を生成し、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成することを可能にする複数の命令を含むコンピュータ可読ストレージ媒体を備え、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための1または複数のマクロブロックを含む。
第11の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、複数のマクロブロック境界に沿って斜め方向にビデオフレームを分割することを含む、少なくとも2つの領域を生成することを可能にする複数の命令を備える。
第12の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、ビデオフレームの下部左隅からビデオフレームの右上隅へとビデオフレームを分割することを含む、ビデオフレームを斜め方向に分割することを可能にする複数の命令を含む。
第13の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、処理回路が、ビデオフレームを分割することを含む、少なくとも2つの領域を生成することを可能にする複数の命令を備える。
第14の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックが波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも1つに割り当てることを含む、複数の波面グループを生成することを可能にする複数の命令を備える。
第15の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てることを含む、複数の波面グループを生成することを可能にする複数の命令を備える。
第16の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、波面グループにおける各マクロブロックを並列に処理することを可能にする複数の命令を備える。
第17の例および前の複数の例のいずれかの更なる形態において、ストレージ媒体は、実行されると、処理回路が、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理することを可能にする複数の命令を備える。
第18の例および前の複数の例のいずれかの更なる形態において、方法は、処理コンポーネントにより、複数のピクセルを含むフレームを多数のマクロブロックに分割する段階と、複数のマクロブロック境界に沿ってフレームを分割することにより、複数のマクロブロックを有する少なくとも2つの領域を生成する段階と、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成する段階とを備え得、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための1または複数のマクロブロックを含む。
第19の例および前の複数の例のいずれかの更なる形態において、方法は、複数のマクロブロック境界に沿って斜め方向にフレームを分割する段階を有する、少なくとも2つの領域を生成する段階を備え得る。
第20の例および前の複数の例のいずれかの更なる形態において、方法は、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向にフレームを分割する段階を有する、フレームを分割する段階を備え得る。
第21の例および前の複数の例のいずれかの更なる形態において、方法は、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、フレームを分割する段階を有する、少なくとも2つの領域を生成する段階を備え得る。
第22の例および前の複数の例のいずれかの更なる形態において、方法は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも1つに割り当てる段階を有する、複数の波面グループを生成する段階を備え得る。
第23の例および前の複数の例のいずれかの更なる形態において、方法は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てる段階を有する、複数の波面グループを生成する段階を備え得る。
第24の例および前の複数の例のいずれかの更なる形態において、方法は、波面グループにおける各マクロブロックを並列に処理する段階を備え得る。
第25の例および前の複数の例のいずれかの更なる形態において、方法は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理する段階を備え得る。
第26の例および前の複数の例のいずれかの更なる形態において、装置は、複数のピクセルを含むフレームを多数のマクロブロックに分割するための手段と、複数のマクロブロック境界に沿ってフレームを分割することにより、複数のマクロブロックを有する少なくとも2つの領域を生成するための手段と、各領域における複数のマクロブロックに基づいて、複数の波面グループを生成することを可能にするための手段とを備え得、各マクロブロックは、複数のマクロブロック境界内に多数のピクセルを含み、各波面グループは、並列に処理するための1または複数のマクロブロックを含む。
第27の例および前の複数の例のいずれかの更なる形態において、装置は、複数のマクロブロック境界に沿って斜め方向にフレームを分割するための手段を有する、少なくとも2つの領域を生成するための手段を備え得る。
第28の例および前の複数の例のいずれかの更なる形態において、装置は、ビデオフレームの下部左隅からビデオフレームの右上隅へと斜め方向にフレームを分割するための手段を有する、フレームを分割するための手段を備え得る。
第29の例および前の複数の例のいずれかの更なる形態において、装置は、各領域が複数のマクロブロックの並列処理を最大化するべく、等しい数のマクロブロックを有するように、フレームを分割するための手段を有する、少なくとも2つの領域を生成するための手段を備え得る。
第30の例および前の複数の例のいずれかの更なる形態において、装置は、各マクロブロックを特定の波面グループに割り当て、等しい数のマクロブロックを複数の波面グループに割り当てることができない場合に、更なるマクロブロックを複数の波面グループのうちの少なくとも1つに割り当てるための手段を有する、複数の波面グループを生成するための手段を備え得る。
第31の例および前の複数の例のいずれかの更なる形態において、装置は、複数のマクロブロック依存性に基づいて各マクロブロックを波面グループに割り当てるための手段を有する、複数の波面グループを生成するための手段を備え得る。
第32の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける各マクロブロックを並列に処理するための手段を備え得る。
第33の例および前の複数の例のいずれかの更なる形態において、装置は、波面グループにおける複数のマクロブロックが別の波面グループにおける複数のマクロブロックの複数の処理結果に依存する、複数のマクロブロック依存性に基づいた順序で、各波面グループを処理するための手段を備え得る。
いくつかの実施形態は、「一実施形態」または「実施形態」という表現を、それらの派生語と共に用いて説明され得る。これらの用語は、実施形態に関連して説明される特定の機能、構造、または特性が少なくとも一実施形態に含まれることを意味する。本明細書の様々な箇所において「一実施形態において」という文言が現われても、全てが同一の実施形態を必ずしも指すわけではない。更に、いくつかの実施形態は、「結合される」および「接続される」という表現を、それらの派生語と共に用いて説明され得る。これらの用語は、互いに同義語として必ずしも意図されるものではない。例えば、いくつかの実施形態は、2またはそれより多くの要素が互いに直に物理的または電気的に接触することを示すべく、「接続される」および/または「結合される」という用語を用いて説明される場合がある。しかし、「結合される」という用語は、2またはそれより多くの要素が互いに直に接触しないが、なおも互いに協働または相互作用することも意味する場合がある。
本開示の要約は、読者が技術的開示の本質を速やかに確認することを可能にするべく提供されていることが強調される。本開示は、特許請求の範囲またはその意味を解釈または限定するべく用いられるものではないとの理解に従うものと考えられる。更に、上述の詳細な説明において、様々な機能は、本開示を効率的なものにする目的で単一の実施形態に互いにグループ化されることを見て取ることができる。本開示のこの方法は、特許請求される実施形態が各請求項において明示的に列挙されるものより多くの機能を必要とするとの意図を反映すると解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、開示される単一の実施形態の全ての機能よりは少ないものに存する。従って、以下の特許請求の範囲は、本明細書の詳細な説明に組み込まれ、各請求項は、別個の実施形態として独立している。添付の特許請求の範囲において、「含む」および「その中で(in which)という用語は、「備える」および「そこで(wherein)」という各用語と同等の平易な英語として各々用いられる。更に、「第1」、「第2」、「第3」等の用語は、単に表示として用いられ、それらの対象に数値的要求を課すことを意図するものではない。
上記された事柄は、開示されるアーキテクチャの複数の例を含む。勿論、複数のコンポーネントおよび/または方法論の考えられるあらゆる組み合わせを記載することは可能ではないが、当業者は、多くの更なる組み合わせおよび変形が可能であることを認識し得る。従って、新規なアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内に包含される全てのそのような変更形態、修正形態、および変形形態を含むことを意図する。