JP4652674B2 - マルチメディアデータを利用するためのアプリケーションプログラミングインタフェース - Google Patents
マルチメディアデータを利用するためのアプリケーションプログラミングインタフェース Download PDFInfo
- Publication number
- JP4652674B2 JP4652674B2 JP2003181883A JP2003181883A JP4652674B2 JP 4652674 B2 JP4652674 B2 JP 4652674B2 JP 2003181883 A JP2003181883 A JP 2003181883A JP 2003181883 A JP2003181883 A JP 2003181883A JP 4652674 B2 JP4652674 B2 JP 4652674B2
- Authority
- JP
- Japan
- Prior art keywords
- multimedia
- event
- presentation
- multimedia content
- source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、様々なマルチメディアソースからの様々な異なるフォーマットのマルチメディアデータにアクセスする方法、システム、およびコンピュータプログラム製品に関する。
【0002】
【従来の技術】
コンピュータ革命の到来は、マルチメディアコンテンツ(例えばビデオデータやオーディオデータ)を記録および編集する能力に多大な影響を及ぼした。例えば、現在ではマルチメディアコンテンツをデジタルフォーマットの形で記録して、圧縮される記憶媒体上に格納することができ、それによって所望のマルチメディアコンテンツを得るために以前必要であったコストやスペースが削減された。デジタルマルチメディアコンテンツを記憶することができる圧縮される記憶媒体の例には、例えばコンパクトディスク(CD)、デジタルビデオディスク(DVD)、MP3ディスク、コンピュータのハードディスクドライブ、フロッピィ(登録商標)ディスク、スマートメディアカード、およびコンパクトフラッシュ(登録商標)カードが含まれる。
【0003】
マルチメディアコンテンツをデジタル化することの1つの利点は、デジタルフォーマットの形でアナログフォーマットよりも高い品質でマルチメディアコンテンツを同報通信し、レンダリングすることができることである。デジタルマルチメディアをキャプチャおよびレンダリングするのに使用される装置および記憶媒体はまた、同じマルチメディアをアナログフォーマットの形でキャプチャおよびレンダリングするのに必要な装置および記憶媒体よりも一般に小さい。マルチメディアコンテンツをデジタル化することのさらに別の利点は、一般に、デジタルデータを索引付けして、アナログデータよりも迅速にアクセスできることである。
【0004】
マルチメディアコンテンツはデジタル化することによってより有利に扱えることから、マルチメディアコンテンツをキャプチャ、編集、およびレンダリングすることができるデジタル装置およびマルチメディアアプリケーションに対する要求が高まった。したがって、コンピュータ業界では、この要求の高まりに対応して改良型の装置およびアプリケーションが開発されている。
【0005】
しかし、マルチメディアコンテンツ用の改良型のアプリケーションを提供することにより生じる根本的な問題は、デジタルデータを符号化して伝送するために使用される多数の異なるタイプのフォーマット、規格、およびプロトコルが存在するということである。様々なフォーマット規格の例には、例えばMPEG(Moving Picture Experts Group)、ASF(Advanced Streaming Format)、AVI(Audio Video Interleave)、Active Movie、Cinepaq、QuickTime、Indeo、ATVEF(Advanced Television Enhancement Forum)、およびATSC(Advanced Television Systems Committee)が含まれる。
【0006】
様々なプロトコルおよび言語の例には、RTSP(Real−Time Streaming Protocol)、RTP(Real−Time Protocol)、RTCP (Real−Time Control Protocol)、UDP(User Datagram Protocol)、HTTP(Hypertext Transport Protocol)、MMS(Microsoft Media Server)、TCP(Transmission Control Protocol)、XML(eXtensibleMarkup Language)、およびSMIL(Synchronized Multimedia Integration Language)が含まれる。
【0007】
限定はしないが、テレビジョン放送局、ケーブル局、ラジオ局、CD、DVD、コンピュータのハードドライブ、インターネット、MP3プレーヤなどを含む多数の異なるマルチメディアソースも存在する。これらの様々なマルチメディアソースはそれぞれ、マルチメディアコンテンツにアクセスしてそれを処理するのに使用するマルチメディアアプリケーションに、様々な方法でマルチメディアコンテンツを提示する。それにより、様々な異なるフォーマット、規格、およびプロトコルを解釈するようにマルチメディアアプリケーションを構成することが必要となる。
【0008】
【発明が解決しようとする課題】
したがって、マルチメディアフォーマット、規格、およびプロトコルが極めて多様であるため、マルチメディアコンテンツを提示するのに使用することができる様々な規格、プロトコル、言語、および要件に対処することができるマルチメディアアプリケーションを作成しなければならずプログラマにとり負担となる。しかし、マルチメディアアプリケーションをこのように個々にプログラムすることは非効率であり、特に複数のアプリケーションで単一のコンピューティングシステムが構成され、各アプリケーションをマルチメディアコンテンツの一定の基本的な情報を解釈するようにプログラムしなければならないときは特に非効率である。例えば、各アプリケーションがマルチメディアコンテンツの持続時間、マルチメディアコンテンツのフォーマット、マルチメディアコンテンツ内に存在するデータのタイプなどをそれぞれ判定することが必要となる可能性がある。
【0009】
マルチメディアコンテンツに関する基本情報を個々に判定するように様々なアプリケーションをそれぞれプログラムするために、重複した労力が必要となる。さらに、そのようにプログラムすることは、マルチメディアアプリケーションを個々にプログラムするのに必要な時間、コスト、および資源を浪費することから望ましくない。したがって、各マルチメディアアプリケーションが直接的にマルチメディアコンテンツの特徴を個々に解釈および判定することを必要とせずに、マルチメディアデータにアクセスしてそれを処理することを可能にする改良された方法が本技術分野で求められている。
【0010】
【課題を解決するための手段】
本発明は主に、マルチメディアアプリケーションがマルチメディアデータにアクセスしてそれを処理するのを容易にし、より具体的には、アプリケーションがマルチメディアデータに関する基本情報を得るのを容易にする改良された方法、システム、およびコンピュータプログラム製品を対象とする。
【0011】
本発明の一実施形態によれば、コンピューティングシステムが、マルチメディアコンテンツを有する少なくとも1つのマルチメディアソースにアクセスし、その結果、コンピューティングシステムに関連する1つまたは複数のアプリケーションによってマルチメディアコンテンツを処理することができる。このコンピューティングシステムは、限定はしないがコンピュータ、DVDプレーヤ、およびプログラム可能ビデオレコーダ(PVR)を含むことができる。マルチメディアコンテンツは、限定はしないがオーディオデータやビデオデータを含むことができる。一例として、アプリケーションは、限定はしないがマルチメディアコンテンツをオーサリングし、編集し、再生することを含む所定の作法でマルチメディアコンテンツを処理するように構成される。
【0012】
本発明の一態様によれば、アプリケーションは、マルチメディアコンテンツを処理するのに必要となる可能性のある、マルチメディアソースおよびマルチメディアコンテンツに関する基本情報をマルチメディアソースから直接得るのではなく、メディアソースアプリケーションプログラミングインタフェース(API)から得る。これにより、マルチメディアアプリケーションを作成するためのプログラミング要件が大幅に削減される。具体的には、様々なフォーマットで提示される可能性のある基本マルチメディア情報を各アプリケーションが解釈および取得できるようにするためにコードを重複して用いてアプリケーションをプログラムする必要がない。これに代えて、本発明によれば、アプリケーションは、標準的かつ所定の方法でメディアソースAPIから基本マルチメディア情報を容易に得ることができ、それによって、マルチメディアコンテンツを処理するためにアプリケーションが実施する必要のある作業が簡潔になる。
【0013】
一実施形態によれば、基本情報は、フォーマットに無関係なデータ(format−agnostic data)とフォーマット特有のデータを共に含むことができる。しかし、メディアソースAPIによってアプリケーションが基本情報を使用できるようになっても、依然としてアプリケーション自体でフォーマット特有の情報を得るようにアプリケーションをプログラムすることができることが理解されよう。
【0014】
メディアソースAPIによって得ることができ、および使用できるようにされる基本マルチメディア情報の例には、限定はしないが、下記でより詳細に説明するように、マルチメディアプレゼンテーションの持続時間、プレゼンテーション内の個々のストリームの持続時間、プレゼンテーション内のストリーム数、各ストリームがサポートするメディアタイプ、ならびにプレゼンテーション内の各ストリームに関連する開始時間および停止時間が含まれる。
【0015】
本発明の別の態様によれば、メディアソースAPIは、マルチメディアソースイベントおよびマルチメディアコンテンツイベントを待ち行列化する1つまたは複数のイベントキューテーブルを管理するように構成される。これにより、コンピューティングシステムのアプリケーションは、イベントキューテーブル内に入れられた(または入れられる可能性のある)イベントを求めてメディアソースAPIに関数呼出しを発行することが可能となる。イベントキューの利点の一つは、単一の関数呼出しがいくつかのイベントを生成できこと、すなわちイベントキューが、現呼出しが完了するまでイベントの処理を延期する手段を提供することである。通常、メディアソースは、処理されるまでイベントキューに追加されるイベントを生成する。イベントは、いつでもキューに追加することができ、アプリケーションの処理中であっても追加することができる。
【0016】
アプリケーションから適切なイベント要求を受け取ったとき、メディアソースAPIは、要求されたイベントに関連するオブジェクトを要求側アプリケーションに返す。要求されたイベントが待ち行列化されない場合、イベントが待ち行列化されるまで要求は保留状態となる。アプリケーションに返されるオブジェクトは、限定はしないが、下記でより詳細に説明するように、マルチメディアコンテンツに関する基本情報、マルチメディアコンテンツを提示することに関するプレゼンテーション情報、プレゼンテーションを開始するためのコマンド、およびマルチメディアコンテンツを提示する方法全体を制御することを可能にするコマンドを含むことができる。このような制御を使用して、いくつかのメディアストリームおよびいくつかのメディアタイプを同時に管理することができる。
【0017】
本発明の追加の特徴および利点を下記で説明する。本発明の追加の特徴および利点の一部はその説明から明らかとなり、または本発明を実施することによって理解することができよう。本発明の特徴および利点は、特許請求の範囲で具体的に指摘される各機器と、各機器の組合せによって理解され取得することができる。本発明の上記およびその他の特徴は、下記の説明と特許請求の範囲からより完全に明らかとなり、または下記で説明する本発明を実施することによって理解することができよう。
【0018】
本発明の上記で列挙した利点やその他の利点を得る方法を説明するために、添付の図面に示される本発明の特定の実施形態を参照しながら、上記で簡潔に説明した本発明のより具体的な説明を行う。これらの図面は本発明の典型的な実施形態だけを示しており、したがって本発明の範囲を限定するものとみなすべきでないことを理解した上で、添付の図面を使用することにより、本発明をさらに具体的、詳細に説明する。
【0019】
【発明の実施の形態】
本発明は、様々なマルチメディアソースから発信されるマルチメディアコンテンツにアプリケーションがアクセスし、それを処理するのを容易にする方法、システム、およびコンピュータプログラム製品まで及ぶ。本発明の一態様によれば、コンピューティングシステムは、マルチメディアソースとそれに含まれるマルチメディアコンテンツについての基本情報を得るように構成されたアプリケーションプログラミングインタフェース(API)を含む。
【0020】
基本情報を得た後、コンピューティングシステムに関連する任意の数のアプリケーションが、本発明のメディアソースAPIを介して基本情報を使用できるようになる。このようにして、メディアソースAPIを理解するアプリケーションは、マルチメディアソースから情報を直接得るのに必要となる再プログラミングをほとんどまたは全くせずに、基本マルチメディア情報にアクセスしてそれを使用し、マルチメディアコンテンツを処理することができる。
【0021】
以上により、マルチメディアアプリケーションを作成するのに必要となる時間、コスト、および資源を削減できることを当業者は(本詳細な説明を読む際に)理解するであろう。具体的には、マルチメディア情報を提示することができる様々な異なるメディアフォーマットの形のマルチメディアソースから直接的に基本マルチメディア情報を解釈および取得するようにマルチメディアアプリケーションをプログラムする必要がない。
【0022】
本発明の実施形態は、下記でより詳細に説明するように、様々なコンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを有することができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を搬送し、あるいはそれが格納されたコンピュータ読取可能な媒体も含む。このようなコンピュータ読取可能な媒体は、汎用コンピュータまたは専用コンピュータでアクセスすることができる入手可能ないかなる媒体とすることができる。例えば、限定はしないがこのようなコンピュータ読取可能な媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスクストレージ、磁気ディスクストレージまたはその他の磁気記憶装置などの物理的記憶媒体、あるいはコンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を搬送または記憶するのに使用することができ、および汎用コンピュータまたは専用コンピュータでアクセスすることができるその他のいかなる媒体をも含むことができる。
【0023】
ネットワークまたは他の通信接続(ハードワイヤード、ワイヤレス、あるいはハードワイヤードまたはワイヤレスの組合せ)を介して情報がコンピュータに転送または提供されるとき、コンピュータは、その接続をコンピュータ読取可能な媒体として適切に認識する。したがって、そのようないかなる接続もコンピュータ読取可能な媒体と正式に呼ばれる。上記の組合せもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。コンピュータ実行可能命令は例えば、ある機能または1群の機能を汎用コンピュータ、専用コンピュータ、または専用処理装置に実施させる命令およびデータを含む。
【0024】
図1とそれに対応する議論により、本発明が動作することのできるネットワーク100およびコンピューティングシステム110を一般的に説明する。一実施形態では、本発明は、ディスプレイ装置114やオーディオシステム116などのマルチメディアレンダリング装置に関連するコンピューティングシステム110を含むネットワーク100として実装される。その他のレンダリング装置を含むリモートコンピュータ160もまた、コンピューティングシステム110と通信することができる。
【0025】
一実施形態によれば、コンピューティングシステム110は、コンピュータ、PVR、DVDプレーヤ、あるいは本明細書で開示されるオペレーションを実施するように適合されたその他のいかなる装置とすることができる。コンピューティングシステムをディスプレイ装置114と一体的に配置することもでき、またはディスプレイ装置114と別々に配置することもできる。ディスプレイ装置114は、高精細度テレビジョンディスプレイ、標準型テレビジョンディスプレイ、フラットパネルディスプレイ、投影装置、コンピュータのモニタ、あるいは閲覧可能なイメージデータを表示し、または処理することができるその他のいかなる装置とすることができる。オーディオシステム116は、スピーカステレオシステム、またはサウンドデータを発することができるその他のいかなる装置とすることができ、同様に、ディスプレイ装置114と一体的に配置することができ、またはディスプレイ装置114と別々に配置することができる。
【0026】
コンピューティングシステム110は信号入力インタフェース118を含み、信号入力インタフェース118は、信号源120からマルチメディアデータを受け取る。マルチメディアデータは、信号源120から入力ライン122を介して信号入力インタフェース118に送られる。入力ライン122は、ケーブル/光接続、地上アンテナシステム、サテライトシステム、あるいはマルチメディアデータをコンピューティングシステム110に送ることができるいかなる装置またはシステムとすることができる。
【0027】
信号源120は、単一のチャネル信号源、または複数のチャネル信号源のいずれとすることもできる。単一のチャネル信号源は、ビデオカセット、コンパクトディスクなどの記録媒体を介して番組を供給する。単一のチャネル信号源の例にはVCR、DVDなどが含まれる。あるいはまた、複数のチャネル信号源は、サテライト受信機、ケーブル/光接続、地上アンテナなどによって受信される信号を送ることができるいかなるシステムまたは装置をも含む。複数チャネル信号源の例には、DSS/DVB、ケーブルボックス、ローカル番組放送(すなわち、UHF、VHF、またはATVEFを用いた番組放送)などが含まれる。
【0028】
図1にはコンピューティングシステム110を単一の番組入力ライン122と単一の信号源120を有するものとして図示するが、これに代えて、複数の信号源から複数の番組入力ラインでマルチメディアデータを送ることもできる。このような実施形態では、コンピューティングシステム110は、一度に1つの信号源または複数の信号源からマルチメディアデータを受け取ることができる。
【0029】
コンピューティングシステム110はまた、リモート制御、キーボード、マイクロフォン、またはコンピューティングシステム110に対する命令を生成することができるその他の任意の装置などの入力装置126から入力を受け取るユーザ入力インタフェース124をも含む。入力装置126は、そのような制御が可能となるように、入力リンク128を介してコンピューティングシステム110に結合し通信を行う。入力装置126は、予めプログラムされたデータに応答して、または閲覧者が入力装置126上のボタンを押下することに応答して、入力リンク128を介して命令を生成する。入力装置126はまた、コンピューティングシステム110がインターネット接続を介してマルチメディアデータを受信するときのように、コンピューティングシステム110内でウェブブラウザソフトウェアを制御することもできる。
【0030】
コンピューティングシステム110のオペレーションは、処理装置136として例示する中央演算処理装置(「CPU」)によって制御される。処理装置136は、特定用途向け集積回路(「ASIC」)138に結合して、ソフトウェアおよび/またはハードワイヤード論理回路に実装されたコンピュータ実行可能命令を使用する。処理装置136およびASIC138はシステムバス140を介して結合される。システムバス140はまた、システムメモリ142、大容量記憶装置インタフェース144、ユーザインタフェース124、および信号入力インタフェース118などの様々な他のシステム構成要素も相互接続する。処理装置136は、本発明の機能を含むコンピューティングシステム110の機能を実施するように設計されたソフトウェアを実行する。ASIC 138は、コンピューティングシステム110の一定の機能を実施するのに用いられる回路を含む。命令、データ、ならびに処理装置136およびASIC 138のオペレーションに必要なその他のソフトウェアを、読取り専用メモリ(「ROM」)146、および/またはランダムアクセスメモリ(「RAM」)148、大容量記憶装置インタフェース144に結合された大容量記憶装置150などのシステムメモリ142内に格納することができる。ROM 146、RAM 148、および大容量記憶装置150は、ASIC 138で読み取ることができるようにASIC 138に通信可能に結合され、その結果、ASIC 138からRAM 148に、場合によっては大容量記憶装置150にデータを書き込むことができる。
【0031】
大容量記憶装置150は、磁気ハードディスク152、または大量のデータを記憶することができるその他のいかなる磁気/光学式大容量メモリ装置でもよい。マルチメディアアプリケーション154、他のプログラムモジュール156、およびオーディオデータおよびビデオデータなどのマルチメディアデータを含む所望の任意のコンピュータ可読命令またはデータ。本発明によれば、本願では、マーカ、イベント、メタデータ、ならびに対応するオーディオデータおよびビデオデータと共に送られるその他のデータも含むようにマルチメディアデータを広範囲に解釈すべきである。
【0032】
コンピューティングシステム110がインターネットからマルチメディアデータを受信する実施形態では、コンピューティングシステム110は、システムバス140と、モデム166、ワイヤレスリンク、または広域ネットワーク(「WAN」)162を介して通信を確立するその他の手段(コンピューティングシステム110に内蔵されていても、外付けでもよい)との間に置かれるシリアルポートインタフェース164を含むことにより、WANを介してリモートコンピュータ160と通信する。コンピューティングシステム110はまた、標準電話回線を介する直接ダイアル通信によって、またはその他の任意の利用可能な通信媒体を使用することによって、インターネットを介して情報を送信し、マルチメディアデータを受信することもできる。
【0033】
次に信号入力インタフェース118を参照すると、番組入力ライン122上の信号がデータの様々なストリームをそれぞれ受信する複数のチャネルを含む場合、信号入力インタフェース118に含まれる同調器170が、信号中の選択したチャネルに同調を行う。複数の同調器170を使用して、あるチャネルからのマルチメディアデータを記録すると同時に別のチャネル上のマルチメディアデータを処理するなどの拡張機能を提供することができる。信号デコーダ172は、必要に応じて、ビデオデータをアナログフォーマットからデジタルフォーマットに変換し、またはデジタルフォーマットからアナログフォーマットに変換する。信号デコーダ172はまた、圧縮ストリームフォーマット(例えばMPEG、ASF)から、オーディオ、ビデオ、メタデータ、および他のデータを復号化し、解凍し、分割することもできる。コンピューティングシステム110が複数の同調器170を含む実施形態では、コンピューティングシステム110は、本明細書で開示されるオペレーションを実施するために複数の信号デコーダ172を含むこともできる。
【0034】
コンピューティングシステム110はまた、ディスプレイ装置114やオーディオシステム116などのレンダリング装置にデータを送るのに有用なビデオ出力174およびオーディオ出力176も含む。しかし、コンピューティングシステム110はデータをローカルのレンダリング装置に送ることに限定されないことが理解されるであろう。具体的には、コンピューティングシステム110は、コンピューティングシステム110の大容量記憶装置150に格納されたマルチメディアデータを処理し、および他のレンダリング装置にマルチメディアデータを送信するように別々に構成することができるリモートコンピュータ160などの任意の数のリモートコンピューティング装置にデータを送信することもできる。リモートコンピュータ160は、ケーブル/光接続、地上アンテナシステム、サテライトシステム、あるいはリモートコンピュータ160にストリームデータを送信することができるその他の任意の装置またはシステムを通る信号出力192を介して、コンピューティングシステム110からデータを直接受信することができる。あるいはまた、リモートコンピュータ160は、コンピューティングシステム110から広域ネットワーク162を介してデータを間接的に受信することもできる。
【0035】
図1と上記の対応する議論により、本発明を実装することができる適切な環境の一般的な説明をしたが、本明細書で開示される本発明の特徴を、様々な異なるシステム構成に関連して実施できることが理解されるであろう。
【0036】
図2に、マルチメディアソース220およびレンダリング装置230と通知しているコンピューティングシステム210を含む、本発明の方法を実施するための例示の一環境200を示す。図示するように、コンピューティングシステム210は、少なくとも1つのアプリケーション240、記憶媒体250、およびメディアソースAPI 260を含む。これらのそれぞれをこれから議論する。コンピューティングシステム210は、例えば図1のコンピューティングシステム110とすることができるが、本発明はそのような特定の環境には決して限定されない。
【0037】
コンピューティングシステム210のアプリケーション240は、マルチメディアソース220から受け取ったマルチメディアコンテンツを処理するように構成されたいかなるアプリケーションも含むことができる。コンピューティングシステム210が実際に図1のコンピューティングシステム110であった場合、例えばアプリケーションはマルチメディアアプリケーション154とすることができる。用語「処理する(process)」は、マルチメディアデータをレンダリングし、再生し、編集し、または操作することが可能となるようにマルチメディアデータに対して実施される任意の動作またはステップとして解釈すべきである。
【0038】
アプリケーション240の例には、限定はしないが再生、休止、シーキングなどのための制御アプリケーション、リサンプリング、等化(equalizing)、増幅、ミキシングなどのための変換アプリケーション、およびビデオカード、サウンドカード、CD−ROM読取り/書込みドライブなどの個々のコンピュータ構成要素に具体的に関連するアプリケーションが含まれる。
【0039】
本発明の一実施形態によれば、コンピューティングシステム210は、接続262を介してマルチメディアソース220からのマルチメディアコンテンツにアクセスする。接続262は、限定はしないがケーブル/光接続、地上アンテナシステム、インターネット、およびサテライトシステムを含むことができる。
【0040】
前述のように、マルチメディアコンテンツ(本明細書ではマルチメディアデータとも呼ぶ)は、オーディオ/ビデオデータ、ならびにオーディオ/ビデオデータに関連するメタデータ、マーカ、イベント、およびIPデータなどのその他のデータを含むことができる。マルチメディアコンテンツは、限定はしないがMPEG、MP3、ASF、AVI、WMF、RTP、WAV、MIDI、Active Movie、Cinepaq、QuickTime、およびIndeoを含む、様々な規格およびフォーマットに従って符号化することができる。
【0041】
マルチメディアソース220からマルチメディアコンテンツを受信する際、コンピューティングシステム210は、マルチメディアコンテンツを記憶媒体250に格納する。本発明の方法を容易にするため、記憶媒体250は、バッファ264、基本情報のテーブル266、およびイベントキュー268を用いて構成される。これらのそれぞれを下記でより詳細に議論する。記憶媒体250は、例えば揮発性メモリ、不揮発性メモリ、またはそれらの組合せなど任意のメモリ機能を抽象的に表す。
【0042】
使用中、アプリケーション240は、記憶媒体250に格納されたマルチメディアコンテンツを処理する。一実施形態によれば、アプリケーション240がマルチメディアコンテンツにアクセスしてそれを処理することが、メディアソースAPI 260によって容易になる。具体的には、メディアソースAPI 260は、マルチメディアコンテンツと、マルチメディアコンテンツを処理するのに必要となる可能性のあるマルチメディアソースとに関する基本情報をアプリケーション240が得ることができるいくつかのインタフェースを含む。
【0043】
一実施形態によれば、メディアソースAPI 260のインタフェースは、マルチメディアソースインタフェース270、マルチメディアコンテンツインタフェース272、マルチメディアプレゼンテーションインタフェース274、マルチメディアストリームインタフェース276、およびイベントマネージャインタフェース278を含む。これらのそれぞれを以降説明する。
【0044】
マルチメディアソースインタフェース270は、例えばマルチメディアソースがプッシュであるか、プルであるか、それともライブであるか、マルチメディアソースがデータを送信することのできるビットレート範囲、マルチメディアソースがデータ送信で使用することのできるフォーマット、マルチメディアソースが提供しまたは可能な機能(例えば、シーキング、休止など)、マルチメディアソースがマルチメディアコンテンツの提供(presentation)の割り当てまたは同期のためのクロックを含むかどうか、ならびにマルチメディアソースが一度に複数のデータストリームを送信することができるかどうかなど、マルチメディアソースについての基本情報または機能を識別するように構成される。アプリケーションがマルチメディアコンテンツを処理する作法は、上記のマルチメディアソースの属性または機能のいずれかに依存する可能性があるので、この基本情報は有用である。これらの機能は、マルチメディアコンテンツが特定のインタフェースに対応するという連結(implication)を生成することなく得ることができる。
【0045】
例えば、マルチメディアコンテンツを受信する方法を判定するのに、マルチメディアソースがプッシュソースか、プルソースか、それともライブソースかを知ることが有用な場合がある。マルチメディアソースがプッシュソース(例えばストリーミングマルチメディアソース)である場合、アプリケーション240は、マルチメディアソースからマルチメディアコンテンツをプルまたは受諾すべき速度について通知を受けることができる。そうでない場合、マルチメディアソースによってプッシュまたはストリーミングされるデータが失われる可能性がある。マルチメディアソース220がライブソースである場合、マルチメディアデータにアクセスし、マルチメディアデータを処理することに関する資源優先順位をアプリケーション240に与えることができる。マルチメディアソース220がプルソースである場合、データを求める一定の要求が作成されたときにのみ新しいマルチメディアデータが受信されることをアプリケーション240に認識させることができる。アプリケーション240はまた、マルチメディアが確実に予定通り送達および処理するためにマルチメディアコンテンツを求める呼出しをスケジュールすることを要求することがある。
【0046】
マルチメディアソース220をデータ240の送信をいかなる速度で行うように構成するかを決定することもまた、記憶媒体250内のバッファ264をマルチメディアコンテンツを格納するのに利用できるようにすべき時を決定する上で重要となる可能性がある。例えば、アプリケーションがマルチメディアコンテンツを受信する速度でデータを処理することができないとき、メディアソースAPIは、マルチメディアコンテンツを適切なアプリケーション240で首尾よく処理することができるまでマルチメディアコンテンツを格納することができるように、記憶媒体中のバッファ264を利用可能にすることができる。したがって、このようにしてアプリケーションはバッファ264に対して効果的に呼出しを行うことができ、それによってマルチメディアデータを受信および格納する速度が制御される。
【0047】
マルチメディアソースインタフェース270は、基本情報をコンピューティングシステムに提示できる様々なフォーマットを解釈するために各アプリケーションを重複してプログラムする必要なしに、マルチメディアソース220に関する適切な情報を、標準的かつ一定の作法でアプリケーションに提供する。その代わりに、本発明によれば、メディアソースAPIが情報を取得し、アプリケーション240がその情報を、例えばマルチメディアソースについての基本情報を記憶媒体に含まれる基本情報の1つまたは複数のテーブル260に格納するなどの標準的な所定の作法で利用できるようにする。マルチメディアソースについての基本情報はまた、記憶媒体内に配置せずにアプリケーション240に直ちに提示することもできる。
【0048】
マルチメディアコンテンツインタフェース272は、例えばコンピューティングシステム210に送信されるマルチメディアデータの各ストリームの持続時間、各マルチメディアストリームについての固有識別子、各マルチメディアストリームのサイズ、各ストリームに割り当てられた開始時間および停止時間、各ストリームがサポートする利用可能なメディアタイプなど、マルチメディアコンテンツについての基本情報を識別するように構成される。
【0049】
各ストリームの持続時間は、ナノ秒、またはその他の任意の所定の時間尺度によって提供することができる。各ストリームについての固有識別子をマルチメディアソースによって提供することができ、または実際のマルチメディアコンテンツ内に格納することができ、またはメディアソースAPIによって合成することができ、固有識別子は、シンボル、名前、文字、数字、またはその他の固有識別マークを含むことができる。
【0050】
マルチメディアコンテンツについての基本情報はまた、適正なアプリケーション240に情報を直接提供することによって、または基本情報のテーブル内の基本情報を記憶媒体266に格納することによって、そのアプリケーションが利用できるようにすることもできる。一実施形態によれば、基本情報は、基本情報266のテーブルに格納されたストリーム記述子オブジェクトの形で提供される。
【0051】
マルチメディアコンテンツについての基本情報は、アプリケーションがマルチメディアコンテンツを処理するのに必要であることがある。例えば、アプリケーションは、ユーザが望むメディアタイプ、またはアプリケーションと互換なメディアタイプをアプリケーションが要求することができるように、各ストリームがサポートする利用可能なメディアタイプを認識している必要があることがある。メディアタイプの例には、限定はしないがイメージファイルタイプ(例えば、JPEG、GIF、TIFFなど)、ストリーミングフォーマット(例えば、ASF、AVI、MPEG、MP3など)、およびサウンドファイルタイプ(例えば、WAV、AU、MIDIなど)が含まれる。マルチメディアコンテンツについての基本情報はまた、個々のストリームがサポートする再生言語や表示オプションも含むことができる。このことは例えば、下記で説明するように、ユーザの望む言語やマルチメディアプレゼンテーションの表示をアプリケーションが選択することを可能にするのに有用である。
【0052】
マルチメディアプレゼンテーションインタフェース274は、マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成される。意図されるプレゼンテーションについての基本情報の例には、限定はしないが意図されるプレゼンテーションについてのメタデータ、意図されるプレゼンテーションの持続時間、(前述の)ストリーム記述子オブジェクトの数、および意図されるプレゼンテーションに対してどのストリーム記述子オブジェクトが選択されたかが含まれる。
【0053】
マルチメディアプレゼンテーションインタフェース274はまた、マルチメディアプレゼンテーションに含めるべき、デフォルトストリーム記述子オブジェクトまたは選択されるストリーム記述子オブジェクトも決定する。例えば、意図されるプレゼンテーションを英語でレンダリングすべきであることをデフォルトストリーム記述子が示す場合、意図されるプレゼンテーションを英語で処理するために適切なアプリケーション構成を使用することができるように、この情報を得ることができる。
【0054】
意図されるプレゼンテーションについての基本情報は、基本情報266のテーブル内のプレゼンテーションオブジェクトとして記憶媒体に格納することができ、その結果、意図されるプレゼンテーションをレンダリングまたは編集すべきときに、適切なアプリケーション240でその基本情報にアクセスすることができる。
【0055】
一実施形態によれば、マルチメディアストリームインタフェース276は、アプリケーションにマルチメディアコンテンツへの所望されるような、制御された方法でのアクセスを可能とするように構成される。例えば、マルチメディアストリームインタフェース276により、プレゼンテーション記述子オブジェクトに含まれる記述子オブジェクトをアプリケーションが選択および選択解除することが可能となる。例えば、マルチメディアソースが様々な言語や画面表示フォーマットをサポートするDVDである場合、マルチメディアプレゼンテーションストリームインタフェース276により、アプリケーションが、アプリケーションの望むデフォルト設定に従って、またはユーザ要求に従って特定の言語や画面表示フォーマットを要求することが可能となる。一実施形態によれば、記述子オブジェクトの選択および選択解除は、マルチメディアストリームインタフェース276を介してアプリケーションからマルチメディアソースに送信される関数呼出しによって行われる。
【0056】
マルチメディアストリームインタフェース276により、アプリケーションが所望の再生速度を選択し、レンダリング装置230などの所望の出力、プレゼンテーション中にマルチメディアデータをどこに送信すべきか、利用可能なメディアタイプのうち使用するメディアタイプ、およびマルチメディアコンテンツを後でレンダリングすることを可能にし、プレゼンテーションに割り当てられた再生速度を変更するために、いつバッファを使用してマルチメディアコンテンツを格納すべきかを識別することも可能となる。マルチメディアソースによってマルチメディアコンテンツにタイムスタンプが割り当てられていないときは、マルチメディアストリームインタフェースを使用してマルチメディアコンテンツにタイムスタンプを割り当てることができる。
【0057】
最後に図示されているメディアソースAPI 260のインタフェースは、イベントマネージャインタフェース278である。イベントマネージャインタフェース278は、コンピューティングシステムが受信するマルチメディアソース220および/またはアプリケーション240によるマルチメディアソースイベントおよびマルチメディアコンテンツイベントを管理するように構成される。一実施形態によれば、マルチメディアソースイベントおよびマルチメディアコンテンツイベントは、コンピューティングシステムの記憶媒体250内のイベントキュー268に格納される。当業者ならイベントを理解されよう。図4を参照しながら下記で説明するように、アプリケーションは、1つまたは複数のイベントキューにイベントを要求することができ、それにより、オブジェクトが要求側アプリケーションに送られる。1つまたは複数のイベントキュー内のイベントは、そのイベントが参照されるストリームを含む様々な資源を参照する。1つまたは複数のイベントキューを介してマルチメディアデータを処理するための、本発明によって提供されるイベントに基づくプログラミング手法(paradigm)は有用であり、そのプログラミング手法により、アプリケーションが外部イベントに適切に応答することが可能となることを理解されるであろう。
【0058】
マルチメディアコンテンツイベントと、対応するオブジェクトの例には、限定はしないが以下のものが含まれる。すなわち、マルチメディアコンテンツがコンピューティングシステムによって受信されたことを示すイベント、このイベントは、マルチメディアコンテンツの位置および属性を識別する対応するオブジェクトを含むことができる。マルチメディアコンテンツのフォーマットの変化が生じたことを示すイベント、このイベントは、マルチメディアコンテンツの新しいフォーマットを識別する、対応するオブジェクトを含むことができる。ならびに、ストリームの終了を示すイベント、ストリームがシークされていることを示すイベント、および特定のストリームに関連するタイムスタンプを指定するイベントなど、対応するオブジェクトを有さない可能性があるその他のイベントである。
【0059】
マルチメディアソースイベントと、対応するオブジェクトの例には、限定はしないが以下のものが含まれる。すなわち、マルチメディアコンテンツのストリーミングの開始、停止、および休止を示すイベント、このイベントは、意図されるプレゼンテーションのメディアストリームを活動化および非活動化する対応するオブジェクトを有することができる。マルチメディアを求めてメディアソースがシークされたことを示すイベント、このイベントは、マルチメディアコンテンツ内でシークされた時間を識別するオブジェクトを含むことができる。新しいプレゼンテーションが利用可能であることを示すイベント、このイベントは、自動的に、または現プレゼンテーションが終了した後に新しいプレゼンテーションを開始する、対応するオブジェクトを含むことができる。新しいストリームが現プレゼンテーションで利用可能であることを示すイベント、このイベントは、(メディアソースをプッシュするために)記憶媒体にストリームをバッファリングし、または現ストリームが終了したときにストリームを求める関数呼出しを作成すべきであることをアプリケーションに通知する対応するオブジェクトを含むことができる。現プレゼンテーションの終了を示すイベント、このイベントは、プレゼンテーションに関係するキューからすべてのイベントを除去する対応するオブジェクトを含むことができる。ならびに、利用可能な新しいメタデータを現プレゼンテーションが有することを示すイベントである。このイベントは、プレゼンテーションに関連する現メタデータ状態をリフレッシュする、対応するオブジェクトを含むことができる。その他のメディアソースイベントは、限定はしないがメディアソースのデータ伝送速度の変化を示すイベントなど、対応するオブジェクトを含まない可能性がある。
【0060】
次に図3を参照すると、本発明の一実施形態に従って、アプリケーションが基本マルチメディア情報を得るのを容易にする上でどのようにメディアソースAPI 260が助けとなるかが示されている。図示されているように、この方法は、メディアソースAPI 260によって実施することができる様々な動作を含む。具体的には、メディアソースAPI 260は、マルチメディアソースからのマルチメディアコンテンツにアクセスし(動作310)、マルチメディアソースについての基本情報を識別して利用可能にし(動作320)、マルチメディアコンテンツについての基本情報を識別して利用可能にし(動作330)、マルチメディアソース/コンテンツイベントを格納するイベントキューを提供し(動作340)、イベントキュー内のイベントを求める関数呼出しを受け取り(動作350)、要求されたイベントに関連する対応するオブジェクトを要求側アプリケーションに返す(動作360)ように構成される。このようにして、メディアソースAPIは、アプリケーションがストリーミングマルチメディアデータを停止し、休止し、開始する手段を効果的に提供することができる。
【0061】
点線370によって示されているように、マルチメディアコンテンツにアクセスし、マルチメディアソース/コンテンツについての基本情報を利用可能にする動作(動作310、320、330)は一般に、マルチメディアソースおよびマルチメディアコンテンツについての基本情報を取得し、適切なアプリケーションがそれを利用できるようにする単一のステップ(ステップ380)として記述することができる。したがって、ステップ380は、対応する動作310、320、330、およびそれらに対応するものとして解釈すべきである。
【0062】
前述のように、マルチメディアソースからのマルチメディアコンテンツにアクセスする動作(動作310)は、プッシュ通信、プル通信、またはライブ通信で行うことができる。マルチメディアソース/コンテンツについての基本情報を識別し、利用可能にする動作コンテンツ(動作320および330)は、コンピューティングシステムがAPIを使用して基本情報を取得し、1つまたは複数のアプリケーションに基本情報を直接送信し、または1つまたは複数のアプリケーションによってアクセスされる記憶媒体に基本情報を格納するときに行うことができる。
【0063】
イベントを格納するイベントキューを提供する動作(動作340)は、指定のメモリをフォーマッティングしてイベントを格納することによって直接的に行うか、または指定のメモリの事前フォーマット済み部分にイベントを単に送ることによって間接的に行うことができる。指定のメモリは、コンピューティングシステムのシステムメモリまたはその他の揮発性もしくは不揮発性のいかなるローカルメモリもしくはリモートメモリを含むことができる。一実施形態では、イベントキューを提供する動作は、複数のイベントキューを提供する動作を含む。
【0064】
イベントを求める関数呼出しを受け取る動作(動作350)は、アプリケーションがイベントを求める要求を開始するまで待機することによって受動的に行うことができる。あるいは、イベントを求める関数呼出しを受け取る動作(動作350)は、イベントが待ち行列化され、要求を受ける準備ができたことを1つまたは複数のアプリケーションに通知することによって能動的に行うこともできる。この代替の方法により、メディアソースAPIがアプリケーションに取って代わって制御することなくプルシステムとして動作することが可能となる。例えば、新しいメディアストリームを受信または削除したとき、その新しいメディアストリームを示すと同時に、その新しいメディアストリームを処理する準備ができたことをアプリケーションに通知するイベントをメディアソースAPIは待ち行列化することができる。これにより、イベントを求める関数呼出しをアプリケーションが発行することが可能となり、その結果、適切な対応するオブジェクトを返すことができる(動作360)。これにより、新しいメディアストリームが再生される。
【0065】
図4に、マルチメディアアプリケーションがマルチメディアデータにアクセスし、それを処理するのを容易にする、図2のメディアソースAPI 260によって実施される一方法400の流れ図を示す。この方法は、マルチメディアプレゼンテーションオブジェクトを作成するステップを含む(ステップ410)。前述のようにマルチメディアプレゼンテーションオブジェクトは、例えばマルチメディアプレゼンテーション(例えばDVDムービー)を再生するなど、アプリケーションがマルチメディアコンテンツを処理するのを容易にすることができる情報を含む。
【0066】
マルチメディアプレゼンテーションオブジェクトを作成するための、対応する動作およびステップ(ステップ410)は、プレゼンテーションに適用されるマルチメディアコンテンツメタデータを決定する動作を含む。一般には、マルチメディアコンテンツのメタデータにより、マルチメディアコンテンツを解釈および処理するのに使用する、マルチメディアコンテンツをフォーマットする方法についての情報が提供される。次の動作は、プレゼンテーションの全持続時間を決定することを含む(動作430)。必須ではないが、動作(430)は例えば、同時にレンダリングすべき異なるメディアストリームのタイムスタンプを同期するのに有用なことがある。同期はまた、各メディアストリームから各サンプルに割り当てられたタイムスタンプを使用して行うこともできる。
【0067】
次に、方法400は、前述のストリーム記述子オブジェクトの配列を作成するステップを含む。ストリーム記述子オブジェクトを作成するための、対応する動作(ステップ440)は、各ストリームについて固有識別子を決定する動作(動作442)、各ストリームについて開始時間および停止時間を決定する動作(動作444)、各ストリームの持続時間を決定する動作(動作446)、および各ストリームのサポートするすべてのメディアタイプを決定する動作(448)を含む。
【0068】
前述の、アプリケーションが使用できるようになるストリーム記述子オブジェクトの配列を作成する際(ステップ440)、マルチメディアプレゼンテーションオブジェクトを作成するステップ(ステップ410)は、プレゼンテーションをレンダリングすべき好ましいメディアタイプを選択する動作をさらに含むことができる。
【0069】
マルチメディアプレゼンテーションオブジェクトを作成する際、メディアソースAPIは、新しいプレゼンテーションの準備ができたというイベントをイベントキューに待ち行列化する。その後に、1つまたは複数のアプリケーションが、新しいプレゼンテーションイベントを求める関数呼出しを発行し、その関数呼出しにより、メディアソースAPIは、新しく作成したメディアプレゼンテーションオブジェクトを要求側アプリケーションに返す。ストリーム記述子オブジェクトの配列を含むマルチメディアプレゼンテーションオブジェクトを受け取った際、アプリケーションは、プレゼンテーションの適切なストリームを適切な時に活動化することができる。
【0070】
プレゼンテーション中、活動化されたメディアストリームをバッファリングするために1つまたは複数のアプリケーションがバッファを要求したとき、メディアソースAPIによってバッファが1つまたは複数のアプリケーションに提示される(動作460)。一実施形態では、アプリケーション自体がバッファのためのスペースを割り振り、メディアソースAPIがマルチメディアデータでバッファを満たす。別の実施形態では、メディアソースAPIがバッファのためのスペースを割り振り、かつマルチメディアデータでバッファを満たす。メディアソースAPIにより、プレゼンテーション中にアプリケーションがマルチメディアコンテンツを休止し、停止し、シークすることも、メディアソースによってこの機能を可能となるときに可能となる。環境によっては、例えば、メディアソースがライブプレゼンテーションの停止を許可しない場合がある。
【0071】
プレゼンテーション中にイベントを受け取ったとき、メディアソースAPIは引き続き、イベントを待ち行列化し、イベントを求める要求に応答する。例えば、現メディアストリームが終了し、かつ新しいメディアストリームが利用可能であることを示すイベントをメディアソースAPIが受け取ったとき、メディアソースAPIは、適切なアプリケーションを通知し、待ち行列化イベントを求める関数呼出しの形で新しいメディアストリームを求める要求を受け取るまで待機する。次いで、図3に示すように、アプリケーションは、新しく受け取ったメディアストリームイベントを求める適切な関数呼出しを提供するとき、要求したイベントに関連するオブジェクトがアプリケーションに返され、それによって新しいメディアストリームを活動化することが可能となる。
【0072】
図3および4に示す動作を順番に示したが、異なる順番およびシーケンスで動作を実施することもできることを理解されるであろう。例えば限定はしないが、イベントキューを提供する動作(動作340)、イベントを求める関数呼出しを受け取る動作(動作350)、およびマルチメディアコンテンツにアクセスする動作(310)を同時に行うことができる。
【0073】
まとめると、本発明の方法により、APIが、マルチメディアデータを処理するのに必要である可能性のある基本マルチメディア情報を得ることが可能となる。これを行うことにより、1つまたは複数のアプリケーションが、マルチメディアソースから情報を個々に直接得ることを必要とされずに、所定の標準の方法でAPIから基本情報を容易に得ることが本発明によって可能となる。
【0074】
マルチメディアアプリケーション内にプログラムしなければならない機能を削減し、それによって新しいマルチメディアアプリケーションを作成するのに必要な負担(例えば、コスト、時間、および資源)を削減する上で本発明が特に有用であることを、本願を読む際に当業者は理解するであろう。
【0075】
次に、本明細書で説明するインタフェースの一部を作成するのに使用することができるコードを説明する。特定のコードを下記で示すが、本発明の範囲に包含される多数のソフトウェア実装が存在することを、当業者はこの説明を検討した後に理解されよう。したがって、下記で与えるコードは、本発明の方法を実施するための可能な実施形態を示すに過ぎず、例示のために与えたものに過ぎず、本発明の範囲を限定するものではない。したがって、本明細書で説明する任意の数のインタフェースを、モジュール、コンピュータプログラム製品、および本発明の方法を実施するその他のインタフェースに統合し、組み合わせることができる。
【0076】
一実施形態によれば、マルチメディアソースインタフェース270は、下記のIMFMediaEventGeneratorインタフェースコードを含むことができる。
【0077】
【0078】
上記のコードでは、GetCharacteristicsが、メディアソースの関心のある特徴を示すフラグを返す。例えば、メディアソースの特徴を記述するために、あるフラグを下記のように定義することができる。
【0079】
【0080】
GetServiceにより、呼出し側アプリケーションが、(IID_IMFMediaSourceRateControlインタフェースがサポートする)MS_RATE_CONTROL_SERVICEおよび(IID_IMFStreamSelectorインタフェースがサポートする)MS_STREAM_SELECTOR_SERVICEなどのメディアソースから拡張サービスを取り出すことが可能となる。
【0081】
GetDefaultPresentationは、メディアストリームのデフォルトセットを含む、メディアソース上で初期化されたコンテンツを記述するデフォルトプレゼンテーションオブジェクトを作成して、それを返す。
【0082】
「Strat」は、pPresentation入力パラメータで指定されるプレゼンテーションでメディアソースを活動化する。pPresentation入力パラメータがNULLであり、かつメディアソースが停止状態である場合、デフォルトプレゼンテーションを使用してメディアソースストリームが活動化される。メディアソースが休止状態である場合、現在アクティブなプレゼンテーションが開始される。アクティブなプレゼンテーションを既に有するソース上で新しいプレゼンテーションが開始される場合、新しいME_MEDIA_SOURCE_STARTEDイベントが待ち行列化されるとき、以前のメディアストリームオブジェクトがすべてシャットダウンされる。
【0083】
「Stop」は、メディアソース中のアクティブなストリームをすべて終了する。「Pause」は、メディアソース中のアクティブなストリームをすべて休止する。「Seek」により、メディアソースを指定の時間にシークすることが可能となる。pPresentation入力パラメータを使用して、シークを実施中のプレゼンテーションを指定する。pPresentationパラメータがNULLである場合、現在アクティブなプレゼンテーションに対してシークが実施される。パラメータがNULLでない場合、シークされているプレゼンテーションが、現在アクティブなプレゼンテーションとなり、プレゼンテーションが開始される。指定の時間のフォーマットがpguidTimeFormat入力パラメータによって示され、pguidTimeFormat入力パラメータがNULLであるとき、100nsのフォーマットである。時間フォーマットが特定のメディアストリームの状況、例えばフレームへのシークで適用されるときに、pMasterStreamパラメータが使用される。
【0084】
GetClockは、メディアソースに関連するクロックが利用可能である場合にそれを返す。このクロックは、MicrosoftのMedia Foundationに従って定義されるIMFClockとして返される。
【0085】
GetActivePresentationは、現在アクティブなメディアプレゼンテーションを返す。
【0086】
図3を参照しながら上記で説明したメディアソースイベントは、メディアソースイベントが呼出し側アプリケーションによって要求されるときに返される、対応するオブジェクトに関連する。一般に、メディアソースオブジェクトは、特定のマルチメディアの操作を可能にする。例えば、メディアソースオブジェクトは、プレゼンテーションの検索を公開し、メディアイベントを生成し、ソース制御(開始、停止、休止など)を公開することができ、前述のその他のサービスを可能にする。
【0087】
マルチメディアコンテンツインタフェース272は、下記のIMFStreamDescriptorインタフェースコードを含むことができる。
【0088】
【0089】
上記のコードでは、GetStreamIdentifierは、マルチメディアソースから受信したストリームについての固有識別子を返す。GetStartTimeはストリームの開始時間を返し、GetStopTimeはストリームの停止時間を返す。開始時間と停止時間は共に、入力パラメータguidTimeFormatを介して呼出し側アプリケーションによって要求される時間フォーマットのメディアソースに対するものである。その時間フォーマットとしてのNULLポインタは、100ns単位の標準時フォーマットを要求する。GetMediaTypeCountは、メディアストリーム上で利用可能なメディアタイプのカウントを返す。GetMediaTypeByIndexは、0からメディアタイプカウント−1の範囲で有効な入力dwIndexパラメータが与えられると、メディアタイプを返す。メディアタイプは、MicrosoftのMedia Foundationに従って定義されるIMFMediaTypeオブジェクトとして返される。「Clone」は、ストリーム記述子オブジェクトのディープコピーを作成する。
【0090】
マルチメディアコンテンツインタフェース272はまた、メディアタイプ、ストリーム時間などの1組のパラメータで初期されるストリーム記述子オブジェクトをメディアソースが作成することを可能にする下記のコードも含むことができる。
【0091】
【0092】
上記のコードは、ストリームについての識別子であるdwStreamIdentifier、サポートされるストリーム時間フォーマットのカウントであるcStreamTimes、サポートされる時間フォーマットGUIDの配列であるapguidTimeFormats、サポートされるストリーム時間フォーマットのカウントに対応するストリームについての開始時間の配列であるaStartTime、サポートされるストリーム時間フォーマットのカウントに対応する停止時間の配列であるaStopTimes、ストリームがサポートするメディアタイプのカウントであるcMediaTypes、ストリームがサポートするメディアタイプの配列であるapMediaTypes、およびプレゼンテーションオブジェクトポインタを出力する位置であるppPresentationを含む、様々なパラメータを含む。
【0093】
マルチメディアプレゼンテーションインタフェース274は、下記のIMFMediaPresentationインタフェースコードを含むことができる。
【0094】
【0095】
上記のコードでは、GetMetadataは、プレゼンテーションのコンテンツおよびメタデータ全体へのアクセスを提供するメタデータ管理インタフェースを取り出す。GetDurationは、プレゼンテーションの持続時間を返す。ヌルポインタが指定された場合、返される持続時間は、100ns単位のデフォルト時間フォーマットである。GetStreamDescriptorCountは、プレゼンテーション内のストリーム記述子オブジェクトのカウントを返し、各ストリーム記述子オブジェクトはメディアプレゼンテーション内のストリームを記述する。GetStreamDescriptorBylndexは、dwIndex入力パラメータで指定される索引に関連するプレゼンテーション内のストリーム記述子を取り出す。pfSelectedは、ストリームを活動化することができるようにストリームがプレゼンテーション内で選択されたかどうかを示す。ppSelectedMediaTypeは、プレゼンテーション内のストリームに対して選択されるメディアタイプを示す。このメディアタイプは、サポートされるストリームメディアタイプのセットから導出される。
【0096】
SelectStreamにより、(dwSelectionFlagsによって示される)ストリーム選択フラグおよび選択されたメディアタイプを提供することによって、アプリケーションがプレゼンテーション内のストリームを選択することが可能となる。DeselectStreamにより、アプリケーションがプレゼンテーション内のストリームを選択解除することが可能となる。「Clone」により、すべてのストリーム記述子のコピーと、関連する情報が作成される。
【0097】
マルチメディアプレゼンテーションインタフェース274はまた、1組のストリーム記述子、メタデータなどで初期化されたメディアプレゼンテーションオブジェクトをソースが作成することを可能にする下記のコードも含むことができる。
【0098】
【0099】
上記のコードのパラメータは、プレゼンテーションを関連付けるべきメタデータオブジェクトであるpunkMetadata、100ns間隔単位のプレゼンテーションの長さであるIIDuration、プレゼンテーション内のストリーム記述子の数であるcStreamDescriptor、プレゼンテーションと関連付けるべきストリーム記述子の配列であるaStreamDescriptors、およびプレゼンテーションオブジェクトポインタを出力する位置であるppPresentationを含む。
【0100】
マルチメディアストリームインタフェース276は、前述のIMFMediaSourceインタフェースコードと関連付けることができ、下記のIMFMediaStreamインタフェースコードをさらに含むことができる。
【0101】
【0102】
上記のコードでは、GetMediaSourceは、ストリームが属するメディアソースオブジェクトを返す。GetStrean記述子は、ストリームを活動化するのに使用するストリーム記述子オブジェクトを返す。GetCurrentMediaTypeは、アクティブストリーム上で構成された現メディアタイプを返す。SetCurrentMediaTypeにより、アプリケーションがマルチメディアの出力に対して新しい現メディアタイプを設定することが可能となる。IsEndOfStreamは、ストリームについてのすべてのイベントがキューから除かれた場合に真を返し、そうでない場合に偽を返す。
【0103】
ProcessBufferは、バッファをメディアストリームに提示し、したがってメディアストリームは、イベントを介してサンプルをメディアストリームキュー内に送達することができる。バッファは、MicrosoftのMedia Foundationに従って定義されたpBuffer入力パラメータを介して、ImediaBufferとして提示される。メディアストリームがバッファのサンプルではなくメディアストリーム自体のサンプルを使用することをアプリケーションが望む場合、アプリケーションは、ProcessBufferをNULLに指定しながら、依然として(フロー制御を維持するために)ProcessBufferを呼び出すことができる。
【0104】
「Shutdown」は、メディアストリームオブジェクトを解放する前にメディアストリームオブジェクトを明示的にシャットダウンするのに使用される。
アプリケーションは、ストリームが終了したときにこのメソッドを呼び出す。シャットダウンの実装は、待機イベントジェネレータ(GetEvent、BeginEvent)を解放し、待ち行列化イベントを破棄し、対応するソースオブジェクトへの任意の参照を解放する。シャットダウンはまた、シャットダウンが適切とみなすその他の任意の資源もシャットダウンすることができる。
【0105】
マルチメディアストリームインタフェースはまた、下記のIMFMediaStreamArrayインタフェースコードと関連付けることもできる。
【0106】
【0107】
上記のコードでは、GetMediaStreamCountは、配列中のメディアストリームオブジェクトのカウントを返し、GetMediaStreamByIndexは、dwIndex入力パラメータで指定される索引に関連するメディアストリームを返す。
【0108】
マルチメディアストリームインタフェースはまた、下記のIMFMediaStreamSelectorインタフェースコードと関連付けることもできる。
【0109】
【0110】
上記のコードでは、SelectStreamsは、入力ビットレート(dwBitrate)指定子および言語(pwszLanguage)指定子で与えられるメディアソース特有の自動ストリーム選択論理によってマッチングされるプレゼンテーション内のストリームを選択する。GetOutputIdentifierFromStreamIdentifierは、適切な場合にアプリケーションが新しく選択されたストリームを同じレンダリング出力にマッピングすることができるように、特定の選択したストリームが関連する出力識別子を返す。
【0111】
下記のフラグを使用して、ストリーム選択プロセスを変更することもできる。
【0112】
【0113】
マルチメディアストリームインタフェースはまた、下記のIMFMediaSourceRateControlインタフェースコードと関連付けることもできる。
【0114】
【0115】
上記のコードでは、GetMinRateは、メディアソースに対して設定することができる可能な最小の速度を返す。GetMaxRateは、メディアソースに対して設定することができる可能な最大の速度を返す。GetCurrentRateは、メディアソースの現在の速度を返す。SetRateは、メディアソースの速度を変更する。一実施形態では、制御インタフェースに対して標準速度が1.0に設定される。他のすべての速度は標準速度の倍数である(例えば、2.0は標準の2倍の速度である)。メディアソースが開始状態または停止状態のときに速度を変更することができる。
【0116】
任意選択で、IMFMediaSourceRateControlインタフェースコードをメディアソースオブジェクトで実装し、例えばネットワークストリーミングソースがキーフレームだけを送信するためにサーバに速度変更メッセージを送信するときなどに、メディアソースオブジェクト自体の速度制御を公開することができる。
【0117】
イベントマネージャインタフェース278は、下記のIMFMediaイベントインタフェースソースコードを含むことができる。
【0118】
【0119】
上記のソースコードでは、GetTypeは、要求されたイベントについてのイベントタイプを返す。GetStatusは、指定のイベントのステータスをHRESULTとして返す。GetDataObjectは、要求されたメディアイベントに関連するオブジェクトを返す。イベントタイプおよびイベントオブジェクトは、図3を参照して上記で説明した。
【0120】
イベントマネージャインタフェース278はまた、下記のIMFMediaEventGeneratorインタフェースソースコードも含むことができる。
【0121】
【0122】
上記のコードでは、GetEventにより、呼出し側がイベントキュー内で利用可能な次のイベントを同期的に取り出すことが可能となる。dwFlagsがゼロである場合、この機能は、イベントをキューから返すのに利用可能となるまでブロックされる。BeginGetEventにより、イベントを求める非同期の要求を呼出し側が開始することが可能となる。EndGetEventにより、前のBeginGetEvent要求に関連するメディアイベントオブジェクトを呼出し側アプリケーションが取り出すことが可能となる。
【0123】
使用中、アプリケーションは、以下を用いてBeginGetEventに呼出しを行うことができる。
【0124】
【0125】
次いで、イベントが待ち行列化されたときにアプリケーションコールバックが起動される。下記のソースコードを使用して、関連するイベントを実際に取り出すことができる。
【0126】
【0127】
より多くのイベントを取得するために、アプリケーションがBeginGetEventを再度呼び出す必要がある可能性がある。しかし別の実施形態では、下記のコードを用いて複数のイベントを処理することができる。
【0128】
//pResultに対してNULLを渡した場合、これはすべてBeginGetEventになる。そうでない場合、EndGetEventプロセスを介して次のイベントを取り出し、それを処理し、続行すべき場合、BeginGetEventを呼び出す。
【0129】
上記のコードは、マルチメディアデータをマルチメディアアプリケーションでアクセスおよび処理するのを容易にするために本発明に従って使用することができるソースコードおよびプログラムインタフェースのある特定の実施形態を示している。
【0130】
しかし、本発明の精神および本質的な特徴から逸脱することなく、本発明をその他の特定の形で実施できることを理解されよう。記載の実施形態は、すべての点において、限定的なものではなく例示的なものとみなすべきである。したがって本発明の範囲は、上記の説明ではなく、頭記の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲内にあるすべての変更は、特許請求の範囲内に包含されるべきである。
【図面の簡単な説明】
【図1】本発明の一実施形態の方法を実施するのに使用することができるネットワーク内のコンピューティングシステムを示す図である。
【図2】一実施形態のアプリケーション、記憶媒体、およびメディアソースアプリケーションプログラミングインタフェース(API)を含むコンピューティングシステムがマルチメディアソースおよびレンダリング装置と通信している、本発明の方法を実施するための環境を示す図である。
【図3】少なくとも1つのアプリケーションが基本マルチメディア情報にアクセスするのを容易にし、かつマルチメディアコンテンツの処理を容易にする一方法のフロー図である。
【図4】図2のメディアソースAPIを使用してマルチメディアプレゼンテーションオブジェクトを作成する一方法のフロー図である。
【符号の説明】
100 ネットワーク
110、210 コンピューティングシステム
114 ディスプレイ装置
116 オーディオシステム
118 信号入力インタフェース
120 信号源
122 入力ライン
124 ユーザ入力インタフェース
126 入力装置
128 入力リンク
136 処理装置
138 特定用途向け集積回路(ASIC)
140 システムバス
142 システムメモリ
144 大容量記憶装置インタフェース
146 読取り専用メモリ(ROM)
148 ランダムアクセスメモリ(RAM)
150 大容量記憶装置
152 磁気ハードディスク
154 マルチメディアアプリケーション
156 他のプログラムモジュール
158 マルチメディアデータ
160 リモートコンピュータ
162 広域ネットワーク
164 シリアルポートインタフェース
166 モデム
170 同調器
172 信号デコーダ
174 ビデオ出力
176 オーディオ出力
192 信号出力
220 マルチメディアソース
230 レンダリング装置
240 アプリケーション
250 記憶媒体
260 基本情報のテーブル
260 メディアソースAPI
262 接続
264 バッファ
268 イベントキュー
270 マルチメディアソースインタフェース
272 マルチメディアコンテンツインタフェース
274 マルチメディアプレゼンテーションインタフェース
276 マルチメディアストリームインタフェース
278 イベントマネージャインタフェース
Claims (22)
- マルチメディアソースからのマルチメディアコンテンツを処理するように構成された少なくとも1つのアプリケーションに関連するコンピューティングシステムにおいて、マルチメディアソースに関する基本情報およびマルチメディアコンテンツに関する基本情報を識別し、前記アプリケーションに提供することにより、前記少なくとも1つのアプリケーションが前記マルチメディアコンテンツを処理するのを容易にして、前記マルチメディアソースからの直接の基本情報を識別するために、前記少なくとも1つのアプリケーションをプログラムすることを必要としないようにする方法であって、
プレゼンテーションにおいてレンダリングされるための前記マルチメディアソースからのマルチメディアコンテンツにアクセスする動作と、
マルチメディアインタフェースを使用して、前記マルチメディアコンテンツに関する基本情報、および該マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別する動作と、
マルチメディアプレゼンテーションオブジェクトを生成する動作であって、
プレゼンテーションに対応し、前記マルチメディアコンテンツのフォーマット方法を提供するマルチメディアコンテンツメタデータを判定する動作と、
前記プレゼンテーションの持続時間を判定する動作と、
前記意図されるプレゼンテーションに対応するマルチメディアコンテンツの各ストリームについて、(a)一意な識別子、(b)開始時間、(c)停止時間、(d)サポートされるメディアタイプを含むストリーム記述子オブジェクトの配列を生成する動作と
を含む動作と、
前記マルチメディアプレゼンテーションオブジェクトが生成されると、新たなプレゼンテーションイベントをキューに生成する動作と、
1つまたはそれ以上の所望の再生速度を選択させるだけでなく、関数呼出しによって前記記述子オブジェクトをアプリケーションに選択および選択解除させて、該アプリケーションが所望の再生速度を選択し、所望の出力、プレゼンテーション中にマルチメディアデータをどこに送信すべきか、利用可能なメディアタイプのうち使用するメディアタイプ、およびマルチメディアコンテンツを後でレンダリングすることを可能にし、プレゼンテーションに割り当てられた再生速度を変更するために、いつバッファを使用してマルチメディアコンテンツを格納すべきかを識別するマルチメディアストリームインタフェースを提供する動作であって、前記マルチメディアストリームインタフェースは、まだタイムスタンプを割り当ていなかったマルチメディアコンテンツに、前記プレゼンテーションイベントの同期を取るために使用されるタイムスタンプを割り当てるようさらに構成される、マルチメディアストリームインタフェースを提供する動作と、
関数呼出しによって新たなプレゼンテーションイベントを前記アプリケーションに要求させるイベントマネージャストリームインタフェースを提供する動作と、
1つのアプリケーションから前記新たなプレゼンテーションイベントを要求するための関数呼出しを受け取ると、該1つのアプリケーションに、前記マルチメディアコンテンツを、該マルチメディアコンテンツに割り当てられたタイムスタンプにより同期を取って処理するために該1つのアプリケーションにより使用される前記マルチメディアプレゼンテーションオブジェクトを提供する動作と
を含むことを特徴とする方法。 - 前記マルチメディアコンテンツの意図されるプレゼンテーションについての基本情報を識別するように構成されたマルチメディアプレゼンテーションインタフェースを提供する動作であって、前記マルチメディアプレゼンテーションインタフェースは、前記マルチメディアコンテンツの前記意図されるプレゼンテーションについての前記基本情報を前記少なくとも1つのアプリケーションに提供する動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記少なくとも1つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にするように構成されたマルチメディアストリームインタフェースを提供する動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記少なくとも1つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にすることには、前記アプリケーションが前記マルチメディアコンテンツのメディアタイプを変更することを可能にすることを含むことを特徴とする請求項3に記載の方法。
- マルチメディアソースイベントおよびマルチメディアコンテンツイベントをイベント管理キューで管理するように構成されたイベントマネージャインタフェースを提供する動作をさらに含み、前記イベントマネージャインタフェースがさらに、前記イベント管理キュー内のイベントを求める適正な関数呼出しを前記少なくとも1つのアプリケーションから受け取ったことに応答して、前記少なくとも1つのアプリケーションにオブジェクトを提供するように構成されることを特徴とする請求項1に記載の方法。
- 前記オブジェクトにより、前記少なくとも1つのアプリケーションが前記マルチメディアコンテンツを処理することが可能となることを特徴とする請求項5に記載の方法。
- 前記マルチメディアインタフェースは、前記マルチメディアソースがプッシュソースであるか、プルソースであるか、それともライブソースであるかを示す情報と、前記マルチメディアソースがデータを送信することができるビットレートに関する情報と、前記マルチメディアソースが前記データを送信することができるフォーマットと、マルチメディアコンテンツをシークおよび休止するために前記マルチメディアソースによって提供される機能と、前記マルチメディアソースが前記マルチメディアコンテンツをタイムスタンプするクロックを含むか否かを示す情報と、前記マルチメディアソースが一度に複数のデータストリームを送信することができるか否かを示す情報のうち少なくとも1つを含む前記マルチメディアソースについての基本情報をさらに識別することを特徴とする請求項1に記載の方法。
- 前記マルチメディアコンテンツの処理を可能にするため、マルチメディアソースイベントまたはマルチメディアコンテンツイベントを含む要求されるイベントを求める関数呼出しを、前記1つのアプリケーションから受け取る動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記要求されるイベントは、マルチメディアコンテンツが前記コンピューティングシステムで受信されたことを示すイベント、マルチメディアコンテンツのフォーマット変更が行われたことを示すイベント、前記マルチメディアコンテンツに含まれるメディアストリームの終了を示すイベント、前記マルチメディアコンテンツに含まれるメディアストリームがシークされていることを示すイベント、および前記マルチメディアコンテンツに関連するタイムスタンプを示すイベントのうち1つを含むマルチメディアソースイベントであることを特徴とする請求項8に記載の方法。
- 前記要求されるマルチメディアソースイベントに関連する前記オブジェクトは、前記マルチメディアコンテンツの位置および属性を識別するオブジェクト、前記マルチメディアコンテンツの新しいフォーマットを識別するオブジェクトのうち1つを含むことを特徴とする請求項9に記載の方法。
- 前記要求されるイベントは、前記メディアソースからのマルチメディアコンテンツの受信の開始または停止を示すイベント、マルチメディアを求めて前記メディアソースがシークされたことを示すイベント、新しいプレゼンテーションが利用可能であることを示すイベント、現プレゼンテーションで新しいストリームが利用可能であることを示すイベント、現プレゼンテーションの終了を示すイベント、利用可能な新しいメタデータを現プレゼンテーションが有することを示すイベント、およびマルチメディアコンテンツを前記メディアソースから受信する速度の変化を示すイベントのうち1つを含むマルチメディアコンテンツイベントであることを特徴とする請求項8に記載の方法。
- 前記要求されるマルチメディアコンテンツイベントに関連する前記オブジェクトは、意図されるプレゼンテーションのメディアストリームを活動化および非活動化するオブジェクト、シークされるマルチメディアコンテンツの時間を識別するオブジェクト、新しいプレゼンテーションを自動的に開始するオブジェクト、現プレゼンテーションが終了した後に新しいプレゼンテーションを開始するオブジェクト、前記マルチメディアコンテンツをバッファリングするオブジェクト、および前記プレゼンテーションに関連するメタデータ状態をリフレッシュするオブジェクトのうち1つを含むことを特徴とする請求項11に記載の方法。
- 前記要求されるイベントが要求されたときに、前記要求されるイベントは前記イベント管理キューに存在しないことを特徴とする請求項8に記載の方法。
- 前記要求されるイベントに関連する前記オブジェクトを返す前に、前記要求されるイベントが前記イベントキューに配置されるまで待機する動作をさらに含むことを特徴とする請求項13に記載の方法。
- 前記少なくとも1つのアプリケーションが前記マルチメディアコンテンツに制御された作法でアクセスすることを可能にするように構成されたマルチメディアストリームインタフェースを提供する動作と、
マルチメディアソースイベントおよびマルチメディアコンテンツイベントをイベント管理キューで管理するように構成されたイベントマネージャインタフェースを提供する動作であって、前記イベントマネージャインタフェースがさらに、前記イベント管理キュー内のイベントを求める適正な関数呼出しを前記少なくとも1つのアプリケーションから受け取ったことに応答して、前記少なくとも1つのアプリケーションにオブジェクトを提供するように構成される動作と
を含むことを特徴とする請求項1に記載の方法。 - 前記マルチメディアコンテンツは複数のメディアタイプをサポートし、前記アプリケーションが好ましいメディアタイプを選択することを可能にする動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記複数のメディアタイプは、WAVオーディオタイプ、AUオーディオタイプ、およびMIDIオーディオタイプのうち少なくとも1つを含むオーディオメディアタイプを含むことを特徴とする請求項16に記載の方法。
- 前記複数のメディアタイプは、JPEG、GIF、およびTIFFのうち少なくとも1つを含むイメージメディアタイプを含むことを特徴とする請求項16に記載の方法。
- 前記複数のメディアタイプは、AVI、ASF、MPEG、MP3、Active Movie、Cinepaq、QuickTime、およびIndeoのうち少なくとも1つを含むメディアストリーミングフォーマットを含むことを特徴とする請求項16に記載の方法。
- 前記マルチメディアプレゼンテーションオブジェクトが生成されると、新たなプレゼンテーションの準備ができたことを示すイベントをイベントキューに生成する動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記マルチメディアプレゼンテーションオブジェクトを生成する動作は、対応するプレゼンテーションをレンダリングするための所望のメディアタイプを選択する動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記マルチメディアプレゼンテーションオブジェクトを生成する動作は、同時期にレンダリングされた異なるメディアストリームのタイムスタンプの同期をとる動作をさらに含むことを特徴とする請求項1に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/185,161 US7246318B2 (en) | 2002-06-28 | 2002-06-28 | Application programming interface for utilizing multimedia data |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038970A JP2004038970A (ja) | 2004-02-05 |
JP4652674B2 true JP4652674B2 (ja) | 2011-03-16 |
Family
ID=29717988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003181883A Expired - Fee Related JP4652674B2 (ja) | 2002-06-28 | 2003-06-25 | マルチメディアデータを利用するためのアプリケーションプログラミングインタフェース |
Country Status (3)
Country | Link |
---|---|
US (1) | US7246318B2 (ja) |
EP (1) | EP1376978B1 (ja) |
JP (1) | JP4652674B2 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040034622A1 (en) * | 2002-08-13 | 2004-02-19 | Espinoza Danny Javier | Applications software and method for authoring and communicating multimedia content in a multimedia object communication and handling platform |
US7401221B2 (en) * | 2002-09-04 | 2008-07-15 | Microsoft Corporation | Advanced stream format (ASF) data stream header object protection |
KR100511785B1 (ko) * | 2002-12-20 | 2005-08-31 | 한국전자통신연구원 | 멀티미디어 컨텐츠 기술 메타데이터 저작 시스템 및 저작방법 |
US7613767B2 (en) * | 2003-07-11 | 2009-11-03 | Microsoft Corporation | Resolving a distributed topology to stream data |
US7882510B2 (en) * | 2003-08-06 | 2011-02-01 | Microsoft Corporation | Demultiplexer application programming interface |
KR100611970B1 (ko) * | 2003-08-16 | 2006-08-11 | 삼성전자주식회사 | 인터렉티브 그래픽 스트림을 기록한 정보저장매체 및 그 재생장치 |
US7979886B2 (en) | 2003-10-17 | 2011-07-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Container format for multimedia presentations |
US20050198469A1 (en) * | 2003-11-12 | 2005-09-08 | Brian Mitchell | Parallel execution optimization method and system |
US7733962B2 (en) * | 2003-12-08 | 2010-06-08 | Microsoft Corporation | Reconstructed frame caching |
US7712108B2 (en) * | 2003-12-08 | 2010-05-04 | Microsoft Corporation | Media processing methods, systems and application program interfaces |
US7900140B2 (en) * | 2003-12-08 | 2011-03-01 | Microsoft Corporation | Media processing methods, systems and application program interfaces |
US7735096B2 (en) * | 2003-12-11 | 2010-06-08 | Microsoft Corporation | Destination application program interfaces |
US20050185718A1 (en) * | 2004-02-09 | 2005-08-25 | Microsoft Corporation | Pipeline quality control |
US7934159B1 (en) | 2004-02-19 | 2011-04-26 | Microsoft Corporation | Media timeline |
US7941739B1 (en) | 2004-02-19 | 2011-05-10 | Microsoft Corporation | Timeline source |
US7664882B2 (en) * | 2004-02-21 | 2010-02-16 | Microsoft Corporation | System and method for accessing multimedia content |
US7609653B2 (en) | 2004-03-08 | 2009-10-27 | Microsoft Corporation | Resolving partial media topologies |
US7577940B2 (en) * | 2004-03-08 | 2009-08-18 | Microsoft Corporation | Managing topology changes in media applications |
US7669206B2 (en) * | 2004-04-20 | 2010-02-23 | Microsoft Corporation | Dynamic redirection of streaming media between computing devices |
US7162533B2 (en) | 2004-04-30 | 2007-01-09 | Microsoft Corporation | Session description message extensions |
US20060007957A1 (en) * | 2004-06-14 | 2006-01-12 | Nokia Corporation | Transfer of a multimedia message |
US7590750B2 (en) * | 2004-09-10 | 2009-09-15 | Microsoft Corporation | Systems and methods for multimedia remoting over terminal server connections |
KR100596723B1 (ko) * | 2004-10-13 | 2006-07-05 | 한국전자통신연구원 | 멀티미디어 스트리밍 서비스와 응용 프로그램 스트리밍서비스의 통합형 실행장치 및 실행방법 |
US7529714B2 (en) | 2004-12-14 | 2009-05-05 | International Business Machines Corporation | Cost management of software application portfolio |
US7434154B2 (en) * | 2005-01-07 | 2008-10-07 | Dell Products L.P. | Systems and methods for synchronizing media rendering |
GB2426623B (en) * | 2005-05-23 | 2011-01-26 | British Sky Broadcasting Ltd | Apparatus for media recording and playback |
US8239558B2 (en) * | 2005-06-27 | 2012-08-07 | Core Wireless Licensing, S.a.r.l. | Transport mechanisms for dynamic rich media scenes |
ITTO20060500A1 (it) * | 2006-07-06 | 2008-01-07 | St Microelectronics Srl | Sistema per l'elaborazione distribuita di contenuti multimediali in reti di comunicazione, in particolare di tipo domestico, relativo procedimento e prodotto informatico |
US8510301B2 (en) * | 2006-12-14 | 2013-08-13 | Qnx Software Systems Limited | System for selecting a media file for playback from multiple files having substantially similar media content |
US20090083294A1 (en) * | 2007-09-25 | 2009-03-26 | Shudi Gao | Efficient xml schema validation mechanism for similar xml documents |
EP2099198A1 (en) * | 2008-03-05 | 2009-09-09 | Sony Corporation | Method and device for personalizing a multimedia application |
US20090327344A1 (en) * | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Media foundation source reader |
EP2257040A1 (en) * | 2009-05-29 | 2010-12-01 | Thomson Licensing | Method and apparatus for distributing a multimedia content |
US8667402B2 (en) * | 2010-03-10 | 2014-03-04 | Onset Vi, L.P. | Visualizing communications within a social setting |
US20110225519A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc. | Social media platform for simulating a live experience |
US20110225039A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc. | Virtual social venue feeding multiple video streams |
US20110225517A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc | Pointer tools for a virtual social venue |
US20110225518A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc. | Friends toolbar for a virtual social venue |
US20110225498A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc. | Personalized avatars in a virtual social venue |
US20110225516A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc. | Instantiating browser media into a virtual social venue |
US20110239136A1 (en) * | 2010-03-10 | 2011-09-29 | Oddmobb, Inc. | Instantiating widgets into a virtual social venue |
US8572177B2 (en) * | 2010-03-10 | 2013-10-29 | Xmobb, Inc. | 3D social platform for sharing videos and webpages |
US20110225515A1 (en) * | 2010-03-10 | 2011-09-15 | Oddmobb, Inc. | Sharing emotional reactions to social media |
KR102131862B1 (ko) * | 2014-01-03 | 2020-07-08 | 삼성전자 주식회사 | 라디오 방송 제공 방법 및 장치 |
JP6610555B2 (ja) * | 2014-10-20 | 2019-11-27 | ソニー株式会社 | 受信装置、送信装置、およびデータ処理方法 |
CN107111624B (zh) | 2014-10-28 | 2021-07-13 | 索尼公司 | 接收装置、发送装置和数据处理方法 |
WO2017189533A1 (en) * | 2016-04-25 | 2017-11-02 | Convida Wireless, Llc | Data stream analytics at service layer |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11175390A (ja) * | 1997-09-30 | 1999-07-02 | Internatl Business Mach Corp <Ibm> | メディア・マネージャおよびアプリケーション・プログラム・インタフェースの実施方法 |
JPH11259304A (ja) * | 1997-10-27 | 1999-09-24 | Sun Microsyst Inc | プラグインメディアデコ―ダ供給方法及び装置 |
JP2000022741A (ja) * | 1997-10-27 | 2000-01-21 | Sun Microsyst Inc | 選択可能なデパッケタイザ構成 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6249316B1 (en) * | 1996-08-23 | 2001-06-19 | Flashpoint Technology, Inc. | Method and system for creating a temporary group of images on a digital camera |
US5956729A (en) * | 1996-09-06 | 1999-09-21 | Motorola, Inc. | Multimedia file, supporting multiple instances of media types, and method for forming same |
US5996025A (en) * | 1997-10-31 | 1999-11-30 | International Business Machines Corp. | Network transparent access framework for multimedia serving |
US6310898B1 (en) * | 1998-01-27 | 2001-10-30 | Tektronix, Inc. | Compressed video and audio transport stream multiplexer |
US6349286B2 (en) * | 1998-09-03 | 2002-02-19 | Siemens Information And Communications Network, Inc. | System and method for automatic synchronization for multimedia presentations |
US6891893B2 (en) | 2000-04-21 | 2005-05-10 | Microsoft Corp. | Extensible multimedia application program interface and related methods |
US8843590B2 (en) | 2000-05-31 | 2014-09-23 | Ebm/Ip, Llc | Systems, methods and computer program products for facilitating display of content within application programs executing on electronic devices |
US7206853B2 (en) * | 2000-10-23 | 2007-04-17 | Sony Corporation | content abstraction layer for use in home network applications |
-
2002
- 2002-06-28 US US10/185,161 patent/US7246318B2/en not_active Expired - Fee Related
-
2003
- 2003-06-10 EP EP03013067A patent/EP1376978B1/en not_active Expired - Lifetime
- 2003-06-25 JP JP2003181883A patent/JP4652674B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11175390A (ja) * | 1997-09-30 | 1999-07-02 | Internatl Business Mach Corp <Ibm> | メディア・マネージャおよびアプリケーション・プログラム・インタフェースの実施方法 |
JPH11259304A (ja) * | 1997-10-27 | 1999-09-24 | Sun Microsyst Inc | プラグインメディアデコ―ダ供給方法及び装置 |
JP2000022741A (ja) * | 1997-10-27 | 2000-01-21 | Sun Microsyst Inc | 選択可能なデパッケタイザ構成 |
Also Published As
Publication number | Publication date |
---|---|
EP1376978B1 (en) | 2012-11-28 |
US20040004631A1 (en) | 2004-01-08 |
US7246318B2 (en) | 2007-07-17 |
EP1376978A3 (en) | 2004-09-01 |
JP2004038970A (ja) | 2004-02-05 |
EP1376978A2 (en) | 2004-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4652674B2 (ja) | マルチメディアデータを利用するためのアプリケーションプログラミングインタフェース | |
US7743032B2 (en) | Scalable programmable video recorder | |
JP4865985B2 (ja) | コンテンツ・アグリゲータからのメディア・サービスを処理する方法および装置 | |
US7522817B2 (en) | Method and apparatus for storing content | |
US7788395B2 (en) | Adaptive media playback | |
US8015581B2 (en) | Resource data configuration for media content access systems and methods | |
US7890985B2 (en) | Server-side media stream manipulation for emulation of media playback functions | |
WO2017063399A1 (zh) | 一种视频播放方法和装置 | |
CN101272478B (zh) | 内容分发系统及方法、服务器装置及接收装置 | |
US20060168291A1 (en) | Interactive multichannel data distribution system | |
EP1239674B1 (en) | Recording broadcast data | |
US8134605B2 (en) | Apparatus for transmitting an HTML file with a captured or stored image to an electronic device over a network | |
WO2013008867A1 (ja) | 送信装置、送信装置の制御方法、制御プログラム、及び記録媒体 | |
US7076152B1 (en) | Image recording system | |
JP2004166253A (ja) | マルチメディアオブジェクトのための時間基準 | |
EP2061241A1 (en) | Method and device for playing video data of high bit rate format by player suitable to play video data of low bit rate format | |
US8515566B2 (en) | Sequence grabber for audio content | |
KR100736030B1 (ko) | A/v 네트워크 상의 컨텐츠를 수집하고 그 실행을제어하는 장치 및 방법 | |
US20080022313A1 (en) | Program table generator and a method for quickly displaying a program table in response to user's request | |
US20060218248A1 (en) | Contents distribution system, contents distribution method, and computer-readable storage medium therefor | |
US20080022334A1 (en) | Communication apparatus | |
JP2004507958A (ja) | ストリーミング制約の変更に基づく動的品質調整 | |
US20030187652A1 (en) | Content recognition system for indexing occurrences of objects within an audio/video data stream to generate an index database corresponding to the content data stream | |
JP4812934B2 (ja) | 同期放送データアクセス方法及び装置 | |
JP6473770B2 (ja) | 映像出力装置、字幕サーバ装置、映像出力方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090814 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100420 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20100525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100715 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101210 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101216 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4652674 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131224 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |