Oculus Quest ALVRのセッティングによる遅延の検証
今更感はありますが、ALVRのVideo項目のセッティングによって、どのくらい遅延が変動するのか検証してみました。
検証内容
ALVRを立ち上げ、STEAMVRのホーム画面を動きならが、スクリーンショットで、ALVRのServer画面のスクリーンショットを取っていきます。 遅延を適当に3回ずつ記録しました。
ALVRのVideo設定をいじっていきます。
検証時には、下のようにALVR Serverのスクリーンショットを撮っています。このうち、各Latencyを見ていきます。
各Latencyの意味は、下記の通りです。
項目 | 内容 |
TotalLatency | PC上のVRアプリが画面を描写してから Oculus Questが画面を描写するまでにかかった時間の合計 |
EncodeLatency | PC上のVRアプリが描写した画面を転送するために エンコードに掛かった時間 |
EncodeLatencyMax | EncodeLatencyのうちの最大値 |
TransportLatency | エンコードした画面のデータをPCからOculus Questに 転送するのにかかった時間 |
DecodeLatency | 転送された画面のデータをOclus Quest上でデコードするのに 掛かった時間 |
TotalRatencyが、他の項目の合計にはなっていないようですので、他にも遅延要因はあるのでしょうが、表示で分かるのはここまでですので、これらを参考にしていきます。
検証環境
下記の記事と同じ環境で検証しています。
Bitrateの影響
設定条件
Codec | H.265 |
Bitrate (Mbps) | 30~150 |
Resolution (%) | 100 |
Buffer size (kB) | 200 |
結果
Bitrateが上がると、当然遅延が大きくなります。支配的なのは、DecodeLatencyのようです。
今回の検証環境では、PCのパワーよりもOculus Questのパワーによって遅延が発生しているという事でしょう。
Bitrateの推奨値が30Mbpsだというのも納得できる結果です。というのも、72Hzで動作するOculus Quest、1フレーム当たりの描写時間は13.9msecです。DecodeLatencyを見ると、50Mbpsを超えると1フレームの描写に間に合っていないことになります。
Codecの影響
設定条件
Codec | H.264 |
Bitrate (Mbps) | 30~150 |
Resolution (%) | 100 |
Buffer size (kB) | 200 |
結果
H.265からH.264に変更すると、EncodeLatencyが下がるようです。とは言え、TransprtLatencyやDecodeLatencyには有意な差はありません。
今回の環境では、遅延の観点から見れば、H.264とH.265で有意な差はなさそうですが、EncodeLatencyが高くなるような状況では、H.264の方が遅延が少なるなるでしょう。
ただし、H.265はH.264の2倍の圧縮レートがあると言われています。30Mbps/H.265と60Mbps/H.264が一緒ならば、H.265にしてBitrateを下げた方が画質面・遅延面共に優位なのではないでしょうか。
Video Resolutionの影響
設定条件
Codec | H.265 |
Bitrate (Mbps) | 50 |
Resolution (%) | 50~150 |
Buffer size (kB) | 200 |
結果
Resolutionを上げると、 DecodeLatencyも増加しますが、特にEncodeLatencyが激変します。PCのGPUに依存していると言えるでしょう。
Buffer sizeの影響
設定条件
Codec | H.265 |
Bitrate (Mbps) | 150 |
Resolution (%) | 100 |
Buffer size (kB) | 100~404 |
結果
Buffer sizeを100kBにした時に、劇的にTransprtLatencyが増加しました。また、画像の乱れが多々発生しました。Buffer sizeは推奨値200kBよりも下げると不具合がありそうです。また、200kBと404kBで大きな差は発生していません。
Buffer sizeは推奨値である200kBから触る必要はなさそうです。
まとめ
下記にまとめた記事が”アレ”な結果になってしまったので、物のついでと、今回はALVRのVideo設定の遅延について検証しました。
個人的には、どの項目をいじればどうなるのか、理解できたように思います。
・Bitrate:DecodeLatencyが支配的。Oculus QuestのSOC依存の項目。
推奨値30Mbps以上では、フレーム落ちが発生していると考えて良さそうです。
・Codec:H.264の方がEncodeLatencyが下がる傾向。
・Video Resoution: EncodeLatencyが支配的。PCのGPU依存。
・Buffer size:推奨値200kBで問題なし。
結論としては、特に不満が無ければ、推奨値である下記の設定が最もバランスが良さそうです。
Codec | H.265 |
Bitrate (Mbps) | 30 |
Resolution (%) | 100 |
Buffer size (kB) | 200 |
私自身は、ALVRは下記のように高画質に振って、Adobeイマーシブ環境で使っていることが多いです。
Codec | H.265 |
Bitrate (Mbps) | 150 |
Resolution (%) | 100 |
Buffer size (kB) | 200 |
ALVR自身良く出来ていますが、遅延が気になります。6DoFで動きたい場合は、やはりOculus Rift Sの方が使い心地が良いですね。