メインコンテンツまでスキップ

12.5. Video Telephony or Streaming with FUs and Forward Error Correction (FU と前方誤り訂正を用いたビデオテレフォニーまたはストリーミング)

12.5. Video Telephony or Streaming with FUs and Forward Error Correction (FU と前方誤り訂正 (Forward Error Correction, FEC) を用いたビデオテレフォニーまたはストリーミング)

本方式は実装され, 特に高いパケット損失率で良好な性能を提供することが示されている [19]。

再送が適用できないシナリオでパケット損失と戦う最も効率的な手段は前方誤り訂正 (FEC) である。アプリケーション層のエンドツーエンド FEC は, 個々のリンクを FEC で保護する場合 (特に伝送路に特性の異なるリンクがある場合) より効率が劣ることが多いが, 一部のシナリオではアプリケーション層エンドツーエンド FEC が避けられない。RFC 5109 [18] は, パケット損失環境で汎用のアプリケーション層エンドツーエンド FEC を用いる手段を提供する。異なるパケット内の同じビット位置のビットに XOR 演算を適用して二元前方誤り訂正符号が生成される。二元符号はパラメータ (n,k) で指定でき, k は接続で用いる情報パケット数, n は k 個の情報パケットに対して生成されるパケットの総数である。すなわち k 個の情報パケットに対して n-k 個のパリティパケットが生成される。

RFC 5109 フレームワーク内でパラメータ (n,k) の符号を用いる場合, 次の性質はよく知られている。

a) 1 つの RTP パケットにのみ適用する場合, RFC 5109 はパケットの繰り返しにしかならない。

b) XOR で結合されたパケットの長さが等しいとき, RFC 5109 はビットレート効率が最も高い。

c) 同じパケット損失確率 p かつ固定の k に対して, n が大きいほど残余誤り確率は小さくなる。例えば, パケット損失確率 10%, k=1, n=2 のとき残余誤り確率は約 1% であるが, n=3 では約 0.1% である。

d) 同じパケット損失確率 p かつ固定の符号率 k/n に対して, n が大きいほど残余誤り確率は小さくなる。例えば, パケット損失確率 p=10%, k=1, n=2 のとき残余誤り率は約 1% であるが, 拡張ゴレイ符号 k=12, n=24 では残余誤り率は約 0.01% である。

FU (Fragmentation Unit) を用いずに RFC 5109 を H.264 ベースライン符号化ビデオと組み合わせて適用する場合, いくつかの選択肢が考えられる。

  1. ビデオエンコーダは, 各ビデオフレームが単一スライスで符号化される NAL ユニットを生成する。FEC を適用する際, 単純な符号, 例えば (n=2, k=1) を用いられる。すなわち各 NAL ユニットは基本的に繰り返されるだけである。欠点は明らかに上記 d) に従った符号性能の悪さと, (n, k=1) 符号しか使えないという柔軟性の低さである。

  2. ビデオエンコーダは, 各ビデオフレームが 1 つ以上の連続スライスで符号化される NAL ユニットを生成する。FEC 適用時, より良い符号, 例えば (n=24, k=12) を NAL ユニット列にわたって用いられる。フレームあたりの RTP パケット数に応じて, 損失は大きな遅延を生じ得るが, フレームあたりの RTP パケット数を増やすと遅延は減る。長さの大きく異なるパケットを結合することもあり, 上記 b) に従いビットレート効率は下がる。しかし, 注意を払いスライスが 1 kb 以上であれば, 近い長さ (100-200 バイト差) を生成でき, ビット効率を壊滅的に下げない。

  3. ビデオエンコーダは, あるフレームにほぼ等長の k 個のスライスを含む NAL ユニットを生成する。FEC 適用時, より良い符号, 例えば (n=24, k=12) を各フレームの NAL ユニット列に用いられる。上記 2) と比べ遅延は減る可能性があるが, 欠点がいくつかある。第一に, スライス構造符号化はフレーム内予測を減らし追加のスライスオーバーヘッドが必要となるため, 符号化ビデオの符号化効率が著しく下がる。第二に, 事前符号化コンテンツやゲートウェイ経由では, 通常 FEC に適した k スライスで符号化されていない。最後に, 等長の k スライスを生成するビデオ符号化は直截ではなく, 複数パス符号化が要る場合がある。

FU を FEC と組み合わせて適用すると, これらの欠点の多くを避けられる。各 NAL ユニットは基本的に等長の任意個の FU に分割できる。したがって, エンコーダが等長スライスを生成しなくても, 妥当な k と n で FEC を適用できる。例えば, フレーム全体を含む符号化スライス NAL ユニットを k 個の FU に分割し, パリティ検査符号 (n=k+1, k) を適用できる。しかし, 生成されたすべてのフラグメントが復元されない限りスライス全体が失われるという欠点がある。したがって, フレームを複数スライスに分割した場合より大きな領域が失われる。

提示した手法により, 追加のソース符号化層冗長 (周期的イントラフレームなど) がなくても良好な伝送誤り耐性が得られる。したがって, 同一の符号化ビデオ列で, 誤りのない伝送では最大の圧縮効率と品質を, 誤りの多いネットワークでも達成できる。さらに, 事前符号化列に遅延を加えずに FEC を適用できる。この場合, 誤りの多いネットワーク向けに符号化されていない事前符号化列でも, 大きな遅延を加えずほぼ確実に送信できる。加えて, 等長の FU は RFC 5109 をビットレート効率よく用いる結果となる。

誤り確率が送信パケット長に依存する場合 (例: 移動体伝送 [15]), FU と FEC を適用する利点はさらに明らかである。基本的に, FU サイズの柔軟性により, 各 NAL ユニットに適切な FEC を適用し, NAL ユニットの不等誤り保護が可能になる。

FU と FEC を用いる場合, 生じるオーバーヘッドは大きいが, FEC を適用しない場合にイントラ符号化マクロブロックに費やさなければならないビット数と同程度のオーダーである。[19] では, 同じ誤り率とオーバーヘッドを含む同じ総ビットレートで, FEC ベースの手法の全体的性能が品質を改善することが示された。