(57)【要約】受信データストリームに挿入されたポインタ群は、最終的にデータストリーム内の他の場所（たとえば他のセグメント）を指し示すポインタ値を含む。まずポインタ値は、ヌル値に設定され得る。なぜならデータストリームにおける他のセグメント、他のポインタ群のアドレス、または各々のインデックスは、ライブ映像から受信されるか、またはデータストリームに挿入されるかの何れかまで判明され得ないからである。データの新セグメントは、ライブ映像などの元データストリームから受信される。本発明の処理機能は、新たに受信されるセグメントまたはポインタ群に適切な値で、ポインタ群におけるヌルポインタ値をバックフィルする。データストリームに適切なポインタ値をバックフィルする結果、データストリームを見る個々のユーザは、データストリーム間のナビゲーションを開始できる。殆ど遅延なくライブ映像を視聴できる。
2009540758.tif 000002
【特許請求の範囲】
【請求項１】
参照提供方法であって、前記参照提供方法は、
ストリーミングデータの第１セグメントに関連するポインタ群を維持すべく、第１保存領域を割当てることと、
前記第１保存領域の割当と前記第１セグメントの受信の後、前記ストリーミングデータの第２セグメントに関連するポインタ群を維持すべく、第２保存領域を割当てることであって、前記第２保存領域の場所は、前記第１セグメントに関連する長さである第１セグメント関連長さに少なくとも部分的に依存することと、
前記第２保存領域を参照すべく、前記第１保存領域に関連する前記ポインタ群の変更を開始することと
を備える、参照提供方法。
【請求項２】
前記ポインタ群の変更の開始は、
前記第２セグメントに関連する前記ポインタ群を保存する前記第２保存領域に関連するアドレスのポインタを含めるべく、前記第１セグメントに関連する前記ポインタ群を変更することであって、前記第１セグメントに関連する前記ポインタ群における少なくとも１つのポインタは、前記第１セグメント関連長さに依存することを含む、請求項１記載の参照提供方法。
【請求項３】
前記ポインタ群の変更の開始は、
ｉ）前記第２保存領域、
ｉｉ）前記第２セグメントに関連する前記ポインタ群、および
ｉｉｉ）前記第２セグメント、
のうちの少なくとも１つに関連するアドレスのポインタを含むべく、前記第１セグメントに関連する前記ポインタ群を変更することを含む、請求項１記載の参照提供方法。
【請求項４】
前記参照提供方法は更に、
前記第２保存領域の割当と前記第２セグメントの受信の後、前記ストリーミングデータの第３セグメントに関連するポインタ群を維持すべく、第３保存領域を割当てることであって、前記第３保存領域の場所は、前記第２セグメントに関連する長さである第２セグメント関連長さに少なくとも部分的に依存することと、
前記第２セグメント関連長さに依存して、前記第１保存領域に関連する前記ポインタ群におけるポインタ値の変更を開始することと
を備える、請求項１記載の参照提供方法。
【請求項５】
前記参照提供方法は更に、
前記第２保存領域の割当と前記第２セグメントの受信の後、前記ストリーミングデータの第３セグメントに関連するポインタ群を維持すべく、第３保存領域を割当てることであって、前記第３保存領域の場所は、第２セグメント関連長さに依存することと、
対応する挿入ポインタ群を含むデータの各々のストリームとして前記第１セグメント、前記第２セグメント、および前記第３セグメントを維持することであって、各々の前記ポインタ群は、前記各ストリーム内の複数の場所にポインタを含み、前記ポインタは、個々のユーザが各々の入力に基づきデータの各々のストリームにおける異なる場所にスキップできるようにすることと
を備える、請求項１記載の参照提供方法。
【請求項６】
前記参照提供方法は更に、
前記ストリーミングデータの第３セグメントに関連するポインタ群を維持すべく、第３保存領域を割当てることと、
挿入ポインタ群を含むべく、前記ストリーミングデータから少なくとも部分的に得られるデータの各々のストリームを維持することであって、前記挿入ポインタ群は、前記第１保存領域、前記第２保存領域、および前記第３保存領域を含むことと、
前記第２保存領域に関連するアドレスに各々のポインタを含むべく、前記第１保存領域を維持することと、
前記第３保存領域に関連するアドレスに各々のポインタを含むべく、前記第２保存領域を維持することと
を備える、請求項１記載の参照提供方法。
【請求項７】
前記参照提供方法は更に、
前記ストリーミングデータの第３セグメントに関連するポインタ群を維持すべく、第３保存領域を割当てることと、
前記第１保存領域、前記第２保存領域、および前記第３保存領域を含む挿入ポインタ群を含むべく、前記ストリーミングデータから少なくとも部分的に得られるデータの各々のストリームを維持することと、
ｉ）前記第１保存領域に関連するアドレスの第１ポインタと、ｉｉ）前記第３保存領域に関連するアドレスの第２ポインタとを含むべく、前記第２保存領域を維持することと
を備える、請求項１記載の参照提供方法。
【請求項８】
前記参照提供方法は更に、
前記ストリーミングデータの第３セグメントに関連するポインタ群を維持すべく、第３保存領域を割当てることと、
挿入ポインタ群を含むべく前記ストリーミングデータから少なくとも部分的に得られるデータの各々のストリームを維持することであって、前記挿入ポインタ群は、前記第１保存領域、前記第２保存領域、および前記第３保存領域を含むことと、
ｉ）前記第２保存領域に関連するアドレスの第１ポインタと、ｉｉ）前記第３保存領域に関連するアドレスの第２ポインタとを含むべく、前記第１保存領域を維持することであって、前記第１ポインタと前記第２ポインタは、前記データの各々のストリームが再生されるとき、複数の早送り速度を可能にすることと
を備える、請求項１記載の参照提供方法。
【請求項９】
前記第１保存領域の割当は、ほぼリアルタイム様式で前記第１セグメントの受信に応じて生じ、
前記第２保存領域の割当は、前記第１セグメントの受信後、リアルタイム様式で前記第２セグメントの受信に応じて生じ、
前記ポインタ群の変更の開始は、前記第２セグメントの処理後、前記ポインタ群に関連する値をバックフィルすることを含む、請求項１記載の参照提供方法。
【請求項１０】
前記参照提供方法は更に、
遠隔ソースからライブ映像として前記ストリーミングデータを受信することと、
個々のユーザが、前記ライブ映像のほぼ現在位置まで前記ストリーミングデータを見る速度を制御できるようにするため、前記ポインタ群の変更を開始することと
を備える、請求項１記載の参照提供方法。
【請求項１１】
前記参照提供方法は更に、
遠隔ソースからライブ映像として前記ストリーミングデータを受信することと、
個々のユーザが、前記ライブ映像のほぼ現在位置まで前記ストリーミングデータを見る速度を制御できるようにするため、前記第１保存領域と第２保存領域に関連する前記ポインタ群の前記挿入とバックフィルを開始することと
を備える、請求項１記載の参照提供方法。
【請求項１２】
前記参照提供方法は更に、
同じデータストリームにおいて連続様式で前記第１セグメントに関連する前記ポインタ群、前記第１セグメント、前記第２セグメントに関連する前記ポインタ群、および前記第２セグメントを保存すること
を備える、請求項１記載の参照提供方法。
【請求項１３】
コンピュータ読取可能媒体を含むコンピュータプログラム製品であって、前記コンピュータ読取可能媒体は、
ストリーミングデータの第１セグメントに関連するポインタ群を維持すべく、第１保存領域を割当てる命令と、
前記第１保存領域の割当て後、前記ストリーミングデータの第２セグメントに関連するポインタ群を維持すべく、第２保存領域を割当てる命令であって、前記第２保存領域の場所は、前記第１セグメントに関連する長さである第１セグメント関連長さに少なくとも部分的に依存することと、
前記第１セグメント関連長さに依存して、前記第１保存領域に関連する前記ポインタ群の変更を開始する命令と
を含む、コンピュータプログラム製品。
【請求項１４】
データストリームマネージャを備える参照提供装置であって、
前記データストリームマネージャは、遠隔ソースからライブ映像としてストリーミングデータを受信し、
前記データストリームマネージャは、最初に前記ストリーミングデータの第１受信セグメントに関連する所定ポインタにヌル値を割当て、
前記データストリームマネージャは、前記ストリーミングデータの第２セグメントの受信と処理の後、前記第２受信セグメントを指し示す適切な値で、前記所定ポインタをバックフィルすることを特徴とする、参照提供装置。
【請求項１５】
前記データストリームマネージャは、前記ストリーミングデータに関連するセグメントのサイズに依存して異なる各々の間隔で、前記ストリーミングデータ内にポインタの挿入を開始し、
各々の前記ポインタは、最初に各々ヌル値を割当てられたが、後に前記ストリーミングデータの連続セグメントを受取り次第、適切なポインタ値でバックフィルされる、請求項１４記載の参照提供装置。
【請求項１６】
前記データストリームマネージャは、前記ストリーミングデータの各々の将来の受信されるセグメントに関連するアドレスにインデックスを付ける値に、前記所定ポインタを設定する、請求項１４記載の参照提供装置。
【請求項１７】
前記所定ポインタは、個々のユーザが、前記ライブ映像のほぼ現在位置まで前記ストリーミングデータを見る速度を制御できるようにする、請求項１４記載の参照提供装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストリームに関連する参照を提供する参照提供方法と参照提供装置に関する。
【背景技術】
【０００２】
従来技術は、対応する加入者に情報をより迅速かつ効率的に伝達することを可能にした。たとえばケーブルネットワーク空間において今やデジタルケーブルは、各々のテレビ受信機で再生する異なる様式のストリームされたデータコンテンツを受信すべく、加入者に多重チャネルを提供する。
【０００３】
従来型ケーブル技術に従って各々の加入者は、対応ケーブル会社から送信されたコード化デジタル情報を受信する加入者の家庭にいわゆるセットトップボックス装置を備えることがある。コード化データを受取り次第、セットトップボックスは、テレビ視聴者によって選択された多重チャネルのうちの一つを復号する。復号されると、視聴者宅にある各々のセットトップボックスは、選択されたチャネルから得られた復号データの適切な「ラスタ」信号で対応テレビジョン方式を駆動する。従ってテレビ視聴者は、ケーブル会社によって送信され、対応セットトップボックスによって受信された対応テレビ番組を見ることが可能である。
【０００４】
ある特定の状況において録画映画またはビデオのストリームを送信する代わりに、ケーブル会社は、各々の視聴者が視聴する一または複数のライブ映像を送信する。ライブ映像の例は、ニュース会社によって製作されるリアルタイムビデオクリップである。ニュース会社は、いわゆるライブビデオをケーブル会社に供給する。次にケーブル会社は、各々の加入者にライブ映像に関連する各々のコンテンツを分配する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
コンテンツの従来式送信に関連する１つの欠陥は、セットトップボックスによって受信される各々のデータストリーム間のナビゲーションを制御する各々の視聴者の能力である。たとえば上記のように、ケーブル会社からの従来型映像（たとえばライブまたは録画データストリーム）は、ユーザが各々のストリームにおいてナビゲーションを実行するため、ユーザ宅の各々のデジタルビデオレコーダシステムに保存されなければならない。そうでなければ受信コンテンツは、視聴者によって再生またはナビゲート（たとえば早送モードと巻戻モードを介して）されることは不可能である。
【課題を解決するための手段】
【０００６】
以下の開示物は、受信データストリーム（例えばライブデータストリーム）をより効率的に処理し、ライブデータストリーム間のナビゲーションを可能にする対応ポインタ群を発生させる幾つかの有用な実施形態を含む。たとえば一実施形態に従って本明細書におけるシステムは、最初に対応ポインタ群を備えない受信データストリーム（たとえばビデオ情報の生データストリーム）を、挿入ポインタ群を含む各々のデータストリームに変換する。ポインタ群には、データストリームを見る個々のユーザが、データストリーム間のナビゲーションを開始できるようにすると共に、可能な限りリアルタイムに近くデータストリームのライブ映像を見られるようにするナビゲーション（たとえば早送りと巻戻しのうちの少なくとも一方の）ポインタを含むことが可能である。
【０００７】
より具体的には、一実施形態において各々の処理機能は、逐次受信されたライブ映像のセグメントを処理し、ユーザによるナビゲーションを可能にするため、ストリームにおいて各々のポインタ群を挿入する。たとえば本明細書における実施形態に従う各々の処理機能は、データの第１セグメント（たとえばライブ映像の第１論理部分）を受信し、ストリーミングデータの第１セグメントに関連するポインタ群を維持または保存すべく、第１保存領域（たとえば新たに発生したデータストリームのうちの一部）を割当てる。処理機能は、受信データストリームの次の逐次セグメントを受取るまで、最初に新たなデータストリームにおける「先行」または早送りのポインタのうちの少なくとも一部に値（たとえばアドレス値）を割当てることができない。
【０００８】
この例において処理機能が、第１セグメントの受取り後にストリーミングデータの第２セグメント（たとえばライブ映像の第２論理部分）を受信すると想定する。上記のように第１保存領域（たとえばメモリ、ディスクなどの各々のリポジトリ（収容場所）において）を割当てた後、処理機能は、ストリーミングデータの第２セグメントに関連するポインタ群を維持すべく、第２保存領域（たとえばリポジトリにおける）を割当てる。第２保存領域の場所は、各々のデータストリームにおいて受信されたコンテンツのセグメントがポインタ群と交錯するように、ストリーミングデータの第１セグメントの関連長さに少なくとも部分的に依存可能である。
【０００９】
一実施形態において、新たに発生したデータストリームにおけるポインタ群のうちの各々は、データストリームにおける他のセグメントに対して複数のポインタ値を含む。たとえばポインタ群におけるポインタのうちの第１ポインタは、１ホップ離れた各々の受信データストリームにおける別のセグメントを同定でき（たとえば前方または後方の方向で）、各々のポインタ群における第２ポインタは、２ホップ離れた各々のセグメントを指し示すことが可能であり、各々のポインタ群における第３ポインタは、４ホップ離れた各々のセグメントを指し示すことができ、各々のポインタ群における第４ポインタは、１０ホップ離れた各々のセグメントを指し示すことができる、などである。
【００１０】
一実施形態において各々のポインタは、ユーザが様々なポインタ値を用いることによって、データストリーム間をナビゲート（たとえば異なる早送りと巻戻しの速度によって）できるようにする。たとえば個々のユーザは、データストリームにおいて各々の続く第１０セグメントごとにポインタを用いることによって、非常に高速の早送りを開始可能である。個々のユーザは、データストリームにおいて各々の続く次セグメントごとを指し示す各々のポインタを用いることによって、より遅い速度の早送り（または巻戻し）を開始可能である。
【００１１】
データの各々の新セグメントがライブ映像から受信されると、処理機能は、最初に「エンプティ」ポインタ群を挿入する。各々の連続セグメントまたは幾つかの連続セグメントの受信後、処理機能は、データストリームにおいて適切な前向きポインタ値を含めるべく、ポインタ群をバックフィルする。各々のデータストリームにおいてポインタ群に関連するポインタ値の変更とバックフィルを開始することによって、個々のユーザは、ライブ映像のほぼ現在位置（たとえばリアルタイム位置付近）までストリーミングデータを見る速度を制御可能である。
【００１２】
このように一実施形態に従って本明細書における技術を用いることによって、ｉ）ライブ映像（またはライブ映像の同等物）の取込開始の数秒内（たとえば５秒以下などの固定数のフレームまたはセグメント）にライブ映像を流す能力、ｉｉ）ライブ映像の取込開始の数秒内にライブ映像を休止させる能力、ｉｉｉ）ストリームが休止または巻戻された後、ライブ映像の流動点の手前数秒の所まで早送りする能力、およびｉｖ）ブロック／タイル内のメモリコントローラの最高水位線を変更せずにメモリをアップデートする能力を提供可能である。
【００１３】
本明細書における技術は、たとえば複数の加入者に分配されたライブデータストリームなどのナビゲート可能なデータストリームを発生させるアプリケーションなどのアプリケーションにおける使用に優れている。しかしここで留意すべきは、本明細書における構成がそのようなアプリケーションにおける使用に限定されないこと、従って本明細書における構成とその偏差物が同様に他のアプリケーションにも優れていることである。
【００１４】
たとえばロジック、バッファ、レジスタなどの離散ハードウェア成分を介して実行される可能性があることに加えて、本明細書における他の実施形態は、たとえば各々のデータストリーム内に挿入されたポインタ群をバックフィルする前述の技術を支援するように構成されるコンピュータ化デバイスなど（たとえばコンピュータ処理システム、ホストコンピュータ、パーソナルコンピュータ、ワークステーションなど）のハードウェアプラットホームを含むことが可能である。そのような実施形態においてコンピュータ化デバイスは、記憶装置、処理装置（たとえばプロセッサ）、および各々の相互接続を含む。相互接続は、処理装置を記憶装置に連結する。記憶装置は、処理装置で実行される場合、ナビゲート可能なデータストリームを生成するアプリケーション（たとえばソフトウェアコード）でコード化される。
【００１５】
本明細書において開示される本用途の更に別の実施形態は、上記に要約されると共に下記に詳細が開示される方法実施形態と操作を実行するソフトウェアプログラムを含む。より具体的には本明細書における実施形態は、本明細書において説明されるようにライブ映像からナビゲート可能なデータストリームを生成すべく、コンピュータ化デバイスで実行され得る、コード化されるコンピュータプログラム論理を含むコンピュータプログラム製品（たとえばコンピュータ読取可能媒体）を含む。コンピュータプログラム論理は、計算システムを備える少なくとも一つの処理装置で実行されるとき、本開示物の実施形態として本明細書において示される操作（たとえば方法）を処理装置に実行させる。本明細書において更に開示されるそのような配置は、一般的にソフトウェア、コードと、たとえば光媒体（たとえばＣＤ−ＲＯＭ）、フロッピまたはハードディスクなどのコンピュータ読取可能媒体または、たとえばファームウェアあるいは一または複数のＲＯＭまたはＲＡＭまたはＰＲＯＭチップ内のマイクロコードなどの他の媒体で配置またはコード化される他のデータ構造のうちの少なくとも１つとして、または特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、あるいは一または複数のモジュールにおいてダウンロード可能なソフトウェア画像、共有ライブラリなどとして提供される。ソフトウェアまたはファームウェアまたは他のそのような構成は、コンピュータ化デバイスに据付けることによって、コンピュータ化デバイスにおける一または複数の処理装置に本明細書において説明される技術を実行させることが可能である。
【００１６】
本用途のうちの１つのより特定の実施形態は、本明細書における実施形態に従うナビゲート可能なデータストリームの発生、維持および使用を支援すべく命令が保存されるコンピュータ読取可能媒体を含むコンピュータプログラム製品を対象とする。命令は、各々のコンピュータ装置の処理装置によって実行されるとき、ｉ）ストリーミングデータの第１セグメントに関連するポインタ群を維持すべく、第１保存領域を割当てる段階と、ｉｉ）ストリーミングデータの第２セグメントに関連するポインタ群を維持すべく、第２保存領域を割当てる段階であって、第２保存領域の場所は、ストリーミングデータの第１セグメントの関連長さに少なくとも部分的に依存することと、ｉｉｉ）第１保存領域に関連するポインタ群に対して変更を開始する段階とを処理装置に実行させる。本用途の他の実施形態は、上記に要約されると共に下記に詳細が開示される方法実施形態の段階と操作の何れかを実行するソフトウェアプログラムを含む。
【００１７】
本用途の前述の目的と他の目的、形状構成および利点は、添付の図面に例示されるように、以下のより具体的な好適実施形態の説明から明らかになるだろう。図面中、類似の参照文字は、様々な図を通じて同じ部品を示す。図面は、必ずしも縮尺通りではなく、その代わり、実例の実施形態、原理および概念を例示することに重きを置く。
【発明を実施するための最良の形態】
【００１８】
以下の開示物は、受信データストリーム（たとえばライブ映像）を効率的に処理し、対応するポインタ群（たとえば参照、インデックスなど）を挿入するために有用な幾つかの実施形態を含む。ポインタは、データストリーム間のナビゲーションを可能にする。
【００１９】
たとえば受信データストリーム内に挿入された各々のポインタ群は、データストリーム内の他の場所（たとえば他のセグメント）を指し示すポインタ値を最終的に含む。しかし各々のポインタ群におけるポインタ値は、最初にヌル値に設定可能である。なぜならデータストリームにおける他のセグメントまたは他のポインタ群のアドレスまたは各々のインデックスは、各々の次の一または複数のセグメントが、ライブ映像から受信されるまで、判明し得ないからである。すなわち新たに生じるポインタ群は、データストリームに関連する一または複数の対応する次のセグメントの各々の長さが判明されるまで、データストリームにおける将来のインデックス値を指し示すことができない。データの新セグメントは、たとえばライブ映像などの元データストリームから受信されると、本明細書における処理機能は、ポインタ群のヌルポインタ値を適切な値で新たに受信されたセグメントまたはポインタ群にバックフィルする。
【００２０】
後述されるように、データストリーム内に前に挿入されたポインタ値をバックフィルすることによって、データストリームを見る個々のユーザが、データストリーム間のナビゲーションを開始でき、潜在的に殆ど遅延無しにライブ映像を見られるようになる。従って、本明細書における実施形態は、最初は対応するポインタ群を備えない受信データストリーム（たとえばビデオ情報の生データストリーム）を「最新の」ナビゲーション（たとえば、早送りと巻戻しのうちの少なくとも一方の）ポインタを含む各々のデータストリームに変換するシステムを含む。
【００２１】
図１は、本明細書における実施形態に従うデータストリームマネージャ１０５−１の略図である。ここで留意すべきは、データストリームマネージャ１０５−１が、同時に複数のストリームについてデータの新セグメント処理の管理、機能性のバックフィルと分配機能性の開始を同時に行うことである。以下の実例の実施形態は、明確にするためデータストリーム１０２（たとえば遠隔ソースから受信されたライブ映像）へのポインタの挿入とリポジトリにおける結果の保存について重点的に取り組む。しかし複数のデータストリームの処理と分配を達成するため、本明細書における一実施形態は、セグメントが受信および処理されると、ほぼリアルタイムで（遅延して）複数のユーザが、複数データストリームのうちの各々を選択的に見ることができると共に、受信データストリームの保存部分間をナビゲートできるように、複数のデータストリームマネージャ１０５を並行して操作することを含む。すなわちデータストリームマネージャ１０５−１は、複数のライブ映像を同時に受信できると共に、各々のデータストリーム内にポインタ値を挿入／バックフィル可能である。
【００２２】
本実施例との関連において通信システム１００（たとえばデータストリーミングシステム）は、データストリームマネージャ１０５−１と、ネットワーク１５０と、ビデオ情報の視聴、オーディオ情報の傾聴などのための複数のユーザドメイン１９０（たとえば家庭環境）とを含む。一実施形態においてデータストリームマネージャ１０５−１は、データストリームパーサ１１０と、バッファ１３０（進行中のポインタ１２０−Ｘ群とコンテンツセグメント１２５−Ｘを保存する）と、リポジトリ１８０と、データストリーム分配マネージャ１４５とを含む。各々のユーザドメイン１９０は、各々のディスプレイ画面１９２（たとえばテレビ受信機、コンピュータシステム、メディアプレーヤなど）とセットトップボックス１９４を含むことが可能である。
【００２３】
一実装に従って、ユーザドメイン１９０−１に関連する個々のユーザ（たとえば加入者）は、各々のメディアプレーヤ１９２−１（たとえばテレビ受信機、ビデオプレーヤ、音楽プレーヤなど）によって再生されるべく、ビデオとオーディオ情報のうちの少なくとも一方のストリーミングを制御するため、入力信号１９６−１を各々のセットトップボックス１９４−１に提供する。そのような実装において各々のセットトップボックス１９４−１は、個々のユーザから受信された入力制御信号１９６−１をデータストリームマネージャ１０５−１のデータストリーム分配マネージャ１４５にネットワーク１５０を通じて伝える。
【００２４】
ネットワーク１５０を通じて個々のユーザから受信された命令に基づき、データストリーム分配マネージャ１４５は、リポジトリ１８０またはバッファ１３０から選択されたストリームに関連する適切なデータを各々のユーザドメイン１９０に流す。従って各々の家庭環境は、個々のユーザがネットワーク１５０を通じて受信（たとえばストリーミングデータ）および送信（たとえば入力命令）できるようにする比較的簡単なセットトップボックス１９４を含むことが可能である。一実施形態においてデータストリームマネージャ１０５−１は、ユーザの要求に依存して多くのデータストリームを処理および分配する中央集中配置とみなされることが可能である。
【００２５】
データストリームマネージャ１０５−１の１つの目的は、ドメイン１９０のユーザが、リアルタイムまたは可能な限りリアルタイムに近い方法で各々のデータストリームを見られるようにすることである。入力に基づき個々のユーザは、ナビゲーション（たとえば早送りと巻戻し）機能を用いることによって、各々のデータストリーム間をナビゲート可能である。用語「ライブ映像」は、任意の録画情報、およびデータストリームマネージャ１０５−１によってまだ完全に処理されていない遠隔ソースから受信されたライブ放送を含む。一実施形態の目的は、局部保存すべくライブ映像内にポインタ群を挿入することと、ネットワーク１５０を通じてデータストリーム１０２のコンテンツをユーザに転送することである。
【００２６】
上記のように受信データストリーム（たとえば録画ビデオ情報などのライブ映像）内に挿入された各々のポインタ群のポインタ値は、最初はヌル値に設定可能である。なぜならデータストリームにおける他のセグメントまたは他のポインタ群のアドレスまたは各々のインデックスは、次のセグメントまたは将来のセグメントがデータストリーム１０２から受信されてしまうまで、判明し得ないからである。すなわちライブ映像データストリーム１０２の新たに受信されたセグメントに関連するポインタ群は、データストリーム１０２の対応する一または複数の次のセグメントの各々の長さが判明するまで、データストリームの将来のインデックス値を指し示すことはできない。
【００２７】
データの連続セグメントが、元のライブデータストリームから受信されると、本明細書における処理機能は、新たに受信されたセグメントまたはポインタ群にポインタ群のヌルポインタ値を適切な値でバックフィルする。後述するようにデータストリーム内に前に挿入されたヌルまたは一時的なポインタ値のバックフィルは、データストリームを見る各々のユーザが、データストリーム間のナビゲーションを開始できるようにし、更に潜在的に殆ど遅延なしにライブ映像を見られるようにする。従って本明細書におけるシステムは、最初は対応するポインタ群を備えない受信データストリーム（たとえばビデオ情報の生データストリーム）を「最新」のナビゲーション（たとえば早送りと巻戻しのうちの少なくとも一方の）ポインタを含む各々のデータストリームに変換する。
【００２８】
図１に示すようにデータストリーム１０２（たとえばライブ映像）を受取り次第、データストリームパーサ１１０は、データストリーム１０２の進行中のセグメントを解析し、バッファ１３０内に保存する。最初にデータストリームマネージャ１０５−１は、バッファ１３０において進行中のセグメント１２５−Ｘに関連するヌルポインタ１２０−Ｘ群を生じさせる。すなわちデータストリーム１０２において受信された第１、第２、第３などの各セグメント（たとえば、いわゆる映像群を規定するデジタルデータ群）について、データストリームマネージャ１０５−１は、バッファ１３０において各々のセグメント（たとえばデータコンテンツの長さ）を保存し、前記セグメントに関連する各々のポインタ群（たとえば一または複数のポインタ）を生じさせる。先に述べたようにポインタ１２０−Ｘ群は、データストリーム１０２における他の場所（たとえば他の挿入ポインタ群）を指し示す単一ポインタまたは複数ポインタを含むことが可能である。
【００２９】
この明細書において更に記載され得るように、ポインタ群は、データストリームにおける将来のセグメントを指し示すポインタと、データストリームにおける先のセグメントのポインタとを含むことが可能である。所定のポインタ群における前方ポインタは、最初にヌル値に設定される。なぜなら将来のセグメントがデータストリームマネージャ１０５−１によって受信されるまで、最初の処理時に前方ポインタ値がどうなるかまだ判明していないからである。従ってデータストリーム１０２の各々の新セグメントを受取り次第、データストリームマネージャ１０５−１は、まだ受信されていないデータストリーム１０２の部分に対して、バッファ１３０において各々ヌルポインタ群を生じさせる。データストリーム１０２における先のセグメントの位置は、すでに判明しているので、データストリームマネージャ１０５−１は、ポインタ１２０−Ｘ群にヌルポインタ値を投入する代わりに、ポインタ１２０−Ｘ群内に後ろ向きポインタを直ちに埋めることが可能である。バッファ１３０からデータストリーム１０２の最近受信セグメントに対応するポインタ群をリポジトリ１８０に移すと、データストリームマネージャ１０５−１は、ネットワーク１５０を通じて一または複数の個々のユーザに新セグメントが流され得ることをデータストリーム分配マネージャ１４５に知らせる。
【００３０】
一実施形態においてポインタは、再生モードと休止モードの切替の移行を支援する。ポインタ群の一部は、前方と後方の画像用のポインタを備えることが可能であると共に、全ての可能なナビゲーション命令を達成すべく、進行中の画像用に各々のポインタを含むことが可能である。いわゆる進行中のポインタは、再生を開始すべくまたは再生を停止する場所として用いることが可能である。また進行中のポインタは、画像が表示された時点でストリームが進行中の画像の出だしに逆戻りし続ける休止の状態にあるとき、自ら繰返すべく用いられることが可能である。早送りと巻戻しは、移動休止とみなすことが可能である。すなわち単にどの画像が表示されるか、またはＰＴＰの観点からジャンプすべくどのポインタが選ばれるかの問題である。
【００３１】
上記と更にこの開示物において記載されるように、いわゆるＰＴＰ（たとえばポインタ群を含むメタデータ）における前方ポインタは、ＰＴＰとその対応ＧＯＰ（画像群）が、メモリに書き込まれた後にアップデートされ、更に取込んでいるコンテンツの再生を開始する待ち時間は、第１完全画像の取込みと解析がし終わる前であっても、ＢＦＤメモリにコンテンツの書き込みを開始できるという事実によって、劇的に減少する。
【００３２】
本明細書における実施形態に従ってＰＴＰの進行中のポインタと後方ポインタは、前方ポインタと同じようにアップデートされる必要は全くない。なぜなら取込アナライザは、ストリームのうちの一部分をそれぞれ最初にメモリに書込時に過去と現在については知っているが、将来についてはわかっていないからである。従って本明細書における技術は、ユーザが休止、巻戻し、早送り、および非常に速やかに（またはライブ映像の先端部分により近くで）再生できるようにする。図２は、本明細書における実施形態に従うデータストリーム１０２の処理を例示する時間チャートである。
【００３３】
第１サイクル時間Ｔ１（たとえば第１処理サイクル）においてデータストリームマネージャ１０５−１は、データストリーム１０２から第１セグメントＳＥＧ１を受信し、対応するバッファ１３０内に第１セグメントＳＥＧ１を保存する。たとえばデータストリームマネージャ１０５−１は、バッファ１３０のセグメント１２５−Ｘ内に第１セグメントＳＥＧ１を保存する。上記のように第１セグメントＳＥＧ１は、遠隔ソースから受信されたライブ映像に関連する最も直近の受信データの論理的分類（たとえば逐次表示されるビデオ画像群）を示すことが可能である。
【００３４】
第１セグメントＳＥＧ１について、データストリームマネージャ１０５−１は、第１前方ポインタ第１前方ポインタＦＰＴ１、第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３を含めるべく、対応するポインタ１２０−Ｘ群を発生させる。前方ポインタ数は、単一ポインタから多数のポインタまで各々の用途に依存して変動する可能性がある。
【００３５】
第１ポインタ群ＰＳ１が生じると、データストリームマネージャ１０５−１は、最初にＰＳ１の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３をたとえばゼロなどのヌル値に設定する。なぜならＰＳ１のポインタがどの将来のセグメントを指し示すことになるかをまだ具体的にわかっていないからである。バッファにおいて第１ポインタ群ＰＳ１（たとえばポインタ１２５−Ｘ群として、Ｘ＝１の場合）を生じた後、データストリームマネージャ１０５−１は、第１ポインタ群ＰＳ１に対応する第１セグメントＳＥＧ１を、リポジトリ１８０に移動させる。この初期処理後、データストリームマネージャ１０５−１のデータストリーム分配マネージャ１４５は、各々のメディアプレーヤで出来るだけリアルタイムに近くデータストリーム１０２の表示を偶然リクエストしているドメイン１９０の対応視聴者に第１セグメントＳＥＧ１を潜在的に流す可能性がある。データストリームマネージャ１０５−１は、データストリーム１０２を発生させるソースと、たとえばドメイン１９０の個々のユーザなどの標的受信者とからの経路において小さな遅延（たとえば処理による０．２５〜１．０秒）を与え得る。
【００３６】
第２サイクル時間Ｔ２（たとえば第２セグメント処理サイクル）の間、データストリームマネージャ１０５−１は、バッファ１３０の初期コンテンツ（たとえばポインタ１２０−Ｘ群における第１ポインタ群ＰＳ１とセグメント１２５−Ｘにおける第１セグメントＳＥＧ１）をリポジトリ１８０内に移す。
【００３７】
そのコンテンツのバッファ１３０をフラッシュした後、データストリームマネージャ１０５−１は、データストリーム１０２に関連する次の受信セグメント（たとえばセグメント＃２）をバッファ１３０内に保存する。データストリームマネージャ１０５−１は、セグメント＃２に関連する各々のポインタ群を生じさせる上記処理を繰返す。たとえばデータストリームマネージャ１０５−１は、各々の新たに受信されたセグメントに対して新しいポインタ群を生じさせる。
【００３８】
新たに生じた各々のポインタ群における各々の前方ポインタは、最終的にリポジトリ１８０に保存されるデータストリーム１０２の将来のセグメントを参照すべくバックフィルされる。この場合もまた、ポインタ値は、最初に各々のポインタ群の発生時に判明されていないので、データストリームマネージャ１０５−１は、各々のポインタ値をゼロに設定する（たとえばヌル値は、保存データストリーム１４０における有効な場所を指し示さない）。たとえば第１サイクル時間Ｔ１においてデータストリームマネージャ１０５−１は、第１ポインタ群ＰＳ１の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３をたとえばゼロなどのヌル値に設定する。なぜならリポジトリ１８０における将来のセグメントの場所がまだ判明されていないからである。第２サイクル時間Ｔ２においてデータストリームマネージャ１０５−１は、第２ポインタ群ＰＳ２の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３をたとえばゼロなどのヌル値に設定する。なぜならリポジトリ１８０における将来のセグメントの場所がまだ判明されていないからである。第３サイクル時間Ｔ３においてデータストリームマネージャ１０５−１は、第３ポインタ群ＰＳ３の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３をたとえばゼロなどのヌル値に設定する。なぜならリポジトリ１８０における将来のセグメントの場所がまだ判明されていないからなどである。
【００３９】
ここで留意すべきは、データストリームマネージャ１０５−１が、対応受信セグメントに関連する、前に生じたポインタ群のポインタ値をアップデートできることである。たとえば第２サイクル時間Ｔ２の間、データストリームマネージャ１０５−１は、データストリーム１０２の将来の第２セグメントＳＥＧ２を指し示すべく第１ポインタ群ＰＳ１をバックフィル可能である。なぜなら、この後の時点で第２ポインタ群ＰＳ２と第２セグメントＳＥＧ２のうちの少なくとも一方が、リポジトリ１８０の何処に保存され得るかが判明するからである。すなわち第２サイクル時間Ｔ２の間、データストリームマネージャ１０５−１は、第２ポインタ群ＰＳ２がリポジトリ１８０に保存されるデータストリーム１４０に存在する対応場所の各々のアドレス値に第１ポインタ群ＰＳ１の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３を設定する。第３サイクル時間Ｔ３の間、データストリームマネージャ１０５−１は、第２ポインタ群ＰＳ２と第３ポインタ群ＰＳ３が、リポジトリ１８０に保存されるデータストリーム１４０において存在する対応場所の各々のアドレス値に第１ポインタ群ＰＳ１の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３を設定する。第３サイクル時間Ｔ３においてデータストリームマネージャ１０５−１はまた、第３ポインタ群ＰＳ３がリポジトリ１８０に保存されるデータストリーム１４０において存在する対応場所の各々のアドレス値に第２ポインタ群ＰＳ２の第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３を設定する。第１０サイクル時間Ｔ１０によって、データストリームマネージャ１０５−１は、第１ポインタ群ＰＳ１を最終ポインタ値に完全にバックフィルする。たとえば第１前方ポインタＦＰＴ１は、第２セグメントＳＥＧ２に関連する各々の保存場所を指し示し、第２前方ポインタＦＰＴ２は、セグメント４に関連する各々の保存場所を指し示し、第３前方ポインタＦＰＴ３は、第１０セグメントＳＥＧ１０に関連する各々の保存場所を指し示すなどである。
【００４０】
ここで留意すべきは、図４がデータストリームマネージャ１０５−１によって生じる挿入ポインタ群を含む各々の保存データストリーム４０２において将来のセグメントを指し示す最終ポインタ群の略図を含むことである。データストリーム４０２は、データストリーム１０２に関連するコード化情報および挿入された第１ポインタ群ＰＳ１，第２ポインタ群ＰＳ２，第３ポインタ群ＰＳ３などの群を含む。
【００４１】
図４において示されるようにデータストリームマネージャ１０５−１は、第１セグメントＳＥＧ１に関連する第１ポインタ群ＰＳ１が、各々のデータストリーム４０２における複数の他の場所を指し示すように、各々のバックフィル処理を完了している。たとえばＰＳ１の第１前方ポインタＦＰＴ１は、第２ポインタ群ＰＳ２と第２セグメントＳＥＧ２のうちの少なくとも一方を指し示すべく、アドレスまたはポインタ値でバックフィルされており、ＰＳ１の第２前方ポインタＦＰＴ２は、第４ポインタ群ＰＳ４と第４セグメントＳＥＧ４のうちの少なくとも一方を指し示すべく、アドレスまたはポインタ値でバックフィルされており、第１ポインタ群ＰＳ１の第３前方ポインタＦＰＴ３は、第１０ポインタ群ＰＳ１０と第１０セグメントＳＥＧ１０のうちの少なくとも一方を指し示すべく、アドレスまたはポインタ値でバックフィルされている、などである。
【００４２】
従って本明細書における実施形態は、ｉ）将来の保存領域に関連するアドレス（たとえばＰＳ１に関連する第１前方ポインタＦＰＴ１は、第２ポインタ群ＰＳ２に対応する第２セグメントＳＥＧ２を保存する保存領域を指し示すべく、変更可能である）と、ｉｉ）将来のセグメントに関連するポインタ群（たとえば、第１ポインタ群ＰＳ１に関連する第１前方ポインタＦＰＴ１は、第２ポインタ群ＰＳ２を指し示すことが可能である）と、ｉｉｉ）データストリームにおける次のセグメント（たとえば第１ポインタ群ＰＳ１に関連する第１前方ポインタＦＰＴ１は、将来の第２セグメントＳＥＧ２を指し示すことが可能である）とのうちの少なくとも一方を指し示すべく、各々のデータストリームにおける一または複数のポインタを変更する技術を含む。
【００４３】
一実施形態において対応ポインタ群における各々の前方ポインタは、次のセグメントに関連するポインタ群の開始アドレス場所を指し示す。たとえば図４において示すように、各々のポインタ群における第１前方ポインタＦＰＴ１は、次のセグメントに関連するポインタ群のアドレスを指し示すことができ、第２前方ポインタＦＰＴ２は、各々の次の第３セグメントに関連するポインタ群のアドレスを指し示し、第３前方ポインタＦＰＴ３は、次の第９セグメントに関連するポインタ群のアドレスを指し示す、などである。
【００４４】
再び図２を参照すると、データストリームマネージャ１０５−１は、リポジトリ１８０に保存されるデータストリーム１４０を生成すべく、各々の受信データストリーム１０２内にポインタ群が挿入されるように、データストリーム１０２のポインタ群に対応するセグメントを保存可能である。先に述べたようにデータストリーム１０２の各々のセグメントのサイズは、データストリームマネージャ１０５−１によって受信されるまでわからない。従ってデータストリームマネージャ１０５−１は、各々のポインタ群に対して適切な値を最初に生じさせることはできない。
【００４５】
しかし上記のように、最終的にデータストリームマネージャ１０５−１は、データストリーム１０２の十分な将来のセグメントを受信し、ポインタ群に関連する適切な値をバックフィル可能である。たとえば第１０サイクル時間Ｔ１０によって、データストリームマネージャ１０５−１は、第１セグメントＳＥＧ１に関連するＰＳ１の最終ポインタ値群を生じさせることが可能である。第１１サイクル時間Ｔ１１によって、データストリームマネージャ１０５−１は、第２ポインタ群ＰＳ２に対応する第２セグメントＳＥＧ２の最終ポインタ値群を生じさせることが可能であるなどである。
【００４６】
従って本明細書における実施形態は、対応する挿入ポインタ群を含むデータの各々のストリームとしてデータの複数セグメントを維持する技術を含む。データストリーム内に挿入されたそれぞれのポインタ群のうちの各々は、個々のストリーム内における複数の場所のポインタを含む。この明細書において後述され得るようにポインタは、それぞれのデータのストリームにおける様々な場所に個々のユーザがスキップできるようにする。
【００４７】
図３は、本明細書における実施形態に従うデータストリーム１０２の処理を例示する各々のサイクルの略図である。この場合のデータストリームマネージャ１０５−１は、ポインタ値の部分的バックフィルを実行しない。その代わりデータストリームマネージャ１０５−１は、データストリーム１０２の十分な将来のセグメントが、データストリームマネージャ１０５−１によって受信および処理されたとき、各々のポインタ群をバックフィルする。
【００４８】
より具体的にはデータストリームマネージャ１０５−１は、ポインタ群を生じさせると共に、リポジトリ１８０にデータストリーム４０２として保存される受信データストリーム１０２内に前記ポインタ群を挿入する。しかしデータストリームマネージャ１０５−１は、データストリームマネージャ１０５−１が、それぞれのポインタ群の各々のポインタに対して最終ポインタ値を生じさせることができるまで、ポインタ群において適切なポインタ値をバックフィルしない。たとえば第１０サイクル時間Ｔ１０まで、第１ポインタ群ＰＳ１のポインタ値は、全てゼロのヌル値を含む。第１０サイクル時間Ｔ１０においてデータストリームマネージャ１０５−１は、将来のポインタ群とセグメントのうちの少なくとも一方を指し示す各アドレス値で第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２、および第３前方ポインタＦＰＴ３をバックフィルする。第１１サイクル時間Ｔ１１においてデータストリームマネージャ１０５−１は、第２ポインタ群ＰＳ２をバックフィルする。第１２サイクル時間Ｔ１２においてデータストリームマネージャ１０５−１は、第３ポインタ群ＰＳ３に関連するポインタ値をバックフィルするなどである。
【００４９】
本明細書において述べるように、データストリームマネージャ１０５−１は、個々のユーザが「ヌルポインタ」を飛び越すことによって各々のライブ取込み（たとえばデータストリーム１０２）の「先端」まで早送りできるようにする（ヌルポインタはまだ満たされていない）。逆にデータストリームマネージャ１０５−１は、ユーザが各々のデータストリーム１０２に対して生じ、満たされたポインタ群まで先端からジャンプできるようにする。これは、「最終アドレス」および「最終完成アドレス」と呼ばれる更に二つのポインタを備えることによって達成可能である。データセグメントがロードされる度に「最終アドレス」は、この値にアップデートされる。ポインタ群が完成される度に「最終完成アドレス」は、この値にアップデートされる。
【００５０】
早送りの間、たとえばデータストリームマネージャ１０５−１によって提供される機能性などのアルゴリズムは、最終的に前方ポインタが完成されていないセグメントに到達する。この点でコードは、「最終アドレス」（データストリーム１０２のライブ先端）にジャンプし、通常再生に低下する。
【００５１】
ユーザがライブ再生の先端にいるなら、巻戻ポインタは、まだ満たされるべきではない。予測通り、この場合のアルゴリズムは、「最終完成アドレス」にジャンプし、そこから巻戻しを始めることが可能である。従って個々のユーザは、データストリーム１０２のライブの先端（またはライブの先端近く）を見ることができ、データストリーム１０２の保存部分に関する巻戻し機能を実行可能である。
【００５２】
図５は、本明細書における実施形態に従って個々の保存データストリーム５０２内に挿入されたポインタ群の略図である。上記のように、各々のポインタ群（たとえばＰＳ１，ＰＳ２など）は、前方ポインタ（たとえば第１前方ポインタＦＰＴ１，第２前方ポインタＦＰＴ２，第３前方ポインタＦＰＴ３など）と後方ポインタ（たとえば、ＢＰＴ１，ＢＰＴ２，ＢＰＴ３など）を含むことが可能である。図示されるように本明細書における一実施形態は、同じか共通のデータストリームにおいて連続様式で各々のセグメントに関連する各々の複数ポインタ群を保存することを含む。すなわちリポジトリ１８０に保存された処理データストリーム１４０は、第１ポインタ群と続く第１セグメント、第２ポインタ群と続く第２セグメント、第３ポインタ群と第３セグメントなどを含むことが可能である。
【００５３】
再び図１を簡単に参照すると、受信データストリーム１０２内の前方と後方のポインタの１つの目的は、個々のユーザが、リポジトリ１８０内に保存された個々のデータストリームのうちのどの部分を各々のメディアプレーヤで再生すべきかを制御できるようにすることである。たとえば挿入された前方と後方のポインタは、個々のユーザが異なる速度でたとえば先送り機能と巻戻し機能などのナビゲーションを実行できるようにする。
【００５４】
環境１９０−１で個々のユーザが、リポジトリ１８０内の保存データストリーム１４０に関連する進行中の視聴点を早送りすべく、入力１９６−１（たとえば遠隔制御装置を介して）を発生させると想定する。データストリーム分配マネージャ１４５は、ネットワーク１５０を通じてこの命令を受信し、その後、各々のデータストリーム１４０における前方ポインタを用いることによって、前方にジャンプし、ネットワーク１５０を通じてデータストリーム１４０における異なる場所のデータをユーザに流す。第１前方ポインタＦＰＴ１は、第１速度の早送りを可能にし、第２前方ポインタＦＰＴ２は、第２速度の早送りを可能にし、第３前方ポインタＦＰＴ３は、第３速度の早送りを可能にするなどである。もちろんユーザは、たとえばデータストリームマネージャ１０５−１によって受信および処理されるデータストリーム１０２などのライブまたは進行中の映像の現在位置を越えて各々のデータストリーム１０２の視聴を早送りできない。
【００５５】
受信データストリームにポインタを挿入することによって、個々のユーザは、たとえばデータストリームマネージャ１０５−１によって受信されたリアルタイムにより近い映像のライブ映像のほぼ現在位置までストリーミングデータを見る速度を制御できる。この少量の遅延は、データストリーム１０２の最も直近に受信したセグメントを処理するデータストリームマネージャ１０５−１の結果として生じる可能があるが、データストリーム分配マネージャ１４５は、前に処理されたセグメントを個々のユーザ（または複数のユーザ）にネットワーク１５０を通じて供給する。
【００５６】
一実施形態においてネットワーク１５０は、インターネット、広域ネットワーク、ローカルエリアネットワークなどのネットワークを示す。従ってデータストリームマネージャ１０５−１は、たとえば環境１９０などの複数の異なる場所へのデータのストリーミングを管理する中央集中配置として働く。
【００５７】
図１〜図５は、本明細書における実施形態に従うデータストリームマネージャ処理機能１０５−１に関連する機能性を記載する。図６は、本明細書における実施形態に従う一または複数の処理機能を実行する実例アーキテクチャを例示する略図である。
【００５８】
図示するように、データストリームマネージャ１０５−１は、この明細書において述べられる実施形態を実行すべく、処理装置１１３に対応するソフトウェアコード（たとえばスケジューラアプリケーション１４０−１）を含む各々のコンピュータシステムにおいて実行可能である。図６に示すような実施形態に代わるものとして、データストリームマネージャ１０５−１は、たとえば論理ゲート、バッファなどのハードウェア成分によって、または適切なハードウェアとソフトウェアのリソースの両形式を組み合わせることによって実行可能である。
【００５９】
図６に示すように本実施例のコンピュータシステム３１０は、記憶装置３１２、処理装置３１３、入力／出力インターフェース３１４、および通信インターフェース３１５を連結する相互接続３１１を含む。入力／出力インターフェース３１４は、コンピュータシステム３１０がたとえばリポジトリ１８０、データストリーム３３０、手持ち式マウスなどの周辺機器と通信できるようにする。データストリームマネージャ１０５−１を実行するコンピュータシステム３１０は、これらの周辺機器の全て、幾つかを含むか、または何れも含まないことが可能である。通信インターフェース３１５は、コンピュータシステム３１０がストリーミングデータを様々な標的ユーザ環境１９０に分配できるようにする。
【００６０】
図示するように、記憶装置３１２は、ストリーミングデータ内にポインタ値を挿入する機能性と、ストリーミングデータの新セグメントが受信および処理されると、ポインタ値を修正する機能性とを支援する第１データストリームマネージャアプリケーション１４２−１でコードされる。第１データストリームマネージャアプリケーション１４２−１は、たとえば本明細書において記載される様々な実施形態に従う処理機能性を支援するデータと論理命令のうちの少なくとも一方（たとえばメモリ、またはディスクなどの別のコンピュータ読取可能媒体に保存されるコード）などのソフトウェアコードとして具現化可能である。作動中、処理装置３１３は、起動、ラン、実行、解読、あるいは第１データストリームマネージャアプリケーション１４２−１の論理命令を実行するため、相互接続３１１を介して記憶装置３１２にアクセスする。第１データストリームマネージャアプリケーション１４２−１を実行することによって、データストリームマネージャ処理部１４２−２において処理機能性がもたらされる。すなわちデータストリームマネージャ処理部１４２−２は、図１において上記したようなデータストリームマネージャ１０５−１の一または複数の部分を示す。
【００６１】
ここで留意すべきは、コンピュータシステム３１０において実行される第１データストリームマネージャアプリケーション１４２−１が、図６において第１データストリームマネージャアプリケーション１４２−１とデータストリームマネージャ処理部１４２−２のうちの少なくとも何れか一方、または両方によって示されることである。これを論議するため、データストリームマネージャ１０５−１は、本明細書において記載される技術を実行すべく様々な段階と機能性動作を実行または支援するとして、全般的に述べられることになる。
【００６２】
同様にここで留意すべきは、本明細書における構成例が、第１データストリームマネージャアプリケーション１４２−１自体を含むことである（すなわち非実行または不履行論理命令とデータのうちの少なくとも一方）。第１データストリームマネージャアプリケーション１４２−１は、コンピュータ読取可能媒体（たとえばフロッピィディスクなど）、ハードディスク、または光媒体に保存され得る。第１データストリームマネージャアプリケーション１４２−１はまた、たとえばファームウェア、読取専用メモリ（ＲＯＭ）などの記憶装置３１２内またはこの実施例において、実行可能なコードとして、たとえばランダムアクセスメモリ（ＲＡＭ）に保存され得る。これらの実施形態に加えて、同様にここで留意すべきは、本明細書における他の実施形態が、スケジューラ処理部１４２−２として、処理装置３１３における第１データストリームマネージャアプリケーション１４２−１の実行を含むことである。従って当業者は、本明細書において記載される機能性を実行すべく、データ通信装置が他の処理と、ソフトウェアおよびハードウェア成分とのうちの少なくとも一方を含み得ることを理解するだろう。
【００６３】
図７は、本明細書における実施形態に従うデータストリームに関連するポインタの値をバックフィルする技術を例示するフローチャート７００である。ここで留意すべきは、図７が図１〜図６に対して述べたような実施形態に関して記載され得ることである。また、上記のように、データストリームマネージャ１０５−１と関連機能性がハードウェアとソフトウェアのうちの少なくとも一方で実行できることに留意する。
【００６４】
ステップＳ７１０においてデータストリームマネージャ１０５−１は、ストリーミングデータ１０２の第１受信セグメントに関連するポインタ群を維持すべく、リポジトリ１８０において第１保存領域の割当てを開始する。
【００６５】
ステップＳ７２０においてデータストリームマネージャ１０５−１は、ストリーミングデータの第２セグメントに関連するポインタ群を維持すべく、リポジトリ１８０において第２保存領域の割当てを開始する。たとえば個々のポインタを保存する第２保存領域のアドレスなどの場所は、ストリーミングデータの第１セグメントの関連長さに少なくとも部分的に依存する。
【００６６】
ステップＳ７３０においてデータストリームマネージャ１０５−１は、第１セグメントの関連長さに依存して、第１保存領域に関連するポインタ群（たとえば、一または複数のポインタ）の変更を開始する。すなわちデータストリームマネージャ１０５−１は、リポジトリ１８０における第２保存領域を参照すべく、第１保存領域に関連するポインタ群の変更を開始する。一実施形態においてデータストリームマネージャ１０５−１は、将来の受信されるセグメントの長さに依存して、ポインタ群のポインタ値をバックフィルすることによって、この目的を遂げる。
【００６７】
図８と図９は一緒になって、本明細書における実施形態に従うストリーミングデータへのポインタの挿入、ポインタ値のバックフィルなどの技術を例示するフローチャート８００（たとえばフローチャート８００−１とフローチャート８００−２）を形成する。
【００６８】
ステップＳ８１０においてデータストリームマネージャ１０５−１は、ストリーミングデータ（たとえば録画ビデオストリームなどのライブ映像）の第１セグメントを受信する。
【００６９】
ステップＳ８２０においてデータストリームマネージャ１０５−１は、第１セグメントと、第１セグメントに関連する各々のポインタ群（たとえばＰＳ１）とを保存すべく、リポジトリ１８０において第１保存領域を割当てる。
【００７０】
ステップＳ８３０においてデータストリームマネージャ１０５−１は、まず第１セグメントに関連する各々のポインタ群を、ヌル値（たとえばゼロなどの無意味な値）に割当てる。
【００７１】
ステップＳ８４０においてデータストリームマネージャ１０５−１は、ストリーミングデータの第２セグメントを受信する。たとえばデータストリームマネージャ１０５−１は、第１セグメントに関連する処理の完了後、第２セグメントを受信する。
【００７２】
ステップＳ８５０においてデータストリームマネージャ１０５−１は、第２セグメントと各々のポインタ群を保存すべく、リポジトリ１８０において第２保存領域を割当てる。一実施形態において第２保存領域の各々の場所（たとえばアドレス）は、ストリーミングデータの第１セグメントの関連長さに、少なくとも部分的に依存する。なぜなら第２領域に関連するポインタ群は、第１セグメントの後、しかし第２セグメントの前に保存される（たとえばアドレス的に）からである。
【００７３】
ステップＳ８６０においてデータストリームマネージャ１０５−１は、最初に第２セグメントに関連する各々のポインタ群を、ヌル値に割当てる。
図９において示されるフローチャート８００−２のステップＳ９１０において、データストリームマネージャ１０５−１は、第１セグメントに関連する各々のポインタ群におけるポインタを、第２保存領域にインデックスを付ける各々の値にバックフィルする（たとえば、ヌル値またはポインタに、関連する古い値を上書きする）。すなわちデータストリームマネージャ１０５−１は、第２保存領域におけるアドレスにポインタを、変更またはアップデートする。一実施形態において、アップデートされたポインタ値は、第２保存領域または第２ポインタ群に関連する開始アドレスを、指し示す。
【００７４】
ステップＳ９２０においてデータストリームマネージャ１０５−１は、ストリーミングデータの第３セグメントを受信する。
ステップＳ９３０においてデータストリームマネージャ１０５−１は、第３セグメントと各々のポインタ群（たとえば第３ポインタ群）を保存すべく、第３保存領域を割当てる。一実施形態において第３保存領域（たとえば第３ポインタ群）の各々の場所（たとえばアドレス）は、ストリーミングデータの第２セグメントの関連長さに、少なくとも部分的に依存する。第３領域に関連するポインタ群は、ストリーミングデータの第２セグメントの後、しかし第３セグメントの前に保存される（たとえばアドレス的に）。
【００７５】
ステップＳ９４０においてデータストリームマネージャ１０５−１は、最初に第３セグメントに関連する各々のポインタ群をヌル値に割当てる。
ステップＳ９５０においてデータストリームマネージャ１０５−１は、第１セグメントに関連する各々のポインタ群におけるポインタを、第３保存領域を指し示す（インデックスを付ける）各々の値にバックフィルする（たとえばヌル値または古い値を、上書きする）。すなわち一実施形態においてデータストリームマネージャ１０５−１は、第２保存領域におけるアドレスにポインタ（第１セグメントに関連するポインタ群における）を、変更またはアップデートする。一実施形態においてデータストリームマネージャ１０５−１は、第２保存領域に関連する開始アドレスを指し示すべく、各々のポインタ値をアップデート可能である。
【００７６】
ステップＳ９６０においてデータストリームマネージャ１０５−１は、第２セグメントに関連する各々のポインタ群におけるポインタを、第３保存領域を指し示す（たとえばインデックスを付ける）各々の値にバックフィルする。すなわち一実施形態においてデータストリームマネージャ１０５−１は、第３保存領域におけるアドレスにポインタ（第２セグメントに関連するポインタ群における）を、変更またはアップデートする。データストリームマネージャ１０５−１は、第３保存領域に関連する開始アドレスを指し示すべく、各々のポインタ値をアップデート可能である。
【００７７】
先に述べたように本明細書における技術は、たとえばストリーミングデータに挿入されるポインタ値のバックフィルなどの用途における使用によく適している。しかしここで留意すべきは、本明細書における構成が、そのような用途の使用に限定されないことと、従って本明細書における構成とその偏差物が同様に他の用途にもよく適していることである。
【００７８】
本発明は、その好適な実施形態を参照して具体的に図示し、説明してきたが、添付の請求項によって規定されるような本発明の趣旨と範囲から逸脱することなく、形態および詳細において種々の変更を行い得ることを当業者は理解するだろう。そのような変更は、本発明の範囲の対象とするよう意図される。上記のように本発明の実施形態の前述の説明は、限定するよう意図されない。むしろ、本発明の実施形態の何れかの限定は、以下の請求項において示される。
【図面の簡単な説明】
【００７９】
【図１】本明細書における実施形態に従う、データストリーム処理装置のブロック略図。
【図２】データストリーム処理装置が、本明細書における実施形態に従って各々のデータストリームのセグメントのポインタ値を、バックフィルする技術を開始する方法を例示する、時系列。
【図３】データストリーム処理装置が、本明細書における実施形態に従って各々のデータストリームのセグメントのポインタ値を、バックフィルする技術を開始する方法を例示する時系列。
【図４】本明細書における実施形態に従う将来のセグメントを指し示す複数のポインタ群の挿入を含む、各々のデータストリームの略図。
【図５】本明細書における実施形態に従う将来と過去のセグメントを指し示す複数のポインタ群の挿入を含む、各々のデータストリームの略図。
【図６】本明細書における実施形態に従う、コンピュータシステムの略図。
【図７】本明細書における実施形態に従う、各々のデータストリーム内にポインタを挿入する技術を例示するフローチャート。
【図８】本明細書における実施形態に従う、各々のデータストリーム内にポインタを挿入する、より具体的な技術を例示するフローチャート。
【図９】図８の続きのフローチャート。
【図１】
2009540758.tif 000003
【図２】
2009540758.tif 000004
【図３】
2009540758.tif 000005
【図４】
2009540758.tif 000006
【図５】
2009540758.tif 000007
【図６】
2009540758.tif 000008
【図７】
2009540758.tif 000009
【図８】
2009540758.tif 000010
【図９】
2009540758.tif 000011
【国際調査報告】
2009540758.tif 000012