(57)【特許請求の範囲】
【請求項１】
デジタルコンピュータ内の複数のモジュールを通してストリーミングデータのフレームを処理する方法であって、
上記モジュールの複数を、接続されたグループとしてパイプを構築するステップを含み、上記モジュールの少なくとも１つは再構成モジュールであり、
所定のサブフレームを有する複合フレームを割振るステップと、
上記ストリーミングデータを、上記グループ内の異なるモジュールを通して異なるサブフレーム内へ移送するステップと、
上記再構成モジュール内の少なくとも若干のサブフレームの間で上記データを再構成するステップと、
を更に含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項３】
上記複合フレームは、メモリ内の物理的フレームであることを特徴とする請求項１に記載の方法。
【請求項４】
上記サブフレームは、上記物理的フレームと同一のメモリ内に定義されている仮想フレームであることを特徴とする請求項３に記載の方法。
【請求項５】
上記複合フレームのためのアロケータを、上記パイプ内のモジュールの１つに割当てるステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項６】
上記アロケータを、上記パイプ内の最も遠い上流再構成モジュールに割当てることを特徴とする請求項５に記載の方法。
【請求項７】
上記アロケータを、上記パイプ内の最も遠い下流再構成モジュールに割当てることを特徴とする請求項５に記載の方法。
【請求項８】
上記データを上記再構成モジュール内においてどのように再構成するのかを指定するフレームネスティング木を構築するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項９】
他の複数のモジュールを含む他の複数のパイプを構築するために、上記コンピュータ内で上記諸ステップを繰り返すステップと、
上記パイプを互いにグラフに結合するステップと、
を更に含むことを特徴とする請求項１に記載の方法。
【請求項１０】
上記ストリーミングデータの移送は、上記再構成モジュールによって処理されるサブフレームの全てが使用可能になった時に限って、そのモジュールに制御トランザクションを供給することを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
デジタルコンピュータ内の少なくとも１つの再構成モジュールを含むパイプ内に配置されている複数のモジュールを通してストリーミングデータのフレームを処理する方法であって、
複数のサブフレームを有する複合フレームを割振るステップと、
上記再構成モジュールにデータを供給する何れかのモジュール内のサブフレームに対する操作を遂行するステップと、
上記再構成モジュールにデータを供給するサブフレームの全てに対する操作が完了した後に、上記再構成モジュールに制御トランザクションを供給するステップと、
上記制御トランザクションに応答して、上記再構成モジュールに供給されるサブフレームに対する操作を遂行するステップと、
を含むことを特徴とする方法。
【請求項１２】
請求項１１に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１３】
上記複合フレームの割振りは、上記パイプ内の各モジュール毎のエントリと、特定のモジュールが上記フレームに対する操作を完了したか否かを指示する各モジュール毎のフラグとを有するフレーム制御テーブルを構築することを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
１つのモジュールが１つのフレームに対する操作を完了した時に、上記フラグの１つをセットするステップを更に含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
上記複合フレーム内のサブフレームの構造を指定するオフセットテーブルを構築するステップを更に含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
上記パイプ内のモジュールの構造を指定するパイプ制御テーブルを構築するステップを更に含むことを特徴とする請求項１１に記載の方法。
【請求項１７】
上記パイプ制御テーブルは、上記パイプ内の少なくとも若干のモジュールのためのエントリを有し、上記各エントリは、他のどの１つまたは複数のモジュールが上記パイプ内のモジュールの１つにデータを供給するのかを指定していることを特徴とする請求項１６に記載の方法。
【請求項１８】
上記パイプ制御テーブルは、上記パイプ内の各モジュール毎に、上記パイプの外側からデータを供給するエントリを有していることを特徴とする請求項１６に記載の方法。
【請求項１９】
複数の複合フレームが上記パイプ内を同時に循環するように、上記諸ステップを時間的に重畳させて繰り返すステップを更に含むことを特徴とする請求項１１に記載の方法。
【請求項２０】
上記各複合フレーム毎に、分離したフレーム制御テーブルを構築するステップを更に含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
デジタルコンピュータ内の複数の再構成モジュールを含むモジュールを通してストリーミングデータのフレームを処理する方法であって、
上記再構成モジュールを含む複数のモジュールの接続されたグループとしてパイプを構築するステップと、
単一のアロケータを上記モジュールの１つに割当てるステップと、
上記再構成モジュールのそれぞれに関連付けられた所定のサブフレームを有する複合フレームを割振るステップと、
上記ストリーミングデータを、上記グループ内の異なるモジュールを通して異なるサブフレーム内へ移送するステップと、
上記再構成モジュール内のサブフレームの間で上記データを再構成するステップと、
を含むことを特徴とする方法。
【請求項２２】
請求項２１に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２３】
上記データを上記再構成モジュール内においてどのように再構成するのかを指定するフレームネスティング木を構築するステップを更に含むことを特徴とする請求項２１に記載の方法。
【請求項２４】
各モジュール毎の定オフセットフラグを収集するステップを更に含むことを特徴とする請求項２１に記載の方法。
【請求項２５】
上記定フラグがセットされている何れかのモジュールのためのオフセット値を収集するステップを更に含むことを特徴とする請求項２４に記載の方法。
【請求項２６】
上記複合フレームに対する上記サブフレームの関係を指定するオフセットテーブルを構築するステップを更に含むことを特徴とする請求項２４に記載の方法。
【請求項２７】
上記複合フレーム内の各サブフレーム毎のメモリサイズを指定するステップを更に含むことを特徴とする請求項２４に記載の方法。
【請求項２８】
上記複数の再構成モジュールは、上記パイプ内のカスケード内の単一の型であることを特徴とする請求項２１に記載の方法。
【請求項２９】
上記カスケードにされたモジュールの型に応答して、上記アロケータが特定のモジュールに割当てられることを特徴とする請求項２８に記載の方法。
【請求項３０】
上記複数のカスケードにされたモジュールはミクサであり、上記アロケータは上記カスケード内の下流のミクサに割当てられることを特徴とする請求項２８に記載の方法。
【請求項３１】
上記複数のカスケードにされたモジュールはスプリッタであり、上記アロケータは上記カスケード内の下流のスプリッタに割当てられることを特徴とする請求項２８に記載の方法。
【請求項３２】
上記ストリーミングデータの移送は、上記再構成モジュールによって処理されるサブフレームの全てが使用可能になった時に限って、それぞれのモジュールに制御トランザクションを供給することを含むことを特徴とする請求項２１に記載の方法。
【請求項３３】
デジタルコンピュータ内のパイプに接続されている複数の再構成モジュールを含むモジュールを通してストリーミングデータのフレームを処理する方法であって、
異なる再構成モジュールのための複数のサブフレームを有する複合フレームを割振るステップと、
複数のソースモジュール内の若干のサブフレームに対してデータ供給操作を遂行するステップと、
各データ供給操作が完了した時に、ある操作を遂行するために上記再構成モジュールの１つがそれに要求されるサブフレームの全てを有しているか否かを決定するステップと、
もし諾であれば、上記１つの再構成モジュールに制御トランザクションを供給するステップと、
制御トランザクションを受信した後に、上記１つの再構成モジュールにおいて操作を遂行するステップと、
を含むことを特徴とする方法。
【請求項３４】
請求項３３に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項３５】
上記ソースモジュールは、上記パイプの外側からデータを受信するモジュールであることを特徴とする請求項３３に記載の方法。
【請求項３６】
上記複数の再構成モジュールはミクサであることを特徴とする請求項３３に記載の方法。
【請求項３７】
上記複数のミクサは、上記パイプ内でカスケードにされていることを特徴とする請求項３６に記載の方法。
【請求項３８】
各データ供給操作が完了した時に、操作を遂行するために他の再構成モジュールがそれらに要求されるサブフレームの全てを有しているか否かを決定するステップと、
もし諾であれば、上記他の再構成モジュールに制御トランザクションを供給するステップと、
上記制御トランザクションを受信した後に、上記他の再構成モジュールにおいて操作を遂行するステップと、
を含むことを特徴とする請求項３３に記載の方法。
【請求項３９】
上記パイプ内の各モジュール毎に、分離した完了フラグを格納するステップと、
対応するモジュールが上記フレームに対する操作を完了した時に、上記完了フラグの１つをセットするステップと、
を更に含むことを特徴とする請求項３３に記載の方法。
【請求項４０】
上記決定ステップは、
上記１つの再構成モジュールにデータを供給する上記他のモジュールの全てをリストしているテーブルを読むステップと、
上記他のモジュールの全ての完了フラグがセットされているか否かを決定するステップと、
を更に含むことを特徴とする請求項３９に記載の方法。
【請求項４１】
複数の複合フレームが上記パイプ内を同時に循環するように、上記諸ステップを時間的に重畳させて繰り返すステップを更に含むことを特徴とする請求項３３に記載の方法。
【請求項４２】
上記各複合フレーム毎に、分離したフレーム制御テーブルを構築するステップを更に含むことを特徴とする請求項４１に記載の方法。
【請求項４３】
ストリーミングデータを処理するコンピュータシステムであって、
上記ストリーミングデータを処理する複数のモジュールを備え、上記モジュールの少なくとも若干は再構成用であり、
ストリーミングデータを含ませるために、サブフレームを含む複合フレームを割振る複数のメモリ管理者と、
上記複数の再構成モジュールを含む少なくとも１つのパイプを有するグラフを構築し、且つ上記メモリ管理者の１つを上記パイプに割当てる流れ管理者と、
を更に備えていることを特徴とするコンピュータシステム。
【請求項４４】
上記複合フレームを格納するメモリを更に備えていることを特徴とする請求項４３に記載のシステム。
【請求項４５】
上記サブフレームは、上記メモリ内の上記複合フレーム内に割振られることを特徴とする請求項４４に記載のシステム。
【請求項４６】
プロセッサを更に含むことを特徴とする請求項４４に記載のシステム。
【請求項４７】
上記プロセッサは、１つまたはそれ以上の上記再構成モジュールを実現していることを特徴とする請求項４６に記載のシステム。
【請求項４８】
入力／出力システムを更に含むことを特徴とする請求項４６に記載のシステム。
【請求項４９】
上記入力／出力システムは、１つまたはそれ以上の上記モジュールを実現していることを特徴とする請求項４８に記載のシステム。
【請求項５０】
上記複合フレームの構造の表現を構築するパイプ管理者を更に備えていることを特徴とする請求項４３に記載のシステム。
【請求項５１】
上記表現の１つは、上記複合フレームに対する上記サブフレームの位置を指定することを特徴とする請求項５０に記載のシステム。
【請求項５２】
上記表現の１つは、上記パイプ内の上記モジュールの関係を指定することを特徴とする請求項５０に記載のシステム。
【請求項５３】
上記ストリーミングデータを、上記モジュールを通して上記種々のサブフレーム内へ移送する制御管理者を更に含むことを特徴とする請求項４３に記載のシステム。
【請求項５４】
上記制御管理者は、上記再構成モジュールの１つによって処理されるサブフレームの全てが使用可能になった時に限って、あるサブフレームの処理を開始させる制御トランザクションをそのモジュールに供給することを特徴とする請求項５３に記載のシステム。
【請求項５５】
ストリーミングデータを処理するコンピュータシステムであって、
パイプに配置され、上記ストリーミングデータを処理する複数のモジュールを備え、上記モジュールの少なくとも若干は再構成用であり、
ストリーミングデータを含ませるために、サブフレームを含む複合フレームを割振る複数のメモリ管理者を更に備え、異なるサブフレームは異なるモジュールに関連付けられ、
上記モジュールにおける処理操作を開始させる制御トランザクションを供給する制御管理者を更に備えている、
ことを特徴とするコンピュータシステム。
【請求項５６】
上記制御管理者は、特定のモジュールに関連付けられている上記サブフレームの若干が使用可能になった時に限って、上記制御トランザクションをそのモジュールに供給することを特徴とする請求項５５に記載のシステム。
【請求項５７】
上記若干のサブフレームは、上記特定のモジュールにデータを供給する上記サブフレームの全てを含むことを特徴とする請求項５６に記載のシステム。
【請求項５８】
上記モジュールの若干は、上記パイプの外側からデータを受信することを特徴とする請求項５５に記載のシステム。
【請求項５９】
上記制御管理者は、上記複合フレームの１つが割振られた時に、上記若干のモジュールに制御トランザクションを供給することを特徴とする請求項５８に記載のシステム。
【請求項６０】
上記再構成モジュールの少なくとも若干は、上記複数のサブフレームを組合わせるミクサであることを特徴とする請求項５５に記載のシステム。
【請求項６１】
上記複数のミクサは、上記パイプ内にカスケードにされていることを特徴とする請求項６０に記載のシステム。
【請求項６２】
上記制御管理者は、上記ミクサの何れかによって組合わされる上記サブフレームの全てが使用可能になった時に限って、上記制御トランザクションの１つをそのミクサに供給することを特徴とする請求項６１に記載のシステム。
【請求項６３】
上記複合フレームを格納するメモリを更に備えていることを特徴とする請求項５５に記載のシステム。
【請求項６４】
上記プロセッサは、１つまたはそれ以上の上記再構成モジュールを実現していることを特徴とする請求項６３に記載のシステム。
【請求項６５】
１つまたはそれ以上の上記モジュールを実現する入力／出力システムを更に含むことを特徴とする請求項６４に記載のシステム。
【請求項６６】
デジタルコンピュータ内のモジュールを通してストリーミングデータのフレームを処理する方法を、デジタルコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、上記方法は、
複数の上記モジュールの接続されたグループとしてパイプを構築するステップを含み、上記モジュールの少なくとも１つは再構成モジュールであり、
所定のサブフレームを有する複合フレームを割振るステップと、
上記ストリーミングデータを、上記グループ内の異なるモジュールを通して異なるサブフレーム内へ移送するステップと、
上記再構成モジュール内の少なくとも若干のサブフレームの間で上記データを再構成するステップと、
を更に含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項６７】
デジタルコンピュータ内の少なくとも１つの再構成モジュールを含むパイプに配置されている複数のモジュールを通してストリーミングデータのフレームを処理する方法を、デジタルコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、上記方法は、
複数のサブフレームを有する複合フレームを割振るステップと、
上記再構成モジュールにデータを供給する上記モジュールの何れか内の上記サブフレームに対する操作を遂行するステップと、
上記再構成モジュールにデータを供給する上記サブフレームの全てに対する操作が完了した後に、制御トランザクションを上記再構成モジュールに供給するステップと、
上記制御トランザクションに応答して、上記再構成モジュールに供給される上記サブフレームに対する操作を遂行するステップと、
を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
（技術分野）
本発明は電子データ処理に関し、詳述すれば、コンピュータ内の複数のハードウェア及び／またはソフトウェア処理モジュールによるストリーミングデータの流れの管理に関する。
【０００２】
【従来の技術】
（従来の技術）
ストリーミングデータは、最終的にユーザに、実時間で、特定のシーケンスで提示しなければならないデータの連続した流れである。例えば、オーディオ信号を表すデジタルサンプルは、それらが伝送されたシーケンスと同一のシーケンスで、且つそれらが生成された時間間隔と正確に同一の時間間隔で、またはユーザが指定したある代替で音響波に変換しなければならない。ビデオフレームを表すデジタルデータを一緒にディスプレイ上に表示させるためには、そのフレームに適切なシーケンスとしてアセンブリする必要があり、連続するフレームを正確な実時間レートで表示しなければならない。
【０００３】
ストリーミングデータは、いろいろな送信機、プロセッサ、メモリ、及び受信機の間の通信鎖全体を通して、必ずしも正しいシーケンスまたはタイミングを維持する必要はない。事実、ビデオ及びオーディオクリップは、静的データとして記録媒体、コンピュータメモリ、及びネットワークバッファ内に格納されることが多い。パケット交換システムも同一のストリーミングデータの部分を異なる経路を通して、また異なる時間シーケンスで伝送することができる。デジタルフィルタのようなプロセッサは、データストリームの複数の部分をアセンブルし、それらを静的ユニットとして変更し、次いでそれらをシステム内のさらなるユニットへ解放することができる。しかしながら、最終的には、ストリームは正しいシーケンスで、且つ適切な相対時間で聴かれる、または見られなければならない。
【０００４】
ストリーミングデータは殆ど常に、極めて大量のデータを含んでいる。ストリーミングデータは、それにアクセスし、それを伝送し、そしてそれを交換するために、殆ど常にコンピュータ内のデジタルバスの容量にチャレンジしている。ストリーミングデータは、それを受信し、それを変換し、そしてそれを他のユニットへ引渡すために、殆ど常に基本ユニットの処理能力（ソフトウェア及びハードウェアの両方）に負担をかけている。当分野では、ストリーミングデータのために“太いパイプ”が必要であると言われている。
【０００５】
ＷＤＭ−ＣＳＡ（ウィンドウズ（登録商標）ドライバモデル接続及びストリーミングアーキテクチャ）と呼ばれるアーキテクチャは、コンピュータの機能の間の接続を指定するためにグラフの概念を導入し、データストリームは多数の処理ユニットを効率的に通過しなければならない。ＷＤＭ−ＣＳＡプロトコルは、このようなデータのためのドライバの開発をも簡易化している。基本的にＷＤＭ−ＣＳＡは、グラフを通るデータフレームの流れを指定し、またデータフレームを要求してそれらを受入れるために、グラフ内の近接モジュールが相互に通信し合うための制御プロトコルをも指定している。
【０００６】
本願と同時に提出された特許出願（代理人ドケット777,183US1）“複数の処理ユニットを通るストリーミングデータの流れの改良”（Improving the Flow of Streaming Data through Multiple Processing Units）はデータパイプの概念を導入し、ＷＤＭ−ＣＳＡ内の、及び他のストリーミングデータ環境内の相互接続されたモジュールのグラフを通るストリーミングデータフレームのデータの流れを向上させている。基本的にデータパイプは、多数のモジュールがフレームを処理してデータをパッケージするフレームのストリームラインを割振る際に、データの冗長格納及びコピーを回避する。本願と同時に提出された別の特許出願（代理人ドケット777,184US1）“複数のプロセッサを通るストリーミングデータの制御の改良”（Improving the Control of Streaming Data through Multiple Processors）は複数のモジュールを通るフレームの流れを制御するためのメカニズムを開示し、各個々のモジュールを別々に最適化するのではなく、全グラフを通して制御を改善している。これらの出願は、本明細書に参照されている。
【０００７】
ストリーミングデータの多くの応用では、１つの大きいフレームを複数のサブフレームに分割し、複数のフレームを単一の大きいフレームに一緒に混合する能力を追加することによって、処理を簡易化し、改善することができる。例えば、マルチメディアプレゼンテーションは一般に、一緒にユーザへ出力されるべき異なるモダリティを表すデータの単一の集合を有している。テレビジョン型データのフレームは、多数の走査線上のビデオデータ、オーディオデータ、若干の走査線部分上のピクチャ・イン・ピクチャフレーム、及びビデオ消去期間（ＶＢＩ）を含むＮＴＳＣ信号の全フィールドを表すことができる。ＶＢＩデータは、クローズキャプショニング、ウェブＴＶ情報を表すデジタルデータ、及び可変数の他のサブフィールドのための文字コードを含むことができる。これらのフレームは、それらを生成する時にデータを複雑に混合することが必要であり、次いで視聴者へ提示するために異なるハードウェアまたはソフトウェアモジュールによって同時に処理するように分割しなければならない。１つのサブフレーム内のオーディオデータがトーンコントロール内でフィルタされてボリュームが圧縮／伸張される間に、ビデオデータが再サイズされてカラーバランスされ、クローズキャプショニングがフォーマットされて位置決めされる等である。
【０００８】
上記特許出願に開示されているシステムは、大きいフレームを小さいフレームに分割して別々に処理する基本能力を開示している。しかしながら、マルチメディア及び多重型のデータを有する類似データストリームに関する要望が成長し続けているために、複数のフレームを単一のフレームに組合せ、併合し、または混合するさらなる能力が要求され、またデータ流及びストリーミングデータの分割された及び混合されたフレームを効率的に制御することも要求されている。
【０００９】
【課題を解決するための手段】
（発明の概要）
本発明は、単一のストリーミングデータフレームを複数のフレームに分割し、複数のストリーミングデータフレームを単一のフレームに混合するための簡単且つ効率的なメカニズムを提供することによって、複数のハードウェア及びソフトウェア処理モジュールのネットワークまたはグラフを通るストリーミングデータの総合処理を改善する。
【００１０】
パイプは複数の相互接続された処理モジュールを有し、それらの１つまたはそれ以上が、ストリーミングデータを分割し、混合し、またはそれ以外に再構成する操作を遂行する。物理的に割振られた複合フレームは、異なるモジュールによって操作されるデータの異なる部分を保持するサブフレームを有している。
【００１１】
本発明の別の面は、パイプを構築し、複合フレームが得られるようにアロケータを割当てる。さらなる面は、あるモジュールへ供給されたサブフレームの全てが使用可能になった時に限って、そのモジュールへの制御トランザクションを供給する。他の面は、複合フレーム内のサブフレームの構造、パイプ内のモジュールの構造、及びモジュールによる操作の完了を指定するためのテーブルの構築に関する。
【００１２】
【発明の実施の形態】
（実施の形態）
以下に、添付図面を参照して好ましい実施の形態を詳細に説明するが、この説明は本発明の特定の実施の形態を例示しているに過ぎない。当業者ならば、これらの実施の形態の説明から本発明を実施するのに十分な詳細を理解することができよう。当業者ならば、本発明の範囲内で構造、論理、及び手順の変更が可能であろう。同様に、以下のハードウェア、ソフトウェア、及び動作の説明に記述されている特定の形状及びシーケンスは、特定の相互接続または時間順序を暗示するものではない。従って、以下の説明は、本発明を制限するものではなく、本発明の範囲は特許請求の範囲によってのみ限定されるものである。
動作環境
図１は、本発明がパーソナルコンピュータ（ＰＣ）１２０のようなプログラム可能な汎用コンピュータ上の実行可能な命令、データ、及び／またはハードウェアとして実現された環境１００を示す高レベル図である。当業者ならば、他の適当な環境、及び以下に記述する環境の変形も考えられよう。
【００１３】
普通のＰＣ１２０は、典型的に、命令、データ、及び種々の制御信号を伝送するための１つまたはそれ以上のシステムバス１２１によって互いに結合されている複数の成分を含んでいる。これらのバスは、普通のＩＳＡ、ＰＣＩ、及びＡＧＰバスのような多くの形状を取ることができる。バスに結合されている若干の、または全てのユニットは、他のユニットへの転送を開始するためのバスマスタとして動作することができる。
【００１４】
処理ユニット１３０は、システムクロック１３２によって駆動され、且つコントローラ１３３によって１つまたはそれ以上のバス１２１に結合されている１つまたはそれ以上のマイクロプロセッサ１３１を有することができる。内部メモリシステム１４０は、命令及びデータを処理ユニット１３０へ供給する。高速ＲＡＭ１４１は、ソフトウェア１１０の何等かの、または全ての要素を格納している。ＲＯＭ１４２は、一般的に、ＰＣ１２０を始動させるための、及びその成分間の低レベル動作を制御するための基本入力／出力システム（ＢＩＯＳ）ソフトウェアを格納している。大容量記憶サブシステム１５０は、ソフトウェアの１つまたはそれ以上の要素を格納している。ハードディスクドライブ１５１は、ソフトウェア１１０を不揮発性の形状で格納している。ドライブ１５２は、磁気ディスケット１５３及び光ディスク１５４のような取外し可能な媒体上のソフトウェアを読出し、書き込む。大容量記憶装置のための他の技術も当分野においては公知である。アダプタ１５５は記憶デバイスをシステムバス１２１に結合し、時には互いに直接的に結合する。全体を１６０で示す他のハードウェアユニット及びアダプタは、バス上のプロセッサまたは別のユニットの制御の下に、暗号化、信号処理等のような特殊な機能を遂行することができる。
【００１５】
入力／出力（Ｉ／Ｏ）サブシステム１７０は、ユーザとのインタフェースのためにＰＣ１２０を外部デバイスに接続する複数の特殊なアダプタ１７１を有している。モニタ１７２は、幾つかの公知の形状の何れかで図形データを視覚表示する。スピーカ１７３は、デジタル波サンプル、音楽・インスツルメントインタフェース（ＭＩＤＩ）ストリーム、または他のフォーマットのような、アダプタ１７１に到着することができるオーディオデータを出力する。キーボード１７４は、ユーザからキーストロークを受ける。マウスまたは他の位置決めデバイスは、ユーザ動作が発生する箇所を指示する。ブロック１７６は、ビデオ及びオーディオ入力信号をデジタルデータに変換するための小さいカメラまたはマイクロホンのような、他の入力及び／または出力デバイスを表している。一般的には、プリンタ及びスキャナのような、他の入力及び出力デバイスが標準ポート１７７に接続されている。これらのポートは、並列、直列、ＳＣＳＩ、ＵＳＢ、ファイアワイヤー、及び他の普通の形状を含む。
【００１６】
パーソナルコンピュータは、ネットワーク内の他のコンピュータに接続されることが多い。例えば、ローカルエリアネットワーク（ＬＡＮ）１８０は、ＰＣ１２０内のネットワークアダプタ１８２を通し、イーサネット（登録商標）またはトークンリングのような標準プロトコルを使用してＰＣ１２０を他のＰＣ１２０’及び／または遠隔サーバ１８１に接続する。図１はＬＡＮに相互接続するために物理的ケーブル１８３を示しているが、無線、光、及び他の技術も使用することができる。ワイドエリアネットワーク（ＷＡＮ）１９０のような他のネットワークも、ＰＣ１２０及び１２０’を、及びサーバ１８１さえも、遠隔コンピュータ１９１に接続させることができる。図１は、インターネットのようなＷＡＮ１９０のための公衆交換電話回線網のような通信設備１９２を示している。ＰＣ１２０は、直列ポート１７７に結合されている内部または外部モデム１９３を使用することができる。しかしながら、ＩＳＤＮ、非対称転送モード（ＡＴＭ）、フレームリレー、その他のような他の公知の技術がより普遍的になりつつある。ネットワークにされた、または分散計算環境においては、各々がそれ自体の記憶デバイス及び媒体を有している他の同位ＰＣ１２０’、またはコンピュータ１８１及び１９１上にソフトウェア１１０を格納することができる。
【００１７】
ソフトウェア要素１１０は、それらの指定がある程度重畳している複数の型に分割することができる。例えば前述したＢＩＯＳは、他のセッティングにおいてはオペレーティングシステム（ＯＳ）の一部として分類することもできる高レベルルーチンまたはプログラムを含む場合がある。ＯＳ１１１の主たる目的は、応用プログラム１１２を実行するためのソフトウェア環境を提供することである。マイクロソフトコーポレーションのウィンドウズ（登録商標）のようなＯＳは、一般に、高レベル応用プログラムインタフェース（ＡＰＩ）、ファイルシステム、通信プロトコル、入力／出力データ変換、その他の機能を実現している。また、ウィンドウズ（登録商標）はコンピュータ資源を維持し、種々のプログラムの実行を監督する。応用プログラム１１２は、ユーザにとってより直接的な機能を遂行する。通常ユーザはそれらを明示的に呼出すが、それらは他の応用と関連して、または特定のデータファイルまたはデータ型とのアソシエーションによって暗示的に実行することができる。モジュール１１３は、ＯＳ１１１のための、または応用１１２のための機能を遂行できる実行可能な命令及びデータのパッケージである。これらは、ダイナミックリンクライブラリ（ｄｌｌ）の形状を取ることができる。最後に、データファイル１１４は、テキスト文書、データベースのような実行不能なデータ、及び図形画像及び音響記録のような媒体の集まりを含む。この場合も、上述したソフトウェア１１０のカテゴリは、消耗的でも、相互に排他的でもない。
【００１８】
図２は、ストリーミングデータのような高速データを処理するのに屡々使用される普通のメモリ２００の１つの型のブロック図である。メモリモジュール２１０は、３つの読出し／書込みポート２１１−２１３を有するマルチポートメモリ２１０であり、各ポートはモジュール２１０内へ格納するためのデータを受入れ、既にそこに格納されているデータを検索することができる。ポートの数はより多いことも、またはより少ないこともでき、若干のポートは書込み専用または読出し専用であることができる。複数のポートにおける動作は同時に発生させることができるが、モジュール２１０の内部動作は、直列化及び／またはそれらを同期させることができる。メモリ２００は、ＰＣメモリシステム１４０（図１）の一部を形成することも、または機能１６０またはアダプタ１７０のような他のブロックの何れかの中に構築することもできる。マルチポートメモリは、システム内の１つのバスから別のバスへ転送するために、大量のデータをバッファするように機能することが多い。図２は、図１のバス１２１のグループ内に含ませることができるバス２２０のグループを示している。ポート２１１−２１３は、個々のバス２２１−２２３にそれぞれ結合されている。この接続により、例えばＰＣＩバスがデータフレームをメモリモジュール２１０に配置することができ、ＡＧＰまたは専用ビデオバスがフレームを検索することができる。
【００１９】
複合フレームの処理
図３は、本発明が使用する関連したコンポーネント３００を示している。説明の目的のためにのみ、ここに記載するコンポーネントのいくつかは、Microsoft Corp.の市販しているWindows（登録商標）2000オペレーティング・システム（ＯＳ）に見いだされる。コンポーネント３１０〜３３０は、カーネル層に存在するが、或る特定のＯＳのアーキテクチャにおける他の場所に存在していてもよい。この例における処理のすべては、単一のコンピュータで生じるが、本発明によるストリーミング・データ動作を多数のマシンおよび／またはオペレーティング・システムに分散させてもよい。
【００２０】
インタフェース・コンポーネント３１０は、カーネル層にある他のコンポーネント、ＯＳ外にあるプログラム３０１、３０２のようなソフトウェア、そして、装置３０３〜３０４およびハードウェア・アダプタ３０５のようなハードウェア装置とインタフェース接続する。アプリケーション・プログラム３０１は、たとえば、ユーザがプレゼンテーションのための特定のストリーミング・データを選ぶビューア・ユーティリティであってもよい。データのフローをリクエストまたは特定するプログラムまたはその他モジュールは、クライアントと呼ばれることになる。プログラム３０２は、何らかの方法で、たとえば、ソフトウェア・デジタル・フィルタまたはコンパンダでデータを変換するソフトウェア・モジュールを表している。装置３０３は、ハードウェア・モジュール、たとえば、メモリまたはＭＰＥＧ−２デコーダ）であってもよい。装置３０４は、そのハードウェア・インタフェース・アダプタ３０５と共に、オフライン記憶装置、たとえば、ＤＶＤプレーヤまたはケーブルテレビを表している。
【００２１】
システム１００における物理的なメモリは、記憶したデータを組織化するためのメモリ・マネージャ・コンポーネント３２０を有する。単一の物理的なメモリ・モジュールが、異なった時刻あるいは異なった部分でデータを組織化するための多数のマネージャを有し得る。単一のマネージャが、多数の物理的なメモリを供してもよい。本明細書におけるマネージャ３２０の重要な機能は、ストリーミング・データのフレームまたは他のユニットを記憶するためのメモリのブロックを割り振ったり、割り振りを解除したりすることにある。この理由のために、マネージャ３２０は、本願明細書においては、しばしば、メモリ・アロケータと呼ぶ。新しく到着したデータがリクエストするときにはいつでも１つのフレームが割り当てられるか、または、予め割り当てておいてもよい。フレームは、経路内の１つまたはそれ以上のフィルタを通してデータを搬送し、経路内のすべてのフィルタがそのデータの処理を終了したときに割り当てを解除する。フレームは、廃棄してもよいが、通常は、経路にさらに新しくデータが到着したときにリサイクルされる。
【００２２】
Windows（登録商標）2000においては、Ｉ／Ｏサブシステム３３０は、ファイル記憶および他のＩ／Ｏ装置、設備の両方を監視する。ファイルまたはＩ／Ｏサービスについてのリクエストは、アプリケーション・プログラムまたは他のソースから３３１、３３２のようなデバイス・ドライバの１つまたはそれ以上の層を経て３０３、３０４のようなハードウェア装置へ送られる。この方法により、３３３、３３４のようなフィルタ・ドライバが、或る種の特性またはイベントに基づいて、データ、ファイル・ハンドル、Ｉ／Ｏリクエスト・パケットその他の情報を遮断することができる。フィルタ・ドライバは、３３３に示すようにデータを内部処理することができる。フィルタ・ドライバは、また、３０２のようなプログラムに対して前後に情報を通すこともできる。なお、このようなプログラムは、ＯＳカーネル層内、あるいは、システム１００のソフトウェア・アーキテクチャにおける他の任意のポイントに位置していてもよい。コンポーネントは、単一機能専用であってもよいし、あるいは、もっと頻繁に、逐次的あるいは同時に多数の機能を実施するようにプログラムしてもよい。たとえば、デジタル信号プロセッサが、多くの異なった機能、たとえば、周波数濾波、ゲイン変更およびアコースティック効果を実行してもよい。
【００２３】
ブロック３４０は、ストリーミング・データのためのグラフを構築し、管理するＷＤＭ−ＣＳＡコンポーネントを表しており、グラフ・データ・フロー・マネージャ３４１およびグラフ制御・フロー・マネージャ３４２を包含する。ブロック３４０は、また、以下に詳細に説明するように、本発明で使用するいくつかのオブジェクトを構築するパイプ・マネージャを包含する。マネージャ３４１〜３４３は、単一のソフトウェアまたはハードウェア・モジュールで実行する必要はない。それらの機能は、多くの似たようなモジュールの中に分散させ得る。
【００２４】
図４Ａは、データの１回またはそれ以上の全体的な変換を達成するようにコンポーネント３００の選択されたものを通して１つまたはそれ以上のデータ・ストリームを転送するための、出願Docket 777.183us1に示されているようなグラフの１つのパイプ４００を示している。個々のハードウェアまたはソフトウェア処理モジュール（通常、フィルタと呼ばれている）は、より重い機能ブロックを取り囲む軽い長方形として示してある。ＷＤＭ−ＣＳＡプロトコルの慣例で、機能は、Ｐというラベルを付けた論理ピンによってデータを互いにやりとりする。
【００２５】
現目的のために、フィルタは、２つの主要タイプからなる。非再構築フィルタは、データについての機能、すなわち、変換を実施する。再構築フィルタは、３本以上のピンを有し、ストリーミング・データのフレームを分割または混合することができる。そのうちのいくつかは、多数の入力フレームを混合すると共に、１つのフレームを多数の出力に分割することができる。ここで用いる「再構築」なる用語は、混合、分割、および、データのフレーム構造を変える他の動作を意味するのに用いる。ここで用いる「スプリッタ／ミキサ」なる用語は、１つまたはそれ以上の再構築動作を実施するモジュールを意味する。大きな矢印は、異なった機能間のデータ転送を示している。
【００２６】
データ・フレームを混合または分割するフィルタ機能は、ストリーミング・データがより複雑になるにつれてそれに応じて共通になる。しかしながら、これらの再構築機能は、効率的にグラフに組み込むのが困難である。出願777.183US1の概念の１つは、グラフをパイプに分割することによって全体的な効率を向上させることである。しかしながら、単一のパイプにカスケード状あるいは多数のスプリッタおよびミキサを組み入れることは難しい。この出願におけるパイプは、いずれも、２つ以上の再構築機能を含まない。
【００２７】
本発明を用いると、単一のパイプ４００が、９つのフィルタ（そのうちの６つが再構築中）と、５つのミキサと、１つのスプリッタとを包含する。フィルタ・モジュールＭ４Ａは、ピンＰ４０１、Ｐ４０２のところに到達する入力ストリーミング・データ・フレームを混合し、ピンＰ４０３のところに複合フレームを生じさせる。その一方で、モジュールＭ４Ｂは、ピンＰ４０４、Ｐ４０５のところの入力フレームを混合して、Ｐ４０６のところに併合フレームを生じさせる。別のミキサＭ４Ｃは、ピンＰ４０７、Ｐ４０８のところでこれら２つのフレームを受け入れ、Ｐ４０９のところで別の併合フレームを出力する。モジュールＭ４Ａ、Ｍ４ＢおよびＭ４Ｃは、また、混合に加えて、いくつかの他の処理機能または変換、たとえば、信号圧縮または濾波を実施してもよい。モジュールＭ４Ｄは、ピンＰ４１０のところでフレームを処理し、Ｐ４１１のところでフレームを出力する単純な機能である。モジュールＭ４Ｅ、Ｍ４Ｆは、ピンＰ４１２、Ｐ４１４のところで入力フレームを処理し、ミキサＭ４Ｇの入力部Ｐ４１６、Ｐ４１７に送り、このミキサがＰ４１８でそれらを結合する。
【００２８】
ミキサ・モジュールＭ４Ｈは、連結した入力ピンＰ４１９、Ｐ４２０のところでＰ４１１、Ｐ４１８からのフレームを受け入れ、それらをピンＰ４２１のところで単一の複合フレームに併合する。最後に、スプリッタ・モジュールＭ４Ｉは、ピンＰ４２３、Ｐ４２４のところで多数の出力を発生する。このモジュールは、また、単一フレームをサブフレームに分割することに加えて別の処理を実施してもよい。
【００２９】
すべてのストリーミング・データ・パイプは、パイプを通過するストリーミング・データについてメモリ・フレームの割り当て、割り当て解除を行うメモリ・アロケータを包含する。割り当てられたフレーム全体は、メモリ内の物理的な空間を占有するので、物理フレームと呼ばれる。フレーム全体の中のサブフレームは、フレーム全体に存在し、別のあるいは付加的な物理メモリ空間を必要としないという点で、仮想フレームと呼ばれる。破線のボックス４１０は、パイプ４００についてのアロケータ４１０のための１つの位置を示しており、この例では、アロケータはモジュールＭ４ＨのピンＰ４２１に割り当てられる。出願777.183us1は、所与のパイプについてのアロケータの位置および仕様をどのように選ぶかを論議している。以下に論議するように、現目的のためのアロケータは、出願777.183us1よりもより複合フレームを割り当てることができる。
【００３０】
図４Ｂは、図４Ａに例示したパイプ４００と共に使用するための複雑なデータ・フレーム４２０を象徴化している。本明細書において、「フレーム」なる用語は、別のフレームの一部を形成しているか、あるいは、その中に他のフレームを有するかにかかわらず、任意のフレームを意味し得る。「複合フレーム」なる用語は、その中に入れ子にして他のフレームを有するかあるいは有し得るフレームを意味している。「サブフレーム」なる用語は、別のフレーム内に入れ子になっているか、あるいは、入れ子にし得るフレームを意味している。複合フレーム４２０は、ピンＰ４２１のところに位置するアロケータ４１０によって処理されるデータ・フレーム全体を表しているので、Ｆ４２１と呼ぶ。フレームＦ４２１の２つのサブフレームには、ピンＰ４１９、Ｐ４２０のところで生じるので、Ｆ４１９、Ｆ４２０というラベルを付けている。Ｆ４１９は、さらに、サブフレームＦ４０７、Ｆ４０８を有する。フレームＦ４０１、Ｆ４０２およびＦ４０４、Ｆ４０５は、それぞれ、Ｆ４０７、Ｆ４０８のサブフレームである。Ｆ４２０のサブフレームは、入力フレームＦ４１２、Ｆ４１４である。
【００３１】
図４Ｃは、パイプ４００についての複合フレーム全体の構造についての別の表現４３０を示している。複合フレーム入れ子ツリー４３０は、データフローの方向を表している有向縁を有する。この場合、フレームと組み合わされたピンのグラフ相対位置に依存して、３つのケースの可能性がある。１つのピンが、他のピンの下流または上流あるいは他のピンと同じレベルであり得る。入力サブフレームＦ４０１、Ｆ４０２は、出力ピンＰ４０３と関連したＦ４０３、ピンＰ４０７と関連したＦ４０７の両方としてラベル付けし得るフレームを含むノードに流れる。入力サブフレームＦ４０４、Ｆ４０５も、同様に、ノードＦ４０６／Ｆ４０８に流れる。サブフレームＦ４０７、Ｆ４０８も、同様に、Ｆ４０９、Ｆ４１０、Ｆ４１１またはＦ４１９とラベルを付けられたフレーム内で混合する。これは、同じフレームが対応するピンのうちの４つすべてに存在するからである。同様に、同じサブフレームＦ４１６、Ｆ４１７は、また、それぞれ、Ｆ４１２、Ｆ４１３およびＰ４１４、Ｆ４１５とラベルを付けられ得る。これらは、また、Ｆ４２０とも呼ばれるＦ４１８のサブフレームでもある。この上流側へのフローは、Ｆ４１９、Ｆ４２０を全複合フレームＦ４２１、Ｆ４２２に併合したところで終わる。この全フレームからの下流側データフローは、そのサブフレームＰ４２３、Ｆ４２４へ進む。
【００３２】
Ｆ４２１のような単一の物理フレーム全体を使用してパイプを通るストリーミング・データ・フレームは、ストリーム・マネージャ３４０（図３）を必要とし、フレームのメモリ管理および制御を行う。これは、フレーム・アロケータ依存性を解決することを必要とするが、４３０のような入れ子ツリーを構築することによって行われ得る。普通のオペレーティングシステム・ストリーミング・データ機能は、或る種の場合に独特な入れ子状態を生成するのに充分な拘束を行わない。たとえば、ＷＤＭ−ＣＳＡによって提供される関連情報は、個々のモジュール・ピンのフレーミング特性、グラフのトポロジおよびデータ・パイプの境界に限られている。
【００３３】
図５は、問題を含む状況を示している。図５Ａにおいて、パイプ５００は、２つの単純な機能Ｍ５Ａ、Ｍ５Ｂおよび２つの再構築機能、すなわち、ミキサ／スプリッタＭ５Ｃ、ミキサＭ５Ｄを包含する。ピンおよびフレームの命名法は、図４のそれに従う。
【００３４】
本発明の１つの利点は、個別のパイプにカスケード状ミキサ、スプリッタを設置することを避けることによって、多くのストリーミング・データ・グラフにおけるパイプの数を減らすということにある。しかしながら、単一のグラフ全体は、まだ、本発明による多数の複合フレーム・パイプを含むことができる。その場合、出願docket 777.183US1に記載されているのと同じ方法でパイプを互いに結合する。
【００３５】
図５Ｂは、パイプ５００を供する複合フレームの１つの可能性あるレイアウト５１０を示している。モジュールＭ５Ｃのミキサ部分は、サブフレームＦ５０２をサブフレームＦ５０７（Ｆ５０４）と混合し、複合フレームＦ５０６、フレームＦ５０８とする。次いで、ミキサＭ５Ｄが、これら２つのフレームを、パイプの出力ピンＰ５１０のところで別の複合フレームＦ５l０に統合する。入れ子ツリー図５２０（図５Ｃ）は、ツリー４３０がパイプ４００のフレーム・レイアウト（図４）を表すのと同じ形態でのこの解決策を示している。
【００３６】
図５Ｄは、同じパイプ５００についての別の構成５３０を示している。フレーム・レイアウト５３１は、モジュールＭ５Ｃが混合を終えた時点で複合フレームＦ５０６に入れ子になったサブフレームＦ５０２、Ｆ５０４、Ｆ５０８を有するが、モジュールＭ５ＤがピンＰ５０９、Ｐ５１１のところでその入力データを併合し始める前の状態である。図５Ｅの入れ子ツリー５４０は、モジュールＭ５Ｄが、その出力複合フレームＦ５１０に対して、その入力Ｆ５０９、Ｆ５１１対して要求されるメモリよりも多いメモリを実際に割り当てる必要がないことを示している。混合したデータを複合フレームＦ５０９（フレームＦ５０６と同じ）に直接出力することができる。
【００３７】
したがって、第１の構成（図５Ｂ、５Ｃ）は、パイプ５００に対して機能モジュールＭ５Ｄによって割り当てられた物理フレーム全体としてのフレームＦ５１０を有する。第２の構成（図５Ｄ、５Ｅ）においては、モジュールＭ５Ｃは、単一の物理フレーム全体としてフレームＰ５０６を割り当てる。両方の構成は、グラフ・トポロジおよびパイプ５００の境界を満たす。したがって、一般的な場合、複合フレームについてフレーム・アロケータを特定するために付加的な拘束を必要とする。グラフ機能全体にアクセスするストリーム・マネージャ３４０は、この情報を付加的な複合フレーム入れ子ツリーの形で供給できる。
【００３８】
ストリーミング・データのフローを改良する第１の目的は、パイプについてのフレーム全体を管理するように各パイプにアロケータを割り当てることである。出願777.183US1は、単純なフレームについてのメモリ・アロケータ３２０（図３）の動作と、アロケータをパイプ内にどのように位置させるかを論議している。本発明は、複合入れ子フレームを処理するためにこのようなアロケータを拡張する。
【００３９】
図６は、出願777.183US1のデータ・フロー・プロセス全体を要約しており、そして、複合フレーム・データのフローを改良する方法を加えている。図６Ａのブロック６１０は、或る種のパラメータの値を、ストリーミング・データ・グラフにおける各機能ユニットに割り当てる。ブロック６０２において、ユーザ、アプリケーション・プログラムまたは他のクライアント・ソフトウェアは、グラフについての全体的な目標を設定する。
【００４０】
ブロック６０３は、事前セットのパイプを定義することを含めて、所望のグラフを構築する。ブロック６１０は、複合フレームについての付加的な動作を実施する。ブロック６１１は、グラフのモジュールからのサブフレームに関するブロック６０２内のフィルタに割り当てられたパラメータ・データを集める。１つのパラメータは、フィルタ示唆パイプ・トポロジである。すなわち、各フィルタについてのピン、パイプ間の関連である。１つのフィルタは、この情報を、ミキサおよびスプリッタのためのオプション特性として、すなわち、或る特定のパイプに対応するフィルタ・ピンのリスト・セットとして表す。たとえば、ミキサＭ４Ｇ（図４）は、ピンＰ４１６、Ｐ４１７、Ｐ４１８が単一のパイプに属することができることを示している。１つのフィルタは、多数のトポロジをそれらの優先順序で特定できる。ＷＤＭ−ＣＳＡフロー・マネージャ３４０は、グラフ全体についてパイプを構築するときに、フィルタ示唆リストから各フィルタについての１つのパイプ・トポロジを選ぶ。「定数オフセット」フラグは、グラフがプレイされるときに常時１つのフィルタがその複合フレーム内の同じ位置に１つのサブフレームを維持するのを請け合うことができる。このフラグは、サブフレームと関連したフィルタ・ピンのフレーミング特性として設定される。フラグが設定された場合、サブフレーム・オフセット値が定数オフセットを特定する（これらの２つは結合できる。たとえば、負のオフセット値が、サブフレーム・オフセットが定数となるように保証されないフラグとして作用し得る。）オフセット値は、同じフィルタの複合フレーム・アドレスに対するバイト数である。グラフ・マネージャ３４０は、パイプ・ワイド入れ子ツリーからのパイプの実際の物理フレームに対するサブフレーム・アドレスおよび各フィルタのサブフレーム・オフセットを計算する。極めてまれなケース（たとえば、グラフ・クライアントが普通でないメモリ変換を要求するとき）において、付加的な入れ子ツリーを供給しなければならない。これが、図５Ｄ、５Ｅに示す状況である。
【００４１】
ブロック６１２は、複合フレームを有する各パイプについての特有の入れ子ツリーを構成する。アプリケーション１１２がグラフをプレイするようにセットアップしたとき、それはブロック６０４でグラフを獲得する。
【００４２】
ブロック６０５はパイプを完成させる。ブロック６２０は、ブロック６０５のプロセス全体で複合フレームをセットアップする。ブロック６２１は、フレーム全体および任意のサブフレーム（それが複合である場合）のサイズを選ぶ。
【００４３】
ブロック６２２は、パイプが、カスケード状のミキサ（たとえば、図４ＡにおけるＭ４Ａ-Ｍ４Ｃ-Ｍ４Ｄ-Ｍ４ＨおよびＭ４Ｇ-Ｍ４Ｈ）を有するか否かを決定する。もしそうならば、パイプ・マネージャ３４３（図３）によって実施されたブロック６２３は、複合フレームのレイアウトを特定する２つのテーブル７００を構築する。図７Ａに示すように、オフセット・テーブル７１０は、１つのパイプ内の各モジュールの各ピンについてのエントリ７１１と、各エントリについてのオフセット量の一覧を示すカラム７１２とを有する。図７における図示エントリは、図４に例示するパイプ４００に従う。図４ＡにおけるピンＰ４０１のところのサブフレームＦ４０１は、量オフセット＃０１によって象徴化される１バイトだけ複合フレームＦ４２１全体の始めからオフセットされる。他のサブフレームについても同様である。或るピンにおけるサブフレームは、もちろん、他のピンのそれらと同じものである。その結果、エントリの多数のものが同じオフセットを有する。図７Ｂにおけるパイプ制御テーブル７２０は、パイプにおける各フィルタ・モジュールについて１つのエントリ７２１を有する。カラム７２２は、同じパイプ内の他のモジュール（そのモジュールにデータ・フレームを与える）をリストで示す。たとえば、モジュールＭ４Ｃは、フィルタ・モジュールＭ４Ａ、Ｍ４Ｂからストリーミング・データを受け取る。「スタート」セクション７２３のモジュールは、パイプの外部からデータを受け取る。エントリ７２４は、従属モジュールを示している。グラフが完成した後、テーブル７１０、７２０は、再構築あるいは変更される必要がない。ストリーミング・グラフの制御フローを改良するためにこれらのテーブルの使用法を、図６Ｂと関連して以下に説明する。
【００４４】
ブロック６３０は、パイプのメモリ・アロケータを位置決めする。６３１がパイプ内に任意のミキサを見いだした場合、ブロック６３２は、アロケータを、データフローにおいて最も遠い下流側にあるミキサの出力ピンに割り当てる。パイプ４００例において、これは、モジュールＭ４ＨのピンＰ４２１である。ブロック６３３が、パイプがミキサを含んでおらず、スプリッタを含んでいることを見いだした場合には、ブロック６３４が、アロケータを、パイプ内の最も遠い上流側にあるスプリッタの入力ピンに割り当てる。パイプ４００例においては、これは、モジュールＭ４ＩのピンＰ４２２となろう。ミキサまたはスプリッタがまったくない場合には、ブロック６３５が、出願777.183US1に記載されているように、アロケータを割り当てる。
【００４５】
グラフは、図６Ｂのブロック６０６において、プレイの準備が整っている（すなわち、そのモジュールを通るストリーミング・データを処理する準備が整っている）。
【００４６】
プレイ中のグラフの制御は、１つのピンから他のピンへ送られてデータ・フレームを送り、完成フレームを戻すＩ／Ｏリクエスト・パケット（ＩＲＰ）を使用しながら、係属中の出願docket777.184US1に記載されている機構を使用することができる。
【００４７】
パイプが上記の通りにカスケード状のミキサを有する場合、本発明は、データフローを改良するだけでなくて、グラフがプレイされるときに処理オーバーヘッドを減らすように制御フローを改良することもできる。ストリーミング・グラフの重要な態様は、パイプにおけるストリーミング・データを伝播するための複合フレームのフローを管理する必要がある制御処理の全数を最小限に抑えることにある。制御は、すでに、パイプにおけるカスケード状のスプリッタに対して有効である。データおよび制御フローが同じ方向だからである。しかしながら、パイプ内のカスケード状ミキサの場合、データフローおよび制御は、互いに反対方向である。それは、フレームが、データのソースに向かって上流方向においてサブフレームに分かれるからである。普通のストリーミング・グラフ制御は、複合フレーム入れ子ツリーのルートで制御処理を開始し、データフローに相対的に上流側へ伝播する。これは、かなりの量のオーバーヘッドを生じさせる可能性がある。たとえば、図４のパイプ４００全体は、ソースＭ４Ａ、Ｍ４Ｂ、Ｍ４Ｅ、Ｍ４Ｆのうちの任意のものからサブフレームＦ４０１、Ｆ４０２、Ｆ４０４、Ｆ４０５にデータを引っ張り始めることができる前に、すべてのフィルタを通してＩ／Ｏリクエスト・パケット（ＩＲＰ）あるいは他の制御処理を伝播させなければならない。パイプ４００について普通の制御シーケンスは、次のように進む。
【００４８】
・Ｍ４Ｈが、物理フレームＦ４２１を割り当て、それを分割してフレームＦ４１９、Ｆ４２０を割り当てる。
・Ｍ４Ｈは、Ｐ４１９のオフセットを通して上流側のフィルタＭ４ＤにＩＲＰを発行する。
・Ｍ４Ｈは、Ｆ４２０のオフセットを通して上流側のフィルタＭ４ＧにＩＲＰを発行する。
・Ｍ４Ｄは、Ｆ４l９のオフセットを通して上流側のフィルタＭ４ＣにＩＲＰを発行する。
・Ｍ４Ｇは、フレームＦ４１６、Ｆ４１７を割り当てるようにＦ４２０を分割する。
・Ｍ４Ｇは、Ｆ４１６のオフセットを通して上流側のフィルタＭ４ＥにＩＲＰを発行する。
・Ｍ４Ｇは、Ｆ４１７のオフセットを通して上流側のフィルタＭ４ＦにＩＲＰを発行する。
・Ｍ４Ｃは、フレームＰ４０７、Ｆ４０８を割り当てるようにＦ４１９を分割する。
・Ｍ４Ｃは、Ｆ４０７のオフセットを通して上流側のフィルタＭ４ＡにＩＲＰを発行する。
・Ｍ４Ｃは、Ｆ４０８のオフセットを通して上流側のフィルタＭ４ＢにＩＲＰを発行する。
【００４９】
したがって、フィルタＭ４Ｃ、Ｍ４Ｄ、Ｍ４Ｈ、Ｍ４Ｇは、各サブフレームを２回処理しなければならない。すなわち、一度サブフレームを割り当てから、再びデータを処理しなければならない。１セットの上流側フィルタのいずれかがそのサブフレームを完了したとき、発行フィルタは、他の上流側フィルタが完了したかどうかをチェックしなければならない。たとえば、Ｍ４Ａが完成サブフレームをＭ４Ｃに戻した場合、Ｍ４Ｃは、そのサブフレームＦ４０８が完成したかどうかをチェックしなければならない。
【００５０】
複合フレームの本システムの場合、パイプは、同時に割り当てられ、循環している多数のサブフレームを支援し得る。サブフレームがフレーム全体に対して一定の関係を維持する普通の場合、ジャストインタイム制御処理を実施することによってパイプ内で制御フローを改良することが可能である。先に述べた定数オフセット・フラグをセットすることは、同期管理またはカスタム管理が必要でないことを示し、そして、複合フレームを開始からのサブフレームのオフセットが決して変化しないことを示している。
【００５１】
図６Ｂは、完了がさらに別の処理を生じさせるかどうかにかかわらず、すべての処理時刻、すなわち、任意のフィルタがサブフレームを完了するときにはいつでも、パイプ全体の横断および制御処理の発行を避けることによって定数オフセット・サブフレームを有するパイプにおけるフロー制御をどのように改良するかを示している。パイプ内のフィルタがそれらの定数オフセット・フラグ・セットを有するとき、ブロック６４０〜６６０が実施されて、実際のデータフローについて必要な時刻でのみ処理を実行する。それに加えて、これらのブロックに記録されるフレーム・ステータス情報は、明確で単純なパイプ・ワイド・ランタイム・コンテキスト情報を提供し、これは、複雑で、非同期で分散されているストリーミング・システムを設計し、維持する人間にとって有用である。図６Ｂは、単一のパイプの動作だけを示している。すなわち、しばしば、グラフが、同時に稼働する多数のパイプを含んでいる。
【００５２】
ブロック６４０は、ブロック６４１で象徴化されるように、パイプ内の各フレームについて非同期で実行する。すなわち、パイプは、同時に循環する多数のフレームを有し得る。ブロック６４２が、パイプが新しいフレームを必要とすることを検出したときはいつでも、ブロック６４３は、アロケータ４１０（図４）にそれを生じさせる。ブロック６４４は、そのフレームについての新しい制御テーブルを構築し、初期化する。図８は、いくつかの能動フレームについてのフレーム制御テーブル８００を示している。テーブル８１０は、第１循環フレームとタグ８１１によって関連させられ、ここで再び、図示例のパイプ４００を使用して、各フィルタ・モジュールＭ４Ａ〜Ｍ４Ｉについてのエントリ８１２を有する。カラム８１３は、各エントリについてのフラグを含んでおり、これは、各モジュールがその特定のフレームを処理したか否かを示している。テーブル８２０（同時に循環している別のフレームでタグ８２１によって関連付けられている）は、同じエントリ８２２を有するが、もちろん、フラグ８２３の値は通常異なることになる。新しく作成されたテーブルは、すべてのフラグをクリアしている。
【００５３】
ブロック６５１で象徴化されているように、ブロック６５０は、パイプ制御テーブル７２０（図７）の「スタート」セクション７２３にリストで示されている各フィルタ・モジュールによって実施される。ブロック６４０が新しいフレームを発行した後、各スタート・モジュールは、データ・ソーシング動作６５２を開始し、パイプ外からの、すなわち、別のパイプから、または、記憶装置あるいは他のハードウェア装置からの新しいフレームのサブフレームを満たす。
【００５４】
フィルタがそれらの動作を実施するにつれて、ブロック６６０は、各パイプ・モジュールによって繰り返し、そして、非同期で実行される。ブロック６６１が、或る特定のフィルタがフレームまたはサブフレーム上でのその動作を完了したことを見いだしたときにはいつでも、ブロック６６２が、その循環フレームについてのテーブル８１０または８２０のエントリ８１２または８２２に完了フラグ８１３または８２３を置く。カラム７２２内の１つののソースとして現れる各エントリ７２１について、ブロック６６３は、１つのモジュールにフレーム制御テーブルをチェックさせ、同じ下流側モジュールにデータを供給する他のモジュールすべてがそのフレーム上での動作を完了したかどうかを決定する。ブロック６６４がこれらの他のモジュールのすべてがそのフレーム上での動作を完了したことを見いだした場合（すなわち、それらのエントリについての完了フラグが設定された場合）、ブロック６６５が、パイプ内で下流側の次のモジュールについての制御処理を開始する。すなわち、下流側のモジュールは、そのデータのすべてが利用できるようになったときにのみ呼び出される。
【００５５】
たとえば、モジュールＭ４Ｂ（図４）がサブフレームＦ４０６を獲得し、処理を完了したときには、それは適切なフレーム制御テーブルに完了フラグを設定する。次いで、パイプ制御テーブルを検討し、下流側のモジュールＭ４ＣがモジュールＭ４ＡからのサブフレームＦ４０３にも依存していることを見いだす。モジュールＭ４Ｂは、同じフレーム制御テーブルを読み、モジュールＭ４Ａが、そのフレーム制御テーブル・エントリにフラグを設定することによってサブフレームＦ４０３の完了をすでに報告していたかどうかを決定する。もしそうであれば、Ｍ４Ｂは、Ｍ４Ｃに対する制御処理を開始し、フレームＦ４０３、Ｆ４０６の混合を開始する。さもなければ、その時点でなんら制御処理は生じない。次いで、その後、Ｍ４Ａが処理サブフレームＦ４０３を完了し、Ｍ４Ａフラグを設定したとき、Ｍ４Ｂがすでにそのフラグを設定したかどうかを検討し、発見する。したがって、Ｍ４ＡはモジュールＭ４Ｃを呼び出す。すなわち、下流側のモジュールによって要求されるサブフレームを終了する最後のモジュールは、そのモジュールについての制御処理を開始する唯一のモジュールとなる。
【００５６】
先に述べたように、この方法は、複合フレームを有するグラフにおけるあらゆるパイプについて実施される。最も一般的なケースにおいては、多数のパイプが同じフィルタを通過することができる。この状況に対応するために、フィルタそれ自体に基づくというよりは、むしろ、個々のモジュール・ピンに基づいてフレーム制御テーブルおよびパイプ制御テーブルを作成することが可能である。任意のインター・パイプ依存性、たとえば、データ・サイズ要件、時間的同期、リソース使用率、グラフ・オブジェクト全体などは、従来の要領でそれ自体の中のパイプ・マネージャによってアドレス指定される。
【００５７】
結論
本発明は、データを再構築すると共にデータを変換するためにスプリッタ／ミキサ処理モジュールを有するグラフを介してデータフローおよびストリーミング・データの制御を向上させる。
【００５８】
スプリッタおよびミキサのみを特別に説明したが、それらは、本発明もユーティリティを見いだすより広いクラスの再構築動作の例示に過ぎないと考えるべきである。たとえば、送信フィルタは、単一の出力ピンを通して受信フィルタへ多数のサブフレームを送信することができる。１つの実際的な用途としては、単一の入力ピンおよび単一の出力ピンを有するサイレンス・コンプレッション・フィルタがある。このようなフィルタは、その入力ピンのところでオーディオ・データのフレームを受け取り、すべてのサイレント期間をスキップするようにデータを解析し、非サイレント・セグメントを単一の出力ピンを経て下流側のフィルタに送る。このサブグラフ（サイレント・コンプレッサおよびその下流側のカスタマ）は、多数のサブフレームを有する単一のパイプを使用して実施され得る。サイレント・コンプレッサの入力フレームは、複合フレームであり、サイレント・コンプレッサの多数の出力サブフレームは、入力複合フレームの一部となる。このような具体例は、サブグラフ全体について単一の複合フレームを使用するために、サブグラフの使用するメモリを減らす。また、データの多くがサイレント・コンプレッサによってオーバーライドされない場合には、ＣＰＵ処理負荷を減らすこともできる。
【００５９】
好ましい実施例および少々の拡張例、変形例を説明してきたが、本発明者等は本発明を特許請求の範囲に示すように定義する。
【図面の簡単な説明】
【図１】  本発明のための環境例を示すブロック図である。
【図２】  図１のマルチポートメモリの詳細図である。
【図３】  図１の中の本発明に関係する成分の詳細図である。
【図４Ａ】  本発明によって処理されるストリーミングデータパイプ例のブロック図、及びパイプ内を流れるデータを表す図である。
【図４Ｂ】  本発明によって処理されるストリーミングデータパイプ例のブロック図、及びパイプ内を流れるデータを表す図である。
【図４Ｃ】  本発明によって処理されるストリーミングデータパイプ例のブロック図、及びパイプ内を流れるデータを表す図である。
【図５Ａ】  別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図５Ｂ】  別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図５Ｃ】  別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図５Ｄ】  別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図５Ｅ】  別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図６Ａ】  本発明による複合フレームを有するグラフを準備し、制御する方法のフローチャートである。
【図６Ｂ】  本発明による複合フレームを有するグラフを準備し、制御する方法のフローチャートである。
【図７Ａ】  図６の方法で構築されるテーブルを示す図である。
【図７Ｂ】  図６の方法で構築されるテーブルを示す図である。
【図８】  図６の方法で構築される別のテーブルを示す図である。
【図１】
0004536266.tif 000002
【図２】
0004536266.tif 000003
【図３】
0004536266.tif 000004
【図４Ａ】
0004536266.tif 000005
【図４Ｂ】
0004536266.tif 000006
【図４Ｃ】
0004536266.tif 000007
【図５Ａ】
0004536266.tif 000008
【図５Ｂ】
0004536266.tif 000009
【図５Ｃ】
0004536266.tif 000010
【図５Ｄ】
0004536266.tif 000011
【図５Ｅ】
0004536266.tif 000012
【図６Ａ】
0004536266.tif 000013
【図６Ｂ】
0004536266.tif 000014
【図７Ａ】
0004536266.tif 000015
【図７Ｂ】
0004536266.tif 000016
【図８】
0004536266.tif 000017