(57)【特許請求の範囲】
【請求項１】
３６０度バーチャルリアリティ（３６０ＶＲ）ビデオを表示する方法であって、
ビデオフレームのシーケンス内である複数のエンコードされたビデオフレームを受信することであって、各ビデオフレームはピクセルのブロックのセットを含み、ビデオフレームの前記シーケンスはマスタフレーム及びスレーブフレームを含み、各スレーブフレームは、エンコーディングのために前記マスタフレームのうち少なくとも１つを参照する、ことと、
ユーザインターフェースを通してユーザにより任意的に選択されるサブ領域を指定する指定を受信することであって、前記ユーザインターフェースは、前記ユーザにより見られる前記任意的に選択されたサブ領域を示すユーザ入力を受信し、よって前記指定を作成し、前記任意的に選択されたサブ領域は、前記複数のビデオフレーム内の特定のビデオフレームの一部だけである、ことと、
前記特定のビデオフレームがマスタフレームであるとき、前記特定のビデオフレーム内のすべてのピクセルのブロックをデコードすることにより、前記特定のビデオフレームをフルにデコードすることと、
前記特定のビデオフレームがスレーブフレームであるとき、前記指定により指定された前記任意的に選択されたサブ領域を包含する前記特定のビデオフレーム内の前記ピクセルのブロックのサブセットをデコードすることにより、前記特定のビデオフレームを部分的にデコードすることであって、前記ピクセルのブロックの前記サブセットをデコードすることは、フルにデコードされたマスタフレームを参照することを含む、ことと、
表示のために前記特定のビデオフレームの前記デコードされたピクセルのブロックを記憶することと、
を含み、
前記ピクセルのブロックの前記サブセットに含まれる各々のピクセルのブロックはインター予測されたブロックであり、あるいは、前記ピクセルのブロックの前記サブセットに含まれるいずれかのイントラ予測されたブロックに関して、前記いずれかのイントラ予測されたブロックのすべての近隣ブロックはインター予測されたブロックである、方法。
【請求項２】
各ビデオフレームは、データユニットのセットとしてエンコードされ、前記特定のビデオフレームを部分的にデコードすることは、前記選択されたサブ領域を包含するピクセルのブロックの前記サブセットをデコードするのに必要とされる前記特定のビデオフレームのエンコードされたデータユニットのサブセットをデコードすることを含む、請求項１に記載の方法。
【請求項３】
前記エンコードされたデータユニットの各々は、ビデオフレームのスライス又はタイルである、請求項２に記載の方法。
【請求項４】
ピクセルのブロックの前記サブセット内のピクセルのブロックのいずれも、イントラ予測されたブロックでない、請求項１に記載の方法。
【請求項５】
前記特定のビデオフレームは、球状フォーマット、又は、立方体の異なる面に各々対応する複数の立方体面を含む立方体フォーマットである、請求項１に記載の方法。
【請求項６】
前記特定のビデオフレームは、立方体フォーマットであり、前記複数の立方体面は、（ｉ）６つの立方体面の、単一の列、（ｉｉ）各々３つの立方体面の、２つの列、又は（ｉｉｉ）各々３つの立方体面の、２つの行、において配置される、請求項５に記載の方法。
【請求項７】
３６０度バーチャルリアリティ（３６０ＶＲ）ビデオを表示する装置であって、
ビデオフレームのシーケンス内である複数のエンコードされたビデオフレームを受信するように構成された通信回路であって、各ビデオフレームはピクセルのブロックのセットを含み、ビデオフレームの前記シーケンスはマスタフレーム及びスレーブフレームを含み、各スレーブフレームは、エンコーディングのために前記マスタフレームのうち少なくとも１つを参照する、通信回路と、
ユーザインターフェースと、
前記ユーザインターフェースを通してユーザにより任意的に選択されるサブ領域を指定する指定を受信するように構成されたデコーダ回路であり、前記ユーザインターフェースは、前記ユーザにより見られる前記任意的に選択されたサブ領域を示すユーザ入力を受信し、よって前記指定を作成するように構成され、前記任意的に選択されたサブ領域は、前記複数のビデオフレーム内の特定のビデオフレームの一部だけであり、さらに、前記指定に基づいて前記特定のビデオフレームをデコードするように構成された前記デコーダ回路であって、
前記特定のビデオフレームがマスタフレームであるとき、前記デコーダ回路は、前記特定のビデオフレーム内のすべてのピクセルのブロックをデコードすることにより、前記特定のビデオフレームをフルにデコードし、
前記特定のビデオフレームがスレーブフレームであるとき、前記デコーダ回路は、前記指定により指定された前記任意的に選択されたサブ領域を包含する前記特定のビデオフレーム内の前記ピクセルのブロックのサブセットをデコードすることにより、前記特定のビデオフレームを部分的にデコードすることであって、前記ピクセルのブロックの前記サブセットをデコードすることは、フルにデコードされたマスタフレームを参照することを含む、デコーダ回路と、
表示のために前記特定のビデオフレームの前記デコードされたピクセルのブロックを記憶するように構成されたメモリ回路と、
を含み、
前記ピクセルのブロックの前記サブセットに含まれる各々のピクセルのブロックはインター予測されたブロックであり、あるいは、前記ピクセルのブロックの前記サブセットに含まれるいずれかのイントラ予測されたブロックに関して、前記いずれかのイントラ予測されたブロックのすべての近隣ブロックはインター予測されたブロックである、装置。
【請求項８】
各ビデオフレームは、データユニットのセットとしてエンコードされ、前記特定のビデオフレームを部分的にデコードすることは、前記選択されたサブ領域を包含するピクセルのブロックの前記サブセットをデコードするのに必要とされる前記特定のビデオフレームのエンコードされたデータユニットのサブセットをデコードすることを含む、請求項７に記載の装置。
【請求項９】
前記エンコードされたデータユニットの各々は、ビデオフレームのスライス又はタイルである、請求項８に記載の装置。
【請求項１０】
ピクセルのブロックの前記サブセット内のピクセルのブロックのいずれも、イントラ予測されたブロックでない、請求項７に記載の装置。
【請求項１１】
前記特定のビデオフレームは、球状フォーマット、又は、立方体の異なる面に各々対応する複数の立方体面を含む立方体フォーマットである、請求項７に記載の装置。
【請求項１２】
前記特定のビデオフレームは、立方体フォーマットであり、前記複数の立方体面は、（ｉ）６つの立方体面の、単一の列、（ｉｉ）各々３つの立方体面の、２つの列、又は（ｉｉｉ）各々３つの立方体面の、２つの行、において配置される、請求項１１に記載の装置。
【請求項１３】
コンピュータに請求項１乃至６のうちいずれか１項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に電子装置におけるビデオエンコーディング及びデコーディングに関し、より詳細には、任意のビュー角度又は領域を可能にするバーチャルリアリティビデオアプリケーションに関する。
【０００２】
関連特許出願の相互参照
本出願は、2015年10月13日に申請された米国仮出願第62/240,693号、2016年10月7日に申請された米国仮出願第15/289,092号、及び2015年12月14日に申請された米国仮出願第62/266,764号の優先の利益を主張し、上記出願はその全体を本明細書において参照により援用される。
【背景技術】
【０００３】
本明細書において別段明示されない限り、本セクションに説明されるアプローチは下記で記載される請求項に対する従来技術でなく、本セクションに含めることにより従来技術であるとは認められない。
【０００４】
３６０度バーチャルリアリティ（360-degree  virtual  reality）（３６０ＶＲ）は、変造され、拡張され、又は置換された環境のオーディオビジュアルシミュレーションである。ビジュアルリアリティビデオはユーザを囲み、ユーザがいかなる方向においても又はいかなる任意のビュー角度でも、ちょうど自身が実生活においてできるように、周りを見ることを可能にする。３６０ＶＲビデオは、様々な適用、例えばエンターテインメント、パイロット訓練、手術、及び宇宙又は深海における探索などに対して、印刷及びパノラマバーチャルツアー生成における使用のための格別の高品質及び高解像度のパノラマビデオを生成する。
【発明の概要】
【０００５】
下記概要は、単に例示であり、決して限定であるようには意図されない。すなわち、下記概要は、本明細書に説明される新規かつ非自明の手法の概念、ハイライト、恩恵、及び利点を紹介するよう提供される。下記詳細な説明において、すべてでなく選択された実装がさらに説明される。ゆえに、下記概要は、請求される対象事項の必須の特徴を識別するようには意図されず、請求される対象事項の範囲を決定することにおける使用についても意図されない。
【０００６】
本開示のいくつかの実施形態は、ビデオのサブ領域がビューイングのために選択されるときにビデオフレームを部分的にデコードする装置及び方法を提供する。具体的に、本開示に従う方法又は装置は、サブ領域を表示するのに不要として識別されるデータユニット及びピクセルブロックをバイパスする間、サブ領域を表示するのに必要とされるビデオフレームのデータユニット及びピクセルブロックを識別し、デコードすることができる。
【０００７】
いくつかの実施形態において、デコーダは、ビデオフレームのシーケンス内である複数のエンコードされたビデオフレームを受信することができ、各ビデオフレームは、ピクセルのブロックのセットを含む。ビデオフレームのシーケンスは、マスタフレームと、エンコーディングのためにマスタフレームを参照するスレーブフレームとを含むことができる。デコーダは、複数のビデオフレーム内の特定のビデオフレームのサブ領域を選択する指定を受信することができる。特定のビデオフレームがマスタフレームであるとき、デコーダは特定のフレームをフルにデコードする。特定のビデオフレームがスレーブフレームであるとき、デコーダは、上記指定により選択されたサブ領域を包含する特定のビデオフレーム内のピクセルのブロックのサブセットをデコードすることにより、特定のフレームを部分的にデコードすることができる。デコーダは、次いで、表示のために特定のビデオフレームの上記デコードされたピクセルのブロックを記憶することができる。
【０００８】
いくつかの実施形態において、エンコーダは、例えば、スレーブフレーム内のイントラ符号化された及び／又はイントラ予測されたブロックの数を最小化することにより、部分デコーディングによる性能向上を最大化するエンコードされたビデオを生成するように制約できる。いくつかの実施形態において、エンコーダは、スレーブフレーム内でインター予測を用いることにより、イントラ符号化された及び／又はイントラ予測されたブロックの数を最小化することができる。いくつかの実施形態において、エンコーダは、イントラ予測されたブロックの近隣ブロックがすべてインター予測されたブロックである場合、イントラ予測されたブロックを許容することができる。
【０００９】
いくつかの実施形態において、ビデオエンコーダが、球状フォーマット又は立方体フォーマットである３６０ＶＲビデオフレームを受信することができる。受信された３６０ＶＲビデオフレームが立方体フォーマットであるとき、ビデオフレームは、立方体の異なる面に各々対応する複数の立方体面を有する。ビデオエンコーダは、複数の立方体面を再配置することにより、３６０ＶＲビデオフレームを再フォーマットすることができる。再フォーマットされたビデオフレームの立方体面は、（ｉ）６つの面の、単一の列、（ｉｉ）各々３つの立方体面の、２つの列、又は（ｉｉｉ）各々３つの立方体面の、２つの行、において配置される。
【図面の簡単な説明】
【００１０】
添付図面は、本開示のさらなる理解を提供するよう含まれ、本開示に組み込まれ、本開示の一部を構成する。図面は、開示の実装を例示し、説明と併せて、本開示の原理を説明する役割を果たす。図面は必ずしも縮尺どおりでなく、本開示の概念を明りょうに例示するためにいくつかのコンポーネントが実際の実装におけるサイズから外れた割合で図示され得ることが十分理解できる。
【図１】任意的に選択されたビューイング角度又は領域に基づいてビデオフレームの部分デコーディングを実行するビデオデコーディングシステムを例示する。
【図２】指定されたビュー領域に基づく一例示的なビデオフレームの部分デコーディングを概念的に例示する。
【図３】ビデオフレームを異なるタイプのエンコードされたデータユニットに区分する異なるビデオエンコーディング標準のもとでの部分デコーディングを例示する。
【図４】指定されたビュー領域のためのビデオフレームのシーケンスの部分デコーディングを例示する。
【図５】マスタフレームとスレーブフレームとの間の予測構造のいくつかのタイプを例示する。
【図６】マスタフレームとスレーブフレームとの間の予測構造のいくつかのタイプを例示する。
【図７】任意的に指定されたビュー領域に従いスレーブフレームの部分デコーディングを実行する一例示的なデコーダを例示する。
【図８】任意の指定されたビューイング領域に基づくビデオフレームの部分デコーディングのための処理を概念的に例示する。
【図９】任意の指定されたビューイング領域に基づくビデオフレームの部分デコーディングのための処理を概念的に例示する。
【図１０】部分デコーディングにより性能を最大化するエンコードされたビデオを生成するよう制約できる一例示的なビデオエンコーダを例示する。
【図１１】任意のビュー領域のための部分デコーディングのために最適化されたビデオをエンコードする処理を概念的に例示する。
【図１２】球状フォーマット及び立方体フォーマットにおける一例示的な３６０ＶＲイメージを例示する。
【図１３】３６０ＶＲイメージの記憶フォーマットをより詳細に例示する。
【図１４】フルサイズ３６０ＶＲイメージより狭いラインバッファの効率的利用を可能にする立方体３６０ＶＲイメージの種々のレイアウトを例示する。
【図１５】６つの立方体３６０ＶＲ面を狭いラインバッファの使用を可能にする狭い構成に再配置するビデオエンコーダを例示する。
【図１６】より狭いラインバッファを使用する間、連続的立方体フォーマットにおける生の３６０ＶＲビデオソースを受信するビデオエンコーダを例示する。
【図１７】エンコーディングの間に１列レイアウトに再配置される３６０ＶＲ立方体フレームの符号化を例示する。
【図１８】再配置されたフレームの、スライス、タイル、又はサブビデオへの区分化を例示する。
【図１９】エンコーディングの間に２行３列レイアウトに再配置される３６０ＶＲ立方体フレームの符号化を例示する。
【図２０】再配置された立方体面を有する３６０ＶＲビデオをデコードするデコーダを例示する。
【図２１】立方体フォーマットにおける３６０ＶＲビデオをエンコード及びデコードする処理を概念的に例示する。
【図２２】本開示のいくつかの実施形態が実装される電子システムを概念的に例示する。
【図２３】一例示的なデコーダ装置を表す。
【図２４】一例示的なエンコーダ装置を表す。
【発明を実施するための形態】
【００１１】
下記詳細な説明において、関連する教示の完全な理解を提供するように、多数の具体的詳細が例として明記される。本明細書に説明される教示に基づくいかなる変形、派生、及び／又は拡張も、本開示の保護範囲内である。いくつかの例において、本明細書に開示される１つ以上の例示的な実装に関する周知の方法、手順、コンポーネント、及び／又は回路は、本開示の教示の態様を不要に分かりにくくすることを回避するように、詳細無しに比較的高いレベルで説明されることがある。
【００１２】
３６０ＶＲビデオは、ユーザを囲む視覚的環境をエンコードするが、ユーザは、典型的に、特定のビュー角度（view  angle）でビデオを見ている。換言すると、ユーザがビデオの表示エリア全体を見るよう予期される従来のフラットビデオと異なり、３６０ＶＲのユーザは、ビデオの表示エリア全体のうち特定のサブ領域を見るよう予期される。こうしたビュー領域は、各フレームのうち、通常比較的小さい部分的エリアである。フレームの残りのエリアは、フレーム全体がデコードされ、かつビューイングに利用可能である場合でさえ、見られないことになる。ゆえに、ユーザによりまったく見られなかったピクセルをデコードすることに消費されたコンピューティングリソースは、無駄にされる。
【００１３】
Ｉ．任意ビュー領域の部分デコーディング
本開示のいくつかの実施形態は、ビデオのサブ領域がビューイングのために選択されるときにビデオフレームを部分的にデコードする装置及び方法を提供する。具体的に、上記装置及び方法は、サブ領域を表示するのに不要として識別されるデータユニット及びピクセルブロックをバイパスする（bypassing）間、サブ領域を表示するのに必要とされるビデオフレームのデータユニット及びピクセルブロックを識別し、デコードする。部分デコーディングは、任意選択されたサブ領域のためであるので、さらに領域デコーディングとして参照される。
【００１４】
いくつかの実施形態について、図１は、任意選択されたビューイング角度又は領域に基づくビデオフレームの部分デコーディングを実行するビデオデコーディングシステム１００を例示する。このビデオデコーディングシステムは、エンコードされたソース１１０からのビデオフレームをデコードし、ディスプレイ１４０に、指定されたビュー角度におけるデコードされたビデオを表示する。デコーディングシステム１００は、ビューイング角度のビュー領域指定１０５に基づいて部分デコーディングを実行する。例示されるように、ビデオデコーディングシステム１００は、エンコードされたビデオソース１１０、デコーダ１２０、表示バッファ１３０、ユーザインターフェース１５０、及び表示デバイス１４０を含む。いくつかの実施形態において、ビデオデコーディングシステム１００及びその様々なコンポーネントは、バーチャルリアリティシステム（例えば、バーチャルリアリティゴーグル１９９）の一部である。例えば、ユーザインターフェース１５０は、ユーザの動きを感知及び記録するバーチャルリアリティゴーグルの位置及び動きセンサの集合に対応し、表示デバイス１４０は、バーチャルリアリティゴーグルのビューイング画面に対応する。デコーダ１２０、表示バッファ１３０、及びエンコードされたビデオソース１１０は、ゴーグルに埋め込まれた処理及びメモリ回路コンポーネントにより実装される。
【００１５】
エンコードされたビデオソース１１０は、エンコードされたビデオ１１５を記憶する。いくつかの実施形態において、エンコードされたビデオソース１１０は、エンコードされたビデオ１１５を記憶する記憶デバイスを含む。いくつかの実施形態において、エンコードされたビデオソース１１０は、有線又は無線の通信媒体を通して外部ソースからエンコードされたビデオ１１５を受信する通信デバイスを含む。
【００１６】
エンコードされたビデオ１１５は、ビデオを表すデータである。ビットストリームの形式におけるエンコードされたビデオは、ビデオエンコーディング標準、例えばＨ．２６ｘ（例えば、Ｈ．２６４、Ｈ．２６５等）、ＶＰｘ（例えば、ＶＰ８、ＶＰ９等）などに従って、圧縮された形式でビデオをエンコードしている。エンコードされたビデオは、様々なエンコードされたデータユニット、例えば、ピクチャのグループ（ＧＯＰ）、フレーム、スライス、タイル、及び／又はピクセルブロックなどに編成されている。いくつかのビデオ標準について、エンコードされたデータユニットは、階層に編成されている。例えば、ビデオフレームのシーケンスが、１つ以上のエンコードされたフレームを含むことができ、エンコードされたフレームが、１つ以上のスライス（又は、タイル）を含むことができ、スライスが、１つ以上のピクセルブロックを含むことができる。
【００１７】
エンコードされたデータユニットのいくつかは、他のエンコードされたデータユニットから独立してデコードできる。例えば、エンコードされたフレームは、エンコーディング又はデコーディングのために同じフレームにおける他のスライス（又は、タイル）に依存しないスライス（又は、タイル）を有することができる。こうしたエンコードされたフレームをデコードするとき、デコーダは、自由に、スライスを並列にデコードし、あるいはより前のスライスをスキップして後のスライスを直接デコードすることができる。
【００１８】
デコーダ１２０は、エンコードされたビデオ１１５を受信し、伸張（decompression）及び／又はデコーディングを実行する。いくつかの実施形態において、デコーダ１２０は、エンコードされたビデオ１１５内の様々なエンコードされたデータユニットを伸張し、次いで、伸張されたデータユニットのデータからピクセルブロックを再構成する。再構成されたピクセルブロックは、次いで、表示バッファ１３０に置かれて、表示デバイス１４０により表示される。
【００１９】
ユーザインターフェース１５０は、ユーザにより見られるサブ領域又はユーザのビューイング角度を示すユーザ入力を（例えば、バーチャルリアリティゴーグルの動き又は位置によって、又は他のユーザインタラクションによって）受信し、よって、ビュー領域指定１０５を作成する。ビュー領域指定１０５は、表示エリア内のビュー領域の位置を指定する。（いくつかの実施形態において、ビュー領域指定１０５は、ビュー領域のサイズ及び形状をさらに指定する。）ユーザインターフェース１５０は、ビュー領域指定１０５をデコーダ１２０及び表示デバイス１４０に提供する。次に、デコーダ１２０は、必要なデータユニット及びピクセルブロックをデコードして、ビュー領域指定１０５により指定されるビュー領域を再構成し、表示デバイス１４０は、指定されたビュー領域を表示する。
【００２０】
図２は、ビュー領域指定（例えば、１０５）に基づく例示的なビデオフレーム２００の部分デコーディングの一例示的な実施形態を概念的に例示する。例示的なビデオフレーム２００は、エンコードされたビデオ１１５により提供される、フル解像度ビデオフレームである。エンコードされたビデオ１１５が、３６０ＶＲビデオのものである場合、例示的なビデオフレーム２００は、ユーザを囲むバーチャルリアリティ表示エリア全体を表す。部分デコーディングは、ビデオデコーディングシステム１００のデコーダ１２０により実行される。
【００２１】
例示されるように、ビデオフレーム２００は、ピクセルブロックの２次元アレイに分割される。各ピクセルブロックは、ピクセルの２次元アレイである。Ｈ．２６４フォーマットに従いエンコードされたビデオについて、ピクセルブロックはマクロブロック（１６×１６ピクセル）として参照される。Ｈ．２６５フォーマットにおいてエンコードされたビデオについて、ピクセルブロックは６４×６４符号化ツリーユニットとして参照でき、該符号化ツリーユニットは、四分木として細分化できる。ＶＰ９について、ピクセルブロックは６４×６４スーパーブロックとして参照される。
【００２２】
ビデオフレーム２００は、いくつかの異なる区分（partitions）２１１〜２１４にさらに分割され、各区分は、エンコードされたビデオ１１５内のそれぞれのエンコードされたデータユニットに対応する。例示的なビデオフレーム２００について、エンコードされたデータユニットの各々は、スライスに対応する。（下記で説明される図３が、各々のエンコードされたデータユニットがＨ．２６５におけるタイル又はＶＰ９におけるビデオのグループ内のサブビデオに対応する、例示的なビデオフレームを例示する。）各々のエンコードされたデータユニットは、区分内のピクセルブロックを再構成するためのエンコードされたデータを含む。
【００２３】
例示されるように、ビュー領域指定１０５は、ビュー領域２０５を指定し、ビュー領域２０５は、ビデオフレーム２００の全体のうちの一部分を占める。ビュー領域２０５は、（網掛けピクセルブロックとして例示される）ピクセルブロックのセット２２０、並びにエンコードされたデータユニット２１２及び２１３に重なる。ビュー領域２０５のためにフレーム２００を部分的にデコードするとき、デコーダ１２０は、エンコードされたデータユニット（スライス）２１２及び２１３を伸張し、ピクセルブロックのセット２２０を再構成する。他のピクセルブロック及びエンコードされたデータユニット（２１１及び２１４）は、部分デコーディング処理の間、バイパスされて、コンピューティングリソースが節減される。
【００２４】
図２の例において、指定されたビュー領域２０５のためにビデオフレーム２００を部分的にデコードするとき、デコーダ１２０は、スライス２１２全体を伸張する。なぜならば、スライス２１２の最後のピクセルブロック２２１が、指定されたビュー領域２０５に重なるピクセルブロックの１つであるからであり、ゆえに、デコーダは、スライス２１２全体を伸張して、ピクセルブロック２２１を再構成するのに必要なデータを取得する。（スライス２１２全体が、網掛けで例示される。）一方、スライス２１３の最後の２つのピクセルブロック２２２及び２２３は、指定されたビュー領域２０５に重ならない。ゆえに、これら２つのピクセルブロックを再構成する必要はない。結果として、デコーダは、ピクセルブロック２２４（これは、ビュー領域２０５に重なるスライス２１３内の最後のピクセルブロックである）を再構成するための、エンコードされたデータユニット２１３からの必要データを有したらすぐ、エンコードされたデータユニット２１３を伸張しなくてもよい。
【００２５】
上述のように、異なるビデオエンコーディング標準は、ビデオフレームを複数のエンコードされたデータユニットに区分する（partition）ための異なる方法を提供する。しかしながら、必要なエンコードされたデータユニット及びピクセルブロックを識別し、デコードするという同じ原理が、依然として適用される。図３は、ビデオフレームを異なるタイプのエンコードされたデータユニットに区分する異なるビデオエンコーディング標準のもとでの部分デコーディングを例示する。
【００２６】
図３は、３つの異なるタイプの区分のための、３つの異なるビデオフレーム３０１、３０２、及び３０３の部分デコーディングを例示する。ビデオフレームの各区分は、同じフレーム内の他の区分から独立してデコードできるエンコードされたデータユニットである。ビデオフレーム３０１は、（Ｈ．２６４又はＨ．２６５の）スライス３１１〜３１４に分割されている。ビデオフレーム３０２は、（Ｈ．２６５の）タイル３２１〜３２９に分割されている。ビデオフレーム３０３は、（Ｈ．２６４、Ｈ．２６５、又はＶＰ９の）サブビデオ３３１〜３３５に分割されている。本図は、ビュー領域３５０を識別するビュー領域指定１０５に応答してこれらフレームの各々が部分的にデコードされることを示す。
【００２７】
例示されるように、ビデオフレーム３０１について、部分デコーディング動作は、スライス３１１及び３１４のデコーディングをスキップする間、スライス３１２及び３１３をデコードし、なぜならば、スライス３１１及び３１４はビュー領域３５０に重ならないが、スライス３１２及び３１３は重なるからである。ビデオフレーム３０２について、部分デコーディング動作は、タイル３２１、３２２、３２３、３２６、及び３２９のデコーディングをバイパスする間、タイル３２４、３２５、３２７、及び３２８をデコードする。ビデオフレーム３０３について、部分デコーディング動作は、サブビデオ３３１、３３２、及び３３３のデコーディングをバイパスする間、サブビデオ３３４及び３３５をデコードする。
【００２８】
より大きい符号化効率を達成するために、大抵のビデオエンコーディング標準は、予測符号化を採用し、すなわち、別のビデオフレーム内（インター予測）か又は同じフレーム内の他の場所（イントラ予測）のピクセルデータを参照することによりピクセルブロックをエンコードする。対照的に、イントラ符号化は、ブロックの外部の情報を参照することなくピクセルブロック内の情報（例えば、変換サンプル）のみ用いることによりピクセルブロックのピクセルをエンコードする。従来的に、別のフレームを参照しない（すなわち、すべてのピクセルブロックがイントラ符号化又はイントラ予測される）フレームは、Ｉフレームとして参照され、そのピクセルブロックが時間的過去のフレームを参照することができるフレームは、Ｐフレームとして参照され、そのピクセルブロックが時間的過去及び時間的未来の双方のフレームを参照することができるフレームは、Ｂフレームとして参照される。エンコードされたビデオは、典型的に、Ｉ、Ｐ、及びＢタイプのフレームを含むビデオフレームのシーケンスである。
【００２９】
いくつかの実施形態において、任意指定されたビュー領域のための部分デコーディングは、予測符号化を使用するビデオシーケンスに対して実施される。こうした実施形態のいくつかにおいて、ビデオシーケンス内のフレームは、マスタフレーム又はスレーブフレームとして分類される。マスタフレームは、いかなる指定ビュー領域にもかかわらず、フルに（fully）デコードされるフレームであり、スレーブフレームは、ビュー領域指定に基づき部分的にデコードできるフレームである。スレーブフレームのピクセルブロックは、他のスレーブフレームでなく、マスタフレーム内のピクセルを（動きベクトルを用いることにより）参照するインター予測されたブロックとしてエンコードできる。
【００３０】
図４は、指定されたビュー領域のためのビデオフレームのシーケンス４００の部分デコーディングを例示する。例示されるように、ビデオフレームのシーケンス４００は、マスタフレームとスレーブフレームとの混合を有し、マスタフレーム４１１〜４１４とスレーブフレーム４２１とを含む。ビデオデコーディングシステムは、ビューイング領域４０５のためのビューイング領域指定を受信している。
【００３１】
シーケンス４００内のマスタフレームの各々は、指定されたビューイング領域にかかわらず、フルにデコードされる。ビューイング領域の指定がリアルタイムでユーザにより任意に決められるため、マスタフレームの各々をフルにデコードすることが必要であり、なぜならば、マスタフレームのいずれの領域も、後続スレーブフレームの指定されたビューイング領域により参照される可能性があるからである。
【００３２】
図４は、シーケンス４００内の一例示的なスレーブフレーム４２１の部分デコーディング動作を例示する。スレーブフレーム４２１は、再構成のための参照としてマスタフレーム４１２及び４１３を使用する。スレーブフレーム４２１は、指定されたビュー領域４０５に基づいて部分的にデコードされ、すなわち、ビュー領域４０５に重なるスレーブフレーム４２１内のピクセルブロックのみがデコードされ、再構成される（網掛けで例示される）。ピクセルブロック４３１は、ビュー領域４０５に重なるピクセルブロックの１つであり、ゆえに、部分デコーディング動作によりデコードされ、再構成される。例えば、ピクセルブロック４３１は、マスタフレーム４１２及び４１３内の領域４４１、４４２、及び／又は４４３（必ずしもピクセルブロックでない）内のピクセルを参照するインター予測されたブロックである。マスタフレーム４１２及び４１３内の領域４４１、４４２、及び／又は４４３は必ずしも指定されたビュー領域に重ならないことが、留意に値する。ゆえに、デコーダは、指定されたビュー領域にかかわらず、マスタフレームをフルにデコードする。
【００３３】
図５及び図６は、マスタフレームとスレーブフレームとの間の予測構造のいくつかのタイプを例示する。図５は、異なるマスタ‐スレーブ予測構造を有する２つのビデオシーケンス５０１及び５０２を例示する。ビデオシーケンス５０１は、各スレーブフレームが少なくとも２つのマスタフレーム（時間的過去と時間的未来）を参照する双方向予測を用いることによりエンコードされる一般的な予測構造を有し、すなわち、各スレーブフレームはＢフレームである。ビデオシーケンス５０２は、各スレーブフレームが前のマスタフレームに基づいて前方予測のみ用いることによりエンコードされる低レイテンシ予測構造を有し、すなわち、各スレーブフレームはＰフレームである。
【００３４】
図６は、異なるマスタ‐スレーブ予測構造を有する２つの他のビデオシーケンス６０１及び６０２を例示する。ビデオシーケンス６０１は、各スレーブフレームが予測参照として時間的に最も近いマスタフレームのみ使用する代替的な予測構造を有する。ビデオシーケンス６０２は、シーン変化の情報に従い、ビデオエンコーダがスレーブフレームをエンコードするためにいずれのマスタフレームが参照されることになるかを決定することができる適応的な予測構造を有し、すなわち、スレーブフレームは、時間的にスレーブフレームと特定のマスタフレームとの間にシーン変化がある場合、該特定のマスタフレームを参照しない。
【００３５】
スレーブフレームを部分的にデコードすることは、指定されたビュー領域の外部であり、かつユーザにより見られないであろうスレーブフレームの部分をデコードする必要のあることから、デコーディングシステムを緩和する。マスタフレームは、依然としてフルにデコードされる必要があるため、部分デコーディングによる性能向上は、指定されたビュー領域のサイズと、マスタフレームの周期とに基づく。例えば、ビデオの解像度が３８４０×２１６０であり、指定されたビュー領域のサイズが１２８０×７２０であり（このことは、領域１５３６×８６４を占めるデコードされたピクセルブロックを必要とする可能性がある）、かつマスタフレーム周期が６である（すなわち、シーケンス内に６フレームごとに１つのマスタフレームがある）場合、ピクセルブロックの３０％のみがデコードされる必要があることになる。
【００３６】
いくつかの実施形態について、図７は、任意的に指定されたビュー領域に従いスレーブフレームの部分デコーディングを実行する一例示的なデコーダを例示する。具体的に、本図は、デコーディングシステム１００のデコーダ１２０をより詳細に例示する。
【００３７】
デコーダ１２０は、エンコードされたデータユニットを伸張し、かつピクセルブロックを再構成するコンポーネントを含む。様々なコンポーネントが、ユーザインターフェース１５０により提供されるビュー領域指定１０５に従って動作する。
【００３８】
例示されるように、デコーダ１２０は、エンコードされたビデオを（例えば、ビットストリーム形式で）受信し、デコードされたビデオを表示デバイス１４０により表示されるように表示バッファ１３０に記憶する。デコーダ１２０は、パーサ７１０、ピクセルブロックデコーダ７２０、及び参照フレームバッファ７３０を含む。ピクセルブロックデコーダ７２０は、イントラ予測器（predictor）７４０及びインター予測器７５０を含む。
【００３９】
パーサ７１０は、ビットストリーム内のエンコードされたデータユニットをアンパックすることに関する。いくつかのビデオ標準について、エンコードされたデータユニットは、エントロピー符号化に基づいて可変長符号化（ＶＬＣ）によりロスレス圧縮されている。パーサは、ゆえに、可変長デコーダ（ＶＬＤ）としても参照される。種々のビデオ標準が、種々のタイプのエントロピー符号化を使用する。例えば、Ｈ．２６４はハフマン符号化を利用し、Ｈ．２６５はＣＡＢＡＣ（コンテキスト適応２値算術符号化（context  adaptive  binary  arithmetic  coding））を利用する。最先端のビデオ標準の多くは、ＣＡＢＡＣベースのエントロピー符号化を利用して、より少ない符号化ビットを有する。フレーム（具体的に、スレーブフレーム）を部分的にデコードするとき、パーサ７１０は、指定されたビュー領域に重なるいかなるピクセルブロックも含まないエンコードされたデータユニットをスキップする。
【００４０】
ピクセルブロックデコーダ７２０は、エンコードされたデータユニット内に記憶された（及び、該データユニットから展開された）情報に基づいてピクセルブロックを再構成することに用いられる。ピクセルブロックデコーダ７２０は、ピクセルブロックのいくつかをデコードするために予測にさらに依存する。イントラ予測されたピクセルブロックについて、ピクセルブロックデコーダ７２０は（イントラ予測器７４０を用いることにより）、同じフレーム内の隣接ピクセルブロックを参照することによりピクセルブロックを再構成する。インター予測されたピクセルブロックについて、ピクセルブロックデコーダ７２０は（インター予測器７５０を用いることにより）、他のフレームを（例えば、動きベクトルと動き補償の実行とを通して）参照することによりピクセルブロックを再構成する。
【００４１】
参照フレームバッファ７３０は、デコードされたフレーム（及び、デコードされたフレームの再構成されたピクセルブロック）を記憶する。部分デコーディングを実行するとき、マスタフレームは完全にデコードされ、次いで参照フレームバッファ７３０に記憶されて、スレーブフレームのピクセルブロックを再構成するための参照フレームとしての役割を果たす。
【００４２】
上述されたように、デコーダの様々なコンポーネントが、ビュー領域指定１０５に従って部分デコーディング動作を実行し、ビュー領域指定１０５は、ユーザインターフェース１０５を通してユーザにより任意的に選択されるビュー領域を指定する。ビュー領域指定１０５は、次に、パーサ７１０及びピクセルブロックデコーダ７２０の動作を制御するのに用いられる。ビュー領域指定１０５は、表示デバイス１４０にさらに転送され、ゆえに、表示デバイス１４０は、デコードされたビデオフレームのいずれの領域が表示のためのビュー領域として選択されているかが分かる。
【００４３】
ビデオデコーダ１００は、指定されたビュー領域を表示するのに必要なエンコードされたデータユニットとピクセルブロックとを識別する。図７において、この機能性は、部分デコーディングコントローラモジュール１２５として概念的に例示され、部分デコーディングコントローラモジュール１２５は、ビュー領域指定１５０を取り、いずれのエンコードされたデータユニットが伸張される必要があるかについてパーサ７１０に、いずれのピクセルブロックが再構成される必要があるかについてピクセルデコーダ７２０に命令する。いくつかの実施形態において、いずれのエンコードされたデータユニットを伸張すべきかを識別する機能性はパーサ７１０により実行され、パーサ７１０がビュー領域指定１５０を使用して、エンコードされたデータユニットがデコードされる必要があり、あるいはスキップできるかどうかを決定する。同様に、いずれのピクセルブロックがデコードされる必要があるかを識別する機能性はピクセルブロックデコーダ７２０により実行され、ピクセルブロックデコーダ７２０がビュー領域指定１５０を使用して、ピクセルブロックが再構成される必要があり、あるいはスキップできるかどうかを決定する。パーサ７１０及びピクセルブロックデコーダ７２０の双方は、現在デコードされているフレームがマスタフレームであるかスレーブフレームであるかを認識して、マスタフレームがフルにデコードされることを保証する。
【００４４】
図８及び図９は、任意の指定されたビューイング領域に基づくビデオフレームの部分デコーディングのための処理８００及び９００を概念的に例示する。いくつかの実施形態において、デコーディングシステム１００を実装する１つ以上の処理ユニットが、処理８００又は処理９００を実行する。いくつかの実施形態において、処理８００又は９００を実行する処理ユニットは、デコーディングシステム１００の様々なコンポーネント、例えばパーサ７１０、ピクセルブロックデコーダ７２０、部分デコーディングコントローラ１２５等に対応するモジュールを有するソフトウェアを実行することにより、上記を行う。結果が実質的に同じであるという条件で、処理のステップは図８及び図９に示される正確な順序で実行される必要はないことが留意される。
【００４５】
処理８００は、デコーディングシステム１００がエンコードされたビデオ（すなわち、ビットストリーム）を受信したときに開始し、デコーディング動作を実行して個々のフレームを再構成し、表示している。
【００４６】
処理８００は、ビュー領域を指定する任意のビュー角度又はビュー領域選択を（ステップ８１０において）受信する。上記ビュー領域は、エンコードされたビデオに従ってフルにデコードされたビデオフレームのサブ領域である。
【００４７】
処理８００は、次いで、現在デコードされているフレームがスレーブフレーム又はマスタフレームであるかどうかを（ステップ８２０において）決定する。いくつかの実施形態において、ビデオビットストリームのエンコーダは、ビットストリーム内に（部分デコーディングの目的で）フレームがマスタフレーム又はスレーブフレームであるかどうかの指示を埋め込む。いくつかの実施形態において、デコーダは、現在デコードされているフレームがマスタフレーム又はスレーブフレームであるべきかどうかを、現在デコードされているフレームが後に参照されることになるか否かに基づいて決める。現在デコードされているフレームがマスタフレームである場合、処理はステップ８２５に進む。現在デコードされているフレームがスレーブフレームである場合、処理はステップ８３０に進む。
【００４８】
ステップ８２５において、処理８００は、現在のフレームをフルにデコードする。デコーディングの結果、すなわち再構成されたピクセルブロックが、表示のために表示バッファ（例えば、１３０）に、並びに、現在のフレーム内のイントラ予測されたピクセルブロックを再構成するため及び他のフレーム（スレーブフレーム及びマスタフレーム）内のインター予測されたピクセルブロックを再構成するために参照バッファ（例えば、７３０）に記憶される。いくつかの実施形態において、デコーダ内の記憶又はメモリデバイスが、表示バッファ及び参照バッファを実装する。次いで、処理はステップ８７０に進む。
【００４９】
ステップ８３０において、処理８００は、任意ビュー領域を包含する現在のフレーム内のセットピクセルブロックを識別する。いくつかの実施形態において、このピクセルブロックのセットは、指定されたビュー領域を包含することができるピクセルブロックの最小セットである。処理は、ピクセルブロックの識別されたセットをデコードするのに必要とされるエンコードされたデータユニット（又は、区分）のセットを（８４０において）さらに識別する。いくつかの実施形態において、このエンコードされたデータユニットのセットは、指定されたビュー領域を包含することができるエンコードされたデータユニットの最小セットである。
【００５０】
処理８００は、次いで、エンコードされたデータユニットの識別されたセットを（ステップ８５０において）デコードし、ピクセルブロックの識別されたセットを（ステップ８６０において）デコードし、かつ／あるいは再構成する。いくつかの実施形態において、処理は、エンコードされたデータユニットをデコードして、ピクセルブロックの識別されたセットを再構成するのに必要なデータを取得する。再構成されたピクセルブロックは、表示デバイスが表示するように表示バッファ１３０に記憶される。上記再構成されたピクセルブロックは、指定されたビュー領域を表示するのに必要なものである。ビュー領域の外部であるピクセルブロックは、再構成されない。次いで、処理はステップ８７０に進む。
【００５１】
ステップ８７０において、処理は、受信されたビュー領域指定に基づいて、任意選択されたビュー領域を表示する。デコーディングシステム１００について、表示デバイス１４０は、受信されたビュー領域指定を使用して、表示バッファ１３０内のどこに表示のためのピクセルデータを取り出すべきかを決定する。次いで、処理８００は終了する。
【００５２】
処理９００は、デコーディングシステム１００がエンコードされたビデオ（すなわち、ビットストリーム）を受信したときに開始し、デコーディング動作を実行して個々のフレームを再構成し、表示している。
【００５３】
処理９００は、ビュー領域を指定する任意のビュー角度又はビュー領域選択を（ステップ９１０において）受信する。上記ビュー領域は、エンコードされたビデオに従ってフルにデコードされたビデオフレームのサブ領域である。
【００５４】
処理９００は、現在デコードされているフレームがスレーブフレーム又はマスタフレームであるかどうかを（ステップ９２０において）決定する。いくつかの実施形態において、ビデオビットストリームのエンコーダは、ビットストリーム内に（部分デコーディングの目的で）フレームがマスタフレーム又はスレーブフレームであるかどうかの指示を埋め込む。いくつかの実施形態において、デコーダは、現在デコードされているフレームがマスタフレーム又はスレーブフレームであるべきかどうかを、現在デコードされているフレームが後に参照されることになるか否かに基づいて決める。現在デコードされているフレームがマスタフレームである場合、処理はステップ９２５に進む。現在デコードされているフレームがスレーブフレームである場合、処理はステップ９３０に進む。
【００５５】
ステップ９２５において、処理は、現在のフレームをフルにデコードする。デコーディングの結果、すなわち再構成されたピクセルブロックが、表示のために表示バッファ（例えば、１３０）に、並びに、現在のフレーム内のイントラ予測されたピクセルブロックを再構成するため及び他のフレーム（スレーブフレーム及びマスタフレーム）内のインター予測されたピクセルブロックを再構成するために参照バッファ（例えば、７３０）に記憶される。次いで、処理９００はステップ９７０に進む。
【００５６】
ステップ９３０において、処理は、デコードされ又は伸張されている現在の区分又はエンコードされたデータユニットが指定されたビュー領域に重なるかどうか、すなわち、指定された領域を示すのに必要とされるピクセルブロックを有するかどうかを決定する。そうである場合、処理はステップ９４０に進む。現在の区分が指定されたビュー領域に重ならない場合、処理９００はステップ９３５に進む。
【００５７】
ステップ９３５において、処理９００は、次の区分のために現在の区分のデコーディングをスキップし、なぜならば、現在の区分は指定されたビュー領域のためのピクセルブロックを再構成するのに必要とされるピクセルデータを含まないからである。次いで、処理９００はステップ９５０に進む。
【００５８】
ステップ９４０において、処理９００は、ビュー領域に重なるすべてのピクセルブロックがデコードされるまで、現在の区分をデコードする。換言すると、現在の区分のデコードは、指定されたビュー領域に重なる現在の区分内の他のピクセルブロックがなくなるとすぐ、停止する。再構成されたピクセルブロックが、表示デバイス１４０により表示されるように表示バッファ１３０に記憶される。
【００５９】
ステップ９５０において、処理９００は、これからデコードされる必要があり、あるいは指定されたビュー領域を示すのに不要であると決定される必要がある、現在のフレーム内の別の区分又はエンコードされたデータユニットがあるかどうかを決定する。現在のフレーム内に別の区分がある場合、処理はステップ９３０に戻る。そうでない場合、処理９００はステップ９７０に進む。
【００６０】
ステップ９７０において、処理は、受信されたビュー領域指定に基づいて、任意選択された領域を表示する。デコーディングシステム１００について、表示デバイス１４０は、受信されたビュー領域指定を使用して、表示バッファ１３０内のどこに表示のためのピクセルデータを取り出すべきかを決定する。次いで、処理９００は終了する。
【００６１】
ＩＩ．任意ビュー領域のビデオエンコーディング
上述されたように、スレーブフレームの部分デコーディングは、指定されたビュー領域を表示するのに必要とされないエンコードされたデータユニット及びピクセルブロックをスキップすることにより、性能向上を達成する。換言すると、ビデオデコーディングシステムがバイパスし、かつデコードしないことが可能なエンコードされたデータユニット及びピクセルブロックが多いほど、部分デコーディングを実行することにより達成される性能向上が大きくなる。ゆえに、スレーブフレーム内のイントラ予測されたピクセルブロックは望ましくなく、なぜならば、ビュー領域に重なるピクセルブロックが同じフレーム内の隣接ピクセルブロックを参照することによりイントラ予測される場合、そのピクセルブロックは、ビュー領域に重ならない場合でさえ、デコードされる必要があるからである。一方、スレーブフレーム内のインター予測されるピクセルブロックはより望ましく、なぜならば、これらはマスタフレームのみ参照し、マスタフレームは、指定されたビュー領域にかかわらずフルにデコードされ、再構成されるからである。
【００６２】
本開示のいくつかの実施形態は、例えばイントラ予測を用いることによりエンコードされるスレーブフレーム内のピクセルブロックの数を最小化することにより、部分デコーディングによる性能向上を最大化するエンコードされたビデオを生成するように制約できるエンコーダを提供する。いくつかの実施形態において、エンコーダは、スレーブフレーム内でインター予測のみ用いることにより、イントラ予測されたブロックの数を最小化する。いくつかの実施形態において、エンコーダは、イントラ予測されたブロックを、その近隣ブロックのすべてがインター予測される場合、可能にすることができる。このことは、スレーブフレームにおけるイントラ予測されたブロックの連鎖を防止することになる（イントラ予測されたブロックの連鎖は、ビュー領域から外れる潜在的に多くのピクセルブロックがさらにデコードされる必要があることになるため、部分デコーディングによる性能向上を妨げることになる）。
【００６３】
上述されたように、フレームは、スライス／タイル／ビデオのグループに区分できる。ビデオフレームのスライス／タイルのグループについて、スライス／タイル間の視覚的品質は、明白に異なることがある。ビデオフレームのサブビデオのグループについて、これらの個々のサブビデオは、同じ時刻に異なるフレームタイプを有することがある。さらに、種々のサブビデオが、同じ時刻に種々の視覚的品質を有するようにエンコードできる。独立した区分（例えば、スライス／タイル／サブビデオ）間の区分境界におけるアーチファクトを低減するために、本開示のいくつかの実施形態は、独立した区分（例えば、スライス／タイル／サブビデオ）が同じ時刻に同様の視覚的品質及び／又は同じフレームタイプを有することを必要とするよう制約できるエンコーダを提供する。いくつかの実施形態におけるデコーダは、ポストフィルタを備えてブロック状のアーチファクトをさらに消去する。
【００６４】
図１０は、部分デコーディングにより性能を最大化するエンコードされたビデオを生成するよう制約できる一例示的なビデオエンコーダ１０００を例示する。ビデオエンコーダ１０００は、生の（raw）、エンコードされていないビデオをビデオソース１００５から受信し、記憶又は送信のためのエンコードされたビデオ１０９０を生成する。ビデオエンコーダ１０００の動作は、部分デコーディングのために最適化されたエンコードされたビデオを生成するようエンコーダを制約する部分デコーディング最適化モード１０５０（これは、記憶されたフラグ、又はユーザインターフェースにより提供される信号であり得る）の影響下にある。
【００６５】
例示されるように、ビデオエンコーダ１０００は、ピクセルブロックエンコーダ１０１０、量子化器１０２０、可変長エンコーダ（ＶＬＥ）１０３０、及びレートコントローラ１０４０を含む。部分デコーディング最適化モード１０５０は、レートコントローラ１０４０及びピクセルエンコーダ１０１０の動作を制御する。
【００６６】
ピクセルブロックエンコーダ１０１０は、イントラ符号化、イントラ予測、又はインター予測を用いることにより、各ピクセルブロックをエンコードすることができる。ピクセルブロックエンコーダ１０１０は、量子化されたサンプルからのピクセルブロックを再構成することにより、予測符号化を実行する。ピクセルブロックエンコーダ１０１０は、参照フレームバッファ１０１５をさらに含んで、インター予測を（例えば、動き推定及び動き補償を実行することにより）実行する。
【００６７】
いくつかの実施形態において、部分デコーディング最適化モード１０５０がアサートされた状態でスレーブフレームをエンコードするとき、ピクセルブロックエンコーダ１０１０は、イントラ予測などの他のモードを禁止する間、インター予測されるモードを可能にする。いくつかの実施形態において、ピクセルブロックエンコーダ１０１０は、その隣接ピクセルブロックがインター予測されるブロックについてのみ、イントラ予測をさらに可能にする。サブビデオのグループに分割されるフレームについて、ピクセルブロックエンコーダ１０１０は、同じ時刻におけるすべてのサブビデオが同じフレームタイプを有することを保証する。
【００６８】
量子化器１０２０は、変換されたサンプルが如何にして数値的に表現されるかを決定する。量子化粒度がより細かいほど、ビデオの品質はより良くなるが、より多くのビットがビットストリーム内のデータを表現するのに必要とされることになる。いくつかの実施形態において、レートコントローラ１０４０が、ビットレート対ピクチャ品質のトレードオフに基づいて、量子化器１２０の動作を制御する。
【００６９】
可変長エンコーダ（ＶＬＥ）１０３０は、量子化器１０２０の出力を取り、エントロピーエンコーディング（例えば、ハフマン、ＣＡＢＡＣ等）を用いることによりロスレス圧縮を実行する。
【００７０】
レートコントローラ１０４０は、量子化器１０２０を用いることによりビデオの品質を制御して、ビットレートを制御する。スライス／タイル／サブビデオのグループに区分されるビデオについて、部分デコーディング最適化モード１０５０のアサーションは、レートコントローラ１０４０に、異なるスライス／タイル／サブビデオのビットレートを制御して同様の視覚的品質を有するようにさせる。
【００７１】
図１１は、（任意ビュー領域のための）部分デコーディングのために最適化されたビデオをエンコードする処理１１００を概念的に例示する。いくつかの実施形態において、エンコーダシステム１０００を実装する１つ以上の処理ユニットが、処理１１００を実行する。いくつかの実施形態において、処理１１００を実行する処理ユニットは、エンコーダ１０００の様々なコンポーネント、例えばピクセルブロックエンコーダ１０１０、量子化器１０２０、可変ＶＬＥ１０３０、レートコントローラ１０４０等に対応するモジュールを有するソフトウェアを実行することにより、上記を行う。結果が実質的に同じであるという条件で、処理のステップは図１１に示される正確な順序で実行される必要はないことが留意される。
【００７２】
処理１１００は、エンコーダ１０００がエンコードされるべき生ビデオを受信するとき開始する。処理１１００は、生ビデオのフレームを（ステップ１１１０において）受信する。本発明の一実施形態において、生ビデオは３６０ＶＲビデオである。処理１１００は、エンコードされるビデオが部分デコーディングのために最適化されることになるかどうか、例えば、部分デコーディング最適化モード１０５０がいつ設定されるかを、（ステップ１１２０において）さらに決定する。エンコードされるビデオが部分デコーディングのために最適化されることになる場合、処理１１００はステップ１１３０に進む。そうでない場合、処理１１００はステップ１１４５に進む。
【００７３】
ステップ１１３０において、処理１１００は、フレームの各区分についてレート制御を調整して、異なる区分（例えば、スライス／タイル／サブビデオ）にわたり均一のピクチャ品質を保証する。
【００７４】
ステップ１１４０において、処理１１００は、エンコードされている現在のフレームがマスタフレーム又はスレーブフレームであるかどうかを決定する。いくつかの実施形態において、エンコーダは、固定の時間間隔におけるフレームをマスタフレームとして指示する。いくつかの実施形態において、エンコーダは、フレームがマスタフレーム又はスレーブフレームであるべきかどうかを決める前に、フレームがＩ、Ｂ、又はＰフレームであるべきかどうかを決める。現在エンコードされているフレームが部分デコーディングの目的でマスタフレームであることになる場合、処理は１１４５に進む。現在エンコードされているフレームが部分デコーディングの目的でスレーブフレームであることになる場合、処理１１００はステップ１１５０に進む。
【００７５】
ステップ１１４５において、処理１１００は、ピクセルブロックのエンコーディングタイプに関していかなる特別な要件も作らない。ピクセルブロックは、ピクチャコンテンツ又はレート制御などの考慮事項に基づいて、すべてエンコーダの裁量において、イントラ符号化されても、イントラ予測されても、あるいはインター予測されてもよい。次いで、処理１１００はステップ１１６０に進む。
【００７６】
ステップ１１５０において、処理１１００は、各ピクセルブロックが特定のエンコーディングタイプのみによりエンコードされるように制限する設定をインストールする。いくつかの実施形態におけるこうした設定は、イントラ予測を禁止する間、インター予測を可能にする。こうした実施形態のうちいくつかにおいて、上記設定は、ブロックの隣接ピクセルブロックがインター予測により符号化されるときのみ、ピクセルブロックのイントラ予測を可能にする。サブビデオのグループに分割されるフレームについて、上記設定は、異なるサブビデオ内のピクセルブロックが同じフレームタイプを有することを保証する。次いで、処理１１００はステップ１１６０に進む。
【００７７】
ステップ１１６０において、処理１１００は、ステップ１１４５又は１１５０においてインストールされたエンコーディングモード設定に従ってフレームのピクセルブロックをエンコードする。次いで、処理１１００は終了する（あるいは、ステップ１１１０に戻って別の生ビデオフレームを受信する）。
【００７８】
ＩＩＩ．ラインバッファ低減
前述されたように、３６０ＶＲは、ユーザを囲むビジュアルリアリティビデオであり、ユーザがいかなる方向においても又はいかなる任意のビュー角度においても周りを見ることを可能にする。３６０ＶＲコンテンツのイメージは、一般に、２Ｄイメージとしてエンコードされ、記憶され、送信され、及びデコードされる。３６０ＶＲイメージは、ユーザを球状に囲むバーチャルリアリティイメージが正距円筒的な仕方で（in  an  equirectangular  fashion）２次元フラット表面に投影される球状フォーマット（spherical  format）において記憶できる。３６０ＶＲイメージは、さらに、各バーチャルリアリティイメージが６つの立方体面（上、下、左、右、前、及び後）からなる立方体フォーマット（cubic  format）で記憶されてもよい。３６０ＶＲイメージが球状フォーマット又は立方体フォーマットにより表現されるかどうかにかかわらず、イメージは、エンコーディングのためにピクセルブロックに分割される。図１２は、一例示的な３６０ＶＲを、球状フォーマット１２１０において、及び立方体フォーマット１２２０において例示する。本図は、立方体フォーマット１２２０の異なる表面（又は、面）間の空間的関係を示す立方体１２３０をさらに例示する。
【００７９】
図１３は、３６０ＶＲイメージの記憶フォーマットをより詳細に例示する。具体的に、本図は、３６０ＶＲイメージの大きさ（dimension）を球状フォーマットにおいて、及び立方体フォーマットにおいて示す。本図は、立方体フォーマットにおける３６０ＶＲイメージの区分化をさらに示す。
【００８０】
例示されるように、球状フォーマット１３１０に記憶された３６０ＶＲイメージが、立方体フォーマット１３２０にコンバートされる。立方体フォーマットにおけるコンバートされたイメージ１３２０は、６つの正方形の立方体面を有し、各立方体面は、Ｗ／４ピクセルの幅とＷ／４ピクセルの高さとを有し、このことは、イメージが全体でＷピクセルの幅と３Ｗ／４ピクセルの高さとを有することを結果としてもたらす。この例において、球状フォーマットにおけるソース３６０ＶＲイメージ１３１０は、Ｗの幅とＷ／２の高さとを有するとして図示される。しかしながら、いくつかの実施形態について、球状フォーマットにおけるソースイメージとその対応する立方体フォーマットにおけるコンバートされたイメージとの間に、解像度における固定の関係は存在しない。
【００８１】
イメージ１３２０内に立方体フォーマットの６つの面／区分が配置され、あるいはレイアウトされ、ゆえに６つの面のイメージコンテンツが連続的（contiguous）である（すなわち、いかなる２つの隣接面のコンテンツも、その共有された境界にわたり連続している）ことは、留意に値する。水平方向における表面は、後、左、前、及び右のシーケンスにおいて連続し、垂直方向における面は、上、左、及び下のシーケンスにおいて連続している。しかしながら、この配置は、具体的に正方形の最上行（すなわち、「上」区分のみ有する行）に沿って、及び正方形の最後の行（すなわち、「下」区分のみ有する行）に沿って、いかなる実際のピクセルデータもなく空白である（すなわち、立方体の表面のうちの１つでない）エリアを有するイメージ１３２０をさらに残す。
【００８２】
ビデオフレームを再構成するとき、１２０などのビデオデコーダ（又は、１０００などのビデオエンコーダ）は、再構成されたピクセルラインをラインバッファに一時的に置く。ラインバッファは、エンコーダ又はデコーダ内のメモリ又は記憶装置により提供される。ラインバッファに記憶された再構成されたピクセルデータは、後続のピクセルブロックをエンコード／デコードするとき、イントラ予測のための参照ピクセルの役割を果たす。こうしたラインバッファの幅は、典型的に、完全なビデオイメージの幅と同じである。ゆえに、例えば、３６０ＶＲイメージ１３１０及び１３２０のデコーディング又はエンコーディングをサポートするのに必要とされるラインバッファの幅は、Ｗピクセルである。
【００８３】
ラインバッファのコスト効率の良い設計のために、いくつかの実施形態は、立方体３６０ＶＲイメージの６つの面を、ラインバッファがフルサイズの３６０ＶＲイメージよりもより狭いことを可能にするレイアウトに配置する。図１４は、フルサイズ３６０ＶＲイメージよりもより狭いラインバッファの効率的利用を可能にする立方体３６０ＶＲイメージのいくつかのレイアウトを例示する。
【００８４】
図１４は、４つの異なるレイアウト１４０１〜１４０４を例示する。第１のレイアウト１４０１は、比較目的で、３６０ＶＲ立方体イメージの従来的配置を例示する。第１のレイアウト１４０１は、ラインバッファが３６０ＶＲイメージのフル幅（すなわち、Ｗピクセル）を有することを必要とする。
【００８５】
第２のレイアウト１４０２は、３６０ＶＲ立方体イメージの６つの面が単一の列としてレイアウトされる配置を例示する。このレイアウトは、３６０ＶＲ立方体イメージをデコードするのに必要とされるラインバッファの幅を、１つの立方体面の幅、すなわちＷ／４に低減する。
【００８６】
第３のレイアウト１４０３は、３６０ＶＲ立方体イメージの６つの面が３行×２列構成においてレイアウトされる配置を例示する。このレイアウトは、３６０ＶＲ立方体イメージをデコードするのに必要とされるラインバッファの幅を、２つの立方体面の幅、すなわちＷ／２に低減する。
【００８７】
第４のレイアウト１４０４は、３６０ＶＲ立方体イメージの６つの面が２行×３列構成においてレイアウトされる配置を例示する。このレイアウトは、３６０ＶＲ立方体イメージをデコードするのに必要とされるラインバッファの幅を、３つの立方体表面の幅、すなわち３Ｗ／４に低減する。
【００８８】
３つのラインバッファ低減レイアウト１４０２〜１４０４の各々において、６つの面のコンテンツが必ずしも連続的でないことは留意に値する。例えば、構成１４０２において、ＵＰ、ＬＴ、及びＢＴ（上、左、及び下）とラベル付けされた表面のコンテンツは連続的であり、しかし、ＢＴ、ＦＲ、ＲＴ、及びＢＫ（下、前、右、及び後）のコンテンツは連続的でない。
【００８９】
いくつかの実施形態において、３６０ＶＲビデオのエンコーダは、ラインバッファ幅節減レイアウト（例えば、レイアウト１４０２〜１４０４）のうち１つにおいてビデオソースを受信し、より狭いラインバッファ（例えば、Ｗ／４）を使用する。このことは、デコーダがビデオをデコードするとき、対応のより狭いラインバッファを使用することをさらに可能にする。
【００９０】
図１５は、エンコーディング処理の間、立方体フォーマットの６つの面がより狭いラインバッファの使用を可能にするレイアウトに再配置されている、３６０ＶＲビデオをエンコードするビデオエンコーダを例示する。例示されるように、ビデオエンコーダ１０００は、立方体フォーマットの６つの面が再配置された１列レイアウト１５１０、すなわち立方体面が上、左、下、前、右、及び後の順に配置された１４０２のレイアウトである、３６０ＶＲビデオソース１５０５を受信する。再配置されたビデオの幅は、１つの立方体面の幅、すなわちＷ／４ピクセルである。エンコーディング処理は、ラインバッファ１５５０を使用して、必要な再構成されたピクセルラインを記憶して、イントラ予測を実行する。再配置されたフレームの幅がＷ／４ピクセルであるため、ラインバッファもまたＷ／４ピクセルの幅を有する。
【００９１】
エンコーディング処理は、エンコードされたビデオ１０９０を生成し、エンコードされたビデオ１０９０は、狭いレイアウトにおける３６０ＶＲビデオの６つの立方体面を含むエンコードされたフレームを記憶している。いくつかの実施形態において、エンコードされたビデオ１０９０は、ビデオ符号化標準、例えばＨ．２６４、Ｈ．２６５、又はＶＰ９などに準拠したビットストリームの形式をとる。
【００９２】
いくつかの実施形態において、ビデオエンコーダは、生の３６０ＶＲビデオソースを従来の連続的な立方体フォーマット（すなわち、図１４のレイアウト１４０１）において、又は球状フォーマット（すなわち、図１３の１３１０）において受信する。こうした実施形態のいくつかにおけるエンコーダ１０００は、６つの立方体面を再配置することにより、生の３６０ＶＲビデオをより狭いレイアウト（例えば、１列レイアウト１４０２）にコンバートする。再配置された立方体レイアウトを有するコンバートされたビデオは、次いで、より狭いラインバッファを用いることによりエンコードされる。図１６は、より狭いラインバッファを用いる間、連続的立方体フォーマットにおける生の３６０ＶＲビデオソースを受信するビデオエンコーダを例示する。
【００９３】
例示されるように、ビデオエンコーダ１０００は、生の３６０ＶＲビデオ１６０５を従来の連続的フォーマットにおいて受信する。この生の従来の連続的フォーマットは、上記で図１３を参照して説明された球状フォーマット１３１０又は立方体フォーマット１３２０であり得る。コンバータ１５０８が、立方体フォーマットの６つの面を再配置することにより、生の３６０ＶＲビデオを再フォーマットする（reformats）。このことは、１列レイアウト（すなわち、１４０２のレイアウト）に再配置されたフレームを有するコンバートされたビデオ１６１０を生成する。エンコーダ１０００は、次いで、ラインバッファ１５５０を用いることにより、コンバートされたビデオ１６１０に対してエンコーディング処理を実行する。ラインバッファ１５５０は、再配置されたフレームの幅がＷ／４ピクセルであるため、Ｗ／４の幅を有する。
【００９４】
図１７は、１列レイアウトに再配置された３６０ＶＲ立方体フレーム１７００の符号化を例示する。例示されるように、再配置された３６０ＶＲフレーム１７００はピクセルブロックに分割され、ピクセルブロックはラスタースキャン順序でエンコードされる／デコードされる。再配置されたフレームが立方体面の１列のみを有するため、エンコーダは、次に進む前、具体的には（図１４のレイアウトに従って）上、左、下、前、右、及び後の順で、１つの立方体面のピクセルブロックをエンコードすることになる。再配置されたフレームのピクセルブロックは、エンコードされたデータユニット、例えばスライス、タイル、又はビデオのグループなどに区分できる。図１８は、再配置されたフレーム１７００の、（１８０１における）スライス、（１８０２における）タイル、又は（１８０３における）サブビデオへの区分化を例示する。
【００９５】
上述されたように、３６０ＶＲビデオの６つの立方体面は、３行×２列レイアウト（すなわち、レイアウト１４０３）又は２行×３列レイアウト（すなわち、レイアウト１４０４）にさらに配置できる。図１９は、エンコーディングの間に２行×３列レイアウトに再配置された３６０ＶＲ立方体フレーム１９００の符号化を例示する。
【００９６】
例示されるように、エンコーディング処理は、ピクセルブロックの各行に沿って進む。（図１４に例に従って）フレームの最上部近くのピクセルブロックの行は、立方体面の上と右と下とに及び、フレームの底部近くのピクセルブロックの行は立方体面の後と左と前とに及ぶ。各行が３つの立方体面に及ぶため、エンコーディング及びデコーディングに必要とされるラインバッファは３Ｗ／４ピクセルである。図１９は、再配置されたフレーム１９００の、スライス１乃至５への区分化をさらに例示する。各スライスは、複数の立方体表面に及び得る。
【００９７】
図１５に戻る。再配置された３６０ＶＲフレームは６つの立方体面を含むため、エンコーダは、いくつかの実施形態において、再配置された３６０ＶＲフレームのすべての区分及びすべての立方体面が同様のビデオ品質を有することを保証する。いくつかの実施形態において、エンコーダは、（レートコントローラ１０４０において）レート制御を実行して、例えば量子化器１０２０を制御することにより、異なる区分及び異なる立方体面が同様の品質を有することを保証する。
【００９８】
図２０は、再配置された立方体面を有する３６０ＶＲビデオをデコードするデコーダを例示する。具体的に、本図は、各フレームの立方体面がラインバッファによるメモリ使用を低減する目的で再配置されている３６０ＶＲビデオをデコーダ１００がデコードし、表示しているときの、デコーダ１００を例示する。
【００９９】
例示されるように、ビデオデコーダ１２０は、エンコードされたビデオ１１０を（ビットストリームとして）受信する。エンコードされたビデオ１１０は、ラインバッファ幅を低減するように立方体面が再配置された、エンコードされた３６０ＶＲフレームを含む。例示される例において、立方体表面は１列レイアウト（すなわち、レイアウト１４０２）である。
【０１００】
パーサ７１０は、エンコードされたビデオ１１０を受信し、パースし、ピクセルブロックデコーダ７２０が、各フレームのピクセルブロックを再構成する。ピクセルブロックデコーダ７２０は、フレーム２０１０を再構成するためにイントラ予測を（７５０において）実行するのに使用される、必要な再構成されたピクセルのラインを一時的に記憶するラインバッファ２０５０を含む。ラインバッファ２０５０は、Ｗ／４ピクセル幅である必要しかなく、なぜならば、フレーム２０１０が１つの単一の列において立方体面を有する再配置されたフレームであるからである。
【０１０１】
ピクセルブロックデコーダ７２０は、再構成されたピクセルを、後続のデコーディングのために参照フレームバッファ７３０内に、及び／又は表示デバイス１４０による表示のために表示バッファ１３０内に記憶する。いくつかの実施形態において、表示バッファ１３０は、再構成されたピクセルを、再配置された狭いフォーマット（例えば、レイアウト１４０２）で記憶し、表示コントローラが、ディスプレイ１４０に対して表示バッファのうちの部分を選択して、元の連続的フォーマット（すなわち、レイアウト１４０１）における表示フレーム２０９０を構成する。
【０１０２】
図２１は、立方体フォーマットにおける３６０ＶＲビデオをエンコード及びデコードする処理２１０１及び２１０２を概念的に例示する。処理２１０１は、具体的に立方体３６０ＶＲビデオの６つの面を狭いフォーマットに再配置することにより、３６０ＶＲビデオをエンコードすることに関する。いくつかの実施形態において、エンコーダ１０００は、３６０ＶＲビデオをビットストリームにエンコードするとき、処理２１０１を実行する。いくつかの実施形態において、エンコーダ１０００を実装する１つ以上の処理ユニットが、処理２１０１を実行するように構成される。いくつかの実施形態において、処理２１０１を実行する処理ユニットは、エンコーダ１０００の様々なコンポーネント、例えばピクセルブロックエンコーダ１０１０、量子化器１０２０、可変ＶＬＥ１０３０、レートコントローラ１０４０、再配置器１５０８等に対応するモジュールを有するソフトウェアを実行することにより、上記を行う。結果が実質的に同じであるという条件で、ステップは図２１に示される正確な順序で実行される必要はないことが留意される。
【０１０３】
処理２１０１は、それが生の３６０ＶＲビデオを（ステップ２１１０において）受信するとき、開始する。生３６０ＶＲビデオは、すでに再配置された立方体フォーマット（例えば、レイアウト１４０２、１４０３、又は１４０４）であるフレームを有し、再配置されたフレームの幅は、従来の連続的立方体フォーマットにおけるフレームよりもより狭い。いくつかの実施形態において、生３６０ＶＲビデオは、（図１３に例示されるように）従来の連続的立方体フォーマットであり、あるいは球状フォーマットである。こうした実施形態のいくつかにおける処理２１０１は、従来の連続的フォーマットから、再配置された立方体フォーマットのうち１つにビデオのフレームを再配置することになる。
【０１０４】
処理２１０１は、次いで、狭いラインバッファを用いることにより（イントラ符号化及び予測を用いることにより）、再配置されたフレームをピクセルブロックとして（ステップ２１２５において）エンコードする。いくつかの実施形態において、予測エンコーディング動作は、量子化されたサンプルからのピクセルブロックの再構成を必要とし、この再構成は、ラインバッファを使用して、再構成されたピクセルブロックを一時的に記憶する。より狭い、再配置されたフレームを有することは、ラインバッファがより狭いことを可能にする。
【０１０５】
処理２１０１は、エンコードされたピクセルブロックを含むエンコードされたデータユニットを（ステップ２１３０において）生成する。上記エンコードされたデータユニットは、フレームをスライス、タイル、又はビデオのグループに区分する。処理２１０１は、次いで、エンコードされたデータユニットを、エンコードされたビデオ、すなわちビットストリームとして（ステップ２１３５において）記憶し、あるいは送信する。次いで、処理２１０１は終了する。
【０１０６】
処理２１０２は、再配置された狭いフォーマット（例えば、処理２１０１により生成されるフォーマットなど）における立方体表面をフレームが有する３６０ＶＲビデオのビットストリームをデコードすることに関する。いくつかの実施形態において、デコーダ１００は、３６０ＶＲビデオをデコードし、表示するとき、処理２１０２を実行する。いくつかの実施形態において、デコーダ１００を実装する１つ以上の処理ユニットが、処理２１０２を実行するように構成される。いくつかの実施形態において、処理２１０２を実行する処理ユニットは、デコーディングシステム１００の様々なコンポーネント、例えばパーサ７１０、ピクセルブロックデコーダ７２０、部分デコーディングコントローラ１２５等に対応するモジュールを有するソフトウェアを実行することにより、上記を行う。
【０１０７】
処理２１０２は、それが狭いフォーマットにおける再配置されたフレームを有する３６０ＶＲビデオを含むエンコードされたビデオ（すなわち、ビットストリーム）を（ステップ２１５０において）受信するとき、開始する。処理は、次いで、再配置されたフレームについて、ビットストリーム内のエンコードされたデータユニットを（ステップ２１５５において）パースする。
【０１０８】
処理２１０２は、狭いラインバッファを用いることにより、再配置されたフレームのピクセルブロックを（ステップ１２６０において）再構成する。この再構成は、ラインバッファを使用して、再構成されたピクセルブロックを一時的に記憶する。より狭い、再配置されたフレームを有することは、ラインバッファがより狭いことを可能にする。
【０１０９】
処理２１０２は、立方体面の再構成されたピクセルブロックを（ステップ２１６５において）記憶する。処理２１０２は、立方体フォーマットの６つの面内の再構成されたピクセルに基づいて、（例えば、表示デバイス１４０に）３６０ＶＲビデオフレームを（ステップ２１７５において）表示する。次いで、処理２１０２は終了する。
【０１１０】
ＩＶ．電子システム
上記で説明された特徴及び適用の多くは、コンピュータ読取可能記憶媒体（さらにコンピュータ読取可能媒体として参照される）上に記録された命令セットとして規定されるソフトウェア処理として実装される。これら命令が１つ以上の計算又は処理ユニット（例えば、１つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット）により実行されるとき、これらは処理ユニットに、命令内に示される動作を実行させる。コンピュータ読取可能媒体の例には、これらに限られないが、ＣＤ‐ＲＯＭ、フラッシュデバイス、ランダムアクセスメモリ（ＲＡＭ）チップ、ハードドライブ、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）等が含まれる。コンピュータ読取可能媒体は、無線で通過するか又は有線接続を通じての搬送波及び電子信号を含まない。
【０１１１】
本明細書において、用語「ソフトウェア」は、プロセッサによる処理のためにメモリに読み出せる、読取専用メモリ内に存在するファームウェア又は磁気記憶装置に記憶されたアプリケーションを含むよう意図される。さらに、いくつかの実施形態において、複数のソフトウェア発明が、区別可能なソフトウェア発明を残すと同時に、より大きいプログラムのサブ部分として実施できる。いくつかの実施形態において、複数のソフトウェア発明は、別個のプログラムとしても実施できる。最後、本明細書に説明されるソフトウェア発明を一緒に実施する別個のプログラムのいかなる組み合わせも、本開示の範囲内である。いくつかの実施形態において、ソフトウェアプログラムは、１つ以上の電子システム上で動作するようインストールされるとき、ソフトウェアプログラムの動作を実行し及び行う１つ以上の特定のマシン実装を定義する。
【０１１２】
図２２は、本開示のいくつかの実施形態が実装される電子システム２２００を概念的に例示する。電子システム２２００は、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ等）、電話、ＰＤＡ、又は任意の他の種類の電子デバイスであり得る。上記電子システムには、様々なタイプのコンピュータ読取可能媒体、及び、様々な他タイプのコンピュータ読取可能媒体のためのインターフェースが含まれる。電子システム２２００は、バス２２０５、処理ユニット２２１０、グラフィックス処理ユニット（ＧＰＵ）２２１５、システムメモリ２２２０、ネットワーク２２２５、読取専用メモリ２２３０、永続的記憶デバイス２２３５、入力デバイス２２４０、及び出力デバイス２２４５を含む。
【０１１３】
バス２２０５は、電子システム２２００の複数の内部デバイスを通信可能に接続するすべてのシステム、ペリフェラル、及びチップセットバスを集合的に表す。例えば、バス２２０５は、処理ユニット２２１０をＧＰＵ２２１５、読取専用メモリ２２３０、システムメモリ２２２０、及び永続的記憶デバイス２２３５と通信可能に接続する。
【０１１４】
これらの様々なメモリユニットから、処理ユニット２２１０は、実行すべき命令及び処理すべきデータを取り出して、本開示の処理を実行する。処理ユニットは、種々の実施形態において、シングルプロセッサ又はマルチコアプロセッサであり得る。いくつかの命令が、ＧＰＵ２２１５に渡され、ＧＰＵ２２１５により実行される。ＧＰＵ２２１５は、様々な計算をオフロードし、処理ユニット２２１０により提供されるイメージ処理を補足する。
【０１１５】
読取専用メモリ（ＲＯＭ）２２３０は、電子システムの処理ユニット２２１０及び他のモジュールにより必要とされる静的データ及び命令を記憶する。一方、永続的記憶デバイス２２３５は、読み出し及び書き込みメモリデバイスである。このデバイスは、電子システム２２００がオフであるときでさえ命令及びデータを記憶する不揮発メモリユニットである。本開示のいくつかの実施形態は、大容量記憶デバイス（例えば、磁気又は光ディスクと、その対応するディスクドライブなど）を永続的記憶デバイス２２３５として使用する。
【０１１６】
他の実施形態が、取外し可能記憶デバイス（例えば、フロッピーディスク、フラッシュメモリデバイス等と、その対応するディスクドライブなど）を永続的記憶デバイスとして使用する。システムメモリ２２２０は、永続的記憶デバイス２２３５と同様、読み出し及び書き込みメモリデバイスである。しかしながら、記憶デバイス２２３５とは異なり、システムメモリ２２２０は、揮発性の読み出し及び書き込みメモリ、例えばランダムアクセスメモリなどである。システムメモリ２２２０は、ランタイムにプロセッサが必要とする命令及びデータのいくらかを記憶する。いくつかの実施形態において、本開示に従う処理は、システムメモリ２２２０、永続的記憶デバイス２２３５、及び／又は読取専用メモリ２２３０に記憶される。例えば、様々なメモリユニットが、いくつかの実施形態に従いマルチメディアクリップを処理する命令を含む。これら様々なメモリユニットから、処理ユニット２２１０は、実行すべき命令及び処理すべきデータを取り出して、いくつかの実施形態の処理を実行する。
【０１１７】
バス２２０５は、入力及び出力デバイス２２４０及び２２４５にさらに接続する。入力デバイス２２４０は、ユーザが電子システムに対して情報を通信し、コマンドを選択することを可能にする。入力デバイス２２４０には、英数字キーボード及びポインティングデバイス（さらに「カーソル制御デバイス」とも呼ばれる）、カメラ（例えば、ウェブカメラ）、音声コマンドを受信するマイクロフォン又は同様のデバイス等が含まれる。出力デバイス２２４５は、電子システムにより作成されたイメージを表示し、あるいはその他の方法でデータを出力する。出力デバイス２２４５には、プリンタ及び表示デバイス、例えば陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）など、並びにスピーカー又は同様のオーディオ出力デバイスが含まれる。いくつかの実施形態は、入力デバイス及び出力デバイスの双方として機能するタッチスクリーンなどのデバイスを含む。
【０１１８】
最後、図２２に示されるように、バス２２０５は、ネットワークアダプタ（図示されていない）を通して電子システム２２００をネットワーク２２２５にさらに結合する。こうして、コンピュータは、コンピュータのネットワーク（例えば、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、若しくはイントラネット、又は複数ネットワークのネットワーク、例えばインターネットなど））の一部であり得る。電子システム２２００のいずれか又はすべてのコンポーネントを、本開示と関連して使用できる。
【０１１９】
いくつかの実施形態は、マシン読取可能又はコンピュータ読取可能媒体（別法として、コンピュータ読取可能記憶媒体、マシン読取可能媒体、又はマシン読取可能記憶媒体として参照される）にコンピュータプログラム命令を記憶する電子コンポーネント、例えばマイクロプロセッサ、記憶装置、及びメモリなどを含む。上記コンピュータ読取可能媒体のいくつかの例には、ＲＡＭ、ＲＯＭ、読取専用コンパクトディスク（ＣＤ‐ＲＯＭ）、記録可能コンパクトディスク（ＣＤ‐Ｒ）、書換可能コンパクトディスク（ＣＤ‐ＲＷ）、読取専用デジタル多用途ディスク（例えば、ＤＶＤ‐ＲＯＭ、デュアルレイヤＤＶＤ‐ＲＯＭ）、様々な記録可能／書換可能ＤＶＤ（例えば、ＤＶＤ‐ＲＡＭ、ＤＶＤ‐ＲＷ、ＤＶＤ＋ＲＷ等）、フラッシュメモリ（例えば、ＳＤカード、ミニＳＤカード、マイクロＳＤカード等）、磁気及び／又はソリッドステートハードドライブ、読取専用及び記録可能Ｂｌｕ‐Ｒａｙ（登録商標）ディスク、ウルトラデンシティオプティカルディスク（ultra  density  optical  discs）、任意の他の光学又は磁気媒体、並びにフロッピーディスクが含まれる。コンピュータ読取可能媒体は、少なくとも１つの処理ユニットにより実行可能であるコンピュータプログラムを記憶することができ、様々な動作を実行する命令セットを含む。コンピュータプログラム又はコンピュータコードの例には、例えばコンパイラにより生成されるなどのマシンコード、及び、インタプリタを用いてコンピュータ、電子コンポーネント、又はマイクロプロセッサにより実行される高水準コードを含むファイルが含まれる。
【０１２０】
上記議論は、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを主に参照するが、いくつかの実施形態は、１つ以上の集積回路、例えば特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などにより実行される。いくつかの実施形態において、上記集積回路は、回路自体に記憶された命令を実行する。さらに、いくつかの実施形態は、プログラマブル論理デバイス（ＰＬＤ）、ＲＯＭ、又はＲＡＭデバイスに記憶されたソフトウェアを実行する。
【０１２１】
本明細書及び本出願のいずれかの請求項において用いられるとき、用語「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」はすべて、電子的な又は他の技術的なデバイスを参照する。これら用語は、人々又は人々のグループを除外する。本明細書を目的として、用語の表示又は表示することは、電子デバイス上に表示することを意味する。本明細書及び本出願のいずれかの請求項において用いられるとき、用語「コンピュータ読取可能媒体」、「コンピュータ読取可能メディア」、及び「マシン読取可能媒体」は、コンピュータにより読取可能である形式の情報を記憶する有形の物理オブジェクトに全体として制限される。これら用語は、いかなる無線信号、有線ダウンロード信号も、いかなる他の一過性の信号も除外する。
【０１２２】
本開示は多数の特定の詳細を参照して説明されたが、本開示はその主旨から逸脱することなく他の特定の形式で具現化できることを当業者は認識するであろう。さらに、複数の図（図８、図９、図１１、及び図２１を含む）が処理を概念的に例示する。これら処理の特定の動作は、図示及び説明された正確な順序で実行されなくてもよい。特定の動作が１つの連続系列の動作で実行されなくてもよく、異なる特定の動作が異なる実施形態において実行されてもよい。さらに、処理は、いくつかのサブ処理を用いて、又はより大きいマクロ処理の一部として実装できる。ゆえに、本開示は前述の例示的詳細により限定されるべきでなく、別記の請求項により定義されるべきであることを、当業者は理解するであろう。
【０１２３】
例示的な装置
図２３は、本開示のいくつかの実装に従う一例示的なデコーダ装置２３００を表す。デコーダ装置２３００は、図２〜図６、図１２〜図１４、図１７〜図１９に対する参照により説明された例示的なスキーム及びシナリオ、図７及び図２０に対する参照により説明された例示的なブロック図、並びに図９及び図２１に対する参照により説明された例示的な処理９００及び２１０２を含む、本明細書におけるビデオデコーディングシステム１００について説明された概念、手法、スキーム、解決策、シナリオ、アルゴリズム、アプローチ、処理、及び方法に関連した様々な機能、タスク、及び／又は動作を行い、実行し、あるいはその他の方法で遂行することができる。
【０１２４】
デコーダ装置２３００は、図２３に図示されるコンポーネントのうち１つ、いくつか、又はすべてを含むことができる。装置２３００は、図２３に図示されないさらなるコンポーネントを任意選択で含んでもよい。こうしたさらなるコンポーネントは、装置２３００の動作に必要でも本開示に関連せず、ゆえに、例示を分かりにくくすることを回避するために図２３に図示されない。
【０１２５】
デコーダ装置２３００は、例えばこれらに限られないが、ポータブルデバイス（例えば、スマートフォン、パーソナルデジタルアシスタント、デジタルカメラ、及び同様のもの）、コンピューティングデバイス（例えば、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、及び同様のもの）、又はウェアラブルデバイス（例えば、スマートウォッチ、スマートブレスレット、スマートネックレス、及び同様のもの）であり得る電子装置であり得る。別法として、装置２３００は、例えばこれらに限られないが、１つ以上のシングルコアプロセッサ、１つ以上のマルチコアプロセッサ、又は１つ以上の複合命令セットコンピューティング（ＣＩＳＣ）プロセッサなどの、１つ以上の集積回路（ＩＣ）チップの形式で実装されてもよい。
【０１２６】
デコーダ装置２３００は、通信回路２３４０とコンバータ回路２３２２とデコーダ回路２３２４とを含む、特別目的回路を含む。デコーダ回路２３２４は、インター予測７４０とイントラ予測７５０とを含む、パーサ７１０及びピクセルブロックデコーダ７２０の動作を実行する。デコーダ回路２３２４は、入力データをユーザインターフェース２３５０からさらに受信し、上記入力データは、ビュー領域１０５の指定を含むことができる。コンバータ回路２３２２は、デコードされた３６０ＶＲビデオフレームを、表示のために、狭い立方体レイアウト（フォーマット１４０２、１４０３、又は１４０４）から従来の連続的立方体レイアウト（フォーマット１４０１又は１３２０）又は球状レイアウト（フォーマット１３１０）に再フォーマットするように構成される。通信回路２３４０は、外部ソースと通信し、エンコードされたビデオ１１０（すなわち、ビットストリーム）を外部ソースから受信するように構成される。（外部ソースは、外部記憶デバイス又はネットワークであり得る。）いくつかの実施形態において、デコーダ装置２３００は、コンバータ回路２３２２を備えず、デコーダ装置は、デコードされたビデオフレームのフォーマットを表示のために変更しない。
【０１２７】
コンバータ回路２３２２、デコーダ回路２３２４、及び通信回路２３４０は、本開示に従う特定の目的を達成するように構成及び配置された１つ以上のトランジスタ、１つ以上のダイオード、１つ以上のキャパシタ、１つ以上の抵抗器、１つ以上のインダクタ、１つ以上のメモリスタ、及び／又は１つ以上のバラクタを含む、電子コンポーネントをそれぞれ含むことができる。
【０１２８】
デコーダ装置２３００は、記憶又はメモリ回路２３３０のセットをさらに含む。上記メモリ回路には、フリップフロップ、ラッチ、レジスタファイル、静的及び／又は動的ランダムアクセスメモリを含むことができる。メモリ回路２３３０は、参照フレームバッファ７３０及びラインバッファ２０５０を実装する。いくつかの実施形態において、メモリ回路２３３０は、表示バッファ１３０をさらに実装する。
【０１２９】
いくつかの実装について、コンバータ回路２３２２、デコーダ回路２３２４、通信回路２３４０、及び記憶又はメモリ回路２３３０のセットは、１つ以上のプロセッサの一体的部分であり得る（限定なく、例示目的で、上記回路はプロセッサ２３１０の一体的部分として図示される）。プロセッサは、本開示に従い３６０ＶＲビデオアプリケーションのデコーディングを与え（render）、あるいはその他の方法で果たすために、特化されたアルゴリズム、ソフトウェア命令、計算、及び論理を行い、実行し、あるいはその他の方法で遂行するように設計及び構成された特別目的コンピューティングデバイスである。すなわち、プロセッサ２３１０は、前に存在せず利用可能でもなかった１つ以上の新規の方法、例えば、３６０ＶＲビデオフレームの部分デコーディング、及び狭い立方体レイアウトにある３６０ＶＲビデオフレームを処理することなどで、３６０ＶＲビデオのデコーディングを与え、あるいはその他の方法で果たすように具体的に設計及び構成された、特化されたハードウェア（及び、任意選択で、特化されたファームウェア）を含むことができる。
【０１３０】
いくつかの実装において、装置２３００は、表示デバイス２３６０を含むことができる。表示デバイス２３６０は、テキストの、グラフィカルな、及び／又はビデオのイメージを表示するように構成できる。いくつかの実装において、表示デバイス２４０は、フラットパネル及び／又はタッチ感知パネルであり得る。表示デバイス２４０は、例えばこれらに限られないが、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイパネル（ＰＤＰ）、発光ダイオードディスプレイ（ＬＥＤ）、有機発光ダイオード（ＯＬＥＤ）、エレクトロルミネセントディスプレイ（ＥＬＤ）、表面伝導型電子放出素子ディスプレイ（surface-conduction  electron-emitter  display）（ＳＥＤ）、電界放出ディスプレイ（field  emission  display）（ＦＥＤ）、レーザ、カーボンナノチューブ、量子ドットディスプレイ、干渉変調器ディスプレイ（interferometric  modulator  display）（ＩＭＯＤ）、及びデジタルマイクロシャッターディスプレイ（digital  micro-shutter  display）（ＤＭＳ）などの、いかなる適切なテクノロジーによっても実装できる。デコーダ回路２３２４は、表示デバイス２３６０に動作的に結合されて、表示デバイス２３６０により表示されるべき３６０ＶＲビデオのデコードされたピクセルデータを提供することができる。上述されたように、デコードされたピクセルデータは、表示される前、表示バッファ１３０に記憶される。表示バッファ１３０は、記憶回路２３３０において、又は表示デバイス２３６０において実装できる。
【０１３１】
図２４は、本開示のいくつかの実装に従う一例示的なエンコーダ装置２４００を表す。エンコーダ装置２４００は、図２〜図６、図１２〜図１４、図１７〜図１９に対する参照により説明された例示的なスキーム及びシナリオ、図１０、図１５、及び図１６に対する参照により説明された例示的なブロック図、並びに図１１及び図２１に対する参照により説明された例示的な処理１１００及び２１０２を含む、本明細書におけるビデオエンコーディングシステム１０００について説明された概念、手法、スキーム、解決策、シナリオ、アルゴリズム、アプローチ、処理、及び方法に関連した様々な機能、タスク、及び／又は動作を行い、実行し、あるいはその他の方法で遂行することができる。
【０１３２】
エンコーダ装置２４００は、図２４に図示されるコンポーネントのうち１つ、いくつか、又はすべてを含むことができる。装置２４００は、図２４に図示されないさらなるコンポーネントを任意選択で含んでもよい。こうしたさらなるコンポーネントは、装置２４００の動作に必要でも本開示に関連せず、ゆえに、例示を分かりにくくすることを回避するために図２４に図示されない。
【０１３３】
エンコーダ装置２４００は、例えばこれらに限られないが、ポータブルデバイス（例えば、スマートフォン、パーソナルデジタルアシスタント、デジタルカメラ、及び同様のもの）、コンピューティングデバイス（例えば、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、及び同様のもの）、又はウェアラブルデバイス（例えば、スマートウォッチ、スマートブレスレット、スマートネックレス、及び同様のもの）であり得る電子装置であり得る。別法として、装置２４００は、例えばこれらに限られないが、１つ以上のシングルコアプロセッサ、１つ以上のマルチコアプロセッサ、又は１つ以上の複合命令セットコンピューティング（ＣＩＳＣ）プロセッサなどの、１つ以上の集積回路（ＩＣ）チップの形式で実装されてもよい。
【０１３４】
エンコーダ装置２４００は、通信回路２４４０とコンバータ回路２４２２とエンコーダ回路２４２４とを含む、特別目的回路を含む。エンコーダ回路２４２４は、（インター予測１０５０とイントラ予測１０４０とを含む）ピクセルブロックエンコーダ１０１０、量子化器１０２０、ＶＬＥ１０３０、レートコントローラ１０４０の動作を実行する。エンコーダ回路２４２４は、入力データをユーザインターフェース２４５０からさらに受信し、上記入力データは、制御信号を含んで、部分デコーディング最適化モード１０５０を有効にする。コンバータ回路２４２２は、生の３６０ＶＲビデオフレームをエンコーディングのために従来の連続的立方体レイアウト（フォーマット１４０１又は１３２０）又は球状レイアウト（フォーマット１３１０）から狭い立方体レイアウト（フォーマット１４０２、１４０３、又は１４０４）に再フォーマットする、すなわち、立方体面を再配置するコンバータ１５０８の機能を実行するように構成される。通信回路２４４０は、外部ソースと通信し、生ビデオ１６０５を外部ソースから受信するように構成される。（外部ソースは、外部記憶デバイス又はネットワークであり得る。）いくつかの実施形態において、エンコーダ装置２４００は、コンバータ回路２４２２を備えず、エンコーダ装置は、エンコーディングの前に生ビデオ１６０５のレイアウト又はフォーマットを変更しない。
【０１３５】
コンバータ回路２４２２、エンコーダ回路２４２４、及び通信回路２４４０は、本開示に従う特定の目的を達成するように構成及び配置された１つ以上のトランジスタ、１つ以上のダイオード、１つ以上のキャパシタ、１つ以上の抵抗器、１つ以上のインダクタ、１つ以上のメモリスタ、及び／又は１つ以上のバラクタを含む、電子コンポーネントをそれぞれ含むことができる。
【０１３６】
エンコーダ装置２４００は、記憶又はメモリ回路２４３０のセットをさらに含む。上記メモリ回路には、フリップフロップ、ラッチ、レジスタファイル、静的及び／又は動的ランダムアクセスメモリを含むことができる。メモリ回路２４３０は、参照フレームバッファ１０１５及びラインバッファ１５５０を実装する。
【０１３７】
いくつかの実装について、コンバータ回路２４２２、エンコーダ回路２４２４、通信回路２４４０、及び記憶又はメモリ回路２４３０のセットは、１つ以上のプロセッサの一体的部分であり得る（限定なく、例示目的で、上記回路はプロセッサ２４１０の一体的部分として図示される）。プロセッサは、本開示に従い３６０ＶＲビデオアプリケーションのエンコーディングを与え、あるいはその他の方法で果たすために、特化されたアルゴリズム、ソフトウェア命令、計算、及び論理を行い、実行し、あるいはその他の方法で遂行するように設計及び構成された特別目的コンピューティングデバイスである。すなわち、プロセッサ２４１０は、前に存在せず利用可能でもなかった１つ以上の新規の方法、例えば、部分デコーディングについて最適化された３６０ＶＲビデオフレームのエンコーディング、及び狭い立方体レイアウトにある３６０ＶＲビデオフレームの処理などで、３６０ＶＲビデオのエンコーディングを与え、あるいはその他の方法で果たすように具体的に設計及び構成された、特化されたハードウェア（及び、任意選択で、特化されたファームウェア）を含むことができる。
【０１３８】
さらなる注釈
本明細書に説明される対象事項は、時に、種々のコンポーネントが種々の他のコンポーネント内に含まれ、あるいは種々の他のコンポーネントに接続されることを例示する。こうした表されたアーキテクチャは単に例であり、実際、同じ機能性を達成する多くの他のアーキテクチャが実装できることが理解されるべきである。概念的意味において、同じ機能性を達成するコンポーネントのいかなる配置も、所望の機能性が達成されるように効果的に「関連付けられ」る。ゆえに、特定の機能性を達成するように組み合わせられた本明細書におけるいかなる２つのコンポーネントも、アーキテクチャ又は中間コンポーネントにかかわらず、所望の機能性が達成されるように互い「に関連付けられている」として見ることができる。同様に、そのように関連付けられたいかなる２つのコンポーネントも、さらに、所望の機能性を達成するように互いに「動作可能に接続され」又は「動作可能に結合され」ているとして見ることができ、そのように関連付けられることができるいかなる２つのコンポーネントも、さらに、所望の機能性を達成するように互いに「動作的に結合可能」であるとして見ることができる。動作的に結合可能であることの具体的な例には、これらに限られないが、物理的に嵌合可能な（mateable）及び／又は物理的に相互作用するコンポーネント、及び／又は、無線で相互作用可能な（interactable）及び／又は無線で相互作用するコンポーネント、及び／又は、論理的に相互作用する及び／又は論理的に相互作用可能なコンポーネントが含まれる。
【０１３９】
さらに、本明細書における実質的ないずれかの複数及び／又は単数の用語の使用に関して、当業者は、文脈及び／又は適用に適切であるように複数から単数に、及び／又は単数から複数に翻訳することができる。様々な単数／複数の組み合わせは、明りょうさのために本明細書において明示的に明記されていることがある。
【０１４０】
さらに、一般に、本明細書において、及び、特に別記の請求項、例えば別記の請求項のボディにおいて用いられる用語は、「開放」用語として一般に意図され、例えば、用語「含んでいる」は「これらに限られないが〜を含んでいる」として解釈されるべきであり、用語「有する」は「少なくとも〜を有する」として解釈されるべきであり、用語「含む」は「これらに限られないが〜を含む」として解釈されるべきである等のことが当業者により理解されるであろう。さらに、特定数の導入された請求項列挙が意図される場合、こうした意図は請求項内に明示的に列挙され、そのような列挙の無い場合、こうした意図は存在しないことが当業者により理解されるであろう。例えば、理解に対する助けとして、下記の別記された請求項は、請求項列挙を導入するのに導入フレーズ「少なくとも１つの」及び「１つ以上の」の使用を含むことがある。しかしながら、こうしたフレーズの使用は、同じ請求項が導入フレーズ「１つ以上の」又は「少なくとも１つの」と「一の（“a”  or  “an”）」などの不定冠詞とを含むときでさえ、不定冠詞「一の」による請求項列挙の導入がこうした導入された請求項列挙を含むいずれか特定の請求項をこうした列挙を１つだけ含む実装に限定することを暗示するようにみなされるべきでない。例えば、「一の（“a”  and/or  “an”）」は、「少なくとも１つの」又は「１つ以上の」を意味するように解釈されるべきであり、同じことが、請求項列挙を導入するのに使用される定冠詞の使用に当てはまる。さらに、特定数の導入された請求項列挙が明示的に列挙される場合でさえ、上記列挙が少なくとも列挙された数を意味するように解釈されるべきであることを当業者は理解するであろう。例えば、他の修飾語句のない、「２つの列挙物」というそれだけの列挙は、少なくとも２つの列挙物、又は２つ以上の列挙物を意味する。さらに、「Ａ、Ｂ、及びＣ等のうち少なくとも１つ」に類似した記法が用いられる例において、一般に、こうした構成は、当業者が該記法を理解するであろう意味で意図され、例えば、「Ａ、Ｂ、及びＣのうち少なくとも１つを有するシステム」は、これらに限られないがＡを単体で、Ｂを単体で、Ｃを単体で、Ａ及びＢを一緒に、Ａ及びＣを一緒に、Ｂ及びＣを一緒に、及び／又はＡ、Ｂ、及びＣを一緒に、等を有するシステムを含むことになる。「Ａ、Ｂ、又はＣ等のうち少なくとも１つ」に類似した記法が用いられる例において、一般に、こうした構成は、当業者が該記法を理解するであろう意味で意図され、例えば、「Ａ、Ｂ、又はＣのうち少なくとも１つを有するシステム」は、これらに限られないがＡを単体で、Ｂを単体で、Ｃを単体で、Ａ及びＢを一緒に、Ａ及びＣを一緒に、Ｂ及びＣを一緒に、及び／又はＡ、Ｂ、及びＣを一緒に、等を有するシステムを含むことになる。さらに、２つ以上の代替的用語を提示する事実上いかなる選言的ワード及び／又はフレーズも、説明内か、請求項内か、又は図面内かにかかわらず、上記用語のうち１つ、上記用語のいずれか、又は双方の用語を含む可能性を企図するように理解されるべきであることが当業者により理解されるであろう。例えば、フレーズ「Ａ又はＢ」は、「Ａ」又は「Ｂ」又は「Ａ及びＢ」の可能性��含むように理解されることになる。
【０１４１】
前述から、本開示の様々な実装が本明細書において例示の目的で説明されており、様々な修正が本開示の範囲及び主旨から逸脱することなく行われ得ることが十分理解されるであろう。したがって、本明細書に開示される様々な実装は限定であるようには意図されず、真の範囲及び主旨は下記の請求項により示される。
【図１】
0006560367.tif 000002
【図２】
0006560367.tif 000003
【図３】
0006560367.tif 000004
【図４】
0006560367.tif 000005
【図５】
0006560367.tif 000006
【図６】
0006560367.tif 000007
【図７】
0006560367.tif 000008
【図８】
0006560367.tif 000009
【図９】
0006560367.tif 000010
【図１０】
0006560367.tif 000011
【図１１】
0006560367.tif 000012
【図１２】
0006560367.tif 000013
【図１３】
0006560367.tif 000014
【図１４】
0006560367.tif 000015
【図１５】
0006560367.tif 000016
【図１６】
0006560367.tif 000017
【図１７】
0006560367.tif 000018
【図１８】
0006560367.tif 000019
【図１９】
0006560367.tif 000020
【図２０】
0006560367.tif 000021
【図２１】
0006560367.tif 000022
【図２２】
0006560367.tif 000023
【図２３】
0006560367.tif 000024
【図２４】
0006560367.tif 000025