(57)【要約】  メディアタイムライン処理インフラストラクチャが説明される。一実施形態では、１つまたは複数のコンピュータ可読媒体が、実行された場合に、順次レンダリングのためにアプリケーションから複数のセグメントを受諾するように構成されるアプリケーションプログラミングインターフェースを有するインフラストラクチャを提供するコンピュータ実行可能命令を含む。各セグメントは、インフラストラクチャによるレンダリングのために少なくとも１つのメディア項目を参照し、各セグメントは、アプリケーションによってメディアタイムラインから取得される。
2008538675.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行して、以下の処理
メディアタイムラインから複数のセグメントを導出すること、なお、この処理において、
前記メディアタイムラインは複数のメディアを参照し、
各前記セグメントは、前記セグメントの持続時間中にレンダリングすべきメディアを参照し、および
インフラストラクチャによってレンダリングするためのアプリケーションプログラミングインターフェースを介して前記複数のセグメントを待ち行列化すること
を実行することを特徴とする方法。
【請求項２】
前記メディアタイムラインは、少なくとも２つの異なるタイプのメディアを参照することを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションは、前記メディア自体をレンダリングするようには構成されないことを特徴とする請求項１に記載の方法。
【請求項４】
前記アプリケーションは、１つまたは複数の前記メディアがどのように前記インフラストラクチャによってレンダリングされるかを認識しないことを特徴とする請求項１に記載の方法。
【請求項５】
前記複数のセグメントは、前記インフラストラクチャによってレンダリングするために、前記インフラストラクチャによって前記アプリケーションプログラミングインターフェースを介して前記アプリケーションに公開されるデータ構造において待ち行列化されることを特徴とする請求項１に記載の方法。
【請求項６】
前記メディアタイムラインは、前記アプリケーションによって前記インフラストラクチャに公開されない前記メディアタイムラインを記述するために１つまたは複数のメーカ独自の技法を使用することを特徴とする請求項１に記載の方法。
【請求項７】
少なくとも１つの前記セグメントのトポロジを変更すると共に、前記アプリケーションプログラミングを介する前記インフラストラクチャとの前記アプリケーションの対話を介して前記セグメントがレンダリングされることをさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記アプリケーションによって出力されるユーザインターフェースを介して前記メディアタイムラインをレンダリングするための要求を受信することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
アプリケーションによってメディアタイムラインをレンダリングする要求を受信すること、
なお、この処理において、前記メディアタイムラインが、
複数のノードを含み、
第２前記ノードで参照される第２メディアに対して、第１前記ノードで参照される第１メディアのプレゼンテーションを定義し、
前記アプリケーションによって前記メディアタイムラインから複数のセグメントを導出すること、および
なお、この処理において、各前記セグメントは、前記セグメントの持続時間中にレンダリングされる１つまたは複数のノードを含み、
前記アプリケーションが、１つまたは複数の前記メディアがどのようにインフラストラクチャによってレンダリングされるかを認識しないように、前記インフラストラクチャによるレンダリングのために前記アプリケーションによってアプリケーションプログラミングインターフェースを介して前記複数のセグメントを渡すこと
を含むことを特徴とする方法。
【請求項１０】
前記複数のセグメントは、前記インフラストラクチャによってレンダリングするために、前記インフラストラクチャによってアプリケーションプログラミングインターフェースを介して前記アプリケーションに公開されるデータ構造において待ち行列化されることを特徴とする請求項９に記載の方法。
【請求項１１】
少なくとも１つの前記セグメントのトポロジを変更すると共に、別の前記セグメントが、前記アプリケーションプログラミングを介して前記インフラストラクチャとの前記アプリケーションの対話によってレンダリングされることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記メディアタイムラインは、前記インフラストラクチャに前記アプリケーションによって公開されない前記メディアタイムラインを記述するために１つまたは複数のメーカ独自の技法を使用することを特徴とする請求項９に記載の方法。
【請求項１３】
前記アプリケーションは、１つまたは複数の前記メディアがどのように前記インフラストラクチャによってレンダリングされるかを認識しないことを特徴とする請求項９に記載の方法。
【請求項１４】
前記アプリケーションは、前記メディア自体をレンダリングするようには構成されないことを特徴とする請求項９に記載の方法。
【請求項１５】
コンピュータ実行可能命令を含む１つまたは複数のコンピュータ可読媒体であって、前記コンピュータ実行可能命令が実行された場合に、順次レンダリングのためにアプリケーションから複数のセグメントを受諾するように構成されるアプリケーションプログラミングインターフェースを有するインフラストラクチャを提供する１つまたは複数のコンピュータ可読媒体において、各前記セグメントは、
前記インフラストラクチャによるレンダリングのために少なくとも１つのメディア項目を参照し、および
アプリケーションによるメディアタイムラインからのセグメントであることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１６】
前記複数のセグメントは、前記インフラストラクチャによってレンダリングするために、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションに公開されるデータ構造において待ち行列化されることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１７】
前記インフラストラクチャは、別の前記セグメントがレンダリング中に、前記アプリケーションによって行われた少なくとも１つの前記セグメントのトポロジに対する変更を受諾するように構成されることを特徴とする請求項１６に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１８】
前記メディアタイムラインは、前記インフラストラクチャに前記アプリケーションによって公開されない前記メディアタイムラインを記述するために１つまたは複数のメーカ独自の技法を使用することを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１９】
前記アプリケーションは、１つまたは複数の前記媒体がどのように前記インフラストラクチャによってレンダリングされるかを認識しないことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２０】
前記アプリケーションは、前記メディア自体をレンダリングするようには構成されないことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメディアに関し、より詳細にはメディアタイムライン処理インフラストラクチャに関する。
【背景技術】
【０００２】
デスクトップＰＣ、セットトップボックス、携帯情報端末（ＰＤＡ）などのコンピュータのユーザは、常に増加している様々なソースからの、常に増加しているメディアへのアクセスを有する。例えば、ユーザは、複数のアプリケーションを実行するデスクトップＰＣと対話して、ホームビデオ、歌、スライドショープレゼンテーションなどの出力のためのメディアを提供する。ユーザはまた、セットトップボックスを使用して、放送ネットワークを介してセットトップボックスに対して放送される従来型テレビジョン番組を受信する。さらに、ユーザが後で再生するために放送内容をセットトップボックス上のメモリに格納することができるように、セットトップボックスをパーソナルビデオレコーダ（ＰＶＲ）として構成する。さらに、ユーザがＥメールを読んで送信し、ビデオゲームをプレーし、スプレッドシートを閲覧することなどができるように、ユーザは、複数のアプリケーションを実行するワイヤレスフォンと対話する。
【０００３】
メディアソースが多種多様であり、メディアを提供し、メディアと対話するのに使用することのできるコンピュータが多種多様であるため、従来型アプリケーションおよびコンピュータはしばしば、それぞれの特定のタイプのメディアに具体的に対処するように構成された。例えば、ビデオゲームを出力するためにビデオゲームコンソール上で実行されたアプリケーションは通常、テレビジョンにアプリケーションの出力を提供するように構成され、他のコンピュータおよび他の装置で使用することのできる出力を提供するように構成されなかった。したがって、コンピュータおよび／またはアプリケーションなどの様々なメディアソースで提供されたコンテンツのプレゼンテーションは、複数のアプリケーションおよび装置を必要とすることがあり、それは時間がかかり、多くの装置を必要とすることがある。さらに、同一のコンピュータ上で実行された複数のアプリケーションが、それぞれのアプリケーションで提供される特定のタイプのメディアに具体的に対処するように構成されることがある。例えば、第１オーディオ再生アプリケーションが、歌として構成されたメディアを出力するように構成されることがある。しかし、第２オーディオ再生アプリケーションは、オーディオディクテーションフォーマットなどの第１オーディオ再生アプリケーションとは非互換のオーディオフォーマットの記録を記録および再生するように構成されることがある。したがって、同一のコンピュータおよび同一のタイプのメディア、例えばオーディオに対して実行するように構成されるアプリケーションであっても、互いに非互換のメディアを提供する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
タイムラインは、ユーザがメディアのプレゼンテーションを定義する方法を提供する。例えば、メディアプレーヤは、一般に「プレイリスト」と呼ばれる歌のリストを再生する。しかし、従来型タイムラインは、メディアを提供し、メディアと対話するのに使用することのできる多種多様なメディアソースおよび多種多様なコンピュータ構成によって制限される。例えば、メディアの様々なタイプの出力が望まれる場合、各アプリケーションは、特定のタイプのメディアをどのようにレンダリングするかなど、各タイプのメディアを「理解」する必要があった。この結果、コンピュータのハードウェア資源とソフトウェア資源の使用が共に不十分となる可能性がある。
【０００５】
したがって、メディアタイムラインを処理する改良型の技法を提供が引き続き求められている。
【課題を解決するための手段】
【０００６】
メディアタイムライン処理インフラストラクチャが説明される。一実施態様では、メディアタイムラインから複数のセグメントを導出するようにアプリケーションが実行される方法が説明される。メディアタイムラインは複数のメディアを参照し、各セグメントは、セグメントの持続時間中にレンダリングすべきメディアを参照する。アプリケーションは、インフラストラクチャでレンダリングするために複数のセグメントを待ち行列化（ｑｕｅｕｅ）するように実行される。
【０００７】
別の実施態様では、１つまたは複数のコンピュータ可読媒体が、そのコンピュータ実行可能命令が実行された場合に、順次レンダリングのためにアプリケーションから複数のセグメントを受諾するように構成されるアプリケーションプログラミングインターフェースを有するインフラストラクチャを提供するコンピュータ実行可能命令を含む。各セグメントは、インフラストラクチャによるレンダリングのために少なくとも１つのメディア項目を参照し、メディアタイムラインからアプリケーションによって取得されたセグメントである。
【０００８】
開示および図面全体を通して、同様の構成要素および機能を参照するのに同一の数字を使用する。
【発明を実施するための最良の形態】
【０００９】
メディアタイムライン処理インフラストラクチャが説明される。メディアタイムラインは、既存のメディア（例えば、ビデオ、歌、文書などの格納メディア）などのメディア、および／またはストリーミングオーディオおよび／またはビデオなどの、メディアソースから「リアルタイム」に出力されるメディアに基づいてユーザがプレゼンテーションを定義するための技法を提供する。メディアタイムラインを使用して、メディアのグループ化および／または組合せを表現することができ、最終的プレゼンテーションを提供するためにメディアタイムラインで参照されるメディアを実行、例えばレンダリングするメディアタイムライン処理インフラストラクチャで使用される構成メタデータを提供する。
【００１０】
異なるマルチメディアアプリケーションは、メディアの集まりを扱うための異なるメディアタイムラインオブジェクトモデルを有することがある。例えば、メディアプレーヤは、メディアを順に再生するためにプレイリストを使用することがある。一方、編集アプリケーションは、メディアのプレゼンテーションを編集するためのストーリーボードとして構成されたメディアタイムラインを使用することがある。さらに別のアプリケーションはイベントベースのタイムラインを使用することがあり、メディア再生は、一定のイベントに基づいて項目間をジャンプする。したがって、互いに異なる多種多様なメディアタイムラインオブジェクトモデルに直面する可能性があり、それによって各アプリケーションはそれ自体のカスタムメディアタイムライン解決策を有することがある。
【００１１】
一実施形態では、アプリケーションがアプリケーションに特有のメディアタイムラインをレンダリングすることができるように、アプリケーションに対する「ベースレベル」サポートを提供するメディアタイムライン処理インフラストラクチャが説明される。例えば、ある期間にわたって変化しないメディアセグメントをアプリケーションが待ち行列化することを可能にするが、インフラストラクチャ自体にセグメントをどのようにレンダリングするかを「解決」させることを可能にするようにメディアタイムライン処理インフラストラクチャを構成することができる。別の例では、メディアタイムライン処理インフラストラクチャが、アプリケーションがセグメントのレンダリング中に「オンザフライで」セグメントをキャンセルまたは更新することを可能にするように構成され、インフラストラクチャはセグメントのレンダリングの更新のすべてのニュアンスを必要に応じて処理する。したがって、メディアタイムライン処理インフラストラクチャと接触するアプリケーションが行う必要があるのは、メディアタイムラインをメディアタイムライン処理インフラストラクチャが理解するセグメントのシーケンスに変換することにより、そのアプリケーションに関する特定のメディアタイムラインオブジェクトモデルの詳細に集中することだけである。
【００１２】
以下の説明では、メディアタイムライン処理インフラストラクチャを使用するように動作可能である例示的環境がまず説明される。次いで、例示的環境ならびに他の環境で動作可能である例示的手続きが説明される。
【００１３】
例示的環境
図１は、コンピュータ１０２が複数のメディアへのアクセスを提供する例示的実施形態での環境１００の図である。図示されるコンピュータ１０２は、パーソナルコンピュータ（ＰＣ）として構成される。コンピュータ１０２はまた、移動局、エンターテイメント電子機器、ディスプレイ装置に通信可能に結合されたセットトップボックス、ワイヤレスフォン、ビデオゲームコンソール、携帯情報端末（ＰＤＡ）などの様々な他の構成を取ることができる。したがって、コンピュータ１０２は、かなりのメモリおよびプロセッサ資源を備えるフルリソース装置（ｆｕｌｌ  ｒｅｓｏｕｒｃｅ  ｄｅｖｉｃｅ）（例えば、ＰＣ、ハードディスクを備えるテレビジョンレコーダ）から、メモリおよび／または処理資源が制限される低リソース装置（ｌｏｗ−ｒｅｓｏｕｒｅ  ｄｅｖｉｃｅ）（例えば、従来型セットトップボックス）にまで及ぶことができる。コンピュータ１０２の追加の実施形態が図１２に関連して説明される。
【００１４】
コンピュータ１０２は、様々なメディアソースから様々なメディアを得ることができる。例えば、コンピュータ１０２は、複数のメディア１０４（１）、．．．、１０４（ｋ）、．．．、１０４（Ｋ）をローカルに格納する。複数のメディア１０４（１）〜１０４（Ｋ）は、ＷＭＶ、ＷＭＡ、ＭＰＥＧ１、ＭＰＥＧ２、ＭＰ３などの様々なフォーマットを有する様々なオーディオおよびビデオコンテンツを含む。さらに、入力装置、アプリケーションの実行などの様々なソースからメディア１０４（１）〜１０４（Ｋ）を得ることができる。
【００１５】
例えば、コンピュータ１０２は、複数のアプリケーション１０６（１）、．．．、１０６（ｎ）、．．．、１０６（Ｎ）を含む。複数のアプリケーション１０６（１）〜１０６（Ｎ）のうちの１つまたは複数を実行して、文書、スプレッドシート、ビデオ、オーディオなどのメディアを提供する。さらに、メディア１０４（１）〜１０４（Ｋ）の符号化、編集、および／または再生などのメディア対話を提供するように、複数のアプリケーション１０６（１）〜１０６（Ｎ）のうちの１つまたは複数を構成することができる。
【００１６】
コンピュータ１０２はまた、複数の入力装置１０８（１）、．．．、１０８（ｍ）、．．．、１０８（Ｍ）も含む。複数の入力装置１０８（１）〜１０８（Ｍ）のうちの１つまたは複数を、コンピュータ１０２に入力するためのメディアを提供するように構成する。例えば入力装置１０８（１）は、ユーザの音声、コンサートでの歌などのオーディオデータの入力を提供するように構成されたマイクロフォンとして示されている。複数の入力装置１０８（１）〜１０８（Ｍ）はまた、複数のアプリケーション１０６（１）〜１０６（Ｎ）の実行を制御する入力を提供するためのユーザによる対話のために構成することもできる。例えば、複数のアプリケーション１０６（１）〜１０６（Ｎ）のうちの特定の１つの実行を開始し、複数のアプリケーション１０６（１）〜１０６（Ｎ）の実行を制御するなどのユーザからの音声コマンドを入力するのに入力装置１０８（１）を使用する。別の例では、入力装置１０８（ｍ）は、コンピュータ１０２の設定を調節するなどのコンピュータ１０２を制御するための入力を提供するように構成されたキーボードとして示される。
【００１７】
さらに、コンピュータ１０２は、複数の出力装置１１０（１）、．．．、１１０（ｊ）、．．．、１１０（Ｊ）を含む。出力装置１１０（１）〜１１０（Ｊ）を、ユーザに出力するためにメディア１０４（１）〜１０４（Ｋ）をレンダリングするように構成する。例えば、出力装置１１０（１）は、オーディオデータをレンダリングするためのスピーカとして示される。出力装置１１０（ｊ）は、オーディオおよび／またはビデオデータをレンダリングするように構成された、テレビジョンなどのディスプレイ装置として示される。したがって、入力装置１０８（１）〜１０８（Ｍ）によって複数のメディア１０４（１）〜１０４（Ｋ）のうちの１つまたは複数を提供し、コンピュータ１０２によってローカルに格納する。複数の入力装置および出力装置１０８（１）〜１０８（Ｍ）、１１０（１）〜１１０（Ｊ）が別々に示されているが、入力装置および出力装置１０８（１）〜１０８（Ｍ）、１１０（１）〜１１０（Ｊ）のうちの１つまたは複数を、入力用のボタンを有するテレビジョン、ディスプレイ装置、スピーカなどの単一の装置として組み合わせることができる。
【００１８】
コンピュータ１０２はまた、ネットワーク１１２を介してリモートに入手可能なメディアを得るためにネットワーク１１２を介して通信するように構成することもできる。ネットワーク１１２は、インターネットとして示され、イントラネット、有線または無線電話網、放送網、他の広域ネットワークなどの様々な他のネットワークを含むことができる。リモートコンピュータ１１４は、コンピュータ１０２にメディアを提供することのできるリモートコンピュータ１１４などのネットワーク１１２に通信可能に結合される。例えば、リモートコンピュータ１１４は、１つまたは複数のアプリケーションと、ホームムービーなどのメディアを提供するビデオカメラ１１６とを含むことができる。リモートコンピュータ１１４はまた、図示されるディスプレイ装置１１８などの、メディアを出力するための出力装置も含むことができる。コンピュータ１０２によってリモートコンピュータ１１４からネットワーク１１２を介して得られたメディアを、メディア１０４（１）〜１０４（Ｋ）と共にローカルに格納することができる。言い換えれば、メディア１０４（１）〜１０４（Ｋ）は、ネットワーク１１２を介してリモートコンピュータ１１４から得られたメディアのローカルに格納されたコピーを含むことができる。
【００１９】
したがって、コンピュータ１０２は、ローカル（例えば、複数のアプリケーション１０６（１）〜１０６（Ｎ）の実行および／または複数の入力装置１０８（１）〜１０８（Ｍ）の使用を介して）に提供することができると共に、リモートコンピュータ１１４からリモート（例えば、アプリケーションの実行および／または入力装置の使用を介して）に提供することのできる複数のメディア１０４（１）〜１０４（Ｋ）を取得および格納することができる。複数のメディア１０４（１）〜１０４（Ｋ）がコンピュータ１０２上に格納されているものとして説明したが、メディア１０４（１）〜１０４（Ｋ）を「リアルタイム」に提供することもできる。例えば、オーディオデータを格納することなく、マイクロフォンとして示されている入力装置１０８（１）からオーディオデータをストリーミングすることができる。
【００２０】
コンピュータ１０２がメディアタイムライン１２０を含むものとして図示されている。前述のように、メディアタイムライン１２０は、複数のメディアソースからの格納メディアおよび／またはリアルタイムメディアのプレゼンテーションをユーザが定義する技法を提供する。例えば、メディアタイムライン１２０は、入力装置１０８（１）〜１０８（Ｍ）、アプリケーション１０６（１）〜１０６（Ｎ）、および／またはリモートコンピュータ１１４から得られたメディアの集まりを記述することができる。例えば、ユーザは、入力装置１０８（１）〜１０８（Ｍ）のうちの１つまたは複数を使用してアプリケーション１０６（ｎ）と対話し、メディア１０４（１）〜１０４（Ｋ）のグループ化および／または組合せを定義することができる。ユーザはまた、メディア１０４（１）〜１０４（Ｋ）のプレゼンテーションに関する順序および効果も定義することができる。次いで、コンピュータ１０２上でシーケンサソース１２２を実行してメディアタイムライン１２０をレンダリングすることができる。メディアタイムライン１２０がレンダリングされたとき、メディアタイムライン１２０は、複数の出力装置１１０（１）〜１１０（Ｊ）のうちの１つまたは複数により、レンダリングのためのメディア１０４（１）〜１０４（Ｋ）の表現されたグループ化および／または組合せを提供する。シーケンサソース１２２の実行のより詳しい説明を以下の図に関連して見出すことができる。
【００２１】
図２は、ソフトウェアとして実施されたシステム２００が、メディアファウンデーション２０４と対話して複数のメディア２０６（ｇ）のプレゼンテーションを制御するアプリケーション２０２を含む例示的実施形態でのシステム２００の高レベルブロック図である。ただし「ｇ］は１から「Ｇ」までの任意の数でよい。メディアがどのようにレンダリングされるかについての特定の詳細を「知る」ことなく、オペレーティングシステムと対話するアプリケーションがメディア２０６（ｇ）の再生を制御することができるように、メディア２０６（ｇ）の再生を実現するためにメディアファウンデーション２０４をオペレーティングシステムの一部として含めることができる。したがって、メディアファウンデーション２０４は、メディアタイムライン処理インフラストラクチャの一部を提供して、アプリケーション２０２のメディアタイムライン１２０を処理することができる。図１のメディア１０４（１）〜１０４（Ｋ）、アプリケーション１０６（１）〜１０６（Ｎ）の実行、入力装置１０８（１）〜１０８（Ｍ）の使用、出力装置１１０（１）〜１１０（Ｊ）などの様々なソースからメディア２０６（ｇ）を提供することができる。
【００２２】
アプリケーション２０２は図１のアプリケーション１０６（１）〜１０６（Ｎ）と同一でよく、またはそれとは異なる物でよく、メディアエンジン２０８と対話してメディア１０４（１）〜１０４（Ｋ）を制御する。少なくともいくつかの実施形態では、メディアエンジン２０８は、何らかの形でプレゼンテーションに関与することを望むアプリケーション２０２の中心フォーカルポイントとして働く。この文書では、プレゼンテーションとはメディアの処理を指し、またはそれを記述する。図示および説明される実施形態では、メディアエンジン２０８がそれに対してオペレーションを実施すべきであるデータのフォーマットを記述するのにプレゼンテーションが使用される。したがって、プレゼンテーションの結果として、デスクトップＰＣと関連付けることのできるディスプレイ装置として示される図１の出力装置１１０（ｊ）などのディスプレイ装置上でレンダリングされたウィンドウ内でオーディオと付随するビデオとが共にユーザに提示されるマルチメディアプレゼンテーションなどの視覚的および／または聴覚的提示メディアとなることができる。プレゼンテーションの結果として、ディスクファイルなどのコンピュータ可読媒体にメディアコンテンツを書き込むこともできる。したがって、プレゼンテーションはマルチメディアコンテンツがコンピュータ上にレンダリングされるというシナリオに限定されない。いくつかの実施形態では、復号化、符号化、様々な変換（遷移、効果など）などのオペレーションをプレゼンテーションの結果として行うことができる。
【００２３】
一実施形態では、メディアファウンデーション２０４は、メディア２０６（ｇ）をレンダリングするためにアプリケーション２０２によって呼び出すことのできる１つまたは複数のアプリケーションプログラムインターフェースを公開する。例えば、メディアファウンデーション２０４を、図１のコンピュータ１０２上で実行されるソフトウェアの「インフラストラクチャ」レベルで存在するものとして考えることができる。言い換えれば、メディアファウンデーション２０４は、メディア２０６（ｇ）を提示するためにアプリケーション２０２で使用されるソフトウェア層である。したがって、各アプリケーション２０２がシステム２００で使用することのできる各タイプのメディア２０６（ｇ）について別々のコードを実施する必要がないようにメディアファウンデーション２０４を使用する。このようにして、メディアファウンデーション２０４は、メディア特有の作業を行うために１組の再利用可能ソフトウェアコンポーネントを提供する。
【００２４】
メディアファウンデーション２０４はいくつかの構成要素を使用し、その中にはシーケンサソース１２２、メディアソース２１０、メディアプロセッサ２１２、メディアセッション２１４、メディアエンジン２０８、ソースリゾルバ２１６、１つまたは複数の変換２１８、１つまたは複数のメディアシンク２２０、２２２などが含まれる。図示および説明される様々な実施形態の一利点は、本明細書で説明するシステムと共に様々な異なる種類の構成要素を使用できるという意味でシステム２００がプラグ可能モデルであることである。システム２００の一部として、以下でより詳細に説明する宛先２２４も含まれる。しかし、少なくとも１つの実施形態では、宛先２２４は、プレゼンテーションをどこに提示すべきか（例えば、ウィンドウ、ディスクファイルなど）、プレゼンテーションに対して何が生じるかを定義するオブジェクトである。すなわち、宛先は、データがそこに流れるメディアシンク２２０、２２２のうちの１つまたは複数に対応する。
【００２５】
メディアタイムライン１２０がアプリケーション２０２の一部として示されている。複数のメディアをどのようにレンダリングすべきかを表現する様々な方法としてメディアタイムライン１２０を構成することができる。例えば、メディアタイムラインは、アプリケーション２０２のユーザがメディアファウンデーション２０４でレンダリングされるメディアに基づいてプレゼンテーションを定義する方法を提供するオブジェクトモデルを使用することができる。例えば、メディアタイムライン１２０は、メディアファイルの順次リストからより複雑な形態にまで及ぶことができる。例えば、メディアタイムライン１２０は、ＳＭＩＬやＡＡＦなどのファイル構造を使用して、メディア、効果などの間の遷移を含むメディア再生体験を表現することができる。例えば、一般にプレイリストと呼ばれる歌のリストを再生することのできるメディアプレーヤとしてアプリケーション２０２を構成することができる。別の例として、編集システムでは、ユーザは、あるビデオを別のビデオの上に重ね、メディアをクリップし、メディアに効果を追加することなどができる。そのようなメディアのグループ化または組合せを、メディアタイムライン１２０を使用して表現することができる。図４に関連して始まるメディアタイムライン１２０のさらに詳しい議論を見出すことができる。
【００２６】
メディアソース２１０が、メディアのプロバイダを抽象化するのに使用される。例えば、特定のソースから特定のタイプのメディアを読み取るようにメディアソース２１０を構成する。例えば、メディアソースの一タイプは、外部世界からビデオを取り込み（例えばカメラ）、別のタイプのメディアソースはオーディオを取り込む（例えばマイクロフォン）。別法として、またはさらに、メディアソース２１０は、ディスクから圧縮データストリームを読み取り、データストリームをその圧縮ビデオ成分と圧縮オーディオ成分とに分離する。さらに別のメディアソース２１０は、図１のネットワーク１１２からデータを得る。したがって、メディアソース２１０を使用して、メディアを取得するための一貫したインターフェースを提供することができる。
【００２７】
メディアソース２１０は、１つまたは複数のメディアプレゼンテーション２２６オブジェクトを提供する（メディアプレゼンテーション）。メディアプレゼンテーション２２６は、関連する１組のメディアストリームの記述を抽象化する。例えば、メディアプレゼンテーション２２６は、ムービーのための対のオーディオおよびビデオストリームを提供することができる。さらに、メディアプレゼンテーション２２６は、所与の時点のメディアソース２１０の構成を記述する。例えば、メディアプレゼンテーション２２６は、メディアソース２１０の利用可能なストリームとそのメディアタイプ、例えばオーディオ、ビデオ、ＭＰＥＧなどの記述を含むメディアソース２１０についての情報を含む。
【００２８】
メディアソース２１０はまた、アプリケーション２０２でアクセスし、すなわちアプリケーション２０２に対して公開するメディアソース２１０からの単一ストリームを表すメディアストリーム２２８オブジェクト（メディアストリーム）も提供する。したがって、メディアストリーム２２８は、アプリケーション２０２がメディア２０６（ｇ）のサンプルを取り出すことを可能にする。一実施形態では、メディアストリーム２２８が単一メディアタイプを提供するように構成されると共に、複数のメディアタイプを提供するようにシーケンサソース１２２を構成し、それについてのより詳しい説明については図３に関連して見出すことができる。メディアソースは、複数のメディアストリームを提供する。例えば、ｗｍｖファイルは、同一ファイル内にオーディオとビデオを共に有する。したがって、このファイルについてのメディアソースは、一方はオーディオ、他方はビデオについての２つのストリームを提供する。したがって、メディアファウンデーション２０４では、メディアソース２１０は、プレゼンテーションのためのサンプルを出力するソフトウェアコンポーネントを表す。
【００２９】
シーケンサソース１２２は、アプリケーション２０２からセグメントを受け取るように構成され、次いでシーケンサソース１２２は、メディアセッション２１４に関するセグメントを待ち行列化し、セグメントをレンダリングさせる。したがって、シーケンサソース１２２を使用して、メディアタイムライン１２０のレンダリングの複雑さを隠し、メディアファウンデーション２０４の他の構成要素からのメディアタイムライン１２０によって記述されるメディアを提供する。
【００３０】
例えば、シーケンサソース１２２で受信されるセグメントを使用して、アプリケーション２０２で受信されるセグメントからトポロジ２３０を作成する。トポロジ２３０は、所与のプレゼンテーションについてどのようにデータが様々な構成要素を流れるかを定義する。「フル」」トポロジは、異なる構成要素間の正しいフォーマット変換でデータが流れるようにデータを操作するのに使用される各構成要素、例えばソフトウェアモジュールを含む。シーケンサソース１２２はメディアセッション２１４と対話し、メディアセッション２１４は、メディアプロセッサ２１２によるレンダリングのために、連続するトポロジ間の「切換え」を処理する。例えば、シーケンサソース１２２は、レンダリングのためにメディアセッション２１４に関するトポロジ２３０を「待ち行列化」すること。シーケンサソース１２２、アプリケーション２０２、およびメディアセッション２１４の対話のより詳しい説明については図３に関連して見出すことができる。
【００３１】
トポロジが作成されたとき、ユーザは、それを部分的に作成することを選ぶ。しかし、この部分的トポロジは、それ自体では最終的プレゼンテーションを提供するのに十分ではない。したがって、トポロジローダ２３２と呼ばれる構成要素が部分的トポロジを取り、それを、部分的トポロジ内の構成要素間の適切なデータ変換を追加することによってフルトポロジに変換する。
【００３２】
トポロジ２３０では、例えば、データは一般にメディアソース２１０で生じ、１つまたは複数の変換２１８を流れ、１つまたは複数のメディアシンク２２０、２２２に進む。変換２１８は、プレゼンテーションで一般に使用される任意の適切なデータ処理構成要素を含む。そのような構成要素は、圧縮データを伸張し、および／または当業者は理解するであろうがデータに効果を付与するなどによって何らかの方法でデータに作用する物を含む。例えば、ビデオデータでは、変換は、輝度、色変換、サイズ変更に影響を及ぼす物を含むことができる。オーディオデータでは、変換は、残響および再サンプリングに影響を及ぼす物を含む。さらに、変換によって復号化および符号化を行うことが可能である。
【００３３】
メディアシンク２２０、２２２は通常、特定のタイプのメディアコンテンツと関連する。したがって、オーディオコンテンツは、オーディオレンダラなどの関連するオーディオシンクを有する。同様に、ビデオコンテンツは、ビデオレンダラなどの関連するビデオシンクを有する。追加のメディアシンクは、コンピュータ可読媒体のような物、例えばディスクファイルなどにデータを送り、ラジオ番組の放送など、ネットワークを介してデータをストリーミングすることなど処理を行うことができる。
【００３４】
メディアセッション２１４は、複数のプレゼンテーションをスケジューリングする構成要素である。したがって、メディアプロセッサ２１２を使用して所与のプレゼンテーションを駆動することができ、メディアセッション２１４を使用して複数のプレゼンテーションをスケジューリングする。例えば、メディアセッション２１４は、前述のメディアプロセッサ２１２でレンダリングされるトポロジを変更する。例えばメディアセッション２１４は、それぞれのトポロジで記述される連続するプレゼンテーションからのサンプルのレンダリング間にギャップが存在しないように、メディアプロセッサ２１２上でレンダリングされる第１トポロジから第２トポロジに変更する。したがって、メディアセッション２１４は、メディアの再生があるプレゼンテーションから別のプレゼンテーションに移動するときにシームレスなユーザ体験を提供する。
【００３５】
ソースリゾルバ２１６構成要素を使用して、ＵＲＬおよび／またはバイトストリームオブジェクトからメディアソース２１０を作成する。ソースリゾルバ２１６は、指定の資源によって生成されるデータの形態についての事前の知識を必要とすることなく、メディアソース２１０を作成する同期式の方法と非同期式の方法をどちらも提供する。
【００３６】
少なくとも１つの実施形態では、メディアファウンデーション２０４が、メディアファウンデーション２０４の様々な構成要素間の存在およびそれらの間の対話の特定の詳細を抽象化するのに使用される。すなわち、いくつかの実施形態では、メディアファウンデーション２０４内部に存在するように見える構成要素は、アプリケーション２０２にとってプログラム的な意味で不可視である。これにより、メディアファウンデーション２０４がいわゆる「ブラックボックス」セッションを実行することが可能となる。例えば、メディアエンジン２０８は、メディアセッションにメディア（例えばＵＲＬ）および宛先２２４に関連する情報などの一定のデータを提供することによってメディアセッション２１４と対話することができ、アプリケーション２０２のコマンド（例えば、ｏｐｅｎ、ｓｔａｒｔ、ｓｔｏｐなど）をメディアセッション２１４に転送する。次いで、メディアセッション２１４は提供された情報を取り、適切な宛先を使用して適切なプレゼンテーションを作成する。したがって、メディアファウンデーション２０４は、アプリケーション２０２で使用されるアプリケーションプログラミングインターフェースを介してメディア機能を提供する複数のソフトウェアコンポーネントを公開する。
【００３７】
シーケンサソース１２２を使用して、特定のタイムラインオブジェクトモデルに関するメディアソースを書き込むこともできる。例えば、ムービープレーヤがそのタイムラインを表すのに使用されるメーカ独自のファイルフォーマットを有する場合、ムービープレーヤは、シーケンサソース１２２を使用して「スタンドアロン」メディアソースを作成し、「スタンドアロン」メディアソースは、メディアファウンデーション２０４に対してそのプレゼンテーションをレンダリングする。したがって、次いで、メディアファウンデーション２０４を使用するアプリケーションは、任意の他のメディアファイルを再生するように、ムービープレーヤのファイルを直接再生する。
【００３８】
さらに、メディアファウンデーション２０４は、サードパーティがその拡張、スキーム、ヘッダなどに基づいて特定のファイルタイプを登録することを可能にする。例えば、サードパーティは、ファイルフォーマットを理解する「バイトストリームプラグイン」と呼ばれるオブジェクトを登録する。したがって、この特定のフォーマットのファイルが見つかった場合、登録されたバイトストリームプラグインを作成し、それに、ファイルからメディアサンプルを供給することのできるメディアを作成するように依頼する。先の例を続けると、ムービープレーヤは、その特定のファイルタイプに関するバイトストリームプラグインを登録することができる。このバイトストリームプラグインが起動された場合、メディアタイムラインを解析し、プレゼンテーションを形成するトポロジを解決する。次いで、プラグインは、シーケンサソースに関するトポロジを待ち行列化し、シーケンサソースを利用してトポロジをバックツーバックで再生する。アプリケーション２０２にとって、任意の他のメディアソースのように見える。ファイルがメディアファウンデーション２０４に与えられており、通常オーディオまたはビデオファイルと同様に再生されるからである。
【００３９】
図３は、図２のアプリケーション２０２、シーケンサソース１２２、およびメディアセッション２１４間の対話を示すシステム３００の例示的実施形態の図である。図３に示すように、アプリケーション２０２は、シーケンサソース１２２とメディアセッション２１４のどちらとも接触して、メディアタイムライン１２０をレンダリングさせる。
【００４０】
システムの矢印は、データ、制御、およびステータスがシステム３００の構成要素間でどのように流れるかを示す。例えば、アプリケーション２０２がメディアセッション２１４と接触しているように示されている。矢印３０２は、アプリケーションプログラミングインターフェースを介するアプリケーション２０２からメディアセッション２１４への制御情報の通信を表す。アプリケーション２０２によって様々な制御情報をメディアセッション２１４に通信して、メディアセッション２１４に関するトポロジを「ｓｅｔ」し、「ｓｔａｒｔ」を呼び出してセットトポロジのレンダリングを開始し、「ｓｔｏｐ」を呼び出してセットトポロジのレンダリングを終了することなどができる。矢印３０４は、トポロジが設定されたこと、「ｓｔａｒｔ」または「ｓｔｏｐ」呼出しが実施されたこと、メディアセッション２１４のトポロジのレンダリングの現況などを確認することなど、メディアセッション２１４からアプリケーション２０２への状況情報の流れを表す。
【００４１】
アプリケーション２０２はまた、シーケンサソース１２２とも接触するように示されている。矢印３０６は、アプリケーション２０２からシーケンサソース１２２への部分的トポロジの通信を表し、矢印３０８は、シーケンサソース１２２からアプリケーション２０２への状況情報の通信を表す。前述のように、例えば、アプリケーション２０２は、メディアタイムライン１２０をセグメント化し、レンダリングのためにセグメントをシーケンサソース１２２に待ち行列化する。次いで、シーケンサソース１２２は、イベントをファイアアウトし、新しいプレゼンテーションがレンダリングのために利用可能であることをメディアプロセッサおよびメディアセッションに通知する。次いで、現プレゼンテーションのレンダリングが完了すると、こうしたプレゼンテーションがセッションによってピックアップされ、分解され、待ち行列化され、プロセッサに与えられる。これについてのより詳しい議論を図４に関連して見出すことができる。
【００４２】
シーケンサソース１２２は、メディアセッション２１４によるメディアソースと見ることもできる。例えば、シーケンサソース１２２は、メディアのソースがシーケンサソース１２２であることを指定する、メディアセッション２１４に関するトポロジを設定することができる。次いで、シーケンサソース１２２は、複数のメディアソース（例えば、メディアソース２１０（１）、２１０（２））からメディアを集め、メディアソースからメディアプロセッサ２１２にメディアを提供する。一実施形態では、シーケンサソース１２２は、様々なタイプのメディアを集め、メディアが単一メディアソースに見えるようにさせることができる。例えば、サンプルは、メディアソース２１０（１）、２１０（２）からメディアプロセッサに直接流れ、メディアプロセスからメディアセッションに流れ、ビットポンプに与えられる。このことを矢印３１０〜３１４で示す。シーケンサソース１２２は、メディアソース２１０（１）、２１０（２）で受信されたサンプルをタイムスタンプし、こうしたサンプルを同時レンダリングのためにメディアプロセッサ２１２に提供する。シーケンサソース１２２は、メディアソース２１０（１）、２１０（２）のオペレーションを制御することもできる。図３では、このことをそれぞれ矢印３１６、３１８で示す。様々な他の例も企図される。
【００４３】
シーケンサソース１２２のオペレーションを制御するようにメディアセッション２１４を実行する。このことを、メディアセッション２１４からシーケンサソース１２２への制御情報の流れとして矢印３２０で示す。例えば、メディアセッション２１４は、「ｓｔａｒｔ」呼出しを受信してトポロジのレンダリングを開始することができる。トポロジは、シーケンサソース１２２をトポロジ内のメディアソースとして指定する。したがって、メディアプロセッサ２１２がトポロジをレンダリングする場合、メディアプロセッサ２１２は、シーケンサソース１２２に対する「ｓｔａｒｔ」を呼び出して、トポロジ内に表されるサンプルを提供する。この場合、シーケンサソース１２２は、メディアソース２１０（１）、２１０（２）に対する「ｓｔａｒｔ」も呼び出し、その後、集約しタイムスタンプされたサンプルをメディアセッション２１４に戻す。したがって、この場合、メディアセッション２１４は、シーケンサソース１２２が複数の他のメディアソースからのサンプルを提供していることを「認識」していない。インフラストラクチャを使用して処理することのできる様々な例示的メディアタイムラインの説明の後に、メディアタイムライン１２０レンダリングのさらに詳しい説明を図７に関連して見出すことができる。
【００４４】
メディアメディアタイムライン
図４は、メディアタイムライン４００がプレゼンテーションのためのメディアの出力を記述する複数のノードを含むツリーとして示される例示的実施形態の図である。メディアタイムライン４００は、図１および２のメディアタイムライン１２０に対応することがあり、または対応しないことがあるが、複数のノード４０２〜４１２を含むツリーとして構築される。複数のノード４０２〜４１２のそれぞれは、その特定のノードのノードおよび／または「子」に関する様々な属性および挙動を記述するそれぞれのメタデータ４１４〜４２２を含む。例えば、ノード４０４およびノード４０６は、それぞれ「親」および「子」として構成される。ノード４０４は、ノード４０４の挙動および属性を記述するメタデータ４１６を含む。メタデータ４１６はまた、ノード４０６、４０８のレンダリング順など、「子」ノード４０６、４０８のそれぞれを記述することもできる。
【００４５】
一実施形態では、メディアタイムライン４００は、それ自体ではユーザインターフェース（ＵＩ）、再生、または編集についての決定を行うように実行可能ではない。その代わりに、メディアタイムライン４００上のメタデータ４１４〜４２４がアプリケーション２０２によって解釈される。例えば、メディアタイムライン４００は、タイムラインで参照されるメディアのプレゼンテーションを定義するための１つまたは複数のメーカ独自の技法を含む。こうしたメーカ独自の技法を使用してメディアの「再生順」を決定するようにアプリケーション２０２を構成することができる。それについてのより詳しい説明を図７〜１１に関連して見出すことができる。
【００４６】
ノード４０２〜４１２は、メディアタイムライン４００上に配置されたとき、メディアタイムライン４００の基本レイアウトを記述する。このレイアウトを、タイムライン構造を表示するのに使用する。例えば、所望のレイアウトが達成されるように、様々なタイプのノード４０２〜４１２を提供する。ノードタイプは、ルートノード４０２やリーフノード４０８〜４１２など、そのノードの子がどのように解釈されるかを示す。この場合のルートノード４０２は、メタデータタイムライン４００をレンダリングする開始点を指定し、レンダリングをどのように開始すべきかを記述するメタデータ４１４を含む。
【００４７】
図４の図示される実施形態では、メディアタイムライン１２０のリーフノード４０８、４１０、４１２がメディアに直接マッピングされる。例えば、リーフノード４０８、４１０、４１２は、リーフノード４０８〜４１２のそれぞれが表すメディアをどのように取り出すかを記述するそれぞれのメタデータ４２０、４２２、４２４を有する。リーフノードは、オーディオおよび／またはビデオファイルに関する経路を指定し、メディアタイムライン４００のレンダリング中にプログラム的にビデオフレームを生成する構成要素を指すことなどができる。例えば、リーフノード４０８は、マイクロフォンとして構成される入力装置１０８（１）にマッピングされるポインタ４２６を有するメタデータ４２０を含む。リーフノード４１０は、図１のコンピュータ１０２上にローカルに格納される記憶装置４３２内のメディア４３０のアドレスにマッピングされるポインタ４２８を有するメタデータ４２２を含む。リーフノード４１２は、ネットワーク１１２上のリモートコンピュータ１１４のネットワークアドレスにマッピングされるポインタ４３４を有するメタデータ４２４を含む。リモートコンピュータ１１４は、ネットワーク１１２を介して図１のコンピュータ１０２にメディアを提供するビデオカメラ１１６を含む。したがって、この実施形態では、タイムライン４００は実際のメディアを含まないが、むしろ、参照されるメディアをどこに、および／またはどのように配置するかを記述するポインタ４２６、４２８、４３４を使用することによってメディアを参照する。
【００４８】
ノード４０４、４０６は、メディアタイムライン４００の追加のノードも記述することができる。例えば、ノード４０４を使用して、ノード４０６、４０８に関する実行順序を記述する。言い換えれば、ノード４０４は、その「子」の順序付けおよびより詳しい説明を提供するための「接合型」ノードとして振る舞う。シーケンスノードや平行ノードなど、メディアタイムライン４００で使用することのできる様々な接合型ノードが存在する。図５〜６は、シーケンスノードおよび平行ノードの背後の例示的セマンティクスを説明する。
【００４９】
図５は、シーケンスノード５０２と、シーケンスノード５０２の子である複数のリーフノード５０４、５０６、５０８とが示される例示的実施形態５００の図である。シーケンスノード５０２の子は次々にレンダリングされる。さらに、シーケンスノード５０２は、複数のリーフノード５０４〜５０８のレンダリング順序を記述するメタデータ５１０を含む。図示するように、リーフノード５０４がまずレンダリングされ、その後にリーフノード５０６が続き、その後にリーフノード５０８が続く。各リーフノード５０４〜５０８は、それぞれのメディア５２４、５２６、５２８に対するそれぞれのポインタ５１８、５２０、５２２を有するそれぞれのメタデータ５１２、５１４、５１６を含む。したがって、シーケンスノード５０２は、ファイルの線形プレイリストの機能を表す。
【００５０】
この実施形態ではシーケンスノード５０２の子ノードがリーフノードとして構成されるが、シーケンスノード５０２の子ノードは任意のその他のタイプのノードを表す。例えば、子ノードを使用して、図４に示される複合ツリー構造を提供する。例えば図４のノード４０６は、別の接合型ノード、すなわちノード４０４の子である。
【００５１】
図６は、平行ノード６０２が平行ノード６０２の子である複数のリーフノード６０６、６０８を指定するメタデータ６０４を含む例示的実施形態６００の図である。図５に関連して説明した前の実施形態では、シーケンスノードの子であるノードが次々にレンダリングされシーケンスノードを説明した。ノードのレンダリングを同時に実現するために、平行ノード６０２を使用する。
【００５２】
平行ノード６０２の子を同時にレンダリングする。例えば、リーフノード６０６およびリーフノード６０８は平行ノード６０２の子である。リーフノード６０６、６０８のそれぞれは、それぞれのメディア６１８、６２０へのそれぞれのポインタ６１４、６１６を有するそれぞれのメタデータ６１０、６１２を含む。リーフノード６０６、６０８のそれぞれは、それぞれのリーフノード６０６、６０８をいつレンダリングすべきかを指定するそれぞれのメタデータ６１０、６１２に含まれるそれぞれの時間６２２、６２４を含む。リーフノード６０６、６０８上の時間６２２、６２４は、平行ノード６０２、すなわち親ノードに対するものである。子ノードのそれぞれは、任意のその他のタイプのノードおよびノードの組合せを表すことができ、組み合わせられた機能を有する複合ツリー構造が提供される。例えば、「接合」型ノードもメディアを参照することができ、以下同様である。時間データを含むメタデータを説明したが、様々なメタデータをメディアタイムラインのノード上に含めることができ、その一例を以下の実施形態で説明する。
【００５３】
メディアタイムラインのいくつかの例を図４〜６に関連して説明したが、説明したインフラストラクチャを使用して、その精神および範囲から逸脱することなく、他の様々なメディアタイムラインを処理することができる。
【００５４】
例示的手続き
以下の議論は、前述のシステムおよび装置を使用して実施することのできる処理技法を説明する。各手続きの態様を、ハードウェア、ファームウェア、またはソフトウェア、あるいはそれらの組合せとして実施することができる。１つまたは複数の装置で実施されるオペレーションを指定する１組のブロックとして手続きを示すが、手続きは、それぞれのブロックによるオペレーションを実施するために図示される順序に必ずしも限定されない。以下の議論の各部分では、図１〜６の環境、システム、およびタイムラインに対して参照を行う。
【００５５】
図７は、アプリケーションがメディアセッションおよびシーケンサソースと対話して、プレイリストとして構成されたメディアタイムラインをレンダリングさせる例示的実施形態での手続き７００を示す流れ図である。アプリケーションは、シーケンサソース（ブロック７０２）およびメディアセッション（ブロック７０４）を作成する。例えば、アプリケーションは、メディアファウンデーション２０４のＡＰＩに対する「ｃｒｅａｔｅ」呼出しを作成する。
【００５６】
アプリケーションは、メディアタイムラインの各セグメントについて部分的トポロジを作成する（ブロック７０６）。例えば、この実施形態では、メディアタイムラインがプレイリストとして構成され、これを、シーケンスノード５０２および複数のリーフノード５０４〜５０８を含む図５のメディアタイムライン５００によって表す。前述のように、リーフノード５０４、５０６、５０８のそれぞれは、それぞれのメディア項目５２４、５２６、５２８を参照するそれぞれのポインタ５１８、５２０、５２２を含む。
【００５７】
次いで、アプリケーションは、メディアタイムラインのシーケンスノードの１つまたは複数のリーフノードに関する部分的トポロジを作成する（ブロック７０６）。この実施形態では、例えば、メディアタイムライン１２０は、順に再生すべきメディアを次々に参照するプレイリストである。したがって、各リーフノードは、メディアタイムラインの再生のための部分的トポロジを表すメディアタイムライン１２０である。別の例では、タイムラインが２つの残ったノード間のクロスフェードを指定する場合、両方のリーフノードがクロスフェード中に使用されるトポロジが存在することになる。第１の例では、リーフノードの短い持続時間についての効果を指定する。例えば、リーフノードが１０秒の長さであるメディアを表し、タイムラインがリーフノードの最後の５秒に関するフェードアウト効果を指定する場合、この結果、第１のトポロジは効果を含まず、第２のトポロジは効果を含む２つのトポロジが得られることになる。
【００５８】
アプリケーションは、シーケンサソースに関するトポロジを待ち行列化し（ブロック７０８）、最後のトポロジが「ｅｎｄ」とマークされる（ブロック７１０）。例えば、最後のトポロジに関してフラグをセットし、それによって、その「フラグ付きの」トポロジがレンダリングされた後にシーケンサソースが再生を終了する。
【００５９】
次いで、シーケンサソースからプレゼンテーション記述子が作成される（ブロック７１２）。プレゼンテーション記述子は、レンダリングすべきメディアストリームオブジェクトを記述する（以後「メディアストリーム」と呼ぶ）。前述のように、メディアストリームは、メディアサンプルを生成／受信するオブジェクトである。メディアソースオブジェクトは、１つまたは複数のメディアストリームを生成する。したがって、プレゼンテーション記述子は、ストリームの位置、フォーマットなどのこうしたストリームの性質を記述する。
【００６０】
次いで、アプリケーションは、プレゼンテーション記述子に対応するシーケンサソースからトポロジを得る（ブロック７１４）。例えば、アプリケーションは、プレゼンテーション記述子をシーケンサソースに通信し、プレゼンテーション記述子に対応するトポロジを受信する。別の例では、シーケンサソースは、メディアセッションに関するトポロジを「ｓｅｔ」する。さらに、得られるトポロジを様々方法で構成することができる。例えば、得られるトポロジは、図２のトポロジローダ２３２によってフルトポロジに分解される部分的トポロジでよい。別の例では、シーケンサソース１２２は、トポロジローダの機能を組み込み、部分的トポロジをフルトポロジに分解し、次いでフルトポロジがメディアセッション２１４によって得られる。その他の様々な例も企図される。
【００６１】
次いで、トポロジがメディアセッションに関してセットされる（ブロック７１６）。例えば、メディアセッション２１４は、トポロジのレンダリング間の「ギャップ」に遭遇することなく、トポロジを順に次々にレンダリングすることができるように、トポロジのためのキューを含む。したがって、アプリケーションは、セッションを呼び出して、レンダリングすべき待ち行列化トポロジの最初の物を「ｓｅｔ」し、メディアセッションに関する「ｓｔａｒｔ」を呼び出してレンダリングを開始する（ブロック７１８）。
【００６２】
レンダリング中、アプリケーションは、メディアセッションイベントを「ｌｉｓｔｅｎ」し（ブロック７２０）。例えば、アプリケーション２０２は、図３の矢印３０４で示されるように、メディアセッション２１４からステータスイベントを受信する。次いで、アプリケーションは、「ｎｅｗ  ｔｏｐｏｌｏｇｙ」イベントが受信されたかどうかを判定する（判定ブロック７２２）。そうでない場合（判定ブロック７２２の「ｎｏ」）、アプリケーションは引き続きイベントを「ｌｉｓｔｅｎ」する。
【００６３】
「ｎｅｗ  ｔｏｐｏｌｏｇｙ」イベントが受信された場合（判定ブロック７２２の「ｙｅｓ」）、プレゼンテーション記述子が新しいトポロジについて得られる（ブロック７２４）。プレゼンテーション記述子（ブロック７１４）に対応するシーケンサソースからのトポロジが得られ、手続き７００の部分（ブロック７１４、７１６、７２０〜７２４）が新しいトポロジについて反復される。このようにして、アプリケーション２０２、シーケンサソース１２２、およびメディアセッション２１４は、プレイリストの順次再生を実現することができる。しかし、ある場合には、複数のメディアソースおよび複合トポロジを含む平行レンダリングが記述される。そのような場合に同様の機能を使用することができ、それについてのより詳しい説明を以下の図に関連して見出すことができる。
【００６４】
図８は、第１メディアと第２メディアの間で遷移する効果を使用する、指定の時間枠にわたる第１および第２メディアの出力８００を示す例示的実施形態の図である。図示する例では、Ａ１．ａｓｆ８０２およびＡ２．ａｓｆ８０４は、２つの異なるオーディオファイルである。Ａ１．ａｓｆ８０２は出力長２０秒を有し、Ａ２．ａｓｆ８０４も出力長２０秒を有する。Ａ１．ａｓｆ８０２とＡ２．ａｓｆ８０４の出力間でクロスフェード８０６効果が定義される。言い換えれば、Ａ１．ａｓｆ８０２の出力からＡ２．ａｓｆ８０４の出力に遷移するようにクロスフェード８０６が定義される。クロスフェード８０６効果がＡ１．ａｓｆ８０２の出力に１０秒で開始され、Ａ１．ａｓｆ８０２の出力の終りで終了する。したがって、Ａ２．ａｓｆ８０４の出力も１０秒で開始される。２つの異なるメディア、すなわちＡ１．ａｓｆ８０２およびＡ２．ａｓｆ８０４を入力し、所望の効果を有する単一出力を提供するものとしてクロスフェード８０６が示されている。
【００６５】
図９は、図８のクロスフェード８０６効果を実施するのに適した例示的実施形態でのメディアタイムライン９００の図である。メディアタイムライン９００は、２つの子、すなわちリーフノード９０４、９０６を有する平行ノード９０２を含む。平行ノード９０２は、０秒の開始時間９０８と２０秒の停止時間９１０とを指定するメタデータを含む。平行ノード９０２はまた、クロスフェードを記述する複合効果９１２も含む。リーフノード９０４は、０秒の開始時間９１４と２０秒の停止時間９１６とを示すメタデータを含む。リーフノード９０６は、１０秒の開始時間９１８と３０秒の停止時間９２０とを有するメタデータを含む。
【００６６】
リーフノード９０４はまた、図８に関連して説明したＡ１．ａｓｆ８０２ファイルを参照するポインタ９２２も含む。同様に、リーフノード９０６は、図８に関連して説明したＡ２．ａｓｆファイル８０４を参照するポインタ９２４を含む。したがって、メディアタイムライン９００が実行される場合、Ａ１．ａｓｆ８０２ファイルおよびＡ２．ａｓｆファイル８０４が、図８に示される効果９１２を利用する形で出力される。
【００６７】
図９のメディアタイムライン９００を再生（すなわちレンダリング）するために、アプリケーション２０２は複数のセグメントを導出し、その複数のセグメント中は、セグメント中にレンダリングされる構成要素が変化せず、すなわち各構成要素がセグメントの持続時間中にレンダリングされ、構成要素がセグメント中に追加または削除されない。図９のメディアタイムライン９００のセグメントの一例を以下の図に示す。
【００６８】
図１０は、メディアタイムライン処理インフラストラクチャによるレンダリングのためにアプリケーションによって図９のメディアタイムライン９００から導出された複数のセグメントを示す例示的実施形態１０００の図である。前述のように、アプリケーションは、メディアタイムライン処理インフラストラクチャによるレンダリングのために、メディアタイムライン９００を複数のトポロジにセグメント化する。一実施形態では、各セグメントは構成要素を有するトポロジを記述し、そのレンダリングはセグメントの持続時間中に変化しない。
【００６９】
例えば、図９のメディアタイムライン９００を複数のセグメント１００２、１００４、１００６に分割する。セグメント１００２は、オーディオファイルＡ１．ａｓｆ８０２が「０」から「１０」の時間枠の間にメディアシンク１００８にレンダリングされることを指定し、セグメント１００４は、「１０」から「２０」の時間枠の間に生じるオーディオファイルＡ１．ａｓｆ８０２とオーディオファイルＡ２．ａｓｆ８０４の出力の間で遷移するクロスフェード８０６効果のアプリケーションを記述する。したがって、セグメント１００４に示されるトポロジは、オーディオファイルＡ１．ａｓｆ８０２からの出力とオーディオファイルＡ２．ａｓｆ８０４からの出力がクロスフェード８０６効果に提供されるものとして示し、次いでクロスフェード８０６効果の出力がメディアシンク１００８に提供されることを示す。セグメント１００６は、「２０」と「３０」の間の時間枠の間のオーディオファイルＡ２．ａｓｆ８０４のレンダリング（すなわち「再生」）を記述する。図９のメディアタイムライン９００を再生するために、アプリケーション２０２は、メディアセッション２１４でレンダリングすべきセグメント１００２〜１００６に示されるトポロジを待ち行列化し、それについてのより詳しい説明を以下の例示的手続きに関連して見出すことができる。
【００７０】
図１１は、アプリケーションがメディアタイムラインをメディアタイムライン処理インフラストラクチャによるレンダリングのために複数のトポロジにセグメント化する例示的実施形態での手続き１１００を示す流れ図である。アプリケーションは、メディアタイムラインをレンダリングする要求を受信する（ブロック１１０２）。例えば、アプリケーションをメディアプレーヤとして構成する。メディアプレーヤは、ユーザ選択のための複数のプレイリストを有するユーザインターフェース（例えば、グラフィカルユーザインターフェース）を出力する。したがって、ユーザは、ユーザインターフェースと対話して、アプリケーションで出力すべき複数のプレイリストのうちの１つを選択する。
【００７１】
次いで、アプリケーションは、メディアタイムラインから複数のセグメントを導出する（ブロック１１０４）。例えば、アプリケーションは、特定の持続時間にメディアタイムラインのレンダリング中にどの構成要素が使用されるかを判定する。次いで、アプリケーションは、セグメントの持続時間中に変化しないメディア項目（すなわちメディア項目はセグメント中に追加または削除されない）を参照する持続時間のセグメントを求める。
【００７２】
メディアタイムラインがセグメント化されると、アプリケーションは、複数のセグメントを記述するデータ構造を構築する（ブロック１１０６）。例えば、アプリケーションは、図９のメディアタイムライン９００を図１０の複数のセグメント１００２〜１００６にセグメント化し、複数のセグメントのそれぞれは、そのセグメントについての参照されるメディアをレンダリングするのに使用される構成要素のトポロジを含む。したがって、こうしたトポロジのそれぞれを、メディアをレンダリングするのに必要な構成要素を参照し、構成要素間の対話も記述するデータ構造（例えばアレイ）に入力する。例えば、セグメント１００４は、クロスフェード８０６効果に提供されるオーディオファイルＡ１．ａｓｆ８０２からの出力と、オーディオファイルＡ２．ａｓｆ８０４からの出力とを定義するトポロジを記述し、次いで、クロスフェード８０６効果の出力がメディアシンク１００８に提供される。様々な他の例も企図される。
【００７３】
次いで、アプリケーションは、アプリケーションプログラミングインターフェース（ＡＰＩ）を介してデータ構造をシーケンサソースに渡す（ブロック１１０８）。図７に関連して先に説明したように、次いでアプリケーションは、プレゼンテーション記述子に対応するシーケンサソースからトポロジを得る（ブロック１１１０）。例えば、アプリケーションは、プレゼンテーション記述子をシーケンサソースに通信し、プレゼンテーション記述子に対応するトポロジを受信する。別の例では、シーケンサソースは、メディアセッションに関するトポロジを「ｓｅｔ」する。さらに、得られたトポロジを様々な形で構成することができる。例えば、得られたトポロジは、図２のトポロジローダ２３２によってフルトポロジに分解される部分的トポロジでよい。別の例では、シーケンサソース１２２は、部分的トポロジをフルトポロジに分解するトポロジローダの機能を組み込む、次いでフルトポロジがメディアセッション２１４によって得られる。様々な他の例も企図される。
【００７４】
次いで、トポロジがメディアセッションに関してセットされる（ブロック１１１２）。例えば、メディアセッション２１４は、トポロジのレンダリング間の「ギャップ」に遭遇することなくトポロジを順に次々にレンダリングすることができるように、トポロジのためのキューを含む。したがって、アプリケーションは、メディアセッションを呼び出して、レンダリングすべき待ち行列化されたトポロジの最初の物を「ｓｅｔ」し、メディアセッションに対する「ｓｔａｒｔ」を呼び出してレンダリングを開始する（ブロック１１１４）。
【００７５】
レンダリング中に、アプリケーションは、メディアセッションイベントを「ｌｉｓｔｅｎ」する（ブロック１１１６）。例えば、アプリケーション２０２は、図３の矢印３０４で示すように、メディアセッション２１４からステータスイベントを受信する。次いで、アプリケーションは、「ｎｅｗ  ｔｏｐｏｌｏｇｙ」イベントが受信されたかどうかを判定する（判定ブロック１１１８）。そうでない場合（判定ブロック１１１８の「ｎｏ」）、アプリケーションは引き続きイベントを「ｌｉｓｔｅｎ」する。「ｎｅｗ  ｔｏｐｏｌｏｇｙ」イベントが受信された場合（判定ブロック１１１８の「ｙｅｓ」）、新しいトポロジに関するプレゼンテーション記述子が得られ（ブロック１１２０）、手続き１１００の一部が反復される。
【００７６】
メディアタイムライン処理インフラストラクチャによって様々なメディアタイムラインをレンダリングすることができる。例えば、メディアタイムラインは、作者がイベントに基づいてメディアの開始を指定することができるように「イベントベース」でよい。例えば、時刻「午前１２時」にオーディオファイルＡ１．ａｓｆの再生を開始する。こうしたオブジェクトモードは、再生中にシーケンサソースに関するメディアを待ち行列化し、前述のように既に待ち行列化されたトポロジをキャンセルまたは更新する。
【００７７】
例示的動作環境
本明細書で説明した様々な構成要素および機能が、いくつかの個々のコンピュータで実行される。図１２は、参照番号１２０２で参照されるコンピュータを含むコンピュータ環境１２００の典型的例の構成要素を示す。コンピュータ１２０２は、図１のコンピュータ１０２と同一でよく、または異なるものでよい。図１２に示す構成要素は例に過ぎず、本発明の機能の範囲に関するどんな限定も示唆するものではない。本発明は、図１２に示す機能に必ずしも依存しない。
【００７８】
一般に、様々な異なる汎用または特殊目的コンピューティングシステム構成を使用することができる。周知の本発明と共に使用するのに適したコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能消費者向け電子機器、ネットワークＰＣ、ネットワーク対応装置、ミニコンピュータ、メインフレームコンピュータ、ならびに上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを含む。
【００７９】
多くの場合、コンピュータの機能は、コンピュータによって実行される、ソフトウェアコンポーネントなどのコンピュータ実行可能命令によって実施される。一般に、ソフトウェアコンポーネントは、特定のタスクを実行し、あるいは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通信ネットワークを通じてリンクされたリモート処理装置でタスクを実行することもできる。分散コンピューティング環境では、ソフトウェアコンポーネントを、ローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体のどちらにも配置することができる。
【００８０】
命令および／またはソフトウェアコンポーネントは、コンピュータの一部であり、またはコンピュータで読み取ることのできる様々なコンピュータ可読媒体内に様々な時間に格納される。プログラムは一般に、例えばフロッピィディスク、ＣＤ−ＲＯＭ、ＤＶＤ、または被変調信号などの何らかの形態の通信媒体上で配布される。そこから、プログラムはコンピュータの２次メモリにインストールされ、またはロードされる。実行時に、プログラムは少なくとも部分的にコンピュータの１次電子メモリにロードされる。
【００８１】
説明の都合上、オペレーティングシステムなどのプログラムおよび他の実行可能プログラムコンポーネントが本明細書では離散的ブロックとして示されているが、そのようなプログラムおよびコンポーネントは、様々な時間にコンピュータの様々な記憶構成要素内に存在し、コンピュータのデータプロセッサによって実行されることを理解されたい。
【００８２】
図１２を参照すると、コンピュータ１２０２の構成要素は、限定はしないが、処理装置１２０４と、システムメモリ１２０６と、システムメモリを含む様々なシステム構成要素を処理装置１２０４に結合するシステムバス１２０８とを含むことができる。システムバス１２０８は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれでもよい。例えばこうしたアーキテクチャは、限定はしないが、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびメザニンバスとも呼ばれるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【００８３】
コンピュータ１２０２は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体はコンピュータ１２０２がアクセスできる入手可能などんな媒体でもよく、不揮発性媒体と揮発性媒体の両方、取り外し可能媒体と取り外し不能媒体の両方を含む。例えば、限定はしないが、コンピュータ可読媒体はコンピュータ記憶媒体と通信媒体を含むことができる。「コンピュータ記憶媒体」は、コンピュータ可読命令、データ構造、プログラムモジュール、あるいはその他のデータなどの情報を格納するために任意の方法または技術で実施される揮発性および不揮発性の取り外し可能および取り外し不能媒体を含む。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、またはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、またはその他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータ１２０２がアクセス可能な他のどんな媒体も含む。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、あるいはその他のデータを、搬送波や他の移送機構などの被変調データ信号で具体化し、任意の情報送達媒体を含む。「被変調データ信号」という用語は、信号の特性集合のうちの１つまたは複数を有する信号、または情報を信号内に符号化するように変化する信号を意味する。例えば、限定はしないが、通信媒体は、有線ネットワークやダイレクトワイヤード接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、他のワイヤレス媒体などのワイヤレス媒体を含む。上記のいずれかの組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００８４】
システムメモリ１２０６は、読取り専用メモリ（ＲＯＭ）１２１０やランダムアクセスメモリ（ＲＡＭ）１２１２などの、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ１２０２内の要素間で情報を転送する助けとなる基本ルーチンを含む基本入出力システム１２１４（ＢＩＯＳ）が、通常はＲＯＭ１２１０に格納される。ＲＡＭ１２１２は通常、処理装置１２０４から即座にアクセス可能であり、および／または処理装置１２０４によって現在操作されているデータおよび／またはプログラムモジュールを含む。例えば、限定はしないが、図１２は、オペレーティングシステム１２１６、アプリケーションプログラム１２１８、ソフトウェアコンポーネント１２２０、およびプログラムデータ１２２２を示す。
【００８５】
コンピュータ１２０２は、他の取り外し可能／取り外し不能な揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。単なる例に過ぎないが、図１２は、取り外し不能な不揮発性の磁気媒体を読み書きするハードディスクドライブ１２２４、取り外し可能な不揮発性の磁気ディスク１２２８を読み書きする磁気ディスクドライブ１２２６、およびＣＤ−ＲＯＭやその他の光学媒体などの取り外し可能な不揮発性の光ディスク１２３２を読み書きする光ディスクドライブ１２３０を示す。この例示的動作環境で使用することができるその他の取り外し可能／取り外し不能な揮発性／不揮発性のコンピュータ記憶媒体は、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含む。ハードディスクドライブ１２２４は通常、データメディアインターフェース１２３４などの取り外し不能メモリインターフェースを介してシステムバス１２０８に接続され、磁気ディスクドライブ１２２６および光ディスクドライブ１２３０は通常、取り外し可能メモリインターフェースによってシステムバス１２０８に接続される。
【００８６】
上記で説明し、図１２に図示するドライブとその関連するコンピュータ記憶媒体は、コンピュータ１２０２に関するコンピュータ可読命令、データ構造、ソフトウェアコンポーネント、および他のデータの記憶を実現する。図１２では、例えば、ハードディスクドライブ１２２４がオペレーティングシステム１２１６’、アプリケーションプログラム１２１８’、ソフトウェアコンポーネント１２２０’、およびプログラムデータ１２２２’を格納するものとして図示している。これらの構成要素は、オペレーティングシステム１２１６、アプリケーションプログラム１２１８、ソフトウェアコンポーネント１２２０、およびプログラムデータ１２２２と同一でよく、または異なるものでよいことに留意されたい。ここでは、オペレーティングシステム１２１６’、アプリケーションプログラム１２１８’、ソフトウェアコンポーネント１２２０’、およびプログラムデータ１２２２’には、少なくともこれらが相異なるコピーであることを示すために異なる番号を付けてある。ユーザは、キーボード１２３６や、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス（図示せず）などの入力装置を介して、コマンドおよび情報をコンピュータ１２０２に入力する。他の入力装置は、ソース周辺装置（ストリーミングデータを提供するマイクロフォン１２３８またはカメラ１２４０など）、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含むことができる。上記またはその他の入力装置はしばしば、システムバスに結合されるユーザ入出力（Ｉ／Ｏ）インターフェース１２４２を介して処理装置１２０２に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することもできる。モニタ１２４４または他のタイプのディスプレイ装置も、ビデオアダプタ１２４６などのインターフェースを介してシステムバス１２０８に接続される。モニタ１２４４に加えて、コンピュータシステムはまた、他の周辺レンダリング装置（例えばスピーカ）および１つまたは複数のプリンタを含むことができ、Ｉ／Ｏインターフェース１２４２を介してそれらを接続することができる。
【００８７】
コンピュータは、リモート装置１２５０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作する。リモート装置１２５０は、パーソナルコンピュータ、ネットワーク対応装置、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワークノードでよく、一般に、コンピュータ１２０２に関して上記で述べた要素のうちの多数またはすべてを含む。図１２に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１２５２および広域ネットワーク（ＷＡＮ）１２５４を含む。図１２に示すＷＡＮ１２５４はインターネットであるが、ＷＡＮ１２５４は他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットなどで一般的なものである。
【００８８】
ＬＡＮネットワーキング環境で使用する際、コンピュータ１２０２は、ネットワークインターフェースまたはアダプタ１２５６を介してＬＡＮ１２５２に接続される。ＷＡＮネットワーキング環境で使用する際、コンピュータ１２０２は一般に、インターネット１２５４を介して通信を確立するためのモデム１２５８またはその他の手段を含む。モデム１２５８は内蔵または外付けでよく、Ｉ／Ｏインターフェース１２４２、またはその他の適切な機構を介してシステムバス１２０８に接続する。ネットワーク環境では、コンピュータ１２０２に関して示したプログラムモジュールまたはその一部を、リモート装置１２５０内に格納する。例えば、限定はしないが、図１２に、リモートソフトウェアコンポーネント１２６０がリモート装置１２５０上に常駐するものとして示す。図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されよう。
【００８９】
前述のように、アプリケーションプログラム１２１８、１２１８’は、図２のメディアファウンデーション２０４によるレンダリングのためにメディアタイムラインを提供する。メディアタイムラインの例示的実施形態を以下の図に関連して見出すことができる。
【００９０】
例示的メディアタイムラインの実施形態
前述のメディアタイムラインは、１つまたは複数のＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｐｌａｙｅｒ  Ｐｌａｙｌｉｓｔファイル、ｅＸｅｃｕｔａｂｌｅ  Ｔｅｍｐｏｒａｌ  Ｌａｎｇｕａｇｅ（ＸＴＬ）ファイルなどのタイムラインデータを格納および復元する様々な方法を使用することができる。
【００９１】
例えば、ＡＳＸファイル拡張子で識別される以下のＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｐｌａｙｅｒ  Ｐｌａｙｌｉｓｔファイルとしてメディアタイムラインを説明する。
【００９２】
【表１】
2008538675.tif 000003
【００９３】
このＡＳＸファイルは、バックツーバックの出力のための３つのファイルを指定する。このファイルでは開始時間および停止時間は指定されていない。シーケンスノード１３０２および３つのリーフノード１３０４、１３０６、１３０８を含む、図１３に示すメディアタイムライン１３００によってＡＳＸファイルを表す。リーフノード１３０４〜１３０８のそれぞれは、メディアタイムライン１３００によって出力すべきメディアに関するそれぞれのソース１３１６、１３１８、１３２０を記述するそれぞれのメタデータ１３１０、１３１２、１３１４を含む。
【００９４】
メディアタイムラインの別の例を以下のＸＴＬファイルで示す。
【００９５】
【表２】
2008538675.tif 000004
【００９６】
このＸＴＬファイルは、出力のためのメディアの２つのトラック、例えばストリームを記述する。トラックの一方はオーディオトラックであり、他方はビデオトラックである。
【００９７】
２つの子シーケンスノード１４０４、１４０６を有する平行ノード１４０２を含む、図１４に示すメディアタイムライン１４００によってＸＴＬファイルを表す。この例では、シーケンスノード１４０４は、「ｖｉｄｅｏ」として設定された主要タイプ１４０８フィルタを有し、シーケンスノード１４０６は、「ａｕｄｉｏ」として設定された主要タイプ１４１０フィルタを有する。シーケンスノード１４０４は、２つの子リーフノード１４１２、１４１４を有する。リーフノード１４１２は、「０」の開始時間１４１６、「３０」の停止時間１４１８、「５０」のメディア開始１４２０、および「８０」としてのメディア停止１４２２を指定するメタデータを含む。リーフノード１４１４は、「３０」の開始時間１４２４、「４０」の停止時間１４２６、および「０」としてのメディア開始１４２８を指定するメタデータを含む。リーフノード１４１４はメディア停止時間を含まず、したがってリーフノード１４１４によって参照されるメディアの全長が出力されることに留意されたい。
【００９８】
シーケンスノード１４０６はまた、２つの子リーフノード１４３０、１４３２も有する。リーフノード１４３０は、「２０」の開始時間１４３４、「４０」の停止時間１４３６、および「０」のメディア開始１４３８を指定するメタデータを含む。リーフノード１４３２は、「４０」の開始時間１４４０、「６０」の停止時間１４４２、および「０」のメディア開始１４４４を指定するメタデータを含む。
【００９９】
結論
構造的特徴および／または方法論的動作に特有の術語で本発明を説明したが、添付の特許請求の範囲で定義される発明が、説明した特定の機能および動作に必ずしも限定されないことを理解されたい。むしろ、特許請求の範囲の主題を実施する例示的形態としてこの特定の特徴および動作を開示する。
【図面の簡単な説明】
【０１００】
【図１】コンピュータが複数のメディアへのアクセスを提供する例示的実施形態での一環境の図である。
【図２】ソフトウェアとして実施されたシステムが、メディアファウンデーションと対話して複数のメディアのプレゼンテーションを制御するアプリケーションを含む例示的実施形態でのシステムの高レベルブロック図である。
【図３】図２のアプリケーション、シーケンサソース、およびメディアセッション間の対話を示すシステムの例示的実施形態の図である。
【図４】メディアタイムラインがプレゼンテーションのためのメディアの出力を提供する複数のノードを含むツリーとして示される例示的実施形態の図である。
【図５】シーケンスノードと、シーケンスノードの子である複数のリーフノードとを示す例示的実施形態の図である。
【図６】平行ノードと、平行ノードの子である複数のリーフノードとを示す例示的実施形態の図である。
【図７】アプリケーションがメディアセッションおよびシーケンサソースと対話して、プレイリストとして構成されたメディアタイムラインをレンダリングさせる例示的実施形態での手続きを示す流れ図である。
【図８】第１メディアと第２メディアの間で遷移する効果を使用する、指定の時間枠にわたる第１および第２メディアの出力を示す例示的実施形態の図である。
【図９】図８のクロスフェード効果を実施するのに適した例示的実施形態でのメディアタイムラインの図である。
【図１０】メディアタイムライン処理インフラストラクチャによるレンダリングのためにアプリケーションによって図９のメディアタイムラインから導出された複数のセグメントを示す例示的実施形態の図である。
【図１１】アプリケーションがメディアタイムラインをメディアタイムライン処理インフラストラクチャによるレンダリングのために複数のトポロジにセグメント化する例示的実施形態での手続きを示す流れ図である。
【図１２】例示的動作環境の図である。
【図１３】ＡＳＸファイル拡張子で識別されるＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｐｌａｙｅｒ  Ｐｌａｙｌｉｓｔファイルによって記述されるシーケンスノードおよびリーフノードを含むメディアタイムラインを示す例示的実施形態の図である。
【図１４】ｅＸｅｃｕｔａｂｌｅ  Ｔｅｍｐｏｒａｌ  Ｌａｎｇｕａｇｅ（ＸＴＬ）ファイルによって記述される２つの子シーケンスノードを有する平行ノードを含むメディアタイムラインを示す例示的実施形態の図である。
【図１】
2008538675.tif 000005
【図２】
2008538675.tif 000006
【図３】
2008538675.tif 000007
【図４】
2008538675.tif 000008
【図５】
2008538675.tif 000009
【図６】
2008538675.tif 000010
【図７】
2008538675.tif 000011
【図８】
2008538675.tif 000012
【図９】
2008538675.tif 000013
【図１０】
2008538675.tif 000014
【図１１】
2008538675.tif 000015
【図１２】
2008538675.tif 000016
【図１３】
2008538675.tif 000017
【図１４】
2008538675.tif 000018