【文献】
吉村 康彦、望月 このみ、植松 芳彦、鈴木 亮一,FECプロキシ間転送最適化方式の検討,マルチメデイア、分散、協調とモバイル(DICOMO)シンポジウム論文集 1997年〜2006年版,日本,社団法人情報処理学会 ,2005年 7月 6日,p.525-528
(58)【調査した分野】(Int.Cl.,DB名)
前記タイムスタンプ付与手段は、前記パケットの入力間隔に出力伝送速度に対する入力伝送速度の比率を乗算した値を前のパケットのタイムスタンプに加算した時刻をタイムスタンプとして付与することを特徴とする請求項2に記載の符号化装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
前方誤り訂正符号のうちブロック符号と呼ばれる方式では、所定のサイズのブロックごとにパリティデータを生成する。生成されたパリティデータをすぐに伝送すると、受信側での復号までの遅延は少なくできるものの、
図9に示すように、データがバースト的に送出されてしまうという問題があった。
【0006】
バースト的に送出されるデータを平滑化するために、例えば、パリティデータを次に送出するソースブロック区間に重ねて送出することが考えられる。この方法はソースデータが時間あたり一定であり付加するパリティデータも時間あたり一定であれば、均一な送信レートとすることが出来る方法である。しかしながら、このシェイピング方法にて平滑化すると、
図10に示すように、受信側ではパリティデータの受信が完了するまで復号できずに、遅延が発生してしまうという問題があった。また、例えばシェイピング装置を挟みシェイピングする方法がとられるが、シェイピング装置にはパケットが生成されたタイミングで渡されることから送出されるパリティデータはブロックをまたがった位置にパケットが挿入されるなどが発生してしまい、
図10に示す場合と同様に遅延の発生や、タイムアウト処理の設定によっては意図通りにFECデコーダが機能しないことがあるという問題があった。さらに、MMTでは、MMT規格のパケット(MMTPパケット)に付与された協定世界時で指定された送出時刻に従ってMMTPパケットは送出される。シェイピング装置によって送信タイミングが変更された場合、受信側からはネットワーク内のジッターが発生したようにみえてしまい、受信端末のバッファ制御などに新たな問題を発生させてしまうという問題があった。
【0007】
非特許文献2では、到着したパケットをFEC演算より前に転送することで、中継ノードにおける遅延を回避しているが、パリティデータを送信する方法までは考慮していない。
【0008】
本発明は、上記に鑑みてなされたものであり、誤り訂正符号を付加したデータを低遅延で平滑化して送信することを目的とする。
【課題を解決するための手段】
【0009】
第1の本発明に係る符号化装置は、入力データに対して所定のブロック毎に誤り訂正符号を算出する符号化手段と、前記入力データを
前記誤り訂正符号の増加分を考慮した伝送速度の最大レートで前記誤り訂正符号の送出に必要な時間分のバッファ量を下限として保持するバッファと、前記誤り訂正符号の増加分を考慮した伝送速度で、前記ブロックの全ての入力データを入力した1ブロック分の時間内に、前記ブロックの全ての入力データと前記誤り訂正符号を送出する送出手段と、
を有し、前記送出手段は、前記ブロックの最初の入力データを入力した時点から前記誤り訂正符号の送出に必要な時間前記入力データを前記バッファにて保持した後、前記入力データを送出し始め、前記ブロックの全ての入力データを送出し終えた後に前記誤り訂正符号の送出を開始することを特徴とする。
【0010】
第2の本発明に係る符号化方法は、コンピュータによる符号化方法であって、入力データに対して所定のブロック毎に誤り訂正符号を算出するステップと、前記入力データをバッファに
前記誤り訂正符号の増加分を考慮した伝送速度の最大レートで前記誤り訂正符号の送出に必要な時間分のバッファ量を下限として保持するステップと、前記誤り訂正符号の増加分を考慮した伝送速度で、前記ブロックの全ての入力データを入力した1ブロック分の時間内に、前記ブロックの全ての入力データと前記誤り訂正符号を送出するステップと、
を有し、前記送出するステップは、前記ブロックの最初の入力データを入力した時点から前記誤り訂正符号の送出に必要な時間前記入力データを前記バッファにて保持した後、前記入力データを送出し始め、前記ブロックの全ての入力データを送出し終えた後に前記誤り訂正符号の送出を開始することを特徴とする。
【0011】
第3の本発明に係る符号化プログラムは、上記符号化装置の各手段としてコンピュータを動作させることを特徴とする。
【発明の効果】
【0012】
本発明によれば、誤り訂正符号を付加したデータを低遅延で平滑化して送信することができる。
【発明を実施するための形態】
【0014】
[第1の実施の形態]
図1は、本実施の形態における符号化装置の構成を示す機能ブロック図である。
【0015】
図1に示す符号化装置は、FEC生成部11、バッファ機能部12、及び送信部13を備える。本符号化装置は、入力するソースデータにブロック単位でパリティデータ(誤り訂正符号)を付与して送出する装置であり、パリティデータの増大分を加味した伝送量でソースデータとパリティデータを伝送する。符号化装置が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは符号化装置が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0016】
FEC生成部11は、所定のブロック毎に、入力したソースデータのパリティデータを算出する。FEC生成部11は、1ブロック分のソースデータからパリティデータを算出すると、パリティデータをバッファ機能部12へ送信する。
【0017】
バッファ機能部12は、送信部13によって送出されるソースデータ及びパリティデータを一時的に保持する機能を有し、パリティデータの増大分を加味した伝送量でソースデータを伝送できるまでソースデータを一時的に保持する。
【0018】
送信部13は、バッファ機能部12からソースデータ及びパリティデータを読み出し、1ブロック分のソースデータを入力した時間と同じ時間で、1ブロック分のソースデータとパリティデータを送出する。送出するデータのサイズは入力したソースデータよりもパリティデータのサイズ分増加しているので、送信部13は、1ブロック分の時間内にソースデータとパリティデータを送出できるように、ソースデータの入力伝送速度よりも速い伝送速度でソースデータとパリティデータを送出する。
【0019】
次に、本実施の形態における符号化装置の動作について説明する。
【0020】
図2は、本実施の形態における符号化装置が受信するソースデータと送出するソースデータ及びパリティデータを示す図である。
【0021】
符号化装置は、時刻TA0の時点からソースデータA0のブロックを入力し始める。符号化装置は、入力したソースデータA0をバッファ機能部12に蓄えて、時刻TA1まで送出しない。本実施の形態における符号化装置は、入力したソースデータA0をすぐに送出しないでバッファ機能部12に蓄えることで、前のブロックのパリティデータを送出する隙間を作っている。例えば、パリティデータのサイズが1Mbitで送出伝送速度が10Mbpsの場合、パリティデータの送出には、1Mbit/10bps=100msecの時間が必要である。したがって、バッファ機能部12は、ソースデータA0を100mesc分保持できるバッファを持つ。ソースデータA0を入力してから送出を開始するまで、つまり時刻TA0から時刻TA1までは100msecである。
【0022】
符号化装置は、時刻TA1から、バッファ機能部12に蓄えられたソースデータA1を送出伝送速度S1で送出し始める。なお、入力したソースデータA0と送出するソースデータA1は同じデータであるが、入力と送出を区別するために、ソースデータのそれぞれに異なる符号A0,A1を付与している。
【0023】
送出伝送速度S1は、ソースデータA0のブロックを全て入力する時間内つまり1ブロック分の時間内で、ソースデータA1とパリティデータApを送出し終えるように決められる。例えば、ソースデータA0の入力伝送速度S0が10Mbpsであり、1秒1ブロックのFECを適用し(ブロックの入力時間が1秒)、ソースデータA0に対して10%のパリティデータApを付加する場合を考える。ソースデータA0のサイズは10Mbps×1sec=10Mbitであるから、パリティデータApのサイズは10Mbit×10%=1Mbitとなる。符号化装置は、ソースデータA1とパリティデータApを合わせた11Mbitのデータを1秒で送出するので、必要な送出伝送速度S1は少なくとも11Mbpsとなる。
【0024】
符号化装置は、時刻TA2の時点で、ブロックの最後のソースデータA0を入力する。本実施の形態における符号化装置は、ブロックの最後のソースデータA0を遅延なしですぐに送出する。つまり、符号化装置は、時刻TA2の時点で、ソースデータA1の全てを送出し終えている。
【0025】
符号化装置は、時刻TA2にブロックの最後のソースデータA0を入力すると、ソースデータA0のブロックのパリティデータApを算出し、パリティデータApの送出を開始する。符号化装置は、時刻TA2にはソースデータA1の全てを送出し終えているので、パリティデータApを時刻TA2から送出できる。
【0026】
符号化装置は、時刻TA2から、ソースデータA0のつぎのブロックであるソースデータB0を入力し始める。符号化装置は、入力したソースデータB0をバッファ機能部12に蓄えて、時刻TB1までソースデータB1を送出しない。
【0027】
符号化装置は、時刻TB1までに、パリティデータApを送出し終える。ソースデータA1の送出を開始した時刻TA1から時刻TB1までの時間は1ブロック分の時間と同じである。言い換えると、符号化装置は、ソースデータA1とパリティデータApを1ブロック分の時間で送出する。
【0028】
符号化装置は、前のブロックのパリティデータApを送出し終えた時刻TB1から、次のブロックのソースデータB1の送出を開始する。以下同様に、符号化装置は、1ブロック分の時間内で、ソースデータB1とパリティデータBpを送出する。
【0029】
本実施の形態では、ソースデータの送出は、パリティデータの増加分(時刻TA0から時刻TA1まで)遅れるが、受信側では、1ブロック分の時間で、ソースデータとパリティデータを受信して復号できる。したがって、トータルでは、受信側での復号までの遅延を含めても、遅延をパリティデータの増加分と1ブロック分の時間に抑えることができる。
【0030】
これに対して、送出するデータを平滑化するために、次のブロックのソースデータの送出中にパリティデータを送出する場合、受信側ではソースデータを受信し始めてから復号できるようになるまで2ブロック分の時間が必要となる。この場合、1ブロックの長さをより長くすると、遅延が大きくなってしまう。
【0031】
以上説明したように、本実施の形態によれば、符号化装置が、所定のブロック毎にパリティデータを算出し、1ブロック分のソースデータを入力した時間と同じ時間で、1ブロック分のソースデータとパリティデータを送出することにより、受信装置がブロックの先頭のソースデータを受信してから1ブロック分の時間でソースデータとパリティデータを受信できるので、受信装置での遅延を1ブロック分の時間に抑えることができる。
【0032】
本実施の形態によれば、前のブロックのパリティデータの送出に必要な時間が経過するまで入力したソースデータを一時的に保持しておき、前のブロックのパリティデータの送出を終えてからソースデータの送出を開始することにより、バースト的にパリティデータが送出されず、かつソースデータの送出開始までの遅延をパリティデータの増加分に抑えることができる。
【0033】
[第2の実施の形態]
図3は、本実施の形態における符号化装置の構成を示す機能ブロック図である。
【0034】
図3に示す符号化装置は、第1の実施の形態の符号化装置に、送出時刻を示すタイムスタンプをパケットに付与するタイムスタンプ付与部14を追加したものである。送信部13は、タイムスタンプ(送出時刻)に従ってパケットを送出する。
【0035】
ソースデータとしてMMTPパケットを入力する場合、MMTPパケットにはUTC(Coordinated Universal Time)で指定されたパケットの送出時刻を与える必要がある。
【0036】
タイムスタンプ付与部14は、ブロック中のパケットの位置に基づいたオフセットが加算されたタイムスタンプを送出するパケットに付与する。第1の実施の形態で説明したように、ブロック中の最初のソースデータは前のブロックのパリティデータの送出が終了するまで送出されないが、ブロック中の最後のソースデータはすぐに送出される。つまり、ブロック中の先頭のパケットから最後のパケットに向かうにつれて、パケットの入力から送出までの時間が短くなる。そこで、タイムスタンプ付与部14は、ブロック中の先頭のパケットには、元のタイムスタンプにバッファ時間分を加算したタイムスタンプを付与し、ブロック中の最後のパケットには、バッファ時間分のオフセットを加算しないタイムスタンプを付与する。先頭と最後のパケットの間のパケットには、当該パケットのブロック中の位置に応じたオフセットを加算したタイムスタンプを付与する。
【0037】
次に、パケットにタイムスタンプを付与する具体例について説明する。
【0038】
ここでは、入力と送出の最大ビットレートからパケットを送出するタイムスタンプを導出する方法について説明する。具体的には、前のパケットの送出時刻に、パケット間隔に出力伝送速度に対する入力伝送速度の比率(入力伝送速度/送出伝送速度)を乗算した値を加算した時刻を送出時刻としてタイムスタンプを付与する。
【0039】
図4の上段は、入力パケットとそのタイムスタンプ値を示し、下段は、送出パケットと書き換え後のタイムスタンプ値を示している。10個のパケットP1〜P10で1ブロックが構成される。入力パケットの間隔は10であったとする。符号化装置は、パケットP1〜P10とパリティデータのパケットFECを合わせた11個のパケットを1ブロックの時間内で送出するので、送出パケットの間隔は、10×10/11≒9となる。
【0040】
時刻t0(=10)において、ブロックの先頭のパケットP1が入力される。パケットP1は、前のブロックのパリティデータが送出し終えるまでバッファ機能部12において一時的に保持される。
【0041】
時刻t1(=19)になると、ブロックの先頭のパケットP1が送出される。パケットP1は、元のタイムスタンプ(=10)に9を加算した19に書き換えられている。パケットP1の次のパケットP2のタイムスタンプは、前のパケットP1のタイムスタンプに9を加算した28に書き換えられる。以下、同様に、パケットP3〜P10も、パケットの間隔を9として送出される。パケットP1〜P10は、ブロック中の位置に基づいて、元のタイムスタンプに対し、それぞれ9,8,7,6,5,4,3,2,1,0のオフセットが加算されている。
【0042】
時刻t2(=100)では、ブロックの最後のパケットP10が元のタイムスタンプ(=100)のまま送出される。つまり、ブロックの最後のパケットP10は遅延なしで伝送される。
【0043】
ブロック中の全てのパケットP1〜P10が送出された後に、パリティデータのパケットFECが送出される。パリティデータのパケットFECのタイムスタンプは、ブロックの最後のパケットP10のタイムスタンプを基準として付与する。
【0044】
図4の例では、パケットP1〜P10を入力する1ブロック分の時間は90であり、パケットP1〜P10とパケットFECを送出する時間も90である。
【0045】
パケットFECの送出後に、次のブロックのパケットP11が送出される。
【0046】
続いて、FEC対象外のパケットが含まれるときのタイムスタンプを付与する処理について説明する。
【0047】
FEC対象外のパケットについては、前パケットとの間隔を変えずに送出する。
【0048】
図5の上段は、FEC対象外のパケットを含む入力パケットとそのタイムスタンプ値を示し、下段は、送出パケットと書き換え後のタイムスタンプ値を示している。
図5の例では、パケットP4,P5,P7,P10,P13がFEC対象外のパケットである。入力パケットの間隔は10であったとする。
【0049】
時刻t1(=19)以降、FEC対象のパケットP1,P2,P3は、パケットの間隔を9として送出される。符号化装置は、FEC対象外のパケットP4に対しては、前のパケットP3のタイムスタンプ(=37)にパケットの入力間隔(=10)を加えたタイムスタンプ(=47)を付与する。符号化装置は、FEC対象のパケットについては送出伝送速度に合わせてパケットの間隔を変更し、FEC対象外のパケットについてはパケットの間隔を変えない。
【0050】
時刻t2(=150)では、ブロックの最後のパケットP15が遅延なしで送出される。その後、パリティデータが算出されて、パリティデータのパケットFECが送出される。
【0051】
続いて、複数種類のパケットが含まれるときの処理について説明する。
【0052】
映像ストリームと音声ストリームなどの別々の種類のパケットが符号化装置に入力される場合、符号化装置は、パケットの種類別ではなく、別々の種類のパケットを合わせたブロック単位でパリティデータを算出する。
【0053】
図6の上段は、入力する映像と音声それぞれのパケットとそのタイムスタンプ値を示し、下段は、送出パケットと書き換え後のタイムスタンプ値を示している。
図6では、1ブロックが10パケットで構成される。
【0054】
時刻t0(=10)において、ブロックの先頭の映像パケットV1が入力される。映像パケットV1は、時刻t1(=19)までバッファ機能部12において一時的に保持される。
【0055】
時刻t1(=19)になると、映像パケットV1が送出される。以下、パケットの送出間隔を変更して映像パケットV2,V3が送出される。映像パケットV3の次に音声パケットA1が入力されたので、音声パケットA1は、映像パケットV3の次に送出される。以下、映像パケットと音声パケットを入力し、入力した順にパケットを送出する。
【0056】
時刻t2(=65)において、ブロックの最後の音声パケットA4を入力する。符号化装置は、映像パケットV1〜V6と音声パケットA1〜A4からパリティデータを算出し、音声パケットA4の送出後にパリティデータのパケットFECを送出する。
【0057】
次のブロックについても同様に、映像パケットV7〜V11と音声パケットA5〜A9からパケットデータを算出する。
【0058】
これまで説明した例では、最大のビットレートでパケットが入力されるものみなして各パケットの送出間隔を短くしてタイムスタンプを算出したが、実際のビットレートに基づいてパケットに付与するタイムスタンプを逐次算出してもよい。例えば、ブロックの先頭のパケットと処理対象のパケットの関係からタイムスタンプを算出してもよいし、前のパケットと処理対象のパケットの間隔からタイムスタンプを算出してもよい。
【0059】
また、ブロック中において、順番に入力したパケットに付与されていたタイムスタンプが逆転していた場合は、強制的に前のパケットのタイムスタンプと同じ値を付与してもよい。
【0060】
以上説明したように、本実施の形態によれば、タイムスタンプ付与部14が、パケットに付与されたタイムスタンプに当該パケットのブロック内の位置に応じた値を加算することにより、送信部13は、付与されたタイムスタンプに従ってパケットを送出するだけで、入力したソースデータとパリティデータを平滑化して送出することができる。
【0061】
[第3の実施の形態]
図7は、本実施の形態における符号化装置の構成を示す機能ブロック図である。
【0062】
図7に示す符号化装置は、第1の実施の形態の符号化装置に、送出するソースデータのタイムスタンプが均等になるように整列させたり、ソースデータとパリティデータをインターリーブする整列部15を追加したものである。例えば、タイムスタンプが0,60,60,60,60,60,70のパケットを入力した場合、0から60までは送出間隔が大きいが、タイムスタンプが60のパケットがバースト的に出力される。そこで、整列部15は、1ブロック分のソースデータを入力した後、タイムスタンプの分布を考慮し、送出するパケットのタイムスタンプが均等になるように、例えば上記のタイムスタンプを100,109,118,127,136,145,154と書き換える。
【0063】
本実施の形態における符号化装置は、1ブロック分のソースデータを入力してパリティデータを算出した後に、整列部15が処理を実行し、ソースデータとパリティデータを1ブロック分の時間で送出する。本実施の形態では、符号化装置がソースデータを入力してから送出を開始するまで、1ブロック分の時間以上の遅延が生じる。しかしながら、受信装置では、ブロックの先頭のソースデータを受信してからパリティデータも含めた1ブロック分のデータを受信して復号できるまでの時間は1ブロック分の時間であり、受信側の遅延量は抑えることができる。
【0064】
次に、本実施の形態における符号化装置の動作について説明する。
【0065】
図8は、本実施の形態における符号化装置が受信するソースデータと送出するソースデータ及びパリティデータを示す図である。
【0066】
符号化装置は、時刻TA0の時点からソースデータA0のブロックを受信し始める。符号化装置は、ソースデータA0を一時的に保持し、送出しない。
【0067】
時刻TB0の時点で、符号化装置は、ソースデータA0のブロックを全て入力し、次のブロックのソースデータB0を入力し始める。
【0068】
符号化装置は、ソースデータA0のブロックを全て入力すると、ソースデータA0からパリティデータApを算出する。
【0069】
整列部15は、ソースデータA1とパリティデータApを整列あるいはインターリーブし、送出時刻であるタイムスタンプを付与する。
【0070】
送出時刻TA1になると、送信部13は、付与されたタイムスタンプに従ってソースデータA1とパリティデータApの送出を開始する。ソースデータA1とパリティデータApは、ソースデータA0を入力した1ブロック分の時間で送出される。
【0071】
以上説明したように、本実施の形態によれば、整列部15が、ソースデータA1とパリティデータApを整列またはインターリーブすることにより、データをより平滑に送信したり、バーストエラーに対する耐性を高めることができる。
【解決手段】符号化装置が、所定のブロック毎にパリティデータを算出し、1ブロック分のソースデータを入力した時間と同じ時間で、1ブロック分のソースデータとパリティデータを送出する。これにより、受信装置がブロックの先頭のソースデータを受信してから1ブロック分の時間でソースデータとパリティデータを受信できる。また、前のブロックのパリティデータの送出に必要な時間が経過するまで入力したソースデータを一時的に保持しておき、前のブロックのパリティデータの送出を終えてからソースデータの送出を開始する。これにより、バースト的にパリティデータが送出されず、かつソースデータの送出開始までの遅延をパリティデータの増加分に抑えることができる。