(57)【特許請求の範囲】
【請求項１】
容量が経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法であって、
前記接続の現在の符号化レートを決定する段階と、
第１の時点と第２の時点との間のＷ個の計測値を含む時間窓における前記接続の特定の特徴の計測値を得る段階と、
前記計測値から前記特定の特徴のメトリックを決定する段階と、
前記メトリックの値が、下限値と上限値とを有する予め定義された許容インターバル内にあることを条件に、前記現在の符号化レートを許容する段階と、
前記メトリックの値が前記許容インターバル外であることを条件に、前記メトリックの値が前記下限値を下回っている場合には第１の係数により、前記メトリックの値が前記上限値を上回っている場合には第２の係数により、前記現在の符号化レートを調節する段階と
を備え、
前記第１の係数を、前記メトリックの値と前記下限値との偏差の関数として決定し、
前記第２の係数を、前記メトリックの値と前記上限値との偏差の関数として決定する
方法。
【請求項２】
前記特定の特徴は、前記接続における転送遅延であり、
前記メトリックを決定する段階は、
前記転送遅延の計測値σを得る段階と、
前記計測値σを加算して循環アレイＶの現在のインデックスのエントリを減算することにより総計Σを更新する段階であって、前記循環アレイは、ゼロに初期化されるエントリの個数が前記時間窓内の前記計測値σの個数と少なくとも等しいものである段階と、
前記循環アレイの前記現在のインデックスに前記計測値σを格納する段階と、
前記現在のインデックスを、１増分する段階と、
前記循環アレイの前記現在のインデックスが前記Ｗの値に達すると前記現在のインデックスをゼロにリセットする段階と、
計測値の累積数を表すカウンタを１増分する段階と、
前記カウンタが所定の閾値Ｐ＊未満である場合、前記得る段階を繰り返す段階と、
前記カウンタが前記閾値Ｐ＊に少なくとも等しい場合、前記メトリックを前記総計Σとして決定する段階とをさらに有する請求項１に記載の方法。
【請求項３】
前記下限値を、Ｗで乗算された許容可能な転送遅延の下限値として決定して、前記上限値を、Ｗで乗算された許容可能な転送遅延の上限値として決定する請求項２に記載の方法。
【請求項４】
前記現在の符号化レートを調節する段階の後に、前記カウンタをゼロにリセットする段階をさらに備える請求項２または３に記載の方法。
【請求項５】
前記閾値Ｐ＊を、前記現在の符号化レートを調節する任意の連続する２つの段階間の時間間隔が予め定義された最小の時間間隔より大きくなるよう決定する段階をさらに備える請求項２から請求項４のいずれか一項に記載の方法。
【請求項６】
前記特定の特徴がデータ損失比率であり、前記メトリックは、前記時間窓において決定されたデータ損失比率Θであり、前記下限値と前記上限値は、許容可能なデータ損失比率の限界値であり、前記第１の係数は、Θが前記下限値未満であるとき１より大きい所定の乗数として決定され、前記第２の係数は、Θが前記上限値より大きいとき（１−Θ）として決定される請求項１から請求項５のいずれか一項に記載の方法。
【請求項７】
容量が経時変化する接続により符号器から復号器へデータをストリーミングする方法であって、
前記符号器の出力のフローレートを決定する符号化係数を前記接続に関連付ける段階と、
転送遅延、データ損失、及び前記接続により受信したデータを保持する復号器のバッファの占有率を含む複数のパフォーマンス特性を、前記接続と関連付ける段階と、
前記複数のパフォーマンス特性と一対一の関係にある複数のパフォーマンスメトリックを定義する段階と、
現在の符号化係数で、時間窓における同時発生した前記接続のパフォーマンス計測値の複数のセットを得る段階であって、パフォーマンス計測値の各セットが、前記複数のパフォーマンス特性のいずれか１つに対応している段階と、
各パフォーマンスメトリックの現在の値を、パフォーマンス計測値の対応するセットを用いて決定して、パフォーマンスメトリックの現在の値のセットを生成する段階と、
好適な符号化係数を、各パフォーマンスメトリックの前記現在の値に従って決定する段階と
を備え、
前記複数のパフォーマンスメトリックには、
前記時間窓中の前記符号器から前記復号器への転送遅延の関数と、
前記時間窓中のデータ損失の値と、
前記時間窓中の前記復号器のバッファの占有率の関数とが含まれる
方法。
【請求項８】
許容インターバルのセットを定義する段階であって、各許容インターバルがそれぞれ下限値および上限値を有し、前記複数のパフォーマンスメトリックのそれぞれに対応する段階と、
前記パフォーマンスメトリックの現在の値のセットの各エレメントが、対応する許容インターバルの下限値を下回る場合、前記現在の符号化係数を、１より大きい第１の係数で乗算して、前記好適な符号化係数を生成する段階と、
前記パフォーマンスメトリックの現在の値のセットの少なくとも１つのエレメントが、対応する許容インターバルの上限値を上回る場合、前記現在の符号化係数を、１より小さい第２の係数で乗算して、前記好適な符号化係数を生成する段階とをさらに備える請求項７に記載の方法。
【請求項９】
前記第１の係数および前記第２の係数の積が１未満である請求項８に記載の方法。
【請求項１０】
前記時間窓を、少なくとも予め定義された最小時間間隔をおいて前の時間窓に後続するように選択する段階をさらに備える請求項７から請求項９のいずれか一項に記載の方法。
【請求項１１】
前記パフォーマンス計測値の複数のセットは、リアルタイムトランスポートプロトコル（ＲＴＰ）およびリアルタイムトランスポート制御プロトコル（ＲＴＣＰ）を利用する前記符号器と前記復号器との間の制御データの交換により得られる請求項７から請求項１０のいずれか一項に記載の方法。
【請求項１２】
容量が経時変化する接続により符号器から復号器へデータをストリーミングする方法であって、
前記符号器の出力のフローレートを決定する符号化係数を前記符号器に関連付ける段階と、
前記接続のパフォーマンスメトリックを定義する段階と、
下限値と上限値とを有する前記パフォーマンスメトリックの許容インターバルを定義する段階と、
現在の符号化係数で、時間窓における前記接続のパフォーマンス計測値の１つのセットを得る段階と、
前記計測値の１つのセットに従って前記接続の前記メトリックの現在の値を決定する段階と、
前記メトリックの前記現在の値が前記下限値を下回る場合、前記現在の符号化係数を１より大きい第１の係数で乗算して、好適な符号化係数を生成する段階、および、前記メトリックの前記現在の値が前記上限値を上回る場合、前記現在の符号化係数を、１より小さい第２の係数で乗算して、前記好適な符号化係数を生成する段階の２つのステップのいずれかにより前記好適な符号化係数を決定する段階と
を備え、
前記第１の係数を、前記メトリックの現在の値と前記下限値との間の差異の関数として決定し、
前記第２の係数を、前記メトリックの現在の値と前記上限値との間の差異の関数として決定する
方法。
【請求項１３】
前記符号器に命じて、前記好適な符号化係数および公称符号化レートに従って信号を符号化させる段階をさらに備える請求項１２に記載の方法。
【請求項１４】
前記メトリックは、前記時間窓中の転送遅延の平均値、前記時間窓中のデータ損失の平均値、または前記時間窓の最後に計測された復号器のバッファの占有率の値のいずれか１つであり、前記復号器のバッファは、前記接続により受信したデータを保持する請求項１２または１３に記載の方法。
【請求項１５】
容量が経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法であって、
前記接続の現在の符号化レートを決定する段階と、
第１の時点と第２の時点との間のＷ個の計測値を含む時間窓における前記接続の特定の特徴の計測値を得る段階と、
前記計測値から前記特定の特徴のメトリックμを決定する段階と、
μの値が、下限値μ１と上限値μ２とを有する予め定義された許容インターバル内にあることを条件に、前記現在の符号化レートを許容する段階と、
μの値が前記許容インターバルの前記上限値μ２を上回っている場合には、前記現在の符号化レートを係数ｘ２＜１で調節して、μの値が前記許容インターバルの前記下限値μ１を下回っている場合には、前記現在の符号化レートを係数ｘ１＞１で調節する段階と
を備え、
前記特定の特徴は、前記接続における転送遅延であり、
前記メトリックを決定する段階は、
前記転送遅延の計測値を得る段階と、
前記計測値を加算して循環アレイＶの現在のインデックスのエントリを減算することにより総計Σを更新する段階であって、前記循環アレイは、ゼロに初期化されるエントリの個数が前記時間窓内の前記計測値の個数と少なくとも等しいものである段階と、
前記循環アレイの前記現在のインデックスに前記計測値を格納する段階と、
前記現在のインデックスを、１増分する段階と、
前記循環アレイの前記現在のインデックスが前記Ｗの値に達すると前記現在のインデックスをゼロにリセットする段階と、
計測値の累積数を表すカウンタを１増分する段階と、
前記カウンタが所定の閾値Ｐ＊未満である場合、前記得る段階を繰り返す段階と、
前記カウンタが前記閾値Ｐ＊に少なくとも等しい場合、前記メトリックを前記総計Σとして決定する段階と
を備える方法。
【請求項１６】
容量が経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法であって、
前記接続の現在の符号化レートを決定する段階と、
第１の時点と第２の時点との間のＷ個の計測値を含む時間窓における前記接続の特定の特徴の計測値を得る段階と、
前記計測値から前記特定の特徴のメトリックμを決定する段階と、
μの値が、下限値μ１と上限値μ２とを有する予め定義された許容インターバル内にあることを条件に、前記現在の符号化レートを許容する段階と、
μの値が前記許容インターバルの前記上限値μ２を上回っている場合には、前記現在の符号化レートを係数ｘ２＜１で調節して、μの値が前記許容インターバルの前記下限値μ１を下回っている場合には、前記現在の符号化レートを係数ｘ１＞１で調節する段階と
を備え、
前記特定の特徴がデータ損失比率であり、前記メトリックは、前記時間窓において決定されたデータ損失比率Θであり、μ１およびμ２＞μ１は、許容可能なデータ損失比率の限界値であり、前記係数ｘ１は、Θがμ１未満であるとき所定の乗数ｘ＞１として決定され、前記係数ｘ２は、Θ＞μ２であるとき（１−Θ）として決定される
方法。
【請求項１７】
容量が経時変化する接続により符号器から復号器へデータをストリーミングする方法であって、
前記符号器の出力のフローレートを決定する符号化係数を前記符号器に関連付ける段階と、
前記接続のパフォーマンスメトリックを定義する段階と、
下限値と上限値とを有する前記パフォーマンスメトリックの許容インターバルを定義する段階と、
現在の符号化係数で、時間窓における前記接続のパフォーマンス計測値の１つのセットを得る段階と、
前記計測値の１つのセットに従って前記接続の前記メトリックの現在の値を決定する段階と、
前記メトリックの前記現在の値が前記下限値を下回る場合、前記現在の符号化係数を１より大きい第１の係数で乗算して、好適な符号化係数を生成する段階、および、前記メトリックの前記現在の値が前記上限値を上回る場合、前記現在の符号化係数を、１より小さい第２の係数で乗算して、前記好適な符号化係数を生成する段階の２つのステップのいずれかにより前記好適な符号化係数を決定する段階と
を備え、
前記メトリックは、前記時間窓中の転送遅延の平均値、前記時間窓中のデータ損失の平均値、または前記時間窓の最後に計測された復号器のバッファの占有率の値のいずれか１つであり、前記復号器のバッファは、前記接続により受信したデータを保持する
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本国際出願は、２００８年７月２８日出願のＬＡＢＯＮＴＥ，Ｆｒａｎｃｉｓ等による「Flow-Rate Adaptation for a Connection of Time-Varying Capacity」なる名称の米国特許出願第12/180,697号明細書、および、「Data Streaming Through Time-Varying Transport Media」なる名称の米国特許出願第12/180,704号明細書の優先権を主張しており、これらをここに参照として組み込む。
【０００２】
本発明は、ソースが自身のフローレートを自身から個々のシンクへの経路の条件に応じて適合させることができるような、ソースから複数のシンクへのデータ通信に係る。
【背景技術】
【０００３】
データストリーミングシステムにおいては、サーバは複数のシンクと通信することがある。一般的には、サーバに関連付けられたデータソースから個々のデータシンクへの経路は、ソースから共有ネットワークの第１のスイッチノードへの第１のスパン、共有ネットワークを経由する第１のスイッチノードから共有ネットワークの第２のスイッチノードへのスイッチ経路、および、第２のスイッチノードから個々のシンクへの第２のスパンを含む。ある経路が維持可能な最大フローレートは、共有ネットワークの負荷条件および送信媒体の物理的条件に応じて経時変化しうる。経路のどのセグメントも、複数の異なる優先順位が指定された接続により共有されうる。
【０００４】
接続が遅延可能なデータ（例えばコンピュータファイル）を搬送する場合には、経路条件が変動したとしても、失われたデータまたは失われることが分かっているデータの再送信が可能な公知のエンドツーエンドプロトコルを利用することで、送信されるデータの整合性を維持することができる。接続が、データの再送信が望ましくないようなリアルタイムビデオ信号等の遅延不可能なデータを搬送する場合には、信号ソースまたは信号ソースに関連付けられた信号符号器が、それぞれの接続で分かっている容量に応じて信号の内容を適合させることが非常に重要になる。
【０００５】
従って、接続状態のリアルタイムな評価および信号の内容の適合を行うための応答手段を設けて、接続状態が経時変化した場合であってもサービスの品質を維持できるようにする必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、ソースからシンクへの経路の条件に応じてソースからシンクへのデータのフローレートを制御する方法および装置を提供する。
【課題を解決するための手段】
【０００７】
一態様によると、本発明は、経時変化する接続により、符号器から復号器へとデータをストリーミングする方法を提供する。方法は、接続を特徴付ける計測値を得る段階と、計測値によって接続のトランスミッタンスの変化を推定する段階と、トランスミッタンスの変化と符合する符号器の現在の符号化レートの調節を決定して好適な符号化レートを得る段階と、符号器に命じて、好適な符号化レートに従って信号を符号化させる段階とを備える。この接続は、元々は公称符号化レートを割り当てられており、これは符号器の分類に応じて交渉または決定されうる。
【０００８】
計測値は、符号器と復号器との間の転送遅延、データ損失比率、または復号器の受信バッファの占有率等のパフォーマンス特性を含みうる。計測値は、予め定義された期間に相当する時間窓で得られると好適である。
【０００９】
符号化レートは、公称符号化レートを、計測値から導出された第１のメトリックに従って決定される第１の符号化係数で乗算することにより更新することができる。第１の符号化係数は、第１のメトリックの予め定義された関数に従って決定することができる。時間窓における計測値の平均値を、第１のメトリックとして選択することができる。
【００１０】
符号化レートは、公称符号化レートを、時間窓における計測値の傾向に基づく第２のメトリックに従って決定される第２の符号化係数で乗算することにより更新することもできる。符号化係数は、現在の値を、第２のメトリックの予め定義された関数に従って決定される係数で乗算することによって更新することもできる。計測値の傾向は、計測値を時間窓の時間に関連付ける回帰線の傾きに基づいて決定されてよい。計測値の傾向は、回帰線の傾きと、時間窓内の短期間中の計測値の勾配とに基づいて決定されてもよい。
【００１１】
別の態様によると、本発明は、経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法を提供する。方法は、接続の現在の符号化レートを決定する段階と、第１の時点と第２の時点との間の時間窓における転送遅延計測値を得る段階と、時間窓におけるデータ損失比率計測値を得る段階とを備える。そして転送遅延計測値を時間窓内の各時点に関連付ける回帰線を決定し、その傾きを、計測値の傾向を示すものとみなす。さらに第２の時点の直前で選択された転送遅延計測値の勾配を決定する。
【００１２】
傾きおよび勾配に従って、第１の仮の符号化レートを決定し、データ損失比率計測値に従って、第２の仮の符号化レートを決定してよい。そして、第１の仮の符号化レートおよび第２の仮の符号化レートのうち小さいほうを、好適な符号化レートとして選択することで、転送遅延要件およびデータ損失要件のうち、より厳しい要件に適合させることができる。
【００１３】
方法はさらに、クライアントデバイスに関連付けられたバッファの占有率に関する計測値を得る段階を備える。転送遅延要件およびデータ損失パフォーマンス要件を満たす好適な符号化レートが公称符号化レートを超え、占有率が予め定義されたバッファ占有率の閾値を越えている場合には、好適な符号化レートを公称符号化レートに等しくなるまで低減させることで、バッファのオーバフローを回避することができる。第１の仮の符号化レートは、現在の符号化レートを、予め定義された関数Ｅ＊＝Г（α，β）に従って決定される第１の符号化係数Ｅ＊で乗算することにより決定され、αは回帰線の前記傾きであり、βは勾配である。
【００１４】
方法ではさらに、Θで表す前記データ損失比率計測値を、予め定義されたデータ損失比率の許容インターバルの下限値Θｍｉｎおよび上限値Θｍａｘと比較する。Θ＞Θｍａｘであれば、第２の符号化係数Ｅ＊＊をＥ＊＊＝（１−Θ）と決定する。Θ＜Θｍｉｎであれば、第２の符号化係数Ｅ＊＊をＥ＊＊＝ｘ＞１と決定し、ｘは設計パラメータである。そして、現在の符号化レートを第２の符号化レートＥ＊＊で乗算して第２の符号化レートを決定することができる。
【００１５】
さらなる態様によると、本発明は、データストリーミングシステムを提供する。システムは、複数のクライアントと通信するストリーミングサーバを備え、各クライアントは復号器、データバッファ、およびシンクレポータを有する。
【００１６】
ストリーミングサーバは、信号ソースと、信号ソースが生成する信号を符号化する適応符号器と、複数のクライアントを対象とする複数のダウンストリーム制御パケットを作成するソースレポータと、複数のクライアントから複数のアップストリーム制御パケットを受信して、複数のクライアントそれぞれに個々に符号化係数を決定するフローコントローラとを備える。各符号化係数は、各クライアントを対象とする信号の符号化レートを決定する。
【００１７】
特定のクライアントに関連付けられたシンクレポータは、フローコントローラを対象とする複数のアップストリーム制御パケットを作成する。フローコントローラは、ストリーミングサーバと特定のクライアントとの間で交換された複数のダウンストリーム制御パケットと対応する複数のアップストリーム制御パケットとを利用して、接続の現在の状態を判断する。
【００１８】
ソースレポータから特定のクライアントに送られるダウンストリーム制御パケットはパケット識別子を含む。特定のダウンストリーム制御パケットに呼応して特定のクライアントのシンクレポータから送られる対応するアップストリーム制御パケットは、パケット識別子を含む。
【００１９】
アップストリーム制御パケットも、特定のクライアントに関連付けられたデータバッファの占有率の表示を含んでよい。フローコントローラは、特定のクライアントのアップストリーム制御パケットを処理して、ストリーミングサーバから特定のクライアントへの転送遅延と、損失したダウンストリーム制御パケットの比率とから、転送遅延のインジケータを決定する。
【００２０】
別の態様によると、本発明は、経時変化する接続により、符号器から復号器へデータストリーミングする方法を提供する。方法は、符号器の出力のフローレートを決定するべく符号化係数を符号器に関連づける段階と、接続のパフォーマンスメトリックと、下限値および上限値を有するパフォーマンスメトリックの許容インターバルとを定義する段階と、現在の符号化係数で時間窓における接続の１セットのパフォーマンス計測値を得る段階と、１セットの計測値に従って接続のメトリックの現在の値を決定する段階と、メトリックの現在の値と許容インターバルとに従って、符号化係数を好適な符号化係数に調節する段階とを備える。
【００２１】
メトリックの現在の値が許容インターバルの下限値を下回る場合、現在の符号化係数を第１の係数で乗算して、好適な符号化係数を生成する。メトリックの現在の値が上限値を上回る場合、現在の符号化係数を第２の係数で乗算して、好適な符号化係数を生成する。第１の係数は１より大きく、第２の係数は１より小さい。好適には、第１の係数と第２の係数との間の積は１未満である。メトリックの現在の値が許容インターバル内にある場合には、現在の符号化係数を変更しなくてよい。
【００２２】
第１の係数は、メトリックの現在の値と下限値との間の差異の関数として決定することができる。第２の係数は、メトリックの現在の値と上限値との間の差異の関数として決定することができる。メトリックは、時間窓中の転送遅延の平均値、時間窓中のデータ損失の平均値、または時間窓の最後に計測された復号器のバッファの占有率のインジケータとして決定することもでき、ここで復号器のバッファは、接続により受信したデータを保持する。
【００２３】
方法はさらに、好適な符号化係数が現在の符号化係数とかなり異なっている場合に、符号器に命じて、好適な符号化係数と公称符号化係数とに従って信号を符号化させる段階を備える。
【００２４】
さらなる態様によると、本発明は、接続の複数のパフォーマンス特性の測定に基づいて経時変化する接続により、符号器から復号器へデータストリーミングする方法を提供する。方法は、符号器の出力のフローレートを決定する符号化係数を接続に関連付ける段階と、複数のパフォーマンス特性を接続と関連付ける段階と、複数のパフォーマンス特性と一対一の関係にある複数のパフォーマンスメトリックを定義する段階とを備える。
【００２５】
現在の符号化係数で、時間窓における接続のパフォーマンス計測値の複数のセットを得るが、ここでパフォーマンス計測値の各セットは、複数のパフォーマンス特性のいずれか１つに対応している。各パフォーマンスメトリックの現在の値を、計測値の対応するセットを用いて決定して、パフォーマンスメトリックの現在の値のセットを生成する。そして好適な符号化係数を、各パフォーマンスメトリックの現在の値に従って決定する。
【００２６】
方法ではさらに、複数のパフォーマンスメトリックの現在の値それぞれを許容インターバルそれぞれと比較することにより、符号化係数が調節される。各々が複数のパフォーマンスメトリックのいずれか１つに対応しているような許容インターバルのセットを定義する。各許容インターバルは、下限値と上限値それぞれから定義される。パフォーマンスメトリックの現在の値のセットの各エレメントが対応する許容インターバルの下限値を下回る場合、現在の符号化係数を、１より大きい第１の係数で乗算して、好適な符号化係数を生成する。パフォーマンスメトリックの現在の値のセットの少なくとも１つのエレメントが対応する許容インターバルの上限値を上回る場合、現在の符号化係数を、１より小さい第２の係数で乗算して、好適な符号化係数を生成する。
【００２７】
第１の係数は１より大きく、第２の係数は１より小さい。符号化係数を遅いペースで増加させ、比較的速いペースで低下させるには、第１の係数と第２の係数との間の積が１未満になるよう選択するとよい。
【００２８】
複数のパフォーマンス特性には、符号器から復号器への転送遅延、データ損失、接続により受信したデータを保持する復号器のバッファの占有率が含まれてよい。複数のパフォーマンスメトリックには、時間窓中の転送遅延の平均値、時間窓中のデータ損失の平均値、および、時間窓中の復号器のバッファの占有率値が含まれてよい。パフォーマンス計測値の複数のセットは、符号器と復号器との間の制御データの交換により得られて良い。データの交換は、リアルタイムトランスポートプロトコル（ＲＴＰ）およびリアルタイムトランスポート制御プロトコル（ＲＴＣＰ）の利用に基づき行われてよい。
【００２９】
別の態様によると、本発明は、経時変化する接続により、データストリーミングサーバからクライアントデバイスへ送信される信号の適合可能な符号化レートを決定する方法を提供する。方法は、接続の現在の符号化レートを決定する段階と、第１時点と第２時点の間のＷ個の計測値を含む時間窓における接続の特定の特徴の計測値を得る段階と、計測値から特定の特徴のメトリックμを決定する段階とを含む。
【００３０】
μが、下限値μ１と上限値μ２とを有する予め定義された許容インターバル内にある場合、現在の符号化レートは変更する必要がない。一方、μが許容インターバルの上限値μ２を上回っている場合には、現在の符号化レートを係数ｘ２＜１で乗算して、μが許容インターバルの下限値μ１を下回っている場合には、現在の符号化レートを係数ｘ１＞１で乗算することができる。
【００３１】
特定の特徴が接続による転送遅延である場合、メトリックは、転送遅延の計測値σを得る段階と、計測値σを加算して循環アレイＶの現在のインデックスのエントリを減算することにより総計Σを更新する段階であって、循環アレイは、特定の特徴の前の計測値を格納するＷ＞１個のエントリを有する段階と、循環アレイの現在のインデックスに計測値σを格納する段階とにより決定される。計測値の累積数を表すカウンタは１増分され、現在のインデックスは１増分することにより更新される（つまりインデックスが値モジュロＷに達すると０にリセットする）。インデックス、モジュロＷを利用することにより、最新のＷ個の計測値が格納され、カウンタの目的は、メトリックを決定するための連続する時間窓の間を離散させること（space）である。従って、メトリックμとして利用される総計Σを利用することで、カウンタが閾値Ｐ＊以上である場合のみに、符号化レートの調節が必要であると決定することができる。平均値Σ／Ｗの代わりに総計Σを利用する目的は、計算を減らすことである。下限値μ１を、Ｗで乗算された許容可能な転送遅延の下限値として決定して、上限値μ２を、Ｗで乗算された許容可能な転送遅延の上限値として決定する。現在の符号化レートの調節が終わるごとに、カウンタをゼロにリセットする。閾値Ｐ＊は、現在の符号化レートを調節する任意の連続する２つのステップ間の時間間隔が予め定義された最小の時間間隔より大きくなる程度に十分大きい値とする。係数ｘ１は、（μ１−Σ）の関数として決定されてよく、係数ｘ２は（Σ−μ２）の関数として決定される。
【００３２】
特定の特徴がデータ損失比率である場合、メトリックμは、時間窓において決定されたデータ損失比率Θである。下限値および上限値μ１およびμ２＞μ１は、許容可能なデータ損失比率の限界値である。係数ｘ１は、Θがμ１未満であるとき所定の乗数ｘ＞１として決定され、係数ｘ２は、Θ＞μ２であるとき（１−Θ）として決定される。
【図面の簡単な説明】
【００３３】
本発明の実施形態を、添付する例示的な図面を参照しながら以下に記載する。
【図１】本発明の一実施形態における経時変化する容量を有する接続のフローレート適合システムを組み込むネットワークを示す。
【図２】本発明の一実施形態における、符号化レートが接続状態に適合されるよう、可変容量を有する接続による復号器に接続する符号器を含むシステムを示す。
【図３】本発明の一実施形態における、接続を特徴付ける選択された計測値を格納する図２の符号器に関連付けられた循環バッファを示す。
【図４】本発明の一実施形態における、図２のシステムの符号器で受信された接続の計測値を示し、これら計測値は、互いに分離した、あるいは重複する時間窓で分析されている。
【図５】本発明の一実施形態における、時間窓内における計測値の変動に基づいて符号化係数を決定する方法を示すフローチャートである。
【図６】複数の時間窓における連続する計測値の複数の回帰線の一例を示しており、本発明の一実施形態においては、この回帰線の傾きを図５の方法で利用して、符号化レートの好適な値を決定する。
【図７】本発明の一実施形態において利用される正および負の傾き両方を有する複数の回帰線の別の例を示す。
【図８】図５の方法を示す正の傾きおよび負の勾配を有する回帰線の元である、時間窓における計測値を例示する。
【図９】図５の方法を示す負の傾きおよび正の勾配を有する回帰線の元である、時間窓における計測値を例示する。
【図１０】本発明の一実施形態における、線形回帰の傾きおよび計測値の勾配の両方が定義する領域に従って決定される離散ステップにおいて、符号化係数のデクリメントが生じる図５の方法を示す。
【図１１】本発明の一実施形態における、線形回帰の傾きおよび計測値の勾配の両方が定義する領域に従って決定される離散ステップにおいて、符号化係数のインクリメントが生じる図５の方法を示す。
【図１２Ａ】本発明の一実施形態における、リアルタイムトランスポートプロトコル（ＲＴＰ）を利用して接続の計測値を得るステップを示すフローチャートである。
【図１２Ｂ】本発明の一実施形態における、リアルタイム制御トランスポートプロトコル（ＲＴＣＰ）を利用して接続の計測値を得るステップを示すフローチャートである。
【図１３】本発明の一実施形態における、符号器から送られるＲＴＰパケット、および、復号器から受信するＲＴＣＰパケットに基づいて接続のパフォーマンス計測値を判断する処理を示すフローチャートである。
【図１４】本発明の一実施形態における、接続メトリックと対応する符号化係数とを決定するステップを示すフローチャートである。
【図１５】本発明の一実施形態における、符号化係数を決定するための、互いに分離した、あるいは重複する時間窓で採られた計測値を処理する別の方法を示す。
【図１６】本発明の一実施形態における、重複する時間窓の計測値の移動平均値の計算を示す。
【図１７】本発明の一実施形態における、接続のメトリックと予め定義された限界値との比較に基づき好適な符号化係数を決定する方法を示す。
【図１８】本発明の一実施形態における、図１７の方法の基本的なステップを示すフローチャートである。
【図１９】本発明の一実施形態における、計算を最小限にするさらなるステップを含む図１７の方法のステップを詳述するフローチャートである。
【図２０】２つのメトリックの現在の値に応じて符号化係数を調節する図１７を参照して記載されたプロセスの拡張を示す。
【図２１】３つのメトリックの現在の値に応じて符号化係数を調節する図１７を参照して説明するプロセスの拡張を示す。
【図２２】本発明の一実施形態の説明に利用される、パケット損失比率、対、ストリーミングサーバから送信される信号の符号化レートの接続トランスミッタンス（connection transmittance）に対する比率の間の変動を示す。
【発明を実施するための形態】
【００３４】
＜用語＞
符号フローレート：符号化される信号のビットレートは経時的に変動するので、本明細書では、符号化される信号の最大ビットレートをフローレートと称することにする。
適応符号器：適応符号器は、信号を、予め定義されたフローレート範囲内の特定のフローレートに符号化する機能を有するデバイスのことである。符号化により、符号化および信号の忠実度（encode-signal fidelity）が最大化されるよう試みられる。
公称フローレート：クライアントとストリーミングサーバとの間で交渉されたフローレート、あるいは、クライアントの知っている範囲でストリーミングサーバが自動的に決定するフローレートを、本明細書では公称フローレートと称する。
符号化係数：Ｅで表される符号化係数は、ストリーミングサーバとクライアントとの間の接続の現在の状態に適合する好適なフローレートを決定するための、公称フローレートで乗算されたスケールファクタである。
接続トランスミッタンス（connection transmittance）：ストリーミングサーバからクライアントまでの接続を、所期のパフォーマンス上の目的に背くことなく維持することのできる最大フローレートのことを、本明細書では接続トランスミッタンスと称する。
パフォーマンス特性：本明細書では、パフォーマンス特性は、転送遅延の変化、データ損失比率、信号歪曲等の計測値可能な接続特性として定義される。
スカラー計測値：１つの接続特性に関する接続計測値を、スカラー計測値と称する。
ベクトル計測値：ベクトル計測値は、同時発生する複数の接続計測値により構成される。
統計値：統計値とは、データサンプル１セットから導出される値（例えば平均値）である。
メトリック：メトリックとは、電話通信ネットワークにおける経路または接続の品質の計測値のことである。メトリックは、経路または経路内の接続のレインテンシー、信頼性、容量等の接続特性に関するものであってよい。
スカラーメトリック：ある接続特性に関するメトリックのことを本明細書ではスカラーメトリックと称する。スカラーメトリックは、複数のスカラー計測値から決定される。
ベクトルメトリック：少なくとも２つの接続特性に関するメトリックのことを本明細書ではベクトルメトリックと称する。ベクトルメトリックは複数のベクトル計測値から決定される。
許容インターバル：許容可能な経路または接続パフォーマンスを示すと考えられる、予め定義された低いほうの限界値と予め定義された高いほうの限界値との間のメトリックの範囲が、本明細書でいうところの許容インターバルである。
ダウンストリーム制御パケット：ストリーミングサーバからクライアントに送られる制御パケットがダウンストリーム制御信号である。
アップストリーム制御パケット：クライアントからストリーミングサーバに送られる制御パケットがアップストリーム制御信号である。
勾配（gradient）：従来、連続関数の２つの変数の間の傾き（slope）が勾配として知られている。サンプルの関数の場合の勾配は、少数のサンプルにおける傾きを決定することで近似することができる。本明細書でいうところの勾配は、少数のサンプルをカバーする期間における計測値サンプルの傾きのこととする。
回帰線：１セットのデータを通るように引かれ、且つ、一定の基準（例えば、直線からのデータの偏差の二乗和を最小とするような基準）により決定される直線が回帰線である。回帰線の傾きは、データの分散が一定の条件を満たすときにはデータの傾向を示す信頼できる指標となりうる。
リアルタイムトランスポートプロトコル（ＲＴＰ）：ＲＴＰは、オーディオおよびビデオをインターネットで配信する標準的なパケットフォーマットを定義する（ＩＥＴＦ（Internet Engineering Task Force）による定義、ＲＦＣ３５５０）。
リアルタイムトランスポート制御プロトコル（ＲＴＣＰ）：ＲＴＣＰは、ＲＴＰフローのアウトオブバンド制御情報を提供し、ストリーミングセッションで制御パケットを送信するために期間的に利用される。ＲＴＣＰの主な役割は、接続品質に対するフィードバックを提供することである。
【００３５】
図１は、データストリーミングシステムを示しており、ストリーミングサーバコンピューティングデバイス１２０（ストリーミングサーバ１２０とも称される）が、共有ネットワーク１８０（例えばインターネット）を介してクライアントデバイス１６０（クライアント１６０とも称される）にデータを送信する。クライアント１６０は、プロセッサおよびコンピュータ可読媒体を含み、有線アクセス媒体１５０または無線アクセス媒体１５２を介して基地局１４０経由でネットワーク１８０に接続され、基地局１４０はネットワーク１８０に、有線または無線媒体により接続される。好適な実施形態では、サーバ１２０は既存のプロトコルを利用して、クライアント１６０と制御データを交換する。例えば、ストリーミングサーバ１２０は、リアルタイムトランスポートプロトコル（ＲＴＰ）を利用して、クライアント１６０に制御データを送り、クライアントはリアルタイムトランスポート制御プロトコル（ＲＴＣＰ）を利用してストリーミングサーバに制御データを送ることができる。他のプロトコルを接続品質制御に利用することもできる。本発明においては、クライアントはストリーミングサーバとの間でデータ符号化レートについて交渉し、ストリーミングサーバが、ストリーミングサーバ１２０とクライアントとの間の接続の状態の変化に応じて符号化レートを調節することができる。特に、ストリーミングサーバ１２０は、交渉された公称フローレート（ビットレート）およびストリーミングサーバ１２０からクライアント１６０への個々の接続状態に応じて、クライアント１６０に対して個別に符号化レートを割り当てることができる。ストリーミングサーバはさらに、クライアントの機器タイプを認識しており、これによって公称フローレートを決定することができる。
【００３６】
図２は、ストリーミングサーバ１２０からクライアント１６０への単一の接続のインスタンスを示す。ストリーミングサーバ１２０は信号ソース２０４を含み、チャネル２０６を介して適応符号器２２０に接続する。適応符号器２２０は、ソース２０４からの信号を、フローコントローラ２４６が決定した符号化係数および公称フローレートに基づいて符号化する。ストリーミングサーバ１２０は、経時変化する容量を有しうるチャネル２６０を介してクライアント１６０に接続する。クライアント１６０はレシーバ２２６を含み、レシーバ２２６は、情報信号（例えばビデオ信号）を検出して、検出した信号を復号器２４０に送り、復号器２４０は、検出した信号をユーザ２８０にとって適切なフォーマットに整える。バッファ２３８は復号器２４０と関連付けられていてよく、短期間の間データを保持する。検出された信号はさらに、シンクレポータ２４２を対象とする制御パケットを含みうる。シンクレポータは、ソースレポータ２２４から受信した制御パケットを処理して、受領確認と特定の計測値とを制御パケットに含めて、制御チャネル２７０経由でフローコントローラ２４６に送ることができる。
【００３７】
接続２６０の容量が経時変化することから、フローコントローラ２４６は、経時変化するチャネル２６０のトランスミッタンスを正確に推定して、適切な符号化係数Ｅを計算することが非常に重要となる。適応符号器２２０は、クライアントに割り当てられた公称符号化レートおよび符号化係数の現在の値に応じて信号を符号化する。フローコントローラ２４６は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、許容可能なフローレート（ビットレート）全体を決定する、あるいは、情報内容を選択的に調節することで一定の信号品質を保つ。ビデオ信号の場合には、符号器はフレームレート、フレーム毎の内容、あるいはこれら両方を修正することができる。
【００３８】
フローコントローラ２４６は、サーバ１２０とクライアント１６０との間での制御パケットの交換で得た計測値を利用する。ソースレポータ２２８は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、クライアント１６０を対象とするダウンストリーム制御パケット（不図示）を作成（formulate）する。シンクレポータ２４２は、コンピュータ可読媒体に格納されたコンピュータ可読命令を含み、各クライアント１６０に関連付けられて、フローコントローラ２４６に送るべきアップストリーム制御パケット（不図示）を作成する。フローコントローラ２４６は、ストリーミングサーバとクライアント１６０との間の接続を介して交換されたアップストリーム制御パケットとダウンストリーム制御パケットとを利用して、接続の現在の状態およびクライアント１６０の個々の適切な符号化係数を決定する。各符号化係数は、各クライアントを対象とする信号の符号化レートを決定する。
【００３９】
特定のクライアント１６０に対してソースレポータ２２８が送信する特定のダウンストリーム制御パケットは、ダウンストリーム制御パケット識別子と、ダウンストリームパケットを送信する時点の指標とを含む。この特定のクライアント１６０のシンクレポータ２４２が特定のダウンストリーム制御パケットに呼応して送信する、対応するアップストリーム制御パケットは、ダウンストリーム制御パケット識別子をエコーしており、この特定のクライアントがこの特定のダウンストリーム制御パケットを受信した時点を示している。
【００４０】
フローコントローラは、符号化係数Ｅの計算を、予め定義された幅Ｗを有する時間窓中に受信した計測値に基づいて行うことができる。幅Ｗは、時間インターバル（例：数ミリ秒）、あるいは、複数の得られた計測値（例：最新の１２８個の計測値）で定義される。今後、本明細書では時間窓の幅を、計測値のインスタンス数で表すこととする。
【００４１】
ストリーミングサーバ１２０は、少なくとも１つのプロセッサ（不図示）と、コンピュータ可読命令が格納されたコンピュータ可読媒体（不揮発性メモリ素子、ＤＶＤ，ＣＤ−ＲＯＭ、またはフロッピー（登録商標）ディスク等）とを含む。コンピュータ可読媒命令は、少なくとも１つのプロセッサにより実行されて、適応符号器２２０、ソースレポータ２２８、およびフローコントローラ２４６に後述する機能を実行させる。
【００４２】
図３は、フローコントローラ２４６が維持する循環バッファ３２０に格納される計測値を示す。説明を簡潔にする都合上、図示されている例における循環バッファは、時点ｔｊからｔｊ＋７の間に得られた８つの計測値３４２のみを含むものとして示している（（ｊ＋７）が現在の観察時点である）。しかし循環バッファは多数（ｖ個）のレコードを保持することができる。１つのレコードは、１つの計測値（スカラー計測値）あるいは１セットの同時発生した計測値（複数のベクトル計測値）を対応する時間の指標とともに含んでもよい。インデックスｊの新たなレコードは、前のインデックス（ｊ−ｖ）のレコードを上書きする。従って循環バッファ３２０は、最新のｖ個の計測値（スカラー計測値またはベクトル計測値）を維持する。復号器２４０に関連付けられているバッファ２３８の占有率等、幾らかの計測値のなかには、クライアント１６０から受信するアップストリーム制御パケットから抽出できるものもある。さらに、フローコントローラ２４６は、クライアント１６０に対するダウンストリーム制御パケットが送られた時点を、サーバ１２０がクライアント１６０から対応するアップストリーム制御パケットを受信した時点と比較することで、転送遅延を判断してもよい。パケット損失（データ損失）は、クライアント１６０に送られた連続するダウンストリーム制御パケットの数と、クライアント１６０から受信され抽出された連続するアップストリームパケットの数とを比較することで検出することができる。損失パケット数の、ダウンストリーム制御パケットの数に対する比率はパケット損失比率として定義され、ここではΘという記号で表す。
【００４３】
循環バッファ３２０の各レコードは、（１）ダウンストリーム制御パケットのシリアル番号３４０（ｊ、ｊ＋１、ｊ＋２、…等）、（２）同じレコードのシリアル番号３４０を示すアップストリーム制御パケットがサーバ１２０で受信された時点３４２（ｔｊ、ｔｊ＋１等）、および、（３）バッファ２３８の占有率等のアップストリーム制御パケットに含まれる計測値３４４が含まれる。
【００４４】
十分な数のシリアル番号３４０を維持することにより、任意の幅の時間窓でパケット損失比率を合理的な範囲内で計算することができる。ダウンストリーム制御パケットの送信時間と、対応するアップストリーム制御パケットの受信時間３４２とを維持することにより、転送遅延を計算することができる。従って、接続を特徴付ける計測値には、フローコントローラ２４６で計算された計測値（例えば転送遅延またはパケット損失比率）、および、直接アップストリーム制御パケットから読み出された計測値３４４が含まれてよい。
【００４５】
時間窓は、所期の制御パケットの最大数または所期の期間をカバーするような範囲としてよい。図１９を参照して後述するようにこの２つの条件を利用してより厳しい条件で時間窓を定義する。
【００４６】
図４は、フローコントローラ２４６が受信した制御パケットから抽出された連続する計測値を示す。経時変化するチャネルを特徴付けるメトリックを時間窓の最後に計算する。図４の例では、各窓が８つの計測値をカバーしている。メトリックは、遅延、データ損失、復号器２４０のバッファ占有率、および復号器の出力を分析することで判断された信号品質等の幾らかの属性の一部または全てをカバーしていてよい。計測値は、データ損失比率等の１つの接続特徴に関しているスカラーであっても、転送遅延、データ損失、および、接続に関連付けられたバッファの占有率等の複数の接続特徴をカバーするベクトルであってもよい。
【００４７】
現在の窓における計測値データの分析結果によって、後続する時間窓を選択してもよい。ある窓における計測値の分析の結果符号化レートを修正した場合には（つまり、符号化係数Ｅを修正した場合には）、後続する窓を、現在の窓から大幅な時間インターバル分離れるように設けることもできる。また後続する窓は、現在の窓に隣接して設けたり、現在の窓に重複するような移動窓として設けたりすることもできる。
【００４８】
図４の例では、窓４２０の最後の計測値の後に決定された接続のメトリックによって、符号化係数が更新される場合がある。窓２４０Ａの最後に決定されたメトリックによって、現在の接続の符号化係数Ｅが更新されている。従って新たな窓２４０Ｂは、窓２４０Ａの直後に設けられている。窓２４０Ｂの最後に決定されたメトリックによっても符号化係数が更新されているので、窓２４０Ｃは窓２４０Ｂの直後に設けられている。窓２４０Ｃの最後に決定されたメトリックによっても符号化係数が更新されているので、窓２４０Ｄは窓２４０Ｃの直後に設けられている。窓２４０Ｄの最後に決定されたメトリックでは、符号化係数が変更されなかった。従って後続する窓２４０Ｅは窓２４０Ｄに重複している。窓２４０Ｅの最後に決定されたメトリックでは符号化係数が変更されなかった。同様に、窓２４０Ｆの最後に決定されたメトリックでは符号化係数が変更されなかった。重複する窓２４０Ｇの最後に決定されたメトリックによって、符号化係数が修正された。従って新たな窓２４０Ｈは、窓２４０Ｇの直後に設けられている。窓２４０Ｈの最後に決定されたメトリックにより符号化係数が修正されたので、後続する窓２４０Ｉがその直後に設けられている。重複する窓（移動窓）２４０Ｉ、２４０Ｊ、２４０Ｋ、２４０Ｌ、および２４０Ｍの全てによっても（Ｉ、Ｊ、Ｋ、Ｌ、およびＭという符号を付される計測値で終わっているが）、符号化係数は修正されなかった。重複する窓２４０Ｎの最後に決定されたメトリックによって、符号化係数が修正されたので、新たな窓（不図示）はその直後に設けられることになる。
【００４９】
図５は符号化係数の好適な現在の値を決定する基本的なステップを示す。ステップ５２０で、符号化係数Ｅを１．０に等しくなるよう設定する（このときの符号化レートは、接続が確立されたとき決定される公称符号化レートである）。符号器は当然ながら符号化された信号の性質に従って変化するレートでデータを生成する。しかしこの符号化係数Ｅによって、符号器は、符号化された信号のダイナミクス（変動するビットレート）に関わらず自身の出力フローレートを独立して修正することになる。循環バッファ３２０（図３）のインデックスも、ステップ５２０でゼロに（あるいは、バッファ長を越えない任意の所期の値に）初期化される。ステップ５２２で、フローコントローラ２４６は、シンクレポータ２４２が送ってくる制御データを取得して、制御パケットから接続計測値を抽出して、循環バッファのアドレス「インデックス」に該計測値を格納して、その後ステップ５２４でインデックスが１に増分される。アドレスインデックスは、Ｗに達すると、０にリセットされる。ステップ５２６で、インデックスの値が窓の幅Ｗより小さいと判断されると、ステップ５２２に戻り、新たな計測値（スカラー計測値）または１セットの同時発生した計測値（ベクトル計測値）を受信して処理する。窓の幅は、複数のバッファレコードとして表すことができ、ここでは各レコードがスカラー計測値またはベクトル計測値を持っている。ステップ５２６でインデックスの値が窓の幅Ｗに少なくとも等しいと判断されると、ステップ５２８で、窓の最後に先立つ短期間の間にβで表される勾配を決定する。勾配βの絶対値が第１の予め定義された閾値
0005465723.tif 000002
より小さい場合には、符号化係数は更新せず、ステップ５２２に戻る。さもなくば、ステップ５３２で、線形回帰法により最新のＷ個の計測値の傾向を判断する。ステップ５４０で、αで表される回帰線の傾きの絶対値を、第２の予め定義された閾値
0005465723.tif 000003
と比較する。αの絶対値（｜α｜で表す）が
0005465723.tif 000004
より小さい場合には、ステップ５２２に戻り、フローコントローラが受信した新たな制御パケットからスカラー計測値またはベクトル計測値を得て格納する。一方
0005465723.tif 000005
である場合には、ステップ５４２で、予め定義された関数Г（α，β）によって新たな符号化係数Ｅを決定して、インデックスを０にリセットする。ステップ５４６で、Ｅの値を予め定義された最小値Ｅｍｉｎより大きく予め定義された最大値Ｅｍａｘより小さい範囲に設定する。
【００５０】
計測値が高い接続トランスミッタンスを示す場合に関数Г（α，β）によりＥの値が連続増加する場合には、Ｅの値が所期の設計値である上限値Ｅｍａｘを超えることになる。次いでステップ５４６で、Ｅの値をＥｍａｘ（Ｅ←ｍｉｎ（Ｅ，Ｅｍａｘ））に低減させる。
【００５１】
符号化レートを一定の値未満にまで低減させると、計測値が低い接続トランスミッタンスを示す場合に関数Г（α，β）によりＥの値が連続減少する場合には、Ｅの値は所期の設計値である下限値Ｅｍｉｎ未満になる。その場合にはステップ５４６でＥの値をＥｍｉｎ（Ｅ←ｍａｘ（Ｅ，Ｅｍｉｎ））に増加させる。
【００５２】
αおよびβの絶対値の小さな値から推論されるように、接続トランスミッタンスの変化が無視できる範囲である場合には、ステップ５４２をかなり長期間の間起動しなくてよい。ただし循環バッファ３２０で新たな計測値で、処理済みの前の計測値を上書きし、ステップ５３２で回帰線の傾きαを最新のＷ個のスカラー計測値（またはＷ個のベクトル計測値）から決定する。
【００５３】
図５のステップは、記憶媒体に格納されているコンピュータ可読命令に従って、フローコントローラ２４６に関連付けられたプロセッサによって実装される。
【００５４】
図６は、クライアント１６０における遅延、データ損失比率、またはバッファ占有率といった接続特徴の連続する計測値を示す。回帰線６２０の傾きは正の値であり、これは接続条件が低下していること（接続トランスミッタンスが低下していること）を示すので、符号化レートを下げることで（つまり、符号化係数Ｅを下げることで）フローレートを下げる必要があることを意味している。
【００５５】
図７はクライアント１６０の接続特徴の連続する計測値を示す。回帰線６２０の傾きは、正の値から複数の負の値へと変化しており、これは接続条件が一旦低下した後で向上していることを示す。
【００５６】
図８は、図４の窓４２０における８つのスカラー計測値を示す。計測値からの偏差の二乗和を最小にするよう選択された回帰線６２０の時点ｔｊ、ｔｊ＋１，…ｔｊ＋７は、傾きα＝１．６４である。最後の２つの計測値から決定された勾配βは負である。Ｅの値を予め定義された関数Г（α，β）から決定する。関数Г（α，β）の一例を、表形式で図１０に示す。
【００５７】
図９は、回帰線の傾きα＝−１．６４である窓における８つのスカラー計測値を示す。最後の２つの計測値から決定された勾配βは正である。Ｅの値を予め定義された関数Г（α，β）から決定する。
【００５８】
図１０は、回帰線の傾きαが正の値である場合の関数Г（α，β）の一例を示す。本図から、勾配βが１．０未満でありα≧０である場合、または、勾配βが１以上でありαが０．１未満である場合には、符号化係数Ｅを変えない。図８の計測値においては、回帰線の傾きαが正であり勾配βが負になっている。従って図１０の関数Г（α，β）では、符号化係数Ｅを変更しない。
【００５９】
同様に図１１は、αが負の値である場合の関数Г（α，β）の一例を示す。β≧（−１．２）の場合、または、β＜（−１．２）であるがα＞（−０．２）である場合には、Ｅの値は変えない。図９の計測値においては、回帰線の傾きαが負であり勾配βが正になっている。従って図１１の関数Г（α，β）においては、符号化係数Ｅは変えない。
【００６０】
図１２Ａおよび図１２Ｂは、既知のプロトコルを利用してストリーミングサーバ１２０とクライアント１６０との間で制御パケットを交換するプロセスを示す。図１２Ａは、ＲＴＰ（リアルタイムトランスポートプロトコル）制御パケットをクライアント１６０に送信するプロセスを示し、図１２ＢはＲＴＣＰ（リアルタイム制御トランスポートプロトコル）パケットをクライアント１６０から受信して、フローコントローラ２４６でＲＴＣＰパケットの内容を処理するプロセスを示す。図１２Ａのプロセスはステップ１２２０でソースレポータ２２８（図２）がＲＴＰ制御パケットを準備することから開始される。ステップ１２２２で、符号化係数の現在の値を判断する。ステップ１２２４でＲＴＰパケットのシーケンス番号およびＲＴＰパケットを送信する時間を記録する。ステップ１２２６でＲＴＰパケットがクライアント１６０それぞれに対して送信される。
【００６１】
図１２Ｂのプロセスはステップ１２４０でフローコントローラ２４６（図２）がＲＴＣＰパケットをシンクレポータ２４２から受信することから開始される。ステップ１２４２で計測値データをＲＴＣＰパケットから抽出する。ステップ１２４４で、現在の時点と、符号化係数が前に更新された時点との差異を判断する。時間の差異が予め定義された最小更新インターバルよりも小さい場合には、ステップ１２４０に戻り、待ち状態のＲＴＣＰパケットについて検討する、あるいは今後到達するＲＴＣＰパケットを待つ。一方で時間の差異が最小更新インターバル以上である場合には、ステップ１２４６で新たに許可可能な符号化レートを決定する。ステップ１２４８では符号化係数の更新が必要か否かを判断する。判断結果が肯定的である場合には新たな符号化係数を決定する。判断結果が否定的であった場合にはステップ１２４０に戻る。ステップ１２６０で符号化係数を更新して符号器２２０に伝え、フローコントローラ２４６（図２）が新たなＲＴＣＰパケットを検討する準備が整う（ステップ１２４０）。
【００６２】
図１２Ａおよび図１２Ｂのステップは図１３および図１４でさらに詳しく示すが、フローコントローラ２４６に関連付けられている上述したプロセッサにより、記憶媒体に格納されているコンピュータ可読命令に従って実装される。
【００６３】
図１３は図１２Ｂのステップ１２４２をより詳しく示す。ステップ１３２０で、受信されたＲＴＣＰパケットに、シンクレポータ２４２からの「レシーバレポート」が含まれていないか調べる。ＲＴＣＰパケットがレシーバレポートを含んでいない場合にはステップ１３４０を実行して、ＲＴＣＰパケットがバッファ占有率レポートを含んでいないか調べる。ＲＴＣＰパケットがレシーバレポートを含んでいる場合には、ステップ１３２２で、転送遅延を、ＲＴＣＰパケットの現在の到着時点と、対応するＲＴＰパケットを送信する時点との間の時間の差異として決定する。この、対応するＲＴＰパケットとは、ＲＴＣＰレシーバレポートの「拡張された最高シーケンス番号が受信された(extended highest sequence number received)」フィールドに示される番号と符合するシーケンス番号を有するＲＴＰパケットのことである。ステップ１３２６で最小転送遅延を、ステップ１３２２で計算された転送遅延および接続の最小転送遅延の前の値のうち小さいほうの値に決定する。最小転送遅延を任意の大きな値に初期化する。最小転送遅延は、変動転送遅延の測定用の参照値として将来利用するために維持しておく。
【００６４】
図１４は、接続メトリックおよび対応する符号化係数を決定するステップの概略を示すフローチャートである。ステップ１４２０で、ある時間窓におけるパフォーマンス計測値の回帰線の傾きを、任意の公知の分析法により計算する。さらに時間窓の最後付近における計測値の勾配も決定する。さらにステップ１４２２で、この時間窓におけるデータ損失の統計値を決定する。ステップ１４２４で、符号化係数のある好適な値（Ｅ＊と称する）を、回帰線の傾きと勾配とに基づいて、図１０および図１１を参照して上述したように決定する。ステップ１４２６で、符号化係数のある好適な値（Ｅ＊＊と称する）をステップ１４２２で決定したデータ損失統計値に従って決定する。ステップ１４２８で、Ｅ＊およびＥ＊＊のうちの小さいほうを選択して新たな符号化係数Ｅとする。好適な接続条件下では、好適な符号化係数は１．０を超えてよい（つまり、符号器は、接続に割り当てられる公称フローレートを超えるフローレート（ビットレート）を瞬間的に有するようなストリームを生成してもよい、ということである）。
【００６５】
こうして決定された符号化係数Ｅを、さらに接続のクライアント側に配置されているバッファの占有率に従って修正する。ステップ１４３２では、バッファ占有率データが利用不可能である場合、プロセスをステップ１２６０（図１２Ｂ）に送る。さもなくば、ステップ１４３４で、時間窓でのバッファ占有率計測値が予め定義された閾値を超えるか否かを判断する。超えると判断される場合であってステップ１４２８で決定された符号化係数が１．０を超える場合には、ステップ１４４０で好適な符号化係数を１に低減し、プロセスは図１２Ｂのステップ１２６０に戻る。ステップ１４３４および１４４０は一例である規則に従う。バッファ占有率統計値の利用に関する他の規則を利用することもできる。
【００６６】
図１５は、別の実施形態における接続計測値の処理方法を示し、これによって、連続または重複する窓における計測値の平均値を利用して符号化係数の新たな値が決定される。時間窓１５２０において採られた、特定の接続特徴（例えば転送遅延またはデータ損失）に対応する計測値の平均値に基づく統計値を、特定の接続特徴の予め定義された許容可能な参照値と比較する。統計値が参照値よりも大幅に超える場合には、符号化係数を下げ、この結果符号化レートが公称フローレート未満に下がる。統計値が参照値よりも大幅に小さい場合には、符号化係数を上げることができる。従って特定の特徴に対応して２つの限界点μ１およびμ２（μ１＜μ２）を定義することができる。統計値がμ１を下回る場合には符号化係数を上げ、統計値がμ２を上回る場合には符号化係数を下げる。差異（μ２−μ１）の選択が重要となる。この差異を非常に小さくすると、低い値と高い値との間に不当に急速なフラッピングが生じうる。この差異を非常に大きくすると、応答が遅くなり、応答が全くなってしまう場合すらあり、これは接続条件を著しく変化させる。
【００６７】
図１６は、各窓が８つの計測値をカバーするような連続且つ重複する窓におけるスカラー計測値の平均値として定義される移動平均を示す（単位は自由である）。それぞれ最初の４つの重複する窓の平均値１６．２５、１７．０、１６．７５、および１７．７５は遅い変化を示しており、符号化係数の現在の値を変えなくてよい。しかし、複数の計測値から決定される２１．５という平均値は（図１６参照）、符号化係数の修正をトリガして、適応符号器２２０のパラメータを調節させる。図４を参照して上述したように、時間窓の最後に決定されたメトリックに応じて、後続する時間窓が選択される。
【００６８】
図１７は、符号化係数Ｅを、経時変化する接続２６０のメトリックμの現在の値に調和させる方法を示す。任意の接続条件において、メトリックμの値は、符号化係数Ｅの増加につれて増加する。図１７でそれぞれ線１７２０および１７４０として示されている２つの限界点μ１およびμ２は、許容可能な接続パフォーマンスの範囲の定義である。図１７は、５つの接続トランスミッタンスの値（η１、η２、η３、η４、η５で表し、η１＞η２＞η３＞η４＞η５である）についての符号化係数Ｅに対するメトリックμの依存関係の一例を示す。当初はＥが１に等しく設定されており、対象クライアントに割り当てられた公称符号化レートで符号器は動作していた。公称符号化レートは、通常の接続条件下で接続パフォーマンスが許容可能になるように選択され、この場合トランスミッタンスはη１に等しい。図１７で、接続メトリックμのサンプル値を、インデックス（０）から（９）で表す。トランスミッタンスが最大値η１である場合には、Ｅ＝１．０であり、現在のメトリックの値は｛インデックス（０）｝となり、μ１とμ２との間にある。その後、接続条件が低下して、接続のトランスミッタンスが値η２に下がり、メトリックμは上限値μ２を超える新たな値｛インデックス（１）｝となる。フローコントローラ２４６は、値ｅ１だけ符号化係数Ｅを減少させ、これによりメトリックμの新たな値｛インデックス（２）｝がインターバル（μ１，μ２）範囲に収まるようになる。接続条件は低下を続け、接続トランスミッタンスがη４＜η２にまで低下し、メトリックμの新たな値｛インデックス（３）｝がインターバル（μ１，μ２）をかなり超えるようになる。増加したメトリックに呼応して、フローコントローラ２４６は、符号化係数をｅ３分低下させる。メトリックμの値は｛インデックス（４）｝下がるが、依然としてμ２より高い。符号化係数がさらに２回ｅ４およびｅ５下がると、インデックス（５）および（６）が表す値となり、符号化係数は約０．５６となり、メトリックμは、インターバル（μ１，μ２）の範囲内である｛インデックス（６）｝の値に下がる。その後、接続条件は向上し、符号化係数Ｅの同じ値０．５６にて、メトリックμが値｛インデックス（７）｝に下がり、これはインターバル（μ１，μ２）より下回っている。フローコントローラ２４６は、符号化係数をｅ７分増やし、これによりμ｛インデックス（８）｝の値は増加するが、依然としてμ１未満である。フローコントローラ２４６はさらに符号化係数をｅ８分増やして０．７５の値として、μの値｛インデックス（９）｝をインターバル（μ１，μ２）の範囲で増加させる。符号化係数Ｅは、接続トランスミッタンスにその後変化が生じてメトリックが変化するまでは、０．７５の値に留まる。
【００６９】
図１８は、図１７のプロシージャのステップ１８２０から始まる主要なステップのフローチャートである。ステップ１８２０で、メトリックμの新たな値を、図１５および図１６を参照して上述した窓における計測値から決定する。ステップ１８２４で、この新たな値を上限値μ２と比較して、μ＞μ２である場合には、ステップ１８６０で、Ｅの現在の値を係数ｘ２＜１乗算することで符号化係数を低くして、プロセスはステップ１８２０に戻る。μ≦μ２である場合には、ステップ１８２６でメトリックμの新たな値を、許容可能なインターバル（μ１，μ２）の下限値μ１と比較する。μ≧μ１である場合には、メトリックの新たな値が許容可能なインターバル（μ１，μ２）の範囲内にあると判断され、プロセスはステップ１８２０に戻り、メトリックμの新たな値を処理する。μ＜μ１である場合には、ステップ１８４０で、Ｅの現在の値を係数ｘ１＞１で乗算することで符号化係数Ｅを更新して、プロセスはステップ１８２０に戻る。係数ｘ１およびｘ２（ｘ１＞１、ｘ２＜１）は、（μ１−μ）および（μ２−μ）の差異にそれぞれ依存してよい。積（ｘ１×ｘ２）が１未満である場合、μ＜μ１のとき、Ｅの値は比較的小さなステップで上昇し、μ＞μ２のときＥは比較的大きなステップで低下する。
【００７０】
図１９は、図１７のプロセスをさらに詳しく示す。予め定義された数の計測値をカバーする窓における計測値の平均値をメトリックμとすることにする。フローコントローラ２４６の計算を低減させるべく、この平均値を窓における計測値の総計Σで置換え、許容可能なインターバル（μ１，μ２）をインターバル（Σ１，Σ２）で置換えると、Σ１＝ｗ×μ１およびΣ２＝ｗ×μ２となり、ここでｗは１つの時間窓あたりの計測値の数である。
【００７１】
ステップ１９２０で、値Ｅを１に初期化する（つまり、符号器が最初は対象クライアントに割り当てられた公称符号化レートで動作することを要求されている、ということになる）。長さｗである循環アレイＶ（図３の循環バッファ３２０を表す）の全てのエントリをゼロに設定し、アレイＶのｗ個のエントリの総計Σをゼロに設定する。整数「インデックス」は、アレイＶの現在位置をトラックし、整数「期間（period）」は、最新の符号化係数更新時点をトラックする。ステップ１９２０で２つの整数「インデックス」および「期間」をゼロに設定する。
【００７２】
ステップ１９２２で計測値σをフローコントローラ２４６が受信した制御パケットから抽出する。ステップ１９２４で、メトリックμに比例する総計Σを、アレイＶの位置「インデックス」のエントリを減算して、新たな計測値σを加算することにより更新する。アレイＶは循環するので、第１の時間窓の後、位置インデックスで減算されたエントリは、現在の窓の前に計測された計測値を表す。第１の時間窓の後、第１の窓の総計Σは、ｗでメトリックμを乗算した値を正しく示す値となる。
【００７３】
ステップ１９２６で、新たな計測値σをアレイＶの位置「インデックス」に書き込む。ステップ１９２８で、整数「期間」を１増分させて、循環アレイＶの現在の位置「インデックス」を１（モジュロｗ）増分させる（つまり、インデックスの値がｗに達すると、インデックスをゼロとする、ということである）。ステップ１９３０で、符号化係数更新の直前の時点までの計測値の数が、予め定義された限界値Ｐ＊未満であると判断されると、プロセスはステップ１９２２に戻り、新たな計測値を処理する。さもなくばプロセスはステップ１９３２に進む。ステップ１９３２に達すると循環アレイＶは最新の計測値をｗ個有しており、現在の時点と、符号化係数Ｅが修正される直前の時点との間の時間インターバルは、少なくとも閾値Ｐ＊に等しくなっている。Ｐ＊の値は、過剰な更新レートを回避可能な程度に大きく、接続状態の変化に対応可能な程度に小さくなるように選択される。Ｐ＊の値は、フローコントローラ２４６の設計者が設定する設計パラメータである。
【００７４】
ステップ１９３２では、現在の総計Σを、許容可能な総計インターバル（Σ１，Σ２）の上限値Σ２と比較する。Σ＞Σ２である場合には、ステップ１９４０で現在の値を係数ｘ２＜１で乗算することでＥを低減させ、ステップ１９５０で整数「期間」をゼロに等しくなるようリセットして、プロセスはステップ１９２２に戻る。Σ≦Σ２である場合には、ステップ１９３４で、現在の総計Σを、許容可能な総計インターバル（Σ１，Σ２）の下限値Σ１と比較する。Σ＜Σ１である場合には、ステップ１９４２で現在の値を係数ｘ１＞１で乗算することでＥを増加させ、ステップ１９５０で整数「期間」をゼロに等しくなるようリセットして、プロセスはステップ１９２２に戻る。ステップ１９３４でΣ≧Σ１であると判断した場合には、現在の総計Σが許容可能な総計インターバル（Σ１，Σ２）の範囲内であると結論付けられる。プロセスはステップ１９２２に戻り、Ｅの値は変えない。
【００７５】
図１９のステップは、各コンピュータ可読記憶媒体に格納されているコンピュータ可読命令に従ってフローコントローラ２４６に関連付けられた上述したプロセッサにより実装される。
【００７６】
＜複数の接続メトリック＞
図１７に示したメトリックμは、転送遅延、データ損失比率、または復号器２４０におけるバッファ占有率等の接続パフォーマンスの複数の態様の１つを表すスカラーである。従って、限界点μ１およびμ２もまたスカラーである。符号化係数を修正する基準は、符号化係数を修正し（図１８および図１９）、メトリックの現在の値と、該メトリックの許容可能な範囲との偏差の関数である、係数ｘ１およびｘ２を有するあるパフォーマンスに関する接続メトリックμに基づいて決定されてよい。接続パフォーマンスの複数の態様を考慮に入れるために、対応するメトリックを正規化して、複合メトリックを、このようにして選択した限界点μ１およびμ２を有する複数の正規化メトリックとの重み付け合計として定義することができる。例えば、遅延メトリックを複数の公称遅延値（例えば、対象となる接続に推定される最小遅延）に関して正規化して、サイズをなくす（becoming dimensionless）ことができる。その性質上サイズのないデータ損失メトリックを正規化メトリックとして利用することができ、バッファ占有率メトリックを（これもサイズがない）各バッファの容量に関して正規化することができる。例えば、遅延、データ損失比率、バッファ占有率に関して同時発生した計測値がそれぞれ２０ミリ秒、０．０２、および２００であったとする。この場合に、２０ミリセカンドの遅延メトリックは、公称（参照）遅延１０ミリセカンドに基づいて値２．０に正規化することができ、２００ユニットのデータのバッファ占有率は、２５０ユニットのデータのバッファ容量に基づいて０．８と正規化することができる。複合メトリックμ＊は、μ＊＝μｄｅｌａｙ＋ａ×μｌｏｓｓ＋ｂ×μｂｕｆｆｅｒとして定義することができ、本式においてμｄｅｌａｙ、μｌｏｓｓ、μｂｕｆｆｅｒは、それぞれ、正規化された遅延ベースのメトリック、データ損失メトリック、および、正規化されたバッファ占有率メトリックを表す。パラメータａおよびｂをそれぞれ８０．０および２．５とすると、上述した例におけるメトリックの複合メトリックμ＊は、μ＊＝２．０＋８０．０×０．０２＋２．５×０．８＝５．６となる。
【００７７】
接続パフォーマンスの複数の態様を考慮する、より完全な方法では、パフォーマンスの各態様に対して、別個のメトリックを導出し、別個の許容可能なインターバルを特定する。一セットの現在のメトリックのうちの任意の現在のメトリックが許容インターバルを超えている場合、符号化係数Ｅを低減させる。後続する時間窓において決定される新たなメトリックは、符号化係数Ｅの変化および接続トランスミッタンスの変化に応じて、符号化レートの変化の影響を受けることがある。そこで、新たなメトリックのうち許容インターバルを上回るものがなくなるまで、再度符号化係数Ｅを低減させることができる。これに対して、符号化係数Ｅの増加は、全ての現在のメトリックそれぞれが銘々の許容インターバルを下回ったときに初めて可能であるとする。この結果、新たなメトリックの少なくとも１つが許容インターバル内にあり、残りの新たなメトリックがいずれも許容インターバルを上回らないときに、Ｅは不変となる。
【００７８】
図２０は、２つのメトリックμ（１）およびμ（２）の現在の値における上述した符号化係数Ｅの調節方法を示す。図２０では、μ（１）が上方に増加して、μ（２）が下方に増加している。第１のメトリックμ（１）の許容インターバル２０２０を、ここでは第１の許容インターバルと称し、これは下限値μ１（１）と上限値μ２（１）とを有する。第２のメトリックμ（２）の許容インターバル２０４０を、ここでは第２の許容インターバルと称し、これは下限値μ１（２）と上限値μ２（２）とを有する。参照番号２０２２、２０２４、２０２６、および２０２８は、値Ｅ１、Ｅ２、Ｅ３、およびＥ４を有する符号化係数にそれぞれ対応する第１のメトリックの値を示している（Ｅ１＜Ｅ２＜Ｅ３＜Ｅ４）。参照番号２０４２、２０４４、２０４６、および２０４８は、値Ｅ１、Ｅ２、Ｅ３、およびＥ４を有する符号化係数にそれぞれ対応する第２のメトリックの値を示している（Ｅ１＜Ｅ２＜Ｅ３＜Ｅ４）。
【００７９】
例えば符号化係数を値Ｅ４に設定すると、第１のメトリックの値（２０２８）は各上限値μ２（１）を超える値に決定され、第２のメトリックの値（２０４８）は第２の許容インターバル（μ１（２），μ２（２））の範囲内に決定される。２つのメトリックのうちいずれかの値が対応する許容上限値よりも高いので、現在の値を係数ｘ２＜１で乗算することで符号化係数を低減させる。符号器２２０はこのようにして符号フローレートを調節して、２つのメトリックの新たな値を、フローレートを調節した後の未加工（fresh）計測値から決定する。符号化係数が値Ｅ３＜Ｅ４に低減した場合には、第１のメトリックの値（２０２６）を第１の許容インターバル（μ１（１），μ２（１））内に決定して、第２のメトリックの値（２０４６）を第２の許容インターバル（μ１（２），μ２（２））の下限値μ１（２）をかなり下回る値に決定する。（１）接続状態が悪くなり、メトリックのいずれかが許容上限値を超えるようになり、符号化係数も低下して符号化係数をさらに低減させる場合、あるいは、（２）接続状態が向上して、第１および第２のメトリック両方の値がそれぞれの許容下限値を下回り、符号化係数を増加させることができるようになった場合、以外には、これ以上符号化係数を変更しない。
【００８０】
符号化係数を値Ｅ１に設定した場合、第１のメトリックμ（１）の値（２０２２）は下限値μ１（１）を下回る値に決定され、第２のメトリックの値（２０４２）は下限値μ１（２）を下回る値に決定される。符号化係数は値Ｅ２に増加させる。この結果、第２のメトリックμ（２）の値は、許容インターバル（μ１（２），μ２（２））内の、上限値μ２（２）に近い値（２０４４）に増加する。第１のメトリックμ（１）の値は値（２０２４）まで増加したものの、下限値μ１（１）を依然として下回っている。接続トランスミッタンスに変更がない場合には、符号化係数をさらに増加させることで、第２のメトリックμ（２）を上限値μ２（２）を上回る値に増加させうる。接続状態の変化が大きく、符号化係数を増加させることができるようになる、または、強制的に符号化係数を低下させる必要が出てくるまでは、符号化係数はこれ以上変更させない。
【００８１】
図２１は、３つのメトリックμ（１）、μ（２）、μ（３）の現在の値による符号化係数調節法を示す。説明を簡潔にする目的から、第１のメトリックμ（１）、第２のメトリックμ（２）、および第３のメトリックμ（３）の３つの許容インターバル２１０２、２１２２、および２１４２が、それぞれ重複しないストライプとして示されている。しかし、３つのメトリックは、１つの接続の異なる特徴を表しうるので、別個に処理される。従って、メトリックμ（１）、μ（２）、μ（３）の許容インターバル２１０２、２１２２、および２１４２のそれぞれの位置は互いに関連している値を反映しているわけではない。第１の許容インターバル２１０２は下限値μ１（１）、および上限値μ２（１）を有する。第２のメトリックμ（２）の第２の許容インターバル２１２２は下限値μ１（２）、および上限値μ２（２）を有する。第３のメトリックμ（３）の第３の許容インターバル２１４２は下限値μ１（３）、および上限値μ２（３）を有する。参照番号２１０４、２１０６、２１０８、２１１０、２１１２、２１１４、２１１６、および２１１８は、符号化係数の値Ｅ１からＥ７に対応する第１のメトリックμ（１）の値を示す（Ｅｊ＜Ｅｊ＋１、１≦ｊ≦６）。同様に、参照番号２１２４、２１２６、２１２８、２１３０、２１３２、２１３４、２１３６、および２１３８は、Ｅ１からＥ７に対応する第２のメトリックμ（２）の値を示し、参照番号２１４４、２１４６、２１４８、２１５０、２１５２、２１５４、２１５６、および２１５８は、Ｅ１からＥ７に対応する第３のメトリックμ（３）の値を示す。
【００８２】
適応符号器２２０が、公称レートと符号化係数Ｅ１とに従って符号化パラメータを調節した場合を考慮する。特定の窓の最後に決定されたメトリックベクトルは、２１０４、２１２４、２１４４が示すμ（１）、μ（２）、μ（３）のメトリック値を有する。値２１０４、２１２４、２１４４は、それぞれ許容インターバルの下限値を下回る値である。従って、符号化係数は、各ステップにおける計測値から決定される３つのメトリック｛μ（１）、μ（２）、μ（３）｝いずれかがそれぞれの許可可能ゾーンの上限値に十分近づくまで、段階的に増加させる。図２１の例においては、この条件は、適応符号器２２０が自身のフローレートを符号化係数Ｅ２に対応するよう調節した後の２１２６が示すメトリックμ（２）の値に適合している。
【００８３】
適応符号器２２０が、公称レートと符号化係数Ｅ３とに従って符号化パラメータを調節した場合であれば、２１０８、２１２８、２１４８が示すメトリックμ（１）、μ（２）、μ（３）の値は、それぞれの許容インターバルを下回る。符号化係数を値Ｅ４に増加させ、この値においては、メトリックμ（１）の値（参照番号２１１０）は自身の許容インターバルの上限値に近く、メトリックμ（２）、μ（３）の値（２１３０および２１５０）がそれぞれの許容インターバル内にある。
【００８４】
適応符号器２２０が、公称レートと符号化係数Ｅ７とに従って符号化パラメータを調節した場合であれば、２１３８が示すメトリックμ（２）の値は、許容インターバル２１２２の上限値を上回る。符号化係数を値Ｅ６＜Ｅ７に低減させる。メトリックμ（１）およびμ（３）はそれぞれの許容インターバルを下回る値２１１６および２１５６に低減したが、メトリックμ（２）は、許容インターバル２１２２内の値２１３６に低減した。従って、値Ｅ６においては符号化係数を変えない。接続トランスミッタンスが低下し、結果としてそれぞれメトリックが２１１４、２１３４、および２１５４が示す値にまで増加した。メトリックμ（２）が上限値を超えているので、符号化係数がＥ５の値まで低下した。
【００８５】
図２２は、クライアント１６０への接続においてストリーミングサーバ１２０が送信した信号のピーク符号化レート（ピークフローレート）の関数でパケット損失比率Θを示す。前に定義したように、接続トランスミッタンスは、ストリーミングサーバからクライアントまでの接続を、所期のパフォーマンス上の目的に背くことなく維持することができるピークフローレートのことである。図２２の例におちえは、トランスミッタンスはパケット損失パフォーマンスのみによって定義される。図２２は、接続のトランスミッタンスに関して正規化されたピーク符号化レートとパケット損失比率との間の関係の一例を示している。ピーク符号化レートを既知とする。しかし、接続のトランスミッタンスは経時的に変化することがあり、分からないことがある。ピーク符号化レートがトランスミッタンスより高い場合、パケット損失比率Θはゼロより大きく、ピーク符号化レートのトランスミッタンスに対する比率は、１／（１−Θ）として決定することができ、符号化レートは係数（１−Θ）分低減し、パケット損失がなくなる。パケット損失比率は上述したように選択される時間窓において計測されてよい。線２２１０は、パケット損失比率Θをピーク符号化レートの現在のトランスミッタンスに対する比率ρの関数として示したものである。ρ≦１．０のときにΘの値はゼロである。ρ＝１．５でΘ＝０．３３であり、ρ＝２．０ではΘ＝０．５である。
【００８６】
Θの計測値がゼロの場合には、ピーク符号化レートのトランスミッタンスに対する比率は、０より大きく１．０未満であるいずれかの値となり、パケット損失を回避しつつ信号の忠実度を向上させることができる符号化レートの適切な増分（符号化係数Ｅの増分）を正確に判断し難くなる。符号化レートは、パケット損失の計測値が（Θ＞０）となり、符号化レートを正確に補正することができるようになるまで段階的に増加させることができる。Θの計測値がかなり小さくなると（例えば０．００１のオーダにまで小さくなると）、符号化レート補正は不要とすることができる。パケット損失比率の下限値Θｍｉｎ（線２２２０）および上限値Θｍａｘ（線２２３０）が定義する許容インターバルによって、小さなΘの値を不要に処理してしまうことが回避されるようになる。ΘｍｉｎおよびΘｍａｘの値は、設計パラメータである。Θｍｉｎについて０．００１、およびΘｍａｘについて０．０２が適切な値であると思われる。
【００８７】
本発明は、プロセッサにより実行されると上述した方法のステップを実行する命令を格納したＤＶＤ、ＣＤ−ＲＯＭ、フロッピー（登録商標）等のコンピュータ可読媒体、あるいは不揮発性メモリ等のメモリも提供する。
【００８８】
本発明の特定の実施形態について詳述してきたが、記載した実施形態は例示を意図しており限定は意図していない。図面に示し明細書に記載した実施形態の変更例および変形例は、広義の本発明の範囲から逸脱することなく以下の請求項の範囲に含まれうる。
【図１】
0005465723.tif 000006
【図２】
0005465723.tif 000007
【図３】
0005465723.tif 000008
【図４】
0005465723.tif 000009
【図５】
0005465723.tif 000010
【図６】
0005465723.tif 000011
【図７】
0005465723.tif 000012
【図８】
0005465723.tif 000013
【図９】
0005465723.tif 000014
【図１０】
0005465723.tif 000015
【図１１】
0005465723.tif 000016
【図１２Ａ】
0005465723.tif 000017
【図１２Ｂ】
0005465723.tif 000018
【図１３】
0005465723.tif 000019
【図１４】
0005465723.tif 000020
【図１５】
0005465723.tif 000021
【図１６】
0005465723.tif 000022
【図１７】
0005465723.tif 000023
【図１８】
0005465723.tif 000024
【図１９】
0005465723.tif 000025
【図２０】
0005465723.tif 000026
【図２１】
0005465723.tif 000027
【図２２】
0005465723.tif 000028