(57)【特許請求の範囲】
【請求項１】
複数のメディアデータユニットを構成するメディアデータを転送する時間をスケジューリングするための装置であって、該装置は、
前記複数のメディアデータユニットについての全体の平均データスループットと、前記複数のメディアデータユニットを転送するために利用できる最小データ転送レートとに基づいて、前記複数のメディアデータユニットのそれぞれを転送するための最遅時間ｖｉを決定することで、前記複数のメディアデータユニットの該全体のデータスループットが前記最小レートを超えて維持されるように、構成されている、第１決定ユニットと、
過去の転送期間における、前記複数のメディアデータユニットの短期データスループットと前記複数のメディアデータユニットの短期レート最大値とに基づいて、前記複数のメディアデータユニットのそれぞれを転送するために利用できる、最早時間ｗｉを決定するように構成された、第２決定ユニットと、
前記複数のメディアデータユニット毎の転送時間ｕｉをスケジューリングするように構成された、スケジューリングユニットとを備え、
ｖｉ≧ｗｉである場合は、前記スケジューリングユニットは、前記決定された最早時間と、前記複数のメディアデータユニットの前記１つが転送のために該装置に当初配送された時間と、のうちのいずれか大きい方を、前記複数のメディアデータユニットの前記１つについての前記転送時間として選択し、
そうでない場合は、前記スケジューリングユニットは、以下の数式によって前記転送時間ｕｉをスケジューリングする、
【数１】
0005588001.tif 000013
上記数式において、
ｔは、現在の時間であり、
Ｃ（ｔ）は、前記メディアデータについての時間間隔ＴＳにおける長期データスループットを表し、
ｕ０は、１番目のメディアデータユニットの前記転送時間を表し、
ｓｉは、ｉ番目のメディアデータユニットのサイズを表し、
ｔｉは、ｉ番目のメディアデータユニットが転送のために当該装置に当初配送された時間を表す、
ことを特徴する装置。
【請求項２】
前記複数のメディアデータユニット毎の前記スケジューリングされた転送時間と、現在の時間とを比較するように構成されている、比較ユニットをさらに備え、
前記スケジューリングされた転送時間が現在の時間以下の場合には、前記比較ユニットは、前記複数のメディアデータユニットのそれぞれを直ちに転送し、
前記スケジューリングされた転送時間が前記現在の時間を越える場合には、前記比較ユニットは、前記現在の時間と前記スケジューリングされた転送時間との差に等しい時間待機し、その後、前記複数のメディアデータユニットのそれぞれを転送する、ことを特徴とする、請求項１に記載の装置。
【請求項３】
前記メディアデータを転送するレートが固定であることを特徴とする、請求項１に記載の装置。
【請求項４】
前記メディアデータは、ＶＢＲ符号化メディアストリームを構成し、
前記最小データ転送レートは、短期可変最小レート下限であり、かつ、前記メディアデータのメディア再生時間に依存することを特徴とする、請求項１に記載の装置。
【請求項５】
前記メディアデータは、ライブストリーミングを構成し、
前記最小データ転送レートは、短期最小レート下限であり、
当該装置は、メディアデータユニットが生成されるレートまたは時間を計測し、かつ、該生成されたレートに基づいて前記短期最小レート下限を推定する、推定ユニットをさらに備えることを特徴とする、請求項１に記載の装置。
【請求項６】
当該装置は、サーバホストにおけるサーバアプリケーション層とネットワークトランスポート層との間に配置されていることを特徴とする、請求項１に記載の装置。
【請求項７】
当該装置は、サーバホスト側にあるゲートウェイに配置されていることを特徴とする、請求項１に記載の装置。
【請求項８】
前記複数のメディアデータユニットのうちのメディアデータユニットｉについての前記最遅時間ｖｉは、第１ルールである、
【数２】
0005588001.tif 000014
によって計算され、
上記数式において、
ｔは、現在の時間であり、
Ｃ（ｔ）は、前記メディアデータについての時間間隔ＴＬにおける長期データスループットを表し、
ｕ０は、１番目のメディアデータユニットの前記転送時間を表し、
ｓｉは、ｉ番目のメディアデータユニットのサイズを表し、
ｔｉは、ｉ番目のメディアデータユニットが転送のために当該装置に当初配送された時間を表し、
Ｒｍｉｎは、許容される最小転送レートを表すことを特徴とする、請求項１に記載の装置。
【請求項９】
前記複数のメディアデータユニットのうちのメディアデータユニットｉについての前記最早時間ｗｉは、第２ルールである、
【数３】
0005588001.tif 000015
によって計算され、
上記数式において、
ｔは、現在の時間であり、
ρ∈［Ｒｍｉｎ／Ｒｍａｘ，１］は、構成可能なパラメータであり、
Ｃ（ＴＳ，ｔ）は、前記メディアデータについての時間間隔ＴＳにおける短期データスループットを表し、
ｕ０は、１番目のメディアデータユニットについての前記転送時間を表し、
ｓｉは、ｉ番目のメディアデータユニットのサイズを表し、
ｔｉは、ｉ番目のメディアデータユニットが転送のために当該装置に当初配送された時間を表し、
Ｒｍａｘは、許容される最大転送レートを表し、
Ｒｍｉｎは、許容される最小転送レートを表すことを特徴とする、請求項１に記載の装置。
【請求項１０】
前記絶対最早時間は前記第２ルールから決定され、前記第２ルールにおいて、ρには数値１が設定されることを特徴とする、請求項９に記載の装置。
【請求項１１】
複数のメディアデータユニットを構成するメディアデータの受信時間をスケジューリングするための装置であって、該装置は、
前記複数のメディアデータユニットについての最大転送レートを取得するための、取得ユニットと、
前記最大転送レートと、過去のある時間間隔における、前記複数のメディアデータユニットについての短期データスループットとに基づいて、前記複数のメディアデータユニットのそれぞれを受信するために利用できる最早時間を決定する、第１決定ユニットと、
前記複数のメディアデータユニットのそれぞれを受信するために利用できる最遅時間ｖｉを決定する、第２決定ユニットであって、該最遅時間ｖｉは、以下のルール、
ｖｉ≦ｔ０＋ｐｉ＋Δ
上記数式において、
ｐｉは、メディアデータユニットｉを再生するための復号化時間であり、
Δは、ｔ０からメディアの再生が開始されるまでの時間であり、
ｔ０は、前記複数のメディアデータユニットのうちの１番目のメディアデータユニットの受信時間を表す、
により決定される、第２決定ユニットと、
前記複数のメディアデータユニットのそれぞれが再生のために復号化される前に、前記複数のメディアデータユニットの当該それぞれを一時的に記憶し、かつ、前記記憶されたメディアデータユニットについての前記受信時間を、前記決定された最早時間よりも遅くなるようにスケジューリングするように構成されている、スケジューリングユニットと、を備えることを特徴とする、装置。
【請求項１２】
前記スケジューリングされた受信時間と、現在の時間とを比較するように構成されている、比較ユニットをさらに備え、
前記スケジューリングされた転送時間が前記現在の時間以下の場合には、前記比較ユニットは、前記複数のメディアデータユニットのそれぞれを直ちに受信し、
前記スケジューリングされた転送時間が前記現在の時間を越える場合には、前記比較ユニットは、前記現在の時間と前記スケジューリングされた転送時間との差に等しい時間待機し、その後、前記複数のメディアデータユニットのそれぞれを受信する、ことを特徴とする、請求項１１に記載の装置。
【請求項１３】
前記最大転送レートを推定するための、推定ユニットをさらに備えることを特徴とする、請求項１１に記載の装置。
【請求項１４】
当該装置は、クライアントホストにおけるサーバアプリケーション層とネットワークトランスポート層との間に配置されていることを特徴とする、請求項１１に記載の装置。
【請求項１５】
当該装置は、クライアントホスト側にあるゲートウェイに配置されていることを特徴とする、請求項１１に記載の装置。
【請求項１６】
時間ｔにおける前記短期データスループットは、Ｒｍｉｎ（ｔ）によって表され、また、前記短期データスループットは、
【数４】
0005588001.tif 000016
から推定され、
上記数式において、
ｔは、メディアデータの再生時間であり、
ｓｉは、メディアデータユニットｉのサイズであり、
ＴＬは、平均化時間間隔であり、
α（α≧１）は、倍率であることを特徴とする、請求項１１に記載の装置。
【請求項１７】
前記第１決定ユニットは、前記最早時間ｗｉを以下のルール、
ｗｉ＝min｛t｜(C(Ts,t)min｛Ts,t-t0｝+si)/min｛Ts,t-t0｝≦ρRmax｝
により決定し、
上記数式において、
ｔは、現在の時間であり、
ρ∈［Ｒｍｉｎ／Ｒｍａｘ，１］は、構成可能なパラメータであり、
Ｃ（ＴＳ，ｔ）は、前記メディアデータについての時間間隔Ｔｓにおける短期データスループットを表し、
ｔ０は、１番目のメディアデータユニットについての受信時間を表し、
ｔｉは、ｉ番目のメディアデータユニットについてスケジューリングされた受信時間を表し、
Ｒｍａｘは、許容される最大転送レートを表し、
Ｒｍｉｎは、許容される最小転送レートを表すことを特徴とする、請求項１１に記載の装置。
【請求項１８】
複数のメディアデータユニットを構成するメディアデータを転送する時間をスケジューリングするための方法であって、該方法は、
全体の平均データスループットと、前記複数のメディアデータユニットを転送するために利用できる最小データ転送レートとに基づいて、前記複数のメディアデータユニットのそれぞれを転送するための最遅時間ｖｉを決定することで、前記複数のメディアデータユニットの該全体のデータスループットが前記最小レートを超えて維持される、工程と、
過去の転送期間における、前記複数のメディアデータユニットの短期データスループットと前記複数のメディアデータユニットの短期レート最大値とに基づいて、前記複数のメディアデータユニットのそれぞれを転送するために利用できる最早時間ｗｉを決定する工程と、
前記複数のメディアデータユニット毎の転送時間ｕｉをスケジューリングする工程と、
を含み、
該スケジューリングする工程には、
ｖｉ≧ｗｉである場合は、前記決定された最早時間と、前記メディアデータユニットが転送のために当初配送された時間と、のうちのいずれか大きい方を、前記メディアデータユニットについての前記転送時間として選択し、
そうでない場合は、前記スケジューリングユニットは、以下の数式によって前記転送時間ｕｉをスケジューリングする、
【数５】
0005588001.tif 000017
上記数式において、
ｔは、現在の時間であり、
Ｃ（ｔ）は、前記メディアデータについての時間間隔ＴＳにおける長期データスループットを表し、
ｕ０は、１番目のメディアデータユニットの前記転送時間を表し、
ｓｉは、ｉ番目のメディアデータユニットのサイズを表し、
ｔｉは、ｉ番目のメディアデータユニットが転送のために当該装置に当初配送された時間を表す、
ことがさらに含まれる、方法。
【請求項１９】
メディアデータユニットｉの前記最遅時間は、ｖｉによって表され、また、前記最遅時間は、第１ルールである、
【数６】
0005588001.tif 000018
によって計算され、
上記数式において、
ｔは、現在の時間であり、
Ｃ（ｔ）は、前記メディアデータについての時間間隔ＴＬにおける長期データスループットを表し、
ｕ０は、１番目のメディアデータユニットの前記転送時間を表し、
ｓｉは、ｉ番目のメディアデータユニットのサイズを表し、
ｔｉは、ｉ番目のメディアデータユニットが転送のために前記装置に当初配送された時間を表し、
Ｒｍｉｎは、許容される最小転送レートを表すことを特徴とする、請求項１８に記載の方法。
【請求項２０】
前記複数のメディアデータユニットのうちのメディアデータユニットｉについての前記最早時間ｗｉは、第２ルールである、
【数７】
0005588001.tif 000019
によって計算され、
上記数式において、
ｔは、現在の時間であり、
ρ∈［Ｒｍｉｎ／Ｒｍａｘ，１］は、構成可能なパラメータであり、
Ｃ（ＴＳ，ｔ）は、前記メディアデータについての時間間隔ＴＳにおける短期データスループットを表し、
ｕ０は、１番目のメディアデータユニットについての前記転送時間を表し、
ｓｉは、ｉ番目のメディアデータユニットのサイズを表し、
ｔｉは、ｉ番目のメディアデータユニットが転送のために当該装置に当初配送された時間を表し、
Ｒｍａｘは、許容される最大転送レートを表し、
Ｒｍｉｎは、許容される最小転送レートを表すことを特徴とする、請求項１９に記載の方法。
【請求項２１】
前記スケジューリングされた転送時間と現在の時間とを比較する工程と、
前記スケジューリングされた転送時間が前記現在の時間以下の場合には、前記複数のメディアデータユニットのそれぞれを直ちに転送する工程と、
前記スケジューリングされた転送時間が前記現在の時間を越える場合には、前記現在の時間と前記スケジューリングされた転送時間との差に等しい時間待機し、その後、前記複数のメディアデータユニットのそれぞれを転送する工程と、をさらに含む、請求項１８に記載の方法。
【請求項２２】
前記メディアデータを転送するレートが固定であることを特徴とする、請求項１８に記載の方法。
【請求項２３】
前記メディアデータは、ＶＢＲ符号化メディアストリームを構成し、
前記最小データ転送レートは、短期可変最小レート下限であり、かつ、前記メディアデータのメディア再生時間に依存することを特徴とする、請求項１８に記載の方法。
【請求項２４】
前記メディアデータはライブストリーミングを構成し、
前記最小データ転送レートは、短期最小レート下限であり、
当該方法は、メディアデータユニットが生成されるレートまたは時間を計測する工程と、該生成されたレートに基づいて前記短期最小レート下限を推定する工程とをさらに含む、請求項１８に記載の方法。
【請求項２５】
当該方法は、サーバホストにおけるサーバアプリケーション層とネットワークトランスポート層との間にて実行されることを特徴とする、請求項１８に記載の方法。
【請求項２６】
当該方法は、サーバホスト側にあるゲートウェイにて実行されることを特徴とする、請求項１８に記載の方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［関連出願］
本出願は、２００９年８月２１日付で出願された、発明の名称が「メディアデータの転送時間をスケジューリングするためのシステム及び方法」である、米国特許仮出願第６１／２３５，９８７号の利益を主張する。米国出願第６１／２３５，９８７号の内容は、その全体が、本出願の一部として参照により本明細書に組み込まれる。
［技術分野］
本出願は、メディアデータの転送時間をスケジューリングするための装置及び方法に関する。
［背景］
メディアストリーミングアプリケーションにおいて、データストリームは一連のデータセグメントから構成されており、該データセグメントは、所定のデータレート（或いは、可変ビットレートで符号化されたメディアデータの場合は、データレートプロファイル）でレシーバ（ｒｅｃｅｉｖｅｒ）へ搬送（配信）されることとなる。それゆえ、レシーバは、後続のデータセグメントを受信すると同時に、受信したデータセグメントの再生を開始し得る。データセグメントに対して指定された再生時間の前に該データセグメントがレシーバへ搬送され得る限り、レシーバは、中断することなくメディアを連続して再生し続けることができる。
【０００２】
メディアデータの搬送は、トランスポートプロトコルによって実行される。トランスポートプロトコルには、例えばＲＴＳＰ／ＲＴＰのように、メディアのストリーミング用に具体的に設計されたものがある。しかし、最近では、多くのメディアコンテンツは標準のＨＴＴＰプロコトルを用いて搬送され、そしてまた、標準のＨＴＴＰプロコトルは、ＴＣＰを用いてサーバからクライアントへデータを転送する。これによって、新たな問題が生じる。なぜなら、ＨＴＴＰ及びＴＣＰのいずれもが、本来はメディアストリーミングアプリケーション用に設計されたものではないからである。
【０００３】
具体的には、ＴＣＰは、２つのタスクを実行する内蔵型輻輳制御メカニズムを有する。内蔵型輻輳制御メカニズムの１つ目のタスクは、転送レートを徐々に上げて、送信者（ｓｅｎｄｅｒ）からレシーバに到る経路における利用可能な帯域幅を検索することである。内蔵型輻輳制御メカニズムの２つ目のタスクは、パケット損失（ｐａｃｋｅｔ  ｌｏｓｓ）を監視することによってネットワークの輻輳を検知することであり、それによって、輻輳ウィンドウによって制御される転送レートを低下させて、ネットワークの輻輳を緩和し得る。典型的なＴＣＰフローにおいては、ネットワーク帯域幅の制限を超えるまで、転送レートは徐々に上昇される。転送レートがネットワーク帯域幅の制限を超えると、パケット損失が生じるため、転送レートを低下させるために輻輳制御メカニズムが起動される。
【０００４】
しかしながら、（ａ）メディアストリームの要求帯域がわかっている場合、また、（ｂ）ネットワークがメディアストリームの要求帯域を充分に満たす帯域を有している場合には、この輻輳制御メカニズムによって無用なパケット損失が生じるだろう。例えば、メディアストリームがデータレート（データ転送速度）２００ｋｂｐｓで符号化されており、かつ、ネットワークが（メディアストリームには極めて充分である）５００ｋｂｐｓの利用可能な帯域を有すると仮定すると、サーバ（例えばウェブサーバ）を用いてメディアストリームが搬送される場合に、当該ウェブサーバは、ＨＴＴＰプロトコルを用いてメディアストリームデータをレシーバに送信しようとするであろうし、ＨＴＴＰプロトコルは、ＴＣＰを用いて実際にデータを搬送するであろう。
【０００５】
そして、セッションの開始時には、サーバは低いデータレートで送信のみを行うが、ＴＣＰが輻輳ウィンドウを拡大するにつれて、転送レートはそれに伴って徐々に上昇する。最終的に、転送レートはネットワークが有する５００ｋｂｐｓの帯域制限を超え、それゆえ、パケット損失が生じることとなる。ＴＣＰは認識していないが、実際には、輻輳はＴＣＰ自身が誘発するものである。この輻輳によって、ＴＣＰの輻輳制御メカニズムが起動され、ネットワークの輻輳に対処するために、転送レートが著しく低下する。転送レートが再び上昇するまでにはある程度の時間がかかるだろう。ゆえに、達成される全体のスループットは、ネットワークの帯域（５００ｋｂｐｓ）よりも実質的に低く、場合によっては、メディアストリームのデータレート（２００ｋｂｐｓ）よりもさらに低くなることもある。また、後者の場合（スループットがメディアストリームのデータレートよりもさらに低くなった場合）には、再生に中断が生じるだろう。
【０００６】
図１では、ＴＣＰスループットを、３Ｇモバイルネットワークを介してＨＴＴＰを用いて２５０ｋｂｐｓのメディアをストリーミングするための時間に対してプロットすることによって、上述の問題を説明する。ＴＣＰが別の帯域幅を探し続ける間、転送レートは、常に５００ｋｂｐｓ付近まで上昇していることがわかる。図２に示されるデータの深い落ち込みは、ストリーミングの継続時間全体に渡って繰り返し生じた自己誘導輻輳である。本実験において、ネットワークは（メディアストリームのデータレート２５０ｋｂｐｓの２倍である）５００ｋｂｐｓまで対応可能であるが、達成された全体の平均スループットは、実際には、２５０ｋｂｐｓ未満であった。ゆえに、ストリーミングの継続時間全体に渡って、再生が繰り返し中断され、低品質のサービスとなった。
[概要]
本出願における１つの局面によれば、複数のメディアデータユニットを構成するメディアデータを転送する時間をスケジューリングするための装置が開示される。該装置は、前記複数のメディアデータユニットのそれぞれを転送するための最遅時間（最後の時間、ａ  ｌａｔｅｓｔ  ｔｉｍｅ）を決定するように構成された、第１決定ユニットと、前記複数のメディアデータユニットのそれぞれを転送するための、最早時間（最先の時間、ａｎ  ｅａｒｌｉｅｓｔ  ｔｉｍｅ）と絶対最早時間とを決定するように構成された、第２決定ユニットと、前記複数のメディアデータユニット毎の転送時間をスケジューリングするように構成された、スケジューリングユニットとを備え、前記複数のメディアデータユニットの１つについて決定された最遅時間が、前記１つのメディアデータユニットについて決定された最早時間以上である場合は、スケジューリングユニットは、決定された最早時間と、複数のメディアデータユニットの前記１つが転送のために該装置に当初配送された時間と、のうちのいずれか大きい方を、複数のメディアデータユニットの前記１つについての転送時間として選択し、そうでない場合は、前記スケジューリングユニットは、前記決定された絶対最早時間を転送時間としてスケジューリングする。
【０００７】
本出願における別の局面によれば、複数のメディアデータユニットを構成するメディアデータの受信時間をスケジューリングするための装置が開示される。該装置は、前記複数のメディアデータユニットについての最大転送レートを取得するための、取得（回収）ユニットと、前記最大転送レートと、過去のある時間間隔における、前記複数のメディアデータユニットについての短期データスループットとに基づいて、前記複数のメディアデータユニットのそれぞれを受信するための最早時間を決定する、第１決定ユニットと、前記決定された短期データスループットに基づいて、前記複数のメディアデータユニットのそれぞれを受信するための最遅時間を決定する、第２決定ユニットと、前記複数のメディアデータユニットのそれぞれに関する前記受信時間を、前記決定された最早時間から前記決定された最遅時間までの範囲内で最適化するための、スケジューリングユニットと、を備える。
【０００８】
本出願におけるまた別の局面によれば、メディアデータの受信時間をスケジューリングするための装置が開示される。該装置は、過去の転送期間におけるメディアデータについての短期データスループットを計算し、該計算された短期データスループットに基づいて、メディアデータのメディアデータユニットを受信するための最早時間を決定するように構成された、最早時間決定ユニットと、メディアデータユニットのそれぞれを受信する時間を、計算された最早時間よりも遅くなるようにスケジューリングするように構成された、スケジューリングユニットと、を備える。
【０００９】
本出願におけるもう１つの局面によれば、複数のメディアデータユニットを構成するメディアデータを転送する時間をスケジューリングするための方法が開示される。該方法は、前記複数のメディアデータユニットのそれぞれを転送するための最遅時間を決定する工程と、前記複数のメディアデータユニットのそれぞれを転送するための、最早時間と絶対最早時間とを決定する工程と、前記複数のメディアデータユニット毎の転送時間をスケジューリングする工程とを含み、該スケジューリングする工程には、前記複数のメディアデータユニットの１つについて決定された最遅時間が、前記メディアデータユニットについて前記決定された最早時間以上である場合は、前記決定された最早時間と、前記メディアデータユニットが転送のために配送された時間と、のうちのいずれか大きい方を、前記メディアデータユニットについての前記転送時間として選択し、そうでない場合は、前記決定された絶対最早時間を前記転送時間としてスケジューリングすることがさらに含まれる。
【００１０】
本出願における別の局面によれば、メディアデータの受信時間をスケジューリングするための方法が開示される。該方法は、前記メディアデータの複数のメディアデータユニットを受信する工程と、再生するために前記複数のメディアデータユニットのそれぞれが復号化されるようにスケジューリングされている時間と、前記複数のメディアデータユニットの最大転送レートとを取得する工程と、最大転送レートと、過去のある時間間隔における、前記複数のメディアデータユニットについての短期データスループットとに基づいて、前記複数のメディアデータユニットのそれぞれを受信するための最早時間を決定する工程と、前記の決定された時間に基づいて、前記複数のメディアデータユニットのそれぞれを受信するための最遅時間を決定する工程と、前記複数のメディアデータユニットのそれぞれに関する受信時間を、決定された最早時間から決定された最遅時間までの範囲内で最適化する工程と、を含む。
【図面の簡単な説明】
【００１１】
【図１】先行技術における、３Ｇモバイルネットワーク中の時間に対するＴＣＰスループットを示す説明図である。
【図２】サーバベースのアプリケーション層ソリューションに関する２つの設計モデルを示す説明図である。
【図３】本出願における１つの実施形態によるスケジューラを示すブロック図である。
【図４】本出願における別の実施形態によるスケジューラを示すブロック図である。
【図５】適応型メディアデータレートを推定するためのソリューションを示す説明図である。
【図６】本出願における別の実施形態によるスケジューラを示すブロック図である。
【図７】本出願におけるもう１つの実施形態によるスケジューラを示すブロック図である。
【図８】本出願におけるさらなるの実施形態によるスケジューラを示すブロック図である。
【図９】本出願におけるさらに別の実施形態によるスケジューラを示すブロック図である。
【図１０】（ａ）は、サーバ側（ａ）に実装されたネットワークベースのソリューションを示す説明図であって、（ｂ）は、クライアント側（ｂ）に実装されたネットワークベースのソリューションを示す説明図である。
【図１１】本出願における１つの実施形態による、メディアデータについての転送時間のスケジューリングを説明する、フローチャートである。
【図１２】本出願における別の実施形態による、メディアデータについての転送時間のスケジューリングを説明する、フローチャートである。
【発明を実施するための形態】
【００１２】
［詳細な説明］
以下、添付の図面を参照して、本出願における例示的実施形態を説明する。
以下に説明される実施形態において、データストリームまたはメディアデータは、サーバまたはクライアントに位置し得るスケジューラにて処理される。本説明中では、スケジューラがサーバにあるソリューションをサーバベースのソリューションと称し、スケジューラがクラインアントにあるソリューションをクライアントベースのソリューションと称する。さらに、ネットワークベースのソリューションについても説明する。
１．サーバベースのソリューション
サーバベースのソリューションは、メディアストリームデータを搬送するサーバの一部として実装されるように設計されている。また、図２に示されるように、サーバベースのソリューションは、アプリケーションサーバの一部として、あるいは、アプリケーションサーバと共に実行される補完的なシステムモジュールとして、実装されてもよい。サーバベースのソリューションにおける主要な要素は、転送スケジューラである。転送スケジューラは、サーバアプリケーション層とネットワークトランスポート層との間のインターフェースである。転送スケジューラの機能は、搬送されたデータの転送レートを間接的に制御する方法として、アプリケーション層からネットワークトランスポート層までのデータフローを制御することである。
【００１３】
図３は、本出願における１つの実施形態によるスケジューラ１００を示す説明図である。転送スケジューラ１００は、２つの入力パラメータ、すなわち、（ａ）最小データレートＲｍｉｎと（ｂ）最大転送レートＲｍａｘとを用いて動作し得る。ｔｉ及びｓｉ（ここで、ｉは０、１、…）を、それぞれ、搬送のための転送スケジューラに配送されたｉ番目のメディアデータユニットの時間及び（バイトでの）サイズとする。ｕｉを、メディアデータユニットｉが、搬送のための転送プロトコルに配送された時の実際の時間、すなわち、スケジューリングされた転送時間とする。転送スケジューラは、｛ｔｉ、ｓｉ｝が与えられた場合に、（ａ）長期平均データスループットがＲｍｉｎ以上であり、かつ、（ｂ）短期データレートがＲｍａｘを超えないように、｛ｕｉ｝を決定することを目的とする。
【００１４】
図３に示されるように、転送スケジューラ１００は、最遅時間決定ユニット１０１と、最早時間決定ユニット１０２と、スケジューリングユニット２０３と、比較ユニット１０４とを有する。
【００１５】
原則として、メディアデータユニットｉ＝０は、常に、直ちに転送される。すなわち、ｕ０＝ｔ０である。また、後続のメディアデータユニット（すなわち、ｉ＞０）に対してスケジューリングされた転送時間は、ユニット１０１〜１０４から決定されるが、これについては以下に説明する。
【００１６】
１．１．例１−固定レートメディアデータ
１）最遅時間決定ユニット１０１
本例において、最遅時間決定ユニット１０１は、メディアデータユニットのうちの、ｉ番目のメディアデータユニットを転送するための最遅時間ｖｉを決定するように動作する。具体的には、最遅時間決定ユニット１０１は、まず、全体の平均データスループットを以下の数式により決定する。
【００１７】
【数１】
0005588001.tif 000002
【００１８】
上記数式において、ＴＬは、長期平均化ウィンドウ持続時間を調整するための設定可能なパラメータであり、ｔは、現在の時間である。ＴＬ＝∞とおいて、平均化ウィンドウは、全体のメディアセッションを網羅し、また、全体の平均データスループットに相当する。次に、最遅時間決定ユニット１０１は、全体のデータスループットが最小レートＲｍｉｎを超えて維持され得るように、以下の数式から、ｉ番目のメディアデータユニットを転送するための最遅時間ｖｉを決定する。
【００１９】
【数２】
0005588001.tif 000003
【００２０】
２）最早時間決定ユニット１０２
最早時間決定ユニット１０２は、Ｃ（ＴＳ，ｔ）にて表される、過去ＴＳ秒間の短期データスループットを決定する。ここで、ＴＳは平均化ウィンドウ持続時間を調整するための設定可能なパラメータであり、ｔは現在の時間である。
【００２１】
【数３】
0005588001.tif 000004
【００２２】
同様に、最早時間決定ユニット１０２は、ｉ番目のメディアデータユニットを転送するための最早時間を、以下の数式によって決定するように動作する。
【００２３】
【数４】
0005588001.tif 000005
【００２４】
上記数式において、ρ∈［Ｒｍｉｎ／Ｒｍａｘ，１］は、メディアストリームの目標短期データスループットを調整するための設定可能なパラメータである。一般的には、目標データスループットをＲｍｉｎに設定することは望ましくない。なぜなら、メディアデータユニットは、トランスポート層に配送された直後に転送され得るという保証が無いからである。例えば、ＴＣＰが、輻輳ウィンドウを大幅に縮小させるような輻輳制御を開始させたならば、ＴＣＰは、当該輻輳ウィンドウが回復するまで、新たに配送されたメディアデータを転送しないだろう。それゆえ、さらなる遅延によって、スケジューリングされた時間を超えてｗｉが増加し、その結果、データスループットは予測を下回ることとなるだろう。ゆえに、十分な量のメディアデータを予定よりも早く転送して上述の余分な遅延を吸収し得るように、Ｒｍｉｎよりも高いデータスループットを目標とすることが望ましい。
【００２５】
その一方で、目標データスループットをＲｍａｘに設定することも望ましくない。なぜなら、Ｒｍａｘは、ネットワークの最大帯域幅容量を表すために選択されることもあるからである。多くのネットワークでは、最大帯域幅容量は保証されていない。最大帯域幅容量は、例えば、シグナルの品質、競合するトラフィック等の他の要因の影響を受け得るため、その時々で変動し得る。Ｒｍａｘによって、短期転送レートがネットワークの最大容量を超えないことを確実とさせることを目的とする。ここで、ネットワークの最大容量は、ハードリミット（ｈａｒｄ  ｌｉｍｉｔ）であり、このリミットを超えると輻輳が生じる。そのため、Ｒｍａｘより低いがＲｍｉｎよりも高いデータスループットを目標とすることによって、システムは、自己誘導のネットワーク輻輳を引き起こすことなく、予定よりも早くメディアデータを転送し得る。
【００２６】
３）スケジューリングユニット１０３
決定された最遅転送時間ｖｉと最早転送時間ｗｉとを用いて、スケジューリングユニット１０３は、メディアデータユニット毎の転送時間をスケジューリングするように構成されている。具体的には、スケジューリングユニット１０３は、メディアデータユニット毎のスケジューリングされた転送時間と現在の時間ｔとを比較し、スケジューリングされた転送時間ｕｉが現在の時間ｔ以下の場合には（スケジューリングされた転送時間ｕｉが現在の時間ｔを越えていない場合は）、スケジューリングユニット１０３は、直ちに各メディアデータユニットを転送する。また、スケジューリングされた転送時間ｕｉが現在の時間ｔを越えている場合には（スケジューリングされた転送時間ｕｉが現在の時間ｔよりも後である場合は）、（ｔ−ｕｉ）に等しい時間待機した後に、ｉ番目のメディアデータユニットを転送する。１つの実施形態では、ｖｉ≧ｗｉならば、スケジューリングユニット１０３は、スケジューリングされた転送時間をｗｉとして設定する。すなわち、以下の数式にて表される。
【００２７】
ui＝max｛wi，ti｝，  if vi≧wi      （式２．５）
そうでなければ、ｖｉ＜ｗｉならば、たとえメディアデータユニットｉが最早転送時間ｗｉにて転送されるべきであっても、全体のデータスループットは既に最小レートＲｍｉｎより低くなっていることを示唆する。この場合、既に最小レートＲｍｉｎが維持されていないので、スケジューリングユニット１０３は、直ちにメディアデータユニットを転送すべきである。しかしながら、その時点の短期データレートによっては、この転送は最適ではないかもしれない。なぜなら、Ｒｍａｘを超えるレートで転送することによって自己誘導のネットワーク輻輳が引き起こされ、当該ネットワーク輻輳は、さらに、トランスポート層によって達成可能なデータスループットを著しく低下させるからである。
【００２８】
それゆえ、ｖｉ＜ｗｉの場合は、スケジューリングユニット１０３は、短期レートの最大値Ｒｍａｘを超えないように、メディアデータが最早時間にて転送されるようにメディアデータをスケジューリングする。すなわち、以下の数式にて表される。
【００２９】
【数５】
0005588001.tif 000006
【００３０】
４）比較ユニット１０４
最後に、比較ユニット１０４は、スケジューリングされた転送時間ｕｉと現在の時間ｔとを比較する。スケジューリングされた転送時間ｕｉが現在の時間ｔ以下の場合には、比較ユニット１０４は、直ちにｉ番目のメディアデータユニットを転送する。そうでなければ、スケジューリングされた転送時間ｕｉが現在の時間ｔを越えている場合には、比較ユニット１０４は、（ｔ−ｕｉ）に等しい時間待機した後に、ｉ番目のメディアデータユニットを転送する。
【００３１】
１．２．例２−ＶＢＲ符号化メディアストリーム
例１では、最小レート下限（最小レート制限）Ｒｍｉｎをメディアデータレートと一致させて構成し得るように、メディアデータレートは固定であると仮定されていた。ビットレートプロファイルが既知の場合は、転送スケジューラ１００は、可変ビットレート（ＶＢＲ）符号化メディアストリームの拡張についてのストリーミングをサポートするまでに拡大され得る。
【００３２】
ｐｉを、メディアデータユニットｉについての所定の再生時間とする。｛ｐｉ｝の集合が事前に与えられているならば、スケジューラは、例１にて説明されたスケジューリング方法に、ｐｉを組み入れてもよい。具体的には、ＶＢＲ符号化メディアストリームには長期平均データスループットが有用ではないので、最小レート下限Ｒｍｉｎを修正する。長期平均データスループットは、短期可変最小レート下限Ｒｍｉｎ（ｔ）と置き換えられる。短期可変最小レート下限Ｒｍｉｎ（ｔ）は、メディア再生時間に依存する関数である。本例において、スケジューラ１００は、さらにＲｍｉｎ（ｔ）決定ユニット１０５を備えてもよい。Ｒｍｉｎ（ｔ）決定ユニット１０５は、以下の数式から、短期可変最小レート下限Ｒｍｉｎ（ｔ）を決定する。
【００３３】
【数６】
0005588001.tif 000007
【００３４】
上記数式において、ｔはメディアストリームの再生時間であり、ｓｉはメディアデータユニットｉのサイズであり、α（α≧１）は、最小レート下限を微調整するための倍率である。
【００３５】
定義されたＲｍｉｎ（ｔ）を用いて、スケジューラ１００は、以下のように、転送のためにメディアデータユニットのスケジューリングを行う。まず、メディアデータユニットｉ＝０は、常に、直ちに転送される。次に、後続のメディアデータユニット（すなわち、ｉ＞０）に対してスケジューリングされた転送時間は、以下の手順から決定されるが、当該手順についても、ユニット１０１〜１０４を参照して説明する。
【００３６】
最遅時間決定ユニット１０１は、全体の平均データスループットＣ（ｔ）を数式（２．１）により決定する。次に、最遅時間決定ユニット１０１は、短期データスループットが最小レートＲｍｉｎ（ｔ）を超えて維持され得るように、以下の数式から、メディアデータユニットｉを転送するための最遅時間を決定する。
【００３７】
【数７】
0005588001.tif 000008
【００３８】
次に、最早時間決定ユニット１０２は、短期データスループットＣ（ＴＳ，ｔ）を数式（２．３）によって決定し、この短期データスループットＣ（ＴＳ，ｔ）を用いて、メディアデータユニットｉを転送するための最早時間ｗｉを、数式（２．４）によって決定する。
【００３９】
決定された最遅転送時間ｖｉと最早転送時間ｗｉとを用いて、スケジューリングユニット１０３は、転送スケジューラにて、メディアデータユニット毎の転送時間をスケジューリングするように構成されている。具体的には、ｖｉ≧ｗｉならば、スケジューリングユニット１０３は、スケジューリングされた転送時間ｕｉをｗｉとして設定する。すなわち、以下の数式にて表される。
【００４０】
ui＝max｛wi，ti｝，  if vi≧wi        （式２．９）
そうでなければ、ｖｉ＜ｗｉならば、たとえメディアデータユニットｉが最早転送時間ｗｉにて転送されるべきであっても、全体のデータスループットは既に最小レートＲｍｉｎ（ｔ）より低くなっていることを示唆する。この場合、スケジューリングユニット１０３は、短期レートの最大値Ｒｍａｘを超えないように、メディアデータが最早時間にて転送されるようにメディアデータをスケジューリングする。すなわち、以下の数式にて表される。
【００４１】
【数８】
0005588001.tif 000009
【００４２】
最後に、比較ユニット１０４は、ｕｉと現在の時間ｔとを比較する。ｕｉ≦ｔならば、スケジューリングされた転送時間が既に経過しており、スケジューラは、直ちに、メディアデータユニットを、搬送のため、ネットワークトランスポート層へ配送する。そうでなければ、ｕｉ＞ｔならば、比較ユニット１０４は、（ｔ−ｕｉ）に等しい時間待機した後に、メディアデータユニットを、搬送のため、ネットワークトランスポート層へ配送する。
１．３．例３−メディアデータレート推定の拡張
ライブストリーミングのようなアプリケーションでは、正確なメディアデータレートは、事前には（ａ  ｐｒｉｏｒｉ）わからないかもしれない。本例では、データ生成プロセスを監視してメディアデータレートを推定することによって、この問題に対処する。図５は、該システムにおけるデータフローを示す。外部のメディアエンコーダは、データレートが未知の符号化メディアデータユニットを生成し、クライアントに対してストリーミングするために、該符号化メディアデータユニットを（例えば、ネットワークを通して、あるいは、共有のストレージ装置を通して）サーバへ配送する。符号化データレートは未知であるが、やはり、メディアデータユニットが生成されるレートとは関連がある。ゆえに、メディアデータユニットが生成されるレートを計測することによって、転送スケジューラは、Ｒｍｉｎ（ｔ）を適宜推定して適合させる。
【００４３】
具体的には、本例では、スケジューラ１００は、図６に示されるように、推定ユニット１０６をさらに備えてもよい。推定ユニット１０６は、短期最小レート下限Ｒｍｉｎ（ｔ）を推定する。ｇｉを、メディアデータユニットｉの生成時間とする。推定ユニット１０６は、以下の数式によって短期最小レート下限Ｒｍｉｎ（ｔ）を推定する。
【００４４】
【数９】
0005588001.tif 000010
【００４５】
上記数式において、ｔはメディアストリームの再生時間であり、ｓｉはメディアデータユニットｉのサイズであり、ＴＬは平均化ウィンドウ持続時間であり、α（α≧１）は、最小レート下限を微調整するための倍率である。
【００４６】
ユニット１０１〜１０４によってなされるその他のスケジューリング手順は、例２における数式（２．８）から（２．１０）を参照して説明されたスケジューリング手順と同様である。
【００４７】
このモデルには潜在的な問題が１つあり、その問題は、メディアエンコーダが、転送データユニットよりも著しく大きいメディアデータユニットを出力する場合に生じる。例えば、転送スケジューラが、キロバイト（ＫＢ）の単位で転送用データをスケジューリングする一方で、メディアエンコーダは、メガバイト（ＭＢ）という大きな量でメディアデータを出力することがある。これによって２つの問題が生じる。１つ目の問題は、スケジューラ１００は、完全なユニットとして大きなメディアデータユニットを、搬送のためのトランスポートプロトコル層へ配送することができないかもしれないことである。この場合、当該大きなメディアデータユニットを、搬送用に小さなユニットへ分割することが必要となろう。２つ目の問題は、メディアデータユニットが生成された瞬間にメディアストリームデータレートが推定されるので、当該推定されたデータレートが、大きなメディアデータユニットによって著しく変動され得ることである。例えば、新たなメディアデータユニットが生成されて、スケジューラ１００に搬送された場合に、その推定されたデータレートは急上昇するだろう。
【００４８】
この２つの問題を解決するために、スケジューラ１００は、大きな入力メディアデータユニットを、トランスポート層による搬送用の複数の小さなメディアデータユニットに分割してもよい。さらに、データ生成時間ｇｉは、細分されたメディアデータユニットのデータ生成時間を表すために修正されるが、この修正は、該入力メディアデータユニットのデータ生成時間を補間することによってなされる。例えば、大きな入力メディアデータユニットのそれぞれが、搬送用の小さなメディアデータユニットｋに分割されたと仮定すると、修正されたメディアデータユニット生成時間は、以下の数式によって補間される。
【００４９】
【数１０】
0005588001.tif 000011
【００５０】
上記数式において、Ｇｉは、大きな入力メディアデータユニットｉの実際の生成時間である。同様の補間方法を用いることが考えられるのは、可変サイズの入力メディアデータユニット、可変分割因数ｋ、及び、可変サイズの出力メディアデータユニットの場合である。
【００５１】
１．４  例４−可変ネットワーク帯域幅の拡張
利用可能なネットワーク帯域幅の容量が可変または事前に知られていない場合に、スケジューラ１００はさらに拡張される。この場合、Ｒｍａｘはもはや既知の定数ではなく、Ｒｍａｘを推定するために他の方法が必要となろう。
【００５２】
本例では、スケジューラ１００は、Ｒｍａｘ（ｔ）推定ユニット１０７をさらに備えてもよい。推定ユニット１０７は、最大ネットワーク帯域幅容量Ｒｍａｘ（ｔ）を推定する。ユニット１０１〜１０４の転送スケジューリング手順を修正して、数式（２．４）から（２．６）におけるＲｍａｘをＲｍａｘ（ｔ）と置き換えることで、最大ネットワーク帯域幅容量Ｒｍａｘ（ｔ）を組み入れ得る。ユニット１０１及び１０２によるその他の手順は同様であるため、本明細書中では繰り返し説明されない。
【００５３】
１．５  例５−マルチセグメントメディアストリームの拡張
クライアントから個別にリクエストされた複数のセグメントを含んでメディアストリームが構成されている場合に、スケジューラ１００はさらに拡張される。例えば、クライアントが個別のリクエスト（例えば、ＨＴＴＰ  ＧＥＴ  リクエスト）を送信して、当該セグメントの搬送を個別にリクエストする場合には、メディアストリームは、固定のサイズのセグメント、または、固定の時間のセグメントに分割され得る。これについての主な相違は、クライアントからのリクエストがあるまでメディアセグメントが転送されないため、スケジューラにはさらなる制約が課されることである。
【００５４】
マルチセグメントメディアストリームに適合する方法の１つは、クライアントからリクエストを受信した場合にのみスケジューラを実行することである。この場合、スケジューラは、リクエストされたメディアセグメントに含まれる全てのメディアデータユニットを決定かつスケジューリングする。そして、スケジューラは、クライアントからの次のリクエストを待って待機する。この方法は、メディアデータレートとネットワーク帯域幅容量とが、共に事前にわかっている場合に好適である。
【００５５】
より一般的な方法は、クライアントのリクエストから独立してスケジューラを実行させるが、メディアデータユニットに関連付けられたセグメントリクエストがクライアントから到着するまで、当該メディアデータユニットに対してスケジューリングされた転送時間を遅延させることである。その他のスケジューリング手順は同様であるため、本明細書中ではその詳細の説明を省略する。
【００５６】
１．６  例６−拡張の組み合わせ
例２から例５における３つの拡張については、所望の拡張からの手順を統合し、対象とするネットワーク／アプリケーションの特性に合うように当該３つの拡張を組み合わせてもよい。この統合手順は容易であるため、本明細書中では繰り返し説明されない。
【００５７】
ＩＩ．クライアントベースのソリューション
クライアントベースのソリューションは、例えば、クライアントのアプリケーションソフトウエア、オペレーティングシステム、ファームウエアの一部として、あるいは、クライアントのアプリケーションソフトウエアと並行して実行される補完的なソフトウエアとして、クライアントの装置内に実装されるように設計されている。
【００５８】
図８は、本出願における１つの実施例による、レセプションスケジューラ２００を説明するブロック図である。レセプションスケジューラ２００は、２つの入力パラメータ、すなわち、（ａ）再生するためにメディアデータユニットｉが復号化された場合の、メディアストリームの開始に関する時間として定義された、｛ｐｉ｝の集合と、（ｂ）最大転送レートＲｍａｘとを用いて動作し得る。ｔｉ及びｓｉ（ここで、ｉ＝０、１、…）を、ネットワークトランスポート層から受信したｉ番目のメディアデータユニットの時間及び（バイトでの）サイズとする。レセプションスケジューラは、（ａ）メディアデータユニットの再生時間前に、当該メディアデータユニットが到着するように、かつ、（ｂ）短期データレートがＲｍａｘを超えないように、｛ｔｉ｝の集合を決定することを目的とする。
【００５９】
スケジューラ２００による手順において原則となるのは、レシーバ／クライアントがネットワークトランスポート層からのデータ受信を制御することによって、送信者から送られるメディアデータのフローを間接的に制御することである。例えば、ＴＣＰがトランスポート層として用いられている場合には、ＴＣＰのフローを制御することで、送信者／サーバがレシーバの利用可能なバッファよりも多いデータを決して転送しないことが確実となるだろう。これは、レシーバが、利用可能なバッファを、センダーに戻される確認パケットのフィールドとして送り戻すことによって達成される。仮に、利用可能なｘバイトのバッファスペースがレシーバにあることがレシーバから報告されたとすると、たとえ転送待ちのデータがｘバイトより多くあるとしても、送信者は、ｘバイトを超えないデータを送信するようにとどめる。
【００６０】
それゆえ、レシーバが、ネットワークトランスポート層からのデータ受信を中断した場合には、トランスポート層の内部バッファが最終的には満杯となり、センダーに対してもデータの送信を停止させる。この種のフロー制御メカニズムを利用して、レシーバは、ネットワークトランスポート層からデータを受信する際のレシーバ自身のタイミングを制御することで、センダーのデータフローを間接的に制御し得る。
【００６１】
具体的には、図８に示されるように、スケジューラ２００は、取得（回収）ユニット２０１と、最早時間決定ユニット２０２と、最遅時間決定ユニット２０３と、スケジューリングユニット２０４とを備える。取得ユニット２０１は、再生のためにｉ番目のメディアデータユニットの復号化がスケジューリングされている時間ｐｉと、メディアデータユニットに関する最大転送レートＲｍａｘとを取得するように動作する。最早時間決定ユニット２０２は、最大転送レートＲｍａｘによってｉ番目のメディアデータユニットを受信するための最早時間ｗｉと、過去のある時間間隔における、メディアデータユニットについての短期データスループットとを決定するように動作する。最遅時間決定ユニット２０３は、決定された時間ｐｉから、複数のメディアデータユニットのうちのｉ番目のメディアデータユニットを受信するための最遅時間ｖｉを決定するように動作する。スケジューリングユニット２０４は、ｉ番目のメディアデータユニットの受信時間を、ｗｉからｖｉの範囲内で最適化するために用いられる。
【００６２】
短期データレートが、Ｒｍａｘを超えないようになされている場合は、最早時間決定ユニット２０２は、まず、Ｃ（ＴＳ，ｔ）にて表される、過去ＴＳ秒間における、受信されたメディアデータについての短期データスループットを決定する。ここで、ＴＳは、平均化ウィンドウ持続時間を調整するための設定可能なパラメータであり、ｔは現在の時間である。
【００６３】
【数１１】
0005588001.tif 000012
【００６４】
そして、最早時間決定ユニット２０２は、以下の数式によって、メディアデータユニットｉを受信するための最早時間ｗｉを決定する。
ｗｉ＝min｛t｜(C(Ts,t)min｛Ts,t-t0｝+si)/min｛Ts,t-t0｝≦ρRmax｝    （式３．２）
上記数式において、ρ∈［Ｒｍｉｎ／Ｒｍａｘ，１］は、メディアストリームの目標短期データスループットを調整するための設定可能なパラメータである。
【００６５】
また、最遅時間決定ユニット２０３は、メディアデータユニットｉを受信するための最遅時間ｖｉを決定するように動作する。メディアデータユニットｉは、再生時間ｐｉで再生されるように、メディアデータユニットｉの復号化がスケジューリングされているため、スケジューラは、メディアデータユニットｉを再生時間ｐｉよりも前に受信しなければならない。すなわち、以下の数式にて表される。
【００６６】
ｖｉ≦ｔ０＋ｐｉ＋Δ    （式３．３）
上記数式において、Δは、ｔ0（１番目のメディアデータユニットの受信）からメディアの再生開始までの時間である。すなわち、これは、多くのメディアプレーヤーにおける先読みバッファである。
【００６７】
次に、スケジューリングユニット２０４は、他の制約や目的に基づき、受信時間をｗｉからｖｉの範囲内でさらに最適化するために用いられ得る。例えば、クライントは、再生のために復号化される前のメディアデータを受信し、当該受信したメディアデータを一時的に記憶するためのメディアデータのバッファサイズ（例えば、Ｂバイト）が制限されていることが多い。この場合、メディアデータのバッファがオーバーフローしないように、受信時間は、ｗｉよりも遅い時間にスケジューリングされる必要がある。また、パケット損失が生じる可能性を低減するため、または、他のデータフローに対して帯域幅を利用可能とするため、或いは、また別の理由によって、クライアントが、最大レートＲｍａｘよりも低いレートにてデータを受信することを好むこともある。この場合、適宜、スケジューリングユニット２０４によって、受信時間をｗｉよりも遅い時間にスケジューリングする必要があるだろう。
【００６８】
また、スケジューラ２００は、比較ユニット２０５をさらに備える。比較ユニット２０５は、ｖｉと現在の時間ｔとを比較する。ｖｉ≦ｔならば、スケジューリングされた受信時間が既に経過しており、比較ユニット２０５は、直ちにネットワークトランスポート層からメディアデータユニットを受信する。また、ｖｉ＞ｔならば、比較ユニット２０５は、（ｔ−ｖｉ）に等しい時間待機した後に、ネットワークトランスポート層からメディアデータユニットを受信する。
【００６９】
上述のように、スケジューラ２００に関するクライアントベースの受信スケジューリングは、ＶＢＲ符号化メディアストリームを既にサポートしている。｛ｐｉ｝の集合は、メディアストリームのビットレートプロファイルを充分に説明しており、それゆえ、そのタイミングの必要条件は、受信スケジューラに既に組み込まれている。
【００７０】
利用可能なネットワーク帯域幅の容量が可変または事前に知られていない場合に、スケジューラ２００はさらに拡張される。この場合、Ｒｍａｘはもはや既知の定数ではなく、Ｒｍａｘを推定するために別の方法が必要となろう。この場合、図９に示されるように、スケジューラ２００は、最大レート推定ユニット２０６をさらに備えてもよい。最大レート推定ユニット２０６は、ネットワーク帯域幅容量、つまり、Ｒｍａｘ（ｔ）を推定する。ユニット２０１〜２０４の受信スケジューリング手順を修正して、数式（３．２）におけるＲｍａｘをＲｍａｘ（ｔ）と置き換えることで、ネットワーク帯域幅容量Ｒｍａｘ（ｔ）を組み入れ得る。ユニット２０１〜２０５によるその他の手順は上述の手順と同様であるため、本明細書中では繰り返し説明されない。
【００７１】
ＩＩＩ．ネットワークベースのソリューション
ネットワークベースのソリューションは、ネットワークインフラの一部として実装されるように設計されており、それゆえ、サーバ及びクライアントのいずれもが修正される必要はない。図１０には、ネットワークベースのソリューションを実装する２つの方法が示されている。サーバとクライアントとの間にゲートウェイが導入されており、サーバとクライアントとの間を通る全てのデータトラフィックは、ゲートウェイを通過する。これは、ゲートウェイ中間ネットワーク接続部を物理的に挿入することによって、或いは、ゲートウェイに対する論理的なルートデータトラフィックを用いることによって、なされ得る。
【００７２】
サーバとゲートウェイとの間のネットワーク経路がボトルネック（ｂｏｔｔｌｅｎｅｃｋ）とならない場合は、ゲートウェイは、転送スケジューラ１００を実行して、クライアントに対してサーバから受信したメディアデータユニットの転送をスケジューリングする。ここで、ｔｉは、サーバからメディアデータユニットｉが受信された時間を示すだろう。ゲートウェイは、単に、ゲートウェイ自身のバッファ及び他の制約の影響を受けつつも可能な限り速やかに、サーバからメディアデータユニットを受信する。
【００７３】
逆に、サーバとゲートウェイとの間のネットワーク経路がボトルネックとなる場合は、ゲートウェイは、受信スケジューラ２００を実行して、サーバから受信したメディアデータユニットの受信をスケジューリングする。ここで、ｔｉは、サーバに接続されたネットワークトランスポート層からのメディアデータユニットｉの受信がスケジューリングされている時間を示すことになる。ゲートウェイは、単に、ゲートウェイの他の制約があれば、その影響を受けつつも可能な限り速やかに、メディアデータユニットをクライアントへ送信する。
【００７４】
本出願による、メディアデータの転送時間をスケジューリングするための装置が、上述のように説明されてきた。以下、本出願による、メディアデータの転送時間をスケジューリングする方法を説明する。
【００７５】
図１１は、本出願における１つの実施形態による、メディアデータ転送時間のスケジューリングを示すフローチャートである。ここでは、メディアデータは、複数のメディアデータユニットを含んで構成されている。図１１に示されるように、ステップＳ１１０１では、上述したように、例えば転送スケジューラ１００によって、複数のメディアデータユニットのうちのｉ番目のメディアデータユニットを転送するための最遅時間ｖｉを決定する。最遅時間ｖｉの決定は、次のようになされ得る。すなわち、該複数のメディアデータユニットに関する全体の平均データスループットＣ（ｔ）と最小データレートＲｍｉｎとに基づき、該複数のメディアデータユニットに関する全体の平均データスループットが最小データレートＲｍｉｎを超えて維持されるように、決定される。具体的には、数式（２．１）及び（２．２）、または（２．８）に規定されるルールによって、ステップＳ１１０１が実行され得る。
【００７６】
ステップＳ１１０２では、各メディアデータユニットを転送するための最早時間ｗｉを決定する。最早時間ｗｉは、過去の転送期間における、メディアデータユニットに関する短期データスループットＣ（ＴＳ，ｔ）と短期レート最大値Ｒｍａｘとによって決定され得る。具体的には、数式（２．３）及び（２．４）に規定されるルールによって、ステップＳ１１０２が実行され得る。
【００７７】
ステップＳ１１０３では、ｉ番目のメディアデータユニットに関する転送時間ｕｉは、最遅時間ｖｉまたは最早時間ｗｉに基づき、以下のルールによって、スケジューリングされる。そのルールとは、ｖｉ≧ｗｉならば、ｕｉ＝ｍａｘ{ｗｉ，ｔｉ}であり、この数式において、ｔｉは、ｉ番目のメディアデータユニットに関する所定の転送時間を表す。また、ｖｉ＜ｗｉならば、メディアデータユニットの短期レート最大値Ｒｍａｘを超えないように、最早時間ｗｉで転送時間ｕｉをスケジューリングする。
【００７８】
最後に、ステップＳ１１０４では、スケジューリングされた転送時間ｕｉは、現在の時間ｔと比較される。スケジューリングされた転送時間ｕｉが現在の時間ｔ以下の場合は、ｉ番目のメディアデータユニットは直ちに転送されるが、そうでなければ、（ｔ−ｕｉ）に等しい時間待機した後に、ｉ番目のメディアデータユニットを転送する必要がある。
【００７９】
１つの実施形態では、最小レート下限Ｒｍｉｎをメディアデータレートと一致させて構成し得るように、メディアデータレートは一定であると仮定されていた。別の実施形態では、数式（２．７）〜（２．１０）に関する内容と同一であるビットレートプロファイルが既知の場合は、図１１に示されるような転送方法を、ＶＢＲ符号化メディアストリームのストリーミングをサポートするまでに拡大され得る。
【００８０】
ライブストリーミングのようなアプリケーションでは、正確なメディアデータレートは、事前にはわからないかもしれない。上述の方法においては、データ生成プロセスを監視してメディアデータレートを推定することによって、この問題に対処する。例えば、メディアデータユニットが生成されるレートまたは時間に基づいて、短期最小レート下限Ｒｍｉｎ（ｔ）を推定してもよい。
【００８１】
上述された方法は、サーバホストにおけるサーバアプリケーション層とネットワークトランスポート層との間で実行し得る、或いは、サーバホスト側にあるゲートウェイにおいて実行し得る。
【００８２】
図１２は、本出願における別の実施形態による、メディアデータ転送時間のスケジューリングを示すフローチャートである。図１２に示されるように、ステップＳ１２０１では、メディアデータにおける複数のメディアデータユニットが受信される。また、ステップＳ１２０２では、再生のためにｉ番目のメディアデータユニットの復号化がスケジューリングされている時間ｐｉが取得され、また、メディアデータユニットに関する最大転送レートＲｍａｘが取得される。｛ｐｉ｝の集合が事前に与えられているならば、図１１に示されたスケジューリング方法に、当該集合を組み入れてもよい。具体的には、ＶＢＲ符号化メディアストリームには長期平均データスループットが有用ではないので、最小レート下限Ｒｍｉｎを修正する必要がある。最小レート下限Ｒｍｉｎは、短期可変最小レート下限Ｒｍｉｎ（ｔ）と置き換えられる。短期可変最小レート下限Ｒｍｉｎ（ｔ）は、数式（２．７）によって計算されたメディア再生時間に依存する関数である。
【００８３】
そして、ステップＳ１２０３では、数式（３．１）及び（３．２）を参照して説明されたように、最大転送レートＲｍａｘと、過去のある時間間隔におけるメディアデータユニットについての短期データスループットとに基づいて、ｉ番目のメディアデータユニットを受信するための最早時間ｗｉを決定する。
【００８４】
ステップ１２０４では、決定された時間ｐｉから、複数のメディアデータユニットのうちのｉ番目のメディアデータユニットを受信するための最遅時間ｖｉを、数式（３．３）に規定されたルールによって決定する。そして、ステップＳ１２０５にて、ｉ番目のメディアデータユニットの受信時間は、ｗｉからｖｉまでの範囲内で最適化される。例えば、クライントは、再生のために復号化される前のメディアデータを受信し、当該受信したメディアデータを一時的に記憶するためのメディアデータのバッファサイズ（例えば、Ｂバイト）が制限されていることが多い。この場合、メディアデータのバッファがオーバーフローしないように、受信時間は、ｗｉよりも遅い時間にスケジューリングされる必要がある。または、パケット損失が生じる可能性を低減するため、或いは、他のデータフローに対して帯域幅を利用可能とするため、クライアントが、最大レートＲｍａｘよりも低いレートにてデータを受信することを好むこともある。この場合、適宜、受信時間は、ｗｉよりも遅い時間にスケジューリングされる必要があるだろう。
【００８５】
ステップＳ１２０６では、スケジューリングされた受信時間ｔｉは、現在の時間ｔと比較される。スケジューリングされた受信時間ｔｉが現在の時間ｔ以下の場合は、ｉ番目のメディアデータユニットは直ちに受信されるが、そうでなければ、（ｔ−ｔｉ）に等しい時間待機した後に、ｉ番目のメディアデータユニットを受信する必要がある。
【００８６】
利用可能なネットワーク帯域幅の容量が可変または事前に知られていない場合に、図１２に示されるように、本方法は拡張される。この場合、Ｒｍａｘはもはや既知の定数ではなく、Ｒｍａｘを推定するために他の方法が必要となろう。Ｒｍａｘ（ｔ）を、推定されたネットワーク帯域幅容量とする。受信スケジューリング手順を修正して、数式（３．２）におけるＲｍａｘをＲｍａｘ（ｔ）と置き換えることで、Ｒｍａｘ（ｔ）を組み入れ得る。その他の手順は同様であるため、本明細書中では繰り返し説明されない。
【００８７】
本出願における実施形態について、添付の図面を参照して説明してきたが、本発明は、当該実施形態に限定されるものではない。本明細書の開示に基づいて、様々な修正例や変形例が当業者によってなされ得るが、そのような修正例及び変形例は本発明の範囲内とされるべきである。
【図１】
0005588001.tif 000020
【図２】
0005588001.tif 000021
【図３】
0005588001.tif 000022
【図４】
0005588001.tif 000023
【図５】
0005588001.tif 000024
【図６】
0005588001.tif 000025
【図７】
0005588001.tif 000026
【図８】
0005588001.tif 000027
【図９】
0005588001.tif 000028
【図１０】
0005588001.tif 000029
【図１１】
0005588001.tif 000030
【図１２】
0005588001.tif 000031