(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-09
(54)【発明の名称】グラフィックアーチファクトの除去のためのパラメータ化されたノイズ合成
(51)【国際特許分類】
H04N 21/234 20110101AFI20240202BHJP
H04N 21/235 20110101ALI20240202BHJP
H04N 19/154 20140101ALI20240202BHJP
H04N 19/85 20140101ALI20240202BHJP
【FI】
H04N21/234
H04N21/235
H04N19/154
H04N19/85
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023548606
(86)(22)【出願日】2021-02-12
(85)【翻訳文提出日】2023-10-06
(86)【国際出願番号】 US2021017816
(87)【国際公開番号】W WO2022173440
(87)【国際公開日】2022-08-18
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ホン,ダニー
(72)【発明者】
【氏名】シエ,リチャード
(72)【発明者】
【氏名】タハシルダー,ラマチャンドラ
【テーマコード(参考)】
5C159
5C164
【Fターム(参考)】
5C159TA01
5C159TB01
5C159TB04
5C159TC02
5C159TC28
5C159TD04
5C159UA02
5C159UA05
5C164FA22
5C164SA32S
5C164SB01P
5C164SB08P
(57)【要約】
エンコード前のノイズパラメータ化技術が、クライアントデバイスによるデコードおよび提示のためにビデオフレーム内のバンディング効果および他のグラフィックアーチファクトを軽減または排除する。1つまたは複数の入力ビデオフレームについて、入力ビデオフレームに関連付けられた量子化パラメータが識別される。ノイズ合成パラメータは、識別された量子化パラメータに基づいて決定され、入力ビデオフレームは送信のためにエンコードされる。エンコードされたビデオフレームは、クライアントデバイスによってデコードされた得られたビデオフレームに追加するための合成ノイズを生成する時に当該クライアントデバイスによって使用されるために、決定されたノイズ合成パラメータと共にクライアントデバイスに送信される。
【特許請求の範囲】
【請求項1】
1つまたは複数の入力ビデオフレームについて、
前記1つまたは複数の入力ビデオフレームのための量子化パラメータ(QP)を識別することと、
前記識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために前記1つまたは複数の入力ビデオフレームをエンコードすることと、
前記識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、
前記1つまたは複数の入力ビデオフレームを前記エンコードすることに基づいて、前記少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することとを含み、前記送信を開始することは、前記決定された1つまたは複数のノイズ合成パラメータを前記少なくとも1つのクライアントデバイスに提供することを含む、コンピュータで実行される方法。
【請求項2】
ゲームアプリケーションを介して前記1つまたは複数の入力ビデオフレームを生成することをさらに含む、請求項1に記載のコンピュータで実行される方法。
【請求項3】
前記1つまたは複数のノイズ合成パラメータは、前記識別されたQPの関数として決定される、請求項1または2に記載のコンピュータで実行される方法。
【請求項4】
前記エンコードすることの前に前記1つまたは複数の入力ビデオフレームを前処理することをさらに含む、請求項1から3のいずれかに記載のコンピュータで実行される方法。
【請求項5】
前記入力ビデオフレームを前記前処理することに基づいて1つまたは複数のビデオフレーム特性を識別することをさらに含み、前記1つまたは複数のノイズ合成パラメータを前記決定することは、部分的に前記1つまたは複数のビデオフレーム特性にさらに基づく、請求項4に記載のコンピュータで実行される方法。
【請求項6】
前記1つまたは複数の追加のビデオフレーム特性は、前記1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含む、請求項5に記載のコンピュータで実行される方法。
【請求項7】
送信のための前記1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って前記1つまたは複数の入力ビデオフレームをエンコードすることを含む、先行する請求項のいずれかに記載のコンピュータで実行される方法。
【請求項8】
前記決定されたノイズ合成パラメータを提供することは、前記1つまたは複数の送信されたビデオフレームに対して適用するためのノイズを合成することにおいて前記少なくとも1つのクライアントデバイスによって使用されるための前記決定されたノイズ合成パラメータを提供することを含む、先行する請求項のいずれかに記載のコンピュータで実行される方法。
【請求項9】
少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに結合され前記少なくとも1つのプロセッサによって実行されると、請求項1から7のいずれかに記載の方法を実行するように前記少なくとも1つのプロセッサを操作する1組の実行可能命令を記憶するメモリとを備える、システム。
【請求項10】
システムであって、
1つまたは複数の入力ビデオフレームについて、
前記1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP)を識別し、
前記識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために前記1つまたは複数の入力ビデオフレームをエンコードし、
前記識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定し、
前記1つまたは複数の入力ビデオフレームを前記エンコードすることに基づいて、前記少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始するための第1のプロセッサを備え、前記送信を開始することは、前記決定された1つまたは複数のノイズ合成パラメータを前記少なくとも1つのクライアントデバイスに提供することを含む、システム。
【請求項11】
前記第1のプロセッサはさらに、前記1つまたは複数の入力ビデオフレームを前処理するためのものである、請求項10に記載のシステム。
【請求項12】
前記第1のプロセッサはさらに、前記入力ビデオフレームを前記前処理することに基づいて1つまたは複数のビデオフレーム特性を識別するためのものであり、前記1つまたは複数のノイズ合成パラメータを決定することは、さらに、前記1つまたは複数のビデオフレーム特性に基づく、請求項10または11に記載のシステム。
【請求項13】
前記1つまたは複数のビデオフレーム特性は、前記1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含む、請求項13に記載のシステム。
【請求項14】
送信のための前記1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って前記1つまたは複数の入力ビデオフレームをエンコードすることを含む、請求項10から13のいずれかに記載のシステム。
【請求項15】
前記決定されたノイズ合成パラメータを提供することは、前記1つまたは複数の入力ビデオフレームに対して適用するためのノイズを合成するために前記クライアントデバイスのための前記決定されたノイズ合成パラメータを提供することを含む、請求項10から14のいずれかに記載のシステム。
【請求項16】
ゲームアプリケーションを介して前記1つまたは複数の入力ビデオフレームを生成するための第2のプロセッサをさらに備える、請求項10から15のいずれかに記載のシステム。
【請求項17】
前記第1のプロセッサが前記第2のプロセッサとは別のものである、請求項16に記載のシステム。
【請求項18】
ゲーミングアプリケーションの実行を介して1つまたは複数の入力ビデオフレームを生成することと、
前記1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP)を識別することと、
前記識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために前記1つまたは複数の入力ビデオフレームをエンコードすることと、
前記識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、
前記1つまたは複数の入力ビデオフレームを前記エンコードすることに基づいて前記少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することと、
を行うための1組の1つまたは複数のプロセッサと、
前記1組の1つまたは複数のプロセッサに結合され、前記1つまたは複数のエンコードされたビデオフレームおよび前記決定された1つまたは複数のノイズ合成パラメータを、少なくとも1つのコンピュータネットワークを介して、1つまたは複数のクライアントコンピューティングシステムに提供するように構成されたネットワークインターフェイスとを備える、サーバコンピューティングシステム。
【請求項19】
前記1組の1つまたは複数のプロセッサはさらに、前記1つまたは複数の入力ビデオフレームを前処理するように前記少なくとも1つのプロセッサを操作するためのものである、請求項18に記載のサーバコンピューティングシステム。
【請求項20】
1組の実行可能命令はさらに、前記入力ビデオフレームを前記前処理することに基づいて1つまたは複数のビデオフレーム特性を識別するように前記少なくとも1つのプロセッサを操作するためのものであり、前記1つまたは複数のノイズ合成パラメータを決定することはさらに、部分的に前記1つまたは複数のビデオフレーム特性に基づく、請求項19に記載のサーバコンピューティングシステム。
【請求項21】
前記1つまたは複数のビデオフレーム特性は、前記1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含む、請求項20に記載のサーバコンピューティングシステム。
【請求項22】
送信のための前記1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って前記1つまたは複数の入力ビデオフレームをエンコードすることを含む、請求項18に記載のサーバコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
「クラウドゲーミング」または「ゲームストリーミング」は、通常、1つまたは複数のリモートサーバ上でビデオゲームアプリケーションを実行することと、得られたビデオ・オーディオコンテンツを、1つまたは複数のネットワーク上で使用者のクライアントデバイスに送信されるビデオストリームおよびオーディオストリームとして、それぞれ提供することとを伴う。グラフィックレンダリング、ビデオキャプチャ、ビデオエンコード、およびビデオストリーミングの関連タスクのいくつかまたはすべての態様を実施するために少なくとも1つのリモートサーバ(つまり、「クラウド」)を利用することにより、使用者はハイエンドのハードウェアクライアントデバイスを使用することなく負荷の高いゲームアプリケーション(performance-taxing game application)を起動することができる。代わりに、使用者は、通常、ディスプレイスクリーン、ビデオストリームを行うことができるデバイス、および、1つまたは複数のユーザ入力デバイスのみを必要とすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
しかし、クラウドゲーミングのシナリオで通常利用されるビデオエンコードプロセスを理由として、提供される出力ビデオストリーム内で、ゲームコンテンツの暗いエリアまたはきめの粗いエリア等のバンディング効果または他のグラフィックアーチファクト(graphical artifact)が可視となる可能性がある。これらのグラフィックアーチファクトは使用者の気をそらす可能性があり、クラウドゲーミングプラットフォームを使用することにおいて阻害要因として動作する可能性がある。
【課題を解決するための手段】
【0003】
実施形態の概要
本明細書で説明される実施形態では、バンディング効果および他のグラフィックアーチファクトを軽減または排除するための、クラウドゲーミングまたは他のビデオストリーミングアプリケーションで有用となり得るような効率的な実時間のノイズパラメータ化技術が提供される。1つまたは複数の入力ビデオフレームについて、入力ビデオフレームに関連付けられることになる量子化パラメータが識別される。識別された量子化パラメータに基づいてノイズ合成パラメータが決定され、入力ビデオフレームが送信のためにエンコードされる。クライアントデバイスによってデコードされた得られたビデオフレームに追加するための合成ノイズを生成する時に当該クライアントデバイスによって使用されるために、決定されたノイズ合成パラメータと共に、エンコードされたビデオフレームがクライアントデバイスに送信される。特定の実施形態では、ノイズ合成パラメータの決定はさらに、1つまたは複数の入力ビデオフレームを前処理することの一部として識別された1つまたは複数のビデオフレーム特性に基づくことができる。
【0004】
例示の一実施形態では、方法は、1つまたは複数の入力ビデオフレームについて、1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP:quantization parameter)を識別することと、識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために1つまたは複数の入力ビデオフレームをエンコードすることと、識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、1つまたは複数の入力ビデオフレームをエンコードすることに基づいて、少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することとを含むことができる。送信を開始することは、決定された1つまたは複数のノイズ合成パラメータを少なくとも1つのクライアントデバイスに提供することを含み、その結果、1つまたは複数のエンコードされたビデオフレームを表現する量子化信号に加えて、1つまたは複数のノイズ合成パラメータが少なくとも1つのクライアントデバイスに送信される。
【0005】
本方法は、ゲームアプリケーションを介して1つまたは複数の入力ビデオフレームを生成することをさらに含むことができる。これは、1つまたは複数の入力ビデオフレームが合成ビデオコンテンツに関連することを含むことができる(カメラデバイスによって捕捉された現実世界画像から得られるビデオコンテンツとは異なる)。
【0006】
一般に、1つまたは複数のノイズ合成パラメータは、識別されたQPの関数として決定され得る。例えば、エンコードされることになるビデオフレームの少なくとも1つのピクセルのために識別されたQPの特定の値に応じて、または、識別されたQPが存在する値の範囲に応じて、少なくとも1つのピクセルに関連付けられたノイズ合成パラメータを改変(例えば、スケーリング)するかまたは計算するためにマッピングファンクションが使用され得る。
【0007】
本方法は、エンコードすることの前に1つまたは複数の入力ビデオフレームを前処理することをさらに含むことができる。この方法は、入力ビデオフレームを前処理することに基づいて1つまたは複数のビデオフレーム特性を識別することをさらになお含むことができる。1つまたは複数のノイズ合成パラメータを決定することは、部分的に、1つまたは複数のビデオフレーム特性にさらに基づくことができる。1つまたは複数の追加のビデオフレーム特性は、1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含むことができる。
【0008】
送信のための1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格で定義されるフィルム粒子合成プロセスを使用して1つまたは複数の入力ビデオフレームをエンコードすることを含めて、AV1ビデオコーディング規格に従って1つまたは複数の入力ビデオフレームをエンコードすることを含むことができる。特定の実施形態に関して、特に、対応する規格のバージョンがフィルム粒子合成プロセスを定義する限りにおいて、本開示は、2019年1月18日に公開されたAV1ビデオコーディング規格のバージョン1.0.0および任意の後続のバージョンに従って1つまたは複数の入力ビデオフレームをエンコードすることに特に関連することができる。
【0009】
送信のための1つまたは複数の入力ビデオフレームをエンコードすることはまた、高度ビデオコーディング(AVC:Advanced Video Coding)、あるいは、「H.264」規格(2003年5月30日に発表されたバージョン1または任意の後続のバージョンなど)、VP9(2013年6月17日に発表)、および高効率ビデオコーディング(HEVC:High Efficiency Video Coding)(2013年4月13日に発表されたバージョン1または任意の後続のバージョンなど)に従って1つまたは複数の入力ビデオフレームをエンコードすることを含むことができる。
【0010】
決定されたノイズ合成パラメータを提供することは、1つまたは複数の送信されたビデオフレームに対して適用されるためのノイズを合成することにおいて少なくとも1つのクライアントデバイスによって使用されるための決定されたノイズ合成パラメータを提供することを含むことができる。
【0011】
別の例示の実施形態では、システムは、1つまたは複数の入力ビデオフレームのために、1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP)を識別することと、識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために1つまたは複数の入力ビデオフレームをエンコードすることと、識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、1つまたは複数の入力ビデオフレームをエンコードすることに基づいて、少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することとを行うための第1のプロセッサを備えることができる。送信を開始することは、決定された1つまたは複数のノイズ合成パラメータを少なくとも1つのクライアントデバイスに提供することを含むことができる。
【0012】
第1のプロセッサはさらに、1つまたは複数の入力ビデオフレームを前処理するためのものであってよい。第1のプロセッサはさらに、入力ビデオフレームの前処理に基づいて1つまたは複数のビデオフレーム特性を識別するためのものであってよい。1つまたは複数のノイズ合成パラメータを決定することはさらに、1つまたは複数のビデオフレーム特性に基づくことができる。1つまたは複数のビデオフレーム特性は、1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含むことができる。
【0013】
送信のための1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って1つまたは複数の入力ビデオフレームをエンコードすることを含むことができる。
【0014】
決定されたノイズ合成パラメータを提供することは、1つまたは複数の入力ビデオフレームに対して適用されるためのノイズを合成するためにクライアントデバイスのための決定されたノイズ合成パラメータを提供することを含むことができる。
【0015】
システムは、ゲームアプリケーションを介して1つまたは複数の入力ビデオフレームを生成するための第2のプロセッサをさらに備えることができる。第1のプロセッサが第2のプロセッサとは別のものであり得る。
【0016】
別の例示の実施形態では、非一時的コンピュータ可読媒体が1組の実行可能命令を具現化する。1組の実行可能命令は、1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP)を識別することと、識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために1つまたは複数の入力ビデオフレームをエンコードすることと、識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、1つまたは複数の入力ビデオフレームをエンコードすることに基づいて、少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することとを行うように少なくとも1つのプロセッサを操作するためのものである。送信を開始することは、決定された1つまたは複数のノイズ合成パラメータを少なくとも1つのクライアントデバイスに提供することを含むことができる。
【0017】
1組の実行可能命令はさらに、1つまたは複数の入力ビデオフレームを前処理するように少なくとも1つのプロセッサを操作するためのものであってよい。1組の実行可能命令はさらに、入力ビデオフレームを前処理することに基づいて1つまたは複数のビデオフレーム特性を識別するように少なくとも1つのプロセッサを操作するためのものであってよい。1つまたは複数のノイズ合成パラメータを決定することはさらに、1つまたは複数のビデオフレーム特性に部分的に基づくことができる。1つまたは複数のビデオフレーム特性は、1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含むことができる。
【0018】
送信のための1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って1つまたは複数の入力ビデオフレームをエンコードすることを含むことができる。
【0019】
決定されたノイズ合成パラメータを提供することは、1つまたは複数の入力ビデオフレームに対して適用するためのノイズを合成するためにクライアントデバイスのための決定されたノイズ合成パラメータを提供することを含むことができる。
【0020】
1組の実行可能命令はさらに、ゲームアプリケーションを介して1つまたは複数の入力ビデオフレームを生成するように少なくとも1つのプロセッサを操作するためのものであってよい。
【0021】
添付図面を参照することにより、本開示がより良好に理解され、その多数の特徴および利点が当業者には明らかとなる。異なる図面で同じ参照符号を使用することは同様のまたは等しいアイテムを示すものである。
【図面の簡単な説明】
【0022】
【
図1】いくつかの実施形態による、分散的ピアツーピアプレイヤ入力およびステートメッセージングを介してマルチプレイヤゲーミングを支援するクラウドゲーミングシステムを示すブロック図である。
【
図2】ゲームアプリケーション出力ビデオストリームをエンコードするために使用される典型的なハードウェアアクセラレーションエンコーダによって処理されたビデオフレームの画像を示す図である。
【
図3】ノイズ合成をサポートするビデオコーディング規格に関連付けられたオペレーションの例を示す概略ブロック図である。
【
図4】ノイズ合成可能なビデオコーディング規格(synthetic noise-capable video coding standard)を用いて生成されたノイズパラメータの使用を描いている、1つまたは複数の実施形態によるオペレーションの例を示す概略ブロック図である。
【
図5】1つまたは複数の実施形態による特定の合成ノイズパターンを説明するための自己回帰モデルの例を示す図である。
【
図6】1つまたは複数の実施形態による、区分的線形関数f(x)としてモデル化された合成ノイズの相対強度を示す図である。
【
図7】ノイズ合成可能なビデオコーディング規格を用いて動的に生成されたノイズパラメータの使用を描いている、1つまたは複数の実施形態によるオペレーションの例を示す概略ブロック図である。
【
図8】ビデオフレーム前処理特性に基づいて生成されたノイズパラメータの修正を描いている、1つまたは複数の実施形態によるオペレーションの例を示す概略ブロック図である。
【
図9】1つまたは複数の実施形態による、プロセッサベースのパラメータ化ノイズ合成システム(processor-based parameterized noise synthesis system)のオペレーションルーチン800の概観を示すブロック図である。
【
図10】1つまたは複数の実施形態を実装するのに適するコンピューティングシステムの例を示すコンポーネントレベルのブロック図である。
【発明を実施するための形態】
【0023】
詳細な説明
図1は、少なくとも1つの実施形態によるシングルプレイヤおよび/またはマルチプレイヤ(大規模マルチプレイヤを含む)のゲーミングを支援するクラウドゲーミングシステム100を示すブロック図である。クラウドゲーミングシステム100は、インターネット等の1つまたは複数のネットワークを介して複数のクライアントデバイス106の対応するサブセットに結合された複数のサーバ104を有するクラウドプラットフォーム102を含む。サーバ104は、図の実施形態では高帯域、低レイテンシのサーバ間メッセージングバス108を介して相互接続される。サーバ104は、通常、物理的近接を介しての送信レイテンシを低減するために地理的エリアの全体にわたって1つまたは複数のデータセンターに分布する。
図1の単純化された例では、クラウドプラットフォーム102は、9つのクライアントデバイス106-1から106-9をサポートする3つのサーバ104-1から104-3を含み、クライアントデバイス106-1から106-4は、サーバ104-1によってサービスが提供され、クライアントデバイス106-5および106-6は、サーバ104-2によってサービスが提供され、クライアントデバイス106-7から106-8は、サーバ104-3によってサービスが提供される。典型的な現実世界の実装では、サーバ104の数およびクライアントデバイス106の数は、典型的には大幅に高くなることが認識されよう。
【0024】
図の実施形態では、各サーバ104は、対応するプレイヤのためのゲームアプリケーションの1つまたは複数のシミュレーションインスタンスの実行を支援する、対応するゲームプラットフォームインスタンスを実行するように動作し、これらのインスタンスの各々は本明細書では「プレイヤシミュレーションインスタンス」と称される。つまり、ゲームプラットフォームインスタンスは、あたかもパーソナルコンピュータ(PC:personal computer)またはゲームコンソール等のローカルゲーミングデバイス上でゲーミングアプリケーションがプレイされているかのように、対応するプレイヤのためのゲーミングアプリケーションの実行をシミュレートするように、通信/ネットワーク管理、リソース管理、メディアレンダリングエンコード等の、種々のリソースを提供する。したがって、各プレイヤシミュレーションインスタンスは、対応するプレイヤのためのゲーミングアプリケーションの実行またはシミュレーションを表す。説明のために、プレイヤインスタンスは仮想ゲームコンソールであるとみなされ得、したがってこのようなインスタンスは、ネットワーキング、レンダリング、オーディオおよびビデオエンコード、ストリーミング、ならびに、シングルプレイヤおよびマルチプレイヤのゲーミングアプリケーションの両方のためのユーザ入力の受信を含めた単一のゲームランタイムを可能にするコンテナである。
【0025】
各クライアントデバイス106は、少なくとも1人のプレイヤのための1つまたは複数の入力/出力デバイスの操作を介してプレイヤ入力を受信するために、さらに、少なくとも1人のプレイヤのためのゲームプレイのそれぞれビジュアルおよびオーディアルコンテンツを表現するビデオおよびオートコンテンツを提供するために利用されるハードウェアおよびソフトウェアのリソースを表す。クライアントデバイス106の例は、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、コンピューティング対応携帯電話(compute-enabled cellular phone)(すなわち、「スマートフォン」)、コンピューティング対応テレビ(compute-enabled television)(すなわち、「スマートTV」)などを含む。クライアントデバイス106-1を参照して示されるように、各クライアントデバイス106は、ディスプレイ110、少なくとも1つのゲームコントローラ112、クライアントデバイス106を対応するサーバ104に接続するネットワークに結合するための1つまたは複数のネットワークインターフェイス、プロセッサ、メモリ、マスストレージ、スピーカ、および、当技術分野でよく知られているように入ってくるメディアストリームを処理するための他のコンピューティングリソースを含む。
【0026】
クライアントデバイス106は、対応するサーバ104において、対応するプレイヤシミュレーションインスタンスの実行から生成されたビデオおよびオーディオストリーム(図示しない)を受信し、送信されたビデオストリームのビデオフレームをデコードして表示するために、および、対応するオーディオコンテンツをデコードして出力するために、その計算リソース、ストレージリソース、およびディスプレイリソースを利用する。いくつかの実施形態では、サーバ104で実行されるゲームアプリケーションからのビデオおよびオーディオコンテンツの処理および表示は、クライアントデバイス106(および
図1ではグラフィカルユーザインターフェイス(GUI:graphical user interface)114によって示される)で実行されるソフトウェアアプリケーションによって支援される。このソフトウェアアプリケーションは、例えば、クラウドゲーミング専用ソフトウェアアプリケーションを含むことができる。他の実施形態では、より一般的なソフトウェアアプリケーションが利用され、ビデオストリームおよびオーディオストリームは、このソフトウェアアプリケーションに適合するようにサーバ104によってフォーマットされて送信される。例えば、一実施形態では、クライアントデバイス106は、ビデオによって表現されるビデオコンテンツの表示および関連付けられたオーディオストリームによって表現されるオーディオコンテンツの出力のためにハイパーテキストマークアップ言語(HTML:hypertext markup language)フォーマットを利用するウェブブラウザを利用し、サーバ104は、ウェブブラウザを介して、あるフォーマットでビデオストリームを提供し、表示のためにHTMLフォーマットに適合するフォーマットでオーディオストリームを提供する。
【0027】
双方向であることにより、プレイヤシミュレーションインスタンスを実行することは、プレイヤとのゲーミングセッションのゲームプレイ経験を少なくとも部分的に管理するために、プレイヤ入力を利用する。このプレイヤ入力が少なくとも部分的にゲームコントローラ112を通して受信され、ゲームコントローラ112は、ゲームパッド、ジョイスティック、キーボード、マウス、タッチパッド、トラックボール、ハンドルまたは操縦桿、ペダル、ダンスパッド、模擬銃、光学モーショントラッカ、慣性センサ、光源/レーザ源および検出器、等の、任意の多様なI/Оデバイスまたはその組合せのいずれかを備える。いくつかの実施形態では、ゲームコントローラ112がクライアントデバイス106に対してテザリングされ、その結果、プレイヤによるゲームコントローラ112の操作によって生成されたプレイヤ入力データは、クライアントデバイス106を介して、対応するサーバ104に提供される。説明のために、ゲームコントローラ112がクライアントデバイス106に有線接続または無線接続され得、その結果、ゲームコントローラ112によって出力されるすべてのデータは、クライアントデバイス106と、クライアントデバイス106をサーバ104に接続するネットワークとの間で、ネットワークインターフェイスを経由する。他の実施形態では、ゲームコントローラ112は、ネットワークを介する、対応するサーバ104との別個の独立したネットワーク接続を有する。例えば、クラウドゲーミングシステム100は、クライアントデバイス106およびゲームコントローラ112に対してローカルの、インターネットに接続された無線ローカルエリアネットワーク(WLAN)アクセスポイント(図示しない)を採用することができ、クライアントデバイス106およびゲームコントローラ112の各々は、WLANアクセスポイントを介してインターネット上で対応するサーバ104と独立して通信を行うための、WLANアクセスポイントとの別個の無線接続を確立する。
【0028】
クラウドゲーミングシステム100の全体の概観として、サーバ104は、集中マルチプレイヤゲーミングサーバを必要とすることなく、ならびに、したがって、高価なサーバファーム、サーバオペレーションチーム、および、従来の集中的技術を介する大規模マルチプレイヤゲームをサポートするのに通常伴う他の経費の必要性を排除して、各ゲームプラットフォームインスタンスによってサポートされる個別のプレイヤシミュレーションインスタンスの間でのゲームプレイの調整を可能にするピアツーピアインフラストラクチャの使用を介して大規模マルチプレイヤゲームを実装するために、高帯域および低レイテンシのサーバ間メッセージングバス108を活用する。
【0029】
低入力レイテンシ(使用者によるクライアント入力とゲームからの応答サーバ出力の受信との間のディレイ)を維持することは、クラウドゲーミングアプリケーションにとって重要であることを理由として、このようなアプリケーションには比較的高い帯域幅の要求が付随する。これらの帯域幅の要求を満たすため、および低レイテンシのビデオストリームを維持するために、ハードウェアアクセラレーションエンコーダ(例えば、ハードウェアアクセラレーションAV1、高度ビデオコーディング(AVC)、または「H.264」、VP9、および高効率ビデオコーディング(HEVC)のエンコーダ)は、ゲームプレイ中に高品質グラフィックを使用者に提供することを保証するために種々のクラウドゲーミングプラットフォームに配備されている。しかし、ビデオストリームの暗いエリアまたはきめの粗いエリア等のバンディング効果がしばしば可視となる。これらのおよび他のグラフィックアーチファクトは使用者の気をそらす可能性があり、このようなクラウドゲーミングプラットフォームを使用することにおいて阻害要因として動作する可能性がある。
【0030】
図2は、ゲームアプリケーション出力をエンコードするために使用される一般的なハードウェアアクセラレーションエンコーダによってエンコードされる画像の例示の単一のビデオフレーム200を描いている。ビデオフレームは、ビデオフレームの知覚品質を低下させる複数の明らかなバンディング効果を含む複数のエリア205(
図2の説明図では分かりやすいように単に例示的にこのようなエリアを3つ示す)を含む。
【0031】
このようなバンディング効果は、例えば、ゲームアプリケーションを実行するリモートサーバが空の大きいエリアにわたってわずかにのみ変化する(RGBの色名)青色等の、円滑な階調度のカラーシェードをレンダリングすることを試みる場合に、生じる可能性がある。エンコーダは、通常、効率的な圧縮のために量子化を利用し、これはピクセルの小さい変化の不正確な表現に繋がり得る。
【0032】
高品質ビデオを別のクライアントにストリームすることを目的としてこのようなバンディング効果を実時間で排除することは、より多くのゲームプレイヤを魅了するために、任意のクラウドゲーミングプラットフォームが解決しなければならない難しい課題である。エンコーダは、圧縮中により小さい量子化パラメータ(QP)を使用することにより、生じる任意のバンディング効果を低減することを試みることができるが、このようなアプローチは、通常、双方向クラウドベースのゲーミングアプリケーションにはあまり適さない高いビットレートにつながる。したがって、このようなノイズ合成可能なコーディング規格に準拠するいかなるデコーダも、ビデオフレームのエンコードされる送信ビットレートを増大させることなく、送信されるビデオフレームのための所望されるディザリング効果を作るためにパラメータ化されたノイズを強制的に追加させられる可能性がある。本明細書で使用される場合の、ビデオフレーム、ビデオおよびオーディオコンテンツまたは他のコンテンツ、パラメータ、構成設定(configuration setting)等の、任意の「送信」は、このような要素を表現するおよび/または示す任意のデータまたは情報の送信を表すことができることが認識されよう。
【0033】
AV1コーディング規格等の特定のビデオコーディング規格は、フィルム粒子ノイズをパラメータ化することにより帯域幅の利益を提供するためにノイズ合成能力を提供する。フィルム粒子ノイズは多くのビデオコンテンツに広がり得(意図的および非意図的の両方で)、通常は圧縮することが困難である。一般に、このようなアプローチは、ビデオコンテンツからノイズを抽出して次いでノイズフリーのコンテンツをエンコードすることを伴う。抽出されたノイズがパラメータ化され得、クライアント側のデコーダが簡易パラメータからノイズを再生成することができる。これは、ノイズの多いコンテンツをエンコードするようなアプローチと比較して有意なビットレートの節約につながる。
【0034】
図3はフィルム粒子(ノイズ)合成をサポートするコーディング規格の特定のオペレーションを示す概略ブロック図であり、ここでは、ノイズの多いビデオフレーム305は、コンテンツの芸術的誠実さ(artistic integrity)を壊すことなく(つまり、ノイズを維持して)エンコードを行うことが容易になる。ノイズレスのビデオフレーム320を作るために、ビデオフレーム305内のノイズがブロック310で抽出され、抽出されたノイズがブロック315で分析されてパラメータ化される。ノイズレスのビデオフレームがブロック325でエンコードされる。元のノイズを表現するパラメータは、エンコードされたビットストリーム330と共に送信され、ブロック335でデコードされる。デコード中またはデコードの後で、デコーダは、デコードされたビデオフレーム340の一部分として元のノイズを人工的に再生成するために、生成されたノイズパラメータを使用する。
【0035】
ゲーミングアプリケーションが通常は合成ビデオコンテンツを生成するものだとすると、このようなビデオコンテンツは通常はフィルム粒子ノイズを有しない。しかし、本明細書で提供される技術は、非集中的な演算により、帯域幅を維持する手法でクライアント側のディザリングを作り出すために、生成されたノイズパラメータを利用することによりバンディング効果および他のグラフィックアーチファクトを軽減するかまたはさらには排除するために使用され得る。
【0036】
本明細書で説明されるシステムおよび技術は、概して、クラウドゲーミングまたは他のビデオストリーミングアプリケーションのために十分であるビットレートでビデオコンテンツをストリームすることを可能にしながら、バンディング効果および他のグラフィックアーチファクトを軽減または排除するのに使用するための適切な合成ノイズパラメータを決定して生成するための効率的な実時間プレエンコードスキームの実施形態を対象とする。特定の実施形態では、説明されるシステムおよび技術は、1つまたは複数のGPUシェーダーモジュールを介するなどして、グラフィックプロセッサ(「GPU」)を使用して実装され得る。
【0037】
本明細書では、クラウドゲーミングおよびゲームコンテンツに関連する特定の例を利用することができる、ビデオコンテンツをエンコードする、デコードする、および送信することに関連して、システム、技術、およびスキーマが考察され、これらは、画像およびビデオをエンコードする、デコードする、および送信すること等の、追加の非ゲーミングの文脈に適用され得ることが認識されよう。本明細書で提供される例は、このようなコンテンツに関連する特定の帯域幅およびネットワークレイテンシの問題を原因とするゲーミングコンテンツのエンコードおよび送信を伴うシナリオを表すことができ、説明される技術をこのシナリオのみに限定することを示すものとして解釈されるべきではない。
【0038】
図4は、ノイズ合成可能なビデオコーディング規格と併せて、生成されたノイズパラメータの使用を描いている、1つまたは複数の実施形態によるオペレーションを示す概略ブロック図である。種々の実施形態においてゲーミングアプリケーションによって生成され得、したがって有意なフィルム粒子または他のノイズを含まないビデオフレーム405は、ブロック425でエンコードされる。1つまたは複数のノイズパラメータ415が生成され、次いでエンコードされたビットストリーム430と共に(または、別個に)クライアントデバイス(図示しない)に送信され、ブロック435で、送信されたビットストリームをデコードする。デコード中またはデコードの後で、クライアント側のデコーダは、ディザリングされたビデオフレーム440を作り出して提示するために、合成ノイズを生成して、デコーディングされたビットストリームに追加するために、1つまたは複数の生成されたノイズバラメータ415を使用する。これらおよび他の実施形態では、合成ノイズを、デコーディングされたビットストリームに追加することによって提供されるビデオフレームのディザリングは、エンコードプロセスにより生じるバンディング効果および他のグラフィックアーチファクトの問題を軽減するかまたはさらには排除する。
【0039】
ノイズパラメータ415の生成は、「自然」に見える、つまりバンディング効果または他のグラフィックアーチファクトを有することなく、このようなビデオフレームに追加される得られた合成ノイズが使用者にとって過度に目立つものとならない、ディザリングされたビデオフレームを作り出すことを可能にできることが認識されよう。例えば、任意の無作為のホワイトノイズを単純に追加することでは自然さの低い見た目である、きめの粗い画像が得られる可能性がある。
【0040】
図5は、合成ノイズパターンを説明するための自己回帰モデル501の例を示す。図の実施形態では、ピクセル位置505にあるノイズ(N(X)として示される)は、ガウスノイズおよびa0~a23の各々の位置で追加されるノイズの加重和として得られ、以下のようになる。
【0041】
N(X)=C(a0)*N(a0)+...+C(a23)*N(a23)+G
ここで、C(a#)は、位置a#でノイズN(a#)に適用されるスケーリング係数であり、Gが単位分散ガウスノイズである。すべての位置a#でC=0を有することは単位分散ガウスノイズのみを使用するという結果になり、これが一般には悪い結果(上で述べたような、自然さの低い見た目である、きめの粗い画像)をもたらすことが認識されよう。非ゼロのスケーリング係数C(a#)を用いてこのモデルを利用することにより、より自然な見た目のノイズパターンが生成され得る。
【0042】
図6の実施形態では、合成ノイズの相対強度が区分的線形関数f(x)としてモデル化される。例えば、ピクセルコンポーネント値x(ここでは、8ビット入力の場合、x=0..255)において、追加されることになるノイズがf(x)*N()であり、ここでは、N()が
図4に関連して上で考察したように得られるノイズである。
図6は特定の実施形態でf(x)がどのように説明され得るかの例を示しており、区分的線形関数f(x)の傾きが変化するところの点のリストを用いている。
【0043】
特定の実施形態では、エンコーディング後の合成ノイズ生成と共に使用されるための効果的なエンコーディング前のパラメータの決定が1回実施され得、その結果、すべてのその後の入力ビデオフレームを処理して送信するのに同じ予め生成されたノイズパターンが使用され得るようになる。他の実施形態では、効果的なパラメータの決定は、入力ビデオフレーム自体の1つまたは複数の特性の変化に反応するなどして、動的に実時間で実施され得る。例えば、特定の実施形態では、各入力ビデオフレームは、入力ビデオフレームをエンコードするための量子化パラメータ(QP)を決定するために分析され得、合成ノイズを生成するためのパラメータは、少なくとも部分的にこのQPに基づいて決定され得る。
【0044】
図7は、ノイズ合成可能なビデオコーディング規格を用いて動的に生成されたノイズパラメータの使用を描いている、1つまたは複数の実施形態によるオペレーションの例を示す概略ブロック図である。図の実施形態では、ビデオフレーム705がゲーミングアプリケーションによって生成され、したがって、有意なフィルム粒子または他のノイズを有しない。入力ビデオフレーム705がブロック725でエンコードされる。しかし、
図4の実施形態と対照的に、1つまたは複数の生成されたノイズパラメータは、エンコードプロセス自体のパラメータに基づいて修正され、特に、入力ビデオフレーム705をエンコードすることに関連付けられたQPに基づいて修正される。一例として、より低いQPを使用してエンコードされる入力ビデオフレームはより目立たないバンディング効果または他のグラフィックアーチファクトを受けることができ、これは、より低い程度の合成ノイズでこれらのグラフィックアーチファクトを軽減または排除するのに十分であり得ることを示す。代わりに、より高いQPを使用してエンコードされる入力ビデオフレームはより目立つバンディング効果または他のグラフィックアーチファクトを受ける可能性があり、このような効果を軽減または排除するためにより高い程度の合成ノイズが必要となる可能性があることを示す。したがって、特定の実施形態では、ノイズパラメータモディファイア710は、エンコード725に関連付けられた量子化パラメータ712の関数として決定され得る。
【0045】
次いで、ノイズパラメータモディファイア710を介して修正された1つまたは複数の生成されたノイズパラメータ715は、エンコードされたビットストリーム730と共に(または、別個に)、クライアントデバイスに送信され、ブロック735でクライアントデバイスによってデコードされる。デコード中またはデコードの後で、クライアント側のデコーダは、ディザリングされたビデオフレーム740を作り出して提供するために、提供された1組の1つまたは複数の修正されたノイズパラメータに基づいて、合成ノイズを生成してデコーディングされたビットストリームに追加するために、1つまたは複数のノイズパラメータを使用する。
図7の実施形態では1つまたは複数の生成されたノイズパラメータ715の修正が説明を容易にするために別個に描かれるが、特定の実施形態では、1つまたは複数のノイズパラメータの「修正」がこの1つまたは複数のノイズパラメータの生成の一部として実施されてもよく、その結果、既に生成されたノイズパラメータに対して別個の修正オペレーションが実施されなくなることが認識されよう。
【0046】
特定の実施形態では、エンコードする前に入力ビデオフレームの前処理が特定の特性を利用または識別する場合などにおいて、1つまたは複数の合成ノイズパラメータは、入力ビデオフレームの前処理にさらに基づいて、生成および/または修正され得る。例えば、1つまたは複数の入力ビデオフレームの分散および/または他の特性は、これらの入力ビデオフレームの前処理の一部として、識別され得る。
【0047】
図8は、ノイズ合成可能なビデオコーディング規格を用いて動的に生成されたノイズパラメータの使用を描いている、1つまたは複数の実施形態によるオペレーションの例を示す概略ブロック図である。
図4および
図7の実施形態と同様に、図の実施形態では、入力ビデオフレーム(この例では、入力ビデオフレーム805)がゲーミングアプリケーションによって生成され、したがって有意なフィルム粒子または他のノイズを含まない。入力ビデオフレーム805がブロック807で前処理され、この間、入力ビデオフレームの1つまたは複数の特性が識別される。前処理されたビデオフレーム820がブロック825でエンコードされる。加えて、1組の1つまたは複数の合成ノイズパラメータがブロック815で生成され、(a)前処理されたビデオフレーム820のエンコード825に関連付けられたQP、および(b)前処理807中に識別された入力ビデオフレーム805の1つまたは複数の特性のうちの少なくとも1つの特性に基づいて決定されたノイズパラメータモディファイア810を使用して修正される。非限定の一例として、ノイズパラメータモディファイア810はさらに、前処理された各ビデオフレーム820の分散に部分的に基づいてよい。
図7の実施形態に関連して述べたように、
図8の実施形態では、1つまたは複数の生成されたノイズパラメータ815の修正が説明を容易にするために別個に描かれるが、特定の実施形態では、この1組の1つまたは複数のノイズパラメータの修正がこの1組の1つまたは複数のノイズパラメータの生成の一部として実施されてもよく、その結果、別個の修正オペレーションが実施されなくなることが認識されよう。
【0048】
次いで、ノイズパラメータモディファイア810を介して修正された生成されたノイズパラメータ815は、エンコードされたビットストリーム830と共に(または別個に)、クライアントデバイスに送信され、ブロック835でクライアントデバイス(図示しない)によってデコードされる。デコード中またはデコードの後で、クライアント側のデコーダは、ディザリングされたビデオフレーム840を作り出して提示するために、提供された1組の1つまたは複数の修正されたノイズパラメータに基づいて、合成ノイズを生成してデコードされたビットストリームに追加するために、1つまたは複数のノイズパラメータを使用する。
【0049】
図9は、1つまたは複数の実施形態による、プロセッサベースのパラメータ化ノイズ合成システム(
図1のサーバ104および/または
図10のコンピューティングシステム1000のいずれかの一部分を備えることができるものなど)のオペレーションルーチン900の概観を示すブロック図である。特定の実施形態では、ビデオ画像フレームは、クラウドゲーミングプラットフォームの1つまたは複数のサーバによって実行されるゲームアプリケーションからの順次的な出力の一部として生成される場合などにおいて、オペレーションルーチン900は、エンコードおよび送信のために1つまたは複数のビデオ画像フレームを用意するために実時間で実施され得る(例えば、より大きいビデオストリームの各ビデオフレームが生成されるとき)。
【0050】
ルーチンは、ブロック905で開始され、ここでは、プロセッサベースのパラメータ化ノイズ合成システムが1つまたは複数のビデオフレームを生成する。種々の実施形態では、1つまたは複数のフレームがシングルコアまたはマルチコアの中央演算処理装置(CPU:central processing unit)等の第1のプロセッサによって生成され得、1つまたは複数のクライアントデバイスに送信するために入力ビデオフレームをエンコードする前に、ノイズパラメータ生成および/または他のオペレーションのための別個の第2のプロセッサ(シングルコアまたはマルチコアのGPUなど)に提供される。ルーチンは、ブロック910に進む。
【0051】
ブロック910で、プロセッサベースのパラメータ化ノイズ合成システムは、1つまたは複数の定められた基準、1つまたは複数の使用者の好み、または明示的な要求に対しての応答に基づくなどして、1つまたは複数の入力ビデオフレームをエンコードの前に前処理すべきかどうかを決定する。前処理すべき場合、ルーチンは、ブロック915に進み、そうではない場合、ルーチンは、ブロック925に進む。
【0052】
ブロック915で、プロセッサベースのパラメータ化ノイズ合成システムは、1つまたは複数の入力ビデオフレームに対して1つまたは複数の前処理オペレーションを実施する。次いで、ルーチンは、ブロック920に進み、ここでは、プロセッサベースのパラメータ化ノイズ合成システムは、前処理に基づいて、1つまたは複数の前処理特性を識別する。前処理オペレーションおよび1つまたは複数の前処理特性の識別は、はっきり分かるように別個の順次的なオペレーションとしてここでは描かれるが、種々の実施形態において、入力ビデオフレームの前処理および1つまたは複数のビデオフレーム特性の識別は、同時に、並行的に、または別の非順次的な手法で実施され得ることが認識されよう。ルーチンは、ブロック925に進む。
【0053】
ブロック925で、プロセッサベースのパラメータ化ノイズ合成システムは、1つまたは複数の入力ビデオフレームをエンコードするために量子化パラメータQPを識別する。次いで、ルーチンは、ブロック930に進み、ここでは、プロセッサベースのパラメータ化ノイズ合成システムは、ノイズ合成可能なビデオコーディング規格に従って1つまたは複数の入力ビデオフレームをエンコードする。(入力ビデオフレームを前処理することがブロック910で決定された場合、エンコードオペレーションは、前処理されたビデオフレームに対して実施されることが認識されよう。)次いで、ルーチンは、ブロック935に進む。
【0054】
ブロック935で、プロセッサベースのパラメータ化ノイズ合成システムは、識別された量子化パラメータに基づいて、さらには、1つまたは複数の入力ビデオフレームを前処理することがブロック910で決定された場合には、前処理中に識別された1つまたは複数のビデオフレーム特性に基づいて、1組の1つまたは複数のノイズ合成パラメータを決定する。本明細書の他の箇所でより詳細に考察するように、種々の実施形態において、1組の1つまたは複数のノイズ合成パラメータが統合オペレーションで生成され得るか、または最初に生成されて、次いで、識別されたQPおよび/またはビデオフレーム特性に基づいて修正され得る。次いで、ルーチンは、ブロック950に進む。
【0055】
ブロック950で、プロセッサベースのパラメータ化ノイズ合成システムが1つまたは複数のクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始し、デコードされたビデオフレームに追加するためにパラメータ化された合成ノイズを生成するときにクライアントデバイスのデコーダによって使用するためなど、決定された1組の1つまたは複数のノイズ合成パラメータを提供する。
【0056】
図10は、1つまたは複数の実施形態を実装するのに適するコンピューティングシステム1000の例を示すコンポーネントレベルのブロック図である。代替的な実施形態では、コンピューティングシステム1000が独立デバイスとして動作することができるかまたは他のシステムに接続され得る(例えば、ネットワーク接続され得る)。種々の実施形態で、コンピューティングシステム1000の1つまたは複数のコンポーネントは、多様な種類のゲームアプリケーション出力または他のビデオコンテンツを提供するために、1つまたは複数のサーバコンピューティングシステムとして組み込まれ得るかあるいは1つまたは複数のサーバコンピューティングシステム内に組み込まれ得る。関連付けられたサーバコンピューティングデバイスがコンピューティングシステム1000のいくつかのコンポーネントを含むことができるが、これらのすべてが必要というわけではないことが認識されよう。ネットワーク接続されて配備されると、コンピューティングシステム1000は、サーバ-クライアントネットワーク環境内で、サーバマシンのキャパシティ、クライアントマシンのキャパシティ、またはその両方のキャパシティにおいて動作することができる。少なくとも1つの例では、コンピューティングシステム1000は、ピアツーピア(P2P)(または、他の分散)ネットワーク環境内でピアシステムとして機能することができる。コンピューティングシステム1000は、サーバコンピュータ、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、モバイルコンピューティングデバイス、ウェブ装置、ネットワークルータ、スイッチまたはブリッジ、あるいは、このシステムによって行われることになるアクションを指定する命令(順次的であるかまたは他の形である)を実行することができる任意のシステムであってよい。さらに、単一のシステムのみが示されるが、「システム」という用語は、クラウドコンピューティング、サービス型ソフトウェア(SaaS)、他のコンピュータクラスタ構成等の、本明細書で考察される方法論のうちの任意の1つまたは複数の方法論を実施するための1組の(または複数組の)命令を個別に、またはまとめて実行するシステムの任意の集合体も含むものとしてまた解釈されるものとする。
【0057】
本明細書で説明される例は、論理回路もしくは多数の構成要素、または機構を含むことができるか、あるいは、論理回路もしくは多数の構成要素、または機構により動作することができる。回路は、ハードウェア(例えば、単純回路、ゲート、論理回路など)を含めた有体物内に実装される回路の集合体である。回路とみなされるものは、時間と共に、および、基礎となるハードウェアの変化に応じて、柔軟性を有することができる。回路は、動作時に指定のオペレーションを単独でまたは組合せで実施することができる部材を含む。例では、回路のハードウェアが特定のオペレーションを実行するように不変的に設計され得る(例えば、ハードワイヤード)。例では、回路のハードウェアは、特定のオペレーションの命令をエンコードするために物理的に修正された(例えば、磁気的に、電気的に、不変質量パーティクル(invariant massed particle)の可動である配置など)コンピュータ可読媒体を含む可変的に接続される物理的コンポーネント(例えば、実行ユニット、トランジスタ、単純回路、など)を含むことができる。物理的コンポーネントを接続するとき、ハードウェア構成の基礎となる電気特性は、例えば絶縁体から導体へとまたはその逆で、変更される。これらの命令は、動作時に特定のオペレーションの一部を実行するために可変の接続を介してハードウェア内に回路の部材を埋め込みのハードウェア(例えば、実行ユニットまたはローディング機構)によって作り出すことを可能にする。したがって、コンピュータ可読媒体は、デバイスの動作時に、回路の他のコンポーネントに通信可能に結合される。例では、物理的コンポーネントのうちの任意の物理的コンポーネントは、2つ以上の回路の2つ以上の部材内で使用され得る。例えば、動作下で、実行ユニットは、ある1つの時点において第1の回路の第1の回路内で使用され得、別の時点において第1の回路内の第2の回路によりまたは第2の回路内の第3の回路によって再使用され得る。
【0058】
コンピューティングシステム1000は、1つまたは複数のハードウェアプロセッサ1002(例えば、中央演算処理装置(CPU)、ハードウェアプロセッサコア、またはこれらの任意の組合せ)、メインメモリ1004、およびグラフィック処理ユニット(GPU)1006を含むことができ、これらのいくつかまたはすべてがインターリンク(例えば、バス)1008を介して互いと通信を行うことができる。コンピューティングシステム1000は、ディスプレイユニット1010(ディスプレイモニタまたは他のディスプレイデバイスなど)、英数字の入力デバイス1012(例えば、キーボード、あるいは他の物理的アクチュエータまたはタッチベースのアクチュエータ)、およびユーザインターフェイス(UI)ナビゲーションデバイス1014(例えば、マウス、または、タッチベースのインターフェイス等の他のポインティングデバイス)をさらに含むことができる。一例では、ディスプレイユニット1010、入力デバイス1012、およびUIナビゲーションデバイス1014は、タッチスクリーンディスプレイを備えることができる。コンピューティングシステム1000は、ストレージデバイス(例えば、ドライブユニット)1016、信号生成デバイス1018(例えば、スピーカ)、ネットワークインターフェイスデバイス1020、ならびに、全地球測位システム(GPS:global positioning system)センサ、コンパス、加速度計、または他のセンサ等の、1つまたは複数のセンサ1021をさらに含むことができる。コンピューティングシステム1000は、1つまたは複数の周辺デバイス(例えば、プリンタ、カード読み取り装置、など)に通信するかまたはこれらを制御するために、シリアル(例えば、ユニバーサルシリアルバス(USB))、パラレル、あるいは他の有線または無線の(例えば、赤外線(IR)、近距離無線通信(NFC:near field communication)等)接続等の、出力コントローラ1028を含むことができる。
【0059】
ストレージデバイス1016は、本明細書で説明される技術または機能のうちの任意の1つまたは複数の技術または機能を具現化するか、あるいはこれらの技術または機能によって利用される1組または複数の組のデータ構造または命令1024(例えば、ソフトウェア)がそこに記憶されるコンピュータ可読媒体1022を含むことができる。命令1024はさらに、コンピューティングシステム1000によるその実行中に、メインメモリ1004内、GPU1006内、またはハードウェアプロセッサ1002内に完全または少なくとも部分的に存在することもできる。例では、ハードウェアプロセッサ1002、メインメモリ1004、GPU1006、またはストレージデバイス1016のうちの1つの組合せまたは任意の組合せは、コンピュータ可読媒体を構成することができる。
【0060】
コンピュータ可読媒体1022は単一の媒体として示されるが、「コンピュータ可読媒体」という用語は、1つまたは複数の命令1024を記憶するように構成された単一の媒体または複数の媒体(例えば、集中データベースまたは分散データベース、ならびに/あるいは関連付けられたキャッシュメモリおよびサーバ)を含むことができる。
【0061】
「コンピュータ可読媒体」という用語は、コンピューティングシステム1000による実行のための命令を記憶することができるか、エンコードすることができるか、または伝えることができる、および、コンピューティングシステム1000に、本開示の技術のうちの任意の1つまたは複数の技術を実行させる、あるいはこのような命令によって使用されるかまたはこのような命令に関連付けられたデータ構造を記憶することができるか、エンコードすることができるか、または伝えることができる、任意の媒体を含むことができる。非限定のコンピュータ可読媒体の例には、ソリッドステートメモリ、ならびに光学的および磁気的媒体が含まれ得る。例では、大規模コンピュータ可読媒体(massed computer readable medium)は、不変(例えば、静止)質量を有する複数のパーティクルを用いるコンピュータ可読媒体を備える。したがって、大規模コンピュータ可読媒体は一時的な伝搬信号ではない。大規模コンピュータ可読媒体の具体的な例には、半導体メモリデバイス(例えば、電気的にプログラム可能な読出し専用メモリ(EPROM:Electrically Programmable Read-Only Memory)、電気的消去可能・プログラム可能読出し専用メモリ(EEPROM:Electrically Erasable Programmable Read-Only Memory))およびフラッシュメモリデバイス等の不揮発性メモリ、内部ハードディスクおよび取り外し可能ディスク等の磁気ディスク、光磁気ディスク、ならびに、CD-ROMディスクおよびDVD-ROMディスクが含まれ得る。
【0062】
命令1024はさらに、多数の転送プロトコル(例えば、フレームリレー、インターネットプロトコル(IP)、通信制御プロトコル(TCP:transmission control protocol)、ユーザデータグラムプロトコル(UDP:user datagram protocol)、ハイパーテキスト転送プロトコル(HTTP:hypertext transfer protocol)など)のうちの任意の1つの転送プロトコルを利用するネットワークインターフェイスデバイス1020を介する伝送媒体を使用して通信ネットワーク1026上で送信または受信され得る。例示の通信ネットワークには、とりわけ、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パケットデータネットワーク(例えば、インターネット)、携帯電話ネットワーク(例えば、セルラネットワーク)、プレインオールドテレフォン(POTS:Plain Old Telephone)ネットワーク、および無線データネットワーク(例えば、Wi-Fi(登録商標)として知られる規格の電子電機技術協会(IEEE:Institute of Electrical and Electronics Engineers)802.11ファミリ、WiMax(登録商標)として知られる規格のIEEE802.16ファミリ)、規格のIEEE802.15.4ファミリ、ピアツーピア(P2P)ネットワークが含まれ得る。例では、ネットワークインターフェイスデバイス1020は、1つまたは複数の物理的ジャック(physical jack)(例えば、イーサネット(登録商標)、同軸、またはフォンジャック)、あるいは、通信ネットワーク1026に接続するための1つまたは複数のアンテナを含むことができる。例では、ネットワークインターフェイスデバイス1020は、シングルインプット・マルチプルアウトプット(SIMO:single-input multiple-output)技術、マルチプルインプット・マルチプルアウトプット(MIMO:multiple-input multiple-output)技術、またはマルチプルインプット・シングルアウトプット(MISO:multiple-input single-output)技術のうちの少なくとも1つを使用して無線通信するための複数のアンテナを含むことができる。「伝送媒体」という用語は、コンピューティングシステム1000によって実行されるための命令を記憶することができるか、エンコードすることができるか、または伝えることができ、デジタル通信信号またはアナログ通信信号を含む、任意の無形媒体、あるいは、このようなソフトウェアの通信を支援するための他の無形媒体を含むものとして解釈されるものとする。
【0063】
いくつかの実施形態では、上で説明される技術の特定の態様は、処理システム実行ソフトウェアの1つまたは複数のプロセッサによって実装され得る。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、または他の手法で有形的に具現化される1組または複数の組の実行可能命令を含む。ソフトウェアは、1つまたは複数のプロセッサによって実行されるときに、上で説明される技術の1つまたは複数の態様を実施するように1つまたは複数のプロセッサを操作する命令および特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気ディスクストレージデバイスまたは光学ディスクストレージデバイス、フラッシュメモリ等のソリッドステートストレージデバイス、キャッシュ、ランダムアクセスメモリ(RAM:random access memory)、または、他の不揮発性メモリデバイスなどを含むことができる。非一時的なコンピュータ可読記憶媒体で記憶される実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、あるいは、1つまたは複数のプロセッサによって解釈されるかまたは他の手法で実行可能である他の命令フォーマットであってよい。
【0064】
コンピュータ可読記憶媒体は、命令および/またはデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによりアクセス可能である任意の記憶媒体または記憶媒体の組合せを含むことができる。このような記憶媒体には、限定しないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD:digital versatile disc)、ブルーレイディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、またはキャッシュ)、不揮発性メモリ(例えば、読出し専用メモリ(ROM)、またはフラッシュメモリ)、あるいは、微小電気機械システム(MEMS:microelectromechanical system)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれ得るか(例えば、システムRAMまたはROM)、コンピューティングシステムに固定的に取り付けられ得るか(例えば、磁気ハードドライブ)、コンピューティングシステムに取り外し可能に取り付けられ得るか(例えば、光学ディスク、または、ユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、あるいは、有線ネットワークまたは無線ネットワークを介してコンピュータシステムに結合され得る(例えば、ネットワークアクセス可能ストレージ(NAS:network accessible storage))。
【0065】
本概略的な説明において上で説明された動作または要素のすべてが必要というわけではないこと、具体的な動作またはデバイスの一部分が必要ではない可能性があること、および、説明されるものに加えて1つまたは複数のさらに他の動作が実施され得るかまたは1つまたは複数のさらに他の要素が含まれ得ることに留意されたい。なおさらに、動作を列記する順番は必ずしも動作を実施する順番である必要はない。また、特定の実施形態を参照して概念を説明してきた。しかし、以下の特許請求の範囲に記載されるような本開示の範囲から逸脱することなく多様な修正および変更が行われ得ることを当業者であれば認識するであろう。したがって、本明細書および図は限定的な意味ではなく例示的な意味であるとみなされ、このようなすべての修正が本開示の範囲内に含まれることが意図される。
【0066】
特定の実施形態に関連して、他の利点、および問題の解決策を上で説明してきた。しかし、利益、利点、問題の解決策、ならびに利益、利点、または解決策をもたらす、またはより顕著になることができる任意の特徴は、任意のまたはすべての特許請求項の重要な特徴、必要な特徴、または不可欠な特徴として解釈されるべきでない。さらに、本明細書の教示の利益を享受する当業者には明白である、異なるが等価である手法で、開示される主題が修正および実施され得ることを理由として、上で開示される特定の実施形態は単に例示である。以下の特許請求の範囲で説明されるものを除いて、示される本明細書の構成または設計の詳細に限定されることを意図しない。したがって、上で開示される特定の実施形態が改変または修正され得、すべてのこのような変形形態が開示される主題の範囲内にあると考えられることは明らかである。したがって、本明細書で求められる保護は、以下の特許請求の範囲に記載されるとおりである。
【手続補正書】
【提出日】2024-02-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つまたは複数の入力ビデオフレームについて、
前記1つまたは複数の入力ビデオフレームのための量子化パラメータ(QP)を識別することと、
前記識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために前記1つまたは複数の入力ビデオフレームをエンコードすることと、
前記識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、
前記1つまたは複数の入力ビデオフレームを前記エンコードすることに基づいて、前記少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することとを含み、前記送信を開始することは、前記決定された1つまたは複数のノイズ合成パラメータを前記少なくとも1つのクライアントデバイスに提供することを含む、コンピュータで実行される方法。
【請求項2】
ゲームアプリケーションを介して前記1つまたは複数の入力ビデオフレームを生成することをさらに含む、請求項1に記載のコンピュータで実行される方法。
【請求項3】
前記1つまたは複数のノイズ合成パラメータは、前記識別されたQPの関数として決定される、請求項1または2に記載のコンピュータで実行される方法。
【請求項4】
前記エンコードすることの前に前記1つまたは複数の入力ビデオフレームを前処理することをさらに含む、請求項1から3のいずれかに記載のコンピュータで実行される方法。
【請求項5】
前記入力ビデオフレームを前記前処理することに基づいて1つまたは複数のビデオフレーム特性を識別することをさらに含み、前記1つまたは複数のノイズ合成パラメータを前記決定することは、部分的に前記1つまたは複数のビデオフレーム特性にさらに基づく、請求項4に記載のコンピュータで実行される方法。
【請求項6】
前記1つまたは複数の追加のビデオフレーム特性は、前記1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含む、請求項5に記載のコンピュータで実行される方法。
【請求項7】
送信のための前記1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って前記1つまたは複数の入力ビデオフレームをエンコードすることを含む
、請求項
1から6のいずれかに記載のコンピュータで実行される方法。
【請求項8】
前記決定されたノイズ合成パラメータを提供することは、前記1つまたは複数の送信されたビデオフレームに対して適用するためのノイズを合成することにおいて前記少なくとも1つのクライアントデバイスによって使用されるための前記決定されたノイズ合成パラメータを提供することを含む
、請求項
1から7のいずれかに記載のコンピュータで実行される方法。
【請求項9】
少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに結合され前記少なくとも1つのプロセッサによって実行されると、請求項1から7のいずれかに記載の方法を実行するように前記少なくとも1つのプロセッサを操作する1組の実行可能命令を記憶するメモリとを備える、システム。
【請求項10】
システムであって、
1つまたは複数の入力ビデオフレームについて、
前記1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP)を識別し、
前記識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために前記1つまたは複数の入力ビデオフレームをエンコードし、
前記識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定し、
前記1つまたは複数の入力ビデオフレームを前記エンコードすることに基づいて、前記少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始するための第1のプロセッサを備え、前記送信を開始することは、前記決定された1つまたは複数のノイズ合成パラメータを前記少なくとも1つのクライアントデバイスに提供することを含む、システム。
【請求項11】
前記第1のプロセッサはさらに、前記1つまたは複数の入力ビデオフレームを前処理するためのものである、請求項10に記載のシステム。
【請求項12】
前記第1のプロセッサはさらに、前記
1つまたは複数の入力ビデオフレームを前記前処理することに基づいて1つまたは複数のビデオフレーム特性を識別するためのものであり、前記1つまたは複数のノイズ合成パラメータを決定することは、さらに、前記1つまたは複数のビデオフレーム特性に基づく、請求項
11に記載のシステム。
【請求項13】
前記1つまたは複数のビデオフレーム特性は、前記1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含む、請求項
12に記載のシステム。
【請求項14】
送信のための前記1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って前記1つまたは複数の入力ビデオフレームをエンコードすることを含む、請求項10から13のいずれかに記載のシステム。
【請求項15】
前記決定されたノイズ合成パラメータを提供することは、前記1つまたは複数の入力ビデオフレームに対して適用するためのノイズを合成するために前記クライアントデバイスのための前記決定されたノイズ合成パラメータを提供することを含む、請求項10から14のいずれかに記載のシステム。
【請求項16】
ゲームアプリケーションを介して前記1つまたは複数の入力ビデオフレームを生成するための第2のプロセッサをさらに備える、請求項10から15のいずれかに記載のシステム。
【請求項17】
前記第1のプロセッサが前記第2のプロセッサとは別のものである、請求項16に記載のシステム。
【請求項18】
ゲーミングアプリケーションの実行を介して1つまたは複数の入力ビデオフレームを生成することと、
前記1つまたは複数の入力ビデオフレームに関連付けられた量子化パラメータ(QP)を識別することと、
前記識別されたQPを使用して、少なくとも1つのクライアントデバイスに送信するために前記1つまたは複数の入力ビデオフレームをエンコードすることと、
前記識別されたQPに少なくとも部分的に基づいて、1つまたは複数のノイズ合成パラメータを決定することと、
前記1つまたは複数の入力ビデオフレームを前記エンコードすることに基づいて前記少なくとも1つのクライアントデバイスへの1つまたは複数のエンコードされたビデオフレームの送信を開始することと、
を行うための1組の1つまたは複数のプロセッサと、
前記1組の1つまたは複数のプロセッサに結合され、前記1つまたは複数のエンコードされたビデオフレームおよび前記決定された1つまたは複数のノイズ合成パラメータを、少なくとも1つのコンピュータネットワークを介して、1つまたは複数のクライアントコンピューティングシステムに提供するように構成されたネットワークインターフェイスとを備える、サーバコンピューティングシステム。
【請求項19】
前記1組の1つまたは複数のプロセッサはさらに、前記1つまたは複数の入力ビデオフレームを前処理するよう
に少なくとも1つのプロセッサを操作するためのものである、請求項18に記載のサーバコンピューティングシステム。
【請求項20】
1組の実行可能命令はさらに、前記入力ビデオフレームを前記前処理することに基づいて1つまたは複数のビデオフレーム特性を識別するように前記少なくとも1つのプロセッサを操作するためのものであり、前記1つまたは複数のノイズ合成パラメータを決定することはさらに、部分的に前記1つまたは複数のビデオフレーム特性に基づく、請求項19に記載のサーバコンピューティングシステム。
【請求項21】
前記1つまたは複数のビデオフレーム特性は、前記1つまたは複数の入力ビデオフレームのうちの少なくとも1つの入力ビデオフレームの分散を含む、請求項20に記載のサーバコンピューティングシステム。
【請求項22】
送信のための前記1つまたは複数の入力ビデオフレームをエンコードすることは、AV1ビデオコーディング規格に従って前記1つまたは複数の入力ビデオフレームをエンコードすることを含む、請求項18に記載のサーバコンピューティングシステム。
【国際調査報告】