経時変化する容量を有する接続のフローレート適合
【課題】経時変化する容量を有する接続による送信用のストリーミングデータを適合させるシステムおよび方法を提供する。
【解決手段】ストリーミングサーバは、ストリーミングサーバから内在するクライアントへの接続を特徴付ける計測値に従って該クライアントを対象とする信号の送信レートを個々に適合させる。計測値は、転送遅延、データ損失比率、およびクライアントレシーバにおけるバッファの占有レベルに関してよい。ストリーミングサーバに関連付けられたフローコントローラは、選択された時間窓における計測値からメトリックを導出して、サーバから各アクティブなクライアントへの許容可能な送信レートを決定する。特定の特徴に関するメトリックには、移動窓における平均値、および、各計測値の長期的および短期的傾向が含まれてよい。ストリーミングサーバの適応符号器は、信号を符号化して許容可能な送信レートに適合させる。
【解決手段】ストリーミングサーバは、ストリーミングサーバから内在するクライアントへの接続を特徴付ける計測値に従って該クライアントを対象とする信号の送信レートを個々に適合させる。計測値は、転送遅延、データ損失比率、およびクライアントレシーバにおけるバッファの占有レベルに関してよい。ストリーミングサーバに関連付けられたフローコントローラは、選択された時間窓における計測値からメトリックを導出して、サーバから各アクティブなクライアントへの許容可能な送信レートを決定する。特定の特徴に関するメトリックには、移動窓における平均値、および、各計測値の長期的および短期的傾向が含まれてよい。ストリーミングサーバの適応符号器は、信号を符号化して許容可能な送信レートに適合させる。
【発明の詳細な説明】
【技術分野】
【0001】
本国際出願は、2008年7月28日出願のLABONTE,Francis等による「Flow-Rate Adaptation for a Connection of Time-Varying Capacity」なる名称の米国特許出願第12/180,697号明細書、および、「Data Streaming Through Time-Varying Transport Media」なる名称の米国特許出願第12/180,704号明細書の優先権を主張しており、これらをここに参照として組み込む。
【0002】
本発明は、ソースが自身のフローレートを自身から個々のシンクへの経路の条件に応じて適合させることができるような、ソースから複数のシンクへのデータ通信に係る。
【背景技術】
【0003】
データストリーミングシステムにおいては、サーバは複数のシンクと通信することがある。一般的には、サーバに関連付けられたデータソースから個々のデータシンクへの経路は、ソースから共有ネットワークの第1のスイッチノードへの第1のスパン、共有ネットワークを経由する第1のスイッチノードから共有ネットワークの第2のスイッチノードへのスイッチ経路、および、第2のスイッチノードから個々のシンクへの第2のスパンを含む。ある経路が維持可能な最大フローレートは、共有ネットワークの負荷条件および送信媒体の物理的条件に応じて経時変化しうる。経路のどのセグメントも、複数の異なる優先順位が指定された接続により共有されうる。
【0004】
接続が遅延可能なデータ(例えばコンピュータファイル)を搬送する場合には、経路条件が変動したとしても、失われたデータまたは失われることが分かっているデータの再送信が可能な公知のエンドツーエンドプロトコルを利用することで、送信されるデータの整合性を維持することができる。接続が、データの再送信が望ましくないようなリアルタイムビデオ信号等の遅延不可能なデータを搬送する場合には、信号ソースまたは信号ソースに関連付けられた信号符号器が、それぞれの接続で分かっている容量に応じて信号の内容を適合させることが非常に重要になる。
【0005】
従って、接続状態のリアルタイムな評価および信号の内容の適合を行うための応答手段を設けて、接続状態が経時変化した場合であってもサービスの品質を維持できるようにする必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、ソースからシンクへの経路の条件に応じてソースからシンクへのデータのフローレートを制御する方法および装置を提供する。
【課題を解決するための手段】
【0007】
一態様によると、本発明は、経時変化する接続により、符号器から復号器へデータをストリーミングする方法を提供する。方法は、接続を特徴付ける計測値を得る段階と、計測値によって接続のトランスミッタンスの変化を推定する段階と、トランスミッタンスの変化と符合する符号器の現在の符号化レートの調節を決定して好適な符号化レートを得る段階と、符号器に命じて、好適な符号化レートに従って信号を符号化させる段階とを備える。この接続は、元々は公称符号化レートを割り当てられており、これは符号器の分類に応じて交渉または決定されうる。
【0008】
計測値は、符号器と復号器との間の転送遅延、データ損失比率、または復号器の受信バッファの占有率等のパフォーマンス特性を含みうる。計測値は、予め定義された期間に相当する時間窓で得られると好適である。
【0009】
符号化レートは、公称符号化レートを、計測値から導出された第1のメトリックに従って決定される第1の符号化係数で乗算することにより更新することができる。第1の符号化係数は、第1のメトリックの予め定義された関数に従って決定することができる。時間窓における計測値の平均値を、第1のメトリックとして選択することができる。
【0010】
符号化レートは、公称符号化レートを、時間窓における計測値の傾向に基づく第2のメトリックに従って決定される第2の符号化係数で乗算することにより更新することもできる。符号化係数は、現在の値を、第2のメトリックの予め定義された関数に従って決定される係数で乗算することによって更新することもできる。計測値の傾向は、計測値を時間窓の時間に関連付ける回帰線の傾きに基づいて決定されてよい。計測値の傾向は、回帰線の傾きと、時間窓内の短期間中の計測値の勾配とに基づいて決定されてもよい。
【0011】
別の態様によると、本発明は、経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法を提供する。方法は、接続の現在の符号化レートを決定する段階と、第1の時点と第2の時点との間の時間窓における転送遅延計測値を得る段階と、時間窓におけるデータ損失比率計測値を得る段階とを備える。そして転送遅延計測値を時間窓内の各時点に関連付ける回帰線を決定し、その傾きを、計測値の傾向を示すものとみなす。さらに第2の時点の直前で選択された転送遅延計測値の勾配を決定する。
【0012】
傾きおよび勾配に従って、第1の仮の符号化レートを決定し、データ損失比率計測値に従って、第2の仮の符号化レートを決定してよい。そして、第1の仮の符号化レートおよび第2の仮の符号化レートのうち小さいほうを、好適な符号化レートとして選択することで、転送遅延要件およびデータ損失要件のうち、より厳しい要件に適合させることができる。
【0013】
方法はさらに、クライアントデバイスに関連付けられたバッファの占有率に関する計測値を得る段階を備える。転送遅延要件およびデータ損失パフォーマンス要件を満たす好適な符号化レートが公称符号化レートを超え、占有率が予め定義されたバッファ占有率の閾値を越えている場合には、好適な符号化レートを公称符号化レートに等しくなるまで低減させることで、バッファのオーバフローを回避することができる。第1の仮の符号化レートは、現在の符号化レートを、予め定義された関数E*=Г(α,β)に従って決定される第1の符号化係数E*で乗算することにより決定され、αは回帰線の前記傾きであり、βは勾配である。
【0014】
方法ではさらに、Θで表す前記データ損失比率計測値を、予め定義されたデータ損失比率の許容インターバルの下限値Θminおよび上限値Θmaxと比較する。Θ>Θmaxであれば、第2の符号化係数E**をE**=(1−Θ)と決定する。Θ<Θminであれば、第2の符号化係数E**をE**=x>1と決定し、xは設計パラメータである。そして、現在の符号化レートを第2の符号化レートE**で乗算して第2の符号化レートを決定することができる。
【0015】
さらなる態様によると、本発明は、データストリーミングシステムを提供する。システムは、複数のクライアントと通信するストリーミングサーバを備え、各クライアントは復号器、データバッファ、およびシンクレポータを有する。
【0016】
ストリーミングサーバは、信号ソースと、信号ソースが生成する信号を符号化する適応符号器と、複数のクライアントを対象とする複数のダウンストリーム制御パケットを作成するソースレポータと、複数のクライアントから複数のアップストリーム制御パケットを受信して、複数のクライアントそれぞれに個々に符号化係数を決定するフローコントローラとを備える。各符号化係数は、各クライアントを対象とする信号の符号化レートを決定する。
【0017】
特定のクライアントに関連付けられたシンクレポータは、フローコントローラを対象とする複数のアップストリーム制御パケットを作成する。フローコントローラは、ストリーミングサーバと特定のクライアントとの間で交換された複数のダウンストリーム制御パケットと対応する複数のアップストリーム制御パケットとを利用して、接続の現在の状態を判断する。
【0018】
ソースレポータから特定のクライアントに送られるダウンストリーム制御パケットはパケット識別子を含む。特定のダウンストリーム制御パケットに呼応して特定のクライアントのシンクレポータから送られる対応するアップストリーム制御パケットは、パケット識別子を含む。
【0019】
アップストリーム制御パケットも、特定のクライアントに関連付けられたデータバッファの占有率の表示を含んでよい。フローコントローラは、特定のクライアントのアップストリーム制御パケットを処理して、ストリーミングサーバから特定のクライアントへの転送遅延と、損失したダウンストリーム制御パケットの比率とから、転送遅延のインジケータを決定する。
【0020】
別の態様によると、本発明は、経時変化する接続により、符号器から復号器へデータストリーミングする方法を提供する。方法は、符号器の出力のフローレートを決定するべく符号化係数を符号器に関連づける段階と、接続のパフォーマンスメトリックと、下限値および上限値を有するパフォーマンスメトリックの許容インターバルとを定義する段階と、現在の符号化係数で時間窓における接続の1セットのパフォーマンス計測値を得る段階と、1セットの計測値に従って接続のメトリックの現在の値を決定する段階と、メトリックの現在の値と許容インターバルとに従って、符号化係数を好適な符号化係数に調節する段階とを備える。
【0021】
メトリックの現在の値が許容インターバルの下限値を下回る場合、現在の符号化係数を第1の係数で乗算して、好適な符号化係数を生成する。メトリックの現在の値が上限値を上回る場合、現在の符号化係数を第2の係数で乗算して、好適な符号化係数を生成する。第1の係数は1より大きく、第2の係数は1より小さい。好適には、第1の係数と第2の係数との間の積は1未満である。メトリックの現在の値が許容インターバル内にある場合には、現在の符号化係数を変更しなくてよい。
【0022】
第1の係数は、メトリックの現在の値と下限値との間の差異の関数として決定することができる。第2の係数は、メトリックの現在の値と上限値との間の差異の関数として決定することができる。メトリックは、時間窓中の転送遅延の平均値、時間窓中のデータ損失の平均値、または時間窓の最後に計測された復号器のバッファの占有率のインジケータとして決定することもでき、ここで復号器のバッファは、接続により受信したデータを保持する。
【0023】
方法はさらに、好適な符号化係数が現在の符号化係数とかなり異なっている場合に、符号器に命じて、好適な符号化係数と公称符号化係数とに従って信号を符号化させる段階を備える。
【0024】
さらなる態様によると、本発明は、接続の複数のパフォーマンス特性の測定に基づいて経時変化する接続により、符号器から復号器へデータストリーミングする方法を提供する。方法は、符号器の出力のフローレートを決定する符号化係数を接続に関連付ける段階と、複数のパフォーマンス特性を接続と関連付ける段階と、複数のパフォーマンス特性と一対一の関係にある複数のパフォーマンスメトリックを定義する段階とを備える。
【0025】
現在の符号化係数で、時間窓における接続のパフォーマンス計測値の複数のセットを得るが、ここでパフォーマンス計測値の各セットは、複数のパフォーマンス特性のいずれか1つに対応している。各パフォーマンスメトリックの現在の値を、計測値の対応するセットを用いて決定して、パフォーマンスメトリックの現在の値のセットを生成する。そして好適な符号化係数を、各パフォーマンスメトリックの現在の値に従って決定する。
【0026】
方法ではさらに、複数のパフォーマンスメトリックの現在の値それぞれを許容インターバルそれぞれと比較することにより、符号化係数が調節される。各々が複数のパフォーマンスメトリックのいずれか1つに対応しているような1式の許容インターバルを定義する。各許容インターバルは、下限値と上限値それぞれから定義される。パフォーマンスメトリックの現在の値のセットの各エレメントが対応する許容インターバルの下限値を下回る場合、現在の符号化係数を、1より大きい第1の係数で乗算して、好適な符号化係数を生成する。パフォーマンスメトリックの現在の値のセットの少なくとも1つのエレメントが対応する許容インターバルの上限値を上回る場合、現在の符号化係数を、1より小さい第2の係数で乗算して、好適な符号化係数を生成する。
【0027】
第1の係数は1より大きく、第2の係数は1より小さい。符号化係数を遅いペースで増加させ、比較的速いペースで低下させるには、第1の係数と第2の係数との間の積が1未満になるよう選択するとよい。
【0028】
複数のパフォーマンス特性には、符号器から復号器への転送遅延、データ損失、接続により受信したデータを保持する復号器のバッファの占有率が含まれてよい。複数のパフォーマンスメトリックには、時間窓中の転送遅延の平均値、時間窓中のデータ損失の平均値、および、時間窓中の復号器のバッファの占有率値が含まれてよい。パフォーマンス計測値の複数のセットは、符号器と復号器との間の制御データの交換により得られて良い。データの交換は、リアルタイムトランスポートプロトコル(RTP)およびリアルタイムトランスポート制御プロトコル(RTCP)の利用に基づき行われてよい。
【0029】
別の態様によると、本発明は、経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法を提供する。方法は、接続の現在の符号化レートを決定する段階と、第1時点と第2時点の間のW個の計測値を含む時間窓における接続の特定の特徴の計測値を得る段階と、計測値から特定の特徴のメトリックμを決定する段階とを含む。
【0030】
μが、下限値μ1と上限値μ2とを有する予め定義された許容インターバル内にある場合、現在の符号化レートは変更する必要がない。一方、μが許容インターバルの上限値μ2を上回っている場合には、現在の符号化レートを係数x2<1で乗算して、μが許容インターバルの下限値μ1を下回っている場合には、現在の符号化レートを係数x1>1で乗算することができる。
【0031】
特定の特徴が接続による転送遅延である場合、メトリックは、転送遅延の計測値σを得る段階と、計測値σを加算して循環アレイVの現在のインデックスのエントリを減算することにより総計Σを更新する段階であって、循環アレイは、特定の特徴の前の計測値を含むW>1個のエントリを有する段階と、循環アレイの現在のインデックスに計測値σを格納する段階とにより決定される。計測値の累積数を表すカウンタは1増分され、現在のインデックスは1増分することにより更新される(つまりインデックスが値モジュロWに達すると0にリセットする)。インデックス、モジュロWを利用することにより、最新のW個の計測値が格納され、カウンタの目的は、メトリックを決定するための連続する時間窓の間を離散させること(space)である。従って、メトリックμとして利用される総計Σを利用することで、カウンタが閾値P*以上である場合のみに、符号化レートの調節が必要であると決定することができる。平均値Σ/Wの代わりに総計Σを利用する目的は、計算を減らすことである。下限値μ1を、Wで乗算された許容可能な転送遅延の下限値として決定して、上限値μ2を、Wで乗算された許容可能な転送遅延の上限値として決定する。現在の符号化レートの調節が終わるごとに、カウンタをゼロにリセットする。閾値P*は、現在の符号化レートを調節する任意の連続する2つのステップ間の時間間隔が予め定義された最小の時間間隔より大きくなる程度に十分大きい値とする。係数x1は、(μ1−Σ)の関数として決定されてよく、係数x2は(Σ−μ2)の関数として決定される。
【0032】
特定の特徴がデータ損失比率である場合、メトリックμは、時間窓において決定されたデータ損失比率Θである。下限値および上限値μ1およびμ2>μ1は、許容可能なデータ損失比率の限界値である。係数x1は、Θがμ1未満であるとき所定の乗数x>1として決定され、係数x2は、Θ>μ2であるとき(1−Θ)として決定される。
【図面の簡単な説明】
【0033】
本発明の実施形態を、添付する例示的な図面を参照しながら以下に記載する。
【図1】本発明の一実施形態における経時変化する容量を有する接続のフローレート適合システムを組み込むネットワークを示す。
【図2】本発明の一実施形態における、符号化レートが接続状態に適合されるよう、可変容量を有する接続による復号器に接続する符号器を含むシステムを示す。
【図3】本発明の一実施形態における、接続を特徴付ける選択された計測値を格納する図2の符号器に関連付けられた循環バッファを示す。
【図4】本発明の一実施形態における、図2のシステムの符号器で受信された接続の計測値を示し、これら計測値は、互いに分離した、あるいは重複する時間窓で分析されている。
【図5】本発明の一実施形態における、時間窓内における計測値の変動に基づいて符号化係数を決定する方法を示すフローチャートである。
【図6】複数の時間窓における連続する計測値の複数の回帰線の一例を示しており、本発明の一実施形態においては、この回帰線の傾きを図5の方法で利用して、符号化レートの好適な値を決定する。
【図7】本発明の一実施形態において利用される正および負の傾き両方を有する複数の回帰線の別の例を示す。
【図8】図5の方法を示す正の傾きおよび負の勾配を有する回帰線の元である、時間窓における計測値を例示する。
【図9】図5の方法を示す負の傾きおよび正の勾配を有する回帰線の元である、時間窓における計測値を例示する。
【図10】本発明の一実施形態における、線形回帰の傾きおよび計測値の勾配の両方が定義する領域に従って決定される離散ステップにおいて、符号化係数のデクリメントが生じる図5の方法を示す。
【図11】本発明の一実施形態における、線形回帰の傾きおよび計測値の勾配の両方が定義する領域に従って決定される離散ステップにおいて、符号化係数のインクリメントが生じる図5の方法を示す。
【図12A】本発明の一実施形態における、リアルタイムトランスポートプロトコル(RTP)を利用して接続の計測値を得るステップを示すフローチャートである。
【図12B】本発明の一実施形態における、リアルタイム制御トランスポートプロトコル(RTCP)を利用して接続の計測値を得るステップを示すフローチャートである。
【図13】本発明の一実施形態における、符号器から送られるRTPパケット、および、復号器から受信するRTCPパケットに基づいて接続のパフォーマンス計測値を判断する処理を示すフローチャートである。
【図14】本発明の一実施形態における、接続メトリックと対応する符号化係数とを決定するステップを示すフローチャートである。
【図15】本発明の一実施形態における、符号化係数を決定するための、互いに分離した、あるいは重複する時間窓で採られた計測値を処理する別の方法を示す。
【図16】本発明の一実施形態における、重複する時間窓の計測値の移動平均値の計算を示す。
【図17】本発明の一実施形態における、接続のメトリックと予め定義された限界値との比較に基づき好適な符号化係数を決定する方法を示す。
【図18】本発明の一実施形態における、図17の方法の基本的なステップを示すフローチャートである。
【図19】本発明の一実施形態における、計算を最小限にするさらなるステップを含む図17の方法のステップを詳述するフローチャートである。
【図20】2つのメトリックの現在の値に応じて符号化係数を調節する図17を参照して記載されたプロセスの拡張を示す。
【図21】3つのメトリックの現在の値に応じて符号化係数を調節する図17を参照して説明するプロセスの拡張を示す。
【図22】本発明の一実施形態の説明に利用される、パケット損失比率、対、ストリーミングサーバから送信される信号の符号化レートの接続トランスミッタンス(connection transmittance)に対する比率の間の変動を示す。
【発明を実施するための形態】
【0034】
<用語>
符号フローレート:符号化される信号のビットレートは経時的に変動するので、本明細書では、符号化される信号の最大ビットレートをフローレートと称することにする。
適応符号器:適応符号器は、信号を、予め定義されたフローレート範囲内の特定のフローレートに符号化する機能を有するデバイスのことである。符号化により、符号化および信号の忠実度(encode-signal fidelity)が最大化されるよう試みられる。
公称フローレート:クライアントとストリーミングサーバとの間で交渉されたフローレート、あるいは、クライアントの知っている範囲でストリーミングサーバが自動的に決定するフローレートを、本明細書では公称フローレートと称する。
符号化係数:Eで表される符号化係数は、ストリーミングサーバとクライアントとの間の接続の現在の状態に適合する好適なフローレートを決定するための、公称フローレートで乗算されたスケールファクタである。
接続トランスミッタンス(connection transmittance):ストリーミングサーバからクライアントまでの接続を、所期のパフォーマンス上の目的に背くことなく維持することのできる最大フローレートのことを、本明細書では接続トランスミッタンスと称する。
パフォーマンス特性:本明細書では、パフォーマンス特性は、転送遅延の変化、データ損失比率、信号歪曲等の計測値可能な接続特性として定義される。
スカラー計測値:1つの接続特性に関する接続計測値を、スカラー計測値と称する。
ベクトル計測値:ベクトル計測値は、同時発生する複数の接続計測値により構成される。
統計値:統計値とは、データサンプル1セットから導出される値(例えば平均値)である。
メトリック:メトリックとは、電話通信ネットワークにおける経路または接続の品質の計測値のことである。メトリックは、経路または経路内の接続のレインテンシー、信頼性、容量等の接続特性に関するものであってよい。
スカラーメトリック:ある接続特性に関するメトリックのことを本明細書ではスカラーメトリックと称する。スカラーメトリックは、複数のスカラー計測値から決定される。
ベクトルメトリック:少なくとも2つの接続特性に関するメトリックのことを本明細書ではベクトルメトリックと称する。ベクトルメトリックは複数のベクトル計測値から決定される。
許容インターバル:許容可能な経路または接続パフォーマンスを示すと考えられる、予め定義された低いほうの限界値と予め定義された高いほうの限界値との間のメトリックの範囲が、本明細書でいうところの許容インターバルである。
ダウンストリーム制御パケット:ストリーミングサーバからクライアントに送られる制御パケットがダウンストリーム制御信号である。
アップストリーム制御パケット:クライアントからストリーミングサーバに送られる制御パケットがアップストリーム制御信号である。
勾配(gradient):従来、連続関数の2つの変数の間の傾き(slope)が勾配として知られている。サンプルの関数の場合の勾配は、少数のサンプルにおける傾きを決定することで近似することができる。本明細書でいうところの勾配は、少数のサンプルをカバーする期間における計測値サンプルの傾きのこととする。
回帰線:1セットのデータを通るように引かれ、且つ、一定の基準(例えば、直線からのデータの偏差の二乗和を最小とするような基準)により決定される直線が回帰線である。回帰線の傾きは、データの分散が一定の条件を満たすときにはデータの傾向を示す信頼できる指標となりうる。
リアルタイムトランスポートプロトコル(RTP):RTPは、オーディオおよびビデオをインターネットで配信する標準的なパケットフォーマットを定義する(IETF(Internet Engineering Task Force)による定義、RFC3550)。
リアルタイムトランスポート制御プロトコル(RTCP):RTCPは、RTPフローのアウトオブバンド制御情報を提供し、ストリーミングセッションで制御パケットを送信するために期間的に利用される。RTCPの主な役割は、接続品質に対するフィードバックを提供することである。
【0035】
図1は、データストリーミングシステムを示しており、ストリーミングサーバコンピューティングデバイス120(ストリーミングサーバ120とも称される)が、共有ネットワーク180(例えばインターネット)を介してクライアントデバイス160(クライアント160とも称される)にデータを送信する。クライアント160は、プロセッサおよびコンピュータ可読媒体を含み、有線アクセス媒体150または無線アクセス媒体152を介して基地局140経由でネットワーク180に接続され、基地局140はネットワーク180に、有線または無線媒体により接続される。好適な実施形態では、サーバ120は既存のプロトコルを利用して、クライアント160と制御データを交換する。例えば、ストリーミングサーバ120は、リアルタイムトランスポートプロトコル(RTP)を利用して、クライアント160に制御データを送り、クライアントはリアルタイムトランスポート制御プロトコル(RTCP)を利用してストリーミングサーバに制御データを送ることができる。他のプロトコルを接続品質制御に利用することもできる。本発明においては、クライアントはストリーミングサーバとの間でデータ符号化レートについて交渉し、ストリーミングサーバが、ストリーミングサーバ120とクライアントとの間の接続の状態の変化に応じて符号化レートを調節することができる。特に、ストリーミングサーバ120は、交渉された公称フローレート(ビットレート)およびストリーミングサーバ120からクライアント160への個々の接続状態に応じて、クライアント160に対して個別に符号化レートを割り当てることができる。ストリーミングサーバはさらに、クライアントの機器タイプを認識しており、これによって公称フローレートを決定することができる。
【0036】
図2は、ストリーミングサーバ120からクライアント160への単一の接続のインスタンスを示す。ストリーミングサーバ120は信号ソース204を含み、チャネル206を介して適応符号器220に接続する。適応符号器220は、ソース204からの信号を、フローコントローラ246が決定した符号化係数および公称フローレートに基づいて符号化する。ストリーミングサーバ120は、経時変化する容量を有しうるチャネル260を介してクライアント160に接続する。クライアント160はレシーバ226を含み、レシーバ226は、情報信号(例えばビデオ信号)を検出して、検出した信号を復号器240に送り、復号器240は、検出した信号をユーザ280にとって適切なフォーマットに整える。バッファ238は復号器240と関連付けられていてよく、短期間の間データを保持する。検出された信号はさらに、シンクレポータ242を対象とする制御パケットを含みうる。シンクレポータは、ソースレポータ224から受信した制御パケットを処理して、受領確認と特定の計測値とを制御パケットに含めて、制御チャネル270経由でフローコントローラ246に送ることができる。
【0037】
接続260の容量が経時変化することから、フローコントローラ246は、経時変化するチャネル260のトランスミッタンスを正確に推定して、適切な符号化係数Eを計算することが非常に重要となる。適応符号器220は、クライアントに割り当てられた公称符号化レートおよび符号化係数の現在の値に応じて信号を符号化する。フローコントローラ246は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、許容可能なフローレート(ビットレート)全体を決定する、あるいは、情報内容を選択的に調節することで一定の信号品質を保つ。ビデオ信号の場合には、符号器はフレームレート、フレーム毎の内容、あるいはこれら両方を修正することができる。
【0038】
フローコントローラ246は、サーバ120とクライアント160との間での制御パケットの交換で得た計測値を利用する。ソースレポータ228は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、クライアント160を対象とするダウンストリーム制御パケット(不図示)を作成(formulate)する。シンクレポータ242は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、各クライアント160に関連付けられて、フローコントローラ246に送るべきアップストリーム制御パケット(不図示)を作成する。フローコントローラ246は、ストリーミングサーバとクライアント160との間の接続を介して交換されたアップストリーム制御パケットとダウンストリーム制御パケットとを利用して、接続の現在の状態およびクライアント160の個々の適切な符号化係数を決定する。各符号化係数は、各クライアントを対象とする信号の符号化レートを決定する。
【0039】
特定のクライアント160に対してソースレポータ228が送信する特定のダウンストリーム制御パケットは、ダウンストリーム制御パケット識別子と、ダウンストリームパケットを送信する時点の指標とを含む。この特定のクライアント160のシンクレポータ242が特定のダウンストリーム制御パケットに呼応して送信する、対応するアップストリーム制御パケットは、ダウンストリーム制御パケット識別子をエコーしており、この特定のクライアントがこの特定のダウンストリーム制御パケットを受信した時点を示している。
【0040】
フローコントローラは、符号化係数Eの計算を、予め定義された幅Wを有する時間窓中に受信した計測値に基づいて行うことができる。幅Wは、時間インターバル(例:数ミリ秒)、あるいは、複数の得られた計測値(例:最新の128個の計測値)で定義される。今後、本明細書では時間窓の幅を、計測値のインスタンス数で表すこととする。
【0041】
ストリーミングサーバ120は、少なくとも1つのプロセッサ(不図示)と、コンピュータ可読命令が格納されたコンピュータ可読媒体(不揮発性メモリ素子、DVD,CD−ROM、またはフロッピー(登録商標)ディスク等)とを含む。コンピュータ可読媒命令は、少なくとも1つのプロセッサにより実行されて、適応符号器220、ソースレポータ228、およびフローコントローラ246に後述する機能を実行させる。
【0042】
図3は、フローコントローラ246が維持する循環バッファ320に格納される計測値を示す。説明を簡潔にする都合上、図示されている例における循環バッファは、時点tjからtj+7の間に得られた8つの計測値342のみを含むものとして示している((j+7)が現在の観察時点である)。しかし循環バッファは多数(v個)のレコードを保持することができる。1つのレコードは、1つの計測値(スカラー計測値)あるいは1セットの同時発生した計測値(複数のベクトル計測値)を対応する時間の指標とともに含んでもよい。インデックスjの新たなレコードは、前のインデックス(j−v)のレコードを上書きする。従って循環バッファ320は、最新のv個の計測値(スカラー計測値またはベクトル計測値)を維持する。復号器240に関連付けられているバッファ238の占有率等、幾らかの計測値のなかには、クライアント160から受信するアップストリーム制御パケットから抽出できるものもある。さらに、フローコントローラ246は、クライアント160に対するダウンストリーム制御パケットが送られた時点を、サーバ120がクライアント160から対応するアップストリーム制御パケットを受信した時点と比較することで、転送遅延を判断してもよい。パケット損失(データ損失)は、クライアント160に送られた連続するダウンストリーム制御パケットの数と、クライアント160から受信され抽出された連続するアップストリームパケットの数とを比較することで検出することができる。損失パケット数の、ダウンストリーム制御パケットの数に対する比率はパケット損失比率として定義され、ここではΘという記号で表す。
【0043】
循環バッファ320の各レコードは、(1)ダウンストリーム制御パケットのシリアル番号340(j、j+1、j+2、…等)、(2)同じレコードのシリアル番号340を示すアップストリーム制御パケットがサーバ120で受信された時点342(tj、tj+1等)、および、(3)バッファ238の占有率等のアップストリーム制御パケットに含まれる計測値344が含まれる。
【0044】
十分な数のシリアル番号340を維持することにより、任意の幅の時間窓でパケット損失比率を合理的な範囲内で計算することができる。ダウンストリーム制御パケットの送信時間と、対応するアップストリーム制御パケットの受信時間342とを維持することにより、転送遅延を計算することができる。従って、接続を特徴付ける計測値には、フローコントローラ246で計算された計測値(例えば転送遅延またはパケット損失比率)、および、直接アップストリーム制御パケットから読み出された計測値344が含まれてよい。
【0045】
時間窓は、所期の制御パケットの最大数または所期の期間をカバーするような範囲としてよい。図19を参照して後述するようにこの2つの条件を利用してより厳しい条件で時間窓を定義する。
【0046】
図4は、フローコントローラ246が受信した制御パケットから抽出された連続する計測値を示す。経時変化するチャネルを特徴付けるメトリックを時間窓の最後に計算する。図4の例では、各窓が8つの計測値をカバーしている。メトリックは、遅延、データ損失、復号器240のバッファ占有率、および復号器の出力を分析することで判断された信号品質等の幾らかの属性の一部または全てをカバーしていてよい。計測値は、データ損失比率等の1つの接続特徴に関しているスカラーであっても、転送遅延、データ損失、および、接続に関連付けられたバッファの占有率等の複数の接続特徴をカバーするベクトルであってもよい。
【0047】
現在の窓における計測値データの分析結果によって、後続する時間窓を選択してもよい。ある窓における計測値の分析の結果符号化レートを修正した場合には(つまり、符号化係数Eを修正した場合には)、後続する窓を、現在の窓から大幅な時間インターバル分離れるように設けることもできる。また後続する窓は、現在の窓に隣接して設けたり、現在の窓に重複するような移動窓として設けたりすることもできる。
【0048】
図4の例では、窓420の最後の計測値の後に決定された接続のメトリックによって、符号化係数が更新される場合がある。窓240Aの最後に決定されたメトリックによって、現在の接続の符号化係数Eが更新されている。従って新たな窓240Bは、窓240Aの直後に設けられている。窓240Bの最後に決定されたメトリックによっても符号化係数が更新されているので、窓240Cは窓240Bの直後に設けられている。窓240Cの最後に決定されたメトリックによっても符号化係数が更新されているので、窓240Dは窓240Cの直後に設けられている。窓240Dの最後に決定されたメトリックでは、符号化係数が変更されなかった。従って後続する窓240Eは窓240Dに重複している。窓240Eの最後に決定されたメトリックでは符号化係数が変更されなかった。同様に、窓240Fの最後に決定されたメトリックでは符号化係数が変更されなかった。重複する窓240Gの最後に決定されたメトリックによって、符号化係数が修正された。従って新たな窓240Hは、窓240Gの直後に設けられている。窓240Hの最後に決定されたメトリックにより符号化係数が修正されたので、後続する窓240Iがその直後に設けられている。重複する窓(移動窓)240I、240J、240K、240L、および240Mの全てによっても(I、J、K、L、およびMという符号を付される計測値で終わっているが)、符号化係数は修正されなかった。重複する窓240Nの最後に決定されたメトリックによって、符号化係数が修正されたので、新たな窓(不図示)はその直後に設けられることになる。
【0049】
図5は符号化係数の好適な現在の値を決定する基本的なステップを示す。ステップ520で、符号化係数Eを1.0に等しくなるよう設定する(このときの符号化レートは、接続が確立されたとき決定される公称符号化レートである)。符号器は当然ながら符号化された信号の性質に従って変化するレートでデータを生成する。しかしこの符号化係数Eによって、符号器は、符号化された信号のダイナミクス(変動するビットレート)に関わらず自身の出力フローレートを独立して修正することになる。循環バッファ320(図3)のインデックスも、ステップ520でゼロに(あるいは、バッファ長を越えない任意の所期の値に)初期化される。ステップ522で、フローコントローラ246は、シンクレポータ242が送ってくる制御データを取得して、制御パケットから接続計測値を抽出して、循環バッファのアドレス「インデックス」に該計測値を格納して、その後ステップ524でインデックスが1に増分される。アドレスインデックスは、Wに達すると、0にリセットされる。ステップ526で、インデックスの値が窓の幅Wより小さいと判断されると、ステップ522に戻り、新たな計測値(スカラー計測値)または1セットの同時発生した計測値(ベクトル計測値)を受信して処理する。窓の幅は、複数のバッファレコードとして表すことができ、ここでは各レコードがスカラー計測値またはベクトル計測値を持っている。ステップ526でインデックスの値が窓の幅Wに少なくとも等しいと判断されると、ステップ528で、窓の最後に先立つ短期間の間にβで表される勾配を決定する。勾配βの絶対値が第1の予め定義された閾値
より小さい場合には、符号化係数は更新せず、ステップ522に戻る。さもなくば、ステップ532で、線形回帰法により最新のW個の計測値の傾向を判断する。ステップ540で、αで表される回帰線の傾きの絶対値を、第2の予め定義された閾値
と比較する。αの絶対値(|α|で表す)が
より小さい場合には、ステップ522に戻り、フローコントローラが受信した新たな制御パケットからスカラー計測値またはベクトル計測値を得て格納する。一方
である場合には、ステップ542で、予め定義された関数Г(α,β)によって新たな符号化係数Eを決定して、インデックスを0にリセットする。ステップ546で、Eの値を予め定義された最小値Eminより大きく予め定義された最大値Emaxより小さい範囲に設定する。
【0050】
計測値が高い接続トランスミッタンスを示す場合に関数Г(α,β)によりEの値が連続増加する場合には、Eの値が所期の設計値である上限値Emaxを超えることになる。次いでステップ546で、Eの値をEmax(E←min(E,Emax))に低減させる。
【0051】
符号化レートを一定の値未満にまで低減させると、計測値が低い接続トランスミッタンスを示す場合に関数Г(α,β)によりEの値が連続減少する場合には、Eの値は所期の設計値である下限値Emin未満になる。その場合にはステップ546でEの値をEmin(E←max(E,Emin))に増加させる。
【0052】
およびαの絶対値の小さな値から推論されるように、接続トランスミッタンスの変化が無視できる範囲である場合には、βステップ542をかなり長期間の間起動しなくてよい。ただし循環バッファ320で新たな計測値で、処理済みの前の計測値を上書きし、ステップ532で回帰線の傾きαを最新のW個のスカラー計測値(またはW個のベクトル計測値)から決定する。
【0053】
図5のステップは、記憶媒体に格納されているコンピュータ可読命令に従って、フローコントローラ246に関連付けられたプロセッサによって実装される。
【0054】
図6は、クライアント160における遅延、データ損失比率、またはバッファ占有率といった接続特徴の連続する計測値を示す。回帰線620の傾きは正の値であり、これは接続条件が低下していること(接続トランスミッタンスが低下していること)を示すので、符号化レートを下げることで(つまり、符号化係数Eを下げることで)フローレートを下げる必要があることを意味している。
【0055】
図7はクライアント160の接続特徴の連続する計測値を示す。回帰線620の傾きは、正の値から複数の負の値へと変化しており、これは接続条件が一旦低下した後で向上していることを示す。
【0056】
図8は、図4の窓420における8つのスカラー計測値を示す。計測値からの偏差の二乗和を最小にするよう選択された回帰線620の時点tj、tj+1,…tj+7は、傾きα=1.64である。最後の2つの計測値から決定された勾配βは負である。Eの値を予め定義された関数Г(α,β)から決定する。関数Г(α,β)の一例を、表形式で図10に示す。
【0057】
図9は、回帰線の傾きα=−1.64である窓における8つのスカラー計測値を示す。最後の2つの計測値から決定された勾配βは正である。Eの値を予め定義された関数Г(α,β)から決定する。
【0058】
図10は、回帰線の傾きαが正の値である場合の関数Г(α,β)の一例を示す。本図から、勾配βが1.0未満でありα≧0である場合、または、勾配βが1以上でありαが0.1未満である場合には、符号化係数Eを変えない。図8の計測値においては、回帰線の傾きαが正であり勾配βが負になっている。従って図10の関数Г(α,β)では、符号化係数Eを変更しない。
【0059】
同様に図11は、αが負の値である場合の関数Г(α,β)の一例を示す。β≧(−1.2)の場合、または、β<(−1.2)であるがα>(−0.2)である場合には、Eの値は変えない。図9の計測値においては、回帰線の傾きαが負であり勾配βが正になっている。従って図11の関数Г(α,β)においては、符号化係数Eは変えない。
【0060】
図12Aおよび図12Bは、既知のプロトコルを利用してストリーミングサーバ120とクライアント160との間で制御パケットを交換するプロセスを示す。図12Aは、RTP(リアルタイムトランスポートプロトコル)制御パケットをクライアント160に送信するプロセスを示し、図12BはRTCP(リアルタイム制御トランスポートプロトコル)パケットをクライアント160から受信して、フローコントローラ246でRTCPパケットの内容を処理するプロセスを示す。図12Aのプロセスはステップ1220でソースレポータ228(図2)がRTP制御パケットを準備することから開始される。ステップ1222で、符号化係数の現在の値を判断する。ステップ1224でRTPパケットのシーケンス番号およびRTPパケットを送信する時間を記録する。ステップ1226でRTPパケットがクライアント160それぞれに対して送信される。
【0061】
図12Bのプロセスはステップ1240でフローコントローラ246(図2)がRTCPパケットをシンクレポータ242から受信することから開始される。ステップ1242で計測値データをRTCPパケットから抽出する。ステップ1244で、現在の時点と、符号化係数が前に更新された時点との差異を判断する。時間の差異が予め定義された最小更新インターバルよりも小さい場合には、ステップ1240に戻り、待ち状態のRTCPパケットについて検討する、あるいは今後到達するRTCPパケットを待つ。一方で時間の差異が最小更新インターバル以上である場合には、ステップ1246で新たに許可可能な符号化レートを決定する。ステップ1248では符号化係数の更新が必要か否かを判断する。判断結果が肯定的である場合には新たな符号化係数を決定する。判断結果が否定的であった場合にはステップ1240に戻る。ステップ1260で符号化係数を更新して符号器220に伝え、フローコントローラ246(図2)が新たなRTCPパケットを検討する準備が整う(ステップ1240)。
【0062】
図12Aおよび図12Bのステップは図13および図14でさらに詳しく示すが、フローコントローラ246に関連付けられている上述したプロセッサにより、記憶媒体に格納されているコンピュータ可読命令に従って実装される。
【0063】
図13は図12Bのステップ1242をより詳しく示す。ステップ1320で、受信されたRTCPパケットに、シンクレポータ242からの「レシーバレポート」が含まれていないか調べる。RTCPパケットがレシーバレポートを含んでいない場合にはステップ1340を実行して、RTCPパケットがバッファ占有率レポートを含んでいないか調べる。RTCPパケットがレシーバレポートを含んでいる場合には、ステップ1322で、転送遅延を、RTCPパケットの現在の到着時点と、対応するRTPパケットを送信する時点との間の時間の差異として決定する。この、対応するRTPパケットとは、RTCPレシーバレポートの「拡張された最高シーケンス番号が受信された(extended highest sequence number received)」フィールドに示される番号と符合するシーケンス番号を有するRTPパケットのことである。ステップ1326で最小転送遅延を、ステップ1322で計算された転送遅延および接続の最小転送遅延の前の値のうち小さいほうの値に決定する。最小転送遅延を任意の大きな値に初期化する。最小転送遅延は、変動転送遅延の測定用の参照値として将来利用するために維持しておく。
【0064】
図14は、接続メトリックおよび対応する符号化係数を決定するステップの概略を示すフローチャートである。ステップ1420で、ある時間窓におけるパフォーマンス計測値の回帰線の傾きを、任意の公知の分析法により計算する。さらに時間窓の最後付近における計測値の勾配も決定する。さらにステップ1422で、この時間窓におけるデータ損失の統計値を決定する。ステップ1424で、符号化係数のある好適な値(E*と称する)を、回帰線の傾きと勾配とに基づいて、図10および図11を参照して上述したように決定する。ステップ1426で、符号化係数のある好適な値(E**と称する)をステップ1422で決定したデータ損失統計値に従って決定する。ステップ1428で、E*およびE**のうちの小さいほうを選択して新たな符号化係数Eとする。好適な接続条件下では、好適な符号化係数は1.0を超えてよい(つまり、符号器は、接続に割り当てられる公称フローレートを超えるフローレート(ビットレート)を瞬間的に有するようなストリームを生成してもよい、ということである)。
【0065】
こうして決定された符号化係数Eを、さらに接続のクライアント側に配置されているバッファの占有率に従って修正する。ステップ1432では、バッファ占有率データが利用不可能である場合、プロセスをステップ1260(図12B)に送る。さもなくば、ステップ1434で、時間窓でのバッファ占有率計測値が予め定義された閾値を超えるか否かを判断する。超えると判断される場合であってステップ1428で決定された符号化係数が1.0を超える場合には、ステップ1440で好適な符号化係数を1に低減し、プロセスは図12Bのステップ1260に戻る。ステップ1434および1440は一例である規則に従う。バッファ占有率統計値の利用に関する他の規則を利用することもできる。
【0066】
図15は、別の実施形態における接続計測値の処理方法を示し、これによって、連続または重複する窓における計測値の平均値を利用して符号化係数の新たな値が決定される。時間窓1520において採られた、特定の接続特徴(例えば転送遅延またはデータ損失)に対応する計測値の平均値に基づく統計値を、特定の接続特徴の予め定義された許容可能な参照値と比較する。統計値が参照値よりも大幅に超える場合には、符号化係数を下げ、この結果符号化レートが公称フローレート未満に下がる。統計値が参照値よりも大幅に小さい場合には、符号化係数を上げることができる。従って特定の特徴に対応して2つの限界点μ1およびμ2(μ1<μ2)を定義することができる。統計値がμ1を下回る場合には符号化係数を上げ、統計値がμ2を上回る場合には符号化係数を下げる。差異(μ2−μ1)の選択が重要となる。この差異を非常に小さくすると、低い値と高い値との間に不当に急速なフラッピングが生じうる。この差異を非常に大きくすると、応答が遅くなり、応答が全くなってしまう場合すらあり、これは接続条件を著しく変化させる。
【0067】
図16は、各窓が8つの計測値をカバーするような連続且つ重複する窓におけるスカラー計測値の平均値として定義される移動平均を示す(単位は自由である)。それぞれ最初の4つの重複する窓の平均値16.25、17.0、16.75、および17.75は遅い変化を示しており、符号化係数の現在の値を変えなくてよい。しかし、複数の計測値から決定される21.5という平均値は(図16参照)、符号化係数の修正をトリガして、適応符号器220のパラメータを調節させる。図4を参照して上述したように、時間窓の最後に決定されたメトリックに応じて、後続する時間窓が選択される。
【0068】
図17は、符号化係数Eを、経時変化する接続260のメトリックμの現在の値に調和させる方法を示す。任意の接続条件において、メトリックμの値は、符号化係数Eの増加につれて増加する。図17でそれぞれ線1720および1740として示されている2つの限界点μ1およびμ2は、許容可能な接続パフォーマンスの範囲の定義である。図17は、5つの接続トランスミッタンスの値(η1、η2、η3、η4、η5で表し、η1>η2>η3>η4>η5である)についての符号化係数Eに対するメトリックμの依存関係の一例を示す。当初はEが1に等しく設定されており、対象クライアントに割り当てられた公称符号化レートで符号器は動作していた。公称符号化レートは、通常の接続条件下で接続パフォーマンスが許容可能になるように選択され、この場合トランスミッタンスはη1に等しい。図17で、接続メトリックμのサンプル値を、インデックス(0)から(9)で表す。トランスミッタンスが最大値η1である場合には、E=1.0であり、現在のメトリックの値は{インデックス(0)}となり、μ1とμ2との間にある。その後、接続条件が低下して、接続のトランスミッタンスが値η2に下がり、メトリックμは上限値μ2を超える新たな値{インデックス(1)}となる。フローコントローラ246は、値e1だけ符号化係数Eを減少させ、これによりメトリックμの新たな値{インデックス(2)}がインターバル(μ1,μ2)範囲に収まるようになる。接続条件は低下を続け、接続トランスミッタンスがη4<η2にまで低下し、メトリックμの新たな値{インデックス(3)}がインターバル(μ1,μ2)をかなり超えるようになる。増加したメトリックに呼応して、フローコントローラ246は、符号化係数をe3分低下させる。メトリックμの値は{インデックス(4)}下がるが、依然としてμ2より高い。符号化係数がさらに2回e4およびe5下がると、インデックス(5)および(6)が表す値となり、符号化係数は約0.56となり、メトリックμは、インターバル(μ1,μ2)の範囲内である{インデックス(6)}の値に下がる。その後、接続条件は向上し、符号化係数Eの同じ値0.56にて、メトリックμが値{インデックス(7)}に下がり、これはインターバル(μ1,μ2)より下回っている。フローコントローラ246は、符号化係数をe7分増やし、これによりμ{インデックス(8)}の値は増加するが、依然としてμ1未満である。フローコントローラ246はさらに符号化係数をe8分増やして0.75の値として、μの値{インデックス(9)}をインターバル(μ1,μ2)の範囲で増加させる。符号化係数Eは、接続トランスミッタンスにその後変化が生じてメトリックが変化するまでは、0.75の値に留まる。
【0069】
図18は、図17のプロシージャのステップ1820から始まる主要なステップのフローチャートである。ステップ1820で、メトリックμの新たな値を、図15および図16を参照して上述した窓における計測値から決定する。ステップ1824で、この新たな値を上限値μ2と比較して、μ>μ2である場合には、ステップ1860で、Eの現在の値を係数x2<1乗算することで符号化係数を低くして、プロセスはステップ1820に戻る。μ≦μ2である場合には、ステップ1826でメトリックμの新たな値を、許容可能なインターバル(μ1,μ2)の下限値μ1と比較する。μ≧μ1である場合には、メトリックの新たな値が許容可能なインターバル(μ1,μ2)の範囲内にあると判断され、プロセスはステップ1820に戻り、メトリックμの新たな値を処理する。μ<μ1である場合には、ステップ1840で、Eの現在の値を係数x1>1で乗算することで符号化係数Eを更新して、プロセスはステップ1820に戻る。係数x1およびx2(x1>1、x2<1)は、(μ1−μ)および(μ2−μ)の差異にそれぞれ依存してよい。積(x1×x2)が1未満である場合、μ<μ1のとき、Eの値は比較的小さなステップで上昇し、μ>μ2のときEは比較的大きなステップで低下する。
【0070】
図19は、図17のプロセスをさらに詳しく示す。予め定義された数の計測値をカバーする窓における計測値の平均値をメトリックμとすることにする。フローコントローラ246の計算を低減させるべく、この平均値を窓における計測値の総計Σで置換え、許容可能なインターバル(μ1,μ2)をインターバル(Σ1,Σ2)で置換えると、Σ1=w×μ1およびΣ2=w×μ2となり、ここでwは1つの時間窓あたりの計測値の数である。
【0071】
ステップ1920で、値Eを1に初期化する(つまり、符号器が最初は対象クライアントに割り当てられた公称符号化レートで動作することを要求されている、ということになる)。長さwである循環アレイV(図3の循環バッファ320を表す)の全てのエントリをゼロに設定し、アレイVのw個のエントリの総計Σをゼロに設定する。整数「インデックス」は、アレイVの現在位置をトラックし、整数「期間(period)」は、最新の符号化係数更新時点をトラックする。ステップ1920で2つの整数「インデックス」および「期間」をゼロに設定する。
【0072】
ステップ1922で計測値σをフローコントローラ246が受信した制御パケットから抽出する。ステップ1924で、メトリックμに比例する総計Σを、アレイVの位置「インデックス」のエントリを減算して、新たな計測値σを加算することにより更新する。アレイVは循環するので、第1の時間窓の後、位置インデックスで減算されたエントリは、現在の窓の前に計測された計測値を表す。第1の時間窓の後、第1の窓の総計Σは、wでメトリックμを乗算した値を正しく示す値となる。
【0073】
ステップ1926で、新たな計測値σをアレイVの位置「インデックス」に書き込む。ステップ1928で、整数「期間」を1増分させて、循環アレイVの現在の位置「インデックス」を1(モジュロw)増分させる(つまり、インデックスの値がwに達すると、インデックスをゼロとする、ということである)。ステップ1930で、符号化係数更新の直前の時点までの計測値の数が、予め定義された限界値P*未満であると判断されると、プロセスはステップ1922に戻り、新たな計測値を処理する。さもなくばプロセスはステップ1932に進む。ステップ1932に達すると循環アレイVは最新の計測値をw個有しており、現在の時点と、符号化係数Eが修正される直前の時点との間の時間インターバルは、少なくとも閾値P*に等しくなっている。P*の値は、過剰な更新レートを回避可能な程度に大きく、接続状態の変化に対応可能な程度に小さくなるように選択される。P*の値は、フローコントローラ246の設計者が設定する設計パラメータである。
【0074】
ステップ1932では、現在の総計Σを、許容可能な総計インターバル(Σ1,Σ2)の上限値Σ2と比較する。Σ>Σ2である場合には、ステップ1940で現在の値を係数x2<1で乗算することでEを低減させ、ステップ1950で整数「期間」をゼロに等しくなるようリセットして、プロセスはステップ1922に戻る。Σ≦Σ2である場合には、ステップ1934で、現在の総計Σを、許容可能な総計インターバル(Σ1,Σ2)の下限値Σ1と比較する。Σ<Σ1である場合には、ステップ1942で現在の値を係数x1>1で乗算することでEを増加させ、ステップ1950で整数「期間」をゼロに等しくなるようリセットして、プロセスはステップ1922に戻る。ステップ1934でΣ≧Σ1であると判断した場合には、現在の総計Σが許容可能な総計インターバル(Σ1,Σ2)の範囲内であると結論付けられる。プロセスはステップ1922に戻り、Eの値は変えない。
【0075】
図19のステップは、各コンピュータ可読記憶媒体に格納されているコンピュータ可読命令に従ってフローコントローラ246に関連付けられた上述したプロセッサにより実装される。
【0076】
<複数の接続メトリック>
図17に示したメトリックμは、転送遅延、データ損失比率、または復号器240におけるバッファ占有率等の接続パフォーマンスの複数の態様の1つを表すスカラーである。従って、限界点μ1およびμ2もまたスカラーである。符号化係数を修正する基準は、符号化係数を修正し(図18および図19)、メトリックの現在の値と、該メトリックの許容可能な範囲との偏差の関数である、係数x1およびx2を有するあるパフォーマンスに関する接続メトリックμに基づいて決定されてよい。接続パフォーマンスの複数の態様を考慮に入れるために、対応するメトリックを正規化して、複合メトリックを、このようにして選択した限界点μ1およびμ2を有する複数の正規化メトリックとの重み付け合計として定義することができる。例えば、遅延メトリックを複数の公称遅延値(例えば、対象となる接続に推定される最小遅延)に関して正規化して、サイズをなくす(becoming dimensionless)ことができる。その性質上サイズのないデータ損失メトリックを正規化メトリックとして利用することができ、バッファ占有率メトリックを(これもサイズがない)各バッファの容量に関して正規化することができる。例えば、遅延、データ損失比率、バッファ占有率に関して同時発生した計測値がそれぞれ20ミリ秒、0.02、および200であったとする。この場合に、20ミリセカンドの遅延メトリックは、公称(参照)遅延10ミリセカンドに基づいて値2.0に正規化することができ、200ユニットのデータのバッファ占有率は、250ユニットのデータのバッファ容量に基づいて0.8と正規化することができる。複合メトリックμ*は、μ*=μdelay+a×μloss+b×μbufferとして定義することができ、本式においてμdelay、μloss、μbufferは、それぞれ、正規化された遅延ベースのメトリック、データ損失メトリック、および、正規化されたバッファ占有率メトリックを表す。パラメータaおよびbをそれぞれ80.0および2.5とすると、上述した例におけるメトリックの複合メトリックμ*は、μ*=2.0+80.0×0.02+2.5×0.8=5.6となる。
【0077】
接続パフォーマンスの複数の態様を考慮する、より完全な方法では、パフォーマンスの各態様に対して、別個のメトリックを導出し、別個の許容可能なインターバルを特定する。一セットの現在のメトリックのうちの任意の現在のメトリックが許容インターバルを超えている場合、符号化係数Eを低減させる。後続する時間窓において決定される新たなメトリックは、符号化係数Eの変化および接続トランスミッタンスの変化に応じて、符号化レートの変化の影響を受けることがある。そこで、新たなメトリックのうち許容インターバルを上回るものがなくなるまで、再度符号化係数Eを低減させることができる。これに対して、符号化係数Eの増加は、全ての現在のメトリックそれぞれが銘々の許容インターバルを下回ったときに初めて可能であるとする。この結果、新たなメトリックの少なくとも1つが許容インターバル内にあり、残りの新たなメトリックがいずれも許容インターバルを上回らないときに、Eは不変となる。
【0078】
図20は、2つのメトリックμ(1)およびμ(2)の現在の値における上述した符号化係数Eの調節方法を示す。図20では、μ(1)が上方に増加して、μ(2)が下方に増加している。第1のメトリックμ(1)の許容インターバル2020を、ここでは第1の許容インターバルと称し、これは下限値μ1(1)と上限値μ2(1)とを有する。第2のメトリックμ(2)の許容インターバル2040を、ここでは第2の許容インターバルと称し、これは下限値μ1(2)と上限値μ2(2)とを有する。参照番号2022、2024、2026、および2028は、値E1、E2、E3、およびE4を有する符号化係数にそれぞれ対応する第1のメトリックの値を示している(E1<E2<E3<E4)。参照番号2042、2044、2046、および2048は、値E1、E2、E3、およびE4を有する符号化係数にそれぞれ対応する第2のメトリックの値を示している(E1<E2<E3<E4)。
【0079】
例えば符号化係数を値E4に設定すると、第1のメトリックの値(2028)は各上限値μ2(1)を超える値に決定され、第2のメトリックの値(2048)は第2の許容インターバル(μ1(2),μ2(2))の範囲内に決定される。2つのメトリックのうちいずれかの値が対応する許容上限値よりも高いので、現在の値を係数x2<1で乗算することで符号化係数を低減させる。符号器220はこのようにして符号フローレートを調節して、2つのメトリックの新たな値を、フローレートを調節した後の未加工(fresh)計測値から決定する。符号化係数が値E3<E4に低減した場合には、第1のメトリックの値(2026)を第1の許容インターバル(μ1(1),μ2(1))内に決定して、第2のメトリックの値(2046)を第2の許容インターバル(μ1(2),μ2(2))の下限値μ1(2)をかなり下回る値に決定する。(1)接続状態が悪くなり、メトリックのいずれかが許容上限値を超えるようになり、符号化係数も低下して符号化係数をさらに低減させる場合、あるいは、(2)接続状態が向上して、第1および第2のメトリック両方の値がそれぞれの許容下限値を下回り、符号化係数を増加させることができるようになった場合、以外には、これ以上符号化係数を変更しない。
【0080】
符号化係数を値E1に設定した場合、第1のメトリックμ(1)の値(2022)は下限値μ1(1)を下回る値に決定され、第2のメトリックの値(2042)は下限値μ1(2)を下回る値に決定される。符号化係数は値E2に増加させる。この結果、第2のメトリックμ(2)の値は、許容インターバル(μ1(2),μ2(2))内の、上限値μ2(2)に近い値(2044)に増加する。第1のメトリックμ(1)の値は値(2024)まで増加したものの、下限値μ1(1)を依然として下回っている。接続トランスミッタンスに変更がない場合には、符号化係数をさらに増加させることで、第2のメトリックμ(2)を上限値μ2(2)を上回る値に増加させうる。接続状態の変化が大きく、符号化係数を増加させることができるようになる、または、強制的に符号化係数を低下させる必要が出てくるまでは、符号化係数はこれ以上変更させない。
【0081】
図21は、3つのメトリックμ(1)、μ(2)、μ(3)の現在の値による符号化係数調節法を示す。説明を簡潔にする目的から、第1のメトリックμ(1)、第2のメトリックμ(2)、および第3のメトリックμ(3)の3つの許容インターバル2102、2122、および2142が、それぞれ重複しないストライプとして示されている。しかし、3つのメトリックは、1つの接続の異なる特徴を表しうるので、別個に処理される。従って、メトリックμ(1)、μ(2)、μ(3)の許容インターバル2102、2122、および2142のそれぞれの位置は互いに関連している値を反映しているわけではない。第1の許容インターバル2102は下限値μ1(1)、および上限値μ2(1)を有する。第2のメトリックμ(2)の第2の許容インターバル2122は下限値μ1(2)、および上限値μ2(2)を有する。第3のメトリックμ(3)の第3の許容インターバル2142は下限値μ1(3)、および上限値μ2(3)を有する。参照番号2104、2106、2108、2110、2112、2114、2116、および2118は、符号化係数の値E1からE7に対応する第1のメトリックμ(1)の値を示す(Ej<Ej+1、1≦j≦6)。同様に、参照番号2124、2126、2128、2130、2132、2134、2136、および2138は、E1からE7に対応する第2のメトリックμ(2)の値を示し、参照番号2144、2146、2148、2150、2152、2154、2156、および2158は、E1からE7に対応する第3のメトリックμ(3)の値を示す。
【0082】
適応符号器220が、公称レートと符号化係数E1とに従って符号化パラメータを調節した場合を考慮する。特定の窓の最後に決定されたメトリックベクトルは、2104、2124、2144が示すμ(1)、μ(2)、μ(3)のメトリック値を有する。値2104、2124、2144は、それぞれ許容インターバルの下限値を下回る値である。従って、符号化係数は、各ステップにおける計測値から決定される3つのメトリック{μ(1)、μ(2)、μ(3)}いずれかがそれぞれの許可可能ゾーンの上限値に十分近づくまで、段階的に増加させる。図21の例においては、この条件は、適応符号器220が自身のフローレートを符号化係数E2に対応するよう調節した後の2126が示すメトリックμ(2)の値に適合している。
【0083】
適応符号器220が、公称レートと符号化係数E3とに従って符号化パラメータを調節した場合であれば、2108、2128、2148が示すメトリックμ(1)、μ(2)、μ(3)の値は、それぞれの許容インターバルを下回る。符号化係数を値E4に増加させ、この値においては、メトリックμ(1)の値(参照番号2110)は自身の許容インターバルの上限値に近く、メトリックμ(2)、μ(3)の値(2130および2150)がそれぞれの許容インターバル内にある。
【0084】
適応符号器220が、公称レートと符号化係数E7とに従って符号化パラメータを調節した場合であれば、2138が示すメトリックμ(2)の値は、許容インターバル2122の上限値を上回る。符号化係数を値E6<E7に低減させる。メトリックμ(1)およびμ(3)はそれぞれの許容インターバルを下回る値2116および2156に低減したが、メトリックμ(2)は、許容インターバル2122内の値2136に低減した。従って、値E6においては符号化係数を変えない。接続トランスミッタンスが低下し、結果としてそれぞれメトリックが2114、2134、および2154が示す値にまで増加した。メトリックμ(2)が上限値を超えているので、符号化係数がE5の値まで低下した。
【0085】
図22は、クライアント160への接続においてストリーミングサーバ120が送信した信号のピーク符号化レート(ピークフローレート)の関数でパケット損失比率Θを示す。前に定義したように、接続トランスミッタンスは、ストリーミングサーバからクライアントまでの接続を、所期のパフォーマンス上の目的に背くことなく維持することができるピークフローレートのことである。図22の例におちえは、トランスミッタンスはパケット損失パフォーマンスのみによって定義される。図22は、接続のトランスミッタンスに関して正規化されたピーク符号化レートとパケット損失比率との間の関係の一例を示している。ピーク符号化レートを既知とする。しかし、接続のトランスミッタンスは経時的に変化することがあり、分からないことがある。ピーク符号化レートがトランスミッタンスより高い場合、パケット損失比率Θはゼロより大きく、ピーク符号化レートのトランスミッタンスに対する比率は、1/(1−Θ)として決定することができ、符号化レートは係数(1−Θ)分低減し、パケット損失がなくなる。パケット損失比率は上述したように選択される時間窓において計測されてよい。線2210は、パケット損失比率Θをピーク符号化レートの現在のトランスミッタンスに対する比率ρの関数として示したものである。ρ≦1.0のときにΘの値はゼロである。ρ=1.5でΘ=0.33であり、ρ=2.0ではΘ=0.5である。
【0086】
Θの計測値がゼロの場合には、ピーク符号化レートのトランスミッタンスに対する比率は、0より大きく1.0未満であるいずれかの値となり、パケット損失を回避しつつ信号の忠実度を向上させることができる符号化レートの適切な増分(符号化係数Eの増分)を正確に判断し難くなる。符号化レートは、パケット損失の計測値が(Θ>0)となり、符号化レートを正確に補正することができるようになるまで段階的に増加させることができる。Θの計測値がかなり小さくなると(例えば0.001のオーダにまで小さくなると)、符号化レート補正は不要とすることができる。パケット損失比率の下限値Θmin(線2220)および上限値Θmax(線2230)が定義する許容インターバルによって、小さなΘの値を不要に処理してしまうことが回避されるようになる。ΘminおよびΘmaxの値は、設計パラメータである。Θminについて0.001、およびΘmaxについて0.02が適切な値であると思われる。
【0087】
本発明は、プロセッサにより実行されると上述した方法のステップを実行する命令を格納したDVD、CD−ROM、フロッピー(登録商標)等のコンピュータ可読媒体、あるいは不揮発性メモリ等のメモリも提供する。
【0088】
本発明の特定の実施形態について詳述してきたが、記載した実施形態は例示を意図しており限定は意図していない。図面に示し明細書に記載した実施形態の変更例および変形例は、広義の本発明の範囲から逸脱することなく以下の請求項の範囲に含まれうる。
【技術分野】
【0001】
本国際出願は、2008年7月28日出願のLABONTE,Francis等による「Flow-Rate Adaptation for a Connection of Time-Varying Capacity」なる名称の米国特許出願第12/180,697号明細書、および、「Data Streaming Through Time-Varying Transport Media」なる名称の米国特許出願第12/180,704号明細書の優先権を主張しており、これらをここに参照として組み込む。
【0002】
本発明は、ソースが自身のフローレートを自身から個々のシンクへの経路の条件に応じて適合させることができるような、ソースから複数のシンクへのデータ通信に係る。
【背景技術】
【0003】
データストリーミングシステムにおいては、サーバは複数のシンクと通信することがある。一般的には、サーバに関連付けられたデータソースから個々のデータシンクへの経路は、ソースから共有ネットワークの第1のスイッチノードへの第1のスパン、共有ネットワークを経由する第1のスイッチノードから共有ネットワークの第2のスイッチノードへのスイッチ経路、および、第2のスイッチノードから個々のシンクへの第2のスパンを含む。ある経路が維持可能な最大フローレートは、共有ネットワークの負荷条件および送信媒体の物理的条件に応じて経時変化しうる。経路のどのセグメントも、複数の異なる優先順位が指定された接続により共有されうる。
【0004】
接続が遅延可能なデータ(例えばコンピュータファイル)を搬送する場合には、経路条件が変動したとしても、失われたデータまたは失われることが分かっているデータの再送信が可能な公知のエンドツーエンドプロトコルを利用することで、送信されるデータの整合性を維持することができる。接続が、データの再送信が望ましくないようなリアルタイムビデオ信号等の遅延不可能なデータを搬送する場合には、信号ソースまたは信号ソースに関連付けられた信号符号器が、それぞれの接続で分かっている容量に応じて信号の内容を適合させることが非常に重要になる。
【0005】
従って、接続状態のリアルタイムな評価および信号の内容の適合を行うための応答手段を設けて、接続状態が経時変化した場合であってもサービスの品質を維持できるようにする必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、ソースからシンクへの経路の条件に応じてソースからシンクへのデータのフローレートを制御する方法および装置を提供する。
【課題を解決するための手段】
【0007】
一態様によると、本発明は、経時変化する接続により、符号器から復号器へデータをストリーミングする方法を提供する。方法は、接続を特徴付ける計測値を得る段階と、計測値によって接続のトランスミッタンスの変化を推定する段階と、トランスミッタンスの変化と符合する符号器の現在の符号化レートの調節を決定して好適な符号化レートを得る段階と、符号器に命じて、好適な符号化レートに従って信号を符号化させる段階とを備える。この接続は、元々は公称符号化レートを割り当てられており、これは符号器の分類に応じて交渉または決定されうる。
【0008】
計測値は、符号器と復号器との間の転送遅延、データ損失比率、または復号器の受信バッファの占有率等のパフォーマンス特性を含みうる。計測値は、予め定義された期間に相当する時間窓で得られると好適である。
【0009】
符号化レートは、公称符号化レートを、計測値から導出された第1のメトリックに従って決定される第1の符号化係数で乗算することにより更新することができる。第1の符号化係数は、第1のメトリックの予め定義された関数に従って決定することができる。時間窓における計測値の平均値を、第1のメトリックとして選択することができる。
【0010】
符号化レートは、公称符号化レートを、時間窓における計測値の傾向に基づく第2のメトリックに従って決定される第2の符号化係数で乗算することにより更新することもできる。符号化係数は、現在の値を、第2のメトリックの予め定義された関数に従って決定される係数で乗算することによって更新することもできる。計測値の傾向は、計測値を時間窓の時間に関連付ける回帰線の傾きに基づいて決定されてよい。計測値の傾向は、回帰線の傾きと、時間窓内の短期間中の計測値の勾配とに基づいて決定されてもよい。
【0011】
別の態様によると、本発明は、経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法を提供する。方法は、接続の現在の符号化レートを決定する段階と、第1の時点と第2の時点との間の時間窓における転送遅延計測値を得る段階と、時間窓におけるデータ損失比率計測値を得る段階とを備える。そして転送遅延計測値を時間窓内の各時点に関連付ける回帰線を決定し、その傾きを、計測値の傾向を示すものとみなす。さらに第2の時点の直前で選択された転送遅延計測値の勾配を決定する。
【0012】
傾きおよび勾配に従って、第1の仮の符号化レートを決定し、データ損失比率計測値に従って、第2の仮の符号化レートを決定してよい。そして、第1の仮の符号化レートおよび第2の仮の符号化レートのうち小さいほうを、好適な符号化レートとして選択することで、転送遅延要件およびデータ損失要件のうち、より厳しい要件に適合させることができる。
【0013】
方法はさらに、クライアントデバイスに関連付けられたバッファの占有率に関する計測値を得る段階を備える。転送遅延要件およびデータ損失パフォーマンス要件を満たす好適な符号化レートが公称符号化レートを超え、占有率が予め定義されたバッファ占有率の閾値を越えている場合には、好適な符号化レートを公称符号化レートに等しくなるまで低減させることで、バッファのオーバフローを回避することができる。第1の仮の符号化レートは、現在の符号化レートを、予め定義された関数E*=Г(α,β)に従って決定される第1の符号化係数E*で乗算することにより決定され、αは回帰線の前記傾きであり、βは勾配である。
【0014】
方法ではさらに、Θで表す前記データ損失比率計測値を、予め定義されたデータ損失比率の許容インターバルの下限値Θminおよび上限値Θmaxと比較する。Θ>Θmaxであれば、第2の符号化係数E**をE**=(1−Θ)と決定する。Θ<Θminであれば、第2の符号化係数E**をE**=x>1と決定し、xは設計パラメータである。そして、現在の符号化レートを第2の符号化レートE**で乗算して第2の符号化レートを決定することができる。
【0015】
さらなる態様によると、本発明は、データストリーミングシステムを提供する。システムは、複数のクライアントと通信するストリーミングサーバを備え、各クライアントは復号器、データバッファ、およびシンクレポータを有する。
【0016】
ストリーミングサーバは、信号ソースと、信号ソースが生成する信号を符号化する適応符号器と、複数のクライアントを対象とする複数のダウンストリーム制御パケットを作成するソースレポータと、複数のクライアントから複数のアップストリーム制御パケットを受信して、複数のクライアントそれぞれに個々に符号化係数を決定するフローコントローラとを備える。各符号化係数は、各クライアントを対象とする信号の符号化レートを決定する。
【0017】
特定のクライアントに関連付けられたシンクレポータは、フローコントローラを対象とする複数のアップストリーム制御パケットを作成する。フローコントローラは、ストリーミングサーバと特定のクライアントとの間で交換された複数のダウンストリーム制御パケットと対応する複数のアップストリーム制御パケットとを利用して、接続の現在の状態を判断する。
【0018】
ソースレポータから特定のクライアントに送られるダウンストリーム制御パケットはパケット識別子を含む。特定のダウンストリーム制御パケットに呼応して特定のクライアントのシンクレポータから送られる対応するアップストリーム制御パケットは、パケット識別子を含む。
【0019】
アップストリーム制御パケットも、特定のクライアントに関連付けられたデータバッファの占有率の表示を含んでよい。フローコントローラは、特定のクライアントのアップストリーム制御パケットを処理して、ストリーミングサーバから特定のクライアントへの転送遅延と、損失したダウンストリーム制御パケットの比率とから、転送遅延のインジケータを決定する。
【0020】
別の態様によると、本発明は、経時変化する接続により、符号器から復号器へデータストリーミングする方法を提供する。方法は、符号器の出力のフローレートを決定するべく符号化係数を符号器に関連づける段階と、接続のパフォーマンスメトリックと、下限値および上限値を有するパフォーマンスメトリックの許容インターバルとを定義する段階と、現在の符号化係数で時間窓における接続の1セットのパフォーマンス計測値を得る段階と、1セットの計測値に従って接続のメトリックの現在の値を決定する段階と、メトリックの現在の値と許容インターバルとに従って、符号化係数を好適な符号化係数に調節する段階とを備える。
【0021】
メトリックの現在の値が許容インターバルの下限値を下回る場合、現在の符号化係数を第1の係数で乗算して、好適な符号化係数を生成する。メトリックの現在の値が上限値を上回る場合、現在の符号化係数を第2の係数で乗算して、好適な符号化係数を生成する。第1の係数は1より大きく、第2の係数は1より小さい。好適には、第1の係数と第2の係数との間の積は1未満である。メトリックの現在の値が許容インターバル内にある場合には、現在の符号化係数を変更しなくてよい。
【0022】
第1の係数は、メトリックの現在の値と下限値との間の差異の関数として決定することができる。第2の係数は、メトリックの現在の値と上限値との間の差異の関数として決定することができる。メトリックは、時間窓中の転送遅延の平均値、時間窓中のデータ損失の平均値、または時間窓の最後に計測された復号器のバッファの占有率のインジケータとして決定することもでき、ここで復号器のバッファは、接続により受信したデータを保持する。
【0023】
方法はさらに、好適な符号化係数が現在の符号化係数とかなり異なっている場合に、符号器に命じて、好適な符号化係数と公称符号化係数とに従って信号を符号化させる段階を備える。
【0024】
さらなる態様によると、本発明は、接続の複数のパフォーマンス特性の測定に基づいて経時変化する接続により、符号器から復号器へデータストリーミングする方法を提供する。方法は、符号器の出力のフローレートを決定する符号化係数を接続に関連付ける段階と、複数のパフォーマンス特性を接続と関連付ける段階と、複数のパフォーマンス特性と一対一の関係にある複数のパフォーマンスメトリックを定義する段階とを備える。
【0025】
現在の符号化係数で、時間窓における接続のパフォーマンス計測値の複数のセットを得るが、ここでパフォーマンス計測値の各セットは、複数のパフォーマンス特性のいずれか1つに対応している。各パフォーマンスメトリックの現在の値を、計測値の対応するセットを用いて決定して、パフォーマンスメトリックの現在の値のセットを生成する。そして好適な符号化係数を、各パフォーマンスメトリックの現在の値に従って決定する。
【0026】
方法ではさらに、複数のパフォーマンスメトリックの現在の値それぞれを許容インターバルそれぞれと比較することにより、符号化係数が調節される。各々が複数のパフォーマンスメトリックのいずれか1つに対応しているような1式の許容インターバルを定義する。各許容インターバルは、下限値と上限値それぞれから定義される。パフォーマンスメトリックの現在の値のセットの各エレメントが対応する許容インターバルの下限値を下回る場合、現在の符号化係数を、1より大きい第1の係数で乗算して、好適な符号化係数を生成する。パフォーマンスメトリックの現在の値のセットの少なくとも1つのエレメントが対応する許容インターバルの上限値を上回る場合、現在の符号化係数を、1より小さい第2の係数で乗算して、好適な符号化係数を生成する。
【0027】
第1の係数は1より大きく、第2の係数は1より小さい。符号化係数を遅いペースで増加させ、比較的速いペースで低下させるには、第1の係数と第2の係数との間の積が1未満になるよう選択するとよい。
【0028】
複数のパフォーマンス特性には、符号器から復号器への転送遅延、データ損失、接続により受信したデータを保持する復号器のバッファの占有率が含まれてよい。複数のパフォーマンスメトリックには、時間窓中の転送遅延の平均値、時間窓中のデータ損失の平均値、および、時間窓中の復号器のバッファの占有率値が含まれてよい。パフォーマンス計測値の複数のセットは、符号器と復号器との間の制御データの交換により得られて良い。データの交換は、リアルタイムトランスポートプロトコル(RTP)およびリアルタイムトランスポート制御プロトコル(RTCP)の利用に基づき行われてよい。
【0029】
別の態様によると、本発明は、経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法を提供する。方法は、接続の現在の符号化レートを決定する段階と、第1時点と第2時点の間のW個の計測値を含む時間窓における接続の特定の特徴の計測値を得る段階と、計測値から特定の特徴のメトリックμを決定する段階とを含む。
【0030】
μが、下限値μ1と上限値μ2とを有する予め定義された許容インターバル内にある場合、現在の符号化レートは変更する必要がない。一方、μが許容インターバルの上限値μ2を上回っている場合には、現在の符号化レートを係数x2<1で乗算して、μが許容インターバルの下限値μ1を下回っている場合には、現在の符号化レートを係数x1>1で乗算することができる。
【0031】
特定の特徴が接続による転送遅延である場合、メトリックは、転送遅延の計測値σを得る段階と、計測値σを加算して循環アレイVの現在のインデックスのエントリを減算することにより総計Σを更新する段階であって、循環アレイは、特定の特徴の前の計測値を含むW>1個のエントリを有する段階と、循環アレイの現在のインデックスに計測値σを格納する段階とにより決定される。計測値の累積数を表すカウンタは1増分され、現在のインデックスは1増分することにより更新される(つまりインデックスが値モジュロWに達すると0にリセットする)。インデックス、モジュロWを利用することにより、最新のW個の計測値が格納され、カウンタの目的は、メトリックを決定するための連続する時間窓の間を離散させること(space)である。従って、メトリックμとして利用される総計Σを利用することで、カウンタが閾値P*以上である場合のみに、符号化レートの調節が必要であると決定することができる。平均値Σ/Wの代わりに総計Σを利用する目的は、計算を減らすことである。下限値μ1を、Wで乗算された許容可能な転送遅延の下限値として決定して、上限値μ2を、Wで乗算された許容可能な転送遅延の上限値として決定する。現在の符号化レートの調節が終わるごとに、カウンタをゼロにリセットする。閾値P*は、現在の符号化レートを調節する任意の連続する2つのステップ間の時間間隔が予め定義された最小の時間間隔より大きくなる程度に十分大きい値とする。係数x1は、(μ1−Σ)の関数として決定されてよく、係数x2は(Σ−μ2)の関数として決定される。
【0032】
特定の特徴がデータ損失比率である場合、メトリックμは、時間窓において決定されたデータ損失比率Θである。下限値および上限値μ1およびμ2>μ1は、許容可能なデータ損失比率の限界値である。係数x1は、Θがμ1未満であるとき所定の乗数x>1として決定され、係数x2は、Θ>μ2であるとき(1−Θ)として決定される。
【図面の簡単な説明】
【0033】
本発明の実施形態を、添付する例示的な図面を参照しながら以下に記載する。
【図1】本発明の一実施形態における経時変化する容量を有する接続のフローレート適合システムを組み込むネットワークを示す。
【図2】本発明の一実施形態における、符号化レートが接続状態に適合されるよう、可変容量を有する接続による復号器に接続する符号器を含むシステムを示す。
【図3】本発明の一実施形態における、接続を特徴付ける選択された計測値を格納する図2の符号器に関連付けられた循環バッファを示す。
【図4】本発明の一実施形態における、図2のシステムの符号器で受信された接続の計測値を示し、これら計測値は、互いに分離した、あるいは重複する時間窓で分析されている。
【図5】本発明の一実施形態における、時間窓内における計測値の変動に基づいて符号化係数を決定する方法を示すフローチャートである。
【図6】複数の時間窓における連続する計測値の複数の回帰線の一例を示しており、本発明の一実施形態においては、この回帰線の傾きを図5の方法で利用して、符号化レートの好適な値を決定する。
【図7】本発明の一実施形態において利用される正および負の傾き両方を有する複数の回帰線の別の例を示す。
【図8】図5の方法を示す正の傾きおよび負の勾配を有する回帰線の元である、時間窓における計測値を例示する。
【図9】図5の方法を示す負の傾きおよび正の勾配を有する回帰線の元である、時間窓における計測値を例示する。
【図10】本発明の一実施形態における、線形回帰の傾きおよび計測値の勾配の両方が定義する領域に従って決定される離散ステップにおいて、符号化係数のデクリメントが生じる図5の方法を示す。
【図11】本発明の一実施形態における、線形回帰の傾きおよび計測値の勾配の両方が定義する領域に従って決定される離散ステップにおいて、符号化係数のインクリメントが生じる図5の方法を示す。
【図12A】本発明の一実施形態における、リアルタイムトランスポートプロトコル(RTP)を利用して接続の計測値を得るステップを示すフローチャートである。
【図12B】本発明の一実施形態における、リアルタイム制御トランスポートプロトコル(RTCP)を利用して接続の計測値を得るステップを示すフローチャートである。
【図13】本発明の一実施形態における、符号器から送られるRTPパケット、および、復号器から受信するRTCPパケットに基づいて接続のパフォーマンス計測値を判断する処理を示すフローチャートである。
【図14】本発明の一実施形態における、接続メトリックと対応する符号化係数とを決定するステップを示すフローチャートである。
【図15】本発明の一実施形態における、符号化係数を決定するための、互いに分離した、あるいは重複する時間窓で採られた計測値を処理する別の方法を示す。
【図16】本発明の一実施形態における、重複する時間窓の計測値の移動平均値の計算を示す。
【図17】本発明の一実施形態における、接続のメトリックと予め定義された限界値との比較に基づき好適な符号化係数を決定する方法を示す。
【図18】本発明の一実施形態における、図17の方法の基本的なステップを示すフローチャートである。
【図19】本発明の一実施形態における、計算を最小限にするさらなるステップを含む図17の方法のステップを詳述するフローチャートである。
【図20】2つのメトリックの現在の値に応じて符号化係数を調節する図17を参照して記載されたプロセスの拡張を示す。
【図21】3つのメトリックの現在の値に応じて符号化係数を調節する図17を参照して説明するプロセスの拡張を示す。
【図22】本発明の一実施形態の説明に利用される、パケット損失比率、対、ストリーミングサーバから送信される信号の符号化レートの接続トランスミッタンス(connection transmittance)に対する比率の間の変動を示す。
【発明を実施するための形態】
【0034】
<用語>
符号フローレート:符号化される信号のビットレートは経時的に変動するので、本明細書では、符号化される信号の最大ビットレートをフローレートと称することにする。
適応符号器:適応符号器は、信号を、予め定義されたフローレート範囲内の特定のフローレートに符号化する機能を有するデバイスのことである。符号化により、符号化および信号の忠実度(encode-signal fidelity)が最大化されるよう試みられる。
公称フローレート:クライアントとストリーミングサーバとの間で交渉されたフローレート、あるいは、クライアントの知っている範囲でストリーミングサーバが自動的に決定するフローレートを、本明細書では公称フローレートと称する。
符号化係数:Eで表される符号化係数は、ストリーミングサーバとクライアントとの間の接続の現在の状態に適合する好適なフローレートを決定するための、公称フローレートで乗算されたスケールファクタである。
接続トランスミッタンス(connection transmittance):ストリーミングサーバからクライアントまでの接続を、所期のパフォーマンス上の目的に背くことなく維持することのできる最大フローレートのことを、本明細書では接続トランスミッタンスと称する。
パフォーマンス特性:本明細書では、パフォーマンス特性は、転送遅延の変化、データ損失比率、信号歪曲等の計測値可能な接続特性として定義される。
スカラー計測値:1つの接続特性に関する接続計測値を、スカラー計測値と称する。
ベクトル計測値:ベクトル計測値は、同時発生する複数の接続計測値により構成される。
統計値:統計値とは、データサンプル1セットから導出される値(例えば平均値)である。
メトリック:メトリックとは、電話通信ネットワークにおける経路または接続の品質の計測値のことである。メトリックは、経路または経路内の接続のレインテンシー、信頼性、容量等の接続特性に関するものであってよい。
スカラーメトリック:ある接続特性に関するメトリックのことを本明細書ではスカラーメトリックと称する。スカラーメトリックは、複数のスカラー計測値から決定される。
ベクトルメトリック:少なくとも2つの接続特性に関するメトリックのことを本明細書ではベクトルメトリックと称する。ベクトルメトリックは複数のベクトル計測値から決定される。
許容インターバル:許容可能な経路または接続パフォーマンスを示すと考えられる、予め定義された低いほうの限界値と予め定義された高いほうの限界値との間のメトリックの範囲が、本明細書でいうところの許容インターバルである。
ダウンストリーム制御パケット:ストリーミングサーバからクライアントに送られる制御パケットがダウンストリーム制御信号である。
アップストリーム制御パケット:クライアントからストリーミングサーバに送られる制御パケットがアップストリーム制御信号である。
勾配(gradient):従来、連続関数の2つの変数の間の傾き(slope)が勾配として知られている。サンプルの関数の場合の勾配は、少数のサンプルにおける傾きを決定することで近似することができる。本明細書でいうところの勾配は、少数のサンプルをカバーする期間における計測値サンプルの傾きのこととする。
回帰線:1セットのデータを通るように引かれ、且つ、一定の基準(例えば、直線からのデータの偏差の二乗和を最小とするような基準)により決定される直線が回帰線である。回帰線の傾きは、データの分散が一定の条件を満たすときにはデータの傾向を示す信頼できる指標となりうる。
リアルタイムトランスポートプロトコル(RTP):RTPは、オーディオおよびビデオをインターネットで配信する標準的なパケットフォーマットを定義する(IETF(Internet Engineering Task Force)による定義、RFC3550)。
リアルタイムトランスポート制御プロトコル(RTCP):RTCPは、RTPフローのアウトオブバンド制御情報を提供し、ストリーミングセッションで制御パケットを送信するために期間的に利用される。RTCPの主な役割は、接続品質に対するフィードバックを提供することである。
【0035】
図1は、データストリーミングシステムを示しており、ストリーミングサーバコンピューティングデバイス120(ストリーミングサーバ120とも称される)が、共有ネットワーク180(例えばインターネット)を介してクライアントデバイス160(クライアント160とも称される)にデータを送信する。クライアント160は、プロセッサおよびコンピュータ可読媒体を含み、有線アクセス媒体150または無線アクセス媒体152を介して基地局140経由でネットワーク180に接続され、基地局140はネットワーク180に、有線または無線媒体により接続される。好適な実施形態では、サーバ120は既存のプロトコルを利用して、クライアント160と制御データを交換する。例えば、ストリーミングサーバ120は、リアルタイムトランスポートプロトコル(RTP)を利用して、クライアント160に制御データを送り、クライアントはリアルタイムトランスポート制御プロトコル(RTCP)を利用してストリーミングサーバに制御データを送ることができる。他のプロトコルを接続品質制御に利用することもできる。本発明においては、クライアントはストリーミングサーバとの間でデータ符号化レートについて交渉し、ストリーミングサーバが、ストリーミングサーバ120とクライアントとの間の接続の状態の変化に応じて符号化レートを調節することができる。特に、ストリーミングサーバ120は、交渉された公称フローレート(ビットレート)およびストリーミングサーバ120からクライアント160への個々の接続状態に応じて、クライアント160に対して個別に符号化レートを割り当てることができる。ストリーミングサーバはさらに、クライアントの機器タイプを認識しており、これによって公称フローレートを決定することができる。
【0036】
図2は、ストリーミングサーバ120からクライアント160への単一の接続のインスタンスを示す。ストリーミングサーバ120は信号ソース204を含み、チャネル206を介して適応符号器220に接続する。適応符号器220は、ソース204からの信号を、フローコントローラ246が決定した符号化係数および公称フローレートに基づいて符号化する。ストリーミングサーバ120は、経時変化する容量を有しうるチャネル260を介してクライアント160に接続する。クライアント160はレシーバ226を含み、レシーバ226は、情報信号(例えばビデオ信号)を検出して、検出した信号を復号器240に送り、復号器240は、検出した信号をユーザ280にとって適切なフォーマットに整える。バッファ238は復号器240と関連付けられていてよく、短期間の間データを保持する。検出された信号はさらに、シンクレポータ242を対象とする制御パケットを含みうる。シンクレポータは、ソースレポータ224から受信した制御パケットを処理して、受領確認と特定の計測値とを制御パケットに含めて、制御チャネル270経由でフローコントローラ246に送ることができる。
【0037】
接続260の容量が経時変化することから、フローコントローラ246は、経時変化するチャネル260のトランスミッタンスを正確に推定して、適切な符号化係数Eを計算することが非常に重要となる。適応符号器220は、クライアントに割り当てられた公称符号化レートおよび符号化係数の現在の値に応じて信号を符号化する。フローコントローラ246は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、許容可能なフローレート(ビットレート)全体を決定する、あるいは、情報内容を選択的に調節することで一定の信号品質を保つ。ビデオ信号の場合には、符号器はフレームレート、フレーム毎の内容、あるいはこれら両方を修正することができる。
【0038】
フローコントローラ246は、サーバ120とクライアント160との間での制御パケットの交換で得た計測値を利用する。ソースレポータ228は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、クライアント160を対象とするダウンストリーム制御パケット(不図示)を作成(formulate)する。シンクレポータ242は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、各クライアント160に関連付けられて、フローコントローラ246に送るべきアップストリーム制御パケット(不図示)を作成する。フローコントローラ246は、ストリーミングサーバとクライアント160との間の接続を介して交換されたアップストリーム制御パケットとダウンストリーム制御パケットとを利用して、接続の現在の状態およびクライアント160の個々の適切な符号化係数を決定する。各符号化係数は、各クライアントを対象とする信号の符号化レートを決定する。
【0039】
特定のクライアント160に対してソースレポータ228が送信する特定のダウンストリーム制御パケットは、ダウンストリーム制御パケット識別子と、ダウンストリームパケットを送信する時点の指標とを含む。この特定のクライアント160のシンクレポータ242が特定のダウンストリーム制御パケットに呼応して送信する、対応するアップストリーム制御パケットは、ダウンストリーム制御パケット識別子をエコーしており、この特定のクライアントがこの特定のダウンストリーム制御パケットを受信した時点を示している。
【0040】
フローコントローラは、符号化係数Eの計算を、予め定義された幅Wを有する時間窓中に受信した計測値に基づいて行うことができる。幅Wは、時間インターバル(例:数ミリ秒)、あるいは、複数の得られた計測値(例:最新の128個の計測値)で定義される。今後、本明細書では時間窓の幅を、計測値のインスタンス数で表すこととする。
【0041】
ストリーミングサーバ120は、少なくとも1つのプロセッサ(不図示)と、コンピュータ可読命令が格納されたコンピュータ可読媒体(不揮発性メモリ素子、DVD,CD−ROM、またはフロッピー(登録商標)ディスク等)とを含む。コンピュータ可読媒命令は、少なくとも1つのプロセッサにより実行されて、適応符号器220、ソースレポータ228、およびフローコントローラ246に後述する機能を実行させる。
【0042】
図3は、フローコントローラ246が維持する循環バッファ320に格納される計測値を示す。説明を簡潔にする都合上、図示されている例における循環バッファは、時点tjからtj+7の間に得られた8つの計測値342のみを含むものとして示している((j+7)が現在の観察時点である)。しかし循環バッファは多数(v個)のレコードを保持することができる。1つのレコードは、1つの計測値(スカラー計測値)あるいは1セットの同時発生した計測値(複数のベクトル計測値)を対応する時間の指標とともに含んでもよい。インデックスjの新たなレコードは、前のインデックス(j−v)のレコードを上書きする。従って循環バッファ320は、最新のv個の計測値(スカラー計測値またはベクトル計測値)を維持する。復号器240に関連付けられているバッファ238の占有率等、幾らかの計測値のなかには、クライアント160から受信するアップストリーム制御パケットから抽出できるものもある。さらに、フローコントローラ246は、クライアント160に対するダウンストリーム制御パケットが送られた時点を、サーバ120がクライアント160から対応するアップストリーム制御パケットを受信した時点と比較することで、転送遅延を判断してもよい。パケット損失(データ損失)は、クライアント160に送られた連続するダウンストリーム制御パケットの数と、クライアント160から受信され抽出された連続するアップストリームパケットの数とを比較することで検出することができる。損失パケット数の、ダウンストリーム制御パケットの数に対する比率はパケット損失比率として定義され、ここではΘという記号で表す。
【0043】
循環バッファ320の各レコードは、(1)ダウンストリーム制御パケットのシリアル番号340(j、j+1、j+2、…等)、(2)同じレコードのシリアル番号340を示すアップストリーム制御パケットがサーバ120で受信された時点342(tj、tj+1等)、および、(3)バッファ238の占有率等のアップストリーム制御パケットに含まれる計測値344が含まれる。
【0044】
十分な数のシリアル番号340を維持することにより、任意の幅の時間窓でパケット損失比率を合理的な範囲内で計算することができる。ダウンストリーム制御パケットの送信時間と、対応するアップストリーム制御パケットの受信時間342とを維持することにより、転送遅延を計算することができる。従って、接続を特徴付ける計測値には、フローコントローラ246で計算された計測値(例えば転送遅延またはパケット損失比率)、および、直接アップストリーム制御パケットから読み出された計測値344が含まれてよい。
【0045】
時間窓は、所期の制御パケットの最大数または所期の期間をカバーするような範囲としてよい。図19を参照して後述するようにこの2つの条件を利用してより厳しい条件で時間窓を定義する。
【0046】
図4は、フローコントローラ246が受信した制御パケットから抽出された連続する計測値を示す。経時変化するチャネルを特徴付けるメトリックを時間窓の最後に計算する。図4の例では、各窓が8つの計測値をカバーしている。メトリックは、遅延、データ損失、復号器240のバッファ占有率、および復号器の出力を分析することで判断された信号品質等の幾らかの属性の一部または全てをカバーしていてよい。計測値は、データ損失比率等の1つの接続特徴に関しているスカラーであっても、転送遅延、データ損失、および、接続に関連付けられたバッファの占有率等の複数の接続特徴をカバーするベクトルであってもよい。
【0047】
現在の窓における計測値データの分析結果によって、後続する時間窓を選択してもよい。ある窓における計測値の分析の結果符号化レートを修正した場合には(つまり、符号化係数Eを修正した場合には)、後続する窓を、現在の窓から大幅な時間インターバル分離れるように設けることもできる。また後続する窓は、現在の窓に隣接して設けたり、現在の窓に重複するような移動窓として設けたりすることもできる。
【0048】
図4の例では、窓420の最後の計測値の後に決定された接続のメトリックによって、符号化係数が更新される場合がある。窓240Aの最後に決定されたメトリックによって、現在の接続の符号化係数Eが更新されている。従って新たな窓240Bは、窓240Aの直後に設けられている。窓240Bの最後に決定されたメトリックによっても符号化係数が更新されているので、窓240Cは窓240Bの直後に設けられている。窓240Cの最後に決定されたメトリックによっても符号化係数が更新されているので、窓240Dは窓240Cの直後に設けられている。窓240Dの最後に決定されたメトリックでは、符号化係数が変更されなかった。従って後続する窓240Eは窓240Dに重複している。窓240Eの最後に決定されたメトリックでは符号化係数が変更されなかった。同様に、窓240Fの最後に決定されたメトリックでは符号化係数が変更されなかった。重複する窓240Gの最後に決定されたメトリックによって、符号化係数が修正された。従って新たな窓240Hは、窓240Gの直後に設けられている。窓240Hの最後に決定されたメトリックにより符号化係数が修正されたので、後続する窓240Iがその直後に設けられている。重複する窓(移動窓)240I、240J、240K、240L、および240Mの全てによっても(I、J、K、L、およびMという符号を付される計測値で終わっているが)、符号化係数は修正されなかった。重複する窓240Nの最後に決定されたメトリックによって、符号化係数が修正されたので、新たな窓(不図示)はその直後に設けられることになる。
【0049】
図5は符号化係数の好適な現在の値を決定する基本的なステップを示す。ステップ520で、符号化係数Eを1.0に等しくなるよう設定する(このときの符号化レートは、接続が確立されたとき決定される公称符号化レートである)。符号器は当然ながら符号化された信号の性質に従って変化するレートでデータを生成する。しかしこの符号化係数Eによって、符号器は、符号化された信号のダイナミクス(変動するビットレート)に関わらず自身の出力フローレートを独立して修正することになる。循環バッファ320(図3)のインデックスも、ステップ520でゼロに(あるいは、バッファ長を越えない任意の所期の値に)初期化される。ステップ522で、フローコントローラ246は、シンクレポータ242が送ってくる制御データを取得して、制御パケットから接続計測値を抽出して、循環バッファのアドレス「インデックス」に該計測値を格納して、その後ステップ524でインデックスが1に増分される。アドレスインデックスは、Wに達すると、0にリセットされる。ステップ526で、インデックスの値が窓の幅Wより小さいと判断されると、ステップ522に戻り、新たな計測値(スカラー計測値)または1セットの同時発生した計測値(ベクトル計測値)を受信して処理する。窓の幅は、複数のバッファレコードとして表すことができ、ここでは各レコードがスカラー計測値またはベクトル計測値を持っている。ステップ526でインデックスの値が窓の幅Wに少なくとも等しいと判断されると、ステップ528で、窓の最後に先立つ短期間の間にβで表される勾配を決定する。勾配βの絶対値が第1の予め定義された閾値
より小さい場合には、符号化係数は更新せず、ステップ522に戻る。さもなくば、ステップ532で、線形回帰法により最新のW個の計測値の傾向を判断する。ステップ540で、αで表される回帰線の傾きの絶対値を、第2の予め定義された閾値
と比較する。αの絶対値(|α|で表す)が
より小さい場合には、ステップ522に戻り、フローコントローラが受信した新たな制御パケットからスカラー計測値またはベクトル計測値を得て格納する。一方
である場合には、ステップ542で、予め定義された関数Г(α,β)によって新たな符号化係数Eを決定して、インデックスを0にリセットする。ステップ546で、Eの値を予め定義された最小値Eminより大きく予め定義された最大値Emaxより小さい範囲に設定する。
【0050】
計測値が高い接続トランスミッタンスを示す場合に関数Г(α,β)によりEの値が連続増加する場合には、Eの値が所期の設計値である上限値Emaxを超えることになる。次いでステップ546で、Eの値をEmax(E←min(E,Emax))に低減させる。
【0051】
符号化レートを一定の値未満にまで低減させると、計測値が低い接続トランスミッタンスを示す場合に関数Г(α,β)によりEの値が連続減少する場合には、Eの値は所期の設計値である下限値Emin未満になる。その場合にはステップ546でEの値をEmin(E←max(E,Emin))に増加させる。
【0052】
およびαの絶対値の小さな値から推論されるように、接続トランスミッタンスの変化が無視できる範囲である場合には、βステップ542をかなり長期間の間起動しなくてよい。ただし循環バッファ320で新たな計測値で、処理済みの前の計測値を上書きし、ステップ532で回帰線の傾きαを最新のW個のスカラー計測値(またはW個のベクトル計測値)から決定する。
【0053】
図5のステップは、記憶媒体に格納されているコンピュータ可読命令に従って、フローコントローラ246に関連付けられたプロセッサによって実装される。
【0054】
図6は、クライアント160における遅延、データ損失比率、またはバッファ占有率といった接続特徴の連続する計測値を示す。回帰線620の傾きは正の値であり、これは接続条件が低下していること(接続トランスミッタンスが低下していること)を示すので、符号化レートを下げることで(つまり、符号化係数Eを下げることで)フローレートを下げる必要があることを意味している。
【0055】
図7はクライアント160の接続特徴の連続する計測値を示す。回帰線620の傾きは、正の値から複数の負の値へと変化しており、これは接続条件が一旦低下した後で向上していることを示す。
【0056】
図8は、図4の窓420における8つのスカラー計測値を示す。計測値からの偏差の二乗和を最小にするよう選択された回帰線620の時点tj、tj+1,…tj+7は、傾きα=1.64である。最後の2つの計測値から決定された勾配βは負である。Eの値を予め定義された関数Г(α,β)から決定する。関数Г(α,β)の一例を、表形式で図10に示す。
【0057】
図9は、回帰線の傾きα=−1.64である窓における8つのスカラー計測値を示す。最後の2つの計測値から決定された勾配βは正である。Eの値を予め定義された関数Г(α,β)から決定する。
【0058】
図10は、回帰線の傾きαが正の値である場合の関数Г(α,β)の一例を示す。本図から、勾配βが1.0未満でありα≧0である場合、または、勾配βが1以上でありαが0.1未満である場合には、符号化係数Eを変えない。図8の計測値においては、回帰線の傾きαが正であり勾配βが負になっている。従って図10の関数Г(α,β)では、符号化係数Eを変更しない。
【0059】
同様に図11は、αが負の値である場合の関数Г(α,β)の一例を示す。β≧(−1.2)の場合、または、β<(−1.2)であるがα>(−0.2)である場合には、Eの値は変えない。図9の計測値においては、回帰線の傾きαが負であり勾配βが正になっている。従って図11の関数Г(α,β)においては、符号化係数Eは変えない。
【0060】
図12Aおよび図12Bは、既知のプロトコルを利用してストリーミングサーバ120とクライアント160との間で制御パケットを交換するプロセスを示す。図12Aは、RTP(リアルタイムトランスポートプロトコル)制御パケットをクライアント160に送信するプロセスを示し、図12BはRTCP(リアルタイム制御トランスポートプロトコル)パケットをクライアント160から受信して、フローコントローラ246でRTCPパケットの内容を処理するプロセスを示す。図12Aのプロセスはステップ1220でソースレポータ228(図2)がRTP制御パケットを準備することから開始される。ステップ1222で、符号化係数の現在の値を判断する。ステップ1224でRTPパケットのシーケンス番号およびRTPパケットを送信する時間を記録する。ステップ1226でRTPパケットがクライアント160それぞれに対して送信される。
【0061】
図12Bのプロセスはステップ1240でフローコントローラ246(図2)がRTCPパケットをシンクレポータ242から受信することから開始される。ステップ1242で計測値データをRTCPパケットから抽出する。ステップ1244で、現在の時点と、符号化係数が前に更新された時点との差異を判断する。時間の差異が予め定義された最小更新インターバルよりも小さい場合には、ステップ1240に戻り、待ち状態のRTCPパケットについて検討する、あるいは今後到達するRTCPパケットを待つ。一方で時間の差異が最小更新インターバル以上である場合には、ステップ1246で新たに許可可能な符号化レートを決定する。ステップ1248では符号化係数の更新が必要か否かを判断する。判断結果が肯定的である場合には新たな符号化係数を決定する。判断結果が否定的であった場合にはステップ1240に戻る。ステップ1260で符号化係数を更新して符号器220に伝え、フローコントローラ246(図2)が新たなRTCPパケットを検討する準備が整う(ステップ1240)。
【0062】
図12Aおよび図12Bのステップは図13および図14でさらに詳しく示すが、フローコントローラ246に関連付けられている上述したプロセッサにより、記憶媒体に格納されているコンピュータ可読命令に従って実装される。
【0063】
図13は図12Bのステップ1242をより詳しく示す。ステップ1320で、受信されたRTCPパケットに、シンクレポータ242からの「レシーバレポート」が含まれていないか調べる。RTCPパケットがレシーバレポートを含んでいない場合にはステップ1340を実行して、RTCPパケットがバッファ占有率レポートを含んでいないか調べる。RTCPパケットがレシーバレポートを含んでいる場合には、ステップ1322で、転送遅延を、RTCPパケットの現在の到着時点と、対応するRTPパケットを送信する時点との間の時間の差異として決定する。この、対応するRTPパケットとは、RTCPレシーバレポートの「拡張された最高シーケンス番号が受信された(extended highest sequence number received)」フィールドに示される番号と符合するシーケンス番号を有するRTPパケットのことである。ステップ1326で最小転送遅延を、ステップ1322で計算された転送遅延および接続の最小転送遅延の前の値のうち小さいほうの値に決定する。最小転送遅延を任意の大きな値に初期化する。最小転送遅延は、変動転送遅延の測定用の参照値として将来利用するために維持しておく。
【0064】
図14は、接続メトリックおよび対応する符号化係数を決定するステップの概略を示すフローチャートである。ステップ1420で、ある時間窓におけるパフォーマンス計測値の回帰線の傾きを、任意の公知の分析法により計算する。さらに時間窓の最後付近における計測値の勾配も決定する。さらにステップ1422で、この時間窓におけるデータ損失の統計値を決定する。ステップ1424で、符号化係数のある好適な値(E*と称する)を、回帰線の傾きと勾配とに基づいて、図10および図11を参照して上述したように決定する。ステップ1426で、符号化係数のある好適な値(E**と称する)をステップ1422で決定したデータ損失統計値に従って決定する。ステップ1428で、E*およびE**のうちの小さいほうを選択して新たな符号化係数Eとする。好適な接続条件下では、好適な符号化係数は1.0を超えてよい(つまり、符号器は、接続に割り当てられる公称フローレートを超えるフローレート(ビットレート)を瞬間的に有するようなストリームを生成してもよい、ということである)。
【0065】
こうして決定された符号化係数Eを、さらに接続のクライアント側に配置されているバッファの占有率に従って修正する。ステップ1432では、バッファ占有率データが利用不可能である場合、プロセスをステップ1260(図12B)に送る。さもなくば、ステップ1434で、時間窓でのバッファ占有率計測値が予め定義された閾値を超えるか否かを判断する。超えると判断される場合であってステップ1428で決定された符号化係数が1.0を超える場合には、ステップ1440で好適な符号化係数を1に低減し、プロセスは図12Bのステップ1260に戻る。ステップ1434および1440は一例である規則に従う。バッファ占有率統計値の利用に関する他の規則を利用することもできる。
【0066】
図15は、別の実施形態における接続計測値の処理方法を示し、これによって、連続または重複する窓における計測値の平均値を利用して符号化係数の新たな値が決定される。時間窓1520において採られた、特定の接続特徴(例えば転送遅延またはデータ損失)に対応する計測値の平均値に基づく統計値を、特定の接続特徴の予め定義された許容可能な参照値と比較する。統計値が参照値よりも大幅に超える場合には、符号化係数を下げ、この結果符号化レートが公称フローレート未満に下がる。統計値が参照値よりも大幅に小さい場合には、符号化係数を上げることができる。従って特定の特徴に対応して2つの限界点μ1およびμ2(μ1<μ2)を定義することができる。統計値がμ1を下回る場合には符号化係数を上げ、統計値がμ2を上回る場合には符号化係数を下げる。差異(μ2−μ1)の選択が重要となる。この差異を非常に小さくすると、低い値と高い値との間に不当に急速なフラッピングが生じうる。この差異を非常に大きくすると、応答が遅くなり、応答が全くなってしまう場合すらあり、これは接続条件を著しく変化させる。
【0067】
図16は、各窓が8つの計測値をカバーするような連続且つ重複する窓におけるスカラー計測値の平均値として定義される移動平均を示す(単位は自由である)。それぞれ最初の4つの重複する窓の平均値16.25、17.0、16.75、および17.75は遅い変化を示しており、符号化係数の現在の値を変えなくてよい。しかし、複数の計測値から決定される21.5という平均値は(図16参照)、符号化係数の修正をトリガして、適応符号器220のパラメータを調節させる。図4を参照して上述したように、時間窓の最後に決定されたメトリックに応じて、後続する時間窓が選択される。
【0068】
図17は、符号化係数Eを、経時変化する接続260のメトリックμの現在の値に調和させる方法を示す。任意の接続条件において、メトリックμの値は、符号化係数Eの増加につれて増加する。図17でそれぞれ線1720および1740として示されている2つの限界点μ1およびμ2は、許容可能な接続パフォーマンスの範囲の定義である。図17は、5つの接続トランスミッタンスの値(η1、η2、η3、η4、η5で表し、η1>η2>η3>η4>η5である)についての符号化係数Eに対するメトリックμの依存関係の一例を示す。当初はEが1に等しく設定されており、対象クライアントに割り当てられた公称符号化レートで符号器は動作していた。公称符号化レートは、通常の接続条件下で接続パフォーマンスが許容可能になるように選択され、この場合トランスミッタンスはη1に等しい。図17で、接続メトリックμのサンプル値を、インデックス(0)から(9)で表す。トランスミッタンスが最大値η1である場合には、E=1.0であり、現在のメトリックの値は{インデックス(0)}となり、μ1とμ2との間にある。その後、接続条件が低下して、接続のトランスミッタンスが値η2に下がり、メトリックμは上限値μ2を超える新たな値{インデックス(1)}となる。フローコントローラ246は、値e1だけ符号化係数Eを減少させ、これによりメトリックμの新たな値{インデックス(2)}がインターバル(μ1,μ2)範囲に収まるようになる。接続条件は低下を続け、接続トランスミッタンスがη4<η2にまで低下し、メトリックμの新たな値{インデックス(3)}がインターバル(μ1,μ2)をかなり超えるようになる。増加したメトリックに呼応して、フローコントローラ246は、符号化係数をe3分低下させる。メトリックμの値は{インデックス(4)}下がるが、依然としてμ2より高い。符号化係数がさらに2回e4およびe5下がると、インデックス(5)および(6)が表す値となり、符号化係数は約0.56となり、メトリックμは、インターバル(μ1,μ2)の範囲内である{インデックス(6)}の値に下がる。その後、接続条件は向上し、符号化係数Eの同じ値0.56にて、メトリックμが値{インデックス(7)}に下がり、これはインターバル(μ1,μ2)より下回っている。フローコントローラ246は、符号化係数をe7分増やし、これによりμ{インデックス(8)}の値は増加するが、依然としてμ1未満である。フローコントローラ246はさらに符号化係数をe8分増やして0.75の値として、μの値{インデックス(9)}をインターバル(μ1,μ2)の範囲で増加させる。符号化係数Eは、接続トランスミッタンスにその後変化が生じてメトリックが変化するまでは、0.75の値に留まる。
【0069】
図18は、図17のプロシージャのステップ1820から始まる主要なステップのフローチャートである。ステップ1820で、メトリックμの新たな値を、図15および図16を参照して上述した窓における計測値から決定する。ステップ1824で、この新たな値を上限値μ2と比較して、μ>μ2である場合には、ステップ1860で、Eの現在の値を係数x2<1乗算することで符号化係数を低くして、プロセスはステップ1820に戻る。μ≦μ2である場合には、ステップ1826でメトリックμの新たな値を、許容可能なインターバル(μ1,μ2)の下限値μ1と比較する。μ≧μ1である場合には、メトリックの新たな値が許容可能なインターバル(μ1,μ2)の範囲内にあると判断され、プロセスはステップ1820に戻り、メトリックμの新たな値を処理する。μ<μ1である場合には、ステップ1840で、Eの現在の値を係数x1>1で乗算することで符号化係数Eを更新して、プロセスはステップ1820に戻る。係数x1およびx2(x1>1、x2<1)は、(μ1−μ)および(μ2−μ)の差異にそれぞれ依存してよい。積(x1×x2)が1未満である場合、μ<μ1のとき、Eの値は比較的小さなステップで上昇し、μ>μ2のときEは比較的大きなステップで低下する。
【0070】
図19は、図17のプロセスをさらに詳しく示す。予め定義された数の計測値をカバーする窓における計測値の平均値をメトリックμとすることにする。フローコントローラ246の計算を低減させるべく、この平均値を窓における計測値の総計Σで置換え、許容可能なインターバル(μ1,μ2)をインターバル(Σ1,Σ2)で置換えると、Σ1=w×μ1およびΣ2=w×μ2となり、ここでwは1つの時間窓あたりの計測値の数である。
【0071】
ステップ1920で、値Eを1に初期化する(つまり、符号器が最初は対象クライアントに割り当てられた公称符号化レートで動作することを要求されている、ということになる)。長さwである循環アレイV(図3の循環バッファ320を表す)の全てのエントリをゼロに設定し、アレイVのw個のエントリの総計Σをゼロに設定する。整数「インデックス」は、アレイVの現在位置をトラックし、整数「期間(period)」は、最新の符号化係数更新時点をトラックする。ステップ1920で2つの整数「インデックス」および「期間」をゼロに設定する。
【0072】
ステップ1922で計測値σをフローコントローラ246が受信した制御パケットから抽出する。ステップ1924で、メトリックμに比例する総計Σを、アレイVの位置「インデックス」のエントリを減算して、新たな計測値σを加算することにより更新する。アレイVは循環するので、第1の時間窓の後、位置インデックスで減算されたエントリは、現在の窓の前に計測された計測値を表す。第1の時間窓の後、第1の窓の総計Σは、wでメトリックμを乗算した値を正しく示す値となる。
【0073】
ステップ1926で、新たな計測値σをアレイVの位置「インデックス」に書き込む。ステップ1928で、整数「期間」を1増分させて、循環アレイVの現在の位置「インデックス」を1(モジュロw)増分させる(つまり、インデックスの値がwに達すると、インデックスをゼロとする、ということである)。ステップ1930で、符号化係数更新の直前の時点までの計測値の数が、予め定義された限界値P*未満であると判断されると、プロセスはステップ1922に戻り、新たな計測値を処理する。さもなくばプロセスはステップ1932に進む。ステップ1932に達すると循環アレイVは最新の計測値をw個有しており、現在の時点と、符号化係数Eが修正される直前の時点との間の時間インターバルは、少なくとも閾値P*に等しくなっている。P*の値は、過剰な更新レートを回避可能な程度に大きく、接続状態の変化に対応可能な程度に小さくなるように選択される。P*の値は、フローコントローラ246の設計者が設定する設計パラメータである。
【0074】
ステップ1932では、現在の総計Σを、許容可能な総計インターバル(Σ1,Σ2)の上限値Σ2と比較する。Σ>Σ2である場合には、ステップ1940で現在の値を係数x2<1で乗算することでEを低減させ、ステップ1950で整数「期間」をゼロに等しくなるようリセットして、プロセスはステップ1922に戻る。Σ≦Σ2である場合には、ステップ1934で、現在の総計Σを、許容可能な総計インターバル(Σ1,Σ2)の下限値Σ1と比較する。Σ<Σ1である場合には、ステップ1942で現在の値を係数x1>1で乗算することでEを増加させ、ステップ1950で整数「期間」をゼロに等しくなるようリセットして、プロセスはステップ1922に戻る。ステップ1934でΣ≧Σ1であると判断した場合には、現在の総計Σが許容可能な総計インターバル(Σ1,Σ2)の範囲内であると結論付けられる。プロセスはステップ1922に戻り、Eの値は変えない。
【0075】
図19のステップは、各コンピュータ可読記憶媒体に格納されているコンピュータ可読命令に従ってフローコントローラ246に関連付けられた上述したプロセッサにより実装される。
【0076】
<複数の接続メトリック>
図17に示したメトリックμは、転送遅延、データ損失比率、または復号器240におけるバッファ占有率等の接続パフォーマンスの複数の態様の1つを表すスカラーである。従って、限界点μ1およびμ2もまたスカラーである。符号化係数を修正する基準は、符号化係数を修正し(図18および図19)、メトリックの現在の値と、該メトリックの許容可能な範囲との偏差の関数である、係数x1およびx2を有するあるパフォーマンスに関する接続メトリックμに基づいて決定されてよい。接続パフォーマンスの複数の態様を考慮に入れるために、対応するメトリックを正規化して、複合メトリックを、このようにして選択した限界点μ1およびμ2を有する複数の正規化メトリックとの重み付け合計として定義することができる。例えば、遅延メトリックを複数の公称遅延値(例えば、対象となる接続に推定される最小遅延)に関して正規化して、サイズをなくす(becoming dimensionless)ことができる。その性質上サイズのないデータ損失メトリックを正規化メトリックとして利用することができ、バッファ占有率メトリックを(これもサイズがない)各バッファの容量に関して正規化することができる。例えば、遅延、データ損失比率、バッファ占有率に関して同時発生した計測値がそれぞれ20ミリ秒、0.02、および200であったとする。この場合に、20ミリセカンドの遅延メトリックは、公称(参照)遅延10ミリセカンドに基づいて値2.0に正規化することができ、200ユニットのデータのバッファ占有率は、250ユニットのデータのバッファ容量に基づいて0.8と正規化することができる。複合メトリックμ*は、μ*=μdelay+a×μloss+b×μbufferとして定義することができ、本式においてμdelay、μloss、μbufferは、それぞれ、正規化された遅延ベースのメトリック、データ損失メトリック、および、正規化されたバッファ占有率メトリックを表す。パラメータaおよびbをそれぞれ80.0および2.5とすると、上述した例におけるメトリックの複合メトリックμ*は、μ*=2.0+80.0×0.02+2.5×0.8=5.6となる。
【0077】
接続パフォーマンスの複数の態様を考慮する、より完全な方法では、パフォーマンスの各態様に対して、別個のメトリックを導出し、別個の許容可能なインターバルを特定する。一セットの現在のメトリックのうちの任意の現在のメトリックが許容インターバルを超えている場合、符号化係数Eを低減させる。後続する時間窓において決定される新たなメトリックは、符号化係数Eの変化および接続トランスミッタンスの変化に応じて、符号化レートの変化の影響を受けることがある。そこで、新たなメトリックのうち許容インターバルを上回るものがなくなるまで、再度符号化係数Eを低減させることができる。これに対して、符号化係数Eの増加は、全ての現在のメトリックそれぞれが銘々の許容インターバルを下回ったときに初めて可能であるとする。この結果、新たなメトリックの少なくとも1つが許容インターバル内にあり、残りの新たなメトリックがいずれも許容インターバルを上回らないときに、Eは不変となる。
【0078】
図20は、2つのメトリックμ(1)およびμ(2)の現在の値における上述した符号化係数Eの調節方法を示す。図20では、μ(1)が上方に増加して、μ(2)が下方に増加している。第1のメトリックμ(1)の許容インターバル2020を、ここでは第1の許容インターバルと称し、これは下限値μ1(1)と上限値μ2(1)とを有する。第2のメトリックμ(2)の許容インターバル2040を、ここでは第2の許容インターバルと称し、これは下限値μ1(2)と上限値μ2(2)とを有する。参照番号2022、2024、2026、および2028は、値E1、E2、E3、およびE4を有する符号化係数にそれぞれ対応する第1のメトリックの値を示している(E1<E2<E3<E4)。参照番号2042、2044、2046、および2048は、値E1、E2、E3、およびE4を有する符号化係数にそれぞれ対応する第2のメトリックの値を示している(E1<E2<E3<E4)。
【0079】
例えば符号化係数を値E4に設定すると、第1のメトリックの値(2028)は各上限値μ2(1)を超える値に決定され、第2のメトリックの値(2048)は第2の許容インターバル(μ1(2),μ2(2))の範囲内に決定される。2つのメトリックのうちいずれかの値が対応する許容上限値よりも高いので、現在の値を係数x2<1で乗算することで符号化係数を低減させる。符号器220はこのようにして符号フローレートを調節して、2つのメトリックの新たな値を、フローレートを調節した後の未加工(fresh)計測値から決定する。符号化係数が値E3<E4に低減した場合には、第1のメトリックの値(2026)を第1の許容インターバル(μ1(1),μ2(1))内に決定して、第2のメトリックの値(2046)を第2の許容インターバル(μ1(2),μ2(2))の下限値μ1(2)をかなり下回る値に決定する。(1)接続状態が悪くなり、メトリックのいずれかが許容上限値を超えるようになり、符号化係数も低下して符号化係数をさらに低減させる場合、あるいは、(2)接続状態が向上して、第1および第2のメトリック両方の値がそれぞれの許容下限値を下回り、符号化係数を増加させることができるようになった場合、以外には、これ以上符号化係数を変更しない。
【0080】
符号化係数を値E1に設定した場合、第1のメトリックμ(1)の値(2022)は下限値μ1(1)を下回る値に決定され、第2のメトリックの値(2042)は下限値μ1(2)を下回る値に決定される。符号化係数は値E2に増加させる。この結果、第2のメトリックμ(2)の値は、許容インターバル(μ1(2),μ2(2))内の、上限値μ2(2)に近い値(2044)に増加する。第1のメトリックμ(1)の値は値(2024)まで増加したものの、下限値μ1(1)を依然として下回っている。接続トランスミッタンスに変更がない場合には、符号化係数をさらに増加させることで、第2のメトリックμ(2)を上限値μ2(2)を上回る値に増加させうる。接続状態の変化が大きく、符号化係数を増加させることができるようになる、または、強制的に符号化係数を低下させる必要が出てくるまでは、符号化係数はこれ以上変更させない。
【0081】
図21は、3つのメトリックμ(1)、μ(2)、μ(3)の現在の値による符号化係数調節法を示す。説明を簡潔にする目的から、第1のメトリックμ(1)、第2のメトリックμ(2)、および第3のメトリックμ(3)の3つの許容インターバル2102、2122、および2142が、それぞれ重複しないストライプとして示されている。しかし、3つのメトリックは、1つの接続の異なる特徴を表しうるので、別個に処理される。従って、メトリックμ(1)、μ(2)、μ(3)の許容インターバル2102、2122、および2142のそれぞれの位置は互いに関連している値を反映しているわけではない。第1の許容インターバル2102は下限値μ1(1)、および上限値μ2(1)を有する。第2のメトリックμ(2)の第2の許容インターバル2122は下限値μ1(2)、および上限値μ2(2)を有する。第3のメトリックμ(3)の第3の許容インターバル2142は下限値μ1(3)、および上限値μ2(3)を有する。参照番号2104、2106、2108、2110、2112、2114、2116、および2118は、符号化係数の値E1からE7に対応する第1のメトリックμ(1)の値を示す(Ej<Ej+1、1≦j≦6)。同様に、参照番号2124、2126、2128、2130、2132、2134、2136、および2138は、E1からE7に対応する第2のメトリックμ(2)の値を示し、参照番号2144、2146、2148、2150、2152、2154、2156、および2158は、E1からE7に対応する第3のメトリックμ(3)の値を示す。
【0082】
適応符号器220が、公称レートと符号化係数E1とに従って符号化パラメータを調節した場合を考慮する。特定の窓の最後に決定されたメトリックベクトルは、2104、2124、2144が示すμ(1)、μ(2)、μ(3)のメトリック値を有する。値2104、2124、2144は、それぞれ許容インターバルの下限値を下回る値である。従って、符号化係数は、各ステップにおける計測値から決定される3つのメトリック{μ(1)、μ(2)、μ(3)}いずれかがそれぞれの許可可能ゾーンの上限値に十分近づくまで、段階的に増加させる。図21の例においては、この条件は、適応符号器220が自身のフローレートを符号化係数E2に対応するよう調節した後の2126が示すメトリックμ(2)の値に適合している。
【0083】
適応符号器220が、公称レートと符号化係数E3とに従って符号化パラメータを調節した場合であれば、2108、2128、2148が示すメトリックμ(1)、μ(2)、μ(3)の値は、それぞれの許容インターバルを下回る。符号化係数を値E4に増加させ、この値においては、メトリックμ(1)の値(参照番号2110)は自身の許容インターバルの上限値に近く、メトリックμ(2)、μ(3)の値(2130および2150)がそれぞれの許容インターバル内にある。
【0084】
適応符号器220が、公称レートと符号化係数E7とに従って符号化パラメータを調節した場合であれば、2138が示すメトリックμ(2)の値は、許容インターバル2122の上限値を上回る。符号化係数を値E6<E7に低減させる。メトリックμ(1)およびμ(3)はそれぞれの許容インターバルを下回る値2116および2156に低減したが、メトリックμ(2)は、許容インターバル2122内の値2136に低減した。従って、値E6においては符号化係数を変えない。接続トランスミッタンスが低下し、結果としてそれぞれメトリックが2114、2134、および2154が示す値にまで増加した。メトリックμ(2)が上限値を超えているので、符号化係数がE5の値まで低下した。
【0085】
図22は、クライアント160への接続においてストリーミングサーバ120が送信した信号のピーク符号化レート(ピークフローレート)の関数でパケット損失比率Θを示す。前に定義したように、接続トランスミッタンスは、ストリーミングサーバからクライアントまでの接続を、所期のパフォーマンス上の目的に背くことなく維持することができるピークフローレートのことである。図22の例におちえは、トランスミッタンスはパケット損失パフォーマンスのみによって定義される。図22は、接続のトランスミッタンスに関して正規化されたピーク符号化レートとパケット損失比率との間の関係の一例を示している。ピーク符号化レートを既知とする。しかし、接続のトランスミッタンスは経時的に変化することがあり、分からないことがある。ピーク符号化レートがトランスミッタンスより高い場合、パケット損失比率Θはゼロより大きく、ピーク符号化レートのトランスミッタンスに対する比率は、1/(1−Θ)として決定することができ、符号化レートは係数(1−Θ)分低減し、パケット損失がなくなる。パケット損失比率は上述したように選択される時間窓において計測されてよい。線2210は、パケット損失比率Θをピーク符号化レートの現在のトランスミッタンスに対する比率ρの関数として示したものである。ρ≦1.0のときにΘの値はゼロである。ρ=1.5でΘ=0.33であり、ρ=2.0ではΘ=0.5である。
【0086】
Θの計測値がゼロの場合には、ピーク符号化レートのトランスミッタンスに対する比率は、0より大きく1.0未満であるいずれかの値となり、パケット損失を回避しつつ信号の忠実度を向上させることができる符号化レートの適切な増分(符号化係数Eの増分)を正確に判断し難くなる。符号化レートは、パケット損失の計測値が(Θ>0)となり、符号化レートを正確に補正することができるようになるまで段階的に増加させることができる。Θの計測値がかなり小さくなると(例えば0.001のオーダにまで小さくなると)、符号化レート補正は不要とすることができる。パケット損失比率の下限値Θmin(線2220)および上限値Θmax(線2230)が定義する許容インターバルによって、小さなΘの値を不要に処理してしまうことが回避されるようになる。ΘminおよびΘmaxの値は、設計パラメータである。Θminについて0.001、およびΘmaxについて0.02が適切な値であると思われる。
【0087】
本発明は、プロセッサにより実行されると上述した方法のステップを実行する命令を格納したDVD、CD−ROM、フロッピー(登録商標)等のコンピュータ可読媒体、あるいは不揮発性メモリ等のメモリも提供する。
【0088】
本発明の特定の実施形態について詳述してきたが、記載した実施形態は例示を意図しており限定は意図していない。図面に示し明細書に記載した実施形態の変更例および変形例は、広義の本発明の範囲から逸脱することなく以下の請求項の範囲に含まれうる。
【特許請求の範囲】
【請求項1】
経時変化する接続により、符号器から復号器へとデータストリーミングする方法であって、
前記接続を特徴付ける計測値を得る段階と、
前記計測値によって前記接続のトランスミッタンスの変化を推定する段階と、
前記トランスミッタンスの変化と符合する前記符号器の現在の符号化レートの調節を決定して好適な符号化レートを得る段階と、
前記符号器に命じて、前記好適な符号化レートに従って信号を符号化させる段階と
を備える方法。
【請求項2】
前記計測値は、
前記符号器および前記復号器の間の転送遅延、データ損失比率(fraction)、および、前記復号器における受信バッファの占有率のうち少なくとも1つを含み、
前記好適な符号化レートが公称符号化レートに初期化されている請求項1に記載の方法。
【請求項3】
前記好適な符号化レートは、前記公称符号化レートを第1の符号化係数で乗算して得られる値に決定され、
前記第1の符号化係数は、予め定められた期間に相当する時間窓における前記計測値から導出される第1のメトリックに従って決定される請求項2に記載の方法。
【請求項4】
前記第1のメトリックは、前記時間窓における前記計測値の平均値である請求項3に記載の方法。
【請求項5】
前記好適な符号化レートは、前記公称符号化レートを第2の符号化係数で乗算して得られる値に決定され、
前記第2の符号化係数は、前記時間窓における計測値の傾向から導出される第2のメトリックに従って決定される請求項2から請求項4のいずれか一項に記載の方法。
【請求項6】
前記計測値の傾向は、前記計測値を前記時間窓における時間に関連付ける回帰線の傾きである請求項5に記載の方法。
【請求項7】
前記計測値の傾向は、前記計測値を前記時間窓における時間に関連付ける回帰線の傾きと、前記時間窓内の短期間中の計測値の勾配とに基づいて決定され、
前記短期間は、前記時間インターバルより実質的に短くなるよう選択される請求項5に記載の方法。
【請求項8】
前記計測値は、前記符号器から前記復号器へ前記経時変化する接続によりリアルタイムトランスポートプロトコル(RTP)パケットを送信して、前記復号器から前記符号器へ制御チャネルによりリアルタイムトランスポート制御プロトコル(RTCP)パケットを送信することにより得られる請求項1から請求項7のいずれか一項に記載の方法。
【請求項9】
経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法であって、前記方法は、
前記接続の現在の符号化レートを決定する段階と、
第1の時点と第2の時点との間の時間窓における転送遅延計測値を得る段階と、
前記時間窓におけるデータ損失比率計測値を得る段階と、
前記転送遅延計測値を前記時間窓内の各時点に関連付ける回帰線の傾きを決定する段階と、
前記第2の時点の直前で選択された転送遅延計測値の勾配を決定する段階と、
前記傾きおよび前記勾配に従って、第1の仮の符号化レートを決定する段階と、
前記データ損失比率計測値に従って、第2の仮の符号化レートを決定する段階と、
前記第1の仮の符号化レートおよび前記第2の仮の符号化レートのうち小さいほうを、好適な符号化レートとして選択する段階と
を備える方法。
【請求項10】
前記クライアントデバイスに関連付けられたバッファの占有率の計測値を得る段階と、
前記好適な符号化レートが公称符号化レートを超え、前記占有率が予め定義されたバッファ占有率の閾値を越えている場合に、前記好適な符号化レートを前記公称符号化レートに等しくなるまで低減させる段階とをさらに備える請求項9に記載の方法。
【請求項11】
前記第1の仮の符号化レートは、前記現在の符号化レートを、予め定義された関数E*=Г(α,β)に従って決定される第1の符号化係数E*で乗算することにより決定され、αは前記回帰線の前記傾きであり、βは前記勾配である請求項9または請求項10に記載の方法。
【請求項12】
Θで表す前記データ損失比率計測値を、予め定義されたデータ損失比率の許容インターバルの下限値Θminおよび上限値Θmaxと比較する段階と、
Θ>Θmaxであれば、第2の符号化係数E**をE**=(1−Θ)と決定して、Θ<Θminであれば、前記第2の符号化係数E**をE**=x>1と決定し、xは設計パラメータである段階と、
前記現在の符号化レートを前記第2の符号化係数E**で乗算して前記第2の仮の符号化レートを決定する段階とを備える請求項9から請求項11のいずれか一項に記載の方法。
【請求項13】
データストリーミングシステムであって、
ストリーミングサーバと、
各クライアントに関連付けられて、前記ストリーミングサーバを対象とする複数のアップストリーム制御パケットを作成するシンクレポータとを備え、
前記ストリーミングサーバは、
少なくとも1つのプロセッサと、
コンピュータ可読格納媒体と、
信号ソースと、
前記信号ソースが生成した信号を符号化する適応符号器と、
複数のクライアントを対象とする複数のダウンストリーム制御パケットを作成するソースレポータと、
フローコントローラと
を有し、
前記フローコントローラは、前記複数のクライアントから複数の制御パケットを受信して、前記複数のクライアントの符号化係数各々を決定し、前記複数のアップストリーム制御パケットを処理して前記ストリーミングサーバと前記複数のクライアントそれぞれとの間の接続の現在の状態を決定し、前記符号化係数各々から前記適応符号器の各符号化レートが決定されるシステム。
【請求項14】
前記ソースレポータから各クライアントに送信される各ダウンストリーム制御パケットはそれぞれパケット識別子を含む請求項13に記載のシステム。
【請求項15】
特定のダウンストリーム制御パケットに呼応して特定のクライアントのシンクレポータから送られるアップストリーム制御パケットは、前記特定のダウンストリーム制御パケットのパケット識別子を含む請求項13または請求項14に記載のシステム。
【請求項16】
前記複数のクライアントそれぞれに関連付けられたデータバッファをさらに備え、
前記アップストリーム制御パケットは、前記データバッファの占有率の表示を含む請求項13から請求項15のいずれか一項に記載のシステム。
【請求項17】
前記ストリーミングサーバと前記複数のクライアントそれぞれとの間の前記接続の前記現在の状態は、前記ストリーミングサーバから前記複数のクライアントのそれぞれへの転送遅延と、損失したダウンストリーム制御パケットの比率とにより特徴付けられ、
前記フローコントローラは、前記転送遅延、前記損失したダウンストリーム制御パケットの比率、および前記データバッファの前記占有率のうち少なくとも1つに基づいて前記符号化係数各々を決定する請求項13から請求項16のいずれか一項に記載のシステム。
【請求項1】
経時変化する接続により、符号器から復号器へとデータストリーミングする方法であって、
前記接続を特徴付ける計測値を得る段階と、
前記計測値によって前記接続のトランスミッタンスの変化を推定する段階と、
前記トランスミッタンスの変化と符合する前記符号器の現在の符号化レートの調節を決定して好適な符号化レートを得る段階と、
前記符号器に命じて、前記好適な符号化レートに従って信号を符号化させる段階と
を備える方法。
【請求項2】
前記計測値は、
前記符号器および前記復号器の間の転送遅延、データ損失比率(fraction)、および、前記復号器における受信バッファの占有率のうち少なくとも1つを含み、
前記好適な符号化レートが公称符号化レートに初期化されている請求項1に記載の方法。
【請求項3】
前記好適な符号化レートは、前記公称符号化レートを第1の符号化係数で乗算して得られる値に決定され、
前記第1の符号化係数は、予め定められた期間に相当する時間窓における前記計測値から導出される第1のメトリックに従って決定される請求項2に記載の方法。
【請求項4】
前記第1のメトリックは、前記時間窓における前記計測値の平均値である請求項3に記載の方法。
【請求項5】
前記好適な符号化レートは、前記公称符号化レートを第2の符号化係数で乗算して得られる値に決定され、
前記第2の符号化係数は、前記時間窓における計測値の傾向から導出される第2のメトリックに従って決定される請求項2から請求項4のいずれか一項に記載の方法。
【請求項6】
前記計測値の傾向は、前記計測値を前記時間窓における時間に関連付ける回帰線の傾きである請求項5に記載の方法。
【請求項7】
前記計測値の傾向は、前記計測値を前記時間窓における時間に関連付ける回帰線の傾きと、前記時間窓内の短期間中の計測値の勾配とに基づいて決定され、
前記短期間は、前記時間インターバルより実質的に短くなるよう選択される請求項5に記載の方法。
【請求項8】
前記計測値は、前記符号器から前記復号器へ前記経時変化する接続によりリアルタイムトランスポートプロトコル(RTP)パケットを送信して、前記復号器から前記符号器へ制御チャネルによりリアルタイムトランスポート制御プロトコル(RTCP)パケットを送信することにより得られる請求項1から請求項7のいずれか一項に記載の方法。
【請求項9】
経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法であって、前記方法は、
前記接続の現在の符号化レートを決定する段階と、
第1の時点と第2の時点との間の時間窓における転送遅延計測値を得る段階と、
前記時間窓におけるデータ損失比率計測値を得る段階と、
前記転送遅延計測値を前記時間窓内の各時点に関連付ける回帰線の傾きを決定する段階と、
前記第2の時点の直前で選択された転送遅延計測値の勾配を決定する段階と、
前記傾きおよび前記勾配に従って、第1の仮の符号化レートを決定する段階と、
前記データ損失比率計測値に従って、第2の仮の符号化レートを決定する段階と、
前記第1の仮の符号化レートおよび前記第2の仮の符号化レートのうち小さいほうを、好適な符号化レートとして選択する段階と
を備える方法。
【請求項10】
前記クライアントデバイスに関連付けられたバッファの占有率の計測値を得る段階と、
前記好適な符号化レートが公称符号化レートを超え、前記占有率が予め定義されたバッファ占有率の閾値を越えている場合に、前記好適な符号化レートを前記公称符号化レートに等しくなるまで低減させる段階とをさらに備える請求項9に記載の方法。
【請求項11】
前記第1の仮の符号化レートは、前記現在の符号化レートを、予め定義された関数E*=Г(α,β)に従って決定される第1の符号化係数E*で乗算することにより決定され、αは前記回帰線の前記傾きであり、βは前記勾配である請求項9または請求項10に記載の方法。
【請求項12】
Θで表す前記データ損失比率計測値を、予め定義されたデータ損失比率の許容インターバルの下限値Θminおよび上限値Θmaxと比較する段階と、
Θ>Θmaxであれば、第2の符号化係数E**をE**=(1−Θ)と決定して、Θ<Θminであれば、前記第2の符号化係数E**をE**=x>1と決定し、xは設計パラメータである段階と、
前記現在の符号化レートを前記第2の符号化係数E**で乗算して前記第2の仮の符号化レートを決定する段階とを備える請求項9から請求項11のいずれか一項に記載の方法。
【請求項13】
データストリーミングシステムであって、
ストリーミングサーバと、
各クライアントに関連付けられて、前記ストリーミングサーバを対象とする複数のアップストリーム制御パケットを作成するシンクレポータとを備え、
前記ストリーミングサーバは、
少なくとも1つのプロセッサと、
コンピュータ可読格納媒体と、
信号ソースと、
前記信号ソースが生成した信号を符号化する適応符号器と、
複数のクライアントを対象とする複数のダウンストリーム制御パケットを作成するソースレポータと、
フローコントローラと
を有し、
前記フローコントローラは、前記複数のクライアントから複数の制御パケットを受信して、前記複数のクライアントの符号化係数各々を決定し、前記複数のアップストリーム制御パケットを処理して前記ストリーミングサーバと前記複数のクライアントそれぞれとの間の接続の現在の状態を決定し、前記符号化係数各々から前記適応符号器の各符号化レートが決定されるシステム。
【請求項14】
前記ソースレポータから各クライアントに送信される各ダウンストリーム制御パケットはそれぞれパケット識別子を含む請求項13に記載のシステム。
【請求項15】
特定のダウンストリーム制御パケットに呼応して特定のクライアントのシンクレポータから送られるアップストリーム制御パケットは、前記特定のダウンストリーム制御パケットのパケット識別子を含む請求項13または請求項14に記載のシステム。
【請求項16】
前記複数のクライアントそれぞれに関連付けられたデータバッファをさらに備え、
前記アップストリーム制御パケットは、前記データバッファの占有率の表示を含む請求項13から請求項15のいずれか一項に記載のシステム。
【請求項17】
前記ストリーミングサーバと前記複数のクライアントそれぞれとの間の前記接続の前記現在の状態は、前記ストリーミングサーバから前記複数のクライアントのそれぞれへの転送遅延と、損失したダウンストリーム制御パケットの比率とにより特徴付けられ、
前記フローコントローラは、前記転送遅延、前記損失したダウンストリーム制御パケットの比率、および前記データバッファの前記占有率のうち少なくとも1つに基づいて前記符号化係数各々を決定する請求項13から請求項16のいずれか一項に記載のシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12A】
【図12B】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12A】
【図12B】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公表番号】特表2011−529306(P2011−529306A)
【公表日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2011−520285(P2011−520285)
【出願日】平成20年10月16日(2008.10.16)
【国際出願番号】PCT/CA2008/001823
【国際公開番号】WO2010/012066
【国際公開日】平成22年2月4日(2010.2.4)
【出願人】(507090627)ヴァントリックス コーポレーション (11)
【Fターム(参考)】
【公表日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願日】平成20年10月16日(2008.10.16)
【国際出願番号】PCT/CA2008/001823
【国際公開番号】WO2010/012066
【国際公開日】平成22年2月4日(2010.2.4)
【出願人】(507090627)ヴァントリックス コーポレーション (11)
【Fターム(参考)】
[ Back to top ]