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

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

▶ テンセント・アメリカ・エルエルシーの特許一覧

<>
  • 特許-クラウドゲーム用の方法および装置 図1
  • 特許-クラウドゲーム用の方法および装置 図2
  • 特許-クラウドゲーム用の方法および装置 図3
  • 特許-クラウドゲーム用の方法および装置 図4
  • 特許-クラウドゲーム用の方法および装置 図5
  • 特許-クラウドゲーム用の方法および装置 図6
  • 特許-クラウドゲーム用の方法および装置 図7
  • 特許-クラウドゲーム用の方法および装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-05
(45)【発行日】2024-04-15
(54)【発明の名称】クラウドゲーム用の方法および装置
(51)【国際特許分類】
   H04N 19/164 20140101AFI20240408BHJP
   H04N 19/105 20140101ALI20240408BHJP
   H04N 19/46 20140101ALI20240408BHJP
【FI】
H04N19/164
H04N19/105
H04N19/46
【請求項の数】 20
(21)【出願番号】P 2022517928
(86)(22)【出願日】2021-03-15
(65)【公表番号】
(43)【公表日】2022-12-01
(86)【国際出願番号】 US2021022347
(87)【国際公開番号】W WO2021188428
(87)【国際公開日】2021-09-23
【審査請求日】2022-03-18
(31)【優先権主張番号】62/990,204
(32)【優先日】2020-03-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/184,082
(32)【優先日】2021-02-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】グイチュン・リ
(72)【発明者】
【氏名】シアン・リ
(72)【発明者】
【氏名】シャオジョン・シュ
(72)【発明者】
【氏名】ビョンドゥ・チェ
(72)【発明者】
【氏名】シャン・リュウ
【審査官】岩井 健二
(56)【参考文献】
【文献】米国特許出願公開第2019/0158704(US,A1)
【文献】米国特許出願公開第2019/0045213(US,A1)
【文献】米国特許出願公開第2015/0092856(US,A1)
【文献】米国特許出願公開第2011/0069757(US,A1)
【文献】特表2008-517530(JP,A)
【文献】特表2004-517590(JP,A)
【文献】Byeongdoo Choi, et al.,AHG8: E-Sport Use cases of VVC region-wise scalability and its system support,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-O0335-v2,15th Meeting: Gothenburg, SE,2019年06月,pp.1-5
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
電子デバイスが実行するクラウドゲーム用の方法であって、
ビデオシーケンスと、前記ビデオシーケンスに関連付けられたメタデータとをゲームエンジンから受信するステップであって、前記メタデータは、ゲーム環境に関するゲーム制御情報に基づいて作成され、前記ゲーム制御情報は、ユーザ制御情報と、ゲームシーン情報とを含み、前記メタデータは、前記ユーザ制御情報がユーザ入力に応じて変更されることに基づいて前記ゲームエンジンにおいて更新され、かつ、前記ゲームシーン情報がゲームシーンの動きに応じて変更されることに基づいて前記ゲームエンジンにおいて更新され、前記ビデオシーケンスは、前記ゲーム制御情報に応答して生成された一連の画像フレームを含む、ステップと、
前記メタデータに基づいて、前記ビデオシーケンスを符号化するための符号化構成を決定するステップと、
前記符号化構成に基づいて、前記ビデオシーケンスをコード化されたビデオビットストリームに符号化するステップと、
を含み、
前記メタデータは、前記ビデオシーケンスの画像フレームの照明変化特徴、点滅特性、およびフェーディング特徴のうちの少なくとも1つの画像特徴を示し、前記方法は、さらに、
前記画像特徴に基づいて、前記画像フレームを符号化するための符号化構成を決定するステップ、を含むことを特徴とする方法。
【請求項2】
前記メタデータは、動きベクトルを含み、前記方法は、さらに、
前記動きベクトルに基づいて、前記ビデオシーケンスの画像フレーム内のブロックを符号化するための動き探索の開始ポイントを決定するステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記メタデータは、前記ビデオシーケンスの画像フレームのシーン変化特徴、パンニング特徴、ズーミング特徴、およびオーバーレイ特徴のうちの少なくとも1つの画像特徴をさらに示し、前記方法は、さらに、
前記画像特徴に基づいて、前記画像フレームを符号化するための符号化構成を決定するステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記メタデータは、画像フレームにおける境界ボックスを示し、前記方法は、さらに、
前記境界ボックスに基づいて、現在の画像フレームの前の画像フレームに対する前記現在の画像フレームにおける境界ボックスによってカバーされていないエリアのための前記前の画像フレームにおける参照エリアを決定するステップと、
前記前の画像フレームにおける参照エリアに基づいて、前記現在の画像フレームにおける境界ボックスによってカバーされていないエリアを符号化するステップと、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記メタデータは、第1画像フレームから第2画像フレームへのモデル変換を示し、前記方法は、さらに、
前記モデル変換に基づいて、前記符号化構成を決定するステップと、
前記符号化構成に基づいて、前記第2画像フレームにおけるブロックを、前記第1画像フレームにおける参照フレームに基づいて符号化するステップと、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項6】
前記メタデータは、後続の画像フレームにおける現在の画像フレームのオブジェクトの存在を示し、前記方法は、さらに、
前記メタデータに基づいて、バッファ構成を決定するステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項7】
前記メタデータは、画像フレームのノイズレベルを示し、前記方法は、さらに、
前記ノイズレベルに基づいて、前記画像フレームを前処理/後処理するステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項8】
前記メタデータは、画像フレームにおける関心のある領域を示し、前記方法は、さらに、
前記関心のある領域外のブロックを符号化するために使用される第2符号化構成よりも高品質を有する第1符号化構成を使用して、前記関心のある領域を符号化するステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項9】
前記メタデータは、画像フレームの領域におけるグラフィックオーバーレイを示し、前記方法は、さらに、
前記グラフィックオーバーレイに基づいて、前記領域を符号化するための符号化構成を決定するステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項10】
前記メタデータは、オーバーレイメッセージ用の画像フレームにおけるメッセージボックスを示し、前記方法は、さらに、
前記コード化されたビデオビットストリームの特定のネットワーク抽象化層ユニットNALUに、前記オーバーレイメッセージの情報を含ませるステップ、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項11】
クラウドゲーム用の装置であって、
処理回路を備え、前記処理回路は、
ビデオシーケンスと、前記ビデオシーケンスに関連付けられたメタデータとをゲームエンジンから受信することであって、前記メタデータは、ゲーム環境に関するゲーム制御情報に基づいて作成され、前記ゲーム制御情報は、ユーザ制御情報と、ゲームシーン情報とを含み、前記メタデータは、前記ユーザ制御情報がユーザ入力に応じて変更されることに基づいて前記ゲームエンジンにおいて更新され、かつ、前記ゲームシーン情報がゲームシーンの動きに応じて変更されることに基づいて前記ゲームエンジンにおいて更新され、前記ビデオシーケンスは、前記ゲーム制御情報に応答して生成された一連の画像フレームを含む、ことと、
前記メタデータに基づいて、前記ビデオシーケンスを符号化するための符号化構成を決定することと、
前記符号化構成に基づいて、前記ビデオシーケンスをコード化されたビデオビットストリームに符号化することと、を実行するように構成され、
前記メタデータは、前記ビデオシーケンスの画像フレームの照明変化特徴、点滅特性、およびフェーディング特徴のうちの少なくとも1つの画像特徴を示し、前記処理回路は、さらに、
前記画像特徴に基づいて、前記画像フレームを符号化するための符号化構成を決定することを、実行するように構成される、
ことを特徴とする装置。
【請求項12】
前記メタデータは、動きベクトルを含み、前記処理回路は、さらに、
前記動きベクトルに基づいて、前記ビデオシーケンスの画像フレーム内のブロックを符号化するための動き探索の開始ポイントを決定すること、を実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項13】
前記メタデータは、前記ビデオシーケンスの画像フレームのシーン変化特徴、パンニング特徴、ズーミング特徴、およびオーバーレイ特徴のうちの少なくとも1つの画像特徴をさらに示し、前記処理回路は、さらに、
前記画像特徴に基づいて、前記画像フレームを符号化するための符号化構成を決定することを、実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項14】
前記メタデータは、画像フレームにおける境界ボックスを示し、前記処理回路は、さらに、
前記境界ボックスに基づいて、現在の画像フレームの前の画像フレームに対する前記現在の画像フレームにおける境界ボックスによってカバーされていないエリアのための前記前の画像フレームにおける参照エリアを決定することと、
前記前の画像フレームにおける参照エリアに基づいて、前記現在の画像フレームにおける境界ボックスによってカバーされていないエリアを符号化することと、を実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項15】
前記メタデータは、第1画像フレームから第2画像フレームへのモデル変換を示し、前記処理回路は、さらに、
前記モデル変換に基づいて、前記符号化構成を決定することと、
前記符号化構成に基づいて、前記第2画像フレームにおけるブロックを、前記第1画像フレームにおける参照フレームに基づいて符号化することと、を実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項16】
前記メタデータは、後続の画像フレームにおける現在の画像フレームのオブジェクトの存在を示し、前記処理回路は、さらに、
前記メタデータに基づいて、バッファ構成を決定すること、を実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項17】
前記メタデータは、画像フレームのノイズレベルを示し、前記処理回路は、さらに、
前記ノイズレベルに基づいて、前記画像フレームを前処理/後処理すること、を実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項18】
前記メタデータは、画像フレームにおける関心のある領域を示し、前記処理回路は、さらに、
前記関心のある領域外のブロックを符号化するために使用される第2符号化構成よりも高品質を有する第1符号化構成を使用して、前記関心のある領域を符号化すること、を実行するように構成される、
ことを特徴とする請求項11に記載の装置。
【請求項19】
電子デバイスであって、
前記電子デバイスには、プロセッサとメモリとが含まれ、
前記メモリには、読み取り可能な命令が記憶されており、前記読み取り可能な命令が前記プロセッサによってロードされて実行されると、請求項1~10のいずれか1項に記載の方法が実現される、
ことを特徴とする電子デバイス。
【請求項20】
コンピュータプログラムであって、
前記コンピュータプログラムは、電子デバイスによってロードされて実行されるとき、前記電子デバイスに請求項1~10のいずれか1項に記載の方法を実行させる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
この出願は、2021年2月24日に出願された米国特許出願第17/184,082号「クラウドゲーム用の方法および装置」に対する優先権の利益を主張し、それは、2020年3月16日に出願された米国仮特許出願第62/990,204号「クラウドゲームシステムにおけるメタデータによるビデオコーディング方法」に対する優先権の利益を主張する。従来の出願の全開示は、その全体が参照により本明細書に組み込まれる。
【0002】
[技術分野]
この開示は、クラウドゲームの分野におけるマルチメディア技術に一般的に関連する実施形態を説明する。
【背景技術】
【0003】
本明細書で提供される背景技術の説明は、本開示のコンテキストを全体的に示すことを目的とする。この背景技術部分及び本明細書の各態様において説明された、現在署名されている発明者の作業の程度は、本開示の提出時に先行技術として示されておらず、また、本開示の先行技術として認められていることを明示または暗示していない。
【0004】
クラウドゲームサービスは、複数のサービスプロバイダから利用できるトレンドオンラインサービスである。クラウドゲームは、ゲームオンデマンドと呼ばれてもよい。クラウドゲームシステムでは、ゲームは、リモートサーバ上で実行され、クラウドベースのゲームと呼ばれる。ユーザは、ユーザデバイスを介して、クラウドベースのゲームをプレイすることができる。ゲームコンテンツは、リモートサーバ上で生成され、ユーザデバイス上でストリーミングされて表示され得る。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の各態様は、クラウドゲーム用の方法および装置を提供する。いくつかの例では、クラウドゲーム用の装置は、処理回路を含む。例えば、処理回路は、ビデオシーケンスと、当該ビデオシーケンスに関連付けられたメタデータとを受信する。ビデオシーケンスは、ゲーム制御情報に応答して生成された一連の画像フレームを含み、メタデータは、ゲーム制御情報に基づいて決定される。処理回路は、メタデータに基づいて、ビデオシーケンスを符号化するための符号化構成を決定することができる。そして、処理回路は、符号化構成に基づいて、ビデオシーケンスをコード化されたビデオビットストリームに符号化する。
【0006】
一実施形態では、メタデータは、動きベクトルを含み、処理回路は、動きベクトルに基づいて、ビデオシーケンスの画像フレーム内のブロックを符号化するための動き検索の開始ポイントを決定する。
【0007】
別の実施形態では、メタデータは、ビデオシーケンスの画像フレームのシーン変化特性、照明変化特性、点滅特性、パンニング特性、ズーミング特性、フェーディング特性、およびオーバーレイ特性のうちの少なくとも1つの画像特性を示す。処理回路は、画像特性に基づいて、画像フレームを符号化するための符号化構成を決定することができる。
【0008】
別の実施形態では、メタデータは、画像フレームにおける境界ボックスを示す。処理回路は、境界ボックスに基づいて、現在の画像フレームの前の画像フレームに対する前記現在の画像フレームにおける境界ボックスによってカバーされていないエリアのための前の画像フレームにおける参照エリアを決定することができ、前の画像フレームにおける参照エリアに基づいて、現在の画像フレームにおける境界ボックスによってカバーされていないエリアを符号化する。
【0009】
別の実施形態では、メタデータは、第1画像フレームから第2画像フレームへのモデル変換を示す。処理回路は、モデル変換に基づいて、符号化構成を決定することができ、符号化構成に基づいて、第2画像フレームにおけるブロックを、第1画像フレームにおける参照ブロックに基づいて符号化することができる。
【0010】
別の実施形態では、メタデータは、後続の画像フレームにおける現在の画像フレームのオブジェクトの存在を示す。処理回路は、メタデータに基づいて、バッファ構成を決定する。
【0011】
別の実施形態では、メタデータは、画像フレームのノイズレベルを示す。処理回路は、ノイズレベルに基づいて、画像フレームを前処理/後処理することができる。
【0012】
別の実施形態では、メタデータは、画像フレームにおける関心のある領域を示す。処理回路は、関心のある領域外のブロックを符号化するために使用される第2符号化構成よりも高品質を有する第1符号化構成を使用して、関心のある領域を符号化する。
【0013】
別の実施形態では、メタデータは、画像フレームの領域におけるグラフィックオーバーレイを示す。処理回路は、グラフィックオーバーレイに基づいて、当該領域を符号化するための符号化構成を決定する。
【0014】
別の実施形態では、メタデータは、オーバーレイメッセージ用の画像フレームにおけるメッセージボックスを示す。処理回路は、コード化されたビデオビットストリームの特定のネットワーク抽象化層ユニット(NALU)に、オーバーレイメッセージの情報を含ませる。
【0015】
本開示の各態様は、また、命令が記憶されている不揮発性コンピュータ読み取り可能な記憶媒体を提供し、前記命令がビデオ処理のためのコンピュータによって実行されるとき、コンピュータにクラウドゲーム用の方法を実行させる。
【0016】
開示された主題の更なる特徴、性質、および様々な利点は、以下の詳細な説明および添付図面からより明らかになり、ここで、
【図面の簡単な説明】
【0017】
図1】本開示の一実施形態によるクラウドゲームシステムのブロック図を示す。
図2】本開示のいくつかの実施形態によるクラウドゲームシナリオを示す図である。
図3】本開示のいくつかの実施形態によるクラウドゲームシステムのブロック図を示す。
図4】本開示の一実施形態によるビデオエンコーダのブロック図を示す。
図5】本開示のいくつかの実施形態によるビデオデコーダの図を示す。
図6】本開示の一実施形態によるプロセス例を概説するフローチャートを示す。
図7】本開示の一実施形態による他のプロセス例を概説するフローチャートを示す。
図8】一実施形態によるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0018】
本開示の各態様は、クラウドゲームの分野におけるメタデータ支援ビデオコーディング(符号化/復号)設計のためのシステム、デバイスおよび方法を提供する。
【0019】
図1は、本開示の実施形態によるクラウドゲームシステム(100)のブロック図を示す。前記クラウドゲームシステム(100)は、ネットワーク(150)によって接続されたサーバシステム(101)とクライアントシステム(102)とを含む。サーバシステム(101)は、互いに結合された1つまたは複数のサーバ(110)を含む。例えば、サーバシステム(101)は、データセンタ(複数)、サーバファーム(複数)などを含み得る。サーバシステム(101)は、ゲームコンテンツをレンダリングし、ゲームコンテンツをビットストリームに圧縮することができる。ビットストリームは、ネットワーク(150)によってクライアントシステム(102)に配信され得る。クライアントシステム(102)は、それぞれゲームユーザ(プレーヤとも呼ばれる)とインタラクションを行うことができる1つまたは複数のクライアントデバイス(160)を含む。例えば、クライアントデバイス(160)は、ゲームユーザからユーザ制御情報を受信することができ、例えばビデオ出力、オーディオ出力などのような出力をゲームユーザに提供することができる。
【0020】
サーバ(110)は、任意の適切な技術を使用してそれぞれ実現され得る。図1において、サーバ(110)は、互いに結合された処理回路(120)、メモリ(115)およびインターフェース回路(111)を含む。メモリ(115)は、処理前、処理中、および処理後に、ソフトウェア命令や様々なデータ(例えば、メディアデータ、構成情報、制御情報など)を記憶するように構成される。
【0021】
処理回路(120)は、例えば1つまたは複数の中央処理ユニット(CPU)、1つまたは複数のグラフィック処理ユニット(GPU)、特定用途向け集積回路などのような任意の適切な処理回路を含み得る。図1の例では、処理回路(120)は、ゲームエンジン(125)を含むように構成され得る。例えば、1つまたは複数のCPUおよび/またはGPUは、メモリ(115)に記憶されているゲームソフトウェアを実行することで、ゲームエンジン(125)として機能することができる。さらに、処理回路(120)は、例えばビデオエンコーダ、オーディオエンコーダなどのようなエンコーダを含むように構成され得る。図1の例では、処理回路(120)は、ビデオエンコーダ(130)を含むように構成される。例えば、1つまたは複数のCPUおよび/またはGPUは、ビデオエンコーダ(130)として機能するように構成され得る。別の例では、ビデオエンコーダ(130)は、特定用途向け集積回路を使用して実現され得る。
【0022】
インターフェース回路(111)は、サーバ(110)をネットワーク(150)とインターフェースすることができる。インターフェース回路(111)は、ネットワーク(150)から信号を受信する受信部と、ネットワーク(150)に信号を送信する送信部とを含み得る。例えば、インターフェース回路(111)は、ネットワーク(150)を介して、例えばコード化されたビデオビットストリーム、コード化されたオーディオビットストリームなどのような符号化されたメディアデータを搬送する信号を、クライアントデバイス(160)などのような他のデバイスに送信することができる。インターフェース回路(111)は、ネットワーク(150)を介して、ユーザ入力などのようなユーザ情報を搬送する信号を、クライアントデバイス(160)から受信することができる。
【0023】
ネットワーク(150)は、例えばイーサネット接続、光ファイバ接続、WiFi接続、セルラーネットワーク接続などのような有線および/または無線接続を介して、サーバシステム(101)およびクライアントシステム(102)に適切に結合される。ネットワーク(150)は、ネットワークサーバデバイス、ストレージデバイス、ネットワークデバイスなどを含み得る。ネットワーク(150)の構成要素は、有線および/または無線接続を介して適切に結合される。
【0024】
クライアントデバイス(160)は、ユーザとインタラクションを行うように構成される。図1の例では、クライアントデバイス(160)は、例えばインターフェース回路(161)、処理回路(170)、ディスプレイ(165)およびユーザ入力デバイス(169)などのような様々な構成要素を含み、これらが互いに結合されている。
【0025】
インターフェース回路(161)は、クライアントデバイス(160)をネットワーク(150)とインターフェースすることができる。インターフェース回路(161)は、ネットワーク(150)から信号を受信する受信部と、ネットワーク(150)に信号を送信する送信部とを含み得る。例えば、インターフェース回路(161)は、サーバ(110)によって送信された、例えばコード化されたビデオビットストリームを搬送する信号、オーディオビットストリームを搬送する信号などのような、データを搬送する信号を、ネットワーク(150)から受信することができ、またユーザ入力を搬送する信号などのような信号を、ネットワーク(150)を介してサーバ(110)などのような他のデバイスに送信することができる。
【0026】
ユーザ入力デバイス(169)は、ユーザ入力を受信することができ、ユーザ入力は、サーバシステム(101)に適切に送信され得る。一例では、ユーザ入力は、処理回路(170)に提供され得ており、処理回路(170)は、ユーザ入力を例えばメッセージ、パケットなどのような適切な形式に変換して、インターフェース回路(161)を介して、このユーザ入力を送信することができる。ユーザ入力は、ネットワーク(150)を介してサーバシステム(101)に送信され得る。ユーザ入力デバイス(169)は、例えばジョイスティック、動きセンサー、マイクロホン、キーボード、マウス、タッチスクリーン、タッチパッドなどのような任意の適切なユーザ入力デバイスであり得る。
【0027】
処理回路(170)は、例えばCPU、GPU、特定用途向け集積回路などのような適切な処理回路を含み得る。処理回路(170)は、例えばビデオデコーダ、オーディオデコーダなどのようなメディアデコーダ(複数)を含むように構成され得る。例えば、処理回路(170)は、ビデオデコーダ(180)を含むように構成される。一例では、GPUは、ビデオデコーダ(180)として構成される。別の例では、CPUは、ソフトウェア命令を実行することで、ビデオデコーダ(180)として機能することができる。ビデオデコーダ(180)は、コード化されたビデオビットストリームにおける情報を復号し、ビデオシーケンス(例えば、一連の画像フレーム)を再構築することができる。
【0028】
さらに、処理回路(170)は、ゲームクライアント(175)を含むように構成され得る。例えば、CPUは、クラウドゲームクライアントソフトウェアを実行することで、ゲームクライアント(175)として機能することができる。ゲームクライアント(175)は、ユーザ入力(171)を受信し、ユーザ入力(171)を表すデータをサーバ(110)におけるゲームエンジン(125)に送信することができる。
【0029】
ディスプレイ(165)は、例えばテレビ、スマートフォン、ウェアラブルディスプレイ、ヘッドマウントデバイスなどのような任意の適切なディスプレイデバイスであり得る。一例では、ディスプレイ(165)は、ビデオシーケンスを受信し、このビデオシーケンスを適切に表示することができる。
【0030】
いくつかの例では、ゲームをプレイするために、ゲームエンジン(125)は、例えばビデオシーケンス、オーディオなどのような、ゲーム用のゲームコンテンツを生成することができ、このゲームコンテンツは、ゲームの様々なゲーム環境を示す。一例では、ゲームエンジン(125)は、ビデオコンテンツ(122)(例えば、ビデオシーケンス)を生成し、ビデオコンテンツ(122)をビデオエンコーダ(130)に提供することができる。ビデオエンコーダ(130)は、ビデオコンテンツ(122)をコード化されたビデオビットストリーム(123)に圧縮することができ、このコード化されたビデオビットストリーム(123)は、インターフェース回路(111)によって送信され、ネットワーク(150)を介してクライアントデバイス(160)にストリーミングされ得る。クライアントデバイス(160)では、インターフェース回路(161)は、コード化されたビデオビットストリームを搬送する信号を受信し、このコード化されたビデオビットストリーム(172)をビデオデコーダ(180)に提供することができる。ビデオデコーダ(180)は、コード化されたビデオビットストリーム(172)からビデオシーケンスを再構築することができ、この再構築されたビデオシーケンス(173)は、ゲーム環境をゲームユーザに提供するために、ディスプレイ(165)に提供され得る。
【0031】
ゲームユーザは、ゲームクライアント(175)とインタラクションを行うことができる。例えば、ゲームクライアント(175)は、図1に示すユーザ入力(171)などのようなユーザ制御情報(いくつかの例ではインタラクションデータとも呼ばれる)を受信することができる。例えばコマンド、位置情報、深さ情報、動き情報などのようなユーザ制御情報(ユーザ制御情報は、サーバ(110)上で(121)によって表示される)は、インターフェース回路(161)、ネットワーク(150)、およびインターフェース回路(111)を介して、ゲームクライアント(175)からゲームエンジン(125)に送信され得る。そして、ゲームエンジン(125)は、受信したユーザ制御情報(121)に応答して、動作を実行し、更新されたゲームコンテンツを生成することができる。更新されたゲームコンテンツは、圧縮されてサーバ(110)からクライアントデバイス(160)に提供され得る。ゲームが続くにつれて、ゲームプロセスが繰り返される。
【0032】
いくつかの実施形態では、ゲームエンジン(125)は、YUVフォーマットでの一連の画像フレームなどのような、生のビデオコンテンツ(122)の形でのゲームビデオコンテンツを生成することができる。生のビデオコンテンツ(122)は、ビデオエンコーダ(130)に提供され得る。ビデオエンコーダ(130)は、生のビデオコンテンツを圧縮し、例えばH.264、H.265、AV1、AVS2などのような、特定のビデオコーディングフォーマットまたは規格に従って、コード化されたビデオビットストリーム(123)を生成する。このコード化されたビデオビットストリーム(123)は、クライアントデバイス(160)に送信され、ビデオエンコーダ(130)のような適合フォーマットまたは標準を使用して、表示のためにクライアント側のビデオデコーダによって復号され得る。
【0033】
クラウドゲームシステム(100)は、関連例におけるゲームコンソールまたは他のローカルデバイス上ではなく、リモートサーバ上でゲームソフトウェアを実行することによってビデオゲームをプレイする手段を提供する。例えば、ゲーム会社は、ゲームストリーミングのための専用サーバであるサーバ(110)を所有し、また、サーバ(110)は、消費者側ハードウェア(例えば、クライアントデバイス)よりも著しく強力であり得る。さらに、いくつかの例では、ストリーミングサービスは、複数のプレイヤー(ユーザ)によって同じゲームがプレイされる複数のクライアントデバイス(160)に、同様のデータを送信することができる。したがって、複数のプレイヤーは、コストがプレイヤーの数に比例する関連例で予想されるものよりも、運営コストの総額(ゲーム会社に対して)より少ない運営コストで同じゲームをプレイすることができる。
【0034】
図2は、本開示のいくつかの実施形態によるクラウドゲームシナリオを示す図(200)を示す。図2の例では、サーバ(210)は、ゲーム用のゲームサービスを提供するクラウドゲームサーバであり、クライアントデバイス260A~260Cは、それぞれゲームのプレイヤーA~Cとインタラクションを行うクライアントデバイスである。サーバ(210)は図1におけるサーバ(110)と同様に構成され得る。クライアントデバイス260A~260Cは、それぞれ、図1におけるクライアントデバイス(160)と同様に構成され得る。
【0035】
図2の例では、サーバ(210)におけるゲームエンジン(図示せず)は、ゲーム環境のためのゲームコンテンツをレンダリングし、ネットワーク(図示せず)を介して、クライアントデバイス(260A)~(260C)にゲームコンテンツを提供する。一度に、図2における(201)として示されるように、クライアントデバイス(260B)は、プレイヤーBからのユーザ入力などのようなユーザ制御情報を受信する。図2における(202)として示されるように、クライアントデバイス260Bは、ユーザ入力を表すデータを、ネットワークを介してサーバ(210)に送信する。図2における(203)として示されるように、ユーザ入力を表すデータに応答して、サーバ(210)におけるゲームエンジンは、動作を実行して、ゲーム環境を更新する。そして、図2における(204)として示されるように、サーバ(210)は、更新されたゲームコンテンツをクライアントデバイス(260A)~(260C)に送信する。クライアント側では、図2における(205)として示されるように、各クライアントデバイス(260A)~(260C)は、更新されたゲームコンテンツに応答して、ゲーム環境をリフレッシュすることができ、例えば、ディスプレイをリフレッシュすることができる。
【0036】
関連例では、クライアントデバイスは、ほとんどのゲームをプレイするために必要とされるゲームコンソールまたはパソコンであり得て、また、ゲームのための大きな前払いコストを構成し得る。これらのゲームコンソールやパソコンの価格は、数百ドルから数千ドルまでのコストに達する可能性がある。ローカルマシン(ゲームコンソールやパソコン)も経時的に摩耗し、低下したパフォーマンスを有する。技術の発展に伴い、クラウゲームサーバは、消費者にとって追加のコストなしで、継続的にアップグレードされている。
【0037】
本開示のいくつかの態様によれば、クラウドゲームは、良好なユーザエクスペリエンスを達成するために、高いかつ信頼性のある帯域幅要求と、双方向通信に必要とされる低い遅延とを必要とし得る。いくつかの例では、クラウドゲームは、高いかつ信頼性のある帯域幅を得るために、高速および安定したインターネット接続と、ゲームサーバに近接していることとを必要とする場合がある。例えば、クラウドゲーム用のストリーミングサービスは、10Mbpsから35Mbpsの間の帯域幅を必要とする場合がある。本開示は、帯域幅要求を低減し、また視覚的品質を向上させるために、コーディング速度およびコーディング効率を改善するための技術を提供する。
【0038】
いくつかの例では、高い遅延は、ゲーム体験にとって不利になることがある。遅延は、多くの要因によって寄与されることがあり、ストリーミングのためのビデオ符号化は、これらの要因の1つである。本開示は、コーディング効率を維持しながら符号化時間を短縮するために技術をも提供し、したがってクラウドゲーム体験を改善する。
【0039】
本開示の各態様は、クラウドゲームシステムにおけるメタデータ支援ビデオ符号化設計のための技術を提供する。いくつかの例では、ビデオコンテンツ用のメタデータ(例えば、生のビデオ)は、例えばカメラ情報、色情報、照明情報、動き情報、視聴情報、ユーザ制御などのようなビデオコンテンツに関する情報を提供するデータを指す。生のビデオと共にメタデータは、ゲームエンジン(例えば、ゲームエンジン(125))によってレンダリングされ得て、符号化プロセスを支援するために、ゲームエンジンによってビデオエンコーダ(例えば、ビデオエンコーダ(130))に入力として提供され得る。いくつかの実施形態では、ビデオエンコーダ(例えば、ビデオエンコーダ(130))は、メタデータの助けを借りて、生のビデオをコード化されたビデオビットストリームに符号化することができる。さらに、いくつかの実施形態では、メタデータは、コード化されたビデオビットストリームとともにビデオデコーダ(例えば、ビデオデコーダ(180))に提供され得る。ビデオデコーダ(例えば、ビデオデコーダ(180))は、メタデータの助けを借りて、コード化されたビデオビットストリームを復号することができる。
【0040】
図3は、本開示のいくつかの実施形態によるクラウドゲームシステム(300)のブロック図を示す。クラウドゲームシステム(300)は、上記のクラウドゲームシステム(100)と同様に動作し、クラウドゲームシステム(100)で使用されているものと同一または同等の特定の構成要素を利用する。例えば、サーバシステム(301)は、サーバシステム(101)のように同様に構成され、クライアントシステム(302)は、クライアントシステム(102)のように同様に構成され、ネットワーク(350)は、ネットワーク(150)のように同様に構成され、サーバ(310)は、サーバ(110)のように同様に構成され、処理回路(320)は、処理回路(120)のように同様に構成され、メモリ(315)は、メモリ(115)のように同様に構成され、インターフェース回路(311)は、インターフェース回路(111)のように同様に構成され、ゲームエンジン(325)は、ゲームエンジン(125)のように同様に構成され、ビデオエンコーダ(330)は、ビデオエンコーダ(130)のように同様に構成され、インターフェース回路(361)は、インターフェース回路(161)のように同様に構成され、処理回路(370)は、処理回路(170)のように同様に構成され、ディスプレイ(365)は、ディスプレイ(165)のように同様に構成され、ユーザ入力デバイス(369)は、ユーザ入力デバイス(169)のように同様に構成され、ゲームクライアント(375)は、ゲームクライアント(175)のように同様に構成され、ビデオデコーダ(380)は、ビデオデコーダ(180)のように同様に構成される。これらの構成要素の説明は、以上で提供されており、明確にするためにここでは省略されている。
【0041】
さらに、図3の例では、ビデオエンコーダ(330)は、メタデータの助けを借りてビデオコンテンツをビデオビットストリームに符号化するように構成される。例えば、ビデオエンコーダ(330)は、メタデータベースのコントローラであるコントローラ(331)を含む。ゲームエンジン(325)は、メタデータ(326)とともに生のビデオコンテンツ(322)をビデオエンコーダ(330)に提供する。メタデータ(326)は、生のビデオコンテンツ(322)に関連付けられた情報、例えばカメラ情報、色情報、照明情報、動き情報、視聴情報、ユーザ制御などを含む。コントローラ(331)は、メタデータ(326)を受信し、メタデータ(326)に基づいてビデオエンコーダ(330)の構成を制御することで、生のビデオコンテンツ(322)を符号化し、コード化されたビデオビットストリーム(323)を生成する。メタデータの助けを借りて、符号化の速度および効率を向上させ、また、帯域幅の要求が低減され、遅延が短縮され得る。
【0042】
いくつかの実施形態では、コード化されたビデオビットストリーム(323)は、例えばメタデータ出力(327)によって示されるようなメタデータとともに出力され得る。
【0043】
さらに、図3の例では、ビデオデコーダ(380)は、メタデータの助けを借りてビデオビットストリームを復号するように構成される。例えば、ビデオデコーダ(380)は、メタデータベースのコントローラであるコントローラ(381)を含む。コントローラ(381)は、コード化されたビデオビットストリーム(372)とともにメタデータ(377)を受信する。一例では、コード化されたビデオビットストリーム(372)は、ビデオエンコーダ(330)によって生成されたコード化されたビデオビットストリーム(323)であり得、メタデータ(377)は、メタデータ出力(327)であり得る。コントローラ(381)は、コード化されたビデオビットストリーム(372)を復号するためにメタデータ(377)に基づいてビデオデコーダ(380)の構成を制御し、再構築されたビデオシーケンス(373)を生成することができる。
【0044】
いくつかの実施形態では、ゲームエンジン(325)からビデオエンコーダ(330)へのメタデータ(326)は、コーディング効率を向上させ、および/または符号化プロセスの複雑さを低減するのを助けることができる、ゲームシーン情報(例えば、カメラ情報、色情報、照明情報、動き情報、視聴情報)、ユーザ制御情報などのような、任意の適切なゲーム制御情報を含み得る。
【0045】
具体的には、いくつかの例では、例えばジョイスティック、キーパッド、マウス、および/またはキーボードなどのようなユーザ入力デバイス(369)からのユーザ入力(371)(ユーザ制御情報としても呼ばれる)は、クライアントデバイス(360)からサーバ(310)に送信され得る。一例では、ゲームエンジン(325)は、クライアントデバイス(360)においてユーザ入力(371)に対応するユーザ制御情報(321)を受信する。ゲームエンジン(325)は、ユーザ制御情報(321)に基づいて、ゲームシーンコンテンツ(例えば、ビデオコンテンツ、オーディオコンテンツなど)を生成することができる。いくつかの実施形態では、メタデータ(326)は、ゲームシーン情報およびユーザ制御情報(321)に基づいて決定され得る。例えば、ゲームシーンのグローバル動きおよび/またはオブジェクトのローカル動きは、ゲームシーン情報およびユーザ制御情報(321)に基づいて識別され得る。一例では、ユーザ制御情報(321)は、視線方向の変化を含み、これにより、ゲームシーンのグローバル動きは、視線方向の変化に基づいて識別され得る。別の例では、ユーザ制御情報(321)は、オブジェクトの動きを含み、これにより、オブジェクトのローカル動きは識別され得る。一例では、メタデータ(326)は、ゲームシーンのグローバル動き、オブジェクトのローカル動き、およびオブジェクトの境界ボックスを含み得る。メタデータ(326)は、ビデオエンコーダ(330)への追加の入力データとしてビデオ符号化プロセスを助けることができる。メタデータ(326)は、ゲームエンジン(325)によってレンダリングされた生のビデオコンテンツ(322)とともにビデオエンコーダ(330)に供給され得る。ビデオエンコーダ(330)は、メタデータ(326)における情報を利用して、生のビデオコンテンツ(322)を利用して動き推定/補償処理を効率的に実行することができる。
【0046】
いくつかの実施形態では、メタデータ(326)は、ビデオエンコーダ(330)のパラメータなどのような、構成可能なエンコーダ設定として、ビデオエンコーダ(330)に供給され得る。一例では、メタデータ(326)は、画像または画像の領域の、グローバル動きモデル(例えば、アフィンモデル、透視(perspective)モデル、回転モデル、ズーミングモデルなど)を生成するために使用され得る。別の例では、メタデータ(326)は、ビデオエンコーダ(330)における符号化ツールを選択するために使用され得る。しかしながら、一例では、そのようなパラメータのいずれかが利用できない場合、デフォルト値のセットは、ビデオエンコーダ(330)によって仮定され得る。
【0047】
いくつかの実施形態では、ビデオエンコーダ(330)に供給されたメタデータ(326)は処理され、メタデータ(327)によって示されて、コード化されたビデオデータストリーム(323)とともに送信され得る。メタデータ(327)は、ビデオデコーダがコード化されたビデオビットストリーム(323)を復号するのを助けることができる。例えば、タイミング情報、オーバーレイメッセージ、オーバーレイグラフィックス、境界ボックスなどのような、コード化されたビデオビットストリーム(323)の復号および表示を支援することができるメタデータ(327)は、補足拡張情報(SEI)メッセージとして送信され得る。SEIメッセージは、コード化されたビデオビットストリーム内で、または別個に伝達され得る。
【0048】
いくつかの実施形態では、クライアントデバイス(360)は、メタデータ(377)とともにコード化されたビデオビットストリーム(372)を受信する。メタデータ(377)は、コード化されたビデオビットストリーム(372)において搬送されたビデオシーケンスの復号または後処理を支援するために、クライアントデバイス(360)によって使用され得る。例えば、メタデータ(377)は、コード化されたビデオビットストリーム(372)の復号および表示を支援することができるタイミング情報、オーバーレイメッセージ、オーバーレイグラフィックス、境界ボックス情報を含み得る。
【0049】
いくつかの実施形態では、メタデータは、追加のコーデックを使用してコード化された(符号化/復号)され得る。いくつかの例では、ゲームエンジン(325)は、分離されたコンテンツ、ビデオ、オーディオ、オーバーレイメッセージ、オーバーレイグラフィックスなどを出力することができる。一例では、オーバーレイメッセージ(またはオーバーレイグラフィックス)は、ビデオコンテンツのためのメタデータとして見なされる。オーバーレイメッセージ(またはオーバーレイグラフィックス)は、ビデオエンコーダ330からの別個のエンコーダを使用して、別個のビットストリーム(第2ビットストリーム)に圧縮され得る。そして、一例では、ビデオコンテンツのためのコード化されたビデオビットストリームと、オーバーレイメッセージ(またはオーバーレイグラフィックス)のための第2ビットストリームとは、単一のビットストリームに多重化され得る。
【0050】
本開示のいくつかの態様によれば、ビデオ符号化プロセスまたはビデオ復号プロセスを支援することができる様々な情報は、メタデータとして、ゲームビデオ入力(例えば、ビデオ符号化プロセスのためのゲームビデオ入力としてのビデオシーケンス、ビデオ復号プロセスのためのゲームビデオ入力としてのコード化されたビデオビットストリーム)と共に送信され得る。
【0051】
いくつかの例では、メタデータは、ゲームキャラクタの位置(例えば、ゲームのメインキャラクタ)、ゲームシーンの関心のある領域(ROI:region of interest)などのような、リージョナルゲームコンテンツの位置情報を含み得る。
【0052】
いくつかの例では、メタデータは、例えばメインカメラの位置情報、カメラの視野角、および様々なカメラパラメータ(例えば、焦点距離、メインキャラクタまでの距離、視野角、歪みパラメータ、ビネットパラメータなど)などのようなカメラ情報を含み得る。
【0053】
いくつかの例では、メタデータは、例えばシーンのメインカラー、シーンの明るさ、現在の画像のノイズレベル、シーン変化インジケータ、フェーディングインジケータ、および/またはフェーディングパラメータ(例えば、重み付けられた予測のための重み付け)などのような、ゲームシーンの系統的情報を含み得る。
【0054】
いくつかの例では、メタデータは、リージョナルおよびグローバルの動き情報を含み得る。一例では、メタデータは、各画素レベルで、または予め定義されたブロックサイズを有するブロックレベルで、前の画像のうちの1つまたは複数に対する並進動きベクトルを含む。
【0055】
いくつかの例では、メタデータは、グローバル動きモデルまたはリージョナル動きモデルを含み得る。一例では、メタデータは、画像のためのパンニングモデル、ズーミングモデル、回転モデル、透視動きモデル、アフィン動きモデルなどのようなグローバル動きモデルを含み得る。別の例では、メタデータは、パンニングモデル、ズーミングモデル、回転モデル、透視動きモデル、アフィン動きモデルなどのようなリージョナルモデルを含むことができる。
【0056】
いくつかの例では、メタデータは、キーストークス、マウスの動き、マウスボタンのクリック、動きセンサーの入力などのような、ユーザ入力情報を含み得る。
【0057】
様々な実施形態では、メタデータは、例えばゲームエンジン(325)からサーバ側上のビデオエンコーダ(330)へ提供され、これにより、様々な情報が含まれる。当該様々な情報は、符号化プロセスの複雑さを低減すること、またはビットレートの低減および/または歪みの低減のような、コーディング効率を向上させることのために、符号化プロセスを支援することができる。
【0058】
一実施形態では、ゲームエンジン(325)は、画素レベルまたはブロックレベルで推奨された動きベクトル(複数)を含むメタデータを提供することができる。推奨された動きベクトル(複数)は、ビデオエンコーダ(330)による動き推定を助けるために使用され、これにより、動きベクトル検索動作を減少させ、動き推定精度を向上させることができる。一例では、ゲームエンジン(325)からの推奨された動きベクトルは、ビデオエンコーダ(330)による動き検索アルゴリズムにおける開始ポイントとして使用され得る。いくつかの例では、ゲームエンジン(325)は、ゲームシーンの動き情報およびユーザ入力に応答してビデオコンテンツを生成し、ゲームエンジン(325)によって推奨された動きベクトルは、非常に正確であり得る。これにより、ビデオエンコーダ(330)は、動きベクトル検索のための時間を減らし、正確な動き推定を達成することができる。
【0059】
別の実施形態では、ゲームエンジン(325)は、例えばシーン変化、照明変化、点滅、パンニング、ズーミング、フェーディング、メッセージオーバーレイなどのような、ビデオコンテンツにおける画像の特徴を識別することができるパラメータを含むメタデータを提供することができる。パラメータの観点から、ビデオエンコーダ(330)は、符号化プロセスを進めるように、適切な構成設定、パラメータ設定、コードツールなどを選択することができ、これにより、圧縮効率を向上させることができる。
【0060】
別の実施形態では、ゲームエンジン(325)は、境界ボックス情報を含むメタデータを提供することができ、ビデオエンコーダ(330)は、境界ボックス情報を使用して、画像フレームにおけるカバーされていないエリアとビデオシーケンスにおける貴重な画像フレームとの関係を決定することができ、その関係を使用することで、不要な計算を回避し、処理速度を向上させることができる。一例では、境界ボックスにおけるキャラクタは、画像の残り部分から異なる動きを有することがある。ビデオエンコーダ(330)は、境界ボックス情報を使用して、キャラクタおよび画像の残りの部分に別個の動きモデルを適用することができる。別の例では、ビデオエンコーダ(330)は、境界ボックス情報を使用して、例えば現在の画像内の境界ボックスによってカバーされていない特定のエリア(カバーされていないエリアとも呼ばれる)を前の画像から識別することができ(例えば、特定のエリアは、前の画像における境界ボックスによってカバーされている)、また、特定の領域を露出した前の画像(複数)を識別することができる(例えば、境界ボックスが特定の領域をカバーする前に)。このような情報によれば、ビデオエンコーダ(330)は、それらの領域に対して選択される可能性が低いコーディングモードにおける不必要な計算を回避することができる。例えば、そのような情報に基づいて、ビデオエンコーダ(330)は、他の予測ツールを試みずに、識別された前の画像(複数)に基づいて、現在の画像における特定の領域を予測するために、時間予測を直接に選択することができる。
【0061】
別の実施形態では、ゲームエンジン(325)は、動きブラー効果の変化、レンズブラー効果の変化、レンズ歪みの変化、レンズビネットの変化などのような、前の画像(複数)に対する画像領域におけるモデル変換(例えば、異なる撮像特性を有する同一のオブジェクト)を示すメタデータを提供することができる。ビデオエンコーダ(330)は、メタデータによって示されるモデル変換情報に基づいて、特定の領域で使用されるコーディングツール、コーディング方法、コーディングパラメータなどを決定することができる。例えば、メタデータが、前の画像フレームにおける参照領域に対する現在の画像フレームの領域におけるレンズブラーを示す場合、ビデオエンコーダ(330)は、前の画像フレームにおける参照領域およびぼかしブラーフィルタに基づいて、現在の画像フレームの領域を符号化することができる。
【0062】
別の実施形態では、ゲームエンジン(325)は、後続の画像(複数)において画像(現在の画像)または現在の画像におけるオブジェクトの存在を示すメタデータを提供する。メタデータに基づいて、ビデオエンコーダ(330)は、後続の画像(複数)のための参照として使用されるべき現在の画像の特定のコンテンツ/エリアをバッファリングするなどのバッファ構成を決定することができる。一例では、メタデータは、後続の画像におけるオブジェクトの動きを引き起こすオブジェクトの動きを示す。メタデータに基づいて、ビデオエンコーダ(330)は、オブジェクトを有する現在の画像におけるエリア(オブジェクトを有するエリア)のコンテンツをバッファリングすることができ、バッファリングされたコンテンツは、動き補償において後続の画像(複数)の参照として使用され得る。別の例では、メタデータは、現在の画像および後続の画像に使用されるマップを示す。メタデータに基づいて、ビデオエンコーダ(330)は、後続の画像をコーディングするための参照として、現在の画像におけるマップエリアをバッファリングすることができる。別の例では、メタデータは、現在の画像(または現在の画像の領域)が後続の画像のための背景であることを示す。メタデータに基づいて、ビデオエンコーダ(330)は、現在の画像(または現在の画像の領域)をバッファリングして長期参照とすることができ、それに応じて後続の画像をコードすることができる。例えば、スキップモードは、長期参照を参照できる後続の画像におけるブロックをコード化するために使用され得る。
【0063】
別の実施形態では、ゲームエンジン(325)は、画像のノイズレベル情報などのノイズ特徴を示すメタデータを提供する。メタデータに基づいて、画像の前処理および/または後処理を行うことができる。一例では、ゲームエンジン(325)は、ノイズの多い画像(ビデオコンテンツにおける)と、ノイズレベルを示すメタデータとをビデオエンコーダ(330)に提供する。ビデオエンコーダ(330)は、ノイズレベルを示すメタデータに基づいて、前処理段階でノイズの多い画像からノイズを除去し(例えば、ノイズを除去するフィルタを適用し)、低ノイズ画像を生成して、低ノイズ画像を符号化することができる。ノイズ除去の強度/閾値は、メタデータにおけるノイズレベル情報によって決定され得る。一例では、符号化された画像(低ノイズ画像)と、ノイズレベルを示すメタデータとは、クライアントデバイス(360)に送信される。そして、ビデオデコーダ(380)は、低ノイズ画像を再構築し、その後、メタデータにおけるノイズレベル情報に基づいて、後処理段階でノイズを低ノイズ画像に追加することができる。
【0064】
別の例では、ゲームエンジン(325)は、低ノイズ(またはノイズなし)の画像(ビデオコンテンツにおける)と、ノイズレベルを示すメタデータとをビデオエンコーダ(330)に提供する。そして、ビデオエンコーダ(330)は、低ノイズ画像を符号化する。一例では、符号化された画像(低ノイズ画像)と、ノイズレベルを示すメタデータとは、クライアントデバイス(360)に送信される。その後、ビデオデコーダ(380)は、低ノイズ画像を再構築し、それから、メタデータにおけるノイズレベル情報に基づいて、後処理段階でノイズを低ノイズ画像に追加することができる。いくつかの例では、ビデオエンコーダ(330)は、メタデータにおけるノイズレベル情報に基づいて後処理段階でノイズを追加することができるローカルデコーダを含む。
【0065】
低ノイズ画像は、高ノイズ画像と比較して、より高いコーディング効率でコード化され得る、ことに留意されたい。
【0066】
別の実施形態では、ゲームエンジン(325)は、画像における関心のある領域(複数)を示すメタデータを提供する。メタデータに基づいて、ビデオエンコーダ(330)は、よりよい品質制御またはレート制御を達成することができる。一例では、画像における他の領域よりも関心のある領域(複数)を符号化するために、より高いビットレートを割り当てることができる。別の例では、帯域幅が、より高いビットレートで画像全体をコーディングするのに十分ではない場合、関心のある領域のためのより高いビットレートを維持するために、関心のある領域外のエリアをコーディングするためのビットレートを最初に低減することができる。
【0067】
別の実施形態では、ゲームエンジン(325)は、ロゴ、バナー、レーダイメージ、地図、メッセージボックスなどのような画像内のグラフィックオーバーレイの領域(複数)を示すメタデータを提供する。メタデータに基づいて、ビデオエンコーダ(330)は、画像における他の領域用のためのコーディングツールとは異なり得る、グラフィックオーバーレイ(複数)の領域のための適切なコーディングツールを適用することができる。一例では、ロゴは、コーディング効率を向上させるために、スキップモードを使用してコード化され得る。グラフィックオーバーレイの領域のための適切なコーディングツールを使用することは、誤った動き情報、アーティファクト/歪みなどを回避することができる。
【0068】
いくつかの実施形態では、ゲームエンジン(325)は、オーバーレイメッセージのためのメッセージボックスを示すメタデータを提供する。オーバーレイメッセージは、オーバーレイメッセージのために特別に使用される別個のネットワーク抽象化層ユニット(NALU:network abstraction layer unit)として、圧縮されてビデオビットストリームに含まれ得る。いくつかの例では、NALUは、実際にはパケットである。ビデオビットストリームは、NALU(パケット)を介して編成されて伝送され得、NALUのうちの1つは、オーバーレイメッセージのための特別なNALUであり得る。オーバーレイメッセージのためのNALUには、オーバーレイメッセージの境界ボックスのエリア、オーバーレイメッセージの位置、フォント、サイズ、色、テキストのスタイル、オーバーレイテキストコンテンツなどが含まれ得る。一例では、オーバーレイテキストコンテンツは、Unicodeでコード化され得る。一例では、ゲームエンジン(325)は、ビデオコンテンツとは別にオーバーレイメッセージをビデオエンコーダ(330)に提供する。ビデオエンコーダ(330)は、ビデオコンテンツおよびオーバーレイメッセージを別々に符号化することができる。オーバーレイメッセージは、ビデオビットストリームにおける別個のNALUとして圧縮され得る。ビデオビットストリームは、サーバ(310)からクライアントデバイス(360)に伝送され得る。処理回路(370)は、ビデオコンテンツとオーバーレイメッセージをビデオビットストリームから別々に復号し、その後、クローズドキャプションを追加するように、オーバーレイメッセージをビデオコンテンツに追加することができる。
【0069】
図4は、本開示の一実施形態によるビデオエンコーダ(430)のブロック図を示す。ビデオエンコーダ(430)は、電子デバイス(410)に含まれる。一例では、電子デバイス(410)は、図3の例におけるサーバ(310)のようなサーバデバイスである。電子デバイス(410)は、また、送信機(411)(例えば、伝送回路等)を含む。ビデオエンコーダ(430)は、図3の例におけるビデオエンコーダ(330)の位置に使用され得る。
【0070】
ビデオエンコーダ(430)は、図3の例におけるゲームエンジン(325)などのビデオソースから生のビデオコンテンツを受信することができる。さらに、ビデオエンコーダ(430)は、カメラ情報、色情報、照明情報、動き情報、視聴情報、オーバーレイ情報(例えば、オーバーレイ情報、オーバーレイグラフィックスなど)、ユーザ制御などのようなメタデータを受信することができ、生のビデオコンテンツに関連付けられた情報を提供する。
【0071】
いくつかの例では、生のビデオコンテンツは、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)の形態であり得るデジタルビデオサンプルストリームの形である。生のビデオコンテンツは、順次に視聴する際に動きを伝える複数の個別の画像として提供され得る。画像自体は、画素の空間的アレイとして編成され得て、ここで、各画素は、使用中のサンプリング構造、色空間などに応じて1つまたは複数のサンプルを含み得る。
【0072】
一実施形態によれば、ビデオエンコーダ(430)は、生のビデオコンテンツ(ビデオシーケンスとも呼ばれる)の画像をコード化されたビデオビットストリーム(443)にコード化されて圧縮することができる。図4の例では、ビデオエンコーダ(430)は、コントローラ(431)を含み、コントローラ(431)が、符号化速度および効率を向上させるために、メタデータに基づいてビデオエンコーダ(430)の符号化構成を制御するように構成される。いくつかの実施形態では、コントローラ(431)は、メタデータに基づいて符号化構成を決定することができる。さらに、コントローラ(431)は、他の機能ユニットに機能的に結合され、符号化プロセスのための他の機能ユニットを制御する。この結合は、明確にするために示されていない。なお、コントローラ(431)は、画像スキップ、量子化器、レート歪み最適化技法のラムダ値、画像サイズ、画像グループ(GOP)レイアウト、最大動きベクトル探索範囲、動きモデルなどのような、様々な構成およびパラメータを設定することができる。
【0073】
一例では、コントローラ(431)は、メタデータに基づいて、アフィンモデル、透視モデル、回転モデル、スケーリングモデルなどのような画像のグローバル動きモデルを決定するように構成され、それに応じて、符号化パラメータを構成することができる。別の例では、コントローラ(431)は、メタデータに基づいて、画像内の境界ボックスにおける領域およびその領域のローカル動きモデルを決定するように構成される。いくつかの実施形態では、コントローラ(431)は、ビデオエンコーダ(430)の他の部分とは異なる別個のエンコーダ(図示せず)を含む。別個のエンコーダは、メタデータを圧縮されたメタデータに圧縮することができる。例えば、メタデータは、オーバーレイメッセージやオーバーレイグラフィックスなどのようなオーバーレイコンテンツを含む。オーバーレイコンテンツは、オーバーレイコンテンツビットストリーム(444)に圧縮され得る。一例では、オーバーレイコンテンツビットストリーム(444)は、例えばマルチプレクサ(412)によって、コード化されたビデオビットストリーム(443)と結合されて単一のビットストリームになることができる。別の例では、コントローラ431は、コード化されたビデオビットストリーム(443)に関連付けられたSEIメッセージにメタデータを含むことができる。コントローラ(431)は、特定のシステム設計のために最適化されたビデオエンコーダ(430)に関連する他の適切な機能を有するように構成され得る。
【0074】
いくつかの実施形態では、ビデオエンコーダ(430)は、符号化ループで動作するように構成される。過度に簡単化された説明として、一例では、符号化ループは、ソースコーダ(432)(例えば、コード化される入力画像と、参照画像とに基づいて、シンボルストリームなどのようなシンボルを作成することを担当する)と、ビデオエンコーダ(430)に埋め込まれた(ローカル)デコーダ(434)とを含むことができる。デコーダ(434)は、(リモート)デコーダがサンプルデータを作成すると同様の方法でシンボルを再構築してサンプルデータを作成する(開示された主題で考慮されているビデオ圧縮技術では、シンボルとコード化されたビデオビットストリームとの間の任意の圧縮が無損失であるからである)。再構築されたサンプルストリーム(サンプルデータ)は、参照画像メモリ(435)に入力される。シンボルストリームの復号により、デコーダの位置(ローカルまたはリモート)に関係なくビット正確な結果が得られるため、参照画像メモリ(435)のコンテンツは、ローカルデコーダとリモートデコーダの間でもビットで正確に対応する。言い換えれば、エンコーダの予測部分が「見た」参照画像サンプルは、デコーダが復号期間に予測を使用する際に「見た」サンプル値と全く同じである。
【0075】
「ローカル」デコーダ(434)の動作は、既に図5に関連して以上で詳細に説明された「リモート」デコーダの動作と同じであり得る。動作中に、いくつかの実施形態では、ソースコーダ(432)は、動き補償予測符号化を実行することができ、前記動き補償予測符号化は、ビデオシーケンスから「参照画像」として指定された1つ以上の以前にコード化された画像を参照して、入力画像を予測的に符号化する。このようにして、コーディングエンジン(433)は、入力画像の画素ブロックと、入力画像に対する予測参照として選択されることができる参照画像の画素ブロックとの間の差分を符号化する。いくつかの例では、ソースコーダ(432)は、コントローラ(431)から制御信号を受信することができる。制御信号は、ビデオシーケンスのメタデータに基づいて生成され、動き補償された予測符号化を高速で実行するようにソースコーダ(432)を制御することができる。
【0076】
ローカルビデオデコーダ(434)は、ソースコーダ(432)によって生成されたシンボルに基づいて、参照画像として指定されることができる画像のコード化されたビデオデータを復号することができる。コーディングエンジン(433)の動作は、有利には損失性プロセスであってもよい。コード化されたビデオデータがビデオデコーダ(図5を参照して説明されたビデオデコーダなどのような)で復号された場合、再構築されたビデオシーケンスは、通常、いくつかの誤差を伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(434)は、参照画像に対してビデオデコーダによって実行されることができる復号プロセスをコピーして、再構築された参照画像を参照画像キャッシュ(435)に記憶することができる。このようにして、ビデオエンコーダ(430)は、遠端ビデオデコーダによって得られる(伝送誤差が存在しない)再構築された参照画像と共通のコンテンツを有する再構築された参照画像のコピーを、ローカルに記憶することができる。
【0077】
予測器(436)は、コーディングエンジン(433)に対して予測検索を実行することができる。すなわち、コード化される新しい画像について、予測器(436)は、サンプルデータ(候補参照画素ブロックとして)のために参照画像メモリ(435)を検索することができる。いくつかの例では、予測器(436)は、コントローラ(431)から制御信号を受信する。制御信号は、メタデータ、カメラ情報、色情報、照明情報、動き情報、ビュー情報、ユーザ制御、ブロック形状などに基づいて生成され得る。制御信号は、新しい画像のための適切な予測参照の予測検索用の時間を短縮するように予測器(436)を制御することができる。一例では、制御信号は、参照(例えば、参照画像、参照ブロックなど)を示すことができる。別の例では、制御信号は、検索のための開始ポイントを示すことができる。予測器(436)は、適切な予測参照を見つけるために、サンプルブロックに基づいて、画素ブロックごとに動作することができる。いくつかの場合では、予測器(436)によって得られた検索結果によって決定されるように、入力画像は、参照画像メモリ(435)に記憶された複数の参照画像から引き出された予測参照を有することができる。
【0078】
コントローラ(431)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(432)の符号化動作を管理することもできる。
【0079】
上述のすべての機能ユニットの出力は、エントロピーコーダ(437)でエントロピー符号化されることができる。エントロピーコーダ(437)は、例えばハフマン符号化、可変長符号化、算術符号化などのような技術に従って、シンボルを無損失で圧縮することにより、様々な機能ユニットによって生成されたシンボルをコード化されたビデオシーケンスに変換する。
【0080】
送信機(411)は、ネットワークを介した送信に備えるために、エントロピーコーダ(437)によって作成された、コード化されたビデオシーケンスをバッファリングすることができる。送信機(411)は、ビデオコーダ(4303)からのコード化されたビデオデータを、送信される他のデータ、例えば、コード化されたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージすることができる。いくつかの例では、コード化されたビデオビットストリーム(443)およびオーバーレイコンテンツビットストリーム(444)は、単一のビットストリームに多重化される。 別の例では、メタデータは、コード化されたビデオビットストリーム(443)に関連付けられたSEIメッセージに含まれてもよい。
【0081】
コントローラ(431)は、ビデオエンコーダ(430)の様々な管理動作を実行することができる。符号化する期間、コントローラ(431)は、各コード化された画像に、特定のコード化された画像タイプを割り当てることができ、これは、それぞれの画像に適用できる符号化技術に影響を与える可能性がある。例えば、画像が、I画像、P画像、B画像などの画像タイプの1つとして割り当てられることはが多い。
【0082】
フレーム内画像(I画像)は、シーケンスにおける任意の他の画像を予測のソースとして使用せずに、符号化および復号されることができるものであってもよい。いくつかのビデオコーデックは、独立したデコーダリフレッシュ(Independent Decoder Refresh、「IDR」)画像などの異なるタイプのフレーム内画像を許容する。
【0083】
予測画像(P画像)は、多くとも1つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するフレーム内予測またはフレーム間予測を使用して符号化および復号され得るものであってもよい。
【0084】
双方向予測画像(B画像)は、多くとも2つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するフレーム内予測またはフレーム間予測を使用して符号化および復号され得るものであってもよい。同様に、複数の予測画像は、単一のブロックの再構築に、2つ以上の参照画像および関連付けられたメタデータを使用することができる。
【0085】
ソース画像は、一般的に、複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8、または16×16個のサンプルのブロック)に空間的に細分され、ブロックごとにコード化されることができる。これらのブロックは、ブロックのそれぞれの画像に適用される符号化割り当てによって決定されるように、他の(既にコード化された)ブロックを参照して予測的にコード化されることができる。例えば、I画像のブロックは、非予測的にコード化されてもよく、またはそれらが同じ画像の既にコード化されたブロックを参照して予測的にコード化されてもよい(空間予測またはフレーム内予測)。P画像の画素ブロックは、1つ前にコード化された参照画像を参照して、空間的予測を介してまたは時間的予測を介して予測的にコード化されてもよい。B画像のブロックは、1つまたは2つ前にコード化された参照画像を参照して、空間的予測を介してまたは時間的予測を介して予測的にコード化されてもよい。
【0086】
ビデオエンコーダ(430)は、所定のビデオコーディング技術または規格に従って、符号化動作を実行することができる。その動作において、ビデオエンコーダ(430)は、入力ビデオシーケンスにおける時間的と空間的冗長性を利用する予測符号化動作を含む、様々な圧縮動作を実行することができる。したがって、コード化されたビデオデータは、使用されるビデオコーディング技術または規格によって指定された構文に従うことができる。
【0087】
一実施形態では、送信機(411)は、コード化されたビデオとともに、付加的なデータを送信することができる。ソースコーダ(432)は、そのようなデータを、符号化されたビデオシーケンスの一部として含むことができる。付加的なデータは、時間的/空間的/SNR拡張層、冗長画像やスライスなどのような他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含むことができる。
【0088】
ビデオ(またはビデオシーケンス、生のビデオコンテンツ)は、時系列で複数のソース画像(ビデオ画像)として捕捉されることができる。フレーム内画像予測(フレーム内予測と略称されることが多い)は、与えられた画像における空間的相関を利用し、フレーム間画像予測は、画像間の(時間的または他の)相関を利用する。一例では、現在の画像と呼ばれる、符号化/復号化中の特定の画像がブロックに分割される。現在の画像のブロックが、ビデオにおける以前にコード化され、まだバッファリングされている参照画像における参照ブロックに類似している場合、現在の画像のブロックは、動きベクトルと呼ばれるベクトルによってコード化されることができる。動きベクトルは、参照画像における参照ブロックを指し、複数の参照画像が使用されている場合、参照画像を識別する3番目の次元を有することができる。
【0089】
いくつかの実施形態では、双方向予測技術は、フレーム間画像予測に使用されることができる。双方向予測技術によれば、例えば、復号化の順で両方とも、ビデオにおける現在の画像の前にある(ただし、表示の順でそれぞれ、過去と将来にあるかもしれない)第1参照画像および第2参照画像などのような2つの参照画像が使用される。現在の画像におけるブロックは、第1参照画像における第1参照ブロックを指す第1動きベクトルと、第2参照画像における第2参照ブロックを指す第2動きベクトルによってコード化されることができる。ブロックは、第1参照ブロックおよび第2参照ブロックの組み合わせによって予測されることができる。
【0090】
さらに、符号化効率を向上させるために、マージモード技術は、フレーム間画像予測で使用されることができる。
【0091】
本開示のいくつかの実施形態によれば、フレーム間画像予測やフレーム内画像予測などのような予測は、ブロックの単位で実行される。例えば、高効率ビデオコーディング(HEVC:high efficiency video coding)規格に従って、ビデオ画像のシーケンスにおける画像は、圧縮のために符号化ツリーユニット(CTU:coding tree unit)に分割され、画像におけるCTUは同じサイズ、例えば64×64画素、32×32画素、または16×16画素を有する。一般的に、CTUは、1つの輝度CTBと2つの色度CTBである3つの符号化ツリーブロック(CTB)を含む。各CTUは、再帰的に四分木で1つ以上の符号化ユニット(CU)に分割されてもよい。例えば、64×64画素のCTUは、1つの64×64画素のCU、4つの32×32画素のCU、または16つの16×16画素のCUに分割されることができる。一例では、各CUは、フレーム間予測タイプまたはフレーム内予測タイプなどのようなCUに対する予測タイプを決定するために分析される。CUは、時間的および/または空間的予測可能性に応じて、1つ以上の予測ユニット(PU)に分割される。通常、各PUは、輝度予測ブロック(PB)と2つの色度PBを含む。一実施形態では、符号化(エンコーディング/デコーディング)における予測動作は、予測ブロックの単位で実行される。輝度予測ブロックを予測ブロックの例として使用すると、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などのような画素値(例えば、輝度値)の行列を含む。
【0092】
図5は、本開示のいくつかの実施形態によるデコーダ(580)の図を示す。ビデオデコーダ(580)は、コード化されたビデオシーケンスの一部であるコード化された画像を受信し、コード化された画像を復号して再構築された画像を生成するように構成される。一例では、ビデオデコーダ(580)は、図3のビデオデコーダ(380)の代わりに使用される。
【0093】
図5の例では、ビデオデコーダ(580)は、図5に示されるように一緒に結合された、エントロピーデコーダ(582)と、フレーム間デコーダ(585)と、残差デコーダ(583)と、再構築モジュール(586)と、フレーム内デコーダ(584)とを含む。
【0094】
エントロピーデコーダ(582)は、コード化された画像から、コード化された画像を構成する構文要素を表す特定のシンボルを再構築するように構成されることができる。このようなシンボルは、例えば、ブロックをコード化するためのモード(例えば、フレーム内モード、フレーム間モード、双方向予測モード、後者の2つのマージサブモードまたは別のサブモード)と、フレーム内デコーダ(584)またはフレーム間デコーダ(585)による予測に使用される特定のサンプルまたはメタデータをそれぞれ識別できる予測情報(例えば、フレーム内予測情報またはフレーム間予測情報など)と、例えば量子化された変換係数の形式の残差情報などとを含む。一例では、予測モードがフレーム間予測モードまたは双方向予測モードである場合、フレーム間予測情報は、フレーム間デコーダ(585)に提供される。そして、予測タイプがフレーム内予測タイプである場合、フレーム内予測情報は、フレーム内デコーダ(584)に提供される。残差情報は、逆量子化を受けて、残差デコーダ(583)に提供されることができる。メタデータは、コントローラ(581)に提供され得る。
【0095】
フレーム間デコーダ(585)は、フレーム間予測情報を受信し、フレーム間予測情報に基づいてフレーム間予測結果を生成するように構成される。
【0096】
フレーム内デコーダ(584)は、フレーム内予測情報を受信し、フレーム内予測情報に基づいてフレーム内予測結果を生成するように構成される。
【0097】
残差デコーダ(583)は、逆量子化を実行して、逆量子化された変換係数を抽出し、その逆量子化された変換係数を処理して、残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(583)はまた、特定の制御情報(量子化器パラメータ(QP)を含むように)も必要とする場合があり、その情報は、エントロピーデコーダ(582)によって提供される場合がある(これが低ボリューム制御情報のみであるため、データ経路は図示されていない)。
【0098】
再構築モジュール(586)は、空間領域において、残差デコーダ(583)による出力としての残差と、(場合によっては、フレーム間予測モジュールまたはフレーム内予測モジュールによる出力としての)予測結果とを組み合わせて、再構築されたブロックを形成するように構成され、再構築されたブロックは、再構築された画像の一部とすることができ、その後、再構築された画像は、再構築されたビデオの一部とすることができる。それは、視覚的品質を改善するために、デブロッキング動作などのような他の適切な動作を実行することができる、ということに留意されたい。再構築された画像は、例えばバッファ(587)内にバッファリングされ、バッファ(587)は、フレーム間デコーダ(585)に参照画像を提供することができる。
【0099】
いくつかの実施形態では、コントローラ(581)は、メタデータを受信し、メタデータに基づいてデコーダ(580)の復号パラメータを構成することができる。いくつかの例では、コントローラ(581)は、メタデータに基づいて予測を制御するためにフレーム内デコーダ(584)および/またはフレーム間デコーダ(585)に制御信号を提供することができる。別の例では、コントローラ(581)は、メタデータからオーバーレイコンテンツを復号し、オーバーレイコンテンツを再構築モジュール(586)に提供することができる。したがって、再構築モジュール(586)は、オーバーレイコンテンツを用いて画像を再構築することができる。
【0100】
図6は、本開示の一実施形態によるプロセス(600)を概説するフローチャートを示す。プロセス(600)は、クラウドゲームシステム(100)、クラウドゲームシステム(300)などのクラウドゲームシステムにおけるビデオシーケンスを符号化するために使用され得る。様々な実施形態では、プロセス(600)は、サーバ(110)における処理回路(120)、サーバ(310)における処理回路(320)、ビデオエンコーダ(130)、ビデオエンコーダ(330)、ビデオエンコーダ(430)などの処理回路によって実行される。いくつかの実施形態では、プロセス(600)は、ソフトウェア命令で実現され、したがって、処理回路がソフトウェア命令を実行する場合、処理回路は、プロセス(600)を実行する。このプロセスは、(S601)から始まり、(S602)に進む。
【0101】
(S610)で、ビデオシーケンスと、当該ビデオシーケンスに関連付けられたメタデータとを受信する。ビデオシーケンスは、ゲーム制御情報に応答して生成された一連の画像フレームを含む。メタデータは、ゲーム制御情報に基づいて決定され、ゲーム制御情報を示す。一例では、ゲームエンジン(325)などのゲームエンジンは、ゲームシーン制御情報、ユーザ情報などのゲーム制御情報に基づいて、ビデオコンテンツ、オーディオコンテンツなどのゲームコンテンツを生成する。ビデオコンテンツは、一連の画像フレームを含むビデオシーケンスとして生成され得る。さらに、ビデオシーケンスに関連付けられたメタデータは、ゲーム制御情報に基づいて識別され得る。ビデオシーケンスおよびメタデータは、ビデオエンコーダ(330)のようなビデオエンコーダに提供され得る。ビデオエンコーダ(330)は、ビデオシーケンスと、当該ビデオシーケンスに関連付けられたメタデータとを受信する。
【0102】
(S620)で、メタデータに基づいて符号化構成を決定する。一実施形態では、メタデータは、画素レベルまたはブロックレベルでの動きベクトルを含む。動きベクトルに基づいて、ビデオシーケンスの画像フレーム内のブロックを符号化するための動き探索の開始ポイントは決定され得る。
【0103】
別の実施形態では、メタデータは、ビデオシーケンスの画像フレームのシーン変化特徴、照明変化特徴、点滅特徴、パンニング特徴、ズーミング特徴、フェーディング特徴、およびオーバーレイ特徴のうちの少なくとも1つの画像特徴を示す。画像特徴に基づいて、画像フレームを符号化するための符号化構成(例えば、コーディングツール、パラメータセット、構成設定など)は決定され得る。
【0104】
別の実施形態では、メタデータは、画像フレームにおける境界ボックスを示す。境界ボックスに基づいて、現在の画像フレームの前の画像フレームに対する前記現在の画像フレームにおける境界ボックスによってカバーされていないエリアのための前の画像フレームにおける参照エリアを決定することができる。前の画像フレームにおける参照エリアに基づいて、現在の画像フレームにおける境界ボックスによってカバーされていないエリアを符号化することができる。
【0105】
別の実施形態では、メタデータは、第1画像フレームから第2画像フレームへのモデル変換(例えば、動きブラー効果の変化、レンズブラー効果の変化、レンズ歪みの変化、レンズビネットの変化など)を示す。符号化構成(例えば、フィルタツール、パラメータセット、構成設定など)は、モデル変換に基づいて決定され得る。符号化構成に基づいて、第2画像フレームにおけるブロックは、第1画像フレームにおける参照ブロックに基づいて符号化され得る。
【0106】
別の実施形態では、メタデータは、後続の画像フレームにおける現在の画像フレームのオブジェクトの存在を示す。そして、バッファ構成(例えば、後続の画像フレームを符号化/復号するためのオブジェクトを含む再構築されたエリアをバッファリングする)は、メタデータに基づいて決定され得る。
【0107】
別の実施形態では、メタデータは、画像フレームのノイズレベルを示す。そして、画像フレームのための前処理構成または後処理構成は、ノイズレベルに基づいて決定され得る。一例では、画像フレームは、前処理において前処理構成に基づいてノイズ除去され得る。別の例では、ノイズは、後処理において後処理構成に基づいて、再構築されたフレームに追加され得る。
【0108】
別の実施形態では、メタデータは、画像フレームにおける関心のある領域を示す。いくつかの例では、より高い品質(例えば、より高い解像度、より高いビットレート)を有する第1符号化構成は、関心のある領域を符号化するために決定され得、また、第1符号化構成よりも低い品質を有する第2符号化構成は、関心のある領域外のエリアを符号化するために決定され得る。
【0109】
別の実施形態では、メタデータは、画像フレームの領域におけるグラフィックオーバーレイを示す。そして、グラフィックオーバーレイに基づいて領域を符号化するための符号化構成は決定され得る。一例では、スキップモードは、コーディング効率を向上させるために、ロゴなどの特定のグラフィックオーバーレイをコード化するために使用され得る。
【0110】
(S630)で、符号化構成に基づいて、ビデオシーケンスをコード化されたビデオビットストリームに符号化する。コード化されたビデオビットストリームは、ネットワークを介して、例えばクライアントデバイス(360)などのような宛先デバイスに送信され得る。いくつかの実施形態では、メタデータは、また、コード化されたビデオビットストリームの復号を宛先デバイスで支援するために、宛先デバイスに送信される。一実施形態では、メタデータは、コード化されたビデオビットストリームとともにSEIメッセージで送信される。別の実施形態では、メタデータは、オーバーレイコンテンツを含む。オーバーレイコンテンツは、オーバーレイコンテンツビットストリームに符号化され得る。オーバーレイコンテンツビットストリームおよびコード化されたビデオビットストリームは、単一の出力ビットストリームに多重化され得る。単一の出力ビットストリームは、ネットワークを介して、宛先デバイスに送信され得る。
【0111】
別の実施形態では、メタデータは、オーバーレイメッセージのための画像フレームにおけるメッセージボックスを示す。オーバーレイメッセージおよびオーバーレイメッセージの情報は、コード化されたビデオビットストリームの特定のNALUに圧縮されて含まれ得る。コード化されたビデオビットストリームは、コード化されたビデオデータを搬送するための複数のNALU(例えば、パケット)を含み、オーバーレイメッセージを搬送するための特定のNALUを含むことができる。コード化されたビデオビットストリームは、ネットワークを介して、宛先デバイスに送信され得る。その後、このプロセスは、(S699)に進んで終了する。
【0112】
図7は、本開示の一実施形態によるプロセス(700)を概説するフローチャートを示す。プロセス(700)は、クラウドゲームシステム(100)、クラウドゲームシステム(300)などのクラウドゲームシステムにおけるビデオシーケンスを復号するために使用され得る。様々な実施形態では、プロセス(700)は、クライアントデバイス(160)における処理回路(170)、クライアントデバイス(360)における処理回路(370)、ビデオデコーダ(180)、ビデオデコーダ(380)、ビデオデコーダ(480)などの処理回路によって実行される。いくつかの実施形態では、プロセス(700)は、ソフトウェア命令で実現され、したがって、処理回路がソフトウェア命令を実行する場合、処理回路は、プロセス(700)を実行する。このプロセスは、(S701)から始まり、(S710)に進む。
【0113】
(S710)で、コード化されたビデオビットストリームと、当該コード化されたビデオビットストリームに関連付けられたメタデータとを受信する。メタデータは、サーバ(310)などのようなゲームサーバのビデオコンテンツを生成するためにも使用されるゲーム制御情報に基づいて決定される。
【0114】
(S720)で、メタデータに基づいて、復号構成および再構築構成を決定する。
【0115】
一実施形態では、メタデータは、画像フレームのノイズレベルを示す。そして、画像フレームのための後処理構成(再構築構成における構成)は、ノイズレベルに基づいて決定され得る。一例では、後処理構成により、ノイズレベルのノイズは、再構築された画像フレームに追加され得る。
【0116】
(S730)で、復号構成に基づいて、コード化されたビデオビットストリームを復号し、再構築構成に基づいて、ビデオシーケンスを再構築する。その後、このプロセスは、(S799)に進んで終了する。
【0117】
いくつかの実施形態では、コード化されたビデオビットストリームは、ビデオコンテンツを搬送するためのNALUと、オーバーレイコンテンツを搬送するための特定のNALUとを含む。特定のNALUは、オーバーレイコンテンツを生成するために識別され、個別に(例えば、異なるデコーダによって)復号され得る。そして、ビデオシーケンスは、オーバーレイコンテンツで再構築され得る。
【0118】
上記の技術は、コンピュータ読み取り可能な命令を使用するコンピュータソフトウェアとして実現され、また、物理的に1つ以上のコンピュータ読み取り可能な媒体に記憶されることができる。例えば、図8は、開示された主題の特定の実施形態を実現するのに適したコンピュータシステム(800)を示す。
【0119】
コンピュータソフトウェアは、任意の適切なマシンコードまたはコンピュータ言語を使用して符号化されることができ、アセンブリ、コンパイル、リンク、または同様のメカニズムを受けて命令を含むコードを作成することができ、命令は、1つ以上のコンピュータ中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)などによって、直接的に実行されてもよく、またはコード解釈、マイクロコード実行などによって実行されてもよい。
【0120】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、オブジェクトネットワークデバイス(internet of things devices)などを含む、様々なタイプのコンピュータまたはそのコンポーネントで実行されてもよい。
【0121】
図8に示されるコンピュータシステム(800)のコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実現するコンピュータソフトウェアの使用範囲または機能に関するいかなる制限も示唆することが意図されていない。コンポーネントの構成は、コンピュータシステム(800)の例示的な実施形態に示されているコンポーネントのいずれかまたは組み合わせに関連する任意の依存性または要件を有すると解釈されるべきではない。
【0122】
コンピュータシステム(800)は、いくつかのヒューマンインターフェース入力デバイスを含むことができる。このようなヒューマンインターフェース入力デバイスは、触覚入力(例えば、キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(例えば、音声、拍手など)、視覚入力(例えば、ジェスチャーなど)、嗅覚入力(図示せず)によって、1人以上のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスはまた、例えばオーディオ(例えば、音声、音楽、環境音など)、画像(例えば、スキャンされた画像、静止画像カメラから得られた写真画像など)、ビデオ(例えば、2次元ビデオ、立体映像を含む3次元ビデオなど)などの、人間による意識的な入力に必ずしも直接関連されているとは限らない、特定のメディアを捕捉するために使用されることもできる。
【0123】
ヒューマンインターフェース入力デバイスは、キーボード(801)、マウス(802)、トラックパッド(803)、タッチスクリーン(810)、データグローブ(図示せず)、ジョイスティック(805)、マイクロホン(806)、スキャナ(807)、カメラ(808)(それぞれの1つだけが図示された)のうちの1つまたは複数を含むことができる。
【0124】
コンピューターシステム(800)はまた、いくつかのヒューマンインターフェース出力デバイスを含むことができる。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および嗅覚/味覚によって、1人以上のユーザの感覚を刺激することができる。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(810)、データグローブ(図示せず)またはジョイスティック(805)による触覚フィードバックであるが、入力デバイスとして作用しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(例えば、スピーカ(809)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(810)であり、各々は、タッチスクリーン入力機能を備えてもよく、あるいは備えていなくてもよいし、各々は、触覚フィードバック機能を備えてもよく、あるいは備えていなくてもよいし、これらのいくつかは、例えば、ステレオグラフィック出力、仮想現実メガネ(図示せず)、ホログラフィックディスプレイとスモークタンク(図示せず)、およびプリンタ(図示せず)などによって、2次元の視覚出力または3次元以上の視覚出力を出力することができる。
【0125】
コンピューターシステム(800)は、CD/DVDを有するCD/DVD ROM/RW(820)を含む光学媒体または類似の媒体(821)、サムドライブ(822)、リムーバブルハードドライブまたはソリッドステートドライブ(823)、テープおよびフロッピーディスク(図示せず)などのようなレガシー磁気媒体、セキュリティドングル(図示せず)などのような特殊なROM/ASIC/PLDベースのデバイスなどのような、人間がアクセス可能な記憶デバイスおよびそれらに関連する媒体を含むことができる。
【0126】
当業者はまた、ここで開示されている主題に関連して使用される「コンピュータ読み取り可能な媒体」という用語は、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解すべきである。
【0127】
コンピューターシステム(800)はまた、一つ以上の通信ネットワークへのインターフェースを含むことができる。ネットワークは、例えば、無線、有線、光学的であってもよい。ネットワークはさらに、ローカルネットワーク、広域ネットワーク、大都市圏ネットワーク、車両用ネットワークおよび産業用ネットワーク、リアルタイムネットワーク、遅延耐性ネットワークなどであってもよい。ネットワークの例は、イーサネット(登録商標)、無線LAN、セルラーネットワーク(GSM(登録商標)、3G、4G、5G、LTEなど)などのLAN、テレビケーブルまたは無線広域デジタルネットワーク(有線テレビ、衛星テレビ、地上放送テレビを含む)、車両用および産業用ネットワーク(CANBusを含む)などを含む。いくつかのネットワークは、一般に、いくつかの汎用データポートまたは周辺バス(849)(例えば、コンピュータシステム(800)のUSBポート)に接続された外部ネットワークインターフェースアダプタが必要であり、他のシステムは、通常、以下に説明するようにシステムバスに接続することによって、コンピュータシステムシステム(800)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェース、またはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(800)は、他のエンティティと通信することができる。このような通信は、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、Canbusから特定のCanbusデバイスへ)、あるいは、双方向の、例えばローカルまたは広域デジタルネットワークを使用して他のコンピュータシステムへの通信であってもよい。上述のように、特定のプロトコルおよびプロトコルスタックは、それらのネットワークおよびネットワークインターフェースのそれぞれで使用されることができる。
【0128】
上記のヒューマンインターフェースデバイス、ヒューマンアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピューターシステム(800)のコア(840)に接続されることができる。
【0129】
コア(840)は、1つ以上の中央処理ユニット(CPU)(841)、グラフィック処理ユニット(GPU)(842)、フィールドプログラマブルゲートアレイ(FPGA)(843)の形式の専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ(844)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)(845)、ランダムアクセスメモリ(846)、例えば内部の非ユーザアクセスハードディスクドライブ、SSDなどの内部大容量ストレージ(847)などとともに、システムバス(848)を介して接続されてもよい。いくつかのコンピュータシステムでは、付加的なCPU、GPUなどによって拡張を可能にするために、システムバス(848)に1つ以上の物理的プラグの形でアクセスすることができる。周辺デバイスは、コアのシステムバス(1348)に直接的に接続されてもよく、または周辺バス(849)を介して接続されてもよい。周辺バスのアーキテクチャは、外部コントローラインターフェース(PCI)、汎用シリアルバス(USB)などを含む。
【0130】
CPU(841)、GPU(842)、FPGA(843)、およびアクセラレータ(844)は、いくつかの命令を実行することができ、これらの命令を組み合わせて上述のコンピュータコードを構成することができる。そのコンピュータコードは、ROM(845)またはRAM(846)に記憶されることができる。また、一時的なデータは、RAM(846)に記憶されることができる一方、永久的なデータは、例えば内部大容量ストレージ(847)に記憶されることができる。1つ以上のCPU(841)、GPU(842)、大容量ストレージ(847)、ROM(845)、RAM(846)などと密接に関連することができる、キャッシュメモリを使用することにより、任意のメモリデバイスに対する高速記憶および検索が可能になる。
【0131】
コンピュータ読み取り可能な媒体は、様々なコンピュータ実装された動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよく、またはコンピュータソフトウェア分野の技術者によって知られ、利用可能な媒体およびコードであってもよい。
【0132】
限定ではなく例として、アーキテクチャ(800)、特にコア(840)を有するコンピュータシステムは、1つ以上の有形な、コンピュータ読み取り可能な媒体に具体化されたソフトウェアを実行する、(CPU、GPU、FPGA、アクセラレータなどを含む)プロセッサとして機能を提供することができる。このようなコンピュータ読み取り可能な媒体は、上記のユーザがアクセス可能な大容量ストレージに関連する媒体であり、コア内部大容量ストレージ(847)またはROM(845)などの、不揮発性コア(840)を有する特定のストレージであってもよい。本開示の様々な実施形態を実現するソフトウェアは、そのようなデバイスに記憶され、コア(840)によって実行されてもよい。コンピュータ読み取り可能な媒体は、特定のニーズに応じて、1つ以上のメモリデバイスまたはチップを含むことができる。このソフトウェアは、コア(840)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(846)に記憶されているデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってこのようなデータ構造を変更することとを含む、本明細書に説明された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えてまたは代替として、コンピュータシステムは、ロジックハードワイヤードされているか、または別の方法で回路(例えば、アクセラレータ(844))に組み込まれているため、機能を提供することができ、この回路は、ソフトウェアの代わりに動作し、またはソフトウェアと一緒に動作して、本明細書に説明された特定のプロセスの特定のプロセスまたは特定の部分を実行することができる。適切な場合には、ソフトウェアへの参照はロジックを含むことができ、逆もまた然りである。適切な場合には、コンピュータ読み取り可能な媒体への参照は、実行されるソフトウェアを記憶する回路(集積回路(IC)など)を含み、実行されるロジックを具体化する回路、またはその両方を兼ね備えることができる。本開示は、ハードウェアおよびソフトウェアの任意の適切な組み合わせを包含する。
【0133】
本開示は、いくつかの例示的な実施形態について説明したが、本開示の範囲内にある変更、配置、および様々な均等置換が存在している。したがって、当業者は、本明細書では明確に示されていないかまたは説明されていないが、本開示の原則を具現しているので、本開示の精神および範囲内にある、様々なシステムおよび方法を設計することができる、ということを理解されたい。
【符号の説明】
【0134】
100 クラウドゲームシステム
101 サーバシステム
102 クライアントシステム
110 サーバ
111 インターフェース回路
115 メモリ
120 処理回路
125 ゲームエンジン
130 ビデオエンコーダ
150 ネットワーク
160 クライアントデバイス
161 インターフェース回路
165 ディスプレイ
169 ユーザ入力デバイス
170 処理回路
175 ゲームクライアント
180 ビデオデコーダ
図1
図2
図3
図4
図5
図6
図7
図8