データを送信するための方法であって、選択されたレート適応アルゴリズムを使用して、第1のデバイスから第2のデバイスにデータを送信することであり、データを前記送信することが、複数のバッファを利用し、前記選択されたレート適応アルゴリズムが、第1のレート適応アルゴリズムまたは第2のレート適応アルゴリズムのうちの1つである、送信することと、前記第1のアルゴリズムを使用して送信するときに、前記複数のバッファのうちの利用可能なバッファの数が第1の閾値を下回ると判定することと、前記第2のアルゴリズムを使用して送信するときに、前記複数のバッファのうちの利用可能なバッファの数が第2の閾値を超えると判定することとを備え、前記送信することが、前記複数のバッファのうちの利用可能なバッファの数が前記第1の閾値を下回ると前記判定することに応答して、前記第2のレート適応アルゴリズムを使用して実行され、前記第2のレート適応アルゴリズムが、増加したフローレートを提供し、前記送信することが、前記複数のバッファのうちの利用可能なバッファの数が前記第2の閾値を超えると前記判定することに応答して、前記第1のレート適応アルゴリズムを使用して実行され、前記第1のレート適応アルゴリズムが、増加したスループットを提供する、方法。実行時間中に、前記第1の閾値と前記第2の閾値とを動的に調整することをさらに備える、請求項1に記載の方法。前記調整することが、前記複数のバッファのサイズ、現在の提供された負荷、および/または実効送信レートに基づいて実行される、請求項2に記載の方法。前記調整することが、前記データの最優先パケットのシーケンスの予想される長さおよび/または前記データを前記送信することのバースト性に基づいて実行される、請求項2に記載の方法。スループットが、と定義され、ηabiが、レートriで前記第1のデバイスaから前記第2のデバイスbに送信するときの効率であり、PERabiが、レートriに関するaからbへのチャネルの誤りの確率PERである、請求項1に記載の方法。フローレートが、と定義され、ηabjが、レートrjで前記第1のデバイスaから前記第2のデバイスbに送信するときの効率であり、PERabjが、レートrjに関するaからbへのチャネルの誤りの確率PERであり、Nabjが、レートrjでのaからbへのフローについて許可された送信試行の最大数である、請求項1に記載の方法。Nabjが、に従って計算され、μが、aからb以外のチャネル上での送信に対する媒体利用率である、請求項6に記載の方法。Nabjが、に従って計算され、μが、aからb以外のチャネル上での送信に対する媒体利用率である、請求項6に記載の方法。Nabjが、複数のパケットにわたって平均的に適用される、請求項6に記載の方法。Nabjが、平均的に適用され、他のパケットよりも優先度の高いパケットのさらなる再送を可能にする、請求項6に記載の方法。前記送信することが第3のデバイスに対しても実行され、前記データがビデオデータを備える、請求項1に記載の方法。前記データが、前記第1のデバイスから前記第2のデバイスへの送信のレートとは無関係のレートで生成される、請求項1に記載の方法。データを1つまたは複数のデバイスに送信するためのシステムであって、第1のレートで前記1つまたは複数のデバイスに送信するためのデータを生成するコンテンツジェネレータと、前記コンテンツジェネレータによって生成された前記データをバッファする、前記コンテンツジェネレータに結合された複数のバッファと、前記複数のバッファに記憶された前記データを第2のレートで送信する送信機であり、前記第2のレートが時間によって変化し、前記第1のレートとは無関係である、送信機とを備え、前記送信機が、利用可能なバッファの数に基づいて、第1のレート適応アルゴリズムまたは第2のレート適応アルゴリズムに従って前記データを送信し、前記第2のレート適応アルゴリズムが、利用可能なバッファの数が第1の閾値を下回るときに使用され、前記第2のレート適応アルゴリズムが、フローレートを増加させ、前記第1のレート適応アルゴリズムが、前記複数のバッファのうちの利用可能なバッファの数が第2の閾値を超えるときに使用され、前記第1のレート適応アルゴリズムが、スループットを増加させる、システム。実行時間中に、前記第1の閾値および前記第2の閾値が動的に調整される、請求項13に記載のシステム。前記第1の閾値および前記第2の閾値が、前記複数のバッファのサイズ、現在の出力データレート、および/または実効送信レートに基づいて調整される、請求項14に記載のシステム。前記第1の閾値および前記第2の閾値が、前記データの最優先パケットのシーケンスの予想される長さおよび/または前記データを前記送信することのバースト性に基づいて調整される、請求項14に記載のシステム。スループットが、と定義され、ηabiが、レートriで第1のデバイスaから第2のデバイスbに送信するときの効率であり、PERabiが、レートriに関するaからbへのチャネルの誤りの確率PERである、請求項13に記載のシステム。フローレートが、と定義され、ηabjが、レートrjで第1のデバイスaから第2のデバイスbに送信するときの効率であり、PERabjが、レートrjに関するaからbへのチャネルの誤りの確率PERであり、Nabjが、レートrjでのaからbへのフローについて許可された送信試行の最大数である、請求項13に記載のシステム。前記1つまたは複数のデバイスが複数のデバイスを備え、前記データがビデオデータを備える、請求項13に記載のシステム。データの送信を構成するためのプログラム命令を備えるメモリ媒体であって、データの前記送信が複数のバッファを使用し、前記プログラム命令が、第1のレート適応アルゴリズムに従って前記送信を構成することであり、前記第1のレート適応アルゴリズムが、増加したスループットを提供することと、前記複数のバッファのうちの利用可能なバッファの数が第1の閾値を下回ると判定することと、前記複数のバッファのうちの利用可能なバッファの数が前記第1の閾値を下回ると判定したことに応答して、第2のレート適応アルゴリズムに従って前記送信を構成することであり、前記第2のレート適応アルゴリズムが、増加したフローレートを提供することと、前記複数のバッファのうちの利用可能なバッファの数が第2の閾値を超えると判定することと、前記複数のバッファのうちの利用可能なバッファの数が前記第2の閾値を超えると判定したことに応答して、前記第1のレート適応アルゴリズムに従って前記送信を構成することとを行うように、プロセッサによって実行可能である、メモリ媒体。前記プログラム命令が、実行時間中に前記第1の閾値と前記第2の閾値とを動的に調整するようにさらに実行可能である、請求項20に記載のメモリ媒体。スループットが、と定義され、ηabiが、レートriで第1のデバイスaから第2のデバイスbに送信するときの効率であり、PERabiが、レートriに関するaからbへのチャネルの誤りの確率PERである、請求項20に記載のメモリ媒体。フローレートが、と定義され、ηabjが、レートrjで第1のデバイスaから第2のデバイスbに送信するときの効率であり、PERabjが、レートrjに関するaからbへのチャネルの誤りの確率PERであり、Nabjが、レートrjでのaからbへのフローについて許可された送信試行の最大数である、請求項20に記載のメモリ媒体。前記データが、第1のデバイスから第2のデバイスへの送信のレートとは無関係のレートで生成される、請求項20に記載のメモリ媒体。本発明は様々な修正形態および代替の形態を受け入れる余地があるが、その特定の実施形態を図面において例として示し、本明細書において詳細に説明する。ただし、図面およびそれについての詳細な説明は、本発明を開示された特定の形態に限定するものではなく、それどころか、その意図は、添付の特許請求の範囲によって定義される本発明の趣旨および範囲内にあるすべての修正形態と、等価形態と、代替形態とを含むことであることを理解されたい。用語以下は、本適用例で使用される用語の用語解説である。メモリ媒体-任意の様々なタイプのメモリデバイスまたは記憶デバイス。メモリ媒体という用語は、設置媒体、たとえば、CD-ROM、フロッピー登録商標ディスク、もしくはテープデバイス;コンピュータシステムメモリもしくはDRAM、DDRRAM、SRAM、EDORAM、ラムバスRAMなどのランダムアクセスメモリ;または磁気媒体などの不揮発性メモリ、たとえば、ハードドライブ、または光記憶装置を含むものとする。メモリ媒体は、他のタイプのメモリ、またはその組合せも備えることができる。加えて、プログラムが実行される第1のコンピュータにメモリ媒体を配置することができる、および/またはインターネットなどのネットワークを介して第1のコンピュータに接続する第2の異なるコンピュータにメモリ媒体を配置することができる。後者の例では、第2のコンピュータは、実行のために、プログラム命令を第1のコンピュータに提供することができる。メモリ媒体という用語は、異なる場所、たとえば、ネットワークを介して接続された異なるコンピュータに存在し得る2つ以上のメモリ媒体を含み得る。コンピュータシステム-パーソナルコンピュータシステムPC、メインフレームコンピュータシステム、ワークステーション、ネットワークアプライアンス、インターネットアプライアンス、携帯情報端末PDA、テレビジョンシステム、グリッドコンピューティングシステム、または他のデバイスもしくはデバイスの組合せを含む、任意の様々なタイプのコンピューティングシステムまたは処理システム。一般に、コンピュータシステムという用語を、メモリ媒体から命令を実行する少なくとも1つのプロセッサを有する任意のデバイスまたはデバイスの組合せを包含するように広く定義することができる。図1-例示的なホームネットワーク図1は、本発明の実施形態を実施することができるホームネットワークの例示である。示されるように、ホームネットワークは、基礎をなすLAN技術としてWLANを用いることができるが、有線LANも企図される。101は、コンテンツをテレビジョンセット111にストリーミングする、ネットワーク接続されたデジタルビデオレコーダDVRを表す。102は、オーディオコンテンツを家庭内の別の部屋で使用されている携帯型メディアプレーヤ112にストリーミングしている、ネットワーク接続されたディスクプレーヤを表す。113は、WANを介してレジデンシャルゲートウェイ103によって受信されたIPTVコンテンツをレンダリングしているテレビジョンセットを表す。114は、レジデンシャルゲートウェイ103を介してインターネットをサーフィンしているラップトップコンピュータである。任意の時間での使用に応じて、任意のシンクデバイスが任意のソースデバイスに接続することができる、たとえば、TV115が103との接続を確立して、コンテンツを受信することができることは明らかである。同様に、いくつかのデバイスは、ソースとシンクの両方として働くことが可能であってもよい。たとえば、ラップトップ114は、TV115のソースデバイスとして働くことができる。さらに、図1が典型的な使用シナリオにおけるソースとシンクとの間のデータフローを示すことは明らかである。実際の展開には、いくつか例を挙げるとワイヤレスアクセスポイントおよびリピータの形で、追加のインフラを必要とすることがある。図1に示されるように、このインフラの機能を1つまたは複数のデバイスに組み込むことができることも明らかである。背景技術の項で説明したように、ソースとシンクとの間のリンクのチャネルキャパシティは、様々な要因、すなわち、ソースとシンクとの間の距離、他のデバイスによるチャネル占有、外部のソースたとえば、家庭内と家庭外の両方からの干渉に応じて、時間によって変化することがある。図1に示されるWLANの場合、チャネル状態はソース、シンクの相対的な動作と、周囲の環境とにも依存し得る。LANPHYレイヤの様々な送信パラメータの順列に応じて、MACレイヤは、データを特定の宛先に送信するために使用される送信レートを利用可能なレートセットから選択するレート適応戦略を使用することができる。データ通信の場合、1つの戦略は、以下で説明されるように、リンクのスループットを最大化する。ノードaからbへの送信の場合、i個の要素を有するレートのセットRから取り出された、選択されたレートrは、式1に示されるように、すべてのiについてスループットTabiを最大化するレートである。式中、ηabiは、レートriでaからbに送信するときのMACの効率であり、PERabiは、レートriに関するaからbへのチャネルの誤りの確率PERである。再試行の数に関するプロトコル独自の上限まで、送信に失敗したパケットを再送することができる。ネットワークスループットを最大化するレート適応戦略はネットワークリソースの最適な使用を保証するので、これをデータトラヒックに特に適したものとすることができる。上位レイヤでの伝送制御プロトコルTCPの使用は、レイヤ2より上での誤り回復と、フロー制御とを保証する。しかしながら、オーディオ/ビデオトラヒックは、高データレートを有することに加えて、非常に遅延の影響を受けやすく、リアルタイムでの受信を必要とする。厳しい遅延要件と、オーディオ/ビデオトラヒックは、多くの場合、複数のコンテンツシンクへの配信を要求するブロードキャスト/マルチキャストコンテンツであり得るという事実とに応えるために、ユニバーサルデータグラムプロトコルUDPを用いることができる。TCPとは異なり、UDPは、フロー制御または誤り回復を提供しない。図2-コンテンツデバイスおよびシンクデバイスの例示的な挙動モデル図2は、図1におけるエンティティを実現することによる、コンテンツソースデバイス210およびコンテンツシンクデバイス240の例示的な挙動モデルを表す。コンテンツソースデバイスは、パケット化されたオーディオ/ビデオと制御データとをLANコントローラ213に出力するコンテンツジェネレータ211を含むことができ、LANコントローラ213は、LANのMACレイヤプロトコルおよびPHYレイヤプロトコルに従って、そのパケット化されたデータをチャネル220上で送信する。バッファメモリ212は、コンテンツジェネレータ211をLANコントローラ213にインターフェースすることができる。システムコントローラ217は、210の様々な機能モジュールの動作を制御することができる。コンテンツシンクデバイス240は、パケット化されたオーディオおよび/またはビデオをLANコントローラ243から受信することができ、ユーザが認識可能な形式で、たとえば、ビデオなどの画像および/またはサウンドとして、たとえば、テレビジョンセットからデータを出力することができるコンテンツレンダリングモジュール241を含むことができる。バッファメモリ242は、LANコントローラ243をコンテンツレンダリングモジュール241にインターフェースすることができる。システムコントローラ247は、240の様々な機能モジュールの動作を制御することができる。コンテンツソース210およびコンテンツシンク240におけるバッファメモリ212および242はそれぞれ、コンテンツジェネレータ211の出力レートの考えられる変動、チャネルキャパシティ220の変動、およびコンテンツレンダリングモジュール241の出力レートの変動があるなかで、送信されたビデオストリームのサービス品質QoSを維持するのを支援することができる。たとえば、チャネル220が短期間停止した場合、バッファ212は、LANコントローラ213が正常に送信できなかった、コンテンツジェネレータ211によって生成された余分なデータを吸収する。同様に、バッファ242は、以前に受信され、記憶されたデータをコンテンツレンダリングモジュール241に出力し、それによって、コンテンツの連続性と、したがってQoSとをユーザに保証する。バッファ212および242の深さは、許容することができるチャネル停止の継続時間とシステムの応答時間遅延とを決定し、これらはいずれも、QoSをユーザに提供するという点で、競合する要件である。コンテンツソースデバイス210がブロードバンドゲートウェイを表すIPTV配信の例では、たとえば、ブロードバンドゲートウェイ内のコンテンツジェネレータ211は、LANコントローラ213によって送信するためのパケット化されたデータを生成するのに、WANにおけるヘッドエンドサーバに依存する。バッファ212は、コンテンツジェネレータが送信するためのコンテンツを生成するのを妨げる、WANにおける任意の停止または遅延を吸収するのを支援することができる。先に述べたように、オーディオ-ビデオトラヒックにUDPプロトコルまたは類似のプロトコルを使用すると、トランスポートレイヤでのフロー制御および誤り回復がない。基礎をなすLAN技術によって提供されるレイヤ2のフロー制御および誤り回復は、図2のLANコントローラ213と243との間のリンクに限定される。図3-マルチ状態レート適応本明細書に記載の実施形態は、時間によって変化するチャネル上で動作するネットワークを介してストリーミングされるマルチメディアコンテンツに関して、改善されたQoSとより良いユーザ体験とを容易にするビデオ配信を提供する。以下では、家庭環境におけるワイヤレスLANの例について、様々な実施形態が説明され得る。しかしながら、これらの実施形態は、時間によって変化するチャネルを介して動作する任意のネットワーキング技術に同様に適用可能であってもよく、同様の理由で、本発明は動作の環境に制約され得ない。たとえばIPTVまたはブロードキャストTVの場合のようにコンテンツは多くの場合ライブである、もしくはネットワーク接続されたスピーカ、ディスプレイなどの同期化された出力を必要とする複数のエンドポイントにマルチキャスト/ブロードキャストされるという事実、またはフィードバック遅延が多くの場合非常に大きいという事実によって、コンテンツジェネレータ211は、基礎をなすチャネル220の状態とは無関係のレートでコンテンツを生成することができる。ワイヤレスチャネル220の不利な状態の結果として、たとえば、データを転送している間に、チャネルキャパシティが低下することがある。したがって、LANコントローラ213の一部としてのレート適応アルゴリズムは、許可された送信レートを、コンテンツジェネレータ211の出力データレートを下回る送信レートに低下させることができる。バッファメモリ212が一杯であるとき、これはデータの損失をもたらすことがある。一実施形態では、LANコントローラ213は、以下で説明されるように、コンテンツジェネレータの出力データレートと、バッファにおける利用可能なメモリの量と、LANコントローラ213によって達成可能な実効送信レートとに応じて、マルチ状態レート適応手法を使用する。図3は、本実施形態による、2つの状態を有する例示的なレート制御アルゴリズムの状態機械図である。本明細書に記載の様々な実施形態は、異なる状態を有する単一のアルゴリズムではなく、別個のレート適応アルゴリズムを有するそれぞれの状態を指し得ることに留意されたい。システム初期化時に、レート適応アルゴリズムは、経路301を介して状態A310第1のレート適応アルゴリズムで開始することができる。しかしながら、212における利用可能なバッファの数がthresh12第1の閾値を下回るとき、アルゴリズムは、経路312を介して状態B320第2のレート適応アルゴリズムに移行することができる。バッファメモリ212における利用可能なバッファの数がthresh21第2の閾値を超えるとき、状態B320から状態A310への移行は、経路321を介することができる。thresh12およびthresh21は、実行時間において動的に決定され得る。いくつかの実施形態では、これらの閾値は、後で説明されるように、バッファメモリ212のサイズ、コンテンツジェネレータ211の出力データレート、およびLANコントローラ213の実効送信レートの関数であってもよい。図3の状態機械は、所望に応じて、コンテンツソースデバイス210上の、具体的には図2のLANコントローラ213内に存在するソフトウェアおよび/またはハードウェア実装によって実現され得る。一実施形態では、状態A310で動作するとき、LANコントローラ213は、リンクの実効スループットを最大化しようと試みるレート適応戦略を採用することができ、たとえば、LANコントローラ213は、式1に示された基準を満たそうと試みることができる。したがって、チャネル状態が送信のエラーをもたらすとき、レート適応戦略によって、LANコントローラ213は、パケットが正常に送信されるまで、または到達する送信試行の数に対するプロトコル/実装に特有の制限によってパケットが送信機でドロップされるまで、スループットTabiを最大化する送信レートriを使用してパケットを再送しようと試みることになる。本明細書に記載の実施形態は、LANコントローラ213によって確認されるパケットエラーは、再送を試みることができるという点で回復可能であり、その一方でパケット損失、たとえばバッファメモリ212でのオーバーフローによるパケット損失は回復可能ではないということを考慮する。さらに、遅延範囲内で受信された場合にのみ、オーディオ/ビデオパケットがコンテンツシンクデバイス240にとって有用であり、その範囲を超えると、オーディオ/ビデオパケットがドロップされることがあり、したがって、コンテンツレンダラ241によってレンダリングされないことが認識される。240によるパケットの受信はQoSに影響を及ぼさないので、そのようなパケットの送信は、送信リソース/チャネルキャパシティの浪費をもたらす。さらに、そのような送信に使用されたチャネルキャパシティは、そうでなければ、QoSと関係があるパケットを送信するために使用されている可能性がある。チャネル停止の継続時間の一般的な統計に基づいて、エンドユーザによって知覚されたQoSは、期間またはコンテンツストリームにおける最初の損失パケットと最後の損失パケットとの間のシーケンスの長さとして定義されるパケットの不連続性の継続時間によって影響を受けることがさらに認識される。バッファ212がオーバーフローしたとき、バッファに記憶されたパケットを送信しようと試みると、バッファオーバーフローにより、バッファの最後で追加のドロップを生じさせることがあり、バッファにおけるパケットの送信はパケットの不連続性の継続時間を増加させることになり、そのような送信されたパケットはおそらくはパケットの遅延範囲を超え、最終的には受信機でドロップされることになり、実質的にQoSを低下させることがさらに認識される。上記で説明された集められた知見に基づいて、一実施形態によれば、状態B320で動作するとき、LANコントローラ213は、以下で説明されるように、フローレートを最大化することを目標とするレート適応戦略を採用することができる。ノードaからbへの送信の場合、j個の要素を有する、レートのサブセットR’から取り出された、選択されたレートrは、式2に示されるように、すべてのjについてフローレートFabjを最大化するレートである。式中、ηabjは、レートrjでaからbに送信するときのMACの効率であり、PERabjは、レートrjに関するaからbへのチャネルの誤りの確率PERであり、Nabjは、レートrjでのaからbへのフローについて許可された送信試行の最大数であり、R’は、式3の条件を満たすj個の要素rjを含むRのサブセットである。式中、Iは、イングレスレートまたはコンテンツジェネレータ211からの提供された負荷である。一実施形態では、Nabjは、式4aによって計算され得る。あるいは、Nabjは、式4bによって計算され得る。式中、μは、ノードaからb以外のチャネル上でのすべての送信に対する媒体利用率である。一実施形態では、状態320で動作するとき、LANコントローラ213は、その再送ポリシーを調整して、式2のフローレートFabjを最大化するレートrjを使用するときに、パケット毎の許可される再送の数を、他の可能性のなかでも式4aまたは式4bのいずれかで決定されるNabjに制限することができる。式4aの方法を使用するときに、非整数になるようにNabjを計算することができることがさらに認識される。たとえば、状態320で動作するとき、LANコントローラ213は、複数のパケットにわたって再送ポリシーを調整して、非整数Nabjによって課される制約を平均的にinanaveragesense満たすことができる。一実施形態では、状態320で動作するとき、LANコントローラ213は、複数のパケットにわたって再送ポリシーを調整して、Nabjの制約を平均的に適用することができる。たとえば、LANコントローラ213は、所与のフローレートFabjでの送信統計に基づいた、再送に利用可能なクレジットの数のカウントを維持することができる。次いで、LANコントローラ213は、利用可能なクレジットを使用して、再送の上限Nabjに達する前に他のフレームが正常に送信されたとき、累積されたクレジットに基づいていくつかのフレームのさらなる再送を可能にすることができる。いくつかの実施形態では、コンテンツソースデバイス210がディープパケットインスペクション可能であるとき、または他の何らかの手段によって、コンテンツジェネレータ211によって生成されたデータストリームのいくつかのパケットを他のパケットよりも優先することができるとき、LANコントローラ213は、Nabjの制約を平均的に適用することもでき、他のパケットよりも最優先パケットのさらなる再送を可能にすることができる。コンテンツソースデバイス210が、同じ宛先または複数の宛先のいずれかへの複数のストリームの同時送信をサポートすることができるように、本明細書に記載の方法を適用することができることに留意されたい。異なるストリームがどのように優先されるかに応じて、たとえば、バッファメモリ212を様々なストリームの間で分割することができ、またはaとbとの間のすべての送信を同じように扱うことができ、本実施形態の方法をそれに応じて適用することができる。したがって、上記で説明されたように、本発明の方法に従ってLANコントローラによってレートのセットRから選択されたレートriに基づいてLANコントローラ213によって送信された実効スループットEffTabiは、式5によって与えられる。いくつかの実施形態では、閾値thresh12312およびthresh21321を実行時間たとえば、データの送信時において決定することができ、以下の式6によって説明されるように、バッファメモリ212のサイズ、コンテンツジェネレータ211の出力データレートすなわち、提供された負荷I、およびLANコントローラ213の実効スループットの関数とすることができる。いくつかの実施形態では、thresh12およびthresh21の計算または調整は、他の要因のなかでも、イングレストラヒック/提供された負荷およびエグレストラヒックフローのバースト性、最優先パケットのシーケンスの予想される長さ、および/または実施の応答時間をさらに考慮することができる。図4-データの配信のためのマルチ状態レート適応図4は、データの配信のためのマルチ状態レート適応の方法の一実施形態を示すブロック図である。より具体的には、図4は、上記の図2および図3の説明に対応する方法の様々な実施形態について説明している。図4に示される方法を、他のデバイスのなかでも、上記の図に示されるコンピュータシステム、デバイス、または回路のいずれかとともに使用することができる。様々な実施形態では、示される方法要素のいくつかを同時に実行するか、示されているものとは異なる順序で実行するか、省略することができる。所望に応じて、追加の方法要素を実行することもできる。示されるように、この方法は以下のように動作することができる。402では、データたとえば、ビデオデータを含むマルチメディアデータは、選択されたレート適応アルゴリズムを使用して、第1のデバイスから第2のデバイスに最初に送信され得る。しかしながら、この方法を、たとえば、マルチキャストにおいて、第1のデバイスから複数の他のデバイスに送信するように拡張することができることに留意されたい。データをコンテンツジェネレータから生成または受信することができ、送信のために1つまたは複数のバッファたとえば、複数のバッファに記憶することができる。第1のデバイスから第2のデバイスへの送信のレートとは無関係のレートでデータを生成することができることに留意されたい。一実施形態では、最初に選択されたレート適応アルゴリズムは、上記で説明された第1のアルゴリズムであってもよい。上記で示したように、第1のレート適応アルゴリズムは、増加したスループットを提供することができる、すなわち、スループットを最大化しようと試みることができる。スループットは、と定義され得る。式中、ηabiは、レートriで第1のデバイスaから第2のデバイスbに送信するときの効率であり、PERabiは、レートriに関するaからbへのチャネルの誤りの確率PERである。404では、利用可能なバッファの数またはバッファで利用可能なメモリの量が第1の閾値を下回ると判定することができる。404での判定に基づいて、406では、第2のレート適応アルゴリズムたとえば、上記で説明された、フローレートを最大化しようと試みる第2のレート適応アルゴリズムを使用して、データを第1のデバイスから第2のデバイスまたは複数のデバイスに送信することができる。したがって、利用可能なバッファの数を使用して、どのレート適応アルゴリズムが使用されるかを判定することができる。より具体的には、一実施形態では、利用可能なバッファの数を使用して、あるレート適応アルゴリズムから別のレート適応アルゴリズムにいつ切り換えるかを判定することができる。上記で示されるように、第2のレート適応アルゴリズムは、増加したフローレートを提供することができる、すなわち、フローレートを最大化しようと試みることができる。フローレートは、と定義され得る。式中、ηabjは、レートrjで第1のデバイスaから第2のデバイスbに送信するときの効率であり、PERabjは、レートrjに関するaからbへのチャネルの誤りの確率PERであり、Nabjは、レートrjでのaからbへのフローについて許可された送信試行の最大数である。408では、利用可能なバッファの数が第2の閾値を超えると判定することができ、それに応じて、410では、スループットを最大化しようと試みる第1のレート適応アルゴリズムに従ってデータを送信することができる。したがって、利用可能なバッファの数および/またはバッファにおける残りのメモリの量に応じて、2つの異なるレート適応アルゴリズムに従ってデータを送信することができる。あるアルゴリズムから別のアルゴリズムへのまたはアルゴリズムのあるモードから別のモードへの切換えは、同じデータストリームの転送中に生じ得ることに留意されたい。したがって、変更は、データを送信している間にオンザフライで生じ得る。したがって、404~410のアルゴリズムの決定および変更は、第1のデバイスから第2のデバイスまたは複数のデバイスへのデータの転送中に複数回生じ得る。さらに、本方法を複数のレート適応アルゴリズムに拡張することができることに留意されたい。第1の閾値および第2の閾値は同じ閾値とすることができるが、たとえば、利用可能なバッファの数が閾値に近いときに2つのアルゴリズム間での絶え間ない切換えを回避するために、これらの閾値は異なっていてもよいことに留意されたい。たとえば、一実施形態では、第1の閾値は第2の閾値よりも大きくてもよい。さらに、いくつかの実施形態では、実行時間中たとえば、データが転送されている間に第1の閾値および/または第2の閾値を動的に調整することができる。そのような調整は、複数のバッファのサイズ、現在の出力データレート、および/または実効送信レートに基づき得る。あるいは、またはさらに、調整することは、データの最優先パケットのシーケンスの予想される長さおよび/またはデータを前記送信することのバースト性に基づいて実行され得る。コンテンツレンダラ一実施形態では、バッファメモリ242およびコンテンツレンダラ241は、LANコントローラ243によって採用された基礎をなすMACレイヤおよびPHYレイヤの特性を知ることができる。具体的には、LANコントローラ243が、コンテンツソースデバイス210とコンテンツシンクデバイス240との間の基礎をなす接続レイヤとして、IEEE802.11WLANの厳密に配列されたstrictlyorderedモードまたはHT即時ブロック確認応答HTimmediateblockacknowledgementモードを使用するとき、バッファメモリ242は、LANコントローラ243から受信されたパケットが順序通りになっているという知識を利用することができる。したがって、バッファメモリたとえば、制御側デバイスは、コンテンツレンダラ241への配信前に、243から受信したパケットを再配列しようとしなくてもよく、したがって、処理オーバーヘッドおよび遅延の低減に遭遇する。そのような実施形態は、いくつかのやり方のうちの1つにおいて実現され得る。たとえば、LANコントローラ243の基礎をなす接続技術が順序通りになっているという知識に基づいて、制御経路249を介したシステムコントローラ247の構成によって、バッファメモリ242の再配列機能を無効にすることができる。あるいは、システムコントローラ247は、基礎をなす接続の性質を決定し、249を介してバッファメモリを適切に構成することができる。図5-例示的な動作図5は、コンテンツソースデバイス510およびコンテンツシンクデバイス540が複数の接続インターフェースを介して接続される異種ネットワークの文脈における、本明細書に記載の方法を組み込む装置の実現例を示す。この図および対応する説明は例示的なものにすぎず、上記で説明された実施形態を限定しないことに留意されたい。図5の例では、510および540は、ワイヤレスチャネル520およびイーサネットチャネル530を介して接続される。510および540は、様々な接続媒体上で接続することができる複数のLANコントローラを有する。この例では、LANコントローラ513および543は、ワイヤレスチャネル520を介して510と540とを接続するために使用される。同様に、LANコントローラ514および544は、イーサネットチャネルを介して510と540とを接続するために使用される。コンテンツソースデバイス510では、コンテンツジェネレータ511は、データをバッファメモリ512に供給することができる。マルチプレクサ515は、512からそれぞれのLANコントローラ513または514へのデータのフローを制御することができる。他の機能のなかでも、システムコントローラ517は、制御経路518を介してLANコントローラ513および514のどちらかを選択するように、マルチプレクサ515を構成することができる。同様に、コンテンツシンクデバイス540では、この例ではワイヤレス媒体および電力線媒体に対応する複数のLANコントローラ543および544があってもよい。これらは、マルチプレクサ515を介してバッファメモリ542にインターフェースし、最終的にはコンテンツレンダラ541にインターフェースすることができる。他の機能のなかでも、システムコントローラ547は、制御経路548を介してLANコントローラ543および544のどちらかを選択するように、マルチプレクサ545を構成することができる。一実施形態では、コンテンツソースデバイス510は、他の手段のなかでも、事前構成、ユーザ入力、またはシステムコントローラ517と547との間のネゴシエーションによって決定された、それぞれ媒体520または530を介したLANコントローラ513または514のいずれかを使用して、コンテンツシンクデバイス540との通信を確立することができる。システムコントローラ547は、コンテンツシンクデバイス540が使用中の基礎をなすMACコントローラを知ることができ、それに従って、再配列機能を選択的に実施するようにバッファメモリ542を構成することができる。コンテンツソースデバイス510とコンテンツシンクデバイス540との間の単一の接続技術の文脈において本例を変更することができ、コンテンツソースデバイス510とコンテンツシンクデバイス540の両方は、図2に示されるように、単一のLANコントローラを実装する。さらに、複数のLAN技術を実施することができる単一のLANコントローラがあってもよく、操作のモードは接続に応じて、たとえば、リアルタイムで決定され得る。さらに、そのようなデバイスのシステムコントローラは、採用された接続のモードに応じて、バッファメモリを適切に構成することができる。一実施形態では、システムコントローラ547を、コンテンツソースデバイス510とコンテンツシンクデバイス540との間のシグナリングに関与させることができ、ストリーミングの開始に関連付けられたシグナリングを検出するように構成することができる。たとえば、システムコントローラ547は、インターネットグループマルチキャストプロトコルIGMPまたはデジタルリビングメディアアライアンスDLNAまたはネットワークを介したオーディオ/ビデオコンテンツの開始/制御に使用される他のプロトコルを生成すること/検出することができることに責任を負うことができる。ストリームの開始に続いて、システムコントローラ547は、コンテンツレンダラ541に対する再生を開始する前に所定のレベルまで満たされるまで待機するように、信号経路549を介してバッファメモリ542を構成することができる。たとえば、この事前設定値は、正ジッタと負ジッタの両方を補償するように、バッファメモリ542の深さの50とすることができる。たとえば、バッファメモリ542のアンダーランを生じさせる、チャネル停止または任意の他の異常があるときなど、空のバッファ状態からのストリームの再開を検出した際、システムコントローラ547は、パケットがバッファメモリによって受信された直後にコンテンツレンダラ541に対してパケットを利用可能にするように、信号経路549を介してバッファメモリ542を構成することができる。一実施形態では、これは、事前設定値を0に動的に構成することによって達成され得る。したがって、チャネル停止の事象から回復した後にそのことを認識すると、コンテンツソースデバイス510は、そのバッファ512が一杯になっているので、コンテンツシンクデバイス540に送るパケットを常に有することになり、バッファメモリ542のオーバーフローによるパケット損失の確率は、バッファのコンテンツが受信されたときにそれをクリアしようと試みることによって、最小限に抑えられる。上記で説明された実施形態は、コンテンツソースデバイス210およびコンテンツシンクデバイス240が、媒体220を介して動作する単一の接続技術によって接続される図2または上記で説明された実施形態のいずれかの装置の文脈において同様に適用可能であってもよいことに留意されたい。そのような実現において、システムコントローラ247は、バッファメモリ242が、信号経路249を介してコンテンツレンダラ241に対してパケットを利用可能にするバッファ閾値を制御することができる。上記の実施形態についてかなり詳細に説明してきたが、上記の開示が十分に理解されれば、多くの変形形態および修正形態が当業者に明らかとなろう。以下の特許請求の範囲は、すべてのそのような変形形態と修正形態とを包含すると解釈されるものとする。