説明

音声/映像コーデックを抽象化するためのシステム

ゲームシステムは、コーデック抽象化層(CAL)を使用して、ゲームシステムが、ゲームアプリケーションコードの変更の必要なく、新しい、かつ/または変更されたコーデックに対応できるようにする。CALは、アプリケーションプログラミングインターフェイス(API)として機能し、メディアソースとゲームアプリケーションとの間で動作する。ゲームアプリケーションは、CALと対話し、コーデックとは対話しない。コーデック間の差は、ゲームアプリケーションには気付かれない。新しいコーデックは、既存のアプリケーションコードを変更することなく、既存のアプリケーションによって導入され、使用され得る。CALは、メモリ、ファイル、httpソース、キュー、カスタムソース、外部ドライブ、ゲームメディアソース(XMediaなど)など様々なソースからのメディアを処理する。CALは、メディアのソース、受信されるメディアのタイプ(音声、画像、動画、ゲームなど)、およびメディアの圧縮に使用されるコーデックを決定する。CALは、復号されたメディアをゲームアプリケーションに提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にゲームシステムに関し、より詳細には、ゲームシステムアプリケーションを様々なコーデックにインターフェイス接続するアプリケーションプログラミングインターフェイス(API)に関する。
【背景技術】
【0002】
当分野では、いくつかのゲームシステムが知られている。ゲームシステムの例には、Microsoft(登録商標)社のXbox(登録商標)やXenonゲームシステムなどがある。絶え間なく変化する動的なマルチメディア業界は、ゲームシステムに影響を与えている。さらに、ユーザの好みは変化する。今日人気があったものが明日には人気がないかもしれない。新しい、改良されたマルチメディアフォーマットおよび圧縮方式が絶え間なく市場に出されている。例えば、新しい/改良されたコーデックが頻繁に開発され、実装される。コーデックは、圧縮/復元アルゴリズム(compression and decompression algorithm)であり、ソフトウェア、ハードウェア、またはその組み合わせに実装することができる。一般に、コーデックは、メディア(映像、音声、画像、ゲームなど)を、その格納されたまたは送信された圧縮形式と、レンダリングされた非圧縮形式との間で変換するために使用される。一般に、新しいコーデックが実装されるとき、新しいコーデックとインターフェイス接続するアプリケーションは、新しいコーデックと互換性があるように変更されなければならない。これは、時間がかかり、煩わしく、費用がかかる可能性がある。これは特に、ゲームシステムにおいてそうである。というのは、すでにユーザの手にあるゲームシステムは、容易に変更できないからである。
【発明の開示】
【発明が解決しようとする課題】
【0003】
新しいコーデックが開発されるとき、既存のコーデックが変更されるとき、またはユーザの好みが変わるとき、ゲームアプリケーションの変更の必要なく、ゲームシステムが新しい/変更されたコーデックと互換性があることが有利である。したがって、ゲームアプリケーションコードへの変更の必要なく、新しい、かつ/または変更されたコーデックの実装を可能にするゲームシステムが求められている。
【課題を解決するための手段】
【0004】
本発明の一実施形態例では、メディアソースとゲームアプリケーションとの間にコーデック抽象化層(codecs abstraction layer)が実装される。コーデック抽象化層(CAL)は、1つまたは複数のコンピュータプログラムの形で実装され、一実施形態例では、アプリケーションプログラミングインターフェイス(API)として実装される。CALは、様々なコーテックに従って符号化された、様々なソースからのメディアを処理することができる。また、CALは、適切なコーデックに従って、符号化されたメディアを復号することもできる。CALは、復号されたメディアをゲームアプリケーションに提供する。CALは、メディアのソース、受信されるメディアのタイプ、およびメディアの圧縮に使用されるコーデックを決定する。メディアソースには、メモリ、ファイル、httpソース、キュー、カスタムソース、外部ドライブ、またはゲームメディアソース(XMediaなど)などがある。メディアタイプには、例えば、音声メディア、映像メディア、画像メディア、動画、ゲームメディア、またはその組み合わせなどがある。CALは、メディアがメディアソースから適切に取得され、フォーマットされること、および符号化されたメディアがゲームメディアプレーヤを介してレンダリングするために適切に復号されることを確実にする。ゲームアプリケーションは、CALと対話し、コーデックとは対話しない。コーデック間の差は、ゲームアプリケーションには関係ない。新しいコーデックは、既存のアプリケーションコードを変更することなく、既存のアプリケーションによって導入され、使用され得る。
【発明を実施するための最良の形態】
【0005】
技術が向上し、ユーザの要求が高まるにつれて、新しいコーデックが開発され、既存のコーデックが変更される。したがって、ゲーム開発者にとって、新しいコーデックおよび変更されたコーデックに対応することができるゲームシステムを開発することが有利である。本発明の一実施形態例によるゲームシステムは、ゲームアプリケーションへの変更を必要とすることなく、新しいコーデック、および変更されたコーデックに対応することができる。これは、拡張可能なコーデック抽象化層(CAL)を実装することによって達成される。CALは、ゲームアプリケーションが特定のコーデックとではなく、CALと対話するように、異なるコーデックおよびメディアフォーマットを管理する。
【0006】
コーデックは、圧縮および復元の略語である。メディアは、メディア情報のサイズまたは量を低減するために圧縮される。圧縮されたメディアは、元のメディア、または元のメディアに近いものを得るために復元される。一般に、圧縮技術は損失が多く、これは、冗長な、またはユーザに知覚できない情報が破棄され、取り出すことができないことを意味する。圧縮および復元は、一般に、その名前が暗示するよりも、より高度である。メディアの圧縮は、高度な信号処理技術に従ってメディアを符号化することを伴い、圧縮されたメディアの復元は、同じコーデックの高度な信号処理技術に従ってメディアを復号することを伴う。
【0007】
現在多くのタイプのコーデックが存在しており、多くの既存のコーデックは、様々なフォーマットと共に使用される。例えば、パルス符号変調(PCM)は、圧縮されていないメディアを送信し、格納するために使用される。PCMは、例えばCDやデジタルオーディオテープ(DAT)など、多くのアプリケーションおよび装置によって使用される汎用アルゴリズムである。PCMの変形には、差分パルス符号変調(DPCM)および適応的差分パルス符号変調(ADPCM)などがある。DPCMは、メディアの連続するサンプル間の差を使用する、非可逆圧縮技術(lossy compression technique)である。ADPCMは、サンプル間の差を表すために使用されるビットの数がメディア信号の特徴に応じて変わることを除いて、DPCMとほぼ同じである。PCMおよびその変形体は、通常、WAVファイルに使用される。WAVファイルは、WINDOWS(登録商標)のPCにおいて使用されるデフォルトのフォーマットである。WAVファイルは、MP3フォーマットで符号化することもできる。MP3は、MPEG(moving picture experts group)Layer−IIIフォーマットである。MP3は、相対的に高レベルの圧縮を提供し、したがって、通常、インターネットを介してメディアを提供して、制限された記憶容量を有する装置およびポータブルプレーヤにメディアを格納するために使用される。AAC(Advanced Audio Coding)は、MP4とも呼ばれ、MP3より低いビットレートでより良質のメディアを提供する符号化/復号技術である。μ−law圧縮として知られている別のフォーマットは、WAVファイルで使用することができる損失が多いフォーマットである。さらに、Microsoft(登録商標)社は、WMA(Windows Media Audio)フォーマットに従ってフォーマットされるメディアと共に使用するためのコーデックを開発している。
【0008】
図1は、本発明の一実施形態例によるメディアプレーヤにメディアを提供するシステム10のブロック図である。システム10は、受信機部14、デコーダ部16、メモリ部18、およびレンダラ部20を含む。メディアは、メディアソース12によって提供され、メディアプレーヤ22を介してレンダリングされる。本明細書に記載されているように、システム10の実施形態例は、メディアをゲームメディアプレーヤ(Xenonなど)に提供するが、システム10はこれだけに限定されない。システム10は、例えばDVDプレーヤ、CDプレーヤ、モニタ、および音声プレーヤなど、他の適切なタイプのメディアプレーヤに適用可能である。
【0009】
メディアは、メディアソース12を介してシステム10に提供される。メディアソース12は、単一のメディアソースまたは複数のメディアソースを含み得る。メディアソースの例には、ファイル、キュー、メモリ(半導体メモリ、レジスタなど)、HTTPソース、ゲームソース(Xmediaなど)、外部ドライブ(ハードディスクドライブ、DVDプレーヤ、CDプレーヤ、メモリスティックなど)、カスタムメディアソース、ネットワーク、またはその組み合わせなどがある。システム10に提供されるメディアは、次のフォーマット、WAV、MP3、AAC(MP4)、WMA、PCM、DPCM、およびADPCMの任意の組み合わせに従うことができる。システム10は、少なくとも前述のメディアフォーマットに対応することができる。システム10に提供されたメディアは、複数のタイプのメディアの任意の組み合わせを含み得る。メディアのタイプの例には、音声メディア、映像メディア、画像メディア(JPEGフォーマット、BMPフォーマット、TIFFフォーマットなど)、ゲームメディア(Xmediaなど)、動画メディア、映画メディア、マルチメディア、またはその組み合わせなどがある。以下でより詳細に説明されるように、メディアソース12によってシステム10に提供されたメディアは、生でもよく、フォーマットまたは符号化されてもよく、またはその組み合わせでもよい。
【0010】
メディアは、受信機部14に提供される。受信機部14は、メディアソース12からメディアを受信することができる任意の適切な受信機を含み得る。本発明の一実施形態例では、受信機14は、受信されたメディアをストリーミングメディアにフォーマットする。当分野で知られているように、ストリーミングメディアは、絶え間ない流れで提供される。絶え間ないメディアの流れが達成可能であるため、ストリーミングメディアは、多くのタイプのメディアと共に使用するのに有利である。ユーザは、ゲームプレイ中に間隙または中断を経験したくないため、ストリーミングメディアは、特にゲームメディアに適切である。受信機部14によって提供されたメディアは、ストリーミングメディアとして示されているが、それだけに限定されない。受信機部14によって提供されたメディアは、(ダウンロードされるなど)別々のエンティティで提供することができる。
【0011】
デコーダ部16は、受信機部14からメディアを受信する。メディアが符号化された場合、デコーダ部16は、適切なデコーダに従ってメディアを復号する。デコーダ部16は、上述した復号技術のいずれかに従ってメディアを復号する。
【0012】
メモリ部18は、デコーダ部16から復号されたメディアを受信する。メモリ部18は、任意の適切なメモリを含み得る。適切なメモリの例には、半導体メモリ、磁気メモリ、静的メモリ、揮発性メモリ、光メモリ、レジスタ、またはその組み合わせなどがある。本発明の一実施形態例では、メモリ部16は、メモリキューとして実装される。デコーダ部16は、復号されたメディアをそれぞれのメモリキューに提供する。すなわち、コーデックタイプごとに、復号されたメディアは、個別の専用メモリキューに提供される。復号されたメディアのタイプごとに専用の個別のメモリキューによって、メディアの迅速な処理が容易になる。
【0013】
復号されたメディアは、メモリ部18を介してレンダラ20に提供される。レンダラ20は、メディアプレーヤ22用にメディアを処理し、かつ/またはフォーマットする。システム10は、1つまたは複数のメディアプレーヤ22を備え得る。レンダラ20は、実装されている各メディアプレーヤ22用にメディアを適切にレンダリングする。例えば、メディアプレーヤ22がDVDプレーヤを備えている場合、レンダラ20は、メディアを、DVDプレーヤによってレンダリングできるように処理し、フォーマットする。メディアプレーヤ22がゲームメディアプレーヤ(Xenonなど)である場合、レンダラは、音声、映像、および/または動画のメディアを、ゲームメディアプレーヤによって適切にレンダリングできるように処理し、フォーマットする。
【0014】
図2は、本発明の一実施形態例によるCALの単一のインスタンスの図である。CALは、ストリームオブジェクト24、デコーダオブジェクト26、メモリキュー28、およびレンダラオブジェクト30を含む。メディアプレーヤオブジェクト32は、制御信号34、36、および38を介して、それぞれデコーダオブジェクト26、メモリキュー28、およびレンダラオブジェクト30を制御する。制御オブジェクト32によって提供された制御のタイプの例には、いくつか挙げただけでも、ストリームの再生、停止、巻き戻し、シーク、中止、および選択などがある。
【0015】
ストリームオブジェクト24は、所与のメディアソース(ファイル、キュー、メモリ(半導体メモリ、レジスタなど)、HTTPソース、ゲームソース(Xmediaなど)、外部ドライブ(ハードディスクドライブ、DVDプレーヤ、CDプレーヤ、メモリスティックなど)、カスタムメディアソース、ネットワークなど)からメディアをロードし、それを他のオブジェクトに公開するために使用される。デコーダオブジェクト26は、符号化されたメディアストリームを取得し、適切なコーデックを使用してそれを復号する。後述するように、ゲームシステム(Xenonなど)によって使用されるように想定されたコーデックごとにデコーダクラスがある。レンダラオブジェクト30は、デコーダオブジェクト26から出力され、メモリキュー28を介して提供されたストリームを取得し、中間のプレーヤオブジェクト32によって制御されるように復号されたメディアを(音声出力、映像出力などを介して)レンダリングする。デコーダのベースクラスごとに1つのレンダラクラスが実装される。例えば、すべての音声デコーダが導出されるベースクラスのデコーダがあり、対応する音声レンダラクラスがある。プレーヤオブジェクト32は、例えば音声の再生、映像の再生、DVD映画の再生など、特定のタスクのために設計された他のクラスのクライアントである。メディアプレーヤオブジェクトは、それぞれ制御信号34、36、および38を介して、デコーダオブジェクト26、メモリキュー28、およびレンダラオブジェクト30を制御する。
【0016】
図3は、本発明の一実施形態例による複数のメディアソース121〜12K、複数のデコーダオブジェクト261〜26N、複数のメモリキュー281〜28N、および複数のレンダラオブジェクト301〜30Nを示すCALの図である。メディアソース121から12Kまでは、CALによって対応することができる所定の数のメディアソースを表す。ストリームオブジェクト24は、メディアソース121〜12Kによって提供された符号化されたメディアをストリーミングメディアにフォーマットする。ストリームオブジェクト24は、符号化され、フォーマットされたメディアをデコーダオブジェクト261から26Nまでに提供する。下付文字1からNまでは、CALによって対応することができる所定の数の複数のコーデックを表す。所定の数Kは、必ずしも所定の数Nに等しい必要はないことに留意されたい。特定の符号化技術で符号化された各メディアストリームは、そのそれぞれのデコーダオブジェクトに提供される。例えば、メディアソース121から受信されたWMAメディアを、ストリームオブジェクト24によってストリームメディアにフォーマットし、復号するためにデコーダオブジェクト261に提供することができ、メディアソース122から受信されたMP3メディアを、ストリームオブジェクト24によってストリームメディアにフォーマットし、復号するためにデコーダオブジェクト262に提供することができる。各デコーダオブジェクト261から26Nまでは、復号されたストリームメディアを、それぞれのメモリキュー281から28Nまでを介してそれぞれのレンダラオブジェクト301から30Nまでに提供する。したがって、メディアソースが追加される、削除される、または変更されるとき、メディアフォーマットが追加される、削除される、または変更されるとき、あるいはコーデックが追加される、削除される、または変更されるとき、CALは、処理チェーン(processing chain)のそれぞれのインスタンスを通すようにメディアを導く。
【0017】
図4は、本発明の一実施形態例によるベースクラスを示すCALのクラス階層図である。CALは、すべての特定のCALクラスが派生する2〜3のベースクラスを含む。図4に示されているベースクラスには、CALベースクラス40、メディア情報ベースクラス42、レンダラベースクラス44、映画デコーダベースクラス46、映画プレーヤベースクラス48、ストリームベースクラス50、プレーヤベースクラス52、およびデコーダベースクラス54などがある。メディア情報ベースクラス42、レンダラベースクラス44、映画デコーダベースクラス46、映画プレーヤベースクラス48、ストリームベースクラス50、プレーヤベースクラス52、およびデコーダベースクラス54は、CALベースクラス40に応答する。メディア情報ベースクラス42は、メディアソースに関連づけられているオブジェクトの変数およびメソッドを定義する。ストリームベースクラス50は、ストリームオブジェクト24の変数およびメソッドを定義する。デコーダベースクラス54および映画デコーダベースクラス46は、デコーダオブジェクト26の変数およびメソッドを定義する。レンダラベースクラス44は、レンダラオブジェクト30の変数およびメソッドを定義する。プレーヤベースクラス52および映画プレーヤベースクラス48は、中間のプレーヤオブジェクト32の変数およびメソッドを定義する。各ベースクラス42、44、46、48、50、52、および54は、それぞれそれに応答するそれ自体のサブクラスを含む。ベースクラスは、より特定の導出クラスに共通の機能を提供するために使用される。例えば、音声デコーダおよび映像デコーダは、データのタイプに関係なく、データをある形式から別の形式に変換するため、いくつかの類似性を有する。コードを統合するために、この共通の機能は、音声および映像のデコーダが派生するデコーダのベースクラスに移る。
【0018】
図5は、本発明の一実施形態例によるベースクラス42、44、46、48、50、52、および54のそれぞれのサブクラスを示すCALのより詳細なクラス階層図である。メディア情報ベースクラス42には、それに応答する以下のサブクラス、音声情報クラス、映像情報クラス、および画像情報クラスがある。レンダラベースクラス44には、それに応答する以下のサブクラス、音声レンダラクラス、映像レンダラクラス、サブレンダラクラス、および画像レンダラクラスがある。サブレンダラクラスは、メインの映像ストリームの上に字幕などの2次映像ストリームをレンダリングするために使用される。映画デコーダベースクラス46には、それに応答する以下のサブクラス、WMV(Windows Media Video)デコーダクラスおよびMP2デコーダクラスがある。映画プレーヤベースクラス48には、それに応答するDVDプレーヤクラスがある。ストリームベースクラス50には、それに応答する以下のサブクラス、ファイルストリームクラス、HTTPストリームクラス、カスタムストリームクラス、メモリストリームクラス、およびメモリキュークラスがある。プレーヤベースクラス52には、それに応答する以下のサブクラス、音声プレーヤクラス、映像プレーヤクラス、および画像プレーヤクラスがある。デコーダベースクラス54には、それに応答する以下のサブクラス、音声デコーダクラス、映像デコーダクラス、サブデコーダクラス、および画像デコーダクラスがある。音声デコーダクラスには、それに応答するPCMデコーダクラス、WAVデコーダクラス、MP3デコーダクラス、WMAデコーダクラス、およびAACデコーダクラスがある。映像デコーダクラスには、それに応答するRCVデコーダクラスがある。画像デコーダクラスには、それに応答するBMPデコーダクラス、JPEGデコーダ、およびTIFFデコーダがある。
【0019】
本発明の説明は、複数のコーデックに対応することができるゲームシステム例との関連で説明してきたが、本発明は、複数のコーデックに対応できるより一般的なコンピューティング環境にも適用できる。図6は、本発明の一実施形態例を実施できる適したコンピューティングシステム環境600の一例を示している。コンピューティングシステム環境600は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境600を、動作環境600の例に示した構成要素のいずれか1つ、またはその組み合わせに関連する任意の依存性または必要条件を有しているものと解釈すべきではない。
【0020】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【0021】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令との一般的な関連で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークまたは他のデータ通信媒体によってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールおよび他のデータを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
【0022】
図6を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ610の形で含んでいる。本発明の一実施形態例では、コンピュータ610は、ゲームコンソールを含む。コンピュータ610の構成要素は、それだけには限定されないが、処理ユニット620、システムメモリ630、およびシステムメモリを含む様々なシステム構成要素を処理ユニット621に結合するシステムバス620を含み得る。システムバス621は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(VESA)ローカルバス、および(メザニンバスとしても知られている)周辺部品相互接続(PCI)バスなどがある。
【0023】
コンピュータ610は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ610からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、取外式および固定式媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性の取外式および固定式媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ610からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の搬送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号に情報を符号化するように1つまたは複数のその特性が設定または変更された信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、または直接配線された接続などの有線媒体、および、音響、RF、赤外線、およびその他の無線媒体などの無線媒体がある。また、上記のどんな組み合わせでもコンピュータ可読媒体の範囲内に含まれるものとする。
【0024】
システムメモリ630は、ROM631やRAM632など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム633(BIOS)は、例えば起動中など、コンピュータ610内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM631に格納されている。RAM632は一般に、処理ユニット620から直接アクセス可能な、および/または処理ユニット620が現在処理しているデータおよび/またはプログラムモジュールを含む。図6は、それだけには限定されないが一例として、オペレーティングシステム634、アプリケーションプログラム635、他のプログラムモジュール636、およびプログラムデータ637を示している。
【0025】
コンピュータ610は、他の取外式/固定式、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図6は、固定式不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ641、取外式不揮発性磁気ディスク652から読み取り、あるいはそこに書き込む磁気ディスクドライブ651、およびCD−ROMや他の光媒体など、取外式不揮発性光ディスク656から読み取り、あるいはそこに書き込む光ディスクドライブ655を示している。動作環境の例で使用できる他の取外式/固定式、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがある。ハードディスクドライブ641は一般に、インターフェイス640などの固定式メモリインターフェイスを介してシステムバス621に接続され、磁気ディスクドライブ651および光ディスクドライブ655は一般に、インターフェイス650などの取外式メモリインターフェイスによってシステムバス621に接続される。
【0026】
ドライブおよびその関連のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ610の他のデータの記憶域を提供する。図6では例えば、ハードディスクドライブ641は、オペレーティングシステム644、アプリケーションプログラム645、他のプログラムモジュール646、およびプログラムデータ647を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム634、アプリケーションプログラム635、他のプログラムモジュール636、およびプログラムデータ637と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム644、アプリケーションプログラム645、他のプログラムモジュール646、およびプログラムデータ647は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。
【0027】
ユーザは、キーボード662、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス661などの入力装置を介してコマンドおよび情報をコンピュータ610に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェイス660を介して処理ユニット620に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインターフェイスおよびバス構造で接続してもよい。
【0028】
モニタ691または他のタイプの表示装置もまた、グラフィック処理ユニット(GPU)およびビデオメモリ690を含み得る、ビデオインターフェイスなどのインターフェイスを介してシステムバス621に接続される。モニタに加えて、コンピュータは、出力周辺インターフェイス695を介して接続できるスピーカ697、プリンタ696などの他の周辺出力装置を含むこともできる。
【0029】
コンピュータ610は、リモートコンピュータ680など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ680は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ610に関連して上述した多くまたはすべての要素を含むが、図6にはメモリ記憶装置681のみを示している。示された論理接続は、LAN671およびWAN673を含んでいるが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【0030】
LANネットワーキング環境で使用する場合、コンピュータ610は、ネットワークインターフェイスまたはアダプタ670を介してLAN671に接続される。WANネットワーキング環境で使用する場合、コンピュータ610は一般に、モデム672、またはインターネットなどWAN673を介して通信を確立する他の手段を含む。モデム672は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェイス660または他の適切な機構を介してシステムバス621に接続することができる。ネットワーク式環境では、コンピュータ610に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図6は、それだけには限定されないが一例として、リモートアプリケーションプログラム685をメモリ装置681上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用することができることは理解されよう。
【0031】
上述したように、本発明の実施形態例を、様々なコンピューティング装置との関連で説明してきたが、基礎を成す概念を、新しい、かつ/または変更されたコーデックを介して処理されたメディアを使用してアプリケーションコードを変更することを必要とせずに、新しい、かつ/または変更されたコーデックに対応することが求められる、任意のコンピューティング装置またはシステムに適用することができる。
【0032】
本明細書に記載した様々な技術を、ハードウェア、ソフトウェア、または必要に応じてその組み合わせと共に実装することができる。したがって、本発明の方法および装置、またはそのいくつかの態様または一部は、フロッピーディスク、CD−ROM、ハードドライブ、または他の任意のマシン可読記憶媒体など、有形の媒体に組み込まれるプログラムコード(すなわち命令)の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされ、それによって実行されると、そのマシンは本発明を実施する装置となる。プログラム可能コンピュータ上でプログラムコードを実行する場合、コンピューティング装置は一般に、プロセッサ、プロセッサによって読み取り可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶要素を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。必要に応じて、プログラムは、アセンブリ言語またはマシン言語で実施することができる。どんな場合でも、言語はコンパイル型またはインタプリタ型言語とすることができ、ハードウェア実装と組み合わせることができる。
【0033】
本発明の方法および装置は、電子配線またはケーブルなどを介して、光ファイバを介して、または他の任意の送信形式を介してなど、何らかの送信媒体を介して送信されるプログラムコードの形式で組み込まれる通信を介して実施することもでき、プログラムコードは、EPROM、ゲートアレイ、プログラム可能論理装置(PLD)、クライアントコンピュータなど、マシンによって受信され、そこにロードされ、それによって実行されると、そのマシンは本発明を実施する装置になる。汎用プロセッサ上に実装されるとき、プログラムコードは、プロセッサと組み合わされて、本発明の機能を呼び出すように動作する一意の装置を提供する。さらに、本発明との関連で使用される任意の記憶技術は、常にハードウェアとソフトウェアとの組み合わせとすることができる。
【0034】
本発明の一実施形態例によるCALは、統合された簡単なインターフェイスを、異なるソースから来る複数のコーデックに提供する。新しいコーデックの追加の複雑さが低減される。低レベルのコーデックライブラリは、クライアントアプリケーションコードを修正する必要なく、いつでも交換することができる。開発時間は、コードの再利用の能力により短縮される。CALは、任意のコーデックがXMediaライブラリAPIを介してゲーム開発者に公開される簡単で統合された機構を提供する。CALオブジェクトからの入力および出力は、メモリ、ファイル、ネットワーク、キュー、ユーザ定義の入力など、ほぼすべてのストリームクラスを介して抽象化される。CALの実装により、データをストリームとの間でやり取りすることによってシステムテストが改善され、個々の構成要素が正しく働いているかを容易に確認することができる。
【0035】
本発明を様々な図の好ましい実施形態と共に説明してきたが、本発明から逸脱することなく本発明の同じ機能を実行するために、他の同様の実施形態を使用し、または変更および追加を記載した実施形態に加えることができることを理解されたい。例えば、本発明の一実施形態例は、例えば図1に示されているように、メディアソースとストリームオブジェクトの間に実装されるメディアソース抽出層(MSAL)を含んでいてもよい。ストリームオブジェクトは、MSALと対話し、メディアソースとは対話しない。メディアソース間の差は、ストリームオブジェクトには関係ない。新しいメディアソースは、ストリームオブジェクトを変更することなく、ストリームオブジェクトによって導入され、使用され得る。したがって、本発明は、任意の単一の実施形態に限定されるべきではなく、むしろ添付の特許請求の範囲による幅および範囲で解釈すべきである。
【図面の簡単な説明】
【0036】
【図1】本発明の一実施形態例によるメディアプレーヤにメディアを提供するシステムを示すブロック図である。
【図2】本発明の一実施形態例によるコーデック抽象化層(CAL)の単一のインスタンスを示す図である。
【図3】本発明の一実施形態例による複数のメディアソース、複数のデコーダオブジェクト、複数のメモリキュー、および複数のレンダラオブジェクトを示すCALの図である。
【図4】本発明の一実施形態例によるCALのクラス階層図である。
【図5】本発明の一実施形態例によるサブクラスを示すCALのより詳細なクラス階層図である。
【図6】本発明の態様が実装され得るコンピューティング環境例を示すブロック図である。

【特許請求の範囲】
【請求項1】
メディアをメディアプレーヤに提供する方法であって、
所定の数の符号化技術のうちの少なくとも1つに従って符号化されたメディアを複数のメディアソースのうちの少なくとも1つから受信するステップと、
前記符号化されたメディアをそれぞれの所定の復号技術に従って復号するステップと、
複数のメディアプレーヤのうちの少なくとも1つを介して、前記復号されたメディアをレンダリングするステップであって、前記複数のメディアプレーヤは、少なくとも1つのゲームメディアプレーヤを含み、前記符号化および復号の技術のうちの少なくとも1つの変更は、前記ゲームメディアプレーヤの変更を必要としない、レンダリングするステップと、
を含むことを特徴とする方法。
【請求項2】
前記受信された符号化されたメディアを所定のフォーマットに従ってフォーマットするステップと、
前記フォーマットされた符号化されたメディアを復号するために提供するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記複数のメディアソースは、ファイル、メモリ、httpソース、キュー、カスタムソース、ネットワーク、およびゲームメディアソースのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記符号化されたメディアは、符号化された音声メディア、符号化された映像メディア、符号化された画像メディア、符号化された動画メディア、および符号化されたゲームメディアのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記メディアは、WAV、MP3、AAC、MP4、WMA、PAC、DPCM、ADPCM、JPEG、TIFF、およびBMPのうちの少なくとも1つに従ってフォーマットされることを特徴とする請求項1に記載の方法。
【請求項6】
メディアをメディアプレーヤに提供するシステムであって、
符号化されたメディアを複数のメディアソースのうちの少なくとも1つから受信し、
所定の数の符号化技術のうちの少なくとも1つに従って符号化される前記符号化されたメディアを所定のフォーマットで提供する
受信機と、
前記フォーマットされたメディアを受信し、
所定の数の復号技術のうちの前記少なくとも1つに従って前記フォーマットされたメディアをそれぞれ復号する
デコーダと、
前記復号されたメディアを受信し、
複数のメディアプレーヤのうちの少なくとも1つを介して前記復号されたメディアをレンダリングし、前記複数のメディアプレーヤは、少なくとも1つのゲームメディアプレーヤを含み、前記符号化および復号の技術のうちの少なくとも1つの変更は、前記ゲームメディアプレーヤの変更を必要としない
レンダラと、
を含むことを特徴とするシステム。
【請求項7】
それぞれが
前記所定の数の復号技術のうちのそれぞれ1つに従って復号された復号メディアを受信し、
前記復号されたメディアを前記レンダラに提供する、
少なくとも1つのメモリキューをさらに含むことを特徴とする請求項6に記載のシステム。
【請求項8】
前記複数のメディアソースは、ファイル、メモリ、httpソース、キュー、カスタムソース、ネットワーク、およびゲームメディアソースのうちの少なくとも1つを含むことを特徴とする請求項6に記載のシステム。
【請求項9】
前記符号化されたメディアは、符号化された音声メディア、符号化された映像メディア、符号化された画像メディア、符号化された動画メディア、および符号化されたゲームメディアのうちの少なくとも1つを含むことを特徴とする請求項6に記載のシステム。
【請求項10】
前記メディアは、WAV、MP3、AAC、MP4、WMA、PAC、DPCM、ADPCM、JPEG、TIFF、およびBMPのうちの少なくとも1つに従ってフォーマットされることを特徴とする請求項6に記載のシステム。
【請求項11】
前記レンダリングされるメディアは、音声メディア、映像メディア、画像メディア、映画メディア、およびゲームメディアのうちの少なくとも1つを含むことを特徴とする請求項6に記載のシステム。
【請求項12】
前記メディアプレーヤは、音声メディアプレーヤ、映像メディアプレーヤ、動画映像メディアプレーヤ、DVD、CD、およびゲームメディアプレーヤのうちの少なくとも1つを含むことを特徴とする請求項6に記載のシステム。
【請求項13】
メディアをメディアプレーヤに提供するアプリケーションプログラミングインターフェイス(API)であって、
符号化されたメディアを複数のメディアソースのうちの少なくとも1つから受信し、所定の数の符号化技術のうちの少なくとも1つに従って符号化される前記符号化されたメディアを所定のフォーマットで提供するストリームオブジェクトと、
前記フォーマットされたメディアを受信し、所定の数の復号技術のうちの前記少なくとも1つに従って前記フォーマットされたメディアを、それぞれ復号するデコーダオブジェクトと、
前記復号されたメディアを受信し、少なくとも1つのゲームメディアプレーヤを含む複数のメディアプレーヤのうちの少なくとも1つを介して、前記復号されたメディアをレンダリングするレンダラオブジェクトと
を含むことを特徴とするAPI。
【請求項14】
符号化技術は、前記APIにインターフェイス接続されるアプリケーションを変更することなく前記所定の数の符号化技術内で拡張可能であることを特徴とする請求項13に記載のAPI。
【請求項15】
復号技術は、前記APIにインターフェイス接続されるアプリケーションを変更することなく前記所定の数の復号技術内で拡張可能であることを特徴とする請求項13に記載のAPI。
【請求項16】
それぞれが、
前記所定の数の復号技術のうちのそれぞれ1つに従って復号された、復号メディアを受信し、
前記復号されたメディアを前記レンダラに提供する、
少なくとも1つのメモリキューをさらに含むことを特徴とする請求項13に記載のAPI。
【請求項17】
前記複数のメディアソースは、ファイル、メモリ、httpソース、キュー、カスタムソース、ネットワーク、およびゲームメディアソースのうちの少なくとも1つを含むことを特徴とする請求項13に記載のAPI。
【請求項18】
前記符号化されたメディアは、符号化された音声メディア、符号化された映像メディア、符号化された画像メディア、符号化された動画メディア、および符号化されたゲームメディアのうちの少なくとも1つを含むことを特徴とする請求項13に記載のAPI。
【請求項19】
前記メディアは、WAV、MP3、AAC、MP4、WMA、PAC、DPCM、ADPCM、JPEG、TIFF、およびBMPのうちの少なくとも1つに従ってフォーマットされることを特徴とする請求項5に記載のAPI。
【請求項20】
前記レンダリングされたメディアは、音声メディア、映像メディア、画像メディア、映画メディア、およびゲームメディアのうちの少なくとも1つを含むことを特徴とする請求項13に記載のAPI。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2008−542855(P2008−542855A)
【公表日】平成20年11月27日(2008.11.27)
【国際特許分類】
【出願番号】特願2008−508930(P2008−508930)
【出願日】平成18年4月19日(2006.4.19)
【国際出願番号】PCT/US2006/014831
【国際公開番号】WO2006/115962
【国際公開日】平成18年11月2日(2006.11.2)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】