JP2004266741A - 配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム - Google Patents
配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム Download PDFInfo
- Publication number
- JP2004266741A JP2004266741A JP2003057320A JP2003057320A JP2004266741A JP 2004266741 A JP2004266741 A JP 2004266741A JP 2003057320 A JP2003057320 A JP 2003057320A JP 2003057320 A JP2003057320 A JP 2003057320A JP 2004266741 A JP2004266741 A JP 2004266741A
- Authority
- JP
- Japan
- Prior art keywords
- data
- receiving
- processing
- transmitting
- bandwidth
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】本来のデータに影響することなく帯域の測定を行うようにする。
【解決手段】サーバは、クライアントに対し、シーケンス番号1乃至4のRTPパケットを送信した後、FECパケット1,2をバックツーバックで送信する。クライアントは、FECパケット1,2の受信時刻T1,T2の間隔から、ボトルネックリンクの帯域を算出し、算出結果をパケット化した報告パケット1,2をバックツーバックでサーバに送信する。サーバは、報告パケット1,2の受信時刻の間隔から、ボトルネックリンクの帯域を算出する。そして、サーバは、算出したボトルネックリンクの帯域と、報告パケットに埋め込まれたボトルネックリンクの帯域を比較し、その比較結果に基づいて、転送レートの調整を行う。本発明は、ストリーミング配信に適用できる。
【選択図】 図18
【解決手段】サーバは、クライアントに対し、シーケンス番号1乃至4のRTPパケットを送信した後、FECパケット1,2をバックツーバックで送信する。クライアントは、FECパケット1,2の受信時刻T1,T2の間隔から、ボトルネックリンクの帯域を算出し、算出結果をパケット化した報告パケット1,2をバックツーバックでサーバに送信する。サーバは、報告パケット1,2の受信時刻の間隔から、ボトルネックリンクの帯域を算出する。そして、サーバは、算出したボトルネックリンクの帯域と、報告パケットに埋め込まれたボトルネックリンクの帯域を比較し、その比較結果に基づいて、転送レートの調整を行う。本発明は、ストリーミング配信に適用できる。
【選択図】 図18
Description
【0001】
【発明の属する技術分野】
本発明は、配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関し、特に、例えば、ストリーミング配信において、ボトルネックリンクの帯域を推測し、転送レートを調整することができるようにした配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関する。
【0002】
【従来の技術】
従来、インターネットを通じてリアルタイムに動画像データなどの転送を行うことをストリーミングと呼ぶ。ストリーミングを行うためのデータの転送方式として、主に、RTP(Real−Time Transport Protocol)が用いられている。
【0003】
このRTPでは、ストリーミングのデータ転送を行う際に、転送レートを指定することができる。通常、ストリーミングデータを受け取るユーザは、転送レートを重視するよりも、最高の画質で視聴できることを望んでいる。
【0004】
しかしながら、サーバからクライアント(ユーザ)までのネットワーク間において、最低の転送レートに合わせて転送しないと、ネットワークの容量を超えて転送することになり、パケットロスが生じてしまう。ここで、サーバからクライアントまでのネットワーク間における最低のリンクスピードを、ネットワークのボトルネックリンクと呼ぶ。
【0005】
すなわち、サーバは、ストリーミングを行うにあたり、ボトルネックリンクのスピードを推定する必要がある。
【0006】
このボトルネックリンクのスピードの推定方法として、例えば、パケットペア(Packet Pair)と呼ばれる手法が提案されている。
【0007】
このパケットペア手法は、ボトルネックリンクの帯域予測方式の1つであり、例えば、図1に示されるように、送信側(サーバ)から受信側(クライアント)に対して、等しいパケットサイズの2つのパケット1,2を送信間隔を空けずに、いわゆるバックツーバック(back−to−back)で転送し、ネットワークの伝送遅延により、ボトルネックリンクの帯域を測定するものである。
【0008】
同図において、縦軸は時刻を示している。すなわち、時刻T1sは、パケット1の転送が終了するサーバ側の時刻を表わし、時刻T1は、パケット1の受信を完了するクライアント側の時刻を表わしている。同様に、時刻T2sは、パケット2の転送が終了するサーバ側の時刻を表わし、時刻T2は、パケット2の受信を完了するクライアント側の時刻を表わしている。
【0009】
サーバから、一方が他方の直後に続くようなペアのパケット1,2を、ノード1,2を介してクライアントに転送すると、ノード1とノード2の間でパケットが時間軸方向に伸ばされる。このノード1とノード2の間がボトルネックリンクである。
【0010】
クライアントは、1つ目のパケット1の到着時刻T1と2つ目のパケット2の到着時刻T2を測定することで、次式(1)に従い、ボトルネックリンクの帯域Bを算出することができる。ここで、Sは、パケット1およびパケット2のサイズ(大きさ)を表わしている。
帯域B=S/(T2−T1) ・・・(1)
【0011】
また、このパケットペアをTCP(Transmission Control Protocol)に応用し、TCPのセッション開始時にボトルネックリンクのスピードを測定するようにしているものもある(特許文献1参照)。
【0012】
【特許文献1】
特開2002−94567号公報
【0013】
【発明が解決しようとする課題】
しかしながら、上述した特許文献1に開示されている技術においては、ボトルネックリンクの帯域を測定することはできるが、ストリーミング途中でネットワークの経路が変化した場合、ボトルネックリンクの帯域が変化するため、測定が困難になる。
【0014】
また、クライアントが、ネットワークの経路の変化を検出し、検出結果をサーバに通知するようにしたとしても、サーバに通知するまでの応答時間が長くなってしまう。
【0015】
そこで、ストリーミングデータをパケットペアで送信し、ボトルネックリンクのスピードを測定する手法が考えられる。
【0016】
しかしながら、例えば、MPEG(Moving Picture Experts Group)2などにおいて、Iフレーム、Pフレーム、Bフレームでは、それぞれデータのサイズが異なるため、転送パケットサイズが常に一定サイズであるとは限らない。すなわち、さまざまなデータサイズでストリーミングデータが転送されてしまうが、パケットペア手法では、2つのパケットのサイズが一定でないとボトルネックリンクの帯域を測定することができない。
【0017】
また、2つのパケットをバーストに送信した場合、2つ目のパケットでパケットロスを引き起こす恐れがある。
【0018】
さらに、RTPは、TCPとは異なり、確実なデータ転送の機能を有していないため、ネットワークでパケットロスが生じてしまうと、画像が乱れる、または、音声が途切れるなどの不具合が発生してしまう課題があった。
【0019】
本発明はこのような状況に鑑みてなされたものであり、本来のデータに影響することなく帯域の測定を行うことができるようにするものである。
【0020】
【課題を解決するための手段】
本発明の第1の配信システムは、送信装置は、データをパケット化し、パケット化されたデータに基づいて冗長データを作成し、冗長データをパケット化し、受信装置に対し、パケット化されたデータを送信した後、パケット化された冗長データを続けて2つ送信し、受信装置は、送信装置から送信されてきた2つのパケット化された冗長データを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、送信装置に対し、報告パケットを続けて2つ送信し、送信装置は、受信装置から送信されてきた2つの報告パケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする。
【0021】
本発明の第1の送信装置は、データをパケット化する第1のパケット化手段と、第1のパケット化手段によりパケット化されたデータに基づいて、冗長データを作成する作成手段と、作成手段により作成された冗長データをパケット化する第2のパケット化手段と、受信装置に対し、第1のパケット化手段によりパケット化されたデータを送信した後、第2のパケット化手段によりパケット化された冗長データを続けて2つ送信する送信手段と、受信装置から送信されてきた2つの報告パケットを受信する受信手段と、受信手段により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする。
【0022】
前記第1のパケット化手段には、1フレーム分のデータをパケット化させるようにすることができる。
【0023】
前記作成手段には、第1のパケット化手段によりパケット化されたデータのうち、2つ以上のデータに基づいて、冗長データを作成させるようにすることができる。
【0024】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より大きいと判断された場合、調整手段には、算出手段により算出されたネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0025】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より小さいと判断された場合、調整手段には、報告パケットに埋め込まれているネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0026】
本発明の第1の送信方法は、データをパケット化する第1のパケット化ステップと、第1のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第2のパケット化ステップと、受信装置に対し、第1のパケット化ステップの処理によりパケット化されたデータを送信した後、第2のパケット化ステップの処理によりパケット化された冗長データを続けて2つ送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする。
【0027】
本発明の第1の記録媒体に記録されているプログラムは、データをパケット化する第1のパケット化ステップと、第1のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第2のパケット化ステップと、受信装置に対し、第1のパケット化ステップの処理によりパケット化されたデータを送信した後、第2のパケット化ステップの処理によりパケット化された冗長データを続けて2つ送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとコンピュータに行わせることを特徴とする。
【0028】
本発明の第1のプログラムは、データをパケット化する第1のパケット化ステップと、第1のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第2のパケット化ステップと、受信装置に対し、第1のパケット化ステップの処理によりパケット化されたデータを送信した後、第2のパケット化ステップの処理によりパケット化された冗長データを続けて2つ送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【0029】
本発明の第1の受信装置は、送信装置から送信されてきたデータを受信する受信手段と、受信手段により受信されたデータが冗長データであるか否かを判定する判定手段と、判定手段によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、送信装置に対し、作成手段により作成された報告パケットを続けて2つ送信する送信手段とを備えることを特徴とする。
【0030】
前記受信手段には、1フレーム分のデータを受信させるようにすることができる。
【0031】
本発明の第1の受信方法は、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とする。
【0032】
本発明の第2の記録媒体に記録されているプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0033】
本発明の第2のプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0034】
本発明の第2の配信システムは、送信装置は、データをパケット化し、パケット化されたデータのうち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズにし、受信装置に対し、拡張された最大サイズの2つのパケットを含むパケット化されたデータを送信し、受信装置は、送信装置から送信されてきた2つの最大サイズのパケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、送信装置に対し、報告パケットを続けて2つ送信し、送信装置は、受信装置から送信されてきた2つの報告パケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする。
【0035】
本発明の第2の送信装置は、データをパケット化するパケット化手段と、パケット化手段によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張手段と、受信装置に対し、拡張手段により拡張された最大サイズの2つのパケットを含む、パケット化手段によりパケット化されたデータを送信する送信手段と、受信装置から送信されてきた2つの報告パケットを受信する受信手段と、受信手段により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする。
【0036】
前記パケット化手段には、1フレーム分のデータをパケット化させるようにすることができる。
【0037】
前記所定の2つのパケットは、パケット化手段によりパケット化されたデータの先頭2つのパケットであるものとすることができる。
【0038】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より大きいと判断された場合、調整手段には、算出手段により算出されたネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0039】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より小さいと判断された場合、調整手段には、報告パケットに埋め込まれているネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0040】
本発明の第2の送信方法は、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの2つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする。
【0041】
本発明の第3の記録媒体に記録されているプログラムは、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの2つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【0042】
本発明の第3のプログラムは、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの2つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【0043】
本発明の第2の受信装置は、送信装置から送信されてきたデータを受信する受信手段と、受信手段により受信されたデータに拡張領域が含まれているか否かを判定する判定手段と、判定手段によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、送信装置に対し、作成手段により作成された報告パケットを続けて2つ送信する送信手段とを備えることを特徴とする。
【0044】
前記受信手段には、1フレーム分のデータを受信させるようにすることができる。
【0045】
本発明の第2の受信方法は、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とする。
【0046】
本発明の第4の記録媒体に記録されているプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0047】
本発明の第4のプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0048】
第1の本発明においては、送信装置から受信装置に対し、パケット化された冗長データが続けて2つ送信され、受信装置で、2つのパケット化された冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、算出結果を埋め込んだ報告パケットが送信装置に2つ送信され、送信装置で、2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートが調整される。
【0049】
第2の本発明においては、受信装置に対し、パケット化された冗長データが続けて2つ送信され、受信装置から送信されてきた2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果との比較結果に応じて、転送レートが調整される。
【0050】
第3の本発明においては、送信装置から送信されてきた2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果を埋め込んだ報告パケットが作成され、送信装置に対し、作成された報告パケットが続けて2つ送信される。
【0051】
第4の本発明においては、送信装置から受信装置に対し、拡張された最大サイズの2つのパケットが送信され、受信装置で、2つの最大サイズのパケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、算出結果を埋め込んだ報告パケットが送信装置に2つ送信され、送信装置で、2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートが調整される。
【0052】
第5の本発明においては、受信装置に対し、拡張された最大サイズの2つのパケットが2つ送信され、受信装置から送信されてきた2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果との比較結果に応じて、転送レートが調整される。
【0053】
第6の本発明においては、送信装置から送信されてきた拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果を埋め込んだ報告パケットが作成され、送信装置に対し、作成された報告パケットが続けて2つ送信される。
【0054】
【発明の実施の形態】
以下、図を参照して、本発明の実施の形態について説明する。
【0055】
図2は、本発明を適用したストリーミング配信システムの構成例を示す図である。このストリーミング配信システムにおいては、インターネットなどのパケット通信網3に、サーバ2およびクライアント4が接続されている。
【0056】
サーバ2は、コンピュータであって、カメラ1から取得した画像データを、例えば、MPEG(Moving Picture Experts Group)などの所定の圧縮形式で圧縮する。クライアント4からストリーミング配信が要求された場合、サーバ2は、圧縮データから、RTP規格に準拠するようなRTPパケットを生成し、パケット通信網3を介して、クライアント4へストリーミングを行う。
【0057】
クライアント4は、例えば、デジタル携帯電話機、PDA(Personal Digital Assistant)、あるいはパーソナルコンピュータなどにより構成され、パケット通信網3を介してサーバ2にアクセスし、ストリーミングデータの配信を要求し、その要求に基づいて配信されてくるストリーミングデータを受信する。クライアントは、受信したストリーミングデータをデコードして再生し、ユーザに視聴させる。
【0058】
図1に示したストリーミング配信システムの例では、クライアント4を1つしか図示していないが、勿論、多数のクライアントが接続されることは言うまでもない。
【0059】
図3は、サーバ2の構成例を示すブロック図である。
【0060】
エンコーダ11は、カメラ1から取得した画像データを1フレーム分キャプチャし、転送レート制御部12でエンコードパラメータとして保持されているデータに基づいて、エンコードする。エンコードされたデータは、バッファ15に供給され、そこに一時的に記憶される。
【0061】
転送レート制御部12は、フレームレートを保持しているとともに、bpp(bit−per−pixel)、すなわち画質のパラメータ(エンコードパラメータ)の値を保持している。転送レート制御部12は、通信部18を介してクライアント4からデータを受信すると、パケットのシーケンス番号に応じて、時刻保持部13に受信時刻を保持させたり、あるいは、ボトルネックリンクの帯域を算出する。また転送レート制御部12は、受信データに含まれるクライアント4において算出されたボトルネックリンクの推定帯域に応じて、転送レートの調整を行う。
【0062】
RTPパケット作成部16は、バッファ15からデータを読み込み、そのデータからRTPパケットを作成し、通信部18に供給する。FEC(Forward Error Collection)パケット作成部17は、RTPパケット作成部16で作成されたRTPパケットを参照し、そのRTPパケットに基づいてFECパケット(冗長データ)を作成し、通信部18に供給する。
【0063】
通信部18は、タイマを有しており、RTPパケット作成部16から供給されたRTPパケット、またはFECパケット作成部17から供給されたFECパケットを、所定のパケット間隔で、パケット通信網3を介してクライアント4に転送する。また通信部18は、FECパケット作成部17から、1つ目のFECパケットが供給された場合、送信時刻を時刻保持部19に保持させ、2つ目のFECパケットが供給された場合、時刻保持部19で保持されている送信時刻と、現在の時刻に基づいて、最大転送レートを算出し、その値を最大転送レート保持部14に保持させる。さらに通信部18は、パケット通信網3を介してクライアント4からデータを受信し、その受信データに含まれる、現在のボトルネックリンクの推定帯域の値を転送レート制御部12に供給する。
【0064】
制御部20は、記憶部21に記憶されている制御プログラム、あるいは図示せぬROM(Read Only Memory)に記憶されている制御プログラムに基づいて、サーバ2の全体の動作を制御する。記憶部21は、ハードディスクドライブなどで構成され、制御部20が実行する制御プログラムの他、各種処理を行う上で必要なデータなどを記憶する。
【0065】
また制御部20には、必要に応じてドライブ22が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア23が適宜装着され、それらから読み出された制御プログラムが、必要に応じて記憶部21にインストールされる。
【0066】
図4は、図3に示したRTPパケット作成部16の詳細な構成例を示す図である。同図に示されるように、RTPパケット作成部16は、パケタイザ31、データ部保持部32、ヘッダ部保持部33、およびエントリ保持部34で構成されている。
【0067】
パケタイザ31は、バッファ15から圧縮されたデータを取得し、それをデータ部保持部32に保持させるとともに、取得したデータから、RTPヘッダを作成し、それをヘッダ部保持部33に保持させる。またパケタイザ31は、データ部保持部32に保持させたデータ、およびヘッダ部保持部33に保持させたRTPヘッダに基づいて、エントリ保持部34のデータを更新する。
【0068】
エントリ保持部34は、例えば、図5に示されるように、ヘッダ部保持部33で保持されているRTPヘッダのシーケンス番号に対応付けて、データ部保持部32で保持されているデータのサイズ、および、データが保持されているデータ部保持部32のアドレスを保持する。
【0069】
図5の例の場合、シーケンス番号1に対応付けて、“256”のデータサイズおよび“0x00ab”のアドレスが保持され、シーケンス番号2に対応付けて、“512”のデータサイズおよび“0x00ac”のアドレスが保持され、シーケンス番号3に対応付けて、“1024”のデータサイズおよび“0x00ad”のアドレスが保持され、シーケンス番号4に対応付けて、“256”のデータサイズおよび“0x00af”のアドレスが保持されている。
【0070】
図6は、クライアント4の構成例を示すブロック図である。
【0071】
通信部41は、パケット通信網3を介してサーバ2から転送されてきたデータを受信する。受信されたデータは、バッファ42に供給され、そこに一時的に記憶される。また通信部41は、サーバ2からFECデータ(冗長データ)を受信した場合、それを帯域算出部45に供給し、受信時刻を測定させるとともに、ボトルネックリンクの帯域を算出させる。通信部41は、パケット作成部47で作成された、ボトルネックリンク帯域の算出結果が埋め込まれたパケットを取得し、それをサーバ2に転送する。
【0072】
デコーダ43は、バッファ42からデータを読み込み、それをデコードした後、表示部44に出力する。表示部44は、例えば、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などのディスプレイで構成され、デコーダ43から供給されるデータに対応する動画像などを表示する。
【0073】
帯域算出部45は、通信部41から供給された受信データから、受信時刻を測定し、その測定結果を時刻保持部46に保持させるとともに、ボトルネックリンクの帯域を算出し、その算出結果をパケット作成部47に供給する。
【0074】
パケット作成部47は、帯域算出部45から供給されたデータ(ボトルネックリンク帯域の算出結果)をパケット化し、報告パケットとして通信部41に供給する。
【0075】
制御部48は、記憶部49に記憶されている制御プログラム、あるいは図示せぬROMに記憶されている制御プログラムに基づいて、クライアント4の全体の動作を制御する。記憶部49は、ハードディスクドライブなどで構成され、制御部48が実行する制御プログラムの他、各種処理を行う上で必要なデータなどを記憶する。
【0076】
また制御部48には、必要に応じてドライブ50が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア51が適宜装着され、それらから読み出された制御プログラムが、必要に応じて記憶部49にインストールされる。
【0077】
図7は、本発明に係るRTPパケットのヘッダ部のフォーマットを説明するための図である。
【0078】
同図に示されるように、RTPパケットのヘッダ部は、固定長の2ビットのVersion(v)、1ビットのPadding(p)、1ビットのExtnsion(x)、3ビットのCSRC Count(cc)、2ビットのMarker(m)、7ビットのPayload Type(Pt)、16ビットのSequence、32ビットのTimestamp、32ビットのSSRC/CSRC(Synchronization Source/Contributing Sources)、32ビットのOriginal Dataから構成されている。
【0079】
Versionは、RTPパケットのバージョンを表わし、Paddingは、RTPパケットの最後の部分にパディング(意味を持たないデータであり、パケットの長さ合わせのために付加されるもの)が付加されているか否かを表わし、Extensionは、拡張ビットを表わし、CSRC Countは、貢献ソース識別子を表わし、Markerは、RTPパケットのマーカを表わし、Payload Typeは、RTPパケットのペイロードタイプを表わし、Sequenceは、RTPパケットのシーケンス番号を表わし、Timestampは、RTPパケットのタイムスタンプを表わし、SSRC/CSRCは、同期ソース識別子あるいは貢献ソース識別子を表わし、Original Dataは、RTPパケットのヘッダ部のオリジナルデータのデータ格納領域を表わしている。
【0080】
図8は、本発明に係るFECデータのヘッダ部のフォーマットを説明するための図である。図8のFECパケットのヘッダ部のフォーマットは、基本的に、図7におけるRTPパケットのヘッダ部のフォーマットと同様の構成とされている。
【0081】
すなわち、図7のRTPパケットのヘッダ部のペイロードタイプには、RTPパケットを表わす“33”が記されており、図8のFECパケットのヘッダ部のペイロードタイプには、FECパケットを表わす“100”が記されており、それ以外は、同様の構成とされる。
【0082】
次に、図9のフローチャートを参照して、サーバ2が実行するデータ転送処理について説明する。
【0083】
ステップS1において、サーバ2の制御部20の制御の下、RTPパケット作成部16は、RTPパケットのタイムスタンプ、およびシーケンス番号の初期化を行い、転送レート制御部12は、エンコードパラメータ、およびフレームレートの初期化を行い、通信部18は、タイマの初期化を行う。ステップS2において、通信部18は、制御部20の制御の下、タイマが終了したか否かを判定し、タイマが終了するまで待機する。
【0084】
ステップS2において、タイマが終了したと判定された場合、ステップS3に進み、エンコーダ11は、制御部20の制御の下、カメラ1から供給されるデータを1フレーム分キャプチャする。ステップS4において、エンコーダ11は、転送レート制御部12で保持されているエンコードパラメータ(画質パラメータ:bbp)を参照して、キャプチャしたデータをエンコードし、ステップS5において、エンコードしたデータをバッファ15へ転送する。
【0085】
ステップS6において、RTPパケット作成部16は、制御部20の制御の下、バッファ15に一時的に記憶されているデータを取り込み、RTPパケットを作成するとともに、作成されたRTPパケットを通信部18に送信する。
【0086】
ここで、図10のフローチャートを参照して、RTPパケット作成部16が実行する、RTPパケット作成処理および送信処理の詳細について説明する。
【0087】
ステップS21において、RTPパケット作成部16のパケタイザ31は、データ部保持部32、ヘッダ部保持部33、およびエントリ保持部34の初期化を行う。ステップS22において、パケタイザ31は、バッファ15を参照し、そこにデータがあるか否かを判定し、バッファ15にデータがあると判定した場合、ステップS23に進む。
【0088】
ステップS23において、パケタイザ31は、バッファ15から圧縮されたデータを取得し、ステップS24において、取得したデータをデータ部保持部32に保持させる。
【0089】
なお、パケタイザ31は、バッファ15からデータを取得する際、所定のデータ単位、もしくは、予め決められた所定のデータ量でデータを読み込むようにする。ここで、所定のデータ単位とは、例えば、JPEG(Joint Photographic Experts Group)2000の場合、JP2パケット(すなわち、符号化の最小のエンコードユニット)とされる。
【0090】
ステップS25において、パケタイザ31は、ステップS23の処理で取得したデータから、図7で示したフォーマットに従って、RTPヘッダを作成し、それをヘッダ部保持部33に保持させる。ステップS26において、パケタイザ31は、エントリ保持部34に、ステップS25の処理で作成されたRTPヘッダのシーケンス番号、ステップS23の処理でバッファ15から取得したデータのサイズ、および、データ部保持部32におけるデータのアドレスを保持させる(図5)。その詳細は、ステップS29(図11)を用いて後述するが、これらの情報は、送信時、RTPヘッダ部とデータ部を結合する際に必要となる。
【0091】
ステップS27において、パケタイザ31は、RTPヘッダのシーケンス番号を更新する。ステップS28において、パケタイザ31は、データ部保持部32で保持されているデータの余っているデータ領域へ1を埋め込み、パディングする。なお、1だけでなく、0でパディングすることも勿論可能である。
【0092】
以上のような処理が、バッファ15に記憶されている全てのデータ(1フレーム分のデータ)に対して行われる。そして、ステップS22において、バッファ15にデータがないと判定された場合、すなわち、バッファ15に記憶されている1フレーム分のデータのRTPパケットが作成されたと判定された場合、ステップS29に進み、パケタイザ31は、ヘッダ部とデータ部の結合処理を行う。このとき、パケタイザ31は、データを結合する長さに関して、エントリ保持部34で保持されているデータのサイズ(図5)を参照する。
【0093】
ここで、図11のフローチャートを参照して、パケタイザ31が実行する、ヘッダ部とデータ部の結合処理の詳細について説明する。
【0094】
ステップS41において、パケタイザ31は、自己の初期化を行う。ステップS42において、パケタイザ31は、エントリ保持部34(図5)を参照し、エントリがあるか否かを判定し、エントリがあると判定した場合、ステップS43に進み、エントリのシーケンス番号のアドレス部分(すなわち、データが保持されているデータ部保持部32のアドレス)から、エントリにあるサイズ分だけデータを取得する。
【0095】
ステップS44において、パケタイザ31は、現在参照しているエントリのシーケンス番号のRTPヘッダを、ヘッダ部保持部33から取得する。ステップS45において、パケタイザ31は、ステップS43の処理で取得したデータと、ステップS44の処理で取得したRTPヘッダを結合する。
【0096】
すなわち、例えば、図12に示されるように、シーケンス番号1のRTPヘッダ部A1が、データ部B1と結合され、シーケンス番号2のRTPヘッダ部A2がデータ部B2と結合され、シーケンス番号3のRTPヘッダ部A3がデータ部B3と結合され、シーケンス番号4のRTPヘッダ部A4がデータ部B4と結合される。
【0097】
なお、RTPヘッダ部と結合されるデータ部は、データによってサイズが異なるため、必要に応じて、1でパディング(Padding)される。このパディング(Padding)は、意味を持たないデータであり、パケットの長さ合わせのために付加される。図12の例の場合、データ部B1,B2およびB4が、1でパディングされている。
【0098】
そして、ステップ46において、パケタイザ31は、次のエントリへ処理対象を移行した後、ステップS42に戻り、上述した処理を繰り返し実行する。
【0099】
ステップS42において、エントリ保持部34に処理対象となるエントリがなくなったと判定された場合(すなわち、エントリにある全てのデータがRTPにパケット化されたと判定された場合)、処理は、図10のステップS30にリターンする。
【0100】
以上のようにして作成された各RTPヘッダは、同じ時刻に作成されるデータであるため、そのタイムスタンプは同一とされ、シーケンス番号のみが異なる。
【0101】
図10の説明に戻る。ステップS30において、パケタイザ31は、ステップS29(図11)の処理により、RTPヘッダ部とデータ部が結合されたデータ(すなわち、オリジナルデータをRTPにパケット化したもの)を通信部18へ送信する。そして、処理は、図9のステップS7にリターンする。
【0102】
なお、その詳細は、図14のフローチャートを参照して後述するが、通信部18は、RTPパケット作成部16のパケタイザ31から送信されてきたRTPパケットを、タイマの動作に従って、所定のパケット間隔で、パケット通信網3を介してクライアント4へストリーミングする。
【0103】
ステップS7において、FECパケット作成部17は、制御部20の制御の下、ステップS8の処理により、RTPパケット作成部16で作成されたRTPパケットに基づいて、FECパケットを作成するとともに、作成されたFECパケットを通信部18に送信する。
【0104】
ここで、図13のフローチャートを参照して、FECパケット作成部17が実行する、FECパケット作成処理および送信処理の詳細について説明する。
【0105】
ステップS61において、FECパケット作成部17は、RTPパケット作成部16のエントリ保持部34を参照し、エントリのシーケンス番号の小さいもの2つのデータ(図5の例の場合、シーケンス番号1,2に対応するデータ)を選択し、それらのデータからFEC1データを作成する。ここでは、FECデータの作成法に関して、特に限定はしないが、例えば、Exclusive−OR(イクスクルーシブオア)回路を用い、2つのデータの排他的論理和を演算した結果(両入力が「1」のとき、「0」を出力する)をFECのデータとする。
【0106】
ステップS62において、FECパケット作成部17は、ステップS61の処理で作成されたFEC1データから、図8で示したフォーマットに従って、ヘッダを作成する。すなわち、RTPヘッダのペイロードタイプのみが異なるフォーマットに従って、ヘッダが作成される。
【0107】
ステップS63において、FECパケット作成部17は、RTPパケット作成部16のエントリ保持部34を参照し、エントリ情報のシーケンス番号の大きいもの2つのデータ(図5の例の場合、シーケンス番号3,4に対応するデータ)を選択し、それらのデータからFEC2データを作成する。ステップS64において、FECパケット作成部17は、ステップS63の処理で作成されたFEC2データから、図8で示したフォーマットに従って、ヘッダを作成する。
【0108】
ステップS65において、FECパケット作成部17は、ステップS62の処理で作成されたFEC1データのヘッダ(すなわち、FEC1データをパケット化したもの)を通信部18へ送信し、続けて、ステップS66において、ステップS64の処理で作成されたFEC2データのヘッダ(すなわち、FEC2データをパケット化したもの)を通信部18へ送信する。そして、処理は、図9のステップS8にリターンする。
【0109】
ステップS8において、通信部18は、ステップS6の処理(図10)で作成されたRTPパケット、およびステップS7の処理(図13)で作成されたFECパケットのストリーミングを行う。
【0110】
ここで、図14のフローチャートを参照して、通信部18が実行する、ストリーミング処理の詳細について説明する。
【0111】
ステップS81において、通信部18は、自己の初期化を行う。ステップS82において、通信部18は、送信データがあるか否か、すなわち、RTPパケット作成部16またはFECパケット作成部17からデータが送信されてきたか否かを判定し、送信データがあると判定した場合、ステップS83に進む。
【0112】
ステップS83において、通信部18は、送信データがFECパケットであるか否か、すなわち、送信データのペイロードタイプに“100”が記されているか否かを判定する。ステップS83において、送信データがFECパケットであると判定された場合、ステップS84に進み、通信部18は、タイマを0に設定する。
【0113】
ステップS83において、送信データがFECパケットではないと判定された場合、すなわち、送信データのペイロードタイプに“33”が記されており、送信データがRTPパケットであると判定された場合、ステップS85に進み、通信部18は、RTPパケット作成部16のエントリ保持部34で保持されているエントリ数と、転送レート制御部12で保持されているフレームレートに基づいて、タイマを設定する。ここで設定するタイマの値としては、例えば、次式(2)により決定される。
タイマの値=(1/フレームレート)/エントリ数(単位:秒)・・・(2)
【0114】
ステップS86において、通信部18は、タイマが終了したか否かを判定し、タイマが終了するまで待機する。そして、ステップS86において、タイマが終了したと判定された場合、ステップS87に進み、通信部18は、データ(RTPパケットまたはFECパケット)を送信する。
【0115】
ステップS88において、通信部18は、送信データが1つ目のFECパケットであるか否かを判定し、1つ目のFECパケットであると判定した場合、ステップS89に進み、時刻保持部19に送信時刻を保持させる。
【0116】
ステップS88において、送信データが1つ目のFECパケットではないと判定された場合、ステップS90に進み、通信部18は、送信データが2つ目のFECパケットであるか否かを判定する。そして、ステップS90において、送信データが2つ目のFECパケットであると判定された場合、ステップS91に進み、通信部18は、ステップS89の処理で時刻保持部19に保持させた送信時刻と現在の時刻に基づいて、次式(3)に従って、最大転送レートを算出する。
最大転送レート=FECパケットのサイズ/(現在時刻−送信時刻)・・・(3)
【0117】
通信部18は、算出した最大転送レートを、最大転送レート保持部14に保持させる。そして、ステップS89またはS91の処理の後、ステップS82に戻り、上述した処理が繰り返し実行される。
【0118】
ステップS90において、送信データが2つ目のFECパケットではないと判定された場合、すなわち、送信データがRTPパケットであると判定された場合、ステップS89,91の処理は行われず、ステップS82に戻り、上述した処理が繰り返し実行される。
【0119】
ステップS82において、処理対象となる送信データがなくなったと判定された場合(すなわち、1フレーム分のRTPパケット、および2つのFECパケットが送信さたと判定された場合)、処理は、図9のステップS9にリターンする。
【0120】
以上においては、RTPパケットの送信において、上記式(2)により算出されたタイマの値を用いるようにしたが、FECパケット送信における場合と同様に、タイマを0に設定するようにしてもよい。
【0121】
図9の説明に戻る。ステップS9において、RTPパケット作成部16は、制御部20の制御の下、RTPパケットのタイムスタンプを更新する。ステップS10において、通信部18は、制御部20の制御の下、転送レート制御部12で保持されているフレームレート(fps)を参照し、対応するフレームレートになるようにタイマをセットする。その後、ステップS2に戻り、上述した処理が繰り返し実行される。
【0122】
以上のように、サーバ2は、オリジナルデータからRTPパケットを作成し、それをクライアント4に送信した後、サイズの等しい2つのFECパケット(冗長データ)をパケットペアで送信することができる。
【0123】
また、サーバ2は、RTPパケットの送信後にFECパケットを送信するだけでなく、例えば、RTPパケットの送信前にFECパケットを送信したり、あるいは、所定数のRTPパケットを送信した後に(RTPパケットの送信途中に)FECパケットを送信するようにしてもよい。
【0124】
次に、図15のフローチャートを参照して、サーバの転送処理(図9)により送信されてきたデータを受信し、ボトルネックリンクの帯域を推定し、推定帯域を報告するパケットを作成するまでのクライアント4の処理について説明する。
【0125】
ステップS101において、クライアント4の制御部48は、時刻保持部46のデータの初期化を行うとともに、バッファ42の初期化を行う。ステップS102において、通信部41は、制御部48の制御の下、パケット通信網3を介してサーバ2よりデータを受信したか否かを判定し、データを受信するまで待機する。
【0126】
ステップS102において、データを受信したと判定された場合、ステップS103に進み、通信部41は、受信データがFECパケットであるか否か、すなわち、受信データのペイロードタイプに“100”が記されているか否かを判定し、受信データがFECパケットであると判定した場合、ステップS104に進む。
【0127】
ステップS104において、通信部41は、受信したFECパケットのヘッダ部のタイムスタンプを参照し、新しいタイムスタンプであるか否か、すなわち、新しく受信したFECパケットであるか否かを判定し、新しいタイムスタンプであると判定した場合、ステップS105に進み、時刻保持部46に、新しく受信したFECパケットの受信時刻を保持させる。
【0128】
ステップS104において、新しいタイムスタンプではない、すなわち、過去に受信したFECパケットのタイムスタンプであると判定された場合、ステップS106に進み、通信部41は、受信したFECパケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップS107に進む。なお、パケットロスが発生しているか否かの判定は、ヘッダ部のシーケンス番号を参照することで検知することができる。
【0129】
ステップS107において、通信部41は、受信したFECパケットを帯域算出部45に供給し、ボトルネックリンクの帯域を算出させる。帯域算出部45は、供給されたFECパケットから、次式(4)に従って、ボトルネックリンクの帯域Bを算出し、算出結果をパケット作成部47に供給する。
【0130】
ステップS108において、パケット作成部47は、ステップS107の処理で算出された帯域Bの値をサーバ2に報告するためのパケットを作成する。ここで作成される報告パケットのフォーマットを図16に示す。
【0131】
同図に示されるように、作成されるパケットは、固定長の2ビットのVersion(v)、1ビットのPadding(p)、5ビットのSub Type(Sub)、8ビットのPacket Type(PT)、16ビットのMessage Length、32ビットのSSRC/CSRC、32ビットのNAME、および32ビットのData部から構成されている。
【0132】
Versionは、パケットのバージョンを表わし、Paddingは、パケットの最後の部分にパディングが付加されているか否かを表わし、Sub Typeは、パケットのサブタイプ(種類)を表わし、Packet Typeは、パケットタイプ(APP=206)を表わし、Message Lengthは、パケットの長さを表わし、SSRC/CSRCは、サーバ識別子あるいはサーバ2に関連する識別子を表わし、NAMEは、パケットの名前を表わし、Data部は、アプリケーション依存のデータ領域を表わしている。
【0133】
パケット作成部47は、Data部に、算出されたボトルネックリンクの帯域Bの値を埋め込むとともに、Seq部分に、パケットのシーケンス番号を書き込む。なお、パケットのシーケンス番号は、1から始まり、1パケット送信する毎に1だけインクリメントされる。
【0134】
ステップS109において、通信部41は、ステップS108の処理で作成された帯域Bの値が埋め込まれた報告パケット1をサーバ2へ送信し、ステップS110において、パケット送信の間隔を空けずに、同じ内容の報告パケット2をサーバ2へ送信する。すなわち、Data部が同じ2つの報告パケットがバックツーバックでサーバ2へ送信される。
【0135】
ステップS106において、受信したFECパケットにパケットロスが発生していると判定された場合、FECパケットペアの1つ目のパケットにパケットロスが発生しているか、あるいは、FECパケットがリオーダしたと判断される。この場合、帯域の算出処理および報告パケットの作成処理は行われず、ステップS102に戻り、上述した処理が繰り返し実行される。
【0136】
ステップS103において、受信データがFECパケットではないと判定された場合、すなわち、受信データがRTPパケットであると判定された場合、ステップS111に進み、通信部41は、受信データをバッファ42に供給した後、ステップS102に戻り、上述した処理を繰り返し実行する。
【0137】
このように、2つのFECパケット(すなわち、冗長データ)を受信することにより、ボトルネックリンクの帯域を算出(推測)し、算出結果を報告パケットに埋め込んでサーバ2に報告することができる。
【0138】
次に、図17のフローチャートを参照して、クライアント4の処理(図15)により送信されてきた報告パケットを受信し、ボトルネックリンクの帯域を算出し、転送レートを調整するまでのサーバ2の転送レート制御部12の処理について説明する。
【0139】
ステップS121において、転送レート制御部12は、自己の初期化を行う。ステップS122において、転送レート制御部12は、制御部20の制御の下、通信部18を介してクライアント4から報告パケットを受信したか否かを判定し、報告パケットを受信するまで待機する。
【0140】
ステップS122において、報告パケットを受信したと判定された場合、ステップS123に進み、転送レート制御部12は、受信した報告パケットのシーケンス番号が奇数であるか否かを判定する。
【0141】
ステップS123において、報告パケットのシーケンス番号が奇数であると判定された場合、転送レート制御部12は、パケットペアの1つ目のパケットであると判断し、ステップS124に進み、時刻保持部13に、受信時刻を保持させる。一方、ステップS123において、報告パケットのシーケンス番号が偶数であると判定された場合、転送レート制御部12は、パケットペアの2つ目のパケットであると判断し、ステップS125に進む。
【0142】
ステップS125において、転送レート制御部12は、受信した報告パケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップS126に進み、上記式(4)に従って、ボトルネックリンクの帯域Bを算出する。これにより、クライアント4からサーバ2の間のボトルネックリンクの帯域を測定することができる。転送レート制御部12は、以上のようにして算出したボトルネックリンクの帯域の値を保持する。
【0143】
ステップS125において、報告パケットにパケットロスが発生していると判定された場合、帯域の算出処理は行われず、ステップS127に進む。
【0144】
ステップS127において、転送レート制御部12は、クライアント4から受信した報告パケットのData部に埋め込まれている帯域が、最大転送レート保持部14で保持されている最大転送レートより小さいか否かを判定し、クライアント4から報告された帯域が最大転送レートより小さいと判定した場合、ステップS128に進む。
【0145】
ステップS128において、転送レート制御部12は、クライアント4から報告された帯域の値を用いて、統計処理を行う。ここで行われる統計処理は、例えば、クライアント4から受け取った過去10個の帯域の値の平均値をボトルネックリンクの帯域にするようにしてもよいし、あるいは、次式(5)に従って、ボトルネックリンクの帯域Bを算出するようにしてもよい。ここでαは、例えば、0.1などの係数とされる。
【0146】
さらに、受け取った帯域の値の平均をとる方法ではなく、例えば、受け取った帯域の値そのものを、ボトルネックリンクの帯域としてもよい。
【0147】
転送レート制御部12は、以上のようにして統計処理を行った後、得られたボトルネックリンクの帯域の値を保持する。
【0148】
ステップS127において、クライアント4から報告された帯域が最大転送レートより大きいと判定された場合、転送レート制御部12は、クライアント4から受信した報告パケットは、不良データであると判断し、統計処理は行わず、ステップS129に進む。
【0149】
ステップS129において、転送レート制御部12は、現在保持している転送レート(ステップS126の処理により算出された転送レート)と、クライアント4から報告され、上述したようにして統計処理されたボトルネックリンクの帯域の値を比較し、クライアント4から報告され統計処理されたボトルネックリンクの帯域の値が、現在保持している転送レートより大きいと判定した場合、ステップS130に進む。
【0150】
ステップS130において、転送レート制御部12は、転送レートを増加させるか、もしくは、転送レートを維持するように調整する。
【0151】
ここで行われる転送レートの調整方法としては、特に問わないが、例えば、フレームレートを調整する方法や、エンコードパラメータ(bpp:圧縮率)を調整する方法などがある。
【0152】
例えば、現在保持している最大転送レートをR_now、エンコードパラメータをx_now bpp、フレームレートをy_now fps、クライアント4から報告された転送レートをR_cとすると、エンコードパラメータを調整する方法の場合、エンコードパラメータx_now・bppは、次式(6)で表わされる。
エンコードパラメータx_now bpp=x_now bpp・R_c/R_now ・・・(6)
【0153】
また、フレームレートを調整する方法の場合、フレームレートy_now fpsは、次式(7)で表わされる。
フレームレートy_now fps=y_now fps・R_c/R_now ・・・(7)
【0154】
ステップS129において、クライアント4から報告され統計処理されたボトルネックリンクの帯域の値が、現在保持している転送レートより小さいと判定された場合、ステップS131に進み、転送レート制御部12は、転送レートを、クライアント4から報告され統計処理されたボトルネックリンクの帯域の値になるように調整する。ここで行われる転送レートの調整方法としては、例えば、フレームレートを下げるか、あるいは、エンコードパラメータ(bpp)を小さくするようにする(すなわち、1フレーム当たりの情報量を下げるか、あるいは、圧縮率を上げる)。
【0155】
以上のようにして、クライアント4から報告されたボトルネックリンクの帯域に基づいて、転送レートが最適に調整される。
【0156】
図18は、サーバ2からクライアント4にFECパケットを送信し、クライアント2がサーバ2から受信したFECパケットに基づいて、ボトルネックリンクの帯域を算出し、その帯域をサーバ2に報告し、サーバ2が、クライアント4から報告された帯域に基づいて、転送レートを調整するまでの処理を模式的に示している。同図において、横軸は、時間を表わし、縦軸の上側がサーバ2を表わし、縦軸の下側がクライアント4を表わしている。
【0157】
図18の例の場合、サーバ2からクライアント4に対し、RTPタイムスタンプ3000、およびRTPタイムスタンプ6000のデータが送信されている。RTPタイムスタンプ3000のデータには、シーケンス番号1乃至4のRTPパケット、およびFECパケット1,2が含まれており、RTPタイムスタンプ6000のデータには、シーケンス番号5乃至8のRTPパケット、およびFECパケット1,2が含まれている。
【0158】
サーバ2は、シーケンス番号1乃至4のRTPパケットをクライアント4に送信した後、FECパケット1,2を、バックツーバックで(両パケットの間隔を空けずに)クライアント4に送信する。クライアント4は、時刻T1にFECパケット1を受信し、時刻T2にFECパケット2を受信し、それらの受信時刻の間隔から、上記式(4)に従って、ボトルネックリンクの帯域Bを算出する。
【0159】
算出の結果、ボトルネックリンクの帯域Bが、例えば、2.5Mbpsであった場合、クライアント4は、この算出結果をパケット化し、同じ内容の報告パケット1,2を、バックツーバックでサーバ2に送信する。サーバ2は、クライアント4から送信されてきた報告パケット1,2を受信し、それらの受信時刻の間隔から、上記式(4)に従って、ボトルネックリンクの帯域Bを算出する。そして、サーバ2は、算出したボトルネックリンクの帯域と、報告パケットに埋め込まれたボトルネックリンクの帯域を比較し、その比較結果に基づいて、転送レートの調整を行う。
【0160】
以上のように、両パケットのサイズが等しいFECパケット1,2を用いてパケットペアの測定を行うことにより、それらの受信時刻の間隔から、本来のデータに影響することなくボトルネックリンクの帯域を容易に算出することができる。
【0161】
また、FECパケットを用いるだけでなく、RTPパケットを用いてパケットペアの測定を行うことも可能である。この場合に用いられるRTPパケットのフォーマットを図19に示す。図19のRTPパケットのフォーマットは、基本的に、図8におけるRTPパケットのヘッダ部のフォーマットとほぼ同様の構成とされており、Version(v)、Padding(p)、Extnsion(x)、CSRC Count(cc)、Marker(m)、Payload Type(Pt)、Sequence、Timestamp、SSRC/CSRC、Original Dataの他、拡張領域に、16ビットのDefined−by−profile、16ビットのExtension length、および32ビットのOriginal data sizeが含まれている。
【0162】
Defined−by−profileは、定義済みプロファイルを表わし、Extension lengthは、拡張ビットの長さを表わし、Original data sizeは、オリジナルデータのサイズを表わしている。
【0163】
RTPパケット作成部16のパケタイザ31は、RTPパケットのヘッダ部とデータ部を結合する際に、エントリ保持部34で保持されているサイズ分だけ、データ部保持部32からデータの結合を行うのではなく、データ部保持部32で保持されているデータをそのまま結合し、RTPヘッダの拡張領域にヘッダ(x)のフラグを立て、Original data size部分に、エントリ保持部34で保持されている値を埋め込むようにし、オリジナルデータ以外には、1もしくは0をパディングするようにする。これにより、最大サイズのパケットが作成される。
【0164】
なお、RTPパケットを用いてパケットペアの測定を行う場合にも、サーバ2の転送処理は、基本的に、図9で説明したステップS7の処理を除いた、ステップS1乃至S6およびステップS8乃至S10の処理と同様とされるが、ステップS6のRTPパケット作成処理および送信処理の詳細として説明した図10のステップS29におけるRTPヘッダ部とデータ部の結合処理(図11)が異なる。
【0165】
そこで、図20を参照して、RTPパケットを用いた場合のRTPヘッダ部とデータ部の結合処理の詳細について説明する。
【0166】
ステップS151において、パケタイザ31は、自己の初期化を行う。ステップS152において、パケタイザ31は、エントリ保持部34(図5)を参照し、エントリがあるか否かを判定し、エントリがあると判定した場合、ステップS153に進み、現在参照しているエントリが先頭2つのエントリであるか否かを判定する。
【0167】
ステップS153において、現在参照しているエントリが先頭2つのエントリであると判定された場合、ステップS154に進み、パケタイザ31は、エントリのシーケンス番号のアドレス部分(すなわち、データが保持されているアドレス)から、最大サイズ分のデータを取得する。ここで、最大サイズは、最大伝送ユニット(MTU:Maximum Transfer Unit)の値を超えないような値に設定されている。
【0168】
ステップS155において、パケタイザ31は、現在参照しているエントリのシーケンス番号のRTPヘッダを、ヘッダ部保持部33から取得する。ステップS156において、パケタイザ31は、RTPヘッダの拡張領域のオリジナルデータサイズ領域の部分に、ステップS154の処理で取得したオリジナルデータのデータサイズを書き込む。ステップS157において、パケタイザ31は、ステップS154の処理で取得したデータとステップS156の処理で拡張領域にオリジナルデータサイズが書き込まれたRTPヘッダを結合する。
【0169】
このように、1フレームを構成するデータの先頭2つのRTPパケットに対して、その拡張領域にオリジナルデータサイズを書き込み、オリジナルデータ以外には、パディングデータを書き込み、パケットペアに用いるためのRTP拡張を適用した最大サイズのパケットを作成することができる。
【0170】
一方、ステップS153において、現在参照しているエントリが先頭2つのエントリではないと判定された場合、ステップS158に進み、パケタイザ31は、エントリのシーケンス番号のアドレス部分から、エントリにあるサイズ分だけデータを取得する。
【0171】
ステップS159において、パケタイザ31は、現在参照しているエントリのシーケンス番号のRTPヘッダを、ヘッダ部保持部33から取得する。ステップS160において、パケタイザ31は、ステップS158の処理で取得したデータと、ステップS159の処理で取得したRTPヘッダを結合する(図12)。
【0172】
このように、ステップS158乃至S160の処理は、上述した図11のステップS43乃至S45の処理と同様であり、通常のRTPパケットが作成される。
【0173】
ステップS157またはステップS160の処理の後、ステップ161において、パケタイザ31は、次のエントリへ処理対象を移行した後、ステップS152に戻り、上述した処理を繰り返し実行する。
【0174】
ステップS152において、エントリ保持部34に処理対象となるエントリがなくなったと判定された場合(すなわち、エントリにある全てのデータがRTPにパケット化されたと判定された場合)、処理は、図10のステップS30にリターンする。
【0175】
このように、サーバ2は、1フレームを構成するデータの先頭2つのRTPパケットに対して、その拡張領域にオリジナルデータサイズを書き込み、オリジナルデータ以外には、1もしくは0がパディングされたデータを書き込み、最大サイズの2つのパケットを作成することができる。
【0176】
また、サーバ2は、1フレームを構成するデータの先頭2つのRTPパケットをRTP拡張パケットにするだけでなく、例えば、1フレームを構成するデータの末尾2つのRTPパケットをRTP拡張パケットにしたり、あるいは、1フレームを構成するデータの所定位置のRTPパケットをRTP拡張パケットにするようにしてもよい。
【0177】
図21は、図20の処理に対応して、通信部18が実行する、ストリーミング処理を示すフローチャートである。なお、この処理は、図14の処理と基本的に同様であるが、図14のステップS83における、送信データがFECパケットであるか否かの判定処理に代わり、図20のステップS173では、送信データがRTP拡張のついたパケットであるか否かの判定処理に変更され、図14のステップS88における、1つ目のFECパケットであるか否かの判定処理に代わり、図20のステップS178では、1つ目のRTP拡張の付いたパケットであるか否かの判定処理に変更され、図14のステップS89における、2つ目のFECパケットであるか否かの判定処理に代わり、図20のステップS179では、2つ目のRTP拡張の付いたパケットであるか否かの判定処理に変更される。
【0178】
以上のように、サーバ2は、RTPパケットのうち、先頭2つのRTPパケットに対し、その拡張領域にオリジナルデータサイズを書き込んだサイズの等しい2つのRTPパケット(すなわち、RTP拡張の付いたパケット)を作成し、それをパケットペアで送信することができる。
【0179】
次に、図22のフローチャートを参照して、上述したようにしてサーバ2で作成されたRTP拡張の付いたRTPパケットを受信し、ボトルネックリンクの帯域を推定し、推定帯域を報告するパケットを作成するまでのクライアント4の処理について説明する。
【0180】
ステップS191において、クライアント4の制御部48は、時刻保持部46のデータの初期化を行うとともに、バッファ42の初期化を行う。ステップS192において、通信部41は、制御部48の制御の下、パケット通信網3を介してサーバ2よりデータを受信したか否かを判定し、データを受信するまで待機する。
【0181】
ステップS192において、データを受信したと判定された場合、ステップS193に進み、通信部41は、受信データがRTP拡張の付いたパケットであるか否かを判定し、受信データがRTP拡張の付いたパケットであると判定した場合、ステップS194に進む。ステップS194において、通信部41は、受信したRTP拡張の付いたパケットの拡張部分に埋め込まれているオリジナルデータサイズに基づいて、パディングデータ部分を削除し、オリジナルデータのみをバッファ42に転送する。
【0182】
ステップS195において、通信部41は、受信したRTP拡張の付いたパケットのヘッダ部のタイムスタンプを参照し、新しいタイムスタンプであるか否か、すなわち、新しく受信したRTP拡張の付いたパケットであるか否かを判定し、新しいタイムスタンプであると判定した場合、ステップS196に進み、時刻保持部46に、新しく受信したRTP拡張の付いたパケットの受信時刻を保持させる。
【0183】
ステップS195において、新しいタイムスタンプではない、すなわち、過去に受信したRTP拡張の付いたパケットのタイムスタンプであると判定された場合、ステップS197に進み、通信部41は、受信したRTP拡張の付いたパケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップS198に進む。なお、パケットロスが発生しているか否かの判定は、ヘッダ部のシーケンス番号を参照することで検知することができる。
【0184】
ステップS197において、通信部41は、受信したRTP拡張の付いたパケットを帯域算出部45に供給し、ボトルネックリンクの帯域を算出させる。帯域算出部45は、供給されたRTP拡張の付いたパケットから、上記式(4)に従って、ボトルネックリンクの帯域Bを算出し、算出結果をパケット作成部47に供給する。なお、ここでの受信サイズとは、オリジナルデータサイズではなく、RTPパケット全体のサイズである。
【0185】
ステップS199において、パケット作成部47は、ステップS198の処理で算出された帯域Bの値をサーバ2に報告するためのパケットを、図16に示したフォーマットに従って作成する。ここで、パケット作成部47は、Data部に、算出した帯域Bの値を埋め込むとともに、Seq部分に、パケットのシーケンス番号を書き込む。なお、パケットのシーケンス番号は、1から始まり、1パケット送信する毎に1だけインクリメントされる。
【0186】
ステップS200において、通信部41は、ステップS199の処理で作成された帯域Bの値が埋め込まれた報告パケット1をサーバ2へ送信し、ステップS201において、パケット送信の間隔を空けずに、同じ内容の報告パケット2をサーバ2へ送信する。すなわち、Data部が同じ2つの報告パケットがバックツーバックでサーバ2へ送信される。
【0187】
ステップS197において、受信したRTP拡張の付いたパケットにパケットロスが発生していると判定された場合、RTP拡張の付いたパケットペアの1つ目のパケットにパケットロスが発生しているか、あるいは、RTP拡張の付いたパケットがリオーダしたと判断される。この場合、帯域の算出処理および報告パケットの作成処理は行われず、ステップS192に戻り、上述した処理が繰り返し実行される。
【0188】
ステップS193において、受信データがRTP拡張の付いたパケットではないと判定された場合、すなわち、受信データが通常のRTPパケットであると判定された場合、ステップS202に進み、通信部41は、受信データをバッファ42に供給した後、ステップS192に戻り、上述した処理を繰り返し実行する。
【0189】
このように、RTP拡張の付いた2つのパケットを受信することにより、ボトルネックリンクの帯域を算出(推測)し、算出結果を報告パケットに埋め込んでサーバ2に報告することができる。
【0190】
なお、以上のクライアント4の処理(図22)により送信されてきた報告パケットを受信し、ボトルネックリンクの帯域を算出し、転送レートを調整するまでのサーバ2の転送レート制御部12の処理は、上述した図17の処理と同様であるため、その説明は省略する。
【0191】
以上のように、両パケットのサイズが等しいRTP拡張の付いたパケット1,2を用いてパケットペアの測定を行うことにより、それらの受信時刻の間隔から、ボトルネックリンクの帯域を容易に算出することができるとともに、冗長データを送る必要がなくなる。
【0192】
上述した一連の処理(図9乃至図11、図13、図14、図17、図20、および図21に示したサーバ2の処理、並びに、図15および図22に示したクライアント4の処理)は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【0193】
図23は、汎用のコンピュータの内部の構成例を示す図である。コンピュータのCPU(Central Processing Unit)101は、ROM(Read Only Memory)102に記憶されているプログラム、または記憶部108からRAM(Random Access Memory)103にロードされたプログラムに従って各種の処理を実行する。RAM103にはまた、CPU101が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0194】
CPU101、ROM102、およびRAM103は、バス104を介して相互に接続されている。このバス104にはまた、入出力インターフェース105も接続されている。
【0195】
入出力インターフェース105には、ボタン、スイッチ、キーボードあるいはマウスなどで構成される構成される入力部106、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などのディスプレイ、並びにスピーカなどで構成される出力部107、ハードディスクなどで構成される記憶部108、およびモデムやターミナルアダプタなどで構成される通信部109が接続されている。通信部109は、インターネットを含むネットワークを介して通信処理を行う。
【0196】
入出力インターフェース105にはまた、必要に応じてドライブ110が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア111が適宜装着され、そこから読み出されたコンピュータプログラムが、記憶部108にインストールされる。
【0197】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図23に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini−Disc)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア111により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM103またはハードディスクなどの記憶部108で構成される。
【0198】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0199】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表わすものである。
【0200】
【発明の効果】
以上のように、第1の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、冗長データを用いることで、本来のデータに影響することなく、双方向のボトルネックリンクの帯域を測定し、その測定結果に基づいて転送レートを調整することが可能となる。
【0201】
第2の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、冗長データを送信することで、受信側にボトルネックリンクの帯域を算出させることができ、その算出結果が埋め込まれたパケットを受信することで、送信側でボトルネックリンクの帯域を算出することができ、双方向の算出結果に基づいて転送レートを調整することが可能となる。
【0202】
第3の本発明によれば、ボトルネックリンクの帯域を測定することが可能となる。特に、送信側から送信されてきた冗長データの受信時刻に基づいて、ボトルネックリンクの帯域を算出するとともに、その算出結果を送信側に報告することが可能となる。
【0203】
第4の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、送信データの一部を拡張した最大サイズのデータを用いることで、本来のデータに影響することなく、双方向のボトルネックリンクの帯域を測定し、その測定結果に基づいて転送レートを調整することが可能となる。
【0204】
第5の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、送信データの一部を拡張した最大サイズのデータを送信することで、受信側にボトルネックリンクの帯域を算出させることができ、その算出結果が埋め込まれたパケットを受信することで、送信側でボトルネックリンクの帯域を算出することができ、双方向の算出結果に基づいて転送レートを調整することが可能となる。
【0205】
第6の本発明によれば、ボトルネックリンクの帯域を測定することが可能となる。特に、送信側から送信されてきた送信データの一部が拡張された最大サイズのデータの受信時刻に基づいて、ボトルネックリンクの帯域を算出するとともに、その算出結果を送信側に報告することが可能となる。
【図面の簡単な説明】
【図1】従来のパケットペア手法を説明するための図である。
【図2】本発明を適用したストリーミング配信システムの構成例を示す図である。
【図3】サーバの構成例を示すブロック図である。
【図4】RTPパケット作成部の詳細な構成例を示す図である。
【図5】エントリ保持部が保持する情報の例を示す図である。
【図6】クライアントの構成例を示すブロック図である。
【図7】RTPパケットのヘッダ部のフォーマットを説明するための図である。
【図8】FECデータのヘッダ部のフォーマットを説明するための図である。
【図9】データ転送処理を説明するフローチャートである。
【図10】図9のステップS6のRTPパケット作成処理および送信処理の詳細を説明するフローチャートである。
【図11】図10のステップS29のヘッダ部とデータ部の結合処理の詳細を説明するフローチャートである。
【図12】RTPヘッダとデータ部の結合処理を説明するための図である。
【図13】図9のステップS7のFECパケット作成処理および送信処理の詳細を説明するフローチャートである。
【図14】図9のステップS8のストリーミング処理の詳細を説明するフローチャートである。
【図15】クライアントの処理を説明するフローチャートである。
【図16】報告パケットのフォーマットを説明するための図である。
【図17】転送レート制御部の処理を説明するフローチャートである。
【図18】サーバとクライアント間の帯域をそれぞれ算出し、転送レートを調整するまでの処理を模式的に示す図である。
【図19】RTPパケットのフォーマットを説明するための図である。
【図20】図10のステップS29のRTPヘッダ部とデータ部の結合処理の詳細を説明するフローチャートである。
【図21】ストリーミング処理を説明するフローチャートである。
【図22】クライアントの処理を説明するフローチャートである。
【図23】汎用のコンピュータの内部の構成例を示す図である。
【符号の説明】
2 サーバ, 3 ネットワーク, 4 クライアント, 11 エンコーダ, 16 RTPパケット作成部, 17 FECパケット作成部, 18 通信部,20 制御部, 22 ドライブ, 23 リムーバブルメディア, 31 パケタイザ, 41 通信部, 45 帯域算出部, 47 パケット作成部,
48 制御部
【発明の属する技術分野】
本発明は、配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関し、特に、例えば、ストリーミング配信において、ボトルネックリンクの帯域を推測し、転送レートを調整することができるようにした配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関する。
【0002】
【従来の技術】
従来、インターネットを通じてリアルタイムに動画像データなどの転送を行うことをストリーミングと呼ぶ。ストリーミングを行うためのデータの転送方式として、主に、RTP(Real−Time Transport Protocol)が用いられている。
【0003】
このRTPでは、ストリーミングのデータ転送を行う際に、転送レートを指定することができる。通常、ストリーミングデータを受け取るユーザは、転送レートを重視するよりも、最高の画質で視聴できることを望んでいる。
【0004】
しかしながら、サーバからクライアント(ユーザ)までのネットワーク間において、最低の転送レートに合わせて転送しないと、ネットワークの容量を超えて転送することになり、パケットロスが生じてしまう。ここで、サーバからクライアントまでのネットワーク間における最低のリンクスピードを、ネットワークのボトルネックリンクと呼ぶ。
【0005】
すなわち、サーバは、ストリーミングを行うにあたり、ボトルネックリンクのスピードを推定する必要がある。
【0006】
このボトルネックリンクのスピードの推定方法として、例えば、パケットペア(Packet Pair)と呼ばれる手法が提案されている。
【0007】
このパケットペア手法は、ボトルネックリンクの帯域予測方式の1つであり、例えば、図1に示されるように、送信側(サーバ)から受信側(クライアント)に対して、等しいパケットサイズの2つのパケット1,2を送信間隔を空けずに、いわゆるバックツーバック(back−to−back)で転送し、ネットワークの伝送遅延により、ボトルネックリンクの帯域を測定するものである。
【0008】
同図において、縦軸は時刻を示している。すなわち、時刻T1sは、パケット1の転送が終了するサーバ側の時刻を表わし、時刻T1は、パケット1の受信を完了するクライアント側の時刻を表わしている。同様に、時刻T2sは、パケット2の転送が終了するサーバ側の時刻を表わし、時刻T2は、パケット2の受信を完了するクライアント側の時刻を表わしている。
【0009】
サーバから、一方が他方の直後に続くようなペアのパケット1,2を、ノード1,2を介してクライアントに転送すると、ノード1とノード2の間でパケットが時間軸方向に伸ばされる。このノード1とノード2の間がボトルネックリンクである。
【0010】
クライアントは、1つ目のパケット1の到着時刻T1と2つ目のパケット2の到着時刻T2を測定することで、次式(1)に従い、ボトルネックリンクの帯域Bを算出することができる。ここで、Sは、パケット1およびパケット2のサイズ(大きさ)を表わしている。
帯域B=S/(T2−T1) ・・・(1)
【0011】
また、このパケットペアをTCP(Transmission Control Protocol)に応用し、TCPのセッション開始時にボトルネックリンクのスピードを測定するようにしているものもある(特許文献1参照)。
【0012】
【特許文献1】
特開2002−94567号公報
【0013】
【発明が解決しようとする課題】
しかしながら、上述した特許文献1に開示されている技術においては、ボトルネックリンクの帯域を測定することはできるが、ストリーミング途中でネットワークの経路が変化した場合、ボトルネックリンクの帯域が変化するため、測定が困難になる。
【0014】
また、クライアントが、ネットワークの経路の変化を検出し、検出結果をサーバに通知するようにしたとしても、サーバに通知するまでの応答時間が長くなってしまう。
【0015】
そこで、ストリーミングデータをパケットペアで送信し、ボトルネックリンクのスピードを測定する手法が考えられる。
【0016】
しかしながら、例えば、MPEG(Moving Picture Experts Group)2などにおいて、Iフレーム、Pフレーム、Bフレームでは、それぞれデータのサイズが異なるため、転送パケットサイズが常に一定サイズであるとは限らない。すなわち、さまざまなデータサイズでストリーミングデータが転送されてしまうが、パケットペア手法では、2つのパケットのサイズが一定でないとボトルネックリンクの帯域を測定することができない。
【0017】
また、2つのパケットをバーストに送信した場合、2つ目のパケットでパケットロスを引き起こす恐れがある。
【0018】
さらに、RTPは、TCPとは異なり、確実なデータ転送の機能を有していないため、ネットワークでパケットロスが生じてしまうと、画像が乱れる、または、音声が途切れるなどの不具合が発生してしまう課題があった。
【0019】
本発明はこのような状況に鑑みてなされたものであり、本来のデータに影響することなく帯域の測定を行うことができるようにするものである。
【0020】
【課題を解決するための手段】
本発明の第1の配信システムは、送信装置は、データをパケット化し、パケット化されたデータに基づいて冗長データを作成し、冗長データをパケット化し、受信装置に対し、パケット化されたデータを送信した後、パケット化された冗長データを続けて2つ送信し、受信装置は、送信装置から送信されてきた2つのパケット化された冗長データを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、送信装置に対し、報告パケットを続けて2つ送信し、送信装置は、受信装置から送信されてきた2つの報告パケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする。
【0021】
本発明の第1の送信装置は、データをパケット化する第1のパケット化手段と、第1のパケット化手段によりパケット化されたデータに基づいて、冗長データを作成する作成手段と、作成手段により作成された冗長データをパケット化する第2のパケット化手段と、受信装置に対し、第1のパケット化手段によりパケット化されたデータを送信した後、第2のパケット化手段によりパケット化された冗長データを続けて2つ送信する送信手段と、受信装置から送信されてきた2つの報告パケットを受信する受信手段と、受信手段により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする。
【0022】
前記第1のパケット化手段には、1フレーム分のデータをパケット化させるようにすることができる。
【0023】
前記作成手段には、第1のパケット化手段によりパケット化されたデータのうち、2つ以上のデータに基づいて、冗長データを作成させるようにすることができる。
【0024】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より大きいと判断された場合、調整手段には、算出手段により算出されたネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0025】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より小さいと判断された場合、調整手段には、報告パケットに埋め込まれているネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0026】
本発明の第1の送信方法は、データをパケット化する第1のパケット化ステップと、第1のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第2のパケット化ステップと、受信装置に対し、第1のパケット化ステップの処理によりパケット化されたデータを送信した後、第2のパケット化ステップの処理によりパケット化された冗長データを続けて2つ送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする。
【0027】
本発明の第1の記録媒体に記録されているプログラムは、データをパケット化する第1のパケット化ステップと、第1のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第2のパケット化ステップと、受信装置に対し、第1のパケット化ステップの処理によりパケット化されたデータを送信した後、第2のパケット化ステップの処理によりパケット化された冗長データを続けて2つ送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとコンピュータに行わせることを特徴とする。
【0028】
本発明の第1のプログラムは、データをパケット化する第1のパケット化ステップと、第1のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第2のパケット化ステップと、受信装置に対し、第1のパケット化ステップの処理によりパケット化されたデータを送信した後、第2のパケット化ステップの処理によりパケット化された冗長データを続けて2つ送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【0029】
本発明の第1の受信装置は、送信装置から送信されてきたデータを受信する受信手段と、受信手段により受信されたデータが冗長データであるか否かを判定する判定手段と、判定手段によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、送信装置に対し、作成手段により作成された報告パケットを続けて2つ送信する送信手段とを備えることを特徴とする。
【0030】
前記受信手段には、1フレーム分のデータを受信させるようにすることができる。
【0031】
本発明の第1の受信方法は、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とする。
【0032】
本発明の第2の記録媒体に記録されているプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0033】
本発明の第2のプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0034】
本発明の第2の配信システムは、送信装置は、データをパケット化し、パケット化されたデータのうち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズにし、受信装置に対し、拡張された最大サイズの2つのパケットを含むパケット化されたデータを送信し、受信装置は、送信装置から送信されてきた2つの最大サイズのパケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、送信装置に対し、報告パケットを続けて2つ送信し、送信装置は、受信装置から送信されてきた2つの報告パケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする。
【0035】
本発明の第2の送信装置は、データをパケット化するパケット化手段と、パケット化手段によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張手段と、受信装置に対し、拡張手段により拡張された最大サイズの2つのパケットを含む、パケット化手段によりパケット化されたデータを送信する送信手段と、受信装置から送信されてきた2つの報告パケットを受信する受信手段と、受信手段により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする。
【0036】
前記パケット化手段には、1フレーム分のデータをパケット化させるようにすることができる。
【0037】
前記所定の2つのパケットは、パケット化手段によりパケット化されたデータの先頭2つのパケットであるものとすることができる。
【0038】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より大きいと判断された場合、調整手段には、算出手段により算出されたネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0039】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より小さいと判断された場合、調整手段には、報告パケットに埋め込まれているネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【0040】
本発明の第2の送信方法は、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの2つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする。
【0041】
本発明の第3の記録媒体に記録されているプログラムは、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの2つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【0042】
本発明の第3のプログラムは、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの2つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【0043】
本発明の第2の受信装置は、送信装置から送信されてきたデータを受信する受信手段と、受信手段により受信されたデータに拡張領域が含まれているか否かを判定する判定手段と、判定手段によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、送信装置に対し、作成手段により作成された報告パケットを続けて2つ送信する送信手段とを備えることを特徴とする。
【0044】
前記受信手段には、1フレーム分のデータを受信させるようにすることができる。
【0045】
本発明の第2の受信方法は、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とする。
【0046】
本発明の第4の記録媒体に記録されているプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0047】
本発明の第4のプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて2つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【0048】
第1の本発明においては、送信装置から受信装置に対し、パケット化された冗長データが続けて2つ送信され、受信装置で、2つのパケット化された冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、算出結果を埋め込んだ報告パケットが送信装置に2つ送信され、送信装置で、2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートが調整される。
【0049】
第2の本発明においては、受信装置に対し、パケット化された冗長データが続けて2つ送信され、受信装置から送信されてきた2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果との比較結果に応じて、転送レートが調整される。
【0050】
第3の本発明においては、送信装置から送信されてきた2つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果を埋め込んだ報告パケットが作成され、送信装置に対し、作成された報告パケットが続けて2つ送信される。
【0051】
第4の本発明においては、送信装置から受信装置に対し、拡張された最大サイズの2つのパケットが送信され、受信装置で、2つの最大サイズのパケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、算出結果を埋め込んだ報告パケットが送信装置に2つ送信され、送信装置で、2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートが調整される。
【0052】
第5の本発明においては、受信装置に対し、拡張された最大サイズの2つのパケットが2つ送信され、受信装置から送信されてきた2つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果との比較結果に応じて、転送レートが調整される。
【0053】
第6の本発明においては、送信装置から送信されてきた拡張領域を含む2つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果を埋め込んだ報告パケットが作成され、送信装置に対し、作成された報告パケットが続けて2つ送信される。
【0054】
【発明の実施の形態】
以下、図を参照して、本発明の実施の形態について説明する。
【0055】
図2は、本発明を適用したストリーミング配信システムの構成例を示す図である。このストリーミング配信システムにおいては、インターネットなどのパケット通信網3に、サーバ2およびクライアント4が接続されている。
【0056】
サーバ2は、コンピュータであって、カメラ1から取得した画像データを、例えば、MPEG(Moving Picture Experts Group)などの所定の圧縮形式で圧縮する。クライアント4からストリーミング配信が要求された場合、サーバ2は、圧縮データから、RTP規格に準拠するようなRTPパケットを生成し、パケット通信網3を介して、クライアント4へストリーミングを行う。
【0057】
クライアント4は、例えば、デジタル携帯電話機、PDA(Personal Digital Assistant)、あるいはパーソナルコンピュータなどにより構成され、パケット通信網3を介してサーバ2にアクセスし、ストリーミングデータの配信を要求し、その要求に基づいて配信されてくるストリーミングデータを受信する。クライアントは、受信したストリーミングデータをデコードして再生し、ユーザに視聴させる。
【0058】
図1に示したストリーミング配信システムの例では、クライアント4を1つしか図示していないが、勿論、多数のクライアントが接続されることは言うまでもない。
【0059】
図3は、サーバ2の構成例を示すブロック図である。
【0060】
エンコーダ11は、カメラ1から取得した画像データを1フレーム分キャプチャし、転送レート制御部12でエンコードパラメータとして保持されているデータに基づいて、エンコードする。エンコードされたデータは、バッファ15に供給され、そこに一時的に記憶される。
【0061】
転送レート制御部12は、フレームレートを保持しているとともに、bpp(bit−per−pixel)、すなわち画質のパラメータ(エンコードパラメータ)の値を保持している。転送レート制御部12は、通信部18を介してクライアント4からデータを受信すると、パケットのシーケンス番号に応じて、時刻保持部13に受信時刻を保持させたり、あるいは、ボトルネックリンクの帯域を算出する。また転送レート制御部12は、受信データに含まれるクライアント4において算出されたボトルネックリンクの推定帯域に応じて、転送レートの調整を行う。
【0062】
RTPパケット作成部16は、バッファ15からデータを読み込み、そのデータからRTPパケットを作成し、通信部18に供給する。FEC(Forward Error Collection)パケット作成部17は、RTPパケット作成部16で作成されたRTPパケットを参照し、そのRTPパケットに基づいてFECパケット(冗長データ)を作成し、通信部18に供給する。
【0063】
通信部18は、タイマを有しており、RTPパケット作成部16から供給されたRTPパケット、またはFECパケット作成部17から供給されたFECパケットを、所定のパケット間隔で、パケット通信網3を介してクライアント4に転送する。また通信部18は、FECパケット作成部17から、1つ目のFECパケットが供給された場合、送信時刻を時刻保持部19に保持させ、2つ目のFECパケットが供給された場合、時刻保持部19で保持されている送信時刻と、現在の時刻に基づいて、最大転送レートを算出し、その値を最大転送レート保持部14に保持させる。さらに通信部18は、パケット通信網3を介してクライアント4からデータを受信し、その受信データに含まれる、現在のボトルネックリンクの推定帯域の値を転送レート制御部12に供給する。
【0064】
制御部20は、記憶部21に記憶されている制御プログラム、あるいは図示せぬROM(Read Only Memory)に記憶されている制御プログラムに基づいて、サーバ2の全体の動作を制御する。記憶部21は、ハードディスクドライブなどで構成され、制御部20が実行する制御プログラムの他、各種処理を行う上で必要なデータなどを記憶する。
【0065】
また制御部20には、必要に応じてドライブ22が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア23が適宜装着され、それらから読み出された制御プログラムが、必要に応じて記憶部21にインストールされる。
【0066】
図4は、図3に示したRTPパケット作成部16の詳細な構成例を示す図である。同図に示されるように、RTPパケット作成部16は、パケタイザ31、データ部保持部32、ヘッダ部保持部33、およびエントリ保持部34で構成されている。
【0067】
パケタイザ31は、バッファ15から圧縮されたデータを取得し、それをデータ部保持部32に保持させるとともに、取得したデータから、RTPヘッダを作成し、それをヘッダ部保持部33に保持させる。またパケタイザ31は、データ部保持部32に保持させたデータ、およびヘッダ部保持部33に保持させたRTPヘッダに基づいて、エントリ保持部34のデータを更新する。
【0068】
エントリ保持部34は、例えば、図5に示されるように、ヘッダ部保持部33で保持されているRTPヘッダのシーケンス番号に対応付けて、データ部保持部32で保持されているデータのサイズ、および、データが保持されているデータ部保持部32のアドレスを保持する。
【0069】
図5の例の場合、シーケンス番号1に対応付けて、“256”のデータサイズおよび“0x00ab”のアドレスが保持され、シーケンス番号2に対応付けて、“512”のデータサイズおよび“0x00ac”のアドレスが保持され、シーケンス番号3に対応付けて、“1024”のデータサイズおよび“0x00ad”のアドレスが保持され、シーケンス番号4に対応付けて、“256”のデータサイズおよび“0x00af”のアドレスが保持されている。
【0070】
図6は、クライアント4の構成例を示すブロック図である。
【0071】
通信部41は、パケット通信網3を介してサーバ2から転送されてきたデータを受信する。受信されたデータは、バッファ42に供給され、そこに一時的に記憶される。また通信部41は、サーバ2からFECデータ(冗長データ)を受信した場合、それを帯域算出部45に供給し、受信時刻を測定させるとともに、ボトルネックリンクの帯域を算出させる。通信部41は、パケット作成部47で作成された、ボトルネックリンク帯域の算出結果が埋め込まれたパケットを取得し、それをサーバ2に転送する。
【0072】
デコーダ43は、バッファ42からデータを読み込み、それをデコードした後、表示部44に出力する。表示部44は、例えば、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などのディスプレイで構成され、デコーダ43から供給されるデータに対応する動画像などを表示する。
【0073】
帯域算出部45は、通信部41から供給された受信データから、受信時刻を測定し、その測定結果を時刻保持部46に保持させるとともに、ボトルネックリンクの帯域を算出し、その算出結果をパケット作成部47に供給する。
【0074】
パケット作成部47は、帯域算出部45から供給されたデータ(ボトルネックリンク帯域の算出結果)をパケット化し、報告パケットとして通信部41に供給する。
【0075】
制御部48は、記憶部49に記憶されている制御プログラム、あるいは図示せぬROMに記憶されている制御プログラムに基づいて、クライアント4の全体の動作を制御する。記憶部49は、ハードディスクドライブなどで構成され、制御部48が実行する制御プログラムの他、各種処理を行う上で必要なデータなどを記憶する。
【0076】
また制御部48には、必要に応じてドライブ50が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア51が適宜装着され、それらから読み出された制御プログラムが、必要に応じて記憶部49にインストールされる。
【0077】
図7は、本発明に係るRTPパケットのヘッダ部のフォーマットを説明するための図である。
【0078】
同図に示されるように、RTPパケットのヘッダ部は、固定長の2ビットのVersion(v)、1ビットのPadding(p)、1ビットのExtnsion(x)、3ビットのCSRC Count(cc)、2ビットのMarker(m)、7ビットのPayload Type(Pt)、16ビットのSequence、32ビットのTimestamp、32ビットのSSRC/CSRC(Synchronization Source/Contributing Sources)、32ビットのOriginal Dataから構成されている。
【0079】
Versionは、RTPパケットのバージョンを表わし、Paddingは、RTPパケットの最後の部分にパディング(意味を持たないデータであり、パケットの長さ合わせのために付加されるもの)が付加されているか否かを表わし、Extensionは、拡張ビットを表わし、CSRC Countは、貢献ソース識別子を表わし、Markerは、RTPパケットのマーカを表わし、Payload Typeは、RTPパケットのペイロードタイプを表わし、Sequenceは、RTPパケットのシーケンス番号を表わし、Timestampは、RTPパケットのタイムスタンプを表わし、SSRC/CSRCは、同期ソース識別子あるいは貢献ソース識別子を表わし、Original Dataは、RTPパケットのヘッダ部のオリジナルデータのデータ格納領域を表わしている。
【0080】
図8は、本発明に係るFECデータのヘッダ部のフォーマットを説明するための図である。図8のFECパケットのヘッダ部のフォーマットは、基本的に、図7におけるRTPパケットのヘッダ部のフォーマットと同様の構成とされている。
【0081】
すなわち、図7のRTPパケットのヘッダ部のペイロードタイプには、RTPパケットを表わす“33”が記されており、図8のFECパケットのヘッダ部のペイロードタイプには、FECパケットを表わす“100”が記されており、それ以外は、同様の構成とされる。
【0082】
次に、図9のフローチャートを参照して、サーバ2が実行するデータ転送処理について説明する。
【0083】
ステップS1において、サーバ2の制御部20の制御の下、RTPパケット作成部16は、RTPパケットのタイムスタンプ、およびシーケンス番号の初期化を行い、転送レート制御部12は、エンコードパラメータ、およびフレームレートの初期化を行い、通信部18は、タイマの初期化を行う。ステップS2において、通信部18は、制御部20の制御の下、タイマが終了したか否かを判定し、タイマが終了するまで待機する。
【0084】
ステップS2において、タイマが終了したと判定された場合、ステップS3に進み、エンコーダ11は、制御部20の制御の下、カメラ1から供給されるデータを1フレーム分キャプチャする。ステップS4において、エンコーダ11は、転送レート制御部12で保持されているエンコードパラメータ(画質パラメータ:bbp)を参照して、キャプチャしたデータをエンコードし、ステップS5において、エンコードしたデータをバッファ15へ転送する。
【0085】
ステップS6において、RTPパケット作成部16は、制御部20の制御の下、バッファ15に一時的に記憶されているデータを取り込み、RTPパケットを作成するとともに、作成されたRTPパケットを通信部18に送信する。
【0086】
ここで、図10のフローチャートを参照して、RTPパケット作成部16が実行する、RTPパケット作成処理および送信処理の詳細について説明する。
【0087】
ステップS21において、RTPパケット作成部16のパケタイザ31は、データ部保持部32、ヘッダ部保持部33、およびエントリ保持部34の初期化を行う。ステップS22において、パケタイザ31は、バッファ15を参照し、そこにデータがあるか否かを判定し、バッファ15にデータがあると判定した場合、ステップS23に進む。
【0088】
ステップS23において、パケタイザ31は、バッファ15から圧縮されたデータを取得し、ステップS24において、取得したデータをデータ部保持部32に保持させる。
【0089】
なお、パケタイザ31は、バッファ15からデータを取得する際、所定のデータ単位、もしくは、予め決められた所定のデータ量でデータを読み込むようにする。ここで、所定のデータ単位とは、例えば、JPEG(Joint Photographic Experts Group)2000の場合、JP2パケット(すなわち、符号化の最小のエンコードユニット)とされる。
【0090】
ステップS25において、パケタイザ31は、ステップS23の処理で取得したデータから、図7で示したフォーマットに従って、RTPヘッダを作成し、それをヘッダ部保持部33に保持させる。ステップS26において、パケタイザ31は、エントリ保持部34に、ステップS25の処理で作成されたRTPヘッダのシーケンス番号、ステップS23の処理でバッファ15から取得したデータのサイズ、および、データ部保持部32におけるデータのアドレスを保持させる(図5)。その詳細は、ステップS29(図11)を用いて後述するが、これらの情報は、送信時、RTPヘッダ部とデータ部を結合する際に必要となる。
【0091】
ステップS27において、パケタイザ31は、RTPヘッダのシーケンス番号を更新する。ステップS28において、パケタイザ31は、データ部保持部32で保持されているデータの余っているデータ領域へ1を埋め込み、パディングする。なお、1だけでなく、0でパディングすることも勿論可能である。
【0092】
以上のような処理が、バッファ15に記憶されている全てのデータ(1フレーム分のデータ)に対して行われる。そして、ステップS22において、バッファ15にデータがないと判定された場合、すなわち、バッファ15に記憶されている1フレーム分のデータのRTPパケットが作成されたと判定された場合、ステップS29に進み、パケタイザ31は、ヘッダ部とデータ部の結合処理を行う。このとき、パケタイザ31は、データを結合する長さに関して、エントリ保持部34で保持されているデータのサイズ(図5)を参照する。
【0093】
ここで、図11のフローチャートを参照して、パケタイザ31が実行する、ヘッダ部とデータ部の結合処理の詳細について説明する。
【0094】
ステップS41において、パケタイザ31は、自己の初期化を行う。ステップS42において、パケタイザ31は、エントリ保持部34(図5)を参照し、エントリがあるか否かを判定し、エントリがあると判定した場合、ステップS43に進み、エントリのシーケンス番号のアドレス部分(すなわち、データが保持されているデータ部保持部32のアドレス)から、エントリにあるサイズ分だけデータを取得する。
【0095】
ステップS44において、パケタイザ31は、現在参照しているエントリのシーケンス番号のRTPヘッダを、ヘッダ部保持部33から取得する。ステップS45において、パケタイザ31は、ステップS43の処理で取得したデータと、ステップS44の処理で取得したRTPヘッダを結合する。
【0096】
すなわち、例えば、図12に示されるように、シーケンス番号1のRTPヘッダ部A1が、データ部B1と結合され、シーケンス番号2のRTPヘッダ部A2がデータ部B2と結合され、シーケンス番号3のRTPヘッダ部A3がデータ部B3と結合され、シーケンス番号4のRTPヘッダ部A4がデータ部B4と結合される。
【0097】
なお、RTPヘッダ部と結合されるデータ部は、データによってサイズが異なるため、必要に応じて、1でパディング(Padding)される。このパディング(Padding)は、意味を持たないデータであり、パケットの長さ合わせのために付加される。図12の例の場合、データ部B1,B2およびB4が、1でパディングされている。
【0098】
そして、ステップ46において、パケタイザ31は、次のエントリへ処理対象を移行した後、ステップS42に戻り、上述した処理を繰り返し実行する。
【0099】
ステップS42において、エントリ保持部34に処理対象となるエントリがなくなったと判定された場合(すなわち、エントリにある全てのデータがRTPにパケット化されたと判定された場合)、処理は、図10のステップS30にリターンする。
【0100】
以上のようにして作成された各RTPヘッダは、同じ時刻に作成されるデータであるため、そのタイムスタンプは同一とされ、シーケンス番号のみが異なる。
【0101】
図10の説明に戻る。ステップS30において、パケタイザ31は、ステップS29(図11)の処理により、RTPヘッダ部とデータ部が結合されたデータ(すなわち、オリジナルデータをRTPにパケット化したもの)を通信部18へ送信する。そして、処理は、図9のステップS7にリターンする。
【0102】
なお、その詳細は、図14のフローチャートを参照して後述するが、通信部18は、RTPパケット作成部16のパケタイザ31から送信されてきたRTPパケットを、タイマの動作に従って、所定のパケット間隔で、パケット通信網3を介してクライアント4へストリーミングする。
【0103】
ステップS7において、FECパケット作成部17は、制御部20の制御の下、ステップS8の処理により、RTPパケット作成部16で作成されたRTPパケットに基づいて、FECパケットを作成するとともに、作成されたFECパケットを通信部18に送信する。
【0104】
ここで、図13のフローチャートを参照して、FECパケット作成部17が実行する、FECパケット作成処理および送信処理の詳細について説明する。
【0105】
ステップS61において、FECパケット作成部17は、RTPパケット作成部16のエントリ保持部34を参照し、エントリのシーケンス番号の小さいもの2つのデータ(図5の例の場合、シーケンス番号1,2に対応するデータ)を選択し、それらのデータからFEC1データを作成する。ここでは、FECデータの作成法に関して、特に限定はしないが、例えば、Exclusive−OR(イクスクルーシブオア)回路を用い、2つのデータの排他的論理和を演算した結果(両入力が「1」のとき、「0」を出力する)をFECのデータとする。
【0106】
ステップS62において、FECパケット作成部17は、ステップS61の処理で作成されたFEC1データから、図8で示したフォーマットに従って、ヘッダを作成する。すなわち、RTPヘッダのペイロードタイプのみが異なるフォーマットに従って、ヘッダが作成される。
【0107】
ステップS63において、FECパケット作成部17は、RTPパケット作成部16のエントリ保持部34を参照し、エントリ情報のシーケンス番号の大きいもの2つのデータ(図5の例の場合、シーケンス番号3,4に対応するデータ)を選択し、それらのデータからFEC2データを作成する。ステップS64において、FECパケット作成部17は、ステップS63の処理で作成されたFEC2データから、図8で示したフォーマットに従って、ヘッダを作成する。
【0108】
ステップS65において、FECパケット作成部17は、ステップS62の処理で作成されたFEC1データのヘッダ(すなわち、FEC1データをパケット化したもの)を通信部18へ送信し、続けて、ステップS66において、ステップS64の処理で作成されたFEC2データのヘッダ(すなわち、FEC2データをパケット化したもの)を通信部18へ送信する。そして、処理は、図9のステップS8にリターンする。
【0109】
ステップS8において、通信部18は、ステップS6の処理(図10)で作成されたRTPパケット、およびステップS7の処理(図13)で作成されたFECパケットのストリーミングを行う。
【0110】
ここで、図14のフローチャートを参照して、通信部18が実行する、ストリーミング処理の詳細について説明する。
【0111】
ステップS81において、通信部18は、自己の初期化を行う。ステップS82において、通信部18は、送信データがあるか否か、すなわち、RTPパケット作成部16またはFECパケット作成部17からデータが送信されてきたか否かを判定し、送信データがあると判定した場合、ステップS83に進む。
【0112】
ステップS83において、通信部18は、送信データがFECパケットであるか否か、すなわち、送信データのペイロードタイプに“100”が記されているか否かを判定する。ステップS83において、送信データがFECパケットであると判定された場合、ステップS84に進み、通信部18は、タイマを0に設定する。
【0113】
ステップS83において、送信データがFECパケットではないと判定された場合、すなわち、送信データのペイロードタイプに“33”が記されており、送信データがRTPパケットであると判定された場合、ステップS85に進み、通信部18は、RTPパケット作成部16のエントリ保持部34で保持されているエントリ数と、転送レート制御部12で保持されているフレームレートに基づいて、タイマを設定する。ここで設定するタイマの値としては、例えば、次式(2)により決定される。
タイマの値=(1/フレームレート)/エントリ数(単位:秒)・・・(2)
【0114】
ステップS86において、通信部18は、タイマが終了したか否かを判定し、タイマが終了するまで待機する。そして、ステップS86において、タイマが終了したと判定された場合、ステップS87に進み、通信部18は、データ(RTPパケットまたはFECパケット)を送信する。
【0115】
ステップS88において、通信部18は、送信データが1つ目のFECパケットであるか否かを判定し、1つ目のFECパケットであると判定した場合、ステップS89に進み、時刻保持部19に送信時刻を保持させる。
【0116】
ステップS88において、送信データが1つ目のFECパケットではないと判定された場合、ステップS90に進み、通信部18は、送信データが2つ目のFECパケットであるか否かを判定する。そして、ステップS90において、送信データが2つ目のFECパケットであると判定された場合、ステップS91に進み、通信部18は、ステップS89の処理で時刻保持部19に保持させた送信時刻と現在の時刻に基づいて、次式(3)に従って、最大転送レートを算出する。
最大転送レート=FECパケットのサイズ/(現在時刻−送信時刻)・・・(3)
【0117】
通信部18は、算出した最大転送レートを、最大転送レート保持部14に保持させる。そして、ステップS89またはS91の処理の後、ステップS82に戻り、上述した処理が繰り返し実行される。
【0118】
ステップS90において、送信データが2つ目のFECパケットではないと判定された場合、すなわち、送信データがRTPパケットであると判定された場合、ステップS89,91の処理は行われず、ステップS82に戻り、上述した処理が繰り返し実行される。
【0119】
ステップS82において、処理対象となる送信データがなくなったと判定された場合(すなわち、1フレーム分のRTPパケット、および2つのFECパケットが送信さたと判定された場合)、処理は、図9のステップS9にリターンする。
【0120】
以上においては、RTPパケットの送信において、上記式(2)により算出されたタイマの値を用いるようにしたが、FECパケット送信における場合と同様に、タイマを0に設定するようにしてもよい。
【0121】
図9の説明に戻る。ステップS9において、RTPパケット作成部16は、制御部20の制御の下、RTPパケットのタイムスタンプを更新する。ステップS10において、通信部18は、制御部20の制御の下、転送レート制御部12で保持されているフレームレート(fps)を参照し、対応するフレームレートになるようにタイマをセットする。その後、ステップS2に戻り、上述した処理が繰り返し実行される。
【0122】
以上のように、サーバ2は、オリジナルデータからRTPパケットを作成し、それをクライアント4に送信した後、サイズの等しい2つのFECパケット(冗長データ)をパケットペアで送信することができる。
【0123】
また、サーバ2は、RTPパケットの送信後にFECパケットを送信するだけでなく、例えば、RTPパケットの送信前にFECパケットを送信したり、あるいは、所定数のRTPパケットを送信した後に(RTPパケットの送信途中に)FECパケットを送信するようにしてもよい。
【0124】
次に、図15のフローチャートを参照して、サーバの転送処理(図9)により送信されてきたデータを受信し、ボトルネックリンクの帯域を推定し、推定帯域を報告するパケットを作成するまでのクライアント4の処理について説明する。
【0125】
ステップS101において、クライアント4の制御部48は、時刻保持部46のデータの初期化を行うとともに、バッファ42の初期化を行う。ステップS102において、通信部41は、制御部48の制御の下、パケット通信網3を介してサーバ2よりデータを受信したか否かを判定し、データを受信するまで待機する。
【0126】
ステップS102において、データを受信したと判定された場合、ステップS103に進み、通信部41は、受信データがFECパケットであるか否か、すなわち、受信データのペイロードタイプに“100”が記されているか否かを判定し、受信データがFECパケットであると判定した場合、ステップS104に進む。
【0127】
ステップS104において、通信部41は、受信したFECパケットのヘッダ部のタイムスタンプを参照し、新しいタイムスタンプであるか否か、すなわち、新しく受信したFECパケットであるか否かを判定し、新しいタイムスタンプであると判定した場合、ステップS105に進み、時刻保持部46に、新しく受信したFECパケットの受信時刻を保持させる。
【0128】
ステップS104において、新しいタイムスタンプではない、すなわち、過去に受信したFECパケットのタイムスタンプであると判定された場合、ステップS106に進み、通信部41は、受信したFECパケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップS107に進む。なお、パケットロスが発生しているか否かの判定は、ヘッダ部のシーケンス番号を参照することで検知することができる。
【0129】
ステップS107において、通信部41は、受信したFECパケットを帯域算出部45に供給し、ボトルネックリンクの帯域を算出させる。帯域算出部45は、供給されたFECパケットから、次式(4)に従って、ボトルネックリンクの帯域Bを算出し、算出結果をパケット作成部47に供給する。
【0130】
ステップS108において、パケット作成部47は、ステップS107の処理で算出された帯域Bの値をサーバ2に報告するためのパケットを作成する。ここで作成される報告パケットのフォーマットを図16に示す。
【0131】
同図に示されるように、作成されるパケットは、固定長の2ビットのVersion(v)、1ビットのPadding(p)、5ビットのSub Type(Sub)、8ビットのPacket Type(PT)、16ビットのMessage Length、32ビットのSSRC/CSRC、32ビットのNAME、および32ビットのData部から構成されている。
【0132】
Versionは、パケットのバージョンを表わし、Paddingは、パケットの最後の部分にパディングが付加されているか否かを表わし、Sub Typeは、パケットのサブタイプ(種類)を表わし、Packet Typeは、パケットタイプ(APP=206)を表わし、Message Lengthは、パケットの長さを表わし、SSRC/CSRCは、サーバ識別子あるいはサーバ2に関連する識別子を表わし、NAMEは、パケットの名前を表わし、Data部は、アプリケーション依存のデータ領域を表わしている。
【0133】
パケット作成部47は、Data部に、算出されたボトルネックリンクの帯域Bの値を埋め込むとともに、Seq部分に、パケットのシーケンス番号を書き込む。なお、パケットのシーケンス番号は、1から始まり、1パケット送信する毎に1だけインクリメントされる。
【0134】
ステップS109において、通信部41は、ステップS108の処理で作成された帯域Bの値が埋め込まれた報告パケット1をサーバ2へ送信し、ステップS110において、パケット送信の間隔を空けずに、同じ内容の報告パケット2をサーバ2へ送信する。すなわち、Data部が同じ2つの報告パケットがバックツーバックでサーバ2へ送信される。
【0135】
ステップS106において、受信したFECパケットにパケットロスが発生していると判定された場合、FECパケットペアの1つ目のパケットにパケットロスが発生しているか、あるいは、FECパケットがリオーダしたと判断される。この場合、帯域の算出処理および報告パケットの作成処理は行われず、ステップS102に戻り、上述した処理が繰り返し実行される。
【0136】
ステップS103において、受信データがFECパケットではないと判定された場合、すなわち、受信データがRTPパケットであると判定された場合、ステップS111に進み、通信部41は、受信データをバッファ42に供給した後、ステップS102に戻り、上述した処理を繰り返し実行する。
【0137】
このように、2つのFECパケット(すなわち、冗長データ)を受信することにより、ボトルネックリンクの帯域を算出(推測)し、算出結果を報告パケットに埋め込んでサーバ2に報告することができる。
【0138】
次に、図17のフローチャートを参照して、クライアント4の処理(図15)により送信されてきた報告パケットを受信し、ボトルネックリンクの帯域を算出し、転送レートを調整するまでのサーバ2の転送レート制御部12の処理について説明する。
【0139】
ステップS121において、転送レート制御部12は、自己の初期化を行う。ステップS122において、転送レート制御部12は、制御部20の制御の下、通信部18を介してクライアント4から報告パケットを受信したか否かを判定し、報告パケットを受信するまで待機する。
【0140】
ステップS122において、報告パケットを受信したと判定された場合、ステップS123に進み、転送レート制御部12は、受信した報告パケットのシーケンス番号が奇数であるか否かを判定する。
【0141】
ステップS123において、報告パケットのシーケンス番号が奇数であると判定された場合、転送レート制御部12は、パケットペアの1つ目のパケットであると判断し、ステップS124に進み、時刻保持部13に、受信時刻を保持させる。一方、ステップS123において、報告パケットのシーケンス番号が偶数であると判定された場合、転送レート制御部12は、パケットペアの2つ目のパケットであると判断し、ステップS125に進む。
【0142】
ステップS125において、転送レート制御部12は、受信した報告パケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップS126に進み、上記式(4)に従って、ボトルネックリンクの帯域Bを算出する。これにより、クライアント4からサーバ2の間のボトルネックリンクの帯域を測定することができる。転送レート制御部12は、以上のようにして算出したボトルネックリンクの帯域の値を保持する。
【0143】
ステップS125において、報告パケットにパケットロスが発生していると判定された場合、帯域の算出処理は行われず、ステップS127に進む。
【0144】
ステップS127において、転送レート制御部12は、クライアント4から受信した報告パケットのData部に埋め込まれている帯域が、最大転送レート保持部14で保持されている最大転送レートより小さいか否かを判定し、クライアント4から報告された帯域が最大転送レートより小さいと判定した場合、ステップS128に進む。
【0145】
ステップS128において、転送レート制御部12は、クライアント4から報告された帯域の値を用いて、統計処理を行う。ここで行われる統計処理は、例えば、クライアント4から受け取った過去10個の帯域の値の平均値をボトルネックリンクの帯域にするようにしてもよいし、あるいは、次式(5)に従って、ボトルネックリンクの帯域Bを算出するようにしてもよい。ここでαは、例えば、0.1などの係数とされる。
【0146】
さらに、受け取った帯域の値の平均をとる方法ではなく、例えば、受け取った帯域の値そのものを、ボトルネックリンクの帯域としてもよい。
【0147】
転送レート制御部12は、以上のようにして統計処理を行った後、得られたボトルネックリンクの帯域の値を保持する。
【0148】
ステップS127において、クライアント4から報告された帯域が最大転送レートより大きいと判定された場合、転送レート制御部12は、クライアント4から受信した報告パケットは、不良データであると判断し、統計処理は行わず、ステップS129に進む。
【0149】
ステップS129において、転送レート制御部12は、現在保持している転送レート(ステップS126の処理により算出された転送レート)と、クライアント4から報告され、上述したようにして統計処理されたボトルネックリンクの帯域の値を比較し、クライアント4から報告され統計処理されたボトルネックリンクの帯域の値が、現在保持している転送レートより大きいと判定した場合、ステップS130に進む。
【0150】
ステップS130において、転送レート制御部12は、転送レートを増加させるか、もしくは、転送レートを維持するように調整する。
【0151】
ここで行われる転送レートの調整方法としては、特に問わないが、例えば、フレームレートを調整する方法や、エンコードパラメータ(bpp:圧縮率)を調整する方法などがある。
【0152】
例えば、現在保持している最大転送レートをR_now、エンコードパラメータをx_now bpp、フレームレートをy_now fps、クライアント4から報告された転送レートをR_cとすると、エンコードパラメータを調整する方法の場合、エンコードパラメータx_now・bppは、次式(6)で表わされる。
エンコードパラメータx_now bpp=x_now bpp・R_c/R_now ・・・(6)
【0153】
また、フレームレートを調整する方法の場合、フレームレートy_now fpsは、次式(7)で表わされる。
フレームレートy_now fps=y_now fps・R_c/R_now ・・・(7)
【0154】
ステップS129において、クライアント4から報告され統計処理されたボトルネックリンクの帯域の値が、現在保持している転送レートより小さいと判定された場合、ステップS131に進み、転送レート制御部12は、転送レートを、クライアント4から報告され統計処理されたボトルネックリンクの帯域の値になるように調整する。ここで行われる転送レートの調整方法としては、例えば、フレームレートを下げるか、あるいは、エンコードパラメータ(bpp)を小さくするようにする(すなわち、1フレーム当たりの情報量を下げるか、あるいは、圧縮率を上げる)。
【0155】
以上のようにして、クライアント4から報告されたボトルネックリンクの帯域に基づいて、転送レートが最適に調整される。
【0156】
図18は、サーバ2からクライアント4にFECパケットを送信し、クライアント2がサーバ2から受信したFECパケットに基づいて、ボトルネックリンクの帯域を算出し、その帯域をサーバ2に報告し、サーバ2が、クライアント4から報告された帯域に基づいて、転送レートを調整するまでの処理を模式的に示している。同図において、横軸は、時間を表わし、縦軸の上側がサーバ2を表わし、縦軸の下側がクライアント4を表わしている。
【0157】
図18の例の場合、サーバ2からクライアント4に対し、RTPタイムスタンプ3000、およびRTPタイムスタンプ6000のデータが送信されている。RTPタイムスタンプ3000のデータには、シーケンス番号1乃至4のRTPパケット、およびFECパケット1,2が含まれており、RTPタイムスタンプ6000のデータには、シーケンス番号5乃至8のRTPパケット、およびFECパケット1,2が含まれている。
【0158】
サーバ2は、シーケンス番号1乃至4のRTPパケットをクライアント4に送信した後、FECパケット1,2を、バックツーバックで(両パケットの間隔を空けずに)クライアント4に送信する。クライアント4は、時刻T1にFECパケット1を受信し、時刻T2にFECパケット2を受信し、それらの受信時刻の間隔から、上記式(4)に従って、ボトルネックリンクの帯域Bを算出する。
【0159】
算出の結果、ボトルネックリンクの帯域Bが、例えば、2.5Mbpsであった場合、クライアント4は、この算出結果をパケット化し、同じ内容の報告パケット1,2を、バックツーバックでサーバ2に送信する。サーバ2は、クライアント4から送信されてきた報告パケット1,2を受信し、それらの受信時刻の間隔から、上記式(4)に従って、ボトルネックリンクの帯域Bを算出する。そして、サーバ2は、算出したボトルネックリンクの帯域と、報告パケットに埋め込まれたボトルネックリンクの帯域を比較し、その比較結果に基づいて、転送レートの調整を行う。
【0160】
以上のように、両パケットのサイズが等しいFECパケット1,2を用いてパケットペアの測定を行うことにより、それらの受信時刻の間隔から、本来のデータに影響することなくボトルネックリンクの帯域を容易に算出することができる。
【0161】
また、FECパケットを用いるだけでなく、RTPパケットを用いてパケットペアの測定を行うことも可能である。この場合に用いられるRTPパケットのフォーマットを図19に示す。図19のRTPパケットのフォーマットは、基本的に、図8におけるRTPパケットのヘッダ部のフォーマットとほぼ同様の構成とされており、Version(v)、Padding(p)、Extnsion(x)、CSRC Count(cc)、Marker(m)、Payload Type(Pt)、Sequence、Timestamp、SSRC/CSRC、Original Dataの他、拡張領域に、16ビットのDefined−by−profile、16ビットのExtension length、および32ビットのOriginal data sizeが含まれている。
【0162】
Defined−by−profileは、定義済みプロファイルを表わし、Extension lengthは、拡張ビットの長さを表わし、Original data sizeは、オリジナルデータのサイズを表わしている。
【0163】
RTPパケット作成部16のパケタイザ31は、RTPパケットのヘッダ部とデータ部を結合する際に、エントリ保持部34で保持されているサイズ分だけ、データ部保持部32からデータの結合を行うのではなく、データ部保持部32で保持されているデータをそのまま結合し、RTPヘッダの拡張領域にヘッダ(x)のフラグを立て、Original data size部分に、エントリ保持部34で保持されている値を埋め込むようにし、オリジナルデータ以外には、1もしくは0をパディングするようにする。これにより、最大サイズのパケットが作成される。
【0164】
なお、RTPパケットを用いてパケットペアの測定を行う場合にも、サーバ2の転送処理は、基本的に、図9で説明したステップS7の処理を除いた、ステップS1乃至S6およびステップS8乃至S10の処理と同様とされるが、ステップS6のRTPパケット作成処理および送信処理の詳細として説明した図10のステップS29におけるRTPヘッダ部とデータ部の結合処理(図11)が異なる。
【0165】
そこで、図20を参照して、RTPパケットを用いた場合のRTPヘッダ部とデータ部の結合処理の詳細について説明する。
【0166】
ステップS151において、パケタイザ31は、自己の初期化を行う。ステップS152において、パケタイザ31は、エントリ保持部34(図5)を参照し、エントリがあるか否かを判定し、エントリがあると判定した場合、ステップS153に進み、現在参照しているエントリが先頭2つのエントリであるか否かを判定する。
【0167】
ステップS153において、現在参照しているエントリが先頭2つのエントリであると判定された場合、ステップS154に進み、パケタイザ31は、エントリのシーケンス番号のアドレス部分(すなわち、データが保持されているアドレス)から、最大サイズ分のデータを取得する。ここで、最大サイズは、最大伝送ユニット(MTU:Maximum Transfer Unit)の値を超えないような値に設定されている。
【0168】
ステップS155において、パケタイザ31は、現在参照しているエントリのシーケンス番号のRTPヘッダを、ヘッダ部保持部33から取得する。ステップS156において、パケタイザ31は、RTPヘッダの拡張領域のオリジナルデータサイズ領域の部分に、ステップS154の処理で取得したオリジナルデータのデータサイズを書き込む。ステップS157において、パケタイザ31は、ステップS154の処理で取得したデータとステップS156の処理で拡張領域にオリジナルデータサイズが書き込まれたRTPヘッダを結合する。
【0169】
このように、1フレームを構成するデータの先頭2つのRTPパケットに対して、その拡張領域にオリジナルデータサイズを書き込み、オリジナルデータ以外には、パディングデータを書き込み、パケットペアに用いるためのRTP拡張を適用した最大サイズのパケットを作成することができる。
【0170】
一方、ステップS153において、現在参照しているエントリが先頭2つのエントリではないと判定された場合、ステップS158に進み、パケタイザ31は、エントリのシーケンス番号のアドレス部分から、エントリにあるサイズ分だけデータを取得する。
【0171】
ステップS159において、パケタイザ31は、現在参照しているエントリのシーケンス番号のRTPヘッダを、ヘッダ部保持部33から取得する。ステップS160において、パケタイザ31は、ステップS158の処理で取得したデータと、ステップS159の処理で取得したRTPヘッダを結合する(図12)。
【0172】
このように、ステップS158乃至S160の処理は、上述した図11のステップS43乃至S45の処理と同様であり、通常のRTPパケットが作成される。
【0173】
ステップS157またはステップS160の処理の後、ステップ161において、パケタイザ31は、次のエントリへ処理対象を移行した後、ステップS152に戻り、上述した処理を繰り返し実行する。
【0174】
ステップS152において、エントリ保持部34に処理対象となるエントリがなくなったと判定された場合(すなわち、エントリにある全てのデータがRTPにパケット化されたと判定された場合)、処理は、図10のステップS30にリターンする。
【0175】
このように、サーバ2は、1フレームを構成するデータの先頭2つのRTPパケットに対して、その拡張領域にオリジナルデータサイズを書き込み、オリジナルデータ以外には、1もしくは0がパディングされたデータを書き込み、最大サイズの2つのパケットを作成することができる。
【0176】
また、サーバ2は、1フレームを構成するデータの先頭2つのRTPパケットをRTP拡張パケットにするだけでなく、例えば、1フレームを構成するデータの末尾2つのRTPパケットをRTP拡張パケットにしたり、あるいは、1フレームを構成するデータの所定位置のRTPパケットをRTP拡張パケットにするようにしてもよい。
【0177】
図21は、図20の処理に対応して、通信部18が実行する、ストリーミング処理を示すフローチャートである。なお、この処理は、図14の処理と基本的に同様であるが、図14のステップS83における、送信データがFECパケットであるか否かの判定処理に代わり、図20のステップS173では、送信データがRTP拡張のついたパケットであるか否かの判定処理に変更され、図14のステップS88における、1つ目のFECパケットであるか否かの判定処理に代わり、図20のステップS178では、1つ目のRTP拡張の付いたパケットであるか否かの判定処理に変更され、図14のステップS89における、2つ目のFECパケットであるか否かの判定処理に代わり、図20のステップS179では、2つ目のRTP拡張の付いたパケットであるか否かの判定処理に変更される。
【0178】
以上のように、サーバ2は、RTPパケットのうち、先頭2つのRTPパケットに対し、その拡張領域にオリジナルデータサイズを書き込んだサイズの等しい2つのRTPパケット(すなわち、RTP拡張の付いたパケット)を作成し、それをパケットペアで送信することができる。
【0179】
次に、図22のフローチャートを参照して、上述したようにしてサーバ2で作成されたRTP拡張の付いたRTPパケットを受信し、ボトルネックリンクの帯域を推定し、推定帯域を報告するパケットを作成するまでのクライアント4の処理について説明する。
【0180】
ステップS191において、クライアント4の制御部48は、時刻保持部46のデータの初期化を行うとともに、バッファ42の初期化を行う。ステップS192において、通信部41は、制御部48の制御の下、パケット通信網3を介してサーバ2よりデータを受信したか否かを判定し、データを受信するまで待機する。
【0181】
ステップS192において、データを受信したと判定された場合、ステップS193に進み、通信部41は、受信データがRTP拡張の付いたパケットであるか否かを判定し、受信データがRTP拡張の付いたパケットであると判定した場合、ステップS194に進む。ステップS194において、通信部41は、受信したRTP拡張の付いたパケットの拡張部分に埋め込まれているオリジナルデータサイズに基づいて、パディングデータ部分を削除し、オリジナルデータのみをバッファ42に転送する。
【0182】
ステップS195において、通信部41は、受信したRTP拡張の付いたパケットのヘッダ部のタイムスタンプを参照し、新しいタイムスタンプであるか否か、すなわち、新しく受信したRTP拡張の付いたパケットであるか否かを判定し、新しいタイムスタンプであると判定した場合、ステップS196に進み、時刻保持部46に、新しく受信したRTP拡張の付いたパケットの受信時刻を保持させる。
【0183】
ステップS195において、新しいタイムスタンプではない、すなわち、過去に受信したRTP拡張の付いたパケットのタイムスタンプであると判定された場合、ステップS197に進み、通信部41は、受信したRTP拡張の付いたパケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップS198に進む。なお、パケットロスが発生しているか否かの判定は、ヘッダ部のシーケンス番号を参照することで検知することができる。
【0184】
ステップS197において、通信部41は、受信したRTP拡張の付いたパケットを帯域算出部45に供給し、ボトルネックリンクの帯域を算出させる。帯域算出部45は、供給されたRTP拡張の付いたパケットから、上記式(4)に従って、ボトルネックリンクの帯域Bを算出し、算出結果をパケット作成部47に供給する。なお、ここでの受信サイズとは、オリジナルデータサイズではなく、RTPパケット全体のサイズである。
【0185】
ステップS199において、パケット作成部47は、ステップS198の処理で算出された帯域Bの値をサーバ2に報告するためのパケットを、図16に示したフォーマットに従って作成する。ここで、パケット作成部47は、Data部に、算出した帯域Bの値を埋め込むとともに、Seq部分に、パケットのシーケンス番号を書き込む。なお、パケットのシーケンス番号は、1から始まり、1パケット送信する毎に1だけインクリメントされる。
【0186】
ステップS200において、通信部41は、ステップS199の処理で作成された帯域Bの値が埋め込まれた報告パケット1をサーバ2へ送信し、ステップS201において、パケット送信の間隔を空けずに、同じ内容の報告パケット2をサーバ2へ送信する。すなわち、Data部が同じ2つの報告パケットがバックツーバックでサーバ2へ送信される。
【0187】
ステップS197において、受信したRTP拡張の付いたパケットにパケットロスが発生していると判定された場合、RTP拡張の付いたパケットペアの1つ目のパケットにパケットロスが発生しているか、あるいは、RTP拡張の付いたパケットがリオーダしたと判断される。この場合、帯域の算出処理および報告パケットの作成処理は行われず、ステップS192に戻り、上述した処理が繰り返し実行される。
【0188】
ステップS193において、受信データがRTP拡張の付いたパケットではないと判定された場合、すなわち、受信データが通常のRTPパケットであると判定された場合、ステップS202に進み、通信部41は、受信データをバッファ42に供給した後、ステップS192に戻り、上述した処理を繰り返し実行する。
【0189】
このように、RTP拡張の付いた2つのパケットを受信することにより、ボトルネックリンクの帯域を算出(推測)し、算出結果を報告パケットに埋め込んでサーバ2に報告することができる。
【0190】
なお、以上のクライアント4の処理(図22)により送信されてきた報告パケットを受信し、ボトルネックリンクの帯域を算出し、転送レートを調整するまでのサーバ2の転送レート制御部12の処理は、上述した図17の処理と同様であるため、その説明は省略する。
【0191】
以上のように、両パケットのサイズが等しいRTP拡張の付いたパケット1,2を用いてパケットペアの測定を行うことにより、それらの受信時刻の間隔から、ボトルネックリンクの帯域を容易に算出することができるとともに、冗長データを送る必要がなくなる。
【0192】
上述した一連の処理(図9乃至図11、図13、図14、図17、図20、および図21に示したサーバ2の処理、並びに、図15および図22に示したクライアント4の処理)は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【0193】
図23は、汎用のコンピュータの内部の構成例を示す図である。コンピュータのCPU(Central Processing Unit)101は、ROM(Read Only Memory)102に記憶されているプログラム、または記憶部108からRAM(Random Access Memory)103にロードされたプログラムに従って各種の処理を実行する。RAM103にはまた、CPU101が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0194】
CPU101、ROM102、およびRAM103は、バス104を介して相互に接続されている。このバス104にはまた、入出力インターフェース105も接続されている。
【0195】
入出力インターフェース105には、ボタン、スイッチ、キーボードあるいはマウスなどで構成される構成される入力部106、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などのディスプレイ、並びにスピーカなどで構成される出力部107、ハードディスクなどで構成される記憶部108、およびモデムやターミナルアダプタなどで構成される通信部109が接続されている。通信部109は、インターネットを含むネットワークを介して通信処理を行う。
【0196】
入出力インターフェース105にはまた、必要に応じてドライブ110が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア111が適宜装着され、そこから読み出されたコンピュータプログラムが、記憶部108にインストールされる。
【0197】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図23に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini−Disc)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア111により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM103またはハードディスクなどの記憶部108で構成される。
【0198】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0199】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表わすものである。
【0200】
【発明の効果】
以上のように、第1の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、冗長データを用いることで、本来のデータに影響することなく、双方向のボトルネックリンクの帯域を測定し、その測定結果に基づいて転送レートを調整することが可能となる。
【0201】
第2の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、冗長データを送信することで、受信側にボトルネックリンクの帯域を算出させることができ、その算出結果が埋め込まれたパケットを受信することで、送信側でボトルネックリンクの帯域を算出することができ、双方向の算出結果に基づいて転送レートを調整することが可能となる。
【0202】
第3の本発明によれば、ボトルネックリンクの帯域を測定することが可能となる。特に、送信側から送信されてきた冗長データの受信時刻に基づいて、ボトルネックリンクの帯域を算出するとともに、その算出結果を送信側に報告することが可能となる。
【0203】
第4の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、送信データの一部を拡張した最大サイズのデータを用いることで、本来のデータに影響することなく、双方向のボトルネックリンクの帯域を測定し、その測定結果に基づいて転送レートを調整することが可能となる。
【0204】
第5の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、送信データの一部を拡張した最大サイズのデータを送信することで、受信側にボトルネックリンクの帯域を算出させることができ、その算出結果が埋め込まれたパケットを受信することで、送信側でボトルネックリンクの帯域を算出することができ、双方向の算出結果に基づいて転送レートを調整することが可能となる。
【0205】
第6の本発明によれば、ボトルネックリンクの帯域を測定することが可能となる。特に、送信側から送信されてきた送信データの一部が拡張された最大サイズのデータの受信時刻に基づいて、ボトルネックリンクの帯域を算出するとともに、その算出結果を送信側に報告することが可能となる。
【図面の簡単な説明】
【図1】従来のパケットペア手法を説明するための図である。
【図2】本発明を適用したストリーミング配信システムの構成例を示す図である。
【図3】サーバの構成例を示すブロック図である。
【図4】RTPパケット作成部の詳細な構成例を示す図である。
【図5】エントリ保持部が保持する情報の例を示す図である。
【図6】クライアントの構成例を示すブロック図である。
【図7】RTPパケットのヘッダ部のフォーマットを説明するための図である。
【図8】FECデータのヘッダ部のフォーマットを説明するための図である。
【図9】データ転送処理を説明するフローチャートである。
【図10】図9のステップS6のRTPパケット作成処理および送信処理の詳細を説明するフローチャートである。
【図11】図10のステップS29のヘッダ部とデータ部の結合処理の詳細を説明するフローチャートである。
【図12】RTPヘッダとデータ部の結合処理を説明するための図である。
【図13】図9のステップS7のFECパケット作成処理および送信処理の詳細を説明するフローチャートである。
【図14】図9のステップS8のストリーミング処理の詳細を説明するフローチャートである。
【図15】クライアントの処理を説明するフローチャートである。
【図16】報告パケットのフォーマットを説明するための図である。
【図17】転送レート制御部の処理を説明するフローチャートである。
【図18】サーバとクライアント間の帯域をそれぞれ算出し、転送レートを調整するまでの処理を模式的に示す図である。
【図19】RTPパケットのフォーマットを説明するための図である。
【図20】図10のステップS29のRTPヘッダ部とデータ部の結合処理の詳細を説明するフローチャートである。
【図21】ストリーミング処理を説明するフローチャートである。
【図22】クライアントの処理を説明するフローチャートである。
【図23】汎用のコンピュータの内部の構成例を示す図である。
【符号の説明】
2 サーバ, 3 ネットワーク, 4 クライアント, 11 エンコーダ, 16 RTPパケット作成部, 17 FECパケット作成部, 18 通信部,20 制御部, 22 ドライブ, 23 リムーバブルメディア, 31 パケタイザ, 41 通信部, 45 帯域算出部, 47 パケット作成部,
48 制御部
Claims (28)
- データを送信する送信装置と、ネットワークを介して前記データを受信する受信装置とからなる配信システムにおいて、
前記送信装置は、前記データをパケット化し、前記パケット化された前記データに基づいて冗長データを作成し、前記冗長データをパケット化し、前記受信装置に対し、前記パケット化されたデータを送信した後、前記パケット化された冗長データを続けて2つ送信し、
前記受信装置は、前記送信装置から送信されてきた前記2つのパケット化された冗長データを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、前記送信装置に対し、前記報告パケットを続けて2つ送信し、
前記送信装置は、前記受信装置から送信されてきた前記2つの報告パケットを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、前記報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする配信システム。 - ネットワークを介してデータを送信する送信装置において、
前記データをパケット化する第1のパケット化手段と、
前記第1のパケット化手段によりパケット化された前記データに基づいて、冗長データを作成する作成手段と、
前記作成手段により作成された前記冗長データをパケット化する第2のパケット化手段と、
前記受信装置に対し、前記第1のパケット化手段によりパケット化された前記データを送信した後、前記第2のパケット化手段によりパケット化された前記冗長データを続けて2つ送信する送信手段と、
前記受信装置から送信されてきた2つの報告パケットを受信する受信手段と、前記受信手段により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、
前記比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする送信装置。 - 前記第1のパケット化手段は、1フレーム分の前記データをパケット化することを特徴とする請求項2に記載の送信装置。
- 前記作成手段は、前記第1のパケット化手段によりパケット化されたデータのうち、2つ以上のデータに基づいて、前記冗長データを作成することを特徴とする請求項2に記載の送信装置。
- 前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より大きいと判断された場合、前記調整手段は、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項2に記載の送信装置。
- 前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より小さいと判断された場合、前記調整手段は、前記報告パケットに埋め込まれている前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項2に記載の送信装置。
- ネットワークを介してデータを送信する送信装置の送信方法において、
前記データをパケット化する第1のパケット化ステップと、
前記第1のパケット化ステップの処理によりパケット化された前記データに基づいて、冗長データを作成する作成ステップと、
前記作成ステップの処理により作成された前記冗長データをパケット化する第2のパケット化ステップと、
前記受信装置に対し、前記第1のパケット化ステップの処理によりパケット化された前記データを送信した後、前記第2のパケット化ステップの処理によりパケット化された前記冗長データを続けて2つ送信する送信ステップと、
前記受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする送信方法。 - ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化する第1のパケット化ステップと、
前記第1のパケット化ステップの処理によりパケット化された前記データに基づいて、冗長データを作成する作成ステップと、
前記作成ステップの処理により作成された前記冗長データをパケット化する第2のパケット化ステップと、
前記受信装置に対し、前記第1のパケット化ステップの処理によりパケット化された前記データを送信した後、前記第2のパケット化ステップの処理によりパケット化された前記冗長データを続けて2つ送信する送信ステップと、
前記受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。 - ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化する第1のパケット化ステップと、
前記第1のパケット化ステップの処理によりパケット化された前記データに基づいて、冗長データを作成する作成ステップと、
前記作成ステップの処理により作成された前記冗長データをパケット化する第2のパケット化ステップと、
前記受信装置に対し、前記第1のパケット化ステップの処理によりパケット化された前記データを送信した後、前記第2のパケット化ステップの処理によりパケット化された前記冗長データを続けて2つ送信する送信ステップと、
前記受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに実行させることを特徴とするプログラム。 - ネットワークを介してデータを受信する受信装置において、
送信装置から送信されてきた前記データを受信する受信手段と、
前記受信手段により受信された前記データが冗長データであるか否かを判定する判定手段と、
前記判定手段により前記データが冗長データであると判定された場合、2つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、
前記送信装置に対し、前記作成手段により作成された前記報告パケットを続けて2つ送信する送信手段とを備えることを特徴とする受信装置。 - 前記受信手段は、1フレーム分の前記データを受信することを特徴とする請求項10に記載の受信装置。
- ネットワークを介してデータを受信する受信装置の受信方法において、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データが冗長データであるか否かを判定する判定ステップと、
前記判定ステップの処理により前記データが冗長データであると判定された場合、2つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とする受信方法。 - ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データが冗長データであるか否かを判定する判定ステップと、
前記判定ステップの処理により前記データが冗長データであると判定された場合、2つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。 - ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データが冗長データであるか否かを判定する判定ステップと、
前記判定ステップの処理により前記データが冗長データであると判定された場合、2つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて2つ送信する送信ステップとをコンピュータに実行させることを特徴とするプログラム。 - データを送信する送信装置と、ネットワークを介して前記データを受信する受信装置とからなる配信システムにおいて、
前記送信装置は、前記データをパケット化し、前記パケット化された前記データのうち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズにし、前記受信装置に対し、拡張された前記最大サイズの2つのパケットを含む前記パケット化されたデータを送信し、
前記受信装置は、前記送信装置から送信されてきた前記2つの最大サイズのパケットを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、前記送信装置に対し、前記報告パケットを続けて2つ送信し、
前記送信装置は、前記受信装置から送信されてきた前記2つの報告パケットを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、前記報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする配信システム。 - ネットワークを介してデータを送信する送信装置において、
前記データをパケット化するパケット化手段と、
前記パケット化手段によりパケット化された前記データのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張手段と、
前記受信装置に対し、前記拡張手段により拡張された前記最大サイズの2つのパケットを含む、前記パケット化手段によりパケット化された前記データを送信する送信手段と、
前記受信装置から送信されてきた2つの報告パケットを受信する受信手段と、前記受信手段により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、
前記比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする送信装置。 - 前記パケット化手段は、1フレーム分の前記データをパケット化することを特徴とする請求項16に記載の送信装置。
- 前記所定の2つのパケットは、前記パケット化手段によりパケット化された前記データの先頭2つのパケットであることを特徴とする請求項16に記載の送信装置。
- 前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より大きいと判断された場合、前記調整手段は、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項16に記載の送信装置。
- 前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より小さいと判断された場合、前記調整手段は、前記報告パケットに埋め込まれている前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項16に記載の送信装置。
- ネットワークを介してデータを送信する送信装置の送信方法において、
前記データをパケット化するパケット化ステップと、
前記パケット化ステップの処理によりパケット化された前記データのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、
前記受信装置に対し、前記拡張ステップの処理により拡張された前記最大サイズの2つのパケットを含む、前記パケット化ステップの処理によりパケット化された前記データを送信する送信ステップと、
前記受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする送信方法。 - ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化するパケット化ステップと、
前記パケット化ステップの処理によりパケット化された前記データのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、
前記受信装置に対し、前記拡張ステップの処理により拡張された前記最大サイズの2つのパケットを含む、前記パケット化ステップの処理によりパケット化された前記データを送信する送信ステップと、
前記受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。 - ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化するパケット化ステップと、
前記パケット化ステップの処理によりパケット化された前記データのち、所定の2つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、
前記受信装置に対し、前記拡張ステップの処理により拡張された前記最大サイズの2つのパケットを含む、前記パケット化ステップの処理によりパケット化された前記データを送信する送信ステップと、
前記受信装置から送信されてきた2つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記2つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに実行させることを特徴とするプログラム。 - ネットワークを介してデータを受信する受信装置において、
送信装置から送信されてきた前記データを受信する受信手段と、
前記受信手段により受信された前記データに拡張領域が含まれているか否かを判定する判定手段と、
前記判定手段により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む2つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、
前記送信装置に対し、前記作成手段により作成された前記報告パケットを続けて2つ送信する送信手段とを備えることを特徴とする受信装置。 - 前記受信手段は、1フレーム分の前記データを受信することを特徴とする請求項24に記載の受信装置。
- ネットワークを介してデータを受信する受信装置の受信方法において、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データに拡張領域が含まれているか否かを判定する判定ステップと、
前記判定ステップの処理により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む2つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とする受信方法。 - ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データに拡張領域が含まれているか否かを判定する判定ステップと、
前記判定ステップの処理により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む2つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて2つ送信する送信ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。 - ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データに拡張領域が含まれているか否かを判定する判定ステップと、
前記判定ステップの処理により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む2つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて2つ送信する送信ステップとをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003057320A JP2004266741A (ja) | 2003-03-04 | 2003-03-04 | 配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003057320A JP2004266741A (ja) | 2003-03-04 | 2003-03-04 | 配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004266741A true JP2004266741A (ja) | 2004-09-24 |
Family
ID=33120778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003057320A Withdrawn JP2004266741A (ja) | 2003-03-04 | 2003-03-04 | 配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004266741A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006295537A (ja) * | 2005-04-11 | 2006-10-26 | Sony Corp | 通信システム、通信装置および方法、プログラム、並びにデータ構造 |
CN1327672C (zh) * | 2004-10-29 | 2007-07-18 | 清华大学 | 一种基于数值微分的流量分配方法 |
JP2007201938A (ja) * | 2006-01-27 | 2007-08-09 | Fujifilm Corp | 通信端末、通信システムおよび通信方法 |
JP2009089416A (ja) * | 2008-11-21 | 2009-04-23 | Sony Corp | 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム |
US7987284B2 (en) | 2005-03-28 | 2011-07-26 | Sony Corporation | Communication processing apparatus, data communication system, and communication processing method |
JP2012142684A (ja) * | 2010-12-28 | 2012-07-26 | Brother Ind Ltd | 通信装置、通信方法、および通信プログラム |
JP2018182768A (ja) * | 2011-01-19 | 2018-11-15 | サムスン エレクトロニクス カンパニー リミテッド | 放送システムにおけるマルチメディアデータの転送装置及び方法 |
JP2021016181A (ja) * | 2013-10-31 | 2021-02-12 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | 送信方法および送信装置 |
-
2003
- 2003-03-04 JP JP2003057320A patent/JP2004266741A/ja not_active Withdrawn
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1327672C (zh) * | 2004-10-29 | 2007-07-18 | 清华大学 | 一种基于数值微分的流量分配方法 |
US7987284B2 (en) | 2005-03-28 | 2011-07-26 | Sony Corporation | Communication processing apparatus, data communication system, and communication processing method |
JP2006295537A (ja) * | 2005-04-11 | 2006-10-26 | Sony Corp | 通信システム、通信装置および方法、プログラム、並びにデータ構造 |
JP2007201938A (ja) * | 2006-01-27 | 2007-08-09 | Fujifilm Corp | 通信端末、通信システムおよび通信方法 |
JP2009089416A (ja) * | 2008-11-21 | 2009-04-23 | Sony Corp | 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム |
JP4730427B2 (ja) * | 2008-11-21 | 2011-07-20 | ソニー株式会社 | 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム |
JP2012142684A (ja) * | 2010-12-28 | 2012-07-26 | Brother Ind Ltd | 通信装置、通信方法、および通信プログラム |
JP2018182768A (ja) * | 2011-01-19 | 2018-11-15 | サムスン エレクトロニクス カンパニー リミテッド | 放送システムにおけるマルチメディアデータの転送装置及び方法 |
JP2018182769A (ja) * | 2011-01-19 | 2018-11-15 | サムスン エレクトロニクス カンパニー リミテッド | 放送システムにおけるマルチメディアデータの転送装置及び方法 |
US10484445B2 (en) | 2011-01-19 | 2019-11-19 | Samsung Electronics Co., Ltd. | Apparatus and method for transmitting multimedia data in a broadcast system |
US10506007B2 (en) | 2011-01-19 | 2019-12-10 | Samsung Electronics Co., Ltd. | Apparatus and method for transmitting multimedia data in a broadcast system |
US10911510B2 (en) | 2011-01-19 | 2021-02-02 | Samsung Electronics Co., Ltd. | Apparatus and method for transmitting multimedia data in a broadcast system |
JP2021016181A (ja) * | 2013-10-31 | 2021-02-12 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | 送信方法および送信装置 |
JP7092844B2 (ja) | 2013-10-31 | 2022-06-28 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 送信方法および放送局 |
JP7397916B2 (ja) | 2013-10-31 | 2023-12-13 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 受信方法および端末 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3757857B2 (ja) | データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム | |
JP4000905B2 (ja) | 情報処理システムおよび方法、情報処理装置および方法、記録媒体、並びにプログラム | |
KR101242663B1 (ko) | 패킷 송신 장치, 통신 시스템 및 컴퓨터 판독가능한 기록매체 | |
US7710906B2 (en) | Transmitting and receiving system, transmitting apparatus, transmitting method, receiving apparatus, receiving method, and program | |
JP5016279B2 (ja) | データ通信システム、データ送信装置およびデータ送信方法 | |
US7164680B2 (en) | Scheme for supporting real-time packetization and retransmission in rate-based streaming applications | |
US20060259844A1 (en) | Transmission and reception system, transmitter, transmission method, receiver, reception method, and program | |
JP5094546B2 (ja) | 通信装置、及び通信方法、プログラム | |
US20100257421A1 (en) | Radio Communication Device, Radio Communication System, Program and Radio Communication Method | |
JP6436772B2 (ja) | 受信ビットレートの動的適応方法および関連する受信機 | |
US8930755B2 (en) | Distribution apparatus and distribution method | |
JP5344541B2 (ja) | データ送信装置、送信方法及びプログラム | |
KR20230002784A (ko) | 오디오 및/또는 비디오 콘텐츠 전송을 위한 방법 및 서버 | |
JP2010119133A (ja) | パケット送信装置、通信システム及びプログラム | |
JP2004266741A (ja) | 配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム | |
JP4650573B2 (ja) | 通信装置、通信システム、プログラム、および通信方法 | |
JP4362761B2 (ja) | 送信装置および方法、記録媒体、並びにプログラム | |
JP3927486B2 (ja) | ストリーミング配信装置、ストリーミング配信システム、及びストリーミング配信方法 | |
JP5523163B2 (ja) | 送信装置、送信方法、プログラム | |
JP2006041819A (ja) | ストリーム配信サーバ、移動端末、ストリーム配信システム、およびストリーム配信方法 | |
JP2005136547A (ja) | 通信システム、受信装置および方法、送信装置および方法、記録媒体、並びにプログラム | |
JP2006054721A (ja) | 受信装置および方法、記録媒体、プログラム、並びに通信システム | |
JP2005269236A (ja) | 通信システム、送信装置および方法、受信装置および方法、並びにプログラム | |
JP2006067410A (ja) | 送信装置および方法、プログラム、並びに送受信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060509 |