IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-544434描画データを使用したクラウドアプリケーションデータストリーミング
<>
  • 特表-描画データを使用したクラウドアプリケーションデータストリーミング 図1
  • 特表-描画データを使用したクラウドアプリケーションデータストリーミング 図2
  • 特表-描画データを使用したクラウドアプリケーションデータストリーミング 図3
  • 特表-描画データを使用したクラウドアプリケーションデータストリーミング 図4
  • 特表-描画データを使用したクラウドアプリケーションデータストリーミング 図5
  • 特表-描画データを使用したクラウドアプリケーションデータストリーミング 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-02
(54)【発明の名称】描画データを使用したクラウドアプリケーションデータストリーミング
(51)【国際特許分類】
   H04N 21/235 20110101AFI20241125BHJP
   H04N 21/435 20110101ALI20241125BHJP
   H04N 21/658 20110101ALI20241125BHJP
【FI】
H04N21/235
H04N21/435
H04N21/658
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024537111
(86)(22)【出願日】2022-09-22
(85)【翻訳文提出日】2024-08-16
(86)【国際出願番号】 US2022044362
(87)【国際公開番号】W WO2023121732
(87)【国際公開日】2023-06-29
(31)【優先権主張番号】63/291,508
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】フーバー,アンドレアス
(72)【発明者】
【氏名】マルチェフ,イリヤン
【テーマコード(参考)】
5C164
【Fターム(参考)】
5C164MA08S
5C164SB08P
5C164SB29S
5C164TC14P
5C164UB10P
5C164UB26S
5C164UB81S
(57)【要約】
クラウドベースのアプリケーションストリーミングシステムは、クライアントデバイスにアプリケーションをストリーミングするために実装される。システムは、ビデオフレームをレンダリングし、アプリケーションに基づいて描画データを決定するように構成されたアプリケーションインスタンス上でアプリケーションを実行しているサーバを含む。サーバは次に、ビデオフレームをエンコードし、ビデオフレーム及び描画データをアプリケーションデータストリームとしてクライアントデバイスに提供する。アプリケーションデータストリームを受信したことに応えて、クライアントデバイスは、描画データに基づいてアプリケーションデータストリームの少なくとも一部を表示するように構成される。さらに、クライアントデバイスは、入力を受信し、これらの入力を表す入力データストリームをサーバに提供するように構成される。入力データストリームに応えて、サーバは、入力データストリームに基づいてアプリケーションを修正し、修正されたアプリケーションデータストリームをクライアントデバイスに提供する。
【特許請求の範囲】
【請求項1】
方法であって、
クライアントデバイスとクラウドベースのアプリケーションサーバとの間でアプリケーションストリーミングを開始することと、
前記クラウドベースのアプリケーションサーバからアプリケーションデータストリームを受信したことに応えて、前記クライアントデバイスで、描画データに基づいて前記アプリケーションデータストリームの少なくとも一部を表示することとを含み、前記アプリケーションデータストリームが前記描画データを含み、前記方法はさらに、
入力データストリームを前記クラウドベースのアプリケーションサーバに送信することを含み、前記入力データストリームが、前記クライアントデバイスで受信された少なくとも1つの入力を表すデータを含む、前記方法。
【請求項2】
修正されたアプリケーションデータストリームを受信することと、
修正された描画データに基づいて、前記修正されたアプリケーションデータストリームの少なくとも一部を表示することと
をさらに含む、請求項1に記載の方法。
【請求項3】
1つまたは複数の入力を受信することと、
前記1つまたは複数の入力をエンコードすることとをさらに含み、前記入力データストリームが、前記エンコードされた1つまたは複数の入力を含む、請求項1または2に記載の方法。
【請求項4】
前記1つまたは複数の入力が、前記クライアントデバイスのカメラによってキャプチャされたビデオを含む、請求項3に記載の方法。
【請求項5】
1つまたは複数の出力デバイスを使用して前記アプリケーションデータストリームの少なくとも一部を出力すること
をさらに含む、請求項1~4のいずれかに記載の方法。
【請求項6】
前記1つまたは複数の出力デバイスは、前記クライアントデバイスのスピーカを備える、請求項5に記載の方法。
【請求項7】
前記描画データは、前記アプリケーションデータストリームの少なくとも一部のシーングラフを含む、請求項1~6のいずれかに記載の方法。
【請求項8】
前記アプリケーションデータストリームの少なくとも一部をデコードし、前記描画データに従って前記アプリケーションデータストリームの前記デコードされた少なくとも一部を表示すること
をさらに含む、請求項1~7のいずれかに記載の方法。
【請求項9】
前記描画データが、グラフィックオブジェクトと基準のグラフィックオブジェクトとの属性間の差を表す値を含む、請求項1~8のいずれかに記載の方法。
【請求項10】
方法であって、
クライアントデバイスとクラウドベースのアプリケーションサーバとの間でアプリケーションストリーミングを開始することと、
前記クラウドベースのアプリケーションサーバで実行しているアプリケーション及び前記アプリケーションと関連付けられた描画データに関連付けられたエンコードされたビデオフレームを含むアプリケーションデータストリームをクライアントデバイスに送信することと、
前記クライアントデバイスで受信された入力を表す入力データストリームを前記クライアントデバイスから受信したことに応えて、前記入力に基づいて前記アプリケーションを修正することと
を含む、前記方法。
【請求項11】
前記修正されたアプリケーションと関連付けられたエンコードされた修正されたビデオフレームと、前記修正されたアプリケーションと関連付けられた修正された描画データとを含む修正されたアプリケーションデータストリームを、前記クライアントデバイスに送信すること
をさらに含む、請求項10に記載の方法。
【請求項12】
前記入力データストリームの少なくとも一部をデコードして、前記入力データストリームの前記デコードされた少なくとも一部を入力として前記アプリケーションに提供すること
をさらに含む、請求項10または11に記載の方法。
【請求項13】
前記入力データストリームの前記少なくとも一部は、前記クライアントデバイスのカメラからキャプチャされたエンコードされたビデオを含む、請求項12に記載の方法。
【請求項14】
前記アプリケーションに基づいて前記描画データを決定することと、
前記描画データを描画データキャッシュに格納することと
をさらに含む、請求項10~13のいずれかに記載の方法。
【請求項15】
前記描画データは、前記アプリケーションデータストリームの少なくとも一部のシーングラフを含む、請求項10~14のいずれかに記載の方法。
【請求項16】
前記描画データは、グラフィックオブジェクトと基準のグラフィックオブジェクトの属性間の差を表す値を含む、請求項10~15のいずれかに記載の方法。
【請求項17】
前記アプリケーションは、ビデオ通話アプリケーション、プレゼンテーションアプリケーション、会議アプリケーション、またはストリーミングアプリケーションの少なくとも1つを含む、請求項10~16のいずれかに記載の方法。
【請求項18】
前記クライアントデバイスはスマートフォンを含む、請求項1~17のいずれかに記載の方法。
【請求項19】
前記クライアントデバイスはブラウザを含む、請求項1~18のいずれかに記載の方法。
【請求項20】
前記アプリケーションデータストリームの少なくとも一部は、前記クライアントデバイス上で複数の解像度で表示可能である、請求項1~19のいずれかに記載の方法。
【請求項21】
クラウドベースのアプリケーションストリーミングシステムであって、
少なくとも1つのクラウドベースのアプリケーションサーバと、
1つまたは複数の入力デバイス及び1つまたは複数のディスプレイを含む少なくとも1つのクライアントデバイスと、
1つまたは複数の処理要素と、
前記1つまたは複数の処理要素に結合され、前記1つまたは複数のプロセッサを操作して、請求項1~20のいずれかに記載の前記方法を実行するように構成された実行可能命令を格納するメモリと
を備える、システム。
【請求項22】
クラウドベースのアプリケーションストリーミングのためのデバイスであって、
クラウドベースのサーバと通信可能に結合されたクライアントデバイスと、
前記クライアントデバイスに通信可能に結合された1つまたは複数の入力デバイスと、
1つまたは複数の処理要素と、
前記1つまたは複数の処理要素に結合され、前記1つまたは複数のプロセッサを操作して、請求項1~20のいずれかに記載の前記方法を実行するように構成された実行可能命令を格納するメモリと
を備える、デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
クラウドベースのストリーミングシステムは、クラウドベースのサーバを使用して、アプリケーションのオーディオビジュアルデータをレンダリングし、クライアントデバイスにストリーミングする。オーディオビジュアルデータのストリーミングを容易にするために、クラウドベースのサーバは、オーディオビジュアルデータがストリームとしてクライアントデバイスに提供される前に、エンコーダを使用して最初にオーディオビジュアルデータをエンコードする。しかしながら、結果として生じるストリームは、利用可能であるよりも多くの帯域幅を必要とし得るため、オーディオビジュアルデータの喪失及びパフォーマンスの低下につながる。さらに、ストリームの解像度はクラウドベースのサーバによって決定され、クライアントデバイスがより高い解像度を要求するにつれて、帯域幅要件はより高くなる。
【0002】
添付図面を参照することで、本開示はよりよく理解され、多数の特徴及び利点が当業者に明らかになる。異なる図面での同じ参照記号の使用は、類似または同一の項目を示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、描画データを使用して1つまたは複数のクライアントデバイスに1つまたは複数のアプリケーションをストリーミングするためのクラウドベースのアプリケーションシステムのブロック図である。
図2】いくつかの実施形態による、描画データを使用して1つまたは複数のクライアントデバイスに1つまたは複数のアプリケーションをストリーミングするように構成されたコンピューティングデバイスのブロック図である。
図3】いくつかの実施形態による、描画データを使用して1つまたは複数のアプリケーションデータストリームの入力を提供するように構成されたクライアントデバイスのブロック図である。
図4】いくつかの実施形態による、描画データを使用してクライアントデバイスにアプリケーションをストリーミングする例示的なプロセスの流れ図である。
図5】いくつかの実施形態による、描画データを使用して1つまたは複数のクライアントデバイスに1つまたは複数のアプリケーションをストリーミングするための例示的な方法の流れ図である。
図6】いくつかの実施形態による、1つまたは複数のアプリケーションデータストリームに入力を提供するための例示的な方法の流れ図である。
【発明を実施するための形態】
【0004】
本明細書に説明する技術及びシステムは、描画データを使用して1つまたは複数のクライアントデバイスの1つまたは複数のアプリケーションをストリーミングするように構成されたクラウドベースのアプリケーションシステムを対象とする。システムは、実行しているアプリケーションに基づいてオーディオビジュアルデータをレンダリングするように構成されたアプリケーションインスタンス上で1つまたは複数のアプリケーションを実行するように構成されたクラウドベースのアプリケーションサーバを含む。オーディオビジュアルデータがレンダリングされたことに応えて、サーバは、オーディオビジュアルデータの少なくとも一部をエンコードする、オーディオビジュアルデータに基づいて描画データを決定する、または両方を行う。描画データは、アプリケーションインスタンスによるオーディオビジュアルデータ(例えば、グラフィックオブジェクト、ビデオフレーム、画像、及びレイヤ)のレンダリングで使用されるデータ構造(例えば、シーングラフ、グラフ、データツリー)、操作、コマンド、及びルーチンを含む。サーバは次に、エンコードされたオーディオビジュアルデータ、描画データ、または両方の少なくとも一部を、アプリケーションデータストリームとしてクライアントデバイスに提供する。クライアントデバイスは次に、描画データに基づいてアプリケーションデータストリームの少なくとも一部を表示するように構成される。アプリケーションデータストリームの一部として描画データをクライアントデバイスに提供することは、アプリケーションデータストリームで必要なビデオフレームの数またはビデオフレーム内のデータ量が減少するので、アプリケーションデータストリームが必要とする帯域幅を減少させるのに役立つ。さらに、描画データをアプリケーションデータストリームの一部としてクライアントデバイスに提供することにより、クライアントデバイスは、描画データを使用することによって、アプリケーションデータストリームの部分を様々な解像度でレンダリングし、表示することが可能になり、アプリケーションデータストリームの多用途性を高める。
【0005】
さらに、クライアントデバイスがアプリケーションデータストリームを表示している間、クライアントデバイスは、1つまたは複数の入力を受信するように構成される。入力を受信したことに応えて、クライアントデバイスは、クライアントデバイスで受信された1つまたは複数の入力を表すデータを含む入力データストリームをサーバに送信するように構成される。入力データストリームに応えて、サーバは、入力データストリームに基づいて、アプリケーションインスタンスで実行しているアプリケーションを修正するように構成される。サーバは次に、修正されたアプリケーションデータストリームを修正されたアプリケーションに基づいてクライアントデバイスに提供する。このようにして、クライアントデバイスに含まれる入力デバイスは、クラウドベースのアプリケーションサーバ上で実行しているアプリケーションの入力デバイスとして使用される。
【0006】
図1を参照すると、1つまたは複数のクライアントデバイス116に1つまたは複数のアプリケーションをストリーミングするためのクラウドベースのアプリケーションシステム100が提示されている。1つまたは複数のクライアントデバイス116に1つまたは複数のアプリケーションをストリーミングするために、クラウドベースのアプリケーションシステム100は、それぞれが少なくとも1つのネットワーク110によって1つまたは複数のクライアントデバイス116に通信可能に結合された1つまたは複数のクラウドベースのアプリケーションサーバ102を含む。ネットワーク110は、サーバ102のいずれかとクライアントデバイス116との間でのデータの送受信を可能にするように構成され、例えばイーサネット(登録商標)、インターネット、Wi-Fi、またはこれらの任意の組み合わせを含む。図示の実施形態では、3つのクライアントデバイス116-1、116-2、及び116-3をサポートする3つのサーバ102-1、102-2、及び102-3が提示されているが、他の実施形態では、任意の数のクライアントデバイス116をサポートする任意の数のサーバ102が実装されてもよい。各クライアントデバイス116は、いくつか例を挙げると、例えば、コンピューティング対応電話(スマートフォン)、ノート型コンピュータ、デスクトップコンピュータ、タブレットコンピュータ、仮想アシスタントデバイス、コンピューティング対応テレビ(スマートTV)、ウェブブラウザ、またはこれらの任意の組み合わせを含む。
【0007】
実施形態では、各サーバ102は、1つまたは複数のクライアントデバイス116によって開始される1つまたは複数のアプリケーションデータストリーム114をサポートするように構成された、例えばクラウドサーバ、仮想サーバ、または両方などのコンピューティングデバイスを含む。本明細書で使用する場合、アプリケーションデータストリーム114は、サーバ102上で実行しているアプリケーションが1つまたは複数のクライアントデバイス116上で部分的にまたは完全にシミュレーションされるために必要であるか、役立つか、または有用なデータを含む。例えば、クライアントデバイス116は、サーバ102上で実行しているアプリケーションが部分的にまたは完全にシミュレートされるように、アプリケーションデータストリーム114の少なくとも一部をレンダリングし、表示するように構成される。実施形態によれば、1つまたは複数のアプリケーションデータストリーム114は、1つまたは複数のクライアントデバイス116上で部分的にまたは完全にシミュレートされるサーバ102上で実行しているアプリケーションを部分的にまたは完全にシミュレートするために必要であるか、役立つか、または有用なエンコードされたビデオ、エンコードされた音声、または両方を含む。別の例として、1つまたは複数のアプリケーションデータストリーム114は、1つまたは複数のクライアントデバイス116上で部分的にまたは完全にシミュレートされるサーバ102上で実行しているアプリケーションを部分的にまたは完全にシミュレートするために必要であるか、役立つか、または有用な描画データを含む。1つまたは複数のアプリケーションデータストリーム114を容易にするために、各サーバ102は、各アプリケーションがクライアントデバイス116にストリーミングされるためにアプリケーションインスタンス104を実行する。各アプリケーションインスタンス104は、アプリケーションの少なくとも一部分の実行を容易にするように構成されたハードウェア及びソフトウェアを含む。そのように容易にすることは、いくつか例を挙げると、例えばビデオフレームのレンダリング、オーディオデータのレンダリング、グラフィックのレンダリング、描画データ(例えば、シーングラフ)の生成、データストリームの制御、入力データ処理、ネットワーク管理、通信管理、認証プロセス、またはこれらの任意の組み合わせなどのアプリケーションの1つまたは複数の操作を実行することを含む。実施形態によれば、アプリケーションインスタンス104によって実行される操作から生じるデータは、1つまたは複数のアプリケーションデータストリーム114の一部として1つまたは複数のクライアントデバイス116に提供される。
【0008】
実施形態によれば、1つまたは複数のアプリケーションインスタンス104は、アプリケーションインスタンス104上で実行しているアプリケーションに関連するオーディオビジュアルデータ108を生成するように構成される。オーディオビジュアルデータ108は、例えば、ビデオフレーム、オーディオファイル、グラフィックオブジェクト、またはこれらの任意の組み合わせを含む。アプリケーションインスタンス104がオーディオビジュアルデータ108を生成したことに応えて、アプリケーションインスタンス104に関連する1つまたは複数のサーバ102は、1つまたは複数のビデオコーデック(例えば、H.264、H.265、VP8、VP9、AV1)、オーディオコーデック(MPEG-2オーディオレイヤ3(MP3)、フリーロスレスオーディオコーデック(FLAC)、アドバンスドオーディオコーディング(AAC)、波形オーディオファイル形式(WAV)、オーディオ交換ファイル形式(AIFF)、Opus)、または両方を使用してオーディオビジュアルデータ108の少なくとも一部をエンコードするように構成される。オーディオビジュアルデータ108をエンコードした後、サーバ102は、オーディオビジュアルデータ108に関連するアプリケーション(例えば、オーディオビジュアルデータが生成されたときにアプリケーションインスタンス104上で実行していたアプリケーション)をクライアントデバイス116上で完全にまたは部分的にシミュレートできるように、エンコードされたオーディオビジュアルデータの少なくとも一部を、アプリケーションデータストリーム114の少なくとも一部として1つまたは複数のクライアントデバイス116に提供するように構成される。
【0009】
実施形態では、1つまたは複数のアプリケーションインスタンス104は、描画データ106を決定するように構成される。描画データ106は、オーディオビジュアルデータ108の1つまたは複数のビデオフレーム、レイヤ、グラフィックオブジェクト、画像、またはこれらの任意の組み合わせのレンダリングに必要であるか、役立つか、または有用な1つまたは複数のデータ構造(例えば、シーングラフ、グラフ、データツリー)、操作、コマンド、ルーチン、またはこれらの任意の組み合わせを含む。すなわち、描画データ106は、1つまたは複数のグラフィックオブジェクトをレンダリングし、1つまたは複数のレイヤを構成し、1つまたは複数のビデオフレームを生成し、1つまたは複数の画像を生成する、またはアプリケーションインスタンス104上で実行するアプリケーションのためのこれらの任意の組み合わせにおいて使用する、データ構造、操作、コマンド、ルーチン、またはこれらの任意の組み合わせを含む。例えば、描画データ106は、1つまたは複数のグラフィックオブジェクトをレンダリングするために使用されるグラフィックパイプラインの1つまたは複数のステップと関連付けられた、1つまたは複数の操作、コマンド、ルーチン、またはこれらの任意の組み合わせを含む。別の例として、描画データ106は、1つまたは複数のグラフィックオブジェクト、レイヤ、または両方で使用される、プリミティブの生成、クリッピング、ラスタ化、ピクセル操作、テクスチャマッピング、フレームバッファ操作、テッセレーション、またはこれらの任意の組み合わせで使用される、1つまたは複数の操作、コマンド、ルーチン、もしくはこれらの任意の組み合わせを含む。さらに、別の例として、描画データ106は、例えば、ビデオフレーム、レイヤ、画像、またはこれらの任意の組み合わせの少なくとも一部の構造化された表現を表すデータ構造と、グラフィックオブジェクト、グラフィックオブジェクトの属性、及びビデオフレーム、レイヤ、または画像の少なくとも一部内のグラフィックオブジェクト間の関係性を表すデータとを含む。これらのデータ構造は、例えば、シーングラフ(例えば、形状ノード、プロパティノード、及びグループノードを含む)、データツリー、グラフ、またはこれらの任意の組み合わせを含む。
【0010】
実施形態では、描画データ106は、アプリケーションデータストリーム114の少なくとも一部としてクライアントデバイス116に提供される。描画データ106をアプリケーションデータストリーム114の一部としてクライアントデバイス116に提供することは、アプリケーションデータストリーム114をクライアントデバイス116に送信するために必要な帯域幅を減少させるのに役立つ。例えば、描画データ106をアプリケーションデータストリーム114に含むことは、アプリケーションデータストリーム114で必要なビデオフレームの数またはビデオフレームのデータ量を減少させるのに役立つ。さらに、描画データ106をアプリケーションデータストリーム114の一部としてクライアントデバイス116に提供することにより、クライアントデバイス116は、アプリケーションデータストリーム114の部分を様々な解像度でレンダリングし、表示することが可能になり、アプリケーションデータストリーム114の多用途性を高める。
【0011】
実施形態によれば、1つまたは複数のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせは、例えば色、形状、サイズ、倍率、位置、またはこれらの任意の組み合わせなどの1つまたは複数の属性を含む。実施形態では、描画データ106は、1つまたは複数のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせからなる属性と、1つまたは複数の基準のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせからなる属性との差を表す値を含む。すなわち、描画データ106は、1つまたは複数の基準のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせからなる属性から、1つまたは複数のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせからなる属性への変化を表す値を含む。基準のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせは、例えば、以前にレンダリングされたグラフィックオブジェクト、レイヤ、ビデオフレーム、またはアプリケーションを実行しているアプリケーションインスタンス104によって以前にレンダリングされたこれらの任意の組み合わせを含む。このようにして、属性への変更は、グラフィックオブジェクト、レイヤ、またはビデオフレーム全体ではなく、アプリケーションデータストリーム114に含まれ、アプリケーションデータストリーム114が必要とする帯域幅を減少させるのに役立つ。
【0012】
1つまたは複数のアプリケーションデータストリーム114を受信したことに応えて、クライアントデバイス116は、受信したアプリケーションデータストリーム114の少なくとも一部を出力するように構成される。アプリケーションデータストリーム114の部分を出力するために、クライアントデバイス116は、例えば、スピーカ、ライト、サーボ、モータ、またはこれらの任意の組み合わせを含む1つまたは複数の出力デバイス120を含むか、または別の方法で結合される。例えば、出力デバイス120は、アプリケーションデータストリーム114(例えば、オーディオファイル)の少なくとも一部を出力するように構成された1つまたは複数のスピーカを含む。さらに、クライアントデバイス116は、アプリケーションデータストリーム114(例えば、ビデオフレーム、グラフィックオブジェクト)の少なくとも一部を表示するように構成された、ディスプレイ126(例えば、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、陰極線管(CRT)ディスプレイ)を含むか、または別の方法でディスプレイ126に結合される。例えば、ディスプレイ126上でのアプリケーションデータストリーム114の表示を容易にするために、クライアントデバイス116は、1つまたは複数のビデオコーデック(例えば、H.264、H.265、VP8、VP9、AV1)を使用してアプリケーションデータストリーム114の1つまたは複数のエンコードされたビデオフレームをデコードする、1つまたは複数のオーディオコーデック(MP3、フリーFLAC、AAC、WAV、AIFF、Opus)を使用して1つまたは複数のエンコードされたオーディオファイルをデコードする、または両方を行うように構成されたハードウェア及びソフトウェアを含む1つまたは複数のデコーダを含む。さらに、例えばディスプレイ126上でのアプリケーションデータストリーム114の表示を容易にするために、クライアントデバイス116は、アプリケーションデータストリーム114の描画データ106に基づいて、アプリケーションデータストリーム114の少なくとも一部を表示するように構成される。例えば、クライアントデバイス116は、アプリケーションデータストリーム114の描画データ106に基づいて、1つまたは複数のグラフィックオブジェクトをレンダリングするように構成される。別の例として、クライアントデバイス116は、アプリケーションデータストリーム114の描画データ106に基づいて、プリミティブの生成、クリッピング、ラスタ化、ピクセル操作、テクスチャマッピング、フレームバッファ操作、テッセレーション、またはこれらの任意の組み合わせを実行して、アプリケーションデータストリーム114の少なくとも一部をディスプレイ126上にレンダリングするように構成される。
【0013】
実施形態では、クライアントデバイス116は、アプリケーションがクライアントデバイス116と共有されている間(例えば、クライアントデバイス116がアプリケーションデータストリーム114を受信している間)に、1つまたは複数の入力を受信するように構成された1つまたは複数の入力デバイス118を含むか、または別の方法で結合される。入力デバイス118は、いくつか例を挙げると、例えば、ジェスチャ(例えば、スワイプ、クリック、タップ)、マウスのクリック、キーストローク、ボタンの押下、オーディオ、ビデオ、ピクチャ、角度、またはこれらの任意の組み合わせを受信するか、またはキャプチャするように構成された、例えば、1つまたは複数のタッチスクリーン、コンピュータマウス、キーボード、マイクロフォン、カメラ、ボタン、加速度計、またはこれらの任意の組み合わせを含む。実施形態によれば、1つまたは複数の入力デバイス118で1つまたは複数の入力を受信したことに応えて、クライアントデバイスは、ネットワーク110を介して、入力データストリーム128を1つまたは複数のサーバ102(例えば、クライアントデバイス116と共有されているアプリケーションを実行するサーバ102)に送信するように構成される。入力データストリーム128は、クライアントデバイス116の1つまたは複数の入力デバイス118で受信された1つまたは複数の入力を表すデータを含む。実施形態によれば、クライアントデバイス116は、1つまたは複数の入力をエンコードし、エンコードされた入力を入力データストリーム128の少なくとも一部としてサーバ102に提供するように構成されたハードウェア及びソフトウェアを含む1つまたは複数のエンコーダ122を含む。例えば、エンコーダ122は、1つまたは複数のビデオコーデック(例えば、H.264、H.265、VP8、VP9、AV1)、オーディオコーデック(MP3、FLAC、AAC、WAV、AIFF、Opus)、または両方を使用して1つまたは複数の入力デバイス118によってビデオ、ピクチャ、及びオーディオのキャプチャをエンコードするように構成される。
【0014】
入力データストリーム128を受信したことに応えて、サーバ102は、それぞれのアプリケーションインスタンス104上で実行しているアプリケーションを修正するように構成される。例えば、サーバ102は、入力データストリーム128の少なくとも一部を、それぞれのアプリケーションインスタンス104上で実行しているアプリケーションへの入力として提供するように構成される。別の例として、サーバ102は、入力データストリーム128に基づいて、それぞれのアプリケーションインスタンス104上で実行しているアプリケーションに提供するために1つまたは複数の入力を決定するように構成される。入力データストリーム128に基づいて、それぞれのアプリケーションインスタンス104上で実行しているアプリケーションを修正することによって、クライアントデバイスの入力デバイス118は、それぞれのアプリケーションインスタンス104上で実行しているアプリケーション用の入力デバイスとして使用される。したがって、クライアントデバイス116の入力デバイス118は、クライアントデバイス116上で部分的にまたは完全にシミュレートされたアプリケーションとインタラクトするために使用される。
【0015】
ここで図2を参照すると、サーバ102に類似したまたは同じであるコンピューティングデバイス200が提示されている。実施形態では、コンピューティングデバイス200は、1つまたは複数の処理要素(例えば、処理コア)と、1つまたは複数のネットワーク(例えば、ネットワーク110)に通信可能に結合するように構成されたモデム244と、メモリ248とを含む。実施形態では、コンピューティングデバイス200の1つまたは複数の部分(例えば、処理要素228、モデム244、メモリ248)は、バス252を介して通信している。実施形態では、コンピューティングデバイス200は、アプリケーションインスタンス104と類似したまたは同じであるアプリケーションインスタンス204を使用してアプリケーション232を実行するように構成される。アプリケーション232は、例えば、ビデオ通話アプリケーション、プレゼンテーションアプリケーション、会議アプリケーション、オーディオストリーミングアプリケーション、ビデオストリーミングアプリケーション、またはこれらの任意の組み合わせを含む。実施形態では、アプリケーションインスタンス204は、アプリケーション232に従って、アプリケーションフレーム(例えば、ビデオフレーム)234、アプリケーションオーディオ236、及び描画データ106に類似したまたは同じである描画データ206を生成するように構成される。例えば、アプリケーションインスタンス204は、アプリケーションのコマンドに従って、1つまたは複数のアプリケーションフレーム234をレンダリングする。別の例として、アプリケーションインスタンスは、アプリケーションの命令に従って、アプリケーションオーディオ(例えば、オーディオファイル、音声)をレンダリングする。さらに別の例として、アプリケーションインスタンス204は、アプリケーション232に従って、表示環境、ピクチャ、画像、シーン、ビデオフレーム、またはこれらの任意の組み合わせをレンダリングするように構成される描画データ206を生成する。処理要素228は、1つまたは複数のビデオコーデック(例えば、H.264、H.265、VP8、VP9、AV1)に従ってアプリケーションフレーム234をエンコードする、1つまたは複数のオーディオコーデック(MP3、FLAC、AAC、WAV、AIFF、Opus)に従ってアプリケーションオーディオ236をエンコードする、または両方を行うように構成されるハードウェア及びソフトウェアを含む1つまたは複数のエンコーダ240をさらに含む。アプリケーションフレーム234、アプリケーションオーディオ236、または両方がエンコードされたことに応えて、処理要素228は、エンコードされたアプリケーションフレームとアプリケーションオーディオの少なくとも一部を、アプリケーションデータストリーム114として1つまたは複数のクライアントデバイス116に提供するように構成される。
【0016】
実施形態によれば、コンピューティングデバイス200は、描画データキャッシュ250を含むメモリ248(例えば、ソリッドステートメモリ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、プログラム可能な読み出し専用メモリ(PROM)、電子的消去可能な読み出し専用メモリ(EEPROM)、ハードディスクドライブ(HDD)、またはこれらの任意の組み合わせ)をさらに含む。描画データキャッシュ250は、アプリケーション232に従って1つまたは複数のグラフィックオブジェクト、レイヤ、画像、またはビデオフレームをレンダリングするために、アプリケーションインスタンス204によって生成された描画データ206(例えば、シーングラフ)を格納するように構成される。実施形態では、描画データキャッシュ250は、基準のグラフィックオブジェクト、レイヤ、またはビデオフレームと比較して、グラフィックオブジェクト、レイヤ、またはビデオフレームに対する属性の1つまたは複数の変化を格納するようにさらに構成される。実施形態では、コンピューティングデバイス200は、画面データキャッシュ250に格納された描画データ206を、1つまたは複数のクライアントデバイス116に提供される1つまたは複数のアプリケーションデータストリーム114に含めるように構成される。例えば、コンピューティングデバイス200は、アプリケーションデータストリーム114内に1つまたは複数のシーングラフを含めるように構成される。
【0017】
実施形態では、コンピューティングデバイス200は、1つまたは複数のクライアントデバイス116から1つまたは複数の入力データストリーム128を受信し、これに応えて、入力データストリーム128に従ってアプリケーション232を修正するように構成される。例えば、コンピューティングデバイス200は、入力データストリーム128の少なくとも一部をアプリケーション232への入力として提供するように構成される。別の例として、コンピューティングデバイス200は、入力データストリーム128に基づいてアプリケーション232の1つまたは複数の入力を決定するように構成される。実施形態によれば、コンピューティングデバイス200は、入力データストリーム128の少なくとも一部をデコードするように構成されたハードウェア及びソフトウェアを含むデコーダ242を含む。例えば、デコーダ242は、1つまたは複数のビデオコード(例えば、H.264、H.265、VP8、VP9、AV1)に従って、入力データストリーム128内のカメラからのエンコードされたビデオをデコードするように構成される。別の例として、デコーダ242は、1つまたは複数のオーディオコーデック(MP3、FLAC、AAC、WAV、AIFF、Opus)に従って、入力データストリーム128内のマイクロフォンからのオーディオをデコードするように構成される。
【0018】
ここで図3を参照すると、クライアントデバイス116に類似したまたは同じであるクライアントデバイス300が提示されている。クライアントデバイス300は、例えば、1つまたは複数の処理要素(例えば、処理コア)354と、1つまたは複数のネットワーク(例えば、ネットワーク110)に通信可能に結合するように構成されたモデム358と、メモリ360とを含む。実施形態によれば、クライアントデバイス300の1つまたは複数の部分(例えば、処理要素354、モデム358、及びメモリ360)は、バス362によって通信可能に結合される。実施形態では、クライアントデバイス300は、1つまたは複数のアプリケーションデータストリーム114を受信し、受信したアプリケーションデータストリーム114の少なくとも一部を表示するように構成される。この目的のために、クライアントデバイス300は、受信したアプリケーションデータストリーム114内のエンコードされたアプリケーションフレーム及びオーディオをデコードするように構成されたデコーダ324を含む。デコーダ324は、1つまたは複数のビデオコード(例えば、H.264、H.265、VP8、VP9、AV1)に従ってビデオフレームをデコードし、1つまたは複数のオーディオコーデック(MP3、FLAC、AAC、WAV、AIFF、Opus)に従ってオーディオをデコードするように構成されたハードウェア及びソフトウェアを含む。1つまたは複数のアプリケーションフレーム(例えば、ビデオフレーム)をデコードしたことに応えて、クライアントデバイス300は、デコードしたアプリケーションフレームの少なくとも一部を、ディスプレイ126に類似したまたは同じであるディスプレイ上に表示するように構成される。オーディオをデコードしたことに応えて、クライアントデバイス300は、クライアントデバイス300に含まれるか、または別の方法で結合された出力デバイス120に類似したまたは同じである1つまたは複数の出力デバイス320を使用してデコードしたオーディオを出力するように構成される。各出力デバイス320は、受信したアプリケーションデータストリーム114の少なくとも一部を出力するように構成された、例えば、1つまたは複数のスピーカ、ライト、サーボ、モータ、またはこれらの任意の組み合わせを含む。図3に示す例示的な実施形態では、クライアントデバイス300に含まれるか、または別の方法で結合される3つの出力デバイス(320-1、320-2、320-3)を提示するが、他の実施形態では、任意の数の出力デバイス320は、クライアントデバイス300に含まれてもよいか、または別の方法で結合されてもよい。実施形態によれば、クライアントデバイス300は、アプリケーションデータストリーム114に含まれる描画データ106、206に類似したまたは同じである描画データに基づいて、シーン、画像、グラフィックオブジェクト、レイヤ、またはこれらの任意の組み合わせをレンダリングするように構成されたハードウェア及びソフトウェアを含むレンダリングエンジン356をさらに含む。例えば、レンダリングエンジン356は、シーングラフに基づいて1つまたは複数のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせをレンダリングするように構成される。実施形態では、レンダリングエンジン356によってレンダリングされるデータ(例えば、グラフィックオブジェクト、レイヤ、ビデオフレーム)は、1つまたは複数のデコードされたアプリケーションフレームと同時に表示される。
【0019】
アプリケーションデータストリーム114の少なくとも一部は、出力デバイス320によって出力される、ディスプレイに表示される、または両方であるが、クライアントデバイス300に含まれるか、または別の方法で結合される入力デバイス118に類似したまたは同じである1つまたは複数の入力装置318は、1つまたは複数の入力を受信するように構成される。入力デバイス318は、いくつか例を挙げると、例えば、ジェスチャ(例えば、スワイプ、クリック、タップ)、マウスのクリック、キーストローク、ボタンの押下、オーディオ、ビデオ、ピクチャ、角度、またはこれらの任意の組み合わせを受信するか、またはキャプチャするように構成された、例えば、1つまたは複数のタッチスクリーン、コンピュータマウス、キーボード、マイクロフォン、カメラ、ボタン、加速度計、またはこれらの任意の組み合わせを含む。実施形態では、クライアントデバイス300は、入力デバイス318で受信された1つまたは複数の入力を表す入力データストリーム128を1つまたは複数のサーバ102に提供するように構成される。図3に示す例示的な実施形態は、クライアントデバイス300に含まれるか、または別の方法で結合される3つの出力デバイス(318-1、318-2、318-3)を提示するが、他の実施形態では、任意の数の入力デバイス318が、クライアントデバイス300に含まれてもよいか、または別の方法で結合されてもよい。実施形態によれば、クライアントデバイス300は、入力デバイス318が受信した1つまたは複数の入力をエンコードするように構成されたハードウェア及びソフトウェアを含むエンコーダ122に類似したまたは同じであるエンコーダ322を含む。例えば、エンコーダ322は、1つまたは複数のビデオコーデック(例えば、H.264、H.265、VP8、VP9、AV1)に従って、カメラによってキャプチャされたビデオ及びピクチャをエンコードするように構成される。別の例として、エンコーダ322は、1つまたは複数のオーディオコーデック(MP3、FLAC、AAC、WAV、AIFF、Opus)に従って、マイクロフォンによって受信されたオーディオをエンコードするように構成される。ビデオ、ピクチャ、オーディオ、またはこれらの任意の組み合わせをエンコードしたことに応えて、クライアントデバイス300は、エンコードされたビデオ、ピクチャ、及びオーディオを入力データストリーム128の一部としてサーバ102に提供するように構成される。
【0020】
ここで図4を参照すると、クライアントデバイスにアプリケーションをストリーミングする例示的なプロセス400の流れ図が提示されている。プロセス400は、クライアントデバイス116、300に類似したまたは同じであるクライアントデバイス416を含み、クライアントデバイス416は、アプリケーションストリーミングセッション要求405を、サーバ102またはコンピューティングデバイス200に類似したまたは同じである1つまたは複数のサーバ402に送信する。アプリケーションストリーミングセッション要求405は、1つまたは複数のそれぞれのアプリケーションに対して1つまたは複数のアプリケーションストリーミングセッションの開始を要求するデータを含む。アプリケーションストリーミングセッション要求405を受信したことに応えて、サーバ402は、アプリケーションインスタンス104、204に類似したまたは同じであるアプリケーションインスタンス上でそれぞれのアプリケーションを実行するように構成される。アプリケーションインスタンスは、アプリケーションフレーム(例えば、アプリケーションフレーム234)、オーディオ(例えば、アプリケーションオーディオ236)、描画データ(例えば、描画データ106、206)、またはそれぞれのアプリケーションに関連するこれらの任意の組み合わせをレンダリングし、生成するように構成される。サーバ402は次に、レンダリングし、生成したアプリケーションフレーム、オーディオ、及び描画データをアプリケーションデータストリーム410としてクライアントデバイス416に提供するように構成される。
【0021】
アプリケーションデータストリーム410を受信したことに応えて、クライアントデバイス416は、それぞれのアプリケーションの少なくとも一部がクライアントデバイス416上で部分的にまたは完全にシミュレートされるように、アプリケーションデータストリーム410の少なくとも一部を表示するように構成される。クライアントデバイス416はアプリケーションデータストリーム410の少なくとも一部を表示するが、クライアントデバイス416は、クライアントデバイス416に含まれるか、または別の方法で結合される1つまたは複数の入力デバイス(例えば、入力デバイス118、218)を介して1つまたは複数の入力を受信するように構成される。1つまたは複数の入力を受信したことに応えて、クライアントデバイス116は、クライアントデバイス116によって受信された入力の少なくとも一部を表すデータを含む入力データストリーム415をサーバ402に送信するように構成される。入力データストリーム415を受信したことに応えて、サーバ402は、アプリケーションインスタンス上で実行しているそれぞれのアプリケーションの少なくとも一部を修正するように構成される。例えば、サーバ402は、入力データストリーム415の少なくとも一部を、それぞれのアプリケーションへの入力として提供するように構成される。それぞれのアプリケーションが修正されると、アプリケーションインスタンスは、修正されたアプリケーションに基づいて、修正されたアプリケーションフレーム、オーディオ、及び描画データをレンダリングし、生成する。サーバ402は次に、修正されたアプリケーションフレーム、オーディオ、及び描画データを、修正されたアプリケーションストリーム420の一部としてクライアントデバイス116に提供する。
【0022】
図5を参照すると、1つまたは複数のクライアントデバイスに1つまたは複数のアプリケーションをストリーミングするための例示的な方法500が提示されている。方法500のステップ505で、クライアントデバイス116、300、416に類似したまたは同じであるクライアントデバイスは、クライアントデバイスと、サーバ102、200、402に類似したまたは同じである1つまたは複数のサーバとの間でアプリケーションストリーミングを開始する。例えば、クライアントデバイスは、それぞれのアプリケーションのアプリケーションストリーミングを要求するデータをサーバに送信する。アプリケーションストリーミングを要求するデータを受信したことに応えて、サーバは、アプリケーションインスタンス104、204に類似したまたは同じであるアプリケーションインスタンス上でアプリケーションストリーミングを要求するデータで識別されたアプリケーションを実行する。実施形態では、アプリケーションインスタンスは、アプリケーションフレーム(例えば、ビデオフレーム)、オーディオ、描画データ、または両方をレンダリングおよび生成し、それらは次にエンコードされ、アプリケーションデータストリーム114の一部としてクライアントデバイスに送信される。ステップ510で、アプリケーションデータストリーム114を受信したことに応えて、クライアントデバイスは、デコーダ124、324に類似したまたは同じである1つまたは複数のデコーダを使用して、アプリケーションデータストリームの少なくとも一部をデコードするように構成される。クライアントデバイスは次に、アプリケーションデータストリーム114の1つまたは複数のデコードされた部分を、ディスプレイ126に類似したまたは同じであるディスプレイに表示する、アプリケーションデータストリーム114の1つまたは複数のデコードされた部分を、出力デバイス120、320に類似したまたは同じである1つまたは複数の出力デバイスに出力する、または両方を行うように構成される。
【0023】
ステップ515で、クライアントデバイスは、アプリケーションデータストリーム114に基づいて、1つまたは複数のグラフィックオブジェクト、レイヤ、画像、またはビデオフレームをレンダリングするように構成される。例えば、クライアントデバイスは、アプリケーションデータストリーム114内の描画データ106、206に類似したまたは同じである描画データ(例えば、シーングラフ)に従って、1つまたは複数のグラフィックオブジェクト及びレイヤをレンダリングするように構成される。別の例として、クライアントデバイスは、1つまたは複数のグラフィックオブジェクト、レイヤ、ビデオフレーム、または任意の組み合わせの属性と、アプリケーションデータストリーム114内の1つまたは複数の基準のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせの属性との間の差を表すデータに基づいて、1つまたは複数のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせを更新するように構成される。1つまたは複数のグラフィックオブジェクト、レイヤ、画像、またはビデオフレームをレンダリングする、更新する、または両方を行った後に、クライアントデバイスは、レンダリング及び更新されたグラフィックオブジェクト、レイヤ、画像、及びビデオフレームを単独で、または1つまたは複数のデコードされたビデオフレームと同時にディスプレイに表示する。ステップ520で、クライアントデバイスは、クライアントデバイスに含まれるか、または別の方法で結合される、入力デバイス118、318に類似したまたは同じである1つまたは複数の入力デバイスを介して1つまたは複数の入力を受信する。ステップ525で、1つまたは複数の入力を受信したことに応えて、クライアントデバイスは、クライアントデバイスで受信された1つまたは複数の入力を表す入力データストリーム128をサーバに送信するように構成される。入力データストリーム128を受信したことに応えて、サーバは、例えば入力データストリーム128の少なくとも一部をそれぞれのアプリケーションに提供することによって、それぞれのアプリケーションを修正する。アプリケーションインスタンスは次に、修正されたアプリケーションに基づいて、修正されたアプリケーションフレーム、オーディオ、及び描画データを生成し、レンダリングする。サーバは、これらの修正されたアプリケーションフレーム、オーディオ、及び描画データを、修正されたアプリケーションストリームの一部としてクライアントデバイスに提供する。ステップ530で、クライアントデバイスは、修正されたアプリケーションストリームを受信し、修正されたアプリケーションストリームの少なくとも一部を表示する。
【0024】
図6を参照すると、1つまたは複数のアプリケーションデータストリームに入力を提供するための例示的な方法600が提示されている。方法600のステップ605で、サーバ102、200、402に類似したまたは同じであるサーバは、アプリケーションインスタンス104、204に類似したまたは同じであるアプリケーションインスタンス上でアプリケーションを実行する。アプリケーションが実行している間、アプリケーションインスタンスは、例えばアプリケーションフレーム及びアプリケーションオーディオなどのオーディオビジュアルデータをレンダリングし、生成する。ステップ610で、サーバは、1つまたは複数のビデオコード、オーディオコーデック、または両方を使用して、オーディオビジュアルデータをエンコードするように構成される。ステップ615で、アプリケーションインスタンスは、グラフィックオブジェクト、レイヤ、画像、ビデオフレーム、またはアプリケーションインスタンスによってレンダリングされたオーディオビジュアルデータ内のこれらの任意の組み合わせをレンダリングするために使用される、描画データ106、206に類似したまたは同じである描画データ(例えば、シーングラフ)を生成するように構成される。実施形態では、サーバは、グラフィックオブジェクト、レイヤ、画像、及びビデオフレームをレンダリングまたは生成するために使用される描画データを決定し、決定された描画データを、描画データキャッシュ250に類似したまたは同じである描画データキャッシュに格納するように構成される。実施形態によれば、描画データキャッシュに描画データを格納することは、例えば、1つまたは複数のレンダリングされたまたは生成されたグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせの属性と、1つまたは複数の基準のグラフィックオブジェクト、レイヤ、ビデオフレーム、またはこれらの任意の組み合わせの属性との間の差を表す値を格納することを含む。
【0025】
ステップ620で、サーバは、アプリケーションデータストリーム114を1つまたは複数のクライアントデバイスに送信する。アプリケーションデータストリーム114は、サーバによってエンコードされたオーディオビジュアルデータ、描画データキャッシュに格納された描画データ、または両方を含む。ステップ625で、サーバがアプリケーションデータストリーム114を送信している間、サーバは、1つまたは複数のクライアントデバイスから入力データストリーム128を受信するように構成される。入力データストリーム128は、クライアントデバイスによって受信された1つまたは複数の入力を表すデータを含む。例えば、入力データストリーム128は、クライアントデバイスのカメラによってキャプチャされたエンコードされたビデオを含む。ステップ630で、入力データストリーム128を受信したことに応えて、サーバは、アプリケーションインスタンス上で実行しているアプリケーションを修正するように構成される。例えば、サーバは、入力データストリーム128の少なくとも一部を、アプリケーションへの入力として提供するように構成される。別の例として、サーバは、入力データストリーム128に基づいてアプリケーションへの1つまたは複数の入力を決定するように構成される。
【0026】
本明細書に説明するように、いくつかの実施形態では、方法は、クライアントデバイスとクラウドベースのアプリケーションサーバとの間でアプリケーションストリーミングを開始することと、クラウドベースのアプリケーションサーバからアプリケーションデータストリームを受信したことに応えて、クライアントデバイスにおいて、描画データに基づいてアプリケーションデータストリームの少なくとも一部を表示することとを含み、アプリケーションデータストリームが描画データを含み、前記方法はさらに、入力データストリームをクラウドベースのアプリケーションサーバに送信することを含み、入力データストリームが、クライアントデバイスで受信された少なくとも1つの入力を表すデータを含む。一態様では、方法は、修正されたアプリケーションデータストリームを受信することと、修正された描画データに基づいて、修正されたアプリケーションデータストリームの少なくとも一部を表示することとを含む。別の態様では、方法は、1つまたは複数の入力を受信することと、1つまたは複数の入力をエンコードすることとをさらに含み、入力データストリームが、エンコードされた1つまたは複数の入力を含む。4.前記1つまたは複数の入力が、クライアントデバイスのカメラによってキャプチャされたビデオを含む、請求項3に記載の方法。
【0027】
一態様では、方法は、1つまたは複数の出力デバイスを使用してアプリケーションデータストリームの少なくとも一部を出力することを含む。別の態様では、1つまたは複数の出力デバイスは、クライアントデバイスのスピーカを含む。さらに別の態様では、描画データは、アプリケーションデータストリームの少なくとも一部のシーングラフを含む。さらに別の態様では、方法は、アプリケーションデータストリームの少なくとも一部をデコードし、描画データに従ってアプリケーションデータストリームのデコードされた少なくとも一部を表示することを含む。別の態様では、描画データは、グラフィックオブジェクトと基準のグラフィックオブジェクトの属性間の差を表す値を含む。
【0028】
いくつかの実施形態では、方法は、クライアントデバイスとクラウドベースのアプリケーションサーバとの間でアプリケーションストリーミングを開始することと、クラウドベースのアプリケーションサーバで実行しているアプリケーション及びアプリケーションと関連付けられた描画データに関連付けられたエンコードされたビデオフレームを含むアプリケーションデータストリームをクライアントデバイスに送信することと、クライアントデバイスで受信された入力を表す入力データストリームをクライアントデバイスから受信したことに応えて、入力に基づいてアプリケーションを修正することとを含む。一態様では、方法は、修正されたアプリケーションと関連付けられたエンコードされた修正されたビデオフレームと、修正されたアプリケーションと関連付けられた修正された描画データとを含む修正されたアプリケーションデータストリームを、クライアントデバイスに送信することを含む。別の態様では、方法は、入力データストリームの少なくとも一部をデコードし、入力データストリームのデコードされた少なくとも一部を入力としてアプリケーションに提供することを含む。さらに別の態様では、入力データストリームの少なくとも一部は、クライアントデバイスのカメラからキャプチャされたエンコードされたビデオを含む。
【0029】
一態様では、方法は、アプリケーションに基づいて描画データを決定することと、描画データを描画データキャッシュに格納することとを含む。別の態様では、描画データは、アプリケーションデータストリームの少なくとも一部のシーングラフを含む。さらに別の態様では、描画データは、グラフィックオブジェクトと基準のグラフィックオブジェクトの属性間の差を表す値を含む。
【0030】
一態様では、アプリケーションは、ビデオ通話アプリケーション、プレゼンテーションアプリケーション、会議アプリケーション、またはストリーミングアプリケーションの少なくとも1つを含む。別の態様では、クライアントデバイスは、スマートフォンを含む。さらに別の態様では、クライアントデバイスはブラウザを含む。さらに別の態様では、アプリケーションデータストリームの少なくとも一部は、クライアントデバイス上で複数の解像度で表示可能である。
【0031】
いくつかの実施形態では、クラウドベースのアプリケーションストリーミングシステムは、少なくとも1つのクラウドベースのアプリケーションサーバと、1つまたは複数の入力デバイス及び1つまたは複数のディスプレイを含む少なくとも1つのクライアントデバイスと、1つまたは複数の処理要素と、1つまたは複数の処理要素に結合され、1つまたは複数のプロセッサを操作して、上述の方法のいずれかを実行するように構成された実行可能命令を格納するメモリとを含む。
【0032】
いくつかの実施形態では、クラウドベースのアプリケーションストリーミングのためのデバイスは、クラウドベースのサーバと通信可能に結合されたクライアントデバイスと、クライアントデバイスに通信可能に結合された1つまたは複数の入力デバイスと、1つまたは複数の処理要素と、1つまたは複数の処理要素に結合され、1つまたは複数のプロセッサを操作して、上述の方法のいずれかを実行するように構成された実行可能命令を格納するメモリとを含む。
【0033】
いくつかの実施形態において、上述される技法の特定の態様は、ソフトウェアを実行する処理システムの1つまたは複数のプロセッサによって実装され得る。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に、格納される、またはその他の方法により有形に具現化される、実行可能な命令の1つまたは複数のセットを含む。ソフトウェアは、1つまたは複数のプロセッサによって実行されるときに、1つまたは複数のプロセッサが上述される技法の1つまたは複数の態様を実行するように操作する、命令及び特定のデータを含むことが可能である。非一時的なコンピュータ可読記憶媒体は、例えば、磁気または光ディスク記憶デバイスと、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)または他の単一の不揮発性メモリデバイスもしくは複数の不揮発性メモリデバイスなどのソリッドステート記憶デバイスと、同様のものとを含むことが可能である。非一時的なコンピュータ可読記憶媒体上に格納される実行可能な命令は、1つまたは複数のプロセッサによって解釈されるか、または別の方法によって実行可能であるソースコード、アセンブリ言語コード、オブジェクトコード、または他の命令フォーマットであり得る。
【0034】
コンピュータ可読記憶媒体は、命令及び/またはデータをコンピュータシステムに提供するために使用中にコンピュータシステムによってアクセス可能である任意の記憶媒体、または記憶媒体の組み合わせを含み得る。そのような記憶媒体は、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)またはキャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)またはフラッシュメモリ)、または微小電気機械システム(MEMS)ベースの記憶媒体を含み得るが、これに限定されるものではない。コンピュータ可読記憶媒体は、コンピューティングシステムに組み込まれ(例えば、システムRAMまたはROM)、コンピューティングシステムに固定式に取り付けられ(例えば、磁気ハードドライブ)、コンピューティングシステムに取り外し可能に取り付けられ(例えば、光学ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、または有線もしくは無線ネットワークを介してコンピュータシステムに結合される(例えば、ネットワークアクセス可能ストレージ(NAS))場合がある。
【0035】
上述に加えて、一般的な説明の中で上述されるすべてのアクティビティまたは要素が必要とされるわけではないこと、また特定のアクティビティまたはデバイスの一部が必要とされない場合があること、または1つまたは複数のさらなるアクティビティが実行される場合があること、または1つまたは複数のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティを列挙する順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明されている。しかしながら、当業者は、下記の特許請求の範囲に記載されるように本開示の範囲から逸脱することなく、様々な変更及び変形を行うことが可能であることを理解する。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考えられるべきであり、すべてのこれらの変更形態は、本開示の範囲内に含まれることが意図される。
【0036】
利益、他の利点、及び問題に対する解決策を、具体的な実施形態に関して上述してきた。しかしながら、利益、利点、及び問題に対する解決策、ならびに任意の利益、利点、または解決策を生じさせ得る、またはより顕著にし得る、任意の特徴(複数可)は、任意のまたはすべての請求項の重大、必要、または不可欠な特徴として解釈されるべきではない。さらに、開示された発明の主題は、本明細書に教示の利益を有する当業者に明らかな、異なる均等な方式で修正及び実施し得るため、上記に開示される特定の実施形態は、例示に過ぎない。下記の特許請求の範囲に説明される以外の、本明細書に示される構成または設計の詳細への制限を意図しない。したがって、上記に開示される特定の実施形態を変更または修正し得て、すべてのこれらのような変形形態が開示された発明の主題の範囲内に考察されることは、明らかである。よって、本明細書に求められる保護は、下記の特許請求の範囲内に記載される通りである。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2024-09-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
クライアントデバイスとクラウドベースのアプリケーションサーバとの間でアプリケーションストリーミングを開始することと、
前記クラウドベースのアプリケーションサーバからアプリケーションデータストリームを受信したことに応えて、前記クライアントデバイスで、描画データに基づいて前記アプリケーションデータストリームの少なくとも一部を表示することとを含み、前記アプリケーションデータストリームが前記描画データを含み、前記方法はさらに、
入力データストリームを前記クラウドベースのアプリケーションサーバに送信することを含み、前記入力データストリームが、前記クライアントデバイスで受信された少なくとも1つの入力を表すデータを含む、方法。
【請求項2】
修正されたアプリケーションデータストリームを受信することと、
修正された描画データに基づいて、前記修正されたアプリケーションデータストリームの少なくとも一部を表示することと
をさらに含む、請求項1に記載の方法。
【請求項3】
1つまたは複数の入力を受信することと、
前記1つまたは複数の入力をエンコードすることとをさらに含み、前記入力データストリームが、前記エンコードされた1つまたは複数の入力を含む、請求項1に記載の方法。
【請求項4】
前記1つまたは複数の入力が、前記クライアントデバイスのカメラによってキャプチャされたビデオを含む、請求項3に記載の方法。
【請求項5】
1つまたは複数の出力デバイスを使用して前記アプリケーションデータストリームの少なくとも一部を出力すること
をさらに含む、請求項1に記載の方法。
【請求項6】
前記1つまたは複数の出力デバイスは、前記クライアントデバイスのスピーカを備える、請求項5に記載の方法。
【請求項7】
前記描画データは、前記アプリケーションデータストリームの少なくとも一部のシーングラフを含む、請求項1に記載の方法。
【請求項8】
前記アプリケーションデータストリームの少なくとも一部をデコードし、前記描画データに従って前記アプリケーションデータストリームの前記デコードされた少なくとも一部を表示すること
をさらに含む、請求項1に記載の方法。
【請求項9】
前記描画データが、グラフィックオブジェクトと基準のグラフィックオブジェクトとの属性間の差を表す値を含む、請求項1に記載の方法。
【請求項10】
方法であって、
クライアントデバイスとクラウドベースのアプリケーションサーバとの間でアプリケーションストリーミングを開始することと、
前記クラウドベースのアプリケーションサーバで実行しているアプリケーション及び前記アプリケーションと関連付けられた描画データに関連付けられたエンコードされたビデオフレームを含むアプリケーションデータストリームをクライアントデバイスに送信することと、
前記クライアントデバイスで受信された入力を表す入力データストリームを前記クライアントデバイスから受信したことに応えて、前記入力に基づいて前記アプリケーションを修正することと
を含む、方法。
【請求項11】
前記修正されたアプリケーションと関連付けられたエンコードされた修正されたビデオフレームと、前記修正されたアプリケーションと関連付けられた修正された描画データとを含む修正されたアプリケーションデータストリームを、前記クライアントデバイスに送信すること
をさらに含む、請求項10に記載の方法。
【請求項12】
前記入力データストリームの少なくとも一部をデコードして、前記入力データストリームの前記デコードされた少なくとも一部を入力として前記アプリケーションに提供すること
をさらに含む、請求項10に記載の方法。
【請求項13】
前記入力データストリームの前記少なくとも一部は、前記クライアントデバイスのカメラからキャプチャされたエンコードされたビデオを含む、請求項12に記載の方法。
【請求項14】
前記アプリケーションに基づいて前記描画データを決定することと、
前記描画データを描画データキャッシュに格納することと
をさらに含む、請求項10に記載の方法。
【請求項15】
前記描画データは、前記アプリケーションデータストリームの少なくとも一部のシーングラフを含む、請求項10に記載の方法。
【請求項16】
前記描画データは、グラフィックオブジェクトと基準のグラフィックオブジェクトの属性間の差を表す値を含む、請求項10に記載の方法。
【請求項17】
前記アプリケーションは、ビデオ通話アプリケーション、プレゼンテーションアプリケーション、会議アプリケーション、またはストリーミングアプリケーションの少なくとも1つを含む、請求項10に記載の方法。
【請求項18】
前記クライアントデバイスはスマートフォンを含む、請求項1に記載の方法。
【請求項19】
前記クライアントデバイスはブラウザを含む、請求項1に記載の方法。
【請求項20】
前記アプリケーションデータストリームの少なくとも一部は、前記クライアントデバイス上で複数の解像度で表示可能である、請求項1に記載の方法。
【請求項21】
クラウドベースのアプリケーションストリーミングシステムであって、
少なくとも1つのクラウドベースのアプリケーションサーバと、
1つまたは複数の入力デバイス及び1つまたは複数のディスプレイを含む少なくとも1つのクライアントデバイスと、
1つまたは複数の処理要素と、
前記1つまたは複数の処理要素に結合され、前記1つまたは複数の処理要素を操作して、請求項1~20のいずれかに記載の前記方法を実行するように構成された実行可能命令を格納するメモリと
を備える、システム。
【請求項22】
クラウドベースのアプリケーションストリーミングのためのデバイスであって、
クラウドベースのサーバと通信可能に結合されたクライアントデバイスと、
前記クライアントデバイスに通信可能に結合された1つまたは複数の入力デバイスと、
1つまたは複数の処理要素と、
前記1つまたは複数の処理要素に結合され、前記1つまたは複数の処理要素を操作して、請求項1~20のいずれかに記載の前記方法を実行するように構成された実行可能命令を格納するメモリと
を備える、デバイス。
【国際調査報告】