(57)【特許請求の範囲】
【請求項１】
装置上でメディア資源を割り当てる方法であって、
前記装置のメディアハードウェア資源に基づいて決定された１つ以上のメディア資源と、各メディアハードウェア資源の電力消費と、メディア操作を実行するための前記メディアハードウェア資源の所定のベンチマークと、に基づき、メディア資源割り当てテーブルを生成するステップと、
前記装置上でテストルーチンを実行することと前記装置の実際のクロック速度を前記装置の推定クロック速度と比較することとによって前記１つ以上のメディア資源を実行している間に前記装置に対して決定された実際のクロック速度に基づいて、前記メディア資源割り当てテーブルを調整するステップと、
第１のアプリケーションからメディア資源の要求を受信するステップであって、前記メディア資源の要求は、要求されたメディア資源と、要求された性能と、要求された電力消費とを含む、ステップと、
前記要求を受信したことに応じて、前記要求されたメディア資源を、前記要求された性能及び前記要求された電力消費に基づいて前記メディア資源割り当てテーブルと比較して、比較結果を生成するステップと、
前記要求されたメディア資源が利用可能であることを前記比較結果が示す場合に、前記要求されたメディア資源を前記第１のアプリケーションに割り当て、前記要求されたメディア資源が前記アプリケーションに割り当てられていることを示す前記メディア資源の要求に対する応答を、前記第１のアプリケーションに送信するステップと、
前記要求されたメディア資源が利用可能でないことを前記比較結果が示す場合に、異なるメディア資源の割り当てを決定して、前記要求された性能及び前記要求された電力消費を満たす割り当てを行うステップと、
を含む、方法。
【請求項２】
前記第１のアプリケーションの優先度よりも低い優先度を有する第２のアプリケーションに、メディア資源に対する前記要求を満足するために必要なメディア資源が割り当てられていることが前記比較によって示された場合に、前記メディア資源の少なくとも一部を、前記第２のアプリケーションから前記メディア資源割り当てテーブル内の前記第１のアプリケーションに割り当てるステップと、前記第２のアプリケーションに割り当てられた前記メディア資源の少なくとも一部の割り当てが解除されていることを前記第２のアプリケーションに対して示す、前記第２のアプリケーションのコールバックルーチンを呼び出すステップと、前記要求されたメディア資源が前記第１のアプリケーションに割り当てられることを示す、メディア資源に対する前記要求への応答を前記第１のアプリケーションに送信するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記メディア資源は、デコード容量、符号化容量およびスケーリング／色空間変換（ＣＳＣ）操作容量のうち少なくとも１つを含む、請求項１に記載の方法。
【請求項４】
前記メディアハードウェア資源は、１つ以上のグラフィック処理装置と、１つ以上のデバイス中央処理装置（ＣＰＵ）とを含む、請求項１に記載の方法。
【請求項５】
メディア資源割り当てシステムを開始するための要求の受信に応じて、前記メディア資源割り当てテーブルを生成するステップをさらに含む、請求項１に記載の方法。
【請求項６】
メディア資源を割り当てるための装置であって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサと通信可能に接続されたメモリと、を備え、
前記１つ以上のプロセッサは、
メディアハードウェア資源に基づいて決定された１つ以上のメディア資源と、各メディアハードウェア資源の電力消費と、メディア操作を実行するための前記メディアハードウェア資源の所定のベンチマークと、に基づき、メディア資源割り当てテーブルを生成することと、
前記装置上でテストルーチンを実行することと前記装置の実際のクロック速度を前記装置の推定クロック速度と比較することとによって前記１つ以上のメディア資源を実行している間に前記装置に対して決定された実際のクロック速度に基づいて、前記メディア資源割り当てテーブルを調整することと、
第１のアプリケーションからメディア資源の要求を受信することであって、前記メディア資源の要求は、要求されたメディア資源と、要求された性能と、要求された電力消費とを含む、ことと、
前記要求を受信したことに応じて、前記要求されたメディア資源を、前記要求された性能及び前記要求された電力消費に基づいて前記メディア資源割り当てテーブルと比較して、比較結果を生成することと、
前記要求されたメディア資源が利用可能であることを前記比較結果が示す場合に、前記要求されたメディア資源を前記第１のアプリケーションに割り当て、前記要求されたメディア資源が前記アプリケーションに割り当てられていることを示す前記メディア資源の要求に対する応答を、前記第１のアプリケーションに送信することと、
前記要求されたメディア資源が利用可能でないことを前記比較結果が示す場合に、異なるメディア資源の割り当てを決定して、前記要求された性能及び前記要求された電力消費を満たす割り当てを行うことと、
を行うように構成されている、
装置。
【請求項７】
前記１つ以上のプロセッサは、第２のアプリケーションが前記第１のアプリケーションの優先度よりも低い優先度を有することと、前記第２のアプリケーションに前記第１のアプリケーションのメディア資源に対する前記要求を満足するために必要なメディア資源が割り当てられていることと、が前記比較によって示された場合に、前記メディア資源の少なくとも一部を、前記第２のアプリケーションから前記メディア資源割り当てテーブル内の前記第１のアプリケーションに割り当て、前記第２のアプリケーションに割り当てられた前記メディア資源の少なくとも一部の割り当てが解除されていることを前記第２のアプリケーションに示す、前記第２のアプリケーションのコールバックルーチンを呼び出し、前記要求されたメディア資源が前記第１のアプリケーションに割り当てられることを示す、メディア資源に対する前記要求への応答を前記第１のアプリケーションに送信する、ようにさらに構成されている、請求項６に記載の装置。
【請求項８】
前記メディア資源は、デコード容量、符号化容量およびスケーリング／色空間変換（ＣＳＣ）操作容量のうち少なくとも１つを含む、請求項６に記載の装置。
【請求項９】
命令を含むコンピュータ可読記憶媒体であって、前記命令は、処理システム内で実行されると、メディア資源を割り当てるための方法を前記処理システムに実行させ、
前記方法は、
装置のメディアハードウェア資源に基づいて決定された１つ以上のメディア資源と、各メディアハードウェア資源の電力消費と、メディア操作を実行するための前記メディアハードウェア資源の所定のベンチマークと、に基づき、メディア資源割り当てテーブルを生成するステップと、
前記装置上でテストルーチンを実行することと前記装置の実際のクロック速度を前記装置の推定クロック速度と比較することとによって前記１つ以上のメディア資源を実行している間に前記装置に対して決定された実際のクロック速度に基づいて、前記メディア資源割り当てテーブルを調整するステップと、
第１のアプリケーションからメディア資源の要求を受信するステップであって、前記メディア資源の要求は、要求されたメディア資源と、要求された性能と、要求された電力消費とを含む、ステップと、
前記要求を受信したことに応じて、前記要求されたメディア資源を、前記要求された性能及び前記要求された電力消費に基づいて前記メディア資源割り当てテーブルと比較して、比較結果を生成するステップと、
前記要求されたメディア資源が利用可能であることを前記比較結果が示す場合に、前記要求されたメディア資源を前記第１のアプリケーションに割り当て、前記要求されたメディア資源が前記アプリケーションに割り当てられていることを示す前記メディア資源の要求に対する応答を、前記第１のアプリケーションに送信するステップと、
前記要求されたメディア資源が利用可能でないことを前記比較結果が示す場合に、異なるメディア資源の割り当てを決定して、前記要求された性能及び前記要求された電力消費を満たす割り当てを行うステップと、を含む、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１２年１０月１８日に出願された米国特許出願第１３／６５４，６９４号の利益を主張するものであり、当該米国特許出願の内容は、参照により、本明細書に完全に記載されているように組み込まれる。
【０００２】
本発明は、概して、メディアハードウェア資源の割り当てに関し、詳細には、グラフィックおよび音声処理に関するメディアハードウェア資源の割り当てに関する。
【背景技術】
【０００３】
コンピューティング装置（例えばパーソナルコンピュータなど）上のメディアハードウェア（例えばグラフィック処理装置など）の性能は向上し続けている。メディアハードウェアは、以前では、デジタルビデオディスク（ＤＶＤ）動画のスムーズなデコードおよび再生に苦労していた。現在のメディアハードウェアは、ＤＶＤ動画を容易にデコードおよび再生することができる。しかし、今日のコンピューティング装置は、ユーザーが多数のメディアアプリケーションを同時に実行するのを可能にしている。例えば、ユーザーは、ＤＶＤ動画を再生しながら、ビデオ遠隔会議アプリケーションを同時に実行し得る。いくつかのメディアアプリケーションは、良好なユーザーエクスペリエンスを提供するために、特別な性能特性を要求する。例えば、ビデオ遠隔会議では、良好なユーザーエクスペリエンスを提供するために、低遅延時間を要求する。しかし、ビデオ遠隔会議アプリケーションは、他のメディアアプリケーションがメディアハードウェアを使用している場合には、ユーザーに対して低遅延時間を提供するのが困難になる場合がある。
【０００４】
従って、メディア資源を割り当てる、装置、コンピュータ可読媒体および方法が当該技術分野において必要である。
【発明の概要】
【課題を解決するための手段】
【０００５】
一実施形態は、メディアハードウェア資源、および、メディア操作を実行するためのメディアハードウェア資源の所定のベンチマークの１つ以上に基づき、メディア資源割り当てテーブルを判断するステップと、第１のアプリケーションからのメディア資源に対する要求の受信に応じて、要求されたメディア資源をメディア資源割り当てテーブルと比較するステップと、要求されたメディア資源が利用可能であることが比較によって示された場合に、要求されたメディア資源をメディア資源割り当てテーブル内の第１のアプリケーションに割り当てるステップと、要求されたメディア資源が第１のアプリケーションに割り当てられたことを示す、メディア資源に対する要求への応答を、第１のアプリケーションに送信するステップと、を含む、メディア資源を割り当てる方法を含む。
【０００６】
方法は、要求されたメディア資源が利用可能でないことが比較によって示された場合に、要求されたメディア資源が第１のアプリケーションに割り当てられないことを第１のアプリケーションに示す、メディア資源に対する要求への応答を、第１のアプリケーションに送信するステップを含んでもよい。
【０００７】
方法は、第１のアプリケーションからのメディア資源情報に対する要求の受信に応じて、利用可能なメディア資源を示す応答を送信するステップを含んでもよい。
【０００８】
利用可能なメディア資源は、１つ以上のメディアハードウェア資源およびメディア資源要件に基づき判断されてもよい。
【０００９】
方法は、アプリケーションの優先度よりも低い優先度を有する第２のアプリケーションに、メディア資源に対する要求を満足するために必要なメディア資源が割り当てられていることが比較によって示された場合に、メディア資源の少なくとも一部を、第２のアプリケーションからメディア資源割り当てテーブル内のアプリケーションに割り当てるステップと、第２のアプリケーションに割り当てられていたメディア資源の少なくとも一部の割り当てが解除されていることを第２のアプリケーションに対して示す、第２のアプリケーションのコールバックルーチンを呼び出すステップと、要求されたメディア資源がアプリケーションに割り当てられることを示す、メディア資源に対する要求への応答をアプリケーションに送信するステップと、を含んでもよい。
【００１０】
メディア資源は、デコード容量、符号化容量、スケーリング／色空間変換（ＣＳＣ）操作容量および音声操作容量のうち少なくとも１つを含んでもよい。
【００１１】
方法は、メディアハードウェア資源、および、メディア操作を実行するためのメディアハードウェア資源の所定のベンチマークの１つ以上に基づき、メディア資源割り当てテーブルを判断するステップを含んでもよい。
【００１２】
ハードウェアメディア資源は、１つ以上のグラフィック処理装置を含む少なくとも１つのグラフィックカードハードウェア資源と、１つ以上のデバイス中央処理装置（ＣＰＵ）と、を含んでもよい。
【００１３】
本方法は、メディア資源割り当てシステムを開始するための要求の受信に応じて、メディア資源割り当てテーブルを生成するステップを含んでもよい。
【００１４】
メディア資源を割り当てるための装置が開示される。装置は、メディアハードウェア資源、および、メディア操作を実行するためのメディアハードウェア資源の所定のベンチマークの１つ以上に基づき、メディア資源割り当てテーブルを判断するように構成されたプロセッサを備え、前記プロセッサは、第１のアプリケーションからのメディア資源に対する要求の受信に対して、要求されたメディア資源をメディア資源割り当てテーブルと比較することによって応答するようにさらに構成されており、要求されたメディア資源が利用可能であることが比較によって示された場合に、要求されたメディア資源をメディア資源割り当てテーブル内の第１のアプリケーションに割り当て、要求されたメディア資源が第１のアプリケーションに割り当てられることを示す、メディア資源に対する要求への応答を、第１のアプリケーションに送信するように構成されている。
【００１５】
プロセッサは、要求されたメディア資源が利用可能でないことが比較によって示された場合に、要求されたメディア資源が第１のアプリケーションに割り当てられないことを第１のアプリケーションに示す、メディア資源に対する要求への応答を、第１のアプリケーションに送信するようにさらに構成されている。
【００１６】
プロセッサは、アプリケーションからのメディア資源情報に対する要求の受信に対して、利用可能なメディア資源を示す応答を送信することによって応答するようにさらに構成されてもよい。
【００１７】
利用可能なメディア資源は、１つ以上のメディアハードウェア資源およびメディア資源要件に基づき判断されてもよい。
【００１８】
プロセッサは、アプリケーションの優先度よりも低い優先度を有する第２のアプリケーションに、メディア資源に対する要求を満足するために必要なメディア資源が割り当てられていることが比較によって示された場合に、メディア資源の少なくとも一部を、第２のアプリケーションからメディア資源割り当てテーブル内のアプリケーションに割り当て、第２のアプリケーションに割り当てられていたメディア資源の少なくとも一部の割り当てが解除されていることを第２のアプリケーションに示す、第２のアプリケーションのコールバックルーチンを呼び出し、要求されたメディア資源がアプリケーションに割り当てられることを示す、メディア資源に対する要求への応答をアプリケーションに送信するようにさらに構成されてもよい。
【００１９】
メディア資源は、デコード容量、符号化容量、スケーリング／色空間変換（ＣＳＣ）操作容量および音声操作容量のうち少なくとも１つを含んでもよい。
【００２０】
プロセッサは、メディアハードウェア資源、および、メディア操作を実行するためのメディアハードウェア資源の所定のベンチマークの１つ以上に基づき、メディア資源割り当てテーブルを判断するようにさらに構成されてもよい。
【００２１】
ハードウェアメディア資源は、１つ以上のグラフィック処理装置を含む少なくとも１つのグラフィックカードハードウェア資源と、１つ以上のデバイス中央処理装置（ＣＰＵ）と、を含んでもよい。
【００２２】
プロセッサは、メディア資源割り当てテーブルを生成することによって、メディア資源割り当てシステムを開始するための要求の受信に応答するようにさらに構成されてもよい。
【００２３】
命令を含むコンピュータ可読記憶媒体が開示される。命令は、処理システム内で実行されると、メディア資源を割り当てるための方法を処理システムに実行させる。前記方法は、メディアハードウェア資源、および、メディア操作を実行するためのメディアハードウェア資源の所定のベンチマークの１つ以上に基づき、メディア資源割り当てテーブルを判断するステップと、第１のアプリケーションからのメディア資源に対する要求の受信に応じて、要求されたメディア資源をメディア資源割り当てテーブルと比較するステップと、要求されたメディア資源が利用可能であることが比較によって示された場合に、要求されたメディア資源をメディア資源割り当てテーブル内の第１のアプリケーションに割り当て、要求されたメディア資源が第１のアプリケーションに割り当てられていることを示す、メディア資源に対する要求への応答を第１のアプリケーションに送信するステップと、を含んでもよい。
【００２４】
添付の図面と併せて例として挙げられた以下の説明によって、より詳細に理解され得る。
【図面の簡単な説明】
【００２５】
【図１】１つ以上の開示された実施形態が実装され得る装置例のブロック図である。
【図２】メディア資源割り当てのためのシステムの一例のブロック図である。
【図３】メディア資源割り当てテーブルを生成する一例のブロック図である。
【図４】デコード容量テーブルの一例の概略図である。
【図５】符号化容量テーブルの一例の概略図である。
【図６】スケーリング／色空間変換（ＣＳＣ）容量テーブルの一例の概略図である。
【図７】音声容量テーブルの一例の概略図である。
【図８】メディア資源を割り当てる方法の一例のブロック図である。
【図９】メディア資源要件をメディア資源ＳＤＫに送信して、利用可能なメディア資源をメディア資源ＳＤＫから受信するアプリケーションの一例のブロック図である。
【図１０】資源を割り当てるアプリケーションの方法の一例のブロック図である。
【図１１】メディアタスクマネージャ（ＭＴＭ）によって、選択された割り当てタブで表示されたビデオシステム資源の表示例のブロック図である。
【図１２】メディアタスクマネージャ（ＭＴＭ）によって、選択されたアプリケーションタブで表示されたビデオシステム資源の表示例のブロック図である。
【発明を実施するための形態】
【００２６】
メディア資源がメディア資源テーブル（例えば、レコード）を使用して割り当てられる、メディア資源を割り当てる装置、コンピュータ可読媒体および方法の実施形態が開示される。
【００２７】
図１は、１つ以上の開示された実施形態が実装され得る装置例１００のブロック図である。装置１００は、例えば、コンピュータ、ゲーム機、携帯用装置、セットトップボックス、テレビ、携帯電話またはタブレットコンピュータを含み得る。装置１００は、プロセッサ１０２と、メモリ１０４と、記憶装置１０６と、１つ以上の入力装置１０８と、１つ以上の出力装置１１０と、を含む。装置１００は、任意に、入力ドライバ１１２と、出力ドライバ１１４と、を含んでもよい。装置１００は、図１に示していない追加の構成要素を含んでもよいことを理解されたい。
【００２８】
プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、同一ダイ上に配置されたＣＰＵおよびＧＰＵ、または、１つ以上のプロセッサコアを含んでもよく、各プロセッサコアは、ＣＰＵまたはＧＰＵであってよい。メモリ１０４は、プロセッサ１０２と同一のダイ上に配置されてもよいし、または、プロセッサ１０２とは別々に配置されてもよい。メモリ１０４は、揮発性または不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭもしくはキャッシュ）を含んでもよい。
【００２９】
記憶装置１０６は、固定または取り外し可能な記憶装置（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスクまたはフラッシュドライブ）を含んでもよい。入力装置１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、生体認証スキャナ、または、ネットワーク接続（例えば、無線ＩＥＥＥ  ８０２信号の送信および／または受信用の無線ローカルエリアネットワークカード）を含んでもよい。出力装置１１０は、ディスプレイ、スピーカー、プリンタ、触覚フィードバック装置、１つ以上のライト、アンテナ、または、ネットワーク接続（例えば、無線ＩＥＥＥ  ８０２信号の送信および／または受信用の無線ローカルエリアネットワークカード）を含んでもよい。
【００３０】
入力ドライバ１１２は、プロセッサ１０２および入力装置１０８と通信して、プロセッサ１０２が入力装置１０８からの入力を受信するのを可能にする。出力ドライバ１１４は、プロセッサ１０２および出力装置１１０と通信して、プロセッサ１０２が出力を出力装置１１０に送信するのを可能にする。入力ドライバ１１２および出力ドライバ１１４は、任意の構成要素であること、ならびに、装置１００は、入力ドライバ１１２および出力ドライバ１１４が存在していない場合と同様に動作することに留意されたい。
【００３１】
図２は、メディア資源割り当てのためのシステム２００の一例のブロック図である。システム２００は、メディア資源ソフトウェア開発キット（ＳＤＫ）２０２と、メディア資源割り当てテーブル２０４と、メディアハードウェア資源２０６と、アプリケーション２０８と、アプリケーション２０８とメディア資源ＳＤＫ  ２０２との間のインタラクションと、を含み、インタラクションは、メディア資源情報に対する要求２５０と、メディア資源情報に対する要求への応答２５４と、メディア資源に対する要求２５８と、メディア資源に対する要求への応答２６２と、コールバックルーチン２６０と、を含む。アプリケーション２０８は、任意に、メディア資源情報に対する要求２５０を、メディア資源要件２４０とともにメディア資源ＳＤＫ  ２０２に送信し得る。
【００３２】
メディア資源ＳＤＫ  ２０２は、利用可能なメディア資源２５６を有するメディア資源情報に対する要求への応答２５４で応答し、利用可能なメディア資源２５６は、アプリケーション２０８が要求し得るメディア資源２３２を示している。次いで、アプリケーション２０８は、要求されたメディア資源２５２を含むメディア資源に対する要求２５８をメディア資源ＳＤＫ  ２０２に送信し、メディア資源ＳＤＫ  ２０２は、要求されたメディア資源２５２がアプリケーション２０８に割り当てられたか否かを示す割り当てられたか否か２６４を含む、メディア資源要求への応答２６２を送信することにより応答する。要求されたメディア資源２５２がアプリケーション２０８に割り当てられる場合、アプリケーション２０８は、次いで、要求されたメディア資源２５２を使用し得る。メディア資源ＳＤＫ  ２０２は、メディア資源割り当てテーブル２０４を使用して、メディア資源２３２の割り当ておよび割り当て解除を行う。理解され得るように、メディア資源割り当てテーブル２０４は、表形式であってもよいし、メディア資源２３２が「テーブル」とみなされ得ることを示す任意の形式のレコードであってもよい。
【００３３】
メディアハードウェア資源２０６は、第１のアプリケーション２０８によって、メディアアプリケーションのために使用され得る装置１００（図１参照）の資源である。中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、シェーダ（ｓｈａｄｅｒ）、メモリ、テレビ入力および出力ポート、ならびに、マルチモニター使用ポートは、メディアハードウェア資源の例である。
【００３４】
メディア資源ＳＤＫ  ２０２は、メディア資源割り当てテーブル生成ルーチン２１８と、メディアハードウェア資源アクセスルーチン２２０と、利用可能メディア資源判断ルーチン２２２と、メディア資源割り当てルーチン２２４と、を含むソフトウェア開発キットであってよい。メディア資源割り当てテーブル生成ルーチン２１８は、メディアハードウェア資源２０６と、メディアハードウェア資源２０６に対する所定のメディア資源容量とに基づき、メディア資源割り当てテーブル２０４を生成するためのルーチンであってよい。メディアハードウェア資源アクセスルーチン２２０は、アプリケーション２０８がメディアハードウェア資源２０６にアクセスするのを可能にする１つ以上のルーチンであってよい。例えば、メディアハードウェア資源アクセスルーチン２２０は、グラフィックカード上に配置されたグラフィック処理装置（ＧＰＵ）にアプリケーション２０８がアクセスするためのルーチンを含んでもよい。利用可能メディア資源判断ルーチン２２２は、アプリケーション２０８からのメディア資源情報に対する要求２５０の受信に応答して、利用可能なメディア資源２５６を含む、メディア資源に対する要求への応答２５４を送信するルーチンであってもよい。利用可能なメディア資源２５６は、アプリケーション２０８のメディア資源要件２４０に基づき、アプリケーション２０８に対して適切なメディア資源２３２であってよい。メディア資源割り当てルーチン２２４は、メディア資源２３２の割り当ておよび割り当て解除を行うルーチンである。メディア資源割り当てルーチン２２４は、アプリケーション２０８によるメディア資源に対する要求２５８に対し、割り当てられたか否か２６４を含むメディア資源要求への応答２６２で応答する。割り当てられたか否か２６４は、要求されたメディア資源２５２がアプリケーション２０８に割り当てられたか否かを示す。実施形態では、割り当てられたか否か２６４は、要求されたメディア資源２５２内以外の異なるメディア資源２３２への示唆などの追加情報を含む。メディア資源割り当てルーチン２２４は、アプリケーション２０８から割り当て済みメディア資源２３０の割り当てを解除または解放するために、コールバックルーチン２６０を使用し得る。
【００３５】
メディア資源割り当てルーチン２２４は、アプリケーション２０８にメディア資源２３２を割り当て、メディア資源割り当てテーブル２０４内のアプリケーション２０８からメディア資源２３２の割り当てを解除し得る。メディア資源割り当てテーブル２０４は、メディア資源２３２と、割り当て済みメディア資源２３０とを含んでもよい。メディア資源２３２は、符号化、デコード、スケーリング、色空間変換（ＣＳＣ）および音声処理などの特定のメディア操作を実行するためのメディアハードウェア資源２０６の容量を示すテーブルを含んでもよい。割り当て済みメディア資源２３０は、アプリケーション２０８と、コールバックルーチン２４２と、優先度２４４と、を含み得る。割り当て済みメディア資源２３０は、優先度２４４およびコールバックルーチン２４２と共に、アプリケーション２０８に割り当てられているメディア資源２３２である。メディア資源２３２は、メディアハードウェア資源２０６と所定のベンチマークとに基づき、判断され得る。メディア資源２３２は、以下でさらに説明される。
【００３６】
アプリケーション２０８は、メディアハードウェア資源２０６を使用するアプリケーションであってよい。アプリケーション２０８は、メディア資源要件２４０と、コールバックルーチン２４２と、優先度２４４と、を有してもよい。アプリケーション２０８の例としては、ＤＶＤまたは高解像度映画を再生するためのアプリケーション２０８と、ビデオ会議のためのアプリケーションと、テレビゲームと、遠隔表示アプリケーションと、ビデオをあるフォーマットから別のフォーマットへ変換するアプリケーションである、ビデオトランスコーディングのためのアプリケーションと、が挙げられる。
【００３７】
メディア資源要件２４０は、アプリケーション２０８がその機能を実行するために必要とし得るメディア資源要件２４０であってよい。メディア資源要件２４０の例としては、メガバイト単位でのコーデックおよび解像度と、アプリケーション２０８が性能目標を達成するために実行する必要のある符号化およびデコードの量と、が挙げられる。メディア資源要件２４０は、アプリケーション２０８が複数のＧＰＵを使用できるか否か、アプリケーション２０８がリアルタイムアプリケーションであるかバックグラウンドアプリケーション２０８であるかなどの、他の情報を含み得る。利用可能メディア資源判断ルーチン２２２は、メディア資源要件２４０内で提供された情報に基づき、利用可能なメディア資源２５６内に何を含むかを判断し得る。メディア資源要件２４０は、以下でさらに説明される。
【００３８】
コールバックルーチン２４２は、メディア資源割り当てルーチン２２４が、アプリケーション２０８に対して、アプリケーション２０８に対する割り当て済みメディア資源２３０の少なくとも一部が割り当て解除されていることを通知するのを可能にするルーチンである。例えば、メディア資源割り当てルーチン２２４は、バックグラウンドのトランスコーダアプリケーション２０８に対して、割り当て済みメディア資源２３０が割り当てを解除されていることと、トランスコーダアプリケーション２０８が新しいメディア資源２３２を要求するか、または、メディア資源２３０が別の（第２の）アプリケーション２０８によって解放されもしくは割り当て解除されるのを待機する必要があることと、を通知し得る。アプリケーション２０８は、メディア資源ＳＤＫ  ２０２に対して、メディア資源割り当てルーチン２２４がコールバックルーチン２４２を呼び出すための何らかの方法を送信してもよく、当該方法は、例えば、プログラミング言語Ｃでのルーチンへのポインタであってよい。
【００３９】
優先度２４４は、メディア資源割り当てルーチン２２４がメディア資源２３２の割り当ておよび割り当て解除を行うために使用し得る優先度である。例えば、動画をあるフォーマットから第２のフォーマットにバックグラウンドで変換しているトランスコーダアプリケーション２０８は、低い優先度２４４を有してもよく、その一方で、リアルタイムのビデオ会議アプリケーション２０８は、高い優先度２４４を有してもよい。実施形態では、アプリケーション２０８は、利用可能なメディア資源２５６に含まれる情報に基づき、優先度２４４を判断し得る。メディア資源割り当てルーチン２２４は、優先度２４４を使用して、トランスコーダアプリケーション２０８からのメディア資源２３２を、リアルタイムのビデオ会議アプリケーション２０８に対して割り当て解除するかを判断し得る。優先度２４４は、数字で表されてもよい。
【００４０】
動作中、アプリケーション２０８は、任意に、メディア資源要件２４０を含むメディア資源情報に対する要求２５０を送信し得る。次いで、利用可能メディア資源要件判断ルーチン２２２が、メディア資源２３２およびメディア資源要件２４０に基づき、メディア資源情報に対する要求２５０に応答する方法を判断する。メディア資源要件判断ルーチン２２２は、以下でさらに説明される。
【００４１】
次に、アプリケーション２０８は、メディア資源に対する要求２５８をメディア資源割り当てルーチン２２４に送信する。メディア資源に対する要求２５８は、コールバックルーチン２４２と、優先度２４４と、要求されたメディア資源２５２と、を含み得る。実施形態では、アプリケーション２０８は、利用可能メディア資源判断ルーチン２２２から受信した利用可能なメディア資源２５６およびメディア資源要件２４０に基づき、要求されたメディア資源２５２を判断する。実施形態では、アプリケーション２０８は、要求されたメディア資源２５２を異なるように判断し得る。例えば、アプリケーション２０８は、メディア資源割り当てテーブル２０４からメディア資源２３２に直接アクセスして、メディア資源２３２およびメディア資源要件２４０に基づき、要求されたメディア資源２５２を判断し得る。
【００４２】
メディア資源割り当てルーチン２２４は、メディア資源割り当てテーブル２０４およびメディア資源に対する要求２５８に基づき、要求されたメディア資源２５２がアプリケーション２０８に割り当てられるべきか否かを判断する。メディア資源割り当てルーチン２２４は、第１のアプリケーション２０８からのメディア資源に対する要求２５８を満足するために、第１のアプリケーション２０８よりも低い優先度２４４を有する別のまたは第２のアプリケーション２０８のメディア資源２３２の割り当てを解除されるべきと判断し得る。この場合、メディア資源割り当てルーチン２２４は、より低い優先度２４４を有する第２のアプリケーション２０８のコールバックルーチン２４２を呼び出して、第２のアプリケーション２０８に対して、その割り当てられたメディア資源２３２の少なくとも一部が割り当て解除されていることを通知する。次いで、メディア資源割り当てルーチン２２４は、より高い優先度２４４を有する第１のアプリケーション２０８に対してメディア資源２３２を割り当て、その後、要求されたメディア資源２３２が割り当てられていることを示すメディア資源要求への応答２６２を送信する。応答２６２は、割り当てられたか否か２６４によって表され得る。そのメディア資源２３２の一部が割り当て解除されている第２のアプリケーション２０８は、メディア資源に対する新たな要求２５８を送信し得る。実施形態では、メディア資源割り当てルーチン２２４は、メディア資源２３２の異なるセットを第１のアプリケーション２０８に割り当て、次いで、要求されたメディア資源２５２内で、第１のアプリケーション２０８に割り当てられた異なるメディア資源２３２をメディア資源要求への応答２６２内で送信する。実施形態では、メディア資源要求への応答２６２は、第１のアプリケーション２０８がメディア資源要件２４０を満足するために使用し得る、示唆された代替メディア資源２３２を含む。
【００４３】
図３は、メディア資源割り当てテーブル２０４を生成する一例のブロック図である。図３には、デコード容量テーブル３０２（図４を参照）と、符号化容量テーブル３０４（図５を参照）と、スケーリングＣＳＣ／容量テーブル３０６（図６を参照）と、音声容量テーブル３０８（図７を参照）と、メディアハードウェア資源２０６と、メディア資源割り当てテーブル生成ルーチン２１８と、メディア資源割り当てテーブル２０４とが示されており、メディア資源割り当てテーブル２０４はメディア資源２３２を含み、メディア資源２３２は、デコード容量資源テーブル３４２と、符号化容量資源テーブル３４４と、スケーリング／ＣＳＣ容量資源テーブル３４６と、音声容量資源テーブル３４８と、を含み得る。メディア資源割り当てテーブル生成ルーチン２１８は、容量テーブル３０２，３０４，３０６，３０８と、メディアハードウェア資源２０６とに基づき、メディア資源２３２を含むメディア資源割り当てテーブル２０４を生成する。
【００４４】
メディア資源割り当てテーブル生成ルーチン２１８によってメディア資源２３２が生成され得る以下の方法例については、図２〜図７を参照されたい。図４は、デコード容量テーブル３０２の一例の概略図である。行は、メディアハードウェア資源２０６を示す。例えば、ＣＰＵ  ４０２は、メディアハードウェア資源２０６である。列は、メディア資源２３２およびメディア資源２３２を提供するためのメディアハードウェア資源２０６の推定容量を示す。メディアハードウェア資源２０６によって提供されるメディア資源２３２の推定容量は、推定値に過ぎず、実施形態では、不十分な装置１００またはアプリケーション２０８の性能のリスクを低下させるために、意図的に低く見積もられる。例えば、メディアハードウェア資源２０６であるＣＰＵ  ４０２は、メディア資源２３２であるＭＰＥＧ−４  ４０８をデコードするために４２０Ｋマクロブロック／秒（ＭＢｌｋｓ／秒）（４１０）の推定容量を有し、また、別のメディア資源２３２であるＭＰＥＧ−２  ４２０をデコードするために４５０Ｋ  ＭＢｌｋｓ／秒（４１８）の推定容量を有する。メディアハードウェア資源２０６は、装置１００（図１を参照）が１つのＣＰＵ  ４０２を有することを示し得る。メディア資源割り当てテーブル生成ルーチン２１８は、ＣＰＵ  ４０２が、ＭＰＥＧ−４  ４０８に対して４２０Ｋ  ＭＢｌｋｓ／秒（４１０）、ＭＰＥＧ−２に対して４５０Ｋ  ＭＢｌｋｓ／秒（４１８）、ＶＣ−１に対して３００Ｋ  ＭＢｌｋｓ／秒、Ｈ．２６４に対して２４０Ｋ  ＭＢｌｋｓ／秒の容量を提供することと、ＣＰＵエントロピー符号化４１４が、ＭＰＥＧ−４  ４０８に対して４０Ｋ  ＭＢｌｋｓ／秒（４１６）を提供することとを示す、ＣＰＵ  ４０２に対するメディア資源２３２を生成する。メディア資源割り当てテーブル生成ルーチン２１８は、メディア資源２３２の一部として、ＣＰＵ  ４０２が高（４０４）電力（４１２）を必要とするという指示を生成し得る。メディア資源割り当てテーブル生成ルーチン２１８は、例えば、装置１００上のメディアハードウェア資源２０６を判断することと、装置１００に対するデコード容量資源テーブル３０２を判断するためにデコード容量テーブル３０２を使用することと、により、メディア資源割り当てテーブル２０４からデコード容量資源テーブル３４２を生成し得る。例えば、装置１００上に４つのＣＰＵ  ４０２があれば、ＣＰＵ  ４０２に対する行内の数は４で乗じられるであろう。例えば、４２０Ｋ（４１０）＊４＝１，６８０Ｋである。
【００４５】
デコード容量資源テーブル３４２、符号化容量資源テーブル３４４、スケーリング／ＣＳＣ容量資源テーブル３４６、および、音声容量資源テーブル３４８内の値を含む、生成されたメディア資源２３２に対する調整が、装置１００の推定クロック速度と比較した装置１００のクロック速度の実際の判断に基づいて行われ得る。実施形態では、生成されたメディア資源２３２を調整するために実際の性能測定値を提供するルーチンが提供され得る。例えば、ＧＰＵもしくはＣＰＵの符号化率を検査し、または、実際のメモリもしくはシェーダの性能を測定するルーチンが提供され得る。
【００４６】
一実施形態では、メディア資源割り当てテーブル生成ルーチン２１８は、メディア資源２３２が生成されるときに、リンクされたリストまたは他の構造を構築する。
【００４７】
メディア資源割り当てルーチン２２４は、例えば、ＣＰＵ  ４０２のある割合がメディア資源２３２によって割り当てられている場合に、ＣＰＵ  ４０２によって提供されたメディア資源２３２を削減することによって、メディアハードウェア資源２０６を管理し得る。例えば、２１０Ｋ  ＭＢｌｋｓ／秒がアプリケーション２０８に割り当てられた場合には、ＣＰＵ  ４０２の半分が、４２０Ｋ  ＭＢｌｋｓ／秒（４１０）の中から２１０Ｋ  ＭＢｌｋｓ／秒のメディア資源によって割り当てられたので、メディア資源割り当てルーチン２２４は、ＣＰＵ  ４０２によって提供されたメディア資源２３２の全てのうち半分だけ削減し得る。この例では、装置１００上に１つのＣＰＵ  ４０２だけがあることを仮定している。そのため、例えば、メディア資源割り当てルーチン２２４は、ＣＰＵ  ４０２の半分が割り当てられているので、４５０Ｋ  ＭＢｌｋｓ（４１８）を２２５Ｋ  ＭＢｌｋｓに削減し得る。
【００４８】
同様の方法で、テーブル３０４（図５）は、デコード用にメディア資源２３２を生成するために、メディア資源割り当てテーブル２０４の生成によって使用されてもよく、符号化容量資源テーブル３４４を含んでもよい。テーブル３０６（図６）は、スケーリング／ＣＳＣ用にメディア資源２３２を生成するために使用されてもよく、スケーリング／ＣＳＣ容量資源テーブル３４６を含んでもよい。テーブル３０８（図７）は、音声処理用にメディア資源２３２を生成するために使用されてもよく、音声容量資源テーブル３４８を含んでもよい。
【００４９】
従って、メディア資源２３２の生成は、デコード容量テーブル３０２と、符号化容量テーブル３０４と、スケーリング／ＣＳＣ容量テーブル３０６と、音声容量テーブル３０８と、メディアハードウェア資源２０６とから、メディア資源２３２およびメディア資源割り当てテーブル２０４を生成し得る。
【００５０】
図８は、メディア資源を割り当てる方法の一例のブロック図である。方法８００は、開始（８０１）から開始する。方法８００は、メディア資源に対する要求を第１のアプリケーションから受信する（８０２）。例えば、図２を参照すると、メディア資源ＳＤＫ  ２０２は、メディア資源に対する要求２５８を第１のアプリケーション２０８から受信し得る。方法８００は、要求されたメディア資源をメディア資源割り当てテーブルと比較する（８０４）。例えば、メディア資源ＳＤＫ  ２０２は、要求されたメディア資源２５２を、メディア資源２３２、および、メディア資源割り当てテーブル２０４内の割り当て済みメディア資源２３０と比較し得る。方法８００は、要求されたメディア資源が利用可能か判断する（８０６）。例えば、メディア資源ＳＤＫ  ２０２は、要求されたメディア資源２５２がメディア資源割り当てテーブル２０４内で利用可能であるか否かを判断し得る。方法８００は、要求されたメディア資源２５２が利用可能な場合に、要求されたメディア資源を、メディア資源割り当てテーブル内の第１のアプリケーションに割り当てる（８０８）。例えば、メディア資源ＳＤＫ  ２０２は、要求されたメディア資源２５２が、コールバックルーチン２４２のコールバックルーチンおよび優先度２４４の優先度を有する第１のアプリケーション２０８に割り当てられていることを示すために、割り当て済みメディア資源２３０をメディア資源割り当てテーブル２０４内に記入し得る。方法８００は、要求されたメディア資源がアプリケーションに割り当てられることを示す、メディア資源に対する応答を、第１のアプリケーションに送信する（８１６）。例えば、図２を継続して参照すると、メディア資源ＳＤＫ  ２０２は、アプリケーション２０８に対して、メディア資源要求への応答２６２を、要求されたメディア資源２５２がアプリケーション２０８に割り当てられていることを示す、割り当てられたか否か２６４と共に送信し得る。方法８００は、終了する（８２０）。
【００５１】
方法８００は、（８０６）で要求されたメディア資源が利用可能でない場合に、メディア資源を保有する、より低い優先度の第２のアプリケーションがあるかどうかを判断する（８１０）。例えば、メディア資源ＳＤＫ  ２０２は、メディア資源割り当てテーブル２０４を検査して、メディア資源に対する要求２５８を行った第１のアプリケーション２０８の優先度２４４よりも低い優先度２４４を有する１つ以上のアプリケーション２０８が、割り当て済みメディア資源２３０を有するか否かを判断し得る。より低い優先度２４４の第２のアプリケーション２０８が割り当て済みメディア資源２３０を有する場合には、メディア資源ＳＤＫ  ２０２は、割り当て済みメディア資源２５８の割り当てを解除することが、より高い優先度を有する第１のアプリケーション２０８によってなされたメディア資源に対する要求２５８を満足させるのをメディア資源ＳＤＫ  ２０２が可能にするのに十分であるか否かを判断する。
【００５２】
方法８００は、メディア資源２３０が、メディア資源に対する要求２５８を満足するために、より低い優先度の第２のアプリケーション２０８から割り当てを解除できない場合には、要求されたメディア資源が第１のアプリケーションに対して利用可能でないという、メディア資源に対する要求への応答を送信する（８１８）。例えば、メディア資源ＳＤＫ  ２０２は、メディア資源要求への応答２６２を、要求されたメディア資源２５２が割り当てられなかったことを示す、割り当てられたか否か２６４と共に送信し得る。実施形態では、割り当てられたか否か２６４は、アプリケーション２０８がメディア資源に対する別の要求２５８を行うのを支援するために、どのメディア資源２３０が利用可能であるかに関する追加情報を示す。
【００５３】
方法８００は、メディア資源２３０が、メディア資源に対する要求２５８を満足するために、より低い優先度のアプリケーション２０８から割り当て解除または解放できる場合には、第２のアプリケーションからのメディア資源の少なくとも一部を、メディア資源割り当てテーブル内のアプリケーションに割り当てる（８１２）。例えば、より低い優先度２４４の第２のアプリケーション２０８に割り当てられている割り当て済みメディア資源２３０が割り当て解除され、次いで、第１のアプリケーション２０８に割り当てられ得る。他のメディア資源２３２も、メディア資源に対する要求２５８を満足するために、第１のアプリケーション２０８に割り当てられ得る。実施形態では、より低い優先度２４４を有する第２のアプリケーション２０８の割り当て済みメディア資源２３０の一部のみが割り当て解除される。第２のアプリケーション２０８は、一部の割り当て済みメディア資源２３０を有し続けてもよく、このことは、より低い優先度２４４を有する第２のアプリケーション２０８が実行を継続するのを可能にし得る。方法８００は、より低い優先度２４４を有する第２のアプリケーション２０８のコールバックルーチンを呼び出す（８１４）。例えば、メディア資源ＳＤＫ  ２０２は、より低い優先度２４４を有する第２のアプリケーション２０８の「コールバックルーチン」２６０を呼び出し得る。コールバックルーチン２６０の呼び出しは、どの割り当て済みメディア資源２３０が割り当てを解除されたのかという指示を含んでもよく、さらに、より低い優先度２４４を有する第２のアプリケーション２０８がメディア資源に対する別の要求２５８を行うのを支援するために、どの追加のメディア資源２３２が割り当てられないのかに関する情報を含んでもよい。方法８００は、方法８００に関して前述したように（８１６）に続き、次いで、終了する（８２０）。実施形態では、方法ステップ８１２，８１４，８１６は、任意の順序で実行され得る。実施形態では、メディア資源２３２が、２つ以上の第２のアプリケーション２０８から割り当て解除されてもよく、そのため、ステップ８１２，８１４は、メディア資源２３２の割り当てが解除されたアプリケーション２０８の各々に対して実行されるようになる。
【００５４】
実施形態では、方法は、第１のアプリケーション２０８が、要求されたメディア資源２５２がもはやそのアプリケーション２０８に割り当てられるべきではないという指示を、メディア資源ＳＤＫ  ２０２に送信することで継続し得る。メディア資源ＳＤＫ  ２０２は、次いで、割り当て済みメディア資源２３０のエントリを、メディア資源割り当てテーブル２０４から除去してもよく、このことは、メディア資源ＳＤＫ  ２０２が、以前に割り当てたメディア資源２３０を、第２のアプリケーション２０８に割り当てるのを可能にするであろう。
【００５５】
一実施形態では、利用可能メディア資源判断ルーチン２２２は、要求されたメディア資源２５２を取得し、それらを、デコード容量資源テーブル３４２、符号化容量資源テーブル３４４、スケーリング／ＣＳＣ容量資源テーブル３４６および音声容量資源テーブル３４８内のメディア資源２３２と照合する。要求されたメディア資源２５２が満足できる場合には、割り当てられたメディア資源２３２が、デコード容量資源テーブル３４２、符号化容量資源テーブル３４４、スケーリング／ＣＳＣ容量資源テーブル３４６および音声容量資源テーブル３４８であってもよいメディア資源２３２から差し引かれる。利用可能メディア資源判断ルーチン２３２によって実行される照合は、低電力などの好みの設定に基づいてもよく、その場合、可能であれば、より高電力のメディア資源の前に、低電力メディア資源２３２が割り当てられるであろう。実施形態では、方法８００は、メディアハードウェア資源、および、メディア操作を実行するためのメディアハードウェア資源の所定のベンチマークの１つ以上に基づき、メディア資源割り当てテーブルを判断することを含んでもよい。例えば、図２を参照すると、アプリケーション２０８は、メディア資源を初期化するために、メディア資源割り当てテーブル生成ルーチン２１８を呼び出し得る。実施形態では、８１０は任意であってよい。実施形態では、８１０，８１２，８１４，８１８は任意であってよい。
【００５６】
図９は、メディア資源要件２４０をメディア資源ＳＤＫに送信して、利用可能なメディア資源２５６をメディア資源ＳＤＫから受信するアプリケーション２０８の一例のブロック図である。例えば、アプリケーション２０８は、メディア資源要件２４０を、メディア資源ＳＤＫ  ２０２の利用可能メディア資源判断ルーチン２２２に送信し得る。利用可能メディア資源判断ルーチン２２２は、メディア資源要件２４０およびメディア資源割り当てテーブル２０４に基づき、利用可能なメディア資源２５６を生成し得る。
【００５７】
一実施形態では、メディア資源要件２４０は、アプリケーションクラスを含んでもよく、それは、優先度２４４として使用され得る。アプリケーションクラスは、デフォルトを示す「０」、無線表示アプリケーションを示す「１」、ビデオ会議または音声（リアルタイム＋低遅延）アプリケーションを示す「２」、リアルタイム（再生、ストリーミング、ビデオ編集プレビューなど）アプリケーションを示す「３」、予約済みの「４」、高優先度を有するバックグラウンドトランスコードアプリケーションを示す「５」、低優先度を有するバックグラウンドトランスコードアプリケーションを示す「６」、予約済みの「７」、を有し得る。
【００５８】
一実施形態では、メディア資源要件２４０は、デコードおよび符号化のためのコーデックに関する情報を含んでもよい。コーデックは、コーデック標準と、所望の解像度およびフレームレートと、インターレースされおよび／またはプログレッシブであるか否かと、使用され得る最大ビットレートと、を含んでもよい。利用可能メディア資源判断ルーチン２２２は、この情報を使用して、アプリケーション２０８が使用すべきメディア資源２３２に対する示唆を提供し得る。
【００５９】
一実施形態では、メディア資源要件２４０は、符号化／デコードモードを含んでもよく、それは、符号化およびデコードのための４ビットによって表され得る。符号化／デコードに対して可能な値の例は、他の要件に基づきデフォルトが使用されるべきことを示す「０」、固定機能ハードウェア（ＵＶＤまたはＶＣＥ）が使用されるべきことを示す「１」、ＣＰＵソフトウェアが使用されることを示す「２」、ＧＰＵシェーダが使用されるべきことを示す「４」、他のもののハイブリッドが使用されるべきことを示す「８」である。利用可能メディア資源判断ルーチン２２２は、この情報を使用して、アプリケーション２０８が使用すべきメディア資源２３２に対する示唆を提供し得る。
【００６０】
一実施形態では、メディア資源要件２４０は、電力−性能トレードオフ情報を含んでもよい。電力−性能トレードオフ情報は、アプリケーションが気にかけないことを示す「０」、アプリケーションが低電力の使用を欲することを示す「１」、アプリケーションが高性能の使用を欲することを示す「２」、アプリケーションが低電力と高電力との間のバランスを欲することを示す「３」のように表される。利用可能メディア資源判断ルーチン２２２は、この情報を使用して、アプリケーション２０８が使用すべきメディア資源２３２に対する示唆を提供し得る。
【００６１】
一実施形態では、メディア資源要件２４０は、性能−品質トレードオフ情報を含んでもよい。性能−品質トレードオフ情報は、アプリケーションが、性能−品質トレードオフの以下の記述、すなわち、気にしない、最速の性能、高品質、最速の性能と高品質との間のバランス、のうち１つを満足するメディア資源を要求することを示し得る。利用可能メディア資源判断ルーチン２２２は、この情報を使用して、アプリケーション２０８が使用すべきメディア資源２３２に対する示唆を提供し得る。
【００６２】
一実施形態では、メディア資源要件２４０は、ＧＰＵ使用に関する情報を含んでもよい。例えば、ＧＰＵ使用に対して異なる要件または要求を示すために、ＧＰＵの自動選択が許容可能であることを示す０、オンダイのＧＰＵのみの使用を示す１、別個のＧＰＵのみの使用を示す２、両方のタイプのＧＰＵの使用を示す３、全ての動作が１つのＧＰＵを使用すべきことを示す４、という値が用いられ得る。利用可能メディア資源判断ルーチン２２２は、この情報を使用して、アプリケーション２０８が使用すべきメディア資源２３２に対する示唆を提供し得る。
【００６３】
図１０は、資源を割り当てるアプリケーションの方法１０００の一例のブロック図である。方法１０００は、開始（１００１）から開始する。方法１０００は、メディア資源を初期化する（１００２）。例えば、図２を参照すると、アプリケーション２０８は、メディア資源を初期化するために、メディア資源割り当てテーブル生成ルーチン２１８を呼び出し得る。方法１０００は、メディア資源の必要性を判断する（１００４）。例えば、アプリケーション２０８は、利用可能なメディア資源２５６をメディア資源ＳＤＫ  ２０２から受信するために、メディア資源要件２４０と共に、メディア資源情報に対する要求２５０を行ってもよい。アプリケーション２０８は、次いで、メディア資源ＳＤＫ  ２０２から割り当てるために、利用可能なメディア資源２５６のどのメディア資源を要求すべきかを判断し得る。方法１０００は、メディア資源を要求する（１００６）。例えば、アプリケーション２０８は、要求されたメディア資源２６４を有するメディア資源に対する要求２５８をメディア資源ＳＤＫ  ２０２に送信し得る。方法１０００は、要求されたメディア資源が利用可能か判断する（１００８）。要求されたメディア資源が利用可能な場合には、方法１０００は、メディア資源を使用する（１００９）。例えば、アプリケーション２０８は、ＧＰＵで、ＭＰＥＧ−４デコードの割り当て済みメディア資源２３０を使用するビデオアプリケーション２０８であってよい。方法１０００は、コールバックルーチンが呼ばれたか判断する（１０１０）。実施形態では、メディア資源ＳＤＫ  ２０２が、割り当て済みメディア資源２３０がより高い優先度を有する別の（第１の）アプリケーション２０８によって必要とされていると判断すると、メディア資源ＳＤＫ  ２０２は、割り当て済みメディア資源２３０の少なくとも一部の割り当てを解除し得る。メディア資源ＳＤＫ  ２０２は、次いで、割り当て済みメディア資源２３０の少なくとも一部が割り当て解除されていることをアプリケーション２０８に通知するために、コールバックルーチン２６０を呼び出し得る。コールバックルーチン２６０が呼び出されると、方法１０００は、以下で説明するように、１０１２に移行し、そうでない場合には、アプリケーション２０８は、割り当て済みメディア資源２３０を使用する（１０１８）。次いで、実施形態では、アプリケーション２０８が割り当て済みメディア資源２３０の使用を終了すると、アプリケーション２０８は、メディア資源の割り当てを解除する（１０２０）。方法１０００は、次いで、終了する（１０２２）。
【００６４】
方法１０００の１００８にて、要求されたメディア資源が利用可能でない場合には、方法１０００は、アプリケーションが待機すべきか判断する（１０１２）。例えば、アプリケーション２０８は、待機すべきか否かを判断し、次いで、同一の要求されたメディア資源２５２を再要求し得る。アプリケーション２０８が待機すると判断した場合には、方法１０００は、アプリケーション２０８を待機させ（１０１４）、次いで、メディア資源を再度要求する（１００６）。アプリケーション２０８が待機しないと判断した場合には、方法１０００は、メディア資源の必要性を再度判断する（１０１６）。例えば、アプリケーション２０８は、要求されたメディア資源２５２を再度判断し得る。実施形態では、アプリケーション２０８は、割り当てられたか否か２６４内の推奨（ｒｅｃｏｍｍｅｎｄａｔｉｏｎ）に基づき、要求されたメディア資源２０２を再度判断し得る。実施形態では、アプリケーション２０８は、利用可能なメディア資源２５６に基づき要求されたメディア資源２０２を再度判断し得る。例えば、アプリケーション２０８は、既に割り当てられた装置１００のＧＰＵではなく、装置１００のＣＰＵを使用すると判断し得る。方法１０００は、アプリケーション２０８がどのメディア資源２３２を要求すべきかを判断した後、メディア資源を要求する（１００６）。
【００６５】
図１１は、メディアタスクマネージャ（ＭＴＭ）によって表示されたビデオシステム資源１１００の選択された割り当てタブ１１０６での表示例のブロック図である。ＭＴＭは、４つのタブ、すなわち、要求されたメディア資源を使用または保有しているアプリケーションを示すアプリケーションタブ１１０６、割り当てられたメディアハードウェア資源用のタブ、無線表示を示すためのタブ、ヘルプを提供するためのタブ、を有し得る。他のタブ（図示せず）は、メディア資源要件へのアクセスを有する各ビデオタスクの数およびタイプのためのタブと、選択されたメディアタスクに対する割り当てのためのタブと、を含んでもよい。図１１に示すように、第１のトランスコードアプリ１  １１０２は、ＵＶＤが５０％、ＶＣＥが５０％、ＧＰＵが約１０％、ＣＰＵが約２５％、音声はなし、というように、メディアハードウェア資源２０６（図２を参照）の割合を割り当てている。再生アプリ２  １１０４は、ＵＶＤが５０％、ＶＣＥはなし、ＧＰＵが約１０％、ＣＰＵはなし、音声が約１０％、というように、メディアハードウェア資源２０６の割合を割り当てている。
【００６６】
図１２は、メディアタスクマネージャ（ＭＴＭ）によって表示されたビデオシステム資源１１００の選択されたアプリケーションタブ１１０８での表示例のブロック図である。アプリケーションタブのビューは、実行中のタスクのリストを項目に分けて、無線表示の状態を示している。この表示は、ユーザーが、「優先度を変更する」ボタン１１１２を選択することにより、アプリケーション１１１４，１１０２，１１０４の優先度を上げるまたは下げること、および、「タスクを一時停止する」ボタン１１１０を選択することによりタスクを一時停止すること、を可能にする。図１２に示すように、トランスコードアプリ１１０２は、実行中の状態、優先度が４、１０８０ｐのＵＶＤが５０％、１０８０ｐのＶＣＥの最大パーセント、シェーダが１０％、ＣＰＵが１０％、音声が０％を有する。再生アプリ２  １１０４は、実行中の状態、優先度が３、１０８０ｐ３０のＵＶＤが５０％、ＶＣＥが０、シェーダが１０％、ＣＰＵが０％、音声が１２％を有する。アプリケーションの色は、他のタブのビューでアプリケーションを表す色と一致し得る。
【００６７】
以下の例では、図２を参照しながら、本発明の実施形態の動作を示す。トランスコードアプリケーション２０８は、メディア資源２３２  ＵＶＤおよびＶＣＥと関連した割り当て済みメディア資源２３０を有し得る。トランスコードアプリケーション２０８よりも高い優先度２４４を有する第２のアプリケーション２０８は、メディア資源２３２  ＵＶＤおよびＶＣＥと関連して要求されたメディア資源２５２を含む、メディア資源に対する要求２５８を行い得る。メディア資源割り当てルーチン２２４は、割り当て済みメディア資源２３０の一部が割り当て解除されていることを示す、トランスコードアプリケーション２０８のコールバックルーチン２６０を呼び出してもよい。メディア資源割り当てルーチン２２４は、割り当て解除された割り当て済みメディア資源２３０を、より高い優先度２４４を有する第２のアプリケーション２０８に割り当て得る。トランスコードアプリケーション２０８は、その割り当て済みメディア資源２３０の一部が割り当て解除される前に動作していた速度の約半分で動作することのみ可能であってよい。例を続けると、ユーザーは、次いで、トランスコードアプリケーション２０８よりも高い優先度２４４を有する無線表示アプリケーション２０８をオンにし得る。メディア資源割り当てルーチン２２４は、残りの割り当て済みメディア資源１２０の何れについても割り当て解除する、トランスコードアプリケーション２０８のコールバックルーチン２６０を呼び出してもよい。メディア資源割り当てルーチン２２４は、トランスコードアプリケーション２０８に対して、ＣＰＵソフトウェアの使用へフォールバックし、メディア資源２３２が利用可能になるのを待機し、または、終了してもよいことを示し得る。メディア資源割り当てルーチン２２４は、トランスコードアプリケーション２０８から割り当て解除されたメディア資源２３２を、無線表示アプリケーション２０８に割り当て得る。無線表示アプリケーション２０８は、次いで、良好なユーザーエクスペリエンスをユーザーに提供するのに十分なメディア資源２３２を有し得る。これで、この例は完了する。
【００６８】
以下の例では、図２を参照しながら、本発明の実施形態の動作を示す。ビデオ会議アプリケーション２０８は、実行中であり、割り当て済みメディア資源２３０を有する。第２のビデオ会議アプリケーション２０８は、実行中で、割り当て済みメディア資源２３０を有する。第３のビデオ会議アプリケーション２０８は、メディア資源に対する要求２５８をメディア資源割り当てルーチン２２４に送信するが、メディア資源に対する要求への応答２６２は、割り当てられたか否か２６４内で要求されたメディア資源２５２が割り当てられなかったことを示している。第３のビデオ会議アプリケーション２０８は、メディア資源２３２を使用することなく、装置１００（図１）のＣＰＵのみで、ハイブリッド符号化のあるリアルタイムストリーミングを行うことを試みる。第３のビデオ会議アプリケーション２０８は、ＣＰＵの速度に応じて、性能問題に悩まされ得る。
【００６９】
実施形態では、高性能のニーズを有するメディアアプリケーションが、他のメディアアプリケーションと同じ装置上で実行するのを許可しながら、必要な性能を提供され得るという利点を提供する。
【００７０】
実施形態では、メディアアプリケーションが、所望の電力消費と一致するメディア資源を割り当て得るという利点を提供する。例えば、ユーザーは、バッテリー残量を保つために、可能な限り低電力消費で動画を見ることが可能であり得る。
【００７１】
実施形態では、ビデオ遠隔会議などのメディアアプリケーションが、他のメディアアプリケーションと同じ装置上で実行し得る間に、低遅延で動作するのを可能にし得るという利点を提供する。
【００７２】
実施形態では、動画などのメディアを異なる再生装置に移すために、動画を異なる解像度、異なるフォーマット、または、異なる品質レベルで後に再符号化するためにデコードすることが、より高い優先度を有するアプリケーションの性能を著しく低下させることなく、持続可能な限り高速にエンコーダ可能であるという利点を提供する。
【００７３】
実施形態では、画面コンテンツを、符号化し、遠隔表示を提供するために別の装置に（無線または有線ネットワークを経由して）ストリーミングするなどの、高性能を必要とするメディアアプリケーションが、他のメディアアプリケーションが割り当て済みのメディア資源を使用しないように、必要なメディア資源を割り当てることにより低遅延で実行され得るという利点を提供する。このメディアアプリケーションは、１つのパーソナルコンピュータが、複数のユーザー、遠隔デバッグおよび診断、遠隔パーソナルコンピュータアクセス、ならびに、より大規模または多重ディスプレイまたはプロジェクタへのアクセスに対応するマネージドサーバー環境（ｍａｎａｇｅｄ  ｓｅｒｖｅｒ  ｅｎｖｉｒｏｎｍｅｎｔ）などの、多くの使用を可能にし得る。
【００７４】
実施形態では、メディアアプリケーションがユーザーにとって望ましい性能を提供するのを可能にするメディア資源を、当該メディアアプリケーションに割り当てることができるという利点を提供する。異なるメディアアプリケーションは、メディアアプリケーションに提供するために必要なメディア資源を割り当てることなくユーザーにとって望ましい性能を提供するのが困難な装置上で利用可能な基礎的なハードウェアおよびソフトウェアとは異なるレベルの性能と、品質と、電力消費とを要求してもよい。
【００７５】
実施形態では、全てのメディア資源を要求し得るビデオトランスコーダなどのメディアアプリケーションが、ビデオをサラウンド音響で見るためのメディアアプリケーション、ビデオ会議または無線表示などの別のアプリケーションが、ユーザーにとって許容可能な性能で実行されるように、メディア資源の一部を元に戻すという利点を提供する。
【００７６】
実施形態では、メディア資源ＳＤＫ  ２０２内のルーチンは、アプリケーション２０８のソースコード内に含まれており、アプリケーション２０８と一緒にコンパイルされる。実施形態では、メディア資源ＳＤＫ  ２０２内のルーチンは、実行時にアプリケーション２０８に動的にリンクされる。
【００７７】
実施形態では、２つ以上のアプリケーション２０８がメディア資源割り当てテーブル２０４にアクセスできるように、メディア資源割り当てテーブル２０４が共有メモリ内に格納されている。実施形態では、メディア資源割り当てテーブル２０４は、ＡＭＤ（登録商標）ビデオカードのＣＡ３データ空間内に格納されている。
【００７８】
本明細書での開示に基づき、多数の変形が可能であることが理解されるべきである。特徴および要素は、上記の例では特定の組合せで説明されているが、各特徴または要素は、他の特徴および要素を含まずに単独で、または、他の特徴および要素の有無にかかわらず様々な組合せで、使用され得る。
【００７９】
方法は、汎用コンピュータ、プロセッサまたはプロセッサコアで実装され得る。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと共同した１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他のタイプの集積回路（ＩＣ）、および／または、状態機械を含む。かかるプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令の結果と、ネットリスト（コンピュータ可読媒体上に格納されることが可能な命令）を含む他の中間データの結果とを使用して、製造プロセスを構成することにより製造され得る。かかる処理の結果は、次いで、本発明の態様を実装するプロセッサを製造するための半導体製造プロセスで使用されるマスクワークであり得る。
【００８０】
本明細書で提供する方法またはフロー図は、汎用コンピュータまたはプロセッサによる実行のためにコンピュータ可読記憶媒体内に包含された、コンピュータプログラム、ソフトウェアまたはファームウェアで実装され得る。実施形態では、コンピュータ可読記憶媒体は、一時的（ｔｒａｎｓｉｔｏｒｙ）信号を含まない。コンピュータ可読記憶媒体の例は、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスクおよび取り外し可能ディスクなどの磁気媒体、光磁気媒体、ならびに、ＣＤ−ＲＯＭおよびデジタル多用途ディスク（ＤＶＤ）などの光媒体を含む。
【図１】
0006316828.tif 000002
【図２】
0006316828.tif 000003
【図３】
0006316828.tif 000004
【図４】
0006316828.tif 000005
【図５】
0006316828.tif 000006
【図６】
0006316828.tif 000007
【図７】
0006316828.tif 000008
【図８】
0006316828.tif 000009
【図９】
0006316828.tif 000010
【図１０】
0006316828.tif 000011
【図１１】
0006316828.tif 000012
【図１２】
0006316828.tif 000013