Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4536266B2 - ストリーミングデータフレームの分割及び混合 - Google Patents
[go: Go Back, main page]

JP4536266B2 - ストリーミングデータフレームの分割及び混合 - Google Patents

ストリーミングデータフレームの分割及び混合 Download PDF

Info

Publication number
JP4536266B2
JP4536266B2 JP2000618818A JP2000618818A JP4536266B2 JP 4536266 B2 JP4536266 B2 JP 4536266B2 JP 2000618818 A JP2000618818 A JP 2000618818A JP 2000618818 A JP2000618818 A JP 2000618818A JP 4536266 B2 JP4536266 B2 JP 4536266B2
Authority
JP
Japan
Prior art keywords
module
modules
pipe
frame
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000618818A
Other languages
English (en)
Other versions
JP2002544739A (ja
Inventor
ラファエル リシスタ
ジョージ エイチ ジェイ ショウ
デイル エイ サザー
ブライヤン エイ ウッドラフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/310,596 external-priority patent/US7007096B1/en
Priority claimed from US09/310,597 external-priority patent/US6658477B1/en
Priority claimed from US09/310,610 external-priority patent/US6748440B1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2002544739A publication Critical patent/JP2002544739A/ja
Application granted granted Critical
Publication of JP4536266B2 publication Critical patent/JP4536266B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Circuits Of Receivers In General (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Power Steering Mechanism (AREA)
  • Meat, Egg Or Seafood Products (AREA)
  • Bus Control (AREA)

Description

【0001】
【発明の属する技術分野】
(技術分野)
本発明は電子データ処理に関し、詳述すれば、コンピュータ内の複数のハードウェア及び/またはソフトウェア処理モジュールによるストリーミングデータの流れの管理に関する。
【0002】
【従来の技術】
(従来の技術)
ストリーミングデータは、最終的にユーザに、実時間で、特定のシーケンスで提示しなければならないデータの連続した流れである。例えば、オーディオ信号を表すデジタルサンプルは、それらが伝送されたシーケンスと同一のシーケンスで、且つそれらが生成された時間間隔と正確に同一の時間間隔で、またはユーザが指定したある代替で音響波に変換しなければならない。ビデオフレームを表すデジタルデータを一緒にディスプレイ上に表示させるためには、そのフレームに適切なシーケンスとしてアセンブリする必要があり、連続するフレームを正確な実時間レートで表示しなければならない。
【0003】
ストリーミングデータは、いろいろな送信機、プロセッサ、メモリ、及び受信機の間の通信鎖全体を通して、必ずしも正しいシーケンスまたはタイミングを維持する必要はない。事実、ビデオ及びオーディオクリップは、静的データとして記録媒体、コンピュータメモリ、及びネットワークバッファ内に格納されることが多い。パケット交換システムも同一のストリーミングデータの部分を異なる経路を通して、また異なる時間シーケンスで伝送することができる。デジタルフィルタのようなプロセッサは、データストリームの複数の部分をアセンブルし、それらを静的ユニットとして変更し、次いでそれらをシステム内のさらなるユニットへ解放することができる。しかしながら、最終的には、ストリームは正しいシーケンスで、且つ適切な相対時間で聴かれる、または見られなければならない。
【0004】
ストリーミングデータは殆ど常に、極めて大量のデータを含んでいる。ストリーミングデータは、それにアクセスし、それを伝送し、そしてそれを交換するために、殆ど常にコンピュータ内のデジタルバスの容量にチャレンジしている。ストリーミングデータは、それを受信し、それを変換し、そしてそれを他のユニットへ引渡すために、殆ど常に基本ユニットの処理能力(ソフトウェア及びハードウェアの両方)に負担をかけている。当分野では、ストリーミングデータのために“太いパイプ”が必要であると言われている。
【0005】
WDM−CSA(ウィンドウズ(登録商標)ドライバモデル接続及びストリーミングアーキテクチャ)と呼ばれるアーキテクチャは、コンピュータの機能の間の接続を指定するためにグラフの概念を導入し、データストリームは多数の処理ユニットを効率的に通過しなければならない。WDM−CSAプロトコルは、このようなデータのためのドライバの開発をも簡易化している。基本的にWDM−CSAは、グラフを通るデータフレームの流れを指定し、またデータフレームを要求してそれらを受入れるために、グラフ内の近接モジュールが相互に通信し合うための制御プロトコルをも指定している。
【0006】
本願と同時に提出された特許出願(代理人ドケット777,183US1)“複数の処理ユニットを通るストリーミングデータの流れの改良”(Improving the Flow of Streaming Data through Multiple Processing Units)はデータパイプの概念を導入し、WDM−CSA内の、及び他のストリーミングデータ環境内の相互接続されたモジュールのグラフを通るストリーミングデータフレームのデータの流れを向上させている。基本的にデータパイプは、多数のモジュールがフレームを処理してデータをパッケージするフレームのストリームラインを割振る際に、データの冗長格納及びコピーを回避する。本願と同時に提出された別の特許出願(代理人ドケット777,184US1)“複数のプロセッサを通るストリーミングデータの制御の改良”(Improving the Control of Streaming Data through Multiple Processors)は複数のモジュールを通るフレームの流れを制御するためのメカニズムを開示し、各個々のモジュールを別々に最適化するのではなく、全グラフを通して制御を改善している。これらの出願は、本明細書に参照されている。
【0007】
ストリーミングデータの多くの応用では、1つの大きいフレームを複数のサブフレームに分割し、複数のフレームを単一の大きいフレームに一緒に混合する能力を追加することによって、処理を簡易化し、改善することができる。例えば、マルチメディアプレゼンテーションは一般に、一緒にユーザへ出力されるべき異なるモダリティを表すデータの単一の集合を有している。テレビジョン型データのフレームは、多数の走査線上のビデオデータ、オーディオデータ、若干の走査線部分上のピクチャ・イン・ピクチャフレーム、及びビデオ消去期間(VBI)を含むNTSC信号の全フィールドを表すことができる。VBIデータは、クローズキャプショニング、ウェブTV情報を表すデジタルデータ、及び可変数の他のサブフィールドのための文字コードを含むことができる。これらのフレームは、それらを生成する時にデータを複雑に混合することが必要であり、次いで視聴者へ提示するために異なるハードウェアまたはソフトウェアモジュールによって同時に処理するように分割しなければならない。1つのサブフレーム内のオーディオデータがトーンコントロール内でフィルタされてボリュームが圧縮/伸張される間に、ビデオデータが再サイズされてカラーバランスされ、クローズキャプショニングがフォーマットされて位置決めされる等である。
【0008】
上記特許出願に開示されているシステムは、大きいフレームを小さいフレームに分割して別々に処理する基本能力を開示している。しかしながら、マルチメディア及び多重型のデータを有する類似データストリームに関する要望が成長し続けているために、複数のフレームを単一のフレームに組合せ、併合し、または混合するさらなる能力が要求され、またデータ流及びストリーミングデータの分割された及び混合されたフレームを効率的に制御することも要求されている。
【0009】
【課題を解決するための手段】
(発明の概要)
本発明は、単一のストリーミングデータフレームを複数のフレームに分割し、複数のストリーミングデータフレームを単一のフレームに混合するための簡単且つ効率的なメカニズムを提供することによって、複数のハードウェア及びソフトウェア処理モジュールのネットワークまたはグラフを通るストリーミングデータの総合処理を改善する。
【0010】
パイプは複数の相互接続された処理モジュールを有し、それらの1つまたはそれ以上が、ストリーミングデータを分割し、混合し、またはそれ以外に再構成する操作を遂行する。物理的に割振られた複合フレームは、異なるモジュールによって操作されるデータの異なる部分を保持するサブフレームを有している。
【0011】
本発明の別の面は、パイプを構築し、複合フレームが得られるようにアロケータを割当てる。さらなる面は、あるモジュールへ供給されたサブフレームの全てが使用可能になった時に限って、そのモジュールへの制御トランザクションを供給する。他の面は、複合フレーム内のサブフレームの構造、パイプ内のモジュールの構造、及びモジュールによる操作の完了を指定するためのテーブルの構築に関する。
【0012】
【発明の実施の形態】
(実施の形態)
以下に、添付図面を参照して好ましい実施の形態を詳細に説明するが、この説明は本発明の特定の実施の形態を例示しているに過ぎない。当業者ならば、これらの実施の形態の説明から本発明を実施するのに十分な詳細を理解することができよう。当業者ならば、本発明の範囲内で構造、論理、及び手順の変更が可能であろう。同様に、以下のハードウェア、ソフトウェア、及び動作の説明に記述されている特定の形状及びシーケンスは、特定の相互接続または時間順序を暗示するものではない。従って、以下の説明は、本発明を制限するものではなく、本発明の範囲は特許請求の範囲によってのみ限定されるものである。
動作環境
図1は、本発明がパーソナルコンピュータ(PC)120のようなプログラム可能な汎用コンピュータ上の実行可能な命令、データ、及び/またはハードウェアとして実現された環境100を示す高レベル図である。当業者ならば、他の適当な環境、及び以下に記述する環境の変形も考えられよう。
【0013】
普通のPC120は、典型的に、命令、データ、及び種々の制御信号を伝送するための1つまたはそれ以上のシステムバス121によって互いに結合されている複数の成分を含んでいる。これらのバスは、普通のISA、PCI、及びAGPバスのような多くの形状を取ることができる。バスに結合されている若干の、または全てのユニットは、他のユニットへの転送を開始するためのバスマスタとして動作することができる。
【0014】
処理ユニット130は、システムクロック132によって駆動され、且つコントローラ133によって1つまたはそれ以上のバス121に結合されている1つまたはそれ以上のマイクロプロセッサ131を有することができる。内部メモリシステム140は、命令及びデータを処理ユニット130へ供給する。高速RAM141は、ソフトウェア110の何等かの、または全ての要素を格納している。ROM142は、一般的に、PC120を始動させるための、及びその成分間の低レベル動作を制御するための基本入力/出力システム(BIOS)ソフトウェアを格納している。大容量記憶サブシステム150は、ソフトウェアの1つまたはそれ以上の要素を格納している。ハードディスクドライブ151は、ソフトウェア110を不揮発性の形状で格納している。ドライブ152は、磁気ディスケット153及び光ディスク154のような取外し可能な媒体上のソフトウェアを読出し、書き込む。大容量記憶装置のための他の技術も当分野においては公知である。アダプタ155は記憶デバイスをシステムバス121に結合し、時には互いに直接的に結合する。全体を160で示す他のハードウェアユニット及びアダプタは、バス上のプロセッサまたは別のユニットの制御の下に、暗号化、信号処理等のような特殊な機能を遂行することができる。
【0015】
入力/出力(I/O)サブシステム170は、ユーザとのインタフェースのためにPC120を外部デバイスに接続する複数の特殊なアダプタ171を有している。モニタ172は、幾つかの公知の形状の何れかで図形データを視覚表示する。スピーカ173は、デジタル波サンプル、音楽・インスツルメントインタフェース(MIDI)ストリーム、または他のフォーマットのような、アダプタ171に到着することができるオーディオデータを出力する。キーボード174は、ユーザからキーストロークを受ける。マウスまたは他の位置決めデバイスは、ユーザ動作が発生する箇所を指示する。ブロック176は、ビデオ及びオーディオ入力信号をデジタルデータに変換するための小さいカメラまたはマイクロホンのような、他の入力及び/または出力デバイスを表している。一般的には、プリンタ及びスキャナのような、他の入力及び出力デバイスが標準ポート177に接続されている。これらのポートは、並列、直列、SCSI、USB、ファイアワイヤー、及び他の普通の形状を含む。
【0016】
パーソナルコンピュータは、ネットワーク内の他のコンピュータに接続されることが多い。例えば、ローカルエリアネットワーク(LAN)180は、PC120内のネットワークアダプタ182を通し、イーサネット(登録商標)またはトークンリングのような標準プロトコルを使用してPC120を他のPC120’及び/または遠隔サーバ181に接続する。図1はLANに相互接続するために物理的ケーブル183を示しているが、無線、光、及び他の技術も使用することができる。ワイドエリアネットワーク(WAN)190のような他のネットワークも、PC120及び120’を、及びサーバ181さえも、遠隔コンピュータ191に接続させることができる。図1は、インターネットのようなWAN190のための公衆交換電話回線網のような通信設備192を示している。PC120は、直列ポート177に結合されている内部または外部モデム193を使用することができる。しかしながら、ISDN、非対称転送モード(ATM)、フレームリレー、その他のような他の公知の技術がより普遍的になりつつある。ネットワークにされた、または分散計算環境においては、各々がそれ自体の記憶デバイス及び媒体を有している他の同位PC120’、またはコンピュータ181及び191上にソフトウェア110を格納することができる。
【0017】
ソフトウェア要素110は、それらの指定がある程度重畳している複数の型に分割することができる。例えば前述したBIOSは、他のセッティングにおいてはオペレーティングシステム(OS)の一部として分類することもできる高レベルルーチンまたはプログラムを含む場合がある。OS111の主たる目的は、応用プログラム112を実行するためのソフトウェア環境を提供することである。マイクロソフトコーポレーションのウィンドウズ(登録商標)のようなOSは、一般に、高レベル応用プログラムインタフェース(API)、ファイルシステム、通信プロトコル、入力/出力データ変換、その他の機能を実現している。また、ウィンドウズ(登録商標)はコンピュータ資源を維持し、種々のプログラムの実行を監督する。応用プログラム112は、ユーザにとってより直接的な機能を遂行する。通常ユーザはそれらを明示的に呼出すが、それらは他の応用と関連して、または特定のデータファイルまたはデータ型とのアソシエーションによって暗示的に実行することができる。モジュール113は、OS111のための、または応用112のための機能を遂行できる実行可能な命令及びデータのパッケージである。これらは、ダイナミックリンクライブラリ(dll)の形状を取ることができる。最後に、データファイル114は、テキスト文書、データベースのような実行不能なデータ、及び図形画像及び音響記録のような媒体の集まりを含む。この場合も、上述したソフトウェア110のカテゴリは、消耗的でも、相互に排他的でもない。
【0018】
図2は、ストリーミングデータのような高速データを処理するのに屡々使用される普通のメモリ200の1つの型のブロック図である。メモリモジュール210は、3つの読出し/書込みポート211−213を有するマルチポートメモリ210であり、各ポートはモジュール210内へ格納するためのデータを受入れ、既にそこに格納されているデータを検索することができる。ポートの数はより多いことも、またはより少ないこともでき、若干のポートは書込み専用または読出し専用であることができる。複数のポートにおける動作は同時に発生させることができるが、モジュール210の内部動作は、直列化及び/またはそれらを同期させることができる。メモリ200は、PCメモリシステム140(図1)の一部を形成することも、または機能160またはアダプタ170のような他のブロックの何れかの中に構築することもできる。マルチポートメモリは、システム内の1つのバスから別のバスへ転送するために、大量のデータをバッファするように機能することが多い。図2は、図1のバス121のグループ内に含ませることができるバス220のグループを示している。ポート211−213は、個々のバス221−223にそれぞれ結合されている。この接続により、例えばPCIバスがデータフレームをメモリモジュール210に配置することができ、AGPまたは専用ビデオバスがフレームを検索することができる。
【0019】
複合フレームの処理
図3は、本発明が使用する関連したコンポーネント300を示している。説明の目的のためにのみ、ここに記載するコンポーネントのいくつかは、Microsoft Corp.の市販しているWindows(登録商標)2000オペレーティング・システム(OS)に見いだされる。コンポーネント310〜330は、カーネル層に存在するが、或る特定のOSのアーキテクチャにおける他の場所に存在していてもよい。この例における処理のすべては、単一のコンピュータで生じるが、本発明によるストリーミング・データ動作を多数のマシンおよび/またはオペレーティング・システムに分散させてもよい。
【0020】
インタフェース・コンポーネント310は、カーネル層にある他のコンポーネント、OS外にあるプログラム301、302のようなソフトウェア、そして、装置303〜304およびハードウェア・アダプタ305のようなハードウェア装置とインタフェース接続する。アプリケーション・プログラム301は、たとえば、ユーザがプレゼンテーションのための特定のストリーミング・データを選ぶビューア・ユーティリティであってもよい。データのフローをリクエストまたは特定するプログラムまたはその他モジュールは、クライアントと呼ばれることになる。プログラム302は、何らかの方法で、たとえば、ソフトウェア・デジタル・フィルタまたはコンパンダでデータを変換するソフトウェア・モジュールを表している。装置303は、ハードウェア・モジュール、たとえば、メモリまたはMPEG−2デコーダ)であってもよい。装置304は、そのハードウェア・インタフェース・アダプタ305と共に、オフライン記憶装置、たとえば、DVDプレーヤまたはケーブルテレビを表している。
【0021】
システム100における物理的なメモリは、記憶したデータを組織化するためのメモリ・マネージャ・コンポーネント320を有する。単一の物理的なメモリ・モジュールが、異なった時刻あるいは異なった部分でデータを組織化するための多数のマネージャを有し得る。単一のマネージャが、多数の物理的なメモリを供してもよい。本明細書におけるマネージャ320の重要な機能は、ストリーミング・データのフレームまたは他のユニットを記憶するためのメモリのブロックを割り振ったり、割り振りを解除したりすることにある。この理由のために、マネージャ320は、本願明細書においては、しばしば、メモリ・アロケータと呼ぶ。新しく到着したデータがリクエストするときにはいつでも1つのフレームが割り当てられるか、または、予め割り当てておいてもよい。フレームは、経路内の1つまたはそれ以上のフィルタを通してデータを搬送し、経路内のすべてのフィルタがそのデータの処理を終了したときに割り当てを解除する。フレームは、廃棄してもよいが、通常は、経路にさらに新しくデータが到着したときにリサイクルされる。
【0022】
Windows(登録商標)2000においては、I/Oサブシステム330は、ファイル記憶および他のI/O装置、設備の両方を監視する。ファイルまたはI/Oサービスについてのリクエストは、アプリケーション・プログラムまたは他のソースから331、332のようなデバイス・ドライバの1つまたはそれ以上の層を経て303、304のようなハードウェア装置へ送られる。この方法により、333、334のようなフィルタ・ドライバが、或る種の特性またはイベントに基づいて、データ、ファイル・ハンドル、I/Oリクエスト・パケットその他の情報を遮断することができる。フィルタ・ドライバは、333に示すようにデータを内部処理することができる。フィルタ・ドライバは、また、302のようなプログラムに対して前後に情報を通すこともできる。なお、このようなプログラムは、OSカーネル層内、あるいは、システム100のソフトウェア・アーキテクチャにおける他の任意のポイントに位置していてもよい。コンポーネントは、単一機能専用であってもよいし、あるいは、もっと頻繁に、逐次的あるいは同時に多数の機能を実施するようにプログラムしてもよい。たとえば、デジタル信号プロセッサが、多くの異なった機能、たとえば、周波数濾波、ゲイン変更およびアコースティック効果を実行してもよい。
【0023】
ブロック340は、ストリーミング・データのためのグラフを構築し、管理するWDM−CSAコンポーネントを表しており、グラフ・データ・フロー・マネージャ341およびグラフ制御・フロー・マネージャ342を包含する。ブロック340は、また、以下に詳細に説明するように、本発明で使用するいくつかのオブジェクトを構築するパイプ・マネージャを包含する。マネージャ341〜343は、単一のソフトウェアまたはハードウェア・モジュールで実行する必要はない。それらの機能は、多くの似たようなモジュールの中に分散させ得る。
【0024】
図4Aは、データの1回またはそれ以上の全体的な変換を達成するようにコンポーネント300の選択されたものを通して1つまたはそれ以上のデータ・ストリームを転送するための、出願Docket 777.183us1に示されているようなグラフの1つのパイプ400を示している。個々のハードウェアまたはソフトウェア処理モジュール(通常、フィルタと呼ばれている)は、より重い機能ブロックを取り囲む軽い長方形として示してある。WDM−CSAプロトコルの慣例で、機能は、Pというラベルを付けた論理ピンによってデータを互いにやりとりする。
【0025】
現目的のために、フィルタは、2つの主要タイプからなる。非再構築フィルタは、データについての機能、すなわち、変換を実施する。再構築フィルタは、3本以上のピンを有し、ストリーミング・データのフレームを分割または混合することができる。そのうちのいくつかは、多数の入力フレームを混合すると共に、1つのフレームを多数の出力に分割することができる。ここで用いる「再構築」なる用語は、混合、分割、および、データのフレーム構造を変える他の動作を意味するのに用いる。ここで用いる「スプリッタ/ミキサ」なる用語は、1つまたはそれ以上の再構築動作を実施するモジュールを意味する。大きな矢印は、異なった機能間のデータ転送を示している。
【0026】
データ・フレームを混合または分割するフィルタ機能は、ストリーミング・データがより複雑になるにつれてそれに応じて共通になる。しかしながら、これらの再構築機能は、効率的にグラフに組み込むのが困難である。出願777.183US1の概念の1つは、グラフをパイプに分割することによって全体的な効率を向上させることである。しかしながら、単一のパイプにカスケード状あるいは多数のスプリッタおよびミキサを組み入れることは難しい。この出願におけるパイプは、いずれも、2つ以上の再構築機能を含まない。
【0027】
本発明を用いると、単一のパイプ400が、9つのフィルタ(そのうちの6つが再構築中)と、5つのミキサと、1つのスプリッタとを包含する。フィルタ・モジュールM4Aは、ピンP401、P402のところに到達する入力ストリーミング・データ・フレームを混合し、ピンP403のところに複合フレームを生じさせる。その一方で、モジュールM4Bは、ピンP404、P405のところの入力フレームを混合して、P406のところに併合フレームを生じさせる。別のミキサM4Cは、ピンP407、P408のところでこれら2つのフレームを受け入れ、P409のところで別の併合フレームを出力する。モジュールM4A、M4BおよびM4Cは、また、混合に加えて、いくつかの他の処理機能または変換、たとえば、信号圧縮または濾波を実施してもよい。モジュールM4Dは、ピンP410のところでフレームを処理し、P411のところでフレームを出力する単純な機能である。モジュールM4E、M4Fは、ピンP412、P414のところで入力フレームを処理し、ミキサM4Gの入力部P416、P417に送り、このミキサがP418でそれらを結合する。
【0028】
ミキサ・モジュールM4Hは、連結した入力ピンP419、P420のところでP411、P418からのフレームを受け入れ、それらをピンP421のところで単一の複合フレームに併合する。最後に、スプリッタ・モジュールM4Iは、ピンP423、P424のところで多数の出力を発生する。このモジュールは、また、単一フレームをサブフレームに分割することに加えて別の処理を実施してもよい。
【0029】
すべてのストリーミング・データ・パイプは、パイプを通過するストリーミング・データについてメモリ・フレームの割り当て、割り当て解除を行うメモリ・アロケータを包含する。割り当てられたフレーム全体は、メモリ内の物理的な空間を占有するので、物理フレームと呼ばれる。フレーム全体の中のサブフレームは、フレーム全体に存在し、別のあるいは付加的な物理メモリ空間を必要としないという点で、仮想フレームと呼ばれる。破線のボックス410は、パイプ400についてのアロケータ410のための1つの位置を示しており、この例では、アロケータはモジュールM4HのピンP421に割り当てられる。出願777.183us1は、所与のパイプについてのアロケータの位置および仕様をどのように選ぶかを論議している。以下に論議するように、現目的のためのアロケータは、出願777.183us1よりもより複合フレームを割り当てることができる。
【0030】
図4Bは、図4Aに例示したパイプ400と共に使用するための複雑なデータ・フレーム420を象徴化している。本明細書において、「フレーム」なる用語は、別のフレームの一部を形成しているか、あるいは、その中に他のフレームを有するかにかかわらず、任意のフレームを意味し得る。「複合フレーム」なる用語は、その中に入れ子にして他のフレームを有するかあるいは有し得るフレームを意味している。「サブフレーム」なる用語は、別のフレーム内に入れ子になっているか、あるいは、入れ子にし得るフレームを意味している。複合フレーム420は、ピンP421のところに位置するアロケータ410によって処理されるデータ・フレーム全体を表しているので、F421と呼ぶ。フレームF421の2つのサブフレームには、ピンP419、P420のところで生じるので、F419、F420というラベルを付けている。F419は、さらに、サブフレームF407、F408を有する。フレームF401、F402およびF404、F405は、それぞれ、F407、F408のサブフレームである。F420のサブフレームは、入力フレームF412、F414である。
【0031】
図4Cは、パイプ400についての複合フレーム全体の構造についての別の表現430を示している。複合フレーム入れ子ツリー430は、データフローの方向を表している有向縁を有する。この場合、フレームと組み合わされたピンのグラフ相対位置に依存して、3つのケースの可能性がある。1つのピンが、他のピンの下流または上流あるいは他のピンと同じレベルであり得る。入力サブフレームF401、F402は、出力ピンP403と関連したF403、ピンP407と関連したF407の両方としてラベル付けし得るフレームを含むノードに流れる。入力サブフレームF404、F405も、同様に、ノードF406/F408に流れる。サブフレームF407、F408も、同様に、F409、F410、F411またはF419とラベルを付けられたフレーム内で混合する。これは、同じフレームが対応するピンのうちの4つすべてに存在するからである。同様に、同じサブフレームF416、F417は、また、それぞれ、F412、F413およびP414、F415とラベルを付けられ得る。これらは、また、F420とも呼ばれるF418のサブフレームでもある。この上流側へのフローは、F419、F420を全複合フレームF421、F422に併合したところで終わる。この全フレームからの下流側データフローは、そのサブフレームP423、F424へ進む。
【0032】
F421のような単一の物理フレーム全体を使用してパイプを通るストリーミング・データ・フレームは、ストリーム・マネージャ340(図3)を必要とし、フレームのメモリ管理および制御を行う。これは、フレーム・アロケータ依存性を解決することを必要とするが、430のような入れ子ツリーを構築することによって行われ得る。普通のオペレーティングシステム・ストリーミング・データ機能は、或る種の場合に独特な入れ子状態を生成するのに充分な拘束を行わない。たとえば、WDM−CSAによって提供される関連情報は、個々のモジュール・ピンのフレーミング特性、グラフのトポロジおよびデータ・パイプの境界に限られている。
【0033】
図5は、問題を含む状況を示している。図5Aにおいて、パイプ500は、2つの単純な機能M5A、M5Bおよび2つの再構築機能、すなわち、ミキサ/スプリッタM5C、ミキサM5Dを包含する。ピンおよびフレームの命名法は、図4のそれに従う。
【0034】
本発明の1つの利点は、個別のパイプにカスケード状ミキサ、スプリッタを設置することを避けることによって、多くのストリーミング・データ・グラフにおけるパイプの数を減らすということにある。しかしながら、単一のグラフ全体は、まだ、本発明による多数の複合フレーム・パイプを含むことができる。その場合、出願docket 777.183US1に記載されているのと同じ方法でパイプを互いに結合する。
【0035】
図5Bは、パイプ500を供する複合フレームの1つの可能性あるレイアウト510を示している。モジュールM5Cのミキサ部分は、サブフレームF502をサブフレームF507(F504)と混合し、複合フレームF506、フレームF508とする。次いで、ミキサM5Dが、これら2つのフレームを、パイプの出力ピンP510のところで別の複合フレームF5l0に統合する。入れ子ツリー図520(図5C)は、ツリー430がパイプ400のフレーム・レイアウト(図4)を表すのと同じ形態でのこの解決策を示している。
【0036】
図5Dは、同じパイプ500についての別の構成530を示している。フレーム・レイアウト531は、モジュールM5Cが混合を終えた時点で複合フレームF506に入れ子になったサブフレームF502、F504、F508を有するが、モジュールM5DがピンP509、P511のところでその入力データを併合し始める前の状態である。図5Eの入れ子ツリー540は、モジュールM5Dが、その出力複合フレームF510に対して、その入力F509、F511対して要求されるメモリよりも多いメモリを実際に割り当てる必要がないことを示している。混合したデータを複合フレームF509(フレームF506と同じ)に直接出力することができる。
【0037】
したがって、第1の構成(図5B、5C)は、パイプ500に対して機能モジュールM5Dによって割り当てられた物理フレーム全体としてのフレームF510を有する。第2の構成(図5D、5E)においては、モジュールM5Cは、単一の物理フレーム全体としてフレームP506を割り当てる。両方の構成は、グラフ・トポロジおよびパイプ500の境界を満たす。したがって、一般的な場合、複合フレームについてフレーム・アロケータを特定するために付加的な拘束を必要とする。グラフ機能全体にアクセスするストリーム・マネージャ340は、この情報を付加的な複合フレーム入れ子ツリーの形で供給できる。
【0038】
ストリーミング・データのフローを改良する第1の目的は、パイプについてのフレーム全体を管理するように各パイプにアロケータを割り当てることである。出願777.183US1は、単純なフレームについてのメモリ・アロケータ320(図3)の動作と、アロケータをパイプ内にどのように位置させるかを論議している。本発明は、複合入れ子フレームを処理するためにこのようなアロケータを拡張する。
【0039】
図6は、出願777.183US1のデータ・フロー・プロセス全体を要約しており、そして、複合フレーム・データのフローを改良する方法を加えている。図6Aのブロック610は、或る種のパラメータの値を、ストリーミング・データ・グラフにおける各機能ユニットに割り当てる。ブロック602において、ユーザ、アプリケーション・プログラムまたは他のクライアント・ソフトウェアは、グラフについての全体的な目標を設定する。
【0040】
ブロック603は、事前セットのパイプを定義することを含めて、所望のグラフを構築する。ブロック610は、複合フレームについての付加的な動作を実施する。ブロック611は、グラフのモジュールからのサブフレームに関するブロック602内のフィルタに割り当てられたパラメータ・データを集める。1つのパラメータは、フィルタ示唆パイプ・トポロジである。すなわち、各フィルタについてのピン、パイプ間の関連である。1つのフィルタは、この情報を、ミキサおよびスプリッタのためのオプション特性として、すなわち、或る特定のパイプに対応するフィルタ・ピンのリスト・セットとして表す。たとえば、ミキサM4G(図4)は、ピンP416、P417、P418が単一のパイプに属することができることを示している。1つのフィルタは、多数のトポロジをそれらの優先順序で特定できる。WDM−CSAフロー・マネージャ340は、グラフ全体についてパイプを構築するときに、フィルタ示唆リストから各フィルタについての1つのパイプ・トポロジを選ぶ。「定数オフセット」フラグは、グラフがプレイされるときに常時1つのフィルタがその複合フレーム内の同じ位置に1つのサブフレームを維持するのを請け合うことができる。このフラグは、サブフレームと関連したフィルタ・ピンのフレーミング特性として設定される。フラグが設定された場合、サブフレーム・オフセット値が定数オフセットを特定する(これらの2つは結合できる。たとえば、負のオフセット値が、サブフレーム・オフセットが定数となるように保証されないフラグとして作用し得る。)オフセット値は、同じフィルタの複合フレーム・アドレスに対するバイト数である。グラフ・マネージャ340は、パイプ・ワイド入れ子ツリーからのパイプの実際の物理フレームに対するサブフレーム・アドレスおよび各フィルタのサブフレーム・オフセットを計算する。極めてまれなケース(たとえば、グラフ・クライアントが普通でないメモリ変換を要求するとき)において、付加的な入れ子ツリーを供給しなければならない。これが、図5D、5Eに示す状況である。
【0041】
ブロック612は、複合フレームを有する各パイプについての特有の入れ子ツリーを構成する。アプリケーション112がグラフをプレイするようにセットアップしたとき、それはブロック604でグラフを獲得する。
【0042】
ブロック605はパイプを完成させる。ブロック620は、ブロック605のプロセス全体で複合フレームをセットアップする。ブロック621は、フレーム全体および任意のサブフレーム(それが複合である場合)のサイズを選ぶ。
【0043】
ブロック622は、パイプが、カスケード状のミキサ(たとえば、図4AにおけるM4A-M4C-M4D-M4HおよびM4G-M4H)を有するか否かを決定する。もしそうならば、パイプ・マネージャ343(図3)によって実施されたブロック623は、複合フレームのレイアウトを特定する2つのテーブル700を構築する。図7Aに示すように、オフセット・テーブル710は、1つのパイプ内の各モジュールの各ピンについてのエントリ711と、各エントリについてのオフセット量の一覧を示すカラム712とを有する。図7における図示エントリは、図4に例示するパイプ400に従う。図4AにおけるピンP401のところのサブフレームF401は、量オフセット#01によって象徴化される1バイトだけ複合フレームF421全体の始めからオフセットされる。他のサブフレームについても同様である。或るピンにおけるサブフレームは、もちろん、他のピンのそれらと同じものである。その結果、エントリの多数のものが同じオフセットを有する。図7Bにおけるパイプ制御テーブル720は、パイプにおける各フィルタ・モジュールについて1つのエントリ721を有する。カラム722は、同じパイプ内の他のモジュール(そのモジュールにデータ・フレームを与える)をリストで示す。たとえば、モジュールM4Cは、フィルタ・モジュールM4A、M4Bからストリーミング・データを受け取る。「スタート」セクション723のモジュールは、パイプの外部からデータを受け取る。エントリ724は、従属モジュールを示している。グラフが完成した後、テーブル710、720は、再構築あるいは変更される必要がない。ストリーミング・グラフの制御フローを改良するためにこれらのテーブルの使用法を、図6Bと関連して以下に説明する。
【0044】
ブロック630は、パイプのメモリ・アロケータを位置決めする。631がパイプ内に任意のミキサを見いだした場合、ブロック632は、アロケータを、データフローにおいて最も遠い下流側にあるミキサの出力ピンに割り当てる。パイプ400例において、これは、モジュールM4HのピンP421である。ブロック633が、パイプがミキサを含んでおらず、スプリッタを含んでいることを見いだした場合には、ブロック634が、アロケータを、パイプ内の最も遠い上流側にあるスプリッタの入力ピンに割り当てる。パイプ400例においては、これは、モジュールM4IのピンP422となろう。ミキサまたはスプリッタがまったくない場合には、ブロック635が、出願777.183US1に記載されているように、アロケータを割り当てる。
【0045】
グラフは、図6Bのブロック606において、プレイの準備が整っている(すなわち、そのモジュールを通るストリーミング・データを処理する準備が整っている)。
【0046】
プレイ中のグラフの制御は、1つのピンから他のピンへ送られてデータ・フレームを送り、完成フレームを戻すI/Oリクエスト・パケット(IRP)を使用しながら、係属中の出願docket777.184US1に記載されている機構を使用することができる。
【0047】
パイプが上記の通りにカスケード状のミキサを有する場合、本発明は、データフローを改良するだけでなくて、グラフがプレイされるときに処理オーバーヘッドを減らすように制御フローを改良することもできる。ストリーミング・グラフの重要な態様は、パイプにおけるストリーミング・データを伝播するための複合フレームのフローを管理する必要がある制御処理の全数を最小限に抑えることにある。制御は、すでに、パイプにおけるカスケード状のスプリッタに対して有効である。データおよび制御フローが同じ方向だからである。しかしながら、パイプ内のカスケード状ミキサの場合、データフローおよび制御は、互いに反対方向である。それは、フレームが、データのソースに向かって上流方向においてサブフレームに分かれるからである。普通のストリーミング・グラフ制御は、複合フレーム入れ子ツリーのルートで制御処理を開始し、データフローに相対的に上流側へ伝播する。これは、かなりの量のオーバーヘッドを生じさせる可能性がある。たとえば、図4のパイプ400全体は、ソースM4A、M4B、M4E、M4Fのうちの任意のものからサブフレームF401、F402、F404、F405にデータを引っ張り始めることができる前に、すべてのフィルタを通してI/Oリクエスト・パケット(IRP)あるいは他の制御処理を伝播させなければならない。パイプ400について普通の制御シーケンスは、次のように進む。
【0048】
・M4Hが、物理フレームF421を割り当て、それを分割してフレームF419、F420を割り当てる。
・M4Hは、P419のオフセットを通して上流側のフィルタM4DにIRPを発行する。
・M4Hは、F420のオフセットを通して上流側のフィルタM4GにIRPを発行する。
・M4Dは、F4l9のオフセットを通して上流側のフィルタM4CにIRPを発行する。
・M4Gは、フレームF416、F417を割り当てるようにF420を分割する。
・M4Gは、F416のオフセットを通して上流側のフィルタM4EにIRPを発行する。
・M4Gは、F417のオフセットを通して上流側のフィルタM4FにIRPを発行する。
・M4Cは、フレームP407、F408を割り当てるようにF419を分割する。
・M4Cは、F407のオフセットを通して上流側のフィルタM4AにIRPを発行する。
・M4Cは、F408のオフセットを通して上流側のフィルタM4BにIRPを発行する。
【0049】
したがって、フィルタM4C、M4D、M4H、M4Gは、各サブフレームを2回処理しなければならない。すなわち、一度サブフレームを割り当てから、再びデータを処理しなければならない。1セットの上流側フィルタのいずれかがそのサブフレームを完了したとき、発行フィルタは、他の上流側フィルタが完了したかどうかをチェックしなければならない。たとえば、M4Aが完成サブフレームをM4Cに戻した場合、M4Cは、そのサブフレームF408が完成したかどうかをチェックしなければならない。
【0050】
複合フレームの本システムの場合、パイプは、同時に割り当てられ、循環している多数のサブフレームを支援し得る。サブフレームがフレーム全体に対して一定の関係を維持する普通の場合、ジャストインタイム制御処理を実施することによってパイプ内で制御フローを改良することが可能である。先に述べた定数オフセット・フラグをセットすることは、同期管理またはカスタム管理が必要でないことを示し、そして、複合フレームを開始からのサブフレームのオフセットが決して変化しないことを示している。
【0051】
図6Bは、完了がさらに別の処理を生じさせるかどうかにかかわらず、すべての処理時刻、すなわち、任意のフィルタがサブフレームを完了するときにはいつでも、パイプ全体の横断および制御処理の発行を避けることによって定数オフセット・サブフレームを有するパイプにおけるフロー制御をどのように改良するかを示している。パイプ内のフィルタがそれらの定数オフセット・フラグ・セットを有するとき、ブロック640〜660が実施されて、実際のデータフローについて必要な時刻でのみ処理を実行する。それに加えて、これらのブロックに記録されるフレーム・ステータス情報は、明確で単純なパイプ・ワイド・ランタイム・コンテキスト情報を提供し、これは、複雑で、非同期で分散されているストリーミング・システムを設計し、維持する人間にとって有用である。図6Bは、単一のパイプの動作だけを示している。すなわち、しばしば、グラフが、同時に稼働する多数のパイプを含んでいる。
【0052】
ブロック640は、ブロック641で象徴化されるように、パイプ内の各フレームについて非同期で実行する。すなわち、パイプは、同時に循環する多数のフレームを有し得る。ブロック642が、パイプが新しいフレームを必要とすることを検出したときはいつでも、ブロック643は、アロケータ410(図4)にそれを生じさせる。ブロック644は、そのフレームについての新しい制御テーブルを構築し、初期化する。図8は、いくつかの能動フレームについてのフレーム制御テーブル800を示している。テーブル810は、第1循環フレームとタグ811によって関連させられ、ここで再び、図示例のパイプ400を使用して、各フィルタ・モジュールM4A〜M4Iについてのエントリ812を有する。カラム813は、各エントリについてのフラグを含んでおり、これは、各モジュールがその特定のフレームを処理したか否かを示している。テーブル820(同時に循環している別のフレームでタグ821によって関連付けられている)は、同じエントリ822を有するが、もちろん、フラグ823の値は通常異なることになる。新しく作成されたテーブルは、すべてのフラグをクリアしている。
【0053】
ブロック651で象徴化されているように、ブロック650は、パイプ制御テーブル720(図7)の「スタート」セクション723にリストで示されている各フィルタ・モジュールによって実施される。ブロック640が新しいフレームを発行した後、各スタート・モジュールは、データ・ソーシング動作652を開始し、パイプ外からの、すなわち、別のパイプから、または、記憶装置あるいは他のハードウェア装置からの新しいフレームのサブフレームを満たす。
【0054】
フィルタがそれらの動作を実施するにつれて、ブロック660は、各パイプ・モジュールによって繰り返し、そして、非同期で実行される。ブロック661が、或る特定のフィルタがフレームまたはサブフレーム上でのその動作を完了したことを見いだしたときにはいつでも、ブロック662が、その循環フレームについてのテーブル810または820のエントリ812または822に完了フラグ813または823を置く。カラム722内の1つののソースとして現れる各エントリ721について、ブロック663は、1つのモジュールにフレーム制御テーブルをチェックさせ、同じ下流側モジュールにデータを供給する他のモジュールすべてがそのフレーム上での動作を完了したかどうかを決定する。ブロック664がこれらの他のモジュールのすべてがそのフレーム上での動作を完了したことを見いだした場合(すなわち、それらのエントリについての完了フラグが設定された場合)、ブロック665が、パイプ内で下流側の次のモジュールについての制御処理を開始する。すなわち、下流側のモジュールは、そのデータのすべてが利用できるようになったときにのみ呼び出される。
【0055】
たとえば、モジュールM4B(図4)がサブフレームF406を獲得し、処理を完了したときには、それは適切なフレーム制御テーブルに完了フラグを設定する。次いで、パイプ制御テーブルを検討し、下流側のモジュールM4CがモジュールM4AからのサブフレームF403にも依存していることを見いだす。モジュールM4Bは、同じフレーム制御テーブルを読み、モジュールM4Aが、そのフレーム制御テーブル・エントリにフラグを設定することによってサブフレームF403の完了をすでに報告していたかどうかを決定する。もしそうであれば、M4Bは、M4Cに対する制御処理を開始し、フレームF403、F406の混合を開始する。さもなければ、その時点でなんら制御処理は生じない。次いで、その後、M4Aが処理サブフレームF403を完了し、M4Aフラグを設定したとき、M4Bがすでにそのフラグを設定したかどうかを検討し、発見する。したがって、M4AはモジュールM4Cを呼び出す。すなわち、下流側のモジュールによって要求されるサブフレームを終了する最後のモジュールは、そのモジュールについての制御処理を開始する唯一のモジュールとなる。
【0056】
先に述べたように、この方法は、複合フレームを有するグラフにおけるあらゆるパイプについて実施される。最も一般的なケースにおいては、多数のパイプが同じフィルタを通過することができる。この状況に対応するために、フィルタそれ自体に基づくというよりは、むしろ、個々のモジュール・ピンに基づいてフレーム制御テーブルおよびパイプ制御テーブルを作成することが可能である。任意のインター・パイプ依存性、たとえば、データ・サイズ要件、時間的同期、リソース使用率、グラフ・オブジェクト全体などは、従来の要領でそれ自体の中のパイプ・マネージャによってアドレス指定される。
【0057】
結論
本発明は、データを再構築すると共にデータを変換するためにスプリッタ/ミキサ処理モジュールを有するグラフを介してデータフローおよびストリーミング・データの制御を向上させる。
【0058】
スプリッタおよびミキサのみを特別に説明したが、それらは、本発明もユーティリティを見いだすより広いクラスの再構築動作の例示に過ぎないと考えるべきである。たとえば、送信フィルタは、単一の出力ピンを通して受信フィルタへ多数のサブフレームを送信することができる。1つの実際的な用途としては、単一の入力ピンおよび単一の出力ピンを有するサイレンス・コンプレッション・フィルタがある。このようなフィルタは、その入力ピンのところでオーディオ・データのフレームを受け取り、すべてのサイレント期間をスキップするようにデータを解析し、非サイレント・セグメントを単一の出力ピンを経て下流側のフィルタに送る。このサブグラフ(サイレント・コンプレッサおよびその下流側のカスタマ)は、多数のサブフレームを有する単一のパイプを使用して実施され得る。サイレント・コンプレッサの入力フレームは、複合フレームであり、サイレント・コンプレッサの多数の出力サブフレームは、入力複合フレームの一部となる。このような具体例は、サブグラフ全体について単一の複合フレームを使用するために、サブグラフの使用するメモリを減らす。また、データの多くがサイレント・コンプレッサによってオーバーライドされない場合には、CPU処理負荷を減らすこともできる。
【0059】
好ましい実施例および少々の拡張例、変形例を説明してきたが、本発明者等は本発明を特許請求の範囲に示すように定義する。
【図面の簡単な説明】
【図1】 本発明のための環境例を示すブロック図である。
【図2】 図1のマルチポートメモリの詳細図である。
【図3】 図1の中の本発明に関係する成分の詳細図である。
【図4A】 本発明によって処理されるストリーミングデータパイプ例のブロック図、及びパイプ内を流れるデータを表す図である。
【図4B】 本発明によって処理されるストリーミングデータパイプ例のブロック図、及びパイプ内を流れるデータを表す図である。
【図4C】 本発明によって処理されるストリーミングデータパイプ例のブロック図、及びパイプ内を流れるデータを表す図である。
【図5A】 別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図5B】 別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図5C】 別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図5D】 別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図5E】 別のストリーミングデータパイプのブロック図、及びパイプ内の代替複合データフレームを表す図である。
【図6A】 本発明による複合フレームを有するグラフを準備し、制御する方法のフローチャートである。
【図6B】 本発明による複合フレームを有するグラフを準備し、制御する方法のフローチャートである。
【図7A】 図6の方法で構築されるテーブルを示す図である。
【図7B】 図6の方法で構築されるテーブルを示す図である。
【図8】 図6の方法で構築される別のテーブルを示す図である。

Claims (67)

  1. デジタルコンピュータ内の複数のモジュールを通してストリーミングデータのフレームを処理する方法であって、
    上記モジュールの複数を、接続されたグループとしてパイプを構築するステップを含み、上記モジュールの少なくとも1つは再構成モジュールであり、
    所定のサブフレームを有する複合フレームを割振るステップと、
    上記ストリーミングデータを、上記グループ内の異なるモジュールを通して異なるサブフレーム内へ移送するステップと、
    上記再構成モジュール内の少なくとも若干のサブフレームの間で上記データを再構成するステップと、
    を更に含むことを特徴とする方法。
  2. 請求項1に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  3. 上記複合フレームは、メモリ内の物理的フレームであることを特徴とする請求項1に記載の方法。
  4. 上記サブフレームは、上記物理的フレームと同一のメモリ内に定義されている仮想フレームであることを特徴とする請求項3に記載の方法。
  5. 上記複合フレームのためのアロケータを、上記パイプ内のモジュールの1つに割当てるステップを更に含むことを特徴とする請求項1に記載の方法。
  6. 上記アロケータを、上記パイプ内の最も遠い上流再構成モジュールに割当てることを特徴とする請求項5に記載の方法。
  7. 上記アロケータを、上記パイプ内の最も遠い下流再構成モジュールに割当てることを特徴とする請求項5に記載の方法。
  8. 上記データを上記再構成モジュール内においてどのように再構成するのかを指定するフレームネスティング木を構築するステップを更に含むことを特徴とする請求項1に記載の方法。
  9. 他の複数のモジュールを含む他の複数のパイプを構築するために、上記コンピュータ内で上記諸ステップを繰り返すステップと、
    上記パイプを互いにグラフに結合するステップと、
    を更に含むことを特徴とする請求項1に記載の方法。
  10. 上記ストリーミングデータの移送は、上記再構成モジュールによって処理されるサブフレームの全てが使用可能になった時に限って、そのモジュールに制御トランザクションを供給することを含むことを特徴とする請求項1に記載の方法。
  11. デジタルコンピュータ内の少なくとも1つの再構成モジュールを含むパイプ内に配置されている複数のモジュールを通してストリーミングデータのフレームを処理する方法であって、
    複数のサブフレームを有する複合フレームを割振るステップと、
    上記再構成モジュールにデータを供給する何れかのモジュール内のサブフレームに対する操作を遂行するステップと、
    上記再構成モジュールにデータを供給するサブフレームの全てに対する操作が完了した後に、上記再構成モジュールに制御トランザクションを供給するステップと、
    上記制御トランザクションに応答して、上記再構成モジュールに供給されるサブフレームに対する操作を遂行するステップと、
    を含むことを特徴とする方法。
  12. 請求項11に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  13. 上記複合フレームの割振りは、上記パイプ内の各モジュール毎のエントリと、特定のモジュールが上記フレームに対する操作を完了したか否かを指示する各モジュール毎のフラグとを有するフレーム制御テーブルを構築することを含むことを特徴とする請求項11に記載の方法。
  14. 1つのモジュールが1つのフレームに対する操作を完了した時に、上記フラグの1つをセットするステップを更に含むことを特徴とする請求項13に記載の方法。
  15. 上記複合フレーム内のサブフレームの構造を指定するオフセットテーブルを構築するステップを更に含むことを特徴とする請求項11に記載の方法。
  16. 上記パイプ内のモジュールの構造を指定するパイプ制御テーブルを構築するステップを更に含むことを特徴とする請求項11に記載の方法。
  17. 上記パイプ制御テーブルは、上記パイプ内の少なくとも若干のモジュールのためのエントリを有し、上記各エントリは、他のどの1つまたは複数のモジュールが上記パイプ内のモジュールの1つにデータを供給するのかを指定していることを特徴とする請求項16に記載の方法。
  18. 上記パイプ制御テーブルは、上記パイプ内の各モジュール毎に、上記パイプの外側からデータを供給するエントリを有していることを特徴とする請求項16に記載の方法。
  19. 複数の複合フレームが上記パイプ内を同時に循環するように、上記諸ステップを時間的に重畳させて繰り返すステップを更に含むことを特徴とする請求項11に記載の方法。
  20. 上記各複合フレーム毎に、分離したフレーム制御テーブルを構築するステップを更に含むことを特徴とする請求項19に記載の方法。
  21. デジタルコンピュータ内の複数の再構成モジュールを含むモジュールを通してストリーミングデータのフレームを処理する方法であって、
    上記再構成モジュールを含む複数のモジュールの接続されたグループとしてパイプを構築するステップと、
    単一のアロケータを上記モジュールの1つに割当てるステップと、
    上記再構成モジュールのそれぞれに関連付けられた所定のサブフレームを有する複合フレームを割振るステップと、
    上記ストリーミングデータを、上記グループ内の異なるモジュールを通して異なるサブフレーム内へ移送するステップと、
    上記再構成モジュール内のサブフレームの間で上記データを再構成するステップと、
    を含むことを特徴とする方法。
  22. 請求項21に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  23. 上記データを上記再構成モジュール内においてどのように再構成するのかを指定するフレームネスティング木を構築するステップを更に含むことを特徴とする請求項21に記載の方法。
  24. 各モジュール毎の定オフセットフラグを収集するステップを更に含むことを特徴とする請求項21に記載の方法。
  25. 上記定フラグがセットされている何れかのモジュールのためのオフセット値を収集するステップを更に含むことを特徴とする請求項24に記載の方法。
  26. 上記複合フレームに対する上記サブフレームの関係を指定するオフセットテーブルを構築するステップを更に含むことを特徴とする請求項24に記載の方法。
  27. 上記複合フレーム内の各サブフレーム毎のメモリサイズを指定するステップを更に含むことを特徴とする請求項24に記載の方法。
  28. 上記複数の再構成モジュールは、上記パイプ内のカスケード内の単一の型であることを特徴とする請求項21に記載の方法。
  29. 上記カスケードにされたモジュールの型に応答して、上記アロケータが特定のモジュールに割当てられることを特徴とする請求項28に記載の方法。
  30. 上記複数のカスケードにされたモジュールはミクサであり、上記アロケータは上記カスケード内の下流のミクサに割当てられることを特徴とする請求項28に記載の方法。
  31. 上記複数のカスケードにされたモジュールはスプリッタであり、上記アロケータは上記カスケード内の下流のスプリッタに割当てられることを特徴とする請求項28に記載の方法。
  32. 上記ストリーミングデータの移送は、上記再構成モジュールによって処理されるサブフレームの全てが使用可能になった時に限って、それぞれのモジュールに制御トランザクションを供給することを含むことを特徴とする請求項21に記載の方法。
  33. デジタルコンピュータ内のパイプに接続されている複数の再構成モジュールを含むモジュールを通してストリーミングデータのフレームを処理する方法であって、
    異なる再構成モジュールのための複数のサブフレームを有する複合フレームを割振るステップと、
    複数のソースモジュール内の若干のサブフレームに対してデータ供給操作を遂行するステップと、
    各データ供給操作が完了した時に、ある操作を遂行するために上記再構成モジュールの1つがそれに要求されるサブフレームの全てを有しているか否かを決定するステップと、
    もし諾であれば、上記1つの再構成モジュールに制御トランザクションを供給するステップと、
    制御トランザクションを受信した後に、上記1つの再構成モジュールにおいて操作を遂行するステップと、
    を含むことを特徴とする方法。
  34. 請求項33に記載の方法をデジタルコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  35. 上記ソースモジュールは、上記パイプの外側からデータを受信するモジュールであることを特徴とする請求項33に記載の方法。
  36. 上記複数の再構成モジュールはミクサであることを特徴とする請求項33に記載の方法。
  37. 上記複数のミクサは、上記パイプ内でカスケードにされていることを特徴とする請求項36に記載の方法。
  38. 各データ供給操作が完了した時に、操作を遂行するために他の再構成モジュールがそれらに要求されるサブフレームの全てを有しているか否かを決定するステップと、
    もし諾であれば、上記他の再構成モジュールに制御トランザクションを供給するステップと、
    上記制御トランザクションを受信した後に、上記他の再構成モジュールにおいて操作を遂行するステップと、
    を含むことを特徴とする請求項33に記載の方法。
  39. 上記パイプ内の各モジュール毎に、分離した完了フラグを格納するステップと、
    対応するモジュールが上記フレームに対する操作を完了した時に、上記完了フラグの1つをセットするステップと、
    を更に含むことを特徴とする請求項33に記載の方法。
  40. 上記決定ステップは、
    上記1つの再構成モジュールにデータを供給する上記他のモジュールの全てをリストしているテーブルを読むステップと、
    上記他のモジュールの全ての完了フラグがセットされているか否かを決定するステップと、
    を更に含むことを特徴とする請求項39に記載の方法。
  41. 複数の複合フレームが上記パイプ内を同時に循環するように、上記諸ステップを時間的に重畳させて繰り返すステップを更に含むことを特徴とする請求項33に記載の方法。
  42. 上記各複合フレーム毎に、分離したフレーム制御テーブルを構築するステップを更に含むことを特徴とする請求項41に記載の方法。
  43. ストリーミングデータを処理するコンピュータシステムであって、
    上記ストリーミングデータを処理する複数のモジュールを備え、上記モジュールの少なくとも若干は再構成用であり、
    ストリーミングデータを含ませるために、サブフレームを含む複合フレームを割振る複数のメモリ管理者と、
    上記複数の再構成モジュールを含む少なくとも1つのパイプを有するグラフを構築し、且つ上記メモリ管理者の1つを上記パイプに割当てる流れ管理者と、
    を更に備えていることを特徴とするコンピュータシステム。
  44. 上記複合フレームを格納するメモリを更に備えていることを特徴とする請求項43に記載のシステム。
  45. 上記サブフレームは、上記メモリ内の上記複合フレーム内に割振られることを特徴とする請求項44に記載のシステム。
  46. プロセッサを更に含むことを特徴とする請求項44に記載のシステム。
  47. 上記プロセッサは、1つまたはそれ以上の上記再構成モジュールを実現していることを特徴とする請求項46に記載のシステム。
  48. 入力/出力システムを更に含むことを特徴とする請求項46に記載のシステム。
  49. 上記入力/出力システムは、1つまたはそれ以上の上記モジュールを実現していることを特徴とする請求項48に記載のシステム。
  50. 上記複合フレームの構造の表現を構築するパイプ管理者を更に備えていることを特徴とする請求項43に記載のシステム。
  51. 上記表現の1つは、上記複合フレームに対する上記サブフレームの位置を指定することを特徴とする請求項50に記載のシステム。
  52. 上記表現の1つは、上記パイプ内の上記モジュールの関係を指定することを特徴とする請求項50に記載のシステム。
  53. 上記ストリーミングデータを、上記モジュールを通して上記種々のサブフレーム内へ移送する制御管理者を更に含むことを特徴とする請求項43に記載のシステム。
  54. 上記制御管理者は、上記再構成モジュールの1つによって処理されるサブフレームの全てが使用可能になった時に限って、あるサブフレームの処理を開始させる制御トランザクションをそのモジュールに供給することを特徴とする請求項53に記載のシステム。
  55. ストリーミングデータを処理するコンピュータシステムであって、
    パイプに配置され、上記ストリーミングデータを処理する複数のモジュールを備え、上記モジュールの少なくとも若干は再構成用であり、
    ストリーミングデータを含ませるために、サブフレームを含む複合フレームを割振る複数のメモリ管理者を更に備え、異なるサブフレームは異なるモジュールに関連付けられ、
    上記モジュールにおける処理操作を開始させる制御トランザクションを供給する制御管理者を更に備えている、
    ことを特徴とするコンピュータシステム。
  56. 上記制御管理者は、特定のモジュールに関連付けられている上記サブフレームの若干が使用可能になった時に限って、上記制御トランザクションをそのモジュールに供給することを特徴とする請求項55に記載のシステム。
  57. 上記若干のサブフレームは、上記特定のモジュールにデータを供給する上記サブフレームの全てを含むことを特徴とする請求項56に記載のシステム。
  58. 上記モジュールの若干は、上記パイプの外側からデータを受信することを特徴とする請求項55に記載のシステム。
  59. 上記制御管理者は、上記複合フレームの1つが割振られた時に、上記若干のモジュールに制御トランザクションを供給することを特徴とする請求項58に記載のシステム。
  60. 上記再構成モジュールの少なくとも若干は、上記複数のサブフレームを組合わせるミクサであることを特徴とする請求項55に記載のシステム。
  61. 上記複数のミクサは、上記パイプ内にカスケードにされていることを特徴とする請求項60に記載のシステム。
  62. 上記制御管理者は、上記ミクサの何れかによって組合わされる上記サブフレームの全てが使用可能になった時に限って、上記制御トランザクションの1つをそのミクサに供給することを特徴とする請求項61に記載のシステム。
  63. 上記複合フレームを格納するメモリを更に備えていることを特徴とする請求項55に記載のシステム。
  64. 上記プロセッサは、1つまたはそれ以上の上記再構成モジュールを実現していることを特徴とする請求項63に記載のシステム。
  65. 1つまたはそれ以上の上記モジュールを実現する入力/出力システムを更に含むことを特徴とする請求項64に記載のシステム。
  66. デジタルコンピュータ内のモジュールを通してストリーミングデータのフレームを処理する方法を、デジタルコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、上記方法は、
    複数の上記モジュールの接続されたグループとしてパイプを構築するステップを含み、上記モジュールの少なくとも1つは再構成モジュールであり、
    所定のサブフレームを有する複合フレームを割振るステップと、
    上記ストリーミングデータを、上記グループ内の異なるモジュールを通して異なるサブフレーム内へ移送するステップと、
    上記再構成モジュール内の少なくとも若干のサブフレームの間で上記データを再構成するステップと、
    を更に含むことを特徴とするコンピュータ読み取り可能な記録媒体。
  67. デジタルコンピュータ内の少なくとも1つの再構成モジュールを含むパイプに配置されている複数のモジュールを通してストリーミングデータのフレームを処理する方法を、デジタルコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、上記方法は、
    複数のサブフレームを有する複合フレームを割振るステップと、
    上記再構成モジュールにデータを供給する上記モジュールの何れか内の上記サブフレームに対する操作を遂行するステップと、
    上記再構成モジュールにデータを供給する上記サブフレームの全てに対する操作が完了した後に、制御トランザクションを上記再構成モジュールに供給するステップと、
    上記制御トランザクションに応答して、上記再構成モジュールに供給される上記サブフレームに対する操作を遂行するステップと、
    を含むことを特徴とするコンピュータ読み取り可能な記録媒体
JP2000618818A 1999-05-12 2000-04-26 ストリーミングデータフレームの分割及び混合 Expired - Fee Related JP4536266B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US09/310,597 1999-05-12
US09/310,596 US7007096B1 (en) 1999-05-12 1999-05-12 Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US09/310,610 1999-05-12
US09/310,597 US6658477B1 (en) 1999-05-12 1999-05-12 Improving the control of streaming data through multiple processing modules
US09/310,610 US6748440B1 (en) 1999-05-12 1999-05-12 Flow of streaming data through multiple processing modules
US09/310,596 1999-05-12
PCT/US2000/011275 WO2000070442A2 (en) 1999-05-12 2000-04-26 Splitting and mixing streaming-data frames

Publications (2)

Publication Number Publication Date
JP2002544739A JP2002544739A (ja) 2002-12-24
JP4536266B2 true JP4536266B2 (ja) 2010-09-01

Family

ID=27405466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000618818A Expired - Fee Related JP4536266B2 (ja) 1999-05-12 2000-04-26 ストリーミングデータフレームの分割及び混合

Country Status (8)

Country Link
EP (1) EP1190302B1 (ja)
JP (1) JP4536266B2 (ja)
AT (1) ATE243865T1 (ja)
AU (1) AU4668800A (ja)
DE (1) DE60003557T2 (ja)
DK (1) DK1190302T3 (ja)
ES (1) ES2200877T3 (ja)
WO (1) WO2000070442A2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347954B (zh) * 2019-05-24 2021-06-25 因特睿科技有限公司 面向复杂Web应用的服务化方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0782539B2 (ja) * 1988-07-14 1995-09-06 株式会社エイ・ティ・アール通信システム研究所 瞳孔画像撮影装置
US5016282A (en) * 1988-07-14 1991-05-14 Atr Communication Systems Research Laboratories Eye tracking image pickup apparatus for separating noise from feature portions
JPH02224637A (ja) * 1988-11-16 1990-09-06 A T R Tsushin Syst Kenkyusho:Kk 視線検出方法
US5289377A (en) * 1991-08-12 1994-02-22 Trw Inc. Fault-tolerant solid-state flight data recorder
JP2521016B2 (ja) * 1991-12-31 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチメディア・デ―タ処理システム
US6167156A (en) * 1996-07-12 2000-12-26 The United States Of America As Represented By The Secretary Of The Navy Compression of hyperdata with ORASIS multisegment pattern sets (CHOMPS)
US5928331A (en) * 1997-10-30 1999-07-27 Matsushita Electric Industrial Co., Ltd. Distributed internet protocol-based real-time multimedia streaming architecture

Also Published As

Publication number Publication date
EP1190302A2 (en) 2002-03-27
DE60003557T2 (de) 2004-01-08
WO2000070442A3 (en) 2002-01-17
EP1190302B1 (en) 2003-06-25
WO2000070442A2 (en) 2000-11-23
DE60003557D1 (de) 2003-07-31
AU4668800A (en) 2000-12-05
ES2200877T3 (es) 2004-03-16
ATE243865T1 (de) 2003-07-15
DK1190302T3 (da) 2003-10-13
JP2002544739A (ja) 2002-12-24

Similar Documents

Publication Publication Date Title
US7007096B1 (en) Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US6658477B1 (en) Improving the control of streaming data through multiple processing modules
US7496677B2 (en) Associating computer resources to modules in a graph based on a selected overall performance goal for the graph
US7447754B2 (en) Methods and systems for processing multi-media editing projects
JP4313815B2 (ja) コンピュータ・オペレーティング・システムにおけるカーネル・モード動作のユーザ・モード・プロキシ
JP4038564B2 (ja) コンピュータ型システムおよびデータ処理タスクを実行する方法
KR0163234B1 (ko) 데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템
US7260310B2 (en) Methods and systems for managing multiple inputs and methods and systems for processing media content
JP3817339B2 (ja) ファイル入出力制御方法
US5384890A (en) Method and apparatus for providing multiple clients simultaneous access to a sound data stream
US7127701B2 (en) Computer processing and programming method using autonomous data handlers
US7441251B2 (en) System and related interfaces supporting the processing of media content
US7529848B2 (en) Methods and systems for efficiently processing compressed and uncompressed media content
US6341368B1 (en) Method and systems for creating multi-instanced software with a preprocessor
JP4536266B2 (ja) ストリーミングデータフレームの分割及び混合
Wolf System Architecture of the Multimedia Environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100525

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100616

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees