概要
本記事では、超低遅延なローカルゲームストリーミング向けに設計した独自ビデオコーデックのアーキテクチャと最適化手法を解説。 既存のH.264/HEVC/AV1などの汎用コーデックで不可避な遅延要素を排除し、圧倒的な高速動作とエラー耐性を両立。 DWT(離散ウェーブレット変換)ベースの圧縮、エントロピー符号化の排除、ハードウェアフレンドリーな設計思想。 実装例やパフォーマンス評価、品質比較も交え、ローカルLAN環境での実用性を検証。 独自コーデック設計の難所や工夫も詳しく紹介。
超低遅延ゲームストリーミングの要件
- ゲームプレイ映像 をネットワーク越しに リアルタイム転送 する用途の増加
- 1ミリ秒単位の低遅延 が必須条件
- 一連の処理フロー:
- A→B:コントローラ入力送信
- B:GPUでフレーム描画・ビットストリーム化
- B→A:映像データ送信
- A:デコード・画面表示
- ユーザー脳内で快感物質分泌
- 各処理の 遅延削減 が最重要課題
- 20ms以内 で全工程を完了する理想
既存コーデックの課題と制約
- H.264/HEVC/AV1 等は 高圧縮率 だが 遅延発生 が避けられない
- バッファリングやBフレーム などの圧縮テクニックを 封印
- CBR(固定ビットレート)運用 が必須
- 可変ビットレート や バッファ は使えない
- パケットロス耐性 も考慮
- LAN内ストリーミング では 帯域制約が緩い
- ギガビットイーサネット や 高速WiFi が前提
- 帯域重視から遅延重視 への発想転換
独自コーデック設計のアプローチ
- モーション予測排除(イントラオンリー)
- ビットレート増加 だが エラー耐性・シンプル設計・品質安定
- Motion JPEG2000 等と同系統
- 100Mbps超 の帯域消費
- エントロピー符号化排除
- GPU並列化 に不向きな処理をカット
- VESA DSC 等の事例も参考
- 汎用ソフトウェア実装が少ない領域
- DWT(離散ウェーブレット変換)圧縮
- DCT系コーデック の代替案
- 画像を多段階でダウンサンプリング・誤差成分抽出
- 5段階分解 を採用
- 高周波成分は強く量子化 し、視覚特性を活用
- 典型的なアーティファクトはブラーやリンギング
パケットロス耐性・GPUフレンドリーなビットストリーム設計
- 32×32係数ブロック 単位で独立デコード可能
- パケットロス時は全ゼロ補完で局所的なブラー
- 8×8→4×2ブロック へ階層化
- GPUスレッド階層に最適化
- 1スレッド:4×2係数
- サブグループ:8×8ブロック
- ワークグループ:32×32ブロック(128スレッド)
- 8ビットストレージ 活用、ビット操作を極力排除
- GPUスレッド階層に最適化
- ビットプレーン符号化 を採用し、 エントロピー符号化は非採用
- 4×2ブロック単位でビット数管理
- 符号ビットは32×32ブロック末尾に集約
高速・正確なレートコントロール
- CBR厳守のための独自レート制御
- 各ブロックで1,2,3…ビット削除時の誤差とビットコストを事前計算
- 画質劣化/ビット節約効率順に並べ、必要数だけ削減
- 全体で目標ビット数に収束
- ビットプレーン単位でコントロール可能なため、CBR運用が容易
実装・パフォーマンス評価
- Expedition 33(1080p 4:2:0)でのエンコード/デコード
- RX 9070 XT(RADV)でエンコード0.13ms、デコード100μs未満
- DWTパス・量子化パスをFP16最適化
- 4K 4:2:0(ParkJoyシーン)
- 0.25msでエンコード
- PCI-e転送より圧縮→転送の方が高速
- 専用ハードウェアコーデックより1桁高速
- 遅延削減に直結
- Steam Deckでのデコード時消費電力も微小
品質比較・主観評価
- H.264/HEVC/AV1(NVENC/VAAPI)との比較
- 200Mbps超・60fps運用 で 目視上は大差なし
- 品質評価にはpsy-ex/metricsを活用
- シンプルな構造ながら十分な画質を実現
- CBR未達のVAAPIは除外
- サイドバイサイド比較や拡大で差異確認可能
まとめ・今後の展望
- イントラオンリー・非エントロピー符号化・DWT圧縮 で 超低遅延ストリーミング を実現
- GPUネイティブな並列処理設計 で 圧倒的なエンコード/デコード速度
- LAN内や帯域制約の緩い環境で特に有効
- 今後の課題は画質向上・帯域最適化・汎用化
- 既存コーデックの常識を覆すアプローチの可能性