(57)【要約】      （修正有）【課題】ＧＰＵを用いて仮想現実ビデオを処理し、ストリーミングする方法およびシステムを提供する。【解決手段】ネットワーク環境において、ＶＲビデオストリーミングシステムのビデオサーバは、ビデオデータソースから多数の球体画像フレームデータを含むソースビデオデータを読み込み、ソースビデオデータを第１メモリに保存する。ビデオサーバは、第１球体画像フレームデータを第２メモリの第１フレームバッファに保存することに応答して、ＧＰＵが、第１球体画像フレームデータを、第１球体画像フレームデータによって表現される球体画像の一部分に対応する第１エクイレクタングラー画像フレームに変換するようにし、変換された第１エクイレクタングラー画像フレームデータをエンコードするようにし、エンコードされた第１エクイレクタングラー画像フレームデータを第２メモリのエンコードされたフレームバッファに保存する。【選択図】図５
2020099083.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末の第１プロセッサが、ビデオストリーミングサーバからビデオの第１画像フレームを示す第１画像フレームデータを受信する段階と、
前記クライアント端末のＧＰＵが、前記第１画像フレームのサイズよりも小さいか或いはそれと同じサイズを有する、前記クライアント端末のディスプレイ上に、前記ディスプレイの第１表示領域に前記第１画像フレームの第１領域をレンダリングし、前記ディスプレイの第２表示領域に前記第１画像フレームの残り領域を隠された状態でレンダリングする段階と、
前記クライアント端末の前記第１プロセッサが、第１ＦＯＶを指し示すユーザ入力の受信に応答して、前記クライアント端末のＧＰＵが、前記第１ＦＯＶ内に位置し且つ以前に前記第２表示領域に隠された前記第１画像フレームの第２領域をレンダリングする段階と、
を含むビデオディスプレイ方法。
【請求項２】
前記第１ＦＯＶに関する前記ユーザ入力は、方位角およびピッチ角を指し示す視野角データを含む請求項１に記載のビデオディスプレイ方法。
【請求項３】
前記第１画像フレームの前記第２領域をレンダリングする段階は、前記クライアント端末の前記ＧＰＵが、前記ディスプレイのレンダリング領域を、前記第１表示領域から、前記第１表示領域と同じ形状を有し且つ前記第１画像フレームの前記第２領域を含む第３表示領域に再配置する段階を含む請求項１に記載のビデオディスプレイ方法。
【請求項４】
前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバに、前記第１ＦＯＶを指し示す情報を伝送する段階と、
前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバから前記第１ＦＯＶに対応する前記ビデオの第２画像フレームを示す第２画像フレームデータを受信する段階と、
前記クライアント端末の前記ＧＰＵが、前記クライアント端末の前記ディスプレイ上に、前記ディスプレイの前記第１表示領域に前記第２画像フレームの一部をレンダリングし、前記ディスプレイの前記第２表示領域に前記第１画像フレームの前記第２領域をレンダリングする段階とをさらに含む請求項１に記載のビデオディスプレイ方法。
【請求項５】
前記ディスプレイは、長方形の形状であり、
前記ディスプレイの前記第１表示領域は、長方形の形状であり、前記ディスプレイの中央に位置し、
前記ディスプレイの前記第２表示領域は、前記ディスプレイの左余白、右余白、上余白および下余白のうちの少なくとも一つを含む請求項１に記載のビデオディスプレイ方法。
【請求項６】
前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバに、前記第１ＦＯＶを指し示す情報を伝送する段階と、
前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバから、前記第１ＦＯＶに対応し且つ前記ビデオの第２画像フレームを示す第２画像フレームデータを受信する段階と、
前記クライアント端末の前記ＧＰＵが、前記ディスプレイの前記レンダリング領域を前記第３表示領域から前記第１表示領域に再配置する段階と
をさらに含む請求項３に記載のビデオディスプレイ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想現実ビデオストリーミングのためのシステムおよび方法に関する。より詳細には、本発明は、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて仮想現実ビデオをストリーミングし、処理するための方法およびシステムに関する。
【背景技術】
【０００２】
仮想現実（Ｖｉｒｔｕａｌ Ｒｅａｌｉｔｙ；ＶＲ）ビデオコンテンツは、一般に、３６０度ビデオデータを提供するために非常に高い解像度を持つ。例えば、３６０度ビデオデータは、１秒あたりのフレーム（Ｆｒａｍｅ  Ｐｅｒ  Ｓｅｃｏｎｄ；ＦＰＳ）が３０〜６０であり、４Ｋ（３８４０×１９２０）以上の解像度を持つＵＨＤ（Ｕｌｔｒａ  Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）ビデオデータを含むことができる。
【０００３】
ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、ディスプレイ出力用フレームバッファでの画像生成を加速化するために、メモリを迅速に読み取ったり書き込んだりするように設計された特殊な電子回路である。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と比較して、ＧＰＵは低電力消費（例えば、ＣＰＵの２５％）および低コスト（例えば、２０１６年基準、７６８コアのＧＰＵの場合は１６０ドル）で高速の実時間画像処理を提供することができる。また、ＧＰＵは、マルチコアを活用することにより、並列コンピューティング性能を提供することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする技術的課題は、ＧＰＵを用いて、仮想現実ビデオを処理しストリーミングする方法およびシステムを提供することである。
【０００５】
本発明が解決しようとする他の技術的課題は、仮想現実ビデオのエンコード遅延を最小化するための処理方法を提供することである。
【０００６】
本発明が解決しようとする別の技術的課題は、クライアント端末で仮想現実ビデオを効果的に表示する方法を提供することである。
【０００７】
本発明の技術的課題は上述した技術的課題に限定されず、上述していない別の技術的課題は以降の記載から通常の技術者に明確に理解できるだろう。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る仮想現実ビデオストリーミングシステムは、第１プロセッサと、第１メモリと、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、複数のフレームバッファを含む第２メモリと、前記第１プロセッサまたは前記ＧＰＵのうちの少なくとも一つによって実現されるビデオサーバとを含み、前記ビデオサーバは、前記第１プロセッサによって、ビデオデータソースから複数の球体画像フレームデータを含むソースビデオデータを取得し、前記ソースビデオデータを前記第１メモリに保存し、前記ビデオサーバは、前記第２メモリの第１フレームバッファに第１球体画像フレームデータが保存されることに応答して、前記ＧＰＵによって、前記第１球体画像フレームデータを、前記第１球体画像フレームデータが示す球体画像の一部分に対応する第１エクイレクタングラー（ｅｑｕｉｒｅｃｔａｎｇｕｌａｒ）画像フレームデータに変換し、前記変換された第１エクイレクタングラー画像フレームデータをエンコードし、前記エンコードされた第１エクイレクタングラー画像フレームデータを前記第２メモリのエンコードされたフレームバッファに保存することができる。一実施形態において、前記第１プロセッサまたは前記ＧＰＵのうちの少なくとも一つによって実現されるストリーミングサーバをさらに含み、前記ストリーミングサーバは、前記第１プロセッサによって、クライアント端末との第１接続を設定し、前記第２メモリの前記エンコードされたフレームバッファから前記エンコードされた第１エクイレクタングラー画像フレームデータを取得し、前記エンコードされた第１エクイレクタングラー画像フレームデータを前記第１接続を介して前記クライアント端末にストリーミングすることができる。一実施形態において、前記ビデオサーバと前記ストリーミングサーバは、別個のプロセスで実行できる。一実施形態において、前記第１プロセッサまたは前記ＧＰＵのうちの少なくとも一つによって実現される通信サーバをさらに含み、前記通信サーバは、前記第１プロセッサによって、前記クライアント端末との第２接続を設定し、前記第１エクイレクタングラー画像フレームデータに対応するＦＯＶ（Ｆｉｅｌｄ  ｏｆ  Ｖｉｅｗ）に関する第１情報を前記クライアント端末へ伝送し、前記クライアント端末から第２ＦＯＶに関する第２情報を受信し、前記ビデオサーバは、前記ＧＰＵによって、第２球体画像フレームデータを、前記第２球体画像フレームデータが示す球体画像の前記第２ＦＯＶに対応する第２エクイレクタングラー画像フレームデータに変換することができる。一実施形態において、前記通信サーバと前記ストリーミングサーバは単一のプロセスで実行できる。一実施形態において、第１ＦＯＶに関する前記第１情報と前記第２ＦＯＶに関する前記第２情報は、方位角とピッチ角を指し示す視野角データを含むことができる。
【０００９】
本発明の他の態様に係るビデオ処理方法は、ビデオサーバのＧＰＵが、ビデオの第１球体画像フレームを示す第１球体画像フレームデータを第１フレームバッファメモリに保存する段階と、前記ビデオサーバの第１プロセッサがクライアント端末から第１ＦＯＶに関する第１情報を受信する段階と、前記ビデオサーバの前記ＧＰＵが、前記第１フレームバッファメモリに保存された前記第１球体画像フレームデータを、前記第１球体画像フレームデータが示す前記第１球体画像フレームの前記第１ＦＯＶに対応する第１エクイレクタングラー画像フレームデータに変換する段階と、前記ビデオサーバの前記ＧＰＵが、第１エンコードされた画像フレームデータを生成するために、前記変換された第１エクイレクタングラー画像フレームデータをエンコードする段階とを含むことができる。一実施形態において、前記ビデオサーバの前記ＧＰＵが、前記第１球体画像フレームデータを生成するために前記ビデオをパーシングしデコードする段階をさらに含むことができる。一実施形態において、第１ＦＯＶに関する前記第１情報は、方位角とピッチ角を指し示す視野角データを含むことができる。一実施形態において、前記第１エクイレクタングラー画像フレームデータに変換する段階は、前記ＧＰＵが前記第１球体画像フレームデータから前記第１エクイレクタングラー画像フレームデータへの変換を開始する前に前記第１情報が受信されたと判定する段階を含むことができる。一実施形態において、前記ビデオサーバの前記第１プロセッサが、前記クライアント端末から第２ＦＯＶに関する第２情報を受信する段階と、前記ビデオサーバの前記ＧＰＵが、前記ビデオの前記第１球体画像フレームに後続する第２球体画像フレームを示す第２球体画像フレームデータを、前記第１フレームバッファメモリに保存する段階と、前記ビデオサーバの前記ＧＰＵが、前記第１球体画像フレームデータを前記第１エクイレクタングラー画像フレームデータに変換した後の時点と、前記第１フレームバッファメモリに前記第２球体画像フレームデータを保存する前の時点との間に前記第２情報が受信されたと判定したことに応答して、（ｉ）前記ビデオサーバの前記ＧＰＵが、前記第１フレームバッファメモリに保存された前記第１球体画像フレームデータを、前記第１球体画像フレームデータが示す前記第１球体画像フレームの前記第２ＦＯＶに対応する第２エクイレクタングラー画像フレームデータに変換し、（ｉｉ）前記ビデオサーバの前記ＧＰＵが、前記変換された第２エクイレクタングラー画像フレームデータを第２エンコードされた画像フレームデータにエンコードし、（ｉｉｉ）前記第１フレームバッファメモリに保存された前記第２球体画像フレームデータの変換およびエンコードを省略する段階とを含むことができる。
【００１０】
本発明の別の態様に係るコンピュータプログラムは、ビデオサーバのＧＰＵによって実行され、ビデオサーバのＧＰＵが、ビデオの第１球体画像フレームを示す第１球体画像フレームデータを第１フレームバッファメモリに保存する段階と、前記ビデオサーバの第１プロセッサが、クライアント端末から第１ＦＯＶに関する第１情報を受信する段階と、前記ビデオサーバの前記ＧＰＵが、前記第１バッファメモリに保存された前記第１球体画像フレームデータを前記球体画像フレームデータが示す前記第１球体画像フレームの前記第１ＦＯＶに対応する第１エクイレクタングラー画像フレームデータに変換する段階と、前記ビデオサーバの前記ＧＰＵが、第１エンコードされた画像フレームデータを生成するために、前記変換された第１エクイレクタングラー画像フレームデータをエンコードする段階とを含むことができる。一実施形態において、前記ビデオサーバの前記ＧＰＵが、前記第１球体画像フレームデータを生成するために前記ビデオをパーシングしデコードする段階を実行させるために、コンピュータ可読の記録媒体に保存できる。一実施形態において、第１ＦＯＶに関する前記第１情報は、方位角とピッチ角が指し示す視野角データを含むことができる。一実施形態において、前記第１エクイレクタングラー画像フレームデータに変換する段階は、前記ＧＰＵが前記第１球体画像フレームデータから前記第１エクイレクタングラー画像フレームデータへの変換を開始する前に前記第１情報が受信されたと判定する段階を含むことができる。一実施形態において、前記ビデオサーバの前記第１プロセッサが、前記クライアント端末から第２ＦＯＶに関する第２情報を受信する段階と、前記ビデオサーバの前記ＧＰＵが、前記ビデオの前記第１球体画像フレームに後続する第２球体画像フレームを示す第２球体画像フレームデータを前記第１フレームバッファメモリに保存する段階と、前記ビデオサーバの前記ＧＰＵが、前記第１球体画像フレームデータを前記第１エクイレクタングラー画像フレームデータに変換した後の時点と、前記第１フレームバッファメモリに前記第２球体画像フレームデータを保存する前の時点との間に前記第２情報が受信されたと判定したことに応答して、（ｉ）前記ビデオサーバの前記ＧＰＵが、前記第１フレームバッファメモリに保存された前記第１球体画像フレームデータを、前記第１球体画像フレームデータが示す前記第１球体画像フレームの前記第２ＦＯＶに対応する第２エクイレクタングラー画像フレームデータに変換し、（ｉｉ）前記ビデオサーバの前記ＧＰＵが、前記変換された第２エクイレクタングラー画像フレームデータを第２エンコードされた画像フレームデータにエンコードし、（ｉｉｉ）前記第１フレームバッファメモリに保存された前記第２球体画像フレームデータの変換およびエンコードを省略する段階とを含むことができる。
【００１１】
本発明の別の態様に係るビデオディスプレイ方法は、クライアント端末の第１プロセッサが、ビデオストリーミングサーバからビデオの第１画像フレームを示す第１画像フレームデータを受信する段階と、前記クライアント端末のＧＰＵが、少なくとも前記第１画像フレームのサイズよりも小さいか或いはそれと同じサイズを有する、前記クライアント端末のディスプレイ上に、前記ディスプレイの第１表示領域に前記第１画像フレームの第１領域をレンダリングし、前記ディスプレイの第２表示領域に前記第１画像フレームの残り領域を隠された状態でレンダリングする段階と、前記クライアント端末の前記第１プロセッサが、第１ＦＯＶを指し示すユーザ入力の受信に応答して、前記クライアント端末のＧＰＵが、前記第１ＦＯＶ内に位置し且つ以前に前記第２表示領域に隠された前記第１画像フレームの第２領域をレンダリングする段階とを含むことができる。一実施形態において、第１ＦＯＶに関する前記ユーザ入力は、方位角およびピッチ角を指し示す視野角データを含むことができる。一実施形態において、前記第１画像フレームの前記第２領域をレンダリングする段階は、前記クライアント端末の前記ＧＰＵが、前記ディスプレイのレンダリング領域を、前記第１表示領域から、前記第１表示領域と同じ形状を有し且つ前記第１画像フレームの前記第２領域を含む第３表示領域に再配置する段階を含むことができる。一実施形態において、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバへ、前記第１ＦＯＶを指し示す情報を伝送する段階と、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバから前記第１ＦＯＶに対応する前記ビデオの第２画像フレームを示す第２画像フレームデータを受信する段階と、前記クライアント端末の前記ＧＰＵが、前記クライアント端末の前記ディスプレイ上に、前記ディスプレイの前記第１表示領域に前記第２画像フレームの一部領域をレンダリングし、前記ディスプレイの前記第２表示領域に前記第１画像フレームの前記第２領域をレンダリングする段階とをさらに含むことができる。一実施形態において、前記ディスプレイは長方形の形状であり、前記ディスプレイの前記第１表示領域は、長方形の形状であり、前記ディスプレイの中央に位置し、前記ディスプレイの前記第２表示領域は、前記ディスプレイの左余白、右余白、上余白および下余白のうちの少なくとも一つを含むことができる。一実施形態において、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバへ、前記第１ＦＯＶを指し示す情報を伝送する段階と、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバから、前記第１ＦＯＶに対応し且つ前記ビデオの第２画像フレームを示す第２画像フレームデータを受信する段階と、前記クライアント端末の前記ＧＰＵが、前記ディスプレイの前記レンダリング領域を前記第３表示領域から前記第１表示領域に再配置する段階をさらに含むことができる。
【００１２】
本発明の別の態様に係るコンピュータプログラムは、クライアント端末の第１プロセッサまたはＧＰＵによって実行され、クライアント端末の第１プロセッサが、ビデオストリーミングサーバから、ビデオの第１画像フレームを示す第１画像フレームデータを受信する段階と、前記クライアント端末のＧＰＵが、前記第１画像フレームと同じサイズまたはそれより小さいサイズを有する前記クライアント端末のディスプレイ上に、前記ディスプレイの第１表示領域に前記第１画像フレームの第１領域をレンダリングし、前記ディスプレイの第２表示領域に前記第１画像フレームの残り領域を隠された状態でレンダリングする段階と、前記クライアント端末の前記第１プロセッサが第１ＦＯＶを指し示すユーザ入力の受信に応答して、前記クライアント端末のＧＰＵが、前記第１ＦＯＶ内に位置し且つ以前に前記第２表示領域に隠された前記第１画像フレームの第２領域をレンダリングする段階とを実行させるために、コンピュータ可読の記録媒体に保存できる。一実施形態において、第１ＦＯＶに関する前記ユーザ入力は、方位角とピッチ角を指し示す視野角データを含むことができる。一実施形態において、前記第１画像フレームの前記第２領域をレンダリングする段階は、前記クライアント端末の前記ＧＰＵが、前記ディスプレイのレンダリング領域を、前記第１表示領域から、前記第１表示領域と同じ形状を有し且つ前記第１画像フレームの前記第２領域を含む第３表示領域に再配置する段階を含むことができる。一実施形態において、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバに、前記第１ＦＯＶを指し示す情報を伝送する段階と、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバから、前記第１ＦＯＶに対応する前記ビデオの第２画像フレームを示す第２画像フレームデータを受信する段階と、前記クライアント端末の前記ＧＰＵが、前記クライアント端末の前記ディスプレイ上に、前記ディスプレイの前記第１表示領域に前記第２画像フレームの一部領域をレンダリングし、前記ディスプレイの前記第２表示領域に前記第１画像フレームの前記第２領域をレンダリングする段階とをさらに含むことができる。一実施形態において、前記ディスプレイは長方形の形状であり、前記ディスプレイの前記第１表示領域は、長方形の形状であり、前記ディスプレイの中央に位置し、前記ディスプレイの前記第２表示領域は、前記ディスプレイの左余白、右余白、上余白および下余白のうちの少なくとも一つを含むことができる。一実施形態において、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバに、前記第１ＦＯＶを指し示す情報を伝送する段階と、前記クライアント端末の前記第１プロセッサが、前記ビデオストリーミングサーバから、前記第１ＦＯＶに対応し且つ前記ビデオの第２画像フレームを示す第２画像フレームデータを受信する段階と、前記クライアント端末の前記ＧＰＵが、前記ディスプレイの前記レンダリング領域を前記第３表示領域から前記第１表示領域に再配置する段階とをさらに含むことができる。
【発明の効果】
【００１３】
上述した本発明によれば、前記ＶＲビデオストリーミングシステムは、高解像度ＶＲビデオデータを処理する際に、ＧＰＵコンピューティング性能（例えば、マルチコアを用いた並列コンピューティング性能）を効果的に活用することができる。
【００１４】
また、現在の視野範囲（Ｆｉｅｌｄ  ｏｆ  Ｖｉｅｗ；ＦＯＶ）が反映されたビデオ部分だけを伝送することにより、相当なネットワーク帯域幅要求量（例えば、ＦＯＶビデオデータ伝送は１〜２Ｍｂｐｓの帯域幅のみ要求されるのに対し、４Ｋ  ＵＨＤビデオデータ伝送は１６〜２０Ｍｂｐｓの帯域幅が要求される）が削減できる。
【００１５】
また、ＦＯＶが反映されたビデオ部分だけを伝送することにより、ユーザの経験だけでなく、ストリーミング費用まですべて改善することができる。
【００１６】
また、ＦＯＶが反映されたビデオ部分だけを伝送することにより、低いデータ伝送速度でストリーミングサービスを提供することができる。そうすることにより、データバッファリングを除去し、クライアント端末のバッテリー消耗を減少させることができる。
【００１７】
また、ＦＯＶが反映されたビデオ部分だけを伝送することにより、ストリーミングサービス費用も減らすことができる。なぜなら、前記ストリーミングサービスのプロバイダは、自分のネットワークサービスの使用量に応じて料金を支払う必要があるからである。
【００１８】
また、ＦＯＶが反映されたビデオ部分だけを伝送することにより、コンテンツの不正コピーも防止することができる。ＦＯＶが反映されたビデオ部分が伝送されることにより、受信した部分的にストリーミングされたビデオデータは、動的に変更されるＦＯＶが反映されたビデオの一部分だけを含むことができるので、これにより、前記ビデオのコンテンツが不正コピーされることを防止する。
【００１９】
また、現在のＦＯＶに基づいて、クライアント端末に含まれているディスプレイのレンダリング領域を変更することにより、前記クライアント端末は、遅延なく、変更された視野角に対するビデオ部分をユーザに即刻的に提供することができる。
【００２０】
本発明の効果は上述した効果に限定されず、上述していない別の効果は以降の記載から通常の技術者に明確に理解できるだろう。
【図面の簡単な説明】
【００２１】
上述した本発明、または上述した本発明に関連する目的、特徴および／または利点は、下記の図面と共に後述する詳細な説明を参照すると、より明確に理解されるだろう。
【図１】本発明の幾つかの実施形態に係るクライアント端末とＶＲビデオストリーミングシステムを含むネットワーク環境のブロック図である。
【図２】本発明の実施形態に係るコンピューティングシステムを例示的に示すブロック図である。
【図３】本発明の実施形態に係るＶＲビデオストリーミングシステムを例示的に示すブロック図である。
【図４】フレーム画像を例示的に示す図である。
【図５】本発明の幾つかの実施形態に係る、ＶＲビデオストリーミングシステムによって行われるＦＯＶベースの後処理方法の動作を示すフローチャートである。
【図６】本発明の幾つかの実施形態に係る、ＶＲビデオストリーミングシステムによって行われるＦＯＶベースの後処理方法の動作を示すフローチャートである。
【図７】本発明の実施形態に係るＶＲビデオストリーミングシステムで行われるＦＯＶベースの後処理方法を例示的に示すブロック図である。
【図８】本発明の実施形態に係るＶＲビデオストリーミングシステムで行われるＦＯＶベースの後処理方法を例示的に示すブロック図である。
【図９】本発明の実施形態に係るＶＲビデオストリーミングシステムで行われるＦＯＶベースの後処理方法を例示的に示すブロック図である。
【図１０】本発明の実施形態に係るＶＲビデオストリーミングシステムでエンコード遅延時間を減少させるためのＦＯＶベースの後処理方法を例示的に示すブロック図である。
【図１１】本発明の実施形態に係るＶＲビデオストリーミングシステムでエンコード遅延時間を減少させるためのＦＯＶベースの後処理方法を例示的に示すブロック図である。
【図１２】本発明の実施形態に係るＶＲビデオストリーミングシステムでエンコード遅延時間を減少させるためのＦＯＶベースの後処理方法を例示的に示すブロック図である。
【図１３】本発明の幾つかの実施形態に係るクライアント端末のビデオディスプレイ方法の動作を示すフローチャートである。
【図１４】本発明の幾つかの実施形態において、ビデオディスプレイ方法で表示されたクライアント端末の表示画面を例示的に示す図である。
【図１５】本発明の幾つかの実施形態において、ビデオディスプレイ方法で表示されたクライアント端末の表示画面を例示的に示す図である。
【図１６】本発明の幾つかの実施形態において、ビデオディスプレイ方法で表示されたクライアント端末の表示画面を例示的に示す図である。
【発明を実施するための形態】
【００２２】
仮想現実（Ｖｉｒｔｕａｌ Ｒｅａｌｉｔｙ；ＶＲ）ビデオストリーミングのための方法およびシステムに関する発明が提供される。より詳しくは、ＧＰＵ（Ｇｒａｐｈｉｃ
Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）を用いて仮想現実ビデオをストリーミングし処理するための方法およびシステムに関する発明が提供される。幾つかの実施形態において、ＶＲビデオストリーミングシステムに含まれているビデオサーバのＧＰＵは、球体画像（ｓｐｈｅｒｉｃａｌ  ｉｍａｇｅ）フレームデータを、第１球体画像フレームデータの一部分に対応するエクイレクタングラー（ｅｑｕｉｒｅｃｔａｎｇｕｌａｒ）画像フレームデータに変換することができる。これにより、前記ＶＲビデオストリーミングシステムは、高解像度のＶＲビデオデータを処理するとき、ＧＰＵのコンピューティング性能（例えば、多重コアを用いた並列コンピューティング性能）を効果的に活用することができる。
【００２３】
幾つかの実施形態において、ビデオサーバのプロセッサは、クライアント端末から第１視野範囲（Ｆｉｅｌｄ  ｏｆ  Ｖｉｅｗ；ＦＯＶ）に関する情報を受信することができ、ビデオサーバのＧＰＵは、第１球体画像フレームデータを第１球体画像フレームの第１ＦＯＶに対応する第１エクイレクタングラー画像フレームデータに変換することができる。ここで、第１球体画像フレームは、第１球体画像フレームデータが示す画像フレームのことをいう。このような構成で、クライアント端末からのユーザ入力ごとに、ＶＲビデオストリーミングシステムは、前記ユーザが現在見たがっているビデオデータ部分のみを前記クライアント端末に提供することができる。例えば、前記ＶＲビデオストリーミングシステムは、前記ユーザが入力した現在のＦＯＶに関するビデオ部分のみを前記クライアント端末に提供することができる。現在のＦＯＶに関するビデオ部分だけを伝送することにより得られる利点は非常に多い。第一に、これにより、相当なネットワーク帯域幅要求量（例えば、ＦＯＶビデオデータ伝送は１〜２Ｍｂｐｓの帯域幅だけ要求されるのに対し、４Ｋ
ＵＨＤビデオデータ伝送は１６〜２０Ｍｂｐｓの帯域幅が要求される）が削減できる。第二に、ＦＯＶビデオデータのみを伝送することにより、ユーザの経験、およびストリーミングサービスの費用をすべて改善することができる。ＦＯＶビデオデータのみを伝送することにより、低いデータ伝送速度でストリーミングサービスを提供することができるので、データバッファリングを除去し、クライアント端末のバッテリー消耗も減らすことができる。また、前記ＦＯＶビデオデータのみを伝送することにより、ストリーミングサービス費用も減らすことができる。なぜなら、ストリーミングサービスプロバイダは、ネットワークサービスの使用量に応じて料金を支払う必要があるからである。第三に、ＦＯＶビデオデータのみを伝送することにより、コンテンツの不正コピーを防止することができる。たとえば、４Ｋ  ＵＨＤビデオコンテンツは、不正コピーにさらされる可能性が大きい。ＦＯＶビデオデータの伝送を介して受信した、部分的にストリーミングされたビデオデータは、動的に変更された視野角についてのビデオデータ部分のみを含むことができるので、ビデオコンテンツが不正コピーされることを防止する。
【００２４】
幾つかの実施形態において、クライアント端末のＧＰＵは、ビデオストリーミングサーバから受信した画像フレームの第１領域を、ディスプレイの第１表示領域（例えば、ディスプレイの中央領域）にレンダリング（ｒｅｎｄｅｒｉｎｇ）する一方、前記画像フレームの残り領域を前記ディスプレイの第２表示領域（例えば、長方形ディスプレイの四方向の余白）から隠す。特定のＦＯＶ（例えば、ディスプレイの左上隅を向く視野角）を指し示すユーザ入力の受信に応答して、前記ＧＰＵは、以前に第２表示領域に隠され、第１ＦＯＶ（例えば、以前に前記ディスプレイの左上端付近に隠された領域）内に位置した第１画像フレームの第２領域をレンダリングすることができる。このような構成により、例えば、クライアント端末のユーザが画像フレームを見ながら、ディスプレイの左上隅に向けて視野角を変化させるとき、前記クライアント端末は、以前に隠しておいた前記画像フレームの一部分を直ちに示すことができる。したがって、クライアント端末は、ビデオストリーミングサーバから新しいビデオ部分を受信した後に、変更された視野角の新しいビデオ部分を提供する場合に発生する可能性のある遅延なく、変更された視野角のビデオ部分を即刻的に前記ユーザに提供することができる。
【００２５】
図１はＶＲビデオストリーミングシステム１００、クライアント端末２００Ａ、２００Ｂ、およびＶＲコンテンツサーバ７５０を含むネットワーク環境１０００を例示的に示すブロック図である。概略的には、図１に示されたネットワーク環境では、相互接続されたネットワークノード（例えば、ＶＲビデオシステムとＶＲコンテンツサーバ）に対するネットワーク６５０と、相互接続されたネットワークノード（例えば、クライアント端末とＶＲビデオシステム）に対するネットワーク６５０’とを含む。幾つかの実施形態において、ネットワーク６５０は、ネットワーク６５０’と同様のネットワークである。図１を参照してより詳細に説明すると、ネットワーク６５０または６５０’は、ネットワーク環境１０００に参加する装置間のインタラクション（ｉｎｔｅｒａｃｔｉｏｎ）を容易にするために使用される。実例となる例題のネットワーク６５０または６５０’はインターネットである。しかし、他の実施形態によれば、ネットワーク６５０は、データセンター内のローカルネットワーク（ｌｏｃａｌ  ｎｅｔｗｏｒｋ）、ネットワークファブリック（ｎｅｔｗｏｒｋ  ｆａｂｒｉｃ）または他の近距離領域または広域ネットワークなど、さまざまな種類のネットワークであり得る。ネットワーク６５０または６５０’は、多数の接続されたサブネットワークまたは自律的なネットワークから構成できる。また、ネットワーク６５０または６５０’は、企業のイントラネット（ｉｎｔｒａｎｅｔ）のようなＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ
Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットのようなネットワーク間ネットワークまたはＰ２Ｐ（Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ）ネットワーク（例えば、アドホック（ａｄ  ｈｏｃ）ＷｉＦｉ  Ｐ２Ｐネットワーク）であり得る。任意の類型および／または形態のデータネットワークおよび／または通信ネットワークがネットワーク６５０または６５０’に利用できる。ネットワーク６５０または６５０’は、パブリックネットワーク（ｐｕｂｌｉｃ  ｎｅｔｗｏｒｋ）、プライベートネットワーク（ｐｒｉｖａｔｅ  ｎｅｔｗｏｒｋ）、またはパブリックネットワークとプライベートネットワークとの組み合わせであり得る。一般に、ネットワーク６５０または６５０’は、コンピューティング装置間の情報の伝達に用いられる。たとえば、クライアント端末２００Ａ、２００Ｂ、ＶＲビデオストリーミングシステム１００およびＶＲコンテンツサーバ７５０の間で情報を伝達することに用いられる。
【００２６】
図１を参照すると、ＶＲビデオストリーミングシステム１００は、ビデオサーバ１２０とストリーマー（ｓｔｒｅａｍｅｒ）１８０を含む。幾つかの実施形態において、ビデオサーバ１２０は、ＶＲビデオデータをローカルに保存（例えば、ビデオファイルとして）し、或いはＶＲコンテンツサーバ７５０からストリーミングされるビデオデータを受信する。幾つかの実施形態において、ストリーマー１８０は、通信サーバ１３０とストリーミングサーバ１４０を含む。幾つかの実施形態において、通信サーバ１３０は、クライアント端末２００Ａ、２００ＢそれぞれとＶＲビデオストリーミングシステム１００のサービスに関する情報（例えば、ユーザログイン、ＶＲビデオコンテンツの選択、低遅延ビデオストリーミングなど）を通信する。幾つかの実施形態において、ストリーミングサーバ１４０は、ＶＲビデオフレームデータを各クライアント端末２００Ａ、２００Ｂにストリーミングする。幾つかの実施形態において、ＶＲビデオストリーミングシステム１００は、図２に示されたコンピューティングシステム３００と類似の構成を持つ。コンピューティングシステム３００は、図２を参照して以下でより詳細に説明する。図１に示されたＶＲビデオストリーミングシステム１００の幾つかの実施形態において、図２に示されたコンピューティングシステム３００の構成要素の一部は省略されてもよい。
【００２７】
再び図１を参照すると、それぞれのクライアント端末２００Ａ、２００Ｂは、ＶＲビデオストリーミングシステム１００からビデオストリーミングデータを受信する。より詳しくは、ストリーマー１８０のストリーミングサーバ１４０から前記ビデオストリームデータを受信することができる。幾つかの実施形態において、クライアント端末２００Ａ、２００Ｂそれぞれは、ディスプレイ（例えば、ＨＭＤ（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）、光学ＨＭＤ）、入力装置（例えば、カメラ、ヘッドセット）およびセンサ（例えば、モーションセンサ、位置／方向センサ、モーションシミュレータ、ジェスチャー追跡システムなど）を持つ仮想現実クライアント端末であり得る。幾つかの実施形態において、クライアント端末２００Ａ、２００Ｂそれぞれは、ＶＲビデオストリーミングシステム１００のサービスに関する情報を交換するために、通信サーバ１３０と通信することができる。例えば、クライアント端末２００Ａ、２００Ｂそれぞれは、方位角およびピッチ角を指し示す視野角データの形でユーザの現在のＦＯＶを通信サーバ１３０に提供することができる。幾つかの実施形態において、クライアント端末２００Ａ、２００Ｂは、図２に示されたコンピューティングシステム３００と類似の構成を有する。図１に示されたクライアント端末２００Ａ、２００Ｂの幾つかの実施形態において、図２に示されたコンピューティングシステム３００の構成要素の一部は省略されてもよい。
【００２８】
図２はコンピューティングシステム３００を例示的に示すブロック図である。例示的な実施形態において、例示的なコンピューティングシステム３００は、本明細書に記載されたコンピュータ化構成要素を実現する用途に適する。概略的には、コンピューティングシステム３００は、インストラクション（ｉｎｓｔｒｕｃｔｉｏｎ）に基づいて動作を行うための少なくとも一つのプロセッサ３１０と、インストラクションおよびデータを保存するための一つ以上のメモリ装置３６０または３２０とを含む。また、コンピューティングシステム３００は、次のセクションで説明されるように、少なくとも一つのＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３７０とビデオメモリ３８０とを含む。
【００２９】
図２を参照すると、図示された例示的なコンピューティングシステム３００は、通信システム３４０（例えば、バス）を介してメモリ３５０と通信する一つ以上のプロセッサ３１０、ネットワーク（図示せず）に接続するためのネットワークインターフェースポートを有する少なくとも一つのネットワークインターフェースコントローラ３３０、および入力／出力（Ｉ／Ｏ）コンポーネント３５０などの他のコンポーネントを含む。一般に、プロセッサ（ら）３１０は、メモリ３６０から受信したイントラクション（またはコンピュータプログラム）を実行する。図示されたプロセッサ３１０は、キャッシュメモリ３２０を含むか或いは直接接続される。場合に応じて、キャッシュメモリ３２０は、メモリ３６０からイントラクションを読み込み、プロセッサ３１０は、キャッシュメモリ３２０から前記イントラクションを読み込んで実行する。
【００３０】
より詳しくは、プロセッサ（ら）３１０は、例えば、メモリ３６０またはキャッシュメモリ３２０からフェッチ（ｆｅｔｃｈ）されたイントラクションを処理する任意の論理回路であり得る。多くの実施形態において、プロセッサ３１０は、マイクロプロセッサユニット（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ）または特殊な目的のプロセッサである。コンピューティングシステム３００は、ここで説明したように動作することが可能な任意のプロセッサまたはプロセッサの集合に基づくことができる。プロセッサ（ら）３１０は、単一コアまたはマルチコアプロセッサであり得る。プロセッサ（ら）３１０は、多数の別個のプロセッサであり得る。
【００３１】
メモリ３６０は、コンピュータ可読データの保存に適した任意の装置であり得る。メモリ３６０は、固定式記憶装置または移動式記憶媒体を読み取るための装置であり得る。メモリ３６０の例としては、すべての形態の不揮発性メモリ、媒体およびメモリ装置、半導体メモリ装置（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＳＤＲＡＭおよびフラッシュメモリ装置）、磁気ディスク、光磁気ディスクおよび光ディスク（例えば、ＣＤ  ＲＯＭ、ＤＶＤ−ＲＯＭまたはＢｌｕ−ｒａｙディスク）が含まれ得る。コンピューティングシステム３００は、任意の数のメモリ装置３６０を持つことができる。
【００３２】
キャッシュメモリ３２０は、一般に、高速アクセス時間を提供するために、プロセッサ（ら）３１０に近接して配置されたコンピュータメモリの形態である。幾つかの実施形態において、キャッシュメモリ３２０は、プロセッサ（ら）３１０の一部であるか或いはプロセッサ３１０と同一のチップ上にあり得る。幾つかの実施形態において、Ｌ２およびＬ３キャッシュレイヤのように多重レベルのキャッシュ３２０があり得る。
【００３３】
ネットワークインターフェースコントローラ３３０は、ネットワークインターフェース（場合によってはネットワークインターフェースポートと命名される。）を介したデータ交換を管理する。ネットワークインターフェースコントローラ３３０は、ネットワーク通信のために、ＯＳＩモデルの物理階層およびデータリンク階層を処理する。幾つかの実施形態において、ネットワークインターフェースコントローラ３３０のタスクのうちの一部は、一つ以上のプロセッサ（ら）３１０によって処理される。幾つかの実施形態において、ネットワークインターフェースコントローラ３３０は、プロセッサ３１０の一部であり得る。幾つかの実施形態において、コンピューティングシステム３００は、単一コントローラ３３０によって制御される多数のネットワークインターフェースを有する。幾つかの実施形態において、コンピューティングシステム３００は、多数のネットワークインターフェースコントローラ３３０を有する。幾つかの実施形態において、それぞれのネットワークインターフェースは、物理的ネットワークリンク（例えば、ｃａｔ−５イーサネットリンク）に対する接続点である。幾つかの実施形態において、ネットワークインターフェースコントローラ３３０は、無線ネットワーク接続をサポートし、ネットワークインターフェースポートは、無線（例えば、ラジオ）送／受信機（例えば、ＩＥＥＥ  ８０２．１１プロトコル、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）、ＡＮＴまたは他の無線プロトコルのいずれかのものに対する）である。幾つかの実施形態において、ネットワークインターフェースコントローラ３３０は、イーサネット（Ｅｔｈｅｒｎｅｔ）などの１つ以上のネットワークプロトコルを実現する。一般に、コンピューティングシステム３００は、ネットワークインターフェースを用いることにより、物理的または無線リンクを介して他のコンピューティング装置とデータを交換する。ネットワークインターフェースは、コンピューティングシステム３００を直接他の装置と接続させるか、或いは中継装置を介してコンピューティングシステム３００を他の装置に接続することができる。ここで、前記中継装置は、例えば、ハブ、ブリッジ、スイッチまたはルータのように、コンピューティングシステム３００をインターネットなどのデータネットワークに接続させるネットワーク装置を意味することができる。
【００３４】
コンピューティングシステム３００は、一つ以上の入力または出力（Ｉ／Ｏ）装置を含むか、またはそれに対するインターフェースを提供することができる。入力装置には、キーボード、マイク、タッチスクリーン、フットペダル、センサ、ＭＩＤＩ装置、およびマウスやトラックボールなどのポインティング装置が含まれ得るが、これに限定されるものではない。出力装置には、ビデオディスプレイ、スピーカー、再生可能な点字端末、照明、ＭＩＤＩ装置および２−Ｄまたは３−Ｄプリンターが含まれ得るが、これに限定されるものではない。
【００３５】
他の構成要素には、Ｉ／Ｏインターフェース、外部シリアル装置ポートおよび追加のコプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）が含まれ得る。例えば、コンピューティングシステム３００は、入力装置、出力装置または追加のメモリ装置（例えば、携帯用フラッシュドライブまたは外部メディアドライブ）を接続するためのインターフェース（例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェース）を含むことができる。幾つかの実施形態において、コンピューティングシステム３００は、コプロセッサなどの付加装置を含むことができる。例えば、コンピューティングシステム３００は、数値動作コプロセッサを含むことができ、前記数値動作コプロセッサは、高精度または複雑な計算を行うことによりプロセッサ３１０を補助することができる。
【００３６】
ＧＰＵ３７０は、グラフィックスアクセラレータチップ、プロセッサ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、アナログ回路、デジタル回路、アクセラレータカード、またはこれらの組み合わせであり得る。一実施形態において、ＧＰＵ３７０は、ｎＶｉｄｉａ、ＡＴＩまたはＭａｔｒｏｘによって製造されたもののようなパーソナルコンピュータグラフィックスアクセラレータカードまたはコンポーネントであり得る。ＧＰＵ３７０は、３次元テクスチャマッピング（３Ｄ  ｔｅｘｔｕｒｅ  ｍａｐｐｉｎｇ）のためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を利用するのと同様に、ボリュームレンダリング（ｏｌｕｍｅ  ｒｅｎｄｅｒｉｎｇ）プロセスを加速化するためのハードウェア装置を提供する。例えば、そのようなＡＰＩは、ＯｐｅｎＧＬおよびＤｉｒｅｃｔＸを含むが、他のＡＰＩは、ＧＰＵ３７０とは独立して利用されるか、或いはＧＰＵ３７０と共に利用され得る。ｎＶｉｄｉａ  ＧＰＵに対する例示的なＡＰＩは、ｈｔｔｐ：／／ｄｏｃｓ．ｎｖｉｄｉａ．ｃｏｍ／ｃｕｄａ／＃ａｘｚｚ４０ＴＩＧＶｄＮＬで利用可能な「ＣＵＤＡ  Ｔｏｏｌｋｉｔ  Ｄｏｃｕｍｅｎｔａｔｉｏｎ  ｖ．７．５」というタイトルのＷｅｂドキュメントに説明されており、本特許出願で説明された機能を行うようにＧＰＵを構成する方法についての詳細は、本明細書に参照として含まれる。幾つかの実施形態において、ＡＰＩまたは前記ＡＰＩを制御するアプリケーション（ａｐｐｌｉｃａｔｉｏｎ）に基づいて、ＧＰＵ３７０は、コンピュータグラフィックスに対する変換（ｔｒａｎｓｆｏｒｍａｔｉｏｎ）、投影（ｐｒｏｊｅｃｔｉｏｎ）およびマッピング（例えば、球体投影（ｓｐｈｅｒｉｃａｌ  ｐｒｏｊｅｃｔｉｏｎ）および座標系変換）を行うように動作することができる。
【００３７】
ビデオメモリ３８０は、ＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＡＭドライブまたはＲＡＭディスク、またはデータまたはビデオ情報を保存するための他のメモリ装置を含む。一実施形態において、ビデオメモリ３８０は、ＧＰＵ３７０に対するＶＲＡＭである。ＧＰＵ３７０用のドライバまたはメモリドライバは、ビデオメモリ３８０によるデータ保存を制御する。ビデオメモリ３８０は、データを保存、伝送およびフェッチするためにドライバに応答する。ビデオメモリ３８０は、データのサブセット（ｓｕｂｓｅｔ）またはブロックを保存するように動作することができる。
【００３８】
図３はＶＲビデオストリーミングシステムを例示的に示すブロック図である。図３を参照すると、幾つかの実施形態において、ＶＲビデオストリーミングシステム１００は、第１プロセッサ１０１、第１メモリ１１０、ＧＰＵ１０２および第２メモリ１５０を含む。また、第２メモリ１５０は、例えば、デコードされたフレームバッファ１６０、第１フレームバッファ１６１、第２フレームバッファ１６２、およびエンコードされたフレームバッファ１６４などの複数のフレームバッファを含む。幾つかの実施形態において、第１プロセッサ１０１は、図２に示されたプロセッサ３１０と類似の構成を持つ。幾つかの実施形態において、ＧＰＵ１０２は、図２のＧＰＵ３７０と類似の構成を持つ。幾つかの実施形態において、第１メモリ１１０は、図２に示されたメモリ３６０と類似の構成を持つ。幾つかの実施形態において、第２メモリ１５０は、図２に示されたビデオメモリ３８０と類似の構成を持つ。幾つかの実施形態において、ＶＲビデオストリーミングシステム１００は、第１メモリ１１０または第２メモリ１５０に常駐することが可能なソースビデオメモリ（ｓｏｕｒｃｅ  ｖｉｄｅｏ  ｍｅｍｏｒｙ）１１５を含む。
【００３９】
図３を参照すると、幾つかの実施形態において、ビデオサーバ１２０は、第１プロセッサ１０１またはＧＰＵ１０２によって実行または実現され得る。たとえば、ビデオサーバ１２０は、第１プロセッサ１０１を介して、ソースビデオデータ（例えば、ビデオサーバ１２０のローカルに保存されたビデオファイル、またはＶＲコンテンツサーバ７５０からストリーミングされたビデオデータ）を得るように構成できる。幾つかの実施形態において、前記ソースビデオデータは、多数の球体画像フレームデータ（例えば、３６０度４Ｋ
ＵＨＤフレームデータ）を含む。幾つかの実施形態において、ビデオサーバ１２０は、前記ソースビデオデータをソースビデオメモリ１１５に保存することができる。
【００４０】
幾つかの実施形態において、ビデオサーバ１２０は、ＧＰＵ１０２によって実行または実現できるパーサー（ｐａｒｓｅｒ）１２１、デコーダ（ｄｅｃｏｄｅｒ）１２２、ポストプロセッサ（ｐｏｓｔ−ｐｒｏｃｅｓｓｏｒ）１２３およびエンコーダ（ｅｎｃｏｄｅｒ）１２４を含むことができる。幾つかの実施形態において、パーサー１２１は、ＧＰＵ１０２を介して、ソースビデオメモリ１１５に保存されたソースビデオデータをパーシングし、前記ソースビデオデータから互いに異なる球体画像フレームを特定する。幾つかの実施形態において、デコーダ１２２は、ＧＰＵ１０２を介してパーシングされた球体画像フレームをデコードし、デコードされた球体画像フレームをデコードされたフレームバッファ１６０に保存する。幾つかの実施形態において、デコーダ１２２及びエンコーダ１２４は、Ｈ．２６４、Ｈ．２６５／ＨＥＶＣ（Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）などの産業標準（ｉｎｄｕｓｔｒｉａｌ  ｓｔａｎｄａｒｄ）の圧縮／圧縮解除技術を利用することができる。幾つかの実施形態において、デコーダ１２２は、第１球体画像フレームデータをデコードし、デコードされたデータをデコードされたフレームバッファ１６０に保存する。例示的なデコーダは、２０１５年１１月の「ＮＶＩＤＩＡ  ＶＩＤＥＯ  ＤＥＣＯＤＥＲ（ＮＶＣＵＶＩＤ）  ＩＮＴＥＲＦＡＣＥ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ」というタイトルの文書に説明されており、本特許出願で説明されたデコード機能を達成するためにデコーダを構成する方法についての詳細は、本明細書に参照として含まれる。幾つかの実施形態において、ポストプロセッサ１２３は、カラーフォーマット変換（ｃｏｌｏｒ  ｆｏｒｍａｔ  ｃｏｎｖｅｒｓｉｏｎ）を行う。例えば、ポストプロセッサ１２３は、デコードされたフレームバッファ１６０に保存されたフレームデータを輝度（ｌｕｍｉｎａｎｃｅ）／色差（ｃｈｒｏｍｉｎａｎｃｅ）フォーマットからＡＲＧＢ（Ａｌｐｈａ  Ｒｅｄ  Ｇｒｅｅｎ  Ｂｌｕｅ）カラーフォーマットに変換することができる。幾つかの実施形態において、ポストプロセッサ１２３は、カラーフォーマットに変換されたフレームデータを第１フレームバッファ１６１に保存する。幾つかの実施形態において、ポストプロセッサ１２３は、ＧＰＵ１０２を介して球体−エクイレクタングラー変換（例えば、球体／エクイレクタングラー投影またはマッピング方法を利用）を行う。例示的な球体／エクイレクタングラー投影は、Ｐａｕｌ  Ｂｏｕｒｋｅによって作成された「Ｔｒａｎｓｆｏｒｍａｔｉｏｎｓ  ａｎｄ  ｐｒｏｊｅｃｔｉｏｎｓ」というタイトルの文書に説明されており、本特許出願で説明された投影、変換およびマッピングに対する方法についての詳細は、本明細書に参照として含まれる。幾つかの実施形態において、第１球体画像フレームデータが第１フレームバッファ１６１に保存されることに応答して、ポストプロセッサ１２３は、ＧＰＵ１０２を介して第１球体画像フレームデータを第１エクイレクタングラー画像フレームデータに変換する。たとえば、ポストプロセッサ１２３は、ＧＰＵ１０２を介して３６０度４Ｋ
ＵＨＤ画像フレームデータを、補正されていない（ｃｏｒｒｅｃｔｅｄ）或いは歪んでいない（ｕｎｄｉｓｔｏｒｔｅｄ）エクイレクタングラー画像フレームデータに変換する。幾つかの実施形態において、ポストプロセッサ１２３は、ＧＰＵ１０２を介して第１球体画像フレームデータ（例えば、３６０度４Ｋ
ＵＨＤ画像フレームデータ）を、第１球体画像フレームデータが示す球体画像の一部分に対応する第１エクイレクタングラー画像フレームデータ（例えば、クライアント端末におけるユーザの現在ＦＯＶに対応する３６０度４Ｋ
ＵＨＤ画像フレームデータの一部分）に変換する。図４は球体フレーム画像３０１と現在のＦＯＶに対応する球体フレーム画像３０１の一部分３０２を例示的に示す。
【００４１】
また、幾つかの実施形態において、ポストプロセッサ１２３は、ＧＰＵ１０２を介して拡張現実（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ；ＡＲ）のための画像処理を行う。たとえば、ポストプロセッサ１２３は、変換された第１エクイレクタングラー画像フレームをグラフィックコンテンツ（例えば、道路画像を車両画像とブレンド）、またはテキスト／グラフィック情報（例えば、距離画像を商店画像とブレンド）と共にブレンド（ｂｌｅｎｄｉｎｇ）することができる。幾つかの実施形態において、後処理動作（例えば、球体−エクイレクタングラー変換）完了に応答して、ポストプロセッサ１２３は、後処理されたフレームデータを第２フレームバッファ１６２に保存する。幾つかの実施形態において、エンコーダ１２４は、ＧＰＵ１０２を介して、第２フレームバッファ１６２に保存された、前記後処理されたフレームデータをエンコードし、エンコードされたフレームデータをエンコードされたフレームバッファ１６４に保存する。例示的なエンコーダは、「ＮＶＩＤＩＡ  ＶＩＤＥＯ  ＥＮＣＯＤＥＲ（ＮＶＥＮＣ）  ＩＮＴＥＲＦＡＣＥ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ」というタイトルの文書に説明されており、本特許出願で説明された前記エンコード機能を達成するためにエンコーダを構成する方法についての詳細は、本明細書に参照として含まれる。幾つかの実施形態において、パーサー１２１、デコーダ１２２、ポストプロセッサ１２３およびエンコーダ１２４は、ＶＲビデオストリーミングシステム１００のＧＰＵ１０２によって実行される。幾つかの実施形態において、パーサー１２１、デコーダ１２２、ポストプロセッサ１２３およびエンコーダ１２４の一部の動作は第１プロセッサ１０１によって実行され、他の動作はＧＰＵ１０２によって実行される。
【００４２】
図３を参照すると、幾つかの実施形態において、ＶＲビデオストリーミングシステム１００は通信サーバ１３０を含む。また、通信サーバ１３０は、第１プロセッサ１０１またはＧＰＵ１０２のうちの少なくとも一つによって実行または実現できる。幾つかの実施形態において、通信サーバ１３０は、第１プロセッサ１０１を介してクライアント端末（例えば、クライアント端末２００Ａ）との接続を設定する。幾つかの実施形態において、前記設定された接続は、例えば、Ｗｅｂソケットプロトコルのように全二重チャネルプロトコル（ｆｕｌｌ−ｄｕｐｌｅｘ  ｃｈａｎｎｅｌ  ｐｒｏｔｏｃｏｌ）を用いる。そうすることで、大量のプロトコルヘッダ（例えば、ｈｔｔｐヘッダ）を通信することなく、幾つかのフレーム（例えば、Ｗｅｂソケットフレーム）を用いて接続が設定できるため、遅延時間が減少できる。幾つかの実施形態において、通信サーバ１３０は、ポストプロセッサ１２３によって変換された第１エクイレクタングラー画像フレームデータに対応する第１ＦＯＶに関する第１情報をクライアント端末へ伝送することができる。幾つかの実施形態において、通信サーバ１３０は、前記クライアント端末から第２ＦＯＶ（例えば、前記クライアント端末のユーザの現在ＦＯＶ）に関する第２情報を受信することができる。幾つかの実施形態において、クライアント端末２００ＡおよびＶＲビデオストリーミングシステム１００の両方ともで、初期ＦＯＶは、デフォルトで、ユーザが現在見ている画像フレームの中心から一直線に右を向く角度に設定できる。幾つかの実施形態において、ＦＯＶに関する情報は、ピッチ角および方位角を指し示す視野角情報を含む。幾つかの実施形態において、クライアント端末からの要求に応じて（例えば、Ｗｅｂソケットプロトコルを介して）、通信サーバ１３０は、第１プロセッサ１０１を介して前記ユーザの現在ＦＯＶを非同期的に更新することができる。また、前記更新は、ＧＰＵ１０２がビデオサーバ１２０の動作（例えば、パーサー１２１、デコーダ１２２、ポストプロセッサ１２３およびエンコーダ１２４によって行われる動作）を処理する間に行われ得る。幾つかの実施形態において、非同期的に更新されたＦＯＶは、図４乃至図６を参照して、後述されるように、エンコード遅延時間を減らすために活用できる。たとえば、ビデオサーバ１２０は、ＧＰＵ１０２を介して、球体画像フレームデータを、前記球体画像フレームデータが示す球体画像から、非同期的に更新されたＦＯＶに対応するエクイレクタングラー球体画像フレームデータに直ちに変換することにより、エンコード遅延時間を減少させることができる。幾つかの実施形態において、クライアント端末は、通信サーバ１３０との安定した接続方法（例えば、ｊｅｔｔｙベースのＷｅｂソケットプロトコル）を用いて前記クライアント端末のユーザの現在視野角に対して通信サーバを更新することができる。そうすることで、一定の接続状態を提供することができ、セキュリティオーバーヘッドおよび遅延時間を減少させることができる。
【００４３】
幾つかの実施形態において、クライアント端末は、特定のＶＲ画像／ビデオデータを通信サーバ１３０に要求することができる。たとえば、クライアント端末は、Ｗｅｂソケットプロトコルを介して通信サーバ１３０にＶＲ画像要求を伝送することができる。幾つかの実施形態において、このようなクライアント端末の要求に応じて、通信サーバ１３０は、第１プロセッサ１０１を介して、前記要求に対応するソースビデオデータ（例えば、ローカルファイルに保存されるか或いはＶＲコンテンツサーバ７５０によってストリーミングされたソースビデオデータ）をフェッチし、ＧＰＵ１０２に、前記対応するソースビデオデータを提供することができる。ＧＰＵ１０２は、前記対応するソースビデオデータに対して、上述したデコード／後処理／エンコード動作を行うことができる。幾つかの実施形態において、通信サーバ１３０は、ＶＲビデオストリーミングシステム１００のサービスを管理するための用途で、Ｗｅｂサービスを提供することができる（例えば、前記サービスに対するユーザのログインおよび認証書（ｃｒｅｄｅｎｔｉａｌ）検査管理、ユーザアカウント／プロファイル管理、およびユーザが視聴するビデオコンテンツを選択することができるようにするためのＶＲビデオコンテンツリスト）。
【００４４】
図３を参照すると、ＶＲビデオストリーミングシステム１００はストリーミングサーバ１４０を含むことができる。また、ストリーミングサーバ１４０は、第１プロセッサ１０１またはＧＰＵ１０２の少なくとも一つによって実行または実現できる。幾つかの実施形態において、ストリーミングサーバ１４０は、第１プロセッサ１０１を介してクライアント端末（例えば、クライアント端末２００Ａ）との第１接続を設定する。幾つかの実施形態において、ストリーミングサーバ１４０は、前記クライアント端末のユーザにビデオデータを適時に伝達するために、ＲＴＳＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ）を使用する。幾つかの実施形態において、ストリーミングサーバ１４０は、エンコードされたフレームバッファ１６４からエンコードされた第１エクイレクタングラー画像フレームデータを読み込み、前記エンコードされた第１エクイレクタングラー画像フレームデータを第１接続を介してクライアント端末２００Ａにストリーミングする。幾つかの実施形態において、ビデオサーバ１２０とストリーミングサーバ１４０は、別個のプロセスとして実行される。幾つかの実施形態において、通信サーバ１３０とストリーミングサーバ１４０は、単一プロセスとして実行されるように構成できる。幾つかの実施形態において、通信サーバ１３０は、Ｗｅｂソケットプロトコルを介してクライアント端末と直接イントラクションし、ビデオサーバ１２０と同一の物理的サーバ上で実行される。そうすることにより、フィードバックおよび通信遅延時間が減少できる。幾つかの実施形態において、ストリーミングサーバ１４０と通信サーバ１３０（以下、総称して「ストリーマー」１８０）は、同一の単一プロセスとして実行されるのに対し、ビデオサーバ１２０は、ストリーマー１８０によって開始および管理できる別のプロセスとして実行される。このような二重プロセス構成は、ネットワーク応答性（遅延減少によって）およびシステム安定性を向上させることができる。幾つかの実施形態において、ストリーミングサーバ１４０とビデオサーバ１２０は、ＲＡＭドライブまたはＲＡＭディスクを介してビデオストリームデータ（最終的にクライアント端末に提供される）を共有することができる。このようなＲＡＭドライブまたはＲＡＭディスクは、実際データがシステムＲＡＭにある間にファイルにアクセスできるので、ハードウェアＩ／Ｏオーバーヘッドおよび遅延時間が除去される。
【００４５】
図５は本発明の幾つかの実施形態に係るＶＲビデオストリーミングシステム１００のＦＯＶベースの後処理方法４００の動作を示すフローチャートである。概略的には、ＦＯＶベースの後処理方法４００は、段階４１０で開始し、ここで、ビデオサーバのＧＰＵ（例えば、図３のＧＰＵ１０２）は、第１球体画像フレームデータを生成するためにソースビデオをパーシングし、デコードすることができる。段階４２０で、ＧＰＵ１０２は、前記ビデオの第１球体画像フレームを示す第１球体画像フレームデータを第１フレームバッファメモリ（例えば、第１フレームバッファ１６１）に保存することができる。段階４４０で、ビデオサーバの第１プロセッサ（例えば、図３のプロセッサ１０１）は、クライアント端末から第１ＦＯＶに関する第１情報を受信することができる。段階４５０で、ビデオサーバのＧＰＵ１０２は、第１フレームバッファメモリに保存された球体画像フレームデータを第１球体画像フレームの第１ＦＯＶに対応するエクイレクタングラー画像フレームデータに変換することができる。段階４６０で、ビデオサーバのＧＰＵ１０２は、ストリーミングサーバ（例えば、図３のストリーミングサーバ１４０）が、第１ＦＯＶに対応するエンコードされたエクイレクタングラー画像フレームデータだけをクライアント端末にストリーミングすることができるように、前記変換されたエクイレクタングラー画像フレームデータをエンコードすることができる。また、前記エンコーディングによってエンコードされた画像フレームデータが生成される。図５に示されたフローチャートは、図７乃至図９を参照してより詳細に説明する。
【００４６】
図７、図８および図９は、例示的なＶＲビデオストリーミングシステムで行われるＦＯＶベースの後処理方法を例示的に示すブロック図である。図７は、連続的なビデオフレーム（例えば、フレーム＃Ｎ、フレーム＃Ｎ＋１、およびフレーム＃Ｎ＋２）に対するＧＰＵ処理のタイミングを例示的に示す。一般なビデオファイルのＦＰＳは、通常、秒あたり２４、２５、２９または３０フレームである。例えば、図７に示すように、３０ＦＰＳビデオファイルの場合は、各フレームのエンコード完了間の時間間隔は３３ｍｓであり、デコーダからのフレーム＃Ｎのタイムスタンプ（ｔｉｍｅ  ｓｔａｍｐ）はＮ＊３３ｍｓであり、フレーム＃Ｎ＋１のタイムスタンプはＮ＋１＊３３ｍｓなどであり得る。言い換えれば、図７を参照すると、フレーム＃Ｎ（５０１）とフレーム＃Ｎ＋１（５０２）のデコード／後処理／エンコードの完了間の時間間隔は３３ｍｓであり、フレーム＃Ｎ＋１（５０２）とフレーム＃Ｎ＋２（５０３）のデコード／後処理／エンコードの完了間の時間間隔も３３ｍｓである。したがって、本例において、各フレームは、１秒あたり３０フレームを生成（およびストリーム）するために３３ｍｓごとにエンコードされる。
【００４７】
図８はフレーム＃Ｎを後処理する前にクライアント端末からＦＯＶ変更入力（例えば、方位角およびピッチ角）が受信される場合にＦＯＶベースの後処理方法が行われる例を示す。図８を参照すると、例えば、ＧＰＵがフレーム＃Ｎに対してデコード５１１／後処理５１３／エンコード５１４を行い、フレーム＃Ｎ＋１に対してデコード５１５／後処理５１６／エンコード５１８を行う。幾つかの実施形態において、ＶＲビデオストリーミングシステム１００のプロセッサ（例えば、図３のプロセッサ１０１が、フレーム＃Ｎの後処理５１３を行う前に前記クライアント端末から（第１ＦＯＶに関する）第１ＦＯＶ変更入力Ｖ１（５１２）を受信すると、前記ＧＰＵは、フレーム＃Ｎ＋１の後処理５１６を行う間に第１ＦＯＶ変更入力Ｖ１を反映（５１７）することができる。幾つかの実施形態において、前記ＧＰＵは、フレーム＃Ｎ＋１に関連する球体画像データを、前記フレーム＃Ｎ＋１の球体画像フレームデータが示す球体画像フレームの第１ＦＯＶに対応するエクイレクタングラー画像フレームデータに変換することにより、第１ＦＯＶ変更入力Ｖ１を反映することができる。本例において、フレーム＃Ｎのエンコード完了とフレーム＃Ｎ＋１のエンコーディング完了との間の時間間隔は３３ｍｓに維持できる。
【００４８】
図９はフレーム＃Ｎの後処理の間にクライアント端末からのＦＯＶ変更入力（例えば、変更された方位角およびピッチ角）が受信される場合にＦＯＶベースの後処理方法が行われる他の例を示す。図９を参照すると、例えば、ＧＰＵは、フレーム＃Ｎのデコード５２１／後処理５２３／エンコーディング５２４を行い、次いでフレーム＃Ｎ＋１のデコード５２５／後処理５２６／デコード５２８を行う。幾つかの実施形態において、ＶＲビデオストリーミングシステム１００のプロセッサが前記フレーム＃Ｎの後処理５２３の後にクライアント端末から（第２ＦＯＶに関する）第２ＦＯＶ変更入力Ｖ２を受信（５２２）すると、前記ＧＰＵは、フレーム＃Ｎ＋１を後処理（５２６）する間に第２ＦＯＶ変更入力Ｖ２を反映（５２７）する。幾つかの実施形態において、前記ＧＰＵは、フレーム＃Ｎ＋１に関連する球体画像データを、前記フレーム＃Ｎ＋１の球体画像フレームデータが示す球体画像フレームの第２ＦＯＶに対応するエクイレクタングラー画像フレームデータに変換することにより、第２ＦＯＶ変更入力Ｖ２を反映することができる。本例において、フレーム＃Ｎのエンコード完了とフレーム＃Ｎ＋１のエンコード完了との間の時間間隔は３３ｍｓに維持できる。
【００４９】
次に、図５に示したフローチャートを図７乃至図９を参照してより詳細に説明する。段階４１０で、ビデオサーバ（例えば、図３に示されたビデオサーバ１２０）のＧＰＵ（例えば、図３に示されたＧＰＵ１０２）は、第１球体画像フレームデータを生成するためにソースビデオをパーシングし、デコードすることができる。例えば、図８を参照すると、前記ＧＰＵが、フレーム＃Ｎに対する球体画像フレームデータを生成するために、フレーム＃Ｎをパーシングおよびデコード（５１１）する。
【００５０】
段階４２０で、ビデオサーバの前記ＧＰＵは、前記ソースビデオの第１球体画像フレームを示す第１球体画像フレームデータを第１フレームバッファメモリ（例えば、図３に示された第１フレームバッファ１６１）に保存することができる。幾つかの実施形態において、次いで、前記ＧＰＵは、第１フレームバッファ１６１から第１球体画像フレームデータを読み込み、第１球体画像フレームデータを後処理する。例えば、図８を参照すると、前記ＧＰＵは、第１フレームバッファ１６１からフレーム＃Ｎに対する球体画像フレームデータを読み込み、フレーム＃Ｎに対する第１球体画像フレームデータを後処理（５１３）する。同様に、図９を参照すると、前記ＧＰＵは、第１フレームバッファ１６１からフレーム＃Ｎに対する球体画像フレームデータを読み込み、フレーム＃Ｎに対する第１球体画像フレームデータを後処理（５２３）する。
【００５１】
段階４４０で、ビデオサーバの第１プロセッサ１０１は、クライアント端末（例えば、図１および図３に示されたクライアント端末２００Ａ）から第１ＦＯＶに関する第１情報を受信することができる。例えば、図８を参照すると、第１プロセッサは、フレーム＃Ｎを後処理（５１３）する前に第１ＦＯＶ変更入力Ｖ１（５１２）をクライアント端末から受信する。同様に、図９を参照すると、第１プロセッサ１０１は、前記クライアント端末からフレーム＃Ｎを後処理（５２３）する間または後に、第２ＦＯＶ変更入力Ｖ２（５２２）を受信する。幾つかの実施形態において、前記クライアント端末は、方位角およびピッチ角を指し示す視野角データを含むＦＯＶ変更入力をＶＲビデオストリーミングシステム（例えば、図１および図３に示されたＶＲビデオストリーミングシステム１００）に伝送する。
【００５２】
段階４５０で、ビデオサーバのＧＰＵ１０２は、第１フレームバッファメモリに保存された球体画像フレームデータを、前記球体画像フレームデータが示す第１球体画像フレームの第１ＦＯＶに対応するエクイレクタングラー画像フレームデータに変換することができる。例えば、図８を参照すると、ビデオサーバの前記ＧＰＵは、（後処理５１６の間）フレーム＃Ｎ＋１の球体画像フレームデータを、第１ＦＯＶ変更入力Ｖ１に対応するフレーム＃Ｎ＋１のエクイレクタングラー画像フレームデータに変換する（第１ＦＯＶ変更入力Ｖ１がフレーム＃Ｎ＋１に対する球体画像フレームデータに反映されるようにするため）。同様に、図９を参照すると、ビデオサーバの前記ＧＰＵは、（後処理５２６の間）フレーム＃Ｎ＋１の前記球体画像フレームデータを第２ＦＯＶ変更入力Ｖ２に対応するフレーム＃Ｎ＋１のエクイレクタングラー画像フレームデータに変換する（第２ＦＯＶ変更入力Ｖ２がフレーム＃Ｎ＋１に対する球体画像フレームデータに反映されるようにするため）。エンコード遅延時間を減らすための段階４５０の変形動作は、図６および図１０乃至図１２を参照してより詳細に後述する。
【００５３】
段階４６０で、ビデオサーバのＧＰＵ１０２は、ストリーミングサーバが第１ＦＯＶに対応するエンコードされたエクイレクタングラー画像フレームデータのみをクライアント端末にストリーミングすることができるように変換されたエクイレクタングラー画像フレームデータをエンコードし、エンコードされた画像フレームデータを生成することができる。例えば、図８を参照すると、ビデオサーバの前記ＧＰＵは、フレーム＃Ｎ＋１に対する変換されたエクイレクタングラー画像フレームデータをエンコード（５１８）して、フレーム＃Ｎ＋１に対するエンコードされた画像フレームデータを生成する。同様に、図９を参照すると、ビデオサーバの前記ＧＰＵは、フレーム＃Ｎ＋１に対する変換されたエクイレクタングラー画像フレームデータをエンコード（５２８）して、フレーム＃Ｎ＋１に対するエンコードされた画像フレームデータを生成する。
【００５４】
図６は本発明の幾つかの実施形態によって、ＶＲビデオストリーミングシステム１００が行うＦＯＶベースの後処理方法（例えば、エンコード遅延時間を減らすために、図６に示された段階４５０の変形動作）の動作を示すフローチャートである。概略的には、方法４５０は、段階４５１で開始し、ここで、ビデオサーバ１２０は、ＧＰＵ１０２が第１球体画像フレームデータを第１エクイレクタングラー画像フレームデータに変換し始める前にクライアント端末から第１ＦＯＶに関する第１情報が受信されたか否かを判定することができる。段階４５２で、前記ＧＰＵが第１球体画像フレームデータを第１エクイレクタングラー画像フレームデータに変換し始める前にクライアント端末から第１ＦＯＶ情報が受信されたという判定に応答して、前記ＧＰＵは、第１球体画像フレームデータを、第１球体画像フレームデータが示す第１球体画像フレームの第１ＦＯＶに対応する第１エクイレクタングラー画像フレームデータに変換することができる。段階４５３で、前記ＧＰＵが第１球体画像フレームデータを第１エクイレクタングラー画像フレームデータに変換する動作を行い始めた後、第１ＦＯＶに関する第１情報が受信されたという判定に応答して、ビデオサーバ１２０は、前記ＧＰＵが第２球体画像フレームデータ（例えば、第１球体画像フレームデータに後続する球体画像フレームデータ）を第１フレームバッファメモリに保存する前に第１ＦＯＶ情報が受信されたか否かをさらに判定することができる。段階４５４で、前記ＧＰＵが第２球体画像フレームデータを第１フレームバッファメモリに保存する前に第１ＦＯＶ情報が受信されたという判定に応答して、前記ＧＰＵは、第１フレームバッファメモリに保存された第１球体画像フレームデータを、第１球体画像フレームデータが示す第１球体画像フレームの第１ＦＯＶに対応するエクイレクタングラー画像フレームデータに変換し、変換されたエクイレクタングラー画像フレームデータをエンコードして、第２エクイレクタングラー画像フレームデータを生成する。段階４５５で、前記ＧＰＵは、第１フレームバッファメモリに保存された第２球体画像フレームデータの変換およびエンコードを省略することができる。図６に示されたフローチャートは、図１０乃至図１２を参照してより詳細に説明する。
【００５５】
図１０、図１１および図１２は、例示的なＶＲビデオストリーミングシステムでエンコード遅延時間を減少させるために行われるＦＯＶベースの後処理方法を例示的に示すブロック図である。図１０を参照すると、例えば、ＧＰＵが、フレーム＃Ｎをデコード（６０１）し／フレーム＃Ｎに対する球体画像フレームデータをエクイレクタングラー画像フレームデータに変換（６０４）し／フレーム＃Ｎをエンコード（６０６）し、次いでフレーム＃Ｎ＋１をデコード（６０７）する。幾つかの実施形態において、ビデオストリーミングシステム１００のプロセッサ（例えば、図３に示されたプロセッサ１０１）が、フレーム＃Ｎの変換（６０４）の前にクライアント端末から第３ＦＯＶ変更入力Ｖ３（６０２）を受信すると、前記ＧＰＵは、フレーム＃Ｎを変換（６０４）する間に第３ＦＯＶ変更入力Ｖ３を反映することができる。幾つかの実施形態において、前記ＧＰＵは、フレーム＃Ｎに関連した球体画像フレームデータを、フレーム＃Ｎの球体画像フレームデータが示す球体画像フレームの第３ＦＯＶに対応するエクイレクタングラー画像フレームデータに変換することにより、第３ＦＯＶ変更入力Ｖ３を反映（６０５）することができる。
【００５６】
図１１を参照すると、例えば、ＧＰＵは、フレーム＃Ｎをデコード（６１０）し／フレーム＃Ｎの球体画像フレームデータをエクイレクタングラーフレームデータに変換（６１２）し／フレーム＃Ｎをエンコード（６１５）し、次いでフレーム＃Ｎ＋１をデコード（６１７）する。幾つかの実施形態において、ビデオストリーミングシステム１００のプロセッサがフレーム＃Ｎを変換（６１２）する間または後に前記クライアント端末から（第４ＦＯＶに関する）第４ＦＯＶ変更入力Ｖ４を受信すると（６１３）、前記ＧＰＵは、フレーム＃Ｎ＋１に対する変換６１４およびエンコード６１６段階で、第４ＦＯＶ変更入力を反映（６１４’）することができる。幾つかの実施形態において、フレーム＃Ｎ＋１に対するデコード６１７が完了するまでお待ちする代わりに、前記ＧＰＵは、第１フレームバッファ１６１に保存されたフレーム＃Ｎを用いて、即刻的にフレーム＃Ｎに対する球体画像フレームデータを、前記フレーム＃Ｎに対する球体画像フレームデータが示す球体画像フレームの第４ＦＯＶに対応するエクイレクタングラーフレームデータに変換することができる（６１４）。次いで、前記ＧＰＵは、エンコードされたフレーム＃Ｎ＋１に対して前記変換されたエクイレクタングラー画像をエンコード（６１６）することができる。また、フレーム＃Ｎ＋１のデコード６１７が完了した後、前記ＧＰＵは、フレーム＃Ｎ＋１の追加処理（例えば、フレーム＃Ｎ＋１の変換およびエンコード）を省略（例えば、行わない）することができる（６１９）。なぜなら、前記エンコードされたフレーム＃Ｎ＋１が既に他の変換（６１４）およびエンコード（６１６）動作から利用可能（利用可能である予定）であるからである。このような方式で、フレーム＃Ｎのエンコード完了とフレーム＃Ｎ＋１のエンコード完了との間の時間間隔は３３ｍｍ未満のランダム時間であり得るので、フレームのエンコードにかかる時間を減少させることができる。
【００５７】
図１２を参照すると、例えば、ＧＰＵは、フレーム＃Ｎをデコード（６２０）し／フレーム＃Ｎの球体画像フレームデータをエクイレクタングラーフレームデータに変換（６２２）し／フレーム＃Ｎをエンコード（６２３）し、次いでフレーム＃Ｎ＋１をデコード（６２４）する。幾つかの実施形態において、ビデオストリーミングシステム１００のプロセッサがフレーム＃Ｎ＋１をデコード（６２４）する間または後に前記クライアント端末から（第５ＦＯＶに関する）第５ＦＯＶ変更入力Ｖ５を受信すると（６２５）、前記ＧＰＵは、フレーム＃Ｎ＋１に対する変換（６２６）およびエンコード（６２８）段階で、第５ＦＯＶ変更入力を反映（６２７）することができる。幾つかの実施形態において、フレーム＃Ｎ＋１に対するデコード（６２４）が完了するまでお待ちする代わりに、前記ＧＰＵは、第１フレームバッファ１６１に保存されたフレーム＃Ｎを用いて、即刻的にフレーム＃Ｎに対する前記球体画像フレームデータを前記フレーム＃Ｎの球体画像フレームデータが示す球体画像フレームの第５ＦＯＶに対応するエクイレクタングラーフレームデータに変換することができる（６２６）。次いで、前記ＧＰＵは、エンコードされたフレーム＃Ｎ＋１に対して、前記変換されたエクイレクタングラー画像をエンコード（６２８）することができる。また、フレーム＃Ｎ＋１のデコード（６２４）が完了した後、前記ＧＰＵは、フレーム＃Ｎ＋１の追加処理（例えば、フレーム＃Ｎ＋１の変換およびエンコード）を省略（例えば、行わないこと）することができる（６３０）。なぜなら、エンコードされたフレーム＃Ｎ＋１が既に他の変換（６２６）およびエンコード（６２８）動作から利用可能（利用可能である予定）であるからである。このような方式で、フレーム＃Ｎのエンコード完了とフレーム＃Ｎ＋１のエンコード完了との間の時間間隔は３３ｍｍ未満のランダム時間であり得るので、フレームのエンコードにかかる時間を減少させることができる。
【００５８】
次に、図１０乃至図１２を参照して、図６に示されたフローチャートをより詳細に説明する。図６を参照すると、段階４５１で、第１プロセッサ１０１またはＧＰＵ１０２は、前記ＧＰＵが第１球体画像フレームデータを第１エクイレクタングラー画像フレームデータに変換し始める前にクライアント端末から第１ＦＯＶに関する第１情報が受信されたか否かを判定することができる。例えば、図１０を参照すると、第１プロセッサ１０１またはＧＰＵ１０２は、ＧＰＵ１０２がフレーム＃Ｎの球体画像フレームデータをフレーム＃Ｎのエクイレクタングラー画像フレームデータに変換（６０４）し始める前に第３ＦＯＶ変更入力Ｖ３が受信されたと判定する。他方、図１１を参照すると、第１プロセッサ１０１またはＧＰＵ１０２は、ＧＰＵ１０２がフレーム＃Ｎの球体画像フレームデータをフレーム＃Ｎのエクイレクタングラー画像フレームデータに変換（６１２）する間または後に第４ＦＯＶ変更入力Ｖ４が受信されたと判定する。
【００５９】
段階４５２で、前記ＧＰＵが第１球体画像フレームデータを第１エクイレクタングラー画像フレームデータに変換し始める前にクライアント端末から第１ＦＯＶに関する第１情報が受信されたという判定に応答して、前記ビデオサーバのＧＰＵは、第１フレームバッファメモリ（例えば、図３に示されたフレームバッファ１６１）に保存された第１球体画像フレームデータを、第１球体画像フレームデータが示す第１球体画像フレームの第１ＦＯＶに対応する第１エクイレクタングラー画像フレームデータに変換することができる。例えば、図１０を参照すると、前記ＧＰＵがフレーム＃Ｎに対する球体画像フレームデータをフレーム＃Ｎに対するエクイレクタングラー画像フレームデータに変換（６０４）し始める前に第３ＦＯＶ変更入力Ｖ３が受信（６０２）されるので、前記ＧＰＵは、フレーム＃Ｎに対する球体画像フレームデータを第３ＦＯＶ変更入力Ｖ３に対応するフレーム＃Ｎのエクイレクタングラー画像フレームデータに変換する（第３ＦＯＶ変更入力Ｖ３がフレーム＃Ｎに対する球体画像フレームデータに反映（６０５）されるようにするため）。
【００６０】
図６を参照すると、前記ビデオサーバのＧＰＵは、第１球体画像フレームに後続するビデオの第２球体画像フレームを示す第２球体画像フレームデータをデコードし、デコードされた第２球体画像フレームデータを第１フレームバッファ（例えば、図３の第１フレームバッファ１６１）に保存することができる。例えば、図１１を参照すると、前記ビデオサーバのＧＰＵは、フレーム＃Ｎ＋１（フレーム＃Ｎの次のフレーム）をデコードし、前記デコードされたフレーム＃Ｎ＋１を示す球体画像フレームデータを第１フレームバッファ１６１に保存する。段階４５３で、第１プロセッサ１０１または前記ビデオサーバのＧＰＵは、前記ＧＰＵが第２球体画像フレームデータを第１フレームバッファメモリに保存する前に第１ＦＯＶ情報が受信されたと判定することができる。例えば、図１１を参照すると、ＧＰＵが第１フレームバッファ１６１にフレーム＃Ｎ＋１に対する球体画像フレームデータを保存する前に第４ＦＯＶ変更入力Ｖ４が受信されたと判定される（なぜなら、保存がフレーム＃Ｎ＋１のデコード６１７の後に発生するから）。同様に、図１２を参照すると、ＧＰＵが第１フレームバッファ１６１にフレーム＃Ｎ＋１に対する球体画像フレームデータを保存する前に第５ＦＯＶ変更入力Ｖ５が受信されたと決定される（なぜなら、保存がフレーム＃Ｎ＋１のデコード６２４の後に発生するから）。
【００６１】
段階４５４で、前記ビデオサーバのＧＰＵが第２球体画像フレームデータを第１フレームバッファメモリに保存する前に第１ＦＯＶに関する第１情報が受信されたという判定に応答して、前記ビデオサーバのＧＰＵは、第１フレームバッファメモリに保存された第１球体画像フレームデータを、第１球体画像フレームデータが示す第１球体画像フレームの第２ＦＯＶに対応する第２エクイレクタングラー画像フレームデータに変換することができる。例えば、図１１を参照すると、前記ビデオサーバのＧＰＵが第１フレームバッファ１６１にフレーム＃Ｎ＋１に対する球体画像フレームデータを保存する前に第４ＦＯＶ変更入力Ｖ４が受信されたという判定に応答して、前記ＧＰＵは、変換６１４時点で、第１フレームバッファ１６１に保存されたフレーム＃Ｎに対する球体画像フレームデータを第４ＦＯＶ変更入力Ｖ４に対応するエクイレクタングラー画像フレームデータに変換（６１４）する（第４ＦＯＶ変更入力Ｖ４がフレーム＃Ｎに対する球体画像フレームデータに反映（６１４’）されるようにするため）。同様に、図１２を参照すると、前記ＧＰＵが第１フレームバッファ１６１にフレーム＃Ｎ＋１に対する球体画像フレームデータを保存する前に第５ＦＯＶ変更入力Ｖ５が受信されたという判定に応答して、前記ＧＰＵは、変換６２６時点で、第１フレームバッファ１６１に保存されたフレーム＃Ｎに対する前記球体画像フレームデータを、第５ＦＯＶ変更入力Ｖ５に対応するエクイレクタングラー画像フレームデータに変換（６２６）する（第５ＦＯＶ変更入力Ｖ５がフレーム＃Ｎに対する球体画像フレームデータに反映（６２７）されるようにするため）。幾つかの実施形態において、段階４５４で、第１球体画像フレームデータの変換過程の後に、ストリーミングサーバ（例えば、図３に示されたストリーミングサーバ１４０）が、現在のＦＯＶに対応する前記エンコードされた第２エクイレクタングラー画像フレームデータだけを前記クライアント端末にストリーミングするように、前記ＧＰＵは、変換されたエクイレクタングラー画像フレームデータを、第２エンコードされた画像フレームデータにエンコードすることができる。例えば、図１１を参照すると、フレーム＃Ｎに対する球体画像フレームデータの変換（６１４）に続いて、前記ＧＰＵは、変換されたエクイレクタングラー画像フレームデータをフレーム＃Ｎ＋１に対するエンコードされた画像フレームデータにエンコード（６１６）する。同様に、図１２を参照すると、フレーム＃Ｎに対する球体画像フレームデータの変換（６２６）に続いて、前記ＧＰＵは、変換されたエクイレクタングラー画像フレームデータをフレーム＃Ｎ＋１に対するエンコードされた画像フレームデータにエンコード（６２８）する。
【００６２】
段階４５５で、第２球体画像フレームデータをデコードした後に、前記ＧＰＵは、第１フレームバッファメモリに保存された第２球体画像フレームデータに対する変換およびエンコードを省略することができる。例えば、図１１を参照すると、フレーム＃Ｎ＋１をデコード（６１７）した後に、前記ＧＰＵは、第１フレームバッファ１６１に保存されたフレーム＃Ｎ＋１に対する球体画像フレームデータをそれ以上変換およびエンコードしない。なぜなら、エンコードされたフレーム＃Ｎ＋１は、既に他の変換６１４およびエンコード６１６動作から利用可能（利用可能である予定）であるためである。同様に、図１２を参照すると、フレーム＃Ｎ＋１をデコード（６２４）した後に、前記ＧＰＵは、第１フレームバッファ１６１に保存されたフレーム＃Ｎ＋１に対する球体画像フレームデータをそれ以上変換およびエンコードしない。なぜなら、エンコードされたフレーム＃Ｎ＋１は、既に他の変換６２６およびエンコード６２８動作から利用可能（利用可能である予定である）であるためである。
【００６３】
図１３は本発明の幾つかの実施形態によって、クライアント端末が行うビデオディスプレイ方法７００の動作を示すフローチャートである。概略的には、ビデオディスプレイ方法７００は、段階７１０で開始し、ここで、前記クライアント端末（例えば、図１および図３に示されたクライアント端末２００Ａ）のＧＰＵ（例えば、図２に示されたＧＰＵ３７０）は、ディスプレイの第１表示領域に第１画像フレームの第１領域をレンダリングし、前記ディスプレイの第２表示領域に第１画像フレームの残り領域は見えないように隠された状態でレンダリングすることができる。段階７２０で、第１ＦＯＶを指し示すユーザ入力がクライアント端末のプロセッサ（例えば、図２に示されたプロセッサ３１０）によって受信されることに応答して、前記クライアント端末のＧＰＵが第２表示領域に予め隠されており、第１ＦＯＶ内に位置した第１画像フレームの第２領域をレンダリングすることができる。段階７３０で、前記クライアント端末のプロセッサは、ビデオストリーミングサーバ（例えば、図３に示されたストリーマー１８０）へ、第１ＦＯＶを指し示す情報を伝送することができる。また、前記クライアント端末のプロセッサは、前記ビデオストリーミングサーバから第１ＦＯＶに対応する第２画像フレームデータを受信することができる。段階７４０で、前記ビデオストリーミングサーバからビデオの第２画像フレームを示す第２画像フレームデータを受信することに応答して、前記ＧＰＵは、前記ディスプレイの第１表示領域に第２画像フレームの一部領域をレンダリングし、前記ディスプレイの第２表示領域に第１画像フレームの隠されていた第２領域をレンダリングすることができる。
【００６４】
次に、図１３に示されたフローチャートを、図１〜図３および図１４〜図１６を参照してより詳細に説明する。図１４〜図１６は本発明の幾つかの実施形態に係るビデオディスプレイ方法で表示されたクライアント端末の表示画面を例示的に示す図である。
【００６５】
段階７１０で、クライアント端末（例えば、図１および図３に示されたクライアント端末２００Ａ）のＧＰＵ（例えば、図２に示されたＧＰＵ３７０）は、ビデオストリーミングサーバ（例えば、図３に示されたストリーマー１８０）からビデオの第１画像フレームを示す第１画像フレームデータを受信することができる。図１４を参照すると、前記クライアント端末のＧＰＵ（例えば、図２に示されたＧＰＵ３７０）は、前記クライアント端末のディスプレイ８００の第１表示領域８１０に第１画像フレームの第１領域をレンダリングし、前記ディスプレイの第２表示領域８２０に第１画像フレームの残り領域は見えないように隠された状態でレンダリングすることができる。幾つかの実施形態において、前記クライアント端末のディスプレイ８００は、少なくとも第１画像フレームと同一のサイズまたは小さいサイズであり得る。幾つかの実施形態において、ディスプレイ８００は長方形の形状であってもよい。幾つかの実施形態において、ディスプレイ８００は、例えば円形、多角形などの様々な形状であってもよい。第１表示領域８１０は、長方形のディスプレイ８００の中央に位置した長方形形状の領域であり得る。前記ディスプレイの第２表示領域８２０は、長方形のディスプレイ８００の左余白、右余白、上余白および下余白のうちの少なくとも一つを含むことができる。
【００６６】
段階７２０で、図１５を参照すると、第１ＦＯＶ（図示せず）を指し示すユーザの入力が前記クライアント端末のプロセッサ（例えば、図２に示されたプロセッサ３１０）によって受信されることに応答して、前記クライアント端末のＧＰＵは、第２表示領域８２０に予め隠されており、第１ＦＯＶ内に位置した第１画像フレームの第２領域８２５をレンダリングすることができる。例えば、図１４を参照すると、前記クライアント端末のユーザは、自分の視野角を方向８３０に変更し、そうすることにより、変更された視野角が第１ＦＯＶを指し示す。幾つかの実施形態において、前記クライアント端末は、このような視野角の変化を検出することができ、前記ＧＰＵが以前に隠しておいた第２領域８２５をレンダリングすることができるようにＦＯＶ変更入力を前記クライアント端末のＧＰＵに提供することができる。幾つかの実施形態において、第１画像フレームの第２領域８２５をレンダリングするとき、前記クライアント端末のＧＰＵは、ディスプレイ８００のレンダリング領域を第１表示領域８１０（図１４参照）から第３表示領域８４０（図１５参照）に再配置することができる。このとき、第３表示領域８４０は、第１表示領域８１０と同一の形状をもって第１画像フレームの第２表示領域８２５を含むことができる。
【００６７】
段階７３０で、前記クライアント端末のプロセッサは、ビデオストリーミングサーバ（例えば、図３に示されたストリーマー１８０）へ、第１ＦＯＶを指し示す情報を伝送することができる。また、前記クライアント端末のプロセッサは、前記ビデオストリーミングサーバから、第１ＦＯＶに対応する第２画像フレームデータを受信することができる。幾つかの実施形態で、前記クライアント端末のプロセッサは、前記ビデオストリーミングサーバからビデオの第２画像フレームを示し、第１ＦＯＶに対応する第２画像フレームデータを受信することができる。幾つかの実施形態で、前記クライアント端末のプロセッサは、また、前記ビデオストリーミングサーバから第２画像フレームデータの補正されたＦＯＶ情報を受信することもできる。
【００６８】
段階７４０で、図１６を参照すると、前記ＧＰＵは、ディスプレイ８００の第１表示領域８１０に第２画像フレームの一部の領域をレンダリングし、ディスプレイ８００の第２表示領域８２０に第１画像フレームの隠されていた第２領域をレンダリングすることができる。前記クライアント端末のＧＰＵは、前記ディスプレイのレンダリング領域を第３表示領域８４０（図１５を参照）から、前記ディスプレイの中央に位置した第１表示領域８１０に再配置することができる。以前に隠されていた表示領域８２５（図１５参照）の即刻的なレンダリングに後続して、前記表示領域を前記ディスプレイの中央に再配置することは、前記クライアント端末のユーザが段階７２０で第３表示領域８４０にレンダリングされたフレーム画像と、段階７４０で第１表示領域８１０にレンダリングされたフレーム画像との間の差を認識しないようにすることができる。
【００６９】
幾つかの実施形態で、前記ＶＲビデオストリーミングシステムは、次の利点を提供することができる。第一に、前記ＶＲビデオストリーミングシステムは、高解像度ＶＲビデオデータを処理する際にＧＰＵコンピューティング性能（例えば、マルチコアを用いた並列コンピューティング性能）を効果的に活用することができる。第二に、現在のＦＯＶが反映されたビデオ部分のみを伝送することにより、相当なネットワーク帯域幅要求量（例えば、ＦＯＶビデオデータ伝送は１〜２Ｍｂｐｓの帯域幅だけが要求されるのに対し、４Ｋ
ＵＨＤビデオデータ伝送は１６〜２０Ｍｂｐｓの帯域幅が要求される）が削減できる。第三に、ＦＯＶが反映されたビデオ部分だけを伝送することにより、ユーザの経験だけでなく、ストリーミング費用まですべて改善することができる。第四に、ＦＯＶが反映されたビデオ部分だけを伝送することにより、低いデータ伝送速度でもストリーミングサービスを提供することができる。そうすることにより、データバッファリングを除去し、クライアント端末のバッテリー消耗を減少させることができる。第五に、ＦＯＶが反映されたビデオの部分だけを伝送することにより、ストリーミングサービスの費用も減らすことができる。なぜなら、前記ストリーミングサービスのプロバイダは、自分のネットワークサービスの使用量に応じて料金を支払う必要があるからである。第六に、ＦＯＶが反映されたビデオ部分だけを伝送することにより、コンテンツの不正コピーも防止することができる。ＦＯＶが反映されたビデオ部分が伝送されることにより、受信した部分的にストリーミングされたビデオデータは、動的に変更されるＦＯＶが反映されたビデオの一部だけを含むことができるので、これにより、前記ビデオのコンテンツが不正コピーされることを防止する。第七に、現在のＦＯＶに基づいて、クライアント端末に含まれているディスプレイのレンダリング領域を変更することにより、前記クライアント端末は、変更された遅延なく、変更された視野角に対するビデオ部分をユーザに即刻的に提供することができる。このとき、前記遅延は、例えば、ビデオストリーミングサーバから新しいビデオ部分を受信した後に、変更された視野角に対する新しいビデオ部分を提供するときに発生することができる。
【００７０】
様々な実施形態を説明するために本明細書で使用される「例」または「例示的」という用語は、それらの実施形態の可能な例、表現および／または例示であることを指し示すものに過ぎないことに留意すべきである（そして、このような用語は、それらの実施形態が必然的に大変な、最上または最善の例であることを暗示するものではない）。
【００７１】
本明細書に使用される、「結合された」、「連結された」などの用語は、２つの構成要素またはコンポーネントを互いに直接または間接的に結合することを意味する。このような結合は、固定式（例えば、永久的）または移動式（例えば、除去可能、解除可能など）であり得る。このような結合は、２つの構成要素、または２つの構成要素と任意の追加の中間構成要素が互いに一つの単一体に形成されるか、或いは２つの構成要素または２つの構成要素および任意の追加の中間構成要素が互いに付着することにより達成できる。
【００７２】
本発明は、様々な動作を達成するために、任意の機械可読媒体上の方法、システム、およびプログラム製品を考慮する。本発明の実施形態は、既存のコンピュータプロセッサを用いて実現できる。または、本発明の目的または他の目的のために統合された適切なシステムに対する専用コンピュータプロセッサまたはハードワイヤードシステム（ｈａｒｄｗｉｒｅｄ  ｓｙｓｔｅｍ）によって行われることも可能である。本開示の範囲内の実施形態は、機械実行可能な命令セットまたはデータ構造を伝達するために、機械可読媒体が含まれたプログラム製品を含む。このような機械可読媒体は、汎用または特殊な目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる任意の利用可能な媒体であり得る。例えば、そのような機械可読媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、または任意の他の不揮発性媒体を含むことができる。上述した機械可読媒体は、機械実行可能命令セットまたはデータ構造形式で所望のプログラムコードを保存したり伝達したりするために使用できる。また、上述した機械可読媒体は、汎用または特殊な目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる。情報がネットワークまたは他の通信接続（有線、無線、または有線と無線との組み合わせ）を介して任意の機械に伝送または提供されると、前記機械は、当該接続をコンピュータ可読媒体としてみなす。よって、そのような接続は、適切に、機械可読媒体と呼ばれる。上述したものの組み合わせも機械可読媒体の範囲内に含まれる。機械実行可能命令セットは、例えば、汎用コンピュータ、特殊目的のコンピュータまたは特殊目的の処理機械が特定の機能または機能のグループを行うようにする命令およびデータを含む。
【００７３】
例示的な実施形態に示された方法およびシステムの構成と、前記方法およびシステムの構成要素の配列は、例示的なものに過ぎないことに留意すべきである。たとえ本発明の幾つかの実施形態が詳細に説明されたが、本開示を検討する当該技術分野における通常の技術者であれば、本明細書に列挙された発明の主題の新規な教示および利点から実質的に逸脱することなく多くの修正が可能であることを容易に理解するだろう。例えば、一体に形成されていると図示された構成要素は、多数の部分または構成要素から構成できる。よって、このようなすべての修正は本発明の範囲内に含まれるものと意図される。本発明の範囲または添付された特許請求の範囲の思想を逸脱することなく好適な実施形態、または他の代表的な実施形態に対する設計、作動条件および配列においてその他の置換、修正、変更および省略が行われ得る。
【図１】
2020099083.tif 000003
【図２】
2020099083.tif 000004
【図３】
2020099083.tif 000005
【図４】
2020099083.tif 000006
【図５】
2020099083.tif 000007
【図６】
2020099083.tif 000008
【図７】
2020099083.tif 000009
【図８】
2020099083.tif 000010
【図９】
2020099083.tif 000011
【図１０】
2020099083.tif 000012
【図１１】
2020099083.tif 000013
【図１２】
2020099083.tif 000014
【図１３】
2020099083.tif 000015
【図１４】
2020099083.tif 000016
【図１５】
2020099083.tif 000017
【図１６】
2020099083.tif 000018