以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係るエンタテインメントシステム10の全体構成の一例を示す図である。図2Aは、本実施形態に係るヘッドマウントディスプレイ(HMD)12の構成の一例を示す図である。図2Bは、本実施形態に係るエンタテインメント装置14の構成の一例を示す図である。図2Cは、本実施形態に係る中継装置16の構成の一例を示す図である。
図1に示すように、本実施形態に係るエンタテインメントシステム10は、HMD12とエンタテインメント装置14と中継装置16とディスプレイ18とカメラマイクユニット20とコントローラ22とを含んでいる。
本実施形態に係るHMD12には、例えば図2Aに示すように、プロセッサ30、記憶部32、通信部34、入出力部36、表示部38、センサ部40、音声出力部42、カメラ部44が含まれる。
プロセッサ30は、例えばHMD12にインストールされるプログラムに従って動作するマイクロプロセッサ等のプログラム制御デバイスである。なお、HMD12に、プロセッサ30の代わりに、プロセッサ30によって実行される処理の実装が可能な制御回路が含まれるようにしてもよい。
記憶部32は、例えばROMやRAM等の記憶素子などである。記憶部32には、プロセッサ30によって実行されるプログラムなどが記憶される。
通信部34は、例えば無線LANモジュールなどの通信インタフェースである。本実施形態では図1に示すように、通信部34は、HMD12の前側上方に配置されている。
入出力部36は、例えばHDMI(登録商標)(High-Definition Multimedia Interface)ポート、USBポート、AUXポートなどの入出力ポートである。
表示部38は、HMD12の前側に配置されている、例えば液晶ディスプレイや有機ELディスプレイ等のディスプレイであり、エンタテインメント装置14が生成する映像などを表示させる。また表示部38は、HMD12の筐体に収容される。表示部38は、例えばエンタテインメント装置14が出力して中継装置16で中継される映像信号を受信して、当該映像信号が表す映像を出力するようにしてもよい。本実施形態に係る表示部38は、例えば左目用の画像と右目用の画像を表示することによって三次元画像を表示させることができるようになっている。なお表示部38は三次元画像の表示ができず二次元画像の表示のみができるものであっても構わない。
センサ部40は、例えば加速度や角速度を検出可能なモーションセンサなどといったセンサである。センサ部40は、HMD12の回転量、移動量などの検出結果を所定のサンプリングレートで、プロセッサ30に出力する。
音声出力部42は、例えばヘッドホンやイヤホン等の、ユーザの耳の近傍に配置されるスピーカであり、エンタテインメント装置14が生成する音声データが表す音声などを出力する。音声出力部42は、例えばエンタテインメント装置14が出力して中継装置16で中継される音声信号を受信して、当該音声信号が表す音声を出力する。
カメラ部44は、例えばデジタルカメラなどのカメラであり、所定のフレームレートでHMD12を装着するユーザの周辺の様子を撮影する。図1に示すように、本実施形態に係るカメラ部44は、表示部38の上方に、表示部38の前方を撮影できるように2つ配置されている。そのため本実施形態に係るカメラ部44は、HMD12を装着するユーザの前方を撮影できることとなる。また本実施形態に係るカメラ部44は、例えば左目用の画像を撮影するためのレンズ及び右目用の画像を生成するためのレンズを備えたステレオカメラである。
本実施形態に係るエンタテインメント装置14は、例えばゲームコンソール、DVDプレイヤ、Blu−ray(登録商標)プレイヤなどといったコンピュータである。本実施形態に係るエンタテインメント装置14は、例えば記憶されているゲームプログラムの実行や光ディスクに記録されたコンテンツの再生などによって映像や音声を生成する。そして本実施形態に係るエンタテインメント装置14は、生成される映像を表す映像信号や生成される音声を表す音声信号を、中継装置16を経由して、HMD12やディスプレイ18に出力する。
本実施形態に係るエンタテインメント装置14には、例えば図2Bに示すように、プロセッサ50、記憶部52、通信部54、入出力部56が含まれる。
プロセッサ50は、例えばエンタテインメント装置14にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。本実施形態に係るプロセッサ50には、CPUから供給されるグラフィックスコマンドやデータに基づいてフレームバッファに画像を描画するGPU(Graphics Processing Unit)も含まれている。なお、エンタテインメント装置14に、プロセッサ50の代わりに、プロセッサ50によって実行される処理の実装が可能な制御回路が含まれるようにしてもよい。
記憶部52は、例えばROMやRAM等の記憶素子やハードディスクドライブなどである。記憶部52には、プロセッサ50によって実行されるプログラムなどが記憶される。また、本実施形態に係る記憶部52には、GPUにより画像が描画されるフレームバッファの領域が確保されている。
通信部54は、例えば無線LANモジュールなどの通信インタフェースである。
入出力部56は、HDMIポート、USBポートなどの入出力ポートである。
本実施形態に係る中継装置16は、エンタテインメント装置14から出力される映像信号や音声信号を中継してHMD12やディスプレイ18に出力するコンピュータである。
本実施形態に係る中継装置16には、例えば図2Cに示すように、プロセッサ60、記憶部62、通信部64、入出力部66が含まれる。
プロセッサ60は、例えば中継装置16にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。なお、中継装置16に、プロセッサ60の代わりに、プロセッサ60によって実行される処理の実装が可能な制御回路が含まれるようにしてもよい。
記憶部62は、例えばROMやRAM等の記憶素子などである。記憶部62には、プロセッサ60によって実行されるプログラムなどが記憶される。
通信部64は、例えば無線LANモジュールなどの通信インタフェースである。本実施形態では、図1に示すように、中継装置16の前側に、通信部64が含まれている。
入出力部66は、HDMIポート、USBポートなどの入出力ポートである。
本実施形態に係るディスプレイ18は、例えば液晶ディスプレイ等であり、エンタテインメント装置14から出力される映像信号が表す映像などを表示させる。
本実施形態に係るカメラマイクユニット20は、例えば被写体を撮像した画像などといったカメラマイクユニット20の周辺の様子を表すデータをエンタテインメント装置14に出力するカメラ20aを含んでいる。また本実施形態に係るカメラ20aはステレオカメラである。また本実施形態に係るカメラマイクユニット20は、周囲の音声を取得して当該音声を音声データに変換してエンタテインメント装置14に出力するマイク20bを含んでいる。
HMD12と中継装置16とは、例えば、無線通信によるデータの送受信が互いに可能になっている。エンタテインメント装置14と中継装置16とは、例えば、HDMIケーブルやUSBケーブルなどを介して接続されている。中継装置16とディスプレイ18とは、例えば、HDMIケーブルなどを介して接続されている。エンタテインメント装置14とカメラマイクユニット20とは、例えば、AUXケーブルなどを介して接続されている。
本実施形態に係るコントローラ22は、エンタテインメント装置14に対する操作入力を行うための操作入力装置である。ユーザは、コントローラ22が備える方向キーやボタンを押下したり、操作スティックを傾けたりすることで、コントローラ22を用いて各種の操作入力を行うことができる。そして本実施形態では、コントローラ22は、操作入力に対応付けられる入力データをエンタテインメント装置14に出力する。また本実施形態に係るコントローラ22は、USBポートを備えている。そしてコントローラ22は、USBケーブルでエンタテインメント装置14と接続することで、有線で入力データをエンタテインメント装置14に出力することができる。また本実施形態に係るコントローラ22は、無線通信モジュール等を備えており、無線で入力データをエンタテインメント装置14に出力することができるようにもなっている。
本実施形態では例えば、エンタテインメント装置14で、ゲームプログラム等のプログラムが実行される。そしてエンタテインメント装置14は、当該プログラムの実行状況に応じた3次元の仮想空間の映像等の映像を生成する。この映像は、例えば、当該仮想空間内に配置された視点から視線方向を見た様子を表す。そしてエンタテインメント装置14で生成される映像を表す映像データは、エンタテインメント装置14から中継装置16を経由してHMD12に送信される。
また本実施形態では、HMD12においてセンシングデータが生成される。ここでセンシングデータとしては、例えば、センサ部40が検出する加速度や角速度の検出結果を示すデータや、カメラ部44が撮影する画像などが挙げられる。そしてHMD12で生成されるセンシングデータは、中継装置16を経由してエンタテインメント装置14に送信される。
エンタテインメント装置14は、HMD12から受信するセンシングデータに応じた映像を生成する。エンタテインメント装置14は例えば、HMD12から受信するセンシングデータに応じて、上述の仮想空間内に配置された視点の位置や視線方向を変化させる。そしてエンタテインメント装置14は、変化後の視点の位置から変化後の視線方向を見た様子を表す映像を生成して、HMD12に送信する。そして当該映像を受信したHMD12は、当該映像を表示部38に表示させる。このようにして本実施形態では、ユーザの頭部の動きに応じて表示部38に表示される映像が変化することとなる。
本実施形態では例えば、中継装置16とHMD12との間で、例えばWi−Fi(登録商標)等の規格に沿った半二重無線通信が行われる。図3は、中継装置16とHMD12との間の半二重無線通信の様子の一例を模式的に示す図である。
図3に示すように、本実施形態では例えば、中継装置16からHMD12への映像データの送信と、HMD12から中継装置16へのセンシングデータの送信とが交互に行われる。以下、中継装置16からHMD12にデータが送信されている期間を第1期間と呼び、HMD12から中継装置16にデータが送信されている期間を第2期間と呼ぶこととする。すなわち、本実施形態における半二重無線通信では、第1期間と第2期間とが交互に到来することとなる。
図4は、本実施形態に係るトランザクションデータ70のデータ構造の一例を示す図である。例えば、1つの第1期間で中継装置16からHMD12に送信されるトランザクションデータ70には、当該第1期間で中継装置16からHMD12に送信される映像データが含まれる。また例えば、1つの第2期間でHMD12から中継装置16に送信されるトランザクションデータ70には、当該第2期間でHMD12から中継装置16に送信されるセンシングデータが含まれる。
図4に示すように、1つのトランザクションデータ70には、1つのパケットヘッダ72(図4ではPHと表現)と複数の分割パケット74とが含まれている。図4には、トランザクションデータ70に(N+1)個の分割パケット74が含まれることが示されている。そして1つの分割パケット74には、1つのフラグメント情報76(図4ではFI(0)などと表現)と1つのペイロードデータ78(図4ではPayload(0)などと表現)とが含まれている。
中継装置16がHMD12に送信するトランザクションデータ70のパケットヘッダ72には例えば、HMD12が中継装置16に送信可能なビットレートの値(後述の値PayloadBitrate_HtoP)が含まれている。
またHMD12が中継装置16に送信するトランザクションデータ70のパケットヘッダ72には例えば、HMD12が受信に成功したデータのサイズを示す値(後述の値TransSize_PtoH_Act)が含まれている。
またこの他に、パケットヘッダ72には例えば、最後の分割パケット74のシーケンス番号が含まれている。
分割パケット74に含まれるフラグメント情報76には例えば、当該分割パケット74のシーケンス番号と当該分割パケット74が含まれるトランザクションデータ70における最後の分割パケット74のシーケンス番号とが含まれている。
ペイロードデータ78は、例えば中継装置16からHMD12に送信される映像データやHMD12から中継装置16に送信されるセンシングデータに相当する。
図5は、中継装置16からHMD12に送信される映像データと当該映像データに相当するペイロードデータ78との関係の一例を示す図である。
ここで本実施形態に係る映像データは例えば、MPEGの規格に沿ってエンコードされる。そしてエンコード済の映像データは、可変長のパケットであるパケット化エレメンタリストリーム(Packetized Elementary Stream:PES)に分割される。図5には4つのPESのパケット(PES(0)〜PES(3))が示されている。
そして本実施形態では例えば、PESがさらに、4バイトのヘッダと184バイトのペイロードを含む188バイトの固定長であるトランスポートパケット(TS)に分割される。
図5には、20個のTS(TS(0)〜TS(19))が示されている。図5の例では、PES(0)に基づいて、6個のTS(TS(0)〜TS(5))が生成されることが示されている。また、PES(1)に基づいて、6個のTS(TS(6)〜TS(11))が生成されることが示されている。また、PES(2)に基づいて、5個のTS(TS(12)〜TS(16))が生成されることが示されている。また、PES(3)に基づいて、3個のTS(TS(17)〜TS(19))が生成されることが示されている。ここで例えばTS(11)、TS(16)、TS(19)のような、相当するPESが存在しない部分を含むTSについては、当該部分に所定値がパディングされる。
そしてそれぞれ1又は複数のTSに相当するペイロードデータ78が生成される。図5の例では5個のペイロードデータ78(Payload(0)〜Payload(4))が示されている。図5の例では、Payload(0)は、TS(0)〜TS(3)に相当することが示されている。また、Payload(1)は、TS(4)〜TS(7)に相当することが示されている。また、Payload(2)は、TS(8)〜TS(11)に相当することが示されている。また、Payload(3)は、TS(12)〜TS(15)に相当することが示されている。また、Payload(4)は、TS(16)〜TS(19)に相当することが示されている。ここでペイロードデータ78は、必ずTSにアラインメントされるため、1つのTSが複数のペイロードデータ78に分かれて割り当てられることはない。
図3に示すように、1つの第1期間において、中継装置16は、HMD12にパケットヘッダ72を送信し、これに続いて残りのトランザクションデータ70をHMD12に送信する。そしてHMD12は、当該トランザクションデータ70の受信に応じて、当該第1期間に後続する1つの第2期間において、中継装置16にパケットヘッダ72を送信し、これに続いて残りのトランザクションデータ70を中継装置16に送信する。なお、中継装置16とHMD12との間では、音声データや制御用メッセージなどのようなトランザクションデータ70以外のデータの通信が行われても構わない。
そして本実施形態では図3に示すように、中継装置16において、映像データのパケットヘッダ72を送信してから、映像データの受信に応じて送信されるセンシングデータのすべてを受信するまでの、一往復の通信にかかった時間(ラウンドトリップタイム)を特定できる。以下、この時間を、時間T_RTと表現することとする。ここで時間T_RTは、1つの第1期間における映像データの送信の開始から当該第1期間に後続する第2期間におけるセンシングデータの受信の終了までに相当する一往復の通信にかかった時間に相当する。
また本実施形態では図3に示すように、中継装置16において、映像データのパケットヘッダ72を送信してから、映像データの受信の終了に応じてHMD12から送信されるセンシングデータのパケットヘッダ72を受信するまでの時間を特定できる。この時間は、中継装置16からHMD12への映像データの送信にかかった時間に概ね相当する。以下、この時間を、時間T_phと表現することとする。また、時間T_RTから時間T_phを引いた時間は、HMD12から中継装置16へのセンシングデータの送信にかかった時間に概ね相当する。以下、この時間を、時間T_hpと表現することとする。
また本実施形態では予め、半二重無線通信による一往復の通信についての所与の目標時間が設定されている。以下、当該目標時間を時間TargetTranferTimeと表現することとする。
本実施形態に係る映像データのような、HMD12において利用されるデータはできるだけ高品質であることが望ましい。従って、エンタテインメント装置14で単位時間あたりに生成されるデータのサイズはできるだけ大きいことが望ましい。一方で、本実施形態のような即時性が求められる通信では、ユーザの違和感を低減するために、単位時間あたりに生成されるデータのサイズを小さくしてでもラウンドトリップタイムを時間TargetTranferTimeに近づけることが重要となる。例えばHMD12で表示される映像を構成するフレーム画像のそれぞれのレイテンシを短くすることが重要となる。
以上の点を踏まえ、本実施形態では、以下のようにして、できる限り時間T_RTが時間TargetTransferTime以下となるよう、エンタテインメント装置14が単位時間あたりに生成するデータのサイズを制御するようにした。
また、通信環境が悪い場合などにおいては、データの一部が欠落して、欠落した当該一部が通信相手に届かないことがある。例えば1又は複数の分割パケット74が通信相手に届かないことがある。
このような場合には、通信相手が通信に成功したデータのサイズを考慮して単位時間あたりに生成されるデータのサイズを制御しないと一往復の通信にかかる時間が所与の目標時間に近づかないことがある。
そこで本実施形態では以下のようにして、通信相手が通信に成功したデータのサイズに基づいて単位時間あたりに生成されるデータのサイズが制御されることとした。
また中継装置16からHMD12に送信されたデータの一部が欠落した際に、HMD12から中継装置16へのセンシングデータが送信されないと、中継装置16において時間T_RTが算出できない。その結果、エンタテインメント装置14が単位時間あたりに生成すべきデータのサイズを算出できない。
そこで本実施形態では以下のようにして、中継装置16からHMD12に送信されるデータの一部が欠落しても、HMD12から中継装置16にセンシングデータが送信されるようにした。
また例えば通信環境が悪化した際にビームフォーミング等による通信経路探索処理が発生し、通信環境が不安定になることがある。図6は、一往復の通信毎に特定される時間T_RTの変化の一例を示す図である。図6の例では、通信経路探索処理において断続的に連続してビームフォーミングが発生している。図6の例では、概ね2000マイクロ秒から5500マイクロ秒までと示されている時間の範囲において、時間T_RTが大きく変動している。このような状況において、例えば時間T_RTが目標時間よりも短かったことに基づいて単位時間あたりに生成されるデータのサイズが大きくなるよう制御しても、次の一往復の通信では大きいサイズのデータの通信ができない可能性がある。そのためこのような状況では、時間T_RTが目標時間よりも短い場合でも単位時間あたりに生成されるデータのサイズをそれほど大きくしない方がよい。
以上の点を踏まえ、本実施形態では以下のようにして、単位時間あたりに生成されるデータのサイズに対応する値が変化する大きさが、通信経路探索処理が発生しているか否かの推定の結果に応じたものとなるようにした。
また逆に上述の状況において、例えば時間T_RTが目標時間よりも長かったことに基づいて単位時間あたりに生成されるデータのサイズが小さくなるよう制御した際に、次の一往復の通信では目標時間よりも短い時間でデータの通信を行える可能性がある。このような場合にその次の一往復の通信を直ちに開始すると、映像データの生成が間に合っておらず、空の映像データが中継装置16からHMD12に送信されるおそれがある。このような空のデータの送信は消費電力の無駄である。
以上の点を踏まえ、本実施形態では以下のようにして、上述のような消費電力の無駄を抑制できるようにした。
ここで、以上で説明した点を中心に、本実施形態に係るエンタテインメントシステム10の機能及び本実施形態に係るエンタテインメントシステム10で実行される処理についてさらに説明する。
図7は、本実施形態に係るHMD12、エンタテインメント装置14、及び、中継装置16で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係るエンタテインメントシステム10で、図7に示す機能のすべてが実装される必要はなく、また、図7に示す機能以外の機能が実装されていても構わない。
図7に示すように、本実施形態に係るエンタテインメント装置14は、機能的には例えば、映像データ生成部80、映像データ送信部82、生成制御受信部84、センシングデータ受信部86、を含んでいる。映像データ生成部80は、プロセッサ50を主として実装される。映像データ送信部82、生成制御受信部84、センシングデータ受信部86は、入出力部56を主として実装される。
以上の機能は、コンピュータであるエンタテインメント装置14にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ50で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してエンタテインメント装置14に供給されてもよい。
また図7に示すように、本実施形態に係る中継装置16は、機能的には例えば、目標時間情報記憶部90、映像データ受信部92、映像データバッファ94、映像データ送信部96、センシングデータ受信部98、センシングデータ送信部100、所要時間特定部102、探索発生推定部104、ビットレート決定部106、データサイズ決定部108、生成制御部110、を含んでいる。目標時間情報記憶部90、映像データバッファ94は、記憶部62を主として実装される。映像データ受信部92、センシングデータ送信部100は、入出力部66を主として実装される。映像データ送信部96、センシングデータ受信部98は、通信部64を主として実装される。所要時間特定部102、探索発生推定部104、ビットレート決定部106、データサイズ決定部108は、プロセッサ60を主として実装される。生成制御部110は、プロセッサ60及び入出力部66を主として実装される。
以上の機能は、コンピュータである中継装置16にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ60で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して中継装置16に供給されてもよい。
また図7に示すように、本実施形態に係るHMD12は、機能的には例えば、映像データ受信部120、映像データ出力部122、デコード部124、表示制御部126、センシングデータ生成部128、センシングデータバッファ130、センシングデータ送信部132、を含んでいる。映像データ受信部120、センシングデータ送信部132は、通信部34を主として実装される。映像データ出力部122、デコード部124は、プロセッサ30を主として実装される。表示制御部126は、プロセッサ30、表示部38を主として実装される。センシングデータ生成部128は、プロセッサ30、センサ部40、カメラ部44を主として実装される。センシングデータバッファ130は、記憶部32を主として実装される。
以上の機能は、コンピュータであるHMD12にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ30で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してHMD12に供給されてもよい。
映像データ生成部80は、本実施形態では例えば、HMD12の表示部38に表示される映像を表す映像データを生成する。
映像データ送信部82は、本実施形態では例えば、映像データ生成部80が生成する映像データを中継装置16に送信する。
生成制御受信部84は、本実施形態では例えば、中継装置16が送信する生成制御情報を受信する。ここで生成制御情報は、例えば、単位時間あたりに生成すべきデータのサイズを示す情報である。映像データ生成部80は、生成制御受信部84による生成制御情報の受信に応じて、当該生成制御情報が示すサイズのデータを単位時間あたりに生成するよう制御されることとなる。
センシングデータ受信部86は、本実施形態では例えば、HMD12のセンサ部40による検出結果を示すデータやカメラ部44が撮影する画像などといったセンシングデータを、中継装置16から受信する。本実施形態では、映像データ生成部80は、センシングデータ受信部86が受け付けるセンシングデータに応じた映像データを生成することとなる。
目標時間情報記憶部90は、本実施形態では例えば、上述の目標時間TargetTransferTimeの値が設定された目標時間情報を記憶する。
映像データ受信部92は、本実施形態では例えば、エンタテインメント装置14から送信される映像データを受信する。
映像データバッファ94は、本実施形態では例えば、映像データ受信部92が受信する映像データを記憶する。
映像データ送信部96は、本実施形態では例えば、映像データ生成部80が生成する映像データをHMD12に送信する。例えば映像データ送信部96は、映像データバッファ94に記憶されている映像データをHMD12に送信する。
センシングデータ受信部98は、本実施形態では例えば、HMD12が送信するセンシングデータを受信する。
センシングデータ送信部100は、本実施形態では例えば、センシングデータ受信部98が受信するセンシングデータをエンタテインメント装置14に送信する。
所要時間特定部102は、本実施形態では例えば、中継装置16とHMD12との間の半二重無線通信における一往復の通信が終了したことに応じて、当該一往復の通信にかかった時間T_RTを特定する。
探索発生推定部104は、中継装置16とHMD12との間での通信経路探索処理が発生しているか否かを推定する。ここで当該通信経路探索処理は、連続して発生するビームフォーミングが含まれていてもよい。
また探索発生推定部104は、時間T_RTの長さに基づいて、通信経路探索処理が発生しているか否かについての評価値を決定してもよい。ここでは評価値の一例としては、時間T_RTを示す値から後述する所与の値THR_INTを引いた値などが挙げられる。
なお、探索発生推定部104による推定の詳細については後述する。
ビットレート決定部106は、本実施形態では例えば、後の一往復の通信において中継装置16がHMD12に送信可能なビットレートを決定する。ここで例えば、特定される時間T_RT、一往復の通信においてHMD12との間で通信されたデータのサイズ、及び、一往復の通信についての所与の目標時間TargetTransferTimeに基づいて、当該ビットレートが決定されてもよい。またビットレート決定部106は、HMD12が中継装置16に送信可能なビットレートを決定してもよい。
以下、中継装置16がHMD12に送信可能なビットレートの値を、PayloadBitrate_PtoHと表現することとする。また、HMD12が中継装置16に送信可能なビットレートの値を、PayloadBitrate_HtoPと表現することとする。上述のように中継装置16がHMD12に送信するトランザクションデータ70のパケットヘッダ72に、値PayloadBitrate_HtoPが含まれてもよい。ここでビットレート決定部106は、決定された値PayloadBitrate_PtoHを保持してもよい。またビットレート決定部106は、決定された値PayloadBitrate_HtoPを保持してもよい。
またビットレート決定部106は、例えばエンタテインメント装置14や中継装置16のスペックに応じた、中継装置16がHMD12に送信可能なビットレートの最大値及び最小値を示す情報を保持してもよい。またビットレート決定部106は、例えばHMD12のスペックに応じた、HMD12が中継装置16に送信可能なビットレートの最大値及び最小値を示す情報を保持してもよい。以下、中継装置16がHMD12に送信可能なビットレートの最大値及び最小値を、それぞれ、Tp_PtoH_ReqMax、Tp_PtoH_ReqMinと表現することとする。また、HMD12が中継装置16に送信可能なビットレートの最大値及び最小値を、それぞれ、Tp_HtoP_ReqMax、Tp_HtoP_ReqMinと表現することとする。
ここで値Tp_PtoH_ReqMaxとしては、例えば、HMD12及び中継装置16のスペックを満たす最高品質の映像データ、及び、データ量の制御対象とはならない固定データ(例えば音声データや制御メッセージなど)の通信帯域を確保できるビットレートを示す値が設定されるのが望ましい。また値Tp_HtoP_ReqMaxとしては、HMD12及び中継装置16のスペックを満たす最高品質のセンシングデータ、及び、データ量の制御対象とはならない固定データ(例えば音声データや制御メッセージなど)の通信帯域を確保できるビットレートを示す値が設定されるのが望ましい。
また値Tp_PtoH_ReqMinとしては、例えば、HMD12及び中継装置16のスペックを満たす最低限の品質の映像データ、及び、データ量の制御対象とはならない固定データ(例えば音声データや制御メッセージなど)の通信帯域を確保できるビットレートを示す値が設定されるのが望ましい。また値Tp_HtoP_ReqMinとしては、例えば、HMD12及び中継装置16のスペックを満たす最低限の品質のセンシングデータ、及び、データ量の制御対象とはならない固定データ(例えば音声データや制御メッセージなど)の通信帯域を確保できるビットレートを示す値が設定されるのが望ましい。
なお、ビットレートの決定方法の詳細については後述する。
データサイズ決定部108は、本実施形態では例えば、HMD12との間で行われる後の一往復の無線通信において中継装置16がHMD12に送信するデータのサイズを決定する。ここで例えば、ビットレート決定部106が決定するビットレートと、所与の目標時間TargetTransferTimeとに基づいて、後の一往復の無線通信において中継装置16がHMD12に送信するデータのサイズが決定されてもよい。またデータサイズ決定部108は、後の一往復の無線通信においてHMD12が中継装置16に送信するデータのサイズを決定してもよい。以下、一往復の無線通信において中継装置16がHMD12に送信するデータのサイズをTransSize_PtoHと表現することとする。また、一往復の無線通信においてHMD12が中継装置16に送信するデータのサイズをTransSize_HtoPと表現することとする。
またデータサイズ決定部108は、上述のようにして決定される、一往復の無線通信において中継装置16がHMD12に送信するデータのサイズの値TransSize_PtoHが設定された情報を保持してもよい。またデータサイズ決定部108は、上述のようにして決定される、一往復の無線通信においてHMD12が中継装置16に送信するデータのサイズの値TransSize_HtoPが設定された情報を保持してもよい。
生成制御部110は、本実施形態では例えば、映像データ生成部80が単位時間あたりに生成するデータのサイズを制御する。ここで時間T_RT、一往復の通信においてHMD12との間で通信されたデータのサイズ、及び、一往復の通信についての所与の目標時間TargetTransferTimeに基づいて、当該サイズが決定されてもよい。またビットレート決定部106により決定されるビットレートに応じて当該サイズが決定されてもよい。例えば生成制御部110が、決定されるビットレートに相当するサイズのデータを単位時間あたりに生成するよう映像データ生成部80を制御してもよい。また生成制御部110は、当該サイズを示す生成制御情報をエンタテインメント装置14に送信してもよい。
また生成制御部110は、ビットレート決定部106により決定されるビットレートに応じて、映像データ生成部80が生成する映像のデータの解像度や圧縮率などといった品質を制御してもよい。
一往復の通信においてHMD12から中継装置16に送信されるセンシングデータのサイズが小さくなるとセンシングデータの精度が悪くなる。そのためセンシングデータのサイズを小さくすることは望ましくない。一方で、表示される映像のデータの品質が下がってもそれほど大きな問題とはならない。そこで中継装置16がHMD12に送信可能なビットレートが下がった場合に、生成される映像の圧縮率や解像度などいった品質を下げることによってレイテンシの発生を防ぐようにすれば、センシングデータの精度が確保できることとなる。
映像データ受信部120は、本実施形態では例えば、中継装置16から送信される映像データを受信する。
映像データ出力部122は、本実施形態では例えば、映像データ受信部120が受信する映像データをデコード部124に出力する。
ここで映像データ出力部122は、中継装置16が送信した映像データの一部の受信に失敗した場合に、当該一部についてはNULL TSなどの所定のデータで補完された映像データをデコード部124に出力してもよい。
本実施形態におけるデータの欠落は分割パケット74の単位で発生する。ここで例えば図4及び図5に示すPayload(1)を含む分割パケット74の受信をHMD12が失敗したとする。この場合、映像データ出力部122は、TS(4)〜TS(7)に相当する部分をNULL TSなどの所定のデータで補完する映像データをデコード部124に出力する。
デコード部124は、本実施形態では例えば、映像データ出力部122から受け付ける映像データをデコードする。ここでは例えば映像データ出力部122から受け付ける映像データに基づいて、PESが生成される。
ここでデコード部124によるデコードにおいてPESが生成される際に、当該PESに含まれるべきTSにNULL TSなどの所定のデータで補完されたTSが含まれている場合は、デコードは失敗する。この場合はPESが生成されない。例えば上述のように、TS(4)及びTS(5)に相当する部分がNULL TSなどの所定のデータで補完されていたとする。この場合、デコード部124は、TS(4)及びTS(5)を一部として含むPES(0)の生成に失敗する。また例えば、TS(6)及びTS(7)に相当する部分がNULL TSなどの所定のデータで補完されていたとする。この場合、デコード部124は、TS(6)及びTS(7)を一部として含むPES(1)の生成に失敗する。
表示制御部126は、本実施形態では例えば、映像データ受信部120が受信する映像データが表す映像を表示させる。ここで例えば、表示制御部126は、デコード部124がデコードした映像データが表す映像を表示させてもよい。ここでデコード部124がデコードに失敗したPESに対応付けられる画面の一部については更新されずに直前のフレームと同じ画像(フレーム画像の一部)が表示されるようにしてもよい。例えば上述のようにデコード部124がPES(0)及びPES(1)のデコードに失敗した場合は、PES(0)及びPES(1)に対応付けられる画面の一部については更新されずに直前のフレームと同じ画像が表示されるようにしてもよい。
センシングデータ生成部128は、本実施形態では例えば、HMD12のセンサ部40による検出結果を示すデータやカメラ部44が撮影する画像などといったセンシングデータを生成する。またセンシングデータ生成部128が、上述の目標時間TargetTransferTimeの値が設定された目標時間情報を保持していてもよい。
センシングデータバッファ130は、本実施形態では例えば、センシングデータ生成部128が生成するセンシングデータを記憶する。
センシングデータ送信部132は、センシングデータバッファ130に記憶されているセンシングデータを中継装置16に送信する。
上述したように本実施形態において例えば、中継装置16の通信相手であるHMD12が通信に成功したデータのサイズに基づいて単位時間あたりに生成されるデータのサイズが制御されるようにしてもよい。
ここで例えば、一往復の通信においてHMD12が受信に成功したデータのサイズを示す値を、TransSize_PtoH_Actと表現する。また一往復の通信において中継装置16が受信に成功したデータのサイズを示す値を、TransSize_HtoP_Actと表現する。ここで例えば、値TransSize_PtoH_Actが、1つの第1期間にHMD12が受信に成功したデータのサイズを示していてもよい。また値TransSize_HtoP_Actが、当該第1期間に後続する1つの第2期間に中継装置16が受信に成功したデータのサイズを示していてもよい。
ここで例えばHMD12のセンシングデータ送信部132が、HMD12が受信に成功したデータのサイズを特定してもよい。そしてHMD12のセンシングデータ送信部132が、特定されたサイズを示すサイズデータを中継装置16に送信してもよい。そして中継装置16の生成制御部110が、当該サイズデータが示すサイズに基づいて、映像データ生成部80が単位時間あたりに生成するデータのサイズを制御してもよい。
具体的には例えば、HMD12のセンシングデータ送信部132が、値TransSize_PtoH_Actをパケットヘッダ72に含むトランザクションデータ70を中継装置16に送信してもよい。そして中継装置16の生成制御部110が、当該パケットヘッダ72に含まれる値TransSize_PtoH_Actに基づいて、映像データ生成部80が単位時間あたりに生成するデータのサイズを制御してもよい。
ここでセンシングデータ送信部132が、中継装置16が送信したデータの一部の受信にHMD12が失敗した場合でも値TransSize_PtoH_Actをパケットヘッダ72に含むトランザクションデータ70を中継装置16に送信してもよい。
また例えばHMD12が、一度の通信においてそれぞれシーケンス番号が付与された複数の分割パケット74を含むトランザクションデータ70における、最後のシーケンス番号が設定されたフラグメント情報76を含む分割パケット74の受信に成功したとする。この場合にセンシングデータ送信部132が、値TransSize_PtoH_Actをパケットヘッダ72に含むトランザクションデータ70を中継装置16に送信するようにしてもよい。
また中継装置16のビットレート決定部106が、時間T_RT、値TransSize_PtoH_Act、及び、目標時間TargetTransferTimeに基づいて、中継装置16がHMD12に送信可能なビットレートを決定してもよい。
また例えば中継装置16のデータサイズ決定部108が時間T_RT、値TransSize_PtoH_Act、及び、目標時間TargetTransferTimeに基づいて、映像データ生成部80が単位時間あたりに生成するデータのサイズを決定してもよい。
また上述したように本実施形態において例えば、単位時間あたりに生成されるデータのサイズに対応する値が変化する大きさが、通信経路探索処理が発生しているか否かの推定の結果に応じたものとなるようにしてもよい。
例えばビットレート決定部106が、時間T_RT、及び、目標時間TargetTransferTimeに基づいて決定される、映像データ生成部80が単位時間あたりに生成するデータのサイズに対応する値を、値が変化する大きさが、通信経路探索処理が発生しているか否かの推定の結果に応じたものとなるよう変更してもよい。
ここで例えば、値が変化する大きさが直近複数回の一往復の通信における探索発生推定部104が決定する評価値の合計に応じたものとなるよう、決定される値が変更されてもよい。
ここで例えば、映像データ生成部80が単位時間あたりに生成するデータのサイズが増える際には、通信経路探索処理が発生していると推定される場合の方が発生していないと推定される場合よりも小さな変化となるよう、決定される値が変更されてもよい。
また例えば、映像データ生成部80が単位時間あたりに生成するデータのサイズが減る際には、通信経路探索処理が発生していると推定される場合の方が発生していないと推定される場合よりも大きな変化となるよう、決定される値が変更されてもよい。
以上のようにすることで、通信経路探索処理の発生に伴い通信環境が不安定になってもデータの欠落を抑えることができる。
また例えば、生成制御部110が、一往復の通信にかかった時間T_RTが所与の下限時間よりも短い場合は、当該一往復の通信の開始から当該下限時間が経過するまで映像データ生成部80が生成するデータの送信を行わないよう制御してもよい。ここで例えば生成制御部110が、映像データ生成部80が生成するデータの送信を行わないよう中継装置16の映像データ送信部96を制御してもよい。
ここで上述の下限時間は、目標時間TargetTransferTimeよりも短い時間であってもよい。
このようにすれば、空のデータを送信することによる消費電力の無駄を抑制できることとなる。
なお、上述の映像データは、図4に示すトランザクションデータ70の形式で、エンタテインメント装置14から中継装置16に、また、中継装置16からHMD12に送信されてもよい。この場合、映像データに相当するトランザクションデータ70は映像データ生成部80において生成されることとなる。また生成制御部110は、映像データ生成部80が単位時間あたりに生成するトランザクションデータ70のサイズを制御することとなる。
また上述のセンシングデータは、図4に示すトランザクションデータ70の形式で、HMD12から中継装置16に、また、中継装置16からエンタテインメント装置14に送信されてもよい。この場合、センシングデータに相当するトランザクションデータ70はセンシングデータ生成部128において生成されることとなる。
以下、本実施形態に係る中継装置16及びHMD12で行われる、エンタテインメント装置14において単位時間あたりに生成される映像データのサイズの制御処理の流れの一例を、図8に例示するフロー図を参照しながら説明する。図8に示す処理例では以下に示すS101〜S116に示す処理のループが繰り返し実行される。また中継装置16とHMD12との間で一往復の通信が行われることに応じて、S101〜S116に示す処理が一度実行される。
まず、中継装置16の映像データ送信部96が、データサイズ決定部108が保持している情報に設定されている値TransSize_PtoH、及び、ビットレート決定部106が保持する値PayloadBitrate_HtoPを特定する(S101)。
そして中継装置16の映像データ送信部96が、S101に示す処理で特定された値が示すサイズのトランザクションデータ70を映像データバッファ94から取得してHMD12に送信する。するとHMD12の映像データ受信部120が、当該トランザクションデータ70を受信する(S102)。当該トランザクションデータ70は、映像データに相当するものである。ここで例えば、映像データ送信部96は、S101に示す処理で特定された値PayloadBitrate_HtoPをパケットヘッダ72に設定した上で当該パケットヘッダ72を含む、映像データに相当するトランザクションデータ70を送信する。
そしてHMD12の映像データ出力部122が、S102に示す処理で受信したトランザクションデータ70をデコード部124に出力する(S103)。ここでは例えば、映像データ出力部122は、受信に失敗したTSについてはNULL TSなどの所定のデータで補完した上で、トランザクションデータ70をデコード部124に出力する。
そしてHMD12のデコード部124が、S103に示す処理で受け付けたトランザクションデータ70をデコードしてPESを生成する(S104)。ここでは例えば、NULL TSなどの所定のデータで補完されたTSを含むPESについては生成されない。
そしてHMD12の表示制御部126が、S104に示す処理で生成されたPESに応じた映像をHMD12の表示部38に表示させる(S105)。ここで生成されなかったPESに相当する画面の一部については表示されている画像が更新されない。
そしてHMD12のセンシングデータ生成部128は、上述のセンシングデータに相当するトランザクションデータ70を生成して、当該トランザクションデータ70をセンシングデータバッファ130に記憶させる(S106)。ここで例えば、S102に示す処理で受信したトランザクションデータ70のパケットヘッダ72に設定された、値PayloadBitrate_HtoPに相当するサイズのトランザクションデータ70が単位時間あたり(例えば1秒あたり)に生成される。
そしてHMD12のセンシングデータ送信部132は、S106に示す処理でセンシングデータバッファ130に記憶されたトランザクションデータ70を中継装置16に送信する。そして中継装置16のセンシングデータ受信部98が、当該トランザクションデータ70を受信する(S107)。
ここでS102に示す処理で受信したトランザクションデータ70のパケットヘッダ72に設定された、値PayloadBitrate_HtoPに基づいて、値TransSize_HtoPが算出されてもよい。例えば値PayloadBitrate_HtoPに目標時間TargetTransferTimeを乗じ、8で割った値が、値TransSize_HtoPとして算出されてもよい。そして算出された値TransSize_HtoPに相当するサイズのトランザクションデータ70がセンシングデータバッファ130から取得されて、取得されたトランザクションデータ70が送信されてもよい。なおここでは、値TransSize_HtoPの単位はバイトであり、値PayloadBitrate_HtoPの単位はビットであることとする。そのためビットをバイトに変換するため8で割る処理が実行されている。
またここで例えば、センシングデータ送信部132は、HMD12が受信に成功したトランザクションデータ70のサイズを示す値TransSize_PtoH_Actをパケットヘッダ72に設定した上で当該パケットヘッダ72を含む、センシングデータに相当するトランザクションデータ70を中継装置16に送信する。
また中継装置16のセンシングデータ受信部98は、センシングデータの一部の受信に失敗した場合に、当該一部についてはNULL TSなどの所定のデータを補完してもよい。
そして中継装置16の所要時間特定部102は、時間T_RT、時間T_ph、及び、時間T_hpを特定する(S108)。
そして中継装置16のビットレート決定部106が、S107に示す処理で受信したトランザクションデータ70のパケットヘッダ72に設定された値TransSize_PtoH_Actを特定する(S109)。
そして中継装置16のビットレート決定部106が、S109に示す処理で特定された値TransSize_PtoH_Actに8を乗じ、S108に示す処理で特定された時間T_phで割ることで、単位時間あたりのデータ送信量(スループット)の値Tp_phを算出する(S110)。なおここでは、値TransSize_PtoH_Actの単位はバイトであり、値Tp_phの単位はビットであることとする。そのためS110に示す処理では、バイトをビットに変換するため8を乗じる処理が実行されている。
そしてビットレート決定部106が、中継装置16からHMD12へのデータ送信に割当可能な時間new_time_phを算出する(S111)。ここでは例えば、目標時間情報記憶部90が記憶する目標時間情報の値TargetTranferTimeからS108に示す処理で特定された時間T_hpを減じ、さらにジッタを吸収するための定数を減じた値が時間new_time_phとして算出される。当該定数は、例えば、値TargetTranferTimeの5〜10%に相当する定数であってもよい。
そしてビットレート決定部106が、中継装置16からHMD12へのデータ送信に相当する部分スループットの値new_tp_phを特定する(S112)。ここでは例えば、S111に示す処理で算出された時間new_time_phにS110に示す処理で算出された値Tp_phを乗じ、値TargetTranferTimeで割った値が、値new_tp_phとして特定される。
そしてビットレート決定部106が、S112に示す処理で特定された値new_tp_phに基づいて、値PayloadBitrate_PtoH及び値PayloadBitrate_HtoPを決定する(S113)。
ここで例えば値new_tp_phが、通信環境の悪化傾向の判断に用いられる閾値Tp_PtoH_LowThreshold以上であるとする。この場合は、特定された値new_tp_phを保持している値Tp_PtoH_ReqMinから値Tp_PtoH_ReqMaxまでの範囲に収まるようクリッピング処理を実行した結果の値が、値PayloadBitrate_PtoHとして決定される。またこの場合は、値Tp_HtoP_ReqMaxが、値PayloadBitrate_HtoPとして決定される。
ここで例えば閾値Tp_PtoH_LowThresholdは、値Tp_PtoH_ReqMin以上、値Tp_PtoH_ReqMax以下の範囲で決定されてもよい。より具体的には例えば、閾値Tp_PtoH_LowThresholdは、値Tp_PtoH_ReqMinと値Tp_PtoH_ReqMaxとの和を2で割った値であってもよい。
一方、値new_tp_phが、閾値Tp_PtoH_LowThresholdより小さいとする。この場合は、閾値Tp_PtoH_LowThresholdから値new_tp_phを減じた値が、値delta_tp_phとして算出される。そして値Tp_HtoP_ReqMaxから値delta_tp_phを減じた値が、値new_tp_hpとして算出される。ここで、算出された値new_tp_hpが値Tp_HtoP_ReqMinよりも小さい場合は、値new_tp_hpは値Tp_HtoP_ReqMinに変更される。
そして値new_tp_phを、保持している値Tp_PtoH_ReqMinから値Tp_PtoH_ReqMaxまでの範囲に収まるようクリッピング処理を実行した結果の値が、値PayloadBitrate_PtoHとして決定される。また、値new_tp_hpが、値PayloadBitrate_HtoPとして決定される。
このようにして一往復の通信において中継装置16がHMD12に送信可能なビットレートに相当する値new_tp_phが閾値Tp_PtoH_LowThresholdを下回った場合には、HMD12が後の一往復の通信において単位時間あたりに送信するデータのサイズが減ることとなる。なおこの場合にHMD12において通信環境が悪化したことを示すメッセージが出力されるようにしてもよい。
この場合、後の一往復の通信において、センシングデータ生成部128によって生成されてセンシングデータバッファ130に記憶されるセンシングデータの一部は、センシングデータ送信部132によって送信されず、欠落する。
このようにすれば、最低限の品質の映像データについては中継装置16からHMD12に送信されることとなる。
なおこの場合において、センシングデータ生成部128が、単位時間あたりに生成するデータのサイズを減らすようにしてもよい。
また閾値Tp_PtoH_LowThresholdは、中継装置16とHMD12との間の距離又は中継装置16に対するHMD12の向きに応じた値であってもよい。ここでビットレート決定部106は、例えば、センシングデータ受信部86が受信するセンシングデータの値に基づいて、中継装置16とHMD12との間の距離、又は、中継装置16に対するHMD12の向きを特定してもよい。そしてビットレート決定部106は、特定された距離又は向きに基づいて、閾値Tp_PtoH_LowThresholdを決定してもよい。
ここで例えば値Tp_PtoH_ReqMaxと値Tp_PtoH_ReqMinとの和を2で割った値が、閾値Tp_PtoH_LowThresholdの基準値とされてもよい。そして例えば、中継装置16とHMD12との間の距離が長くなればなるほど、基準値よりも値が大きくなるよう、閾値Tp_PtoH_LowThresholdが決定されてもよい。また例えば、HMD12を装着したユーザから中継装置16に向かう向きとHMD12を装着したユーザの後頭部から前頭部に向かう向きとの角度が大きくなればなるほど、基準値よりも値が大きくなるよう、閾値Tp_PtoH_LowThresholdが決定されてもよい。
そしてビットレート決定部106は、S113に示す処理で決定された値PayloadBitrate_PtoHに対してフィルタリング処理を実行することで、値PayloadBitrate_PtoHを変更(補正)する(S114)。ここでは例えば、時間T_RT、及び、目標時間TargetTransferTimeに基づいて決定された値を、通信経路探索処理が発生しているか否かの推定の結果に基づいて補正してもよい。
またここで例えばローパスフィルタによるフィルタリング処理が実行されてもよい。
なおS114に示す処理において、値PayloadBitrate_HtoPに対してフィルタリング処理が実行されることで、値PayloadBitrate_HtoPが補正されてもよい。
ここで本処理例では、ビットレート決定部106が保持している値PayloadBitrate_PtoHや値PayloadBitrate_HtoPが、S114に示す処理で算出された補正後の値に更新される。
なおS114に示すフィルタリング処理については後述する。
そしてデータサイズ決定部108が、値TransSize_PtoH及び値TransSize_HtoPを算出する。そしてデータサイズ決定部108は、保持している値TransSize_PtoH及び値TransSize_PtoHを、算出された値に更新する(S115)。ここでは例えば、値PayloadBitrate_PtoHに目標時間情報記憶部90が記憶する目標時間情報が示す値TargetTranferTimeを乗じ、8で割ることで、値TransSize_PtoHが算出されてもよい。ここで値PayloadBitrate_PtoHは、S114に示す処理で補正された後の値であってもよい。また例えば、値PayloadBitrate_HtoPに目標時間情報記憶部90が記憶する目標時間情報が示す値TargetTranferTimeを乗じ、8で割ることで、値TransSize_HtoPが算出されてもよい。ここで値PayloadBitrate_HtoPは、S114に示す処理で補正された後の値であってもよい。なおここでは、ビットをバイトに変換するため8で割る処理が実行されている。
そして生成制御部110が、S114に示す処理で補正された値PayloadBitrate_PtoHを示す生成制御情報をエンタテインメント装置14に送信して(S116)、S101に示す処理に戻る。この場合、生成制御受信部84が当該生成制御情報を受け付け、映像データ生成部80は、値PayloadBitrate_PtoHに相当するサイズのトランザクションデータ70を単位時間あたり(例えば1秒あたり)に生成することとなる。
そして上述のように本処理例では、上述のS101〜S116に示す処理が繰り返し実行されることとなる。
本処理例では、一往復の通信において中継装置16がHMD12に送信可能なビットレートに相当する値new_tp_phが閾値Tp_PtoH_LowThresholdを下回った場合、S113に示す処理で決定される値PayloadBitrate_HtoPが減ることとなる。そしてこの場合、次回のループにおけるS102に示す処理で、映像データ送信部96が、後の一往復の通信において単位時間あたりに送信するデータのサイズを減らす指示をHMD12に送信することとなる。このように本処理例ではHMD12が中継装置16に送信するデータのビットレートを中継装置16において制御できる。
なお本処理例において上述のS114に示すフィルタリング処理が実行されなくても構わない。この場合は、S113に示す処理で決定された値PayloadBitrate_PtoHに基づいて、値TransSize_PtoHが算出されることとなる。またS113に示す処理で決定された値PayloadBitrate_HtoPに基づいて、値TransSize_HtoPが算出されることとなる。
ここで上述のように、映像データ生成部80は、S116に示す処理で送信される生成制御情報が示す値の変化に応じて、生成する映像の解像度や圧縮率などといった品質を変化させてもよい。例えば生成制御情報が示す値が小さくなった際に、映像データ生成部80が生成する映像の品質が下がるようにしてもよい。
本実施形態において、目標時間TargetTranserTimeの値としては例えば1.5ミリ秒、あるいは、2ミリ秒が想定される。そして例えば映像データバッファ94には、1ミリ秒毎に125キロバイトのトランザクションデータ70が書き込まれる。以下、映像データバッファ94に一度に書き込まれるトランザクションデータ70(ここでは125キロバイトのトランザクションデータ70)を1ブロックと呼ぶこととする。そして映像データ送信部96は、目標時間TargetTranserTimeが1.5ミリ秒である場合は、1.5ミリ秒毎に4ブロック(ここでは例えば500キロバイト)のトランザクションデータ70の送信が行われることが望ましい。またセンシングデータ送信部132は、1.5ミリ秒毎に1メガバイトのトランザクションデータ70の送信を行うことが望ましい。
また本実施形態において、映像データ送信部96は、所定サイズの1ブロック単位で映像データを送信してもよい。例えば特定された値TransSize_PtoHが250キロバイトである際には、映像データ送信部96は、一往復の通信において2ブロック(ここでは例えば250キロバイト)の映像データを送信してもよい。またこの場合、映像データバッファ94に書き込まれたブロックのうち最新のものから順に2つのブロックを取得して、これら2つのブロックを送信してもよい。
なお、上述の処理例において例えば、ビットレート決定部106が、中継装置16が受信に成功したトランザクションデータ70のサイズを示す値TransSize_HtoP_Actを特定してもよい。そしてビットレート決定部106が、値TransSize_HtoP_Actに8を乗じ、S108に示す処理で特定された時間T_hpで割ることで、単位時間あたりのデータ送信量(スループット)の値Tp_hpを算出してもよい。
そしてビットレート決定部106が、HMD12から中継装置16へのデータ送信に割当可能な時間new_time_hpを算出してもよい。ここでは例えば、目標時間情報記憶部90が記憶する目標時間情報の値TargetTranferTimeから時間T_phを減じ、さらにジッタを吸収するための定数を減じた値が時間new_time_hpとして算出されてもよい。
そしてビットレート決定部106が、HMD12から中継装置16へのデータ送信に相当する部分スループットの値new_tp_hpを特定してもよい。ここでは例えば、算出された時間new_time_hpに値Tp_hpを乗じ、値TargetTranferTimeで割った値が、値new_tp_hpとして特定されてもよい。そして上述のようにして、値new_tp_hpに基づいて、値PayloadBitrate_HtoPが算出されてもよい。
次に、本実施形態に係る中継装置16で行われる、上述のS114に示すフィルタリング処理の流れの一例を、図9に例示するフロー図を参照しながら説明する。
以下の処理例に示す処理では、通信経路探索処理が発生しているか否かについての評価値の累積値を示す変数Integratorの値に基づいて、通信経路探索処理が発生しているか否かが推定される。そして当該推定の結果に応じたフィルタ定数のローパスフィルタによるフィルタリング処理が実行される。なお変数Integratorの初期値は0であることとする。また探索発生推定部104が、上述の所与の値THR_INTを保持していることとする。なお値THR_INTは、目標時間TargetTransferTimeを示す値より大きいこととする。
また探索発生推定部104は、Lowモードでのフィルタリング処理を実行する基準となる所与の値THR_LOW、及び、Highモードでのフィルタリング処理を実行する基準となる所与の値THR_HIGHも保持していることとする。またビットレート決定部106は、変数Integratorを0にリセットすることを決定するための変数Clear_Counterの初期値DET_CNTも保持していることとする。
まず、探索発生推定部104は、S108に示す処理で特定された時間T_RTを示す値と値THR_INTとを比較する(S201)。
ここで時間T_RTを示す値が、値THR_INTより大きいことが確認された場合は、探索発生推定部104は、時間T_RTを示す値から所与の値THR_INTを引いた値を変数Integratorの値に加算する(S202)。そして探索発生推定部104は、変数Clear_Counterの値として、値DET_CNTを設定する(S203)。
S201に示す処理で時間T_RTを示す値が、値THR_INTより小さいことが確認された場合は、探索発生推定部104は、変数Clear_Counterの値を1減らす(S204)。なおここで変数Clear_Counterの値が0である場合は、探索発生推定部104は、変数Clear_Counterの値を更新しない。そしてビットレート決定部106は、変数Clear_Counterの値が0であるか否かを確認する(S205)。
ここで0でないことが確認された場合は(S205:N)、S207に示す処理に進む。0であることが確認された場合は(S205:Y)、探索発生推定部104は、変数Integratorの値を0に設定して(S206)、S207に示す処理に進む。すなわち値DET_CNTに相当する回数だけ連続して時間T_RTを示す値が、値THR_INTより小さい場合は、変数Integratorの値は0にリセットされる。
S201〜S206に示す処理が終了された後に、探索発生推定部104は、変数Integratorの値を確認する(S207)。なお本処理例ではS201に示す処理で時間T_RTを示す値が、値THR_INTと同じであることが確認された場合もS207に示す処理が実行される。
変数Integratorの値が値THR_HIGH以上である場合は、ビットレート決定部106は、Highモードでのフィルタリング処理を実行して(S208)、S114に示す処理は終了される。
変数Integratorの値が値THR_LOW以上値THR_HIGH未満である場合は、ビットレート決定部106は、Lowモードでのフィルタリング処理を実行して(S209)、S114に示す処理は終了される。
変数Integratorの値が値THR_LOW未満である場合は、ビットレート決定部106は、Normalモードでのフィルタリング処理を実行して(S210)、S114に示す処理は終了される。
ここで例えばHighモードの方がLowモードよりも、またLowモードの方がNormalモードよりも、ビットレート決定部106が保持している値PayloadBitrate_PtoHとの差が小さくなるよう、値PayloadBitrate_PtoHが変更されてもよい。例えばHighモードの方がLowモードよりも、またLowモードの方がNormalモードよりも時定数が大きくなるようフィルタ定数が決定されてもよい。
また例えば、ビットレート決定部106が保持している値PayloadBitrate_PtoHに、当該値PayloadBitrate_PtoHと今回のループにおいてS113に示す処理で決定された値PayloadBitrate_PtoHとの差に0より大きく1より小さな係数を加えた値となるよう、値PayloadBitrate_PtoHが変更されてもよい。
また値PayloadBitrate_PtoHを減少させる変更の場合は、HighモードやLowモードにおいてはNormalモードよりも、保持されている値PayloadBitrate_PtoHとの差が大きくなるよう、値PayloadBitrate_PtoHが変更されてもよい。例えば値PayloadBitrate_PtoHを減少させる変更の場合は、HighモードやLowモードにおいてはNormalモードよりも時定数が小さくなるようフィルタ定数が決定されてもよい。また例えば、HighモードやLowモードにおける上述の係数がNormalモードにおける上述の係数よりも大きくてもよい。この場合、HighモードやLowモードにおいてはNormalモードよりも大きな変化となるよう、値PayloadBitrate_PtoHが変更されることとなる。なお値PayloadBitrate_PtoHを減少させる変更の場合は、HighモードやLowモードにおいてはフィルタリング処理が実行されなくてもよい。
なお、値PayloadBitrate_PtoHを減少させる変更の場合は、HighモードにおいてはLowモードよりも、保持されている値PayloadBitrate_PtoHとの差が大きくなるよう、値PayloadBitrate_PtoHが変更されてもよい。
また値PayloadBitrate_PtoHを増加させる変更の場合は、HighモードやLowモードにおいてはNormalモードよりも、保持されている値PayloadBitrate_PtoHとの差が小さくなるよう、値PayloadBitrate_PtoHが変更されてもよい。例えば値PayloadBitrate_PtoHを増加させる変更の場合は、HighモードやLowモードにおいてはNormalモードよりも時定数が大きくなるようフィルタ定数が決定されてもよい。また例えば、HighモードやLowモードにおける上述の係数がNormalモードにおける上述の係数よりも小さくてもよい。この場合は、HighモードやLowモードにおいてはNormalモードよりも小さな変化となるよう、値PayloadBitrate_PtoHが変更されることとなる。
なお、値PayloadBitrate_PtoHを増加させる変更の場合は、HighモードにおいてはLowモードよりも、保持されている値PayloadBitrate_PtoHとの差が小さくなるよう、値PayloadBitrate_PtoHが変更されてもよい。
またフィルタ定数は、映像データ生成部80の応答性に基づいて決定されてもよい。
なお、本発明は上述の実施形態に限定されるものではない。
例えば以上の説明における図7においてエンタテインメント装置14の機能として示されている示す機能の一部又は全部が、HMD12や中継装置16において実装されても構わない。
図10は、本発明の別の一実施形態に係るHMD12、エンタテインメント装置14、及び、中継装置16で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係るエンタテインメントシステム10で、図10に示す機能のすべてが実装される必要はなく、また、図10に示す機能以外の機能が実装されていても構わない。
図10に示すように、本実施形態に係るエンタテインメント装置14は、機能的には例えば、非圧縮映像データ生成部140、映像データ送信部82、センシングデータ受信部86、を含んでいる。非圧縮映像データ生成部140は、プロセッサ50を主として実装される。映像データ送信部82、センシングデータ受信部86は、入出力部56を主として実装される。
以上の機能は、コンピュータであるエンタテインメント装置14にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ50で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してエンタテインメント装置14に供給されてもよい。
また図10に示すように、本実施形態に係る中継装置16は、機能的には例えば、目標時間情報記憶部90、映像データ受信部92、映像データ圧縮部150、映像データバッファ94、映像データ送信部96、センシングデータ受信部98、センシングデータ送信部100、所要時間特定部102、探索発生推定部104、ビットレート決定部106、データサイズ決定部108、生成制御部110、を含んでいる。目標時間情報記憶部90、映像データバッファ94は、記憶部62を主として実装される。映像データ受信部92、センシングデータ送信部100は、入出力部66を主として実装される。映像データ送信部96、センシングデータ受信部98は、通信部64を主として実装される。所要時間特定部102、探索発生推定部104、ビットレート決定部106、データサイズ決定部108、映像データ圧縮部150は、プロセッサ60を主として実装される。生成制御部110は、プロセッサ60及び入出力部66を主として実装される。
以上の機能は、コンピュータである中継装置16にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ60で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して中継装置16に供給されてもよい。
また図10に示すように、本実施形態に係るHMD12は、機能的には例えば、映像データ受信部120、映像データ出力部122、デコード部124、表示制御部126、センシングデータ生成部128、センシングデータバッファ130、センシングデータ送信部132、を含んでいる。映像データ受信部120、センシングデータ送信部132は、通信部34を主として実装される。映像データ出力部122、デコード部124は、プロセッサ30を主として実装される。表示制御部126は、プロセッサ30、表示部38を主として実装される。センシングデータ生成部128は、プロセッサ30、センサ部40、カメラ部44を主として実装される。センシングデータバッファ130は、記憶部32を主として実装される。
以上の機能は、コンピュータであるHMD12にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ30で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してHMD12に供給されてもよい。
非圧縮映像データ生成部140は、本実施形態では例えば、HMD12の表示部38に表示される映像を表す非圧縮の映像データ(圧縮されていない映像データ)を生成する。
映像データ送信部82は、本実施形態では例えば、非圧縮映像データ生成部140が生成する非圧縮の映像データを中継装置16に送信する。
映像データ受信部92は、本実施形態では例えば、エンタテインメント装置14から送信される非圧縮の映像データを受信する。
映像データ圧縮部150は、本実施形態では例えば、映像データ受信部92が受信した非圧縮の映像データを圧縮することによって、圧縮済の映像データを生成する。また映像データ圧縮部150は、映像データ受信部92が受信した非圧縮の映像データを圧縮した上で、圧縮済の映像データに相当するトランザクションデータ70を生成してもよい。
映像データバッファ94は、本実施形態では例えば、映像データ圧縮部150が生成する圧縮済の映像データを記憶する。
映像データ送信部96は、本実施形態では例えば、映像データ圧縮部150が生成する圧縮済の映像データをHMD12に送信する。例えば映像データ送信部96は、映像データバッファ94に記憶されている映像データをHMD12に送信する。
生成制御部110は、本実施形態では例えば、上述のようにしてビットレート決定部106により決定されるビットレートに相当するサイズのデータ(例えばトランザクションデータ70)を単位時間あたりに生成するよう映像データ圧縮部150を制御する。ここで例えば、生成制御部110は、決定されるビットレートに相当するサイズのデータを単位時間あたりに生成するよう映像データ圧縮部150による映像の圧縮における圧縮率を制御してもよい。
以上で説明した内容以外は、図7を参照して説明した内容と同様であるので、その説明を省略する。
図10の例では、生成制御部110は、決定されるビットレートに相当するサイズのデータを単位時間あたりに生成するよう中継装置16を制御することとなる。またこの場合、生成制御部110は、生成制御情報をエンタテインメント装置14に送信しない。
また図7において中継装置16の機能として示されている示す機能の一部又は全部が、HMD12やエンタテインメント装置14において実装されても構わない。
また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。