(57)【要約】【課題】様々なマルチメディアソースからの様々な異なるフォーマットのマルチメディアデータへのアクセスを提供すること。【解決手段】マルチメディアソースと通信し、マルチメディアソースからのマルチメディアコンテンツを処理する少なくとも１つのアプリケーションを含むコンピューティングシステムは、マルチメディアコンテンツを処理するためにアプリケーションが要求することのできる基本マルチメディア情報を得るためのアプリケーションプログラミングインタフェース（ＡＰＩ）を含む。これにより、マルチメディアアプリケーションが、所定かつ標準の作法でＡＰＩから基本情報を容易に得ることが本発明によって可能となり、基本情報を得るためにアプリケーションに直接プログラムしなければならない機能が削減されてマルチメディアアプリケーションを作成するのに必要なコスト、時間、資源が削減される。【選択図】　　　　図２
2004038970.tif 000002
【特許請求の範囲】
【請求項１】
マルチメディアソースからのマルチメディアコンテンツを処理するように構成された少なくとも１つのアプリケーションに関連するコンピューティングシステムにおいて、識別し、基本マルチメディアソースおよびコンテンツ情報を前記アプリケーションに提供することにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理するのを容易にして、前記マルチメディアソースからの直接の基本情報を識別するように前記少なくとも１つのアプリケーションをプログラムすることを必要としない方法であって、
前記マルチメディアソースからのマルチメディアコンテンツにアクセスする動作と、
前記マルチメディアソースについての基本情報を識別するように構成されたマルチメディアソースインタフェースを提供する動作であって、前記マルチメディアソースインタフェースは、前記マルチメディアソースについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記マルチメディアコンテンツについての基本情報を識別するように構成されたマルチメディアコンテンツインタフェースを提供する動作であって、前記マルチメディアコンテンツインタフェースは、前記マルチメディアコンテンツについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と
を含むことを特徴とする方法。
【請求項２】
前記マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成されたマルチメディアプレゼンテーションインタフェースを提供する動作であって、前記マルチメディアプレゼンテーションインタフェースは、前記マルチメディアコンテンツの前記意図されるプレゼンテーションについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記マルチメディアコンテンツの前記意図されるプレゼンテーションについての前記基本情報は、意図されるプレゼンテーションに関するメタデータと、前記意図されるプレゼンテーションの持続時間と、前記意図されるプレゼンテーションに含めるべきメディアストリームを記述するストリーム記述子オブジェクトのうち少なくとも１つを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にするように構成されたマルチメディアストリームインタフェースを提供する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にすることには、前記アプリケーションが前記マルチメディアコンテンツのメディアタイプを変更することを可能にすることを含むことを特徴とする請求項４に記載の方法。
【請求項６】
マルチメディアソースイベントおよびマルチメディアコンテンツイベントをイベント管理キューで管理するように構成されたイベントマネージャインタフェースを提供する動作をさらに含み、前記イベントマネージャインタフェースがさらに、前記イベント管理キュー内のイベントを求める適正な関数呼出しを前記少なくとも１つのアプリケーションから受け取ったことに応答して、前記少なくとも１つのアプリケーションにオブジェクトを提供するように構成されることを特徴とする請求項１に記載の方法。
【請求項７】
前記オブジェクトにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理することが可能となることを特徴とする請求項６に記載の方法。
【請求項８】
マルチメディアソースからのマルチメディアコンテンツを処理するように構成された少なくとも１つのアプリケーションに関連するコンピューティングシステムにおいて、識別し、基本マルチメディアソースおよびコンテンツ情報を前記アプリケーションに提供することにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理するのを容易にして、前記マルチメディアソースから直接の基本情報を識別するように前記少なくとも１つのアプリケーションをプログラムすることを必要としない方法であって、
前記マルチメディアソースからのマルチメディアコンテンツにアクセスする動作と、
前記マルチメディアソースについての基本情報を識別し、前記マルチメディアソースについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記マルチメディアコンテンツについての基本情報を識別し、前記マルチメディアコンテンツについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記少なくとも１つのアプリケーションから、前記マルチメディアコンテンツの処理を可能にするために要求されるイベントを求める関数呼出しを受け取る動作と、
前記要求されるイベントに関連するオブジェクトを前記少なくとも１つのアプリケーションに返す動作であって、前記オブジェクトにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理することが可能となる動作とを含むことを特徴とする方法。
【請求項９】
前記マルチメディアコンテンツについての前記基本情報は、前記メディアコンテンツに含まれるメディアストリームの持続時間と、前記メディアストリームについての固有識別子と、前記メディアストリームのサイズと、前記メディアストリームに割り当てられた開始時間および停止時間と、前記メディアストリームがサポートする利用可能なメディアタイプのうち少なくとも１つを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記マルチメディアソースについての前記基本情報は、前記マルチメディアソースがプッシュソースであるか、プルソースであるか、それともライブソースであるかを示す情報と、前記マルチメディアソースがデータを送信することができるビットレートに関する情報と、前記マルチメディアソースが前記データを送信することができるフォーマットと、マルチメディアコンテンツをシークおよび休止するために前記マルチメディアソースによって提供される機能と、前記マルチメディアソースが前記マルチメディアコンテンツをタイムスタンプするクロックを含むか否かを示す情報と、前記マルチメディアソースが一度に複数のデータストリームを送信することができるか否かを示す情報のうち少なくとも１つを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記要求されるイベントは、マルチメディアソースイベントまたはマルチメディアコンテンツイベントであることを特徴とする請求項８に記載の方法。
【請求項１２】
前記要求されるイベントは、マルチメディアコンテンツが前記コンピューティングシステムで受信されたことを示すイベント、マルチメディアコンテンツのフォーマット変更が行われたことを示すイベント、前記マルチメディアコンテンツに含まれるメディアストリームの終了を示すイベント、前記マルチメディアコンテンツに含まれるメディアストリームがシークされていることを示すイベント、および前記マルチメディアコンテンツに関連するタイムスタンプを示すイベントのうち１つを含むマルチメディアソースイベントであることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記要求されるマルチメディアソースイベントに関連する前記オブジェクトは、前記マルチメディアコンテンツの位置および属性を識別するオブジェクト、前記マルチメディアコンテンツの新しいフォーマットを識別するオブジェクトのうち１つを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記要求されるイベントは、前記メディアソースからのマルチメディアコンテンツの受信の開始または停止を示すイベント、マルチメディアを求めて前記メディアソースがシークされたことを示すイベント、新しいプレゼンテーションが利用可能であることを示すイベント、現プレゼンテーションで新しいストリームが利用可能であることを示すイベント、現プレゼンテーションの終了を示すイベント、利用可能な新しいメタデータを現プレゼンテーションが有することを示すイベント、およびマルチメディアコンテンツを前記メディアソースから受信する速度の変化を示すイベントのうち１つを含むマルチメディアコンテンツイベントであることを特徴とする請求項１１に記載の方法。
【請求項１５】
前記要求されるマルチメディアコンテンツイベントに関連する前記オブジェクトは、意図されるプレゼンテーションのメディアストリームを活動化および非活動化するオブジェクト、シークされるマルチメディアコンテンツの時間を識別するオブジェクト、新しいプレゼンテーションを自動的に開始するオブジェクト、現プレゼンテーションが終了した後に新しいプレゼンテーションを開始するオブジェクト、前記マルチメディアコンテンツをバッファリングするオブジェクト、および前記プレゼンテーションに関連するメタデータ状態をリフレッシュするオブジェクトのうち１つを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記要求されるイベントが要求されたときに、前記要求されるイベントは前記イベント管理キューに存在しないことを特徴とする請求項８に記載の方法。
【請求項１７】
前記要求されるイベントに関連する前記オブジェクトを返す前に、前記要求されるイベントが前記イベントキューに配置されるまで待機する動作をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
マルチメディアソースからのマルチメディアコンテンツを処理するように構成された少なくとも１つのアプリケーションに関連するコンピューティングシステムにおいて、識別し、基本マルチメディアソースおよびコンテンツ情報を前記アプリケーションに提供することにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理するのを容易にして、前記マルチメディアソースから直接の基本情報を識別するように前記少なくとも１つのアプリケーションをプログラムすることを必要としない方法であって、
前記マルチメディアソースおよび前記マルチメディアコンテンツについての基本情報を取得し、前記少なくとも１つのアプリケーションが利用できるようにするステップと、
前記マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成されたマルチメディアプレゼンテーションインタフェースを提供する動作であって、前記マルチメディアプレゼンテーションインタフェースは、前記マルチメディアコンテンツの前記意図されるプレゼンテーションについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にするように構成されたマルチメディアストリームインタフェースを提供する動作と、
マルチメディアソースイベントおよびマルチメディアコンテンツイベントをイベント管理キューで管理するように構成されたイベントマネージャインタフェースを提供する動作であって、前記イベントマネージャインタフェースがさらに、前記イベント管理キュー内のイベントを求める適正な関数呼出しを前記少なくとも１つのアプリケーションから受け取ったことに応答して、前記少なくとも１つのアプリケーションにオブジェクトを提供するように構成される動作と
を含むことを特徴とする方法。
【請求項１９】
前記基本情報を取得して利用できるようにするステップは、前記少なくとも１つのアプリケーションで処理することができる前記マルチメディアソースからのマルチメディアコンテンツにアクセスする動作を含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記基本情報を取得して利用可能にするステップは、前記マルチメディアソースについての基本情報を識別するように構成されたマルチメディアソースインタフェースを提供する動作を含み、前記マルチメディアソースインタフェースは、前記マルチメディアソースについての前記基本情報を前記少なくとも１つのアプリケーションに提供することを特徴とする請求項１８に記載の方法。
【請求項２１】
前記マルチメディアソースについての前記基本情報は、前記マルチメディアソースがプッシュソースであるか、プルソースであるか、それともライブソースであるかを示す情報と、前記マルチメディアソースがデータを送信することができるビットレートに関する情報と、前記マルチメディアソースが前記データを送信することができるフォーマットと、マルチメディアコンテンツをシークおよび休止するために前記マルチメディアソースによって提供される機能と、前記マルチメディアソースが前記マルチメディアコンテンツをタイムスタンプするクロックを含むか否かを示す情報と、前記マルチメディアソースが一度に複数のデータストリームを送信することができるか否かを示す情報のうち少なくとも１つを含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記基本情報を取得し、利用可能にするステップは、前記マルチメディアコンテンツについての基本情報を識別するように構成されたマルチメディアコンテンツインタフェースを提供する動作を含み、マルチメディアコンテンツインタフェースは、前記マルチメディアコンテンツについての前記基本情報を前記少なくとも１つのアプリケーションに提供することを特徴とする請求項１８に記載の方法。
【請求項２３】
前記マルチメディアコンテンツについての前記基本情報は、前記メディアコンテンツに含まれるメディアストリームの持続時間と、前記メディアストリームについての固有識別子と、前記メディアストリームのサイズと、前記メディアストリームに割り当てられた開始時間および停止時間と、前記メディアストリームがサポートする利用可能なメディアタイプのうち少なくとも１つを含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記オブジェクトにより、前記少なくとも１つのアプリケーションが、前記マルチメディアデータにアクセスし、または前記マルチメディアデータを処理することが可能となることを特徴とする請求項１８に記載の方法。
【請求項２５】
マルチメディアソースからのマルチメディアコンテンツを処理するように構成された少なくとも１つのアプリケーションに関連するコンピューティングシステムにおいて、前記アプリケーションを識別し、基本マルチメディアソース／コンテンツ情報を前記アプリケーションに提供することにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理するのを容易にして、前記マルチメディアソースから直接の基本情報を識別するように前記少なくとも１つのアプリケーションをプログラムすることを必要としない方法であって、
前記マルチメディアソースからのマルチメディアコンテンツにアクセスする動作と、
前記マルチメディアソースについての基本情報を識別するように構成されたマルチメディアソースインタフェースを提供する動作であって、前記マルチメディアソースインタフェースは、前記マルチメディアソースについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記マルチメディアコンテンツについての基本情報を識別するように構成されたマルチメディアコンテンツインタフェースを提供する動作であって、前記マルチメディアコンテンツインタフェースは、前記マルチメディアコンテンツについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成されたマルチメディアプレゼンテーションインタフェースを提供する動作であって、前記マルチメディアプレゼンテーションインタフェースは、前記マルチメディアコンテンツの前記意図されるプレゼンテーションについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
少なくとも１つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にするように構成されたマルチメディアストリームインタフェースを提供する動作と、
マルチメディアソースイベントおよびマルチメディアコンテンツイベントをイベント管理キューで管理するように構成されたイベントマネージャインタフェースを提供する動作であって、前記イベントマネージャインタフェースがさらに、前記イベント管理キュー内のイベントを求める適正な関数呼出しを前記少なくとも１つのアプリケーションから受け取ったことに応答して、前記少なくとも１つのアプリケーションにオブジェクトを提供するように構成され、前記オブジェクトにより、前記少なくとも１つのアプリケーションが前記マルチメディアデータにアクセスし、または前記マルチメディアデータを処理することが可能となる動作とを含むことを特徴とする方法。
【請求項２６】
前記意図されるプレゼンテーションについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作は、マルチメディアプレゼンテーションオブジェクトを作成するステップを含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記マルチメディアプレゼンテーションオブジェクトは、前記意図されるプレゼンテーションに対応する前記マルチメディアコンテンツについてのメタデータと、前記プレゼンテーションの持続時間と、前記プレゼンテーションに対応するマルチメディアストリームに対応する情報を含むストリーム記述子オブジェクトのうち少なくとも１つを含むことを特徴とする請求項２６に記載の方法。
【請求項２８】
各ストリーム記述子オブジェクトは、各マルチメディアストリームについての固有識別子と、各メディアストリームについての開始時間および停止時間と、各ストリームの持続時間と、各ストリームがサポートするすべてのメディアタイプの識別のうち少なくとも１つを含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記マルチメディアコンテンツは複数のメディアタイプをサポートし、前記アプリケーションが好ましいメディアタイプを選択することを可能にする動作をさらに含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記複数のメディアタイプは、ＷＡＶオーディオタイプ、ＡＵオーディオタイプ、およびＭＩＤＩオーディオタイプのうち少なくとも１つを含むオーディオメディアタイプを含むことを特徴とする請求項２９に記載の方法。
【請求項３１】
前記複数のメディアタイプは、ＪＰＥＧ、ＧＩＦ、およびＴＩＦＦのうち少なくとも１つを含むイメージメディアタイプを含むことを特徴とする請求項２９に記載の方法。
【請求項３２】
前記複数のメディアタイプは、ＡＶＩ、ＡＳＦ、ＭＰＥＧ、ＭＰ３、Ａｃｔｉｖｅ　Ｍｏｖｉｅ、Ｃｉｎｅｐａｑ、ＱｕｉｃｋＴｉｍｅ、およびＩｎｄｅｏのうち少なくとも１つを含むメディアストリーミングフォーマットを含むことを特徴とする請求項２９に記載の方法。
【請求項３３】
少なくとも１つのアプリケーションに関連するコンピューティングシステムで使用するためのコンピュータプログラム製品であって、前記少なくとも１つのアプリケーションが、前記コンピューティングシステムに関連するマルチメディアソースからのマルチメディアコンテンツを処理するように構成され、前記コンピュータプログラム製品が、識別し、基本マルチメディアソースおよびコンテンツ情報を前記アプリケーションに提供することにより、前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツを処理するのを容易にして、前記マルチメディアソースから直接の基本情報を識別するように前記少なくとも１つのアプリケーションをプログラムすることを必要としない方法を実装するように構成され、
前記マルチメディアソースからのマルチメディアコンテンツにアクセスする動作と、
前記マルチメディアソースについての基本情報を識別するように構成されたマルチメディアソースインタフェースを提供する動作であって、前記マルチメディアソースインタフェースは、前記マルチメディアソースについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と、
前記マルチメディアコンテンツについての基本情報を識別するように構成されたマルチメディアコンテンツインタフェースを提供する動作であって、前記マルチメディアコンテンツインタフェースは、前記マルチメディアコンテンツについての前記基本情報を前記少なくとも１つのアプリケーションに提供する動作と
を備えた方法を実装するコンピュータ実行可能命令が格納された１つまたは複数のコンピュータ読取可能な媒体を備えたことを特徴とするコンピュータプログラム製品。
【請求項３４】
前記１つまたは複数のコンピュータ読取可能な媒体は、システムメモリを含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項３５】
前記マルチメディアコンテンツは、ストリームマルチメディアデータを含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項３６】
前記マルチメディアコンテンツは、オーディオデータとビデオデータの少なくともいずれかを含むことを特徴とする請求項３５に記載のコンピュータプログラム製品。
【請求項３７】
前記マルチメディアコンテンツは、オーディオデータとビデオデータの前記少なくともいずれかを用いて送られるメタデータを含むことを特徴とする請求項３６に記載のコンピュータプログラム製品。
【請求項３８】
前記コンピューティングシステムは、インターネットを介して前記マルチメディアソースからの前記マルチメディアコンテンツにアクセスすることを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項３９】
前記マルチメディアソースは、ＤＶＤを含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項４０】
前記マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成されるマルチメディアプレゼンテーションインタフェースを提供する動作を実行するコンピュータ実行可能命令をさらに含み、前記マルチメディアプレゼンテーションインタフェースは、前記マルチメディアコンテンツの前記意図されるプレゼンテーションについての基本情報を前記少なくとも１つのアプリケーションに提供することを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項４１】
前記少なくとも１つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にするように構成されたマルチメディアストリームインタフェースを提供する動作を実施するコンピュータ実行可能命令をさらに含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項４２】
イベント管理キュー内のマルチメディアソースイベントおよびマルチメディアコンテンツイベントを管理するように構成されるイベントマネージャインタフェースを提供する動作を実行するコンピュータ実行可能命令をさらに含み、前記イベントマネージャインタフェースがさらに、前記少なくとも１つのアプリケーションから前記イベントキュー内のイベントを求める適正な関数呼出しを受け取ったとき、前記少なくとも１つのアプリケーションにオブジェクトを提供するように構成されることを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項４３】
前記基本情報は、フォーマットに無関係なデータを含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項４４】
前記基本情報は、フォーマット特有のデータを含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、様々なマルチメディアソースからの様々な異なるフォーマットのマルチメディアデータにアクセスする方法、システム、およびコンピュータプログラム製品に関する。
【０００２】
【従来の技術】
コンピュータ革命の到来は、マルチメディアコンテンツ（例えばビデオデータやオーディオデータ）を記録および編集する能力に多大な影響を及ぼした。例えば、現在ではマルチメディアコンテンツをデジタルフォーマットの形で記録して、圧縮される記憶媒体上に格納することができ、それによって所望のマルチメディアコンテンツを得るために以前必要であったコストやスペースが削減された。デジタルマルチメディアコンテンツを記憶することができる圧縮される記憶媒体の例には、例えばコンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、ＭＰ３ディスク、コンピュータのハードディスクドライブ、フロッピィ（登録商標）ディスク、スマートメディアカード、およびコンパクトフラッシュ（登録商標）カードが含まれる。
【０００３】
マルチメディアコンテンツをデジタル化することの１つの利点は、デジタルフォーマットの形でアナログフォーマットよりも高い品質でマルチメディアコンテンツを同報通信し、レンダリングすることができることである。デジタルマルチメディアをキャプチャおよびレンダリングするのに使用される装置および記憶媒体はまた、同じマルチメディアをアナログフォーマットの形でキャプチャおよびレンダリングするのに必要な装置および記憶媒体よりも一般に小さい。マルチメディアコンテンツをデジタル化することのさらに別の利点は、一般に、デジタルデータを索引付けして、アナログデータよりも迅速にアクセスできることである。
【０００４】
マルチメディアコンテンツはデジタル化することによってより有利に扱えることから、マルチメディアコンテンツをキャプチャ、編集、およびレンダリングすることができるデジタル装置およびマルチメディアアプリケーションに対する要求が高まった。したがって、コンピュータ業界では、この要求の高まりに対応して改良型の装置およびアプリケーションが開発されている。
【０００５】
しかし、マルチメディアコンテンツ用の改良型のアプリケーションを提供することにより生じる根本的な問題は、デジタルデータを符号化して伝送するために使用される多数の異なるタイプのフォーマット、規格、およびプロトコルが存在するということである。様々なフォーマット規格の例には、例えばＭＰＥＧ（Ｍｏｖｉｎｇ　Ｐｉｃｔｕｒｅ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）、ＡＳＦ（Ａｄｖａｎｃｅｄ　Ｓｔｒｅａｍｉｎｇ　Ｆｏｒｍａｔ）、ＡＶＩ（Ａｕｄｉｏ　Ｖｉｄｅｏ　Ｉｎｔｅｒｌｅａｖｅ）、Ａｃｔｉｖｅ　Ｍｏｖｉｅ、Ｃｉｎｅｐａｑ、ＱｕｉｃｋＴｉｍｅ、Ｉｎｄｅｏ、ＡＴＶＥＦ（Ａｄｖａｎｃｅｄ　Ｔｅｌｅｖｉｓｉｏｎ　Ｅｎｈａｎｃｅｍｅｎｔ　Ｆｏｒｕｍ）、およびＡＴＳＣ（Ａｄｖａｎｃｅｄ　Ｔｅｌｅｖｉｓｉｏｎ　Ｓｙｓｔｅｍｓ　Ｃｏｍｍｉｔｔｅｅ）が含まれる。
【０００６】
様々なプロトコルおよび言語の例には、ＲＴＳＰ（Ｒｅａｌ−Ｔｉｍｅ　Ｓｔｒｅａｍｉｎｇ　Ｐｒｏｔｏｃｏｌ）、ＲＴＰ（Ｒｅａｌ−Ｔｉｍｅ　Ｐｒｏｔｏｃｏｌ）、ＲＴＣＰ　（Ｒｅａｌ−Ｔｉｍｅ　Ｃｏｎｔｒｏｌ　Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ　Ｔｒａｎｓｐｏｒｔ　Ｐｒｏｔｏｃｏｌ）、ＭＭＳ（Ｍｉｃｒｏｓｏｆｔ　Ｍｅｄｉａ　Ｓｅｒｖｅｒ）、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ　Ｃｏｎｔｒｏｌ　Ｐｒｏｔｏｃｏｌ）、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅＭａｒｋｕｐ　Ｌａｎｇｕａｇｅ）、およびＳＭＩＬ（Ｓｙｎｃｈｒｏｎｉｚｅｄ　Ｍｕｌｔｉｍｅｄｉａ　Ｉｎｔｅｇｒａｔｉｏｎ　Ｌａｎｇｕａｇｅ）が含まれる。
【０００７】
限定はしないが、テレビジョン放送局、ケーブル局、ラジオ局、ＣＤ、ＤＶＤ、コンピュータのハードドライブ、インターネット、ＭＰ３プレーヤなどを含む多数の異なるマルチメディアソースも存在する。これらの様々なマルチメディアソースはそれぞれ、マルチメディアコンテンツにアクセスしてそれを処理するのに使用するマルチメディアアプリケーションに、様々な方法でマルチメディアコンテンツを提示する。それにより、様々な異なるフォーマット、規格、およびプロトコルを解釈するようにマルチメディアアプリケーションを構成することが必要となる。
【０００８】
【発明が解決しようとする課題】
したがって、マルチメディアフォーマット、規格、およびプロトコルが極めて多様であるため、マルチメディアコンテンツを提示するのに使用することができる様々な規格、プロトコル、言語、および要件に対処することができるマルチメディアアプリケーションを作成しなければならずプログラマにとり負担となる。しかし、マルチメディアアプリケーションをこのように個々にプログラムすることは非効率であり、特に複数のアプリケーションで単一のコンピューティングシステムが構成され、各アプリケーションをマルチメディアコンテンツの一定の基本的な情報を解釈するようにプログラムしなければならないときは特に非効率である。例えば、各アプリケーションがマルチメディアコンテンツの持続時間、マルチメディアコンテンツのフォーマット、マルチメディアコンテンツ内に存在するデータのタイプなどをそれぞれ判定することが必要となる可能性がある。
【０００９】
マルチメディアコンテンツに関する基本情報を個々に判定するように様々なアプリケーションをそれぞれプログラムするために、重複した労力が必要となる。さらに、そのようにプログラムすることは、マルチメディアアプリケーションを個々にプログラムするのに必要な時間、コスト、および資源を浪費することから望ましくない。したがって、各マルチメディアアプリケーションが直接的にマルチメディアコンテンツの特徴を個々に解釈および判定することを必要とせずに、マルチメディアデータにアクセスしてそれを処理することを可能にする改良された方法が本技術分野で求められている。
【００１０】
【課題を解決するための手段】
本発明は主に、マルチメディアアプリケーションがマルチメディアデータにアクセスしてそれを処理するのを容易にし、より具体的には、アプリケーションがマルチメディアデータに関する基本情報を得るのを容易にする改良された方法、システム、およびコンピュータプログラム製品を対象とする。
【００１１】
本発明の一実施形態によれば、コンピューティングシステムが、マルチメディアコンテンツを有する少なくとも１つのマルチメディアソースにアクセスし、その結果、コンピューティングシステムに関連する１つまたは複数のアプリケーションによってマルチメディアコンテンツを処理することができる。このコンピューティングシステムは、限定はしないがコンピュータ、ＤＶＤプレーヤ、およびプログラム可能ビデオレコーダ（ＰＶＲ）を含むことができる。マルチメディアコンテンツは、限定はしないがオーディオデータやビデオデータを含むことができる。一例として、アプリケーションは、限定はしないがマルチメディアコンテンツをオーサリングし、編集し、再生することを含む所定の作法でマルチメディアコンテンツを処理するように構成される。
【００１２】
本発明の一態様によれば、アプリケーションは、マルチメディアコンテンツを処理するのに必要となる可能性のある、マルチメディアソースおよびマルチメディアコンテンツに関する基本情報をマルチメディアソースから直接得るのではなく、メディアソースアプリケーションプログラミングインタフェース（ＡＰＩ）から得る。これにより、マルチメディアアプリケーションを作成するためのプログラミング要件が大幅に削減される。具体的には、様々なフォーマットで提示される可能性のある基本マルチメディア情報を各アプリケーションが解釈および取得できるようにするためにコードを重複して用いてアプリケーションをプログラムする必要がない。これに代えて、本発明によれば、アプリケーションは、標準的かつ所定の方法でメディアソースＡＰＩから基本マルチメディア情報を容易に得ることができ、それによって、マルチメディアコンテンツを処理するためにアプリケーションが実施する必要のある作業が簡潔になる。
【００１３】
一実施形態によれば、基本情報は、フォーマットに無関係なデータ（ｆｏｒｍａｔ−ａｇｎｏｓｔｉｃ　ｄａｔａ）とフォーマット特有のデータを共に含むことができる。しかし、メディアソースＡＰＩによってアプリケーションが基本情報を使用できるようになっても、依然としてアプリケーション自体でフォーマット特有の情報を得るようにアプリケーションをプログラムすることができることが理解されよう。
【００１４】
メディアソースＡＰＩによって得ることができ、および使用できるようにされる基本マルチメディア情報の例には、限定はしないが、下記でより詳細に説明するように、マルチメディアプレゼンテーションの持続時間、プレゼンテーション内の個々のストリームの持続時間、プレゼンテーション内のストリーム数、各ストリームがサポートするメディアタイプ、ならびにプレゼンテーション内の各ストリームに関連する開始時間および停止時間が含まれる。
【００１５】
本発明の別の態様によれば、メディアソースＡＰＩは、マルチメディアソースイベントおよびマルチメディアコンテンツイベントを待ち行列化する１つまたは複数のイベントキューテーブルを管理するように構成される。これにより、コンピューティングシステムのアプリケーションは、イベントキューテーブル内に入れられた（または入れられる可能性のある）イベントを求めてメディアソースＡＰＩに関数呼出しを発行することが可能となる。イベントキューの利点の一つは、単一の関数呼出しがいくつかのイベントを生成できこと、すなわちイベントキューが、現呼出しが完了するまでイベントの処理を延期する手段を提供することである。通常、メディアソースは、処理されるまでイベントキューに追加されるイベントを生成する。イベントは、いつでもキューに追加することができ、アプリケーションの処理中であっても追加することができる。
【００１６】
アプリケーションから適切なイベント要求を受け取ったとき、メディアソースＡＰＩは、要求されたイベントに関連するオブジェクトを要求側アプリケーションに返す。要求されたイベントが待ち行列化されない場合、イベントが待ち行列化されるまで要求は保留状態となる。アプリケーションに返されるオブジェクトは、限定はしないが、下記でより詳細に説明するように、マルチメディアコンテンツに関する基本情報、マルチメディアコンテンツを提示することに関するプレゼンテーション情報、プレゼンテーションを開始するためのコマンド、およびマルチメディアコンテンツを提示する方法全体を制御することを可能にするコマンドを含むことができる。このような制御を使用して、いくつかのメディアストリームおよびいくつかのメディアタイプを同時に管理することができる。
【００１７】
本発明の追加の特徴および利点を下記で説明する。本発明の追加の特徴および利点の一部はその説明から明らかとなり、または本発明を実施することによって理解することができよう。本発明の特徴および利点は、特許請求の範囲で具体的に指摘される各機器と、各機器の組合せによって理解され取得することができる。本発明の上記およびその他の特徴は、下記の説明と特許請求の範囲からより完全に明らかとなり、または下記で説明する本発明を実施することによって理解することができよう。
【００１８】
本発明の上記で列挙した利点やその他の利点を得る方法を説明するために、添付の図面に示される本発明の特定の実施形態を参照しながら、上記で簡潔に説明した本発明のより具体的な説明を行う。これらの図面は本発明の典型的な実施形態だけを示しており、したがって本発明の範囲を限定するものとみなすべきでないことを理解した上で、添付の図面を使用することにより、本発明をさらに具体的、詳細に説明する。
【００１９】
【発明の実施の形態】
本発明は、様々なマルチメディアソースから発信されるマルチメディアコンテンツにアプリケーションがアクセスし、それを処理するのを容易にする方法、システム、およびコンピュータプログラム製品まで及ぶ。本発明の一態様によれば、コンピューティングシステムは、マルチメディアソースとそれに含まれるマルチメディアコンテンツについての基本情報を得るように構成されたアプリケーションプログラミングインタフェース（ＡＰＩ）を含む。
【００２０】
基本情報を得た後、コンピューティングシステムに関連する任意の数のアプリケーションが、本発明のメディアソースＡＰＩを介して基本情報を使用できるようになる。このようにして、メディアソースＡＰＩを理解するアプリケーションは、マルチメディアソースから情報を直接得るのに必要となる再プログラミングをほとんどまたは全くせずに、基本マルチメディア情報にアクセスしてそれを使用し、マルチメディアコンテンツを処理することができる。
【００２１】
以上により、マルチメディアアプリケーションを作成するのに必要となる時間、コスト、および資源を削減できることを当業者は（本詳細な説明を読む際に）理解するであろう。具体的には、マルチメディア情報を提示することができる様々な異なるメディアフォーマットの形のマルチメディアソースから直接的に基本マルチメディア情報を解釈および取得するようにマルチメディアアプリケーションをプログラムする必要がない。
【００２２】
本発明の実施形態は、下記でより詳細に説明するように、様々なコンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを有することができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を搬送し、あるいはそれが格納されたコンピュータ読取可能な媒体も含む。このようなコンピュータ読取可能な媒体は、汎用コンピュータまたは専用コンピュータでアクセスすることができる入手可能ないかなる媒体とすることができる。例えば、限定はしないがこのようなコンピュータ読取可能な媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスクストレージ、磁気ディスクストレージまたはその他の磁気記憶装置などの物理的記憶媒体、あるいはコンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を搬送または記憶するのに使用することができ、および汎用コンピュータまたは専用コンピュータでアクセスすることができるその他のいかなる媒体をも含むことができる。
【００２３】
ネットワークまたは他の通信接続（ハードワイヤード、ワイヤレス、あるいはハードワイヤードまたはワイヤレスの組合せ）を介して情報がコンピュータに転送または提供されるとき、コンピュータは、その接続をコンピュータ読取可能な媒体として適切に認識する。したがって、そのようないかなる接続もコンピュータ読取可能な媒体と正式に呼ばれる。上記の組合せもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。コンピュータ実行可能命令は例えば、ある機能または１群の機能を汎用コンピュータ、専用コンピュータ、または専用処理装置に実施させる命令およびデータを含む。
【００２４】
図１とそれに対応する議論により、本発明が動作することのできるネットワーク１００およびコンピューティングシステム１１０を一般的に説明する。一実施形態では、本発明は、ディスプレイ装置１１４やオーディオシステム１１６などのマルチメディアレンダリング装置に関連するコンピューティングシステム１１０を含むネットワーク１００として実装される。その他のレンダリング装置を含むリモートコンピュータ１６０もまた、コンピューティングシステム１１０と通信することができる。
【００２５】
一実施形態によれば、コンピューティングシステム１１０は、コンピュータ、ＰＶＲ、ＤＶＤプレーヤ、あるいは本明細書で開示されるオペレーションを実施するように適合されたその他のいかなる装置とすることができる。コンピューティングシステムをディスプレイ装置１１４と一体的に配置することもでき、またはディスプレイ装置１１４と別々に配置することもできる。ディスプレイ装置１１４は、高精細度テレビジョンディスプレイ、標準型テレビジョンディスプレイ、フラットパネルディスプレイ、投影装置、コンピュータのモニタ、あるいは閲覧可能なイメージデータを表示し、または処理することができるその他のいかなる装置とすることができる。オーディオシステム１１６は、スピーカステレオシステム、またはサウンドデータを発することができるその他のいかなる装置とすることができ、同様に、ディスプレイ装置１１４と一体的に配置することができ、またはディスプレイ装置１１４と別々に配置することができる。
【００２６】
コンピューティングシステム１１０は信号入力インタフェース１１８を含み、信号入力インタフェース１１８は、信号源１２０からマルチメディアデータを受け取る。マルチメディアデータは、信号源１２０から入力ライン１２２を介して信号入力インタフェース１１８に送られる。入力ライン１２２は、ケーブル／光接続、地上アンテナシステム、サテライトシステム、あるいはマルチメディアデータをコンピューティングシステム１１０に送ることができるいかなる装置またはシステムとすることができる。
【００２７】
信号源１２０は、単一のチャネル信号源、または複数のチャネル信号源のいずれとすることもできる。単一のチャネル信号源は、ビデオカセット、コンパクトディスクなどの記録媒体を介して番組を供給する。単一のチャネル信号源の例にはＶＣＲ、ＤＶＤなどが含まれる。あるいはまた、複数のチャネル信号源は、サテライト受信機、ケーブル／光接続、地上アンテナなどによって受信される信号を送ることができるいかなるシステムまたは装置をも含む。複数チャネル信号源の例には、ＤＳＳ／ＤＶＢ、ケーブルボックス、ローカル番組放送（すなわち、ＵＨＦ、ＶＨＦ、またはＡＴＶＥＦを用いた番組放送）などが含まれる。
【００２８】
図１にはコンピューティングシステム１１０を単一の番組入力ライン１２２と単一の信号源１２０を有するものとして図示するが、これに代えて、複数の信号源から複数の番組入力ラインでマルチメディアデータを送ることもできる。このような実施形態では、コンピューティングシステム１１０は、一度に１つの信号源または複数の信号源からマルチメディアデータを受け取ることができる。
【００２９】
コンピューティングシステム１１０はまた、リモート制御、キーボード、マイクロフォン、またはコンピューティングシステム１１０に対する命令を生成することができるその他の任意の装置などの入力装置１２６から入力を受け取るユーザ入力インタフェース１２４をも含む。入力装置１２６は、そのような制御が可能となるように、入力リンク１２８を介してコンピューティングシステム１１０に結合し通信を行う。入力装置１２６は、予めプログラムされたデータに応答して、または閲覧者が入力装置１２６上のボタンを押下することに応答して、入力リンク１２８を介して命令を生成する。入力装置１２６はまた、コンピューティングシステム１１０がインターネット接続を介してマルチメディアデータを受信するときのように、コンピューティングシステム１１０内でウェブブラウザソフトウェアを制御することもできる。
【００３０】
コンピューティングシステム１１０のオペレーションは、処理装置１３６として例示する中央演算処理装置（「ＣＰＵ」）によって制御される。処理装置１３６は、特定用途向け集積回路（「ＡＳＩＣ」）１３８に結合して、ソフトウェアおよび／またはハードワイヤード論理回路に実装されたコンピュータ実行可能命令を使用する。処理装置１３６およびＡＳＩＣ１３８はシステムバス１４０を介して結合される。システムバス１４０はまた、システムメモリ１４２、大容量記憶装置インタフェース１４４、ユーザインタフェース１２４、および信号入力インタフェース１１８などの様々な他のシステム構成要素も相互接続する。処理装置１３６は、本発明の機能を含むコンピューティングシステム１１０の機能を実施するように設計されたソフトウェアを実行する。ＡＳＩＣ　１３８は、コンピューティングシステム１１０の一定の機能を実施するのに用いられる回路を含む。命令、データ、ならびに処理装置１３６およびＡＳＩＣ　１３８のオペレーションに必要なその他のソフトウェアを、読取り専用メモリ（「ＲＯＭ」）１４６、および／またはランダムアクセスメモリ（「ＲＡＭ」）１４８、大容量記憶装置インタフェース１４４に結合された大容量記憶装置１５０などのシステムメモリ１４２内に格納することができる。ＲＯＭ　１４６、ＲＡＭ　１４８、および大容量記憶装置１５０は、ＡＳＩＣ　１３８で読み取ることができるようにＡＳＩＣ　１３８に通信可能に結合され、その結果、ＡＳＩＣ　１３８からＲＡＭ　１４８に、場合によっては大容量記憶装置１５０にデータを書き込むことができる。
【００３１】
大容量記憶装置１５０は、磁気ハードディスク１５２、または大量のデータを記憶することができるその他のいかなる磁気／光学式大容量メモリ装置でもよい。マルチメディアアプリケーション１５４、他のプログラムモジュール１５６、およびオーディオデータおよびビデオデータなどのマルチメディアデータを含む所望の任意のコンピュータ可読命令またはデータ。本発明によれば、本願では、マーカ、イベント、メタデータ、ならびに対応するオーディオデータおよびビデオデータと共に送られるその他のデータも含むようにマルチメディアデータを広範囲に解釈すべきである。
【００３２】
コンピューティングシステム１１０がインターネットからマルチメディアデータを受信する実施形態では、コンピューティングシステム１１０は、システムバス１４０と、モデム１６６、ワイヤレスリンク、または広域ネットワーク（「ＷＡＮ」）１６２を介して通信を確立するその他の手段（コンピューティングシステム１１０に内蔵されていても、外付けでもよい）との間に置かれるシリアルポートインタフェース１６４を含むことにより、ＷＡＮを介してリモートコンピュータ１６０と通信する。コンピューティングシステム１１０はまた、標準電話回線を介する直接ダイアル通信によって、またはその他の任意の利用可能な通信媒体を使用することによって、インターネットを介して情報を送信し、マルチメディアデータを受信することもできる。
【００３３】
次に信号入力インタフェース１１８を参照すると、番組入力ライン１２２上の信号がデータの様々なストリームをそれぞれ受信する複数のチャネルを含む場合、信号入力インタフェース１１８に含まれる同調器１７０が、信号中の選択したチャネルに同調を行う。複数の同調器１７０を使用して、あるチャネルからのマルチメディアデータを記録すると同時に別のチャネル上のマルチメディアデータを処理するなどの拡張機能を提供することができる。信号デコーダ１７２は、必要に応じて、ビデオデータをアナログフォーマットからデジタルフォーマットに変換し、またはデジタルフォーマットからアナログフォーマットに変換する。信号デコーダ１７２はまた、圧縮ストリームフォーマット（例えばＭＰＥＧ、ＡＳＦ）から、オーディオ、ビデオ、メタデータ、および他のデータを復号化し、解凍し、分割することもできる。コンピューティングシステム１１０が複数の同調器１７０を含む実施形態では、コンピューティングシステム１１０は、本明細書で開示されるオペレーションを実施するために複数の信号デコーダ１７２を含むこともできる。
【００３４】
コンピューティングシステム１１０はまた、ディスプレイ装置１１４やオーディオシステム１１６などのレンダリング装置にデータを送るのに有用なビデオ出力１７４およびオーディオ出力１７６も含む。しかし、コンピューティングシステム１１０はデータをローカルのレンダリング装置に送ることに限定されないことが理解されるであろう。具体的には、コンピューティングシステム１１０は、コンピューティングシステム１１０の大容量記憶装置１５０に格納されたマルチメディアデータを処理し、および他のレンダリング装置にマルチメディアデータを送信するように別々に構成することができるリモートコンピュータ１６０などの任意の数のリモートコンピューティング装置にデータを送信することもできる。リモートコンピュータ１６０は、ケーブル／光接続、地上アンテナシステム、サテライトシステム、あるいはリモートコンピュータ１６０にストリームデータを送信することができるその他の任意の装置またはシステムを通る信号出力１９２を介して、コンピューティングシステム１１０からデータを直接受信することができる。あるいはまた、リモートコンピュータ１６０は、コンピューティングシステム１１０から広域ネットワーク１６２を介してデータを間接的に受信することもできる。
【００３５】
図１と上記の対応する議論により、本発明を実装することができる適切な環境の一般的な説明をしたが、本明細書で開示される本発明の特徴を、様々な異なるシステム構成に関連して実施できることが理解されるであろう。
【００３６】
図２に、マルチメディアソース２２０およびレンダリング装置２３０と通知しているコンピューティングシステム２１０を含む、本発明の方法を実施するための例示の一環境２００を示す。図示するように、コンピューティングシステム２１０は、少なくとも１つのアプリケーション２４０、記憶媒体２５０、およびメディアソースＡＰＩ　２６０を含む。これらのそれぞれをこれから議論する。コンピューティングシステム２１０は、例えば図１のコンピューティングシステム１１０とすることができるが、本発明はそのような特定の環境には決して限定されない。
【００３７】
コンピューティングシステム２１０のアプリケーション２４０は、マルチメディアソース２２０から受け取ったマルチメディアコンテンツを処理するように構成されたいかなるアプリケーションも含むことができる。コンピューティングシステム２１０が実際に図１のコンピューティングシステム１１０であった場合、例えばアプリケーションはマルチメディアアプリケーション１５４とすることができる。用語「処理する（ｐｒｏｃｅｓｓ）」は、マルチメディアデータをレンダリングし、再生し、編集し、または操作することが可能となるようにマルチメディアデータに対して実施される任意の動作またはステップとして解釈すべきである。
【００３８】
アプリケーション２４０の例には、限定はしないが再生、休止、シーキングなどのための制御アプリケーション、リサンプリング、等化（ｅｑｕａｌｉｚｉｎｇ）、増幅、ミキシングなどのための変換アプリケーション、およびビデオカード、サウンドカード、ＣＤ−ＲＯＭ読取り／書込みドライブなどの個々のコンピュータ構成要素に具体的に関連するアプリケーションが含まれる。
【００３９】
本発明の一実施形態によれば、コンピューティングシステム２１０は、接続２６２を介してマルチメディアソース２２０からのマルチメディアコンテンツにアクセスする。接続２６２は、限定はしないがケーブル／光接続、地上アンテナシステム、インターネット、およびサテライトシステムを含むことができる。
【００４０】
前述のように、マルチメディアコンテンツ（本明細書ではマルチメディアデータとも呼ぶ）は、オーディオ／ビデオデータ、ならびにオーディオ／ビデオデータに関連するメタデータ、マーカ、イベント、およびＩＰデータなどのその他のデータを含むことができる。マルチメディアコンテンツは、限定はしないがＭＰＥＧ、ＭＰ３、ＡＳＦ、ＡＶＩ、ＷＭＦ、ＲＴＰ、ＷＡＶ、ＭＩＤＩ、Ａｃｔｉｖｅ　Ｍｏｖｉｅ、Ｃｉｎｅｐａｑ、ＱｕｉｃｋＴｉｍｅ、およびＩｎｄｅｏを含む、様々な規格およびフォーマットに従って符号化することができる。
【００４１】
マルチメディアソース２２０からマルチメディアコンテンツを受信する際、コンピューティングシステム２１０は、マルチメディアコンテンツを記憶媒体２５０に格納する。本発明の方法を容易にするため、記憶媒体２５０は、バッファ２６４、基本情報のテーブル２６６、およびイベントキュー２６８を用いて構成される。これらのそれぞれを下記でより詳細に議論する。記憶媒体２５０は、例えば揮発性メモリ、不揮発性メモリ、またはそれらの組合せなど任意のメモリ機能を抽象的に表す。
【００４２】
使用中、アプリケーション２４０は、記憶媒体２５０に格納されたマルチメディアコンテンツを処理する。一実施形態によれば、アプリケーション２４０がマルチメディアコンテンツにアクセスしてそれを処理することが、メディアソースＡＰＩ　２６０によって容易になる。具体的には、メディアソースＡＰＩ　２６０は、マルチメディアコンテンツと、マルチメディアコンテンツを処理するのに必要となる可能性のあるマルチメディアソースとに関する基本情報をアプリケーション２４０が得ることができるいくつかのインタフェースを含む。
【００４３】
一実施形態によれば、メディアソースＡＰＩ　２６０のインタフェースは、マルチメディアソースインタフェース２７０、マルチメディアコンテンツインタフェース２７２、マルチメディアプレゼンテーションインタフェース２７４、マルチメディアストリームインタフェース２７６、およびイベントマネージャインタフェース２７８を含む。これらのそれぞれを以降説明する。
【００４４】
マルチメディアソースインタフェース２７０は、例えばマルチメディアソースがプッシュであるか、プルであるか、それともライブであるか、マルチメディアソースがデータを送信することのできるビットレート範囲、マルチメディアソースがデータ送信で使用することのできるフォーマット、マルチメディアソースが提供しまたは可能な機能（例えば、シーキング、休止など）、マルチメディアソースがマルチメディアコンテンツの提供（ｐｒｅｓｅｎｔａｔｉｏｎ）の割り当てまたは同期のためのクロックを含むかどうか、ならびにマルチメディアソースが一度に複数のデータストリームを送信することができるかどうかなど、マルチメディアソースについての基本情報または機能を識別するように構成される。アプリケーションがマルチメディアコンテンツを処理する作法は、上記のマルチメディアソースの属性または機能のいずれかに依存する可能性があるので、この基本情報は有用である。これらの機能は、マルチメディアコンテンツが特定のインタフェースに対応するという連結（ｉｍｐｌｉｃａｔｉｏｎ）を生成することなく得ることができる。
【００４５】
例えば、マルチメディアコンテンツを受信する方法を判定するのに、マルチメディアソースがプッシュソースか、プルソースか、それともライブソースかを知ることが有用な場合がある。マルチメディアソースがプッシュソース（例えばストリーミングマルチメディアソース）である場合、アプリケーション２４０は、マルチメディアソースからマルチメディアコンテンツをプルまたは受諾すべき速度について通知を受けることができる。そうでない場合、マルチメディアソースによってプッシュまたはストリーミングされるデータが失われる可能性がある。マルチメディアソース２２０がライブソースである場合、マルチメディアデータにアクセスし、マルチメディアデータを処理することに関する資源優先順位をアプリケーション２４０に与えることができる。マルチメディアソース２２０がプルソースである場合、データを求める一定の要求が作成されたときにのみ新しいマルチメディアデータが受信されることをアプリケーション２４０に認識させることができる。アプリケーション２４０はまた、マルチメディアが確実に予定通り送達および処理するためにマルチメディアコンテンツを求める呼出しをスケジュールすることを要求することがある。
【００４６】
マルチメディアソース２２０をデータ２４０の送信をいかなる速度で行うように構成するかを決定することもまた、記憶媒体２５０内のバッファ２６４をマルチメディアコンテンツを格納するのに利用できるようにすべき時を決定する上で重要となる可能性がある。例えば、アプリケーションがマルチメディアコンテンツを受信する速度でデータを処理することができないとき、メディアソースＡＰＩは、マルチメディアコンテンツを適切なアプリケーション２４０で首尾よく処理することができるまでマルチメディアコンテンツを格納することができるように、記憶媒体中のバッファ２６４を利用可能にすることができる。したがって、このようにしてアプリケーションはバッファ２６４に対して効果的に呼出しを行うことができ、それによってマルチメディアデータを受信および格納する速度が制御される。
【００４７】
マルチメディアソースインタフェース２７０は、基本情報をコンピューティングシステムに提示できる様々なフォーマットを解釈するために各アプリケーションを重複してプログラムする必要なしに、マルチメディアソース２２０に関する適切な情報を、標準的かつ一定の作法でアプリケーションに提供する。その代わりに、本発明によれば、メディアソースＡＰＩが情報を取得し、アプリケーション２４０がその情報を、例えばマルチメディアソースについての基本情報を記憶媒体に含まれる基本情報の１つまたは複数のテーブル２６０に格納するなどの標準的な所定の作法で利用できるようにする。マルチメディアソースについての基本情報はまた、記憶媒体内に配置せずにアプリケーション２４０に直ちに提示することもできる。
【００４８】
マルチメディアコンテンツインタフェース２７２は、例えばコンピューティングシステム２１０に送信されるマルチメディアデータの各ストリームの持続時間、各マルチメディアストリームについての固有識別子、各マルチメディアストリームのサイズ、各ストリームに割り当てられた開始時間および停止時間、各ストリームがサポートする利用可能なメディアタイプなど、マルチメディアコンテンツについての基本情報を識別するように構成される。
【００４９】
各ストリームの持続時間は、ナノ秒、またはその他の任意の所定の時間尺度によって提供することができる。各ストリームについての固有識別子をマルチメディアソースによって提供することができ、または実際のマルチメディアコンテンツ内に格納することができ、またはメディアソースＡＰＩによって合成することができ、固有識別子は、シンボル、名前、文字、数字、またはその他の固有識別マークを含むことができる。
【００５０】
マルチメディアコンテンツについての基本情報はまた、適正なアプリケーション２４０に情報を直接提供することによって、または基本情報のテーブル内の基本情報を記憶媒体２６６に格納することによって、そのアプリケーションが利用できるようにすることもできる。一実施形態によれば、基本情報は、基本情報２６６のテーブルに格納されたストリーム記述子オブジェクトの形で提供される。
【００５１】
マルチメディアコンテンツについての基本情報は、アプリケーションがマルチメディアコンテンツを処理するのに必要であることがある。例えば、アプリケーションは、ユーザが望むメディアタイプ、またはアプリケーションと互換なメディアタイプをアプリケーションが要求することができるように、各ストリームがサポートする利用可能なメディアタイプを認識している必要があることがある。メディアタイプの例には、限定はしないがイメージファイルタイプ（例えば、ＪＰＥＧ、ＧＩＦ、ＴＩＦＦなど）、ストリーミングフォーマット（例えば、ＡＳＦ、ＡＶＩ、ＭＰＥＧ、ＭＰ３など）、およびサウンドファイルタイプ（例えば、ＷＡＶ、ＡＵ、ＭＩＤＩなど）が含まれる。マルチメディアコンテンツについての基本情報はまた、個々のストリームがサポートする再生言語や表示オプションも含むことができる。このことは例えば、下記で説明するように、ユーザの望む言語やマルチメディアプレゼンテーションの表示をアプリケーションが選択することを可能にするのに有用である。
【００５２】
マルチメディアプレゼンテーションインタフェース２７４は、マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成される。意図されるプレゼンテーションについての基本情報の例には、限定はしないが意図されるプレゼンテーションについてのメタデータ、意図されるプレゼンテーションの持続時間、（前述の）ストリーム記述子オブジェクトの数、および意図されるプレゼンテーションに対してどのストリーム記述子オブジェクトが選択されたかが含まれる。
【００５３】
マルチメディアプレゼンテーションインタフェース２７４はまた、マルチメディアプレゼンテーションに含めるべき、デフォルトストリーム記述子オブジェクトまたは選択されるストリーム記述子オブジェクトも決定する。例えば、意図されるプレゼンテーションを英語でレンダリングすべきであることをデフォルトストリーム記述子が示す場合、意図されるプレゼンテーションを英語で処理するために適切なアプリケーション構成を使用することができるように、この情報を得ることができる。
【００５４】
意図されるプレゼンテーションについての基本情報は、基本情報２６６のテーブル内のプレゼンテーションオブジェクトとして記憶媒体に格納することができ、その結果、意図されるプレゼンテーションをレンダリングまたは編集すべきときに、適切なアプリケーション２４０でその基本情報にアクセスすることができる。
【００５５】
一実施形態によれば、マルチメディアストリームインタフェース２７６は、アプリケーションにマルチメディアコンテンツへの所望されるような、制御された方法でのアクセスを可能とするように構成される。例えば、マルチメディアストリームインタフェース２７６により、プレゼンテーション記述子オブジェクトに含まれる記述子オブジェクトをアプリケーションが選択および選択解除することが可能となる。例えば、マルチメディアソースが様々な言語や画面表示フォーマットをサポートするＤＶＤである場合、マルチメディアプレゼンテーションストリームインタフェース２７６により、アプリケーションが、アプリケーションの望むデフォルト設定に従って、またはユーザ要求に従って特定の言語や画面表示フォーマットを要求することが可能となる。一実施形態によれば、記述子オブジェクトの選択および選択解除は、マルチメディアストリームインタフェース２７６を介してアプリケーションからマルチメディアソースに送信される関数呼出しによって行われる。
【００５６】
マルチメディアストリームインタフェース２７６により、アプリケーションが所望の再生速度を選択し、レンダリング装置２３０などの所望の出力、プレゼンテーション中にマルチメディアデータをどこに送信すべきか、利用可能なメディアタイプのうち使用するメディアタイプ、およびマルチメディアコンテンツを後でレンダリングすることを可能にし、プレゼンテーションに割り当てられた再生速度を変更するために、いつバッファを使用してマルチメディアコンテンツを格納すべきかを識別することも可能となる。マルチメディアソースによってマルチメディアコンテンツにタイムスタンプが割り当てられていないときは、マルチメディアストリームインタフェースを使用してマルチメディアコンテンツにタイムスタンプを割り当てることができる。
【００５７】
最後に図示されているメディアソースＡＰＩ　２６０のインタフェースは、イベントマネージャインタフェース２７８である。イベントマネージャインタフェース２７８は、コンピューティングシステムが受信するマルチメディアソース２２０および／またはアプリケーション２４０によるマルチメディアソースイベントおよびマルチメディアコンテンツイベントを管理するように構成される。一実施形態によれば、マルチメディアソースイベントおよびマルチメディアコンテンツイベントは、コンピューティングシステムの記憶媒体２５０内のイベントキュー２６８に格納される。当業者ならイベントを理解されよう。図４を参照しながら下記で説明するように、アプリケーションは、１つまたは複数のイベントキューにイベントを要求することができ、それにより、オブジェクトが要求側アプリケーションに送られる。１つまたは複数のイベントキュー内のイベントは、そのイベントが参照されるストリームを含む様々な資源を参照する。１つまたは複数のイベントキューを介してマルチメディアデータを処理するための、本発明によって提供されるイベントに基づくプログラミング手法（ｐａｒａｄｉｇｍ）は有用であり、そのプログラミング手法により、アプリケーションが外部イベントに適切に応答することが可能となることを理解されるであろう。
【００５８】
マルチメディアコンテンツイベントと、対応するオブジェクトの例には、限定はしないが以下のものが含まれる。すなわち、マルチメディアコンテンツがコンピューティングシステムによって受信されたことを示すイベント、このイベントは、マルチメディアコンテンツの位置および属性を識別する対応するオブジェクトを含むことができる。マルチメディアコンテンツのフォーマットの変化が生じたことを示すイベント、このイベントは、マルチメディアコンテンツの新しいフォーマットを識別する、対応するオブジェクトを含むことができる。ならびに、ストリームの終了を示すイベント、ストリームがシークされていることを示すイベント、および特定のストリームに関連するタイムスタンプを指定するイベントなど、対応するオブジェクトを有さない可能性があるその他のイベントである。
【００５９】
マルチメディアソースイベントと、対応するオブジェクトの例には、限定はしないが以下のものが含まれる。すなわち、マルチメディアコンテンツのストリーミングの開始、停止、および休止を示すイベント、このイベントは、意図されるプレゼンテーションのメディアストリームを活動化および非活動化する対応するオブジェクトを有することができる。マルチメディアを求めてメディアソースがシークされたことを示すイベント、このイベントは、マルチメディアコンテンツ内でシークされた時間を識別するオブジェクトを含むことができる。新しいプレゼンテーションが利用可能であることを示すイベント、このイベントは、自動的に、または現プレゼンテーションが終了した後に新しいプレゼンテーションを開始する、対応するオブジェクトを含むことができる。新しいストリームが現プレゼンテーションで利用可能であることを示すイベント、このイベントは、（メディアソースをプッシュするために）記憶媒体にストリームをバッファリングし、または現ストリームが終了したときにストリームを求める関数呼出しを作成すべきであることをアプリケーションに通知する対応するオブジェクトを含むことができる。現プレゼンテーションの終了を示すイベント、このイベントは、プレゼンテーションに関係するキューからすべてのイベントを除去する対応するオブジェクトを含むことができる。ならびに、利用可能な新しいメタデータを現プレゼンテーションが有することを示すイベントである。このイベントは、プレゼンテーションに関連する現メタデータ状態をリフレッシュする、対応するオブジェクトを含むことができる。その他のメディアソースイベントは、限定はしないがメディアソースのデータ伝送速度の変化を示すイベントなど、対応するオブジェクトを含まない可能性がある。
【００６０】
次に図３を参照すると、本発明の一実施形態に従って、アプリケーションが基本マルチメディア情報を得るのを容易にする上でどのようにメディアソースＡＰＩ　２６０が助けとなるかが示されている。図示されているように、この方法は、メディアソースＡＰＩ　２６０によって実施することができる様々な動作を含む。具体的には、メディアソースＡＰＩ　２６０は、マルチメディアソースからのマルチメディアコンテンツにアクセスし（動作３１０）、マルチメディアソースについての基本情報を識別して利用可能にし（動作３２０）、マルチメディアコンテンツについての基本情報を識別して利用可能にし（動作３３０）、マルチメディアソース／コンテンツイベントを格納するイベントキューを提供し（動作３４０）、イベントキュー内のイベントを求める関数呼出しを受け取り（動作３５０）、要求されたイベントに関連する対応するオブジェクトを要求側アプリケーションに返す（動作３６０）ように構成される。このようにして、メディアソースＡＰＩは、アプリケーションがストリーミングマルチメディアデータを停止し、休止し、開始する手段を効果的に提供することができる。
【００６１】
点線３７０によって示されているように、マルチメディアコンテンツにアクセスし、マルチメディアソース／コンテンツについての基本情報を利用可能にする動作（動作３１０、３２０、３３０）は一般に、マルチメディアソースおよびマルチメディアコンテンツについての基本情報を取得し、適切なアプリケーションがそれを利用できるようにする単一のステップ（ステップ３８０）として記述することができる。したがって、ステップ３８０は、対応する動作３１０、３２０、３３０、およびそれらに対応するものとして解釈すべきである。
【００６２】
前述のように、マルチメディアソースからのマルチメディアコンテンツにアクセスする動作（動作３１０）は、プッシュ通信、プル通信、またはライブ通信で行うことができる。マルチメディアソース／コンテンツについての基本情報を識別し、利用可能にする動作コンテンツ（動作３２０および３３０）は、コンピューティングシステムがＡＰＩを使用して基本情報を取得し、１つまたは複数のアプリケーションに基本情報を直接送信し、または１つまたは複数のアプリケーションによってアクセスされる記憶媒体に基本情報を格納するときに行うことができる。
【００６３】
イベントを格納するイベントキューを提供する動作（動作３４０）は、指定のメモリをフォーマッティングしてイベントを格納することによって直接的に行うか、または指定のメモリの事前フォーマット済み部分にイベントを単に送ることによって間接的に行うことができる。指定のメモリは、コンピューティングシステムのシステムメモリまたはその他の揮発性もしくは不揮発性のいかなるローカルメモリもしくはリモートメモリを含むことができる。一実施形態では、イベントキューを提供する動作は、複数のイベントキューを提供する動作を含む。
【００６４】
イベントを求める関数呼出しを受け取る動作（動作３５０）は、アプリケーションがイベントを求める要求を開始するまで待機することによって受動的に行うことができる。あるいは、イベントを求める関数呼出しを受け取る動作（動作３５０）は、イベントが待ち行列化され、要求を受ける準備ができたことを１つまたは複数のアプリケーションに通知することによって能動的に行うこともできる。この代替の方法により、メディアソースＡＰＩがアプリケーションに取って代わって制御することなくプルシステムとして動作することが可能となる。例えば、新しいメディアストリームを受信または削除したとき、その新しいメディアストリームを示すと同時に、その新しいメディアストリームを処理する準備ができたことをアプリケーションに通知するイベントをメディアソースＡＰＩは待ち行列化することができる。これにより、イベントを求める関数呼出しをアプリケーションが発行することが可能となり、その結果、適切な対応するオブジェクトを返すことができる（動作３６０）。これにより、新しいメディアストリームが再生される。
【００６５】
図４に、マルチメディアアプリケーションがマルチメディアデータにアクセスし、それを処理するのを容易にする、図２のメディアソースＡＰＩ　２６０によって実施される一方法４００の流れ図を示す。この方法は、マルチメディアプレゼンテーションオブジェクトを作成するステップを含む（ステップ４１０）。前述のようにマルチメディアプレゼンテーションオブジェクトは、例えばマルチメディアプレゼンテーション（例えばＤＶＤムービー）を再生するなど、アプリケーションがマルチメディアコンテンツを処理するのを容易にすることができる情報を含む。
【００６６】
マルチメディアプレゼンテーションオブジェクトを作成するための、対応する動作およびステップ（ステップ４１０）は、プレゼンテーションに適用されるマルチメディアコンテンツメタデータを決定する動作を含む。一般には、マルチメディアコンテンツのメタデータにより、マルチメディアコンテンツを解釈および処理するのに使用する、マルチメディアコンテンツをフォーマットする方法についての情報が提供される。次の動作は、プレゼンテーションの全持続時間を決定することを含む（動作４３０）。必須ではないが、動作（４３０）は例えば、同時にレンダリングすべき異なるメディアストリームのタイムスタンプを同期するのに有用なことがある。同期はまた、各メディアストリームから各サンプルに割り当てられたタイムスタンプを使用して行うこともできる。
【００６７】
次に、方法４００は、前述のストリーム記述子オブジェクトの配列を作成するステップを含む。ストリーム記述子オブジェクトを作成するための、対応する動作（ステップ４４０）は、各ストリームについて固有識別子を決定する動作（動作４４２）、各ストリームについて開始時間および停止時間を決定する動作（動作４４４）、各ストリームの持続時間を決定する動作（動作４４６）、および各ストリームのサポートするすべてのメディアタイプを決定する動作（４４８）を含む。
【００６８】
前述の、アプリケーションが使用できるようになるストリーム記述子オブジェクトの配列を作成する際（ステップ４４０）、マルチメディアプレゼンテーションオブジェクトを作成するステップ（ステップ４１０）は、プレゼンテーションをレンダリングすべき好ましいメディアタイプを選択する動作をさらに含むことができる。
【００６９】
マルチメディアプレゼンテーションオブジェクトを作成する際、メディアソースＡＰＩは、新しいプレゼンテーションの準備ができたというイベントをイベントキューに待ち行列化する。その後に、１つまたは複数のアプリケーションが、新しいプレゼンテーションイベントを求める関数呼出しを発行し、その関数呼出しにより、メディアソースＡＰＩは、新しく作成したメディアプレゼンテーションオブジェクトを要求側アプリケーションに返す。ストリーム記述子オブジェクトの配列を含むマルチメディアプレゼンテーションオブジェクトを受け取った際、アプリケーションは、プレゼンテーションの適切なストリームを適切な時に活動化することができる。
【００７０】
プレゼンテーション中、活動化されたメディアストリームをバッファリングするために１つまたは複数のアプリケーションがバッファを要求したとき、メディアソースＡＰＩによってバッファが１つまたは複数のアプリケーションに提示される（動作４６０）。一実施形態では、アプリケーション自体がバッファのためのスペースを割り振り、メディアソースＡＰＩがマルチメディアデータでバッファを満たす。別の実施形態では、メディアソースＡＰＩがバッファのためのスペースを割り振り、かつマルチメディアデータでバッファを満たす。メディアソースＡＰＩにより、プレゼンテーション中にアプリケーションがマルチメディアコンテンツを休止し、停止し、シークすることも、メディアソースによってこの機能を可能となるときに可能となる。環境によっては、例えば、メディアソースがライブプレゼンテーションの停止を許可しない場合がある。
【００７１】
プレゼンテーション中にイベントを受け取ったとき、メディアソースＡＰＩは引き続き、イベントを待ち行列化し、イベントを求める要求に応答する。例えば、現メディアストリームが終了し、かつ新しいメディアストリームが利用可能であることを示すイベントをメディアソースＡＰＩが受け取ったとき、メディアソースＡＰＩは、適切なアプリケーションを通知し、待ち行列化イベントを求める関数呼出しの形で新しいメディアストリームを求める要求を受け取るまで待機する。次いで、図３に示すように、アプリケーションは、新しく受け取ったメディアストリームイベントを求める適切な関数呼出しを提供するとき、要求したイベントに関連するオブジェクトがアプリケーションに返され、それによって新しいメディアストリームを活動化することが可能となる。
【００７２】
図３および４に示す動作を順番に示したが、異なる順番およびシーケンスで動作を実施することもできることを理解されるであろう。例えば限定はしないが、イベントキューを提供する動作（動作３４０）、イベントを求める関数呼出しを受け取る動作（動作３５０）、およびマルチメディアコンテンツにアクセスする動作（３１０）を同時に行うことができる。
【００７３】
まとめると、本発明の方法により、ＡＰＩが、マルチメディアデータを処理するのに必要である可能性のある基本マルチメディア情報を得ることが可能となる。これを行うことにより、１つまたは複数のアプリケーションが、マルチメディアソースから情報を個々に直接得ることを必要とされずに、所定の標準の方法でＡＰＩから基本情報を容易に得ることが本発明によって可能となる。
【００７４】
マルチメディアアプリケーション内にプログラムしなければならない機能を削減し、それによって新しいマルチメディアアプリケーションを作成するのに必要な負担（例えば、コスト、時間、および資源）を削減する上で本発明が特に有用であることを、本願を読む際に当業者は理解するであろう。
【００７５】
次に、本明細書で説明するインタフェースの一部を作成するのに使用することができるコードを説明する。特定のコードを下記で示すが、本発明の範囲に包含される多数のソフトウェア実装が存在することを、当業者はこの説明を検討した後に理解されよう。したがって、下記で与えるコードは、本発明の方法を実施するための可能な実施形態を示すに過ぎず、例示のために与えたものに過ぎず、本発明の範囲を限定するものではない。したがって、本明細書で説明する任意の数のインタフェースを、モジュール、コンピュータプログラム製品、および本発明の方法を実施するその他のインタフェースに統合し、組み合わせることができる。
【００７６】
一実施形態によれば、マルチメディアソースインタフェース２７０は、下記のＩＭＦＭｅｄｉａＥｖｅｎｔＧｅｎｅｒａｔｏｒインタフェースコードを含むことができる。
【００７７】
2004038970.tif 000003
2004038970.tif 000004
【００７８】
上記のコードでは、ＧｅｔＣｈａｒａｃｔｅｒｉｓｔｉｃｓが、メディアソースの関心のある特徴を示すフラグを返す。例えば、メディアソースの特徴を記述するために、あるフラグを下記のように定義することができる。
【００７９】
2004038970.tif 000005
2004038970.tif 000006
【００８０】
ＧｅｔＳｅｒｖｉｃｅにより、呼出し側アプリケーションが、（ＩＩＤ＿ＩＭＦＭｅｄｉａＳｏｕｒｃｅＲａｔｅＣｏｎｔｒｏｌインタフェースがサポートする）ＭＳ＿ＲＡＴＥ＿ＣＯＮＴＲＯＬ＿ＳＥＲＶＩＣＥおよび（ＩＩＤ＿ＩＭＦＳｔｒｅａｍＳｅｌｅｃｔｏｒインタフェースがサポートする）ＭＳ＿ＳＴＲＥＡＭ＿ＳＥＬＥＣＴＯＲ＿ＳＥＲＶＩＣＥなどのメディアソースから拡張サービスを取り出すことが可能となる。
【００８１】
ＧｅｔＤｅｆａｕｌｔＰｒｅｓｅｎｔａｔｉｏｎは、メディアストリームのデフォルトセットを含む、メディアソース上で初期化されたコンテンツを記述するデフォルトプレゼンテーションオブジェクトを作成して、それを返す。
【００８２】
「Ｓｔｒａｔ」は、ｐＰｒｅｓｅｎｔａｔｉｏｎ入力パラメータで指定されるプレゼンテーションでメディアソースを活動化する。ｐＰｒｅｓｅｎｔａｔｉｏｎ入力パラメータがＮＵＬＬであり、かつメディアソースが停止状態である場合、デフォルトプレゼンテーションを使用してメディアソースストリームが活動化される。メディアソースが休止状態である場合、現在アクティブなプレゼンテーションが開始される。アクティブなプレゼンテーションを既に有するソース上で新しいプレゼンテーションが開始される場合、新しいＭＥ＿ＭＥＤＩＡ＿ＳＯＵＲＣＥ＿ＳＴＡＲＴＥＤイベントが待ち行列化されるとき、以前のメディアストリームオブジェクトがすべてシャットダウンされる。
【００８３】
「Ｓｔｏｐ」は、メディアソース中のアクティブなストリームをすべて終了する。「Ｐａｕｓｅ」は、メディアソース中のアクティブなストリームをすべて休止する。「Ｓｅｅｋ」により、メディアソースを指定の時間にシークすることが可能となる。ｐＰｒｅｓｅｎｔａｔｉｏｎ入力パラメータを使用して、シークを実施中のプレゼンテーションを指定する。ｐＰｒｅｓｅｎｔａｔｉｏｎパラメータがＮＵＬＬである場合、現在アクティブなプレゼンテーションに対してシークが実施される。パラメータがＮＵＬＬでない場合、シークされているプレゼンテーションが、現在アクティブなプレゼンテーションとなり、プレゼンテーションが開始される。指定の時間のフォーマットがｐｇｕｉｄＴｉｍｅＦｏｒｍａｔ入力パラメータによって示され、ｐｇｕｉｄＴｉｍｅＦｏｒｍａｔ入力パラメータがＮＵＬＬであるとき、１００ｎｓのフォーマットである。時間フォーマットが特定のメディアストリームの状況、例えばフレームへのシークで適用されるときに、ｐＭａｓｔｅｒＳｔｒｅａｍパラメータが使用される。
【００８４】
ＧｅｔＣｌｏｃｋは、メディアソースに関連するクロックが利用可能である場合にそれを返す。このクロックは、ＭｉｃｒｏｓｏｆｔのＭｅｄｉａ　Ｆｏｕｎｄａｔｉｏｎに従って定義されるＩＭＦＣｌｏｃｋとして返される。
【００８５】
ＧｅｔＡｃｔｉｖｅＰｒｅｓｅｎｔａｔｉｏｎは、現在アクティブなメディアプレゼンテーションを返す。
【００８６】
図３を参照しながら上記で説明したメディアソースイベントは、メディアソースイベントが呼出し側アプリケーションによって要求されるときに返される、対応するオブジェクトに関連する。一般に、メディアソースオブジェクトは、特定のマルチメディアの操作を可能にする。例えば、メディアソースオブジェクトは、プレゼンテーションの検索を公開し、メディアイベントを生成し、ソース制御（開始、停止、休止など）を公開することができ、前述のその他のサービスを可能にする。
【００８７】
マルチメディアコンテンツインタフェース２７２は、下記のＩＭＦＳｔｒｅａｍＤｅｓｃｒｉｐｔｏｒインタフェースコードを含むことができる。
【００８８】
2004038970.tif 000007
【００８９】上記のコードでは、ＧｅｔＳｔｒｅａｍＩｄｅｎｔｉｆｉｅｒは、マルチメディアソースから受信したストリームについての固有識別子を返す。ＧｅｔＳｔａｒｔＴｉｍｅはストリームの開始時間を返し、ＧｅｔＳｔｏｐＴｉｍｅはストリームの停止時間を返す。開始時間と停止時間は共に、入力パラメータｇｕｉｄＴｉｍｅＦｏｒｍａｔを介して呼出し側アプリケーションによって要求される時間フォーマットのメディアソースに対するものである。その時間フォーマットとしてのＮＵＬＬポインタは、１００ｎｓ単位の標準時フォーマットを要求する。ＧｅｔＭｅｄｉａＴｙｐｅＣｏｕｎｔは、メディアストリーム上で利用可能なメディアタイプのカウントを返す。ＧｅｔＭｅｄｉａＴｙｐｅＢｙＩｎｄｅｘは、０からメディアタイプカウント−１の範囲で有効な入力ｄｗＩｎｄｅｘパラメータが与えられると、メディアタイプを返す。メディアタイプは、ＭｉｃｒｏｓｏｆｔのＭｅｄｉａ　Ｆｏｕｎｄａｔｉｏｎに従って定義されるＩＭＦＭｅｄｉａＴｙｐｅオブジェクトとして返される。「Ｃｌｏｎｅ」は、ストリーム記述子オブジェクトのディープコピーを作成する。
【００９０】
マルチメディアコンテンツインタフェース２７２はまた、メディアタイプ、ストリーム時間などの１組のパラメータで初期されるストリーム記述子オブジェクトをメディアソースが作成することを可能にする下記のコードも含むことができる。
【００９１】
2004038970.tif 000008
【００９２】
上記のコードは、ストリームについての識別子であるｄｗＳｔｒｅａｍＩｄｅｎｔｉｆｉｅｒ、サポートされるストリーム時間フォーマットのカウントであるｃＳｔｒｅａｍＴｉｍｅｓ、サポートされる時間フォーマットＧＵＩＤの配列であるａｐｇｕｉｄＴｉｍｅＦｏｒｍａｔｓ、サポートされるストリーム時間フォーマットのカウントに対応するストリームについての開始時間の配列であるａＳｔａｒｔＴｉｍｅ、サポートされるストリーム時間フォーマットのカウントに対応する停止時間の配列であるａＳｔｏｐＴｉｍｅｓ、ストリームがサポートするメディアタイプのカウントであるｃＭｅｄｉａＴｙｐｅｓ、ストリームがサポートするメディアタイプの配列であるａｐＭｅｄｉａＴｙｐｅｓ、およびプレゼンテーションオブジェクトポインタを出力する位置であるｐｐＰｒｅｓｅｎｔａｔｉｏｎを含む、様々なパラメータを含む。
【００９３】
マルチメディアプレゼンテーションインタフェース２７４は、下記のＩＭＦＭｅｄｉａＰｒｅｓｅｎｔａｔｉｏｎインタフェースコードを含むことができる。
【００９４】
2004038970.tif 000009
2004038970.tif 000010
【００９５】
上記のコードでは、ＧｅｔＭｅｔａｄａｔａは、プレゼンテーションのコンテンツおよびメタデータ全体へのアクセスを提供するメタデータ管理インタフェースを取り出す。ＧｅｔＤｕｒａｔｉｏｎは、プレゼンテーションの持続時間を返す。ヌルポインタが指定された場合、返される持続時間は、１００ｎｓ単位のデフォルト時間フォーマットである。ＧｅｔＳｔｒｅａｍＤｅｓｃｒｉｐｔｏｒＣｏｕｎｔは、プレゼンテーション内のストリーム記述子オブジェクトのカウントを返し、各ストリーム記述子オブジェクトはメディアプレゼンテーション内のストリームを記述する。ＧｅｔＳｔｒｅａｍＤｅｓｃｒｉｐｔｏｒＢｙｌｎｄｅｘは、ｄｗＩｎｄｅｘ入力パラメータで指定される索引に関連するプレゼンテーション内のストリーム記述子を取り出す。ｐｆＳｅｌｅｃｔｅｄは、ストリームを活動化することができるようにストリームがプレゼンテーション内で選択されたかどうかを示す。ｐｐＳｅｌｅｃｔｅｄＭｅｄｉａＴｙｐｅは、プレゼンテーション内のストリームに対して選択されるメディアタイプを示す。このメディアタイプは、サポートされるストリームメディアタイプのセットから導出される。
【００９６】
ＳｅｌｅｃｔＳｔｒｅａｍにより、（ｄｗＳｅｌｅｃｔｉｏｎＦｌａｇｓによって示される）ストリーム選択フラグおよび選択されたメディアタイプを提供することによって、アプリケーションがプレゼンテーション内のストリームを選択することが可能となる。ＤｅｓｅｌｅｃｔＳｔｒｅａｍにより、アプリケーションがプレゼンテーション内のストリームを選択解除することが可能となる。「Ｃｌｏｎｅ」により、すべてのストリーム記述子のコピーと、関連する情報が作成される。
【００９７】
マルチメディアプレゼンテーションインタフェース２７４はまた、１組のストリーム記述子、メタデータなどで初期化されたメディアプレゼンテーションオブジェクトをソースが作成することを可能にする下記のコードも含むことができる。
【００９８】
2004038970.tif 000011
【００９９】
上記のコードのパラメータは、プレゼンテーションを関連付けるべきメタデータオブジェクトであるｐｕｎｋＭｅｔａｄａｔａ、１００ｎｓ間隔単位のプレゼンテーションの長さであるＩＩＤｕｒａｔｉｏｎ、プレゼンテーション内のストリーム記述子の数であるｃＳｔｒｅａｍＤｅｓｃｒｉｐｔｏｒ、プレゼンテーションと関連付けるべきストリーム記述子の配列であるａＳｔｒｅａｍＤｅｓｃｒｉｐｔｏｒｓ、およびプレゼンテーションオブジェクトポインタを出力する位置であるｐｐＰｒｅｓｅｎｔａｔｉｏｎを含む。
【０１００】
マルチメディアストリームインタフェース２７６は、前述のＩＭＦＭｅｄｉａＳｏｕｒｃｅインタフェースコードと関連付けることができ、下記のＩＭＦＭｅｄｉａＳｔｒｅａｍインタフェースコードをさらに含むことができる。
【０１０１】
2004038970.tif 000012
【０１０２】
上記のコードでは、ＧｅｔＭｅｄｉａＳｏｕｒｃｅは、ストリームが属するメディアソースオブジェクトを返す。ＧｅｔＳｔｒｅａｎ記述子は、ストリームを活動化するのに使用するストリーム記述子オブジェクトを返す。ＧｅｔＣｕｒｒｅｎｔＭｅｄｉａＴｙｐｅは、アクティブストリーム上で構成された現メディアタイプを返す。ＳｅｔＣｕｒｒｅｎｔＭｅｄｉａＴｙｐｅにより、アプリケーションがマルチメディアの出力に対して新しい現メディアタイプを設定することが可能となる。ＩｓＥｎｄＯｆＳｔｒｅａｍは、ストリームについてのすべてのイベントがキューから除かれた場合に真を返し、そうでない場合に偽を返す。
【０１０３】
ＰｒｏｃｅｓｓＢｕｆｆｅｒは、バッファをメディアストリームに提示し、したがってメディアストリームは、イベントを介してサンプルをメディアストリームキュー内に送達することができる。バッファは、ＭｉｃｒｏｓｏｆｔのＭｅｄｉａ　Ｆｏｕｎｄａｔｉｏｎに従って定義されたｐＢｕｆｆｅｒ入力パラメータを介して、ＩｍｅｄｉａＢｕｆｆｅｒとして提示される。メディアストリームがバッファのサンプルではなくメディアストリーム自体のサンプルを使用することをアプリケーションが望む場合、アプリケーションは、ＰｒｏｃｅｓｓＢｕｆｆｅｒをＮＵＬＬに指定しながら、依然として（フロー制御を維持するために）ＰｒｏｃｅｓｓＢｕｆｆｅｒを呼び出すことができる。
【０１０４】
「Ｓｈｕｔｄｏｗｎ」は、メディアストリームオブジェクトを解放する前にメディアストリームオブジェクトを明示的にシャットダウンするのに使用される。アプリケーションは、ストリームが終了したときにこのメソッドを呼び出す。シャットダウンの実装は、待機イベントジェネレータ（ＧｅｔＥｖｅｎｔ、ＢｅｇｉｎＥｖｅｎｔ）を解放し、待ち行列化イベントを破棄し、対応するソースオブジェクトへの任意の参照を解放する。シャットダウンはまた、シャットダウンが適切とみなすその他の任意の資源もシャットダウンすることができる。
【０１０５】
マルチメディアストリームインタフェースはまた、下記のＩＭＦＭｅｄｉａＳｔｒｅａｍＡｒｒａｙインタフェースコードと関連付けることもできる。
【０１０６】
2004038970.tif 000013
【０１０７】
上記のコードでは、ＧｅｔＭｅｄｉａＳｔｒｅａｍＣｏｕｎｔは、配列中のメディアストリームオブジェクトのカウントを返し、ＧｅｔＭｅｄｉａＳｔｒｅａｍＢｙＩｎｄｅｘは、ｄｗＩｎｄｅｘ入力パラメータで指定される索引に関連するメディアストリームを返す。
【０１０８】
マルチメディアストリームインタフェースはまた、下記のＩＭＦＭｅｄｉａＳｔｒｅａｍＳｅｌｅｃｔｏｒインタフェースコードと関連付けることもできる。
【０１０９】
2004038970.tif 000014
【０１１０】
上記のコードでは、ＳｅｌｅｃｔＳｔｒｅａｍｓは、入力ビットレート（ｄｗＢｉｔｒａｔｅ）指定子および言語（ｐｗｓｚＬａｎｇｕａｇｅ）指定子で与えられるメディアソース特有の自動ストリーム選択論理によってマッチングされるプレゼンテーション内のストリームを選択する。ＧｅｔＯｕｔｐｕｔＩｄｅｎｔｉｆｉｅｒＦｒｏｍＳｔｒｅａｍＩｄｅｎｔｉｆｉｅｒは、適切な場合にアプリケーションが新しく選択されたストリームを同じレンダリング出力にマッピングすることができるように、特定の選択したストリームが関連する出力識別子を返す。
【０１１１】
下記のフラグを使用して、ストリーム選択プロセスを変更することもできる。
【０１１２】
2004038970.tif 000015
【０１１３】マルチメディアストリームインタフェースはまた、下記のＩＭＦＭｅｄｉａＳｏｕｒｃｅＲａｔｅＣｏｎｔｒｏｌインタフェースコードと関連付けることもできる。
【０１１４】
2004038970.tif 000016
【０１１５】
上記のコードでは、ＧｅｔＭｉｎＲａｔｅは、メディアソースに対して設定することができる可能な最小の速度を返す。ＧｅｔＭａｘＲａｔｅは、メディアソースに対して設定することができる可能な最大の速度を返す。ＧｅｔＣｕｒｒｅｎｔＲａｔｅは、メディアソースの現在の速度を返す。ＳｅｔＲａｔｅは、メディアソースの速度を変更する。一実施形態では、制御インタフェースに対して標準速度が１．０に設定される。他のすべての速度は標準速度の倍数である（例えば、２．０は標準の２倍の速度である）。メディアソースが開始状態または停止状態のときに速度を変更することができる。
【０１１６】
任意選択で、ＩＭＦＭｅｄｉａＳｏｕｒｃｅＲａｔｅＣｏｎｔｒｏｌインタフェースコードをメディアソースオブジェクトで実装し、例えばネットワークストリーミングソースがキーフレームだけを送信するためにサーバに速度変更メッセージを送信するときなどに、メディアソースオブジェクト自体の速度制御を公開することができる。
【０１１７】
イベントマネージャインタフェース２７８は、下記のＩＭＦＭｅｄｉａイベントインタフェースソースコードを含むことができる。
【０１１８】
2004038970.tif 000017
【０１１９】
上記のソースコードでは、ＧｅｔＴｙｐｅは、要求されたイベントについてのイベントタイプを返す。ＧｅｔＳｔａｔｕｓは、指定のイベントのステータスをＨＲＥＳＵＬＴとして返す。ＧｅｔＤａｔａＯｂｊｅｃｔは、要求されたメディアイベントに関連するオブジェクトを返す。イベントタイプおよびイベントオブジェクトは、図３を参照して上記で説明した。
【０１２０】
イベントマネージャインタフェース２７８はまた、下記のＩＭＦＭｅｄｉａＥｖｅｎｔＧｅｎｅｒａｔｏｒインタフェースソースコードも含むことができる。
【０１２１】
2004038970.tif 000018
【０１２２】
上記のコードでは、ＧｅｔＥｖｅｎｔにより、呼出し側がイベントキュー内で利用可能な次のイベントを同期的に取り出すことが可能となる。ｄｗＦｌａｇｓがゼロである場合、この機能は、イベントをキューから返すのに利用可能となるまでブロックされる。ＢｅｇｉｎＧｅｔＥｖｅｎｔにより、イベントを求める非同期の要求を呼出し側が開始することが可能となる。ＥｎｄＧｅｔＥｖｅｎｔにより、前のＢｅｇｉｎＧｅｔＥｖｅｎｔ要求に関連するメディアイベントオブジェクトを呼出し側アプリケーションが取り出すことが可能となる。
【０１２３】
使用中、アプリケーションは、以下を用いてＢｅｇｉｎＧｅｔＥｖｅｎｔに呼出しを行うことができる。
【０１２４】
2004038970.tif 000019
2004038970.tif 000020
【０１２５】
次いで、イベントが待ち行列化されたときにアプリケーションコールバックが起動される。下記のソースコードを使用して、関連するイベントを実際に取り出すことができる。
【０１２６】
2004038970.tif 000021
【０１２７】
より多くのイベントを取得するために、アプリケーションがＢｅｇｉｎＧｅｔＥｖｅｎｔを再度呼び出す必要がある可能性がある。しかし別の実施形態では、下記のコードを用いて複数のイベントを処理することができる。
【０１２８】
2004038970.tif 000022
2004038970.tif 000023
【０１２９】
上記のコードは、マルチメディアデータをマルチメディアアプリケーションでアクセスおよび処理するのを容易にするために本発明に従って使用することができるソースコードおよびプログラムインタフェースのある特定の実施形態を示している。
【０１３０】
しかし、本発明の精神および本質的な特徴から逸脱することなく、本発明をその他の特定の形で実施できることを理解されよう。記載の実施形態は、すべての点において、限定的なものではなく例示的なものとみなすべきである。したがって本発明の範囲は、上記の説明ではなく、頭記の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲内にあるすべての変更は、特許請求の範囲内に包含されるべきである。
【図面の簡単な説明】
【図１】本発明の一実施形態の方法を実施するのに使用することができるネットワーク内のコンピューティングシステムを示す図である。
【図２】一実施形態のアプリケーション、記憶媒体、およびメディアソースアプリケーションプログラミングインタフェース（ＡＰＩ）を含むコンピューティングシステムがマルチメディアソースおよびレンダリング装置と通信している、本発明の方法を実施するための環境を示す図である。
【図３】少なくとも１つのアプリケーションが基本マルチメディア情報にアクセスするのを容易にし、かつマルチメディアコンテンツの処理を容易にする一方法のフロー図である。
【図４】図２のメディアソースＡＰＩを使用してマルチメディアプレゼンテーションオブジェクトを作成する一方法のフロー図である。
【符号の説明】
１００　ネットワーク
１１０、２１０　コンピューティングシステム
１１４　ディスプレイ装置
１１６　オーディオシステム
１１８　信号入力インタフェース
１２０　信号源
１２２　入力ライン
１２４　ユーザ入力インタフェース
１２６　入力装置
１２８　入力リンク
１３６　処理装置
１３８　特定用途向け集積回路（ＡＳＩＣ）
１４０　システムバス
１４２　システムメモリ
１４４　大容量記憶装置インタフェース
１４６　読取り専用メモリ（ＲＯＭ）
１４８　ランダムアクセスメモリ（ＲＡＭ）
１５０　大容量記憶装置
１５２　磁気ハードディスク
１５４　マルチメディアアプリケーション
１５６　他のプログラムモジュール
１５８　マルチメディアデータ
１６０　リモートコンピュータ
１６２　広域ネットワーク
１６４　シリアルポートインタフェース
１６６　モデム
１７０　同調器
１７２　信号デコーダ
１７４　ビデオ出力
１７６　オーディオ出力
１９２　信号出力
２２０　マルチメディアソース
２３０　レンダリング装置
２４０　アプリケーション
２５０　記憶媒体
２６０　基本情報のテーブル
２６０　メディアソースＡＰＩ
２６２　接続
２６４　バッファ
２６８　イベントキュー
２７０　マルチメディアソースインタフェース
２７２　マルチメディアコンテンツインタフェース
２７４　マルチメディアプレゼンテーションインタフェース
２７６　マルチメディアストリームインタフェース
２７８　イベントマネージャインタフェース
【図１】
2004038970.tif 000024
【図２】
2004038970.tif 000025
【図３】
2004038970.tif 000026
【図４】
2004038970.tif 000027