(57)【特許請求の範囲】
【請求項１】
プロセッサー（７０２）によって実行されると、復号器／レンダラーを含むソフトウェアベースのメディアプレーヤーによるメディアプレゼンテーションとしてメディアコンテンツ（１２２）を準備する方法（５００）を実行するコンピューター実行可能命令（７０６）で符号化されたコンピューター可読記憶媒体（７０４）であって、前記メディアコンテンツは、複数のメディアコンテンツユニット（４０７）としてメディアソース（３０４／３２４）から受信可能であり、該方法は、
前記メディアソースから受信されたクリップの個々にプレゼンテーション可能な部分を含むメディアコンテンツユニットを記憶するために割り当てられた、別個に割り当てられるように構成されるブロックを有する第１のメモリー（４３０）の一部（４３２）を識別するステップ（５０２）であって、前記クリップの個々にプレゼンテーション可能な部分はハードウェアコンポーネントにおいて受信される前記メディアプレゼンテーションを含む単一のプログラムストリームへと多重化され、前記ハードウェアコンポーネントは、タイミング信号に応答して、前記クリップの個々にプレゼンテーション可能な部分の時間ベースの同期を可能にするために、前記メディアプレゼンテーションの再生中、前記復号器／レンダラーへスケジューリング情報を提供する、ステップと、
前記メディアソースから受信された第１のメディアコンテンツユニットを識別するステップ（５０４）と、
前記第１のメモリーの前記割り当てられた一部における前記第１のメディアコンテンツユニットが記憶された第１の記憶ロケーションを識別するステップ（５０６）と、
前記第１のメディアコンテンツユニットに関連付けられる第１のデータ構造を形成するステップ（５０８）であって、該第１のデータ構造は、前記第１の記憶ロケーションについての情報を記憶するためのフィールドを有する、形成するステップ（５０８）と、
第２のメモリー（４３３）を有する前記ハードウェアコンポーネント（４０４／４９０）に前記第１のデータ構造を公開すること（５１０）を準備するステップと
を含み、
前記第１のデータ構造から取得される前記第１の記憶ロケーションについての前記情報は、前記ハードウェアコンポーネントが、中央処理装置を使用することなく、前記第１のメモリーから前記第１のメディアコンテンツユニットに直接アクセスするのに使用可能である（５１２）、コンピューター可読記憶媒体。
【請求項２】
コンピューター可読記憶媒体（７０４）であって、前記メディアソースから受信されたメディアコンテンツユニットを記憶するために割り当てられた前記第１のメモリーの前記一部は、連続的な物理メモリー、ロックされたスキャッターギャザーされた物理メモリー、ロック解除されたスキャッターギャザーされた物理メモリー、キャッシュされた仮想メモリー、及びキャッシュ解除された仮想メモリーから成る群から選択され、前記第１のデータ構造によって公開された前記第１の記憶ロケーションについての前記情報は、前記第１のメモリーのタイプ、前記第１のメモリーのメモリーブロックのサイズ、前記第１のメモリーへのポインターのロケーション、及び前記第１のメモリーへのポインターに対する前記第１の記憶ロケーションのオフセットロケーションから成る群から選択される、請求項１に記載のコンピューター可読記憶媒体。
【請求項３】
コンピューター可読記憶媒体（７０４）であって、前記メディアソースから受信されたメディアコンテンツユニットを記憶するために割り当てられた前記第１のメモリーの前記一部は、リングバッファー（４２０）として配列され、該リングバッファーは、先頭メモリーブロック（４３９）及び終端メモリーブロック（４４１）を有する、請求項１に記載のコンピューター可読記憶媒体。
【請求項４】
コンピューター可読記憶媒体（７０４）であって、前記先頭メモリーブロックは、前記終端メモリーブロックの後に、仮想メモリー（４５０）を使用して複製される、請求項３に記載のコンピューター可読記憶媒体。
【請求項５】
コンピューター可読記憶媒体（７０４）であって、前記方法は、
前記第１の記憶ロケーションが、前記先頭メモリーブロック及び前記終端メモリーブロックを含むとき、前記第１のメディアコンテンツユニットの第１の部分を前記終端メモリーブロックに記憶し、前記第１のメディアコンテンツユニットの第２の部分を、仮想メモリーを使用して複製された前記先頭メモリーブロックに記憶するステップ
をさらに含む、請求項４に記載のコンピューター可読記憶媒体。
【請求項６】
コンピューター可読記憶媒体（７０４）であって、前記リングバッファー（４２０）は、該リングバッファーにおける使用されるメモリーの先頭を参照するための先頭ポインター（４５３）及び前記リングバッファーにおける使用されるメモリーの終端を参照するための終端ポインター（４５５）を使用して実施され、前記第１のメモリーの前記割り当てられた一部における前記第１のメディアコンテンツユニットの第１の記憶ロケーションを識別する前記ステップは、前記リングバッファー内の前記第１のメディアコンテンツユニットのオフセットを識別するステップを含み、該オフセットは、前記先頭ポインター若しくは前記終端ポインター又はそれらの双方に対して相対的に指定される、請求項３に記載のコンピューター可読記憶媒体。
【請求項７】
コンピューター可読記憶媒体（７０４）であって、前記方法は、
前記第１のメディアコンテンツユニットが送信された後、前記先頭ポインター若しくは前記終端ポインター又はそれらの双方を移動させることによって、前記第１の記憶ロケーションから前記第１のメディアコンテンツユニットを解放するステップ
をさらに含む、請求項６に記載のコンピューター可読記憶媒体。
【請求項８】
コンピューター可読記憶媒体（７０４）であって、
前記メディアソースから受信された複数のメディアコンテンツユニットを識別すること、
前記複数のメディアコンテンツユニットのそれぞれについて、前記リングバッファー内の記憶ロケーション及びオフセットを識別するステップと、
前記複数のメディアコンテンツユニットのそれぞれに関連付けられるデータ構造を形成するステップであって、該データ構造は、それぞれ、特定のメディアコンテンツユニットの前記記憶ロケーションについての情報を記憶するためのフィールドを有する、形成するステップと、
第２のメモリーを有するハードウェアコンポーネントへの前記データ構造の公開を準備するステップであって、前記データ構造から取得される前記特定のメディアコンテンツユニットの前記記憶ロケーションについての前記情報は、前記ハードウェアコンポーネントが、中央処理装置を使用することなく、前記第１のメモリーから前記特定のメディアコンテンツユニットに直接アクセスするのに使用可能である、準備するステップと、並びに
特定のメディアコンテンツユニットがアクセスされた後、前記先頭ポインター若しくは前記終端ポインター又はそれらの双方を移動させることによって、該特定のメディアコンテンツユニットを前記記憶ロケーションから解放するステップと
をさらに含む、請求項６に記載のコンピューター可読記憶媒体。
【請求項９】
コンピューター可読記憶媒体（７０４）であって、
前記リングバッファーに記憶されたすべてのメディアコンテンツユニットの記憶ロケーションを含むオフセット位置のリストを維持するステップと、
前記オフセット位置のリストを使用するステップであって、メディアコンテンツユニットが前記記憶ロケーションから解放されるとき、前記先頭ポインター及び前記終端ポインターが互いにバイパスしないことを確実にする、使用するステップと
をさらに含む、請求項８に記載のコンピューター可読記憶媒体。
【請求項１０】
コンピューター可読記憶媒体（７０４）であって、前記方法は、複数のフィルターを有するフィルターグラフを備えるメディア処理パイプライン内で実行され、各フィルターは、１つ又は複数の入力ピン（４１１、４９１）及び１つ又は複数の出力ピン（４０１、４２１）を有する、請求項１に記載のコンピューター可読記憶媒体。
【請求項１１】
コンピューター可読記憶媒体（７０４）であって、前記ハードウェアコンポーネントは、前記複数のフィルターの１つを備え、該ハードウェアコンポーネントは、デマルチプレクサー（４０４）、復号器（４９０）、及びレンダラー（４９０）から成る群から選択される、請求項８に記載のコンピューター可読記憶媒体。
【請求項１２】
コンピューター可読記憶媒体（７０４）であって、前記方法は、前記複数のフィルターの１つを備えるソフトウェアコンポーネント（４０２）によって実行され、該ソフトウェアコンポーネントは、メディアコンテンツユニットを受信するように構成されている入力ピン及び前記ハードウェアコンポーネントと通信するように構成されている出力ピンを有する、請求項１０に記載のコンピューター可読記憶媒体。
【請求項１３】
コンピューター可読記憶媒体（７０４）であって、前記第１のメディアコンテンツユニットに関連付けられる第１のデータ構造を形成する前記ステップであって、該第１のデータ構造は、前記第１の記憶ロケーションについての情報を記憶するためのフィールドを有する、形成する前記ステップは、
前記第１の記憶ロケーションについての情報を受信し、前記第１のデータ構造の前記フィールドを前記第１の記憶ロケーションについての前記情報でポピュレートするように構成されているアプリケーションプログラミングインターフェース（「ＡＰＩ」）（４１０）のコールを前記ソフトウェアコンポーネントによって発行するステップと、
前記第１の記憶ロケーションについての前記情報を有する前記第１のデータ構造の前記フィールドを公開する前記アプリケーションプログラミングインターフェースからの応答を前記ソフトウェアコンポーネントによって受信するステップと
を含む、請求項１２に記載のコンピューター可読記憶媒体。
【請求項１４】
コンピューター可読記憶媒体（７０４）であって、ハードウェアコンポーネントに前記第１のデータ構造を公開することを準備する前記ステップは、前記ハードウェアコンポーネントと通信するように構成されている前記出力ピンにおいて、公開される前記第１のデータ構造の前記フィールドを有する前記第１のデータ構造を送信するステップを含む、請求項１３に記載のコンピューター可読記憶媒体。
【請求項１５】
メディアプレゼンテーションを再生するシステムで使用するメディア処理パイプラインのアーキテクチャー（３０６、３２６）であって、該アーキテクチャーは、
メディアソースから受信されたクリップの個々にプレゼンテーション可能な部分を含むメディアコンテンツユニットを受信し、該受信されたメディアコンテンツユニットの、別個に割り当てられるように構成されたブロックを有する第１のメモリーへの記憶を準備するように構成されているソフトウェアコンポーネント（４０２）と、
第２のメモリーを有するハードウェアコンポーネント（４０４、４９０）であって、該ハードウェアコンポーネントは、前記ソフトウェアコンポーネントに応答し、前記第１のメモリーに記憶されたメディアコンテンツユニットを表すものを前記第２のメモリーへ転送するように構成され、さらに、前記クリップの個々にプレゼンテーション可能な部分を、前記メディアプレゼンテーションを含む多重化された単一のプログラムストリームとして受信し、タイミング信号に応答して、前記クリップの個々にプレゼンテーション可能な部分の時間ベースの同期を可能にするために、前記メディアプレゼンテーションの再生中、復号器／レンダラーへスケジューリング情報を提供するように構成される、ハードウェアコンポーネント（４０４、４９０）と、
前記ソフトウェアコンポーネントと前記ハードウェアコンポーネントとの間の境界で動作可能なアプリケーションプログラミングインターフェース（ＡＰＩ）（４１０）であって、該ＡＰＩは、前記ソフトウェアコンポーネントの要求により、前記第１のメモリー内の特定のメディアコンテンツユニットの前記記憶ロケーションについての情報を有する少なくとも１つのデータ構造フィールドを前記ハードウェアコンポーネントに公開するように構成されており、該公開されたデータ構造フィールドは、前記ハードウェアコンポーネントが、中央処理装置を使用することなく、前記第１のメモリーに記憶されたメディアコンテンツユニットを表すものを前記第２のメモリーへ直接転送することを可能にする、ＡＰＩ（４１０）と、
を備える、アーキテクチャー。
【請求項１６】
アーキテクチャー（３０６、３２６）であって、前記ソフトウェアコンポーネント及び前記ハードウェアコンポーネントは、フィルターグラフのフィルターを備え、前記ソフトウェアコンポーネントは、前記ハードウェアコンポーネントの入力ピンに接続する出力ピンを有し、前記ＡＰＩは、前記ソフトウェアコンポーネントの前記出力ピンからのコールに応答して、前記ハードウェアコンポーネントの前記入力ピンに前記データ構造フィールドを公開する、請求項１５に記載のアーキテクチャー。
【発明の詳細な説明】
【技術分野】
【０００１】
デジタルメディアプレゼンテーションは、ビデオ、オーディオ、画像、テキスト、及び／又はグラフィックス等のメディアコンテンツの順序付けられたセットから成る。メディアコンテンツプレイヤーが、このようなメディアコンテンツの順序付けられたセットをレンダリングし且つ／又はユーザーにプレゼンテーションするとき、これらのメディアコンテンツの順序付けられたセットは、メディアコンテンツのストリームと呼ばれる。いくつかのメディアコンテンツプレイヤーは、２つ以上の独立制御されるメディアコンテンツのストリーム（例えば、監督による解説、俳優の人物紹介、又は広告等の特徴を伴った映画本編）を同時にレンダリングしてプレゼンテーションするように構成される。また、このようなメディアコンテンツプレイヤーは、ユーザー選択可能な可視オブジェクト又は可聴オブジェクト（例えば、さまざまなメニュー、ゲーム、特殊効果、又は他のオプション）を１つ又は複数のメディアコンテンツのストリームと同時にレンダリングしてプレゼンテーションすることができる場合もある。
【０００２】
ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせの形態の任意のタイプのデバイスが、メディアコンテンツプレイヤーとなり得る。光学式メディアプレイヤー（例えば、ＤＶＤプレイヤー）、コンピューター、及び大量の比較的安価なポータブルデータストレージ又は別の方法でアクセス可能なデータストレージへのアクセスを提供する他の電子デバイス等のデバイスは、かなりの再生継続時間を有するデジタルメディアプレゼンテーションに対する消費者の要望を満たすように特に巧みに位置付けされている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
さまざまなエンティティが、メディアコンテンツプレイヤーの異なるソフトウェアコンポーネント及びハードウェアコンポーネントを供給することが一般的であり、このようなコンポーネントは、限られた処理資源及びメモリー資源を有する環境で相互運用することに成功するものと期待されている。したがって、すべてのタイプのメディアコンテンツプレイヤー及びそのアーキテクチャーに対して、同時にプレゼンテーション可能なメディアコンテンツのストリームの正確な同期を含めた、デジタルメディアプレゼンテーションの資源効率の良い比較的異常のない再生を保証する技法を提供することが望ましい。
【課題を解決するための手段】
【０００４】
本明細書で論述するデジタルメディア処理技法及びインターフェース（アプリケーションプログラミングインターフェース（「ＡＰＩ」）等）は、メディアコンテンツプレイヤーに関連付けられるメディア処理パイプライン内のハードウェアコンポーネントとソフトウェアコンポーネントとの間の効率的で一貫した相互運用性を促進する。
【０００５】
一般に、メディア処理パイプラインは、光ディスク、ハードドライブ、ネットワークロケーション、及び他の可能なソース等のメディアソースからメディアコンテンツのセットを受信し、それらのメディアコンテンツのセットを、映画、テレビ番組、オーディオ番組、又は他のプレゼンテーション等のデジタルメディアプレゼンテーションの１つ又は複数のメディアコンテンツストリームとしてユーザーにプレゼンテーションすることに備えて準備する処理タスクを実行することを担当する。メディアコンテンツのセットは、「クリップ」と呼ばれ、１つのクリップは、一般に、１つのメディアソースから受信される。特定のメディアソースから読み出されたクリップの個々の部分は、本明細書ではメディアコンテンツユニットと呼ばれる。メディアコンテンツユニットは、一般に、多重分離、伸張、復号、及び／又は解読される。このようなメディアコンテンツユニットは、多重分離された後、本明細書では、メディアサンプルと呼ばれる。しかしながら、本明細書で使用されるネーミング規則（複数可）は単に例示の目的のためのものであること、及び任意の所望のネーミング規則を使用することができることが理解されよう。
【０００６】
メディア処理パイプラインは、メディアソースリーダー、デマルチプレクサー、復号器、解読器等のコンポーネントを含む。これらのコンポーネントは、ハードウェア若しくはソフトウェア又はそれらの組み合わせで実施される。Ｍｉｃｒｏｓｏｆｔ（登録商標）ＤｉｒｅｃｔＳｈｏｗ（商標）マルチメディアフレームワーク等のフレームワークを使用して、メディア処理パイプラインを実施することができる。しかしながら、任意の現在既知の又は今後開発されるフレームワークを使用して、メディア処理パイプラインを実施することができることが理解されよう。
【０００７】
情報（メディアコンテンツ自体についての情報及び／又はメディアコンテンツのユーザーへのプレゼンテーションについての情報等）が、メディア処理パイプラインにおけるソフトウェアコンポーネントとハードウェアコンポーネントとの間の境界で交換される。或る情報交換シナリオでは、ソフトウェアコンポーネントによって使用されるメモリー（「メモリー」という用語は、任意のタイプのコンピューター可読記憶媒体を包含することができる）内の情報が、ハードウェアコンポーネントによって使用可能である。別の情報交換シナリオでは、ハードウェアコンポーネントが、ソフトウェアコンポーネントによって確認された情報に基づいて自身のオペレーションを変更するか、又は、その逆が行われる。
【０００８】
本明細書で論述する一例示の技法及びインターフェースは、論述のため「PhysMemDataStructure」インターフェースと呼ばれ、命令／プロセッサーサイクルを使用して情報をコピーするのではなく、メディア処理パイプラインのソフトウェアコンポーネントとハードウェアコンポーネントとの間の境界で動作して、ソフトウェアコンポーネントにより使用されるメモリーからの情報のハードウェアコンポーネントの直接アクセスを容易にするように構成される。PhysMemDataStructureインターフェースは、ソフトウェアコンポーネントによって使用されるメモリーに記憶された（ハードウェアコンポーネントによって処理される）メディアコンテンツのユニットに関連付けられるデータ構造の１つ又は複数のフィールドをハードウェアコンポーネントに公開する。これらのデータ構造のフィールドは、メディアコンテンツの個々のユニットが配置されるメモリーの物理的特性についての情報を記憶する。このような物理的特性の例には、メモリーのタイプ、メモリーブロックサイズ、メモリーロケーションへの読み出し／書き込みポインターのロケーション、及びこのようなメモリーポインターに対するメディアコンテンツユニットのオフセットロケーションが含まれるが、これらに限定されるものではない。メモリー資源の効率的使用をさらに高めるために、ソフトウェアコンポーネントは、リングバッファーにメディアコンテンツのユニットを記憶することができる。メモリー効率及び処理効率をさらにより高めるために、仮想メモリーを使用して、リングバッファーの先頭部分を物理メモリーリングバッファーの終端部分において複製することができる。
【０００９】
本明細書で論述する他の例示の技法及びインターフェースは、論述のため「SyncHelper」インターフェースと呼ばれ、ハードウェアコンポーネントとソフトウェアコンポーネントとの間の情報交換を容易にするように構成される。この情報交換は、（例えば、２つのメディアコンテンツストリーム間の知覚される同期を維持するために）タイミングを調整するか又はハードウェアコンポーネント若しくはソフトウェアコンポーネントの他の動作態様を調整するのに使用することができる。本明細書で論述する或るSyncHelperインターフェースは、「GetDecodeTimes」インターフェースと呼ばれ、特定の時点においてハードウェアコンポーネント（デマルチプレクサー、復号器、又はレンダラー等）によってレンダリングされている特定のメディアコンテンツユニット又はメディアサンプルについての情報を提供する。提供された情報は、その特定の時点におけるデジタルメディアプレゼンテーションの再生継続時間の経過量、及びメディアサンプルが導出された導出元のクリップの再生継続時間の経過量を含む。別のSynchHelperインターフェースは、「SyncToSTC」インターフェースと呼ばれ、同時にプレゼンテーション可能なさまざまなメディアコンテンツストリームの同期を容易にする。一例示のシナリオでは、SyncToSTCインターフェースは、GetDecodeTimesインターフェースによって返されたデジタルメディアプレゼンテーションの再生継続時間の経過量の２つの値の間の差を確認し（すなわち、要求／受信するか又は計算する）、確認された差に基づいてタイミングを調整する（例えば、タイミング信号のレートを調整するか若しくはいずれのメディアサンプルが復号されるのかを調整するか又はそれらの双方を行う）ように１つ又は複数のハードウェアコンポーネントに命令する。
【００１０】
この概要は、概念のうちの選択したものを簡略化した形態で紹介するために設けられている。これらの概念は、詳細な説明のセクションでさらに説明される。この概要で説明した要素又はステップ以外の要素又はステップも可能であり、要素又はステップは必ずしも必須であるとは限らない。この概要は、特許請求される主題の重要な特徴も本質的な特徴も特定することを意図するものではなく、また、特許請求される主題の範囲を決定することを助けるものとして使用されることを意図するものでもない。特許請求される主題は、この開示のいずれかの部分に記されたいずれかの不利な点又はすべての不利な点を解決する実施態様に限定されるものではない。
【図面の簡単な説明】
【００１１】
【図１】一例示のメディアコンテンツプレイヤーの簡略化した機能ブロック図である。
【図２】図１の例示のメディアタイムライン（複数可）をより詳細に示す模式図である。
【図３】図１のメディアコンテンツマネージャーブロックの態様をより詳細に示す簡略化した機能ブロック図である。
【図４】図３に示すメディア処理パイプラインの態様の一例示のアーキテクチャーを示す簡略化した機能ブロック図である。
【図５】図１に示すメディアコンテンツプレイヤー、図３に示すメディア処理パイプライン、及び／又は図４に示すアーキテクチャーの態様を使用してメディアコンテンツをプレゼンテーションに備えて準備する方法のフローチャートである。
【図６】図１に示すメディアコンテンツプレイヤー、図３に示すメディア処理パイプライン（複数可）、及び／又は図４に示すアーキテクチャーの態様を使用してメディアコンテンツの２つのクリップの一部を同期したプレゼンテーションに備えて準備する方法のフローチャートである。
【図７】図１に示すメディアコンテンツプレイヤー又は図５及び図６に示す方法のすべて又は一部を実施又は使用することができる動作環境の一例示の構成の簡略化したブロック図である。
【図８】図７に示す動作環境の態様を実施又は使用することができるクライアント−サーバーアーキテクチャーの簡略化したブロック図である。
【発明を実施するための形態】
【００１２】
デジタルメディアプレゼンテーションの予測可能であり且つ比較的異常のない再生は、多くの場合、メディアコンテンツプレイヤーの限られたコンピューティング資源、特にメモリー資源及びプロセッサー資源の効率的な使用に依存する。異常及び非効率は、さまざまな状況で起こる可能性があり、特に、情報が、メディア処理パイプラインで動作しているハードウェアコンポーネントとソフトウェアコンポーネントとの間で転送されるときに起こる可能性がある。或るシナリオでは、情報が、ソフトウェアコンポーネントによって使用されるメモリーとハードウェアコンポーネントによって使用されるメモリーとの間で転送されるときに、非効率が起こり得る。このシナリオでは、メモリーアクセストランザクションで使用される処理資源及び／又はメモリー資源を最小にすることが望ましい。別のシナリオでは、複数のメディアコンテンツストリームが、ユーザーへの同時プレゼンテーションのために別個のハードウェアコンポーネントによって準備され、適切な情報が、操作可能な同期を保証するハードウェアコンポーネントに利用可能でないときに、メディアコンテンツストリーム（複数可）の再生における異常及び／又はユーザーが知覚する同期外れが起こり得る。このシナリオでは、一定の処理タスクを実行するためのタイミングを調整する際に使用する情報をハードウェアコンポーネントに提供することが望ましい。
【００１３】
ハードウェアコンポーネントによって使用可能な情報を公開して、メディアコンテンツプレイヤーのメディア処理パイプラインで動作するコンポーネントの効率性、正確性、及び相互運用性を高めるために、ソフトウェアコンポーネントとハードウェアコンポーネントとの間の境界で動作するさまざまな技法及びアプリケーションプログラミングインターフェース（「ＡＰＩ」）が本明細書で議論される。
【００１４】
次に図面を参照する。図面では、同様の符号は、同様のコンポーネントを指す。図１は、メディアコンテンツをレンダリングする一例示のメディアコンテンツプレイヤー１００（以下、「プレゼンテーションシステム」１００と呼ぶ）の簡略化した機能ブロック図である。メディアコンテンツは、ビデオ、オーディオ、画像、テキスト、及び／又はグラフィックスの（一般に時間順の）シーケンスから成る。プレゼンテーションシステムは、メディアコンテンツをレンダリングする任意のシステムとすることができる。この任意のシステムには、光学式メディアプレイヤー、コンピューティングデバイス又はそのオペレーティングシステム、オーディオプレイヤー、セットトップボックス、電気通信デバイス、携帯情報端末、画像キャプチャデバイス又はビデオキャプチャデバイス等が含まれるが、これらに限定されるものではない。論述のため、プレゼンテーションシステムは、ユーザー選択可能な可視インタラクティブオブジェクト又は可聴インタラクティブオブジェクト（例えば、メニュー、ゲーム、特殊効果、又は他のオプション）と同時に映画又は他のタイプのプレゼンテーション等のメディアコンテンツを再生するのに使用されるインタラクティブマルチメディアプレゼンテーションシステムであると仮定する。
【００１５】
図示するように、プレゼンテーションシステム１００は、メディアコンテンツマネージャー１０２と、インタラクティブコンテンツ（「ＩＣ」）マネージャー１０４と、プレゼンテーションマネージャー１０６と、タイミング信号管理ブロック１０８と、ミキサ／レンダラー１１０とを含む。一般に、設計上の選択によって、プレゼンテーションシステム１００の具体的な機能がどのように実施されるのかが指示される。このような機能は、ハードウェア、ソフトウェア、若しくはファームウェア、又はそれらの組み合わせを使用して実施することができる。
【００１６】
動作中、プレゼンテーションシステム１００は、インタラクティブマルチメディアプレゼンテーションコンテンツ（「プレゼンテーションコンテンツ」）１２０をハンドリングする。プレゼンテーションコンテンツ１２０は、メディアコンテンツコンポーネント（「メディアコンポーネント」）１２２及びインタラクティブコンテンツコンポーネント（「ＩＣコンポーネント」）１２４を含む。メディアコンポーネント１２２及びＩＣコンポーネント１２４は、一般に、メディアコンテンツマネージャー１０２及びＩＣマネージャー１０４によってそれぞれ別個にハンドリングされるストリームであるが、そのようにハンドリングされる必要はない。
【００１７】
プレゼンテーションシステム１００によって、プレゼンテーションコンテンツ１２０を再生プレゼンテーション１２７としてユーザー（図示せず）にプレゼンテーションすることが容易になる。再生プレゼンテーション１２７は、ミキサ／レンダラー１１０によって生成され、ディスプレイ又はスピーカー（図示せず）等のデバイスを介してユーザーが受け取ることができる、プレゼンテーションコンテンツ１２０に関連付けられる可視情報及び／又は可聴情報を表す。論述のため、プレゼンテーションコンテンツ１２０及び再生プレゼンテーション１２７は、任意のフォーマットの高精細ＤＶＤ映画コンテンツの態様を表すものと仮定する。しかしながら、プレゼンテーションコンテンツ１２０及び再生プレゼンテーション１２７を、現在既知であるか又は今後開発されるメディアコンテンツの任意のタイプのプレゼンテーションをプレゼンテーションするように構成することができることが理解されよう。
【００１８】
メディアコンポーネント１２２は、再生プレゼンテーション１２７内にメディアコンテンツストリーム（メディアコンテンツストリーム２０８及び２２８が、図２に関連して以下でさらに図示及び論述される）としてユーザーにプレゼンテーション可能なビデオ、オーディオ、画像、テキスト、及び／又はグラフィックスの（一般に時間順の）１つ又は複数のシーケンスを表す。２つ以上の独立制御されるメディアコンテンツストリームを同時にプレゼンテーションすることができる（例えば、監督による解説、俳優の人物紹介、又は広告等の特徴を伴った映画本編）。
【００１９】
映画は、一般に、１つ又は複数のバージョン（例えば、成人観客向けバージョン及び若年観客向けバージョン）；各タイトルに関連付けられる１つ又は複数のチャプタ（図示せず）を有する１つ又は複数のタイトル１３１（タイトルはプレゼンテーションマネージャー１０６に関連して以下でさらに論述される）；１つ又は複数のオーディオトラック（例えば、映画は、サブタイトルを有しようと有しまいと、１つ又は複数の言語で再生することができる）；及び監督による解説、付加的な映像、俳優の人物紹介、広告、予告編等の特典的な（extra）特徴を有する。タイトルとチャプタとの区別は、単に論理的な区別にすぎないことが理解されよう。例えば、知覚される単一のメディアセグメントは、単一のタイトル／チャプタの一部であることもあるし、複数のタイトル／チャプタで構成されることもある。これは、適用可能な論理的区別を決定するコンテンツオーサリングソース次第である。
【００２０】
メディアコンポーネント１２２の態様を形成するビデオ、オーディオ、画像、テキスト、及び／又はグラフィックスのシーケンスのセットは、一般に、クリップ１２３と呼ばれる（クリップ１２３は、メディアコンポーネント１２２及び再生リスト１２８内に示され、図２においても参照され、以下でさらに論述される）。しかしながら、メディアコンポーネント１２２を形成するデータシーケンスのセットを任意の望ましい方法でグループ化及び／又は参照することができ、実際のデータを、例えばビット、フレーム、サンプル、データパケット、映像群、エンハンストビデオオブジェクトユニット等の任意の所望のユニットに配列して表すことができることが理解されよう。特定のデータユニットのデジタルコンテンツ（及びデータユニットのサイズも）は、そのユニットを含むビデオ、オーディオ、若しくはデータコンテンツの特徴等のいくつかの因子、又はサンプルが導出される導出元のメディアソースに関連付けられる１つ又は複数のパラメーター（例えば、メディアソースの識別情報及び／若しくはロケーション、符号化器／復号器のパラメーター若しくは設定、又は暗号化のパラメーター若しくは設定）に基づくことができる。メディアソースは、図２に関連して、以下でさらに論述される。
【００２１】
メディアデータ１３２は、メディアコンテンツマネージャー１０２によるレンダリングに備えて準備されたメディアコンポーネント１２２に関連付けられるデータであり、ミキサ／レンダラー１１０へ送信されるデータである。メディアデータ１３２は、一般に、各アクティブクリップ１２３について、そのクリップの一部をレンダリングしたものを含む。
【００２２】
プレゼンテーションコンテンツ１２０を再び参照すると、ＩＣコンポーネント１２４は、可視オブジェクト又は可聴オブジェクトをプレゼンテーションするための（アプリケーション１５５として示された）任意の命令と共に、インタラクティブオブジェクト１２５を含む。インタラクティブオブジェクト１２５は、ユーザー選択可能な可視オブジェクト又は可聴オブジェクトであり、オプションとして、メディアコンポーネント１２２と同時にプレゼンテーション可能である。インタラクティブオブジェクトの例には、特に、ビデオサンプル又はビデオクリップ、オーディオサンプル又はオーディオクリップ、画像、グラフィックス、テキスト、及びそれらの組み合わせが含まれる。
【００２３】
アプリケーション１５５は、プレゼンテーションシステム１００がインタラクティブオブジェクト１２５をユーザーにプレゼンテーションするメカニズムを提供する。アプリケーション１５５は、任意の信号処理方法又はデータに対する所定のオペレーションを電子制御する任意の記憶されている命令（複数可）を表す。
【００２４】
ＩＣマネージャー１０４は、１つ又は複数の命令ハンドリングエンジン１８１を含む。これらの１つ又は複数の命令ハンドリングエンジン１８１は、アプリケーション１５５に関連付けられるコマンドを受信して解釈し、コマンドの実行の準備をする。アプリケーション１５５の実行が進行し、ユーザー入力１５０が受信されると、再生プレゼンテーション１２７内の挙動をトリガすることができる。「ＩＣＭからの入力」１９０としてラベル付けされたアプリケーション１５５の一定の命令の実行によって、プレゼンテーションシステム１００内の他の機能又はコンポーネントとの通信又は相互運用を容易にすることができる。図示するように、入力１９０は、メディアコンテンツマネージャー１０２（図２に関連して以下でさらに論述される）によって受信されるが、プレゼンテーションシステム１００内の他のコンポーネント又は機能も入力１９０に応答することができる。
【００２５】
インタラクティブコンテンツデータ（「ＩＣデータ」）１３４は、ＩＣマネージャー１０４によるレンダリングに備えて準備されたＩＣコンポーネント１２４に関連付けられるデータであり、ミキサ／レンダラー１１０へ送信されるデータである。
【００２６】
タイミング信号管理ブロック１０８（図３に関連して以下でさらに論述される）は、さまざまなタイミング信号１５８を生成する。これらのタイミング信号１５８は、メディアコンテンツマネージャー１０２によるメディアデータ１３２の準備及び生成のタイミング並びにＩＣマネージャー１０４によるＩＣデータ１３４の準備及び生成のタイミングを制御するのに使用される。例えば、タイミング信号管理ブロック１０８は、一般に、メディアデータ１３２がユーザーにプレゼンテーションされるレート（図３に関連して図示及び論述される「メディアデータプレゼンテーションレート３０７」）及びＩＣデータ１３４がユーザーにプレゼンテーションされるレートの決定を担当する。別の例では、タイミング信号１５８は、メディアデータ１３２及び／又はＩＣデータ１３４のおおよその同期（例えば、フレームごと又は別の時間に基づいたタイミング／同期）を達成するのに使用される。
【００２７】
ミキサ／レンダラーは、メディアデータ１３２をビデオプレーン（図示せず）にレンダリングし、ＩＣデータ１３４をグラフィックスプレーン（図示せず）にレンダリングする。グラフィックスプレーンは、一般に、ユーザー用の再生プレゼンテーション１２７を生成するためにビデオプレーン上に重ね合わせられるが、必ずしもそうとは限らない。
【００２８】
プレゼンテーションマネージャー１０６は、メディアコンテンツマネージャー１０２、ＩＣマネージャー１０４、ミキサ／レンダラー１１０、及びタイミング信号管理ブロック１０８と通信するように構成されており、プレゼンテーションコンテンツ１２０のハンドリングと再生プレゼンテーション１２７のユーザーへのプレゼンテーションとを容易にする。プレゼンテーションマネージャー１０６は、再生リスト１２８にアクセスする。再生リスト１２８は、特に、ユーザーにプレゼンテーション可能なクリップ１２３及びアプリケーション１５５（インタラクティブオブジェクト１２５を含む）の時間順のシーケンスを含む。クリップ１２３及びアプリケーション１５５／インタラクティブオブジェクト１２５は、１つ又は複数のタイトル１３１を形成するように配列することができる。上記で論述したように、２つ以上の独立制御されるタイトル／メディアコンテンツストリームをユーザーに同時に再生することが可能である。このような同時再生されるストリームは再生リスト１２８上に示すこともできるし、予期しないユーザー入力がメディアコンテンツストリームの同時再生を引き起こすこともできる。
【００２９】
プレゼンテーションマネージャー１０６は、再生リスト１２８を使用して、特定のメディアプレゼンテーション（映画の場合にはタイトル１３１）のプレゼンテーションタイムライン１３０を確認する。プレゼンテーションタイムライン１３０は、一般に、タイトルがユーザーにプレゼンテーション可能な特定の時間量を表す所定の再生継続時間を有する。再生継続時間内の特定の経過時間量を表すものは、多くの場合、「タイトル時間」と呼ばれる。タイトルは、１回又は（例えば、ループ形式で）２回以上再生される場合があるので、再生継続時間は、タイトルの１回の繰り返しに基づいて求められる。概念的には、プレゼンテーションタイムライン１３０は、特定のクリップ１２３及びアプリケーション１５５がユーザーにプレゼンテーション可能であるときのタイトル時間を示す（ただし、示すように、或る特定のクリップの再生を開始及び停止するユーザー入力がいつ発生し得るかは通常分からない）。特定のクリップ１２３は、一般に、そのクリップをプレゼンテーションするための特定の時間量を表す所定の再生継続時間も有する。クリップ再生継続時間内の特定の経過時間量を表すものは、多くの場合、「プレゼンテーション時間」と呼ばれる。クリップの個々にプレゼンテーション可能な各部分（論述のため「メディアサンプル」と呼ばれる場合があるが、任意の所望のネーミング規則を使用することができる）は、クリップの再生継続時間内の、関連付けられる所定のプレゼンテーション時間を有する。メディアコンテンツのプレゼンテーションにおいてユーザーが知覚可能な異常を回避するために、１つ又は複数の次に来るメディアサンプルが、スケジューリングされた／所定のプレゼンテーション時間よりも前にプレゼンテーションに備えて準備される。
【００３０】
特定のクリップの再生及びその特定のクリップに関連付けられるタイミング／時間をより良く示すために、再生リスト１２８及び／又はプレゼンテーションタイムライン１３０を使用して１つ又は複数のメディアコンテンツタイムライン（「メディアタイムライン（複数可）」）１４２を確認することが有用である。図１及び図２の参照を続けて、図３は、特定のクリップ１２３の一例示のメディアタイムライン１４２である。さまざまなメディアサンプルプレゼンテーション時間２０２が、メディアタイムライン１４２上に示されている。メディアサンプルプレゼンテーション時間２０２は、１つ又は複数のメディアサンプルがメディアデータ１３２としてプレゼンテーション可能である特定のクリップの再生継続時間内の時間を表す。図示するように、メディアサンプルプレゼンテーション時間２０２は、所定のメディアデータプレゼンテーションレート２０７に基づくレートで発生する。この所定のメディアデータプレゼンテーションレート２０７は、クリップごとに変化し得る。メディアデータプレゼンテーションレート２０７は、特定のクリップ１２３が符号化されるレートと同じである必要はないが、メディアデータプレゼンテーションレートは、特定のクリップの符号化レートに基づいて変化し得ることに留意されたい。一定のユーザー入力１５０は、メディアソースからのメディアサンプル取り出しの速度に影響を与える可能性もあり、したがって、メディアサンプルプレゼンテーション時間２０２が発生するレートに影響を与える可能性もある。例えば、再生プレゼンテーション１２７は、標準速度で順方向に進行することができ、また、順方向及び逆方向の双方に標準速度よりも高速又は低速で進行することもできる。標準速度は、相対的な用語であり、プレゼンテーションごと及びクリップごとに変化し得ることが理解されよう。高速巻き戻しオペレーション及び早送りオペレーション中、一定のメディアコンテンツ（図示するように、メディアサンプル２３０）の再生は、多くの場合、スキップされる。ユーザーが映画の或る部分から別の部分へジャンプするとき等は、他のユーザー入力によって、一定のメディアコンテンツの再生がスキップされる場合がある。
【００３１】
現在の経過再生時間２０９（すなわち、クリップが関連付けられているデジタルメディアプレゼンテーションのタイトル時間）が、メディアタイムライン１４２に示されている。メディアサンプル２５０は、現在の経過再生時間２０９においてユーザーにプレゼンテーションされている。図示するように、現在の経過再生時間２０９は、特定のメディアサンプルプレゼンテーション時間２０２と一致するが、このような一致は必須ではない。次にプレゼンテーション可能なメディアサンプルプレゼンテーション時間２１４も示されている。次にプレゼンテーション可能なメディアサンプルプレゼンテーション時間３１４は、次にユーザーへのプレゼンテーションに備えて準備されるべき次のメディアサンプル及び／又は次のメディアサンプルプレゼンテーション時間を決定するのに使用される（図示するように、次にプレゼンテーション可能なメディアサンプル２７０がプレゼンテーションに備えて準備されることになる）。次にプレゼンテーション可能なメディアサンプル／プレゼンテーション時間は、再生リスト１２８に基づく次の連続したメディアサンプル／プレゼンテーション時間とすることもできるし、現在の経過再生時間２０９に関連付けられるメディアサンプル／プレゼンテーション時間から離れたメディアサンプル／プレゼンテーション時間１つ又は複数のメディアサンプル／プレゼンテーション時間２０２とすることもできることが理解されよう。次にプレゼンテーション可能なメディアサンプル／メディアサンプルプレゼンテーション時間を確認するにはさまざまな方法があり、これらの方法は、本明細書で詳細には論述されない。しかしながら、一般に、予測経過再生時間２２０（すなわち、デジタルメディアプレゼンテーションの再生継続時間の予測タイトル時間）及び対応する次にプレゼンテーション可能なメディアサンプル／プレゼンテーション時間が確認される。再生速度、メディアフレームレート２０７等の情報及び他の情報は、予測経過再生時間を求め且つ／又は特定のメディアサンプルプレゼンテーション時間／メディアサンプルを突き止めるのに使用することができる。
【００３２】
図１を再び参照すると、動作中、プレゼンテーションマネージャー１０６は、情報をメディアコンテンツマネージャー１０２及びＩＣマネージャー１０４に提供する。この情報は、プレゼンテーションタイムライン１３０についての情報及び／又はメディアタイムライン１４２についての情報を含むが、これらに限定されるものではない。プレゼンテーションマネージャー１０６からの入力に基づいて、ＩＣマネージャー１０４は、ＩＣデータ１３４をレンダリングに備えて準備し、メディアコンテンツマネージャー１０２は、メディアデータ１３２をレンダリングに備えて準備する。
【００３３】
図１及び図２の参照を続けて、図３は、メディアコンテンツマネージャー１０２の態様をより詳細に示す簡略化した機能ブロック図である。メディアコンテンツマネージャー１０２は、１つ又は複数のメディア処理パイプラインを含む。メディア処理パイプライン１  ３０２及びメディア処理パイプライン２  ３２０の２つのメディア処理パイプラインが示されているが、任意の個数のメディア処理パイプラインが可能である。一般に、メディア処理パイプライン１  ３０２及びメディア処理パイプライン２  ３２０は、独立制御されるメディアコンテンツストリーム３０８及び３２８をユーザーへのプレゼンテーションに備えてそれぞれ準備するのに使用される。一方のメディア処理パイプラインは、通例、第１のタイミング信号１  ３５０を基準にして、映画等の１次メディアコンテンツストリームの準備を担当し、他方のメディア処理パイプラインは、第２のタイミング信号３７０を基準にして、監督による解説、俳優の人物紹介、広告等の１つ又は複数の２次メディアコンテンツストリームの準備を担当する。タイミング信号は、メディアコンテンツのサンプルがメディアソースから取り出され且つ／又はユーザーへのプレゼンテーションに備えて準備されるレート（複数可）を表し（このようなレート（複数可）は動的に変化し得るが、ユーザー入力、符号化／暗号化／圧縮フォーマット、及び他の因子に基づいて変化し得る）、プレゼンテーションシステム１００及び／又はメディア処理パイプライン内のハードウェアコンポーネント等の専用デバイスに関連付けられるクロック源等のクロック源（図示せず）から一般に導出される。
【００３４】
メディアコンテンツマネージャー１０２は、図２に示す次の処理可能なメディアサンプル（複数可）２７０等、クリップの個々にプレゼンテーション可能な次に来る部分をプレゼンテーションに備えて準備することを担当する。このような準備は、多くの場合、複数のステップを伴う。これらの複数のステップは、特定のメディアソース（メディアコンテンツの導出元又は取得元である任意のデバイス、ロケーション、又はデータである、図示されたメディアソース３０４及び３２４）からのクリップの次に来る部分を読み出すこと、及び、リーダー、デマルチプレクサー、復号器、レンダラー、及び／又は解読器等のハードウェアベース及びソフトウェアベースのメディア処理コンポーネント（メディア処理コンポーネント３０６及び３２６は、図４に関連して以下でさらに図示及び論述される）を使用して、メディアソース（複数可）から読み出された情報から再生可能なメディアコンテンツストリーム３０８、３２８を取得することを含むが、これらに限定されるものではない。
【００３５】
メディアコンテンツマネージャー１０２は、メディアコンポーネント１２２及び／又はＩＣコンポーネント１２４を含むさまざまなクリップ１２３の識別情報及び（所定の又は予期しないユーザー入力１５０に基づく）スケジューリングに基づく動的な処理負荷を有する場合があることが理解されよう。一般に、メディア処理パイプラインは、プレゼンテーションシステム１００の処理資源（例えば、ＣＰＵサイクル）の僅か１０％〜１５％しか消費しないことが望ましい。
【００３６】
メモリー間コピー等の従来のコピートランザクションを使用して情報がメモリーロケーション間で転送されるとき、大量の処理資源が消費される可能性があり、コピートランザクションに処理資源を使用し過ぎると、デジタルメディアプレゼンテーションの再生に異常を引き起こす可能性がある。しかし、多くの場合、メディア処理パイプラインの異なるコンポーネントによって使用されるメモリー間、特にソフトウェアコンポーネントによって使用されるメモリーとハードウェアコンポーネントによって使用されるメモリーとの間で情報を転送することが望ましい。ハードウェアコンポーネントは、特に、メディアコンテンツ処理を高速化する理由で使用される。
【００３７】
２つ以上のクリップの次に来る部分をプレゼンテーションに備えて同時に準備することも、容易に予測することができない方法でメモリー及びプロセッサーサイクル等のコンピューティング資源を大量に消費する可能性があり、デジタルメディアコンテンツの再生に異常をきたす可能性をさらに悪化させる可能性がある。その上、クリップの特定の部分をプレゼンテーションに備えて準備するのに必要とされるメモリー資源及び／又は処理資源（したがって、このような準備の時間）は、サンプルごと又はクリップごとに常に一定であるとは限らない。必要とされる資源及び準備時間に影響を与えるいくつかの因子は、メディアコンテンツ自体（メディアユニット／サンプルサイズ、メディアソース／ロケーション、符号化パラメーター又は復号パラメーター、及び暗号化パラメーター等の因子が含まれるが、これらに限定されるものではない）に関連付けられている。必要とされる資源に影響を与える他の因子は、メディアコンテンツプレイヤー（例えば、メディア処理パイプラインアーキテクチャー、動的な処理負荷、及びメディアコンテンツプレイヤーキテクチャの他の特徴）に関連付けられている一方、必要とされる資源に影響を与えるさらに他の因子は、ユーザー入力（例えば、ユーザーが選択したメディアコンテンツ、コンテンツフォーマット、又は再生速度）に関連付けられている。
【００３８】
図１〜図３の参照を続けて、図４は、メディア処理コンポーネントブロック３０６及び３２６のアーキテクチャー態様及び動作態様をより詳細に示す簡略化された機能ブロック図である。一可能な実施態様では、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＤｉｒｅｃｔＳｈｏｗ（商標）マルチメディアフレームワークが使用されて、メディア処理タスクが、フィルターとして知られているステップ群に分割される。各フィルターは、フィルターを相互に接続する複数の入力ピン及び複数の出力ピンを有する。しかしながら、任意の現在既知のフレームワーク又は今後開発されるフレームワークを使用してメディア処理パイプラインを実施することができることが理解されよう。
【００３９】
図示するように、ソフトウェア−ハードウェア境界４０３が、破線によって示されている。境界４０３の左側のコンポーネントは、主として、ソフトウェアベースのコンポーネント（又はソフトウェアを使用して実施されるコンポーネントの一部）であり、境界４０３の右側のコンポーネントは、主として、ハードウェアベースのコンポーネント（又はハードウェア若しくはファームウェア若しくはそれらの組み合わせを使用して実施されるコンポーネントの一部）である。一例示のアーキテクチャーは、ハードウェアベースのコンポーネントが直接読み出すことができる読み出し元の第１のメモリーにアクセスするソフトウェアベースのメディアソースリーダー４０２；一般に１つ又は複数のメモリーブロック（論述のため、第２のメモリー４３３として図示され、第２のメモリー４３３と呼ばれる）にアクセスするハードウェアベースのデマルチプレクサー（「ｄｅｍｕｘ」）４０４；同様に、一般に１つ又は複数のメモリーブロック（論述のため、第２のメモリー４３３として図示され、及び第２のメモリー４３３と呼ばれる）にアクセスする１つ又は複数のハードウェアベースの復号器／レンダラー４９０；並びにアプリケーションプログラミングインターフェース４０８を含む。アプリケーションプログラミングインターフェース４０８は、PhysMemDataStructure API４１０、Sniffer/Callback API４２２、並びにGetDecodeTimes API４２０及びSyncToSTC API４２０を含むSyncHelper API４１６を含む。
【００４０】
メディアソースリーダー４０２は、特定のメディアソースからクリップの個々にプレゼンテーション可能な部分（論述のためメディアユニット４０７と呼ばれる）を（データプッシュ技法又はデータプル技法を介して）受信すること、受信されたメディアユニット４０７をメモリー４３０に記憶すること、及び記憶されたメディアユニット４０７に関するデータを下流側に（例えば、ｄｅｍｕｘ４０４又は復号器／レンダラー４９０へ）渡すことを担当する。一つの可能な実施態様では、データは、データ構造を使用して下流側のｄｅｍｕｘ４０４へ渡される。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＤｉｒｅｃｔＳｈｏｗ（商標）フレームワークのコンテキストでは、メディアユニット４０７は、IMediaSampleオブジェクト（IMediaSampleは、オブジェクトが実施するインターフェースを参照し、オブジェクトは、メディアサンプルと呼ばれる場合がある）と呼ばれるデータ構造にラッピングされる。多くの場合、IMediaSampleオブジェクトは、初期化時に固定サイズの割り当てに制約され、メディアコンテンツユニットのサイズに応じて、その全範囲に使用されない場合がある。リングバッファー４２０を以下で論述するように使用することによって、メディアのより効率的な使用が可能になる。
【００４１】
メモリー４３０は、プレゼンテーションシステム１００のオペレーティングシステムを介してアクセス可能な任意のコンピューター可読媒体（コンピューター可読媒体は、図７に関連して以下でさらに論述される）を表す。この任意のコンピューター可読媒体には、物理的に連続したスキャッターギャザーされたメモリー、仮想的にキャッシュ及びキャッシュ解除されるメモリー、（スキャッターギャザータイプ用に）物理的にロック及びロック解除されるメモリー、並びにリングバッファー４２０（以下でさらに論述される）による使用に最適化された仮想メモリーマッピングが含まれるが、これらに限定されるものではない。ハードウェア割り当てされたメモリーブロック４３２は、一定のアルゴリズム（一例示のアルゴリズムが、図５に関連して以下で図示及び論述される）に従ってｄｅｍｕｘ４０４（又はメディア処理パイプライン３０２又は３２０の他のコンポーネント）によるアクセス用にメディアソースリーダー４０２を介して及びPhysMemDataStructure API４１０等の一定のＡＰＩ４０８の使用を介して、別個に割り当てることができるブロックを有するとみなすことができるメモリー４３０の（任意のサイズ又は構成の）量又はエリアの抽象表現である。一例示の実施態様では、ハードウェア割り当てされたメモリーブロック４３２は、メディアソースリーダー４０２から取得された個々のメディアコンテンツユニット４０７が記憶されるブロックを有するリングバッファー４２０である。リングバッファー４２０を使用する利点は、データがトラックを介して読み出されるとき、特に、リングバッファー４２０が（例えば、光学式デバイスからの）読み出しオペレーションに対してパケット制約を一切課さないとき、いくつかのコンピューター可読媒体をより効率的に読み出すことができるということである。リングバッファー４２０を使用する別の利点は、トリックモードの場合に、データが通常よりも高速に（例えば、光学式デバイスから）読み出されるときである。フル復号を行うには必要とされないメディアコンテンツユニットのスキップ部分は、リングバッファーリーダーに組み込まれたチャンク機構（chunking mechanism）でより容易に達成される。リングバッファー４２０の他の詳細並びにその利点及びオペレーションは、図５に関連して以下でさらに論述される。
【００４２】
ｄｅｍｕｘ４０４は、入力ピン４１１においてメディアソースリーダー４０２の出力ピン４０１からメディアユニット４０７（図２に示す次の処理可能なメディアサンプル（複数可）２７０）及び／又はメディアユニット４０７に関連付けられるデータ構造を受信し、互換性のあるマルチプレクサーによって事前に結合された２つ以上の信号（メディアコンテンツの復号されたストリーム等）を分離するように応答する。メモリー（複数可）４３３は、ｄｅｍｕｘ４０４又は他のハードウェアコンポーネントによって使用可能なバッファー又はレジスター等の１つ又は複数のコンピューター可読媒体（コンピューター可読媒体は、図７に関連して以下でさらに論述される）を表す。ｄｅｍｕｘ４０４は、個々のメディアコンテンツストリーム（メディアコンテンツストリーム３０８又は３２８等）に関連付けられる、多重分離されたメディアサンプル４０９を出力ピン４２１において復号器／レンダラー４９０の入力ピン４９１に提供する。
【００４３】
復号器／レンダラー４９０は、論述のためメディアサンプル４０９と呼ばれる多重分離されたメディアユニット（例えば、ＭＰＥＧ−２サンプル）を受信し、多重分離されたメディアサンプルをスクランブル解除／暗号化解除するための一般に既知の技法を使用して、特定のメディアコンテンツストリーム３０８、３２８に関連付けられるメディアデータ１３２を生成することを担当する。メディアソース、デマルチプレクサー、及び復号器／レンダラーの間の１対１の関係が示されているが、任意の個数のこのようなコンポーネントを（付加的なコンポーネントと共に）任意に配列することが可能であること、及びこのようなコンポーネントは、メディア処理パイプライン１  ３０２とメディア処理パイプライン２  ３２０との間で共有することができることが理解されよう。
【００４４】
ＡＰＩ４０８は、メディア処理パイプライン内のソフトウェアコンポーネント及びハードウェアコンポーネントの相互運用性を高め、プレゼンテーションシステム１００のメモリー資源及び処理資源の効率的な使用を促進するために設けられる。一可能な実施態様では、ＡＰＩ４０８は、プレゼンテーションシステム１００の動作中に実行することができ且つ／又はメディア処理パイプライン３０６及び３２６の命令の作成者がアクセスすることができるコンピューター可読記憶媒体上に符号化されたコンピューター実行可能命令のセットである。一般に、ＡＰＩ４０８は、図５及び図６に関連して以下でさらに図示及び論述される方法（複数可）の態様を実行するように構成されている。
【００４５】
PhysMemDataStructure API４１０は、ｄｅｍｕｘ４０４及び復号器／レンダラー４９０等のハードウェアコンポーネントが直接消費することができるメモリー４３０のサポートを一般化するように構成されている。（例えば、ＤｉｒｅｃｔＳｈｏｗ（商標）フレームワークを有するメディア処理パイプラインのコンテキストでの）一可能な実施態様では、IMediaSampleオブジェクトにラッピングされたメディアユニット４０７が、（例えば、ｄｅｍｕｘ４０４の入力ピン４１１を使用して（出力ピン４０１は入力ピン４１１に問い合わせを行い、その結果、ｄｅｍｕｘ４０４は、ハードウェアによって使用可能な／必要とされる特性を有するメモリーを提供することができる））IMemAllocatorオブジェクトの一実施態様により、ハードウェア割り当てされたメモリーブロック４３２内の記憶ロケーションに割り当てられ、このような記憶ロケーションについての情報（メモリーのタイプ；メモリーブロックのサイズ；メモリーへのポインターのロケーション；及びメモリーへのポインターに対する特定のメディアユニットの記憶ロケーションのオフセットロケーション）が、PhysMemDataStructureAPI４１０によって、ｄｅｍｕｘ４０４及び復号器／レンダラー４９０等のハードウェアコンポーネントに公開される。ハードウェアコンポーネントは、それによって、命令及びプロセッサーサイクルを使用して情報をコピーするのではなく、（例えば、ダイレクトメモリーアクセス技法を介して）ハードウェア割り当てされたメモリーブロック４３２内の情報に直接アクセス／情報を直接取り出すことができる。
【００４６】
メディア処理パイプライン３０２、３２２及び／又はメディア処理コンポーネント３００６、３２６のコンテキストにおいてPhysMemDataStructureAPI４１０を実施するために使用可能な例示の疑似コードが以下に示される。
――――――――――――――――――――――――――――――――――――――
interface IPhysMemMediaSample : IUnknown
{
// S_OK==連続的な物理メモリー、S_FALSE スキャッター／ギャザー方法が必要とされる
HRESULT IsContigous();
// S_OK==キャッシュされたメモリー、S_FALSE キャッシュ解除
HRESULT IsCached();
// S_OK==メモリーがｄｍａオペレーションに備えて準備されている
//S_FALSE==メモリーはＤＭＡに備えてPageLock/Unlockを必要とする
HRESULT IsPageLocked();
// S_OK==仮想メモリーポインターは、リングバッファーサイズを超えるとき、物理バッファーの始点に折り返す。
【００４７】
// S_FALSE==折り返し無し
HRESULT IsAutoWrap();
// スキャッター／ギャザーテーブルのページサイズ
HRESULT PageSize(
[out] DWORD *pPageLength
);
// メモリーがロックされた後、スキャッター／ギャザーテーブルの構築を可能にする
HRESULT GetPhysicalPointer(
[in] DWORD offset,
[out] DWORD *pPhysAddress,
[out] DWORD *pLength
);
// メモリーがロックされた後、スキャッター／ギャザーテーブルの構築を可能にする
//
HRESULT GetScatterGatherTable(
[in] DWORD  size,
[out, size_is(size)] DWORD *pTable,
[out] DWORD *pEntries
);
// スキャッターギャザーテーブルを構築するのに必要とされるDWORDアレイのバイトサイズ
HRESULT GetScatterGatherTableSize(
[out] DWORD *pSize
);
// バッファーの物理ページをロック／ロック解除する
HRESULT PageLock();
HRESULT PageUnlock();
// キャッシュライトバック＆廃棄
// メディアサンプルバッファーからハードウェアへのｄｍａの前に使用する
HRESULT CacheSyncWriteback(
[in] DWORD offset,
[in] DWORD length
);
// キャッシュ廃棄／無効
//ハードウェアからメディアサンプルバッファーへのｄｍａの前に使用する
HRESULT CacheSyncDiscard(
[in] DWORD offset,
[in] DWORD length
);
};
――――――――――――――――――――――――――――――――――――――
Sniffer/Callback API４２２は、ｄｅｍｕｘ４０４によってパースされた一定のメディアサンプル４０９（例えば、高精細ＤＶＤ番組ストリームに多重化された「ＨＬＩ」パケット、「ＡＤＶ」パケット、及び「ＮＡＶ」パケット）並びに／又は復号器／レンダラー４９０によって復号／レンダリングされたメディアデータ１３２に対する、プレゼンテーションシステム１００のソフトウェアベースの要素によるアクセスを提供するのに使用される。一可能な実施態様では、ＤｉｒｅｃｔＳｈｏｗ（商標）フレームワークフィルターが、ｄｅｍｕｘ４０４の出力ピン４２１又は復号器／レンダラー４９０の出力ピン（図示せず）に接続され、このフィルターは、Sniffer/Callback API４２２をサポートするのに使用される。
【００４８】
メディア処理パイプライン３０２、３２２及び／又はメディア処理コンポーネント３０６、３２６のコンテキストにおいて一定のタイプのメディアサンプル４０９又はメディアデータ１３２を検出するSniffer/Callback APIを実施するために使用可能な例示の疑似コードが以下に示される。
――――――――――――――――――――――――――――――――――――――
HRESULT RegisterCallback(
[in] IRendererDataCallBack*  pCallBack
);
――――――――――――――――――――――――――――――――――――――
リターンの際、コールバックレンダラーは、
――――――――――――――――――――――――――――――――――――――
HRESULT Callback(
[in] IMediaSample*  pMediaSample
);
――――――――――――――――――――――――――――――――――――――
をコールする。
【００４９】
SyncHelper API４１６は、メディアコンテンツストリーム３０８と３２８との間で知覚される同期を維持するために使用可能な情報交換を容易にするように構成されている。GetDecodeTimes API４１８は、一定のメディアサンプル（例えば、次にプレゼンテーション可能なメディアサンプル２７０と考えられるメディアユニット４０７又はメディアサンプル４０９）がハードウェアコンポーネント（ｄｅｍｕｘ４０４又は１つ若しくは複数の復号器／レンダラー４９０等）によるプレゼンテーションに備えて準備されている時間に関連付けられる一定の時間（タイトル時間２０９及びメディアサンプルプレゼンテーション時間２０２等）についてのステータス通知を提供するように構成されている。特に、同期してプレゼンテーション可能なメディアサンプルを処理する異なった復号器／レンダラー（又は他のハードウェアコンポーネント）からGetDecodeTimes API４１８によって返されたタイトル時間２０９の差に基づいてタイミング信号３５０及び／又は３７０を調整するのに、SyncToSTC API４２０を介して提供された情報を使用することができる。
【００５０】
SyncHelper API４１６を実施するために使用可能な例示の疑似コードが以下に示される。
――――――――――――――――――――――――――――――――――――――
/*++
レンダラー上で実施される
ストリームを同期させ、ＰＴＳ時間及びＳＴＣ時間についての情報を提供するHelper関数
--*/
interface ISyncHelper : IUnknown
{
// 現在のＳＴＣ時間及びPTS_TIME_BASEチックで現在復号されているサンプルのＰＴＳを返す
//
HRESULT
GetDecodeTimes(
[out]  PTS_TIME*  ptSTC,           // 現在のＳＴＣ時間（グローバル）
[out]  PTS_TIME*  ptPTS            // 現在のＰＴＳ時間
);
//
// ２つのセッションを同期させる。サンプルをレンダリングするＳＴＣ時間からのずれのデルタを提供する。
【００５１】
//
HRESULT
SyncToSTC(
[in]  STC_IDENTIFIER stcToSyncTo,    // 同期するクロック
[in]  PTS_TIME   tDelta               // サンプルをレンダリングするＳＴＣからのずれのデルタ
);
};
――――――――――――――――――――――――――――――――――――――
図１〜図４の参照を続けて、図５及び図６は、１つ又は複数のＡＰＩ４０８によって提供される機能を使用して、１つ又は複数のメディア処理パイプライン（メディア処理パイプライン１  ３０２又はメディア処理パイプライン２  ３２０等）によるプレゼンテーションに備えてメディアコンテンツ（１つ又は複数のクリップ１２３の一部等）を準備する方法のフローチャートである。図５に示す方法は、情報が、ソフトウェアコンポーネント（メディアソースリーダー４０２又は別のソフトウェアコンポーネント等）によって使用されるメモリー（メモリー４３０等）と、ハードウェアコンポーネント（ｄｅｍｕｘ４０４若しくは復号器／レンダラー４９０又は他のハードウェアコンポーネント等）によって使用されるメモリー（メモリー４３３等）との間で転送されるときに使用される処理資源及び／又はメモリー資源を最小にするのに有用である。図６に示す方法は、同時に再生可能な複数のメディアコンテンツストリームの一部が、別個のハードウェアコンポーネントによるプレゼンテーションに備えて準備されるときに知覚される同期を維持するのに有用である。
【００５２】
図５及び図６に示すプロセスは、図７に関連して以下で論述するプロセッサー７０２等、１つ又は複数の一般的な多目的プロセッサー又は単一目的プロセッサーで実施することができる。特に指定のない限り、本明細書で説明する方法は、特定の順序にも特定のシーケンスにも制約されない。加えて、説明する方法又はその要素のいくつかは、同時に生起するか又は実行される可能性がある。
【００５３】
図５のフローチャートに示す方法を参照する。この方法は、ブロック５００において開始し、ブロック５０２に続く。ブロック５０２において、ハードウェア割り当てされたメモリーブロック４３２等の第１のメモリーの一部が、クリップ１２３の個々に再生可能な部分等のメディアコンテンツユニット（特定のメディアソース３０４から受信されたメディアユニット４０７等）を記憶するために識別される。特定のメディアコンテンツユニット及びそのメディアコンテンツユニットの第１のメモリーにおける記憶ロケーションを、ブロック５０４及び５０６においてそれぞれ識別する。
【００５４】
メディア処理パイプライン３０２、３２０のそれぞれのメディア処理コンポーネント３０６、３２６のコンテキストでは、ハードウェア割り当てされたメモリーブロック４３２は、メモリー資源及び処理資源の効率的な使用を高めるためにリングバッファー４２０として実施することができる。リングバッファー４２０は、メディアソースリーダー４０２（又はメディア処理パイプライン３０２又は３２０の他のコンポーネント）を介して別個に割り当てることができる、メディアユニット４０７を記憶するためのブロックを有するものとみなすことができる。リングバッファー４２０に記憶される各メディアユニット４０７のオフセットは判明しており、メモリー先頭（「ＢＯＭ」）ポインター４３５、メモリー終端（「ＥＯＭ」）ポインター４３７、使用済みメモリー先頭ポインター（「ＢＵＭＰ」）４５３、及び／又は使用済みメモリー終端ポインター（「ＥＵＭＰ」）４５５等、リングバッファー４２０内のロケーションへの１つ又は複数のポインターの値を基準として相対的に表すことができる。ｄｅｍｕｘ４０４又は別のハードウェアコンポーネントが、リングバッファー４２０からメディアユニット４０７を表すものを取得すると、ＢＵＭＰ４５３及び／又はＥＵＭＰ４５５は、それに応じて移動される場合がある。メディアユニット４０７は、バラバラの順序で取得及び解放される場合があるので、リングバッファー４２０内のメディアユニット４０７のオフセットのリストは、ＢＵＭＰ４５３及びＥＵＭＰが互いにバイパスすることが認められないことを確実にするように維持することができる。
【００５５】
メモリー使用効率及び処理効率をさらに高めるために、仮想メモリーを使用して、リングバッファー４２０の先頭からの１つ又は複数のメモリーブロックをリングバッファー４２０の終端に複製することができる。図示するように、複製ＢＯＭブロック４５０（メモリー先頭「ＢＯＭ」ブロックの複製４５０である）は、仮想メモリーを使用して実施され、論理的には、メモリー終端「ＥＯＭ」ブロック４４１の後に配置される。仮想メモリーのこの使用は、読み出しポインター及び書き込みポインターを有するリングバッファー形式で使用されるメモリーのより大きなブロックを分割するときに特に有用であるので、「オートラップ（auto-wrap）」機能と呼ばれる。オートラップ機能の使用はオプションである。一般に、ｄｅｍｕｘ４０４のプロバイダーは、２倍マッピングを行わないメモリーを提供する方を選ぶ可能性があり、メディア処理パイプラインは、それでも動作するが、メモリーの使用効率が悪くなるおそれがある。このようなリングバッファーの実施態様では、バッファーの先頭に「折り返す」メモリーの部分が特別な取り扱いを必要とし得る特殊な場合がある。例えば、折り返すメモリーの部分の情報をコピー又は別の方法で取得するには、２つのトランザクションが必要とされる場合がある。１つのトランザクションは、バッファーの終端の情報を取り出すことであり、もう１つのトランザクションは、バッファーの先頭の情報を取り出すことである。したがって、リングバッファーサイズをフルに活用することは、通例難しい。上述したような仮想メモリーを使用することによって、情報サイズが大きすぎてリングバッファーの終端に適合することができないときに、余分なメモリーを割り当てる必要性又はリングバッファーの終端にスキップする必要性（共に、その結果、メモリーの使用が非効率になる）のいずれかが回避される。
【００５６】
物理メモリー部分をダブルサイズの仮想メモリー領域に２倍マッピングする「オートラップ」機能を実施するために使用可能な例示のコード（Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）  ＣＥ  ６．０オペレーティングシステムソフトウェア用ではあるが、仮想メモリーを使用する任意のオペレーティングシステムを使用することができる）を以下に示す。
――――――――――――――――――――――――――――――――――――
// 物理メモリーをダブルサイズの仮想メモリー領域に２倍マッピングする
CallerProc = GetCallerProcess();
VirtualAddress = VirtualAllocEx(CallerProc, 0, Size*2, MEM_RESERVE, 
PAGE_NOACCESS);
VirtualCopyEx(CallerProc, VirtualAddress,
GetCurrentProcess(), (PVOID)(PhysicalAddress>>8), Size,
PAGE_PHYSICAL | PAGE_READWRITE | (Cached ? 0: PAGE_NOCACHE))）
VirtualCopyEx(CallerProc, (PBYTE) VirtualAddress+Size,
GetCurrentProcess(), (PVOID)(PhysicalAddress>>8), Size,
PAGE_PHYSICAL | PAGE_READWRITE | (Cached ? 0: PAGE_NOCACHE))
――――――――――――――――――――――――――――――――――――
図５のフローチャートを再び参照すると、ブロック５０８は、特定のメディアコンテンツユニットに関連付けられるデータ構造を形成するステップを示す。このデータ構造は、第１のメモリーにおけるメディアコンテンツユニットの記憶ロケーションについての情報を記憶するためのフィールドを有する。次に、ブロック５１０において、データ構造を、第２のメモリーを有するハードウェアコンポーネント（ｄｅｍｕｘ４０４又は復号器／レンダラー４９０等）に公開する。ブロック５１２において、ハードウェアコンポーネントは、メディアコンテンツユニットの記憶ロケーションについてのデータ構造の情報を使用して、中央処理装置なしで、第１のメモリーから第２のメモリーへメディアコンテンツユニットを直接転送することができることが分かる。
【００５７】
ＤｉｒｅｃｔＳｈｏｗ（商標）フレームワークを使用して実施されるメディア処理コンポーネント３０６、３２６のコンテキストでは、メディアソースリーダー４０２は、IMediaSampleObjects等のデータ構造を使用して、次の情報、すなわち、メモリー４３０及び／又はハードウェア割り当てされたメモリーブロック４３２へのポインター；メモリー４３０及び／又はハードウェア割り当てされたメモリーブロック４３２のサイズ；メディアユニット４０７の開始時間及び停止時間；フラグ（複数可）；並びに他の任意の所望の情報、のすべて又はいくつかを下流側のハードウェアコンポーネントに提供する。有利には、ｄｅｍｕｘ４０４（及び他のハードウェアコンポーネント）によるアクセスのためにメディアソースリーダー４０２によって割り当てられたリングバッファー４２０のメモリーブロックの特性に関する情報が、PhysMemDataStructure API４１０を介して公開される。この情報も、IMediaSampleObject等のデータ構造（又はそのフィールド）によって提供することができる。PhysMemDataStructure API４１０からｄｅｍｕｘ４０４及び他のハードウェアコンポーネントによって導出された物理メモリー情報は、リングバッファー４２０内の個々のメディアコンテンツユニット４０７の記憶ロケーションに直接アクセスするのに使用され、「ｍｅｍｃｏｐｙ」トランザクション等のプロセッサー集中型コピートランザクションの必要性が大幅に取り除かれる。PhysMemDataStructure API４１０を介して公開されるハードウェア割り当てされたメモリーブロック４３２の特性に関する情報は、メモリー４３２のタイプ；そのメモリーのメモリーブロックのサイズ；そのメモリーへの１つ又は複数のポインター４３７、４３５、４５３、又は４５５のロケーション；及びそのメモリーへの１つ又は複数のポインターに対する特定のメディアユニット４０７のオフセットロケーションを含むが、これらに限定されるものではない）。
【００５８】
図６のフローチャートに示す方法を参照する。この方法は、ブロック６００で開始し、ブロック６０２及び６０４に続く。ブロック６０２において、マルチメディアプレゼンテーションの再生継続時間が識別され、ブロック６０４において、メディアコンテンツストリーム３０８及びメディアコンテンツストリーム３２８等の別個のメディアコンテンツストリームとして再生可能な２つのクリップ（各クリップはそれ自身の再生継続時間を有する）が識別される。次に、第１のクリップからのメディアサンプル及び第２のクリップからのメディアサンプルの、同期してプレゼンテーション可能な２つのメディアサンプルを、ブロック６０６及び６０８においてそれぞれ識別する。
【００５９】
一般に、プレゼンテーションシステムのソフトウェアベースのコンポーネント（プレゼンテーションマネージャー１０６の態様等）は、現在再生可能なクリップ１２３に気付いている。メディア処理パイプライン３０２、３２０のそれぞれのメディア処理コンポーネント３０６、３２６のコンテキストでは、Sniffer/Callback API４２２を使用して、ｄｅｍｕｘ４０４及び／又は復号器／レンダラー４９０によって処理されている特定のメディアユニット４０７及び／又はメディアサンプル４０９を識別することが可能である。
【００６０】
ブロック６１０に示すように、一定の情報が第１の時間に確認される。この第１の時間は、第１のクリップからのメディアサンプルが、メディア処理パイプライン１  ３０２内でｄｅｍｕｘ４０４又は復号器／レンダラー４９０等の第１のハードウェアコンポーネントによるプレゼンテーションに備えた準備を受けているときに関連付けられるものである。次の情報、すなわち、デジタルメディアプレゼンテーションの再生継続時間の経過量、及び第１のクリップの再生継続時間の経過量を、ブロック６１０において確認する。
【００６１】
ブロック６１２に示すように、一定の情報が第２の時間に確認される。この第２の時間は、第２のクリップからのメディアサンプルが、メディア処理パイプライン２  ３２０内でｄｅｍｕｘ４０４又は復号器／レンダラー４９０等の第２のハードウェアコンポーネントによるプレゼンテーションに備えた準備を受けているときに関連付けられるものである。次の情報、すなわち、デジタルメディアプレゼンテーションの再生継続時間の経過量、及び第２のクリップの再生継続時間の経過量を、ブロック６１２において確認する。
【００６２】
図２に示すメディア例示メディアタイムラインに関連して上記で論述したように、再生継続時間の経過量は、多くの場合、タイトル時間（又はグローバルシステム時間）と呼ばれ、特定のクリップの再生継続時間の経過量は、一般に、特定のメディアサンプルに関連付けられる特定の所定のメディアサンプルプレゼンテーション時間２０２に対応する。GetDecodeTimes API４１８は、第１のクリップ及び第２のクリップの双方のメディアサンプル及び／又はメディアタイムライン１４２を検査し、ブロック６１０及び６１２において示された情報を返すように構成されている。
【００６３】
ブロック６１４において、ブロック６１０において計算されたデジタルメディアプレゼンテーションの再生継続時間の経過量とブロック６１２において計算されたデジタルメディアプレゼンテーションの再生継続時間の経過量との間の差を確認し、この差は、ブロック６１６に示すように、メディアサンプルを準備及び／又はプレゼンテーションするためのハードウェアコンポーネントのタイミングを調整するのに使用可能である。
【００６４】
メディア処理パイプライン３０２、３２０のそれぞれのメディア処理コンポーネント３０６、３２６のコンテキストでは、SyncToSTC API４２０は、GetDecodeTimes API４１８を介して取得された情報を使用して、処理時間並びに／又はタイミング信号３５０及び３７０等のタイミング信号に（ブロック６１４において確認された再生継続時間の経過量間の差に基づく）デルタを適用することにより、異なるハードウェアコンポーネントからのさまざまなメディアコンテンツストリームを同期させるように構成されている。SyncToSTC API４２０を使用して、（例えば、再生リストによって定義されたような）他のプレイバック制約を有するメディアコンテンツストリームを同期させることもできることが理解されよう。
【００６５】
図１〜図６の参照に続けて、図７は、プレゼンテーションシステム１００のすべて又は一部を実施又は使用することができる動作環境７００の一例示の構成のブロック図である。動作環境７００は、一般に、多種多様な汎用コンピューティング環境又は専用コンピューティング環境を示す。動作環境７００は、適した動作環境の一例にすぎず、本明細書で説明するシステム（複数可）及び方法の使用又は機能範囲に関して一切の制限を示唆することを意図するものではない。例えば、動作環境７００は、パーソナルコンピューター、ワークステーション、サーバー、ポータブルデバイス、ラップトップ、タブレット、若しくは現在既知の若しくは今後開発される光学式メディアプレイヤー若しくは別のタイプのメディアプレイヤー等の他の任意のタイプの電子デバイス、又はそれらの任意の態様等の或るタイプのコンピューターとすることができる。動作環境７００は、例えば、分散コンピューティングネットワーク又はウェブサービスとすることもできる。動作環境７００の特定の例は、ＤＶＤプレイヤー又はＤＶＤプレイヤーに関連付けられるオペレーティングシステム等の環境である。この環境によって、高精細ＤＶＤ映画の再生が容易になる。
【００６６】
図示するように、動作環境７００は、１つ又は複数のプロセッサー７０２、コンピューター可読媒体７０４、及びコンピュータープログラム７０６を含むコンピューティングユニットのコンポーネントを含むか又はこれらのコンポーネントにアクセスする。プロセッサー（複数可）７０２は、コンピューター可読媒体７０４及びコンピュータープログラム７０６に応答する。プロセッサー（複数可）７０２は、物理プロセッサー又は仮想プロセッサーとすることができ、アセンブリレベル、コンパイルされたレベル、又はマシンレベルの命令を実行して、特定のプロセスを実行することができる。このような命令は、ソースコード又は他の任意の既知のコンピュータープログラム設計ツールを使用して作成することができる。
【００６７】
コンピューター可読媒体７０４は、プロセッサー７０２によって実行可能な命令等、コンピューター可読データを記録、記憶、又は送信することができる、現在既知の又は今後開発される任意の形態の任意の個数のローカル又はリモートのデバイス及びそれらの組み合わせを表す。詳細には、コンピューター可読媒体７０４は、半導体メモリー（例えば、読み出し専用メモリー（「ＲＯＭ」）、任意のタイプのプログラマブルＲＯＭ（「ＰＲＯＭ」）、ランダムアクセスメモリー（「ＲＡＭ」）、又はフラッシュメモリー）；磁気記憶デバイス（フロッピー（登録商標）ディスクドライブ、ハードディスクドライブ、磁気ドラム、磁気テープ、又は光磁気ディスク等）；光学式記憶デバイス（任意のタイプのコンパクトディスク又はデジタル多用途ディスク等）；バブルメモリー；キャッシュメモリー；コアメモリー；ホログラフィックメモリー；メモリースティック；紙テープ；パンチカード；又はそれらの任意の組み合わせとすることもできるし、それらを含むこともできる。また、コンピューター可読媒体７０４は、伝送媒体及びそれに関連付けられるデータも含むことができる。伝送媒体／データの例には、変調された搬送波信号によって搬送されるパケット化データ又は非パケット化データ等、任意の形態の有線伝送又は無線伝送で具現化されたデータが含まれるが、これに限定されるものではない。
【００６８】
コンピュータープログラム７０６は、データに対する所定のオペレーションを電子制御する任意の信号処理方法又は記憶されている命令を表す。一般に、コンピュータープログラム７０６は、コンポーネントベースのソフトウェア開発の既知の慣行に従ってソフトウェアコンポーネントとして実施され且つコンピューター可読媒体（コンピューター可読媒体７０４等）に符号化されたコンピューター実行可能命令である。コンピュータープログラムは、さまざまな方法で結合することもできるし、分散させることもできる。
【００６９】
記憶装置７１４は、光ディスク又は他のポータブル（光ディスクは、オプションの光ディスクドライブ７１６によってハンドリングされる）等、特に動作環境７００に関連付けられる付加的な又は異なるコンピューター可読媒体を含む。１つ又は複数の内部バス７２０を使用して、動作環境７００若しくはその要素内で、動作環境７００若しくはその要素へ、又は動作環境７００若しくはその要素から、データ、アドレス、制御信号、及び他の情報を搬送することができる。内部バスは、既知であり且つ広く入手可能な要素である。
【００７０】
入力インターフェース（複数可）７０８は、コンピューティング環境７００に入力を提供する。入力は、ユーザーインターフェース等、任意のタイプの現在既知の又は今後開発されるインターフェースを使用して収集することができる。ユーザーインターフェースは、リモコン等のタッチ入力デバイス、ディスプレイ、マウス、ペン、スタイラス、トラックボール、キーボード、マイクロホン、スキャンデバイス、及びデータを入力するのに使用されるすべてのタイプのデバイスとすることができる。
【００７１】
出力インターフェース（複数可）７１０は、動作環境７００からの出力を提供する。出力インターフェース（複数可）７１０の例には、ディスプレイ、プリンター、スピーカー、ドライブ（光ディスクドライブ７１６及び他のディスクドライブ又は記憶媒体等）等が含まれる。
【００７２】
外部通信インターフェース（複数可）７１２は、動作環境７００が、チャネル信号、データ信号、又はコンピューター可読媒体等の通信媒体を介して、別のエンティティから情報を受信するか又は別のエンティティへ情報を送信する能力を高めるのに利用可能である。外部通信インターフェース（複数可）７１２は、関連付けられるネットワークサポートデバイス及び／若しくはソフトウェア又はインターフェースを伴った、ケーブルモデム、データ端末機器、メディアプレイヤー、データ記憶デバイス、携帯情報端末、又は他の任意のデバイス若しくはコンポーネント／それらの組み合わせ等の要素とすることもできるし、そのような要素を含むこともできる。
【００７３】
図８は、クライアント−サーバーアーキテクチャー８００の簡略化した機能図である。プレゼンテーションシステム１００又は動作環境７００は、このクライアント−サーバーアーキテクチャー８００に関連して使用することができる。プレゼンテーションシステム１００及び／又は動作環境７００の１つ又は複数の態様は、アーキテクチャー８００のクライアント側８０２又はアーキテクチャー８００のサーバー側８０４に表すことができる。図示するように、通信フレームワーク８０３（例えば、有線又は無線の任意のタイプの任意の公衆ネットワーク又はプライベートネットワークとすることができる）は、クライアント側８０２とサーバー側８０４との間の通信を容易にする。
【００７４】
クライアント側８０２において、１つ又は複数のクライアント８０６は、クライアントデータストア８０８に応答する。１つ又は複数のクライアント８０６は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実施することができる。クライアントデータストア８０８は、クライアント８０６にローカルな情報を記憶するのに用いられるコンピューター可読媒体７０４とすることができる。サーバー側８０４において、１つ又は複数のサーバー８１０は、サーバーデータストア８１２に応答する。クライアントデータストア８０８と同様に、サーバーデータストア８１２は、サーバー８１０にローカルな情報を記憶するのに用いられる１つ又は複数のコンピューター可読媒体７０４を含むことができる。
【００７５】
メディアコンテンツと同期してユーザーにインタラクティブコンテンツをプレゼンテーションするのに使用されるプレゼンテーションシステムのさまざまな態様を説明してきた。しかしながら、プレゼンテーションシステムの説明したコンポーネントのすべてを使用する必要はなく、また、複数のコンポーネントが、使用されるときに同時に存在しなければならないものでもないことが理解されよう。プレゼンテーションシステム１００のコンテキストでコンピュータープログラムであるとして説明した機能／コンポーネントは、コンピュータープログラムのいずれの特定の実施形態による実施にも限定されるものではない。それどころか、機能は、データを伝達又は変換するプロセスであり、一般に、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実施することもできるし、それらのハードウェア等で実行することもできる。
【００７６】
また、本明細書の主題を、構造的特徴及び／又は方法論的動作に特有の文言で説明してきたが、特許請求の範囲で定義される主題は、必ずしも、上述した特定の特徴にも動作にも限定されないことも理解されるであろう。それどころか、上述した特定の特徴及び動作は、特許請求の範囲を実施する例示の形態として開示されている。
【００７７】
さらに、或る要素が別の要素に応答するものとして示されているとき、これらの要素を直接又は間接的に結合することができることも理解されよう。本明細書で示した接続は、要素間の結合又は通信インターフェースを達成するために実際には論理的なものとすることもできるし、物理的なものとすることもできる。接続は、特に、ソフトウェアプロセス間のプロセス間通信又はネットワーク接続されたコンピューター間のマシン間通信として実施することができる。
【００７８】
「例示」という言葉は、本明細書では、一例、一インスタンス、又は一例証として機能することを意味するために使用される。本明細書で「例示」として説明した本発明の任意の実施態様又は態様は、必ずしも、本発明の他の実施態様又は態様よりも好ましいもの又は有利なものとして構成されているとは限らない。
【００７９】
添付の特許請求の範囲の精神及び範囲から逸脱することなく、上述した特定の実施形態以外の実施形態を考案することができることが理解されるので、本明細書の主題の範囲は添付の特許請求の範囲によって決定されることが意図されている。
【図１】
0005394375.tif 000002
【図２】
0005394375.tif 000003
【図３】
0005394375.tif 000004
【図４】
0005394375.tif 000005
【図５】
0005394375.tif 000006
【図６】
0005394375.tif 000007
【図７】
0005394375.tif 000008
【図８】
0005394375.tif 000009