(57)【要約】【課題】マルチメディアのパイプライン機構の提供。【解決手段】メディア・デバイスが、メディア・コンテンツを効率的に受信し、格納し、再生し、かつストリーム配信することを可能にするメディア・コンテンツ・パイプライン機構が、記載されている。一般に、本願明細書／図面に記載されているメディア・コンテンツ・パイプラインは、一つ以上の入力ソースからメディア・コンテンツ・ストリームを受信し、メディア・コンテンツ・ストリームを固定サイズまたは可変サイズのデータ・バッファにセグメント化しかつ格納し、バッファに格納されたデータを暗号化し、更なる処理のために暗号化されたデータをインメモリ・バッファ・キャッシュに格納するように構成されている。【選択図】図２Ａ
2018182771.tif 000002
【特許請求の範囲】
【請求項１】
メディア・デバイスが、複数のメディア・コンテンツ・データ・ストリームを受信することと、
前記複数のメディア・コンテンツ・データ・ストリームのうちの特定のメディア・コンテンツ・ストリームの少なくとも一部を一つ以上のインメモリ・バッファに格納することと、
前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を暗号化することと、
クライアント・デバイスから、前記特定のメディア・コンテンツ・ストリームに対するリクエストを受信することであって、前記リクエストは、前記特定のメディア・コンテンツ・ストリーム内の位置を示している、ことと、
前記特定のメディア・コンテンツ・ストリーム内の前記位置が前記暗号化された一つ以上のインメモリ・バッファのうちの暗号化された特定のバッファに対応するという決定に応答して、前記暗号化された特定のバッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を前記クライアント・デバイスに送信することと
を含む方法。
【請求項２】
前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を暗号化した後に、前記暗号化された一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を二次ストレージ・デバイスに格納することをさらに含む、請求項１に記載の方法。
【請求項３】
前記特定のメディア・コンテンツ・ストリームのうちの暗号化されていない部分を少なくとも格納する一つ以上のインメモリ・バッファが既に暗号化制限に達しているという決定に応答して、前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの暗号化される少なくとも一部が暗号化され、前記暗号化制限は、制限時間、または、前記特定のメディア・コンテンツ・ストリームのうちの暗号化されていない部分を少なくとも格納するインメモリ・バッファの数に基づく、請求項１または請求項２に記載の方法。
【請求項４】
書込み制限に達しているという決定に応答して、前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部が二次ストレージ・デバイスに格納され、前記書込み制限は、制限時間および前記特定のメディア・コンテンツ・ストリームのうちの暗号化されていない部分を少なくとも格納するインメモリ・バッファの数のうちの一つ以上である、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記特定のメディア・コンテンツ・ストリーム内の前記位置は、バッファ・オーダ番号およびタイム・スタンプのうちの一つ以上によって示される、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記暗号化された一つ以上のインメモリ・バッファは、均一のサイズである、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記暗号化された一つ以上のインメモリ・バッファのうちの少なくとも一つのバッファは、非メディア・コンテンツ・データでパディングされている、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
コンピュータ読み取り可能な命令を備えるコンピュータ・プログラムであって、前記命令は、一つ以上のプロセッサのそれぞれによって実行されると、請求項１〜７のいずれか一項に記載の方法を前記一つ以上のプロセッサに行わせる、コンピュータ・プログラム。
【請求項９】
メディア・デバイスが複数のメディア・コンテンツ・データ・ストリームを受信するための手段と、
前記複数のメディア・コンテンツ・データ・ストリームのうちの特定のメディア・コンテンツ・ストリームの少なくとも一部を一つ以上のインメモリ・バッファに格納するための手段と、
前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を暗号化するための手段と、
クライアント・デバイスから、前記特定のメディア・コンテンツ・ストリームに対するリクエストを受信するための手段であって、前記リクエストは、前記特定のメディア・コンテンツ・ストリーム内の位置を示している、手段と、
前記特定のメディア・コンテンツ・ストリーム内の前記位置が前記暗号化された一つ以上のインメモリ・バッファのうちの暗号化された特定のバッファに対応するという決定に応答して、前記暗号化された特定のバッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を前記クライアント・デバイスに送信するための手段と
を備えるシステム。
【請求項１０】
前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を暗号化した後に、前記暗号化された一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部を二次ストレージ・デバイスに格納するための手段をさらに備える、請求項９に記載のシステム。
【請求項１１】
前記特定のメディア・コンテンツ・ストリームのうちの暗号化されていない部分を少なくとも格納する一つ以上のインメモリ・バッファが既に暗号化制限に達しているという決定に応答して、前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの暗号化される少なくとも一部が暗号化され、前記暗号化制限は、制限時間および前記特定のメディア・コンテンツ・ストリームのうちの暗号化されていない部分を少なくとも格納するインメモリ・バッファの数のうちの一つ以上である、請求項９または請求項１０に記載のシステム。
【請求項１２】
書込み制限に達しているという決定に応答して、前記一つ以上のインメモリ・バッファに格納されている前記特定のメディア・コンテンツ・ストリームの前記少なくとも一部が二次ストレージ・デバイスに格納され、前記書込み制限は、制限時間および前記特定のメディア・コンテンツ・ストリームのうちの暗号化されていない部分を少なくとも格納するインメモリ・バッファの数のうちの一つ以上である、請求項９〜１１のいずれか一項に記載のシステム。
【請求項１３】
前記特定のメディア・コンテンツ・ストリーム内の前記位置は、バッファ・オーダ番号およびタイム・スタンプのうちの一つ以上によって示される、請求項９〜１２のいずれか一項に記載のシステム。
【請求項１４】
前記暗号化された一つ以上のインメモリ・バッファは、均一のサイズである、請求項９〜１３のいずれか一項に記載のシステム。
【請求項１５】
前記暗号化された一つ以上のインメモリ・バッファのうちの少なくとも一つのバッファは、非メディア・コンテンツ・データでパディングされている、請求項９〜１４のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施態様は、一般にメディア・デバイスによってメディア・コンテンツを処理することに関する。
【背景技術】
【０００２】
このセクションに記載されているアプローチは、追求することができたアプローチではあるが、必ずしも以前に着想されたまたは追求されたアプローチとは限らない。従って、特に明記しない限り、このセクションに記載されているアプローチの何れも、単にこのセクションに含まれていることのみで従来技術であるとみなすべきではない。
【０００３】
デジタル・ビデオ・レコーダ（DVR）、セット・トップ・ボックス（STB）、携帯メディア・デバイス等のようなメディア・デバイスは、無線放送、衛星放送、ケーブル・チャネル等から様々な形のメディア・コンテンツを受信し、かつユーザが、メディア・コンテンツを再生し、記録し、またメディア・コンテンツと対話することを可能にする。いくつかの構成では、「ホスト」メディア・デバイスは、一つ以上のコンテンツ・ソースからコンテンツを受信し、かつコンテンツを一つ以上の「クライアント」メディア・デバイスに配信するように、構成することができる。例えば、ホスト・メディア・デバイスを、ユーザのリビングルームにあるDVRとすることができ、かつクライアント・メディア・デバイスは、ユーザの家またはどこか他の場所の他の領域に配置されている他のDVR、メディア・サーバ、モバイル・デバイス等を含むことができる。
【０００４】
現在のメディア・コンテンツ・ストリーム配信システムは、通常、コンテンツ・ソースからストリーム配信可能なメディア・コンテンツを受信し、このメディア・コンテンツをローカル・ハードディスクまたは他の二次ストレージ・デバイスに保存し、そしてこのメディア・コンテンツをストレージ・デバイスから一つ以上のクライアント・デバイスにストリーム配信させるホスト・メディア・デバイスを含む。メディア・コンテンツは、これらのシステムの二次ストレージ・デバイスからクライアント・デバイスに配信されるので、ホスト・メディア・デバイスがメディア・コンテンツ・ストリームを二次ストレージ・デバイスに書込む時間が短ければ短いほど、コンテンツはクライアント・デバイスへのストリーム配信に対しより早く使用可能となる。したがって、ホスト・メディア・デバイスがメディア・コンテンツを受信しかつディスクに格納するためにかかる時間の遅れは、ユーザが、ホスト・メディア・デバイスからクライアント・デバイスにストリーム配信されるメディア・コンテンツについて、満足しない体験をする結果をもたらすことになる。
本発明は、例えば、以下を提供する。
（項目１）
メディア・デバイスが、複数のメディア・コンテンツ・データ・ストリームを受信するステップと、
前記複数のメディア・コンテンツ・データ・ストリームの少なくとも一部の特定のメディア・コンテンツ・ストリームを一つ以上のインメモリ・バッファに格納するステップと、
クライアント・デバイスから、前記特定のメディア・コンテンツ・ストリームに対するリクエストを受信するステップであって、前記リクエストが前記特定のメディア・コンテンツ・ストリーム内の位置を示している、ステップと、
前記特定のメディア・コンテンツ・ストリーム内の前記位置が、前記一つ以上のインメモリ・データ・バッファの特定のバッファに対応すると決定することに応答して、前記特定のバッファを前記クライアント・デバイスに送信するステップと
を備える方法。
（項目２）
前記一つ以上のインメモリ・バッファを暗号化することを更に備える、項目１に記載の方法。
（項目３）
前記一つ以上のインメモリ・バッファを暗号化した後に、前記一つ以上のインメモリ・バッファを二次ストレージ・デバイスに格納することを更に備える、項目２に記載の方法。
（項目４）
一つ以上の暗号化されていないインメモリ・バッファが既に暗号化制限に達しているとの決定に応答して、前記インメモリ・バッファが暗号化され、前記暗号化制限が、時間制限および現在格納されている暗号化されていないインメモリ・バッファの数の一つ以上である、項目２に記載の方法。
（項目５）
書込み制限に達しているとの決定に応答して、前記一つ以上のインメモリ・バッファが前記二次ストレージ・デバイスに格納される方法であって、前記書込み制限が、時間制限および現在格納されているインメモリ・データ・バッファの数の一つ以上である、項目３に記載の方法。
（項目６）
前記一つ以上のインメモリ・バッファを暗号化せずに、前記一つ以上の前記インメモリ・バッファを二次ストレージ・デバイスに格納することを更に備える、項目１に記載の方法。
（項目７）
前記特定のメディア・コンテンツ・ストリーム内の前記位置が、バッファ・オーダ番号およびタイム・スタンプの一つ以上により示される、項目１に記載の方法。
（項目８）
前記一つ以上のインメモリ・バッファが、均一サイズである、項目１に記載の方法。
（項目９）
前記一つ以上のインメモリ・バッファの少なくとも一つのバッファが、非メディア・コンテンツ・データによりパディングされている、項目１に記載の方法。
（項目１０）
方法を実行するデバイスによって実施可能である命令のプログラムを格納する非一時的コンピュータ可読媒体であって、
前記方法が、以下のステップ、
メディア・デバイスが、複数のメディア・コンテンツ・データ・ストリームを受信するステップ、
前記複数のメディア・コンテンツ・データ・ストリームの少なくとも一部の特定のメディア・コンテンツ・ストリームを一つ以上のインメモリ・バッファに格納するステップ、
クライアント・デバイスから、前記特定のメディア・コンテンツ・ストリームに対するリクエストを受信するステップであって、前記リクエストが前記特定のメディア・コンテンツ・ストリーム内の位置を示している、ステップ、
前記特定のメディア・コンテンツ・ストリーム内の前記位置が、前記一つ以上のインメモリ・データ・バッファの特定のバッファに対応すると決定することに応答して、前記特定のバッファを前記クライアント・デバイスに送信するステップ
を備える非一時的コンピュータ可読媒体。
（項目１１）
前記一つ以上のインメモリ・バッファを暗号化することを更に備える、項目１０に記載の非一時的コンピュータ可読媒体。
（項目１２）
前記一つ以上のインメモリ・バッファを暗号化した後に、前記一つ以上のインメモリ・バッファを二次ストレージ・デバイスに格納することを更に備える、項目１１に記載の非一時的コンピュータ可読媒体。
（項目１３）
一つ以上の暗号化されていないインメモリ・バッファが既に暗号化制限に達しているとの決定に応答して、前記インメモリ・バッファが、暗号化され、前記暗号化制限が、時間制限および現在格納されている暗号化されていないインメモリ・バッファの数の一つ以上である、項目１１に記載の非一時的コンピュータ可読媒体。
（項目１４）
書込み制限に達しているとの決定に応答して、前記一つ以上のインメモリ・バッファが前記二次ストレージ・デバイスに格納される方法であって、前記書込み制限が、時間制限および現在格納されているインメモリ・データ・バッファの数の一つ以上である、項目１０に記載の非一時的コンピュータ可読媒体。
（項目１５）
前記一つ以上のインメモリ・バッファを暗号化せずに、前記一つ以上の前記インメモリ・バッファを二次ストレージ・デバイスに格納することを更に備える、項目１０に記載の非一時的コンピュータ可読媒体。
（項目１６）
前記特定のメディア・コンテンツ・ストリーム内の前記位置が、バッファ・オーダ番号およびタイム・スタンプの一つ以上により示される、項目１０に記載の非一時的コンピュータ可読媒体。
（項目１７）
前記一つ以上のインメモリ・バッファが、均一サイズである、項目１０に記載の非一時的コンピュータ可読媒体。
（項目１８）
前記一つ以上のインメモリ・バッファの少なくとも一つのバッファが、非メディア・コンテンツ・データによりパディングされている、項目１０に記載の非一時的コンピュータ可読媒体。
（項目１９）
複数のメディア・コンテンツ・データ・ストリームを受信する、少なくとも一部はハードウェアにより実装されるサブシステムと、
前記複数のメディア・コンテンツ・データ・ストリームの少なくとも一部の特定のメディア・コンテンツ・ストリームを一つ以上のインメモリ・バッファに格納する、少なくとも一部はハードウェアにより実装されるサブシステムと、
クライアント・デバイスから、前記特定のメディア・コンテンツ・ストリームに対するリクエストを受信する、少なくとも一部はハードウェアにより実装されるサブシステムであって、前記リクエストが前記特定のメディア・コンテンツ・ストリーム内の位置を示している、サブシステムと、
前記特定のメディア・コンテンツ・ストリーム内の前記位置が、前記一つ以上のインメモリ・データ・バッファの特定のバッファに対応すると決定することに応答して、前記特定のバッファを前記クライアント・デバイスに送信する、少なくとも一部はハードウェアにより実装されるサブシステムと
を備える装置。
（項目２０）
前記一つ以上のインメモリ・バッファを暗号化することを更に備える、項目１９に記載の装置。
（項目２１）
前記一つ以上のインメモリ・バッファを暗号化した後に、前記一つ以上のインメモリ・バッファを二次ストレージ・デバイスに格納することを更に備える、項目２０に記載の装置。
（項目２２）
一つ以上の暗号化されていないインメモリ・バッファが既に暗号化制限に達しているとの決定に応答して、前記インメモリ・バッファが、暗号化される方法であって、前記暗号化制限が、時間制限および現在格納されている暗号化されていないインメモリ・バッファの数の一つ以上である、項目２０に記載の装置。
（項目２３）
前記一つ以上のインメモリ・バッファを暗号化せずに、前記一つ以上の前記インメモリ・バッファを二次ストレージ・デバイスに格納することを更に備える、項目１９に記載の装置。
（項目２４）
書込み制限に達しているとの決定に応答して、前記一つ以上のインメモリ・バッファが前記二次ストレージ・デバイスに格納される方法であって、前記書込み制限が、時間制限および現在格納されているインメモリ・データ・バッファの数の一つ以上である、項目１９に記載の装置。
（項目２５）
前記特定のメディア・コンテンツ・ストリーム内の前記位置が、バッファ・オーダ番号およびタイム・スタンプの一つ以上により示される、項目１９に記載の装置。
（項目２６）
前記一つ以上のインメモリ・バッファが、均一サイズである、項目１９に記載の装置。
（項目２７）
前記一つ以上のインメモリ・バッファの少なくとも一つのバッファが、非メディア・コンテンツ・データによりパディングされている、項目１９に記載の装置。
【０００５】
本発明は、具体例として、かつ限定するためではなく、添付の図面の図（これらの図面においては同様な参照番号は同様な要素を参照する）により、図示されている。
【図面の簡単な説明】
【０００６】
【図１】一つ以上の実施態様に従って、メディア・デバイスによりメディア・コンテンツを処理する一例のシステムを例示するブロック図である。
【図２Ａ】一つ以上の実施態様に従う、一例のメディア・デバイスを例示するブロック図である。
【図２Ｂ】一つ以上の実施態様に従う、一例のストリーム配信メディア・デバイスを例示するブロック図である。
【図３】一つ以上の実施態様に従う、一例のメディア・コンテンツ・パイプラインを例示するブロック図である。
【図４】一つ以上の実施態様に従って、メディア・コンテンツ・パイプラインを使用してメディア・コンテンツを処理する一例の手順フローを例示する。
【図５】一つ以上の実施態様に従って、メディア・コンテンツを一つ以上のクライアント・デバイスにストリーム配信するための一例の手順フローを例示する。
【図６】本発明の実施態様を実施することができるコンピュータ・システムのブロック図である。
【発明を実施するための形態】
【０００７】
以下の説明では、説明する目的で、多数の具体的な詳細が、現在の本発明の完全な理解を提供するために記載される。しかしながら、本発明がこれらの具体的な詳細なしに実施することができることは、明らかであろう。他の例では、本発明を不必要に不明瞭にするのを避けるために、周知の構造及び装置はブロック図で示してある。
【０００８】
本願明細書／図面には、実施態様は、以下の概略に従って記載されている。
１．０．一般の概要
２．０．構造の概要
３．０. メディア・デバイスの具体例
４．０. メディア・コンテンツ・パイプライン機構の具体例
５．０．実施具体例
５．１．メディア・コンテンツの処理
５．２．メディア・デバイスでのメディア・コンテンツの再生
５．３．メディア・コンテンツ・ストリーム配信
６．０．実施メカニズム−ハードウェアの概要
７．０. 拡張および代替
【０００９】
１．０  一般の概要
メディア・デバイスによってメディア・コンテンツを処理するためのアプローチ、技術およびメカニズムが、開示されている。各種実施態様により、メディア・デバイスが、メディア・コンテンツを効率的に受信し、格納し、再生しかつストリーム配信することを可能にするメディア・コンテンツ・パイプライン機構が、記載されている。一般に、本願明細書／図面に記載されているメディア・コンテンツ・パイプラインは、一つ以上の入力ソースからメディア・コンテンツ・ストリームを受信し、メディア・コンテンツ・ストリームを固定サイズまたは可変サイズのデータ・バッファにセグメント化しかつ格納し、バッファに格納されているデータを暗号化し、そして暗号化されたデータを更なる処理のためにインメモリ・バッファ・キャッシュに格納するように、構成されている。メディア・コンテンツ・パイプラインは、更に、一つ以上の定義された操作条件の発生に応答して、インメモリ・バッファ・キャッシュに保存されている暗号化されたバッファを二次ストレージ・デバイス（例えば、ハードディスク）に書込むように、構成することができる。
【００１０】
本願明細書／図面に記載されているアプローチによれば、メディア・コンテンツ・パイプラインは、ホスト・メディア・デバイスによって受信されたメディア・コンテンツを他のクライアント・メディア・デバイスにストリーム配信させるホスト・メディア・デバイスの能力を改善するように、構成されている。いくつかの実施においては、ホスト・メディア・デバイスがメディア・コンテンツをクライアント・デバイスにストリーム配信する前に、ホスト・デバイスは、メディア・コンテンツが受信されると同時に、メディア・コンテンツを受信し、処理し、かつ二次ストレージ・デバイスに格納する。メディア・コンテンツは、次で、二次ストレージ・デバイスから読み込まれ、そしてリクエストしているクライアント・デバイスに送られる。したがって、メディア・コンテンツをクライアント・デバイスに速やかにストリーム配信するホスト・メディア・デバイスの能力を改善するための一つのオプションは、ホスト・メディア・デバイスが、着信メディア・コンテンツ・ストリームの部分をより頻繁にメディア・デバイスのローカル・ストレージに書込むことである。例えば、着信メディア・コンテンツ・ストリームの部分がローカル・ストレージに書込まれる頻度を増加させることによって、メディア・コンテンツ・ストリームのそれらの部分をクライアント・デバイスにより早くストリーム配信することができる。しかしながら、メディア・コンテンツ・ストリームの部分をストレージに書込むことは、ストレージ・デバイスへの各書込み操作および物理的ウェアを完了させる時間の点で、相対的に高価な操作である。さらにまた、ホスト・メディア・デバイスは、いくつかのメディア・コンテンツ・ストリームを同時に受信することができるので、メディア・コンテンツ・ストリームの部分をストレージ・デバイスに書込む頻度が増加することは、書込み操作の総回数を、時間の経過とともに劇的に増加させることになる。
【００１１】
クライアント・デバイスによる再生のために、ホスト・デバイスによりメディア・コンテンツを他のクライアント・デバイスにストリーム配信するための方法およびコンピュータ装置が、開示されている。一般に、本願明細書／図面に記載されているメディア・コンテンツ・パイプライン機構は、着信メディア・コンテンツを効率的に処理しかつ管理して、二次ストレージへの書込み操作の頻度を下げると共に、コンテンツ・ストリームを速やかにストリーム配信することを可能とする。一実施態様によれば、メディア・デバイスは、複数のメディア・コンテンツ・データ・ストリームを受信する。複数のメディア・コンテンツ・データ・ストリームの少なくとも一部の特定のメディア・コンテンツ・ストリームは、一つ以上のインメモリ・バッファに格納されそして一つ以上のインメモリ・バッファは暗号化される。クライアント・デバイスから、特定のメディア・コンテンツ・ストリームに対する、特定のメディア・コンテンツ・ストリーム内の位置を示すリクエストが受信される。メディア・コンテンツ・ストリーム内の位置が一つ以上のインメモリ・データ・バッファの内の特定のバッファに対応するとの決定に応答して、この特定のバッファが、クライアント・デバイスに送信される。メディア・デバイスが、暗号化されたインメモリ・バッファのキャッシュのメディア・コンテンツ・ストリームの部分を管理することを可能にし、かつクライアント・デバイスからのリクエストをストリーム配信することに応答して、キャッシュからバッファを提供することを可能とすることによって、バッファを二次ストレージに書込む頻度を、減らすことができる。
【００１２】
一実施態様では、一つ以上のインメモリ・バッファの暗号化に続いて、この一つ以上のインメモリ・バッファは、二次ストレージ・デバイスに格納される。
【００１３】
一実施態様では、インメモリ・バッファは、一つ以上の暗号化されていないインメモリ・バッファが既に暗号化制限に達しているとの決定に応答して暗号化され、ここで暗号化制限は、時間制限および現在格納されている暗号化されていないインメモリ・バッファの数の一つ以上である。
【００１４】
一実施態様では、書込み制限に達しているとの決定に応答して、一つ以上のインメモリ・バッファが、二次ストレージ・デバイスに保存され、ここで書込み満了制限は、時間制限および現在格納されている暗号化されたインメモリ・データ・バッファの数の一つ以上である。
【００１５】
一実施態様では、特定のメディア・コンテンツ・ストリーム内の位置は、タイム・スタンプまたはバッファ・オーダ番号によって示される。
【００１６】
一実施態様では、一つ以上のインメモリ・バッファは、均一サイズである。
【００１７】
一実施態様では、一つ以上のインメモリ・バッファの少なくとも一つのバッファは、非メディア・コンテンツ・データによりパディングされている。
【００１８】
他の実施態様では、本発明は、前述のステップを実行するように構成されているコンピュータ装置およびコンピュータ可読媒体を含む。
【００１９】
２．０  構造の概要
図１は、本願明細書／図面に記載されている技術を、一実施態様により実行することができるシステム100の多様なアスペクトの一例の説明図である。システム100は、一つ以上のコンピューティング・デバイスを備える。一つ以上のこれらのコンピューティング・デバイスは、本願明細書／図面に記載されている各種ロジック・コンポーネントを実装するように構成されているハードウェアおよびソフトウェアの任意の組合せを備える。例えば、一つ以上のコンピューティング・デバイスは、本願明細書／図面に記載されている各種コンポーネントを実装する命令を格納している一つ以上のメモリ、一つ以上のメモリに格納されている命令を実行するように構成されている一つ以上のハードウェア・プロセッサ、そして各種コンポーネントによって利用されかつ操作されるデータ構造を格納するための一つ以上のメモリ内の各種データ・リポジトリを含むことができる。特有のシステムが記載されているが、他の実施態様も、本願明細書／図面に記載されている機能を実行するために用いることができる任意のシステムに適用可能である。
【００２０】
一実施態様では、システム100は、一つ以上のメディア・デバイス（例えば、メディア・デバイス102）、一つ以上のクライアント・デバイス（例えば、クライアント・デバイス104）、一つ以上のコンテンツ・ソース（例えば、コンテンツ・ソース106）および一つ以上のサービス・プロバイダ（例えば、サービス・プロバイダ108）を含む。システム100のコンポーネントは、一つ以上のネットワーク（例えば、ネットワーク110A、110B）を介して接続させることができる。ネットワーク110A、110Bは、システム100のコンポーネント間にデータの交換を提供する任意のメディアまたはメカニズムによって、実装させることができる。ネットワーク110A、110Bの具体例は、これらに限定されるものではないが、ローカル・エリア・ネットワーク（LAN）、ワイド・エリア・ネットワーク（WAN）、無線ネットワーク、インターネット、イントラネット、エクストラネット等のようなネットワークを含む。システム100内の任意の数のデバイスは、有線または無線通信セグメントにより相互に直接接続することができる。
【００２１】
一実施態様では、メディア・デバイス102は、通常、ケーブル信号、地上波信号、デジタル・ネットワーク・ベースのデータ等から、テレビ番組、映画、ビデオ・オン・デマンド（VOD）コンテンツ等を受信することが可能な任意のタイプのコンピューティング・デバイスとすることができる。メディア・デバイス102の具体例は、これらに限定されるものではないが、デジタル・ビデオ・レコーダ（DVR）、メディア・サーバ、セット・トップ・ボックス、デジタル・メディア受信機等を含む。
【００２２】
メディア・デバイス102は、通常、種々のコンテンツ・ソース106からメディア・コンテンツを受信するように構成されている一つ以上のチューナを含むことができる。チューナは、これらに限定されるものでは無いが、メディア・デバイス102がコンテンツ・ソース106からメディア・コンテンツを（例えば、オンデマンドで、事前に等で）受信し、配給し、同調し、割当て、使用すること等ができる、ビデオ・チューナ、音声チューナ、視聴覚チューナ、ケーブル・カード（CableCARD）、システム・リソース・ユニット、システム・コンポーネント、信号処理ユニット等の何れかとすることができる。例えば、一つのコンテンツ・ソース106は、生のテレビジョン配信を含むことができる。他の具体例のコンテンツ・ソース106は、ビデオ・オン・デマンド（VOD）のライブラリ、サード・パーティのコンテンツ・プロバイダ（例えば、Netflix（登録商標）またはAmazonPrime（登録商標））およびウェブに基づくメディア・コンテンツを含むが、これらに限定されるものではない。
【００２３】
一実施態様では、クライアント・デバイス104は、通常、メディア・コンテンツを再生することが可能な任意のデバイスを表す。クライアント・デバイス104の具体例は、これらに限定されるものでは無いが、デジタル・ビデオ・レコーダ（DVR）、タブレット型コンピュータ、ハンド・ヘルド・デバイス（例えば、携帯電話等）、ラップトップ、電子書籍端末、個人用コンピューティング・デバイス、ゲーム・デバイス等を含む。一般に、クライアント・デバイス104は、公衆インターネットのような、一つ以上のデジタル・ネットワーク110によりメディア・コンテンツを受信することが可能である、（TV-チューナ入力を含んでいても含んでいなくても良い）任意のタイプのコンピューティング・デバイスとすることができる。ユーザは、典型的には、ユーザの家および他の場所にわたる種々の位置に配置することができるいくつかのメディア・デバイス102およびクライアント・デバイス104を所有することができる。
【００２４】
いくつかの実施態様において、メディア・デバイス102およびの複数のクライアント・デバイス104は、家のような建物内の多数の部屋に配置し、かつ一つ以上のローカル・エリア・ネットワーク（LAN）（例えば、ネットワーク110B）に接続することができる。例えば、一つのメディア・デバイス102を、ユーザのリビングルームに配置し、かつクライアント・デバイス104を、ユーザの家の他の部屋に配置することができる。一つの具体例では、クライアント・デバイス104を、メディア・デバイス102からメディア・コンテンツを一つ以上のネットワーク110Bによりストリーム配信させ、かつストリーム配信されたメディア・コンテンツをクライアント・デバイス104に接続されている出力デバイス（例えば、TV）で再生するように構成されているチューナの無いストリーム配信デバイスとすることができる。メディア・デバイス102は、一つ以上のメディア・コンテンツ・ソース106からクライアント・デバイス104にストリーム配信されるメディア・コンテンツを受信することができる。
【００２５】
一実施態様では、メディア・デバイス102は、クライアント・デバイス104が、一つ以上のネットワーク110Bによりメディア・コンテンツにアクセスすることを可能にする一つ以上のストリーム配信プロトコルをサポートすることができる。ストリーム配信プロトコルの具体例は、これらに限定されるものでは無いが、TiVoMulti-Room Streaming（MRS）、HTTP Live Streaming（HLS）、他の規格または専用ストリーム配信プロトコル等を含む。
【００２６】
一実施態様では、メディア・デバイス102およびクライアント・デバイス104は、一つ以上のネットワーク110A、110Bを介して、一つ以上のサービス・プロバイダ108と通信することができる。サービス・プロバイダ108は、通常、番組ガイド・データのような情報、（フォント、画像等のような）グラフィック・リソース、サービス情報、ソフトウェア、広告、およびメディア・デバイス102および／またはクライアント・デバイス104が、メディア・コンテンツ・アイテムに対するユーザ検索リクエストを満足させ、アイコンを利用したユーザ・インターフェイスを生成しかつ表示し、そして他の操作を実行することを可能にする他のデータを、提供しまたはそれらへのアクセスを提供することができる。
【００２７】
システム100には、本願明細書／図面に記載される機能を提供するように構成されているコンポーネントの多くの可能な構成の一つしか示されていない。他の構成は、より少ない、付加的な、または異なるコンポーネントを含むことができ、かつコンポーネント間の作業の分担は構成に応じて変更させることができる。システム100の各コンポーネントには、オープン・ポート、APIまたは他の適切な通信インタフェースを採用し、これによりコンポーネントを、システム100の他のコンポーネントに通信で結合させ、ここに記述されるシステム100の任意の機能を達成させることができる。
【００２８】
３．０  メディア・デバイスの具体例
図２Ａは、一つ以上の実施態様に従う、メディア・デバイスの内部構造および操作の具体例を示すブロック図である。デジタル・ビデオ・レコーダ（DVR）のような、メディア・デバイスの内側構造および操作の具体例は、本出願人が所有する米国特許第６，２３３，３８９号明細書に詳細に記述されていて、これは、当初から本出願において開示されているかのように、参照によって組み込まれている。
【００２９】
図２Ａに示されるメディア・デバイスは、入力モジュール202と、メディア・スイッチ204と、出力モジュール206と、ストリーム配信モジュール214とを備える。入力モジュール202は、テレビジョン（TV）および一つ以上の入力チューナを介して様々な形態の他のメディア・コンテンツ入力ストリームを受信する。一実施態様では、入力モジュール202によって受信されるアナログ・テレビ入力ストリームは、ナショナル・テレビジョン標準委員会（NTSC）に対応する信号またはPALに対応する放送信号の形をとることができる。他の実施態様では、入力モジュール202によって受信されるデジタル放送された入力ストリームは、これらに限定されるものではないが、CableCARD、衛星、地上波等の何れかを含むソースから受信されるMPEG2、MPEG4等の何れかを含むが、これらに限定されるものではないデジタル形態をとることができる。一実施態様では、入力モジュール202は、アナログ・メディア・コンテンツ入力ストリームを受信しかつMPEGにフォーマットされたストリームを生成する。一実施態様では、入力モジュール202は、デジタル・メディア・コンテンツ・ストリームを受信しかつデジタル・メディア・コンテンツ・ストリームを他のデジタル形式に変換する。他の実施態様では、入力モジュール202は、異なるコーデックを使用してエンコードされるストリームを生成する。
【００３０】
MPEG搬送マルチプレックスは、多数のビデオ及びオーディオ・フィード並びに私的データを含むことができる、同じ放送チャネル内の多数の番組をサポートする。入力モジュール202は、チャンネルを特定の番組に同調し、指定されたMPEGストリームをチャンネルから抽出し、そしてシステムの残部にMPEGストリームを送る。アナログ・テレビ信号は、信号がどのように得られたかについてシステムの残部が知ることの無い状態で、ビデオとオーディオ・エンコーダを使用して同様のMPEGフォーマットにエンコードされる。情報は、数多くの規格方法でアナログ・テレビ信号の垂直帰線消去区間（VBI）に変調させることができる。例えば、北アメリカ放送テレテキスト標準（NABTS）は、NTSC信号の一定ラインへの情報を変調するために使用することができる。そして、FCCにより、字幕（CC）および拡張データ・サービス（EDS）には、他の一定ラインの使用が強制されている。このような信号は、これらの信号があたかもMPEG私的データ・チャンネルを介して供給されたかのように、入力モジュール202によってデコードされかつ他のモジュールに渡される。
【００３１】
入力モジュール202は、ローカルまたは遠隔のNASストレージ・デバイス、インターネット・コンテンツ・プロバイダ、ローカルまたは遠隔のメディア・デバイス等のようなネットワーク・ソースからも、ストリーム配信コンテンツを受信することができる。受信されるコンテンツ・ストリームは、MPEG、MPEG2、MPEG 4、WMV、AVCHD、MOV、H.264、MKV等のような多くの異なるフォーマットとすることができる。入力モジュール202は、受信されたコンテンツ・ストリームに対応するMPEGストリームを生成することができる。
【００３２】
一実施態様では、メディア・デバイスは、それぞれを異なるタイプの入力に同調させることが出来る多数の入力モジュール202（例えば、チューナ）にも対応することが出来る。例えば、一つのチューナが、アナログ・テレビ信号を受信している時に、他のチューナが、同時に、インターネット・ソースからデジタル入力を受信することができる。同様に、メディア・デバイスは、多数の出力モジュール206（例えば、デコーダ）にも対応することができる。多数のデコーダを、例えば、同じまたは異なるコンテンツを多数の表示デバイスに同時に出力するために、またはピクチャ・イン・ピクチャ（PiP）のような種々の特殊効果を実装するために、使用することができる。
【００３３】
一実施態様では、メディア・スイッチ204は、マイクロ・プロセッサCPU 208、ストレージ210およびメモリ212間のデータ転送を管理する。メモリ212は、通常、メディア・デバイス102のCPU208および他のコンポーネントが直接アクセス可能であるメディア・デバイス102のメイン・メモリを表す。ストレージ210は、通常、CPU 208が通常直接アクセスすることが出来ないメディア・デバイス102の二次ストレージ・デバイスを表す。ストレージ210の具体例は、これらに限定されるものでは無いが、ハードディスク、フラッシュメモリ等を含む。
【００３４】
一実施態様では、メディア・スイッチ204は、時間シーケンス情報を着信コンテンツ・ストリームに埋込むまたはそれらに関連付けることができる。時間シーケンス情報は、時間スタンプのシリーズとしてストリームに格納することができる。これらの時間スタンプは、例えば、単調に増大する、またはシステムが立ち上がる度にゼロから開始するようにすることができる。これは、システムの他のコンポーネントが、コンテンツ・ストリーム内の特定の位置をより容易に見いだすことを可能にする。例えば、システムが、着信コンテンツ・ストリームを５秒読出すリクエストを受信すると、システムは、単純に、ストリームを順方向に読出すことを開始しかつ対応する時間スタンプの位置を見出すことができる。
【００３５】
一実施態様では、システムはコンテンツ・ストリームを処理すると同時に、指標を生成することができる。例えば、指標は、格納されているコンテンツ・ストリームの（MPEGストリームに対する）Ｉフレームを追跡することができるので、これにより、システムが、早送り、巻戻し、可変早送り、可変巻戻し、フレーム送り等のようなトリック再生機能を実行することが可能になる。例えば、ユーザが、メディア・コンテンツ・ストリームの中間にある再生位置から再生を始めることを望む場合、システムは、指標を使用してコンテンツ・ストリームの中間点に最も近いＩフレームを見いだし、かつＩフレームから開始するコンテンツ・ストリームを表示することができ、これにより最小量の情報で所望の結果を得ることが可能になる。
【００３６】
一実施態様では、入力モジュール202は、入力ストリームをMPEGストリームに変換し、かつこのMPEGストリームをさらなる処理のためにメディア・スイッチ204に送信する。一般に、メディア・スイッチ204は、メディア・デバイスによって受信された入力ストリームに一つ以上の操作を同時に実行することができる。例えば、メディア・デバイスのユーザが生のテレビ番組を見つつある場合、メディア・スイッチ204は、メディア・コンテンツ・ストリームを処理しかつそれを出力モジュール206に送信し、そして同時にメディア・コンテンツ・ストリームをストレージ210に書込ませる。
【００３７】
一実施態様では、出力モジュール206は、入力としてメディア・コンテンツ・ストリームを受信し、かつデジタル・モニタ、デジタル・テレビジョン、アナログ・テレビジョン、コンピュータ、スマートホン、タブレット等の任意のものを含むが、これらに限定されるものではない、デバイスと、互換性を持つ任意のデジタルまたはアナログ・フォーマットを含むことができる、出力表示信号を生成する。出力モジュール206は、MPEGデコーダ、オンスクリーン・ディスプレイ（OSD）発生器、デジタルまたはアナログ表示信号エンコーダおよびオーディオ・ロジックを備えることができる。OSD発生器は、プログラム・ロジックが、結果として得られる出力表示信号の上面に重ねることができる画像を供給することを可能にする。さらに、出力モジュール206は、出力信号の（アナログ・デバイスに対して）VBI上にプログラム・ロジックによって供給される情報をNABTS、CCおよびEDSを含む、多くの規格フォーマットで変調することが出来る。
【００３８】
一実施態様では、ストリーム配信モジュール214は、クライアント・デバイスから特定のメディア・コンテンツ・ストリームに対するリクエストを受信し、リクエストされたメディア・コンテンツに対するデータをストレージ210および／またはメモリ212において検索し、そしてリクエストしているクライアント・デバイスにこのメディア・コンテンツ・ストリームを送信する。例えば、ストリーム配信モジュール214は、クライアント・デバイスからリクエストを受信し、かつ一つ以上の有線または無線ネットワーク・リンクを介して、メディア・コンテンツ・ストリームをクライアント・デバイスに送信することができる。一実施態様では、ストリーム配信モジュール214のネットワーク・インタフェースは、ダイレクト・メモリ・アクセス（DMA）を使用してメモリ212から、メディア・コンテンツ・データに直接アクセスするように、構成することができる。
【００３９】
図２Ｂは、一つ以上の実施態様に従う、ストリーム配信メディア・デバイスの内部構造および操作の具体例を示すブロック図である。図２Ａのメディア・デバイスのいくつかのコンポーネント（例えば、出力モジュール206およびストレージ210）を、減少させるまたは除去することができることを除いて、具体例のストリーム配信メディア・デバイスは、図２Ａに示されるメディア・デバイスと同様のものとすることができる。図２Ｂに示されるように、具体例のストリーム配信メディア・デバイスは、入力モジュール202、メディア・スイッチ204、CPU208、メモリ212およびストリーム配信モジュール214を備えることができる。図２Ｂに示されるように、ストリーム配信メディア・デバイス内に存在するコンポーネントの数を減少させることによって、例えば、他のクライアント・デバイスにメディア・コンテンツをストリーム配信することに特化した低廉なデバイスを、生成することが出来る。
【００４０】
一実施態様では、ストリーム配信メディア・デバイスの入力モジュール202は、アナログ・テレビ入力ストリーム、デジタル放送入力ストリームおよびネットワーク・ソースを含む、任意の数のソースから入力を受信することができる。他の具体例として、ストリーム配信メディア・デバイスは、図２Ａに示されるメディア・デバイスのような、他のメディア・デバイスからの入力を受信することができる。この構成では、ストリーム配信メディア・デバイスは、メディア・デバイスから他のクライアント・デバイスにコンテンツをストリーム配信するために、他のメディア・デバイスとは別に作動することができる。
【００４１】
４．０  メディア・コンテンツ・パイプライン機構の具体例
図３は、一つ以上の実施態様による、具体例のメディア・コンテンツ・パイプラインを示すブロック図である。図３において、メディア・コンテンツ・パイプライン300は、数ある特徴の中で特に、一つ以上の入力モジュール202から受信されるメディア・コンテンツ・ストリームを受信し、バッファし、キャッシュに入れ、暗号化しかつ格納するように、集合的に構成されている一連のデータ処理モジュールとして表されている。一実施態様では、メディア・コンテンツ・パイプライン300は、ソース312、ディスク・リサイザ302、トランスフォーム304、クリップ・キャッシュ306、クリップ・ファイル308およびクリップ書込みキャッシュ310を含む処理モジュールを備える。概念的には、これらの各処理モジュールは、一つ以上の入力モジュール202から受信されたメディア・コンテンツ・ストリーム・バッファをメディア・コンテンツ・パイプライン300によりハンド・シェイクする。
【００４２】
一実施態様では、ソース312は、チューナ、ストリーム配信コンテンツ・サーバ、URL、ネットワーク・アクセス・ストレージ（NAS）、セット・トップ・ボックス、メディア・デバイス、ビデオ・サーバ、ペイパービュー・ソース、ビデオ・オン・デマンド・ソース等の何れかを含むが、これらに限定されるものではない、データ・ソースからのデータを検索し、かつ処理のためにメディア・コンテンツ・パイプライン300の残部にデータを送信するように、構成されているプログラム・ロジックを表す。一実施態様では、ソース312は、以下に記述されるように、データ・ソースにおいて検索されたデータを、バッファにデータを割当てるディスク・リサイザ302に送信する。
【００４３】
一実施態様では、ディスク・リサイザ302は、ソース312からメディア・コンテンツ・データを受信し、かつメディア・コンテンツ・データを別々のデータ・バッファにセグメント化する。このコンテクストでは、バッファとは、通常、着信メディア・コンテンツ・ストリームの部分を一時的に格納することができるメモリ・プールからのメモリの領域を表す。バッファに格納されているデータは、続いて、メディア・コンテンツ・パイプライン300の他のコンポーネントによって種々の処理ステップを受けることができる。各バッファは、例えば、ほぼ均一な量（例えば、64KB、128KBまたは1MB）のメディア・コンテンツ・データを格納することができる。バッファ・サイズは、二次ストレージ・デバイスへの格納の便宜に対しておよび／またはメディア・コンテンツ・パイプライン300の他の処理ステップに対して選択することができる。
【００４４】
一実施態様では、ディスク・リサイザ302は、ソース312から受信されたメディア・コンテンツ・データの部分により充填するために、トランスフォーム304に空のバッファをリクエストする。例えば、トランスフォーム304が、バッファを128KBのブロックに割当てるように構成されている場合、ディスク・リサイザ302は、ソース312から受信されたメディア・コンテンツ・データ・ストリームを128KBのセグメントにセグメント化し、トランスフォーム304に一つ以上の空のバッファをリクエストし、かつ空のバッファに128KBのセグメントを格納する。メディア・コンテンツ・パイプライン300を、データ・バッファに格納されている均一な大きさのセグメント全体としてメディア・コンテンツ・ストリームに作動するように、構成することによって、ストリームのダウンストリーム処理を、より効率的にすることができる。他の具体例では、バッファのサイズは、メディア・コンテンツ・データのストレージの最適化およびビット速度に応じて、割当てることができる。
【００４５】
一実施態様では、ディスク・リサイザ302が、ソース312から受信したメディア・コンテンツ・データを格納するには、現在のバッファが、既に利用可能でない場合、ディスク・リサイザ302は、メモリ212に格納されているバッファ・メモリ・プールから新規なバッファを割当てることを、トランスフォーム304にリクエストする。一実施態様の場合、メディア・デバイスの各チューナは、別個のメディア・コンテンツ・パイプラインに関連づけることができ、かつメモリ・プールを、各パイプラインに対し特定量のメモリが利用可能となるように、構成することができる。トランスフォーム304は、例えば、メモリ・プールの利用可能なスペースからバッファを生成するシステム機能を呼び出すことによって、関連したメディア・コンテンツ・パイプライン300による使用のために新規なバッファを生成することができる。ディスク・リサイザ302がソース312からメディア・コンテンツ・データを受信すると同時に、ディスク・リサイザ302は、バッファに格納されているメディア・コンテンツについての記述的情報を提供する任意のメタデータと共に、データの一部を現在のバッファに格納する。
【００４６】
一般に、ディスク・リサイザ302は、現在のバッファが「満杯となる」（例えば、バッファが128KBのデータを格納するように生成されている場合、ディスク・リサイザ302が、既に、約128KBのメディア・コンテンツ・データおよび他のメタデータを現在のバッファに格納していたときには、バッファは満杯である可能性がある）まで、ソース312から受信されたメディア・コンテンツ・データを現在のバッファに格納する。一実施態様では、現在のバッファが満杯である場合、ディスク・リサイザ302は、さらなる処理のために満杯のバッファをクリップ・キャッシュ306に送信する。
【００４７】
各バッファに割当てられているスペースの量次第では、ディスク・リサイザ302が、特に、低ビット・レートのメディア・コンテンツ・ストリーム（例えば、ラジオ再放送）に対して、現在のバッファを充填するのに十分なデータを格納することが可能となる前に、かなり多くの時間が、経過してしまうことがある。メディア・コンテンツ・パイプライン300の他の処理要素は、さらなる処理のため（例えば、バッファをディスクに格納するためまたはバッファをクライアント・デバイスにストリーム配信するため）にディスク・リサイザ302から満杯のバッファの受領を待つことができると言う理由により、低ビット・レートのストリームに対してバッファを充填するための時間量が、処理の望ましくない遅延の原因となる可能性がある。
【００４８】
一実施態様の場合、ディスク・リサイザ302によって使用されるバッファが、タイムリにメディア・コンテンツ・パイプライン300の残部に確実にプッシュされるように、満杯でないバッファを使用することができる。例えば、メディア・コンテンツ・パイプライン300の各バッファの固定サイズが128KBである場合、ディスク・リサイザ302は、一つ以上のバッファを128KB未満のメディア・コンテンツ・データで満たし、かつ一つ以上の条件が達成されると、残部のスペースを「パディング」で満たすことが可能となる。このコンテキストでは、パディングには、一般に、固定されたデータサイズまでバッファが満たされるように、バッファのスペースを占めるために使用される任意の非メディア・コンテンツ・データを利用することができる。ディスク・リサイザ302がバッファにパディングを行うか否かを決定するためにチェックすることができる条件の一例は、閾値時間制限（例えば、100ms）に達しているか否かを含むことができる。例えば、ディスク・リサイザ302は、各特定バッファを満たすのにかかる時間を追跡することができ、そして現在のバッファが、閾値時間制限にまで満たされていない場合、ディスク・リサイザ302は、バッファをパディングで満たし、そしてパディングされたバッファを処理のためにシステムの残部に送信することができる。
【００４９】
上述したように、メディア・デバイス102は、処理のために複数のメディア・コンテンツ・ストリームを並行して受信することができる。例えば、メディア・デバイス102は、別々のメディア・コンテンツ入力ストリームを並行して受信することができる多数のチューナを含むことができる。一実施態様では、メディア・デバイス102は、並行して入力モジュール202から複数のメディア・コンテンツ・ストリームを受信し、かつ複数のメディア・コンテンツ・ストリームの各々を別々のパイプラインとして処理することができる。例えば、ディスク・リサイザ302は、別々のメディア・コンテンツ入力ストリームを受信すると同時に、別々のメディア・コンテンツ入力ストリームの各々に対して、同じまたは別々のメモリ・プールからバッファの別々のセットを作成することができる。
【００５０】
クリップ・キャッシュ306は、ディスク・リサイザ302から満杯のバッファを受信しかつこの満杯のバッファをキューで維持する。クリップ・キャッシュ306によって管理されるバッファのキューは、例えば、メモリ212のようなストレージ媒体上のキャッシュ・ファイルとして維持することができる。
【００５１】
一実施態様の場合、キュー内のバッファは、暗号化のためにキューに入れられる。バッファは、メディア・デバイスによって受信される著作権で保護されたメディア・コンテンツの安全のためを含む多くの理由により、暗号化することができる。例えば、コンテンツのオーナは、しばしば、メディア・コンテンツの非合法のコピーを懸念するので、著作権で保護されたメディア・コンテンツを一つのメディア・デバイスから他のデバイスへ非合法に移すことをより困難にするために、メディア・コンテンツ・パイプラインは、メディア・コンテンツを暗号化することができる。メディア・デバイス102によって受信されるメディア・コンテンツを暗号化し、かつメディア・デバイス102が、著作権で保護されたコンテンツを他の許可されたデバイスへ転送することを確実に可能とするために、任意の数のセキュリティ・システムおよび暗号化スキームを使用することができる。メディア・コンテンツの格納および／または転送を確実にするために用いることができるセキュリティ・システムの例は、本出願人が所有する米国出願番号第１０／７４１，５９６号に詳細に記載されている。これは、あたかも本願に、最初から開示されていたかのように、引用により組み込まれている。
【００５２】
一実施態様の場合、キュー内の一つ以上のバッファが既に「暗号化制限」に達していると決定されるまで、クリップ・キャッシュ306は、暗号化されていないバッファを暗号化のためにキューに入れる。一般に、暗号化制限には、起動時にクリップ・キャッシュ306によってキューに入れられる暗号化されていないバッファを暗号化させる構成可能な条件または閾値を、利用することができる。例えば、一つの暗号化制限は、新規な暗号化されていないバッファがディスク・リサイザ302から受信されるたびに、暗号化されていないバッファが暗号化されるように、構成することができる。しかしながら、バッファを暗号化するプロセスが、データ等を暗号化するためにキーを用いて暗号化キーをセットアップすることを含むことがあるので、ディスク・リサイザ302から受信される各新規なバッファを個々に暗号化することは、特に高いビット・レートを有するメディア・コンテンツ・ストリームに対しては、メディア・デバイスのパフォーマンスを著しく低下させることになることがある。
【００５３】
別の例では、暗号化制限は、クリップ・キャッシュ306が、ディスク・リサイザ302から受信される暗号化されていないバッファをキューに入れ、かつ一つ以上のキューに入れられたバッファを暗号化のために周期的スケジュール（例えば、100ms毎に１回）または他の任意の時間のインクリメントに基づいて送信する時間制限に基づいて決めることができる。周期的時間スケジュールに基づいて暗号化制限を用いることにより、例え、メディア・コンテンツ・ストリームのビット・レートが非常に高い場合であっても、メディア・コンテンツ・パイプライン300は、所定の時間フレーム内でほぼ同数の暗号化を実行することができる。
【００５４】
さらに別の例として、クリップ・キャッシュ306を、クリップ・キャッシュ306による暗号化のために現在キューに入れられている特定数の暗号化されていないバッファに基づく暗号化制限によって構成することができる。例えば、クリップ・キャッシュ306には、任意の所定時刻で暗号化されていない一定数のバッファをキューに入れるのに十分なメモリ・スペースしか割当てられていない。従って、クリップ・キャッシュ306が利用可能なバッファの数が満杯になる（この時点で、クリップ・キャッシュ306はバッファをクリップ・ファイル308に送信し、バッファはそこで暗号化される）まで、クリップ・キャッシュ306は、暗号化されていないバッファをディスク・リサイザ302から受信することができる。
【００５５】
一実施態様では、クリップ・ファイル308は、暗号化されていないバッファを入力としてクリップ・キャッシュ306から受信し、（例えば、バッファを暗号化エンジンに送信することによって）暗号化されていないバッファを暗号化させ、そして暗号化されたバッファをクリップ書込みキャッシュ310に送信する。バッファを暗号化するために、データ暗号化規格（DES）、AdvancedEncryption Standard（AES）、MD5、SHA-1、SHA-2、SHA-3のような暗号ハッシュ関数、私的および公衆キー等を含むが、これらに限定されるものではない、多種多様な暗号技術またはセキュリティ方式を、使用することができる。本願明細書／図面に記載されている暗号テクニックは、ハードウェア、ソフトウェアまたはこれら２つの組合せにより実装することができる。
【００５６】
一実施態様では、クリップ・ファイル308は、クリップ・キャッシュ306のバッファの一部または全部を暗号化せずに、それに代えて、クリップ・キャッシュ306が、データを暗号化せずにバッファをクリップ書込みキャッシュ310に送信することができる。例えば、特定のコンテンツに対してはコピー保護が不必要であるので、いくつかのバッファは、暗号化された状態で二次ストレージに格納する必要は無い。別の例の場合、クリップ・ファイル308によって受信されるいくつかのメディア・コンテンツは、コンテンツ・ソースまたは他の手段によって既に以前に暗号化されているので、クリップ・キャッシュ306は、予め暗号化されているバッファ・データを暗号化せずにクリップ書込みキャッシュ310に送ることが出来る。
【００５７】
一実施態様では、クリップ書込みキャッシュ310は、クリップ・ファイル308から暗号化されたバッファを受信し、かつバッファを暗号化されたバッファ・キャッシュに保持する。暗号化されたバッファ・キャッシュは、一般に、メディア・デバイスの二次ストレージに書込むためにキューに入れられている、メディア・デバイスの一次メモリに格納されている一組の暗号化されたバッファを表す。暗号化されたバッファ・キャッシュは、暗号化されたバッファ・キャッシュに現在格納されているメディア・コンテンツ・ストリーム内の任意の再生位置に対してメディア・コンテンツ・ストリームを再生するまたはストリーム配信するリクエストを満足させるためにも、用いることができる。例えば、暗号化されたバッファ・キャッシュは、入力モジュール202から最近受信された暗号化されたメディア・コンテンツ・データを格納するので、リクエストされた再生ポイントが生のポイント又はその近くにある場合、メディア・デバイスは、暗号化されたバッファ・キャッシュからの暗号化されたバッファを、ディスクに書込む前に、リクエストしているクライアント・デバイスに再生するまたはストリーム配信することができる。本願明細書／図面での使用については、「生のポイント」とは、メディア・コンテンツ・ストリーム内の最も新しいポイントを意味する。例えば、生放送の生のポイントとは、一般に、ストリームで最も最近に放送された部分を指す。メディア・デバイスおよび／またはクライアント・デバイスから、また可能であれば、暗号化されたバッファ・キャッシュからのリクエストを満足させることによって、メディア・コンテンツ・パイプライン300は、バッファに格納されているデータへのアクセスを妨げずに暗号化されたバッファをストレージ210に、頻繁にではなく書込むことができる。一実施態様では、バッファがディスクに書込まれかつキャッシュにバッファを維持するために指定された時間閾値を既に超えてしまうまで、クリップ書込みキャッシュ310は、暗号化されたバッファを暗号化されたバッファ・キャッシュに維持する。
【００５８】
一実施態様では、プロセスは、まだディスクに書込まれていない暗号化されたバッファ・キャッシュに格納されている暗号化されたバッファを周期的にチェックし、そして一つ以上の閾値が満たされると、バッファをディスクに書込む。暗号化されたバッファをディスクに書込む閾値の具体例は、キャッシュに現在格納されている記録されていないバッファの数、およびキャッシュに既に格納されている一つ以上の記録されていないバッファの時間の長さについての制限を含む。プロセスが、閾値に達していることを検出すると、プロセスは、まだ二次ストレージに書込まれていない暗号化されたバッファを検索しかつそれらを二次ストレージに書込む。
【００５９】
一実施態様では、二次ストレージに既に書込まれている暗号化されたバッファは、これらのバッファが既に格納されていることを示すために、キャッシュ内でマークされる。しかしながら、格納されたバッファは、このバッファに割当てられているスペースが、解除されかつ他のパイプライン・コンポーネントに利用可能となる前では、暗号化されたバッファ・キャッシュ内に時間周期の間とどまることができる。この間、このバッファは、バッファに対する着信リクエストを満足させるために、バッファの「期限が切れる」まで、暗号化されたバッファ・キャッシュから直接（例えば、メディア・デバイスまたはストリーム配信クライアントから）利用可能にすることができる。一実施態様では、クリップ書込みキャッシュ310は、一定時間の周期が経過した後、ディスクに既に書込まれているバッファを「期限が切れた」状態にし、これらのバッファは、もはや使用されず、または他の任意の条件下に置かれる。バッファの期限が切れると、バッファに割当てられているスペースは、解除されそして関連するメモリ・プールに戻すことができる。例えば、解除されたスペースは、クリップ書込みキャッシュ310に関連していてかつクリップ・ファイル308からの他の着信データを格納するために使用されるメモリ・プールに戻すことができる。他の具体例として、解除されたバッファ・スペースは、バッファを割当てるためにトランスフォーム304によって使用されるメモリ・プールに利用することができる。
【００６０】
一実施態様では、クリップ書込みキャッシュ310は、メディア・コンテンツを効率的にクライアント・デバイスにストリーム配信するために、別個のトランスコーディング・パイプラインによって使用させることができる。例えば、HLSストリームをクライアント・デバイスに供給するトランスコーディング・パイプラインは、クリップ書込みキャッシュ310に格納されているバッファにアクセスし、このバッファをトランスコードし、かつ二次ストレージから生の再生ポイントの近くでメディア・コンテンツをトランスコードするため待機することなく、トランスコードされたメディア・コンテンツをクライアント・デバイスに送信することができる。
【００６１】
５．０ 実施具体例
５．１ メディア・コンテンツの処理
図４は、一つ以上の実施態様に従ってメディア・コンテンツ・パイプラインを使用してメディア・コンテンツを処理するための手順フローの具体例を示す。フロー200の種々の要素は、上述したシステム100のようなシステムを含む様々なシステムにより実行することができる。一実施態様では、以下に記述される機能ブロックに関連して記述されるプロセスの各々は、コンピュータのメモリの物理状態と対話しかつそれを変換することに関連するデータ検索、変換および格納操作を実行する間に、一つ以上のコンピュータ・プログラム、他のソフトウェア要素および／または汎用計算機または専用計算機の何れかのデジタル・ロジックを使用して、実装することができる。図４に示されるステップは、置換えまたは省略することができる。さらにまた、図４に示されない付加的なステップを、一つ以上の実施態様に従って実行することもできる。したがって、図４に示されるステップの選択または構成は、限定するものであると解釈すべきではない。
【００６２】
ブロック402で、メディア・デバイスは一つ以上のメディア・コンテンツ・データ・ストリームを受信する。例えば、メディア・デバイス102は、メディア・デバイスの一つ以上のチューナを使用して、コンテンツ・ソース106から一つ以上のメディア・コンテンツ・データ・ストリームを受信することができる。メディア・デバイス102は、単一のメディア・コンテンツ・データ・ストリームを受信する、または複数のメディア・コンテンツ・データ・ストリームを同時に受信することができる。例えば、メディア・デバイス102のユーザは、同時に、多数のプログラムを再生しおよび／または多数のプログラムを記録することができる。他の具体例として、メディア・デバイス102は、一つ以上のクライアント・デバイス104にストリーム配信するために、多数のコンテンツ・ストリームを受信し続けることができる。
【００６３】
ブロック404で、メディア・コンテンツ・データ・ストリームの少なくとも一部は、一つ以上のインメモリ・バッファに格納される。例えば、メディア・デバイス102によって受信される各メディア・コンテンツ・データ・ストリームに対して、メディア・デバイス102は、メディア・コンテンツ・ストリームの一部をメモリ212に格納されている一つ以上のバッファに格納することができる。一実施態様では、メディア・コンテンツ・データ・ストリームの一部を格納するためにメディア・デバイス102によって生成されるバッファは、メディア・デバイス102によるさらなる処理のためにキューに入れることができる。
【００６４】
ブロック406で、一つ以上のインメモリ・バッファに対し、暗号化制限に達しているかが、決定される。図３に示されるメディア・コンテンツ・パイプラインの具体例を参照して上述したように、メディア・デバイス102は、メディア・コンテンツ・ストリーム・データを受信し、かつ最初それをセグメント化しそしてそれを一つ以上の暗号化されていないバッファに格納することができる。セキュリティの理由および他の理由により、メディア・デバイス102は、バッファをストレージ210に格納する前またはメディア・コンテンツ・データをクライアント・デバイス104に送信する前に、バッファを暗号化することができる。一実施態様では、一つ以上のインメモリ・バッファに対し暗号化制限に達している否かを決定することは、既に特定の時間制限に達している、または一定数の暗号化されていないバッファが、暗号化のために、現在キューに入れられていると決定することを含むことができる。
【００６５】
ブロック408で、メディア・デバイスは、一つ以上のインメモリ・バッファを暗号化しそして暗号化されたバッファをバッファ・キャッシュに格納する。例えば、メディア・デバイス102は、ハードウェア、ソフトウェアまたはこれらの組み合わせによって実装される任意の数の暗号技術を使用して、バッファを暗号化することができる。メディア・デバイス102は、（暗号化されたバッファをストレージ210に書込むことを含む）更なる処理のために暗号化されたバッファをキューに入れるクリップ書込みキャッシュ310に、暗号化されたバッファを格納することができる。一実施態様では、クリップ書込みキャッシュ310内の暗号化されたバッファは、更に、出力モジュール206および／またはストリーム配信モジュール214による読込みにも利用可能とすることができる。
【００６６】
ブロック410で、メディア・デバイスは、暗号化されたバッファ・キャッシュに格納されている一つ以上のバッファに対し、書込み制限に既に到達しているか否かを決定する。例えば、暗号化されたバッファ・キャッシュに格納されている一つ以上のバッファに対して書込み制限に達しているか否かを決定することは、一定時間制限に既に達しているか否か、または一定数の暗号化されたバッファが、暗号化されたバッファ・キャッシュに現在格納されていてかつストレージにはまだ書込まれていないか否か、を決定することを含むことができる。
【００６７】
ブロック410において、メディア・デバイスが、書込み制限にまだ達していないと決定すると、ブロック408で、メディア・デバイスは、新しく暗号化されたバッファを、受信し、暗号化し、そしてバッファ・キャッシュに格納することを続けることができる。
【００６８】
ブロック410で、メディア・デバイスが、暗号化されたバッファ・キャッシュに格納されている一つ以上の暗号化されたバッファに対し書込み制限に達していると決定すると、メディア・デバイスは、ブロック412で、バッファ・キャッシュに格納されている一つ以上の暗号化されたバッファをストレージに書込む。例えば、メディア・デバイス102は、バッファをストレージ210に書込むことができる。一実施態様では、ストレージ210にバッファを書込むことは、バッファが既にストレージ210に書込まれていることを示すために、メモリ212に格納されているバッファに関連する値を修正することを含むことができる。
【００６９】
５．２ メディア・デバイスでのメディア・コンテンツの再生
数ある特徴の中で特に、メディア・デバイス102は、メディア・コンテンツを再生するリクエストを受信しかつ処理するように構成されている。例えば、ユーザは、メディア・デバイスが、メディア・デバイスの一つ以上のチューナを使用してコンテンツ・ソース106から受信する特定のメディア・コンテンツを、メディア・デバイス102が再生することを、リクエストすることができる。他の具体例では、別個のクライアント・デバイスが、別個のメディア・デバイス102からストリーム配信可能であるコンテンツを再生することをリクエストすることができる。一実施態様の場合、メディア・デバイスは、リクエストされたメディア・コンテンツ・ストリームを受信し、かつ上述したメディア・コンテンツ・パイプライン300のようなメディア・コンテンツ・パイプラインを使用して、それを処理することができる。
【００７０】
概念的には、ユーザは、メディア・コンテンツ・ストリームを、メディア・コンテンツ・ストリーム全体に対し三つの時間周期：（１）ストリーム内の生の再生ポイントまたは最新の再生ポイント、（２）生の再生ポイントの後ろにあるが、依然として生の再生ポイントの近くにある再生ポイント（例えば、再生ポイントに対するバッファが、メディア・コンテンツ・パイプラインによって管理されているキャッシュに格納することができる場所）、および（３）生の再生ポイントの近くではない再生ポイント（例えば、再生ポイントのためのバッファが、メディア・コンテンツ・パイプラインによって既に処理されていて、ディスクに既に書込まれていて、そしてメディア・コンテンツ・パイプラインによって維持されているキャッシュにはもはや格納されていない場所）、の一つで再生することを、リクエストすることができる。一実施態様では、メディア・コンテンツ・パイプラインは、データを出力モジュール206および／またはストリーム配信モジュール214に提供して、ユーザがメディア・コンテンツ・ストリームの再生を既にリクエストしているコンテンツ・ストリーム内の場所に応じて異なるソースから、メディア・コンテンツ・ストリームをメディア・デバイスで再生することができる。
【００７１】
一実施態様では、ユーザが、メディア・コンテンツ内の生のポイント又はその近くで、メディア・コンテンツ・ストリームを再生することをリクエストすると、メディア・デバイスは、数多くの異なるモード（各モードは、本願明細書／図面に記述されるメディア・コンテンツ・パイプラインによるメディア・コンテンツ・ストリームの処理を迂回するまたは迂回しないことができる）の何れかでメディア・コンテンツ・ストリームに対するデータにアクセスすることができる。
【００７２】
一つの具体例では、生のポイントで又はその近くで再生する場合、出力モジュール206は、入力モジュール202によって受信されたデータを直接読出すことができる。入力モジュール202によって受信されたデータは、上述したようにメディア・コンテンツ・パイプラインのコンポーネントによってまだ処理させまた管理させることはできるが、出力モジュール206は、クリップ書込みキャッシュ310からまたはパイプラインの他のコンポーネントからのデータに代えて、入力モジュール202からのデータに直接アクセスすることができる。しかしながら、入力モジュール202においては、着信データ・ストリームを格納するために利用可能なスペースの量に制限があるので、入力モジュール202から直接のメディア・コンテンツ・ストリームに対してデータを検索する能力は、生の再生ポイントで又はそれに非常に近い場所でメディア・コンテンツ・ストリームを再生するリクエストにしか機能しない。更に、メディア・デバイスが入力モジュールからのデータに直接アクセスすることが許されない場合、入力モジュールに対して確保されているメモリのサイズは、減少させて、システムの他の部分のために使用することができる。
【００７３】
他の具体例では、入力モジュール202は、コンテンツ・ソースからメディア・コンテンツを受信しかつそれをエンコードし、そしてエンコードされたメディア・コンテンツ・データを、入力モジュール202に対して確保されているメモリのセクションに格納することができる。更に、入力モジュール202に対して確保されているメモリのセクションは、出力モジュール206が、DMAまたは他の技術を使用して直接アクセスすることを可能とすることができる。この具体例では、出力モジュール206によって入力モジュール202から読出されたデータは、完全にメディア・コンテンツ・パイプラインを迂回させることができる。いくつかのコンテクストでは、このプロセスは、メディア・コンテンツ・データの「生のデコード」と呼ぶことができる。
【００７４】
さらに別の例では、出力モジュール206は、生のポイント又はその近くで、クリップ書込キャッシュ310によって管理されているインメモリ・バッファからデータを読出すことができる。一般に、生のポイント又はその近くで、メディア・コンテンツを読出しおよび再生する一つ以上の任意のモードは、（例えば、現在の再生ポイントが生のポイントから正確にどれ程離れているかに応じて）使用することができる。さらにまた、モードの種々の組合せは、特定の実装で使用することができかつ同じ実装の中で共存させることができる。
【００７５】
上述したように、メディア・コンテンツ・ストリーム内の生の再生ポイント又はその近くで、メディア・コンテンツ・ストリームを再生するというメディア・デバイスによって受信されたリクエストは、これに代えて少なくとも部分的に、メディア・コンテンツ・パイプラインによって管理されているキャッシュ内の一つ以上のバッファに格納されているデータによって、満足させることができる。例えば、メディア・デバイスのプログラム・ロジックは、リクエストされた再生ポイントがメディア・コンテンツ・ストリーム内でどの程度離れて後ろにあるかおよびメディア・コンテンツ・ストリームのどの部分が、現在キャッシュに格納されているかに応じて、キャッシュまたはディスクの何れかにおいて再生のためのデータを検索するように、構成することができる。
【００７６】
一実施態様では、メディア・コンテンツ・ストリームの再生ポイントのリクエストは、リクエストされた再生ポイントに対するデータを格納している一つ以上のバッファを戻す機能を呼び出すメディア・コンテンツ・パイプラインの制御オブジェクトによって受信させることができる。この機能は、リクエストされた再生ポイントに対するデータを格納しているバッファが、メディア・コンテンツ・ストリームに対するメディア・コンテンツ・パイプラインによって維持されている暗号化された（例えば、クリップ書込みキャッシュ310内の）バッファのリストにおいて利用可能であるか否かを、先ず、チェックすることができる。例えば、この機能は、リクエストと関連する時間スタンプまたはバッファ・オーダ番号を使用して、再生ポイントがバッファのリストにおいて利用可能であるか否かを確認することができる。リクエストされた一つ以上のバッファが暗号化されたバッファのリストにおいて利用可能である場合、バッファは、メモリから解読されそして解読されたバッファとしてデコーディングおよび表示のために出力モジュールに戻すことができる。
【００７７】
（例えば、バッファがディスクに既に書込まれていてかつバッファのキャッシュに入れられたリストから期限が切れているという理由で）リクエストされた再生ポイントに対するバッファが、暗号化されたバッファのリストにおいて利用可能でない場合、この機能は、代わりに、ディスク・ストレージからバッファを検索することができる。メディア・コンテンツ・パイプラインが、暗号化されたバッファ・キャッシュ内のおよびディスク上のバッファを、均一な大きさのバッファとして処理しかつ格納するので、キャッシュまたはディスクの何れかから戻されたバッファは、コンテンツを表示するために出力モジュールによって同様に処理させることができる。
【００７８】
一般に、一つのソースから他のソースへ（例えば、二次ストレージからメモリへ、またはメモリ・キャッシュからDMAへ）の遷移を再生するコンテンツは、シームレスでかつメディア・コンテンツを視聴するユーザには検出可能ではない（例えば、ユーザに対して再生されるコンテンツ内に中断またはグリッチが存在しない）。
【００７９】
５．３  メディア・コンテンツ・ストリーム配信
図５は、一つ以上の実施態様によりメディア・コンテンツをメディア・デバイスから一つ以上のクライアント・デバイスにストリーム配信するためのフロー・チャートを例示する。図５に示されるステップは、置換えるまたは省略することができる。さらに、図５に示されてない付加的なステップを、一つ以上の実施態様に従って実行することもできる。したがって、図５に示されるステップの選択または構成は、限定するものと解釈されるべきではない。一実施態様では、図５に示される一つ以上のステップは、図４に示される具体例のフロー・チャートのステップと同時に実行することができる。例えば、図４の具体例のフロー・チャートによって示されるように、メディア・デバイスは、一つ以上のメディア・コンテンツ・データ・ストリームを受信し、暗号化しかつ格納することができ、そして同時に、メディア・コンテンツ・データ・ストリームをクライアント・デバイスに送信する一つ以上のクライアント・デバイスからリクエストを受信する。
【００８０】
ブロック502で、メディア・デバイスは、クライアント・デバイスから、メディア・コンテンツ・ストリームのリクエストを受信する。例えば、クライアント・デバイス104は、スクリーン・ディスプレイを提示し、かつクライアント・デバイスでの再生のために特定のメディア・コンテンツ・アイテムを選択するユーザからユーザ・コマンドを受信するように、構成することができる。例えば、ユーザは、ユーザが興味を持つメディア・コンテンツ・アイテムについての情報を得るためにスクリーン・ディスプレイをナビゲートし、かつ選択されたメディア・コンテンツ・アイテムを再生することができる。クライアント・デバイス104は、利用可能なメディア・コンテンツ・アイテムについての情報を、メディア・デバイス102および／またはサービス・プロバイダ108から得ることができる。
【００８１】
利用可能なメディア・コンテンツ・アイテムについての情報は、アドレス（例えば、チャンネル、ユニバーサル資源ロケータ（URL）、ファイル名、メディア・データ・データベース、メディア・サーバ、メディア配布システム等）を備えることができ、これらの情報から、メディア・コンテンツ・アイテムはストリーム配信されまたはアクセスされる。本願明細書／図面に記述される利用可能なプログラミング情報は、メディア・デバイス102を介して受信することができるメディア・プログラムの利用可能性情報を含むことができる。例えば、クライアント・デバイス104は、メディア・デバイス102に格納することはできないが、メディア・デバイス102がメディア・デバイスのチューナを介して受信することができる生のテレビジョン放送をリクエストすることができる。リクエストされた放送を受信するために、メディア・デバイス102は、一つ以上のチューナの一つを割当てて、生放送を受信し、（例えば、図４を参照して上述したように）受信したメディア・コンテンツを処理し、そしてリクエストしたクライアント・デバイス104にこのコンテンツをストリーム配信することができる。いくつかの実施態様では、メディア・デバイス102は、多数のメディア・コンテンツ・ストリームを、一つ以上の異なるクライアント・デバイス104に同時にストリーム配信することができる。
【００８２】
一実施態様では、クライアント・デバイス104が、リクエストを生成し、かつリクエストされたメディア・コンテンツ・ストリームへのアクセスを調整するメディア・デバイス102のストリーム配信モジュール214が、このリクエストを受信することができる。このリクエストは、メディア・コンテンツ・ストリーム内の位置を規定することができ、この位置は、クライアント・デバイスで受信されたユーザ入力に部分的に依存させることができる。例えば、クライアント・デバイス104のユーザは、メニューをナビゲートすることができ、かつ生のポイントでの再生のために特定のチャンネルを選択することができる。この具体例では、クライアント・デバイス104は、選択されたチャンネルのメディア・コンテンツ・ストリームに対するものであり、かつメディア・コンテンツ・ストリーム内の現在の生のポイントをストリーム内のリクエストされた位置として示すリクエストを、メディア・デバイス102に送信する。別の例では、ユーザが視聴のために特定のチャンネルを選択した後、クライアント・デバイス104のユーザは、クライアント・デバイス104に入力を提供して、選択されたメディア・コンテンツを生の再生ポイント以外の再生ポイントで巻戻し、一時停止、または再生することができる。この具体例では、指定された位置は、生の再生ポイントに先行するメディア・コンテンツ・ストリーム内のあるポイントとすることができる。一実施態様では、メディア・コンテンツ・ストリーム内の位置は、タイム・スタンプ、バッファをオーダしている値またはメディア・コンテンツ・ストリーム内の位置を示す他の任意の値によって指定することができる。
【００８３】
ブロック504で、メディア・デバイスは、メディア・コンテンツ・ストリーム内の指定された位置に対応するメディア・コンテンツ・ストリームのバッファが、現在、インメモリ・バッファ・キャッシュに格納されているか否かを決定する。メディア・コンテンツ・ストリーム内の指定された位置が、現在、バッファ・キャッシュに格納されているか否かを決定することは、指定された位置を表す値を、バッファ・キャッシュのバッファと関連させて格納されているメタデータまたは他の情報と比較することを含むことができる。
【００８４】
ブロック504で、メディア・デバイスが、リクエストされた位置に対応するバッファが現在バッファ・キャッシュに格納されていると決定すると、メディア・デバイスは、バッファ・キャッシュにおいて、バッファおよびおそらく一つ以上の周囲のバッファを検索する。ブロック504で、メディア・デバイスが、リクエストされた位置に対応するバッファがバッファ・キャッシュに格納されないと決定すると、メディア・デバイスは、ストレージにおいて、バッファおよびおそらく一つ以上の周囲のバッファを検索する。例えば、メディア・デバイス102は、既に、指定された位置に対応するバッファをストレージ210に書込んでいてかつメモリ212からバッファを解放している場合もある。このケースの場合、メディア・デバイス102は、メモリ212の代わりにストレージ210においてバッファを検索することができる。
【００８５】
ブロック510で、メディア・デバイスは、クライアント・デバイスに一つ以上のバッファを送信する。例えば、メディア・デバイス102のストリーム配信モジュール214は、メディア・コンテンツ・パイプライン300から一つ以上のバッファを受信し、かつ一つ以上の有線または無線ネットワーク・リンクを介して、一つ以上のバッファをクライアント・デバイス104に送信することができる。メディア・デバイス102は、リクエストしているクライアント・デバイス104に一つ以上のバッファを直接送信する、または一つ以上の仲介デバイスを介して一つ以上のバッファをクライアント・デバイス104に供給することができる。
【００８６】
図４および図５の具体例の手順フローは、メディア・コンテンツ・アイテムをメディア・デバイスで再生するため、および／またはメディア・コンテンツ・アイテムをメディア・デバイス・クライアント・デバイスにストリーム配信するためのメディア・コンテンツ・パイプラインの使用を示す。一実施態様では、任意の数のメディア・デバイスまたはクライアント・デバイスが、同じメディア・コンテンツ・アイテムを同時に再生するおよび／またはストリーム配信することができ、かつ各デバイスは、異なる再生ポイントからメディア・コンテンツ・アイテムを再生するまたはストリーム配信することができる。例えば、メディア・デバイスは、本願明細書／図面に記述されるメディア・コンテンツ・パイプラインを使用してメディア・コンテンツ・ストリームを受信しかつ処理し、そして同時にこのメディア・コンテンツ・ストリームをメモリ・キャッシュに格納されているバッファから出力デバイスに再生することができる。同時に、第一のクライアント・デバイスは、同じ再生ポイントから同じメディア・コンテンツ・ストリームを再生し、かつメディア・デバイスと同様にメモリ・キャッシュの同じポイントからメディア・コンテンツをストリーム配信することができる。更に、第二のクライアント・デバイスは、同時に、異なる再生ポイント（例えば、メディア・デバイスおよび第一のクライアント・デバイスの再生ポイントより10分後）から同じメディア・コンテンツ・ストリームを再生し、かつ（メモリ・キャッシュの異なる部分からまたは二次ストレージからに関わらず）異なる再生ポイントからメディア・コンテンツをストリーム配信することができる。
【００８７】
一実施態様では、ホスト・メディア・デバイスは、同じメディア・コンテンツ・ストリームから再生している各メディア・デバイスおよびクライアント・デバイスに対して「読出しているコンテクスト」を維持することによって、別個のデバイスに対して多くの異なる再生ポイントを管理することができる。例えば、ホスト・メディア・デバイスから特定のメディア・コンテンツ・ストリームをストリーム配信している各クライアント・デバイスに対して、ホスト・メディア・デバイスは、このクライアント・デバイスに対する現在の読出し位置（これは、メモリ・キャッシュ内のバッファへのまたは二次ストレージ内の位置への参照を含むことができる）を追跡することができる。ホスト・メディア・デバイスは、どのバッファが特定のクライアント・デバイスで現在使用されているかを示す情報および他の状態情報を格納することもできる。
【００８８】
一実施態様では、クライアント・デバイスが、バッファ・キャッシュに格納されているバッファにアクセスすることに応答して、メディア・デバイスは、バッファを「保持」し、かつ何れのかつ全てのメディア・デバイス／クライアント・デバイスが、既に、バッファにアクセスするのを止めてしまっていると、決定されるまで、バッファをメモリ・キャッシュから解放することを待つことができる。例えば、メディア・デバイスおよびこのメディア・デバイスからメディア・コンテンツをストリーム配信しているクライアント・デバイスの両方が、現在、同じバッファにアクセスしつつある場合、メディア・デバイスは、両方のデバイスが現在このバッファにアクセスしつつあることを示す「参照カウント」または他の値を格納することができる。各デバイスが、バッファにアクセスすることを止めるときには、現在どのデバイスもバッファにアクセスしていない状態（この時、メディア・デバイスは、メモリ・キャッシュからバッファを解放することができる）になるまで、参照カウントは減少させることができる。このようにして、多数のデバイスがメモリ・キャッシュ内の同じバッファにアクセスする場合、通常、キャッシュ内にはバッファの一つのコピーしか存在せず、かつそれは、全てのデバイスがバッファにアクセスするのを止めてしまった後の時間まで、キャッシュ内に残存することができる。
【００８９】
実施態様は、一つ以上のプロセッサにより実行されると、前述の方法の何れかを実行させるコンピュータ・ソフトウェア命令を格納するコンピュータ読取り可能ストレージ媒体を含む。
【００９０】
実施態様は、プロセッサを備えかつ前述の方法の何れかを実行するように構成されている装置を含む。
【００９１】
なお、本願明細書／図面には実施態様が別個に述べられているが、本願明細書／図面に述べられている実施態様または実施態様の如何なる部分も、さらなる実施態様を形成するために組合わせることができる。
【００９２】
６．０  実施メカニズム−ハードウェアの概要
一実施態様によれば、本願明細書／図面に記載されている技術は、一つ以上の専用コンピューティング・デバイスによって実装される。専用コンピューティング・デバイスは、ハードワイアードによりこの技術を実行することができるが、またこれは、一つ以上の特定用途向け集積回路（ASIC）またはこの技術を実行するように永続的にプログラムされているフィールド・プログラマブル・ゲートアレイ（FPGA）のようなデジタル電子デバイスを含むことができ、またはファームウェア、メモリ、他のストレージまたはこれらの組合せにより、プログラム命令に従ってこの技術を実行するようにプログラムされている一つ以上の汎用ハードウェア・プロセッサを含むこともできる。このような専用コンピューティング・デバイスにおいては、この技術を達成するために、カスタム・ハードワイアード・ロジック、ASICまたはFPGAを、カスタム・プログラミングと組合わせることもできる。専用コンピューティング・デバイスは、卓上コンピュータ・システム、ポータブル・コンピュータ・システム、ハンドヘルド・デバイス、ネットワーキング・デバイス、またはこの技術を実装するようにハードワイアードおよび／またはプログラム・ロジックを組み込んだ他の任意のデバイスとすることができる。
【００９３】
例えば、図６は、本発明の実施態様を実装することができるコンピュータ・システム600を示すブロック図である。コンピュータ・システム600は、情報を通信させるためのバス602または他の通信メカニズム、および情報を処理するための、バス602に結合されているハードウェア・プロセッサ604を含む。ハードウェア・プロセッサ604は、例えば、汎用マイクロ・プロセッサとすることができる。
【００９４】
コンピュータ・システム600は、プロセッサ604によって実行されるべき情報および命令を格納する、ランダム・アクセス・メモリ（RAM）または他の動的ストレージ・デバイスのような、バス602に結合されているメイン・メモリ606も含む。メイン・メモリ606は、プロセッサ604によって実行されるべき命令を実行する間に変数または他の中間情報を一時的に格納するためにも使用することができる。このような命令は、これが、プロセッサ604がアクセス可能な非一時的ストレージ媒体に格納されると、コンピュータ・システム600を、命令で指定された操作を実行するようにカスタマイズされる専用マシンに変更する。
【００９５】
コンピュータ・システム600は、更に、プロセッサ604に対する静的情報および命令を格納するための、バス602に結合されているリード・オンリ・メモリ（ROM）608または他の静的ストレージ・デバイスを含む。磁気ディスク、光学ディスク、フラッシュ・ディスク等のようなストレージ・デバイス610が、提供され、かつこれらは、情報および命令を格納するためにバス602に結合される。
【００９６】
コンピュータ・システム600は、コンピュータ・ユーザに情報を表示するために、バス602を介して陰極線管（CRT）のようなディスプレイ612に結合させることができる。英数字および他のキーを含む入力デバイス614は、情報およびコマンド選択をプロセッサ604と通信するためにバス602に結合される。他のタイプのユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ604と通信するためおよびディスプレイ612上のカーソル移動を制御するための、マウス、トラックボールまたはカーソル方向キーのようなカーソル制御616である。この入力デバイスは、典型的には、デバイスが面内の位置を指定することを可能にする、第一の軸（例えば、ｘ）および第二の軸（例えば、ｙ）の２本の軸内で２つの自由度の程度を有する。
【００９７】
コンピュータ・システム600は、カスタマイズされたハードワイアード・ロジック、一つ以上のASICまたはFPGAs、ファームウェアおよび／または（コンピュータ・システムと組合わせてコンピュータ・システム600を専用マシンに変える）プログラム・ロジックを使用して、本願明細書／図面に記述される技術を実装することができる。一つの実施態様によれば、本願明細書／図面に記述される技術は、プロセッサ604が、メイン・メモリ606に含まれている一つ以上の命令の一つ以上のシーケンスを実行することに応答して、コンピュータ・システム600によって実行される。このような命令は、ストレージ・デバイス610のような他のストレージ媒体からメイン・メモリ606に読出すことができる。メイン・メモリ606に含まれている命令のシーケンスの実行により、プロセッサ604は、ここに記述されるプロセス・ステップを実行する。代替実施態様では、ハードワイアード回路は、ソフトウェア命令の代わりにまたはそれと組合わせて使用することができる。
【００９８】
「ストレージ媒体」という本願明細書／図面に使用される用語は、マシンを特有の方法で作動させるデータおよび／または命令を格納する任意の非一時的媒体を意味する。このようなストレージ媒体は、不揮発性媒体および／または揮発性媒体を備えることができる。不揮発性媒体は、例えば、ストレージ・デバイス610のような、光学または磁気ディスクを含む。揮発性媒体は、メイン・メモリ606のような動的メモリを含む。ストレージ媒体の一般的な形態は、例えば、フロッピ・ディスク、フレキシブル・ディスク、ハードディスク、ソリッド・ステート・ドライブ、磁気テープ、または他の任意の磁気データ・ストレージ媒体、CD-ROM、他の任意の光データ・ストレージ媒体、穴のパターンを有する任意の物理媒体、RAM、PROMおよびEPROM、FLASH-EPROM、NVRAM、他の任意のメモリ・チップまたはカートリッジを含む。
【００９９】
ストレージ媒体は、送信媒体とは異なるが、送信媒体と共に使用することができる。送信媒体とは、ストレージ媒体間に情報を転送するためのものである。例えば、送信媒体は、バス602を備えるワイヤを含む、同軸ケーブル、銅ワイヤおよびファイバ光学部品を含む。送信媒体は、無線波および赤外光データ通信の間に生成される波のような音響波または光波の形態をとることもできる。
【０１００】
媒体の種々の形態は、プロセッサ604による実行のために一つ以上の命令の一つ以上のシーケンスを保持することに関係させることができる。例えば、命令は、最初、遠隔コンピュータの磁気ディスクまたはソリッド・ステート・ドライブに担持させることができる。遠隔コンピュータは、命令をそのダイナミック・メモリにロードし、かつモデムを使用して電話線によりこの命令を送信することが出来る。コンピュータ・システム600に属するモデムは、電話線によりデータを受信し、かつ赤外送信機を使用してこのデータを赤外信号に変換することが出来る。赤外検出器は、赤外信号に担持されているデータを受信し、かつ適切な回路が、このデータをバス602に配置することが出来る。バス602は、メイン・メモリ606へのデータを担持し、プロセッサ604は、そこで命令を検索しかつ実行する。メイン・メモリ606が受信した命令は、オプションとして、プロセッサ604による実行の前または後の何れかにストレージ・デバイス610に格納させることができる。
【０１０１】
コンピュータ・システム600は、バス602に結合されている通信インタフェース618も含む。通信インターフェース618は、ローカル・ネットワーク622に接続されているネットワーク・リンク620に対し、双方向データ通信カップリングを提供する。例えば、通信インタフェース618は、総合デジタル通信網（ISDN）カード、ケーブル・モデム、衛星モデム、またはデータ通信接続を電話線が対応するタイプに提供するモデムとすることができる。他の具体例として、通信インタフェース618は、互換性のあるLANにデータ通信接続を提供するローカル・エリア・ネットワーク（LAN）カードとすることができる。無線リンクを、実装することもできる。いずれの種類の実装においても、通信インタフェース618は、様々なタイプの情報を表すデジタル・データ・ストリームを担持する電気、電磁気または光信号を送受信する。
【０１０２】
ネットワーク・リンク620は、通常、一つ以上のネットワークにより他のデータ・デバイスへのデータ通信を提供する。例えば、ネットワーク・リンク620は、ローカル・ネットワーク622を介して、ホスト・コンピュータ624への、またはインターネット・サービス・プロバイダ（ISP）626によって作動されるデータ装置への、接続を提供することができる。ISP626は、次で、現在広く「インターネット」628と呼ばれているワールドワイド・パケット・データ通信ネットワークを介して、データ通信サービスを提供する。ローカル・ネットワーク622およびインターネット628は、両方とも、デジタル・データ・ストリームを担持する電気的、電磁気または光信号を使用する。コンピュータ・システム600へ／からデジタル・データを担持する、各種ネットワークを介した信号およびネットワーク・リンク620上にありかつ通信インタフェース618を介した信号は、送信媒体の形態の具体例である。
【０１０３】
コンピュータ・システム600は、ネットワーク、ネットワーク・リンク620および通信インタフェース618によって、メッセージを送信し、かつプログラム・コードを含むデータを受信することが出来る。インターネットの具体例では、サーバ630は、アプリケーション・プログラム用のリクエストされたコードを、インターネット628、ISP626、ローカル・ネットワーク622および通信インタフェース618によって、送信するかもしれない。
【０１０４】
プロセッサ604は、受信コードを受信すると同時に、それを実行し、および／または後の実行のために、ストレージ・デバイス610または他の不揮発性ストレージに格納することができる。
【０１０５】
一実施態様では、本願明細書／図面に記載されているシステムの一部もしくは全部は、システムの各種コンポーネントを一組のサーバ側プロセスとして集合的に実装する一つ以上のサーバ・コンピュータ・デバイスを含むサーバ・コンピュータ・システムとすることができ、またはそれを備えることができる。サーバ・コンピュータ・システムは、ウェブ・サーバ、アプリケーション・サーバ、データベース・サーバ、および／または図示されたコンポーネントが、記載されている機能性を提供するために使用する他の従来のサーバ・コンポーネントを含むことができる。サーバ・コンピュータ・システムは、（これらに限定されるものではないが、ユーザが作動させるクライアント・コンピューティング・デバイス、デスクトップ・コンピュータ、タブレットまたはスマートフォンを含むこと、遠隔探査デバイス、および／または他のサーバ・コンピュータ・システムを含む）様々なソースの何れかからの入力データを備えるネットワーク・ベースの通信を受信することができる。
【０１０６】
一実施態様では、一定のサーバ・コンポーネントは、インターネットのような一つ以上のネットワークによってシステムに結合されている「クラウド」ベースのコンポーネントを使用して、完全にまたは部分的に実装することができる。クラウド・ベースのコンポーネントは、インターフェースに露出し、これにより、これらのコンポーネントは、処理、ストレージ、ソフトウェア、および／またはシステムの他のコンポーネントへの他の資源を提供する。一実施態様では、第三のサード・パーティ・エンティティが、コンポーネントが配備されている他のエンティティに対して、クラウド・ベースのコンポーネントを実装することができる。しかしながら、他の実施態様では、記載されたシステムは、単一エンティティによって所有されかつ作動されているコンピュータ・システムによって、完全に実装させることができる。  
【０１０７】
７．０  拡張および代替
本明細書において、「第一の」、「第二の」、「一定の」および「特定の」という用語は、クエリ、計画、表現、ステップ、オブジェクト、デバイスまたは他のアイテムを区別するための命名規則として使用されているので、これらのアイテムは導入された後に、参照することができる。本出願では特に明記しない限り、これらの用語の使用は、参照されたアイテムの順番、タイミングまたは他のいかなる特徴も意味するものではない。
【０１０８】
本明細書において、本発明の実施態様は、それが各実施態様ごとに相違する多数の具体的な詳細を参照して記載された。したがって、何が本発明であるかそして本出願人が意図する本発明を示す唯一のものは、以後のいかなる修正も含む、特有の形態で、本出願について特許される請求項の組である。これに関して、本出願の特許請求の範囲では特有の従属請求項が記載されているが、本出願の従属請求項の特徴は、他の従属請求項の特徴および本出願の独立請求項の特徴と、適切に、組合わせることができ、そして請求項の組内で規定されている特有の従属性のみによって組合わされるものではないことに留意する必要がある。
【０１０９】
これらの請求項に含まれる用語に対しここにおいて明確に規定されるいかなる定義も、請求項において用いられている用語の意味を決めるものとする。それ故、請求項において明白に詳述されていない限定、要素、特性、特徴、効果または属性は、いかなる形態であれ、この種の請求項の範囲を限定するものではない。従って、明細書および図面は、限定する意味ではなく、例示するものとみなすべきである。
【０１１０】
優先権主張
本出願は、２０１４年３月２６日に出願された仮出願第６１／９７０，８９４号および２０１４年４月３日に出願された仮出願第６１／９７５，００１号の利益を主張する。このコンテンツの全体は、特許法第１１９条（ｅ）の下で、あたかも本願明細書において完全に記載されているかのように、引用によって、本願に組み込まれている。
【図１】
2018182771.tif 000003
【図２Ａ】
2018182771.tif 000004
【図２Ｂ】
2018182771.tif 000005
【図３】
2018182771.tif 000006
【図４】
2018182771.tif 000007
【図５】
2018182771.tif 000008
【図６】
2018182771.tif 000009