(57)【特許請求の範囲】
【請求項１】
コンテンツ配布システム内にあるコンテンツ配布ネットワーク（ＣＤＮ）からデジタルコンテンツファイルをダウンロードするための方法であって、
前記コンテンツ配布システム内にある１つ又は複数のＣＤＮを含み、前記１つ又は複数のＣＤＮのそれぞれのランク及び重みも含むＣＤＮリストをコンテンツディレクトリサーバから受信するステップと、
帯域幅のテストに基づいて前記デジタルコンテンツファイルをダウンロードするためのＣＤＮを前記ＣＤＮリストから選択するステップであり、前記選択されたＣＤＮが、コンテンツプレーヤマシンと関連した最高のビットレートで前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの一部をダウンロードすることができる、又は前記ＣＤＮリストに含まれる他の任意のＣＤＮと関連した加重帯域幅以上の加重帯域幅を有する、ステップと、
前記選択されたＣＤＮからの前記デジタルコンテンツファイルに関連したデジタルコンテンツをダウンロードし、前記デジタルコンテンツをコンテンツバッファに格納するように構成されたバッファリングスレッドを開始するステップと、
前記コンテンツバッファに格納された前記デジタルコンテンツを再生するように構成された再生スレッドを開始するステップと
を含む方法。
【請求項２】
選択する前記ステップが、
前記ＣＤＮリスト内の第１のＣＤＮについて、前記第１のＣＤＮが前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの前記一部をダウンロードすることができる第１のビットレートを計算するサブステップと、
前記第１のビットレートが前記コンテンツプレーヤマシンと関連した前記最高のビットレートに等しいかどうか決定するサブステップと
を含む請求項１に記載の方法。
【請求項３】
前記第１のビットレートが前記コンテンツプレーヤマシンと関連した前記最高のビットレートに等しく、選択する前記ステップが、前記第１のＣＤＮを選択するサブステップをさらに含む請求項２に記載の方法。
【請求項４】
前記第１のビットレートが前記コンテンツプレーヤマシンと関連した前記最高のビットレートに等しくなく、選択する前記ステップが、
前記ＣＤＮリスト内の第２のＣＤＮについて、前記第２のＣＤＮが前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの前記一部をダウンロードすることができる第２のビットレートを計算するサブステップと、
前記第２のビットレートが前記コンテンツプレーヤマシンと関連した前記最高のビットレートに等しいかどうか決定するサブステップと
をさらに含む請求項２に記載の方法。
【請求項５】
前記最高のビットレートで前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの前記一部をダウンロードすることができるＣＤＮが前記ＣＤＮリストにはなく、選択する前記ステップが、
前記ＣＤＮリストに含まれるＣＤＮごとに、前記デジタルコンテンツファイルの前記一部を前記コンテンツプレーヤマシンにダウンロードすることができるビットレートを計算するサブステップと、
前記ＣＤＮリストに含まれるＣＤＮごとに、前記ＣＤＮが前記デジタルコンテンツファイルの前記一部を前記コンテンツプレーヤマシンにダウンロードすることができる前記ビットレートと前記ＣＤＮについての前記ＣＤＮリストに含まれる前記重みとの積に等しい加重帯域幅を計算するサブステップと
を含む請求項１に記載の方法。
【請求項６】
前記ＣＤＮリスト内の第１のＣＤＮが、前記ＣＤＮリストに含まれる他の任意のＣＤＮと関連した前記加重帯域幅より大きい加重帯域幅を有し、選択する前記ステップが、前記第１のＣＤＮを選択するサブステップをさらに含む請求項５に記載の方法。
【請求項７】
前記ＣＤＮリストにおける２つ以上のＣＤＮが同じ加重帯域幅を有し、選択する前記ステップが、前記ＣＤＮリストに記載される最低の相対的ランクを有する、前記２つ以上のＣＤＮのうちの第１のＣＤＮを選択するサブステップをさらに含む請求項５に記載の方法。
【請求項８】
前記バッファリングスレッドが、バッファアンダーラン状態が生じたことを示す終了信号、又は前記全デジタルコンテンツファイルがダウンロードされ、再生されたことを示すストリーム終了信号に遭遇するまで、前記バッファリングスレッドが、前記デジタルコンテンツファイルと関連した前記デジタルコンテンツをダウンロードし、格納し続けるようにさらに構成された請求項１に記載の方法。
【請求項９】
前記再生スレッドが、
前記コンテンツバッファが空であると決定するまで、前記コンテンツバッファに格納された前記デジタルコンテンツを再生し続け、
前記全デジタルコンテンツファイルが再生されていない場合、前記終了信号を前記バッファリングスレッドに送信し、又は
前記全デジタルコンテンツファイルが再生されている場合、前記ストリーム終了信号をコンテンツプレーヤ管理スレッドに送信する
ように構成された請求項８に記載の方法。
【請求項１０】
処理ユニットによって実行されると、
コンテンツ配布システム内にある１つ又は複数のコンテンツ配布ネットワーク（ＣＤＮ）を含み、前記１つ又は複数のＣＤＮのそれぞれのランク及び重みも含むＣＤＮリストをコンテンツディレクトリサーバから受信するステップと、
帯域幅のテストに基づいて前記デジタルコンテンツファイルをダウンロードするためのＣＤＮを前記ＣＤＮリストから選択するステップであり、前記選択されたＣＤＮが、コンテンツプレーヤマシンと関連した最高のビットレートで前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの一部をダウンロードすることができる、又は前記ＣＤＮリストに含まれる他の任意のＣＤＮと関連した加重帯域幅以上の加重帯域幅を有する、ステップと、
前記選択されたＣＤＮからの前記デジタルコンテンツファイルに関連したデジタルコンテンツをダウンロードし、前記デジタルコンテンツをコンテンツバッファに格納するように構成されたバッファリングスレッドを開始するステップと、
前記コンテンツバッファに格納された前記デジタルコンテンツを再生するように構成された再生スレッドを開始するステップと
を実行することによって、
前記処理ユニットに、前記コンテンツ配布システム内にあるＣＤＮからデジタルコンテンツファイルをダウンロードさせる命令を含むコンピュータ可読媒体。
【請求項１１】
選択する前記ステップが、
前記ＣＤＮリスト内の第１のＣＤＮについて、前記第１のＣＤＮが前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの前記一部をダウンロードすることができる第１のビットレートを計算するサブステップと、
前記第１のビットレートが前記コンテンツプレーヤマシンと関連した前記最高のビットレートに等しいかどうか決定するサブステップと
を含む請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記最高のビットレートで前記コンテンツプレーヤマシンに前記デジタルコンテンツファイルの前記一部をダウンロードすることができるＣＤＮが前記ＣＤＮリストにはなく、選択する前記ステップが、
前記ＣＤＮリストに含まれるＣＤＮごとに、前記デジタルコンテンツファイルの前記一部を前記コンテンツプレーヤマシンにダウンロードすることができるビットレートを計算するサブステップと、
前記ＣＤＮリストに含まれるＣＤＮごとに、前記ＣＤＮが前記デジタルコンテンツファイルの前記一部を前記コンテンツプレーヤマシンにダウンロードすることができる前記ビットレートと前記ＣＤＮについての前記ＣＤＮリストに含まれる前記重みとの積に等しい加重帯域幅を計算するサブステップと
を含む請求項１０に記載のコンピュータ可読媒体。
【請求項１３】
前記ＣＤＮリスト内の第１のＣＤＮが、前記ＣＤＮリストに含まれる他の任意のＣＤＮと関連した前記加重帯域幅より大きい加重帯域幅を有し、選択する前記ステップが、前記第１のＣＤＮを選択するサブステップをさらに含む請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記バッファリングスレッドが、バッファアンダーラン状態が生じたことを示す終了信号、又は前記全デジタルコンテンツファイルがダウンロードされ、再生されたことを示すストリーム終了信号に遭遇するまで、前記バッファリングスレッドが、前記デジタルコンテンツファイルと関連した前記デジタルコンテンツをダウンロードし、格納して続けるようにさらに構成された請求項１０に記載のコンピュータ可読媒体。
【請求項１５】
コンテンツ配布システム内にあるコンテンツ配布ネットワーク（ＣＤＮ）からデジタルコンテンツファイルをダウンロードするように構成されたコンテンツプレーヤデバイスであって、
ダウンロードされたデジタルコンテンツを格納するためのコンテンツバッファを含むメモリと、
前記コンテンツ配布システム内にある１つ又は複数のＣＤＮを含み、前記１つ又は複数のＣＤＮのそれぞれのランク及び重みも含むＣＤＮリストをコンテンツディレクトリサーバから受信し、
帯域幅のテストに基づいて前記デジタルコンテンツファイルをダウンロードするためのＣＤＮを前記ＣＤＮリストから選択し、前記選択されたＣＤＮが、コンテンツプレーヤデバイスと関連した最高のビットレートで前記コンテンツプレーヤデバイスに前記デジタルコンテンツファイルの一部をダウンロードすることができる、又は前記ＣＤＮリストに含まれる他の任意のＣＤＮと関連した加重帯域幅以上の加重帯域幅を有し、
前記選択されたＣＤＮからの前記デジタルコンテンツファイルに関連したデジタルコンテンツをダウンロードし、前記デジタルコンテンツを前記コンテンツバッファに格納するように構成されたバッファリングスレッドを開始し、
前記コンテンツプレーヤデバイスに結合された表示装置において、前記コンテンツバッファに格納された前記デジタルコンテンツを再生するように構成された再生スレッドを開始する
ように構成された、前記メモリに結合された処理ユニットと
を備えるコンテンツプレーヤデバイス。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本出願は、参照により本明細書に組み込まれている２００９年７月１６日出願の米国特許出願第１２／５０４,５２８号の利益を主張する。
【発明の背景】
【０００２】
【技術分野】
【０００３】
[0002]本発明の実施形態は、一般にデジタルメディアに関し、より詳細には、デジタルコンテンツ配布システム及び方法に関する。
【関連技術の説明】
【０００４】
[0003]デジタルコンテンツ配布システムは、従来、コンテンツサーバ、コンテンツプレーヤ、及びコンテンツサーバをコンテンツプレーヤに接続する通信ネットワークを含む。コンテンツプレーヤは、少し例を挙げれば、例えばデジタルコード化された歌、動画、又はテレビ番組などのデジタルコンテンツファイルを再生するように構成することができる。所与のデジタルコンテンツファイルは、通信ネットワークを介して、コンテンツサーバからコンテンツプレーヤにダウンロードすることができる。コンテンツプレーヤは、タイトルの連続的な再生を容易にするために、少なくともデジタルコンテンツファイルの一部をダウンロードし、格納することができる。コンテンツは、音声システム、ビデオシステム、又はそれらの組み合わせを介して再生することができる。コンテンツサーバは、特定の１組のタイトルを格納し、１つ又は複数のコンテンツプレーヤへのデジタルコンテンツファイルのダウンロードを容易にするように構成されたコンピュータシステムを備える。
【０００５】
[0004]実際のシナリオにおいて、１つ又は複数のコンテンツサーバを一緒に通信ネットワーク内に構成して、コンテンツ配布ネットワークを形成することができる。各コンテンツ配布ネットワークは、コンテンツサーバとコンテンツプレーヤとを相互接続するように構成された１つ又は複数のコンテンツサーバ及び１つ又は複数のネットワーク通信システムを含み得る。各コンテンツ配布ネットワークは、複数のデジタルコンテンツファイルをホストすることができる。コンテンツディレクトリサーバは、デジタルコンテンツファイルのタイトル名のリストを提供し、例えばユニバーサルリソースロケータ（ＵＲＬ）などの参照機構を介してコンテンツ配布ネットワークを各タイトルと関連付けるように構成されたコンピュータシステムを備える。コンテンツプレーヤは、特定のタイトルを再生する必要があるとき、まず、タイトルをホストするように構成されたコンテンツ配布ネットワークへの参照についての要求をコンテンツディレクトリサーバに対して掲示する。次いで、コンテンツプレーヤは、コンテンツディレクトリサーバによって提供される参照で指定されたコンテンツ配布ネットワークから、タイトルをダウンロードし、再生する。
【０００６】
[0005]コンテンツプレーヤは、通信ネットワークの１つの領域に配置されてもよく、コンテンツ配布ネットワークは、通信ネットワークの異なる領域に配置されてもよい。ルータ及びスイッチなどのネットワーキングシステムは、従来、コンテンツプレーヤをコンテンツ配布ネットワークと相互接続するように構成されている。いくつかの高トラフィックのシナリオで、通信ネットワーク内の輻輳は、例えばコンテンツプレーヤとコンテンツ配布ネットワークとの間など、いくつかのエンドポイント間の帯域幅を制約し得る。さらに、コンテンツプレーヤとコンテンツ配布ネットワークとの間のネットワーキングシステムは、前触れもなく故障する場合があり、信頼性の問題が生じる。信頼性の問題を悪化させて、コンテンツ配布ネットワーク内のコンテンツサーバ及びネットワーキングシステムは、前触れもなく故障したり、過負荷となったりすることもある。結果として、コンテンツプレーヤは、ユーザによって要求されるデジタルコンテンツファイルを確実にダウンロードし、再生することができないことがある。
【０００７】
[0006]上記が示すように、当分野では、従来技術の手法より頑強で信頼できるコンテンツプレーヤにデジタルコンテンツファイルをダウンロードするための手法が必要である。
【発明の概要】
【０００８】
[0007]本発明の一実施形態は、コンテンツ配布システム内にあるコンテンツ配布ネットワーク（ＣＤＮ）からデジタルコンテンツファイルをダウンロードするための方法を記載する。この方法は、コンテンツ配布システム内にある１つ又は複数のＣＤＮを含み、１つ又は複数のＣＤＮのそれぞれのランク及び重みも含むＣＤＮリストをコンテンツディレクトリサーバから受信するステップと、帯域幅のテストに基づいてデジタルコンテンツファイルをダウンロードするためのＣＤＮをＣＤＮリストから選択するステップであり、選択されたＣＤＮが、コンテンツプレーヤマシンと関連した最高のビットレートでコンテンツプレーヤマシンにデジタルコンテンツファイルの一部をダウンロードすることができる、又はＣＤＮリストに含まれる他の任意のＣＤＮと関連した加重帯域幅以上の加重帯域幅を有する、ステップとを含む。また、この方法は、選択されたＣＤＮからデジタルコンテンツファイルに関連したデジタルコンテンツをダウンロードし、デジタルコンテンツをコンテンツバッファに格納するように構成されたバッファリングスレッドを開始するステップと、コンテンツバッファに格納されたデジタルコンテンツを再生するように構成された再生スレッドを開始するステップとを含む。
【０００９】
[0008]通信ネットワーク内のいくつかの障害及びいくつかの他のＣＤＮの障害にもかかわらず、開示された方法の１つの利点は、コンテンツ配布システム内の各コンテンツプレーヤが信頼できるコンテンツの再生を容易にすることができることである。コンテンツプレーヤは、ひどい故障の状態で再生を再確立し、部分最適のシステム全体の状態でデジタルコンテンツファイルをダウンロードするための良好なＣＤＮを有益に選択することができる。
【００１０】
[0009]他の実施形態は、それだけには限定されないが、処理ユニットが開示された方法の１つ又は複数の態様を実施することができる命令を含むコンピュータ可読媒体、及び開示された方法の１つ又は複数の態様を実施するように構成されたシステムを含む。
【図面の簡単な説明】
【００１１】
[0010]本発明の上記の特徴を詳しく理解することができるように、実施形態を参照して上記で簡単に要約した本発明のより特定の説明を行い、その一部が添付の図面に図示される。しかし、添付の図面は本発明の代表的な実施形態のみを示しており、したがって、本発明は、他の等しく有効な実施形態を認めることができるため、その範囲を制限するものと見なされないことに留意されたい。
【図１】[0011]  本発明の１つ又は複数の態様を実施するように構成されたコンテンツ配布システムを示す図である。
【図２】[0012]  本発明の一実施形態による図１のコンテンツプレーヤのより詳細な図である。
【図３Ａ】[0013]  本発明の一実施形態による、コンテンツ配布システム内のコンテンツ配布ネットワークからデジタルコンテンツファイルをダウンロードするための方法ステップのフロー図である。
【図３Ｂ】[0014]  本発明の一実施形態による、特定のデジタルコンテンツファイルをダウンロードするためのコンテンツ配布システム内のコンテンツ配布ネットワークを選択するための方法ステップのフロー図である。
【図３Ｃ】[0015]  本発明の一実施形態による、コンテンツ配布ネットワークからダウンロードされたデジタルコンテンツファイルをバッファリングするための方法ステップのフロー図である。
【図３Ｄ】[0016]  本発明の一実施形態による、コンテンツプレーヤ内のコンテンツバッファにバッファされているデジタルコンテンツファイルを再生するための方法ステップのフロー図である。
【詳細な説明】
【００１２】
[0017]以下の説明では、本発明をより完全に理解できるように、多数の特定の詳細について記載する。しかし、本発明をこれらの特定の詳細のうちの１つ又は複数なしに実施することができることは、当業者にとって明らかである。他の例では、本発明をわかりにくくすることを避けるために、周知の特徴については記載していない。
【００１３】
[0018]図１は、本発明の１つ又は複数の態様を実施するように構成されたコンテンツ配布システム１００を示す。示すように、コンテンツ配布システム１００は、それだけには限定されないが、複数のコンテンツ配布ネットワーク１４０のうちの１つから再生のためのデジタルコンテンツファイルを選択するように構成されたコンテンツプレーヤ１１０を含む。コンテンツディレクトリサーバ１２０は、デジタルコンテンツファイルをホストするコンテンツ配布ネットワークのリストをコンテンツプレーヤ１１０に提供するように構成される。例えば周知のインターネット通信ネットワークなど、通信ネットワーク１５０は、コンテンツプレーヤ１１０、コンテンツディレクトリサーバ１２０、及びコンテンツ配布ネットワーク１４０の間の通信を可能にするための通信インフラストラクチャを提供する。
【００１４】
[0019]コンテンツプレーヤ１１０は、コンピュータシステム、セットトップボックス、携帯電話などのモバイルデバイス、又はネットワーク接続を有し、表示装置に結合される、又は表示装置を含む他の任意の技術的に実行可能なコンピューティングプラットフォームを備え得る。各コンテンツ配布ネットワーク（ＣＤＮ）１４０は、コンテンツプレーヤ１１０からのデジタルコンテンツファイルについてのダウンロード要求に応えるように構成された少なくとも１つのコンピュータシステムを備える。デジタルコンテンツファイルは、それだけには限定されないが、動画コンテンツ、テレビ番組コンテンツ、又は音声コンテンツを含む、任意のタイプのコード化された、又はコード化されていないデジタルコンテンツ（データ）を備えることができる。デジタルコンテンツファイルは、それだけには限定されないが、直接接続されたストレージ、ネットワーク接続されたファイルストレージ、又はネットワーク接続されたブロックレベルストレージを含む、コンピュータシステムからアクセス可能な大容量記憶システムに存在し得る。デジタルコンテンツファイルは、任意の技術的に実行可能な技術を使用して、フォーマットされ、大容量記憶システムに格納され得る。デジタルコンテンツファイルをＣＤＮ１４０からコンテンツプレーヤ１１０にダウンロードするために、任意のデータ転送プロトコル、例えば従来のファイル転送プロトコル（ＦＴＰ）又は従来のハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用することができる。
【００１５】
[0020]実際的な設定において、複数のコンテンツプレーヤ１１０は、複数のＣＤＮ１４０に接続する。コンテンツディレクトリサーバ１２０を使用して、特定のデジタルコンテンツファイルをダウンロードするための特定のＣＤＮ１４０に所与のコンテンツプレーヤ１１０を向けることができる。コンテンツディレクトリサーバ１２０は、複数のコンテンツプレーヤ１１０にわかるネットワークアドレスに存在していなければならない。ネットワークアドレスは、特定のインターネットプロトコル（ＩＰ）アドレス若しくは特定のユニバーサルリソースロケータ（ＵＲＬ）、又は技術的に実行可能な他の任意のネットワークアドレスを備え得る。
【００１６】
[0021]通信ネットワーク１５０は、コンテンツプレーヤ１１０と複数のコンテンツ配布ネットワーク１４０との間のデータ通信を容易にするように構成された、ルータやスイッチなど複数のネットワーク通信システムを含むことができる。周知のインターネット通信ネットワークを配置する際に実施される技術を含めて、通信システム１５０を構築するための技術的に実行可能な多くの技術があることを当業者であれば認識されよう。
【００１７】
[0022]ある動作シナリオにおいて、コンテンツプレーヤ１１０は、タイトルルックアップ要求１１２をコンテンツディレクトリサーバ１２０に送信することができる。タイトルルックアップ要求１１２は、例えば「風と共に去りぬ」など、特定のデジタルコンテンツファイルの特定のタイトル名を含むことができる。タイトルルックアップ要求１１２に応答して、コンテンツディレクトリサーバ１２０は、ＣＤＮリスト１２２を生成し、コンテンツプレーヤ１１０に送信する。ＣＤＮリスト１２２は、タイトルルックアップ要求１１２において指定されたデジタルコンテンツファイルのコピーをそれぞれホストする１つ又は複数のＣＤＮ１４０を指定する。所与のタイトルについて、各ＣＤＮリスト１２２はコンテンツプレーヤ１１０ごとに異なってもよく、所与のコンテンツプレーヤ１１０は、要求された異なるタイトルごとに異なるＣＤＮリスト１２２を受信することができる。
【００１８】
[0023]一実施形態において、ＣＤＮリスト１２２は、ＣＤＮ１４０ごとにランク及び重みも提示する。ランクは、ＣＤＮリスト１２２の順序によって暗に示されていてもよく、又は所与のＣＤＮ１４０と関連した数として明示的に提示されていてもよい。重みは、所与のＣＤＮ１４０と関連した数として明示的に提示される。一実施形態において、ＣＤＮリスト１２２内の各ＣＤＮ１４０は、ＣＤＮ１４０内の個々のコンテンツサーバのＵＲＬのリストを含む。表１は、ＣＤＮリスト例１２２を示す。
【表１】
0005298331.tif 000002
【００１９】
[0024]示すように、図１のＣＤＮ１４０−１〜ＣＤＮ１４０−３までに対応する「ＣＤＮ１」〜「ＣＤＮ３」までの３つのＣＤＮが列挙されている。各ＣＤＮ１４０は、ランクフィールド、重みフィールド、及びデジタルコンテンツファイルを再生デバイス１１０にダウンロードするように構成された１つ又は複数のコンテンツサーバを指定するために使用されるストリームフィールドを含む。各ＵＲＬ１〜ＵＲＬ８までは、「ｈｔｔｐ：／／ｎｅｔｗｏｒｋ−ａｄｄｒｅｓｓ−ｎａｍｅ」の形のものでもよく、この場合、ＵＲＬは、データ転送プロトコルとしてハイパーテキスト転送プロトコル（ＨＴＴＰ）を指定する。
【００２０】
[0025]様々なＣＤＮリスト１２２の内の異なるＣＤＮ１４０と関連したランキングの順序は、コンテンツ配布システム１００内のコンテンツプレーヤ１１０とＣＤＮ１４０との間のトラフィックを管理するために使用される。所与のコンテンツプレーヤ１１０についての異なるＣＤＮ１４０と関連したランキングの順序は、それだけには限定されないが、例えば、顧客識別番号、タイトル識別番号、インターネットサービスプロバイダ識別番号、コンテンツプレーヤ１１０の地理的な位置、顧客履歴、若しくは一般的なサーバロードなどの要因、又は任意のそれらの組み合わせに基づいて任意の技術的に実行可能な技術を使用して選択することができる。
【００２１】
[0026]例えば、所与のコンテンツプレーヤのために、顧客識別（顧客に割り当てられる一意の番号）に対してモジュロ１００演算（modulo one hundred operation）を実行して、ゼロ〜９９に及ぶ顧客モジュロ値を生成することができる。ゼロ〜６９までの関連するモジュロ値を有するコンテンツプレーヤ１１０は、ＣＤＮ１を１位にランク付けているＣＤＮリスト１２２を受信し、一方、７０〜９９までの関連するモジュロ値を有するコンテンツプレーヤ１１０は、ＣＤＮ２を１位にランク付けているＣＤＮリスト１２２を受信することができる。こうしたシナリオにおいて、顧客識別番号の約７０パーセントがゼロと６９との間に収まるので、ＣＤＮ１は全ダウンロード帯域幅の７０パーセントを平均するものとし、一方、顧客識別番号の約３０パーセントが７０と９９との間に収まるので、ＣＤＮ２は全ダウンロード帯域幅の３０パーセントを平均するものとする。
【００２２】
[0027]重み値も、ＣＤＮリスト１２２に含まれる各ＣＤＮ１４０に関連付けられている。本明細書においてより詳細に説明したように、ＣＤＮリスト１２２に含まれるＣＤＮ１４０のいずれも「最高のビットレート」のダウンロードストリームをコンテンツプレーヤ１１０に送信することができない場合、重み値は、コンテンツプレーヤ１１０が、特定のデジタルコンテンツファイルをダウンロードするためのＣＤＮリスト１２２に含まれるＣＤＮ１４０のうちの１つを選択するための選好又は好みとして役立つ。本明細書で使用されるとき、「最高のビットレート」は、コンテンツプレーヤ１１０によってサポートされる最大平均ビットレートに対応する。最高のビットレートに加えて、コンテンツプレーヤ１１０は、通常、少なくとも１つ低い平均ビットレートをサポートする。
【００２３】
[0028]ＣＤＮリスト１２２を受信すると、コンテンツプレーヤ１１０は、タイトルルックアップ要求１１２において指定されたデジタルコンテンツファイルをダウンロードするための１つのＣＤＮ１４０を選択する。次いで、コンテンツプレーヤ１１０は、タイトルルックアップ要求１１２において指定されたデジタルコンテンツファイルをダウンロードし、再生し始める。一実施形態において、コンテンツプレーヤ１１０は、タイトルルックアップ要求１１２と関連したデジタルコンテンツファイルの特定の部分を要求する要求ストリーム１１４、及びデジタルコンテンツファイルの特定の部分をコンテンツプレーヤ１１０にダウンロードするように構成されたデータ転送ストリーム１４４を確立する。
【００２４】
[0029]上記の説明において、１つのコンテンツプレーヤ１１０及び３つのＣＤＮ１４０を含むコンテンツ配布システム１００が示されているが、図１のアーキテクチャは単に本発明の実施形態例を企図するにすぎないことを当業者であれば理解されよう。他の実施形態は、任意の数のコンテンツプレーヤ１１０及び／又はＣＤＮ１４０を含むことができる。したがって、図１は、どのような形であれ決して本発明の範囲を制限するものではない。
【００２５】
[0030]図２は、本発明の一実施形態による図１のコンテンツプレーヤ１１０のより詳細な図である。示すように、コンテンツプレーヤ１１０は、それだけには限定されないが、中央演算処理装置（ＣＰＵ）２１０と、グラフィックサブシステム２１２と、入出力（Ｉ／Ｏ）デバイスインターフェース２１４と、ネットワークインターフェース２１８と、相互接続２２０と、メモリサブシステム２３０とを含む。コンテンツプレーヤ１１０は、大容量記憶装置２１６も含み得る。
【００２６】
[0031]中央演算処理装置（ＣＰＵ）２１０は、メモリサブシステム２３０に格納されるプログラミング命令を取り出し、実行するように構成される。ＣＰＵ２１０は、相互接続２２０を介してメモリサブシステム２３０からプログラミング命令を取り出す。ＣＰＵ２１０は、相互接続２２０を介してメモリサブシステム２３０にデータを格納し、取り出すように構成される。
【００２７】
[0032]グラフィックサブシステム２１２は、例えば一連のグラフィック画像など、ビデオデータのフレームを生成し、ビデオデータのフレームを表示装置２５０に送信するように構成される。グラフィックサブシステム２１２は、相互接続２２０を介してＣＰＵ２１０に結合される。一実施形態において、グラフィックサブシステム２１２は、ＣＰＵ２１０とともに、集積回路に統合される。表示装置２５０は、表示する画像を生成するための任意の技術的に実行可能な手段を備え得る。例えば、表示装置２５０は、ビデオデータのフレームの可視表現を生成するために、液晶式ディスプレイ（ＬＣＤ）技術、陰極線技術、及び発光ダイオード（ＬＥＤ）ディスプレイ技術（有機又は無機）を使用して製造することができる。入出力（Ｉ／Ｏ）デバイスインターフェース２１４は、相互接続２２０を介してユーザＩ／Ｏ装置２５２から入力データを受信し、入力データをＣＰＵ２１０に送信するように構成される。例えば、ユーザＩ／Ｏ装置２５２は、１つ又は複数のボタン、キーボード、及びマウス又は他のポインティングデバイスを備え得る。Ｉ／Ｏデバイスインターフェース２１４は、電気音声出力信号を生成するように構成された音声出力ユニットも含む。ユーザＩ／Ｏデバイス２５２は、電気音声出力信号に応答して音響出力を生成するように構成されたスピーカを含む。代替の実施形態では、表示装置２５０は、スピーカを含み得る。テレビは、ビデオフレームを表示し、音響出力を生成することができる、当分野で知られているデバイスの一例である。例えばハードディスクドライブ又はフラッシュメモリ記憶ドライブなど、大容量記憶装置２１６は、不揮発性データを格納するように構成される。大容量記憶装置２１６は、相互接続２２０を介してＣＰＵ２１０に結合される。ネットワークインターフェース２１８は、通信ネットワーク１５０を介してデータのパケットを送信及び受信するように構成される。一実施形態において、ネットワークインターフェース２１８は、周知のイーサネット標準を使用して通信するように構成される。ネットワークインターフェース２１８は、相互接続２２０を介してＣＰＵ２１０に結合される。
【００２８】
[0033]メモリサブシステム２３０は、オペレーティングシステム２３２を備えるデータ及びプログラミング命令を含む。オペレーティングシステム２３２は、例えばネットワークインターフェース２１８、大容量記憶装置２１６、Ｉ／Ｏデバイスインターフェース２１４、及びグラフィックサブシステム２１２を含む管理ハードウェアデバイスなど、システム管理機能を実行する。また、オペレーティングシステム２３２は、ユーザインターフェース２３４及び再生アプリケーション２３６のプロセス及びメモリ管理モデルを提供する。ユーザインターフェース２３４は、コンテンツプレーヤ１１０とのユーザ対話のために、例えばウィンドウ及びオブジェクトメタファなど、特定の構造を提供する。当業者であれば、当分野で周知の、及びコンテンツプレーヤ１１０への組み込みに適している様々なオペレーティングシステム及びユーザインターフェースを認識されよう。
【００２９】
[0034]再生アプリケーション２３６は、ネットワークインターフェース２１８を介してＣＤＮ１４０からデジタルコンテンツファイルを取り出し、グラフィックサブシステム２１２及び表示装置２５０を介してデジタルコンテンツファイルを再生するように構成される。再生アプリケーション２３６は、例えば図１のＣＤＮリスト１２２など、ＣＤＮリスト２４０をコンテンツディレクトリサーバ１２０に要求する。再生アプリケーション２３６は、図３Ｂで後でより詳細に説明するように、ＣＤＮをＣＤＮリスト２４０から選択する。次いで、再生アプリケーション２３６は、選択されたＣＤＮ１４０からデジタルコンテンツファイルをダウンロードし、バッファリングし始める。再生アプリケーション２３６は、図３Ａ、図３Ｃ、及び図３Ｄで後でより詳細に説明するように、再生プロセス中に、ユーザに対してデジタルコンテンツファイルの可視のレンダリングを生成する。
【００３０】
[0035]音声バッファ２４２は、選択されたＣＤＮ１４０からダウンロードされた１つのデジタルコンテンツから音声データを格納するために使用され得る。一実施形態において、オーディオデコーダ２４４は、音声バッファ２４２に格納されたデータを１つ又は複数のオーディオトラックにデコードするために使用される。ビデオバッファ２４６は、選択されたＣＤＮ１４０からダウンロードされた１つのデジタルコンテンツからビデオデータを格納するために使用される。ビデオデコーダ２４８は、ビデオバッファ２４２に格納されたデータを可視のビデオフレームの１つ又は複数のシーケンスにデコードし、レンダリングするために使用される。一実施形態において、コンテンツバッファ２４５は、音声バッファ２４２及びビデオバッファ２４６を含む一体化されたバッファ構造を備える。本実施形態において、音声データとビデオデータとが単一のストリームに構築される。代替実施形態では、コンテンツバッファ２４５は、データを追加又は削除するために、個々にアクセスすることができる別々のバッファとして構成された音声バッファ２４２及びビデオバッファ２４６を備える。
【００３１】
[0036]図３Ａは、本発明の一実施形態による、コンテンツ配布システム１００内のコンテンツ配布ネットワーク１４０からデジタルコンテンツファイルをダウンロードするための方法ステップ３００のフロー図である。方法ステップは図１及び図２のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成された任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。一実施形態において、方法ステップ３００は、再生アプリケーション２３６内のコンテンツプレーヤ管理スレッドとして実行する。
【００３２】
[0037]方法は、ステップ３１０で開始し、再生アプリケーション２３６は、選択されたデジタルコンテンツタイトルを再生する旨のユーザの要求を受信する。例えば、ユーザは、例えばキーボード又はマウスなど、図２のユーザＩ／Ｏ装置２５２のうちの１つ又は複数を使用して選択を入力することができる。ステップ３１２において、再生アプリケーション２３６は、タイトルルックアップ要求１１２を介して、コンテンツディレクトリサーバ１２０に、選択されたデジタルコンテンツファイルのＣＤＮリスト１２２を要求する。一実施形態において、コンテンツディレクトリサーバ１２０は、コンテンツプレーヤ１１０がわかる例えばＵＲＬなどある位置の通信ネットワークに存在する。ステップ３１４で、再生アプリケーション２３６は、コンテンツディレクトリサーバ１２０からＣＤＮリスト１２２を受信し、ＣＤＮリスト１２２は、メモリサブシステム２３０内にＣＤＮリスト２４０として格納される。この場合もまた、本明細書において上述した表１は、ＣＤＮリスト２４０の構造例を記載する。
【００３３】
[0038]ステップ３２０で、再生アプリケーション２３６は、選択されたデジタルコンテンツファイルがダウンロードされることになっているＣＤＮリスト２４０から、コンテンツ配布システム１００内の１つのＣＤＮ１４０を選択する。１つのＣＤＮ１４０を選択するためのアルゴリズムについては、図３Ｂとの関連で後でより詳細に記載する。ステップ３２０の１つの結果は、ステップ３２４で、選択されたデジタルコンテンツファイルと関連したデジタルコンテンツの一部がコンテンツバッファ２４５に格納されることである。その結果として、選択されたデジタルコンテンツファイルと関連したデジタルコンテンツにアクセスし、より迅速に再生することができ、それによって、再生プロセスと関連した遅延が低減する。ステップ３２６で、再生アプリケーション２３６は、再生を開始する前に、選択されたデジタルコンテンツファイルと関連した追加の量のデジタルコンテンツをプリバッファリングする。
【００３４】
[0039]ステップ３３０で、再生アプリケーション２３６は、図３Ｃでより詳細に説明するように、バッファリングスレッドを開始する。バッファリングスレッドは、ＣＤＮ１４０から選択されたデジタルコンテンツファイルに関連した追加のデジタルコンテンツをダウンロードし、そのデータをコンテンツバッファ２４５にバッファリングし続けるように構成される。ステップ３３５で、再生アプリケーション２３６は、再生スレッドを開始する。再生スレッドは、コンテンツバッファ２４５から音声及びビデオデータを読み出し、ユーザに対して再生するための対応する音声及びビデオストリームを生成するように構成される。
【００３５】
[0040]ステップ３３８で、再生アプリケーション２３６は、ステップ３３５で開始された再生スレッドが終了するのを待つ。ステップ３９０で、再生アプリケーション２３６は、選択されたデジタルコンテンツファイルが再生スレッドの終了条件に基づいて終端まで再生されたかどうかを決定する。ステップ３９０で、選択されたデジタルコンテンツファイルが終端まで再生されていない場合、方法３００は、上述したステップ３２０に戻る。こうしたシナリオは、再生スレッドがバッファアンダーランに遭遇し、再開する必要があるときに起こる。再開時に選択されたデジタルコンテンツファイルがどこで再生を開始すべきかを示すためのタイムマーカを格納することができる。しかし、ステップ３９０で、選択されたデジタルコンテンツファイルが終端まで再生されている場合、方法はステップ３９２で終了する。
【００３６】
[0041]図３Ｂは、本発明の一実施形態による、選択されたデジタルコンテンツファイルをダウンロードするためのコンテンツ配布システム１００内のＣＤＮ１４０を選択するための方法ステップ３２２のフロー図である。方法ステップは図１及び図２のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成された任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。要するに、方法ステップ３２２は、コンテンツプレーヤ１１０によって指定されたダウンロード実行要件、及びＣＤＮリスト２４０に反映されるコンテンツプレーヤ１１０の割り当てられたＣＤＮ選好に基づいて、選択されたデジタルコンテンツファイルがダウンロードされるべき特定のＣＤＮ１４０を決定する。また、方法ステップ３２２は、図３Ａのステップ３２０をより詳細に説明しており、一実施形態において、再生アプリケーション２３６内のコンテンツプレーヤ管理スレッドによって実行される。
【００３７】
[0042]方法は、ステップ３４０で開始し、再生アプリケーション２３６は、ＣＤＮ１４０と関連したランクに基づいてＣＤＮリスト２４０に含まれるＣＤＮ１４０をソートして、ソートされたＣＤＮリストを生成する。表１に示したように、ソートされたＣＤＮリストの各ＣＤＮ１４０は、対応するランクが割り当てられる。一実施形態において、ソートされたＣＤＮリスト内の第１のＣＤＮ１４０は、１（「１」）のランクを有し、ソートされたＣＤＮリストのそれぞれ次のＣＤＮは、ランクが上がる。ソートされたＣＤＮリスト内のＣＤＮ１４０のカウントを反映するために、可変「ＣＤＮ＿Ｃｏｕｎｔ」が設定される。
【００３８】
[0043]ステップ３４２で、再生アプリケーション２３６は、可変「ｉ」をゼロに初期化する。可変「ｉ」は、ソートされたＣＤＮリスト内のどのＣＤＮ１４０が現在評価されているかを決定する。ステップ３４４で、再生アプリケーション２３６は、「ｉ」の値と、ソートされたＣＤＮリスト内のＣＤＮ１４０の合計数とを比較する。「ｉ」の値がソートされたＣＤＮリスト内のＣＤＮ１４０の合計数を反映するＣＤＮ＿Ｃｏｕｎｔ未満である場合、方法はステップ３４６に進む。ステップ３４６で、再生アプリケーション２３６は、ＣＤＮ［ｉ］、すなわち現在評価されているＣＤＮ１４０において帯域幅のテストを実行する。帯域幅のテストを実行するために、ＣＤＮ［ｉ］とコンテンツプレーヤ１１０との間で使用可能な帯域幅の量を評価するために、選択されたデジタルコンテンツファイルの一部が、ＣＤＮ［ｉ］からコンテンツプレーヤ１１０にダウンロードされる。この文脈における使用可能な帯域幅は、通信ネットワーク１５０を介したＣＤＮ［ｉ］とコンテンツプレーヤ１１０との間の瞬時帯域幅を含み、ＣＤＮ［ｉ］における全体的な現在の負荷も考慮に入れる。通信ネットワーク１５０がＣＤＮ［ｉ］とコンテンツプレーヤ１１０との間で輻輳するとき、使用可能な帯域幅の量は、通常、輻輳により低減する。同様に、ＣＤＮ［ｉ］にダウンロード要求の負荷がかなりかかっていると、ＣＤＮ［ｉ］がダウンロード要求に迅速に対応できないため、一般に、使用可能な帯域幅の量は低減する。
【００３９】
[0044]ステップ３４８で、再生アプリケーション２３６は、「帯域幅値」と呼ばれる、ＣＤＮ［ｉ］とコンテンツプレーヤ１１０との間の利用可能な帯域幅の量をメモリサブシステム２３０内に存在するアレイ「帯域幅［ｉ］」に格納する。ステップ３５０で、再生アプリケーション２３６は、「帯域幅テストデータ」と呼ばれるダウンロードされたデータをコンテンツバッファ２４５に格納する。
【００４０】
[0045]ステップ３５２で、再生アプリケーション２３６は、ＣＤＮ［ｉ］がコンテンツプレーヤ１１０と関連した最高のビットレートでコンテンツプレーヤ１１０にデータをダウンロードすることができるかどうかを決定する。また、最高のビットレートは、コンテンツプレーヤ１１０によってサポートされる最大平均ビットレートである。ＣＤＮ［ｉ］が最高のビットレートでデータをダウンロードすることができない場合（ステップ３４６でＣＤＮ［ｉ］について測定された帯域幅値がコンテンツプレーヤ１１０と関連した最高のビットレート未満であることを意味する）、方法はステップ３５４に進み、再生アプリケーション２３６は、ＣＤＮ［ｉ］についての加重帯域幅値を計算する。ＣＤＮ［ｉ］についての加重帯域幅値は、ステップ３４６でＣＤＮ［ｉ］について測定された帯域幅にＣＤＮ［ｉ］と関連したソートされたＣＤＮリストに含まれる重み値を掛けたものに等しい。ステップ３５６で、再生アプリケーション２３６は、上述したように、方法がステップ３４４に戻る前に、可変「ｉ」を１だけインクリメントする。
【００４１】
[0046]ステップ３４４に戻ると、再生アプリケーション２３６は、「ｉ」の値を、ソートされたＣＤＮリスト内のＣＤＮ１４０の合計数と再度比較する。「ｉ」の値がＣＤＮ＿Ｃｏｕｎｔ以上である場合、ソートされたＣＤＮリスト内の各ＣＤＮ１４０の帯域幅はテストされており、ソートされたＣＤＮリスト内の各ＣＤＮ１４０についての加重帯域幅値が計算されている。次いで、方法は、ステップ３６０に進み、再生アプリケーション２３６は、最も大きい加重帯域幅値を有するＣＤＮ１４０を、選択されたデジタルコンテンツファイルをダウンロードするためのＣＤＮ１４０として選択する。２つ以上のＣＤＮ１４０が最も大きい加重帯域幅値に等しい加重帯域幅値を有する場合、再生アプリケーション２３６は、選択されたデジタルコンテンツファイルをダウンロードするためのＣＤＮ１４０として、ソートされたＣＤＮリストに記載されたように、２つ以上のＣＤＮ１４０の中で最低の相対的ランキングを有するＣＤＮ１４０を選択する。次いで、方法は、ステップ３６４で終了する。
【００４２】
[0047]次にステップ３５２に戻って、ＣＤＮ［ｉ］が最高のビットレートでデータをダウンロードすることができる場合（ステップ３４６でＣＤＮ［ｉ］について測定された帯域幅がコンテンツプレーヤ１１０と関連した最高のビットレート以上であることを意味する）、方法はステップ３６２に進み、再生アプリケーション２３６は、ＣＤＮ［ｉ］を、選択されたデジタルコンテンツファイルをダウンロードするためのＣＤＮ１４０として選択する。このシナリオにおいて、現在テストされたＣＤＮ１４０がコンテンツプレーヤ１１０のダウンロード実行要件を満たすので、さらなるテストは必要ない。この場合もまた、方法は、ステップ３６４で終了する。
【００４３】
[0048]当業者であれば理解できるように、少なくとも１つのＣＤＮ１４０がサポートされた最高のビットレートでデジタルコンテンツファイルのダウンロードを提供することができるシナリオでは、ソートされたＣＤＮリスト内のＣＤＮ１４０の順位は、どのＣＤＮ１４０がデジタルコンテンツファイルをコンテンツプレーヤ１１０に提供すべきかを決定する。ソートされたＣＤＮリスト内に、サポートされた最高のビットレートでデジタルコンテンツファイルのダウンロードを提供することができるＣＤＮ１４０がないシナリオでは、上述したように、ソートされたＣＤＮリストの各ＣＤＮ１４０の加重帯域幅値を使用して、選択されたデジタルコンテンツファイルをダウンロードするためのＣＤＮ１４０を選択する。一実施形態において、等しい重み×帯域幅の積の複数のＣＤＮ１４０が使用可能であるとき、最高ランク（最も低いランク番号）のＣＤＮ１４０が選択される。
【００４４】
[0049]図３Ｃは、本発明の一実施形態による、コンテンツ配布ネットワーク１４０からダウンロードされたデジタルコンテンツファイルをバッファリングするための方法ステップ３３２のフロー図である。方法ステップは図１及び図２のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成された任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。
【００４５】
[0050]方法は、ステップ３７０で開始し、図３Ａのステップ３３０で開始されるバッファリングスレッドは、実行を開始する。所与のスレッドの実施のために必要とされる初期化を、このステップで実行することができる。それだけには限定されないが、図３Ａのステップ３２０でどのＣＤＮ１４０が選択されたか、及びバッファリングの開始時刻を決定するために、バッファリングスレッドによって使用されるタイムマーカを含めて、いくつかのパラメータをバッファリングスレッドに渡すことができる。新しいＣＤＮ１４０がバッファアンダーラン前であるために選択する必要があるシナリオにおいて、タイムマーカは重要である。
【００４６】
[0051]ステップ３７２で、バッファリングスレッドは、終了信号が受信されるかどうかを決定する。信号が実行スレッド間にメッセージを送信するためのプロセス間通信機構を備えることを当業者であれば理解されよう。この文脈において、終了信号は、バッファリングスレッドが実行を終了することを要求する、再生スレッドによってバッファリングスレッドに送信される特定の信号である。終了信号は、再生スレッドが例えばバッファアンダーランなどの重大な課題に遭遇すると、再生スレッドによって生成される。図３Ａにおいて反映されるように、バッファアンダーラン状態によって、再生アプリケーション２３６内で実行しているコンテンツプレーヤ管理スレッドは、デジタルコンテンツファイルをダウンロードするための新しいＣＤＮ１４０を選択する。一旦新しいＣＤＮ１４０を選択するための決定が行われると、古いＣＤＮ１４０からデジタルコンテンツファイルをダウンロードすることを試みているバッファリングスレッドが終了する。
【００４７】
[0052]ステップ３７２で、終了信号が受信されない場合、方法はステップ３７４に進み、バッファリングスレッドは、図３Ａのステップ３２０で選択されるＣＤＮ１４０から、選択されたデジタルコンテンツファイルと関連した追加のデジタルコンテンツを取り出し、バッファリングする。ステップ３７６で、バッファリングスレッドは、バッファアンダーランがコンテンツバッファ２４５で生じたかどうかを決定する。バッファアンダーランは、バッファリングスレッドが、デジタルコンテンツファイルの再生を実行しながら、コンテンツバッファ２４５からのデータを消費するように作動している再生スレッドに追随していくのにコンテンツバッファ２４５に充分なデータを追加しなかったときに生じる。バッファリングスレッドは、それだけには限定されないが、通信ネットワーク１５０内の一時的な障害、選択されたＣＤＮ１４０の障害、選択されたＣＤＮ１４０の過負荷などを含む理由のために充分なデータを追加しない場合がある。バッファアンダーランがコンテンツバッファ２４５で生じると、コンテンツプレーヤ１１０によるリアルタイムのコンテンツの再生は停止する。次いで、上述したように、選択されたデジタルコンテンツファイルをダウンロードするための新しいＣＤＮ１４０を選択することができる。
【００４８】
[0053]ステップ３７６で、バッファアンダーランは生じていない場合、方法はステップ３７８に進む。ステップ３７８で、バッファリングスレッドは、ストリーム（デジタルコンテンツファイル）が選択されたＣＤＮ１４０から完全にダウンロードされたかどうかを決定する。ステップ３７８で、ストリームが選択されたＣＤＮ１４０からダウンロードし終わらない場合、方法は、上述したステップ３７２に戻り、追加データは、コンテンツバッファ２４５にダウンロードされる。しかし、ステップ３７８で、ストリーム（デジタルコンテンツファイル）が選択されたＣＤＮ１４０からダウンロードし終わる場合、方法はステップ３９４で終了する。この時点で、バッファリングスレッドは、デジタルコンテンツファイルをコンテンツバッファ２４５に正常にダウンロードしている。
【００４９】
[0054]ステップ３７６を再度参照すると、バッファアンダーランがコンテンツバッファ２４５で生じた場合、方法はステップ３９４で終了する。同様に、ステップ３７２で、終了信号が受信された場合も、方法はステップ３９４で終了する。
【００５０】
[0055]図３Ｄは、本発明の一実施形態による、コンテンツプレーヤ１１０内のコンテンツバッファ２４５にバッファされているデジタルコンテンツを再生するための方法ステップ３３６のフロー図である。方法ステップは図１及び図２のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成された任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。
【００５１】
[0056]方法は、ステップ３８０で開始し、図３Ａのステップ３３５で開始する再生スレッドは、所与のスレッドの実施に従って初期化される。この場合もまた、それだけには限定されないが、タイムマーカを含む、いくつかのパラメータを再生スレッドに渡すことができる。ステップ３８１で、再生スレッドは、コンテンツバッファ２４５からコンテンツサンプル（音声及びビデオストリームデータ）を取り出すことを試みる。ステップ３８２で、再生スレッドは、コンテンツバッファ２４５が空かどうかを決定する。ステップ３８２で、コンテンツバッファ２４５が空でない場合、再生スレッドはステップ３８４に進み、再生スレッドは、コンテンツバッファ２４５からある量（あるタイムスパン又はバイト数）のコンテンツサンプルを再生する。次いで、方法は、ステップ３８１に戻る。
【００５２】
[0057]しかし、ステップ３８２で、コンテンツバッファ２４５が空である場合、方法はステップ３８６に進む。ステップ３８６で、再生スレッドは、ストリームの終端に遭遇し、デジタルコンテンツファイルは正常な終わりまで再生されたかどうかを決定する。ステップ３８６で、ストリームの終端に遭遇していない場合、方法はステップ３８８に進み、終了信号は、図３Ｃのバッファリングスレッドに送信される。次いで、方法は、ステップ３９６で終了し、再生ストリームは、図３Ａのコンテンツプレーヤ管理スレッドにストリームステータスの非終端を戻す。しかし、ステップ３８６で、ストリームの終端に遭遇した場合、方法はステップ３９８で終了し、再生ストリームは、図３Ａのコンテンツプレーヤ管理スレッドに、ストリームステータスの終端を戻す。
【００５３】
[0058]本発明の一実施形態は、コンテンツプレーヤ１１０内に存在する少なくとも１つのコンピュータ可読記憶媒体に格納されるプログラム製品として実装することができる。こうした実施形態では、コンテンツプレーヤ１１０は、セットトップボックスなどの組み込みコンピュータプラットフォームを備え、格納されたプログラム製品は、図３Ａ〜３Ｄの方法をコンテンツプレーヤ１１０によって実施できるようにする。代替実施形態では、プログラム製品は、コンピュータデバイス内のメモリにダウンロードすることができる。例えば、ダウンロードされたプログラム製品は、インターネットウェブサイト内に組み込まれた実行可能な命令でもよい。こうした実施形態では、コンテンツプレーヤ１１０は、コンピュータデバイスを備え、ダウンロードされたプログラム製品は、図３Ａ〜３Ｄの方法をコンテンツプレーヤ１１０によって実施できるようにする。
【００５４】
[0059]要するに、コンテンツプレーヤ１１０上でデジタルコンテンツファイルを再生するための技術が開示される。この技術は、要求されたデジタルコンテンツファイルと関連したコンテンツ配布ネットワーク（ＣＤＮ）１４０のリストを受信するステップと、コンテンツ配布ネットワークのうちの１つを選択するステップと、コンテンツバッファ２４５にデジタルコンテンツファイルをダウンロードするステップと、コンテンツバッファ２４５からデジタルコンテンツファイルを再生するステップとを伴う。ＣＤＮ１４０を選択するプロセスは、ＣＤＮリスト２４０をソートされたＣＤＮリストにソートするステップと、少なくとも１つのＣＤＮ１４０について帯域幅をテストするステップとを伴う。ソートされたＣＤＮリスト内のＣＤＮ１４０が最高のビットレートストリームに適した帯域幅を提供することができる場合、ＣＤＮ１４０が選択される。最高のビットレートストリームを提供することができるＣＤＮ１４０が見つからない場合、ＣＤＮ１４０は、重み×帯域幅の積に基づいて選択される。
【００５５】
[0060]開示されたシステム及び方法の１つの利点は、通信ネットワーク１５０内のいくつかの障害、及びいくつかの他のＣＤＮ１４０の障害にもかかわらず、コンテンツ配布システム１００内の各コンテンツプレーヤ１１０が信頼できるコンテンツの再生を容易にすることができることである。コンテンツプレーヤ１１０は、ひどい故障状態で再生を再確立し、部分最適のシステム全体の状態でデジタルコンテンツファイルをダウンロードするための良好なＣＤＮを有益に選択することができる。これに対して、通信ネットワーク障害及びコンテンツサーバ障害を受けるとき、従来のソリューションでは破局的な再生障害を経験する傾向にある。他の利点は、正常な動作状態がコンテンツ配布システム全体にわたって存在するときでさえ、本発明は最適なＣＤＮの選択を可能にすることである。
【００５６】
[0061]上記は本発明の実施形態を対象とするが、本発明の他の及びさらなる実施形態は、その基本的な範囲を逸脱しない範囲で考案され得る。例えば、本発明の態様は、ハードウェア若しくはソフトウェア、又はハードウェア及びソフトウェアの組み合わせに実装することができる。本発明の一実施形態を、コンピュータシステム用のプログラム製品として実装することができる。プログラム製品のプログラム（複数可）は、（本明細書に記載した方法を含む）実施形態の機能を定義し、様々なコンピュータ可読記憶媒体上に含めることができる。コンピュータ可読記憶媒体例には、それだけには限定されないが、（ｉ）情報が永久に格納される書き込み不可の記憶媒体（例えば、ＣＤ−ＲＯＭドライブによって読み込み可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意のタイプの固体不揮発性半導体メモリなど、コンピュータ内の読み取り専用記憶装置）、（ｉｉ）変更可能な情報が格納される書き込み可能な記憶媒体（例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意のタイプの固体ランダムアクセス半導体メモリ）が含まれる。本発明の機能を指示するコンピュータ可読命令を含む、こうしたコンピュータ可読記憶媒体は本発明の実施形態である。
【００５７】
[0062]上記を鑑み、本発明の範囲は、以下の特許請求の範囲によって決定される。
【図１】
0005298331.tif 000003
【図２】
0005298331.tif 000004
【図３Ａ】
0005298331.tif 000005
【図３Ｂ】
0005298331.tif 000006
【図３Ｃ】
0005298331.tif 000007
【図３Ｄ】
0005298331.tif 000008