(57)【要約】      （修正有）【課題】携帯デバイス用のグラフィカル画像データを取り込むソフトウェア開発キット（ＳＤＫ）を提供する。【解決手段】ＳＤＫは、グラフィカル画像データを生成するソフトウェア・アプリケーションを実行可能なコンピューティング・ハードウェアを含むデバイス中で用いられ、ソフトウェア・アプリケーションと同時に実行するように構成される。ＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対し関数コールを行うよう動作可能である。一方、ＳＤＫは、関数コールをインターセプトするよう動作可能である。さらに、ＳＤＫは、別途に任意の方法で関数コールを修正できるように、関数コールがグラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって受信される前に、これらの関数コールを修正するよう動作可能である。【選択図】図６
2015069638.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプログラムを備えるグラフィックス装置であって、前記コンピュータプログラムはコンピュータ可読コードを含み、前記コンピュータ可読コードは、デバイスであって、前記デバイスのグラフィカル表示機構を介して見ることができるグラフィカル画像データを生成する、一つ以上のソフトウェア・アプリケーションを実行するよう動作可能なコンピューティング・ハードウェアを含む、前記デバイスで実行されると、処理を遂行するように構成され、前記処理は：
前記デバイスで実行されるソフトウェア・アプリケーションと同時にラッパーモジュールを実行することと；
前記ラッパーモジュールが、前記ソフトウェア・アプリケーションを実行するグラフィカル画像データを生成するために、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対し、実行中のソフトウェア・アプリケーションからの一つ以上の関数コールをインターセプトできるようにすることと；
前記ラッパーモジュールが、前記一つ以上の関数コールが前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって受信される前に、前記実行中のソフトウェア・アプリケーションからの前記一つ以上の関数コールを修正できるようにすることと；
前記ラッパーモジュールが、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成された前記グラフィカル画像データにアクセス、読み取り、コピー、および／または修正できるようにすること、ならびに／あるいは、前記グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、別途に任意の方法で前記関数コールを修正できるようにすることと；
前記修正されたグラフィカル画像データを表示用グラフィックス・ドライバに送信することと；
を含む、グラフィックス装置。
【請求項２】
前記グラフィックス・エンジンは、前記一つ以上の関数コールを前記ラッパーモジュールに明示的に送信するように構成される、請求項１に記載のグラフィックス装置。
【請求項３】
前記ラッパーモジュールは、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリをラップするように構成され、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリに対する全ての関数コールが前記ラッパーモジュールを通過する、請求項１に記載のグラフィックス装置。
【請求項４】
前記処理は、前記ラッパーモジュールが、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成または修正された前記グラフィカル画像データを、一時および／またはファイナル・バッファからコピーできるようにすることであって、これにより、画像フレーム群が完成すると、前記一時および／またはファイナル・バッファ中の前記画像フレーム群が、前記グラフィカル表示機構を介して前記ユーザに提示される、前記コピーできるようにすることを含む、請求項１に記載のグラフィックス装置。
【請求項５】
前記処理は、前記ラッパーモジュールが、前記一時および／またはファイナル・バッファのコンテンツを、前記デバイスから空間的に遠隔のデータ・ストアにアップロードおよび／またはストリームできるようにすることを含む、請求項５に記載のグラフィックス装置。
【請求項６】
前記ラッパーモジュールは、前記一つ以上のソフトウェア・アプリケーションの中に統合されてその一体部分となるように構成される、請求項１に記載のグラフィックス装置。
【請求項７】
前記ラッパーモジュールは、前記デバイスのオペレーティング・システムの中に統合されてその一体部分となるように構成される、請求項１に記載のグラフィックス装置。
【請求項８】
グラフィックス装置でグラフィカル画像データを取り込む方法であって、前記グラフィックス装置はラッパーモジュールを備え、前記ラッパーモジュールはコンピュータ実行可能命令を備え、前記命令は、前記グラフィックス装置のコンピューティング・ハードウェアで実行されるように構成され、前記グラフィックス装置のコンピューティング・ハードウェアは、デバイスのグラフィカル表示機構を介して見ることができるグラフィカル画像データを生成する、一つ以上のソフトウェア・アプリケーションを実行するよう構成され、前記方法は、
前記一つ以上のソフトウェア・アプリケーションと同時に前記ラッパーモジュールを実行することと；
前記グラフィックス装置のグラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対して、前記一つ以上のソフトウェア・アプリケーションから一つ以上の関数コールを検出することであって、前記関数コールは、前記グラフィカル画像データを生成する要求を含む、前記検出することと；
前記検出された関数コールを前記ラッパーモジュールによってインターセプトすることと；
前記関数コールが前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって受信される前に、前記インターセプトされた関数コールを修正することであって、前記ラッパーモジュールが、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成された前記グラフィカル画像データにアクセス、読み取り、コピー、および／または修正すること、ならびに／あるいは、前記グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、別途に任意の方法で前記関数コールを修正することを可能にする、前記修正することと；
を含む、方法。
【請求項９】
前記方法は、前記ラッパーモジュールがインターセプトしていない関数コールを前記ラッパーモジュールに直接送信するように、前記グラフィックス・エンジンを動作させることを含む、請求項８に記載の方法。
【請求項１０】
前記ラッパーモジュールは、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリに対する全ての関数コールが前記ラッパーモジュールを通過し、前記ラッパーモジュールによって修正されるよう、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリをラップするように構成される、請求項８に記載の方法。
【請求項１１】
前記ラッパーモジュールは、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成または修正された前記グラフィカル画像データを、一時および／またはファイナル・バッファからコピーするように構成され、これにより、画像フレーム群が完成するとき、前記一時および／またはファイナル・バッファ中の前記画像フレーム群が、前記グラフィカル表示機構を介して前記ユーザに提示される、請求項８に記載の方法。
【請求項１２】
前記ラッパーモジュールは、前記一時および／またはファイナル・バッファのコンテンツを、前記デバイスから空間的に遠隔のデータ・ストアにアップロードおよび／またはストリームするように構成される、請求項１１に記載の方法。
【請求項１３】
前記ラッパーモジュールは、前記一つ以上のソフトウェア・アプリケーションの中に統合されてその一体部分となるように構成される、請求項８に記載の方法。
【請求項１４】
前記方法は、前記ラッパーモジュールが、前記デバイスのオペレーティング・システムの中に統合されてその一体部分となるように構成される、請求項８に記載の方法。
【請求項１５】
非一時的機械可読データ・ストレージ媒体に格納されたコンピュータ可読プログラムコードを含む、グラフィカル画像データを取り込むコンピュータプログラムであって、前記前記ソフトウェア開発キットコンピュータ可読コードは、デバイスのコンピューティング・ハードウェアで実行されると、処理を遂行させるように構成され、前記処理は：
前記グラフィックス装置のグラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対して、前記一つ以上のソフトウェア・アプリケーションから一つ以上の関数コールを検出することであって、前記関数コールは、前記グラフィカル画像データを生成する要求を含む、前記検出することと；
前記検出された関数コールをインターセプトすることと；
前記関数コールが前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって受信される前に、前記インターセプトされた関数コールを修正することと；
前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成された前記グラフィカル画像データにアクセス、読み取り、コピー、および／または修正すること、ならびに／あるいは、前記グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、別途に任意の方法で前記関数コールを修正すること；
を含む、コンピュータプログラム。
【請求項１６】
前記コンピュータプログラムは、ソフトウェア・アプリケーション・ストアから前記グラフィックス装置にダウンロード可能である、請求項１５に記載のコンピュータプログラム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２０１３年２月１３日に出願された米国特許出願第１３／７６５，７０３号、発明の名称「System and Method for Sharing Gameplay Experiences」に関連し、該出願の開示は、参照することによりその全体が組み込まれる。
【技術分野】
【０００２】
本開示の態様は、一般にグラフィカル画像データの取り込みに関し、さらに具体的には、グラフィカル画像データを取り込むソフトウェア開発キットに関する。さらに、本発明は、前記ソフトウェア開発キットを用いる方法に関する。さらにまた、本開示の態様は、持続的（非一時的）機械可読データ・ストレージ媒体に格納されたソフトウェア製品に関し、該ソフトウェア製品は、前記方法を実施するため、デバイスのコンピューティング・ハードウェアで実行が可能である。
【背景技術】
【０００３】
昨今、携帯デバイス、すなわち携帯電子デバイスをサポートする様々なオペレーティング・システム（ＯＳ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）およびグラフィックス装置が開発されてきた。通常、携帯デバイス用グラフィックス装置は、一つ以上のグラフィックス・エンジンおよび／またはオープン・グラフィックス・ライブラリ（ＯｐｅｎＧＬ：Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）など、一つ以上のグラフィックス・ライブラリを含む。これらのグラフィックス・エンジンおよび／またはライブラリは、携帯デバイスのグラフィカル表示機構を介してユーザに提示するグラフィカル画像を生成するために、携帯デバイスのＯＳで実行されている様々なアプリケーションによって呼び出すことが可能である。
【０００４】
図１は、携帯デバイス用の既知の従来型グラフィックス装置の概略図である。図１は従来技術を表している。従来型グラフィックス装置は、例えば、携帯デバイスのＯＳで実行されているソフトウェア・アプリケーション１０２が、ユーザにグラフィカル画像データを提示するために使用することができる。
【０００５】
図１を参照すると、この従来型グラフィックス装置は、グラフィックス・エンジン１０４と、グラフィックス・ライブラリ１０６と、当業者には「フレームバッファ」としても知られる、一つ以上の一時バッファ１０８と、ファイナル・バッファ１１０と、グラフィックス・ドライバ１１２と、グラフィックス・ハードウェア１１４と、ディスプレイ１１６を含む。図１に示されるように、グラフィックス・エンジン１０４と、グラフィックス・ライブラリ１０６と、一つ以上の一時バッファ１０８と、ファイナル・バッファ１１０とは、ＯＳ空間に駐在することができる。グラフィックス・ドライバ１１２は、カーネル空間中のソフトウェア機能とすることが可能である。グラフィックス・ドライバ１１２は、グラフィックス・ハードウェア１１４を介してディスプレイ１１６とインターフェース接続される。グラフィックス・ハードウェア１１４は、例えば、集積グラフィックス・チップセット、または専用グラフィックス処理ユニット（ＧＰＵ：ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）とすることができる。ディスプレイ１１６は、例えば、携帯デバイスのタッチ・スクリーン・ディスプレイなどのピクセル・ディスプレイとすることが可能である。
【０００６】
ある例において、ソフトウェア・アプリケーション１０２は、ゲームプレイの間に、グラフィカル画像データの生成および提示が必要となるゲーム・アプリケーションまたは類似のアプリケーションである。さらに、この例において、ソフトウェア・アプリケーション１０２は、グラフィカル画像データを生成するために、グラフィックス・エンジン１０４に対し一つ以上の関数コールを行う。
【０００７】
関数コールを受信するのに応じ、グラフィックス・エンジン１０４は、ソフトウェア・アプリケーションの状態をどのようにグラフィックスで提示するかを計算し、一つ以上の対応する関数コールをグラフィックス・ライブラリ１０６に送信し、次いで、該ライブラリが、一つ以上の一時バッファ１０８中でグラフィカル画像データを生成または修正する。一つ以上の一時バッファ中に、アプリケーション中のグラフィックスの一つのフレームを提示するための全グラフィカル画像データが完全に生成されたならば、グラフィックス・ライブラリ１０６は、これら一時バッファを一緒に合成してファイナル・バッファ１１０を生成し、これを一つの新規バッファまたは一時バッファの一つとすることができる。グラフィックスの一つのフレームを表すために一つだけの一時バッファが生成される状況では、その一時バッファをファイナル・バッファ１１０として用いることが可能である。
【０００８】
続いて、ファイナル・バッファ１１０中のグラフィカル画像データは、グラフィックス・ドライバ１１２に提供される。次いで、グラフィックス・ドライバ１１２は、グラフィックス・ハードウェア１１４および／またはディスプレイ１１６を制御し、画像をユーザに提示する。秒あたり複数の画像フレームがユーザに提示されると、ユーザはこれらの画像フレームを一緒に組み合わせて知覚し、ディスプレイ１１６に動画効果が生じる。
【０００９】
グラフィックス・エンジン１０４は、ソフトウェア・アプリケーション１０２とグラフィックス装置との間のインターフェースとして機能する。なお、グラフィックス・エンジン１０４は、通常はソフトウェア・アプリケーション１０２の一部である。例えば、グラフィックス・エンジン１０４は、単に、グラフィックス・ライブラリ１０６を呼び出す、ソフトウェア・アプリケーション１０２のルーティンである。あるいは、グラフィックス・エンジン１０４は、グラフィカル画像データを生成または修正する、および／またはグラフィカル画像データにデジタル画像処理を実施する役割を果たす、ソフトウェア・アプリケーション１０２のフル機能を備えたサブプログラムである。
【００１０】
グラフィックス・エンジン１０４は、ソフトウェア・アプリケーション１０２の作成者によって生成されるか、第三者からライセンス供与される、オペレーティング・システム・ベンダーにより提供されることが可能である。多くの場合、ソフトウェア・アプリケーション１０２および／またはグラフィックス・エンジン１０４は、既知のグラフィックス装置によって生成されたグラフィカル画像データを取り込むインターフェースを提供できない。
【００１１】
こうしたグラフィカル画像データの取り込みを容易にする従来技術は、グラフィカル画像データを取り込む機能を包含するために、ソフトウェア・アプリケーション１０２および／またはグラフィックス・エンジン１０４の修正を必要とする。このため、ソフトウェア・アプリケーション１０２の一部として追加のソフトウェア・モジュールを含める必要がある。さらに、ソフトウェア・アプリケーション１０２の実行の間にグラフィカル画像データを取り込む際に、その追加のソフトウェア・モジュールを呼び出すため、グラフィックス・エンジン１０４も修正する必要がある。
【００１２】
しかしながら、この従来技術には幾つかの不利な点がある。第一に、ソフトウェア・アプリケーション１０２および／またはグラフィックス・エンジン１０４を大幅に修正する必要がある。第二に、こうした大幅な修正は困難で、時間がかかり面倒である。第三に、グラフィックス・エンジン１０４が第三者からライセンス供与されている場合、グラフィックス・エンジン１０４のソース・コードは大抵非開示であり、したがって、ソフトウェア・アプリケーション１０２の作成者による修正ができない。さらに、従来技術は、潜在的にグラフィカル画像を生成する際にパフォーマンス低下を被りやすい。
【００１３】
グラフィックスの取り込みを容易にする別の従来技術は、グラフィックス取り込み機能を有する第三者のソフトウェア・アプリケーションの使用が必要である。しかしながら、こうした第三者のソフトウェア・アプリケーションは、Ａｐｐｌｅ  ｉＯＳおよびＧｏｏｇｌｅ  Ａｎｄｒｏｉｄなどのオペレーティング・システムに強制される、携帯デバイス中のソフトウェア・アプリケーションのサンドボックス（sandbox）化に起因して、携帯デバイスには適さないことが多い。用語「サンドボックス」化とは、あるソフトウェア・アプリケーションが別のソフトウェア・アプリケーションのデータを読み取るのを防止するソフトウェア・セキュリティの実践をいう。
【００１４】
また、一部のオペレーティング・システムには、それら自体がグラフィカル画像データ取り込み機能を標準機能として有するものがある。但し、こうしたグラフィカル画像データ取り込み機能は、通常、携帯デバイス用に設計されたオペレーティング・システムには備わっていない。
【００１５】
したがって、グラフィカル画像データ取り込みを容易にする能力のある、携帯デバイス用グラフィックス装置が必要とされている。
【摘要】
【００１６】
本開示は、携帯デバイス用グラフィックス装置の提供を図る。
【００１７】
また、本開示は、グラフィカル画像データを取り込むソフトウェア開発キット（ＳＤＫ：Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）の提供も図る。
【００１８】
本開示は、例えば、スクリーンショット、スクリーンショットのシリーズ、および／またはビデオを含め、前記グラフィカル画像データを取り込むＳＤＫを使用する方法の提供も図る。
【００１９】
一つの態様において、本発明の実施形態は、グラフィカル画像データを取り込むＳＤＫを提供する。このＳＤＫはデバイス中で用いるよう構成される。このデバイスは、グラフィカル画像データを生成する一つ以上のソフトウェア・アプリケーションを実行するよう動作可能なコンピューティング・ハードウェアを含み、該画像データは、デバイスのグラフィカル表示機構を介して見ることができる。
【００２０】
このデバイスの例には、以下に限らないが、移動端末、携帯電話、スマート・フォン、モバイル・インターネット・デバイス（ＭＩＤ：Ｍｏｂｉｌｅ  Ｉｎｔｅｒｎｅｔ  Ｄｅｖｉｃｅ）、ファブレット・コンピュータ、タブレット・コンピュータ、ウルトラモバイル・パーソナル・コンピュータ（ＵＭＰＣ：Ｕｌｔｒａ−Ｍｏｂｉｌｅ  Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、携帯情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ウェブ・パッド、ハンドヘルド・パーソナル・コンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ラップトップ・コンピュータ、双方向エンターテイメント・コンピュータ、ゲーム端末、テレビジョン（ＴＶ：Ｔｅｌｅｖｉｓｉｏｎ）セット、およびセットトップ・ボックス（ＳＴＢ：Ｓｅｔ−Ｔｏｐ  Ｂｏｘ）が含まれる。
【００２１】
ＳＤＫは、デバイスのコンピューティング・ハードウェアで、ソフトウェア・アプリケーションと同時に実行されるように構成される。
【００２２】
このソフトウェア・アプリケーションは、グラフィカル画像データを生成するために、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対し、一つ以上の呼び出しを行うよう動作可能である。
【００２３】
ＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリをラップするように動作可能である利点があって、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対する実質上全ての関数コールをインターセプトできて、それらの関数コールがＳＤＫを通過できる。
【００２４】
さらにＳＤＫは、これら関数コールがグラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって受信される前に、インターセプトした関数コールを修正するよう動作できる。これらのインターセプトされた関数コールの修正によって、ＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できてもよい。または、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、任意の方法で関数コールを修正できてもよい。
【００２５】
さらにＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データをコピーし、次いでそのコピーしたデータを、デバイスの一時メモリまたは非一時的ストレージ中の別の位置に格納するよう動作可能であるか、あるいは、グラフィカル画像データを、例えば、該グラフィカル画像データからビデオ映像の一フレームを生成するよう動作可能なビデオ符号化ソフトウェアまたはハードウェアに送信し、こうしたビデオをデバイスのメモリまたは非一時的ストレージに格納するよう動作可能であってもよい。
【００２６】
さらにＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データを、デバイスから空間的に遠隔のデータ・ストアに、アップロードまたはストリームするよう動作可能であってもよい。
【００２７】
さらにまた、ＳＤＫは、ソフトウェア・アプリケーションの中に統合されてその一体部分となるように構成されてもよい。
【００２８】
別の態様において、本開示の実施形態は、グラフィカル画像データを取り込むＳＤＫを使用する方法を提供する。
【００２９】
さらに別の態様において、本開示の実施形態は、持続的（非一時的）機械可読データ・ストレージ媒体に格納されたソフトウェア製品を提供し、このソフトウェア製品は、前記方法を実施するためにデバイスのコンピューティング・ハードウェアで実行が可能である。該ソフトウェア製品は、例えば、ソフトウェア・アプリケーション・ストアから、デバイスにダウンロードできてもよい。
【００３０】
本開示の実施形態は、従来技術の前記問題を実質的に除去しまたは前記問題に少なくとも部分的に対処し、ユーザが、対応するアプリケーション・バイナリ・インターフェース（ＡＢＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｂｉｎａｒｙ  Ｉｎｔｅｒｆａｃｅ）が生成されたときにＳＤＫすなわち「リンキング・ライブラリ」をソフトウェア・アプリケーションに含めることだけを除き、ソフトウェア・アプリケーションおよび／またはグラフィックス・エンジンおよび／またはグラフィックス・ライブラリの修正を必要とせずに、例えばゲームプレイ中に生成されたグラフィカル画像データをユーザが取り込むことができ、グラフィカル画像データの取り込み機能を容易にする。
【００３１】
別の態様において、グラフィックス・ライブラリへの関数コールのインターセプトおよび修正を可能にするＳＤＫおよび／またはコア技術は、オペレーティング・システムのベンダーによりオペレーティング・システム（ＯＳ）の一部として含められ、これにより、そのオペレーティング・システムをサポートする全てのアプリケーションが、それらのアプリケーションにＳＤＫを含めずに、グラフィカル画像データの取り込みができてもよい。
【００３２】
本開示のさらなる態様、利点、特徴、および目的は、例示的実施形態の図面および詳細な説明を、添付の特許請求の範囲と併せ解釈することによって明らかになろう。
【００３３】
当然ながら、本開示の特徴は、添付の特許請求の範囲に定義された本開示の範囲から逸脱することなく、様々な組み合わせに容易に含められる。
【図面の簡単な説明】
【００３４】
前述の摘要、および以下の例示的実施形態の詳細な説明は、添付の図面と併せて読めばよりよく理解されよう。本開示を説明するために、本開示の例示的構成が図面に示されている。しかしながら、本開示は、本明細書に開示する特定の方法および手段に限定されない。さらに、当業者は、これら図面が一定の縮尺でないことを理解していよう。可能な場合は常に、同一エレメントは同一番号で示されている。
【００３５】
単なる例示として、以下の図面を参照しながら本開示の実施形態を以下に説明する。
【図１】携帯デバイスすなわち携帯電子デバイス用の従来型グラフィックス装置の概略図である（従来技術）。
【図２】本開示のある実施形態による、グラフィカル画像データを取り込むソフトウェア開発キット（ＳＤＫ）を用いるのに適したデバイスの様々なコンポーネントの概略図である。
【図３】本開示の第一実施形態による、上記デバイスに適したグラフィックス装置の概略図である。
【図４】本開示の第二実施形態による、上記デバイスに適したグラフィックス装置の概略図である。
【図５】本開示の第三実施形態による、上記デバイスに適したグラフィックス装置の概略図である。
【図６】本開示のある実施形態による、グラフィカル画像データを取り込むＳＤＫを使用する方法のステップの図である。
【００３６】
添付の図面において、下線付きの番号は、その下線付き番号が付与された事項、または下線付き番号が隣接する事項を表すように用いられている。下線のない番号は、その下線なし番号をリンクするラインによって識別される事項に関する。ある番号に下線がなく、関連する矢印が付与されている場合、その下線なし番号は、矢印が指す事項全般を識別するために用いられる。
【実施形態の詳細な説明】
【００３７】
以下の詳細な説明は、本開示の実施形態をおよびそれらが実施できる方法を示している。本開示の遂行のベストモードが開示されているが、当業者は、本開示を遂行または実践する他の実施形態も可能であることを認識するであろう。
【００３８】
本開示の諸実施形態は、グラフィカル画像データを取り込むソフトウェア開発キット（ＳＤＫ）を提供する。このＳＤＫは、例えば携帯デバイスなどのデバイス中で用いるよう構成されている。該デバイスは、デバイスのグラフィカル表示機構を介して見ることができるグラフィカル画像データを生成する、一つ以上のアプリケーションを実行するよう動作可能なコンピューティング・ハードウェアを含む。
【００３９】
このデバイスの例には、以下に限らないが、移動端末、携帯電話、スマート・フォン、モバイル・インターネット・デバイス（ＭＩＤ）、ファブレット・コンピュータ、タブレット・コンピュータ、ウルトラモバイル・パーソナル・コンピュータ（ＵＭＰＣ）、携帯情報端末（ＰＤＡ）、ウェブ・パッド、ハンドヘルド・パーソナル・コンピュータ（ＰＣ）、ラップトップ・コンピュータ、双方向エンターテイメント・コンピュータ、ゲーム端末、テレビジョン（ＴＶ）セット、およびセットトップ・ボックス（ＳＴＢ）が含まれる。
【００４０】
ＳＤＫは、該デバイスのコンピューティング・ハードウェアで、一つ以上のソフトウェア・アプリケーションと同時に実行されるように構成される。
【００４１】
これら一つ以上のソフトウェア・アプリケーションは、グラフィカル画像データを生成するために、デバイスのグラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対し、一つ以上の関数コールを行うよう動作可能である。
【００４２】
ＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリをラップするように動作可能である利点があって、ＳＤＫがグラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対する実質上全ての関数コールをインターセプトできる。こうした関数コールがＳＤＫを通過できてもよい。
【００４３】
さらに、ＳＤＫは、これら関数コールがグラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって受信される前に、インターセプトした関数コールを修正するよう動作可能である。ＳＤＫは、これら関数コールを修正して、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できてもよい。あるいは、別途に、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリが、グラフィカル画像データにアクセス、生成、または修正する仕方を変更することができてもよい。画像データの例には、デバイスを介して表示可能な任意のグラフィックスが含まれ、この画像データは、デバイスまたは類似物におけるビデオ、ビデオフレーム、静止画像、グラフィックスの一部、の一つ以上を含む。
【００４４】
さらにＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データのコピーを作成し、そのコピーを、デバイスの一時メモリまたは非一時的ストレージ中の別の位置に格納するよう動作可能であるか、あるいは、グラフィカル画像データを、例えば、該グラフィカル画像データからビデオ映像の一フレームを生成するビデオ符号化ソフトウェアまたはハードウェアに送信し、該ビデオをデバイスのメモリまたは非一時的ストレージに格納するよう動作可能であってもよい。
【００４５】
さらにＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データを、デバイスから空間的に遠隔のデータ・ストアに、アップロードまたはストリームするよう動作可能であってもよい。
【００４６】
さらにＳＤＫは、ソフトウェア・アプリケーションの中に統合されてその一体部分となるように構成されてもよい。
【００４７】
次いで、図面を特にそれらの参照番号によって参照すると、図２は、本開示の実施形態による、例えば、グラフィカル画像データを取り込むＳＤＫを用いるのに適したデバイス２００の様々なコンポーネントの概略図である。デバイス２００は、以下に限らないが、データ・メモリ２０２と、プロセッサ２０４などのコンピューティング・ハードウェアと、入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス２０６と、ネットワーク・インターフェース２０８と、データ・メモリ２０２、プロセッサ２０４、Ｉ／Ｏデバイス２０６、およびネットワーク・インターフェース２０８を含む様々なコンポーネントを作動可能に接続するシステム・バス２１０と、を含む。入力／出力（Ｉ／Ｏ）デバイス２０６は非一時的データ・ストレージ機構を含んでもよい。
【００４８】
データ・メモリ２０２は、固定型メモリ、リムーバブル・メモリ、またはそれらの組み合わせを含む。固定型メモリは、例えば、ランダムアクセス・メモリ（ＲＡＭ：Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュ・メモリ、またはハード・ドライブを含む。リムーバブル・メモリは、例えば、フラッシュ・メモリ・カード、メモリ・スティック、またはスマート・カードを含んでもよい。
【００４９】
メモリ２０２は、プロセッサ２０４で実行されたとき、様々なソフトウェア・アプリケーションをその上で実行できるインターフェースを提供する、オペレーティング・システム（ＯＳ）２１２を格納する。さらに、ＯＳ２１２は、デバイス２００のユーザに、その中から選択が可能な一つ以上の選択肢を提供するユーザ・インターフェース（図２に示さず）を含むことができる。
【００５０】
例えば、該ユーザ・インタフェースによって、ユーザが遠隔サーバからゲーム・アプリケーションをダウンロードし、そのゲーム・アプリケーションをプロセッサ２０４で実行してゲームをプレイできてもよい。但し、当然ながら、ゲーム・アプリケーション以外のソフトウェア・アプリケーションを代わりにまたは加えてダウンロードできてもよい。さらに、ユーザには、ゲームプレイの間に生成されたグラフィカル画像データを取り込む選択肢が提供される。グラフィカル画像データが取り込まれる仕方の詳細は、図３、４、および５に関連させて説明されている。これにより取り込まれたグラフィカル画像データは、次いでデータ・メモリ２０２に格納されてもよい。前述したように、本明細書で説明する諸実施形態は、ゲーム・アプリケーションに限定されない。すなわち、取り込みは、任意のソフトウェア・アプリケーションとともに使用できる。
【００５１】
さらに、取り込まれたグラフィカル画像データは、ネットワーク・インターフェース２０８を介して他のデバイスを用いる他のユーザと共有されてもよい。ネットワーク・インターフェース２０８によって、デバイス２００が例えば、通信ネットワーク（図２に示さず）を介して他のデバイスと通信できてもよい。加えて、ネットワーク・インターフェース２０８で、デバイス２００が取り込まれたグラフィカル画像データを、通信ネットワークを介して遠隔サーバにアップロードまたはストリームできてもよい。
【００５２】
この通信ネットワークは例えば、互いに相互接続されて単一の大きなネットワークとして機能する、個別ネットワークの集合体である。こうした個別のネットワークは、有線、無線、またはそれらの組み合わせであってもよい。個別のネットワークの例には、以下に限らないが、ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ：Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（ＷＬＡＮ：Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、無線ＷＡＮ（ＷＷＡＮ：Ｗｉｒｅｌｅｓｓ  ＷＡＮ）、無線ＭＡＮ（ＷＭＡＮ：Ｗｉｒｅｌｅｓｓ  ＭＡＮ）、第二世代（２Ｇ）通信ネットワーク、第三世代（３Ｇ）通信ネットワーク、第四世代（４Ｇ）通信ネットワーク、およびワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス（ＷｉＭＡＸ：Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ）ネットワークが含まれる。
【００５３】
デバイス２００は、移動端末、携帯電話、スマート・フォン、ＭＩＤ、ファブレット・コンピュータ、タブレット・コンピュータ、ＵＭＰＣ、ＰＤＡ、ウェブ・パッド、ハンドヘルドＰＣ、ラップトップ・コンピュータ、双方向エンターテイメント・コンピュータ、ゲーム端末、ＴＶセット、およびセットトップ・ボックス（ＳＴＢ）の少なくとも一つを使って実装されてもよい。
【００５４】
図２は単なる例であって、添付の特許請求の範囲を不当に限定するものではない。当然ながら、デバイス２００に対する具体的指定は一例として提供されたものであり、デバイス２００を、特定の数、種類、または配置のモジュールおよび／またはコンポーネントのデバイス２００に限定すると解釈されるべきではない。当業者は、本開示の実施形態の多くの変形、代替、および修正を認識されよう。
【００５５】
図３は、本開示の第一実施形態による、デバイス２００に適したグラフィックス装置の概略図である。説明のため、本グラフィックス装置は、デバイス２００のプロセッサ２０４で実行されるソフトウェア・アプリケーション３０２によって使用される。
【００５６】
本グラフィックス装置は、グラフィックス・エンジン３０４と、ラッパー３０６と、グラフィックス・ライブラリ３０８と、一つ以上の一時バッファ３１０と、ファイナル・バッファ３１２と、ビデオ取り込みコンポーネント３１４と、グラフィックス・ドライバ３１６と、グラフィックス・ハードウェア３１８と、ディスプレイ３２０とを含む。ラッパー３０６とビデオ取り込みコンポーネント３１４とは、グラフィカル画像データを取り込むＳＤＫの一部を形成する。グラフィックス・ドライバ３１６と、グラフィックス・ハードウェア３１８と、ディスプレイ３２０とは、デバイス２００のグラフィカル表示機構の一部を形成する。
【００５７】
本開示のある実施形態によれば、ＳＤＫは、デバイス２００のプロセッサ２０４で、ソフトウェア・アプリケーション３０２と同時に、またはその一部として実行するように構成される。
【００５８】
グラフィックス・エンジン３０４と、ラッパー３０６、グラフィックス・ライブラリ３０８、一時バッファ３１０、ファイナル・バッファ３１２、ビデオ取り込みコンポーネント３１４は、デバイス２００のデータ・メモリ２０２に格納されてもよい。また、図３に示されるようにＯＳ２１２に駐在したり、ＯＳ２１２で実行されたりしてもよい。
【００５９】
例えば、グラフィックス・エンジン３０４は、オブジェクト指向グラフィックス・レンダリング・エンジン（ＯＧＲＥ：Ｏｂｊｅｃｔ−ｏｒｉｅｎｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｒｅｎｄｅｒｉｎｇ  Ｅｎｇｉｎｅ）、Ｉｒｒｌｉｃｈｔ  ３Ｄエンジン、Ｖｉｓｕａｌ３Ｄゲーム・エンジン、Ｔｒｕｅｖｉｓｉｏｎ３Ｄエンジン、Ｃｒｙｓｔａｌ  Ｓｐａｃｅエンジン、Ｕｎｉｔｙ３Ｄゲーム・エンジン、Ｕｎｒｅａｌ  Ｅｎｇｉｎｅ、Ｃｏｃｏｓ２Ｄエンジンなど、第三者からライセンス供与されたグラフィックス・エンジンでもよい。グラフィックス・ライブラリ３０８は、オープン・グラフィックス・ライブラリ（ＯｐｅｎＧＬ：Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）ＡＰＩ、Ｄｉｒｅｃｔ３Ｄ  ＡＰＩ、ＥＡグラフィックス・ライブラリ（ＥＡＧＬ：ＥＡ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）ＡＰＩ、エンベデッド−システム・グラフィックス・ライブラリ（ＥＧＬ：Ｅｍｂｅｄｄｅｄ−ｓｙｓｔｅｍ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）ＡＰＩなど、クロスプラットフォームのグラフィックス・ライブラリ・アプリケーション・プログラミング・インタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を介して実装されてもよい。
【００６０】
さらに、グラフィックス・ドライバ３１６は、オペレーティング・システム（ＯＳ）のカーネル中のソフトウェア機能であってもよい。グラフィックス・ドライバ３１６は、システム供給のドライバ・コンポーネント、ベンダー供給のドライバ・コンポーネント、またはこれらの組み合わせであってもよい。グラフィックス・ドライバ３１６は、グラフィックス・ハードウェア３１８を介してディスプレイ３２０にインターフェース接続される。グラフィックス・ハードウェア３１８は例えば、デバイス２００の集積グラフィックス・チップセット、または専用グラフィックス処理ユニット（ＧＰＵ）であってもよい。ディスプレイ３２０は例えば、デバイス２００のタッチ・スクリーン・ディスプレイなどのピクセル・ディスプレイであってもよい。
【００６１】
ある例示的実施形態において、ソフトウェア・アプリケーション３０２は、ゲームプレイの間、デバイス２００のグラフィカル表示機構を介して見ることができるグラフィカル画像データの生成を必要とするゲーム・アプリケーションである。さらに、この例示的な実施形態において、デバイス２００のユーザは、ゲームプレイの間に生成されたグラフィカル画像データを取り込むことを選ぶ。
【００６２】
グラフィカル画像データを生成するために、ソフトウェア・アプリケーション３０２は、グラフィックス・エンジン３０４に対し一つ以上の関数コールを行う。グラフィックス・エンジン３０４は、ソフトウェア・アプリケーション３０２とグラフィックス装置との間のインターフェースとしての機能を果たす。
【００６３】
グラフィックス・エンジン３０４は、通常、少なくとも部分的にソフトウェア・アプリケーション３０２中に実装される。あるいは、グラフィックス・エンジン３０４は、全体がソフトウェア・アプリケーション３０２とは別のルーティンとして実装されてもよい。グラフィックス・エンジン３０４は、ソフトウェア・アプリケーション３０２の作成者によって生成されるか、もしくは第三者からライセンス供与されてもよい。
【００６４】
関数コールを受信するのに応じて、グラフィックス・エンジン３０４は、ソフトウェア・アプリケーションの状態をグラフィックスで表現する仕方を計算し、グラフィックス・ライブラリ３０８に対し、一つ以上の関数コールを行う。これは、ラッパー３０６を起動し、ラッパーは、グラフィックス・エンジン３０４が行うグラフィックス・ライブラリ３０８への関数コールをインターセプトするよう動作可能である。
【００６５】
ラッパー３０６は、グラフィックス・ライブラリ３０８をラップするように動作できる利点があって、グラフィックス・ライブラリ３０８に対する実質上全ての関数コールがラッパー３０６を通過できる。なお、ラッパー３０６はアプリケーション３０２の一部である。
【００６６】
ラッパー３０６は、関数コールがグラフィックス・ライブラリ３０８によって受信される前にこれら関数コールを修正できて、ＳＤＫが、グラフィックス・エンジン３０４および／またはグラフィックス・ライブラリ３０８によって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できてもよい。あるいは、グラフィックス・ライブラリ３０８の動作を制御するため、別途に任意の方法で関数コールを修正できてもよい。
【００６７】
さらにＳＤＫは、一時バッファ３１０および／またはファイナル・バッファ３１２から、グラフィックス・エンジン３０４および／またはグラフィックス・ライブラリ３０８によって生成されたグラフィカル画像データのコピーを作成するよう動作可能であってもよい。特定の関数コールがラッパー３０６を通り過ぎるとき、ラッパー３０６は、ビデオ取り込みコンポーネント３１４が一時バッファ３１０および／またはファイナル・バッファ３１２からグラフィカル画像データをコピーできるような方法で、グラフィックス・ライブラリ３０８を制御するため、特定の関数コールがグラフィックス・ライブラリ３０８によって受信される前にその特定の関数コールを修正する。
【００６８】
グラフィックス・エンジン３０４が単一の一時バッファ３１０のみを使用している例において、その一時バッファ３１０は、ファイナル・バッファ３１２としても使われ、関数コールに対しＳＤＫが行った、または行う修正によって、ビデオ・キャプチャ・コンポーネントが、当該バッファ中の、グラフィックス・ライブラリ３０８によって生成または修正されたデータを読み取れてもよい。グラフィックス・エンジン３０４が当該バッファ中の画像フレームの描画を完了したとき、グラフィックス・エンジン３０４は、完了した画像フレームをユーザに提示するため、グラフィックス・ライブラリ３０８を呼び出す。それに応じて、ラッパー３０６は、ビデオ・キャプチャ・コンポーネント３１４が、デバイス・メモリの他の場所にファイナル・バッファ３１２のコピーを格納したことを確かにし、その後、グラフィックス・ライブラリ３０８は、ユーザにファイナル・バッファ３１２を提示するために、グラフィックス・ドライバ３１６を呼び出す。別の実施形態において、ビデオ・キャプチャ・コンポーネント３１４は、画像フレームが完全に描画される前に一時バッファ３１０またはファイナル・バッファ３１２のコピーを格納し、すなわち、ユーザ・インタフェース・エレメントなど特定のグラフィカル・エレメントが当該対応バッファ中に生成される前に、グラフィカル画像データを取り込むことができる。
【００６９】
グラフィックス・エンジン３０４が、複数のバッファ、すなわち一つ以上の一時バッファ３１０を使用する別の例において、グラフィックス・ライブラリ３０８は、グラフィカル画像データをそれら一つ以上の一時バッファ３１０に書き込む。グラフィックス・エンジン３０４が、一つ以上の一時バッファ３１０中の画像フレームの描画を完了したとき、グラフィックス・エンジン３０４は、ユーザに合成された画像フレームを提示するためにグラフィックス・ライブラリ３０８を呼び出す。それに応じて、ラッパー３０６は、グラフィックス・ライブラリ３０８が、グラフィカル画像データを一つ以上の一時バッファ３１０からファイナル・バッファ３１２の中に合成したことを確かにし、該データはビデオ・キャプチャ・コンポーネント３１４による読み取りが可能である。合成が終わったならば、ビデオ・キャプチャ・コンポーネント３１４が、ファイナル・バッファ３１２からの合成済みグラフィカル画像データのコピーを、デバイス・メモリ中の別の場所に格納することになり、その後、グラフィックス・ドライバ３１６がそのファイナル・バッファ３１２をユーザに提示することになる。別の実施形態において、ビデオ・キャプチャ・コンポーネント３１４は、フレームが完成する前に一時バッファ３１０またはファイナル・バッファ３１２のコピーを格納し、すなわち、ユーザ・インタフェース・エレメントなど特定のグラフィカル・エレメントが生成される前に、グラフィカル画像データを取り込むように動作可能である。
【００７０】
完成した画像フレームを受信するのに応じ、グラフィックス・ドライバ３１６は、グラフィックス・ハードウェア３１８および／またはディスプレイ３２０を制御し、完成した画像フレームをユーザに提示する。
【００７１】
一方、ビデオ・キャプチャ・コンポーネント３１４は、一時バッファ３１０またはファイナル・バッファ３１２のいずれかに書き込まれたグラフィカル画像データを取り込み、そのグラフィカル画像データをメモリ２０２中に、またはデバイス２００中の別の内部ストレージの中にローカルに格納する、あるいは、例えば、ビデオ・エンコーダ・ソフトウェアまたはハードウェアを使ってグラフィカル画像データのフレーム群をビデオ・ファイルの中に圧縮するため、グラフィカル画像データをさらに処理するよう動作可能である。これにより、グラフィカル画像データは、例えば、ソフトウェア・アプリケーション３０２の動作のビデオ記録を提供するため等で、後の時点での画像フレーム群の再生に使われてもよい。
【００７２】
ビデオ・キャプチャ・コンポーネント３１４は、ファイナル・バッファ３１２のコンテンツを、デバイス２００から空間的に遠隔のデータ・ストアにアップロードおよび／またはストリームするよう動作できる利点がある。こうしたコンテンツは例えば、ゲームプレイの経験を共有する目的のため、データ・ストアから一つ以上の他のユーザのデバイスにストリームされてもよいが、この目的に限らない。
【００７３】
さらに、ＳＤＫは、ラッパー３０６およびビデオ・キャプチャ・コンポーネント３１４を含め、ソフトウェア・アプリケーション３０２の中に統合されその一体部分となるように構成されてもよい。ラッパー３０６およびビデオ・キャプチャ・コンポーネント３１４は、例えば、ソフトウェア・アプリケーション３０２がオブジェクト・コード・ライブラリと一緒にリンクされている場合、ソフトウェア・アプリケーション３０２のアプリケーション・バイナリ・インターフェース（ＡＢＩ）に含まれてもよい。こうしたリンク付けは、例えば、実行可能ファイルが生成される場合、またはソフトウェア・アプリケーション３０２がランタイムで使われる場合は常に、有利に行われる。結果として、ラッパー３０６およびビデオ・キャプチャ・コンポーネント３１４は、例えばソフトウェア・ディベロッパに実装されるような、透過的な仕方でソフトウェア・アプリケーション３０２の一部となってもよい。
【００７４】
さらに、ソフトウェア・アプリケーション３０２は、ＳＤＫによって提供されるグラフィックスキャプチャ機能をユーザが「有効」または「無効」にできるよう動作可能であってもよい。
【００７５】
ソフトウェア・アプリケーション３０２、グラフィックス・エンジン３０４、および／またはグラフィックス・ライブラリ３０８は、ＳＤＫをソフトウェアのアプリケーション・バイナリ・インターフェース（ＡＢＩ）にリンクすることを除き、実質的に修正が不要であってもよい。
【００７６】
次いで、ソフトウェア・アプリケーション３０２が、グラフィカル画像データを生成するためにグラフィックス・エンジン３０４を呼び出すとき、グラフィックス・エンジン３０４は、グラフィックス・ライブラリ３０８を呼び出すことを意図して、代わりにラッパー３０６を透過的に呼び出す。それに続いて、ラッパー３０６は、ビデオ・キャプチャ・コンポーネント３１４が、生成されたグラフィカル画像データに対して、例えばこうしたデータを読み取り、コピーおよび修正するフルアクセスを有し、これにより、グラフィックス・エンジン３０４および／またはグラフィックス・ライブラリ３０８によって生成されたグラフィカル画像データの取り込みを容易にするように、グラフィックス・ライブラリ３０８を設定するため、関数コールが通り過ぎる前にそれらを修正する。
【００７７】
上記に換えて、ＳＤＫは、ＯＳ２１２の中に統合されてその一体部分となるように構成されてもよい。これは、ＯＳ２１２で実行される一切のソフトウェア・アプリケーションに対しグラフィックスキャプチャ機能を有利に提供する。こうした例においてＯＳ２１２は、デバイス２００のユーザが例えば、ソフトウェア・アプリケーション毎ベースでグラフィックスキャプチャ機能を制御できる機能を提供してもよい。
【００７８】
こうした実装によって、携帯デバイスで実行される全ソフトウェア・アプリケーションに対してシステム全体のグラフィックスキャプチャ機能を提供するＯＳ２１２を使用した携帯デバイスを、ハードウェア製造者が製造できるという利点がある。さらに、オープンソース・オペレーティング・システムの場合、この実装で、このシステム全体のグラフィックスキャプチャ機能を含めるために、そうしたオープンソース・オペレーティング・システムを個々のディベロッパが修正できるという利点がある。
【００７９】
ラッパー３０６の実行は、ラッパー３０６自体がグラフィカル画像データを生成するのではないので、測定可能なほどのパフォーマンス低下につながることはないという利点がある。ビデオ・キャプチャ・コンポーネント３１４によるグラフィカル画像データの取り込み、およびこうしたグラフィカル画像データのビデオ・ファイルへの格納または圧縮がある程度のパフォーマンス低下をもたらす可能性はあるが、これは、ソフトウェア・アプリケーション３０２の実行に起因するパフォーマンス低下と比較すると実質的に無視できる。
【００８０】
図３は単なる例であって、添付の特許請求の範囲を不当に限定するものではない。グラフィックス装置に対する具体的指定は、該グラフィックス装置を、特定の数、種類、配置のモジュール、ルーティン、ソフトウェア製品、コンポーネントおよび／またはＡＰＩのグラフィックス装置に限定すると解釈されるべきではない。当業者は、本開示の実施形態の多くの変形、代替、および修正を認識していよう。
【００８１】
例えば、ゲームプレイの間に生成されたグラフィカル画像データとともに、ビデオおよび／またはデジタル・オーディオ・データを取り込むために、グラフィックス装置と類似の仕方で、デバイス２００にビデオ装置が実装されてもよい。グラフィカル画像データとともにデジタル・オーディオ・データから成るビデオ・ファイルは、次いで、遠隔のサーバに有利にアップロードもしくはストリームされ、および／または他のユーザと共有される。
【００８２】
図４は、本開示の第二実施形態による、デバイス２００に適したグラフィックス装置の概略図であり、別途に述べられた個所を除き、図４および図５は図３に記載の機能の準用である。説明上、グラフィックス装置は、デバイス２００のプロセッサ２０４で実行されるソフトウェア・アプリケーション４０２によって使用される。
【００８３】
このグラフィックス装置は、ラッパー４０４と、グラフィックス・エンジン４０６と、グラフィックス・ライブラリ４０８と、一つ以上の一時バッファ４１０と、ファイナル・バッファ４１２と、ビデオ・キャプチャ・コンポーネント４１４と、グラフィックス・ドライバ４１６と、グラフィックス・ハードウェア４１８と、ディスプレイ４２０とを含む。ラッパー４０４と、ファイナル・バッファ４１２と、ビデオ・キャプチャ・コンポーネント４１４とは、グラフィカル画像データを取り込むＳＤＫの一部を形成する。グラフィックス・ドライバ４１６と、グラフィックス・ハードウェア４１８と、ディスプレイ４２０とは、デバイス２００のグラフィカル表示機構の一部を形成する。
【００８４】
本開示のある実施形態によれば、ＳＤＫは、デバイス２００のプロセッサ２０４で、ソフトウェア・アプリケーション４０２と同時に、またはその一部として実行するよう構成される。
【００８５】
ラッパー４０４と、グラフィックス・エンジン４０６、グラフィックス・ライブラリ４０８、一時バッファ４１０、ファイナル・バッファ４１２、ビデオ・キャプチャ・コンポーネント４１４は、デバイス２００のデータ・メモリ２０２に格納されてもよい。また、図４に示されるようにＯＳ２１２に駐在したり、ＯＳ２１２で実行されたりしてもよい。
【００８６】
例えば、グラフィックス・エンジン４０６は、オブジェクト指向グラフィックス・レンダリング・エンジン（ＯＧＲＥ）、Ｉｒｒｌｉｃｈｔ  ３Ｄエンジン、Ｖｉｓｕａｌ３Ｄゲーム・エンジン、Ｔｒｕｅｖｉｓｉｏｎ３Ｄエンジン、Ｃｒｙｓｔａｌ  Ｓｐａｃｅエンジン、Ｕｎｉｔｙ３Ｄゲーム・エンジン、Ｕｎｒｅａｌ  Ｅｎｇｉｎｅ、Ｃｏｃｏｓ２Ｄエンジンなど、第三者からライセンス供与されたグラフィックス・エンジンでもよい。グラフィックス・ライブラリ４０８は、ＯｐｅｎＧＬ  ＡＰＩ、Ｄｉｒｅｃｔ３Ｄ  ＡＰＩ、ＥＡＧＬ  ＡＰＩ、ＥＧＬ  ＡＰＩなど、クロスプラットフォームのグラフィックス・ライブラリＡＰＩを介して実装されてもよい。
【００８７】
さらに、グラフィックス・ドライバ４１６は、オペレーティング・システム（ＯＳ）のカーネル中のソフトウェア機能であってもよい。グラフィックス・ドライバ４１６は、システム供給のドライバ・コンポーネント、ベンダー供給のドライバ・コンポーネント、またはこれらの組み合わせであってもよい。グラフィックス・ドライバ４１６は、グラフィックス・ハードウェア４１８を介してディスプレイ４２０にインターフェース接続される。グラフィックス・ハードウェア４１８は例えば、デバイス２００の集積グラフィックス・チップセット、または専用グラフィックス処理ユニット（ＧＰＵ）であってもよい。ディスプレイ４２０は例えば、デバイス２００のタッチ・スクリーン・ディスプレイなどのピクセル・ディスプレイであってもよい。
【００８８】
ある例示的実施形態において、ソフトウェア・アプリケーション４０２は、ゲームプレイの間、デバイス２００のグラフィカル表示機構を介して見ることができるグラフィカル画像データの生成を必要とするゲーム・アプリケーションである。さらに、デバイス２００のユーザは、この例示的な実施形態において、ゲームプレイの間に生成されたグラフィカル画像データを取り込むことを選ぶ。
【００８９】
グラフィカル画像データを生成するために、ソフトウェア・アプリケーション４０２は、グラフィックス・エンジン４０６に対し一つ以上の関数コールを行う。グラフィックス・エンジン４０６は、ソフトウェア・アプリケーション４０２とグラフィックス装置との間のインターフェースとしての機能を果たす。
【００９０】
グラフィックス・エンジン４０６は、通常、ソフトウェア・アプリケーション４０２の部分として実装される。あるいは、グラフィックス・エンジン４０６は、全体がソフトウェア・アプリケーション４０２とは別のルーティンとして実装される。グラフィックス・エンジン４０６は、ソフトウェア・アプリケーション４０２の作成者によって生成されるか、もしくは第三者からライセンス供与されてもよい。
【００９１】
ソフトウェア・アプリケーション４０２が、グラフィックス・エンジン４０６に対し関数コールを行うと、ラッパー４０４が起動される。ラッパー４０４は、ソフトウェア・アプリケーション４０２が行うグラフィックス・エンジン４０６への関数コールをインターセプトするよう動作可能である。
【００９２】
ラッパー４０４は、グラフィックス・エンジン４０６をラップするように動作可能で、グラフィックス・エンジン４０６へのおよび／またはグラフィックス・エンジン４０６からの実質上全ての関数コールがラッパー４０４を通過できてもよい。なお、ラッパー４０４はアプリケーション４０２の部分である。
【００９３】
関数コール受信するのに応じ、グラフィックス・エンジン４０６は、ソフトウェア・アプリケーションの状態をグラフィックスで提示する仕方を計算し、グラフィックス・ライブラリ４０８に対し一つ以上の関数コールを行う。それに応じ、ラッパー４０４は、グラフィックス・エンジン４０６がグラフィックス・ライブラリ４０８に行う関数コールをインターセプトするよう動作可能である。
【００９４】
グラフィカル画像データを取り込むために、ラッパー４０４は、関数コールがグラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８によって受信される前にこれらの関数コールを修正できて、ＳＤＫが、グラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８によって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できてもよい。あるいは、グラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８の動作を制御するため、別途に任意の方法で関数コールを修正できてもよい。
【００９５】
さらにＳＤＫは、一時バッファ４１０および／またはファイナル・バッファ４１２から、グラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８によって生成されたグラフィカル画像データのコピーを作成するよう動作可能であってもよい。特定の関数コールがラッパー４０４を通り過ぎるとき、ラッパー４０４は、ビデオ・キャプチャ・コンポーネント４１４が一時バッファ４１０および／またはファイナル・バッファ４１２からグラフィカル画像データをコピーできるような方法で、グラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８を制御するため、特定の関数コールがグラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８によって受信される前にその特定の関数コールを修正する。
【００９６】
グラフィックス・エンジン４０６が単一の一時バッファ４１０のみを使用している例において、その一時バッファは、ファイナル・バッファ４１２としても使われ、関数コールに対しＳＤＫが行った、または行う修正によって、ビデオ・キャプチャ・コンポーネントが、当該バッファ中の、グラフィックス・ライブラリ４０８によって生成または修正されたデータを読み取れてもよい。それに応じて、ラッパー４０４は、ビデオ・キャプチャ・コンポーネント４１４が、デバイス・メモリの他の場所にファイナル・バッファ４１２のコピーを格納したことを確かにし、その後、グラフィックス・ライブラリ４０８は、ユーザにファイナル・バッファ４１２を提示するために、グラフィックス・ドライバ４１６を呼び出す。別の実施形態において、ビデオ・キャプチャ・コンポーネントは、画像フレームが完全に描画される前に一時バッファ４１０またはファイナル・バッファ４１２のコピーを格納し、すなわち、ユーザ・インタフェース・エレメントなど特定のグラフィカル・エレメントが当該対応バッファ中に生成される前に、グラフィカル画像データを取り込むことができる。
【００９７】
グラフィックス・エンジン４０６が、複数のバッファ、すなわち複数の一時バッファ４１０を使用する別の例の状況において、グラフィックス・ライブラリ４０８は、グラフィカル画像データをそれら一時バッファ４１０に書き込む。グラフィックス・エンジン４０６が、一時バッファ４１０中の画像フレームの描画を完了したとき、グラフィックス・エンジン４０６は、合成された画像フレームをユーザに提示するためにグラフィックス・ライブラリ４０８を呼び出す。それに応じて、ラッパー４０４は、グラフィックス・ライブラリ４０８が、グラフィカル画像データを一つ以上の一時バッファ４１０からファイナル・バッファ４１２の中に合成したことを確かにし、このデータはビデオ・キャプチャ・コンポーネント４１４による読み取りが可能である。合成が終わったならば、ビデオ・キャプチャ・コンポーネント４１４が、ファイナル・バッファ４１２からの合成済みグラフィカル画像データのコピーを、デバイス・メモリ中の別の場所に格納することになり、その後、グラフィックス・ドライバ４１６がそのファイナル・バッファ４１２をユーザに提示することになる。別の実施形態において、ビデオ・キャプチャ・コンポーネント４１４は、フレームが完成する前に一時バッファ４１０またはファイナル・バッファ４１２のコピーを格納し、すなわち、ユーザ・インタフェース・エレメントなど特定のグラフィカル・エレメントが生成される前に、グラフィカル画像データを取り込むように動作可能である。
【００９８】
完成した画像フレームを受信するのに応じ、グラフィックス・ドライバ４１６は、グラフィックス・ハードウェア４１８および／またはディスプレイ４２０を制御し、完成した画像フレームをユーザに提示する。
【００９９】
一方、ビデオ・キャプチャ・コンポーネント４１４は、一時バッファ４１０またはファイナル・バッファ４１２のいずれかに書き込まれたグラフィカル画像データを取り込み、そのグラフィカル画像データをメモリ２０２中に、またはデバイス２００中の別の内部ストレージの中にローカルに格納するよう動作可能であるか、あるいは、例えば、ビデオ・エンコーダ・ソフトウェアまたはハードウェアを使ってグラフィカル画像データのフレーム群をビデオ・ファイルの中に圧縮するため、グラフィカル画像データをさらに処理するよう動作可能である。これにより、グラフィカル画像データは、例えばソフトウェア・アプリケーション４０２の動作のビデオ記録を提供するため、例えば後の時点での画像フレーム群の再生に使われてもよい。
【０１００】
ビデオ・キャプチャ・コンポーネント４１４は、ファイナル・バッファ４１２のコンテンツを、デバイス２００から空間的に遠隔のデータ・ストアにアップロードおよび／またはストリームするよう動作できるという利点があってもよい。こうしたコンテンツは、例えば、ゲームプレイの経験を共有する目的のため、データ・ストアから一つ以上の他のユーザのデバイスにストリームされてもよいが、この目的に限らない。
【０１０１】
さらにＳＤＫは、ラッパー４０４およびビデオ・キャプチャ・コンポーネント４１４を含め、ソフトウェア・アプリケーション４０２の中に統合されてその一体部分となるように構成されてもよい。ラッパー４０４およびビデオ・キャプチャ・コンポーネント４１４は、例えば、ソフトウェア・アプリケーション４０２がオブジェクト・コード・ライブラリと一緒にリンクされている場合、ソフトウェア・アプリケーション４０２のアプリケーション・バイナリ・インターフェース（ＡＢＩ）に含まれてもよい。こうしたリンク付けは、例えば、実行可能ファイルが生成される場合、またはソフトウェア・アプリケーション４０２がランタイムで使われる場合は常に、有利に行われる。結果として、ラッパー４０４およびビデオ・キャプチャ・コンポーネント４１４は、例えばソフトウェア・ディベロッパに実装されるような、透過的な仕方でソフトウェア・アプリケーション４０２の一部となってもよい。
【０１０２】
さらに、ソフトウェア・アプリケーション４０２は、ＳＤＫによって提供されるグラフィックスキャプチャ機能をユーザが「有効」または「無効」にできるよう動作可能であってもよい。
【０１０３】
ソフトウェア・アプリケーション４０２、グラフィックス・エンジン４０６、および／またはグラフィックス・ライブラリ４０８は、ＳＤＫをアプリケーション・バイナリ・インターフェース（ＡＢＩ）にリンクすることを除き、修正が不要でもよい。
【０１０４】
次いで、ソフトウェア・アプリケーション４０２が、グラフィカル画像データを生成するためにグラフィックス・エンジン４０６を呼び出すとき、ソフトウェア・アプリケーション４０２は、代わりにラッパー４０４を透過的に呼び出す。それに続いて、ラッパー４０４は、ビデオ・キャプチャ・コンポーネント４１４が、生成されたグラフィカル画像データに対して、例えばこうしたデータを読み取り、コピーおよび修正するフルアクセスを有し、これにより、グラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８によって生成されたグラフィカル画像データの取り込みを容易にするように、グラフィックス・エンジン４０６および／またはグラフィックス・ライブラリ４０８を設定するため、関数コールが通り過ぎる前にそれらを修正する。
【０１０５】
ラッパー４０４の実行は、ラッパー４０４自体がグラフィカル画像データを生成するのではないので、測定可能なほどのパフォーマンス低下につながることはないという利点がある。ビデオ・キャプチャ・コンポーネント４１４によるグラフィカル画像データの取り込み、およびこうしたグラフィカル画像データのビデオ・ファイルへの格納または圧縮がある程度のパフォーマンス低下をもたらす可能性はあるが、これは、ソフトウェア・アプリケーション４０２の実行に起因するパフォーマンス低下と比較すると実質的に無視できる。
【０１０６】
図４は単なる例であって、添付の特許請求の範囲を不当に限定するものではない。当然ながら、グラフィックス装置に対する具体的指定は、該グラフィックス装置を、特定の数、種類、配置のモジュール、ルーティン、ソフトウェア製品、コンポーネントおよび／またはＡＰＩのグラフィックス装置に限定すると解釈されるべきではない。当業者は、本開示の実施形態の多くの変形、代替、および修正を認識していよう。
【０１０７】
例えば、ゲームプレイの間に生成されたグラフィカル画像データとともに、ビデオおよび／またはデジタル・オーディオ・データを取り込むために、グラフィックス装置と類似の仕方でビデオ装置がデバイス２００に実装されてもよい。グラフィカル画像データとともにデジタル・オーディオ・データから成るビデオ・ファイルは、次いで、遠隔のサーバに有利にアップロードされ、および／または他のユーザと共有される。
【０１０８】
図５は、本開示の第三実施形態による、デバイス２００に適したグラフィクス装置の概略図である。説明のために、グラフィックス装置は、デバイス２００のプロセッサ２０４で実行されるソフトウェア・アプリケーション５０２によって使用される。
【０１０９】
このグラフィックス装置は、グラフィックス・エンジン５０４と、ビデオキャプチャＡＰＩ５０６と、グラフィックス・ライブラリ５０８と、一つ以上の一時バッファ５１０と、ファイナル・バッファ５１２と、ビデオ・キャプチャ・コンポーネント５１４と、グラフィックス・ドライバ５１６と、グラフィックス・ハードウェア５１８と、ディスプレイ５２０とを含む。ビデオキャプチャＡＰＩ５０６と、ビデオ・キャプチャ・コンポーネント５１４とは、グラフィカル画像データを取り込むＳＤＫの一部を形成する。グラフィックス・ドライバ５１６と、グラフィックス・ハードウェア５１８と、ディスプレイ５２０とは、デバイス２００のグラフィカル表示機構の一部を形成する。
【０１１０】
本開示のある実施形態によれば、ＳＤＫは、デバイス２００のプロセッサ２０４で、ソフトウェア・アプリケーション５０２と同時に、またはその一部として実行するよう構成される。
【０１１１】
グラフィックス・エンジン５０４と、ビデオキャプチャＡＰＩ５０６、グラフィックス・ライブラリ５０８、一時バッファ５１０、ファイナル・バッファ５１２、ビデオ・キャプチャ・コンポーネント５１４は、デバイス２００のデータ・メモリ２０２中に格納されてもよく、図５に示されるようにＯＳ２１２に駐在したり、ＯＳ２１２で実行されたりしてもよい。
【０１１２】
例えば、グラフィックス・エンジン５０４は、ＯＧＲＥ、Ｉｒｒｌｉｃｈｔ  ３Ｄエンジン、Ｖｉｓｕａｌ３Ｄゲーム・エンジン、Ｔｒｕｅｖｉｓｉｏｎ３Ｄエンジン、Ｃｒｙｓｔａｌ  Ｓｐａｃｅエンジン、Ｕｎｉｔｙ３Ｄゲーム・エンジン、Ｕｎｒｅａｌ  Ｅｎｇｉｎｅ、Ｃｏｃｏｓ２Ｄエンジンなど、第三者からライセンス供与されたグラフィックス・エンジンでもよい。グラフィックス・ライブラリ５０８は、ＯｐｅｎＧＬ  ＡＰＩ、Ｄｉｒｅｃｔ４Ｄ  ＡＰＩ、ＥＡＧＬ  ＡＰＩ、ＥＧＬ  ＡＰＩなど、クロスプラットフォームのグラフィックス・ライブラリＡＰＩを介して実装されてもよい。
【０１１３】
さらに、グラフィックス・ドライバ５１６は、デバイス２００のカーネル中のソフトウェア機能であってもよい。グラフィックス・ドライバ５１６は、システム供給のドライバ・コンポーネント、ベンダー供給のドライバ・コンポーネント、またはこれらの組み合わせであってもよい。グラフィックス・ドライバ５１６は、グラフィックス・ハードウェア５１８を介してディスプレイ５２０にインターフェース接続される。グラフィックス・ハードウェア５１８は例えば、デバイス２００の集積グラフィックス・チップセット、または専用グラフィックス処理ユニット（ＧＰＵ）であってもよい。ディスプレイ５２０は例えば、デバイス２００のタッチ・スクリーン・ディスプレイなどのピクセル・ディスプレイであってもよい。
【０１１４】
ある例示的実施形態において、ソフトウェア・アプリケーション５０２は、ゲームプレイの間、デバイス２００のグラフィカル表示機構を介して見ることができるグラフィカル画像データの生成を必要とするゲーム・アプリケーションである。さらに、デバイス２００のユーザは、この例示的実施形態において、ゲームプレイの間に生成されたグラフィカル画像データを取り込むことを選ぶ。
【０１１５】
グラフィカル画像データを生成するために、ソフトウェア・アプリケーション５０２は、グラフィックス・エンジン５０４に対し一つ以上の関数コールを行う。グラフィックス・エンジン５０４は、ソフトウェア・アプリケーション５０２とグラフィックス装置との間のインターフェースとしての機能を果たす。
【０１１６】
グラフィックス・エンジン５０４は、少なくとも部分的にソフトウェア・アプリケーション５０２中に実装されてもよい。あるいは、グラフィックス・エンジン５０４は、全体がソフトウェア・アプリケーション５０２とは別のルーティンとして実装されてもよい。グラフィックス・エンジン５０４は、ソフトウェア・アプリケーション５０２の作成者によって生成されるか、もしくは第三者からライセンス供与されてもよい。
【０１１７】
ここで、当然ながら、ソフトウェア・アプリケーション５０２および／またはグラフィックス・エンジン５０４は、ビデオキャプチャＡＰＩ５０６と統合するために明示的に修正される。一つの例において、グラフィックス・エンジン５０４は、グラフィックス・エンジン５０４がオープンソース・グラフィックス・エンジンの場合、ソフトウェア・アプリケーション５０２の作成者によって修正されてもよい。別の例では、グラフィックス・エンジン５０４は、グラフィックス・エンジン５０４の作成者によって修正されてもよい。
【０１１８】
この実装において、グラフィックス・エンジン５０４は、ビデオキャプチャＡＰＩ５０６を呼び出すために明示的に修正され、該ＡＰＩは、グラフィックスキャプチャ機能を提供する。結果として、グラフィックス・エンジン５０４は、ソフトウェア・アプリケーション５０２から関数コールを受信するのに応じて、ビデオキャプチャを可能にするためビデオキャプチャＡＰＩ５０６に関数コールを行い、グラフィックス・ライブラリ５０８宛てに意図した特定の関数コールを、ビデオキャプチャＡＰＩ５０６に明示的に送信する。
【０１１９】
グラフィカル画像データを取り込むために、ビデオキャプチャＡＰＩ５０６は、関数コールがビデオキャプチャＡＰＩ５０６からグラフィックス・ライブラリ５０８に送信される前にこれらの関数コールを修正できて、ＳＤＫが、グラフィックス・エンジン５０４および／またはグラフィックス・ライブラリ５０８によって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できてもよい。
【０１２０】
さらにＳＤＫは、一時バッファ５１０および／またはファイナル・バッファ５１２から、グラフィックス・エンジン５０４および／またはグラフィックス・ライブラリ５０８によって生成されたグラフィカル画像データのコピーを作成するよう動作可能であってもよい。特定の関数コールがビデオキャプチャＡＰＩ５０６を通り過ぎるとき、ビデオキャプチャＡＰＩ５０６は、ビデオ・キャプチャ・コンポーネント５１４が一時バッファ５１０および／またはファイナル・バッファ５１２からグラフィカル画像データをコピーできるような方法で、グラフィックス・ライブラリ５０８を制御するため、特定の関数コールがグラフィックス・ライブラリ５０８に送信される前にその特定の関数コールを修正する。
【０１２１】
グラフィックス・エンジン５０４が単一のバッファのみを使用している例において、その一時バッファ５１０は、ファイナル・バッファ５１２としても使われ、関数コールに対しＳＤＫが行った、または行う修正によって、ビデオ・キャプチャ・コンポーネントが、当該バッファ中のグラフィックス・ライブラリ５０８によって生成または修正されたデータを読み取れてもよい。グラフィックス・エンジン５０４が当該バッファ中の画像フレームの描画を完了したとき、該グラフィックス・エンジン５０４はビデオキャプチャＡＰＩ５０６を呼び出し、次いで、該ＡＰＩが、完成した画像フレームをユーザに提示するため、グラフィックス・ライブラリ５０８を呼び出す。それに応じて、ビデオキャプチャＡＰＩ５０６は、ビデオ・キャプチャ・コンポーネント５１４が、デバイス・メモリの他の場所にファイナル・バッファ５１２のコピーを格納したことを確かにし、その後、グラフィックス・ライブラリ５０８は、ユーザにファイナル・バッファ５１２を提示するために、グラフィックス・ドライバ５１６を呼び出す。別の実施形態において、ビデオ・キャプチャ・コンポーネント５１４は、画像フレームが完全に描画される前に一時バッファ５１０またはファイナル・バッファ５１２のコピーを格納し、すなわち、ユーザ・インタフェース・エレメントなど特定のグラフィカル・エレメントが当該対応バッファ中に生成される前に、グラフィカル画像データを取り込むことができる。
【０１２２】
グラフィックス・エンジン５０４が、複数のバッファ、すなわち複数の一時バッファ５１０を使用する別の例において、グラフィックス・ライブラリ５０８は、グラフィカル画像データをそれら一時バッファ５１０に書き込む。グラフィックス・エンジン５０４が、一時バッファ５１０中の画像フレームの描画を完了したとき、グラフィックス・エンジン５０４はビデオキャプチャＡＰＩ５０６を呼び出し、次いで、該ＡＰＩが、完成した画像フレームをユーザに提示するため、グラフィックス・ライブラリ５０８を呼び出す。それに応じて、ビデオキャプチャＡＰＩ５０６は、グラフィックス・ライブラリ５０８が、一時バッファ５１０からグラフィカル画像データをファイナル・バッファ５１２の中に合成したことを確かにし、このデータはビデオ・キャプチャ・コンポーネント５１４による読み取りが可能である。合成が終わったならば、ビデオ・キャプチャ・コンポーネント５１４が、ファイナル・バッファ５１２からの合成済みグラフィカル画像データのコピーを、デバイス・メモリ中の別の場所に格納することになり、その後、グラフィックス・ドライバ５１６がそのファイナル・バッファ５１２をユーザに提示することになる。別の実施形態において、ビデオ・キャプチャ・コンポーネント５１４は、フレームが完成する前に一時バッファ５１０またはファイナル・バッファ５１２のコピーを格納する、すなわち、ユーザ・インタフェース・エレメントなど特定のグラフィカル・エレメントが生成される前に、グラフィカル画像データを取り込むように動作可能である。
【０１２３】
完成した画像フレームを受信するのに応じ、グラフィックス・ドライバ５１６は、グラフィックス・ハードウェア５１８および／またはディスプレイ５２０を制御し、完成した画像フレームをユーザに提示する。
【０１２４】
一方、ビデオ・キャプチャ・コンポーネント５１４は、一時バッファ５１０またはファイナル・バッファ５１２のいずれかに書き込まれたグラフィカル画像データを取り込み、そのグラフィカル画像データをメモリ２０２中に、またはデバイス２００中の別の内部ストレージの中にローカルに格納するよう作動可能であるか、あるいは、例えば、ビデオ・エンコーダ・ソフトウェアまたはハードウェアを使ってグラフィカル画像データのフレーム群をビデオ・ファイルの中に圧縮するため、グラフィカル画像データをさらに処理するよう動作可能である。これにより、グラフィカル画像データは、例えばソフトウェア・アプリケーション５０２の動作のビデオ記録を提供するため、例えば後の時点での画像フレーム群の再生に使われてもよい。
【０１２５】
ビデオ・キャプチャ・コンポーネント５１４は、ファイナル・バッファ５１２のコンテンツを、デバイス２００から空間的に遠隔のデータ・ストアにアップロードおよび／またはストリームするよう動作できるという利点があってもよい。こうしたコンテンツは例えば、ゲームプレイの経験を共有する目的のため、データ・ストアから一つ以上の他のユーザのデバイスにストリームされてもよいが、この目的に限らない。
【０１２６】
さらにＳＤＫは、ビデオキャプチャＡＰＩ５０６およびビデオ・キャプチャ・コンポーネント５１４を含め、ソフトウェア・アプリケーション５０２の中に統合されてその一体部分となるように構成されてもよい。ビデオキャプチャＡＰＩ５０６およびビデオ・キャプチャ・コンポーネント５１４は、例えば、ソフトウェア・アプリケーション５０２がオブジェクト・コード・ライブラリと一緒にリンクされている場合、ソフトウェア・アプリケーション５０２のアプリケーション・バイナリ・インターフェース（ＡＢＩ）に含まれてもよい。こうしたリンク付けは、例えば、実行可能ファイルが生成される場合、またはソフトウェア・アプリケーション５０２がランタイムで使われる場合は常に、有利に行われる。その結果、ビデオキャプチャＡＰＩ５０６およびビデオ・キャプチャ・コンポーネント５１４は、ソフトウェア・アプリケーション５０２の一部となってもよい。
【０１２７】
さらにソフトウェア・アプリケーション５０２は、ＳＤＫによって提供されるグラフィックスキャプチャ機能をユーザが「有効」または「無効」にできるよう動作可能であってもよい。
【０１２８】
次いで、ソフトウェア・アプリケーション５０２が、グラフィカル画像データを生成するためにグラフィックス・エンジン５０４を呼び出すとき、グラフィックス・エンジン５０４は、ビデオキャプチャＡＰＩ５０６を明示的に呼び出す。それに続いて、ビデオキャプチャＡＰＩ５０６は、ビデオ・キャプチャ・コンポーネント５１４が、生成されたグラフィカル画像データに対して、例えばこうしたデータを読み取りコピーおよび修正するフルアクセスを有し、これにより、グラフィックス・エンジン５０４および／またはグラフィックス・ライブラリ５０８によって生成されたグラフィカル画像データの取り込みを容易にするように、グラフィックス・ライブラリ５０８を設定するため、関数コールが通り過ぎる前にそれらを修正する。
【０１２９】
ビデオキャプチャＡＰＩ５０６の実行は、ビデオキャプチャＡＰＩ５０６自体がグラフィカル画像データを生成するのではないので、測定可能なほどのパフォーマンス低下につながることはないという利点がある。ビデオ・キャプチャ・コンポーネント５１４によるグラフィカル画像データの取り込み、およびそのビデオ・フォーマットへの格納または圧縮がある程度のパフォーマンス低下をもたらす可能性はあるが、これは、ソフトウェア・アプリケーション５０２の実行に起因するパフォーマンス低下と比較すると実質的に無視できる。
【０１３０】
図５は単なる例であって、添付の特許請求の範囲を不当に限定するものではない。当然ながら、グラフィックス装置に対する具体的指定は、該グラフィックス装置を、特定の数、種類、配置のモジュール、ルーティン、ソフトウェア製品、コンポーネントおよび／またはＡＰＩのグラフィックス装置に限定すると解釈されるべきではない。当業者は、本開示の実施形態の多くの変形、代替、および修正を認識していよう。
【０１３１】
例えば、ゲームプレイの間に生成されたグラフィカル画像データとともに、ビデオおよび／またはデジタル・オーディオ・データを取り込むために、グラフィックス装置と類似の仕方でビデオ装置がデバイス２００に実装されてもよい。グラフィカル画像データとともにデジタル・オーディオ・データから成るビデオ・ファイルは、次いで、遠隔のサーバに有利にアップロードされ、および／または他のユーザと共有される。
【０１３２】
図６は、本開示のある実施形態による、グラフィカル画像データを取り込むＳＤＫを使用する方法のステップの図である。本方法は、論理流れ図のステップの集合として示され、該流れ図は、ハードウェア、ソフトウェア、またはその組み合せ中に実装可能なステップのシーケンスを表している。
【０１３３】
前述したように、ＳＤＫは、デバイス２００などのデバイス中で用いられるように構成されている。このデバイスは、デバイスのグラフィカル表示機構を介して見ることができるグラフィカル画像データを生成する、一つ以上のソフトウェア・アプリケーションを実行するよう動作可能なコンピューティング・ハードウェアを含む。
【０１３４】
ステップ６０２で、ＳＤＫは、デバイスのコンピューティング・ハードウェアで、ソフトウェア・アプリケーションと同時に実行されるように構成される。ステップ６０２によれば、ＳＤＫは例えば、ソフトウェア・アプリケーションが、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対し一つ以上の関数コールを行ったときに起動されてもよい。
【０１３５】
ステップ６０４で、ＳＤＫは、ソフトウェア・アプリケーションが行うグラフィックス・エンジンおよび／またはグラフィックス・ライブラリへの関数コールをインターセプトするよう動作する。これに換えてまたはこれに加えて、図５を参照して説明した実施形態においては、関数コールはビデオキャプチャＡＰＩ５０６に明示的に送信される。
【０１３６】
ステップ６０４によれば、ＳＤＫは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対する実質上全ての関数コールがＳＤＫを通過するように、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリをラップするように動作してもよい。
【０１３７】
次にステップ６０６で、前述のようにＳＤＫは、関数コールがグラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって受信される前に、これら関数コールを修正するよう動作する。これによって、ＳＤＫが、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できる。あるいは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、任意の方法で関数コールを修正できてもよい。
【０１３８】
ステップ６０６によれば、ＳＤＫは、ビデオ取り込みコンポーネント３１４、４１４、５１４が、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリによって生成されたグラフィカル画像データにアクセス、読み取り、コピー、および／または修正できるようにグラフィックス・エンジンおよび／またはグラフィックス・ライブラリを設定してもよい。あるいは、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するため、任意の方法で関数コールを修正できてもよい。
【０１３９】
引き続き、ステップ６０８で、前述したように、ＳＤＫは、一時バッファ３１０、４１０、５１０中にまたはファイナル・バッファ３１２、４１２、５１２中に生成または修正されたグラフィカル画像データを取り込むよう動作する。ビデオ・キャプチャ・コンポーネントは、ビデオ・キャプチャ・コンポーネント３１４、ビデオ・キャプチャ・コンポーネント４１４、またはビデオ・キャプチャ・コンポーネント５１４の実装と同様な仕方で実装されてもよい。
【０１４０】
ステップ６０８で取り込まれたグラフィカル画像データは、デバイスの内部データ・メモリ中にローカルに格納することができる。
【０１４１】
さらに、本方法は、ＳＤＫが、ビデオ・キャプチャ・バッファのコンテンツを、デバイスから空間的に遠隔のデータ・ストアにアップロードおよび／またはストリームするよう動作するさらなるステップを含んでもよい。
【０１４２】
一方、ステップ６１０で、ファイナル・バッファ中の画像フレーム群が、デバイスのグラフィカル表示機構を介しユーザに提示される。
【０１４３】
ステップ６０８およびステップ６１０は例えば、同時に実施されてもよい。
【０１４４】
さらに、本方法は、ＳＤＫがソフトウェア・アプリケーションの中に統合されてその一体部分となるように構成される、任意ステップを含み、これが本開示の実施形態の初期設定であることが望ましい。
【０１４５】
ステップ６０２〜６１０は、単なる例示であって、本特許請求の範囲から逸脱することなく、一つ以上のステップが追加された、一つ以上のステップが除去された、または一つ以上のステップが異なる順序で行われる、他の代替方法も提供することも可能である。
【０１４６】
本開示の諸実施形態は、持続性（非一時的）機械可読データ・ストレージ媒体に格納されたソフトウェア製品を提供し、このソフトウェア製品は、図６に関連させて説明した方法を実施するため、デバイス２００のコンピューティング・ハードウェアで実行が可能である。該ソフトウェア製品は、例えば、「Ａｐｐ  ｓｔｏｒｅ」などの、ソフトウェア・アプリケーション・ストアからデバイス２００にダウンロードが可能であってもよい。
【０１４７】
本開示の諸実施形態は、以下に限らないが、ユーザが、ゲームプレイなどのソフトウェア・アプリケーションを用いる間に生成されるグラフィカル画像データを、ユーザの携帯デバイスのパフォーマンスを実質的に低下させることなく取り込むことができるようにすることと、単にＳＤＫすなわち「リンキング・ライブラリ」をソフトウェア・アプリケーションのＡＢＩに含めることを除きソフトウェア・アプリケーションおよび／またはグラフィックス・エンジンを修正するいかなる必要もなしに、グラフィカル画像データを取り込む機能を容易にすることと、を含めて様々な用途に容易に使用できる。こうしたＳＤＫは、例えばユーザがグラフィカル画像データ取り込みを制御できるように、追加の機能を提供してもよく、こうした機能は、ユーザに供するためソフトウェア・アプリケーションの修正を必要としてもよい。さらに、前述のように、本開示の諸実施形態は、対応するオーディオ・コンテンツと組み合わされた画像および／またはビデオ・コンテンツの組み合わせの取り込みを可能にする。
【０１４８】
前述した本開示の実施形態は、添付の特許請求の範囲によって定義された本開示の範囲から逸脱することなく修正が可能である。本開示の記載および特許請求の範囲に用いられた「包含する（ｉｎｃｌｕｄｉｎｇ）」、「含む／備える（ｃｏｍｐｒｉｓｉｎｇ）」、「組み込む（ｉｎｃｏｒｐｏｒａｔｉｎｇ）」、「から成る（ｃｏｎｓｉｓｔｉｎｇ  ｏｆ）」、「有する（ｈａｖｅ）」、「である（ｉｓ）」などの表現は、非排他的な形で、すなわち、明示的に記載されていない事項、コンポーネント、またはエレメントの存在もあり得るとして、解釈されるものとする。また、単数形での記載は、複数にも関すると解釈すべきである。
【０１４９】
最後に、単なる例示として、例示的実施形態をいくつか載せておく。これらは本願の優先権の基礎となる米国特許出願の明細書に最初に記載された独立請求項に記載されたものに一致している。
１．グラフィカル画像データを取り込むソフトウェア開発キット（ＳＤＫ）であって、前記ソフトウェア開発キットは、デバイスのグラフィカル表示機構を介して見ることができるグラフィカル画像データを生成する、一つ以上のソフトウェア・アプリケーションを実行するよう動作可能なコンピューティング・ハードウェアを含む、前記デバイス中で用いられるよう構成され、
前記ソフトウェア開発キットは、前記一つ以上のソフトウェア・アプリケーションと同時に実行されるように構成され、
前記一つ以上のソフトウェア・アプリケーションは、前記グラフィカル画像データを生成するために、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対し、一つ以上の関数コールを行うよう動作可能であり、
前記ソフトウェア開発キットは、前記一つ以上の関数コールが前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって受信される前に、前記一つ以上の関数コールを修正するよう動作可能であって、前記ソフトウェア開発キットが、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成された前記グラフィカル画像データにアクセス、読み取り、コピー、および／または修正すること、ならびに／あるいは、前記グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、別途に任意の方法で前記関数コールを修正することを可能にする、
ソフトウェア開発キット。
２．グラフィカル画像データを取り込むソフトウェア開発キット（ＳＤＫ）を使用する方法であって、前記ソフトウェア開発キットは、デバイスのグラフィカル表示機構を介して見ることができるグラフィカル画像データを生成する、一つ以上のソフトウェア・アプリケーションを実行するよう動作可能なコンピューティング・ハードウェアを含む、前記デバイス中で用いられるよう構成され、
前記方法は、
（ａ）前記ソフトウェア開発キットが前記一つ以上のソフトウェア・アプリケーションと同時に実行するよう構成することと；
（ｂ）前記グラフィカル画像データを生成するため、グラフィックス・エンジンおよび／またはグラフィックス・ライブラリに対して一つ以上の関数コールを行うように、前記一つ以上のソフトウェア・アプリケーションを動作させることと；
（ｃ）前記一つ以上の関数コールが前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって受信される前に、前記一つ以上の関数コールを修正するように、前記ソフトウェア開発キットを動作させることであって、前記ソフトウェア開発キットが、前記グラフィックス・エンジンおよび／または前記グラフィックス・ライブラリによって生成された前記グラフィカル画像データにアクセス、読み取り、コピー、および／または修正すること、ならびに／あるいは、前記グラフィックス・エンジンおよび／またはグラフィックス・ライブラリの動作を制御するために、別途に任意の方法で前記関数コールを修正することを可能にする、前記動作させることと；
を含む、方法。
【図１】
2015069638.tif 000003
【図２】
2015069638.tif 000004
【図３】
2015069638.tif 000005
【図４】
2015069638.tif 000006
【図５】
2015069638.tif 000007
【図６】
2015069638.tif 000008
【外国語明細書】
2015069638000001.pdf