(57)【要約】【課題】ＶＲＡＭにマルチソースメディアをオーバーレイする方法、システム及びコンピュータプログラムを提供する。【解決手段】  プライマリビデオソースは、アプリケーションプログラムよってＶＲＡＭにレンダリングされ、セカンダリビデオソースは、該ＶＲＡＭ中のプライマリビデオソースと同じ位置にレンダリング及びブレンドされるため、追加のバッファが必要ない。これにより、システムバス、システムメモリ、及びＣＰＵの使用量を減らし、システムパフォーマンスを向上させ、エネルギー消費量を減らすことができる。【選択図】図９
2019195163.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置（ＣＰＵ）、システムランダムアクセスメモリ（ＳＲＡＭ）、及びビデオランダムアクセスメモリ（ＶＲＡＭ）が内蔵されたグラフィックプロセッサ（ＧＰＵ）を少なくとも備えるコンピュータに適用される、ビデオランダムアクセスメモリにおいてマルチソースメディアをオーバーレイする方法であって、
前記方法は、
前記コンピュータが第１プロセスを実行してビデオコンテンツを生成し、前記ビデオコンテンツは、前記第１プロセスによって生成された少なくとも１つのプライマリマルチメディアコンテンツアイテムを含むステップと、
前記ＧＰＵが前記第１プロセスによって生成された前記ビデオコンテンツの前記プライマリマルチメディアコンテンツアイテムをキャプチャし、キャプチャした前記プライマリマルチメディアコンテンツアイテムを前記ＶＲＡＭのＶＲＡＭ位置に直接記憶するステップと、
第２プロセスを実行して少なくとも１つのセカンダリマルチメディアコンテンツアイテムを生成し、前記第２プロセスは、前記ＶＲＡＭ位置において互換性のあるオーバーレイ面を作成し、前記互換性のあるオーバーレイ面は、少なくとも１つのセカンダリマルチメディアコンテンツアイテムを含むステップと、
前記ＧＰＵは、前記第２プロセスによって生成された前記互換性のあるオーバーレイ面を前記第１プロセスによって生成された前記ビデオコンテンツに直接混合し、混合後のビデオコンテンツを前記ＶＲＡＭのフレームバッファに記憶し、前記プライマリマルチメディアコンテンツアイテム及び前記セカンダリマルチメディアコンテンツアイテムをＳＲＡＭに送信する必要がなく、前記互換性のあるオーバーレイ面のビデオ記憶フォーマットは、前記フレームバッファに記憶される前記混合後のビデオコンテンツのビデオ記憶フォーマットと互換性があるステップと、
を含み、前記第２プロセスを実行して前記セカンダリマルチメディアコンテンツアイテムを生成するステップにおいて、前記第２プロセスは、制御入力を受信し、前記制御入力に基づいて前記第１プロセスにコードを注入する（injecting code）ことによって前記第１プロセスと通信し、前記第２プロセスは、受信した前記制御入力に基づいて前記ＶＲＡＭ位置に互換性のあるオーバーレイ面を作成する、方法。
【請求項２】
前記第１プロセスは、１つ以上のレンダリング動作を実行し、前記第２プロセスは、各前記レンダリング動作の終了時に前記第１プロセスをフック（ｈｏｏｋｓ）し、前記第１プロセスに前記第２プロセスの注入コードを呼び出させる請求項１に記載の方法。
【請求項３】
前記第１プロセスは、ゲームアプリケーションプログラムよって起動されるゲームプロセスであり、
前記第２プロセスは、クラウドゲームプロセスであり、
前記クラウドゲームプロセスは、プロセスの介入によって前記ゲームアプリケーションプログラム内で実行され、
前記クラウドゲームプロセスは、ゲームアプリケーションプログラムを変更することなく、スクリーンキーボード、仮想マウス、ダイアログ情報、仮想キー、及び１つ以上の広告のうちの１つ以上の機能を提供することができる請求項２に記載の方法。
【請求項４】
前記制御入力は、前記コンピュータの遠隔地に位置するクライアント装置によって生成され、
前記クライアント装置は、ネットワークを介して前記制御入力を前記コンピュータに送信し、
前記コンピュータは、前記フレームバッファに記憶されている前記混合後のビデオコンテンツをキャプチャしてエンコードし、その後、前記エンコード後の前記混合後のビデオコンテンツを前記ネットワークを介して前記クライアント装置に送信し、
前記クライアント装置は、前記エンコード後の前記混合後のビデオコンテンツを受信してデコードした後に再生する請求項２に記載の方法。
【請求項５】
前記混合後のビデオコンテンツのエンコード動作は、前記ＧＰＵによって前記ＶＲＡＭにおいて実行され、前記混合後のビデオコンテンツをＳＲＡＭに送信する必要がなく、
前記混合後のビデオコンテンツは、ユーザインタフェース、追加のコンテンツ、クラウドゲームの特定コンテンツ、広告、及び１つ以上のタイプに適用するように設計された装置制御インタフェースのうちの少なくとも１つを含む請求項２に記載の方法。
【請求項６】
中央処理装置（ＣＰＵ）、システムランダムアクセスメモリ（ＳＲＡＭ）、及びビデオランダムアクセスメモリ（ＶＲＡＭ）が内蔵されたグラフィックプロセッサ（ＧＰＵ）を少なくとも備えるコンピュータを含む、ビデオランダムアクセスメモリにおいてマルチソースメディアをオーバーレイするシステムであって、
前記コンピュータが第１プロセスを実行してビデオコンテンツを生成し、前記ビデオコンテンツは、前記第１プロセスによって生成された少なくとも１つのプライマリマルチメディアコンテンツアイテムを含み、
前記コンピュータは、第２プロセスを実行し、少なくとも１つのセカンダリマルチメディアコンテンツアイテムを生成し、
前記ＧＰＵは、以下の動作を実行するように構成され、
前記第１プロセスによって生成された前記ビデオコンテンツの前記プライマリマルチメディアコンテンツアイテムをキャプチャし、キャプチャした前記プライマリマルチメディアコンテンツアイテムを前記ＶＲＡＭのＶＲＡＭ位置に直接記憶し、
前記第２プロセスにより前記ＶＲＡＭ位置において互換性のあるオーバーレイ面を作成し、前記互換性のあるオーバーレイ面は、少なくとも１つのセカンダリマルチメディアコンテンツアイテムを含み、
前記ＧＰＵは、前記第２プロセスによって生成された前記互換性のあるオーバーレイ面を前記第１プロセスによって生成された前記ビデオコンテンツに直接混合し、混合後のビデオコンテンツを前記ＶＲＡＭのフレームバッファに記憶し、前記プライマリマルチメディアコンテンツアイテム及び前記セカンダリマルチメディアコンテンツアイテムをＳＲＡＭに送信する必要がなく、前記互換性のあるオーバーレイ面のビデオ記憶フォーマットは、前記フレームバッファに記憶される前記混合後のビデオコンテンツのビデオ記憶フォーマットと互換性があり、
前記第２プロセスを実行して前記セカンダリマルチメディアコンテンツアイテムを生成するステップにおいて、前記第２プロセスは、制御入力を受信し、前記制御入力に基づいて前記第１プロセスにコードを注入する（injecting code）ことによって前記第１プロセスと通信し、前記第２プロセスは、受信した前記制御入力に基づいて前記ＶＲＡＭ位置に互換性のあるオーバーレイ面を作成する、システム。
【請求項７】
前記第１プロセスは、１つ以上のレンダリング動作を実行し、前記第２プロセスは、各前記レンダリング動作の終了時に前記第１プロセスをフック（hooks）し、前記第１プロセスに前記第２プロセスの注入コードを呼び出させる請求項６に記載のシステム。
【請求項８】
前記第１プロセスは、ゲームアプリケーションプログラムよって起動されるゲームプロセスであり、
前記第２プロセスは、クラウドゲームプロセスであり、
前記クラウドゲームプロセスは、プロセスの介入によって前記ゲームアプリケーションプログラム内で実行され、
前記クラウドゲームプロセスは、ゲームアプリケーションプログラムを変更することなく、スクリーンキーボード、仮想マウス、ダイアログ情報、仮想キー、及び１つ以上の広告のうちの１つ以上の機能を提供することができる請求項７に記載のシステム。
【請求項９】
前記制御入力は、前記コンピュータの遠隔地に位置するクライアント装置によって生成され、
前記クライアント装置は、ネットワークを介して前記制御入力を前記コンピュータに送信し、
前記コンピュータは、前記フレームバッファに記憶されている前記混合後のビデオコンテンツをキャプチャしてエンコードし、その後、前記エンコード後の前記混合後のビデオコンテンツを前記ネットワークを介して前記クライアント装置に送信し、
前記クライアント装置は、前記エンコード後の前記混合後のビデオコンテンツを受信してデコードした後に再生する請求項７に記載のシステム。
【請求項１０】
前記混合後のビデオコンテンツのエンコード動作は、前記ＧＰＵによって前記ＶＲＡＭにおいて実行され、前記混合後のビデオコンテンツをＳＲＡＭに送信する必要がなく、
前記混合後のビデオコンテンツは、ユーザインタフェース、追加のコンテンツ、クラウドゲームの特定コンテンツ、広告、及び１つ以上のタイプに適用するように設計された装置制御インタフェースのうちの少なくとも１つを含む請求項７に記載のシステム。
【請求項１１】
コンピュータによって実行可能な複数のコンピュータ命令を含む、非一時的コンピュータ可読媒体に記憶されたコンピュータプログラム製品であって、
前記コンピュータは、中央処理装置（ＣＰＵ）、システムランダムアクセスメモリ（ＳＲＡＭ）、及びビデオランダムアクセスメモリ（ＶＲＡＭ）が内蔵されたグラフィックプロセッサ（ＧＰＵ）を少なくとも備え、前記複数のコンピュータ命令は、前記コンピュータによって実行され、
前記コンピュータが第１プロセスを実行してビデオコンテンツを生成し、前記ビデオコンテンツは、前記第１プロセスによって生成された少なくとも１つのプライマリマルチメディアコンテンツアイテムを含むステップと、
前記ＧＰＵが前記第１プロセスによって生成された前記ビデオコンテンツの前記プライマリマルチメディアコンテンツアイテムをキャプチャし、キャプチャした前記プライマリマルチメディアコンテンツアイテムを前記ＶＲＡＭのＶＲＡＭ位置に直接記憶するステップと、
第２プロセスを実行して少なくとも１つのセカンダリマルチメディアコンテンツアイテムを生成し、前記第２プロセスは、前記ＶＲＡＭ位置において互換性のあるオーバーレイ面を作成し、前記互換性のあるオーバーレイ面は、少なくとも１つのセカンダリマルチメディアコンテンツアイテムを含むステップと、
前記ＧＰＵは、前記第２プロセスによって生成された前記互換性のあるオーバーレイ面を前記第１プロセスによって生成された前記ビデオコンテンツに直接混合し、混合後のビデオコンテンツを前記ＶＲＡＭのフレームバッファに記憶し、前記プライマリマルチメディアコンテンツアイテム及び前記セカンダリマルチメディアコンテンツアイテムをＳＲＡＭに送信する必要がなく、前記互換性のあるオーバーレイ面のビデオ記憶フォーマットは、前記フレームバッファに記憶される前記混合後のビデオコンテンツのビデオ記憶フォーマットと互換性があるステップと、
を実行し、前記第２プロセスを実行して前記セカンダリマルチメディアコンテンツアイテムを生成するステップにおいて、前記第２プロセスは、制御入力を受信し、前記制御入力に基づいて前記第１プロセスにコードを注入する（injecting code）ことによって前記第１プロセスと通信し、前記第２プロセスは、受信した前記制御入力に基づいて前記ＶＲＡＭ位置に互換性のあるオーバーレイ面を作成する、コンピュータプログラム製品。
【請求項１２】
前記第１プロセスは、１つ以上のレンダリング動作を実行し、前記第２プロセスは、各前記レンダリング動作の終了時に前記第１プロセスをフック（hooks）し、前記第１プロセスに前記第２プロセスの注入コードを呼び出させる請求項１１に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の異なるソースのマルチメディアオブジェクトをビデオランダムアクセスメモリ（以下、ＶＲＡＭと記載）においてオーバーレイするシステム及び方法に関する。
【背景技術】
【０００２】
クラウドコンテンツサービスなどのプラットフォームにおいて、複数のマルチメディアオブジェクトを同時にターゲットデバイスに送信する必要があることがよくある。
【０００３】
例えば、クラウドゲームプラットフォームは、広告を含むゲームシーンストリーミング（Streaming）を消費者の装置に送る必要がある。該ゲームシーン及び広告は、異なるビデオソースから取得される可能性があるため、ゲームシーンに広告をオーバーレイするか、ゲームシーンを広告の下に配置することが望まれる。
【０００４】
従来のオーバーレイ／アンダーレイ（overlay/underlay）プロセスは、次のように動作することができる。ゲームなどの主ビデオソースから主画像をキャプチャし、それをシステムＲＡＭ（System  ＲＡＭ、以下、ＳＲＡＭと記載する）のフレームバッファ（Frame Buffer）にコピーする。次に、オーバーレイ／アンダーレイ（セカンダリ）ビデオソース、例えば、広告からオーバーレイ／アンダーレイ（セカンダリ）画像をキャプチャし、それをフレームバッファのプライマリ画像にオーバーレイ／アンダーレイする。
最後に、フレームバッファの新しい画像をターゲットビデオにエンコード（Encode）する。キャプチャ、コピー、及びブレンド動作は、システムの大量の別途の動作が必要である。システムバス（system bus）、システムメモリ、及びＣＰＵリソースは、何れも影響を受ける。高同時ユーザ（ConCurrent User，ＣＣＵ）のシステムでは、これら別途の動作がサーバの低パフォーマンス及び抗電力消費を引き起こす可能性がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１８−５２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、より効率的なオーバーレイ／アンダーレイプロセスを提供する新たな改善されたシステム及び方法が必要とされている。
【課題を解決するための手段】
【０００７】
本発明のいくつかの実施例は、アプリケーションプログラムによって生成されたビデオソース上にマルチメディアコンテンツを有効にオーバーレイすることができるシステム及び方法を提供する。  
【０００８】
本発明のいくつかの実施例は、また、このビデオソースの下でマルチメディアコンテンツを有効にアンダーレイするか、又はマルチメディアコンテンツをビデオソースに混合するシステム及び方法を提供する。
【０００９】
本発明の実施例は、マルチメディアコンテンツの処理システム及び方法を提供する。
ＶＲＡＭ内でオーバーレイ／アンダーレイを行うことができるため、システムバス、システムメモリ、及びＣＰＵの使用量を減らすことができる。
【００１０】
本方法のシステム及び方法の実施例において、該プライマリビデオソースは、アプリケーションプログラムよってＶＲＡＭにレンダリング（render）され、且つビデオソースのオーバーレイ／アンダーレイは、ＶＲＡＭ内のプライマリビデオソースの特定の時間と位置にレンダリングされ、混合（Blend）される。
【００１１】
該混合は、ＶＲＡＭ内の該プライマリビデオソースと同じ位置に実行されるので、別途のバッファを必要としない。これは、システムバス、システムメモリ及びＣＰＵの使用量を減らすことで、システムパフォーマンスを改善し、エネルギー消費量を減らすことができる。
【００１２】
該オーバーレイ／アンダーレイの結果は、ビデオバッファ又はフレームバッファに送られ、エンコードされてシステムランダムアクセスメモリに送られるか、ディスプレイ装置に直接表示されるか、又は同じＶＲＡＭ位置に送り返され、反復（iterative）オーバーレイプロセスの一部分とされる。
【発明の効果】
【００１３】
本発明が提供するＶＲＡＭにマルチソースメディアをオーバーレイする方法、システム及びコンピュータプログラムは、プライマリビデオソースが、アプリケーションプログラムよってＶＲＡＭにレンダリングされ、セカンダリビデオソースは、該ＶＲＡＭ中のプライマリビデオソースと同じ位置にレンダリング及びブレンドされるため、追加のバッファが必要ない。これにより、システムバス、システムメモリ、及びＣＰＵの使用量を減らし、システムパフォーマンスを向上させ、エネルギー消費量を減らすことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明のインタラクティブ  マルチソース  マルチメディア  アプリケーションプログラムの分散（distributed）クライアントサーバコンピュータシステム１０００の実施例のブロック図である。
【図２】グラフィック処理ユニット（ＧＰＵ）及びビデオランダムアクセスメモリ（ＶＲＡＭ）を含む、本発明のビデオ処理システムを実施させることができる一実施例のシステム構造図である。
【図３】本発明のマルチメディアコンテンツをプライマリビデオソース上でオーバーレイさせることができるシステムの一実施例のブロック図である。
【図４】本発明のマルチメディアコンテンツをプライマリビデオソース上でオーバーレイさせることができる方法の一実施例のフロー図である。
【図５】本発明のクラウドゲームシステム及び方法の実施例の説明図である。
【図６】本発明の非ＶＲＡＭ（ｎｏｎ−ＶＲＡＭ）方法でビデオ及びオーディオコンテンツをエンコードする実施例の説明図である。
【図７】本発明のＶＲＡＭ方法でビデオ及びオーディオコンテンツをエンコードする実施例の説明図である。
【図８】本発明のＳＲＡＭ内でインタラクティブコンテンツをオーバーレイするシステム及び方法の実施例の説明図である。
【図９】本発明ＶＲＡＭ内でインタラクティブコンテンツをオーバーレイするシステム及び方法の実施例の説明図である。
【図１０】本発明のＶＲＡＭ内でマルチソースメディアをオーバーレイするシステムの実施例のブロック図である。
【図１１】本発明のクライアント装置で混合後のビデオコンテンツの画像を表示する実施例の説明図である。
【発明を実施するための形態】
【００１５】
本発明の以下の実施例は、追加のバッファを必要とせずに、マルチメディアコンテンツをアプリケーションプログラムよって発声される１つのビデオソースにオーバーレイ／アンダーレイすることができるシステム及び方法を提供する。
【００１６】
図１は、本発明のインタラクティブ  マルチソース  マルチメディア  アプリケーションプログラムを提供することができる分散（distributed）クライアントサーバコンピュータシステム１０００の一実施例のブロック図である。コンピュータシステム１０００は、コンピュータプログラム製品１３１によって構成された１台以上のサーバコンピュータ（ServerComputer）１０１と、１台以上のクライアント装置（ClientDevice）１０３とを含む。コンピュータプログラム製品１３１は、一時的（transitory）又は非一時的（non-transitory）コンピュータ可読媒体に提供することができるが、特定の一実施例において、それは非一時的コンピュータ可読媒体、例えば、永続的（不揮発性non-volatile）メモリユニット、揮発性メモリ（例えば、ランダムアクセスメモリ）、又はその他の各種公知の非一時的コンピュータ可読媒体に提供される。
【００１７】
クライアント装置１０３は、ＣＰＵ（Central Processing Unit）１２０、メモリ１２２及びメモリユニット１２１を含む。クライアント装置１０３は、更に、入出力（Ｉ／Ｏ）サブシステム（図示せず）（例えば、ディスプレイ又はタッチスクリーン、キーボード、方向キー（ｄ−ｐａｄ）、トラックボール、タッチパッド、コントローラロッド、マイクロフォン、マウス、及び／又はその他のユーザインタフェース装置ならびに関連する制御回路及び／又はソフトウェアを含む）。クライアント装置１０３は、メディアコンテンツを提供することができる任意の種類の電子装置を含むことができる。たとえば、デスクトップコンピュータ、及びスマートフォン、マルチメディアプレーヤー、電子書籍リーダー（e-reader）、タッチタブレット、ノートブック（notebook）、ラップトップＰＣ（laptop PC）、スマートテレビ、スマートウォッチ、ヘッドマウントディスプレイなどのポータブル電子機器及びその他の通信機器を含むことができる
【００１８】
サーバコンピュータ１０１は、ＣＰＵ１１０と、ストレージユニット１１１と、メモリ１１２とを含む（図示しないＩ／Ｏサブシステムを更に含む）。サーバコンピュータ１０１は、ネットワーク１０２（例えば、インターネット）を介してその他のクライアントコンピュータ（例えば、クライアント装置１０３）と通信するようにコンピュータプログラム製品１３１を管理することができる任意のコンピュータ装置とすることができる。サーバコンピュータ１０１は、インターネット（Internet）を介して１台以上のクライアントコンピュータと通信し、インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）又はＨＴＴＰＳなどの通信プロトコル、インスタントメッセージングプロトコル、又はその他のプロトコルを利用できる。
【００１９】
メモリ１１２、１２２は、任意の公知のコンピュータメモリ装置を含むことができる。ストレージユニット１１１、１２１は、任意の公知のコンピュータストレージ装置を含むことができる。
【００２０】
本明細書では提示していないが、メモリ１１２、１２２及び／又はストレージユニット１１１、１２１は、任意の取り外し可能又は携帯可能なメモリ（例えば、フラッシュメモリカード又は外付けハードディスク）など、サーバコンピュータ１０１及びクライアント装置１０３によって使用され得る任意のデータストレージ装置も含むことができ、上記に制限するものではない。
【００２１】
クライアント装置１０３及びサーバコンピュータ１０１は、ネットワーク１０２を介して接続及び通信する。ネットワーク１０２は、有線又は無線接続を含み、広域ネットワーク（ＷＡＮ）及びセルラーネットワーク（cellular network）又はその他の各装置間で相互に通信させることができるコンピュータネットワークを含む。
【００２２】
本実施例において、コンピュータプログラム製品１３１は、実際には、それぞれサーバコンピュータ１０１及びクライアント装置１０３によって実行可能なコンピュータプログラム製品又はコンピュータプログラム製品の一部を表している。
【００２３】
図２は、本発明のビデオ処理システム２０００を実施させることができる一実施例のシステム構造図である。ビデオ処理用システム２０００の実施例は、ビデオ処理用に最適化されたシステム素子を含み、特にＧＰＵ２０３（GraphicsProcessingUnit；ＧＰＵ）及びビデオランダムアクセスメモリ２０４（Video Random Access Memory；以下ＶＲＡＭと称する）を含む。
【００２４】
一実施例において、ビデオ処理システム２０００は、ＣＰＵ２１７及びシステムランダムアクセスメモリ（System  ＲＡＭ、以下、ＳＲＡＭと称する）２０７など、ビデオ処理に特に最適化されていない従来のコンピュータ構成要素を更に含む。  
【００２５】
一実施例において、ＶＲＡＭ２０４は、フレームバッファ（Frame Buffer）２０６及び／又はバックバッファ（Back Buffer）２１６などの１つ以上のバッファを含む。通常、フレームバッファ２０６は、メモリ内においてビデオデータのフレーム全体を記憶するのに十分な大きさの領域を有する。フレームバッファは、ＳＲＡＭ２０７などのその他のメモリデバイスに設定することもできる。
一実施例において、バックバッファ２１６などの追加のバッファが、ＶＲＡＭ２０４内において適切なメモリ領域を設定することによって提供され得る。一実施例において、１つ以上のバッファ２１６は、ビデオ再生中のちらつきを軽減するために、ダブルバッファリング機能をサポートするために１つ以上のバックバッファ２１６が提供されることができる。一実施例において、バックバッファ２１６は、レンダリング（rendering）及び／又はブレンディング（blending）動作の結果を記憶させることができ、これについては以下で更に説明する。
【００２６】
ビデオ処理システム２０００は、ＧＰＵ２０３、ＶＲＡＭ２０４、ＣＰＵ２１７及びＳＲＡＭ２０７などの様々なハードウェアを直接又は間接に接続するためのフロントシステムバス（Front System Bus）２１２などの１つ以上の相互接続機構又はバスを更に含むことができる。
【００２７】
図３は、本発明のマルチメディアコンテンツをプライマリビデオソースにおいてオーバーレイさせることができるシステム３０００の一実施例のブロック図である。
【００２８】
システム３０００の実施例において、ＧＰＵ２０３は、フレームバッファ２０６を更に含むＶＲＡＭ２０４を含む。通常、フレームバッファ２０６は、メモリ内においてビデオデータのフレーム全体を記憶するのに十分な大きさの領域を有する。ＶＲＡＭ２０４は、２つ以上のフレームバッファ２０６を含み得る。フレームバッファは、ＳＲＡＭ２０７などのその他のメモリデバイスに設定することもできる。
【００２９】
一実施例において、ここで説明するプロセスは、メモリ及びＧＰＵと呼ぶことができないか又は実際にはＧＰＵではない処理ユニットを含むデジタル装置によって実行することができる。一実施例において、該ＧＰＵは、サーバの一部である。一実施例において、ＧＰＵを含むサーバは、クラウドベースのサーバ（cloud-based server）である。一実施例において、該ＧＰＵは、クライアント装置の一部である。
【００３０】
プライマリマルチメディアソース３０１は、頂点（vertexes）、テクスチャ、（texture）、シェーディング（shading）、メッシュ（mesh）などのグラフィックオブジェクトを含む。好適実施例において、プライマリマルチメディアソース３０１は、アプリケーションプログラムよって生成され、ＶＲＡＭ２０４のＶＲＡＭ位置３０５に直接レンダリングされる。一実施例において、ＶＲＡＭ位置３０５は、そのうち１つのバックバッファ２１６を含む。
他の実施例において、ＶＲＡＭ位置３０５は、フレームバッファ２０６を含む。一実施例において、プライマリマルチメディアソース３０１は、ゲームアプリケーションプログラムよって生成される。プライマリマルチメディアソース３０１は、直接ＶＲＡＭ２０４にレンダリングされるので、プライマリマルチメディアソース３０１を「キャプチャする」ためにリソースを費やす必要はない。他の実施例において、プライマリマルチメディアソース３０１は、その他の場所にレンダリングされ、次いでＶＲＡＭ２０４にコピーされる。
【００３１】
セカンダリマルチメディアソース３０２は、プライマリマルチメディアソース３０１上にオーバーレイすることができるビジュアルアイテム又はマルチメディアコンテンツであることができる。一実施例において、セカンダリマルチメディアソース３０２は、頂点、テクスチャ、シェーディング、メッシュなどのグラフィックオブジェクトを含む。一実施例において、セカンダリマルチメディアソース３０２は、アプリケーションプログラムよって生成され、ＶＲＡＭ２０４に直接レンダリングされる。
一実施例において、セカンダリマルチメディアソース３０２は、ＶＲＡＭ位置３０５にレンダリングされる。他の実施例において、セカンダリマルチメディアソース３０２は、プライマリマルチメディアソース３０１を生成したのと同じアプリケーションプログラムよって生成される。他の実施例において、セカンダリマルチメディアソース３０２は、異なるアプリケーションプログラムよって生成される。更に他の実施例において、セカンダリマルチメディアソース３０２は、ＴＶカード（ＴＶ  card）などのハードウェアデバイスによって生成される。本実施例において、セカンダリマルチメディアソース３０２は、ＳＲＡＭ２０７から取り出され、それをＶＲＡＭ位置３０５にロードする必要がある。
【００３２】
一実施例において、セカンダリマルチメディアソース３０２は、プライマリマルチメディアソース３０１上にオーバーレイされることができる広告である。他の実施例において、セカンダリマルチメディアソース３０２は、プライマリマルチメディアソース３０１にアンダーレイされる。更に他の実施例において、セカンダリマルチメディアソース３０２は、プライマリマルチメディアソース３０１に中間形式で混合され、両方のマルチメディアソースがある程度見えるようにさせる。
【００３３】
ＶＲＡＭ２０４において、１つ以上のセカンダリマルチメディアソース３０２は、特定の時間及び位置でプライマリマルチメディアソース３０１に混合される。一実施例において、プライマリマルチメディアソース３０１は、時間及び位置情報をセカンダリマルチメディアソース３０２に提供する。一実施例において、混合は、該プライマリマルチメディアソース３０１がレンダリングされるＶＲＡＭ２０４内のＶＲＡＭ位置３０５で生じるので、該混合プロセスは追加のバッファを必要としない。
一実施例において、プライマリマルチメディアソース３０１のレンダリング、セカンダリマルチメディアソース３０２のレンダリング、及びプライマリマルチメディアソース３０１とセカンダリマルチメディアソース３０２との混合は、同じＶＲＡＭ位置３０５で行われる。実施例において、プライマリマルチメディアソース３０１とセカンダリマルチメディアソース３０２のレンダリング動作が実行されるとき、所定の混合も同時に完了されるので、追加の混合プロセスは要求されない。
【００３４】
混合プロセスの完成後、一実施例において、混合プロセスによって生成されたターゲット画像がフレームバッファ２０６に送信される。一実施例において、レンダリングと混合のプロセスは、フレームバッファ２０６で行われるため、ターゲットイメージはフレームバッファ２０６で直接生成される。次に、ターゲット画像をターゲットビデオの一部としてエンコード（encode）することができる。
次いで、ターゲットビデオはＳＲＡＭ２０７に転送され得る。一実施例において、ターゲットビデオは、そのうち１つのバックバッファ２１６に送信できる。他の実施例において、ターゲットビデオは、ディスプレイ３０８に直接送信されることができる。更に他の実施例において、ターゲットビデオは、反復プロセスにおいて、同じＶＲＡＭ位置３０５にレンダリングされることができ、例えば、多重オーバーレイの機能を達成することができる。このプロセスは、図３中のフレームバッファ２０６からＶＲＡＭ位置３０５に戻るデータパスによって表される。多重オーバーレイは、例えば、３Ｄ表面又はテクスチャのレンダリングに用いることができる。
【００３５】
図４は、本発明のプライマリビデオソース上にマルチメディアコンテンツをオーバーレイさせることができる方法４０００の一実施例のフロー図である。
【００３６】
ステップ４０１において、頂点、テクスチャ、シェーディング、メッシュなどのオブジェクトを含むプライマリマルチメディアソースがＶＲＡＭにレンダリングされる。ステップ４０２では、頂点、テクスチャ、シェーディング、メッシュなどのオブジェクトを含むオーバーレイ／アンダーレイ（セカンダリ）マルチメディアソースもＶＲＡＭにレンダリングされ、プライマリマルチメディアソースと同じＶＲＡＭ位置にオーバーレイされる。
一実施例において、該ＶＲＡＭの位置は、そのうち１つのバックバッファ２１６に対応する。他の実施例において、該ＶＲＡＭ位置は、１つ以上のフレームバッファ２０６に対応する。更に他の実施例において、該ＶＲＡＭ位置は、バックバッファ又はフレームバッファとは異なる位置に対応する。少なくとも１つの実施例において、同一のＶＲＡＭ位置にプライマリマルチメディアソース及びオーバーレイ／アンダーレイ（セカンダリ）マルチメディアソースをレンダリングする動作は、また所定の混合動作も完了し、従って追加の混合ステップは必要とされない。
【００３７】
更に多くのオーバーレイレージ／アンダーレイ（セカンダリ）マルチメディアソースがある場合、全てのオーバーレイ／アンダーレイ（セカンダリ）マルチメディアソースがレンダリングされ混合されるまで、ステップ４０２及び４０３が繰り返される。
【００３８】
ステップ４０４において、オーバーレイ／アンダーレイ動作の結果は、ビデオをバックバッファ又はフレームバッファに送信する。混合動作は、バックバッファ又はフレームバッファで直接実行される時、ステップ４０４は、僅かな作業を含むのみか、追加の作業を含まない。他の実施例において、ステップ４０４は、オーバーレイ／アンダーレイ動作の結果を該ＶＲＡＭ位置３０５からバックバッファ又はフレームバッファに転送する動作を含む。
【００３９】
ステップ４０５ａ、４０５ｂ、４０５ｃは、方法４０００の後続のステップを紹介する。ステップ４０５ａにおいて、エンコード後のビデオ又は生ビデオ（raw video）データは、ＳＲＡＭ（システムランダムアクセスメモリ）又はＶＲＡＭに送信される。該ＧＰＵが特定のエンコードフォーマットをサポートしていない場合、生ビデオデータが後続のソフトウェアエンコードステップ（図示せず）に出力することができる。
ステップ４０５ｂにおいて、オーバーレイ／アンダーレイ動作の結果は、表示装置に直接表示される。ステップ４０５ｃにおいて、オーバーレイ／アンダーレイ動作の結果は、１回以上ステップ４０２に返送され、反復プロセスにより多重のオーバーレイを行う。クラウドゲームにおいて、インタラクティブコンテンツをゲームプロセスにオーバーレイする。
【００４０】
クラウドゲームは、オンラインゲームの一種で、その他は、「ゲームオンデマンド（game on demand）」とも称される。クラウドゲームは、基本的に次のステップで行われる（図５参照）。
【００４１】
（１）サーバ５０２は、ゲーム５０１から出力されたビデオ及びオーディオをキャプチャする。
【００４２】
（２）サーバ５０２は、ビデオとオーディオを圧縮データにエンコードする。
【００４３】
（３）サーバ５０２は、エンコード（圧縮）後のビデオ及びオーディオをクライアント装置５０４にストリーミング（ｓｔｒｅａｍ）する。
【００４４】
（４）クライアント装置５０４は、ビデオ及びオーディオデータをデコードする。
【００４５】
（５）クライアント装置５０４は、ビデオコンテンツをディスプレイ５０６にレンダリングし、オーディオコンテンツをスピーカ５０７で再生する。
【００４６】
（６）クライアント装置５０４は、ゲーム５０１の動作を制御するために制御データをサーバ５０２に送信する。
【００４７】
一実施例において、該サーバ５０２は、クラウドベースのサーバ（cloud-based server）である。一実施例において、該ゲーム５０１は、ソフトウェア形式で該クラウドサーバ５０２の中で実行される。各クライアント（ユーザ）装置５０４は、例えば、パーソナルコンピュータ（ＰＣ）、ラップトップＰＣ、タッチタブレット、スマートフォン、ゲームコンソール（game console）などであることができ、それぞれ該ゲーム５０１とインタラクションする独特の方式を有する。特に、各クライアント装置５０４のユーザインタフェースの設計は、装置自体の機能に基づいている。
クラウドゲームのターゲットは、ゲームコンテンツを様々な異なる種類のクライアント装置５０４に配信することであるので、一般に、異なるタイプのクライアント装置に対応するために追加のユーザインタフェース機能が必要である。一実施例において、前記追加のユーザインタフェース機能は、ゲーム５０１によって出力されたゲームビデオコンテンツ上に１つ以上のユーザインタフェースを重ね合わせることによって実行され、該ゲーム５０１のアプリケーションプログラムを変更する必要がない。
【００４８】
以下は、ゲームプロセスを修正することなく、追加のコンテンツをゲームビデオコンテンツ上にオーバーレイする方法を説明する。先ず、前述のキャプチャとエンコードステップを詳細に確認し、グラフィック処理ユニット（ＧＰＵ）と関連ビデオランダムアクセスメモリ（ＶＲＡＭ）を用いてこれらのステップを実行する利点を示す。
【００４９】
図６は、本発明の非ＶＲＡＭ（非ＶＲＡＭ）方法でビデオとオーディオのコンテンツをエンコードするシステム６０００の実施例の説明図である。該システム６０００は、ＧＰＵ６０２、ＶＲＡＭ６０３、ＣＰＵ６０４、システムバス６０６及びＳＲＡＭ６０８を含む。この方法は、１）ＶＲＡＭ６０３からＳＲＡＭ６０８へビデオコンテンツをコピーすること、及び２）ＳＲＡＭ６０８内のコピーされたビデオコンテンツをＣＰＵ６０４へ送信し、エンコードすること、の２つの主なステップを含む。
【００５０】
生（エンコードされていない）ビデオデータはシステムバス６０６を介する必要があるため、ビデオコンテンツをキャプチャしてエンコードするこの方法ではパフォーマンスが大幅に犠牲になる。実際、生ビデオデータは、システムバス６０６を「２回」通過する必要がある。
【００５１】
図７は、本発明のＶＲＡＭ方法でビデオ及びオーディオコンテンツをエンコードする実施例の説明図であり、ＧＰＵ６０２及びそのＶＲＡＭ６０３の機能及び利点を効果的に利用することができる。
【００５２】
図７に示すように、ビデオコンテンツはＶＲＡＭにキャプチャされてからＶＲＡＭに記憶され、ＧＰＵ及びＶＲＡＭリソースによりエンコード動作が行われる。それから、エンコードされたビデオデータは、システムバス６０６を介してＳＲＡＭ６０８に送信される。したがって、システムバス６０６は、生ビデオデータを「２回」伝達するのではなく、エンコードされた（圧縮された）ビデオデータを「１回」伝達するだけである。これにより、ＣＰＵ６０４及びＳＲＡＭ６０８のリソースを大幅に節約することができ、更にシステムバス６０６のリソースも節約することができる。
【００５３】
図８と図９は、本発明のクラウドゲームプロセスにおいて追加のインタラクティブコンテンツをオーバーレイする方法及びシステムの幾つかの実施例を紹介する。図８は、本発明のＳＲＡＭ内でインタラクティブコンテンツをオーバーレイするシステム及び方法の実施例の説明図である。図９は、本発明のＶＲＡＭにおいてインタラクティブコンテンツをオーバーレイするシステム及び方法の実施例の説明図である。一実施例において、オーバーレイする追加のインタラクティブコンテンツは、ユーザインタフェース（user interface、ＵＩと称する）を含む。一実施例において、オーバーレイするコンテンツは、追加のコンテンツが含まれている。一実施例において、オーバーレイする追加のインタラクティブコンテンツは、インタラクティブコントロールを含む。図９に示され実施例において、ＧＰＵ及びＶＲＡＭのリソースは、特定のクラウドゲームコンテンツをオーバーレイすることに用いられ、ユーザにより良いゲーム体験を提供する。
【００５４】
ゲームプロセス８０１は、コンテンツをユーザに提供するためのターゲットプロセス又はアプリケーションプログラムを含む。クラウドゲームプロセス８０５は、該ゲームのリモートプレイを支援し、例えば、ユーザにコンテンツを提供し、ユーザによるリモートコントロール入力を受け付ける。クラウドゲームプロセス８０５は、注入コード（injecting code）をゲームプロセス８０１に注入することによってゲームプロセス８０１と通信する。一実施例において、クラウドゲームプロセス８０５は、作成するオーバーレイコンテンツを決定する。一実施例において、クラウドゲームプロセス８０５のユーザは、それが注入するコードへのデータ転送を制御する。
【００５５】
クラウドゲームプロセス８０５は、スマートフォン、セットトップボックス（set-top box）又はゲーム機（game console）などのハードウェア装置であるクライアント装置８０４と通信する。一実施例において、クラウドゲームプロセス８０５は、クライアント装置８０４へのエンコードビデオデータストリームを支援する。
【００５６】
一実施例において、オーバーレイするインタラクティブコンテンツは、１つ以上の表示される広告を含む。一実施例において、オーバーレイするインタラクティブコンテンツは、１つ以上の特定のタイプの装置に適応するように設計されている装置制御インタフェースを含む。一実施例において、オーバーレイするインタラクティブコンテンツは、１つ以上の出力ビデオソースを含む。
【００５７】
好ましくは、前述の方法及びシステムは、ゲームアプリケーションプログラムを修正することなくプロセス介入によってゲームアプリケーションプログラム内で実行されるクラウドゲームサービスを提供する。一実施例において、該クラウドゲームサービスは、ダイナミックリンクライブラリインジェクション技術（dynamic link library injection、DLL Injectionと称する）を使用してゲームアプリケーションプログラム（又は他のアプリケーションプログラム）で動作する。一実施例において、該クラウドゲームサービスは、「フッキング（ｈｏｏｋｉｎｇ）」技術を使用してゲームアプリケーションプログラム（又は他のアプリケーションプログラム）内で動作する。
【００５８】
https://en.wikipedia.org/wiki/DLL_injectionを参照し、「ＤＬＬインジェクション（ＤＬＬ  injection）は、他の処理プロセスに１つのダイナミックリンクメディアキャビネットをロードさせ、そのアドレス空間で指定プログラムを実行させることができるコンピュータプログラミング技術である。」。
【００５９】
https://en.wikipedia.org/wiki/Hookingを参照し、「フックプログラム（hooking）とは、「フック」とも称される）は、ソフトウェアモジュール間の関数呼び出し、メッセージ伝達、イベント伝達のインターセプトによってオペレーティングシステム、アプリケーションプログラム又はその他のソフトウェアコンポーネントの動作を変更又は拡張する各種技術である。インターセプトされた関数呼び出し、イベント、及びメッセージを処理するコードは、フック（hook）と称される。」。
【００６０】
一実施例において、クラウドゲームサービスは、ゲームアプリケーションプログラムなどのアプリケーションプログラムで動作するＤＬＬインジェクションとフックプログラミング技術の両方を使用する。
【００６１】
好適実施例において、クラウドゲームサービスは、DirectＸ又はOpenＧＬなどの標準グラフィックアプリケーションプログラムインタフェース（ＡＰＩ）を使用し、ゲームアプリケーションプログラムと同じタイプのレンダリングされたターゲットコンテンツを生成することができる。好ましくは、クラウドゲームサービスは、本発明の前述の１つ以上の実施例を利用し、スクリーンキーボード、仮想マウス、ダイアログ情報、及び１つ以上の広告のうちの１つ以上の機能をユーザに提供する。本発明の実施例において、スクリーンキーボード、仮想マウス、会話型情報、及び広告などの追加のユーザインタフェースの機能及び情報を、ゲームアプリケーションプログラムを修正することなく提供することができる。
【００６２】
図８は、本発明のＳＲＡＭ８０８においてインタラクティブコンテンツをオーバーレイするシステムと方法の実施例の説明図である。インタラクティブコンテンツは、ユーザが制御した行動に反応するメディア又はゲームコンテンツを含むことができる。図８の方法では、該オーバーレイは、ＳＲＡＭ８０８で生成され、該オーバーレイは、エンコードの前にゲームビデオコンテンツに混合される。この方法は、比較的低次で、比較的長い時間及びその他のリソースを消費する。ユーザ制御データは、クラウドゲームプロセス８０５に送信される。オーバーレイコンテンツは、ユーザ制御データを含む場合、それはゲームプロセス８０１に送信される前にクラウドゲームプロセス８０５によって処理される。図８の方法において、エンコードは、ＣＰＵ又はＶＲＡＭ（図示せず）内で処理することができる。
【００６３】
図９は、本発明のＶＲＡＭ８０３内でインタラクティブコンテンツをオーバーレイする方法の実施例の説明図である。本方法において、クラウドゲームサービスは、ＶＲＡＭ８０３内に互換性のあるオーバーレイ面（compatible overlay surface）を直接作成し、該オーバーレイ面をゲームコンテンツに混合する。これは、ＶＲＡＭ８０３からＳＲＡＭ８０８にコンテンツをコピーする必要性を排除し、ＳＲＡＭ８０８及びＣＰＵ６０４内で混合動作を実行する必要性を排除することによって処理時間及びリソースを節約することができる。
【００６４】
該互換性のあるオーバーレイ面は、既存のゲームアプリケーションプログラムと互換性がある（即ち、同じ又は互換性のあるグラフィックス規格を有する）オーバーレイ面である。例えば、ゲームアプリケーションプログラムがDirectＸ９  ＡＰＩを使用している場合、クラウドゲームサービスもDirectＸ９  ＡＰＩも使用して、それと互換性のあるオーバーレイ面を作成する。
【００６５】
図９において、ゲームプロセス８０１が出力し、標示する「レンダリング」の経路は、ゲームプロセスが実行するレンダリングを表す。一実施例において、該クラウドゲームサービス（クラウドゲームプロセス８０５）は、各ゲームレンダリング動作の終わりに該ゲームプロセス８０１をフック（hooks）し、該ゲームにクラウドゲームサービス（プロセス８０５）の注入コード（injection code）を能動的に呼び出させる。上記の「hooking」と「ＤＬＬ Injection」の説明を参照。
【００６６】
図９の実施例において、混合ビデオコンテンツをＳＲＡＭに転送することなく、エンコード動作がＧＰＵによってＶＲＡＭ８０３内で実行される。それから、エンコードされたデータ（圧縮データでもあり得る）は、次に、遠隔に位置し得るクライアントデバイス８０４に送信される。
【００６７】
図１０は、本発明のＶＲＡＭ内でマルチソースメディアをオーバーレイするシステム７００の他の実施例のブロック図である。該システム７００は、少なくとも１つのコンピュータ７１０及び遠隔地に配置された少なくとも１つのクライアント装置７２０を含む。クライアント装置７２０は、ネットワーク７３０を介してコンピュータ７１０と接続及び通信する。コンピュータ７１０は、ＣＰＵ７１００、システムランダムアクセスメモリ（ＳＲＡＭ）７１８１、ディスプレイ７１８２、ストリーミングモジュール７１９、及びＧＰＵ７１３を含み、ＧＰＵ７１３は、更に内蔵されたビデオランダムアクセスメモリ（ＶＲＡＭ）７１４を含む。ＶＲＡＭ７１４は、複数のフレームバッファ７１６及びバックバッファ７１７を含むことができる。フレームバッファは、ＳＲＡＭ７１８などのその他のメモリデバイスに設定されることもできる。
本実施例において、該コンピュータは、複数のＧＰＵ７１３を含むクラウドサーバである。該プライマリマルチメディアソース７１１０は、コンピュータ７１０によって実行されるゲームアプリケーションプログラムのゲームプロセス７１１（第１プロセスとも称される）によって生成される。該コンピュータ７１０は、該ゲームアプリケーションプログラムを実行して該第１プロセス（ゲームプロセス）を動作させ、プライマリマルチメディアソース７１１０のビデオコンテンツを生成する。ゲームプロセス７１１によって生成されたプライマリマルチメディアソース７１１０は、頂点、テクスチャ、シェーディング、メッシュなどのグラフィックオブジェクトである複数のプライマリマルチメディアコンテンツアイテム７１５１、７１５２、７１５３を含む。該ＧＰＵ７１３は、第１プロセス（ゲームプロセス７１１）によって生成されたビデオコンテンツ内のプライマリマルチメディアコンテンツアイテム７１５１、７１５２、７１５３を直接キャプチャし、ＶＲＡＭ７１４のＶＲＡＭ位置７１５に記憶する。これらのプライマリマルチメディアコンテンツアイテム７１５１、７１５２、７１５３は、ＶＲＡＭ７１４のＶＲＡＭ位置７１５に直接レンダリングされる。
本実施例において、該ＶＲＡＭ位置７１５は、該ゲームアプリケーションプログラムのゲームプロセス７１１によって構成及び管理されている。プライマリマルチメディアソース７１１０のプライマリマルチメディアコンテンツアイテム７１５１、７１５２、７１５３は、ＶＲＡＭ７１４に直接レンダリングされるので、プライマリマルチメディアソース７１１０を「キャプチャする」ことにリソースを費やす必要はない。即ち、レンダリング動作のためにこれらのプライマリマルチメディアコンテンツアイテム７１５１、７１５２、及び７１５３をＳＲＡＭ７１８１に転送する必要はない。
【００６８】
該セカンダリマルチメディアソース７１２０は、クラウドゲームプロセス７１２（第２プロセスとも称される）によって生成される。クラウドゲームプロセス７１２によって生成されたセカンダリマルチメディアソース７１２０は、プライマリマルチメディアソース７１１０のビデオコンテンツ上にオーバーレイされ得るビジュアルコンテンツ又はマルチメディアコンテンツであり得る複数のセカンダリマルチメディアコンテンツアイテム７１５４、７１５５を含む。第２プロセス（クラウドゲームプロセス７１２）は、ＶＲＡＭ位置７１５内に１つ以上の互換性のあるオーバーレイ面を作成する。これらの互換性のあるオーバーレイ面は、該セカンダリマルチメディアコンテンツアイテム７１５４、７１５５を含む。
一実施例において、該セカンダリマルチメディアコンテンツアイテム７１５４、７１５５は、頂点、テクスチャ、シェーディング、メッシュなどの視覚化されたグラフィックオブジェクトを含む。本実施例において、クラウドゲームプロセス７１２は、クラウドゲームアプリケーションプログラムよって実施され、このクラウドゲームアプリケーションは、該ゲームアプリケーションから独立している。
これにより、ゲームアプリケーションプログラムを変更することなく、ＶＲＡＭ内においてマルチソースメディアをオーバーレイする機能を実現することができる。該ゲームアプリケーションプログラム７１１及びクラウドゲームアプリケーションプログラム７１２の両方は、何れもハードディスク、ソリッドステートハードディスク（ＳＳＤ）、フラッシュメモリカード又は光ディスクなどの非一時的コンピュータ可読媒体に記憶されたコンピュータ命令を含み、コンピュータ７１０によって読み取られ実行されることができる。しかしながら、本発明の他の実施例において、該ゲームアプリケーションプログラム７１１及びクラウドゲームアプリケーション７１２の両方を実施できるようにゲームアプリケーションプログラムを修正することもできる。本実施例において、セカンダリマルチメディアソース７１２０のセカンダリマルチメディアコンテンツアイテム７１５４、７１５５は、ＶＲＡＭ７１４のＶＲＡＭ位置７１５に直接レンダリングされるので、レンダリング動作のためにセカンダリマルチメディアコンテンツアイテム７１５４、７１５５をＳＲＡＭ７１８１に転送する必要はない。
【００６９】
本実施例において、該ＧＰＵ７１３は、第２プロセスによって生成された該互換性のあるオーバーレイ面を第１プロセスによって生成されたビデオコンテンツに直接混合し、混合したビデオコンテンツを完全に該ＶＲＡＭ７１４のフレームバッファ７１６に記憶し、プライマリマルチメディアコンテンツアイテム７１５１、７１５２、７１５３及びセカンダリマルチメディアコンテンツアイテム７１５４、７１５５をＳＲＡＭ７１８１に転送する必要はない。該互換性のあるオーバーレイ面のビデオ記憶フォーマットは、フレームバッファ７１６に記憶されている該混合後のビデオコンテンツと互換性がある。
本実施例において、該セカンダリマルチメディアソース７１２０に対する混合動作は、該プライマリマルチメディアソース７１１０によってレンダリングされたのと同じ該ＶＲＡＭ７１４の該ＶＲＡＭ位置７１５で行われるので、混合プロセスは追加のバッファの使用を必要としない。即ち、プライマリマルチメディアソース７１１０のレンダリング、セカンダリマルチメディアソース７１２０のレンダリング、及びプライマリマルチメディアソース７１１０及びセカンダリマルチメディアソース７１２０の混合によるターゲット画像（混合後のビデオコンテンツとも称される）を生成する動作はすべて同じ１つのＶＲＡＭ位置７１５で実行される。好ましくは、プライマリマルチメディアソース７１１０及びセカンダリマルチメディアソース７１２０を同じＶＲＡＭ位置７１５にレンダリングする動作が同時に所定の混合動作も完成でき、混合ステップを別途独立して行う必要はない。
【００７０】
混合プロセスの完成した後、生成されたターゲット画像（混合後のビデオコンテンツ）は、該フレームバッファ７１６に送られる。一実施例において、レンダリング及び混合動作は、何れもフレームバッファ７１６で行われるので、該ターゲット画像は、すでに直接フレームバッファ７１６にある。
次に、ターゲット画像は、ターゲットビデオの一部としてエンコードされ、それからターゲットビデオを以下のうちの１つに転送することができる：ＳＲＡＭ７１８１、バックバッファ７１７、ディスプレイ７１８２、又は反復プロセスにおいて同じＶＲＡＭ位置７１５にレンダリングされ、多重のオーバーレイを行うことができる。本実施例において、該エンコード後のターゲット画像（エンコード後の混合ビデオコンテンツとも称される）がストリーミングモジュール７１９に送られて処理されてビデオストリームとなり、その後、ネットワーク７３０を介して該ビデオストリームをクライアント装置７２０に送信する。クライアント装置７２０は、クライアントゲームプロセスを実行し、該コンピュータ７１０上のゲームプロセス及び該クラウドゲームプロセスと協働するようにクライアントゲームプロセスを実行することができ、クライアント装置７２０は、デコーダ７２２によって該エンコードされたターゲット画像をデコードし、それからデコード後のターゲット画像をクライアント装置７２１のディスプレイ７２３で再生する。
【００７１】
本実施例において、クライアント装置７２１は、インタフェース７２１を含み、これは、更にユーザインタフェース及び通信インタフェースを含む。該ユーザインタフェースは、ユーザの動作を受け付けて、ユーザの動作に基づいて制御入力を生成する。該通信インタフェースは、コンピュータ７１０との通信を確立し、該制御入力をネットワーク７３０を介して該コンピュータ７１０のクラウドゲームプロセス７１２に送信することができる。
第２プロセス（クラウドゲームプロセス７１２）が該セカンダリマルチメディアコンテンツアイテムを生成する時、該第２プロセスは、該制御入力を受信し、該制御入力に基づいて、第１プロセス（ゲームプロセス７１１）にコードを注入すること（injecting code）によって第１プロセスと通信する。該第２プロセスは、受信した制御入力に基づいてＶＲＡＭ位置７１５に該互換性のあるオーバーレイ面を作成する。一実施例において、該第１プロセスは１つ以上のレンダリング動作を実行し、該第２プロセスは、各レンダリング動作の終了時に該第１プロセスをフック（hooks）し、該第１プロセスに該第２プロセスのインジェクションコードを呼び出させる。
【００７２】
図１１は、本発明のクライアント装置上の混合後のビデオコンテンツの画像を標示する実施例の説明図である。
本実施例において、該クライアント装置は、スマートフォン、デジタルタッチタブレット、又はタッチスクリーン（ディスプレイ７２３とも称される）を内蔵したコンピュータとすることができるが、これらに限定されない。該タッチスクリーン（ディスプレイ７２３）は、デコード後のターゲット画像を表示することができるだけでなく、ユーザのタッチ動作も表示することができ、それに応じてコンピュータ７１０のクラウドゲームプロセス７１２に送信する制御入力を生成することができる。
図１１に示す実施例において、該ゲームプロセス７１１によって生成されたプライマリマルチメディアソース７１１０の該プライマリマルチメディアコンテンツアイテム７１５１、７１５２、及び７１５３は、複数のグラフィックアイテム７１５１ａ、７１５１ｂ、７１５１ｃ及び複数の仮想制御キー７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ、７１５３ｂ、７１５３ｃ、７１５３ｄを含む。これらのグラフィックアイテム７１５１ａ、７１５１ｂ、７１５１ｃ及び仮想制御キー７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ、７１５３ｂ、７１５３ｃ、７１５３ｄは、該ゲームプロセス７１１によって生成される。
該グラフィックアイテム７１５１ａ、７１５１ｂ、及び７１５１ｃは、該デコード後のターゲット画像のグラフィックオブジェクト及びシーンを表示するためにのみ使用される。しかし、該仮想制御キー７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ、７１５３ｂ、７１５３ｃ、７１５３ｄは、グラフィカルキーを表示するだけでなく、それらが表示される位置において入力機能も定義する。ユーザが該タッチスクリーン（ディスプレイ７２３）に表示されたそのうち１つの仮想制御キー７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ、７１５３ｂ、７１５３ｃ、７１５３ｄにタッチする時、クライアント装置７２０は、該タッチされた仮想制御キーに対応する制御入力を制止し、該制御入力を遠隔地にあるコンピュータ７１０に送信する。
【００７３】
クラウドゲームプロセス７１２によって生成されたセカンダリマルチメディアソース７１２０のセカンダリマルチメディアコンテンツアイテム７１５４、７１５５は、１つ以上のグラフィックアイテム（セカンダリマルチメディアコンテンツアイテム７１５５）及び仮想制御キー（セカンダリマルチメディアコンテンツアイテム７１５４）を含む。これらのセカンダリマルチメディアコンテンツアイテム７１５４、７１５５は、該ゲームアプリケーションプログラムの内蔵機能ではなく、追加機能である。
該グラフィックアイテム（セカンダリマルチメディアコンテンツアイテム７１５５）は、追加のコンテンツ、クラウドゲームの特定コンテンツ、広告などのグラフィックアイテムであり得る。該広告は、非インタラクティブ広告又はインタラクティブ広告にすることもできる。広告がインタラクティブである時、ユーザが該広告の位置にタッチすると、ＵＲＬリンクなどのハイパーリンク（ｈｙｐｅｒｌｉｎｋ）が起動され、該広告に関連するウェブページにユーザを誘導する。該仮想制御キー（セカンダリマルチメディアコンテンツアイテム７１５４）は、１つ以上の特定の種類のクライアント装置に合わせたインタフェース、双方向制御、又は装置制御インタフェースであることができる。
仮想制御キー（セカンダリマルチメディアコンテンツアイテム７１５４）は、グラフィカルキーを表示するだけでなく、それが表示する位置において入力機能も定義する。該ユーザがタッチスクリーン（ディスプレイ７２３）に表示されたそのうち１つの仮想制御キー（セカンダリマルチメディアコンテンツアイテム７１５４）にタッチすると、クライアント装置７２０は、タッチされた仮想制御キーに対応する制御入力を生成する。そして、制御入力を遠隔地にあるコンピュータ７１０のクラウドゲームプロセス７１２に送信する。一実施例において、セカンダリマルチメディアコンテンツアイテム７１５４の仮想制御キーの機能の１つは、これに限定するものではないが、いくつかのプライマリマルチメディアコンテンツアイテムの仮想制御キー７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ、７１５３ｂ、７１５３ｃ、７１５３ｄを所定の順序で押すことに相当する特別な機能をトリガするものであることができる。例えば、図１１に示す「Ｘ」キー（セカンダリマルチメディアコンテンツアイテム７１５４）を単に押すと、該プライマリマルチメディアコンテンツアイテムの該グラフィックアイテム７１５１ａに特殊な攻撃動作を実行させ、該「Ｘ」キーがない場合、ユーザは、同じ特殊攻撃動作をトリガするために短時間内に「Ａ」（７１５２ａ）、「Ｂ」（７１５２ｂ）、及び「Δ」（７１５３ａ）の３つのキーを素早く押さなければならない。該クラウドゲームプロセス７１２がクライアント装置７２０によって生成された制御入力を受信する時、該クラウドゲームプロセス７１２は、該制御入力が、ユーザがゲームプロセス７１１のプライマリマルチメディアコンテンツアイテム７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ又はクラウドゲームプロセス７１２のセカンダリマルチメディアコンテンツアイテム７１５４、７１５５の何れにタッチしたことによって生成されたものであるかを判断する。
該制御入力が該プライマリマルチメディアコンテンツアイテム７１５２ａ、７１５２ｂ、７１５２ｃ、７１５３ａ、７１５３ｂ、７１５３ｃ、７１５３ｄをタッチして生成されたものである時、該制御入力は、該ゲームプロセス７１１を制御するために直接ゲームプロセス７１１に送信される。該制御入力がセカンダリマルチメディアコンテンツアイテム７１５４、７１５５をタッチしたことによって生成された時、該クラウドゲームプロセス７１２は、どの機能が該制御入力によって起動されるかを決定し、次いで該クラウドゲームプロセス７１２は該機能を起動し、次のうち１つを実行する。対応する一連の制御入力信号を生成してゲームプロセスに送信し、該ゲームプロセスの動作を制御し、新しいセカンダリマルチメディアコンテンツアイテムを生成するか、又は既存の第２マルチメディアコンテンツアイテムを変更、削除又は移動する。
【００７４】
上記の実施例は、本発明の適用範囲を制限するために使用されるべきではなく、本発明の保護範囲は、本発明の特許請求の範囲の内容に定義される技術精神及びその均等な変化に含まれる範囲に基づくべきである。
【符号の説明】
【００７５】
１０１  サーバコンピュータ
１０２  ネットワーク
１０３  クライアント装置
１１０  ＣＰＵ
１１１  ストレージユニット
１１２  メモリ
１２０  ＣＰＵ
１２１  ストレージユニット
１２２  メモリ
１３１  コンピュータプログラム製品
２０３  ＧＰＵ
２０４  ＶＲＡＭ
２０６  フレームバッファ
２０７  システムＲＡＭ
２１２  フロントシステムバス
２１６  バックバッファ
２１７  ＣＰＵ
３０１  プライマリマルチメディアソース
３０２  セカンダリ（オーバーレイ）マルチメディアソース
３０５  ＶＲＡＭ位置
３０８  ディスプレイ
５０２  サーバ
５０１  ゲーム
５０４  クライアント装置
５０６  ディスプレイ
５０７  スピーカ
６０１  ゲームプロセス
６０６  システムバス
７１１０  プライマリマルチメディアソース
７１２０  セカンダリ（オーバーレイ）マルチメディアソース
７１５  ＶＲＡＭ位置
７１６  フレームバッファ
７１７  バックバッファ
７１８２  ディスプレイ
７１９  ストリームモジュール
７３０  インターネット
７２１  インタフェース
７２２  デコーダ
７２３  ディスプレイ
８０１  ゲームプロセス
８０４  クライアント装置
８０５  クラウドゲームプロセス
【図１】
2019195163.tif 000003
【図２】
2019195163.tif 000004
【図３】
2019195163.tif 000005
【図４】
2019195163.tif 000006
【図５】
2019195163.tif 000007
【図６】
2019195163.tif 000008
【図７】
2019195163.tif 000009
【図８】
2019195163.tif 000010
【図９】
2019195163.tif 000011
【図１０】
2019195163.tif 000012
【図１１】
2019195163.tif 000013