経路を見れば、ネットワークが運べる量がわかります。
ラウンドトリップ時間(小さなテストパケットがクライアントからホストへ届き、戻ってくるまでの時間)と、接続の確立のされ方から、Remioは相手にするネットワークの種類を判断します。確認はセッションの開始時と、ネットワーク経路が変わるたびに行われます。
2台のデバイスが挨拶を交わした瞬間、Remioは相手側へ小さなパケットを送り、戻ってくるまでの時間を計ります。有線の直接LANなら、この往復はごくわずかです。同じネットワークのWi-Fiなら、少し長くなります。4Gや5G回線ではっきり長くなり、地域をまたいでトラフィックを中継する中継サーバーを通ると、高速なモデムを使っていてもさらに伸びることがあります。
同じネットワーク内でラウンドトリップが非常に短ければ、ローカルネットワークです。映像はピクセル単位で完璧に見え、エンコーダーは作れるだけの速さでフレームを渡せ、控えめにする必要はありません。それより長い場合は、より広い世界として扱われます。別の部屋のWi-Fi、カフェのホットスポット、電車内のLTE回線、別の都市にある中継サーバーなどです。帯域コントローラーがギアを切り替えます。
セッションは、画面サイズとフレームレートに見合ったビットレートで始まるため、大きく高速なディスプレイは小さなものより高い値で始まります。そこから先は、経路の種類によってRemioが動く範囲が決まります。セッションの途中で経路が変わった場合(Wi-Fiからモバイル回線への切り替えや、接続の再確立など)、Remioはあらためて確認して調整します。すでに離れたネットワーク向けの判断を引きずることはありません。
この選択は、あえて見えないようにしています。接続すれば映像が表示され、ラグはそのとき使っているネットワークに見合ったものになります。設定画面も、切り替えを忘れずに操作する「LANモード」のスイッチもありません。経路の確認が入力、適切な範囲が出力で、ネットワークが変われば、セッションも適応します。
ネットワークの種類ごとに、ひとつの範囲。
ひとつの適応カーブでは、共通点のないネットワーク同士の間で妥協するしかありません。Remioは代わりに、経路に合った範囲を選びます。ローカルネットワークでは高め、インターネットでは慎重に、中継サーバー経由では上限付きです。
セッションは画面サイズとフレームレートに見合ったビットレートで始まり、下限は高く保たれるため、映像が元の画質まで上がり直す必要がありません。上限は画面サイズに応じて30〜60 Mbpsで、キーフレームが余裕を必要とするときにエンコーダーが一時的に跳ね上がれます。待ち行列も、ラグもありません。
インターネット経由では、回線が悪化すると下限が300 Kbpsまで下がり、不安定な切り替えが起きてもストリームは途切れません。エンコーダーがネットワークに流す量を減らし、フレームレートを維持します。中継サーバー経由では上限が15 Mbpsです。共有された制約のある経路で無理に押し込むと、パケットロスが増えるだけだからです。
どの範囲も、同じエンコーダー、同じデコーダー、同じフレーム単位のレンダリング方針を共有します。変わるのは、下限と上限の位置、そして一時的なサージ(急増)が起きたときにエンコーダーがどこまで強く押してよいかです。ローカルネットワークでは、そのサージは日常的なキーフレームにすぎません。制約のある経路では、我慢できるセッションと完全に切れてしまうセッションとの分かれ目になります。
経路が変わったときにあらためて確認することも、範囲そのものと同じくらい重要です。Wi-Fiからモバイル回線へ移動したときや、接続が自分で再開したときも、Remioは経路を再確認し、セッションの開始時のネットワークではなく、今いるネットワークに合う範囲にします。
範囲を決めるもの。隠しごとはありません。
仕事をするのは4つだけです。経路の分類のしかた、ローカルネットワークの範囲、インターネットと中継サーバーの範囲、そしてレンダリング方針。Remioが動くすべてのコーデックとすべてのプラットフォームで共通です。
ローカルネットワークで、処理遅延は約8ミリ秒。
エンコーダーは超低遅延のH.265をBフレーム無効で動かすため、どのフレームも直前までのフレームだけに依存し、これから来るフレームには依存しません。1回のキャプチャ間隔につき、エンコード済みフレームを1つ出して、すぐに送信します。フレームペーシングも、エンコーダーのキューも、「追いつく」ためのロジックもありません。LANで感じる残りの遅延は、ディスプレイ自身の60 Hzのリフレッシュ周期によるものです。
クライアント側では、最新のフレームを描画して、残りは捨てます。失われたパケットは、間に合うならすぐに再送します。間に合わないときは、待つのではなくスキップして新しいフレームを要求します。

ひとつのロジックで、すべてのコーデック、すべてのプラットフォーム。
ビットレートの範囲は、特定のコーデックやOSに縛られません。2台のMac間のH.265でも、古いWindowsマシンへのH.264でも、最新のAndroidデバイスへのH.265でも、同じルールが適用されます。
H.265が第一のコーデックなのは、デスクトップの内容に対してビット当たりの品質が最も高く、すべてのMac、iPhone、iPad、最新のWindows GPU、最近のAndroidチップセットに、そのためのハードウェアエンコーダーまたはデコーダーが搭載されているからです。ハードウェアとは、メインのCPUではなく専用のシリコンブロックで処理が行われるということです。高速で省電力、しかもセッション開始前にマシンがしていた作業を邪魔しません。
H.264は、H.265をハードウェアで処理できない一部のデバイス向けのフォールバックです。同じ映像に対してわずかに多くの帯域を使いますが、どこでも動作し、同じ範囲のロジックがそのまま変更なしに適用されます。
エンコード側は、macOSではVideoToolbox、Radeon GPUではAMF、Intel内蔵グラフィックスではQSV、WindowsのNVIDIAカードではNVENC、LinuxホストではVAAPIです。デコード側は、AppleデバイスではVideoToolbox、AndroidではMediaCodecです。これらがユーザーに見えることはありません。2台のデバイスをペアリングすれば、エンジンが双方がハードウェアで扱える最適なコーデックを選び、範囲はネットワークに基づいて自動で決まります。
その結果、同じ適応の挙動が、OSごとに別々のコードパスを持たずに、サポートするすべてのプラットフォームで提供されます。MacとiPhoneの間でも、WindowsのPCとAndroidタブレットの間でも、同じ範囲のロジックが適用され、両端でハードウェアアクセラレーションが働き、何かを遅くするソフトウェアのフォールバックもありません。
3つのネットワーク、3つの実際の体験。
表の数字は簡単ですが、実際に多くの人が出会う3つの場面で、適応する範囲が何をもたらすかをお見せします。
ギガビット光回線のLAN。両方のデバイスが有線、または同じWi-Fi 6ルーターにつながっていれば、4Kでもピクセル単位で完璧な映像になり、カーソルを動かしてから実際に動くのを見るまでの間に、体感できるラグはありません。100%ズームでも文字はくっきり鮮明です。ウェブサイトをフルスピードでスクロールしても、ホストそのものでスクロールしているのと変わりません。ネットワークにはキーフレームのための余裕が十分にあり、パイプラインのどこも何かを絞ることはありません。
カフェのWi-Fi。20台ほどの他のノートPCと共有していても、ストリームは60 fpsを保ち、クリーンなままです。ネットワークが一瞬混み合うと、隅のほうに一瞬だけブロックノイズが見えることがありますが、すぐに消えます。エンコーダーは少しのディテールと引き換えにフレームレートを守り、クライアントは止まらず、セッションが切れそうだと感じることもありません。ローカルネットワーク用の範囲なら身構えてしまうような衝撃を、インターネット用の範囲が吸収しているのです。
4G LTEのホットスポット。ポケットの中のスマートフォンから、最近のほとんどの通信事業者で、クリーンな1080pの映像を60 fpsで維持できます。動きの激しいシーンのディテールは少し柔らかくなります。エンコーダーが、ローカルネットワークで使えるビットレートのごく一部に映像を収めているからです。それでも反応の良さは変わりません。クリックすればクリックが伝わり、タイプすればキーが返ってきます。リモートデスクトップは、ビデオ通話ではなく、リモートデスクトップとして感じられます。
この3つのセッションのどれも、設定の変更も、画質の選択も、開始前のネットワークテストも必要ありませんでした。Remioが経路を確認し、範囲が自動で決まり、体験はたまたまそこにあったネットワークに見合ったものになりました。
よくあるご質問
適応型品質のしくみでよく挙がる5つの質問に、正直にお答えします。
Remioはどの範囲を使うかを決めるために、何を測っているのですか?
なぜひとつの適応カーブではなく、別々の範囲なのですか?
適応型品質はモバイル回線でも使えますか?
ラグを増やすバッファはありますか?
自動検出を手動で上書きできますか?
接続した瞬間から、適応型品質がオンです。
つなぎたいコンピューターと、つなぐ側のデバイスにRemioをインストールしてください。帯域コントローラーが、セッションの開始時に適切な範囲を選びます。設定は不要で、映像が見えるだけです。