(57)【要約】  本発明の一実施形態は、コンテンツサーバ及びコンテンツプレーヤを備えるコンテンツ配布システムにおいて使用可能な配布帯域幅に再生ビットレートを適応させるための技術を記載する。コンテンツプレーヤは、現在使用可能な帯域幅を想定して、所与のタイトルについて、所与の再生ビットレートが完全な再生をうまく提供することができるかどうかを周期的に推定する。現在使用可能な帯域幅を想定して、再生が現在のビットレートで実行不可能になる場合、コンテンツプレーヤは、実行可能なビットレートが達成されるまで、ビットレートを下方に適応させる。より高いビットレートを使用して再生が実行可能である場合、コンテンツプレーヤは、ビットレートを上方に適応させることができる。【選択図】  図５
2013500635.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するための方法であって、
デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、
第１の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第１の単位のデジタルコンテンツと関連したダウンロード時間を推定するステップであり、前記第１の単位のデジタルコンテンツの前記サイズが、前記第１の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第１のコード化済みシーケンスによって決まる、ステップと、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算するステップと、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと
を含む方法。
【請求項２】
前記第１の単位のデジタルコンテンツが前記第１のコード化済みシーケンスから前記コンテンツバッファにダウンロードされることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するステップをさらに含む請求項１に記載の方法。
【請求項３】
ダウンロード時間を推定する前記ステップと、再生することと関連した時間を計算する前記ステップと、前記計算された時間がゼロ以下であるかどうかを決定する前記ステップと、ダウンロードが実行可能であるか実行不可能であるかを示す前記ステップとが、第２の単位のデジタルコンテンツについて繰り返され、前記第２の単位のデジタルコンテンツが、前記第１のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項２に記載の方法。
【請求項４】
前記第１の単位のデジタルコンテンツが、動画又はテレビ番組と関連したビデオデータを備える請求項１に記載の方法。
【請求項５】
前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算する前記ステップが、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内のビデオバッファに格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内の音声バッファに格納されたすべての音声データを再生することと関連した時間を計算するステップと
を含む請求項４に記載の方法。
【請求項６】
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定する前記ステップが、
前記ビデオバッファ内に格納されたすべてのビデオデータを再生することと関連した前記計算された時間が、ビデオバッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記音声バッファ内に格納されたすべての音声データを再生することと関連した前記計算された時間が、音声バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと
を含む請求項５に記載の方法。
【請求項７】
示す前記ステップが、
ビデオバッファアンダーランも音声バッファアンダーランも生じない場合、前記第１のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行可能であることを示すステップ、又は
ビデオバッファアンダーラン又は音声バッファアンダーランのいずれかが生じる場合、前記第１のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行不可能であることを示すステップ
を含む請求項６に記載の方法。
【請求項８】
１単位の音声データのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記１単位の音声データと関連したダウンロード時間を推定するステップと、
前記１単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべての音声データを再生することと関連した時間を計算するステップと、
前記１単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記コンテンツバッファ内に格納された前記音声データのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記コンテンツバッファ内に格納された前記ビデオデータのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記１単位の音声データをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記１単位の音声データをダウンロードすることが実行不可能であることを示すステップと
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項９】
前記コンテンツバッファが、ビデオデータを格納するためのビデオバッファのための音声バッファと、音声データを格納するための音声バッファとを含み、前記音声バッファに格納された前記音声データのすべてを再生することと関連した前記時間がゼロ以下、又は前記ビデオバッファに格納された前記ビデオデータのすべてを再生することと関連した前記時間がゼロ以下である場合、バッファアンダーランが生じる請求項８に記載の方法。
【請求項１０】
処理ユニットによって実行されると、
デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、
第１の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第１の単位のデジタルコンテンツと関連したダウンロード時間を推定するステップであり、前記第１の単位のデジタルコンテンツの前記サイズが、前記第１の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第１のコード化済みシーケンスによって決まる、ステップと、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算するステップと、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと
を実行することによって、コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを前記処理ユニットに決定させる命令を格納するコンピュータ可読媒体。
【請求項１１】
前記第１の単位のデジタルコンテンツが前記第１のコード化済みシーケンスから前記コンテンツバッファにダウンロードされていることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するステップをさらに含む請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
ダウンロード時間を推定する前記ステップと、再生することと関連した時間を計算する前記ステップと、前記計算された時間がゼロ以下であるかどうかを決定する前記ステップと、ダウンロードが実行可能であるか実行不可能であるかを示す前記ステップとが、第２の単位のデジタルコンテンツについて繰り返され、前記第２の単位のデジタルコンテンツが、前記第１のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記第１の単位のデジタルコンテンツが、動画又はテレビ番組と関連したビデオデータを備える請求項１０に記載のコンピュータ可読媒体。
【請求項１４】
前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算する前記ステップが、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内のビデオバッファに格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内の音声バッファに格納されたすべての音声データを再生することと関連した時間を計算するステップと
を含む請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定する前記ステップが、
前記ビデオバッファ内に格納されたすべてのビデオデータを再生することと関連した前記計算された時間が、ビデオバッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記音声バッファ内に格納されたすべての音声データを再生することと関連した前記計算された時間が、音声バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと
を含む請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
示す前記ステップが、
ビデオバッファアンダーランも音声バッファアンダーランも生じない場合、前記第１のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行可能であることを示すステップ、又は
ビデオバッファアンダーラン又は音声バッファアンダーランのいずれかが生じる場合、前記第１のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行不可能であることを示すステップ
を含む請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
１単位の音声データのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記１単位の音声データと関連したダウンロード時間を推定するステップと、
前記１単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべての音声データを再生することと関連した時間を計算するステップと、
前記１単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記コンテンツバッファ内に格納された前記音声データのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記コンテンツバッファ内に格納された前記ビデオデータのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記１単位の音声データをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記１単位の音声データをダウンロードすることが実行不可能であることを示すステップと
をさらに備える請求項１３に記載のコンピュータ可読媒体。
【請求項１８】
前記コンテンツバッファが、ビデオデータを格納するためのビデオバッファのための音声バッファと、音声データを格納するための音声バッファとを含み、前記音声バッファに格納された前記音声データのすべてを再生することと関連した前記時間がゼロ以下、又は前記ビデオバッファに格納された前記ビデオデータのすべてを再生することと関連した前記時間がゼロ以下である場合、バッファアンダーランが生じる請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するように構成されたコンテンツプレーヤデバイスであって、
ダウンロードされたデジタルコンテンツを格納するための前記コンテンツバッファを含むメモリと、
デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定し、
第１の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第１の単位のデジタルコンテンツと関連したダウンロード時間を推定し、前記第１の単位のデジタルコンテンツの前記サイズが、前記第１の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第１のコード化済みシーケンスによって決まり、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算し、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定し、
バッファアンダーランが生じない場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示す、又は
バッファアンダーランが生じる場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示す
ように構成された、前記メモリに結合された処理ユニットと
を備えるコンテンツプレーヤデバイス。
【請求項２０】
前記処理ユニットが、前記第１の単位のデジタルコンテンツが前記第１のコード化済みシーケンスから前記コンテンツバッファにダウンロードされていることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するようにさらに構成された請求項１９に記載のコンテンツプレーヤデバイス。
【請求項２１】
前記処理ユニットが、第２の単位のデジタルコンテンツについて、ダウンロード時間を推定し、再生することと関連した時間を計算し、前記計算された時間がゼロ以下であるかどうかを決定し、ダウンロードが実行可能であるか実行不可能であるかを示し、前記第２の単位のデジタルコンテンツが、前記第１のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項２０に記載のコンテンツプレーヤデバイス。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本出願は、参照により本明細書に組み込まれている２００９年７月２４日出願の米国特許出願第１２／５０９，３６５号の利益を主張する。
【発明の背景】
【０００２】
【発明の分野】
【０００３】
[0002]本発明の実施形態は、一般にデジタルメディアに関し、より詳細には、デジタルコンテンツの配布のための適応型ストリーミング（ａｄａｐｔｉｖｅ  ｓｔｒｅａｍｉｎｇ）に関する。
【関連技術の説明】
【０００４】
[0003]デジタルコンテンツ配布システムは、従来、コンテンツサーバ、コンテンツプレーヤ、及びコンテンツサーバをコンテンツプレーヤに接続する通信ネットワークを含む。コンテンツサーバは、コンテンツサーバからコンテンツプレーヤにダウンロードすることができるデジタルコンテンツファイルを格納するように構成される。各デジタルコンテンツファイルは、例えば、ユーザに親しまれている「風と共に去りぬ」など、特定の識別タイトルに対応する。デジタルコンテンツファイルは、通常、再生年代順に従って編成された一連のコンテンツデータを含んでおり、音声データ、ビデオデータ、又はその組み合わせを備え得る。
【０００５】
[0004]コンテンツプレーヤは、再生するためのタイトルを選択するユーザ要求に応答して、デジタルコンテンツファイルをダウンロードし、再生するように構成される。デジタルコンテンツファイルを再生するプロセスは、音声データ及びビデオデータを、スピーカサブシステム及びビデオサブシステムを有するディスプレイシステムを駆動することができる音声信号及びビデオ信号にデコードし、レンダリングすることを含む。再生は通常、当分野で「ストリーミング」として知られている技術を伴い、それによって、コンテンツサーバは、デジタルコンテンツファイルをコンテンツプレーヤに順次送信し、デジタルコンテンツファイルを備えるコンテンツデータが受信される間に、コンテンツプレーヤがデジタルコンテンツファイルを再生する。通信ネットワーク内での可変の待ち時間及び帯域幅を考慮に入れるために、コンテンツバッファは、コンテンツデータが実際に再生される前に、入って来るコンテンツデータを待ち行列に入れる。使用可能な帯域幅をより低減させるネットワーク輻輳の間、コンテンツデータはコンテンツバッファにあまり追加されず、ある再生ビットレートでの再生をサポートするために、コンテンツデータが待ち行列から取り出されるにつれて、コンテンツバッファは空になり得る。しかし、ネットワーク帯域幅が高い間、コンテンツバッファが再度概ねいっぱいになるまで、コンテンツバッファは補充され、追加のバッファ時間が追加される。実用的なシステムにおいて、コンテンツバッファは、数秒から１分以上にわたるタイムスパンに対応するコンテンツデータを待ち行列に入れることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0005]コンテンツサーバに格納された各デジタルコンテンツファイルは、通常、特定の再生ビットレートのためにコード化されている。再生を開始する前に、コンテンツプレーヤは、コンテンツサーバから使用可能な帯域幅を測定することができ、測定された使用可能な帯域幅によってサポートすることができるビットレートを有するデジタルコンテンツファイルを選択することができる。再生品質を最大にするために、従来、最高ビットレートが測定された帯域幅を超えないデジタルコンテンツファイルが選択される。通信ネットワークがビットレート要件を満たしながら選択されたデジタルコンテンツファイルをダウンロードするのに十分な帯域幅を提供することができる範囲で、再生は申し分なく進行する。しかし、実際には、通信ネットワークにおいて使用可能な帯域幅は、通信ネットワークに接続された異なるデバイスが独立したタスクを実行するにつれて絶えず変化している。通信ネットワークにおいて使用可能な帯域幅がかなり長い期間の間再生ビットレート要件を満たすのに必要なレベルを下回る場合、コンテンツバッファは、完全に空になり、その結果、当分野でバッファアンダーランとして知られている状態になる。バッファアンダーランが生じる場合、再生は、きわめて信頼できなくなり、又はまったく停止し、全体的な再生品質をかなり低減させる可能性がある。従来の通信ネットワーク上でのトラフィックが予測不可能な傾向にあるので、輻輳及び帯域幅の低減がよく起こり、従来のストリーミング再生システムに負の影響を与える。
【０００７】
[0006]ストリーミング再生システムにおけるバッファアンダーランの可能性を低減するための１つの技術は、再生のために控えめに低いビットレートを選択することである。しかし、この際、より高品質の経験が可能であった場合でも、ユーザは、結局低品質の再生経験で終わる。バッファアンダーランの可能性を低減するための別の技術は、再生を開始する前に全体的なデジタルコンテンツファイルの比較的大きい部分をプリバッファリングすることである。しかし、この技術は必然的に、再生が始まり得る前に、ユーザが比較的長い時間待つ必要があり、したがって、全体的な再生経験を低下させる。
【０００８】
[0007]上記が示すように、当分野では、従来の手法より高品質の再生経験を提供するコンテンツプレーヤにデジタルコンテンツファイルをダウンロードするための手法が必要である。
【０００９】
[0008]本発明の一実施形態は、コンテンツサーバからコンテンツプレーヤにデジタルコンテンツのファイルを適応的にダウンロードするための方法を記載する。この方法は、コンテンツプレーヤ内のコンテンツバッファに、ファイル内に含まれる第１のコード化済みシーケンスから少なくとも１単位のデジタルコンテンツをダウンロードするステップであり、ファイルが複数のコード化済みシーケンスを含み、各コード化済みシーケンスが、再生のためにコンテンツバッファに格納されたデジタルコンテンツにアクセスすることができる異なるビットレートに対応し、第１のコード化済みシーケンスが、再生のためにコンテンツバッファに格納されたデジタルコンテンツにアクセスすることができる最低のビットレートに対応する、ステップと、デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、次の単位のデジタルコンテンツをダウンロードするための複数のコード化済みシーケンスに含まれる次のコード化済みシーケンスを決定するステップと、次の単位のデジタルコンテンツを、再生のために、次のコード化済みシーケンスからコンテンツバッファにダウンロードするステップとを含む。
【００１０】
[0009]開示された方法の１つの利点は、再生ビットレート及び使用可能なダウンロード帯域幅に基づく可能なバッファアンダーランが追跡され、バッファアンダーラン状態を回避しながら、複数単位のデジタルコンテンツが可能な限り最高の画質でダウンロードされることである。
【００１１】
[0010]他の実施形態は、それだけには限定されないが、処理ユニットが開示された方法の１つ又は複数の態様を実施することができる命令を含むコンピュータ可読媒体、及び開示された方法の１つ又は複数の態様を実施するように構成されたシステムを含む。
【図面の簡単な説明】
【００１２】
[0011]本発明の上記の特徴を詳しく理解することができるように、実施形態を参照して上記で簡単に要約した本発明のより特定の説明を行い、その一部が添付の図面に図示される。しかし、添付の図面は本発明の代表的な実施形態のみを示しており、したがって、本発明は、他の等しく有効な実施形態を認めることができるため、その範囲を制限するものと見なされないことに留意されたい。
【００１３】
【図１】[0012]  本発明の１つ又は複数の態様を実施するように構成されたコンテンツ配布システムを示す図である。
【図２】[0013]  本発明の一実施形態による図１のコンテンツプレーヤのより詳細な図である。
【図３】[0014]  本発明の一実施形態による図１のコンテンツサーバのより詳細な図である。
【図４Ａ】[0015]  本発明の一実施形態による図１のシーケンスヘッダインデックスのより詳細な図である。
【図４Ｂ】[0016]  本発明の一実施形態による、ある評価ポイントで、２つの異なるビットレートにおいて実行されるバッファ予測アルゴリズムの結果を示すグラフである。
【図４Ｃ】[0017]  本発明の一実施形態による、デジタルコンテンツファイルと関連したデジタルコンテンツのバッファリング及び再生のデータフローを示す図である。
【図５】[0018]  本発明の一実施形態による、再生のためにコンテンツデータをコンテンツバッファに適応的にバッファリングするための方法ステップのフロー図である。
【図６】[0019]  本発明の一実施形態による、再生のためにバッファリングすべきコード化済みシーケンスを変更するための方法ステップのフロー図である。
【図７Ａ】[0020]  本発明の一実施形態による、現在のビットレートで再生を完了する実行可能性を予測するための方法ステップのフロー図である。
【図７Ｂ】[0021]  本発明の一実施形態による、図７Ａにおける変数を初期化するステップを実行するための方法ステップのフロー図である。
【図７Ｃ】[0022]  本発明の一実施形態による、図７Ａにおけるコンテンツバッファ状態を推定するステップを実行するための方法ステップのフロー図である。
【図７Ｄ】[0023]  本発明の一実施形態による、図７Ａにおけるコンテンツバッファ状態を推定するステップを実行するための方法ステップのフロー図である。
【詳細な説明】
【００１４】
[0024]以下の説明では、本発明をより完全に理解できるように、多数の特定の詳細について記載する。しかし、本発明をこれらの特定の詳細のうちの１つ又は複数なしに実施することができることは、当業者にとって明らかである。他の例では、本発明をわかりにくくすることを避けるために、周知の特徴については記載していない。
【００１５】
[0025]図１は、本発明の１つ又は複数の態様を実施するように構成されたコンテンツ配布システム１００を示す。示すように、コンテンツ配布システム１００は、それだけには限定されないが、コンテンツプレーヤ１１０、１つ又は複数のコンテンツサーバ１３０、及び通信ネットワーク１５０を含む。コンテンツ配布システム１００は、コンテンツディレクトリサーバ１２０も含み得る。一実施形態において、１つ又は複数のコンテンツサーバ１３０は、コンテンツ配布ネットワーク（ＣＤＮ）１４０を備える。
【００１６】
[0026]通信ネットワーク１５０は、コンテンツプレーヤ１１０と１つ又は複数のコンテンツサーバ１３０との間のデータ通信を容易にするように構成された、ルータやスイッチなど複数のネットワーク通信システムを含む。周知のインターネット通信ネットワークを配置する際に実施される技術を含めて、通信システム１５０を構築するための技術的に実行可能な多くの技術があることを当業者であれば認識されよう。
【００１７】
[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]ステップ５３０で、ビデオインデックスがデジタルコンテンツファイル１３２のビデオデータの単位の合計数未満である場合、すなわち、デジタルコンテンツファイル１３２のビデオデータのすべての単位が再生されたわけではない場合、方法はステップ５４０に進む。ステップ５４０で、再生アプリケーション２３６は、図６でより詳細に説明したように、バッファアンダーラン予測に基づいて、次の複数単位のビデオデータをバッファリングするための次のコード化済みシーケンスを決定する。次のコード化済みシーケンスは、より高いビットレートのコード化済みシーケンス、より低いビットレートのコード化済みシーケンス、又は現在のコード化済みシーケンスと同じコード化済みシーケンスでもよい。ステップ５４２で、再生アプリケーション２３６は、決定された次のコード化済みシーケンスに基づいて、１単位のビデオデータをダウンロードし、コンテンツバッファ１１２内のビデオバッファ２４６にその単位のビデオデータをバッファリングする。
【００５３】
[0063]ステップ５３０に戻って、ビデオインデックスが現在再生されているデジタルコンテンツファイル１３２のビデオデータの単位の合計数以上であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６はビデオデータの単位をそれ以上必要とせず、方法はステップ５９０で終了する。
【００５４】
[0064]ステップ５２２に戻って、音声バッファ２４４内に残っている時間がビデオバッファ２４６内に残っている時間未満であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は再生のためにより多くの単位の音声データを必要し、方法はステップ５５０に進む。ステップ５５０で、再生アプリケーション２３６は、現在再生している音声データの単位についての一連のタイムスロットに対応する音声インデックス（ＡｕｄｉｏＩｎｄｅｘ）が、現在再生されているデジタルコンテンツファイル１３２の音声データ（ＡｕｄｉｏＵｎｉｔｓ）の単位の合計数未満かどうかを決定する。
【００５５】
[0065]ステップ５５０で、音声インデックスが現在再生されているデジタルコンテンツファイル１３２の音声データの単位の合計数未満であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は別の単位の音声データを必要し、方法はステップ５５２に進む。ステップ５５２で、再生アプリケーション２３６は、１単位の音声データをダウンロードし、コンテンツバッファ１１２内の音声バッファ２４４にその単位の音声データをバッファリングする。
【００５６】
[0066]しかし、ステップ５５０で、音声インデックスが現在再生されているデジタルコンテンツファイル１３２の音声データの単位の合計数以上であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は音声データの単位をそれ以上必要とせず、方法はステップ５９０で終了する。
【００５７】
[0067]図６は、本発明の一実施形態による、再生のためにバッファリングすべき次のコード化済みシーケンスを決定するための方法ステップ６００のフロー図である。方法ステップは図１、図２、及び図３のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ６００は、図５のステップ５４０をより詳細に記載し、一実施形態において、再生アプリケーション２３６によって実行される。
【００５８】
[0068]方法は、ステップ６１０で開始し、再生アプリケーション２３６は、バッファアンダーランなしに完了まで現在のコード化済みシーケンスを再生する実行可能性を予測する。図４Ｂ及び図７Ａとの関連で記載されている技術など、任意の技術的に実行可能な技術を使用して実行可能性の決定を実施することができることを当業者であれば理解されよう。
【００５９】
[0069]ステップ６２０で、現在のビットレートに対応する現在のコード化済みシーケンスが実行可能でないと再生アプリケーション２３６が決定すると、方法はステップ６３０に進む。ステップ６３０で、再生アプリケーション２３６が最低のビットレートのコード化済みシーケンスではないコード化済みシーケンスを現在再生している場合、方法はステップ６３２に進み、再生アプリケーション２３６は、現在のビットレートより低いビットレートに対応するコード化済みシーケンスをコード化済みシーケンス候補として選択する。ステップ６３４で、再生アプリケーション２３６はコード化済みシーケンス候補を再生する実行可能性を予測し、この場合もまた、このステップは、図７Ａにより詳細に記載されている。ステップ６４０で、コード化済みシーケンス候補が実行可能であると再生アプリケーション２３６が決定した場合、方法はステップ６９０で終了し、コード化済みシーケンス候補は、次のコード化済みシーケンスとして戻される。
【００６０】
[0070]ステップ６３０に戻って、再生アプリケーション２３６が最低のビットレートに対応するコード化済みシーケンスを表すコード化済みシーケンスを現在再生している場合、方法はステップ６９０で終了し、現在の（最低の）コード化済みシーケンスが次のコード化済みシーケンスとして戻される。
【００６１】
[0071]ステップ６２０に戻って、現在のコード化済みシーケンスが実行可能であると再生アプリケーション２３６が決定した場合、方法はステップ６５０に進む。ステップ６５０で、再生アプリケーション２３６が最高のビットレートのコード化済みシーケンスではないコード化済みシーケンスを現在再生している場合、方法はステップ６５２に進む。ステップ６５２で、再生アプリケーション２３６は、現在のビットレートより高いビットレートに対応するコード化済みシーケンスの実行可能性を予測する。この場合もまた、実行可能性を予測することは、図７Ａにより詳細に記載されている。
【００６２】
[0072]ステップ６６０で、より高いビットレートに対応するコード化済みシーケンスが実行可能であると再生アプリケーション２３６が決定した場合、方法はステップ６６２に進む。ステップ６６２で、再生アプリケーション２３６は、より高いビットレートのコード化済みシーケンスが次のコード化済みシーケンスとして戻されるように選択する。しかし、ステップ６６０で、より高いビットレートに対応するコード化済みシーケンスが実行可能でないと再生アプリケーション２３６が決定した場合、方法はステップ６９０で終了し、現在のコード化済みシーケンスが次のコード化済みシーケンスとして戻される。
【００６３】
[0073]ステップ６５０に戻って、再生アプリケーション２３６が最高のビットレートに対応するコード化済みシーケンスを表すコード化済みシーケンスを現在再生している場合、方法はステップ６９０で終了し、現在の（最高の）コード化済みシーケンスが次のコード化済みシーケンスとして戻される。
【００６４】
[0074]図７Ａは、本発明の一実施形態による、現在のビットレートで再生を完了する実行可能性を予測するための方法ステップ７００のフロー図である。方法ステップは図１、図２、及び図３のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ７００は、図６のステップ６１０、６３４、及び６５２をより詳細に記載し、一実施形態において、再生アプリケーション２３６によって実行される。
【００６５】
[0075]方法は、ステップ７１０で開始し、再生アプリケーション２３６は、ＡｕｄｉｏＩｎｄｅｘ、ＶｉｄｅｏＩｎｄｅｘ、ＡｕｄｉｏＢｕｆｆｅｒ、及びＶｉｄｅｏＢｕｆｆｅｒを含む１組の変数を初期化する。ＡｕｄｉｏＩｎｄｅｘは、特定のタイムスロットに対応する１単位の音声データを選択するために使用されるインデックスを表す。ＶｉｄｅｏＩｎｄｅｘは、特定のタイムスロットに対応する１単位のビデオデータを選択するために使用されるインデックスを表す。ＡｕｄｉｏＢｕｆｆｅｒは、音声バッファ２４４に現在格納されているバッファに入れられた再生時間量を表す。ＶｉｄｅｏＢｕｆｆｅｒは、ビデオバッファ２４６に現在格納されているバッファに入れられた再生時間量を表す。ＡｕｄｉｏＩｎｄｅｘは、現在の音声のコード化済みシーケンスの現在の再生状態を表す現在のＡｕｄｉｏＩｎｄｅｘに初期化される。ＶｉｄｅｏＩｎｄｅｘは、現在のビデオのコード化済みシーケンスの現在の再生状態を表す現在のＶｉｄｅｏＩｎｄｅｘに初期化される。ＡｕｄｉｏＢｕｆｆｅｒは、現在のＡｕｄｉｏＢｕｆｆｅｒ再生値に初期化される。ＶｉｄｅｏＢｕｆｆｅｒは、現在のＶｉｄｅｏＢｕｆｆｅｒ再生値に初期化される。
【００６６】
[0076]ステップ７１２で、ＡｕｄｉｏＢｕｆｆｅｒがＶｉｄｅｏＢｕｆｆｅｒ以上であると再生アプリケーション２３６が決定した場合、音声バッファより少ない再生時間がビデオバッファで使用可能であり、方法はステップ７１４に進んで、別の単位のビデオデータをダウンロードする影響を推定し始める。ステップ７１４で、ＶｉｄｅｏＩｎｄｅｘが現在のコード化済みシーケンスのビデオデータの単位の合計数を表すＶｉｄｅｏＵｎｉｔｓ未満であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は、別の単位のビデオデータをダウンロードする必要があり、方法はステップ７２０に進む。ステップ７２０で、コンテンツバッファ１１２の現在の状態、及び主だった帯域幅の可用性が与えられると、別の単位のビデオデータがコンテンツサーバ１３０からダウンロードされる場合、再生アプリケーション２３６は、コンテンツバッファ１１２の結果として得られた状態を推定する。利点値も期間として計算、測定され、これは、１単位のビデオデータのダウンロードが実行される場合、ビデオバッファ２４６に追加することができる。利点値は、追加の単位のビデオデータをダウンロードすることと関連した追加の再生時間を表す。ステップ７２０は、図７Ｃにより詳細に記載されている。
【００６７】
[0077]ステップ７２２で、ＶｉｄｅｏＢｕｆｆｅｒがゼロ以上である場合、ビデオバッファ２４６におけるバッファアンダーランは、現在予想されておらず、方法はステップ７２４に進む。ステップ７２４で、ＡｕｄｉｏＢｕｆｆｅｒがゼロ以上である場合、音声バッファ２４４におけるバッファアンダーランは、現在予想されておらず、方法はステップ７２６に進む。ステップ７２６で、利点値は、１単位のビデオデータのダウンロードを考慮に入れるために、ＶｉｄｅｏＢｕｆｆｅｒ変数に追加される。ステップ７２８で、ＶｉｄｅｏＩｎｄｅｘは、ビデオデータの単位のダウンロードを考慮に入れるために増分される。次のダウンロードは、ＶｉｄｅｏＩｎｄｅｘの増分された値に対応する１単位のビデオデータについてのものである。
【００６８】
[0078]ステップ７２４に戻って、ＡｕｄｉｏＢｕｆｆｅｒがゼロ以下であると再生アプリケーション２３６が決定した場合、音声バッファ２４４におけるバッファアンダーランが予想され、方法はステップ７４０で終了し、戻り値は「実行不可能」である。
【００６９】
[0079]ステップ７２２に戻って、ＶｉｄｅｏＢｕｆｆｅｒがゼロ以下であると再生アプリケーション２３６が決定した場合、ビデオバッファ２４６におけるバッファアンダーランが予想され、方法はステップ７４０で終了し、戻り値は「実行不可能」である。
【００７０】
[0080]ステップ７１４に戻って、ＶｉｄｅｏＩｎｄｅｘが現在のコード化済みシーケンスのビデオデータの単位の合計数を表すＶｉｄｅｏＵｎｉｔｓ以上であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は、別の単位のビデオデータをダウンロードする必要はなく、バッファアンダーランは検出されていない。この時点で、ビデオ及び音声のコード化済みシーケンスのダウンロードを、バッファアンダーランなしで実行することができるとアプリケーション２３６が決定しており、方法はステップ７４２で終了し、戻り値は「実行可能」である。
【００７１】
[0081]ステップ７１２に戻って、ＡｕｄｉｏＢｕｆｆｅｒがＶｉｄｅｏＢｕｆｆｅｒ未満であると再生アプリケーション２３６が決定した場合、ビデオバッファより少ない再生時間が音声バッファで使用可能であり、方法はステップ７１６に進んで、別の単位の音声データをダウンロードする影響を推定し始める。ステップ７１６で、ＡｕｄｉｏＩｎｄｅｘが現在のコード化済みシーケンスの音声データの単位の合計数を表すＡｕｄｉｏＵｎｉｔｓ未満であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は、別の単位の音声データをダウンロードする必要があり、方法はステップ７３０に進む。ステップ７３０で、コンテンツバッファ１１２の現在の状態、及び主だった帯域幅の可用性が与えられると、別の単位の音声データがコンテンツサーバ１３０からダウンロードされる場合、再生アプリケーション２３６は、コンテンツバッファ１１２の結果として得られた状態を推定する。利点値も期間として計算、測定され、これは、１単位の音声データのダウンロードが実行される場合、音声バッファ２４４に追加することができる。ステップ７３０は、図７Ｄにより詳細に記載されている。
【００７２】
[0082]ステップ７３２で、ＶｉｄｅｏＢｕｆｆｅｒがゼロ以上である場合、ビデオバッファ２４６におけるバッファアンダーランは、現在予想されておらず、方法はステップ７３４に進む。ステップ７３４で、ＡｕｄｉｏＢｕｆｆｅｒがゼロ以上である場合、音声バッファ２４４におけるバッファアンダーランは、現在予想されておらず、方法はステップ７３６に進む。ステップ７３６で、利点値は、１単位の音声データのダウンロードを考慮に入れるために、ＡｕｄｉｏＢｕｆｆｅｒ変数に追加される。ステップ７３８で、ＡｕｄｉｏＩｎｄｅｘは、音声データの単位のダウンロードを考慮に入れるために増分される。次のダウンロードは、ＡｕｄｉｏＩｎｄｅｘの増分された値に対応する１単位の音声データについてのものである。
【００７３】
[0083]ステップ７３４に戻って、ＡｕｄｉｏＢｕｆｆｅｒがゼロ以下であると再生アプリケーション２３６が決定した場合、音声バッファ２４４におけるバッファアンダーランが予想され、方法はステップ７４０で終了し、戻り値は「実行不可能」である。
【００７４】
[0084]ステップ７３２に戻って、ＶｉｄｅｏＢｕｆｆｅｒがゼロ以下であると再生アプリケーション２３６が決定した場合、ビデオバッファ２４６におけるバッファアンダーランが予想され、方法はステップ７４０で終了し、戻り値は「実行不可能」である。
【００７５】
[0085]ステップ７１６に戻って、ＡｕｄｉｏＩｎｄｅｘが現在のコード化済みシーケンスの音声データの単位の合計数を表すＡｕｄｉｏＵｎｉｔｓ以上であると再生アプリケーション２３６が決定した場合、再生アプリケーション２３６は、別の単位の音声データをダウンロードする必要はなく、バッファアンダーランは検出されていない。この時点で、ビデオ及び音声のコード化済みシーケンスのダウンロードを、バッファアンダーランなしで実行することができるとアプリケーション２３６が決定しており、方法はステップ７４２で終了し、戻り値は「実行可能」である。
【００７６】
[0086]図７Ｂは、本発明の一実施形態による、図７Ａにおける変数を初期化するステップ７１０を実行するための方法ステップ７０１のフロー図である。方法ステップは図１、図２、及び図３のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ７０１は、図７Ａのステップ７１０をより詳細に記載し、一実施形態において、再生アプリケーション２３６によって実行される。
【００７７】
[0087]方法は、ステップ７５０で開始し、ＡｕｄｉｏＩｎｄｅｘは、現在の音声のコード化済みシーケンスの現在の再生状態を表す現在のＡｕｄｉｏＩｎｄｅｘに初期化される。ステップ７５２で、ＶｉｄｅｏＩｎｄｅｘは、現在のビデオのコード化済みシーケンスの現在の再生状態を表す現在のＶｉｄｅｏＩｎｄｅｘに初期化される。ステップ７５４で、ＡｕｄｉｏＢｕｆｆｅｒは、現在のＡｕｄｉｏＢｕｆｆｅｒ再生値に初期化される。方法は、ステップ７５６で終了し、ＶｉｄｅｏＢｕｆｆｅｒは、現在のＶｉｄｅｏＢｕｆｆｅｒ再生値に初期化される。
【００７８】
[0088]図７Ｃは、本発明の一実施形態による、図７Ａにおけるコンテンツバッファ１１２の状態を推定するステップを実行するための方法ステップ７０２のフロー図である。方法ステップは図１、図２、及び図３のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ７０２は、図７Ａのステップ７２０をより詳細に記載し、一実施形態において、再生アプリケーション２３６によって実行される。
【００７９】
[0089]方法は、ステップ７６０で開始し、再生アプリケーション２３６は、次の１単位のビデオデータのダウンロード時間を推定する。異なる再生ビットレートにコード化されたコード化済みシーケンスと関連しており、要求されたタイトルと関連した異なるデジタルコンテンツファイル１３２に含まれるビデオビットレートプロフィール４５２は、次の単位のビデオデータのサイズを調べるために、ＶｉｄｅｏＩｎｄｅｘを使用してインデックスが付けられる。次の単位のビデオデータのサイズは、現在の帯域幅の可用性と直接連動して、推定ダウンロード時間を決定する。ステップ７６２で、再生アプリケーション２３６は、ＶｉｄｅｏＢｕｆｆｅｒの現在の値からダウンロード時間を減算することによって、ＶｉｄｅｏＢｕｆｆｅｒの値を計算する。この新しい値は、ダウンロード時間中のビデオバッファ２４６からのデータの推定された再生消費を表す。同様に、ステップ７６４で、再生アプリケーション２３６は、ＡｕｄｉｏＢｕｆｆｅｒの現在の値からダウンロード時間を減算することによって、ＡｕｄｉｏＢｕｆｆｅｒの値を計算する。
【００８０】
[0090]図７Ｄは、本発明の一実施形態による、図７Ａにおけるコンテンツバッファ１１２の状態を推定するステップを実行するための方法ステップ７０３のフロー図である。方法ステップは図１、図２、及び図３のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ７０３は、図７Ａのステップ７３０をより詳細に記載し、一実施形態において、再生アプリケーション２３６によって実行される。
【００８１】
[0091]方法は、ステップ７７０で開始し、再生アプリケーション２３６は、次の１単位の音声データのダウンロード時間を推定する。次の単位の音声データのサイズは、現在の帯域幅の可用性と直接連動して、推定ダウンロード時間を決定する。ステップ７７２で、再生アプリケーション２３６は、ＶｉｄｅｏＢｕｆｆｅｒの現在の値からダウンロード時間を減算することによって、ＶｉｄｅｏＢｕｆｆｅｒの値を計算する。この新しい値は、ダウンロード時間中のビデオバッファ２４６からのデータの推定された再生消費を表す。同様に、ステップ７７４で、再生アプリケーション２３６は、ＡｕｄｉｏＢｕｆｆｅｒの現在の値からダウンロード時間を減算することによって、ＡｕｄｉｏＢｕｆｆｅｒの値を計算する。
【００８２】
[0092]本発明の一実施形態は、コンテンツプレーヤ１１０内のコンピュータ可読記憶媒体に格納されるプログラム製品として実装することができる。この実施形態では、コンテンツプレーヤ１１０は、セットトップボックスなどの組み込みコンピュータプラットフォームを備える。本発明の代替実施形態は、インターネットウェブサイト内に組み込まれた実行可能命令など、コンピュータシステム内のメモリにダウンロードされるプログラム製品として実装することができる。この実施形態では、コンテンツプレーヤ１１０は、コンピュータシステムを備える。
【００８３】
[0093]要するに、コンテンツプレーヤ１１０上でデジタルコンテンツファイルを再生するための技術が開示される。この技術は、現在使用可能な帯域幅が与えられると、特定のデジタルコンテンツファイルを特定のビットレートでうまく再生することができるかどうかを推定するステップと、主だった帯域幅状態を考慮に入れるためにビットレートを適応させるステップとを伴う。実行可能性を推定するステップは、実質的に、再生の完了に間に合うように、現在の再生位置からビデオ及び音声データの残りの単位のダウンロードをシミュレーションすることを伴う。実行可能性は、周期的に再評価され、必要に応じて、ビットレートは実行可能なビットレートまで下げられる。しかし、実行可能である場合、表示品質を増加させるために、ビットレートが増加する。
【００８４】
[0094]開示された技術の１つの利点は、再生ビットレート及び使用可能なダウンロード帯域幅に基づく可能なバッファアンダーランが追跡され、バッファアンダーラン状態を回避しながら、複数単位のデジタルコンテンツが可能な限り最高の画質でダウンロードされることである。さらに、再生の始まりと関連した遅延時間は、比較的低いビットレートで再生を開始し、可能な場合はいつでも、より高い再生ビットレートに適応させることによって減らされる。
【００８５】
[0095]上記は本発明の実施形態を対象とするが、本発明の他の及びさらなる実施形態は、その基本的な範囲を逸脱しない範囲で考案され得る。例えば、本発明の態様は、ハードウェア若しくはソフトウェア、又はハードウェアとソフトウェアとの組み合わせに実装することができる。本発明の一実施形態を、コンピュータシステム用のプログラム製品として実装することができる。プログラム製品のプログラム（複数可）は、（本明細書に記載した方法を含む）実施形態の機能を定義し、様々なコンピュータ可読記憶媒体上に含めることができる。コンピュータ可読記憶媒体例には、それだけには限定されないが、（ｉ）情報が永久に格納される書き込み不可の記憶媒体（例えば、ＣＤ−ＲＯＭドライブによって読み込み可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意のタイプの固体不揮発性半導体メモリなど、コンピュータ内の読み取り専用記憶装置）、及び（ｉｉ）変更可能な情報が格納される書き込み可能な記憶媒体（例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意のタイプの固体ランダムアクセス半導体メモリ）を含む。本発明の機能を指示するコンピュータ可読命令を含むとき、こうしたコンピュータ可読記憶媒体は本発明の実施形態である。
【００８６】
[0096]上記を鑑み、本発明の範囲は、以下の特許請求の範囲によって決定される。
【図１】
2013500635.tif 000003
【図２】
2013500635.tif 000004
【図３】
2013500635.tif 000005
【図４Ａ】
2013500635.tif 000006
【図４Ｂ】
2013500635.tif 000007
2013500635.tif 000008
【図４Ｃ】
2013500635.tif 000009
【図５】
2013500635.tif 000010
【図６】
2013500635.tif 000011
【図７Ａ】
2013500635.tif 000012
【図７Ｂ】
2013500635.tif 000013
【図７Ｃ】
2013500635.tif 000014
【図７Ｄ】
2013500635.tif 000015
【手続補正書】
【提出日】平成24年3月19日(2012.3.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するための方法であって、
デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、
第１の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第１の単位のデジタルコンテンツと関連したダウンロード時間を推定するステップであり、前記第１の単位のデジタルコンテンツの前記サイズが、前記第１の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第１のコード化済みシーケンスによって決まる、ステップと、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算するステップと、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと
を含む方法。
【請求項２】
前記第１の単位のデジタルコンテンツが前記第１のコード化済みシーケンスから前記コンテンツバッファにダウンロードされることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するステップをさらに含む請求項１に記載の方法。
【請求項３】
ダウンロード時間を推定する前記ステップと、再生することと関連した時間を計算する前記ステップと、前記計算された時間がゼロ以下であるかどうかを決定する前記ステップと、ダウンロードが実行可能であるか実行不可能であるかを示す前記ステップとが、第２の単位のデジタルコンテンツについて繰り返され、前記第２の単位のデジタルコンテンツが、前記第１のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項２に記載の方法。
【請求項４】
前記第１の単位のデジタルコンテンツが、動画又はテレビ番組と関連したビデオデータを備える請求項１に記載の方法。
【請求項５】
前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算する前記ステップが、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内のビデオバッファに格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内の音声バッファに格納されたすべての音声データを再生することと関連した時間を計算するステップと
を含む請求項４に記載の方法。
【請求項６】
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定する前記ステップが、
前記ビデオバッファ内に格納されたすべてのビデオデータを再生することと関連した前記計算された時間が、ビデオバッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記音声バッファ内に格納されたすべての音声データを再生することと関連した前記計算された時間が、音声バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと
を含む請求項５に記載の方法。
【請求項７】
示す前記ステップが、
ビデオバッファアンダーランも音声バッファアンダーランも生じない場合、前記第１のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行可能であることを示すステップ、又は
ビデオバッファアンダーラン又は音声バッファアンダーランのいずれかが生じる場合、前記第１のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行不可能であることを示すステップ
を含む請求項６に記載の方法。
【請求項８】
１単位の音声データのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記１単位の音声データと関連したダウンロード時間を推定するステップと、
前記１単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべての音声データを再生することと関連した時間を計算するステップと、
前記１単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記コンテンツバッファ内に格納された前記音声データのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記コンテンツバッファ内に格納された前記ビデオデータのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記１単位の音声データをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記１単位の音声データをダウンロードすることが実行不可能であることを示すステップと
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項９】
前記コンテンツバッファが、ビデオデータを格納するためのビデオバッファのための音声バッファと、音声データを格納するための音声バッファとを含み、前記音声バッファに格納された前記音声データのすべてを再生することと関連した前記時間がゼロ以下、又は前記ビデオバッファに格納された前記ビデオデータのすべてを再生することと関連した前記時間がゼロ以下である場合、バッファアンダーランが生じる請求項８に記載の方法。
【請求項１０】
処理ユニットによって実行されると、
デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、
第１の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第１の単位のデジタルコンテンツと関連したダウンロード時間を推定するステップであり、前記第１の単位のデジタルコンテンツの前記サイズが、前記第１の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第１のコード化済みシーケンスによって決まる、ステップと、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算するステップと、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと
を実行することによって、コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを前記処理ユニットに決定させる命令を格納するコンピュータ可読媒体。
【請求項１１】
前記第１の単位のデジタルコンテンツが前記第１のコード化済みシーケンスから前記コンテンツバッファにダウンロードされていることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するステップをさらに含む請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
ダウンロード時間を推定する前記ステップと、再生することと関連した時間を計算する前記ステップと、前記計算された時間がゼロ以下であるかどうかを決定する前記ステップと、ダウンロードが実行可能であるか実行不可能であるかを示す前記ステップとが、第２の単位のデジタルコンテンツについて繰り返され、前記第２の単位のデジタルコンテンツが、前記第１のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するように構成されたコンテンツプレーヤデバイスであって、
ダウンロードされたデジタルコンテンツを格納するための前記コンテンツバッファを含むメモリと、
デジタルコンテンツのファイルの中の１単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定し、
第１の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第１の単位のデジタルコンテンツと関連したダウンロード時間を推定し、前記第１の単位のデジタルコンテンツの前記サイズが、前記第１の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第１のコード化済みシーケンスによって決まり、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算し、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定し、
バッファアンダーランが生じない場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示す、又は
バッファアンダーランが生じる場合、前記第１のコード化済みシーケンスから前記第１の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示す
ように構成された、前記メモリに結合された処理ユニットと
を備えるコンテンツプレーヤデバイス。
【請求項１４】
前記処理ユニットが、前記第１の単位のデジタルコンテンツが前記第１のコード化済みシーケンスから前記コンテンツバッファにダウンロードされていることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するようにさらに構成された請求項１３に記載のコンテンツプレーヤデバイス。
【請求項１５】
前記処理ユニットが、第２の単位のデジタルコンテンツについて、ダウンロード時間を推定し、再生することと関連した時間を計算し、前記計算された時間がゼロ以下であるかどうかを決定し、ダウンロードが実行可能であるか実行不可能であるかを示し、前記第２の単位のデジタルコンテンツが、前記第１のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項１４に記載のコンテンツプレーヤデバイス。
【国際調査報告】
2013500635.tif 000016