ビデオストリーミング配信における映像品質劣化の原因の一つにパケットロスが挙げられる. 特に,ネットワークの輻輳によるパケットロスは,リンク間における中間ノードでの一時的なパケットのバッファ溢れによることが原因であり,一度パケットロスが発生するとパケットロスが連続して起こる, いわゆるバーストロスが発生する. このバーストロスは動画においては連続したコマ落ちを生じさせ,最悪の場合再生が中断し, 大きな映像品質劣化が生じる原因となる.
ビデオストリーミングにおける映像品質劣化を防ぐための 上位レイヤでバーストロスに対処する手法として, ロスパケットを回復するForward Error Correction(FEC)や, バーストロスを分散させるパケットインターリーブ等の手法が研究されてきた.
ロスパケットを回復する手法として,FECの他にAutomatic Repeat Request (ARQ) が挙げられる. FECはパケットロスが生じた場合,受信ノードでロスしたパケットの復元を行う. 一方ARQは受信ノードが送信ノードにロスしたパケットの再送要求を行う. ストリーミング配信では即時性を要するため,ARQにおいてロスパケットの再送を行う際に生じるパケットの 往復時間(ラウンドトリップタイム)が問題となる. そのため,ストリーミング配信ではFECが多く用いられている. FECではデータが収納されたパケット列に冗長パケットを付加して転送を行い, パケットロスが生じた場合は付加した冗長パケットを用いてパケットの回復を行う. 冗長パケットを多く付加すれば復元できるパケット数も増やすことができるが, 冗長度の増加による転送効率の悪化やデコーダでのオーバーヘッドが増大する.
FECは誤り訂正符号を用いてロスパケットの復元を行う. 誤り訂正符号は一般に有線/無線通信時や記憶媒体からの読み取り時に発生する雑音等による ビット誤りを訂正するために用いられている. ロスパケットを復元する場合,パケットサイズは1000byte程度あり,1000バイト分のバースト誤りを訂正する には大きな計算コストが掛かると言われている. そこで,バースト誤りを訂正するためにビットレベルでのインターリーブが行われている. これによりバースト誤りを分散しパケット単位の誤り訂正を行うことができる.
パケットインターリーブはパケットの送信順を変更することでバーストロスを分散させる手法であるが, 長いバーストロスに対応するためにインターリーブ長を大きくすると再生遅延が増大する. これは,パケットインターリーブは転送時にパケットの転送順を並べ替えることによって行うため, インターリーブ長を長くすれば受信時に再度パケットの順序を並べ直す, デインターリーブを行う際の時間がより多く生じるからである. また,パケットインターリーブを行うことにより,FECでロスパケットの復元を行う際に, そのロスパケットに対応した冗長パケットの到着が遅れることによっても再生遅延が生じる.
本稿では上記のFECとパケットインターリーブの問題に対処するため, パケットインターリーブにおいてインターリーブ長をネットワークの状態に応じて動的に変更する手法を提案する. 本手法では指数加重平均を用いてパケットロス率の推定を定期的に行い, 推定したパケットロス率を基にインターリーブ長の変更を動的に行う. インターリーブ長決定に当たっては, パケットインターリーブによって生じる再生遅延やリンク間で生じる転送遅延を考慮する.